Compare commits

...

91 Commits

Author SHA1 Message Date
f5799f2993 readme 2026-01-29 10:58:07 +01:00
7ecf0f10e8 UI overhaul rebase 2026-01-28 23:07:07 +01:00
af095684a1 temp 2026-01-28 23:07:07 +01:00
b5e7ab5c48 feat: UI overhaul
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 6s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 3s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 5s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 12s
GitLeaks check / GitLeaks check (pull_request) Successful in 11s
hadolint check / hadolint check (pull_request) Successful in 28s
markdownlint check / markdownlint check (pull_request) Successful in 52s
Prettier check / Prettier check (pull_request) Successful in 36s
htmlhint check / htmlhint check (pull_request) Successful in 55s
checkov check / checkov check (pull_request) Successful in 1m15s
Stylelint check / Stylelint check (pull_request) Successful in 31s
yamllint check / yamllint check (pull_request) Successful in 29s
ShellCheck check / ShellCheck check (pull_request) Successful in 1m9s
Rust check / Rust check (pull_request) Successful in 22m2s
2026-01-28 23:04:29 +01:00
be1a21b746 fix: text wrapping (#128) 2026-01-25 10:21:12 +00:00
fa749b652f fix: text wrapping
Some checks failed
actionlint check / actionlint check (pull_request) Successful in 7s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 3s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 6s
GitLeaks check / GitLeaks check (pull_request) Successful in 9s
conventional commit messages check / conventional commit messages check (pull_request) Failing after 5s
hadolint check / hadolint check (pull_request) Successful in 19s
markdownlint check / markdownlint check (pull_request) Successful in 37s
htmlhint check / htmlhint check (pull_request) Successful in 43s
Prettier check / Prettier check (pull_request) Successful in 40s
ShellCheck check / ShellCheck check (pull_request) Successful in 48s
Stylelint check / Stylelint check (pull_request) Successful in 37s
checkov check / checkov check (pull_request) Successful in 1m46s
yamllint check / yamllint check (pull_request) Successful in 31s
Rust check / Rust check (pull_request) Successful in 16m41s
2026-01-25 10:35:54 +01:00
d9efaaae6e fix: ability to access the someday maybe category list (#127) 2026-01-25 09:27:23 +00:00
428e52ba3d fix: ability to access the someday maybe category list
Some checks failed
actionlint check / actionlint check (pull_request) Successful in 7s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 4s
conventional commit messages check / conventional commit messages check (pull_request) Failing after 6s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 7s
GitLeaks check / GitLeaks check (pull_request) Successful in 15s
hadolint check / hadolint check (pull_request) Successful in 15s
htmlhint check / htmlhint check (pull_request) Successful in 36s
Prettier check / Prettier check (pull_request) Successful in 54s
checkov check / checkov check (pull_request) Successful in 1m20s
markdownlint check / markdownlint check (pull_request) Successful in 57s
ShellCheck check / ShellCheck check (pull_request) Successful in 28s
Stylelint check / Stylelint check (pull_request) Successful in 27s
yamllint check / yamllint check (pull_request) Successful in 30s
Rust check / Rust check (pull_request) Successful in 23m59s
2026-01-25 09:41:46 +01:00
8dbb1dc48e feat: make the cursor of subtask buttons pointer (#124) 2026-01-24 20:53:48 +00:00
ee950aa4a9 feat: make the cursor of subtask buttons pointer
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 7s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 6s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 3s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 8s
GitLeaks check / GitLeaks check (pull_request) Successful in 12s
hadolint check / hadolint check (pull_request) Successful in 41s
htmlhint check / htmlhint check (pull_request) Successful in 1m1s
checkov check / checkov check (pull_request) Successful in 1m18s
markdownlint check / markdownlint check (pull_request) Successful in 59s
Prettier check / Prettier check (pull_request) Successful in 27s
ShellCheck check / ShellCheck check (pull_request) Successful in 34s
Stylelint check / Stylelint check (pull_request) Successful in 32s
yamllint check / yamllint check (pull_request) Successful in 34s
Rust check / Rust check (pull_request) Successful in 16m14s
2026-01-24 21:34:30 +01:00
439cc012f0 chore: make the Rust builds locked (#123) 2026-01-24 20:08:34 +00:00
803fe36ed1 feat: update Font Awesome to 7.1.0 (#122) 2026-01-24 20:08:26 +00:00
80918b98d9 chore: make the Rust builds locked
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 7s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 4s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 7s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 10s
GitLeaks check / GitLeaks check (pull_request) Successful in 13s
hadolint check / hadolint check (pull_request) Successful in 39s
checkov check / checkov check (pull_request) Successful in 1m36s
htmlhint check / htmlhint check (pull_request) Successful in 1m19s
markdownlint check / markdownlint check (pull_request) Successful in 1m14s
Prettier check / Prettier check (pull_request) Successful in 50s
ShellCheck check / ShellCheck check (pull_request) Successful in 2m1s
Stylelint check / Stylelint check (pull_request) Successful in 2m4s
yamllint check / yamllint check (pull_request) Successful in 2m20s
Rust check / Rust check (pull_request) Successful in 21m31s
2026-01-24 20:00:16 +01:00
d4235ef2ab feat: update Font Awesome to 7.1.0
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 39s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 8s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 10s
GitLeaks check / GitLeaks check (pull_request) Successful in 46s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 48s
hadolint check / hadolint check (pull_request) Successful in 51s
checkov check / checkov check (pull_request) Successful in 2m37s
htmlhint check / htmlhint check (pull_request) Successful in 1m9s
markdownlint check / markdownlint check (pull_request) Successful in 50s
Prettier check / Prettier check (pull_request) Successful in 30s
ShellCheck check / ShellCheck check (pull_request) Successful in 55s
Stylelint check / Stylelint check (pull_request) Successful in 54s
yamllint check / yamllint check (pull_request) Successful in 1m6s
Rust check / Rust check (pull_request) Successful in 24m52s
2026-01-24 17:52:43 +01:00
d0a124ee75 fix: font displaying (#120) 2026-01-24 11:30:45 +00:00
67a8a3fae6 fix: font displaying
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 6s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 6s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 3s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 6s
GitLeaks check / GitLeaks check (pull_request) Successful in 13s
hadolint check / hadolint check (pull_request) Successful in 33s
htmlhint check / htmlhint check (pull_request) Successful in 40s
checkov check / checkov check (pull_request) Successful in 1m18s
markdownlint check / markdownlint check (pull_request) Successful in 57s
Prettier check / Prettier check (pull_request) Successful in 34s
ShellCheck check / ShellCheck check (pull_request) Successful in 32s
Stylelint check / Stylelint check (pull_request) Successful in 30s
yamllint check / yamllint check (pull_request) Successful in 34s
Rust check / Rust check (pull_request) Successful in 11m1s
2026-01-24 12:16:16 +01:00
baef08475f chore: bump the Dioxus and Diesel CLI (#117) 2026-01-24 09:44:33 +00:00
265516c1a6 chore: bump the Dioxus and Diesel CLI
All checks were successful
conventional pull request title check / conventional pull request title check (pull_request) Successful in 10s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 26s
GitLeaks check / GitLeaks check (pull_request) Successful in 23s
hadolint check / hadolint check (pull_request) Successful in 52s
htmlhint check / htmlhint check (pull_request) Successful in 1m3s
markdownlint check / markdownlint check (pull_request) Successful in 1m1s
Prettier check / Prettier check (pull_request) Successful in 52s
yamllint check / yamllint check (pull_request) Successful in 27s
Stylelint check / Stylelint check (pull_request) Successful in 33s
ShellCheck check / ShellCheck check (pull_request) Successful in 9m9s
Rust check / Rust check (pull_request) Successful in 29m35s
actionlint check / actionlint check (pull_request) Successful in 18s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 13s
checkov check / checkov check (pull_request) Successful in 1m37s
2026-01-24 00:44:51 +01:00
01c9b2d0fb fix: automatically reconnect after losing a WebSocket connection (#112) 2026-01-23 19:32:12 +00:00
4ad96fe92f fix: Android bundle Docker compose build (#114) 2026-01-23 19:32:05 +00:00
df1d23c0e3 chore: bump dependencies (#116) 2026-01-23 19:31:59 +00:00
ce73256133 fix: automatically reconnect after losing a WebSocket connection
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 12s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 22s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 4s
checkov check / checkov check (pull_request) Successful in 1m19s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 10s
GitLeaks check / GitLeaks check (pull_request) Successful in 13s
hadolint check / hadolint check (pull_request) Successful in 11s
htmlhint check / htmlhint check (pull_request) Successful in 41s
markdownlint check / markdownlint check (pull_request) Successful in 34s
Prettier check / Prettier check (pull_request) Successful in 37s
ShellCheck check / ShellCheck check (pull_request) Successful in 25s
Stylelint check / Stylelint check (pull_request) Successful in 40s
yamllint check / yamllint check (pull_request) Successful in 29s
Rust check / Rust check (pull_request) Successful in 1h1m8s
2026-01-23 18:01:39 +01:00
fd661ba7e4 fix: Android bundle Docker compose build
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 12s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 6s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 12s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 14s
GitLeaks check / GitLeaks check (pull_request) Successful in 20s
hadolint check / hadolint check (pull_request) Successful in 17s
markdownlint check / markdownlint check (pull_request) Successful in 39s
checkov check / checkov check (pull_request) Successful in 1m23s
htmlhint check / htmlhint check (pull_request) Successful in 49s
ShellCheck check / ShellCheck check (pull_request) Successful in 28s
Prettier check / Prettier check (pull_request) Successful in 33s
Stylelint check / Stylelint check (pull_request) Successful in 30s
yamllint check / yamllint check (pull_request) Successful in 36s
Rust check / Rust check (pull_request) Successful in 1h58m0s
2026-01-23 18:01:23 +01:00
316d45fe0c chore: bump dependencies
All checks were successful
conventional pull request title check / conventional pull request title check (pull_request) Successful in 8s
actionlint check / actionlint check (pull_request) Successful in 15s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 16s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 23s
GitLeaks check / GitLeaks check (pull_request) Successful in 23s
hadolint check / hadolint check (pull_request) Successful in 24s
Prettier check / Prettier check (pull_request) Successful in 53s
markdownlint check / markdownlint check (pull_request) Successful in 56s
htmlhint check / htmlhint check (pull_request) Successful in 1m0s
checkov check / checkov check (pull_request) Successful in 1m47s
ShellCheck check / ShellCheck check (pull_request) Successful in 35s
yamllint check / yamllint check (pull_request) Successful in 37s
Stylelint check / Stylelint check (pull_request) Successful in 43s
Rust check / Rust check (pull_request) Successful in 1h12m38s
2026-01-23 18:00:32 +01:00
00bb8d7951 ci: update the Rust check dependencies (#115) 2026-01-23 16:59:59 +00:00
393173f218 ci: update the Rust check dependencies
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 6s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 7s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 6s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 10s
GitLeaks check / GitLeaks check (pull_request) Successful in 10s
hadolint check / hadolint check (pull_request) Successful in 30s
htmlhint check / htmlhint check (pull_request) Successful in 44s
checkov check / checkov check (pull_request) Successful in 1m6s
markdownlint check / markdownlint check (pull_request) Successful in 48s
Prettier check / Prettier check (pull_request) Successful in 27s
ShellCheck check / ShellCheck check (pull_request) Successful in 25s
yamllint check / yamllint check (pull_request) Successful in 25s
Stylelint check / Stylelint check (pull_request) Successful in 27s
Rust check / Rust check (pull_request) Successful in 14m21s
2026-01-23 17:28:58 +01:00
8fd5fe2d4e chore: remove unused CSS configuration (#110) 2026-01-11 08:53:33 +00:00
d165e58443 chore: remove unused CSS configuration
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 6s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 3s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 5s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 9s
GitLeaks check / GitLeaks check (pull_request) Successful in 11s
hadolint check / hadolint check (pull_request) Successful in 18s
htmlhint check / htmlhint check (pull_request) Successful in 46s
markdownlint check / markdownlint check (pull_request) Successful in 42s
Prettier check / Prettier check (pull_request) Successful in 33s
checkov check / checkov check (pull_request) Successful in 1m30s
ShellCheck check / ShellCheck check (pull_request) Successful in 32s
Stylelint check / Stylelint check (pull_request) Successful in 34s
yamllint check / yamllint check (pull_request) Successful in 32s
Rust check / Rust check (pull_request) Successful in 23m25s
2026-01-10 13:00:51 +01:00
c23397a941 ci: update the Rust and chechkov Rust toolchain (#111) 2026-01-10 11:50:40 +00:00
4f8abe60da ci: update the Rust and chechkov checks
All checks were successful
conventional pull request title check / conventional pull request title check (pull_request) Successful in 8s
actionlint check / actionlint check (pull_request) Successful in 15s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 17s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 13s
GitLeaks check / GitLeaks check (pull_request) Successful in 15s
hadolint check / hadolint check (pull_request) Successful in 27s
htmlhint check / htmlhint check (pull_request) Successful in 50s
markdownlint check / markdownlint check (pull_request) Successful in 47s
checkov check / checkov check (pull_request) Successful in 1m49s
Prettier check / Prettier check (pull_request) Successful in 1m3s
ShellCheck check / ShellCheck check (pull_request) Successful in 39s
yamllint check / yamllint check (pull_request) Successful in 39s
Stylelint check / Stylelint check (pull_request) Successful in 51s
Rust check / Rust check (pull_request) Successful in 17m17s
2026-01-10 12:09:26 +01:00
5085791f45 fix: task completion and sorting (#106) 2025-12-19 19:16:19 +00:00
dc3effe640 fix: task sorting
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 6s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 3s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 7s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 7s
GitLeaks check / GitLeaks check (pull_request) Successful in 10s
hadolint check / hadolint check (pull_request) Successful in 11s
htmlhint check / htmlhint check (pull_request) Successful in 44s
markdownlint check / markdownlint check (pull_request) Successful in 40s
Prettier check / Prettier check (pull_request) Successful in 36s
checkov check / checkov check (pull_request) Successful in 1m22s
ShellCheck check / ShellCheck check (pull_request) Successful in 29s
Stylelint check / Stylelint check (pull_request) Successful in 31s
yamllint check / yamllint check (pull_request) Successful in 29s
Rust check / Rust check (pull_request) Successful in 11m42s
2025-12-19 20:01:22 +01:00
999057314a fix: task completion 2025-12-19 19:44:17 +01:00
41d0d83478 fix: Android bundling (#105) 2025-12-19 17:45:20 +00:00
0bca3ff872 fix: Android bundling
All checks were successful
conventional commit messages check / conventional commit messages check (pull_request) Successful in 7s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 7s
GitLeaks check / GitLeaks check (pull_request) Successful in 11s
Rust check / Rust check (pull_request) Successful in 12m57s
hadolint check / hadolint check (pull_request) Successful in 19s
htmlhint check / htmlhint check (pull_request) Successful in 33s
markdownlint check / markdownlint check (pull_request) Successful in 28s
Prettier check / Prettier check (pull_request) Successful in 28s
ShellCheck check / ShellCheck check (pull_request) Successful in 34s
Stylelint check / Stylelint check (pull_request) Successful in 30s
checkov check / checkov check (pull_request) Successful in 1m27s
yamllint check / yamllint check (pull_request) Successful in 25s
actionlint check / actionlint check (pull_request) Successful in 6s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 3s
2025-12-19 15:26:53 +01:00
32c12186c1 chore: upgrade to Dioxus 0.7 (#104) 2025-12-18 19:20:26 +00:00
2f933d5302 chore: upgrade to Dioxus 0.7
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 5s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 7s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 5s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 10s
hadolint check / hadolint check (pull_request) Successful in 16s
GitLeaks check / GitLeaks check (pull_request) Successful in 10s
htmlhint check / htmlhint check (pull_request) Successful in 35s
Prettier check / Prettier check (pull_request) Successful in 26s
markdownlint check / markdownlint check (pull_request) Successful in 31s
checkov check / checkov check (pull_request) Successful in 1m15s
ShellCheck check / ShellCheck check (pull_request) Successful in 30s
Stylelint check / Stylelint check (pull_request) Successful in 29s
yamllint check / yamllint check (pull_request) Successful in 27s
Rust check / Rust check (pull_request) Successful in 11m44s
2025-12-18 20:07:21 +01:00
16db7ac2b9 chore: force Cargo.lock preservation with Cargo dependencies (#103) 2025-12-13 23:11:19 +00:00
ae4c842180 chore: force Cargo.lock preservation with Cargo dependencies
All checks were successful
dotenv-linter check / dotenv-linter check (pull_request) Successful in 9s
actionlint check / actionlint check (pull_request) Successful in 6s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 3s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 5s
hadolint check / hadolint check (pull_request) Successful in 15s
GitLeaks check / GitLeaks check (pull_request) Successful in 12s
htmlhint check / htmlhint check (pull_request) Successful in 27s
markdownlint check / markdownlint check (pull_request) Successful in 27s
Prettier check / Prettier check (pull_request) Successful in 26s
checkov check / checkov check (pull_request) Successful in 1m7s
ShellCheck check / ShellCheck check (pull_request) Successful in 27s
Stylelint check / Stylelint check (pull_request) Successful in 23s
yamllint check / yamllint check (pull_request) Successful in 28s
Rust check / Rust check (pull_request) Successful in 11m2s
2025-12-13 23:59:15 +01:00
2ff947e6d6 fix: the webmanifest options (#102) 2025-12-13 22:52:10 +00:00
302d7caa8d ci: update the Rust and checkov checks
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 6s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 4s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 6s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 7s
GitLeaks check / GitLeaks check (pull_request) Successful in 10s
hadolint check / hadolint check (pull_request) Successful in 26s
htmlhint check / htmlhint check (pull_request) Successful in 24s
markdownlint check / markdownlint check (pull_request) Successful in 31s
Prettier check / Prettier check (pull_request) Successful in 20s
checkov check / checkov check (pull_request) Successful in 1m8s
ShellCheck check / ShellCheck check (pull_request) Successful in 24s
Stylelint check / Stylelint check (pull_request) Successful in 25s
yamllint check / yamllint check (pull_request) Successful in 20s
Rust check / Rust check (pull_request) Successful in 10m19s
2025-12-13 23:15:26 +01:00
2fdf09d041 fix: the webmanifest options
Some checks failed
checkov check / checkov check (pull_request) Failing after 13s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 6s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 10s
htmlhint check / htmlhint check (pull_request) Successful in 12s
markdownlint check / markdownlint check (pull_request) Successful in 18s
Prettier check / Prettier check (pull_request) Successful in 15s
Rust check / Rust check (pull_request) Failing after 16s
ShellCheck check / ShellCheck check (pull_request) Successful in 24s
Stylelint check / Stylelint check (pull_request) Successful in 12s
yamllint check / yamllint check (pull_request) Successful in 15s
GitLeaks check / GitLeaks check (pull_request) Successful in 1m34s
hadolint check / hadolint check (pull_request) Successful in 1m46s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 17s
actionlint check / actionlint check (pull_request) Successful in 4s
2025-12-13 22:46:56 +01:00
9cae1f2a3b fix: add the webmanifest (#95) 2025-08-07 21:20:02 +00:00
9302a69553 fix: add the webmanifest
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 13s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 3s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 6s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 10s
GitLeaks check / GitLeaks check (pull_request) Successful in 15s
markdownlint check / markdownlint check (pull_request) Successful in 26s
htmlhint check / htmlhint check (pull_request) Successful in 34s
hadolint check / hadolint check (pull_request) Successful in 43s
checkov check / checkov check (pull_request) Successful in 1m17s
Prettier check / Prettier check (pull_request) Successful in 32s
Stylelint check / Stylelint check (pull_request) Successful in 35s
yamllint check / yamllint check (pull_request) Successful in 31s
ShellCheck check / ShellCheck check (pull_request) Successful in 29s
Rust check / Rust check (pull_request) Successful in 22m49s
2025-08-07 22:34:41 +02:00
94059f14bb chore: bump dependencies (#97) 2025-08-07 15:13:45 +00:00
744e23aa66 chore: bump dependencies
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 7s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 3s
GitLeaks check / GitLeaks check (pull_request) Successful in 14s
hadolint check / hadolint check (pull_request) Successful in 15s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 7s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 8s
htmlhint check / htmlhint check (pull_request) Successful in 20s
markdownlint check / markdownlint check (pull_request) Successful in 32s
Prettier check / Prettier check (pull_request) Successful in 33s
checkov check / checkov check (pull_request) Successful in 1m20s
ShellCheck check / ShellCheck check (pull_request) Successful in 30s
Stylelint check / Stylelint check (pull_request) Successful in 27s
yamllint check / yamllint check (pull_request) Successful in 26s
Rust check / Rust check (pull_request) Successful in 12m52s
2025-08-07 16:33:20 +02:00
e9a208a9d1 ci: update the checks dependencies (#96) 2025-08-07 13:10:09 +00:00
0f1dfbadf8 style: satisfy Clippy warnings
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 8s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 8s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 4s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 10s
GitLeaks check / GitLeaks check (pull_request) Successful in 14s
hadolint check / hadolint check (pull_request) Successful in 15s
htmlhint check / htmlhint check (pull_request) Successful in 33s
Prettier check / Prettier check (pull_request) Successful in 27s
markdownlint check / markdownlint check (pull_request) Successful in 27s
ShellCheck check / ShellCheck check (pull_request) Successful in 30s
checkov check / checkov check (pull_request) Successful in 1m21s
Stylelint check / Stylelint check (pull_request) Successful in 27s
yamllint check / yamllint check (pull_request) Successful in 26s
Rust check / Rust check (pull_request) Successful in 13m31s
2025-08-07 14:46:53 +02:00
907ddaacbe ci: update the checks dependencies
Some checks failed
dotenv-linter check / dotenv-linter check (pull_request) Successful in 8s
GitLeaks check / GitLeaks check (pull_request) Successful in 16s
actionlint check / actionlint check (pull_request) Successful in 7s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 4s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 7s
hadolint check / hadolint check (pull_request) Successful in 16s
htmlhint check / htmlhint check (pull_request) Successful in 27s
markdownlint check / markdownlint check (pull_request) Successful in 26s
Prettier check / Prettier check (pull_request) Successful in 35s
ShellCheck check / ShellCheck check (pull_request) Successful in 28s
checkov check / checkov check (pull_request) Successful in 1m21s
Stylelint check / Stylelint check (pull_request) Successful in 28s
yamllint check / yamllint check (pull_request) Successful in 25s
Rust check / Rust check (pull_request) Failing after 6m30s
2025-08-07 12:45:45 +02:00
defddfadae fix: the app title (#94) 2025-02-15 11:28:20 +00:00
8a0fae3b32 build: bump dependencies (#93) 2025-02-14 18:43:50 +00:00
f66b8301f0 build: bump the Dockerfile dependencies
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 7s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 5s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 8s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 8s
GitLeaks check / GitLeaks check (pull_request) Successful in 8s
hadolint check / hadolint check (pull_request) Successful in 20s
htmlhint check / htmlhint check (pull_request) Successful in 21s
markdownlint check / markdownlint check (pull_request) Successful in 20s
Prettier check / Prettier check (pull_request) Successful in 28s
ShellCheck check / ShellCheck check (pull_request) Successful in 20s
checkov check / checkov check (pull_request) Successful in 1m19s
Stylelint check / Stylelint check (pull_request) Successful in 21s
yamllint check / yamllint check (pull_request) Successful in 46s
Rust check / Rust check (pull_request) Successful in 15m22s
2025-02-10 16:49:25 +01:00
7112946e5b build: bump the crate dependencies 2025-02-10 16:48:06 +01:00
ac8a533079 fix: the app title
All checks were successful
conventional pull request title check / conventional pull request title check (pull_request) Successful in 3s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 7s
actionlint check / actionlint check (pull_request) Successful in 11s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 7s
GitLeaks check / GitLeaks check (pull_request) Successful in 9s
hadolint check / hadolint check (pull_request) Successful in 11s
htmlhint check / htmlhint check (pull_request) Successful in 18s
markdownlint check / markdownlint check (pull_request) Successful in 17s
Prettier check / Prettier check (pull_request) Successful in 17s
Stylelint check / Stylelint check (pull_request) Successful in 23s
ShellCheck check / ShellCheck check (pull_request) Successful in 33s
yamllint check / yamllint check (pull_request) Successful in 24s
checkov check / checkov check (pull_request) Successful in 1m31s
Rust check / Rust check (pull_request) Successful in 15m23s
2025-02-10 16:38:58 +01:00
31e50e486b chore: update the JetBrains IDE configuration (#92) 2025-02-04 21:42:28 +00:00
69e43805b9 chore: update the JetBrains IDE configuration
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 8s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 6s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 4s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 8s
GitLeaks check / GitLeaks check (pull_request) Successful in 11s
hadolint check / hadolint check (pull_request) Successful in 15s
htmlhint check / htmlhint check (pull_request) Successful in 32s
markdownlint check / markdownlint check (pull_request) Successful in 28s
Prettier check / Prettier check (pull_request) Successful in 23s
ShellCheck check / ShellCheck check (pull_request) Successful in 26s
checkov check / checkov check (pull_request) Successful in 1m17s
Stylelint check / Stylelint check (pull_request) Successful in 25s
yamllint check / yamllint check (pull_request) Successful in 18s
Rust check / Rust check (pull_request) Successful in 15m45s
2025-01-29 22:44:22 +01:00
ab7fbdd569 build: bump the Dockerfile dependencies (#91) 2025-01-29 21:43:34 +00:00
a0b7a23b7c ci: bump the Rust check dependencies
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 5s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 4s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 3s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 7s
GitLeaks check / GitLeaks check (pull_request) Successful in 10s
hadolint check / hadolint check (pull_request) Successful in 11s
htmlhint check / htmlhint check (pull_request) Successful in 21s
markdownlint check / markdownlint check (pull_request) Successful in 27s
Prettier check / Prettier check (pull_request) Successful in 23s
Stylelint check / Stylelint check (pull_request) Successful in 24s
checkov check / checkov check (pull_request) Successful in 1m11s
ShellCheck check / ShellCheck check (pull_request) Successful in 28s
yamllint check / yamllint check (pull_request) Successful in 15s
Rust check / Rust check (pull_request) Successful in 15m47s
2025-01-29 22:22:31 +01:00
8f3d144329 build: bump the Dockerfile dependencies
Some checks failed
actionlint check / actionlint check (pull_request) Successful in 7s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 7s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 6s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 7s
GitLeaks check / GitLeaks check (pull_request) Successful in 9s
htmlhint check / htmlhint check (pull_request) Successful in 13s
markdownlint check / markdownlint check (pull_request) Successful in 13s
hadolint check / hadolint check (pull_request) Successful in 31s
Prettier check / Prettier check (pull_request) Successful in 14s
Rust check / Rust check (pull_request) Failing after 15s
Stylelint check / Stylelint check (pull_request) Successful in 24s
ShellCheck check / ShellCheck check (pull_request) Successful in 27s
yamllint check / yamllint check (pull_request) Successful in 27s
checkov check / checkov check (pull_request) Successful in 1m26s
2025-01-29 22:14:10 +01:00
3f9efeee3e chore: cleanup gitignore and dockerignore (#89) 2025-01-04 19:22:35 +00:00
d592a81b7c chore: clean up the dockerignore
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 6s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 5s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 9s
htmlhint check / htmlhint check (pull_request) Successful in 17s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 3s
GitLeaks check / GitLeaks check (pull_request) Successful in 10s
hadolint check / hadolint check (pull_request) Successful in 14s
markdownlint check / markdownlint check (pull_request) Successful in 18s
Prettier check / Prettier check (pull_request) Successful in 16s
Stylelint check / Stylelint check (pull_request) Successful in 19s
ShellCheck check / ShellCheck check (pull_request) Successful in 47s
yamllint check / yamllint check (pull_request) Successful in 28s
checkov check / checkov check (pull_request) Successful in 1m38s
Rust check / Rust check (pull_request) Successful in 16m59s
2025-01-04 19:58:34 +01:00
145214e6cc chore: clean up the gitignore 2025-01-04 19:58:26 +01:00
4271ec7c21 refactor: use the dedicated stylesheet component instead of a link (#88) 2025-01-04 10:16:58 +00:00
1deffe8ee4 refactor: use the dedicated stylesheet component instead of a link
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 5s
checkov check / checkov check (pull_request) Successful in 51s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 4s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 2s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 5s
GitLeaks check / GitLeaks check (pull_request) Successful in 7s
hadolint check / hadolint check (pull_request) Successful in 7s
htmlhint check / htmlhint check (pull_request) Successful in 10s
markdownlint check / markdownlint check (pull_request) Successful in 10s
Prettier check / Prettier check (pull_request) Successful in 10s
Rust check / Rust check (pull_request) Successful in 14m47s
ShellCheck check / ShellCheck check (pull_request) Successful in 14s
Stylelint check / Stylelint check (pull_request) Successful in 12s
yamllint check / yamllint check (pull_request) Successful in 13s
2025-01-04 10:44:05 +01:00
bcac82b860 build: use dx bundle in the production Dockerfile (#86) 2025-01-03 21:21:46 +00:00
9da7515042 build: use dx bundle in the production Dockerfile
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 6s
checkov check / checkov check (pull_request) Successful in 3m44s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 8s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 4s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 8s
GitLeaks check / GitLeaks check (pull_request) Successful in 12s
hadolint check / hadolint check (pull_request) Successful in 19s
htmlhint check / htmlhint check (pull_request) Successful in 22s
markdownlint check / markdownlint check (pull_request) Successful in 22s
Prettier check / Prettier check (pull_request) Successful in 24s
Rust check / Rust check (pull_request) Successful in 29m8s
ShellCheck check / ShellCheck check (pull_request) Successful in 21s
Stylelint check / Stylelint check (pull_request) Successful in 16s
yamllint check / yamllint check (pull_request) Successful in 19s
2025-01-03 21:34:48 +01:00
a088d90c6a hotfix: task list item text position (#85) 2025-01-03 18:07:14 +00:00
9481498725 refactor: build development Tailwind CSS in a separate Docker service (#83) 2025-01-03 17:04:55 +00:00
3d28254ae1 style: skip the checkov healthcheck policy
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 5s
checkov check / checkov check (pull_request) Successful in 56s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 5s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 3s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 6s
GitLeaks check / GitLeaks check (pull_request) Successful in 8s
hadolint check / hadolint check (pull_request) Successful in 8s
htmlhint check / htmlhint check (pull_request) Successful in 11s
markdownlint check / markdownlint check (pull_request) Successful in 11s
Prettier check / Prettier check (pull_request) Successful in 12s
Rust check / Rust check (pull_request) Successful in 15m29s
ShellCheck check / ShellCheck check (pull_request) Successful in 14s
Stylelint check / Stylelint check (pull_request) Successful in 13s
yamllint check / yamllint check (pull_request) Successful in 13s
2025-01-03 17:18:18 +01:00
1666c25d13 refactor: build development Tailwind CSS in a separate Docker service 2025-01-03 17:18:18 +01:00
a3ebf712f9 ci: handle no shell files in the Shellcheck check (#84) 2025-01-03 13:29:20 +00:00
0ea3f3a118 ci: handle no shell files in the Shellcheck check
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 6s
checkov check / checkov check (pull_request) Successful in 1m1s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 5s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 2s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 5s
GitLeaks check / GitLeaks check (pull_request) Successful in 8s
hadolint check / hadolint check (pull_request) Successful in 8s
htmlhint check / htmlhint check (pull_request) Successful in 11s
markdownlint check / markdownlint check (pull_request) Successful in 12s
Prettier check / Prettier check (pull_request) Successful in 13s
Rust check / Rust check (pull_request) Successful in 15m35s
ShellCheck check / ShellCheck check (pull_request) Successful in 15s
Stylelint check / Stylelint check (pull_request) Successful in 12s
yamllint check / yamllint check (pull_request) Successful in 14s
2025-01-03 13:49:09 +01:00
9d80e68a4e hotfix: task list item text position
All checks were successful
Rust check / Rust check (pull_request) Successful in 14m42s
ShellCheck check / ShellCheck check (pull_request) Successful in 16s
Stylelint check / Stylelint check (pull_request) Successful in 12s
yamllint check / yamllint check (pull_request) Successful in 13s
actionlint check / actionlint check (pull_request) Successful in 5s
checkov check / checkov check (pull_request) Successful in 54s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 5s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 3s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 5s
GitLeaks check / GitLeaks check (pull_request) Successful in 7s
hadolint check / hadolint check (pull_request) Successful in 7s
htmlhint check / htmlhint check (pull_request) Successful in 8s
markdownlint check / markdownlint check (pull_request) Successful in 10s
Prettier check / Prettier check (pull_request) Successful in 10s
2025-01-03 10:54:58 +01:00
9ce77897d8 build: bump the crate dependencies (#82) 2025-01-03 08:49:46 +00:00
bf4afb03e6 refactor: replace a deprecated function
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 5s
checkov check / checkov check (pull_request) Successful in 53s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 5s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 2s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 5s
GitLeaks check / GitLeaks check (pull_request) Successful in 8s
hadolint check / hadolint check (pull_request) Successful in 8s
htmlhint check / htmlhint check (pull_request) Successful in 9s
markdownlint check / markdownlint check (pull_request) Successful in 10s
Prettier check / Prettier check (pull_request) Successful in 11s
Rust check / Rust check (pull_request) Successful in 14m55s
ShellCheck check / ShellCheck check (pull_request) Successful in 16s
Stylelint check / Stylelint check (pull_request) Successful in 12s
yamllint check / yamllint check (pull_request) Successful in 14s
2025-01-02 17:27:10 +01:00
f134e6d4c3 build: bump the crate dependencies
Some checks failed
actionlint check / actionlint check (pull_request) Successful in 6s
checkov check / checkov check (pull_request) Successful in 1m3s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 5s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 2s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 5s
GitLeaks check / GitLeaks check (pull_request) Successful in 7s
hadolint check / hadolint check (pull_request) Successful in 8s
htmlhint check / htmlhint check (pull_request) Successful in 11s
markdownlint check / markdownlint check (pull_request) Successful in 12s
Prettier check / Prettier check (pull_request) Successful in 11s
Rust check / Rust check (pull_request) Failing after 7m8s
ShellCheck check / ShellCheck check (pull_request) Successful in 14s
Stylelint check / Stylelint check (pull_request) Successful in 11s
yamllint check / yamllint check (pull_request) Successful in 14s
2025-01-02 16:37:47 +01:00
97a3a24378 refactor: remove the deprecated web resource configuration and use the script component (#81) 2025-01-02 09:20:02 +00:00
7f5a524d4b refactor: remove the deprecated web resource configuration and use the script component
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 5s
checkov check / checkov check (pull_request) Successful in 48s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 4s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 2s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 6s
GitLeaks check / GitLeaks check (pull_request) Successful in 7s
hadolint check / hadolint check (pull_request) Successful in 11s
htmlhint check / htmlhint check (pull_request) Successful in 9s
markdownlint check / markdownlint check (pull_request) Successful in 9s
Prettier check / Prettier check (pull_request) Successful in 11s
Rust check / Rust check (pull_request) Successful in 14m42s
ShellCheck check / ShellCheck check (pull_request) Successful in 15s
Stylelint check / Stylelint check (pull_request) Successful in 12s
yamllint check / yamllint check (pull_request) Successful in 13s
2025-01-02 09:43:01 +01:00
dbd3a5841b chore: update the crate author's email address (#80) 2025-01-02 08:36:29 +00:00
60cf0b641d chore: set the project icon for JetBrains IDEs (#79) 2025-01-02 08:36:13 +00:00
bfadb1c2b2 chore: add the Docker compose symlink to .gitignore (#78) 2025-01-01 21:47:07 +00:00
da2291b6e7 build: remove needless packages from the production Docker image (#77) 2025-01-01 21:14:34 +00:00
5b1df9577b build: add Docker files to the .dockerignore (#76) 2025-01-01 20:19:45 +00:00
0548c6cbea chore: update the crate author's email address
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 6s
checkov check / checkov check (pull_request) Successful in 1m5s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 5s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 3s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 6s
GitLeaks check / GitLeaks check (pull_request) Successful in 8s
hadolint check / hadolint check (pull_request) Successful in 10s
htmlhint check / htmlhint check (pull_request) Successful in 10s
markdownlint check / markdownlint check (pull_request) Successful in 10s
Prettier check / Prettier check (pull_request) Successful in 12s
Rust check / Rust check (pull_request) Successful in 15m24s
ShellCheck check / ShellCheck check (pull_request) Successful in 13s
Stylelint check / Stylelint check (pull_request) Successful in 12s
yamllint check / yamllint check (pull_request) Successful in 15s
2025-01-01 21:00:27 +01:00
8dda8ec0dd chore: set the project icon for JetBrains IDEs
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 9s
checkov check / checkov check (pull_request) Successful in 1m27s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 7s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 3s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 9s
GitLeaks check / GitLeaks check (pull_request) Successful in 14s
hadolint check / hadolint check (pull_request) Successful in 11s
htmlhint check / htmlhint check (pull_request) Successful in 21s
markdownlint check / markdownlint check (pull_request) Successful in 21s
Prettier check / Prettier check (pull_request) Successful in 25s
Rust check / Rust check (pull_request) Successful in 19m50s
ShellCheck check / ShellCheck check (pull_request) Successful in 18s
Stylelint check / Stylelint check (pull_request) Successful in 11s
yamllint check / yamllint check (pull_request) Successful in 14s
2025-01-01 20:57:40 +01:00
5725c3e7da chore: add the Docker compose symlink to .gitignore
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 13s
checkov check / checkov check (pull_request) Successful in 1m57s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 9s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 8s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 9s
GitLeaks check / GitLeaks check (pull_request) Successful in 13s
hadolint check / hadolint check (pull_request) Successful in 16s
htmlhint check / htmlhint check (pull_request) Successful in 23s
markdownlint check / markdownlint check (pull_request) Successful in 22s
Prettier check / Prettier check (pull_request) Successful in 23s
Rust check / Rust check (pull_request) Successful in 30m17s
ShellCheck check / ShellCheck check (pull_request) Successful in 21s
Stylelint check / Stylelint check (pull_request) Successful in 26s
yamllint check / yamllint check (pull_request) Successful in 22s
2025-01-01 20:52:21 +01:00
f688c7c2fa build: remove needless packages from the production Docker image
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 9s
GitLeaks check / GitLeaks check (pull_request) Successful in 14s
hadolint check / hadolint check (pull_request) Successful in 14s
htmlhint check / htmlhint check (pull_request) Successful in 22s
checkov check / checkov check (pull_request) Successful in 1m58s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 8s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 4s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 9s
markdownlint check / markdownlint check (pull_request) Successful in 22s
Prettier check / Prettier check (pull_request) Successful in 24s
Rust check / Rust check (pull_request) Successful in 31m50s
ShellCheck check / ShellCheck check (pull_request) Successful in 24s
Stylelint check / Stylelint check (pull_request) Successful in 25s
yamllint check / yamllint check (pull_request) Successful in 32s
2025-01-01 20:50:16 +01:00
3677cc343c build: add Docker files to the .dockerignore
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 2m42s
checkov check / checkov check (pull_request) Successful in 1m59s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 4s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 2s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 8s
GitLeaks check / GitLeaks check (pull_request) Successful in 7s
hadolint check / hadolint check (pull_request) Successful in 31s
htmlhint check / htmlhint check (pull_request) Successful in 9s
markdownlint check / markdownlint check (pull_request) Successful in 11s
Prettier check / Prettier check (pull_request) Successful in 10s
ShellCheck check / ShellCheck check (pull_request) Successful in 22s
Stylelint check / Stylelint check (pull_request) Successful in 24s
yamllint check / yamllint check (pull_request) Successful in 22s
Rust check / Rust check (pull_request) Successful in 27m21s
2025-01-01 20:40:19 +01:00
d7c4b0788d build: update the npm package lock (#75) 2024-12-30 19:01:11 +00:00
37ab61743f build: update the npm package lock
All checks were successful
actionlint check / actionlint check (pull_request) Successful in 5s
checkov check / checkov check (pull_request) Successful in 55s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 5s
conventional pull request title check / conventional pull request title check (pull_request) Successful in 2s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 6s
GitLeaks check / GitLeaks check (pull_request) Successful in 7s
hadolint check / hadolint check (pull_request) Successful in 7s
htmlhint check / htmlhint check (pull_request) Successful in 9s
markdownlint check / markdownlint check (pull_request) Successful in 10s
Prettier check / Prettier check (pull_request) Successful in 11s
Rust check / Rust check (pull_request) Successful in 14m39s
ShellCheck check / ShellCheck check (pull_request) Successful in 15s
Stylelint check / Stylelint check (pull_request) Successful in 12s
yamllint check / yamllint check (pull_request) Successful in 13s
2024-12-30 19:42:55 +01:00
5a4716146e chore: add a default merge message template (#74) 2024-12-30 18:38:41 +00:00
219 changed files with 330163 additions and 12712 deletions

View File

@@ -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

View File

@@ -1,2 +1,2 @@
DATABASE_URL=postgres://app:app@db/todo_baggins
LANGUAGE_CODE=en-US
MOBILE_SERVER_URL=

View File

@@ -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:

View File

@@ -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

View File

@@ -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
View File

@@ -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
View File

@@ -1,5 +0,0 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/

View File

@@ -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>&quot;</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
View File

@@ -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>

File diff suppressed because it is too large Load Diff

View File

@@ -1,2 +0,0 @@
#n:information_schema
!<md> [null, 0, null, null, -2147483648, -2147483648]

View File

@@ -1,2 +0,0 @@
#n:pg_catalog
!<md> [null, 0, null, null, -2147483648, -2147483648]

View File

@@ -1,2 +0,0 @@
#n:public
!<md> [785, 0, null, null, -2147483648, -2147483648]

View File

@@ -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
View File

@@ -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
View File

@@ -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>

View File

@@ -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
View File

@@ -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
View File

@@ -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
View File

@@ -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
View File

@@ -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
View File

@@ -0,0 +1,11 @@
{
"lsp": {
"rust-analyzer": {
"initialization_options": {
"cargo": {
"features": ["server", "web"]
}
}
}
}
}

4289
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -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]

View File

@@ -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
View 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

View File

@@ -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

View File

@@ -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"
}
]

View File

@@ -1 +0,0 @@
/tailwind_output.css

View File

@@ -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");
}
}

View File

@@ -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;
}

View 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;
}

View 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[/-].+/"

View 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

View 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 }}

View 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
View 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
View 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

View 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
View 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
View File

@@ -0,0 +1,117 @@
[![Discord Server](https://img.shields.io/discord/899851952891002890.svg?logo=discord&style=flat-square)](https://discord.gg/sKJSVNSCDJ)
[![Crates.io](https://img.shields.io/crates/v/dioxus-free-icons)](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

View 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"

View 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")
}

View 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");
}

View 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

View 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'

View 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 = []

View 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.

View 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
```

View 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,
}
}
)
}

View 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

View 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

View 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()}
}
)
}

View 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;

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View 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",
}
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View 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",
}
}
}
}

File diff suppressed because it is too large Load Diff

View 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",
}
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View 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",
}
}
}
}

File diff suppressed because one or more lines are too long

View 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
View 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[/-].+/"

View 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 }}

View 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 }}

View 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
View File

@@ -0,0 +1,2 @@
Cargo.lock
/target

117
dioxus-i18n/CHANGELOG.md Normal file
View 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
View 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
View 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
View 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)

View 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 {})
}

View 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 {})
}

View 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