/* openbills-web - Web client for Libre Billing Software * Copyright (C) 2023 Vidhu Kant Sharma * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ use yew::prelude::*; use yew_router::prelude::*; use crate::app::Route; use crate::components::navbar::nav_link::NavLink; #[derive(PartialEq)] struct Link { pub label: String, pub to: Route, } // shows different links based on the current route #[function_component(Nav)] pub fn nav() -> Html { let current_route = use_route::().unwrap_or_default(); // fallback to this set of links let default_links = Vec::from([ Link { label: String::from("Home"), to: Route::Home, }, Link { label: String::from("Manage"), to: Route::ManageMenu, }, ]); let manage_links = Vec::from([ Link { label: String::from("Home"), to: Route::Home, }, Link { label: String::from("Clients"), to: Route::ManageClients, }, Link { label: String::from("Brands"), to: Route::ManageBrands, }, Link { label: String::from("Items"), to: Route::ManageItems, }, Link { label: String::from("Invoices"), to: Route::ManageInvoices, }, ]); let links_html: Html = match current_route { Route::ManageClients | Route::ManageBrands | Route::ManageItems | Route::ManageInvoices => manage_links, _ => default_links, } .iter() .map(|link| html!()) .collect(); html! { } }