Files
dionotes-client/src/main.rs
MDietermann fe1d736a2d feat: Routing fuer Workspace-Auswahl und Editor aufbauen
Zwei Router: WorkspaceRoute (Workspace anlegen/oeffnen) und EditorRoute
(Home/Editor), umgeschaltet ueber ein Signal in App.

Die Navigationslinks werden nicht mehr einzeln ausgeschrieben, sondern aus
dem Routen-Enum erzeugt (strum EnumIter). Die Beschriftung haengt per
#[strum(message = "...")] an der Variante selbst, damit eine neue Route nur
an einer Stelle gepflegt werden muss.

CustomLink kapselt Link und markiert den aktiven Eintrag ueber active_class
statt ueber eigenen Klick-Zustand - das funktioniert auch bei Deep-Links und
dem Zurueck-Button.
2026-08-27 14:00:27 +02:00

44 lines
1.6 KiB
Rust

mod views;
mod components;
use dioxus::prelude::*;
use crate::views::editor::dionotes_editor::EditorRoute;
use crate::views::workspace_selector::selector::WorkspaceRoute;
const FAVICON: Asset = asset!("/assets/favicon.ico");
// Linked individually rather than via @import in a single entry file: asset!()
// only emits files it is given by name, so an @import chain would 404 at runtime.
// Order matters — tokens, then baseline, then layout, then components.
const TAILWIND_CSS: Asset = asset!("/assets/tailwind.css");
const TOKENS_CSS: Asset = asset!("/assets/css/tokens.css");
const BASE_CSS: Asset = asset!("/assets/css/base.css");
const LAYOUT_CSS: Asset = asset!("/assets/css/layout.css");
const COMPONENTS_CSS: Asset = asset!("/assets/css/components.css");
fn main() {
launch(App);
}
#[component]
fn App() -> Element {
let workspace_selected: Signal<bool> = use_signal(|| false);
rsx! {
document::Link { rel: "icon", href: FAVICON }
// Tailwind first: its preflight lives in @layer base, our unlayered
// rules win the cascade regardless, but this keeps source order honest.
document::Link { rel: "stylesheet", href: TAILWIND_CSS }
document::Link { rel: "stylesheet", href: TOKENS_CSS }
document::Link { rel: "stylesheet", href: BASE_CSS }
document::Link { rel: "stylesheet", href: LAYOUT_CSS }
document::Link { rel: "stylesheet", href: COMPONENTS_CSS }
if workspace_selected() {
Router::<EditorRoute> {}
} else {
Router::<WorkspaceRoute> {}
}
}
}