use dioxus::prelude::*; use strum::{EnumMessage, IntoEnumIterator}; use strum_macros::EnumIter; use crate::components::custom_link::custom_link_component::CustomLink; #[derive(Debug, Clone, Routable, PartialEq, EnumIter, EnumMessage)] #[rustfmt::skip] pub enum WorkspaceRoute { #[layout(Workspace)] #[route("/")] #[strum(message = "Create new Workspace")] NewWorkspace {}, #[route("/ws_open")] #[strum(message = "Open Workspace")] OpenWorkspace {}, } /// Page to create new Workspace #[component] fn NewWorkspace() -> Element { rsx! { div { "New Workspace", } } } /// Page to open available Workspaces #[component] fn OpenWorkspace() -> Element { rsx! { div { "Open Workspace", } } } /// Workspace Layout #[component] fn Workspace() -> Element { rsx! { div { class: "workspace-selector-layout", div { class: "workspace-selector-links", for route in WorkspaceRoute::iter() { CustomLink { key: "{route}", label: route.get_message().unwrap_or_default(), href: route.clone(), css: "workspace-selector", } } } div { class: "workspace-selector-view", Outlet:: { } } } } }