aboutsummaryrefslogtreecommitdiff
path: root/src/app
diff options
context:
space:
mode:
Diffstat (limited to 'src/app')
-rw-r--r--src/app/home/mod.rs61
-rw-r--r--src/app/manage/mod.rs68
-rw-r--r--src/app/mod.rs85
3 files changed, 214 insertions, 0 deletions
diff --git a/src/app/home/mod.rs b/src/app/home/mod.rs
new file mode 100644
index 0000000..71f3a58
--- /dev/null
+++ b/src/app/home/mod.rs
@@ -0,0 +1,61 @@
+/* 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/>.
+ */
+
+use yew::prelude::*;
+use yew_icons::IconId;
+
+use crate::app::Route;
+use crate::components::navigation_menu::*;
+
+#[function_component(HomePage)]
+pub fn home_page() -> Html {
+ html! {
+ <div id={"home-page"}>
+ <NavigationMenu>
+ <menu_header::MenuHeader>
+ <h1>{ "Welcome To OpenBills!" }</h1>
+ </menu_header::MenuHeader>
+
+ <menu_items::MenuItems>
+ <menu_item::MenuItem
+ icon={IconId::FontAwesomeSolidPlus}
+ label={"Create New Invoice"}
+ to={Route::NewInvoice}
+ />
+
+ <menu_item::MenuItem
+ icon={IconId::FontAwesomeSolidMagnifyingGlass}
+ label={"View Invoices"}
+ to={Route::ViewInvoices}
+ />
+
+ <menu_item::MenuItem
+ icon={IconId::FontAwesomeSolidMountainSun}
+ label={"Manage Data"}
+ to={Route::ManageMenu}
+ />
+
+ <menu_item::MenuItem
+ icon={IconId::FontAwesomeSolidGear}
+ label={"Settings"}
+ to={Route::Settings}
+ />
+ </menu_items::MenuItems>
+ </NavigationMenu>
+ </div>
+ }
+}
diff --git a/src/app/manage/mod.rs b/src/app/manage/mod.rs
new file mode 100644
index 0000000..17b7b16
--- /dev/null
+++ b/src/app/manage/mod.rs
@@ -0,0 +1,68 @@
+/* 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/>.
+ */
+
+use yew::prelude::*;
+use yew_icons::IconId;
+
+use crate::app::Route;
+use crate::components::navigation_menu::*;
+
+#[function_component(ManageMenuPage)]
+pub fn manage_menu_page() -> Html {
+ html! {
+ <div id={"manage-menu-page"}>
+ <NavigationMenu>
+ <menu_header::MenuHeader>
+ <h1>{ "Manage OpenBills Data" }</h1>
+ <p>{ "Here you can add/modify/delete OpenBills data (clients, invoices, etc)" }</p>
+ </menu_header::MenuHeader>
+
+ <menu_items::MenuItems>
+ <menu_item::MenuItem
+ icon={IconId::FontAwesomeSolidUser}
+ label={"Edit Clients"}
+ to={Route::ManageClients}
+ />
+
+ <menu_item::MenuItem
+ icon={IconId::FontAwesomeSolidIndustry}
+ label={"Edit Brands"}
+ to={Route::ManageBrands}
+ />
+
+ <menu_item::MenuItem
+ icon={IconId::FontAwesomeSolidCartShopping}
+ label={"Edit Items"}
+ to={Route::ManageItems}
+ />
+
+ <menu_item::MenuItem
+ icon={IconId::FontAwesomeSolidFileInvoice}
+ label={"Edit Invoices"}
+ to={Route::ManageInvoices}
+ />
+
+ <menu_item::MenuItem
+ icon={IconId::FontAwesomeSolidHouseChimney}
+ label={"Home"}
+ to={Route::Home}
+ />
+ </menu_items::MenuItems>
+ </NavigationMenu>
+ </div>
+ }
+}
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>
+ }
+}