mirror of
https://github.com/danbulant/lucide
synced 2026-07-08 20:51:09 +00:00
Add book
This commit is contained in:
parent
719f62a655
commit
49a2c4915b
17 changed files with 328 additions and 0 deletions
2
.github/FUNDING.yml
vendored
Normal file
2
.github/FUNDING.yml
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
github: RustForWeb
|
||||||
|
open_collective: rustforweb
|
||||||
25
.github/labels.yml
vendored
Normal file
25
.github/labels.yml
vendored
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
- name: 'type: bug'
|
||||||
|
description: 'Bug'
|
||||||
|
color: '3e63dd'
|
||||||
|
- name: 'type: documentation'
|
||||||
|
description: 'Documentation'
|
||||||
|
color: '3e63dd'
|
||||||
|
- name: 'type: feature'
|
||||||
|
description: 'Feature'
|
||||||
|
color: '3e63dd'
|
||||||
|
- name: 'type: maintenance'
|
||||||
|
description: 'Maintenance'
|
||||||
|
color: '3e63dd'
|
||||||
|
- name: 'type: question'
|
||||||
|
description: 'Question'
|
||||||
|
color: '3e63dd'
|
||||||
|
|
||||||
|
- name: 'framework: dioxus'
|
||||||
|
description: 'Dioxus'
|
||||||
|
color: 'd6409f'
|
||||||
|
- name: 'framework: leptos'
|
||||||
|
description: 'Leptos'
|
||||||
|
color: 'd6409f'
|
||||||
|
- name: 'framework: yew'
|
||||||
|
color: 'd6409f'
|
||||||
|
description: 'Yew'
|
||||||
3
.github/renovate.json
vendored
Normal file
3
.github/renovate.json
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"extends": ["config:recommended", "schedule:weekly", ":prConcurrentLimitNone", ":prHourlyLimitNone"]
|
||||||
|
}
|
||||||
17
.github/workflows/labels.yml
vendored
Normal file
17
.github/workflows/labels.yml
vendored
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
name: Labels
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
sync-labels:
|
||||||
|
name: Sync Labels
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
sparse-checkout: .github/labels.yml
|
||||||
|
|
||||||
|
- uses: EndBug/label-sync@v2
|
||||||
|
with:
|
||||||
|
config-file: .github/labels.yml
|
||||||
22
book/book.toml
Normal file
22
book/book.toml
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
[book]
|
||||||
|
authors = ["Daniëlle Huisman"]
|
||||||
|
language = "en"
|
||||||
|
multilingual = false
|
||||||
|
src = "src"
|
||||||
|
title = "Rust Lucide"
|
||||||
|
|
||||||
|
[preprocessor.tabs]
|
||||||
|
|
||||||
|
[preprocessor.trunk]
|
||||||
|
|
||||||
|
[output.html]
|
||||||
|
additional-css = ["theme/tabs.css", "theme/theme.css", "theme/trunk.css"]
|
||||||
|
additional-js = ["theme/tabs.js", "theme/theme.js", "theme/trunk.js"]
|
||||||
|
edit-url-template = "https://github.com/RustForWeb/lucide/edit/main/book/{path}"
|
||||||
|
git-repository-url = "https://github.com/RustForWeb/lucide"
|
||||||
|
|
||||||
|
[output.trunk]
|
||||||
|
serve = true
|
||||||
|
|
||||||
|
[rust]
|
||||||
|
edition = "2021"
|
||||||
8
book/src/SUMMARY.md
Normal file
8
book/src/SUMMARY.md
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
# Summary
|
||||||
|
|
||||||
|
- [Introduction](./introduction.md)
|
||||||
|
- [Frameworks](./frameworks/README.md)
|
||||||
|
- [Dioxus](./frameworks/dioxus.md)
|
||||||
|
- [Leptos](./frameworks/leptos.md)
|
||||||
|
- [Yew](./frameworks/yew.md)
|
||||||
|
- [Contributing]()
|
||||||
5
book/src/frameworks/README.md
Normal file
5
book/src/frameworks/README.md
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
# Frameworks
|
||||||
|
|
||||||
|
- [Dioxus](./dioxus.md)
|
||||||
|
- [Leptos](./leptos.md)
|
||||||
|
- [Yew](./yew.md)
|
||||||
3
book/src/frameworks/dioxus.md
Normal file
3
book/src/frameworks/dioxus.md
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
# Lucide Dioxus
|
||||||
|
|
||||||
|
TODO
|
||||||
3
book/src/frameworks/leptos.md
Normal file
3
book/src/frameworks/leptos.md
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
# Lucide Leptos
|
||||||
|
|
||||||
|
TODO
|
||||||
3
book/src/frameworks/yew.md
Normal file
3
book/src/frameworks/yew.md
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
# Lucide Yew
|
||||||
|
|
||||||
|
TODO
|
||||||
27
book/src/introduction.md
Normal file
27
book/src/introduction.md
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
<!-- <p align="center">
|
||||||
|
<img src="./images/logo.svg" width="300" height="200" alt="Rust Lucide Logo">
|
||||||
|
</p> -->
|
||||||
|
|
||||||
|
# Introduction
|
||||||
|
|
||||||
|
Rust Lucide is a Rust port of [Lucide](https://lucide.dev/).
|
||||||
|
|
||||||
|
[Lucide](https://lucide.dev/) is a beautiful & consistent icon toolkit made by the community.
|
||||||
|
|
||||||
|
## Frameworks
|
||||||
|
|
||||||
|
Rust Lucide is available for the following frameworks:
|
||||||
|
|
||||||
|
- [Dioxus](https://dioxuslabs.com/)
|
||||||
|
- [Leptos](https://leptos.dev/)
|
||||||
|
- [Yew](https://yew.rs/)
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
This project is available under the [MIT license](https://github.com/RustForWeb/lucide/blob/main/LICENSE.md).
|
||||||
|
|
||||||
|
## Rust For Web
|
||||||
|
|
||||||
|
The Rust Lucide project is part of the [Rust For Web](https://github.com/RustForWeb).
|
||||||
|
|
||||||
|
[Rust For Web](https://github.com/RustForWeb) creates and ports web UI libraries for Rust. All projects are free and open source.
|
||||||
25
book/theme/tabs.css
Normal file
25
book/theme/tabs.css
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
.mdbook-tabs {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mdbook-tab {
|
||||||
|
background-color: var(--table-alternate-bg);
|
||||||
|
padding: 0.5rem 1rem;
|
||||||
|
cursor: pointer;
|
||||||
|
border: none;
|
||||||
|
font-size: 1.6rem;
|
||||||
|
line-height: 1.45em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mdbook-tab.active {
|
||||||
|
background-color: var(--table-header-bg);
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mdbook-tab-content {
|
||||||
|
padding: 1rem 0rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mdbook-tab-content table {
|
||||||
|
margin: unset;
|
||||||
|
}
|
||||||
75
book/theme/tabs.js
Normal file
75
book/theme/tabs.js
Normal file
|
|
@ -0,0 +1,75 @@
|
||||||
|
/**
|
||||||
|
* Change active tab of tabs.
|
||||||
|
*
|
||||||
|
* @param {Element} container
|
||||||
|
* @param {string} name
|
||||||
|
*/
|
||||||
|
const changeTab = (container, name) => {
|
||||||
|
for (const child of container.children) {
|
||||||
|
if (!(child instanceof HTMLElement)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (child.classList.contains('mdbook-tabs')) {
|
||||||
|
for (const tab of child.children) {
|
||||||
|
if (!(tab instanceof HTMLElement)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tab.dataset.tabname === name) {
|
||||||
|
tab.classList.add('active');
|
||||||
|
} else {
|
||||||
|
tab.classList.remove('active');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (child.classList.contains('mdbook-tab-content')) {
|
||||||
|
if (child.dataset.tabname === name) {
|
||||||
|
child.classList.remove('hidden');
|
||||||
|
} else {
|
||||||
|
child.classList.add('hidden');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
|
const tabs = document.querySelectorAll('.mdbook-tab');
|
||||||
|
for (const tab of tabs) {
|
||||||
|
tab.addEventListener('click', () => {
|
||||||
|
if (!(tab instanceof HTMLElement)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!tab.parentElement || !tab.parentElement.parentElement) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const container = tab.parentElement.parentElement;
|
||||||
|
const name = tab.dataset.tabname;
|
||||||
|
const global = container.dataset.tabglobal;
|
||||||
|
|
||||||
|
changeTab(container, name);
|
||||||
|
|
||||||
|
if (global) {
|
||||||
|
localStorage.setItem(`mdbook-tabs-${global}`, name);
|
||||||
|
|
||||||
|
const globalContainers = document.querySelectorAll(
|
||||||
|
`.mdbook-tabs-container[data-tabglobal="${global}"]`
|
||||||
|
);
|
||||||
|
for (const globalContainer of globalContainers) {
|
||||||
|
changeTab(globalContainer, name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const containers = document.querySelectorAll('.mdbook-tabs-container[data-tabglobal]');
|
||||||
|
for (const container of containers) {
|
||||||
|
const global = container.dataset.tabglobal;
|
||||||
|
|
||||||
|
const name = localStorage.getItem(`mdbook-tabs-${global}`);
|
||||||
|
if (name && document.querySelector(`.mdbook-tab[data-tabname=${name}]`)) {
|
||||||
|
changeTab(container, name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
3
book/theme/theme.css
Normal file
3
book/theme/theme.css
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
table {
|
||||||
|
margin: unset;
|
||||||
|
}
|
||||||
13
book/theme/theme.js
Normal file
13
book/theme/theme.js
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
window.addEventListener('message', (event) => {
|
||||||
|
if (!event.data.mdbookTrunk) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const data = event.data.mdbookTrunk;
|
||||||
|
const iframe = Array.from(document.getElementsByTagName('iframe')).find(
|
||||||
|
(iframe) => iframe.contentWindow === event.source
|
||||||
|
);
|
||||||
|
if (iframe) {
|
||||||
|
iframe.style.height = `${data.height}px`;
|
||||||
|
}
|
||||||
|
});
|
||||||
41
book/theme/trunk.css
Normal file
41
book/theme/trunk.css
Normal file
|
|
@ -0,0 +1,41 @@
|
||||||
|
.mdbook-trunk-iframe {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
border: 0.1em solid var(--quote-border);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mdbook-trunk-files-container {
|
||||||
|
width: 100%;
|
||||||
|
border: 0.1em solid var(--quote-border);
|
||||||
|
border-top: 0em;
|
||||||
|
background-color: var(--quote-border);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mdbook-trunk-files {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mdbook-trunk-files-header {
|
||||||
|
padding: 0.5rem 1rem;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 1.6rem;
|
||||||
|
line-height: 1.45em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mdbook-trunk-file {
|
||||||
|
background-color: var(--table-alternate-bg);
|
||||||
|
padding: 0.5rem 1rem;
|
||||||
|
cursor: pointer;
|
||||||
|
border: none;
|
||||||
|
font-size: 1.6rem;
|
||||||
|
line-height: 1.45em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mdbook-trunk-file.active {
|
||||||
|
background-color: var(--table-header-bg);
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mdbook-trunk-file-content > pre {
|
||||||
|
margin: 0rem;
|
||||||
|
}
|
||||||
53
book/theme/trunk.js
Normal file
53
book/theme/trunk.js
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
/**
|
||||||
|
* Change active file of files.
|
||||||
|
*
|
||||||
|
* @param {Element} container
|
||||||
|
* @param {string | null} name
|
||||||
|
*/
|
||||||
|
const changeTrunkFile = (container, name) => {
|
||||||
|
for (const child of container.children) {
|
||||||
|
if (!(child instanceof HTMLElement)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (child.classList.contains('mdbook-trunk-files')) {
|
||||||
|
for (const file of child.children) {
|
||||||
|
if (!(file instanceof HTMLElement)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (file.dataset.file === name) {
|
||||||
|
file.classList.add('active');
|
||||||
|
} else {
|
||||||
|
file.classList.remove('active');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (child.classList.contains('mdbook-trunk-file-content')) {
|
||||||
|
if (child.dataset.file === name) {
|
||||||
|
child.classList.remove('hidden');
|
||||||
|
} else {
|
||||||
|
child.classList.add('hidden');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
|
const files = document.querySelectorAll('.mdbook-trunk-file');
|
||||||
|
for (const file of files) {
|
||||||
|
file.addEventListener('click', () => {
|
||||||
|
if (!(file instanceof HTMLElement)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!file.parentElement || !file.parentElement.parentElement) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const container = file.parentElement.parentElement;
|
||||||
|
const name = file.dataset.file;
|
||||||
|
|
||||||
|
changeTrunkFile(container, file.classList.contains('active') ? null : name);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
Loading…
Reference in a new issue