From f764bd08c0774b0841b8cf2822a34d0be256e7d1 Mon Sep 17 00:00:00 2001 From: Franklin Date: Wed, 15 Mar 2023 09:20:17 -0400 Subject: [PATCH] Navbar copy of the other frontend --- .gitignore | 3 + Cargo.lock | 1829 +++++++++++++++++++++++++++++++ Cargo.toml | 29 + assets/images/remax-logo.png | Bin 0 -> 26283 bytes css/.DS_Store | Bin 0 -> 6148 bytes css/body.css | 12 + css/landing.css | 0 css/navbar.css | 160 +++ css/search.css | 96 ++ index.html | 18 + src/api/backend/mod.rs | 0 src/api/base.rs | 0 src/api/mod.rs | 2 + src/components/mod.rs | 2 + src/components/nav_bar.rs | 57 + src/components/search_filter.rs | 0 src/constants/mod.rs | 5 + src/main.rs | 22 + src/pages/contact.rs | 16 + src/pages/details.rs | 8 + src/pages/landing.rs | 16 + src/pages/mod.rs | 5 + src/pages/not_found.rs | 15 + src/pages/search.rs | 99 ++ src/routes/main_router.rs | 32 + src/routes/mod.rs | 1 + 26 files changed, 2427 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 assets/images/remax-logo.png create mode 100644 css/.DS_Store create mode 100644 css/body.css create mode 100644 css/landing.css create mode 100644 css/navbar.css create mode 100644 css/search.css create mode 100644 index.html create mode 100644 src/api/backend/mod.rs create mode 100644 src/api/base.rs create mode 100644 src/api/mod.rs create mode 100644 src/components/mod.rs create mode 100644 src/components/nav_bar.rs create mode 100644 src/components/search_filter.rs create mode 100644 src/constants/mod.rs create mode 100644 src/main.rs create mode 100644 src/pages/contact.rs create mode 100644 src/pages/details.rs create mode 100644 src/pages/landing.rs create mode 100644 src/pages/mod.rs create mode 100644 src/pages/not_found.rs create mode 100644 src/pages/search.rs create mode 100644 src/routes/main_router.rs create mode 100644 src/routes/mod.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f5996d8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/target +/dist +.env \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..b7e9605 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,1829 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "aho-corasick" +version = "0.7.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" +dependencies = [ + "memchr", +] + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anymap2" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d301b3b94cb4b2f23d7917810addbbaff90738e0ca2be692bd027e70d7e0330c" + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "base64" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "boolinator" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfa8873f51c92e232f9bac4065cddef41b714152812bfc5f7672ba16d6ef8cd9" + +[[package]] +name = "bumpalo" +version = "3.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" + +[[package]] +name = "bytes" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" + +[[package]] +name = "cc" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b" +dependencies = [ + "iana-time-zone", + "js-sys", + "num-integer", + "num-traits", + "serde", + "time", + "wasm-bindgen", + "winapi", +] + +[[package]] +name = "chrono-tz" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa48fa079165080f11d7753fd0bc175b7d391f276b965fe4b55bfad67856e463" +dependencies = [ + "chrono", + "chrono-tz-build", + "phf", +] + +[[package]] +name = "chrono-tz-build" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9998fb9f7e9b2111641485bf8beb32f92945f97f92a3d061f744cfef335f751" +dependencies = [ + "parse-zoneinfo", + "phf", + "phf_codegen", +] + +[[package]] +name = "codespan-reporting" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +dependencies = [ + "termcolor", + "unicode-width", +] + +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if", + "wasm-bindgen", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" + +[[package]] +name = "cxx" +version = "1.0.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a140f260e6f3f79013b8bfc65e7ce630c9ab4388c6a89c71e07226f49487b72" +dependencies = [ + "cc", + "cxxbridge-flags", + "cxxbridge-macro", + "link-cplusplus", +] + +[[package]] +name = "cxx-build" +version = "1.0.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da6383f459341ea689374bf0a42979739dc421874f112ff26f829b8040b8e613" +dependencies = [ + "cc", + "codespan-reporting", + "once_cell", + "proc-macro2", + "quote", + "scratch", + "syn", +] + +[[package]] +name = "cxxbridge-flags" +version = "1.0.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90201c1a650e95ccff1c8c0bb5a343213bdd317c6e600a93075bca2eff54ec97" + +[[package]] +name = "cxxbridge-macro" +version = "1.0.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b75aed41bb2e6367cae39e6326ef817a851db13c13e4f3263714ca3cfb8de56" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "either" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" + +[[package]] +name = "encoding_rs" +version = "0.8.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "fastrand" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +dependencies = [ + "instant", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "format_num" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14ac05eb8d2eb4ed1eeff847911deae077b0b53332465de9d6a26b0ea9961bc8" +dependencies = [ + "regex", +] + +[[package]] +name = "futures" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "531ac96c6ff5fd7c62263c5e3c67a603af4fcaee2e1a0ae5565ba3a11e69e549" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd" + +[[package]] +name = "futures-io" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89d422fa3cbe3b40dca574ab087abb5bc98258ea57eea3fd6f1fa7162c778b91" + +[[package]] +name = "futures-macro" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec93083a4aecafb2a80a885c9de1f0ccae9dbd32c2bb54b0c3a65690e0b8d2f2" + +[[package]] +name = "futures-task" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879" + +[[package]] +name = "futures-util" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "getrandom" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "gloo" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a4bef6b277b3ab073253d4bca60761240cf8d6998f4bd142211957b69a61b20" +dependencies = [ + "gloo-console", + "gloo-dialogs", + "gloo-events", + "gloo-file", + "gloo-history", + "gloo-net", + "gloo-render", + "gloo-storage", + "gloo-timers", + "gloo-utils", + "gloo-worker", +] + +[[package]] +name = "gloo-console" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b7ce3c05debe147233596904981848862b068862e9ec3e34be446077190d3f" +dependencies = [ + "gloo-utils", + "js-sys", + "serde", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-dialogs" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67062364ac72d27f08445a46cab428188e2e224ec9e37efdba48ae8c289002e6" +dependencies = [ + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-events" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68b107f8abed8105e4182de63845afcc7b69c098b7852a813ea7462a320992fc" +dependencies = [ + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-file" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8d5564e570a38b43d78bdc063374a0c3098c4f0d64005b12f9bbe87e869b6d7" +dependencies = [ + "futures-channel", + "gloo-events", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-history" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd451019e0b7a2b8a7a7b23e74916601abf1135c54664e57ff71dcc26dfcdeb7" +dependencies = [ + "gloo-events", + "gloo-utils", + "serde", + "serde-wasm-bindgen", + "serde_urlencoded", + "thiserror", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-net" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9902a044653b26b99f7e3693a42f171312d9be8b26b5697bd1e43ad1f8a35e10" +dependencies = [ + "futures-channel", + "futures-core", + "futures-sink", + "gloo-utils", + "js-sys", + "pin-project", + "serde", + "serde_json", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "gloo-render" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd9306aef67cfd4449823aadcd14e3958e0800aa2183955a309112a84ec7764" +dependencies = [ + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-storage" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d6ab60bf5dbfd6f0ed1f7843da31b41010515c745735c970e821945ca91e480" +dependencies = [ + "gloo-utils", + "js-sys", + "serde", + "serde_json", + "thiserror", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-timers" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "gloo-utils" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8e8fc851e9c7b9852508bc6e3f690f452f474417e8545ec9857b7f7377036b5" +dependencies = [ + "js-sys", + "serde", + "serde_json", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-worker" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13471584da78061a28306d1359dd0178d8d6fc1c7c80e5e35d27260346e0516a" +dependencies = [ + "anymap2", + "bincode", + "gloo-console", + "gloo-utils", + "js-sys", + "serde", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "h2" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be7b54589b581f624f566bf5d8eb2bab1db736c51528720b6bd36b96b55924d" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hermit-abi" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" +dependencies = [ + "libc", +] + +[[package]] +name = "http" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" + +[[package]] +name = "hyper" +version = "0.14.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc5e554ff619822309ffd57d8734d77cd5ce6238bc956f037ea06c58238c9899" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1788965e61b367cd03a62950836d5cd41560c3577d90e40e0819373194d1661c" +dependencies = [ + "http", + "hyper", + "rustls", + "tokio", + "tokio-rustls", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.53" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "winapi", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" +dependencies = [ + "cxx", + "cxx-build", +] + +[[package]] +name = "idna" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "implicit-clone" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40fc102e70475c320b185cd18c1e48bba2d7210b63970a4d581ef903e4368ef7" +dependencies = [ + "indexmap", +] + +[[package]] +name = "indexmap" +version = "1.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" +dependencies = [ + "autocfg", + "hashbrown", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "ipnet" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30e22bd8629359895450b59ea7a776c850561b96a3b1d31321c1949d9e6c9146" + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" + +[[package]] +name = "jl-frontend" +version = "0.1.0" +dependencies = [ + "jl-types", + "js-sys", + "log", + "reqwest", + "serde_json", + "stylist", + "uuid", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-logger", + "yew", + "yew-router", +] + +[[package]] +name = "jl-types" +version = "0.1.0" +dependencies = [ + "bincode", + "chrono", + "chrono-tz", + "format_num", + "serde", + "serde_json", + "uuid", +] + +[[package]] +name = "js-sys" +version = "0.3.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "libc" +version = "0.2.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c" + +[[package]] +name = "link-cplusplus" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5" +dependencies = [ + "cc", +] + +[[package]] +name = "litrs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b487d13a3f4b465df87895a37b24e364907019afa12d943528df5b7abe0836f1" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "mime" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "mio" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" +dependencies = [ + "libc", + "log", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "once_cell" +version = "1.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" + +[[package]] +name = "parse-zoneinfo" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c705f256449c60da65e11ff6626e0c16a0a0b96aaa348de61376b249bc340f41" +dependencies = [ + "regex", +] + +[[package]] +name = "percent-encoding" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" + +[[package]] +name = "phf" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "928c6535de93548188ef63bb7c4036bd415cd8f36ad25af44b9789b2ee72a48c" +dependencies = [ + "phf_shared", +] + +[[package]] +name = "phf_codegen" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56ac890c5e3ca598bbdeaa99964edb5b0258a583a9eb6ef4e89fc85d9224770" +dependencies = [ + "phf_generator", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1181c94580fa345f50f19d738aaa39c0ed30a600d95cb2d3e23f94266f14fbf" +dependencies = [ + "phf_shared", + "rand", +] + +[[package]] +name = "phf_shared" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1fb5f6f826b772a8d4c0394209441e7d37cbbb967ae9c7e0e8134365c9ee676" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pinned" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a829027bd95e54cfe13e3e258a1ae7b645960553fb82b75ff852c29688ee595b" +dependencies = [ + "futures", + "rustversion", + "thiserror", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "prettyplease" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86" +dependencies = [ + "proc-macro2", + "syn", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.52" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d0e1ae9e836cc3beddd63db0df682593d7e2d3d891ae8c9083d2113e1744224" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "prokio" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03b55e106e5791fa5a13abd13c85d6127312e8e09098059ca2bc9b03ca4cf488" +dependencies = [ + "futures", + "gloo", + "num_cpus", + "once_cell", + "pin-project", + "pinned", + "tokio", + "tokio-stream", + "wasm-bindgen-futures", +] + +[[package]] +name = "quote" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "regex" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" + +[[package]] +name = "reqwest" +version = "0.11.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21eed90ec8570952d53b772ecf8f206aa1ec9a3d76b2521c56c42973f2d91ee9" +dependencies = [ + "base64", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-rustls", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "tokio", + "tokio-rustls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots", + "winreg", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin", + "untrusted", + "web-sys", + "winapi", +] + +[[package]] +name = "route-recognizer" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afab94fb28594581f62d981211a9a4d53cc8130bbcbbb89a0440d9b8e81a7746" + +[[package]] +name = "rustls" +version = "0.20.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f" +dependencies = [ + "log", + "ring", + "sct", + "webpki", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b" +dependencies = [ + "base64", +] + +[[package]] +name = "rustversion" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" + +[[package]] +name = "ryu" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" + +[[package]] +name = "scratch" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1792db035ce95be60c3f8853017b3999209281c24e2ba5bc8e59bf97a0c590c1" + +[[package]] +name = "sct" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "serde" +version = "1.0.156" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "314b5b092c0ade17c00142951e50ced110ec27cea304b1037c6969246c2469a4" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-wasm-bindgen" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3b4c031cd0d9014307d82b8abf653c0290fbdaeb4c02d00c63cf52f728628bf" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + +[[package]] +name = "serde_derive" +version = "1.0.156" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7e29c4601e36bcec74a223228dce795f4cd3616341a4af93520ca1a837c087d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.94" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "siphasher" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" + +[[package]] +name = "slab" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +dependencies = [ + "autocfg", +] + +[[package]] +name = "socket2" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "stylist" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a8dccf52b4a6dda7a7e229b712b5a31f3270e77365e2655cfeb13fd713535bf" +dependencies = [ + "fastrand", + "instant", + "once_cell", + "serde", + "stylist-core", + "stylist-macros", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "stylist-core" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f115d7e07846b817a0527d4ca7b9bca3342c2387fcda17330702f839c69380a1" +dependencies = [ + "nom", + "once_cell", + "serde", + "thiserror", + "wasm-bindgen", +] + +[[package]] +name = "stylist-macros" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ba494c8364859e8cddf7b18598ab556803dbef994c13efaf9888a65ca0bb775" +dependencies = [ + "itertools", + "litrs", + "log", + "nom", + "proc-macro-error", + "proc-macro2", + "quote", + "stylist-core", + "syn", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "termcolor" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5ab016db510546d856297882807df8da66a16fb8c4101cb8b30054b0d5b2d9c" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5420d42e90af0c38c3290abcca25b9b3bdf379fc9f55c528f53a269d9c9a267e" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "time" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" +dependencies = [ + "libc", + "wasi 0.10.0+wasi-snapshot-preview1", + "winapi", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03201d01c3c27a29c8a5cee5b55a93ddae1ccf6f08f65365c2c918f8c1b76f64" +dependencies = [ + "autocfg", + "bytes", + "libc", + "memchr", + "mio", + "num_cpus", + "pin-project-lite", + "socket2", + "windows-sys", +] + +[[package]] +name = "tokio-rustls" +version = "0.23.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" +dependencies = [ + "rustls", + "tokio", + "webpki", +] + +[[package]] +name = "tokio-stream" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fb52b74f05dbf495a8fba459fdc331812b96aa086d9eb78101fa0d4569c3313" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5427d89453009325de0d8f342c9490009f76e999cb7672d77e46267448f7e6b2" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", +] + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +dependencies = [ + "cfg-if", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" + +[[package]] +name = "unicode-bidi" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524b68aca1d05e03fdf03fcdce2c6c94b6daf6d16861ddaa7e4f2b6638a9052c" + +[[package]] +name = "unicode-ident" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-width" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "url" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "uuid" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79" +dependencies = [ + "getrandom", + "rand", + "serde", + "uuid-macro-internal", + "wasm-bindgen", +] + +[[package]] +name = "uuid-macro-internal" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1b300a878652a387d2a0de915bdae8f1a548f0c6d45e072fe2688794b656cc9" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "want" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +dependencies = [ + "log", + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.10.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f219e0d211ba40266969f6dbdd90636da12f75bee4fc9d6c23d1260dadb51454" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" + +[[package]] +name = "wasm-logger" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "074649a66bb306c8f2068c9016395fa65d8e08d2affcbf95acf3c24c3ab19718" +dependencies = [ + "log", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "web-sys" +version = "0.3.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "webpki-roots" +version = "0.22.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" +dependencies = [ + "webpki", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "winreg" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +dependencies = [ + "winapi", +] + +[[package]] +name = "yew" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dbecfe44343b70cc2932c3eb445425969ae21754a8ab3a0966981c1cf7af1cc" +dependencies = [ + "console_error_panic_hook", + "futures", + "gloo", + "implicit-clone", + "indexmap", + "js-sys", + "prokio", + "rustversion", + "serde", + "slab", + "thiserror", + "tokio", + "tracing", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "yew-macro", +] + +[[package]] +name = "yew-macro" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b64c253c1d401f1ea868ca9988db63958cfa15a69f739101f338d6f05eea8301" +dependencies = [ + "boolinator", + "once_cell", + "prettyplease", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "yew-router" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "426ee0486d2572a6c5e39fbdbc48b58d59bb555f3326f54631025266cf04146e" +dependencies = [ + "gloo", + "js-sys", + "route-recognizer", + "serde", + "serde_urlencoded", + "tracing", + "wasm-bindgen", + "web-sys", + "yew", + "yew-router-macro", +] + +[[package]] +name = "yew-router-macro" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b249cdb39e0cddaf0644dedc781854524374664793479fdc01e6a65d6e6ae3" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..03b2d6f --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,29 @@ +[package] +name = "jl-frontend" +version = "0.1.0" +edition = "2021" +authors = [ + "Franklin Blanco " +] +license = "MIT OR Apache-2.0" + +[dependencies] +# yew and core stuff +yew = { version = "0.20.0", features = ["csr"] } +yew-router = "0.17" +stylist = "0.12.0" + +# Wasm/js stuff +wasm-logger = "0.2" +wasm-bindgen = "0.2.84" +wasm-bindgen-futures = "0.4.34" +js-sys = "0.3" + +# other libs +reqwest = { version = "0.11.11", features = ["rustls-tls", "json", "blocking"], default-features = false } +uuid = { version = "1.3.0", features = ["v4", "fast-rng", "macro-diagnostics", "serde", "js"] } +log = "0.4" +serde_json = "1.0.88" + +# Core +jl-types = { path = "../jl-types" } \ No newline at end of file diff --git a/assets/images/remax-logo.png b/assets/images/remax-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e9d58e137c74fb270d445b058c573b0c8a96c87f GIT binary patch literal 26283 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 literal 0 HcmV?d00001 diff --git a/css/.DS_Store b/css/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..f18c50bde6e2c1bf0a0ee02c9bc539f18b0c1a73 GIT binary patch literal 6148 zcmeHKPcH*O6n|5tTaBa#!f_JUhN6VHtg3^n6%I&swb)oYO?Ru2rpaFUGLF89ufuyY zLrS@d%6rM1-bXD_Rqq;P=x+FeqZWv5UxQknE__tGXoQ*TBP%T@8|db=OnH%1I)m` zVnAeTUag8lvS;ha;OMNCsOP986qg$ONI^p%#TZLR@dBzA^h+`jU5lwf^q}xXK-0hl JGw`bnya5f=WUT-I literal 0 HcmV?d00001 diff --git a/css/body.css b/css/body.css new file mode 100644 index 0000000..a304eb2 --- /dev/null +++ b/css/body.css @@ -0,0 +1,12 @@ +body { + margin: 0; /* Remove body margins */ +} + +.page-container { + padding-top: 75.5px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: stretch; + +} \ No newline at end of file diff --git a/css/landing.css b/css/landing.css new file mode 100644 index 0000000..e69de29 diff --git a/css/navbar.css b/css/navbar.css new file mode 100644 index 0000000..7fb3d1e --- /dev/null +++ b/css/navbar.css @@ -0,0 +1,160 @@ +/* Mobile View */ +.navbar-background { + position: fixed; + width: 100%; + display: flex; + flex-direction: row; + justify-content: end; + align-items: center; + align-items: stretch; + background-color: #252631; + min-height: 74px; +} + +.navbar-container { + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: stretch; + flex-grow: 1; + padding: 15px; +} + +.navbar-hamburger { + font-size: 20pt; + color: white; + display: flex; + justify-content: center; + align-items: center; + margin-top: 5px; + max-height: 35px; + min-width: 30px; + padding: 15px; +} + +.navbar-hamburger:hover { + background-color: #ffffff14; + font-size: 22pt; + font-weight: bold; + border-radius: 3px; + transition-duration: 0.3s; + cursor: pointer; +} + +.navbar-closed{ + display: flex; + flex-direction: column; + justify-content: flex-start; + margin-top: 10px; + display: none; +} + +.navbar-open { + display: flex; + flex-direction: column; + justify-content: flex-start; + margin-top: 10px; +} + +.navbar-item { + color: white; + font-size: 12pt; + padding-top: 10px; + padding-left: 5px; + padding-bottom: 10px; + font-family: Source Sans Pro; +} + +.navbar-item:hover { + background-color: #ffffff14; + font-size: 13pt; + font-weight: bold; + border-radius: 3px; + transition-duration: 0.3s; + cursor: pointer; +} + +.navbar-brand-container { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: center; + max-width: 250px; +} + +.navbar-brand-container:hover { + cursor: pointer; +} + +.navbar-title { + color: white; + font-size: 23pt; + font-family: Sacramento; +} + +.navbar-image { + max-width: 50px; + max-height: 50px; +} + +/* Desktop view */ +@media only screen and (min-width: 850px) { + .navbar-container { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: stretch; + } + + .navbar { + display: flex; + flex-direction: row; + justify-content: flex-end; + flex-grow: 1; + } + + .navbar-closed { + display: flex; + flex-direction: row; + justify-content: flex-end; + flex-grow: 1; + margin-top: 0px; + } + + .navbar-open { + display: flex; + flex-direction: row; + justify-content: flex-end; + flex-grow: 1; + margin-top: 0px; + } + + .navbar-item { + color: white; + font-size: 12pt; + padding-left: 20px; + padding-right: 20px; + padding-top: 10px; + padding-bottom: 10px; + font-family: Source Sans Pro; + } + + .navbar-item:hover { + background-color: #ffffff14; + font-size: 13pt; + font-weight: bold; + border-radius: 3px; + transition-duration: 0.3s; + cursor: pointer; + } + + .navbar-title { + color: white; + font-size: 23pt; + font-family: Sacramento; + } + + .navbar-hamburger { + display: none; + } +} diff --git a/css/search.css b/css/search.css new file mode 100644 index 0000000..c38e645 --- /dev/null +++ b/css/search.css @@ -0,0 +1,96 @@ + +.property-search-container { + display: flex; + flex-direction: column; + justify-content: stretch; + align-items: center; + padding: 10px 50px; + flex-grow: 1; +} + +.property-search-bar-container { + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + min-width: 300px; + max-width: 600px; + width: 100%; + padding: 0px 20px; + min-height: 50px; + border: 0.5px solid rgba(0, 0, 0, 0.08); + border-radius: 30px; + box-shadow: rgba(0, 0, 0, 0.1) 0px 3px 10px; + background-color: white; + flex-grow: 1; + margin-bottom: 15px; + + color: #252631; +} + +.property-search-bar { + border: 0px; + padding: 10px; + outline: none; + font-family: Source Sans Pro; + font-size: 15px; + flex-grow: 1; +} + +.search-bar-erase-button { + display: none; +} +.search-bar-erase-button:hover { + cursor: pointer; +} + +.search-bar-filter-button { + display: flex; + justify-content: center; + align-items: center; + border-radius: 25px; + border: 1px solid rgba(0, 0, 0, 0.14); + padding: 4px; + width: 20px; + height: 20px; + font-size: 14px; +} + +.search-bar-filter-button:hover { + cursor: pointer; +} + +.property-search-filters-container { + display: flex; + flex-direction: row; + justify-content: space-evenly; + flex-wrap: wrap; + align-items: center; + width: 100%; +} + +.property-search-filter-item { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + min-width: 75px; + + color: black; + padding: 5px 10px; + border: 1px solid rgba(0, 0, 0, 0.5); + border-radius: 5px; + font-family: Open Sans; + font-weight: bold; + font-size: 15px; + + +} + +.property-search-results-container { + color: purple; +} + +.property-search-result-card { + color: orange +} diff --git a/index.html b/index.html new file mode 100644 index 0000000..1156bc6 --- /dev/null +++ b/index.html @@ -0,0 +1,18 @@ + + + + + JL + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/api/backend/mod.rs b/src/api/backend/mod.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/api/base.rs b/src/api/base.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/api/mod.rs b/src/api/mod.rs new file mode 100644 index 0000000..f36d941 --- /dev/null +++ b/src/api/mod.rs @@ -0,0 +1,2 @@ +pub mod base; +pub mod backend; \ No newline at end of file diff --git a/src/components/mod.rs b/src/components/mod.rs new file mode 100644 index 0000000..937dfe6 --- /dev/null +++ b/src/components/mod.rs @@ -0,0 +1,2 @@ +pub mod nav_bar; +pub mod search_filter; \ No newline at end of file diff --git a/src/components/nav_bar.rs b/src/components/nav_bar.rs new file mode 100644 index 0000000..7f3bd9f --- /dev/null +++ b/src/components/nav_bar.rs @@ -0,0 +1,57 @@ +use yew::prelude::*; +use yew_router::prelude::use_navigator; + +use crate::{routes::main_router::{Route}, constants::{NAVBAR_TITLE, NAVBAR_COL_LANDING, NAVBAR_COL_PROYECTOS_ACABADOS, NAVBAR_COL_CONTACTO, NAVBAR_COL_PROYECTOS_EN_CONSTRUCCION}, pages::search::PropertyState}; +//use yew_router::prelude::use_navigator; + + +#[function_component(NavigationBar)] +pub fn navigation_bar() -> Html { + let navigator = use_navigator().unwrap(); + let cloned_navigator_1 = navigator.clone(); + let cloned_navigator_2 = navigator.clone(); + let cloned_navigator_3 = navigator.clone(); + let cloned_navigator_4 = navigator.clone(); + let cloned_navigator_5 = navigator.clone(); + + let navbar_toggle = use_state(|| true); + let on_click_hamburger = { + let navbar_toggle = navbar_toggle.clone(); + Callback::from(move |_| navbar_toggle.set(!*navbar_toggle)) + }; + + html! { +
+
+
+ +
+ {NAVBAR_TITLE} +
+
+ + +
+
+ {NAVBAR_COL_LANDING} +
+ +
+ {NAVBAR_COL_PROYECTOS_ACABADOS} +
+ +
+ {NAVBAR_COL_PROYECTOS_EN_CONSTRUCCION} +
+ +
+ {NAVBAR_COL_CONTACTO} +
+
+
+
+ +
+
+ } +} \ No newline at end of file diff --git a/src/components/search_filter.rs b/src/components/search_filter.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/constants/mod.rs b/src/constants/mod.rs new file mode 100644 index 0000000..e8d4160 --- /dev/null +++ b/src/constants/mod.rs @@ -0,0 +1,5 @@ +pub const NAVBAR_TITLE: &str = "Jorge Ledesma"; +pub const NAVBAR_COL_LANDING: &str = "Inicio"; +pub const NAVBAR_COL_PROYECTOS_ACABADOS: &str = "Listos para entrega"; +pub const NAVBAR_COL_PROYECTOS_EN_CONSTRUCCION: &str = "En construcción"; +pub const NAVBAR_COL_CONTACTO: &str = "Contacto"; diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..093fdfa --- /dev/null +++ b/src/main.rs @@ -0,0 +1,22 @@ +pub mod api; +pub mod components; +pub mod routes; +pub mod pages; +pub mod constants; + +use yew::prelude::*; +use yew_router::{BrowserRouter, Switch}; + +use crate::routes::main_router::{Route, switch}; + +#[function_component] +fn App() -> Html { + html! { + + render={switch} /> // <- must be child of + + } +} +fn main() { + yew::Renderer::::new().render(); +} \ No newline at end of file diff --git a/src/pages/contact.rs b/src/pages/contact.rs new file mode 100644 index 0000000..e5636c3 --- /dev/null +++ b/src/pages/contact.rs @@ -0,0 +1,16 @@ +use yew::prelude::*; + +use crate::components::nav_bar::NavigationBar; + + +#[function_component(ContactPage)] +pub fn contact_page() -> Html { + html!{ + <> + +
+ {"Contact Page"} +
+ + } +} \ No newline at end of file diff --git a/src/pages/details.rs b/src/pages/details.rs new file mode 100644 index 0000000..f0f290e --- /dev/null +++ b/src/pages/details.rs @@ -0,0 +1,8 @@ +use yew::prelude::*; + +#[function_component(DetailsPage)] +pub fn details_page() -> Html { + html!{ +
{"Details Page"}
+ } +} \ No newline at end of file diff --git a/src/pages/landing.rs b/src/pages/landing.rs new file mode 100644 index 0000000..7561ee0 --- /dev/null +++ b/src/pages/landing.rs @@ -0,0 +1,16 @@ +use yew::prelude::*; + +use crate::components::nav_bar::NavigationBar; + + +#[function_component(LandingPage)] +pub fn landing_page() -> Html { + html!{ + <> + +
+ {"Landing Page"} +
+ + } +} \ No newline at end of file diff --git a/src/pages/mod.rs b/src/pages/mod.rs new file mode 100644 index 0000000..de4016d --- /dev/null +++ b/src/pages/mod.rs @@ -0,0 +1,5 @@ +pub mod landing; +pub mod search; +pub mod details; +pub mod not_found; +pub mod contact; \ No newline at end of file diff --git a/src/pages/not_found.rs b/src/pages/not_found.rs new file mode 100644 index 0000000..7f3efc2 --- /dev/null +++ b/src/pages/not_found.rs @@ -0,0 +1,15 @@ +use yew::prelude::*; + +use crate::components::nav_bar::NavigationBar; + +#[function_component(NotFoundPage)] +pub fn not_found_page() -> Html { + html! { + <> + +
+ {"Not found page"} +
+ + } +} \ No newline at end of file diff --git a/src/pages/search.rs b/src/pages/search.rs new file mode 100644 index 0000000..1e15810 --- /dev/null +++ b/src/pages/search.rs @@ -0,0 +1,99 @@ +use std::{fmt::Display, str::FromStr}; + +use yew::prelude::*; + +use crate::components::nav_bar::NavigationBar; + +#[function_component(SearchPage)] +pub fn search_page(_props: &SearchPageProperties) -> Html { + let search_text = use_state(|| String::new()); + let clear_search_input = { + let search_text = search_text.clone(); + Callback::from(move |_| { + search_text.set(String::new()) + }) + }; + html!{ + <> + +
+
+
// Search bar + + +
+ +
+
+ +
+
+ +
// Filters +
+
{"0"}
+ +
{"+"}
+
+
+
{"0"}
+ +
{"+"}
+
+
+
{"0"}
+ +
{"+"}
+
+
+
{"0"}
+ +
{"+"}
+
+
+
+ + //TODO: Add a spacing + + +
// Search Results Content +
+
+
+ + } +} + +#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Properties)] +pub struct SearchPageProperties { + pub property_state: PropertyState +} + + +#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)] +pub enum PropertyState { + Finished, + #[default] + InConstruction, +} + +impl Display for PropertyState { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + PropertyState::Finished => write!(f, "Finished"), + PropertyState::InConstruction => write!(f, "InConstruction"), + } + } +} + +impl FromStr for PropertyState { + type Err = (); + + fn from_str(s: &str) -> Result { + match s { + "Finished" => Ok(Self::Finished), + "InConstruction" => Ok(Self::InConstruction), + _ => Err(()) + } + } +} \ No newline at end of file diff --git a/src/routes/main_router.rs b/src/routes/main_router.rs new file mode 100644 index 0000000..a011bba --- /dev/null +++ b/src/routes/main_router.rs @@ -0,0 +1,32 @@ +use yew_router::prelude::*; +use yew::prelude::*; + +use uuid::Uuid; + +use crate::{pages::{landing::LandingPage, search::{SearchPage, PropertyState}, details::DetailsPage, not_found::NotFoundPage, contact::ContactPage}}; + +#[derive(Clone, Routable, PartialEq)] +pub enum Route { + #[at("/")] + LandingPage, + #[at("/search/:property_state")] + Search { property_state: PropertyState }, + #[at("/details/:property_id")] + Details { property_id: Uuid }, + #[at("/contact")] + Contact, + + #[not_found] + #[at("/404")] + NotFound, +} + +pub fn switch(routes: Route) -> Html { + match routes { + Route::LandingPage => html! { }, + Route::Search { property_state } => html! { }, + Route::Details { property_id: _ } => html! { }, + Route::NotFound => html! { }, + Route::Contact => html! { } + } +} \ No newline at end of file diff --git a/src/routes/mod.rs b/src/routes/mod.rs new file mode 100644 index 0000000..17723fe --- /dev/null +++ b/src/routes/mod.rs @@ -0,0 +1 @@ +pub mod main_router; \ No newline at end of file