aboutsummaryrefslogtreecommitdiff
path: root/src/app/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/app/mod.rs')
-rw-r--r--src/app/mod.rs85
1 files changed, 85 insertions, 0 deletions
diff --git a/src/app/mod.rs b/src/app/mod.rs
new file mode 100644
index 0000000..671aac6
--- /dev/null
+++ b/src/app/mod.rs
@@ -0,0 +1,85 @@
+/* openbills-web - Web client for Libre Billing Software
+ * Copyright (C) 2023 Vidhu Kant Sharma <vidhukant@vidhukant.com>
+ *
+ * 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 <https://www.gnu.org/licenses/>.
+ */
+
+mod home;
+mod manage;
+
+use yew::prelude::*;
+use yew_router::prelude::*;
+
+use crate::components::navbar;
+
+#[derive(Clone, Routable, PartialEq)]
+pub enum Route {
+ #[at("/")]
+ Home,
+
+ #[at("/manage")]
+ ManageMenu,
+ #[at("/manage/clients")]
+ ManageClients,
+ #[at("/manage/brands")]
+ ManageBrands,
+ #[at("/manage/items")]
+ ManageItems,
+ #[at("/manage/invoices")]
+ ManageInvoices,
+
+ #[at("/invoice/new")]
+ NewInvoice,
+ #[at("/invoice/all")]
+ ViewInvoices,
+ #[at("/invoice/one")]
+ ViewInvoice,
+ #[at("/settings")]
+ Settings,
+
+ #[not_found]
+ #[at("/404")]
+ NotFound,
+}
+
+pub fn switch(routes: Route) -> Html {
+ match routes {
+ Route::Home => html! {<home::HomePage />},
+
+ Route::ManageMenu => html! {<manage::ManageMenuPage />},
+ Route::ManageClients => html! {<h1>{ "Edit Clients" }</h1>},
+ Route::ManageBrands => html! {<h1>{ "Edit Brands" }</h1>},
+ Route::ManageItems => html! {<h1>{ "Edit Items" }</h1>},
+ Route::ManageInvoices => html! {<h1>{ "Edit Invoices" }</h1>},
+
+ Route::NewInvoice => html! {<h1>{ "Create New Invoice" }</h1>},
+ Route::ViewInvoices => html! {<h1>{ "View All Invoices" }</h1>},
+ Route::ViewInvoice => html! {<h1>{ "View a Single Invoice" }</h1>},
+ Route::Settings => html! {<h1>{ "Settings Page" }</h1>},
+
+ Route::NotFound => html! {<h1>{"404 Page Not Found"}</h1>},
+ }
+}
+
+#[function_component(App)]
+pub fn app() -> Html {
+ html! {
+ <BrowserRouter>
+ <navbar::Navbar />
+ <main>
+ <Switch<Route> render={switch} />
+ </main>
+ </BrowserRouter>
+ }
+}