From e1326e529cfd9c95bd4a71ebaa570886fb7c5eb1 Mon Sep 17 00:00:00 2001 From: rizary Date: Fri, 27 Jun 2025 07:27:24 +0700 Subject: [PATCH] init slint project --- .gitignore | 24 + .vscode/extensions.json | 7 + .vscode/settings.json | 3 + Cargo.lock | 8738 +++++++++++++++++ Cargo.toml | 25 + LICENSE | 21 + README.md | 155 + build.rs | 8 + public/favicon.ico | Bin 0 -> 4286 bytes .../dark-mode/chart-network-dark-mode.svg | 4 + .../light-mode/chart-network-light-mode.svg | 2 + src/lib.rs | 2 + src/main.rs | 119 + ui/app/index.slint | 325 + ui/entities/token/index.slint | 2 + ui/entities/token/ui/token-list.slint | 181 + ui/index.slint | 75 + ui/pages/auth/index.slint | 2 + ui/pages/auth/ui/login-page.slint | 155 + ui/pages/dashboard/index.slint | 2 + ui/pages/dashboard/ui/dashboard-page.slint | 443 + ui/pages/hunting-ground/index.slint | 2 + .../ui/hunting-ground-page.slint | 30 + ui/pages/markets/index.slint | 2 + ui/pages/markets/ui/markets-page.slint | 30 + ui/pages/portfolio/index.slint | 2 + ui/pages/portfolio/ui/portfolio-page.slint | 30 + ui/pages/trading/index.slint | 2 + ui/pages/trading/ui/trading-page.slint | 78 + ui/shared/config/index.slint | 5 + .../components/design-system.slint | 971 ++ ui/shared/design-system/index.slint | 8 + ui/shared/design-system/tokens/theme.slint | 29 + ui/shared/index.slint | 12 + ui/shared/lib/index.slint | 5 + ui/shared/ui/button/button.slint | 50 + ui/shared/ui/button/index.slint | 2 + ui/shared/ui/card/card.slint | 27 + ui/shared/ui/card/index.slint | 2 + ui/shared/ui/index.slint | 9 + ui/shared/ui/input/index.slint | 2 + ui/shared/ui/input/input.slint | 20 + ui/shared/ui/layout/index.slint | 2 + ui/shared/ui/layout/layout.slint | 32 + ui/shared/ui/loading/index.slint | 2 + ui/shared/ui/loading/loading.slint | 54 + ui/widgets/navigation/index.slint | 2 + .../navigation/ui/navigation-widget.slint | 291 + ui/widgets/navigation/ui/sidebar.slint | 178 + ui/widgets/trading-stats/index.slint | 2 + ui/widgets/trading-stats/ui/stats-card.slint | 55 + ui/widgets/user-profile/index.slint | 2 + ui/widgets/user-profile/ui/profile.slint | 251 + ui/widgets/window-controls/index.slint | 2 + ui/widgets/window-controls/ui/title-bar.slint | 190 + .../ui/window-controls-widget.slint | 18 + 56 files changed, 12692 insertions(+) create mode 100644 .gitignore create mode 100644 .vscode/extensions.json create mode 100644 .vscode/settings.json create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 LICENSE create mode 100644 README.md create mode 100644 build.rs create mode 100644 public/favicon.ico create mode 100644 public/icons/dark-mode/chart-network-dark-mode.svg create mode 100644 public/icons/light-mode/chart-network-light-mode.svg create mode 100644 src/lib.rs create mode 100644 src/main.rs create mode 100644 ui/app/index.slint create mode 100644 ui/entities/token/index.slint create mode 100644 ui/entities/token/ui/token-list.slint create mode 100644 ui/index.slint create mode 100644 ui/pages/auth/index.slint create mode 100644 ui/pages/auth/ui/login-page.slint create mode 100644 ui/pages/dashboard/index.slint create mode 100644 ui/pages/dashboard/ui/dashboard-page.slint create mode 100644 ui/pages/hunting-ground/index.slint create mode 100644 ui/pages/hunting-ground/ui/hunting-ground-page.slint create mode 100644 ui/pages/markets/index.slint create mode 100644 ui/pages/markets/ui/markets-page.slint create mode 100644 ui/pages/portfolio/index.slint create mode 100644 ui/pages/portfolio/ui/portfolio-page.slint create mode 100644 ui/pages/trading/index.slint create mode 100644 ui/pages/trading/ui/trading-page.slint create mode 100644 ui/shared/config/index.slint create mode 100644 ui/shared/design-system/components/design-system.slint create mode 100644 ui/shared/design-system/index.slint create mode 100644 ui/shared/design-system/tokens/theme.slint create mode 100644 ui/shared/index.slint create mode 100644 ui/shared/lib/index.slint create mode 100644 ui/shared/ui/button/button.slint create mode 100644 ui/shared/ui/button/index.slint create mode 100644 ui/shared/ui/card/card.slint create mode 100644 ui/shared/ui/card/index.slint create mode 100644 ui/shared/ui/index.slint create mode 100644 ui/shared/ui/input/index.slint create mode 100644 ui/shared/ui/input/input.slint create mode 100644 ui/shared/ui/layout/index.slint create mode 100644 ui/shared/ui/layout/layout.slint create mode 100644 ui/shared/ui/loading/index.slint create mode 100644 ui/shared/ui/loading/loading.slint create mode 100644 ui/widgets/navigation/index.slint create mode 100644 ui/widgets/navigation/ui/navigation-widget.slint create mode 100644 ui/widgets/navigation/ui/sidebar.slint create mode 100644 ui/widgets/trading-stats/index.slint create mode 100644 ui/widgets/trading-stats/ui/stats-card.slint create mode 100644 ui/widgets/user-profile/index.slint create mode 100644 ui/widgets/user-profile/ui/profile.slint create mode 100644 ui/widgets/window-controls/index.slint create mode 100644 ui/widgets/window-controls/ui/title-bar.slint create mode 100644 ui/widgets/window-controls/ui/window-controls-widget.slint diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0563813 --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +target/ +**/target/ +dist/ +node_modules/ +diff + +# Environment files +.env +.env.prod +.logs/ +.logs/** +docker.dev/**/.env +**/.env +.env.*local + +*address.json +cex_database* + +Config.toml +.cursor/ + +*.crt +*.key +*.p12 \ No newline at end of file diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..8a69292 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,7 @@ +{ + "recommendations": [ + "rust-lang.rust-analyzer", + "vadimcn.vscode-lldb", + "Slint.slint" + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..8bb69fd --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "files.autoSave": "off" +} diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..b51b57f --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,8738 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "ab_glyph" +version = "0.2.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec3672c180e71eeaaac3a541fbbc5f5ad4def8b747c595ad30d674e43049f7b0" +dependencies = [ + "ab_glyph_rasterizer", + "owned_ttf_parser", +] + +[[package]] +name = "ab_glyph_rasterizer" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" + +[[package]] +name = "accesskit" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e25ae84c0260bdf5df07796d7cc4882460de26a2b406ec0e6c42461a723b271b" + +[[package]] +name = "accesskit_atspi_common" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29bd41de2e54451a8ca0dd95ebf45b54d349d29ebceb7f20be264eee14e3d477" +dependencies = [ + "accesskit", + "accesskit_consumer", + "atspi-common", + "serde", + "thiserror 1.0.69", + "zvariant", +] + +[[package]] +name = "accesskit_consumer" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bfae7c152994a31dc7d99b8eeac7784a919f71d1b306f4b83217e110fd3824c" +dependencies = [ + "accesskit", + "hashbrown 0.15.4", +] + +[[package]] +name = "accesskit_macos" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "692dd318ff8a7a0ffda67271c4bd10cf32249656f4e49390db0b26ca92b095f2" +dependencies = [ + "accesskit", + "accesskit_consumer", + "hashbrown 0.15.4", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "accesskit_unix" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5f7474c36606d0fe4f438291d667bae7042ea2760f506650ad2366926358fc8" +dependencies = [ + "accesskit", + "accesskit_atspi_common", + "async-channel", + "async-executor", + "async-task", + "atspi", + "futures-lite", + "futures-util", + "serde", + "zbus", +] + +[[package]] +name = "accesskit_windows" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70a042b62c9c05bf7b616f015515c17d2813f3ba89978d6f4fc369735d60700a" +dependencies = [ + "accesskit", + "accesskit_consumer", + "hashbrown 0.15.4", + "static_assertions", + "windows", + "windows-core", +] + +[[package]] +name = "accesskit_winit" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c1f0d3d13113d8857542a4f8d1a1c24d1dc1527b77aee8426127f4901588708" +dependencies = [ + "accesskit", + "accesskit_macos", + "accesskit_unix", + "accesskit_windows", + "raw-window-handle", + "winit", +] + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "getrandom 0.3.3", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "aligned-vec" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc890384c8602f339876ded803c97ad529f3842aba97f6392b3dba0dd171769b" +dependencies = [ + "equator", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "android-activity" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" +dependencies = [ + "android-properties", + "bitflags 2.9.1", + "cc", + "cesu8", + "jni", + "jni-sys", + "libc", + "log", + "ndk", + "ndk-context", + "ndk-sys", + "num_enum", + "thiserror 1.0.69", +] + +[[package]] +name = "android-properties" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anstream" +version = "0.6.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" + +[[package]] +name = "anstyle-parse" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882" +dependencies = [ + "anstyle", + "once_cell_polyfill", + "windows-sys 0.59.0", +] + +[[package]] +name = "anyhow" +version = "1.0.98" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" + +[[package]] +name = "arbitrary" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" + +[[package]] +name = "arg_enum_proc_macro" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "ark-bn254" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a22f4561524cd949590d78d7d4c5df8f592430d221f7f3c9497bbafd8972120f" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-std", +] + +[[package]] +name = "ark-ec" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" +dependencies = [ + "ark-ff", + "ark-poly", + "ark-serialize", + "ark-std", + "derivative", + "hashbrown 0.13.2", + "itertools 0.10.5", + "num-traits", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm", + "ark-ff-macros", + "ark-serialize", + "ark-std", + "derivative", + "digest 0.10.7", + "itertools 0.10.5", + "num-bigint", + "num-traits", + "paste", + "rustc_version", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-poly" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" +dependencies = [ + "ark-ff", + "ark-serialize", + "ark-std", + "derivative", + "hashbrown 0.13.2", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-serialize-derive", + "ark-std", + "digest 0.10.7", + "num-bigint", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "as-raw-xcb-connection" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" + +[[package]] +name = "async-broadcast" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" +dependencies = [ + "event-listener", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-channel" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb812ffb58524bdd10860d7d974e2f01cc0950c2438a74ee5ec2e2280c6c4ffa" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "pin-project-lite", + "slab", +] + +[[package]] +name = "async-io" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1237c0ae75a0f3765f58910ff9cdd0a12eeb39ab2f4c7de23262f337f0aacbb3" +dependencies = [ + "async-lock", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix 1.0.7", + "slab", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "async-lock" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" +dependencies = [ + "event-listener", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-process" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cde3f4e40e6021d7acffc90095cbd6dc54cb593903d1de5832f435eb274b85dc" +dependencies = [ + "async-channel", + "async-io", + "async-lock", + "async-signal", + "async-task", + "blocking", + "cfg-if", + "event-listener", + "futures-lite", + "rustix 1.0.7", + "tracing", +] + +[[package]] +name = "async-recursion" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "async-signal" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7605a4e50d4b06df3898d5a70bf5fde51ed9059b0434b73105193bc27acce0d" +dependencies = [ + "async-io", + "async-lock", + "atomic-waker", + "cfg-if", + "futures-core", + "futures-io", + "rustix 1.0.7", + "signal-hook-registry", + "slab", + "windows-sys 0.59.0", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + +[[package]] +name = "async-trait" +version = "0.1.88" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "atspi" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c83247582e7508838caf5f316c00791eee0e15c0bf743e6880585b867e16815c" +dependencies = [ + "atspi-common", + "atspi-connection", + "atspi-proxies", +] + +[[package]] +name = "atspi-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33dfc05e7cdf90988a197803bf24f5788f94f7c94a69efa95683e8ffe76cfdfb" +dependencies = [ + "enumflags2", + "serde", + "static_assertions", + "zbus", + "zbus-lockstep", + "zbus-lockstep-macros", + "zbus_names", + "zvariant", +] + +[[package]] +name = "atspi-connection" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4193d51303d8332304056ae0004714256b46b6635a5c556109b319c0d3784938" +dependencies = [ + "atspi-common", + "atspi-proxies", + "futures-lite", + "zbus", +] + +[[package]] +name = "atspi-proxies" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2eebcb9e7e76f26d0bcfd6f0295e1cd1e6f33bedbc5698a971db8dc43d7751c" +dependencies = [ + "atspi-common", + "serde", + "zbus", +] + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi 0.1.19", + "libc", + "winapi", +] + +[[package]] +name = "auto_enums" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c170965892137a3a9aeb000b4524aa3cc022a310e709d848b6e1cdce4ab4781" +dependencies = [ + "derive_utils", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "av1-grain" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f3efb2ca85bc610acfa917b5aaa36f3fcbebed5b3182d7f877b02531c4b80c8" +dependencies = [ + "anyhow", + "arrayvec", + "log", + "nom", + "num-rational", + "v_frame", +] + +[[package]] +name = "avif-serialize" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19135c0c7a60bfee564dbe44ab5ce0557c6bf3884e5291a50be76a15640c4fbd" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "backtrace" +version = "0.3.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets 0.52.6", +] + +[[package]] +name = "base64" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bincode" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36eaf5d7b090263e8150820482d5d93cd964a81e4019913c972f4edcc6edb740" +dependencies = [ + "serde", + "unty", +] + +[[package]] +name = "bindgen" +version = "0.71.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3" +dependencies = [ + "bitflags 2.9.1", + "cexpr", + "clang-sys", + "itertools 0.13.0", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash 2.1.1", + "shlex", + "syn 2.0.104", +] + +[[package]] +name = "bit_field" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" +dependencies = [ + "serde", +] + +[[package]] +name = "bitstream-io" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6099cdc01846bc367c4e7dd630dc5966dccf36b652fae7a74e17b640411a91b2" + +[[package]] +name = "blake3" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", + "digest 0.10.7", +] + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block2" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" +dependencies = [ + "objc2 0.5.2", +] + +[[package]] +name = "block2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "340d2f0bdb2a43c1d3cd40513185b2bd7def0aa1052f956455114bc98f82dcf2" +dependencies = [ + "objc2 0.6.1", +] + +[[package]] +name = "blocking" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +dependencies = [ + "async-channel", + "async-task", + "futures-io", + "futures-lite", + "piper", +] + +[[package]] +name = "borsh" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115e54d64eb62cdebad391c19efc9dce4981c690c85a33a12199d99bb9546fee" +dependencies = [ + "borsh-derive 0.10.4", + "hashbrown 0.13.2", +] + +[[package]] +name = "borsh" +version = "1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad8646f98db542e39fc66e68a20b2144f6a732636df7c2354e74645faaa433ce" +dependencies = [ + "borsh-derive 1.5.7", + "cfg_aliases", +] + +[[package]] +name = "borsh-derive" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "831213f80d9423998dd696e2c5345aba6be7a0bd8cd19e31c5243e13df1cef89" +dependencies = [ + "borsh-derive-internal", + "borsh-schema-derive-internal", + "proc-macro-crate 0.1.5", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "borsh-derive" +version = "1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdd1d3c0c2f5833f22386f252fe8ed005c7f59fdcddeef025c01b4c3b9fd9ac3" +dependencies = [ + "once_cell", + "proc-macro-crate 3.3.0", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "borsh-derive-internal" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65d6ba50644c98714aa2a70d13d7df3cd75cd2b523a2b452bf010443800976b3" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "borsh-schema-derive-internal" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "276691d96f063427be83e6692b86148e488ebba9f48f77788724ca027ba3b6d4" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "built" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56ed6191a7e78c36abdb16ab65341eefd73d64d303fffccdbb00d51e4205967b" + +[[package]] +name = "bumpalo" +version = "3.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" + +[[package]] +name = "bv" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8834bb1d8ee5dc048ee3124f2c7c1afcc6bc9aed03f11e9dfd8c69470a5db340" +dependencies = [ + "feature-probe", + "serde", +] + +[[package]] +name = "by_address" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64fa3c856b712db6612c019f14756e64e4bcea13337a6b33b696333a9eaa2d06" + +[[package]] +name = "bytemuck" +version = "1.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c76a5792e44e4abe34d3abf15636779261d45a7450612059293d1d2cfc63422" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ecc273b49b3205b83d648f0690daa588925572cc5063745bfe547fe7ec8e1a1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "byteorder-lite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "calloop" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" +dependencies = [ + "bitflags 2.9.1", + "log", + "polling", + "rustix 0.38.44", + "slab", + "thiserror 1.0.69", +] + +[[package]] +name = "calloop" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10929724661d1c43856fd87c7a127ae944ec55579134fb485e4136fb6a46fdcb" +dependencies = [ + "bitflags 2.9.1", + "polling", + "rustix 0.38.44", + "slab", + "tracing", +] + +[[package]] +name = "calloop-wayland-source" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20" +dependencies = [ + "calloop 0.13.0", + "rustix 0.38.44", + "wayland-backend", + "wayland-client", +] + +[[package]] +name = "cc" +version = "1.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc" +dependencies = [ + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + +[[package]] +name = "cfg-expr" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" +dependencies = [ + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cfg-if" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "cfg_eval" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45565fc9416b9896014f5732ac776f810ee53a66730c17e4020c3ec064a8f88f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "cgl" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ced0551234e87afee12411d535648dd89d2e7f34c78b753395567aff3d447ff" +dependencies = [ + "libc", +] + +[[package]] +name = "chrono" +version = "0.4.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-link", +] + +[[package]] +name = "chrono-tz" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efdce149c370f133a071ca8ef6ea340b7b88748ab0810097a9e2976eaa34b4f3" +dependencies = [ + "chrono", + "chrono-tz-build", + "phf", +] + +[[package]] +name = "chrono-tz-build" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f10f8c9340e31fc120ff885fcdb54a0b48e474bbd77cab557f0c30a3e569402" +dependencies = [ + "parse-zoneinfo", + "phf_codegen", +] + +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "clipboard-win" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15efe7a882b08f34e38556b14f2fb3daa98769d06c7f0c1b076dfd0d983bc892" +dependencies = [ + "error-code", +] + +[[package]] +name = "clru" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbd0f76e066e64fdc5631e3bb46381254deab9ef1158292f27c8c57e3bf3fe59" + +[[package]] +name = "codemap" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e769b5c8c8283982a987c6e948e540254f1058d5a74b8794914d4ef5fc2a24" + +[[package]] +name = "codemap-diagnostic" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc20770be05b566a963bf91505e60412c4a2d016d1ef95c5512823bb085a8122" +dependencies = [ + "codemap", + "termcolor", +] + +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + +[[package]] +name = "colorchoice" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" + +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if", + "wasm-bindgen", +] + +[[package]] +name = "console_log" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89f72f65e8501878b8a004d5a1afb780987e2ce2b4532c562e367a72c57499f" +dependencies = [ + "log", + "web-sys", +] + +[[package]] +name = "const-field-offset" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91fcde4ca1211b5a94b573083c472ee19e86b19a441913f66e1cc5c41daf0255" +dependencies = [ + "const-field-offset-macro", + "field-offset", +] + +[[package]] +name = "const-field-offset-macro" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5387f5bbc9e9e6c96436ea125afa12614cebf8ac67f49abc08c1e7a891466c90" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + +[[package]] +name = "copypasta" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e6811e17f81fe246ef2bc553f76b6ee6ab41a694845df1d37e52a92b7bbd38a" +dependencies = [ + "clipboard-win", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", + "smithay-clipboard", + "x11-clipboard", +] + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "core-graphics" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" +dependencies = [ + "bitflags 1.3.2", + "core-foundation 0.9.4", + "core-graphics-types 0.1.3", + "foreign-types 0.5.0", + "libc", +] + +[[package]] +name = "core-graphics" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1" +dependencies = [ + "bitflags 2.9.1", + "core-foundation 0.10.1", + "core-graphics-types 0.2.0", + "foreign-types 0.5.0", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" +dependencies = [ + "bitflags 1.3.2", + "core-foundation 0.9.4", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" +dependencies = [ + "bitflags 2.9.1", + "core-foundation 0.10.1", + "libc", +] + +[[package]] +name = "core-text" +version = "21.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a593227b66cbd4007b2a050dfdd9e1d1318311409c8d600dc82ba1b15ca9c130" +dependencies = [ + "core-foundation 0.10.1", + "core-graphics 0.24.0", + "foreign-types 0.5.0", + "libc", +] + +[[package]] +name = "core_maths" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77745e017f5edba1a9c1d854f6f3a52dac8a12dd5af5d2f54aecf61e43d80d30" +dependencies = [ + "libm", +] + +[[package]] +name = "countme" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7704b5fdd17b18ae31c4c1da5a2e0305a2bf17b5249300a9ee9ed7b72114c636" + +[[package]] +name = "cpp" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36bcac3d8234c1fb813358e83d1bb6b0290a3d2b3b5efc6b88bfeaf9d8eec17" +dependencies = [ + "cpp_macros", +] + +[[package]] +name = "cpp_build" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27f8638c97fbd79cc6fc80b616e0e74b49bac21014faed590bbc89b7e2676c90" +dependencies = [ + "cc", + "cpp_common", + "lazy_static", + "proc-macro2", + "regex", + "syn 2.0.104", + "unicode-xid", +] + +[[package]] +name = "cpp_common" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25fcfea2ee05889597d35e986c2ad0169694320ae5cc8f6d2640a4bb8a884560" +dependencies = [ + "lazy_static", + "proc-macro2", + "syn 2.0.104", +] + +[[package]] +name = "cpp_macros" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d156158fe86e274820f5a53bc9edb0885a6e7113909497aa8d883b69dd171871" +dependencies = [ + "aho-corasick", + "byteorder", + "cpp_common", + "lazy_static", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "critical-section" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" + +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "crypto-mac" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" +dependencies = [ + "generic-array", + "subtle", +] + +[[package]] +name = "ctor-lite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f791803201ab277ace03903de1594460708d2d54df6053f2d9e82f592b19e3b" + +[[package]] +name = "cursor-icon" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f27ae1dd37df86211c42e150270f82743308803d90a6f6e6651cd730d5e1732f" + +[[package]] +name = "curve25519-dalek" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90f9d052967f590a76e62eb387bd0bbb1b000182c3cefe5364db6b7211651bc0" +dependencies = [ + "byteorder", + "digest 0.9.0", + "rand_core 0.5.1", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest 0.10.7", + "fiat-crypto", + "rand_core 0.6.4", + "rustc_version", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "darling" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.104", +] + +[[package]] +name = "darling_macro" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "data-url" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c297a1c74b71ae29df00c3e22dd9534821d60eb9af5a0192823fa2acea70c2a" + +[[package]] +name = "derivation-path" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", + "unicode-xid", +] + +[[package]] +name = "derive_utils" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccfae181bab5ab6c5478b2ccb69e4c68a02f8c3ec72f6616bfec9dbc599d2ee0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "crypto-common", + "subtle", +] + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "dispatch2" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" +dependencies = [ + "bitflags 2.9.1", + "objc2 0.6.1", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "dlib" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" +dependencies = [ + "libloading", +] + +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + +[[package]] +name = "dpi" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" + +[[package]] +name = "drm" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80bc8c5c6c2941f70a55c15f8d9f00f9710ebda3ffda98075f996a0e6c92756f" +dependencies = [ + "bitflags 2.9.1", + "bytemuck", + "drm-ffi", + "drm-fourcc", + "libc", + "rustix 0.38.44", +] + +[[package]] +name = "drm-ffi" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8e41459d99a9b529845f6d2c909eb9adf3b6d2f82635ae40be8de0601726e8b" +dependencies = [ + "drm-sys", + "rustix 0.38.44", +] + +[[package]] +name = "drm-fourcc" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0aafbcdb8afc29c1a7ee5fbe53b5d62f4565b35a042a662ca9fecd0b54dae6f4" + +[[package]] +name = "drm-sys" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bafb66c8dbc944d69e15cfcc661df7e703beffbaec8bd63151368b06c5f9858c" +dependencies = [ + "libc", + "linux-raw-sys 0.6.5", +] + +[[package]] +name = "dwrote" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfe1f192fcce01590bd8d839aca53ce0d11d803bf291b2a6c4ad925a8f0024be" +dependencies = [ + "lazy_static", + "libc", + "serde", + "serde_derive", + "winapi", + "wio", +] + +[[package]] +name = "ed25519" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" +dependencies = [ + "signature", +] + +[[package]] +name = "ed25519-dalek" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" +dependencies = [ + "curve25519-dalek 3.2.1", + "ed25519", + "rand 0.7.3", + "serde", + "sha2 0.9.9", + "zeroize", +] + +[[package]] +name = "ed25519-dalek-bip32" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d2be62a4061b872c8c0873ee4fc6f101ce7b889d039f019c5fa2af471a59908" +dependencies = [ + "derivation-path", + "ed25519-dalek", + "hmac 0.12.1", + "sha2 0.10.9", +] + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "endi" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" + +[[package]] +name = "enumflags2" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" +dependencies = [ + "enumflags2_derive", + "serde", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "env_filter" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" +dependencies = [ + "log", + "regex", +] + +[[package]] +name = "env_logger" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" +dependencies = [ + "atty", + "humantime", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "env_logger" +version = "0.11.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c863f0904021b108aa8b2f55046443e6b1ebde8fd4a15c399893aae4fa069f" +dependencies = [ + "anstream", + "anstyle", + "env_filter", + "jiff", + "log", +] + +[[package]] +name = "equator" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4711b213838dfee0117e3be6ac926007d7f433d7bbe33595975d4190cb07e6fc" +dependencies = [ + "equator-macro", +] + +[[package]] +name = "equator-macro" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "error-code" +version = "3.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59" + +[[package]] +name = "euclid" +version = "0.22.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad9cdb4b747e485a12abb0e6566612956c7a1bafa3bdb8d682c5b6d403589e48" +dependencies = [ + "num-traits", +] + +[[package]] +name = "event-listener" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +dependencies = [ + "event-listener", + "pin-project-lite", +] + +[[package]] +name = "exr" +version = "1.73.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83197f59927b46c04a183a619b7c29df34e63e63c7869320862268c0ef687e0" +dependencies = [ + "bit_field", + "half", + "lebe", + "miniz_oxide", + "rayon-core", + "smallvec", + "zune-inflate", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fdeflate" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "feature-probe" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" + +[[package]] +name = "femtovg" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffdf29af13b81d7562ccd57624242b2ed56edc2c83dad25f13bd74d87e7fa8d9" +dependencies = [ + "bitflags 2.9.1", + "bytemuck", + "fnv", + "glow", + "image", + "imgref", + "log", + "lru", + "rgb", + "rustybuzz", + "slotmap", + "unicode-bidi", + "unicode-segmentation", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + +[[package]] +name = "field-offset" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" +dependencies = [ + "memoffset", + "rustc_version", +] + +[[package]] +name = "filetime" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" +dependencies = [ + "cfg-if", + "libc", + "libredox", + "windows-sys 0.59.0", +] + +[[package]] +name = "five8" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75b8549488b4715defcb0d8a8a1c1c76a80661b5fa106b4ca0e7fce59d7d875" +dependencies = [ + "five8_core", +] + +[[package]] +name = "five8_const" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26dec3da8bc3ef08f2c04f61eab298c3ab334523e55f076354d6d6f613799a7b" +dependencies = [ + "five8_core", +] + +[[package]] +name = "five8_core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2551bf44bc5f776c15044b9b94153a00198be06743e262afaaa61f11ac7523a5" + +[[package]] +name = "flate2" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "float-cmp" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "fontconfig-parser" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbc773e24e02d4ddd8395fd30dc147524273a83e54e0f312d986ea30de5f5646" +dependencies = [ + "roxmltree", +] + +[[package]] +name = "fontdb" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "457e789b3d1202543297a350643cf459f836cade38934e7a4cf6a39e7cde2905" +dependencies = [ + "fontconfig-parser", + "log", + "memmap2 0.9.5", + "slotmap", + "tinyvec", + "ttf-parser 0.25.1", +] + +[[package]] +name = "fontdue" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e57e16b3fe8ff4364c0661fdaac543fb38b29ea9bc9c2f45612d90adf931d2b" +dependencies = [ + "hashbrown 0.15.4", + "rayon", + "ttf-parser 0.21.1", +] + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared 0.1.1", +] + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared 0.3.1", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-lite" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "gbm" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce852e998d3ca5e4a97014fb31c940dc5ef344ec7d364984525fd11e8a547e6a" +dependencies = [ + "bitflags 2.9.1", + "drm", + "drm-fourcc", + "gbm-sys", + "libc", +] + +[[package]] +name = "gbm-sys" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c13a5f2acc785d8fb6bf6b7ab6bfb0ef5dad4f4d97e8e70bb8e470722312f76f" +dependencies = [ + "libc", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "gethostname" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" +dependencies = [ + "libc", + "windows-targets 0.48.5", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", +] + +[[package]] +name = "gif" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ae047235e33e2829703574b54fdec96bfbad892062d97fed2f76022287de61b" +dependencies = [ + "color_quant", + "weezl", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "gl_generator" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" +dependencies = [ + "khronos_api", + "log", + "xml-rs", +] + +[[package]] +name = "glob" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" + +[[package]] +name = "glow" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e5ea60d70410161c8bf5da3fdfeaa1c72ed2c15f8bbb9d19fe3a4fad085f08" +dependencies = [ + "js-sys", + "slotmap", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "glutin" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12124de845cacfebedff80e877bb37b5b75c34c5a4c89e47e1cdd67fb6041325" +dependencies = [ + "bitflags 2.9.1", + "cfg_aliases", + "cgl", + "dispatch2", + "glutin_egl_sys", + "glutin_glx_sys", + "glutin_wgl_sys", + "libloading", + "objc2 0.6.1", + "objc2-app-kit 0.3.1", + "objc2-core-foundation", + "objc2-foundation 0.3.1", + "once_cell", + "raw-window-handle", + "wayland-sys", + "windows-sys 0.52.0", + "x11-dl", +] + +[[package]] +name = "glutin-winit" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85edca7075f8fc728f28cb8fbb111a96c3b89e930574369e3e9c27eb75d3788f" +dependencies = [ + "cfg_aliases", + "glutin", + "raw-window-handle", + "winit", +] + +[[package]] +name = "glutin_egl_sys" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c4680ba6195f424febdc3ba46e7a42a0e58743f2edb115297b86d7f8ecc02d2" +dependencies = [ + "gl_generator", + "windows-sys 0.52.0", +] + +[[package]] +name = "glutin_glx_sys" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7bb2938045a88b612499fbcba375a77198e01306f52272e692f8c1f3751185" +dependencies = [ + "gl_generator", + "x11-dl", +] + +[[package]] +name = "glutin_wgl_sys" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c4ee00b289aba7a9e5306d57c2d05499b2e5dc427f84ac708bd2c090212cf3e" +dependencies = [ + "gl_generator", +] + +[[package]] +name = "h2" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "half" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" +dependencies = [ + "cfg-if", + "crunchy", +] + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" + +[[package]] +name = "hashbrown" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", + "rayon", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hmac" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" +dependencies = [ + "crypto-mac", + "digest 0.9.0", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "hmac-drbg" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" +dependencies = [ + "digest 0.9.0", + "generic-array", + "hmac 0.8.1", +] + +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "humantime" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b112acc8b3adf4b107a8ec20977da0273a8c386765a3ec0229bd500a1443f9f" + +[[package]] +name = "hyper" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http", + "http-body", + "hyper", + "libc", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", +] + +[[package]] +name = "i-slint-backend-linuxkms" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7245ddc95cd0ae039b8dbb53449eb94110b24cbd47a32082970a25ad31b77f8d" +dependencies = [ + "bytemuck", + "calloop 0.14.2", + "drm", + "gbm", + "glutin", + "i-slint-common", + "i-slint-core", + "i-slint-renderer-femtovg", + "input", + "memmap2 0.9.5", + "nix", + "raw-window-handle", + "xkbcommon", +] + +[[package]] +name = "i-slint-backend-qt" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a430b595f9a33f819a7b2a0c75b65c8c0a6cfdf469e40247f570c0ad50cc052" +dependencies = [ + "const-field-offset", + "cpp", + "cpp_build", + "i-slint-common", + "i-slint-core", + "i-slint-core-macros", + "lyon_path", + "pin-project", + "pin-weak", + "qttypes", + "vtable", +] + +[[package]] +name = "i-slint-backend-selector" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50166eb0f0f63ffa514069cdad5465d1d4c711c57dbd495f16f0a4ee14b82e46" +dependencies = [ + "cfg-if", + "i-slint-backend-linuxkms", + "i-slint-backend-qt", + "i-slint-backend-winit", + "i-slint-common", + "i-slint-core", + "i-slint-core-macros", +] + +[[package]] +name = "i-slint-backend-winit" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c3b5697d3fbbc7ae0fcba4592c76f39d13a25fad055064a31855f2234fd82ba" +dependencies = [ + "accesskit", + "accesskit_winit", + "bytemuck", + "cfg-if", + "cfg_aliases", + "copypasta", + "derive_more", + "futures", + "glutin", + "glutin-winit", + "i-slint-common", + "i-slint-core", + "i-slint-core-macros", + "i-slint-renderer-femtovg", + "i-slint-renderer-skia", + "imgref", + "lyon_path", + "muda", + "objc2-app-kit 0.3.1", + "pin-weak", + "raw-window-handle", + "rgb", + "scoped-tls-hkt", + "scopeguard", + "softbuffer", + "vtable", + "wasm-bindgen", + "web-sys", + "winit", + "zbus", +] + +[[package]] +name = "i-slint-common" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c400c33bd6bc68397adefa1be2abaf77cdd90c216ad88b1be2ebdb0003ea996" +dependencies = [ + "cfg-if", + "derive_more", + "fontdb", + "libloading", + "ttf-parser 0.25.1", +] + +[[package]] +name = "i-slint-compiler" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1eafbcc08babe8bb24967193a7796c0e26170d0a6cdf09236cc2fdb63dded502" +dependencies = [ + "by_address", + "codemap", + "codemap-diagnostic", + "derive_more", + "fontdue", + "i-slint-common", + "image", + "itertools 0.14.0", + "linked_hash_set", + "lyon_extra", + "lyon_path", + "num_enum", + "polib", + "proc-macro2", + "quote", + "rayon", + "resvg", + "rowan", + "smol_str 0.3.2", + "strum", + "typed-index-collections", + "url", +] + +[[package]] +name = "i-slint-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc384a0a106e7bc1aaf6fbf06d5a4d0d8e51a4bc5ff5ce36dbe559620aef4533" +dependencies = [ + "auto_enums", + "bitflags 2.9.1", + "bytemuck", + "cfg-if", + "chrono", + "clru", + "const-field-offset", + "derive_more", + "euclid", + "fontdue", + "i-slint-common", + "i-slint-core-macros", + "image", + "integer-sqrt", + "lyon_algorithms", + "lyon_extra", + "lyon_geom", + "lyon_path", + "num-traits", + "once_cell", + "pin-project", + "pin-weak", + "portable-atomic", + "raw-window-handle", + "resvg", + "rgb", + "rustversion", + "rustybuzz", + "scoped-tls-hkt", + "scopeguard", + "slab", + "strum", + "sys-locale", + "unicode-linebreak", + "unicode-script", + "unicode-segmentation", + "vtable", + "wasm-bindgen", + "web-sys", + "web-time", +] + +[[package]] +name = "i-slint-core-macros" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81504739c60f11af98f80f287624379514923888ecdf37e0bc43c5dc1cadafa5" +dependencies = [ + "quote", + "serde_json", + "syn 2.0.104", +] + +[[package]] +name = "i-slint-renderer-femtovg" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "754f4a057294c77897b0a4a9795131e2442f494e02feccbcd09bd041270f789a" +dependencies = [ + "cfg-if", + "const-field-offset", + "core-foundation 0.10.1", + "core-text", + "derive_more", + "dwrote", + "femtovg", + "glow", + "i-slint-common", + "i-slint-core", + "i-slint-core-macros", + "imgref", + "lyon_path", + "pin-weak", + "rgb", + "scoped-tls-hkt", + "ttf-parser 0.25.1", + "unicode-script", + "unicode-segmentation", + "wasm-bindgen", + "web-sys", + "winapi", +] + +[[package]] +name = "i-slint-renderer-skia" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "687126d7e82d447e15bc2666053f7653fa562e11dc6a9799e6dd0186a7927142" +dependencies = [ + "bytemuck", + "cfg-if", + "cfg_aliases", + "const-field-offset", + "derive_more", + "glow", + "glutin", + "i-slint-common", + "i-slint-core", + "i-slint-core-macros", + "lyon_path", + "objc2 0.6.1", + "objc2-app-kit 0.3.1", + "objc2-core-foundation", + "objc2-foundation 0.3.1", + "objc2-metal 0.3.1", + "objc2-quartz-core 0.3.1", + "pin-weak", + "raw-window-handle", + "raw-window-metal", + "scoped-tls-hkt", + "skia-safe", + "softbuffer", + "unicode-segmentation", + "vtable", + "windows", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" + +[[package]] +name = "icu_properties" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "potential_utf", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" + +[[package]] +name = "icu_provider" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +dependencies = [ + "displaydoc", + "icu_locale_core", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "image" +version = "0.25.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db35664ce6b9810857a38a906215e75a9c879f0696556a39f59c62829710251a" +dependencies = [ + "bytemuck", + "byteorder-lite", + "color_quant", + "exr", + "gif", + "image-webp", + "num-traits", + "png", + "qoi", + "ravif", + "rayon", + "rgb", + "tiff", + "zune-core", + "zune-jpeg", +] + +[[package]] +name = "image-webp" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6970fe7a5300b4b42e62c52efa0187540a5bef546c60edaf554ef595d2e6f0b" +dependencies = [ + "byteorder-lite", + "quick-error", +] + +[[package]] +name = "imagesize" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edcd27d72f2f071c64249075f42e205ff93c9a4c5f6c6da53e79ed9f9832c285" + +[[package]] +name = "imgref" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0263a3d970d5c054ed9312c0057b4f3bde9c0b33836d3637361d4a9e6e7a408" + +[[package]] +name = "indexmap" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +dependencies = [ + "equivalent", + "hashbrown 0.15.4", +] + +[[package]] +name = "input" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbdc09524a91f9cacd26f16734ff63d7dc650daffadd2b6f84d17a285bd875a9" +dependencies = [ + "bitflags 2.9.1", + "input-sys", + "libc", + "log", + "udev", +] + +[[package]] +name = "input-sys" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd4f5b4d1c00331c5245163aacfe5f20be75b564c7112d45893d4ae038119eb0" + +[[package]] +name = "integer-sqrt" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "276ec31bcb4a9ee45f58bec6f9ec700ae4cf4f4f8f2fa7e06cb406bd5ffdd770" +dependencies = [ + "num-traits", +] + +[[package]] +name = "interpolate_name" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "io-lifetimes" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" +dependencies = [ + "hermit-abi 0.3.9", + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "jiff" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be1f93b8b1eb69c77f24bbb0afdf66f54b632ee39af40ca21c4365a1d7347e49" +dependencies = [ + "jiff-static", + "log", + "portable-atomic", + "portable-atomic-util", + "serde", +] + +[[package]] +name = "jiff-static" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03343451ff899767262ec32146f6d559dd759fdadf42ff0e227c7c48f72594b4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys", + "log", + "thiserror 1.0.69", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "jobserver" +version = "0.1.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" +dependencies = [ + "getrandom 0.3.3", + "libc", +] + +[[package]] +name = "jpeg-decoder" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00810f1d8b74be64b13dbf3db89ac67740615d6c891f0e7b6179326533011a07" + +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "keyboard-types" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" +dependencies = [ + "bitflags 2.9.1", + "serde", + "unicode-segmentation", +] + +[[package]] +name = "khronos_api" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" + +[[package]] +name = "kurbo" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1077d333efea6170d9ccb96d3c3026f300ca0773da4938cc4c811daa6df68b0c" +dependencies = [ + "arrayvec", + "smallvec", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "lebe" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" + +[[package]] +name = "libc" +version = "0.2.174" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" + +[[package]] +name = "libfuzzer-sys" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf78f52d400cf2d84a3a973a78a592b4adc535739e0a5597a0da6f0c357adc75" +dependencies = [ + "arbitrary", + "cc", +] + +[[package]] +name = "libloading" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" +dependencies = [ + "cfg-if", + "windows-targets 0.53.2", +] + +[[package]] +name = "libm" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" + +[[package]] +name = "libredox" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1580801010e535496706ba011c15f8532df6b42297d2e471fec38ceadd8c0638" +dependencies = [ + "bitflags 2.9.1", + "libc", + "redox_syscall 0.5.13", +] + +[[package]] +name = "libsecp256k1" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9d220bc1feda2ac231cb78c3d26f27676b8cf82c96971f7aeef3d0cf2797c73" +dependencies = [ + "arrayref", + "base64 0.12.3", + "digest 0.9.0", + "hmac-drbg", + "libsecp256k1-core", + "libsecp256k1-gen-ecmult", + "libsecp256k1-gen-genmult", + "rand 0.7.3", + "serde", + "sha2 0.9.9", + "typenum", +] + +[[package]] +name = "libsecp256k1-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80" +dependencies = [ + "crunchy", + "digest 0.9.0", + "subtle", +] + +[[package]] +name = "libsecp256k1-gen-ecmult" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "libsecp256k1-gen-genmult" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "libudev-sys" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c8469b4a23b962c1396b9b451dda50ef5b283e8dd309d69033475fa9b334324" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "linereader" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d921fea6860357575519aca014c6e22470585accdd543b370c404a8a72d0dd1d" +dependencies = [ + "memchr", +] + +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + +[[package]] +name = "linked_hash_set" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bae85b5be22d9843c80e5fc80e9b64c8a3b1f98f867c709956eca3efff4e92e2" +dependencies = [ + "linked-hash-map", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + +[[package]] +name = "linux-raw-sys" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a385b1be4e5c3e362ad2ffa73c392e53f031eaa5b7d648e64cd87f27f6063d7" + +[[package]] +name = "linux-raw-sys" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + +[[package]] +name = "litemap" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" + +[[package]] +name = "lock_api" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" + +[[package]] +name = "loop9" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fae87c125b03c1d2c0150c90365d7d6bcc53fb73a9acaef207d2d065860f062" +dependencies = [ + "imgref", +] + +[[package]] +name = "lru" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" + +[[package]] +name = "lyon_algorithms" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f13c9be19d257c7d37e70608ed858e8eab4b2afcea2e3c9a622e892acbf43c08" +dependencies = [ + "lyon_path", + "num-traits", +] + +[[package]] +name = "lyon_extra" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ca94c7bf1e2557c2798989c43416822c12fc5dcc5e17cc3307ef0e71894a955" +dependencies = [ + "lyon_path", + "thiserror 1.0.69", +] + +[[package]] +name = "lyon_geom" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8af69edc087272df438b3ee436c4bb6d7c04aa8af665cfd398feae627dbd8570" +dependencies = [ + "arrayvec", + "euclid", + "num-traits", +] + +[[package]] +name = "lyon_path" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0047f508cd7a85ad6bad9518f68cce7b1bf6b943fb71f6da0ee3bc1e8cb75f25" +dependencies = [ + "lyon_geom", + "num-traits", +] + +[[package]] +name = "maybe-rayon" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" +dependencies = [ + "cfg-if", + "rayon", +] + +[[package]] +name = "memchr" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + +[[package]] +name = "memmap2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" +dependencies = [ + "libc", +] + +[[package]] +name = "memmap2" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +dependencies = [ + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", +] + +[[package]] +name = "muda" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58b89bf91c19bf036347f1ab85a81c560f08c0667c8601bece664d860a600988" +dependencies = [ + "crossbeam-channel", + "dpi", + "keyboard-types", + "objc2 0.6.1", + "objc2-app-kit 0.3.1", + "objc2-core-foundation", + "objc2-foundation 0.3.1", + "once_cell", + "png", + "thiserror 2.0.12", + "windows-sys 0.59.0", +] + +[[package]] +name = "native-tls" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "ndk" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" +dependencies = [ + "bitflags 2.9.1", + "jni-sys", + "log", + "ndk-sys", + "num_enum", + "raw-window-handle", + "thiserror 1.0.69", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "ndk-sys" +version = "0.6.0+11769913" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + +[[package]] +name = "nix" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" +dependencies = [ + "bitflags 2.9.1", + "cfg-if", + "cfg_aliases", + "libc", + "memoffset", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "noop_proc_macro" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_enum" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" +dependencies = [ + "proc-macro-crate 3.3.0", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "objc-sys" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" + +[[package]] +name = "objc2" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" +dependencies = [ + "objc-sys", + "objc2-encode", +] + +[[package]] +name = "objc2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88c6597e14493ab2e44ce58f2fdecf095a51f12ca57bec060a11c57332520551" +dependencies = [ + "objc2-encode", +] + +[[package]] +name = "objc2-app-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" +dependencies = [ + "bitflags 2.9.1", + "block2 0.5.1", + "libc", + "objc2 0.5.2", + "objc2-core-data 0.2.2", + "objc2-core-image 0.2.2", + "objc2-foundation 0.2.2", + "objc2-quartz-core 0.2.2", +] + +[[package]] +name = "objc2-app-kit" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6f29f568bec459b0ddff777cec4fe3fd8666d82d5a40ebd0ff7e66134f89bcc" +dependencies = [ + "bitflags 2.9.1", + "block2 0.6.1", + "libc", + "objc2 0.6.1", + "objc2-cloud-kit 0.3.1", + "objc2-core-data 0.3.1", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-core-image 0.3.1", + "objc2-foundation 0.3.1", + "objc2-quartz-core 0.3.1", +] + +[[package]] +name = "objc2-cloud-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" +dependencies = [ + "bitflags 2.9.1", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-core-location", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-cloud-kit" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17614fdcd9b411e6ff1117dfb1d0150f908ba83a7df81b1f118005fe0a8ea15d" +dependencies = [ + "bitflags 2.9.1", + "objc2 0.6.1", + "objc2-foundation 0.3.1", +] + +[[package]] +name = "objc2-contacts" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" +dependencies = [ + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-core-data" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" +dependencies = [ + "bitflags 2.9.1", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-core-data" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291fbbf7d29287518e8686417cf7239c74700fd4b607623140a7d4a3c834329d" +dependencies = [ + "bitflags 2.9.1", + "objc2 0.6.1", + "objc2-foundation 0.3.1", +] + +[[package]] +name = "objc2-core-foundation" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166" +dependencies = [ + "bitflags 2.9.1", + "dispatch2", + "objc2 0.6.1", +] + +[[package]] +name = "objc2-core-graphics" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "989c6c68c13021b5c2d6b71456ebb0f9dc78d752e86a98da7c716f4f9470f5a4" +dependencies = [ + "bitflags 2.9.1", + "dispatch2", + "objc2 0.6.1", + "objc2-core-foundation", + "objc2-io-surface", +] + +[[package]] +name = "objc2-core-image" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" +dependencies = [ + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "objc2-metal 0.2.2", +] + +[[package]] +name = "objc2-core-image" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79b3dc0cc4386b6ccf21c157591b34a7f44c8e75b064f85502901ab2188c007e" +dependencies = [ + "objc2 0.6.1", + "objc2-foundation 0.3.1", +] + +[[package]] +name = "objc2-core-location" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" +dependencies = [ + "block2 0.5.1", + "objc2 0.5.2", + "objc2-contacts", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-encode" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + +[[package]] +name = "objc2-foundation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" +dependencies = [ + "bitflags 2.9.1", + "block2 0.5.1", + "dispatch", + "libc", + "objc2 0.5.2", +] + +[[package]] +name = "objc2-foundation" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "900831247d2fe1a09a683278e5384cfb8c80c79fe6b166f9d14bfdde0ea1b03c" +dependencies = [ + "bitflags 2.9.1", + "objc2 0.6.1", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-io-surface" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7282e9ac92529fa3457ce90ebb15f4ecbc383e8338060960760fa2cf75420c3c" +dependencies = [ + "bitflags 2.9.1", + "objc2 0.6.1", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-link-presentation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" +dependencies = [ + "block2 0.5.1", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-metal" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" +dependencies = [ + "bitflags 2.9.1", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-metal" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f246c183239540aab1782457b35ab2040d4259175bd1d0c58e46ada7b47a874" +dependencies = [ + "bitflags 2.9.1", + "objc2 0.6.1", + "objc2-foundation 0.3.1", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" +dependencies = [ + "bitflags 2.9.1", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "objc2-metal 0.2.2", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90ffb6a0cd5f182dc964334388560b12a57f7b74b3e2dec5e2722aa2dfb2ccd5" +dependencies = [ + "bitflags 2.9.1", + "objc2 0.6.1", + "objc2-core-foundation", + "objc2-foundation 0.3.1", + "objc2-metal 0.3.1", +] + +[[package]] +name = "objc2-symbols" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" +dependencies = [ + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-ui-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" +dependencies = [ + "bitflags 2.9.1", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-cloud-kit 0.2.2", + "objc2-core-data 0.2.2", + "objc2-core-image 0.2.2", + "objc2-core-location", + "objc2-foundation 0.2.2", + "objc2-link-presentation", + "objc2-quartz-core 0.2.2", + "objc2-symbols", + "objc2-uniform-type-identifiers", + "objc2-user-notifications", +] + +[[package]] +name = "objc2-uniform-type-identifiers" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" +dependencies = [ + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-user-notifications" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" +dependencies = [ + "bitflags 2.9.1", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-core-location", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +dependencies = [ + "critical-section", + "portable-atomic", +] + +[[package]] +name = "once_cell_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "openssl" +version = "0.10.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" +dependencies = [ + "bitflags 2.9.1", + "cfg-if", + "foreign-types 0.3.2", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "openssl-probe" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + +[[package]] +name = "openssl-sys" +version = "0.9.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "orbclient" +version = "0.3.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba0b26cec2e24f08ed8bb31519a9333140a6599b867dac464bb150bdb796fd43" +dependencies = [ + "libredox", +] + +[[package]] +name = "ordered-stream" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" +dependencies = [ + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "owned_ttf_parser" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ec719bbf3b2a81c109a4e20b1f129b5566b7dce654bc3872f6a05abf82b2c4" +dependencies = [ + "ttf-parser 0.25.1", +] + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[package]] +name = "parking_lot" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.5.13", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "parse-zoneinfo" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f2a05b18d44e2957b88f96ba460715e295bc1d7510468a2f3d3b44535d26c24" +dependencies = [ + "regex", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "phf" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" +dependencies = [ + "phf_shared", +] + +[[package]] +name = "phf_codegen" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" +dependencies = [ + "phf_generator", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" +dependencies = [ + "phf_shared", + "rand 0.8.5", +] + +[[package]] +name = "phf_shared" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +dependencies = [ + "siphasher 1.0.1", +] + +[[package]] +name = "pico-args" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" + +[[package]] +name = "pin-project" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pin-weak" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b330c9d1b92dfe68442ca20b009c717d5f0b1e3cf4965e62f704c3c6e95a1305" + +[[package]] +name = "piper" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "png" +version = "0.17.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "polib" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b393b155cf9be86249cba1b56cc81be0e6212c66d94ac0d76d37a1761f3bb1b" +dependencies = [ + "linereader", +] + +[[package]] +name = "polling" +version = "3.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b53a684391ad002dd6a596ceb6c74fd004fdce75f4be2e3f615068abbea5fd50" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi 0.5.2", + "pin-project-lite", + "rustix 1.0.7", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "portable-atomic" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" +dependencies = [ + "critical-section", +] + +[[package]] +name = "portable-atomic-util" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +dependencies = [ + "portable-atomic", +] + +[[package]] +name = "potential_utf" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +dependencies = [ + "zerovec", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "prettyplease" +version = "0.2.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "061c1221631e079b26479d25bbf2275bfe5917ae8419cd7e34f13bfc2aa7539a" +dependencies = [ + "proc-macro2", + "syn 2.0.104", +] + +[[package]] +name = "proc-macro-crate" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml 0.5.11", +] + +[[package]] +name = "proc-macro-crate" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "profiling" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773" +dependencies = [ + "profiling-procmacros", +] + +[[package]] +name = "profiling-procmacros" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52717f9a02b6965224f95ca2a81e2e0c5c43baacd28ca057577988930b6c3d5b" +dependencies = [ + "quote", + "syn 2.0.104", +] + +[[package]] +name = "qoi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "qstring" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d464fae65fff2680baf48019211ce37aaec0c78e9264c84a3e484717f965104e" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "qttypes" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7edf5b38c97ad8900ad2a8418ee44b4adceaa866a4a3405e2f1c909871d7ebd" +dependencies = [ + "cpp", + "cpp_build", + "semver", +] + +[[package]] +name = "quick-error" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" + +[[package]] +name = "quick-xml" +version = "0.36.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7649a7b4df05aed9ea7ec6f628c67c9953a43869b8bc50929569b2999d443fe" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "quick-xml" +version = "0.37.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" +dependencies = [ + "memchr", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.16", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rav1e" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd87ce80a7665b1cce111f8a16c1f3929f6547ce91ade6addf4ec86a8dda5ce9" +dependencies = [ + "arbitrary", + "arg_enum_proc_macro", + "arrayvec", + "av1-grain", + "bitstream-io", + "built", + "cfg-if", + "interpolate_name", + "itertools 0.12.1", + "libc", + "libfuzzer-sys", + "log", + "maybe-rayon", + "new_debug_unreachable", + "noop_proc_macro", + "num-derive", + "num-traits", + "once_cell", + "paste", + "profiling", + "rand 0.8.5", + "rand_chacha 0.3.1", + "simd_helpers", + "system-deps", + "thiserror 1.0.69", + "v_frame", + "wasm-bindgen", +] + +[[package]] +name = "ravif" +version = "0.11.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5825c26fddd16ab9f515930d49028a630efec172e903483c94796cfe31893e6b" +dependencies = [ + "avif-serialize", + "imgref", + "loop9", + "quick-error", + "rav1e", + "rayon", + "rgb", +] + +[[package]] +name = "raw-window-handle" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" + +[[package]] +name = "raw-window-metal" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40d213455a5f1dc59214213c7330e074ddf8114c9a42411eb890c767357ce135" +dependencies = [ + "objc2 0.6.1", + "objc2-core-foundation", + "objc2-foundation 0.3.1", + "objc2-quartz-core 0.3.1", +] + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" +dependencies = [ + "bitflags 2.9.1", +] + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "reqwest" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "566cafdd92868e0939d3fb961bd0dc25fcfaaed179291093b3d43e6b3150ea10" +dependencies = [ + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-tls", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "system-configuration", + "tokio", + "tokio-native-tls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg", +] + +[[package]] +name = "resvg" +version = "0.45.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8928798c0a55e03c9ca6c4c6846f76377427d2c1e1f7e6de3c06ae57942df43" +dependencies = [ + "gif", + "image-webp", + "log", + "pico-args", + "rgb", + "svgtypes", + "tiny-skia", + "usvg", + "zune-jpeg", +] + +[[package]] +name = "rgb" +version = "0.8.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57397d16646700483b67d2dd6511d79318f9d057fdbd21a4066aeac8b41d310a" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "rowan" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "417a3a9f582e349834051b8a10c8d71ca88da4211e4093528e36b9845f6b5f21" +dependencies = [ + "countme", + "hashbrown 0.14.5", + "rustc-hash 1.1.0", + "text-size", +] + +[[package]] +name = "roxmltree" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97" + +[[package]] +name = "rustc-demangle" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "0.38.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +dependencies = [ + "bitflags 2.9.1", + "errno", + "libc", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustix" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" +dependencies = [ + "bitflags 2.9.1", + "errno", + "libc", + "linux-raw-sys 0.9.4", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustls-pemfile" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +dependencies = [ + "zeroize", +] + +[[package]] +name = "rustversion" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" + +[[package]] +name = "rustybuzz" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd3c7c96f8a08ee34eff8857b11b49b07d71d1c3f4e88f8a88d4c9e9f90b1702" +dependencies = [ + "bitflags 2.9.1", + "bytemuck", + "core_maths", + "log", + "smallvec", + "ttf-parser 0.25.1", + "unicode-bidi-mirroring", + "unicode-ccc", + "unicode-properties", + "unicode-script", +] + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schannel" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "scoped-tls-hkt" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9603871ffe5df3ac39cb624790c296dbd47a400d202f56bf3e414045099524d" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sctk-adwaita" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6277f0217056f77f1d8f49f2950ac6c278c0d607c45f5ee99328d792ede24ec" +dependencies = [ + "ab_glyph", + "log", + "memmap2 0.9.5", + "smithay-client-toolkit", + "tiny-skia", +] + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.9.1", + "core-foundation 0.9.4", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-big-array" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11fc7cc2c76d73e0f27ee52abbd64eec84d46f370c88371120433196934e4b7f" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_bytes" +version = "0.11.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8437fd221bde2d4ca316d61b90e337e9e702b3820b87d63caa9ba6c02bd06d96" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "serde_json" +version = "1.0.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_repr" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "3.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf65a400f8f66fb7b0552869ad70157166676db75ed8181f8104ea91cf9d0b42" +dependencies = [ + "serde", + "serde_derive", + "serde_with_macros", +] + +[[package]] +name = "serde_with_macros" +version = "3.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81679d9ed988d5e9a5e6531dc3f2c28efbd639cbd1dfb628df08edea6004da77" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "1.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "simd_helpers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6" +dependencies = [ + "quote", +] + +[[package]] +name = "simplecss" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a9c6883ca9c3c7c90e888de77b7a5c849c779d25d74a1269b0218b14e8b136c" +dependencies = [ + "log", +] + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "siphasher" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" + +[[package]] +name = "skia-bindings" +version = "0.86.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2bf215f640b53293844d441e93448b437ca4937595f60e3317fbb03d7ac6783" +dependencies = [ + "bindgen", + "cc", + "flate2", + "heck", + "lazy_static", + "regex", + "serde_json", + "tar", + "toml 0.8.23", +] + +[[package]] +name = "skia-safe" +version = "0.86.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e372258f52414e04de007326fa497581617c9fa872a3225dca5e42212723c426" +dependencies = [ + "bitflags 2.9.1", + "lazy_static", + "skia-bindings", + "windows", +] + +[[package]] +name = "slab" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" + +[[package]] +name = "slint" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c99512aff435eb85fc719bf73aff5c4a13f3d202843c326a2f50eb0377956f8" +dependencies = [ + "const-field-offset", + "i-slint-backend-qt", + "i-slint-backend-selector", + "i-slint-core", + "i-slint-core-macros", + "i-slint-renderer-femtovg", + "num-traits", + "once_cell", + "pin-weak", + "slint-macros", + "unicode-segmentation", + "vtable", +] + +[[package]] +name = "slint-build" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0f58adfef3f956cc3c124cb19154cf29b510badf2a06b3a3521c6fdb97a47a4" +dependencies = [ + "derive_more", + "i-slint-compiler", + "spin_on", + "toml_edit", +] + +[[package]] +name = "slint-macros" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33e4f639260309e13e8f8dc40ec905d57a15dc512d8d50c52ad650088cc7e1e2" +dependencies = [ + "i-slint-compiler", + "proc-macro2", + "quote", + "spin_on", +] + +[[package]] +name = "slotmap" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" +dependencies = [ + "version_check", +] + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "smithay-client-toolkit" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" +dependencies = [ + "bitflags 2.9.1", + "calloop 0.13.0", + "calloop-wayland-source", + "cursor-icon", + "libc", + "log", + "memmap2 0.9.5", + "rustix 0.38.44", + "thiserror 1.0.69", + "wayland-backend", + "wayland-client", + "wayland-csd-frame", + "wayland-cursor", + "wayland-protocols", + "wayland-protocols-wlr", + "wayland-scanner", + "xkeysym", +] + +[[package]] +name = "smithay-clipboard" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc8216eec463674a0e90f29e0ae41a4db573ec5b56b1c6c1c71615d249b6d846" +dependencies = [ + "libc", + "smithay-client-toolkit", + "wayland-backend", +] + +[[package]] +name = "smol_str" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" +dependencies = [ + "serde", +] + +[[package]] +name = "smol_str" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9676b89cd56310a87b93dec47b11af744f34d5fc9f367b829474eec0a891350d" +dependencies = [ + "borsh 1.5.7", + "serde", +] + +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "softbuffer" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18051cdd562e792cad055119e0cdb2cfc137e44e3987532e0f9659a77931bb08" +dependencies = [ + "as-raw-xcb-connection", + "bytemuck", + "cfg_aliases", + "core-graphics 0.24.0", + "fastrand", + "foreign-types 0.5.0", + "js-sys", + "log", + "memmap2 0.9.5", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "objc2-quartz-core 0.2.2", + "raw-window-handle", + "redox_syscall 0.5.13", + "rustix 0.38.44", + "tiny-xlib", + "wasm-bindgen", + "wayland-backend", + "wayland-client", + "wayland-sys", + "web-sys", + "windows-sys 0.59.0", + "x11rb", +] + +[[package]] +name = "solana-account" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f949fe4edaeaea78c844023bfc1c898e0b1f5a100f8a8d2d0f85d0a7b090258" +dependencies = [ + "bincode 1.3.3", + "serde", + "serde_bytes", + "serde_derive", + "solana-account-info", + "solana-clock", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", + "solana-sysvar", +] + +[[package]] +name = "solana-account-info" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8f5152a288ef1912300fc6efa6c2d1f9bb55d9398eb6c72326360b8063987da" +dependencies = [ + "bincode 1.3.3", + "serde", + "solana-program-error", + "solana-program-memory", + "solana-pubkey", +] + +[[package]] +name = "solana-address-lookup-table-interface" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1673f67efe870b64a65cb39e6194be5b26527691ce5922909939961a6e6b395" +dependencies = [ + "bincode 1.3.3", + "bytemuck", + "serde", + "serde_derive", + "solana-clock", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", + "solana-slot-hashes", +] + +[[package]] +name = "solana-atomic-u64" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52e52720efe60465b052b9e7445a01c17550666beec855cce66f44766697bc2" +dependencies = [ + "parking_lot", +] + +[[package]] +name = "solana-big-mod-exp" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75db7f2bbac3e62cfd139065d15bcda9e2428883ba61fc8d27ccb251081e7567" +dependencies = [ + "num-bigint", + "num-traits", + "solana-define-syscall", +] + +[[package]] +name = "solana-bincode" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19a3787b8cf9c9fe3dd360800e8b70982b9e5a8af9e11c354b6665dd4a003adc" +dependencies = [ + "bincode 1.3.3", + "serde", + "solana-instruction", +] + +[[package]] +name = "solana-blake3-hasher" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a0801e25a1b31a14494fc80882a036be0ffd290efc4c2d640bfcca120a4672" +dependencies = [ + "blake3", + "solana-define-syscall", + "solana-hash", + "solana-sanitize", +] + +[[package]] +name = "solana-bn254" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4420f125118732833f36facf96a27e7b78314b2d642ba07fa9ffdacd8d79e243" +dependencies = [ + "ark-bn254", + "ark-ec", + "ark-ff", + "ark-serialize", + "bytemuck", + "solana-define-syscall", + "thiserror 2.0.12", +] + +[[package]] +name = "solana-borsh" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "718333bcd0a1a7aed6655aa66bef8d7fb047944922b2d3a18f49cbc13e73d004" +dependencies = [ + "borsh 0.10.4", + "borsh 1.5.7", +] + +[[package]] +name = "solana-client-traits" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83f0071874e629f29e0eb3dab8a863e98502ac7aba55b7e0df1803fc5cac72a7" +dependencies = [ + "solana-account", + "solana-commitment-config", + "solana-epoch-info", + "solana-hash", + "solana-instruction", + "solana-keypair", + "solana-message", + "solana-pubkey", + "solana-signature", + "solana-signer", + "solana-system-interface", + "solana-transaction", + "solana-transaction-error", +] + +[[package]] +name = "solana-clock" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bb482ab70fced82ad3d7d3d87be33d466a3498eb8aa856434ff3c0dfc2e2e31" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", +] + +[[package]] +name = "solana-cluster-type" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ace9fea2daa28354d107ea879cff107181d85cd4e0f78a2bedb10e1a428c97e" +dependencies = [ + "serde", + "serde_derive", + "solana-hash", +] + +[[package]] +name = "solana-commitment-config" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac49c4dde3edfa832de1697e9bcdb7c3b3f7cb7a1981b7c62526c8bb6700fb73" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-compute-budget-interface" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8432d2c4c22d0499aa06d62e4f7e333f81777b3d7c96050ae9e5cb71a8c3aee4" +dependencies = [ + "borsh 1.5.7", + "serde", + "serde_derive", + "solana-instruction", + "solana-sdk-ids", +] + +[[package]] +name = "solana-cpi" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8dc71126edddc2ba014622fc32d0f5e2e78ec6c5a1e0eb511b85618c09e9ea11" +dependencies = [ + "solana-account-info", + "solana-define-syscall", + "solana-instruction", + "solana-program-error", + "solana-pubkey", + "solana-stable-layout", +] + +[[package]] +name = "solana-decode-error" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c781686a18db2f942e70913f7ca15dc120ec38dcab42ff7557db2c70c625a35" +dependencies = [ + "num-traits", +] + +[[package]] +name = "solana-define-syscall" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ae3e2abcf541c8122eafe9a625d4d194b4023c20adde1e251f94e056bb1aee2" + +[[package]] +name = "solana-derivation-path" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "939756d798b25c5ec3cca10e06212bdca3b1443cb9bb740a38124f58b258737b" +dependencies = [ + "derivation-path", + "qstring", + "uriparse", +] + +[[package]] +name = "solana-ed25519-program" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1feafa1691ea3ae588f99056f4bdd1293212c7ece28243d7da257c443e84753" +dependencies = [ + "bytemuck", + "bytemuck_derive", + "ed25519-dalek", + "solana-feature-set", + "solana-instruction", + "solana-precompile-error", + "solana-sdk-ids", +] + +[[package]] +name = "solana-epoch-info" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90ef6f0b449290b0b9f32973eefd95af35b01c5c0c34c569f936c34c5b20d77b" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-epoch-rewards" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b575d3dd323b9ea10bb6fe89bf6bf93e249b215ba8ed7f68f1a3633f384db7" +dependencies = [ + "serde", + "serde_derive", + "solana-hash", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", +] + +[[package]] +name = "solana-epoch-rewards-hasher" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c5fd2662ae7574810904585fd443545ed2b568dbd304b25a31e79ccc76e81b" +dependencies = [ + "siphasher 0.3.11", + "solana-hash", + "solana-pubkey", +] + +[[package]] +name = "solana-epoch-schedule" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fce071fbddecc55d727b1d7ed16a629afe4f6e4c217bc8d00af3b785f6f67ed" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", +] + +[[package]] +name = "solana-example-mocks" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84461d56cbb8bb8d539347151e0525b53910102e4bced875d49d5139708e39d3" +dependencies = [ + "serde", + "serde_derive", + "solana-address-lookup-table-interface", + "solana-clock", + "solana-hash", + "solana-instruction", + "solana-keccak-hasher", + "solana-message", + "solana-nonce", + "solana-pubkey", + "solana-sdk-ids", + "solana-system-interface", + "thiserror 2.0.12", +] + +[[package]] +name = "solana-feature-gate-interface" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43f5c5382b449e8e4e3016fb05e418c53d57782d8b5c30aa372fc265654b956d" +dependencies = [ + "bincode 1.3.3", + "serde", + "serde_derive", + "solana-account", + "solana-account-info", + "solana-instruction", + "solana-program-error", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-system-interface", +] + +[[package]] +name = "solana-feature-set" +version = "2.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93b93971e289d6425f88e6e3cb6668c4b05df78b3c518c249be55ced8efd6b6d" +dependencies = [ + "ahash", + "lazy_static", + "solana-epoch-schedule", + "solana-hash", + "solana-pubkey", + "solana-sha256-hasher", +] + +[[package]] +name = "solana-fee-calculator" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89bc408da0fb3812bc3008189d148b4d3e08252c79ad810b245482a3f70cd8d" +dependencies = [ + "log", + "serde", + "serde_derive", +] + +[[package]] +name = "solana-fee-structure" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33adf673581c38e810bf618f745bf31b683a0a4a4377682e6aaac5d9a058dd4e" +dependencies = [ + "serde", + "serde_derive", + "solana-message", + "solana-native-token", +] + +[[package]] +name = "solana-genesis-config" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3725085d47b96d37fef07a29d78d2787fc89a0b9004c66eed7753d1e554989f" +dependencies = [ + "bincode 1.3.3", + "chrono", + "memmap2 0.5.10", + "serde", + "serde_derive", + "solana-account", + "solana-clock", + "solana-cluster-type", + "solana-epoch-schedule", + "solana-fee-calculator", + "solana-hash", + "solana-inflation", + "solana-keypair", + "solana-logger", + "solana-poh-config", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-sha256-hasher", + "solana-shred-version", + "solana-signer", + "solana-time-utils", +] + +[[package]] +name = "solana-hard-forks" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c28371f878e2ead55611d8ba1b5fb879847156d04edea13693700ad1a28baf" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-hash" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b96e9f0300fa287b545613f007dfe20043d7812bee255f418c1eb649c93b63" +dependencies = [ + "borsh 1.5.7", + "bytemuck", + "bytemuck_derive", + "five8", + "js-sys", + "serde", + "serde_derive", + "solana-atomic-u64", + "solana-sanitize", + "wasm-bindgen", +] + +[[package]] +name = "solana-inflation" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23eef6a09eb8e568ce6839573e4966850e85e9ce71e6ae1a6c930c1c43947de3" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-instruction" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47298e2ce82876b64f71e9d13a46bc4b9056194e7f9937ad3084385befa50885" +dependencies = [ + "bincode 1.3.3", + "borsh 1.5.7", + "getrandom 0.2.16", + "js-sys", + "num-traits", + "serde", + "serde_derive", + "solana-define-syscall", + "solana-pubkey", + "wasm-bindgen", +] + +[[package]] +name = "solana-instructions-sysvar" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0e85a6fad5c2d0c4f5b91d34b8ca47118fc593af706e523cdbedf846a954f57" +dependencies = [ + "bitflags 2.9.1", + "solana-account-info", + "solana-instruction", + "solana-program-error", + "solana-pubkey", + "solana-sanitize", + "solana-sdk-ids", + "solana-serialize-utils", + "solana-sysvar-id", +] + +[[package]] +name = "solana-keccak-hasher" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7aeb957fbd42a451b99235df4942d96db7ef678e8d5061ef34c9b34cae12f79" +dependencies = [ + "sha3", + "solana-define-syscall", + "solana-hash", + "solana-sanitize", +] + +[[package]] +name = "solana-keypair" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd3f04aa1a05c535e93e121a95f66e7dcccf57e007282e8255535d24bf1e98bb" +dependencies = [ + "ed25519-dalek", + "ed25519-dalek-bip32", + "five8", + "rand 0.7.3", + "solana-derivation-path", + "solana-pubkey", + "solana-seed-derivable", + "solana-seed-phrase", + "solana-signature", + "solana-signer", + "wasm-bindgen", +] + +[[package]] +name = "solana-last-restart-slot" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a6360ac2fdc72e7463565cd256eedcf10d7ef0c28a1249d261ec168c1b55cdd" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", +] + +[[package]] +name = "solana-loader-v2-interface" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8ab08006dad78ae7cd30df8eea0539e207d08d91eaefb3e1d49a446e1c49654" +dependencies = [ + "serde", + "serde_bytes", + "serde_derive", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", +] + +[[package]] +name = "solana-loader-v3-interface" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f7162a05b8b0773156b443bccd674ea78bb9aa406325b467ea78c06c99a63a2" +dependencies = [ + "serde", + "serde_bytes", + "serde_derive", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", + "solana-system-interface", +] + +[[package]] +name = "solana-loader-v4-interface" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "706a777242f1f39a83e2a96a2a6cb034cb41169c6ecbee2cf09cb873d9659e7e" +dependencies = [ + "serde", + "serde_bytes", + "serde_derive", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", + "solana-system-interface", +] + +[[package]] +name = "solana-logger" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db8e777ec1afd733939b532a42492d888ec7c88d8b4127a5d867eb45c6eb5cd5" +dependencies = [ + "env_logger 0.9.3", + "lazy_static", + "libc", + "log", + "signal-hook", +] + +[[package]] +name = "solana-message" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1796aabce376ff74bf89b78d268fa5e683d7d7a96a0a4e4813ec34de49d5314b" +dependencies = [ + "bincode 1.3.3", + "blake3", + "lazy_static", + "serde", + "serde_derive", + "solana-bincode", + "solana-hash", + "solana-instruction", + "solana-pubkey", + "solana-sanitize", + "solana-sdk-ids", + "solana-short-vec", + "solana-system-interface", + "solana-transaction-error", + "wasm-bindgen", +] + +[[package]] +name = "solana-msg" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36a1a14399afaabc2781a1db09cb14ee4cc4ee5c7a5a3cfcc601811379a8092" +dependencies = [ + "solana-define-syscall", +] + +[[package]] +name = "solana-native-token" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61515b880c36974053dd499c0510066783f0cc6ac17def0c7ef2a244874cf4a9" + +[[package]] +name = "solana-nonce" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703e22eb185537e06204a5bd9d509b948f0066f2d1d814a6f475dafb3ddf1325" +dependencies = [ + "serde", + "serde_derive", + "solana-fee-calculator", + "solana-hash", + "solana-pubkey", + "solana-sha256-hasher", +] + +[[package]] +name = "solana-nonce-account" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cde971a20b8dbf60144d6a84439dda86b5466e00e2843091fe731083cda614da" +dependencies = [ + "solana-account", + "solana-hash", + "solana-nonce", + "solana-sdk-ids", +] + +[[package]] +name = "solana-offchain-message" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b526398ade5dea37f1f147ce55dae49aa017a5d7326606359b0445ca8d946581" +dependencies = [ + "num_enum", + "solana-hash", + "solana-packet", + "solana-pubkey", + "solana-sanitize", + "solana-sha256-hasher", + "solana-signature", + "solana-signer", +] + +[[package]] +name = "solana-packet" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "004f2d2daf407b3ec1a1ca5ec34b3ccdfd6866dd2d3c7d0715004a96e4b6d127" +dependencies = [ + "bincode 1.3.3", + "bitflags 2.9.1", + "cfg_eval", + "serde", + "serde_derive", + "serde_with", +] + +[[package]] +name = "solana-poh-config" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d650c3b4b9060082ac6b0efbbb66865089c58405bfb45de449f3f2b91eccee75" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-precompile-error" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d87b2c1f5de77dfe2b175ee8dd318d196aaca4d0f66f02842f80c852811f9f8" +dependencies = [ + "num-traits", + "solana-decode-error", +] + +[[package]] +name = "solana-precompiles" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36e92768a57c652edb0f5d1b30a7d0bc64192139c517967c18600debe9ae3832" +dependencies = [ + "lazy_static", + "solana-ed25519-program", + "solana-feature-set", + "solana-message", + "solana-precompile-error", + "solana-pubkey", + "solana-sdk-ids", + "solana-secp256k1-program", + "solana-secp256r1-program", +] + +[[package]] +name = "solana-presigner" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81a57a24e6a4125fc69510b6774cd93402b943191b6cddad05de7281491c90fe" +dependencies = [ + "solana-pubkey", + "solana-signature", + "solana-signer", +] + +[[package]] +name = "solana-program" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98eca145bd3545e2fbb07166e895370576e47a00a7d824e325390d33bf467210" +dependencies = [ + "bincode 1.3.3", + "blake3", + "borsh 0.10.4", + "borsh 1.5.7", + "bs58", + "bytemuck", + "console_error_panic_hook", + "console_log", + "getrandom 0.2.16", + "lazy_static", + "log", + "memoffset", + "num-bigint", + "num-derive", + "num-traits", + "rand 0.8.5", + "serde", + "serde_bytes", + "serde_derive", + "solana-account-info", + "solana-address-lookup-table-interface", + "solana-atomic-u64", + "solana-big-mod-exp", + "solana-bincode", + "solana-blake3-hasher", + "solana-borsh", + "solana-clock", + "solana-cpi", + "solana-decode-error", + "solana-define-syscall", + "solana-epoch-rewards", + "solana-epoch-schedule", + "solana-example-mocks", + "solana-feature-gate-interface", + "solana-fee-calculator", + "solana-hash", + "solana-instruction", + "solana-instructions-sysvar", + "solana-keccak-hasher", + "solana-last-restart-slot", + "solana-loader-v2-interface", + "solana-loader-v3-interface", + "solana-loader-v4-interface", + "solana-message", + "solana-msg", + "solana-native-token", + "solana-nonce", + "solana-program-entrypoint", + "solana-program-error", + "solana-program-memory", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-rent", + "solana-sanitize", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-secp256k1-recover", + "solana-serde-varint", + "solana-serialize-utils", + "solana-sha256-hasher", + "solana-short-vec", + "solana-slot-hashes", + "solana-slot-history", + "solana-stable-layout", + "solana-stake-interface", + "solana-system-interface", + "solana-sysvar", + "solana-sysvar-id", + "solana-vote-interface", + "thiserror 2.0.12", + "wasm-bindgen", +] + +[[package]] +name = "solana-program-entrypoint" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32ce041b1a0ed275290a5008ee1a4a6c48f5054c8a3d78d313c08958a06aedbd" +dependencies = [ + "solana-account-info", + "solana-msg", + "solana-program-error", + "solana-pubkey", +] + +[[package]] +name = "solana-program-error" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ee2e0217d642e2ea4bee237f37bd61bb02aec60da3647c48ff88f6556ade775" +dependencies = [ + "borsh 1.5.7", + "num-traits", + "serde", + "serde_derive", + "solana-decode-error", + "solana-instruction", + "solana-msg", + "solana-pubkey", +] + +[[package]] +name = "solana-program-memory" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a5426090c6f3fd6cfdc10685322fede9ca8e5af43cd6a59e98bfe4e91671712" +dependencies = [ + "solana-define-syscall", +] + +[[package]] +name = "solana-program-option" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc677a2e9bc616eda6dbdab834d463372b92848b2bfe4a1ed4e4b4adba3397d0" + +[[package]] +name = "solana-program-pack" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "319f0ef15e6e12dc37c597faccb7d62525a509fec5f6975ecb9419efddeb277b" +dependencies = [ + "solana-program-error", +] + +[[package]] +name = "solana-pubkey" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b62adb9c3261a052ca1f999398c388f1daf558a1b492f60a6d9e64857db4ff1" +dependencies = [ + "borsh 0.10.4", + "borsh 1.5.7", + "bytemuck", + "bytemuck_derive", + "curve25519-dalek 4.1.3", + "five8", + "five8_const", + "getrandom 0.2.16", + "js-sys", + "num-traits", + "rand 0.8.5", + "serde", + "serde_derive", + "solana-atomic-u64", + "solana-decode-error", + "solana-define-syscall", + "solana-sanitize", + "solana-sha256-hasher", + "wasm-bindgen", +] + +[[package]] +name = "solana-quic-definitions" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf0d4d5b049eb1d0c35f7b18f305a27c8986fc5c0c9b383e97adaa35334379e" +dependencies = [ + "solana-keypair", +] + +[[package]] +name = "solana-rent" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1aea8fdea9de98ca6e8c2da5827707fb3842833521b528a713810ca685d2480" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", +] + +[[package]] +name = "solana-rent-collector" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c1e19f5d5108b0d824244425e43bc78bbb9476e2199e979b0230c9f632d3bf4" +dependencies = [ + "serde", + "serde_derive", + "solana-account", + "solana-clock", + "solana-epoch-schedule", + "solana-genesis-config", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", +] + +[[package]] +name = "solana-rent-debits" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f6f9113c6003492e74438d1288e30cffa8ccfdc2ef7b49b9e816d8034da18cd" +dependencies = [ + "solana-pubkey", + "solana-reward-info", +] + +[[package]] +name = "solana-reserved-account-keys" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4b22ea19ca2a3f28af7cd047c914abf833486bf7a7c4a10fc652fff09b385b1" +dependencies = [ + "lazy_static", + "solana-feature-set", + "solana-pubkey", + "solana-sdk-ids", +] + +[[package]] +name = "solana-reward-info" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18205b69139b1ae0ab8f6e11cdcb627328c0814422ad2482000fa2ca54ae4a2f" +dependencies = [ + "serde", + "serde_derive", +] + +[[package]] +name = "solana-sanitize" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61f1bc1357b8188d9c4a3af3fc55276e56987265eb7ad073ae6f8180ee54cecf" + +[[package]] +name = "solana-sdk" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "319ef2bd7269f3da5b338633102c9c0945ec08b2a4c9ac10414848f64660fa7c" +dependencies = [ + "bincode 1.3.3", + "bs58", + "getrandom 0.1.16", + "js-sys", + "serde", + "serde_json", + "solana-account", + "solana-bn254", + "solana-client-traits", + "solana-cluster-type", + "solana-commitment-config", + "solana-compute-budget-interface", + "solana-decode-error", + "solana-derivation-path", + "solana-ed25519-program", + "solana-epoch-info", + "solana-epoch-rewards-hasher", + "solana-feature-set", + "solana-fee-structure", + "solana-genesis-config", + "solana-hard-forks", + "solana-inflation", + "solana-instruction", + "solana-keypair", + "solana-message", + "solana-native-token", + "solana-nonce-account", + "solana-offchain-message", + "solana-packet", + "solana-poh-config", + "solana-precompile-error", + "solana-precompiles", + "solana-presigner", + "solana-program", + "solana-program-memory", + "solana-pubkey", + "solana-quic-definitions", + "solana-rent-collector", + "solana-rent-debits", + "solana-reserved-account-keys", + "solana-reward-info", + "solana-sanitize", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-secp256k1-program", + "solana-secp256k1-recover", + "solana-secp256r1-program", + "solana-seed-derivable", + "solana-seed-phrase", + "solana-serde", + "solana-serde-varint", + "solana-short-vec", + "solana-shred-version", + "solana-signature", + "solana-signer", + "solana-system-transaction", + "solana-time-utils", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", + "solana-validator-exit", + "thiserror 2.0.12", + "wasm-bindgen", +] + +[[package]] +name = "solana-sdk-ids" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5d8b9cc68d5c88b062a33e23a6466722467dde0035152d8fb1afbcdf350a5f" +dependencies = [ + "solana-pubkey", +] + +[[package]] +name = "solana-sdk-macro" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86280da8b99d03560f6ab5aca9de2e38805681df34e0bb8f238e69b29433b9df" +dependencies = [ + "bs58", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "solana-secp256k1-program" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f19833e4bc21558fe9ec61f239553abe7d05224347b57d65c2218aeeb82d6149" +dependencies = [ + "bincode 1.3.3", + "digest 0.10.7", + "libsecp256k1", + "serde", + "serde_derive", + "sha3", + "solana-feature-set", + "solana-instruction", + "solana-precompile-error", + "solana-sdk-ids", + "solana-signature", +] + +[[package]] +name = "solana-secp256k1-recover" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baa3120b6cdaa270f39444f5093a90a7b03d296d362878f7a6991d6de3bbe496" +dependencies = [ + "borsh 1.5.7", + "libsecp256k1", + "solana-define-syscall", + "thiserror 2.0.12", +] + +[[package]] +name = "solana-secp256r1-program" +version = "2.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce0ae46da3071a900f02d367d99b2f3058fe2e90c5062ac50c4f20cfedad8f0f" +dependencies = [ + "bytemuck", + "openssl", + "solana-feature-set", + "solana-instruction", + "solana-precompile-error", + "solana-sdk-ids", +] + +[[package]] +name = "solana-seed-derivable" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3beb82b5adb266c6ea90e5cf3967235644848eac476c5a1f2f9283a143b7c97f" +dependencies = [ + "solana-derivation-path", +] + +[[package]] +name = "solana-seed-phrase" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36187af2324f079f65a675ec22b31c24919cb4ac22c79472e85d819db9bbbc15" +dependencies = [ + "hmac 0.12.1", + "pbkdf2", + "sha2 0.10.9", +] + +[[package]] +name = "solana-serde" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1931484a408af466e14171556a47adaa215953c7f48b24e5f6b0282763818b04" +dependencies = [ + "serde", +] + +[[package]] +name = "solana-serde-varint" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a7e155eba458ecfb0107b98236088c3764a09ddf0201ec29e52a0be40857113" +dependencies = [ + "serde", +] + +[[package]] +name = "solana-serialize-utils" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "817a284b63197d2b27afdba829c5ab34231da4a9b4e763466a003c40ca4f535e" +dependencies = [ + "solana-instruction", + "solana-pubkey", + "solana-sanitize", +] + +[[package]] +name = "solana-sha256-hasher" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0037386961c0d633421f53560ad7c80675c0447cba4d1bb66d60974dd486c7ea" +dependencies = [ + "sha2 0.10.9", + "solana-define-syscall", + "solana-hash", +] + +[[package]] +name = "solana-short-vec" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c54c66f19b9766a56fa0057d060de8378676cb64987533fa088861858fc5a69" +dependencies = [ + "serde", +] + +[[package]] +name = "solana-shred-version" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afd3db0461089d1ad1a78d9ba3f15b563899ca2386351d38428faa5350c60a98" +dependencies = [ + "solana-hard-forks", + "solana-hash", + "solana-sha256-hasher", +] + +[[package]] +name = "solana-signature" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64c8ec8e657aecfc187522fc67495142c12f35e55ddeca8698edbb738b8dbd8c" +dependencies = [ + "ed25519-dalek", + "five8", + "rand 0.8.5", + "serde", + "serde-big-array", + "serde_derive", + "solana-sanitize", +] + +[[package]] +name = "solana-signer" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c41991508a4b02f021c1342ba00bcfa098630b213726ceadc7cb032e051975b" +dependencies = [ + "solana-pubkey", + "solana-signature", + "solana-transaction-error", +] + +[[package]] +name = "solana-slot-hashes" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c8691982114513763e88d04094c9caa0376b867a29577939011331134c301ce" +dependencies = [ + "serde", + "serde_derive", + "solana-hash", + "solana-sdk-ids", + "solana-sysvar-id", +] + +[[package]] +name = "solana-slot-history" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97ccc1b2067ca22754d5283afb2b0126d61eae734fc616d23871b0943b0d935e" +dependencies = [ + "bv", + "serde", + "serde_derive", + "solana-sdk-ids", + "solana-sysvar-id", +] + +[[package]] +name = "solana-stable-layout" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f14f7d02af8f2bc1b5efeeae71bc1c2b7f0f65cd75bcc7d8180f2c762a57f54" +dependencies = [ + "solana-instruction", + "solana-pubkey", +] + +[[package]] +name = "solana-stake-interface" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5269e89fde216b4d7e1d1739cf5303f8398a1ff372a81232abbee80e554a838c" +dependencies = [ + "borsh 0.10.4", + "borsh 1.5.7", + "num-traits", + "serde", + "serde_derive", + "solana-clock", + "solana-cpi", + "solana-decode-error", + "solana-instruction", + "solana-program-error", + "solana-pubkey", + "solana-system-interface", + "solana-sysvar-id", +] + +[[package]] +name = "solana-system-interface" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94d7c18cb1a91c6be5f5a8ac9276a1d7c737e39a21beba9ea710ab4b9c63bc90" +dependencies = [ + "js-sys", + "num-traits", + "serde", + "serde_derive", + "solana-decode-error", + "solana-instruction", + "solana-pubkey", + "wasm-bindgen", +] + +[[package]] +name = "solana-system-transaction" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bd98a25e5bcba8b6be8bcbb7b84b24c2a6a8178d7fb0e3077a916855ceba91a" +dependencies = [ + "solana-hash", + "solana-keypair", + "solana-message", + "solana-pubkey", + "solana-signer", + "solana-system-interface", + "solana-transaction", +] + +[[package]] +name = "solana-sysvar" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d50c92bc019c590f5e42c61939676e18d14809ed00b2a59695dd5c67ae72c097" +dependencies = [ + "base64 0.22.1", + "bincode 1.3.3", + "bytemuck", + "bytemuck_derive", + "lazy_static", + "serde", + "serde_derive", + "solana-account-info", + "solana-clock", + "solana-define-syscall", + "solana-epoch-rewards", + "solana-epoch-schedule", + "solana-fee-calculator", + "solana-hash", + "solana-instruction", + "solana-instructions-sysvar", + "solana-last-restart-slot", + "solana-program-entrypoint", + "solana-program-error", + "solana-program-memory", + "solana-pubkey", + "solana-rent", + "solana-sanitize", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-slot-hashes", + "solana-slot-history", + "solana-stake-interface", + "solana-sysvar-id", +] + +[[package]] +name = "solana-sysvar-id" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5762b273d3325b047cfda250787f8d796d781746860d5d0a746ee29f3e8812c1" +dependencies = [ + "solana-pubkey", + "solana-sdk-ids", +] + +[[package]] +name = "solana-time-utils" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6af261afb0e8c39252a04d026e3ea9c405342b08c871a2ad8aa5448e068c784c" + +[[package]] +name = "solana-transaction" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80657d6088f721148f5d889c828ca60c7daeedac9a8679f9ec215e0c42bcbf41" +dependencies = [ + "bincode 1.3.3", + "serde", + "serde_derive", + "solana-bincode", + "solana-feature-set", + "solana-hash", + "solana-instruction", + "solana-keypair", + "solana-message", + "solana-precompiles", + "solana-pubkey", + "solana-sanitize", + "solana-sdk-ids", + "solana-short-vec", + "solana-signature", + "solana-signer", + "solana-system-interface", + "solana-transaction-error", + "wasm-bindgen", +] + +[[package]] +name = "solana-transaction-context" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5443a368637244a005319c5c9c1fdad1797b040b6bedfb4b143d6995335e4e1" +dependencies = [ + "bincode 1.3.3", + "serde", + "serde_derive", + "solana-account", + "solana-instruction", + "solana-instructions-sysvar", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-signature", +] + +[[package]] +name = "solana-transaction-error" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "222a9dc8fdb61c6088baab34fc3a8b8473a03a7a5fd404ed8dd502fa79b67cb1" +dependencies = [ + "serde", + "serde_derive", + "solana-instruction", + "solana-sanitize", +] + +[[package]] +name = "solana-validator-exit" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bbf6d7a3c0b28dd5335c52c0e9eae49d0ae489a8f324917faf0ded65a812c1d" + +[[package]] +name = "solana-vote-interface" +version = "2.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef4f08746f154458f28b98330c0d55cb431e2de64ee4b8efc98dcbe292e0672b" +dependencies = [ + "bincode 1.3.3", + "num-derive", + "num-traits", + "serde", + "serde_derive", + "solana-clock", + "solana-decode-error", + "solana-hash", + "solana-instruction", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-serde-varint", + "solana-serialize-utils", + "solana-short-vec", + "solana-system-interface", +] + +[[package]] +name = "spin_on" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "076e103ed41b9864aa838287efe5f4e3a7a0362dd00671ae62a212e5e4612da2" +dependencies = [ + "pin-utils", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strict-num" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" +dependencies = [ + "float-cmp", +] + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f64def088c51c9510a8579e3c5d67c65349dcf755e5479ad3d010aa6454e2c32" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c77a8c5abcaf0f9ce05d62342b7d298c346515365c36b673df4ebe3ced01fde8" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.104", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "svgtypes" +version = "0.15.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68c7541fff44b35860c1a7a47a7cadf3e4a304c457b58f9870d9706ece028afc" +dependencies = [ + "kurbo", + "siphasher 1.0.1", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "sys-locale" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eab9a99a024a169fe8a903cf9d4a3b3601109bcc13bd9e3c6fff259138626c4" +dependencies = [ + "libc", +] + +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation 0.9.4", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "system-deps" +version = "6.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" +dependencies = [ + "cfg-expr", + "heck", + "pkg-config", + "toml 0.8.23", + "version-compare", +] + +[[package]] +name = "tar" +version = "0.4.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d863878d212c87a19c1a610eb53bb01fe12951c0501cf5a0d65f724914a667a" +dependencies = [ + "filetime", + "libc", + "xattr", +] + +[[package]] +name = "target-lexicon" +version = "0.12.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" + +[[package]] +name = "tempfile" +version = "3.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +dependencies = [ + "fastrand", + "getrandom 0.3.3", + "once_cell", + "rustix 1.0.7", + "windows-sys 0.59.0", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "text-size" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f18aa187839b2bdb1ad2fa35ead8c4c2976b64e4363c386d45ac0f7ee85c9233" + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +dependencies = [ + "thiserror-impl 2.0.12", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "tiff" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e" +dependencies = [ + "flate2", + "jpeg-decoder", + "weezl", +] + +[[package]] +name = "tiny-skia" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" +dependencies = [ + "arrayref", + "arrayvec", + "bytemuck", + "cfg-if", + "log", + "png", + "tiny-skia-path", +] + +[[package]] +name = "tiny-skia-path" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93" +dependencies = [ + "arrayref", + "bytemuck", + "strict-num", +] + +[[package]] +name = "tiny-xlib" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0324504befd01cab6e0c994f34b2ffa257849ee019d3fb3b64fb2c858887d89e" +dependencies = [ + "as-raw-xcb-connection", + "ctor-lite", + "libloading", + "pkg-config", + "tracing", +] + +[[package]] +name = "tinystr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.45.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-macros" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + +[[package]] +name = "toml" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.22.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "toml_write", + "winnow", +] + +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "ttf-parser" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c591d83f69777866b9126b24c6dd9a18351f177e49d625920d19f989fd31cf8" + +[[package]] +name = "ttf-parser" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" +dependencies = [ + "core_maths", +] + +[[package]] +name = "typed-index-collections" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fd393dbd1e7b23e0cab7396570309b4068aa504e9dac2cd41d827583b4e9ab7" +dependencies = [ + "bincode 2.0.1", + "serde", +] + +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "udev" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af4e37e9ea4401fc841ff54b9ddfc9be1079b1e89434c1a6a865dd68980f7e9f" +dependencies = [ + "io-lifetimes", + "libc", + "libudev-sys", + "pkg-config", +] + +[[package]] +name = "uds_windows" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" +dependencies = [ + "memoffset", + "tempfile", + "winapi", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" + +[[package]] +name = "unicode-bidi-mirroring" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfa6e8c60bb66d49db113e0125ee8711b7647b5579dc7f5f19c42357ed039fe" + +[[package]] +name = "unicode-ccc" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce61d488bcdc9bc8b5d1772c404828b17fc481c0a582b5581e95fb233aef503e" + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "unicode-linebreak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" + +[[package]] +name = "unicode-properties" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" + +[[package]] +name = "unicode-script" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb421b350c9aff471779e262955939f565ec18b86c15364e6bdf0d662ca7c1f" + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "unicode-vo" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1d386ff53b415b7fe27b50bb44679e2cc4660272694b7b6f3326d8480823a94" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "unty" +version = "0.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d49784317cd0d1ee7ec5c716dd598ec5b4483ea832a2dced265471cc0f690ae" + +[[package]] +name = "uriparse" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0200d0fc04d809396c2ad43f3c95da3582a2556eba8d453c1087f4120ee352ff" +dependencies = [ + "fnv", + "lazy_static", +] + +[[package]] +name = "url" +version = "2.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "usvg" +version = "0.45.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80be9b06fbae3b8b303400ab20778c80bbaf338f563afe567cf3c9eea17b47ef" +dependencies = [ + "base64 0.22.1", + "data-url", + "flate2", + "fontdb", + "imagesize", + "kurbo", + "log", + "pico-args", + "roxmltree", + "rustybuzz", + "simplecss", + "siphasher 1.0.1", + "strict-num", + "svgtypes", + "tiny-skia-path", + "unicode-bidi", + "unicode-script", + "unicode-vo", + "xmlwriter", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "v_frame" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "666b7727c8875d6ab5db9533418d7c764233ac9c0cff1d469aec8fa127597be2" +dependencies = [ + "aligned-vec", + "num-traits", + "wasm-bindgen", +] + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version-compare" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "vtable" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "753be81c38dff787d177b5939af1fa16f72f0d0d21a6b7d74ae56e29cd26f2a6" +dependencies = [ + "const-field-offset", + "portable-atomic", + "stable_deref_trait", + "vtable-macro", +] + +[[package]] +name = "vtable-macro" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cfcf6171aa2b0f85718ca5888ca32f6edf61d1849f8e4b3786ad890e5b68f68" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn 2.0.104", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wayland-backend" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe770181423e5fc79d3e2a7f4410b7799d5aab1de4372853de3c6aa13ca24121" +dependencies = [ + "cc", + "downcast-rs", + "rustix 0.38.44", + "scoped-tls", + "smallvec", + "wayland-sys", +] + +[[package]] +name = "wayland-client" +version = "0.31.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978fa7c67b0847dbd6a9f350ca2569174974cd4082737054dbb7fbb79d7d9a61" +dependencies = [ + "bitflags 2.9.1", + "rustix 0.38.44", + "wayland-backend", + "wayland-scanner", +] + +[[package]] +name = "wayland-csd-frame" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" +dependencies = [ + "bitflags 2.9.1", + "cursor-icon", + "wayland-backend", +] + +[[package]] +name = "wayland-cursor" +version = "0.31.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a65317158dec28d00416cb16705934070aef4f8393353d41126c54264ae0f182" +dependencies = [ + "rustix 0.38.44", + "wayland-client", + "xcursor", +] + +[[package]] +name = "wayland-protocols" +version = "0.32.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "779075454e1e9a521794fed15886323ea0feda3f8b0fc1390f5398141310422a" +dependencies = [ + "bitflags 2.9.1", + "wayland-backend", + "wayland-client", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-plasma" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fd38cdad69b56ace413c6bcc1fbf5acc5e2ef4af9d5f8f1f9570c0c83eae175" +dependencies = [ + "bitflags 2.9.1", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-wlr" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cb6cdc73399c0e06504c437fe3cf886f25568dd5454473d565085b36d6a8bbf" +dependencies = [ + "bitflags 2.9.1", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-scanner" +version = "0.31.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "896fdafd5d28145fce7958917d69f2fd44469b1d4e861cb5961bcbeebc6d1484" +dependencies = [ + "proc-macro2", + "quick-xml 0.37.5", + "quote", +] + +[[package]] +name = "wayland-sys" +version = "0.31.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbcebb399c77d5aa9fa5db874806ee7b4eba4e73650948e8f93963f128896615" +dependencies = [ + "dlib", + "log", + "once_cell", + "pkg-config", +] + +[[package]] +name = "web-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "weezl" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a751b3277700db47d3e574514de2eced5e54dc8a5436a3bf7a0b248b2cee16f3" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.61.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" +dependencies = [ + "windows-collections", + "windows-core", + "windows-future", + "windows-link", + "windows-numerics", +] + +[[package]] +name = "windows-collections" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" +dependencies = [ + "windows-core", +] + +[[package]] +name = "windows-core" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-future" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" +dependencies = [ + "windows-core", + "windows-link", + "windows-threading", +] + +[[package]] +name = "windows-implement" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "windows-interface" +version = "0.59.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-numerics" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" +dependencies = [ + "windows-core", + "windows-link", +] + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.2", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" +dependencies = [ + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + +[[package]] +name = "windows-threading" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + +[[package]] +name = "winit" +version = "0.30.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4409c10174df8779dc29a4788cac85ed84024ccbc1743b776b21a520ee1aaf4" +dependencies = [ + "ahash", + "android-activity", + "atomic-waker", + "bitflags 2.9.1", + "block2 0.5.1", + "bytemuck", + "calloop 0.13.0", + "cfg_aliases", + "concurrent-queue", + "core-foundation 0.9.4", + "core-graphics 0.23.2", + "cursor-icon", + "dpi", + "js-sys", + "libc", + "memmap2 0.9.5", + "ndk", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", + "objc2-ui-kit", + "orbclient", + "percent-encoding", + "pin-project", + "raw-window-handle", + "redox_syscall 0.4.1", + "rustix 0.38.44", + "sctk-adwaita", + "smithay-client-toolkit", + "smol_str 0.2.2", + "tracing", + "unicode-segmentation", + "wasm-bindgen", + "wasm-bindgen-futures", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-protocols-plasma", + "web-sys", + "web-time", + "windows-sys 0.52.0", + "x11-dl", + "x11rb", + "xkbcommon-dl", +] + +[[package]] +name = "winnow" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "wio" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d129932f4644ac2396cb456385cbf9e63b5b30c6e8dc4820bdca4eb082037a5" +dependencies = [ + "winapi", +] + +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags 2.9.1", +] + +[[package]] +name = "writeable" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" + +[[package]] +name = "x11-clipboard" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "662d74b3d77e396b8e5beb00b9cad6a9eccf40b2ef68cc858784b14c41d535a3" +dependencies = [ + "libc", + "x11rb", +] + +[[package]] +name = "x11-dl" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" +dependencies = [ + "libc", + "once_cell", + "pkg-config", +] + +[[package]] +name = "x11rb" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12" +dependencies = [ + "as-raw-xcb-connection", + "gethostname", + "libc", + "libloading", + "once_cell", + "rustix 0.38.44", + "x11rb-protocol", +] + +[[package]] +name = "x11rb-protocol" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" + +[[package]] +name = "xattr" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af3a19837351dc82ba89f8a125e22a3c475f05aba604acc023d62b2739ae2909" +dependencies = [ + "libc", + "rustix 1.0.7", +] + +[[package]] +name = "xcursor" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bec9e4a500ca8864c5b47b8b482a73d62e4237670e5b5f1d6b9e3cae50f28f2b" + +[[package]] +name = "xkbcommon" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d66ca9352cbd4eecbbc40871d8a11b4ac8107cfc528a6e14d7c19c69d0e1ac9" +dependencies = [ + "libc", + "memmap2 0.9.5", + "xkeysym", +] + +[[package]] +name = "xkbcommon-dl" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" +dependencies = [ + "bitflags 2.9.1", + "dlib", + "log", + "once_cell", + "xkeysym", +] + +[[package]] +name = "xkeysym" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" + +[[package]] +name = "xml-rs" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a62ce76d9b56901b19a74f19431b0d8b3bc7ca4ad685a746dfd78ca8f4fc6bda" + +[[package]] +name = "xmlwriter" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec7a2a501ed189703dba8b08142f057e887dfc4b2cc4db2d343ac6376ba3e0b9" + +[[package]] +name = "yoke" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", + "synstructure", +] + +[[package]] +name = "zbus" +version = "5.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3a7c7cee313d044fca3f48fa782cb750c79e4ca76ba7bc7718cd4024cdf6f68" +dependencies = [ + "async-broadcast", + "async-executor", + "async-io", + "async-lock", + "async-process", + "async-recursion", + "async-task", + "async-trait", + "blocking", + "enumflags2", + "event-listener", + "futures-core", + "futures-lite", + "hex", + "nix", + "ordered-stream", + "serde", + "serde_repr", + "tracing", + "uds_windows", + "windows-sys 0.59.0", + "winnow", + "zbus_macros", + "zbus_names", + "zvariant", +] + +[[package]] +name = "zbus-lockstep" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29e96e38ded30eeab90b6ba88cb888d70aef4e7489b6cd212c5e5b5ec38045b6" +dependencies = [ + "zbus_xml", + "zvariant", +] + +[[package]] +name = "zbus-lockstep-macros" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc6821851fa840b708b4cbbaf6241868cabc85a2dc22f426361b0292bfc0b836" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", + "zbus-lockstep", + "zbus_xml", + "zvariant", +] + +[[package]] +name = "zbus_macros" +version = "5.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a17e7e5eec1550f747e71a058df81a9a83813ba0f6a95f39c4e218bdc7ba366a" +dependencies = [ + "proc-macro-crate 3.3.0", + "proc-macro2", + "quote", + "syn 2.0.104", + "zbus_names", + "zvariant", + "zvariant_utils", +] + +[[package]] +name = "zbus_names" +version = "4.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97" +dependencies = [ + "serde", + "static_assertions", + "winnow", + "zvariant", +] + +[[package]] +name = "zbus_xml" +version = "5.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589e9a02bfafb9754bb2340a9e3b38f389772684c63d9637e76b1870377bec29" +dependencies = [ + "quick-xml 0.36.2", + "serde", + "static_assertions", + "zbus_names", + "zvariant", +] + +[[package]] +name = "zerocopy" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4756f7db3f7b5574938c3eb1c117038b8e07f95ee6718c0efad4ac21508f1efd" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "ziya-slint" +version = "0.2.0" +dependencies = [ + "anyhow", + "chrono", + "chrono-tz", + "env_logger 0.11.8", + "i-slint-backend-winit", + "image", + "log", + "reqwest", + "serde", + "serde_json", + "slint", + "slint-build", + "solana-sdk", + "tokio", +] + +[[package]] +name = "zune-core" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" + +[[package]] +name = "zune-inflate" +version = "0.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "zune-jpeg" +version = "0.4.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7384255a918371b5af158218d131530f694de9ad3815ebdd0453a940485cb0fa" +dependencies = [ + "zune-core", +] + +[[package]] +name = "zvariant" +version = "5.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d30786f75e393ee63a21de4f9074d4c038d52c5b1bb4471f955db249f9dffb1" +dependencies = [ + "endi", + "enumflags2", + "serde", + "winnow", + "zvariant_derive", + "zvariant_utils", +] + +[[package]] +name = "zvariant_derive" +version = "5.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75fda702cd42d735ccd48117b1630432219c0e9616bf6cb0f8350844ee4d9580" +dependencies = [ + "proc-macro-crate 3.3.0", + "proc-macro2", + "quote", + "syn 2.0.104", + "zvariant_utils", +] + +[[package]] +name = "zvariant_utils" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e16edfee43e5d7b553b77872d99bc36afdda75c223ca7ad5e3fbecd82ca5fc34" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "static_assertions", + "syn 2.0.104", + "winnow", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..799f0f4 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,25 @@ +[package] +name = "ziya-slint" +version = "0.2.0" +edition = "2021" +description = "One stop shop for your trading habit - Slint version" +authors = ["rizary"] +license = "MIT" + +[dependencies] +slint = "1.12.0" +i-slint-backend-winit = "1.12.0" +tokio = { version = "1.0", features = ["full"] } +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0" +reqwest = { version = "0.12", features = ["json"] } +anyhow = "1.0" +log = "0.4" +env_logger = "0.11" +solana-sdk = "2.3.0" +chrono = { version = "0.4.39", features = ["serde"] } +chrono-tz = "0.10.3" +image = { version = "0.25.6", default-features = false, features = [ "ico", "jpeg", "gif", "webp", "tiff" ] } + +[build-dependencies] +slint-build = "1.12.0" diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..242da62 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) + +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. diff --git a/README.md b/README.md new file mode 100644 index 0000000..8731c94 --- /dev/null +++ b/README.md @@ -0,0 +1,155 @@ +# Ziya - Slint Edition + +**One stop shop for your trading habit** - Now powered by Slint and Rust! + +> **/dˤiˈjaːʔ/**, "zee‑yah" — *Proper noun, meaning "light"* +> A bismillahDAO creation + +## Overview + +This is a modern rewrite of the Ziya trading platform using [Slint](https://slint.dev/) for the UI and Rust for the backend logic. Slint provides a declarative UI language that makes it easy to create beautiful, native desktop applications. + +## Features + +- **Modern Native UI**: Built with Slint's declarative UI language +- **Fast Performance**: Native Rust performance with efficient rendering +- **Clean Architecture**: Separated UI and business logic +- **Async Operations**: Non-blocking token fetching and user management +- **Modular Design**: Well-organized codebase with clear separation of concerns + +### Application States + +- **Loading**: Initial app startup and initialization +- **Login**: User authentication interface +- **Dashboard**: Main trading dashboard with token search +- **Hunting Ground**: Advanced trading tools (placeholder) +- **Profile**: User profile and wallet information + +## Project Structure + +``` +ziya-slint/ +├── src/ +│ ├── main.rs # Application entry point +│ ├── lib.rs # Module organization +│ ├── app_state.rs # Application state management +│ └── services/ # Business logic services +│ ├── mod.rs +│ ├── token_service.rs # Token data and search +│ └── user_service.rs # User authentication and profiles +├── ui/ +│ └── app-window.slint # Main UI definition +├── Cargo.toml # Project dependencies +└── build.rs # Build configuration +``` + +## Getting Started + +### Prerequisites + +- Rust 1.70+ (recommended via [rustup](https://rustup.rs/)) +- Git + +### Installation + +1. Clone the repository: + ```bash + git clone + cd ziya-slint + ``` + +2. Build and run: + ```bash + cargo run + ``` + +## Development + +### Running in Development Mode + +```bash +# Run with debug logging +RUST_LOG=debug cargo run +``` + +### Building for Release + +```bash +cargo build --release +``` + +## Architecture + +### UI Layer (Slint) + +The UI is defined in `ui/app-window.slint` using Slint's declarative language. Key features: + +- **State-based rendering**: Different UI states for loading, login, dashboard, etc. +- **Reactive properties**: Automatic UI updates when data changes +- **Component composition**: Reusable UI elements +- **Modern styling**: Clean, professional design + +### Business Logic (Rust) + +- **Services Pattern**: Separate services for different concerns +- **Async/Await**: Non-blocking operations for better UX +- **Error Handling**: Proper error propagation with `anyhow` +- **Type Safety**: Strong typing throughout the application + +### Key Components + +1. **TokenService**: Handles token data fetching and search +2. **UserService**: Manages user authentication and profiles +3. **AppState**: Central application state management +4. **Main**: Coordinates UI and business logic + +## Comparison with Vue/Electron Version + +| Aspect | Vue/Electron | Slint/Rust | +|--------|--------------|------------| +| **Performance** | ~50MB memory, slower startup | ~10MB memory, instant startup | +| **Bundle Size** | ~100MB with Node.js | ~5MB standalone binary | +| **Development** | Hot reload, web tools | Fast compilation, native debugging | +| **Deployment** | Requires Node.js runtime | Single self-contained binary | +| **UI Development** | HTML/CSS/JS knowledge required | Slint DSL (QML-like, simpler) | +| **Type Safety** | TypeScript (optional) | Full Rust type safety | + +## Contributing + +This is part of the bismillahDAO ecosystem. When contributing: + +1. Follow Rust conventions and best practices +2. Keep UI logic in Slint files, business logic in Rust +3. Write tests for business logic +4. Update documentation for new features + +## Migration Status + +### ✅ Completed Features +- [x] Basic application structure +- [x] Loading, login, and dashboard states +- [x] Token list display and search +- [x] User profile management +- [x] Navigation between views +- [x] Mock data services + +### 🚧 In Progress +- [ ] Real API integration +- [ ] Advanced token analysis +- [ ] Wallet integration +- [ ] Trading features + +### 📋 Planned Features +- [ ] Real-time token price updates +- [ ] Advanced charting +- [ ] Portfolio tracking +- [ ] Trading automation +- [ ] Export/import functionality + +## License + +MIT License - see LICENSE file for details. + +## About bismillahDAO + +This project is created by bismillahDAO, focused on building ethical and innovative trading tools for the cryptocurrency community. diff --git a/build.rs b/build.rs new file mode 100644 index 0000000..baece34 --- /dev/null +++ b/build.rs @@ -0,0 +1,8 @@ +fn main() { + // Use fluent-light as default, but we'll support dynamic switching + let config = slint_build::CompilerConfiguration::new() + .with_style("fluent-light".to_string()); + + slint_build::compile_with_config("ui/index.slint", config) + .expect("Slint build failed"); +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..b31abb4d939813f99d8fb4da3581567bff2937b6 GIT binary patch literal 4286 zcmd5=`;Qgn8Q%T}O`6obAba-0?wz-IZlg zKv=OrWz*P}Y62u}v}p{9rZjC`s#+ImBIqiiOnpL~>oBAH^|E3ethV$#KQ}iu z!*0*iFb!^mS0+aIPEKUE_-V_coD5KD&!MuY6O}}od&Tg+xYL>FUMx$q(S`d?dloIk zjD1kUkL-@^HFud3IZb-x%hJv7c+w&2UT|Dm>@+l;KmJY?qI#ijm$;@K!#Ga<&iN#z|CKQ>Zj1 zP~34IWqSY>`ldo`*BvtWH7*SoVNBKRzY~7V-#jbcyFD{XdCHdm$#3AUHMoA?X8Ph6 zD2=`h_sCV0bIVX+4iyW7@Z|$O8xD9!I>r8U?!dodQh1f_Qi!9OeE6AuvmPYLMY_+( zk=zRPsJ;Wkm@8%Frq-mdaz!)oYyOXFV{>y0 zY}ThB+mFJ~Q?T!wfHm|qtaS(A3~VO{eJ0;zhh$W{3aC*m*_VUM(9R3ly9=(Y4_g+VO@=wU@`X#alE@R1&>#*(_Gx<}W|MT!!lPVmg(znpP z{~hEe-zEQJ$n2nuqaPr{kv@18J%|1RYw&5L*G{1Q;aAbU?ig~Lo=0lmWn{y zNbY$9ncc4=xAiATKk+McJTnJ-)s7IKF;TOBVf-n_rAKxtDw(AyJn((w_q_pU^a9dH zK16o+C1kh1imr_>p=D$SiIF$4cytCm51d2h;dAu$2;4``vL>EKe)Q)^9>0kqIrqIG zRM~gpS`g>I?63J>^+*2fX3V$qEOkg8yN>Mfzr&h*8|g#uAvg3aI)^W!b^BXbGWI^Y z#@|Exo_El?`&}&F_FJSjoPzWGhsd9tgR}n&xucwq@4WLm(e+T86AhOBlQfqcy5-u%_7O?B~Sht9TT(Ydhk4o z2Y(HF`g2$>{R`QHe_&1OXN(5$SUXHTQ~pKu$9#{(@fX)$^)BYQpRAIzJOb9ZvOmb! z8)F>ZMC$MduwJ+h=kyIT=TC|w>G4;z?fD}z!#_r8*F_W``yumlHG2kYHtUh8eY9Qu zC9XfW@lW04Bh?=HA)pRkW*GwZ9d~F9UB^B~`q^s+yKv?PoKrVYi1f%!eZ<(jhPH`0 zl=>brcf9OM1j07;S8~H%9@{V9ONU$h6PNKR{)_okW(}_U z;>RKWnVTqZCfU{-V;CR;RsP?k%Mm}AL-^l(~vtRuu z=3jk?K9JwkM`ee}3-&jA?76KeS)5ALpOxf5bOBP~U+4Q$5%8E^*)vG8Xzx?JsUVfx_XpQ9Sbz3NO$f z6EpC>eUy8SiSwenKI{dId!sw;2*1g~_%i-y{jcXg#t(I+9_m}ftuPNu&N>ql(xsH+ zcYwY*((JG7J!bG(-+-$B>eGs!QsEvG%T@9yo8#JJ`rjS;ziOg|>L|aIa;w6gm**bWRYN`cOwW=L=6xtz{0gf@_DA18ih(@yG>Gtx z4~TE-fZ@(Ee$lsGg>}?mlUwDM`96^z+M{gqE;%OV!hDNumt3EF7V%^5HS4#JeiIbQ zwf19t!-eGVp7D#}lF!}xo}!P~Yt?^^pSWkv85_u*iQy=obl+g>_lJ!ocel^`{SoWX zMjiA!MDcNJWb2+Yu(ZcqvB|OBu31CpIh*zRyWz9NJ;hg^zt1{}9mjn=2YOaL)~wpl jT$}YAziTfZ@%sNh%g^F^A?}y?F8%BA7XE+0m;L^4%9598 literal 0 HcmV?d00001 diff --git a/public/icons/dark-mode/chart-network-dark-mode.svg b/public/icons/dark-mode/chart-network-dark-mode.svg new file mode 100644 index 0000000..5dc6ba8 --- /dev/null +++ b/public/icons/dark-mode/chart-network-dark-mode.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/icons/light-mode/chart-network-light-mode.svg b/public/icons/light-mode/chart-network-light-mode.svg new file mode 100644 index 0000000..6cb2fde --- /dev/null +++ b/public/icons/light-mode/chart-network-light-mode.svg @@ -0,0 +1,2 @@ + + diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..cb1a3bc --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,2 @@ +// This lib.rs is currently not used since we're building a binary application +// If needed in the future, add modules here \ No newline at end of file diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..b025acb --- /dev/null +++ b/src/main.rs @@ -0,0 +1,119 @@ +// Prevent console window in addition to Slint window in Windows release builds when, e.g., starting the app via file manager. Ignored on other platforms. +#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] + +use slint::*; +use i_slint_backend_winit::WinitWindowAccessor; + +// Import the main window from our FSD-structured UI +slint::include_modules!(); + +fn main() -> Result<(), slint::PlatformError> { + // Create the main window + let ui = MainWindow::new()?; + + // Clone handle for callbacks + let ui_handle = ui.as_weak(); + + // Handle navigation changes + ui.on_navigation_changed({ + let ui_handle = ui_handle.clone(); + move |page| { + println!("Navigation changed to: {}", page); + if let Some(ui) = ui_handle.upgrade() { + // Update current page state + ui.set_current_page(page.into()); + } + } + }); + + // Handle theme toggle - using direct function call as per Slint discussion #5860 + ui.on_theme_toggle_clicked({ + let ui_handle = ui_handle.clone(); + move || { + println!("Theme toggle callback received from UI"); + if let Some(ui) = ui_handle.upgrade() { + // Call the public theme toggle function directly + ui.invoke_toggle_theme(); + println!("Theme toggle function invoked successfully"); + } + } + }); + + // Handle logout + ui.on_logout_clicked({ + let _ui_handle = ui_handle.clone(); + move || { + println!("Logout clicked"); + // Implement logout logic here + } + }); + + // Handle buy action + ui.on_buy_clicked({ + let _ui_handle = ui_handle.clone(); + move || { + println!("Buy clicked"); + // Implement buy logic here + } + }); + + // Handle sell action + ui.on_sell_clicked({ + let _ui_handle = ui_handle.clone(); + move || { + println!("Sell clicked"); + // Implement sell logic here + } + }); + + // Window control handlers - simplified drag handling + ui.on_start_drag_window({ + let ui_handle = ui_handle.clone(); + move || { + if let Some(ui) = ui_handle.upgrade() { + let window = ui.window(); + window.with_winit_window(|winit_window| { + if !window.is_maximized() { + let _ = winit_window.drag_window(); + } + }); + } + } + }); + + ui.on_minimize_window({ + let ui_handle = ui_handle.clone(); + move || { + if let Some(ui) = ui_handle.upgrade() { + let _ = ui.window().set_minimized(true); + } + } + }); + + ui.on_maximize_window({ + let ui_handle = ui_handle.clone(); + move || { + if let Some(ui) = ui_handle.upgrade() { + let window = ui.window(); + let _ = window.set_maximized(!window.is_maximized()); + } + } + }); + + ui.on_close_window({ + let ui_handle = ui_handle.clone(); + move || { + if let Some(ui) = ui_handle.upgrade() { + let _ = ui.window().hide(); + let _ = slint::quit_event_loop(); + } + } + }); + + // Set initial state + ui.set_current_page("Dashboard".into()); + ui.set_user_initials("JD".into()); + + // Run the application + ui.run() +} diff --git a/ui/app/index.slint b/ui/app/index.slint new file mode 100644 index 0000000..52bf75f --- /dev/null +++ b/ui/app/index.slint @@ -0,0 +1,325 @@ +// App Layer - Main Application Entry Point +// This is the root of the application following Feature-Sliced Design + +// No std-widgets needed since we're using Layout components + +// Import from shared layer (design system, UI kit) +import { Theme } from "../shared/design-system/tokens/theme.slint"; + +// Import widgets (standalone UI blocks) +import { NavigationWidget } from "../widgets/navigation/index.slint"; + +// Import pages +import { Dashboard } from "../pages/dashboard/index.slint"; + +export component App { + width: 100%; + height: 100%; + + // Application state + in-out property current-page: "Dashboard"; + in-out property user-initials: "JD"; + + // Callbacks + callback navigation-changed(string); + callback theme-toggle-clicked(); + callback logout-clicked(); + callback buy-clicked(); + callback sell-clicked(); + callback start-drag-window(); + callback minimize-window(); + callback maximize-window(); + callback close-window(); + + // Global drag area - covers entire window but sits behind interactive elements + TouchArea { + width: 100%; + height: 100%; + z: -1; + + moved => { + if (self.pressed) { + root.start-drag-window(); + } + } + } + + VerticalLayout { + spacing: 0px; + + // Title Bar - fixed height + Rectangle { + height: 32px; + background: Theme.surface; + + HorizontalLayout { + padding: 4px; + spacing: 8px; + + // Draggable area (left side) - takes most of the space + Rectangle { + horizontal-stretch: 1; + + Text { + text: "Ziya Trading Platform"; + color: Theme.text-primary; + font-size: 14px; + font-weight: 600; + vertical-alignment: center; + x: 8px; + } + } + + // Theme Toggle Button - fixed size + Rectangle { + width: 40px; + height: 20px; + border-radius: 10px; + background: Theme.is-dark-mode ? Theme.primary : Theme.border; + + Rectangle { + width: 16px; + height: 16px; + border-radius: 8px; + background: white; + x: Theme.is-dark-mode ? 22px : 2px; + y: 2px; + + animate x { duration: 200ms; easing: ease-in-out; } + } + + TouchArea { + clicked => { + theme-toggle-clicked(); + } + } + } + + // Window Controls - fixed size + HorizontalLayout { + spacing: 2px; + + // Minimize Button + Rectangle { + width: 28px; + height: 24px; + border-radius: 2px; + background: minimize-area.pressed ? #30404040 : minimize-area.has-hover ? #20404040 : transparent; + + Text { + text: "−"; + color: Theme.text-primary; + font-size: 14px; + font-weight: 400; + horizontal-alignment: center; + vertical-alignment: center; + } + + minimize-area := TouchArea { + clicked => { minimize-window(); } + } + } + + // Maximize Button + Rectangle { + width: 28px; + height: 24px; + border-radius: 2px; + background: maximize-area.pressed ? #30404040 : maximize-area.has-hover ? #20404040 : transparent; + + Text { + text: "□"; + color: Theme.text-primary; + font-size: 12px; + font-weight: 400; + horizontal-alignment: center; + vertical-alignment: center; + } + + maximize-area := TouchArea { + clicked => { maximize-window(); } + } + } + + // Close Button + Rectangle { + width: 28px; + height: 24px; + border-radius: 2px; + background: close-area.pressed ? #E53E3E : close-area.has-hover ? #C53030 : transparent; + + Text { + text: "×"; + color: close-area.has-hover ? white : Theme.text-primary; + font-size: 16px; + font-weight: 400; + horizontal-alignment: center; + vertical-alignment: center; + } + + close-area := TouchArea { + clicked => { close-window(); } + } + } + } + } + } + + // Main content area - stretches to fill remaining vertical space + HorizontalLayout { + spacing: 0px; + + // Navigation Widget (Sidebar) - fixed width + NavigationWidget { + width: 280px; + current-page: root.current-page; + user-initials: root.user-initials; + + navigation-changed(page) => { + root.current-page = page; + root.navigation-changed(page); + } + + logout-clicked => { root.logout-clicked(); } + } + + // Main content area - stretches to fill remaining horizontal space + Rectangle { + background: Theme.background; + + // Page routing based on current-page + if current-page == "Dashboard": Dashboard { + user-initials: root.user-initials; + logout => { root.logout-clicked(); } + trade-buy(asset, amount) => { root.buy-clicked(); } + trade-sell(asset, amount) => { root.sell-clicked(); } + } + + if current-page == "Trading": Rectangle { + background: Theme.background; + + VerticalLayout { + padding: 24px; + spacing: 16px; + alignment: center; + + Text { + text: "🎯 Trading Interface"; + font-size: 32px; + font-weight: 700; + color: Theme.text-primary; + horizontal-alignment: center; + } + + Text { + text: "Advanced trading features coming soon..."; + font-size: 18px; + color: Theme.text-secondary; + horizontal-alignment: center; + } + } + } + + if current-page == "Portfolio": Rectangle { + background: Theme.background; + + VerticalLayout { + padding: 24px; + spacing: 16px; + alignment: center; + + Text { + text: "💼 Portfolio Management"; + font-size: 32px; + font-weight: 700; + color: Theme.text-primary; + horizontal-alignment: center; + } + + Text { + text: "Portfolio tracking and management features coming soon..."; + font-size: 18px; + color: Theme.text-secondary; + horizontal-alignment: center; + } + } + } + + if current-page == "Markets": Rectangle { + background: Theme.background; + + VerticalLayout { + padding: 24px; + spacing: 16px; + alignment: center; + + Text { + text: "📈 Market Data"; + font-size: 32px; + font-weight: 700; + color: Theme.text-primary; + horizontal-alignment: center; + } + + Text { + text: "Real-time market data and analysis coming soon..."; + font-size: 18px; + color: Theme.text-secondary; + horizontal-alignment: center; + } + } + } + + if current-page == "HuntingGround": Rectangle { + background: Theme.background; + + VerticalLayout { + padding: 24px; + spacing: 16px; + alignment: center; + + Text { + text: "🎯 Token Hunting Ground"; + font-size: 32px; + font-weight: 700; + color: Theme.text-primary; + horizontal-alignment: center; + } + + Text { + text: "Discover and track new tokens coming soon..."; + font-size: 18px; + color: Theme.text-secondary; + horizontal-alignment: center; + } + } + } + + if current-page == "Profile": Rectangle { + background: Theme.background; + + VerticalLayout { + padding: 24px; + spacing: 16px; + alignment: center; + + Text { + text: "👤 User Profile"; + font-size: 32px; + font-weight: 700; + color: Theme.text-primary; + horizontal-alignment: center; + } + + Text { + text: "Profile management and settings coming soon..."; + font-size: 18px; + color: Theme.text-secondary; + horizontal-alignment: center; + } + } + } + } + } + } +} \ No newline at end of file diff --git a/ui/entities/token/index.slint b/ui/entities/token/index.slint new file mode 100644 index 0000000..3ca0457 --- /dev/null +++ b/ui/entities/token/index.slint @@ -0,0 +1,2 @@ +// Token Entity Public API +export { TokenListView } from "ui/token-list.slint"; \ No newline at end of file diff --git a/ui/entities/token/ui/token-list.slint b/ui/entities/token/ui/token-list.slint new file mode 100644 index 0000000..fae1156 --- /dev/null +++ b/ui/entities/token/ui/token-list.slint @@ -0,0 +1,181 @@ +import { Button, VerticalBox, HorizontalBox, LineEdit, ScrollView } from "std-widgets.slint"; + +// Token data structure +export struct TokenData { + name: string, + symbol: string, + price: string, + market-cap: string, + volume: string, +} + +// Token list component +export component TokenListView { + in-out property primary-color: #2563eb; + in-out property background-color: #f8fafc; + in-out property card-background: #ffffff; + in-out property text-color: #1e293b; + in-out property border-color: #e2e8f0; + in-out property search-query: ""; + in-out property <[TokenData]> tokens: []; + + // Callbacks + callback search-changed(string); + callback token-selected(TokenData); + + Rectangle { + background: background-color; + + VerticalBox { + spacing: 20px; + padding: 20px; + + // Header section + VerticalBox { + spacing: 15px; + + Text { + text: "Token Explorer"; + font-size: 24px; + color: text-color; + font-weight: 700; + } + + // Search bar + LineEdit { + placeholder-text: "Search tokens..."; + text <=> search-query; + height: 45px; + edited => { + search-changed(search-query); + } + } + } + + // Token list + ScrollView { + viewport-height: 400px; + + VerticalBox { + spacing: 10px; + + for token in tokens: Rectangle { + height: 80px; + background: card-background; + border-radius: 12px; + border-width: 1px; + border-color: border-color; + drop-shadow-blur: 5px; + drop-shadow-color: #00000008; + + HorizontalBox { + alignment: stretch; + spacing: 15px; + padding: 15px; + + // Token icon placeholder + Rectangle { + width: 50px; + height: 50px; + border-radius: 25px; + background: primary-color.with-alpha(0.1); + + Text { + text: token.symbol.to-uppercase(); + color: primary-color; + font-weight: 700; + font-size: 14px; + } + } + + // Token info + VerticalBox { + alignment: start; + spacing: 5px; + + Text { + text: token.name; + font-size: 16px; + color: text-color; + font-weight: 600; + } + + Text { + text: token.symbol.to-uppercase(); + font-size: 12px; + color: text-color; + opacity: 0.7; + } + } + + // Price info + VerticalBox { + alignment: end; + spacing: 5px; + + Text { + text: "$" + token.price; + font-size: 16px; + color: text-color; + font-weight: 600; + horizontal-alignment: right; + } + + HorizontalBox { + alignment: end; + spacing: 10px; + + Text { + text: "MC: $" + token.market-cap; + font-size: 10px; + color: text-color; + opacity: 0.6; + } + + Text { + text: "Vol: $" + token.volume; + font-size: 10px; + color: text-color; + opacity: 0.6; + } + } + } + } + + TouchArea { + clicked => { + token-selected(token); + } + } + } + } + } + + // Loading state or empty state + if tokens.length == 0: Rectangle { + height: 200px; + background: card-background; + border-radius: 12px; + border-width: 1px; + border-color: border-color; + + VerticalBox { + alignment: center; + spacing: 10px; + + Text { + text: search-query == "" ? "🔍" : "😔"; + font-size: 32px; + } + + Text { + text: search-query == "" ? "Loading tokens..." : "No tokens found"; + color: text-color; + opacity: 0.7; + font-size: 14px; + } + } + } + } + } +} \ No newline at end of file diff --git a/ui/index.slint b/ui/index.slint new file mode 100644 index 0000000..458c015 --- /dev/null +++ b/ui/index.slint @@ -0,0 +1,75 @@ +// Main Entry Point - Following Feature-Sliced Design +// This is the root file that main.rs imports +// Following the pattern from moonlogs: index -> app -> pages/widgets/entities/shared + +import { App } from "app/index.slint"; +import { Theme } from "shared/design-system/index.slint"; + +export component MainWindow inherits Window { + // Window properties + preferred-width: 1280px; + preferred-height: 1024px; + min-width: 1080px; + min-height: 800px; + no-frame: true; + background: Theme.background; + + // Properties + in-out property current-page: "Dashboard"; + in-out property user-initials: "JD"; + + // Callbacks that will be handled by main.rs + callback navigation-changed(string); + callback theme-toggle-clicked(); + callback logout-clicked(); + callback buy-clicked(); + callback sell-clicked(); + callback start-drag-window(); + callback minimize-window(); + callback maximize-window(); + callback close-window(); + + // Public function that can be called from Rust to toggle theme + public function toggle_theme() { + Theme.is-dark-mode = !Theme.is-dark-mode; + debug("Theme toggled from Rust. New state: " + (Theme.is-dark-mode ? "dark" : "light")); + } + + // App component handles all the UI following FSD layers + App { + width: 100%; + height: 100%; + current-page: root.current-page; + user-initials: root.user-initials; + + // Forward all callbacks to main.rs + navigation-changed(page) => { + root.current-page = page; + root.navigation-changed(page); + } + theme-toggle-clicked => { + root.theme-toggle-clicked(); + } + logout-clicked => { + root.logout-clicked(); + } + buy-clicked => { + root.buy-clicked(); + } + sell-clicked => { + root.sell-clicked(); + } + start-drag-window => { + root.start-drag-window(); + } + minimize-window => { + root.minimize-window(); + } + maximize-window => { + root.maximize-window(); + } + close-window => { + root.close-window(); + } + } +} diff --git a/ui/pages/auth/index.slint b/ui/pages/auth/index.slint new file mode 100644 index 0000000..4bded0c --- /dev/null +++ b/ui/pages/auth/index.slint @@ -0,0 +1,2 @@ +// Auth Page Public API +export { LoginView } from "ui/login-page.slint"; \ No newline at end of file diff --git a/ui/pages/auth/ui/login-page.slint b/ui/pages/auth/ui/login-page.slint new file mode 100644 index 0000000..ed23e01 --- /dev/null +++ b/ui/pages/auth/ui/login-page.slint @@ -0,0 +1,155 @@ +import { Button, VerticalBox, HorizontalBox, LineEdit } from "std-widgets.slint"; + +// Login component with branded interface +export component LoginView { + in-out property primary-color: #2563eb; + in-out property background-color: #f8fafc; + in-out property text-color: #1e293b; + in-out property app-version: "0.2.0"; + + // Login form state + in-out property email: ""; + in-out property password: ""; + + // Callbacks + callback login-clicked(string, string); + callback navigate-to-dashboard(); + + Rectangle { + background: background-color; + + VerticalBox { + alignment: center; + spacing: 30px; + padding: 40px; + + // Logo and branding section + VerticalBox { + alignment: center; + spacing: 10px; + + Rectangle { + width: 80px; + height: 80px; + border-radius: 40px; + background: primary-color.with-alpha(0.1); + + // Logo placeholder + Rectangle { + width: 40px; + height: 40px; + background: primary-color; + border-radius: 20px; + } + } + + Text { + text: "Ziya"; + font-size: 48px; + color: text-color; + font-weight: 700; + } + + Text { + text: "/dˤiˈjaːʔ/, \"zee‑yah\" — Proper noun, meaning \"light\""; + font-size: 14px; + color: text-color; + opacity: 0.6; + } + + Text { + text: "One stop shop trading solution"; + font-size: 20px; + color: text-color; + opacity: 0.8; + } + + Text { + text: "A bismillahDAO creation"; + font-size: 12px; + color: primary-color; + font-weight: 600; + } + } + + // Login form section + VerticalBox { + alignment: center; + spacing: 20px; + width: 400px; + + // Email field + VerticalBox { + spacing: 8px; + + Text { + text: "Email"; + color: text-color; + font-weight: 500; + } + + LineEdit { + placeholder-text: "Enter your email"; + text <=> email; + height: 45px; + } + } + + // Password field + VerticalBox { + spacing: 8px; + + Text { + text: "Password"; + color: text-color; + font-weight: 500; + } + + LineEdit { + placeholder-text: "Enter your password"; + text <=> password; + height: 45px; + } + } + + // Login button + Button { + text: "Sign In"; + primary: true; + height: 50px; + clicked => { + login-clicked(email, password); + } + } + + // Quick access button + HorizontalBox { + spacing: 10px; + alignment: center; + + Text { + text: "Quick access:"; + color: text-color; + opacity: 0.7; + font-size: 12px; + } + + Button { + text: "Demo Mode"; + height: 35px; + clicked => { + navigate-to-dashboard(); + } + } + } + + Text { + text: "Version " + app-version; + font-size: 10px; + color: text-color; + opacity: 0.5; + } + } + } + } +} \ No newline at end of file diff --git a/ui/pages/dashboard/index.slint b/ui/pages/dashboard/index.slint new file mode 100644 index 0000000..665af8e --- /dev/null +++ b/ui/pages/dashboard/index.slint @@ -0,0 +1,2 @@ +// Dashboard Page Public API +export { Dashboard } from "ui/dashboard-page.slint"; \ No newline at end of file diff --git a/ui/pages/dashboard/ui/dashboard-page.slint b/ui/pages/dashboard/ui/dashboard-page.slint new file mode 100644 index 0000000..0c04655 --- /dev/null +++ b/ui/pages/dashboard/ui/dashboard-page.slint @@ -0,0 +1,443 @@ +import { ScrollView, Button, LineEdit, ComboBox } from "std-widgets.slint"; +import { Theme } from "../../../shared/design-system/tokens/theme.slint"; + +// Professional dashboard component with global theme support +export component Dashboard { + width: 100%; + height: 100%; + + in-out property user-initials: "JD"; + + callback logout(); + callback trade-buy(string, string); + callback trade-sell(string, string); + + // Let the parent layout handle sizing + + VerticalLayout { + spacing: 0px; + + // Top navbar using HorizontalLayout for proper layout + Rectangle { + height: 64px; + background: Theme.surface; + border-width: 1px; + border-color: Theme.border; + + HorizontalLayout { + padding: 16px; + alignment: stretch; + + Text { + text: "Ziya Dashboard"; + color: Theme.text-primary; + font-size: 20px; + font-weight: 700; + vertical-alignment: center; + } + + // Spacer to push user profile to the right + Rectangle { + horizontal-stretch: 1; + } + + // User profile button + Rectangle { + width: 40px; + height: 40px; + background: Theme.primary; + border-radius: 20px; + + Text { + text: user-initials; + color: white; + font-size: 14px; + font-weight: 700; + horizontal-alignment: center; + vertical-alignment: center; + } + + TouchArea { + clicked => { logout(); } + } + } + } + } + + // Dashboard content - no scrollbar, just layout + VerticalLayout { + vertical-stretch: 1; + padding: 24px; + spacing: 24px; + + // Stats cards row using HorizontalLayout with proper stretch + HorizontalLayout { + spacing: 24px; + alignment: stretch; + + // Total Balance + Rectangle { + horizontal-stretch: 1; + background: Theme.card-background; + border-radius: 12px; + border-width: 1px; + border-color: Theme.card-border; + drop-shadow-blur: 8px; + drop-shadow-color: Theme.is-dark-mode ? #00000020 : #00000008; + + VerticalLayout { + padding: 20px; + spacing: 8px; + + Text { + text: "Total Balance"; + color: Theme.text-secondary; + font-size: 14px; + font-weight: 500; + horizontal-alignment: left; + } + + Text { + text: "$25,600"; + color: Theme.primary; + font-size: 32px; + font-weight: 700; + horizontal-alignment: left; + } + + Text { + text: "↗︎ 12% (30d)"; + color: Theme.success; + font-size: 13px; + font-weight: 500; + horizontal-alignment: left; + } + } + } + + // Active Positions + Rectangle { + horizontal-stretch: 1; + background: Theme.card-background; + border-radius: 12px; + border-width: 1px; + border-color: Theme.card-border; + drop-shadow-blur: 8px; + drop-shadow-color: Theme.is-dark-mode ? #00000020 : #00000008; + + VerticalLayout { + padding: 20px; + spacing: 8px; + + Text { + text: "Active Positions"; + color: Theme.text-secondary; + font-size: 14px; + font-weight: 500; + horizontal-alignment: left; + } + + Text { + text: "8"; + color: Theme.warning; + font-size: 32px; + font-weight: 700; + horizontal-alignment: left; + } + + Text { + text: "↗︎ 2 new today"; + color: Theme.success; + font-size: 13px; + font-weight: 500; + horizontal-alignment: left; + } + } + } + + // P&L Today + Rectangle { + horizontal-stretch: 1; + background: Theme.card-background; + border-radius: 12px; + border-width: 1px; + border-color: Theme.card-border; + drop-shadow-blur: 8px; + drop-shadow-color: Theme.is-dark-mode ? #00000020 : #00000008; + + VerticalLayout { + padding: 20px; + spacing: 8px; + + Text { + text: "P&L Today"; + color: Theme.text-secondary; + font-size: 14px; + font-weight: 500; + horizontal-alignment: left; + } + + Text { + text: "+$450"; + color: Theme.success; + font-size: 32px; + font-weight: 700; + horizontal-alignment: left; + } + + Text { + text: "↗︎ +2.1%"; + color: Theme.success; + font-size: 13px; + font-weight: 500; + horizontal-alignment: left; + } + } + } + } + + // Trading interface row using HorizontalLayout + HorizontalLayout { + spacing: 24px; + alignment: stretch; + + // Quick Trade card + Rectangle { + horizontal-stretch: 2; + background: Theme.card-background; + border-radius: 16px; + border-width: 1px; + border-color: Theme.card-border; + drop-shadow-blur: 16px; + drop-shadow-color: Theme.is-dark-mode ? #00000020 : #00000008; + + VerticalLayout { + padding: 24px; + spacing: 20px; + + Text { + text: "Quick Trade"; + color: Theme.text-primary; + font-size: 18px; + font-weight: 700; + horizontal-alignment: left; + } + + // Token selector using HorizontalLayout + HorizontalLayout { + spacing: 12px; + alignment: start; + + Text { + text: "Token:"; + color: Theme.text-secondary; + font-size: 14px; + vertical-alignment: center; + } + + ComboBox { + model: ["SOL", "BTC", "ETH", "USDC"]; + current-value: "SOL"; + } + } + + // Amount input using HorizontalLayout + HorizontalLayout { + spacing: 12px; + alignment: start; + + Text { + text: "Amount:"; + color: Theme.text-secondary; + font-size: 14px; + vertical-alignment: center; + } + + LineEdit { + placeholder-text: "0.00"; + horizontal-stretch: 1; + } + } + + // Trade buttons using HorizontalLayout + HorizontalLayout { + spacing: 12px; + alignment: stretch; + + Button { + text: "Buy"; + primary: true; + horizontal-stretch: 1; + clicked => { + trade-buy("SOL", "100"); + } + } + + Button { + text: "Sell"; + horizontal-stretch: 1; + clicked => { + trade-sell("SOL", "50"); + } + } + } + } + } + + // Recent Activity card + Rectangle { + horizontal-stretch: 1; + background: Theme.card-background; + border-radius: 16px; + border-width: 1px; + border-color: Theme.card-border; + drop-shadow-blur: 16px; + drop-shadow-color: Theme.is-dark-mode ? #00000020 : #00000008; + + VerticalLayout { + padding: 24px; + spacing: 16px; + + Text { + text: "Recent Activity"; + color: Theme.text-primary; + font-size: 18px; + font-weight: 700; + horizontal-alignment: left; + } + + // Activity items using VerticalLayout + VerticalLayout { + spacing: 12px; + + // Activity item 1 + HorizontalLayout { + spacing: 12px; + alignment: stretch; + + Rectangle { + width: 8px; + height: 8px; + border-radius: 4px; + background: Theme.success; + } + + VerticalLayout { + spacing: 2px; + horizontal-stretch: 1; + + Text { + text: "Bought 2.5 SOL"; + color: Theme.text-primary; + font-size: 14px; + font-weight: 500; + } + + Text { + text: "2 minutes ago"; + color: Theme.text-secondary; + font-size: 12px; + } + } + } + + // Activity item 2 + HorizontalLayout { + spacing: 12px; + alignment: stretch; + + Rectangle { + width: 8px; + height: 8px; + border-radius: 4px; + background: Theme.error; + } + + VerticalLayout { + spacing: 2px; + horizontal-stretch: 1; + + Text { + text: "Sold 1.0 ETH"; + color: Theme.text-primary; + font-size: 14px; + font-weight: 500; + } + + Text { + text: "1 hour ago"; + color: Theme.text-secondary; + font-size: 12px; + } + } + } + + // Activity item 3 + HorizontalLayout { + spacing: 12px; + alignment: stretch; + + Rectangle { + width: 8px; + height: 8px; + border-radius: 4px; + background: Theme.warning; + } + + VerticalLayout { + spacing: 2px; + horizontal-stretch: 1; + + Text { + text: "Staked 100 USDC"; + color: Theme.text-primary; + font-size: 14px; + font-weight: 500; + } + + Text { + text: "3 hours ago"; + color: Theme.text-secondary; + font-size: 12px; + } + } + } + } + } + } + } + + // Theme demonstration section + Rectangle { + background: Theme.surface; + border-radius: 12px; + border-width: 1px; + border-color: Theme.border; + + VerticalLayout { + padding: 20px; + spacing: 12px; + + Text { + text: "Theme Status"; + color: Theme.text-primary; + font-size: 16px; + font-weight: 600; + } + + Text { + text: "Current theme: " + (Theme.is-dark-mode ? "Dark Mode 🌙" : "Light Mode ☀️"); + color: Theme.text-secondary; + font-size: 14px; + } + + Text { + text: "All components are now using the global theme system for consistent theming across the application."; + color: Theme.text-secondary; + font-size: 12px; + } + } + } + } + } +} \ No newline at end of file diff --git a/ui/pages/hunting-ground/index.slint b/ui/pages/hunting-ground/index.slint new file mode 100644 index 0000000..807a15e --- /dev/null +++ b/ui/pages/hunting-ground/index.slint @@ -0,0 +1,2 @@ +// Hunting Ground Page Public API +export { HuntingGroundPage } from "ui/hunting-ground-page.slint"; \ No newline at end of file diff --git a/ui/pages/hunting-ground/ui/hunting-ground-page.slint b/ui/pages/hunting-ground/ui/hunting-ground-page.slint new file mode 100644 index 0000000..aa28c65 --- /dev/null +++ b/ui/pages/hunting-ground/ui/hunting-ground-page.slint @@ -0,0 +1,30 @@ +import { VerticalBox } from "std-widgets.slint"; +import { Theme } from "../../../shared/design-system/tokens/theme.slint"; + +// Hunting Ground Page Component +export component HuntingGroundPage { + Rectangle { + background: Theme.background; + + VerticalBox { + padding: 32px; + spacing: 24px; + alignment: center; + + Text { + text: "🎯 Hunting Ground"; + color: Theme.text-primary; + font-size: 32px; + font-weight: 700; + horizontal-alignment: center; + } + + Text { + text: "Advanced token hunting and discovery features"; + color: Theme.text-secondary; + font-size: 16px; + horizontal-alignment: center; + } + } + } +} \ No newline at end of file diff --git a/ui/pages/markets/index.slint b/ui/pages/markets/index.slint new file mode 100644 index 0000000..2814474 --- /dev/null +++ b/ui/pages/markets/index.slint @@ -0,0 +1,2 @@ +// Markets Page Public API +export { MarketsPage } from "ui/markets-page.slint"; \ No newline at end of file diff --git a/ui/pages/markets/ui/markets-page.slint b/ui/pages/markets/ui/markets-page.slint new file mode 100644 index 0000000..d074156 --- /dev/null +++ b/ui/pages/markets/ui/markets-page.slint @@ -0,0 +1,30 @@ +import { VerticalBox } from "std-widgets.slint"; +import { Theme } from "../../../shared/design-system/tokens/theme.slint"; + +// Markets Page Component +export component MarketsPage { + Rectangle { + background: Theme.background; + + VerticalBox { + padding: 32px; + spacing: 24px; + alignment: center; + + Text { + text: "Markets"; + color: Theme.text-primary; + font-size: 32px; + font-weight: 700; + horizontal-alignment: center; + } + + Text { + text: "Market data and analysis will be displayed here"; + color: Theme.text-secondary; + font-size: 16px; + horizontal-alignment: center; + } + } + } +} \ No newline at end of file diff --git a/ui/pages/portfolio/index.slint b/ui/pages/portfolio/index.slint new file mode 100644 index 0000000..3427420 --- /dev/null +++ b/ui/pages/portfolio/index.slint @@ -0,0 +1,2 @@ +// Portfolio Page Public API +export { PortfolioPage } from "ui/portfolio-page.slint"; \ No newline at end of file diff --git a/ui/pages/portfolio/ui/portfolio-page.slint b/ui/pages/portfolio/ui/portfolio-page.slint new file mode 100644 index 0000000..0199cb7 --- /dev/null +++ b/ui/pages/portfolio/ui/portfolio-page.slint @@ -0,0 +1,30 @@ +import { VerticalBox } from "std-widgets.slint"; +import { Theme } from "../../../shared/design-system/tokens/theme.slint"; + +// Portfolio Page Component +export component PortfolioPage { + Rectangle { + background: Theme.background; + + VerticalBox { + padding: 32px; + spacing: 24px; + alignment: center; + + Text { + text: "Portfolio"; + color: Theme.text-primary; + font-size: 32px; + font-weight: 700; + horizontal-alignment: center; + } + + Text { + text: "Your investment portfolio will be displayed here"; + color: Theme.text-secondary; + font-size: 16px; + horizontal-alignment: center; + } + } + } +} \ No newline at end of file diff --git a/ui/pages/trading/index.slint b/ui/pages/trading/index.slint new file mode 100644 index 0000000..cb85c0f --- /dev/null +++ b/ui/pages/trading/index.slint @@ -0,0 +1,2 @@ +// Trading Page Public API +export { TradingPage } from "ui/trading-page.slint"; \ No newline at end of file diff --git a/ui/pages/trading/ui/trading-page.slint b/ui/pages/trading/ui/trading-page.slint new file mode 100644 index 0000000..36fdbef --- /dev/null +++ b/ui/pages/trading/ui/trading-page.slint @@ -0,0 +1,78 @@ +import { VerticalBox, HorizontalBox } from "std-widgets.slint"; +import { Theme } from "../../../shared/design-system/tokens/theme.slint"; + +// Trading Page Component +export component TradingPage { + callback buy-clicked(); + callback sell-clicked(); + + Rectangle { + background: Theme.background; + + VerticalBox { + padding: 32px; + spacing: 24px; + alignment: center; + + Text { + text: "Trading Page"; + color: Theme.text-primary; + font-size: 32px; + font-weight: 700; + horizontal-alignment: center; + } + + Text { + text: "Advanced trading features coming soon..."; + color: Theme.text-secondary; + font-size: 16px; + horizontal-alignment: center; + } + + HorizontalBox { + spacing: 16px; + alignment: center; + + Rectangle { + width: 120px; + height: 40px; + background: #10b981; + border-radius: 8px; + + Text { + text: "Buy"; + color: white; + font-size: 14px; + font-weight: 600; + horizontal-alignment: center; + vertical-alignment: center; + } + + TouchArea { + clicked => { buy-clicked(); } + } + } + + Rectangle { + width: 120px; + height: 40px; + background: #ef4444; + border-radius: 8px; + + Text { + text: "Sell"; + color: white; + font-size: 14px; + font-weight: 600; + horizontal-alignment: center; + vertical-alignment: center; + } + + TouchArea { + clicked => { sell-clicked(); } + } + } + } + } + } +} \ No newline at end of file diff --git a/ui/shared/config/index.slint b/ui/shared/config/index.slint new file mode 100644 index 0000000..05182d2 --- /dev/null +++ b/ui/shared/config/index.slint @@ -0,0 +1,5 @@ +// Shared Configuration Public API +// Export application configuration + +// Currently no config defined +// export * from "app-config.slint"; \ No newline at end of file diff --git a/ui/shared/design-system/components/design-system.slint b/ui/shared/design-system/components/design-system.slint new file mode 100644 index 0000000..51fcafd --- /dev/null +++ b/ui/shared/design-system/components/design-system.slint @@ -0,0 +1,971 @@ +// Fluent 2 Design System for Ziya Trading Platform +// Based on Microsoft Fluent 2 Design Language +// https://fluent2.microsoft.design/ + +// Complete Fluent UI Color System - All Themes Support +// Theme mode enumeration +export enum ColorMode { light, dark, team-light, team-dark } + +export global FluentColors { + // Current theme mode + in-out property current-mode: ColorMode.light; + + // Theme switching callback + callback switch-theme(ColorMode); + + // ===== LIGHT THEME COLORS ===== + + // Neutral Colors - Light + out property neutral-foreground-1-light: #242424; + out property neutral-foreground-2-light: #424242; + out property neutral-foreground-3-light: #616161; + out property neutral-foreground-4-light: #757575; + out property neutral-foreground-disabled-light: #bdbdbd; + out property neutral-foreground-inverted-light: #ffffff; + out property neutral-foreground-inverted-2-light: #f5f5f5; + out property neutral-foreground-on-brand-light: #ffffff; + out property neutral-foreground-static-inverted-light: #ffffff; + out property neutral-foreground-inverted-disabled-light: #ffffff; + + // Interactive states - Light theme + out property neutral-foreground-1-hover-light: #424242; + out property neutral-foreground-1-pressed-light: #242424; + out property neutral-foreground-2-hover-light: #616161; + out property neutral-foreground-2-pressed-light: #424242; + out property neutral-foreground-2-brand-hover-light: #0078d4; + out property neutral-foreground-2-brand-pressed-light: #005a9e; + out property neutral-foreground-2-brand-selected-light: #0078d4; + + // Link colors - Light theme + out property neutral-foreground-link-light: #0078d4; + out property neutral-foreground-link-hover-light: #106ebe; + out property neutral-foreground-link-pressed-light: #005a9e; + out property neutral-foreground-link-selected-light: #0078d4; + + out property neutral-background-1-light: #ffffff; + out property neutral-background-2-light: #fafafa; + out property neutral-background-3-light: #f5f5f5; + out property neutral-background-4-light: #f0f0f0; + out property neutral-background-5-light: #ebebeb; + out property neutral-background-6-light: #e1e1e1; + out property neutral-background-inverted-light: #292929; + out property neutral-background-static-light: #f0f0f0; + out property neutral-background-alpha-light: #ffffff; + out property neutral-background-alpha-2-light: #ffffff; + + // Background interactive states - Light theme + out property neutral-background-1-hover-light: #f5f5f5; + out property neutral-background-1-pressed-light: #f0f0f0; + out property neutral-background-1-selected-light: #ebebeb; + out property neutral-background-2-hover-light: #f0f0f0; + out property neutral-background-2-pressed-light: #ebebeb; + out property neutral-background-2-selected-light: #e1e1e1; + out property neutral-background-3-hover-light: #ebebeb; + out property neutral-background-3-pressed-light: #e1e1e1; + out property neutral-background-3-selected-light: #c7c7c7; + + out property neutral-stroke-1-light: #e1e1e1; + out property neutral-stroke-2-light: #c7c7c7; + out property neutral-stroke-3-light: #b3b3b3; + out property neutral-stroke-accessible-light: #616161; + out property neutral-stroke-focus-1-light: #ffffff; + out property neutral-stroke-focus-2-light: #000000; + out property neutral-stroke-disabled-light: #e1e1e1; + + // Stroke interactive states - Light theme + out property neutral-stroke-1-hover-light: #c7c7c7; + out property neutral-stroke-1-pressed-light: #b3b3b3; + out property neutral-stroke-1-selected-light: #b3b3b3; + out property neutral-stroke-2-hover-light: #b3b3b3; + out property neutral-stroke-2-pressed-light: #9e9e9e; + + // ===== DARK THEME COLORS ===== + + // Neutral Colors - Dark + out property neutral-foreground-1-dark: #ffffff; + out property neutral-foreground-2-dark: #f5f5f5; + out property neutral-foreground-3-dark: #ebebeb; + out property neutral-foreground-4-dark: #cccccc; + out property neutral-foreground-disabled-dark: #858585; + out property neutral-foreground-inverted-dark: #242424; + out property neutral-foreground-inverted-2-dark: #292929; + out property neutral-foreground-on-brand-dark: #ffffff; + out property neutral-foreground-static-inverted-dark: #ffffff; + out property neutral-foreground-inverted-disabled-dark: #858585; + + // Interactive states - Dark theme + out property neutral-foreground-1-hover-dark: #f5f5f5; + out property neutral-foreground-1-pressed-dark: #ffffff; + out property neutral-foreground-2-hover-dark: #ebebeb; + out property neutral-foreground-2-pressed-dark: #f5f5f5; + out property neutral-foreground-2-brand-hover-dark: #62abf5; + out property neutral-foreground-2-brand-pressed-dark: #77b7f7; + out property neutral-foreground-2-brand-selected-dark: #479ef5; + + // Link colors - Dark theme + out property neutral-foreground-link-dark: #479ef5; + out property neutral-foreground-link-hover-dark: #62abf5; + out property neutral-foreground-link-pressed-dark: #77b7f7; + out property neutral-foreground-link-selected-dark: #479ef5; + + out property neutral-background-1-dark: #1c1c1c; + out property neutral-background-2-dark: #242424; + out property neutral-background-3-dark: #292929; + out property neutral-background-4-dark: #333333; + out property neutral-background-5-dark: #3d3d3d; + out property neutral-background-6-dark: #474747; + out property neutral-background-inverted-dark: #ffffff; + out property neutral-background-static-dark: #333333; + out property neutral-background-alpha-dark: #1c1c1c; + out property neutral-background-alpha-2-dark: #1c1c1c; + + // Background interactive states - Dark theme + out property neutral-background-1-hover-dark: #242424; + out property neutral-background-1-pressed-dark: #292929; + out property neutral-background-1-selected-dark: #333333; + out property neutral-background-2-hover-dark: #292929; + out property neutral-background-2-pressed-dark: #333333; + out property neutral-background-2-selected-dark: #3d3d3d; + out property neutral-background-3-hover-dark: #333333; + out property neutral-background-3-pressed-dark: #3d3d3d; + out property neutral-background-3-selected-dark: #474747; + + out property neutral-stroke-1-dark: #3d3d3d; + out property neutral-stroke-2-dark: #525252; + out property neutral-stroke-3-dark: #666666; + out property neutral-stroke-accessible-dark: #cccccc; + out property neutral-stroke-focus-1-dark: #ffffff; + out property neutral-stroke-focus-2-dark: #000000; + out property neutral-stroke-disabled-dark: #3d3d3d; + + // Stroke interactive states - Dark theme + out property neutral-stroke-1-hover-dark: #525252; + out property neutral-stroke-1-pressed-dark: #666666; + out property neutral-stroke-1-selected-dark: #666666; + out property neutral-stroke-2-hover-dark: #666666; + out property neutral-stroke-2-pressed-dark: #757575; + + // ===== TEAM LIGHT THEME COLORS ===== + + // Neutral Colors - Team Light + out property neutral-foreground-1-team-light: #242424; + out property neutral-foreground-2-team-light: #424242; + out property neutral-foreground-3-team-light: #616161; + out property neutral-foreground-4-team-light: #757575; + out property neutral-foreground-disabled-team-light: #bdbdbd; + out property neutral-foreground-inverted-team-light: #ffffff; + out property neutral-foreground-inverted-2-team-light: #f5f5f5; + out property neutral-foreground-on-brand-team-light: #ffffff; + out property neutral-foreground-static-inverted-team-light: #ffffff; + out property neutral-foreground-inverted-disabled-team-light: #ffffff; + + // Interactive states - Team Light theme + out property neutral-foreground-1-hover-team-light: #424242; + out property neutral-foreground-1-pressed-team-light: #242424; + out property neutral-foreground-2-hover-team-light: #616161; + out property neutral-foreground-2-pressed-team-light: #424242; + out property neutral-foreground-2-brand-hover-team-light: #585a96; + out property neutral-foreground-2-brand-pressed-team-light: #4c4e85; + out property neutral-foreground-2-brand-selected-team-light: #6264a7; + + // Link colors - Team Light theme + out property neutral-foreground-link-team-light: #6264a7; + out property neutral-foreground-link-hover-team-light: #585a96; + out property neutral-foreground-link-pressed-team-light: #4c4e85; + out property neutral-foreground-link-selected-team-light: #6264a7; + + out property neutral-background-1-team-light: #ffffff; + out property neutral-background-2-team-light: #f8f8f8; + out property neutral-background-3-team-light: #f3f2f1; + out property neutral-background-4-team-light: #edebe9; + out property neutral-background-5-team-light: #e1dfdd; + out property neutral-background-6-team-light: #d2d0ce; + out property neutral-background-inverted-team-light: #292929; + out property neutral-background-static-team-light: #edebe9; + out property neutral-background-alpha-team-light: #ffffff; + out property neutral-background-alpha-2-team-light: #ffffff; + + // Background interactive states - Team Light theme + out property neutral-background-1-hover-team-light: #f8f8f8; + out property neutral-background-1-pressed-team-light: #f3f2f1; + out property neutral-background-1-selected-team-light: #edebe9; + out property neutral-background-2-hover-team-light: #f3f2f1; + out property neutral-background-2-pressed-team-light: #edebe9; + out property neutral-background-2-selected-team-light: #e1dfdd; + out property neutral-background-3-hover-team-light: #edebe9; + out property neutral-background-3-pressed-team-light: #e1dfdd; + out property neutral-background-3-selected-team-light: #d2d0ce; + + out property neutral-stroke-1-team-light: #d2d0ce; + out property neutral-stroke-2-team-light: #c8c6c4; + out property neutral-stroke-3-team-light: #b3b0ad; + out property neutral-stroke-accessible-team-light: #605e5c; + out property neutral-stroke-focus-1-team-light: #ffffff; + out property neutral-stroke-focus-2-team-light: #000000; + out property neutral-stroke-disabled-team-light: #d2d0ce; + + // Stroke interactive states - Team Light theme + out property neutral-stroke-1-hover-team-light: #c8c6c4; + out property neutral-stroke-1-pressed-team-light: #b3b0ad; + out property neutral-stroke-1-selected-team-light: #b3b0ad; + out property neutral-stroke-2-hover-team-light: #b3b0ad; + out property neutral-stroke-2-pressed-team-light: #a19f9d; + + // ===== TEAM DARK THEME COLORS ===== + + // Neutral Colors - Team Dark + out property neutral-foreground-1-team-dark: #ffffff; + out property neutral-foreground-2-team-dark: #f3f2f1; + out property neutral-foreground-3-team-dark: #edebe9; + out property neutral-foreground-4-team-dark: #d2d0ce; + out property neutral-foreground-disabled-team-dark: #8a8886; + out property neutral-foreground-inverted-team-dark: #242424; + out property neutral-foreground-inverted-2-team-dark: #292929; + out property neutral-foreground-on-brand-team-dark: #ffffff; + out property neutral-foreground-static-inverted-team-dark: #ffffff; + out property neutral-foreground-inverted-disabled-team-dark: #8a8886; + + // Interactive states - Team Dark theme + out property neutral-foreground-1-hover-team-dark: #f3f2f1; + out property neutral-foreground-1-pressed-team-dark: #ffffff; + out property neutral-foreground-2-hover-team-dark: #edebe9; + out property neutral-foreground-2-pressed-team-dark: #f3f2f1; + out property neutral-foreground-2-brand-hover-team-dark: #9a9bd2; + out property neutral-foreground-2-brand-pressed-team-dark: #a8a9db; + out property neutral-foreground-2-brand-selected-team-dark: #8b8cc8; + + // Link colors - Team Dark theme + out property neutral-foreground-link-team-dark: #8b8cc8; + out property neutral-foreground-link-hover-team-dark: #9a9bd2; + out property neutral-foreground-link-pressed-team-dark: #a8a9db; + out property neutral-foreground-link-selected-team-dark: #8b8cc8; + + out property neutral-background-1-team-dark: #252423; + out property neutral-background-2-team-dark: #2d2c2b; + out property neutral-background-3-team-dark: #323130; + out property neutral-background-4-team-dark: #3b3a39; + out property neutral-background-5-team-dark: #484644; + out property neutral-background-6-team-dark: #605e5c; + out property neutral-background-inverted-team-dark: #ffffff; + out property neutral-background-static-team-dark: #3b3a39; + out property neutral-background-alpha-team-dark: #252423; + out property neutral-background-alpha-2-team-dark: #252423; + + // Background interactive states - Team Dark theme + out property neutral-background-1-hover-team-dark: #2d2c2b; + out property neutral-background-1-pressed-team-dark: #323130; + out property neutral-background-1-selected-team-dark: #3b3a39; + out property neutral-background-2-hover-team-dark: #323130; + out property neutral-background-2-pressed-team-dark: #3b3a39; + out property neutral-background-2-selected-team-dark: #484644; + out property neutral-background-3-hover-team-dark: #3b3a39; + out property neutral-background-3-pressed-team-dark: #484644; + out property neutral-background-3-selected-team-dark: #605e5c; + + out property neutral-stroke-1-team-dark: #484644; + out property neutral-stroke-2-team-dark: #605e5c; + out property neutral-stroke-3-team-dark: #797775; + out property neutral-stroke-accessible-team-dark: #d2d0ce; + out property neutral-stroke-focus-1-team-dark: #ffffff; + out property neutral-stroke-focus-2-team-dark: #000000; + out property neutral-stroke-disabled-team-dark: #484644; + + // Stroke interactive states - Team Dark theme + out property neutral-stroke-1-hover-team-dark: #605e5c; + out property neutral-stroke-1-pressed-team-dark: #797775; + out property neutral-stroke-1-selected-team-dark: #797775; + out property neutral-stroke-2-hover-team-dark: #797775; + out property neutral-stroke-2-pressed-team-dark: #8a8886; + + // ===== BRAND COLORS (All Themes) ===== + + // Brand Colors - Light + out property brand-background-1-light: #0078d4; + out property brand-background-2-light: #106ebe; + out property brand-background-3-light: #005a9e; + out property brand-foreground-1-light: #ffffff; + out property brand-foreground-2-light: #f3f2f1; + out property brand-stroke-1-light: #0078d4; + out property brand-stroke-2-light: #106ebe; + + // Brand interactive states - Light theme + out property brand-background-1-hover-light: #106ebe; + out property brand-background-1-pressed-light: #005a9e; + out property brand-background-1-selected-light: #0078d4; + out property brand-background-2-hover-light: #005a9e; + out property brand-background-2-pressed-light: #004578; + out property brand-stroke-1-hover-light: #106ebe; + out property brand-stroke-1-pressed-light: #005a9e; + + // Brand Colors - Dark + out property brand-background-1-dark: #479ef5; + out property brand-background-2-dark: #62abf5; + out property brand-background-3-dark: #77b7f7; + out property brand-foreground-1-dark: #ffffff; + out property brand-foreground-2-dark: #f3f2f1; + out property brand-stroke-1-dark: #479ef5; + out property brand-stroke-2-dark: #62abf5; + + // Brand interactive states - Dark theme + out property brand-background-1-hover-dark: #62abf5; + out property brand-background-1-pressed-dark: #77b7f7; + out property brand-background-1-selected-dark: #479ef5; + out property brand-background-2-hover-dark: #77b7f7; + out property brand-background-2-pressed-dark: #8cc8f8; + out property brand-stroke-1-hover-dark: #62abf5; + out property brand-stroke-1-pressed-dark: #77b7f7; + + // Brand Colors - Team Light + out property brand-background-1-team-light: #6264a7; + out property brand-background-2-team-light: #585a96; + out property brand-background-3-team-light: #4c4e85; + out property brand-foreground-1-team-light: #ffffff; + out property brand-foreground-2-team-light: #f3f2f1; + out property brand-stroke-1-team-light: #6264a7; + out property brand-stroke-2-team-light: #585a96; + + // Brand interactive states - Team Light theme + out property brand-background-1-hover-team-light: #585a96; + out property brand-background-1-pressed-team-light: #4c4e85; + out property brand-background-1-selected-team-light: #6264a7; + out property brand-background-2-hover-team-light: #4c4e85; + out property brand-background-2-pressed-team-light: #414374; + out property brand-stroke-1-hover-team-light: #585a96; + out property brand-stroke-1-pressed-team-light: #4c4e85; + + // Brand Colors - Team Dark + out property brand-background-1-team-dark: #8b8cc8; + out property brand-background-2-team-dark: #9a9bd2; + out property brand-background-3-team-dark: #a8a9db; + out property brand-foreground-1-team-dark: #ffffff; + out property brand-foreground-2-team-dark: #f3f2f1; + out property brand-stroke-1-team-dark: #8b8cc8; + out property brand-stroke-2-team-dark: #9a9bd2; + + // Brand interactive states - Team Dark theme + out property brand-background-1-hover-team-dark: #9a9bd2; + out property brand-background-1-pressed-team-dark: #a8a9db; + out property brand-background-1-selected-team-dark: #8b8cc8; + out property brand-background-2-hover-team-dark: #a8a9db; + out property brand-background-2-pressed-team-dark: #b6b7e4; + out property brand-stroke-1-hover-team-dark: #9a9bd2; + out property brand-stroke-1-pressed-team-dark: #a8a9db; + + // ===== SEMANTIC COLORS (All Themes) ===== + + // Success Colors - All Themes + out property success-background-1-light: #107c10; + out property success-background-2-light: #0e6e0e; + out property success-foreground-1-light: #ffffff; + out property success-stroke-1-light: #107c10; + + out property success-background-1-dark: #54b054; + out property success-background-2-dark: #6bb26b; + out property success-foreground-1-dark: #ffffff; + out property success-stroke-1-dark: #54b054; + + out property success-background-1-team-light: #237b4b; + out property success-background-2-team-light: #1e6f42; + out property success-foreground-1-team-light: #ffffff; + out property success-stroke-1-team-light: #237b4b; + + out property success-background-1-team-dark: #5bb85b; + out property success-background-2-team-dark: #6fc46f; + out property success-foreground-1-team-dark: #ffffff; + out property success-stroke-1-team-dark: #5bb85b; + + // Warning Colors - All Themes + out property warning-background-1-light: #fde047; + out property warning-background-2-light: #facc15; + out property warning-foreground-1-light: #323130; + out property warning-stroke-1-light: #f7c52d; + + out property warning-background-1-dark: #ffb900; + out property warning-background-2-dark: #ffc328; + out property warning-foreground-1-dark: #323130; + out property warning-stroke-1-dark: #ffb900; + + out property warning-background-1-team-light: #c19c00; + out property warning-background-2-team-light: #a18600; + out property warning-foreground-1-team-light: #ffffff; + out property warning-stroke-1-team-light: #c19c00; + + out property warning-background-1-team-dark: #ffd43a; + out property warning-background-2-team-dark: #ffda56; + out property warning-foreground-1-team-dark: #323130; + out property warning-stroke-1-team-dark: #ffd43a; + + // Critical/Error Colors - All Themes + out property critical-background-1-light: #d13438; + out property critical-background-2-light: #b91c1c; + out property critical-foreground-1-light: #ffffff; + out property critical-stroke-1-light: #d13438; + + out property critical-background-1-dark: #ff6b6b; + out property critical-background-2-dark: #ff8080; + out property critical-foreground-1-dark: #ffffff; + out property critical-stroke-1-dark: #ff6b6b; + + out property critical-background-1-team-light: #c50e1f; + out property critical-background-2-team-light: #a80e1b; + out property critical-foreground-1-team-light: #ffffff; + out property critical-stroke-1-team-light: #c50e1f; + + out property critical-background-1-team-dark: #ff8080; + out property critical-background-2-team-dark: #ff9494; + out property critical-foreground-1-team-dark: #ffffff; + out property critical-stroke-1-team-dark: #ff8080; + + // ===== CURRENT THEME ACCESSORS ===== + // These automatically switch based on current-mode + + // Current Neutral Colors + out property neutral-foreground-1: current-mode == ColorMode.light ? neutral-foreground-1-light : + current-mode == ColorMode.dark ? neutral-foreground-1-dark : + current-mode == ColorMode.team-light ? neutral-foreground-1-team-light : neutral-foreground-1-team-dark; + + out property neutral-foreground-2: current-mode == ColorMode.light ? neutral-foreground-2-light : + current-mode == ColorMode.dark ? neutral-foreground-2-dark : + current-mode == ColorMode.team-light ? neutral-foreground-2-team-light : neutral-foreground-2-team-dark; + + out property neutral-foreground-3: current-mode == ColorMode.light ? neutral-foreground-3-light : + current-mode == ColorMode.dark ? neutral-foreground-3-dark : + current-mode == ColorMode.team-light ? neutral-foreground-3-team-light : neutral-foreground-3-team-dark; + + out property neutral-foreground-disabled: current-mode == ColorMode.light ? neutral-foreground-disabled-light : + current-mode == ColorMode.dark ? neutral-foreground-disabled-dark : + current-mode == ColorMode.team-light ? neutral-foreground-disabled-team-light : neutral-foreground-disabled-team-dark; + + out property neutral-background-1: current-mode == ColorMode.light ? neutral-background-1-light : + current-mode == ColorMode.dark ? neutral-background-1-dark : + current-mode == ColorMode.team-light ? neutral-background-1-team-light : neutral-background-1-team-dark; + + out property neutral-background-2: current-mode == ColorMode.light ? neutral-background-2-light : + current-mode == ColorMode.dark ? neutral-background-2-dark : + current-mode == ColorMode.team-light ? neutral-background-2-team-light : neutral-background-2-team-dark; + + out property neutral-background-3: current-mode == ColorMode.light ? neutral-background-3-light : + current-mode == ColorMode.dark ? neutral-background-3-dark : + current-mode == ColorMode.team-light ? neutral-background-3-team-light : neutral-background-3-team-dark; + + out property neutral-background-4: current-mode == ColorMode.light ? neutral-background-4-light : + current-mode == ColorMode.dark ? neutral-background-4-dark : + current-mode == ColorMode.team-light ? neutral-background-4-team-light : neutral-background-4-team-dark; + + out property neutral-stroke-1: current-mode == ColorMode.light ? neutral-stroke-1-light : + current-mode == ColorMode.dark ? neutral-stroke-1-dark : + current-mode == ColorMode.team-light ? neutral-stroke-1-team-light : neutral-stroke-1-team-dark; + + out property neutral-stroke-2: current-mode == ColorMode.light ? neutral-stroke-2-light : + current-mode == ColorMode.dark ? neutral-stroke-2-dark : + current-mode == ColorMode.team-light ? neutral-stroke-2-team-light : neutral-stroke-2-team-dark; + + out property neutral-stroke-accessible: current-mode == ColorMode.light ? neutral-stroke-accessible-light : + current-mode == ColorMode.dark ? neutral-stroke-accessible-dark : + current-mode == ColorMode.team-light ? neutral-stroke-accessible-team-light : neutral-stroke-accessible-team-dark; + + // Current Interactive States + out property neutral-foreground-1-hover: current-mode == ColorMode.light ? neutral-foreground-1-hover-light : + current-mode == ColorMode.dark ? neutral-foreground-1-hover-dark : + current-mode == ColorMode.team-light ? neutral-foreground-1-hover-team-light : neutral-foreground-1-hover-team-dark; + + out property neutral-foreground-2-brand-hover: current-mode == ColorMode.light ? neutral-foreground-2-brand-hover-light : + current-mode == ColorMode.dark ? neutral-foreground-2-brand-hover-dark : + current-mode == ColorMode.team-light ? neutral-foreground-2-brand-hover-team-light : neutral-foreground-2-brand-hover-team-dark; + + // Current Link Colors + out property neutral-foreground-link: current-mode == ColorMode.light ? neutral-foreground-link-light : + current-mode == ColorMode.dark ? neutral-foreground-link-dark : + current-mode == ColorMode.team-light ? neutral-foreground-link-team-light : neutral-foreground-link-team-dark; + + out property neutral-foreground-link-hover: current-mode == ColorMode.light ? neutral-foreground-link-hover-light : + current-mode == ColorMode.dark ? neutral-foreground-link-hover-dark : + current-mode == ColorMode.team-light ? neutral-foreground-link-hover-team-light : neutral-foreground-link-hover-team-dark; + + out property neutral-foreground-link-pressed: current-mode == ColorMode.light ? neutral-foreground-link-pressed-light : + current-mode == ColorMode.dark ? neutral-foreground-link-pressed-dark : + current-mode == ColorMode.team-light ? neutral-foreground-link-pressed-team-light : neutral-foreground-link-pressed-team-dark; + + // Current Background Interactive States + out property neutral-background-1-hover: current-mode == ColorMode.light ? neutral-background-1-hover-light : + current-mode == ColorMode.dark ? neutral-background-1-hover-dark : + current-mode == ColorMode.team-light ? neutral-background-1-hover-team-light : neutral-background-1-hover-team-dark; + + out property neutral-background-1-pressed: current-mode == ColorMode.light ? neutral-background-1-pressed-light : + current-mode == ColorMode.dark ? neutral-background-1-pressed-dark : + current-mode == ColorMode.team-light ? neutral-background-1-pressed-team-light : neutral-background-1-pressed-team-dark; + + // Current Stroke Interactive States + out property neutral-stroke-1-hover: current-mode == ColorMode.light ? neutral-stroke-1-hover-light : + current-mode == ColorMode.dark ? neutral-stroke-1-hover-dark : + current-mode == ColorMode.team-light ? neutral-stroke-1-hover-team-light : neutral-stroke-1-hover-team-dark; + + out property neutral-stroke-1-pressed: current-mode == ColorMode.light ? neutral-stroke-1-pressed-light : + current-mode == ColorMode.dark ? neutral-stroke-1-pressed-dark : + current-mode == ColorMode.team-light ? neutral-stroke-1-pressed-team-light : neutral-stroke-1-pressed-team-dark; + + // Current Brand Colors + out property brand-background-1: current-mode == ColorMode.light ? brand-background-1-light : + current-mode == ColorMode.dark ? brand-background-1-dark : + current-mode == ColorMode.team-light ? brand-background-1-team-light : brand-background-1-team-dark; + + out property brand-background-2: current-mode == ColorMode.light ? brand-background-2-light : + current-mode == ColorMode.dark ? brand-background-2-dark : + current-mode == ColorMode.team-light ? brand-background-2-team-light : brand-background-2-team-dark; + + out property brand-foreground-1: current-mode == ColorMode.light ? brand-foreground-1-light : + current-mode == ColorMode.dark ? brand-foreground-1-dark : + current-mode == ColorMode.team-light ? brand-foreground-1-team-light : brand-foreground-1-team-dark; + + // Current Brand Interactive States + out property brand-background-1-hover: current-mode == ColorMode.light ? brand-background-1-hover-light : + current-mode == ColorMode.dark ? brand-background-1-hover-dark : + current-mode == ColorMode.team-light ? brand-background-1-hover-team-light : brand-background-1-hover-team-dark; + + out property brand-background-1-pressed: current-mode == ColorMode.light ? brand-background-1-pressed-light : + current-mode == ColorMode.dark ? brand-background-1-pressed-dark : + current-mode == ColorMode.team-light ? brand-background-1-pressed-team-light : brand-background-1-pressed-team-dark; + + // Current Semantic Colors + out property success-background-1: current-mode == ColorMode.light ? success-background-1-light : + current-mode == ColorMode.dark ? success-background-1-dark : + current-mode == ColorMode.team-light ? success-background-1-team-light : success-background-1-team-dark; + + out property warning-background-1: current-mode == ColorMode.light ? warning-background-1-light : + current-mode == ColorMode.dark ? warning-background-1-dark : + current-mode == ColorMode.team-light ? warning-background-1-team-light : warning-background-1-team-dark; + + out property critical-background-1: current-mode == ColorMode.light ? critical-background-1-light : + current-mode == ColorMode.dark ? critical-background-1-dark : + current-mode == ColorMode.team-light ? critical-background-1-team-light : critical-background-1-team-dark; + + // Legacy compatibility and Trading-specific colors + out property neutral-foreground-rest: neutral-foreground-1; + out property profit-green: success-background-1; + out property loss-red: critical-background-1; + out property neutral-gray: neutral-foreground-3; + + // Accent colors for trading UI + out property accent-purple: #f000b8; + out property accent-teal: #37cdbe; + out property accent-blue: brand-background-1; +} + +// Typography System - Official Fluent 2 Typography Tokens +// Based on: https://fluent2.microsoft.design/typography +export global FluentTypography { + // ===== FLUENT FONT STACKS ===== + // Segoe - unmistakably Microsoft (Primary Web/Windows font stack) + out property font-family-base: "Segoe UI Variable, Segoe UI, system-ui, sans-serif"; + out property font-family-web: "Segoe UI Variable, Segoe UI, system-ui, sans-serif"; + out property font-family-windows: "Segoe UI Variable, Segoe UI, system-ui, sans-serif"; + + // Platform-specific native font stacks for cross-platform consistency + out property font-family-macos: "SF Pro Display, SF Pro Text, system-ui, sans-serif"; + out property font-family-ios: "SF Pro Display, SF Pro Text, system-ui, sans-serif"; + out property font-family-android: "Roboto, system-ui, sans-serif"; + + // Specialized font families + out property font-family-monospace: "Cascadia Code, Cascadia Mono, Consolas, Courier New, monospace"; + out property font-family-numeric: "Bahnschrift, Segoe UI Variable, Segoe UI, system-ui, sans-serif"; + + // ===== FONT WEIGHTS - Fluent 2 Weight Scale ===== + out property font-weight-regular: 400; // Regular + out property font-weight-medium: 500; // Medium (Android) + out property font-weight-semibold: 600; // Semibold + out property font-weight-bold: 700; // Bold + + // ===== WEB TYPE RAMP - Official Fluent 2 Web Typography ===== + // Caption styles + out property font-size-caption-2: 10px; // Caption 2 + out property line-height-caption-2: 14px; + out property font-weight-caption-2: font-weight-regular; + out property font-weight-caption-2-strong: font-weight-semibold; + + out property font-size-caption-1: 12px; // Caption 1 + out property line-height-caption-1: 16px; + out property font-weight-caption-1: font-weight-regular; + out property font-weight-caption-1-strong: font-weight-semibold; + out property font-weight-caption-1-stronger: font-weight-bold; + + // Body styles + out property font-size-body-1: 14px; // Body 1 (Default) + out property line-height-body-1: 20px; + out property font-weight-body-1: font-weight-regular; + out property font-weight-body-1-strong: font-weight-semibold; + out property font-weight-body-1-stronger: font-weight-bold; + + // Subtitle styles + out property font-size-subtitle-2: 16px; // Subtitle 2 + out property line-height-subtitle-2: 22px; + out property font-weight-subtitle-2: font-weight-semibold; + out property font-weight-subtitle-2-stronger: font-weight-bold; + + out property font-size-subtitle-1: 20px; // Subtitle 1 + out property line-height-subtitle-1: 26px; + out property font-weight-subtitle-1: font-weight-semibold; + + // Title styles + out property font-size-title-3: 24px; // Title 3 + out property line-height-title-3: 32px; + out property font-weight-title-3: font-weight-semibold; + + out property font-size-title-2: 28px; // Title 2 + out property line-height-title-2: 36px; + out property font-weight-title-2: font-weight-semibold; + + out property font-size-title-1: 32px; // Title 1 + out property line-height-title-1: 40px; + out property font-weight-title-1: font-weight-semibold; + + // Large title and display + out property font-size-large-title: 40px; // Large Title + out property line-height-large-title: 52px; + out property font-weight-large-title: font-weight-semibold; + + out property font-size-display: 68px; // Display + out property line-height-display: 92px; + out property font-weight-display: font-weight-semibold; + + // ===== WINDOWS TYPE RAMP - Official Fluent 2 Windows Typography ===== + // Windows-specific variants using Segoe UI Variable + out property font-size-windows-caption: 12px; // Caption + out property line-height-windows-caption: 16px; + out property font-weight-windows-caption: font-weight-regular; + + out property font-size-windows-body: 14px; // Body + out property line-height-windows-body: 20px; + out property font-weight-windows-body: font-weight-regular; + out property font-weight-windows-body-strong: font-weight-semibold; + + out property font-size-windows-body-large: 18px; // Body Large + out property line-height-windows-body-large: 24px; + out property font-weight-windows-body-large: font-weight-regular; + + out property font-size-windows-subtitle: 20px; // Subtitle + out property line-height-windows-subtitle: 28px; + out property font-weight-windows-subtitle: font-weight-semibold; + + out property font-size-windows-title: 28px; // Title + out property line-height-windows-title: 36px; + out property font-weight-windows-title: font-weight-semibold; + + out property font-size-windows-large-title: 40px; // Large Title + out property line-height-windows-large-title: 52px; + out property font-weight-windows-large-title: font-weight-semibold; + + out property font-size-windows-display: 68px; // Display + out property line-height-windows-display: 92px; + out property font-weight-windows-display: font-weight-semibold; + + // ===== LEGACY NUMERIC TOKENS - For backward compatibility ===== + out property font-size-100: font-size-caption-2; // 10px + out property font-size-200: font-size-caption-1; // 12px + out property font-size-300: font-size-body-1; // 14px + out property font-size-400: font-size-subtitle-2; // 16px + out property font-size-500: 18px; // Custom + out property font-size-600: font-size-subtitle-1; // 20px + out property font-size-700: font-size-title-3; // 24px + out property font-size-800: font-size-title-2; // 28px + out property font-size-900: font-size-title-1; // 32px + out property font-size-1000: font-size-large-title; // 40px + out property font-size-1100: 48px; // Custom Large + out property font-size-1200: font-size-display; // 68px + + out property line-height-100: line-height-caption-2; // 14px + out property line-height-200: line-height-caption-1; // 16px + out property line-height-300: line-height-body-1; // 20px + out property line-height-400: line-height-subtitle-2; // 22px + out property line-height-500: 24px; // Custom + out property line-height-600: line-height-subtitle-1; // 26px + out property line-height-700: line-height-title-3; // 32px + out property line-height-800: line-height-title-2; // 36px + out property line-height-900: line-height-title-1; // 40px + out property line-height-1000: line-height-large-title; // 52px + out property line-height-1100: 60px; // Custom + out property line-height-1200: line-height-display; // 92px + + // ===== TEXT STYLING UTILITIES ===== + // Letter spacing for fine typography control + out property letter-spacing-tight: -0.16px; // For large text + out property letter-spacing-normal: 0px; // Standard + out property letter-spacing-wide: 0.32px; // For small text + + // Text decoration + out property text-decoration-none: "none"; + out property text-decoration-underline: "underline"; + out property text-decoration-line-through: "line-through"; + + // Text transform (following Fluent guidance for sentence case) + out property text-transform-none: "none"; + out property text-transform-uppercase: "uppercase"; + out property text-transform-lowercase: "lowercase"; + out property text-transform-capitalize: "capitalize"; + + // ===== USAGE EXAMPLES ===== + // Caption 2: font-size: FluentTypography.font-size-caption-2; line-height: FluentTypography.line-height-caption-2; font-weight: FluentTypography.font-weight-caption-2; + // Body 1: font-size: FluentTypography.font-size-body-1; line-height: FluentTypography.line-height-body-1; font-weight: FluentTypography.font-weight-body-1; + // Title 1: font-size: FluentTypography.font-size-title-1; line-height: FluentTypography.line-height-title-1; font-weight: FluentTypography.font-weight-title-1; + // Display: font-size: FluentTypography.font-size-display; line-height: FluentTypography.line-height-display; font-weight: FluentTypography.font-weight-display; +} + +// Spacing System - Fluent 2 Spacing Scale +export global FluentSpacing { + out property space-2: 2px; + out property space-4: 4px; + out property space-6: 6px; + out property space-8: 8px; + out property space-10: 10px; + out property space-12: 12px; + out property space-16: 16px; + out property space-20: 20px; + out property space-24: 24px; + out property space-28: 28px; + out property space-32: 32px; + out property space-36: 36px; + out property space-40: 40px; + out property space-48: 48px; + out property space-64: 64px; + out property space-80: 80px; + out property space-96: 96px; + out property space-120: 120px; +} + +// Border Radius - Complete Fluent UI Border Radius System +export global FluentRadius { + // Corner Radius Scale + out property border-radius-none: 0px; + out property border-radius-small: 2px; + out property border-radius-medium: 4px; + out property border-radius-large: 6px; + out property border-radius-x-large: 8px; + out property border-radius-circular: 10000px; + + // Legacy support + out property radius-none: 0px; + out property radius-small: 2px; + out property radius-medium: 4px; + out property radius-large: 6px; + out property radius-xlarge: 8px; + out property radius-circular: 10000px; +} + +// Shadows - Complete Fluent UI Shadow System +// Based on: https://react.fluentui.dev/?path=/docs/theme-shadows--docs +export global FluentShadows { + // ===== SHADOW BRAND TOKENS ===== + // These are the primary shadow tokens used throughout Fluent UI + + // Shadow 2 - Subtle elevation (tooltips, dropdowns) + out property shadow-2-x: 0px; + out property shadow-2-y: 1px; + out property shadow-2-blur: 2px; + out property shadow-2-spread: 0px; + out property shadow-2-color: #00000014; // 8% opacity black + + // Shadow 4 - Low elevation (cards, buttons) + out property shadow-4-x: 0px; + out property shadow-4-y: 2px; + out property shadow-4-blur: 4px; + out property shadow-4-spread: 0px; + out property shadow-4-color: #0000001f; // 12% opacity black + + // Shadow 8 - Medium elevation (dialogs, menus) + out property shadow-8-x: 0px; + out property shadow-8-y: 4px; + out property shadow-8-blur: 8px; + out property shadow-8-spread: 0px; + out property shadow-8-color: #0000001f; // 12% opacity black + + // Shadow 16 - High elevation (modals, flyouts) + out property shadow-16-x: 0px; + out property shadow-16-y: 8px; + out property shadow-16-blur: 16px; + out property shadow-16-spread: 0px; + out property shadow-16-color: #00000024; // 14% opacity black + + // Shadow 28 - Very high elevation (teaching callouts) + out property shadow-28-x: 0px; + out property shadow-28-y: 14px; + out property shadow-28-blur: 28px; + out property shadow-28-spread: 0px; + out property shadow-28-color: #00000024; // 14% opacity black + + // Shadow 64 - Maximum elevation (panels, navigation) + out property shadow-64-x: 0px; + out property shadow-64-y: 32px; + out property shadow-64-blur: 64px; + out property shadow-64-spread: 0px; + out property shadow-64-color: #00000033; // 20% opacity black + + // ===== THEME-AWARE SHADOW COLORS ===== + // Light theme shadow colors + out property shadow-light-ambient: #0000000f; // 6% opacity black + out property shadow-light-key: #00000014; // 8% opacity black + out property shadow-light-ambient-darker: #00000014; // 8% opacity black + out property shadow-light-key-darker: #0000001f; // 12% opacity black + out property shadow-light-ambient-darkest: #0000001f; // 12% opacity black + out property shadow-light-key-darkest: #00000024; // 14% opacity black + + // Dark theme shadow colors + out property shadow-dark-ambient: #0000001f; // 12% opacity black + out property shadow-dark-key: #00000024; // 14% opacity black + out property shadow-dark-ambient-darker: #00000024; // 14% opacity black + out property shadow-dark-key-darker: #00000033; // 20% opacity black + out property shadow-dark-ambient-darkest: #00000033; // 20% opacity black + out property shadow-dark-key-darkest: #00000047; // 28% opacity black + + // ===== SPECIALIZED SHADOW TOKENS ===== + // Brand shadow (with brand color tint) + out property shadow-brand-x: 0px; + out property shadow-brand-y: 2px; + out property shadow-brand-blur: 8px; + out property shadow-brand-spread: 0px; + out property shadow-brand-color: #0078d414; // Brand blue with 8% opacity + + // Inset shadow (for pressed states) + out property shadow-inset-x: 0px; + out property shadow-inset-y: 1px; + out property shadow-inset-blur: 2px; + out property shadow-inset-spread: 0px; + out property shadow-inset-color: #0000001f; // 12% opacity black + + // Focus shadow (for accessibility) + out property shadow-focus-x: 0px; + out property shadow-focus-y: 0px; + out property shadow-focus-blur: 0px; + out property shadow-focus-spread: 2px; + out property shadow-focus-color: #0078d4; // Brand blue + + // ===== COMPONENT-SPECIFIC SHADOW TOKENS ===== + // Button shadows + out property shadow-button-rest: shadow-2-color; + out property shadow-button-hover: shadow-4-color; + out property shadow-button-pressed: shadow-inset-color; + + // Card shadows + out property shadow-card-rest: shadow-4-color; + out property shadow-card-hover: shadow-8-color; + + // Dialog shadows + out property shadow-dialog: shadow-64-color; + + // Flyout shadows + out property shadow-flyout: shadow-16-color; + + // Tooltip shadows + out property shadow-tooltip: shadow-8-color; + + // ===== LEGACY SHADOW SUPPORT ===== + // Note: shadow-*-blur properties are already defined above in the main shadow tokens + // They can be used directly for backward compatibility + + // ===== SHADOW UTILITY FUNCTIONS ===== + // Helper properties for common shadow combinations + + // Subtle shadow (for subtle elevation) + out property subtle-shadow-x: shadow-2-x; + out property subtle-shadow-y: shadow-2-y; + out property subtle-shadow-blur: shadow-2-blur; + out property subtle-shadow-color: shadow-2-color; + + // Default shadow (for standard elevation) + out property default-shadow-x: shadow-4-x; + out property default-shadow-y: shadow-4-y; + out property default-shadow-blur: shadow-4-blur; + out property default-shadow-color: shadow-4-color; + + // Deep shadow (for high elevation) + out property deep-shadow-x: shadow-16-x; + out property deep-shadow-y: shadow-16-y; + out property deep-shadow-blur: shadow-16-blur; + out property deep-shadow-color: shadow-16-color; + + // ===== USAGE NOTES ===== + // To apply shadows in components, use the individual tokens: + // Example: Rectangle { drop-shadow-offset-x: FluentShadows.shadow-4-x; drop-shadow-offset-y: FluentShadows.shadow-4-y; drop-shadow-blur: FluentShadows.shadow-4-blur; drop-shadow-color: FluentShadows.shadow-4-color; } + // For focus states: Rectangle { border-width: FluentShadows.shadow-focus-spread; border-color: FluentShadows.shadow-focus-color; } +} + +// Component Tokens - Fluent 2 Component Specifications +export global FluentComponents { + // Button + out property button-height-small: 24px; + out property button-height-medium: 32px; + out property button-height-large: 40px; + out property button-padding-horizontal: 16px; + out property button-border-radius: FluentRadius.border-radius-medium; + + // Input + out property input-height: 32px; + out property input-padding-horizontal: 12px; + out property input-border-radius: FluentRadius.border-radius-medium; + out property input-border-width: 1px; + + // Card + out property card-padding: FluentSpacing.space-16; + out property card-border-radius: FluentRadius.border-radius-large; + out property card-border-width: 1px; + + // Navigation + out property nav-item-height: 40px; + out property nav-item-padding: FluentSpacing.space-12; + out property nav-item-border-radius: FluentRadius.border-radius-medium; + + // Title Bar + out property titlebar-height: 32px; + out property titlebar-button-width: 46px; + + // Sidebar + out property sidebar-width: 280px; + out property sidebar-collapsed-width: 48px; +} + +// Animation & Motion - Fluent 2 Motion System +export global FluentMotion { + out property duration-ultra-fast: 50ms; + out property duration-faster: 100ms; + out property duration-fast: 150ms; + out property duration-normal: 200ms; + out property duration-slow: 300ms; + out property duration-slower: 400ms; + out property duration-ultra-slow: 500ms; + + // Easing curves (represented as animation properties) + out property ease-accelerate: ease-in; + out property ease-decelerate: ease-out; + out property ease-standard: ease-in-out; + out property ease-max: ease; +} + +// Layout Grid - Fluent 2 Layout System +export global FluentLayout { + // Breakpoints + out property breakpoint-small: 480px; + out property breakpoint-medium: 768px; + out property breakpoint-large: 1024px; + out property breakpoint-xlarge: 1440px; + + // Container max widths + out property container-small: 640px; + out property container-medium: 768px; + out property container-large: 1024px; + out property container-xlarge: 1280px; + + // Grid + out property grid-gutter: FluentSpacing.space-24; + out property grid-columns: 12; +} + +// Z-Index Scale +export global FluentLayers { + out property layer-base: 0; + out property layer-dropdown: 1000; + out property layer-sticky: 1020; + out property layer-banner: 1030; + out property layer-overlay: 1040; + out property layer-modal: 1050; + out property layer-popover: 1060; + out property layer-tooltip: 1070; + out property layer-toast: 1080; +} \ No newline at end of file diff --git a/ui/shared/design-system/index.slint b/ui/shared/design-system/index.slint new file mode 100644 index 0000000..9d6da7a --- /dev/null +++ b/ui/shared/design-system/index.slint @@ -0,0 +1,8 @@ +// Design System Public API +// This file exports all design tokens and components from the design system + +// Export design tokens +export { Theme } from "tokens/theme.slint"; + +// Export design system components +export * from "components/design-system.slint"; \ No newline at end of file diff --git a/ui/shared/design-system/tokens/theme.slint b/ui/shared/design-system/tokens/theme.slint new file mode 100644 index 0000000..f904bb9 --- /dev/null +++ b/ui/shared/design-system/tokens/theme.slint @@ -0,0 +1,29 @@ +// Global theme management system +export global Theme { + in-out property is-dark-mode: false; + + // Color scheme properties that automatically update based on theme + out property background: is-dark-mode ? #1a1a1a : #ffffff; + out property surface: is-dark-mode ? #2a2a2a : #f5f5f5; + out property primary: #3b82f6; + out property primary-variant: is-dark-mode ? #60a5fa : #2563eb; + out property secondary: is-dark-mode ? #64748b : #475569; + out property text-primary: is-dark-mode ? #ffffff : #1f2937; + out property text-secondary: is-dark-mode ? #d1d5db : #6b7280; + out property border: is-dark-mode ? #374151 : #e5e7eb; + out property accent: is-dark-mode ? #22c55e : #16a34a; + out property error: #ef4444; + out property warning: #f59e0b; + out property success: #10b981; + + // Card and container colors + out property card-background: is-dark-mode ? #2a2a2a : #ffffff; + out property card-border: is-dark-mode ? #404040 : #e5e7eb; + + // Navigation colors + out property nav-background: is-dark-mode ? #1f1f1f : #f8fafc; + out property nav-active: primary; + out property nav-hover: is-dark-mode ? #374151 : #f1f5f9; + + // Theme state is directly modified by components and Rust code +} \ No newline at end of file diff --git a/ui/shared/index.slint b/ui/shared/index.slint new file mode 100644 index 0000000..9fb8b37 --- /dev/null +++ b/ui/shared/index.slint @@ -0,0 +1,12 @@ +// Shared Layer Public API +// This file exports all shared utilities, components, and design system + +// Export design system +export { Theme, FluentColors, FluentTypography, FluentSpacing, FluentRadius, FluentShadows, FluentComponents, FluentMotion, FluentLayout, FluentLayers, ColorMode } from "design-system/index.slint"; + +// Export UI components +export { Button, Card, Input, LoadingView, Container, Grid } from "ui/index.slint"; + +// Export utilities and config - currently commented out in their index files +// export * from "lib/index.slint"; +// export * from "config/index.slint"; \ No newline at end of file diff --git a/ui/shared/lib/index.slint b/ui/shared/lib/index.slint new file mode 100644 index 0000000..2e792a7 --- /dev/null +++ b/ui/shared/lib/index.slint @@ -0,0 +1,5 @@ +// Shared Library Public API +// Export utility functions and helpers + +// Currently no utilities defined +// export * from "utils/common-utils.slint"; \ No newline at end of file diff --git a/ui/shared/ui/button/button.slint b/ui/shared/ui/button/button.slint new file mode 100644 index 0000000..d793e6c --- /dev/null +++ b/ui/shared/ui/button/button.slint @@ -0,0 +1,50 @@ +import { VerticalBox, HorizontalBox } from "std-widgets.slint"; + +// Basic Button Component +export component Button { + in property text; + in property enabled: true; + in property background-color: #2563eb; + in property text-color: white; + in property hover-color: #1d4ed8; + in property disabled-color: #94a3b8; + in property border-radius: 6px; + in property padding-horizontal: 16px; + in property padding-vertical: 8px; + + callback clicked(); + + min-width: 80px; + min-height: 36px; + + Rectangle { + background: enabled ? (touch-area.has-hover ? hover-color : background-color) : disabled-color; + border-radius: border-radius; + + HorizontalBox { + padding-left: padding-horizontal; + padding-right: padding-horizontal; + padding-top: padding-vertical; + padding-bottom: padding-vertical; + alignment: center; + + Text { + text: root.text; + color: text-color; + font-size: 14px; + font-weight: 500; + horizontal-alignment: center; + vertical-alignment: center; + } + } + + touch-area := TouchArea { + enabled: root.enabled; + clicked => { + if (root.enabled) { + root.clicked(); + } + } + } + } +} \ No newline at end of file diff --git a/ui/shared/ui/button/index.slint b/ui/shared/ui/button/index.slint new file mode 100644 index 0000000..161fef5 --- /dev/null +++ b/ui/shared/ui/button/index.slint @@ -0,0 +1,2 @@ +// Button Component Public API +export { Button } from "button.slint"; \ No newline at end of file diff --git a/ui/shared/ui/card/card.slint b/ui/shared/ui/card/card.slint new file mode 100644 index 0000000..0e3055f --- /dev/null +++ b/ui/shared/ui/card/card.slint @@ -0,0 +1,27 @@ +import { VerticalBox } from "std-widgets.slint"; + +// Basic Card Component +export component Card { + in property background-color: white; + in property border-color: #e2e8f0; + in property border-radius: 8px; + in property border-width: 1px; + in property card-padding: 16px; + in property shadow-blur: 4px; + in property shadow-color: #00000010; + + Rectangle { + background: background-color; + border-radius: border-radius; + border-width: border-width; + border-color: border-color; + drop-shadow-blur: shadow-blur; + drop-shadow-color: shadow-color; + drop-shadow-offset-y: 2px; + + VerticalBox { + padding: root.card-padding; + @children + } + } +} \ No newline at end of file diff --git a/ui/shared/ui/card/index.slint b/ui/shared/ui/card/index.slint new file mode 100644 index 0000000..52af053 --- /dev/null +++ b/ui/shared/ui/card/index.slint @@ -0,0 +1,2 @@ +// Card Component Public API +export { Card } from "card.slint"; \ No newline at end of file diff --git a/ui/shared/ui/index.slint b/ui/shared/ui/index.slint new file mode 100644 index 0000000..8a63cbc --- /dev/null +++ b/ui/shared/ui/index.slint @@ -0,0 +1,9 @@ +// UI Kit Public API +// This file exports all shared UI components + +// Export basic components +export { Button } from "button/index.slint"; +export { Card } from "card/index.slint"; +export { Input } from "input/index.slint"; +export { LoadingView } from "loading/index.slint"; +export { Container, Grid } from "layout/index.slint"; \ No newline at end of file diff --git a/ui/shared/ui/input/index.slint b/ui/shared/ui/input/index.slint new file mode 100644 index 0000000..c714d2d --- /dev/null +++ b/ui/shared/ui/input/index.slint @@ -0,0 +1,2 @@ +// Input Component Public API +export { Input } from "input.slint"; \ No newline at end of file diff --git a/ui/shared/ui/input/input.slint b/ui/shared/ui/input/input.slint new file mode 100644 index 0000000..856bc4f --- /dev/null +++ b/ui/shared/ui/input/input.slint @@ -0,0 +1,20 @@ +import { LineEdit } from "std-widgets.slint"; + +// Basic Input Component +export component Input { + in-out property text; + in property placeholder; + in property enabled: true; + + callback edited(string); + + LineEdit { + text: root.text; + placeholder-text: root.placeholder; + enabled: root.enabled; + edited(t) => { + root.text = t; + root.edited(t); + } + } +} \ No newline at end of file diff --git a/ui/shared/ui/layout/index.slint b/ui/shared/ui/layout/index.slint new file mode 100644 index 0000000..c0019de --- /dev/null +++ b/ui/shared/ui/layout/index.slint @@ -0,0 +1,2 @@ +// Layout Components Public API +export { Container, Grid } from "layout.slint"; \ No newline at end of file diff --git a/ui/shared/ui/layout/layout.slint b/ui/shared/ui/layout/layout.slint new file mode 100644 index 0000000..f719f40 --- /dev/null +++ b/ui/shared/ui/layout/layout.slint @@ -0,0 +1,32 @@ +import { VerticalBox, HorizontalBox } from "std-widgets.slint"; + +// Container Component +export component Container { + in property container-max-width: 1200px; + in property container-padding: 16px; + + HorizontalBox { + alignment: center; + + Rectangle { + max-width: root.container-max-width; + + VerticalBox { + padding: root.container-padding; + @children + } + } + } +} + +// Grid Component +export component Grid { + in property gap: 16px; + in property columns: 2; + + // Basic grid implementation - can be enhanced + VerticalBox { + spacing: root.gap; + @children + } +} \ No newline at end of file diff --git a/ui/shared/ui/loading/index.slint b/ui/shared/ui/loading/index.slint new file mode 100644 index 0000000..60c0715 --- /dev/null +++ b/ui/shared/ui/loading/index.slint @@ -0,0 +1,2 @@ +// Loading Component Public API +export { LoadingView } from "loading.slint"; \ No newline at end of file diff --git a/ui/shared/ui/loading/loading.slint b/ui/shared/ui/loading/loading.slint new file mode 100644 index 0000000..b988e60 --- /dev/null +++ b/ui/shared/ui/loading/loading.slint @@ -0,0 +1,54 @@ +import { VerticalBox } from "std-widgets.slint"; + +// Loading component for app initialization +export component LoadingView { + in-out property primary-color: #2563eb; + in-out property background-color: #f8fafc; + in-out property text-color: #1e293b; + in-out property app-version: "0.2.0"; + + Rectangle { + background: background-color; + + VerticalBox { + alignment: center; + spacing: 20px; + + // Loading spinner + Rectangle { + width: 60px; + height: 60px; + border-radius: 30px; + background: primary-color; + + // Pulsing animation effect + animate background { + duration: 1s; + iteration-count: -1; + easing: ease-in-out; + } + } + + Text { + text: "Loading Ziya"; + font-size: 24px; + color: text-color; + font-weight: 600; + } + + Text { + text: "Initializing your trading environment..."; + font-size: 14px; + color: text-color; + opacity: 0.7; + } + + Text { + text: "Version " + app-version; + font-size: 10px; + color: text-color; + opacity: 0.5; + } + } + } +} \ No newline at end of file diff --git a/ui/widgets/navigation/index.slint b/ui/widgets/navigation/index.slint new file mode 100644 index 0000000..b36ad70 --- /dev/null +++ b/ui/widgets/navigation/index.slint @@ -0,0 +1,2 @@ +// Navigation Widget Public API +export { NavigationWidget } from "ui/navigation-widget.slint"; \ No newline at end of file diff --git a/ui/widgets/navigation/ui/navigation-widget.slint b/ui/widgets/navigation/ui/navigation-widget.slint new file mode 100644 index 0000000..1ccc9d8 --- /dev/null +++ b/ui/widgets/navigation/ui/navigation-widget.slint @@ -0,0 +1,291 @@ +import { Theme } from "../../../shared/design-system/tokens/theme.slint"; + +// Navigation Widget (Sidebar) +export component NavigationWidget { + in-out property current-page: "Dashboard"; + in property user-initials: "JD"; + + callback navigation-changed(string); + callback logout-clicked(); + + Rectangle { + width: 100%; + height: 100%; + background: Theme.nav-background; + + VerticalLayout { + padding: 16px; + spacing: 20px; + alignment: space-between; + + // Top section with logo and navigation + VerticalLayout { + spacing: 20px; + + // Logo Section + HorizontalLayout { + spacing: 12px; + alignment: start; + padding-top: 16px; + + Rectangle { + width: 40px; + height: 40px; + border-radius: 20px; + background: Theme.primary; + + Text { + text: "Z"; + color: white; + font-size: 20px; + font-weight: 700; + horizontal-alignment: center; + vertical-alignment: center; + } + } + + VerticalLayout { + spacing: 2px; + + Text { + text: "Ziya"; + color: Theme.text-primary; + font-size: 18px; + font-weight: 700; + } + Text { + text: "Trading Platform"; + color: Theme.text-secondary; + font-size: 12px; + } + } + } + + // Navigation Menu + VerticalLayout { + spacing: 4px; + + // Dashboard + Rectangle { + height: 44px; + border-radius: 8px; + background: current-page == "Dashboard" ? Theme.nav-active : transparent; + + HorizontalLayout { + padding: 12px; + spacing: 12px; + alignment: start; + + Text { + text: "📊"; + font-size: 16px; + vertical-alignment: center; + } + + Text { + text: "Dashboard"; + color: current-page == "Dashboard" ? white : Theme.text-primary; + font-size: 14px; + font-weight: current-page == "Dashboard" ? 600 : 400; + vertical-alignment: center; + } + } + + TouchArea { + clicked => { + root.current-page = "Dashboard"; + root.navigation-changed("Dashboard"); + } + } + } + + // Trading + Rectangle { + height: 44px; + border-radius: 8px; + background: current-page == "Trading" ? Theme.nav-active : transparent; + + HorizontalLayout { + padding: 12px; + spacing: 12px; + alignment: start; + + Text { + text: "💹"; + font-size: 16px; + vertical-alignment: center; + } + + Text { + text: "Trading"; + color: current-page == "Trading" ? white : Theme.text-primary; + font-size: 14px; + font-weight: current-page == "Trading" ? 600 : 400; + vertical-alignment: center; + } + } + + TouchArea { + clicked => { + root.current-page = "Trading"; + root.navigation-changed("Trading"); + } + } + } + + // Portfolio + Rectangle { + height: 44px; + border-radius: 8px; + background: current-page == "Portfolio" ? Theme.nav-active : transparent; + + HorizontalLayout { + padding: 12px; + spacing: 12px; + alignment: start; + + Text { + text: "💼"; + font-size: 16px; + vertical-alignment: center; + } + + Text { + text: "Portfolio"; + color: current-page == "Portfolio" ? white : Theme.text-primary; + font-size: 14px; + font-weight: current-page == "Portfolio" ? 600 : 400; + vertical-alignment: center; + } + } + + TouchArea { + clicked => { + root.current-page = "Portfolio"; + root.navigation-changed("Portfolio"); + } + } + } + + // Markets + Rectangle { + height: 44px; + border-radius: 8px; + background: current-page == "Markets" ? Theme.nav-active : transparent; + + HorizontalLayout { + padding: 12px; + spacing: 12px; + alignment: start; + + Text { + text: "📈"; + font-size: 16px; + vertical-alignment: center; + } + + Text { + text: "Markets"; + color: current-page == "Markets" ? white : Theme.text-primary; + font-size: 14px; + font-weight: current-page == "Markets" ? 600 : 400; + vertical-alignment: center; + } + } + + TouchArea { + clicked => { + root.current-page = "Markets"; + root.navigation-changed("Markets"); + } + } + } + + // Hunting Ground + Rectangle { + height: 44px; + border-radius: 8px; + background: current-page == "HuntingGround" ? Theme.nav-active : transparent; + + HorizontalLayout { + padding: 12px; + spacing: 12px; + alignment: start; + + Text { + text: "🎯"; + font-size: 16px; + vertical-alignment: center; + } + + Text { + text: "Hunting Ground"; + color: current-page == "HuntingGround" ? white : Theme.text-primary; + font-size: 14px; + font-weight: current-page == "HuntingGround" ? 600 : 400; + vertical-alignment: center; + } + } + + TouchArea { + clicked => { + root.current-page = "HuntingGround"; + root.navigation-changed("HuntingGround"); + } + } + } + } + } + + // User Profile Section (bottom) + Rectangle { + height: 60px; + border-radius: 8px; + background: Theme.surface; + + HorizontalLayout { + padding: 12px; + spacing: 12px; + alignment: start; + + Rectangle { + width: 36px; + height: 36px; + border-radius: 18px; + background: Theme.primary; + + Text { + text: user-initials; + color: white; + font-size: 14px; + font-weight: 600; + horizontal-alignment: center; + vertical-alignment: center; + } + } + + VerticalLayout { + spacing: 2px; + + Text { + text: "User"; + color: Theme.text-primary; + font-size: 14px; + font-weight: 600; + } + + Text { + text: "Logout"; + color: Theme.text-secondary; + font-size: 12px; + } + } + } + + TouchArea { + clicked => { root.logout-clicked(); } + } + } + } + } +} \ No newline at end of file diff --git a/ui/widgets/navigation/ui/sidebar.slint b/ui/widgets/navigation/ui/sidebar.slint new file mode 100644 index 0000000..83cf43f --- /dev/null +++ b/ui/widgets/navigation/ui/sidebar.slint @@ -0,0 +1,178 @@ +import { VerticalBox, HorizontalBox, ScrollView } from "std-widgets.slint"; + +// Navigation menu item data structure +export struct MenuItem { + name: string, + icon: string, + active: bool, +} + +// Professional sidebar navigation with direct styling +export component Sidebar { + in property <[MenuItem]> menu-items: [ + { name: "Dashboard", icon: "📊", active: true }, + { name: "Profile", icon: "👤", active: false }, + { name: "Trading", icon: "💹", active: false }, + { name: "Portfolio", icon: "💼", active: false }, + { name: "Markets", icon: "📈", active: false }, + { name: "Hunting Ground", icon: "🎯", active: false }, + { name: "Analytics", icon: "📊", active: false }, + ]; + + callback menu-item-clicked(string); + + width: 256px; + + Rectangle { + background: #f2f2f2; + border-width: 0px; + border-color: #e5e6e6; + + ScrollView { + viewport-height: root.height; + + VerticalBox { + padding: 16px; + spacing: 8px; + + // Sidebar Header + Rectangle { + height: 60px; + + VerticalBox { + alignment: center; + spacing: 8px; + + // Logo area + Rectangle { + height: 32px; + + HorizontalBox { + alignment: center; + spacing: 8px; + + // App icon + Rectangle { + width: 24px; + height: 24px; + background: #570df8; + border-radius: 8px; + } + + Text { + text: "Ziya"; + color: #1f2937; + font-size: 18px; + font-weight: 700; + } + } + } + + // Divider + Rectangle { + height: 1px; + background: #e5e6e6; + } + } + } + + // Menu Items + for item[index] in menu-items: Rectangle { + height: 44px; + border-radius: 8px; + + // Active/hover state styling + background: item.active ? #570df8 : transparent; + + states [ + active when item.active: { + background: #570df8; + } + hover when menu-area.has-hover && !item.active: { + background: #e5e6e6; + } + ] + + animate background { duration: 150ms; } + + HorizontalBox { + padding-left: 16px; + padding-right: 16px; + alignment: start; + spacing: 12px; + + // Icon + Text { + text: item.icon; + font-size: 16px; + vertical-alignment: center; + width: 20px; + } + + // Menu item text + Text { + text: item.name; + color: item.active ? #ffffff : #1f2937; + font-size: 14px; + font-weight: item.active ? 600 : 500; + vertical-alignment: center; + } + + // Active indicator + if item.active: Rectangle { + width: 4px; + height: 20px; + background: #ffffff; + border-radius: 2px; + } + } + + menu-area := TouchArea { + clicked => { menu-item-clicked(item.name); } + } + } + + // Spacer to push footer to bottom + Rectangle { + height: 1px; + } + + // Sidebar Footer + Rectangle { + height: 60px; + + VerticalBox { + alignment: center; + spacing: 8px; + + // Divider + Rectangle { + height: 1px; + background: #e5e6e6; + } + + // Status section + HorizontalBox { + alignment: center; + spacing: 8px; + + // Status indicator + Rectangle { + width: 8px; + height: 8px; + background: #36d399; + border-radius: 4px; + } + + Text { + text: "Connected"; + color: #6b7280; + font-size: 12px; + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/ui/widgets/trading-stats/index.slint b/ui/widgets/trading-stats/index.slint new file mode 100644 index 0000000..02b0c55 --- /dev/null +++ b/ui/widgets/trading-stats/index.slint @@ -0,0 +1,2 @@ +// Trading Stats Widget Public API +export { StatsCard } from "ui/stats-card.slint"; \ No newline at end of file diff --git a/ui/widgets/trading-stats/ui/stats-card.slint b/ui/widgets/trading-stats/ui/stats-card.slint new file mode 100644 index 0000000..d035222 --- /dev/null +++ b/ui/widgets/trading-stats/ui/stats-card.slint @@ -0,0 +1,55 @@ +import { VerticalBox } from "std-widgets.slint"; + +// Professional stats card component with direct styling +export component StatsCard { + in property title: "Stat Title"; + in property value: "$0.00"; + in property change: "0%"; + in property positive: true; + in property accent-color: #570df8; + + min-width: 200px; + height: 120px; + + Rectangle { + background: #ffffff; + border-radius: 12px; + border-width: 1px; + border-color: #e5e6e6; + drop-shadow-blur: 8px; + drop-shadow-color: #00000008; + + VerticalBox { + padding: 20px; + spacing: 8px; + alignment: start; + + // Title + Text { + text: title; + color: #64748b; + font-size: 14px; + font-weight: 500; + horizontal-alignment: left; + } + + // Main value + Text { + text: value; + color: accent-color; + font-size: 32px; + font-weight: 700; + horizontal-alignment: left; + } + + // Change indicator + Text { + text: change; + color: positive ? #36d399 : #f87272; + font-size: 13px; + font-weight: 500; + horizontal-alignment: left; + } + } + } +} \ No newline at end of file diff --git a/ui/widgets/user-profile/index.slint b/ui/widgets/user-profile/index.slint new file mode 100644 index 0000000..bda5332 --- /dev/null +++ b/ui/widgets/user-profile/index.slint @@ -0,0 +1,2 @@ +// User Profile Widget Public API +export { ProfileView } from "ui/profile.slint"; \ No newline at end of file diff --git a/ui/widgets/user-profile/ui/profile.slint b/ui/widgets/user-profile/ui/profile.slint new file mode 100644 index 0000000..e38ddf5 --- /dev/null +++ b/ui/widgets/user-profile/ui/profile.slint @@ -0,0 +1,251 @@ +import { Button, VerticalBox, HorizontalBox } from "std-widgets.slint"; + +// User profile structure +export struct UserProfile { + name: string, + email: string, + wallet-address: string, +} + +// Profile component +export component ProfileView { + in-out property primary-color: #2563eb; + in-out property background-color: #f8fafc; + in-out property card-background: #ffffff; + in-out property text-color: #1e293b; + in-out property border-color: #e2e8f0; + in-out property user-profile; + + // Callbacks + callback edit-profile(); + callback view-wallet(); + callback export-data(); + + Rectangle { + background: background-color; + + VerticalBox { + spacing: 30px; + padding: 30px; + + // Header + Text { + text: "Profile"; + font-size: 28px; + color: text-color; + font-weight: 700; + } + + // Profile card + Rectangle { + background: card-background; + border-radius: 16px; + border-width: 1px; + border-color: border-color; + drop-shadow-blur: 10px; + drop-shadow-color: #00000010; + + VerticalBox { + spacing: 25px; + padding: 30px; + + // Avatar section + HorizontalBox { + alignment: start; + spacing: 20px; + + Rectangle { + width: 80px; + height: 80px; + border-radius: 40px; + background: primary-color.with-alpha(0.1); + + Text { + text: user-profile.name != "" ? user-profile.name.to-uppercase() : "U"; + color: primary-color; + font-size: 32px; + font-weight: 700; + } + } + + VerticalBox { + alignment: start; + spacing: 8px; + + Text { + text: user-profile.name != "" ? user-profile.name : "Demo User"; + font-size: 24px; + color: text-color; + font-weight: 600; + } + + Text { + text: user-profile.email != "" ? user-profile.email : "demo@ziya.app"; + font-size: 14px; + color: text-color; + opacity: 0.7; + } + } + } + + // Wallet section + VerticalBox { + spacing: 15px; + + Text { + text: "Wallet Information"; + font-size: 18px; + color: text-color; + font-weight: 600; + } + + Rectangle { + background: #f1f5f9; + border-radius: 8px; + + VerticalBox { + spacing: 10px; + padding: 15px; + + Text { + text: "Wallet Address"; + font-size: 12px; + color: text-color; + opacity: 0.7; + font-weight: 500; + } + + Text { + text: user-profile.wallet-address != "" ? + user-profile.wallet-address : + "Demo123...Wallet456"; + font-size: 14px; + color: text-color; + font-family: "monospace"; + } + } + } + } + + // Actions section + VerticalBox { + spacing: 15px; + + Text { + text: "Profile Actions"; + font-size: 18px; + color: text-color; + font-weight: 600; + } + + VerticalBox { + spacing: 10px; + + Button { + text: "✏️ Edit Profile"; + height: 45px; + clicked => { edit-profile(); } + } + + Button { + text: "👛 View Wallet Details"; + height: 45px; + clicked => { view-wallet(); } + } + + Button { + text: "📥 Export Data"; + height: 45px; + clicked => { export-data(); } + } + } + } + } + } + + // Stats card + Rectangle { + background: card-background; + border-radius: 16px; + border-width: 1px; + border-color: border-color; + drop-shadow-blur: 10px; + drop-shadow-color: #00000010; + + VerticalBox { + spacing: 20px; + padding: 25px; + + Text { + text: "Trading Stats"; + font-size: 18px; + color: text-color; + font-weight: 600; + } + + HorizontalBox { + alignment: stretch; + spacing: 20px; + + VerticalBox { + alignment: center; + spacing: 5px; + + Text { + text: "24"; + font-size: 24px; + color: primary-color; + font-weight: 700; + } + + Text { + text: "Trades"; + font-size: 12px; + color: text-color; + opacity: 0.7; + } + } + + VerticalBox { + alignment: center; + spacing: 5px; + + Text { + text: "$1,234"; + font-size: 24px; + color: #10b981; + font-weight: 700; + } + + Text { + text: "Profit"; + font-size: 12px; + color: text-color; + opacity: 0.7; + } + } + + VerticalBox { + alignment: center; + spacing: 5px; + + Text { + text: "67%"; + font-size: 24px; + color: #10b981; + font-weight: 700; + } + + Text { + text: "Win Rate"; + font-size: 12px; + color: text-color; + opacity: 0.7; + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/ui/widgets/window-controls/index.slint b/ui/widgets/window-controls/index.slint new file mode 100644 index 0000000..07ac388 --- /dev/null +++ b/ui/widgets/window-controls/index.slint @@ -0,0 +1,2 @@ +// Window Controls Widget Public API +export { WindowControlsWidget } from "ui/window-controls-widget.slint"; \ No newline at end of file diff --git a/ui/widgets/window-controls/ui/title-bar.slint b/ui/widgets/window-controls/ui/title-bar.slint new file mode 100644 index 0000000..b4e0757 --- /dev/null +++ b/ui/widgets/window-controls/ui/title-bar.slint @@ -0,0 +1,190 @@ +import { Button, HorizontalBox } from "std-widgets.slint"; +import { Theme } from "../../../shared/design-system/tokens/theme.slint"; + +// Professional title bar component with theme support +export component TitleBar { + // Window state + in-out property is-maximized: false; + + // Callbacks for window controls + callback minimize-window(); + callback maximize-window(); + callback close-window(); + callback toggle-theme(); + callback start-drag-window(); + + height: 32px; + + Rectangle { + background: Theme.surface; + border-width: 0px; + border-color: Theme.border; + + // Drag area for the title bar + drag-area := TouchArea { + width: 100%; + height: 100%; + + moved => { + if (self.pressed) { + start-drag-window(); + } + } + } + + HorizontalBox { + padding: 16px; + alignment: stretch; + + // Left side - App branding + HorizontalBox { + alignment: start; + spacing: 8px; + + // App icon + Rectangle { + width: 20px; + height: 20px; + + // Ziya logo (layered rectangles) + Rectangle { + width: 16px; + height: 16px; + background: #570df8; + border-radius: 3px; + + Rectangle { + x: 2px; + y: 2px; + width: 12px; + height: 12px; + background: #4506cb; + border-radius: 2px; + } + } + } + + // App name + Text { + text: "Ziya"; + color: Theme.text-primary; + font-size: 14px; + font-weight: 600; + vertical-alignment: center; + } + } + + // Right side - Controls + HorizontalBox { + alignment: end; + spacing: 4px; + + // Theme switcher + Rectangle { + width: 32px; + height: 32px; + border-radius: 4px; + + states [ + hover when theme-area.has-hover: { + background: Theme.nav-hover; + } + ] + + // Theme icon - shows current theme state + Text { + text: Theme.is-dark-mode ? "🌙" : "☀️"; + font-size: 14px; + horizontal-alignment: center; + vertical-alignment: center; + } + + theme-area := TouchArea { + clicked => { + Theme.toggle-theme(); + toggle-theme(); + } + } + } + + // Minimize button + Rectangle { + width: 32px; + height: 32px; + border-radius: 4px; + + states [ + hover when min-area.has-hover: { + background: Theme.nav-hover; + } + ] + + // Minimize icon + Text { + text: "−"; + color: Theme.text-secondary; + font-size: 14px; + horizontal-alignment: center; + vertical-alignment: center; + } + + min-area := TouchArea { + clicked => { minimize-window(); } + } + } + + // Maximize/Restore button + Rectangle { + width: 32px; + height: 32px; + border-radius: 4px; + + states [ + hover when max-area.has-hover: { + background: Theme.nav-hover; + } + ] + + // Maximize icon + Text { + text: is-maximized ? "❐" : "□"; + color: Theme.text-secondary; + font-size: 12px; + horizontal-alignment: center; + vertical-alignment: center; + } + + max-area := TouchArea { + clicked => { maximize-window(); } + } + } + + // Close button + Rectangle { + width: 32px; + height: 32px; + border-radius: 4px; + + states [ + hover when close-area.has-hover: { + background: #ef4444; + } + ] + + // Close icon + Text { + text: "✕"; + color: close-area.has-hover ? #ffffff : Theme.text-secondary; + font-size: 10px; + horizontal-alignment: center; + vertical-alignment: center; + } + + close-area := TouchArea { + clicked => { close-window(); } + } + } + } + } + } +} \ No newline at end of file diff --git a/ui/widgets/window-controls/ui/window-controls-widget.slint b/ui/widgets/window-controls/ui/window-controls-widget.slint new file mode 100644 index 0000000..7b53fa0 --- /dev/null +++ b/ui/widgets/window-controls/ui/window-controls-widget.slint @@ -0,0 +1,18 @@ +import { TitleBar } from "title-bar.slint"; + +// Window Controls Widget +export component WindowControlsWidget { + callback theme-toggle-clicked(); + callback minimize-clicked(); + callback maximize-clicked(); + callback close-clicked(); + callback start-drag-window(); + + TitleBar { + toggle-theme => { root.theme-toggle-clicked(); } + minimize-window => { root.minimize-clicked(); } + maximize-window => { root.maximize-clicked(); } + close-window => { root.close-clicked(); } + start-drag-window => { root.start-drag-window(); } + } +} \ No newline at end of file