From 762637c01b1db32eea72bde80b4e25fdddd4dfe8 Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Thu, 23 May 2024 12:36:16 -0500 Subject: [PATCH 01/35] bump dioxus; fix 404 route --- .github/workflows/gh-pages.yml | 5 +- .gitignore | 1 + Cargo.lock | 758 +++++++++++++++--------- Cargo.toml | 16 +- Dioxus.toml | 2 +- src/components/tutorials.rs | 10 +- src/doc_examples/hackernews_async.rs | 16 +- src/doc_examples/hackernews_complete.rs | 14 +- src/doc_examples/hackernews_post.rs | 12 +- src/doc_examples/hackernews_state.rs | 16 +- src/doc_examples/rendering_lists.rs | 16 +- src/main.rs | 52 +- state.md | 292 +++++++++ 13 files changed, 830 insertions(+), 380 deletions(-) create mode 100644 state.md diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml index 5f6fc7a56..16f71fda8 100644 --- a/.github/workflows/gh-pages.yml +++ b/.github/workflows/gh-pages.yml @@ -30,10 +30,9 @@ jobs: run: dx build --release --features web - name: Build Static HTML run: cargo run --release --features prebuild - - name: Create 404.html - run: cp docs/index.html docs/404.html - name: Rebuild with search index - run: dx build --release --features web && cp docs/404.html docs/index.html + # rebuild web with the new search index and copy over the wasm file into the docs folder + run: dx build --release --features web && mv dist/assets/dioxus docs/assets/dioxus - name: Deploy 🚀 uses: JamesIves/github-pages-deploy-action@v4.2.3 with: diff --git a/.gitignore b/.gitignore index 1ae28dbdb..1ccfab805 100644 --- a/.gitignore +++ b/.gitignore @@ -13,4 +13,5 @@ /pkg /static /docs +/dist /dioxus_search \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index b459614a9..d99c1c045 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -23,7 +23,7 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" dependencies = [ - "getrandom 0.2.14", + "getrandom 0.2.15", "once_cell", "version_check", ] @@ -35,7 +35,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", - "getrandom 0.2.14", + "getrandom 0.2.15", "once_cell", "version_check", "zerocopy", @@ -73,9 +73,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.82" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" [[package]] name = "anymap" @@ -132,35 +132,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "258b52a1aa741b9f09783b2d86cf0aeeb617bbf847f6933340a39644227acbdb" dependencies = [ "event-listener 5.3.0", - "event-listener-strategy 0.5.1", + "event-listener-strategy 0.5.2", "futures-core", "pin-project-lite", ] [[package]] name = "async-channel" -version = "2.2.1" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "136d4d23bcc79e27423727b36823d86233aad06dfea531837b038394d11e9928" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" dependencies = [ "concurrent-queue", - "event-listener 5.3.0", - "event-listener-strategy 0.5.1", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-compression" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07dbbf24db18d609b1462965249abdf49129ccad073ec257da372adc83259c60" -dependencies = [ - "flate2", + "event-listener-strategy 0.5.2", "futures-core", - "memchr", "pin-project-lite", - "tokio", ] [[package]] @@ -178,9 +164,9 @@ dependencies = [ [[package]] name = "async-fs" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc19683171f287921f2405677dd2ed2549c3b3bda697a563ebc3a121ace2aba1" +checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" dependencies = [ "async-lock", "blocking", @@ -250,13 +236,13 @@ dependencies = [ [[package]] name = "async-recursion" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30c5ef0ede93efbf733c1a727f3b6b5a1060bbedd5600183e66f6e4be4af0ec5" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] @@ -279,9 +265,9 @@ dependencies = [ [[package]] name = "async-task" -version = "4.7.0" +version = "4.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" @@ -291,7 +277,7 @@ checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] @@ -334,9 +320,9 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "autoexport" @@ -357,7 +343,7 @@ checksum = "edf3ee19dbc0a46d740f6f0926bde8c50f02bdbc7b536842da28f6ac56513a8b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] @@ -429,7 +415,7 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] @@ -510,23 +496,31 @@ version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ - "generic-array", + "generic-array 0.14.7", ] [[package]] name = "blocking" -version = "1.5.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" +checksum = "495f7104e962b7356f0aeb34247aca1fe7d2e783b346582db7f2904cb5717e88" dependencies = [ "async-channel", "async-lock", "async-task", - "fastrand", "futures-io", "futures-lite", "piper", - "tracing", +] + +[[package]] +name = "bstr" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706" +dependencies = [ + "memchr", + "serde", ] [[package]] @@ -599,9 +593,9 @@ dependencies = [ [[package]] name = "camino" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" +checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" dependencies = [ "serde", ] @@ -637,9 +631,9 @@ checksum = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53" [[package]] name = "cc" -version = "1.0.95" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32a725bc159af97c3e629873bb9f88fb8cf8a4867175f76dc987815ea07c83b" +checksum = "41c270e7540d725e65ac7f1b212ac8ce349719624d7bcff99f8e2e488e8cf03f" [[package]] name = "cesu8" @@ -780,9 +774,9 @@ dependencies = [ [[package]] name = "concurrent-queue" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" dependencies = [ "crossbeam-utils", ] @@ -921,9 +915,9 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.4.0" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ "cfg-if", ] @@ -936,9 +930,9 @@ checksum = "7059fff8937831a9ae6f0fe4d658ffabf58f2ca96aa9dec1c889f936f705f216" [[package]] name = "crossbeam-channel" -version = "0.5.12" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95" +checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" dependencies = [ "crossbeam-utils", ] @@ -964,9 +958,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "crossterm" @@ -1021,7 +1015,7 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ - "generic-array", + "generic-array 0.14.7", "typenum", ] @@ -1084,14 +1078,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] name = "darling" -version = "0.20.8" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391" +checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1" dependencies = [ "darling_core", "darling_macro", @@ -1099,26 +1093,26 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.8" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c2cf1c23a687a1feeb728783b993c4e1ad83d99f351801977dd809b48d0a70f" +checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] name = "darling_macro" -version = "0.20.8" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" +checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" dependencies = [ "darling_core", "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] @@ -1128,7 +1122,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ "cfg-if", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "lock_api", "once_cell", "parking_lot_core", @@ -1136,9 +1130,9 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" +checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" [[package]] name = "data-url" @@ -1158,17 +1152,6 @@ dependencies = [ "powerfmt", ] -[[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-syn-parse" version = "0.1.5" @@ -1226,7 +1209,7 @@ dependencies = [ [[package]] name = "dioxus" version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#2ce6d67fcdca292c289993c3d680c75e36146474" +source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" dependencies = [ "dioxus-config-macro 0.5.2", "dioxus-core 0.5.2", @@ -1239,6 +1222,7 @@ dependencies = [ "dioxus-router", "dioxus-signals 0.5.2", "dioxus-ssr", + "dioxus-static-site-generation", "dioxus-web", "serde", ] @@ -1246,7 +1230,7 @@ dependencies = [ [[package]] name = "dioxus-cli-config" version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#2ce6d67fcdca292c289993c3d680c75e36146474" +source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" dependencies = [ "once_cell", "serde", @@ -1266,7 +1250,7 @@ dependencies = [ [[package]] name = "dioxus-config-macro" version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#2ce6d67fcdca292c289993c3d680c75e36146474" +source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" dependencies = [ "proc-macro2", "quote", @@ -1289,7 +1273,7 @@ dependencies = [ [[package]] name = "dioxus-core" version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#2ce6d67fcdca292c289993c3d680c75e36146474" +source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" dependencies = [ "futures-channel", "futures-util", @@ -1313,13 +1297,13 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] name = "dioxus-core-macro" version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#2ce6d67fcdca292c289993c3d680c75e36146474" +source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" dependencies = [ "constcat", "convert_case 0.6.0", @@ -1327,7 +1311,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] @@ -1339,7 +1323,7 @@ checksum = "2ea539174bb236e0e7dc9c12b19b88eae3cb574dedbd0252a2d43ea7e6de13e2" [[package]] name = "dioxus-desktop" version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#2ce6d67fcdca292c289993c3d680c75e36146474" +source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" dependencies = [ "async-trait", "cocoa", @@ -1377,10 +1361,9 @@ dependencies = [ [[package]] name = "dioxus-fullstack" version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#2ce6d67fcdca292c289993c3d680c75e36146474" +source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" dependencies = [ "anymap 0.12.1", - "async-compression", "async-trait", "axum", "base64", @@ -1430,7 +1413,7 @@ dependencies = [ [[package]] name = "dioxus-hooks" version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#2ce6d67fcdca292c289993c3d680c75e36146474" +source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" dependencies = [ "dioxus-core 0.5.2", "dioxus-debug-cell", @@ -1459,14 +1442,24 @@ dependencies = [ [[package]] name = "dioxus-hot-reload" version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#2ce6d67fcdca292c289993c3d680c75e36146474" +source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" dependencies = [ + "axum", + "chrono", "dioxus-core 0.5.2", "dioxus-html 0.5.2", "dioxus-rsx 0.5.2", + "execute", + "futures-util", + "ignore", "interprocess-docfix", + "notify", + "once_cell", "serde", "serde_json", + "tokio", + "tokio-stream", + "tracing", ] [[package]] @@ -1492,11 +1485,12 @@ dependencies = [ [[package]] name = "dioxus-html" version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#2ce6d67fcdca292c289993c3d680c75e36146474" +source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" dependencies = [ "async-trait", "dioxus-core 0.5.2", "dioxus-html-internal-macro 0.5.2", + "dioxus-rsx 0.5.2", "enumset", "euclid", "futures-channel", @@ -1520,24 +1514,24 @@ dependencies = [ "convert_case 0.6.0", "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] name = "dioxus-html-internal-macro" version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#2ce6d67fcdca292c289993c3d680c75e36146474" +source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" dependencies = [ "convert_case 0.6.0", "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] name = "dioxus-interpreter-js" version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#2ce6d67fcdca292c289993c3d680c75e36146474" +source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" dependencies = [ "dioxus-core 0.5.2", "dioxus-html 0.5.2", @@ -1546,13 +1540,14 @@ dependencies = [ "sledgehammer_bindgen", "sledgehammer_utils", "wasm-bindgen", + "wasm-bindgen-futures", "web-sys", ] [[package]] name = "dioxus-lib" version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#2ce6d67fcdca292c289993c3d680c75e36146474" +source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" dependencies = [ "dioxus-core 0.5.2", "dioxus-core-macro 0.5.2", @@ -1565,7 +1560,7 @@ dependencies = [ [[package]] name = "dioxus-liveview" version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#2ce6d67fcdca292c289993c3d680c75e36146474" +source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" dependencies = [ "axum", "dioxus-cli-config", @@ -1618,13 +1613,13 @@ version = "0.5.0-alpha.2" source = "git+https://github.com/dioxuslabs/blitz#e118648346f764f39261868ad13efcc2aeb2fb21" dependencies = [ "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] name = "dioxus-router" version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#2ce6d67fcdca292c289993c3d680c75e36146474" +source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" dependencies = [ "dioxus-cli-config", "dioxus-fullstack", @@ -1633,6 +1628,7 @@ dependencies = [ "dioxus-ssr", "gloo", "gloo-utils 0.1.7", + "http 1.1.0", "js-sys", "tokio", "tracing", @@ -1645,12 +1641,12 @@ dependencies = [ [[package]] name = "dioxus-router-macro" version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#2ce6d67fcdca292c289993c3d680c75e36146474" +source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" dependencies = [ "proc-macro2", "quote", "slab", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] @@ -1660,34 +1656,34 @@ source = "git+https://github.com/DioxusLabs/dioxus?rev=53343bf#53343bfd194300c33 dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", "tracing", ] [[package]] name = "dioxus-rsx" version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#2ce6d67fcdca292c289993c3d680c75e36146474" +source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" dependencies = [ "dioxus-core 0.5.2", "internment", "krates", "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", "tracing", ] [[package]] name = "dioxus-search" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/dioxus-search#a43e4c71b0bb8fbbe8a95b7fdd76c0d0b5b7f964" +source = "git+https://github.com/dioxuslabs/dioxus-search#589d2a944bf6bdca4ab092af716f4bd4ecc499e6" dependencies = [ "bytes", "dioxus-router", "dioxus-search-macro", "dioxus-search-shared", - "getrandom 0.2.14", + "getrandom 0.2.15", "once_cell", "serde", "serde_json", @@ -1700,20 +1696,20 @@ dependencies = [ [[package]] name = "dioxus-search-macro" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/dioxus-search#a43e4c71b0bb8fbbe8a95b7fdd76c0d0b5b7f964" +source = "git+https://github.com/dioxuslabs/dioxus-search#589d2a944bf6bdca4ab092af716f4bd4ecc499e6" dependencies = [ "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] name = "dioxus-search-shared" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/dioxus-search#a43e4c71b0bb8fbbe8a95b7fdd76c0d0b5b7f964" +source = "git+https://github.com/dioxuslabs/dioxus-search#589d2a944bf6bdca4ab092af716f4bd4ecc499e6" dependencies = [ "bytes", "dioxus-router", - "getrandom 0.2.14", + "getrandom 0.2.15", "log", "scraper", "serde", @@ -1743,7 +1739,7 @@ dependencies = [ [[package]] name = "dioxus-signals" version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#2ce6d67fcdca292c289993c3d680c75e36146474" +source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" dependencies = [ "dioxus-core 0.5.2", "futures-channel", @@ -1758,11 +1754,12 @@ dependencies = [ [[package]] name = "dioxus-ssr" version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#2ce6d67fcdca292c289993c3d680c75e36146474" +source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" dependencies = [ "askama_escape", "async-trait", "chrono", + "dioxus-cli-config", "dioxus-core 0.5.2", "dioxus-html 0.5.2", "generational-box 0.5.2", @@ -1775,6 +1772,26 @@ dependencies = [ "tracing", ] +[[package]] +name = "dioxus-static-site-generation" +version = "0.5.2" +source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" +dependencies = [ + "axum", + "dioxus-cli-config", + "dioxus-fullstack", + "dioxus-hot-reload 0.5.2", + "dioxus-lib", + "dioxus-router", + "dioxus-ssr", + "dioxus-web", + "http 1.1.0", + "tokio", + "tower", + "tower-http", + "tracing", +] + [[package]] name = "dioxus-std" version = "0.5.0" @@ -1809,7 +1826,7 @@ dependencies = [ [[package]] name = "dioxus-web" version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#2ce6d67fcdca292c289993c3d680c75e36146474" +source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" dependencies = [ "async-trait", "console_error_panic_hook", @@ -1889,13 +1906,13 @@ dependencies = [ [[package]] name = "dioxus_server_macro" version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#2ce6d67fcdca292c289993c3d680c75e36146474" +source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" dependencies = [ "convert_case 0.6.0", "proc-macro2", "quote", "server_fn_macro", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] @@ -1912,7 +1929,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] @@ -1935,7 +1952,7 @@ checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] @@ -1967,9 +1984,9 @@ checksum = "3a68a4904193147e0a8dec3314640e6db742afd5f6e634f428a6af230d9b3591" [[package]] name = "either" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2" +checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" [[package]] name = "embedded-io" @@ -2016,7 +2033,7 @@ checksum = "5c785274071b1b420972453b306eeca06acf4633829db4223b58a2a8c5953bc4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] @@ -2037,7 +2054,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] @@ -2048,9 +2065,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", "windows-sys 0.52.0", @@ -2058,9 +2075,9 @@ dependencies = [ [[package]] name = "euclid" -version = "0.22.9" +version = "0.22.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f253bc5c813ca05792837a0ff4b3a580336b224512d48f7eda1d7dd9210787" +checksum = "e0f0eb73b934648cd7a4a61f1b15391cd95dab0b4da6e2e66c2a072c144b4a20" dependencies = [ "num-traits", "serde", @@ -2100,19 +2117,56 @@ dependencies = [ [[package]] name = "event-listener-strategy" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "332f51cb23d20b0de8458b86580878211da09bcd4503cb579c225b3d124cabb3" +checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" dependencies = [ "event-listener 5.3.0", "pin-project-lite", ] +[[package]] +name = "execute" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a82608ee96ce76aeab659e9b8d3c2b787bffd223199af88c674923d861ada10" +dependencies = [ + "execute-command-macro", + "execute-command-tokens", + "generic-array 1.0.0", +] + +[[package]] +name = "execute-command-macro" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90dec53d547564e911dc4ff3ecb726a64cf41a6fa01a2370ebc0d95175dd08bd" +dependencies = [ + "execute-command-macro-impl", +] + +[[package]] +name = "execute-command-macro-impl" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce8cd46a041ad005ab9c71263f9a0ff5b529eac0fe4cc9b4a20f4f0765d8cf4b" +dependencies = [ + "execute-command-tokens", + "quote", + "syn 2.0.65", +] + +[[package]] +name = "execute-command-tokens" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69dc321eb6be977f44674620ca3aa21703cb20ffbe560e1ae97da08401ffbcad" + [[package]] name = "fastrand" -version = "2.0.2" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "fdeflate" @@ -2133,6 +2187,18 @@ dependencies = [ "rustc_version", ] +[[package]] +name = "filetime" +version = "0.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.4.1", + "windows-sys 0.52.0", +] + [[package]] name = "fixedbitset" version = "0.4.2" @@ -2141,9 +2207,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.28" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" dependencies = [ "crc32fast", "miniz_oxide", @@ -2193,7 +2259,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] @@ -2232,6 +2298,15 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" +[[package]] +name = "fsevent-sys" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2" +dependencies = [ + "libc", +] + [[package]] name = "funty" version = "2.0.0" @@ -2317,7 +2392,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] @@ -2469,7 +2544,7 @@ dependencies = [ [[package]] name = "generational-box" version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#2ce6d67fcdca292c289993c3d680c75e36146474" +source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" dependencies = [ "parking_lot", ] @@ -2484,6 +2559,15 @@ dependencies = [ "version_check", ] +[[package]] +name = "generic-array" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe739944a5406424e080edccb6add95685130b9f160d5407c639c7df0c5836b0" +dependencies = [ + "typenum", +] + [[package]] name = "getopts" version = "0.2.21" @@ -2506,9 +2590,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "js-sys", @@ -2589,7 +2673,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] @@ -2604,18 +2688,34 @@ dependencies = [ [[package]] name = "global-hotkey" -version = "0.5.1" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0d37e95d3937251ee2019709389bb793c1237f16d45fc0fe7b2464b5f97c68" +checksum = "daf13ae557ac61fa8f6fa949c33616e9680f0f04a9dd0195cd210770ba643f1a" dependencies = [ + "bitflags 2.5.0", + "cocoa", "crossbeam-channel", "keyboard-types", + "objc", "once_cell", "thiserror", "windows-sys 0.52.0", "x11-dl", ] +[[package]] +name = "globset" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1" +dependencies = [ + "aho-corasick", + "bstr", + "log", + "regex-automata", + "regex-syntax", +] + [[package]] name = "gloo" version = "0.8.1" @@ -2884,7 +2984,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] @@ -2936,9 +3036,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ "ahash 0.8.11", "allocator-api2", @@ -3077,9 +3177,9 @@ dependencies = [ [[package]] name = "http-range-header" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ce4ef31cda248bbdb6e6820603b82dfcd9e833db65a43e997a0ccec777d11fe" +checksum = "08a397c49fec283e3d6211adbe480be95aae5f304cfb923e9970e08956d5168a" [[package]] name = "httparse" @@ -3204,6 +3304,22 @@ dependencies = [ "unicode-normalization", ] +[[package]] +name = "ignore" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b46810df39e66e925525d6e38ce1e7f6e1d208f72dc39757880fcb66e2c58af1" +dependencies = [ + "crossbeam-deque", + "globset", + "log", + "memchr", + "regex-automata", + "same-file", + "walkdir", + "winapi-util", +] + [[package]] name = "include_dir" version = "0.7.3" @@ -3240,7 +3356,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", - "hashbrown 0.14.3", + "hashbrown 0.14.5", ] [[package]] @@ -3270,11 +3386,31 @@ dependencies = [ "cfb", ] +[[package]] +name = "inotify" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff" +dependencies = [ + "bitflags 1.3.2", + "inotify-sys", + "libc", +] + +[[package]] +name = "inotify-sys" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" +dependencies = [ + "libc", +] + [[package]] name = "instant" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ "cfg-if", ] @@ -3285,7 +3421,7 @@ version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04e8e537b529b8674e97e9fb82c10ff168a290ac3867a0295f112061ffbca1ef" dependencies = [ - "hashbrown 0.14.3", + "hashbrown 0.14.5", "parking_lot", ] @@ -3422,6 +3558,26 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "kqueue" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7447f1ca1b7b563588a205fe93dea8df60fd981423a768bc1c0ded35ed147d0c" +dependencies = [ + "kqueue-sys", + "libc", +] + +[[package]] +name = "kqueue-sys" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b" +dependencies = [ + "bitflags 1.3.2", + "libc", +] + [[package]] name = "krates" version = "0.16.10" @@ -3468,9 +3624,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.153" +version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] name = "libxdo" @@ -3493,9 +3649,9 @@ dependencies = [ [[package]] name = "lightningcss" -version = "1.0.0-alpha.55" +version = "1.0.0-alpha.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bd5bed3814fb631bfc1e24c2be6f7e86a9837c660909acab79a38374dcb8798" +checksum = "668e9f1774a4dda9e2233ad0f78c6987878bcf4201d2085bc3517a7f84d0ee92" dependencies = [ "ahash 0.8.11", "bitflags 2.5.0", @@ -3504,7 +3660,8 @@ dependencies = [ "cssparser-color", "dashmap", "data-encoding", - "getrandom 0.2.14", + "getrandom 0.2.15", + "indexmap 2.2.6", "itertools 0.10.5", "lazy_static", "parcel_selectors", @@ -3530,15 +3687,15 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "linux-raw-sys" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "lock_api" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -3562,7 +3719,7 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc" dependencies = [ - "hashbrown 0.14.3", + "hashbrown 0.14.5", ] [[package]] @@ -3635,7 +3792,7 @@ dependencies = [ "manganis-common", "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", "tracing-subscriber", ] @@ -3688,7 +3845,7 @@ checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" [[package]] name = "mdbook-macro" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/include_mdbook#ab2e65fb1bbfb3e28d1573bcd2ec494ac1dd4269" +source = "git+https://github.com/dioxuslabs/include_mdbook#8ebd1e08c95b5a188c277980bbd876dd3ea59719" dependencies = [ "anyhow", "convert_case 0.6.0", @@ -3702,18 +3859,18 @@ dependencies = [ "quote", "serde", "serde_json", - "syn 2.0.60", + "syn 2.0.65", "syntect", ] [[package]] name = "mdbook-shared" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/include_mdbook#ab2e65fb1bbfb3e28d1573bcd2ec494ac1dd4269" +source = "git+https://github.com/dioxuslabs/include_mdbook#8ebd1e08c95b5a188c277980bbd876dd3ea59719" dependencies = [ "anyhow", "bytes", - "getrandom 0.2.14", + "getrandom 0.2.15", "log", "memchr", "pulldown-cmark", @@ -3756,9 +3913,9 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" dependencies = [ "adler", "simd-adler32", @@ -3796,16 +3953,15 @@ dependencies = [ [[package]] name = "multer" -version = "3.0.0" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a15d522be0a9c3e46fd2632e272d178f56387bdb5c9fbb3a36c649062e9b5219" +checksum = "83e87776546dc87511aa5ee218730c92b666d7264ab6ed41f9d215af9cd5224b" dependencies = [ "bytes", "encoding_rs", "futures-util", "http 1.1.0", "httparse", - "log", "memchr", "mime", "spin", @@ -3884,6 +4040,24 @@ version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" +[[package]] +name = "notify" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "729f63e1ca555a43fe3efa4f3efdf4801c479da85b432242a7b726f353c88486" +dependencies = [ + "bitflags 1.3.2", + "crossbeam-channel", + "filetime", + "fsevent-sys", + "inotify", + "kqueue", + "libc", + "mio", + "walkdir", + "windows-sys 0.45.0", +] + [[package]] name = "nu-ansi-term" version = "0.46.0" @@ -3912,9 +4086,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", ] @@ -4064,7 +4238,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] @@ -4143,9 +4317,9 @@ dependencies = [ [[package]] name = "parcel_selectors" -version = "0.26.4" +version = "0.26.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05d74befe2d076330d9a58bf9ca2da424568724ab278adf15fb5718253133887" +checksum = "ce9c47a67c66fee4a5a42756f9784d92941bd0ab2b653539a9e90521a44b66f0" dependencies = [ "bitflags 2.5.0", "cssparser 0.33.0", @@ -4179,9 +4353,9 @@ checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "7e4af0ca4f6caed20e900d564c242b8e5d4903fdacf31d3daf527b66fe6f42fb" dependencies = [ "lock_api", "parking_lot_core", @@ -4189,22 +4363,22 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall", + "redox_syscall 0.5.1", "smallvec", - "windows-targets 0.48.5", + "windows-targets 0.52.5", ] [[package]] name = "paste" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pathdiff" @@ -4220,9 +4394,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "petgraph" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", "indexmap 2.2.6", @@ -4332,7 +4506,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] @@ -4379,7 +4553,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] @@ -4396,9 +4570,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "piper" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +checksum = "464db0c665917b13ebb5d453ccdec4add5658ee1adc7affc7677615356a8afaf" dependencies = [ "atomic-waker", "fastrand", @@ -4462,9 +4636,9 @@ dependencies = [ [[package]] name = "polling" -version = "3.6.0" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0c976a60b2d7e99d6f229e414670a9b85d13ac305cc6d1e9c134de58c5aaaf6" +checksum = "645493cf344456ef24219d02a768cf1fb92ddf8c92161679ae3d91b91a637be3" dependencies = [ "cfg-if", "concurrent-queue", @@ -4523,12 +4697,12 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.19" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ac2cf0f2e4f42b49f5ffd07dae8d746508ef7526c13940e5f524012ae6c6550" +checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" dependencies = [ "proc-macro2", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] @@ -4591,9 +4765,9 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.81" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" +checksum = "0b33eb56c327dec362a9e55b3ad14f9d2f0904fb5a5b03b513ab5465399e9f43" dependencies = [ "unicode-ident", ] @@ -4714,7 +4888,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.14", + "getrandom 0.2.15", ] [[package]] @@ -4761,9 +4935,9 @@ checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" [[package]] name = "raw-window-handle" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cc3bcbdb1ddfc11e700e62968e6b4cc9c75bb466464ad28fb61c5b2c964418b" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" [[package]] name = "rayon" @@ -4794,6 +4968,15 @@ dependencies = [ "bitflags 1.3.2", ] +[[package]] +name = "redox_syscall" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" +dependencies = [ + "bitflags 2.5.0", +] + [[package]] name = "regex" version = "1.10.4" @@ -4887,7 +5070,7 @@ dependencies = [ "objc-foundation", "objc_id", "pollster", - "raw-window-handle 0.6.1", + "raw-window-handle 0.6.2", "urlencoding", "wasm-bindgen", "wasm-bindgen-futures", @@ -4958,9 +5141,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" @@ -5001,15 +5184,15 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.15" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80af6f9131f277a45a3fba6ce8e2258037bb0477a67e610d3c1fe046ab31de47" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" [[package]] name = "ryu" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "same-file" @@ -5060,11 +5243,11 @@ checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" [[package]] name = "security-framework" -version = "2.10.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "770452e37cad93e0a50d5abc3990d2bc351c36d0328f86cefec2f2fb206eaef6" +checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.5.0", "core-foundation", "core-foundation-sys", "libc", @@ -5073,9 +5256,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.10.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f3cc463c0ef97e11c3461a9d3787412d30e8e7eb907c79180c4a57bf7c04ef" +checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" dependencies = [ "core-foundation-sys", "libc", @@ -5122,9 +5305,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" dependencies = [ "serde", ] @@ -5140,9 +5323,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.198" +version = "1.0.202" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9846a40c979031340571da2545a4e5b7c4163bdae79b301d5f86d03979451fcc" +checksum = "226b61a0d411b2ba5ff6d7f73a476ac4f8bb900373459cd00fab8512828ba395" dependencies = [ "serde_derive", ] @@ -5170,20 +5353,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.198" +version = "1.0.202" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9" +checksum = "6048858004bcff69094cd972ed40a32500f153bd3be9f716b2eed2e8217c4838" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] name = "serde_json" -version = "1.0.116" +version = "1.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813" +checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" dependencies = [ "itoa 1.0.11", "ryu", @@ -5219,14 +5402,14 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] name = "serde_spanned" -version = "0.6.5" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" +checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" dependencies = [ "serde", ] @@ -5287,7 +5470,7 @@ dependencies = [ "convert_case 0.6.0", "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", "xxhash-rust", ] @@ -5298,7 +5481,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f4ad11700cbccdbd313703916eb8c97301ee423c4a06e5421b77956fdcb36a9f" dependencies = [ "server_fn_macro", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] @@ -5469,7 +5652,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bdd941cc539bd3dc694edaf9d0c4e1221d02baa67c6b45ec04fad1024d9e8139" dependencies = [ "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] @@ -5511,9 +5694,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", "windows-sys 0.52.0", @@ -5651,7 +5834,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] @@ -5667,9 +5850,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.60" +version = "2.0.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3" +checksum = "d2863d96a84c6439701d7a38f9de935ec562c8832cc55d1dde0f513b52fad106" dependencies = [ "proc-macro2", "quote", @@ -5713,7 +5896,7 @@ dependencies = [ [[package]] name = "syntect-html" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/include_mdbook#ab2e65fb1bbfb3e28d1573bcd2ec494ac1dd4269" +source = "git+https://github.com/dioxuslabs/include_mdbook#8ebd1e08c95b5a188c277980bbd876dd3ea59719" dependencies = [ "proc-macro2", "quote", @@ -5751,7 +5934,7 @@ dependencies = [ "cfg-expr", "heck 0.5.0", "pkg-config", - "toml 0.8.12", + "toml 0.8.13", "version-compare", ] @@ -5795,7 +5978,7 @@ dependencies = [ "once_cell", "parking_lot", "raw-window-handle 0.5.2", - "raw-window-handle 0.6.1", + "raw-window-handle 0.6.2", "scopeguard", "tao-macros", "unicode-segmentation", @@ -5859,22 +6042,22 @@ checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" [[package]] name = "thiserror" -version = "1.0.59" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0126ad08bff79f29fc3ae6a55cc72352056dfff61e3ff8bb7129476d44b23aa" +checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.59" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1cd413b5d558b4c5bf3680e324a6fa5014e7b7c067a51e69dbdf47eb7148b66" +checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] @@ -5977,7 +6160,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] @@ -6016,18 +6199,17 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.10" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" dependencies = [ "bytes", "futures-core", "futures-sink", "futures-util", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "pin-project-lite", "tokio", - "tracing", ] [[package]] @@ -6053,21 +6235,21 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.12" +version = "0.8.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3" +checksum = "a4e43f8cc456c9704c851ae29c67e17ef65d2c30017c17a9765b89c382dc8bba" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.12", + "toml_edit 0.22.13", ] [[package]] name = "toml_datetime" -version = "0.6.5" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" dependencies = [ "serde", ] @@ -6109,15 +6291,15 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.12" +version = "0.22.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3328d4f68a705b2a4498da1d580585d39a6510f98318a2cec3018a7ec61ddef" +checksum = "c127785850e8c20836d49732ae6abfa47616e60bf9d9f57c43c250361a9db96c" dependencies = [ "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.6", + "winnow 0.6.8", ] [[package]] @@ -6193,7 +6375,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] @@ -6285,18 +6467,18 @@ dependencies = [ [[package]] name = "unic-langid" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "238722e6d794ed130f91f4ea33e01fcff4f188d92337a21297892521c72df516" +checksum = "23dd9d1e72a73b25e07123a80776aae3e7b0ec461ef94f9151eed6ec88005a44" dependencies = [ "unic-langid-impl", ] [[package]] name = "unic-langid-impl" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bd55a2063fdea4ef1f8633243a7b0524cbeef1905ae04c31a1c9b9775c55bc6" +checksum = "0a5422c1f65949306c99240b81de9f3f15929f5a8bfe05bb44b034cc8bf593e5" dependencies = [ "serde", "tinystr", @@ -6340,9 +6522,9 @@ checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" [[package]] name = "unicode-width" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" +checksum = "68f5e5f3158ecfd4b8ff6fe086db7c8467a2dfdac97fe420f2b7c4aa97af66d6" [[package]] name = "unicode-xid" @@ -6371,7 +6553,7 @@ checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" [[package]] name = "use-mdbook" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/include_mdbook#ab2e65fb1bbfb3e28d1573bcd2ec494ac1dd4269" +source = "git+https://github.com/dioxuslabs/include_mdbook#8ebd1e08c95b5a188c277980bbd876dd3ea59719" dependencies = [ "lazy_static", "mdbook-macro", @@ -6395,7 +6577,7 @@ version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" dependencies = [ - "getrandom 0.2.14", + "getrandom 0.2.15", "wasm-bindgen", ] @@ -6481,7 +6663,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", "wasm-bindgen-shared", ] @@ -6515,7 +6697,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -6643,7 +6825,7 @@ checksum = "ac1345798ecd8122468840bcdf1b95e5dc6d2206c5e4b0eafa078d061f59c9bc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] @@ -6675,11 +6857,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" dependencies = [ - "winapi", + "windows-sys 0.52.0", ] [[package]] @@ -6739,7 +6921,7 @@ checksum = "12168c33176773b86799be25e2a2ba07c7aab9968b37541f1094dbd7a60c8946" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] @@ -6750,7 +6932,7 @@ checksum = "942ac266be9249c84ca862f0a164a39533dc2f6f33dc98ec89c8da99b82ea0bd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] @@ -6761,7 +6943,7 @@ checksum = "9d8dc32e0095a7eeccebd0e3f09e9509365ecb3fc6ac4d6f5f14a3f6392942d1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] @@ -6772,7 +6954,7 @@ checksum = "da33557140a288fae4e1d5f8873aaf9eb6613a9cf82c3e070223ff177f598b60" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] @@ -7009,9 +7191,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.6" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0c976aaaa0e1f90dbb21e9587cdaf1d9679a1cde8875c0d6bd83ab96a208352" +checksum = "c3c52e9c97a68071b23e836c9380edae937f17b9c4667bd021973efc689f618d" dependencies = [ "memchr", ] @@ -7055,7 +7237,7 @@ dependencies = [ "objc_id", "once_cell", "percent-encoding", - "raw-window-handle 0.6.1", + "raw-window-handle 0.6.2", "serde", "serde_json", "sha2", @@ -7140,9 +7322,9 @@ checksum = "c94451ac9513335b5e23d7a8a2b61a7102398b8cca5160829d313e84c9d98be1" [[package]] name = "zbus" -version = "4.1.2" +version = "4.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9ff46f2a25abd690ed072054733e0bc3157e3d4c45f41bd183dce09c2ff8ab9" +checksum = "989c3977a7aafa97b12b9a35d21cdcff9b0d2289762b14683f45d66b1ba6c48f" dependencies = [ "async-broadcast", "async-executor", @@ -7154,7 +7336,6 @@ dependencies = [ "async-task", "async-trait", "blocking", - "derivative", "enumflags2", "event-listener 5.3.0", "futures-core", @@ -7179,15 +7360,14 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "4.1.2" +version = "4.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e0e3852c93dcdb49c9462afe67a2a468f7bd464150d866e861eaf06208633e0" +checksum = "6fe9de53245dcf426b7be226a4217dd5e339080e5d46e64a02d6e5dcbf90fca1" dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "regex", - "syn 1.0.109", + "syn 2.0.65", "zvariant_utils", ] @@ -7204,29 +7384,29 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.32" +version = "0.7.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.32" +version = "0.7.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.65", ] [[package]] name = "zvariant" -version = "4.0.2" +version = "4.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c1b3ca6db667bfada0f1ebfc94b2b1759ba25472ee5373d4551bb892616389a" +checksum = "9aa6d31a02fbfb602bfde791de7fedeb9c2c18115b3d00f3a36e489f46ffbbc7" dependencies = [ "endi", "enumflags2", @@ -7238,24 +7418,24 @@ dependencies = [ [[package]] name = "zvariant_derive" -version = "4.0.2" +version = "4.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7a4b236063316163b69039f77ce3117accb41a09567fd24c168e43491e521bc" +checksum = "642bf1b6b6d527988b3e8193d20969d53700a36eac734d21ae6639db168701c8" dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.65", "zvariant_utils", ] [[package]] name = "zvariant_utils" -version = "1.1.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00bedb16a193cc12451873fee2a1bc6550225acece0e36f333e68326c73c8172" +checksum = "fc242db087efc22bd9ade7aa7809e4ba828132edc312871584a6b4391bdf8786" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.65", ] diff --git a/Cargo.toml b/Cargo.toml index 58833feaa..96c2c76fd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,7 +8,6 @@ edition = "2018" [dependencies] dioxus = { git = "https://github.com/dioxuslabs/dioxus", features = [ - "fullstack", "router", ] } dioxus-web = { git = "https://github.com/dioxuslabs/dioxus", features = [ @@ -134,14 +133,21 @@ doc_test = [ "http", "rand" ] -web = ["dioxus-web", "dioxus/web", "dioxus/web", "dioxus-fullstack/web"] -server = [ +web = ["dioxus-web", "dioxus/web", "dioxus/web", "dioxus-fullstack/web", "dioxus/fullstack"] +dioxus-axum = [ "dioxus/axum", "dioxus-ssr", "dioxus/ssr", "tokio", - "dioxus-fullstack/axum", "axum", "fs_extra", ] -prebuild = ["server"] +server = [ + "dioxus/fullstack", + "dioxus-fullstack/axum", + "dioxus-axum", +] +prebuild = [ + "dioxus/static-generation", + "dioxus-axum", +] diff --git a/Dioxus.toml b/Dioxus.toml index f21c11267..5a01cbe34 100644 --- a/Dioxus.toml +++ b/Dioxus.toml @@ -9,7 +9,7 @@ name = "docsite" default_platform = "web" # Web `build` & `serve` dist path -out_dir = "docs" +out_dir = "dist" # resource (static) file folder asset_dir = "public" diff --git a/src/components/tutorials.rs b/src/components/tutorials.rs index 5e078b526..edca61aa0 100644 --- a/src/components/tutorials.rs +++ b/src/components/tutorials.rs @@ -1,7 +1,7 @@ use crate::*; use dioxus::prelude::*; -struct Tutorial { +struct TutorialData { title: &'static str, description: &'static str, contents: &'static str, @@ -9,22 +9,22 @@ struct Tutorial { tags: &'static [&'static str], } -static TUTORIALS: &[Tutorial] = &[ - Tutorial { +static TUTORIALS: &[TutorialData] = &[ + TutorialData { title: "Making an HTTP request", contents: "here's how to make an HTTP request", description: "here's how to make an HTTP request", author: "@jkelleyrtp", tags: &["desktop", "async", "state"], }, - Tutorial { + TutorialData { title: "Making an HTTP request", contents: "here's how to make an HTTP request", description: "here's how to make an HTTP request", author: "@jkelleyrtp", tags: &["desktop", "async", "state"], }, - Tutorial { + TutorialData { title: "Making an HTTP request", contents: "here's how to make an HTTP request", description: "here's how to make an HTTP request", diff --git a/src/doc_examples/hackernews_async.rs b/src/doc_examples/hackernews_async.rs index 7c76a0d14..12776ab30 100644 --- a/src/doc_examples/hackernews_async.rs +++ b/src/doc_examples/hackernews_async.rs @@ -47,9 +47,9 @@ pub async fn get_story(id: i64) -> Result { } #[async_recursion::async_recursion(?Send)] -pub async fn get_comment_with_depth(id: i64, depth: i64) -> Result { +pub async fn get_comment_with_depth(id: i64, depth: i64) -> Result { let url = format!("{}{}{}.json", BASE_API_URL, ITEM_API, id); - let mut comment = reqwest::get(&url).await?.json::().await?; + let mut comment = reqwest::get(&url).await?.json::().await?; if depth > 0 { let sub_comments_futures = comment .kids @@ -64,7 +64,7 @@ pub async fn get_comment_with_depth(id: i64, depth: i64) -> Result Result { +pub async fn get_comment(comment_id: i64) -> Result { let comment = get_comment_with_depth(comment_id, COMMENT_DEPTH).await?; Ok(comment) } @@ -75,11 +75,11 @@ pub struct StoryPageData { #[serde(flatten)] pub item: StoryItem, #[serde(default)] - pub comments: Vec, + pub comments: Vec, } #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] -pub struct Comment { +pub struct CommentData { pub id: i64, #[serde(default)] pub by: String, @@ -90,7 +90,7 @@ pub struct Comment { #[serde(default)] pub kids: Vec, #[serde(default)] - pub sub_comments: Vec, + pub sub_comments: Vec, pub r#type: String, } @@ -220,7 +220,7 @@ pub mod fetch { } #[component] - fn Comment(comment: super::Comment) -> Element { + fn Comment(comment: super::CommentData) -> Element { rsx! { div { padding: "0.5rem", div { color: "gray", "by {comment.by}" } @@ -388,7 +388,7 @@ fn Preview() -> Element { } #[component] -fn Comment(comment: Comment) -> Element { +fn Comment(comment: CommentData) -> Element { rsx! { div { padding: "0.5rem", div { color: "gray", "by {comment.by}" } diff --git a/src/doc_examples/hackernews_complete.rs b/src/doc_examples/hackernews_complete.rs index 2ead7f3d8..c994bd3c7 100644 --- a/src/doc_examples/hackernews_complete.rs +++ b/src/doc_examples/hackernews_complete.rs @@ -137,7 +137,7 @@ fn Preview() -> Element { } #[component] -fn Comment(comment: Comment) -> Element { +fn Comment(comment: CommentData) -> Element { rsx! { div { padding: "0.5rem", div { color: "gray", "by {comment.by}" } @@ -183,11 +183,11 @@ pub struct StoryPageData { #[serde(flatten)] pub item: StoryItem, #[serde(default)] - pub comments: Vec, + pub comments: Vec, } #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] -pub struct Comment { +pub struct CommentData { pub id: i64, /// there will be no by field if the comment was deleted #[serde(default)] @@ -199,7 +199,7 @@ pub struct Comment { #[serde(default)] pub kids: Vec, #[serde(default)] - pub sub_comments: Vec, + pub sub_comments: Vec, pub r#type: String, } @@ -237,9 +237,9 @@ pub async fn get_story(id: i64) -> Result { } #[async_recursion::async_recursion(?Send)] -pub async fn get_comment_with_depth(id: i64, depth: i64) -> Result { +pub async fn get_comment_with_depth(id: i64, depth: i64) -> Result { let url = format!("{}{}{}.json", BASE_API_URL, ITEM_API, id); - let mut comment = reqwest::get(&url).await?.json::().await?; + let mut comment = reqwest::get(&url).await?.json::().await?; if depth > 0 { let sub_comments_futures = comment .kids @@ -254,6 +254,6 @@ pub async fn get_comment_with_depth(id: i64, depth: i64) -> Result Result { +pub async fn get_comment(comment_id: i64) -> Result { get_comment_with_depth(comment_id, COMMENT_DEPTH).await } diff --git a/src/doc_examples/hackernews_post.rs b/src/doc_examples/hackernews_post.rs index 2f3441ddc..08964291f 100644 --- a/src/doc_examples/hackernews_post.rs +++ b/src/doc_examples/hackernews_post.rs @@ -130,11 +130,11 @@ pub mod story_v6 { #[serde(flatten)] pub item: StoryItem, #[serde(default)] - pub comments: Vec, + pub comments: Vec, } #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] - pub struct Comment { + pub struct CommentData { pub id: i64, /// there will be no by field if the comment was deleted #[serde(default)] @@ -146,7 +146,7 @@ pub mod story_v6 { #[serde(default)] pub kids: Vec, #[serde(default)] - pub sub_comments: Vec, + pub sub_comments: Vec, pub r#type: String, } @@ -205,11 +205,11 @@ pub mod story_final { #[serde(flatten)] pub item: StoryItem, #[serde(default)] - pub comments: Vec, + pub comments: Vec, } #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] - pub struct Comment { + pub struct CommentData { pub id: i64, /// there will be no by field if the comment was deleted #[serde(default)] @@ -221,7 +221,7 @@ pub mod story_final { #[serde(default)] pub kids: Vec, #[serde(default)] - pub sub_comments: Vec, + pub sub_comments: Vec, pub r#type: String, } diff --git a/src/doc_examples/hackernews_state.rs b/src/doc_examples/hackernews_state.rs index 85bde6e6b..b5725c45e 100644 --- a/src/doc_examples/hackernews_state.rs +++ b/src/doc_examples/hackernews_state.rs @@ -2,7 +2,8 @@ use dioxus::prelude::*; pub mod app_v1 { - use super::*; + use super::{CommentData, StoryItem, StoryPageData}; + use dioxus::prelude::*; // ANCHOR: app_v1 pub fn App() -> Element { @@ -64,7 +65,7 @@ pub mod app_v1 { // NEW #[component] - fn Comment(comment: Comment) -> Element { + fn Comment(comment: CommentData) -> Element { rsx! { div { padding: "0.5rem", div { color: "gray", "by {comment.by}" } @@ -129,7 +130,8 @@ pub mod app_v1 { } mod story_listing_listener { - use super::*; + use super::{Comment, CommentData, StoryItem, StoryPageData}; + use dioxus::prelude::*; pub fn App() -> Element { use_context_provider(|| Signal::new(PreviewState::Unset)); @@ -379,7 +381,7 @@ fn Stories() -> Element { } #[component] -fn Comment(comment: Comment) -> Element { +fn Comment(comment: CommentData) -> Element { rsx! { div { padding: "0.5rem", div { color: "gray", "by {comment.by}" } @@ -400,11 +402,11 @@ pub struct StoryPageData { #[serde(flatten)] pub item: StoryItem, #[serde(default)] - pub comments: Vec, + pub comments: Vec, } #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] -pub struct Comment { +pub struct CommentData { pub id: i64, /// there will be no by field if the comment was deleted #[serde(default)] @@ -416,7 +418,7 @@ pub struct Comment { #[serde(default)] pub kids: Vec, #[serde(default)] - pub sub_comments: Vec, + pub sub_comments: Vec, pub r#type: String, } diff --git a/src/doc_examples/rendering_lists.rs b/src/doc_examples/rendering_lists.rs index f794f417a..1f9e53b54 100644 --- a/src/doc_examples/rendering_lists.rs +++ b/src/doc_examples/rendering_lists.rs @@ -3,7 +3,7 @@ use dioxus::prelude::*; #[derive(PartialEq, Clone)] -struct Comment { +struct CommentData { content: String, id: usize, } @@ -12,11 +12,11 @@ pub fn App() -> Element { // ANCHOR: render_list let mut comment_field = use_signal(String::new); let mut next_id = use_signal(|| 0); - let mut comments = use_signal(Vec::::new); + let mut comments = use_signal(Vec::::new); let comments_lock = comments.read(); let comments_rendered = comments_lock.iter().map(|comment| { - rsx! { CommentComponent { comment: comment.clone() } } + rsx! { Comment { comment: comment.clone() } } }); rsx! { @@ -24,7 +24,7 @@ pub fn App() -> Element { onsubmit: move |_| { comments .write() - .push(Comment { + .push(CommentData { content: comment_field(), id: next_id(), }); @@ -46,14 +46,14 @@ pub fn AppForLoop() -> Element { // ANCHOR: render_list_for_loop let mut comment_field = use_signal(String::new); let mut next_id = use_signal(|| 0); - let mut comments = use_signal(Vec::::new); + let mut comments = use_signal(Vec::::new); rsx! { form { onsubmit: move |_| { comments .write() - .push(Comment { + .push(CommentData { content: comment_field(), id: next_id(), }); @@ -68,14 +68,14 @@ pub fn AppForLoop() -> Element { } for comment in comments() { // Notice the body of this for loop is rsx code, not an expression - CommentComponent { comment } + Comment { comment } } } // ANCHOR_END: render_list_for_loop } #[component] -fn CommentComponent(comment: Comment) -> Element { +fn Comment(comment: CommentData) -> Element { rsx! { div { "Comment by anon:" diff --git a/src/main.rs b/src/main.rs index 8dbe0c9d7..1717153a5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -127,8 +127,11 @@ pub(crate) enum Route { #[end_layout] #[end_nest] #[redirect("/docs/0.3/:..segments", |segments: Vec| Route::DocsO3 { segments })] - #[redirect("/docs/:.._segments", |_segments: Vec| Route::Docs { child: BookRoute::Index {} })] - #[route("/:..segments")] + #[redirect("/docs/:..segments", |segments: Vec| { + let joined = segments.join("/"); + let docs_route = format!("/docs/{}", joined); + Route::from_str(&docs_route).unwrap_or_else(|_| Route::Docs { child: BookRoute::Index {} }) + })] #[route("/:..segments")] Err404 { segments: Vec }, } @@ -257,46 +260,13 @@ fn main() { .with_level(LevelFilter::Error) .init() .unwrap(); - tokio::runtime::Runtime::new() - .unwrap() - .block_on(async move { - let index_html = std::fs::read_to_string("docs/index.html").unwrap(); - let main_tag = r#"
"#; - let (before_body, after_body) = - index_html.split_once(main_tag).expect("main id not found"); - let after_body = after_body - .split_once("
") - .expect("main id not found") - .1; - let wrapper = DefaultRenderer { - before_body: before_body.to_string() + main_tag, - after_body: "".to_string() + after_body, - }; - let mut renderer = IncrementalRenderer::builder() - .static_dir("docs_static") - .map_path(|route| { - let mut path = std::env::current_dir().unwrap(); - path.push("docs_static"); - for segment in route.split('/') { - path.push(segment); - } - println!("built: {}", path.display()); - path - }) - .build(); - renderer.renderer_mut().pre_render = true; - pre_cache_static_routes::(&mut renderer, &wrapper) - .await - .unwrap(); - // Copy everything from docs_static to docs - let mut options = fs_extra::dir::CopyOptions::new(); - options.overwrite = true; - options.content_only = true; - options.copy_inside = true; - std::fs::create_dir_all(format!("./docs")).unwrap(); - fs_extra::dir::move_dir("./docs_static", &format!("./docs"), &options).unwrap(); - }); + std::env::remove_var("DIOXUS_ACTIVE"); + std::env::remove_var("CARGO"); + + LaunchBuilder::new() + .with_cfg(dioxus::static_site_generation::Config::new().github_pages()) + .launch(app); println!("prebuilt"); dioxus_search::SearchIndex::::create( diff --git a/state.md b/state.md new file mode 100644 index 000000000..e618b469e --- /dev/null +++ b/state.md @@ -0,0 +1,292 @@ +Here is an overview of the state management system in dioxus. This doesn't cover all the internals, but it should serve as a pretty good reference: + +# State + +Signal is like a fancy version of RefCell for UIs. Just like RefCell, it checks borrows at runtime. It has a bunch of helper methods to make it easier to use. Calling it like a function will clone the inner value. You can also call a few traits like AddAssign on it directly without writing to it manually. + +```rust +// create a signal +let signal = use_signal(|| 0); + +// update the signal +signal.write() += 1; + +// read the signal +signal.read(); +``` + +> Note: Signals are implemented with [generational-box](https://crates.io/crates/generational-box) which makes all values Copy even if the inner value is not Copy. +> This is incredibly convenient for UI development, but it does come with some tradeoffs. The lifetime of the signal is tied to the lifetime of the component it was created in. If you drop the component that created the signal, the signal will be dropped as well. You might run into this if you try to pass a signal from a child component to a parent component and drop the child component. To avoid this you can create your signal higher up in your component tree, use global signals, or create a signal in a specific scope (like the `ScopeId::ROOT`) with [`Signal::new_in_scope`](https://docs.rs/dioxus/latest/dioxus/prelude/struct.Signal.html#method.new_in_scope) +> +> TLDR **Don't pass signals up in the component tree**. It will cause issues: +> ```rust +> fn MyComponent() { +> let child_signal = use_state(|| None); +> +> rsx! { +> IncrementButton { +> child_signal +> } +> } +> } +> +> #[component] +> fn IncrementButton(mut child_signal: Signal>>) { +> let signal_owned_by_child = use_state(|| 0); +> // Don't do this: it may cause issues if you drop the child component +> child_signal.write() = Some(signal_owned_by_child); +> +> todo!() +> } +> ``` + +## Moving Around State + +You will often need to move state around between your component. Dioxus provides three different ways to pass round state: + +1. Just pass your values as [props](https://dioxuslabs.com/learn/0.5/reference/component_props): +```rust +fn MyComponent() { + let count = use_state(|| 0); + + rsx! { + IncrementButton { + count + } + } +} + +#[component] +fn IncrementButton(mut count: Signal) { + rsx! { + button { + onclick: move |_| count += 1, + "Increment" + } + } +} +``` + +This is the most common way to pass state around. It is the most explicit and local to your component. Use this when it isn't overly annoying to pass around a value. + +2. Use [use_context](https://dioxuslabs.com/learn/0.5/reference/context) to pass state from a parent component to all children: +```rust +struct MyState { + count: Signal +} + +fn ParentComponent() { + // Use context provider provides an unique type to all children of this component + use_context_provider(|| MyState { count: Signal::new(0) }); + + rsx! { + // IncrementButton will have access to the count without explicitly passing it through props + IncrementButton {} + } +} + +#[component] +fn IncrementButton() { + // Use context gets the value from a parent component + let count = use_context::().count; + + rsx! { + button { + onclick: move |_| count += 1, + "Increment" + } + } +} +``` + +This is slightly less explicit than passing it as a prop, but it is still local to the component. This is really great if you want state that is global to part of your app. It lets you create multiple globalish states while still making state different when you reuse components. If I create a new [`ParentComponent`], it will have a new [`MyState`]. + +3. Globals let you share state with your whole app with rust statics: +```rust +// Count will be created the first time you access it with the closure you pass to Signal::global +static COUNT: GlobalSignal = Signal::global(|| 0); + +fn ParentComponent() { + rsx! { + IncrementButton {} + } +} + +#[component] +fn IncrementButton() { + rsx! { + button { + // You don't need to pass anything around or get anything out of the context because COUNT is global + onclick: move |_| *COUNT.write() += 1, + "Increment" + } + } +} +``` + +Global state can be very ergonomic if your state is truly global, but you shouldn't use it if you need state to be different for different instances of your component. If I create another `IncrementButton` it will use the same `COUNT`. Libraries should generally avoid this to make components more reusable. + +> Note: Even though it is in a static, `COUNT` will be different for each app instance (this is generally only reliant on the server). + +# Derived State + +Creating state is only part of the story. A huge part of state management is deriving state from other state. In dioxus, the main way you derive state is through memos. Memos are functions that take state as input and return a new state. + +The closure you pass into memos will be called whenever the state you read inside the memo changes, but the memo you get will not rerun other parts of your app unless the output changes (`PartialEq` returns false). + +That is a lot, lets dig into some examples to see how this works: + +```rust +let count = use_state(|| 1); +// double_count will rerun when state we read inside the memo changes (count) +let double_count = use_memo(move || count() * 2); + +// memos act a lot like a read only version of a signal. You can read them, display them, and move them around like any other signal +println!("{}", double_count); // Prints "2" + +// But you can't write to them directly +double_count += 1; + +// Instead, any time you write to a value the memo reads, the memo will rerun +count += 1; + +println!("{}", double_count); // Prints "4" + +// Lets create another memo that reads the value of double_count +let double_count_plus_one = use_memo(move || double_count() + 1); + +println!("{}", double_count_plus_one); // Prints "5" + +// Now if we write to count the double_count memo will rerun +// If that the output of double_count changes, then it will cause double_count_plus_one to rerun +count += 1; + +println!("{}", double_count); // Prints "6" +println!("{}", double_count_plus_one); // Prints "7" + +// However if the value of double_count doesn't change after a write, then it won't trigger double_count_plus_one to rerun +// Since we just write the same value, the doubled value is still 6 and we don't rerun double_count_plus_one +*double_count.write() = 3; + +println!("{}", double_count); // Prints "6" +println!("{}", double_count_plus_one); // Prints "7" +``` + +That was a lot! In summary, memos let you derive state in your app that updates automatically. They memorize the output of the closure and only rerun other parts of your app when the output changes. + +The good news is this is the core of the dioxus reactive system. Memos, Resources, and Effects all rerun in a very similar way. If you have a good grasp of how memos work, understanding the other two will be very easy. + +# Derived Async State + +Memos are great for deriving synchronous state, but sometimes you need to derive state that is asynchronous. In our previous example, we doubled the value of count. What if that doubling happened on the server? Instead of synchronously calling a function, we would need to start a request to the server and wait for it to finish and return a value. + +Lets take a look at what that would look like in dioxus: + +```rust +let count = use_state(|| 1); +let double_count = use_resource(move || async move { + // Start a request to the server. We are reading the value of count to format it into the url + // Since we are reading count, this resource will "subscribe" to changes to count (when count changes, the resource will rerun) + let response = reqwest::get(format!("https://myserver.com/doubleme?count={count}")).await.unwrap(); + response.text().await.unwrap() +}); + +// Again, resources are similar to signals, but they have a bit of extra information. Unlike a memo, the resource may be in progress +// Calling .state() on a resource will return a Signal with information about the current status of the resource +println!("{:?}", double_count.state().read()); // Prints "UseResourceState::Pending" + +// You can also try to get the last resolved value of the resource with the .value() method +println!("{:?}", double_count.value().read()); // Prints "None" + +// Wait for the resource to finish and get the value +std::thread::sleep(std::time::Duration::from_secs(1)); + +// Now if we read the state, we will see that it is done +println!("{:?}", double_count.state().read()); // Prints "UseResourceState::Done" + +// And we can get the value +println!("{:?}", double_count.value().read()); // Prints "Some(2)" + +// Now if we write to count, the resource will rerun +count += 1; // count is now 2 + +// Wait for the resource to finish and get the value +std::thread::sleep(std::time::Duration::from_secs(1)); + +// Now if we read the state, we will see that it is done +println!("{:?}", double_count.state().read()); // Prints "UseResourceState::Done" + +// And we can get the value +println!("{:?}", double_count.value().read()); // Prints "Some(4)" + +// One more case, what happens if we write to the resource while it is in progress? +// The resource will rerun and the value will be None +count.write() += 1; // count is now 3 + +// If we write to a value the resource subscribes to again, it will cancel the current future and start a new one +count += 1; // count is now 4 + +println!("{:?}", double_count.state().read()); // Prints "UseResourceState::Stopped" +println!("{:?}", double_count.value().read()); // Prints the last resolved value "Some(4)" + +// After we wait for the resource to finish, we will get the value of only the latest future +std::thread::sleep(std::time::Duration::from_secs(1)); + +println!("{:?}", double_count.state().read()); // Prints "UseResourceState::Done" + +println!("{:?}", double_count.value().read()); // Prints "Some(8)" +``` + +> Note: I made some analogies to memo, but unlike memos, resources do not memorize the output of the closure. They will always rerun any parts of your app that read the value of the resource when the future resolves even if the output doesn't change. + +# Effects + +When creating an app, you may need to interact with the outside world. This is where effects come in. Effects are reactive closures that run **after the component has finished rendering**. They are useful for things like manually updating the rendered DOM with web-sys or javascript. + +**Effects are specifically created for side effects. If you are trying to derive state, use a [memo](#derived-state), or [resource](#derived-async-state) instead.** + +If you are trying to update the DOM, you can use the [`use_effect`](https://docs.rs/dioxus/latest/dioxus/prelude/fn.use_effect.html) hook to run an effect after the component has finished rendering: + +```rust +fn MyComponent() { + let count = use_state(|| 0); + + use_effect(move || { + // Effects are reactive just like memos. If you read a value inside the effect, the effect will rerun when that value changes + let count = count.read(); + + // You can use the count value to update the DOM + eval(format!( + "document.getElementById('count').innerText = {count}" + )); + }); + + rsx! { + button { + // When you click the button, count will be incremented and the effect will rerun + onclick: move |_| count += 1, + "Increment" + } + div { + id: "count", + // This example has no good reason to manually manipulate the DOM, but if you do, you should do that in an effect + // In real code, this should just be "{count}" and dioxus will update it automatically + "0" + } + } +} +``` + +# Conclusion + +Signals, memos, and resources are the core of state management in dioxus. + +Signals store state, memos derive synchronous state, and resources derive asynchronous state. + +Effects are used to run side effects after the component has finished rendering. + +You can learn more about state management in dioxus in the [dioxus book](https://dioxuslabs.com/learn/0.5/reference). + +If you want to see a more complex example of how state management comes together, check out the [todomvc example](https://github.com/DioxusLabs/dioxus/blob/main/examples/todomvc.rs). + +If you have any questions, feel free to ask in the [dioxus discord](https://discord.gg/XgGxMSkvUM). From 108120c7a5a6d98aea2ba1c305d02655c717abe3 Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Thu, 23 May 2024 13:57:50 -0500 Subject: [PATCH 02/35] fix a few more doc examples --- Cargo.lock | 8 ++++---- src/doc_examples/migration.rs | 4 ++-- src/doc_examples/router_reference.rs | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d99c1c045..963cf645b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1593,7 +1593,7 @@ dependencies = [ [[package]] name = "dioxus-native-core" version = "0.5.0-alpha.2" -source = "git+https://github.com/dioxuslabs/blitz#e118648346f764f39261868ad13efcc2aeb2fb21" +source = "git+https://github.com/dioxuslabs/blitz#c28de2c3d7a30e0a1105670f34d6859889b765a4" dependencies = [ "anymap 1.0.0-beta.2", "dashmap", @@ -1610,7 +1610,7 @@ dependencies = [ [[package]] name = "dioxus-native-core-macro" version = "0.5.0-alpha.2" -source = "git+https://github.com/dioxuslabs/blitz#e118648346f764f39261868ad13efcc2aeb2fb21" +source = "git+https://github.com/dioxuslabs/blitz#c28de2c3d7a30e0a1105670f34d6859889b765a4" dependencies = [ "quote", "syn 2.0.65", @@ -1809,7 +1809,7 @@ dependencies = [ [[package]] name = "dioxus-tui" version = "0.5.0-alpha.2" -source = "git+https://github.com/dioxuslabs/blitz#e118648346f764f39261868ad13efcc2aeb2fb21" +source = "git+https://github.com/dioxuslabs/blitz#c28de2c3d7a30e0a1105670f34d6859889b765a4" dependencies = [ "crossterm 0.26.1", "dioxus-core 0.5.2", @@ -4588,7 +4588,7 @@ checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "plasmo" version = "0.5.0-alpha.2" -source = "git+https://github.com/dioxuslabs/blitz#e118648346f764f39261868ad13efcc2aeb2fb21" +source = "git+https://github.com/dioxuslabs/blitz#c28de2c3d7a30e0a1105670f34d6859889b765a4" dependencies = [ "anyhow", "anymap 1.0.0-beta.2", diff --git a/src/doc_examples/migration.rs b/src/doc_examples/migration.rs index b5a2350dd..f260d5790 100644 --- a/src/doc_examples/migration.rs +++ b/src/doc_examples/migration.rs @@ -28,10 +28,10 @@ mod props { rsx! { "Hello {owned_name}" BorrowedComp { - name: "{owned_name}" + name: "other name" } ManualPropsComponent { - name: "{owned_name}" + name: "other name 2" } } } diff --git a/src/doc_examples/router_reference.rs b/src/doc_examples/router_reference.rs index 53f88f02d..fefdc11ca 100644 --- a/src/doc_examples/router_reference.rs +++ b/src/doc_examples/router_reference.rs @@ -26,7 +26,7 @@ mod simple_router { } mod router_404 { - use super::*; + use dioxus::prelude::*; // ANCHOR: router_definition_404 // All of our routes will be a variant of this Route enum From 659b983c10ab311eefac65d01bdf45142441cac2 Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Tue, 13 Aug 2024 11:14:44 -0500 Subject: [PATCH 03/35] Update state.md Co-authored-by: Sam Tay --- state.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/state.md b/state.md index e618b469e..8ff15281f 100644 --- a/state.md +++ b/state.md @@ -166,7 +166,7 @@ println!("{}", double_count_plus_one); // Prints "7" // However if the value of double_count doesn't change after a write, then it won't trigger double_count_plus_one to rerun // Since we just write the same value, the doubled value is still 6 and we don't rerun double_count_plus_one -*double_count.write() = 3; +*count.write() = 3; println!("{}", double_count); // Prints "6" println!("{}", double_count_plus_one); // Prints "7" From 5437e91ae0f795ae7443563698860e6534cca9ba Mon Sep 17 00:00:00 2001 From: Jonathan Kelley Date: Tue, 13 Aug 2024 12:11:20 -0700 Subject: [PATCH 04/35] wip: migrate to 0.6.0-alpha.2 --- Cargo.lock | 2594 ++++++++--------- Cargo.toml | 18 +- docs-src/0.5/en/contributing/index.md | 7 - .../0.5/en/contributing/project_structure.md | 4 +- docs-src/0.5/en/cookbook/custom_renderer.md | 413 --- docs-src/0.5/en/reference/index.md | 1 - src/components/homepage/hero.rs | 1 - src/components/homepage/value_add.rs | 10 +- src/doc_examples/custom_renderer.rs | 305 -- src/doc_examples/hello_world_tui.rs | 13 - src/doc_examples/hello_world_tui_no_ctrl_c.rs | 38 - src/doc_examples/rsx_overview.rs | 12 +- 12 files changed, 1299 insertions(+), 2117 deletions(-) delete mode 100644 docs-src/0.5/en/cookbook/custom_renderer.md delete mode 100644 src/doc_examples/custom_renderer.rs delete mode 100644 src/doc_examples/hello_world_tui.rs delete mode 100644 src/doc_examples/hello_world_tui_no_ctrl_c.rs diff --git a/Cargo.lock b/Cargo.lock index 963cf645b..b668c41f6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "addr2line" -version = "0.21.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" dependencies = [ "gimli", ] @@ -72,22 +72,59 @@ dependencies = [ ] [[package]] -name = "anyhow" -version = "1.0.86" +name = "anstream" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] [[package]] -name = "anymap" -version = "0.12.1" +name = "anstyle" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33954243bd79057c2de7338850b85983a44588021f8a5fee574a8888c6de4344" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" [[package]] -name = "anymap" -version = "1.0.0-beta.2" +name = "anstyle-parse" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f1f8f5a6f3d50d89e3797d7593a50f96bb2aaa20ca0cc7be1fb673232c91d72" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +dependencies = [ + "anstyle", + "windows-sys 0.52.0", +] + +[[package]] +name = "anyhow" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" [[package]] name = "anymap2" @@ -107,14 +144,13 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd884d7c72877a94102c3715f3b1cd09ff4fac28221add3e57cfbe25c236d093" dependencies = [ - "async-fs", - "async-net", "enumflags2", "futures-channel", "futures-util", "rand 0.8.5", "serde", "serde_repr", + "tokio", "url", "zbus", ] @@ -127,12 +163,12 @@ checksum = "619743e34b5ba4e9703bba34deac3427c72507c7159f5fd030aea8cac0cfe341" [[package]] name = "async-broadcast" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "258b52a1aa741b9f09783b2d86cf0aeeb617bbf847f6933340a39644227acbdb" +checksum = "20cd0e2e25ea8e5f7e9df04578dc6cf5c83577fd09b1a46aaf5c85e1c33f2a7e" dependencies = [ - "event-listener 5.3.0", - "event-listener-strategy 0.5.2", + "event-listener", + "event-listener-strategy", "futures-core", "pin-project-lite", ] @@ -144,40 +180,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" dependencies = [ "concurrent-queue", - "event-listener-strategy 0.5.2", + "event-listener-strategy", "futures-core", "pin-project-lite", ] -[[package]] -name = "async-executor" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b10202063978b3351199d68f8b22c4e47e4b1b822f8d43fd862d5ea8c006b29a" -dependencies = [ - "async-task", - "concurrent-queue", - "fastrand", - "futures-lite", - "slab", -] - -[[package]] -name = "async-fs" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" -dependencies = [ - "async-lock", - "blocking", - "futures-lite", -] - [[package]] name = "async-io" -version = "2.3.2" +version = "2.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcccb0f599cfa2f8ace422d3555572f47424da5648a4382a9dd0310ff8210884" +checksum = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8" dependencies = [ "async-lock", "cfg-if", @@ -189,36 +201,25 @@ dependencies = [ "rustix", "slab", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "async-lock" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" dependencies = [ - "event-listener 4.0.3", - "event-listener-strategy 0.4.0", + "event-listener", + "event-listener-strategy", "pin-project-lite", ] -[[package]] -name = "async-net" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b948000fad4873c1c9339d60f2623323a0cfd3816e5181033c6a5cb68b2accf7" -dependencies = [ - "async-io", - "blocking", - "futures-lite", -] - [[package]] name = "async-process" -version = "2.2.2" +version = "2.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a53fc6301894e04a92cb2584fedde80cb25ba8e02d9dc39d4a87d036e22f397d" +checksum = "a8a07789659a4d385b79b18b9127fc27e1a59e1e89117c78c5ea3b806f016374" dependencies = [ "async-channel", "async-io", @@ -227,11 +228,11 @@ dependencies = [ "async-task", "blocking", "cfg-if", - "event-listener 5.3.0", + "event-listener", "futures-lite", "rustix", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -242,14 +243,14 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.74", ] [[package]] name = "async-signal" -version = "0.2.6" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afe66191c335039c7bb78f99dc7520b0cbb166b3a1cb33a03f53d8a1c6f2afda" +checksum = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3" dependencies = [ "async-io", "async-lock", @@ -260,7 +261,7 @@ dependencies = [ "rustix", "signal-hook-registry", "slab", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -271,13 +272,13 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.80" +version = "0.1.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" +checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.74", ] [[package]] @@ -343,7 +344,7 @@ checksum = "edf3ee19dbc0a46d740f6f0926bde8c50f02bdbc7b536842da28f6ac56513a8b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.74", ] [[package]] @@ -355,13 +356,13 @@ dependencies = [ "async-trait", "axum-core", "axum-macros", - "base64", + "base64 0.21.7", "bytes", "futures-util", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "http-body-util", - "hyper 1.3.1", + "hyper 1.4.1", "hyper-util", "itoa 1.0.11", "matchit", @@ -378,7 +379,7 @@ dependencies = [ "sha1", "sync_wrapper 1.0.1", "tokio", - "tokio-tungstenite", + "tokio-tungstenite 0.21.0", "tower", "tower-layer", "tower-service", @@ -395,7 +396,7 @@ dependencies = [ "bytes", "futures-util", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "http-body-util", "mime", "pin-project-lite", @@ -415,14 +416,14 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.74", ] [[package]] name = "backtrace" -version = "0.3.71" +version = "0.3.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" dependencies = [ "addr2line", "cc", @@ -440,13 +441,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] -name = "base64-simd" -version = "0.7.0" +name = "base64" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "781dd20c3aff0bd194fe7d2a977dd92f21c173891f3a03b677359e5fa457e5d5" -dependencies = [ - "simd-abstraction", -] +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bincode" @@ -465,25 +463,13 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" dependencies = [ "serde", ] -[[package]] -name = "bitvec" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" -dependencies = [ - "funty", - "radium", - "tap", - "wyz", -] - [[package]] name = "block" version = "0.1.6" @@ -496,17 +482,16 @@ version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ - "generic-array 0.14.7", + "generic-array", ] [[package]] name = "blocking" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "495f7104e962b7356f0aeb34247aca1fe7d2e783b346582db7f2904cb5717e88" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" dependencies = [ "async-channel", - "async-lock", "async-task", "futures-io", "futures-lite", @@ -514,13 +499,12 @@ dependencies = [ ] [[package]] -name = "bstr" -version = "1.9.1" +name = "built" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706" +checksum = "c6a6c0b39c38fd754ac338b00a88066436389c0f029da5d37d1e01091d9b7c17" dependencies = [ - "memchr", - "serde", + "git2", ] [[package]] @@ -529,28 +513,6 @@ version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" -[[package]] -name = "bytecheck" -version = "0.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" -dependencies = [ - "bytecheck_derive", - "ptr_meta", - "simdutf8", -] - -[[package]] -name = "bytecheck_derive" -version = "0.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "byteorder" version = "1.5.0" @@ -559,9 +521,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.6.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" dependencies = [ "serde", ] @@ -572,7 +534,7 @@ version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cairo-sys-rs", "glib", "libc", @@ -623,17 +585,15 @@ dependencies = [ "thiserror", ] -[[package]] -name = "cassowary" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53" - [[package]] name = "cc" -version = "1.0.98" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41c270e7540d725e65ac7f1b212ac8ce349719624d7bcff99f8e2e488e8cf03f" +checksum = "e9e8aabfac534be767c909e0690571677d49f41bd8465ae876fe043d52ba5292" +dependencies = [ + "jobserver", + "libc", +] [[package]] name = "cesu8" @@ -668,12 +628,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "cfg_aliases" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" - [[package]] name = "chrono" version = "0.4.38" @@ -686,7 +640,7 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -716,6 +670,46 @@ dependencies = [ "half", ] +[[package]] +name = "clap" +version = "4.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d8838454fda655dafd3accb2b6e2bea645b9e4078abe84a22ceb947235c5cc" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "216aec2b177652e3846684cbfe25c9964d18ec45234f0f5da5157b207ed1aab6" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.74", +] + +[[package]] +name = "clap_lex" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" + [[package]] name = "cobs" version = "0.2.3" @@ -752,6 +746,12 @@ dependencies = [ "objc", ] +[[package]] +name = "colorchoice" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" + [[package]] name = "colored" version = "2.1.0" @@ -803,26 +803,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "const-str" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21077772762a1002bb421c3af42ac1725fa56066bfc53d9a55bb79905df2aaf3" -dependencies = [ - "const-str-proc-macro", -] - -[[package]] -name = "const-str-proc-macro" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e1e0fdd2e5d3041e530e1b21158aeeef8b5d0e306bc5c1e3d6cf0930d10e25a" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "const_format" version = "0.2.32" @@ -876,9 +856,9 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "core-graphics" @@ -906,9 +886,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "51e852e6dc9a5bed1fae92dd2375037bf2b768725bf3be87811edee3249d09ad" dependencies = [ "libc", ] @@ -962,47 +942,6 @@ version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" -[[package]] -name = "crossterm" -version = "0.26.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a84cda67535339806297f1b331d6dd6320470d2a0fe65381e79ee9e156dd3d13" -dependencies = [ - "bitflags 1.3.2", - "crossterm_winapi", - "libc", - "mio", - "parking_lot", - "signal-hook", - "signal-hook-mio", - "winapi", -] - -[[package]] -name = "crossterm" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df" -dependencies = [ - "bitflags 2.5.0", - "crossterm_winapi", - "libc", - "mio", - "parking_lot", - "signal-hook", - "signal-hook-mio", - "winapi", -] - -[[package]] -name = "crossterm_winapi" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b" -dependencies = [ - "winapi", -] - [[package]] name = "crunchy" version = "0.2.2" @@ -1015,7 +954,7 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ - "generic-array 0.14.7", + "generic-array", "typenum", ] @@ -1049,28 +988,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "cssparser" -version = "0.33.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9be934d936a0fbed5bcdc01042b770de1398bf79d0e192f49fa7faea0e99281e" -dependencies = [ - "cssparser-macros", - "dtoa-short", - "itoa 1.0.11", - "phf 0.11.2", - "smallvec", -] - -[[package]] -name = "cssparser-color" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "556c099a61d85989d7af52b692e35a8d68a57e7df8c6d07563dc0778b3960c9f" -dependencies = [ - "cssparser 0.33.0", -] - [[package]] name = "cssparser-macros" version = "0.6.1" @@ -1078,14 +995,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.65", + "syn 2.0.74", ] [[package]] name = "darling" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" dependencies = [ "darling_core", "darling_macro", @@ -1093,26 +1010,26 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.74", ] [[package]] name = "darling_macro" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.65", + "syn 2.0.74", ] [[package]] @@ -1135,21 +1052,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" [[package]] -name = "data-url" -version = "0.1.1" +name = "deranged" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a30bfce702bcfa94e906ef82421f2c0e61c076ad76030c16ee5d2e9a32fe193" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ - "matches", + "powerfmt", ] [[package]] -name = "deranged" -version = "0.3.11" +name = "derivative" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" dependencies = [ - "powerfmt", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] @@ -1165,15 +1084,15 @@ dependencies = [ [[package]] name = "derive_more" -version = "0.99.17" +version = "0.99.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" dependencies = [ "convert_case 0.4.0", "proc-macro2", "quote", "rustc_version", - "syn 1.0.109", + "syn 2.0.74", ] [[package]] @@ -1208,29 +1127,32 @@ dependencies = [ [[package]] name = "dioxus" -version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" +version = "0.6.0-alpha.2" +source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" dependencies = [ - "dioxus-config-macro 0.5.2", - "dioxus-core 0.5.2", - "dioxus-core-macro 0.5.2", + "axum", + "dioxus-config-macro 0.6.0-alpha.2", + "dioxus-core 0.6.0-alpha.2", + "dioxus-core-macro 0.6.0-alpha.2", "dioxus-fullstack", - "dioxus-hooks 0.5.2", - "dioxus-hot-reload 0.5.2", - "dioxus-html 0.5.2", + "dioxus-hooks 0.6.0-alpha.2", + "dioxus-hot-reload 0.6.0-alpha.2", + "dioxus-html 0.6.0-alpha.2", "dioxus-liveview", - "dioxus-router", - "dioxus-signals 0.5.2", + "dioxus-router 0.6.0-alpha.2", + "dioxus-signals 0.6.0-alpha.2", "dioxus-ssr", "dioxus-static-site-generation", "dioxus-web", + "manganis 0.3.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde", ] [[package]] name = "dioxus-cli-config" -version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7dffc452ed91af6ef772b0d9a5899573f6785314e97c533733ec55413c01df3" dependencies = [ "once_cell", "serde", @@ -1238,6 +1160,19 @@ dependencies = [ "tracing", ] +[[package]] +name = "dioxus-cli-config" +version = "0.6.0-alpha.2" +source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" +dependencies = [ + "built", + "clap", + "once_cell", + "serde", + "serde_json", + "tracing", +] + [[package]] name = "dioxus-config-macro" version = "0.4.3" @@ -1249,8 +1184,8 @@ dependencies = [ [[package]] name = "dioxus-config-macro" -version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" +version = "0.6.0-alpha.2" +source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" dependencies = [ "proc-macro2", "quote", @@ -1272,20 +1207,42 @@ dependencies = [ [[package]] name = "dioxus-core" -version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3730d2459ab66951cedf10b09eb84141a6eda7f403c28057cbe010495be156b7" dependencies = [ "futures-channel", "futures-util", - "generational-box 0.5.2", + "generational-box 0.5.6", "longest-increasing-subsequence", "rustc-hash", "serde", "slab", + "slotmap", "tracing", "tracing-subscriber", ] +[[package]] +name = "dioxus-core" +version = "0.6.0-alpha.2" +source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" +dependencies = [ + "const_format", + "futures-channel", + "futures-util", + "generational-box 0.6.0-alpha.2", + "longest-increasing-subsequence", + "manganis 0.3.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-hash", + "rustversion", + "serde", + "slab", + "slotmap", + "tracing", + "warnings", +] + [[package]] name = "dioxus-core-macro" version = "0.4.3" @@ -1297,21 +1254,35 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.74", ] [[package]] name = "dioxus-core-macro" -version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d9c0dfe0e6a46626fa716c4aa1d2ccb273441337909cfeacad5bb6fcfb947d2" dependencies = [ "constcat", "convert_case 0.6.0", - "dioxus-rsx 0.5.2", + "dioxus-rsx 0.5.6", + "prettyplease", + "proc-macro2", + "quote", + "syn 2.0.74", +] + +[[package]] +name = "dioxus-core-macro" +version = "0.6.0-alpha.2" +source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" +dependencies = [ + "convert_case 0.6.0", + "dioxus-rsx 0.6.0-alpha.2", "prettyplease", "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.74", ] [[package]] @@ -1322,22 +1293,23 @@ checksum = "2ea539174bb236e0e7dc9c12b19b88eae3cb574dedbd0252a2d43ea7e6de13e2" [[package]] name = "dioxus-desktop" -version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" +version = "0.6.0-alpha.2" +source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" dependencies = [ "async-trait", "cocoa", "core-foundation", - "dioxus-cli-config", - "dioxus-core 0.5.2", - "dioxus-hooks 0.5.2", - "dioxus-hot-reload 0.5.2", - "dioxus-html 0.5.2", + "dioxus-cli-config 0.6.0-alpha.2", + "dioxus-core 0.6.0-alpha.2", + "dioxus-hooks 0.6.0-alpha.2", + "dioxus-hot-reload 0.6.0-alpha.2", + "dioxus-html 0.6.0-alpha.2", "dioxus-interpreter-js", + "dioxus-signals 0.6.0-alpha.2", "dunce", "futures-channel", "futures-util", - "generational-box 0.5.2", + "generational-box 0.6.0-alpha.2", "global-hotkey", "infer", "muda", @@ -1360,28 +1332,31 @@ dependencies = [ [[package]] name = "dioxus-fullstack" -version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" +version = "0.6.0-alpha.2" +source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" dependencies = [ - "anymap 0.12.1", "async-trait", "axum", - "base64", + "base64 0.22.1", "bytes", "ciborium", - "dioxus-cli-config", - "dioxus-hot-reload 0.5.2", - "dioxus-lib", + "clap", + "dioxus-cli-config 0.6.0-alpha.2", + "dioxus-hot-reload 0.6.0-alpha.2", + "dioxus-interpreter-js", + "dioxus-lib 0.6.0-alpha.2", "dioxus-ssr", "dioxus-web", "dioxus_server_macro", + "futures-channel", "futures-util", + "generational-box 0.6.0-alpha.2", "http 1.1.0", - "hyper 1.3.1", + "hyper 1.4.1", "once_cell", + "parking_lot", "pin-project", "serde", - "serde_json", "server_fn", "thiserror", "tokio", @@ -1412,20 +1387,37 @@ dependencies = [ [[package]] name = "dioxus-hooks" -version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa8f9c661eea82295219d25555d5c0b597e74186b029038ceb5e3700ccbd4380" dependencies = [ - "dioxus-core 0.5.2", + "dioxus-core 0.5.6", "dioxus-debug-cell", - "dioxus-signals 0.5.2", + "dioxus-signals 0.5.7", "futures-channel", "futures-util", - "generational-box 0.5.2", + "generational-box 0.5.6", "slab", "thiserror", "tracing", ] +[[package]] +name = "dioxus-hooks" +version = "0.6.0-alpha.2" +source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" +dependencies = [ + "dioxus-core 0.6.0-alpha.2", + "dioxus-signals 0.6.0-alpha.2", + "futures-channel", + "futures-util", + "generational-box 0.6.0-alpha.2", + "rustversion", + "slab", + "tracing", + "warnings", +] + [[package]] name = "dioxus-hot-reload" version = "0.4.3" @@ -1441,24 +1433,20 @@ dependencies = [ [[package]] name = "dioxus-hot-reload" -version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" -dependencies = [ - "axum", - "chrono", - "dioxus-core 0.5.2", - "dioxus-html 0.5.2", - "dioxus-rsx 0.5.2", - "execute", +version = "0.6.0-alpha.2" +source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" +dependencies = [ + "dioxus-cli-config 0.6.0-alpha.2", + "dioxus-core 0.6.0-alpha.2", + "dioxus-html 0.6.0-alpha.2", + "dioxus-rsx 0.6.0-alpha.2", + "dioxus-signals 0.6.0-alpha.2", "futures-util", - "ignore", - "interprocess-docfix", - "notify", - "once_cell", "serde", "serde_json", "tokio", "tokio-stream", + "tokio-tungstenite 0.23.1", "tracing", ] @@ -1484,25 +1472,51 @@ dependencies = [ [[package]] name = "dioxus-html" -version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f01a0826f179adad6ea8d6586746e8edde0c602cc86f4eb8e5df7a3b204c4018" dependencies = [ "async-trait", - "dioxus-core 0.5.2", - "dioxus-html-internal-macro 0.5.2", - "dioxus-rsx 0.5.2", + "dioxus-core 0.5.6", + "dioxus-html-internal-macro 0.5.6", "enumset", "euclid", "futures-channel", - "generational-box 0.5.2", + "generational-box 0.5.6", "keyboard-types", "serde", "serde-value", "serde_json", "serde_repr", + "tracing", + "web-sys", +] + +[[package]] +name = "dioxus-html" +version = "0.6.0-alpha.2" +source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" +dependencies = [ + "async-trait", + "dioxus-core 0.6.0-alpha.2", + "dioxus-core-macro 0.6.0-alpha.2", + "dioxus-hooks 0.6.0-alpha.2", + "dioxus-html-internal-macro 0.6.0-alpha.2", + "enumset", + "euclid", + "futures-channel", + "generational-box 0.6.0-alpha.2", + "js-sys", + "keyboard-types", + "lazy-js-bundle", + "rustversion", + "serde", + "serde_json", + "serde_repr", "tokio", "tracing", "wasm-bindgen", + "wasm-bindgen-futures", "web-sys", ] @@ -1514,29 +1528,42 @@ dependencies = [ "convert_case 0.6.0", "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.74", ] [[package]] name = "dioxus-html-internal-macro" -version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b96f35a608d0ab8f4ca6f66ce1828354e4ebd41580b12454f490221a11da93c" +dependencies = [ + "convert_case 0.6.0", + "proc-macro2", + "quote", + "syn 2.0.74", +] + +[[package]] +name = "dioxus-html-internal-macro" +version = "0.6.0-alpha.2" +source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" dependencies = [ "convert_case 0.6.0", "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.74", ] [[package]] name = "dioxus-interpreter-js" -version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" +version = "0.6.0-alpha.2" +source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" dependencies = [ - "dioxus-core 0.5.2", - "dioxus-html 0.5.2", + "dioxus-core 0.6.0-alpha.2", + "dioxus-html 0.6.0-alpha.2", "js-sys", - "md5", + "lazy-js-bundle", + "serde", "sledgehammer_bindgen", "sledgehammer_utils", "wasm-bindgen", @@ -1546,31 +1573,46 @@ dependencies = [ [[package]] name = "dioxus-lib" -version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bd39b2c41dd1915dcb91d914ea72d8b646f1f8995aaeff82816b862ec586ecd" +dependencies = [ + "dioxus-core 0.5.6", + "dioxus-core-macro 0.5.6", + "dioxus-hooks 0.5.6", + "dioxus-html 0.5.6", + "dioxus-rsx 0.5.6", + "dioxus-signals 0.5.7", +] + +[[package]] +name = "dioxus-lib" +version = "0.6.0-alpha.2" +source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" dependencies = [ - "dioxus-core 0.5.2", - "dioxus-core-macro 0.5.2", - "dioxus-hooks 0.5.2", - "dioxus-html 0.5.2", - "dioxus-rsx 0.5.2", - "dioxus-signals 0.5.2", + "dioxus-config-macro 0.6.0-alpha.2", + "dioxus-core 0.6.0-alpha.2", + "dioxus-core-macro 0.6.0-alpha.2", + "dioxus-hooks 0.6.0-alpha.2", + "dioxus-html 0.6.0-alpha.2", + "dioxus-rsx 0.6.0-alpha.2", + "dioxus-signals 0.6.0-alpha.2", ] [[package]] name = "dioxus-liveview" -version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" +version = "0.6.0-alpha.2" +source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" dependencies = [ "axum", - "dioxus-cli-config", - "dioxus-core 0.5.2", - "dioxus-hot-reload 0.5.2", - "dioxus-html 0.5.2", + "dioxus-cli-config 0.6.0-alpha.2", + "dioxus-core 0.6.0-alpha.2", + "dioxus-hot-reload 0.6.0-alpha.2", + "dioxus-html 0.6.0-alpha.2", "dioxus-interpreter-js", "futures-channel", "futures-util", - "generational-box 0.5.2", + "generational-box 0.6.0-alpha.2", "rustc-hash", "serde", "serde_json", @@ -1587,50 +1629,36 @@ name = "dioxus-material-icons" version = "1.1.0" source = "git+https://github.com/ealmloff/dioxus-material-icons#a44cae403aa2932c68c19ebe064300acac83e29b" dependencies = [ - "dioxus-lib", -] - -[[package]] -name = "dioxus-native-core" -version = "0.5.0-alpha.2" -source = "git+https://github.com/dioxuslabs/blitz#c28de2c3d7a30e0a1105670f34d6859889b765a4" -dependencies = [ - "anymap 1.0.0-beta.2", - "dashmap", - "dioxus-core 0.5.2", - "keyboard-types", - "lightningcss", - "parking_lot", - "rustc-hash", - "shipyard", - "smallvec", - "taffy", + "dioxus-lib 0.5.6", ] [[package]] -name = "dioxus-native-core-macro" -version = "0.5.0-alpha.2" -source = "git+https://github.com/dioxuslabs/blitz#c28de2c3d7a30e0a1105670f34d6859889b765a4" +name = "dioxus-router" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c235c5dbeb528c0c2b0424763da812e7500df69b82eddac54db6f4975e065c5f" dependencies = [ - "quote", - "syn 2.0.65", + "dioxus-cli-config 0.5.6", + "dioxus-lib 0.5.6", + "dioxus-router-macro 0.5.6", + "tracing", + "url", + "urlencoding", ] [[package]] name = "dioxus-router" -version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" +version = "0.6.0-alpha.2" +source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" dependencies = [ - "dioxus-cli-config", + "dioxus-cli-config 0.6.0-alpha.2", "dioxus-fullstack", - "dioxus-lib", - "dioxus-router-macro", - "dioxus-ssr", + "dioxus-lib 0.6.0-alpha.2", + "dioxus-router-macro 0.6.0-alpha.2", "gloo", "gloo-utils 0.1.7", - "http 1.1.0", "js-sys", - "tokio", + "rustversion", "tracing", "url", "urlencoding", @@ -1640,13 +1668,25 @@ dependencies = [ [[package]] name = "dioxus-router-macro" -version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e7cd1c5137ba361f2150cdea6b3bc9ddda7b1af84b22c9ee6b5499bf43e1381" +dependencies = [ + "proc-macro2", + "quote", + "slab", + "syn 2.0.74", +] + +[[package]] +name = "dioxus-router-macro" +version = "0.6.0-alpha.2" +source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" dependencies = [ "proc-macro2", "quote", "slab", - "syn 2.0.65", + "syn 2.0.74", ] [[package]] @@ -1656,21 +1696,37 @@ source = "git+https://github.com/DioxusLabs/dioxus?rev=53343bf#53343bfd194300c33 dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.74", "tracing", ] [[package]] name = "dioxus-rsx" -version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15c400bc8a779107d8f3a67b14375db07dbd2bc31163bf085a8e9097f36f7179" dependencies = [ - "dioxus-core 0.5.2", + "dioxus-core 0.5.6", "internment", "krates", "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.74", + "tracing", +] + +[[package]] +name = "dioxus-rsx" +version = "0.6.0-alpha.2" +source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" +dependencies = [ + "dioxus-core 0.6.0-alpha.2", + "internment", + "proc-macro2", + "proc-macro2-diagnostics", + "quote", + "serde", + "syn 2.0.74", "tracing", ] @@ -1680,7 +1736,7 @@ version = "0.1.0" source = "git+https://github.com/dioxuslabs/dioxus-search#589d2a944bf6bdca4ab092af716f4bd4ecc499e6" dependencies = [ "bytes", - "dioxus-router", + "dioxus-router 0.5.6", "dioxus-search-macro", "dioxus-search-shared", "getrandom 0.2.15", @@ -1699,7 +1755,7 @@ version = "0.1.0" source = "git+https://github.com/dioxuslabs/dioxus-search#589d2a944bf6bdca4ab092af716f4bd4ecc499e6" dependencies = [ "quote", - "syn 2.0.65", + "syn 2.0.74", ] [[package]] @@ -1708,7 +1764,7 @@ version = "0.1.0" source = "git+https://github.com/dioxuslabs/dioxus-search#589d2a944bf6bdca4ab092af716f4bd4ecc499e6" dependencies = [ "bytes", - "dioxus-router", + "dioxus-router 0.5.6", "getrandom 0.2.15", "log", "scraper", @@ -1725,11 +1781,27 @@ name = "dioxus-signals" version = "0.4.3" source = "git+https://github.com/DioxusLabs/dioxus?rev=53343bf#53343bfd194300c3336e90d9b5e24d50da9c1637" dependencies = [ - "dioxus-core 0.4.3", - "flume", + "dioxus-core 0.4.3", + "flume", + "futures-channel", + "futures-util", + "generational-box 0.4.3", + "once_cell", + "parking_lot", + "rustc-hash", + "tracing", +] + +[[package]] +name = "dioxus-signals" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e3e224cd3d3713f159f0199fc088c292a0f4adb94996b48120157f6a8f8342d" +dependencies = [ + "dioxus-core 0.5.6", "futures-channel", "futures-util", - "generational-box 0.4.3", + "generational-box 0.5.6", "once_cell", "parking_lot", "rustc-hash", @@ -1738,31 +1810,33 @@ dependencies = [ [[package]] name = "dioxus-signals" -version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" +version = "0.6.0-alpha.2" +source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" dependencies = [ - "dioxus-core 0.5.2", + "dioxus-core 0.6.0-alpha.2", "futures-channel", "futures-util", - "generational-box 0.5.2", + "generational-box 0.6.0-alpha.2", "once_cell", "parking_lot", "rustc-hash", "tracing", + "warnings", ] [[package]] name = "dioxus-ssr" -version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" +version = "0.6.0-alpha.2" +source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" dependencies = [ "askama_escape", "async-trait", "chrono", - "dioxus-cli-config", - "dioxus-core 0.5.2", - "dioxus-html 0.5.2", - "generational-box 0.5.2", + "dioxus-cli-config 0.6.0-alpha.2", + "dioxus-core 0.6.0-alpha.2", + "dioxus-html 0.6.0-alpha.2", + "dioxus-interpreter-js", + "generational-box 0.6.0-alpha.2", "http 1.1.0", "lru", "rustc-hash", @@ -1774,15 +1848,15 @@ dependencies = [ [[package]] name = "dioxus-static-site-generation" -version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" +version = "0.6.0-alpha.2" +source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" dependencies = [ "axum", - "dioxus-cli-config", + "dioxus-cli-config 0.6.0-alpha.2", "dioxus-fullstack", - "dioxus-hot-reload 0.5.2", - "dioxus-lib", - "dioxus-router", + "dioxus-hot-reload 0.6.0-alpha.2", + "dioxus-lib 0.6.0-alpha.2", + "dioxus-router 0.6.0-alpha.2", "dioxus-ssr", "dioxus-web", "http 1.1.0", @@ -1806,36 +1880,21 @@ dependencies = [ "uuid", ] -[[package]] -name = "dioxus-tui" -version = "0.5.0-alpha.2" -source = "git+https://github.com/dioxuslabs/blitz#c28de2c3d7a30e0a1105670f34d6859889b765a4" -dependencies = [ - "crossterm 0.26.1", - "dioxus-core 0.5.2", - "dioxus-hot-reload 0.5.2", - "dioxus-html 0.5.2", - "dioxus-native-core", - "dioxus-native-core-macro", - "futures", - "plasmo", - "taffy", - "tokio", -] - [[package]] name = "dioxus-web" -version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" +version = "0.6.0-alpha.2" +source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" dependencies = [ - "async-trait", + "ciborium", "console_error_panic_hook", - "dioxus-core 0.5.2", - "dioxus-html 0.5.2", + "dioxus-core 0.6.0-alpha.2", + "dioxus-hot-reload 0.6.0-alpha.2", + "dioxus-html 0.6.0-alpha.2", "dioxus-interpreter-js", + "dioxus-signals 0.6.0-alpha.2", "futures-channel", "futures-util", - "generational-box 0.5.2", + "generational-box 0.6.0-alpha.2", "js-sys", "rustc-hash", "serde", @@ -1858,17 +1917,14 @@ dependencies = [ "axum", "chrono", "console_error_panic_hook", - "dioxus 0.5.2", + "dioxus 0.6.0-alpha.2", "dioxus-desktop", "dioxus-fullstack", "dioxus-liveview", "dioxus-material-icons", - "dioxus-native-core", - "dioxus-native-core-macro", "dioxus-search", "dioxus-ssr", "dioxus-std", - "dioxus-tui", "dioxus-web", "form_urlencoded", "fs_extra", @@ -1881,12 +1937,12 @@ dependencies = [ "include_dir", "js-sys", "log", - "manganis", + "manganis 0.3.0-alpha.1 (git+https://github.com/DioxusLabs/collect-assets)", "mdbook-shared", "once_cell", "pretty_assertions", "rand 0.8.5", - "reqwest", + "reqwest 0.11.27", "serde", "serde_json", "shipyard", @@ -1905,14 +1961,14 @@ dependencies = [ [[package]] name = "dioxus_server_macro" -version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" +version = "0.6.0-alpha.2" +source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" dependencies = [ "convert_case 0.6.0", "proc-macro2", "quote", "server_fn_macro", - "syn 2.0.65", + "syn 2.0.74", ] [[package]] @@ -1923,13 +1979,13 @@ checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" [[package]] name = "displaydoc" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.74", ] [[package]] @@ -1952,9 +2008,15 @@ checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.74", ] +[[package]] +name = "dpi" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53" + [[package]] name = "dtoa" version = "1.0.9" @@ -1963,18 +2025,18 @@ checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" [[package]] name = "dtoa-short" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbaceec3c6e4211c79e7b1800fb9680527106beb2f9c51904a3210c03a448c74" +checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" dependencies = [ "dtoa", ] [[package]] name = "dunce" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "ego-tree" @@ -1984,9 +2046,9 @@ checksum = "3a68a4904193147e0a8dec3314640e6db742afd5f6e634f428a6af230d9b3591" [[package]] name = "either" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "embedded-io" @@ -2017,9 +2079,9 @@ checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" [[package]] name = "enumflags2" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3278c9d5fb675e0a51dabcf4c0d355f692b064171535ba72361be1528a9d8e8d" +checksum = "d232db7f5956f3f14313dc2f87985c58bd2c695ce124c8cdd984e08e15ac133d" dependencies = [ "enumflags2_derive", "serde", @@ -2027,34 +2089,34 @@ dependencies = [ [[package]] name = "enumflags2_derive" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c785274071b1b420972453b306eeca06acf4633829db4223b58a2a8c5953bc4" +checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.74", ] [[package]] name = "enumset" -version = "1.1.3" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "226c0da7462c13fb57e5cc9e0dc8f0635e7d27f276a3a7fd30054647f669007d" +checksum = "d07a4b049558765cef5f0c1a273c3fc57084d768b44d2f98127aef4cceb17293" dependencies = [ "enumset_derive", ] [[package]] name = "enumset_derive" -version = "0.8.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08b6c6ab82d70f08844964ba10c7babb716de2ecaeab9be5717918a5177d3af" +checksum = "59c3b24c345d8c314966bdc1832f6c2635bfcce8e7cf363bd115987bba2ee242" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.74", ] [[package]] @@ -2085,83 +2147,25 @@ dependencies = [ [[package]] name = "event-listener" -version = "4.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - -[[package]] -name = "event-listener" -version = "5.3.0" +version = "5.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d9944b8ca13534cdfb2800775f8dd4902ff3fc75a50101466decadfdf322a24" +checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" dependencies = [ "concurrent-queue", "parking", "pin-project-lite", ] -[[package]] -name = "event-listener-strategy" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" -dependencies = [ - "event-listener 4.0.3", - "pin-project-lite", -] - [[package]] name = "event-listener-strategy" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" dependencies = [ - "event-listener 5.3.0", + "event-listener", "pin-project-lite", ] -[[package]] -name = "execute" -version = "0.2.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a82608ee96ce76aeab659e9b8d3c2b787bffd223199af88c674923d861ada10" -dependencies = [ - "execute-command-macro", - "execute-command-tokens", - "generic-array 1.0.0", -] - -[[package]] -name = "execute-command-macro" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90dec53d547564e911dc4ff3ecb726a64cf41a6fa01a2370ebc0d95175dd08bd" -dependencies = [ - "execute-command-macro-impl", -] - -[[package]] -name = "execute-command-macro-impl" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce8cd46a041ad005ab9c71263f9a0ff5b529eac0fe4cc9b4a20f4f0765d8cf4b" -dependencies = [ - "execute-command-tokens", - "quote", - "syn 2.0.65", -] - -[[package]] -name = "execute-command-tokens" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69dc321eb6be977f44674620ca3aa21703cb20ffbe560e1ae97da08401ffbcad" - [[package]] name = "fastrand" version = "2.1.0" @@ -2187,18 +2191,6 @@ dependencies = [ "rustc_version", ] -[[package]] -name = "filetime" -version = "0.2.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall 0.4.1", - "windows-sys 0.52.0", -] - [[package]] name = "fixedbitset" version = "0.4.2" @@ -2207,9 +2199,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.30" +version = "1.0.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" +checksum = "7f211bbe8e69bbd0cfdea405084f128ae8b4aaa6b0b522fc8f2b009084797920" dependencies = [ "crc32fast", "miniz_oxide", @@ -2259,7 +2251,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.74", ] [[package]] @@ -2298,21 +2290,6 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" -[[package]] -name = "fsevent-sys" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2" -dependencies = [ - "libc", -] - -[[package]] -name = "funty" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" - [[package]] name = "futf" version = "0.1.5" @@ -2392,7 +2369,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.74", ] [[package]] @@ -2543,29 +2520,29 @@ dependencies = [ [[package]] name = "generational-box" -version = "0.5.2" -source = "git+https://github.com/dioxuslabs/dioxus#1eb90bf43aa9eb2408a77717af81b020a34bb1fb" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "557cf2cbacd0504c6bf8c29f52f8071e0de1d9783346713dc6121d7fa1e5d0e0" dependencies = [ "parking_lot", ] [[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +name = "generational-box" +version = "0.6.0-alpha.2" +source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" dependencies = [ - "typenum", - "version_check", + "parking_lot", ] [[package]] name = "generic-array" -version = "1.0.0" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe739944a5406424e080edccb6add95685130b9f160d5407c639c7df0c5836b0" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", + "version_check", ] [[package]] @@ -2603,9 +2580,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.1" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" [[package]] name = "gio" @@ -2639,13 +2616,26 @@ dependencies = [ "winapi", ] +[[package]] +name = "git2" +version = "0.18.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "232e6a7bfe35766bf715e55a88b39a700596c0ccfd88cd3680b4cdb40d66ef70" +dependencies = [ + "bitflags 2.6.0", + "libc", + "libgit2-sys", + "log", + "url", +] + [[package]] name = "glib" version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "futures-channel", "futures-core", "futures-executor", @@ -2669,11 +2659,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" dependencies = [ "heck 0.4.1", - "proc-macro-crate 2.0.0", + "proc-macro-crate 2.0.2", "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.74", ] [[package]] @@ -2688,11 +2678,11 @@ dependencies = [ [[package]] name = "global-hotkey" -version = "0.5.3" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daf13ae557ac61fa8f6fa949c33616e9680f0f04a9dd0195cd210770ba643f1a" +checksum = "b436093d1598b05e3b7fddc097b2bad32763f53a1beb25ab6f9718c6a60acd09" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cocoa", "crossbeam-channel", "keyboard-types", @@ -2703,19 +2693,6 @@ dependencies = [ "x11-dl", ] -[[package]] -name = "globset" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1" -dependencies = [ - "aho-corasick", - "bstr", - "log", - "regex-automata", - "regex-syntax", -] - [[package]] name = "gloo" version = "0.8.1" @@ -2929,12 +2906,6 @@ dependencies = [ "system-deps", ] -[[package]] -name = "grid" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eec1c01eb1de97451ee0d60de7d81cf1e72aabefb021616027f3d1c3ec1c723c" - [[package]] name = "gtk" version = "0.18.1" @@ -2984,7 +2955,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.74", ] [[package]] @@ -2999,7 +2970,26 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.2.6", + "indexmap 2.3.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "h2" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.1.0", + "indexmap 2.3.0", "slab", "tokio", "tokio-util", @@ -3076,6 +3066,12 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + [[package]] name = "hex" version = "0.4.3" @@ -3154,9 +3150,9 @@ dependencies = [ [[package]] name = "http-body" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", "http 1.1.0", @@ -3164,14 +3160,14 @@ dependencies = [ [[package]] name = "http-body-util" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", - "futures-core", + "futures-util", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "pin-project-lite", ] @@ -3183,9 +3179,9 @@ checksum = "08a397c49fec283e3d6211adbe480be95aae5f304cfb923e9970e08956d5168a" [[package]] name = "httparse" -version = "1.8.0" +version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" +checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" [[package]] name = "httpdate" @@ -3195,15 +3191,15 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "0.14.28" +version = "0.14.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" +checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" dependencies = [ "bytes", "futures-channel", "futures-core", "futures-util", - "h2", + "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", "httparse", @@ -3219,21 +3215,40 @@ dependencies = [ [[package]] name = "hyper" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d" +checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" dependencies = [ "bytes", "futures-channel", "futures-util", + "h2 0.4.5", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "httparse", "httpdate", "itoa 1.0.11", "pin-project-lite", "smallvec", "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" +dependencies = [ + "futures-util", + "http 1.1.0", + "hyper 1.4.1", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", ] [[package]] @@ -3243,26 +3258,46 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ "bytes", - "hyper 0.14.28", + "hyper 0.14.30", + "native-tls", + "tokio", + "tokio-native-tls", +] + +[[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 1.4.1", + "hyper-util", "native-tls", "tokio", "tokio-native-tls", + "tower-service", ] [[package]] name = "hyper-util" -version = "0.1.3" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa" +checksum = "cde7055719c54e36e95e8719f95883f22072a48ede39db7fc17a4e1d5281e9b9" dependencies = [ "bytes", + "futures-channel", "futures-util", "http 1.1.0", - "http-body 1.0.0", - "hyper 1.3.1", + "http-body 1.0.1", + "hyper 1.4.1", "pin-project-lite", "socket2", "tokio", + "tower", + "tower-service", + "tracing", ] [[package]] @@ -3304,36 +3339,20 @@ dependencies = [ "unicode-normalization", ] -[[package]] -name = "ignore" -version = "0.4.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b46810df39e66e925525d6e38ce1e7f6e1d208f72dc39757880fcb66e2c58af1" -dependencies = [ - "crossbeam-deque", - "globset", - "log", - "memchr", - "regex-automata", - "same-file", - "walkdir", - "winapi-util", -] - [[package]] name = "include_dir" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18762faeff7122e89e0857b02f7ce6fcc0d101d5e9ad2ad7846cc01d61b7f19e" +checksum = "923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd" dependencies = [ "include_dir_macros", ] [[package]] name = "include_dir_macros" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f" +checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75" dependencies = [ "proc-macro2", "quote", @@ -3351,9 +3370,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.6" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "de3fc2e30ba82dd1b3911c8de1ffc143c74a914a14e99514d7637e3099df5ea0" dependencies = [ "equivalent", "hashbrown 0.14.5", @@ -3371,12 +3390,6 @@ dependencies = [ "regex", ] -[[package]] -name = "indoc" -version = "2.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" - [[package]] name = "infer" version = "0.11.0" @@ -3386,26 +3399,6 @@ dependencies = [ "cfb", ] -[[package]] -name = "inotify" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff" -dependencies = [ - "bitflags 1.3.2", - "inotify-sys", - "libc", -] - -[[package]] -name = "inotify-sys" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" -dependencies = [ - "libc", -] - [[package]] name = "instant" version = "0.1.13" @@ -3464,22 +3457,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] -name = "itertools" -version = "0.10.5" +name = "is_terminal_polyfill" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" -dependencies = [ - "either", -] +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "itoa" @@ -3539,43 +3520,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" [[package]] -name = "js-sys" -version = "0.3.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "keyboard-types" -version = "0.7.0" +name = "jobserver" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" dependencies = [ - "bitflags 2.5.0", - "serde", - "unicode-segmentation", + "libc", ] [[package]] -name = "kqueue" -version = "1.0.8" +name = "js-sys" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7447f1ca1b7b563588a205fe93dea8df60fd981423a768bc1c0ded35ed147d0c" +checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" dependencies = [ - "kqueue-sys", - "libc", + "wasm-bindgen", ] [[package]] -name = "kqueue-sys" -version = "1.0.4" +name = "keyboard-types" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b" +checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" dependencies = [ - "bitflags 1.3.2", - "libc", + "bitflags 2.6.0", + "serde", + "unicode-segmentation", ] [[package]] @@ -3616,11 +3586,16 @@ dependencies = [ "selectors 0.22.0", ] +[[package]] +name = "lazy-js-bundle" +version = "0.6.0-alpha.2" +source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" + [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" @@ -3628,6 +3603,18 @@ version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +[[package]] +name = "libgit2-sys" +version = "0.16.2+1.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee4126d8b4ee5c9d9ea891dd875cfdc1e9d0950437179104b183d7d8a74d24e8" +dependencies = [ + "cc", + "libc", + "libz-sys", + "pkg-config", +] + [[package]] name = "libxdo" version = "0.6.0" @@ -3648,37 +3635,17 @@ dependencies = [ ] [[package]] -name = "lightningcss" -version = "1.0.0-alpha.56" +name = "libz-sys" +version = "1.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668e9f1774a4dda9e2233ad0f78c6987878bcf4201d2085bc3517a7f84d0ee92" +checksum = "fdc53a7799a7496ebc9fd29f31f7df80e83c9bda5299768af5f9e59eeea74647" dependencies = [ - "ahash 0.8.11", - "bitflags 2.5.0", - "const-str", - "cssparser 0.33.0", - "cssparser-color", - "dashmap", - "data-encoding", - "getrandom 0.2.15", - "indexmap 2.2.6", - "itertools 0.10.5", - "lazy_static", - "parcel_selectors", - "parcel_sourcemap", - "paste", - "pathdiff", - "rayon", - "serde", - "smallvec", + "cc", + "libc", + "pkg-config", + "vcpkg", ] -[[package]] -name = "line-wrap" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd1bc4d24ad230d21fb898d1116b1801d7adfc449d42026475862ab48b11e70e" - [[package]] name = "linked-hash-map" version = "0.5.6" @@ -3703,9 +3670,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.21" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "longest-increasing-subsequence" @@ -3715,9 +3682,9 @@ checksum = "b3bd0dd2cd90571056fdb71f6275fada10131182f84899f4b2a916e565d81d86" [[package]] name = "lru" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc" +checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904" dependencies = [ "hashbrown 0.14.5", ] @@ -3761,23 +3728,67 @@ dependencies = [ [[package]] name = "manganis" -version = "0.2.2" -source = "git+https://github.com/DioxusLabs/collect-assets#6b18971a61d2945da2524dd93bc946b252dbaaac" +version = "0.3.0-alpha.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10870c8dbbfa53eaad99e7cc0689de6f2033d8769e02df28cb681b437e159473" +dependencies = [ + "manganis-macro 0.3.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "manganis" +version = "0.3.0-alpha.1" +source = "git+https://github.com/DioxusLabs/collect-assets#00b8a5c0d1b2101b52998a577d383b436818dba0" dependencies = [ - "dioxus-core 0.5.2", - "manganis-macro", + "manganis-macro 0.3.0-alpha.1 (git+https://github.com/DioxusLabs/collect-assets)", ] [[package]] name = "manganis-common" -version = "0.2.4" -source = "git+https://github.com/DioxusLabs/collect-assets#6b18971a61d2945da2524dd93bc946b252dbaaac" +version = "0.3.0-alpha.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9be0dd0eaf5ce21947bcc38131d7934a1f573b76e6e44fe9e401cb27dcb33cf" +dependencies = [ + "anyhow", + "base64 0.21.7", + "built", + "home", + "infer", + "reqwest 0.12.5", + "serde", + "toml 0.7.8", + "tracing", + "url", +] + +[[package]] +name = "manganis-common" +version = "0.3.0-alpha.1" +source = "git+https://github.com/DioxusLabs/collect-assets#00b8a5c0d1b2101b52998a577d383b436818dba0" +dependencies = [ + "anyhow", + "base64 0.21.7", + "built", + "home", + "infer", + "reqwest 0.12.5", + "serde", + "toml 0.7.8", + "tracing", + "url", +] + +[[package]] +name = "manganis-common" +version = "0.3.0-alpha.1" +source = "git+https://github.com/DioxusLabs/manganis#00b8a5c0d1b2101b52998a577d383b436818dba0" dependencies = [ "anyhow", - "base64", + "base64 0.21.7", + "built", "home", "infer", - "reqwest", + "reqwest 0.12.5", "serde", "toml 0.7.8", "tracing", @@ -3786,13 +3797,28 @@ dependencies = [ [[package]] name = "manganis-macro" -version = "0.2.2" -source = "git+https://github.com/DioxusLabs/collect-assets#6b18971a61d2945da2524dd93bc946b252dbaaac" +version = "0.3.0-alpha.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ca00f3c266ba409900d32707f4bc66a60fbb707cf9d4d8d44d8e265c431c149" +dependencies = [ + "manganis-common 0.3.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "serde_json", + "syn 2.0.74", + "tracing-subscriber", +] + +[[package]] +name = "manganis-macro" +version = "0.3.0-alpha.1" +source = "git+https://github.com/DioxusLabs/collect-assets#00b8a5c0d1b2101b52998a577d383b436818dba0" dependencies = [ - "manganis-common", + "manganis-common 0.3.0-alpha.1 (git+https://github.com/DioxusLabs/collect-assets)", "proc-macro2", "quote", - "syn 2.0.65", + "serde_json", + "syn 2.0.74", "tracing-subscriber", ] @@ -3836,22 +3862,16 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" -[[package]] -name = "md5" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" - [[package]] name = "mdbook-macro" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/include_mdbook#8ebd1e08c95b5a188c277980bbd876dd3ea59719" +source = "git+https://github.com/dioxuslabs/include_mdbook#e187fbda66d5db03ec3fecc50e4b453cc30fe6d1" dependencies = [ "anyhow", "convert_case 0.6.0", - "dioxus-rsx 0.5.2", + "dioxus-rsx 0.5.6", "macro_state", - "manganis-common", + "manganis-common 0.3.0-alpha.1 (git+https://github.com/DioxusLabs/manganis)", "mdbook-shared", "postcard", "proc-macro2", @@ -3859,14 +3879,14 @@ dependencies = [ "quote", "serde", "serde_json", - "syn 2.0.65", + "syn 2.0.74", "syntect", ] [[package]] name = "mdbook-shared" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/include_mdbook#8ebd1e08c95b5a188c277980bbd876dd3ea59719" +source = "git+https://github.com/dioxuslabs/include_mdbook#e187fbda66d5db03ec3fecc50e4b453cc30fe6d1" dependencies = [ "anyhow", "bytes", @@ -3882,9 +3902,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.2" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memoffset" @@ -3903,9 +3923,9 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mime_guess" -version = "2.0.4" +version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" dependencies = [ "mime", "unicase", @@ -3913,9 +3933,9 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" dependencies = [ "adler", "simd-adler32", @@ -3923,14 +3943,14 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.11" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" dependencies = [ + "hermit-abi 0.3.9", "libc", - "log", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -3970,11 +3990,10 @@ dependencies = [ [[package]] name = "native-tls" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" dependencies = [ - "lazy_static", "libc", "log", "openssl", @@ -4023,13 +4042,12 @@ checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" [[package]] name = "nix" -version = "0.28.0" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" +checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cfg-if", - "cfg_aliases", "libc", "memoffset", ] @@ -4040,24 +4058,6 @@ version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" -[[package]] -name = "notify" -version = "5.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "729f63e1ca555a43fe3efa4f3efdf4801c479da85b432242a7b726f353c88486" -dependencies = [ - "bitflags 1.3.2", - "crossbeam-channel", - "filetime", - "fsevent-sys", - "inotify", - "kqueue", - "libc", - "mio", - "walkdir", - "windows-sys 0.45.0", -] - [[package]] name = "nu-ansi-term" version = "0.46.0" @@ -4093,16 +4093,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi", - "libc", -] - [[package]] name = "num_enum" version = "0.5.11" @@ -4180,9 +4170,9 @@ dependencies = [ [[package]] name = "object" -version = "0.32.2" +version = "0.36.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +checksum = "27b64972346851a39438c60b341ebc01bba47464ae329e55cf343eb93964efd9" dependencies = [ "memchr", ] @@ -4217,11 +4207,11 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.64" +version = "0.10.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" +checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cfg-if", "foreign-types 0.3.2", "libc", @@ -4238,7 +4228,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.74", ] [[package]] @@ -4249,9 +4239,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.102" +version = "0.9.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" +checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" dependencies = [ "cc", "libc", @@ -4278,12 +4268,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "outref" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f222829ae9293e33a9f5e9f440c6760a3d450a64affe1846486b140db81c1f4" - [[package]] name = "overload" version = "0.1.1" @@ -4315,36 +4299,6 @@ dependencies = [ "system-deps", ] -[[package]] -name = "parcel_selectors" -version = "0.26.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce9c47a67c66fee4a5a42756f9784d92941bd0ab2b653539a9e90521a44b66f0" -dependencies = [ - "bitflags 2.5.0", - "cssparser 0.33.0", - "fxhash", - "log", - "phf 0.10.1", - "phf_codegen 0.10.0", - "precomputed-hash", - "smallvec", -] - -[[package]] -name = "parcel_sourcemap" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "485b74d7218068b2b7c0e3ff12fbc61ae11d57cb5d8224f525bd304c6be05bbb" -dependencies = [ - "base64-simd", - "data-url", - "rkyv", - "serde", - "serde_json", - "vlq", -] - [[package]] name = "parking" version = "2.2.0" @@ -4353,9 +4307,9 @@ checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" [[package]] name = "parking_lot" -version = "0.12.2" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e4af0ca4f6caed20e900d564c242b8e5d4903fdacf31d3daf527b66fe6f42fb" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", "parking_lot_core", @@ -4369,9 +4323,9 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.1", + "redox_syscall", "smallvec", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -4380,12 +4334,6 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" -[[package]] -name = "pathdiff" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" - [[package]] name = "percent-encoding" version = "2.3.1" @@ -4399,7 +4347,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.2.6", + "indexmap 2.3.0", ] [[package]] @@ -4506,7 +4454,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.74", ] [[package]] @@ -4553,7 +4501,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.74", ] [[package]] @@ -4570,9 +4518,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "piper" -version = "0.2.2" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "464db0c665917b13ebb5d453ccdec4add5658ee1adc7affc7677615356a8afaf" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" dependencies = [ "atomic-waker", "fastrand", @@ -4585,37 +4533,14 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" -[[package]] -name = "plasmo" -version = "0.5.0-alpha.2" -source = "git+https://github.com/dioxuslabs/blitz#c28de2c3d7a30e0a1105670f34d6859889b765a4" -dependencies = [ - "anyhow", - "anymap 1.0.0-beta.2", - "crossterm 0.26.1", - "dioxus-html 0.5.2", - "dioxus-native-core", - "dioxus-native-core-macro", - "futures", - "futures-channel", - "once_cell", - "ratatui", - "rustc-hash", - "shipyard", - "smallvec", - "taffy", - "tokio", -] - [[package]] name = "plist" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9d34169e64b3c7a80c8621a48adaf44e0cf62c78a9b25dd9dd35f1881a17cf9" +checksum = "42cf17e9a1800f5f396bc67d193dc9411b59012a5876445ef450d449881e1016" dependencies = [ - "base64", - "indexmap 2.2.6", - "line-wrap", + "base64 0.22.1", + "indexmap 2.3.0", "quick-xml", "serde", "time", @@ -4636,17 +4561,17 @@ dependencies = [ [[package]] name = "polling" -version = "3.7.0" +version = "3.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645493cf344456ef24219d02a768cf1fb92ddf8c92161679ae3d91b91a637be3" +checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511" dependencies = [ "cfg-if", "concurrent-queue", - "hermit-abi", + "hermit-abi 0.4.0", "pin-project-lite", "rustix", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -4675,9 +4600,12 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "precomputed-hash" @@ -4702,7 +4630,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" dependencies = [ "proc-macro2", - "syn 2.0.65", + "syn 2.0.74", ] [[package]] @@ -4717,20 +4645,12 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8" -dependencies = [ - "toml_edit 0.20.7", -] - -[[package]] -name = "proc-macro-crate" -version = "3.1.0" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24" dependencies = [ - "toml_edit 0.21.1", + "toml_datetime", + "toml_edit 0.20.2", ] [[package]] @@ -4765,31 +4685,23 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.83" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b33eb56c327dec362a9e55b3ad14f9d2f0904fb5a5b03b513ab5465399e9f43" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] -name = "ptr_meta" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" -dependencies = [ - "ptr_meta_derive", -] - -[[package]] -name = "ptr_meta_derive" -version = "0.1.4" +name = "proc-macro2-diagnostics" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" +checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.74", + "version_check", ] [[package]] @@ -4798,7 +4710,7 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57206b407293d2bcd3af849ce869d52068623f19e1b5ff8e8778e3309439682b" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "getopts", "memchr", "unicase", @@ -4806,9 +4718,9 @@ dependencies = [ [[package]] name = "quick-xml" -version = "0.31.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33" +checksum = "1d3a6e5838b60e0e8fa7a43f22ade549a37d61f8bdbe636d0d7816191de969c2" dependencies = [ "memchr", ] @@ -4822,12 +4734,6 @@ dependencies = [ "proc-macro2", ] -[[package]] -name = "radium" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" - [[package]] name = "rand" version = "0.7.3" @@ -4909,24 +4815,6 @@ dependencies = [ "rand_core 0.5.1", ] -[[package]] -name = "ratatui" -version = "0.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ebc917cfb527a566c37ecb94c7e3fd098353516fb4eb6bea17015ade0182425" -dependencies = [ - "bitflags 2.5.0", - "cassowary", - "crossterm 0.27.0", - "indoc", - "itertools 0.11.0", - "lru", - "paste", - "strum", - "unicode-segmentation", - "unicode-width", -] - [[package]] name = "raw-window-handle" version = "0.5.2" @@ -4961,27 +4849,18 @@ dependencies = [ [[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.1" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", ] [[package]] name = "regex" -version = "1.10.4" +version = "1.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" dependencies = [ "aho-corasick", "memchr", @@ -4991,9 +4870,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" dependencies = [ "aho-corasick", "memchr", @@ -5002,18 +4881,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" - -[[package]] -name = "rend" -version = "0.4.2" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" -dependencies = [ - "bytecheck", -] +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "reqwest" @@ -5021,25 +4891,26 @@ version = "0.11.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" dependencies = [ - "base64", + "base64 0.21.7", "bytes", "encoding_rs", "futures-core", "futures-util", - "h2", + "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.28", - "hyper-tls", + "hyper 0.14.30", + "hyper-tls 0.5.0", "ipnet", "js-sys", "log", "mime", + "mime_guess", "native-tls", "once_cell", "percent-encoding", "pin-project-lite", - "rustls-pemfile", + "rustls-pemfile 1.0.4", "serde", "serde_json", "serde_urlencoded", @@ -5047,12 +4918,58 @@ dependencies = [ "system-configuration", "tokio", "tokio-native-tls", + "tokio-util", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "winreg 0.50.0", +] + +[[package]] +name = "reqwest" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7d6d2a27d57148378eb5e111173f4276ad26340ecc5c49a4a2152167a2d6a37" +dependencies = [ + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.4.5", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.4.1", + "hyper-rustls", + "hyper-tls 0.6.0", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls-pemfile 2.1.3", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 1.0.1", + "system-configuration", + "tokio", + "tokio-native-tls", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "winreg", + "winreg 0.52.0", ] [[package]] @@ -5079,32 +4996,18 @@ dependencies = [ ] [[package]] -name = "rkyv" -version = "0.7.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cba464629b3394fc4dbc6f940ff8f5b4ff5c7aef40f29166fd4ad12acbc99c0" -dependencies = [ - "bitvec", - "bytecheck", - "bytes", - "hashbrown 0.12.3", - "ptr_meta", - "rend", - "rkyv_derive", - "seahash", - "tinyvec", - "uuid", -] - -[[package]] -name = "rkyv_derive" -version = "0.7.44" +name = "ring" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7dddfff8de25e6f62b9d64e6e432bf1c6736c57d20323e15ee10435fbda7c65" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "cc", + "cfg-if", + "getrandom 0.2.15", + "libc", + "spin", + "untrusted", + "windows-sys 0.52.0", ] [[package]] @@ -5166,20 +5069,60 @@ version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "errno", "libc", "linux-raw-sys", "windows-sys 0.52.0", ] +[[package]] +name = "rustls" +version = "0.23.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" +dependencies = [ + "once_cell", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + [[package]] name = "rustls-pemfile" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ - "base64", + "base64 0.21.7", +] + +[[package]] +name = "rustls-pemfile" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" +dependencies = [ + "base64 0.22.1", + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" + +[[package]] +name = "rustls-webpki" +version = "0.102.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", ] [[package]] @@ -5235,19 +5178,13 @@ dependencies = [ "tendril", ] -[[package]] -name = "seahash" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" - [[package]] name = "security-framework" -version = "2.11.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "core-foundation", "core-foundation-sys", "libc", @@ -5256,9 +5193,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" +checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" dependencies = [ "core-foundation-sys", "libc", @@ -5290,7 +5227,7 @@ version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4eb30575f3638fc8f6815f448d50cb1a2e255b0897985c8c59f4d37b72a07b06" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cssparser 0.31.2", "derive_more", "fxhash", @@ -5323,9 +5260,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.202" +version = "1.0.207" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "226b61a0d411b2ba5ff6d7f73a476ac4f8bb900373459cd00fab8512828ba395" +checksum = "5665e14a49a4ea1b91029ba7d3bca9f299e1f7cfa194388ccc20f14743e784f2" dependencies = [ "serde_derive", ] @@ -5353,22 +5290,23 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.202" +version = "1.0.207" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6048858004bcff69094cd972ed40a32500f153bd3be9f716b2eed2e8217c4838" +checksum = "6aea2634c86b0e8ef2cfdc0c340baede54ec27b1e46febd7f80dffb2aa44a00e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.74", ] [[package]] name = "serde_json" -version = "1.0.117" +version = "1.0.124" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" +checksum = "66ad62847a56b3dba58cc891acd13884b9c61138d330c0d7b6181713d4fce38d" dependencies = [ "itoa 1.0.11", + "memchr", "ryu", "serde", ] @@ -5402,14 +5340,14 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.74", ] [[package]] name = "serde_spanned" -version = "0.6.6" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" +checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" dependencies = [ "serde", ] @@ -5428,9 +5366,9 @@ dependencies = [ [[package]] name = "server_fn" -version = "0.6.11" +version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "536a5b959673643ee01e59ae41bf01425482c8070dee95d7061ee2d45296b59c" +checksum = "e9aaae169927ef701a4734d680adcb08f13269c9f0af822bf175d681fe56d65c" dependencies = [ "axum", "bytes", @@ -5440,10 +5378,11 @@ dependencies = [ "gloo-net 0.5.0", "http 1.1.0", "http-body-util", - "hyper 1.3.1", + "hyper 1.4.1", "inventory", "js-sys", "once_cell", + "reqwest 0.11.27", "send_wrapper", "serde", "serde_json", @@ -5462,26 +5401,26 @@ dependencies = [ [[package]] name = "server_fn_macro" -version = "0.6.11" +version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "064dd9b256e78bf2886774f265cc34d2aefdd05b430c58c78a69eceef21b5e60" +checksum = "583085903fd5d091884eb52d99550e32777015af21f0f5dbec49bedcc320ce82" dependencies = [ "const_format", "convert_case 0.6.0", "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.74", "xxhash-rust", ] [[package]] name = "server_fn_macro_default" -version = "0.6.11" +version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4ad11700cbccdbd313703916eb8c97301ee423c4a06e5421b77956fdcb36a9f" +checksum = "b628649700e28cf8bc33e0df5de5c9d591a1828ba005a25b425477055f1e0e74" dependencies = [ "server_fn_macro", - "syn 2.0.65", + "syn 2.0.74", ] [[package]] @@ -5536,9 +5475,9 @@ dependencies = [ [[package]] name = "shipyard" -version = "0.6.2" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3511ae730f2e1c3d62a9025e2f9b2acbf130968057f1b3caab6d74a54a5e0e56" +checksum = "ace89f5a47029be049c7f47d166cd2c7a30d74e127f4baa2d8885e5d3b486035" dependencies = [ "hashbrown 0.12.3", "lock_api", @@ -5567,17 +5506,6 @@ dependencies = [ "signal-hook-registry", ] -[[package]] -name = "signal-hook-mio" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af" -dependencies = [ - "libc", - "mio", - "signal-hook", -] - [[package]] name = "signal-hook-registry" version = "1.4.2" @@ -5587,27 +5515,12 @@ dependencies = [ "libc", ] -[[package]] -name = "simd-abstraction" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cadb29c57caadc51ff8346233b5cec1d240b68ce55cf1afc764818791876987" -dependencies = [ - "outref", -] - [[package]] name = "simd-adler32" version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" -[[package]] -name = "simdutf8" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" - [[package]] name = "simple_logger" version = "4.3.3" @@ -5647,12 +5560,12 @@ dependencies = [ [[package]] name = "sledgehammer_bindgen_macro" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdd941cc539bd3dc694edaf9d0c4e1221d02baa67c6b45ec04fad1024d9e8139" +checksum = "edc90d3e8623d29a664cd8dba5078b600dd203444f00b9739f744e4c6e7aeaf2" dependencies = [ "quote", - "syn 2.0.65", + "syn 2.0.74", ] [[package]] @@ -5672,6 +5585,7 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" dependencies = [ + "serde", "version_check", ] @@ -5816,26 +5730,16 @@ dependencies = [ ] [[package]] -name = "strum" -version = "0.25.0" +name = "strsim" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" -dependencies = [ - "strum_macros", -] +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] -name = "strum_macros" -version = "0.25.3" +name = "subtle" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" -dependencies = [ - "heck 0.4.1", - "proc-macro2", - "quote", - "rustversion", - "syn 2.0.65", -] +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" @@ -5850,9 +5754,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.65" +version = "2.0.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2863d96a84c6439701d7a38f9de935ec562c8832cc55d1dde0f513b52fad106" +checksum = "1fceb41e3d546d0bd83421d3409b1460cc7444cd389341a4c880fe7a042cb3d7" dependencies = [ "proc-macro2", "quote", @@ -5896,7 +5800,7 @@ dependencies = [ [[package]] name = "syntect-html" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/include_mdbook#8ebd1e08c95b5a188c277980bbd876dd3ea59719" +source = "git+https://github.com/dioxuslabs/include_mdbook#e187fbda66d5db03ec3fecc50e4b453cc30fe6d1" dependencies = [ "proc-macro2", "quote", @@ -5934,22 +5838,10 @@ dependencies = [ "cfg-expr", "heck 0.5.0", "pkg-config", - "toml 0.8.13", + "toml 0.8.2", "version-compare", ] -[[package]] -name = "taffy" -version = "0.3.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1315457ccd9c3def787a18fae91914e623e4dcff019b64ce39f5268ded53d3d" -dependencies = [ - "arrayvec", - "grid", - "num-traits", - "slotmap", -] - [[package]] name = "tao" version = "0.26.2" @@ -5999,28 +5891,23 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" - [[package]] name = "target-lexicon" -version = "0.12.14" +version = "0.12.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" -version = "3.10.1" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" dependencies = [ "cfg-if", "fastrand", + "once_cell", "rustix", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -6042,22 +5929,22 @@ checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" [[package]] name = "thiserror" -version = "1.0.61" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.61" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.74", ] [[package]] @@ -6105,18 +5992,18 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83c02bf3c538ab32ba913408224323915f4ef9a6d61c0e85d493f355921c0ece" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" dependencies = [ "displaydoc", ] [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -6135,32 +6022,32 @@ checksum = "c7c4ceeeca15c8384bbc3e011dbd8fccb7f068a440b752b7d9b32ceb0ca0e2e8" [[package]] name = "tokio" -version = "1.37.0" +version = "1.39.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" +checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1" dependencies = [ "backtrace", "bytes", "libc", "mio", - "num_cpus", "parking_lot", "pin-project-lite", "signal-hook-registry", "socket2", "tokio-macros", - "windows-sys 0.48.0", + "tracing", + "windows-sys 0.52.0", ] [[package]] name = "tokio-macros" -version = "2.2.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.74", ] [[package]] @@ -6173,6 +6060,17 @@ dependencies = [ "tokio", ] +[[package]] +name = "tokio-rustls" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +dependencies = [ + "rustls", + "rustls-pki-types", + "tokio", +] + [[package]] name = "tokio-stream" version = "0.1.15" @@ -6194,7 +6092,22 @@ dependencies = [ "futures-util", "log", "tokio", - "tungstenite", + "tungstenite 0.21.0", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6989540ced10490aaf14e6bad2e3d33728a2813310a0c71d1574304c49631cd" +dependencies = [ + "futures-util", + "log", + "native-tls", + "rustls", + "tokio", + "tokio-native-tls", + "tungstenite 0.23.0", ] [[package]] @@ -6235,21 +6148,21 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.13" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4e43f8cc456c9704c851ae29c67e17ef65d2c30017c17a9765b89c382dc8bba" +checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.13", + "toml_edit 0.20.2", ] [[package]] name = "toml_datetime" -version = "0.6.6" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" dependencies = [ "serde", ] @@ -6260,46 +6173,24 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.3.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.20.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" -dependencies = [ - "indexmap 2.2.6", - "toml_datetime", - "winnow 0.5.40", + "winnow", ] [[package]] name = "toml_edit" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" -dependencies = [ - "indexmap 2.2.6", - "toml_datetime", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.22.13" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c127785850e8c20836d49732ae6abfa47616e60bf9d9f57c43c250361a9db96c" +checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.3.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.8", + "winnow", ] [[package]] @@ -6324,11 +6215,11 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "bytes", "futures-util", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "http-body-util", "http-range-header", "httpdate", @@ -6345,15 +6236,15 @@ dependencies = [ [[package]] name = "tower-layer" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] name = "tower-service" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" @@ -6375,7 +6266,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.74", ] [[package]] @@ -6448,6 +6339,25 @@ dependencies = [ "utf-8", ] +[[package]] +name = "tungstenite" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2e2ce1e47ed2994fd43b04c8f618008d4cabdd5ee34027cf14f9d918edd9c8" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http 1.1.0", + "httparse", + "log", + "native-tls", + "rand 0.8.5", + "sha1", + "thiserror", + "utf-8", +] + [[package]] name = "typenum" version = "1.17.0" @@ -6522,9 +6432,9 @@ checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" [[package]] name = "unicode-width" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f5e5f3158ecfd4b8ff6fe086db7c8467a2dfdac97fe420f2b7c4aa97af66d6" +checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" [[package]] name = "unicode-xid" @@ -6532,11 +6442,17 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + [[package]] name = "url" -version = "2.5.0" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", "idna", @@ -6553,7 +6469,7 @@ checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" [[package]] name = "use-mdbook" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/include_mdbook#8ebd1e08c95b5a188c277980bbd876dd3ea59719" +source = "git+https://github.com/dioxuslabs/include_mdbook#e187fbda66d5db03ec3fecc50e4b453cc30fe6d1" dependencies = [ "lazy_static", "mdbook-macro", @@ -6571,11 +6487,17 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + [[package]] name = "uuid" -version = "1.8.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" +checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" dependencies = [ "getrandom 0.2.15", "wasm-bindgen", @@ -6601,15 +6523,9 @@ checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" [[package]] name = "version_check" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - -[[package]] -name = "vlq" -version = "0.5.1" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65dd7eed29412da847b0f78bcec0ac98588165988a8cfe41d4ea1d429f8ccfff" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "walkdir" @@ -6630,6 +6546,27 @@ dependencies = [ "try-lock", ] +[[package]] +name = "warnings" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0c672c7629eeed21c37d7a96ee9c0287b86a5e29b5730773117e4261d1a73ca" +dependencies = [ + "pin-project", + "warnings-macro", +] + +[[package]] +name = "warnings-macro" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59195a1db0e95b920366d949ba5e0d3fc0e70b67c09be15ce5abb790106b0571" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.74", +] + [[package]] name = "wasi" version = "0.9.0+wasi-snapshot-preview1" @@ -6644,34 +6581,35 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.74", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.42" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" dependencies = [ "cfg-if", "js-sys", @@ -6681,9 +6619,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -6691,22 +6629,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.74", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" [[package]] name = "wasm-logger" @@ -6734,9 +6672,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.69" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" dependencies = [ "js-sys", "wasm-bindgen", @@ -6805,16 +6743,16 @@ dependencies = [ [[package]] name = "webview2-com" -version = "0.28.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0ae9c7e420783826cf769d2c06ac9ba462f450eca5893bb8c6c6529a4e5dd33" +checksum = "6516cfa64c6b3212686080eeec378e662c2af54bb2a5b2a22749673f5cb2226f" dependencies = [ "webview2-com-macros", "webview2-com-sys", - "windows 0.52.0", - "windows-core 0.52.0", - "windows-implement 0.52.0", - "windows-interface 0.52.0", + "windows 0.57.0", + "windows-core 0.57.0", + "windows-implement 0.57.0", + "windows-interface 0.57.0", ] [[package]] @@ -6825,18 +6763,18 @@ checksum = "ac1345798ecd8122468840bcdf1b95e5dc6d2206c5e4b0eafa078d061f59c9bc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.74", ] [[package]] name = "webview2-com-sys" -version = "0.28.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6ad85fceee6c42fa3d61239eba5a11401bf38407a849ed5ea1b407df08cca72" +checksum = "c76d5b77320ff155660be1df3e6588bc85c75f1a9feef938cc4dc4dd60d1d7cf" dependencies = [ "thiserror", - "windows 0.52.0", - "windows-core 0.52.0", + "windows 0.57.0", + "windows-core 0.57.0", ] [[package]] @@ -6857,11 +6795,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -6872,26 +6810,24 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.52.0" +version = "0.54.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" dependencies = [ - "windows-core 0.52.0", - "windows-implement 0.52.0", - "windows-interface 0.52.0", - "windows-targets 0.52.5", + "windows-core 0.54.0", + "windows-implement 0.53.0", + "windows-interface 0.53.0", + "windows-targets 0.52.6", ] [[package]] name = "windows" -version = "0.54.0" +version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" +checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" dependencies = [ - "windows-core 0.54.0", - "windows-implement 0.53.0", - "windows-interface 0.53.0", - "windows-targets 0.52.5", + "windows-core 0.57.0", + "windows-targets 0.52.6", ] [[package]] @@ -6900,7 +6836,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -6910,18 +6846,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" dependencies = [ "windows-result", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] -name = "windows-implement" -version = "0.52.0" +name = "windows-core" +version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12168c33176773b86799be25e2a2ba07c7aab9968b37541f1094dbd7a60c8946" +checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.65", + "windows-implement 0.57.0", + "windows-interface 0.57.0", + "windows-result", + "windows-targets 0.52.6", ] [[package]] @@ -6932,18 +6869,18 @@ checksum = "942ac266be9249c84ca862f0a164a39533dc2f6f33dc98ec89c8da99b82ea0bd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.74", ] [[package]] -name = "windows-interface" -version = "0.52.0" +name = "windows-implement" +version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d8dc32e0095a7eeccebd0e3f09e9509365ecb3fc6ac4d6f5f14a3f6392942d1" +checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.74", ] [[package]] @@ -6954,16 +6891,27 @@ checksum = "da33557140a288fae4e1d5f8873aaf9eb6613a9cf82c3e070223ff177f598b60" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.74", +] + +[[package]] +name = "windows-interface" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.74", ] [[package]] name = "windows-result" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "749f0da9cc72d82e600d8d2e44cadd0b9eedb9038f71a1c58556ac1c5791813b" +checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -6990,7 +6938,16 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.5", + "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]] @@ -7025,18 +6982,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.5", - "windows_aarch64_msvc 0.52.5", - "windows_i686_gnu 0.52.5", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", "windows_i686_gnullvm", - "windows_i686_msvc 0.52.5", - "windows_x86_64_gnu 0.52.5", - "windows_x86_64_gnullvm 0.52.5", - "windows_x86_64_msvc 0.52.5", + "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]] @@ -7045,7 +7002,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6998aa457c9ba8ff2fb9f13e9d2a930dabcea28f1d0ab94d687d8b3654844515" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -7062,9 +7019,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -7080,9 +7037,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -7098,15 +7055,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -7122,9 +7079,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -7140,9 +7097,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -7158,9 +7115,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -7176,9 +7133,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" @@ -7190,19 +7147,20 @@ dependencies = [ ] [[package]] -name = "winnow" -version = "0.6.8" +name = "winreg" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c52e9c97a68071b23e836c9380edae937f17b9c4667bd021973efc689f618d" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" dependencies = [ - "memchr", + "cfg-if", + "windows-sys 0.48.0", ] [[package]] name = "winreg" -version = "0.50.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" dependencies = [ "cfg-if", "windows-sys 0.48.0", @@ -7210,26 +7168,25 @@ dependencies = [ [[package]] name = "wry" -version = "0.37.0" +version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b717040ba9771fd88eb428c6ea6b555f8e734ff8534f02c13e8f10d97f5935e" +checksum = "68b00c945786b02d7805d09a969fa36d0eee4e0bd4fb3ec2a79d2bf45a1b44cd" dependencies = [ - "base64", + "base64 0.22.1", "block", - "cfg_aliases", "cocoa", "core-graphics", "crossbeam-channel", + "dpi", "dunce", "gdkx11", "gtk", "html5ever 0.26.0", - "http 0.2.12", + "http 1.1.0", "javascriptcore-rs", "jni", "kuchikiki", "libc", - "log", "ndk", "ndk-context", "ndk-sys", @@ -7238,8 +7195,6 @@ dependencies = [ "once_cell", "percent-encoding", "raw-window-handle 0.6.2", - "serde", - "serde_json", "sha2", "soup3", "tao-macros", @@ -7247,21 +7202,12 @@ dependencies = [ "webkit2gtk", "webkit2gtk-sys", "webview2-com", - "windows 0.52.0", - "windows-implement 0.52.0", + "windows 0.57.0", + "windows-core 0.57.0", "windows-version", "x11-dl", ] -[[package]] -name = "wyz" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" -dependencies = [ - "tap", -] - [[package]] name = "x11" version = "2.21.0" @@ -7285,19 +7231,19 @@ dependencies = [ [[package]] name = "xdg-home" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21e5a325c3cb8398ad6cf859c1135b25dd29e186679cf2da7581d9679f63b38e" +checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6" dependencies = [ "libc", - "winapi", + "windows-sys 0.59.0", ] [[package]] name = "xxhash-rust" -version = "0.8.10" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927da81e25be1e1a2901d59b81b37dd2efd1fc9c9345a55007f09bf5a2d3ee03" +checksum = "6a5cbf750400958819fb6178eaa83bee5cd9c29a26a40cc241df8c70fdd46984" [[package]] name = "yaml-rust" @@ -7322,22 +7268,17 @@ checksum = "c94451ac9513335b5e23d7a8a2b61a7102398b8cca5160829d313e84c9d98be1" [[package]] name = "zbus" -version = "4.2.2" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "989c3977a7aafa97b12b9a35d21cdcff9b0d2289762b14683f45d66b1ba6c48f" +checksum = "7b8e3d6ae3342792a6cc2340e4394334c7402f3d793b390d2c5494a4032b3030" dependencies = [ "async-broadcast", - "async-executor", - "async-fs", - "async-io", - "async-lock", "async-process", "async-recursion", - "async-task", "async-trait", - "blocking", + "derivative", "enumflags2", - "event-listener 5.3.0", + "event-listener", "futures-core", "futures-sink", "futures-util", @@ -7349,6 +7290,7 @@ dependencies = [ "serde_repr", "sha1", "static_assertions", + "tokio", "tracing", "uds_windows", "windows-sys 0.52.0", @@ -7360,14 +7302,15 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "4.2.2" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fe9de53245dcf426b7be226a4217dd5e339080e5d46e64a02d6e5dcbf90fca1" +checksum = "b7a3e850ff1e7217a3b7a07eba90d37fe9bb9e89a310f718afcde5885ca9b6d7" dependencies = [ - "proc-macro-crate 3.1.0", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.65", + "regex", + "syn 1.0.109", "zvariant_utils", ] @@ -7384,29 +7327,36 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.34" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ + "byteorder", "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.34" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 2.0.74", ] +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" + [[package]] name = "zvariant" -version = "4.1.1" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aa6d31a02fbfb602bfde791de7fedeb9c2c18115b3d00f3a36e489f46ffbbc7" +checksum = "4e09e8be97d44eeab994d752f341e67b3b0d80512a8b315a0671d47232ef1b65" dependencies = [ "endi", "enumflags2", @@ -7418,24 +7368,24 @@ dependencies = [ [[package]] name = "zvariant_derive" -version = "4.1.1" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "642bf1b6b6d527988b3e8193d20969d53700a36eac734d21ae6639db168701c8" +checksum = "72a5857e2856435331636a9fbb415b09243df4521a267c5bedcd5289b4d5799e" dependencies = [ - "proc-macro-crate 3.1.0", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.65", + "syn 1.0.109", "zvariant_utils", ] [[package]] name = "zvariant_utils" -version = "2.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc242db087efc22bd9ade7aa7809e4ba828132edc312871584a6b4391bdf8786" +checksum = "00bedb16a193cc12451873fee2a1bc6550225acece0e36f333e68326c73c8172" dependencies = [ "proc-macro2", "quote", - "syn 2.0.65", + "syn 1.0.109", ] diff --git a/Cargo.toml b/Cargo.toml index 96c2c76fd..b32d92d53 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,13 +15,13 @@ dioxus-web = { git = "https://github.com/dioxuslabs/dioxus", features = [ ], optional = true } dioxus-ssr = { git = "https://github.com/dioxuslabs/dioxus", optional = true } dioxus-fullstack = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-tui = { git = "https://github.com/dioxuslabs/blitz", optional = true } dioxus-desktop = { git = "https://github.com/dioxuslabs/dioxus", optional = true } dioxus-liveview = { git = "https://github.com/dioxuslabs/dioxus", features = [ "axum", ], optional = true } -dioxus-native-core = { git = "https://github.com/dioxuslabs/blitz", optional = true } -dioxus-native-core-macro = { git = "https://github.com/dioxuslabs/blitz", optional = true } +# dioxus-tui = { git = "https://github.com/dioxuslabs/blitz", optional = true } +# dioxus-native-core = { git = "https://github.com/dioxuslabs/blitz", optional = true } +# dioxus-native-core-macro = { git = "https://github.com/dioxuslabs/blitz", optional = true } manganis = { git = "https://github.com/DioxusLabs/collect-assets" } serde = { version = "1.0.163", features = ["derive"] } serde_json = "1.0.96" @@ -92,12 +92,12 @@ dioxus-rsx = { git = "https://github.com/dioxuslabs/dioxus" } dioxus-web = { git = "https://github.com/dioxuslabs/dioxus" } dioxus-ssr = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-tui = { git = "https://github.com/dioxuslabs/blitz" } +# dioxus-tui = { git = "https://github.com/dioxuslabs/blitz" } dioxus-desktop = { git = "https://github.com/dioxuslabs/dioxus" } dioxus-liveview = { git = "https://github.com/dioxuslabs/dioxus" } dioxus-fullstack = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-native-core = { git = "https://github.com/dioxuslabs/blitz" } -dioxus-native-core-macro = { git = "https://github.com/dioxuslabs/blitz" } +# dioxus-native-core = { git = "https://github.com/dioxuslabs/blitz" } +# dioxus-native-core-macro = { git = "https://github.com/dioxuslabs/blitz" } [profile.release] lto = true @@ -120,11 +120,11 @@ doc_test = [ "server", "dioxus-web", "dioxus/web", - "dioxus-tui", + # "dioxus-tui", "dioxus-desktop", "dioxus-liveview", - "dioxus-native-core", - "dioxus-native-core-macro", + # "dioxus-native-core", + # "dioxus-native-core-macro", "shipyard", "gloo-storage", "pretty_assertions", diff --git a/docs-src/0.5/en/contributing/index.md b/docs-src/0.5/en/contributing/index.md index 8ca358660..d65f3bd22 100644 --- a/docs-src/0.5/en/contributing/index.md +++ b/docs-src/0.5/en/contributing/index.md @@ -62,13 +62,6 @@ cargo install --force cargo-make cargo make tests ``` -- Test unsafe crates with [MIRI](https://github.com/rust-lang/miri). Currently, this is used for the two MIRI tests in `dioxus-core` and `dioxus-native-core`: - -```sh -cargo miri test --package dioxus-core --test miri_stress -cargo miri test --package dioxus-native-core --test miri_native -``` - - Test with Playwright. This tests the UI itself, right in a browser. Here are all steps, including installation: **Disclaimer: This might inexplicably fail on your machine without it being your fault.** Make that PR anyway! diff --git a/docs-src/0.5/en/contributing/project_structure.md b/docs-src/0.5/en/contributing/project_structure.md index ddd245fe8..2fc43fe72 100644 --- a/docs-src/0.5/en/contributing/project_structure.md +++ b/docs-src/0.5/en/contributing/project_structure.md @@ -32,10 +32,8 @@ There are many packages in the Dioxus organization. This document will help you ## Native Renderer Utilities -- [native-core](https://github.com/DioxusLabs/blitz/tree/main/packages/native-core): Incrementally computed tree of states (mostly styles) - - You can read more about how native-core can help you build native renderers in the [custom renderer section of the guide](../custom_renderer/index.html#native-core) -- [native-core-macro](https://github.com/DioxusLabs/blitz/tree/main/packages/native-core-macro): A helper macro for native core - [Taffy](https://github.com/DioxusLabs/taffy): Layout engine powering Blitz-Core, Plasmo, and Bevy UI +- [Blitz](https://github.com/DioxusLabs/blitz): An experimental native renderer for HTML+CSS ## Web renderer tooling diff --git a/docs-src/0.5/en/cookbook/custom_renderer.md b/docs-src/0.5/en/cookbook/custom_renderer.md deleted file mode 100644 index 45f698c74..000000000 --- a/docs-src/0.5/en/cookbook/custom_renderer.md +++ /dev/null @@ -1,413 +0,0 @@ -# Custom Renderer - -Dioxus is an incredibly portable framework for UI development. The lessons, knowledge, hooks, and components you acquire over time can always be used for future projects. However, sometimes those projects cannot leverage a supported renderer or you need to implement your own better renderer. - -Great news: the design of the renderer is entirely up to you! We provide suggestions and inspiration with the 1st party renderers, but only really require processing `Mutations` and sending `UserEvents`. - -## The specifics: - -Implementing the renderer is fairly straightforward. The renderer needs to: - -1. Handle the stream of edits generated by updates to the virtual DOM -2. Register listeners and pass events into the virtual DOM's event system - -Essentially, your renderer needs to process edits and generate events to update the VirtualDOM. From there, you'll have everything needed to render the VirtualDOM to the screen. - -Internally, Dioxus handles the tree relationship, diffing, memory management, and the event system, leaving as little as possible required for renderers to implement themselves. - -For reference, check out the [javascript interpreter](https://github.com/DioxusLabs/dioxus/tree/main/packages/interpreter) or [tui renderer](https://github.com/DioxusLabs/blitz/tree/master/packages/dioxus-tui) as a starting point for your custom renderer. - -## Templates - -Dioxus is built around the concept of [Templates](https://docs.rs/dioxus-core/latest/dioxus_core/prelude/struct.Template.html). Templates describe a UI tree known at compile time with dynamic parts filled at runtime. This is useful internally to make skip diffing static nodes, but it is also useful for the renderer to reuse parts of the UI tree. This can be useful for things like a list of items. Each item could contain some static parts and some dynamic parts. The renderer can use the template to create a static part of the UI once, clone it for each element in the list, and then fill in the dynamic parts. - -## Mutations - -The `Mutation` type is a serialized enum that represents an operation that should be applied to update the UI. The variants roughly follow this set: - -```rust -enum Mutation { - AppendChildren, - AssignId, - CreatePlaceholder, - CreateTextNode, - HydrateText, - LoadTemplate, - ReplaceWith, - ReplacePlaceholder, - InsertAfter, - InsertBefore, - SetAttribute, - SetText, - NewEventListener, - RemoveEventListener, - Remove, - PushRoot, -} -``` - -The Dioxus diffing mechanism operates as a [stack machine](https://en.wikipedia.org/wiki/Stack_machine) where the [LoadTemplate](https://docs.rs/dioxus-core/latest/dioxus_core/enum.Mutation.html#variant.LoadTemplate), [CreatePlaceholder](https://docs.rs/dioxus-core/latest/dioxus_core/enum.Mutation.html#variant.CreatePlaceholder), and [CreateTextNode](https://docs.rs/dioxus-core/latest/dioxus_core/enum.Mutation.html#variant.CreateTextNode) mutations pushes a new "real" DOM node onto the stack and [AppendChildren](https://docs.rs/dioxus-core/latest/dioxus_core/enum.Mutation.html#variant.AppendChildren), [InsertAfter](https://docs.rs/dioxus-core/latest/dioxus_core/enum.Mutation.html#variant.InsertAfter), [InsertBefore](https://docs.rs/dioxus-core/latest/dioxus_core/enum.Mutation.html#variant.InsertBefore), [ReplacePlaceholder](https://docs.rs/dioxus-core/latest/dioxus_core/enum.Mutation.html#variant.ReplacePlaceholder), and [ReplaceWith](https://docs.rs/dioxus-core/latest/dioxus_core/enum.Mutation.html#variant.ReplaceWith) all remove nodes from the stack. - -## Node storage - -Dioxus saves and loads elements with IDs. Inside the VirtualDOM, this is just tracked as as a u64. - -Whenever a `CreateElement` edit is generated during diffing, Dioxus increments its node counter and assigns that new element its current NodeCount. The RealDom is responsible for remembering this ID and pushing the correct node when id is used in a mutation. Dioxus reclaims the IDs of elements when removed. To stay in sync with Dioxus you can use a sparse Vec (Vec>) with possibly unoccupied items. You can use the ids as indexes into the Vec for elements, and grow the Vec when an id does not exist. - -### An Example - -For the sake of understanding, let's consider this example – a very simple UI declaration: - -```rust -rsx! { h1 { "count: {x}" } } -``` - -#### Building Templates - -The above rsx will create a template that contains one static h1 tag and a placeholder for a dynamic text node. The template contains the static parts of the UI, and ids for the dynamic parts along with the paths to access them. - -The template will look something like this: - -```rust -Template { - // Some id that is unique for the entire project - name: "main.rs:1:1:0", - // The root nodes of the template - roots: &[ - TemplateNode::Element { - tag: "h1", - namespace: None, - attrs: &[], - children: &[ - TemplateNode::DynamicText { - id: 0 - }, - ], - } - ], - // the path to each of the dynamic nodes - node_paths: &[ - // the path to dynamic node with a id of 0 - &[ - // on the first root node - 0, - // the first child of the root node - 0, - ] - ], - // the path to each of the dynamic attributes - attr_paths: &'a [&'a [u8]], -} -``` - -> For more detailed docs about the structure of templates see the [Template api docs](https://docs.rs/dioxus-core/latest/dioxus_core/prelude/struct.Template.html) - -This template will be sent to the renderer in the [list of templates](https://docs.rs/dioxus-core/latest/dioxus_core/struct.Mutations.html#structfield.templates) supplied with the mutations the first time it is used. Any time the renderer encounters a [LoadTemplate](https://docs.rs/dioxus-core/latest/dioxus_core/enum.Mutation.html#variant.LoadTemplate) mutation after this, it should clone the template and store it in the given id. - -For dynamic nodes and dynamic text nodes, a placeholder node should be created and inserted into the UI so that the node can be modified later. - -In HTML renderers, this template could look like this: - -```html -

""

-``` - -#### Applying Mutations - -After the renderer has created all of the new templates, it can begin to process the mutations. - -When the renderer starts, it should contain the Root node on the stack and store the Root node with an id of 0. The Root node is the top-level node of the UI. In HTML, this is the `
` element. - -```rust -instructions: [] -stack: [ - RootNode, -] -nodes: [ - RootNode, -] -``` - -The first mutation is a `LoadTemplate` mutation. This tells the renderer to load a root from the template with the given id. The renderer will then push the root node of the template onto the stack and store it with an id for later. In this case, the root node is an h1 element. - -```rust -instructions: [ - LoadTemplate { - // the id of the template - name: "main.rs:1:1:0", - // the index of the root node in the template - index: 0, - // the id to store - id: ElementId(1), - } -] -stack: [ - RootNode, -

""

, -] -nodes: [ - RootNode, -

""

, -] -``` - -Next, Dioxus will create the dynamic text node. The diff algorithm decides that this node needs to be created, so Dioxus will generate the Mutation `HydrateText`. When the renderer receives this instruction, it will navigate to the placeholder text node in the template and replace it with the new text. - -```rust -instructions: [ - LoadTemplate { - name: "main.rs:1:1:0", - index: 0, - id: ElementId(1), - }, - HydrateText { - // the id to store the text node - id: ElementId(2), - // the text to set - text: "count: 0", - } -] -stack: [ - RootNode, -

"count: 0"

, -] -nodes: [ - RootNode, -

"count: 0"

, - "count: 0", -] -``` - -Remember, the h1 node is not attached to anything (it is unmounted) so Dioxus needs to generate an Edit that connects the h1 node to the Root. It depends on the situation, but in this case, we use `AppendChildren`. This pops the text node off the stack, leaving the Root element as the next element on the stack. - -```rust -instructions: [ - LoadTemplate { - name: "main.rs:1:1:0", - index: 0, - id: ElementId(1), - }, - HydrateText { - id: ElementId(2), - text: "count: 0", - }, - AppendChildren { - // the id of the parent node - id: ElementId(0), - // the number of nodes to pop off the stack and append - m: 1 - } -] -stack: [ - RootNode, -] -nodes: [ - RootNode, -

"count: 0"

, - "count: 0", -] -``` - -Over time, our stack looked like this: - -```rust -[Root] -[Root,

""

] -[Root,

"count: 0"

] -[Root] -``` - -Conveniently, this approach completely separates the Virtual DOM and the Real DOM. Additionally, these edits are serializable, meaning we can even manage UIs across a network connection. This little stack machine and serialized edits make Dioxus independent of platform specifics. - -Dioxus is also really fast. Because Dioxus splits the diff and patch phase, it's able to make all the edits to the RealDOM in a very short amount of time (less than a single frame) making rendering very snappy. It also allows Dioxus to cancel large diffing operations if higher priority work comes in while it's diffing. - -This little demo serves to show exactly how a Renderer would need to process a mutation stream to build UIs. - -## Event loop - -Like most GUIs, Dioxus relies on an event loop to progress the VirtualDOM. The VirtualDOM itself can produce events as well, so it's important for your custom renderer can handle those too. - -The code for the WebSys implementation is straightforward, so we'll add it here to demonstrate how simple an event loop is: - -```rust, ignore -pub async fn run(&mut self) -> dioxus_core::error::Result<()> { - // Push the body element onto the WebsysDom's stack machine - let mut websys_dom = crate::new::WebsysDom::new(prepare_websys_dom()); - websys_dom.stack.push(root_node); - - // Rebuild or hydrate the virtualdom - let mutations = self.internal_dom.rebuild(); - websys_dom.apply_mutations(mutations); - - // Wait for updates from the real dom and progress the virtual dom - loop { - let user_input_future = websys_dom.wait_for_event(); - let internal_event_future = self.internal_dom.wait_for_work(); - - match select(user_input_future, internal_event_future).await { - Either::Left((_, _)) => { - let mutations = self.internal_dom.work_with_deadline(|| false); - websys_dom.apply_mutations(mutations); - }, - Either::Right((event, _)) => websys_dom.handle_event(event), - } - - // render - } -} -``` - -It's important to decode what the real events are for your event system into Dioxus' synthetic event system (synthetic meaning abstracted). This simply means matching your event type and creating a Dioxus `UserEvent` type. Right now, the virtual event system is modeled almost entirely around the HTML spec, but we are interested in slimming it down. - -```rust, ignore -fn virtual_event_from_websys_event(event: &web_sys::Event) -> VirtualEvent { - match event.type_().as_str() { - "keydown" => { - let event: web_sys::KeyboardEvent = event.clone().dyn_into().unwrap(); - UserEvent::KeyboardEvent(UserEvent { - scope_id: None, - priority: EventPriority::Medium, - name: "keydown", - // This should be whatever element is focused - element: Some(ElementId(0)), - data: Arc::new(KeyboardData{ - char_code: event.char_code(), - key: event.key(), - key_code: event.key_code(), - alt_key: event.alt_key(), - ctrl_key: event.ctrl_key(), - meta_key: event.meta_key(), - shift_key: event.shift_key(), - location: event.location(), - repeat: event.repeat(), - which: event.which(), - }) - }) - } - _ => todo!() - } -} -``` - -## Custom raw elements - -If you need to go as far as relying on custom elements/attributes for your renderer – you totally can. This still enables you to use Dioxus' reactive nature, component system, shared state, and other features, but will ultimately generate different nodes. All attributes and listeners for the HTML and SVG namespace are shuttled through helper structs that essentially compile away. You can drop in your elements any time you want, with little hassle. However, you must be sure your renderer can handle the new namespace. - -For more examples and information on how to create custom namespaces, see the [`dioxus_html` crate](https://github.com/DioxusLabs/dioxus/blob/main/packages/html/README.md#how-to-extend-it). - -# Native Core - -If you are creating a renderer in rust, the [native-core](https://github.com/DioxusLabs/blitz/tree/master/packages/native-core) crate provides some utilities to implement a renderer. It provides an abstraction over Mutations and Templates and contains helpers that can handle the layout and text editing for you. - -## The RealDom - -The `RealDom` is a higher-level abstraction over updating the Dom. It uses an entity component system to manage the state of nodes. This system allows you to modify insert and modify arbitrary components on nodes. On top of this, the RealDom provides a way to manage a tree of nodes, and the State trait provides a way to automatically add and update these components when the tree is modified. It also provides a way to apply `Mutations` to the RealDom. - -### Example - -Let's build a toy renderer with borders, size, and text color. -Before we start let's take a look at an example element we can render: - -```rust -rsx!{ - div{ - color: "red", - p{ - border: "1px solid black", - "hello world" - } - } -} -``` - -In this tree, the color depends on the parent's color. The layout depends on the children's layout, the current text, and the text size. The border depends on only the current node. - -In the following diagram arrows represent dataflow: - -[![](https://mermaid.ink/img/pako:eNqllV1vgjAUhv8K6W4wkQVa2QdLdrHsdlfukmSptEhjoaSWqTH-9xVwONAKst70g5739JzzlO5BJAgFAYi52EQJlsr6fAszS7d1sVhKnCdWJDJFt6peLVs5-9owohK7HFrVcFJ_pxnpmK8VVvRkTJikkWIiaxy1dhP23bUwW1WW5WbPrrqJ4ziR4EJ6dtVN2ls5y1ZztePUcrWZFCvqVEcPPDffvlyS1XoLIQnVgnVvVPR6FU9Zc-6dV453ojjOPbuetRJ57gIeXQR3cez7rjtteZyZQ2j5MqmjqwE0ZW0VKx9RKtgpFewp1aw3sXXFy6TWgiYlv8mfq1scD8ofbBCAfQg8_AMBOAyBxzEIwA4CxgQ99QbQkjnD2KT7_CfxGF8_9WXQEsq5sDZCcjICOXRCri4h6r3NA38Q6Jdi1EOx5w3DGDYYI6MUvJFjM3VoGHUeGoMd6mBnDmh2E3fo7O4Yhf0x4OkBmIKUyhQzol_GfbkcApXQlIYg0EOC5SoEYXbQ-3ChxHyXRSBQsqBTUOREx_7OsAY3BUGM-VqvUsKUkB_1U6vf05gtweEHTk4_HQ?type=png)](https://mermaid.live/edit#pako:eNqllV1vgjAUhv8K6W4wkQVa2QdLdrHsdlfukmSptEhjoaSWqTH-9xVwONAKst70g5739JzzlO5BJAgFAYi52EQJlsr6fAszS7d1sVhKnCdWJDJFt6peLVs5-9owohK7HFrVcFJ_pxnpmK8VVvRkTJikkWIiaxy1dhP23bUwW1WW5WbPrrqJ4ziR4EJ6dtVN2ls5y1ZztePUcrWZFCvqVEcPPDffvlyS1XoLIQnVgnVvVPR6FU9Zc-6dV453ojjOPbuetRJ57gIeXQR3cez7rjtteZyZQ2j5MqmjqwE0ZW0VKx9RKtgpFewp1aw3sXXFy6TWgiYlv8mfq1scD8ofbBCAfQg8_AMBOAyBxzEIwA4CxgQ99QbQkjnD2KT7_CfxGF8_9WXQEsq5sDZCcjICOXRCri4h6r3NA38Q6Jdi1EOx5w3DGDYYI6MUvJFjM3VoGHUeGoMd6mBnDmh2E3fo7O4Yhf0x4OkBmIKUyhQzol_GfbkcApXQlIYg0EOC5SoEYXbQ-3ChxHyXRSBQsqBTUOREx_7OsAY3BUGM-VqvUsKUkB_1U6vf05gtweEHTk4_HQ) - -[//]: # "%% mermaid flow chart" -[//]: # "flowchart TB" -[//]: # " subgraph context" -[//]: # " text_width(text width)" -[//]: # " end" -[//]: # " subgraph state" -[//]: # " direction TB" -[//]: # " subgraph div state" -[//]: # " direction TB" -[//]: # " state1(state)---color1(color)" -[//]: # " linkStyle 0 stroke-width:10px;" -[//]: # " state1---border1(border)" -[//]: # " linkStyle 1 stroke-width:10px;" -[//]: # " text_width-.->layout_width1(layout width)" -[//]: # " linkStyle 2 stroke:#ff5500,stroke-width:4px;" -[//]: # " state1---layout_width1" -[//]: # " linkStyle 3 stroke-width:10px;" -[//]: # " end" -[//]: # " subgraph p state" -[//]: # " direction TB" -[//]: # " state2(state)---color2(color)" -[//]: # " linkStyle 4 stroke-width:10px;" -[//]: # " color1-.->color2" -[//]: # " linkStyle 5 stroke:#0000ff,stroke-width:4px;" -[//]: # " state2---border2(border)" -[//]: # " linkStyle 6 stroke-width:10px;" -[//]: # " text_width-.->layout_width2(layout width)" -[//]: # " linkStyle 7 stroke:#ff5500,stroke-width:4px;" -[//]: # " state2---layout_width2" -[//]: # " linkStyle 8 stroke-width:10px;" -[//]: # " layout_width2-.->layout_width1" -[//]: # " linkStyle 9 stroke:#00aa00,stroke-width:4px;" -[//]: # " end" -[//]: # " subgraph hello world state" -[//]: # " direction TB" -[//]: # " state3(state)---border3(border)" -[//]: # " linkStyle 10 stroke-width:10px;" -[//]: # " state3---color3(color)" -[//]: # " linkStyle 11 stroke-width:10px;" -[//]: # " color2-.->color3" -[//]: # " linkStyle 12 stroke:#0000ff,stroke-width:4px;" -[//]: # " text_width-.->layout_width3(layout width)" -[//]: # " linkStyle 13 stroke:#ff5500,stroke-width:4px;" -[//]: # " state3---layout_width3" -[//]: # " linkStyle 14 stroke-width:10px;" -[//]: # " layout_width3-.->layout_width2" -[//]: # " linkStyle 15 stroke:#00aa00,stroke-width:4px;" -[//]: # " end" -[//]: # " end" - -To help in building a Dom, native-core provides the State trait and a RealDom struct. The State trait provides a way to describe how states in a node depend on other states in its relatives. By describing how to update a single node from its relations, native-core will derive a way to update the states of all nodes for you. Once you have a state you can provide it as a generic to RealDom. RealDom provides all of the methods to interact and update your new dom. - -Native Core cannot create all of the required methods for the State trait, but it can derive some of them. To implement the State trait, you must implement the following methods and let the `#[partial_derive_state]` macro handle the rest: - -```rust, ignore -{{#include src/doc_examples/custom_renderer.rs:derive_state}} -``` - -Lets take a look at how to implement the State trait for a simple renderer. - -```rust -{{#include src/doc_examples/custom_renderer.rs:state_impl}} -``` - -Now that we have our state, we can put it to use in our RealDom. We can update the RealDom with apply_mutations to update the structure of the dom (adding, removing, and changing properties of nodes) and then update_state to update the States for each of the nodes that changed. - -```rust -{{#include src/doc_examples/custom_renderer.rs:rendering}} -``` - -## Layout - -For most platforms, the layout of the Elements will stay the same. The [layout_attributes](https://docs.rs/dioxus-native-core/latest/dioxus_native_core/layout_attributes/index.html) module provides a way to apply HTML attributes a [Taffy](https://docs.rs/taffy/latest/taffy/index.html) layout style. - -## Text Editing - -To make it easier to implement text editing in rust renderers, `native-core` also contains a renderer-agnostic cursor system. The cursor can handle text editing, selection, and movement with common keyboard shortcuts integrated. - -```rust -{{#include src/doc_examples/custom_renderer.rs:cursor}} -``` - -## Conclusion - -That should be it! You should have nearly all the knowledge required on how to implement your renderer. We're super interested in seeing Dioxus apps brought to custom desktop renderers, mobile renderers, video game UI, and even augmented reality! If you're interested in contributing to any of these projects, don't be afraid to reach out or join the [community](https://discord.gg/XgGxMSkvUM). diff --git a/docs-src/0.5/en/reference/index.md b/docs-src/0.5/en/reference/index.md index c5141a3e1..5f2d31f59 100644 --- a/docs-src/0.5/en/reference/index.md +++ b/docs-src/0.5/en/reference/index.md @@ -32,5 +32,4 @@ This Reference contains more detailed explanations for all concepts covered in t - [Authentication](fullstack/authentication.md): An overview of how to handle authentication with server functions - [Routing](fullstack/routing.md): An overview of how to work with the router in the fullstack renderer - [SSR](ssr.md): Overview of the SSR renderer -- [TUI](tui.md): Overview of web specific APIS - [Liveview](liveview.md): Overview of liveview specific APIS diff --git a/src/components/homepage/hero.rs b/src/components/homepage/hero.rs index df9794a1a..85df071be 100644 --- a/src/components/homepage/hero.rs +++ b/src/components/homepage/hero.rs @@ -1,5 +1,4 @@ use crate::*; -use manganis::mg; pub(crate) fn Hero() -> Element { rsx! { diff --git a/src/components/homepage/value_add.rs b/src/components/homepage/value_add.rs index 47650aa4a..1fe6382d8 100644 --- a/src/components/homepage/value_add.rs +++ b/src/components/homepage/value_add.rs @@ -33,13 +33,19 @@ pub(crate) fn ValueAdd() -> Element { for (idx , (title , content)) in FEATURES.iter().enumerate() { div { key: "{title}", class: "p-4 md:w-1/4 flex", div { class: "flex-grow lg:pl-6", - {DynamicNode::Component(VComponent::new(IconsSet[idx], (), title))}, + {DynamicNode::Component(VComponent::new(IconsSet[idx], (), title))} a { href: "#", h2 { class: "dark:text-white text-gray-800 text-lg title-font font-medium mb-2", "{title}" } } - {content.split('\n').map(|line| rsx!{p { key: "{line}", class: "leading-relaxed text-gray-700 text-base pb-4 dark:text-white", "{line}" }})} + {content.split('\n').map(|line| rsx! { + p { + key: "{line}", + class: "leading-relaxed text-gray-700 text-base pb-4 dark:text-white", + "{line}" + } + })} } } } diff --git a/src/doc_examples/custom_renderer.rs b/src/doc_examples/custom_renderer.rs deleted file mode 100644 index 134d8a6f1..000000000 --- a/src/doc_examples/custom_renderer.rs +++ /dev/null @@ -1,305 +0,0 @@ -use dioxus::html::input_data::keyboard_types::{Code, Key, Modifiers}; -use dioxus::prelude::*; -use dioxus_native_core::exports::shipyard::Component; -use dioxus_native_core::node_ref::*; -use dioxus_native_core::prelude::*; -use dioxus_native_core::utils::cursor::{Cursor, Pos}; -use dioxus_native_core_macro::partial_derive_state; - -// ANCHOR: state_impl -struct FontSize(f64); - -// All states need to derive Component -#[derive(Default, Debug, Copy, Clone, Component)] -struct Size(f64, f64); - -/// Derive some of the boilerplate for the State implementation -#[partial_derive_state] -impl State for Size { - type ParentDependencies = (); - - // The size of the current node depends on the size of its children - type ChildDependencies = (Self,); - - type NodeDependencies = (); - - // Size only cares about the width, height, and text parts of the current node - const NODE_MASK: NodeMaskBuilder<'static> = NodeMaskBuilder::new() - // Get access to the width and height attributes - .with_attrs(AttributeMaskBuilder::Some(&["width", "height"])) - // Get access to the text of the node - .with_text(); - - fn update<'a>( - &mut self, - node_view: NodeView<()>, - _node: ::ElementBorrowed<'a>, - _parent: Option<::ElementBorrowed<'a>>, - children: Vec<::ElementBorrowed<'a>>, - context: &SendAnyMap, - ) -> bool { - let font_size = context.get::().unwrap().0; - let mut width; - let mut height; - if let Some(text) = node_view.text() { - // if the node has text, use the text to size our object - width = text.len() as f64 * font_size; - height = font_size; - } else { - // otherwise, the size is the maximum size of the children - width = children - .iter() - .map(|(item,)| item.0) - .reduce(|accum, item| if accum >= item { accum } else { item }) - .unwrap_or(0.0); - - height = children - .iter() - .map(|(item,)| item.1) - .reduce(|accum, item| if accum >= item { accum } else { item }) - .unwrap_or(0.0); - } - // if the node contains a width or height attribute it overrides the other size - for a in node_view.attributes().into_iter().flatten() { - match &*a.attribute.name { - "width" => width = a.value.as_float().unwrap(), - "height" => height = a.value.as_float().unwrap(), - // because Size only depends on the width and height, no other attributes will be passed to the member - _ => panic!(), - } - } - // to determine what other parts of the dom need to be updated we return a boolean that marks if this member changed - let changed = (width != self.0) || (height != self.1); - *self = Self(width, height); - changed - } -} - -#[derive(Debug, Clone, Copy, PartialEq, Default, Component)] -struct TextColor { - r: u8, - g: u8, - b: u8, -} - -#[partial_derive_state] -impl State for TextColor { - // TextColor depends on the TextColor part of the parent - type ParentDependencies = (Self,); - - type ChildDependencies = (); - - type NodeDependencies = (); - - // TextColor only cares about the color attribute of the current node - const NODE_MASK: NodeMaskBuilder<'static> = - // Get access to the color attribute - NodeMaskBuilder::new().with_attrs(AttributeMaskBuilder::Some(&["color"])); - - fn update<'a>( - &mut self, - node_view: NodeView<()>, - _node: ::ElementBorrowed<'a>, - parent: Option<::ElementBorrowed<'a>>, - _children: Vec<::ElementBorrowed<'a>>, - _context: &SendAnyMap, - ) -> bool { - // TextColor only depends on the color tag, so getting the first tag is equivalent to looking through all tags - let new = match node_view - .attributes() - .and_then(|mut attrs| attrs.next()) - .and_then(|attr| attr.value.as_text()) - { - // if there is a color tag, translate it - Some("red") => TextColor { r: 255, g: 0, b: 0 }, - Some("green") => TextColor { r: 0, g: 255, b: 0 }, - Some("blue") => TextColor { r: 0, g: 0, b: 255 }, - Some(color) => panic!("unknown color {}", "red"), - // otherwise check if the node has a parent and inherit that color - None => match parent { - Some((parent,)) => *parent, - None => Self::default(), - }, - }; - // check if the member has changed - let changed = new != *self; - *self = new; - changed - } -} - -#[derive(Debug, Clone, Copy, PartialEq, Default, Component)] -struct Border(bool); - -#[partial_derive_state] -impl State for Border { - // TextColor depends on the TextColor part of the parent - type ParentDependencies = (Self,); - - type ChildDependencies = (); - - type NodeDependencies = (); - - // Border does not depended on any other member in the current node - const NODE_MASK: NodeMaskBuilder<'static> = - // Get access to the border attribute - NodeMaskBuilder::new().with_attrs(AttributeMaskBuilder::Some(&["border"])); - - fn update<'a>( - &mut self, - node_view: NodeView<()>, - _node: ::ElementBorrowed<'a>, - _parent: Option<::ElementBorrowed<'a>>, - _children: Vec<::ElementBorrowed<'a>>, - _context: &SendAnyMap, - ) -> bool { - // check if the node contains a border attribute - let new = Self( - node_view - .attributes() - .and_then(|mut attrs| attrs.next().map(|a| a.attribute.name == "border")) - .is_some(), - ); - // check if the member has changed - let changed = new != *self; - *self = new; - changed - } -} -// ANCHOR_END: state_impl - -// ANCHOR: rendering -fn main() -> Result<(), Box> { - fn app() -> Element { - let mut count = use_signal(|| 0); - - use_resource(move || async move { - loop { - tokio::time::sleep(std::time::Duration::from_secs(1)).await; - count += 1; - } - }); - - rsx! { div { color: "red", "{count}" } } - } - - // create the vdom, the real_dom, and the binding layer between them - let mut vdom = VirtualDom::new(app); - let mut rdom: RealDom = RealDom::new([ - Border::to_type_erased(), - TextColor::to_type_erased(), - Size::to_type_erased(), - ]); - let mut dioxus_intigration_state = DioxusState::create(&mut rdom); - - // Build the virtual dom and update the structure of the real_dom tree - vdom.rebuild(&mut dioxus_intigration_state.create_mutation_writer(&mut rdom)); - - let mut ctx = SendAnyMap::new(); - // set the font size to 3.3 - ctx.insert(FontSize(3.3)); - // update the State for nodes in the real_dom tree - let _to_rerender = rdom.update_state(ctx); - - // we need to run the vdom in a async runtime - tokio::runtime::Builder::new_current_thread() - .enable_all() - .build()? - .block_on(async { - loop { - // wait for the vdom to update - vdom.wait_for_work().await; - - // get the mutations from the vdom and apply them to the real_dom - vdom.render_immediate( - &mut dioxus_intigration_state.create_mutation_writer(&mut rdom), - ); - - // update the state of the real_dom tree - let mut ctx = SendAnyMap::new(); - // set the font size to 3.3 - ctx.insert(FontSize(3.3)); - let _to_rerender = rdom.update_state(ctx); - - // render... - rdom.traverse_depth_first(|node| { - let indent = " ".repeat(node.height() as usize); - let color = *node.get::().unwrap(); - let size = *node.get::().unwrap(); - let border = *node.get::().unwrap(); - let id = node.id(); - let node = node.node_type(); - let node_type = &*node; - println!("{indent}{id:?} {color:?} {size:?} {border:?} {node_type:?}"); - }); - } - }) -} -// ANCHOR_END: rendering - -// ANCHOR: derive_state -// All states must derive Component (https://docs.rs/shipyard/latest/shipyard/derive.Component.html) -// They also must implement Default or provide a custom implementation of create in the State trait -#[derive(Default, Component)] -struct MyState; - -/// Derive some of the boilerplate for the State implementation -#[partial_derive_state] -impl State for MyState { - // The states of the parent nodes this state depends on - type ParentDependencies = (); - - // The states of the child nodes this state depends on - type ChildDependencies = (Self,); - - // The states of the current node this state depends on - type NodeDependencies = (); - - // The parts of the current text, element, or placeholder node in the tree that this state depends on - const NODE_MASK: NodeMaskBuilder<'static> = NodeMaskBuilder::new(); - - // How to update the state of the current node based on the state of the parent nodes, child nodes, and the current node - // Returns true if the node was updated and false if the node was not updated - fn update<'a>( - &mut self, - // The view of the current node limited to the parts this state depends on - _node_view: NodeView<()>, - // The state of the current node that this state depends on - _node: ::ElementBorrowed<'a>, - // The state of the parent nodes that this state depends on - _parent: Option<::ElementBorrowed<'a>>, - // The state of the child nodes that this state depends on - _children: Vec<::ElementBorrowed<'a>>, - // The context of the current node used to pass global state into the tree - _context: &SendAnyMap, - ) -> bool { - todo!() - } - - // partial_derive_state will generate a default implementation of all the other methods -} -// ANCHOR_END: derive_state - -#[allow(unused)] -// ANCHOR: cursor -fn text_editing() { - let mut cursor = Cursor::default(); - let mut text = String::new(); - - // handle keyboard input with a max text length of 10 - cursor.handle_input( - &Code::ArrowRight, - &Key::ArrowRight, - &Modifiers::empty(), - &mut text, - 10, - ); - - // manually select text between characters 0-5 on the first line (this could be from dragging with a mouse) - cursor.start = Pos::new(0, 0); - cursor.end = Some(Pos::new(5, 0)); - - // delete the selected text and move the cursor to the start of the selection - cursor.delete_selection(&mut text); -} -// ANCHOR_END: cursor diff --git a/src/doc_examples/hello_world_tui.rs b/src/doc_examples/hello_world_tui.rs deleted file mode 100644 index 6bc0d394c..000000000 --- a/src/doc_examples/hello_world_tui.rs +++ /dev/null @@ -1,13 +0,0 @@ -#![allow(non_snake_case)] -// import the prelude to get access to the `rsx!` macro and the `Element` type -use dioxus::prelude::*; - -fn main() { - // launch the app in the terminal - dioxus_tui::launch(App); -} - -// create a component that renders a div with the text "Hello, world!" -fn App() -> Element { - rsx! { div { "Hello, world!" } } -} diff --git a/src/doc_examples/hello_world_tui_no_ctrl_c.rs b/src/doc_examples/hello_world_tui_no_ctrl_c.rs deleted file mode 100644 index 728699da4..000000000 --- a/src/doc_examples/hello_world_tui_no_ctrl_c.rs +++ /dev/null @@ -1,38 +0,0 @@ -// todo remove deprecated -#![allow(non_snake_case, deprecated)] - -use dioxus::events::{KeyCode, KeyboardEvent}; -use dioxus::prelude::*; -use dioxus_tui::TuiContext; - -fn main() { - dioxus_tui::launch_cfg( - App, - dioxus_tui::Config::new() - .without_ctrl_c_quit() - // Some older terminals only support 16 colors or ANSI colors - // If your terminal is one of these, change this to BaseColors or ANSI - .with_rendering_mode(dioxus_tui::RenderingMode::Rgb), - ); -} - -fn App() -> Element { - let tui_ctx: TuiContext = consume_context(); - - rsx! { - div { - width: "100%", - height: "10px", - background_color: "red", - justify_content: "center", - align_items: "center", - onkeydown: move |k: KeyboardEvent| { - if Key::Character("q".into()) == k.key() { - tui_ctx.quit(); - } - }, - - "Hello world!" - } - } -} diff --git a/src/doc_examples/rsx_overview.rs b/src/doc_examples/rsx_overview.rs index 96b81af83..07b1640a3 100644 --- a/src/doc_examples/rsx_overview.rs +++ b/src/doc_examples/rsx_overview.rs @@ -30,7 +30,9 @@ pub fn Button() -> Element { pub fn AttributesType() -> Element { // ANCHOR: attributes_type - rsx! { input { r#type: "text", color: "red" } } + rsx! { + input { r#type: "text", color: "red" } + } // ANCHOR_END: attributes_type } @@ -93,14 +95,18 @@ pub fn VariableAttributes() -> Element { pub fn CustomAttributes() -> Element { // ANCHOR: custom_attributes - rsx! { div { "style": "width: 20px; height: 20px; background-color: red;" } } + rsx! { + div { "style": "width: 20px; height: 20px; background-color: red;" } + } // ANCHOR_END: custom_attributes } pub fn ConditionalAttributes() -> Element { // ANCHOR: conditional_attributes let large_font = true; - rsx! { div { class: if large_font { "text-xl" }, "Hello, World!" } } + rsx! { + div { class: if large_font { "text-xl" }, "Hello, World!" } + } // ANCHOR_END: conditional_attributes } From 46aeedd949dbe04cdd9394856d8e251c4468ec6c Mon Sep 17 00:00:00 2001 From: Jonathan Kelley Date: Tue, 13 Aug 2024 15:08:06 -0700 Subject: [PATCH 05/35] bump material-icons to git so patch works! --- Cargo.lock | 767 +++--------------- Cargo.toml | 68 +- docs-src/0.5/SUMMARY.md | 3 +- .../0.5/en/contributing/project_structure.md | 2 +- docs-src/0.5/en/cookbook/index.md | 3 +- src/components/desktop_dependencies.rs | 36 +- src/components/homepage/hero.rs | 4 +- src/components/homepage/mod.rs | 60 +- src/components/homepage/snippets.rs | 12 +- src/components/learn.rs | 92 ++- src/components/nav.rs | 36 +- src/components/tutorials.rs | 4 +- src/doc_examples/conditional_rendering.rs | 14 +- src/doc_examples/rsx_overview.rs | 14 +- src/doc_examples/spawn.rs | 6 +- src/doc_examples/use_resource.rs | 22 +- src/icons.rs | 22 +- src/main.rs | 10 +- 18 files changed, 364 insertions(+), 811 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b668c41f6..99b1984c2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -553,38 +553,6 @@ dependencies = [ "system-deps", ] -[[package]] -name = "camino" -version = "1.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo-platform" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo_metadata" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" -dependencies = [ - "camino", - "cargo-platform", - "semver", - "serde", - "serde_json", - "thiserror", -] - [[package]] name = "cc" version = "1.1.10" @@ -823,12 +791,6 @@ dependencies = [ "unicode-xid", ] -[[package]] -name = "constcat" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd7e35aee659887cbfb97aaf227ac12cad1a9d7c71e55ff3376839ed4e282d08" - [[package]] name = "convert_case" version = "0.4.0" @@ -1111,59 +1073,33 @@ dependencies = [ "crypto-common", ] -[[package]] -name = "dioxus" -version = "0.4.3" -source = "git+https://github.com/DioxusLabs/dioxus?rev=53343bf#53343bfd194300c3336e90d9b5e24d50da9c1637" -dependencies = [ - "dioxus-config-macro 0.4.3", - "dioxus-core 0.4.3", - "dioxus-core-macro 0.4.3", - "dioxus-hooks 0.4.3", - "dioxus-hot-reload 0.4.3", - "dioxus-html 0.4.3", - "dioxus-signals 0.4.3", -] - [[package]] name = "dioxus" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" +source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" dependencies = [ "axum", - "dioxus-config-macro 0.6.0-alpha.2", - "dioxus-core 0.6.0-alpha.2", - "dioxus-core-macro 0.6.0-alpha.2", + "dioxus-config-macro", + "dioxus-core", + "dioxus-core-macro", "dioxus-fullstack", - "dioxus-hooks 0.6.0-alpha.2", - "dioxus-hot-reload 0.6.0-alpha.2", - "dioxus-html 0.6.0-alpha.2", + "dioxus-hooks", + "dioxus-hot-reload", + "dioxus-html", "dioxus-liveview", - "dioxus-router 0.6.0-alpha.2", - "dioxus-signals 0.6.0-alpha.2", + "dioxus-router", + "dioxus-signals", "dioxus-ssr", "dioxus-static-site-generation", "dioxus-web", - "manganis 0.3.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "manganis", "serde", ] -[[package]] -name = "dioxus-cli-config" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7dffc452ed91af6ef772b0d9a5899573f6785314e97c533733ec55413c01df3" -dependencies = [ - "once_cell", - "serde", - "serde_json", - "tracing", -] - [[package]] name = "dioxus-cli-config" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" +source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" dependencies = [ "built", "clap", @@ -1173,67 +1109,26 @@ dependencies = [ "tracing", ] -[[package]] -name = "dioxus-config-macro" -version = "0.4.3" -source = "git+https://github.com/DioxusLabs/dioxus?rev=53343bf#53343bfd194300c3336e90d9b5e24d50da9c1637" -dependencies = [ - "proc-macro2", - "quote", -] - [[package]] name = "dioxus-config-macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" +source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" dependencies = [ "proc-macro2", "quote", ] -[[package]] -name = "dioxus-core" -version = "0.4.3" -source = "git+https://github.com/DioxusLabs/dioxus?rev=53343bf#53343bfd194300c3336e90d9b5e24d50da9c1637" -dependencies = [ - "futures-channel", - "futures-util", - "longest-increasing-subsequence", - "rustc-hash", - "serde", - "slab", - "tracing", -] - -[[package]] -name = "dioxus-core" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3730d2459ab66951cedf10b09eb84141a6eda7f403c28057cbe010495be156b7" -dependencies = [ - "futures-channel", - "futures-util", - "generational-box 0.5.6", - "longest-increasing-subsequence", - "rustc-hash", - "serde", - "slab", - "slotmap", - "tracing", - "tracing-subscriber", -] - [[package]] name = "dioxus-core" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" +source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" dependencies = [ "const_format", "futures-channel", "futures-util", - "generational-box 0.6.0-alpha.2", + "generational-box", "longest-increasing-subsequence", - "manganis 0.3.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "manganis", "rustc-hash", "rustversion", "serde", @@ -1243,73 +1138,38 @@ dependencies = [ "warnings", ] -[[package]] -name = "dioxus-core-macro" -version = "0.4.3" -source = "git+https://github.com/DioxusLabs/dioxus?rev=53343bf#53343bfd194300c3336e90d9b5e24d50da9c1637" -dependencies = [ - "constcat", - "convert_case 0.6.0", - "dioxus-rsx 0.4.3", - "prettyplease", - "proc-macro2", - "quote", - "syn 2.0.74", -] - -[[package]] -name = "dioxus-core-macro" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d9c0dfe0e6a46626fa716c4aa1d2ccb273441337909cfeacad5bb6fcfb947d2" -dependencies = [ - "constcat", - "convert_case 0.6.0", - "dioxus-rsx 0.5.6", - "prettyplease", - "proc-macro2", - "quote", - "syn 2.0.74", -] - [[package]] name = "dioxus-core-macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" +source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" dependencies = [ "convert_case 0.6.0", - "dioxus-rsx 0.6.0-alpha.2", + "dioxus-rsx", "prettyplease", "proc-macro2", "quote", "syn 2.0.74", ] -[[package]] -name = "dioxus-debug-cell" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ea539174bb236e0e7dc9c12b19b88eae3cb574dedbd0252a2d43ea7e6de13e2" - [[package]] name = "dioxus-desktop" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" +source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" dependencies = [ "async-trait", "cocoa", "core-foundation", - "dioxus-cli-config 0.6.0-alpha.2", - "dioxus-core 0.6.0-alpha.2", - "dioxus-hooks 0.6.0-alpha.2", - "dioxus-hot-reload 0.6.0-alpha.2", - "dioxus-html 0.6.0-alpha.2", + "dioxus-cli-config", + "dioxus-core", + "dioxus-hooks", + "dioxus-hot-reload", + "dioxus-html", "dioxus-interpreter-js", - "dioxus-signals 0.6.0-alpha.2", + "dioxus-signals", "dunce", "futures-channel", "futures-util", - "generational-box 0.6.0-alpha.2", + "generational-box", "global-hotkey", "infer", "muda", @@ -1333,7 +1193,7 @@ dependencies = [ [[package]] name = "dioxus-fullstack" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" +source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" dependencies = [ "async-trait", "axum", @@ -1341,16 +1201,16 @@ dependencies = [ "bytes", "ciborium", "clap", - "dioxus-cli-config 0.6.0-alpha.2", - "dioxus-hot-reload 0.6.0-alpha.2", + "dioxus-cli-config", + "dioxus-hot-reload", "dioxus-interpreter-js", - "dioxus-lib 0.6.0-alpha.2", + "dioxus-lib", "dioxus-ssr", "dioxus-web", "dioxus_server_macro", "futures-channel", "futures-util", - "generational-box 0.6.0-alpha.2", + "generational-box", "http 1.1.0", "hyper 1.4.1", "once_cell", @@ -1370,77 +1230,32 @@ dependencies = [ "web-sys", ] -[[package]] -name = "dioxus-hooks" -version = "0.4.3" -source = "git+https://github.com/DioxusLabs/dioxus?rev=53343bf#53343bfd194300c3336e90d9b5e24d50da9c1637" -dependencies = [ - "dioxus-core 0.4.3", - "dioxus-debug-cell", - "dioxus-signals 0.4.3", - "futures-channel", - "futures-util", - "slab", - "thiserror", - "tracing", -] - -[[package]] -name = "dioxus-hooks" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa8f9c661eea82295219d25555d5c0b597e74186b029038ceb5e3700ccbd4380" -dependencies = [ - "dioxus-core 0.5.6", - "dioxus-debug-cell", - "dioxus-signals 0.5.7", - "futures-channel", - "futures-util", - "generational-box 0.5.6", - "slab", - "thiserror", - "tracing", -] - [[package]] name = "dioxus-hooks" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" +source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" dependencies = [ - "dioxus-core 0.6.0-alpha.2", - "dioxus-signals 0.6.0-alpha.2", + "dioxus-core", + "dioxus-signals", "futures-channel", "futures-util", - "generational-box 0.6.0-alpha.2", + "generational-box", "rustversion", "slab", "tracing", "warnings", ] -[[package]] -name = "dioxus-hot-reload" -version = "0.4.3" -source = "git+https://github.com/DioxusLabs/dioxus?rev=53343bf#53343bfd194300c3336e90d9b5e24d50da9c1637" -dependencies = [ - "dioxus-core 0.4.3", - "dioxus-html 0.4.3", - "dioxus-rsx 0.4.3", - "interprocess-docfix", - "serde", - "serde_json", -] - [[package]] name = "dioxus-hot-reload" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" +source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" dependencies = [ - "dioxus-cli-config 0.6.0-alpha.2", - "dioxus-core 0.6.0-alpha.2", - "dioxus-html 0.6.0-alpha.2", - "dioxus-rsx 0.6.0-alpha.2", - "dioxus-signals 0.6.0-alpha.2", + "dioxus-cli-config", + "dioxus-core", + "dioxus-html", + "dioxus-rsx", + "dioxus-signals", "futures-util", "serde", "serde_json", @@ -1450,62 +1265,20 @@ dependencies = [ "tracing", ] -[[package]] -name = "dioxus-html" -version = "0.4.3" -source = "git+https://github.com/DioxusLabs/dioxus?rev=53343bf#53343bfd194300c3336e90d9b5e24d50da9c1637" -dependencies = [ - "async-trait", - "dioxus-core 0.4.3", - "dioxus-html-internal-macro 0.4.3", - "enumset", - "euclid", - "futures-channel", - "generational-box 0.4.3", - "keyboard-types", - "serde", - "serde-value", - "serde_json", - "serde_repr", - "web-sys", -] - -[[package]] -name = "dioxus-html" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f01a0826f179adad6ea8d6586746e8edde0c602cc86f4eb8e5df7a3b204c4018" -dependencies = [ - "async-trait", - "dioxus-core 0.5.6", - "dioxus-html-internal-macro 0.5.6", - "enumset", - "euclid", - "futures-channel", - "generational-box 0.5.6", - "keyboard-types", - "serde", - "serde-value", - "serde_json", - "serde_repr", - "tracing", - "web-sys", -] - [[package]] name = "dioxus-html" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" +source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" dependencies = [ "async-trait", - "dioxus-core 0.6.0-alpha.2", - "dioxus-core-macro 0.6.0-alpha.2", - "dioxus-hooks 0.6.0-alpha.2", - "dioxus-html-internal-macro 0.6.0-alpha.2", + "dioxus-core", + "dioxus-core-macro", + "dioxus-hooks", + "dioxus-html-internal-macro", "enumset", "euclid", "futures-channel", - "generational-box 0.6.0-alpha.2", + "generational-box", "js-sys", "keyboard-types", "lazy-js-bundle", @@ -1520,33 +1293,10 @@ dependencies = [ "web-sys", ] -[[package]] -name = "dioxus-html-internal-macro" -version = "0.4.3" -source = "git+https://github.com/DioxusLabs/dioxus?rev=53343bf#53343bfd194300c3336e90d9b5e24d50da9c1637" -dependencies = [ - "convert_case 0.6.0", - "proc-macro2", - "quote", - "syn 2.0.74", -] - -[[package]] -name = "dioxus-html-internal-macro" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b96f35a608d0ab8f4ca6f66ce1828354e4ebd41580b12454f490221a11da93c" -dependencies = [ - "convert_case 0.6.0", - "proc-macro2", - "quote", - "syn 2.0.74", -] - [[package]] name = "dioxus-html-internal-macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" +source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" dependencies = [ "convert_case 0.6.0", "proc-macro2", @@ -1557,10 +1307,10 @@ dependencies = [ [[package]] name = "dioxus-interpreter-js" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" +source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" dependencies = [ - "dioxus-core 0.6.0-alpha.2", - "dioxus-html 0.6.0-alpha.2", + "dioxus-core", + "dioxus-html", "js-sys", "lazy-js-bundle", "serde", @@ -1571,48 +1321,34 @@ dependencies = [ "web-sys", ] -[[package]] -name = "dioxus-lib" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bd39b2c41dd1915dcb91d914ea72d8b646f1f8995aaeff82816b862ec586ecd" -dependencies = [ - "dioxus-core 0.5.6", - "dioxus-core-macro 0.5.6", - "dioxus-hooks 0.5.6", - "dioxus-html 0.5.6", - "dioxus-rsx 0.5.6", - "dioxus-signals 0.5.7", -] - [[package]] name = "dioxus-lib" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" +source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" dependencies = [ - "dioxus-config-macro 0.6.0-alpha.2", - "dioxus-core 0.6.0-alpha.2", - "dioxus-core-macro 0.6.0-alpha.2", - "dioxus-hooks 0.6.0-alpha.2", - "dioxus-html 0.6.0-alpha.2", - "dioxus-rsx 0.6.0-alpha.2", - "dioxus-signals 0.6.0-alpha.2", + "dioxus-config-macro", + "dioxus-core", + "dioxus-core-macro", + "dioxus-hooks", + "dioxus-html", + "dioxus-rsx", + "dioxus-signals", ] [[package]] name = "dioxus-liveview" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" +source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" dependencies = [ "axum", - "dioxus-cli-config 0.6.0-alpha.2", - "dioxus-core 0.6.0-alpha.2", - "dioxus-hot-reload 0.6.0-alpha.2", - "dioxus-html 0.6.0-alpha.2", + "dioxus-cli-config", + "dioxus-core", + "dioxus-hot-reload", + "dioxus-html", "dioxus-interpreter-js", "futures-channel", "futures-util", - "generational-box 0.6.0-alpha.2", + "generational-box", "rustc-hash", "serde", "serde_json", @@ -1626,35 +1362,21 @@ dependencies = [ [[package]] name = "dioxus-material-icons" -version = "1.1.0" -source = "git+https://github.com/ealmloff/dioxus-material-icons#a44cae403aa2932c68c19ebe064300acac83e29b" -dependencies = [ - "dioxus-lib 0.5.6", -] - -[[package]] -name = "dioxus-router" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c235c5dbeb528c0c2b0424763da812e7500df69b82eddac54db6f4975e065c5f" +version = "2.0.0" +source = "git+https://github.com/jkelleyrtp/dioxus-material-icons?branch=jk/git-rev#e494160bd3e03b78ee868c5dde83a16fce77fd48" dependencies = [ - "dioxus-cli-config 0.5.6", - "dioxus-lib 0.5.6", - "dioxus-router-macro 0.5.6", - "tracing", - "url", - "urlencoding", + "dioxus", ] [[package]] name = "dioxus-router" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" +source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" dependencies = [ - "dioxus-cli-config 0.6.0-alpha.2", + "dioxus-cli-config", "dioxus-fullstack", - "dioxus-lib 0.6.0-alpha.2", - "dioxus-router-macro 0.6.0-alpha.2", + "dioxus-lib", + "dioxus-router-macro", "gloo", "gloo-utils 0.1.7", "js-sys", @@ -1666,22 +1388,10 @@ dependencies = [ "web-sys", ] -[[package]] -name = "dioxus-router-macro" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e7cd1c5137ba361f2150cdea6b3bc9ddda7b1af84b22c9ee6b5499bf43e1381" -dependencies = [ - "proc-macro2", - "quote", - "slab", - "syn 2.0.74", -] - [[package]] name = "dioxus-router-macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" +source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" dependencies = [ "proc-macro2", "quote", @@ -1691,52 +1401,41 @@ dependencies = [ [[package]] name = "dioxus-rsx" -version = "0.4.3" -source = "git+https://github.com/DioxusLabs/dioxus?rev=53343bf#53343bfd194300c3336e90d9b5e24d50da9c1637" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.74", - "tracing", -] - -[[package]] -name = "dioxus-rsx" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15c400bc8a779107d8f3a67b14375db07dbd2bc31163bf085a8e9097f36f7179" +version = "0.6.0-alpha.2" +source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" dependencies = [ - "dioxus-core 0.5.6", + "dioxus-core", "internment", - "krates", "proc-macro2", + "proc-macro2-diagnostics", "quote", + "serde", "syn 2.0.74", "tracing", ] [[package]] -name = "dioxus-rsx" -version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" +name = "dioxus-sdk" +version = "0.6.0" +source = "git+https://github.com/dioxuslabs/sdk?branch=feat/dioxus-0.6#bcd2324d4c5966a9b0cb818b14fc38e74037b64f" dependencies = [ - "dioxus-core 0.6.0-alpha.2", - "internment", - "proc-macro2", - "proc-macro2-diagnostics", - "quote", + "cfg-if", + "dioxus", + "js-sys", "serde", - "syn 2.0.74", + "serde_json", "tracing", + "unic-langid", + "uuid", ] [[package]] name = "dioxus-search" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/dioxus-search#589d2a944bf6bdca4ab092af716f4bd4ecc499e6" +source = "git+https://github.com/dioxuslabs/dioxus-search#f43f94a307409eea9eedda1d32d08f983b119f6a" dependencies = [ "bytes", - "dioxus-router 0.5.6", + "dioxus-router", "dioxus-search-macro", "dioxus-search-shared", "getrandom 0.2.15", @@ -1752,7 +1451,7 @@ dependencies = [ [[package]] name = "dioxus-search-macro" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/dioxus-search#589d2a944bf6bdca4ab092af716f4bd4ecc499e6" +source = "git+https://github.com/dioxuslabs/dioxus-search#f43f94a307409eea9eedda1d32d08f983b119f6a" dependencies = [ "quote", "syn 2.0.74", @@ -1761,10 +1460,10 @@ dependencies = [ [[package]] name = "dioxus-search-shared" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/dioxus-search#589d2a944bf6bdca4ab092af716f4bd4ecc499e6" +source = "git+https://github.com/dioxuslabs/dioxus-search#f43f94a307409eea9eedda1d32d08f983b119f6a" dependencies = [ "bytes", - "dioxus-router 0.5.6", + "dioxus-router", "getrandom 0.2.15", "log", "scraper", @@ -1776,47 +1475,15 @@ dependencies = [ "yazi", ] -[[package]] -name = "dioxus-signals" -version = "0.4.3" -source = "git+https://github.com/DioxusLabs/dioxus?rev=53343bf#53343bfd194300c3336e90d9b5e24d50da9c1637" -dependencies = [ - "dioxus-core 0.4.3", - "flume", - "futures-channel", - "futures-util", - "generational-box 0.4.3", - "once_cell", - "parking_lot", - "rustc-hash", - "tracing", -] - -[[package]] -name = "dioxus-signals" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e3e224cd3d3713f159f0199fc088c292a0f4adb94996b48120157f6a8f8342d" -dependencies = [ - "dioxus-core 0.5.6", - "futures-channel", - "futures-util", - "generational-box 0.5.6", - "once_cell", - "parking_lot", - "rustc-hash", - "tracing", -] - [[package]] name = "dioxus-signals" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" +source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" dependencies = [ - "dioxus-core 0.6.0-alpha.2", + "dioxus-core", "futures-channel", "futures-util", - "generational-box 0.6.0-alpha.2", + "generational-box", "once_cell", "parking_lot", "rustc-hash", @@ -1827,16 +1494,16 @@ dependencies = [ [[package]] name = "dioxus-ssr" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" +source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" dependencies = [ "askama_escape", "async-trait", "chrono", - "dioxus-cli-config 0.6.0-alpha.2", - "dioxus-core 0.6.0-alpha.2", - "dioxus-html 0.6.0-alpha.2", + "dioxus-cli-config", + "dioxus-core", + "dioxus-html", "dioxus-interpreter-js", - "generational-box 0.6.0-alpha.2", + "generational-box", "http 1.1.0", "lru", "rustc-hash", @@ -1849,14 +1516,14 @@ dependencies = [ [[package]] name = "dioxus-static-site-generation" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" +source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" dependencies = [ "axum", - "dioxus-cli-config 0.6.0-alpha.2", + "dioxus-cli-config", "dioxus-fullstack", - "dioxus-hot-reload 0.6.0-alpha.2", - "dioxus-lib 0.6.0-alpha.2", - "dioxus-router 0.6.0-alpha.2", + "dioxus-hot-reload", + "dioxus-lib", + "dioxus-router", "dioxus-ssr", "dioxus-web", "http 1.1.0", @@ -1866,35 +1533,21 @@ dependencies = [ "tracing", ] -[[package]] -name = "dioxus-std" -version = "0.5.0" -source = "git+https://github.com/ealmloff/dioxus-std?branch=copy-UseI18#b9026cf478e7816a7d39f23b6a214cb32030ed49" -dependencies = [ - "cfg-if", - "dioxus 0.4.3", - "js-sys", - "serde", - "serde_json", - "unic-langid", - "uuid", -] - [[package]] name = "dioxus-web" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" +source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" dependencies = [ "ciborium", "console_error_panic_hook", - "dioxus-core 0.6.0-alpha.2", - "dioxus-hot-reload 0.6.0-alpha.2", - "dioxus-html 0.6.0-alpha.2", + "dioxus-core", + "dioxus-hot-reload", + "dioxus-html", "dioxus-interpreter-js", - "dioxus-signals 0.6.0-alpha.2", + "dioxus-signals", "futures-channel", "futures-util", - "generational-box 0.6.0-alpha.2", + "generational-box", "js-sys", "rustc-hash", "serde", @@ -1917,14 +1570,14 @@ dependencies = [ "axum", "chrono", "console_error_panic_hook", - "dioxus 0.6.0-alpha.2", + "dioxus", "dioxus-desktop", "dioxus-fullstack", "dioxus-liveview", "dioxus-material-icons", + "dioxus-sdk", "dioxus-search", "dioxus-ssr", - "dioxus-std", "dioxus-web", "form_urlencoded", "fs_extra", @@ -1937,7 +1590,6 @@ dependencies = [ "include_dir", "js-sys", "log", - "manganis 0.3.0-alpha.1 (git+https://github.com/DioxusLabs/collect-assets)", "mdbook-shared", "once_cell", "pretty_assertions", @@ -1962,7 +1614,7 @@ dependencies = [ [[package]] name = "dioxus_server_macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" +source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" dependencies = [ "convert_case 0.6.0", "proc-macro2", @@ -2191,12 +1843,6 @@ dependencies = [ "rustc_version", ] -[[package]] -name = "fixedbitset" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" - [[package]] name = "flate2" version = "1.0.31" @@ -2207,17 +1853,6 @@ dependencies = [ "miniz_oxide", ] -[[package]] -name = "flume" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" -dependencies = [ - "futures-core", - "futures-sink", - "spin", -] - [[package]] name = "fnv" version = "1.0.7" @@ -2510,27 +2145,10 @@ dependencies = [ "x11", ] -[[package]] -name = "generational-box" -version = "0.4.3" -source = "git+https://github.com/DioxusLabs/dioxus?rev=53343bf#53343bfd194300c3336e90d9b5e24d50da9c1637" -dependencies = [ - "parking_lot", -] - -[[package]] -name = "generational-box" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "557cf2cbacd0504c6bf8c29f52f8071e0de1d9783346713dc6121d7fa1e5d0e0" -dependencies = [ - "parking_lot", -] - [[package]] name = "generational-box" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" +source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" dependencies = [ "parking_lot", ] @@ -2970,7 +2588,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.3.0", + "indexmap 2.4.0", "slab", "tokio", "tokio-util", @@ -2989,7 +2607,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.1.0", - "indexmap 2.3.0", + "indexmap 2.4.0", "slab", "tokio", "tokio-util", @@ -3370,9 +2988,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3fc2e30ba82dd1b3911c8de1ffc143c74a914a14e99514d7637e3099df5ea0" +checksum = "93ead53efc7ea8ed3cfb0c79fc8023fbb782a5432b52830b6518941cebe6505c" dependencies = [ "equivalent", "hashbrown 0.14.5", @@ -3418,32 +3036,6 @@ dependencies = [ "parking_lot", ] -[[package]] -name = "interprocess-docfix" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b84ee245c606aeb0841649a9288e3eae8c61b853a8cd5c0e14450e96d53d28f" -dependencies = [ - "blocking", - "cfg-if", - "futures-core", - "futures-io", - "intmap", - "libc", - "once_cell", - "rustc_version", - "spinning", - "thiserror", - "to_method", - "winapi", -] - -[[package]] -name = "intmap" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae52f28f45ac2bc96edb7714de995cffc174a395fb0abf5bff453587c980d7b9" - [[package]] name = "inventory" version = "0.3.15" @@ -3548,19 +3140,6 @@ dependencies = [ "unicode-segmentation", ] -[[package]] -name = "krates" -version = "0.16.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcb3baf2360eb25ad31f0ada3add63927ada6db457791979b82ac199f835cb9" -dependencies = [ - "cargo-platform", - "cargo_metadata", - "cfg-expr", - "petgraph", - "semver", -] - [[package]] name = "kuchiki" version = "0.8.1" @@ -3589,7 +3168,7 @@ dependencies = [ [[package]] name = "lazy-js-bundle" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#cab573eefd28bde49ed4d162e5e5c46321e1cdf6" +source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" [[package]] name = "lazy_static" @@ -3732,15 +3311,7 @@ version = "0.3.0-alpha.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "10870c8dbbfa53eaad99e7cc0689de6f2033d8769e02df28cb681b437e159473" dependencies = [ - "manganis-macro 0.3.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "manganis" -version = "0.3.0-alpha.1" -source = "git+https://github.com/DioxusLabs/collect-assets#00b8a5c0d1b2101b52998a577d383b436818dba0" -dependencies = [ - "manganis-macro 0.3.0-alpha.1 (git+https://github.com/DioxusLabs/collect-assets)", + "manganis-macro", ] [[package]] @@ -3761,23 +3332,6 @@ dependencies = [ "url", ] -[[package]] -name = "manganis-common" -version = "0.3.0-alpha.1" -source = "git+https://github.com/DioxusLabs/collect-assets#00b8a5c0d1b2101b52998a577d383b436818dba0" -dependencies = [ - "anyhow", - "base64 0.21.7", - "built", - "home", - "infer", - "reqwest 0.12.5", - "serde", - "toml 0.7.8", - "tracing", - "url", -] - [[package]] name = "manganis-common" version = "0.3.0-alpha.1" @@ -3809,19 +3363,6 @@ dependencies = [ "tracing-subscriber", ] -[[package]] -name = "manganis-macro" -version = "0.3.0-alpha.1" -source = "git+https://github.com/DioxusLabs/collect-assets#00b8a5c0d1b2101b52998a577d383b436818dba0" -dependencies = [ - "manganis-common 0.3.0-alpha.1 (git+https://github.com/DioxusLabs/collect-assets)", - "proc-macro2", - "quote", - "serde_json", - "syn 2.0.74", - "tracing-subscriber", -] - [[package]] name = "markup5ever" version = "0.10.1" @@ -3865,11 +3406,11 @@ checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" [[package]] name = "mdbook-macro" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/include_mdbook#e187fbda66d5db03ec3fecc50e4b453cc30fe6d1" +source = "git+https://github.com/dioxuslabs/include_mdbook#0ac789e1832cd23bbeb1bca3313bca0371cdb6c2" dependencies = [ "anyhow", "convert_case 0.6.0", - "dioxus-rsx 0.5.6", + "dioxus-rsx", "macro_state", "manganis-common 0.3.0-alpha.1 (git+https://github.com/DioxusLabs/manganis)", "mdbook-shared", @@ -3886,7 +3427,7 @@ dependencies = [ [[package]] name = "mdbook-shared" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/include_mdbook#e187fbda66d5db03ec3fecc50e4b453cc30fe6d1" +source = "git+https://github.com/dioxuslabs/include_mdbook#0ac789e1832cd23bbeb1bca3313bca0371cdb6c2" dependencies = [ "anyhow", "bytes", @@ -4249,15 +3790,6 @@ dependencies = [ "vcpkg", ] -[[package]] -name = "ordered-float" -version = "2.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c" -dependencies = [ - "num-traits", -] - [[package]] name = "ordered-stream" version = "0.2.0" @@ -4340,16 +3872,6 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" -[[package]] -name = "petgraph" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" -dependencies = [ - "fixedbitset", - "indexmap 2.3.0", -] - [[package]] name = "phf" version = "0.8.0" @@ -4540,7 +4062,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42cf17e9a1800f5f396bc67d193dc9411b59012a5876445ef450d449881e1016" dependencies = [ "base64 0.22.1", - "indexmap 2.3.0", + "indexmap 2.4.0", "quick-xml", "serde", "time", @@ -5245,9 +4767,6 @@ name = "semver" version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" -dependencies = [ - "serde", -] [[package]] name = "send_wrapper" @@ -5267,16 +4786,6 @@ dependencies = [ "serde_derive", ] -[[package]] -name = "serde-value" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" -dependencies = [ - "ordered-float", - "serde", -] - [[package]] name = "serde-wasm-bindgen" version = "0.5.0" @@ -5651,15 +5160,6 @@ dependencies = [ "lock_api", ] -[[package]] -name = "spinning" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d4f0e86297cad2658d92a707320d87bf4e6ae1050287f51d19b67ef3f153a7b" -dependencies = [ - "lock_api", -] - [[package]] name = "srtparse" version = "0.2.0" @@ -5800,7 +5300,7 @@ dependencies = [ [[package]] name = "syntect-html" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/include_mdbook#e187fbda66d5db03ec3fecc50e4b453cc30fe6d1" +source = "git+https://github.com/dioxuslabs/include_mdbook#0ac789e1832cd23bbeb1bca3313bca0371cdb6c2" dependencies = [ "proc-macro2", "quote", @@ -6014,12 +5514,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" -[[package]] -name = "to_method" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7c4ceeeca15c8384bbc3e011dbd8fccb7f068a440b752b7d9b32ceb0ca0e2e8" - [[package]] name = "tokio" version = "1.39.2" @@ -6173,7 +5667,7 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.3.0", + "indexmap 2.4.0", "serde", "serde_spanned", "toml_datetime", @@ -6186,7 +5680,7 @@ version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" dependencies = [ - "indexmap 2.3.0", + "indexmap 2.4.0", "serde", "serde_spanned", "toml_datetime", @@ -6469,7 +5963,7 @@ checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" [[package]] name = "use-mdbook" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/include_mdbook#e187fbda66d5db03ec3fecc50e4b453cc30fe6d1" +source = "git+https://github.com/dioxuslabs/include_mdbook#0ac789e1832cd23bbeb1bca3313bca0371cdb6c2" dependencies = [ "lazy_static", "mdbook-macro", @@ -7389,3 +6883,8 @@ dependencies = [ "quote", "syn 1.0.109", ] + +[[patch.unused]] +name = "dioxus-mobile" +version = "0.6.0-alpha.2" +source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" diff --git a/Cargo.toml b/Cargo.toml index b32d92d53..9686a1dd9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,6 +3,7 @@ name = "dioxus_docs_site" version = "0.0.0" authors = ["Jonathan Kelley "] edition = "2018" +resolver = "2" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -19,10 +20,6 @@ dioxus-desktop = { git = "https://github.com/dioxuslabs/dioxus", optional = true dioxus-liveview = { git = "https://github.com/dioxuslabs/dioxus", features = [ "axum", ], optional = true } -# dioxus-tui = { git = "https://github.com/dioxuslabs/blitz", optional = true } -# dioxus-native-core = { git = "https://github.com/dioxuslabs/blitz", optional = true } -# dioxus-native-core-macro = { git = "https://github.com/dioxuslabs/blitz", optional = true } -manganis = { git = "https://github.com/DioxusLabs/collect-assets" } serde = { version = "1.0.163", features = ["derive"] } serde_json = "1.0.96" log = "0.4.17" @@ -32,9 +29,10 @@ once_cell = "1.17.1" console_error_panic_hook = "0.1.7" gloo-history = "0.1.3" autoexport = "0.1.0" -dioxus-material-icons = { git = "https://github.com/ealmloff/dioxus-material-icons" } include_dir = "0.7.3" anyhow = "1.0.71" + +dioxus-material-icons = { git = "https://github.com/jkelleyrtp/dioxus-material-icons", branch = "jk/git-rev" } syntect-html = { git = "https://github.com/dioxuslabs/include_mdbook" } mdbook-shared = { git = "https://github.com/dioxuslabs/include_mdbook" } use-mdbook = { git = "https://github.com/dioxuslabs/include_mdbook" } @@ -71,7 +69,7 @@ stork-lib = { version = "1.6.0", features = [ ], default-features = false } # Used only in doc tests -dioxus-std = { git = "https://github.com/ealmloff/dioxus-std", branch = "copy-UseI18", features = [ +dioxus-sdk = { git = "https://github.com/dioxuslabs/sdk", branch = "feat/dioxus-0.6", features = [ "i18n", ], optional = true } tower-http = { version = "0.5.0", optional = true, features = ["timeout"] } @@ -79,23 +77,49 @@ tracing = "0.1.40" rand = { version = "0.8.5", optional = true } [patch.crates-io] -dioxus = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-lib = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-core = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-core-macro = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-signals = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-html = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-cli-config = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-router = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-router-macro = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-rsx = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-lib = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-core = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-core-macro = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-config-macro = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-router = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-router-macro = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-html = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-html-internal-macro = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-hooks = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-web = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-ssr = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-mobile = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-desktop = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-interpreter-js = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-liveview = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-rsx = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-signals = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-cli-config = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +generational-box = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-hot-reload = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus_server_macro = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-fullstack = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } + +# [patch.'https://github.com/dioxuslabs/dioxus'] +# dioxus = { git = "https://github.com/dioxuslabs/dioxus?query=blah&rev=959ab67" } +# dioxus-lib = { git = "https://github.com/dioxuslabs/dioxus?query=blah&rev=959ab67" } +# dioxus-core = { git = "https://github.com/dioxuslabs/dioxus?query=blah&rev=959ab67" } +# dioxus-core-macro = { git = "https://github.com/dioxuslabs/dioxus?query=blah&rev=959ab67" } +# dioxus-signals = { git = "https://github.com/dioxuslabs/dioxus?query=blah&rev=959ab67" } +# dioxus-html = { git = "https://github.com/dioxuslabs/dioxus?query=blah&rev=959ab67" } +# dioxus-cli-config = { git = "https://github.com/dioxuslabs/dioxus?query=blah&rev=959ab67" } +# dioxus-router = { git = "https://github.com/dioxuslabs/dioxus?query=blah&rev=959ab67" } +# dioxus-router-macro = { git = "https://github.com/dioxuslabs/dioxus?query=blah&rev=959ab67" } +# dioxus-rsx = { git = "https://github.com/dioxuslabs/dioxus?query=blah&rev=959ab67" } +# dioxus-web = { git = "https://github.com/dioxuslabs/dioxus?query=blah&rev=959ab67" } +# dioxus-ssr = { git = "https://github.com/dioxuslabs/dioxus?query=blah&rev=959ab67" } +# dioxus-desktop = { git = "https://github.com/dioxuslabs/dioxus?query=blah&rev=959ab67" } +# dioxus-liveview = { git = "https://github.com/dioxuslabs/dioxus?query=blah&rev=959ab67" } +# dioxus-fullstack = { git = "https://github.com/dioxuslabs/dioxus?query=blah&rev=959ab67" } + -dioxus-web = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-ssr = { git = "https://github.com/dioxuslabs/dioxus" } # dioxus-tui = { git = "https://github.com/dioxuslabs/blitz" } -dioxus-desktop = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-liveview = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-fullstack = { git = "https://github.com/dioxuslabs/dioxus" } # dioxus-native-core = { git = "https://github.com/dioxuslabs/blitz" } # dioxus-native-core-macro = { git = "https://github.com/dioxuslabs/blitz" } @@ -129,7 +153,7 @@ doc_test = [ "gloo-storage", "pretty_assertions", "tower-http", - "dioxus-std", + "dioxus-sdk", "http", "rand" ] diff --git a/docs-src/0.5/SUMMARY.md b/docs-src/0.5/SUMMARY.md index a9fc9f146..91678839c 100644 --- a/docs-src/0.5/SUMMARY.md +++ b/docs-src/0.5/SUMMARY.md @@ -72,7 +72,6 @@ - [Testing](cookbook/testing.md) - [Examples](cookbook/examples.md) - [Tailwind](cookbook/tailwind.md) - - [Custom Renderer](cookbook/custom_renderer.md) - [Optimizing](cookbook/optimizing.md) --- @@ -103,4 +102,4 @@ - [Hooks](migration/hooks.md) - [State](migration/state.md) - [Fermi](migration/fermi.md) - - [Props](migration/props.md) \ No newline at end of file + - [Props](migration/props.md) diff --git a/docs-src/0.5/en/contributing/project_structure.md b/docs-src/0.5/en/contributing/project_structure.md index 2fc43fe72..f6b5ab286 100644 --- a/docs-src/0.5/en/contributing/project_structure.md +++ b/docs-src/0.5/en/contributing/project_structure.md @@ -25,7 +25,7 @@ There are many packages in the Dioxus organization. This document will help you ## Core utilities - [core](https://github.com/DioxusLabs/dioxus/tree/main/packages/core): The core virtual dom implementation every Dioxus application uses - - You can read more about the architecture of the core [in this blog post](https://dioxuslabs.com/blog/templates-diffing/) and the [custom renderer section of the guide](../custom_renderer/index.md) + - You can read more about the architecture of the core [in this blog post](https://dioxuslabs.com/blog/templates-diffing/) - [RSX](https://github.com/DioxusLabs/dioxus/tree/main/packages/RSX): The core parsing for RSX used for hot reloading, autoformatting, and the macro - [core-macro](https://github.com/DioxusLabs/dioxus/tree/main/packages/core-macro): The rsx! macro used to write Dioxus applications. (This is a wrapper over the RSX crate) - [HTML macro](https://github.com/DioxusLabs/dioxus-html-macro): A html-like alternative to the RSX macro diff --git a/docs-src/0.5/en/cookbook/index.md b/docs-src/0.5/en/cookbook/index.md index 94ed29285..5def6215d 100644 --- a/docs-src/0.5/en/cookbook/index.md +++ b/docs-src/0.5/en/cookbook/index.md @@ -12,5 +12,4 @@ There are a few different sections in the cookbook: - [Testing](testing.md) explains how to examine the unique flavor of Dioxus-specific features, like components. - [Examples](examples.md) is a curated list of delightful recipes that demonstrate the various ways of using Dioxus ingredients. - [Tailwind](tailwind.md) reveals the secrets of combining your Tailwind and Dioxus ingredients into a complete meal. You will also learn about using other NPM ingredients (packages) with Dioxus. -- In the [Custom Renderer](custom_renderer.md) section, we embark on a cooking adventure, inventing new ways to cook with Dioxus! -- [Optimizing](optimizing.md) will show you how to maximize the quality of your ingredients. \ No newline at end of file +- [Optimizing](optimizing.md) will show you how to maximize the quality of your ingredients. diff --git a/src/components/desktop_dependencies.rs b/src/components/desktop_dependencies.rs index f46f5457f..6af7c0c46 100644 --- a/src/components/desktop_dependencies.rs +++ b/src/components/desktop_dependencies.rs @@ -69,23 +69,20 @@ pub(crate) fn DesktopDependencies() -> Element { if active() { dioxus_material_icons::MaterialIcon { name: "expand_more", - color: MaterialIconColor::Custom("gray".to_string()) + color: MaterialIconColor::Custom("gray".to_string()), } } else { dioxus_material_icons::MaterialIcon { name: "chevron_right", - color: MaterialIconColor::Custom("gray".to_string()) + color: MaterialIconColor::Custom("gray".to_string()), } - }, + } "Desktop Specific Dependencies" } if active() { - div { - class: "flex flex-col items-center justify-center", - div { - class: "flex flex-col width-full items-center justify-center space-y-4 divide-y-2 border-white m-5 rounded-lg", - div { - class: "flex flex-row items-center justify-center m-2", + div { class: "flex flex-col items-center justify-center", + div { class: "flex flex-col width-full items-center justify-center space-y-4 divide-y-2 border-white m-5 rounded-lg", + div { class: "flex flex-row items-center justify-center m-2", "Your OS: " for platform in Platform::ALL { button { @@ -98,10 +95,7 @@ pub(crate) fn DesktopDependencies() -> Element { } } } - div { - class: "p-4", - {dependencies} - } + div { class: "p-4", {dependencies} } } } } @@ -113,14 +107,15 @@ fn WindowsDependencies() -> Element { div { p { "Windows apps depend on WebView2 – a library that should be installed in all modern Windows distributions. If you have Edge installed, then Dioxus will work fine. If you _don't_ have WebView2, " - Link { + Link { to: "https://developer.microsoft.com/en-us/microsoft-edge/webview2/", "then you can install it through Microsoft" - to: "https://developer.microsoft.com/en-us/microsoft-edge/webview2/" } ". MS provides 3 options:" } ol { - li { "A tiny \"evergreen\" _bootstrapper_ that fetches an installer from Microsoft's CDN." } + li { + "A tiny \"evergreen\" _bootstrapper_ that fetches an installer from Microsoft's CDN." + } li { "A tiny _installer_ that fetches WebView2 from Microsoft's CDN." } li { "A statically linked version of WebView2 in your final binary for offline users." } } @@ -138,10 +133,7 @@ fn LinuxDependencies() -> Element { } p { "If you run into issues, make sure you have all the basics installed, as outlined in the " - Link { - "Tauri docs" - to: "https://beta.tauri.app/start/prerequisites/" - } + Link { to: "https://beta.tauri.app/start/prerequisites/", "Tauri docs" } "." } } @@ -151,7 +143,9 @@ fn LinuxDependencies() -> Element { fn MacOSDependencies() -> Element { rsx! { div { - p { "Currently – everything for macOS is built right in! However, you might run into an issue if you're using nightly Rust due to some permissions issues in our Tao dependency (which have been resolved but not published)." } + p { + "Currently – everything for macOS is built right in! However, you might run into an issue if you're using nightly Rust due to some permissions issues in our Tao dependency (which have been resolved but not published)." + } } } } diff --git a/src/components/homepage/hero.rs b/src/components/homepage/hero.rs index 85df071be..d46452f78 100644 --- a/src/components/homepage/hero.rs +++ b/src/components/homepage/hero.rs @@ -21,12 +21,12 @@ pub(crate) fn Hero() -> Element { img { src: "/static/multiplatform-dark.svg", class: "mx-auto max-h-48 lg:max-h-96 dark:hidden", - alt: "Dioxus Contributors" + alt: "Dioxus Contributors", } img { src: "/static/multiplatform-light.svg", class: "mx-auto max-h-48 lg:max-h-96 hidden dark:block", - alt: "Dioxus Contributors" + alt: "Dioxus Contributors", } div { class: "pt-12 text-white text-[1.2em] font-sans font-bold flex flex-col md:flex-row justify-center md:space-x-4 md:space-y-0 space-y-4", diff --git a/src/components/homepage/mod.rs b/src/components/homepage/mod.rs index 9d498f8aa..9794b1da4 100644 --- a/src/components/homepage/mod.rs +++ b/src/components/homepage/mod.rs @@ -56,7 +56,9 @@ fn ProjectCards() -> Element { div { class: "container mx-auto px-6 lg:px-64", div { class: "flex flex-wrap -mx-3", for (title , description) in CARDS.iter() { - div { key: "{title}", class: "w-full md:w-1/2 lg:w-1/3 px-3 mb-6 text-xs dark:text-white", + div { + key: "{title}", + class: "w-full md:w-1/2 lg:w-1/3 px-3 mb-6 text-xs dark:text-white", div { class: "p-6 md:p-8 h-full rounded shadow-white hover:shadow-xl hover:border-transparent cursor-pointer", div { h3 { class: "mb-4 text-2xl font-semibold font-heading font-sans", @@ -99,60 +101,50 @@ fn AvailablePlatforms() -> Element { div { class: "max-w-screen-lg mx-auto pb-8 px-2 md:px-16 dark:text-white", // div { class: "max-w-screen-xl mx-auto pb-64 px-16 dark:text-white", TriShow { - left: None, - center: None, - right: rsx!( - "Build for the web using Rust and WebAssembly. As fast as SolidJS and more robust than React. Integrated hot reloading for instant iterations." - ), + left: rsx! { }, + center: rsx! { }, + right: rsx! { "Build for the web using Rust and WebAssembly. As fast as SolidJS and more robust than React. Integrated hot reloading for instant iterations." }, to: Route::Docs { child: BookRoute::GettingStartedIndex {}, }, - title: "Web with WASM" + title: "Web with WASM", } TriShow { - left: None, - center: None, - right: rsx!( - "Lightweight (<2mb) desktop and mobile apps with zero configuration. Choose between WebView or WGPU-enabled renderers. Runs on macOS, Windows, Linux, iOS, and Android." - ), + left: rsx! { }, + center: rsx! { }, + right: rsx! { "Lightweight (<2mb) desktop and mobile apps with zero configuration. Choose between WebView or WGPU-enabled renderers. Runs on macOS, Windows, Linux, iOS, and Android." }, to: Route::Docs { child: BookRoute::GettingStartedIndex {}, }, - title: "Desktop and Mobile" + title: "Desktop and Mobile", } TriShow { to: Route::Docs { child: BookRoute::GettingStartedIndex {}, }, title: "Terminal User Interfaces", - right: rsx!( - "Quickly convert any CLI tool to a beautiful interactive user interface with just a few lines of code. Runs anywhere with a terminal." - ), - left: None, - center: None + right: rsx! { "Quickly convert any CLI tool to a beautiful interactive user interface with just a few lines of code. Runs anywhere with a terminal." }, + left: rsx! { }, + center: rsx! { }, } TriShow { to: Route::Docs { child: BookRoute::GettingStartedIndex {}, }, title: "Fullstack Apps", - right: rsx!( - "Pre-render on the server, and hydrate on the client. Perfect lighthouse scores and performance over 1000x better than Node and Python. Perfect for static site generation or fullstack apps." - ), - left: None, - center: None + right: rsx! { "Pre-render on the server, and hydrate on the client. Perfect lighthouse scores and performance over 1000x better than Node and Python. Perfect for static site generation or fullstack apps." }, + left: rsx! { }, + center: rsx! { }, } TriShow { to: Route::Docs { child: BookRoute::GettingStartedIndex {}, }, title: "LiveView", - right: rsx!( - "Render your app entirely on the server. Zero backend configuration capable of handling thousands of active clients.", - ), - left: None, - center: None, - last: true + right: rsx! { "Render your app entirely on the server. Zero backend configuration capable of handling thousands of active clients." }, + left: rsx! { }, + center: rsx! { }, + last: true, } } } @@ -224,15 +216,15 @@ fn DeveloperExperience() -> Element { div { class: "w-1/2", ExperienceText { title: "Integrated Devtools", - content: "Hot reloading for instant iteration, automatic code formatting, convert HTML to RSX, and more." + content: "Hot reloading for instant iteration, automatic code formatting, convert HTML to RSX, and more.", } ExperienceText { title: "Minimal configuration", - content: "Start projects with `cargo new`. No build scripts or configuration required for development." + content: "Start projects with `cargo new`. No build scripts or configuration required for development.", } ExperienceText { title: "", - content: "Strong typing with no runtime overhead. Automatically derive props, forms, API clients, and more." + content: "Strong typing with no runtime overhead. Automatically derive props, forms, API clients, and more.", } } } @@ -267,7 +259,7 @@ fn IconSplit() -> Element { path { stroke_width: "1.5", fill_rule: "evenodd", - d: "M15.5 11.75a3.5 3.5 0 11-7 0 3.5 3.5 0 017 0zm1.444-.75a5.001 5.001 0 00-9.888 0H2.75a.75.75 0 100 1.5h4.306a5.001 5.001 0 009.888 0h4.306a.75.75 0 100-1.5h-4.306z" + d: "M15.5 11.75a3.5 3.5 0 11-7 0 3.5 3.5 0 017 0zm1.444-.75a5.001 5.001 0 00-9.888 0H2.75a.75.75 0 100 1.5h4.306a5.001 5.001 0 009.888 0h4.306a.75.75 0 100-1.5h-4.306z", } } } @@ -302,7 +294,7 @@ fn Stats() -> Element { img { src: "https://contrib.rocks/image?repo=dioxuslabs/dioxus&max=52&columns=13", class: "mx-auto pb-12", - alt: "Dioxus Contributors" + alt: "Dioxus Contributors", } } } diff --git a/src/components/homepage/snippets.rs b/src/components/homepage/snippets.rs index 3fce14c61..a3abc892d 100644 --- a/src/components/homepage/snippets.rs +++ b/src/components/homepage/snippets.rs @@ -48,10 +48,7 @@ pub(crate) fn Snippets() -> Element { li { class: "flex-none", button { class: "relative py-2 px-4 rounded-t-md", - class: match selected_snippet() == id { - true => "bg-ghmetal border-neutral-500/30 border text-white border-b-0", - false => "bg-ghdarkmetal", - }, + class: if selected_snippet() == id { "bg-ghmetal border-neutral-500/30 border text-white border-b-0" } else { "bg-ghdarkmetal" }, r#type: "button", onclick: move |_| selected_snippet.set(id), "{snippet.filename}" @@ -71,12 +68,9 @@ pub(crate) fn Snippets() -> Element { key: "{snippet.title}", class: "w-full min-h-0 p-4", // Instead of hiding/showing, we just render all the code blocks at once and hide them with css instead - class: match selected_snippet() { - a if a == id => "block", - _ => "hidden", - }, + class: if selected_snippet() == id { "block" } else { "hidden" }, background_color: "#2b303b", - dangerous_inner_html: "{snippet.html}" + dangerous_inner_html: "{snippet.html}", } } } diff --git a/src/components/learn.rs b/src/components/learn.rs index a7885aae3..6e4e493a2 100644 --- a/src/components/learn.rs +++ b/src/components/learn.rs @@ -13,8 +13,10 @@ pub(crate) static HIGHLIGHT_DOCS_CONTENT: GlobalSignal = Signal::global(|| /// The Markdown file path needs to be appended to this, including the first slash! const GITHUB_API_URL: &str = "https://api.github.com/repos/DioxusLabs/docsite/contents/docs-src/0.5/en"; + /// Use this URL while loading the file-specific URL. const GITHUB_EDIT_PAGE_FALLBACK_URL: &str = "https://github.com/DioxusLabs/docsite"; + /// The Markdown file path needs to be appended to this, including the first slash! const GITHUB_EDIT_PAGE_EDIT_URL: &str = "https://github.com/DioxusLabs/docsite/edit/main/docs-src/0.5/en"; @@ -25,9 +27,7 @@ pub(crate) fn Learn() -> Element { use_drop(|| *SHOW_DOCS_NAV.write() = false); rsx! { - div { - class: "w-full text-sm dark:bg-ideblack", - min_height: "100vh", + div { class: "w-full text-sm dark:bg-ideblack", min_height: "100vh", // Flex centered, every column grows to split into 3 div { class: "flex flex-row justify-center dark:text-[#dee2e6] font-light", @@ -72,21 +72,33 @@ fn DocVersionNav() -> Element { div { class: "pb-4", ul { class: "pl-2", li { class: "m-1 rounded-md pl-2", - span { - class: "hover:text-sky-500 dark:hover:text-sky-400", - dioxus_material_icons::MaterialIcon { name: "chevron_left", color: MaterialIconColor::Custom("gray".to_string()) } + span { class: "hover:text-sky-500 dark:hover:text-sky-400", + dioxus_material_icons::MaterialIcon { + name: "chevron_left", + color: MaterialIconColor::Custom("gray".to_string()), + } "0.5" } } li { class: "m-1 rounded-md pl-2", - a { href: "/learn/0.4", class: "hover:text-sky-500 dark:hover:text-sky-400", - dioxus_material_icons::MaterialIcon { name: "chevron_left", color: MaterialIconColor::Custom("gray".to_string()) } + a { + href: "/learn/0.4", + class: "hover:text-sky-500 dark:hover:text-sky-400", + dioxus_material_icons::MaterialIcon { + name: "chevron_left", + color: MaterialIconColor::Custom("gray".to_string()), + } "0.4" } } li { class: "m-1 rounded-md pl-2", - a { href: "/learn/0.3", class: "hover:text-sky-500 dark:hover:text-sky-400", - dioxus_material_icons::MaterialIcon { name: "chevron_left", color: MaterialIconColor::Custom("gray".to_string()) } + a { + href: "/learn/0.3", + class: "hover:text-sky-500 dark:hover:text-sky-400", + dioxus_material_icons::MaterialIcon { + name: "chevron_left", + color: MaterialIconColor::Custom("gray".to_string()), + } "0.3" } } @@ -107,22 +119,25 @@ fn DocVersionNav() -> Element { /// This renders a single section #[component] fn SidebarSection(chapter: &'static SummaryItem, keep_bottom_spacing: bool) -> Element { - let link = chapter.maybe_link()?; + let link = chapter.maybe_link().context("Could not get link")?; - let sections = link - .nested_items - .iter() - .map(|chapter| rsx! { SidebarChapter { chapter: chapter } }); + let sections = link.nested_items.iter().map(|chapter| { + rsx! { + SidebarChapter { chapter } + } + }); rsx! { - div { + div { class: "full-chapter", class: if keep_bottom_spacing { "pb-4 mb-6" }, if let Some(url) = &link.location { Link { onclick: move |_| *SHOW_SIDEBAR.write() = false, to: Route::Docs { child: *url }, - h3 { class: "font-semibold mb-2 hover:text-sky-500 dark:hover:text-sky-400", "{link.name}" } + h3 { class: "font-semibold mb-2 hover:text-sky-500 dark:hover:text-sky-400", + "{link.name}" + } } } ul { class: "ml-1", {sections} } @@ -132,7 +147,7 @@ fn SidebarSection(chapter: &'static SummaryItem, keep_bottom_spacing: #[component] fn SidebarChapter(chapter: &'static SummaryItem) -> Element { - let link = chapter.maybe_link()?; + let link = chapter.maybe_link().context("Could not get link")?; let url = link.location.as_ref().unwrap(); let mut list_toggle = use_signal(|| false); @@ -157,7 +172,7 @@ fn SidebarChapter(chapter: &'static SummaryItem) -> Element { class: "align-middle", dioxus_material_icons::MaterialIcon { name: "chevron_right", - color: MaterialIconColor::Custom("gray".to_string()) + color: MaterialIconColor::Custom("gray".to_string()), } } } @@ -170,7 +185,9 @@ fn SidebarChapter(chapter: &'static SummaryItem) -> Element { } } } else { - rsx! { LocationLink { chapter } } + rsx! { + LocationLink { chapter } + } } } @@ -178,7 +195,7 @@ fn SidebarChapter(chapter: &'static SummaryItem) -> Element { fn LocationLink(chapter: &'static SummaryItem) -> Element { let book_url = use_book().to_string(); - let link = chapter.maybe_link()?; + let link = chapter.maybe_link().context("Could not get link")?; let url = link.location.as_ref().unwrap(); rsx! { @@ -222,14 +239,22 @@ fn RightNav() -> Element { ul { for section in page.sections().iter().skip(1) { li { class: "pb-2 {padding_map[section.level-1]}", - a { class: "hover:text-sky-500 dark:hover:text-sky-400", href: "?phantom={section.id}#{section.id}", "{section.title}" } + a { + class: "hover:text-sky-500 dark:hover:text-sky-400", + href: "?phantom={section.id}#{section.id}", + "{section.title}" + } } } } h2 { class: "py-4 font-semibold", match edit_github_url.cloned() { - Some(url) => rsx!(a { class: "hover:text-sky-500 dark:hover:text-sky-400", href: "{url}", "Edit this page!" }), - None => rsx!(a { href: "{GITHUB_EDIT_PAGE_FALLBACK_URL}", "Edit this page!" }) + Some(url) => rsx! { + a { class: "hover:text-sky-500 dark:hover:text-sky-400", href: "{url}", "Edit this page!" } + }, + None => rsx! { + a { href: "{GITHUB_EDIT_PAGE_FALLBACK_URL}", "Edit this page!" } + }, } } h2 { class: "py-4 font-semibold", "Go to version" } @@ -254,8 +279,8 @@ fn Content() -> Element { } article { class: "markdown-body", Outlet:: {} } - // todo: we want left-right buttons to go between pages in the docs - // ContentFooter {} + // todo: we want left-right buttons to go between pages in the docs + // ContentFooter {} } } } @@ -264,14 +289,9 @@ fn Content() -> Element { fn ContentFooter() -> Element { rsx! { - div { - class: "chapter-nav", - button { - "left" - } - button { - "right" - } + div { class: "chapter-nav", + button { "left" } + button { "right" } } } } @@ -315,7 +335,7 @@ pub(crate) fn DocsO3(segments: Vec) -> Element { let navigator = use_navigator(); let route: Route = use_route(); navigator.push(route); - None + rsx!() } #[component] @@ -323,5 +343,5 @@ pub(crate) fn DocsO4(segments: Vec) -> Element { let navigator = use_navigator(); let route: Route = use_route(); navigator.push(route); - None + rsx!() } diff --git a/src/components/nav.rs b/src/components/nav.rs index fb4cbffd7..026bda76a 100644 --- a/src/components/nav.rs +++ b/src/components/nav.rs @@ -24,7 +24,11 @@ pub(crate) fn Nav() -> Element { let mut sidebar = SHOW_SIDEBAR.write(); *sidebar = !*sidebar; }, - MaterialIcon { name: "menu", size: 24, color: MaterialIconColor::Dark } + MaterialIcon { + name: "menu", + size: 24, + color: MaterialIconColor::Dark, + } } div { class: "flex z-50 md:flex-1 px-2", LinkList {} } div { class: "hidden md:flex h-full justify-end ml-2 flex-1", @@ -66,7 +70,7 @@ pub(crate) fn Nav() -> Element { Link { to: Route::Homepage {}, img { src: "https://avatars.githubusercontent.com/u/10237910?s=40&v=4", - class: "ml-4 h-10 rounded-full w-auto" + class: "ml-4 h-10 rounded-full w-auto", } } } @@ -108,9 +112,7 @@ fn LinkList() -> Element { width: "7", "aria-hidden": "true", class: "navbar_externalArrow___VWBd", - path { - "d": "M1.25215 5.54731L0.622742 4.9179L3.78169 1.75597H1.3834L1.38936 0.890915H5.27615V4.78069H4.40513L4.41109 2.38538L1.25215 5.54731Z", - } + path { "d": "M1.25215 5.54731L0.622742 4.9179L3.78169 1.75597H1.3834L1.38936 0.890915H5.27615V4.78069H4.40513L4.41109 2.38538L1.25215 5.54731Z" } } } } @@ -124,7 +126,7 @@ fn LinkList() -> Element { class: "flex title-font font-medium items-center text-gray-900", img { src: "https://avatars.githubusercontent.com/u/79236386?s=200&v=4", - class: "h-8 w-auto" + class: "h-8 w-auto", } span { class: "mx-3 text-xl dark:text-white leading-none font-bold hidden sm:block px-4", "Dioxus Labs" @@ -146,7 +148,11 @@ fn Search() -> Element { *SHOW_SEARCH.write() = true; }, div { class: "h-full my-auto flex flex-row align-middle justify-between", - MaterialIcon { name: "search", size: 24, color: MaterialIconColor::Dark } + MaterialIcon { + name: "search", + size: 24, + color: MaterialIconColor::Dark, + } span { class: "hidden sm:block pl-2 pr-4", "Search the docs" } } div { class: "hidden md:block border border-gray-300 rounded-lg p-1 text-xs text-gray-400", @@ -205,7 +211,11 @@ fn SearchModal() -> Element { // Search input div { class: "flex flex-row flex-grow border-b border-gray-300 pb-4", div { class: "my-auto flex flex-row", - MaterialIcon { name: "search", size: 40, color: MaterialIconColor::Dark } + MaterialIcon { + name: "search", + size: 40, + color: MaterialIconColor::Dark, + } // hide the input until show search so the onmounted fires if SHOW_SEARCH() { @@ -224,7 +234,7 @@ fn SearchModal() -> Element { }, class: "flex-grow bg-transparent border-none outline-none text-xl pl-2 text-gray-800 dark:text-gray-100", placeholder: "Search the docs", - value: "{search_text}" + value: "{search_text}", } } } @@ -232,7 +242,9 @@ fn SearchModal() -> Element { // Results div { class: "overflow-y-auto", - ul { SearchResults { results, search_text } } + ul { + SearchResults { results, search_text } + } } } } @@ -243,7 +255,9 @@ fn SearchModal() -> Element { #[component] fn SearchResults(results: Signal, search_text: Signal) -> Element { if let Err(err) = results.read().as_ref() { - return rsx! { div { class: "text-red-500", "{err}" } }; + return rsx! { + div { class: "text-red-500", "{err}" } + }; } let _results = results.read(); diff --git a/src/components/tutorials.rs b/src/components/tutorials.rs index edca61aa0..9f95a71b9 100644 --- a/src/components/tutorials.rs +++ b/src/components/tutorials.rs @@ -56,7 +56,7 @@ pub(crate) fn Tutorials() -> Element { div { class: "pt-4 pb-8", ul { for id in 0..TUTORIALS.len() { - TutorialPreview { id: id } + TutorialPreview { id } } } } @@ -90,7 +90,7 @@ fn TutorialPreview(id: usize) -> Element { #[component] pub(crate) fn Tutorial(id: usize) -> Element { - let tutorial = TUTORIALS.get(id)?; + let tutorial = TUTORIALS.get(id).context("No tutorial found")?; rsx!( div { diff --git a/src/doc_examples/conditional_rendering.rs b/src/doc_examples/conditional_rendering.rs index 6a924aaa3..98fc13e1d 100644 --- a/src/doc_examples/conditional_rendering.rs +++ b/src/doc_examples/conditional_rendering.rs @@ -9,7 +9,7 @@ pub fn App() -> Element { LogIn { is_logged_in: is_logged_in(), log_in: move |_| is_logged_in.set(true), - log_out: move |_| is_logged_in.set(false) + log_out: move |_| is_logged_in.set(false), } } } @@ -23,7 +23,9 @@ fn LogIn(is_logged_in: bool, log_in: EventHandler, log_out: EventHandler) -> Ele button { onclick: move |_| log_out.call(()), "Log Out" } } } else { - rsx! { button { onclick: move |_| log_in.call(()), "Log In" } } + rsx! { + button { onclick: move |_| log_in.call(()), "Log In" } + } } // ANCHOR_END: if_else } @@ -35,7 +37,7 @@ pub fn LogInImprovedApp() -> Element { LogInImproved { is_logged_in: is_logged_in(), log_in: move |_| is_logged_in.set(true), - log_out: move |_| is_logged_in.set(false) + log_out: move |_| is_logged_in.set(false), } } } @@ -83,9 +85,11 @@ pub fn LogInWarningApp() -> Element { fn LogInWarning(is_logged_in: bool) -> Element { // ANCHOR: conditional_none if is_logged_in { - return None; + return rsx!(); } - rsx! { p { "You must be logged in to comment" } } + rsx! { + p { "You must be logged in to comment" } + } // ANCHOR_END: conditional_none } diff --git a/src/doc_examples/rsx_overview.rs b/src/doc_examples/rsx_overview.rs index 07b1640a3..2365c0dc6 100644 --- a/src/doc_examples/rsx_overview.rs +++ b/src/doc_examples/rsx_overview.rs @@ -77,7 +77,7 @@ pub fn Attributes() -> Element { img { src: "https://avatars.githubusercontent.com/u/79236386?s=200&v=4", class: "primary_button", - width: "10px" + width: "10px", } } // ANCHOR_END: attributes @@ -135,9 +135,11 @@ pub fn Expression() -> Element { let text = "Dioxus"; rsx! { span { - {text.to_uppercase()}, + {text.to_uppercase()} // create a list of text from 0 to 9 - {(0..10).map(|i| rsx!{ "{i}" })} + {(0..10).map(|i| rsx! { + "{i}" + })} } } // ANCHOR_END: expression @@ -155,7 +157,11 @@ pub fn Loops() -> Element { } } // iterator equivalent - div { {(0..3).map(|i| rsx!{ div { "{i}" } })} } + div { + {(0..3).map(|i| rsx! { + div { "{i}" } + })} + } } // ANCHOR_END: loops } diff --git a/src/doc_examples/spawn.rs b/src/doc_examples/spawn.rs index 731b2c0ba..495fc7d9a 100644 --- a/src/doc_examples/spawn.rs +++ b/src/doc_examples/spawn.rs @@ -25,7 +25,9 @@ pub fn App() -> Element { }); }; - rsx! { button { onclick: log_in, "Response: {response}" } } + rsx! { + button { onclick: log_in, "Response: {response}" } + } // ANCHOR_END: spawn } @@ -63,5 +65,5 @@ pub fn ToOwnedMacro() -> Element { // ANCHOR_END: to_owned_macro }; - None + rsx!{ } } diff --git a/src/doc_examples/use_resource.rs b/src/doc_examples/use_resource.rs index 8af12ebb4..dcb4a1693 100644 --- a/src/doc_examples/use_resource.rs +++ b/src/doc_examples/use_resource.rs @@ -23,14 +23,20 @@ pub fn App() -> Element { match &*future.read_unchecked() { Some(Ok(response)) => rsx! { button { onclick: move |_| future.restart(), "Click to fetch another doggo" } - div { img { - max_width: "500px", - max_height: "500px", - src: "{response.image_url}" - } } + div { + img { + max_width: "500px", + max_height: "500px", + src: "{response.image_url}", + } + } + }, + Some(Err(_)) => rsx! { + div { "Loading dogs failed" } + }, + None => rsx! { + div { "Loading dogs..." } }, - Some(Err(_)) => rsx! { div { "Loading dogs failed" } }, - None => rsx! { div { "Loading dogs..." } }, } // ANCHOR_END: render } @@ -59,5 +65,5 @@ fn RandomDog(breed: ReadOnlySignal) -> Element { })); // ANCHOR_END: dependency - None + rsx!() } diff --git a/src/icons.rs b/src/icons.rs index 4a192f9ab..77cfb8c40 100644 --- a/src/icons.rs +++ b/src/icons.rs @@ -1,8 +1,6 @@ use dioxus::prelude::*; -pub(crate) static FERROUS_LOGO: &str = manganis::mg!(image( - "https://rustacean.net/assets/rustacean-flat-gesture.png" -)) -.path(); +pub(crate) static FERROUS_LOGO: &str = + asset!("https://rustacean.net/assets/rustacean-flat-gesture.png"); pub(crate) fn ExternalLinkIcon() -> Element { rsx! { @@ -14,11 +12,11 @@ pub(crate) fn ExternalLinkIcon() -> Element { view_box: "0 0 100 100", path { fill: "currentColor", - d: "M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0, 0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z" + d: "M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0, 0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z", } polygon { points: "45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9", - fill: "currentColor" + fill: "currentColor", } } } @@ -171,13 +169,13 @@ pub(crate) static TailwindLogo: Component<()> = |cx| { clip_rule: "evenodd", fill: "#06B6D4", fill_rule: "evenodd", - d: "M25.517 0C18.712 0 14.46 3.382 12.758 10.146c2.552-3.382 5.529-4.65 8.931-3.805 1.941.482 3.329 1.882 4.864 3.432 2.502 2.524 5.398 5.445 11.722 5.445 6.804 0 11.057-3.382 12.758-10.145-2.551 3.382-5.528 4.65-8.93 3.804-1.942-.482-3.33-1.882-4.865-3.431C34.736 2.92 31.841 0 25.517 0zM12.758 15.218C5.954 15.218 1.701 18.6 0 25.364c2.552-3.382 5.529-4.65 8.93-3.805 1.942.482 3.33 1.882 4.865 3.432 2.502 2.524 5.397 5.445 11.722 5.445 6.804 0 11.057-3.381 12.758-10.145-2.552 3.382-5.529 4.65-8.931 3.805-1.941-.483-3.329-1.883-4.864-3.432-2.502-2.524-5.398-5.446-11.722-5.446z" + d: "M25.517 0C18.712 0 14.46 3.382 12.758 10.146c2.552-3.382 5.529-4.65 8.931-3.805 1.941.482 3.329 1.882 4.864 3.432 2.502 2.524 5.398 5.445 11.722 5.445 6.804 0 11.057-3.382 12.758-10.145-2.551 3.382-5.528 4.65-8.93 3.804-1.942-.482-3.33-1.882-4.865-3.431C34.736 2.92 31.841 0 25.517 0zM12.758 15.218C5.954 15.218 1.701 18.6 0 25.364c2.552-3.382 5.529-4.65 8.93-3.805 1.942.482 3.33 1.882 4.865 3.432 2.502 2.524 5.397 5.445 11.722 5.445 6.804 0 11.057-3.381 12.758-10.145-2.552 3.382-5.529 4.65-8.931 3.805-1.941-.483-3.329-1.883-4.864-3.432-2.502-2.524-5.398-5.446-11.722-5.446z", } path { fill: "#000", clip_rule: "evenodd", fill_rule: "evenodd", - d: "M76.546 12.825h-4.453v8.567c0 2.285 1.508 2.249 4.453 2.106v3.463c-5.962.714-8.332-.928-8.332-5.569v-8.567H64.91V9.112h3.304V4.318l3.879-1.143v5.937h4.453v3.713zM93.52 9.112h3.878v17.849h-3.878v-2.57c-1.365 1.891-3.484 3.034-6.285 3.034-4.884 0-8.942-4.105-8.942-9.389 0-5.318 4.058-9.388 8.942-9.388 2.801 0 4.92 1.142 6.285 2.999V9.112zm-5.674 14.636c3.232 0 5.674-2.392 5.674-5.712s-2.442-5.711-5.674-5.711-5.674 2.392-5.674 5.711c0 3.32 2.442 5.712 5.674 5.712zm16.016-17.313c-1.364 0-2.477-1.142-2.477-2.463a2.475 2.475 0 012.477-2.463 2.475 2.475 0 012.478 2.463c0 1.32-1.113 2.463-2.478 2.463zm-1.939 20.526V9.112h3.879v17.849h-3.879zm8.368 0V.9h3.878v26.06h-3.878zm29.053-17.849h4.094l-5.638 17.849h-3.807l-3.735-12.03-3.771 12.03h-3.806l-5.639-17.849h4.094l3.484 12.315 3.771-12.315h3.699l3.734 12.315 3.52-12.315zm8.906-2.677c-1.365 0-2.478-1.142-2.478-2.463a2.475 2.475 0 012.478-2.463 2.475 2.475 0 012.478 2.463c0 1.32-1.113 2.463-2.478 2.463zm-1.939 20.526V9.112h3.878v17.849h-3.878zm17.812-18.313c4.022 0 6.895 2.713 6.895 7.354V26.96h-3.878V16.394c0-2.713-1.58-4.14-4.022-4.14-2.55 0-4.561 1.499-4.561 5.14v9.567h-3.879V9.112h3.879v2.285c1.185-1.856 3.124-2.749 5.566-2.749zm25.282-6.675h3.879V26.96h-3.879v-2.57c-1.364 1.892-3.483 3.034-6.284 3.034-4.884 0-8.942-4.105-8.942-9.389 0-5.318 4.058-9.388 8.942-9.388 2.801 0 4.92 1.142 6.284 2.999V1.973zm-5.674 21.775c3.232 0 5.674-2.392 5.674-5.712s-2.442-5.711-5.674-5.711-5.674 2.392-5.674 5.711c0 3.32 2.442 5.712 5.674 5.712zm22.553 3.677c-5.423 0-9.481-4.105-9.481-9.389 0-5.318 4.058-9.388 9.481-9.388 3.519 0 6.572 1.82 8.008 4.605l-3.34 1.928c-.79-1.678-2.549-2.749-4.704-2.749-3.16 0-5.566 2.392-5.566 5.604 0 3.213 2.406 5.605 5.566 5.605 2.155 0 3.914-1.107 4.776-2.749l3.34 1.892c-1.508 2.82-4.561 4.64-8.08 4.64zm14.472-13.387c0 3.249 9.661 1.285 9.661 7.89 0 3.57-3.125 5.497-7.003 5.497-3.591 0-6.177-1.607-7.326-4.177l3.34-1.927c.574 1.606 2.011 2.57 3.986 2.57 1.724 0 3.052-.571 3.052-2 0-3.176-9.66-1.391-9.66-7.781 0-3.356 2.909-5.462 6.572-5.462 2.945 0 5.387 1.357 6.644 3.713l-3.268 1.82c-.647-1.392-1.904-2.035-3.376-2.035-1.401 0-2.622.607-2.622 1.892zm16.556 0c0 3.249 9.66 1.285 9.66 7.89 0 3.57-3.124 5.497-7.003 5.497-3.591 0-6.176-1.607-7.326-4.177l3.34-1.927c.575 1.606 2.011 2.57 3.986 2.57 1.724 0 3.053-.571 3.053-2 0-3.176-9.66-1.391-9.66-7.781 0-3.356 2.908-5.462 6.572-5.462 2.944 0 5.386 1.357 6.643 3.713l-3.268 1.82c-.646-1.392-1.903-2.035-3.375-2.035-1.401 0-2.622.607-2.622 1.892z" + d: "M76.546 12.825h-4.453v8.567c0 2.285 1.508 2.249 4.453 2.106v3.463c-5.962.714-8.332-.928-8.332-5.569v-8.567H64.91V9.112h3.304V4.318l3.879-1.143v5.937h4.453v3.713zM93.52 9.112h3.878v17.849h-3.878v-2.57c-1.365 1.891-3.484 3.034-6.285 3.034-4.884 0-8.942-4.105-8.942-9.389 0-5.318 4.058-9.388 8.942-9.388 2.801 0 4.92 1.142 6.285 2.999V9.112zm-5.674 14.636c3.232 0 5.674-2.392 5.674-5.712s-2.442-5.711-5.674-5.711-5.674 2.392-5.674 5.711c0 3.32 2.442 5.712 5.674 5.712zm16.016-17.313c-1.364 0-2.477-1.142-2.477-2.463a2.475 2.475 0 012.477-2.463 2.475 2.475 0 012.478 2.463c0 1.32-1.113 2.463-2.478 2.463zm-1.939 20.526V9.112h3.879v17.849h-3.879zm8.368 0V.9h3.878v26.06h-3.878zm29.053-17.849h4.094l-5.638 17.849h-3.807l-3.735-12.03-3.771 12.03h-3.806l-5.639-17.849h4.094l3.484 12.315 3.771-12.315h3.699l3.734 12.315 3.52-12.315zm8.906-2.677c-1.365 0-2.478-1.142-2.478-2.463a2.475 2.475 0 012.478-2.463 2.475 2.475 0 012.478 2.463c0 1.32-1.113 2.463-2.478 2.463zm-1.939 20.526V9.112h3.878v17.849h-3.878zm17.812-18.313c4.022 0 6.895 2.713 6.895 7.354V26.96h-3.878V16.394c0-2.713-1.58-4.14-4.022-4.14-2.55 0-4.561 1.499-4.561 5.14v9.567h-3.879V9.112h3.879v2.285c1.185-1.856 3.124-2.749 5.566-2.749zm25.282-6.675h3.879V26.96h-3.879v-2.57c-1.364 1.892-3.483 3.034-6.284 3.034-4.884 0-8.942-4.105-8.942-9.389 0-5.318 4.058-9.388 8.942-9.388 2.801 0 4.92 1.142 6.284 2.999V1.973zm-5.674 21.775c3.232 0 5.674-2.392 5.674-5.712s-2.442-5.711-5.674-5.711-5.674 2.392-5.674 5.711c0 3.32 2.442 5.712 5.674 5.712zm22.553 3.677c-5.423 0-9.481-4.105-9.481-9.389 0-5.318 4.058-9.388 9.481-9.388 3.519 0 6.572 1.82 8.008 4.605l-3.34 1.928c-.79-1.678-2.549-2.749-4.704-2.749-3.16 0-5.566 2.392-5.566 5.604 0 3.213 2.406 5.605 5.566 5.605 2.155 0 3.914-1.107 4.776-2.749l3.34 1.892c-1.508 2.82-4.561 4.64-8.08 4.64zm14.472-13.387c0 3.249 9.661 1.285 9.661 7.89 0 3.57-3.125 5.497-7.003 5.497-3.591 0-6.177-1.607-7.326-4.177l3.34-1.927c.574 1.606 2.011 2.57 3.986 2.57 1.724 0 3.052-.571 3.052-2 0-3.176-9.66-1.391-9.66-7.781 0-3.356 2.909-5.462 6.572-5.462 2.945 0 5.387 1.357 6.644 3.713l-3.268 1.82c-.647-1.392-1.904-2.035-3.376-2.035-1.401 0-2.622.607-2.622 1.892zm16.556 0c0 3.249 9.66 1.285 9.66 7.89 0 3.57-3.124 5.497-7.003 5.497-3.591 0-6.176-1.607-7.326-4.177l3.34-1.927c.575 1.606 2.011 2.57 3.986 2.57 1.724 0 3.053-.571 3.053-2 0-3.176-9.66-1.391-9.66-7.781 0-3.356 2.908-5.462 6.572-5.462 2.944 0 5.386 1.357 6.643 3.713l-3.268 1.82c-.646-1.392-1.903-2.035-3.375-2.035-1.401 0-2.622.607-2.622 1.892z", } } ) @@ -205,7 +203,7 @@ pub(crate) static GithubLogo: Component<()> = |cx| { view_box: "0 0 16 16", path { fill_rule: "evenodd", - d: "M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z" + d: "M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z", } } ) @@ -222,7 +220,7 @@ pub(crate) static DiscordLogo: Component<()> = |cx| { path { d: "M216.856339,16.5966031 C200.285002,8.84328665 182.566144,3.2084988 164.041564,0 C161.766523,4.11318106 159.108624,9.64549908 157.276099,14.0464379 C137.583995,11.0849896 118.072967,11.0849896 98.7430163,14.0464379 C96.9108417,9.64549908 94.1925838,4.11318106 91.8971895,0 C73.3526068,3.2084988 55.6133949,8.86399117 39.0420583,16.6376612 C5.61752293,67.146514 -3.4433191,116.400813 1.08711069,164.955721 C23.2560196,181.510915 44.7403634,191.567697 65.8621325,198.148576 C71.0772151,190.971126 75.7283628,183.341335 79.7352139,175.300261 C72.104019,172.400575 64.7949724,168.822202 57.8887866,164.667963 C59.7209612,163.310589 61.5131304,161.891452 63.2445898,160.431257 C105.36741,180.133187 151.134928,180.133187 192.754523,160.431257 C194.506336,161.891452 196.298154,163.310589 198.110326,164.667963 C191.183787,168.842556 183.854737,172.420929 176.223542,175.320965 C180.230393,183.341335 184.861538,190.991831 190.096624,198.16893 C211.238746,191.588051 232.743023,181.531619 254.911949,164.955721 C260.227747,108.668201 245.831087,59.8662432 216.856339,16.5966031 Z M85.4738752,135.09489 C72.8290281,135.09489 62.4592217,123.290155 62.4592217,108.914901 C62.4592217,94.5396472 72.607595,82.7145587 85.4738752,82.7145587 C98.3405064,82.7145587 108.709962,94.5189427 108.488529,108.914901 C108.508531,123.290155 98.3405064,135.09489 85.4738752,135.09489 Z M170.525237,135.09489 C157.88039,135.09489 147.510584,123.290155 147.510584,108.914901 C147.510584,94.5396472 157.658606,82.7145587 170.525237,82.7145587 C183.391518,82.7145587 193.761324,94.5189427 193.539891,108.914901 C193.539891,123.290155 183.391518,135.09489 170.525237,135.09489 Z", fill: "currentColor", - fill_rule: "nonzero" + fill_rule: "nonzero", } } } @@ -241,7 +239,7 @@ pub(crate) static Search: Component<()> = |cx| { stroke: "currentColor", stroke_width: "2", d: "M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z", - stroke_linejoin: "round" + stroke_linejoin: "round", } } ) @@ -272,7 +270,7 @@ pub(crate) static IconCheckGh: Component<()> = |cx| { "data_view_component": "true", path { d: "M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z", - fill_rule: "evenodd" + fill_rule: "evenodd", } } } diff --git a/src/main.rs b/src/main.rs index 1717153a5..7228eabcb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -45,13 +45,13 @@ pub(crate) mod components { #[component] fn HeaderFooter() -> Element { - let cb = use_callback(|| { + let cb = use_callback(|_| { *SHOW_SEARCH.write() = true; }); shortcut::use_shortcut(Key::Character("/".to_string()), Modifiers::CONTROL, { move || { - cb.call(); + cb.call(()); } }); @@ -141,7 +141,9 @@ pub(crate) fn use_url() -> String { } pub(crate) fn app() -> Element { - rsx! { Router:: {} } + rsx! { + Router:: {} + } } static SEARCH_INDEX: dioxus_search::LazySearchIndex = dioxus_search::load_search_index! { @@ -160,7 +162,7 @@ mod docs { width: "800", height: "450", src: "{url}?embed=1", - "allowfullscreen": true + "allowfullscreen": true, } } } From da25f8198b7baa274645e15c22def967b0205296 Mon Sep 17 00:00:00 2001 From: Jonathan Kelley Date: Wed, 14 Aug 2024 12:38:20 -0700 Subject: [PATCH 06/35] compiling on 0.6.0-alpha --- .cargo/config.toml | 4 + Cargo.lock | 388 ++++------------------ Cargo.toml | 162 ++++----- Dioxus.toml | 8 +- index.html => blah.index.html | 0 src/components/blog/mod.rs | 41 ++- src/components/footer.rs | 24 +- src/components/homepage/hero.rs | 31 +- src/components/nav.rs | 4 +- src/doc_examples/assets.rs | 10 +- src/doc_examples/event_prevent_default.rs | 6 +- src/icons.rs | 3 +- src/main.rs | 135 ++++---- 13 files changed, 260 insertions(+), 556 deletions(-) rename index.html => blah.index.html (100%) diff --git a/.cargo/config.toml b/.cargo/config.toml index 26251a673..251dcad15 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,3 +1,7 @@ # [unstable.release] # build-std = ["std", "panic_abort", "core", "alloc"] # build-std-features = ["panic_immediate_abort"] + +[env] +MANGANIS_SUPPORT = "true" + diff --git a/Cargo.lock b/Cargo.lock index 99b1984c2..f9bfd69d5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -355,7 +355,6 @@ checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf" dependencies = [ "async-trait", "axum-core", - "axum-macros", "base64 0.21.7", "bytes", "futures-util", @@ -368,7 +367,6 @@ dependencies = [ "matchit", "memchr", "mime", - "multer", "percent-encoding", "pin-project-lite", "rustversion", @@ -407,18 +405,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "axum-macros" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00c055ee2d014ae5981ce1016374e8213682aa14d9bf40e48ab48b5f3ef20eaa" -dependencies = [ - "heck 0.4.1", - "proc-macro2", - "quote", - "syn 2.0.74", -] - [[package]] name = "backtrace" version = "0.3.73" @@ -555,12 +541,13 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.10" +version = "1.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9e8aabfac534be767c909e0690571677d49f41bd8465ae876fe043d52ba5292" +checksum = "5fb8dd288a69fc53a1996d7ecfbf4a20d59065bff137ce7e56bbd620de191189" dependencies = [ "jobserver", "libc", + "shlex", ] [[package]] @@ -1076,9 +1063,8 @@ dependencies = [ [[package]] name = "dioxus" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" dependencies = [ - "axum", "dioxus-config-macro", "dioxus-core", "dioxus-core-macro", @@ -1086,20 +1072,17 @@ dependencies = [ "dioxus-hooks", "dioxus-hot-reload", "dioxus-html", - "dioxus-liveview", "dioxus-router", "dioxus-signals", - "dioxus-ssr", "dioxus-static-site-generation", "dioxus-web", "manganis", - "serde", ] [[package]] name = "dioxus-cli-config" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" dependencies = [ "built", "clap", @@ -1112,7 +1095,7 @@ dependencies = [ [[package]] name = "dioxus-config-macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" dependencies = [ "proc-macro2", "quote", @@ -1121,7 +1104,7 @@ dependencies = [ [[package]] name = "dioxus-core" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" dependencies = [ "const_format", "futures-channel", @@ -1141,7 +1124,7 @@ dependencies = [ [[package]] name = "dioxus-core-macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" dependencies = [ "convert_case 0.6.0", "dioxus-rsx", @@ -1154,7 +1137,7 @@ dependencies = [ [[package]] name = "dioxus-desktop" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" dependencies = [ "async-trait", "cocoa", @@ -1193,47 +1176,29 @@ dependencies = [ [[package]] name = "dioxus-fullstack" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" dependencies = [ - "async-trait", - "axum", "base64 0.22.1", "bytes", "ciborium", - "clap", - "dioxus-cli-config", "dioxus-hot-reload", - "dioxus-interpreter-js", "dioxus-lib", - "dioxus-ssr", "dioxus-web", "dioxus_server_macro", "futures-channel", "futures-util", "generational-box", - "http 1.1.0", - "hyper 1.4.1", "once_cell", - "parking_lot", - "pin-project", "serde", "server_fn", - "thiserror", - "tokio", - "tokio-stream", - "tokio-util", - "tower", - "tower-http", - "tower-layer", "tracing", - "tracing-futures", "web-sys", ] [[package]] name = "dioxus-hooks" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" dependencies = [ "dioxus-core", "dioxus-signals", @@ -1249,7 +1214,7 @@ dependencies = [ [[package]] name = "dioxus-hot-reload" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" dependencies = [ "dioxus-cli-config", "dioxus-core", @@ -1268,7 +1233,7 @@ dependencies = [ [[package]] name = "dioxus-html" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" dependencies = [ "async-trait", "dioxus-core", @@ -1296,7 +1261,7 @@ dependencies = [ [[package]] name = "dioxus-html-internal-macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" dependencies = [ "convert_case 0.6.0", "proc-macro2", @@ -1307,7 +1272,7 @@ dependencies = [ [[package]] name = "dioxus-interpreter-js" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" dependencies = [ "dioxus-core", "dioxus-html", @@ -1324,7 +1289,7 @@ dependencies = [ [[package]] name = "dioxus-lib" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" dependencies = [ "dioxus-config-macro", "dioxus-core", @@ -1338,7 +1303,7 @@ dependencies = [ [[package]] name = "dioxus-liveview" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" dependencies = [ "axum", "dioxus-cli-config", @@ -1371,7 +1336,7 @@ dependencies = [ [[package]] name = "dioxus-router" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" dependencies = [ "dioxus-cli-config", "dioxus-fullstack", @@ -1391,7 +1356,7 @@ dependencies = [ [[package]] name = "dioxus-router-macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" dependencies = [ "proc-macro2", "quote", @@ -1402,7 +1367,7 @@ dependencies = [ [[package]] name = "dioxus-rsx" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" dependencies = [ "dioxus-core", "internment", @@ -1432,7 +1397,7 @@ dependencies = [ [[package]] name = "dioxus-search" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/dioxus-search#f43f94a307409eea9eedda1d32d08f983b119f6a" +source = "git+https://github.com/dioxuslabs/dioxus-search#5b2a301b2e84106c9a1b80119277ec38b117ecfe" dependencies = [ "bytes", "dioxus-router", @@ -1451,7 +1416,7 @@ dependencies = [ [[package]] name = "dioxus-search-macro" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/dioxus-search#f43f94a307409eea9eedda1d32d08f983b119f6a" +source = "git+https://github.com/dioxuslabs/dioxus-search#5b2a301b2e84106c9a1b80119277ec38b117ecfe" dependencies = [ "quote", "syn 2.0.74", @@ -1460,7 +1425,7 @@ dependencies = [ [[package]] name = "dioxus-search-shared" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/dioxus-search#f43f94a307409eea9eedda1d32d08f983b119f6a" +source = "git+https://github.com/dioxuslabs/dioxus-search#5b2a301b2e84106c9a1b80119277ec38b117ecfe" dependencies = [ "bytes", "dioxus-router", @@ -1478,7 +1443,7 @@ dependencies = [ [[package]] name = "dioxus-signals" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" dependencies = [ "dioxus-core", "futures-channel", @@ -1494,12 +1459,10 @@ dependencies = [ [[package]] name = "dioxus-ssr" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" dependencies = [ "askama_escape", "async-trait", - "chrono", - "dioxus-cli-config", "dioxus-core", "dioxus-html", "dioxus-interpreter-js", @@ -1509,34 +1472,25 @@ dependencies = [ "rustc-hash", "serde_json", "thiserror", - "tokio", "tracing", ] [[package]] name = "dioxus-static-site-generation" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" dependencies = [ - "axum", - "dioxus-cli-config", "dioxus-fullstack", - "dioxus-hot-reload", "dioxus-lib", "dioxus-router", - "dioxus-ssr", "dioxus-web", - "http 1.1.0", - "tokio", - "tower", - "tower-http", "tracing", ] [[package]] name = "dioxus-web" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" dependencies = [ "ciborium", "console_error_panic_hook", @@ -1594,7 +1548,7 @@ dependencies = [ "once_cell", "pretty_assertions", "rand 0.8.5", - "reqwest 0.11.27", + "reqwest", "serde", "serde_json", "shipyard", @@ -1614,7 +1568,7 @@ dependencies = [ [[package]] name = "dioxus_server_macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" dependencies = [ "convert_case 0.6.0", "proc-macro2", @@ -2148,7 +2102,7 @@ dependencies = [ [[package]] name = "generational-box" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" dependencies = [ "parking_lot", ] @@ -2414,15 +2368,15 @@ dependencies = [ [[package]] name = "gloo-net" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43aaa242d1239a8822c15c645f02166398da4f8b5c4bae795c1f5b44e9eee173" +checksum = "c06f627b1a58ca3d42b45d6104bf1e1a03799df472df00988b6ba21accc10580" dependencies = [ "futures-channel", "futures-core", "futures-sink", "gloo-utils 0.2.0", - "http 0.2.12", + "http 1.1.0", "js-sys", "pin-project", "serde", @@ -2595,25 +2549,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "h2" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" -dependencies = [ - "atomic-waker", - "bytes", - "fnv", - "futures-core", - "futures-sink", - "http 1.1.0", - "indexmap 2.4.0", - "slab", - "tokio", - "tokio-util", - "tracing", -] - [[package]] name = "half" version = "2.4.1" @@ -2789,12 +2724,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "http-range-header" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08a397c49fec283e3d6211adbe480be95aae5f304cfb923e9970e08956d5168a" - [[package]] name = "httparse" version = "1.9.4" @@ -2817,7 +2746,7 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "h2 0.3.26", + "h2", "http 0.2.12", "http-body 0.4.6", "httparse", @@ -2840,7 +2769,6 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.5", "http 1.1.0", "http-body 1.0.1", "httparse", @@ -2849,24 +2777,6 @@ dependencies = [ "pin-project-lite", "smallvec", "tokio", - "want", -] - -[[package]] -name = "hyper-rustls" -version = "0.27.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" -dependencies = [ - "futures-util", - "http 1.1.0", - "hyper 1.4.1", - "hyper-util", - "rustls", - "rustls-pki-types", - "tokio", - "tokio-rustls", - "tower-service", ] [[package]] @@ -2882,22 +2792,6 @@ dependencies = [ "tokio-native-tls", ] -[[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 1.4.1", - "hyper-util", - "native-tls", - "tokio", - "tokio-native-tls", - "tower-service", -] - [[package]] name = "hyper-util" version = "0.1.7" @@ -2905,17 +2799,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cde7055719c54e36e95e8719f95883f22072a48ede39db7fc17a4e1d5281e9b9" dependencies = [ "bytes", - "futures-channel", "futures-util", "http 1.1.0", "http-body 1.0.1", "hyper 1.4.1", "pin-project-lite", - "socket2", "tokio", - "tower", - "tower-service", - "tracing", ] [[package]] @@ -3036,12 +2925,6 @@ dependencies = [ "parking_lot", ] -[[package]] -name = "inventory" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" - [[package]] name = "ipnet" version = "2.9.0" @@ -3168,7 +3051,7 @@ dependencies = [ [[package]] name = "lazy-js-bundle" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" [[package]] name = "lazy_static" @@ -3308,8 +3191,7 @@ dependencies = [ [[package]] name = "manganis" version = "0.3.0-alpha.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10870c8dbbfa53eaad99e7cc0689de6f2033d8769e02df28cb681b437e159473" +source = "git+https://github.com/DioxusLabs/manganis?branch=jk/drop-remote-support#db4777c7415b9b4a8b1dbf1ce164cb61ba425eca" dependencies = [ "manganis-macro", ] @@ -3317,32 +3199,13 @@ dependencies = [ [[package]] name = "manganis-common" version = "0.3.0-alpha.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9be0dd0eaf5ce21947bcc38131d7934a1f573b76e6e44fe9e401cb27dcb33cf" +source = "git+https://github.com/DioxusLabs/manganis?branch=jk/drop-remote-support#db4777c7415b9b4a8b1dbf1ce164cb61ba425eca" dependencies = [ "anyhow", "base64 0.21.7", "built", "home", "infer", - "reqwest 0.12.5", - "serde", - "toml 0.7.8", - "tracing", - "url", -] - -[[package]] -name = "manganis-common" -version = "0.3.0-alpha.1" -source = "git+https://github.com/DioxusLabs/manganis#00b8a5c0d1b2101b52998a577d383b436818dba0" -dependencies = [ - "anyhow", - "base64 0.21.7", - "built", - "home", - "infer", - "reqwest 0.12.5", "serde", "toml 0.7.8", "tracing", @@ -3352,10 +3215,9 @@ dependencies = [ [[package]] name = "manganis-macro" version = "0.3.0-alpha.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ca00f3c266ba409900d32707f4bc66a60fbb707cf9d4d8d44d8e265c431c149" +source = "git+https://github.com/DioxusLabs/manganis?branch=jk/drop-remote-support#db4777c7415b9b4a8b1dbf1ce164cb61ba425eca" dependencies = [ - "manganis-common 0.3.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "manganis-common", "proc-macro2", "quote", "serde_json", @@ -3406,13 +3268,12 @@ checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" [[package]] name = "mdbook-macro" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/include_mdbook#0ac789e1832cd23bbeb1bca3313bca0371cdb6c2" +source = "git+https://github.com/dioxuslabs/include_mdbook#3f8e2b43a83ab2df1cac45bf8fb4387384442c9c" dependencies = [ "anyhow", "convert_case 0.6.0", "dioxus-rsx", "macro_state", - "manganis-common 0.3.0-alpha.1 (git+https://github.com/DioxusLabs/manganis)", "mdbook-shared", "postcard", "proc-macro2", @@ -3427,7 +3288,7 @@ dependencies = [ [[package]] name = "mdbook-shared" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/include_mdbook#0ac789e1832cd23bbeb1bca3313bca0371cdb6c2" +source = "git+https://github.com/dioxuslabs/include_mdbook#3f8e2b43a83ab2df1cac45bf8fb4387384442c9c" dependencies = [ "anyhow", "bytes", @@ -3462,16 +3323,6 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" -[[package]] -name = "mime_guess" -version = "2.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" -dependencies = [ - "mime", - "unicase", -] - [[package]] name = "miniz_oxide" version = "0.7.4" @@ -3512,23 +3363,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "multer" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83e87776546dc87511aa5ee218730c92b666d7264ab6ed41f9d215af9cd5224b" -dependencies = [ - "bytes", - "encoding_rs", - "futures-util", - "http 1.1.0", - "httparse", - "memchr", - "mime", - "spin", - "version_check", -] - [[package]] name = "native-tls" version = "0.2.12" @@ -4418,21 +4252,20 @@ dependencies = [ "encoding_rs", "futures-core", "futures-util", - "h2 0.3.26", + "h2", "http 0.2.12", "http-body 0.4.6", "hyper 0.14.30", - "hyper-tls 0.5.0", + "hyper-tls", "ipnet", "js-sys", "log", "mime", - "mime_guess", "native-tls", "once_cell", "percent-encoding", "pin-project-lite", - "rustls-pemfile 1.0.4", + "rustls-pemfile", "serde", "serde_json", "serde_urlencoded", @@ -4440,58 +4273,12 @@ dependencies = [ "system-configuration", "tokio", "tokio-native-tls", - "tokio-util", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "wasm-streams", - "web-sys", - "winreg 0.50.0", -] - -[[package]] -name = "reqwest" -version = "0.12.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7d6d2a27d57148378eb5e111173f4276ad26340ecc5c49a4a2152167a2d6a37" -dependencies = [ - "base64 0.22.1", - "bytes", - "encoding_rs", - "futures-channel", - "futures-core", - "futures-util", - "h2 0.4.5", - "http 1.1.0", - "http-body 1.0.1", - "http-body-util", - "hyper 1.4.1", - "hyper-rustls", - "hyper-tls 0.6.0", - "hyper-util", - "ipnet", - "js-sys", - "log", - "mime", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls-pemfile 2.1.3", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper 1.0.1", - "system-configuration", - "tokio", - "tokio-native-tls", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "winreg 0.52.0", + "winreg", ] [[package]] @@ -4620,16 +4407,6 @@ dependencies = [ "base64 0.21.7", ] -[[package]] -name = "rustls-pemfile" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" -dependencies = [ - "base64 0.22.1", - "rustls-pki-types", -] - [[package]] name = "rustls-pki-types" version = "1.8.0" @@ -4875,31 +4652,24 @@ dependencies = [ [[package]] name = "server_fn" -version = "0.6.13" +version = "0.6.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9aaae169927ef701a4734d680adcb08f13269c9f0af822bf175d681fe56d65c" +checksum = "024b400db1aca5bd4188714f7bbbf7a2e1962b9a12a80b2a21e937e509086963" dependencies = [ - "axum", "bytes", "const_format", "dashmap", "futures", - "gloo-net 0.5.0", + "gloo-net 0.6.0", "http 1.1.0", - "http-body-util", - "hyper 1.4.1", - "inventory", "js-sys", "once_cell", - "reqwest 0.11.27", "send_wrapper", "serde", "serde_json", "serde_qs", "server_fn_macro_default", "thiserror", - "tower", - "tower-layer", "url", "wasm-bindgen", "wasm-bindgen-futures", @@ -4910,9 +4680,9 @@ dependencies = [ [[package]] name = "server_fn_macro" -version = "0.6.13" +version = "0.6.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583085903fd5d091884eb52d99550e32777015af21f0f5dbec49bedcc320ce82" +checksum = "9cf0e6f71fc924df36e87f27dfbd447f0bedd092d365db3a5396878256d9f00c" dependencies = [ "const_format", "convert_case 0.6.0", @@ -4924,9 +4694,9 @@ dependencies = [ [[package]] name = "server_fn_macro_default" -version = "0.6.13" +version = "0.6.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b628649700e28cf8bc33e0df5de5c9d591a1828ba005a25b425477055f1e0e74" +checksum = "556e4fd51eb9ee3e7d9fb0febec6cef486dcbc8f7f427591dfcfebee1abe1ad4" dependencies = [ "server_fn_macro", "syn 2.0.74", @@ -5005,6 +4775,12 @@ dependencies = [ "syn 1.0.109", ] +[[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.17" @@ -5300,7 +5076,7 @@ dependencies = [ [[package]] name = "syntect-html" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/include_mdbook#0ac789e1832cd23bbeb1bca3313bca0371cdb6c2" +source = "git+https://github.com/dioxuslabs/include_mdbook#3f8e2b43a83ab2df1cac45bf8fb4387384442c9c" dependencies = [ "proc-macro2", "quote", @@ -5554,17 +5330,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "tokio-rustls" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" -dependencies = [ - "rustls", - "rustls-pki-types", - "tokio", -] - [[package]] name = "tokio-stream" version = "0.1.15" @@ -5711,21 +5476,13 @@ checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" dependencies = [ "bitflags 2.6.0", "bytes", - "futures-util", "http 1.1.0", "http-body 1.0.1", "http-body-util", - "http-range-header", - "httpdate", - "mime", - "mime_guess", - "percent-encoding", "pin-project-lite", "tokio", - "tokio-util", "tower-layer", "tower-service", - "tracing", ] [[package]] @@ -5773,16 +5530,6 @@ dependencies = [ "valuable", ] -[[package]] -name = "tracing-futures" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" -dependencies = [ - "pin-project", - "tracing", -] - [[package]] name = "tracing-log" version = "0.2.0" @@ -5963,7 +5710,7 @@ checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" [[package]] name = "use-mdbook" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/include_mdbook#0ac789e1832cd23bbeb1bca3313bca0371cdb6c2" +source = "git+https://github.com/dioxuslabs/include_mdbook#3f8e2b43a83ab2df1cac45bf8fb4387384442c9c" dependencies = [ "lazy_static", "mdbook-macro", @@ -6650,16 +6397,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[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 = "wry" version = "0.41.0" @@ -6883,8 +6620,3 @@ dependencies = [ "quote", "syn 1.0.109", ] - -[[patch.unused]] -name = "dioxus-mobile" -version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#959ab67624e824389a1ad96ccd6d747728be7d39" diff --git a/Cargo.toml b/Cargo.toml index 9686a1dd9..882599e00 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,18 +8,14 @@ resolver = "2" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -dioxus = { git = "https://github.com/dioxuslabs/dioxus", features = [ - "router", -] } -dioxus-web = { git = "https://github.com/dioxuslabs/dioxus", features = [ - "hydrate", -], optional = true } -dioxus-ssr = { git = "https://github.com/dioxuslabs/dioxus", optional = true } -dioxus-fullstack = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-desktop = { git = "https://github.com/dioxuslabs/dioxus", optional = true } -dioxus-liveview = { git = "https://github.com/dioxuslabs/dioxus", features = [ - "axum", -], optional = true } +dioxus = { version = "0.6.0-alpha.2", features = ["router"] } +dioxus-fullstack = { version = "0.6.0-alpha.2" } + +dioxus-web = { version = "0.6.0-alpha.2", features = ["hydrate"], optional = true } +dioxus-ssr = { version = "0.6.0-alpha.2", optional = true } +dioxus-desktop = { version = "0.6.0-alpha.2", optional = true } +dioxus-liveview = { version = "0.6.0-alpha.2", features = ["axum"], optional = true } + serde = { version = "1.0.163", features = ["derive"] } serde_json = "1.0.96" log = "0.4.17" @@ -77,51 +73,32 @@ tracing = "0.1.40" rand = { version = "0.8.5", optional = true } [patch.crates-io] -dioxus = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-lib = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-core = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-core-macro = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-config-macro = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-router = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-router-macro = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-html = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-html-internal-macro = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-hooks = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-web = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-ssr = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-mobile = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-desktop = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-interpreter-js = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-liveview = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-rsx = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-signals = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-cli-config = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -generational-box = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-hot-reload = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus_server_macro = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-fullstack = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } - -# [patch.'https://github.com/dioxuslabs/dioxus'] -# dioxus = { git = "https://github.com/dioxuslabs/dioxus?query=blah&rev=959ab67" } -# dioxus-lib = { git = "https://github.com/dioxuslabs/dioxus?query=blah&rev=959ab67" } -# dioxus-core = { git = "https://github.com/dioxuslabs/dioxus?query=blah&rev=959ab67" } -# dioxus-core-macro = { git = "https://github.com/dioxuslabs/dioxus?query=blah&rev=959ab67" } -# dioxus-signals = { git = "https://github.com/dioxuslabs/dioxus?query=blah&rev=959ab67" } -# dioxus-html = { git = "https://github.com/dioxuslabs/dioxus?query=blah&rev=959ab67" } -# dioxus-cli-config = { git = "https://github.com/dioxuslabs/dioxus?query=blah&rev=959ab67" } -# dioxus-router = { git = "https://github.com/dioxuslabs/dioxus?query=blah&rev=959ab67" } -# dioxus-router-macro = { git = "https://github.com/dioxuslabs/dioxus?query=blah&rev=959ab67" } -# dioxus-rsx = { git = "https://github.com/dioxuslabs/dioxus?query=blah&rev=959ab67" } -# dioxus-web = { git = "https://github.com/dioxuslabs/dioxus?query=blah&rev=959ab67" } -# dioxus-ssr = { git = "https://github.com/dioxuslabs/dioxus?query=blah&rev=959ab67" } -# dioxus-desktop = { git = "https://github.com/dioxuslabs/dioxus?query=blah&rev=959ab67" } -# dioxus-liveview = { git = "https://github.com/dioxuslabs/dioxus?query=blah&rev=959ab67" } -# dioxus-fullstack = { git = "https://github.com/dioxuslabs/dioxus?query=blah&rev=959ab67" } - +dioxus = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } +dioxus-lib = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } +dioxus-core = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } +dioxus-core-macro = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } +dioxus-config-macro = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } +dioxus-router = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } +dioxus-router-macro = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } +dioxus-html = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } +dioxus-html-internal-macro = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } +dioxus-hooks = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } +dioxus-web = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } +dioxus-ssr = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } +dioxus-desktop = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } +dioxus-interpreter-js = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } +dioxus-liveview = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } +dioxus-rsx = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } +dioxus-signals = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } +dioxus-cli-config = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } +generational-box = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } +dioxus-hot-reload = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } +dioxus_server_macro = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } +dioxus-fullstack = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } -# dioxus-tui = { git = "https://github.com/dioxuslabs/blitz" } -# dioxus-native-core = { git = "https://github.com/dioxuslabs/blitz" } -# dioxus-native-core-macro = { git = "https://github.com/dioxuslabs/blitz" } +manganis = { git = "https://github.com/DioxusLabs/manganis", branch = "jk/drop-remote-support" } +manganis-common = { git = "https://github.com/DioxusLabs/manganis", branch = "jk/drop-remote-support" } +manganis-macro = { git = "https://github.com/DioxusLabs/manganis", branch = "jk/drop-remote-support" } [profile.release] lto = true @@ -139,39 +116,40 @@ codegen-units = 1 [features] default = [] -doc_test = [ - "tokio", - "server", - "dioxus-web", - "dioxus/web", - # "dioxus-tui", - "dioxus-desktop", - "dioxus-liveview", - # "dioxus-native-core", - # "dioxus-native-core-macro", - "shipyard", - "gloo-storage", - "pretty_assertions", - "tower-http", - "dioxus-sdk", - "http", - "rand" -] -web = ["dioxus-web", "dioxus/web", "dioxus/web", "dioxus-fullstack/web", "dioxus/fullstack"] -dioxus-axum = [ - "dioxus/axum", - "dioxus-ssr", - "dioxus/ssr", - "tokio", - "axum", - "fs_extra", -] -server = [ - "dioxus/fullstack", - "dioxus-fullstack/axum", - "dioxus-axum", -] -prebuild = [ - "dioxus/static-generation", - "dioxus-axum", -] +# doc_test = [ +# "tokio", +# "server", +# "dioxus-web", +# "dioxus/web", +# # "dioxus-tui", +# "dioxus-desktop", +# "dioxus-liveview", +# # "dioxus-native-core", +# # "dioxus-native-core-macro", +# "shipyard", +# "gloo-storage", +# "pretty_assertions", +# "tower-http", +# "dioxus-sdk", +# "http", +# "rand" +# ] +web = ["dioxus/web"] +# web = ["dioxus-web", "dioxus/web", "dioxus/web", "dioxus-fullstack/web", "dioxus/fullstack"] +# dioxus-axum = [ +# "dioxus/axum", +# "dioxus-ssr", +# "dioxus/ssr", +# "tokio", +# "axum", +# "fs_extra", +# ] +# server = [ +# "dioxus/fullstack", +# "dioxus-fullstack/axum", +# "dioxus-axum", +# ] +# prebuild = [ +# "dioxus/static-generation", +# "dioxus-axum", +# ] diff --git a/Dioxus.toml b/Dioxus.toml index 5a01cbe34..094922560 100644 --- a/Dioxus.toml +++ b/Dioxus.toml @@ -6,10 +6,10 @@ name = "docsite" # default platform # you can also use `dioxus serve/build --platform XXX` to use other platform # value: web | desktop -default_platform = "web" +# default_platform = "web" -# Web `build` & `serve` dist path -out_dir = "dist" +# # Web `build` & `serve` dist path +# out_dir = "dist" # resource (static) file folder asset_dir = "public" @@ -19,7 +19,7 @@ asset_dir = "public" # HTML title tag content title = "Dioxus | An elegant GUI library for Rust" -base_path = "." +# base_path = "." [web.watcher] diff --git a/index.html b/blah.index.html similarity index 100% rename from index.html rename to blah.index.html diff --git a/src/components/blog/mod.rs b/src/components/blog/mod.rs index 1840a9877..822ad876d 100644 --- a/src/components/blog/mod.rs +++ b/src/components/blog/mod.rs @@ -24,7 +24,9 @@ pub(crate) const POST_RELEASE_050: BlogPost = BlogPost { #[component] pub(crate) fn PostRelease050() -> Element { - rsx! { SinglePost { post: POST_RELEASE_050 } } + rsx! { + SinglePost { post: POST_RELEASE_050 } + } } pub(crate) const POST_TEMPLATE: BlogPost = BlogPost { @@ -39,7 +41,9 @@ pub(crate) const POST_TEMPLATE: BlogPost = BlogPost { #[component] pub(crate) fn PostTemplate() -> Element { - rsx! { SinglePost { post: POST_TEMPLATE } } + rsx! { + SinglePost { post: POST_TEMPLATE } + } } pub(crate) const POST_FULLTINME: BlogPost = BlogPost { @@ -54,7 +58,9 @@ pub(crate) const POST_FULLTINME: BlogPost = BlogPost { #[component] pub(crate) fn PostFulltime() -> Element { - rsx! { SinglePost { post: POST_FULLTINME } } + rsx! { + SinglePost { post: POST_FULLTINME } + } } pub(crate) const POST_RELEASE_040: BlogPost = BlogPost { @@ -68,7 +74,9 @@ pub(crate) const POST_RELEASE_040: BlogPost = BlogPost { #[component] pub(crate) fn PostRelease040() -> Element { - rsx! { SinglePost { post: POST_RELEASE_040 } } + rsx! { + SinglePost { post: POST_RELEASE_040 } + } } pub(crate) const POST_RELEASE_030: BlogPost = BlogPost { @@ -82,7 +90,9 @@ pub(crate) const POST_RELEASE_030: BlogPost = BlogPost { #[component] pub(crate) fn PostRelease030() -> Element { - rsx! { SinglePost { post: POST_RELEASE_030 } } + rsx! { + SinglePost { post: POST_RELEASE_030 } + } } pub(crate) const POST_RELEASE_020: BlogPost = BlogPost { @@ -96,7 +106,9 @@ pub(crate) const POST_RELEASE_020: BlogPost = BlogPost { #[component] pub(crate) fn PostRelease020() -> Element { - rsx! { SinglePost { post: POST_RELEASE_020 } } + rsx! { + SinglePost { post: POST_RELEASE_020 } + } } pub(crate) const POST_RELEASE_010: BlogPost = BlogPost { @@ -110,7 +122,9 @@ pub(crate) const POST_RELEASE_010: BlogPost = BlogPost { #[component] pub(crate) fn PostRelease010() -> Element { - rsx! { SinglePost { post: POST_RELEASE_010 } } + rsx! { + SinglePost { post: POST_RELEASE_010 } + } } pub(crate) const POSTS: &[BlogPost] = &[ @@ -157,7 +171,7 @@ pub(crate) fn SinglePost(post: BlogPost) -> Element { script { "Prism.highlightAll()" } article { class: "markdown-body px-2 dioxus-blog-post", - dangerous_inner_html: format_args!("{}", content) + dangerous_inner_html: format_args!("{}", content), } script { "Prism.highlightAll()" } } @@ -198,12 +212,7 @@ fn BlogPostItem(post: &'static BlogPost) -> Element { rsx! { div { class: "py-8 flex flex-wrap md:flex-nowrap", - // div { class: "md:w-32 md:mb-0 mb-6 flex-shrink-0 flex flex-col", - // span { class: "font-semibold title-font text-gray-700 dark:text-white", - // "{category}" - // } - // span { class: "mt-1 text-gray-500 text-sm", "{date}" } - // } + div { class: "md:flex-grow pl-8", div { class: "flex flex-row justify-between gap-4", h2 { class: "text-2xl font-medium text-gray-900 title-font mb-4 dark:text-white", @@ -214,7 +223,9 @@ fn BlogPostItem(post: &'static BlogPost) -> Element { p { class: "leading-relaxed dark:text-white text-base dark:opacity-75", "{description}" } - Link { class: "text-indigo-500 inline-flex items-center mt-4", to: *link, + Link { + class: "text-indigo-500 inline-flex items-center mt-4", + to: *link, "Read more" icons::ArrowRight {} } diff --git a/src/components/footer.rs b/src/components/footer.rs index decca9eda..49ce7645e 100644 --- a/src/components/footer.rs +++ b/src/components/footer.rs @@ -2,12 +2,6 @@ use crate::HIGHLIGHT_NAV_LAYOUT; use dioxus::prelude::*; pub(crate) fn Footer() -> Element { - let bg_color = if HIGHLIGHT_NAV_LAYOUT() { - "border border-orange-600 rounded-md" - } else { - "" - }; - let categories = [ ( "Community", @@ -47,11 +41,13 @@ pub(crate) fn Footer() -> Element { nav { class: "list-none mb-10", ul { for f in links.iter() { - li { key: "{f.0}", a { - class: "text-gray-400 hover:text-white", - href: "{f.1}", - "{f.0}" - } } + li { key: "{f.0}", + a { + class: "text-gray-400 hover:text-white", + href: "{f.1}", + "{f.0}" + } + } } } } @@ -60,7 +56,9 @@ pub(crate) fn Footer() -> Element { }); rsx! { - footer { class: "sticky z-30 text-gray-400 bg-ghmetal body-font {bg_color}", + footer { + class: "sticky z-30 text-gray-400 bg-ghmetal body-font", + class: if HIGHLIGHT_NAV_LAYOUT() { "border border-orange-600 rounded-md" }, div { class: "container px-5 py-24 mx-auto flex md:items-center lg:items-start md:flex-row md:flex-nowrap flex-wrap flex-col", div { class: "w-64 flex-shrink-0 md:mx-0 mx-auto text-center md:text-left", a { @@ -69,7 +67,7 @@ pub(crate) fn Footer() -> Element { img { src: "https://avatars.githubusercontent.com/u/79236386?s=200&v=4", class: "h-8 w-auto", - alt: "Dioxus Labs Icon" + alt: "Dioxus Labs Icon", } span { class: "ml-3 text-xl", "Dioxus Labs" } } diff --git a/src/components/homepage/hero.rs b/src/components/homepage/hero.rs index d46452f78..4e6fca004 100644 --- a/src/components/homepage/hero.rs +++ b/src/components/homepage/hero.rs @@ -9,11 +9,6 @@ pub(crate) fn Hero() -> Element { span { "Fullstack, crossplatform," } span { "lightning fast, fully typed." } } - // img { src: "https://ribir.org/landing-page/hero-banner.png" } - // h1 { class: "text-2xl md:text-[5em] font-semibold dark:text-white text-ghdarkmetal font-sans py-12 flex flex-col", - // h1 { class: "text-2xl md:text-[5em] font-semibold dark:text-white text-ghdarkmetal font-sans py-12 flex flex-col", - // "Fullstack, crossplatform, lightning fast, fully typed." - // } h3 { class: "text-[2em] dark:text-white font-extralight text-ghdarkmetal pt-4 max-w-screen-md mx-auto", "Dioxus is a Rust library for building apps that run on desktop, web, mobile, and more." } @@ -50,19 +45,19 @@ pub(crate) fn Hero() -> Element { h1 { class: "text-md", "Trusted by top companies" } div { class: "pt-4 flex flex-row flex-wrap justify-center invert dark:invert-0", div { class: "h-12 w-40 p-2 m-4 flex justify-center items-center", - img { src: "static/futurewei_bw.png" } + img { src: "/static/futurewei_bw.png" } } div { class: "h-12 w-40 p-2 m-4 flex justify-center items-center", - img { src: "static/airbuslogo.svg" } + img { src: "/static/airbuslogo.svg" } } div { class: "h-12 w-40 p-2 m-4 flex justify-center items-center", - img { src: "static/ESA_logo.svg" } + img { src: "/static/ESA_logo.svg" } } div { class: "h-12 w-40 p-2 m-4 flex justify-center items-center", - img { src: "static/yclogo.svg" } + img { src: "/static/yclogo.svg" } } div { class: "h-12 w-40 p-2 m-4 flex justify-center items-center", - img { src: "static/satellite.webp" } + img { src: "/static/satellite.webp" } } } } @@ -71,19 +66,3 @@ pub(crate) fn Hero() -> Element { } } } - -fn AnimatedIcon() -> Element { - let dark = include_str!("../../../public/static/multiplatform-dark.svg"); - let light = include_str!("../../../public/static/multiplatform-light.svg"); - - let a = 123; - - let b = 123; - - rsx! { - div { - div { class: "dark:hidden", dangerous_inner_html: "{dark}" } - div { class: "hidden dark:block", dangerous_inner_html: "{light}" } - } - } -} diff --git a/src/components/nav.rs b/src/components/nav.rs index 026bda76a..a8aef6321 100644 --- a/src/components/nav.rs +++ b/src/components/nav.rs @@ -41,14 +41,14 @@ pub(crate) fn Nav() -> Element { "Theme" } Link { - to: "https://discord.gg/XgGxMSkvUM", + to: "https://discord.gg/XgGxMSkvUM".to_string(), class: "block text-gray-400 hover:text-gray-500 dark:hover:text-gray-300", new_tab: true, span { class: "sr-only", "Dioxus on Discord" } crate::icons::DiscordLogo {} } Link { - to: "https://github.com/dioxuslabs/dioxus", + to: "https://github.com/dioxuslabs/dioxus".to_string(), class: "ml-4 block text-gray-400 hover:text-gray-500 dark:hover:text-gray-300", new_tab: true, span { class: "sr-only", "Dioxus on GitHub" } diff --git a/src/doc_examples/assets.rs b/src/doc_examples/assets.rs index 0159f147e..a34595e6f 100644 --- a/src/doc_examples/assets.rs +++ b/src/doc_examples/assets.rs @@ -6,7 +6,9 @@ fn App() -> Element { // You can link to assets that are relative to the package root or even link to an asset from a url // These assets will automatically be picked up by the dioxus cli, optimized, and bundled with your final applications const ASSET: manganis::ImageAsset = manganis::mg!(image("./public/static/ferrous_wave.png")); - rsx! { img { src: "{ASSET}" } } + rsx! { + img { src: "{ASSET}" } + } } /// ANCHOR_END: images @@ -21,15 +23,15 @@ pub const ENUM_ROUTER_IMG: manganis::ImageAsset = .preload()); fn EnumRouter() -> Element { - rsx! { img { src: "{ENUM_ROUTER_IMG}" } } + rsx! { + img { src: "{ENUM_ROUTER_IMG}" } + } } /// ANCHOR_END: optimized_images // ANCHOR: arbitrary_files // You can also collect arbitrary files. Relative paths are resolved relative to the package root const PATH_TO_BUNDLED_CARGO_TOML: &str = manganis::mg!(file("./Cargo.toml")); -// You can use URLs to copy the asset at build time -const PATH_TO_BUNDLED_AWESOME_DIOXUS: &str = manganis::mg!(file("https://dioxuslabs.com/awesome")); // ANCHOR_END: arbitrary_files // ANCHOR: style_sheets diff --git a/src/doc_examples/event_prevent_default.rs b/src/doc_examples/event_prevent_default.rs index c2f4b4dd7..1e7b33641 100644 --- a/src/doc_examples/event_prevent_default.rs +++ b/src/doc_examples/event_prevent_default.rs @@ -6,8 +6,10 @@ pub fn App() -> Element { rsx! { a { href: "https://example.com", - prevent_default: "onclick", - onclick: |_| log::info!("link clicked"), + onclick: |evt| { + evt.prevent_default(); + log::info!("link clicked") + }, "example.com" } } diff --git a/src/icons.rs b/src/icons.rs index 77cfb8c40..8c77d86bf 100644 --- a/src/icons.rs +++ b/src/icons.rs @@ -1,6 +1,5 @@ use dioxus::prelude::*; -pub(crate) static FERROUS_LOGO: &str = - asset!("https://rustacean.net/assets/rustacean-flat-gesture.png"); +pub(crate) static FERROUS_LOGO: &str = "https://rustacean.net/assets/rustacean-flat-gesture.png"; pub(crate) fn ExternalLinkIcon() -> Element { rsx! { diff --git a/src/main.rs b/src/main.rs index 7228eabcb..bc5ae4193 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,41 +6,34 @@ use dioxus_router::prelude::*; pub(crate) use docs::BookRoute; use serde::{Deserialize, Serialize}; -macro_rules! export_items { - ( - $( - pub(crate) mod $item:ident; - )* - ) => { - $( - pub(crate) mod $item; - pub(crate) use $item::*; - )* - }; -} - +mod doc_examples; pub(crate) mod icons; -pub(crate) mod sitemap; - pub(crate) mod shortcut; - -mod doc_examples; +pub(crate) mod sitemap; mod snippets; pub(crate) use components::*; pub(crate) mod components { - export_items! { - pub(crate) mod blog; - pub(crate) mod footer; - pub(crate) mod homepage; - pub(crate) mod learn; - pub(crate) mod nav; - pub(crate) mod notfound; - pub(crate) mod tutorials; - pub(crate) mod awesome; - pub(crate) mod deploy; - pub(crate) mod desktop_dependencies; - } + pub(crate) mod awesome; + pub use awesome::*; + pub(crate) mod blog; + pub use blog::*; + pub(crate) mod deploy; + pub use deploy::*; + pub(crate) mod desktop_dependencies; + pub use desktop_dependencies::*; + pub(crate) mod footer; + pub use footer::*; + pub(crate) mod homepage; + pub use homepage::*; + pub(crate) mod learn; + pub use learn::*; + pub(crate) mod nav; + pub use nav::*; + pub(crate) mod notfound; + pub use notfound::*; + pub(crate) mod tutorials; + pub use tutorials::*; } #[component] @@ -57,9 +50,13 @@ fn HeaderFooter() -> Element { rsx! { div { class: "bg-white dark:bg-ideblack pb-8", - link { rel: "stylesheet", href: "/githubmarkdown.css" } - link { rel: "stylesheet", href: "/tailwind.css" } - link { rel: "stylesheet", href: "/main.css" } + head::Link { rel: "stylesheet", href: "/githubmarkdown.css" } + head::Link { rel: "stylesheet", href: "/tailwind.css" } + head::Link { rel: "stylesheet", href: "/main.css" } + head::Link { + rel: "stylesheet", + href: "https://fonts.googleapis.com/icon?family=Material+Icons", + } Nav {} Outlet:: {} } @@ -249,44 +246,46 @@ pub enum Route {{\n\t" } fn main() { - #[cfg(feature = "web")] - { - wasm_logger::init(wasm_logger::Config::new(log::Level::Info)); - std::panic::set_hook(Box::new(console_error_panic_hook::hook)); - } - #[cfg(feature = "prebuild")] - { - use dioxus_router::prelude::*; - use log::LevelFilter; - simple_logger::SimpleLogger::new() - .with_level(LevelFilter::Error) - .init() - .unwrap(); + // #[cfg(feature = "web")] + // { + // wasm_logger::init(wasm_logger::Config::new(log::Level::Info)); + // std::panic::set_hook(Box::new(console_error_panic_hook::hook)); + // } + launch(app); - std::env::remove_var("DIOXUS_ACTIVE"); - std::env::remove_var("CARGO"); + // #[cfg(feature = "prebuild")] + // { + // use dioxus_router::prelude::*; + // use log::LevelFilter; + // simple_logger::SimpleLogger::new() + // .with_level(LevelFilter::Error) + // .init() + // .unwrap(); - LaunchBuilder::new() - .with_cfg(dioxus::static_site_generation::Config::new().github_pages()) - .launch(app); - println!("prebuilt"); + // std::env::remove_var("DIOXUS_ACTIVE"); + // std::env::remove_var("CARGO"); - dioxus_search::SearchIndex::::create( - "search", - dioxus_search::BaseDirectoryMapping::new(std::path::PathBuf::from("./docs")).map( - |route: Route| { - let route = route.to_string(); - let mut path = std::path::PathBuf::default(); - for (i, segment) in route.split('/').enumerate() { - path.push(segment); - } - Some(path.join("index.html")) - }, - ), - ); - return; - } + // LaunchBuilder::new() + // .with_cfg(dioxus::static_site_generation::Config::new().github_pages()) + // .launch(app); + // println!("prebuilt"); - #[cfg(not(feature = "prebuild"))] - launch(app); + // dioxus_search::SearchIndex::::create( + // "search", + // dioxus_search::BaseDirectoryMapping::new(std::path::PathBuf::from("./docs")).map( + // |route: Route| { + // let route = route.to_string(); + // let mut path = std::path::PathBuf::default(); + // for (i, segment) in route.split('/').enumerate() { + // path.push(segment); + // } + // Some(path.join("index.html")) + // }, + // ), + // ); + // return; + // } + + // #[cfg(not(feature = "prebuild"))] + // launch(app); } From ba366a2f257b8f7aa2a359aeb17b72e9b2432613 Mon Sep 17 00:00:00 2001 From: Jonathan Kelley Date: Wed, 14 Aug 2024 17:49:40 -0700 Subject: [PATCH 07/35] switch back to main dioxus --- Cargo.lock | 49 +++++++++++++++++------------------ Cargo.toml | 44 ++++++++++++++++---------------- src/main.rs | 73 ++++++++++++++++++++++++++--------------------------- 3 files changed, 83 insertions(+), 83 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f9bfd69d5..d2ad7ffdc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1063,7 +1063,7 @@ dependencies = [ [[package]] name = "dioxus" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" +source = "git+https://github.com/dioxuslabs/dioxus#4d6fb74e873d704c19bebdf8e9fa9b103f1e4508" dependencies = [ "dioxus-config-macro", "dioxus-core", @@ -1082,7 +1082,7 @@ dependencies = [ [[package]] name = "dioxus-cli-config" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" +source = "git+https://github.com/dioxuslabs/dioxus#4d6fb74e873d704c19bebdf8e9fa9b103f1e4508" dependencies = [ "built", "clap", @@ -1095,7 +1095,7 @@ dependencies = [ [[package]] name = "dioxus-config-macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" +source = "git+https://github.com/dioxuslabs/dioxus#4d6fb74e873d704c19bebdf8e9fa9b103f1e4508" dependencies = [ "proc-macro2", "quote", @@ -1104,7 +1104,7 @@ dependencies = [ [[package]] name = "dioxus-core" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" +source = "git+https://github.com/dioxuslabs/dioxus#4d6fb74e873d704c19bebdf8e9fa9b103f1e4508" dependencies = [ "const_format", "futures-channel", @@ -1124,7 +1124,7 @@ dependencies = [ [[package]] name = "dioxus-core-macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" +source = "git+https://github.com/dioxuslabs/dioxus#4d6fb74e873d704c19bebdf8e9fa9b103f1e4508" dependencies = [ "convert_case 0.6.0", "dioxus-rsx", @@ -1137,7 +1137,7 @@ dependencies = [ [[package]] name = "dioxus-desktop" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" +source = "git+https://github.com/dioxuslabs/dioxus#4d6fb74e873d704c19bebdf8e9fa9b103f1e4508" dependencies = [ "async-trait", "cocoa", @@ -1176,7 +1176,7 @@ dependencies = [ [[package]] name = "dioxus-fullstack" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" +source = "git+https://github.com/dioxuslabs/dioxus#4d6fb74e873d704c19bebdf8e9fa9b103f1e4508" dependencies = [ "base64 0.22.1", "bytes", @@ -1198,7 +1198,7 @@ dependencies = [ [[package]] name = "dioxus-hooks" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" +source = "git+https://github.com/dioxuslabs/dioxus#4d6fb74e873d704c19bebdf8e9fa9b103f1e4508" dependencies = [ "dioxus-core", "dioxus-signals", @@ -1214,7 +1214,7 @@ dependencies = [ [[package]] name = "dioxus-hot-reload" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" +source = "git+https://github.com/dioxuslabs/dioxus#4d6fb74e873d704c19bebdf8e9fa9b103f1e4508" dependencies = [ "dioxus-cli-config", "dioxus-core", @@ -1228,12 +1228,13 @@ dependencies = [ "tokio-stream", "tokio-tungstenite 0.23.1", "tracing", + "warnings", ] [[package]] name = "dioxus-html" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" +source = "git+https://github.com/dioxuslabs/dioxus#4d6fb74e873d704c19bebdf8e9fa9b103f1e4508" dependencies = [ "async-trait", "dioxus-core", @@ -1261,7 +1262,7 @@ dependencies = [ [[package]] name = "dioxus-html-internal-macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" +source = "git+https://github.com/dioxuslabs/dioxus#4d6fb74e873d704c19bebdf8e9fa9b103f1e4508" dependencies = [ "convert_case 0.6.0", "proc-macro2", @@ -1272,7 +1273,7 @@ dependencies = [ [[package]] name = "dioxus-interpreter-js" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" +source = "git+https://github.com/dioxuslabs/dioxus#4d6fb74e873d704c19bebdf8e9fa9b103f1e4508" dependencies = [ "dioxus-core", "dioxus-html", @@ -1289,7 +1290,7 @@ dependencies = [ [[package]] name = "dioxus-lib" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" +source = "git+https://github.com/dioxuslabs/dioxus#4d6fb74e873d704c19bebdf8e9fa9b103f1e4508" dependencies = [ "dioxus-config-macro", "dioxus-core", @@ -1303,7 +1304,7 @@ dependencies = [ [[package]] name = "dioxus-liveview" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" +source = "git+https://github.com/dioxuslabs/dioxus#4d6fb74e873d704c19bebdf8e9fa9b103f1e4508" dependencies = [ "axum", "dioxus-cli-config", @@ -1336,7 +1337,7 @@ dependencies = [ [[package]] name = "dioxus-router" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" +source = "git+https://github.com/dioxuslabs/dioxus#4d6fb74e873d704c19bebdf8e9fa9b103f1e4508" dependencies = [ "dioxus-cli-config", "dioxus-fullstack", @@ -1356,7 +1357,7 @@ dependencies = [ [[package]] name = "dioxus-router-macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" +source = "git+https://github.com/dioxuslabs/dioxus#4d6fb74e873d704c19bebdf8e9fa9b103f1e4508" dependencies = [ "proc-macro2", "quote", @@ -1367,7 +1368,7 @@ dependencies = [ [[package]] name = "dioxus-rsx" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" +source = "git+https://github.com/dioxuslabs/dioxus#4d6fb74e873d704c19bebdf8e9fa9b103f1e4508" dependencies = [ "dioxus-core", "internment", @@ -1443,7 +1444,7 @@ dependencies = [ [[package]] name = "dioxus-signals" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" +source = "git+https://github.com/dioxuslabs/dioxus#4d6fb74e873d704c19bebdf8e9fa9b103f1e4508" dependencies = [ "dioxus-core", "futures-channel", @@ -1459,7 +1460,7 @@ dependencies = [ [[package]] name = "dioxus-ssr" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" +source = "git+https://github.com/dioxuslabs/dioxus#4d6fb74e873d704c19bebdf8e9fa9b103f1e4508" dependencies = [ "askama_escape", "async-trait", @@ -1478,7 +1479,7 @@ dependencies = [ [[package]] name = "dioxus-static-site-generation" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" +source = "git+https://github.com/dioxuslabs/dioxus#4d6fb74e873d704c19bebdf8e9fa9b103f1e4508" dependencies = [ "dioxus-fullstack", "dioxus-lib", @@ -1490,7 +1491,7 @@ dependencies = [ [[package]] name = "dioxus-web" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" +source = "git+https://github.com/dioxuslabs/dioxus#4d6fb74e873d704c19bebdf8e9fa9b103f1e4508" dependencies = [ "ciborium", "console_error_panic_hook", @@ -1568,7 +1569,7 @@ dependencies = [ [[package]] name = "dioxus_server_macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" +source = "git+https://github.com/dioxuslabs/dioxus#4d6fb74e873d704c19bebdf8e9fa9b103f1e4508" dependencies = [ "convert_case 0.6.0", "proc-macro2", @@ -2102,7 +2103,7 @@ dependencies = [ [[package]] name = "generational-box" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" +source = "git+https://github.com/dioxuslabs/dioxus#4d6fb74e873d704c19bebdf8e9fa9b103f1e4508" dependencies = [ "parking_lot", ] @@ -3051,7 +3052,7 @@ dependencies = [ [[package]] name = "lazy-js-bundle" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/wip-diagnose-wierd-stack-bug#6ba323acf847682ff70eab556bca0c4b16a05be5" +source = "git+https://github.com/dioxuslabs/dioxus#4d6fb74e873d704c19bebdf8e9fa9b103f1e4508" [[package]] name = "lazy_static" diff --git a/Cargo.toml b/Cargo.toml index 882599e00..be3f59ab4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -73,28 +73,28 @@ tracing = "0.1.40" rand = { version = "0.8.5", optional = true } [patch.crates-io] -dioxus = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } -dioxus-lib = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } -dioxus-core = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } -dioxus-core-macro = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } -dioxus-config-macro = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } -dioxus-router = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } -dioxus-router-macro = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } -dioxus-html = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } -dioxus-html-internal-macro = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } -dioxus-hooks = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } -dioxus-web = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } -dioxus-ssr = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } -dioxus-desktop = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } -dioxus-interpreter-js = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } -dioxus-liveview = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } -dioxus-rsx = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } -dioxus-signals = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } -dioxus-cli-config = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } -generational-box = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } -dioxus-hot-reload = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } -dioxus_server_macro = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } -dioxus-fullstack = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2", branch = "jk/wip-diagnose-wierd-stack-bug" } +dioxus = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-lib = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-core = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-core-macro = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-config-macro = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-router = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-router-macro = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-html = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-html-internal-macro = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-hooks = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-web = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-ssr = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-desktop = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-interpreter-js = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-liveview = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-rsx = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-signals = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-cli-config = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +generational-box = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-hot-reload = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus_server_macro = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus-fullstack = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } manganis = { git = "https://github.com/DioxusLabs/manganis", branch = "jk/drop-remote-support" } manganis-common = { git = "https://github.com/DioxusLabs/manganis", branch = "jk/drop-remote-support" } diff --git a/src/main.rs b/src/main.rs index bc5ae4193..556ba64b8 100644 --- a/src/main.rs +++ b/src/main.rs @@ -246,46 +246,45 @@ pub enum Route {{\n\t" } fn main() { - // #[cfg(feature = "web")] - // { - // wasm_logger::init(wasm_logger::Config::new(log::Level::Info)); - // std::panic::set_hook(Box::new(console_error_panic_hook::hook)); - // } - launch(app); + #[cfg(feature = "web")] + { + wasm_logger::init(wasm_logger::Config::new(log::Level::Info)); + std::panic::set_hook(Box::new(console_error_panic_hook::hook)); + } - // #[cfg(feature = "prebuild")] - // { - // use dioxus_router::prelude::*; - // use log::LevelFilter; - // simple_logger::SimpleLogger::new() - // .with_level(LevelFilter::Error) - // .init() - // .unwrap(); + #[cfg(feature = "prebuild")] + { + use dioxus_router::prelude::*; + use log::LevelFilter; + simple_logger::SimpleLogger::new() + .with_level(LevelFilter::Error) + .init() + .unwrap(); - // std::env::remove_var("DIOXUS_ACTIVE"); - // std::env::remove_var("CARGO"); + std::env::remove_var("DIOXUS_ACTIVE"); + std::env::remove_var("CARGO"); - // LaunchBuilder::new() - // .with_cfg(dioxus::static_site_generation::Config::new().github_pages()) - // .launch(app); - // println!("prebuilt"); + LaunchBuilder::new() + .with_cfg(dioxus::static_site_generation::Config::new().github_pages()) + .launch(app); + println!("prebuilt"); - // dioxus_search::SearchIndex::::create( - // "search", - // dioxus_search::BaseDirectoryMapping::new(std::path::PathBuf::from("./docs")).map( - // |route: Route| { - // let route = route.to_string(); - // let mut path = std::path::PathBuf::default(); - // for (i, segment) in route.split('/').enumerate() { - // path.push(segment); - // } - // Some(path.join("index.html")) - // }, - // ), - // ); - // return; - // } + dioxus_search::SearchIndex::::create( + "search", + dioxus_search::BaseDirectoryMapping::new(std::path::PathBuf::from("./docs")).map( + |route: Route| { + let route = route.to_string(); + let mut path = std::path::PathBuf::default(); + for (i, segment) in route.split('/').enumerate() { + path.push(segment); + } + Some(path.join("index.html")) + }, + ), + ); + return; + } - // #[cfg(not(feature = "prebuild"))] - // launch(app); + #[cfg(not(feature = "prebuild"))] + launch(app); } From 26accf4bc20b7c5f5e866c4d100bdda7bb93871d Mon Sep 17 00:00:00 2001 From: Jonathan Kelley Date: Wed, 14 Aug 2024 18:16:51 -0700 Subject: [PATCH 08/35] small tweaks to project layout, remove weird homepage sections --- src/components/{awesome/mod.rs => awesome.rs} | 27 +++++++------ src/components/{blog/mod.rs => blog.rs} | 14 +++---- .../{homepage/mod.rs => homepage.rs} | 8 ---- src/components/homepage/call_to_action.rs | 38 ++++++++++--------- src/components/homepage/featured_examples.rs | 30 ++++++++------- src/components/nav.rs | 2 +- src/components/notfound.rs | 7 +++- src/components/{awesome => }/storage.js | 0 8 files changed, 65 insertions(+), 61 deletions(-) rename src/components/{awesome/mod.rs => awesome.rs} (92%) rename src/components/{blog/mod.rs => blog.rs} (94%) rename src/components/{homepage/mod.rs => homepage.rs} (97%) rename src/components/{awesome => }/storage.js (100%) diff --git a/src/components/awesome/mod.rs b/src/components/awesome.rs similarity index 92% rename from src/components/awesome/mod.rs rename to src/components/awesome.rs index 7ba8ddacd..389649a84 100644 --- a/src/components/awesome/mod.rs +++ b/src/components/awesome.rs @@ -76,9 +76,7 @@ struct StarsResponse { #[component] pub(crate) fn Awesome() -> Element { rsx! { - div { class: "bg-white dark:bg-ideblack mx-auto max-w-screen-lg", - AwesomeInner {} - } + div { class: "bg-white dark:bg-ideblack mx-auto max-w-screen-lg", AwesomeInner {} } } } @@ -128,14 +126,22 @@ pub(crate) fn AwesomeInner() -> Element { div { "Everything you'll need to build awesome Dioxus apps. Also check out " b { - Link { class: "hover:text-sky-500 dark:hover:text-sky-400", to: "#made-with-dioxus", "Made with Dioxus" } + Link { + class: "hover:text-sky-500 dark:hover:text-sky-400", + to: "#made-with-dioxus", + "Made with Dioxus" + } } "!" } div { class: "pt-2", "To submit your project, make a pull request in the " b { - Link { class: "hover:text-sky-500 dark:hover:text-sky-400", to: "https://github.com/DioxusLabs/awesome-dioxus", "awesome-dioxus" } + Link { + class: "hover:text-sky-500 dark:hover:text-sky-400", + to: "https://github.com/DioxusLabs/awesome-dioxus", + "awesome-dioxus" + } } " repo." } @@ -149,7 +155,7 @@ pub(crate) fn AwesomeInner() -> Element { class: "w-full text-center p-4 rounded-lg text-gray-300 bg-gray-100", placeholder: "Looking for something specific?", value: "{search}", - oninput: move |evt| search.set(evt.value()) + oninput: move |evt| search.set(evt.value()), } } } @@ -276,8 +282,7 @@ fn AwesomeItem(item: ReadOnlySignal) -> Element { }; let inner = rsx! { - div { - class: "flex flex-col h-full p-3 rounded hover:-translate-y-2 transition-transform duration-300 bg-white dark:bg-slate-800 shadow", + div { class: "flex flex-col h-full p-3 rounded hover:-translate-y-2 transition-transform duration-300 bg-white dark:bg-slate-800 shadow", div { p { class: "text-xl text-gray-800 dark:text-gray-100 font-bold", "{item.name}" } p { class: "text-base pt-2 text-gray-700 dark:text-gray-400", "{item.description}" } @@ -292,13 +297,11 @@ fn AwesomeItem(item: ReadOnlySignal) -> Element { }; rsx! { - Link { to: NavigationTarget::::External(link), new_tab: true, - {inner} - } + Link { to: NavigationTarget::::External(link), new_tab: true, {inner} } } } -#[wasm_bindgen(module = "/src/components/awesome/storage.js")] +#[wasm_bindgen(module = "/src/components/storage.js")] extern "C" { pub(crate) fn get_stars(name: String) -> Option; pub(crate) fn set_stars(name: String, stars: usize); diff --git a/src/components/blog/mod.rs b/src/components/blog.rs similarity index 94% rename from src/components/blog/mod.rs rename to src/components/blog.rs index 822ad876d..14c1b0a10 100644 --- a/src/components/blog/mod.rs +++ b/src/components/blog.rs @@ -19,7 +19,7 @@ pub(crate) const POST_RELEASE_050: BlogPost = BlogPost { title: "Announcing Dioxus 0.5", description: "A signal rewrite, zero unsafe, no lifetimes, unified launch, and more! ", link: "/blog/release-050/", - content: include_str!("../../../posts/release050.html"), + content: include_str!("../../posts/release050.html"), }; #[component] @@ -36,7 +36,7 @@ pub(crate) const POST_TEMPLATE: BlogPost = BlogPost { description: "Using a new technique called subtree memoization, Dioxus is now almost as fast as SolidJS.", link: "/blog/templates-diffing/", - content: include_str!("../../../posts/templates.html"), + content: include_str!("../../posts/templates.html"), }; #[component] @@ -53,7 +53,7 @@ pub(crate) const POST_FULLTINME: BlogPost = BlogPost { description: "Dioxus is now my full time job! I'm so excited to be able to work on this full time.", link: "/blog/going-fulltime/", - content: include_str!("../../../posts/fulltime.html"), + content: include_str!("../../posts/fulltime.html"), }; #[component] @@ -69,7 +69,7 @@ pub(crate) const POST_RELEASE_040: BlogPost = BlogPost { title: "Announcing Dioxus 0.4", description: "An overhauled router, fullstack, desktop hotreloading, and more!", link: "/blog/release-040/", - content: include_str!("../../../posts/release040.html"), + content: include_str!("../../posts/release040.html"), }; #[component] @@ -85,7 +85,7 @@ pub(crate) const POST_RELEASE_030: BlogPost = BlogPost { title: "Announcing Dioxus 0.3", description: "The next big release of Dioxus is here! Templates, autoformatting, multiwindow support, and more!", link: "/blog/release-030/", - content: include_str!("../../../posts/release030.html"), + content: include_str!("../../posts/release030.html"), }; #[component] @@ -101,7 +101,7 @@ pub(crate) const POST_RELEASE_020: BlogPost = BlogPost { title: "Announcing Dioxus 0.2", description: "Just over two months in, and we already have a ton of awesome changes to Dioxus!", link: "/blog/release-020/", - content: include_str!("../../../posts/release020.html"), + content: include_str!("../../posts/release020.html"), }; #[component] @@ -117,7 +117,7 @@ pub(crate) const POST_RELEASE_010: BlogPost = BlogPost { title: "Announcing Dioxus 0.1", description: "After months of work, we're very excited to release the first version of Dioxus! Dioxus is a new library for building interactive user interfaces with Rust. It is built around a VirtualDOM, making it portable for the web, desktop, server, mobile, and more.", link: "/blog/introducing-dioxus/", - content: include_str!("../../../posts/release.html"), + content: include_str!("../../posts/release.html"), }; #[component] diff --git a/src/components/homepage/mod.rs b/src/components/homepage.rs similarity index 97% rename from src/components/homepage/mod.rs rename to src/components/homepage.rs index 9794b1da4..16094aaad 100644 --- a/src/components/homepage/mod.rs +++ b/src/components/homepage.rs @@ -15,11 +15,8 @@ pub(crate) fn Homepage() -> Element { hero::Hero {} AvailablePlatforms {} } - featured_examples::FeaturedExamples {} - // crate::components::blog::BlogList {} Stats {} } - call_to_action::CallToAction {} } } @@ -99,7 +96,6 @@ fn AvailablePlatforms() -> Element { } } div { class: "max-w-screen-lg mx-auto pb-8 px-2 md:px-16 dark:text-white", - // div { class: "max-w-screen-xl mx-auto pb-64 px-16 dark:text-white", TriShow { left: rsx! { }, center: rsx! { }, @@ -162,7 +158,6 @@ fn TriShow( ) -> Element { rsx! { div { class: "w-full flex flex-row justify-center max-w-screen-lg", - // div { class: "grow basis-0", left } TriPadding { last: last.unwrap_or_default(), {center} } div { class: "grow basis-0", Link { to: to.clone(), @@ -184,7 +179,6 @@ fn TriPadding(children: Element, last: bool) -> Element { div { class: "flex flex-col items-center", div { class: "w-0 h-10 border-dashed border border-[#444]" } IconSplit {} - if !last { div { class: "w-0 h-full border-dashed border border-[#444]", {children} } } @@ -271,7 +265,6 @@ fn Stats() -> Element { div { class: "container mx-auto max-w-screen-lg", div { class: "relative ", div { class: "flex flex-col items-center justify-center text-center max-w-screen-lg mx-auto pb-4", - // span { class: "text-xl text-blue-300", "Portable" } h1 { class: "text-[3.3em] font-bold tracking-tight dark:text-white text-ghdarkmetal pb-4 mb-4 ", "A vibrant, active community." } @@ -289,7 +282,6 @@ fn Stats() -> Element { StatsItem { major: "1500", minor: "Community Projects" } } } - a { href: "https://github.com/dioxuslabs/dioxus/graphs/contributors", img { src: "https://contrib.rocks/image?repo=dioxuslabs/dioxus&max=52&columns=13", diff --git a/src/components/homepage/call_to_action.rs b/src/components/homepage/call_to_action.rs index 315e90bf9..be015f525 100644 --- a/src/components/homepage/call_to_action.rs +++ b/src/components/homepage/call_to_action.rs @@ -3,24 +3,26 @@ use crate::*; use dioxus::prelude::*; pub(crate) static CallToAction: Component<()> = |cx| { + // section { class: "text-gray-400 bg-ideblack body-font", + // div { class: "container px-5 py-12 mx-auto", + // div { class: "lg:w-2/3 flex flex-col sm:flex-row items-start mx-auto", + // h1 { class: "flex-grow pb-4 sm:pr-16 text-2xl font-medium title-font text-white text-center sm:text-left", + // "Start building today, with Dioxus." + // } + // img { class: "h-12 mx-4", src: "{FERROUS_LOGO}" } + // Link { + // to: Route::Docs { + // child: BookRoute::GettingStartedIndex {}, + // }, + // button { class: "flex-shrink-0 text-white bg-indigo-500 border-0 py-2 px-8 focus:outline-none hover:bg-indigo-600 rounded text-lg mt-10 sm:mt-0", + // "Get started" + // } + // } + // } + // } + // } + // rsx! { - section { class: "text-gray-400 bg-ideblack body-font", - div { class: "container px-5 py-12 mx-auto", - div { class: "lg:w-2/3 flex flex-col sm:flex-row items-start mx-auto", - h1 { class: "flex-grow pb-4 sm:pr-16 text-2xl font-medium title-font text-white text-center sm:text-left", - "Start building today, with Dioxus." - } - img { class: "h-12 mx-4", src: "{FERROUS_LOGO}" } - Link { - to: Route::Docs { - child: BookRoute::GettingStartedIndex {}, - }, - button { class: "flex-shrink-0 text-white bg-indigo-500 border-0 py-2 px-8 focus:outline-none hover:bg-indigo-600 rounded text-lg mt-10 sm:mt-0", - "Get started" - } - } - } - } - } + div {} } }; diff --git a/src/components/homepage/featured_examples.rs b/src/components/homepage/featured_examples.rs index e548b4a48..18eb5ff91 100644 --- a/src/components/homepage/featured_examples.rs +++ b/src/components/homepage/featured_examples.rs @@ -1,6 +1,17 @@ use dioxus::prelude::*; pub(crate) fn FeaturedExamples() -> Element { + // todo: maybe feature this somewhere else? + // FeaturedExample { + // title: "JS Benchmark", + // subtitle: "Web", + // description: "The classic performance benchmark for web frameworks. Dioxus ranks extraordinarily high!", + // link: "https://github.com/krausest/js-framework-benchmark/tree/master/frameworks/keyed/dioxus", + // img_avif: "/static/jsbenchmark_cropped.avif", + // img: "/static/jsbenchmark_cropped.png", + // img_alt: "Javascript Framework Benchmark" + // } + rsx! { section { class: "body-font w-full dark:bg-ideblack", div { class: "container px-6 max-w-screen-lg py-24 mx-auto", @@ -17,7 +28,7 @@ pub(crate) fn FeaturedExamples() -> Element { link: "https://github.com/DioxusLabs/dioxus/blob/main/examples/todomvc.rs", img_avif: "/static/todos_cropped.avif", img: "/static/todos_cropped.png", - img_alt: "TodoMVC" + img_alt: "TodoMVC", } FeaturedExample { title: "File Explorer", @@ -26,7 +37,7 @@ pub(crate) fn FeaturedExamples() -> Element { link: "https://github.com/DioxusLabs/dioxus/blob/main/examples/file_explorer.rs", img_avif: "/static/file_explorer.avif", img: "/static/file_explorer.png", - img_alt: "File Explorer" + img_alt: "File Explorer", } FeaturedExample { title: "Documentation Site", @@ -35,16 +46,7 @@ pub(crate) fn FeaturedExamples() -> Element { link: "https://github.com/DioxusLabs/docsite", img_avif: "/static/docsite_cropped.avif", img: "/static/docsite_cropped.png", - img_alt: "The documentation site you're currently viewing" - } - FeaturedExample { - title: "JS Benchmark", - subtitle: "Web", - description: "The classic performance benchmark for web frameworks. Dioxus ranks extraordinarily high!", - link: "https://github.com/krausest/js-framework-benchmark/tree/master/frameworks/keyed/dioxus", - img_avif: "/static/jsbenchmark_cropped.avif", - img: "/static/jsbenchmark_cropped.png", - img_alt: "Javascript Framework Benchmark" + img_alt: "The documentation site you're currently viewing", } } } @@ -82,12 +84,12 @@ fn FeaturedExample(props: FeaturedExampleProps) -> Element { source { class: "w-full rounded-lg object-cover", r#type: "image/avif", - "srcset": "{img_avif}" + "srcset": "{img_avif}", } img { class: "absolute inset-0 w-full h-full object-cover object-center", alt: "{img_alt}", - src: "{img}" + src: "{img}", } } div { class: "px-8 py-10 relative z-10 w-full border-4 border-gray-200 bg-white opacity-0 hover:opacity-100", diff --git a/src/components/nav.rs b/src/components/nav.rs index a8aef6321..a81e4f2db 100644 --- a/src/components/nav.rs +++ b/src/components/nav.rs @@ -102,7 +102,7 @@ fn LinkList() -> Element { rsx! { Link { to: link, - class: "p-0 p-2 leading-none hover:text-sky-500 dark:hover:text-sky-400 rounded fill-zinc-700 dark:fill-zinc-100 {cur_class}", + class: "p-2 leading-none hover:text-sky-500 dark:hover:text-sky-400 rounded fill-zinc-700 dark:fill-zinc-100 {cur_class}", position: "relative", "{name}" if is_external { diff --git a/src/components/notfound.rs b/src/components/notfound.rs index a485d878d..2f8ba7c60 100644 --- a/src/components/notfound.rs +++ b/src/components/notfound.rs @@ -26,7 +26,12 @@ pub(crate) fn Err404(segments: Vec) -> Element { } } } - div { class: "max-w-4xl h-64 md:h-96 mx-auto", img { class: "w-full rounded-lg object-cover", src: FERROUS_LOGO } } + div { class: "max-w-4xl h-64 md:h-96 mx-auto", + img { + class: "w-full rounded-lg object-cover", + src: FERROUS_LOGO, + } + } } } ) diff --git a/src/components/awesome/storage.js b/src/components/storage.js similarity index 100% rename from src/components/awesome/storage.js rename to src/components/storage.js From 07a15e2bdd3d5419d5b46d39c63ca9d0b76316b5 Mon Sep 17 00:00:00 2001 From: Jonathan Kelley Date: Wed, 14 Aug 2024 18:49:14 -0700 Subject: [PATCH 09/35] bump stats --- src/components/homepage.rs | 14 ++++++++------ src/main.rs | 8 ++------ 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/components/homepage.rs b/src/components/homepage.rs index 16094aaad..57e3a9474 100644 --- a/src/components/homepage.rs +++ b/src/components/homepage.rs @@ -276,13 +276,15 @@ fn Stats() -> Element { } div { class: "max-w-screen-xl mx-auto py-12 px-2 md:px-16 dark:bg-[#111111] mb-12", div { class: "grid grid-cols-2 grid-rows-2 sm:grid-cols-4 sm:grid-rows-1", - StatsItem { major: "16k", minor: "Stars" } - StatsItem { major: "140k", minor: "Downloads" } - StatsItem { major: "206", minor: "Contributors" } - StatsItem { major: "1500", minor: "Community Projects" } + StatsItem { major: "20k", minor: "Stars" } + StatsItem { major: "243k", minor: "Downloads" } + StatsItem { major: "244", minor: "Contributors" } + StatsItem { major: "2073", minor: "Community Projects" } } } - a { href: "https://github.com/dioxuslabs/dioxus/graphs/contributors", + a { + href: "https://github.com/dioxuslabs/dioxus/graphs/contributors", + target: "_blank", img { src: "https://contrib.rocks/image?repo=dioxuslabs/dioxus&max=52&columns=13", class: "mx-auto pb-12", @@ -294,7 +296,7 @@ fn Stats() -> Element { } #[component] -fn StatsItem(major: &'static str, minor: &'static str) -> Element { +fn StatsItem(major: String, minor: String) -> Element { rsx! { div { class: "text-center shadow mx-2 rounded-lg py-6 border", div { class: "text-5xl font-bold text-gray-800 dark:text-gray-100", {major} } diff --git a/src/main.rs b/src/main.rs index 556ba64b8..2755f549b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,8 +1,7 @@ -#![allow(non_snake_case, non_upper_case_globals, unused)] +#![allow(non_snake_case, non_upper_case_globals)] use dioxus::html::input_data::keyboard_types::{Key, Modifiers}; use dioxus::prelude::*; -use dioxus_router::prelude::*; pub(crate) use docs::BookRoute; use serde::{Deserialize, Serialize}; @@ -133,10 +132,6 @@ pub(crate) enum Route { Err404 { segments: Vec }, } -pub(crate) fn use_url() -> String { - use_route::().to_string() -} - pub(crate) fn app() -> Element { rsx! { Router:: {} @@ -285,6 +280,7 @@ fn main() { return; } + #[allow(deprecated)] #[cfg(not(feature = "prebuild"))] launch(app); } From 14871e7a4f20c95fb77cb772fc6c8c370d7b80b5 Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Thu, 15 Aug 2024 17:43:53 -0700 Subject: [PATCH 10/35] start reactivity reference --- docs-src/0.5/SUMMARY.md | 1 + .../0.5/en/reference/reactivity.md | 125 ++++-- public/tailwind.css | 390 ++++++++---------- src/components/desktop_dependencies.rs | 2 +- src/components/playground.rs | 8 +- src/doc_examples/mod.rs | 2 + src/doc_examples/reactivity.rs | 230 +++++++++++ 7 files changed, 502 insertions(+), 256 deletions(-) rename state.md => docs-src/0.5/en/reference/reactivity.md (75%) create mode 100644 src/doc_examples/reactivity.rs diff --git a/docs-src/0.5/SUMMARY.md b/docs-src/0.5/SUMMARY.md index 91678839c..70a49daaf 100644 --- a/docs-src/0.5/SUMMARY.md +++ b/docs-src/0.5/SUMMARY.md @@ -12,6 +12,7 @@ --- - [Reference](reference/index.md) + - [Reactivity](reference/reactivity.md) - [RSX](reference/rsx.md) - [Components](reference/components.md) - [Props](reference/component_props.md) diff --git a/state.md b/docs-src/0.5/en/reference/reactivity.md similarity index 75% rename from state.md rename to docs-src/0.5/en/reference/reactivity.md index 8ff15281f..fa6bdc86c 100644 --- a/state.md +++ b/docs-src/0.5/en/reference/reactivity.md @@ -1,8 +1,100 @@ -Here is an overview of the state management system in dioxus. This doesn't cover all the internals, but it should serve as a pretty good reference: +# Reactivity -# State +Dioxus lets you define your app as a function of the current state. As you change the state, the parts of your app that depend on that state will automatically re-run. Reactivity is the core primitive that updates derived state. -Signal is like a fancy version of RefCell for UIs. Just like RefCell, it checks borrows at runtime. It has a bunch of helper methods to make it easier to use. Calling it like a function will clone the inner value. You can also call a few traits like AddAssign on it directly without writing to it manually. +## Mutable State + +You can create mutable state in Dioxus with Signals. Signals are tracked values that automatically update your app when you change them. They form the skeleton of your app's state from which you can derive other state. Signals are often driven directly from user input through event handlers or async tasks. + +22 +You can create a signal with the `use_signal` hook: + +```rust +{{#include src/doc_examples/reactivity.rs:signal}} +``` + +Once you have your signal, you can clone it by calling the signal like a function or get a reference to the inner value with the `.read()` method: + +```rust +{{#include src/doc_examples/reactivity.rs:signal_read}} +``` + +Finally, you can set the value of the signal with the `.set()` method or get a mutable reference to the inner value with the `.write()` method: + +```rust +{{#include src/doc_examples/reactivity.rs:signal_write}} +``` + +## Reactive Scopes + +The simplest reactive primitive in Dioxus is the `use_effect` hook. It creates a closure that is run any time a tracked value that is run inside the closure changes. + + +Any value you read inside the closure will become a dependency of the effect. If the value changes, the effect will rerun. + +```rust +{{#include src/doc_examples/reactivity.rs:effect}} +``` + +```inject-dioxus +DemoFrame { + reactivity::EffectDemo {} +} +``` + +## Derived State + +`use_memo` is a reactive primitive that lets you derive state from any tracked value. It takes a closure that computes the new state and returns a tracked value with the current state of the memo. Any time a dependency of the memo changes, the memo will rerun. + +The value you return from the closure will only change when the output of the closure changes (`PartialEq` between the old and new value returns false). + +```rust +{{#include src/doc_examples/reactivity.rs:memo}} +``` + +```inject-dioxus +DemoFrame { + reactivity::MemoDemo {} +} +``` + +## Derived Async State + +`use_resource` is a reactive primitive that lets you derive state from any async closure. It takes an async closure that computes the new state and returns a tracked value with the current state of the resource. Any time a dependency of the resource changes, the resource will rerun. + +The value you return from the closure will only change when the state of the future changes. Unlike `use_memo`, the resource's output is not memoized with `PartialEq`. + +```rust +{{#include src/doc_examples/reactivity.rs:resource}} +``` + +```inject-dioxus +DemoFrame { + reactivity::ResourceDemo {} +} +``` + +## Derived UI + +Components are functions that return some UI. They memorize the output of the function just like memos. Components keep track of any dependencies you read inside the component and rerun when those dependencies change. + +```rust +{{#include src/doc_examples/reactivity.rs:component}} +``` + +```inject-dioxus +DemoFrame { + reactivity::ComponentDemo {} +} +``` + + + diff --git a/public/tailwind.css b/public/tailwind.css index b9b6a3d49..3b1b25e30 100644 --- a/public/tailwind.css +++ b/public/tailwind.css @@ -1,5 +1,5 @@ /* -! tailwindcss v3.4.3 | MIT License | https://tailwindcss.com +! tailwindcss v3.3.2 | MIT License | https://tailwindcss.com */ /* @@ -32,11 +32,9 @@ 4. Use the user's configured `sans` font-family by default. 5. Use the user's configured `sans` font-feature-settings by default. 6. Use the user's configured `sans` font-variation-settings by default. -7. Disable tap highlights on iOS */ -html, -:host { +html { line-height: 1.5; /* 1 */ -webkit-text-size-adjust: 100%; @@ -52,8 +50,6 @@ html, /* 5 */ font-variation-settings: normal; /* 6 */ - -webkit-tap-highlight-color: transparent; - /* 7 */ } /* @@ -125,10 +121,8 @@ strong { } /* -1. Use the user's configured `mono` font-family by default. -2. Use the user's configured `mono` font-feature-settings by default. -3. Use the user's configured `mono` font-variation-settings by default. -4. Correct the odd `em` font sizing in all browsers. +1. Use the user's configured `mono` font family by default. +2. Correct the odd `em` font sizing in all browsers. */ code, @@ -137,12 +131,8 @@ samp, pre { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; /* 1 */ - font-feature-settings: normal; - /* 2 */ - font-variation-settings: normal; - /* 3 */ font-size: 1em; - /* 4 */ + /* 2 */ } /* @@ -201,18 +191,12 @@ select, textarea { font-family: inherit; /* 1 */ - font-feature-settings: inherit; - /* 1 */ - font-variation-settings: inherit; - /* 1 */ font-size: 100%; /* 1 */ font-weight: inherit; /* 1 */ line-height: inherit; /* 1 */ - letter-spacing: inherit; - /* 1 */ color: inherit; /* 1 */ margin: 0; @@ -236,9 +220,9 @@ select { */ button, -input:where([type='button']), -input:where([type='reset']), -input:where([type='submit']) { +[type='button'], +[type='reset'], +[type='submit'] { -webkit-appearance: button; /* 1 */ background-color: transparent; @@ -357,14 +341,6 @@ menu { padding: 0; } -/* -Reset default styling for dialogs. -*/ - -dialog { - padding: 0; -} - /* Prevent resizing textareas horizontally by default. */ @@ -494,10 +470,6 @@ video { --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; - --tw-contain-size: ; - --tw-contain-layout: ; - --tw-contain-paint: ; - --tw-contain-style: ; } ::backdrop { @@ -548,10 +520,6 @@ video { --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; - --tw-contain-size: ; - --tw-contain-layout: ; - --tw-contain-paint: ; - --tw-contain-style: ; } .container { @@ -821,10 +789,6 @@ video { margin-right: 1rem; } -.mt-1 { - margin-top: 0.25rem; -} - .mt-10 { margin-top: 2.5rem; } @@ -1286,6 +1250,10 @@ video { border-left-width: 1px; } +.border-b-2 { + border-bottom-width: 2px; +} + .border-dashed { border-style: dashed; } @@ -1452,10 +1420,6 @@ video { object-position: center; } -.p-0 { - padding: 0px; -} - .p-1 { padding: 0.25rem; } @@ -1480,11 +1444,6 @@ video { padding: 2rem; } -.px-16 { - padding-left: 4rem; - padding-right: 4rem; -} - .px-2 { padding-left: 0.5rem; padding-right: 0.5rem; @@ -1602,10 +1561,6 @@ video { padding-bottom: 1rem; } -.pb-64 { - padding-bottom: 16rem; -} - .pb-8 { padding-bottom: 2rem; } @@ -1799,11 +1754,6 @@ video { color: rgb(0 0 0 / var(--tw-text-opacity)); } -.text-blue-300 { - --tw-text-opacity: 1; - color: rgb(147 197 253 / var(--tw-text-opacity)); -} - .text-blue-500 { --tw-text-opacity: 1; color: rgb(59 130 246 / var(--tw-text-opacity)); @@ -2081,6 +2031,161 @@ video { color: rgb(107 114 128 / var(--tw-text-opacity)); } +@media (prefers-color-scheme: dark) { + .dark\:block { + display: block; + } + + .dark\:hidden { + display: none; + } + + .dark\:border-gray-500 { + --tw-border-opacity: 1; + border-color: rgb(107 114 128 / var(--tw-border-opacity)); + } + + .dark\:border-gray-800 { + --tw-border-opacity: 1; + border-color: rgb(31 41 55 / var(--tw-border-opacity)); + } + + .dark\:border-stone-700 { + --tw-border-opacity: 1; + border-color: rgb(68 64 60 / var(--tw-border-opacity)); + } + + .dark\:bg-\[\#111111\] { + --tw-bg-opacity: 1; + background-color: rgb(17 17 17 / var(--tw-bg-opacity)); + } + + .dark\:bg-gray-800 { + --tw-bg-opacity: 1; + background-color: rgb(31 41 55 / var(--tw-bg-opacity)); + } + + .dark\:bg-ideblack { + --tw-bg-opacity: 1; + background-color: rgb(14 17 22 / var(--tw-bg-opacity)); + } + + .dark\:bg-neutral-900\/70 { + background-color: rgb(23 23 23 / 0.7); + } + + .dark\:bg-sky-500 { + --tw-bg-opacity: 1; + background-color: rgb(14 165 233 / var(--tw-bg-opacity)); + } + + .dark\:bg-slate-800 { + --tw-bg-opacity: 1; + background-color: rgb(30 41 59 / var(--tw-bg-opacity)); + } + + .dark\:bg-opacity-80 { + --tw-bg-opacity: 0.8; + } + + .dark\:fill-white { + fill: #fff; + } + + .dark\:fill-zinc-100 { + fill: #f4f4f5; + } + + .dark\:text-\[\#dee2e6\] { + --tw-text-opacity: 1; + color: rgb(222 226 230 / var(--tw-text-opacity)); + } + + .dark\:text-gray-100 { + --tw-text-opacity: 1; + color: rgb(243 244 246 / var(--tw-text-opacity)); + } + + .dark\:text-gray-200 { + --tw-text-opacity: 1; + color: rgb(229 231 235 / var(--tw-text-opacity)); + } + + .dark\:text-gray-300 { + --tw-text-opacity: 1; + color: rgb(209 213 219 / var(--tw-text-opacity)); + } + + .dark\:text-gray-400 { + --tw-text-opacity: 1; + color: rgb(156 163 175 / var(--tw-text-opacity)); + } + + .dark\:text-gray-500 { + --tw-text-opacity: 1; + color: rgb(107 114 128 / var(--tw-text-opacity)); + } + + .dark\:text-sky-400 { + --tw-text-opacity: 1; + color: rgb(56 189 248 / var(--tw-text-opacity)); + } + + .dark\:text-white { + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); + } + + .dark\:opacity-75 { + opacity: 0.75; + } + + .dark\:ring-1 { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); + } + + .dark\:ring-inset { + --tw-ring-inset: inset; + } + + .dark\:ring-white\/10 { + --tw-ring-color: rgb(255 255 255 / 0.1); + } + + .dark\:invert-0 { + --tw-invert: invert(0); + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); + } + + .dark\:backdrop-blur { + --tw-backdrop-blur: blur(8px); + -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); + backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); + } + + .dark\:hover\:bg-ideblack:hover { + --tw-bg-opacity: 1; + background-color: rgb(14 17 22 / var(--tw-bg-opacity)); + } + + .dark\:hover\:bg-sky-400:hover { + --tw-bg-opacity: 1; + background-color: rgb(56 189 248 / var(--tw-bg-opacity)); + } + + .dark\:hover\:text-gray-300:hover { + --tw-text-opacity: 1; + color: rgb(209 213 219 / var(--tw-text-opacity)); + } + + .dark\:hover\:text-sky-400:hover { + --tw-text-opacity: 1; + color: rgb(56 189 248 / var(--tw-text-opacity)); + } +} + @media (min-width: 640px) { .sm\:-m-4 { margin: -1rem; @@ -2224,10 +2329,6 @@ video { width: 25%; } - .md\:w-32 { - width: 8rem; - } - .md\:w-60 { width: 15rem; } @@ -2510,162 +2611,7 @@ video { } } -@media (prefers-color-scheme: dark) { - .dark\:block { - display: block; - } - - .dark\:hidden { - display: none; - } - - .dark\:border-gray-500 { - --tw-border-opacity: 1; - border-color: rgb(107 114 128 / var(--tw-border-opacity)); - } - - .dark\:border-gray-800 { - --tw-border-opacity: 1; - border-color: rgb(31 41 55 / var(--tw-border-opacity)); - } - - .dark\:border-stone-700 { - --tw-border-opacity: 1; - border-color: rgb(68 64 60 / var(--tw-border-opacity)); - } - - .dark\:bg-\[\#111111\] { - --tw-bg-opacity: 1; - background-color: rgb(17 17 17 / var(--tw-bg-opacity)); - } - - .dark\:bg-gray-800 { - --tw-bg-opacity: 1; - background-color: rgb(31 41 55 / var(--tw-bg-opacity)); - } - - .dark\:bg-ideblack { - --tw-bg-opacity: 1; - background-color: rgb(14 17 22 / var(--tw-bg-opacity)); - } - - .dark\:bg-neutral-900\/70 { - background-color: rgb(23 23 23 / 0.7); - } - - .dark\:bg-sky-500 { - --tw-bg-opacity: 1; - background-color: rgb(14 165 233 / var(--tw-bg-opacity)); - } - - .dark\:bg-slate-800 { - --tw-bg-opacity: 1; - background-color: rgb(30 41 59 / var(--tw-bg-opacity)); - } - - .dark\:bg-opacity-80 { - --tw-bg-opacity: 0.8; - } - - .dark\:fill-white { - fill: #fff; - } - - .dark\:fill-zinc-100 { - fill: #f4f4f5; - } - - .dark\:text-\[\#dee2e6\] { - --tw-text-opacity: 1; - color: rgb(222 226 230 / var(--tw-text-opacity)); - } - - .dark\:text-gray-100 { - --tw-text-opacity: 1; - color: rgb(243 244 246 / var(--tw-text-opacity)); - } - - .dark\:text-gray-200 { - --tw-text-opacity: 1; - color: rgb(229 231 235 / var(--tw-text-opacity)); - } - - .dark\:text-gray-300 { - --tw-text-opacity: 1; - color: rgb(209 213 219 / var(--tw-text-opacity)); - } - - .dark\:text-gray-400 { - --tw-text-opacity: 1; - color: rgb(156 163 175 / var(--tw-text-opacity)); - } - - .dark\:text-gray-500 { - --tw-text-opacity: 1; - color: rgb(107 114 128 / var(--tw-text-opacity)); - } - - .dark\:text-sky-400 { - --tw-text-opacity: 1; - color: rgb(56 189 248 / var(--tw-text-opacity)); - } - - .dark\:text-white { - --tw-text-opacity: 1; - color: rgb(255 255 255 / var(--tw-text-opacity)); - } - - .dark\:opacity-75 { - opacity: 0.75; - } - - .dark\:ring-1 { - --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); - --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); - box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); - } - - .dark\:ring-inset { - --tw-ring-inset: inset; - } - - .dark\:ring-white\/10 { - --tw-ring-color: rgb(255 255 255 / 0.1); - } - - .dark\:invert-0 { - --tw-invert: invert(0); - filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); - } - - .dark\:backdrop-blur { - --tw-backdrop-blur: blur(8px); - -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); - backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); - } - - .dark\:hover\:bg-ideblack:hover { - --tw-bg-opacity: 1; - background-color: rgb(14 17 22 / var(--tw-bg-opacity)); - } - - .dark\:hover\:bg-sky-400:hover { - --tw-bg-opacity: 1; - background-color: rgb(56 189 248 / var(--tw-bg-opacity)); - } - - .dark\:hover\:text-gray-300:hover { - --tw-text-opacity: 1; - color: rgb(209 213 219 / var(--tw-text-opacity)); - } - - .dark\:hover\:text-sky-400:hover { - --tw-text-opacity: 1; - color: rgb(56 189 248 / var(--tw-text-opacity)); - } -} - -@media(min-height:720px) { +@media (min-height:720px) { .\[\@media\(min-height\:720px\)\]\:min-h-\[calc\(100vh-6rem\)\] { min-height: calc(100vh - 6rem); } diff --git a/src/components/desktop_dependencies.rs b/src/components/desktop_dependencies.rs index 5d00636ea..4d6518c66 100644 --- a/src/components/desktop_dependencies.rs +++ b/src/components/desktop_dependencies.rs @@ -160,7 +160,7 @@ fn WslDependencies() -> Element { li { "Add `export DISPLAY=:0` to `~/.zshrc`" } li { "Install Tauri's Linux dependencies found " - Link { "here", to: "https://beta.tauri.app/start/prerequisites/" }, + Link { to: "https://beta.tauri.app/start/prerequisites/", "here" } "." } li { "For file dialogs to work, you need to install a fallback like `zenity`"} diff --git a/src/components/playground.rs b/src/components/playground.rs index fe9173fd3..91abd7f28 100644 --- a/src/components/playground.rs +++ b/src/components/playground.rs @@ -15,9 +15,9 @@ const BUILT_URL: &str = "http://localhost:3000/built/"; #[component] pub fn Playground() -> Element { rsx! { - dioxus_playground::Playground { - socket_url: SOCKET_URL, - built_url: BUILT_URL, - }, + // dioxus_playground::Playground { + // socket_url: SOCKET_URL, + // built_url: BUILT_URL, + // } } } diff --git a/src/doc_examples/mod.rs b/src/doc_examples/mod.rs index 333c7246c..803f90af0 100644 --- a/src/doc_examples/mod.rs +++ b/src/doc_examples/mod.rs @@ -49,6 +49,8 @@ pub mod rsx_overview; pub mod spawn; #[cfg(not(feature = "doc_test"))] pub mod use_resource; +#[cfg(not(feature = "doc_test"))] +pub mod reactivity; // Check any examples we don't compile into the docs #[cfg(feature = "doc_test")] diff --git a/src/doc_examples/reactivity.rs b/src/doc_examples/reactivity.rs new file mode 100644 index 000000000..f1553d5e9 --- /dev/null +++ b/src/doc_examples/reactivity.rs @@ -0,0 +1,230 @@ +use dioxus::prelude::*; + +pub use effect::EffectDemo; +pub use memo::MemoDemo; +pub use resource::ResourceDemo; +pub use component::ComponentDemo; + +#[derive(Default)] +struct LogState { + logs: Vec, +} + +fn use_provide_log_state() -> Signal { + use_context_provider(|| Signal::new(LogState::default())) +} + +fn log(message: impl ToString) { + consume_context::>().write().logs.push(message.to_string()); +} + +macro_rules! log { + ($($arg:tt)*) => { + log(format!($($arg)*)) + } +} + +#[component] +fn ComponentWithLogs(children: Element) -> Element { + let logs = use_provide_log_state(); + rsx! { + div { + class: "w-full flex flex-row justify-between", + div { class: "w-1/2 h-full", + {children} + } + div { class: "w-1/2 h-full", + div { + class: "p-2 text-center border-b-2 border-gray-200 dark:border-gray-800", + "Logs" + } + for (i, log) in logs.read().logs.iter().enumerate() { + div { class: "p-2 border-b border-gray-200 dark:border-gray-800", + "{i}: {log}" + } + } + } + } + } +} + +mod signal { + use super::*; + + fn app() -> Element { + // ANCHOR: signal + let mut signal = use_signal(|| 0); + // ANCHOR_END: signal + + { + // ANCHOR: signal_read + // Call the signal like a function to clone the current value + let value: i32 = signal(); + // get a reference to the inner value with the .read() method + let value: &i32 = &signal.read(); + // or use one of the traits implemented for Signal like Display + log!("{signal}"); + // ANCHOR_END: signal_read + } + + { + // ANCHOR: signal_write + // Set the value from the signal + signal.set(1); + // get a mutable reference to the inner value with the .write() method + let mut value: &mut i32 = &mut signal.write(); + *value += 1; + // ANCHOR_END: signal_write + } + + rsx! {} + } +} + +mod effect { + use super::*; + + // ANCHOR: effect + fn Effect() -> Element { + // use_signal creates a tracked value called count + let mut count = use_signal(|| 0); + + use_effect(move || { + // When we read count, it becomes a dependency of the effect + let current_count = count(); + // Whenever count changes, the effect will rerun + log!("{current_count}"); + }); + + rsx! { + button { + onclick: move |_| count += 1, + "Increment" + } + + "Count is {count}" + } + } + // ANCHOR_END: effect + + pub fn EffectDemo() -> Element { + rsx! { + ComponentWithLogs { + Effect {} + } + } + } +} + +mod memo { + use super::*; + + // ANCHOR: memo + fn Memo() -> Element { + let mut count = use_signal(|| 0); + + // use_memo creates a tracked value that is derived from count + // Since we read count inside the closure, it becomes a dependency of the memo + // Whenever count changes, the memo will rerun + let half_count = use_memo(move || count() / 2); + + use_effect(move || { + // half_count is itself a tracked value + // When we read half_count, it becomes a dependency of the effect + // and the effect will rerun when half_count changes + log!("{half_count}"); + }); + + rsx! { + button { + onclick: move |_| count += 1, + "Increment" + } + + "Count is {count}" + "Half count is {half_count}" + } + } + // ANCHOR_END: memo + + pub fn MemoDemo() -> Element { + rsx! { + ComponentWithLogs { + Memo {} + } + } + } +} + +mod resource { + use super::*; + + // ANCHOR: resource + fn Resource() -> Element { + let mut count = use_signal(|| 0); + + // use_resource creates a tracked value that is derived from count + // Since we read count inside the closure, it becomes a dependency of the resource + // Whenever count changes, the resource will rerun + let half_count = use_resource(move || async move { + // You can do async work inside resources + gloo_timers::future::TimeoutFuture::new(100).await; + count() / 2 + }); + + use_effect(move || { + // half_count is itself a tracked value + // When we read half_count, it becomes a dependency of the effect + // and the effect will rerun when half_count changes + log!("{half_count:?}"); + }); + + rsx! { + button { + onclick: move |_| count += 1, + "Change Signal" + } + + "Count is {count}" + "Half count is {half_count}" + } + } + // ANCHOR_END: resource + + pub fn ResourceDemo() -> Element { + rsx! { + ComponentWithLogs { + Resource {} + } + } + } +} + +mod component { + use super::*; + + // ANCHOR: component + fn Component() -> Element { + let mut count = use_signal(|| 0); + + rsx! { + button { + onclick: move |_| count += 1, + "Change Signal" + } + + // Since we read count inside the component, it becomes a dependency of the component + // Whenever count changes, the component will rerun + "Count: {count}" + } + } + // ANCHOR_END: component + + pub fn ComponentDemo() -> Element { + rsx! { + ComponentWithLogs { + Component {} + } + } + } +} From 05f7881bd54c93efcb7e099d26aecb67f2743c86 Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Thu, 15 Aug 2024 17:45:13 -0700 Subject: [PATCH 11/35] fix formatting --- src/doc_examples/mod.rs | 4 ++-- src/doc_examples/reactivity.rs | 29 ++++++++++++++++------------- src/doc_examples/spawn.rs | 2 +- 3 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/doc_examples/mod.rs b/src/doc_examples/mod.rs index 803f90af0..d04bc4eea 100644 --- a/src/doc_examples/mod.rs +++ b/src/doc_examples/mod.rs @@ -40,6 +40,8 @@ pub mod input_controlled; #[cfg(not(feature = "doc_test"))] pub mod input_uncontrolled; #[cfg(not(feature = "doc_test"))] +pub mod reactivity; +#[cfg(not(feature = "doc_test"))] pub mod readme; #[cfg(not(feature = "doc_test"))] pub mod rendering_lists; @@ -49,8 +51,6 @@ pub mod rsx_overview; pub mod spawn; #[cfg(not(feature = "doc_test"))] pub mod use_resource; -#[cfg(not(feature = "doc_test"))] -pub mod reactivity; // Check any examples we don't compile into the docs #[cfg(feature = "doc_test")] diff --git a/src/doc_examples/reactivity.rs b/src/doc_examples/reactivity.rs index f1553d5e9..2f772bc63 100644 --- a/src/doc_examples/reactivity.rs +++ b/src/doc_examples/reactivity.rs @@ -1,9 +1,9 @@ use dioxus::prelude::*; +pub use component::ComponentDemo; pub use effect::EffectDemo; pub use memo::MemoDemo; pub use resource::ResourceDemo; -pub use component::ComponentDemo; #[derive(Default)] struct LogState { @@ -15,7 +15,10 @@ fn use_provide_log_state() -> Signal { } fn log(message: impl ToString) { - consume_context::>().write().logs.push(message.to_string()); + consume_context::>() + .write() + .logs + .push(message.to_string()); } macro_rules! log { @@ -50,7 +53,7 @@ fn ComponentWithLogs(children: Element) -> Element { mod signal { use super::*; - + fn app() -> Element { // ANCHOR: signal let mut signal = use_signal(|| 0); @@ -83,7 +86,7 @@ mod signal { mod effect { use super::*; - + // ANCHOR: effect fn Effect() -> Element { // use_signal creates a tracked value called count @@ -95,7 +98,7 @@ mod effect { // Whenever count changes, the effect will rerun log!("{current_count}"); }); - + rsx! { button { onclick: move |_| count += 1, @@ -118,7 +121,7 @@ mod effect { mod memo { use super::*; - + // ANCHOR: memo fn Memo() -> Element { let mut count = use_signal(|| 0); @@ -134,7 +137,7 @@ mod memo { // and the effect will rerun when half_count changes log!("{half_count}"); }); - + rsx! { button { onclick: move |_| count += 1, @@ -158,7 +161,7 @@ mod memo { mod resource { use super::*; - + // ANCHOR: resource fn Resource() -> Element { let mut count = use_signal(|| 0); @@ -176,9 +179,9 @@ mod resource { // half_count is itself a tracked value // When we read half_count, it becomes a dependency of the effect // and the effect will rerun when half_count changes - log!("{half_count:?}"); + log!("{:?}", half_count()); }); - + rsx! { button { onclick: move |_| count += 1, @@ -186,7 +189,7 @@ mod resource { } "Count is {count}" - "Half count is {half_count}" + "Half count is {half_count():?}" } } // ANCHOR_END: resource @@ -202,11 +205,11 @@ mod resource { mod component { use super::*; - + // ANCHOR: component fn Component() -> Element { let mut count = use_signal(|| 0); - + rsx! { button { onclick: move |_| count += 1, diff --git a/src/doc_examples/spawn.rs b/src/doc_examples/spawn.rs index 495fc7d9a..ebe6b3bf4 100644 --- a/src/doc_examples/spawn.rs +++ b/src/doc_examples/spawn.rs @@ -65,5 +65,5 @@ pub fn ToOwnedMacro() -> Element { // ANCHOR_END: to_owned_macro }; - rsx!{ } + rsx! {} } From f4a029ef9ce1c0983ef319ff6686802b0e8460e2 Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Thu, 15 Aug 2024 17:57:21 -0700 Subject: [PATCH 12/35] Clean up reactivity demo UI --- docs-src/0.5/en/reference/reactivity.md | 1 - public/tailwind.css | 36 +++++++++++++ src/doc_examples/reactivity.rs | 68 +++++++++---------------- 3 files changed, 59 insertions(+), 46 deletions(-) diff --git a/docs-src/0.5/en/reference/reactivity.md b/docs-src/0.5/en/reference/reactivity.md index fa6bdc86c..1458cea1c 100644 --- a/docs-src/0.5/en/reference/reactivity.md +++ b/docs-src/0.5/en/reference/reactivity.md @@ -6,7 +6,6 @@ Dioxus lets you define your app as a function of the current state. As you chang You can create mutable state in Dioxus with Signals. Signals are tracked values that automatically update your app when you change them. They form the skeleton of your app's state from which you can derive other state. Signals are often driven directly from user input through event handlers or async tasks. -22 You can create a signal with the `use_signal` hook: ```rust diff --git a/public/tailwind.css b/public/tailwind.css index 3b1b25e30..21eefdd01 100644 --- a/public/tailwind.css +++ b/public/tailwind.css @@ -902,6 +902,30 @@ video { height: 1px; } +.h-9 { + height: 2.25rem; +} + +.h-80 { + height: 20rem; +} + +.h-3 { + height: 0.75rem; +} + +.h-20 { + height: 5rem; +} + +.h-0 { + height: 0px; +} + +.h-40 { + height: 10rem; +} + .max-h-48 { max-height: 12rem; } @@ -1254,6 +1278,18 @@ video { border-bottom-width: 2px; } +.border-r-8 { + border-right-width: 8px; +} + +.border-l-8 { + border-left-width: 8px; +} + +.border-l-2 { + border-left-width: 2px; +} + .border-dashed { border-style: dashed; } diff --git a/src/doc_examples/reactivity.rs b/src/doc_examples/reactivity.rs index 2f772bc63..2da5bd7c2 100644 --- a/src/doc_examples/reactivity.rs +++ b/src/doc_examples/reactivity.rs @@ -18,7 +18,7 @@ fn log(message: impl ToString) { consume_context::>() .write() .logs - .push(message.to_string()); + .insert(0, message.to_string()); } macro_rules! log { @@ -31,19 +31,17 @@ macro_rules! log { fn ComponentWithLogs(children: Element) -> Element { let logs = use_provide_log_state(); rsx! { - div { - class: "w-full flex flex-row justify-between", + div { class: "w-full h-40 overflow-y-hidden flex flex-row justify-between", + div { class: "w-1/2 h-full", {children} } div { class: "w-1/2 h-full", - {children} - } - div { class: "w-1/2 h-full", - div { - class: "p-2 text-center border-b-2 border-gray-200 dark:border-gray-800", + div { class: "p-2 text-center border-gray-200 dark:border-gray-800", "Logs" } - for (i, log) in logs.read().logs.iter().enumerate() { - div { class: "p-2 border-b border-gray-200 dark:border-gray-800", - "{i}: {log}" + div { class: "h-full p-4 overflow-y-auto border-gray-200 dark:border-gray-800", + for log in logs.read().logs.iter() { + div { class: "p-2 border-b border-gray-200 dark:border-gray-800", + "{log}" + } } } } @@ -100,21 +98,16 @@ mod effect { }); rsx! { - button { - onclick: move |_| count += 1, - "Increment" - } + button { onclick: move |_| count += 1, "Increment" } - "Count is {count}" + div { "Count is {count}" } } } // ANCHOR_END: effect pub fn EffectDemo() -> Element { rsx! { - ComponentWithLogs { - Effect {} - } + ComponentWithLogs { Effect {} } } } } @@ -139,22 +132,17 @@ mod memo { }); rsx! { - button { - onclick: move |_| count += 1, - "Increment" - } + button { onclick: move |_| count += 1, "Increment" } - "Count is {count}" - "Half count is {half_count}" + div { "Count is {count}" } + div { "Half count is {half_count}" } } } // ANCHOR_END: memo pub fn MemoDemo() -> Element { rsx! { - ComponentWithLogs { - Memo {} - } + ComponentWithLogs { Memo {} } } } } @@ -183,22 +171,17 @@ mod resource { }); rsx! { - button { - onclick: move |_| count += 1, - "Change Signal" - } + button { onclick: move |_| count += 1, "Change Signal" } - "Count is {count}" - "Half count is {half_count():?}" + div { "Count is {count}" } + div { "Half count is {half_count():?}" } } } // ANCHOR_END: resource pub fn ResourceDemo() -> Element { rsx! { - ComponentWithLogs { - Resource {} - } + ComponentWithLogs { Resource {} } } } } @@ -211,23 +194,18 @@ mod component { let mut count = use_signal(|| 0); rsx! { - button { - onclick: move |_| count += 1, - "Change Signal" - } + button { onclick: move |_| count += 1, "Change Signal" } // Since we read count inside the component, it becomes a dependency of the component // Whenever count changes, the component will rerun - "Count: {count}" + div { "Count: {count}" } } } // ANCHOR_END: component pub fn ComponentDemo() -> Element { rsx! { - ComponentWithLogs { - Component {} - } + Component {} } } } From e19428421c8dc9fe160f10cac620dc12d552606a Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Thu, 15 Aug 2024 18:05:58 -0700 Subject: [PATCH 13/35] Show UI over time for components just like memos --- src/doc_examples/reactivity.rs | 46 +++++++++++++++++++++++++++------- 1 file changed, 37 insertions(+), 9 deletions(-) diff --git a/src/doc_examples/reactivity.rs b/src/doc_examples/reactivity.rs index 2da5bd7c2..953806ac4 100644 --- a/src/doc_examples/reactivity.rs +++ b/src/doc_examples/reactivity.rs @@ -30,18 +30,17 @@ macro_rules! log { #[component] fn ComponentWithLogs(children: Element) -> Element { let logs = use_provide_log_state(); + rsx! { - div { class: "w-full h-40 overflow-y-hidden flex flex-row justify-between", - div { class: "w-1/2 h-full", {children} } - div { class: "w-1/2 h-full", + TwoPanelComponent { + left: children, + right: rsx! { div { class: "p-2 text-center border-gray-200 dark:border-gray-800", "Logs" } - div { class: "h-full p-4 overflow-y-auto border-gray-200 dark:border-gray-800", - for log in logs.read().logs.iter() { - div { class: "p-2 border-b border-gray-200 dark:border-gray-800", - "{log}" - } + for log in logs.read().logs.iter() { + div { class: "p-2 border-b border-gray-200 dark:border-gray-800", + "{log}" } } } @@ -49,6 +48,16 @@ fn ComponentWithLogs(children: Element) -> Element { } } +#[component] +fn TwoPanelComponent(left: Element, right: Element) -> Element { + rsx! { + div { class: "w-full h-40 overflow-y-hidden flex flex-row justify-between", + div { class: "w-1/2 h-full", {left} } + div { class: "w-1/2 h-full", {right} } + } + } +} + mod signal { use super::*; @@ -204,8 +213,27 @@ mod component { // ANCHOR_END: component pub fn ComponentDemo() -> Element { + let mut count = use_signal(|| 0); + rsx! { - Component {} + TwoPanelComponent { + left: rsx! { + button { onclick: move |_| count += 1, "Change Signal" } + + div { "Count: {count}" } + }, + right: rsx! { + div { class: "p-2 text-center border-gray-200 dark:border-gray-800", + "UI" + } + for count in 0..count() { + div { + class: "p-2 border-b border-gray-200 dark:border-gray-800", + div { "Count: {count}" } + } + } + } + } } } } From 22e04e8a3ccfb65cbb1d5c0a2fe59d23702df9f3 Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Thu, 15 Aug 2024 18:06:42 -0700 Subject: [PATCH 14/35] Fix component UI log order --- src/doc_examples/reactivity.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/doc_examples/reactivity.rs b/src/doc_examples/reactivity.rs index 953806ac4..285ede9b9 100644 --- a/src/doc_examples/reactivity.rs +++ b/src/doc_examples/reactivity.rs @@ -226,7 +226,7 @@ mod component { div { class: "p-2 text-center border-gray-200 dark:border-gray-800", "UI" } - for count in 0..count() { + for count in (0..count()).rev() { div { class: "p-2 border-b border-gray-200 dark:border-gray-800", div { "Count: {count}" } From f73d09b24abd99536be33da7b186d7ab06017158 Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Thu, 15 Aug 2024 18:07:14 -0700 Subject: [PATCH 15/35] Make UI iterator include the current UI --- src/doc_examples/reactivity.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/doc_examples/reactivity.rs b/src/doc_examples/reactivity.rs index 285ede9b9..993354773 100644 --- a/src/doc_examples/reactivity.rs +++ b/src/doc_examples/reactivity.rs @@ -226,7 +226,7 @@ mod component { div { class: "p-2 text-center border-gray-200 dark:border-gray-800", "UI" } - for count in (0..count()).rev() { + for count in (0..=count()).rev() { div { class: "p-2 border-b border-gray-200 dark:border-gray-800", div { "Count: {count}" } From 1f8105f4ee9026ddf98d78c3998289050d2f53ef Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Thu, 15 Aug 2024 18:25:12 -0700 Subject: [PATCH 16/35] Add a component with props to the reactivity page --- src/doc_examples/reactivity.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/doc_examples/reactivity.rs b/src/doc_examples/reactivity.rs index 993354773..0c6f112cb 100644 --- a/src/doc_examples/reactivity.rs +++ b/src/doc_examples/reactivity.rs @@ -205,8 +205,16 @@ mod component { rsx! { button { onclick: move |_| count += 1, "Change Signal" } - // Since we read count inside the component, it becomes a dependency of the component - // Whenever count changes, the component will rerun + // Since we read count inside Component, it becomes a dependency of Component + // Whenever count changes, Component will rerun + Count { count: count() } + } + } + + // Components automatically memorize their props. If the props change, Count will rerun + #[component] + fn Count(count: i32) -> Element { + rsx! { div { "Count: {count}" } } } From 984da40cecf1c442ffbc5196624ced6e0e3783e2 Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Fri, 16 Aug 2024 10:16:44 -0700 Subject: [PATCH 17/35] Add a section about working with untracked state to the reactivity guide --- docs-src/0.5/en/reference/reactivity.md | 266 ++---------------------- src/doc_examples/reactivity.rs | 150 +++++++++++++ 2 files changed, 168 insertions(+), 248 deletions(-) diff --git a/docs-src/0.5/en/reference/reactivity.md b/docs-src/0.5/en/reference/reactivity.md index 1458cea1c..5c03698c4 100644 --- a/docs-src/0.5/en/reference/reactivity.md +++ b/docs-src/0.5/en/reference/reactivity.md @@ -1,6 +1,6 @@ # Reactivity -Dioxus lets you define your app as a function of the current state. As you change the state, the parts of your app that depend on that state will automatically re-run. Reactivity is the core primitive that updates derived state. +In Dioxus, your app is defined as a function of the current state. As the state changes, the parts of your app that depend on that state will automatically re-run. Reactivity automatically tracks state and updates derived state in your application. ## Mutable State @@ -87,272 +87,42 @@ DemoFrame { } ``` +## Working with Untracked State - diff --git a/src/doc_examples/reactivity.rs b/src/doc_examples/reactivity.rs index 0c6f112cb..adf29f1b6 100644 --- a/src/doc_examples/reactivity.rs +++ b/src/doc_examples/reactivity.rs @@ -3,6 +3,9 @@ use dioxus::prelude::*; pub use component::ComponentDemo; pub use effect::EffectDemo; pub use memo::MemoDemo; +pub use non_reactive_state::MakingPropsReactiveDemo; +pub use non_reactive_state::NonReactiveDemo; +pub use non_reactive_state::UseReactiveDemo; pub use resource::ResourceDemo; #[derive(Default)] @@ -245,3 +248,150 @@ mod component { } } } + +mod non_reactive_state { + use super::*; + pub use making_props_reactive::*; + pub use non_reactive::*; + pub use use_reactive::*; + + mod non_reactive { + use super::*; + // ANCHOR: non_reactive + fn Component() -> Element { + let mut count = use_signal(|| 0); + + rsx! { + button { onclick: move |_| count += 1, "Change Signal" } + + Count { count: count() } + } + } + + // The count reruns the component when it changes, but it is not a tracked value + #[component] + fn Count(count: i32) -> Element { + // When you read count inside the memo, it does not subscribe to the count signal + // because the value is not reactive + let double_count = use_memo(move || count * 2); + + rsx! { + div { "Double count: {double_count}" } + } + } + // ANCHOR_END: non_reactive + + pub fn NonReactiveDemo() -> Element { + let mut count = use_signal(|| 0); + + rsx! { + TwoPanelComponent { + left: rsx! { + button { onclick: move |_| count += 1, "Change Signal" } + + Count { count: count() } + }, + right: rsx! { + div { class: "p-2 text-center border-gray-200 dark:border-gray-800", + "UI" + } + for count in (0..=count()).rev() { + div { + class: "p-2 border-b border-gray-200 dark:border-gray-800", + Count { count } + } + } + } + } + } + } + } + + mod use_reactive { + use super::*; + + // ANCHOR: use_reactive + #[component] + fn Count(count: i32) -> Element { + // You can manually track a non-reactive value with the use_reactive hook + let double_count = use_memo( + // Use reactive takes a tuple of dependencies and returns a reactive closure + use_reactive!(|(count,)| count * 2), + ); + + rsx! { + div { "Double count: {double_count}" } + } + } + // ANCHOR_END: use_reactive + + pub fn UseReactiveDemo() -> Element { + let mut count = use_signal(|| 0); + + rsx! { + TwoPanelComponent { + left: rsx! { + button { onclick: move |_| count += 1, "Change Signal" } + + Count { count: count() } + }, + right: rsx! { + div { class: "p-2 text-center border-gray-200 dark:border-gray-800", + "UI" + } + for count in (0..=count()).rev() { + div { + class: "p-2 border-b border-gray-200 dark:border-gray-800", + Count { count } + } + } + } + } + } + } + } + + mod making_props_reactive { + use super::*; + + // ANCHOR: making_props_reactive + // You can track props by wrapping the type in a ReadOnlySignal + // Dioxus will automatically convert T into ReadOnlySignal when you pass + // props to the component + #[component] + fn Count(count: ReadOnlySignal) -> Element { + // Then when you read count inside the memo, it subscribes to the count signal + let double_count = use_memo(move || count() * 2); + + rsx! { + div { "Double count: {double_count}" } + } + } + // ANCHOR_END: making_props_reactive + + pub fn MakingPropsReactiveDemo() -> Element { + let mut count = use_signal(|| 0); + + rsx! { + TwoPanelComponent { + left: rsx! { + button { onclick: move |_| count += 1, "Change Signal" } + + Count { count: count() } + }, + right: rsx! { + div { class: "p-2 text-center border-gray-200 dark:border-gray-800", + "UI" + } + for count in (0..=count()).rev() { + div { + class: "p-2 border-b border-gray-200 dark:border-gray-800", + Count { count } + } + } + } + } + } + } + } +} From f8a79b75ca0a1b612890c1830a07335660a72c95 Mon Sep 17 00:00:00 2001 From: Jonathan Kelley Date: Fri, 16 Aug 2024 15:49:49 -0700 Subject: [PATCH 18/35] fix playground --- Cargo.lock | 661 ++++--------------------- Cargo.toml | 44 +- public/dxp.css | 177 +++++++ public/tailwind.css | 484 +++++++++--------- src/components/desktop_dependencies.rs | 12 +- src/components/homepage/hero.rs | 111 +++-- src/components/nav.rs | 59 +-- src/components/playground.rs | 5 +- src/main.rs | 20 + 9 files changed, 657 insertions(+), 916 deletions(-) create mode 100644 public/dxp.css diff --git a/Cargo.lock b/Cargo.lock index 3ded3453b..85681a4e4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -539,38 +539,6 @@ dependencies = [ "system-deps", ] -[[package]] -name = "camino" -version = "1.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo-platform" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo_metadata" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" -dependencies = [ - "camino", - "cargo-platform", - "semver", - "serde", - "serde_json", - "thiserror", -] - [[package]] name = "cc" version = "1.1.11" @@ -810,12 +778,6 @@ dependencies = [ "unicode-xid", ] -[[package]] -name = "constcat" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd7e35aee659887cbfb97aaf227ac12cad1a9d7c71e55ff3376839ed4e282d08" - [[package]] name = "convert_case" version = "0.4.0" @@ -1098,53 +1060,23 @@ dependencies = [ "crypto-common", ] -[[package]] -name = "dioxus" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e7fe217b50d43b27528b0f24c89b411f742a3e7564d1cfbf85253f967954db" -dependencies = [ - "dioxus-config-macro 0.5.6", - "dioxus-core 0.5.6", - "dioxus-core-macro 0.5.6", - "dioxus-fullstack 0.5.6", - "dioxus-hooks 0.5.6", - "dioxus-hot-reload 0.5.6", - "dioxus-html 0.5.6", - "dioxus-router 0.5.6", - "dioxus-signals 0.5.7", - "dioxus-web 0.5.6", -] - [[package]] name = "dioxus" version = "0.6.0-alpha.2" source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" dependencies = [ - "dioxus-config-macro 0.6.0-alpha.2", - "dioxus-core 0.6.0-alpha.2", - "dioxus-core-macro 0.6.0-alpha.2", - "dioxus-fullstack 0.6.0-alpha.2", - "dioxus-hooks 0.6.0-alpha.2", - "dioxus-hot-reload 0.6.0-alpha.2", - "dioxus-html 0.6.0-alpha.2", - "dioxus-router 0.6.0-alpha.2", - "dioxus-signals 0.6.0-alpha.2", + "dioxus-config-macro", + "dioxus-core", + "dioxus-core-macro", + "dioxus-fullstack", + "dioxus-hooks", + "dioxus-hot-reload", + "dioxus-html", + "dioxus-router", + "dioxus-signals", "dioxus-static-site-generation", - "dioxus-web 0.6.0-alpha.2", - "manganis 0.3.0-alpha.1", -] - -[[package]] -name = "dioxus-cli-config" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7dffc452ed91af6ef772b0d9a5899573f6785314e97c533733ec55413c01df3" -dependencies = [ - "once_cell", - "serde", - "serde_json", - "tracing", + "dioxus-web", + "manganis", ] [[package]] @@ -1160,16 +1092,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "dioxus-config-macro" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb1a1aa34cc04c1f7fcbb7a10791ba773cc02d834fe3ec1fe05647699f3b101f" -dependencies = [ - "proc-macro2", - "quote", -] - [[package]] name = "dioxus-config-macro" version = "0.6.0-alpha.2" @@ -1179,24 +1101,6 @@ dependencies = [ "quote", ] -[[package]] -name = "dioxus-core" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3730d2459ab66951cedf10b09eb84141a6eda7f403c28057cbe010495be156b7" -dependencies = [ - "futures-channel", - "futures-util", - "generational-box 0.5.6", - "longest-increasing-subsequence", - "rustc-hash", - "serde", - "slab", - "slotmap", - "tracing", - "tracing-subscriber", -] - [[package]] name = "dioxus-core" version = "0.6.0-alpha.2" @@ -1205,9 +1109,9 @@ dependencies = [ "const_format", "futures-channel", "futures-util", - "generational-box 0.6.0-alpha.2", + "generational-box", "longest-increasing-subsequence", - "manganis 0.3.0-alpha.1", + "manganis", "rustc-hash", "rustversion", "serde", @@ -1217,40 +1121,19 @@ dependencies = [ "warnings", ] -[[package]] -name = "dioxus-core-macro" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d9c0dfe0e6a46626fa716c4aa1d2ccb273441337909cfeacad5bb6fcfb947d2" -dependencies = [ - "constcat", - "convert_case 0.6.0", - "dioxus-rsx 0.5.6", - "prettyplease", - "proc-macro2", - "quote", - "syn 2.0.74", -] - [[package]] name = "dioxus-core-macro" version = "0.6.0-alpha.2" source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" dependencies = [ "convert_case 0.6.0", - "dioxus-rsx 0.6.0-alpha.2", + "dioxus-rsx", "prettyplease", "proc-macro2", "quote", "syn 2.0.74", ] -[[package]] -name = "dioxus-debug-cell" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ea539174bb236e0e7dc9c12b19b88eae3cb574dedbd0252a2d43ea7e6de13e2" - [[package]] name = "dioxus-desktop" version = "0.6.0-alpha.2" @@ -1259,17 +1142,17 @@ dependencies = [ "async-trait", "cocoa", "core-foundation", - "dioxus-cli-config 0.6.0-alpha.2", - "dioxus-core 0.6.0-alpha.2", - "dioxus-hooks 0.6.0-alpha.2", - "dioxus-hot-reload 0.6.0-alpha.2", - "dioxus-html 0.6.0-alpha.2", - "dioxus-interpreter-js 0.6.0-alpha.2", - "dioxus-signals 0.6.0-alpha.2", + "dioxus-cli-config", + "dioxus-core", + "dioxus-hooks", + "dioxus-hot-reload", + "dioxus-html", + "dioxus-interpreter-js", + "dioxus-signals", "dunce", "futures-channel", "futures-util", - "generational-box 0.6.0-alpha.2", + "generational-box", "global-hotkey", "infer", "muda", @@ -1290,29 +1173,6 @@ dependencies = [ "wry", ] -[[package]] -name = "dioxus-fullstack" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b80f0ac18166302341164e681322e0385131c08a11c3cc1c51ee8df799ab0d3d" -dependencies = [ - "async-trait", - "base64 0.21.7", - "bytes", - "ciborium", - "dioxus-hot-reload 0.5.6", - "dioxus-lib 0.5.6", - "dioxus-web 0.5.6", - "dioxus_server_macro 0.5.6", - "futures-util", - "once_cell", - "serde", - "serde_json", - "server_fn", - "tracing", - "web-sys", -] - [[package]] name = "dioxus-fullstack" version = "0.6.0-alpha.2" @@ -1321,13 +1181,13 @@ dependencies = [ "base64 0.22.1", "bytes", "ciborium", - "dioxus-hot-reload 0.6.0-alpha.2", - "dioxus-lib 0.6.0-alpha.2", - "dioxus-web 0.6.0-alpha.2", - "dioxus_server_macro 0.6.0-alpha.2", + "dioxus-hot-reload", + "dioxus-lib", + "dioxus-web", + "dioxus_server_macro", "futures-channel", "futures-util", - "generational-box 0.6.0-alpha.2", + "generational-box", "once_cell", "serde", "server_fn", @@ -1335,63 +1195,32 @@ dependencies = [ "web-sys", ] -[[package]] -name = "dioxus-hooks" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa8f9c661eea82295219d25555d5c0b597e74186b029038ceb5e3700ccbd4380" -dependencies = [ - "dioxus-core 0.5.6", - "dioxus-debug-cell", - "dioxus-signals 0.5.7", - "futures-channel", - "futures-util", - "generational-box 0.5.6", - "slab", - "thiserror", - "tracing", -] - [[package]] name = "dioxus-hooks" version = "0.6.0-alpha.2" source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" dependencies = [ - "dioxus-core 0.6.0-alpha.2", - "dioxus-signals 0.6.0-alpha.2", + "dioxus-core", + "dioxus-signals", "futures-channel", "futures-util", - "generational-box 0.6.0-alpha.2", + "generational-box", "rustversion", "slab", "tracing", "warnings", ] -[[package]] -name = "dioxus-hot-reload" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77d01246cb1b93437fb0bbd0dd11cfc66342d86b4311819e76654f2017ce1473" -dependencies = [ - "dioxus-core 0.5.6", - "dioxus-html 0.5.6", - "dioxus-rsx 0.5.6", - "interprocess-docfix", - "serde", - "serde_json", -] - [[package]] name = "dioxus-hot-reload" version = "0.6.0-alpha.2" source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" dependencies = [ - "dioxus-cli-config 0.6.0-alpha.2", - "dioxus-core 0.6.0-alpha.2", - "dioxus-html 0.6.0-alpha.2", - "dioxus-rsx 0.6.0-alpha.2", - "dioxus-signals 0.6.0-alpha.2", + "dioxus-cli-config", + "dioxus-core", + "dioxus-html", + "dioxus-rsx", + "dioxus-signals", "futures-util", "serde", "serde_json", @@ -1402,43 +1231,20 @@ dependencies = [ "warnings", ] -[[package]] -name = "dioxus-html" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f01a0826f179adad6ea8d6586746e8edde0c602cc86f4eb8e5df7a3b204c4018" -dependencies = [ - "async-trait", - "dioxus-core 0.5.6", - "dioxus-html-internal-macro 0.5.6", - "enumset", - "euclid", - "futures-channel", - "generational-box 0.5.6", - "keyboard-types", - "serde", - "serde-value", - "serde_json", - "serde_repr", - "tracing", - "wasm-bindgen", - "web-sys", -] - [[package]] name = "dioxus-html" version = "0.6.0-alpha.2" source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" dependencies = [ "async-trait", - "dioxus-core 0.6.0-alpha.2", - "dioxus-core-macro 0.6.0-alpha.2", - "dioxus-hooks 0.6.0-alpha.2", - "dioxus-html-internal-macro 0.6.0-alpha.2", + "dioxus-core", + "dioxus-core-macro", + "dioxus-hooks", + "dioxus-html-internal-macro", "enumset", "euclid", "futures-channel", - "generational-box 0.6.0-alpha.2", + "generational-box", "js-sys", "keyboard-types", "lazy-js-bundle", @@ -1453,18 +1259,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "dioxus-html-internal-macro" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b96f35a608d0ab8f4ca6f66ce1828354e4ebd41580b12454f490221a11da93c" -dependencies = [ - "convert_case 0.6.0", - "proc-macro2", - "quote", - "syn 2.0.74", -] - [[package]] name = "dioxus-html-internal-macro" version = "0.6.0-alpha.2" @@ -1476,28 +1270,13 @@ dependencies = [ "syn 2.0.74", ] -[[package]] -name = "dioxus-interpreter-js" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "351fad098c657d14f3ac2900362d2b86e83c22c4c620a404839e1ab628f3395b" -dependencies = [ - "js-sys", - "md5", - "sledgehammer_bindgen", - "sledgehammer_utils", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - [[package]] name = "dioxus-interpreter-js" version = "0.6.0-alpha.2" source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" dependencies = [ - "dioxus-core 0.6.0-alpha.2", - "dioxus-html 0.6.0-alpha.2", + "dioxus-core", + "dioxus-html", "js-sys", "lazy-js-bundle", "serde", @@ -1508,32 +1287,18 @@ dependencies = [ "web-sys", ] -[[package]] -name = "dioxus-lib" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bd39b2c41dd1915dcb91d914ea72d8b646f1f8995aaeff82816b862ec586ecd" -dependencies = [ - "dioxus-core 0.5.6", - "dioxus-core-macro 0.5.6", - "dioxus-hooks 0.5.6", - "dioxus-html 0.5.6", - "dioxus-rsx 0.5.6", - "dioxus-signals 0.5.7", -] - [[package]] name = "dioxus-lib" version = "0.6.0-alpha.2" source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" dependencies = [ - "dioxus-config-macro 0.6.0-alpha.2", - "dioxus-core 0.6.0-alpha.2", - "dioxus-core-macro 0.6.0-alpha.2", - "dioxus-hooks 0.6.0-alpha.2", - "dioxus-html 0.6.0-alpha.2", - "dioxus-rsx 0.6.0-alpha.2", - "dioxus-signals 0.6.0-alpha.2", + "dioxus-config-macro", + "dioxus-core", + "dioxus-core-macro", + "dioxus-hooks", + "dioxus-html", + "dioxus-rsx", + "dioxus-signals", ] [[package]] @@ -1542,14 +1307,14 @@ version = "0.6.0-alpha.2" source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" dependencies = [ "axum", - "dioxus-cli-config 0.6.0-alpha.2", - "dioxus-core 0.6.0-alpha.2", - "dioxus-hot-reload 0.6.0-alpha.2", - "dioxus-html 0.6.0-alpha.2", - "dioxus-interpreter-js 0.6.0-alpha.2", + "dioxus-cli-config", + "dioxus-core", + "dioxus-hot-reload", + "dioxus-html", + "dioxus-interpreter-js", "futures-channel", "futures-util", - "generational-box 0.6.0-alpha.2", + "generational-box", "rustc-hash", "serde", "serde_json", @@ -1578,52 +1343,32 @@ name = "dioxus-material-icons" version = "2.0.0" source = "git+https://github.com/jkelleyrtp/dioxus-material-icons?branch=jk/git-rev#e494160bd3e03b78ee868c5dde83a16fce77fd48" dependencies = [ - "dioxus 0.6.0-alpha.2", + "dioxus", ] [[package]] name = "dioxus-playground" version = "0.1.0" -source = "git+https://github.com/DioxusLabs/playground#eb5b7ee92e12749ec6440f014a87de5ce3446280" +source = "git+https://github.com/DioxusLabs/playground#67e8fa8214b2227d5e8fc05fa5f8c3c91ac5dc56" dependencies = [ - "dioxus 0.5.6", + "dioxus", "dioxus-logger", "futures", "gloo-net 0.5.0", "gloo-utils 0.2.0", - "manganis 0.2.2", "model", "serde_json", ] -[[package]] -name = "dioxus-router" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c235c5dbeb528c0c2b0424763da812e7500df69b82eddac54db6f4975e065c5f" -dependencies = [ - "dioxus-cli-config 0.5.6", - "dioxus-lib 0.5.6", - "dioxus-router-macro 0.5.6", - "gloo", - "gloo-utils 0.1.7", - "js-sys", - "tracing", - "url", - "urlencoding", - "wasm-bindgen", - "web-sys", -] - [[package]] name = "dioxus-router" version = "0.6.0-alpha.2" source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" dependencies = [ - "dioxus-cli-config 0.6.0-alpha.2", - "dioxus-fullstack 0.6.0-alpha.2", - "dioxus-lib 0.6.0-alpha.2", - "dioxus-router-macro 0.6.0-alpha.2", + "dioxus-cli-config", + "dioxus-fullstack", + "dioxus-lib", + "dioxus-router-macro", "gloo", "gloo-utils 0.1.7", "js-sys", @@ -1635,18 +1380,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "dioxus-router-macro" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e7cd1c5137ba361f2150cdea6b3bc9ddda7b1af84b22c9ee6b5499bf43e1381" -dependencies = [ - "proc-macro2", - "quote", - "slab", - "syn 2.0.74", -] - [[package]] name = "dioxus-router-macro" version = "0.6.0-alpha.2" @@ -1658,27 +1391,12 @@ dependencies = [ "syn 2.0.74", ] -[[package]] -name = "dioxus-rsx" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15c400bc8a779107d8f3a67b14375db07dbd2bc31163bf085a8e9097f36f7179" -dependencies = [ - "dioxus-core 0.5.6", - "internment", - "krates", - "proc-macro2", - "quote", - "syn 2.0.74", - "tracing", -] - [[package]] name = "dioxus-rsx" version = "0.6.0-alpha.2" source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" dependencies = [ - "dioxus-core 0.6.0-alpha.2", + "dioxus-core", "internment", "proc-macro2", "proc-macro2-diagnostics", @@ -1694,7 +1412,7 @@ version = "0.6.0" source = "git+https://github.com/dioxuslabs/sdk?branch=feat/dioxus-0.6#bcd2324d4c5966a9b0cb818b14fc38e74037b64f" dependencies = [ "cfg-if", - "dioxus 0.6.0-alpha.2", + "dioxus", "js-sys", "serde", "serde_json", @@ -1709,7 +1427,7 @@ version = "0.1.0" source = "git+https://github.com/dioxuslabs/dioxus-search#5b2a301b2e84106c9a1b80119277ec38b117ecfe" dependencies = [ "bytes", - "dioxus-router 0.6.0-alpha.2", + "dioxus-router", "dioxus-search-macro", "dioxus-search-shared", "getrandom 0.2.15", @@ -1737,7 +1455,7 @@ version = "0.1.0" source = "git+https://github.com/dioxuslabs/dioxus-search#5b2a301b2e84106c9a1b80119277ec38b117ecfe" dependencies = [ "bytes", - "dioxus-router 0.6.0-alpha.2", + "dioxus-router", "getrandom 0.2.15", "log", "scraper", @@ -1749,31 +1467,15 @@ dependencies = [ "yazi", ] -[[package]] -name = "dioxus-signals" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e3e224cd3d3713f159f0199fc088c292a0f4adb94996b48120157f6a8f8342d" -dependencies = [ - "dioxus-core 0.5.6", - "futures-channel", - "futures-util", - "generational-box 0.5.6", - "once_cell", - "parking_lot", - "rustc-hash", - "tracing", -] - [[package]] name = "dioxus-signals" version = "0.6.0-alpha.2" source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" dependencies = [ - "dioxus-core 0.6.0-alpha.2", + "dioxus-core", "futures-channel", "futures-util", - "generational-box 0.6.0-alpha.2", + "generational-box", "once_cell", "parking_lot", "rustc-hash", @@ -1788,10 +1490,10 @@ source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7 dependencies = [ "askama_escape", "async-trait", - "dioxus-core 0.6.0-alpha.2", - "dioxus-html 0.6.0-alpha.2", - "dioxus-interpreter-js 0.6.0-alpha.2", - "generational-box 0.6.0-alpha.2", + "dioxus-core", + "dioxus-html", + "dioxus-interpreter-js", + "generational-box", "http 1.1.0", "lru", "rustc-hash", @@ -1805,38 +1507,13 @@ name = "dioxus-static-site-generation" version = "0.6.0-alpha.2" source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" dependencies = [ - "dioxus-fullstack 0.6.0-alpha.2", - "dioxus-lib 0.6.0-alpha.2", - "dioxus-router 0.6.0-alpha.2", - "dioxus-web 0.6.0-alpha.2", + "dioxus-fullstack", + "dioxus-lib", + "dioxus-router", + "dioxus-web", "tracing", ] -[[package]] -name = "dioxus-web" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0855ac81fcc9252a0863930a7a7cbb2504fc1b6efe893489c8d0e23aaeb2cb9" -dependencies = [ - "async-trait", - "console_error_panic_hook", - "dioxus-core 0.5.6", - "dioxus-html 0.5.6", - "dioxus-interpreter-js 0.5.6", - "futures-channel", - "futures-util", - "generational-box 0.5.6", - "js-sys", - "rustc-hash", - "serde", - "serde-wasm-bindgen", - "serde_json", - "tracing", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - [[package]] name = "dioxus-web" version = "0.6.0-alpha.2" @@ -1844,14 +1521,14 @@ source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7 dependencies = [ "ciborium", "console_error_panic_hook", - "dioxus-core 0.6.0-alpha.2", - "dioxus-hot-reload 0.6.0-alpha.2", - "dioxus-html 0.6.0-alpha.2", - "dioxus-interpreter-js 0.6.0-alpha.2", - "dioxus-signals 0.6.0-alpha.2", + "dioxus-core", + "dioxus-hot-reload", + "dioxus-html", + "dioxus-interpreter-js", + "dioxus-signals", "futures-channel", "futures-util", - "generational-box 0.6.0-alpha.2", + "generational-box", "js-sys", "rustc-hash", "serde", @@ -1874,16 +1551,16 @@ dependencies = [ "axum", "chrono", "console_error_panic_hook", - "dioxus 0.6.0-alpha.2", + "dioxus", "dioxus-desktop", - "dioxus-fullstack 0.6.0-alpha.2", + "dioxus-fullstack", "dioxus-liveview", "dioxus-material-icons", "dioxus-playground", "dioxus-sdk", "dioxus-search", "dioxus-ssr", - "dioxus-web 0.6.0-alpha.2", + "dioxus-web", "form_urlencoded", "fs_extra", "futures", @@ -1916,19 +1593,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "dioxus_server_macro" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5ef2cad17001c1155f019cb69adbacd620644566d78a77d0778807bb106a337" -dependencies = [ - "convert_case 0.6.0", - "proc-macro2", - "quote", - "server_fn_macro", - "syn 2.0.74", -] - [[package]] name = "dioxus_server_macro" version = "0.6.0-alpha.2" @@ -2161,12 +1825,6 @@ dependencies = [ "rustc_version", ] -[[package]] -name = "fixedbitset" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" - [[package]] name = "flate2" version = "1.0.31" @@ -2469,15 +2127,6 @@ dependencies = [ "x11", ] -[[package]] -name = "generational-box" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "557cf2cbacd0504c6bf8c29f52f8071e0de1d9783346713dc6121d7fa1e5d0e0" -dependencies = [ - "parking_lot", -] - [[package]] name = "generational-box" version = "0.6.0-alpha.2" @@ -3325,32 +2974,6 @@ dependencies = [ "parking_lot", ] -[[package]] -name = "interprocess-docfix" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b84ee245c606aeb0841649a9288e3eae8c61b853a8cd5c0e14450e96d53d28f" -dependencies = [ - "blocking", - "cfg-if", - "futures-core", - "futures-io", - "intmap", - "libc", - "once_cell", - "rustc_version", - "spinning", - "thiserror", - "to_method", - "winapi", -] - -[[package]] -name = "intmap" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae52f28f45ac2bc96edb7714de995cffc174a395fb0abf5bff453587c980d7b9" - [[package]] name = "ipnet" version = "2.9.0" @@ -3449,19 +3072,6 @@ dependencies = [ "unicode-segmentation", ] -[[package]] -name = "krates" -version = "0.16.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcb3baf2360eb25ad31f0ada3add63927ada6db457791979b82ac199f835cb9" -dependencies = [ - "cargo-platform", - "cargo_metadata", - "cfg-expr", - "petgraph", - "semver", -] - [[package]] name = "kuchiki" version = "0.8.1" @@ -3627,39 +3237,12 @@ dependencies = [ "libc", ] -[[package]] -name = "manganis" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c211cfb4529c79b32307b606e83a1bb15d491b3b4a1ab97159b161d7af9d1b72" -dependencies = [ - "dioxus-core 0.5.6", - "manganis-macro 0.2.2", -] - [[package]] name = "manganis" version = "0.3.0-alpha.1" source = "git+https://github.com/DioxusLabs/manganis?branch=jk/drop-remote-support#db4777c7415b9b4a8b1dbf1ce164cb61ba425eca" dependencies = [ - "manganis-macro 0.3.0-alpha.1", -] - -[[package]] -name = "manganis-common" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "542300f1e7d9313de5b7e5b92d273ba42ab547c068d773559d616aa14987de43" -dependencies = [ - "anyhow", - "base64 0.21.7", - "home", - "infer", - "reqwest", - "serde", - "toml 0.7.8", - "tracing", - "url", + "manganis-macro", ] [[package]] @@ -3678,25 +3261,12 @@ dependencies = [ "url", ] -[[package]] -name = "manganis-macro" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "704a0123ac90fa630b21a04fde56c29dfd5a7665c5e8f3639567989daa2d29d1" -dependencies = [ - "manganis-common 0.2.4", - "proc-macro2", - "quote", - "syn 2.0.74", - "tracing-subscriber", -] - [[package]] name = "manganis-macro" version = "0.3.0-alpha.1" source = "git+https://github.com/DioxusLabs/manganis?branch=jk/drop-remote-support#db4777c7415b9b4a8b1dbf1ce164cb61ba425eca" dependencies = [ - "manganis-common 0.3.0-alpha.1", + "manganis-common", "proc-macro2", "quote", "serde_json", @@ -3744,12 +3314,6 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" -[[package]] -name = "md5" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" - [[package]] name = "mdbook-macro" version = "0.1.0" @@ -3757,7 +3321,7 @@ source = "git+https://github.com/dioxuslabs/include_mdbook#3f8e2b43a83ab2df1cac4 dependencies = [ "anyhow", "convert_case 0.6.0", - "dioxus-rsx 0.6.0-alpha.2", + "dioxus-rsx", "macro_state", "mdbook-shared", "postcard", @@ -3833,7 +3397,7 @@ dependencies = [ [[package]] name = "model" version = "0.1.0" -source = "git+https://github.com/DioxusLabs/playground#eb5b7ee92e12749ec6440f014a87de5ce3446280" +source = "git+https://github.com/DioxusLabs/playground#67e8fa8214b2227d5e8fc05fa5f8c3c91ac5dc56" dependencies = [ "gloo-net 0.5.0", "serde", @@ -4120,15 +3684,6 @@ dependencies = [ "vcpkg", ] -[[package]] -name = "ordered-float" -version = "2.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c" -dependencies = [ - "num-traits", -] - [[package]] name = "ordered-stream" version = "0.2.0" @@ -4211,16 +3766,6 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" -[[package]] -name = "petgraph" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" -dependencies = [ - "fixedbitset", - "indexmap 2.4.0", -] - [[package]] name = "phf" version = "0.8.0" @@ -5059,9 +4604,6 @@ name = "semver" version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" -dependencies = [ - "serde", -] [[package]] name = "send_wrapper" @@ -5081,16 +4623,6 @@ dependencies = [ "serde_derive", ] -[[package]] -name = "serde-value" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" -dependencies = [ - "ordered-float", - "serde", -] - [[package]] name = "serde-wasm-bindgen" version = "0.5.0" @@ -5464,15 +4996,6 @@ dependencies = [ "lock_api", ] -[[package]] -name = "spinning" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d4f0e86297cad2658d92a707320d87bf4e6ae1050287f51d19b67ef3f153a7b" -dependencies = [ - "lock_api", -] - [[package]] name = "srtparse" version = "0.2.0" @@ -5827,12 +5350,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" -[[package]] -name = "to_method" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7c4ceeeca15c8384bbc3e011dbd8fccb7f068a440b752b7d9b32ceb0ca0e2e8" - [[package]] name = "tokio" version = "1.39.2" diff --git a/Cargo.toml b/Cargo.toml index dd254e2d5..419cdea90 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -74,28 +74,28 @@ tracing = "0.1.40" rand = { version = "0.8.5", optional = true } [patch.crates-io] -dioxus = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-lib = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-core = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-core-macro = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-config-macro = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-router = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-router-macro = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-html = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-html-internal-macro = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-hooks = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-web = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-ssr = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-desktop = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-interpreter-js = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-liveview = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-rsx = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-signals = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-cli-config = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -generational-box = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-hot-reload = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus_server_macro = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } -dioxus-fullstack = { git = "https://github.com/dioxuslabs/dioxus", version = "0.6.0-alpha.2" } +dioxus = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-lib = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-core = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-core-macro = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-config-macro = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-router = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-router-macro = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-html = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-html-internal-macro = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-hooks = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-web = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-ssr = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-desktop = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-interpreter-js = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-liveview = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-rsx = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-signals = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-cli-config = { git = "https://github.com/dioxuslabs/dioxus" } +generational-box = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-hot-reload = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus_server_macro = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-fullstack = { git = "https://github.com/dioxuslabs/dioxus" } manganis = { git = "https://github.com/DioxusLabs/manganis", branch = "jk/drop-remote-support" } manganis-common = { git = "https://github.com/DioxusLabs/manganis", branch = "jk/drop-remote-support" } diff --git a/public/dxp.css b/public/dxp.css new file mode 100644 index 000000000..f4a97009b --- /dev/null +++ b/public/dxp.css @@ -0,0 +1,177 @@ +#dxp-pane-container { + display: flex; + flex-direction: row; + margin: 5vh 5vw; +} + +#dxp-left-pane, +#dxp-right-pane { + width: 80vw; + height: 70vh; + margin-left: auto; + margin-right: auto; + border: 1px solid #000000; +} + +#dxp-left-pane { + display: flex; + flex-direction: column; + border-radius: 5px 0px 0px 5px; + overflow: hidden; +} + +#dxp-right-pane { + border-left: none; + border-radius: 0px 5px 5px 0px; + overflow-x: hidden; + overflow-y: auto; + background-color: #FFFFFF; +} + +@media (max-width: 768px) { + #dxp-pane-container { + flex-direction: column; + } + + #dxp-left-pane { + min-height: 200px; + height: 50%; + border-radius: 5px 5px 0px 0px; + } + + #dxp-right-pane { + min-height: 200px; + height: 40%; + border-radius: 0px 0px 5px 5px; + border: 1px solid #000000; + border-top: none; + } +} + +#dxp-header { + display: flex; + flex-direction: row; + background-color: antiquewhite; + border-bottom: 1px solid #000000; + padding: 10px; +} + +#dxp-title { + margin-left: auto; + margin-right: auto; + font-size: 1rem; + font-family: Arial, Helvetica, sans-serif; +} + +#dxp-clear-button { + border: none; + background: none; + outline: none; + font-family: Arial, Helvetica, sans-serif; +} + +#dxp-clear-button:hover { + text-decoration: underline; + cursor: pointer; +} + +#dxp-run-button { + display: flex; + align-items: center; + justify-items: center; + border-radius: 5px; + border: none; + background-color: rgb(75, 153, 206); + color: #FFFFFF; + padding: 5px 20px; + transition: background-color 0.2s ease; + font-family: Arial, Helvetica, sans-serif; +} + +#dxp-run-button.disabled { + background-color: rgb(36, 36, 36); + padding: 5px; + align-self: center; +} + +#dxp-run-button:not(.disabled):hover { + background-color: rgb(55, 117, 158); + cursor: pointer; +} + +#dxp-run-button.disabled:hover { + cursor: not-allowed; +} + +#dxp-editor { + box-sizing: border-box; + flex: 1; + border-left: none; + border-top: none; + padding: 10px; +} + +#dxp-right-pane>iframe { + width: 100%; + height: 100%; + outline: none; + border: none; + border-left: none; +} + +.dxp-log-message { + padding: 0 15px; + margin: 10px; + border-left: solid 2px #626dff; + color: #979797; + font-family: Arial, Helvetica, sans-serif; +} + +.dxp-log-message.dxp-log-success { + color: #000000; + border-left: solid 2px #47a947; +} + +.dxp-log-message.dxp-log-error { + color: #000000; + border-left: solid 2px #ff0000; + margin-top: 0; + margin-bottom: 0; + padding-top: 5px; + padding-bottom: 5px; +} + + +.dxp-log-message:hover { + background-color: #e4e4e4; +} + +@media screen and (prefers-color-scheme: dark) { + + #dxp-header { + background-color: #494949; + border-bottom: 1px solid #838383; + color: #b5b5b5; + } + + #dxp-clear-button { + color: #b5b5b5; + } + + #dxp-right-pane { + background-color: #494949; + } + + #dxp-left-pane, + #dxp-right-pane { + border: 1px solid #838383; + } + + .dxp-log-message.dxp-log-success,.dxp-log-message.dxp-log-error { + color: #ffffff; + } + + .dxp-log-message:hover { + background-color: #393939; + } +} diff --git a/public/tailwind.css b/public/tailwind.css index 21eefdd01..c9fde5b5d 100644 --- a/public/tailwind.css +++ b/public/tailwind.css @@ -1,5 +1,5 @@ /* -! tailwindcss v3.3.2 | MIT License | https://tailwindcss.com +! tailwindcss v3.4.10 | MIT License | https://tailwindcss.com */ /* @@ -32,9 +32,11 @@ 4. Use the user's configured `sans` font-family by default. 5. Use the user's configured `sans` font-feature-settings by default. 6. Use the user's configured `sans` font-variation-settings by default. +7. Disable tap highlights on iOS */ -html { +html, +:host { line-height: 1.5; /* 1 */ -webkit-text-size-adjust: 100%; @@ -50,6 +52,8 @@ html { /* 5 */ font-variation-settings: normal; /* 6 */ + -webkit-tap-highlight-color: transparent; + /* 7 */ } /* @@ -121,8 +125,10 @@ strong { } /* -1. Use the user's configured `mono` font family by default. -2. Correct the odd `em` font sizing in all browsers. +1. Use the user's configured `mono` font-family by default. +2. Use the user's configured `mono` font-feature-settings by default. +3. Use the user's configured `mono` font-variation-settings by default. +4. Correct the odd `em` font sizing in all browsers. */ code, @@ -131,8 +137,12 @@ samp, pre { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; /* 1 */ - font-size: 1em; + font-feature-settings: normal; /* 2 */ + font-variation-settings: normal; + /* 3 */ + font-size: 1em; + /* 4 */ } /* @@ -191,12 +201,18 @@ select, textarea { font-family: inherit; /* 1 */ + font-feature-settings: inherit; + /* 1 */ + font-variation-settings: inherit; + /* 1 */ font-size: 100%; /* 1 */ font-weight: inherit; /* 1 */ line-height: inherit; /* 1 */ + letter-spacing: inherit; + /* 1 */ color: inherit; /* 1 */ margin: 0; @@ -220,9 +236,9 @@ select { */ button, -[type='button'], -[type='reset'], -[type='submit'] { +input:where([type='button']), +input:where([type='reset']), +input:where([type='submit']) { -webkit-appearance: button; /* 1 */ background-color: transparent; @@ -341,6 +357,14 @@ menu { padding: 0; } +/* +Reset default styling for dialogs. +*/ + +dialog { + padding: 0; +} + /* Prevent resizing textareas horizontally by default. */ @@ -470,6 +494,10 @@ video { --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; + --tw-contain-size: ; + --tw-contain-layout: ; + --tw-contain-paint: ; + --tw-contain-style: ; } ::backdrop { @@ -520,6 +548,10 @@ video { --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; + --tw-contain-size: ; + --tw-contain-layout: ; + --tw-contain-paint: ; + --tw-contain-style: ; } .container { @@ -717,6 +749,11 @@ video { margin-bottom: auto; } +.mx-8 { + margin-left: 2rem; + margin-right: 2rem; +} + .-mb-10 { margin-bottom: -2.5rem; } @@ -902,26 +939,6 @@ video { height: 1px; } -.h-9 { - height: 2.25rem; -} - -.h-80 { - height: 20rem; -} - -.h-3 { - height: 0.75rem; -} - -.h-20 { - height: 5rem; -} - -.h-0 { - height: 0px; -} - .h-40 { height: 10rem; } @@ -954,10 +971,6 @@ video { width: 2.5rem; } -.w-2 { - width: 0.5rem; -} - .w-2\.5 { width: 0.625rem; } @@ -1112,6 +1125,10 @@ video { flex-wrap: wrap; } +.content-center { + align-content: center; +} + .items-start { align-items: flex-start; } @@ -1120,6 +1137,10 @@ video { align-items: center; } +.justify-start { + justify-content: flex-start; +} + .justify-end { justify-content: flex-end; } @@ -1132,6 +1153,10 @@ video { justify-content: space-between; } +.justify-items-end { + justify-items: end; +} + .gap-4 { gap: 1rem; } @@ -1144,12 +1169,6 @@ video { gap: 2rem; } -.space-x-1 > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(0.25rem * var(--tw-space-x-reverse)); - margin-left: calc(0.25rem * calc(1 - var(--tw-space-x-reverse))); -} - .space-x-1\.5 > :not([hidden]) ~ :not([hidden]) { --tw-space-x-reverse: 0; margin-right: calc(0.375rem * var(--tw-space-x-reverse)); @@ -1274,22 +1293,6 @@ video { border-left-width: 1px; } -.border-b-2 { - border-bottom-width: 2px; -} - -.border-r-8 { - border-right-width: 8px; -} - -.border-l-8 { - border-left-width: 8px; -} - -.border-l-2 { - border-left-width: 2px; -} - .border-dashed { border-style: dashed; } @@ -1342,6 +1345,11 @@ video { border-color: rgb(255 255 255 / var(--tw-border-opacity)); } +.border-b-orange-50 { + --tw-border-opacity: 1; + border-bottom-color: rgb(255 247 237 / var(--tw-border-opacity)); +} + .bg-blue-500 { --tw-bg-opacity: 1; background-color: rgb(59 130 246 / var(--tw-bg-opacity)); @@ -1565,6 +1573,21 @@ video { padding-bottom: 2rem; } +.px-12 { + padding-left: 3rem; + padding-right: 3rem; +} + +.px-24 { + padding-left: 6rem; + padding-right: 6rem; +} + +.px-20 { + padding-left: 5rem; + padding-right: 5rem; +} + .pb-1 { padding-bottom: 0.25rem; } @@ -1696,10 +1719,6 @@ video { font-size: 1.5em; } -.text-\[2em\] { - font-size: 2em; -} - .text-\[3\.3em\] { font-size: 3.3em; } @@ -1930,7 +1949,7 @@ video { .backdrop-blur-sm { --tw-backdrop-blur: blur(4px); -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); - backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); + backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); } .transition { @@ -2067,161 +2086,6 @@ video { color: rgb(107 114 128 / var(--tw-text-opacity)); } -@media (prefers-color-scheme: dark) { - .dark\:block { - display: block; - } - - .dark\:hidden { - display: none; - } - - .dark\:border-gray-500 { - --tw-border-opacity: 1; - border-color: rgb(107 114 128 / var(--tw-border-opacity)); - } - - .dark\:border-gray-800 { - --tw-border-opacity: 1; - border-color: rgb(31 41 55 / var(--tw-border-opacity)); - } - - .dark\:border-stone-700 { - --tw-border-opacity: 1; - border-color: rgb(68 64 60 / var(--tw-border-opacity)); - } - - .dark\:bg-\[\#111111\] { - --tw-bg-opacity: 1; - background-color: rgb(17 17 17 / var(--tw-bg-opacity)); - } - - .dark\:bg-gray-800 { - --tw-bg-opacity: 1; - background-color: rgb(31 41 55 / var(--tw-bg-opacity)); - } - - .dark\:bg-ideblack { - --tw-bg-opacity: 1; - background-color: rgb(14 17 22 / var(--tw-bg-opacity)); - } - - .dark\:bg-neutral-900\/70 { - background-color: rgb(23 23 23 / 0.7); - } - - .dark\:bg-sky-500 { - --tw-bg-opacity: 1; - background-color: rgb(14 165 233 / var(--tw-bg-opacity)); - } - - .dark\:bg-slate-800 { - --tw-bg-opacity: 1; - background-color: rgb(30 41 59 / var(--tw-bg-opacity)); - } - - .dark\:bg-opacity-80 { - --tw-bg-opacity: 0.8; - } - - .dark\:fill-white { - fill: #fff; - } - - .dark\:fill-zinc-100 { - fill: #f4f4f5; - } - - .dark\:text-\[\#dee2e6\] { - --tw-text-opacity: 1; - color: rgb(222 226 230 / var(--tw-text-opacity)); - } - - .dark\:text-gray-100 { - --tw-text-opacity: 1; - color: rgb(243 244 246 / var(--tw-text-opacity)); - } - - .dark\:text-gray-200 { - --tw-text-opacity: 1; - color: rgb(229 231 235 / var(--tw-text-opacity)); - } - - .dark\:text-gray-300 { - --tw-text-opacity: 1; - color: rgb(209 213 219 / var(--tw-text-opacity)); - } - - .dark\:text-gray-400 { - --tw-text-opacity: 1; - color: rgb(156 163 175 / var(--tw-text-opacity)); - } - - .dark\:text-gray-500 { - --tw-text-opacity: 1; - color: rgb(107 114 128 / var(--tw-text-opacity)); - } - - .dark\:text-sky-400 { - --tw-text-opacity: 1; - color: rgb(56 189 248 / var(--tw-text-opacity)); - } - - .dark\:text-white { - --tw-text-opacity: 1; - color: rgb(255 255 255 / var(--tw-text-opacity)); - } - - .dark\:opacity-75 { - opacity: 0.75; - } - - .dark\:ring-1 { - --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); - --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); - box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); - } - - .dark\:ring-inset { - --tw-ring-inset: inset; - } - - .dark\:ring-white\/10 { - --tw-ring-color: rgb(255 255 255 / 0.1); - } - - .dark\:invert-0 { - --tw-invert: invert(0); - filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); - } - - .dark\:backdrop-blur { - --tw-backdrop-blur: blur(8px); - -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); - backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); - } - - .dark\:hover\:bg-ideblack:hover { - --tw-bg-opacity: 1; - background-color: rgb(14 17 22 / var(--tw-bg-opacity)); - } - - .dark\:hover\:bg-sky-400:hover { - --tw-bg-opacity: 1; - background-color: rgb(56 189 248 / var(--tw-bg-opacity)); - } - - .dark\:hover\:text-gray-300:hover { - --tw-text-opacity: 1; - color: rgb(209 213 219 / var(--tw-text-opacity)); - } - - .dark\:hover\:text-sky-400:hover { - --tw-text-opacity: 1; - color: rgb(56 189 248 / var(--tw-text-opacity)); - } -} - @media (min-width: 640px) { .sm\:-m-4 { margin: -1rem; @@ -2449,6 +2313,21 @@ video { padding-bottom: 0.5rem; } + .md\:px-20 { + padding-left: 5rem; + padding-right: 5rem; + } + + .md\:px-2 { + padding-left: 0.5rem; + padding-right: 0.5rem; + } + + .md\:px-24 { + padding-left: 6rem; + padding-right: 6rem; + } + .md\:pb-10 { padding-bottom: 2.5rem; } @@ -2478,8 +2357,8 @@ video { font-size: 3.3em; } - .md\:text-\[5em\] { - font-size: 5em; + .md\:text-\[4em\] { + font-size: 4em; } .md\:text-sm { @@ -2487,6 +2366,10 @@ video { line-height: 1.25rem; } + .md\:text-\[3em\] { + font-size: 3em; + } + .md\:leading-tight { line-height: 1.25; } @@ -2512,10 +2395,6 @@ video { margin-right: auto; } - .lg\:-ml-3 { - margin-left: -0.75rem; - } - .lg\:-ml-3\.5 { margin-left: -0.875rem; } @@ -2647,8 +2526,167 @@ video { } } -@media (min-height:720px) { - .\[\@media\(min-height\:720px\)\]\:min-h-\[calc\(100vh-6rem\)\] { - min-height: calc(100vh - 6rem); +@media (prefers-color-scheme: dark) { + .dark\:block { + display: block; + } + + .dark\:hidden { + display: none; + } + + .dark\:border-gray-500 { + --tw-border-opacity: 1; + border-color: rgb(107 114 128 / var(--tw-border-opacity)); + } + + .dark\:border-gray-800 { + --tw-border-opacity: 1; + border-color: rgb(31 41 55 / var(--tw-border-opacity)); + } + + .dark\:border-stone-700 { + --tw-border-opacity: 1; + border-color: rgb(68 64 60 / var(--tw-border-opacity)); + } + + .dark\:bg-\[\#111111\] { + --tw-bg-opacity: 1; + background-color: rgb(17 17 17 / var(--tw-bg-opacity)); + } + + .dark\:bg-gray-800 { + --tw-bg-opacity: 1; + background-color: rgb(31 41 55 / var(--tw-bg-opacity)); + } + + .dark\:bg-ideblack { + --tw-bg-opacity: 1; + background-color: rgb(14 17 22 / var(--tw-bg-opacity)); + } + + .dark\:bg-neutral-900\/70 { + background-color: rgb(23 23 23 / 0.7); + } + + .dark\:bg-sky-500 { + --tw-bg-opacity: 1; + background-color: rgb(14 165 233 / var(--tw-bg-opacity)); + } + + .dark\:bg-slate-800 { + --tw-bg-opacity: 1; + background-color: rgb(30 41 59 / var(--tw-bg-opacity)); + } + + .dark\:bg-opacity-80 { + --tw-bg-opacity: 0.8; + } + + .dark\:fill-white { + fill: #fff; + } + + .dark\:fill-zinc-100 { + fill: #f4f4f5; + } + + .dark\:text-\[\#dee2e6\] { + --tw-text-opacity: 1; + color: rgb(222 226 230 / var(--tw-text-opacity)); + } + + .dark\:text-gray-100 { + --tw-text-opacity: 1; + color: rgb(243 244 246 / var(--tw-text-opacity)); + } + + .dark\:text-gray-200 { + --tw-text-opacity: 1; + color: rgb(229 231 235 / var(--tw-text-opacity)); + } + + .dark\:text-gray-300 { + --tw-text-opacity: 1; + color: rgb(209 213 219 / var(--tw-text-opacity)); + } + + .dark\:text-gray-400 { + --tw-text-opacity: 1; + color: rgb(156 163 175 / var(--tw-text-opacity)); + } + + .dark\:text-gray-500 { + --tw-text-opacity: 1; + color: rgb(107 114 128 / var(--tw-text-opacity)); + } + + .dark\:text-sky-400 { + --tw-text-opacity: 1; + color: rgb(56 189 248 / var(--tw-text-opacity)); + } + + .dark\:text-white { + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); + } + + .dark\:opacity-75 { + opacity: 0.75; + } + + .dark\:ring-1 { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); + } + + .dark\:ring-inset { + --tw-ring-inset: inset; + } + + .dark\:ring-white\/10 { + --tw-ring-color: rgb(255 255 255 / 0.1); + } + + .dark\:invert-0 { + --tw-invert: invert(0); + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); + } + + .dark\:backdrop-blur { + --tw-backdrop-blur: blur(8px); + -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); + backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); + } + + .dark\:hover\:bg-ideblack:hover { + --tw-bg-opacity: 1; + background-color: rgb(14 17 22 / var(--tw-bg-opacity)); + } + + .dark\:hover\:bg-sky-400:hover { + --tw-bg-opacity: 1; + background-color: rgb(56 189 248 / var(--tw-bg-opacity)); + } + + .dark\:hover\:text-gray-300:hover { + --tw-text-opacity: 1; + color: rgb(209 213 219 / var(--tw-text-opacity)); + } + + .dark\:hover\:text-sky-400:hover { + --tw-text-opacity: 1; + color: rgb(56 189 248 / var(--tw-text-opacity)); + } +} + +@media(min-height:720px) { + .\[\@media\(min-height\:720px\)\]\:h-\[calc\(100vh-6rem\)\] { + height: calc(100vh - 6rem); + } + + .\[\@media\(min-height\:720px\)\]\:h-\[calc\(100vh-3rem\)\] { + height: calc(100vh - 3rem); } } diff --git a/src/components/desktop_dependencies.rs b/src/components/desktop_dependencies.rs index 4d6518c66..2d3f054c5 100644 --- a/src/components/desktop_dependencies.rs +++ b/src/components/desktop_dependencies.rs @@ -153,8 +153,10 @@ fn LinuxDependencies() -> Element { fn WslDependencies() -> Element { rsx! { div { - p { "While it's doable, it can be tricky to setup development in WSL for Dioxus desktop. Not everything has been figured out and some stuff may not work." } - p { "Here are the steps we used to get Dioxus running through WSL."} + p { + "While it's doable, it can be tricky to setup development in WSL for Dioxus desktop. Not everything has been figured out and some stuff may not work." + } + p { "Here are the steps we used to get Dioxus running through WSL." } ol { li { "Update your kernel to the latest version and update WSL to version 2." } li { "Add `export DISPLAY=:0` to `~/.zshrc`" } @@ -163,9 +165,11 @@ fn WslDependencies() -> Element { Link { to: "https://beta.tauri.app/start/prerequisites/", "here" } "." } - li { "For file dialogs to work, you need to install a fallback like `zenity`"} + li { "For file dialogs to work, you need to install a fallback like `zenity`" } + } + p { + "When running Dioxus desktop on WSL, you may get warnings from `libEGL`. There is currently not a solution for these but the app should still render." } - p { "When running Dioxus desktop on WSL, you may get warnings from `libEGL`. There is currently not a solution for these but the app should still render."} } } } diff --git a/src/components/homepage/hero.rs b/src/components/homepage/hero.rs index 4e6fca004..f251439ed 100644 --- a/src/components/homepage/hero.rs +++ b/src/components/homepage/hero.rs @@ -2,65 +2,72 @@ use crate::*; pub(crate) fn Hero() -> Element { rsx! { - section { class: "w-full dark:bg-ideblack h-fit [@media(min-height:720px)]:min-h-[calc(100vh-6rem)] flex flex-col justify-between items-center py-16", - div { class: "flex flex-wrap items-center pb-12 md:px-12 max-w-screen-2xl mx-auto text-center my-auto", - div { class: "relative w-full mx-4 sm:mx-auto text-gray-600", - div { class: "text-[3em] md:text-[5em] font-semibold dark:text-white text-ghdarkmetal font-sans py-12 flex flex-col", - span { "Fullstack, crossplatform," } - span { "lightning fast, fully typed." } - } - h3 { class: "text-[2em] dark:text-white font-extralight text-ghdarkmetal pt-4 max-w-screen-md mx-auto", - "Dioxus is a Rust library for building apps that run on desktop, web, mobile, and more." - } - - img { - src: "/static/multiplatform-dark.svg", - class: "mx-auto max-h-48 lg:max-h-96 dark:hidden", - alt: "Dioxus Contributors", - } - img { - src: "/static/multiplatform-light.svg", - class: "mx-auto max-h-48 lg:max-h-96 hidden dark:block", - alt: "Dioxus Contributors", - } - - div { class: "pt-12 text-white text-[1.2em] font-sans font-bold flex flex-col md:flex-row justify-center md:space-x-4 md:space-y-0 space-y-4", - Link { - to: Route::Docs { - child: BookRoute::GettingStartedIndex {}, - }, - class: "bg-dxorange m-0 p-4 px-8 rounded md:hover:-translate-y-2 transition-transform duration-300 w-full md:w-auto", - "Quickstart" + section { class: "w-full dark:bg-ideblack h-fit [@media(min-height:720px)]:h-[calc(100vh-6rem)] flex flex-col justify-between items-center py-16", + div { class: "pb-12 md:px-12 text-center w-full flex flex-col h-full max-w-screen-2xl", + div { class: "flex-grow" } + div { class: "flex flex-row justify-start w-full pb-24", + div { class: "text-left flex-grow", + div { class: "text-[3em] md:text-[3em] font-semibold dark:text-white text-ghdarkmetal font-sans flex flex-col", + span { + "Dioxus is " + em { "the " } + "the Rust framework for" + } + span { "fullstack web, desktop, and mobile apps." } } - Link { - to: Route::Docs { - child: BookRoute::ReferenceIndex {}, - }, - class: "bg-dxblue m-0 p-4 px-8 rounded md:hover:-translate-y-2 transition-transform duration-300 w-full md:w-auto", - "Read the docs" + h3 { class: "text-[1.5em] dark:text-white font-extralight text-ghdarkmetal pt-4 max-w-screen-md text-left", + "Ship beautiful, robust, cross-platform apps in record time." } - } - div { class: "max-w-screen-2xl mx-auto pt-36 hidden", - h1 { class: "text-md", "Trusted by top companies" } - div { class: "pt-4 flex flex-row flex-wrap justify-center invert dark:invert-0", - div { class: "h-12 w-40 p-2 m-4 flex justify-center items-center", - img { src: "/static/futurewei_bw.png" } - } - div { class: "h-12 w-40 p-2 m-4 flex justify-center items-center", - img { src: "/static/airbuslogo.svg" } - } - div { class: "h-12 w-40 p-2 m-4 flex justify-center items-center", - img { src: "/static/ESA_logo.svg" } - } - div { class: "h-12 w-40 p-2 m-4 flex justify-center items-center", - img { src: "/static/yclogo.svg" } + div { class: "pt-24 text-white text-[1.2em] font-sans font-bold flex flex-col md:flex-row md:space-x-4 md:space-y-0 space-y-4", + Link { + to: Route::Docs { + child: BookRoute::GettingStartedIndex {}, + }, + class: "bg-dxorange m-0 p-2 px-4 rounded md:hover:-translate-y-2 transition-transform duration-300 w-full md:w-auto", + "Quickstart" } - div { class: "h-12 w-40 p-2 m-4 flex justify-center items-center", - img { src: "/static/satellite.webp" } + Link { + to: Route::Docs { + child: BookRoute::ReferenceIndex {}, + }, + class: "bg-dxblue m-0 p-2 px-4 rounded md:hover:-translate-y-2 transition-transform duration-300 w-full md:w-auto", + "Read the docs" } } } + div { class: "flex-grow", + img { + src: "/static/multiplatform-dark.svg", + class: "mx-auto max-h-48 lg:max-h-96 dark:hidden", + alt: "Animated Icon", + } + img { + src: "/static/multiplatform-light.svg", + class: "mx-auto max-h-48 lg:max-h-96 hidden dark:block", + alt: "Animated Icon", + } + } + } + div { class: "flex-grow max-w-screen-2xl flex flex-col justify-end", + h1 { class: "text-md text-left", "Trusted by top companies" } + div { class: "pt-4 flex flex-row flex-wrap justify-start invert dark:invert-0", + div { class: "h-12 w-40 p-2 m-4 flex justify-center items-center", + img { src: "/static/futurewei_bw.png" } + } + div { class: "h-12 w-40 p-2 m-4 flex justify-center items-center", + img { src: "/static/airbuslogo.svg" } + } + div { class: "h-12 w-40 p-2 m-4 flex justify-center items-center", + img { src: "/static/ESA_logo.svg" } + } + div { class: "h-12 w-40 p-2 m-4 flex justify-center items-center", + img { src: "/static/yclogo.svg" } + } + div { class: "h-12 w-40 p-2 m-4 flex justify-center items-center", + img { src: "/static/satellite.webp" } + } + } } } } diff --git a/src/components/nav.rs b/src/components/nav.rs index 21d96f925..b0664bb10 100644 --- a/src/components/nav.rs +++ b/src/components/nav.rs @@ -18,7 +18,7 @@ pub(crate) fn Nav() -> Element { class: if HIGHLIGHT_NAV_LAYOUT() { "border border-orange-600 rounded-md" }, div { class: "lg:py-2 px-2 max-w-screen-2xl mx-auto flex items-center justify-between text-sm leading-6 h-16", button { - class: "bg-zinc-300 rounded-lg p-2 mr-4 lg:hidden my-3 h-10 flex items-center text-lg z-[100]", + class: "bg-zinc-300 rounded-lg p-1 mr-4 lg:hidden my-3 h-10 flex items-center text-lg z-[100]", class: if !SHOW_DOCS_NAV() { "hidden" }, onclick: move |_| { let mut sidebar = SHOW_SIDEBAR.write(); @@ -84,41 +84,15 @@ pub(crate) fn Nav() -> Element { static LINKS: &[(&str, &str)] = &[ ("Learn", "/learn/0.5/"), + ("Playground", "/play"), + ("SDK", "/sdk"), ("Blog", "/blog"), - ("Awesome", "/awesome"), - ("docs.rs", "https://docs.rs/dioxus/latest/dioxus/"), + // ("Awesome", "/awesome"), + // ("docs.rs", "https://docs.rs/dioxus/latest/dioxus/"), ]; #[component] fn LinkList() -> Element { - let current_route = use_route::().to_string(); - - let links = LINKS.iter().cloned().map(|(name, link)| { - let is_current = current_route.starts_with(link); - let cur_class = if is_current { "text-sky-500 dark:text-sky-400" } else { "" }; - - let is_external = link.starts_with("http"); - - rsx! { - Link { - to: link, - class: "p-2 leading-none hover:text-sky-500 dark:hover:text-sky-400 rounded fill-zinc-700 dark:fill-zinc-100 {cur_class}", - position: "relative", - "{name}" - if is_external { - svg { - height: "7", - "viewBox": "0 0 6 6", - width: "7", - "aria-hidden": "true", - class: "navbar_externalArrow___VWBd", - path { "d": "M1.25215 5.54731L0.622742 4.9179L3.78169 1.75597H1.3834L1.38936 0.890915H5.27615V4.78069H4.40513L4.41109 2.38538L1.25215 5.54731Z" } - } - } - } - } - }); - rsx! { nav { class: "flex items-center space-x-2 text-md font-light leading-none text-slate-700 dark:text-white whitespace-nowrap", Link { @@ -128,18 +102,26 @@ fn LinkList() -> Element { src: "https://avatars.githubusercontent.com/u/79236386?s=200&v=4", class: "h-8 w-auto", } - span { class: "mx-3 text-xl dark:text-white leading-none font-bold hidden sm:block px-4", - "Dioxus Labs" + span { class: "text-xl dark:text-white leading-none font-bold hidden sm:block px-4", + "Dioxus" + } + } + for (name , link) in LINKS.iter().cloned() { + Link { + to: link, + class: "p-2 leading-none hover:text-sky-500 dark:hover:text-sky-400 rounded fill-zinc-700 dark:fill-zinc-100", + active_class: "text-sky-500 dark:text-sky-400", + position: "relative", + "{name}" } } - {links} } } } fn Search() -> Element { rsx! { - div { class: "relative md:w-full max-w-[20rem] xl:max-w-[20rem] 2xl:max-w-[20rem] sm:mx-auto sm:flex-1", + div { class: "relative md:w-full max-w-[20rem] xl:max-w-[20rem] 2xl:max-w-[20rem] sm:mx-auto sm:flex-1 text-md font-light leading-none", // Pop up a modal button { // Pop up a modal @@ -147,13 +129,13 @@ fn Search() -> Element { onclick: move |_| { *SHOW_SEARCH.write() = true; }, - div { class: "h-full my-auto flex flex-row align-middle justify-between", + div { class: "h-full my-auto flex flex-row content-center justify-between", MaterialIcon { name: "search", - size: 24, + size: 20, color: MaterialIconColor::Dark, } - span { class: "hidden sm:block pl-2 pr-4", "Search the docs" } + span { class: "hidden sm:block pl-2 pr-4 content-center", "Search the docs" } } div { class: "hidden md:block border border-gray-300 rounded-lg p-1 text-xs text-gray-400", "CTRL + /" @@ -240,7 +222,6 @@ fn SearchModal() -> Element { } } - // Results div { class: "overflow-y-auto", ul { SearchResults { results, search_text } diff --git a/src/components/playground.rs b/src/components/playground.rs index 91abd7f28..efc2740fe 100644 --- a/src/components/playground.rs +++ b/src/components/playground.rs @@ -15,9 +15,6 @@ const BUILT_URL: &str = "http://localhost:3000/built/"; #[component] pub fn Playground() -> Element { rsx! { - // dioxus_playground::Playground { - // socket_url: SOCKET_URL, - // built_url: BUILT_URL, - // } + dioxus_playground::Playground { socket_url: SOCKET_URL, built_url: BUILT_URL } } } diff --git a/src/main.rs b/src/main.rs index 5e89723c7..a823b93d0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -54,10 +54,30 @@ fn HeaderFooter() -> Element { head::Link { rel: "stylesheet", href: "/githubmarkdown.css" } head::Link { rel: "stylesheet", href: "/tailwind.css" } head::Link { rel: "stylesheet", href: "/main.css" } + head::Link { rel: "stylesheet", href: "/dxp.css" } + head::Link { rel: "stylesheet", href: "https://rsms.me/inter/inter.css" } head::Link { rel: "stylesheet", href: "https://fonts.googleapis.com/icon?family=Material+Icons", } + head::Link { rel: "preconnect", href: "https://fonts.googleapis.com" } + head::Link { + href: "https://fonts.gstatic.com", + rel: "preconnect", + crossorigin: "false", + } + head::Link { + rel: "stylesheet", + href: "https://fonts.googleapis.com/css2?family=Arimo:wght@100;400;600&display=swap", + } + head::Link { + href: "https://fonts.googleapis.com/css2?family=Arimo:ital,wght@0,400..700;1,400..700&family=Lexend:wght@100;400&family=M+PLUS+1:wght@100..900&family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap", + rel: "stylesheet", + } + head::Script { src: "/ace/ace.js" } + head::Script { src: "/ace/mode-rust.js" } + head::Script { src: "/ace/theme-github.js" } + Nav {} Outlet:: {} } From 572a685df1b5f6e3b07e395490c9173068ca5db2 Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Fri, 16 Aug 2024 16:25:56 -0700 Subject: [PATCH 19/35] Add a section about moving state around --- Cargo.lock | 78 +++++++-------- Cargo.toml | 6 +- docs-src/0.5/SUMMARY.md | 1 + .../0.5/en/reference/moving_around_state.md | 54 +++++++++++ public/tailwind.css | 4 + src/doc_examples/mod.rs | 2 + src/doc_examples/moving_state_around.rs | 95 +++++++++++++++++++ 7 files changed, 198 insertions(+), 42 deletions(-) create mode 100644 docs-src/0.5/en/reference/moving_around_state.md create mode 100644 src/doc_examples/moving_state_around.rs diff --git a/Cargo.lock b/Cargo.lock index 85681a4e4..a43686587 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -541,9 +541,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.11" +version = "1.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fb8dd288a69fc53a1996d7ecfbf4a20d59065bff137ce7e56bbd620de191189" +checksum = "72db2f7947ecee9b03b510377e8bb9077afa27176fdbff55c51027e976fdcc48" dependencies = [ "jobserver", "libc", @@ -627,9 +627,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.15" +version = "4.5.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d8838454fda655dafd3accb2b6e2bea645b9e4078abe84a22ceb947235c5cc" +checksum = "ed6719fffa43d0d87e5fd8caeab59be1554fb028cd30edc88fc4369b17971019" dependencies = [ "clap_builder", "clap_derive", @@ -1063,7 +1063,7 @@ dependencies = [ [[package]] name = "dioxus" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" +source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" dependencies = [ "dioxus-config-macro", "dioxus-core", @@ -1082,7 +1082,7 @@ dependencies = [ [[package]] name = "dioxus-cli-config" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" +source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" dependencies = [ "built", "clap", @@ -1095,7 +1095,7 @@ dependencies = [ [[package]] name = "dioxus-config-macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" +source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" dependencies = [ "proc-macro2", "quote", @@ -1104,7 +1104,7 @@ dependencies = [ [[package]] name = "dioxus-core" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" +source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" dependencies = [ "const_format", "futures-channel", @@ -1124,7 +1124,7 @@ dependencies = [ [[package]] name = "dioxus-core-macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" +source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" dependencies = [ "convert_case 0.6.0", "dioxus-rsx", @@ -1137,7 +1137,7 @@ dependencies = [ [[package]] name = "dioxus-desktop" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" +source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" dependencies = [ "async-trait", "cocoa", @@ -1176,7 +1176,7 @@ dependencies = [ [[package]] name = "dioxus-fullstack" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" +source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" dependencies = [ "base64 0.22.1", "bytes", @@ -1198,7 +1198,7 @@ dependencies = [ [[package]] name = "dioxus-hooks" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" +source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" dependencies = [ "dioxus-core", "dioxus-signals", @@ -1214,7 +1214,7 @@ dependencies = [ [[package]] name = "dioxus-hot-reload" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" +source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" dependencies = [ "dioxus-cli-config", "dioxus-core", @@ -1234,7 +1234,7 @@ dependencies = [ [[package]] name = "dioxus-html" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" +source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" dependencies = [ "async-trait", "dioxus-core", @@ -1262,7 +1262,7 @@ dependencies = [ [[package]] name = "dioxus-html-internal-macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" +source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" dependencies = [ "convert_case 0.6.0", "proc-macro2", @@ -1273,7 +1273,7 @@ dependencies = [ [[package]] name = "dioxus-interpreter-js" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" +source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" dependencies = [ "dioxus-core", "dioxus-html", @@ -1290,7 +1290,7 @@ dependencies = [ [[package]] name = "dioxus-lib" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" +source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" dependencies = [ "dioxus-config-macro", "dioxus-core", @@ -1304,7 +1304,7 @@ dependencies = [ [[package]] name = "dioxus-liveview" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" +source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" dependencies = [ "axum", "dioxus-cli-config", @@ -1363,7 +1363,7 @@ dependencies = [ [[package]] name = "dioxus-router" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" +source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" dependencies = [ "dioxus-cli-config", "dioxus-fullstack", @@ -1383,7 +1383,7 @@ dependencies = [ [[package]] name = "dioxus-router-macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" +source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" dependencies = [ "proc-macro2", "quote", @@ -1394,7 +1394,7 @@ dependencies = [ [[package]] name = "dioxus-rsx" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" +source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" dependencies = [ "dioxus-core", "internment", @@ -1470,7 +1470,7 @@ dependencies = [ [[package]] name = "dioxus-signals" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" +source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" dependencies = [ "dioxus-core", "futures-channel", @@ -1486,7 +1486,7 @@ dependencies = [ [[package]] name = "dioxus-ssr" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" +source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" dependencies = [ "askama_escape", "async-trait", @@ -1505,7 +1505,7 @@ dependencies = [ [[package]] name = "dioxus-static-site-generation" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" +source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" dependencies = [ "dioxus-fullstack", "dioxus-lib", @@ -1517,7 +1517,7 @@ dependencies = [ [[package]] name = "dioxus-web" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" +source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" dependencies = [ "ciborium", "console_error_panic_hook", @@ -1596,7 +1596,7 @@ dependencies = [ [[package]] name = "dioxus_server_macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" +source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" dependencies = [ "convert_case 0.6.0", "proc-macro2", @@ -2130,7 +2130,7 @@ dependencies = [ [[package]] name = "generational-box" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" +source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" dependencies = [ "parking_lot", ] @@ -3100,7 +3100,7 @@ dependencies = [ [[package]] name = "lazy-js-bundle" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#2f49a896386be771acfdbf5fe02a7ba5673eb77f" +source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" [[package]] name = "lazy_static" @@ -3110,9 +3110,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.155" +version = "0.2.156" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "a5f43f184355eefb8d17fc948dbecf6c13be3c141f20d834ae842193a448c72a" [[package]] name = "libgit2-sys" @@ -3240,7 +3240,7 @@ dependencies = [ [[package]] name = "manganis" version = "0.3.0-alpha.1" -source = "git+https://github.com/DioxusLabs/manganis?branch=jk/drop-remote-support#db4777c7415b9b4a8b1dbf1ce164cb61ba425eca" +source = "git+https://github.com/DioxusLabs/manganis#b5b14cc7ecb6406eb3ebd29bff9a69e1bd185473" dependencies = [ "manganis-macro", ] @@ -3248,7 +3248,7 @@ dependencies = [ [[package]] name = "manganis-common" version = "0.3.0-alpha.1" -source = "git+https://github.com/DioxusLabs/manganis?branch=jk/drop-remote-support#db4777c7415b9b4a8b1dbf1ce164cb61ba425eca" +source = "git+https://github.com/DioxusLabs/manganis#b5b14cc7ecb6406eb3ebd29bff9a69e1bd185473" dependencies = [ "anyhow", "base64 0.21.7", @@ -3264,7 +3264,7 @@ dependencies = [ [[package]] name = "manganis-macro" version = "0.3.0-alpha.1" -source = "git+https://github.com/DioxusLabs/manganis?branch=jk/drop-remote-support#db4777c7415b9b4a8b1dbf1ce164cb61ba425eca" +source = "git+https://github.com/DioxusLabs/manganis#b5b14cc7ecb6406eb3ebd29bff9a69e1bd185473" dependencies = [ "manganis-common", "proc-macro2", @@ -4616,9 +4616,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.207" +version = "1.0.208" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5665e14a49a4ea1b91029ba7d3bca9f299e1f7cfa194388ccc20f14743e784f2" +checksum = "cff085d2cb684faa248efb494c39b68e522822ac0de72ccf08109abde717cfb2" dependencies = [ "serde_derive", ] @@ -4636,9 +4636,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.207" +version = "1.0.208" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6aea2634c86b0e8ef2cfdc0c340baede54ec27b1e46febd7f80dffb2aa44a00e" +checksum = "24008e81ff7613ed8e5ba0cfaf24e2c2f1e5b8a0495711e44fcd4882fca62bcf" dependencies = [ "proc-macro2", "quote", @@ -4647,9 +4647,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.124" +version = "1.0.125" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66ad62847a56b3dba58cc891acd13884b9c61138d330c0d7b6181713d4fce38d" +checksum = "83c8e735a073ccf5be70aa8066aa984eaf2fa000db6c8d0100ae605b366d31ed" dependencies = [ "itoa 1.0.11", "memchr", diff --git a/Cargo.toml b/Cargo.toml index 419cdea90..1a042df0c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -97,9 +97,9 @@ dioxus-hot-reload = { git = "https://github.com/dioxuslabs/dioxus" } dioxus_server_macro = { git = "https://github.com/dioxuslabs/dioxus" } dioxus-fullstack = { git = "https://github.com/dioxuslabs/dioxus" } -manganis = { git = "https://github.com/DioxusLabs/manganis", branch = "jk/drop-remote-support" } -manganis-common = { git = "https://github.com/DioxusLabs/manganis", branch = "jk/drop-remote-support" } -manganis-macro = { git = "https://github.com/DioxusLabs/manganis", branch = "jk/drop-remote-support" } +manganis = { git = "https://github.com/DioxusLabs/manganis" } +manganis-common = { git = "https://github.com/DioxusLabs/manganis" } +manganis-macro = { git = "https://github.com/DioxusLabs/manganis" } [profile.release] lto = true diff --git a/docs-src/0.5/SUMMARY.md b/docs-src/0.5/SUMMARY.md index 70a49daaf..042435100 100644 --- a/docs-src/0.5/SUMMARY.md +++ b/docs-src/0.5/SUMMARY.md @@ -13,6 +13,7 @@ --- - [Reference](reference/index.md) - [Reactivity](reference/reactivity.md) + - [Moving Around State](reference/moving_around_state.md) - [RSX](reference/rsx.md) - [Components](reference/components.md) - [Props](reference/component_props.md) diff --git a/docs-src/0.5/en/reference/moving_around_state.md b/docs-src/0.5/en/reference/moving_around_state.md new file mode 100644 index 000000000..67b096a13 --- /dev/null +++ b/docs-src/0.5/en/reference/moving_around_state.md @@ -0,0 +1,54 @@ +# Moving Around State + +As you create signals and derived state in your app, you will need to move around that state between components. Dioxus provides three different ways to pass around state: + +## Passing props + +You can pass your values through component [props](./component_props.md). This should be your default when passing around state. It is the most explicit and local to your component. Use this until it gets annoying to pass around the value: + +```rust +{{#include src/doc_examples/moving_state_around.rs:PassingProps}} +``` + +```inject-dioxus +DemoFrame { + moving_state_around::PassingProps {} +} +``` + + +## Passing context + +If you need a slightly more powerful way to pass around state, you can use the context API. + +The context API lets you pass state from a parent component to all children. This is useful if you want to share state between many components. You can insert a unique type into the context with the [`use_context_provider`](https://docs.rs/dioxus-hooks/latest/dioxus_hooks/fn.use_context_provider.html) hook in the parent component. Then you can access the context in any child component with the [`use_context`](https://docs.rs/dioxus-hooks/latest/dioxus_hooks/fn.use_context.html) hook. + +```rust +{{#include src/doc_examples/moving_state_around.rs:PassingContext}} +``` + +```inject-dioxus +DemoFrame { + moving_state_around::PassingContext {} +} +``` + +This is slightly less explicit than passing it as a prop, but it is still local to the component. This is really great if you want state that is global to part of your app. It lets you create multiple global-ish states while still making state different when you reuse components. If I create a new `ParentComponent`, it will have a new `MyState`. + +## Using globals + +Finally, if you have truly global state, you can put your state in a `Global` static. This is useful if you want to share state with your whole app: + +```rust +{{#include src/doc_examples/moving_state_around.rs:UsingGlobals}} +``` + +```inject-dioxus +DemoFrame { + moving_state_around::UsingGlobals {} +} +``` + +Global state can be very ergonomic if your state is truly global, but you shouldn't use it if you need state to be different for different instances of your component. If I create another `IncrementButton` it will use the same `COUNT`. Libraries should generally avoid this to make components more reusable. + +> Note: Even though it is in a static, `COUNT` will be different for each app instance so you don't need to worry about state mangling when multiple instances of your app are running on the server diff --git a/public/tailwind.css b/public/tailwind.css index c9fde5b5d..876647687 100644 --- a/public/tailwind.css +++ b/public/tailwind.css @@ -902,6 +902,10 @@ video { height: 1rem; } +.h-40 { + height: 10rem; +} + .h-5 { height: 1.25rem; } diff --git a/src/doc_examples/mod.rs b/src/doc_examples/mod.rs index d04bc4eea..f2da0b89f 100644 --- a/src/doc_examples/mod.rs +++ b/src/doc_examples/mod.rs @@ -40,6 +40,8 @@ pub mod input_controlled; #[cfg(not(feature = "doc_test"))] pub mod input_uncontrolled; #[cfg(not(feature = "doc_test"))] +pub mod moving_state_around; +#[cfg(not(feature = "doc_test"))] pub mod reactivity; #[cfg(not(feature = "doc_test"))] pub mod readme; diff --git a/src/doc_examples/moving_state_around.rs b/src/doc_examples/moving_state_around.rs new file mode 100644 index 000000000..eaf9a9dfe --- /dev/null +++ b/src/doc_examples/moving_state_around.rs @@ -0,0 +1,95 @@ +use dioxus::prelude::*; + +pub use globals::ParentComponent as UsingGlobals; +pub use passing_context::ParentComponent as PassingContext; +pub use passing_props::ParentComponent as PassingProps; + +mod passing_props { + use super::*; + + // ANCHOR: PassingProps + pub fn ParentComponent() -> Element { + let count = use_signal(|| 0); + + rsx! { + "Count is {count}" + IncrementButton { + count + } + } + } + + #[component] + fn IncrementButton(mut count: Signal) -> Element { + rsx! { + button { + onclick: move |_| count += 1, + "Increment" + } + } + } + // ANCHOR_END: PassingProps +} + +mod passing_context { + use dioxus::prelude::*; + // ANCHOR: PassingContext + #[derive(Clone, Copy)] + struct MyState { + count: Signal, + } + + pub fn ParentComponent() -> Element { + // Use context provider provides an unique type to all children of this component + let state = use_context_provider(|| MyState { + count: Signal::new(0), + }); + + rsx! { + "Count is {state.count}" + // IncrementButton will have access to the count without explicitly passing it through props + IncrementButton {} + } + } + + #[component] + fn IncrementButton() -> Element { + // Use context gets the value from a parent component + let mut count = use_context::().count; + + rsx! { + button { + onclick: move |_| count += 1, + "Increment" + } + } + } + // ANCHOR_END: PassingContext +} + +mod globals { + use super::*; + + // ANCHOR: UsingGlobals + use dioxus::prelude::*; + // Globals are created the first time you access them with the closure you pass to Global::new + static COUNT: GlobalSignal = Global::new(|| 0); + + pub fn ParentComponent() -> Element { + rsx! { + "Count is {COUNT}" + IncrementButton {} + } + } + + fn IncrementButton() -> Element { + rsx! { + button { + // You don't need to pass anything around or get anything out of the context because COUNT is global + onclick: move |_| *COUNT.write() += 1, + "Increment" + } + } + } + // ANCHOR_END: UsingGlobals +} From 3778ec031ab8c045578876210a37c86cc3797705 Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Fri, 16 Aug 2024 16:46:51 -0700 Subject: [PATCH 20/35] One state reference to rule them all --- docs-src/0.5/SUMMARY.md | 3 +- .../{reactivity.md => managing_state.md} | 71 ++++++++++++++++--- .../0.5/en/reference/moving_around_state.md | 54 -------------- 3 files changed, 64 insertions(+), 64 deletions(-) rename docs-src/0.5/en/reference/{reactivity.md => managing_state.md} (61%) delete mode 100644 docs-src/0.5/en/reference/moving_around_state.md diff --git a/docs-src/0.5/SUMMARY.md b/docs-src/0.5/SUMMARY.md index 042435100..7c3af87b6 100644 --- a/docs-src/0.5/SUMMARY.md +++ b/docs-src/0.5/SUMMARY.md @@ -12,8 +12,7 @@ --- - [Reference](reference/index.md) - - [Reactivity](reference/reactivity.md) - - [Moving Around State](reference/moving_around_state.md) + - [Managing State](reference/managing_state.md) - [RSX](reference/rsx.md) - [Components](reference/components.md) - [Props](reference/component_props.md) diff --git a/docs-src/0.5/en/reference/reactivity.md b/docs-src/0.5/en/reference/managing_state.md similarity index 61% rename from docs-src/0.5/en/reference/reactivity.md rename to docs-src/0.5/en/reference/managing_state.md index 5c03698c4..5ad46f49e 100644 --- a/docs-src/0.5/en/reference/reactivity.md +++ b/docs-src/0.5/en/reference/managing_state.md @@ -1,8 +1,8 @@ -# Reactivity +# Managing State In Dioxus, your app is defined as a function of the current state. As the state changes, the parts of your app that depend on that state will automatically re-run. Reactivity automatically tracks state and updates derived state in your application. -## Mutable State +## Creating State You can create mutable state in Dioxus with Signals. Signals are tracked values that automatically update your app when you change them. They form the skeleton of your app's state from which you can derive other state. Signals are often driven directly from user input through event handlers or async tasks. @@ -24,7 +24,7 @@ Finally, you can set the value of the signal with the `.set()` method or get a m {{#include src/doc_examples/reactivity.rs:signal_write}} ``` -## Reactive Scopes +### Reactive Scopes The simplest reactive primitive in Dioxus is the `use_effect` hook. It creates a closure that is run any time a tracked value that is run inside the closure changes. @@ -41,7 +41,7 @@ DemoFrame { } ``` -## Derived State +### Derived State `use_memo` is a reactive primitive that lets you derive state from any tracked value. It takes a closure that computes the new state and returns a tracked value with the current state of the memo. Any time a dependency of the memo changes, the memo will rerun. @@ -57,7 +57,7 @@ DemoFrame { } ``` -## Derived Async State +### Derived Async State `use_resource` is a reactive primitive that lets you derive state from any async closure. It takes an async closure that computes the new state and returns a tracked value with the current state of the resource. Any time a dependency of the resource changes, the resource will rerun. @@ -73,7 +73,7 @@ DemoFrame { } ``` -## Derived UI +### Derived UI Components are functions that return some UI. They memorize the output of the function just like memos. Components keep track of any dependencies you read inside the component and rerun when those dependencies change. @@ -87,7 +87,7 @@ DemoFrame { } ``` -## Working with Untracked State +### Working with Untracked State Most of the state in your app will be tracked values. All built in hooks return tracked values, and we encourage custom hooks to do the same. However, there are times when you need to work with untracked state. For example, you may receive a raw untracked value in props. When you read an untracked value inside a reactive context, it will not subscribe to the value: @@ -113,7 +113,7 @@ DemoFrame { } ``` -## Making Props Reactive +### Making Props Reactive To avoid loosing reactivity with props, we recommend you wrap any props you want to track in a `ReadOnlySignal`. Dioxus will automatically convert `T` into `ReadOnlySignal` when you pass props to the component. This will ensure your props are tracked and rerun any state you derive in the component: @@ -126,3 +126,58 @@ DemoFrame { reactivity::MakingPropsReactiveDemo {} } ``` + +## Moving Around State + +As you create signals and derived state in your app, you will need to move around that state between components. Dioxus provides three different ways to pass around state: + +### Passing props + +You can pass your values through component [props](./component_props.md). This should be your default when passing around state. It is the most explicit and local to your component. Use this until it gets annoying to pass around the value: + +```rust +{{#include src/doc_examples/moving_state_around.rs:PassingProps}} +``` + +```inject-dioxus +DemoFrame { + moving_state_around::PassingProps {} +} +``` + + +### Passing context + +If you need a slightly more powerful way to pass around state, you can use the context API. + +The context API lets you pass state from a parent component to all children. This is useful if you want to share state between many components. You can insert a unique type into the context with the [`use_context_provider`](https://docs.rs/dioxus-hooks/latest/dioxus_hooks/fn.use_context_provider.html) hook in the parent component. Then you can access the context in any child component with the [`use_context`](https://docs.rs/dioxus-hooks/latest/dioxus_hooks/fn.use_context.html) hook. + +```rust +{{#include src/doc_examples/moving_state_around.rs:PassingContext}} +``` + +```inject-dioxus +DemoFrame { + moving_state_around::PassingContext {} +} +``` + +This is slightly less explicit than passing it as a prop, but it is still local to the component. This is really great if you want state that is global to part of your app. It lets you create multiple global-ish states while still making state different when you reuse components. If I create a new `ParentComponent`, it will have a new `MyState`. + +### Using globals + +Finally, if you have truly global state, you can put your state in a `Global` static. This is useful if you want to share state with your whole app: + +```rust +{{#include src/doc_examples/moving_state_around.rs:UsingGlobals}} +``` + +```inject-dioxus +DemoFrame { + moving_state_around::UsingGlobals {} +} +``` + +Global state can be very ergonomic if your state is truly global, but you shouldn't use it if you need state to be different for different instances of your component. If I create another `IncrementButton` it will use the same `COUNT`. Libraries should generally avoid this to make components more reusable. + +> Note: Even though it is in a static, `COUNT` will be different for each app instance so you don't need to worry about state mangling when multiple instances of your app are running on the server diff --git a/docs-src/0.5/en/reference/moving_around_state.md b/docs-src/0.5/en/reference/moving_around_state.md deleted file mode 100644 index 67b096a13..000000000 --- a/docs-src/0.5/en/reference/moving_around_state.md +++ /dev/null @@ -1,54 +0,0 @@ -# Moving Around State - -As you create signals and derived state in your app, you will need to move around that state between components. Dioxus provides three different ways to pass around state: - -## Passing props - -You can pass your values through component [props](./component_props.md). This should be your default when passing around state. It is the most explicit and local to your component. Use this until it gets annoying to pass around the value: - -```rust -{{#include src/doc_examples/moving_state_around.rs:PassingProps}} -``` - -```inject-dioxus -DemoFrame { - moving_state_around::PassingProps {} -} -``` - - -## Passing context - -If you need a slightly more powerful way to pass around state, you can use the context API. - -The context API lets you pass state from a parent component to all children. This is useful if you want to share state between many components. You can insert a unique type into the context with the [`use_context_provider`](https://docs.rs/dioxus-hooks/latest/dioxus_hooks/fn.use_context_provider.html) hook in the parent component. Then you can access the context in any child component with the [`use_context`](https://docs.rs/dioxus-hooks/latest/dioxus_hooks/fn.use_context.html) hook. - -```rust -{{#include src/doc_examples/moving_state_around.rs:PassingContext}} -``` - -```inject-dioxus -DemoFrame { - moving_state_around::PassingContext {} -} -``` - -This is slightly less explicit than passing it as a prop, but it is still local to the component. This is really great if you want state that is global to part of your app. It lets you create multiple global-ish states while still making state different when you reuse components. If I create a new `ParentComponent`, it will have a new `MyState`. - -## Using globals - -Finally, if you have truly global state, you can put your state in a `Global` static. This is useful if you want to share state with your whole app: - -```rust -{{#include src/doc_examples/moving_state_around.rs:UsingGlobals}} -``` - -```inject-dioxus -DemoFrame { - moving_state_around::UsingGlobals {} -} -``` - -Global state can be very ergonomic if your state is truly global, but you shouldn't use it if you need state to be different for different instances of your component. If I create another `IncrementButton` it will use the same `COUNT`. Libraries should generally avoid this to make components more reusable. - -> Note: Even though it is in a static, `COUNT` will be different for each app instance so you don't need to worry about state mangling when multiple instances of your app are running on the server From d39c2f67155da25a0e44b268f4480c0b7d8ac912 Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Fri, 16 Aug 2024 17:28:02 -0700 Subject: [PATCH 21/35] Start a component lifecycle guide --- docs-src/0.5/SUMMARY.md | 1 + .../0.5/en/reference/component_lifecycle.md | 14 +++++ src/doc_examples/component_lifecycle.rs | 49 +++++++++++++++ src/doc_examples/mod.rs | 59 +++++++++++++++++++ src/doc_examples/reactivity.rs | 54 +---------------- 5 files changed, 124 insertions(+), 53 deletions(-) create mode 100644 docs-src/0.5/en/reference/component_lifecycle.md create mode 100644 src/doc_examples/component_lifecycle.rs diff --git a/docs-src/0.5/SUMMARY.md b/docs-src/0.5/SUMMARY.md index 7c3af87b6..62df3c3f3 100644 --- a/docs-src/0.5/SUMMARY.md +++ b/docs-src/0.5/SUMMARY.md @@ -13,6 +13,7 @@ --- - [Reference](reference/index.md) - [Managing State](reference/managing_state.md) + - [Component Lifecycle](reference/component_lifecycle.md) - [RSX](reference/rsx.md) - [Components](reference/components.md) - [Props](reference/component_props.md) diff --git a/docs-src/0.5/en/reference/component_lifecycle.md b/docs-src/0.5/en/reference/component_lifecycle.md new file mode 100644 index 000000000..b348afdcf --- /dev/null +++ b/docs-src/0.5/en/reference/component_lifecycle.md @@ -0,0 +1,14 @@ +# Component Lifecycle + +## Initializing State with `use_hook` + +`use_hook` lets you create new state for your component. The closure you pass to `use_hook` will be called once the first time the component is rendered. Every time the component is re-rendered, the value that was created the first run will be re-used. + +```rust, no_run +{{#include src/doc_examples/component_lifecycle.rs:use_hook}} +``` +```inject-dioxus +DemoFrame { + component_lifecycle::UseHookDemo {} +} +``` diff --git a/src/doc_examples/component_lifecycle.rs b/src/doc_examples/component_lifecycle.rs new file mode 100644 index 000000000..0a051ca8b --- /dev/null +++ b/src/doc_examples/component_lifecycle.rs @@ -0,0 +1,49 @@ +#![allow(non_snake_case)] +use dioxus::prelude::*; + +pub use use_hook::UseHookDemo; +use super::{log, ComponentWithLogs}; + +mod use_hook { + use super::*; + + // ANCHOR: use_hook + fn UseHook() -> Element { + // The closure that is passed to use_hook will be called once the first time the component is rendered + let random_number = use_hook(|| { + let new_random_number = js_sys::Math::random(); + + log!("{new_random_number}"); + + new_random_number + }); + + rsx! { + div { "Random {random_number}" } + } + } + // ANCHOR_END: use_hook + + fn FakePage() -> Element { + let mut uuid = use_signal(|| 0); + rsx! { + button { + onclick: move |_| uuid += 1, + "🔄" + } + {std::iter::once(rsx!{ + UseHook { + key: "{uuid}" + } + })} + } + } + + pub fn UseHookDemo() -> Element { + rsx! { + ComponentWithLogs { + FakePage {} + } + } + } +} diff --git a/src/doc_examples/mod.rs b/src/doc_examples/mod.rs index f2da0b89f..36111cb30 100644 --- a/src/doc_examples/mod.rs +++ b/src/doc_examples/mod.rs @@ -1,5 +1,62 @@ #![allow(unused)] +use dioxus::prelude::*; + +#[component] +pub fn TwoPanelComponent(left: Element, right: Element) -> Element { + rsx! { + div { class: "w-full h-40 overflow-y-hidden flex flex-row justify-between", + div { class: "w-1/2 h-full", {left} } + div { class: "w-1/2 h-full", {right} } + } + } +} + +#[derive(Default)] +struct LogState { + logs: Vec, +} + +fn use_provide_log_state() -> Signal { + use_context_provider(|| Signal::new(LogState::default())) +} + +pub fn log(message: impl ToString) { + consume_context::>() + .write() + .logs + .insert(0, message.to_string()); +} + +#[macro_export] +macro_rules! log { + ($($arg:tt)*) => { + log(format!($($arg)*)) + } +} + +#[component] +pub fn ComponentWithLogs(children: Element) -> Element { + let logs = use_provide_log_state(); + + rsx! { + TwoPanelComponent { + left: children, + right: rsx! { + div { class: "p-2 text-center border-gray-200 dark:border-gray-800", + "Logs" + } + for log in logs.read().logs.iter() { + div { class: "p-2 border-b border-gray-200 dark:border-gray-800", + "{log}" + } + } + } + } + } +} + + // Include any examples we compile into the docsite #[cfg(not(feature = "doc_test"))] pub mod boolean_attribute; @@ -53,6 +110,8 @@ pub mod rsx_overview; pub mod spawn; #[cfg(not(feature = "doc_test"))] pub mod use_resource; +#[cfg(not(feature = "doc_test"))] +pub mod component_lifecycle; // Check any examples we don't compile into the docs #[cfg(feature = "doc_test")] diff --git a/src/doc_examples/reactivity.rs b/src/doc_examples/reactivity.rs index adf29f1b6..4e970032b 100644 --- a/src/doc_examples/reactivity.rs +++ b/src/doc_examples/reactivity.rs @@ -1,5 +1,6 @@ use dioxus::prelude::*; +use super::{TwoPanelComponent, log, ComponentWithLogs, LogState}; pub use component::ComponentDemo; pub use effect::EffectDemo; pub use memo::MemoDemo; @@ -8,59 +9,6 @@ pub use non_reactive_state::NonReactiveDemo; pub use non_reactive_state::UseReactiveDemo; pub use resource::ResourceDemo; -#[derive(Default)] -struct LogState { - logs: Vec, -} - -fn use_provide_log_state() -> Signal { - use_context_provider(|| Signal::new(LogState::default())) -} - -fn log(message: impl ToString) { - consume_context::>() - .write() - .logs - .insert(0, message.to_string()); -} - -macro_rules! log { - ($($arg:tt)*) => { - log(format!($($arg)*)) - } -} - -#[component] -fn ComponentWithLogs(children: Element) -> Element { - let logs = use_provide_log_state(); - - rsx! { - TwoPanelComponent { - left: children, - right: rsx! { - div { class: "p-2 text-center border-gray-200 dark:border-gray-800", - "Logs" - } - for log in logs.read().logs.iter() { - div { class: "p-2 border-b border-gray-200 dark:border-gray-800", - "{log}" - } - } - } - } - } -} - -#[component] -fn TwoPanelComponent(left: Element, right: Element) -> Element { - rsx! { - div { class: "w-full h-40 overflow-y-hidden flex flex-row justify-between", - div { class: "w-1/2 h-full", {left} } - div { class: "w-1/2 h-full", {right} } - } - } -} - mod signal { use super::*; From 4b60f3b64ca9de1a694f530c40e2d9b4a7d41ac1 Mon Sep 17 00:00:00 2001 From: Jonathan Kelley Date: Sat, 17 Aug 2024 01:14:45 -0700 Subject: [PATCH 22/35] refactor guide a bit --- .cargo/config.toml | 8 + .vscode/settings.json | 4 +- Cargo.lock | 518 +++++++++++------- Cargo.toml | 70 ++- Dioxus.toml | 1 + build.rs | 24 + docs-src/0.5/SUMMARY.md | 36 +- docs-src/0.5/en/essentials/breaking/index.md | 0 docs-src/0.5/en/essentials/index.md | 1 + docs-src/0.5/en/essentials/lifecycle/index.md | 0 docs-src/0.5/en/essentials/state/index.md | 0 docs-src/0.5/en/essentials/structure/index.md | 0 docs-src/0.5/en/getting_started/features.md | 1 + docs-src/0.5/en/getting_started/index.md | 2 +- docs-src/0.5/en/guide/assets.md | 0 docs-src/0.5/en/guide/backend.md | 0 docs-src/0.5/en/guide/component.md | 0 docs-src/0.5/en/guide/deploy.md | 0 docs-src/0.5/en/guide/fetching.md | 0 docs-src/0.5/en/guide/new_app.md | 0 docs-src/0.5/en/guide/next_steps.md | 0 docs-src/0.5/en/guide/routing.md | 0 docs-src/0.5/en/guide/tooling.md | 0 src/components/homepage.rs | 58 -- src/docs/.gitignore | 1 + src/docs/readme.md | 1 + src/main.rs | 6 +- 27 files changed, 434 insertions(+), 297 deletions(-) create mode 100644 build.rs create mode 100644 docs-src/0.5/en/essentials/breaking/index.md create mode 100644 docs-src/0.5/en/essentials/index.md create mode 100644 docs-src/0.5/en/essentials/lifecycle/index.md create mode 100644 docs-src/0.5/en/essentials/state/index.md create mode 100644 docs-src/0.5/en/essentials/structure/index.md create mode 100644 docs-src/0.5/en/getting_started/features.md create mode 100644 docs-src/0.5/en/guide/assets.md create mode 100644 docs-src/0.5/en/guide/backend.md create mode 100644 docs-src/0.5/en/guide/component.md create mode 100644 docs-src/0.5/en/guide/deploy.md create mode 100644 docs-src/0.5/en/guide/fetching.md create mode 100644 docs-src/0.5/en/guide/new_app.md create mode 100644 docs-src/0.5/en/guide/next_steps.md create mode 100644 docs-src/0.5/en/guide/routing.md create mode 100644 docs-src/0.5/en/guide/tooling.md create mode 100644 src/docs/.gitignore create mode 100644 src/docs/readme.md diff --git a/.cargo/config.toml b/.cargo/config.toml index 251dcad15..b39a198c9 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -5,3 +5,11 @@ [env] MANGANIS_SUPPORT = "true" +[profile.dev] +# rustflags = ["-Cdebuginfo=none", "-Cstrip=debuginfo"] +# opt-level = "z" +opt-level = "z" # Optimization level. +debug = false # Include debug info. +strip = "debuginfo" # Removes symbols or debuginfo. +# split-debuginfo = '...' # Debug info splitting behavior. + diff --git a/.vscode/settings.json b/.vscode/settings.json index fb38e592a..d19413e23 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,5 +2,7 @@ "[html]": { // so it doesn't break code blocks "editor.formatOnSave": false - } + }, + "editor.formatOnSave": false + // "files.autoSaveDelay": 10 } diff --git a/Cargo.lock b/Cargo.lock index a43686587..404b6454a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -471,6 +471,15 @@ dependencies = [ "generic-array", ] +[[package]] +name = "block2" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" +dependencies = [ + "objc2", +] + [[package]] name = "blocking" version = "1.6.1" @@ -484,6 +493,12 @@ dependencies = [ "piper", ] +[[package]] +name = "borrow-or-share" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3eeab4423108c5d7c744f4d234de88d18d636100093ae04caf4825134b9c3a32" + [[package]] name = "built" version = "0.7.3" @@ -673,14 +688,14 @@ checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15" [[package]] name = "cocoa" -version = "0.25.0" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c" +checksum = "f79398230a6e2c08f5c9760610eb6924b52aa9e7950a619602baba59dcbbdbb2" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", "block", "cocoa-foundation", - "core-foundation", + "core-foundation 0.10.0", "core-graphics", "foreign-types 0.5.0", "libc", @@ -689,13 +704,13 @@ dependencies = [ [[package]] name = "cocoa-foundation" -version = "0.1.2" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7" +checksum = "e14045fb83be07b5acf1c0884b2180461635b433455fa35d1cd6f17f1450679d" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", "block", - "core-foundation", + "core-foundation 0.10.0", "core-graphics-types", "libc", "objc", @@ -803,6 +818,16 @@ dependencies = [ "libc", ] +[[package]] +name = "core-foundation" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "core-foundation-sys" version = "0.8.7" @@ -811,12 +836,12 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "core-graphics" -version = "0.23.2" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" +checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1" dependencies = [ - "bitflags 1.3.2", - "core-foundation", + "bitflags 2.6.0", + "core-foundation 0.10.0", "core-graphics-types", "foreign-types 0.5.0", "libc", @@ -824,12 +849,12 @@ dependencies = [ [[package]] name = "core-graphics-types" -version = "0.1.3" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" +checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" dependencies = [ - "bitflags 1.3.2", - "core-foundation", + "bitflags 2.6.0", + "core-foundation 0.10.0", "libc", ] @@ -1063,7 +1088,7 @@ dependencies = [ [[package]] name = "dioxus" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" dependencies = [ "dioxus-config-macro", "dioxus-core", @@ -1079,10 +1104,23 @@ dependencies = [ "manganis", ] +[[package]] +name = "dioxus-autofmt" +version = "0.6.0-alpha.2" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" +dependencies = [ + "dioxus-rsx", + "prettyplease", + "proc-macro2", + "quote", + "serde", + "syn 2.0.74", +] + [[package]] name = "dioxus-cli-config" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" dependencies = [ "built", "clap", @@ -1095,7 +1133,7 @@ dependencies = [ [[package]] name = "dioxus-config-macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" dependencies = [ "proc-macro2", "quote", @@ -1104,7 +1142,7 @@ dependencies = [ [[package]] name = "dioxus-core" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" dependencies = [ "const_format", "futures-channel", @@ -1124,7 +1162,7 @@ dependencies = [ [[package]] name = "dioxus-core-macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" dependencies = [ "convert_case 0.6.0", "dioxus-rsx", @@ -1137,11 +1175,11 @@ dependencies = [ [[package]] name = "dioxus-desktop" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" dependencies = [ "async-trait", "cocoa", - "core-foundation", + "core-foundation 0.10.0", "dioxus-cli-config", "dioxus-core", "dioxus-hooks", @@ -1176,7 +1214,7 @@ dependencies = [ [[package]] name = "dioxus-fullstack" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" dependencies = [ "base64 0.22.1", "bytes", @@ -1198,7 +1236,7 @@ dependencies = [ [[package]] name = "dioxus-hooks" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" dependencies = [ "dioxus-core", "dioxus-signals", @@ -1214,7 +1252,7 @@ dependencies = [ [[package]] name = "dioxus-hot-reload" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" dependencies = [ "dioxus-cli-config", "dioxus-core", @@ -1234,7 +1272,7 @@ dependencies = [ [[package]] name = "dioxus-html" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" dependencies = [ "async-trait", "dioxus-core", @@ -1262,7 +1300,7 @@ dependencies = [ [[package]] name = "dioxus-html-internal-macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" dependencies = [ "convert_case 0.6.0", "proc-macro2", @@ -1273,7 +1311,7 @@ dependencies = [ [[package]] name = "dioxus-interpreter-js" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" dependencies = [ "dioxus-core", "dioxus-html", @@ -1290,7 +1328,7 @@ dependencies = [ [[package]] name = "dioxus-lib" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" dependencies = [ "dioxus-config-macro", "dioxus-core", @@ -1304,7 +1342,7 @@ dependencies = [ [[package]] name = "dioxus-liveview" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" dependencies = [ "axum", "dioxus-cli-config", @@ -1349,7 +1387,7 @@ dependencies = [ [[package]] name = "dioxus-playground" version = "0.1.0" -source = "git+https://github.com/DioxusLabs/playground#67e8fa8214b2227d5e8fc05fa5f8c3c91ac5dc56" +source = "git+https://github.com/DioxusLabs/playground?branch=jk/update-manganis#fdb11c155e13f3ed36834652d34370735b0492c5" dependencies = [ "dioxus", "dioxus-logger", @@ -1363,7 +1401,7 @@ dependencies = [ [[package]] name = "dioxus-router" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" dependencies = [ "dioxus-cli-config", "dioxus-fullstack", @@ -1383,7 +1421,7 @@ dependencies = [ [[package]] name = "dioxus-router-macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" dependencies = [ "proc-macro2", "quote", @@ -1394,7 +1432,7 @@ dependencies = [ [[package]] name = "dioxus-rsx" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" dependencies = [ "dioxus-core", "internment", @@ -1470,7 +1508,7 @@ dependencies = [ [[package]] name = "dioxus-signals" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" dependencies = [ "dioxus-core", "futures-channel", @@ -1486,7 +1524,7 @@ dependencies = [ [[package]] name = "dioxus-ssr" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" dependencies = [ "askama_escape", "async-trait", @@ -1505,7 +1543,7 @@ dependencies = [ [[package]] name = "dioxus-static-site-generation" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" dependencies = [ "dioxus-fullstack", "dioxus-lib", @@ -1517,7 +1555,7 @@ dependencies = [ [[package]] name = "dioxus-web" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" dependencies = [ "ciborium", "console_error_panic_hook", @@ -1572,9 +1610,11 @@ dependencies = [ "include_dir", "js-sys", "log", + "mdbook-gen", "mdbook-shared", "once_cell", "pretty_assertions", + "prettyplease", "rand 0.8.5", "reqwest", "serde", @@ -1596,7 +1636,7 @@ dependencies = [ [[package]] name = "dioxus_server_macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" dependencies = [ "convert_case 0.6.0", "proc-macro2", @@ -1605,6 +1645,27 @@ dependencies = [ "syn 2.0.74", ] +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + [[package]] name = "dispatch" version = "0.2.0" @@ -1835,6 +1896,17 @@ dependencies = [ "miniz_oxide", ] +[[package]] +name = "fluent-uri" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d77395429e0ce700a8378be6625660a4aa00ca5dc5cd1527193ebd0946cc9b3" +dependencies = [ + "borrow-or-share", + "ref-cast", + "serde", +] + [[package]] name = "fnv" version = "1.0.7" @@ -2130,7 +2202,7 @@ dependencies = [ [[package]] name = "generational-box" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" dependencies = [ "parking_lot", ] @@ -2278,9 +2350,9 @@ dependencies = [ [[package]] name = "global-hotkey" -version = "0.5.5" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b436093d1598b05e3b7fddc097b2bad32763f53a1beb25ab6f9718c6a60acd09" +checksum = "298a7667d6011efe6b35673c6b29001b88677ae1b3d6b2feccfbff4b44892866" dependencies = [ "bitflags 2.6.0", "cocoa", @@ -2289,7 +2361,7 @@ dependencies = [ "objc", "once_cell", "thiserror", - "windows-sys 0.52.0", + "windows-sys 0.59.0", "x11-dl", ] @@ -2948,9 +3020,9 @@ dependencies = [ [[package]] name = "infer" -version = "0.11.0" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6c16b11a665b26aeeb9b1d7f954cdeb034be38dd00adab4f2ae921a8fee804" +checksum = "bc150e5ce2330295b8616ce0e3f53250e53af31759a9dbedad1621ba29151847" dependencies = [ "cfb", ] @@ -3100,7 +3172,7 @@ dependencies = [ [[package]] name = "lazy-js-bundle" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#b47a6cf83e6de005b9d94bd2109e7656d5af559b" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" [[package]] name = "lazy_static" @@ -3126,6 +3198,16 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.6.0", + "libc", +] + [[package]] name = "libxdo" version = "0.6.0" @@ -3239,39 +3321,44 @@ dependencies = [ [[package]] name = "manganis" -version = "0.3.0-alpha.1" -source = "git+https://github.com/DioxusLabs/manganis#b5b14cc7ecb6406eb3ebd29bff9a69e1bd185473" +version = "0.6.0-alpha.2" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" dependencies = [ + "core-foundation 0.9.4", + "dirs", + "dunce", + "infer", + "manganis-common", "manganis-macro", + "once_cell", ] [[package]] name = "manganis-common" -version = "0.3.0-alpha.1" -source = "git+https://github.com/DioxusLabs/manganis#b5b14cc7ecb6406eb3ebd29bff9a69e1bd185473" +version = "0.6.0-alpha.2" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" dependencies = [ "anyhow", - "base64 0.21.7", + "base64 0.22.1", "built", - "home", + "fluent-uri", "infer", + "scratch", "serde", - "toml 0.7.8", - "tracing", - "url", ] [[package]] name = "manganis-macro" -version = "0.3.0-alpha.1" -source = "git+https://github.com/DioxusLabs/manganis#b5b14cc7ecb6406eb3ebd29bff9a69e1bd185473" +version = "0.6.0-alpha.2" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" dependencies = [ + "base64 0.22.1", "manganis-common", "proc-macro2", "quote", + "serde", "serde_json", "syn 2.0.74", - "tracing-subscriber", ] [[package]] @@ -3314,15 +3401,38 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" +[[package]] +name = "mdbook-gen" +version = "0.0.0" +source = "git+https://github.com/dioxuslabs/include_mdbook?branch=jk/build-gen#d7b4fbfc7654ebbd4f14e4326b7d7770d99dc340" +dependencies = [ + "anyhow", + "convert_case 0.6.0", + "dioxus-autofmt", + "dioxus-rsx", + "macro_state", + "mdbook-shared", + "postcard", + "prettyplease", + "proc-macro2", + "pulldown-cmark", + "quote", + "serde", + "serde_json", + "syn 2.0.74", + "syntect", +] + [[package]] name = "mdbook-macro" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/include_mdbook#3f8e2b43a83ab2df1cac45bf8fb4387384442c9c" +source = "git+https://github.com/dioxuslabs/include_mdbook?branch=jk/build-gen#d7b4fbfc7654ebbd4f14e4326b7d7770d99dc340" dependencies = [ "anyhow", "convert_case 0.6.0", "dioxus-rsx", "macro_state", + "mdbook-gen", "mdbook-shared", "postcard", "proc-macro2", @@ -3337,7 +3447,7 @@ dependencies = [ [[package]] name = "mdbook-shared" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/include_mdbook#3f8e2b43a83ab2df1cac45bf8fb4387384442c9c" +source = "git+https://github.com/dioxuslabs/include_mdbook?branch=jk/build-gen#d7b4fbfc7654ebbd4f14e4326b7d7770d99dc340" dependencies = [ "anyhow", "bytes", @@ -3397,7 +3507,7 @@ dependencies = [ [[package]] name = "model" version = "0.1.0" -source = "git+https://github.com/DioxusLabs/playground#67e8fa8214b2227d5e8fc05fa5f8c3c91ac5dc56" +source = "git+https://github.com/DioxusLabs/playground?branch=jk/update-manganis#fdb11c155e13f3ed36834652d34370735b0492c5" dependencies = [ "gloo-net 0.5.0", "serde", @@ -3407,12 +3517,13 @@ dependencies = [ [[package]] name = "muda" -version = "0.11.5" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c47e7625990fc1af2226ea4f34fb2412b03c12639fcb91868581eb3a6893453" +checksum = "86c410a9d21523a819e84881603fbc00331c8001eb899964952046671deddb9c" dependencies = [ "cocoa", "crossbeam-channel", + "dpi", "gtk", "keyboard-types", "libxdo", @@ -3420,7 +3531,7 @@ dependencies = [ "once_cell", "png", "thiserror", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -3442,15 +3553,16 @@ dependencies = [ [[package]] name = "ndk" -version = "0.7.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", "jni-sys", + "log", "ndk-sys", "num_enum", - "raw-window-handle 0.5.2", + "raw-window-handle 0.6.2", "thiserror", ] @@ -3462,9 +3574,9 @@ checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" [[package]] name = "ndk-sys" -version = "0.4.1+23.1.7779620" +version = "0.6.0+11769913" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cf2aae958bd232cac5069850591667ad422d263686d75b52a065f9badeee5a3" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" dependencies = [ "jni-sys", ] @@ -3493,16 +3605,6 @@ version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" -[[package]] -name = "nu-ansi-term" -version = "0.46.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" -dependencies = [ - "overload", - "winapi", -] - [[package]] name = "num-conv" version = "0.1.0" @@ -3530,23 +3632,23 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.5.11" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.5.11" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ - "proc-macro-crate 1.3.1", + "proc-macro-crate 2.0.2", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.74", ] [[package]] @@ -3585,6 +3687,40 @@ dependencies = [ "objc_id", ] +[[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-encode" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7891e71393cd1f227313c9379a26a584ff3d7e6e7159e988851f0934c993f0f8" + +[[package]] +name = "objc2-foundation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" +dependencies = [ + "bitflags 2.6.0", + "block2", + "libc", + "objc2", +] + [[package]] name = "objc_exception" version = "0.1.2" @@ -3684,6 +3820,12 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + [[package]] name = "ordered-stream" version = "0.2.0" @@ -3694,12 +3836,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - [[package]] name = "pango" version = "0.18.3" @@ -4272,6 +4408,37 @@ dependencies = [ "bitflags 2.6.0", ] +[[package]] +name = "redox_users" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" +dependencies = [ + "getrandom 0.2.15", + "libredox", + "thiserror", +] + +[[package]] +name = "ref-cast" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf0a6f84d5f1d581da8b41b47ec8600871962f2a528115b542b362d4b744931" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.74", +] + [[package]] name = "regex" version = "1.10.6" @@ -4537,6 +4704,12 @@ dependencies = [ "tendril", ] +[[package]] +name = "scratch" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3cf7c11c38cb994f3d40e8a8cde3bbd1f72a435e4c49e85d6553d8312306152" + [[package]] name = "security-framework" version = "2.11.1" @@ -4544,7 +4717,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ "bitflags 2.6.0", - "core-foundation", + "core-foundation 0.9.4", "core-foundation-sys", "libc", "security-framework-sys", @@ -5136,7 +5309,7 @@ dependencies = [ [[package]] name = "syntect-html" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/include_mdbook#3f8e2b43a83ab2df1cac45bf8fb4387384442c9c" +source = "git+https://github.com/dioxuslabs/include_mdbook?branch=jk/build-gen#d7b4fbfc7654ebbd4f14e4326b7d7770d99dc340" dependencies = [ "proc-macro2", "quote", @@ -5151,7 +5324,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" dependencies = [ "bitflags 1.3.2", - "core-foundation", + "core-foundation 0.9.4", "system-configuration-sys", ] @@ -5180,17 +5353,18 @@ dependencies = [ [[package]] name = "tao" -version = "0.26.2" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69ebbccb78deb5a36744c079eea2981b4a48ecbbe6b1b2ffbaa528bea3f5e5db" +checksum = "6775bcf3c1da33f848ede9cff5883ed1e45a29f66533ce42ad06c93ae514ed59" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", "cocoa", - "core-foundation", + "core-foundation 0.10.0", "core-graphics", "crossbeam-channel", "dispatch", "dlopen2", + "dpi", "gdkwayland-sys", "gdkx11-sys", "gtk", @@ -5211,7 +5385,8 @@ dependencies = [ "tao-macros", "unicode-segmentation", "url", - "windows 0.54.0", + "windows", + "windows-core 0.58.0", "windows-version", "x11-dl", ] @@ -5587,18 +5762,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", - "valuable", -] - -[[package]] -name = "tracing-log" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" -dependencies = [ - "log", - "once_cell", - "tracing-core", ] [[package]] @@ -5607,12 +5770,9 @@ version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" dependencies = [ - "nu-ansi-term", "sharded-slab", - "smallvec", "thread_local", "tracing-core", - "tracing-log", ] [[package]] @@ -5781,7 +5941,7 @@ checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" [[package]] name = "use-mdbook" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/include_mdbook#3f8e2b43a83ab2df1cac45bf8fb4387384442c9c" +source = "git+https://github.com/dioxuslabs/include_mdbook?branch=jk/build-gen#d7b4fbfc7654ebbd4f14e4326b7d7770d99dc340" dependencies = [ "lazy_static", "mdbook-macro", @@ -5816,12 +5976,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "valuable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" - [[package]] name = "vcpkg" version = "0.2.15" @@ -5995,17 +6149,18 @@ dependencies = [ [[package]] name = "webbrowser" -version = "0.8.15" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db67ae75a9405634f5882791678772c94ff5f16a66535aae186e26aa0841fc8b" +checksum = "425ba64c1e13b1c6e8c5d2541c8fac10022ca584f33da781db01b5756aef1f4e" dependencies = [ - "core-foundation", + "block2", + "core-foundation 0.9.4", "home", "jni", "log", "ndk-context", - "objc", - "raw-window-handle 0.5.2", + "objc2", + "objc2-foundation", "url", "web-sys", ] @@ -6056,23 +6211,23 @@ dependencies = [ [[package]] name = "webview2-com" -version = "0.31.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6516cfa64c6b3212686080eeec378e662c2af54bb2a5b2a22749673f5cb2226f" +checksum = "6f61ff3d9d0ee4efcb461b14eb3acfda2702d10dc329f339303fc3e57215ae2c" dependencies = [ "webview2-com-macros", "webview2-com-sys", - "windows 0.57.0", - "windows-core 0.57.0", - "windows-implement 0.57.0", - "windows-interface 0.57.0", + "windows", + "windows-core 0.58.0", + "windows-implement", + "windows-interface", ] [[package]] name = "webview2-com-macros" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac1345798ecd8122468840bcdf1b95e5dc6d2206c5e4b0eafa078d061f59c9bc" +checksum = "1d228f15bba3b9d56dde8bddbee66fa24545bd17b48d5128ccf4a8742b18e431" dependencies = [ "proc-macro2", "quote", @@ -6081,13 +6236,13 @@ dependencies = [ [[package]] name = "webview2-com-sys" -version = "0.31.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c76d5b77320ff155660be1df3e6588bc85c75f1a9feef938cc4dc4dd60d1d7cf" +checksum = "a3a3e2eeb58f82361c93f9777014668eb3d07e7d174ee4c819575a9208011886" dependencies = [ "thiserror", - "windows 0.57.0", - "windows-core 0.57.0", + "windows", + "windows-core 0.58.0", ] [[package]] @@ -6123,23 +6278,11 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.54.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" dependencies = [ - "windows-core 0.54.0", - "windows-implement 0.53.0", - "windows-interface 0.53.0", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows" -version = "0.57.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" -dependencies = [ - "windows-core 0.57.0", + "windows-core 0.58.0", "windows-targets 0.52.6", ] @@ -6154,42 +6297,22 @@ dependencies = [ [[package]] name = "windows-core" -version = "0.54.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" -dependencies = [ - "windows-result", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-core" -version = "0.57.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" dependencies = [ - "windows-implement 0.57.0", - "windows-interface 0.57.0", + "windows-implement", + "windows-interface", "windows-result", + "windows-strings", "windows-targets 0.52.6", ] [[package]] name = "windows-implement" -version = "0.53.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942ac266be9249c84ca862f0a164a39533dc2f6f33dc98ec89c8da99b82ea0bd" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.74", -] - -[[package]] -name = "windows-implement" -version = "0.57.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", @@ -6198,9 +6321,9 @@ dependencies = [ [[package]] name = "windows-interface" -version = "0.53.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da33557140a288fae4e1d5f8873aaf9eb6613a9cf82c3e070223ff177f598b60" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", @@ -6208,22 +6331,21 @@ dependencies = [ ] [[package]] -name = "windows-interface" -version = "0.57.0" +name = "windows-result" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.74", + "windows-targets 0.52.6", ] [[package]] -name = "windows-result" -version = "0.1.2" +name = "windows-strings" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" dependencies = [ + "windows-result", "windows-targets 0.52.6", ] @@ -6471,9 +6593,9 @@ dependencies = [ [[package]] name = "wry" -version = "0.41.0" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b00c945786b02d7805d09a969fa36d0eee4e0bd4fb3ec2a79d2bf45a1b44cd" +checksum = "49b8049c8f239cdbfaaea4bacb9646f6b208938ceec0acd5b3e99cd05f70903f" dependencies = [ "base64 0.22.1", "block", @@ -6491,8 +6613,6 @@ dependencies = [ "kuchikiki", "libc", "ndk", - "ndk-context", - "ndk-sys", "objc", "objc_id", "once_cell", @@ -6505,8 +6625,8 @@ dependencies = [ "webkit2gtk", "webkit2gtk-sys", "webview2-com", - "windows 0.57.0", - "windows-core 0.57.0", + "windows", + "windows-core 0.58.0", "windows-version", "x11-dl", ] diff --git a/Cargo.toml b/Cargo.toml index 1a042df0c..cf6e64e81 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -29,12 +29,13 @@ include_dir = "0.7.3" anyhow = "1.0.71" dioxus-material-icons = { git = "https://github.com/jkelleyrtp/dioxus-material-icons", branch = "jk/git-rev" } -syntect-html = { git = "https://github.com/dioxuslabs/include_mdbook" } -mdbook-shared = { git = "https://github.com/dioxuslabs/include_mdbook" } -use-mdbook = { git = "https://github.com/dioxuslabs/include_mdbook" } + +syntect-html = { git = "https://github.com/dioxuslabs/include_mdbook", branch = "jk/build-gen" } +mdbook-shared = { git = "https://github.com/dioxuslabs/include_mdbook", branch = "jk/build-gen" } +use-mdbook = { git = "https://github.com/dioxuslabs/include_mdbook", branch = "jk/build-gen" } dioxus-search = { git = "https://github.com/dioxuslabs/dioxus-search" } -dioxus-playground = { git = "https://github.com/DioxusLabs/playground" } +dioxus-playground = { git = "https://github.com/DioxusLabs/playground", branch = "jk/update-manganis" } tokio = { version = "1.29.0", features = ["full"], optional = true } axum = { version = "0.7", optional = true } @@ -73,33 +74,42 @@ tower-http = { version = "0.5.0", optional = true, features = ["timeout"] } tracing = "0.1.40" rand = { version = "0.8.5", optional = true } +[build-dependencies] +mdbook-gen = { git = "https://github.com/dioxuslabs/include_mdbook", branch = "jk/build-gen" } +mdbook-shared = { git = "https://github.com/dioxuslabs/include_mdbook", branch = "jk/build-gen" } +prettyplease = "0.2.20" + [patch.crates-io] -dioxus = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-lib = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-core = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-core-macro = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-config-macro = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-router = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-router-macro = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-html = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-html-internal-macro = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-hooks = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-web = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-ssr = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-desktop = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-interpreter-js = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-liveview = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-rsx = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-signals = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-cli-config = { git = "https://github.com/dioxuslabs/dioxus" } -generational-box = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-hot-reload = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus_server_macro = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-fullstack = { git = "https://github.com/dioxuslabs/dioxus" } - -manganis = { git = "https://github.com/DioxusLabs/manganis" } -manganis-common = { git = "https://github.com/DioxusLabs/manganis" } -manganis-macro = { git = "https://github.com/DioxusLabs/manganis" } +dioxus = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-lib = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-core = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-core-macro = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-config-macro = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-router = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-router-macro = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-html = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-html-internal-macro = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-hooks = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-web = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-ssr = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-desktop = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-interpreter-js = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-liveview = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-rsx = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-signals = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-cli-config = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +generational-box = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-hot-reload = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus_server_macro = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-fullstack = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-autofmt = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } + +# manganis = { path = "../manganis/packages/manganis" } +# manganis-common = { path = "../manganis/packages/common" } +# manganis-macro = { path = "../manganis/packages/macro" } +# manganis = { git = "https://github.com/DioxusLabs/manganis", branch = "jk/drop-remote-support" } +# manganis-common = { git = "https://github.com/DioxusLabs/manganis", branch = "jk/drop-remote-support" } +# manganis-macro = { git = "https://github.com/DioxusLabs/manganis", branch = "jk/drop-remote-support" } [profile.release] lto = true diff --git a/Dioxus.toml b/Dioxus.toml index eb9d37ede..891bb7836 100644 --- a/Dioxus.toml +++ b/Dioxus.toml @@ -31,6 +31,7 @@ watch_path = [ "snippets", "index.html", "public", + "docs-gen", ] index_on_404 = true diff --git a/build.rs b/build.rs new file mode 100644 index 000000000..89a155385 --- /dev/null +++ b/build.rs @@ -0,0 +1,24 @@ +use std::{env::current_dir, path::PathBuf}; + +use mdbook_gen::{generate_router_as_file, generate_router}; +use mdbook_shared::MdBook; + +fn main() { + // re-run only if the "example-book" directory changes + println!("cargo:rerun-if-changed=docs-src"); + + let mdbook_dir = PathBuf::from("docs-src/0.5"); + let out_dir = current_dir().unwrap().join("src/docs"); + // let out = mdbook_gen::generate_router_build_script(mdbook_dir); + // let router = generate_router(book_path, book); + + let mut out = generate_router(mdbook_dir.clone(), MdBook::new(mdbook_dir).unwrap()); + let mut out = out.to_string(); + + // let mut out = generate_router_as_file(mdbook_dir.clone(), MdBook::new(mdbook_dir).unwrap()); + // let mut out = prettyplease::unparse(&file_src); + out.push_str("\n"); + out.push_str("use super::*;\n"); + + std::fs::write(out_dir.join("router.rs"), out).unwrap(); +} diff --git a/docs-src/0.5/SUMMARY.md b/docs-src/0.5/SUMMARY.md index 62df3c3f3..0fb5e04db 100644 --- a/docs-src/0.5/SUMMARY.md +++ b/docs-src/0.5/SUMMARY.md @@ -1,19 +1,40 @@ # Summary [Introduction](index.md) +- [Features](getting_started/index.md) -- [Getting Started](getting_started/index.md) + + +--- + + - [Guide](guide/index.md) - - [Your First Component](guide/your_first_component.md) + - [Tooling setup](guide/tooling.md) + - [Creating a new app](guide/new_app.md) + - [Your First Component](guide/component.md) + - [Styling and Assets](guide/assets.md) - [State](guide/state.md) - - [Data Fetching](guide/data_fetching.md) - - [Full Code](guide/full_code.md) + - [App Routing](guide/routing.md) + - [Data Fetching](guide/fetching.md) + - [Backend](guide/backend.md) + - [Deploying](guide/deploy.md) + - [Next Steps](guide/next_steps.md) --- -- [Reference](reference/index.md) - - [Managing State](reference/managing_state.md) - - [Component Lifecycle](reference/component_lifecycle.md) + +- [Essential Concepts](essentials/index.md) + - [Component Lifecycle](essentials/lifecycle/index.md) + - [Managing State](essentials/state/index.md) + - [Breaking Out](essentials/breaking/index.md) + - [Structuring Your App](essentials/structure/index.md) + +--- + +- [Guides](reference/index.md) + - [Reactivity](reference/reactivity.md) - [RSX](reference/rsx.md) - [Components](reference/components.md) - [Props](reference/component_props.md) @@ -105,3 +126,4 @@ - [State](migration/state.md) - [Fermi](migration/fermi.md) - [Props](migration/props.md) + diff --git a/docs-src/0.5/en/essentials/breaking/index.md b/docs-src/0.5/en/essentials/breaking/index.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs-src/0.5/en/essentials/index.md b/docs-src/0.5/en/essentials/index.md new file mode 100644 index 000000000..bb36767f1 --- /dev/null +++ b/docs-src/0.5/en/essentials/index.md @@ -0,0 +1 @@ +essentials! diff --git a/docs-src/0.5/en/essentials/lifecycle/index.md b/docs-src/0.5/en/essentials/lifecycle/index.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs-src/0.5/en/essentials/state/index.md b/docs-src/0.5/en/essentials/state/index.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs-src/0.5/en/essentials/structure/index.md b/docs-src/0.5/en/essentials/structure/index.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs-src/0.5/en/getting_started/features.md b/docs-src/0.5/en/getting_started/features.md new file mode 100644 index 000000000..8ba333cfe --- /dev/null +++ b/docs-src/0.5/en/getting_started/features.md @@ -0,0 +1 @@ +omg it has features! diff --git a/docs-src/0.5/en/getting_started/index.md b/docs-src/0.5/en/getting_started/index.md index da2e68d7b..0b905a183 100644 --- a/docs-src/0.5/en/getting_started/index.md +++ b/docs-src/0.5/en/getting_started/index.md @@ -57,7 +57,7 @@ video { width: "800px", muted: "true", source { - src: manganis::mg!(file("./public/static/dioxus-new.mov")), + src: asset!("/public/static/dioxus-new.mov"), } } ``` diff --git a/docs-src/0.5/en/guide/assets.md b/docs-src/0.5/en/guide/assets.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs-src/0.5/en/guide/backend.md b/docs-src/0.5/en/guide/backend.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs-src/0.5/en/guide/component.md b/docs-src/0.5/en/guide/component.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs-src/0.5/en/guide/deploy.md b/docs-src/0.5/en/guide/deploy.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs-src/0.5/en/guide/fetching.md b/docs-src/0.5/en/guide/fetching.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs-src/0.5/en/guide/new_app.md b/docs-src/0.5/en/guide/new_app.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs-src/0.5/en/guide/next_steps.md b/docs-src/0.5/en/guide/next_steps.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs-src/0.5/en/guide/routing.md b/docs-src/0.5/en/guide/routing.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs-src/0.5/en/guide/tooling.md b/docs-src/0.5/en/guide/tooling.md new file mode 100644 index 000000000..e69de29bb diff --git a/src/components/homepage.rs b/src/components/homepage.rs index d80e21af8..7402d8eb1 100644 --- a/src/components/homepage.rs +++ b/src/components/homepage.rs @@ -20,64 +20,6 @@ pub(crate) fn Homepage() -> Element { } } -const CARDS: &[(&str, &str)] = &[ - ( - "Web", - "Progressively render directly to the DOM, enhanced with SSR, rehydration, and streaming.", - ), - ( - "Desktop", - "Render your apps natively with WGPU or through WebView with full access to system resources.", - ), - ( - "Mobile", - "Compile natively to mobile architectures. Apps stay fast even on low-end devices.", - ), - ( - "LiveView", - "Build faster than ever: your app lives on the server, eliminating the need for a dedicated backend API." - ), - ( - "TUI", - "Quickly convert scripts to interactive tools with a full fledged renderer for the terminal.", - ), - ( - "3D Scenes", - "Dioxus is extensible. Quickly build highly interactive 3D scenes, inspired by React-Three-Fiber.", - ), -]; - -fn ProjectCards() -> Element { - rsx! { - section { class: "py-12", - div { class: "container mx-auto px-6 lg:px-64", - div { class: "flex flex-wrap -mx-3", - for (title , description) in CARDS.iter() { - div { - key: "{title}", - class: "w-full md:w-1/2 lg:w-1/3 px-3 mb-6 text-xs dark:text-white", - div { class: "p-6 md:p-8 h-full rounded shadow-white hover:shadow-xl hover:border-transparent cursor-pointer", - div { - h3 { class: "mb-4 text-2xl font-semibold font-heading font-sans", - "{title}" - } - p { class: "text-base text-gray-500 pb-4", "{description}" } - Link { - class: "bg-gray-900 hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-gray-400 focus:ring-offset-2 focus:ring-offset-gray-50 text-white font-semibold h-12 px-6 rounded-lg flex items-center justify-center sm:w-auto dark:bg-sky-500 dark:highlight-white/20 dark:hover:bg-sky-400", - to: Route::Docs { - child: BookRoute::GettingStartedIndex {}, - }, - "Get started" - } - } - } - } - } - } - } - } - } -} fn AvailablePlatforms() -> Element { rsx! { diff --git a/src/docs/.gitignore b/src/docs/.gitignore new file mode 100644 index 000000000..7d4d9a17d --- /dev/null +++ b/src/docs/.gitignore @@ -0,0 +1 @@ +router.rs diff --git a/src/docs/readme.md b/src/docs/readme.md new file mode 100644 index 000000000..3361b06a5 --- /dev/null +++ b/src/docs/readme.md @@ -0,0 +1 @@ +we need to ignore the router.rs file because it's autogenerated diff --git a/src/main.rs b/src/main.rs index a823b93d0..8804ecdf5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -262,7 +262,11 @@ pub enum Route {{\n\t" } } - use_mdbook::mdbook_router! {"docs-src/0.5"} + // use_mdbook::mdbook_router! {"docs-src/0.5"} + // include! {"../docs-gen/router.rs"} + + mod router; + pub use router::*; } fn main() { From 403251349f4af8c077ef618600d570e9716ad0a9 Mon Sep 17 00:00:00 2001 From: Jonathan Kelley Date: Sat, 17 Aug 2024 01:18:12 -0700 Subject: [PATCH 23/35] remove extra reactivity link --- docs-src/0.5/SUMMARY.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs-src/0.5/SUMMARY.md b/docs-src/0.5/SUMMARY.md index 0fb5e04db..2f5c1554e 100644 --- a/docs-src/0.5/SUMMARY.md +++ b/docs-src/0.5/SUMMARY.md @@ -34,7 +34,6 @@ --- - [Guides](reference/index.md) - - [Reactivity](reference/reactivity.md) - [RSX](reference/rsx.md) - [Components](reference/components.md) - [Props](reference/component_props.md) From b81f9e1b78b435290abf46adc8d9f196c41c600c Mon Sep 17 00:00:00 2001 From: Jonathan Kelley Date: Sat, 17 Aug 2024 02:02:34 -0700 Subject: [PATCH 24/35] clean up old cruft out of docsite --- .vscode/settings.json | 2 +- Cargo.lock | 10 +- docs-src/0.5/SUMMARY.md | 126 ++++++++------ public/tailwind.css | 165 +++---------------- src/components.rs | 20 +++ src/components/awesome.rs | 2 - src/components/blog.rs | 27 +-- src/components/deploy.rs | 2 +- src/components/desktop_dependencies.rs | 2 +- src/components/footer.rs | 55 +++---- src/components/homepage.rs | 4 - src/components/homepage/call_to_action.rs | 28 ---- src/components/homepage/featured_examples.rs | 2 +- src/components/homepage/hero.rs | 2 +- src/components/homepage/value_add.rs | 56 ------- src/components/learn.rs | 37 ----- src/components/nav.rs | 25 ++- src/components/notfound.rs | 1 - src/components/tutorials.rs | 107 ------------ src/icons.rs | 123 ++------------ src/main.rs | 113 ++----------- src/sitemap.rs | 34 ---- templates/404.html | 37 ----- templates/404.rsx | 36 ---- templates/hover.html | 62 ------- 25 files changed, 197 insertions(+), 881 deletions(-) create mode 100644 src/components.rs delete mode 100644 src/components/homepage/call_to_action.rs delete mode 100644 src/components/homepage/value_add.rs delete mode 100644 src/components/tutorials.rs delete mode 100644 src/sitemap.rs delete mode 100644 templates/404.html delete mode 100644 templates/404.rsx delete mode 100644 templates/hover.html diff --git a/.vscode/settings.json b/.vscode/settings.json index d19413e23..337f41f72 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -3,6 +3,6 @@ // so it doesn't break code blocks "editor.formatOnSave": false }, - "editor.formatOnSave": false + // "editor.formatOnSave": false // "files.autoSaveDelay": 10 } diff --git a/Cargo.lock b/Cargo.lock index 404b6454a..76ec7b0df 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3404,7 +3404,7 @@ checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" [[package]] name = "mdbook-gen" version = "0.0.0" -source = "git+https://github.com/dioxuslabs/include_mdbook?branch=jk/build-gen#d7b4fbfc7654ebbd4f14e4326b7d7770d99dc340" +source = "git+https://github.com/dioxuslabs/include_mdbook?branch=jk/build-gen#d9480f140f407771f998e818a8e3f466c483659c" dependencies = [ "anyhow", "convert_case 0.6.0", @@ -3426,7 +3426,7 @@ dependencies = [ [[package]] name = "mdbook-macro" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/include_mdbook?branch=jk/build-gen#d7b4fbfc7654ebbd4f14e4326b7d7770d99dc340" +source = "git+https://github.com/dioxuslabs/include_mdbook?branch=jk/build-gen#d9480f140f407771f998e818a8e3f466c483659c" dependencies = [ "anyhow", "convert_case 0.6.0", @@ -3447,7 +3447,7 @@ dependencies = [ [[package]] name = "mdbook-shared" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/include_mdbook?branch=jk/build-gen#d7b4fbfc7654ebbd4f14e4326b7d7770d99dc340" +source = "git+https://github.com/dioxuslabs/include_mdbook?branch=jk/build-gen#d9480f140f407771f998e818a8e3f466c483659c" dependencies = [ "anyhow", "bytes", @@ -5309,7 +5309,7 @@ dependencies = [ [[package]] name = "syntect-html" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/include_mdbook?branch=jk/build-gen#d7b4fbfc7654ebbd4f14e4326b7d7770d99dc340" +source = "git+https://github.com/dioxuslabs/include_mdbook?branch=jk/build-gen#d9480f140f407771f998e818a8e3f466c483659c" dependencies = [ "proc-macro2", "quote", @@ -5941,7 +5941,7 @@ checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" [[package]] name = "use-mdbook" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/include_mdbook?branch=jk/build-gen#d7b4fbfc7654ebbd4f14e4326b7d7770d99dc340" +source = "git+https://github.com/dioxuslabs/include_mdbook?branch=jk/build-gen#d9480f140f407771f998e818a8e3f466c483659c" dependencies = [ "lazy_static", "mdbook-macro", diff --git a/docs-src/0.5/SUMMARY.md b/docs-src/0.5/SUMMARY.md index 2f5c1554e..84fe48b3e 100644 --- a/docs-src/0.5/SUMMARY.md +++ b/docs-src/0.5/SUMMARY.md @@ -16,7 +16,7 @@ - [Creating a new app](guide/new_app.md) - [Your First Component](guide/component.md) - [Styling and Assets](guide/assets.md) - - [State](guide/state.md) + - [State and Interactivity](guide/state.md) - [App Routing](guide/routing.md) - [Data Fetching](guide/fetching.md) - [Backend](guide/backend.md) @@ -33,55 +33,61 @@ --- + + + + + - [Guides](reference/index.md) - - [RSX](reference/rsx.md) - - [Components](reference/components.md) - - [Props](reference/component_props.md) - - [Event Handlers](reference/event_handlers.md) - - [Hooks](reference/hooks.md) - - [User Input](reference/user_input.md) - - [Context](reference/context.md) - - [Dynamic Rendering](reference/dynamic_rendering.md) - - [Routing](reference/router.md) - - [Resource](reference/use_resource.md) - - [UseCoroutine](reference/use_coroutine.md) - - [Spawn](reference/spawn.md) + - [Router](router/index.md) + - [Example Project](router/example/index.md) + - [Creating Our First Route](router/example/first-route.md) + - [Building a Nest](router/example/building-a-nest.md) + - [Navigation Targets](router/example/navigation-targets.md) + - [Redirection Perfection](router/example/redirection-perfection.md) + - [Full Code](router/example/full-code.md) + - [Reference](router/reference/index.md) + - [Defining Routes](router/reference/routes/index.md) + - [Nested Routes](router/reference/routes/nested.md) + - [Layouts](router/reference/layouts.md) + - [Navigation](router/reference/navigation/index.md) + - [Programmatic Navigation](router/reference/navigation/programmatic.md) + - [History Providers](router/reference/history-providers.md) + - [History Buttons](router/reference/history-buttons.md) + - [Static Generation](router/reference/static-generation.md) + - [Routing Update Callback](router/reference/routing-update-callback.md) + - [Assets](reference/assets.md) - - [Choosing A Web Renderer](reference/choosing_a_web_renderer.md) - [Desktop](reference/desktop/index.md) - [Mobile](reference/mobile/index.md) - [APIs](reference/mobile/apis.md) - [Web](reference/web/index.md) - [SSR](reference/ssr.md) - - [Liveview](reference/liveview.md) - [Fullstack](reference/fullstack/index.md) - [Server Functions](reference/fullstack/server_functions.md) - [Extractors](reference/fullstack/extractors.md) - [Middleware](reference/fullstack/middleware.md) - [Authentication](reference/fullstack/authentication.md) - [Routing](reference/fullstack/routing.md) - ---- -- [Router](router/index.md) - - [Example Project](router/example/index.md) - - [Creating Our First Route](router/example/first-route.md) - - [Building a Nest](router/example/building-a-nest.md) - - [Navigation Targets](router/example/navigation-targets.md) - - [Redirection Perfection](router/example/redirection-perfection.md) - - [Full Code](router/example/full-code.md) - - [Reference](router/reference/index.md) - - [Defining Routes](router/reference/routes/index.md) - - [Nested Routes](router/reference/routes/nested.md) - - [Layouts](router/reference/layouts.md) - - [Navigation](router/reference/navigation/index.md) - - [Programmatic Navigation](router/reference/navigation/programmatic.md) - - [History Providers](router/reference/history-providers.md) - - [History Buttons](router/reference/history-buttons.md) - - [Static Generation](router/reference/static-generation.md) - - [Routing Update Callback](router/reference/routing-update-callback.md) - ---- -- [Cookbook](cookbook/index.md) - [Publishing](cookbook/publishing.md) - [Anti-patterns](cookbook/antipatterns.md) - [Error Handling](cookbook/error_handling.md) @@ -95,12 +101,26 @@ - [Examples](cookbook/examples.md) - [Tailwind](cookbook/tailwind.md) - [Optimizing](cookbook/optimizing.md) + - [Migration for 0.5](migration/index.md) + - [Hooks](migration/hooks.md) + - [State](migration/state.md) + - [Fermi](migration/fermi.md) + - [Props](migration/props.md) --- -- [CLI](CLI/index.md) +- [Contributing](contributing/index.md) + - [Project Structure](contributing/project_structure.md) + - [Walkthrough of Internals](contributing/walkthrough_readme.md) + - [Guiding Principles](contributing/guiding_principles.md) + - [Roadmap](contributing/roadmap.md) + + + + + ---- -- [Contributing](contributing/index.md) - - [Project Structure](contributing/project_structure.md) - - [Walkthrough of Internals](contributing/walkthrough_readme.md) - - [Guiding Principles](contributing/guiding_principles.md) - - [Roadmap](contributing/roadmap.md) - ---- -- [Migration](migration/index.md) - - [Hooks](migration/hooks.md) - - [State](migration/state.md) - - [Fermi](migration/fermi.md) - - [Props](migration/props.md) + diff --git a/public/tailwind.css b/public/tailwind.css index 876647687..075929b09 100644 --- a/public/tailwind.css +++ b/public/tailwind.css @@ -645,6 +645,10 @@ video { top: 7rem; } +.isolate { + isolation: isolate; +} + .z-10 { z-index: 10; } @@ -689,11 +693,6 @@ video { margin: 1.25rem; } -.-mx-3 { - margin-left: -0.75rem; - margin-right: -0.75rem; -} - .-mx-4 { margin-left: -1rem; margin-right: -1rem; @@ -709,11 +708,6 @@ video { margin-right: 0.5rem; } -.mx-3 { - margin-left: 0.75rem; - margin-right: 0.75rem; -} - .mx-4 { margin-left: 1rem; margin-right: 1rem; @@ -749,11 +743,6 @@ video { margin-bottom: auto; } -.mx-8 { - margin-left: 2rem; - margin-right: 2rem; -} - .-mb-10 { margin-bottom: -2.5rem; } @@ -943,10 +932,6 @@ video { height: 1px; } -.h-40 { - height: 10rem; -} - .max-h-48 { max-height: 12rem; } @@ -1097,8 +1082,8 @@ video { animation: fadein 500ms ease-in-out forwards; } -.cursor-pointer { - cursor: pointer; +.resize { + resize: both; } .list-none { @@ -1157,10 +1142,6 @@ video { justify-content: space-between; } -.justify-items-end { - justify-items: end; -} - .gap-4 { gap: 1rem; } @@ -1349,11 +1330,6 @@ video { border-color: rgb(255 255 255 / var(--tw-border-opacity)); } -.border-b-orange-50 { - --tw-border-opacity: 1; - border-bottom-color: rgb(255 247 237 / var(--tw-border-opacity)); -} - .bg-blue-500 { --tw-bg-opacity: 1; background-color: rgb(59 130 246 / var(--tw-bg-opacity)); @@ -1389,11 +1365,6 @@ video { background-color: rgb(107 114 128 / var(--tw-bg-opacity)); } -.bg-gray-900 { - --tw-bg-opacity: 1; - background-color: rgb(17 24 39 / var(--tw-bg-opacity)); -} - .bg-green-600 { --tw-bg-opacity: 1; background-color: rgb(22 163 74 / var(--tw-bg-opacity)); @@ -1484,10 +1455,6 @@ video { padding: 1rem; } -.p-6 { - padding: 1.5rem; -} - .p-8 { padding: 2rem; } @@ -1577,21 +1544,6 @@ video { padding-bottom: 2rem; } -.px-12 { - padding-left: 3rem; - padding-right: 3rem; -} - -.px-24 { - padding-left: 6rem; - padding-right: 6rem; -} - -.px-20 { - padding-left: 5rem; - padding-right: 5rem; -} - .pb-1 { padding-bottom: 0.25rem; } @@ -1756,6 +1708,10 @@ video { line-height: 1rem; } +.text-\[0\.5rem\] { + font-size: 0.5rem; +} + .font-bold { font-weight: 700; } @@ -1893,6 +1849,10 @@ video { color: rgb(255 255 255 / var(--tw-text-opacity)); } +.text-\[\] { + color: ; +} + .underline { text-decoration-line: underline; } @@ -1931,16 +1891,15 @@ video { box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } -.shadow-white { - --tw-shadow-color: #fff; - --tw-shadow: var(--tw-shadow-colored); -} - .outline-none { outline: 2px solid transparent; outline-offset: 2px; } +.outline { + outline-style: solid; +} + .invert { --tw-invert: invert(100%); filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); @@ -2006,20 +1965,11 @@ video { border-color: rgb(79 70 229 / var(--tw-border-opacity)); } -.hover\:border-transparent:hover { - border-color: transparent; -} - .hover\:bg-gray-100:hover { --tw-bg-opacity: 1; background-color: rgb(243 244 246 / var(--tw-bg-opacity)); } -.hover\:bg-gray-700:hover { - --tw-bg-opacity: 1; - background-color: rgb(55 65 81 / var(--tw-bg-opacity)); -} - .hover\:bg-indigo-600:hover { --tw-bg-opacity: 1; background-color: rgb(79 70 229 / var(--tw-bg-opacity)); @@ -2055,36 +2005,11 @@ video { box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } -.hover\:shadow-xl:hover { - --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1); - --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); -} - .focus\:outline-none:focus { outline: 2px solid transparent; outline-offset: 2px; } -.focus\:ring-2:focus { - --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); - --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); - box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); -} - -.focus\:ring-gray-400:focus { - --tw-ring-opacity: 1; - --tw-ring-color: rgb(156 163 175 / var(--tw-ring-opacity)); -} - -.focus\:ring-offset-2:focus { - --tw-ring-offset-width: 2px; -} - -.focus\:ring-offset-gray-50:focus { - --tw-ring-offset-color: #f9fafb; -} - .group:hover .group-hover\:text-gray-500 { --tw-text-opacity: 1; color: rgb(107 114 128 / var(--tw-text-opacity)); @@ -2129,10 +2054,6 @@ video { width: 50%; } - .sm\:w-auto { - width: auto; - } - .sm\:w-full { width: 100%; } @@ -2293,10 +2214,6 @@ video { padding: 1.5rem; } - .md\:p-8 { - padding: 2rem; - } - .md\:px-12 { padding-left: 3rem; padding-right: 3rem; @@ -2317,21 +2234,6 @@ video { padding-bottom: 0.5rem; } - .md\:px-20 { - padding-left: 5rem; - padding-right: 5rem; - } - - .md\:px-2 { - padding-left: 0.5rem; - padding-right: 0.5rem; - } - - .md\:px-24 { - padding-left: 6rem; - padding-right: 6rem; - } - .md\:pb-10 { padding-bottom: 2.5rem; } @@ -2361,8 +2263,8 @@ video { font-size: 3.3em; } - .md\:text-\[4em\] { - font-size: 4em; + .md\:text-\[3em\] { + font-size: 3em; } .md\:text-sm { @@ -2370,10 +2272,6 @@ video { line-height: 1.25rem; } - .md\:text-\[3em\] { - font-size: 3em; - } - .md\:leading-tight { line-height: 1.25; } @@ -2460,11 +2358,6 @@ video { padding-right: 10rem; } - .lg\:px-64 { - padding-left: 16rem; - padding-right: 16rem; - } - .lg\:py-2 { padding-top: 0.5rem; padding-bottom: 0.5rem; @@ -2573,11 +2466,6 @@ video { background-color: rgb(23 23 23 / 0.7); } - .dark\:bg-sky-500 { - --tw-bg-opacity: 1; - background-color: rgb(14 165 233 / var(--tw-bg-opacity)); - } - .dark\:bg-slate-800 { --tw-bg-opacity: 1; background-color: rgb(30 41 59 / var(--tw-bg-opacity)); @@ -2669,11 +2557,6 @@ video { background-color: rgb(14 17 22 / var(--tw-bg-opacity)); } - .dark\:hover\:bg-sky-400:hover { - --tw-bg-opacity: 1; - background-color: rgb(56 189 248 / var(--tw-bg-opacity)); - } - .dark\:hover\:text-gray-300:hover { --tw-text-opacity: 1; color: rgb(209 213 219 / var(--tw-text-opacity)); @@ -2686,11 +2569,7 @@ video { } @media(min-height:720px) { - .\[\@media\(min-height\:720px\)\]\:h-\[calc\(100vh-6rem\)\] { - height: calc(100vh - 6rem); - } - - .\[\@media\(min-height\:720px\)\]\:h-\[calc\(100vh-3rem\)\] { - height: calc(100vh - 3rem); + .\[\@media\(min-height\:720px\)\]\:h-\[calc\(100vh\)\] { + height: calc(100vh); } } diff --git a/src/components.rs b/src/components.rs new file mode 100644 index 000000000..b617ae30e --- /dev/null +++ b/src/components.rs @@ -0,0 +1,20 @@ +pub mod awesome; +pub use awesome::*; +pub mod blog; +pub use blog::*; +pub mod deploy; +pub use deploy::*; +pub mod desktop_dependencies; +pub use desktop_dependencies::*; +pub mod footer; +pub use footer::*; +pub mod homepage; +pub use homepage::*; +pub mod learn; +pub use learn::*; +pub mod nav; +pub use nav::*; +pub mod notfound; +pub use notfound::*; +pub mod playground; +pub use playground::*; diff --git a/src/components/awesome.rs b/src/components/awesome.rs index 389649a84..2f80eabf4 100644 --- a/src/components/awesome.rs +++ b/src/components/awesome.rs @@ -1,7 +1,5 @@ use crate::*; -use dioxus::prelude::*; use std::fmt::{Display, Formatter}; -use std::ops::Deref; use wasm_bindgen::prelude::wasm_bindgen; const ITEM_LIST_LINK: &str = diff --git a/src/components/blog.rs b/src/components/blog.rs index 14c1b0a10..ebc4fd944 100644 --- a/src/components/blog.rs +++ b/src/components/blog.rs @@ -1,7 +1,6 @@ use crate::icons; use crate::Link; use dioxus::prelude::*; -use dioxus_router::prelude::*; #[derive(PartialEq, Eq, Clone, Copy)] pub(crate) struct BlogPost { @@ -139,7 +138,7 @@ pub(crate) const POSTS: &[BlogPost] = &[ #[component] pub(crate) fn BlogList() -> Element { - rsx!( + rsx! { section { class: "body-font overflow-hidden dark:bg-ideblack font-light", div { class: "container max-w-screen-md pt-12 pb-12 mx-auto", div { class: "-my-8 px-8 pb-12", @@ -159,7 +158,7 @@ pub(crate) fn BlogList() -> Element { } } } - ) + } } #[component] @@ -178,31 +177,9 @@ pub(crate) fn SinglePost(post: BlogPost) -> Element { } } -fn BlogHeader() -> Element { - rsx!( - section { class: "py-20", - div { class: "container px-4 mx-auto dark:text-white", - - h2 { class: "mb-8 md:mb-16 text-5xl lg:text-6xl font-semibold font-heading font-sans", - "Dioxus Official Blog" - } - - div { class: "flex flex-wrap items-center", - div { class: "inline-block max-w-xl mb-6 md:mb-0", - p { class: "text-xl pb-4 text-gray-500 dark:text-gray-300", - "Updates, changelogs, and general musings of the Dioxus community...." - } - } - } - } - } - ) -} - #[component] fn BlogPostItem(post: &'static BlogPost) -> Element { let BlogPost { - category, date, title, description, diff --git a/src/components/deploy.rs b/src/components/deploy.rs index e04b3ab20..326187a60 100644 --- a/src/components/deploy.rs +++ b/src/components/deploy.rs @@ -1,6 +1,6 @@ use dioxus::prelude::*; -pub(crate) fn Deploy() -> Element { +pub fn Deploy() -> Element { rsx! { section { class: "max-w-screen-2xl mx-auto px-4 py-16 my-8 dark:text-white", div { class: "max-w-screen-md mx-auto border-b py-8 ", diff --git a/src/components/desktop_dependencies.rs b/src/components/desktop_dependencies.rs index 2d3f054c5..cedd7c8f3 100644 --- a/src/components/desktop_dependencies.rs +++ b/src/components/desktop_dependencies.rs @@ -30,7 +30,7 @@ impl Platform { ]; } -pub(crate) fn DesktopDependencies() -> Element { +pub fn DesktopDependencies() -> Element { let mut current_platform = use_signal(|| Platform::Windows); #[cfg(feature = "web")] diff --git a/src/components/footer.rs b/src/components/footer.rs index 49ce7645e..dbc23f97a 100644 --- a/src/components/footer.rs +++ b/src/components/footer.rs @@ -1,7 +1,6 @@ -use crate::HIGHLIGHT_NAV_LAYOUT; use dioxus::prelude::*; -pub(crate) fn Footer() -> Element { +pub fn Footer() -> Element { let categories = [ ( "Community", @@ -30,35 +29,10 @@ pub(crate) fn Footer() -> Element { ("Taffy", "https://github.com/DioxusLabs/taffy"), ], ), - ] - .iter() - .map(|(name, links)| { - rsx! { - div { key: "{name}", class: "lg:w-1/4 md:w-1/2 w-full px-4", - h2 { class: "title-font font-medium text-white tracking-widest text-sm mb-3", - "{name}" - } - nav { class: "list-none mb-10", - ul { - for f in links.iter() { - li { key: "{f.0}", - a { - class: "text-gray-400 hover:text-white", - href: "{f.1}", - "{f.0}" - } - } - } - } - } - } - } - }); + ]; rsx! { - footer { - class: "sticky z-30 text-gray-400 bg-ghmetal body-font", - class: if HIGHLIGHT_NAV_LAYOUT() { "border border-orange-600 rounded-md" }, + footer { class: "sticky z-30 text-gray-400 bg-ghmetal body-font", div { class: "container px-5 py-24 mx-auto flex md:items-center lg:items-start md:flex-row md:flex-nowrap flex-wrap flex-col", div { class: "w-64 flex-shrink-0 md:mx-0 mx-auto text-center md:text-left", a { @@ -76,7 +50,28 @@ pub(crate) fn Footer() -> Element { } } div { class: "flex-grow flex flex-wrap md:pl-20 -mb-10 md:mt-0 mt-10 md:text-left text-center", - {categories} + for (name , links) in categories.iter() { + div { + key: "{name}", + class: "lg:w-1/4 md:w-1/2 w-full px-4", + h2 { class: "title-font font-medium text-white tracking-widest text-sm mb-3", + "{name}" + } + nav { class: "list-none mb-10", + ul { + for f in links.iter() { + li { key: "{f.0}", + a { + class: "text-gray-400 hover:text-white", + href: "{f.1}", + "{f.0}" + } + } + } + } + } + } + } } } div { class: "container mx-auto py-4 px-5 flex flex-wrap flex-col sm:flex-row", diff --git a/src/components/homepage.rs b/src/components/homepage.rs index 7402d8eb1..a1645515b 100644 --- a/src/components/homepage.rs +++ b/src/components/homepage.rs @@ -1,11 +1,8 @@ use crate::*; -use dioxus::prelude::*; -pub(crate) mod call_to_action; pub(crate) mod featured_examples; pub(crate) mod hero; pub(crate) mod snippets; -pub(crate) mod value_add; #[component] pub(crate) fn Homepage() -> Element { @@ -20,7 +17,6 @@ pub(crate) fn Homepage() -> Element { } } - fn AvailablePlatforms() -> Element { rsx! { section { class: "w-full dark:bg-ideblack", diff --git a/src/components/homepage/call_to_action.rs b/src/components/homepage/call_to_action.rs deleted file mode 100644 index be015f525..000000000 --- a/src/components/homepage/call_to_action.rs +++ /dev/null @@ -1,28 +0,0 @@ -use crate::icons::FERROUS_LOGO; -use crate::*; -use dioxus::prelude::*; - -pub(crate) static CallToAction: Component<()> = |cx| { - // section { class: "text-gray-400 bg-ideblack body-font", - // div { class: "container px-5 py-12 mx-auto", - // div { class: "lg:w-2/3 flex flex-col sm:flex-row items-start mx-auto", - // h1 { class: "flex-grow pb-4 sm:pr-16 text-2xl font-medium title-font text-white text-center sm:text-left", - // "Start building today, with Dioxus." - // } - // img { class: "h-12 mx-4", src: "{FERROUS_LOGO}" } - // Link { - // to: Route::Docs { - // child: BookRoute::GettingStartedIndex {}, - // }, - // button { class: "flex-shrink-0 text-white bg-indigo-500 border-0 py-2 px-8 focus:outline-none hover:bg-indigo-600 rounded text-lg mt-10 sm:mt-0", - // "Get started" - // } - // } - // } - // } - // } - // - rsx! { - div {} - } -}; diff --git a/src/components/homepage/featured_examples.rs b/src/components/homepage/featured_examples.rs index 18eb5ff91..d3ab3e88c 100644 --- a/src/components/homepage/featured_examples.rs +++ b/src/components/homepage/featured_examples.rs @@ -1,6 +1,6 @@ use dioxus::prelude::*; -pub(crate) fn FeaturedExamples() -> Element { +pub fn FeaturedExamples() -> Element { // todo: maybe feature this somewhere else? // FeaturedExample { // title: "JS Benchmark", diff --git a/src/components/homepage/hero.rs b/src/components/homepage/hero.rs index f251439ed..709b36fb1 100644 --- a/src/components/homepage/hero.rs +++ b/src/components/homepage/hero.rs @@ -2,7 +2,7 @@ use crate::*; pub(crate) fn Hero() -> Element { rsx! { - section { class: "w-full dark:bg-ideblack h-fit [@media(min-height:720px)]:h-[calc(100vh-6rem)] flex flex-col justify-between items-center py-16", + section { class: "w-full dark:bg-ideblack h-fit [@media(min-height:720px)]:h-[calc(100vh)] flex flex-col justify-between items-center py-16", div { class: "pb-12 md:px-12 text-center w-full flex flex-col h-full max-w-screen-2xl", div { class: "flex-grow" } div { class: "flex flex-row justify-start w-full pb-24", diff --git a/src/components/homepage/value_add.rs b/src/components/homepage/value_add.rs deleted file mode 100644 index 1fe6382d8..000000000 --- a/src/components/homepage/value_add.rs +++ /dev/null @@ -1,56 +0,0 @@ -use crate::dioxus_core::DynamicNode; -use crate::dioxus_core::VComponent; -use crate::icons; -use dioxus::prelude::*; - -static IconsSet: &[Component<()>; 8] = &[ - icons::Icon1, - icons::Icon2, - icons::Icon3, - icons::Icon4, - icons::Icon5, - icons::Icon6, - icons::Icon1, - icons::Icon2, -]; - -static FEATURES: &[(&str, &str)] = &[ - ("Declarative", "Easily describe the layout of your application with HTML or RSX syntax."), - ("Component-Based", "Build encapsulated components that manage their own state, then compose them to make complex UIs."), - ("Learn Once, Write Anywhere", "Components and hooks can be reused to render on the web, desktop, mobile, server, and more!"), - ("Concurrent and Async", "1st class support for asynchronous tasks, suspense for datafetching, and pauseable coroutines."), - ("Static Types Everywhere", "Eliminate a whole class of bugs at compile time with static typing for every library."), - ("If it compiles, it works", "Fearlessly refactor even the largest of apps with powerful compile-time guarantees."), - ("First-class error handling", "No more uncaught exceptions. Components can easily abort rendering without crashing the entire app."), - ("Incredible inline documentation", "Comprehensive doc comments provide MDN hints and guides right under your finger tips."), -]; - -pub(crate) fn ValueAdd() -> Element { - rsx! { - section { class: "text-gray-600 body-font", - div { class: "container mx-auto py-12 px-6 lg:px-40", - div { class: "flex flex-wrap sm:-m-4 -mx-4 -mb-10 -mt-4 md:space-y-0 space-y-6 ", - for (idx , (title , content)) in FEATURES.iter().enumerate() { - div { key: "{title}", class: "p-4 md:w-1/4 flex", - div { class: "flex-grow lg:pl-6", - {DynamicNode::Component(VComponent::new(IconsSet[idx], (), title))} - a { href: "#", - h2 { class: "dark:text-white text-gray-800 text-lg title-font font-medium mb-2", - "{title}" - } - } - {content.split('\n').map(|line| rsx! { - p { - key: "{line}", - class: "leading-relaxed text-gray-700 text-base pb-4 dark:text-white", - "{line}" - } - })} - } - } - } - } - } - } - } -} diff --git a/src/components/learn.rs b/src/components/learn.rs index 6e4e493a2..cf78f5b58 100644 --- a/src/components/learn.rs +++ b/src/components/learn.rs @@ -1,14 +1,10 @@ use crate::docs::LAZY_BOOK; use crate::*; -use dioxus::prelude::*; -use dioxus_material_icons::MaterialIcon; use dioxus_material_icons::MaterialIconColor; -use mdbook_shared::Page; use mdbook_shared::SummaryItem; pub(crate) static HIGHLIGHT_DOCS_LAYOUT: GlobalSignal = Signal::global(|| false); pub(crate) static SHOW_SIDEBAR: GlobalSignal = Signal::global(|| false); -pub(crate) static HIGHLIGHT_DOCS_CONTENT: GlobalSignal = Signal::global(|| false); /// The Markdown file path needs to be appended to this, including the first slash! const GITHUB_API_URL: &str = @@ -287,31 +283,6 @@ fn Content() -> Element { } } -fn ContentFooter() -> Element { - rsx! { - div { class: "chapter-nav", - button { "left" } - button { "right" } - } - } -} - -fn BreadCrumbs() -> Element { - // parse out the route after the version and language - let route: Route = use_route(); - - rsx! { - h2 { class: "font-semibold pb-4", - for segment in route.to_string().split('/').skip(3).filter(|f| !f.is_empty()) { - if segment != "index" { - Link { to: Route::Homepage {}, class: "text-blue-600", "{segment}" } - " / " - } - } - } - } -} - /// Get the book URL from the current URL /// Ignores language and version (for now) fn use_book() -> BookRoute { @@ -322,14 +293,6 @@ fn use_book() -> BookRoute { } } -fn default_page() -> &'static Page { - let id = LAZY_BOOK - .page_id_mapping - .get(&BookRoute::default()) - .unwrap(); - LAZY_BOOK.pages.get(id.0).unwrap() -} - #[component] pub(crate) fn DocsO3(segments: Vec) -> Element { let navigator = use_navigator(); diff --git a/src/components/nav.rs b/src/components/nav.rs index b0664bb10..b86922c90 100644 --- a/src/components/nav.rs +++ b/src/components/nav.rs @@ -1,11 +1,8 @@ use crate::*; use dioxus::html::input_data::keyboard_types::Key; -use dioxus::prelude::*; use dioxus_material_icons::{MaterialIcon, MaterialIconColor}; use std::ops::Deref; -pub(crate) static HIGHLIGHT_NAV_LAYOUT: GlobalSignal = Signal::global(|| false); -pub(crate) static SHOW_NAV: GlobalSignal = Signal::global(|| false); pub(crate) static SHOW_SEARCH: GlobalSignal = Signal::global(|| false); pub(crate) static LOGGED_IN: GlobalSignal = Signal::global(|| false); pub(crate) static SHOW_DOCS_NAV: GlobalSignal = Signal::global(|| false); @@ -13,9 +10,7 @@ pub(crate) static SHOW_DOCS_NAV: GlobalSignal = Signal::global(|| false); pub(crate) fn Nav() -> Element { rsx! { SearchModal {} - header { - class: "sticky top-0 z-30 bg-white bg-opacity-80 dark:text-gray-200 dark:bg-ideblack dark:bg-opacity-80 border-b dark:border-stone-700 h-16 backdrop-blur-sm", - class: if HIGHLIGHT_NAV_LAYOUT() { "border border-orange-600 rounded-md" }, + header { class: "sticky top-0 z-30 bg-white bg-opacity-80 dark:text-gray-200 dark:bg-ideblack dark:bg-opacity-80 border-b dark:border-stone-700 h-16 backdrop-blur-sm", div { class: "lg:py-2 px-2 max-w-screen-2xl mx-auto flex items-center justify-between text-sm leading-6 h-16", button { class: "bg-zinc-300 rounded-lg p-1 mr-4 lg:hidden my-3 h-10 flex items-center text-lg z-[100]", @@ -121,11 +116,11 @@ fn LinkList() -> Element { fn Search() -> Element { rsx! { - div { class: "relative md:w-full max-w-[20rem] xl:max-w-[20rem] 2xl:max-w-[20rem] sm:mx-auto sm:flex-1 text-md font-light leading-none", + div { class: "relative md:w-full max-w-[20rem] xl:max-w-[20rem] 2xl:max-w-[20rem] sm:mx-auto sm:flex-1 text-sm font-light leading-none", // Pop up a modal button { // Pop up a modal - class: "bg-gray-100 rounded-lg p-2 sm:w-full text-left text-gray-400 my-auto sm:flex sm:flex-row sm:align-middle sm:justify-between", + class: "bg-gray-100 rounded-lg p-1 sm:w-full text-left text-gray-400 my-auto sm:flex sm:flex-row sm:align-middle sm:justify-between", onclick: move |_| { *SHOW_SEARCH.write() = true; }, @@ -152,12 +147,14 @@ fn SearchModal() -> Element { let mut results = use_signal(|| SEARCH_INDEX.search(&search_text.read())); let mut last_key_press = use_signal(|| { - #[cfg(not(target_arch = "wasm32"))] - return 0.; - js_sys::Date::now() + if cfg!(target_arch = "wasm32") { + js_sys::Date::now() + } else { + 0. + } }); - use_resource(move || { + _ = use_resource(move || { async move { _ = search_text(); @@ -211,8 +208,8 @@ fn SearchModal() -> Element { oninput: move |evt| { search_text.set(evt.value()); }, - onmounted: move |evt| { - evt.set_focus(true); + onmounted: move |evt| async move { + _ = evt.set_focus(true).await; }, class: "flex-grow bg-transparent border-none outline-none text-xl pl-2 text-gray-800 dark:text-gray-100", placeholder: "Search the docs", diff --git a/src/components/notfound.rs b/src/components/notfound.rs index 2f8ba7c60..fed1ad6e3 100644 --- a/src/components/notfound.rs +++ b/src/components/notfound.rs @@ -1,6 +1,5 @@ use crate::icons::FERROUS_LOGO; use crate::*; -use dioxus::prelude::*; #[allow(unused)] #[component] diff --git a/src/components/tutorials.rs b/src/components/tutorials.rs deleted file mode 100644 index 9f95a71b9..000000000 --- a/src/components/tutorials.rs +++ /dev/null @@ -1,107 +0,0 @@ -use crate::*; -use dioxus::prelude::*; - -struct TutorialData { - title: &'static str, - description: &'static str, - contents: &'static str, - author: &'static str, - tags: &'static [&'static str], -} - -static TUTORIALS: &[TutorialData] = &[ - TutorialData { - title: "Making an HTTP request", - contents: "here's how to make an HTTP request", - description: "here's how to make an HTTP request", - author: "@jkelleyrtp", - tags: &["desktop", "async", "state"], - }, - TutorialData { - title: "Making an HTTP request", - contents: "here's how to make an HTTP request", - description: "here's how to make an HTTP request", - author: "@jkelleyrtp", - tags: &["desktop", "async", "state"], - }, - TutorialData { - title: "Making an HTTP request", - contents: "here's how to make an HTTP request", - description: "here's how to make an HTTP request", - author: "@jkelleyrtp", - tags: &["desktop", "async", "state"], - }, -]; - -pub(crate) fn Tutorials() -> Element { - rsx! { - div { class: "dark:bg-ideblack dark:text-white", - div { class: "max-w-screen-lg mx-auto", - section { class: "py-10", - div { class: "container px-4 mx-auto dark:text-white", - h2 { class: "mb-8 md:mb-16 text-5xl lg:text-6xl font-semibold font-heading font-sans", - "Tutorials" - } - div { class: "flex flex-wrap items-center", - div { class: "inline-block mb-6 md:mb-0", - p { class: "text-xl text-gray-500 dark:text-gray-300", - "Quick snippets of useful code to build basic app functions in Dioxus." - "The official tutorials are simple and mainly focus on one core concept at the time, while the community tutorials are usually more complex." - } - } - } - } - } - - div { class: "pt-4 pb-8", - ul { - for id in 0..TUTORIALS.len() { - TutorialPreview { id } - } - } - } - } - } - } -} - -#[component] -fn TutorialPreview(id: usize) -> Element { - let tutorial = &TUTORIALS[id]; - - rsx! { - li { class: "pb-4 border-b border-gray-200 dark:border-gray-500", - Link { to: Route::Tutorial { id }, - div { class: "rounded p-4 shadow", - div { class: "flex justify-between", - h2 { class: "text-lg font-bold", "{tutorial.title}" } - div { - for tag in tutorial.tags { - span { class: "rounded p-2 bg-orange", "{tag}" } - } - } - } - p { "{tutorial.description}" } - } - } - } - } -} - -#[component] -pub(crate) fn Tutorial(id: usize) -> Element { - let tutorial = TUTORIALS.get(id).context("No tutorial found")?; - - rsx!( - div { - h1 { "{tutorial.title}" } - h3 { "{tutorial.author}" } - ul { - for tag in tutorial.tags { - li { "{tag}" } - } - } - p { "{tutorial.contents}" } - } - ) -} diff --git a/src/icons.rs b/src/icons.rs index 8c77d86bf..32e67a71d 100644 --- a/src/icons.rs +++ b/src/icons.rs @@ -1,6 +1,21 @@ use dioxus::prelude::*; pub(crate) static FERROUS_LOGO: &str = "https://rustacean.net/assets/rustacean-flat-gesture.png"; +pub(crate) fn ArrowRight() -> Element { + rsx! { + svg { + class: "w-4 h-4 ml-1", + stroke_linejoin: "round", + stroke: "currentColor", + fill: "none", + view_box: "0 0 24 24", + stroke_width: "2", + stroke_linecap: "round", + path { d: "M5 12h14M12 5l7 7-7 7" } + } + } +} + pub(crate) fn ExternalLinkIcon() -> Element { rsx! { svg { @@ -37,114 +52,6 @@ pub(crate) fn Stacks() -> Element { } } -pub(crate) fn ArrowRight() -> Element { - rsx! { - svg { - class: "w-4 h-4 ml-1", - stroke_linejoin: "round", - stroke: "currentColor", - fill: "none", - view_box: "0 0 24 24", - stroke_width: "2", - stroke_linecap: "round", - path { d: "M5 12h14M12 5l7 7-7 7" } - } - } -} - -pub(crate) static Icon1: Component<()> = |cx| { - rsx!( - svg { - class: "w-6 h-6", - stroke_linecap: "round", - stroke_linejoin: "round", - fill: "none", - stroke_width: "2", - view_box: "0 0 24 24", - stroke: "currentColor", - path { d: "M22 12h-4l-3 9L9 3l-3 9H2" } - } - ) -}; - -pub(crate) static Icon2: Component<()> = |cx| { - rsx!( - svg { - class: "w-6 h-6", - stroke_linejoin: "round", - stroke_width: "2", - view_box: "0 0 24 24", - stroke_linecap: "round", - stroke: "currentColor", - fill: "none", - circle { r: "3", cx: "6", cy: "6" } - circle { cx: "6", cy: "18", r: "3" } - path { d: "M20 4L8.12 15.88M14.47 14.48L20 20M8.12 8.12L12 12" } - } - ) -}; - -pub(crate) static Icon3: Component<()> = |cx| { - rsx!( - svg { - class: "w-6 h-6", - stroke_linecap: "round", - fill: "none", - stroke_linejoin: "round", - stroke_width: "2", - stroke: "currentColor", - view_box: "0 0 24 24", - path { d: "M20 21v-2a4 4 0 00-4-4H8a4 4 0 00-4 4v2" } - circle { cx: "12", cy: "7", r: "4" } - } - ) -}; - -pub(crate) static Icon4: Component<()> = |cx| { - rsx!( - svg { - class: "w-6 h-6", - stroke: "currentColor", - view_box: "0 0 24 24", - stroke_linecap: "round", - fill: "none", - stroke_linejoin: "round", - stroke_width: "2", - path { d: "M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1zM4 22v-7" } - } - ) -}; - -pub(crate) static Icon5: Component<()> = |cx| { - rsx!( - svg { - class: "w-6 h-6", - fill: "none", - stroke: "currentColor", - stroke_linecap: "round", - stroke_linejoin: "round", - view_box: "0 0 24 24", - stroke_width: "2", - path { d: "M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z" } - } - ) -}; - -pub(crate) static Icon6: Component<()> = |cx| { - rsx!( - svg { - class: "w-6 h-6", - stroke: "currentColor", - view_box: "0 0 24 24", - stroke_linejoin: "round", - fill: "none", - stroke_width: "2", - stroke_linecap: "round", - path { d: "M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z" } - } - ) -}; - pub(crate) static IconCheck: Component<()> = |cx| { rsx!( svg { diff --git a/src/main.rs b/src/main.rs index 8804ecdf5..cb06576d8 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,51 +2,21 @@ use dioxus::html::input_data::keyboard_types::{Key, Modifiers}; use dioxus::prelude::*; -pub(crate) use docs::BookRoute; +pub use docs::BookRoute; use serde::{Deserialize, Serialize}; -mod doc_examples; -pub(crate) mod icons; -pub(crate) mod shortcut; -pub(crate) mod sitemap; -mod snippets; - -pub(crate) use components::*; -pub(crate) mod components { - pub(crate) mod awesome; - pub use awesome::*; - pub(crate) mod blog; - pub use blog::*; - pub(crate) mod deploy; - pub use deploy::*; - pub(crate) mod desktop_dependencies; - pub use desktop_dependencies::*; - pub(crate) mod footer; - pub use footer::*; - pub(crate) mod homepage; - pub use homepage::*; - pub(crate) mod learn; - pub use learn::*; - pub(crate) mod nav; - pub use nav::*; - pub(crate) mod notfound; - pub use notfound::*; - pub(crate) mod tutorials; - pub use tutorials::*; - pub(crate) mod playground; - pub use playground::*; -} +pub mod components; +pub mod doc_examples; +pub mod icons; +pub mod shortcut; +pub mod snippets; +pub use components::*; #[component] fn HeaderFooter() -> Element { - let cb = use_callback(|_| { - *SHOW_SEARCH.write() = true; - }); - + let cb = use_callback(|_| *SHOW_SEARCH.write() = true); shortcut::use_shortcut(Key::Character("/".to_string()), Modifiers::CONTROL, { - move || { - cb.call(()); - } + move || cb.call(()) }); rsx! { @@ -87,16 +57,9 @@ fn HeaderFooter() -> Element { #[derive(Clone, Routable, PartialEq, Eq, Serialize, Deserialize, Debug)] #[rustfmt::skip] -pub(crate) enum Route { +pub enum Route { #[layout(HeaderFooter)] #[route("/")] - #[redirect("/platforms", || Route::Homepage {})] - #[redirect("/platforms/web", || Route::Homepage {})] - #[redirect("/platforms/desktop", || Route::Homepage {})] - #[redirect("/platforms/liveview", || Route::Homepage {})] - #[redirect("/platforms/mobile", || Route::Homepage {})] - #[redirect("/platforms/ssr", || Route::Homepage {})] - #[redirect("/platforms/tui", || Route::Homepage {})] Homepage {}, #[route("/play")] @@ -108,9 +71,6 @@ pub(crate) enum Route { #[route("/deploy")] Deploy {}, - #[route("/tutorials/:id")] - Tutorial { id: usize }, - #[nest("/blog")] #[route("/")] BlogList {}, @@ -157,7 +117,7 @@ pub(crate) enum Route { Err404 { segments: Vec }, } -pub(crate) fn app() -> Element { +pub fn app() -> Element { rsx! { Router:: {} } @@ -197,63 +157,29 @@ mod docs { fn LayoutsExplanation() -> Element { rsx! { - pre { - onmouseenter: move |_| { - *HIGHLIGHT_NAV_LAYOUT.write() = true; - *HIGHLIGHT_DOCS_LAYOUT.write() = true; - *HIGHLIGHT_DOCS_CONTENT.write() = true; - }, - onmouseleave: move |_| { - *HIGHLIGHT_NAV_LAYOUT.write() = false; - *HIGHLIGHT_DOCS_LAYOUT.write() = false; - *HIGHLIGHT_DOCS_CONTENT.write() = false; - }, + pre { onmouseenter: move |_| {}, onmouseleave: move |_| {}, span { "#[derive(Clone, Routable, PartialEq, Eq, Serialize, Deserialize)] #[rustfmt::skip] pub enum Route {{\n\t" } span { - onmouseenter: move |_| { - *HIGHLIGHT_NAV_LAYOUT.write() = true; - *HIGHLIGHT_DOCS_LAYOUT.write() = false; - *HIGHLIGHT_DOCS_CONTENT.write() = false; - }, - onmouseleave: move |_| { - *HIGHLIGHT_NAV_LAYOUT.write() = true; - *HIGHLIGHT_DOCS_LAYOUT.write() = true; - *HIGHLIGHT_DOCS_CONTENT.write() = true; - }, + onmouseenter: move |_| {}, + onmouseleave: move |_| {}, class: "border border-orange-600 rounded-md", "#[layout(HeaderFooter)]" } span { "\n\t\t// ... other routes\n\t\t" } span { - onmouseenter: move |_| { - *HIGHLIGHT_DOCS_LAYOUT.write() = true; - *HIGHLIGHT_NAV_LAYOUT.write() = false; - *HIGHLIGHT_DOCS_CONTENT.write() = false; - }, - onmouseleave: move |_| { - *HIGHLIGHT_NAV_LAYOUT.write() = true; - *HIGHLIGHT_DOCS_LAYOUT.write() = true; - *HIGHLIGHT_DOCS_CONTENT.write() = true; - }, + onmouseenter: move |_| {}, + onmouseleave: move |_| {}, class: "border border-green-600 rounded-md", r##"#[layout(DocsSidebars)]"## } "\n\t\t\t" span { - onmouseenter: move |_| { - *HIGHLIGHT_NAV_LAYOUT.write() = false; - *HIGHLIGHT_DOCS_LAYOUT.write() = false; - *HIGHLIGHT_DOCS_CONTENT.write() = true; - }, - onmouseleave: move |_| { - *HIGHLIGHT_NAV_LAYOUT.write() = true; - *HIGHLIGHT_DOCS_LAYOUT.write() = true; - *HIGHLIGHT_DOCS_CONTENT.write() = true; - }, + onmouseenter: move |_| {}, + onmouseleave: move |_| {}, class: "border border-blue-600 rounded-md", r##"#[route("/learn")]"## } @@ -262,9 +188,6 @@ pub enum Route {{\n\t" } } - // use_mdbook::mdbook_router! {"docs-src/0.5"} - // include! {"../docs-gen/router.rs"} - mod router; pub use router::*; } diff --git a/src/sitemap.rs b/src/sitemap.rs deleted file mode 100644 index 5c5155061..000000000 --- a/src/sitemap.rs +++ /dev/null @@ -1,34 +0,0 @@ -pub(crate) static SECTIONS: &[(&str, &[(&str, &str)])] = &[ - ( - "Docs", - &[ - ("Installation", "docs/installation"), - ("Main Concepts", "docs/main"), - ("Advanced Guides", "docs/advanced"), - ("Hooks", "docs/hooks"), - ("Testing", "docs/testing"), - ("Contributing", "docs/contributing"), - ("FAQ", "docs/faq"), - ], - ), - ( - "Channels", - &[("Github", "https://github.com/jkelleyrtp/dioxus")], - ), - ( - "Community", - &[ - ("Code of Conduct", "docs/installation"), - ("Community Resources", "docs/main"), - ], - ), - ( - "More", - &[ - ("Tutorial", "docs/installation"), - ("Blog", "docs/main"), - ("Privacy", "docs/advanced"), - ("Terms", "docs/hooks"), - ], - ), -]; diff --git a/templates/404.html b/templates/404.html deleted file mode 100644 index b4f4df0d6..000000000 --- a/templates/404.html +++ /dev/null @@ -1,37 +0,0 @@ -
-
-
- Error 404 -

- Page not found -

-

- Sorry! We are unable to find the page you are looking for. -

- -
-
- -
-
-
diff --git a/templates/404.rsx b/templates/404.rsx deleted file mode 100644 index ea8265e73..000000000 --- a/templates/404.rsx +++ /dev/null @@ -1,36 +0,0 @@ - -fn component() -> Element { - rsx!{ - section { class: "py-20", - div { class: "container px-4 mx-auto", - div { class: "mb-12 text-center", - span { class: "text-xs font-semibold text-indigo-500 uppercase", - "Error 404" - } - h2 { class: "mt-2 mb-4 text-3xl leading-tight md:text-4xl md:leading-tight lg:text-5xl lg:leading-tight font-bold font-heading", - "Page not found" - } - p { class: "mb-8 text-base leading-relaxed lg:text-xl lg:leading-relaxed text-gray-500", - "Sorry! We are unable to find the page you are looking for." - } - div { - a { class: "block md:inline-block px-5 py-3 md:mr-3 mb-3 md:mb-0 text-sm bg-indigo-500 hover:bg-indigo-600 text-white font-semibold border border-indigo-500 hover:border-indigo-600 rounded transition duration-200", - href: "#", - "Return to homepage" - } - a { class: "block md:inline-block px-5 py-3 text-sm font-semibold text-indigo-500 hover:text-white hover:bg-indigo-500 border border-indigo-500 hover:border-indigo-600 rounded transition duration-200", - href: "#", - "Try Again" - } - } - } - div { class: "max-w-4xl h-64 md:h-96 mx-auto", - img { class: "h-full w-full rounded-lg object-cover", - src: "plain-assets/images/indigo-600-horizontal.png", - alt: "Background", - } - } - } - } - } -} \ No newline at end of file diff --git a/templates/hover.html b/templates/hover.html deleted file mode 100644 index c084ce96c..000000000 --- a/templates/hover.html +++ /dev/null @@ -1,62 +0,0 @@ - From f0ac43eb91c532dbf4ab315c39f55982ea087409 Mon Sep 17 00:00:00 2001 From: Jonathan Kelley Date: Sat, 17 Aug 2024 02:16:25 -0700 Subject: [PATCH 25/35] fix cmd+click by simply not supporting multilang --- build.rs | 10 ++-------- docs-src/0.5/book.toml | 14 +++++++------- docs-src/0.5/{en => src}/CLI/configure.md | 0 docs-src/0.5/{en => src}/CLI/creating.md | 0 docs-src/0.5/{en => src}/CLI/index.md | 0 docs-src/0.5/{en => src}/CLI/translate.md | 0 docs-src/0.5/{ => src}/SUMMARY.md | 4 ++-- .../0.5/{en => src}/contributing/governance.md | 0 .../{en => src}/contributing/guiding_principles.md | 0 docs-src/0.5/{en => src}/contributing/index.md | 0 .../{en => src}/contributing/project_structure.md | 0 docs-src/0.5/{en => src}/contributing/roadmap.md | 0 .../{en => src}/contributing/walkthrough_readme.md | 0 docs-src/0.5/{en => src}/cookbook/antipatterns.md | 0 .../0.5/{en => src}/cookbook/error_handling.md | 0 docs-src/0.5/{en => src}/cookbook/examples.md | 0 docs-src/0.5/{en => src}/cookbook/index.md | 0 .../0.5/{en => src}/cookbook/integrations/auth.md | 0 .../{en => src}/cookbook/integrations/database.md | 0 .../0.5/{en => src}/cookbook/integrations/index.md | 0 .../cookbook/integrations/internationalization.md | 0 .../{en => src}/cookbook/integrations/logging.md | 0 docs-src/0.5/{en => src}/cookbook/optimizing.md | 0 docs-src/0.5/{en => src}/cookbook/publishing.md | 0 .../cookbook/state/custom_hooks/index.md | 0 .../{en => src}/cookbook/state/external/index.md | 0 docs-src/0.5/{en => src}/cookbook/state/index.md | 0 docs-src/0.5/{en => src}/cookbook/tailwind.md | 0 docs-src/0.5/{en => src}/cookbook/testing.md | 0 .../0.5/{en => src}/essentials/breaking/index.md | 0 docs-src/0.5/{en => src}/essentials/index.md | 0 .../0.5/{en => src}/essentials/lifecycle/index.md | 0 docs-src/0.5/{en => src}/essentials/state/index.md | 0 .../0.5/{en => src}/essentials/structure/index.md | 0 .../0.5/{en => src}/getting_started/features.md | 0 docs-src/0.5/{en => src}/getting_started/index.md | 0 docs-src/0.5/{en => src}/guide/assets.md | 0 docs-src/0.5/{en => src}/guide/backend.md | 0 docs-src/0.5/{en => src}/guide/component.md | 0 docs-src/0.5/{en => src}/guide/data_fetching.md | 0 docs-src/0.5/{en => src}/guide/deploy.md | 0 docs-src/0.5/{en => src}/guide/fetching.md | 0 docs-src/0.5/{en => src}/guide/full_code.md | 0 docs-src/0.5/{en => src}/guide/index.md | 0 docs-src/0.5/{en => src}/guide/new_app.md | 0 docs-src/0.5/{en => src}/guide/next_steps.md | 0 docs-src/0.5/{en => src}/guide/routing.md | 0 docs-src/0.5/{en => src}/guide/state.md | 0 docs-src/0.5/{en => src}/guide/tooling.md | 0 .../0.5/{en => src}/guide/your_first_component.md | 0 docs-src/0.5/{en => src}/index.md | 0 docs-src/0.5/{en => src}/migration/fermi.md | 0 docs-src/0.5/{en => src}/migration/hooks.md | 0 docs-src/0.5/{en => src}/migration/index.md | 0 docs-src/0.5/{en => src}/migration/props.md | 0 docs-src/0.5/{en => src}/migration/state.md | 0 docs-src/0.5/{en => src}/reference/assets.md | 0 .../reference/choosing_a_web_renderer.md | 0 .../{en => src}/reference/component_lifecycle.md | 0 .../0.5/{en => src}/reference/component_props.md | 0 docs-src/0.5/{en => src}/reference/components.md | 0 docs-src/0.5/{en => src}/reference/context.md | 0 .../0.5/{en => src}/reference/desktop/index.md | 0 .../0.5/{en => src}/reference/dynamic_rendering.md | 0 .../0.5/{en => src}/reference/event_handlers.md | 0 .../reference/fullstack/authentication.md | 0 .../{en => src}/reference/fullstack/extractors.md | 0 .../0.5/{en => src}/reference/fullstack/index.md | 0 .../{en => src}/reference/fullstack/middleware.md | 0 .../{en => src}/reference/fullstack/publishing.md | 0 .../0.5/{en => src}/reference/fullstack/routing.md | 0 .../reference/fullstack/server_functions.md | 0 docs-src/0.5/{en => src}/reference/hooks.md | 0 docs-src/0.5/{en => src}/reference/index.md | 0 docs-src/0.5/{en => src}/reference/liveview.md | 0 .../0.5/{en => src}/reference/managing_state.md | 0 docs-src/0.5/{en => src}/reference/mobile/apis.md | 0 docs-src/0.5/{en => src}/reference/mobile/index.md | 0 docs-src/0.5/{en => src}/reference/router.md | 0 docs-src/0.5/{en => src}/reference/rsx.md | 0 docs-src/0.5/{en => src}/reference/spawn.md | 0 docs-src/0.5/{en => src}/reference/ssr.md | 0 docs-src/0.5/{en => src}/reference/tui.md | 0 .../0.5/{en => src}/reference/use_coroutine.md | 0 docs-src/0.5/{en => src}/reference/use_effect.md | 0 docs-src/0.5/{en => src}/reference/use_resource.md | 0 docs-src/0.5/{en => src}/reference/user_input.md | 0 docs-src/0.5/{en => src}/reference/web/index.md | 0 .../{en => src}/router/example/building-a-nest.md | 0 .../0.5/{en => src}/router/example/first-route.md | 0 .../0.5/{en => src}/router/example/full-code.md | 0 docs-src/0.5/{en => src}/router/example/index.md | 0 .../router/example/navigation-targets.md | 0 .../router/example/redirection-perfection.md | 0 docs-src/0.5/{en => src}/router/index.md | 0 docs-src/0.5/{en => src}/router/lib.rs | 0 .../router/reference/history-buttons.md | 0 .../router/reference/history-providers.md | 0 docs-src/0.5/{en => src}/router/reference/index.md | 0 .../0.5/{en => src}/router/reference/layouts.md | 0 .../router/reference/navigation/index.md | 0 .../router/reference/navigation/programmatic.md | 0 .../0.5/{en => src}/router/reference/redirects.md | 0 .../{en => src}/router/reference/routes/index.md | 0 .../{en => src}/router/reference/routes/nested.md | 0 .../router/reference/routing-update-callback.md | 0 .../router/reference/static-generation.md | 0 public/main.css | 2 +- 108 files changed, 12 insertions(+), 18 deletions(-) rename docs-src/0.5/{en => src}/CLI/configure.md (100%) rename docs-src/0.5/{en => src}/CLI/creating.md (100%) rename docs-src/0.5/{en => src}/CLI/index.md (100%) rename docs-src/0.5/{en => src}/CLI/translate.md (100%) rename docs-src/0.5/{ => src}/SUMMARY.md (99%) rename docs-src/0.5/{en => src}/contributing/governance.md (100%) rename docs-src/0.5/{en => src}/contributing/guiding_principles.md (100%) rename docs-src/0.5/{en => src}/contributing/index.md (100%) rename docs-src/0.5/{en => src}/contributing/project_structure.md (100%) rename docs-src/0.5/{en => src}/contributing/roadmap.md (100%) rename docs-src/0.5/{en => src}/contributing/walkthrough_readme.md (100%) rename docs-src/0.5/{en => src}/cookbook/antipatterns.md (100%) rename docs-src/0.5/{en => src}/cookbook/error_handling.md (100%) rename docs-src/0.5/{en => src}/cookbook/examples.md (100%) rename docs-src/0.5/{en => src}/cookbook/index.md (100%) rename docs-src/0.5/{en => src}/cookbook/integrations/auth.md (100%) rename docs-src/0.5/{en => src}/cookbook/integrations/database.md (100%) rename docs-src/0.5/{en => src}/cookbook/integrations/index.md (100%) rename docs-src/0.5/{en => src}/cookbook/integrations/internationalization.md (100%) rename docs-src/0.5/{en => src}/cookbook/integrations/logging.md (100%) rename docs-src/0.5/{en => src}/cookbook/optimizing.md (100%) rename docs-src/0.5/{en => src}/cookbook/publishing.md (100%) rename docs-src/0.5/{en => src}/cookbook/state/custom_hooks/index.md (100%) rename docs-src/0.5/{en => src}/cookbook/state/external/index.md (100%) rename docs-src/0.5/{en => src}/cookbook/state/index.md (100%) rename docs-src/0.5/{en => src}/cookbook/tailwind.md (100%) rename docs-src/0.5/{en => src}/cookbook/testing.md (100%) rename docs-src/0.5/{en => src}/essentials/breaking/index.md (100%) rename docs-src/0.5/{en => src}/essentials/index.md (100%) rename docs-src/0.5/{en => src}/essentials/lifecycle/index.md (100%) rename docs-src/0.5/{en => src}/essentials/state/index.md (100%) rename docs-src/0.5/{en => src}/essentials/structure/index.md (100%) rename docs-src/0.5/{en => src}/getting_started/features.md (100%) rename docs-src/0.5/{en => src}/getting_started/index.md (100%) rename docs-src/0.5/{en => src}/guide/assets.md (100%) rename docs-src/0.5/{en => src}/guide/backend.md (100%) rename docs-src/0.5/{en => src}/guide/component.md (100%) rename docs-src/0.5/{en => src}/guide/data_fetching.md (100%) rename docs-src/0.5/{en => src}/guide/deploy.md (100%) rename docs-src/0.5/{en => src}/guide/fetching.md (100%) rename docs-src/0.5/{en => src}/guide/full_code.md (100%) rename docs-src/0.5/{en => src}/guide/index.md (100%) rename docs-src/0.5/{en => src}/guide/new_app.md (100%) rename docs-src/0.5/{en => src}/guide/next_steps.md (100%) rename docs-src/0.5/{en => src}/guide/routing.md (100%) rename docs-src/0.5/{en => src}/guide/state.md (100%) rename docs-src/0.5/{en => src}/guide/tooling.md (100%) rename docs-src/0.5/{en => src}/guide/your_first_component.md (100%) rename docs-src/0.5/{en => src}/index.md (100%) rename docs-src/0.5/{en => src}/migration/fermi.md (100%) rename docs-src/0.5/{en => src}/migration/hooks.md (100%) rename docs-src/0.5/{en => src}/migration/index.md (100%) rename docs-src/0.5/{en => src}/migration/props.md (100%) rename docs-src/0.5/{en => src}/migration/state.md (100%) rename docs-src/0.5/{en => src}/reference/assets.md (100%) rename docs-src/0.5/{en => src}/reference/choosing_a_web_renderer.md (100%) rename docs-src/0.5/{en => src}/reference/component_lifecycle.md (100%) rename docs-src/0.5/{en => src}/reference/component_props.md (100%) rename docs-src/0.5/{en => src}/reference/components.md (100%) rename docs-src/0.5/{en => src}/reference/context.md (100%) rename docs-src/0.5/{en => src}/reference/desktop/index.md (100%) rename docs-src/0.5/{en => src}/reference/dynamic_rendering.md (100%) rename docs-src/0.5/{en => src}/reference/event_handlers.md (100%) rename docs-src/0.5/{en => src}/reference/fullstack/authentication.md (100%) rename docs-src/0.5/{en => src}/reference/fullstack/extractors.md (100%) rename docs-src/0.5/{en => src}/reference/fullstack/index.md (100%) rename docs-src/0.5/{en => src}/reference/fullstack/middleware.md (100%) rename docs-src/0.5/{en => src}/reference/fullstack/publishing.md (100%) rename docs-src/0.5/{en => src}/reference/fullstack/routing.md (100%) rename docs-src/0.5/{en => src}/reference/fullstack/server_functions.md (100%) rename docs-src/0.5/{en => src}/reference/hooks.md (100%) rename docs-src/0.5/{en => src}/reference/index.md (100%) rename docs-src/0.5/{en => src}/reference/liveview.md (100%) rename docs-src/0.5/{en => src}/reference/managing_state.md (100%) rename docs-src/0.5/{en => src}/reference/mobile/apis.md (100%) rename docs-src/0.5/{en => src}/reference/mobile/index.md (100%) rename docs-src/0.5/{en => src}/reference/router.md (100%) rename docs-src/0.5/{en => src}/reference/rsx.md (100%) rename docs-src/0.5/{en => src}/reference/spawn.md (100%) rename docs-src/0.5/{en => src}/reference/ssr.md (100%) rename docs-src/0.5/{en => src}/reference/tui.md (100%) rename docs-src/0.5/{en => src}/reference/use_coroutine.md (100%) rename docs-src/0.5/{en => src}/reference/use_effect.md (100%) rename docs-src/0.5/{en => src}/reference/use_resource.md (100%) rename docs-src/0.5/{en => src}/reference/user_input.md (100%) rename docs-src/0.5/{en => src}/reference/web/index.md (100%) rename docs-src/0.5/{en => src}/router/example/building-a-nest.md (100%) rename docs-src/0.5/{en => src}/router/example/first-route.md (100%) rename docs-src/0.5/{en => src}/router/example/full-code.md (100%) rename docs-src/0.5/{en => src}/router/example/index.md (100%) rename docs-src/0.5/{en => src}/router/example/navigation-targets.md (100%) rename docs-src/0.5/{en => src}/router/example/redirection-perfection.md (100%) rename docs-src/0.5/{en => src}/router/index.md (100%) rename docs-src/0.5/{en => src}/router/lib.rs (100%) rename docs-src/0.5/{en => src}/router/reference/history-buttons.md (100%) rename docs-src/0.5/{en => src}/router/reference/history-providers.md (100%) rename docs-src/0.5/{en => src}/router/reference/index.md (100%) rename docs-src/0.5/{en => src}/router/reference/layouts.md (100%) rename docs-src/0.5/{en => src}/router/reference/navigation/index.md (100%) rename docs-src/0.5/{en => src}/router/reference/navigation/programmatic.md (100%) rename docs-src/0.5/{en => src}/router/reference/redirects.md (100%) rename docs-src/0.5/{en => src}/router/reference/routes/index.md (100%) rename docs-src/0.5/{en => src}/router/reference/routes/nested.md (100%) rename docs-src/0.5/{en => src}/router/reference/routing-update-callback.md (100%) rename docs-src/0.5/{en => src}/router/reference/static-generation.md (100%) diff --git a/build.rs b/build.rs index 89a155385..68341089d 100644 --- a/build.rs +++ b/build.rs @@ -1,6 +1,6 @@ use std::{env::current_dir, path::PathBuf}; -use mdbook_gen::{generate_router_as_file, generate_router}; +use mdbook_gen::generate_router; use mdbook_shared::MdBook; fn main() { @@ -9,14 +9,8 @@ fn main() { let mdbook_dir = PathBuf::from("docs-src/0.5"); let out_dir = current_dir().unwrap().join("src/docs"); - // let out = mdbook_gen::generate_router_build_script(mdbook_dir); - // let router = generate_router(book_path, book); - let mut out = generate_router(mdbook_dir.clone(), MdBook::new(mdbook_dir).unwrap()); - let mut out = out.to_string(); - - // let mut out = generate_router_as_file(mdbook_dir.clone(), MdBook::new(mdbook_dir).unwrap()); - // let mut out = prettyplease::unparse(&file_src); + let mut out = generate_router(mdbook_dir.clone(), MdBook::new(mdbook_dir).unwrap()).to_string(); out.push_str("\n"); out.push_str("use super::*;\n"); diff --git a/docs-src/0.5/book.toml b/docs-src/0.5/book.toml index b15949334..125aa7968 100644 --- a/docs-src/0.5/book.toml +++ b/docs-src/0.5/book.toml @@ -2,15 +2,15 @@ title = "Dioxus Documentation" description = "Get started with Dioxus, a portable, performant, and ergonomic framework for building cross-platform user interfaces in Rust" authors = ["Jonathan Kelley"] -language = "en" +# language = "en" -[language.en] -name = "English" +# [language.en] +# name = "English" -[language.pt-br] -name = "Português Brasileiro" -title = "Documentação do Dioxus" -description = "Introdução ao Dioxus, um framework portátil, de alto desempenho e ergonômico para criar interfaces de usuário multiplataforma em Rust." +# [language.pt-br] +# name = "Português Brasileiro" +# title = "Documentação do Dioxus" +# description = "Introdução ao Dioxus, um framework portátil, de alto desempenho e ergonômico para criar interfaces de usuário multiplataforma em Rust." [rust] edition = "2018" diff --git a/docs-src/0.5/en/CLI/configure.md b/docs-src/0.5/src/CLI/configure.md similarity index 100% rename from docs-src/0.5/en/CLI/configure.md rename to docs-src/0.5/src/CLI/configure.md diff --git a/docs-src/0.5/en/CLI/creating.md b/docs-src/0.5/src/CLI/creating.md similarity index 100% rename from docs-src/0.5/en/CLI/creating.md rename to docs-src/0.5/src/CLI/creating.md diff --git a/docs-src/0.5/en/CLI/index.md b/docs-src/0.5/src/CLI/index.md similarity index 100% rename from docs-src/0.5/en/CLI/index.md rename to docs-src/0.5/src/CLI/index.md diff --git a/docs-src/0.5/en/CLI/translate.md b/docs-src/0.5/src/CLI/translate.md similarity index 100% rename from docs-src/0.5/en/CLI/translate.md rename to docs-src/0.5/src/CLI/translate.md diff --git a/docs-src/0.5/SUMMARY.md b/docs-src/0.5/src/SUMMARY.md similarity index 99% rename from docs-src/0.5/SUMMARY.md rename to docs-src/0.5/src/SUMMARY.md index 84fe48b3e..24cf5e039 100644 --- a/docs-src/0.5/SUMMARY.md +++ b/docs-src/0.5/src/SUMMARY.md @@ -77,11 +77,11 @@ - [SDK](router/reference/sdk.md) - [Fullstack and the server](router/reference/fullstack-and-the-server.md) --> - [Assets](reference/assets.md) + - [Web](reference/web/index.md) - [Desktop](reference/desktop/index.md) - [Mobile](reference/mobile/index.md) - [APIs](reference/mobile/apis.md) - - [Web](reference/web/index.md) - - [SSR](reference/ssr.md) + - [Streaming and SSR](reference/ssr.md) - [Fullstack](reference/fullstack/index.md) - [Server Functions](reference/fullstack/server_functions.md) - [Extractors](reference/fullstack/extractors.md) diff --git a/docs-src/0.5/en/contributing/governance.md b/docs-src/0.5/src/contributing/governance.md similarity index 100% rename from docs-src/0.5/en/contributing/governance.md rename to docs-src/0.5/src/contributing/governance.md diff --git a/docs-src/0.5/en/contributing/guiding_principles.md b/docs-src/0.5/src/contributing/guiding_principles.md similarity index 100% rename from docs-src/0.5/en/contributing/guiding_principles.md rename to docs-src/0.5/src/contributing/guiding_principles.md diff --git a/docs-src/0.5/en/contributing/index.md b/docs-src/0.5/src/contributing/index.md similarity index 100% rename from docs-src/0.5/en/contributing/index.md rename to docs-src/0.5/src/contributing/index.md diff --git a/docs-src/0.5/en/contributing/project_structure.md b/docs-src/0.5/src/contributing/project_structure.md similarity index 100% rename from docs-src/0.5/en/contributing/project_structure.md rename to docs-src/0.5/src/contributing/project_structure.md diff --git a/docs-src/0.5/en/contributing/roadmap.md b/docs-src/0.5/src/contributing/roadmap.md similarity index 100% rename from docs-src/0.5/en/contributing/roadmap.md rename to docs-src/0.5/src/contributing/roadmap.md diff --git a/docs-src/0.5/en/contributing/walkthrough_readme.md b/docs-src/0.5/src/contributing/walkthrough_readme.md similarity index 100% rename from docs-src/0.5/en/contributing/walkthrough_readme.md rename to docs-src/0.5/src/contributing/walkthrough_readme.md diff --git a/docs-src/0.5/en/cookbook/antipatterns.md b/docs-src/0.5/src/cookbook/antipatterns.md similarity index 100% rename from docs-src/0.5/en/cookbook/antipatterns.md rename to docs-src/0.5/src/cookbook/antipatterns.md diff --git a/docs-src/0.5/en/cookbook/error_handling.md b/docs-src/0.5/src/cookbook/error_handling.md similarity index 100% rename from docs-src/0.5/en/cookbook/error_handling.md rename to docs-src/0.5/src/cookbook/error_handling.md diff --git a/docs-src/0.5/en/cookbook/examples.md b/docs-src/0.5/src/cookbook/examples.md similarity index 100% rename from docs-src/0.5/en/cookbook/examples.md rename to docs-src/0.5/src/cookbook/examples.md diff --git a/docs-src/0.5/en/cookbook/index.md b/docs-src/0.5/src/cookbook/index.md similarity index 100% rename from docs-src/0.5/en/cookbook/index.md rename to docs-src/0.5/src/cookbook/index.md diff --git a/docs-src/0.5/en/cookbook/integrations/auth.md b/docs-src/0.5/src/cookbook/integrations/auth.md similarity index 100% rename from docs-src/0.5/en/cookbook/integrations/auth.md rename to docs-src/0.5/src/cookbook/integrations/auth.md diff --git a/docs-src/0.5/en/cookbook/integrations/database.md b/docs-src/0.5/src/cookbook/integrations/database.md similarity index 100% rename from docs-src/0.5/en/cookbook/integrations/database.md rename to docs-src/0.5/src/cookbook/integrations/database.md diff --git a/docs-src/0.5/en/cookbook/integrations/index.md b/docs-src/0.5/src/cookbook/integrations/index.md similarity index 100% rename from docs-src/0.5/en/cookbook/integrations/index.md rename to docs-src/0.5/src/cookbook/integrations/index.md diff --git a/docs-src/0.5/en/cookbook/integrations/internationalization.md b/docs-src/0.5/src/cookbook/integrations/internationalization.md similarity index 100% rename from docs-src/0.5/en/cookbook/integrations/internationalization.md rename to docs-src/0.5/src/cookbook/integrations/internationalization.md diff --git a/docs-src/0.5/en/cookbook/integrations/logging.md b/docs-src/0.5/src/cookbook/integrations/logging.md similarity index 100% rename from docs-src/0.5/en/cookbook/integrations/logging.md rename to docs-src/0.5/src/cookbook/integrations/logging.md diff --git a/docs-src/0.5/en/cookbook/optimizing.md b/docs-src/0.5/src/cookbook/optimizing.md similarity index 100% rename from docs-src/0.5/en/cookbook/optimizing.md rename to docs-src/0.5/src/cookbook/optimizing.md diff --git a/docs-src/0.5/en/cookbook/publishing.md b/docs-src/0.5/src/cookbook/publishing.md similarity index 100% rename from docs-src/0.5/en/cookbook/publishing.md rename to docs-src/0.5/src/cookbook/publishing.md diff --git a/docs-src/0.5/en/cookbook/state/custom_hooks/index.md b/docs-src/0.5/src/cookbook/state/custom_hooks/index.md similarity index 100% rename from docs-src/0.5/en/cookbook/state/custom_hooks/index.md rename to docs-src/0.5/src/cookbook/state/custom_hooks/index.md diff --git a/docs-src/0.5/en/cookbook/state/external/index.md b/docs-src/0.5/src/cookbook/state/external/index.md similarity index 100% rename from docs-src/0.5/en/cookbook/state/external/index.md rename to docs-src/0.5/src/cookbook/state/external/index.md diff --git a/docs-src/0.5/en/cookbook/state/index.md b/docs-src/0.5/src/cookbook/state/index.md similarity index 100% rename from docs-src/0.5/en/cookbook/state/index.md rename to docs-src/0.5/src/cookbook/state/index.md diff --git a/docs-src/0.5/en/cookbook/tailwind.md b/docs-src/0.5/src/cookbook/tailwind.md similarity index 100% rename from docs-src/0.5/en/cookbook/tailwind.md rename to docs-src/0.5/src/cookbook/tailwind.md diff --git a/docs-src/0.5/en/cookbook/testing.md b/docs-src/0.5/src/cookbook/testing.md similarity index 100% rename from docs-src/0.5/en/cookbook/testing.md rename to docs-src/0.5/src/cookbook/testing.md diff --git a/docs-src/0.5/en/essentials/breaking/index.md b/docs-src/0.5/src/essentials/breaking/index.md similarity index 100% rename from docs-src/0.5/en/essentials/breaking/index.md rename to docs-src/0.5/src/essentials/breaking/index.md diff --git a/docs-src/0.5/en/essentials/index.md b/docs-src/0.5/src/essentials/index.md similarity index 100% rename from docs-src/0.5/en/essentials/index.md rename to docs-src/0.5/src/essentials/index.md diff --git a/docs-src/0.5/en/essentials/lifecycle/index.md b/docs-src/0.5/src/essentials/lifecycle/index.md similarity index 100% rename from docs-src/0.5/en/essentials/lifecycle/index.md rename to docs-src/0.5/src/essentials/lifecycle/index.md diff --git a/docs-src/0.5/en/essentials/state/index.md b/docs-src/0.5/src/essentials/state/index.md similarity index 100% rename from docs-src/0.5/en/essentials/state/index.md rename to docs-src/0.5/src/essentials/state/index.md diff --git a/docs-src/0.5/en/essentials/structure/index.md b/docs-src/0.5/src/essentials/structure/index.md similarity index 100% rename from docs-src/0.5/en/essentials/structure/index.md rename to docs-src/0.5/src/essentials/structure/index.md diff --git a/docs-src/0.5/en/getting_started/features.md b/docs-src/0.5/src/getting_started/features.md similarity index 100% rename from docs-src/0.5/en/getting_started/features.md rename to docs-src/0.5/src/getting_started/features.md diff --git a/docs-src/0.5/en/getting_started/index.md b/docs-src/0.5/src/getting_started/index.md similarity index 100% rename from docs-src/0.5/en/getting_started/index.md rename to docs-src/0.5/src/getting_started/index.md diff --git a/docs-src/0.5/en/guide/assets.md b/docs-src/0.5/src/guide/assets.md similarity index 100% rename from docs-src/0.5/en/guide/assets.md rename to docs-src/0.5/src/guide/assets.md diff --git a/docs-src/0.5/en/guide/backend.md b/docs-src/0.5/src/guide/backend.md similarity index 100% rename from docs-src/0.5/en/guide/backend.md rename to docs-src/0.5/src/guide/backend.md diff --git a/docs-src/0.5/en/guide/component.md b/docs-src/0.5/src/guide/component.md similarity index 100% rename from docs-src/0.5/en/guide/component.md rename to docs-src/0.5/src/guide/component.md diff --git a/docs-src/0.5/en/guide/data_fetching.md b/docs-src/0.5/src/guide/data_fetching.md similarity index 100% rename from docs-src/0.5/en/guide/data_fetching.md rename to docs-src/0.5/src/guide/data_fetching.md diff --git a/docs-src/0.5/en/guide/deploy.md b/docs-src/0.5/src/guide/deploy.md similarity index 100% rename from docs-src/0.5/en/guide/deploy.md rename to docs-src/0.5/src/guide/deploy.md diff --git a/docs-src/0.5/en/guide/fetching.md b/docs-src/0.5/src/guide/fetching.md similarity index 100% rename from docs-src/0.5/en/guide/fetching.md rename to docs-src/0.5/src/guide/fetching.md diff --git a/docs-src/0.5/en/guide/full_code.md b/docs-src/0.5/src/guide/full_code.md similarity index 100% rename from docs-src/0.5/en/guide/full_code.md rename to docs-src/0.5/src/guide/full_code.md diff --git a/docs-src/0.5/en/guide/index.md b/docs-src/0.5/src/guide/index.md similarity index 100% rename from docs-src/0.5/en/guide/index.md rename to docs-src/0.5/src/guide/index.md diff --git a/docs-src/0.5/en/guide/new_app.md b/docs-src/0.5/src/guide/new_app.md similarity index 100% rename from docs-src/0.5/en/guide/new_app.md rename to docs-src/0.5/src/guide/new_app.md diff --git a/docs-src/0.5/en/guide/next_steps.md b/docs-src/0.5/src/guide/next_steps.md similarity index 100% rename from docs-src/0.5/en/guide/next_steps.md rename to docs-src/0.5/src/guide/next_steps.md diff --git a/docs-src/0.5/en/guide/routing.md b/docs-src/0.5/src/guide/routing.md similarity index 100% rename from docs-src/0.5/en/guide/routing.md rename to docs-src/0.5/src/guide/routing.md diff --git a/docs-src/0.5/en/guide/state.md b/docs-src/0.5/src/guide/state.md similarity index 100% rename from docs-src/0.5/en/guide/state.md rename to docs-src/0.5/src/guide/state.md diff --git a/docs-src/0.5/en/guide/tooling.md b/docs-src/0.5/src/guide/tooling.md similarity index 100% rename from docs-src/0.5/en/guide/tooling.md rename to docs-src/0.5/src/guide/tooling.md diff --git a/docs-src/0.5/en/guide/your_first_component.md b/docs-src/0.5/src/guide/your_first_component.md similarity index 100% rename from docs-src/0.5/en/guide/your_first_component.md rename to docs-src/0.5/src/guide/your_first_component.md diff --git a/docs-src/0.5/en/index.md b/docs-src/0.5/src/index.md similarity index 100% rename from docs-src/0.5/en/index.md rename to docs-src/0.5/src/index.md diff --git a/docs-src/0.5/en/migration/fermi.md b/docs-src/0.5/src/migration/fermi.md similarity index 100% rename from docs-src/0.5/en/migration/fermi.md rename to docs-src/0.5/src/migration/fermi.md diff --git a/docs-src/0.5/en/migration/hooks.md b/docs-src/0.5/src/migration/hooks.md similarity index 100% rename from docs-src/0.5/en/migration/hooks.md rename to docs-src/0.5/src/migration/hooks.md diff --git a/docs-src/0.5/en/migration/index.md b/docs-src/0.5/src/migration/index.md similarity index 100% rename from docs-src/0.5/en/migration/index.md rename to docs-src/0.5/src/migration/index.md diff --git a/docs-src/0.5/en/migration/props.md b/docs-src/0.5/src/migration/props.md similarity index 100% rename from docs-src/0.5/en/migration/props.md rename to docs-src/0.5/src/migration/props.md diff --git a/docs-src/0.5/en/migration/state.md b/docs-src/0.5/src/migration/state.md similarity index 100% rename from docs-src/0.5/en/migration/state.md rename to docs-src/0.5/src/migration/state.md diff --git a/docs-src/0.5/en/reference/assets.md b/docs-src/0.5/src/reference/assets.md similarity index 100% rename from docs-src/0.5/en/reference/assets.md rename to docs-src/0.5/src/reference/assets.md diff --git a/docs-src/0.5/en/reference/choosing_a_web_renderer.md b/docs-src/0.5/src/reference/choosing_a_web_renderer.md similarity index 100% rename from docs-src/0.5/en/reference/choosing_a_web_renderer.md rename to docs-src/0.5/src/reference/choosing_a_web_renderer.md diff --git a/docs-src/0.5/en/reference/component_lifecycle.md b/docs-src/0.5/src/reference/component_lifecycle.md similarity index 100% rename from docs-src/0.5/en/reference/component_lifecycle.md rename to docs-src/0.5/src/reference/component_lifecycle.md diff --git a/docs-src/0.5/en/reference/component_props.md b/docs-src/0.5/src/reference/component_props.md similarity index 100% rename from docs-src/0.5/en/reference/component_props.md rename to docs-src/0.5/src/reference/component_props.md diff --git a/docs-src/0.5/en/reference/components.md b/docs-src/0.5/src/reference/components.md similarity index 100% rename from docs-src/0.5/en/reference/components.md rename to docs-src/0.5/src/reference/components.md diff --git a/docs-src/0.5/en/reference/context.md b/docs-src/0.5/src/reference/context.md similarity index 100% rename from docs-src/0.5/en/reference/context.md rename to docs-src/0.5/src/reference/context.md diff --git a/docs-src/0.5/en/reference/desktop/index.md b/docs-src/0.5/src/reference/desktop/index.md similarity index 100% rename from docs-src/0.5/en/reference/desktop/index.md rename to docs-src/0.5/src/reference/desktop/index.md diff --git a/docs-src/0.5/en/reference/dynamic_rendering.md b/docs-src/0.5/src/reference/dynamic_rendering.md similarity index 100% rename from docs-src/0.5/en/reference/dynamic_rendering.md rename to docs-src/0.5/src/reference/dynamic_rendering.md diff --git a/docs-src/0.5/en/reference/event_handlers.md b/docs-src/0.5/src/reference/event_handlers.md similarity index 100% rename from docs-src/0.5/en/reference/event_handlers.md rename to docs-src/0.5/src/reference/event_handlers.md diff --git a/docs-src/0.5/en/reference/fullstack/authentication.md b/docs-src/0.5/src/reference/fullstack/authentication.md similarity index 100% rename from docs-src/0.5/en/reference/fullstack/authentication.md rename to docs-src/0.5/src/reference/fullstack/authentication.md diff --git a/docs-src/0.5/en/reference/fullstack/extractors.md b/docs-src/0.5/src/reference/fullstack/extractors.md similarity index 100% rename from docs-src/0.5/en/reference/fullstack/extractors.md rename to docs-src/0.5/src/reference/fullstack/extractors.md diff --git a/docs-src/0.5/en/reference/fullstack/index.md b/docs-src/0.5/src/reference/fullstack/index.md similarity index 100% rename from docs-src/0.5/en/reference/fullstack/index.md rename to docs-src/0.5/src/reference/fullstack/index.md diff --git a/docs-src/0.5/en/reference/fullstack/middleware.md b/docs-src/0.5/src/reference/fullstack/middleware.md similarity index 100% rename from docs-src/0.5/en/reference/fullstack/middleware.md rename to docs-src/0.5/src/reference/fullstack/middleware.md diff --git a/docs-src/0.5/en/reference/fullstack/publishing.md b/docs-src/0.5/src/reference/fullstack/publishing.md similarity index 100% rename from docs-src/0.5/en/reference/fullstack/publishing.md rename to docs-src/0.5/src/reference/fullstack/publishing.md diff --git a/docs-src/0.5/en/reference/fullstack/routing.md b/docs-src/0.5/src/reference/fullstack/routing.md similarity index 100% rename from docs-src/0.5/en/reference/fullstack/routing.md rename to docs-src/0.5/src/reference/fullstack/routing.md diff --git a/docs-src/0.5/en/reference/fullstack/server_functions.md b/docs-src/0.5/src/reference/fullstack/server_functions.md similarity index 100% rename from docs-src/0.5/en/reference/fullstack/server_functions.md rename to docs-src/0.5/src/reference/fullstack/server_functions.md diff --git a/docs-src/0.5/en/reference/hooks.md b/docs-src/0.5/src/reference/hooks.md similarity index 100% rename from docs-src/0.5/en/reference/hooks.md rename to docs-src/0.5/src/reference/hooks.md diff --git a/docs-src/0.5/en/reference/index.md b/docs-src/0.5/src/reference/index.md similarity index 100% rename from docs-src/0.5/en/reference/index.md rename to docs-src/0.5/src/reference/index.md diff --git a/docs-src/0.5/en/reference/liveview.md b/docs-src/0.5/src/reference/liveview.md similarity index 100% rename from docs-src/0.5/en/reference/liveview.md rename to docs-src/0.5/src/reference/liveview.md diff --git a/docs-src/0.5/en/reference/managing_state.md b/docs-src/0.5/src/reference/managing_state.md similarity index 100% rename from docs-src/0.5/en/reference/managing_state.md rename to docs-src/0.5/src/reference/managing_state.md diff --git a/docs-src/0.5/en/reference/mobile/apis.md b/docs-src/0.5/src/reference/mobile/apis.md similarity index 100% rename from docs-src/0.5/en/reference/mobile/apis.md rename to docs-src/0.5/src/reference/mobile/apis.md diff --git a/docs-src/0.5/en/reference/mobile/index.md b/docs-src/0.5/src/reference/mobile/index.md similarity index 100% rename from docs-src/0.5/en/reference/mobile/index.md rename to docs-src/0.5/src/reference/mobile/index.md diff --git a/docs-src/0.5/en/reference/router.md b/docs-src/0.5/src/reference/router.md similarity index 100% rename from docs-src/0.5/en/reference/router.md rename to docs-src/0.5/src/reference/router.md diff --git a/docs-src/0.5/en/reference/rsx.md b/docs-src/0.5/src/reference/rsx.md similarity index 100% rename from docs-src/0.5/en/reference/rsx.md rename to docs-src/0.5/src/reference/rsx.md diff --git a/docs-src/0.5/en/reference/spawn.md b/docs-src/0.5/src/reference/spawn.md similarity index 100% rename from docs-src/0.5/en/reference/spawn.md rename to docs-src/0.5/src/reference/spawn.md diff --git a/docs-src/0.5/en/reference/ssr.md b/docs-src/0.5/src/reference/ssr.md similarity index 100% rename from docs-src/0.5/en/reference/ssr.md rename to docs-src/0.5/src/reference/ssr.md diff --git a/docs-src/0.5/en/reference/tui.md b/docs-src/0.5/src/reference/tui.md similarity index 100% rename from docs-src/0.5/en/reference/tui.md rename to docs-src/0.5/src/reference/tui.md diff --git a/docs-src/0.5/en/reference/use_coroutine.md b/docs-src/0.5/src/reference/use_coroutine.md similarity index 100% rename from docs-src/0.5/en/reference/use_coroutine.md rename to docs-src/0.5/src/reference/use_coroutine.md diff --git a/docs-src/0.5/en/reference/use_effect.md b/docs-src/0.5/src/reference/use_effect.md similarity index 100% rename from docs-src/0.5/en/reference/use_effect.md rename to docs-src/0.5/src/reference/use_effect.md diff --git a/docs-src/0.5/en/reference/use_resource.md b/docs-src/0.5/src/reference/use_resource.md similarity index 100% rename from docs-src/0.5/en/reference/use_resource.md rename to docs-src/0.5/src/reference/use_resource.md diff --git a/docs-src/0.5/en/reference/user_input.md b/docs-src/0.5/src/reference/user_input.md similarity index 100% rename from docs-src/0.5/en/reference/user_input.md rename to docs-src/0.5/src/reference/user_input.md diff --git a/docs-src/0.5/en/reference/web/index.md b/docs-src/0.5/src/reference/web/index.md similarity index 100% rename from docs-src/0.5/en/reference/web/index.md rename to docs-src/0.5/src/reference/web/index.md diff --git a/docs-src/0.5/en/router/example/building-a-nest.md b/docs-src/0.5/src/router/example/building-a-nest.md similarity index 100% rename from docs-src/0.5/en/router/example/building-a-nest.md rename to docs-src/0.5/src/router/example/building-a-nest.md diff --git a/docs-src/0.5/en/router/example/first-route.md b/docs-src/0.5/src/router/example/first-route.md similarity index 100% rename from docs-src/0.5/en/router/example/first-route.md rename to docs-src/0.5/src/router/example/first-route.md diff --git a/docs-src/0.5/en/router/example/full-code.md b/docs-src/0.5/src/router/example/full-code.md similarity index 100% rename from docs-src/0.5/en/router/example/full-code.md rename to docs-src/0.5/src/router/example/full-code.md diff --git a/docs-src/0.5/en/router/example/index.md b/docs-src/0.5/src/router/example/index.md similarity index 100% rename from docs-src/0.5/en/router/example/index.md rename to docs-src/0.5/src/router/example/index.md diff --git a/docs-src/0.5/en/router/example/navigation-targets.md b/docs-src/0.5/src/router/example/navigation-targets.md similarity index 100% rename from docs-src/0.5/en/router/example/navigation-targets.md rename to docs-src/0.5/src/router/example/navigation-targets.md diff --git a/docs-src/0.5/en/router/example/redirection-perfection.md b/docs-src/0.5/src/router/example/redirection-perfection.md similarity index 100% rename from docs-src/0.5/en/router/example/redirection-perfection.md rename to docs-src/0.5/src/router/example/redirection-perfection.md diff --git a/docs-src/0.5/en/router/index.md b/docs-src/0.5/src/router/index.md similarity index 100% rename from docs-src/0.5/en/router/index.md rename to docs-src/0.5/src/router/index.md diff --git a/docs-src/0.5/en/router/lib.rs b/docs-src/0.5/src/router/lib.rs similarity index 100% rename from docs-src/0.5/en/router/lib.rs rename to docs-src/0.5/src/router/lib.rs diff --git a/docs-src/0.5/en/router/reference/history-buttons.md b/docs-src/0.5/src/router/reference/history-buttons.md similarity index 100% rename from docs-src/0.5/en/router/reference/history-buttons.md rename to docs-src/0.5/src/router/reference/history-buttons.md diff --git a/docs-src/0.5/en/router/reference/history-providers.md b/docs-src/0.5/src/router/reference/history-providers.md similarity index 100% rename from docs-src/0.5/en/router/reference/history-providers.md rename to docs-src/0.5/src/router/reference/history-providers.md diff --git a/docs-src/0.5/en/router/reference/index.md b/docs-src/0.5/src/router/reference/index.md similarity index 100% rename from docs-src/0.5/en/router/reference/index.md rename to docs-src/0.5/src/router/reference/index.md diff --git a/docs-src/0.5/en/router/reference/layouts.md b/docs-src/0.5/src/router/reference/layouts.md similarity index 100% rename from docs-src/0.5/en/router/reference/layouts.md rename to docs-src/0.5/src/router/reference/layouts.md diff --git a/docs-src/0.5/en/router/reference/navigation/index.md b/docs-src/0.5/src/router/reference/navigation/index.md similarity index 100% rename from docs-src/0.5/en/router/reference/navigation/index.md rename to docs-src/0.5/src/router/reference/navigation/index.md diff --git a/docs-src/0.5/en/router/reference/navigation/programmatic.md b/docs-src/0.5/src/router/reference/navigation/programmatic.md similarity index 100% rename from docs-src/0.5/en/router/reference/navigation/programmatic.md rename to docs-src/0.5/src/router/reference/navigation/programmatic.md diff --git a/docs-src/0.5/en/router/reference/redirects.md b/docs-src/0.5/src/router/reference/redirects.md similarity index 100% rename from docs-src/0.5/en/router/reference/redirects.md rename to docs-src/0.5/src/router/reference/redirects.md diff --git a/docs-src/0.5/en/router/reference/routes/index.md b/docs-src/0.5/src/router/reference/routes/index.md similarity index 100% rename from docs-src/0.5/en/router/reference/routes/index.md rename to docs-src/0.5/src/router/reference/routes/index.md diff --git a/docs-src/0.5/en/router/reference/routes/nested.md b/docs-src/0.5/src/router/reference/routes/nested.md similarity index 100% rename from docs-src/0.5/en/router/reference/routes/nested.md rename to docs-src/0.5/src/router/reference/routes/nested.md diff --git a/docs-src/0.5/en/router/reference/routing-update-callback.md b/docs-src/0.5/src/router/reference/routing-update-callback.md similarity index 100% rename from docs-src/0.5/en/router/reference/routing-update-callback.md rename to docs-src/0.5/src/router/reference/routing-update-callback.md diff --git a/docs-src/0.5/en/router/reference/static-generation.md b/docs-src/0.5/src/router/reference/static-generation.md similarity index 100% rename from docs-src/0.5/en/router/reference/static-generation.md rename to docs-src/0.5/src/router/reference/static-generation.md diff --git a/public/main.css b/public/main.css index 8ace3947c..fdf364c20 100644 --- a/public/main.css +++ b/public/main.css @@ -46,7 +46,7 @@ html.dark .docs-toc { } /* Adds border bottom to everything but the first and last chapters */ .docs-links .full-chapter:not(:last-child):not(:first-child) { - border-bottom: 1px solid #212529; + border-bottom: 1px solid #2125297e; } .docs-links .full-chapter:first-child>h3 { From ba425c6c912ad6617406b00b27670dc58596ab39 Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Mon, 19 Aug 2024 11:09:58 -0700 Subject: [PATCH 26/35] Fill in the missing sections of the lifecycle guide --- Cargo.lock | 654 ++++++++++-------- Cargo.toml | 46 +- .../0.5/src/essentials/lifecycle/index.md | 54 ++ docs-src/0.5/src/essentials/state/index.md | 183 +++++ .../0.5/src/reference/component_lifecycle.md | 14 - docs-src/0.5/src/reference/managing_state.md | 183 ----- public/tailwind.css | 433 +++++------- src/doc_examples/component_lifecycle.rs | 109 ++- src/doc_examples/mod.rs | 7 +- src/doc_examples/reactivity.rs | 2 +- 10 files changed, 912 insertions(+), 773 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 76ec7b0df..ec9b7f427 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -471,15 +471,6 @@ dependencies = [ "generic-array", ] -[[package]] -name = "block2" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" -dependencies = [ - "objc2", -] - [[package]] name = "blocking" version = "1.6.1" @@ -493,12 +484,6 @@ dependencies = [ "piper", ] -[[package]] -name = "borrow-or-share" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eeab4423108c5d7c744f4d234de88d18d636100093ae04caf4825134b9c3a32" - [[package]] name = "built" version = "0.7.3" @@ -688,14 +673,14 @@ checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15" [[package]] name = "cocoa" -version = "0.26.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f79398230a6e2c08f5c9760610eb6924b52aa9e7950a619602baba59dcbbdbb2" +checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c" dependencies = [ - "bitflags 2.6.0", + "bitflags 1.3.2", "block", "cocoa-foundation", - "core-foundation 0.10.0", + "core-foundation", "core-graphics", "foreign-types 0.5.0", "libc", @@ -704,13 +689,13 @@ dependencies = [ [[package]] name = "cocoa-foundation" -version = "0.2.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e14045fb83be07b5acf1c0884b2180461635b433455fa35d1cd6f17f1450679d" +checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7" dependencies = [ - "bitflags 2.6.0", + "bitflags 1.3.2", "block", - "core-foundation 0.10.0", + "core-foundation", "core-graphics-types", "libc", "objc", @@ -818,16 +803,6 @@ dependencies = [ "libc", ] -[[package]] -name = "core-foundation" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" -dependencies = [ - "core-foundation-sys", - "libc", -] - [[package]] name = "core-foundation-sys" version = "0.8.7" @@ -836,12 +811,12 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "core-graphics" -version = "0.24.0" +version = "0.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1" +checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" dependencies = [ - "bitflags 2.6.0", - "core-foundation 0.10.0", + "bitflags 1.3.2", + "core-foundation", "core-graphics-types", "foreign-types 0.5.0", "libc", @@ -849,12 +824,12 @@ dependencies = [ [[package]] name = "core-graphics-types" -version = "0.2.0" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" +checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" dependencies = [ - "bitflags 2.6.0", - "core-foundation 0.10.0", + "bitflags 1.3.2", + "core-foundation", "libc", ] @@ -1088,7 +1063,7 @@ dependencies = [ [[package]] name = "dioxus" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" +source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" dependencies = [ "dioxus-config-macro", "dioxus-core", @@ -1107,7 +1082,7 @@ dependencies = [ [[package]] name = "dioxus-autofmt" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" +source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" dependencies = [ "dioxus-rsx", "prettyplease", @@ -1120,7 +1095,7 @@ dependencies = [ [[package]] name = "dioxus-cli-config" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" +source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" dependencies = [ "built", "clap", @@ -1133,7 +1108,7 @@ dependencies = [ [[package]] name = "dioxus-config-macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" +source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" dependencies = [ "proc-macro2", "quote", @@ -1142,7 +1117,7 @@ dependencies = [ [[package]] name = "dioxus-core" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" +source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" dependencies = [ "const_format", "futures-channel", @@ -1162,7 +1137,7 @@ dependencies = [ [[package]] name = "dioxus-core-macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" +source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" dependencies = [ "convert_case 0.6.0", "dioxus-rsx", @@ -1175,11 +1150,11 @@ dependencies = [ [[package]] name = "dioxus-desktop" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" +source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" dependencies = [ "async-trait", "cocoa", - "core-foundation 0.10.0", + "core-foundation", "dioxus-cli-config", "dioxus-core", "dioxus-hooks", @@ -1214,7 +1189,7 @@ dependencies = [ [[package]] name = "dioxus-fullstack" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" +source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" dependencies = [ "base64 0.22.1", "bytes", @@ -1236,7 +1211,7 @@ dependencies = [ [[package]] name = "dioxus-hooks" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" +source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" dependencies = [ "dioxus-core", "dioxus-signals", @@ -1252,7 +1227,7 @@ dependencies = [ [[package]] name = "dioxus-hot-reload" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" +source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" dependencies = [ "dioxus-cli-config", "dioxus-core", @@ -1272,7 +1247,7 @@ dependencies = [ [[package]] name = "dioxus-html" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" +source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" dependencies = [ "async-trait", "dioxus-core", @@ -1300,7 +1275,7 @@ dependencies = [ [[package]] name = "dioxus-html-internal-macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" +source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" dependencies = [ "convert_case 0.6.0", "proc-macro2", @@ -1311,7 +1286,7 @@ dependencies = [ [[package]] name = "dioxus-interpreter-js" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" +source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" dependencies = [ "dioxus-core", "dioxus-html", @@ -1328,7 +1303,7 @@ dependencies = [ [[package]] name = "dioxus-lib" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" +source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" dependencies = [ "dioxus-config-macro", "dioxus-core", @@ -1342,7 +1317,7 @@ dependencies = [ [[package]] name = "dioxus-liveview" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" +source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" dependencies = [ "axum", "dioxus-cli-config", @@ -1401,7 +1376,7 @@ dependencies = [ [[package]] name = "dioxus-router" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" +source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" dependencies = [ "dioxus-cli-config", "dioxus-fullstack", @@ -1421,7 +1396,7 @@ dependencies = [ [[package]] name = "dioxus-router-macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" +source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" dependencies = [ "proc-macro2", "quote", @@ -1432,7 +1407,7 @@ dependencies = [ [[package]] name = "dioxus-rsx" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" +source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" dependencies = [ "dioxus-core", "internment", @@ -1508,7 +1483,7 @@ dependencies = [ [[package]] name = "dioxus-signals" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" +source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" dependencies = [ "dioxus-core", "futures-channel", @@ -1524,7 +1499,7 @@ dependencies = [ [[package]] name = "dioxus-ssr" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" +source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" dependencies = [ "askama_escape", "async-trait", @@ -1543,7 +1518,7 @@ dependencies = [ [[package]] name = "dioxus-static-site-generation" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" +source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" dependencies = [ "dioxus-fullstack", "dioxus-lib", @@ -1555,7 +1530,7 @@ dependencies = [ [[package]] name = "dioxus-web" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" +source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" dependencies = [ "ciborium", "console_error_panic_hook", @@ -1616,7 +1591,7 @@ dependencies = [ "pretty_assertions", "prettyplease", "rand 0.8.5", - "reqwest", + "reqwest 0.11.27", "serde", "serde_json", "shipyard", @@ -1636,7 +1611,7 @@ dependencies = [ [[package]] name = "dioxus_server_macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" +source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" dependencies = [ "convert_case 0.6.0", "proc-macro2", @@ -1645,27 +1620,6 @@ dependencies = [ "syn 2.0.74", ] -[[package]] -name = "dirs" -version = "5.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" -dependencies = [ - "dirs-sys", -] - -[[package]] -name = "dirs-sys" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" -dependencies = [ - "libc", - "option-ext", - "redox_users", - "windows-sys 0.48.0", -] - [[package]] name = "dispatch" version = "0.2.0" @@ -1896,17 +1850,6 @@ dependencies = [ "miniz_oxide", ] -[[package]] -name = "fluent-uri" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d77395429e0ce700a8378be6625660a4aa00ca5dc5cd1527193ebd0946cc9b3" -dependencies = [ - "borrow-or-share", - "ref-cast", - "serde", -] - [[package]] name = "fnv" version = "1.0.7" @@ -2202,7 +2145,7 @@ dependencies = [ [[package]] name = "generational-box" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" +source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" dependencies = [ "parking_lot", ] @@ -2350,9 +2293,9 @@ dependencies = [ [[package]] name = "global-hotkey" -version = "0.6.0" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "298a7667d6011efe6b35673c6b29001b88677ae1b3d6b2feccfbff4b44892866" +checksum = "b436093d1598b05e3b7fddc097b2bad32763f53a1beb25ab6f9718c6a60acd09" dependencies = [ "bitflags 2.6.0", "cocoa", @@ -2361,7 +2304,7 @@ dependencies = [ "objc", "once_cell", "thiserror", - "windows-sys 0.59.0", + "windows-sys 0.52.0", "x11-dl", ] @@ -2670,6 +2613,25 @@ dependencies = [ "tracing", ] +[[package]] +name = "h2" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.1.0", + "indexmap 2.4.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + [[package]] name = "half" version = "2.4.1" @@ -2867,7 +2829,7 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "h2", + "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", "httparse", @@ -2890,6 +2852,7 @@ dependencies = [ "bytes", "futures-channel", "futures-util", + "h2 0.4.6", "http 1.1.0", "http-body 1.0.1", "httparse", @@ -2898,6 +2861,24 @@ dependencies = [ "pin-project-lite", "smallvec", "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" +dependencies = [ + "futures-util", + "http 1.1.0", + "hyper 1.4.1", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", ] [[package]] @@ -2913,6 +2894,22 @@ dependencies = [ "tokio-native-tls", ] +[[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 1.4.1", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + [[package]] name = "hyper-util" version = "0.1.7" @@ -2920,12 +2917,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cde7055719c54e36e95e8719f95883f22072a48ede39db7fc17a4e1d5281e9b9" dependencies = [ "bytes", + "futures-channel", "futures-util", "http 1.1.0", "http-body 1.0.1", "hyper 1.4.1", "pin-project-lite", + "socket2", "tokio", + "tower", + "tower-service", + "tracing", ] [[package]] @@ -3020,9 +3022,9 @@ dependencies = [ [[package]] name = "infer" -version = "0.16.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc150e5ce2330295b8616ce0e3f53250e53af31759a9dbedad1621ba29151847" +checksum = "0a6c16b11a665b26aeeb9b1d7f954cdeb034be38dd00adab4f2ae921a8fee804" dependencies = [ "cfb", ] @@ -3172,7 +3174,7 @@ dependencies = [ [[package]] name = "lazy-js-bundle" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" +source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" [[package]] name = "lazy_static" @@ -3198,16 +3200,6 @@ dependencies = [ "pkg-config", ] -[[package]] -name = "libredox" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" -dependencies = [ - "bitflags 2.6.0", - "libc", -] - [[package]] name = "libxdo" version = "0.6.0" @@ -3321,44 +3313,43 @@ dependencies = [ [[package]] name = "manganis" -version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" +version = "0.3.0-alpha.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10870c8dbbfa53eaad99e7cc0689de6f2033d8769e02df28cb681b437e159473" dependencies = [ - "core-foundation 0.9.4", - "dirs", - "dunce", - "infer", - "manganis-common", "manganis-macro", - "once_cell", ] [[package]] name = "manganis-common" -version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" +version = "0.3.0-alpha.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9be0dd0eaf5ce21947bcc38131d7934a1f573b76e6e44fe9e401cb27dcb33cf" dependencies = [ "anyhow", - "base64 0.22.1", + "base64 0.21.7", "built", - "fluent-uri", + "home", "infer", - "scratch", + "reqwest 0.12.6", "serde", + "toml 0.7.8", + "tracing", + "url", ] [[package]] name = "manganis-macro" -version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#d2ea92d08d80bd74cb6197e6fe5c9a56f78fb4bc" +version = "0.3.0-alpha.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ca00f3c266ba409900d32707f4bc66a60fbb707cf9d4d8d44d8e265c431c149" dependencies = [ - "base64 0.22.1", "manganis-common", "proc-macro2", "quote", - "serde", "serde_json", "syn 2.0.74", + "tracing-subscriber", ] [[package]] @@ -3517,13 +3508,12 @@ dependencies = [ [[package]] name = "muda" -version = "0.14.0" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86c410a9d21523a819e84881603fbc00331c8001eb899964952046671deddb9c" +checksum = "4c47e7625990fc1af2226ea4f34fb2412b03c12639fcb91868581eb3a6893453" dependencies = [ "cocoa", "crossbeam-channel", - "dpi", "gtk", "keyboard-types", "libxdo", @@ -3531,7 +3521,7 @@ dependencies = [ "once_cell", "png", "thiserror", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -3553,16 +3543,15 @@ dependencies = [ [[package]] name = "ndk" -version = "0.9.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" +checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0" dependencies = [ - "bitflags 2.6.0", + "bitflags 1.3.2", "jni-sys", - "log", "ndk-sys", "num_enum", - "raw-window-handle 0.6.2", + "raw-window-handle 0.5.2", "thiserror", ] @@ -3574,9 +3563,9 @@ checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" [[package]] name = "ndk-sys" -version = "0.6.0+11769913" +version = "0.4.1+23.1.7779620" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" +checksum = "3cf2aae958bd232cac5069850591667ad422d263686d75b52a065f9badeee5a3" dependencies = [ "jni-sys", ] @@ -3605,6 +3594,16 @@ version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + [[package]] name = "num-conv" version = "0.1.0" @@ -3632,23 +3631,23 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.3" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.7.3" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" dependencies = [ - "proc-macro-crate 2.0.2", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.74", + "syn 1.0.109", ] [[package]] @@ -3687,40 +3686,6 @@ dependencies = [ "objc_id", ] -[[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-encode" -version = "4.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7891e71393cd1f227313c9379a26a584ff3d7e6e7159e988851f0934c993f0f8" - -[[package]] -name = "objc2-foundation" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" -dependencies = [ - "bitflags 2.6.0", - "block2", - "libc", - "objc2", -] - [[package]] name = "objc_exception" version = "0.1.2" @@ -3820,12 +3785,6 @@ dependencies = [ "vcpkg", ] -[[package]] -name = "option-ext" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" - [[package]] name = "ordered-stream" version = "0.2.0" @@ -3836,6 +3795,12 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + [[package]] name = "pango" version = "0.18.3" @@ -4408,37 +4373,6 @@ dependencies = [ "bitflags 2.6.0", ] -[[package]] -name = "redox_users" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" -dependencies = [ - "getrandom 0.2.15", - "libredox", - "thiserror", -] - -[[package]] -name = "ref-cast" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf0a6f84d5f1d581da8b41b47ec8600871962f2a528115b542b362d4b744931" -dependencies = [ - "ref-cast-impl", -] - -[[package]] -name = "ref-cast-impl" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.74", -] - [[package]] name = "regex" version = "1.10.6" @@ -4479,11 +4413,11 @@ dependencies = [ "encoding_rs", "futures-core", "futures-util", - "h2", + "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", "hyper 0.14.30", - "hyper-tls", + "hyper-tls 0.5.0", "ipnet", "js-sys", "log", @@ -4492,12 +4426,12 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls-pemfile", + "rustls-pemfile 1.0.4", "serde", "serde_json", "serde_urlencoded", "sync_wrapper 0.1.2", - "system-configuration", + "system-configuration 0.5.1", "tokio", "tokio-native-tls", "tower-service", @@ -4508,6 +4442,50 @@ dependencies = [ "winreg", ] +[[package]] +name = "reqwest" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6f6ddd79dc661ade721873783d159ec87d91d556ce92933e342bae8b87c48c0" +dependencies = [ + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.4.6", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.4.1", + "hyper-rustls", + "hyper-tls 0.6.0", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls-pemfile 2.1.3", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 1.0.1", + "system-configuration 0.6.0", + "tokio", + "tokio-native-tls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows-registry", +] + [[package]] name = "rfd" version = "0.14.1" @@ -4634,6 +4612,16 @@ dependencies = [ "base64 0.21.7", ] +[[package]] +name = "rustls-pemfile" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" +dependencies = [ + "base64 0.22.1", + "rustls-pki-types", +] + [[package]] name = "rustls-pki-types" version = "1.8.0" @@ -4704,12 +4692,6 @@ dependencies = [ "tendril", ] -[[package]] -name = "scratch" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3cf7c11c38cb994f3d40e8a8cde3bbd1f72a435e4c49e85d6553d8312306152" - [[package]] name = "security-framework" version = "2.11.1" @@ -4717,7 +4699,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ "bitflags 2.6.0", - "core-foundation 0.9.4", + "core-foundation", "core-foundation-sys", "libc", "security-framework-sys", @@ -5283,6 +5265,9 @@ name = "sync_wrapper" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +dependencies = [ + "futures-core", +] [[package]] name = "syntect" @@ -5324,8 +5309,19 @@ 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", + "core-foundation", + "system-configuration-sys 0.5.0", +] + +[[package]] +name = "system-configuration" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "658bc6ee10a9b4fcf576e9b0819d95ec16f4d2c02d39fd83ac1c8789785c4a42" +dependencies = [ + "bitflags 2.6.0", + "core-foundation", + "system-configuration-sys 0.6.0", ] [[package]] @@ -5338,6 +5334,16 @@ dependencies = [ "libc", ] +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "system-deps" version = "6.2.2" @@ -5353,18 +5359,17 @@ dependencies = [ [[package]] name = "tao" -version = "0.29.0" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6775bcf3c1da33f848ede9cff5883ed1e45a29f66533ce42ad06c93ae514ed59" +checksum = "69ebbccb78deb5a36744c079eea2981b4a48ecbbe6b1b2ffbaa528bea3f5e5db" dependencies = [ - "bitflags 2.6.0", + "bitflags 1.3.2", "cocoa", - "core-foundation 0.10.0", + "core-foundation", "core-graphics", "crossbeam-channel", "dispatch", "dlopen2", - "dpi", "gdkwayland-sys", "gdkx11-sys", "gtk", @@ -5385,8 +5390,7 @@ dependencies = [ "tao-macros", "unicode-segmentation", "url", - "windows", - "windows-core 0.58.0", + "windows 0.54.0", "windows-version", "x11-dl", ] @@ -5565,6 +5569,17 @@ dependencies = [ "tokio", ] +[[package]] +name = "tokio-rustls" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +dependencies = [ + "rustls", + "rustls-pki-types", + "tokio", +] + [[package]] name = "tokio-stream" version = "0.1.15" @@ -5762,6 +5777,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", ] [[package]] @@ -5770,9 +5797,12 @@ version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" dependencies = [ + "nu-ansi-term", "sharded-slab", + "smallvec", "thread_local", "tracing-core", + "tracing-log", ] [[package]] @@ -5976,6 +6006,12 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + [[package]] name = "vcpkg" version = "0.2.15" @@ -6149,18 +6185,17 @@ dependencies = [ [[package]] name = "webbrowser" -version = "1.0.1" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "425ba64c1e13b1c6e8c5d2541c8fac10022ca584f33da781db01b5756aef1f4e" +checksum = "db67ae75a9405634f5882791678772c94ff5f16a66535aae186e26aa0841fc8b" dependencies = [ - "block2", - "core-foundation 0.9.4", + "core-foundation", "home", "jni", "log", "ndk-context", - "objc2", - "objc2-foundation", + "objc", + "raw-window-handle 0.5.2", "url", "web-sys", ] @@ -6211,23 +6246,23 @@ dependencies = [ [[package]] name = "webview2-com" -version = "0.33.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f61ff3d9d0ee4efcb461b14eb3acfda2702d10dc329f339303fc3e57215ae2c" +checksum = "6516cfa64c6b3212686080eeec378e662c2af54bb2a5b2a22749673f5cb2226f" dependencies = [ "webview2-com-macros", "webview2-com-sys", - "windows", - "windows-core 0.58.0", - "windows-implement", - "windows-interface", + "windows 0.57.0", + "windows-core 0.57.0", + "windows-implement 0.57.0", + "windows-interface 0.57.0", ] [[package]] name = "webview2-com-macros" -version = "0.8.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d228f15bba3b9d56dde8bddbee66fa24545bd17b48d5128ccf4a8742b18e431" +checksum = "ac1345798ecd8122468840bcdf1b95e5dc6d2206c5e4b0eafa078d061f59c9bc" dependencies = [ "proc-macro2", "quote", @@ -6236,13 +6271,13 @@ dependencies = [ [[package]] name = "webview2-com-sys" -version = "0.33.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3a3e2eeb58f82361c93f9777014668eb3d07e7d174ee4c819575a9208011886" +checksum = "c76d5b77320ff155660be1df3e6588bc85c75f1a9feef938cc4dc4dd60d1d7cf" dependencies = [ "thiserror", - "windows", - "windows-core 0.58.0", + "windows 0.57.0", + "windows-core 0.57.0", ] [[package]] @@ -6278,11 +6313,23 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.58.0" +version = "0.54.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" dependencies = [ - "windows-core 0.58.0", + "windows-core 0.54.0", + "windows-implement 0.53.0", + "windows-interface 0.53.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" +dependencies = [ + "windows-core 0.57.0", "windows-targets 0.52.6", ] @@ -6297,22 +6344,42 @@ dependencies = [ [[package]] name = "windows-core" -version = "0.58.0" +version = "0.54.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" dependencies = [ - "windows-implement", - "windows-interface", - "windows-result", - "windows-strings", + "windows-result 0.1.2", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" +dependencies = [ + "windows-implement 0.57.0", + "windows-interface 0.57.0", + "windows-result 0.1.2", "windows-targets 0.52.6", ] [[package]] name = "windows-implement" -version = "0.58.0" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +checksum = "942ac266be9249c84ca862f0a164a39533dc2f6f33dc98ec89c8da99b82ea0bd" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.74", +] + +[[package]] +name = "windows-implement" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" dependencies = [ "proc-macro2", "quote", @@ -6321,15 +6388,46 @@ dependencies = [ [[package]] name = "windows-interface" -version = "0.58.0" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +checksum = "da33557140a288fae4e1d5f8873aaf9eb6613a9cf82c3e070223ff177f598b60" dependencies = [ "proc-macro2", "quote", "syn 2.0.74", ] +[[package]] +name = "windows-interface" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.74", +] + +[[package]] +name = "windows-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +dependencies = [ + "windows-result 0.2.0", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-result" version = "0.2.0" @@ -6345,7 +6443,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" dependencies = [ - "windows-result", + "windows-result 0.2.0", "windows-targets 0.52.6", ] @@ -6593,9 +6691,9 @@ dependencies = [ [[package]] name = "wry" -version = "0.42.0" +version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49b8049c8f239cdbfaaea4bacb9646f6b208938ceec0acd5b3e99cd05f70903f" +checksum = "68b00c945786b02d7805d09a969fa36d0eee4e0bd4fb3ec2a79d2bf45a1b44cd" dependencies = [ "base64 0.22.1", "block", @@ -6613,6 +6711,8 @@ dependencies = [ "kuchikiki", "libc", "ndk", + "ndk-context", + "ndk-sys", "objc", "objc_id", "once_cell", @@ -6625,8 +6725,8 @@ dependencies = [ "webkit2gtk", "webkit2gtk-sys", "webview2-com", - "windows", - "windows-core 0.58.0", + "windows 0.57.0", + "windows-core 0.57.0", "windows-version", "x11-dl", ] diff --git a/Cargo.toml b/Cargo.toml index cf6e64e81..0e2d2801e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -80,29 +80,29 @@ mdbook-shared = { git = "https://github.com/dioxuslabs/include_mdbook", branch = prettyplease = "0.2.20" [patch.crates-io] -dioxus = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -dioxus-lib = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -dioxus-core = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -dioxus-core-macro = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -dioxus-config-macro = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -dioxus-router = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -dioxus-router-macro = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -dioxus-html = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -dioxus-html-internal-macro = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -dioxus-hooks = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -dioxus-web = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -dioxus-ssr = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -dioxus-desktop = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -dioxus-interpreter-js = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -dioxus-liveview = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -dioxus-rsx = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -dioxus-signals = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -dioxus-cli-config = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -generational-box = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -dioxus-hot-reload = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -dioxus_server_macro = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -dioxus-fullstack = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -dioxus-autofmt = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-lib = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-core = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-core-macro = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-config-macro = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-router = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-router-macro = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-html = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-html-internal-macro = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-hooks = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-web = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-ssr = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-desktop = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-interpreter-js = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-liveview = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-rsx = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-signals = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-cli-config = { git = "https://github.com/dioxuslabs/dioxus" } +generational-box = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-hot-reload = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus_server_macro = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-fullstack = { git = "https://github.com/dioxuslabs/dioxus" } +dioxus-autofmt = { git = "https://github.com/dioxuslabs/dioxus" } # manganis = { path = "../manganis/packages/manganis" } # manganis-common = { path = "../manganis/packages/common" } diff --git a/docs-src/0.5/src/essentials/lifecycle/index.md b/docs-src/0.5/src/essentials/lifecycle/index.md index e69de29bb..05d44decb 100644 --- a/docs-src/0.5/src/essentials/lifecycle/index.md +++ b/docs-src/0.5/src/essentials/lifecycle/index.md @@ -0,0 +1,54 @@ +# Component Lifecycle + +## Initializing State with `use_hook` + +`use_hook` lets you create new state for your component. The closure you pass to `use_hook` will be called once the first time the component is rendered. Every time the component is re-rendered, the value that was created the first run will be re-used. + +```rust, no_run +{{#include src/doc_examples/component_lifecycle.rs:use_hook}} +``` +```inject-dioxus +DemoFrame { + component_lifecycle::UseHookDemo {} +} +``` + +## Rerendering + +You can use [tracked values](../reference/reactivity.md) to re-render your component whenever a value changes. + +```rust, no_run +{{#include src/doc_examples/component_lifecycle.rs:rerenders}} +``` +```inject-dioxus +DemoFrame { + component_lifecycle::RerenderDemo {} +} +``` + +## Using Effects + +You can use [effects](../reference/reactivity.md) to run code whenever a component is rendered. + + +```rust, no_run +{{#include src/doc_examples/component_lifecycle.rs:effect}} +``` +```inject-dioxus +DemoFrame { + component_lifecycle::EffectDemo {} +} +``` + +## Cleaning Up Components with Drop + +Before a component is dropped, it will drop all of its hooks. You can use this drop behavior to clean up any resources that your component is using. If you just need the drop effect, you can use the [`use_drop`](https://docs.rs/dioxus/latest/dioxus/prelude/fn.use_drop.html) hook. + +```rust, no_run +{{#include src/doc_examples/component_lifecycle.rs:drop}} +``` +```inject-dioxus +DemoFrame { + component_lifecycle::DropDemo {} +} +``` diff --git a/docs-src/0.5/src/essentials/state/index.md b/docs-src/0.5/src/essentials/state/index.md index e69de29bb..5ad46f49e 100644 --- a/docs-src/0.5/src/essentials/state/index.md +++ b/docs-src/0.5/src/essentials/state/index.md @@ -0,0 +1,183 @@ +# Managing State + +In Dioxus, your app is defined as a function of the current state. As the state changes, the parts of your app that depend on that state will automatically re-run. Reactivity automatically tracks state and updates derived state in your application. + +## Creating State + +You can create mutable state in Dioxus with Signals. Signals are tracked values that automatically update your app when you change them. They form the skeleton of your app's state from which you can derive other state. Signals are often driven directly from user input through event handlers or async tasks. + +You can create a signal with the `use_signal` hook: + +```rust +{{#include src/doc_examples/reactivity.rs:signal}} +``` + +Once you have your signal, you can clone it by calling the signal like a function or get a reference to the inner value with the `.read()` method: + +```rust +{{#include src/doc_examples/reactivity.rs:signal_read}} +``` + +Finally, you can set the value of the signal with the `.set()` method or get a mutable reference to the inner value with the `.write()` method: + +```rust +{{#include src/doc_examples/reactivity.rs:signal_write}} +``` + +### Reactive Scopes + +The simplest reactive primitive in Dioxus is the `use_effect` hook. It creates a closure that is run any time a tracked value that is run inside the closure changes. + + +Any value you read inside the closure will become a dependency of the effect. If the value changes, the effect will rerun. + +```rust +{{#include src/doc_examples/reactivity.rs:effect}} +``` + +```inject-dioxus +DemoFrame { + reactivity::EffectDemo {} +} +``` + +### Derived State + +`use_memo` is a reactive primitive that lets you derive state from any tracked value. It takes a closure that computes the new state and returns a tracked value with the current state of the memo. Any time a dependency of the memo changes, the memo will rerun. + +The value you return from the closure will only change when the output of the closure changes (`PartialEq` between the old and new value returns false). + +```rust +{{#include src/doc_examples/reactivity.rs:memo}} +``` + +```inject-dioxus +DemoFrame { + reactivity::MemoDemo {} +} +``` + +### Derived Async State + +`use_resource` is a reactive primitive that lets you derive state from any async closure. It takes an async closure that computes the new state and returns a tracked value with the current state of the resource. Any time a dependency of the resource changes, the resource will rerun. + +The value you return from the closure will only change when the state of the future changes. Unlike `use_memo`, the resource's output is not memoized with `PartialEq`. + +```rust +{{#include src/doc_examples/reactivity.rs:resource}} +``` + +```inject-dioxus +DemoFrame { + reactivity::ResourceDemo {} +} +``` + +### Derived UI + +Components are functions that return some UI. They memorize the output of the function just like memos. Components keep track of any dependencies you read inside the component and rerun when those dependencies change. + +```rust +{{#include src/doc_examples/reactivity.rs:component}} +``` + +```inject-dioxus +DemoFrame { + reactivity::ComponentDemo {} +} +``` + +### Working with Untracked State + +Most of the state in your app will be tracked values. All built in hooks return tracked values, and we encourage custom hooks to do the same. However, there are times when you need to work with untracked state. For example, you may receive a raw untracked value in props. When you read an untracked value inside a reactive context, it will not subscribe to the value: + +```rust +{{#include src/doc_examples/reactivity.rs:non_reactive}} +``` + +```inject-dioxus +DemoFrame { + reactivity::NonReactiveDemo {} +} +``` + +You can start tracking raw state with the `use_reactive` hook. This hook takes a tuple of dependencies and returns a reactive closure. When the closure is called in a reactive context, it will track subscribe to the dependencies and rerun the closure when the dependencies change. + +```rust +{{#include src/doc_examples/reactivity.rs:use_reactive}} +``` + +```inject-dioxus +DemoFrame { + reactivity::UseReactiveDemo {} +} +``` + +### Making Props Reactive + +To avoid loosing reactivity with props, we recommend you wrap any props you want to track in a `ReadOnlySignal`. Dioxus will automatically convert `T` into `ReadOnlySignal` when you pass props to the component. This will ensure your props are tracked and rerun any state you derive in the component: + +```rust +{{#include src/doc_examples/reactivity.rs:making_props_reactive}} +``` + +```inject-dioxus +DemoFrame { + reactivity::MakingPropsReactiveDemo {} +} +``` + +## Moving Around State + +As you create signals and derived state in your app, you will need to move around that state between components. Dioxus provides three different ways to pass around state: + +### Passing props + +You can pass your values through component [props](./component_props.md). This should be your default when passing around state. It is the most explicit and local to your component. Use this until it gets annoying to pass around the value: + +```rust +{{#include src/doc_examples/moving_state_around.rs:PassingProps}} +``` + +```inject-dioxus +DemoFrame { + moving_state_around::PassingProps {} +} +``` + + +### Passing context + +If you need a slightly more powerful way to pass around state, you can use the context API. + +The context API lets you pass state from a parent component to all children. This is useful if you want to share state between many components. You can insert a unique type into the context with the [`use_context_provider`](https://docs.rs/dioxus-hooks/latest/dioxus_hooks/fn.use_context_provider.html) hook in the parent component. Then you can access the context in any child component with the [`use_context`](https://docs.rs/dioxus-hooks/latest/dioxus_hooks/fn.use_context.html) hook. + +```rust +{{#include src/doc_examples/moving_state_around.rs:PassingContext}} +``` + +```inject-dioxus +DemoFrame { + moving_state_around::PassingContext {} +} +``` + +This is slightly less explicit than passing it as a prop, but it is still local to the component. This is really great if you want state that is global to part of your app. It lets you create multiple global-ish states while still making state different when you reuse components. If I create a new `ParentComponent`, it will have a new `MyState`. + +### Using globals + +Finally, if you have truly global state, you can put your state in a `Global` static. This is useful if you want to share state with your whole app: + +```rust +{{#include src/doc_examples/moving_state_around.rs:UsingGlobals}} +``` + +```inject-dioxus +DemoFrame { + moving_state_around::UsingGlobals {} +} +``` + +Global state can be very ergonomic if your state is truly global, but you shouldn't use it if you need state to be different for different instances of your component. If I create another `IncrementButton` it will use the same `COUNT`. Libraries should generally avoid this to make components more reusable. + +> Note: Even though it is in a static, `COUNT` will be different for each app instance so you don't need to worry about state mangling when multiple instances of your app are running on the server diff --git a/docs-src/0.5/src/reference/component_lifecycle.md b/docs-src/0.5/src/reference/component_lifecycle.md index b348afdcf..e69de29bb 100644 --- a/docs-src/0.5/src/reference/component_lifecycle.md +++ b/docs-src/0.5/src/reference/component_lifecycle.md @@ -1,14 +0,0 @@ -# Component Lifecycle - -## Initializing State with `use_hook` - -`use_hook` lets you create new state for your component. The closure you pass to `use_hook` will be called once the first time the component is rendered. Every time the component is re-rendered, the value that was created the first run will be re-used. - -```rust, no_run -{{#include src/doc_examples/component_lifecycle.rs:use_hook}} -``` -```inject-dioxus -DemoFrame { - component_lifecycle::UseHookDemo {} -} -``` diff --git a/docs-src/0.5/src/reference/managing_state.md b/docs-src/0.5/src/reference/managing_state.md index 5ad46f49e..e69de29bb 100644 --- a/docs-src/0.5/src/reference/managing_state.md +++ b/docs-src/0.5/src/reference/managing_state.md @@ -1,183 +0,0 @@ -# Managing State - -In Dioxus, your app is defined as a function of the current state. As the state changes, the parts of your app that depend on that state will automatically re-run. Reactivity automatically tracks state and updates derived state in your application. - -## Creating State - -You can create mutable state in Dioxus with Signals. Signals are tracked values that automatically update your app when you change them. They form the skeleton of your app's state from which you can derive other state. Signals are often driven directly from user input through event handlers or async tasks. - -You can create a signal with the `use_signal` hook: - -```rust -{{#include src/doc_examples/reactivity.rs:signal}} -``` - -Once you have your signal, you can clone it by calling the signal like a function or get a reference to the inner value with the `.read()` method: - -```rust -{{#include src/doc_examples/reactivity.rs:signal_read}} -``` - -Finally, you can set the value of the signal with the `.set()` method or get a mutable reference to the inner value with the `.write()` method: - -```rust -{{#include src/doc_examples/reactivity.rs:signal_write}} -``` - -### Reactive Scopes - -The simplest reactive primitive in Dioxus is the `use_effect` hook. It creates a closure that is run any time a tracked value that is run inside the closure changes. - - -Any value you read inside the closure will become a dependency of the effect. If the value changes, the effect will rerun. - -```rust -{{#include src/doc_examples/reactivity.rs:effect}} -``` - -```inject-dioxus -DemoFrame { - reactivity::EffectDemo {} -} -``` - -### Derived State - -`use_memo` is a reactive primitive that lets you derive state from any tracked value. It takes a closure that computes the new state and returns a tracked value with the current state of the memo. Any time a dependency of the memo changes, the memo will rerun. - -The value you return from the closure will only change when the output of the closure changes (`PartialEq` between the old and new value returns false). - -```rust -{{#include src/doc_examples/reactivity.rs:memo}} -``` - -```inject-dioxus -DemoFrame { - reactivity::MemoDemo {} -} -``` - -### Derived Async State - -`use_resource` is a reactive primitive that lets you derive state from any async closure. It takes an async closure that computes the new state and returns a tracked value with the current state of the resource. Any time a dependency of the resource changes, the resource will rerun. - -The value you return from the closure will only change when the state of the future changes. Unlike `use_memo`, the resource's output is not memoized with `PartialEq`. - -```rust -{{#include src/doc_examples/reactivity.rs:resource}} -``` - -```inject-dioxus -DemoFrame { - reactivity::ResourceDemo {} -} -``` - -### Derived UI - -Components are functions that return some UI. They memorize the output of the function just like memos. Components keep track of any dependencies you read inside the component and rerun when those dependencies change. - -```rust -{{#include src/doc_examples/reactivity.rs:component}} -``` - -```inject-dioxus -DemoFrame { - reactivity::ComponentDemo {} -} -``` - -### Working with Untracked State - -Most of the state in your app will be tracked values. All built in hooks return tracked values, and we encourage custom hooks to do the same. However, there are times when you need to work with untracked state. For example, you may receive a raw untracked value in props. When you read an untracked value inside a reactive context, it will not subscribe to the value: - -```rust -{{#include src/doc_examples/reactivity.rs:non_reactive}} -``` - -```inject-dioxus -DemoFrame { - reactivity::NonReactiveDemo {} -} -``` - -You can start tracking raw state with the `use_reactive` hook. This hook takes a tuple of dependencies and returns a reactive closure. When the closure is called in a reactive context, it will track subscribe to the dependencies and rerun the closure when the dependencies change. - -```rust -{{#include src/doc_examples/reactivity.rs:use_reactive}} -``` - -```inject-dioxus -DemoFrame { - reactivity::UseReactiveDemo {} -} -``` - -### Making Props Reactive - -To avoid loosing reactivity with props, we recommend you wrap any props you want to track in a `ReadOnlySignal`. Dioxus will automatically convert `T` into `ReadOnlySignal` when you pass props to the component. This will ensure your props are tracked and rerun any state you derive in the component: - -```rust -{{#include src/doc_examples/reactivity.rs:making_props_reactive}} -``` - -```inject-dioxus -DemoFrame { - reactivity::MakingPropsReactiveDemo {} -} -``` - -## Moving Around State - -As you create signals and derived state in your app, you will need to move around that state between components. Dioxus provides three different ways to pass around state: - -### Passing props - -You can pass your values through component [props](./component_props.md). This should be your default when passing around state. It is the most explicit and local to your component. Use this until it gets annoying to pass around the value: - -```rust -{{#include src/doc_examples/moving_state_around.rs:PassingProps}} -``` - -```inject-dioxus -DemoFrame { - moving_state_around::PassingProps {} -} -``` - - -### Passing context - -If you need a slightly more powerful way to pass around state, you can use the context API. - -The context API lets you pass state from a parent component to all children. This is useful if you want to share state between many components. You can insert a unique type into the context with the [`use_context_provider`](https://docs.rs/dioxus-hooks/latest/dioxus_hooks/fn.use_context_provider.html) hook in the parent component. Then you can access the context in any child component with the [`use_context`](https://docs.rs/dioxus-hooks/latest/dioxus_hooks/fn.use_context.html) hook. - -```rust -{{#include src/doc_examples/moving_state_around.rs:PassingContext}} -``` - -```inject-dioxus -DemoFrame { - moving_state_around::PassingContext {} -} -``` - -This is slightly less explicit than passing it as a prop, but it is still local to the component. This is really great if you want state that is global to part of your app. It lets you create multiple global-ish states while still making state different when you reuse components. If I create a new `ParentComponent`, it will have a new `MyState`. - -### Using globals - -Finally, if you have truly global state, you can put your state in a `Global` static. This is useful if you want to share state with your whole app: - -```rust -{{#include src/doc_examples/moving_state_around.rs:UsingGlobals}} -``` - -```inject-dioxus -DemoFrame { - moving_state_around::UsingGlobals {} -} -``` - -Global state can be very ergonomic if your state is truly global, but you shouldn't use it if you need state to be different for different instances of your component. If I create another `IncrementButton` it will use the same `COUNT`. Libraries should generally avoid this to make components more reusable. - -> Note: Even though it is in a static, `COUNT` will be different for each app instance so you don't need to worry about state mangling when multiple instances of your app are running on the server diff --git a/public/tailwind.css b/public/tailwind.css index 075929b09..7c7f64f50 100644 --- a/public/tailwind.css +++ b/public/tailwind.css @@ -1,5 +1,5 @@ /* -! tailwindcss v3.4.10 | MIT License | https://tailwindcss.com +! tailwindcss v3.3.2 | MIT License | https://tailwindcss.com */ /* @@ -32,11 +32,9 @@ 4. Use the user's configured `sans` font-family by default. 5. Use the user's configured `sans` font-feature-settings by default. 6. Use the user's configured `sans` font-variation-settings by default. -7. Disable tap highlights on iOS */ -html, -:host { +html { line-height: 1.5; /* 1 */ -webkit-text-size-adjust: 100%; @@ -52,8 +50,6 @@ html, /* 5 */ font-variation-settings: normal; /* 6 */ - -webkit-tap-highlight-color: transparent; - /* 7 */ } /* @@ -125,10 +121,8 @@ strong { } /* -1. Use the user's configured `mono` font-family by default. -2. Use the user's configured `mono` font-feature-settings by default. -3. Use the user's configured `mono` font-variation-settings by default. -4. Correct the odd `em` font sizing in all browsers. +1. Use the user's configured `mono` font family by default. +2. Correct the odd `em` font sizing in all browsers. */ code, @@ -137,12 +131,8 @@ samp, pre { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; /* 1 */ - font-feature-settings: normal; - /* 2 */ - font-variation-settings: normal; - /* 3 */ font-size: 1em; - /* 4 */ + /* 2 */ } /* @@ -201,18 +191,12 @@ select, textarea { font-family: inherit; /* 1 */ - font-feature-settings: inherit; - /* 1 */ - font-variation-settings: inherit; - /* 1 */ font-size: 100%; /* 1 */ font-weight: inherit; /* 1 */ line-height: inherit; /* 1 */ - letter-spacing: inherit; - /* 1 */ color: inherit; /* 1 */ margin: 0; @@ -236,9 +220,9 @@ select { */ button, -input:where([type='button']), -input:where([type='reset']), -input:where([type='submit']) { +[type='button'], +[type='reset'], +[type='submit'] { -webkit-appearance: button; /* 1 */ background-color: transparent; @@ -357,14 +341,6 @@ menu { padding: 0; } -/* -Reset default styling for dialogs. -*/ - -dialog { - padding: 0; -} - /* Prevent resizing textareas horizontally by default. */ @@ -494,10 +470,6 @@ video { --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; - --tw-contain-size: ; - --tw-contain-layout: ; - --tw-contain-paint: ; - --tw-contain-style: ; } ::backdrop { @@ -548,10 +520,6 @@ video { --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; - --tw-contain-size: ; - --tw-contain-layout: ; - --tw-contain-paint: ; - --tw-contain-style: ; } .container { @@ -708,11 +676,6 @@ video { margin-right: 0.5rem; } -.mx-4 { - margin-left: 1rem; - margin-right: 1rem; -} - .mx-auto { margin-left: auto; margin-right: auto; @@ -747,10 +710,6 @@ video { margin-bottom: -2.5rem; } -.-mt-4 { - margin-top: -1rem; -} - .mb-1 { margin-bottom: 0.25rem; } @@ -835,10 +794,6 @@ video { display: block; } -.inline-block { - display: inline-block; -} - .inline { display: inline; } @@ -960,6 +915,10 @@ video { width: 2.5rem; } +.w-2 { + width: 0.5rem; +} + .w-2\.5 { width: 0.625rem; } @@ -1036,10 +995,6 @@ video { max-width: 1280px; } -.max-w-xl { - max-width: 36rem; -} - .flex-1 { flex: 1 1 0%; } @@ -1118,10 +1073,6 @@ video { align-content: center; } -.items-start { - align-items: flex-start; -} - .items-center { align-items: center; } @@ -1154,6 +1105,12 @@ video { gap: 2rem; } +.space-x-1 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(0.25rem * var(--tw-space-x-reverse)); + margin-left: calc(0.25rem * calc(1 - var(--tw-space-x-reverse))); +} + .space-x-1\.5 > :not([hidden]) ~ :not([hidden]) { --tw-space-x-reverse: 0; margin-right: calc(0.375rem * var(--tw-space-x-reverse)); @@ -1178,12 +1135,6 @@ video { margin-bottom: calc(1rem * var(--tw-space-y-reverse)); } -.space-y-6 > :not([hidden]) ~ :not([hidden]) { - --tw-space-y-reverse: 0; - margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(1.5rem * var(--tw-space-y-reverse)); -} - .divide-y > :not([hidden]) ~ :not([hidden]) { --tw-divide-y-reverse: 0; border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse))); @@ -1370,11 +1321,6 @@ video { background-color: rgb(22 163 74 / var(--tw-bg-opacity)); } -.bg-ideblack { - --tw-bg-opacity: 1; - background-color: rgb(14 17 22 / var(--tw-bg-opacity)); -} - .bg-indigo-500 { --tw-bg-opacity: 1; background-color: rgb(99 102 241 / var(--tw-bg-opacity)); @@ -1708,10 +1654,6 @@ video { line-height: 1rem; } -.text-\[0\.5rem\] { - font-size: 0.5rem; -} - .font-bold { font-weight: 700; } @@ -1774,11 +1716,6 @@ video { color: rgb(59 130 246 / var(--tw-text-opacity)); } -.text-blue-600 { - --tw-text-opacity: 1; - color: rgb(37 99 235 / var(--tw-text-opacity)); -} - .text-ghdarkmetal { --tw-text-opacity: 1; color: rgb(22 27 34 / var(--tw-text-opacity)); @@ -1849,10 +1786,6 @@ video { color: rgb(255 255 255 / var(--tw-text-opacity)); } -.text-\[\] { - color: ; -} - .underline { text-decoration-line: underline; } @@ -1912,7 +1845,7 @@ video { .backdrop-blur-sm { --tw-backdrop-blur: blur(4px); -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); - backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); + backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); } .transition { @@ -2005,21 +1938,152 @@ video { box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } -.focus\:outline-none:focus { - outline: 2px solid transparent; - outline-offset: 2px; -} - .group:hover .group-hover\:text-gray-500 { --tw-text-opacity: 1; color: rgb(107 114 128 / var(--tw-text-opacity)); } -@media (min-width: 640px) { - .sm\:-m-4 { - margin: -1rem; +@media (prefers-color-scheme: dark) { + .dark\:block { + display: block; + } + + .dark\:hidden { + display: none; + } + + .dark\:border-gray-800 { + --tw-border-opacity: 1; + border-color: rgb(31 41 55 / var(--tw-border-opacity)); + } + + .dark\:border-stone-700 { + --tw-border-opacity: 1; + border-color: rgb(68 64 60 / var(--tw-border-opacity)); + } + + .dark\:bg-\[\#111111\] { + --tw-bg-opacity: 1; + background-color: rgb(17 17 17 / var(--tw-bg-opacity)); + } + + .dark\:bg-gray-800 { + --tw-bg-opacity: 1; + background-color: rgb(31 41 55 / var(--tw-bg-opacity)); + } + + .dark\:bg-ideblack { + --tw-bg-opacity: 1; + background-color: rgb(14 17 22 / var(--tw-bg-opacity)); + } + + .dark\:bg-neutral-900\/70 { + background-color: rgb(23 23 23 / 0.7); + } + + .dark\:bg-slate-800 { + --tw-bg-opacity: 1; + background-color: rgb(30 41 59 / var(--tw-bg-opacity)); + } + + .dark\:bg-opacity-80 { + --tw-bg-opacity: 0.8; + } + + .dark\:fill-white { + fill: #fff; + } + + .dark\:fill-zinc-100 { + fill: #f4f4f5; + } + + .dark\:text-\[\#dee2e6\] { + --tw-text-opacity: 1; + color: rgb(222 226 230 / var(--tw-text-opacity)); + } + + .dark\:text-gray-100 { + --tw-text-opacity: 1; + color: rgb(243 244 246 / var(--tw-text-opacity)); + } + + .dark\:text-gray-200 { + --tw-text-opacity: 1; + color: rgb(229 231 235 / var(--tw-text-opacity)); + } + + .dark\:text-gray-300 { + --tw-text-opacity: 1; + color: rgb(209 213 219 / var(--tw-text-opacity)); + } + + .dark\:text-gray-400 { + --tw-text-opacity: 1; + color: rgb(156 163 175 / var(--tw-text-opacity)); + } + + .dark\:text-gray-500 { + --tw-text-opacity: 1; + color: rgb(107 114 128 / var(--tw-text-opacity)); + } + + .dark\:text-sky-400 { + --tw-text-opacity: 1; + color: rgb(56 189 248 / var(--tw-text-opacity)); + } + + .dark\:text-white { + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); + } + + .dark\:opacity-75 { + opacity: 0.75; + } + + .dark\:ring-1 { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); + } + + .dark\:ring-inset { + --tw-ring-inset: inset; + } + + .dark\:ring-white\/10 { + --tw-ring-color: rgb(255 255 255 / 0.1); + } + + .dark\:invert-0 { + --tw-invert: invert(0); + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); + } + + .dark\:backdrop-blur { + --tw-backdrop-blur: blur(8px); + -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); + backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); + } + + .dark\:hover\:bg-ideblack:hover { + --tw-bg-opacity: 1; + background-color: rgb(14 17 22 / var(--tw-bg-opacity)); + } + + .dark\:hover\:text-gray-300:hover { + --tw-text-opacity: 1; + color: rgb(209 213 219 / var(--tw-text-opacity)); + } + + .dark\:hover\:text-sky-400:hover { + --tw-text-opacity: 1; + color: rgb(56 189 248 / var(--tw-text-opacity)); } +} +@media (min-width: 640px) { .sm\:mx-0 { margin-left: 0px; margin-right: 0px; @@ -2030,10 +2094,6 @@ video { margin-right: auto; } - .sm\:mt-0 { - margin-top: 0px; - } - .sm\:block { display: block; } @@ -2082,10 +2142,6 @@ video { border-radius: 0.75rem; } - .sm\:pr-16 { - padding-right: 4rem; - } - .sm\:text-left { text-align: left; } @@ -2150,10 +2206,6 @@ video { width: 50%; } - .md\:w-1\/4 { - width: 25%; - } - .md\:w-60 { width: 15rem; } @@ -2297,6 +2349,10 @@ video { margin-right: auto; } + .lg\:-ml-3 { + margin-left: -0.75rem; + } + .lg\:-ml-3\.5 { margin-left: -0.875rem; } @@ -2333,10 +2389,6 @@ video { width: 25%; } - .lg\:w-2\/3 { - width: 66.666667%; - } - .lg\:w-2\/5 { width: 40%; } @@ -2353,30 +2405,16 @@ video { background-color: inherit; } - .lg\:px-40 { - padding-left: 10rem; - padding-right: 10rem; - } - .lg\:py-2 { padding-top: 0.5rem; padding-bottom: 0.5rem; } - .lg\:pl-6 { - padding-left: 1.5rem; - } - .lg\:text-5xl { font-size: 3rem; line-height: 1; } - .lg\:text-6xl { - font-size: 3.75rem; - line-height: 1; - } - .lg\:text-\[14px\] { font-size: 14px; } @@ -2423,152 +2461,7 @@ video { } } -@media (prefers-color-scheme: dark) { - .dark\:block { - display: block; - } - - .dark\:hidden { - display: none; - } - - .dark\:border-gray-500 { - --tw-border-opacity: 1; - border-color: rgb(107 114 128 / var(--tw-border-opacity)); - } - - .dark\:border-gray-800 { - --tw-border-opacity: 1; - border-color: rgb(31 41 55 / var(--tw-border-opacity)); - } - - .dark\:border-stone-700 { - --tw-border-opacity: 1; - border-color: rgb(68 64 60 / var(--tw-border-opacity)); - } - - .dark\:bg-\[\#111111\] { - --tw-bg-opacity: 1; - background-color: rgb(17 17 17 / var(--tw-bg-opacity)); - } - - .dark\:bg-gray-800 { - --tw-bg-opacity: 1; - background-color: rgb(31 41 55 / var(--tw-bg-opacity)); - } - - .dark\:bg-ideblack { - --tw-bg-opacity: 1; - background-color: rgb(14 17 22 / var(--tw-bg-opacity)); - } - - .dark\:bg-neutral-900\/70 { - background-color: rgb(23 23 23 / 0.7); - } - - .dark\:bg-slate-800 { - --tw-bg-opacity: 1; - background-color: rgb(30 41 59 / var(--tw-bg-opacity)); - } - - .dark\:bg-opacity-80 { - --tw-bg-opacity: 0.8; - } - - .dark\:fill-white { - fill: #fff; - } - - .dark\:fill-zinc-100 { - fill: #f4f4f5; - } - - .dark\:text-\[\#dee2e6\] { - --tw-text-opacity: 1; - color: rgb(222 226 230 / var(--tw-text-opacity)); - } - - .dark\:text-gray-100 { - --tw-text-opacity: 1; - color: rgb(243 244 246 / var(--tw-text-opacity)); - } - - .dark\:text-gray-200 { - --tw-text-opacity: 1; - color: rgb(229 231 235 / var(--tw-text-opacity)); - } - - .dark\:text-gray-300 { - --tw-text-opacity: 1; - color: rgb(209 213 219 / var(--tw-text-opacity)); - } - - .dark\:text-gray-400 { - --tw-text-opacity: 1; - color: rgb(156 163 175 / var(--tw-text-opacity)); - } - - .dark\:text-gray-500 { - --tw-text-opacity: 1; - color: rgb(107 114 128 / var(--tw-text-opacity)); - } - - .dark\:text-sky-400 { - --tw-text-opacity: 1; - color: rgb(56 189 248 / var(--tw-text-opacity)); - } - - .dark\:text-white { - --tw-text-opacity: 1; - color: rgb(255 255 255 / var(--tw-text-opacity)); - } - - .dark\:opacity-75 { - opacity: 0.75; - } - - .dark\:ring-1 { - --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); - --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); - box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); - } - - .dark\:ring-inset { - --tw-ring-inset: inset; - } - - .dark\:ring-white\/10 { - --tw-ring-color: rgb(255 255 255 / 0.1); - } - - .dark\:invert-0 { - --tw-invert: invert(0); - filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); - } - - .dark\:backdrop-blur { - --tw-backdrop-blur: blur(8px); - -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); - backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); - } - - .dark\:hover\:bg-ideblack:hover { - --tw-bg-opacity: 1; - background-color: rgb(14 17 22 / var(--tw-bg-opacity)); - } - - .dark\:hover\:text-gray-300:hover { - --tw-text-opacity: 1; - color: rgb(209 213 219 / var(--tw-text-opacity)); - } - - .dark\:hover\:text-sky-400:hover { - --tw-text-opacity: 1; - color: rgb(56 189 248 / var(--tw-text-opacity)); - } -} - -@media(min-height:720px) { +@media (min-height:720px) { .\[\@media\(min-height\:720px\)\]\:h-\[calc\(100vh\)\] { height: calc(100vh); } diff --git a/src/doc_examples/component_lifecycle.rs b/src/doc_examples/component_lifecycle.rs index 0a051ca8b..7af7d7f5d 100644 --- a/src/doc_examples/component_lifecycle.rs +++ b/src/doc_examples/component_lifecycle.rs @@ -1,8 +1,11 @@ #![allow(non_snake_case)] use dioxus::prelude::*; -pub use use_hook::UseHookDemo; use super::{log, ComponentWithLogs}; +pub use drop::DropDemo; +pub use effect::EffectDemo; +pub use rerenders::RerenderDemo; +pub use use_hook::UseHookDemo; mod use_hook { use super::*; @@ -47,3 +50,107 @@ mod use_hook { } } } + +mod rerenders { + use super::*; + + // ANCHOR: rerenders + fn Rerenders() -> Element { + let mut count = use_signal(|| 0); + + log!("Rerendering parent component with {}", *count.peek()); + + rsx! { + button { onclick: move |_| count += 1, "Increment" } + // Since we read count here, the component will rerender when count changes + Count { current_count: count() } + } + } + + // If the count prop changes, the component will rerender + #[component] + fn Count(current_count: i32) -> Element { + log!("Rerendering child component with {current_count}"); + + rsx! { + div { "The count is {current_count}" } + } + } + // ANCHOR_END: rerenders + + pub fn RerenderDemo() -> Element { + rsx! { + ComponentWithLogs { + Rerenders {} + } + } + } +} + +mod effect { + use super::*; + + // ANCHOR: effect + fn Effect() -> Element { + // Effects run after the component is rendered + // You can use them to read or modify the rendered component + use_effect(|| { + log!("Effect ran"); + eval(&format!( + "document.getElementById('effect-output').innerText = 'Effect ran'" + )); + }); + + rsx! { + div { + id: "effect-output", + "This will be changed by the effect" + } + } + } + // ANCHOR_END: effect + + pub fn EffectDemo() -> Element { + rsx! { + ComponentWithLogs { + Effect {} + } + } + } +} + +mod drop { + use super::*; + + // ANCHOR: drop + fn TogglesChild() -> Element { + let mut show = use_signal(|| true); + + rsx! { + button { onclick: move |_| show.toggle(), "Toggle" } + if show() { + Child {} + } + } + } + + fn Child() -> Element { + // You can use the use_drop hook to clean up any resources + use_drop(|| { + log!("Child dropped"); + }); + + rsx! { + div { "Child" } + } + } + // ANCHOR_END: drop + + pub fn DropDemo() -> Element { + rsx! { + ComponentWithLogs { + TogglesChild {} + } + } + } +} diff --git a/src/doc_examples/mod.rs b/src/doc_examples/mod.rs index 36111cb30..4645d8e82 100644 --- a/src/doc_examples/mod.rs +++ b/src/doc_examples/mod.rs @@ -7,7 +7,7 @@ pub fn TwoPanelComponent(left: Element, right: Element) -> Element { rsx! { div { class: "w-full h-40 overflow-y-hidden flex flex-row justify-between", div { class: "w-1/2 h-full", {left} } - div { class: "w-1/2 h-full", {right} } + div { class: "w-1/2 h-full text-sm", {right} } } } } @@ -56,13 +56,14 @@ pub fn ComponentWithLogs(children: Element) -> Element { } } - // Include any examples we compile into the docsite #[cfg(not(feature = "doc_test"))] pub mod boolean_attribute; #[cfg(not(feature = "doc_test"))] pub mod component_children; #[cfg(not(feature = "doc_test"))] +pub mod component_lifecycle; +#[cfg(not(feature = "doc_test"))] pub mod component_owned_props; #[cfg(not(feature = "doc_test"))] pub mod components; @@ -110,8 +111,6 @@ pub mod rsx_overview; pub mod spawn; #[cfg(not(feature = "doc_test"))] pub mod use_resource; -#[cfg(not(feature = "doc_test"))] -pub mod component_lifecycle; // Check any examples we don't compile into the docs #[cfg(feature = "doc_test")] diff --git a/src/doc_examples/reactivity.rs b/src/doc_examples/reactivity.rs index 4e970032b..38787d514 100644 --- a/src/doc_examples/reactivity.rs +++ b/src/doc_examples/reactivity.rs @@ -1,6 +1,6 @@ use dioxus::prelude::*; -use super::{TwoPanelComponent, log, ComponentWithLogs, LogState}; +use super::{log, ComponentWithLogs, LogState, TwoPanelComponent}; pub use component::ComponentDemo; pub use effect::EffectDemo; pub use memo::MemoDemo; From a40f88e1e1e681ba064e87bde9f4798dab7e3cdc Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Mon, 19 Aug 2024 11:26:42 -0700 Subject: [PATCH 27/35] add a section about mutating state while rendering --- docs-src/0.5/src/essentials/lifecycle/index.md | 10 ++++++++++ src/doc_examples/component_lifecycle.rs | 16 ++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/docs-src/0.5/src/essentials/lifecycle/index.md b/docs-src/0.5/src/essentials/lifecycle/index.md index 05d44decb..17463420e 100644 --- a/docs-src/0.5/src/essentials/lifecycle/index.md +++ b/docs-src/0.5/src/essentials/lifecycle/index.md @@ -26,6 +26,16 @@ DemoFrame { } ``` +### ⚠️ Don't mutate state in the body of a component + +You should avoid changing state in the body of a component. If you read and write to state in the body of a component, you can cause an infinite loop as the component tries to rerender because of the change which triggers another state change. + +```rust, no_run +{{#include src/doc_examples/component_lifecycle.rs:dont_mutate}} +``` + +Instead, derive state with `use_memo`, `use_resource`, or mutate state in a effect. + ## Using Effects You can use [effects](../reference/reactivity.md) to run code whenever a component is rendered. diff --git a/src/doc_examples/component_lifecycle.rs b/src/doc_examples/component_lifecycle.rs index 7af7d7f5d..56cdc8f35 100644 --- a/src/doc_examples/component_lifecycle.rs +++ b/src/doc_examples/component_lifecycle.rs @@ -78,6 +78,22 @@ mod rerenders { } // ANCHOR_END: rerenders + // ANCHOR: dont_mutate + fn Bad() -> Element { + let mut count = use_signal(|| 0); + + // ❌ Don't mutate state in the body of the component. + // It can easily cause an infinite loop! + count += 1; + + rsx! { + // If you both read and write to state in the body of the component, + // you can cause an infinite loop! + "{count}" + } + } + // ANCHOR_END: dont_mutate + pub fn RerenderDemo() -> Element { rsx! { ComponentWithLogs { From a98ed8eef5c2b05f1b42ccc1228ebb86568f0ab2 Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Tue, 20 Aug 2024 12:20:01 -0700 Subject: [PATCH 28/35] Add a section about breaking out of dioxus --- Cargo.lock | 143 ++++------------- Cargo.toml | 26 +++- docs-src/0.5/src/essentials/breaking/index.md | 75 +++++++++ public/tailwind.css | 25 +++ src/doc_examples/anti_patterns.rs | 43 +++--- src/doc_examples/breaking_out.rs | 144 ++++++++++++++++++ src/doc_examples/event_handler_prop.rs | 4 +- src/doc_examples/mod.rs | 2 + 8 files changed, 327 insertions(+), 135 deletions(-) create mode 100644 src/doc_examples/breaking_out.rs diff --git a/Cargo.lock b/Cargo.lock index ec9b7f427..b9b09c063 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -17,17 +17,6 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" -[[package]] -name = "ahash" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" -dependencies = [ - "getrandom 0.2.15", - "once_cell", - "version_check", -] - [[package]] name = "ahash" version = "0.8.11" @@ -866,25 +855,6 @@ dependencies = [ "crossbeam-utils", ] -[[package]] -name = "crossbeam-deque" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" -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.20" @@ -1063,7 +1033,7 @@ dependencies = [ [[package]] name = "dioxus" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" +source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" dependencies = [ "dioxus-config-macro", "dioxus-core", @@ -1082,7 +1052,7 @@ dependencies = [ [[package]] name = "dioxus-autofmt" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" +source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" dependencies = [ "dioxus-rsx", "prettyplease", @@ -1095,7 +1065,7 @@ dependencies = [ [[package]] name = "dioxus-cli-config" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" +source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" dependencies = [ "built", "clap", @@ -1108,7 +1078,7 @@ dependencies = [ [[package]] name = "dioxus-config-macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" +source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" dependencies = [ "proc-macro2", "quote", @@ -1117,7 +1087,7 @@ dependencies = [ [[package]] name = "dioxus-core" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" +source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" dependencies = [ "const_format", "futures-channel", @@ -1137,7 +1107,7 @@ dependencies = [ [[package]] name = "dioxus-core-macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" +source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" dependencies = [ "convert_case 0.6.0", "dioxus-rsx", @@ -1150,7 +1120,7 @@ dependencies = [ [[package]] name = "dioxus-desktop" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" +source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" dependencies = [ "async-trait", "cocoa", @@ -1189,7 +1159,7 @@ dependencies = [ [[package]] name = "dioxus-fullstack" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" +source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" dependencies = [ "base64 0.22.1", "bytes", @@ -1211,7 +1181,7 @@ dependencies = [ [[package]] name = "dioxus-hooks" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" +source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" dependencies = [ "dioxus-core", "dioxus-signals", @@ -1227,7 +1197,7 @@ dependencies = [ [[package]] name = "dioxus-hot-reload" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" +source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" dependencies = [ "dioxus-cli-config", "dioxus-core", @@ -1247,7 +1217,7 @@ dependencies = [ [[package]] name = "dioxus-html" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" +source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" dependencies = [ "async-trait", "dioxus-core", @@ -1275,7 +1245,7 @@ dependencies = [ [[package]] name = "dioxus-html-internal-macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" +source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" dependencies = [ "convert_case 0.6.0", "proc-macro2", @@ -1286,7 +1256,7 @@ dependencies = [ [[package]] name = "dioxus-interpreter-js" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" +source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" dependencies = [ "dioxus-core", "dioxus-html", @@ -1303,7 +1273,7 @@ dependencies = [ [[package]] name = "dioxus-lib" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" +source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" dependencies = [ "dioxus-config-macro", "dioxus-core", @@ -1317,7 +1287,7 @@ dependencies = [ [[package]] name = "dioxus-liveview" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" +source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" dependencies = [ "axum", "dioxus-cli-config", @@ -1376,7 +1346,7 @@ dependencies = [ [[package]] name = "dioxus-router" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" +source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" dependencies = [ "dioxus-cli-config", "dioxus-fullstack", @@ -1396,7 +1366,7 @@ dependencies = [ [[package]] name = "dioxus-router-macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" +source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" dependencies = [ "proc-macro2", "quote", @@ -1407,7 +1377,7 @@ dependencies = [ [[package]] name = "dioxus-rsx" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" +source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" dependencies = [ "dioxus-core", "internment", @@ -1483,7 +1453,7 @@ dependencies = [ [[package]] name = "dioxus-signals" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" +source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" dependencies = [ "dioxus-core", "futures-channel", @@ -1499,7 +1469,7 @@ dependencies = [ [[package]] name = "dioxus-ssr" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" +source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" dependencies = [ "askama_escape", "async-trait", @@ -1518,7 +1488,7 @@ dependencies = [ [[package]] name = "dioxus-static-site-generation" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" +source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" dependencies = [ "dioxus-fullstack", "dioxus-lib", @@ -1530,7 +1500,7 @@ dependencies = [ [[package]] name = "dioxus-web" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" +source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" dependencies = [ "ciborium", "console_error_panic_hook", @@ -1594,7 +1564,6 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "shipyard", "simple_logger", "slab", "stork-lib", @@ -1611,7 +1580,7 @@ dependencies = [ [[package]] name = "dioxus_server_macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" +source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" dependencies = [ "convert_case 0.6.0", "proc-macro2", @@ -1693,12 +1662,6 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a68a4904193147e0a8dec3314640e6db742afd5f6e634f428a6af230d9b3591" -[[package]] -name = "either" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" - [[package]] name = "embedded-io" version = "0.4.0" @@ -2145,7 +2108,7 @@ dependencies = [ [[package]] name = "generational-box" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" +source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" dependencies = [ "parking_lot", ] @@ -2656,9 +2619,6 @@ name = "hashbrown" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" -dependencies = [ - "ahash 0.7.8", -] [[package]] name = "hashbrown" @@ -2666,7 +2626,7 @@ version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ - "ahash 0.8.11", + "ahash", "allocator-api2", ] @@ -3174,7 +3134,7 @@ dependencies = [ [[package]] name = "lazy-js-bundle" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#4963aa31184e230cb232feedcd6f84f379dca31c" +source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" [[package]] name = "lazy_static" @@ -3331,7 +3291,7 @@ dependencies = [ "built", "home", "infer", - "reqwest 0.12.6", + "reqwest 0.12.7", "serde", "toml 0.7.8", "tracing", @@ -4344,26 +4304,6 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" -[[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.5.3" @@ -4444,9 +4384,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.6" +version = "0.12.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6f6ddd79dc661ade721873783d159ec87d91d556ce92933e342bae8b87c48c0" +checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63" dependencies = [ "base64 0.22.1", "bytes", @@ -4681,7 +4621,7 @@ version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c95a930e03325234c18c7071fd2b60118307e025d6fff3e12745ffbf63a3d29c" dependencies = [ - "ahash 0.8.11", + "ahash", "cssparser 0.31.2", "ego-tree", "getopts", @@ -4967,29 +4907,6 @@ dependencies = [ "lazy_static", ] -[[package]] -name = "shipyard" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace89f5a47029be049c7f47d166cd2c7a30d74e127f4baa2d8885e5d3b486035" -dependencies = [ - "hashbrown 0.12.3", - "lock_api", - "rayon", - "shipyard_proc", -] - -[[package]] -name = "shipyard_proc" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eb847f4b9582e468198b5cfb5731b65cc67fe5e535acc9cbf3c11703d15f08c" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "shlex" version = "1.3.0" diff --git a/Cargo.toml b/Cargo.toml index 0e2d2801e..a0de69e15 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -41,11 +41,11 @@ tokio = { version = "1.29.0", features = ["full"], optional = true } axum = { version = "0.7", optional = true } http = { version = "1.0.0", optional = true } simple_logger = "4.2.0" -shipyard = { version = "0.6.2", optional = true } reqwest = { version = "0.11.18", features = ["json"] } gloo-storage = { version = "0.2.2", optional = true } web-sys = { version = "0.3.64", features = [ "Document", + "HtmlDocument", "Window", "Event", "AddEventListenerOptions", @@ -104,6 +104,30 @@ dioxus_server_macro = { git = "https://github.com/dioxuslabs/dioxus" } dioxus-fullstack = { git = "https://github.com/dioxuslabs/dioxus" } dioxus-autofmt = { git = "https://github.com/dioxuslabs/dioxus" } +# dioxus = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +# dioxus-lib = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +# dioxus-core = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +# dioxus-core-macro = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +# dioxus-config-macro = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +# dioxus-router = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +# dioxus-router-macro = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +# dioxus-html = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +# dioxus-html-internal-macro = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +# dioxus-hooks = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +# dioxus-web = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +# dioxus-ssr = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +# dioxus-desktop = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +# dioxus-interpreter-js = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +# dioxus-liveview = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +# dioxus-rsx = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +# dioxus-signals = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +# dioxus-cli-config = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +# generational-box = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +# dioxus-hot-reload = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +# dioxus_server_macro = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +# dioxus-fullstack = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +# dioxus-autofmt = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } + # manganis = { path = "../manganis/packages/manganis" } # manganis-common = { path = "../manganis/packages/common" } # manganis-macro = { path = "../manganis/packages/macro" } diff --git a/docs-src/0.5/src/essentials/breaking/index.md b/docs-src/0.5/src/essentials/breaking/index.md index e69de29bb..767bef7d6 100644 --- a/docs-src/0.5/src/essentials/breaking/index.md +++ b/docs-src/0.5/src/essentials/breaking/index.md @@ -0,0 +1,75 @@ +# Breaking Out of Dioxus + +Dioxus is makes it easy to build reactive user interfaces. However, there are some cases where you may need to break out of the reactive paradigm to interact with the DOM directly. + +## Interacting with JavaScript with `eval` and `web-sys` + +Dioxus exposes a limited number of [web apis](https://developer.mozilla.org/en-US/docs/Web/API) with a nicer interface. If you need access to more APIs, you can use the `eval` function to run JavaScript in the browser. + + +For example, you can use the eval function to read the domain of the current page: + +```rust, no_run +{{#include src/doc_examples/breaking_out.rs:eval}} +``` +```inject-dioxus +DemoFrame { + breaking_out::Eval {} +} +``` + +If you are only targeting web, you can also use the [`web-sys`](https://crates.io/crates/web-sys) crate for typed access to the web APIs. Here is what reading the domain looks like with web-sys: + +```rust, no_run +{{#include src/doc_examples/breaking_out.rs:web_sys}} +``` +```inject-dioxus +DemoFrame { + breaking_out::WebSys {} +} +``` + +## Synchronizing DOM updates with `use_effect` + +If you do need to interact with the DOM directly, you should do so in a `use_effect` hook. This hook will run after the component is rendered and all of the Dioxus UI has been rendered. You can read or modify the DOM in this hook. + + +For example, you can use the `use_effect` hook to write to a canvas element after it is created: + +```rust, no_run +{{#include src/doc_examples/breaking_out.rs:use_effect}} +``` +```inject-dioxus +DemoFrame { + breaking_out::Canvas {} +} +``` + +## Getting access to elements with `onmounted` + +If you need a handle to an element that is rendered by dioxus, you can use the `onmounted` event. This event will fire after the element is first mounted to the DOM. It returns a live reference to the element with some methods to interact with it. + + +You can use the onmounted event to do things like focus or scroll to an element after it is rendered: + +```rust, no_run +{{#include src/doc_examples/breaking_out.rs:onmounted}} +``` +```inject-dioxus +DemoFrame { + breaking_out::OnMounted {} +} +``` + +## Down casting web sys events + +Dioxus provides platform agnostic wrappers over each event type. These wrappers are often nicer to interact with than the raw event types, but they can be more limited. If you are targeting web, you can downcast the event with the `as_web_event` method to get the underlying web-sys event: + +```rust, no_run +{{#include src/doc_examples/breaking_out.rs:downcast}} +``` +```inject-dioxus +DemoFrame { + breaking_out::Downcast {} +} +``` diff --git a/public/tailwind.css b/public/tailwind.css index 7c7f64f50..4a27d068b 100644 --- a/public/tailwind.css +++ b/public/tailwind.css @@ -1938,6 +1938,31 @@ video { box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } +.focus\:bg-orange-300:focus { + --tw-bg-opacity: 1; + background-color: rgb(253 186 116 / var(--tw-bg-opacity)); +} + +.focus\:outline:focus { + outline-style: solid; +} + +.focus\:outline-dashed:focus { + outline-style: dashed; +} + +.focus\:outline-dotted:focus { + outline-style: dotted; +} + +.focus\:outline-2:focus { + outline-width: 2px; +} + +.focus\:outline-blue-600:focus { + outline-color: #2563eb; +} + .group:hover .group-hover\:text-gray-500 { --tw-text-opacity: 1; color: rgb(107 114 128 / var(--tw-text-opacity)); diff --git a/src/doc_examples/anti_patterns.rs b/src/doc_examples/anti_patterns.rs index fd2b85b72..78df305db 100644 --- a/src/doc_examples/anti_patterns.rs +++ b/src/doc_examples/anti_patterns.rs @@ -2,8 +2,8 @@ //! This example shows what *not* to do -use std::collections::HashMap; use std::cell::RefCell; +use std::collections::HashMap; use std::rc::Rc; use dioxus::prelude::*; @@ -68,7 +68,6 @@ fn AntipatternNoKeys(props: NoKeysProps) -> Element { // ANCHOR_END: iter_keys } - // ANCHOR: interior_mutability // ❌ Mutex/RwLock/RefCell in props #[derive(Props, Clone)] @@ -88,7 +87,7 @@ fn AntipatternInteriorMutability(map: Rc>>) -> Elem onclick: { let map = map.clone(); move |_| { - // Writing to map will not rerun any components + // Writing to map will not rerun any components map.borrow_mut().insert(0, "Hello".to_string()); } }, @@ -155,13 +154,13 @@ fn app() -> Element { logged_in: bool, warnings: Vec, } - + #[derive(Props, Clone, PartialEq)] struct User { name: String, email: String, } - + let mut all_my_state = use_signal(|| LargeState { users: vec![User { name: "Alice".to_string(), @@ -170,21 +169,26 @@ fn app() -> Element { logged_in: true, warnings: vec![], }); - + use_effect(move || { // It is very easy to accidentally read and write to the state object if it contains all your state let read = all_my_state.read(); let logged_in = read.logged_in; if !logged_in { - all_my_state.write_unchecked().warnings.push("You are not logged in".to_string()); + all_my_state + .write_unchecked() + .warnings + .push("You are not logged in".to_string()); } }); // ✅ Use multiple signals to manage state - let users = use_signal(|| vec![User { - name: "Alice".to_string(), - email: "alice@example.com".to_string(), - }]); + let users = use_signal(|| { + vec![User { + name: "Alice".to_string(), + email: "alice@example.com".to_string(), + }] + }); let logged_in = use_signal(|| true); let mut warnings = use_signal(|| vec![]); @@ -197,10 +201,12 @@ fn app() -> Element { // ✅ Use memos to create derived state when larger states are unavoidable // Notice we didn't split everything into separate signals. Users still make sense as a vec of data - let users = use_signal(|| vec![User { - name: "Alice".to_string(), - email: "alice@example.com".to_string(), - }]); + let users = use_signal(|| { + vec![User { + name: "Alice".to_string(), + email: "alice@example.com".to_string(), + }] + }); let logged_in = use_signal(|| true); let warnings: Signal> = use_signal(|| vec![]); @@ -225,13 +231,12 @@ fn app() -> Element { } // ANCHOR_END: large_state - // ANCHOR: non_deterministic // ❌ Non-deterministic code in the body of a component #[component] fn NonDeterministic(name: String) -> Element { let my_random_id = rand::random::(); - + rsx! { div { // Id will change every single time the component is re-rendered @@ -245,7 +250,7 @@ fn NonDeterministic(name: String) -> Element { fn NonDeterministicHook(name: String) -> Element { // If you store the result of the non-deterministic code in a hook, it will stay the same between renders let my_random_id = use_hook(|| rand::random::()); - + rsx! { div { id: "{my_random_id}", @@ -350,4 +355,4 @@ fn RcPartialEqParent() -> Element { } } } -// ANCHOR_END: permissive_partial_eq \ No newline at end of file +// ANCHOR_END: permissive_partial_eq diff --git a/src/doc_examples/breaking_out.rs b/src/doc_examples/breaking_out.rs new file mode 100644 index 000000000..68114c7ff --- /dev/null +++ b/src/doc_examples/breaking_out.rs @@ -0,0 +1,144 @@ +use dioxus::prelude::*; +pub use eval::Eval; +pub use onmounted::OnMounted; +pub use use_effect::Canvas; +pub use web_sys::WebSys; +pub use downcast::Downcast; + +mod eval { + use super::*; + + // ANCHOR: eval + pub fn Eval() -> Element { + let mut domain = use_signal(String::new); + rsx! { + button { + // When you click the button, some javascript will run in the browser + // to read the domain and set the signal + onclick: move |_| async move { + domain.set(eval("return document.domain").await.unwrap().to_string()); + }, + "Read Domain" + } + "Current domain: {domain}" + } + } + // ANCHOR_END: eval +} + +mod downcast { + use super::*; + + // ANCHOR: downcast + use dioxus::web::WebEventExt; + pub fn Downcast() -> Element { + let mut event_text = use_signal(|| 0); + + rsx! { + div { + onmousemove: move |event| { + event_text.set(event.as_web_event().movement_x()); + }, + "movement_x was {event_text}" + } + } + } + // ANCHOR_END: downcast +} + +mod web_sys { + use super::*; + + // ANCHOR: web_sys + use ::web_sys::window; + use wasm_bindgen::JsCast; + pub fn WebSys() -> Element { + let mut domain = use_signal(String::new); + rsx! { + button { + // When you click the button, we use web-sys to read the domain and a signal + onclick: move |_| { + domain.set( + window() + .unwrap() + .document() + .unwrap() + .dyn_into::<::web_sys::HtmlDocument>() + .unwrap() + .domain() + ); + }, + "Read Domain" + } + "Current domain: {domain}" + } + } + // ANCHOR_END: web_sys +} + +mod use_effect { + use super::*; + + // ANCHOR: use_effect + pub fn Canvas() -> Element { + let mut count = use_signal(|| 0); + + use_effect(move || { + // Effects are reactive like memos, and resources. If you read a value inside the effect, the effect will rerun when that value changes + let count = count.read(); + + // You can use the count value to update the DOM manually + eval(&format!( + r#"var c = document.getElementById("dioxus-canvas"); + var ctx = c.getContext("2d"); + ctx.clearRect(0, 0, c.width, c.height); + ctx.font = "30px Arial"; + ctx.fillText("{count}", 10, 50);"# + )); + }); + + rsx! { + button { + // When you click the button, count will be incremented and the effect will rerun + onclick: move |_| count += 1, + "Increment" + } + canvas { + id: "dioxus-canvas", + } + } + } + // ANCHOR_END: use_effect +} + +mod onmounted { + use super::*; + + // ANCHOR: onmounted + pub fn OnMounted() -> Element { + let mut input_element = use_signal(|| None); + + rsx! { + div { + height: "100px", + button { + class: "focus:outline-2 focus:outline-blue-600 focus:outline-dashed", + // The onmounted event will run the first time the button element is mounted + onmounted: move |element| input_element.set(Some(element.data())), + "First button" + } + + button { + // When you click the button, if the button element has been mounted, we focus to that element + onclick: move |_| async move { + if let Some(header) = input_element() { + let _ = header.set_focus(true).await; + } + }, + "Focus first button" + } + } + } + } + // ANCHOR_END: onmounted +} diff --git a/src/doc_examples/event_handler_prop.rs b/src/doc_examples/event_handler_prop.rs index 206ff0abb..356ece5be 100644 --- a/src/doc_examples/event_handler_prop.rs +++ b/src/doc_examples/event_handler_prop.rs @@ -9,8 +9,8 @@ fn main() { fn App() -> Element { // ANCHOR: usage rsx! { - FancyButton { - onclick: move |event| println!("Clicked! {event:?}"), + FancyButton { + onclick: move |event| println!("Clicked! {event:?}"), } } // ANCHOR_END: usage diff --git a/src/doc_examples/mod.rs b/src/doc_examples/mod.rs index 4645d8e82..df0863f49 100644 --- a/src/doc_examples/mod.rs +++ b/src/doc_examples/mod.rs @@ -60,6 +60,8 @@ pub fn ComponentWithLogs(children: Element) -> Element { #[cfg(not(feature = "doc_test"))] pub mod boolean_attribute; #[cfg(not(feature = "doc_test"))] +pub mod breaking_out; +#[cfg(not(feature = "doc_test"))] pub mod component_children; #[cfg(not(feature = "doc_test"))] pub mod component_lifecycle; From ffafa9e366616ed77a5691fa7bae515a92933fdf Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Tue, 20 Aug 2024 17:28:58 -0700 Subject: [PATCH 29/35] add a section about building uis with rsx --- docs-src/0.5/src/SUMMARY.md | 1 + docs-src/0.5/src/essentials/rsx/index.md | 159 ++++++++++++++++++++++ src/doc_examples/breaking_out.rs | 2 +- src/doc_examples/building_uis_with_rsx.rs | 138 +++++++++++++++++++ src/doc_examples/mod.rs | 2 + 5 files changed, 301 insertions(+), 1 deletion(-) create mode 100644 docs-src/0.5/src/essentials/rsx/index.md create mode 100644 src/doc_examples/building_uis_with_rsx.rs diff --git a/docs-src/0.5/src/SUMMARY.md b/docs-src/0.5/src/SUMMARY.md index 24cf5e039..dccc45df2 100644 --- a/docs-src/0.5/src/SUMMARY.md +++ b/docs-src/0.5/src/SUMMARY.md @@ -30,6 +30,7 @@ - [Managing State](essentials/state/index.md) - [Breaking Out](essentials/breaking/index.md) - [Structuring Your App](essentials/structure/index.md) + - [Building UIs with RSX](essentials/rsx/index.md) --- diff --git a/docs-src/0.5/src/essentials/rsx/index.md b/docs-src/0.5/src/essentials/rsx/index.md new file mode 100644 index 000000000..a3e709856 --- /dev/null +++ b/docs-src/0.5/src/essentials/rsx/index.md @@ -0,0 +1,159 @@ +# Building UIs with RSX + +Dioxus renders to HTML, if you are not familiar with HTML, this guide will help you get started with the basics. For more detail, the [MDN docs](https://developer.mozilla.org/en-US/docs/Web/HTML) are a great resource. + + +## Text Nodes + +Any content surrounded by quotes is rendered as a text node in rsx: + +```rust, no_run +{{#include src/doc_examples/building_uis_with_rsx.rs:text}} +``` + +```inject-dioxus +DemoFrame { + building_uis_with_rsx::Text {} +} +``` + +You can include formatted segments inside of the text just like the `format!` macro: + +```rust, no_run +{{#include src/doc_examples/building_uis_with_rsx.rs:formatted_text}} +``` + +```inject-dioxus +DemoFrame { + building_uis_with_rsx::FormattedText {} +} +``` + +## Elements + +The most basic building block of HTML is an element. In rsx, you can create elements with the name and then curly braces. One of the most common elements is the `input` element. The input element creates an interactive input box: + +```rust, no_run +{{#include src/doc_examples/building_uis_with_rsx.rs:input}} +``` + +```inject-dioxus +DemoFrame { + building_uis_with_rsx::Input {} +} +``` + +> Bonus: web components +> Any element with a dash in the name is a web component. Web components are rendered directly in dioxus without type checking. We recommend wrapping web components in a type safe component to make them easier to use. +> +> ```rust, no_run +> {{#include src/doc_examples/building_uis_with_rsx.rs:web_component}} +> ``` + +## Attributes + +Attributes provide extra information about an element. You can specify attributes in dioxus inside an element's braces by typing the name of the attribute, a colon, and then the value (typically a formatted string). We can use an attribute to set the `type` of an input element. The default type is `text` which shows a text input box, but we can set it to `number` to only accept numbers: + +```rust, no_run +{{#include src/doc_examples/building_uis_with_rsx.rs:input_type}} +``` + +```inject-dioxus +DemoFrame { + building_uis_with_rsx::InputType {} +} +``` + +Just like text nodes, attributes can include formatted segments. We can set the value of the input element to a signal to control it: + +```rust, no_run +{{#include src/doc_examples/building_uis_with_rsx.rs:input_value}} +``` + +```inject-dioxus +DemoFrame { + building_uis_with_rsx::InputValue {} +} +``` + +### Conditional Attributes + +You can conditionally set an attribute by setting the attribute value to an unterminated if statement. If the if statement evaluates to true, the attribute will be set: + +```rust, no_run +{{#include src/doc_examples/building_uis_with_rsx.rs:input_disabled}} +``` + +```inject-dioxus +DemoFrame { + building_uis_with_rsx::InputDisabled {} +} +``` + +## Event Listeners + +Event listeners allow you to respond to user input. In rsx, event handlers always start with `on`. The syntax is the same as normal attributes, but event handlers only accept a closure that responds to the event. We can attach an event listener to the `oninput` event of the input element to listen for changes to the input: + +```rust, no_run +{{#include src/doc_examples/building_uis_with_rsx.rs:on_input}} +``` + +```inject-dioxus +DemoFrame { + building_uis_with_rsx::OnInput {} +} +``` + +## Children + +You can add children to an element after all attributes and event listeners. Elements can accept text, components or other elements as children. We can add a `div` element around our input to center it: + +```rust, no_run +{{#include src/doc_examples/building_uis_with_rsx.rs:input_children}} +``` + +```inject-dioxus +DemoFrame { + building_uis_with_rsx::InputChildren {} +} +``` + +## Loops + +You can insert for loops directly in rsx. The body of the loop accepts any number of children that will be rendered with each iteration of the loop. The `ul` element in html renders an unordered list with any number of `li` (list item) elements. We can use those two elements to render a list of items in a loop: + +```rust, no_run +{{#include src/doc_examples/building_uis_with_rsx.rs:for_loop}} +``` + +```inject-dioxus +DemoFrame { + building_uis_with_rsx::ForLoop {} +} +``` + +Each item in your list should have unique value that is stable across rerenders called a key. Keys are used to identify how items move while diffing. Without keys, it is easy to accidentally lose or move state when you reorder items in a list. We can add keys to our list items by using the `key` attribute: + +```rust, no_run +{{#include src/doc_examples/building_uis_with_rsx.rs:keyed_for_loop}} +``` + +```inject-dioxus +DemoFrame { + building_uis_with_rsx::KeyedForLoop {} +} +``` + +## If Statements + +You can also use if/else statements in rsx. Each branch of the if statement accepts child nodes that will be rendered if the condition is true. We can use the `if` statement to conditionally render a login screen: + +```rust, no_run +{{#include src/doc_examples/building_uis_with_rsx.rs:if_statement}} +``` + +```inject-dioxus +DemoFrame { + building_uis_with_rsx::IfStatement {} +} +``` diff --git a/src/doc_examples/breaking_out.rs b/src/doc_examples/breaking_out.rs index 68114c7ff..c48ea0164 100644 --- a/src/doc_examples/breaking_out.rs +++ b/src/doc_examples/breaking_out.rs @@ -1,9 +1,9 @@ use dioxus::prelude::*; +pub use downcast::Downcast; pub use eval::Eval; pub use onmounted::OnMounted; pub use use_effect::Canvas; pub use web_sys::WebSys; -pub use downcast::Downcast; mod eval { use super::*; diff --git a/src/doc_examples/building_uis_with_rsx.rs b/src/doc_examples/building_uis_with_rsx.rs new file mode 100644 index 000000000..2ac658487 --- /dev/null +++ b/src/doc_examples/building_uis_with_rsx.rs @@ -0,0 +1,138 @@ +use dioxus::prelude::*; + +pub fn Text() -> Element { + // ANCHOR: text + rsx! { + "Hello world" + } + // ANCHOR_END: text +} + +pub fn FormattedText() -> Element { + struct User { + name: String, + } + // ANCHOR: formatted_text + let user = use_signal(|| User { + name: "Dioxus".to_string(), + }); + rsx! { + // Unlike the format macro, you can include many expressions inline in the formatted text + "Hello {user.read().name}" + } + // ANCHOR_END: formatted_text +} + +pub fn Input() -> Element { + // ANCHOR: input + rsx! { + input {} + } + // ANCHOR_END: input +} + +pub fn WebComponent() -> Element { + // ANCHOR: web_component + rsx! { + my-web-component {} + } + // ANCHOR_END: web_component +} + +pub fn InputType() -> Element { + // ANCHOR: input_type + rsx! { + input { type: "number" } + } + // ANCHOR_END: input_type +} + +pub fn InputValue() -> Element { + // ANCHOR: input_value + let mut value = use_signal(|| "Hello world".to_string()); + rsx! { + input { value: "{value}" } + } + // ANCHOR_END: input_value +} + +pub fn InputDisabled() -> Element { + // ANCHOR: input_disabled + let number_type = use_signal(|| false); + rsx! { + input { type: if number_type() { "number" } } + } + // ANCHOR_END: input_disabled +} + +pub fn OnInput() -> Element { + // ANCHOR: on_input + let mut value = use_signal(|| "Hello world".to_string()); + rsx! { + input { + oninput: move |event| value.set(event.value()), + value: "{value}" + } + } + // ANCHOR_END: on_input +} + +pub fn InputChildren() -> Element { + // ANCHOR: input_children + rsx! { + div { + // display sets the layout mode of the element + display: "flex", + // justify-content centers the element horizontally + justify_content: "center", + input { + type: "number" + } + } + } + // ANCHOR_END: input_children +} + +pub fn ForLoop() -> Element { + // ANCHOR: for_loop + let mut items = use_signal(|| vec!["Hello", "Dioxus"]); + + rsx! { + ul { + for item in items.iter() { + li { "{item}" } + } + } + } + // ANCHOR_END: for_loop +} + +pub fn KeyedForLoop() -> Element { + // ANCHOR: keyed_for_loop + let mut items = use_signal(|| vec!["Hello", "Dioxus"]); + + rsx! { + ul { + for item in items.iter() { + li { key: "{item}", "{item}" } + } + } + } + // ANCHOR_END: keyed_for_loop +} + +pub fn IfStatement() -> Element { + // ANCHOR: if_statement + let logged_in = use_signal(|| false); + + rsx! { + div { + if logged_in() { + "You are logged in" + } else { + "You are not logged in" + } + } + } + // ANCHOR_END: if_statement +} diff --git a/src/doc_examples/mod.rs b/src/doc_examples/mod.rs index df0863f49..71778dec2 100644 --- a/src/doc_examples/mod.rs +++ b/src/doc_examples/mod.rs @@ -62,6 +62,8 @@ pub mod boolean_attribute; #[cfg(not(feature = "doc_test"))] pub mod breaking_out; #[cfg(not(feature = "doc_test"))] +pub mod building_uis_with_rsx; +#[cfg(not(feature = "doc_test"))] pub mod component_children; #[cfg(not(feature = "doc_test"))] pub mod component_lifecycle; From 7f7dcebc5593f52d29966627e5bcd39e1d23ebdc Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Mon, 9 Sep 2024 10:50:41 -0500 Subject: [PATCH 30/35] restore feature flags --- .cargo/config.toml | 8 +++ Cargo.lock | 114 +++++++++++++++++++++++++++++++++++++++ Cargo.toml | 67 +++++++++++------------ src/doc_examples/i18n.rs | 4 +- 4 files changed, 155 insertions(+), 38 deletions(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index b39a198c9..02547d5d5 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -11,5 +11,13 @@ MANGANIS_SUPPORT = "true" opt-level = "z" # Optimization level. debug = false # Include debug info. strip = "debuginfo" # Removes symbols or debuginfo. + +[profile.dioxus-client] +inherits = "dev" +opt-level = 2 + +[profile.dioxus-server] +inherits = "dev" +opt-level = 2 # split-debuginfo = '...' # Debug info splitting behavior. diff --git a/Cargo.lock b/Cargo.lock index b9b09c063..42204b217 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -344,6 +344,7 @@ checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf" dependencies = [ "async-trait", "axum-core", + "axum-macros", "base64 0.21.7", "bytes", "futures-util", @@ -356,6 +357,7 @@ dependencies = [ "matchit", "memchr", "mime", + "multer", "percent-encoding", "pin-project-lite", "rustversion", @@ -394,6 +396,18 @@ dependencies = [ "tracing", ] +[[package]] +name = "axum-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00c055ee2d014ae5981ce1016374e8213682aa14d9bf40e48ab48b5f3ef20eaa" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "syn 2.0.74", +] + [[package]] name = "backtrace" version = "0.3.73" @@ -1035,6 +1049,7 @@ name = "dioxus" version = "0.6.0-alpha.2" source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" dependencies = [ + "axum", "dioxus-config-macro", "dioxus-core", "dioxus-core-macro", @@ -1042,11 +1057,14 @@ dependencies = [ "dioxus-hooks", "dioxus-hot-reload", "dioxus-html", + "dioxus-liveview", "dioxus-router", "dioxus-signals", + "dioxus-ssr", "dioxus-static-site-generation", "dioxus-web", "manganis", + "serde", ] [[package]] @@ -1161,20 +1179,38 @@ name = "dioxus-fullstack" version = "0.6.0-alpha.2" source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" dependencies = [ + "async-trait", + "axum", "base64 0.22.1", "bytes", "ciborium", + "clap", + "dioxus-cli-config", "dioxus-hot-reload", + "dioxus-interpreter-js", "dioxus-lib", + "dioxus-ssr", "dioxus-web", "dioxus_server_macro", "futures-channel", "futures-util", "generational-box", + "http 1.1.0", + "hyper 1.4.1", "once_cell", + "parking_lot", + "pin-project", "serde", "server_fn", + "thiserror", + "tokio", + "tokio-stream", + "tokio-util", + "tower", + "tower-http", + "tower-layer", "tracing", + "tracing-futures", "web-sys", ] @@ -1473,6 +1509,8 @@ source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e0123734 dependencies = [ "askama_escape", "async-trait", + "chrono", + "dioxus-cli-config", "dioxus-core", "dioxus-html", "dioxus-interpreter-js", @@ -1482,6 +1520,7 @@ dependencies = [ "rustc-hash", "serde_json", "thiserror", + "tokio", "tracing", ] @@ -1490,10 +1529,18 @@ name = "dioxus-static-site-generation" version = "0.6.0-alpha.2" source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" dependencies = [ + "axum", + "dioxus-cli-config", "dioxus-fullstack", + "dioxus-hot-reload", "dioxus-lib", "dioxus-router", + "dioxus-ssr", "dioxus-web", + "http 1.1.0", + "tokio", + "tower", + "tower-http", "tracing", ] @@ -2767,6 +2814,12 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "http-range-header" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08a397c49fec283e3d6211adbe480be95aae5f304cfb923e9970e08956d5168a" + [[package]] name = "httparse" version = "1.9.4" @@ -3008,6 +3061,12 @@ dependencies = [ "parking_lot", ] +[[package]] +name = "inventory" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" + [[package]] name = "ipnet" version = "2.9.0" @@ -3433,6 +3492,16 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + [[package]] name = "miniz_oxide" version = "0.7.4" @@ -3484,6 +3553,23 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "multer" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83e87776546dc87511aa5ee218730c92b666d7264ab6ed41f9d215af9cd5224b" +dependencies = [ + "bytes", + "encoding_rs", + "futures-util", + "http 1.1.0", + "httparse", + "memchr", + "mime", + "spin", + "version_check", +] + [[package]] name = "native-tls" version = "0.2.12" @@ -4406,6 +4492,7 @@ dependencies = [ "js-sys", "log", "mime", + "mime_guess", "native-tls", "once_cell", "percent-encoding", @@ -4418,10 +4505,12 @@ dependencies = [ "system-configuration 0.6.0", "tokio", "tokio-native-tls", + "tokio-util", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", + "wasm-streams", "web-sys", "windows-registry", ] @@ -4811,20 +4900,27 @@ version = "0.6.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "024b400db1aca5bd4188714f7bbbf7a2e1962b9a12a80b2a21e937e509086963" dependencies = [ + "axum", "bytes", "const_format", "dashmap", "futures", "gloo-net 0.6.0", "http 1.1.0", + "http-body-util", + "hyper 1.4.1", + "inventory", "js-sys", "once_cell", + "reqwest 0.12.7", "send_wrapper", "serde", "serde_json", "serde_qs", "server_fn_macro_default", "thiserror", + "tower", + "tower-layer", "url", "wasm-bindgen", "wasm-bindgen-futures", @@ -5643,13 +5739,21 @@ checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" dependencies = [ "bitflags 2.6.0", "bytes", + "futures-util", "http 1.1.0", "http-body 1.0.1", "http-body-util", + "http-range-header", + "httpdate", + "mime", + "mime_guess", + "percent-encoding", "pin-project-lite", "tokio", + "tokio-util", "tower-layer", "tower-service", + "tracing", ] [[package]] @@ -5697,6 +5801,16 @@ dependencies = [ "valuable", ] +[[package]] +name = "tracing-futures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "pin-project", + "tracing", +] + [[package]] name = "tracing-log" version = "0.2.0" diff --git a/Cargo.toml b/Cargo.toml index a0de69e15..596fb48aa 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -151,40 +151,35 @@ codegen-units = 1 [features] default = [] -# doc_test = [ -# "tokio", -# "server", -# "dioxus-web", -# "dioxus/web", -# # "dioxus-tui", -# "dioxus-desktop", -# "dioxus-liveview", -# # "dioxus-native-core", -# # "dioxus-native-core-macro", -# "shipyard", -# "gloo-storage", -# "pretty_assertions", -# "tower-http", -# "dioxus-sdk", -# "http", -# "rand" -# ] +doc_test = [ + "tokio", + "server", + "dioxus-web", + "dioxus/web", + "dioxus-desktop", + "dioxus-liveview", + "gloo-storage", + "pretty_assertions", + "tower-http", + "dioxus-sdk", + "http", + "rand" +] +fullstack = ["dioxus/fullstack"] web = ["dioxus/web"] -# web = ["dioxus-web", "dioxus/web", "dioxus/web", "dioxus-fullstack/web", "dioxus/fullstack"] -# dioxus-axum = [ -# "dioxus/axum", -# "dioxus-ssr", -# "dioxus/ssr", -# "tokio", -# "axum", -# "fs_extra", -# ] -# server = [ -# "dioxus/fullstack", -# "dioxus-fullstack/axum", -# "dioxus-axum", -# ] -# prebuild = [ -# "dioxus/static-generation", -# "dioxus-axum", -# ] +dioxus-axum = [ + "dioxus/axum", + "dioxus-ssr", + "dioxus/ssr", + "tokio", + "axum", + "fs_extra", +] +server = [ + "dioxus/server", + "dioxus-axum", +] +prebuild = [ + "dioxus/static-generation", + "dioxus-axum", +] diff --git a/src/doc_examples/i18n.rs b/src/doc_examples/i18n.rs index 262383822..1ab02a63a 100644 --- a/src/doc_examples/i18n.rs +++ b/src/doc_examples/i18n.rs @@ -1,6 +1,6 @@ use dioxus::prelude::*; -use dioxus_std::i18n::*; -use dioxus_std::translate; +use dioxus_sdk::i18n::*; +use dioxus_sdk::translate; use std::str::FromStr; fn main() { From 364308e3cfe1c7e2c73992f12293b1764e77bf7b Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Mon, 9 Sep 2024 11:05:11 -0500 Subject: [PATCH 31/35] clean up features --- .github/workflows/check.yml | 2 +- .github/workflows/gh-pages.yml | 2 +- Cargo.lock | 498 +++++++++++++++------------------ Cargo.toml | 12 +- 4 files changed, 229 insertions(+), 285 deletions(-) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 25790bced..ae6b47b14 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -29,7 +29,7 @@ concurrency: cancel-in-progress: true jobs: - build-deploy: + check: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml index 16f71fda8..fd847d7fc 100644 --- a/.github/workflows/gh-pages.yml +++ b/.github/workflows/gh-pages.yml @@ -27,7 +27,7 @@ jobs: - name: Install CLI run: cargo binstall dioxus-cli -y --force - name: Build - run: dx build --release --features web + run: dx serve --release --features fullstack - name: Build Static HTML run: cargo run --release --features prebuild - name: Rebuild with search index diff --git a/Cargo.lock b/Cargo.lock index 42204b217..9a856b8db 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "addr2line" -version = "0.22.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" +checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375" dependencies = [ "gimli", ] @@ -17,6 +17,12 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + [[package]] name = "ahash" version = "0.8.11" @@ -111,9 +117,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.86" +version = "1.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +checksum = "10f00e1f6e58a40e807377c75c6a7f97bf9044fab57816f2414e6f5f4499d7b8" [[package]] name = "anymap2" @@ -123,9 +129,9 @@ checksum = "d301b3b94cb4b2f23d7917810addbbaff90738e0ca2be692bd027e70d7e0330c" [[package]] name = "arrayvec" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "ashpd" @@ -232,7 +238,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -261,13 +267,13 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.81" +version = "0.1.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" +checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -333,7 +339,7 @@ checksum = "edf3ee19dbc0a46d740f6f0926bde8c50f02bdbc7b536842da28f6ac56513a8b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -405,22 +411,22 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] name = "backtrace" -version = "0.3.73" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", - "cc", "cfg-if", "libc", - "miniz_oxide", + "miniz_oxide 0.8.0", "object", "rustc-demangle", + "windows-targets 0.52.6", ] [[package]] @@ -489,9 +495,9 @@ dependencies = [ [[package]] name = "built" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6a6c0b39c38fd754ac338b00a88066436389c0f029da5d37d1e01091d9b7c17" +checksum = "236e6289eda5a812bc6b53c3b024039382a2895fbbeef2d748b2931546d392c4" dependencies = [ "git2", ] @@ -544,9 +550,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.13" +version = "1.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72db2f7947ecee9b03b510377e8bb9077afa27176fdbff55c51027e976fdcc48" +checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476" dependencies = [ "jobserver", "libc", @@ -630,9 +636,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.16" +version = "4.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed6719fffa43d0d87e5fd8caeab59be1554fb028cd30edc88fc4369b17971019" +checksum = "3e5a21b8495e732f1b3c364c9949b201ca7bae518c502c80256c96ad79eaf6ac" dependencies = [ "clap_builder", "clap_derive", @@ -640,9 +646,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.15" +version = "4.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216aec2b177652e3846684cbfe25c9964d18ec45234f0f5da5157b207ed1aab6" +checksum = "8cf2dd12af7a047ad9d6da2b6b249759a22a7abc0f474c1dae1777afa4b21a73" dependencies = [ "anstream", "anstyle", @@ -659,7 +665,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -763,18 +769,18 @@ dependencies = [ [[package]] name = "const_format" -version = "0.2.32" +version = "0.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3a214c7af3d04997541b18d432afaff4c455e79e2029079647e72fc2bd27673" +checksum = "50c655d81ff1114fb0dcdea9225ea9f0cc712a6f8d189378e82bdf62a473a64b" dependencies = [ "const_format_proc_macros", ] [[package]] name = "const_format_proc_macros" -version = "0.2.32" +version = "0.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7f6ff08fd20f4f299298a28e2dfa8a8ba1036e6cd2460ac1de7b425d76f2500" +checksum = "eff1a44b93f47b1bac19a27932f5c591e43d1ba357ee4f61526c8a25603f0eb1" dependencies = [ "proc-macro2", "quote", @@ -838,9 +844,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51e852e6dc9a5bed1fae92dd2375037bf2b768725bf3be87811edee3249d09ad" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ "libc", ] @@ -856,9 +862,9 @@ dependencies = [ [[package]] name = "critical-section" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7059fff8937831a9ae6f0fe4d658ffabf58f2ca96aa9dec1c889f936f705f216" +checksum = "f64009896348fc5af4222e9cf7d7d82a95a256c634ebcf61c53e4ea461422242" [[package]] name = "crossbeam-channel" @@ -928,7 +934,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -951,7 +957,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -962,7 +968,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -1025,7 +1031,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -1047,7 +1053,7 @@ dependencies = [ [[package]] name = "dioxus" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" +source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" dependencies = [ "axum", "dioxus-config-macro", @@ -1070,20 +1076,20 @@ dependencies = [ [[package]] name = "dioxus-autofmt" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" +source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" dependencies = [ "dioxus-rsx", "prettyplease", "proc-macro2", "quote", "serde", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] name = "dioxus-cli-config" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" +source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" dependencies = [ "built", "clap", @@ -1096,7 +1102,7 @@ dependencies = [ [[package]] name = "dioxus-config-macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" +source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" dependencies = [ "proc-macro2", "quote", @@ -1105,7 +1111,7 @@ dependencies = [ [[package]] name = "dioxus-core" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" +source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" dependencies = [ "const_format", "futures-channel", @@ -1125,20 +1131,20 @@ dependencies = [ [[package]] name = "dioxus-core-macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" +source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" dependencies = [ "convert_case 0.6.0", "dioxus-rsx", "prettyplease", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] name = "dioxus-desktop" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" +source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" dependencies = [ "async-trait", "cocoa", @@ -1177,7 +1183,7 @@ dependencies = [ [[package]] name = "dioxus-fullstack" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" +source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" dependencies = [ "async-trait", "axum", @@ -1217,7 +1223,7 @@ dependencies = [ [[package]] name = "dioxus-hooks" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" +source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" dependencies = [ "dioxus-core", "dioxus-signals", @@ -1233,7 +1239,7 @@ dependencies = [ [[package]] name = "dioxus-hot-reload" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" +source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" dependencies = [ "dioxus-cli-config", "dioxus-core", @@ -1253,7 +1259,7 @@ dependencies = [ [[package]] name = "dioxus-html" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" +source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" dependencies = [ "async-trait", "dioxus-core", @@ -1281,23 +1287,24 @@ dependencies = [ [[package]] name = "dioxus-html-internal-macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" +source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" dependencies = [ "convert_case 0.6.0", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] name = "dioxus-interpreter-js" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" +source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" dependencies = [ "dioxus-core", "dioxus-html", "js-sys", "lazy-js-bundle", + "rustc-hash", "serde", "sledgehammer_bindgen", "sledgehammer_utils", @@ -1309,7 +1316,7 @@ dependencies = [ [[package]] name = "dioxus-lib" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" +source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" dependencies = [ "dioxus-config-macro", "dioxus-core", @@ -1323,7 +1330,7 @@ dependencies = [ [[package]] name = "dioxus-liveview" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" +source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" dependencies = [ "axum", "dioxus-cli-config", @@ -1382,7 +1389,7 @@ dependencies = [ [[package]] name = "dioxus-router" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" +source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" dependencies = [ "dioxus-cli-config", "dioxus-fullstack", @@ -1402,18 +1409,18 @@ dependencies = [ [[package]] name = "dioxus-router-macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" +source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" dependencies = [ "proc-macro2", "quote", "slab", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] name = "dioxus-rsx" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" +source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" dependencies = [ "dioxus-core", "internment", @@ -1421,14 +1428,14 @@ dependencies = [ "proc-macro2-diagnostics", "quote", "serde", - "syn 2.0.74", + "syn 2.0.77", "tracing", ] [[package]] name = "dioxus-sdk" version = "0.6.0" -source = "git+https://github.com/dioxuslabs/sdk?branch=feat/dioxus-0.6#bcd2324d4c5966a9b0cb818b14fc38e74037b64f" +source = "git+https://github.com/dioxuslabs/sdk?branch=feat/dioxus-0.6#d1bbc35ed1cd589f353e99b6dd0dfff56b75f246" dependencies = [ "cfg-if", "dioxus", @@ -1465,7 +1472,7 @@ version = "0.1.0" source = "git+https://github.com/dioxuslabs/dioxus-search#5b2a301b2e84106c9a1b80119277ec38b117ecfe" dependencies = [ "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -1489,7 +1496,7 @@ dependencies = [ [[package]] name = "dioxus-signals" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" +source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" dependencies = [ "dioxus-core", "futures-channel", @@ -1505,7 +1512,7 @@ dependencies = [ [[package]] name = "dioxus-ssr" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" +source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" dependencies = [ "askama_escape", "async-trait", @@ -1527,7 +1534,7 @@ dependencies = [ [[package]] name = "dioxus-static-site-generation" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" +source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" dependencies = [ "axum", "dioxus-cli-config", @@ -1547,7 +1554,7 @@ dependencies = [ [[package]] name = "dioxus-web" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" +source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" dependencies = [ "ciborium", "console_error_panic_hook", @@ -1627,13 +1634,13 @@ dependencies = [ [[package]] name = "dioxus_server_macro" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" +source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" dependencies = [ "convert_case 0.6.0", "proc-macro2", "quote", "server_fn_macro", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -1650,7 +1657,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -1673,7 +1680,7 @@ checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -1705,9 +1712,9 @@ checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "ego-tree" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a68a4904193147e0a8dec3314640e6db742afd5f6e634f428a6af230d9b3591" +checksum = "12a0bb14ac04a9fcf170d0bbbef949b44cc492f4452bd20c095636956f653642" [[package]] name = "embedded-io" @@ -1715,6 +1722,12 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" +[[package]] +name = "embedded-io" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" + [[package]] name = "encode_unicode" version = "0.3.6" @@ -1754,7 +1767,7 @@ checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -1775,7 +1788,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -1796,9 +1809,9 @@ dependencies = [ [[package]] name = "euclid" -version = "0.22.10" +version = "0.22.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0f0eb73b934648cd7a4a61f1b15391cd95dab0b4da6e2e66c2a072c144b4a20" +checksum = "ad9cdb4b747e485a12abb0e6566612956c7a1bafa3bdb8d682c5b6d403589e48" dependencies = [ "num-traits", "serde", @@ -1827,9 +1840,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "fdeflate" @@ -1852,12 +1865,12 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.31" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f211bbe8e69bbd0cfdea405084f128ae8b4aaa6b0b522fc8f2b009084797920" +checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" dependencies = [ "crc32fast", - "miniz_oxide", + "miniz_oxide 0.8.0", ] [[package]] @@ -1893,7 +1906,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -2011,7 +2024,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -2155,7 +2168,7 @@ dependencies = [ [[package]] name = "generational-box" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" +source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" dependencies = [ "parking_lot", ] @@ -2205,9 +2218,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.29.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" +checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" [[package]] name = "gio" @@ -2243,9 +2256,9 @@ dependencies = [ [[package]] name = "git2" -version = "0.18.3" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "232e6a7bfe35766bf715e55a88b39a700596c0ccfd88cd3680b4cdb40d66ef70" +checksum = "b903b73e45dc0c6c596f2d37eccece7c1c8bb6e4407b001096387c63d0d93724" dependencies = [ "bitflags 2.6.0", "libc", @@ -2288,7 +2301,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -2601,7 +2614,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -2616,26 +2629,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.4.0", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "h2" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" -dependencies = [ - "atomic-waker", - "bytes", - "fnv", - "futures-core", - "futures-sink", - "http 1.1.0", - "indexmap 2.4.0", + "indexmap 2.5.0", "slab", "tokio", "tokio-util", @@ -2842,7 +2836,7 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "h2 0.3.26", + "h2", "http 0.2.12", "http-body 0.4.6", "httparse", @@ -2865,7 +2859,6 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.6", "http 1.1.0", "http-body 1.0.1", "httparse", @@ -2877,23 +2870,6 @@ dependencies = [ "want", ] -[[package]] -name = "hyper-rustls" -version = "0.27.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" -dependencies = [ - "futures-util", - "http 1.1.0", - "hyper 1.4.1", - "hyper-util", - "rustls", - "rustls-pki-types", - "tokio", - "tokio-rustls", - "tower-service", -] - [[package]] name = "hyper-tls" version = "0.5.0" @@ -2925,9 +2901,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde7055719c54e36e95e8719f95883f22072a48ede39db7fc17a4e1d5281e9b9" +checksum = "da62f120a8a37763efb0cf8fdf264b884c7b8b9ac8660b900c8661030c00e6ba" dependencies = [ "bytes", "futures-channel", @@ -3013,9 +2989,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93ead53efc7ea8ed3cfb0c79fc8023fbb782a5432b52830b6518941cebe6505c" +checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" dependencies = [ "equivalent", "hashbrown 0.14.5", @@ -3069,9 +3045,9 @@ checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" [[package]] name = "ipnet" -version = "2.9.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4" [[package]] name = "is_terminal_polyfill" @@ -3193,7 +3169,7 @@ dependencies = [ [[package]] name = "lazy-js-bundle" version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#3c699aad2625d88ba15b7e012373499844da0b15" +source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" [[package]] name = "lazy_static" @@ -3203,15 +3179,15 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.156" +version = "0.2.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5f43f184355eefb8d17fc948dbecf6c13be3c141f20d834ae842193a448c72a" +checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" [[package]] name = "libgit2-sys" -version = "0.16.2+1.7.2" +version = "0.17.0+1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee4126d8b4ee5c9d9ea891dd875cfdc1e9d0950437179104b183d7d8a74d24e8" +checksum = "10472326a8a6477c3c20a64547b0059e4b0d086869eee31e6d7da728a8eb7224" dependencies = [ "cc", "libc", @@ -3240,9 +3216,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.19" +version = "1.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdc53a7799a7496ebc9fd29f31f7df80e83c9bda5299768af5f9e59eeea74647" +checksum = "d2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472" dependencies = [ "cc", "libc", @@ -3332,25 +3308,24 @@ dependencies = [ [[package]] name = "manganis" -version = "0.3.0-alpha.1" +version = "0.3.0-alpha.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10870c8dbbfa53eaad99e7cc0689de6f2033d8769e02df28cb681b437e159473" +checksum = "6250942459fe37aecefbf52d5ef5904534d4c3e6383b26835fa3bde98ab5e491" dependencies = [ "manganis-macro", ] [[package]] name = "manganis-common" -version = "0.3.0-alpha.1" +version = "0.3.0-alpha.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9be0dd0eaf5ce21947bcc38131d7934a1f573b76e6e44fe9e401cb27dcb33cf" +checksum = "90f9048495439cee460d6092341dc54088895f985ca41379169502d8f46af08e" dependencies = [ "anyhow", "base64 0.21.7", "built", "home", "infer", - "reqwest 0.12.7", "serde", "toml 0.7.8", "tracing", @@ -3359,15 +3334,15 @@ dependencies = [ [[package]] name = "manganis-macro" -version = "0.3.0-alpha.1" +version = "0.3.0-alpha.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ca00f3c266ba409900d32707f4bc66a60fbb707cf9d4d8d44d8e265c431c149" +checksum = "bc48d9ad7dccb08194ec0613ad22ad28f4d28dd8565397a1d3fb4a6986bbebef" dependencies = [ "manganis-common", "proc-macro2", "quote", "serde_json", - "syn 2.0.74", + "syn 2.0.77", "tracing-subscriber", ] @@ -3414,7 +3389,7 @@ checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" [[package]] name = "mdbook-gen" version = "0.0.0" -source = "git+https://github.com/dioxuslabs/include_mdbook?branch=jk/build-gen#d9480f140f407771f998e818a8e3f466c483659c" +source = "git+https://github.com/dioxuslabs/include_mdbook?branch=jk/build-gen#c61f0575b2a02a6875c4d49cf9e7b543b4c6cfcb" dependencies = [ "anyhow", "convert_case 0.6.0", @@ -3429,14 +3404,14 @@ dependencies = [ "quote", "serde", "serde_json", - "syn 2.0.74", + "syn 2.0.77", "syntect", ] [[package]] name = "mdbook-macro" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/include_mdbook?branch=jk/build-gen#d9480f140f407771f998e818a8e3f466c483659c" +source = "git+https://github.com/dioxuslabs/include_mdbook?branch=jk/build-gen#c61f0575b2a02a6875c4d49cf9e7b543b4c6cfcb" dependencies = [ "anyhow", "convert_case 0.6.0", @@ -3450,14 +3425,14 @@ dependencies = [ "quote", "serde", "serde_json", - "syn 2.0.74", + "syn 2.0.77", "syntect", ] [[package]] name = "mdbook-shared" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/include_mdbook?branch=jk/build-gen#d9480f140f407771f998e818a8e3f466c483659c" +source = "git+https://github.com/dioxuslabs/include_mdbook?branch=jk/build-gen#c61f0575b2a02a6875c4d49cf9e7b543b4c6cfcb" dependencies = [ "anyhow", "bytes", @@ -3512,6 +3487,15 @@ dependencies = [ "simd-adler32", ] +[[package]] +name = "miniz_oxide" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +dependencies = [ + "adler2", +] + [[package]] name = "mio" version = "1.0.2" @@ -3752,9 +3736,9 @@ dependencies = [ [[package]] name = "object" -version = "0.36.3" +version = "0.36.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27b64972346851a39438c60b341ebc01bba47464ae329e55cf343eb93964efd9" +checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" dependencies = [ "memchr", ] @@ -3810,7 +3794,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -3874,9 +3858,9 @@ dependencies = [ [[package]] name = "parking" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" @@ -4017,7 +4001,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -4064,7 +4048,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -4103,7 +4087,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42cf17e9a1800f5f396bc67d193dc9411b59012a5876445ef450d449881e1016" dependencies = [ "base64 0.22.1", - "indexmap 2.4.0", + "indexmap 2.5.0", "quick-xml", "serde", "time", @@ -4119,7 +4103,7 @@ dependencies = [ "crc32fast", "fdeflate", "flate2", - "miniz_oxide", + "miniz_oxide 0.7.4", ] [[package]] @@ -4145,12 +4129,13 @@ checksum = "22686f4785f02a4fcc856d3b3bb19bf6c8160d103f7a99cc258bddd0251dc7f2" [[package]] name = "postcard" -version = "1.0.8" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a55c51ee6c0db07e68448e336cf8ea4131a620edefebf9893e759b2d793420f8" +checksum = "5f7f0a8d620d71c457dd1d47df76bb18960378da56af4527aaa10f515eee732e" dependencies = [ "cobs", - "embedded-io", + "embedded-io 0.4.0", + "embedded-io 0.6.1", "heapless", "serde", ] @@ -4188,12 +4173,12 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.20" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" +checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" dependencies = [ "proc-macro2", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -4263,7 +4248,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", "version_check", ] @@ -4290,9 +4275,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -4439,7 +4424,7 @@ dependencies = [ "encoding_rs", "futures-core", "futures-util", - "h2 0.3.26", + "h2", "http 0.2.12", "http-body 0.4.6", "hyper 0.14.30", @@ -4457,7 +4442,7 @@ dependencies = [ "serde_json", "serde_urlencoded", "sync_wrapper 0.1.2", - "system-configuration 0.5.1", + "system-configuration", "tokio", "tokio-native-tls", "tower-service", @@ -4476,16 +4461,12 @@ checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63" dependencies = [ "base64 0.22.1", "bytes", - "encoding_rs", - "futures-channel", "futures-core", "futures-util", - "h2 0.4.6", "http 1.1.0", "http-body 1.0.1", "http-body-util", "hyper 1.4.1", - "hyper-rustls", "hyper-tls 0.6.0", "hyper-util", "ipnet", @@ -4502,7 +4483,6 @@ dependencies = [ "serde_json", "serde_urlencoded", "sync_wrapper 1.0.1", - "system-configuration 0.6.0", "tokio", "tokio-native-tls", "tokio-util", @@ -4599,18 +4579,18 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc_version" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ "semver", ] [[package]] name = "rustix" -version = "0.38.34" +version = "0.38.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +checksum = "3f55e80d50763938498dd5ebb18647174e0c76dc38c5505294bb224624f30f36" dependencies = [ "bitflags 2.6.0", "errno", @@ -4659,9 +4639,9 @@ checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" [[package]] name = "rustls-webpki" -version = "0.102.6" +version = "0.102.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" dependencies = [ "ring", "rustls-pki-types", @@ -4691,11 +4671,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -4800,9 +4780,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.208" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff085d2cb684faa248efb494c39b68e522822ac0de72ccf08109abde717cfb2" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" dependencies = [ "serde_derive", ] @@ -4820,20 +4800,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.208" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24008e81ff7613ed8e5ba0cfaf24e2c2f1e5b8a0495711e44fcd4882fca62bcf" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] name = "serde_json" -version = "1.0.125" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83c8e735a073ccf5be70aa8066aa984eaf2fa000db6c8d0100ae605b366d31ed" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" dependencies = [ "itoa 1.0.11", "memchr", @@ -4870,7 +4850,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -4896,9 +4876,9 @@ dependencies = [ [[package]] name = "server_fn" -version = "0.6.14" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "024b400db1aca5bd4188714f7bbbf7a2e1962b9a12a80b2a21e937e509086963" +checksum = "4fae7a3038a32e5a34ba32c6c45eb4852f8affaf8b794ebfcd4b1099e2d62ebe" dependencies = [ "axum", "bytes", @@ -4931,26 +4911,26 @@ dependencies = [ [[package]] name = "server_fn_macro" -version = "0.6.14" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf0e6f71fc924df36e87f27dfbd447f0bedd092d365db3a5396878256d9f00c" +checksum = "faaaf648c6967aef78177c0610478abb5a3455811f401f3c62d10ae9bd3901a1" dependencies = [ "const_format", "convert_case 0.6.0", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", "xxhash-rust", ] [[package]] name = "server_fn_macro_default" -version = "0.6.14" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "556e4fd51eb9ee3e7d9fb0febec6cef486dcbc8f7f427591dfcfebee1abe1ad4" +checksum = "7f2aa8119b558a17992e0ac1fd07f080099564f24532858811ce04f742542440" dependencies = [ "server_fn_macro", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -5063,9 +5043,9 @@ dependencies = [ [[package]] name = "sledgehammer_bindgen" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcfaf791ff02f48f3518ce825d32cf419c13a43c1d8b1232f74ac89f339c46d2" +checksum = "49e83e178d176459c92bc129cfd0958afac3ced925471b889b3a75546cfc4133" dependencies = [ "sledgehammer_bindgen_macro", "wasm-bindgen", @@ -5073,22 +5053,20 @@ dependencies = [ [[package]] name = "sledgehammer_bindgen_macro" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edc90d3e8623d29a664cd8dba5078b600dd203444f00b9739f744e4c6e7aeaf2" +checksum = "33a1b4f13e2bbf2f5b29d09dfebc9de69229ffee245aed80e3b70f9b5fd28c06" dependencies = [ "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] name = "sledgehammer_utils" -version = "0.2.1" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f20798defa0e9d4eff9ca451c7f84774c7378a9c3b5a40112cfa2b3eadb97ae2" +checksum = "debdd4b83524961983cea3c55383b3910fd2f24fd13a188f5b091d2d504a61ae" dependencies = [ - "lru", - "once_cell", "rustc-hash", ] @@ -5258,9 +5236,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.74" +version = "2.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fceb41e3d546d0bd83421d3409b1460cc7444cd389341a4c880fe7a042cb3d7" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" dependencies = [ "proc-macro2", "quote", @@ -5307,7 +5285,7 @@ dependencies = [ [[package]] name = "syntect-html" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/include_mdbook?branch=jk/build-gen#d9480f140f407771f998e818a8e3f466c483659c" +source = "git+https://github.com/dioxuslabs/include_mdbook?branch=jk/build-gen#c61f0575b2a02a6875c4d49cf9e7b543b4c6cfcb" dependencies = [ "proc-macro2", "quote", @@ -5323,18 +5301,7 @@ checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" dependencies = [ "bitflags 1.3.2", "core-foundation", - "system-configuration-sys 0.5.0", -] - -[[package]] -name = "system-configuration" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658bc6ee10a9b4fcf576e9b0819d95ec16f4d2c02d39fd83ac1c8789785c4a42" -dependencies = [ - "bitflags 2.6.0", - "core-foundation", - "system-configuration-sys 0.6.0", + "system-configuration-sys", ] [[package]] @@ -5347,16 +5314,6 @@ dependencies = [ "libc", ] -[[package]] -name = "system-configuration-sys" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" -dependencies = [ - "core-foundation-sys", - "libc", -] - [[package]] name = "system-deps" version = "6.2.2" @@ -5410,13 +5367,13 @@ dependencies = [ [[package]] name = "tao-macros" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec114582505d158b669b136e6851f85840c109819d77c42bb7c0709f727d18c2" +checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.77", ] [[package]] @@ -5472,7 +5429,7 @@ checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -5544,9 +5501,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.39.2" +version = "1.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1" +checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" dependencies = [ "backtrace", "bytes", @@ -5569,7 +5526,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -5582,22 +5539,11 @@ dependencies = [ "tokio", ] -[[package]] -name = "tokio-rustls" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" -dependencies = [ - "rustls", - "rustls-pki-types", - "tokio", -] - [[package]] name = "tokio-stream" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" dependencies = [ "futures-core", "pin-project-lite", @@ -5634,9 +5580,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.11" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" dependencies = [ "bytes", "futures-core", @@ -5695,7 +5641,7 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.4.0", + "indexmap 2.5.0", "serde", "serde_spanned", "toml_datetime", @@ -5708,7 +5654,7 @@ version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" dependencies = [ - "indexmap 2.4.0", + "indexmap 2.5.0", "serde", "serde_spanned", "toml_datetime", @@ -5788,7 +5734,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -5971,9 +5917,9 @@ checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" [[package]] name = "unicode-xid" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a" [[package]] name = "untrusted" @@ -6002,7 +5948,7 @@ checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" [[package]] name = "use-mdbook" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/include_mdbook?branch=jk/build-gen#d9480f140f407771f998e818a8e3f466c483659c" +source = "git+https://github.com/dioxuslabs/include_mdbook?branch=jk/build-gen#c61f0575b2a02a6875c4d49cf9e7b543b4c6cfcb" dependencies = [ "lazy_static", "mdbook-macro", @@ -6098,7 +6044,7 @@ checksum = "59195a1db0e95b920366d949ba5e0d3fc0e70b67c09be15ce5abb790106b0571" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -6135,7 +6081,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", "wasm-bindgen-shared", ] @@ -6169,7 +6115,7 @@ checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -6297,7 +6243,7 @@ checksum = "ac1345798ecd8122468840bcdf1b95e5dc6d2206c5e4b0eafa078d061f59c9bc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -6403,7 +6349,7 @@ checksum = "942ac266be9249c84ca862f0a164a39533dc2f6f33dc98ec89c8da99b82ea0bd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -6414,7 +6360,7 @@ checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -6425,7 +6371,7 @@ checksum = "da33557140a288fae4e1d5f8873aaf9eb6613a9cf82c3e070223ff177f598b60" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -6436,7 +6382,7 @@ checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -6897,7 +6843,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 596fb48aa..21057df9b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -153,9 +153,8 @@ codegen-units = 1 default = [] doc_test = [ "tokio", - "server", - "dioxus-web", - "dioxus/web", + "prebuild", + "web", "dioxus-desktop", "dioxus-liveview", "gloo-storage", @@ -176,10 +175,9 @@ dioxus-axum = [ "fs_extra", ] server = [ - "dioxus/server", - "dioxus-axum", + "dioxus/static-generation", + "dioxus-axum" ] prebuild = [ - "dioxus/static-generation", - "dioxus-axum", + "server", ] From 05b9c48d91e738099d7bf3fb2996257886fc1323 Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Mon, 9 Sep 2024 11:09:59 -0500 Subject: [PATCH 32/35] Fix CodeBlock --- src/main.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/main.rs b/src/main.rs index cb06576d8..7f8114b6b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -131,6 +131,23 @@ mod docs { use crate::doc_examples::*; use dioxus::prelude::*; + #[component] + fn CodeBlock(contents: String) -> Element { + rsx! { + div { + style: "position: relative;", + div { + dangerous_inner_html: contents + } + button { + style: "position: absolute; top: 0; right: 0; background: rgba(0, 0, 0, 0.75); color: white; border: 1px solid white; padding: 0.25em;", + "onclick": "navigator.clipboard.writeText(this.previousElementSibling.innerText)", + "Copy" + } + } + } + } + #[component] fn SandBoxFrame(url: String) -> Element { rsx! { From c0b5ae033738632967842950c576bc32b503c4b2 Mon Sep 17 00:00:00 2001 From: Jonathan Kelley Date: Wed, 23 Oct 2024 15:14:32 -0700 Subject: [PATCH 33/35] general improvements all across site --- .cargo/config.toml | 27 +- Cargo.lock | 1376 ++++----- Cargo.toml | 88 +- Dioxus.toml | 4 +- {public => assets}/CNAME | 0 {public => assets}/ace/ace.js | 0 {public => assets}/ace/mode-rust.js | 0 {public => assets}/ace/theme-github.js | 0 {public => assets}/ace/theme-github_dark.js | 0 {public => assets}/dxp.css | 0 {public => assets}/githubmarkdown.css | 0 assets/main.css | 189 ++ assets/material.css | 23 + {public => assets}/static/04meme.png | Bin .../static/Android-Dioxus-demo.png | Bin {public => assets}/static/ESA_logo.svg | 0 {public => assets}/static/IOS-dioxus-demo.png | Bin {public => assets}/static/Untitled.png | Bin {public => assets}/static/airbuslogo.svg | 0 .../static/android-studio-device.png | Bin .../static/android-studio-devices.png | Bin .../static/android-studio-simulator.png | Bin {public => assets}/static/android_demo.png | Bin .../static/android_ndk_install.png | Bin .../static/android_ndk_installation.png | Bin .../static/as-build-dropdown.png | Bin .../static/as-build-variant-menu.png | Bin {public => assets}/static/bumpframe.png | Bin {public => assets}/static/bundle.png | Bin {public => assets}/static/bundle_app.png | Bin {public => assets}/static/counter.png | Bin {public => assets}/static/darktheme.js | 0 {public => assets}/static/dioxus-new.mov | Bin .../static/docsite_cropped.avif | Bin {public => assets}/static/docsite_cropped.png | Bin {public => assets}/static/dxcheck.png | Bin {public => assets}/static/enum_router.png | Bin {public => assets}/static/extension.png | Bin {public => assets}/static/favicon.png | Bin {public => assets}/static/ferrous_wave.png | Bin {public => assets}/static/file_explorer.avif | Bin {public => assets}/static/file_explorer.png | Bin {public => assets}/static/futurewei_bw.png | Bin .../static/ide_autocomplete.png | Bin {public => assets}/static/ide_hover.png | Bin {public => assets}/static/ide_listener.png | Bin {public => assets}/static/ide_rsx.png | Bin {public => assets}/static/ide_selection.png | Bin {public => assets}/static/ios_demo.png | Bin .../static/jsbenchmark_cropped.avif | Bin .../static/jsbenchmark_cropped.png | Bin {public => assets}/static/landing_1.png | Bin {public => assets}/static/landing_2.png | Bin {public => assets}/static/landing_3.png | Bin {public => assets}/static/landing_4.png | Bin {public => assets}/static/landing_5.png | Bin .../static/marketplace_cropped.avif | Bin .../static/marketplace_cropped.png | Bin .../static/meme_editor_screenshot.png | Bin .../static/multiplatform-dark.svg | 0 .../static/multiplatform-light.svg | 0 {public => assets}/static/new_fetch.png | Bin {public => assets}/static/old_fetch.png | Bin {public => assets}/static/opengraph.png | Bin {public => assets}/static/prism/prism.css | 0 {public => assets}/static/prism/prism.js | 0 {public => assets}/static/publish.png | Bin .../static/rustacean-flat-gesture.avif | Bin {public => assets}/static/satellite.webp | Bin {public => assets}/static/scanner.avif | Bin {public => assets}/static/scanner.png | Bin assets/static/smalllogo.png | Bin 0 -> 6989 bytes {public => assets}/static/split_codegen.png | Bin .../static/tailwind_desktop_app.png | Bin {public => assets}/static/todos_cropped.avif | Bin {public => assets}/static/todos_cropped.png | Bin assets/static/x_logo.png | Bin 0 -> 2569 bytes assets/static/x_logo.svg | 4 + assets/static/xailogo.svg | 7 + {public => assets}/static/yclogo.svg | 0 {public => assets}/tailwind.config.js | 0 assets/tailwind.css | 1333 ++++++--- build.rs | 6 +- docs-src/0.5/src/CLI/translate.md | 12 +- docs-src/0.5/src/SUMMARY.md | 15 +- docs-src/0.5/src/contributing/roadmap.md | 138 - docs-src/0.5/src/getting_started/features.md | 7 +- docs-src/0.5/src/getting_started/index.md | 94 - docs-src/0.5/src/guide/new_app.md | 54 + docs-src/0.5/src/guide/tooling.md | 40 + .../0.5/src/guide/your_first_component.md | 10 +- docs-src/0.5/src/introduction/resources.md | 1 + docs-src/0.5/src/introduction/roadmap.md | 138 + public/main.css | 172 -- public/tailwind.css | 2493 ----------------- src/components/homepage.rs | 18 +- src/components/homepage/hero.rs | 90 +- src/components/learn.rs | 417 ++- src/components/nav.rs | 285 +- src/doc_examples/breaking_out.rs | 30 +- src/doc_examples/component_lifecycle.rs | 40 +- src/icons.rs | 121 + src/main.rs | 78 +- src/shortcut.rs | 12 +- tailwind.config.js | 16 +- tailwind.css | 8 - 106 files changed, 2691 insertions(+), 4655 deletions(-) rename {public => assets}/CNAME (100%) rename {public => assets}/ace/ace.js (100%) rename {public => assets}/ace/mode-rust.js (100%) rename {public => assets}/ace/theme-github.js (100%) rename {public => assets}/ace/theme-github_dark.js (100%) rename {public => assets}/dxp.css (100%) rename {public => assets}/githubmarkdown.css (100%) create mode 100644 assets/main.css create mode 100644 assets/material.css rename {public => assets}/static/04meme.png (100%) rename {public => assets}/static/Android-Dioxus-demo.png (100%) rename {public => assets}/static/ESA_logo.svg (100%) rename {public => assets}/static/IOS-dioxus-demo.png (100%) rename {public => assets}/static/Untitled.png (100%) rename {public => assets}/static/airbuslogo.svg (100%) rename {public => assets}/static/android-studio-device.png (100%) rename {public => assets}/static/android-studio-devices.png (100%) rename {public => assets}/static/android-studio-simulator.png (100%) rename {public => assets}/static/android_demo.png (100%) rename {public => assets}/static/android_ndk_install.png (100%) rename {public => assets}/static/android_ndk_installation.png (100%) rename {public => assets}/static/as-build-dropdown.png (100%) rename {public => assets}/static/as-build-variant-menu.png (100%) rename {public => assets}/static/bumpframe.png (100%) rename {public => assets}/static/bundle.png (100%) rename {public => assets}/static/bundle_app.png (100%) rename {public => assets}/static/counter.png (100%) rename {public => assets}/static/darktheme.js (100%) rename {public => assets}/static/dioxus-new.mov (100%) rename {public => assets}/static/docsite_cropped.avif (100%) rename {public => assets}/static/docsite_cropped.png (100%) rename {public => assets}/static/dxcheck.png (100%) rename {public => assets}/static/enum_router.png (100%) rename {public => assets}/static/extension.png (100%) rename {public => assets}/static/favicon.png (100%) rename {public => assets}/static/ferrous_wave.png (100%) rename {public => assets}/static/file_explorer.avif (100%) rename {public => assets}/static/file_explorer.png (100%) rename {public => assets}/static/futurewei_bw.png (100%) rename {public => assets}/static/ide_autocomplete.png (100%) rename {public => assets}/static/ide_hover.png (100%) rename {public => assets}/static/ide_listener.png (100%) rename {public => assets}/static/ide_rsx.png (100%) rename {public => assets}/static/ide_selection.png (100%) rename {public => assets}/static/ios_demo.png (100%) rename {public => assets}/static/jsbenchmark_cropped.avif (100%) rename {public => assets}/static/jsbenchmark_cropped.png (100%) rename {public => assets}/static/landing_1.png (100%) rename {public => assets}/static/landing_2.png (100%) rename {public => assets}/static/landing_3.png (100%) rename {public => assets}/static/landing_4.png (100%) rename {public => assets}/static/landing_5.png (100%) rename {public => assets}/static/marketplace_cropped.avif (100%) rename {public => assets}/static/marketplace_cropped.png (100%) rename {public => assets}/static/meme_editor_screenshot.png (100%) rename {public => assets}/static/multiplatform-dark.svg (100%) rename {public => assets}/static/multiplatform-light.svg (100%) rename {public => assets}/static/new_fetch.png (100%) rename {public => assets}/static/old_fetch.png (100%) rename {public => assets}/static/opengraph.png (100%) rename {public => assets}/static/prism/prism.css (100%) rename {public => assets}/static/prism/prism.js (100%) rename {public => assets}/static/publish.png (100%) rename {public => assets}/static/rustacean-flat-gesture.avif (100%) rename {public => assets}/static/satellite.webp (100%) rename {public => assets}/static/scanner.avif (100%) rename {public => assets}/static/scanner.png (100%) create mode 100644 assets/static/smalllogo.png rename {public => assets}/static/split_codegen.png (100%) rename {public => assets}/static/tailwind_desktop_app.png (100%) rename {public => assets}/static/todos_cropped.avif (100%) rename {public => assets}/static/todos_cropped.png (100%) create mode 100644 assets/static/x_logo.png create mode 100644 assets/static/x_logo.svg create mode 100644 assets/static/xailogo.svg rename {public => assets}/static/yclogo.svg (100%) rename {public => assets}/tailwind.config.js (100%) delete mode 100644 docs-src/0.5/src/getting_started/index.md create mode 100644 docs-src/0.5/src/introduction/resources.md create mode 100644 docs-src/0.5/src/introduction/roadmap.md delete mode 100644 public/main.css delete mode 100644 public/tailwind.css diff --git a/.cargo/config.toml b/.cargo/config.toml index 02547d5d5..1d6a08a8c 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -2,22 +2,27 @@ # build-std = ["std", "panic_abort", "core", "alloc"] # build-std-features = ["panic_immediate_abort"] -[env] -MANGANIS_SUPPORT = "true" +# [env] +# MANGANIS_SUPPORT = "true" -[profile.dev] -# rustflags = ["-Cdebuginfo=none", "-Cstrip=debuginfo"] -# opt-level = "z" -opt-level = "z" # Optimization level. -debug = false # Include debug info. -strip = "debuginfo" # Removes symbols or debuginfo. +# [profile.dev] +# # rustflags = ["-Cdebuginfo=none", "-Cstrip=debuginfo"] +# # opt-level = "z" +# opt-level = "z" # Optimization level. +# debug = false # Include debug info. +# strip = "debuginfo" # Removes symbols or debuginfo. +# # split-debuginfo = '...' # Debug info splitting behavior. -[profile.dioxus-client] +[profile.dioxus-wasm] inherits = "dev" -opt-level = 2 +# opt-level = "z" +# debug = false +# strip = "debuginfo" [profile.dioxus-server] inherits = "dev" opt-level = 2 -# split-debuginfo = '...' # Debug info splitting behavior. +[profile.dioxus-android] +inherits = "dev" +opt-level = 2 diff --git a/Cargo.lock b/Cargo.lock index 9a856b8db..2f4ed509f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,19 +4,13 @@ version = 3 [[package]] name = "addr2line" -version = "0.24.1" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "gimli", ] -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - [[package]] name = "adler2" version = "2.0.0" @@ -66,60 +60,11 @@ dependencies = [ "libc", ] -[[package]] -name = "anstream" -version = "0.6.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" -dependencies = [ - "anstyle", - "anstyle-parse", - "anstyle-query", - "anstyle-wincon", - "colorchoice", - "is_terminal_polyfill", - "utf8parse", -] - -[[package]] -name = "anstyle" -version = "1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" - -[[package]] -name = "anstyle-parse" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" -dependencies = [ - "utf8parse", -] - -[[package]] -name = "anstyle-query" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" -dependencies = [ - "windows-sys 0.52.0", -] - -[[package]] -name = "anstyle-wincon" -version = "3.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" -dependencies = [ - "anstyle", - "windows-sys 0.52.0", -] - [[package]] name = "anyhow" -version = "1.0.87" +version = "1.0.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10f00e1f6e58a40e807377c75c6a7f97bf9044fab57816f2414e6f5f4499d7b8" +checksum = "c042108f3ed77fd83760a5fd79b53be043192bb3b9dba91d8c574c0ada7850c8" [[package]] name = "anymap2" @@ -212,9 +157,9 @@ dependencies = [ [[package]] name = "async-process" -version = "2.2.4" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8a07789659a4d385b79b18b9127fc27e1a59e1e89117c78c5ea3b806f016374" +checksum = "63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb" dependencies = [ "async-channel", "async-io", @@ -227,7 +172,6 @@ dependencies = [ "futures-lite", "rustix", "tracing", - "windows-sys 0.59.0", ] [[package]] @@ -238,7 +182,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] @@ -267,13 +211,13 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.82" +version = "0.1.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] @@ -316,9 +260,9 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "autoexport" @@ -339,25 +283,25 @@ checksum = "edf3ee19dbc0a46d740f6f0926bde8c50f02bdbc7b536842da28f6ac56513a8b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] name = "axum" -version = "0.7.5" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf" +checksum = "504e3947307ac8326a5437504c517c4b56716c9d98fac0028c2acc7ca47d70ae" dependencies = [ "async-trait", "axum-core", "axum-macros", - "base64 0.21.7", + "base64 0.22.1", "bytes", "futures-util", "http 1.1.0", "http-body 1.0.1", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.0", "hyper-util", "itoa 1.0.11", "matchit", @@ -374,8 +318,8 @@ dependencies = [ "sha1", "sync_wrapper 1.0.1", "tokio", - "tokio-tungstenite 0.21.0", - "tower", + "tokio-tungstenite", + "tower 0.5.1", "tower-layer", "tower-service", "tracing", @@ -383,9 +327,9 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3" +checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" dependencies = [ "async-trait", "bytes", @@ -396,7 +340,7 @@ dependencies = [ "mime", "pin-project-lite", "rustversion", - "sync_wrapper 0.1.2", + "sync_wrapper 1.0.1", "tower-layer", "tower-service", "tracing", @@ -404,14 +348,13 @@ dependencies = [ [[package]] name = "axum-macros" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00c055ee2d014ae5981ce1016374e8213682aa14d9bf40e48ab48b5f3ef20eaa" +checksum = "57d123550fa8d071b7255cb0cc04dc302baa6c8c4a79f55701552684d8399bce" dependencies = [ - "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] @@ -423,7 +366,7 @@ dependencies = [ "addr2line", "cfg-if", "libc", - "miniz_oxide 0.8.0", + "miniz_oxide", "object", "rustc-demangle", "windows-targets 0.52.6", @@ -493,15 +436,6 @@ dependencies = [ "piper", ] -[[package]] -name = "built" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "236e6289eda5a812bc6b53c3b024039382a2895fbbeef2d748b2931546d392c4" -dependencies = [ - "git2", -] - [[package]] name = "bumpalo" version = "3.16.0" @@ -516,9 +450,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" +checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" dependencies = [ "serde", ] @@ -550,12 +484,10 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.18" +version = "1.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476" +checksum = "c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f" dependencies = [ - "jobserver", - "libc", "shlex", ] @@ -634,46 +566,6 @@ dependencies = [ "half", ] -[[package]] -name = "clap" -version = "4.5.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e5a21b8495e732f1b3c364c9949b201ca7bae518c502c80256c96ad79eaf6ac" -dependencies = [ - "clap_builder", - "clap_derive", -] - -[[package]] -name = "clap_builder" -version = "4.5.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cf2dd12af7a047ad9d6da2b6b249759a22a7abc0f474c1dae1777afa4b21a73" -dependencies = [ - "anstream", - "anstyle", - "clap_lex", - "strsim", -] - -[[package]] -name = "clap_derive" -version = "4.5.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" -dependencies = [ - "heck 0.5.0", - "proc-macro2", - "quote", - "syn 2.0.77", -] - -[[package]] -name = "clap_lex" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" - [[package]] name = "cobs" version = "0.2.3" @@ -688,9 +580,25 @@ checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c" dependencies = [ "bitflags 1.3.2", "block", - "cocoa-foundation", - "core-foundation", - "core-graphics", + "cocoa-foundation 0.1.2", + "core-foundation 0.9.4", + "core-graphics 0.23.2", + "foreign-types 0.5.0", + "libc", + "objc", +] + +[[package]] +name = "cocoa" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f79398230a6e2c08f5c9760610eb6924b52aa9e7950a619602baba59dcbbdbb2" +dependencies = [ + "bitflags 2.6.0", + "block", + "cocoa-foundation 0.2.0", + "core-foundation 0.10.0", + "core-graphics 0.24.0", "foreign-types 0.5.0", "libc", "objc", @@ -704,17 +612,25 @@ checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7" dependencies = [ "bitflags 1.3.2", "block", - "core-foundation", - "core-graphics-types", + "core-foundation 0.9.4", + "core-graphics-types 0.1.3", "libc", "objc", ] [[package]] -name = "colorchoice" -version = "1.0.2" +name = "cocoa-foundation" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" +checksum = "e14045fb83be07b5acf1c0884b2180461635b433455fa35d1cd6f17f1450679d" +dependencies = [ + "bitflags 2.6.0", + "block", + "core-foundation 0.10.0", + "core-graphics-types 0.2.0", + "libc", + "objc", +] [[package]] name = "colored" @@ -812,6 +728,16 @@ dependencies = [ "libc", ] +[[package]] +name = "core-foundation" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "core-foundation-sys" version = "0.8.7" @@ -825,8 +751,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" dependencies = [ "bitflags 1.3.2", - "core-foundation", - "core-graphics-types", + "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.6.0", + "core-foundation 0.10.0", + "core-graphics-types 0.2.0", "foreign-types 0.5.0", "libc", ] @@ -838,7 +777,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" dependencies = [ "bitflags 1.3.2", - "core-foundation", + "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.6.0", + "core-foundation 0.10.0", "libc", ] @@ -862,9 +812,9 @@ dependencies = [ [[package]] name = "critical-section" -version = "1.1.3" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f64009896348fc5af4222e9cf7d7d82a95a256c634ebcf61c53e4ea461422242" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" [[package]] name = "crossbeam-channel" @@ -934,7 +884,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] @@ -957,7 +907,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] @@ -968,7 +918,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] @@ -1031,7 +981,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] @@ -1052,16 +1002,17 @@ dependencies = [ [[package]] name = "dioxus" -version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" +version = "0.6.0-alpha.3" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#15a9f2d541b7e10e881b9d630df00996194a7061" dependencies = [ "axum", "dioxus-config-macro", "dioxus-core", "dioxus-core-macro", + "dioxus-devtools", + "dioxus-document", "dioxus-fullstack", "dioxus-hooks", - "dioxus-hot-reload", "dioxus-html", "dioxus-liveview", "dioxus-router", @@ -1075,34 +1026,26 @@ dependencies = [ [[package]] name = "dioxus-autofmt" -version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" +version = "0.6.0-alpha.3" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#15a9f2d541b7e10e881b9d630df00996194a7061" dependencies = [ "dioxus-rsx", "prettyplease", "proc-macro2", "quote", "serde", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] name = "dioxus-cli-config" -version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" -dependencies = [ - "built", - "clap", - "once_cell", - "serde", - "serde_json", - "tracing", -] +version = "0.6.0-alpha.3" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#15a9f2d541b7e10e881b9d630df00996194a7061" [[package]] name = "dioxus-config-macro" -version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" +version = "0.6.0-alpha.3" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#15a9f2d541b7e10e881b9d630df00996194a7061" dependencies = [ "proc-macro2", "quote", @@ -1110,15 +1053,15 @@ dependencies = [ [[package]] name = "dioxus-core" -version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" +version = "0.6.0-alpha.3" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#15a9f2d541b7e10e881b9d630df00996194a7061" dependencies = [ "const_format", + "dioxus-core-types", "futures-channel", "futures-util", "generational-box", "longest-increasing-subsequence", - "manganis", "rustc-hash", "rustversion", "serde", @@ -1130,29 +1073,34 @@ dependencies = [ [[package]] name = "dioxus-core-macro" -version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" +version = "0.6.0-alpha.3" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#15a9f2d541b7e10e881b9d630df00996194a7061" dependencies = [ "convert_case 0.6.0", "dioxus-rsx", - "prettyplease", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.84", ] +[[package]] +name = "dioxus-core-types" +version = "0.6.0-alpha.3" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#15a9f2d541b7e10e881b9d630df00996194a7061" + [[package]] name = "dioxus-desktop" -version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" +version = "0.6.0-alpha.3" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#15a9f2d541b7e10e881b9d630df00996194a7061" dependencies = [ "async-trait", - "cocoa", - "core-foundation", + "cocoa 0.25.0", + "core-foundation 0.9.4", "dioxus-cli-config", "dioxus-core", + "dioxus-devtools", + "dioxus-document", "dioxus-hooks", - "dioxus-hot-reload", "dioxus-html", "dioxus-interpreter-js", "dioxus-signals", @@ -1162,9 +1110,11 @@ dependencies = [ "generational-box", "global-hotkey", "infer", + "lazy-js-bundle", "muda", "objc", "objc_id", + "once_cell", "rfd", "rustc-hash", "serde", @@ -1180,20 +1130,62 @@ dependencies = [ "wry", ] +[[package]] +name = "dioxus-devtools" +version = "0.6.0-alpha.3" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#15a9f2d541b7e10e881b9d630df00996194a7061" +dependencies = [ + "dioxus-core", + "dioxus-devtools-types", + "dioxus-signals", + "serde", + "serde_json", + "tracing", + "tungstenite 0.23.0", + "warnings", +] + +[[package]] +name = "dioxus-devtools-types" +version = "0.6.0-alpha.3" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#15a9f2d541b7e10e881b9d630df00996194a7061" +dependencies = [ + "dioxus-core", + "serde", +] + +[[package]] +name = "dioxus-document" +version = "0.6.0-alpha.3" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#15a9f2d541b7e10e881b9d630df00996194a7061" +dependencies = [ + "dioxus-core", + "dioxus-core-macro", + "dioxus-core-types", + "dioxus-html", + "futures-channel", + "futures-util", + "generational-box", + "lazy-js-bundle", + "serde", + "serde_json", + "tracing", +] + [[package]] name = "dioxus-fullstack" -version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" +version = "0.6.0-alpha.3" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#15a9f2d541b7e10e881b9d630df00996194a7061" dependencies = [ "async-trait", "axum", "base64 0.22.1", "bytes", "ciborium", - "clap", "dioxus-cli-config", - "dioxus-hot-reload", + "dioxus-devtools", "dioxus-interpreter-js", + "dioxus-isrg", "dioxus-lib", "dioxus-ssr", "dioxus-web", @@ -1202,7 +1194,7 @@ dependencies = [ "futures-util", "generational-box", "http 1.1.0", - "hyper 1.4.1", + "hyper 1.5.0", "once_cell", "parking_lot", "pin-project", @@ -1212,7 +1204,7 @@ dependencies = [ "tokio", "tokio-stream", "tokio-util", - "tower", + "tower 0.4.13", "tower-http", "tower-layer", "tracing", @@ -1222,8 +1214,8 @@ dependencies = [ [[package]] name = "dioxus-hooks" -version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" +version = "0.6.0-alpha.3" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#15a9f2d541b7e10e881b9d630df00996194a7061" dependencies = [ "dioxus-core", "dioxus-signals", @@ -1236,71 +1228,48 @@ dependencies = [ "warnings", ] -[[package]] -name = "dioxus-hot-reload" -version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" -dependencies = [ - "dioxus-cli-config", - "dioxus-core", - "dioxus-html", - "dioxus-rsx", - "dioxus-signals", - "futures-util", - "serde", - "serde_json", - "tokio", - "tokio-stream", - "tokio-tungstenite 0.23.1", - "tracing", - "warnings", -] - [[package]] name = "dioxus-html" -version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" +version = "0.6.0-alpha.3" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#15a9f2d541b7e10e881b9d630df00996194a7061" dependencies = [ "async-trait", "dioxus-core", "dioxus-core-macro", + "dioxus-core-types", "dioxus-hooks", "dioxus-html-internal-macro", "enumset", "euclid", "futures-channel", "generational-box", - "js-sys", "keyboard-types", "lazy-js-bundle", "rustversion", "serde", "serde_json", "serde_repr", - "tokio", "tracing", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", ] [[package]] name = "dioxus-html-internal-macro" -version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" +version = "0.6.0-alpha.3" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#15a9f2d541b7e10e881b9d630df00996194a7061" dependencies = [ "convert_case 0.6.0", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] name = "dioxus-interpreter-js" -version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" +version = "0.6.0-alpha.3" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#15a9f2d541b7e10e881b9d630df00996194a7061" dependencies = [ "dioxus-core", + "dioxus-core-types", "dioxus-html", "js-sys", "lazy-js-bundle", @@ -1313,14 +1282,28 @@ dependencies = [ "web-sys", ] +[[package]] +name = "dioxus-isrg" +version = "0.6.0-alpha.3" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#15a9f2d541b7e10e881b9d630df00996194a7061" +dependencies = [ + "chrono", + "http 1.1.0", + "lru", + "rustc-hash", + "thiserror", + "tracing", +] + [[package]] name = "dioxus-lib" -version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" +version = "0.6.0-alpha.3" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#15a9f2d541b7e10e881b9d630df00996194a7061" dependencies = [ "dioxus-config-macro", "dioxus-core", "dioxus-core-macro", + "dioxus-document", "dioxus-hooks", "dioxus-html", "dioxus-rsx", @@ -1329,13 +1312,14 @@ dependencies = [ [[package]] name = "dioxus-liveview" -version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" +version = "0.6.0-alpha.3" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#15a9f2d541b7e10e881b9d630df00996194a7061" dependencies = [ "axum", "dioxus-cli-config", "dioxus-core", - "dioxus-hot-reload", + "dioxus-devtools", + "dioxus-document", "dioxus-html", "dioxus-interpreter-js", "futures-channel", @@ -1367,7 +1351,7 @@ dependencies = [ [[package]] name = "dioxus-material-icons" version = "2.0.0" -source = "git+https://github.com/jkelleyrtp/dioxus-material-icons?branch=jk/git-rev#e494160bd3e03b78ee868c5dde83a16fce77fd48" +source = "git+https://github.com/jkelleyrtp/dioxus-material-icons?branch=jk/git-rev#1702ad5c1b6af0dc8b65f7752130f2037f3e0c49" dependencies = [ "dioxus", ] @@ -1375,7 +1359,7 @@ dependencies = [ [[package]] name = "dioxus-playground" version = "0.1.0" -source = "git+https://github.com/DioxusLabs/playground?branch=jk/update-manganis#fdb11c155e13f3ed36834652d34370735b0492c5" +source = "git+https://github.com/DioxusLabs/playground?branch=jk/update-manganis#ed37ee42973c082ba74c257dce960fe12f6349ca" dependencies = [ "dioxus", "dioxus-logger", @@ -1388,8 +1372,8 @@ dependencies = [ [[package]] name = "dioxus-router" -version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" +version = "0.6.0-alpha.3" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#15a9f2d541b7e10e881b9d630df00996194a7061" dependencies = [ "dioxus-cli-config", "dioxus-fullstack", @@ -1408,28 +1392,24 @@ dependencies = [ [[package]] name = "dioxus-router-macro" -version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" +version = "0.6.0-alpha.3" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#15a9f2d541b7e10e881b9d630df00996194a7061" dependencies = [ "proc-macro2", "quote", "slab", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] name = "dioxus-rsx" -version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" +version = "0.6.0-alpha.3" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#15a9f2d541b7e10e881b9d630df00996194a7061" dependencies = [ - "dioxus-core", - "internment", "proc-macro2", "proc-macro2-diagnostics", "quote", - "serde", - "syn 2.0.77", - "tracing", + "syn 2.0.84", ] [[package]] @@ -1472,7 +1452,7 @@ version = "0.1.0" source = "git+https://github.com/dioxuslabs/dioxus-search#5b2a301b2e84106c9a1b80119277ec38b117ecfe" dependencies = [ "quote", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] @@ -1495,8 +1475,8 @@ dependencies = [ [[package]] name = "dioxus-signals" -version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" +version = "0.6.0-alpha.3" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#15a9f2d541b7e10e881b9d630df00996194a7061" dependencies = [ "dioxus-core", "futures-channel", @@ -1511,55 +1491,48 @@ dependencies = [ [[package]] name = "dioxus-ssr" -version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" +version = "0.6.0-alpha.3" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#15a9f2d541b7e10e881b9d630df00996194a7061" dependencies = [ "askama_escape", - "async-trait", - "chrono", - "dioxus-cli-config", "dioxus-core", - "dioxus-html", - "dioxus-interpreter-js", - "generational-box", - "http 1.1.0", - "lru", + "dioxus-core-types", "rustc-hash", - "serde_json", - "thiserror", - "tokio", - "tracing", ] [[package]] name = "dioxus-static-site-generation" -version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" +version = "0.6.0-alpha.3" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#15a9f2d541b7e10e881b9d630df00996194a7061" dependencies = [ "axum", "dioxus-cli-config", + "dioxus-devtools", "dioxus-fullstack", - "dioxus-hot-reload", + "dioxus-isrg", "dioxus-lib", "dioxus-router", "dioxus-ssr", "dioxus-web", "http 1.1.0", "tokio", - "tower", + "tower 0.4.13", "tower-http", "tracing", ] [[package]] name = "dioxus-web" -version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" +version = "0.6.0-alpha.3" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#15a9f2d541b7e10e881b9d630df00996194a7061" dependencies = [ + "async-trait", "ciborium", "console_error_panic_hook", "dioxus-core", - "dioxus-hot-reload", + "dioxus-core-types", + "dioxus-devtools", + "dioxus-document", "dioxus-html", "dioxus-interpreter-js", "dioxus-signals", @@ -1567,6 +1540,7 @@ dependencies = [ "futures-util", "generational-box", "js-sys", + "lazy-js-bundle", "rustc-hash", "serde", "serde-wasm-bindgen", @@ -1633,14 +1607,13 @@ dependencies = [ [[package]] name = "dioxus_server_macro" -version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" +version = "0.6.0-alpha.3" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#15a9f2d541b7e10e881b9d630df00996194a7061" dependencies = [ - "convert_case 0.6.0", "proc-macro2", "quote", "server_fn_macro", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] @@ -1657,7 +1630,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] @@ -1680,7 +1653,7 @@ checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] @@ -1767,7 +1740,7 @@ checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] @@ -1788,7 +1761,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] @@ -1846,9 +1819,9 @@ checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "fdeflate" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645" +checksum = "d8090f921a24b04994d9929e204f50b498a33ea6ba559ffaa05e04f7ee7fb5ab" dependencies = [ "simd-adler32", ] @@ -1865,12 +1838,12 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.33" +version = "1.0.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" +checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" dependencies = [ "crc32fast", - "miniz_oxide 0.8.0", + "miniz_oxide", ] [[package]] @@ -1879,6 +1852,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" + [[package]] name = "foreign-types" version = "0.3.2" @@ -1906,7 +1885,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] @@ -1957,9 +1936,9 @@ dependencies = [ [[package]] name = "futures" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", @@ -1972,9 +1951,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -1982,15 +1961,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" dependencies = [ "futures-core", "futures-task", @@ -1999,9 +1978,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-lite" @@ -2018,32 +1997,32 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-channel", "futures-core", @@ -2167,10 +2146,11 @@ dependencies = [ [[package]] name = "generational-box" -version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" +version = "0.6.0-alpha.3" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#15a9f2d541b7e10e881b9d630df00996194a7061" dependencies = [ "parking_lot", + "tracing", ] [[package]] @@ -2218,9 +2198,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.31.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "gio" @@ -2254,19 +2234,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "git2" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b903b73e45dc0c6c596f2d37eccece7c1c8bb6e4407b001096387c63d0d93724" -dependencies = [ - "bitflags 2.6.0", - "libc", - "libgit2-sys", - "log", - "url", -] - [[package]] name = "glib" version = "0.18.5" @@ -2301,7 +2268,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] @@ -2321,7 +2288,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b436093d1598b05e3b7fddc097b2bad32763f53a1beb25ab6f9718c6a60acd09" dependencies = [ "bitflags 2.6.0", - "cocoa", + "cocoa 0.25.0", "crossbeam-channel", "keyboard-types", "objc", @@ -2614,7 +2581,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] @@ -2629,7 +2596,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.5.0", + "indexmap 2.6.0", "slab", "tokio", "tokio-util", @@ -2666,9 +2633,16 @@ name = "hashbrown" version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" + +[[package]] +name = "hashbrown" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" dependencies = [ - "ahash", "allocator-api2", + "equivalent", + "foldhash", ] [[package]] @@ -2816,9 +2790,9 @@ checksum = "08a397c49fec283e3d6211adbe480be95aae5f304cfb923e9970e08956d5168a" [[package]] name = "httparse" -version = "1.9.4" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" [[package]] name = "httpdate" @@ -2828,9 +2802,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "0.14.30" +version = "0.14.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" +checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" dependencies = [ "bytes", "futures-channel", @@ -2852,9 +2826,9 @@ dependencies = [ [[package]] name = "hyper" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" +checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a" dependencies = [ "bytes", "futures-channel", @@ -2877,7 +2851,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ "bytes", - "hyper 0.14.30", + "hyper 0.14.31", "native-tls", "tokio", "tokio-native-tls", @@ -2891,7 +2865,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.0", "hyper-util", "native-tls", "tokio", @@ -2901,29 +2875,28 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da62f120a8a37763efb0cf8fdf264b884c7b8b9ac8660b900c8661030c00e6ba" +checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" dependencies = [ "bytes", "futures-channel", "futures-util", "http 1.1.0", "http-body 1.0.1", - "hyper 1.4.1", + "hyper 1.5.0", "pin-project-lite", "socket2", "tokio", - "tower", "tower-service", "tracing", ] [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -2989,12 +2962,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.14.5", + "hashbrown 0.15.0", ] [[package]] @@ -3027,16 +3000,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "internment" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04e8e537b529b8674e97e9fb82c10ff168a290ac3867a0295f112061ffbca1ef" -dependencies = [ - "hashbrown 0.14.5", - "parking_lot", -] - [[package]] name = "inventory" version = "0.3.15" @@ -3045,15 +3008,9 @@ checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" [[package]] name = "ipnet" -version = "2.10.0" +version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4" - -[[package]] -name = "is_terminal_polyfill" -version = "1.70.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" [[package]] name = "itoa" @@ -3112,20 +3069,11 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" -[[package]] -name = "jobserver" -version = "0.1.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" -dependencies = [ - "libc", -] - [[package]] name = "js-sys" -version = "0.3.70" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" dependencies = [ "wasm-bindgen", ] @@ -3168,8 +3116,8 @@ dependencies = [ [[package]] name = "lazy-js-bundle" -version = "0.6.0-alpha.2" -source = "git+https://github.com/dioxuslabs/dioxus#6ff7a547065d7fcff35a69dc87abf134e1047068" +version = "0.6.0-alpha.3" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#15a9f2d541b7e10e881b9d630df00996194a7061" [[package]] name = "lazy_static" @@ -3179,21 +3127,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.158" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" - -[[package]] -name = "libgit2-sys" -version = "0.17.0+1.8.1" +version = "0.2.161" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10472326a8a6477c3c20a64547b0059e4b0d086869eee31e6d7da728a8eb7224" -dependencies = [ - "cc", - "libc", - "libz-sys", - "pkg-config", -] +checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" [[package]] name = "libxdo" @@ -3214,18 +3150,6 @@ dependencies = [ "x11", ] -[[package]] -name = "libz-sys" -version = "1.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - [[package]] name = "linked-hash-map" version = "0.5.6" @@ -3262,11 +3186,11 @@ checksum = "b3bd0dd2cd90571056fdb71f6275fada10131182f84899f4b2a916e565d81d86" [[package]] name = "lru" -version = "0.12.4" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904" +checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" dependencies = [ - "hashbrown 0.14.5", + "hashbrown 0.15.0", ] [[package]] @@ -3277,9 +3201,9 @@ checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" [[package]] name = "macro_state" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "772f7662b84d85d514fb3a72417bc7067f9eabbe80d56a9c2ff326b7d6ad0ae4" +checksum = "589abf95dc56083803fad8a5d41bd6828a11e248dbb5648c2d2c141bd981bd83" dependencies = [ "lazy_static", "macro_state_macros", @@ -3287,9 +3211,9 @@ dependencies = [ [[package]] name = "macro_state_macros" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28a71d3b95d81cac5bac4100d2b9d70798e3ad274798afade206f49b0801bc93" +checksum = "b0a7012ddae0ba8421fd36c6260439e25f01053882f68b4cadf53639c97727bb" dependencies = [ "derive-syn-parse", "lazy_static", @@ -3308,42 +3232,38 @@ dependencies = [ [[package]] name = "manganis" -version = "0.3.0-alpha.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6250942459fe37aecefbf52d5ef5904534d4c3e6383b26835fa3bde98ab5e491" +version = "0.6.0-alpha.3" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#15a9f2d541b7e10e881b9d630df00996194a7061" dependencies = [ + "anyhow", + "base64 0.22.1", + "dioxus-core-types", + "dunce", "manganis-macro", + "once_cell", + "serde", ] [[package]] -name = "manganis-common" -version = "0.3.0-alpha.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90f9048495439cee460d6092341dc54088895f985ca41379169502d8f46af08e" +name = "manganis-core" +version = "0.6.0-alpha.3" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#15a9f2d541b7e10e881b9d630df00996194a7061" dependencies = [ - "anyhow", - "base64 0.21.7", - "built", - "home", - "infer", "serde", - "toml 0.7.8", - "tracing", - "url", + "serde_json", ] [[package]] name = "manganis-macro" -version = "0.3.0-alpha.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc48d9ad7dccb08194ec0613ad22ad28f4d28dd8565397a1d3fb4a6986bbebef" +version = "0.6.0-alpha.3" +source = "git+https://github.com/dioxuslabs/dioxus?branch=jk/proper-asset-crossplatform#15a9f2d541b7e10e881b9d630df00996194a7061" dependencies = [ - "manganis-common", + "manganis-core", "proc-macro2", "quote", + "serde", "serde_json", - "syn 2.0.77", - "tracing-subscriber", + "syn 2.0.84", ] [[package]] @@ -3389,7 +3309,7 @@ checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" [[package]] name = "mdbook-gen" version = "0.0.0" -source = "git+https://github.com/dioxuslabs/include_mdbook?branch=jk/build-gen#c61f0575b2a02a6875c4d49cf9e7b543b4c6cfcb" +source = "git+https://github.com/dioxuslabs/include_mdbook?branch=jk/build-gen#dd6065c715872158849490b05c914a10a82f3184" dependencies = [ "anyhow", "convert_case 0.6.0", @@ -3404,14 +3324,14 @@ dependencies = [ "quote", "serde", "serde_json", - "syn 2.0.77", + "syn 2.0.84", "syntect", ] [[package]] name = "mdbook-macro" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/include_mdbook?branch=jk/build-gen#c61f0575b2a02a6875c4d49cf9e7b543b4c6cfcb" +source = "git+https://github.com/dioxuslabs/include_mdbook?branch=jk/build-gen#dd6065c715872158849490b05c914a10a82f3184" dependencies = [ "anyhow", "convert_case 0.6.0", @@ -3425,14 +3345,14 @@ dependencies = [ "quote", "serde", "serde_json", - "syn 2.0.77", + "syn 2.0.84", "syntect", ] [[package]] name = "mdbook-shared" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/include_mdbook?branch=jk/build-gen#c61f0575b2a02a6875c4d49cf9e7b543b4c6cfcb" +source = "git+https://github.com/dioxuslabs/include_mdbook?branch=jk/build-gen#dd6065c715872158849490b05c914a10a82f3184" dependencies = [ "anyhow", "bytes", @@ -3477,16 +3397,6 @@ dependencies = [ "unicase", ] -[[package]] -name = "miniz_oxide" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" -dependencies = [ - "adler", - "simd-adler32", -] - [[package]] name = "miniz_oxide" version = "0.8.0" @@ -3494,6 +3404,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" dependencies = [ "adler2", + "simd-adler32", ] [[package]] @@ -3511,7 +3422,7 @@ dependencies = [ [[package]] name = "model" version = "0.1.0" -source = "git+https://github.com/DioxusLabs/playground?branch=jk/update-manganis#fdb11c155e13f3ed36834652d34370735b0492c5" +source = "git+https://github.com/DioxusLabs/playground?branch=jk/update-manganis#ed37ee42973c082ba74c257dce960fe12f6349ca" dependencies = [ "gloo-net 0.5.0", "serde", @@ -3525,7 +3436,7 @@ version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c47e7625990fc1af2226ea4f34fb2412b03c12639fcb91868581eb3a6893453" dependencies = [ - "cocoa", + "cocoa 0.25.0", "crossbeam-channel", "gtk", "keyboard-types", @@ -3573,15 +3484,16 @@ dependencies = [ [[package]] name = "ndk" -version = "0.7.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", "jni-sys", + "log", "ndk-sys", "num_enum", - "raw-window-handle 0.5.2", + "raw-window-handle 0.6.2", "thiserror", ] @@ -3593,9 +3505,9 @@ checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" [[package]] name = "ndk-sys" -version = "0.4.1+23.1.7779620" +version = "0.6.0+11769913" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cf2aae958bd232cac5069850591667ad422d263686d75b52a065f9badeee5a3" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" dependencies = [ "jni-sys", ] @@ -3624,16 +3536,6 @@ version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" -[[package]] -name = "nu-ansi-term" -version = "0.46.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" -dependencies = [ - "overload", - "winapi", -] - [[package]] name = "num-conv" version = "0.1.0" @@ -3661,23 +3563,23 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.5.11" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.5.11" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ - "proc-macro-crate 1.3.1", + "proc-macro-crate 2.0.2", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.84", ] [[package]] @@ -3736,18 +3638,18 @@ dependencies = [ [[package]] name = "object" -version = "0.36.4" +version = "0.36.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" +checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "onig" @@ -3773,9 +3675,9 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.66" +version = "0.10.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" +checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" dependencies = [ "bitflags 2.6.0", "cfg-if", @@ -3794,7 +3696,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] @@ -3805,9 +3707,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.103" +version = "0.9.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" +checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" dependencies = [ "cc", "libc", @@ -3825,12 +3727,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - [[package]] name = "pango" version = "0.18.3" @@ -4001,7 +3897,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] @@ -4033,22 +3929,22 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.5" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.5" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] @@ -4076,9 +3972,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "plist" @@ -4087,7 +3983,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42cf17e9a1800f5f396bc67d193dc9411b59012a5876445ef450d449881e1016" dependencies = [ "base64 0.22.1", - "indexmap 2.5.0", + "indexmap 2.6.0", "quick-xml", "serde", "time", @@ -4095,15 +3991,15 @@ dependencies = [ [[package]] name = "png" -version = "0.17.13" +version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1" +checksum = "52f9d46a34a05a6a57566bc2bfae066ef07585a6e3fa30fbbdff5936380623f0" dependencies = [ "bitflags 1.3.2", "crc32fast", "fdeflate", "flate2", - "miniz_oxide 0.7.4", + "miniz_oxide", ] [[package]] @@ -4163,9 +4059,9 @@ checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" [[package]] name = "pretty_assertions" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66" +checksum = "3ae130e2f271fbc2ac3a40fb1d07180839cdbbe443c7a27e1e3c13c5cac0116d" dependencies = [ "diff", "yansi", @@ -4173,12 +4069,12 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.22" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" +checksum = "910d41a655dac3b764f1ade94821093d3610248694320cd072303a8eedcf221d" dependencies = [ "proc-macro2", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] @@ -4233,9 +4129,9 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" dependencies = [ "unicode-ident", ] @@ -4248,7 +4144,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.84", "version_check", ] @@ -4377,18 +4273,18 @@ checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" [[package]] name = "redox_syscall" -version = "0.5.3" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" dependencies = [ "bitflags 2.6.0", ] [[package]] name = "regex" -version = "1.10.6" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" dependencies = [ "aho-corasick", "memchr", @@ -4398,9 +4294,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" dependencies = [ "aho-corasick", "memchr", @@ -4409,9 +4305,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" @@ -4427,7 +4323,7 @@ dependencies = [ "h2", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.30", + "hyper 0.14.31", "hyper-tls 0.5.0", "ipnet", "js-sys", @@ -4455,9 +4351,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.7" +version = "0.12.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63" +checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b" dependencies = [ "base64 0.22.1", "bytes", @@ -4466,7 +4362,7 @@ dependencies = [ "http 1.1.0", "http-body 1.0.1", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.0", "hyper-tls 0.6.0", "hyper-util", "ipnet", @@ -4478,7 +4374,7 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls-pemfile 2.1.3", + "rustls-pemfile 2.2.0", "serde", "serde_json", "serde_urlencoded", @@ -4518,21 +4414,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "ring" -version = "0.17.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" -dependencies = [ - "cc", - "cfg-if", - "getrandom 0.2.15", - "libc", - "spin", - "untrusted", - "windows-sys 0.52.0", -] - [[package]] name = "rmp" version = "0.8.14" @@ -4588,9 +4469,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.36" +version = "0.38.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f55e80d50763938498dd5ebb18647174e0c76dc38c5505294bb224624f30f36" +checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" dependencies = [ "bitflags 2.6.0", "errno", @@ -4599,19 +4480,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "rustls" -version = "0.23.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" -dependencies = [ - "once_cell", - "rustls-pki-types", - "rustls-webpki", - "subtle", - "zeroize", -] - [[package]] name = "rustls-pemfile" version = "1.0.4" @@ -4623,36 +4491,24 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "2.1.3" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" dependencies = [ - "base64 0.22.1", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" -version = "1.8.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" - -[[package]] -name = "rustls-webpki" -version = "0.102.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" -dependencies = [ - "ring", - "rustls-pki-types", - "untrusted", -] +checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" [[package]] name = "ryu" @@ -4671,9 +4527,9 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" +checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" dependencies = [ "windows-sys 0.59.0", ] @@ -4708,7 +4564,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ "bitflags 2.6.0", - "core-foundation", + "core-foundation 0.9.4", "core-foundation-sys", "libc", "security-framework-sys", @@ -4716,9 +4572,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.1" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" +checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" dependencies = [ "core-foundation-sys", "libc", @@ -4780,9 +4636,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.210" +version = "1.0.213" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +checksum = "3ea7893ff5e2466df8d720bb615088341b295f849602c6956047f8f80f0e9bc1" dependencies = [ "serde_derive", ] @@ -4800,20 +4656,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.210" +version = "1.0.213" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +checksum = "7e85ad2009c50b58e87caa8cd6dac16bdf511bbfb7af6c33df902396aa480fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] name = "serde_json" -version = "1.0.128" +version = "1.0.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" dependencies = [ "itoa 1.0.11", "memchr", @@ -4850,14 +4706,14 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] name = "serde_spanned" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" dependencies = [ "serde", ] @@ -4888,18 +4744,18 @@ dependencies = [ "gloo-net 0.6.0", "http 1.1.0", "http-body-util", - "hyper 1.4.1", + "hyper 1.5.0", "inventory", "js-sys", "once_cell", - "reqwest 0.12.7", + "reqwest 0.12.8", "send_wrapper", "serde", "serde_json", "serde_qs", "server_fn_macro_default", "thiserror", - "tower", + "tower 0.4.13", "tower-layer", "url", "wasm-bindgen", @@ -4919,7 +4775,7 @@ dependencies = [ "convert_case 0.6.0", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.84", "xxhash-rust", ] @@ -4930,7 +4786,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f2aa8119b558a17992e0ac1fd07f080099564f24532858811ce04f742542440" dependencies = [ "server_fn_macro", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] @@ -5058,7 +4914,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33a1b4f13e2bbf2f5b29d09dfebc9de69229ffee245aed80e3b70f9b5fd28c06" dependencies = [ "quote", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] @@ -5211,18 +5067,6 @@ dependencies = [ "quote", ] -[[package]] -name = "strsim" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" - -[[package]] -name = "subtle" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" - [[package]] name = "syn" version = "1.0.109" @@ -5236,9 +5080,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.77" +version = "2.0.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" +checksum = "6a2c4efbc0b0670e3d41f388e3cb936ff364bf681703b4c92ae26ca509966111" dependencies = [ "proc-macro2", "quote", @@ -5285,7 +5129,7 @@ dependencies = [ [[package]] name = "syntect-html" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/include_mdbook?branch=jk/build-gen#c61f0575b2a02a6875c4d49cf9e7b543b4c6cfcb" +source = "git+https://github.com/dioxuslabs/include_mdbook?branch=jk/build-gen#dd6065c715872158849490b05c914a10a82f3184" dependencies = [ "proc-macro2", "quote", @@ -5300,7 +5144,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" dependencies = [ "bitflags 1.3.2", - "core-foundation", + "core-foundation 0.9.4", "system-configuration-sys", ] @@ -5329,17 +5173,18 @@ dependencies = [ [[package]] name = "tao" -version = "0.26.2" +version = "0.30.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69ebbccb78deb5a36744c079eea2981b4a48ecbbe6b1b2ffbaa528bea3f5e5db" +checksum = "a0dbbebe82d02044dfa481adca1550d6dd7bd16e086bc34fa0fbecceb5a63751" dependencies = [ - "bitflags 1.3.2", - "cocoa", - "core-foundation", - "core-graphics", + "bitflags 2.6.0", + "cocoa 0.26.0", + "core-foundation 0.10.0", + "core-graphics 0.24.0", "crossbeam-channel", "dispatch", "dlopen2", + "dpi", "gdkwayland-sys", "gdkx11-sys", "gtk", @@ -5360,7 +5205,8 @@ dependencies = [ "tao-macros", "unicode-segmentation", "url", - "windows 0.54.0", + "windows", + "windows-core 0.58.0", "windows-version", "x11-dl", ] @@ -5373,7 +5219,7 @@ checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] @@ -5384,9 +5230,9 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" -version = "3.12.0" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" +checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" dependencies = [ "cfg-if", "fastrand", @@ -5414,22 +5260,22 @@ checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" [[package]] name = "thiserror" -version = "1.0.63" +version = "1.0.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "5d11abd9594d9b38965ef50805c5e469ca9cc6f197f883f717e0269a3057b3d5" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "1.0.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "ae71770322cbd277e69d762a16c444af02aa0575ac0d174f0b9562d3b37f8602" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] @@ -5501,9 +5347,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.40.0" +version = "1.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" dependencies = [ "backtrace", "bytes", @@ -5526,7 +5372,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] @@ -5553,29 +5399,14 @@ dependencies = [ [[package]] name = "tokio-tungstenite" -version = "0.21.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c83b561d025642014097b66e6c1bb422783339e0909e4429cde4749d1990bc38" +checksum = "edc5f74e248dc973e0dbb7b74c7e0d6fcc301c694ff50049504004ef4d0cdcd9" dependencies = [ "futures-util", "log", "tokio", - "tungstenite 0.21.0", -] - -[[package]] -name = "tokio-tungstenite" -version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6989540ced10490aaf14e6bad2e3d33728a2813310a0c71d1574304c49631cd" -dependencies = [ - "futures-util", - "log", - "native-tls", - "rustls", - "tokio", - "tokio-native-tls", - "tungstenite 0.23.0", + "tungstenite 0.24.0", ] [[package]] @@ -5641,7 +5472,7 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.6.0", "serde", "serde_spanned", "toml_datetime", @@ -5654,7 +5485,7 @@ version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.6.0", "serde", "serde_spanned", "toml_datetime", @@ -5671,6 +5502,21 @@ dependencies = [ "futures-util", "pin-project", "pin-project-lite", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper 0.1.2", "tokio", "tower-layer", "tower-service", @@ -5734,7 +5580,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] @@ -5744,7 +5590,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", - "valuable", ] [[package]] @@ -5757,29 +5602,15 @@ dependencies = [ "tracing", ] -[[package]] -name = "tracing-log" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" -dependencies = [ - "log", - "once_cell", - "tracing-core", -] - [[package]] name = "tracing-subscriber" version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" dependencies = [ - "nu-ansi-term", "sharded-slab", - "smallvec", "thread_local", "tracing-core", - "tracing-log", ] [[package]] @@ -5801,9 +5632,9 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "tungstenite" -version = "0.21.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ef1a641ea34f399a848dea702823bbecfb4c486f911735368f1f137cb8257e1" +checksum = "6e2e2ce1e47ed2994fd43b04c8f618008d4cabdd5ee34027cf14f9d918edd9c8" dependencies = [ "byteorder", "bytes", @@ -5814,15 +5645,14 @@ dependencies = [ "rand 0.8.5", "sha1", "thiserror", - "url", "utf-8", ] [[package]] name = "tungstenite" -version = "0.23.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e2e2ce1e47ed2994fd43b04c8f618008d4cabdd5ee34027cf14f9d918edd9c8" +checksum = "18e5b8366ee7a95b16d32197d0b2604b43a0be89dc5fac9f8e96ccafbaedda8a" dependencies = [ "byteorder", "bytes", @@ -5830,7 +5660,6 @@ dependencies = [ "http 1.1.0", "httparse", "log", - "native-tls", "rand 0.8.5", "sha1", "thiserror", @@ -5875,57 +5704,48 @@ dependencies = [ [[package]] name = "unicase" -version = "2.7.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" -dependencies = [ - "version_check", -] +checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df" [[package]] name = "unicode-bidi" -version = "0.3.15" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" +checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-normalization" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" dependencies = [ "tinyvec", ] [[package]] name = "unicode-segmentation" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-width" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "unicode-xid" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a" - -[[package]] -name = "untrusted" -version = "0.9.0" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "url" @@ -5948,7 +5768,7 @@ checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" [[package]] name = "use-mdbook" version = "0.1.0" -source = "git+https://github.com/dioxuslabs/include_mdbook?branch=jk/build-gen#c61f0575b2a02a6875c4d49cf9e7b543b4c6cfcb" +source = "git+https://github.com/dioxuslabs/include_mdbook?branch=jk/build-gen#dd6065c715872158849490b05c914a10a82f3184" dependencies = [ "lazy_static", "mdbook-macro", @@ -5966,29 +5786,17 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" -[[package]] -name = "utf8parse" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" - [[package]] name = "uuid" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" +checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" dependencies = [ "getrandom 0.2.15", "serde", "wasm-bindgen", ] -[[package]] -name = "valuable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" - [[package]] name = "vcpkg" version = "0.2.15" @@ -6044,7 +5852,7 @@ checksum = "59195a1db0e95b920366d949ba5e0d3fc0e70b67c09be15ce5abb790106b0571" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] @@ -6061,9 +5869,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" dependencies = [ "cfg-if", "once_cell", @@ -6072,24 +5880,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.84", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.43" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" +checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" dependencies = [ "cfg-if", "js-sys", @@ -6099,9 +5907,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -6109,22 +5917,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.84", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "wasm-logger" @@ -6139,9 +5947,9 @@ dependencies = [ [[package]] name = "wasm-streams" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" +checksum = "4e072d4e72f700fb3443d8fe94a39315df013eef1104903cdb0a2abd322bbecd" dependencies = [ "futures-util", "js-sys", @@ -6152,9 +5960,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.70" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" +checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" dependencies = [ "js-sys", "wasm-bindgen", @@ -6166,7 +5974,7 @@ version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db67ae75a9405634f5882791678772c94ff5f16a66535aae186e26aa0841fc8b" dependencies = [ - "core-foundation", + "core-foundation 0.9.4", "home", "jni", "log", @@ -6223,38 +6031,38 @@ dependencies = [ [[package]] name = "webview2-com" -version = "0.31.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6516cfa64c6b3212686080eeec378e662c2af54bb2a5b2a22749673f5cb2226f" +checksum = "6f61ff3d9d0ee4efcb461b14eb3acfda2702d10dc329f339303fc3e57215ae2c" dependencies = [ "webview2-com-macros", "webview2-com-sys", - "windows 0.57.0", - "windows-core 0.57.0", - "windows-implement 0.57.0", - "windows-interface 0.57.0", + "windows", + "windows-core 0.58.0", + "windows-implement", + "windows-interface", ] [[package]] name = "webview2-com-macros" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac1345798ecd8122468840bcdf1b95e5dc6d2206c5e4b0eafa078d061f59c9bc" +checksum = "1d228f15bba3b9d56dde8bddbee66fa24545bd17b48d5128ccf4a8742b18e431" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] name = "webview2-com-sys" -version = "0.31.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c76d5b77320ff155660be1df3e6588bc85c75f1a9feef938cc4dc4dd60d1d7cf" +checksum = "a3a3e2eeb58f82361c93f9777014668eb3d07e7d174ee4c819575a9208011886" dependencies = [ "thiserror", - "windows 0.57.0", - "windows-core 0.57.0", + "windows", + "windows-core 0.58.0", ] [[package]] @@ -6290,23 +6098,11 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.54.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" dependencies = [ - "windows-core 0.54.0", - "windows-implement 0.53.0", - "windows-interface 0.53.0", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows" -version = "0.57.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" -dependencies = [ - "windows-core 0.57.0", + "windows-core 0.58.0", "windows-targets 0.52.6", ] @@ -6321,68 +6117,37 @@ dependencies = [ [[package]] name = "windows-core" -version = "0.54.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" dependencies = [ - "windows-result 0.1.2", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-core" -version = "0.57.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" -dependencies = [ - "windows-implement 0.57.0", - "windows-interface 0.57.0", - "windows-result 0.1.2", + "windows-implement", + "windows-interface", + "windows-result", + "windows-strings", "windows-targets 0.52.6", ] [[package]] name = "windows-implement" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942ac266be9249c84ca862f0a164a39533dc2f6f33dc98ec89c8da99b82ea0bd" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.77", -] - -[[package]] -name = "windows-implement" -version = "0.57.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.77", -] - -[[package]] -name = "windows-interface" -version = "0.53.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da33557140a288fae4e1d5f8873aaf9eb6613a9cf82c3e070223ff177f598b60" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] name = "windows-interface" -version = "0.57.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.84", ] [[package]] @@ -6391,20 +6156,11 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" dependencies = [ - "windows-result 0.2.0", + "windows-result", "windows-strings", "windows-targets 0.52.6", ] -[[package]] -name = "windows-result" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" -dependencies = [ - "windows-targets 0.52.6", -] - [[package]] name = "windows-result" version = "0.2.0" @@ -6420,7 +6176,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" dependencies = [ - "windows-result 0.2.0", + "windows-result", "windows-targets 0.52.6", ] @@ -6668,14 +6424,14 @@ dependencies = [ [[package]] name = "wry" -version = "0.41.0" +version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b00c945786b02d7805d09a969fa36d0eee4e0bd4fb3ec2a79d2bf45a1b44cd" +checksum = "ac0099a336829fbf54c26b5f620c68980ebbe37196772aeaf6118df4931b5cb0" dependencies = [ "base64 0.22.1", "block", - "cocoa", - "core-graphics", + "cocoa 0.26.0", + "core-graphics 0.24.0", "crossbeam-channel", "dpi", "dunce", @@ -6688,8 +6444,6 @@ dependencies = [ "kuchikiki", "libc", "ndk", - "ndk-context", - "ndk-sys", "objc", "objc_id", "once_cell", @@ -6702,8 +6456,8 @@ dependencies = [ "webkit2gtk", "webkit2gtk-sys", "webview2-com", - "windows 0.57.0", - "windows-core 0.57.0", + "windows", + "windows-core 0.58.0", "windows-version", "x11-dl", ] @@ -6756,9 +6510,9 @@ dependencies = [ [[package]] name = "yansi" -version = "0.5.1" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" [[package]] name = "yazi" @@ -6843,15 +6597,9 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.84", ] -[[package]] -name = "zeroize" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" - [[package]] name = "zvariant" version = "4.0.0" diff --git a/Cargo.toml b/Cargo.toml index 21057df9b..452ad7500 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,13 +8,12 @@ resolver = "2" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -dioxus = { version = "0.6.0-alpha.2", features = ["router"] } -dioxus-fullstack = { version = "0.6.0-alpha.2" } - -dioxus-web = { version = "0.6.0-alpha.2", features = ["hydrate"], optional = true } -dioxus-ssr = { version = "0.6.0-alpha.2", optional = true } -dioxus-desktop = { version = "0.6.0-alpha.2", optional = true } -dioxus-liveview = { version = "0.6.0-alpha.2", features = ["axum"], optional = true } +dioxus = { version = "0.6.0-alpha.3", features = ["router"] } +dioxus-fullstack = { version = "0.6.0-alpha.3" } +dioxus-web = { version = "0.6.0-alpha.3", features = ["hydrate"], optional = true } +dioxus-ssr = { version = "0.6.0-alpha.3", optional = true } +dioxus-desktop = { version = "0.6.0-alpha.3", optional = true } +dioxus-liveview = { version = "0.6.0-alpha.3", features = ["axum"], optional = true } serde = { version = "1.0.163", features = ["derive"] } serde_json = "1.0.96" @@ -80,54 +79,33 @@ mdbook-shared = { git = "https://github.com/dioxuslabs/include_mdbook", branch = prettyplease = "0.2.20" [patch.crates-io] -dioxus = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-lib = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-core = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-core-macro = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-config-macro = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-router = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-router-macro = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-html = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-html-internal-macro = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-hooks = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-web = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-ssr = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-desktop = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-interpreter-js = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-liveview = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-rsx = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-signals = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-cli-config = { git = "https://github.com/dioxuslabs/dioxus" } -generational-box = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-hot-reload = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus_server_macro = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-fullstack = { git = "https://github.com/dioxuslabs/dioxus" } -dioxus-autofmt = { git = "https://github.com/dioxuslabs/dioxus" } - -# dioxus = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -# dioxus-lib = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -# dioxus-core = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -# dioxus-core-macro = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -# dioxus-config-macro = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -# dioxus-router = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -# dioxus-router-macro = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -# dioxus-html = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -# dioxus-html-internal-macro = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -# dioxus-hooks = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -# dioxus-web = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -# dioxus-ssr = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -# dioxus-desktop = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -# dioxus-interpreter-js = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -# dioxus-liveview = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -# dioxus-rsx = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -# dioxus-signals = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -# dioxus-cli-config = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -# generational-box = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -# dioxus-hot-reload = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -# dioxus_server_macro = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -# dioxus-fullstack = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } -# dioxus-autofmt = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } - +dioxus = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-lib = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-core = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-core-macro = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-config-macro = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-router = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-router-macro = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-html = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-html-internal-macro = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-hooks = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-web = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-ssr = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-desktop = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-interpreter-js = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-liveview = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-rsx = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-signals = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-cli-config = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +generational-box = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus_server_macro = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-fullstack = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-autofmt = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-devtools = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +dioxus-devtools-types = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +manganis = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +manganis-core = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } +manganis-macro = { git = "https://github.com/dioxuslabs/dioxus", branch = "jk/proper-asset-crossplatform" } # manganis = { path = "../manganis/packages/manganis" } # manganis-common = { path = "../manganis/packages/common" } # manganis-macro = { path = "../manganis/packages/macro" } diff --git a/Dioxus.toml b/Dioxus.toml index 891bb7836..76add9667 100644 --- a/Dioxus.toml +++ b/Dioxus.toml @@ -12,7 +12,7 @@ name = "docsite" # out_dir = "dist" # resource (static) file folder -asset_dir = "public" +asset_dir = "assets" [web.app] @@ -42,7 +42,7 @@ index_on_404 = true style = [] # Javascript code file -script = ["/ace/ace.js", "/ace/mode-rust.js", "/ace/theme-github.js", "/ace/theme-github_dark.js"] +# script = ["/ace/ace.js", "/ace/mode-rust.js", "/ace/theme-github.js", "/ace/theme-github_dark.js"] [web.resource.dev] diff --git a/public/CNAME b/assets/CNAME similarity index 100% rename from public/CNAME rename to assets/CNAME diff --git a/public/ace/ace.js b/assets/ace/ace.js similarity index 100% rename from public/ace/ace.js rename to assets/ace/ace.js diff --git a/public/ace/mode-rust.js b/assets/ace/mode-rust.js similarity index 100% rename from public/ace/mode-rust.js rename to assets/ace/mode-rust.js diff --git a/public/ace/theme-github.js b/assets/ace/theme-github.js similarity index 100% rename from public/ace/theme-github.js rename to assets/ace/theme-github.js diff --git a/public/ace/theme-github_dark.js b/assets/ace/theme-github_dark.js similarity index 100% rename from public/ace/theme-github_dark.js rename to assets/ace/theme-github_dark.js diff --git a/public/dxp.css b/assets/dxp.css similarity index 100% rename from public/dxp.css rename to assets/dxp.css diff --git a/public/githubmarkdown.css b/assets/githubmarkdown.css similarity index 100% rename from public/githubmarkdown.css rename to assets/githubmarkdown.css diff --git a/assets/main.css b/assets/main.css new file mode 100644 index 000000000..6858f0597 --- /dev/null +++ b/assets/main.css @@ -0,0 +1,189 @@ +@media (min-width: 767px) { + .styled-scrollbar { + scrollbar-width: thin; + scrollbar-color: #21252900 transparent; + scrollbar-gutter: stable; + } + + .styled-scrollbar::-webkit-scrollbar { + height: .5rem; + width: .375rem; + } + + .styled-scrollbar::-webkit-scrollbar-track { + background-color: transparent + } + + .styled-scrollbar::-webkit-scrollbar-thumb { + border-radius: .375rem; + border: 3px solid transparent; + background-clip: content-box; + scrollbar-width: thin; + scrollbar-color: #0080ff #fff; + } + + /* safari bug, the thumb doesn't change unless we trigger a hover event on the item itself */ + .styled-scrollbar:hover { + min-height: 1px; + scrollbar-color: #212529 transparent; + } + + .styled-scrollbar:hover::-webkit-scrollbar-thumb { + border-radius: .375rem; + border: 3px solid transparent; + background-clip: content-box; + scrollbar-width: thin; + scrollbar-color: #0080ff #fff; + background: #d0d3d7; + } +} + +.full-chapter { + padding-top: 8px; + padding-bottom: 8px; +} +.full-chapter:not(:last-child) { + border-bottom: 1px solid #3b3d3e29; +} +@media (prefers-color-scheme: dark) { + .full-chapter:not(:last-child) { + border-bottom: 1px solid #a4a9ac7d; + } +} + + + +.markdown-body { + box-sizing: border-box; + min-width: 200px; + /* max-width: 980px; + margin: 0 5%; */ + /* padding: 45px; */ + list-style: disc; +} + +.markdown-body button {} + +/* +https: //stackoverflow.com/questions/10732690/offsetting-an-html-anchor-to-adjust-for-fixed-header +This way clicking on headers snaps to the height of the navbar + some padding +*/ +:target { + scroll-margin-top: calc(4rem + 8px); +} + + +@media (max-width: 767px) { + .markdown-body { + /* padding: 15px; */ + } +} + +.main-side-nav { + max-height: calc(100vh - 4rem); + overflow: scroll; +} + +/* on small screens we want to hide the copy div +we have to select it based on the content since the styling is buried deep in mdbook +It's so unliklely anyone is copying text on mobile that we can just hide it +*/ +@media (max-width: 767px) { + .markdown-body button[onclick="navigator.clipboard.writeText(this.previousElementSibling.innerText)"] { + display: none; + } +} + + +.dioxus-demo div input form button { + all: revert; +} + +.dioxus-demo input { + border: 1px solid #ced4da; + border-radius: 5px; + padding: 5px; + margin: 5px; + max-width: 150px; +} + +.dioxus-show { + z-index: 10000; + visibility: visible; + transition: opacity 0.1s, scale 0.1s; + opacity: 1; + scale: 1; +} + +.dioxus-hide { + z-index: -1; + visibility: hidden; + opacity: 0; + scale: 1.1 +} + + +.dioxus-demo { + border-width: 3px; +} + +.markdown-body ul { + list-style: disc; +} + +.markdown-body li { + display: list-item; +} + +.markdown-body ol { + list-style: decimal; +} + +.dioxus-blog-post img { + max-height: 500px; + margin-left: auto; + margin-right: auto; + padding-left: 4px; + padding-right: 4px; +} + +.highlight pre, +.markdown-body pre { + background-color: #1e1e1e +} + +.dioxus-blog-post h1 { + text-align: center; +} + +.dioxus-blog-post h1, +.dioxus-blog-post h2 { + margin-top: 72px; +} + +.navbar_externalArrow___VWBd { + position: absolute; + top: 4px; + right: 0px; +} + +.markdown-body ul { list-style: disc; } +.markdown-body ol { list-style: decimal; } +.markdown-body li { display: list-item; } +.markdown-body button { display: inline-block; background-color: rgba(209, 213, 219, 0.3); border-radius: 0.25rem; padding: 0.25rem 0.5rem; border: 1px solid; margin: 0.25rem; } +.markdown-body .header { color: inherit } + +.textured-body { + background-repeat: repeat; + background-image: url('data:image/png;base64,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') +} + + +@media (prefers-color-scheme: dark) { + .textured-body { + color: #E2E5E9; + background-repeat: repeat; + background-image: url('data:image/png;base64,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'); + + } +} diff --git a/assets/material.css b/assets/material.css new file mode 100644 index 000000000..81491d765 --- /dev/null +++ b/assets/material.css @@ -0,0 +1,23 @@ +/* fallback */ +@font-face { + font-family: 'Material Icons'; + font-style: normal; + font-weight: 400; + src: url(https://fonts.gstatic.com/s/materialicons/v142/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.woff2) format('woff2'); +} + +.material-icons { + font-family: 'Material Icons'; + font-weight: normal; + font-style: normal; + font-size: 24px; + line-height: 1; + letter-spacing: normal; + text-transform: none; + display: inline-block; + white-space: nowrap; + word-wrap: normal; + direction: ltr; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; +} diff --git a/public/static/04meme.png b/assets/static/04meme.png similarity index 100% rename from public/static/04meme.png rename to assets/static/04meme.png diff --git a/public/static/Android-Dioxus-demo.png b/assets/static/Android-Dioxus-demo.png similarity index 100% rename from public/static/Android-Dioxus-demo.png rename to assets/static/Android-Dioxus-demo.png diff --git a/public/static/ESA_logo.svg b/assets/static/ESA_logo.svg similarity index 100% rename from public/static/ESA_logo.svg rename to assets/static/ESA_logo.svg diff --git a/public/static/IOS-dioxus-demo.png b/assets/static/IOS-dioxus-demo.png similarity index 100% rename from public/static/IOS-dioxus-demo.png rename to assets/static/IOS-dioxus-demo.png diff --git a/public/static/Untitled.png b/assets/static/Untitled.png similarity index 100% rename from public/static/Untitled.png rename to assets/static/Untitled.png diff --git a/public/static/airbuslogo.svg b/assets/static/airbuslogo.svg similarity index 100% rename from public/static/airbuslogo.svg rename to assets/static/airbuslogo.svg diff --git a/public/static/android-studio-device.png b/assets/static/android-studio-device.png similarity index 100% rename from public/static/android-studio-device.png rename to assets/static/android-studio-device.png diff --git a/public/static/android-studio-devices.png b/assets/static/android-studio-devices.png similarity index 100% rename from public/static/android-studio-devices.png rename to assets/static/android-studio-devices.png diff --git a/public/static/android-studio-simulator.png b/assets/static/android-studio-simulator.png similarity index 100% rename from public/static/android-studio-simulator.png rename to assets/static/android-studio-simulator.png diff --git a/public/static/android_demo.png b/assets/static/android_demo.png similarity index 100% rename from public/static/android_demo.png rename to assets/static/android_demo.png diff --git a/public/static/android_ndk_install.png b/assets/static/android_ndk_install.png similarity index 100% rename from public/static/android_ndk_install.png rename to assets/static/android_ndk_install.png diff --git a/public/static/android_ndk_installation.png b/assets/static/android_ndk_installation.png similarity index 100% rename from public/static/android_ndk_installation.png rename to assets/static/android_ndk_installation.png diff --git a/public/static/as-build-dropdown.png b/assets/static/as-build-dropdown.png similarity index 100% rename from public/static/as-build-dropdown.png rename to assets/static/as-build-dropdown.png diff --git a/public/static/as-build-variant-menu.png b/assets/static/as-build-variant-menu.png similarity index 100% rename from public/static/as-build-variant-menu.png rename to assets/static/as-build-variant-menu.png diff --git a/public/static/bumpframe.png b/assets/static/bumpframe.png similarity index 100% rename from public/static/bumpframe.png rename to assets/static/bumpframe.png diff --git a/public/static/bundle.png b/assets/static/bundle.png similarity index 100% rename from public/static/bundle.png rename to assets/static/bundle.png diff --git a/public/static/bundle_app.png b/assets/static/bundle_app.png similarity index 100% rename from public/static/bundle_app.png rename to assets/static/bundle_app.png diff --git a/public/static/counter.png b/assets/static/counter.png similarity index 100% rename from public/static/counter.png rename to assets/static/counter.png diff --git a/public/static/darktheme.js b/assets/static/darktheme.js similarity index 100% rename from public/static/darktheme.js rename to assets/static/darktheme.js diff --git a/public/static/dioxus-new.mov b/assets/static/dioxus-new.mov similarity index 100% rename from public/static/dioxus-new.mov rename to assets/static/dioxus-new.mov diff --git a/public/static/docsite_cropped.avif b/assets/static/docsite_cropped.avif similarity index 100% rename from public/static/docsite_cropped.avif rename to assets/static/docsite_cropped.avif diff --git a/public/static/docsite_cropped.png b/assets/static/docsite_cropped.png similarity index 100% rename from public/static/docsite_cropped.png rename to assets/static/docsite_cropped.png diff --git a/public/static/dxcheck.png b/assets/static/dxcheck.png similarity index 100% rename from public/static/dxcheck.png rename to assets/static/dxcheck.png diff --git a/public/static/enum_router.png b/assets/static/enum_router.png similarity index 100% rename from public/static/enum_router.png rename to assets/static/enum_router.png diff --git a/public/static/extension.png b/assets/static/extension.png similarity index 100% rename from public/static/extension.png rename to assets/static/extension.png diff --git a/public/static/favicon.png b/assets/static/favicon.png similarity index 100% rename from public/static/favicon.png rename to assets/static/favicon.png diff --git a/public/static/ferrous_wave.png b/assets/static/ferrous_wave.png similarity index 100% rename from public/static/ferrous_wave.png rename to assets/static/ferrous_wave.png diff --git a/public/static/file_explorer.avif b/assets/static/file_explorer.avif similarity index 100% rename from public/static/file_explorer.avif rename to assets/static/file_explorer.avif diff --git a/public/static/file_explorer.png b/assets/static/file_explorer.png similarity index 100% rename from public/static/file_explorer.png rename to assets/static/file_explorer.png diff --git a/public/static/futurewei_bw.png b/assets/static/futurewei_bw.png similarity index 100% rename from public/static/futurewei_bw.png rename to assets/static/futurewei_bw.png diff --git a/public/static/ide_autocomplete.png b/assets/static/ide_autocomplete.png similarity index 100% rename from public/static/ide_autocomplete.png rename to assets/static/ide_autocomplete.png diff --git a/public/static/ide_hover.png b/assets/static/ide_hover.png similarity index 100% rename from public/static/ide_hover.png rename to assets/static/ide_hover.png diff --git a/public/static/ide_listener.png b/assets/static/ide_listener.png similarity index 100% rename from public/static/ide_listener.png rename to assets/static/ide_listener.png diff --git a/public/static/ide_rsx.png b/assets/static/ide_rsx.png similarity index 100% rename from public/static/ide_rsx.png rename to assets/static/ide_rsx.png diff --git a/public/static/ide_selection.png b/assets/static/ide_selection.png similarity index 100% rename from public/static/ide_selection.png rename to assets/static/ide_selection.png diff --git a/public/static/ios_demo.png b/assets/static/ios_demo.png similarity index 100% rename from public/static/ios_demo.png rename to assets/static/ios_demo.png diff --git a/public/static/jsbenchmark_cropped.avif b/assets/static/jsbenchmark_cropped.avif similarity index 100% rename from public/static/jsbenchmark_cropped.avif rename to assets/static/jsbenchmark_cropped.avif diff --git a/public/static/jsbenchmark_cropped.png b/assets/static/jsbenchmark_cropped.png similarity index 100% rename from public/static/jsbenchmark_cropped.png rename to assets/static/jsbenchmark_cropped.png diff --git a/public/static/landing_1.png b/assets/static/landing_1.png similarity index 100% rename from public/static/landing_1.png rename to assets/static/landing_1.png diff --git a/public/static/landing_2.png b/assets/static/landing_2.png similarity index 100% rename from public/static/landing_2.png rename to assets/static/landing_2.png diff --git a/public/static/landing_3.png b/assets/static/landing_3.png similarity index 100% rename from public/static/landing_3.png rename to assets/static/landing_3.png diff --git a/public/static/landing_4.png b/assets/static/landing_4.png similarity index 100% rename from public/static/landing_4.png rename to assets/static/landing_4.png diff --git a/public/static/landing_5.png b/assets/static/landing_5.png similarity index 100% rename from public/static/landing_5.png rename to assets/static/landing_5.png diff --git a/public/static/marketplace_cropped.avif b/assets/static/marketplace_cropped.avif similarity index 100% rename from public/static/marketplace_cropped.avif rename to assets/static/marketplace_cropped.avif diff --git a/public/static/marketplace_cropped.png b/assets/static/marketplace_cropped.png similarity index 100% rename from public/static/marketplace_cropped.png rename to assets/static/marketplace_cropped.png diff --git a/public/static/meme_editor_screenshot.png b/assets/static/meme_editor_screenshot.png similarity index 100% rename from public/static/meme_editor_screenshot.png rename to assets/static/meme_editor_screenshot.png diff --git a/public/static/multiplatform-dark.svg b/assets/static/multiplatform-dark.svg similarity index 100% rename from public/static/multiplatform-dark.svg rename to assets/static/multiplatform-dark.svg diff --git a/public/static/multiplatform-light.svg b/assets/static/multiplatform-light.svg similarity index 100% rename from public/static/multiplatform-light.svg rename to assets/static/multiplatform-light.svg diff --git a/public/static/new_fetch.png b/assets/static/new_fetch.png similarity index 100% rename from public/static/new_fetch.png rename to assets/static/new_fetch.png diff --git a/public/static/old_fetch.png b/assets/static/old_fetch.png similarity index 100% rename from public/static/old_fetch.png rename to assets/static/old_fetch.png diff --git a/public/static/opengraph.png b/assets/static/opengraph.png similarity index 100% rename from public/static/opengraph.png rename to assets/static/opengraph.png diff --git a/public/static/prism/prism.css b/assets/static/prism/prism.css similarity index 100% rename from public/static/prism/prism.css rename to assets/static/prism/prism.css diff --git a/public/static/prism/prism.js b/assets/static/prism/prism.js similarity index 100% rename from public/static/prism/prism.js rename to assets/static/prism/prism.js diff --git a/public/static/publish.png b/assets/static/publish.png similarity index 100% rename from public/static/publish.png rename to assets/static/publish.png diff --git a/public/static/rustacean-flat-gesture.avif b/assets/static/rustacean-flat-gesture.avif similarity index 100% rename from public/static/rustacean-flat-gesture.avif rename to assets/static/rustacean-flat-gesture.avif diff --git a/public/static/satellite.webp b/assets/static/satellite.webp similarity index 100% rename from public/static/satellite.webp rename to assets/static/satellite.webp diff --git a/public/static/scanner.avif b/assets/static/scanner.avif similarity index 100% rename from public/static/scanner.avif rename to assets/static/scanner.avif diff --git a/public/static/scanner.png b/assets/static/scanner.png similarity index 100% rename from public/static/scanner.png rename to assets/static/scanner.png diff --git a/assets/static/smalllogo.png b/assets/static/smalllogo.png new file mode 100644 index 0000000000000000000000000000000000000000..be13baee96a9f02a426edf1f56e6502ea7f2c609 GIT binary patch literal 6989 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 literal 0 HcmV?d00001 diff --git a/public/static/split_codegen.png b/assets/static/split_codegen.png similarity index 100% rename from public/static/split_codegen.png rename to assets/static/split_codegen.png diff --git a/public/static/tailwind_desktop_app.png b/assets/static/tailwind_desktop_app.png similarity index 100% rename from public/static/tailwind_desktop_app.png rename to assets/static/tailwind_desktop_app.png diff --git a/public/static/todos_cropped.avif b/assets/static/todos_cropped.avif similarity index 100% rename from public/static/todos_cropped.avif rename to assets/static/todos_cropped.avif diff --git a/public/static/todos_cropped.png b/assets/static/todos_cropped.png similarity index 100% rename from public/static/todos_cropped.png rename to assets/static/todos_cropped.png diff --git a/assets/static/x_logo.png b/assets/static/x_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5481874e223f7270703c8762a17557b7049cef23 GIT binary patch literal 2569 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 b;#6d8bjJTDm|td}5fK3HBr@?XAuRu29o>AG literal 0 HcmV?d00001 diff --git a/assets/static/x_logo.svg b/assets/static/x_logo.svg new file mode 100644 index 000000000..c178229a4 --- /dev/null +++ b/assets/static/x_logo.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/static/xailogo.svg b/assets/static/xailogo.svg new file mode 100644 index 000000000..16d452839 --- /dev/null +++ b/assets/static/xailogo.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/public/static/yclogo.svg b/assets/static/yclogo.svg similarity index 100% rename from public/static/yclogo.svg rename to assets/static/yclogo.svg diff --git a/public/tailwind.config.js b/assets/tailwind.config.js similarity index 100% rename from public/tailwind.config.js rename to assets/tailwind.config.js diff --git a/assets/tailwind.css b/assets/tailwind.css index caa353dff..7b876344c 100644 --- a/assets/tailwind.css +++ b/assets/tailwind.css @@ -1,5 +1,113 @@ +*, ::before, ::after { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-gradient-from-position: ; + --tw-gradient-via-position: ; + --tw-gradient-to-position: ; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; + --tw-contain-size: ; + --tw-contain-layout: ; + --tw-contain-paint: ; + --tw-contain-style: ; +} + +::backdrop { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-gradient-from-position: ; + --tw-gradient-via-position: ; + --tw-gradient-to-position: ; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; + --tw-contain-size: ; + --tw-contain-layout: ; + --tw-contain-paint: ; + --tw-contain-style: ; +} + /* -! tailwindcss v3.4.3 | MIT License | https://tailwindcss.com +! tailwindcss v3.4.14 | MIT License | https://tailwindcss.com */ /* @@ -442,118 +550,10 @@ video { /* Make elements with the HTML hidden attribute stay hidden by default */ -[hidden] { +[hidden]:where(:not([hidden="until-found"])) { display: none; } -*, ::before, ::after { - --tw-border-spacing-x: 0; - --tw-border-spacing-y: 0; - --tw-translate-x: 0; - --tw-translate-y: 0; - --tw-rotate: 0; - --tw-skew-x: 0; - --tw-skew-y: 0; - --tw-scale-x: 1; - --tw-scale-y: 1; - --tw-pan-x: ; - --tw-pan-y: ; - --tw-pinch-zoom: ; - --tw-scroll-snap-strictness: proximity; - --tw-gradient-from-position: ; - --tw-gradient-via-position: ; - --tw-gradient-to-position: ; - --tw-ordinal: ; - --tw-slashed-zero: ; - --tw-numeric-figure: ; - --tw-numeric-spacing: ; - --tw-numeric-fraction: ; - --tw-ring-inset: ; - --tw-ring-offset-width: 0px; - --tw-ring-offset-color: #fff; - --tw-ring-color: rgb(59 130 246 / 0.5); - --tw-ring-offset-shadow: 0 0 #0000; - --tw-ring-shadow: 0 0 #0000; - --tw-shadow: 0 0 #0000; - --tw-shadow-colored: 0 0 #0000; - --tw-blur: ; - --tw-brightness: ; - --tw-contrast: ; - --tw-grayscale: ; - --tw-hue-rotate: ; - --tw-invert: ; - --tw-saturate: ; - --tw-sepia: ; - --tw-drop-shadow: ; - --tw-backdrop-blur: ; - --tw-backdrop-brightness: ; - --tw-backdrop-contrast: ; - --tw-backdrop-grayscale: ; - --tw-backdrop-hue-rotate: ; - --tw-backdrop-invert: ; - --tw-backdrop-opacity: ; - --tw-backdrop-saturate: ; - --tw-backdrop-sepia: ; - --tw-contain-size: ; - --tw-contain-layout: ; - --tw-contain-paint: ; - --tw-contain-style: ; -} - -::backdrop { - --tw-border-spacing-x: 0; - --tw-border-spacing-y: 0; - --tw-translate-x: 0; - --tw-translate-y: 0; - --tw-rotate: 0; - --tw-skew-x: 0; - --tw-skew-y: 0; - --tw-scale-x: 1; - --tw-scale-y: 1; - --tw-pan-x: ; - --tw-pan-y: ; - --tw-pinch-zoom: ; - --tw-scroll-snap-strictness: proximity; - --tw-gradient-from-position: ; - --tw-gradient-via-position: ; - --tw-gradient-to-position: ; - --tw-ordinal: ; - --tw-slashed-zero: ; - --tw-numeric-figure: ; - --tw-numeric-spacing: ; - --tw-numeric-fraction: ; - --tw-ring-inset: ; - --tw-ring-offset-width: 0px; - --tw-ring-offset-color: #fff; - --tw-ring-color: rgb(59 130 246 / 0.5); - --tw-ring-offset-shadow: 0 0 #0000; - --tw-ring-shadow: 0 0 #0000; - --tw-shadow: 0 0 #0000; - --tw-shadow-colored: 0 0 #0000; - --tw-blur: ; - --tw-brightness: ; - --tw-contrast: ; - --tw-grayscale: ; - --tw-hue-rotate: ; - --tw-invert: ; - --tw-saturate: ; - --tw-sepia: ; - --tw-drop-shadow: ; - --tw-backdrop-blur: ; - --tw-backdrop-brightness: ; - --tw-backdrop-contrast: ; - --tw-backdrop-grayscale: ; - --tw-backdrop-hue-rotate: ; - --tw-backdrop-invert: ; - --tw-backdrop-opacity: ; - --tw-backdrop-saturate: ; - --tw-backdrop-sepia: ; - --tw-contain-size: ; - --tw-contain-layout: ; - --tw-contain-paint: ; - --tw-contain-style: ; -} - .container { width: 100%; } @@ -600,6 +600,10 @@ video { border-width: 0; } +.pointer-events-none { + pointer-events: none; +} + .static { position: static; } @@ -645,6 +649,10 @@ video { top: 7rem; } +.isolate { + isolation: isolate; +} + .z-10 { z-index: 10; } @@ -665,10 +673,26 @@ video { z-index: 100; } +.col-span-2 { + grid-column: span 2 / span 2; +} + +.row-span-3 { + grid-row: span 3 / span 3; +} + +.row-span-2 { + grid-row: span 2 / span 2; +} + .-m-4 { margin: -1rem; } +.m-0 { + margin: 0px; +} + .m-1 { margin: 0.25rem; } @@ -685,11 +709,6 @@ video { margin: 1.25rem; } -.-mx-3 { - margin-left: -0.75rem; - margin-right: -0.75rem; -} - .-mx-4 { margin-left: -1rem; margin-right: -1rem; @@ -705,26 +724,11 @@ video { margin-right: 0.5rem; } -.mx-3 { - margin-left: 0.75rem; - margin-right: 0.75rem; -} - -.mx-4 { - margin-left: 1rem; - margin-right: 1rem; -} - .mx-auto { margin-left: auto; margin-right: auto; } -.my-1 { - margin-top: 0.25rem; - margin-bottom: 0.25rem; -} - .my-2 { margin-top: 0.5rem; margin-bottom: 0.5rem; @@ -750,12 +754,23 @@ video { margin-bottom: auto; } -.-mb-10 { - margin-bottom: -2.5rem; +.mx-1 { + margin-left: 0.25rem; + margin-right: 0.25rem; +} + +.mx-4 { + margin-left: 1rem; + margin-right: 1rem; +} + +.mx-0 { + margin-left: 0px; + margin-right: 0px; } -.-mt-4 { - margin-top: -1rem; +.-mb-10 { + margin-bottom: -2.5rem; } .mb-1 { @@ -786,10 +801,6 @@ video { margin-bottom: 1rem; } -.mb-6 { - margin-bottom: 1.5rem; -} - .mb-8 { margin-bottom: 2rem; } @@ -814,30 +825,18 @@ video { margin-left: 1rem; } -.ml-\[-1px\] { - margin-left: -1px; -} - -.ml-\[-3\.8em\] { - margin-left: -3.8em; -} - .ml-auto { margin-left: auto; } -.mr-1 { - margin-right: 0.25rem; +.mr-2 { + margin-right: 0.5rem; } .mr-4 { margin-right: 1rem; } -.mt-1 { - margin-top: 0.25rem; -} - .mt-10 { margin-top: 2.5rem; } @@ -854,6 +853,22 @@ video { margin-top: auto; } +.mb-7 { + margin-bottom: 1.75rem; +} + +.mb-16 { + margin-bottom: 4rem; +} + +.mb-32 { + margin-bottom: 8rem; +} + +.mb-24 { + margin-bottom: 6rem; +} + .block { display: block; } @@ -914,6 +929,10 @@ video { height: 1rem; } +.h-40 { + height: 10rem; +} + .h-5 { height: 1.25rem; } @@ -926,29 +945,69 @@ video { height: 16rem; } -.h-7 { - height: 1.75rem; +.h-7 { + height: 1.75rem; +} + +.h-8 { + height: 2rem; +} + +.h-\[31\.625rem\] { + height: 31.625rem; +} + +.h-fit { + height: -moz-fit-content; + height: fit-content; +} + +.h-full { + height: 100%; +} + +.h-px { + height: 1px; +} + +.h-3 { + height: 0.75rem; +} + +.h-60 { + height: 15rem; +} + +.h-\[calc\(100vh-4rem\)\] { + height: calc(100vh - 4rem); +} + +.h-\[calc\(100vh-15rem\)\] { + height: calc(100vh - 15rem); +} + +.h-\[calc\(100vh-12rem\)\] { + height: calc(100vh - 12rem); } -.h-8 { - height: 2rem; +.h-\[calc\(100vh-8rem\)\] { + height: calc(100vh - 8rem); } -.h-\[31\.625rem\] { - height: 31.625rem; +.h-\[calc\(100vh-2rem\)\] { + height: calc(100vh - 2rem); } -.h-fit { - height: -moz-fit-content; - height: fit-content; +.h-\[calc\(100vh-3rem\)\] { + height: calc(100vh - 3rem); } -.h-full { - height: 100%; +.h-24 { + height: 6rem; } -.h-px { - height: 1px; +.h-screen { + height: 100vh; } .max-h-48 { @@ -963,10 +1022,42 @@ video { max-height: calc(100% - 8rem); } +.max-h-12 { + max-height: 3rem; +} + +.max-h-\[960px\] { + max-height: 960px; +} + .min-h-0 { min-height: 0px; } +.min-h-\[640px\] { + min-height: 640px; +} + +.min-h-\[960px\] { + min-height: 960px; +} + +.min-h-screen { + min-height: 100vh; +} + +.min-h-\[1280px\] { + min-height: 1280px; +} + +.min-h-\[840px\] { + min-height: 840px; +} + +.min-h-\[760px\] { + min-height: 760px; +} + .w-0 { width: 0px; } @@ -979,20 +1070,16 @@ video { width: 2.5rem; } -.w-2 { - width: 0.5rem; -} - .w-2\.5 { width: 0.625rem; } -.w-4 { - width: 1rem; +.w-24 { + width: 6rem; } -.w-40 { - width: 10rem; +.w-4 { + width: 1rem; } .w-48 { @@ -1023,20 +1110,45 @@ video { width: 100%; } +.w-screen { + width: 100vw; +} + +.w-3 { + width: 0.75rem; +} + +.w-8 { + width: 2rem; +} + +.w-60 { + width: 15rem; +} + +.w-fit { + width: -moz-fit-content; + width: fit-content; +} + +.w-32 { + width: 8rem; +} + .min-w-full { min-width: 100%; } -.max-w-4xl { - max-width: 56rem; +.min-w-6 { + min-width: 1.5rem; } -.max-w-\[20rem\] { - max-width: 20rem; +.max-w-4xl { + max-width: 56rem; } -.max-w-\[30rem\] { - max-width: 30rem; +.max-w-\[14rem\] { + max-width: 14rem; } .max-w-lg { @@ -1063,8 +1175,32 @@ video { max-width: 1280px; } -.max-w-xl { - max-width: 36rem; +.max-w-\[16rem\] { + max-width: 16rem; +} + +.max-w-\[12rem\] { + max-width: 12rem; +} + +.max-w-24 { + max-width: 6rem; +} + +.max-w-\[320px\] { + max-width: 320px; +} + +.max-w-\[160px\] { + max-width: 160px; +} + +.max-w-\[200px\] { + max-width: 200px; +} + +.max-w-\[360px\] { + max-width: 360px; } .flex-1 { @@ -1095,6 +1231,20 @@ video { flex-basis: 0px; } +.translate-x-px { + --tw-translate-x: 1px; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +.translate-y-px { + --tw-translate-y: 1px; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +.transform { + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + @keyframes fadein { from { opacity: 0; @@ -1109,14 +1259,18 @@ video { animation: fadein 500ms ease-in-out forwards; } -.cursor-pointer { - cursor: pointer; +.resize { + resize: both; } .list-none { list-style-type: none; } +.grid-flow-col { + grid-auto-flow: column; +} + .grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); } @@ -1125,10 +1279,18 @@ video { grid-template-columns: repeat(2, minmax(0, 1fr)); } +.grid-cols-\[auto\2c 1fr\2c auto\] { + grid-template-columns: auto 1fr auto; +} + .grid-rows-2 { grid-template-rows: repeat(2, minmax(0, 1fr)); } +.grid-rows-3 { + grid-template-rows: repeat(3, minmax(0, 1fr)); +} + .flex-row { flex-direction: row; } @@ -1141,14 +1303,26 @@ video { flex-wrap: wrap; } -.items-start { - align-items: flex-start; +.flex-nowrap { + flex-wrap: nowrap; +} + +.content-center { + align-content: center; +} + +.content-start { + align-content: flex-start; } .items-center { align-items: center; } +.justify-start { + justify-content: flex-start; +} + .justify-end { justify-content: flex-end; } @@ -1161,6 +1335,14 @@ video { justify-content: space-between; } +.justify-around { + justify-content: space-around; +} + +.justify-evenly { + justify-content: space-evenly; +} + .gap-4 { gap: 1rem; } @@ -1173,10 +1355,39 @@ video { gap: 2rem; } -.space-x-1 > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(0.25rem * var(--tw-space-x-reverse)); - margin-left: calc(0.25rem * calc(1 - var(--tw-space-x-reverse))); +.gap-2 { + gap: 0.5rem; +} + +.gap-1 { + gap: 0.25rem; +} + +.gap-16 { + gap: 4rem; +} + +.gap-12 { + gap: 3rem; +} + +.gap-x-1 { + -moz-column-gap: 0.25rem; + column-gap: 0.25rem; +} + +.gap-x-2 { + -moz-column-gap: 0.5rem; + column-gap: 0.5rem; +} + +.gap-x-3 { + -moz-column-gap: 0.75rem; + column-gap: 0.75rem; +} + +.gap-y-4 { + row-gap: 1rem; } .space-x-1\.5 > :not([hidden]) ~ :not([hidden]) { @@ -1191,12 +1402,6 @@ video { margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse))); } -.space-x-4 > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(1rem * var(--tw-space-x-reverse)); - margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse))); -} - .space-y-1 > :not([hidden]) ~ :not([hidden]) { --tw-space-y-reverse: 0; margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse))); @@ -1209,10 +1414,16 @@ video { margin-bottom: calc(1rem * var(--tw-space-y-reverse)); } -.space-y-6 > :not([hidden]) ~ :not([hidden]) { +.space-y-2 > :not([hidden]) ~ :not([hidden]) { --tw-space-y-reverse: 0; - margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(1.5rem * var(--tw-space-y-reverse)); + margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(0.5rem * var(--tw-space-y-reverse)); +} + +.space-x-4 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(1rem * var(--tw-space-x-reverse)); + margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse))); } .divide-y > :not([hidden]) ~ :not([hidden]) { @@ -1256,6 +1467,10 @@ video { overflow-y: hidden; } +.overflow-y-scroll { + overflow-y: scroll; +} + .whitespace-nowrap { white-space: nowrap; } @@ -1280,6 +1495,10 @@ video { border-radius: 0.375rem; } +.rounded-sm { + border-radius: 0.125rem; +} + .rounded-xl { border-radius: 0.75rem; } @@ -1289,6 +1508,11 @@ video { border-top-right-radius: 0.375rem; } +.rounded-t { + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; +} + .border { border-width: 1px; } @@ -1341,6 +1565,11 @@ video { border-color: rgb(209 213 219 / var(--tw-border-opacity)); } +.border-gray-400 { + --tw-border-opacity: 1; + border-color: rgb(156 163 175 / var(--tw-border-opacity)); +} + .border-green-600 { --tw-border-opacity: 1; border-color: rgb(22 163 74 / var(--tw-border-opacity)); @@ -1360,14 +1589,19 @@ video { border-color: rgb(234 88 12 / var(--tw-border-opacity)); } -.border-stone-600 { +.border-white { + --tw-border-opacity: 1; + border-color: rgb(255 255 255 / var(--tw-border-opacity)); +} + +.border-gray-700 { --tw-border-opacity: 1; - border-color: rgb(87 83 78 / var(--tw-border-opacity)); + border-color: rgb(55 65 81 / var(--tw-border-opacity)); } -.border-white { +.border-gray-500 { --tw-border-opacity: 1; - border-color: rgb(255 255 255 / var(--tw-border-opacity)); + border-color: rgb(107 114 128 / var(--tw-border-opacity)); } .bg-blue-500 { @@ -1375,6 +1609,16 @@ video { background-color: rgb(59 130 246 / var(--tw-bg-opacity)); } +.bg-dxblue { + --tw-bg-opacity: 1; + background-color: rgb(0 168 214 / var(--tw-bg-opacity)); +} + +.bg-dxorange { + --tw-bg-opacity: 1; + background-color: rgb(233 96 32 / var(--tw-bg-opacity)); +} + .bg-ghdarkmetal { --tw-bg-opacity: 1; background-color: rgb(22 27 34 / var(--tw-bg-opacity)); @@ -1390,31 +1634,16 @@ video { background-color: rgb(243 244 246 / var(--tw-bg-opacity)); } -.bg-gray-50 { - --tw-bg-opacity: 1; - background-color: rgb(249 250 251 / var(--tw-bg-opacity)); -} - .bg-gray-500 { --tw-bg-opacity: 1; background-color: rgb(107 114 128 / var(--tw-bg-opacity)); } -.bg-gray-900 { - --tw-bg-opacity: 1; - background-color: rgb(17 24 39 / var(--tw-bg-opacity)); -} - .bg-green-600 { --tw-bg-opacity: 1; background-color: rgb(22 163 74 / var(--tw-bg-opacity)); } -.bg-ideblack { - --tw-bg-opacity: 1; - background-color: rgb(14 17 22 / var(--tw-bg-opacity)); -} - .bg-indigo-500 { --tw-bg-opacity: 1; background-color: rgb(99 102 241 / var(--tw-bg-opacity)); @@ -1448,6 +1677,26 @@ video { background-color: rgb(202 138 4 / var(--tw-bg-opacity)); } +.bg-gray-200 { + --tw-bg-opacity: 1; + background-color: rgb(229 231 235 / var(--tw-bg-opacity)); +} + +.bg-gray-50 { + --tw-bg-opacity: 1; + background-color: rgb(249 250 251 / var(--tw-bg-opacity)); +} + +.bg-red-400 { + --tw-bg-opacity: 1; + background-color: rgb(248 113 113 / var(--tw-bg-opacity)); +} + +.bg-blue-100 { + --tw-bg-opacity: 1; + background-color: rgb(219 234 254 / var(--tw-bg-opacity)); +} + .bg-opacity-50 { --tw-bg-opacity: 0.5; } @@ -1456,10 +1705,18 @@ video { --tw-bg-opacity: 0.8; } +.bg-opacity-70 { + --tw-bg-opacity: 0.7; +} + .fill-\[\#444\] { fill: #444; } +.fill-zinc-700 { + fill: #3f3f46; +} + .object-cover { -o-object-fit: cover; object-fit: cover; @@ -1486,28 +1743,10 @@ video { padding: 1rem; } -.p-6 { - padding: 1.5rem; -} - .p-8 { padding: 2rem; } -.p-0 { - padding: 0px; -} - -.px-12 { - padding-left: 3rem; - padding-right: 3rem; -} - -.px-16 { - padding-left: 4rem; - padding-right: 4rem; -} - .px-2 { padding-left: 0.5rem; padding-right: 0.5rem; @@ -1593,6 +1832,16 @@ video { padding-bottom: 2rem; } +.px-1 { + padding-left: 0.25rem; + padding-right: 0.25rem; +} + +.px-12 { + padding-left: 3rem; + padding-right: 3rem; +} + .pb-1 { padding-bottom: 0.25rem; } @@ -1605,6 +1854,10 @@ video { padding-bottom: 3rem; } +.pb-16 { + padding-bottom: 4rem; +} + .pb-2 { padding-bottom: 0.5rem; } @@ -1625,10 +1878,6 @@ video { padding-bottom: 1rem; } -.pb-64 { - padding-bottom: 16rem; -} - .pb-8 { padding-bottom: 2rem; } @@ -1653,6 +1902,10 @@ video { padding-left: 2rem; } +.pr-2 { + padding-right: 0.5rem; +} + .pr-4 { padding-right: 1rem; } @@ -1685,6 +1938,30 @@ video { padding-top: 1rem; } +.pt-6 { + padding-top: 1.5rem; +} + +.pb-6 { + padding-bottom: 1.5rem; +} + +.pl-1 { + padding-left: 0.25rem; +} + +.pt-8 { + padding-top: 2rem; +} + +.pt-16 { + padding-top: 4rem; +} + +.pt-32 { + padding-top: 8rem; +} + .text-left { text-align: left; } @@ -1693,18 +1970,22 @@ video { text-align: center; } -.align-middle { - vertical-align: middle; +.text-right { + text-align: right; } -.font-mono { - font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; +.align-middle { + vertical-align: middle; } .font-sans { font-family: Inter var, sans-serif; } +.font-mono { + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; +} + .text-2xl { font-size: 1.5rem; line-height: 2rem; @@ -1728,10 +2009,6 @@ video { font-size: 1.5em; } -.text-\[2em\] { - font-size: 2em; -} - .text-\[3\.3em\] { font-size: 3.3em; } @@ -1765,6 +2042,61 @@ video { line-height: 1rem; } +.text-xs\/\[8px\] { + font-size: 0.75rem; + line-height: 8px; +} + +.text-xs\/3 { + font-size: 0.75rem; + line-height: .75rem; +} + +.text-\[8px\] { + font-size: 8px; +} + +.text-\[12px\] { + font-size: 12px; +} + +.text-\[10px\] { + font-size: 10px; +} + +.text-base\/\[18px\] { + font-size: 1rem; + line-height: 18px; +} + +.text-\[\.75rem\] { + font-size: .75rem; +} + +.text-\[5em\] { + font-size: 5em; +} + +.text-\[4em\] { + font-size: 4em; +} + +.text-\[2em\] { + font-size: 2em; +} + +.text-\[2\.5em\] { + font-size: 2.5em; +} + +.text-\[1em\] { + font-size: 1em; +} + +.text-\[1\.25em\] { + font-size: 1.25em; +} + .font-bold { font-weight: 700; } @@ -1785,6 +2117,10 @@ video { font-weight: 600; } +.font-normal { + font-weight: 400; +} + .uppercase { text-transform: uppercase; } @@ -1809,6 +2145,18 @@ video { line-height: 1.25; } +.leading-3 { + line-height: .75rem; +} + +.leading-4 { + line-height: 1rem; +} + +.leading-snug { + line-height: 1.375; +} + .tracking-tight { letter-spacing: -0.025em; } @@ -1822,21 +2170,11 @@ video { color: rgb(0 0 0 / var(--tw-text-opacity)); } -.text-blue-300 { - --tw-text-opacity: 1; - color: rgb(147 197 253 / var(--tw-text-opacity)); -} - .text-blue-500 { --tw-text-opacity: 1; color: rgb(59 130 246 / var(--tw-text-opacity)); } -.text-blue-600 { - --tw-text-opacity: 1; - color: rgb(37 99 235 / var(--tw-text-opacity)); -} - .text-ghdarkmetal { --tw-text-opacity: 1; color: rgb(22 27 34 / var(--tw-text-opacity)); @@ -1887,11 +2225,6 @@ video { color: rgb(99 102 241 / var(--tw-text-opacity)); } -.text-red-400 { - --tw-text-opacity: 1; - color: rgb(248 113 113 / var(--tw-text-opacity)); -} - .text-red-500 { --tw-text-opacity: 1; color: rgb(239 68 68 / var(--tw-text-opacity)); @@ -1912,6 +2245,20 @@ video { color: rgb(255 255 255 / var(--tw-text-opacity)); } +.text-\[\] { + color: ; +} + +.text-sky-600 { + --tw-text-opacity: 1; + color: rgb(2 132 199 / var(--tw-text-opacity)); +} + +.text-sky-700 { + --tw-text-opacity: 1; + color: rgb(3 105 161 / var(--tw-text-opacity)); +} + .underline { text-decoration-line: underline; } @@ -1950,9 +2297,10 @@ video { box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } -.shadow-white { - --tw-shadow-color: #fff; - --tw-shadow: var(--tw-shadow-colored); +.shadow-lg { + --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } .outline-none { @@ -1960,6 +2308,10 @@ video { outline-offset: 2px; } +.outline { + outline-style: solid; +} + .invert { --tw-invert: invert(100%); filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); @@ -1972,7 +2324,7 @@ video { .backdrop-blur-sm { --tw-backdrop-blur: blur(4px); -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); - backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); + backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); } .transition { @@ -2007,14 +2359,6 @@ video { transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); } -/* @layer base { - - ul, - ol { - list-style: revert; - } -} */ - .hover\:-translate-y-2:hover { --tw-translate-y: -0.5rem; transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); @@ -2025,28 +2369,29 @@ video { border-color: rgb(79 70 229 / var(--tw-border-opacity)); } -.hover\:border-transparent:hover { - border-color: transparent; -} - .hover\:bg-gray-100:hover { --tw-bg-opacity: 1; background-color: rgb(243 244 246 / var(--tw-bg-opacity)); } -.hover\:bg-gray-200:hover { +.hover\:bg-gray-800:hover { --tw-bg-opacity: 1; - background-color: rgb(229 231 235 / var(--tw-bg-opacity)); + background-color: rgb(31 41 55 / var(--tw-bg-opacity)); } -.hover\:bg-gray-700:hover { +.hover\:bg-indigo-600:hover { --tw-bg-opacity: 1; - background-color: rgb(55 65 81 / var(--tw-bg-opacity)); + background-color: rgb(79 70 229 / var(--tw-bg-opacity)); } -.hover\:bg-indigo-600:hover { +.hover\:bg-gray-200:hover { --tw-bg-opacity: 1; - background-color: rgb(79 70 229 / var(--tw-bg-opacity)); + background-color: rgb(229 231 235 / var(--tw-bg-opacity)); +} + +.hover\:bg-gray-500:hover { + --tw-bg-opacity: 1; + background-color: rgb(107 114 128 / var(--tw-bg-opacity)); } .hover\:text-blue-400:hover { @@ -2059,11 +2404,6 @@ video { color: rgb(107 114 128 / var(--tw-text-opacity)); } -.hover\:text-gray-900:hover { - --tw-text-opacity: 1; - color: rgb(17 24 39 / var(--tw-text-opacity)); -} - .hover\:text-sky-500:hover { --tw-text-opacity: 1; color: rgb(14 165 233 / var(--tw-text-opacity)); @@ -2084,43 +2424,30 @@ video { box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } -.hover\:shadow-xl:hover { - --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1); - --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); -} - -.focus\:outline-none:focus { - outline: 2px solid transparent; - outline-offset: 2px; -} - -.focus\:ring-2:focus { - --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); - --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); - box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); -} - -.focus\:ring-gray-300:focus { - --tw-ring-opacity: 1; - --tw-ring-color: rgb(209 213 219 / var(--tw-ring-opacity)); +.hover\:brightness-50:hover { + --tw-brightness: brightness(.5); + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); } -.focus\:ring-gray-400:focus { - --tw-ring-opacity: 1; - --tw-ring-color: rgb(156 163 175 / var(--tw-ring-opacity)); +.hover\:brightness-95:hover { + --tw-brightness: brightness(.95); + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); } -.focus\:ring-offset-2:focus { - --tw-ring-offset-width: 2px; +.hover\:brightness-105:hover { + --tw-brightness: brightness(1.05); + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); } -.focus\:ring-offset-gray-50:focus { - --tw-ring-offset-color: #f9fafb; +.hover\:brightness-90:hover { + --tw-brightness: brightness(.9); + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); } -.focus\:ring-offset-white:focus { - --tw-ring-offset-color: #fff; +.hover\:backdrop-brightness-95:hover { + --tw-backdrop-brightness: brightness(.95); + -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); + backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); } .group:hover .group-hover\:text-gray-500 { @@ -2129,32 +2456,15 @@ video { } @media (min-width: 640px) { - .sm\:-m-4 { - margin: -1rem; - } - .sm\:mx-0 { margin-left: 0px; margin-right: 0px; } - .sm\:mx-auto { - margin-left: auto; - margin-right: auto; - } - - .sm\:mt-0 { - margin-top: 0px; - } - .sm\:block { display: block; } - .sm\:inline { - display: inline; - } - .sm\:flex { display: flex; } @@ -2171,10 +2481,6 @@ video { width: 50%; } - .sm\:w-auto { - width: auto; - } - .sm\:w-full { width: 100%; } @@ -2199,29 +2505,16 @@ video { justify-content: space-between; } - .sm\:space-x-4 > :not([hidden]) ~ :not([hidden]) { + .sm\:space-x-1 > :not([hidden]) ~ :not([hidden]) { --tw-space-x-reverse: 0; - margin-right: calc(1rem * var(--tw-space-x-reverse)); - margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse))); + margin-right: calc(0.25rem * var(--tw-space-x-reverse)); + margin-left: calc(0.25rem * calc(1 - var(--tw-space-x-reverse))); } .sm\:rounded-xl { border-radius: 0.75rem; } - .sm\:p-2 { - padding: 0.5rem; - } - - .sm\:px-6 { - padding-left: 1.5rem; - padding-right: 1.5rem; - } - - .sm\:pr-16 { - padding-right: 4rem; - } - .sm\:text-left { text-align: left; } @@ -2237,15 +2530,32 @@ video { } @media (min-width: 768px) { + .md\:sticky { + position: sticky; + } + + .md\:z-0 { + z-index: 0; + } + .md\:m-8 { margin: 2rem; } + .md\:m-4 { + margin: 1rem; + } + .md\:mx-0 { margin-left: 0px; margin-right: 0px; } + .md\:mx-2 { + margin-left: 0.5rem; + margin-right: 0.5rem; + } + .md\:mb-0 { margin-bottom: 0px; } @@ -2266,6 +2576,14 @@ video { margin-top: 0px; } + .md\:mb-32 { + margin-bottom: 8rem; + } + + .md\:mb-12 { + margin-bottom: 3rem; + } + .md\:block { display: block; } @@ -2278,30 +2596,66 @@ video { display: flex; } + .md\:hidden { + display: none; + } + .md\:h-96 { height: 24rem; } - .md\:w-1\/2 { - width: 50%; + .md\:h-\[calc\(100vh-2rem\)\] { + height: calc(100vh - 2rem); } - .md\:w-1\/4 { - width: 25%; + .md\:h-8 { + height: 2rem; + } + + .md\:h-\[calc\(100vh-4rem\)\] { + height: calc(100vh - 4rem); } - .md\:w-32 { - width: 8rem; + .md\:min-h-\[640px\] { + min-height: 640px; + } + + .md\:min-h-\[720px\] { + min-height: 720px; + } + + .md\:min-h-\[840px\] { + min-height: 840px; + } + + .md\:w-1\/2 { + width: 50%; } .md\:w-60 { width: 15rem; } + .md\:w-auto { + width: auto; + } + .md\:w-full { width: 100%; } + .md\:max-w-screen-md { + max-width: 768px; + } + + .md\:max-w-screen-2xl { + max-width: 1536px; + } + + .md\:max-w-\[360px\] { + max-width: 360px; + } + .md\:flex-1 { flex: 1 1 0%; } @@ -2330,12 +2684,42 @@ video { justify-content: flex-start; } + .md\:gap-12 { + gap: 3rem; + } + + .md\:gap-2 { + gap: 0.5rem; + } + + .md\:gap-4 { + gap: 1rem; + } + + .md\:space-x-4 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(1rem * var(--tw-space-x-reverse)); + margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse))); + } + .md\:space-y-0 > :not([hidden]) ~ :not([hidden]) { --tw-space-y-reverse: 0; margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse))); margin-bottom: calc(0px * var(--tw-space-y-reverse)); } + .md\:space-x-2 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(0.5rem * var(--tw-space-x-reverse)); + margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse))); + } + + .md\:space-x-6 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(1.5rem * var(--tw-space-x-reverse)); + margin-left: calc(1.5rem * calc(1 - var(--tw-space-x-reverse))); + } + .md\:p-2 { padding: 0.5rem; } @@ -2344,8 +2728,13 @@ video { padding: 1.5rem; } - .md\:p-8 { - padding: 2rem; + .md\:p-4 { + padding: 1rem; + } + + .md\:px-0 { + padding-left: 0px; + padding-right: 0px; } .md\:px-12 { @@ -2358,11 +2747,6 @@ video { padding-right: 4rem; } - .md\:px-2 { - padding-left: 0.5rem; - padding-right: 0.5rem; - } - .md\:px-3 { padding-left: 0.75rem; padding-right: 0.75rem; @@ -2373,6 +2757,26 @@ video { padding-bottom: 0.5rem; } + .md\:py-1 { + padding-top: 0.25rem; + padding-bottom: 0.25rem; + } + + .md\:px-2 { + padding-left: 0.5rem; + padding-right: 0.5rem; + } + + .md\:px-4 { + padding-left: 1rem; + padding-right: 1rem; + } + + .md\:py-0 { + padding-top: 0px; + padding-bottom: 0px; + } + .md\:pb-10 { padding-bottom: 2.5rem; } @@ -2385,6 +2789,26 @@ video { padding-top: 6rem; } + .md\:pt-32 { + padding-top: 8rem; + } + + .md\:pt-4 { + padding-top: 1rem; + } + + .md\:pt-8 { + padding-top: 2rem; + } + + .md\:pr-2 { + padding-right: 0.5rem; + } + + .md\:pl-2 { + padding-left: 0.5rem; + } + .md\:text-left { text-align: left; } @@ -2402,8 +2826,8 @@ video { font-size: 3.3em; } - .md\:text-\[5em\] { - font-size: 5em; + .md\:text-\[3em\] { + font-size: 3em; } .md\:text-sm { @@ -2411,9 +2835,31 @@ video { line-height: 1.25rem; } + .md\:text-xs { + font-size: 0.75rem; + line-height: 1rem; + } + + .md\:text-\[5em\] { + font-size: 5em; + } + + .md\:text-\[4em\] { + font-size: 4em; + } + + .md\:text-\[1\.2em\] { + font-size: 1.2em; + } + .md\:leading-tight { line-height: 1.25; } + + .md\:hover\:-translate-y-2:hover { + --tw-translate-y: -0.5rem; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + } } @media (min-width: 1024px) { @@ -2431,14 +2877,6 @@ video { margin-right: auto; } - .lg\:-ml-3 { - margin-left: -0.75rem; - } - - .lg\:-ml-3\.5 { - margin-left: -0.875rem; - } - .lg\:mt-0 { margin-top: 0px; } @@ -2471,14 +2909,14 @@ video { width: 25%; } - .lg\:w-2\/3 { - width: 66.666667%; - } - .lg\:w-2\/5 { width: 40%; } + .lg\:flex-1 { + flex: 1 1 0%; + } + .lg\:grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } @@ -2487,18 +2925,20 @@ video { align-items: flex-start; } - .lg\:bg-inherit { - background-color: inherit; + .lg\:justify-start { + justify-content: flex-start; } - .lg\:px-40 { - padding-left: 10rem; - padding-right: 10rem; + .lg\:gap-24 { + gap: 6rem; } - .lg\:px-64 { - padding-left: 16rem; - padding-right: 16rem; + .lg\:gap-12 { + gap: 3rem; + } + + .lg\:bg-inherit { + background-color: inherit; } .lg\:py-2 { @@ -2506,17 +2946,16 @@ video { padding-bottom: 0.5rem; } - .lg\:pl-6 { - padding-left: 1.5rem; + .lg\:pr-2 { + padding-right: 0.5rem; } - .lg\:text-5xl { - font-size: 3rem; - line-height: 1; + .lg\:text-left { + text-align: left; } - .lg\:text-6xl { - font-size: 3.75rem; + .lg\:text-5xl { + font-size: 3rem; line-height: 1; } @@ -2547,34 +2986,28 @@ video { display: block; } - .xl\:flex { - display: flex; - } - .xl\:h-\[31\.625rem\] { height: 31.625rem; } - .xl\:max-w-\[20rem\] { - max-width: 20rem; + .xl\:w-40 { + width: 10rem; } - .xl\:max-w-\[30rem\] { - max-width: 30rem; + .xl\:max-w-\[14rem\] { + max-width: 14rem; } - .xl\:grid-cols-4 { - grid-template-columns: repeat(4, minmax(0, 1fr)); + .xl\:max-w-\[16rem\] { + max-width: 16rem; } -} -@media (min-width: 1536px) { - .\32xl\:max-w-\[20rem\] { - max-width: 20rem; + .xl\:max-w-\[12rem\] { + max-width: 12rem; } - .\32xl\:max-w-\[30rem\] { - max-width: 30rem; + .xl\:grid-cols-4 { + grid-template-columns: repeat(4, minmax(0, 1fr)); } } @@ -2587,13 +3020,9 @@ video { display: none; } - .dark\:border-b { - border-bottom-width: 1px; - } - - .dark\:border-gray-500 { + .dark\:border-gray-700 { --tw-border-opacity: 1; - border-color: rgb(107 114 128 / var(--tw-border-opacity)); + border-color: rgb(55 65 81 / var(--tw-border-opacity)); } .dark\:border-gray-800 { @@ -2606,11 +3035,20 @@ video { border-color: rgb(68 64 60 / var(--tw-border-opacity)); } + .dark\:border-\[\#a4a9ac7d\] { + border-color: #a4a9ac7d; + } + .dark\:bg-\[\#111111\] { --tw-bg-opacity: 1; background-color: rgb(17 17 17 / var(--tw-bg-opacity)); } + .dark\:bg-gray-700 { + --tw-bg-opacity: 1; + background-color: rgb(55 65 81 / var(--tw-bg-opacity)); + } + .dark\:bg-gray-800 { --tw-bg-opacity: 1; background-color: rgb(31 41 55 / var(--tw-bg-opacity)); @@ -2625,9 +3063,9 @@ video { background-color: rgb(23 23 23 / 0.7); } - .dark\:bg-sky-500 { + .dark\:bg-slate-600 { --tw-bg-opacity: 1; - background-color: rgb(14 165 233 / var(--tw-bg-opacity)); + background-color: rgb(71 85 105 / var(--tw-bg-opacity)); } .dark\:bg-slate-800 { @@ -2635,10 +3073,48 @@ video { background-color: rgb(30 41 59 / var(--tw-bg-opacity)); } + .dark\:bg-ghdarkmetal { + --tw-bg-opacity: 1; + background-color: rgb(22 27 34 / var(--tw-bg-opacity)); + } + + .dark\:bg-gray-600 { + --tw-bg-opacity: 1; + background-color: rgb(75 85 99 / var(--tw-bg-opacity)); + } + + .dark\:bg-gray-300 { + --tw-bg-opacity: 1; + background-color: rgb(209 213 219 / var(--tw-bg-opacity)); + } + + .dark\:bg-gray-100 { + --tw-bg-opacity: 1; + background-color: rgb(243 244 246 / var(--tw-bg-opacity)); + } + + .dark\:bg-gray-200 { + --tw-bg-opacity: 1; + background-color: rgb(229 231 235 / var(--tw-bg-opacity)); + } + + .dark\:bg-gray-400 { + --tw-bg-opacity: 1; + background-color: rgb(156 163 175 / var(--tw-bg-opacity)); + } + + .dark\:bg-opacity-80 { + --tw-bg-opacity: 0.8; + } + .dark\:fill-white { fill: #fff; } + .dark\:fill-zinc-100 { + fill: #f4f4f5; + } + .dark\:text-\[\#dee2e6\] { --tw-text-opacity: 1; color: rgb(222 226 230 / var(--tw-text-opacity)); @@ -2705,7 +3181,7 @@ video { .dark\:backdrop-blur { --tw-backdrop-blur: blur(8px); -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); - backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); + backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); } .dark\:hover\:bg-gray-500:hover { @@ -2718,9 +3194,9 @@ video { background-color: rgb(14 17 22 / var(--tw-bg-opacity)); } - .dark\:hover\:bg-sky-400:hover { + .dark\:hover\:bg-ghdarkmetal:hover { --tw-bg-opacity: 1; - background-color: rgb(56 189 248 / var(--tw-bg-opacity)); + background-color: rgb(22 27 34 / var(--tw-bg-opacity)); } .dark\:hover\:text-gray-300:hover { @@ -2732,10 +3208,15 @@ video { --tw-text-opacity: 1; color: rgb(56 189 248 / var(--tw-text-opacity)); } + + .dark\:hover\:brightness-105:hover { + --tw-brightness: brightness(1.05); + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); + } } @media(min-height:720px) { - .\[\@media\(min-height\:720px\)\]\:min-h-\[calc\(100vh-6rem\)\] { - min-height: calc(100vh - 6rem); + .\[\@media\(min-height\:720px\)\]\:h-\[calc\(100vh\)\] { + height: calc(100vh); } } diff --git a/build.rs b/build.rs index 68341089d..8a90cbf62 100644 --- a/build.rs +++ b/build.rs @@ -1,6 +1,6 @@ use std::{env::current_dir, path::PathBuf}; -use mdbook_gen::generate_router; +use mdbook_gen::{generate_router, generate_router_build_script}; use mdbook_shared::MdBook; fn main() { @@ -10,7 +10,9 @@ fn main() { let mdbook_dir = PathBuf::from("docs-src/0.5"); let out_dir = current_dir().unwrap().join("src/docs"); - let mut out = generate_router(mdbook_dir.clone(), MdBook::new(mdbook_dir).unwrap()).to_string(); + // let mut out = generate_router(mdbook_dir.clone(), MdBook::new(mdbook_dir).unwrap()).to_string(); + + let mut out = generate_router_build_script(mdbook_dir); out.push_str("\n"); out.push_str("use super::*;\n"); diff --git a/docs-src/0.5/src/CLI/translate.md b/docs-src/0.5/src/CLI/translate.md index ccb20a1f8..3d531f51c 100644 --- a/docs-src/0.5/src/CLI/translate.md +++ b/docs-src/0.5/src/CLI/translate.md @@ -31,7 +31,7 @@ div { class: "relative w-full mx-4 sm:mx-auto text-gray-600", dioxus_prevent_default: "onclick", href: "/learn/0.5/reference", data_dioxus_id: "214", - class: "bg-blue-500 py-2 px-8 hover:-translate-y-2 transition-transform duration-300", + class: "bg-blue-500 py-2 px-8 hover:-translate-y-2 **transition**-transform duration-300", "Read the docs" } } @@ -39,19 +39,19 @@ div { class: "relative w-full mx-4 sm:mx-auto text-gray-600", h1 { class: "text-md", "Trusted by top companies" } div { class: "pt-4 flex flex-row flex-wrap justify-center", div { class: "h-12 w-40 p-2 m-4 flex justify-center items-center", - img { src: "static/futurewei_bw.png" } + img { src: "/assets/static/futurewei_bw.png" } } div { class: "h-12 w-40 p-2 m-4 flex justify-center items-center", - img { src: "static/airbuslogo.svg" } + img { src: "/assets/static/airbuslogo.svg" } } div { class: "h-12 w-40 p-2 m-4 flex justify-center items-center", - img { src: "static/ESA_logo.svg" } + img { src: "/assets/static/ESA_logo.svg" } } div { class: "h-12 w-40 p-2 m-4 flex justify-center items-center", - img { src: "static/yclogo.svg" } + img { src: "/assets/static/yclogo.svg" } } div { class: "h-12 w-40 p-2 m-4 flex justify-center items-center", - img { src: "static/satellite.webp" } + img { src: "/assets/static/satellite.webp" } } } } diff --git a/docs-src/0.5/src/SUMMARY.md b/docs-src/0.5/src/SUMMARY.md index dccc45df2..de29c9e5d 100644 --- a/docs-src/0.5/src/SUMMARY.md +++ b/docs-src/0.5/src/SUMMARY.md @@ -1,17 +1,14 @@ # Summary -[Introduction](index.md) -- [Features](getting_started/index.md) - - - +- [Introduction](index.md) + - [Roadmap](introduction/roadmap.md) --- -- [Guide](guide/index.md) +- [Tutorial](guide/index.md) - [Tooling setup](guide/tooling.md) - [Creating a new app](guide/new_app.md) - [Your First Component](guide/component.md) @@ -66,10 +63,10 @@ - [Full Code](router/example/full-code.md) - [Reference](router/reference/index.md) - [Defining Routes](router/reference/routes/index.md) - - [Nested Routes](router/reference/routes/nested.md) + - [Nested Routes](router/reference/routes/nested.md) - [Layouts](router/reference/layouts.md) - [Navigation](router/reference/navigation/index.md) - - [Programmatic Navigation](router/reference/navigation/programmatic.md) + - [Programmatic Navigation](router/reference/navigation/programmatic.md) - [History Providers](router/reference/history-providers.md) - [History Buttons](router/reference/history-buttons.md) - [Static Generation](router/reference/static-generation.md) @@ -104,7 +101,7 @@ - [Optimizing](cookbook/optimizing.md) - [Migration for 0.5](migration/index.md) - [Hooks](migration/hooks.md) - - [State](migration/state.md) + - [State](migration/state.md) - [Fermi](migration/fermi.md) - [Props](migration/props.md) diff --git a/docs-src/0.5/src/contributing/roadmap.md b/docs-src/0.5/src/contributing/roadmap.md index fbc7ce070..e69de29bb 100644 --- a/docs-src/0.5/src/contributing/roadmap.md +++ b/docs-src/0.5/src/contributing/roadmap.md @@ -1,138 +0,0 @@ -# Roadmap & Feature-set - -This feature set and roadmap can help you decide if what Dioxus can do today works for you. - -If a feature that you need doesn't exist or you want to contribute to projects on the roadmap, feel free to get involved by [joining the discord](https://discord.gg/XgGxMSkvUM). - -Generally, here's the status of each platform: - -- **Web**: Dioxus is a great choice for pure web-apps – especially for CRUD/complex apps. However, it does lack the ecosystem of React, so you might be missing a component library or some useful hook. - -- **SSR**: Dioxus is a great choice for pre-rendering, hydration, and rendering HTML on a web endpoint. Be warned – the VirtualDom is not (currently) `Send + Sync`. - -- **Desktop**: You can build very competent single-window desktop apps right now. However, multi-window apps require support from Dioxus core and are not ready. - -- **Mobile**: Mobile support is very young. You'll be figuring things out as you go and there are not many support crates for peripherals. - -- **LiveView**: LiveView support is very young. You'll be figuring things out as you go. Thankfully, none of it is too hard and any work can be upstreamed into Dioxus. - -## Features - ---- - -| Feature | Status | Description | -|---------------------------|--------|----------------------------------------------------------------------| -| Conditional Rendering | x | if/then to hide/show component | -| Map, Iterator | x | map/filter/reduce to produce rsx! | -| Keyed Components | x | advanced diffing with keys | -| Web | x | renderer for web browser | -| Desktop (webview) | x | renderer for desktop | -| Shared State (Context) | x | share state through the tree | -| Hooks | x | memory cells in components | -| SSR | x | render directly to string | -| Component Children | x | cx.children() as a list of nodes | -| Headless components | x | components that don't return real elements | -| Fragments | x | multiple elements without a real root | -| Manual Props | x | Manually pass in props with spread syntax | -| Controlled Inputs | x | stateful wrappers around inputs | -| CSS/Inline Styles | x | syntax for inline styles/attribute groups | -| Custom elements | x | Define new element primitives | -| Suspense | x | schedule future render from future/promise | -| Integrated error handling | x | Gracefully handle errors with ? syntax | -| NodeRef | x | gain direct access to nodes | -| Re-hydration | x | Pre-render to HTML to speed up first contentful paint | -| Jank-Free Rendering | x | Large diffs are segmented across frames for silky-smooth transitions | -| Effects | x | Run effects after a component has been committed to render | -| Portals | * | Render nodes outside of the traditional tree structure | -| Cooperative Scheduling | * | Prioritize important events over non-important events | -| Server Components | * | Hybrid components for SPA and Server | -| Bundle Splitting | i | Efficiently and asynchronously load the app | -| Lazy Components | i | Dynamically load the new components as the page is loaded | -| 1st class global state | x | redux/recoil/mobx on top of context | -| Runs natively | x | runs as a portable binary w/o a runtime (Node) | -| Subtree Memoization | x | skip diffing static element subtrees | -| High-efficiency templates | x | rsx! calls are translated to templates on the DOM's side | -| Compile-time correct | x | Throw errors on invalid template layouts | -| Heuristic Engine | x | track component memory usage to minimize future allocations | -| Fine-grained reactivity | i | Skip diffing for fine-grain updates | - -- x = implemented and working -- \* = actively being worked on -- i = not yet implemented or being worked on - -## Roadmap - -These Features are planned for the future of Dioxus: - -### Core - -- [x] Release of Dioxus Core -- [x] Upgrade documentation to include more theory and be more comprehensive -- [x] Support for HTML-side templates for lightning-fast dom manipulation -- [ ] Support for multiple renderers for same virtualdom (subtrees) -- [ ] Support for ThreadSafe (Send + Sync) -- [ ] Support for Portals - -### SSR - -- [x] SSR Support + Hydration -- [x] Integrated suspense support for SSR - -### Desktop - -- [ ] Declarative window management -- [ ] Templates for building/bundling -- [ ] Access to Canvas/WebGL context natively - -### Mobile - -- [ ] Mobile standard library - - [ ] GPS - - [ ] Camera - - [ ] filesystem - - [ ] Biometrics - - [ ] WiFi - - [ ] Bluetooth - - [ ] Notifications - - [ ] Clipboard -- [ ] Animations - -### Bundling (CLI) - -- [x] Translation from HTML into RSX -- [x] Dev server -- [x] Live reload -- [x] Translation from JSX into RSX -- [ ] Hot module replacement -- [ ] Code splitting -- [x] Asset macros -- [x] Css pipeline -- [x] Image pipeline - -### Essential hooks - -- [x] Router -- [x] Global state management -- [ ] Resize observer - -## Work in Progress - -### Build Tool - -We are currently working on our own build tool called [Dioxus CLI](https://github.com/DioxusLabs/dioxus/tree/main/packages/cli) which will support: - -- an interactive TUI -- on-the-fly reconfiguration -- hot CSS reloading -- two-way data binding between browser and source code -- an interpreter for `rsx!` -- ability to publish to github/netlify/vercel -- bundling for iOS/Desktop/etc - -### Server Component Support - -While not currently fully implemented, the expectation is that LiveView apps can be a hybrid between Wasm and server-rendered where only portions of a page are "live" and the rest of the page is either server-rendered, statically generated, or handled by the host SPA. - -### Native rendering - -We are currently working on a native renderer for Dioxus using WGPU called [Blitz](https://github.com/DioxusLabs/blitz/). This will allow you to build apps that are rendered natively for iOS, Android, and Desktop. diff --git a/docs-src/0.5/src/getting_started/features.md b/docs-src/0.5/src/getting_started/features.md index 8ba333cfe..b57a8a5d7 100644 --- a/docs-src/0.5/src/getting_started/features.md +++ b/docs-src/0.5/src/getting_started/features.md @@ -1 +1,6 @@ -omg it has features! +# A quick overview of Dioxus and its features + +Wait what I thought we could just add things? + + +hmmm diff --git a/docs-src/0.5/src/getting_started/index.md b/docs-src/0.5/src/getting_started/index.md deleted file mode 100644 index 0b905a183..000000000 --- a/docs-src/0.5/src/getting_started/index.md +++ /dev/null @@ -1,94 +0,0 @@ -# Getting Started - -This section will help you set up your Dioxus project! - -## Prerequisites - -### An Editor - -Dioxus integrates very well with the [Rust-Analyzer LSP plugin](https://rust-analyzer.github.io) which will provide appropriate syntax highlighting, code navigation, folding, and more. - -### Rust - -Head over to [https://rust-lang.org](http://rust-lang.org) and install the Rust compiler. - -We strongly recommend going through the [official Rust book](https://doc.rust-lang.org/book/ch01-00-getting-started.html) _completely_. However, we hope that a Dioxus app can serve as a great first Rust project. With Dioxus, you'll learn about: - -- Error handling -- Structs, Functions, Enums -- Closures -- Macros - -We've put a lot of care into making Dioxus syntax familiar and easy to understand, so you won't need deep knowledge of async, lifetimes, or smart pointers until you start building complex Dioxus apps. - -### Platform-specific dependencies - -Most platforms don't require any additional dependencies, but if you are targeting desktop, you can install the following dependencies: - -```inject-dioxus -DesktopDependencies {} -``` - -### Dioxus CLI - -Next, lets install the Dioxus CLI: - -``` -cargo install dioxus-cli -``` - -If you get an OpenSSL error on installation, ensure the dependencies listed [here](https://docs.rs/openssl/latest/openssl/#automatic) are installed. - -## Create a new project - -You can create a new Dioxus project by running the following command and following the prompts: - -```sh -dx new -``` - -```inject-dioxus -video { - "type": "video/mp4", - "name": "dx new demo", - autoplay: "true", - controls: "false", - r#loop: "true", - width: "800px", - muted: "true", - source { - src: asset!("/public/static/dioxus-new.mov"), - } -} -``` - -First you will need to select a platform. Each platform has its own reference with more information on how to set up a project for that platform. Here are the platforms we recommend starting with: - -- Web - - [Client Side](../reference/web/index.md): runs in the browser through WebAssembly - - [Fullstack](../reference/fullstack/index.md): renders to HTML text on the server and hydrates it on the client -> If you are not sure which web platform you want to use, check out the [choosing a web renderer](choosing_a_web_renderer.md) chapter. -- WebView - - [Desktop](../reference/desktop/index.md): runs in a web view on desktop - - [Mobile](../reference/mobile/index.md): runs in a web view on mobile. Mobile is currently not supported by the dioxus CLI. The [mobile reference](../reference/mobile/index.md) has more information about setting up a mobile project - -Next, you can choose a styling library. For this project, we will use vanilla CSS. - -Finally, you can choose to start the project with the router enabled. The router is covered in the [router guide](../router/index.md). - -## Running the project - -Once you have created your project, you can start it with the following command: - -```sh -cd my_project -dx serve -``` - -For projects using the liveview template, run `dx serve --desktop`. - -For Web targets the application will be served at [http://localhost:8080](http://localhost:8080) - -## Conclusion - -That's it! You now have a working Dioxus project. You can continue learning about dioxus by [making a hackernews clone in the guide](../guide/index.md), or learning about specific topics/platforms in the [reference](../reference/index.md). If you have any questions, feel free to ask in the [discord](https://discord.gg/XgGxMSkvUM) or [open a discussion](https://github.com/DioxusLabs/dioxus/discussions). diff --git a/docs-src/0.5/src/guide/new_app.md b/docs-src/0.5/src/guide/new_app.md index e69de29bb..50611e8c1 100644 --- a/docs-src/0.5/src/guide/new_app.md +++ b/docs-src/0.5/src/guide/new_app.md @@ -0,0 +1,54 @@ + +## Create a new project + +You can create a new Dioxus project by running the following command and following the prompts: + +```sh +dx new +``` + +```inject-dioxus +video { + "type": "video/mp4", + "name": "dx new demo", + autoplay: "true", + controls: "false", + r#loop: "true", + width: "800px", + muted: "true", + source { + src: asset!("/assets/static/dioxus-new.mov"), + } +} +``` + +First you will need to select a platform. Each platform has its own reference with more information on how to set up a project for that platform. Here are the platforms we recommend starting with: + +- Web + - [Client Side](../reference/web/index.md): runs in the browser through WebAssembly + - [Fullstack](../reference/fullstack/index.md): renders to HTML text on the server and hydrates it on the client +> If you are not sure which web platform you want to use, check out the [choosing a web renderer](choosing_a_web_renderer.md) chapter. +- WebView + - [Desktop](../reference/desktop/index.md): runs in a web view on desktop + - [Mobile](../reference/mobile/index.md): runs in a web view on mobile. Mobile is currently not supported by the dioxus CLI. The [mobile reference](../reference/mobile/index.md) has more information about setting up a mobile project + +Next, you can choose a styling library. For this project, we will use vanilla CSS. + +Finally, you can choose to start the project with the router enabled. The router is covered in the [router guide](../router/index.md). + +## Running the project + +Once you have created your project, you can start it with the following command: + +```sh +cd my_project +dx serve +``` + +For projects using the liveview template, run `dx serve --desktop`. + +For Web targets the application will be served at [http://localhost:8080](http://localhost:8080) + +## Conclusion + +That's it! You now have a working Dioxus project. You can continue learning about dioxus by [making a hackernews clone in the guide](../guide/index.md), or learning about specific topics/platforms in the [reference](../reference/index.md). If you have any questions, feel free to ask in the [discord](https://discord.gg/XgGxMSkvUM) or [open a discussion](https://github.com/DioxusLabs/dioxus/discussions). diff --git a/docs-src/0.5/src/guide/tooling.md b/docs-src/0.5/src/guide/tooling.md index e69de29bb..584f7bc9d 100644 --- a/docs-src/0.5/src/guide/tooling.md +++ b/docs-src/0.5/src/guide/tooling.md @@ -0,0 +1,40 @@ +# Setting up Tooling + +This section will help you install the necessary tooling to get started with Dioxus. You'll need an editor, Rust, and the Dioxus CLI. + +## Prerequisites + +### An Editor + +Dioxus integrates very well with the [Rust-Analyzer LSP plugin](https://rust-analyzer.github.io) which will provide appropriate syntax highlighting, code navigation, folding, and more. + +### Rust + +Head over to [https://rust-lang.org](http://rust-lang.org) and install the Rust compiler. + +We strongly recommend going through the [official Rust book](https://doc.rust-lang.org/book/ch01-00-getting-started.html) _completely_. However, we hope that a Dioxus app can serve as a great first Rust project. With Dioxus, you'll learn about: + +- Error handling +- Structs, Functions, Enums +- Closures +- Macros + +We've put a lot of care into making Dioxus syntax familiar and easy to understand, so you won't need deep knowledge of async, lifetimes, or smart pointers until you start building complex Dioxus apps. + +### Platform-specific dependencies + +Most platforms don't require any additional dependencies, but if you are targeting desktop, you can install the following dependencies: + +```inject-dioxus +DesktopDependencies {} +``` + +### Dioxus CLI + +Next, lets install the Dioxus CLI: + +``` +cargo install dioxus-cli +``` + +If you get an OpenSSL error on installation, ensure the dependencies listed [here](https://docs.rs/openssl/latest/openssl/#automatic) are installed. diff --git a/docs-src/0.5/src/guide/your_first_component.md b/docs-src/0.5/src/guide/your_first_component.md index 7d781c857..e10384f8d 100644 --- a/docs-src/0.5/src/guide/your_first_component.md +++ b/docs-src/0.5/src/guide/your_first_component.md @@ -14,7 +14,7 @@ dx new The template contains some boilerplate to help you get started. For this guide, we will be rebuilding some of the code from scratch for learning purposes. You can clear the `src/main.rs` file. We will be adding new code in the next sections. -Next, let's setup our dependencies. We need to set up a few dependencies to work with the hacker news API: +Next, let's setup our dependencies. We need to set up a few dependencies to work with the hacker news API: ```sh cargo add chrono --features serde @@ -27,7 +27,7 @@ cargo add async_recursion ## Describing the UI -Now, we can define how to display a post. Dioxus is a *declarative* framework. This means that instead of telling Dioxus what to do (e.g. to "create an element" or "set the color to red") we simply *declare* how we want the UI to look. +Now, we can define how to display a post. Dioxus is a *declarative* framework. This means that instead of telling Dioxus what to do (e.g. to "create an element" or "set the color to red") we simply *declare* how we want the UI to look. To declare what you want your UI to look like, you will need to use the `rsx` macro. Let's create a ``main`` function and an ``App`` component to show information about our story: @@ -44,16 +44,16 @@ DemoFrame { ``` > RSX mirrors HTML. Because of this you will need to know some html to use Dioxus. -> +> > Here are some resources to help get you started learning HTML: > - [MDN HTML Guide](https://developer.mozilla.org/en-US/docs/Learn/HTML) > - [W3 Schools HTML Tutorial](https://www.w3schools.com/html/default.asp) -> +> > In addition to HTML, Dioxus uses CSS to style applications. You can either use traditional CSS (what this guide uses) or use a tool like [tailwind CSS](https://tailwindcss.com/docs/installation): > - [MDN Traditional CSS Guide](https://developer.mozilla.org/en-US/docs/Learn/HTML) > - [W3 Schools Traditional CSS Tutorial](https://www.w3schools.com/css/default.asp) > - [Tailwind tutorial](https://tailwindcss.com/docs/installation) (used with the [Tailwind setup example](https://github.com/DioxusLabs/dioxus/tree/main/examples/tailwind)) -> +> > If you have existing html code, you can use the [translate](../CLI/translate.md) command to convert it to RSX. Or if you prefer to write html, you can use the [html! macro](https://github.com/DioxusLabs/dioxus-html-macro) to write html directly in your code. ## Dynamic Text diff --git a/docs-src/0.5/src/introduction/resources.md b/docs-src/0.5/src/introduction/resources.md new file mode 100644 index 000000000..2e7437d32 --- /dev/null +++ b/docs-src/0.5/src/introduction/resources.md @@ -0,0 +1 @@ +# Helpful resources diff --git a/docs-src/0.5/src/introduction/roadmap.md b/docs-src/0.5/src/introduction/roadmap.md new file mode 100644 index 000000000..c3769cb02 --- /dev/null +++ b/docs-src/0.5/src/introduction/roadmap.md @@ -0,0 +1,138 @@ +# Roadmap + +This feature set and roadmap can help you decide if what Dioxus can do today works for you. + +If a feature that you need doesn't exist or you want to contribute to projects on the roadmap, feel free to get involved by [joining the discord](https://discord.gg/XgGxMSkvUM). + +Generally, here's the status of each platform: + +- **Web**: Dioxus is a great choice for pure web-apps – especially for CRUD/complex apps. However, it does lack the ecosystem of React, so you might be missing a component library or some useful hook. + +- **SSR**: Dioxus is a great choice for pre-rendering, hydration, and rendering HTML on a web endpoint. Be warned – the VirtualDom is not (currently) `Send + Sync`. + +- **Desktop**: You can build very competent single-window desktop apps right now. However, multi-window apps require support from Dioxus core and are not ready. + +- **Mobile**: Mobile support is very young. You'll be figuring things out as you go and there are not many support crates for peripherals. + +- **LiveView**: LiveView support is very young. You'll be figuring things out as you go. Thankfully, none of it is too hard and any work can be upstreamed into Dioxus. + +## Features + +--- + +| Feature | Status | Description | +| ------------------------- | ------ | -------------------------------------------------------------------- | +| Conditional Rendering | x | if/then to hide/show component | +| Map, Iterator | x | map/filter/reduce to produce rsx! | +| Keyed Components | x | advanced diffing with keys | +| Web | x | renderer for web browser | +| Desktop (webview) | x | renderer for desktop | +| Shared State (Context) | x | share state through the tree | +| Hooks | x | memory cells in components | +| SSR | x | render directly to string | +| Component Children | x | cx.children() as a list of nodes | +| Headless components | x | components that don't return real elements | +| Fragments | x | multiple elements without a real root | +| Manual Props | x | Manually pass in props with spread syntax | +| Controlled Inputs | x | stateful wrappers around inputs | +| CSS/Inline Styles | x | syntax for inline styles/attribute groups | +| Custom elements | x | Define new element primitives | +| Suspense | x | schedule future render from future/promise | +| Integrated error handling | x | Gracefully handle errors with ? syntax | +| NodeRef | x | gain direct access to nodes | +| Re-hydration | x | Pre-render to HTML to speed up first contentful paint | +| Jank-Free Rendering | x | Large diffs are segmented across frames for silky-smooth transitions | +| Effects | x | Run effects after a component has been committed to render | +| Portals | * | Render nodes outside of the traditional tree structure | +| Cooperative Scheduling | * | Prioritize important events over non-important events | +| Server Components | * | Hybrid components for SPA and Server | +| Bundle Splitting | i | Efficiently and asynchronously load the app | +| Lazy Components | i | Dynamically load the new components as the page is loaded | +| 1st class global state | x | redux/recoil/mobx on top of context | +| Runs natively | x | runs as a portable binary w/o a runtime (Node) | +| Subtree Memoization | x | skip diffing static element subtrees | +| High-efficiency templates | x | rsx! calls are translated to templates on the DOM's side | +| Compile-time correct | x | Throw errors on invalid template layouts | +| Heuristic Engine | x | track component memory usage to minimize future allocations | +| Fine-grained reactivity | i | Skip diffing for fine-grain updates | + +- x = implemented and working +- \* = actively being worked on +- i = not yet implemented or being worked on + +## Roadmap + +These Features are planned for the future of Dioxus: + +### Core + +- [x] Release of Dioxus Core +- [x] Upgrade documentation to include more theory and be more comprehensive +- [x] Support for HTML-side templates for lightning-fast dom manipulation +- [ ] Support for multiple renderers for same virtualdom (subtrees) +- [ ] Support for ThreadSafe (Send + Sync) +- [ ] Support for Portals + +### SSR + +- [x] SSR Support + Hydration +- [x] Integrated suspense support for SSR + +### Desktop + +- [ ] Declarative window management +- [ ] Templates for building/bundling +- [ ] Access to Canvas/WebGL context natively + +### Mobile + +- [ ] Mobile standard library + - [ ] GPS + - [ ] Camera + - [ ] filesystem + - [ ] Biometrics + - [ ] WiFi + - [ ] Bluetooth + - [ ] Notifications + - [ ] Clipboard +- [ ] Animations + +### Bundling (CLI) + +- [x] Translation from HTML into RSX +- [x] Dev server +- [x] Live reload +- [x] Translation from JSX into RSX +- [ ] Hot module replacement +- [ ] Code splitting +- [x] Asset macros +- [x] Css pipeline +- [x] Image pipeline + +### Essential hooks + +- [x] Router +- [x] Global state management +- [ ] Resize observer + +## Work in Progress + +### Build Tool + +We are currently working on our own build tool called [Dioxus CLI](https://github.com/DioxusLabs/dioxus/tree/main/packages/cli) which will support: + +- an interactive TUI +- on-the-fly reconfiguration +- hot CSS reloading +- two-way data binding between browser and source code +- an interpreter for `rsx!` +- ability to publish to github/netlify/vercel +- bundling for iOS/Desktop/etc + +### Server Component Support + +While not currently fully implemented, the expectation is that LiveView apps can be a hybrid between Wasm and server-rendered where only portions of a page are "live" and the rest of the page is either server-rendered, statically generated, or handled by the host SPA. + +### Native rendering + +We are currently working on a native renderer for Dioxus using WGPU called [Blitz](https://github.com/DioxusLabs/blitz/). This will allow you to build apps that are rendered natively for iOS, Android, and Desktop. diff --git a/public/main.css b/public/main.css deleted file mode 100644 index fdf364c20..000000000 --- a/public/main.css +++ /dev/null @@ -1,172 +0,0 @@ -.docs-links::-webkit-scrollbar, -.docs-toc::-webkit-scrollbar { - width: 5px -} - -.docs-links::-webkit-scrollbar-track, -.docs-toc::-webkit-scrollbar-track { - /* background: #fff */ -} - -.docs-links::-webkit-scrollbar-thumb, -.docs-toc::-webkit-scrollbar-thumb { - background: #fff -} - -.docs-links { - scrollbar-color: #212529 #212529 -} - -.docs-links:hover, -.docs-toc:hover { - scrollbar-width: thin; - scrollbar-color: #e9ecef #fff -} - -.docs-links:hover::-webkit-scrollbar-thumb, -.docs-toc:hover::-webkit-scrollbar-thumb { - background: #e9ecef -} - -.docs-links::-webkit-scrollbar-thumb:hover, -.docs-toc::-webkit-scrollbar-thumb:hover { - background: #e9ecef -} - -html.dark .docs-links, -html.dark .docs-toc { - scrollbar-width: thin; - scrollbar-color: #212529 #212529 -} - -.docs-links, -.docs-toc { - scrollbar-width: thin; - scrollbar-color: #212529 #212529 -} -/* Adds border bottom to everything but the first and last chapters */ -.docs-links .full-chapter:not(:last-child):not(:first-child) { - border-bottom: 1px solid #2125297e; -} - -.docs-links .full-chapter:first-child>h3 { - padding-top: 0px !important; - margin-top: 0px !important; -} - - -.docs-links { - list-style: none; - max-height: calc(100vh - 4rem); - top: 4rem; - /* z-index: 1000; */ -} - - -.markdown-body { - box-sizing: border-box; - min-width: 200px; - /* max-width: 980px; - margin: 0 5%; */ - /* padding: 45px; */ - list-style: disc; -} - -.markdown-body button {} - - - -@media (max-width: 767px) { - .markdown-body { - /* padding: 15px; */ - } -} - -.main-side-nav { - max-height: calc(100vh - 4rem); - overflow: scroll; -} - -/* on small screens we want to hide the copy div -we have to select it based on the content since the styling is buried deep in mdbook -It's so unliklely anyone is copying text on mobile that we can just hide it -*/ -@media (max-width: 767px) { - .markdown-body button[onclick="navigator.clipboard.writeText(this.previousElementSibling.innerText)"] { - display: none; - } -} - - -.dioxus-demo div input form button { - all: revert; -} - -.dioxus-demo input { - border: 1px solid #ced4da; - border-radius: 5px; - padding: 5px; - margin: 5px; - max-width: 150px; -} - -.dioxus-show { - z-index: 10000; - visibility: visible; - transition: opacity 0.1s, scale 0.1s; - opacity: 1; - scale: 1; -} - -.dioxus-hide { - z-index: -1; - visibility: hidden; - opacity: 0; - scale: 1.1 -} - - - -.dioxus-demo { - border-width: 3px; -} - -.markdown-body ul { - list-style: disc; -} - -.markdown-body li { - display: list-item; -} - -.markdown-body ol { - list-style: decimal; -} - -.dioxus-blog-post img { - max-height: 500px; - margin-left: auto; - margin-right: auto; - padding-left: 4px; - padding-right: 4px; -} - -.highlight pre, -.markdown-body pre { - background-color: #1e1e1e -} - -.dioxus-blog-post h1 { - text-align: center; -} - -.dioxus-blog-post h1, -.dioxus-blog-post h2 { - margin-top: 72px; -} - -.navbar_externalArrow___VWBd { - position: absolute; - top: 4px; - right: 0px; -} diff --git a/public/tailwind.css b/public/tailwind.css deleted file mode 100644 index 4a27d068b..000000000 --- a/public/tailwind.css +++ /dev/null @@ -1,2493 +0,0 @@ -/* -! tailwindcss v3.3.2 | MIT License | https://tailwindcss.com -*/ - -/* -1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) -2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116) -*/ - -*, -::before, -::after { - box-sizing: border-box; - /* 1 */ - border-width: 0; - /* 2 */ - border-style: solid; - /* 2 */ - border-color: #e5e7eb; - /* 2 */ -} - -::before, -::after { - --tw-content: ''; -} - -/* -1. Use a consistent sensible line-height in all browsers. -2. Prevent adjustments of font size after orientation changes in iOS. -3. Use a more readable tab size. -4. Use the user's configured `sans` font-family by default. -5. Use the user's configured `sans` font-feature-settings by default. -6. Use the user's configured `sans` font-variation-settings by default. -*/ - -html { - line-height: 1.5; - /* 1 */ - -webkit-text-size-adjust: 100%; - /* 2 */ - -moz-tab-size: 4; - /* 3 */ - -o-tab-size: 4; - tab-size: 4; - /* 3 */ - font-family: Inter var, sans-serif; - /* 4 */ - font-feature-settings: normal; - /* 5 */ - font-variation-settings: normal; - /* 6 */ -} - -/* -1. Remove the margin in all browsers. -2. Inherit line-height from `html` so users can set them as a class directly on the `html` element. -*/ - -body { - margin: 0; - /* 1 */ - line-height: inherit; - /* 2 */ -} - -/* -1. Add the correct height in Firefox. -2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) -3. Ensure horizontal rules are visible by default. -*/ - -hr { - height: 0; - /* 1 */ - color: inherit; - /* 2 */ - border-top-width: 1px; - /* 3 */ -} - -/* -Add the correct text decoration in Chrome, Edge, and Safari. -*/ - -abbr:where([title]) { - -webkit-text-decoration: underline dotted; - text-decoration: underline dotted; -} - -/* -Remove the default font size and weight for headings. -*/ - -h1, -h2, -h3, -h4, -h5, -h6 { - font-size: inherit; - font-weight: inherit; -} - -/* -Reset links to optimize for opt-in styling instead of opt-out. -*/ - -a { - color: inherit; - text-decoration: inherit; -} - -/* -Add the correct font weight in Edge and Safari. -*/ - -b, -strong { - font-weight: bolder; -} - -/* -1. Use the user's configured `mono` font family by default. -2. Correct the odd `em` font sizing in all browsers. -*/ - -code, -kbd, -samp, -pre { - font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - /* 1 */ - font-size: 1em; - /* 2 */ -} - -/* -Add the correct font size in all browsers. -*/ - -small { - font-size: 80%; -} - -/* -Prevent `sub` and `sup` elements from affecting the line height in all browsers. -*/ - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -/* -1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) -2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) -3. Remove gaps between table borders by default. -*/ - -table { - text-indent: 0; - /* 1 */ - border-color: inherit; - /* 2 */ - border-collapse: collapse; - /* 3 */ -} - -/* -1. Change the font styles in all browsers. -2. Remove the margin in Firefox and Safari. -3. Remove default padding in all browsers. -*/ - -button, -input, -optgroup, -select, -textarea { - font-family: inherit; - /* 1 */ - font-size: 100%; - /* 1 */ - font-weight: inherit; - /* 1 */ - line-height: inherit; - /* 1 */ - color: inherit; - /* 1 */ - margin: 0; - /* 2 */ - padding: 0; - /* 3 */ -} - -/* -Remove the inheritance of text transform in Edge and Firefox. -*/ - -button, -select { - text-transform: none; -} - -/* -1. Correct the inability to style clickable types in iOS and Safari. -2. Remove default button styles. -*/ - -button, -[type='button'], -[type='reset'], -[type='submit'] { - -webkit-appearance: button; - /* 1 */ - background-color: transparent; - /* 2 */ - background-image: none; - /* 2 */ -} - -/* -Use the modern Firefox focus style for all focusable elements. -*/ - -:-moz-focusring { - outline: auto; -} - -/* -Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) -*/ - -:-moz-ui-invalid { - box-shadow: none; -} - -/* -Add the correct vertical alignment in Chrome and Firefox. -*/ - -progress { - vertical-align: baseline; -} - -/* -Correct the cursor style of increment and decrement buttons in Safari. -*/ - -::-webkit-inner-spin-button, -::-webkit-outer-spin-button { - height: auto; -} - -/* -1. Correct the odd appearance in Chrome and Safari. -2. Correct the outline style in Safari. -*/ - -[type='search'] { - -webkit-appearance: textfield; - /* 1 */ - outline-offset: -2px; - /* 2 */ -} - -/* -Remove the inner padding in Chrome and Safari on macOS. -*/ - -::-webkit-search-decoration { - -webkit-appearance: none; -} - -/* -1. Correct the inability to style clickable types in iOS and Safari. -2. Change font properties to `inherit` in Safari. -*/ - -::-webkit-file-upload-button { - -webkit-appearance: button; - /* 1 */ - font: inherit; - /* 2 */ -} - -/* -Add the correct display in Chrome and Safari. -*/ - -summary { - display: list-item; -} - -/* -Removes the default spacing and border for appropriate elements. -*/ - -blockquote, -dl, -dd, -h1, -h2, -h3, -h4, -h5, -h6, -hr, -figure, -p, -pre { - margin: 0; -} - -fieldset { - margin: 0; - padding: 0; -} - -legend { - padding: 0; -} - -ol, -ul, -menu { - list-style: none; - margin: 0; - padding: 0; -} - -/* -Prevent resizing textareas horizontally by default. -*/ - -textarea { - resize: vertical; -} - -/* -1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) -2. Set the default placeholder color to the user's configured gray 400 color. -*/ - -input::-moz-placeholder, textarea::-moz-placeholder { - opacity: 1; - /* 1 */ - color: #9ca3af; - /* 2 */ -} - -input::placeholder, -textarea::placeholder { - opacity: 1; - /* 1 */ - color: #9ca3af; - /* 2 */ -} - -/* -Set the default cursor for buttons. -*/ - -button, -[role="button"] { - cursor: pointer; -} - -/* -Make sure disabled buttons don't get the pointer cursor. -*/ - -:disabled { - cursor: default; -} - -/* -1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) -2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) - This can trigger a poorly considered lint error in some tools but is included by design. -*/ - -img, -svg, -video, -canvas, -audio, -iframe, -embed, -object { - display: block; - /* 1 */ - vertical-align: middle; - /* 2 */ -} - -/* -Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) -*/ - -img, -video { - max-width: 100%; - height: auto; -} - -/* Make elements with the HTML hidden attribute stay hidden by default */ - -[hidden] { - display: none; -} - -*, ::before, ::after { - --tw-border-spacing-x: 0; - --tw-border-spacing-y: 0; - --tw-translate-x: 0; - --tw-translate-y: 0; - --tw-rotate: 0; - --tw-skew-x: 0; - --tw-skew-y: 0; - --tw-scale-x: 1; - --tw-scale-y: 1; - --tw-pan-x: ; - --tw-pan-y: ; - --tw-pinch-zoom: ; - --tw-scroll-snap-strictness: proximity; - --tw-gradient-from-position: ; - --tw-gradient-via-position: ; - --tw-gradient-to-position: ; - --tw-ordinal: ; - --tw-slashed-zero: ; - --tw-numeric-figure: ; - --tw-numeric-spacing: ; - --tw-numeric-fraction: ; - --tw-ring-inset: ; - --tw-ring-offset-width: 0px; - --tw-ring-offset-color: #fff; - --tw-ring-color: rgb(59 130 246 / 0.5); - --tw-ring-offset-shadow: 0 0 #0000; - --tw-ring-shadow: 0 0 #0000; - --tw-shadow: 0 0 #0000; - --tw-shadow-colored: 0 0 #0000; - --tw-blur: ; - --tw-brightness: ; - --tw-contrast: ; - --tw-grayscale: ; - --tw-hue-rotate: ; - --tw-invert: ; - --tw-saturate: ; - --tw-sepia: ; - --tw-drop-shadow: ; - --tw-backdrop-blur: ; - --tw-backdrop-brightness: ; - --tw-backdrop-contrast: ; - --tw-backdrop-grayscale: ; - --tw-backdrop-hue-rotate: ; - --tw-backdrop-invert: ; - --tw-backdrop-opacity: ; - --tw-backdrop-saturate: ; - --tw-backdrop-sepia: ; -} - -::backdrop { - --tw-border-spacing-x: 0; - --tw-border-spacing-y: 0; - --tw-translate-x: 0; - --tw-translate-y: 0; - --tw-rotate: 0; - --tw-skew-x: 0; - --tw-skew-y: 0; - --tw-scale-x: 1; - --tw-scale-y: 1; - --tw-pan-x: ; - --tw-pan-y: ; - --tw-pinch-zoom: ; - --tw-scroll-snap-strictness: proximity; - --tw-gradient-from-position: ; - --tw-gradient-via-position: ; - --tw-gradient-to-position: ; - --tw-ordinal: ; - --tw-slashed-zero: ; - --tw-numeric-figure: ; - --tw-numeric-spacing: ; - --tw-numeric-fraction: ; - --tw-ring-inset: ; - --tw-ring-offset-width: 0px; - --tw-ring-offset-color: #fff; - --tw-ring-color: rgb(59 130 246 / 0.5); - --tw-ring-offset-shadow: 0 0 #0000; - --tw-ring-shadow: 0 0 #0000; - --tw-shadow: 0 0 #0000; - --tw-shadow-colored: 0 0 #0000; - --tw-blur: ; - --tw-brightness: ; - --tw-contrast: ; - --tw-grayscale: ; - --tw-hue-rotate: ; - --tw-invert: ; - --tw-saturate: ; - --tw-sepia: ; - --tw-drop-shadow: ; - --tw-backdrop-blur: ; - --tw-backdrop-brightness: ; - --tw-backdrop-contrast: ; - --tw-backdrop-grayscale: ; - --tw-backdrop-hue-rotate: ; - --tw-backdrop-invert: ; - --tw-backdrop-opacity: ; - --tw-backdrop-saturate: ; - --tw-backdrop-sepia: ; -} - -.container { - width: 100%; -} - -@media (min-width: 640px) { - .container { - max-width: 640px; - } -} - -@media (min-width: 768px) { - .container { - max-width: 768px; - } -} - -@media (min-width: 1024px) { - .container { - max-width: 1024px; - } -} - -@media (min-width: 1280px) { - .container { - max-width: 1280px; - } -} - -@media (min-width: 1536px) { - .container { - max-width: 1536px; - } -} - -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border-width: 0; -} - -.static { - position: static; -} - -.fixed { - position: fixed; -} - -.absolute { - position: absolute; -} - -.relative { - position: relative; -} - -.sticky { - position: sticky; -} - -.inset-0 { - inset: 0px; -} - -.inset-x-0 { - left: 0px; - right: 0px; -} - -.bottom-0 { - bottom: 0px; -} - -.left-0 { - left: 0px; -} - -.top-0 { - top: 0px; -} - -.top-28 { - top: 7rem; -} - -.isolate { - isolation: isolate; -} - -.z-10 { - z-index: 10; -} - -.z-20 { - z-index: 20; -} - -.z-30 { - z-index: 30; -} - -.z-50 { - z-index: 50; -} - -.z-\[100\] { - z-index: 100; -} - -.-m-4 { - margin: -1rem; -} - -.m-0 { - margin: 0px; -} - -.m-1 { - margin: 0.25rem; -} - -.m-2 { - margin: 0.5rem; -} - -.m-4 { - margin: 1rem; -} - -.m-5 { - margin: 1.25rem; -} - -.-mx-4 { - margin-left: -1rem; - margin-right: -1rem; -} - -.-my-8 { - margin-top: -2rem; - margin-bottom: -2rem; -} - -.mx-2 { - margin-left: 0.5rem; - margin-right: 0.5rem; -} - -.mx-auto { - margin-left: auto; - margin-right: auto; -} - -.my-2 { - margin-top: 0.5rem; - margin-bottom: 0.5rem; -} - -.my-3 { - margin-top: 0.75rem; - margin-bottom: 0.75rem; -} - -.my-4 { - margin-top: 1rem; - margin-bottom: 1rem; -} - -.my-8 { - margin-top: 2rem; - margin-bottom: 2rem; -} - -.my-auto { - margin-top: auto; - margin-bottom: auto; -} - -.-mb-10 { - margin-bottom: -2.5rem; -} - -.mb-1 { - margin-bottom: 0.25rem; -} - -.mb-10 { - margin-bottom: 2.5rem; -} - -.mb-12 { - margin-bottom: 3rem; -} - -.mb-2 { - margin-bottom: 0.5rem; -} - -.mb-20 { - margin-bottom: 5rem; -} - -.mb-3 { - margin-bottom: 0.75rem; -} - -.mb-4 { - margin-bottom: 1rem; -} - -.mb-6 { - margin-bottom: 1.5rem; -} - -.mb-8 { - margin-bottom: 2rem; -} - -.ml-1 { - margin-left: 0.25rem; -} - -.ml-12 { - margin-left: 3rem; -} - -.ml-2 { - margin-left: 0.5rem; -} - -.ml-3 { - margin-left: 0.75rem; -} - -.ml-4 { - margin-left: 1rem; -} - -.ml-auto { - margin-left: auto; -} - -.mr-4 { - margin-right: 1rem; -} - -.mt-10 { - margin-top: 2.5rem; -} - -.mt-2 { - margin-top: 0.5rem; -} - -.mt-4 { - margin-top: 1rem; -} - -.mt-auto { - margin-top: auto; -} - -.block { - display: block; -} - -.inline { - display: inline; -} - -.flex { - display: flex; -} - -.inline-flex { - display: inline-flex; -} - -.table { - display: table; -} - -.grid { - display: grid; -} - -.contents { - display: contents; -} - -.hidden { - display: none; -} - -.h-10 { - height: 2.5rem; -} - -.h-12 { - height: 3rem; -} - -.h-16 { - height: 4rem; -} - -.h-2 { - height: 0.5rem; -} - -.h-2\.5 { - height: 0.625rem; -} - -.h-4 { - height: 1rem; -} - -.h-40 { - height: 10rem; -} - -.h-5 { - height: 1.25rem; -} - -.h-6 { - height: 1.5rem; -} - -.h-64 { - height: 16rem; -} - -.h-7 { - height: 1.75rem; -} - -.h-8 { - height: 2rem; -} - -.h-\[31\.625rem\] { - height: 31.625rem; -} - -.h-fit { - height: -moz-fit-content; - height: fit-content; -} - -.h-full { - height: 100%; -} - -.h-px { - height: 1px; -} - -.max-h-48 { - max-height: 12rem; -} - -.max-h-\[60vh\] { - max-height: 60vh; -} - -.max-h-\[calc\(100\%-8rem\)\] { - max-height: calc(100% - 8rem); -} - -.min-h-0 { - min-height: 0px; -} - -.w-0 { - width: 0px; -} - -.w-1\/2 { - width: 50%; -} - -.w-10 { - width: 2.5rem; -} - -.w-2 { - width: 0.5rem; -} - -.w-2\.5 { - width: 0.625rem; -} - -.w-4 { - width: 1rem; -} - -.w-40 { - width: 10rem; -} - -.w-48 { - width: 12rem; -} - -.w-5 { - width: 1.25rem; -} - -.w-6 { - width: 1.5rem; -} - -.w-64 { - width: 16rem; -} - -.w-\[calc\(100\%-1rem\)\] { - width: calc(100% - 1rem); -} - -.w-auto { - width: auto; -} - -.w-full { - width: 100%; -} - -.min-w-full { - min-width: 100%; -} - -.max-w-4xl { - max-width: 56rem; -} - -.max-w-\[20rem\] { - max-width: 20rem; -} - -.max-w-lg { - max-width: 32rem; -} - -.max-w-screen-2xl { - max-width: 1536px; -} - -.max-w-screen-lg { - max-width: 1024px; -} - -.max-w-screen-md { - max-width: 768px; -} - -.max-w-screen-sm { - max-width: 640px; -} - -.max-w-screen-xl { - max-width: 1280px; -} - -.flex-1 { - flex: 1 1 0%; -} - -.flex-auto { - flex: 1 1 auto; -} - -.flex-none { - flex: none; -} - -.flex-shrink-0 { - flex-shrink: 0; -} - -.flex-grow { - flex-grow: 1; -} - -.grow { - flex-grow: 1; -} - -.basis-0 { - flex-basis: 0px; -} - -@keyframes fadein { - from { - opacity: 0; - } - - to { - opacity: 1; - } -} - -.animate-fadein-medium { - animation: fadein 500ms ease-in-out forwards; -} - -.resize { - resize: both; -} - -.list-none { - list-style-type: none; -} - -.grid-cols-1 { - grid-template-columns: repeat(1, minmax(0, 1fr)); -} - -.grid-cols-2 { - grid-template-columns: repeat(2, minmax(0, 1fr)); -} - -.grid-rows-2 { - grid-template-rows: repeat(2, minmax(0, 1fr)); -} - -.flex-row { - flex-direction: row; -} - -.flex-col { - flex-direction: column; -} - -.flex-wrap { - flex-wrap: wrap; -} - -.content-center { - align-content: center; -} - -.items-center { - align-items: center; -} - -.justify-start { - justify-content: flex-start; -} - -.justify-end { - justify-content: flex-end; -} - -.justify-center { - justify-content: center; -} - -.justify-between { - justify-content: space-between; -} - -.gap-4 { - gap: 1rem; -} - -.gap-6 { - gap: 1.5rem; -} - -.gap-8 { - gap: 2rem; -} - -.space-x-1 > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(0.25rem * var(--tw-space-x-reverse)); - margin-left: calc(0.25rem * calc(1 - var(--tw-space-x-reverse))); -} - -.space-x-1\.5 > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(0.375rem * var(--tw-space-x-reverse)); - margin-left: calc(0.375rem * calc(1 - var(--tw-space-x-reverse))); -} - -.space-x-2 > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(0.5rem * var(--tw-space-x-reverse)); - margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse))); -} - -.space-y-1 > :not([hidden]) ~ :not([hidden]) { - --tw-space-y-reverse: 0; - margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(0.25rem * var(--tw-space-y-reverse)); -} - -.space-y-4 > :not([hidden]) ~ :not([hidden]) { - --tw-space-y-reverse: 0; - margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(1rem * var(--tw-space-y-reverse)); -} - -.divide-y > :not([hidden]) ~ :not([hidden]) { - --tw-divide-y-reverse: 0; - border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse))); - border-bottom-width: calc(1px * var(--tw-divide-y-reverse)); -} - -.divide-y-2 > :not([hidden]) ~ :not([hidden]) { - --tw-divide-y-reverse: 0; - border-top-width: calc(2px * calc(1 - var(--tw-divide-y-reverse))); - border-bottom-width: calc(2px * var(--tw-divide-y-reverse)); -} - -.divide-neutral-400 > :not([hidden]) ~ :not([hidden]) { - --tw-divide-opacity: 1; - border-color: rgb(163 163 163 / var(--tw-divide-opacity)); -} - -.overflow-auto { - overflow: auto; -} - -.overflow-hidden { - overflow: hidden; -} - -.overflow-scroll { - overflow: scroll; -} - -.overflow-y-auto { - overflow-y: auto; -} - -.overflow-x-hidden { - overflow-x: hidden; -} - -.overflow-y-hidden { - overflow-y: hidden; -} - -.whitespace-nowrap { - white-space: nowrap; -} - -.rounded { - border-radius: 0.25rem; -} - -.rounded-2xl { - border-radius: 1rem; -} - -.rounded-full { - border-radius: 9999px; -} - -.rounded-lg { - border-radius: 0.5rem; -} - -.rounded-md { - border-radius: 0.375rem; -} - -.rounded-t-md { - border-top-left-radius: 0.375rem; - border-top-right-radius: 0.375rem; -} - -.border { - border-width: 1px; -} - -.border-0 { - border-width: 0px; -} - -.border-4 { - border-width: 4px; -} - -.border-b { - border-bottom-width: 1px; -} - -.border-b-0 { - border-bottom-width: 0px; -} - -.border-l { - border-left-width: 1px; -} - -.border-dashed { - border-style: dashed; -} - -.border-none { - border-style: none; -} - -.border-\[\#444\] { - --tw-border-opacity: 1; - border-color: rgb(68 68 68 / var(--tw-border-opacity)); -} - -.border-blue-600 { - --tw-border-opacity: 1; - border-color: rgb(37 99 235 / var(--tw-border-opacity)); -} - -.border-gray-200 { - --tw-border-opacity: 1; - border-color: rgb(229 231 235 / var(--tw-border-opacity)); -} - -.border-gray-300 { - --tw-border-opacity: 1; - border-color: rgb(209 213 219 / var(--tw-border-opacity)); -} - -.border-green-600 { - --tw-border-opacity: 1; - border-color: rgb(22 163 74 / var(--tw-border-opacity)); -} - -.border-indigo-500 { - --tw-border-opacity: 1; - border-color: rgb(99 102 241 / var(--tw-border-opacity)); -} - -.border-neutral-500\/30 { - border-color: rgb(115 115 115 / 0.3); -} - -.border-orange-600 { - --tw-border-opacity: 1; - border-color: rgb(234 88 12 / var(--tw-border-opacity)); -} - -.border-white { - --tw-border-opacity: 1; - border-color: rgb(255 255 255 / var(--tw-border-opacity)); -} - -.bg-blue-500 { - --tw-bg-opacity: 1; - background-color: rgb(59 130 246 / var(--tw-bg-opacity)); -} - -.bg-dxblue { - --tw-bg-opacity: 1; - background-color: rgb(0 168 214 / var(--tw-bg-opacity)); -} - -.bg-dxorange { - --tw-bg-opacity: 1; - background-color: rgb(233 96 32 / var(--tw-bg-opacity)); -} - -.bg-ghdarkmetal { - --tw-bg-opacity: 1; - background-color: rgb(22 27 34 / var(--tw-bg-opacity)); -} - -.bg-ghmetal { - --tw-bg-opacity: 1; - background-color: rgb(36 41 47 / var(--tw-bg-opacity)); -} - -.bg-gray-100 { - --tw-bg-opacity: 1; - background-color: rgb(243 244 246 / var(--tw-bg-opacity)); -} - -.bg-gray-500 { - --tw-bg-opacity: 1; - background-color: rgb(107 114 128 / var(--tw-bg-opacity)); -} - -.bg-green-600 { - --tw-bg-opacity: 1; - background-color: rgb(22 163 74 / var(--tw-bg-opacity)); -} - -.bg-indigo-500 { - --tw-bg-opacity: 1; - background-color: rgb(99 102 241 / var(--tw-bg-opacity)); -} - -.bg-neutral-500\/30 { - background-color: rgb(115 115 115 / 0.3); -} - -.bg-neutral-800 { - --tw-bg-opacity: 1; - background-color: rgb(38 38 38 / var(--tw-bg-opacity)); -} - -.bg-red-600 { - --tw-bg-opacity: 1; - background-color: rgb(220 38 38 / var(--tw-bg-opacity)); -} - -.bg-transparent { - background-color: transparent; -} - -.bg-white { - --tw-bg-opacity: 1; - background-color: rgb(255 255 255 / var(--tw-bg-opacity)); -} - -.bg-yellow-600 { - --tw-bg-opacity: 1; - background-color: rgb(202 138 4 / var(--tw-bg-opacity)); -} - -.bg-zinc-300 { - --tw-bg-opacity: 1; - background-color: rgb(212 212 216 / var(--tw-bg-opacity)); -} - -.bg-opacity-50 { - --tw-bg-opacity: 0.5; -} - -.bg-opacity-80 { - --tw-bg-opacity: 0.8; -} - -.fill-\[\#444\] { - fill: #444; -} - -.fill-zinc-700 { - fill: #3f3f46; -} - -.object-cover { - -o-object-fit: cover; - object-fit: cover; -} - -.object-center { - -o-object-position: center; - object-position: center; -} - -.p-1 { - padding: 0.25rem; -} - -.p-2 { - padding: 0.5rem; -} - -.p-3 { - padding: 0.75rem; -} - -.p-4 { - padding: 1rem; -} - -.p-8 { - padding: 2rem; -} - -.px-2 { - padding-left: 0.5rem; - padding-right: 0.5rem; -} - -.px-3 { - padding-left: 0.75rem; - padding-right: 0.75rem; -} - -.px-4 { - padding-left: 1rem; - padding-right: 1rem; -} - -.px-5 { - padding-left: 1.25rem; - padding-right: 1.25rem; -} - -.px-6 { - padding-left: 1.5rem; - padding-right: 1.5rem; -} - -.px-8 { - padding-left: 2rem; - padding-right: 2rem; -} - -.py-1 { - padding-top: 0.25rem; - padding-bottom: 0.25rem; -} - -.py-10 { - padding-top: 2.5rem; - padding-bottom: 2.5rem; -} - -.py-12 { - padding-top: 3rem; - padding-bottom: 3rem; -} - -.py-16 { - padding-top: 4rem; - padding-bottom: 4rem; -} - -.py-2 { - padding-top: 0.5rem; - padding-bottom: 0.5rem; -} - -.py-20 { - padding-top: 5rem; - padding-bottom: 5rem; -} - -.py-24 { - padding-top: 6rem; - padding-bottom: 6rem; -} - -.py-3 { - padding-top: 0.75rem; - padding-bottom: 0.75rem; -} - -.py-4 { - padding-top: 1rem; - padding-bottom: 1rem; -} - -.py-6 { - padding-top: 1.5rem; - padding-bottom: 1.5rem; -} - -.py-8 { - padding-top: 2rem; - padding-bottom: 2rem; -} - -.pb-1 { - padding-bottom: 0.25rem; -} - -.pb-10 { - padding-bottom: 2.5rem; -} - -.pb-12 { - padding-bottom: 3rem; -} - -.pb-2 { - padding-bottom: 0.5rem; -} - -.pb-20 { - padding-bottom: 5rem; -} - -.pb-24 { - padding-bottom: 6rem; -} - -.pb-32 { - padding-bottom: 8rem; -} - -.pb-4 { - padding-bottom: 1rem; -} - -.pb-8 { - padding-bottom: 2rem; -} - -.pb-96 { - padding-bottom: 24rem; -} - -.pl-2 { - padding-left: 0.5rem; -} - -.pl-4 { - padding-left: 1rem; -} - -.pl-6 { - padding-left: 1.5rem; -} - -.pl-8 { - padding-left: 2rem; -} - -.pr-2 { - padding-right: 0.5rem; -} - -.pr-4 { - padding-right: 1rem; -} - -.pr-8 { - padding-right: 2rem; -} - -.pt-12 { - padding-top: 3rem; -} - -.pt-2 { - padding-top: 0.5rem; -} - -.pt-24 { - padding-top: 6rem; -} - -.pt-3 { - padding-top: 0.75rem; -} - -.pt-36 { - padding-top: 9rem; -} - -.pt-4 { - padding-top: 1rem; -} - -.text-left { - text-align: left; -} - -.text-center { - text-align: center; -} - -.align-middle { - vertical-align: middle; -} - -.font-sans { - font-family: Inter var, sans-serif; -} - -.text-2xl { - font-size: 1.5rem; - line-height: 2rem; -} - -.text-3xl { - font-size: 1.875rem; - line-height: 2.25rem; -} - -.text-5xl { - font-size: 3rem; - line-height: 1; -} - -.text-\[1\.2em\] { - font-size: 1.2em; -} - -.text-\[1\.5em\] { - font-size: 1.5em; -} - -.text-\[3\.3em\] { - font-size: 3.3em; -} - -.text-\[3em\] { - font-size: 3em; -} - -.text-base { - font-size: 1rem; - line-height: 1.5rem; -} - -.text-lg { - font-size: 1.125rem; - line-height: 1.75rem; -} - -.text-sm { - font-size: 0.875rem; - line-height: 1.25rem; -} - -.text-xl { - font-size: 1.25rem; - line-height: 1.75rem; -} - -.text-xs { - font-size: 0.75rem; - line-height: 1rem; -} - -.font-bold { - font-weight: 700; -} - -.font-extralight { - font-weight: 200; -} - -.font-light { - font-weight: 300; -} - -.font-medium { - font-weight: 500; -} - -.font-semibold { - font-weight: 600; -} - -.uppercase { - text-transform: uppercase; -} - -.leading-5 { - line-height: 1.25rem; -} - -.leading-6 { - line-height: 1.5rem; -} - -.leading-none { - line-height: 1; -} - -.leading-relaxed { - line-height: 1.625; -} - -.leading-tight { - line-height: 1.25; -} - -.tracking-tight { - letter-spacing: -0.025em; -} - -.tracking-widest { - letter-spacing: 0.1em; -} - -.text-black { - --tw-text-opacity: 1; - color: rgb(0 0 0 / var(--tw-text-opacity)); -} - -.text-blue-500 { - --tw-text-opacity: 1; - color: rgb(59 130 246 / var(--tw-text-opacity)); -} - -.text-ghdarkmetal { - --tw-text-opacity: 1; - color: rgb(22 27 34 / var(--tw-text-opacity)); -} - -.text-gray-100 { - --tw-text-opacity: 1; - color: rgb(243 244 246 / var(--tw-text-opacity)); -} - -.text-gray-300 { - --tw-text-opacity: 1; - color: rgb(209 213 219 / var(--tw-text-opacity)); -} - -.text-gray-400 { - --tw-text-opacity: 1; - color: rgb(156 163 175 / var(--tw-text-opacity)); -} - -.text-gray-500 { - --tw-text-opacity: 1; - color: rgb(107 114 128 / var(--tw-text-opacity)); -} - -.text-gray-600 { - --tw-text-opacity: 1; - color: rgb(75 85 99 / var(--tw-text-opacity)); -} - -.text-gray-700 { - --tw-text-opacity: 1; - color: rgb(55 65 81 / var(--tw-text-opacity)); -} - -.text-gray-800 { - --tw-text-opacity: 1; - color: rgb(31 41 55 / var(--tw-text-opacity)); -} - -.text-gray-900 { - --tw-text-opacity: 1; - color: rgb(17 24 39 / var(--tw-text-opacity)); -} - -.text-indigo-500 { - --tw-text-opacity: 1; - color: rgb(99 102 241 / var(--tw-text-opacity)); -} - -.text-red-500 { - --tw-text-opacity: 1; - color: rgb(239 68 68 / var(--tw-text-opacity)); -} - -.text-sky-500 { - --tw-text-opacity: 1; - color: rgb(14 165 233 / var(--tw-text-opacity)); -} - -.text-slate-700 { - --tw-text-opacity: 1; - color: rgb(51 65 85 / var(--tw-text-opacity)); -} - -.text-white { - --tw-text-opacity: 1; - color: rgb(255 255 255 / var(--tw-text-opacity)); -} - -.underline { - text-decoration-line: underline; -} - -.opacity-0 { - opacity: 0; -} - -.shadow { - --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); - --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); -} - -.shadow-3xl { - --tw-shadow: 0 35px 60px -1ww5px rgba(0, 0, 0, 0.5); - --tw-shadow-colored: 0 35px 60px -1ww5px var(--tw-shadow-color); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); -} - -.shadow-cutesy { - --tw-shadow: 0px 0px 40px -5px rgba(255, 255, 255, 0.2); - --tw-shadow-colored: 0px 0px 40px -5px var(--tw-shadow-color); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); -} - -.shadow-md { - --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); - --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); -} - -.shadow-xl { - --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1); - --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); -} - -.outline-none { - outline: 2px solid transparent; - outline-offset: 2px; -} - -.outline { - outline-style: solid; -} - -.invert { - --tw-invert: invert(100%); - filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); -} - -.filter { - filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); -} - -.backdrop-blur-sm { - --tw-backdrop-blur: blur(4px); - -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); - backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); -} - -.transition { - transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter; - transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; - transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms; -} - -.transition-colors { - transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms; -} - -.transition-transform { - transition-property: transform; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms; -} - -.duration-200 { - transition-duration: 200ms; -} - -.duration-300 { - transition-duration: 300ms; -} - -.ease-in-out { - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); -} - -/* @layer base { - - ul, - ol { - list-style: revert; - } -} */ - -.hover\:-translate-y-2:hover { - --tw-translate-y: -0.5rem; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.hover\:border-indigo-600:hover { - --tw-border-opacity: 1; - border-color: rgb(79 70 229 / var(--tw-border-opacity)); -} - -.hover\:bg-gray-100:hover { - --tw-bg-opacity: 1; - background-color: rgb(243 244 246 / var(--tw-bg-opacity)); -} - -.hover\:bg-indigo-600:hover { - --tw-bg-opacity: 1; - background-color: rgb(79 70 229 / var(--tw-bg-opacity)); -} - -.hover\:text-blue-400:hover { - --tw-text-opacity: 1; - color: rgb(96 165 250 / var(--tw-text-opacity)); -} - -.hover\:text-gray-500:hover { - --tw-text-opacity: 1; - color: rgb(107 114 128 / var(--tw-text-opacity)); -} - -.hover\:text-sky-500:hover { - --tw-text-opacity: 1; - color: rgb(14 165 233 / var(--tw-text-opacity)); -} - -.hover\:text-white:hover { - --tw-text-opacity: 1; - color: rgb(255 255 255 / var(--tw-text-opacity)); -} - -.hover\:opacity-100:hover { - opacity: 1; -} - -.hover\:shadow-pop:hover { - --tw-shadow: 0px 0px 30px -10px rgba(0, 0, 0, 0.5); - --tw-shadow-colored: 0px 0px 30px -10px var(--tw-shadow-color); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); -} - -.focus\:bg-orange-300:focus { - --tw-bg-opacity: 1; - background-color: rgb(253 186 116 / var(--tw-bg-opacity)); -} - -.focus\:outline:focus { - outline-style: solid; -} - -.focus\:outline-dashed:focus { - outline-style: dashed; -} - -.focus\:outline-dotted:focus { - outline-style: dotted; -} - -.focus\:outline-2:focus { - outline-width: 2px; -} - -.focus\:outline-blue-600:focus { - outline-color: #2563eb; -} - -.group:hover .group-hover\:text-gray-500 { - --tw-text-opacity: 1; - color: rgb(107 114 128 / var(--tw-text-opacity)); -} - -@media (prefers-color-scheme: dark) { - .dark\:block { - display: block; - } - - .dark\:hidden { - display: none; - } - - .dark\:border-gray-800 { - --tw-border-opacity: 1; - border-color: rgb(31 41 55 / var(--tw-border-opacity)); - } - - .dark\:border-stone-700 { - --tw-border-opacity: 1; - border-color: rgb(68 64 60 / var(--tw-border-opacity)); - } - - .dark\:bg-\[\#111111\] { - --tw-bg-opacity: 1; - background-color: rgb(17 17 17 / var(--tw-bg-opacity)); - } - - .dark\:bg-gray-800 { - --tw-bg-opacity: 1; - background-color: rgb(31 41 55 / var(--tw-bg-opacity)); - } - - .dark\:bg-ideblack { - --tw-bg-opacity: 1; - background-color: rgb(14 17 22 / var(--tw-bg-opacity)); - } - - .dark\:bg-neutral-900\/70 { - background-color: rgb(23 23 23 / 0.7); - } - - .dark\:bg-slate-800 { - --tw-bg-opacity: 1; - background-color: rgb(30 41 59 / var(--tw-bg-opacity)); - } - - .dark\:bg-opacity-80 { - --tw-bg-opacity: 0.8; - } - - .dark\:fill-white { - fill: #fff; - } - - .dark\:fill-zinc-100 { - fill: #f4f4f5; - } - - .dark\:text-\[\#dee2e6\] { - --tw-text-opacity: 1; - color: rgb(222 226 230 / var(--tw-text-opacity)); - } - - .dark\:text-gray-100 { - --tw-text-opacity: 1; - color: rgb(243 244 246 / var(--tw-text-opacity)); - } - - .dark\:text-gray-200 { - --tw-text-opacity: 1; - color: rgb(229 231 235 / var(--tw-text-opacity)); - } - - .dark\:text-gray-300 { - --tw-text-opacity: 1; - color: rgb(209 213 219 / var(--tw-text-opacity)); - } - - .dark\:text-gray-400 { - --tw-text-opacity: 1; - color: rgb(156 163 175 / var(--tw-text-opacity)); - } - - .dark\:text-gray-500 { - --tw-text-opacity: 1; - color: rgb(107 114 128 / var(--tw-text-opacity)); - } - - .dark\:text-sky-400 { - --tw-text-opacity: 1; - color: rgb(56 189 248 / var(--tw-text-opacity)); - } - - .dark\:text-white { - --tw-text-opacity: 1; - color: rgb(255 255 255 / var(--tw-text-opacity)); - } - - .dark\:opacity-75 { - opacity: 0.75; - } - - .dark\:ring-1 { - --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); - --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); - box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); - } - - .dark\:ring-inset { - --tw-ring-inset: inset; - } - - .dark\:ring-white\/10 { - --tw-ring-color: rgb(255 255 255 / 0.1); - } - - .dark\:invert-0 { - --tw-invert: invert(0); - filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); - } - - .dark\:backdrop-blur { - --tw-backdrop-blur: blur(8px); - -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); - backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); - } - - .dark\:hover\:bg-ideblack:hover { - --tw-bg-opacity: 1; - background-color: rgb(14 17 22 / var(--tw-bg-opacity)); - } - - .dark\:hover\:text-gray-300:hover { - --tw-text-opacity: 1; - color: rgb(209 213 219 / var(--tw-text-opacity)); - } - - .dark\:hover\:text-sky-400:hover { - --tw-text-opacity: 1; - color: rgb(56 189 248 / var(--tw-text-opacity)); - } -} - -@media (min-width: 640px) { - .sm\:mx-0 { - margin-left: 0px; - margin-right: 0px; - } - - .sm\:mx-auto { - margin-left: auto; - margin-right: auto; - } - - .sm\:block { - display: block; - } - - .sm\:flex { - display: flex; - } - - .sm\:h-8 { - height: 2rem; - } - - .sm\:max-h-\[none\] { - max-height: none; - } - - .sm\:w-1\/2 { - width: 50%; - } - - .sm\:w-full { - width: 100%; - } - - .sm\:flex-1 { - flex: 1 1 0%; - } - - .sm\:grid-cols-4 { - grid-template-columns: repeat(4, minmax(0, 1fr)); - } - - .sm\:grid-rows-1 { - grid-template-rows: repeat(1, minmax(0, 1fr)); - } - - .sm\:flex-row { - flex-direction: row; - } - - .sm\:justify-between { - justify-content: space-between; - } - - .sm\:rounded-xl { - border-radius: 0.75rem; - } - - .sm\:text-left { - text-align: left; - } - - .sm\:align-middle { - vertical-align: middle; - } - - .sm\:text-3xl { - font-size: 1.875rem; - line-height: 2.25rem; - } -} - -@media (min-width: 768px) { - .md\:m-8 { - margin: 2rem; - } - - .md\:mx-0 { - margin-left: 0px; - margin-right: 0px; - } - - .md\:mb-0 { - margin-bottom: 0px; - } - - .md\:mb-16 { - margin-bottom: 4rem; - } - - .md\:ml-0 { - margin-left: 0px; - } - - .md\:mr-3 { - margin-right: 0.75rem; - } - - .md\:mt-0 { - margin-top: 0px; - } - - .md\:block { - display: block; - } - - .md\:inline-block { - display: inline-block; - } - - .md\:flex { - display: flex; - } - - .md\:h-96 { - height: 24rem; - } - - .md\:w-1\/2 { - width: 50%; - } - - .md\:w-60 { - width: 15rem; - } - - .md\:w-auto { - width: auto; - } - - .md\:w-full { - width: 100%; - } - - .md\:flex-1 { - flex: 1 1 0%; - } - - .md\:flex-grow { - flex-grow: 1; - } - - .md\:grid-cols-2 { - grid-template-columns: repeat(2, minmax(0, 1fr)); - } - - .md\:flex-row { - flex-direction: row; - } - - .md\:flex-nowrap { - flex-wrap: nowrap; - } - - .md\:items-center { - align-items: center; - } - - .md\:justify-start { - justify-content: flex-start; - } - - .md\:space-x-4 > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(1rem * var(--tw-space-x-reverse)); - margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse))); - } - - .md\:space-y-0 > :not([hidden]) ~ :not([hidden]) { - --tw-space-y-reverse: 0; - margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(0px * var(--tw-space-y-reverse)); - } - - .md\:p-2 { - padding: 0.5rem; - } - - .md\:p-6 { - padding: 1.5rem; - } - - .md\:px-12 { - padding-left: 3rem; - padding-right: 3rem; - } - - .md\:px-16 { - padding-left: 4rem; - padding-right: 4rem; - } - - .md\:px-3 { - padding-left: 0.75rem; - padding-right: 0.75rem; - } - - .md\:py-2 { - padding-top: 0.5rem; - padding-bottom: 0.5rem; - } - - .md\:pb-10 { - padding-bottom: 2.5rem; - } - - .md\:pl-20 { - padding-left: 5rem; - } - - .md\:pt-24 { - padding-top: 6rem; - } - - .md\:text-left { - text-align: left; - } - - .md\:text-4xl { - font-size: 2.25rem; - line-height: 2.5rem; - } - - .md\:text-\[14px\] { - font-size: 14px; - } - - .md\:text-\[3\.3em\] { - font-size: 3.3em; - } - - .md\:text-\[3em\] { - font-size: 3em; - } - - .md\:text-sm { - font-size: 0.875rem; - line-height: 1.25rem; - } - - .md\:leading-tight { - line-height: 1.25; - } - - .md\:hover\:-translate-y-2:hover { - --tw-translate-y: -0.5rem; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); - } -} - -@media (min-width: 1024px) { - .lg\:col-span-7 { - grid-column: span 7 / span 7; - } - - .lg\:mx-24 { - margin-left: 6rem; - margin-right: 6rem; - } - - .lg\:mx-auto { - margin-left: auto; - margin-right: auto; - } - - .lg\:-ml-3 { - margin-left: -0.75rem; - } - - .lg\:-ml-3\.5 { - margin-left: -0.875rem; - } - - .lg\:mt-0 { - margin-top: 0px; - } - - .lg\:block { - display: block; - } - - .lg\:flex { - display: flex; - } - - .lg\:hidden { - display: none; - } - - .lg\:h-\[34\.6875rem\] { - height: 34.6875rem; - } - - .lg\:max-h-96 { - max-height: 24rem; - } - - .lg\:w-1\/3 { - width: 33.333333%; - } - - .lg\:w-1\/4 { - width: 25%; - } - - .lg\:w-2\/5 { - width: 40%; - } - - .lg\:grid-cols-3 { - grid-template-columns: repeat(3, minmax(0, 1fr)); - } - - .lg\:items-start { - align-items: flex-start; - } - - .lg\:bg-inherit { - background-color: inherit; - } - - .lg\:py-2 { - padding-top: 0.5rem; - padding-bottom: 0.5rem; - } - - .lg\:text-5xl { - font-size: 3rem; - line-height: 1; - } - - .lg\:text-\[14px\] { - font-size: 14px; - } - - .lg\:text-xl { - font-size: 1.25rem; - line-height: 1.75rem; - } - - .lg\:leading-relaxed { - line-height: 1.625; - } - - .lg\:leading-tight { - line-height: 1.25; - } -} - -@media (min-width: 1280px) { - .xl\:col-span-6 { - grid-column: span 6 / span 6; - } - - .xl\:block { - display: block; - } - - .xl\:h-\[31\.625rem\] { - height: 31.625rem; - } - - .xl\:max-w-\[20rem\] { - max-width: 20rem; - } - - .xl\:grid-cols-4 { - grid-template-columns: repeat(4, minmax(0, 1fr)); - } -} - -@media (min-width: 1536px) { - .\32xl\:max-w-\[20rem\] { - max-width: 20rem; - } -} - -@media (min-height:720px) { - .\[\@media\(min-height\:720px\)\]\:h-\[calc\(100vh\)\] { - height: calc(100vh); - } -} diff --git a/src/components/homepage.rs b/src/components/homepage.rs index a1645515b..1a0170f94 100644 --- a/src/components/homepage.rs +++ b/src/components/homepage.rs @@ -7,11 +7,9 @@ pub(crate) mod snippets; #[component] pub(crate) fn Homepage() -> Element { rsx! { - div { - section { class: "w-full dark:bg-ideblack", - hero::Hero {} - AvailablePlatforms {} - } + div { class: "w-full dark:bg-ideblack", + hero::Hero {} + AvailablePlatforms {} Stats {} } } @@ -39,7 +37,7 @@ fn AvailablePlatforms() -> Element { center: rsx! { }, right: rsx! { "Build for the web using Rust and WebAssembly. As fast as SolidJS and more robust than React. Integrated hot reloading for instant iterations." }, to: Route::Docs { - child: BookRoute::GettingStartedIndex {}, + child: BookRoute::Index {}, }, title: "Web with WASM", } @@ -48,13 +46,13 @@ fn AvailablePlatforms() -> Element { center: rsx! { }, right: rsx! { "Lightweight (<2mb) desktop and mobile apps with zero configuration. Choose between WebView or WGPU-enabled renderers. Runs on macOS, Windows, Linux, iOS, and Android." }, to: Route::Docs { - child: BookRoute::GettingStartedIndex {}, + child: BookRoute::Index {}, }, title: "Desktop and Mobile", } TriShow { to: Route::Docs { - child: BookRoute::GettingStartedIndex {}, + child: BookRoute::Index {}, }, title: "Terminal User Interfaces", right: rsx! { "Quickly convert any CLI tool to a beautiful interactive user interface with just a few lines of code. Runs anywhere with a terminal." }, @@ -63,7 +61,7 @@ fn AvailablePlatforms() -> Element { } TriShow { to: Route::Docs { - child: BookRoute::GettingStartedIndex {}, + child: BookRoute::Index {}, }, title: "Fullstack Apps", right: rsx! { "Pre-render on the server, and hydrate on the client. Perfect lighthouse scores and performance over 1000x better than Node and Python. Perfect for static site generation or fullstack apps." }, @@ -72,7 +70,7 @@ fn AvailablePlatforms() -> Element { } TriShow { to: Route::Docs { - child: BookRoute::GettingStartedIndex {}, + child: BookRoute::Index {}, }, title: "LiveView", right: rsx! { "Render your app entirely on the server. Zero backend configuration capable of handling thousands of active clients." }, diff --git a/src/components/homepage/hero.rs b/src/components/homepage/hero.rs index 709b36fb1..a6f1d63fc 100644 --- a/src/components/homepage/hero.rs +++ b/src/components/homepage/hero.rs @@ -2,27 +2,25 @@ use crate::*; pub(crate) fn Hero() -> Element { rsx! { - section { class: "w-full dark:bg-ideblack h-fit [@media(min-height:720px)]:h-[calc(100vh)] flex flex-col justify-between items-center py-16", - div { class: "pb-12 md:px-12 text-center w-full flex flex-col h-full max-w-screen-2xl", - div { class: "flex-grow" } - div { class: "flex flex-row justify-start w-full pb-24", - div { class: "text-left flex-grow", - div { class: "text-[3em] md:text-[3em] font-semibold dark:text-white text-ghdarkmetal font-sans flex flex-col", + section { class: "w-full dark:bg-ideblack mx-auto dark:text-white flex flex-col justify-between items-center pt-8 md:pt-32 border-b md:mb-32 mb-16 pb-4 min-h-[640px] flex-1", + div { class: "mx-auto flex w-full max-w-screen-2xl flex-col text-center md:min-h-[640px] min-h-[760px] md:px-12", + div { class: "flex-1" } + div { class: "flex-1 flex flex-row justify-start w-full px-8 md:px-0", + div { class: "text-center md:text-left flex-grow", + div { class: "text-[2.5em] md:text-[4em] font-semibold dark:text-white text-ghdarkmetal font-sans", + span { "One codebase, " } + span { " every platform." } + } + h3 { class: "text-[1.25em] dark:text-white font-extralight text-ghdarkmetal md:pt-4 pt-8 max-w-screen-sm md:max-w-screen-md md:text-left text-center", span { - "Dioxus is " - em { "the " } - "the Rust framework for" + "Build fullstack web, desktop, and mobile apps with one unified codebase." } - span { "fullstack web, desktop, and mobile apps." } - } - h3 { class: "text-[1.5em] dark:text-white font-extralight text-ghdarkmetal pt-4 max-w-screen-md text-left", - "Ship beautiful, robust, cross-platform apps in record time." } - div { class: "pt-24 text-white text-[1.2em] font-sans font-bold flex flex-col md:flex-row md:space-x-4 md:space-y-0 space-y-4", + div { class: "pt-12 text-white text-[1em] md:text-[1.2em] font-sans font-bold flex flex-col md:flex-row md:space-x-4 md:space-y-0 space-y-4 md:w-full max-w-[200px] md:max-w-[360px] mx-auto md:mx-0", Link { to: Route::Docs { - child: BookRoute::GettingStartedIndex {}, + child: BookRoute::Index {}, }, class: "bg-dxorange m-0 p-2 px-4 rounded md:hover:-translate-y-2 transition-transform duration-300 w-full md:w-auto", "Quickstart" @@ -36,36 +34,35 @@ pub(crate) fn Hero() -> Element { } } } - div { class: "flex-grow", + AnimatedLogo {} + } + div { class: "flex-1" } + div { class: "flex-1 max-w-screen-2xl flex-col justify-end md:flex gap-4", + h1 { class: "text-md md:text-left text-center", "Trusted by top companies" } + div { class: "flex flex-row flex-wrap md:justify-start justify-center invert dark:invert-0 mb-4 md:mb-12 md:gap-12 gap-4 px-4 my-4 min-h-0", img { - src: "/static/multiplatform-dark.svg", - class: "mx-auto max-h-48 lg:max-h-96 dark:hidden", - alt: "Animated Icon", + class: "h-6 md:h-8", + src: "/assets/static/airbuslogo.svg", } img { - src: "/static/multiplatform-light.svg", - class: "mx-auto max-h-48 lg:max-h-96 hidden dark:block", - alt: "Animated Icon", + class: "h-6 md:h-8", + src: "/assets/static/ESA_logo.svg", } - } - } - div { class: "flex-grow max-w-screen-2xl flex flex-col justify-end", - h1 { class: "text-md text-left", "Trusted by top companies" } - div { class: "pt-4 flex flex-row flex-wrap justify-start invert dark:invert-0", - div { class: "h-12 w-40 p-2 m-4 flex justify-center items-center", - img { src: "/static/futurewei_bw.png" } - } - div { class: "h-12 w-40 p-2 m-4 flex justify-center items-center", - img { src: "/static/airbuslogo.svg" } + img { + class: "h-6 md:h-8", + src: "/assets/static/xailogo.svg", } - div { class: "h-12 w-40 p-2 m-4 flex justify-center items-center", - img { src: "/static/ESA_logo.svg" } + img { + class: "h-6 md:h-8", + src: "/assets/static/yclogo.svg", } - div { class: "h-12 w-40 p-2 m-4 flex justify-center items-center", - img { src: "/static/yclogo.svg" } + img { + class: "h-6 md:h-8", + src: "/assets/static/futurewei_bw.png", } - div { class: "h-12 w-40 p-2 m-4 flex justify-center items-center", - img { src: "/static/satellite.webp" } + img { + class: "h-6 md:h-8", + src: "/assets/static/satellite.webp", } } } @@ -73,3 +70,20 @@ pub(crate) fn Hero() -> Element { } } } + +fn AnimatedLogo() -> Element { + rsx! { + div { class: "flex-grow", + img { + src: asset!("/assets/static/multiplatform-dark.svg"), + class: "mx-auto max-h-48 lg:max-h-96 dark:hidden", + alt: "Animated Icon", + } + img { + src: asset!("/assets/static/multiplatform-light.svg"), + class: "mx-auto max-h-48 lg:max-h-96 hidden dark:block", + alt: "Animated Icon", + } + } + } +} diff --git a/src/components/learn.rs b/src/components/learn.rs index cf78f5b58..e0ca1365e 100644 --- a/src/components/learn.rs +++ b/src/components/learn.rs @@ -1,9 +1,7 @@ use crate::docs::LAZY_BOOK; use crate::*; -use dioxus_material_icons::MaterialIconColor; use mdbook_shared::SummaryItem; -pub(crate) static HIGHLIGHT_DOCS_LAYOUT: GlobalSignal = Signal::global(|| false); pub(crate) static SHOW_SIDEBAR: GlobalSignal = Signal::global(|| false); /// The Markdown file path needs to be appended to this, including the first slash! @@ -24,9 +22,7 @@ pub(crate) fn Learn() -> Element { rsx! { div { class: "w-full text-sm dark:bg-ideblack", min_height: "100vh", - - // Flex centered, every column grows to split into 3 - div { class: "flex flex-row justify-center dark:text-[#dee2e6] font-light", + div { class: "flex flex-row justify-center dark:text-[#dee2e6] font-light lg:gap-12", LeftNav {} Content {} RightNav {} @@ -42,60 +38,107 @@ fn LeftNav() -> Element { &LAZY_BOOK.summary.suffix_chapters, ]; - // We use this to remove the spacing between "Introduction" and "Getting Started" - // TODO: Make this depend on if the chapter has any links. - let mut keep_bottom_spacing = false; - rsx! { - // Create a flex grow container, and then right-align its contents so it's squahed against the center - div { class: "overflow-y-auto sticky docs-links pt-12 flex flex-row justify-end", - nav { - class: "bg-white dark:bg-ideblack lg:bg-inherit pl-6 pb-32 z-20 text-base lg:block top-28 lg:-ml-3.5 pr-2 w-[calc(100%-1rem)] md:w-60 lg:text-[14px] text-navy content-startleading-5 ", - class: if HIGHLIGHT_DOCS_LAYOUT() { "border border-green-600 rounded-md" }, - class: if SHOW_SIDEBAR() { "min-w-full" } else { "hidden" }, + div { + class: "absolute z-30 md:h-[calc(100vh-4rem)] flex-col justify-end gap-4 overflow-x-hidden md:px-4 pt-4 md:pt-8 md:sticky md:z-0 md:flex md:w-auto bg-white dark:bg-ideblack lg:bg-inherit px-4", + class: if SHOW_SIDEBAR() { "w-screen" } else { "hidden" }, + VersionSwitch {} + nav { class: " + styled-scrollbar + pl-2 pb-2 z-20 text-base sm:block top-28 + md:w-60 lg:text-[14px] content-start text-gray-600 dark:text-gray-400 h-full overflow-y-scroll pr-2 space-y-1", + + + // DocVersionNav {} for chapter in chapters.into_iter().flatten().filter(|chapter| chapter.maybe_link().is_some()) { - SidebarSection { chapter, keep_bottom_spacing } - {keep_bottom_spacing = true} + SidebarSection { chapter } } } } } } -/// Navigate between doc versions -fn DocVersionNav() -> Element { +fn VersionSwitch() -> Element { + let versions = [ + ("Version 0.6 (alpha)", "v0.6.0-alpha.3", "0.6"), + ("Version 0.5 (stable)", "v0.5.4", "0.5"), + ("Version 0.4", "v0.4.3", "0.4"), + ("Version 0.3", "v0.3.0", "0.3"), + ]; + let mut show_versions = use_signal(|| false); + rsx! { - div { class: "pb-4", - ul { class: "pl-2", - li { class: "m-1 rounded-md pl-2", - span { class: "hover:text-sky-500 dark:hover:text-sky-400", - dioxus_material_icons::MaterialIcon { - name: "chevron_left", - color: MaterialIconColor::Custom("gray".to_string()), + div { + tabindex: "0", + cursor: "pointer", + role: "button", + onfocusout: move |_| show_versions.set(false), + onclick: move |_| show_versions.set(true), + div { class: " hover:bg-gray-100 dark:hover:bg-ghdarkmetal rounded w-full", + div { class: "grid grid-cols-[auto,1fr,auto] items-center gap-2 px-1 py-2", + div { + div { class: "w-8 h-8 rounded-md border flex items-center justify-center bg-gray-50 border-gray-200 text-gray-900", + svg { + style: "width: 16px; height: 16px; color: currentcolor;", + "stroke-linejoin": "round", + "viewBox": "0 0 16 16", + width: "16", + height: "16", + class: "translate-x-px translate-y-px", + path { + "fill-rule": "evenodd", + fill: "currentColor", + d: "M1.5 1.5H6.34315C7.00619 1.5 7.64207 1.76339 8.11091 2.23223L13.8787 8L8 13.8787L2.23223 8.11091C1.76339 7.64207 1.5 7.00619 1.5 6.34315V1.5ZM16 8L14.9393 6.93934L9.17157 1.17157C8.42143 0.421427 7.40401 0 6.34315 0H1.5H0V1.5V6.34315C0 7.40401 0.421426 8.42143 1.17157 9.17157L6.93934 14.9393L8 16L9.06066 14.9393L14.9393 9.06066L16 8ZM4.5 5.25C4.91421 5.25 5.25 4.91421 5.25 4.5C5.25 4.08579 4.91421 3.75 4.5 3.75C4.08579 3.75 3.75 4.08579 3.75 4.5C3.75 4.91421 4.08579 5.25 4.5 5.25Z", + "clip-rule": "evenodd", + } + } } - "0.5" } - } - li { class: "m-1 rounded-md pl-2", - a { - href: "/learn/0.4", - class: "hover:text-sky-500 dark:hover:text-sky-400", - dioxus_material_icons::MaterialIcon { - name: "chevron_left", - color: MaterialIconColor::Custom("gray".to_string()), + div { class: "leading-snug text-xs text-left", + p { class: "font-bold", "Using Nightly Version" } + p { class: "font-light", "v0.6.0-alpha.3" } + } + div { + svg { + "stroke-linecap": "round", + width: "24", + "shape-rendering": "geometricPrecision", + height: "24", + "data-testid": "geist-icon", + stroke: "currentColor", + "viewBox": "0 0 24 24", + "stroke-width": "1.5", + style: "color: currentcolor; width: 20px; height: 20px;", + fill: "none", + "aria-hidden": "true", + "stroke-linejoin": "round", + class: "with-icon_icon__MHUeb", + path { d: "M17 8.517L12 3 7 8.517M7 15.48l5 5.517 5-5.517" } } - "0.4" } } - li { class: "m-1 rounded-md pl-2", - a { - href: "/learn/0.3", - class: "hover:text-sky-500 dark:hover:text-sky-400", - dioxus_material_icons::MaterialIcon { - name: "chevron_left", - color: MaterialIconColor::Custom("gray".to_string()), + } + // relative then absolute to make sure the width ends up correct + div { + class: "relative w-full z-50", + class: if !show_versions() { "hidden" }, + ul { class: "absolute flex flex-col bg-white dark:bg-ghdarkmetal text-left rounded-lg border dark:border-gray-700 mt-4 w-full overflow-hidden text-gray-500 dark:text-gray-100 text-xs shadow-lg", + for (name , version , at) in versions.iter() { + li { + Link { to: "https://dioxuslabs.com/learn/{at}/", + div { class: "flex flex-row items-center hover:bg-gray-100 dark:hover:bg-ghdarkmetal py-2 gap-2 px-2", + span { class: "row-span-3", "⭐️" } + div { class: "flex flex-col", + span { class: "text-gray-700 dark:text-gray-100 font-semibold", + "{name}" + } + span { class: "row-span-2 col-span-2", "{version}" } + } + div { class: "flex-1" } + span { "✅" } + } + } } - "0.3" } } } @@ -114,94 +157,71 @@ fn DocVersionNav() -> Element { /// /// This renders a single section #[component] -fn SidebarSection(chapter: &'static SummaryItem, keep_bottom_spacing: bool) -> Element { +fn SidebarSection(chapter: &'static SummaryItem) -> Element { let link = chapter.maybe_link().context("Could not get link")?; - let sections = link.nested_items.iter().map(|chapter| { - rsx! { - SidebarChapter { chapter } - } - }); - rsx! { - div { - class: "full-chapter", - class: if keep_bottom_spacing { "pb-4 mb-6" }, + div { class: "full-chapter", if let Some(url) = &link.location { Link { onclick: move |_| *SHOW_SIDEBAR.write() = false, to: Route::Docs { child: *url }, - h3 { class: "font-semibold mb-2 hover:text-sky-500 dark:hover:text-sky-400", - "{link.name}" - } + class: "font-semibold hover:text-sky-500 dark:hover:text-sky-400 dark:text-gray-100 text-gray-700", + active_class: "text-sky-600 dark:text-sky-400", + h3 { class: "pb-2", "{link.name}" } + } + } + ul { class: "ml-1 space-y-1", + for chapter in link.nested_items.iter() { + SidebarChapter { chapter } } } - ul { class: "ml-1", {sections} } } } } #[component] fn SidebarChapter(chapter: &'static SummaryItem) -> Element { - let link = chapter.maybe_link().context("Could not get link")?; - let url = link.location.as_ref().unwrap(); - let mut list_toggle = use_signal(|| false); - // current route of the browser, trimmed to the book url + let mut list_toggle = use_signal(|| false); let book_url = use_book().to_string(); + let link = chapter.maybe_link().context("Could not get link")?; // for instance, if the current page is /docs/0.5/en/learn/overview // then we want to show the dropdown for /docs/0.5/en/learn - let show_dropdown = list_toggle() || book_url.starts_with(&*url.to_string()); + // but the toggle should still work if the url is exactly the same + let url = link.location.as_ref().unwrap(); + let show_dropdown = list_toggle() || { + book_url.starts_with(&*url.to_string()) && !book_url.ends_with(&*url.to_string()) + }; let show_chevron = !link.nested_items.is_empty(); - if show_chevron { - rsx! { - li { class: "rounded-md hover:text-sky-500 dark:hover:text-sky-400", - Link { - onclick: move |_| *SHOW_SIDEBAR.write() = false, - to: Route::Docs { child: *url }, - "{link.name}" - } - button { - onclick: move |_| list_toggle.toggle(), - class: "align-middle", - dioxus_material_icons::MaterialIcon { - name: "chevron_right", - color: MaterialIconColor::Custom("gray".to_string()), - } - } - } - if show_dropdown { - ul { class: "border-l border-gray-300 m-2 px-2 space-y-1", - for chapter in link.nested_items.iter() { - SidebarChapter { chapter } + rsx! { + li { class: "rounded-md hover:text-sky-500 dark:hover:text-sky-400 flex flex-row", + Link { + onclick: move |_| { + list_toggle.toggle(); + *SHOW_SIDEBAR.write() = false; + }, + to: Route::Docs { child: *url }, + class: "flex-grow flex flex-row items-center", + active_class: "text-sky-600 dark:text-sky-400", + "{link.name}" + if show_chevron { + div { class: "flex-grow" } + if list_toggle() { + icons::ChevronDownIcon {} + } else { + icons::ChevronRightIconSmall {} } } } } - } else { - rsx! { - LocationLink { chapter } - } - } -} - -#[component] -fn LocationLink(chapter: &'static SummaryItem) -> Element { - let book_url = use_book().to_string(); - - let link = chapter.maybe_link().context("Could not get link")?; - let url = link.location.as_ref().unwrap(); - - rsx! { - Link { - onclick: move |_| *SHOW_SIDEBAR.write() = false, - to: Route::Docs { child: *url }, - li { - class: "rounded-md hover:text-sky-500 dark:hover:text-sky-400", - class: if book_url.starts_with(&*url.to_string()) { "text-sky-500 dark:text-sky-400" }, - "{link.name}" + if show_dropdown && !link.nested_items.is_empty() { + ul { class: "border-l border-gray-300 px-4 ml-2 space-y-1 py-2", + for chapter in link.nested_items.iter() { + SidebarChapter { chapter } + } } } } @@ -211,15 +231,17 @@ fn LocationLink(chapter: &'static SummaryItem) -> Element { fn RightNav() -> Element { let page = use_book(); - let padding_map = ["", "", "pl-2", "pl-4", "pl-6", "pl-8"]; let page_url = use_memo(move || page.to_string()); let edit_github_url = use_resource(move || async move { // This is the URL for the file if that file is not a directory that uses /index.md // page_url starts with '/', so we don't need to worry about that let github_api_url = format!("{GITHUB_API_URL}{page_url}.md"); + // If the file is not found, that means that we have to use /index.md - if reqwest::get(github_api_url).await.unwrap().status() == reqwest::StatusCode::NOT_FOUND { + if reqwest::get(github_api_url).await.ok().map(|f| f.status()) + == Some(reqwest::StatusCode::NOT_FOUND) + { format!("{GITHUB_EDIT_PAGE_EDIT_URL}{page_url}/index.md") } else { format!("{GITHUB_EDIT_PAGE_EDIT_URL}{page_url}.md") @@ -228,55 +250,160 @@ fn RightNav() -> Element { // That might be a naive approach, but it's the easiest rsx! { - div { - class: "overflow-y-auto hidden xl:block top-28 ml-12 h-full md:text-[14px] leading-5 text-navy dark:text-[#dee2e6] docs-right-sidebar w-48 sticky", - class: if HIGHLIGHT_DOCS_LAYOUT() { "border border-green-600 rounded-md" }, - h2 { class: "pb-4 font-semibold", "On this page" } - ul { - for section in page.sections().iter().skip(1) { - li { class: "pb-2 {padding_map[section.level-1]}", - a { - class: "hover:text-sky-500 dark:hover:text-sky-400", - href: "?phantom={section.id}#{section.id}", - "{section.title}" + div { class: "overflow-y-auto hidden xl:block top-28 ml-12 h-full md:text-[14px] leading-5 text-gray-700 w-48 sticky dark:text-gray-400", + div { class: "border-b pb-2 dark:border-[#a4a9ac7d]", + h2 { class: "pb-2 font-semibold text-gray-600 dark:text-gray-100", + "On this page" + } + ul { + for section in page.sections().iter().skip(1) { + li { + class: "pb-2", + class: if section.level == 0 { "" }, + class: if section.level == 1 { "" }, + class: if section.level == 2 { "" }, + class: if section.level == 3 { "pl-2" }, + class: if section.level == 4 { "pl-4" }, + class: if section.level == 5 { "pl-6" }, + a { + class: "hover:text-sky-500 dark:hover:text-sky-400", + href: "#{section.id}", + "{section.title}" + } } } } } - h2 { class: "py-4 font-semibold", - match edit_github_url.cloned() { - Some(url) => rsx! { - a { class: "hover:text-sky-500 dark:hover:text-sky-400", href: "{url}", "Edit this page!" } - }, - None => rsx! { - a { href: "{GITHUB_EDIT_PAGE_FALLBACK_URL}", "Edit this page!" } - }, + h2 { class: "py-4 ", + if let Some(url) = edit_github_url.cloned() { + a { + class: "hover:text-sky-500 dark:hover:text-sky-400 flex flex-row items-center gap-x-1", + href: "{url}", + "Edit this page" + icons::ExternalLinkIcon2 {} + } + } else { + a { + href: "{GITHUB_EDIT_PAGE_FALLBACK_URL}", + class: "flex flex-row items-center gap-x-1", + "Edit this page" + icons::ExternalLinkIcon2 {} + } } } - h2 { class: "py-4 font-semibold", "Go to version" } - DocVersionNav {} } } } fn Content() -> Element { + let route: BookRoute = use_book(); + + let id = route.page_id(); + let prev_id = id.0.saturating_sub(1); + let next_id = id.0.saturating_add(1); + let prev_page = LAZY_BOOK.pages.get(prev_id); + let next_page = LAZY_BOOK.pages.get(next_id); + rsx! { - section { class: "text-gray-600 body-font overflow-hidden dark:bg-ideblack container pb-12 max-w-screen-sm mx-2 lg:mx-24 pt-12 grow", - div { - class: "-py-8", - class: if HIGHLIGHT_DOCS_LAYOUT() { "border border-green-600 rounded-md" }, - div { class: "flex w-full mb-20 flex-wrap list-none", - style { - ".markdown-body ul {{ list-style: disc; }}" - ".markdown-body ol {{ list-style: decimal; }}" - ".markdown-body li {{ display: list-item; }}" - ".markdown-body button {{ display: inline-block; background-color: rgba(209, 213, 219, 0.3); border-radius: 0.25rem; padding: 0.25rem 0.5rem; border: 1px solid; margin: 0.25rem; }}" - ".markdown-body .header {{ color: inherit }}" - } + section { class: "text-gray-600 dark:text-gray-300 body-font overflow-hidden dark:bg-ideblack container pb-12 max-w-screen-sm px-4 pt-8 grow", + div { class: "-py-8", + Breadcrumbs {} + div { class: "flex w-full mb-12 flex-wrap list-none", article { class: "markdown-body", Outlet:: {} } + } + div { class: "flex flex-row w-full", + if let Some(prev_page) = prev_page { + Link { + class: "text-gray-700 dark:text-gray-100 p-4 rounded text-left flex-1 ", + to: Route::Docs { + child: prev_page.url, + }, + div { class: "flex flex-row items-center gap-x-2 hover:text-sky-500 dark:hover:text-sky-400", + svg { + "viewBox": "0 0 16 16", + width: "16", + style: "width: 20px; height: 20px; color: currentcolor;", + "data-testid": "geist-icon", + height: "16", + "stroke-linejoin": "round", + path { + d: "M10.5 14.0607L9.96966 13.5303L5.14644 8.7071C4.75592 8.31658 4.75592 7.68341 5.14644 7.29289L9.96966 2.46966L10.5 1.93933L11.5607 2.99999L11.0303 3.53032L6.56065 7.99999L11.0303 12.4697L11.5607 13L10.5 14.0607Z", + "clip-rule": "evenodd", + fill: "currentColor", + "fill-rule": "evenodd", + } + } + div { class: "flex flex-col", + span { class: "text-xs", "PREVIOUS" } + span { class: "font-semibold", "{prev_page.title}" } + } + } + } + } + + + if let Some(next_page) = next_page { + Link { + class: "text-gray-700 dark:text-gray-100 p-4 rounded text-right flex-1", + to: Route::Docs { + child: next_page.url, + }, + div { class: "flex flex-row items-center gap-x-2 justify-end hover:text-sky-500 dark:hover:text-sky-400", + div { class: "flex flex-col", + span { class: "text-xs", "NEXT" } + span { class: "font-semibold", "{next_page.title}" } + } + svg { + height: "16", + width: "16", + "stroke-linejoin": "round", + "viewBox": "0 0 16 16", + style: "width: 20px; height: 20px; color: currentcolor;", + "data-testid": "geist-icon", + path { + d: "M5.50001 1.93933L6.03034 2.46966L10.8536 7.29288C11.2441 7.68341 11.2441 8.31657 10.8536 8.7071L6.03034 13.5303L5.50001 14.0607L4.43935 13L4.96968 12.4697L9.43935 7.99999L4.96968 3.53032L4.43935 2.99999L5.50001 1.93933Z", + "clip-rule": "evenodd", + "fill-rule": "evenodd", + fill: "currentColor", + } + } + } + } + } + } + } + } + } +} + +fn Breadcrumbs() -> Element { + let route: BookRoute = use_book(); + + let mut routes = vec![route.clone()]; + let mut cur = route.clone(); + while let Some(parent) = cur.parent() { + routes.push(parent.clone()); + cur = parent.clone(); + } - // todo: we want left-right buttons to go between pages in the docs - // ContentFooter {} + rsx! { + div { + class: "flex flex-row space-x-2 mb-7 font-extralight", + class: if route == (BookRoute::Index {}) { "hidden" }, + Link { + to: Route::Docs { + child: BookRoute::Index {}, + }, + "Dioxus v0.6.0-alpha.3" + } + for (idx , route) in routes.iter().rev().enumerate() { + icons::ChevronRightIcon {} + Link { + to: Route::Docs { + child: route.clone(), + }, + class: if idx == routes.len() - 1 { "font-normal" }, + "{route.page().title}" } } } @@ -294,7 +421,7 @@ fn use_book() -> BookRoute { } #[component] -pub(crate) fn DocsO3(segments: Vec) -> Element { +pub fn DocsO3(segments: Vec) -> Element { let navigator = use_navigator(); let route: Route = use_route(); navigator.push(route); @@ -302,7 +429,7 @@ pub(crate) fn DocsO3(segments: Vec) -> Element { } #[component] -pub(crate) fn DocsO4(segments: Vec) -> Element { +pub fn DocsO4(segments: Vec) -> Element { let navigator = use_navigator(); let route: Route = use_route(); navigator.push(route); diff --git a/src/components/nav.rs b/src/components/nav.rs index b86922c90..c592246fc 100644 --- a/src/components/nav.rs +++ b/src/components/nav.rs @@ -4,32 +4,73 @@ use dioxus_material_icons::{MaterialIcon, MaterialIconColor}; use std::ops::Deref; pub(crate) static SHOW_SEARCH: GlobalSignal = Signal::global(|| false); -pub(crate) static LOGGED_IN: GlobalSignal = Signal::global(|| false); pub(crate) static SHOW_DOCS_NAV: GlobalSignal = Signal::global(|| false); pub(crate) fn Nav() -> Element { rsx! { SearchModal {} header { class: "sticky top-0 z-30 bg-white bg-opacity-80 dark:text-gray-200 dark:bg-ideblack dark:bg-opacity-80 border-b dark:border-stone-700 h-16 backdrop-blur-sm", - div { class: "lg:py-2 px-2 max-w-screen-2xl mx-auto flex items-center justify-between text-sm leading-6 h-16", - button { - class: "bg-zinc-300 rounded-lg p-1 mr-4 lg:hidden my-3 h-10 flex items-center text-lg z-[100]", - class: if !SHOW_DOCS_NAV() { "hidden" }, - onclick: move |_| { - let mut sidebar = SHOW_SIDEBAR.write(); - *sidebar = !*sidebar; - }, - MaterialIcon { - name: "menu", - size: 24, - color: MaterialIconColor::Dark, + div { class: "py-2 px-2 max-w-screen-2xl mx-auto flex items-center justify-between text-sm leading-6 h-16", + div { class: "flex z-50 md:px-2", LinkList {} } + div { class: "flex h-full justify-end ml-2 items-center gap-4 py-2", + button { + class: " + max-w-[12rem] items-center rounded + p-1 text-left text-sm font-light leading-none border + + hidden md:flex flex-row + w-full sm:flex-1 md:w-full xl:max-w-[12rem] + + bg-gray-100 text-gray-400 hover:brightness-95 + dark:bg-ghdarkmetal dark:text-gray-300 dark:border-gray-700 h-full + ", + onclick: move |_| { + *SHOW_SEARCH.write() = true; + }, + span { class: "h-4 px-1 dark:hidden", + MaterialIcon { + name: "search", + size: 16, + color: MaterialIconColor::Dark, + } + } + span { class: "h-4 px-1 hidden dark:block", + MaterialIcon { + name: "search", + size: 16, + color: MaterialIconColor::Light, + } + } + span { class: "hidden content-center text-sm sm:flex flex-row w-60 justify-between", + span { "Search..." } + span { class: "px-1 min-w-6 + border bg-gray-100 border-gray-300 rounded text-center text-base/[18px] text-[.75rem] align-middle + dark:bg-ghdarkmetal dark:border-gray-700 + ", + "/" + } + } } - } - div { class: "flex z-50 md:flex-1 px-2", LinkList {} } - div { class: "hidden md:flex h-full justify-end ml-2 flex-1", - div { class: "hidden md:flex items-center", - Search {} - div { class: "hidden lg:flex items-center border-l border-gray-200 ml-4 pl-4 dark:border-gray-800", + div { + tabindex: "0", + cursor: "pointer", + role: "button", + onclick: move |_| { + let mut sidebar = SHOW_SIDEBAR.write(); + *sidebar = !*sidebar; + }, + class: "bg-gray-100 dark:bg-gray-700 dark:hover:bg-gray-500 rounded-lg p-1 mr-2 lg:hidden my-3 h-8 flex items-center text-lg z-[100]", + class: if !SHOW_DOCS_NAV() { "hidden" }, + MaterialIcon { + name: "menu", + size: 24, + color: MaterialIconColor::Dark, + } + } + + div { class: "h-full gap-4 hidden lg:flex", + div { class: "border-l border-gray-200 dark:border-gray-800 h-full" } + div { class: "hidden lg:flex items-center gap-4", label { class: "sr-only", id: "headlessui-listbox-label-2", @@ -44,13 +85,15 @@ pub(crate) fn Nav() -> Element { } Link { to: "https://github.com/dioxuslabs/dioxus".to_string(), - class: "ml-4 block text-gray-400 hover:text-gray-500 dark:hover:text-gray-300", + class: "flex flex-row items-center text-gray-400 hover:text-gray-500 dark:hover:text-gray-300 gap-2", new_tab: true, span { class: "sr-only", "Dioxus on GitHub" } crate::icons::Github2 {} + span { class: "text-xs", "20.7k" } } } - div { class: "hidden lg:flex items-center border-l border-gray-200 ml-4 pl-6 dark:border-gray-800", + div { class: "border-l border-gray-200 dark:border-gray-800 h-full" } + div { class: "hidden lg:flex items-center gap-2 h-full", label { class: "sr-only", id: "headlessui-listbox-label-2", @@ -58,16 +101,15 @@ pub(crate) fn Nav() -> Element { } Link { to: Route::Deploy {}, - class: "md:ml-0 md:py-2 md:px-3 bg-blue-500 ml-4 text-lg md:text-sm text-white rounded font-semibold", - "DEPLOY" + class: "h-full flex flex-col justify-center text-center md:px-3 bg-white dark:bg-gray-300 border border-gray-200 dark:border-gray-700 text-sm md:text-sm rounded font-semibold text-gray-700 hover:brightness-95 dark:hover:brightness-105", + "Deploy" } - if LOGGED_IN() { - Link { to: Route::Homepage {}, - img { - src: "https://avatars.githubusercontent.com/u/10237910?s=40&v=4", - class: "ml-4 h-10 rounded-full w-auto", - } - } + Link { + to: Route::Docs { + child: BookRoute::Index {}, + }, + class: "md:px-3 h-full flex flex-col justify-center bg-blue-500 text-lg md:text-sm text-white rounded font-semibold hover:brightness-95 dark:hover:brightness-105", + "Learn" } } } @@ -79,32 +121,31 @@ pub(crate) fn Nav() -> Element { static LINKS: &[(&str, &str)] = &[ ("Learn", "/learn/0.5/"), - ("Playground", "/play"), ("SDK", "/sdk"), + ("Playground", "/play"), + ("Components", "/components"), ("Blog", "/blog"), - // ("Awesome", "/awesome"), - // ("docs.rs", "https://docs.rs/dioxus/latest/dioxus/"), ]; #[component] fn LinkList() -> Element { rsx! { - nav { class: "flex items-center space-x-2 text-md font-light leading-none text-slate-700 dark:text-white whitespace-nowrap", + nav { class: "flex flex-row items-center space-x-2 md:space-x-6 text-md font-light leading-none text-slate-700 dark:text-white whitespace-nowrap", Link { to: Route::Homepage {}, - class: "flex title-font font-medium items-center text-gray-900", + class: "title-font font-medium items-center text-gray-900 flex flex-row gap-1", img { - src: "https://avatars.githubusercontent.com/u/79236386?s=200&v=4", - class: "h-8 w-auto", + src: asset!("/assets/static/smalllogo.png"), + class: "h-6 w-auto", } - span { class: "text-xl dark:text-white leading-none font-bold hidden sm:block px-4", - "Dioxus" + span { class: "text-xl dark:text-white leading-none hidden sm:block font-mono", + "DIOXUS" } } for (name , link) in LINKS.iter().cloned() { Link { to: link, - class: "p-2 leading-none hover:text-sky-500 dark:hover:text-sky-400 rounded fill-zinc-700 dark:fill-zinc-100", + class: "leading-none hover:text-sky-500 dark:hover:text-sky-400 rounded fill-zinc-700 dark:fill-zinc-100", active_class: "text-sky-500 dark:text-sky-400", position: "relative", "{name}" @@ -114,32 +155,6 @@ fn LinkList() -> Element { } } -fn Search() -> Element { - rsx! { - div { class: "relative md:w-full max-w-[20rem] xl:max-w-[20rem] 2xl:max-w-[20rem] sm:mx-auto sm:flex-1 text-sm font-light leading-none", - // Pop up a modal - button { - // Pop up a modal - class: "bg-gray-100 rounded-lg p-1 sm:w-full text-left text-gray-400 my-auto sm:flex sm:flex-row sm:align-middle sm:justify-between", - onclick: move |_| { - *SHOW_SEARCH.write() = true; - }, - div { class: "h-full my-auto flex flex-row content-center justify-between", - MaterialIcon { - name: "search", - size: 20, - color: MaterialIconColor::Dark, - } - span { class: "hidden sm:block pl-2 pr-4 content-center", "Search the docs" } - } - div { class: "hidden md:block border border-gray-300 rounded-lg p-1 text-xs text-gray-400", - "CTRL + /" - } - } - } - } -} - type Results = Result>, stork_lib::SearchError>; fn SearchModal() -> Element { @@ -177,22 +192,22 @@ fn SearchModal() -> Element { div { height: "100vh", width: "100vw", - class: "fixed top-0 left-0 z-50 block bg-gray-500 bg-opacity-50 overflow-y-hidden search-modal-animated", + class: "fixed top-0 left-0 z-50 block bg-gray-100 bg-opacity-70 overflow-y-hidden search-modal-animated", class: if *SHOW_SEARCH.read() { "dioxus-show" } else { "dioxus-hide" }, onclick: move |_| *SHOW_SEARCH.write() = false, // A little weird, but we're putting an empty div with a scaled height to buffer the top of the modal - div { class: "max-w-screen-md mx-auto h-full flex flex-col", - div { class: "h-30" } + div { class: "max-w-screen-sm mx-auto h-full flex flex-col", + div { class: "h-40" } // The actual modal - div { class: "bg-white dark:bg-ideblack p-2 md:p-6 rounded-2xl m-2 md:m-8 max-h-[calc(100%-8rem)] overflow-y-auto text-gray-800 dark:text-gray-100", + div { class: "bg-white dark:bg-ideblack rounded-xl max-h-[calc(100%-8rem)] overflow-y-auto text-gray-800 dark:text-gray-100 border", // Search input - div { class: "flex flex-row flex-grow border-b border-gray-300 pb-4", - div { class: "my-auto flex flex-row", + div { class: "flex flex-col flex-grow border-b border-gray-300 p-2 gap-2", + div { class: "my-auto flex flex-row items-center", MaterialIcon { name: "search", - size: 40, + size: 20, color: MaterialIconColor::Dark, } @@ -211,7 +226,7 @@ fn SearchModal() -> Element { onmounted: move |evt| async move { _ = evt.set_focus(true).await; }, - class: "flex-grow bg-transparent border-none outline-none text-xl pl-2 text-gray-800 dark:text-gray-100", + class: "flex-grow bg-transparent border-none outline-none pl-2 text-gray-800 dark:text-gray-100 py-2", placeholder: "Search the docs", value: "{search_text}", } @@ -219,11 +234,7 @@ fn SearchModal() -> Element { } } - div { class: "overflow-y-auto", - ul { - SearchResults { results, search_text } - } - } + SearchResults { results, search_text } } } } @@ -241,41 +252,65 @@ fn SearchResults(results: Signal, search_text: Signal) -> Eleme let _results = results.read(); let results = _results.deref().as_ref().unwrap(); - if !results.is_empty() { - return rsx! { - for result in results { - SearchResult { result: result.clone() } - } - }; - } - rsx! { - div { class: "text-center text-xlg p-4", - "No results found" - div { class: "dark:text-white text-left text-lg p-4", - div { - "Try searching for:" - ul { - for search in ["Fullstack", "Typesafe Routing", "Authentication"] { - li { - button { - class: "underline p-1 md:p-2", - onclick: move |_| { - search_text.set(search.to_string()); - }, - "{search}" - } - } - } - } + ul { class: "p-2", + if search_text.read().is_empty() { + for (search , route) in [ + ( + "Tutorial", + Route::Docs { + child: BookRoute::GuideIndex {}, + }, + ), + ( + "Web", + Route::Docs { + child: BookRoute::ReferenceWebIndex {}, + }, + ), + ( + "Desktop", + Route::Docs { + child: BookRoute::ReferenceDesktopIndex { + }, + }, + ), + ( + "Mobile", + Route::Docs { + child: BookRoute::ReferenceMobileIndex {}, + }, + ), + ( + "Fullstack", + Route::Docs { + child: BookRoute::ReferenceFullstackIndex { + }, + }, + ), + ( + "Typesafe Routing", + Route::Docs { + child: BookRoute::RouterReferenceRoutesIndex { + }, + }, + ), + ] + { + SearchResultItem { title: search.to_string(), route } } - - div { class: "mt-4", - "Or go to:" - ul { - for (name , link) in LINKS.iter().cloned() { - li { class: "p-1 md:p-2", - Link { to: link, class: "underline ", "{name}" } + } else if results.is_empty() { + div { class: "text-center text-xlg p-4", "No results found for: {search_text}" } + } else { + for result in results { + SearchResultItem { + title: result.title.clone(), + route: result.route.clone(), + for segment in result.excerpts.first().unwrap().text.iter() { + if segment.highlighted { + span { class: "text-blue-500", "{segment.text}" } + } else { + span { "{segment.text}" } } } } @@ -286,29 +321,19 @@ fn SearchResults(results: Signal, search_text: Signal) -> Eleme } #[component] -fn SearchResult(result: dioxus_search::SearchResult) -> Element { - let title = &result.title; - let route = &result.route; - let top_excerpt_segments = &result.excerpts.first().unwrap().text; - +fn SearchResultItem(title: String, route: Route, children: Element) -> Element { rsx! { - li { class: "w-full mt-4 p-2 rounded hover:bg-gray-100 dark:hover:bg-ideblack transition-colors duration-200 ease-in-out", + li { class: "w-full p-2 rounded hover:bg-gray-100 dark:hover:bg-ideblack transition-colors duration-200 ease-in-out", Link { - to: route.clone(), + to: route, onclick: move |_| { *SHOW_SEARCH.write() = false; }, - div { class: "flex flex-col justify-between pb-1", - h2 { class: "font-semibold dark:text-white", "{title}" } - } - p { class: "text-sm pr-8 text-gray-500 dark:text-gray-300", - for segment in top_excerpt_segments { - if segment.highlighted { - span { class: "text-blue-500", "{segment.text}" } - } else { - span { "{segment.text}" } - } - } + class: "flex flex-row items-center gap-x-2", + icons::DocumentIcon {} + div { class: "flex flex-col justify-between", + h2 { class: "dark:text-white", "{title}" } + {children} } } } diff --git a/src/doc_examples/breaking_out.rs b/src/doc_examples/breaking_out.rs index c48ea0164..e968e843a 100644 --- a/src/doc_examples/breaking_out.rs +++ b/src/doc_examples/breaking_out.rs @@ -16,7 +16,7 @@ mod eval { // When you click the button, some javascript will run in the browser // to read the domain and set the signal onclick: move |_| async move { - domain.set(eval("return document.domain").await.unwrap().to_string()); + domain.set(document::eval("return document.domain").await.unwrap().to_string()); }, "Read Domain" } @@ -58,15 +58,16 @@ mod web_sys { button { // When you click the button, we use web-sys to read the domain and a signal onclick: move |_| { - domain.set( - window() - .unwrap() - .document() - .unwrap() - .dyn_into::<::web_sys::HtmlDocument>() - .unwrap() - .domain() - ); + domain + .set( + window() + .unwrap() + .document() + .unwrap() + .dyn_into::<::web_sys::HtmlDocument>() + .unwrap() + .domain(), + ); }, "Read Domain" } @@ -88,7 +89,7 @@ mod use_effect { let count = count.read(); // You can use the count value to update the DOM manually - eval(&format!( + document::eval(&format!( r#"var c = document.getElementById("dioxus-canvas"); var ctx = c.getContext("2d"); ctx.clearRect(0, 0, c.width, c.height); @@ -103,9 +104,7 @@ mod use_effect { onclick: move |_| count += 1, "Increment" } - canvas { - id: "dioxus-canvas", - } + canvas { id: "dioxus-canvas" } } } // ANCHOR_END: use_effect @@ -119,8 +118,7 @@ mod onmounted { let mut input_element = use_signal(|| None); rsx! { - div { - height: "100px", + div { height: "100px", button { class: "focus:outline-2 focus:outline-blue-600 focus:outline-dashed", // The onmounted event will run the first time the button element is mounted diff --git a/src/doc_examples/component_lifecycle.rs b/src/doc_examples/component_lifecycle.rs index 56cdc8f35..7789a97ad 100644 --- a/src/doc_examples/component_lifecycle.rs +++ b/src/doc_examples/component_lifecycle.rs @@ -30,23 +30,16 @@ mod use_hook { fn FakePage() -> Element { let mut uuid = use_signal(|| 0); rsx! { - button { - onclick: move |_| uuid += 1, - "🔄" - } - {std::iter::once(rsx!{ - UseHook { - key: "{uuid}" - } + button { onclick: move |_| uuid += 1, "🔄" } + {std::iter::once(rsx! { + UseHook { key: "{uuid}" } })} } } pub fn UseHookDemo() -> Element { rsx! { - ComponentWithLogs { - FakePage {} - } + ComponentWithLogs { FakePage {} } } } } @@ -86,19 +79,13 @@ mod rerenders { // It can easily cause an infinite loop! count += 1; - rsx! { - // If you both read and write to state in the body of the component, - // you can cause an infinite loop! - "{count}" - } + rsx! { "{count}" } } // ANCHOR_END: dont_mutate pub fn RerenderDemo() -> Element { rsx! { - ComponentWithLogs { - Rerenders {} - } + ComponentWithLogs { Rerenders {} } } } } @@ -112,25 +99,20 @@ mod effect { // You can use them to read or modify the rendered component use_effect(|| { log!("Effect ran"); - eval(&format!( + document::eval(&format!( "document.getElementById('effect-output').innerText = 'Effect ran'" )); }); rsx! { - div { - id: "effect-output", - "This will be changed by the effect" - } + div { id: "effect-output", "This will be changed by the effect" } } } // ANCHOR_END: effect pub fn EffectDemo() -> Element { rsx! { - ComponentWithLogs { - Effect {} - } + ComponentWithLogs { Effect {} } } } } @@ -164,9 +146,7 @@ mod drop { pub fn DropDemo() -> Element { rsx! { - ComponentWithLogs { - TogglesChild {} - } + ComponentWithLogs { TogglesChild {} } } } } diff --git a/src/icons.rs b/src/icons.rs index 32e67a71d..6debef8d3 100644 --- a/src/icons.rs +++ b/src/icons.rs @@ -15,6 +15,127 @@ pub(crate) fn ArrowRight() -> Element { } } } +pub(crate) fn ChevronDownIcon() -> Element { + rsx! { + svg { + height: "24", + "stroke-linecap": "round", + "stroke-linejoin": "round", + "stroke-width": "1.5", + "viewBox": "0 0 24 24", + "data-testid": "geist-icon", + "shape-rendering": "geometricPrecision", + stroke: "currentColor", + width: "24", + style: "color: currentcolor; width: 16px; height: 16px;", + fill: "none", + class: "with-icon_icon__MHUeb", + path { d: "M6 9l6 6 6-6" } + } + } +} +pub(crate) fn ChevronRightIconSmall() -> Element { + rsx! { + svg { + fill: "none", + "stroke-linejoin": "round", + "shape-rendering": "geometricPrecision", + height: "24", + "stroke-linecap": "round", + "data-testid": "geist-icon", + style: "color: currentcolor; width: 18px; height: 18px;", + width: "24", + stroke: "currentColor", + "stroke-width": "1.5", + "viewBox": "0 0 24 24", + class: "with-icon_icon__MHUeb", + path { d: "M9 18l6-6-6-6" } + } + } +} + +pub(crate) fn ChevronRightIcon() -> Element { + rsx! { + span { + svg { + "stroke-width": "1.5", + height: "24", + "shape-rendering": "geometricPrecision", + "stroke-linecap": "round", + "data-testid": "geist-icon", + fill: "none", + stroke: "currentColor", + "stroke-linejoin": "round", + "viewBox": "0 0 24 24", + width: "24", + style: "color: currentcolor; width: 18px; height: 18px;", + class: "with-icon_icon__MHUeb", + path { d: "M9 18l6-6-6-6" } + } + } + } +} +pub(crate) fn ChevronLeftIcon() -> Element { + rsx! { + span { + svg { + "stroke-width": "1.5", + height: "24", + "shape-rendering": "geometricPrecision", + "stroke-linecap": "round", + "data-testid": "geist-icon", + fill: "none", + stroke: "currentColor", + "stroke-linejoin": "round", + "viewBox": "0 0 24 24", + width: "24", + style: "color: currentcolor; width: 18px; height: 18px;", + path { d: "M9 18l6-6-6-6" } + } + } + } +} + +pub(crate) fn DocumentIcon() -> Element { + rsx! { + div { class: "style_itemPrefix__HSCJc", + svg { + "data-testid": "geist-icon", + height: "16", + "viewBox": "0 0 16 16", + width: "16", + "stroke-linejoin": "round", + style: "color: currentcolor;", + path { + d: "M14.5 13.5V6.5V5.41421C14.5 5.149 14.3946 4.89464 14.2071 4.70711L9.79289 0.292893C9.60536 0.105357 9.351 0 9.08579 0H8H3H1.5V1.5V13.5C1.5 14.8807 2.61929 16 4 16H12C13.3807 16 14.5 14.8807 14.5 13.5ZM13 13.5V6.5H9.5H8V5V1.5H3V13.5C3 14.0523 3.44772 14.5 4 14.5H12C12.5523 14.5 13 14.0523 13 13.5ZM9.5 5V2.12132L12.3787 5H9.5ZM5.13 5.00062H4.505V6.25062H5.13H6H6.625V5.00062H6H5.13ZM4.505 8H5.13H11H11.625V9.25H11H5.13H4.505V8ZM5.13 11H4.505V12.25H5.13H11H11.625V11H11H5.13Z", + "fill-rule": "evenodd", + fill: "currentColor", + "clip-rule": "evenodd", + } + } + } + } +} + +pub(crate) fn ExternalLinkIcon2() -> Element { + rsx! { + svg { + style: "color: currentcolor; width: 14px; height: 14px;", + fill: "none", + stroke: "currentColor", + "stroke-linejoin": "round", + "shape-rendering": "geometricPrecision", + width: "24", + "stroke-width": "1.5", + "data-testid": "geist-icon", + height: "24", + "stroke-linecap": "round", + "viewBox": "0 0 24 24", + path { d: "M7 17L17 7" } + path { d: "M7 7h10v10" } + } + } +} pub(crate) fn ExternalLinkIcon() -> Element { rsx! { diff --git a/src/main.rs b/src/main.rs index 7f8114b6b..cce0e21ce 100644 --- a/src/main.rs +++ b/src/main.rs @@ -21,32 +21,29 @@ fn HeaderFooter() -> Element { rsx! { div { class: "bg-white dark:bg-ideblack pb-8", - head::Link { rel: "stylesheet", href: "/githubmarkdown.css" } - head::Link { rel: "stylesheet", href: "/tailwind.css" } - head::Link { rel: "stylesheet", href: "/main.css" } - head::Link { rel: "stylesheet", href: "/dxp.css" } - head::Link { rel: "stylesheet", href: "https://rsms.me/inter/inter.css" } - head::Link { - rel: "stylesheet", - href: "https://fonts.googleapis.com/icon?family=Material+Icons", - } - head::Link { rel: "preconnect", href: "https://fonts.googleapis.com" } - head::Link { + document::Link { rel: "stylesheet", href: asset!("/assets/githubmarkdown.css") } + document::Link { rel: "stylesheet", href: asset!("/assets/tailwind.css") } + document::Link { rel: "stylesheet", href: asset!("/assets/main.css") } + document::Link { rel: "stylesheet", href: asset!("/assets/dxp.css") } + document::Link { rel: "stylesheet", href: asset!("/assets/material.css") } + document::Link { rel: "stylesheet", href: "https://rsms.me/inter/inter.css" } + document::Link { rel: "preconnect", href: "https://fonts.googleapis.com" } + document::Link { href: "https://fonts.gstatic.com", rel: "preconnect", crossorigin: "false", } - head::Link { + document::Link { rel: "stylesheet", href: "https://fonts.googleapis.com/css2?family=Arimo:wght@100;400;600&display=swap", } - head::Link { + document::Link { href: "https://fonts.googleapis.com/css2?family=Arimo:ital,wght@0,400..700;1,400..700&family=Lexend:wght@100;400&family=M+PLUS+1:wght@100..900&family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap", rel: "stylesheet", } - head::Script { src: "/ace/ace.js" } - head::Script { src: "/ace/mode-rust.js" } - head::Script { src: "/ace/theme-github.js" } + document::Script { src: asset!("/assets/ace/ace.js") } + document::Script { src: asset!("/assets/ace/mode-rust.js") } + document::Script { src: asset!("/assets/ace/theme-github.js") } Nav {} Outlet:: {} @@ -126,27 +123,28 @@ pub fn app() -> Element { static SEARCH_INDEX: dioxus_search::LazySearchIndex = dioxus_search::load_search_index! { "search" }; + mod docs { use crate::components::*; use crate::doc_examples::*; use dioxus::prelude::*; - #[component] - fn CodeBlock(contents: String) -> Element { - rsx! { - div { - style: "position: relative;", - div { - dangerous_inner_html: contents - } - button { - style: "position: absolute; top: 0; right: 0; background: rgba(0, 0, 0, 0.75); color: white; border: 1px solid white; padding: 0.25em;", - "onclick": "navigator.clipboard.writeText(this.previousElementSibling.innerText)", - "Copy" - } - } - } - } + // #[component] + // fn CodeBlock(contents: String) -> Element { + // rsx! { + // div { + // style: "position: relative;", + // div { + // dangerous_inner_html: contents + // } + // button { + // style: "position: absolute; top: 0; right: 0; background: rgba(0, 0, 0, 0.75); color: white; border: 1px solid white; padding: 0.25em;", + // "onclick": "navigator.clipboard.writeText(this.previousElementSibling.innerText)", + // "Copy" + // } + // } + // } + // } #[component] fn SandBoxFrame(url: String) -> Element { @@ -205,6 +203,22 @@ pub enum Route {{\n\t" } } + #[component] + fn CodeBlock(contents: String) -> Element { + rsx! { + div { style: "position: relative;", + // button { + // style: "position: absolute; top: 0; right: 0; background: rgba(0, 0, 0, 0.15); color: white; border: 1px solid white; padding: 0.25em;", + // background_color: "red", + // "onclick": "navigator.clipboard.writeText(this.previousElementSibling.innerText)", + // "Copy" + // } + div { dangerous_inner_html: contents } + } + } + } + + #[path = "./router.rs"] mod router; pub use router::*; } diff --git a/src/shortcut.rs b/src/shortcut.rs index 5654b92d1..c5f13b283 100644 --- a/src/shortcut.rs +++ b/src/shortcut.rs @@ -14,12 +14,12 @@ thread_local! { let callbacks2 = callbacks.clone(); let cb: Closure = wasm_bindgen::closure::Closure::new(move |evt: web_sys::Event| { - let data = dioxus::prelude::KeyboardData::from(evt); - for (_, (key, modifiers, callback)) in callbacks2.lock().unwrap().iter_mut() { - if data.key() == *key && data.modifiers() == *modifiers { - callback(); - } - } + // let data = dioxus::prelude::KeyboardData::from(evt); + // for (_, (key, modifiers, callback)) in callbacks2.lock().unwrap().iter_mut() { + // if data.key() == *key && data.modifiers() == *modifiers { + // callback(); + // } + // } }); let window = web_sys::window().unwrap(); let document = window.document().unwrap(); diff --git a/tailwind.config.js b/tailwind.config.js index 132c3096b..70f37fed8 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -9,32 +9,24 @@ module.exports = { dxblue: "#00A8D6", ghmetal: "#24292f", ghdarkmetal: "#161b22", - // ideblack: "#222529", ideblack: "#0e1116", - // ideblack: "#0a0a0a", - // ideblack: "#0E1116", }, fontFamily: { - // sans: [`"Poppins"`, "sans-serif"], - // sans: ["Arimo", "sans-serif"], - // sans: ["Lexend", "sans-serif"], sans: ["Inter var", "sans-serif"], }, boxShadow: { "3xl": "0 35px 60px -1ww5px rgba(0, 0, 0, 0.5)", cutesy: "0px 0px 40px -5px rgba(255, 255, 255, 0.2)", - // cutesy: "0px 0px 30px -10px white", - // cutesy: "0px 0px 30px -10px red", pop: "0px 0px 30px -10px rgba(0, 0, 0, 0.5)", }, keyframes: { fadein: { - 'from': { opacity: '0' }, - 'to': { opacity: '1' }, - } + from: { opacity: "0" }, + to: { opacity: "1" }, + }, }, animation: { - 'fadein-medium': 'fadein 500ms ease-in-out forwards', + "fadein-medium": "fadein 500ms ease-in-out forwards", }, }, }, diff --git a/tailwind.css b/tailwind.css index 440d72d0f..b5c61c956 100644 --- a/tailwind.css +++ b/tailwind.css @@ -1,11 +1,3 @@ @tailwind base; @tailwind components; @tailwind utilities; - -/* @layer base { - - ul, - ol { - list-style: revert; - } -} */ From aedc1637ea5906f1f267e26bf3f7ea171d0fd52a Mon Sep 17 00:00:00 2001 From: Jonathan Kelley Date: Wed, 23 Oct 2024 16:54:23 -0700 Subject: [PATCH 34/35] mostly ish fixed with scroll --- assets/main.css | 4 +- assets/tailwind.css | 928 ++++++------------------ docs-src/0.5/src/SUMMARY.md | 1 + docs-src/0.5/src/guide/multiplatform.md | 0 src/components/learn.rs | 173 ++--- src/doc_examples/eval.rs | 19 +- src/doc_examples/use_effect.rs | 10 +- src/main.rs | 2 +- 8 files changed, 351 insertions(+), 786 deletions(-) create mode 100644 docs-src/0.5/src/guide/multiplatform.md diff --git a/assets/main.css b/assets/main.css index 6858f0597..62c3c93cf 100644 --- a/assets/main.css +++ b/assets/main.css @@ -39,8 +39,8 @@ } .full-chapter { - padding-top: 8px; - padding-bottom: 8px; + padding-top: 12px; + padding-bottom: 12px; } .full-chapter:not(:last-child) { border-bottom: 1px solid #3b3d3e29; diff --git a/assets/tailwind.css b/assets/tailwind.css index 7b876344c..55931fc1d 100644 --- a/assets/tailwind.css +++ b/assets/tailwind.css @@ -600,10 +600,6 @@ video { border-width: 0; } -.pointer-events-none { - pointer-events: none; -} - .static { position: static; } @@ -677,14 +673,14 @@ video { grid-column: span 2 / span 2; } -.row-span-3 { - grid-row: span 3 / span 3; -} - .row-span-2 { grid-row: span 2 / span 2; } +.row-span-3 { + grid-row: span 3 / span 3; +} + .-m-4 { margin: -1rem; } @@ -693,18 +689,10 @@ video { margin: 0px; } -.m-1 { - margin: 0.25rem; -} - .m-2 { margin: 0.5rem; } -.m-4 { - margin: 1rem; -} - .m-5 { margin: 1.25rem; } @@ -754,21 +742,6 @@ video { margin-bottom: auto; } -.mx-1 { - margin-left: 0.25rem; - margin-right: 0.25rem; -} - -.mx-4 { - margin-left: 1rem; - margin-right: 1rem; -} - -.mx-0 { - margin-left: 0px; - margin-right: 0px; -} - .-mb-10 { margin-bottom: -2.5rem; } @@ -785,12 +758,12 @@ video { margin-bottom: 3rem; } -.mb-2 { - margin-bottom: 0.5rem; +.mb-16 { + margin-bottom: 4rem; } -.mb-20 { - margin-bottom: 5rem; +.mb-2 { + margin-bottom: 0.5rem; } .mb-3 { @@ -821,10 +794,6 @@ video { margin-left: 0.75rem; } -.ml-4 { - margin-left: 1rem; -} - .ml-auto { margin-left: auto; } @@ -853,30 +822,14 @@ video { margin-top: auto; } -.mb-7 { - margin-bottom: 1.75rem; -} - -.mb-16 { - margin-bottom: 4rem; -} - -.mb-32 { - margin-bottom: 8rem; -} - -.mb-24 { - margin-bottom: 6rem; +.mt-\[2\.75rem\] { + margin-top: 2.75rem; } .block { display: block; } -.inline-block { - display: inline-block; -} - .inline { display: inline; } @@ -909,10 +862,6 @@ video { height: 2.5rem; } -.h-12 { - height: 3rem; -} - .h-16 { height: 4rem; } @@ -957,9 +906,12 @@ video { height: 31.625rem; } -.h-fit { - height: -moz-fit-content; - height: fit-content; +.h-\[90vh\] { + height: 90vh; +} + +.h-\[calc\(100vh-4rem\)\] { + height: calc(100vh - 4rem); } .h-full { @@ -970,46 +922,34 @@ video { height: 1px; } -.h-3 { - height: 0.75rem; -} - -.h-60 { - height: 15rem; +.h-\[92vh\] { + height: 92vh; } -.h-\[calc\(100vh-4rem\)\] { - height: calc(100vh - 4rem); -} - -.h-\[calc\(100vh-15rem\)\] { - height: calc(100vh - 15rem); -} - -.h-\[calc\(100vh-12rem\)\] { - height: calc(100vh - 12rem); -} - -.h-\[calc\(100vh-8rem\)\] { - height: calc(100vh - 8rem); +.h-\[88vh\] { + height: 88vh; } -.h-\[calc\(100vh-2rem\)\] { - height: calc(100vh - 2rem); +.h-\[85vh\] { + height: 85vh; } -.h-\[calc\(100vh-3rem\)\] { - height: calc(100vh - 3rem); +.h-\[86vh\] { + height: 86vh; } -.h-24 { - height: 6rem; +.h-\[87vh\] { + height: 87vh; } .h-screen { height: 100vh; } +.h-0 { + height: 0px; +} + .max-h-48 { max-height: 12rem; } @@ -1022,14 +962,6 @@ video { max-height: calc(100% - 8rem); } -.max-h-12 { - max-height: 3rem; -} - -.max-h-\[960px\] { - max-height: 960px; -} - .min-h-0 { min-height: 0px; } @@ -1038,24 +970,28 @@ video { min-height: 640px; } -.min-h-\[960px\] { - min-height: 960px; +.min-h-\[760px\] { + min-height: 760px; } .min-h-screen { min-height: 100vh; } -.min-h-\[1280px\] { - min-height: 1280px; +.min-h-\[92vh\] { + min-height: 92vh; } -.min-h-\[840px\] { - min-height: 840px; +.min-h-\[94vh\] { + min-height: 94vh; } -.min-h-\[760px\] { - min-height: 760px; +.min-h-\[95vh\] { + min-height: 95vh; +} + +.min-h-\[96vh\] { + min-height: 96vh; } .w-0 { @@ -1074,10 +1010,6 @@ video { width: 0.625rem; } -.w-24 { - width: 6rem; -} - .w-4 { width: 1rem; } @@ -1094,12 +1026,16 @@ video { width: 1.5rem; } +.w-60 { + width: 15rem; +} + .w-64 { width: 16rem; } -.w-\[calc\(100\%-1rem\)\] { - width: calc(100% - 1rem); +.w-8 { + width: 2rem; } .w-auto { @@ -1114,41 +1050,24 @@ video { width: 100vw; } -.w-3 { - width: 0.75rem; -} - -.w-8 { - width: 2rem; -} - -.w-60 { - width: 15rem; -} - -.w-fit { - width: -moz-fit-content; - width: fit-content; -} - -.w-32 { - width: 8rem; +.min-w-6 { + min-width: 1.5rem; } .min-w-full { min-width: 100%; } -.min-w-6 { - min-width: 1.5rem; -} - .max-w-4xl { max-width: 56rem; } -.max-w-\[14rem\] { - max-width: 14rem; +.max-w-\[12rem\] { + max-width: 12rem; +} + +.max-w-\[200px\] { + max-width: 200px; } .max-w-lg { @@ -1175,34 +1094,6 @@ video { max-width: 1280px; } -.max-w-\[16rem\] { - max-width: 16rem; -} - -.max-w-\[12rem\] { - max-width: 12rem; -} - -.max-w-24 { - max-width: 6rem; -} - -.max-w-\[320px\] { - max-width: 320px; -} - -.max-w-\[160px\] { - max-width: 160px; -} - -.max-w-\[200px\] { - max-width: 200px; -} - -.max-w-\[360px\] { - max-width: 360px; -} - .flex-1 { flex: 1 1 0%; } @@ -1241,6 +1132,16 @@ video { transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); } +.translate-y-0 { + --tw-translate-y: 0px; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +.translate-y-12 { + --tw-translate-y: 3rem; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + .transform { transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); } @@ -1267,10 +1168,6 @@ video { list-style-type: none; } -.grid-flow-col { - grid-auto-flow: column; -} - .grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); } @@ -1287,10 +1184,6 @@ video { grid-template-rows: repeat(2, minmax(0, 1fr)); } -.grid-rows-3 { - grid-template-rows: repeat(3, minmax(0, 1fr)); -} - .flex-row { flex-direction: row; } @@ -1303,10 +1196,6 @@ video { flex-wrap: wrap; } -.flex-nowrap { - flex-wrap: nowrap; -} - .content-center { align-content: center; } @@ -1335,40 +1224,28 @@ video { justify-content: space-between; } -.justify-around { - justify-content: space-around; -} - .justify-evenly { justify-content: space-evenly; } -.gap-4 { - gap: 1rem; -} - -.gap-6 { - gap: 1.5rem; -} - -.gap-8 { - gap: 2rem; +.gap-1 { + gap: 0.25rem; } .gap-2 { gap: 0.5rem; } -.gap-1 { - gap: 0.25rem; +.gap-4 { + gap: 1rem; } -.gap-16 { - gap: 4rem; +.gap-6 { + gap: 1.5rem; } -.gap-12 { - gap: 3rem; +.gap-8 { + gap: 2rem; } .gap-x-1 { @@ -1381,15 +1258,6 @@ video { column-gap: 0.5rem; } -.gap-x-3 { - -moz-column-gap: 0.75rem; - column-gap: 0.75rem; -} - -.gap-y-4 { - row-gap: 1rem; -} - .space-x-1\.5 > :not([hidden]) ~ :not([hidden]) { --tw-space-x-reverse: 0; margin-right: calc(0.375rem * var(--tw-space-x-reverse)); @@ -1420,10 +1288,16 @@ video { margin-bottom: calc(0.5rem * var(--tw-space-y-reverse)); } -.space-x-4 > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(1rem * var(--tw-space-x-reverse)); - margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse))); +.space-y-6 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(1.5rem * var(--tw-space-y-reverse)); +} + +.space-y-8 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(2rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(2rem * var(--tw-space-y-reverse)); } .divide-y > :not([hidden]) ~ :not([hidden]) { @@ -1451,10 +1325,6 @@ video { overflow: hidden; } -.overflow-scroll { - overflow: scroll; -} - .overflow-y-auto { overflow-y: auto; } @@ -1479,10 +1349,6 @@ video { border-radius: 0.25rem; } -.rounded-2xl { - border-radius: 1rem; -} - .rounded-full { border-radius: 9999px; } @@ -1495,10 +1361,6 @@ video { border-radius: 0.375rem; } -.rounded-sm { - border-radius: 0.125rem; -} - .rounded-xl { border-radius: 0.75rem; } @@ -1508,11 +1370,6 @@ video { border-top-right-radius: 0.375rem; } -.rounded-t { - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; -} - .border { border-width: 1px; } @@ -1565,11 +1422,6 @@ video { border-color: rgb(209 213 219 / var(--tw-border-opacity)); } -.border-gray-400 { - --tw-border-opacity: 1; - border-color: rgb(156 163 175 / var(--tw-border-opacity)); -} - .border-green-600 { --tw-border-opacity: 1; border-color: rgb(22 163 74 / var(--tw-border-opacity)); @@ -1594,16 +1446,6 @@ video { border-color: rgb(255 255 255 / var(--tw-border-opacity)); } -.border-gray-700 { - --tw-border-opacity: 1; - border-color: rgb(55 65 81 / var(--tw-border-opacity)); -} - -.border-gray-500 { - --tw-border-opacity: 1; - border-color: rgb(107 114 128 / var(--tw-border-opacity)); -} - .bg-blue-500 { --tw-bg-opacity: 1; background-color: rgb(59 130 246 / var(--tw-bg-opacity)); @@ -1634,9 +1476,9 @@ video { background-color: rgb(243 244 246 / var(--tw-bg-opacity)); } -.bg-gray-500 { +.bg-gray-50 { --tw-bg-opacity: 1; - background-color: rgb(107 114 128 / var(--tw-bg-opacity)); + background-color: rgb(249 250 251 / var(--tw-bg-opacity)); } .bg-green-600 { @@ -1677,38 +1519,14 @@ video { background-color: rgb(202 138 4 / var(--tw-bg-opacity)); } -.bg-gray-200 { - --tw-bg-opacity: 1; - background-color: rgb(229 231 235 / var(--tw-bg-opacity)); -} - -.bg-gray-50 { - --tw-bg-opacity: 1; - background-color: rgb(249 250 251 / var(--tw-bg-opacity)); -} - -.bg-red-400 { - --tw-bg-opacity: 1; - background-color: rgb(248 113 113 / var(--tw-bg-opacity)); -} - -.bg-blue-100 { - --tw-bg-opacity: 1; - background-color: rgb(219 234 254 / var(--tw-bg-opacity)); -} - -.bg-opacity-50 { - --tw-bg-opacity: 0.5; +.bg-opacity-70 { + --tw-bg-opacity: 0.7; } .bg-opacity-80 { --tw-bg-opacity: 0.8; } -.bg-opacity-70 { - --tw-bg-opacity: 0.7; -} - .fill-\[\#444\] { fill: #444; } @@ -1747,6 +1565,11 @@ video { padding: 2rem; } +.px-1 { + padding-left: 0.25rem; + padding-right: 0.25rem; +} + .px-2 { padding-left: 0.5rem; padding-right: 0.5rem; @@ -1832,20 +1655,6 @@ video { padding-bottom: 2rem; } -.px-1 { - padding-left: 0.25rem; - padding-right: 0.25rem; -} - -.px-12 { - padding-left: 3rem; - padding-right: 3rem; -} - -.pb-1 { - padding-bottom: 0.25rem; -} - .pb-10 { padding-bottom: 2.5rem; } @@ -1854,10 +1663,6 @@ video { padding-bottom: 3rem; } -.pb-16 { - padding-bottom: 4rem; -} - .pb-2 { padding-bottom: 0.5rem; } @@ -1870,10 +1675,6 @@ video { padding-bottom: 6rem; } -.pb-32 { - padding-bottom: 8rem; -} - .pb-4 { padding-bottom: 1rem; } @@ -1906,14 +1707,6 @@ video { padding-right: 0.5rem; } -.pr-4 { - padding-right: 1rem; -} - -.pr-8 { - padding-right: 2rem; -} - .pt-12 { padding-top: 3rem; } @@ -1938,28 +1731,44 @@ video { padding-top: 1rem; } -.pt-6 { - padding-top: 1.5rem; +.pt-8 { + padding-top: 2rem; } -.pb-6 { - padding-bottom: 1.5rem; +.pt-\[6rem\] { + padding-top: 6rem; } -.pl-1 { - padding-left: 0.25rem; +.pt-\[10rem\] { + padding-top: 10rem; } -.pt-8 { +.pt-\[3rem\] { + padding-top: 3rem; +} + +.pt-\[2rem\] { padding-top: 2rem; } -.pt-16 { - padding-top: 4rem; +.pt-\[2\.4rem\] { + padding-top: 2.4rem; +} + +.pt-\[2\.5rem\] { + padding-top: 2.5rem; } -.pt-32 { - padding-top: 8rem; +.pt-\[2\.6rem\] { + padding-top: 2.6rem; +} + +.pt-\[2\.7rem\] { + padding-top: 2.7rem; +} + +.pt-\[2\.75rem\] { + padding-top: 2.75rem; } .text-left { @@ -1978,14 +1787,14 @@ video { vertical-align: middle; } -.font-sans { - font-family: Inter var, sans-serif; -} - .font-mono { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; } +.font-sans { + font-family: Inter var, sans-serif; +} + .text-2xl { font-size: 1.5rem; line-height: 2rem; @@ -2001,20 +1810,28 @@ video { line-height: 1; } -.text-\[1\.2em\] { - font-size: 1.2em; +.text-\[\.75rem\] { + font-size: .75rem; } -.text-\[1\.5em\] { - font-size: 1.5em; +.text-\[1\.25em\] { + font-size: 1.25em; } -.text-\[3\.3em\] { - font-size: 3.3em; +.text-\[1\.5em\] { + font-size: 1.5em; +} + +.text-\[1em\] { + font-size: 1em; +} + +.text-\[2\.5em\] { + font-size: 2.5em; } -.text-\[3em\] { - font-size: 3em; +.text-\[3\.3em\] { + font-size: 3.3em; } .text-base { @@ -2022,6 +1839,11 @@ video { line-height: 1.5rem; } +.text-base\/\[18px\] { + font-size: 1rem; + line-height: 18px; +} + .text-lg { font-size: 1.125rem; line-height: 1.75rem; @@ -2042,61 +1864,6 @@ video { line-height: 1rem; } -.text-xs\/\[8px\] { - font-size: 0.75rem; - line-height: 8px; -} - -.text-xs\/3 { - font-size: 0.75rem; - line-height: .75rem; -} - -.text-\[8px\] { - font-size: 8px; -} - -.text-\[12px\] { - font-size: 12px; -} - -.text-\[10px\] { - font-size: 10px; -} - -.text-base\/\[18px\] { - font-size: 1rem; - line-height: 18px; -} - -.text-\[\.75rem\] { - font-size: .75rem; -} - -.text-\[5em\] { - font-size: 5em; -} - -.text-\[4em\] { - font-size: 4em; -} - -.text-\[2em\] { - font-size: 2em; -} - -.text-\[2\.5em\] { - font-size: 2.5em; -} - -.text-\[1em\] { - font-size: 1em; -} - -.text-\[1\.25em\] { - font-size: 1.25em; -} - .font-bold { font-weight: 700; } @@ -2113,14 +1880,14 @@ video { font-weight: 500; } -.font-semibold { - font-weight: 600; -} - .font-normal { font-weight: 400; } +.font-semibold { + font-weight: 600; +} + .uppercase { text-transform: uppercase; } @@ -2141,22 +1908,14 @@ video { line-height: 1.625; } -.leading-tight { - line-height: 1.25; -} - -.leading-3 { - line-height: .75rem; -} - -.leading-4 { - line-height: 1rem; -} - .leading-snug { line-height: 1.375; } +.leading-tight { + line-height: 1.25; +} + .tracking-tight { letter-spacing: -0.025em; } @@ -2235,32 +1994,19 @@ video { color: rgb(14 165 233 / var(--tw-text-opacity)); } -.text-slate-700 { - --tw-text-opacity: 1; - color: rgb(51 65 85 / var(--tw-text-opacity)); -} - -.text-white { - --tw-text-opacity: 1; - color: rgb(255 255 255 / var(--tw-text-opacity)); -} - -.text-\[\] { - color: ; -} - .text-sky-600 { --tw-text-opacity: 1; color: rgb(2 132 199 / var(--tw-text-opacity)); } -.text-sky-700 { +.text-slate-700 { --tw-text-opacity: 1; - color: rgb(3 105 161 / var(--tw-text-opacity)); + color: rgb(51 65 85 / var(--tw-text-opacity)); } -.underline { - text-decoration-line: underline; +.text-white { + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); } .opacity-0 { @@ -2285,6 +2031,12 @@ video { box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } +.shadow-lg { + --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} + .shadow-md { --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); @@ -2297,12 +2049,6 @@ video { box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } -.shadow-lg { - --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); - --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); -} - .outline-none { outline: 2px solid transparent; outline-offset: 2px; @@ -2347,6 +2093,18 @@ video { transition-duration: 150ms; } +.transition-\[height\] { + transition-property: height; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} + +.transition-\[transform\] { + transition-property: transform; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} + .duration-200 { transition-duration: 200ms; } @@ -2355,6 +2113,10 @@ video { transition-duration: 300ms; } +.duration-500 { + transition-duration: 500ms; +} + .ease-in-out { transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); } @@ -2374,26 +2136,11 @@ video { background-color: rgb(243 244 246 / var(--tw-bg-opacity)); } -.hover\:bg-gray-800:hover { - --tw-bg-opacity: 1; - background-color: rgb(31 41 55 / var(--tw-bg-opacity)); -} - .hover\:bg-indigo-600:hover { --tw-bg-opacity: 1; background-color: rgb(79 70 229 / var(--tw-bg-opacity)); } -.hover\:bg-gray-200:hover { - --tw-bg-opacity: 1; - background-color: rgb(229 231 235 / var(--tw-bg-opacity)); -} - -.hover\:bg-gray-500:hover { - --tw-bg-opacity: 1; - background-color: rgb(107 114 128 / var(--tw-bg-opacity)); -} - .hover\:text-blue-400:hover { --tw-text-opacity: 1; color: rgb(96 165 250 / var(--tw-text-opacity)); @@ -2424,30 +2171,21 @@ video { box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } -.hover\:brightness-50:hover { - --tw-brightness: brightness(.5); - filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); -} - .hover\:brightness-95:hover { --tw-brightness: brightness(.95); filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); } -.hover\:brightness-105:hover { - --tw-brightness: brightness(1.05); - filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); +.focus\:outline-dashed:focus { + outline-style: dashed; } -.hover\:brightness-90:hover { - --tw-brightness: brightness(.9); - filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); +.focus\:outline-2:focus { + outline-width: 2px; } -.hover\:backdrop-brightness-95:hover { - --tw-backdrop-brightness: brightness(.95); - -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); - backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); +.focus\:outline-blue-600:focus { + outline-color: #2563eb; } .group:hover .group-hover\:text-gray-500 { @@ -2481,10 +2219,6 @@ video { width: 50%; } - .sm\:w-full { - width: 100%; - } - .sm\:flex-1 { flex: 1 1 0%; } @@ -2501,16 +2235,6 @@ video { flex-direction: row; } - .sm\:justify-between { - justify-content: space-between; - } - - .sm\:space-x-1 > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(0.25rem * var(--tw-space-x-reverse)); - margin-left: calc(0.25rem * calc(1 - var(--tw-space-x-reverse))); - } - .sm\:rounded-xl { border-radius: 0.75rem; } @@ -2519,10 +2243,6 @@ video { text-align: left; } - .sm\:align-middle { - vertical-align: middle; - } - .sm\:text-3xl { font-size: 1.875rem; line-height: 2.25rem; @@ -2530,6 +2250,10 @@ video { } @media (min-width: 768px) { + .md\:relative { + position: relative; + } + .md\:sticky { position: sticky; } @@ -2538,34 +2262,25 @@ video { z-index: 0; } - .md\:m-8 { - margin: 2rem; - } - - .md\:m-4 { - margin: 1rem; - } - .md\:mx-0 { margin-left: 0px; margin-right: 0px; } - .md\:mx-2 { - margin-left: 0.5rem; - margin-right: 0.5rem; - } - .md\:mb-0 { margin-bottom: 0px; } + .md\:mb-12 { + margin-bottom: 3rem; + } + .md\:mb-16 { margin-bottom: 4rem; } - .md\:ml-0 { - margin-left: 0px; + .md\:mb-32 { + margin-bottom: 8rem; } .md\:mr-3 { @@ -2576,14 +2291,6 @@ video { margin-top: 0px; } - .md\:mb-32 { - margin-bottom: 8rem; - } - - .md\:mb-12 { - margin-bottom: 3rem; - } - .md\:block { display: block; } @@ -2596,38 +2303,18 @@ video { display: flex; } - .md\:hidden { - display: none; - } - - .md\:h-96 { - height: 24rem; - } - - .md\:h-\[calc\(100vh-2rem\)\] { - height: calc(100vh - 2rem); - } - .md\:h-8 { height: 2rem; } - .md\:h-\[calc\(100vh-4rem\)\] { - height: calc(100vh - 4rem); + .md\:h-96 { + height: 24rem; } .md\:min-h-\[640px\] { min-height: 640px; } - .md\:min-h-\[720px\] { - min-height: 720px; - } - - .md\:min-h-\[840px\] { - min-height: 840px; - } - .md\:w-1\/2 { width: 50%; } @@ -2644,20 +2331,12 @@ video { width: 100%; } - .md\:max-w-screen-md { - max-width: 768px; - } - - .md\:max-w-screen-2xl { - max-width: 1536px; - } - .md\:max-w-\[360px\] { max-width: 360px; } - .md\:flex-1 { - flex: 1 1 0%; + .md\:max-w-screen-md { + max-width: 768px; } .md\:flex-grow { @@ -2684,16 +2363,12 @@ video { justify-content: flex-start; } - .md\:gap-12 { - gap: 3rem; - } - - .md\:gap-2 { - gap: 0.5rem; + .md\:justify-between { + justify-content: space-between; } - .md\:gap-4 { - gap: 1rem; + .md\:gap-12 { + gap: 3rem; } .md\:space-x-4 > :not([hidden]) ~ :not([hidden]) { @@ -2702,34 +2377,16 @@ video { margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse))); } - .md\:space-y-0 > :not([hidden]) ~ :not([hidden]) { - --tw-space-y-reverse: 0; - margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(0px * var(--tw-space-y-reverse)); - } - - .md\:space-x-2 > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(0.5rem * var(--tw-space-x-reverse)); - margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse))); - } - .md\:space-x-6 > :not([hidden]) ~ :not([hidden]) { --tw-space-x-reverse: 0; margin-right: calc(1.5rem * var(--tw-space-x-reverse)); margin-left: calc(1.5rem * calc(1 - var(--tw-space-x-reverse))); } - .md\:p-2 { - padding: 0.5rem; - } - - .md\:p-6 { - padding: 1.5rem; - } - - .md\:p-4 { - padding: 1rem; + .md\:space-y-0 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(0px * var(--tw-space-y-reverse)); } .md\:px-0 { @@ -2747,36 +2404,21 @@ video { padding-right: 4rem; } - .md\:px-3 { - padding-left: 0.75rem; - padding-right: 0.75rem; - } - - .md\:py-2 { - padding-top: 0.5rem; - padding-bottom: 0.5rem; - } - - .md\:py-1 { - padding-top: 0.25rem; - padding-bottom: 0.25rem; - } - .md\:px-2 { padding-left: 0.5rem; padding-right: 0.5rem; } + .md\:px-3 { + padding-left: 0.75rem; + padding-right: 0.75rem; + } + .md\:px-4 { padding-left: 1rem; padding-right: 1rem; } - .md\:py-0 { - padding-top: 0px; - padding-bottom: 0px; - } - .md\:pb-10 { padding-bottom: 2.5rem; } @@ -2801,14 +2443,6 @@ video { padding-top: 2rem; } - .md\:pr-2 { - padding-right: 0.5rem; - } - - .md\:pl-2 { - padding-left: 0.5rem; - } - .md\:text-left { text-align: left; } @@ -2818,6 +2452,10 @@ video { line-height: 2.5rem; } + .md\:text-\[1\.2em\] { + font-size: 1.2em; + } + .md\:text-\[14px\] { font-size: 14px; } @@ -2826,8 +2464,8 @@ video { font-size: 3.3em; } - .md\:text-\[3em\] { - font-size: 3em; + .md\:text-\[4em\] { + font-size: 4em; } .md\:text-sm { @@ -2835,23 +2473,6 @@ video { line-height: 1.25rem; } - .md\:text-xs { - font-size: 0.75rem; - line-height: 1rem; - } - - .md\:text-\[5em\] { - font-size: 5em; - } - - .md\:text-\[4em\] { - font-size: 4em; - } - - .md\:text-\[1\.2em\] { - font-size: 1.2em; - } - .md\:leading-tight { line-height: 1.25; } @@ -2867,11 +2488,6 @@ video { grid-column: span 7 / span 7; } - .lg\:mx-24 { - margin-left: 6rem; - margin-right: 6rem; - } - .lg\:mx-auto { margin-left: auto; margin-right: auto; @@ -2913,10 +2529,6 @@ video { width: 40%; } - .lg\:flex-1 { - flex: 1 1 0%; - } - .lg\:grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } @@ -2925,14 +2537,6 @@ video { align-items: flex-start; } - .lg\:justify-start { - justify-content: flex-start; - } - - .lg\:gap-24 { - gap: 6rem; - } - .lg\:gap-12 { gap: 3rem; } @@ -2941,19 +2545,6 @@ video { background-color: inherit; } - .lg\:py-2 { - padding-top: 0.5rem; - padding-bottom: 0.5rem; - } - - .lg\:pr-2 { - padding-right: 0.5rem; - } - - .lg\:text-left { - text-align: left; - } - .lg\:text-5xl { font-size: 3rem; line-height: 1; @@ -2990,18 +2581,6 @@ video { height: 31.625rem; } - .xl\:w-40 { - width: 10rem; - } - - .xl\:max-w-\[14rem\] { - max-width: 14rem; - } - - .xl\:max-w-\[16rem\] { - max-width: 16rem; - } - .xl\:max-w-\[12rem\] { max-width: 12rem; } @@ -3020,6 +2599,10 @@ video { display: none; } + .dark\:border-\[\#a4a9ac7d\] { + border-color: #a4a9ac7d; + } + .dark\:border-gray-700 { --tw-border-opacity: 1; border-color: rgb(55 65 81 / var(--tw-border-opacity)); @@ -3035,15 +2618,21 @@ video { border-color: rgb(68 64 60 / var(--tw-border-opacity)); } - .dark\:border-\[\#a4a9ac7d\] { - border-color: #a4a9ac7d; - } - .dark\:bg-\[\#111111\] { --tw-bg-opacity: 1; background-color: rgb(17 17 17 / var(--tw-bg-opacity)); } + .dark\:bg-ghdarkmetal { + --tw-bg-opacity: 1; + background-color: rgb(22 27 34 / var(--tw-bg-opacity)); + } + + .dark\:bg-gray-300 { + --tw-bg-opacity: 1; + background-color: rgb(209 213 219 / var(--tw-bg-opacity)); + } + .dark\:bg-gray-700 { --tw-bg-opacity: 1; background-color: rgb(55 65 81 / var(--tw-bg-opacity)); @@ -3063,46 +2652,11 @@ video { background-color: rgb(23 23 23 / 0.7); } - .dark\:bg-slate-600 { - --tw-bg-opacity: 1; - background-color: rgb(71 85 105 / var(--tw-bg-opacity)); - } - .dark\:bg-slate-800 { --tw-bg-opacity: 1; background-color: rgb(30 41 59 / var(--tw-bg-opacity)); } - .dark\:bg-ghdarkmetal { - --tw-bg-opacity: 1; - background-color: rgb(22 27 34 / var(--tw-bg-opacity)); - } - - .dark\:bg-gray-600 { - --tw-bg-opacity: 1; - background-color: rgb(75 85 99 / var(--tw-bg-opacity)); - } - - .dark\:bg-gray-300 { - --tw-bg-opacity: 1; - background-color: rgb(209 213 219 / var(--tw-bg-opacity)); - } - - .dark\:bg-gray-100 { - --tw-bg-opacity: 1; - background-color: rgb(243 244 246 / var(--tw-bg-opacity)); - } - - .dark\:bg-gray-200 { - --tw-bg-opacity: 1; - background-color: rgb(229 231 235 / var(--tw-bg-opacity)); - } - - .dark\:bg-gray-400 { - --tw-bg-opacity: 1; - background-color: rgb(156 163 175 / var(--tw-bg-opacity)); - } - .dark\:bg-opacity-80 { --tw-bg-opacity: 0.8; } @@ -3184,6 +2738,11 @@ video { backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); } + .dark\:hover\:bg-ghdarkmetal:hover { + --tw-bg-opacity: 1; + background-color: rgb(22 27 34 / var(--tw-bg-opacity)); + } + .dark\:hover\:bg-gray-500:hover { --tw-bg-opacity: 1; background-color: rgb(107 114 128 / var(--tw-bg-opacity)); @@ -3194,11 +2753,6 @@ video { background-color: rgb(14 17 22 / var(--tw-bg-opacity)); } - .dark\:hover\:bg-ghdarkmetal:hover { - --tw-bg-opacity: 1; - background-color: rgb(22 27 34 / var(--tw-bg-opacity)); - } - .dark\:hover\:text-gray-300:hover { --tw-text-opacity: 1; color: rgb(209 213 219 / var(--tw-text-opacity)); @@ -3214,9 +2768,3 @@ video { filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); } } - -@media(min-height:720px) { - .\[\@media\(min-height\:720px\)\]\:h-\[calc\(100vh\)\] { - height: calc(100vh); - } -} diff --git a/docs-src/0.5/src/SUMMARY.md b/docs-src/0.5/src/SUMMARY.md index de29c9e5d..6d9280c57 100644 --- a/docs-src/0.5/src/SUMMARY.md +++ b/docs-src/0.5/src/SUMMARY.md @@ -16,6 +16,7 @@ - [State and Interactivity](guide/state.md) - [App Routing](guide/routing.md) - [Data Fetching](guide/fetching.md) + - [Adding Platforms](guide/multiplatform.md) - [Backend](guide/backend.md) - [Deploying](guide/deploy.md) - [Next Steps](guide/next_steps.md) diff --git a/docs-src/0.5/src/guide/multiplatform.md b/docs-src/0.5/src/guide/multiplatform.md new file mode 100644 index 000000000..e69de29bb diff --git a/src/components/learn.rs b/src/components/learn.rs index e0ca1365e..8e4e58c51 100644 --- a/src/components/learn.rs +++ b/src/components/learn.rs @@ -39,14 +39,18 @@ fn LeftNav() -> Element { ]; rsx! { + div { - class: "absolute z-30 md:h-[calc(100vh-4rem)] flex-col justify-end gap-4 overflow-x-hidden md:px-4 pt-4 md:pt-8 md:sticky md:z-0 md:flex md:w-auto bg-white dark:bg-ideblack lg:bg-inherit px-4", + class: " + overflow-y-hidden lg:block pt-[2.75rem] ml-12 h-full mb-2 md:text-[14px] leading-5 text-gray-700 absolute md:sticky dark:text-gray-400 top-0 + bg-white dark:bg-ideblack lg:bg-inherit space-y-2 + ", class: if SHOW_SIDEBAR() { "w-screen" } else { "hidden" }, VersionSwitch {} nav { class: " styled-scrollbar - pl-2 pb-2 z-20 text-base sm:block top-28 - md:w-60 lg:text-[14px] content-start text-gray-600 dark:text-gray-400 h-full overflow-y-scroll pr-2 space-y-1", + pl-2 pb-2 z-20 text-base sm:block top-28 h-[88vh] + md:w-60 lg:text-[14px] content-start text-gray-600 dark:text-gray-400 overflow-y-scroll pr-2 space-y-1", // DocVersionNav {} @@ -75,7 +79,7 @@ fn VersionSwitch() -> Element { onfocusout: move |_| show_versions.set(false), onclick: move |_| show_versions.set(true), div { class: " hover:bg-gray-100 dark:hover:bg-ghdarkmetal rounded w-full", - div { class: "grid grid-cols-[auto,1fr,auto] items-center gap-2 px-1 py-2", + div { class: "grid grid-cols-[auto,1fr,auto] items-center gap-2 px-1", div { div { class: "w-8 h-8 rounded-md border flex items-center justify-center bg-gray-50 border-gray-200 text-gray-900", svg { @@ -217,8 +221,10 @@ fn SidebarChapter(chapter: &'static SummaryItem) -> Element { } } } - if show_dropdown && !link.nested_items.is_empty() { - ul { class: "border-l border-gray-300 px-4 ml-2 space-y-1 py-2", + if !link.nested_items.is_empty() { + ul { + class: "border-l border-gray-300 px-4 ml-2 space-y-1 py-2 transition-[transform] duration-500 ease-in-out ", + class: if show_dropdown { "block transform translate-y-0" } else { "hidden transform translate-y-12" }, for chapter in link.nested_items.iter() { SidebarChapter { chapter } } @@ -250,7 +256,7 @@ fn RightNav() -> Element { // That might be a naive approach, but it's the easiest rsx! { - div { class: "overflow-y-auto hidden xl:block top-28 ml-12 h-full md:text-[14px] leading-5 text-gray-700 w-48 sticky dark:text-gray-400", + div { class: "overflow-y-auto hidden xl:block top-28 ml-12 h-full md:text-[14px] leading-5 text-gray-600 w-48 sticky dark:text-gray-400", div { class: "border-b pb-2 dark:border-[#a4a9ac7d]", h2 { class: "pb-2 font-semibold text-gray-600 dark:text-gray-100", "On this page" @@ -296,81 +302,14 @@ fn RightNav() -> Element { } fn Content() -> Element { - let route: BookRoute = use_book(); - - let id = route.page_id(); - let prev_id = id.0.saturating_sub(1); - let next_id = id.0.saturating_add(1); - let prev_page = LAZY_BOOK.pages.get(prev_id); - let next_page = LAZY_BOOK.pages.get(next_id); - rsx! { - section { class: "text-gray-600 dark:text-gray-300 body-font overflow-hidden dark:bg-ideblack container pb-12 max-w-screen-sm px-4 pt-8 grow", - div { class: "-py-8", + section { class: "text-gray-600 dark:text-gray-300 body-font overflow-hidden dark:bg-ideblack container pb-12 max-w-screen-sm px-4 pt-[2.75rem] grow min-h-[96vh]", + div { class: "space-y-8", Breadcrumbs {} - div { class: "flex w-full mb-12 flex-wrap list-none", + div { class: "flex w-full flex-wrap list-none", article { class: "markdown-body", Outlet:: {} } } - div { class: "flex flex-row w-full", - if let Some(prev_page) = prev_page { - Link { - class: "text-gray-700 dark:text-gray-100 p-4 rounded text-left flex-1 ", - to: Route::Docs { - child: prev_page.url, - }, - div { class: "flex flex-row items-center gap-x-2 hover:text-sky-500 dark:hover:text-sky-400", - svg { - "viewBox": "0 0 16 16", - width: "16", - style: "width: 20px; height: 20px; color: currentcolor;", - "data-testid": "geist-icon", - height: "16", - "stroke-linejoin": "round", - path { - d: "M10.5 14.0607L9.96966 13.5303L5.14644 8.7071C4.75592 8.31658 4.75592 7.68341 5.14644 7.29289L9.96966 2.46966L10.5 1.93933L11.5607 2.99999L11.0303 3.53032L6.56065 7.99999L11.0303 12.4697L11.5607 13L10.5 14.0607Z", - "clip-rule": "evenodd", - fill: "currentColor", - "fill-rule": "evenodd", - } - } - div { class: "flex flex-col", - span { class: "text-xs", "PREVIOUS" } - span { class: "font-semibold", "{prev_page.title}" } - } - } - } - } - - - if let Some(next_page) = next_page { - Link { - class: "text-gray-700 dark:text-gray-100 p-4 rounded text-right flex-1", - to: Route::Docs { - child: next_page.url, - }, - div { class: "flex flex-row items-center gap-x-2 justify-end hover:text-sky-500 dark:hover:text-sky-400", - div { class: "flex flex-col", - span { class: "text-xs", "NEXT" } - span { class: "font-semibold", "{next_page.title}" } - } - svg { - height: "16", - width: "16", - "stroke-linejoin": "round", - "viewBox": "0 0 16 16", - style: "width: 20px; height: 20px; color: currentcolor;", - "data-testid": "geist-icon", - path { - d: "M5.50001 1.93933L6.03034 2.46966L10.8536 7.29288C11.2441 7.68341 11.2441 8.31657 10.8536 8.7071L6.03034 13.5303L5.50001 14.0607L4.43935 13L4.96968 12.4697L9.43935 7.99999L4.96968 3.53032L4.43935 2.99999L5.50001 1.93933Z", - "clip-rule": "evenodd", - "fill-rule": "evenodd", - fill: "currentColor", - } - } - } - } - } - } + NextPrev {} } } } @@ -387,9 +326,8 @@ fn Breadcrumbs() -> Element { } rsx! { - div { - class: "flex flex-row space-x-2 mb-7 font-extralight", - class: if route == (BookRoute::Index {}) { "hidden" }, + div { class: "flex flex-row space-x-2 font-extralight", + // class: if route == (BookRoute::Index {}) { "hidden" }, Link { to: Route::Docs { child: BookRoute::Index {}, @@ -410,6 +348,79 @@ fn Breadcrumbs() -> Element { } } +fn NextPrev() -> Element { + let route: BookRoute = use_book(); + + let id = route.page_id(); + let prev_id = id.0.saturating_sub(1); + let next_id = id.0.saturating_add(1); + let prev_page = LAZY_BOOK.pages.get(prev_id); + let next_page = LAZY_BOOK.pages.get(next_id); + + rsx! { + div { class: "flex flex-row w-full", + if let Some(prev_page) = prev_page { + Link { + class: "text-gray-700 dark:text-gray-100 p-4 rounded text-left flex-1 ", + to: Route::Docs { + child: prev_page.url, + }, + div { class: "flex flex-row items-center gap-x-2 hover:text-sky-500 dark:hover:text-sky-400", + svg { + "viewBox": "0 0 16 16", + width: "16", + style: "width: 20px; height: 20px; color: currentcolor;", + "data-testid": "geist-icon", + height: "16", + "stroke-linejoin": "round", + path { + d: "M10.5 14.0607L9.96966 13.5303L5.14644 8.7071C4.75592 8.31658 4.75592 7.68341 5.14644 7.29289L9.96966 2.46966L10.5 1.93933L11.5607 2.99999L11.0303 3.53032L6.56065 7.99999L11.0303 12.4697L11.5607 13L10.5 14.0607Z", + "clip-rule": "evenodd", + fill: "currentColor", + "fill-rule": "evenodd", + } + } + div { class: "flex flex-col", + span { class: "text-xs", "PREVIOUS" } + span { class: "font-semibold", "{prev_page.title}" } + } + } + } + } + + + if let Some(next_page) = next_page { + Link { + class: "text-gray-700 dark:text-gray-100 p-4 rounded text-right flex-1", + to: Route::Docs { + child: next_page.url, + }, + div { class: "flex flex-row items-center gap-x-2 justify-end hover:text-sky-500 dark:hover:text-sky-400", + div { class: "flex flex-col", + span { class: "text-xs", "NEXT" } + span { class: "font-semibold", "{next_page.title}" } + } + svg { + height: "16", + width: "16", + "stroke-linejoin": "round", + "viewBox": "0 0 16 16", + style: "width: 20px; height: 20px; color: currentcolor;", + "data-testid": "geist-icon", + path { + d: "M5.50001 1.93933L6.03034 2.46966L10.8536 7.29288C11.2441 7.68341 11.2441 8.31657 10.8536 8.7071L6.03034 13.5303L5.50001 14.0607L4.43935 13L4.96968 12.4697L9.43935 7.99999L4.96968 3.53032L4.43935 2.99999L5.50001 1.93933Z", + "clip-rule": "evenodd", + "fill-rule": "evenodd", + fill: "currentColor", + } + } + } + } + } + } + } +} + /// Get the book URL from the current URL /// Ignores language and version (for now) fn use_book() -> BookRoute { diff --git a/src/doc_examples/eval.rs b/src/doc_examples/eval.rs index 96240f971..4a9d441bc 100644 --- a/src/doc_examples/eval.rs +++ b/src/doc_examples/eval.rs @@ -6,7 +6,7 @@ fn main() { fn app() -> Element { // You can create as many eval instances as you want - let mut eval = eval( + let mut eval = document::eval( r#" // You can send messages from JavaScript to Rust with the dioxus.send function dioxus.send("Hi from JS!"); @@ -19,16 +19,17 @@ fn app() -> Element { // You can send messages to JavaScript with the send method eval.send("Hi from Rust!".into()).unwrap(); - let future = use_resource(move || { - to_owned![eval]; - async move { - // You can receive any message from JavaScript with the recv method - eval.recv().await.unwrap() - } + let future = use_resource(move || async move { + // You can receive any message from JavaScript with the recv method + eval.recv().await.unwrap() }); match future.read_unchecked().as_ref() { - Some(v) => rsx! { p { "{v}" } }, - _ => rsx! { p { "hello" } }, + Some(v) => rsx! { + p { "{v}" } + }, + _ => rsx! { + p { "hello" } + }, } } diff --git a/src/doc_examples/use_effect.rs b/src/doc_examples/use_effect.rs index f86d53df2..9fd6f1980 100644 --- a/src/doc_examples/use_effect.rs +++ b/src/doc_examples/use_effect.rs @@ -6,7 +6,7 @@ fn Profile(id: ReadOnlySignal) -> Element { // Only change the page title when the id changes use_effect(move || { // We read the id signal here, so it will automatically be added as a dependency for the effect - eval(&format!("document.title = 'Profile #{}';", id)); + document::eval(&format!("document.title = 'Profile #{}';", id)); }); // Because there are no dependencies, this effect will only run once. @@ -20,11 +20,15 @@ fn Profile(id: ReadOnlySignal) -> Element { tracing::info!("Profile #{}", non_reactive_state); })); - rsx! { div { "Profile #{id}" } } + rsx! { + div { "Profile #{id}" } + } } fn app() -> Element { - rsx! { Profile { id: 0 } } + rsx! { + Profile { id: 0 } + } } // ANCHOR_END: app diff --git a/src/main.rs b/src/main.rs index cce0e21ce..61c17ae2d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -163,7 +163,7 @@ mod docs { fn DemoFrame(children: Element) -> Element { rsx! { div { - class: "bg-white rounded-md shadow-md p-4 my-4 overflow-scroll text-black dioxus-demo", + class: "bg-white rounded-md shadow-md p-4 my-4 overflow-auto text-black dioxus-demo", max_height: "50vh", {children} } From 91d274d77389fef2c30b1f21478c06fa07f9ea52 Mon Sep 17 00:00:00 2001 From: Jonathan Kelley Date: Wed, 23 Oct 2024 22:08:07 -0700 Subject: [PATCH 35/35] scrolling woes are done --- assets/tailwind.css | 441 +++++++++++++++++++++----------- docs-src/0.5/src/SUMMARY.md | 2 +- src/components/footer.rs | 83 +++--- src/components/homepage.rs | 4 +- src/components/homepage/hero.rs | 86 +++---- src/components/learn.rs | 60 ++--- src/components/nav.rs | 96 +++++-- src/main.rs | 4 +- tailwind.config.js | 2 +- 9 files changed, 461 insertions(+), 317 deletions(-) diff --git a/assets/tailwind.css b/assets/tailwind.css index 55931fc1d..08d04f27f 100644 --- a/assets/tailwind.css +++ b/assets/tailwind.css @@ -600,6 +600,10 @@ video { border-width: 0; } +.invisible { + visibility: hidden; +} + .static { position: static; } @@ -758,10 +762,6 @@ video { margin-bottom: 3rem; } -.mb-16 { - margin-bottom: 4rem; -} - .mb-2 { margin-bottom: 0.5rem; } @@ -822,10 +822,6 @@ video { margin-top: auto; } -.mt-\[2\.75rem\] { - margin-top: 2.75rem; -} - .block { display: block; } @@ -906,14 +902,14 @@ video { height: 31.625rem; } -.h-\[90vh\] { - height: 90vh; -} - .h-\[calc\(100vh-4rem\)\] { height: calc(100vh - 4rem); } +.h-auto { + height: auto; +} + .h-full { height: 100%; } @@ -922,32 +918,32 @@ video { height: 1px; } -.h-\[92vh\] { - height: 92vh; +.h-96 { + height: 24rem; } -.h-\[88vh\] { - height: 88vh; +.h-48 { + height: 12rem; } -.h-\[85vh\] { - height: 85vh; +.h-screen { + height: 100vh; } -.h-\[86vh\] { - height: 86vh; +.h-\[120vh\] { + height: 120vh; } -.h-\[87vh\] { - height: 87vh; +.h-\[calc\(100\%-28px\)\] { + height: calc(100% - 28px); } -.h-screen { - height: 100vh; +.h-\[calc\(100\%-280px\)\] { + height: calc(100% - 280px); } -.h-0 { - height: 0px; +.h-\[\] { + height: ; } .max-h-48 { @@ -958,40 +954,36 @@ video { max-height: 60vh; } +.max-h-\[960px\] { + max-height: 960px; +} + .max-h-\[calc\(100\%-8rem\)\] { max-height: calc(100% - 8rem); } +.max-h-80 { + max-height: 20rem; +} + .min-h-0 { min-height: 0px; } -.min-h-\[640px\] { - min-height: 640px; +.min-h-\[100vh\] { + min-height: 100vh; } .min-h-\[760px\] { min-height: 760px; } -.min-h-screen { - min-height: 100vh; -} - -.min-h-\[92vh\] { - min-height: 92vh; -} - -.min-h-\[94vh\] { - min-height: 94vh; +.min-h-\[120vh\] { + min-height: 120vh; } -.min-h-\[95vh\] { - min-height: 95vh; -} - -.min-h-\[96vh\] { - min-height: 96vh; +.min-h-\[90vh\] { + min-height: 90vh; } .w-0 { @@ -1094,6 +1086,10 @@ video { max-width: 1280px; } +.max-w-96 { + max-width: 24rem; +} + .flex-1 { flex: 1 1 0%; } @@ -1110,6 +1106,10 @@ video { flex-shrink: 0; } +.flex-shrink { + flex-shrink: 1; +} + .flex-grow { flex-grow: 1; } @@ -1127,11 +1127,6 @@ video { transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); } -.translate-y-px { - --tw-translate-y: 1px; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - .translate-y-0 { --tw-translate-y: 0px; transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); @@ -1142,6 +1137,11 @@ video { transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); } +.translate-y-px { + --tw-translate-y: 1px; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + .transform { transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); } @@ -1188,10 +1188,18 @@ video { flex-direction: row; } +.flex-row-reverse { + flex-direction: row-reverse; +} + .flex-col { flex-direction: column; } +.flex-col-reverse { + flex-direction: column-reverse; +} + .flex-wrap { flex-wrap: wrap; } @@ -1236,6 +1244,10 @@ video { gap: 0.5rem; } +.gap-3 { + gap: 0.75rem; +} + .gap-4 { gap: 1rem; } @@ -1248,6 +1260,14 @@ video { gap: 2rem; } +.gap-5 { + gap: 1.25rem; +} + +.gap-10 { + gap: 2.5rem; +} + .gap-x-1 { -moz-column-gap: 0.25rem; column-gap: 0.25rem; @@ -1258,6 +1278,11 @@ video { column-gap: 0.5rem; } +.gap-x-\[5rem\] { + -moz-column-gap: 5rem; + column-gap: 5rem; +} + .space-x-1\.5 > :not([hidden]) ~ :not([hidden]) { --tw-space-x-reverse: 0; margin-right: calc(0.375rem * var(--tw-space-x-reverse)); @@ -1276,22 +1301,16 @@ video { margin-bottom: calc(0.25rem * var(--tw-space-y-reverse)); } -.space-y-4 > :not([hidden]) ~ :not([hidden]) { - --tw-space-y-reverse: 0; - margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(1rem * var(--tw-space-y-reverse)); -} - .space-y-2 > :not([hidden]) ~ :not([hidden]) { --tw-space-y-reverse: 0; margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse))); margin-bottom: calc(0.5rem * var(--tw-space-y-reverse)); } -.space-y-6 > :not([hidden]) ~ :not([hidden]) { +.space-y-4 > :not([hidden]) ~ :not([hidden]) { --tw-space-y-reverse: 0; - margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(1.5rem * var(--tw-space-y-reverse)); + margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(1rem * var(--tw-space-y-reverse)); } .space-y-8 > :not([hidden]) ~ :not([hidden]) { @@ -1300,6 +1319,12 @@ video { margin-bottom: calc(2rem * var(--tw-space-y-reverse)); } +.space-x-4 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(1rem * var(--tw-space-x-reverse)); + margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse))); +} + .divide-y > :not([hidden]) ~ :not([hidden]) { --tw-divide-y-reverse: 0; border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse))); @@ -1325,6 +1350,10 @@ video { overflow: hidden; } +.overflow-scroll { + overflow: scroll; +} + .overflow-y-auto { overflow-y: auto; } @@ -1345,6 +1374,22 @@ video { white-space: nowrap; } +.text-nowrap { + text-wrap: nowrap; +} + +.text-balance { + text-wrap: balance; +} + +.break-all { + word-break: break-all; +} + +.break-keep { + word-break: keep-all; +} + .rounded { border-radius: 0.25rem; } @@ -1432,6 +1477,10 @@ video { border-color: rgb(99 102 241 / var(--tw-border-opacity)); } +.border-inherit { + border-color: inherit; +} + .border-neutral-500\/30 { border-color: rgb(115 115 115 / 0.3); } @@ -1446,14 +1495,18 @@ video { border-color: rgb(255 255 255 / var(--tw-border-opacity)); } -.bg-blue-500 { +.border-\[\#a4a9ac7d\] { + border-color: #a4a9ac7d; +} + +.bg-\[\#EDEDED\] { --tw-bg-opacity: 1; - background-color: rgb(59 130 246 / var(--tw-bg-opacity)); + background-color: rgb(237 237 237 / var(--tw-bg-opacity)); } -.bg-dxblue { +.bg-blue-500 { --tw-bg-opacity: 1; - background-color: rgb(0 168 214 / var(--tw-bg-opacity)); + background-color: rgb(59 130 246 / var(--tw-bg-opacity)); } .bg-dxorange { @@ -1655,6 +1708,11 @@ video { padding-bottom: 2rem; } +.px-12 { + padding-left: 3rem; + padding-right: 3rem; +} + .pb-10 { padding-bottom: 2.5rem; } @@ -1707,10 +1765,18 @@ video { padding-right: 0.5rem; } +.pt-1 { + padding-top: 0.25rem; +} + .pt-12 { padding-top: 3rem; } +.pt-16 { + padding-top: 4rem; +} + .pt-2 { padding-top: 0.5rem; } @@ -1735,40 +1801,8 @@ video { padding-top: 2rem; } -.pt-\[6rem\] { - padding-top: 6rem; -} - -.pt-\[10rem\] { - padding-top: 10rem; -} - -.pt-\[3rem\] { - padding-top: 3rem; -} - -.pt-\[2rem\] { - padding-top: 2rem; -} - -.pt-\[2\.4rem\] { - padding-top: 2.4rem; -} - -.pt-\[2\.5rem\] { - padding-top: 2.5rem; -} - -.pt-\[2\.6rem\] { - padding-top: 2.6rem; -} - -.pt-\[2\.7rem\] { - padding-top: 2.7rem; -} - -.pt-\[2\.75rem\] { - padding-top: 2.75rem; +.pb-9 { + padding-bottom: 2.25rem; } .text-left { @@ -1880,10 +1914,6 @@ video { font-weight: 500; } -.font-normal { - font-weight: 400; -} - .font-semibold { font-weight: 600; } @@ -1892,6 +1922,10 @@ video { text-transform: uppercase; } +.italic { + font-style: italic; +} + .leading-5 { line-height: 1.25rem; } @@ -1900,6 +1934,10 @@ video { line-height: 1.5rem; } +.leading-loose { + line-height: 2; +} + .leading-none { line-height: 1; } @@ -2009,6 +2047,16 @@ video { color: rgb(255 255 255 / var(--tw-text-opacity)); } +.placeholder-gray-200::-moz-placeholder { + --tw-placeholder-opacity: 1; + color: rgb(229 231 235 / var(--tw-placeholder-opacity)); +} + +.placeholder-gray-200::placeholder { + --tw-placeholder-opacity: 1; + color: rgb(229 231 235 / var(--tw-placeholder-opacity)); +} + .opacity-0 { opacity: 0; } @@ -2043,6 +2091,12 @@ video { box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } +.shadow-pop { + --tw-shadow: 0px 0px 10px -2px rgba(0, 0, 0, 0.1); + --tw-shadow-colored: 0px 0px 10px -2px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} + .shadow-xl { --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1); --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color); @@ -2081,25 +2135,19 @@ video { transition-duration: 150ms; } -.transition-colors { - transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms; -} - -.transition-transform { +.transition-\[transform\] { transition-property: transform; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; } -.transition-\[height\] { - transition-property: height; +.transition-colors { + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; } -.transition-\[transform\] { +.transition-transform { transition-property: transform; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; @@ -2166,8 +2214,8 @@ video { } .hover\:shadow-pop:hover { - --tw-shadow: 0px 0px 30px -10px rgba(0, 0, 0, 0.5); - --tw-shadow-colored: 0px 0px 30px -10px var(--tw-shadow-color); + --tw-shadow: 0px 0px 10px -2px rgba(0, 0, 0, 0.1); + --tw-shadow-colored: 0px 0px 10px -2px var(--tw-shadow-color); box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } @@ -2250,16 +2298,12 @@ video { } @media (min-width: 768px) { - .md\:relative { - position: relative; - } - .md\:sticky { position: sticky; } - .md\:z-0 { - z-index: 0; + .md\:top-28 { + top: 7rem; } .md\:mx-0 { @@ -2271,18 +2315,10 @@ video { margin-bottom: 0px; } - .md\:mb-12 { - margin-bottom: 3rem; - } - .md\:mb-16 { margin-bottom: 4rem; } - .md\:mb-32 { - margin-bottom: 8rem; - } - .md\:mr-3 { margin-right: 0.75rem; } @@ -2303,16 +2339,28 @@ video { display: flex; } - .md\:h-8 { - height: 2rem; + .md\:hidden { + display: none; } .md\:h-96 { height: 24rem; } - .md\:min-h-\[640px\] { - min-height: 640px; + .md\:h-\[88vh\] { + height: 88vh; + } + + .md\:h-48 { + height: 12rem; + } + + .md\:min-h-\[520px\] { + min-height: 520px; + } + + .md\:min-h-\[88vh\] { + min-height: 88vh; } .md\:w-1\/2 { @@ -2343,6 +2391,10 @@ video { flex-grow: 1; } + .md\:flex-grow-0 { + flex-grow: 0; + } + .md\:grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } @@ -2363,12 +2415,8 @@ video { justify-content: flex-start; } - .md\:justify-between { - justify-content: space-between; - } - - .md\:gap-12 { - gap: 3rem; + .md\:gap-6 { + gap: 1.5rem; } .md\:space-x-4 > :not([hidden]) ~ :not([hidden]) { @@ -2414,9 +2462,9 @@ video { padding-right: 0.75rem; } - .md\:px-4 { - padding-left: 1rem; - padding-right: 1rem; + .md\:py-0 { + padding-top: 0px; + padding-bottom: 0px; } .md\:pb-10 { @@ -2431,16 +2479,8 @@ video { padding-top: 6rem; } - .md\:pt-32 { - padding-top: 8rem; - } - - .md\:pt-4 { - padding-top: 1rem; - } - - .md\:pt-8 { - padding-top: 2rem; + .md\:pt-\[3\.125rem\] { + padding-top: 3.125rem; } .md\:text-left { @@ -2452,14 +2492,14 @@ video { line-height: 2.5rem; } - .md\:text-\[1\.2em\] { - font-size: 1.2em; - } - .md\:text-\[14px\] { font-size: 14px; } + .md\:text-\[1em\] { + font-size: 1em; + } + .md\:text-\[3\.3em\] { font-size: 3.3em; } @@ -2473,10 +2513,19 @@ video { line-height: 1.25rem; } + .md\:text-\[3\.5em\] { + font-size: 3.5em; + } + .md\:leading-tight { line-height: 1.25; } + .md\:hover\:-translate-y-1:hover { + --tw-translate-y: -0.25rem; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + } + .md\:hover\:-translate-y-2:hover { --tw-translate-y: -0.5rem; transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); @@ -2493,6 +2542,11 @@ video { margin-right: auto; } + .lg\:mx-0 { + margin-left: 0px; + margin-right: 0px; + } + .lg\:mt-0 { margin-top: 0px; } @@ -2513,10 +2567,30 @@ video { height: 34.6875rem; } + .lg\:h-96 { + height: 24rem; + } + + .lg\:h-72 { + height: 18rem; + } + + .lg\:h-80 { + height: 20rem; + } + .lg\:max-h-96 { max-height: 24rem; } + .lg\:max-h-\[30rem\] { + max-height: 30rem; + } + + .lg\:max-h-\[20rem\] { + max-height: 20rem; + } + .lg\:w-1\/3 { width: 33.333333%; } @@ -2529,14 +2603,30 @@ video { width: 40%; } + .lg\:flex-1 { + flex: 1 1 0%; + } + .lg\:grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } + .lg\:flex-row { + flex-direction: row; + } + .lg\:items-start { align-items: flex-start; } + .lg\:justify-start { + justify-content: flex-start; + } + + .lg\:justify-between { + justify-content: space-between; + } + .lg\:gap-12 { gap: 3rem; } @@ -2545,6 +2635,18 @@ video { background-color: inherit; } + .lg\:pb-12 { + padding-bottom: 3rem; + } + + .lg\:pt-16 { + padding-top: 4rem; + } + + .lg\:text-left { + text-align: left; + } + .lg\:text-5xl { font-size: 3rem; line-height: 1; @@ -2623,6 +2725,11 @@ video { background-color: rgb(17 17 17 / var(--tw-bg-opacity)); } + .dark\:bg-black { + --tw-bg-opacity: 1; + background-color: rgb(0 0 0 / var(--tw-bg-opacity)); + } + .dark\:bg-ghdarkmetal { --tw-bg-opacity: 1; background-color: rgb(22 27 34 / var(--tw-bg-opacity)); @@ -2657,6 +2764,15 @@ video { background-color: rgb(30 41 59 / var(--tw-bg-opacity)); } + .dark\:bg-\[\#EDEDED\] { + --tw-bg-opacity: 1; + background-color: rgb(237 237 237 / var(--tw-bg-opacity)); + } + + .dark\:bg-opacity-70 { + --tw-bg-opacity: 0.7; + } + .dark\:bg-opacity-80 { --tw-bg-opacity: 0.8; } @@ -2709,10 +2825,20 @@ video { color: rgb(255 255 255 / var(--tw-text-opacity)); } + .dark\:text-black { + --tw-text-opacity: 1; + color: rgb(0 0 0 / var(--tw-text-opacity)); + } + .dark\:opacity-75 { opacity: 0.75; } + .dark\:shadow-white { + --tw-shadow-color: #fff; + --tw-shadow: var(--tw-shadow-colored); + } + .dark\:ring-1 { --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); @@ -2727,6 +2853,11 @@ video { --tw-ring-color: rgb(255 255 255 / 0.1); } + .dark\:invert { + --tw-invert: invert(100%); + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); + } + .dark\:invert-0 { --tw-invert: invert(0); filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); @@ -2748,9 +2879,9 @@ video { background-color: rgb(107 114 128 / var(--tw-bg-opacity)); } - .dark\:hover\:bg-ideblack:hover { + .dark\:hover\:bg-gray-800:hover { --tw-bg-opacity: 1; - background-color: rgb(14 17 22 / var(--tw-bg-opacity)); + background-color: rgb(31 41 55 / var(--tw-bg-opacity)); } .dark\:hover\:text-gray-300:hover { diff --git a/docs-src/0.5/src/SUMMARY.md b/docs-src/0.5/src/SUMMARY.md index 6d9280c57..5f7a74be9 100644 --- a/docs-src/0.5/src/SUMMARY.md +++ b/docs-src/0.5/src/SUMMARY.md @@ -16,7 +16,7 @@ - [State and Interactivity](guide/state.md) - [App Routing](guide/routing.md) - [Data Fetching](guide/fetching.md) - - [Adding Platforms](guide/multiplatform.md) + - [More Platforms](guide/multiplatform.md) - [Backend](guide/backend.md) - [Deploying](guide/deploy.md) - [Next Steps](guide/next_steps.md) diff --git a/src/components/footer.rs b/src/components/footer.rs index dbc23f97a..6cd77013e 100644 --- a/src/components/footer.rs +++ b/src/components/footer.rs @@ -4,88 +4,73 @@ pub fn Footer() -> Element { let categories = [ ( "Community", - &[ + vec![ ("Github", "https://github.com/dioxuslabs"), - ("Twitter", "https://twitter.com/dioxuslabs"), ("Discord", "https://discord.gg/XgGxMSkvUM"), + ("Twitter", "https://twitter.com/dioxuslabs"), + ("YouTube", "https://www.youtube.com/@DioxusLabs"), ], ), ( - "Learning", - &[ + "Resources", + vec![ ("docs.rs", "https://docs.rs/dioxus"), + ("crates.io", "https://crates.io/crates/dioxus"), ("Guide", "/learn/0.5/guide"), ("Awesome", "/awesome"), + ("Playground", "/play"), ], ), ( "Projects", - &[ + vec![ ("Dioxus", "https://github.com/DioxusLabs/dioxus"), ( "CLI", "https://github.com/DioxusLabs/dioxus/tree/main/packages/cli", ), ("Taffy", "https://github.com/DioxusLabs/taffy"), + ("Blitz", "https://github.com/DioxusLabs/blitz"), + ("SDK", "https://github.com/DioxusLabs/sdk"), ], ), ]; rsx! { - footer { class: "sticky z-30 text-gray-400 bg-ghmetal body-font", - div { class: "container px-5 py-24 mx-auto flex md:items-center lg:items-start md:flex-row md:flex-nowrap flex-wrap flex-col", - div { class: "w-64 flex-shrink-0 md:mx-0 mx-auto text-center md:text-left", - a { - class: "flex title-font font-medium items-center md:justify-start justify-center text-white", - href: "https://github.com/DioxusLabs/dioxus", - img { - src: "https://avatars.githubusercontent.com/u/79236386?s=200&v=4", - class: "h-8 w-auto", - alt: "Dioxus Labs Icon", - } - span { class: "ml-3 text-xl", "Dioxus Labs" } - } - p { class: "mt-2 text-sm text-gray-500", - "An Open Source project dedicated to making Rust UI wonderful." - } - } - div { class: "flex-grow flex flex-wrap md:pl-20 -mb-10 md:mt-0 mt-10 md:text-left text-center", - for (name , links) in categories.iter() { - div { - key: "{name}", - class: "lg:w-1/4 md:w-1/2 w-full px-4", - h2 { class: "title-font font-medium text-white tracking-widest text-sm mb-3", - "{name}" - } - nav { class: "list-none mb-10", - ul { - for f in links.iter() { - li { key: "{f.0}", - a { - class: "text-gray-400 hover:text-white", - href: "{f.1}", - "{f.0}" - } - } + footer { class: "text-gray-700 dark:text-gray-400 w-full mx-auto max-w-screen-lg", + div { class: "container py-24 mx-auto flex md:items-center lg:items-start md:flex-row md:flex-nowrap flex-wrap flex-col justify-between ", + for (name , links) in categories.iter() { + div { key: "{name}", + h2 { class: "text-md mb-3 text-black dark:text-gray-100", "{name}" } + nav { class: "list-none font-extralight ", + ul { class: "space-y-2", + for f in links.iter() { + li { key: "{f.0}", + a { class: "", href: "{f.1}", "{f.0}" } } } } } } } - } - div { class: "container mx-auto py-4 px-5 flex flex-wrap flex-col sm:flex-row", - p { class: "text-gray-400 text-sm text-center sm:text-left", - "© 2024 Dioxus Labs —" + + div { class: "text-center md:text-left ", a { - class: "text-gray-500 ml-1", - rel: "noopener noreferrer", - href: "https://twitter.com/dioxuslabs", - target: "_blank", - "@dioxuslabs" + class: "flex items-center md:justify-start justify-evenly gap-1", + href: "https://github.com/DioxusLabs", + img { + src: "https://avatars.githubusercontent.com/u/79236386?s=200&v=4", + class: "h-6 w-auto", + alt: "Dioxus Labs Icon", + } + div { + span { class: "text-xl font-mono dark:text-gray-100", "Dioxus" } + } } + span { class: "text-xs", "Build cool things ✌️" } } } + p { class: "text-gray-400 text-sm text-center sm:text-left pb-2", "© 2024 Dioxus Labs" } } } } diff --git a/src/components/homepage.rs b/src/components/homepage.rs index 1a0170f94..c08b72e17 100644 --- a/src/components/homepage.rs +++ b/src/components/homepage.rs @@ -8,9 +8,9 @@ pub(crate) mod snippets; pub(crate) fn Homepage() -> Element { rsx! { div { class: "w-full dark:bg-ideblack", + // AvailablePlatforms {} + // Stats {} hero::Hero {} - AvailablePlatforms {} - Stats {} } } } diff --git a/src/components/homepage/hero.rs b/src/components/homepage/hero.rs index a6f1d63fc..1eebb03dc 100644 --- a/src/components/homepage/hero.rs +++ b/src/components/homepage/hero.rs @@ -2,66 +2,69 @@ use crate::*; pub(crate) fn Hero() -> Element { rsx! { - section { class: "w-full dark:bg-ideblack mx-auto dark:text-white flex flex-col justify-between items-center pt-8 md:pt-32 border-b md:mb-32 mb-16 pb-4 min-h-[640px] flex-1", - div { class: "mx-auto flex w-full max-w-screen-2xl flex-col text-center md:min-h-[640px] min-h-[760px] md:px-12", - div { class: "flex-1" } - div { class: "flex-1 flex flex-row justify-start w-full px-8 md:px-0", - div { class: "text-center md:text-left flex-grow", - div { class: "text-[2.5em] md:text-[4em] font-semibold dark:text-white text-ghdarkmetal font-sans", + section { class: "w-full dark:bg-ideblack mx-auto dark:text-white flex flex-col justify-between items-center border-b min-h-[760px] flex-1 dark:border-[#a4a9ac7d] max-h-[960px] px-4", + div { class: "flex w-full max-w-screen-xl flex-col text-center md:min-h-[520px] min-h-[760px] h-[calc(100vh-4rem)]", + div { class: "flex flex-col-reverse lg:flex-row items-center justify-end lg:justify-between flex-1 ", + div { class: "text-center lg:text-left lg:flex-1", + div { class: "text-[2.5em] md:text-[3.5em] font-semibold dark:text-white text-ghdarkmetal font-sans leading-snug text-balance", span { "One codebase, " } span { " every platform." } } - h3 { class: "text-[1.25em] dark:text-white font-extralight text-ghdarkmetal md:pt-4 pt-8 max-w-screen-sm md:max-w-screen-md md:text-left text-center", - span { - "Build fullstack web, desktop, and mobile apps with one unified codebase." + h3 { class: "text-[1.25em] dark:text-white font-light text-ghdarkmetal max-w-screen-sm md:max-w-screen-md md:text-left text-center flex flex-col", + span { class: "max-w-screen-md leading-loose", + "Dioxus is " + em { "the " } + "Rust framework for building fullstack web, desktop, and mobile apps. Iterate with live hotreloading, add server functions, and deploy in record time." } } - - div { class: "pt-12 text-white text-[1em] md:text-[1.2em] font-sans font-bold flex flex-col md:flex-row md:space-x-4 md:space-y-0 space-y-4 md:w-full max-w-[200px] md:max-w-[360px] mx-auto md:mx-0", + div { class: "pt-8 lg:pt-16 text-[1em] flex flex-row space-x-4 mx-auto lg:mx-0 justify-center lg:justify-start", Link { to: Route::Docs { - child: BookRoute::Index {}, + child: BookRoute::GuideIndex {}, }, - class: "bg-dxorange m-0 p-2 px-4 rounded md:hover:-translate-y-2 transition-transform duration-300 w-full md:w-auto", + class: "bg-ghdarkmetal dark:bg-[#EDEDED] text-white dark:text-black border border-[#a4a9ac7d] m-0 p-2 px-4 rounded md:hover:-translate-y-1 transition-transform duration-300 w-full md:w-auto dark:shadow-white", "Quickstart" } Link { to: Route::Docs { - child: BookRoute::ReferenceIndex {}, + child: BookRoute::Index {}, }, - class: "bg-dxblue m-0 p-2 px-4 rounded md:hover:-translate-y-2 transition-transform duration-300 w-full md:w-auto", + class: "bg-[#EDEDED] dark:bg-ghdarkmetal text-black dark:text-white border border-[#a4a9ac7d] m-0 p-2 px-4 rounded md:hover:-translate-y-1 transition-transform duration-300 w-full md:w-auto", "Read the docs" } } } - AnimatedLogo {} - } - div { class: "flex-1" } - div { class: "flex-1 max-w-screen-2xl flex-col justify-end md:flex gap-4", - h1 { class: "text-md md:text-left text-center", "Trusted by top companies" } - div { class: "flex flex-row flex-wrap md:justify-start justify-center invert dark:invert-0 mb-4 md:mb-12 md:gap-12 gap-4 px-4 my-4 min-h-0", + div { class: "lg:pb-12 h-screen max-h-80", img { - class: "h-6 md:h-8", - src: "/assets/static/airbuslogo.svg", + src: asset!("/assets/static/multiplatform-dark.svg"), + class: "dark:hidden w-full h-full", + alt: "Animated Icon", } img { - class: "h-6 md:h-8", - src: "/assets/static/ESA_logo.svg", - } - img { - class: "h-6 md:h-8", - src: "/assets/static/xailogo.svg", + src: asset!("/assets/static/multiplatform-light.svg"), + class: "hidden dark:block w-full h-full", + alt: "Animated Icon", } + } + } + div { class: "flex max-w-screen-2xl flex-col justify-end md:flex gap-4 pb-8", + h1 { class: "lg:text-left text-center font-extralight text-sm", + "Trusted by top companies" + } + div { class: "flex flex-row flex-wrap lg:justify-start justify-center invert dark:invert-0 gap-8 min-h-0", img { - class: "h-6 md:h-8", - src: "/assets/static/yclogo.svg", + class: "h-6", + src: "/assets/static/airbuslogo.svg", } + img { class: "h-6 ", src: "/assets/static/ESA_logo.svg" } + img { class: "h-6 ", src: "/assets/static/xailogo.svg" } + img { class: "h-6 ", src: "/assets/static/yclogo.svg" } img { - class: "h-6 md:h-8", + class: "h-6 ", src: "/assets/static/futurewei_bw.png", } img { - class: "h-6 md:h-8", + class: "h-6 ", src: "/assets/static/satellite.webp", } } @@ -70,20 +73,3 @@ pub(crate) fn Hero() -> Element { } } } - -fn AnimatedLogo() -> Element { - rsx! { - div { class: "flex-grow", - img { - src: asset!("/assets/static/multiplatform-dark.svg"), - class: "mx-auto max-h-48 lg:max-h-96 dark:hidden", - alt: "Animated Icon", - } - img { - src: asset!("/assets/static/multiplatform-light.svg"), - class: "mx-auto max-h-48 lg:max-h-96 hidden dark:block", - alt: "Animated Icon", - } - } - } -} diff --git a/src/components/learn.rs b/src/components/learn.rs index 8e4e58c51..546e3dac1 100644 --- a/src/components/learn.rs +++ b/src/components/learn.rs @@ -17,11 +17,8 @@ const GITHUB_EDIT_PAGE_EDIT_URL: &str = #[component] pub(crate) fn Learn() -> Element { - use_hook(|| *SHOW_DOCS_NAV.write() = true); - use_drop(|| *SHOW_DOCS_NAV.write() = false); - rsx! { - div { class: "w-full text-sm dark:bg-ideblack", min_height: "100vh", + div { class: "w-full text-sm dark:bg-ideblack border-b dark:border-[#a4a9ac7d]", div { class: "flex flex-row justify-center dark:text-[#dee2e6] font-light lg:gap-12", LeftNav {} Content {} @@ -41,21 +38,20 @@ fn LeftNav() -> Element { rsx! { div { - class: " - overflow-y-hidden lg:block pt-[2.75rem] ml-12 h-full mb-2 md:text-[14px] leading-5 text-gray-700 absolute md:sticky dark:text-gray-400 top-0 - bg-white dark:bg-ideblack lg:bg-inherit space-y-2 - ", - class: if SHOW_SIDEBAR() { "w-screen" } else { "hidden" }, - VersionSwitch {} - nav { class: " - styled-scrollbar - pl-2 pb-2 z-20 text-base sm:block top-28 h-[88vh] - md:w-60 lg:text-[14px] content-start text-gray-600 dark:text-gray-400 overflow-y-scroll pr-2 space-y-1", - - - // DocVersionNav {} - for chapter in chapters.into_iter().flatten().filter(|chapter| chapter.maybe_link().is_some()) { - SidebarSection { chapter } + class: if SHOW_SIDEBAR() { "w-full md:w-auto" } else { "hidden" }, + class: "h-full md:block top-28 sticky", + // class: "absolute md:block md:sticky md:top-28 overflow-y-hidden bg-white dark:bg-ideblack lg:bg-inherit z-20", + div { class: " + lg:block mb-2 md:text-[14px] leading-5 text-gray-700 dark:text-gray-400 space-y-2 px-4 md:px-2 py-2 md:py-0 + ", + VersionSwitch {} + nav { class: " + styled-scrollbar + pl-2 pb-2 z-20 text-base sm:block top-28 md:h-[88vh] + md:w-60 lg:text-[14px] content-start text-gray-600 dark:text-gray-400 overflow-y-scroll pr-2 space-y-1", + for chapter in chapters.into_iter().flatten().filter(|chapter| chapter.maybe_link().is_some()) { + SidebarSection { chapter } + } } } } @@ -78,10 +74,10 @@ fn VersionSwitch() -> Element { role: "button", onfocusout: move |_| show_versions.set(false), onclick: move |_| show_versions.set(true), - div { class: " hover:bg-gray-100 dark:hover:bg-ghdarkmetal rounded w-full", + div { class: " hover:bg-gray-100 dark:hover:bg-ghdarkmetal rounded w-full py-1", div { class: "grid grid-cols-[auto,1fr,auto] items-center gap-2 px-1", div { - div { class: "w-8 h-8 rounded-md border flex items-center justify-center bg-gray-50 border-gray-200 text-gray-900", + div { class: "w-8 h-8 rounded-md border flex items-center justify-center bg-gray-50 border-gray-200 text-gray-900 dark:invert", svg { style: "width: 16px; height: 16px; color: currentcolor;", "stroke-linejoin": "round", @@ -99,7 +95,9 @@ fn VersionSwitch() -> Element { } } div { class: "leading-snug text-xs text-left", - p { class: "font-bold", "Using Nightly Version" } + p { class: "font-medium text-gray-700 dark:text-gray-100", + "Using Nightly Version" + } p { class: "font-light", "v0.6.0-alpha.3" } } div { @@ -126,7 +124,7 @@ fn VersionSwitch() -> Element { div { class: "relative w-full z-50", class: if !show_versions() { "hidden" }, - ul { class: "absolute flex flex-col bg-white dark:bg-ghdarkmetal text-left rounded-lg border dark:border-gray-700 mt-4 w-full overflow-hidden text-gray-500 dark:text-gray-100 text-xs shadow-lg", + ul { class: "absolute flex flex-col bg-white dark:bg-ghdarkmetal text-left rounded-lg border dark:border-gray-700 mt-2 w-full overflow-hidden text-gray-500 dark:text-gray-100 text-xs shadow-lg", for (name , version , at) in versions.iter() { li { Link { to: "https://dioxuslabs.com/learn/{at}/", @@ -256,7 +254,7 @@ fn RightNav() -> Element { // That might be a naive approach, but it's the easiest rsx! { - div { class: "overflow-y-auto hidden xl:block top-28 ml-12 h-full md:text-[14px] leading-5 text-gray-600 w-48 sticky dark:text-gray-400", + div { class: "overflow-y-auto hidden xl:block top-28 ml-12 h-full md:text-[14px] leading-5 text-gray-600 w-48 sticky dark:text-gray-400 pt-1", div { class: "border-b pb-2 dark:border-[#a4a9ac7d]", h2 { class: "pb-2 font-semibold text-gray-600 dark:text-gray-100", "On this page" @@ -303,8 +301,10 @@ fn RightNav() -> Element { fn Content() -> Element { rsx! { - section { class: "text-gray-600 dark:text-gray-300 body-font overflow-hidden dark:bg-ideblack container pb-12 max-w-screen-sm px-4 pt-[2.75rem] grow min-h-[96vh]", - div { class: "space-y-8", + section { + class: "text-gray-600 dark:text-gray-300 body-font overflow-hidden dark:bg-ideblack container pb-12 max-w-screen-sm px-4 pt-4 md:pt-[3.125rem] grow min-h-[100vh] ", + class: if SHOW_SIDEBAR() { "hidden md:block" }, + div { class: "", Breadcrumbs {} div { class: "flex w-full flex-wrap list-none", article { class: "markdown-body", Outlet:: {} } @@ -317,6 +317,7 @@ fn Content() -> Element { fn Breadcrumbs() -> Element { let route: BookRoute = use_book(); + let is_index = route == BookRoute::Index {}; let mut routes = vec![route.clone()]; let mut cur = route.clone(); @@ -326,8 +327,9 @@ fn Breadcrumbs() -> Element { } rsx! { - div { class: "flex flex-row space-x-2 font-extralight", - // class: if route == (BookRoute::Index {}) { "hidden" }, + div { + class: "flex flex-row items-center space-x-2 font-extralight pb-9", + class: if is_index { "hidden" }, Link { to: Route::Docs { child: BookRoute::Index {}, @@ -340,7 +342,7 @@ fn Breadcrumbs() -> Element { to: Route::Docs { child: route.clone(), }, - class: if idx == routes.len() - 1 { "font-normal" }, + class: if idx == routes.len() - 1 { "font-semibold" }, "{route.page().title}" } } diff --git a/src/components/nav.rs b/src/components/nav.rs index c592246fc..d3dbd1fe9 100644 --- a/src/components/nav.rs +++ b/src/components/nav.rs @@ -4,15 +4,17 @@ use dioxus_material_icons::{MaterialIcon, MaterialIconColor}; use std::ops::Deref; pub(crate) static SHOW_SEARCH: GlobalSignal = Signal::global(|| false); -pub(crate) static SHOW_DOCS_NAV: GlobalSignal = Signal::global(|| false); pub(crate) fn Nav() -> Element { + let route: Route = use_route(); + let is_docs = matches!(route, Route::Docs { .. }); + rsx! { SearchModal {} header { class: "sticky top-0 z-30 bg-white bg-opacity-80 dark:text-gray-200 dark:bg-ideblack dark:bg-opacity-80 border-b dark:border-stone-700 h-16 backdrop-blur-sm", div { class: "py-2 px-2 max-w-screen-2xl mx-auto flex items-center justify-between text-sm leading-6 h-16", - div { class: "flex z-50 md:px-2", LinkList {} } - div { class: "flex h-full justify-end ml-2 items-center gap-4 py-2", + div { class: "flex z-50 md:px-2 flex-1", LinkList {} } + div { class: "flex h-full justify-end ml-2 items-center gap-3 py-2", button { class: " max-w-[12rem] items-center rounded @@ -59,8 +61,8 @@ pub(crate) fn Nav() -> Element { let mut sidebar = SHOW_SIDEBAR.write(); *sidebar = !*sidebar; }, - class: "bg-gray-100 dark:bg-gray-700 dark:hover:bg-gray-500 rounded-lg p-1 mr-2 lg:hidden my-3 h-8 flex items-center text-lg z-[100]", - class: if !SHOW_DOCS_NAV() { "hidden" }, + class: "bg-gray-100 dark:bg-gray-700 dark:hover:bg-gray-500 md:hidden rounded-lg p-1 mr-2 my-3 h-8 flex items-center text-lg z-50", + class: if !is_docs { "hidden" }, MaterialIcon { name: "menu", size: 24, @@ -68,14 +70,48 @@ pub(crate) fn Nav() -> Element { } } - div { class: "h-full gap-4 hidden lg:flex", + div { class: "h-full gap-3 hidden lg:flex", div { class: "border-l border-gray-200 dark:border-gray-800 h-full" } - div { class: "hidden lg:flex items-center gap-4", + div { class: "hidden lg:flex items-center gap-3", label { class: "sr-only", id: "headlessui-listbox-label-2", "Theme" } + Link { + to: "https://crates.io/crates/dioxus", + new_tab: true, + class: "block text-gray-400 hover:text-gray-500 dark:hover:text-gray-300", + span { class: "sr-only", "Dioxus on docs.rs" } + svg { + "viewBox": "0 0 576 512", + xmlns: "http://www.w3.org/2000/svg", + width: "24", + height: "24", + path { + d: "M290.8 48.6l78.4 29.7L288 109.5 206.8 78.3l78.4-29.7c1.8-.7 3.8-.7 5.7 0zM136 92.5l0 112.2c-1.3 .4-2.6 .8-3.9 1.3l-96 36.4C14.4 250.6 0 271.5 0 294.7L0 413.9c0 22.2 13.1 42.3 33.5 51.3l96 42.2c14.4 6.3 30.7 6.3 45.1 0L288 457.5l113.5 49.9c14.4 6.3 30.7 6.3 45.1 0l96-42.2c20.3-8.9 33.5-29.1 33.5-51.3l0-119.1c0-23.3-14.4-44.1-36.1-52.4l-96-36.4c-1.3-.5-2.6-.9-3.9-1.3l0-112.2c0-23.3-14.4-44.1-36.1-52.4l-96-36.4c-12.8-4.8-26.9-4.8-39.7 0l-96 36.4C150.4 48.4 136 69.3 136 92.5zM392 210.6l-82.4 31.2 0-89.2L392 121l0 89.6zM154.8 250.9l78.4 29.7L152 311.7 70.8 280.6l78.4-29.7c1.8-.7 3.8-.7 5.7 0zm18.8 204.4l0-100.5L256 323.2l0 95.9-82.4 36.2zM421.2 250.9c1.8-.7 3.8-.7 5.7 0l78.4 29.7L424 311.7l-81.2-31.1 78.4-29.7zM523.2 421.2l-77.6 34.1 0-100.5L528 323.2l0 90.7c0 3.2-1.9 6-4.8 7.3z", + fill: "currentColor", + fill_rule: "nonzero", + } + } + } + // Link { + // to: "https://www.youtube.com/@dioxuslabs", + // new_tab: true, + // class: "block text-gray-400 hover:text-gray-500 dark:hover:text-gray-300", + // span { class: "sr-only", "Dioxus on YouTube" } + // svg { + // xmlns: "http://www.w3.org/2000/svg", + // "viewBox": "0 0 576 512", + // width: "24", + // height: "24", + // path { + // d: "M549.7 124.1c-6.3-23.7-24.8-42.3-48.3-48.6C458.8 64 288 64 288 64S117.2 64 74.6 75.5c-23.5 6.3-42 24.9-48.3 48.6-11.4 42.9-11.4 132.3-11.4 132.3s0 89.4 11.4 132.3c6.3 23.7 24.8 41.5 48.3 47.8C117.2 448 288 448 288 448s170.8 0 213.4-11.5c23.5-6.3 42-24.2 48.3-47.8 11.4-42.9 11.4-132.3 11.4-132.3s0-89.4-11.4-132.3zm-317.5 213.5V175.2l142.7 81.2-142.7 81.2z", + // fill: "currentColor", + // fill_rule: "nonzero", + // } + // } + // } Link { to: "https://discord.gg/XgGxMSkvUM".to_string(), class: "block text-gray-400 hover:text-gray-500 dark:hover:text-gray-300", @@ -89,7 +125,7 @@ pub(crate) fn Nav() -> Element { new_tab: true, span { class: "sr-only", "Dioxus on GitHub" } crate::icons::Github2 {} - span { class: "text-xs", "20.7k" } + span { class: "text-xs text", "20.7k" } } } div { class: "border-l border-gray-200 dark:border-gray-800 h-full" } @@ -130,7 +166,7 @@ static LINKS: &[(&str, &str)] = &[ #[component] fn LinkList() -> Element { rsx! { - nav { class: "flex flex-row items-center space-x-2 md:space-x-6 text-md font-light leading-none text-slate-700 dark:text-white whitespace-nowrap", + nav { class: "flex-grow md:flex-grow-0 flex flex-row items-center text-md font-light leading-none text-slate-700 dark:text-white whitespace-nowrap md:gap-6", Link { to: Route::Homepage {}, class: "title-font font-medium items-center text-gray-900 flex flex-row gap-1", @@ -142,13 +178,15 @@ fn LinkList() -> Element { "DIOXUS" } } - for (name , link) in LINKS.iter().cloned() { - Link { - to: link, - class: "leading-none hover:text-sky-500 dark:hover:text-sky-400 rounded fill-zinc-700 dark:fill-zinc-100", - active_class: "text-sky-500 dark:text-sky-400", - position: "relative", - "{name}" + div { class: "flex-1 flex flex-row items-center md:space-x-6 justify-evenly", + for (name , link) in LINKS.iter().cloned() { + Link { + to: link, + class: "leading-none hover:text-sky-500 dark:hover:text-sky-400 rounded fill-zinc-700 dark:fill-zinc-100", + active_class: "text-sky-500 dark:text-sky-400", + position: "relative", + "{name}" + } } } } @@ -192,7 +230,7 @@ fn SearchModal() -> Element { div { height: "100vh", width: "100vw", - class: "fixed top-0 left-0 z-50 block bg-gray-100 bg-opacity-70 overflow-y-hidden search-modal-animated", + class: "fixed top-0 left-0 z-50 block bg-gray-100 dark:bg-black dark:bg-opacity-70 bg-opacity-70 overflow-y-hidden search-modal-animated ", class: if *SHOW_SEARCH.read() { "dioxus-show" } else { "dioxus-hide" }, onclick: move |_| *SHOW_SEARCH.write() = false, @@ -201,14 +239,16 @@ fn SearchModal() -> Element { div { class: "h-40" } // The actual modal - div { class: "bg-white dark:bg-ideblack rounded-xl max-h-[calc(100%-8rem)] overflow-y-auto text-gray-800 dark:text-gray-100 border", + div { class: "bg-white dark:bg-ideblack rounded-xl max-h-[calc(100%-8rem)] overflow-y-auto text-gray-800 dark:text-gray-100 border dark:border-[#a4a9ac7d]", // Search input - div { class: "flex flex-col flex-grow border-b border-gray-300 p-2 gap-2", + div { class: "flex flex-col flex-grow border-b p-2 gap-2 border-inherit", div { class: "my-auto flex flex-row items-center", - MaterialIcon { - name: "search", - size: 20, - color: MaterialIconColor::Dark, + div { class: "dark:invert h-5", + MaterialIcon { + name: "search", + size: 20, + color: MaterialIconColor::Dark, + } } // hide the input until show search so the onmounted fires @@ -226,8 +266,8 @@ fn SearchModal() -> Element { onmounted: move |evt| async move { _ = evt.set_focus(true).await; }, - class: "flex-grow bg-transparent border-none outline-none pl-2 text-gray-800 dark:text-gray-100 py-2", - placeholder: "Search the docs", + class: "flex-grow bg-transparent border-none outline-none pl-2 text-gray-800 dark:text-gray-100 py-2 placeholder-gray-200", + placeholder: "Search the docs...", value: "{search_text}", } } @@ -253,7 +293,7 @@ fn SearchResults(results: Signal, search_text: Signal) -> Eleme let results = _results.deref().as_ref().unwrap(); rsx! { - ul { class: "p-2", + ul { class: "p-2 flex flex-col", if search_text.read().is_empty() { for (search , route) in [ ( @@ -323,13 +363,13 @@ fn SearchResults(results: Signal, search_text: Signal) -> Eleme #[component] fn SearchResultItem(title: String, route: Route, children: Element) -> Element { rsx! { - li { class: "w-full p-2 rounded hover:bg-gray-100 dark:hover:bg-ideblack transition-colors duration-200 ease-in-out", + li { class: "w-full rounded-lg hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors duration-200 ease-in-out", Link { to: route, onclick: move |_| { *SHOW_SEARCH.write() = false; }, - class: "flex flex-row items-center gap-x-2", + class: "flex flex-row items-center gap-x-2 p-2", icons::DocumentIcon {} div { class: "flex flex-col justify-between", h2 { class: "dark:text-white", "{title}" } diff --git a/src/main.rs b/src/main.rs index 61c17ae2d..c897e96d6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -20,7 +20,7 @@ fn HeaderFooter() -> Element { }); rsx! { - div { class: "bg-white dark:bg-ideblack pb-8", + div { class: "bg-white dark:bg-ideblack", document::Link { rel: "stylesheet", href: asset!("/assets/githubmarkdown.css") } document::Link { rel: "stylesheet", href: asset!("/assets/tailwind.css") } document::Link { rel: "stylesheet", href: asset!("/assets/main.css") } @@ -47,8 +47,8 @@ fn HeaderFooter() -> Element { Nav {} Outlet:: {} + Footer {} } - Footer {} } } diff --git a/tailwind.config.js b/tailwind.config.js index 70f37fed8..7751a5835 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -17,7 +17,7 @@ module.exports = { boxShadow: { "3xl": "0 35px 60px -1ww5px rgba(0, 0, 0, 0.5)", cutesy: "0px 0px 40px -5px rgba(255, 255, 255, 0.2)", - pop: "0px 0px 30px -10px rgba(0, 0, 0, 0.5)", + pop: "0px 0px 10px -2px rgba(0, 0, 0, 0.1)", }, keyframes: { fadein: {