diff --git a/Cargo.lock b/Cargo.lock index 409ef7d..3b15cc3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -566,6 +566,15 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "codee" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d3ad3122b0001c7f140cf4d605ef9a9e2c24d96ab0b4fb4347b76de2425f445" +dependencies = [ + "thiserror 1.0.69", +] + [[package]] name = "collection_literals" version = "1.0.3" @@ -790,6 +799,41 @@ version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b10589d1a5e400d61f9f38f12f884cfd080ff345de8f17efda36fe0e4a02aa8" +[[package]] +name = "darling" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.114", +] + +[[package]] +name = "darling_macro" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.114", +] + [[package]] name = "dashmap" version = "5.5.3" @@ -823,6 +867,18 @@ version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea" +[[package]] +name = "default-struct-builder" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0df63c21a4383f94bd5388564829423f35c316aed85dc4f8427aded372c7c0d" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.114", +] + [[package]] name = "der" version = "0.4.5" @@ -1144,7 +1200,9 @@ dependencies = [ name = "frontend" version = "0.1.0" dependencies = [ + "base64 0.22.1", "chrono", + "codee", "console_error_panic_hook", "console_log", "futures", @@ -1152,9 +1210,11 @@ dependencies = [ "gloo-timers", "js-sys", "leptos", + "leptos-use", "leptos_router", "log", "serde", + "serde-wasm-bindgen", "serde_json", "shared", "tailwind_fuse", @@ -1819,6 +1879,12 @@ dependencies = [ "zerovec", ] +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + [[package]] name = "idna" version = "1.1.0" @@ -1986,6 +2052,30 @@ dependencies = [ "web-sys", ] +[[package]] +name = "leptos-use" +version = "0.13.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "789bf9f4337e6ebd8f1b407e3f762fdc538d48dc145f9d1dce2338014b38f4dd" +dependencies = [ + "cfg-if", + "chrono", + "codee", + "cookie", + "default-struct-builder", + "futures-util", + "gloo-timers", + "js-sys", + "lazy_static", + "leptos", + "paste", + "thiserror 1.0.69", + "unic-langid", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + [[package]] name = "leptos_config" version = "0.6.15" @@ -3934,6 +4024,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" dependencies = [ "displaydoc", + "serde_core", "zerovec", ] @@ -4298,6 +4389,24 @@ version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +[[package]] +name = "unic-langid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28ba52c9b05311f4f6e62d5d9d46f094bd6e84cb8df7b3ef952748d752a7d05" +dependencies = [ + "unic-langid-impl", +] + +[[package]] +name = "unic-langid-impl" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dce1bf08044d4b7a94028c93786f8566047edc11110595914de93362559bc658" +dependencies = [ + "tinystr", +] + [[package]] name = "unicase" version = "2.9.0" @@ -5055,6 +5164,7 @@ version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" dependencies = [ + "serde", "yoke", "zerofrom", "zerovec-derive", diff --git a/frontend/index.html b/frontend/index.html index 0103a8b..9e5f55b 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -20,6 +20,11 @@ + + + + + diff --git a/frontend/input.css b/frontend/input.css index 74b81dd..62d6786 100644 --- a/frontend/input.css +++ b/frontend/input.css @@ -3,14 +3,42 @@ @plugin "daisyui" { themes: - light, dark, dim, nord, cupcake, dracula, cyberpunk, emerald, sunset, - abyss; + vibeglass, dark; } @layer base { + html { + font-family: 'Space Grotesk', sans-serif; + } + html, body { - @apply min-h-dvh w-full overflow-hidden bg-base-100 text-base-content overscroll-y-none; + @apply min-h-dvh w-full overflow-hidden bg-[#0f172a] text-base-content overscroll-y-none; + background-image: + radial-gradient(circle at 15% 50%, rgba(244, 157, 37, 0.08), transparent 25%), + radial-gradient(circle at 85% 30%, rgba(59, 130, 246, 0.08), transparent 25%); + background-attachment: fixed; + } + + /* Glassmorphism Utilities */ + .glass-panel { + @apply bg-gray-800/40 backdrop-blur-xl border border-white/10 shadow-xl; + } + + .glass-sidebar { + @apply bg-gray-900/60 backdrop-blur-xl border-r border-white/5; + } + + .glass-header { + @apply bg-gray-900/40 backdrop-blur-md border-b border-white/5; + } + + .glass-input { + @apply bg-gray-700/30 border border-white/10 text-white placeholder-gray-400 focus:border-primary focus:ring-1 focus:ring-primary transition-all backdrop-blur-sm; + } + + .glass-card { + @apply bg-gray-800/30 backdrop-blur-md border border-white/5 shadow-lg hover:bg-gray-800/40 transition-colors; } } @@ -30,3 +58,22 @@ :focus { outline: none !important; } + +/* Scrollbar styling for glass theme */ +::-webkit-scrollbar { + width: 6px; + height: 6px; +} + +::-webkit-scrollbar-track { + background: transparent; +} + +::-webkit-scrollbar-thumb { + background: rgba(255, 255, 255, 0.1); + border-radius: 10px; +} + +::-webkit-scrollbar-thumb:hover { + background: rgba(255, 255, 255, 0.2); +} \ No newline at end of file diff --git a/frontend/src/components/layout/protected.rs b/frontend/src/components/layout/protected.rs index ef3e4b2..510149c 100644 --- a/frontend/src/components/layout/protected.rs +++ b/frontend/src/components/layout/protected.rs @@ -6,13 +6,13 @@ use crate::components::layout::toolbar::Toolbar; #[component] pub fn Protected(children: Children) -> impl IntoView { view! { -