Compare commits
91 Commits
2b719e0c0f
...
temp-andro
| Author | SHA1 | Date | |
|---|---|---|---|
|
f5799f2993
|
|||
|
7ecf0f10e8
|
|||
|
af095684a1
|
|||
|
b5e7ab5c48
|
|||
|
be1a21b746
|
|||
|
fa749b652f
|
|||
|
d9efaaae6e
|
|||
|
428e52ba3d
|
|||
|
8dbb1dc48e
|
|||
|
ee950aa4a9
|
|||
|
439cc012f0
|
|||
|
803fe36ed1
|
|||
|
80918b98d9
|
|||
|
d4235ef2ab
|
|||
|
d0a124ee75
|
|||
|
67a8a3fae6
|
|||
|
baef08475f
|
|||
|
265516c1a6
|
|||
|
01c9b2d0fb
|
|||
|
4ad96fe92f
|
|||
|
df1d23c0e3
|
|||
|
ce73256133
|
|||
|
fd661ba7e4
|
|||
|
316d45fe0c
|
|||
|
00bb8d7951
|
|||
|
393173f218
|
|||
|
8fd5fe2d4e
|
|||
|
d165e58443
|
|||
|
c23397a941
|
|||
|
4f8abe60da
|
|||
|
5085791f45
|
|||
|
dc3effe640
|
|||
|
999057314a
|
|||
|
41d0d83478
|
|||
|
0bca3ff872
|
|||
|
32c12186c1
|
|||
|
2f933d5302
|
|||
|
16db7ac2b9
|
|||
|
ae4c842180
|
|||
|
2ff947e6d6
|
|||
|
302d7caa8d
|
|||
|
2fdf09d041
|
|||
|
9cae1f2a3b
|
|||
|
9302a69553
|
|||
|
94059f14bb
|
|||
|
744e23aa66
|
|||
|
e9a208a9d1
|
|||
|
0f1dfbadf8
|
|||
|
907ddaacbe
|
|||
|
defddfadae
|
|||
|
8a0fae3b32
|
|||
|
f66b8301f0
|
|||
|
7112946e5b
|
|||
|
ac8a533079
|
|||
|
31e50e486b
|
|||
|
69e43805b9
|
|||
|
ab7fbdd569
|
|||
|
a0b7a23b7c
|
|||
|
8f3d144329
|
|||
|
3f9efeee3e
|
|||
|
d592a81b7c
|
|||
|
145214e6cc
|
|||
|
4271ec7c21
|
|||
|
1deffe8ee4
|
|||
|
bcac82b860
|
|||
|
9da7515042
|
|||
|
a088d90c6a
|
|||
|
9481498725
|
|||
|
3d28254ae1
|
|||
|
1666c25d13
|
|||
|
a3ebf712f9
|
|||
|
0ea3f3a118
|
|||
|
9d80e68a4e
|
|||
|
9ce77897d8
|
|||
|
bf4afb03e6
|
|||
|
f134e6d4c3
|
|||
|
97a3a24378
|
|||
|
7f5a524d4b
|
|||
|
dbd3a5841b
|
|||
|
60cf0b641d
|
|||
|
bfadb1c2b2
|
|||
|
da2291b6e7
|
|||
|
5b1df9577b
|
|||
|
0548c6cbea
|
|||
|
8dda8ec0dd
|
|||
|
5725c3e7da
|
|||
|
f688c7c2fa
|
|||
|
3677cc343c
|
|||
|
d7c4b0788d
|
|||
|
37ab61743f
|
|||
|
5a4716146e
|
@@ -1,9 +1,14 @@
|
||||
/.dioxus/
|
||||
/.git/
|
||||
/.github/
|
||||
/debug/
|
||||
/node_modules/
|
||||
/static/
|
||||
/target/
|
||||
/.git
|
||||
/.gitea
|
||||
/.github
|
||||
/bundle
|
||||
/node_modules
|
||||
/scripts
|
||||
/target
|
||||
|
||||
/.dockerignore
|
||||
/docker-compose-dev.yaml
|
||||
/docker-compose-prod.yaml
|
||||
/docker-compose.yaml
|
||||
/docker/dev/*/Dockerfile
|
||||
/docker/prod/*/Dockerfile
|
||||
|
||||
2
.env.dev
2
.env.dev
@@ -1,2 +1,2 @@
|
||||
DATABASE_URL=postgres://app:app@db/todo_baggins
|
||||
LANGUAGE_CODE=en-US
|
||||
MOBILE_SERVER_URL=
|
||||
|
||||
2
.github/workflows/checkov-check.yaml
vendored
2
.github/workflows/checkov-check.yaml
vendored
@@ -22,7 +22,7 @@ jobs:
|
||||
with:
|
||||
python-version: "3.13.1"
|
||||
- name: Rust toolchain installation
|
||||
uses: dtolnay/rust-toolchain@0579bb9e1907e560c2f263f705f93655a44a07e5
|
||||
uses: dtolnay/rust-toolchain@9bc92bc5598b4f3bec5d910d352094982cb0c3b9 # 1.92.0
|
||||
- name: code checkout
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
||||
with:
|
||||
|
||||
16
.github/workflows/rust-check.yaml
vendored
16
.github/workflows/rust-check.yaml
vendored
@@ -21,23 +21,25 @@ jobs:
|
||||
run: >
|
||||
apt-get update && apt-get install -y
|
||||
libgtk-3-dev=3.24.33-1ubuntu2.2
|
||||
libjavascriptcoregtk-4.1-dev=2.46.4-0ubuntu0.22.04.1
|
||||
libjavascriptcoregtk-4.1-dev=2.50.4-0ubuntu0.22.04.1
|
||||
libsoup-3.0-dev=3.0.7-0ubuntu1
|
||||
libwebkit2gtk-4.1-dev=2.46.4-0ubuntu0.22.04.1
|
||||
libwebkit2gtk-4.1-dev=2.50.4-0ubuntu0.22.04.1
|
||||
libxdo-dev=1:3.20160805.1-4
|
||||
- name: Rust toolchain installation
|
||||
uses: dtolnay/rust-toolchain@0579bb9e1907e560c2f263f705f93655a44a07e5
|
||||
uses: dtolnay/rust-toolchain@9bc92bc5598b4f3bec5d910d352094982cb0c3b9 # 1.92.0
|
||||
with:
|
||||
components: clippy, rustfmt
|
||||
- name: code checkout
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: npm build
|
||||
run: npm install && npm run build
|
||||
- name: .env symlink creation
|
||||
run: ln -s .env.dev .env
|
||||
- name: Tailwind CSS output creation
|
||||
run: touch assets/tailwind.css
|
||||
- name: rustfmt check
|
||||
run: cargo fmt --all --check
|
||||
- name: Clippy check
|
||||
run: cargo clippy --all-targets --all-features -- --deny warnings
|
||||
run: cargo clippy --locked --all-targets --all-features -- --deny warnings
|
||||
- name: test check
|
||||
run: cargo test --all --all-targets --all-features
|
||||
run: cargo --locked test --all --all-targets --all-features
|
||||
|
||||
8
.github/workflows/shellcheck-check.yaml
vendored
8
.github/workflows/shellcheck-check.yaml
vendored
@@ -25,4 +25,10 @@ jobs:
|
||||
fetch-depth: 0
|
||||
- name: ShellCheck check
|
||||
# https://www.shellcheck.net/wiki/Recursiveness
|
||||
run: find . -type f -name "*.sh" -print0 | xargs -0 shellcheck
|
||||
run: |
|
||||
if find . -type f -name "*.sh" -print0 | grep -qz .; then
|
||||
find . -type f -name "*.sh" -print0 | xargs -0 shellcheck
|
||||
exit 0
|
||||
else
|
||||
echo "No shell scripts found. Skipping ShellCheck."
|
||||
fi
|
||||
|
||||
16
.gitignore
vendored
16
.gitignore
vendored
@@ -1,10 +1,10 @@
|
||||
/target/
|
||||
/dist/
|
||||
/static/
|
||||
/.dioxus/
|
||||
/node_modules/
|
||||
/.env
|
||||
|
||||
**/*.rs.bk
|
||||
/docker-compose.yaml
|
||||
|
||||
.env
|
||||
.env.prod
|
||||
/node_modules
|
||||
/target
|
||||
/bundle
|
||||
|
||||
/**/*.rs.bk
|
||||
/.DS_Store
|
||||
|
||||
5
.idea/.gitignore
generated
vendored
5
.idea/.gitignore
generated
vendored
@@ -1,5 +0,0 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
||||
20
.idea/dataSources.local.xml
generated
20
.idea/dataSources.local.xml
generated
@@ -1,20 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="dataSourceStorageLocal" created-in="RR-243.22562.230">
|
||||
<data-source name="todo_baggins@localhost" uuid="1658668c-c2b8-426d-a22f-16fbad9eff0b">
|
||||
<database-info product="PostgreSQL" version="16.4 (Debian 16.4-1.pgdg120+1)" jdbc-version="4.2" driver-name="PostgreSQL JDBC Driver" driver-version="42.6.0" dbms="POSTGRES" exact-version="16.4" exact-driver-version="42.6">
|
||||
<identifier-quote-string>"</identifier-quote-string>
|
||||
</database-info>
|
||||
<case-sensitivity plain-identifiers="lower" quoted-identifiers="exact" />
|
||||
<secret-storage>master_key</secret-storage>
|
||||
<user-name>app</user-name>
|
||||
<schema-mapping>
|
||||
<introspection-scope>
|
||||
<node kind="database" qname="@">
|
||||
<node kind="schema" qname="@" />
|
||||
</node>
|
||||
</introspection-scope>
|
||||
</schema-mapping>
|
||||
</data-source>
|
||||
</component>
|
||||
</project>
|
||||
12
.idea/dataSources.xml
generated
12
.idea/dataSources.xml
generated
@@ -1,12 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
|
||||
<data-source source="LOCAL" name="todo_baggins@localhost" uuid="1658668c-c2b8-426d-a22f-16fbad9eff0b">
|
||||
<driver-ref>postgresql</driver-ref>
|
||||
<synchronize>true</synchronize>
|
||||
<jdbc-driver>org.postgresql.Driver</jdbc-driver>
|
||||
<jdbc-url>jdbc:postgresql://localhost:5432/todo_baggins</jdbc-url>
|
||||
<working-dir>$ProjectFileDir$</working-dir>
|
||||
</data-source>
|
||||
</component>
|
||||
</project>
|
||||
5014
.idea/dataSources/1658668c-c2b8-426d-a22f-16fbad9eff0b.xml
generated
5014
.idea/dataSources/1658668c-c2b8-426d-a22f-16fbad9eff0b.xml
generated
File diff suppressed because it is too large
Load Diff
@@ -1 +0,0 @@
|
||||
#n:todo_baggins
|
||||
@@ -1,2 +0,0 @@
|
||||
#n:information_schema
|
||||
!<md> [null, 0, null, null, -2147483648, -2147483648]
|
||||
@@ -1,2 +0,0 @@
|
||||
#n:pg_catalog
|
||||
!<md> [null, 0, null, null, -2147483648, -2147483648]
|
||||
@@ -1,2 +0,0 @@
|
||||
#n:public
|
||||
!<md> [785, 0, null, null, -2147483648, -2147483648]
|
||||
Binary file not shown.
6
.idea/jsLibraryMappings.xml
generated
6
.idea/jsLibraryMappings.xml
generated
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="JavaScriptLibraryMappings">
|
||||
<includedPredefinedLibrary name="Node.js Core" />
|
||||
</component>
|
||||
</project>
|
||||
8
.idea/modules.xml
generated
8
.idea/modules.xml
generated
@@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/todo-baggins.iml" filepath="$PROJECT_DIR$/.idea/todo-baggins.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
8
.idea/prettier.xml
generated
8
.idea/prettier.xml
generated
@@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="PrettierConfiguration">
|
||||
<option name="myConfigurationMode" value="AUTOMATIC" />
|
||||
<option name="myRunOnSave" value="true" />
|
||||
<option name="myFilesPattern" value="**/*.{html,css,scss,js,ts,cjs,cts,mjs,mts,json,yaml}" />
|
||||
</component>
|
||||
</project>
|
||||
11
.idea/runConfigurations/dev.xml
generated
11
.idea/runConfigurations/dev.xml
generated
@@ -1,11 +0,0 @@
|
||||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="dev" type="docker-deploy" factoryName="docker-compose.yml" server-name="Docker">
|
||||
<deployment type="docker-compose.yml">
|
||||
<settings>
|
||||
<option name="envFilePath" value="" />
|
||||
<option name="sourceFilePath" value="docker-compose-dev.yaml" />
|
||||
</settings>
|
||||
</deployment>
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
</component>
|
||||
8
.idea/sqldialects.xml
generated
8
.idea/sqldialects.xml
generated
@@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="SqlDialectMappings">
|
||||
<file url="file://$PROJECT_DIR$/migrations/00000000000000_diesel_initial_setup/down.sql" dialect="GenericSQL" />
|
||||
<file url="file://$PROJECT_DIR$/migrations/00000000000000_diesel_initial_setup/up.sql" dialect="PostgreSQL" />
|
||||
<file url="PROJECT" dialect="PostgreSQL" />
|
||||
</component>
|
||||
</project>
|
||||
11
.idea/todo-baggins.iml
generated
11
.idea/todo-baggins.iml
generated
@@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="EMPTY_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/target" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
||||
12
.idea/vcs.xml
generated
12
.idea/vcs.xml
generated
@@ -1,12 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CommitMessageInspectionProfile">
|
||||
<profile version="1.0">
|
||||
<inspection_tool class="CommitFormat" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
<inspection_tool class="CommitNamingConvention" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
</profile>
|
||||
</component>
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
14
.idea/webResources.xml
generated
14
.idea/webResources.xml
generated
@@ -1,14 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="WebResourcesPaths">
|
||||
<contentEntries>
|
||||
<entry url="file://$PROJECT_DIR$">
|
||||
<entryData>
|
||||
<resourceRoots>
|
||||
<path value="file://$PROJECT_DIR$/assets" />
|
||||
</resourceRoots>
|
||||
</entryData>
|
||||
</entry>
|
||||
</contentEntries>
|
||||
</component>
|
||||
</project>
|
||||
11
.zed/settings.json
Normal file
11
.zed/settings.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"lsp": {
|
||||
"rust-analyzer": {
|
||||
"initialization_options": {
|
||||
"cargo": {
|
||||
"features": ["server", "web"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
4289
Cargo.lock
generated
4289
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
70
Cargo.toml
70
Cargo.toml
@@ -1,49 +1,61 @@
|
||||
[package]
|
||||
name = "todo-baggins"
|
||||
name = "todo_baggins"
|
||||
version = "0.1.0"
|
||||
authors = ["Matouš Volf <66163112+matous-volf@users.noreply.github.com>"]
|
||||
edition = "2021"
|
||||
authors = ["Matouš Volf <git@matousvolf.cz>"]
|
||||
edition = "2024"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
chrono = { version = "0.4.38", features = ["serde", "unstable-locales"] }
|
||||
dioxus = { version = "0.6.0", features = ["fullstack", "router"] }
|
||||
feruca = { version = "0.10.0" }
|
||||
serde = { version = "1.0.208" }
|
||||
serde_json = { version = "1.0.125" }
|
||||
serde_with = { version = "3.9.0", features = ["chrono_0_4"] }
|
||||
tracing = "0.1.40"
|
||||
unic-langid-impl = { version = "0.9.5", features = ["serde"] }
|
||||
validator = { version = "0.19.0", features = ["derive"] }
|
||||
chrono = { version = "0.4.43", features = ["serde", "unstable-locales"] }
|
||||
# Remember to update the CLI as well.
|
||||
dioxus = { git = "https://github.com/matous-volf/dioxus", rev = "627d5ca5b80aeed57c23e253024665f103117f5e", features = ["fullstack", "router"] }
|
||||
# TODO: Remove this once https://github.com/DioxusLabs/dioxus/issues/4765 is resolved.
|
||||
dioxus-html = { git = "https://github.com/matous-volf/dioxus", rev = "627d5ca5b80aeed57c23e253024665f103117f5e", features = ["serialize"] }
|
||||
feruca = { version = "0.11.5" }
|
||||
serde = { version = "1.0.228" }
|
||||
serde_json = { version = "1.0.149" }
|
||||
serde_with = { version = "3.16.1", features = ["chrono_0_4"] }
|
||||
tracing = "0.1.44"
|
||||
unic-langid-impl = { version = "0.9.6", features = ["serde"] }
|
||||
validator = { version = "0.20.0", features = ["derive"] }
|
||||
|
||||
diesel = { version = "2.2.2", features = ["chrono", "postgres", "postgres_backend", "serde_json"], optional = true }
|
||||
diesel_migrations = { version = "2.2.0", features = ["postgres"], optional = true }
|
||||
dotenvy = { version = "0.15.7", optional = true }
|
||||
time = { version = "0.3.36", optional = true }
|
||||
# Remember to update the CLI as well.
|
||||
diesel = { version = "2.3.6", features = [
|
||||
"chrono",
|
||||
"postgres",
|
||||
"postgres_backend",
|
||||
"serde_json",
|
||||
], optional = true }
|
||||
diesel_migrations = { version = "2.3.1", features = [
|
||||
"postgres",
|
||||
], optional = true }
|
||||
rand = { version = "0.9.2", optional = true }
|
||||
time = { version = "0.3.45", optional = true }
|
||||
tokio = { version = "1.49.0", optional = true }
|
||||
|
||||
async-std = { version = "1.12.0", optional = true }
|
||||
dioxus-i18n = { version = "0.3.0", optional = true }
|
||||
dioxus-query = { version = "0.6.0", optional = true }
|
||||
voca_rs = { version = "1.15.2", optional = true }
|
||||
async-std = { version = "1.13.2", optional = true }
|
||||
dioxus-i18n = { path = "dioxus-i18n" }
|
||||
voca_rs = "1.15.2"
|
||||
load-dotenv = "0.1.2"
|
||||
# TODO: Switch to upstream once it merges the changes.
|
||||
dioxus-free-icons = { path = "dioxus-free-icons/packages/lib", features = [
|
||||
"font-awesome-regular",
|
||||
"font-awesome-solid",
|
||||
] }
|
||||
|
||||
[features]
|
||||
default = ["web"]
|
||||
web = ["dioxus/web", "dep:async-std"]
|
||||
mobile = ["dioxus/mobile", "dep:async-std"]
|
||||
desktop = ["dioxus/desktop"]
|
||||
mobile = ["dioxus/mobile"]
|
||||
web = [
|
||||
"dioxus/web",
|
||||
"dep:async-std",
|
||||
"dep:dioxus-query",
|
||||
"dep:dioxus-i18n",
|
||||
"dep:voca_rs"
|
||||
]
|
||||
server = [
|
||||
"dioxus/server",
|
||||
"dep:diesel",
|
||||
"dep:diesel_migrations",
|
||||
"dep:dotenvy",
|
||||
"dep:rand",
|
||||
"dep:time",
|
||||
"dep:tokio",
|
||||
]
|
||||
|
||||
[profile]
|
||||
|
||||
38
Dioxus.toml
38
Dioxus.toml
@@ -1,42 +1,6 @@
|
||||
[application]
|
||||
|
||||
# App (Project) Name
|
||||
name = "todo-baggins"
|
||||
|
||||
# Dioxus App Default Platform
|
||||
# web, desktop, fullstack
|
||||
default_platform = "fullstack"
|
||||
|
||||
# `build` & `serve` dist path
|
||||
out_dir = "dist"
|
||||
|
||||
# resource (assets) file folder
|
||||
asset_dir = "assets"
|
||||
|
||||
[web.app]
|
||||
|
||||
# HTML title tag content
|
||||
# HTML title tag content.
|
||||
title = "Todo Baggins"
|
||||
|
||||
[web.watcher]
|
||||
|
||||
# when watcher trigger, regenerate the `index.html`
|
||||
reload_html = true
|
||||
|
||||
# which files or dirs will be watcher monitoring
|
||||
watch_path = ["src", "assets"]
|
||||
|
||||
# include `assets` in web platform
|
||||
[web.resource]
|
||||
|
||||
# CSS style file
|
||||
style = []
|
||||
|
||||
# Javascript code file
|
||||
script = ["https://kit.fontawesome.com/3c1b409f8f.js"]
|
||||
|
||||
[web.resource.dev]
|
||||
|
||||
# Javascript code file
|
||||
# serve: [dev-server] only
|
||||
script = []
|
||||
|
||||
1
assets/.gitignore
vendored
Normal file
1
assets/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
/tailwind.css
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 108 KiB After Width: | Height: | Size: 12 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 12 KiB |
@@ -1,203 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="512"
|
||||
height="512"
|
||||
viewBox="0 0 512 512"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
sodipodi:docname="icon.svg"
|
||||
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, custom)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#eeeeee"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#505050"
|
||||
inkscape:document-units="px"
|
||||
inkscape:zoom="1.1020922"
|
||||
inkscape:cx="188.27826"
|
||||
inkscape:cy="204.15715"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1011"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1" />
|
||||
<defs
|
||||
id="defs1">
|
||||
<inkscape:path-effect
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect2"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
|
||||
radius="0"
|
||||
unit="px"
|
||||
method="auto"
|
||||
mode="F"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" />
|
||||
<inkscape:path-effect
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect1"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
|
||||
radius="0"
|
||||
unit="px"
|
||||
method="auto"
|
||||
mode="F"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" />
|
||||
</defs>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<rect
|
||||
style="display:inline;fill:#27272a;fill-opacity:1;stroke:none;stroke-width:32;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect1"
|
||||
width="512"
|
||||
height="512"
|
||||
x="0"
|
||||
y="0"
|
||||
sodipodi:insensitive="true"
|
||||
inkscape:label="background"
|
||||
ry="128.00018"
|
||||
sodipodi:type="rect"
|
||||
rx="129.98714" />
|
||||
<g
|
||||
id="g17"
|
||||
inkscape:label="logo"
|
||||
transform="translate(8)">
|
||||
<g
|
||||
id="g8"
|
||||
inkscape:label="ring">
|
||||
<g
|
||||
id="g7"
|
||||
inkscape:label="back">
|
||||
<circle
|
||||
style="fill:#d97706;fill-opacity:1;stroke:#d97706;stroke-width:32;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path1"
|
||||
cx="224"
|
||||
cy="256"
|
||||
r="128"
|
||||
inkscape:label="ring back" />
|
||||
<rect
|
||||
style="fill:#d97706;fill-opacity:1;stroke:none;stroke-width:21.8936;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect2"
|
||||
width="48"
|
||||
height="288"
|
||||
x="224"
|
||||
y="112"
|
||||
inkscape:label="rect2" />
|
||||
</g>
|
||||
<g
|
||||
id="g1"
|
||||
transform="translate(-4.163147,-0.69235229)"
|
||||
inkscape:label="front">
|
||||
<circle
|
||||
style="fill:#27272a;fill-opacity:1;stroke:none;stroke-width:32;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path1-5-2"
|
||||
cx="276.16315"
|
||||
cy="256.69235"
|
||||
r="128" />
|
||||
<circle
|
||||
style="fill:none;fill-opacity:1;stroke:#fbbf24;stroke-width:32;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path1-5"
|
||||
cx="276.16315"
|
||||
cy="256.69235"
|
||||
r="128" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g16"
|
||||
inkscape:label="tick"
|
||||
transform="translate(16.000231,-8.3918418e-5)">
|
||||
<g
|
||||
id="g6"
|
||||
transform="rotate(45,-57.96574,415.4208)"
|
||||
style="fill:#d97706;fill-opacity:1;stroke:none;stroke-opacity:1"
|
||||
inkscape:label="back">
|
||||
<rect
|
||||
style="fill:#d97706;fill-opacity:1;stroke:none;stroke-width:32;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect9"
|
||||
width="32.000458"
|
||||
height="32"
|
||||
x="273.94067"
|
||||
y="210.74516"
|
||||
transform="rotate(-45,-57.96574,415.4208)" />
|
||||
<rect
|
||||
style="fill:#d97706;fill-opacity:1;stroke:none;stroke-width:32;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect8"
|
||||
width="32.000458"
|
||||
height="32"
|
||||
x="206.05841"
|
||||
y="233.37257"
|
||||
transform="rotate(-45,-57.96574,415.4208)" />
|
||||
<rect
|
||||
style="fill:#d97706;fill-opacity:1;stroke:none;stroke-width:32;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect7"
|
||||
height="16"
|
||||
x="228.686"
|
||||
y="285.255"
|
||||
width="32"
|
||||
transform="rotate(-45,-57.96574,415.4208)" />
|
||||
<rect
|
||||
style="fill:#d97706;fill-opacity:1;stroke:none;stroke-width:32;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect5"
|
||||
width="64"
|
||||
height="32"
|
||||
x="0"
|
||||
y="100" />
|
||||
<rect
|
||||
style="fill:#d97706;fill-opacity:1;stroke:none;stroke-width:39.1918;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect6"
|
||||
width="32"
|
||||
height="96"
|
||||
x="32"
|
||||
y="36" />
|
||||
</g>
|
||||
<g
|
||||
id="g4"
|
||||
transform="rotate(45,-41.965512,454.04877)"
|
||||
style="fill:#fbbf24;fill-opacity:1;stroke:none;stroke-opacity:1"
|
||||
inkscape:label="front">
|
||||
<rect
|
||||
style="fill:#fbbf24;fill-opacity:1;stroke:none;stroke-width:32;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect3"
|
||||
width="64"
|
||||
height="32"
|
||||
x="0"
|
||||
y="100" />
|
||||
<rect
|
||||
style="fill:#fbbf24;fill-opacity:1;stroke:none;stroke-width:39.1918;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4"
|
||||
width="32"
|
||||
height="96"
|
||||
x="32"
|
||||
y="36" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 6.4 KiB |
@@ -3,12 +3,13 @@
|
||||
"short_name": "Todo Baggins",
|
||||
"start_url": "/",
|
||||
"display": "standalone",
|
||||
"background_color": "#27272a",
|
||||
"theme_color": "#27272a",
|
||||
"background_color": "#101828",
|
||||
"theme_color": "#b89a2e",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/images/icon.png",
|
||||
"src": "/assets/images/icon.png",
|
||||
"sizes": "any",
|
||||
"purpose": "maskable",
|
||||
"type": "image/png"
|
||||
}
|
||||
]
|
||||
|
||||
1
assets/styles/.gitignore
vendored
1
assets/styles/.gitignore
vendored
@@ -1 +0,0 @@
|
||||
/tailwind_output.css
|
||||
@@ -1,17 +0,0 @@
|
||||
@layer base {
|
||||
@font-face {
|
||||
font-family: Inter;
|
||||
font-style: normal;
|
||||
font-weight: 100 900;
|
||||
font-display: swap;
|
||||
src: url("/assets/fonts/inter_variable.woff2") format("woff2");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: Inter;
|
||||
font-style: italic;
|
||||
font-weight: 100 900;
|
||||
font-display: swap;
|
||||
src: url("/assets/fonts/inter_variable_italic.woff2") format("woff2");
|
||||
}
|
||||
}
|
||||
@@ -8,56 +8,37 @@ input[type="range"] {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
input[type="range"]::-moz-range-thumb {
|
||||
input[type="range"]::-moz-range-thumb,
|
||||
input[type="range"]::-webkit-slider-thumb {
|
||||
width: 1.25rem;
|
||||
height: 1.25rem;
|
||||
background: rgba(228 228 231);
|
||||
background: var(--color-gray-400);
|
||||
filter: drop-shadow(0 var(--spacing) 0 var(--color-gray-500));
|
||||
border: 0;
|
||||
border-radius: 0.5rem;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
input[type="range"]::-moz-range-progress {
|
||||
background: #525259;
|
||||
input[type="range"]::-webkit-slider-thumb {
|
||||
position: relative;
|
||||
top: -9px;
|
||||
}
|
||||
|
||||
input[type="range"]::-moz-range-track,
|
||||
input[type="range"]::-webkit-slider-runnable-track {
|
||||
background: var(--color-gray-800-muted);
|
||||
height: 0.5rem;
|
||||
filter: drop-shadow(
|
||||
0 calc(0px - var(--spacing)) 0 var(--color-gray-900-muted)
|
||||
);
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
|
||||
input[type="range"]::-moz-range-track {
|
||||
background: rgba(39 39 42 / 50%);
|
||||
height: 0.5rem;
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
|
||||
input[type="range"].input-range-reverse::-moz-range-progress {
|
||||
background: #2d2d31;
|
||||
height: 0.5rem;
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
|
||||
input[type="range"].input-range-reverse::-moz-range-track {
|
||||
background: rgba(113 113 122 / 50%);
|
||||
height: 0.5rem;
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
|
||||
input[type="range"]::-webkit-slider-thumb {
|
||||
width: 1.25rem;
|
||||
height: 1.25rem;
|
||||
background: rgba(228 228 231);
|
||||
border: 0;
|
||||
border-radius: 0.5rem;
|
||||
position: relative;
|
||||
top: -0.4rem;
|
||||
transform: translateY(3px);
|
||||
}
|
||||
|
||||
input[type="range"]::-webkit-slider-runnable-track {
|
||||
background: rgba(39 39 42 / 50%);
|
||||
height: 0.5rem;
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
|
||||
input[type="range"].input-range-reverse::-webkit-slider-runnable-track {
|
||||
background: rgba(39 39 42 / 50%);
|
||||
height: 0.5rem;
|
||||
border-radius: 0.25rem;
|
||||
position: relative;
|
||||
top: 3px;
|
||||
}
|
||||
|
||||
7
assets/styles/select_arrow.css
Normal file
7
assets/styles/select_arrow.css
Normal file
@@ -0,0 +1,7 @@
|
||||
select {
|
||||
appearance: none;
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 640'%3E%3Cpath fill='%239ca3af' d='M300.3 440.8C312.9 451 331.4 450.3 343.1 438.6L471.1 310.6C480.3 301.4 483 287.7 478 275.7C473 263.7 461.4 256 448.5 256L192.5 256C179.6 256 167.9 263.8 162.9 275.8C157.9 287.8 160.7 301.5 169.9 310.6L297.9 438.6L300.3 440.8z'/%3E%3C/svg%3E");
|
||||
background-repeat: no-repeat;
|
||||
background-size: 2rem;
|
||||
background-position: right 0.5rem center;
|
||||
}
|
||||
48
dioxus-free-icons/.github/release-drafter.yml
vendored
Normal file
48
dioxus-free-icons/.github/release-drafter.yml
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
name-template: "Release v$RESOLVED_VERSION 🦀"
|
||||
tag-template: "v$RESOLVED_VERSION"
|
||||
categories:
|
||||
- title: "🚀 Features"
|
||||
label: "feature"
|
||||
- title: "🐛 Bug Fixes"
|
||||
label: "bug"
|
||||
- title: "♻️ Refactor"
|
||||
label: "refactor"
|
||||
- title: "📝 Documentation"
|
||||
label: "documentation"
|
||||
- title: "🧰 Maintenance"
|
||||
labels:
|
||||
- "chore"
|
||||
- "dependencies"
|
||||
change-template: "- $TITLE @$AUTHOR (#$NUMBER)"
|
||||
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
||||
version-resolver:
|
||||
major:
|
||||
labels:
|
||||
- "major"
|
||||
minor:
|
||||
labels:
|
||||
- "minor"
|
||||
patch:
|
||||
labels:
|
||||
- "patch"
|
||||
default: patch
|
||||
template: |
|
||||
## Changes
|
||||
|
||||
$CHANGES
|
||||
autolabeler:
|
||||
- label: feature
|
||||
branch:
|
||||
- "/^feat(ure)?[/-].+/"
|
||||
- label: bug
|
||||
branch:
|
||||
- "/^fix[/-].+/"
|
||||
- label: refactor
|
||||
branch:
|
||||
- "/(refactor|refactoring)[/-].+/"
|
||||
- label: documentation
|
||||
branch:
|
||||
- "/doc(s|umentation)[/-].+/"
|
||||
- label: chore
|
||||
branch:
|
||||
- "/^chore[/-].+/"
|
||||
25
dioxus-free-icons/.github/workflows/ci.yml
vendored
Normal file
25
dioxus-free-icons/.github/workflows/ci.yml
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
name: Cargo Build & Test
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches: [ "main" ]
|
||||
pull_request:
|
||||
|
||||
env:
|
||||
CARGO_TERM_COLOR: always
|
||||
|
||||
jobs:
|
||||
build_and_test:
|
||||
name: Rust project - latest
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Install the nightly toolchain
|
||||
uses: dtolnay/rust-toolchain@nightly
|
||||
- name: Install linux dependencies
|
||||
if: runner.os == 'Linux'
|
||||
run: |
|
||||
sudo apt update && sudo apt install build-essential libssl-dev pkg-config libglib2.0-dev libgtk-3-dev
|
||||
- run: cargo build --verbose
|
||||
- run: cargo test --verbose
|
||||
19
dioxus-free-icons/.github/workflows/publish.yml
vendored
Normal file
19
dioxus-free-icons/.github/workflows/publish.yml
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
name: Cargo Publish
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
env:
|
||||
CARGO_TERM_COLOR: always
|
||||
|
||||
jobs:
|
||||
publish:
|
||||
name: Publish to crate.io
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- run: cargo publish
|
||||
working-directory: ./packages/lib
|
||||
env:
|
||||
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
|
||||
23
dioxus-free-icons/.github/workflows/release-drafter.yml
vendored
Normal file
23
dioxus-free-icons/.github/workflows/release-drafter.yml
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
name: Release Drafter
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
# pull_request event is required only for autolabeler
|
||||
pull_request:
|
||||
# Only following types are handled by the action, but one can default to all as well
|
||||
types: [opened, reopened, synchronize]
|
||||
# pull_request_target event is required for autolabeler to support PRs from forks
|
||||
# pull_request_target:
|
||||
# types: [opened, reopened, synchronize]
|
||||
|
||||
jobs:
|
||||
update_release_draft:
|
||||
permissions:
|
||||
contents: write
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: release-drafter/release-drafter@v5
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
16
dioxus-free-icons/.gitignore
vendored
Normal file
16
dioxus-free-icons/.gitignore
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
# Generated by Cargo
|
||||
# will have compiled files and executables
|
||||
/target/
|
||||
|
||||
# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
|
||||
# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
|
||||
Cargo.lock
|
||||
|
||||
# These are backup files generated by rustfmt
|
||||
**/*.rs.bk
|
||||
|
||||
|
||||
# Added by cargo
|
||||
|
||||
/target
|
||||
/Cargo.lock
|
||||
27
dioxus-free-icons/.gitmodules
vendored
Normal file
27
dioxus-free-icons/.gitmodules
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
[submodule "icon_resources/font-awesome"]
|
||||
path = icon_resources/font-awesome
|
||||
url = https://github.com/FortAwesome/Font-Awesome
|
||||
[submodule "icon_resources/heroicons"]
|
||||
path = icon_resources/heroicons
|
||||
url = https://github.com/tailwindlabs/heroicons
|
||||
[submodule "icon_resources/ionicons"]
|
||||
path = icon_resources/ionicons
|
||||
url = https://github.com/ionic-team/ionicons
|
||||
[submodule "icon_resources/octicons"]
|
||||
path = icon_resources/octicons
|
||||
url = https://github.com/primer/octicons
|
||||
[submodule "icon_resources/bootstrap"]
|
||||
path = icon_resources/bootstrap
|
||||
url = https://github.com/twbs/icons
|
||||
[submodule "icon_resources/feather"]
|
||||
path = icon_resources/feather
|
||||
url = https://github.com/feathericons/feather
|
||||
[submodule "icon_resources/lucide"]
|
||||
path = icon_resources/lucide
|
||||
url = https://github.com/lucide-icons/lucide
|
||||
[submodule "icon_resources/material-design-icons"]
|
||||
path = icon_resources/material-design-icons
|
||||
url = https://github.com/google/material-design-icons
|
||||
[submodule "icon_resources/vscode-codicons"]
|
||||
path = icon_resources/vscode-codicons
|
||||
url = https://github.com/microsoft/vscode-codicons.git
|
||||
24
dioxus-free-icons/Cargo.toml
Normal file
24
dioxus-free-icons/Cargo.toml
Normal file
@@ -0,0 +1,24 @@
|
||||
# monorepo only work when using virtual manifest
|
||||
# see: https://github.com/rust-lang/cargo/issues/7467#issuecomment-867632379
|
||||
[workspace]
|
||||
resolver = "2"
|
||||
members = ["packages/codegen", "packages/example", "packages/lib"]
|
||||
|
||||
[workspace.dependencies]
|
||||
dioxus = { git = "https://github.com/matous-volf/dioxus", rev = "627d5ca5b80aeed57c23e253024665f103117f5e", default-features = false, features = [
|
||||
"html",
|
||||
"macro",
|
||||
"signals",
|
||||
] }
|
||||
|
||||
[profile]
|
||||
|
||||
[profile.wasm-dev]
|
||||
inherits = "dev"
|
||||
opt-level = 1
|
||||
|
||||
[profile.server-dev]
|
||||
inherits = "dev"
|
||||
|
||||
[profile.android-dev]
|
||||
inherits = "dev"
|
||||
25
dioxus-free-icons/LICENSE
Normal file
25
dioxus-free-icons/LICENSE
Normal file
@@ -0,0 +1,25 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2022-Present Daiki Nishikawa
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
---
|
||||
Icons are taken from the other projects
|
||||
so please check each project licences accordingly.
|
||||
117
dioxus-free-icons/README.md
Normal file
117
dioxus-free-icons/README.md
Normal file
@@ -0,0 +1,117 @@
|
||||
[](https://discord.gg/sKJSVNSCDJ)
|
||||
[](https://crates.io/crates/dioxus-free-icons)
|
||||
|
||||
# dioxus-free-icons 🙂
|
||||
|
||||
Use free svg icons in your [Dioxus](https://dioxuslabs.com/) projects easily with dioxus-free-icons.
|
||||
|
||||
More information about this crate can be found in the [crate documentation](https://docs.rs/dioxus-free-icons/latest/dioxus_free_icons/).
|
||||
|
||||
## Install
|
||||
|
||||
To use `dioxus-free-icons`, add this to your Cargo.toml:
|
||||
|
||||
```toml
|
||||
[dependencies]
|
||||
dioxus-free-icons = { version = "0.9", features = ["font-awesome-brands"] }
|
||||
```
|
||||
|
||||
### Support features
|
||||
|
||||
The following features are available. Please see [react-icons site](https://react-icons.github.io/react-icons) to check the icon name and icon design.
|
||||
|
||||
- [bootstrap](https://docs.rs/dioxus-free-icons/latest/dioxus_free_icons/icons/bs_icons/index.html)
|
||||
- [codicons](https://docs.rs/dioxus-free-icons/latest/dioxus_free_icons/icons/vs_icons/index.html)
|
||||
- [font-awesome-brands](https://docs.rs/dioxus-free-icons/latest/dioxus_free_icons/icons/fa_brands_icons/index.html)
|
||||
- [font-awesome-regular](https://docs.rs/dioxus-free-icons/latest/dioxus_free_icons/icons/fa_regular_icons/index.html)
|
||||
- [font-awesome-solid](https://docs.rs/dioxus-free-icons/latest/dioxus_free_icons/icons/fa_solid_icons/index.html)
|
||||
- [feather](https://docs.rs/dioxus-free-icons/latest/dioxus_free_icons/icons/fi_icons/index.html)
|
||||
- [octicons](https://docs.rs/dioxus-free-icons/latest/dioxus_free_icons/icons/go_icons/index.html)
|
||||
- [hero-icons-outline](https://docs.rs/dioxus-free-icons/latest/dioxus_free_icons/icons/hi_outline_icons/index.html)
|
||||
- [hero-icons-solid](https://docs.rs/dioxus-free-icons/latest/dioxus_free_icons/icons/hi_solid_icons/index.html)
|
||||
- [ionicons](https://docs.rs/dioxus-free-icons/latest/dioxus_free_icons/icons/io_icons/index.html)
|
||||
- [lucide](https://docs.rs/dioxus-free-icons/latest/dioxus_free_icons/icons/ld_icons/index.html)
|
||||
- [material-design-icons-action](https://docs.rs/dioxus-free-icons/latest/dioxus_free_icons/icons/md_action_icons/index.html)
|
||||
- [material-design-icons-alert](https://docs.rs/dioxus-free-icons/latest/dioxus_free_icons/icons/md_alert_icons/index.html)
|
||||
- [material-design-icons-av](https://docs.rs/dioxus-free-icons/latest/dioxus_free_icons/icons/md_av_icons/index.html)
|
||||
- [material-design-icons-communication](https://docs.rs/dioxus-free-icons/latest/dioxus_free_icons/icons/md_communication_icons/index.html)
|
||||
- [material-design-icons-content](https://docs.rs/dioxus-free-icons/latest/dioxus_free_icons/icons/md_content_icons/index.html)
|
||||
- [material-design-icons-device](https://docs.rs/dioxus-free-icons/latest/dioxus_free_icons/icons/io_icons/index.html)
|
||||
- [material-design-icons-editor](https://docs.rs/dioxus-free-icons/latest/dioxus_free_icons/icons/md_editor_icons/index.html)
|
||||
- [material-design-icons-file](https://docs.rs/dioxus-free-icons/latest/dioxus_free_icons/icons/md_file_icons/index.html)
|
||||
- [material-design-icons-hardware](https://docs.rs/dioxus-free-icons/latest/dioxus_free_icons/icons/md_hardware_icons/index.html)
|
||||
- [material-design-icons-home](https://docs.rs/dioxus-free-icons/latest/dioxus_free_icons/icons/md_home_icons/index.html)
|
||||
- [material-design-icons-image](https://docs.rs/dioxus-free-icons/latest/dioxus_free_icons/icons/md_image_icons/index.html)
|
||||
- [material-design-icons-maps](https://docs.rs/dioxus-free-icons/latest/dioxus_free_icons/icons/md_maps_icons/index.html)
|
||||
- [material-design-icons-navigation](https://docs.rs/dioxus-free-icons/latest/dioxus_free_icons/icons/md_navigation_icons/index.html)
|
||||
- [material-design-icons-notification](https://docs.rs/dioxus-free-icons/latest/dioxus_free_icons/icons/md_notification_icons/index.html)
|
||||
- [material-design-icons-places](https://docs.rs/dioxus-free-icons/latest/dioxus_free_icons/icons/md_places_icons/index.html)
|
||||
- [material-design-icons-social](https://docs.rs/dioxus-free-icons/latest/dioxus_free_icons/icons/md_social_icons/index.html)
|
||||
- [material-design-icons-toggle](https://docs.rs/dioxus-free-icons/latest/dioxus_free_icons/icons/md_toggle_icons/index.html)
|
||||
|
||||
## Example
|
||||
|
||||
This library provides Icon component, which will generate SVG for a Font Awesome icon.
|
||||
|
||||
```rust
|
||||
use dioxus::prelude::*;
|
||||
use dioxus_free_icons::icons::fa_brands_icons::FaRust;
|
||||
use dioxus_free_icons::Icon;
|
||||
|
||||
fn RustIcon() -> Element {
|
||||
rsx!(
|
||||
Icon {
|
||||
width: 30,
|
||||
height: 30,
|
||||
fill: "black",
|
||||
icon: FaRust,
|
||||
}
|
||||
)
|
||||
}
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
This project is licensed under the MIT license.
|
||||
|
||||
### Icon
|
||||
|
||||
Icon Library|License|Version
|
||||
---|---|---
|
||||
[Bootstrap Icons](https://icons.getbootstrap.com/)|[MIT License](https://github.com/twbs/icons/blob/main/LICENSE.md)| [1.8.3](https://github.com/twbs/icons/tree/v1.8.3)
|
||||
[Codicons](https://microsoft.github.io/vscode-codicons/dist/codicon.html)|[MIT License](https://github.com/microsoft/vscode-codicons/blob/main/LICENSE-CODE) & [CC BY 4.0 License](https://github.com/microsoft/vscode-codicons/blob/main/LICENSE) | [0.0.36](https://github.com/microsoft/vscode-codicons/tree/0.0.36)
|
||||
[Feather](https://feathericons.com/)|[MIT License](https://github.com/feathericons/feather/blob/master/LICENSE)| [4.29.0](https://github.com/feathericons/feather/tree/v4.29.0)
|
||||
[Font Awesome](https://fontawesome.com/)|[CC BY 4.0 License](https://creativecommons.org/licenses/by/4.0/)| [7.1.0](https://github.com/FortAwesome/Font-Awesome/tree/7.1.0)
|
||||
[Heroicons](https://heroicons.com/)|[MIT License](https://github.com/tailwindlabs/heroicons/blob/master/LICENSE)| [1.0.6](https://github.com/tailwindlabs/heroicons/tree/v1.0.6)
|
||||
[Ionicons](https://ionic.io/ionicons)|[MIT License](https://github.com/ionic-team/ionicons/blob/main/LICENSE)| [6.0.2](https://github.com/ionic-team/ionicons/tree/v6.0.2)
|
||||
[Lucide](https://lucide.dev)|[ISC License](https://github.com/lucide-icons/lucide/blob/main/LICENSE)| [0.555.0](https://github.com/lucide-icons/lucide/tree/v0.555.0)
|
||||
[Material Design icons](https://developers.google.com/fonts/docs/material_icons)|[Apache License 2.0](https://github.com/google/material-design-icons/blob/master/LICENSE)| [4.0.0](https://github.com/google/material-design-icons/tree/4.0.0)
|
||||
[Octicons](https://primer.style/octicons/)|[MIT License](https://github.com/primer/octicons/blob/main/LICENSE)| [17.3.0](https://github.com/primer/octicons/tree/v17.3.0)
|
||||
|
||||
## Contribution
|
||||
|
||||
The project welcomes all contributions from anyone willing to work in good faith with other contributors and the community.
|
||||
In particular, contributions regarding support for other free icons such as Material Design icons or Ionicons are welcome.
|
||||
This library aims to be a react-icons-like library for dioxus projects.
|
||||
|
||||
### Development
|
||||
|
||||
```sh
|
||||
// generate icon files
|
||||
cd packages/codegen
|
||||
cargo run
|
||||
```
|
||||
|
||||
### Preview
|
||||
|
||||
```sh
|
||||
cd packages/exmaple
|
||||
cargo install dioxus-cli
|
||||
dx serve
|
||||
```
|
||||
|
||||
### Update icons
|
||||
|
||||
1. checkout a new tag in the icon resource submodule
|
||||
2. create new icon files
|
||||
3. Update README.md and check the LICENSE
|
||||
13
dioxus-free-icons/packages/codegen/Cargo.toml
Normal file
13
dioxus-free-icons/packages/codegen/Cargo.toml
Normal file
@@ -0,0 +1,13 @@
|
||||
[package]
|
||||
name = "dioxus-fontawesome-examples"
|
||||
version = "0.2.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
codegen = "0.1.3"
|
||||
heck = "0.4.0"
|
||||
regex = "1.6.0"
|
||||
scraper = "0.13.0"
|
||||
walkdir = "2.3.2"
|
||||
215
dioxus-free-icons/packages/codegen/src/create_icon_file.rs
Normal file
215
dioxus-free-icons/packages/codegen/src/create_icon_file.rs
Normal file
@@ -0,0 +1,215 @@
|
||||
use std::fs;
|
||||
use std::fs::File;
|
||||
use std::io::Write;
|
||||
use std::path::PathBuf;
|
||||
use std::{ffi::OsStr, path::Path};
|
||||
|
||||
use heck::ToSnakeCase;
|
||||
use heck::ToUpperCamelCase;
|
||||
use regex::Regex;
|
||||
use scraper::node::Element;
|
||||
use scraper::ElementRef;
|
||||
use scraper::Html;
|
||||
use walkdir::WalkDir;
|
||||
|
||||
const ICON_TEMPLATE: &str = r#"#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct {ICON_NAME};
|
||||
impl IconShape for {ICON_NAME} {
|
||||
fn view_box(&self) -> &str {
|
||||
"{VIEW_BOX}"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"{XMLNS}"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
({FILL_COLOR}, {STROKE_COLOR}, {STROKE_WIDTH})
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"{STROKE_LINECAP}"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"{STROKE_LINEJOIN}"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
{CHILD_ELEMENTS}
|
||||
}
|
||||
}
|
||||
}
|
||||
"#;
|
||||
|
||||
pub fn create_icon_file(svg_path: &str, output_path: &str, icon_prefix: &str) {
|
||||
let files = collect_svg_files(svg_path, icon_prefix);
|
||||
|
||||
let icon_file = files
|
||||
.into_iter()
|
||||
.map(|file| {
|
||||
let svg_str = fs::read_to_string(&file).unwrap();
|
||||
let fragment = Html::parse_fragment(&svg_str);
|
||||
|
||||
let elements = fragment
|
||||
.tree
|
||||
.nodes()
|
||||
.filter_map(|node| {
|
||||
if node.value().is_element() {
|
||||
let element = ElementRef::wrap(node).unwrap().value();
|
||||
if !element.attrs.is_empty() {
|
||||
return Some(element);
|
||||
}
|
||||
}
|
||||
None
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
let svg_element = &elements[0];
|
||||
let svg_child_elements = &elements[1..];
|
||||
let icon_name = icon_name(&file, icon_prefix);
|
||||
let (view_box, xmlns) = extract_svg_attrs(svg_element);
|
||||
let child_elements = extract_svg_child_elements(svg_child_elements, icon_prefix);
|
||||
let (fill_color, stroke_color, stroke_width) = extract_svg_colors(icon_prefix);
|
||||
let stroke_linecap = extract_stroke_linecap(icon_prefix);
|
||||
let stroke_linejoin = extract_stroke_linejoin(icon_prefix);
|
||||
|
||||
ICON_TEMPLATE
|
||||
.replace("{ICON_NAME}", &format!("{}{}", icon_prefix, &icon_name))
|
||||
.replace("{VIEW_BOX}", &view_box)
|
||||
.replace("{XMLNS}", &xmlns)
|
||||
.replace("{CHILD_ELEMENTS}", &child_elements)
|
||||
.replace("{FILL_COLOR}", &fill_color)
|
||||
.replace("{STROKE_COLOR}", &stroke_color)
|
||||
.replace("{STROKE_WIDTH}", &stroke_width)
|
||||
.replace("{STROKE_LINECAP}", &stroke_linecap)
|
||||
.replace("{STROKE_LINEJOIN}", &stroke_linejoin)
|
||||
})
|
||||
.collect::<Vec<_>>()
|
||||
.join("\n");
|
||||
|
||||
// write to file
|
||||
let mut file = File::create(output_path).unwrap();
|
||||
file.write_all(
|
||||
format!(
|
||||
"{}\n\n{}",
|
||||
"use super::super::IconShape;\nuse dioxus::prelude::*;", icon_file
|
||||
)
|
||||
.as_bytes(),
|
||||
)
|
||||
.unwrap();
|
||||
file.flush().unwrap();
|
||||
}
|
||||
|
||||
fn collect_svg_files(svg_path: &str, icon_prefix: &str) -> Vec<PathBuf> {
|
||||
let dir_entries = WalkDir::new(svg_path)
|
||||
.sort_by_file_name()
|
||||
.into_iter()
|
||||
.filter_map(|e| e.ok())
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
dir_entries
|
||||
.into_iter()
|
||||
.filter(|e| match icon_prefix {
|
||||
"Go" => {
|
||||
let re = Regex::new(r".*-16.svg$").unwrap();
|
||||
return re.is_match(e.path().to_str().unwrap());
|
||||
}
|
||||
"Md" => {
|
||||
let split_vec = e.path().components().collect::<Vec<_>>();
|
||||
return split_vec.iter().any(|c| c.as_os_str() == "materialicons")
|
||||
&& e.file_name().to_str().unwrap() == "24px.svg";
|
||||
}
|
||||
_ => return e.path().extension() == Some(OsStr::new("svg")),
|
||||
})
|
||||
.map(|dir| PathBuf::from(dir.path()))
|
||||
.collect::<Vec<_>>()
|
||||
}
|
||||
|
||||
fn icon_name(path: &Path, icon_prefix: &str) -> String {
|
||||
match icon_prefix {
|
||||
"Go" => {
|
||||
let filename = path.file_name().unwrap().to_str().unwrap();
|
||||
let name = filename.split('.').next().unwrap();
|
||||
name.replace("-16", "").to_upper_camel_case()
|
||||
}
|
||||
"Md" => {
|
||||
let split_vec = path.components().collect::<Vec<_>>();
|
||||
let name = split_vec[split_vec.len() - 3];
|
||||
name.as_os_str().to_str().unwrap().to_upper_camel_case()
|
||||
}
|
||||
_ => {
|
||||
let filename = path.file_name().unwrap().to_str().unwrap();
|
||||
let name = filename.split('.').next().unwrap();
|
||||
name.to_upper_camel_case()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn extract_svg_attrs(element: &Element) -> (String, String) {
|
||||
let view_box = element.attr("viewBox").unwrap_or("0 0 16 16");
|
||||
let xmlns = element
|
||||
.attr("xmlns")
|
||||
.unwrap_or("http://www.w3.org/2000/svg");
|
||||
(String::from(view_box), String::from(xmlns))
|
||||
}
|
||||
|
||||
fn extract_svg_colors(icon_prefix: &str) -> (&str, &str, &str) {
|
||||
match icon_prefix {
|
||||
"Fi" => ("\"none\"", "user_color", "\"2\""),
|
||||
"Ld" => ("\"none\"", "user_color", "\"2\""),
|
||||
"Io" => ("user_color", "user_color", "\"0\""),
|
||||
_ => ("user_color", "\"none\"", "\"0\""),
|
||||
}
|
||||
}
|
||||
|
||||
fn extract_stroke_linecap(icon_prefix: &str) -> &str {
|
||||
match icon_prefix {
|
||||
"Ld" => "round",
|
||||
"Fi" => "round",
|
||||
_ => "butt",
|
||||
}
|
||||
}
|
||||
|
||||
fn extract_stroke_linejoin(icon_prefix: &str) -> &str {
|
||||
match icon_prefix {
|
||||
"Ld" => "round",
|
||||
"Fi" => "round",
|
||||
_ => "miter",
|
||||
}
|
||||
}
|
||||
|
||||
fn extract_svg_child_elements(elements: &[&Element], icon_prefix: &str) -> String {
|
||||
let elements = match icon_prefix {
|
||||
"Md" => &elements[1..],
|
||||
_ => elements,
|
||||
};
|
||||
elements
|
||||
.iter()
|
||||
.map(|element| {
|
||||
let tag_name = element.name();
|
||||
let mut element_attrs = element
|
||||
.attrs()
|
||||
.filter_map(|(name, value)| {
|
||||
let value = if icon_prefix == "Io" {
|
||||
value.replace("fill:none;stroke:#000;", "")
|
||||
} else {
|
||||
value.to_string()
|
||||
};
|
||||
let re = Regex::new(r"^data-.*$").unwrap();
|
||||
if !re.is_match(name) && name != "fill" {
|
||||
Some(format!(
|
||||
" {}: \"{}\",",
|
||||
name.to_snake_case(),
|
||||
value
|
||||
))
|
||||
} else {
|
||||
None
|
||||
}
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
element_attrs.sort();
|
||||
let attrs_str = element_attrs.join("\n");
|
||||
" {TAG_NAME} {\n{ATTRS}\n }"
|
||||
.replace("{TAG_NAME}", tag_name)
|
||||
.replace("{ATTRS}", &attrs_str)
|
||||
})
|
||||
.collect::<Vec<_>>()
|
||||
.join("\n")
|
||||
}
|
||||
79
dioxus-free-icons/packages/codegen/src/main.rs
Normal file
79
dioxus-free-icons/packages/codegen/src/main.rs
Normal file
@@ -0,0 +1,79 @@
|
||||
mod create_icon_file;
|
||||
|
||||
fn main() {
|
||||
const OUTPUT_BASE_PATH: &str = "../lib/src/icons";
|
||||
|
||||
// create font awesome icons
|
||||
const FA_SVG_BASE_PATH: &str = "../../icon_resources/font-awesome/svgs";
|
||||
for icon_type in vec!["brands", "regular", "solid"].into_iter() {
|
||||
let svg_path = format!("{}/{}", FA_SVG_BASE_PATH, icon_type);
|
||||
let output_path = format!("{}/fa_{}_icons.rs", OUTPUT_BASE_PATH, icon_type);
|
||||
create_icon_file::create_icon_file(&svg_path, &output_path, "Fa");
|
||||
}
|
||||
|
||||
// create hero icons
|
||||
const HI_SVG_BASE_PATH: &str = "../../icon_resources/heroicons/src";
|
||||
for icon_type in vec!["outline", "solid"].into_iter() {
|
||||
let svg_path = format!("{}/{}", HI_SVG_BASE_PATH, icon_type);
|
||||
let output_path = format!("{}/hi_{}_icons.rs", OUTPUT_BASE_PATH, icon_type);
|
||||
create_icon_file::create_icon_file(&svg_path, &output_path, "Hi");
|
||||
}
|
||||
|
||||
// create ionicons
|
||||
const IO_SVG_BASE_PATH: &str = "../../icon_resources/ionicons/src/svg";
|
||||
let output_path = format!("{}/io_icons.rs", OUTPUT_BASE_PATH);
|
||||
create_icon_file::create_icon_file(IO_SVG_BASE_PATH, &output_path, "Io");
|
||||
|
||||
// create octicons
|
||||
const GO_SVG_BASE_PATH: &str = "../../icon_resources/octicons/icons";
|
||||
let go_output_path = format!("{}/go_icons.rs", OUTPUT_BASE_PATH);
|
||||
create_icon_file::create_icon_file(GO_SVG_BASE_PATH, &go_output_path, "Go");
|
||||
|
||||
// create bootstrap icons
|
||||
const BS_SVG_BASE_PATH: &str = "../../icon_resources/bootstrap/icons";
|
||||
let bs_output_path = format!("{}/bs_icons.rs", OUTPUT_BASE_PATH);
|
||||
create_icon_file::create_icon_file(BS_SVG_BASE_PATH, &bs_output_path, "Bs");
|
||||
|
||||
// create feather icons
|
||||
const FI_SVG_BASE_PATH: &str = "../../icon_resources/feather/icons";
|
||||
let fi_output_path = format!("{}/fi_icons.rs", OUTPUT_BASE_PATH);
|
||||
create_icon_file::create_icon_file(FI_SVG_BASE_PATH, &fi_output_path, "Fi");
|
||||
|
||||
// create feather icons
|
||||
const LD_SVG_BASE_PATH: &str = "../../icon_resources/lucide/icons";
|
||||
let ld_output_path = format!("{}/ld_icons.rs", OUTPUT_BASE_PATH);
|
||||
create_icon_file::create_icon_file(LD_SVG_BASE_PATH, &ld_output_path, "Ld");
|
||||
|
||||
// create material design icons
|
||||
const MI_SVG_BASE_PATH: &str = "../../icon_resources/material-design-icons/src";
|
||||
for icon_type in vec![
|
||||
"action",
|
||||
"alert",
|
||||
"av",
|
||||
"communication",
|
||||
"content",
|
||||
"device",
|
||||
"editor",
|
||||
"file",
|
||||
"hardware",
|
||||
"home",
|
||||
"image",
|
||||
"maps",
|
||||
"navigation",
|
||||
"notification",
|
||||
"places",
|
||||
"social",
|
||||
"toggle",
|
||||
]
|
||||
.into_iter()
|
||||
{
|
||||
let svg_path = format!("{}/{}", MI_SVG_BASE_PATH, icon_type);
|
||||
let output_path = format!("{}/md_{}_icons.rs", OUTPUT_BASE_PATH, icon_type);
|
||||
create_icon_file::create_icon_file(&svg_path, &output_path, "Md");
|
||||
}
|
||||
|
||||
// create vscode-codicons
|
||||
const VS_SVG_BASE_PATH: &str = "../../icon_resources/vscode-codicons/src/icons";
|
||||
let vs_output_path = format!("{}/vsc_icons.rs", OUTPUT_BASE_PATH);
|
||||
create_icon_file::create_icon_file(VS_SVG_BASE_PATH, &vs_output_path, "Vsc");
|
||||
}
|
||||
17
dioxus-free-icons/packages/example/.gitignore
vendored
Normal file
17
dioxus-free-icons/packages/example/.gitignore
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
# Generated by Cargo
|
||||
# will have compiled files and executables
|
||||
/target/
|
||||
|
||||
# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
|
||||
# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
|
||||
Cargo.lock
|
||||
|
||||
# These are backup files generated by rustfmt
|
||||
**/*.rs.bk
|
||||
|
||||
|
||||
# Added by cargo
|
||||
|
||||
/target
|
||||
|
||||
/dist
|
||||
19
dioxus-free-icons/packages/example/Cargo.toml
Normal file
19
dioxus-free-icons/packages/example/Cargo.toml
Normal file
@@ -0,0 +1,19 @@
|
||||
[package]
|
||||
name = "hello-dioxus"
|
||||
version = "0.1.0"
|
||||
authors = ["nissy-dev <nd.12021218@gmail.com>"]
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
dioxus = { workspace = true, features = ["launch", "web"] }
|
||||
dioxus-free-icons = { path = "../lib", features = ["font-awesome-brands"] }
|
||||
|
||||
log = "0.4.6"
|
||||
|
||||
# WebAssembly Debug
|
||||
wasm-logger = "0.2.0"
|
||||
console_error_panic_hook = "0.1.7"
|
||||
|
||||
[profile.release]
|
||||
lto = true
|
||||
opt-level = 's'
|
||||
42
dioxus-free-icons/packages/example/Dioxus.toml
Normal file
42
dioxus-free-icons/packages/example/Dioxus.toml
Normal file
@@ -0,0 +1,42 @@
|
||||
[application]
|
||||
|
||||
# App (Project) Name
|
||||
name = "hello-dioxus"
|
||||
|
||||
# Dioxus App Default Platform
|
||||
# desktop, web, mobile, ssr
|
||||
default_platform = "web"
|
||||
|
||||
# `build` & `serve` dist path
|
||||
out_dir = "dist"
|
||||
|
||||
# resource (public) file folder
|
||||
asset_dir = "public"
|
||||
|
||||
[web.app]
|
||||
|
||||
# HTML title tag content
|
||||
title = "dioxus | ⛺"
|
||||
|
||||
[web.watcher]
|
||||
|
||||
# when watcher trigger, regenerate the `index.html`
|
||||
reload_html = true
|
||||
|
||||
# which files or dirs will be watcher monitoring
|
||||
watch_path = ["src", "public"]
|
||||
|
||||
# include `assets` in web platform
|
||||
[web.resource]
|
||||
|
||||
# CSS style file
|
||||
style = []
|
||||
|
||||
# Javascript code file
|
||||
script = []
|
||||
|
||||
[web.resource.dev]
|
||||
|
||||
# Javascript code file
|
||||
# serve: [dev-server] only
|
||||
script = []
|
||||
21
dioxus-free-icons/packages/example/LICENSE
Normal file
21
dioxus-free-icons/packages/example/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2022-Present Daiki Nishikawa
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
11
dioxus-free-icons/packages/example/README.md
Normal file
11
dioxus-free-icons/packages/example/README.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# Example
|
||||
|
||||
> a template for starting a dioxus project to be used with [dioxus-cli](https://github.com/DioxusLabs/cli)
|
||||
|
||||
## Usage
|
||||
|
||||
#### Start a `dev-server` for the project:
|
||||
|
||||
```
|
||||
dioxus serve
|
||||
```
|
||||
0
dioxus-free-icons/packages/example/public/.gitkeep
Normal file
0
dioxus-free-icons/packages/example/public/.gitkeep
Normal file
28
dioxus-free-icons/packages/example/src/main.rs
Normal file
28
dioxus-free-icons/packages/example/src/main.rs
Normal file
@@ -0,0 +1,28 @@
|
||||
use dioxus::prelude::*;
|
||||
|
||||
use dioxus_free_icons::icons::fa_brands_icons::FaRust;
|
||||
use dioxus_free_icons::Icon;
|
||||
|
||||
fn main() {
|
||||
// init debug tool for WebAssembly
|
||||
wasm_logger::init(wasm_logger::Config::default());
|
||||
console_error_panic_hook::set_once();
|
||||
|
||||
launch(app);
|
||||
}
|
||||
|
||||
fn app() -> Element {
|
||||
rsx! (
|
||||
div {
|
||||
style: "text-align: center;",
|
||||
h1 { "🌗 Dioxus 🚀" }
|
||||
h3 { "Frontend that scales." }
|
||||
p { "Dioxus is a portable, performant, and ergonomic framework for building cross-platform user interfaces in Rust." },
|
||||
Icon {
|
||||
width: 60,
|
||||
height: 60,
|
||||
icon: FaRust,
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
45
dioxus-free-icons/packages/lib/Cargo.toml
Normal file
45
dioxus-free-icons/packages/lib/Cargo.toml
Normal file
@@ -0,0 +1,45 @@
|
||||
[package]
|
||||
name = "dioxus-free-icons"
|
||||
version = "0.10.0"
|
||||
edition = "2021"
|
||||
authors = ["Daiki Nishikawa <nd.12021218@gmail.com>", "Marc Espín <mespinsanz@gmail.com>"]
|
||||
description = "Use free svg icons in your Dioxus projects easily with dioxus-free-icons."
|
||||
license = "MIT"
|
||||
repository = "https://github.com/dioxus-community/dioxus-free-icons"
|
||||
readme = "../../README.md"
|
||||
|
||||
[dependencies]
|
||||
dioxus = { workspace = true }
|
||||
|
||||
[features]
|
||||
font-awesome-brands = []
|
||||
font-awesome-regular = []
|
||||
font-awesome-solid = []
|
||||
bootstrap = []
|
||||
feather = []
|
||||
octicons = []
|
||||
hero-icons-outline = []
|
||||
hero-icons-solid = []
|
||||
ionicons = []
|
||||
lucide = []
|
||||
material-design-icons-action = []
|
||||
material-design-icons-alert = []
|
||||
material-design-icons-av = []
|
||||
material-design-icons-communication = []
|
||||
material-design-icons-content = []
|
||||
material-design-icons-device = []
|
||||
material-design-icons-editor = []
|
||||
material-design-icons-file = []
|
||||
material-design-icons-hardware = []
|
||||
material-design-icons-home = []
|
||||
material-design-icons-image = []
|
||||
material-design-icons-maps = []
|
||||
material-design-icons-navigation = []
|
||||
material-design-icons-notification = []
|
||||
material-design-icons-places = []
|
||||
material-design-icons-social = []
|
||||
material-design-icons-toggle = []
|
||||
codicons = []
|
||||
|
||||
[package.metadata.docs.rs]
|
||||
all-features = true
|
||||
46
dioxus-free-icons/packages/lib/LICENSE
Normal file
46
dioxus-free-icons/packages/lib/LICENSE
Normal file
@@ -0,0 +1,46 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2022-Present Daiki Nishikawa
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
---
|
||||
Icons are taken from the Font Awesome projects,
|
||||
so please check the project license accordingly.
|
||||
|
||||
Bootstrap Icons - https://github.com/twbs/icons
|
||||
License: MIT License https://github.com/twbs/icons/blob/main/LICENSE.md
|
||||
|
||||
Feather - https://feathericons.com/
|
||||
License: MIT https://github.com/feathericons/feather/blob/master/LICENSE
|
||||
|
||||
Font Awesome - https://fontawesome.com/
|
||||
License: CC BY 4.0 License https://fontawesome.com/license/free
|
||||
|
||||
Heroicons - https://heroicons.com/
|
||||
License: MIT License https://github.com/tailwindlabs/heroicons/blob/master/LICENSE
|
||||
|
||||
Ionicons - https://ionic.io/ionicons/
|
||||
License: MIT License https://github.com/ionic-team/ionicons/blob/main/LICENSE
|
||||
|
||||
Material Design icons - https://developers.google.com/fonts/docs/material_icons
|
||||
License: Apache License 2.0 https://github.com/google/material-design-icons/blob/master/LICENSE
|
||||
|
||||
Octicons - https://primer.style/octicons/
|
||||
License: MIT https://github.com/primer/octicons/blob/master/LICENSE
|
||||
65
dioxus-free-icons/packages/lib/src/icon_component.rs
Normal file
65
dioxus-free-icons/packages/lib/src/icon_component.rs
Normal file
@@ -0,0 +1,65 @@
|
||||
use dioxus::prelude::*;
|
||||
|
||||
/// Icon shape trait
|
||||
pub trait IconShape {
|
||||
fn view_box(&self) -> &str;
|
||||
fn xmlns(&self) -> &str;
|
||||
fn child_elements(&self) -> Element;
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
("none", user_color, "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
}
|
||||
|
||||
/// Icon component Props
|
||||
#[derive(PartialEq, Props, Clone)]
|
||||
pub struct IconProps<T: IconShape + Clone + PartialEq + 'static> {
|
||||
/// The icon shape to use.
|
||||
pub icon: T,
|
||||
/// The height of the `<svg>` element. Defaults to 20. Pass None to omit.
|
||||
#[props(default = Some(20))]
|
||||
pub height: Option<u32>,
|
||||
/// The width of the `<svg>` element. Defaults to 20. Pass None to omit.
|
||||
#[props(default = Some(20))]
|
||||
pub width: Option<u32>,
|
||||
/// The color to use for filling the icon. Defaults to "currentColor".
|
||||
#[props(default = "currentColor".to_string())]
|
||||
pub fill: String,
|
||||
/// An class for the `<svg>` element.
|
||||
#[props(default = "".to_string())]
|
||||
pub class: String,
|
||||
/// An accessible, short-text description for the icon.
|
||||
pub title: Option<String>,
|
||||
/// The style of the `<svg>` element.
|
||||
pub style: Option<String>,
|
||||
}
|
||||
|
||||
/// Icon component which generates SVG elements
|
||||
#[allow(non_snake_case)]
|
||||
pub fn Icon<T: IconShape + Clone + PartialEq + 'static>(props: IconProps<T>) -> Element {
|
||||
let (fill, stroke, stroke_width) = props.icon.fill_and_stroke(&props.fill);
|
||||
rsx!(
|
||||
svg {
|
||||
class: "{props.class}",
|
||||
style: props.style,
|
||||
height: props.height.map(|height| height.to_string()),
|
||||
width: props.width.map(|width| width.to_string()),
|
||||
view_box: "{props.icon.view_box()}",
|
||||
xmlns: "{props.icon.xmlns()}",
|
||||
fill,
|
||||
stroke,
|
||||
stroke_width,
|
||||
stroke_linecap: "{props.icon.stroke_linecap()}",
|
||||
stroke_linejoin: "{props.icon.stroke_linejoin()}",
|
||||
if let Some(title_text) = props.title {
|
||||
title { "{title_text}" }
|
||||
}
|
||||
{props.icon.child_elements()}
|
||||
}
|
||||
)
|
||||
}
|
||||
56
dioxus-free-icons/packages/lib/src/icons.rs
Normal file
56
dioxus-free-icons/packages/lib/src/icons.rs
Normal file
@@ -0,0 +1,56 @@
|
||||
#[cfg(feature = "bootstrap")]
|
||||
pub mod bs_icons;
|
||||
#[cfg(feature = "font-awesome-brands")]
|
||||
pub mod fa_brands_icons;
|
||||
#[cfg(feature = "font-awesome-regular")]
|
||||
pub mod fa_regular_icons;
|
||||
#[cfg(feature = "font-awesome-solid")]
|
||||
pub mod fa_solid_icons;
|
||||
#[cfg(feature = "feather")]
|
||||
pub mod fi_icons;
|
||||
#[cfg(feature = "octicons")]
|
||||
pub mod go_icons;
|
||||
#[cfg(feature = "hero-icons-outline")]
|
||||
pub mod hi_outline_icons;
|
||||
#[cfg(feature = "hero-icons-solid")]
|
||||
pub mod hi_solid_icons;
|
||||
#[cfg(feature = "ionicons")]
|
||||
pub mod io_icons;
|
||||
#[cfg(feature = "lucide")]
|
||||
pub mod ld_icons;
|
||||
#[cfg(feature = "material-design-icons-action")]
|
||||
pub mod md_action_icons;
|
||||
#[cfg(feature = "material-design-icons-alert")]
|
||||
pub mod md_alert_icons;
|
||||
#[cfg(feature = "material-design-icons-av")]
|
||||
pub mod md_av_icons;
|
||||
#[cfg(feature = "material-design-icons-communication")]
|
||||
pub mod md_communication_icons;
|
||||
#[cfg(feature = "material-design-icons-content")]
|
||||
pub mod md_content_icons;
|
||||
#[cfg(feature = "material-design-icons-device")]
|
||||
pub mod md_device_icons;
|
||||
#[cfg(feature = "material-design-icons-editor")]
|
||||
pub mod md_editor_icons;
|
||||
#[cfg(feature = "material-design-icons-file")]
|
||||
pub mod md_file_icons;
|
||||
#[cfg(feature = "material-design-icons-hardware")]
|
||||
pub mod md_hardware_icons;
|
||||
#[cfg(feature = "material-design-icons-home")]
|
||||
pub mod md_home_icons;
|
||||
#[cfg(feature = "material-design-icons-image")]
|
||||
pub mod md_image_icons;
|
||||
#[cfg(feature = "material-design-icons-maps")]
|
||||
pub mod md_maps_icons;
|
||||
#[cfg(feature = "material-design-icons-navigation")]
|
||||
pub mod md_navigation_icons;
|
||||
#[cfg(feature = "material-design-icons-notification")]
|
||||
pub mod md_notification_icons;
|
||||
#[cfg(feature = "material-design-icons-places")]
|
||||
pub mod md_places_icons;
|
||||
#[cfg(feature = "material-design-icons-social")]
|
||||
pub mod md_social_icons;
|
||||
#[cfg(feature = "material-design-icons-toggle")]
|
||||
pub mod md_toggle_icons;
|
||||
#[cfg(feature = "codicons")]
|
||||
pub mod vsc_icons;
|
||||
47631
dioxus-free-icons/packages/lib/src/icons/bs_icons.rs
Normal file
47631
dioxus-free-icons/packages/lib/src/icons/bs_icons.rs
Normal file
File diff suppressed because it is too large
Load Diff
14825
dioxus-free-icons/packages/lib/src/icons/fa_brands_icons.rs
Normal file
14825
dioxus-free-icons/packages/lib/src/icons/fa_brands_icons.rs
Normal file
File diff suppressed because one or more lines are too long
7373
dioxus-free-icons/packages/lib/src/icons/fa_regular_icons.rs
Normal file
7373
dioxus-free-icons/packages/lib/src/icons/fa_regular_icons.rs
Normal file
File diff suppressed because it is too large
Load Diff
53570
dioxus-free-icons/packages/lib/src/icons/fa_solid_icons.rs
Normal file
53570
dioxus-free-icons/packages/lib/src/icons/fa_solid_icons.rs
Normal file
File diff suppressed because it is too large
Load Diff
10535
dioxus-free-icons/packages/lib/src/icons/fi_icons.rs
Normal file
10535
dioxus-free-icons/packages/lib/src/icons/fi_icons.rs
Normal file
File diff suppressed because it is too large
Load Diff
7548
dioxus-free-icons/packages/lib/src/icons/go_icons.rs
Normal file
7548
dioxus-free-icons/packages/lib/src/icons/go_icons.rs
Normal file
File diff suppressed because it is too large
Load Diff
7300
dioxus-free-icons/packages/lib/src/icons/hi_outline_icons.rs
Normal file
7300
dioxus-free-icons/packages/lib/src/icons/hi_outline_icons.rs
Normal file
File diff suppressed because it is too large
Load Diff
6982
dioxus-free-icons/packages/lib/src/icons/hi_solid_icons.rs
Normal file
6982
dioxus-free-icons/packages/lib/src/icons/hi_solid_icons.rs
Normal file
File diff suppressed because it is too large
Load Diff
47947
dioxus-free-icons/packages/lib/src/icons/io_icons.rs
Normal file
47947
dioxus-free-icons/packages/lib/src/icons/io_icons.rs
Normal file
File diff suppressed because one or more lines are too long
62452
dioxus-free-icons/packages/lib/src/icons/ld_icons.rs
Normal file
62452
dioxus-free-icons/packages/lib/src/icons/ld_icons.rs
Normal file
File diff suppressed because it is too large
Load Diff
9442
dioxus-free-icons/packages/lib/src/icons/md_action_icons.rs
Normal file
9442
dioxus-free-icons/packages/lib/src/icons/md_action_icons.rs
Normal file
File diff suppressed because it is too large
Load Diff
170
dioxus-free-icons/packages/lib/src/icons/md_alert_icons.rs
Normal file
170
dioxus-free-icons/packages/lib/src/icons/md_alert_icons.rs
Normal file
@@ -0,0 +1,170 @@
|
||||
use super::super::IconShape;
|
||||
use dioxus::prelude::*;
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdAddAlert;
|
||||
impl IconShape for MdAddAlert {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M10.01 21.01c0 1.1.89 1.99 1.99 1.99s1.99-.89 1.99-1.99h-3.98zm8.87-4.19V11c0-3.25-2.25-5.97-5.29-6.69v-.72C13.59 2.71 12.88 2 12 2s-1.59.71-1.59 1.59v.72C7.37 5.03 5.12 7.75 5.12 11v5.82L3 18.94V20h18v-1.06l-2.12-2.12zM16 13.01h-3v3h-2v-3H8V11h3V8h2v3h3v2.01z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdAutoDelete;
|
||||
impl IconShape for MdAutoDelete {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
polygon {
|
||||
points: "15,2 11.5,2 10.5,1 5.5,1 4.5,2 1,2 1,4 15,4",
|
||||
}
|
||||
path {
|
||||
d: "M16,9c-0.7,0-1.37,0.1-2,0.29V5H2v12c0,1.1,0.9,2,2,2h5.68c1.12,2.36,3.53,4,6.32,4c3.87,0,7-3.13,7-7 C23,12.13,19.87,9,16,9z M16,21c-2.76,0-5-2.24-5-5s2.24-5,5-5s5,2.24,5,5S18.76,21,16,21z",
|
||||
}
|
||||
polygon {
|
||||
points: "16.5,12 15,12 15,17 18.6,19.1 19.4,17.9 16.5,16.2",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdError;
|
||||
impl IconShape for MdError {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdErrorOutline;
|
||||
impl IconShape for MdErrorOutline {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdNotificationImportant;
|
||||
impl IconShape for MdNotificationImportant {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M18 16v-5c0-3.07-1.64-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68C7.63 5.36 6 7.92 6 11v5l-2 2v1h16v-1l-2-2zm-5 0h-2v-2h2v2zm0-4h-2V8h2v4zm-1 10c1.1 0 2-.9 2-2h-4c0 1.1.89 2 2 2z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdWarning;
|
||||
impl IconShape for MdWarning {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
3166
dioxus-free-icons/packages/lib/src/icons/md_av_icons.rs
Normal file
3166
dioxus-free-icons/packages/lib/src/icons/md_av_icons.rs
Normal file
File diff suppressed because it is too large
Load Diff
2418
dioxus-free-icons/packages/lib/src/icons/md_communication_icons.rs
Normal file
2418
dioxus-free-icons/packages/lib/src/icons/md_communication_icons.rs
Normal file
File diff suppressed because it is too large
Load Diff
1903
dioxus-free-icons/packages/lib/src/icons/md_content_icons.rs
Normal file
1903
dioxus-free-icons/packages/lib/src/icons/md_content_icons.rs
Normal file
File diff suppressed because it is too large
Load Diff
1720
dioxus-free-icons/packages/lib/src/icons/md_device_icons.rs
Normal file
1720
dioxus-free-icons/packages/lib/src/icons/md_device_icons.rs
Normal file
File diff suppressed because it is too large
Load Diff
2371
dioxus-free-icons/packages/lib/src/icons/md_editor_icons.rs
Normal file
2371
dioxus-free-icons/packages/lib/src/icons/md_editor_icons.rs
Normal file
File diff suppressed because it is too large
Load Diff
818
dioxus-free-icons/packages/lib/src/icons/md_file_icons.rs
Normal file
818
dioxus-free-icons/packages/lib/src/icons/md_file_icons.rs
Normal file
@@ -0,0 +1,818 @@
|
||||
use super::super::IconShape;
|
||||
use dioxus::prelude::*;
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdApproval;
|
||||
impl IconShape for MdApproval {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M4 16v6h16v-6c0-1.1-.9-2-2-2H6c-1.1 0-2 .9-2 2zm14 2H6v-2h12v2zM12 2C9.24 2 7 4.24 7 7l5 7 5-7c0-2.76-2.24-5-5-5zm0 9L9 7c0-1.66 1.34-3 3-3s3 1.34 3 3l-3 4z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdAttachEmail;
|
||||
impl IconShape for MdAttachEmail {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M21,10V4c0-1.1-0.9-2-2-2H3C1.9,2,1.01,2.9,1.01,4L1,16c0,1.1,0.9,2,2,2h11v-5c0-1.66,1.34-3,3-3H21z M11,11L3,6V4l8,5 l8-5v2L11,11z",
|
||||
}
|
||||
path {
|
||||
d: "M21,14v4c0,1.1-0.9,2-2,2s-2-0.9-2-2v-4.5c0-0.28,0.22-0.5,0.5-0.5s0.5,0.22,0.5,0.5V18h2v-4.5c0-1.38-1.12-2.5-2.5-2.5 S15,12.12,15,13.5V18c0,2.21,1.79,4,4,4s4-1.79,4-4v-4H21z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdAttachment;
|
||||
impl IconShape for MdAttachment {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M2 12.5C2 9.46 4.46 7 7.5 7H18c2.21 0 4 1.79 4 4s-1.79 4-4 4H9.5C8.12 15 7 13.88 7 12.5S8.12 10 9.5 10H17v2H9.41c-.55 0-.55 1 0 1H18c1.1 0 2-.9 2-2s-.9-2-2-2H7.5C5.57 9 4 10.57 4 12.5S5.57 16 7.5 16H17v2H7.5C4.46 18 2 15.54 2 12.5z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdCloud;
|
||||
impl IconShape for MdCloud {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdCloudCircle;
|
||||
impl IconShape for MdCloudCircle {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm4.5 14H8c-1.66 0-3-1.34-3-3s1.34-3 3-3l.14.01C8.58 8.28 10.13 7 12 7c2.21 0 4 1.79 4 4h.5c1.38 0 2.5 1.12 2.5 2.5S17.88 16 16.5 16z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdCloudDone;
|
||||
impl IconShape for MdCloudDone {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM10 17l-3.5-3.5 1.41-1.41L10 14.17 15.18 9l1.41 1.41L10 17z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdCloudDownload;
|
||||
impl IconShape for MdCloudDownload {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM17 13l-5 5-5-5h3V9h4v4h3z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdCloudOff;
|
||||
impl IconShape for MdCloudOff {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M19.35 10.04C18.67 6.59 15.64 4 12 4c-1.48 0-2.85.43-4.01 1.17l1.46 1.46C10.21 6.23 11.08 6 12 6c3.04 0 5.5 2.46 5.5 5.5v.5H19c1.66 0 3 1.34 3 3 0 1.13-.64 2.11-1.56 2.62l1.45 1.45C23.16 18.16 24 16.68 24 15c0-2.64-2.05-4.78-4.65-4.96zM3 5.27l2.75 2.74C2.56 8.15 0 10.77 0 14c0 3.31 2.69 6 6 6h11.73l2 2L21 20.73 4.27 4 3 5.27zM7.73 10l8 8H6c-2.21 0-4-1.79-4-4s1.79-4 4-4h1.73z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdCloudQueue;
|
||||
impl IconShape for MdCloudQueue {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM19 18H6c-2.21 0-4-1.79-4-4s1.79-4 4-4h.71C7.37 7.69 9.48 6 12 6c3.04 0 5.5 2.46 5.5 5.5v.5H19c1.66 0 3 1.34 3 3s-1.34 3-3 3z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdCloudUpload;
|
||||
impl IconShape for MdCloudUpload {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM14 13v4h-4v-4H7l5-5 5 5h-3z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdCreateNewFolder;
|
||||
impl IconShape for MdCreateNewFolder {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M20 6h-8l-2-2H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zm-1 8h-3v3h-2v-3h-3v-2h3V9h2v3h3v2z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdDriveFileMove;
|
||||
impl IconShape for MdDriveFileMove {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M20 6h-8l-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm-6 12v-3h-4v-4h4V8l5 5-5 5z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdDriveFileMoveOutline;
|
||||
impl IconShape for MdDriveFileMoveOutline {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 12H4V8h16v10zm-8.01-9l-1.41 1.41L12.16 12H8v2h4.16l-1.59 1.59L11.99 17 16 13.01 11.99 9z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdDriveFileRenameOutline;
|
||||
impl IconShape for MdDriveFileRenameOutline {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M18.41 5.8L17.2 4.59c-.78-.78-2.05-.78-2.83 0l-2.68 2.68L3 15.96V20h4.04l8.74-8.74 2.63-2.63c.79-.78.79-2.05 0-2.83zM6.21 18H5v-1.21l8.66-8.66 1.21 1.21L6.21 18zM11 20l4-4h6v4H11z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdDriveFolderUpload;
|
||||
impl IconShape for MdDriveFolderUpload {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 12H4V8h16v10zM8 13.01l1.41 1.41L11 12.84V17h2v-4.16l1.59 1.59L16 13.01 12.01 9 8 13.01z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdFileDownload;
|
||||
impl IconShape for MdFileDownload {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdFileDownloadDone;
|
||||
impl IconShape for MdFileDownloadDone {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M5 18h14v2H5v-2zm4.6-2.7L5 10.7l2-1.9 2.6 2.6L17 4l2 2-9.4 9.3z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdFileUpload;
|
||||
impl IconShape for MdFileUpload {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M9 16h6v-6h4l-7-7-7 7h4zm-4 2h14v2H5z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdFolder;
|
||||
impl IconShape for MdFolder {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M10 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8l-2-2z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdFolderOpen;
|
||||
impl IconShape for MdFolderOpen {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 12H4V8h16v10z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdFolderShared;
|
||||
impl IconShape for MdFolderShared {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm-5 3c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2zm4 8h-8v-1c0-1.33 2.67-2 4-2s4 .67 4 2v1z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdGridView;
|
||||
impl IconShape for MdGridView {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M0 0h24v24H0z",
|
||||
}
|
||||
path {
|
||||
d: "M3 3v8h8V3H3zm6 6H5V5h4v4zm-6 4v8h8v-8H3zm6 6H5v-4h4v4zm4-16v8h8V3h-8zm6 6h-4V5h4v4zm-6 4v8h8v-8h-8zm6 6h-4v-4h4v4z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdRequestQuote;
|
||||
impl IconShape for MdRequestQuote {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M14,2H6C4.9,2,4.01,2.9,4.01,4L4,20c0,1.1,0.89,2,1.99,2H18c1.1,0,2-0.9,2-2V8L14,2z M15,12h-4v1h3c0.55,0,1,0.45,1,1v3 c0,0.55-0.45,1-1,1h-1v1h-2v-1H9v-2h4v-1h-3c-0.55,0-1-0.45-1-1v-3c0-0.55,0.45-1,1-1h1V9h2v1h2V12z M13,8V3.5L17.5,8H13z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdRuleFolder;
|
||||
impl IconShape for MdRuleFolder {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M20,6h-8l-2-2H4C2.9,4,2.01,4.9,2.01,6L2,18c0,1.1,0.9,2,2,2h16c1.1,0,2-0.9,2-2V8C22,6.9,21.1,6,20,6z M7.83,16L5,13.17 l1.41-1.41l1.41,1.41l3.54-3.54l1.41,1.41L7.83,16z M17.41,13L19,14.59L17.59,16L16,14.41L14.41,16L13,14.59L14.59,13L13,11.41 L14.41,10L16,11.59L17.59,10L19,11.41L17.41,13z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdSnippetFolder;
|
||||
impl IconShape for MdSnippetFolder {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M15.88,10.5l1.62,1.62v3.38l-3,0v-5H15.88z M22,8v10c0,1.1-0.9,2-2,2H4c-1.1,0-2-0.9-2-2L2.01,6C2.01,4.9,2.9,4,4,4h6l2,2 h8C21.1,6,22,6.9,22,8z M19,11.5L16.5,9H13v8l6,0V11.5z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdTextSnippet;
|
||||
impl IconShape for MdTextSnippet {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M20.41,8.41l-4.83-4.83C15.21,3.21,14.7,3,14.17,3H5C3.9,3,3,3.9,3,5v14c0,1.1,0.9,2,2,2h14c1.1,0,2-0.9,2-2V9.83 C21,9.3,20.79,8.79,20.41,8.41z M7,7h7v2H7V7z M17,17H7v-2h10V17z M17,13H7v-2h10V13z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdTopic;
|
||||
impl IconShape for MdTopic {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M20,6h-8l-2-2H4C2.9,4,2.01,4.9,2.01,6L2,18c0,1.1,0.9,2,2,2h16c1.1,0,2-0.9,2-2V8C22,6.9,21.1,6,20,6z M14,16H6v-2h8V16z M18,12H6v-2h12V12z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdUploadFile;
|
||||
impl IconShape for MdUploadFile {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm4 18H6V4h7v5h5v11zM8 15.01l1.41 1.41L11 14.84V19h2v-4.16l1.59 1.59L16 15.01 12.01 11z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdWorkspacesFilled;
|
||||
impl IconShape for MdWorkspacesFilled {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M6 13c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4zm6-10C9.8 3 8 4.8 8 7s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4zm6 10c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdWorkspacesOutline;
|
||||
impl IconShape for MdWorkspacesOutline {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M6 15c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2m0-2c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4zm6-8c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2m0-2C9.8 3 8 4.8 8 7s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4zm6 12c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2m0-2c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
1501
dioxus-free-icons/packages/lib/src/icons/md_hardware_icons.rs
Normal file
1501
dioxus-free-icons/packages/lib/src/icons/md_hardware_icons.rs
Normal file
File diff suppressed because it is too large
Load Diff
56
dioxus-free-icons/packages/lib/src/icons/md_home_icons.rs
Normal file
56
dioxus-free-icons/packages/lib/src/icons/md_home_icons.rs
Normal file
@@ -0,0 +1,56 @@
|
||||
use super::super::IconShape;
|
||||
use dioxus::prelude::*;
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdSensorDoor;
|
||||
impl IconShape for MdSensorDoor {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M18,2H6C4.9,2,4,2.9,4,4v18h16V4C20,2.9,19.1,2,18,2z M15.5,13.5c-0.83,0-1.5-0.67-1.5-1.5s0.67-1.5,1.5-1.5 S17,11.17,17,12S16.33,13.5,15.5,13.5z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdSensorWindow;
|
||||
impl IconShape for MdSensorWindow {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M18,4v16H6V4H18 M18,2H6C4.9,2,4,2.9,4,4v16c0,1.1,0.9,2,2,2h12c1.1,0,2-0.9,2-2V4C20,2.9,19.1,2,18,2L18,2z M7,19h10v-6H7 V19z M10,10h4v1h3V5H7v6h3V10z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
5941
dioxus-free-icons/packages/lib/src/icons/md_image_icons.rs
Normal file
5941
dioxus-free-icons/packages/lib/src/icons/md_image_icons.rs
Normal file
File diff suppressed because it is too large
Load Diff
4214
dioxus-free-icons/packages/lib/src/icons/md_maps_icons.rs
Normal file
4214
dioxus-free-icons/packages/lib/src/icons/md_maps_icons.rs
Normal file
File diff suppressed because it is too large
Load Diff
1445
dioxus-free-icons/packages/lib/src/icons/md_navigation_icons.rs
Normal file
1445
dioxus-free-icons/packages/lib/src/icons/md_navigation_icons.rs
Normal file
File diff suppressed because it is too large
Load Diff
1703
dioxus-free-icons/packages/lib/src/icons/md_notification_icons.rs
Normal file
1703
dioxus-free-icons/packages/lib/src/icons/md_notification_icons.rs
Normal file
File diff suppressed because it is too large
Load Diff
1879
dioxus-free-icons/packages/lib/src/icons/md_places_icons.rs
Normal file
1879
dioxus-free-icons/packages/lib/src/icons/md_places_icons.rs
Normal file
File diff suppressed because it is too large
Load Diff
2912
dioxus-free-icons/packages/lib/src/icons/md_social_icons.rs
Normal file
2912
dioxus-free-icons/packages/lib/src/icons/md_social_icons.rs
Normal file
File diff suppressed because it is too large
Load Diff
298
dioxus-free-icons/packages/lib/src/icons/md_toggle_icons.rs
Normal file
298
dioxus-free-icons/packages/lib/src/icons/md_toggle_icons.rs
Normal file
@@ -0,0 +1,298 @@
|
||||
use super::super::IconShape;
|
||||
use dioxus::prelude::*;
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdCheckBox;
|
||||
impl IconShape for MdCheckBox {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdCheckBoxOutlineBlank;
|
||||
impl IconShape for MdCheckBoxOutlineBlank {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdIndeterminateCheckBox;
|
||||
impl IconShape for MdIndeterminateCheckBox {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M19,3H5C3.9,3,3,3.9,3,5v14c0,1.1,0.9,2,2,2h14c1.1,0,2-0.9,2-2V5C21,3.9,20.1,3,19,3z M17,13H7v-2h10V13z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdRadioButtonChecked;
|
||||
impl IconShape for MdRadioButtonChecked {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M12 7c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zm0-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdRadioButtonUnchecked;
|
||||
impl IconShape for MdRadioButtonUnchecked {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdStar;
|
||||
impl IconShape for MdStar {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M0 0h24v24H0z",
|
||||
}
|
||||
path {
|
||||
d: "M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdStarBorder;
|
||||
impl IconShape for MdStarBorder {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M22 9.24l-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03L22 9.24zM12 15.4l-3.76 2.27 1-4.28-3.32-2.88 4.38-.38L12 6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28L12 15.4z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdStarHalf;
|
||||
impl IconShape for MdStarHalf {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M22,9.24l-7.19-0.62L12,2L9.19,8.63L2,9.24l5.46,4.73L5.82,21L12,17.27L18.18,21l-1.63-7.03L22,9.24z M12,15.4V6.1 l1.71,4.04l4.38,0.38l-3.32,2.88l1,4.28L12,15.4z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdStarOutline;
|
||||
impl IconShape for MdStarOutline {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdToggleOff;
|
||||
impl IconShape for MdToggleOff {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M17 7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h10c2.76 0 5-2.24 5-5s-2.24-5-5-5zM7 15c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
pub struct MdToggleOn;
|
||||
impl IconShape for MdToggleOn {
|
||||
fn view_box(&self) -> &str {
|
||||
"0 0 24 24"
|
||||
}
|
||||
fn xmlns(&self) -> &str {
|
||||
"http://www.w3.org/2000/svg"
|
||||
}
|
||||
fn fill_and_stroke<'a>(&self, user_color: &'a str) -> (&'a str, &'a str, &'a str) {
|
||||
(user_color, "none", "0")
|
||||
}
|
||||
fn stroke_linecap(&self) -> &str {
|
||||
"butt"
|
||||
}
|
||||
fn stroke_linejoin(&self) -> &str {
|
||||
"miter"
|
||||
}
|
||||
fn child_elements(&self) -> Element {
|
||||
rsx! {
|
||||
path {
|
||||
d: "M17 7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h10c2.76 0 5-2.24 5-5s-2.24-5-5-5zm0 8c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3z",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
14164
dioxus-free-icons/packages/lib/src/icons/vsc_icons.rs
Normal file
14164
dioxus-free-icons/packages/lib/src/icons/vsc_icons.rs
Normal file
File diff suppressed because one or more lines are too long
27
dioxus-free-icons/packages/lib/src/lib.rs
Normal file
27
dioxus-free-icons/packages/lib/src/lib.rs
Normal file
@@ -0,0 +1,27 @@
|
||||
//! # dioxus-free-icons
|
||||
//!
|
||||
//! Use free svg icons in your Dioxus projects easily with dioxus-free-icons.
|
||||
//! This library provides Icon component, which will generate SVG for a Font Awesome icon.
|
||||
//!
|
||||
//! Basic usage:
|
||||
//! ```ignore
|
||||
//! use dioxus::prelude::*;
|
||||
//! use dioxus_free_icons::icons::fa_brands_icons::FaRust;
|
||||
//! use dioxus_free_icons::Icon;
|
||||
//!
|
||||
//! fn RustIcon() -> Element {
|
||||
//! rsx!(
|
||||
//! Icon {
|
||||
//! width: 30,
|
||||
//! height: 30,
|
||||
//! fill: "black",
|
||||
//! icon: Icon::FaRust,
|
||||
//! }
|
||||
//! )
|
||||
//! }
|
||||
//! ```
|
||||
mod icon_component;
|
||||
|
||||
/// a collections of free icons
|
||||
pub mod icons;
|
||||
pub use crate::icon_component::{Icon, IconProps, IconShape};
|
||||
48
dioxus-i18n/.github/release-drafter.yml
vendored
Normal file
48
dioxus-i18n/.github/release-drafter.yml
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
name-template: "Release v$RESOLVED_VERSION 🦀"
|
||||
tag-template: "v$RESOLVED_VERSION"
|
||||
categories:
|
||||
- title: "🚀 Features"
|
||||
label: "feature"
|
||||
- title: "🐛 Bug Fixes"
|
||||
label: "bug"
|
||||
- title: "♻️ Refactor"
|
||||
label: "refactor"
|
||||
- title: "📝 Documentation"
|
||||
label: "documentation"
|
||||
- title: "🧰 Maintenance"
|
||||
labels:
|
||||
- "chore"
|
||||
- "dependencies"
|
||||
change-template: "- $TITLE @$AUTHOR (#$NUMBER)"
|
||||
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
||||
version-resolver:
|
||||
major:
|
||||
labels:
|
||||
- "major"
|
||||
minor:
|
||||
labels:
|
||||
- "minor"
|
||||
patch:
|
||||
labels:
|
||||
- "patch"
|
||||
default: patch
|
||||
template: |
|
||||
## Changes
|
||||
|
||||
$CHANGES
|
||||
autolabeler:
|
||||
- label: feature
|
||||
branch:
|
||||
- "/^feat(ure)?[/-].+/"
|
||||
- label: bug
|
||||
branch:
|
||||
- "/^fix[/-].+/"
|
||||
- label: refactor
|
||||
branch:
|
||||
- "/(refactor|refactoring)[/-].+/"
|
||||
- label: documentation
|
||||
branch:
|
||||
- "/doc(s|umentation)[/-].+/"
|
||||
- label: chore
|
||||
branch:
|
||||
- "/^chore[/-].+/"
|
||||
19
dioxus-i18n/.github/workflows/publish.yml
vendored
Normal file
19
dioxus-i18n/.github/workflows/publish.yml
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
name: Cargo Publish
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
env:
|
||||
CARGO_TERM_COLOR: always
|
||||
|
||||
jobs:
|
||||
publish:
|
||||
name: Publish to crate.io
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- run: cargo publish
|
||||
env:
|
||||
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
|
||||
19
dioxus-i18n/.github/workflows/release-drafter.yml
vendored
Normal file
19
dioxus-i18n/.github/workflows/release-drafter.yml
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
name: Release Drafter
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
pull_request:
|
||||
types: [opened, reopened, synchronize]
|
||||
|
||||
jobs:
|
||||
update_release_draft:
|
||||
permissions:
|
||||
contents: write
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: release-drafter/release-drafter@v5
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
40
dioxus-i18n/.github/workflows/test_runs.yml
vendored
Normal file
40
dioxus-i18n/.github/workflows/test_runs.yml
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
name: Test Runs
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
pull_request:
|
||||
types: [opened, reopened, synchronize]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Updates
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install libwebkit2gtk-4.1-dev \
|
||||
build-essential \
|
||||
libxdo-dev \
|
||||
libssl-dev \
|
||||
libayatana-appindicator3-dev \
|
||||
librsvg2-dev \
|
||||
libglib2.0-dev
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Lint
|
||||
run: cargo clippy -- -D warnings
|
||||
|
||||
- name: Test
|
||||
run: cargo test
|
||||
|
||||
- name: Compile
|
||||
run: |
|
||||
rustup target add wasm32-unknown-unknown
|
||||
cargo build --target wasm32-unknown-unknown
|
||||
cargo build --release
|
||||
2
dioxus-i18n/.gitignore
vendored
Normal file
2
dioxus-i18n/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
Cargo.lock
|
||||
/target
|
||||
117
dioxus-i18n/CHANGELOG.md
Normal file
117
dioxus-i18n/CHANGELOG.md
Normal file
@@ -0,0 +1,117 @@
|
||||
# Changelog
|
||||
|
||||
## [0.4.3]
|
||||
|
||||
- [Issue #19](https://github.com/dioxus-community/dioxus-i18n/issues/19) Enable use of "message-id.attribute-id"
|
||||
syntax in the `t!`, `te!`, `tid!` macros in order to extract attribute definition, e.g. `t!("mycomponent.placeholder")`
|
||||
in:
|
||||
```
|
||||
mycomponent = Component Name
|
||||
.placeholder = Some placeholder
|
||||
.aria-text = Some aria text
|
||||
```
|
||||
|
||||
- Added examples for all fluent grammar constructs and configuration variants.
|
||||
|
||||
## [0.4.2] 2025-02-08
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Issue #15](https://github.com/dioxus-community/dioxus-i18n/issues/15) Recent change to t! macro unnecessarily breaks v0.3 code.
|
||||
|
||||
### Amended
|
||||
|
||||
- t! macro amended to use unwrap_or_else rather than panic!.
|
||||
|
||||
- Error messages made consistant across all macros.
|
||||
|
||||
## [0.4.1] 2025-02-02
|
||||
|
||||
### Added
|
||||
|
||||
- New methods (`I18nConfig::with_auto_locales`) to determine supported locales from deep search for translation files.
|
||||
|
||||
- New methods returning `Result<_, Error>` rather than `panic!`, such that:
|
||||
| __`panic!` version__ | __`Result<_, Error>` vesion__ |
|
||||
|-----------------------------------------|------------------------------------------|
|
||||
| `LocaleResource::to_resource_string` | `LocaleResource::try_to_resource_string` |
|
||||
| `I18n::translate` | `I18n::try_translate` |
|
||||
| `I18n::translate_with_args` | `I18n::try_translate_with_args` |
|
||||
| `I18n::set_fallback_language` | `I18n::try_set_fallback_language` |
|
||||
| `I18n::set_language` | `I18n::try_set_language` |
|
||||
| `use_init_i18n` | `try_use_init_i18n` |
|
||||
| `I18nConfig::with_auto_locales` | `I18nConfig::try_with_auto_locales` |
|
||||
|
||||
- New `te!` macro which acts like `t!` but returns `Error`.
|
||||
|
||||
- New `tid!` macro which acts like `t!` but returns the message-id.
|
||||
|
||||
### Change
|
||||
|
||||
- t! macro amended to use `try_translate` and `try_translate_with_args`, but will perform `.expect("..")`
|
||||
and therefore panic! on error. This retains backwards compatibility for this macro.
|
||||
|
||||
- Use of `set_fallback_language` / `try_set_fallback_language` without a corresponding locale
|
||||
translation is treated as an error.
|
||||
|
||||
## [0.4.0] 2025-01-25
|
||||
|
||||
### Added
|
||||
|
||||
- Code:
|
||||
- Doc comments
|
||||
- Module tests for `cargo test`
|
||||
|
||||
- Amended `I18nConfig::with_locale` so that the `Locale` dynamic or static
|
||||
constructors no longer have to be _explicitly_ given.
|
||||
They can be determined implicitly from `(LanguageIdentifier, &str)` or
|
||||
`(LanguageIdentifer, PathBuf)`.
|
||||
|
||||
- Enabled shared 'LocaleResource's, where two dialect can use the same translation file.
|
||||
For example ["en", "en-GB"] share "en-GB.ftl".
|
||||
|
||||
### Changed
|
||||
|
||||
- The translations used are determined when `I18n::set_language` or
|
||||
`I18n::set_fallback_language` is called, and not each time a message is translated.
|
||||
|
||||
- __Fallback handling has changed__. It no longer just uses _fallback_language_ when the message
|
||||
id is missing from the current _locale_. It performs a graceful fallback from
|
||||
_<language>-<region>_ to _<language>_ before using the actual _fallback_ (in fact it
|
||||
falls back along the _<language>-<optionalScript>-<optionalRegion>-<optionalVariants>_
|
||||
hiearchy).
|
||||
|
||||
__Note:__ this is a breaking change which may impact the selected translation.
|
||||
|
||||
- `LocaleResource::to_string` renamed to `LocaleResource::to_resource_string`
|
||||
|
||||
## [0.3.0] 2024-12-10
|
||||
|
||||
- [Dioxus 0.6](https://dioxuslabs.com/) support
|
||||
|
||||
## [0.2.4] 2024-09-11
|
||||
|
||||
- Hide new_dynamic in WASM
|
||||
- New t!() macro
|
||||
|
||||
## [0.2.3] 2024-09-04
|
||||
|
||||
- Support dynamic loading of locales
|
||||
|
||||
## [0.2.2] 2024-09-02
|
||||
|
||||
- Enable macros instead of serde in unic-langid
|
||||
|
||||
## [0.2.1] 2024-09-02
|
||||
|
||||
- Export unic_langid and fluent
|
||||
- Use absolute path to import fluent in the translate macro
|
||||
- Updated freya example
|
||||
|
||||
## [0.2.0] 2024-09-01
|
||||
|
||||
- Now based in the [Fluent Project](https://github.com/projectfluent/fluent-rs)
|
||||
|
||||
## [0.1.0] 2024-08-31
|
||||
|
||||
- Initial release
|
||||
30
dioxus-i18n/Cargo.toml
Normal file
30
dioxus-i18n/Cargo.toml
Normal file
@@ -0,0 +1,30 @@
|
||||
[package]
|
||||
name = "dioxus-i18n"
|
||||
version = "0.5.1"
|
||||
edition = "2021"
|
||||
authors = ["Marc Espín <mespinsanz@gmail.com>"]
|
||||
description = "i18n integration for Dioxus apps based on Fluent Project."
|
||||
license = "MIT"
|
||||
repository = "https://github.com/dioxus-community/dioxus-i18n"
|
||||
readme = "./README.md"
|
||||
categories = ["accessibility", "gui", "localization", "internationalization"]
|
||||
|
||||
[dependencies]
|
||||
dioxus = { git = "https://github.com/matous-volf/dioxus", rev = "627d5ca5b80aeed57c23e253024665f103117f5e", default-features = false, features = [
|
||||
"hooks",
|
||||
"macro",
|
||||
"signals",
|
||||
] }
|
||||
fluent = "0.17"
|
||||
thiserror = "2.0"
|
||||
unic-langid = { version = "0.9", features = ["macros"] }
|
||||
|
||||
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
|
||||
walkdir = "2.5.0"
|
||||
|
||||
[dev-dependencies]
|
||||
dioxus = { git = "https://github.com/matous-volf/dioxus", rev = "627d5ca5b80aeed57c23e253024665f103117f5e", features = ["desktop"] }
|
||||
freya = "0.3"
|
||||
futures = "0.3.31"
|
||||
pretty_assertions = "1.4.1"
|
||||
unic-langid = { version = "0.9.5", features = ["macros"] }
|
||||
20
dioxus-i18n/LICENSE.md
Normal file
20
dioxus-i18n/LICENSE.md
Normal file
@@ -0,0 +1,20 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) Marc Espín Sanz
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
85
dioxus-i18n/README.md
Normal file
85
dioxus-i18n/README.md
Normal file
@@ -0,0 +1,85 @@
|
||||
# dioxus-i18n 🌍
|
||||
|
||||
i18n integration for Dioxus apps based on the [Project Fluent](https://github.com/projectfluent/fluent-rs).
|
||||
|
||||
> This crate used to be in the [Dioxus SDK](https://github.com/DioxusLabs/sdk).
|
||||
|
||||
## Support
|
||||
|
||||
- **Dioxus v0.6** 🧬
|
||||
- Renderers:
|
||||
- [web](https://dioxuslabs.com/learn/0.6/guides/web/),
|
||||
- [desktop](https://dioxuslabs.com/learn/0.6/guides/desktop/),
|
||||
- [freya](https://github.com/marc2332/freya)
|
||||
- Both WASM and native targets
|
||||
|
||||
## Example:
|
||||
|
||||
```ftl
|
||||
# en-US.ftl
|
||||
|
||||
hello = Hello, {$name}!
|
||||
```
|
||||
|
||||
```rs
|
||||
// main.rs
|
||||
|
||||
fn app() -> Element {
|
||||
let i18 = use_init_i18n(|| {
|
||||
I18nConfig::new(langid!("en-US"))
|
||||
// implicit [`Locale`]
|
||||
.with_locale(( // Embed
|
||||
langid!("en-US"),
|
||||
include_str!("./en-US.ftl")
|
||||
))
|
||||
.with_locale(( // Load at launch
|
||||
langid!("es-ES"),
|
||||
PathBuf::from("./es-ES.ftl"),
|
||||
))
|
||||
.with_locale(( // Locales will share duplicated locale_resources
|
||||
langid!("en"), // which is useful to assign a specific region for
|
||||
include_str!("./en-US.ftl") // the primary language
|
||||
))
|
||||
// explicit [`Locale`]
|
||||
.with_locale(Locale::new_static( // Embed
|
||||
langid!("en-US"),
|
||||
include_str!("./en-US.ftl"),
|
||||
))
|
||||
.with_locale(Locale::new_dynamic( // Load at launch
|
||||
langid!("es-ES"),
|
||||
PathBuf::from("./es-ES.ftl"),
|
||||
))
|
||||
});
|
||||
|
||||
rsx!(
|
||||
label { { t!("hello", name: "World") } }
|
||||
)
|
||||
}
|
||||
```
|
||||
|
||||
## Further examples
|
||||
|
||||
The examples folder contains a number of working examples:
|
||||
|
||||
* Desktop examples:
|
||||
* [Dioxus](./examples/dioxus-desktop.rs)
|
||||
* [Freya](./examples/freya.rs)
|
||||
* Configuration variants:
|
||||
* [Auto locales](./examples/config-auto-locales.rs)
|
||||
* [Dynamic (PathBuf)](./examples/config-dynamic-pathbuf.rs)
|
||||
* [Static (include_str!)](./examples/config-static-includestr.rs)
|
||||
* Fluent grammer:
|
||||
* [Application](./examples/fluent-grammar.rs)
|
||||
* [FTL file](./examples/data/fluent/en.ftl)
|
||||
|
||||
## Development
|
||||
|
||||
```bash
|
||||
# Checks clean compile against `#[cfg(not(target_arch = "wasm32"))]`
|
||||
cargo build --target wasm32-unknown-unknown
|
||||
|
||||
# Runs all tests
|
||||
cargo test
|
||||
```
|
||||
|
||||
[MIT License](./LICENSE.md)
|
||||
47
dioxus-i18n/examples/config-auto-locales.rs
Normal file
47
dioxus-i18n/examples/config-auto-locales.rs
Normal file
@@ -0,0 +1,47 @@
|
||||
//! This example demonstrates how to use an auto_locales derived I18nConfig.
|
||||
//! This is useful when you have a lot of locales and you don't want to manually add them.
|
||||
|
||||
use dioxus::prelude::*;
|
||||
use dioxus_i18n::{prelude::*, t};
|
||||
use unic_langid::langid;
|
||||
|
||||
use std::path::PathBuf;
|
||||
|
||||
fn main() {
|
||||
launch(app);
|
||||
}
|
||||
|
||||
#[allow(non_snake_case)]
|
||||
fn Body() -> Element {
|
||||
let mut i18n = i18n();
|
||||
|
||||
let change_to_english = move |_| i18n.set_language(langid!("en-US"));
|
||||
let change_to_spanish = move |_| i18n.set_language(langid!("es-ES"));
|
||||
|
||||
rsx!(
|
||||
button {
|
||||
onclick: change_to_english,
|
||||
label {
|
||||
"English"
|
||||
}
|
||||
}
|
||||
button {
|
||||
onclick: change_to_spanish,
|
||||
label {
|
||||
"Spanish"
|
||||
}
|
||||
}
|
||||
p { { t!("hello_world") } }
|
||||
p { { t!("hello", name: "Dioxus") } }
|
||||
)
|
||||
}
|
||||
|
||||
fn app() -> Element {
|
||||
use_init_i18n(|| {
|
||||
// This initialisation performs a deep search for all locales in the given path.
|
||||
// It IS NOT supported in WASM targets.
|
||||
I18nConfig::new(langid!("en-US")).with_auto_locales(PathBuf::from("./examples/data/i18n/"))
|
||||
});
|
||||
|
||||
rsx!(Body {})
|
||||
}
|
||||
62
dioxus-i18n/examples/config-dynamic-pathbuf.rs
Normal file
62
dioxus-i18n/examples/config-dynamic-pathbuf.rs
Normal file
@@ -0,0 +1,62 @@
|
||||
//! This example demonstrates how to use pathbuf derived I18nConfig.
|
||||
//! This is useful when the path to the translation files is not known at compile time.
|
||||
|
||||
use dioxus::prelude::*;
|
||||
use dioxus_i18n::{prelude::*, t};
|
||||
use unic_langid::langid;
|
||||
|
||||
use std::path::PathBuf;
|
||||
|
||||
fn main() {
|
||||
launch(app);
|
||||
}
|
||||
|
||||
#[allow(non_snake_case)]
|
||||
fn Body() -> Element {
|
||||
let mut i18n = i18n();
|
||||
|
||||
let change_to_english = move |_| i18n.set_language(langid!("en-US"));
|
||||
let change_to_spanish = move |_| i18n.set_language(langid!("es-ES"));
|
||||
|
||||
rsx!(
|
||||
button {
|
||||
onclick: change_to_english,
|
||||
label {
|
||||
"English"
|
||||
}
|
||||
}
|
||||
button {
|
||||
onclick: change_to_spanish,
|
||||
label {
|
||||
"Spanish"
|
||||
}
|
||||
}
|
||||
p { { t!("hello_world") } }
|
||||
p { { t!("hello", name: "Dioxus") } }
|
||||
)
|
||||
}
|
||||
|
||||
fn app() -> Element {
|
||||
use_init_i18n(|| {
|
||||
// This initialisation allows individual translation files to be selected.
|
||||
// The locales can be added with an implicitly derived locale (see config-static-includestr.rs for a comparison)
|
||||
// or using an explicit Locale::new_dynamic call.
|
||||
//
|
||||
// The two examples are functionally equivalent.
|
||||
//
|
||||
// It IS NOT supported in WASM targets.
|
||||
I18nConfig::new(langid!("en-US"))
|
||||
// Implicit...
|
||||
.with_locale((
|
||||
langid!("es-ES"),
|
||||
PathBuf::from("./examples/data/i18n/es-ES.ftl"),
|
||||
))
|
||||
// Explicit...
|
||||
.with_locale(Locale::new_dynamic(
|
||||
langid!("en-US"),
|
||||
PathBuf::from("./examples/data/i18n/en-US.ftl"),
|
||||
))
|
||||
});
|
||||
|
||||
rsx!(Body {})
|
||||
}
|
||||
57
dioxus-i18n/examples/config-static-includestr.rs
Normal file
57
dioxus-i18n/examples/config-static-includestr.rs
Normal file
@@ -0,0 +1,57 @@
|
||||
//! This example demonstrates how to use pathbuf derived I18nConfig.
|
||||
//! This is useful for WASM targets; the paths to the translation files must be known at compile time.
|
||||
|
||||
use dioxus::prelude::*;
|
||||
use dioxus_i18n::{prelude::*, t};
|
||||
use unic_langid::langid;
|
||||
|
||||
fn main() {
|
||||
launch(app);
|
||||
}
|
||||
|
||||
#[allow(non_snake_case)]
|
||||
fn Body() -> Element {
|
||||
let mut i18n = i18n();
|
||||
|
||||
let change_to_english = move |_| i18n.set_language(langid!("en-US"));
|
||||
let change_to_spanish = move |_| i18n.set_language(langid!("es-ES"));
|
||||
|
||||
rsx!(
|
||||
button {
|
||||
onclick: change_to_english,
|
||||
label {
|
||||
"English"
|
||||
}
|
||||
}
|
||||
button {
|
||||
onclick: change_to_spanish,
|
||||
label {
|
||||
"Spanish"
|
||||
}
|
||||
}
|
||||
p { { t!("hello_world") } }
|
||||
p { { t!("hello", name: "Dioxus") } }
|
||||
)
|
||||
}
|
||||
|
||||
fn app() -> Element {
|
||||
use_init_i18n(|| {
|
||||
// This initialisation allows individual translation files to be selected.
|
||||
// The locales can be added with an implicitly derived locale (see config-dynamic-pathbuf.rs for a comparison)
|
||||
// or using an explicit Locale::new_static call.
|
||||
//
|
||||
// The two examples are functionally equivalent.
|
||||
//
|
||||
// It IS supported in WASM targets.
|
||||
I18nConfig::new(langid!("en-US"))
|
||||
// Implicit...
|
||||
.with_locale((langid!("es-ES"), include_str!("./data/i18n/es-ES.ftl")))
|
||||
// Explicit...
|
||||
.with_locale(Locale::new_static(
|
||||
langid!("en-US"),
|
||||
include_str!("./data/i18n/en-US.ftl"),
|
||||
))
|
||||
});
|
||||
|
||||
rsx!(Body {})
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user