From a6edf804b4bd71d5d79ba7428be5f901759b55ea Mon Sep 17 00:00:00 2001 From: Syahdan Date: Thu, 7 May 2026 00:35:17 +0700 Subject: [PATCH] docs: finalize report assets and polish dashboard UI --- apps/web/src/components/dashboard-shell.tsx | 142 ++++-- apps/web/src/components/dashboard-ui.tsx | 109 ++++- apps/web/src/components/sign-in-form.tsx | 90 ++-- apps/web/src/components/sign-up-form.tsx | 131 +++--- .../routes/dashboard.domains_.$domainId.tsx | 27 +- .../web/src/routes/dashboard.domains_.new.tsx | 14 +- .../src/routes/dashboard.notes_.$noteId.tsx | 2 +- apps/web/src/routes/dashboard.notes_.new.tsx | 2 +- .../routes/dashboard.servers_.$serverId.tsx | 2 +- .../web/src/routes/dashboard.servers_.new.tsx | 2 +- .../routes/dashboard.services_.$serviceId.tsx | 2 +- .../src/routes/dashboard.services_.new.tsx | 2 +- apps/web/src/utils/errors.ts | 25 + docs/diagrams/activity.mmd | 37 ++ docs/diagrams/activity.png | Bin 0 -> 87959 bytes docs/diagrams/class.mmd | 61 +++ docs/diagrams/class.png | Bin 0 -> 140894 bytes docs/diagrams/collaboration.mmd | 29 ++ docs/diagrams/collaboration.png | Bin 0 -> 48818 bytes docs/diagrams/sequence.mmd | 29 ++ docs/diagrams/sequence.png | Bin 0 -> 117403 bytes docs/diagrams/state-chart.mmd | 10 + docs/diagrams/state-chart.png | Bin 0 -> 33712 bytes docs/diagrams/use-case.mmd | 25 + docs/diagrams/use-case.png | Bin 0 -> 117055 bytes docs/minmon-homelab-report.tex | 443 +++++++++--------- docs/screenshots/manual-dashboard.png | Bin 0 -> 159156 bytes docs/screenshots/manual-domain-create.png | Bin 0 -> 79964 bytes docs/screenshots/manual-domains-list.png | Bin 0 -> 108243 bytes docs/screenshots/manual-login.png | Bin 0 -> 25673 bytes docs/screenshots/manual-note-create.png | Bin 0 -> 74708 bytes docs/screenshots/manual-notes-list.png | Bin 0 -> 113944 bytes docs/screenshots/manual-server-create.png | Bin 0 -> 86111 bytes docs/screenshots/manual-server-detail.png | Bin 0 -> 150749 bytes docs/screenshots/manual-servers-list.png | Bin 0 -> 98761 bytes docs/screenshots/manual-service-create.png | Bin 0 -> 80739 bytes docs/screenshots/manual-services-list.png | Bin 0 -> 108269 bytes packages/ui/src/components/button.tsx | 33 +- packages/ui/src/components/dialog.tsx | 132 ++++++ packages/ui/src/components/sheet.tsx | 135 ++++++ packages/ui/src/components/skeleton.tsx | 3 + packages/ui/src/components/table.tsx | 3 +- 42 files changed, 1084 insertions(+), 406 deletions(-) create mode 100644 apps/web/src/utils/errors.ts create mode 100644 docs/diagrams/activity.mmd create mode 100644 docs/diagrams/activity.png create mode 100644 docs/diagrams/class.mmd create mode 100644 docs/diagrams/class.png create mode 100644 docs/diagrams/collaboration.mmd create mode 100644 docs/diagrams/collaboration.png create mode 100644 docs/diagrams/sequence.mmd create mode 100644 docs/diagrams/sequence.png create mode 100644 docs/diagrams/state-chart.mmd create mode 100644 docs/diagrams/state-chart.png create mode 100644 docs/diagrams/use-case.mmd create mode 100644 docs/diagrams/use-case.png create mode 100644 docs/screenshots/manual-dashboard.png create mode 100644 docs/screenshots/manual-domain-create.png create mode 100644 docs/screenshots/manual-domains-list.png create mode 100644 docs/screenshots/manual-login.png create mode 100644 docs/screenshots/manual-note-create.png create mode 100644 docs/screenshots/manual-notes-list.png create mode 100644 docs/screenshots/manual-server-create.png create mode 100644 docs/screenshots/manual-server-detail.png create mode 100644 docs/screenshots/manual-servers-list.png create mode 100644 docs/screenshots/manual-service-create.png create mode 100644 docs/screenshots/manual-services-list.png create mode 100644 packages/ui/src/components/dialog.tsx create mode 100644 packages/ui/src/components/sheet.tsx diff --git a/apps/web/src/components/dashboard-shell.tsx b/apps/web/src/components/dashboard-shell.tsx index 72a2802..a0147e4 100644 --- a/apps/web/src/components/dashboard-shell.tsx +++ b/apps/web/src/components/dashboard-shell.tsx @@ -1,7 +1,23 @@ import { Button } from "@minmon/ui/components/button"; +import { + Sheet, + SheetContent, + SheetHeader, + SheetTitle, + SheetTrigger, +} from "@minmon/ui/components/sheet"; import { cn } from "@minmon/ui/lib/utils"; import { Link, Outlet, useRouterState } from "@tanstack/react-router"; -import { Activity, BookText, Globe, LayoutGrid, Server, Wrench } from "lucide-react"; +import { + Activity, + BookText, + Globe, + LayoutGrid, + MenuIcon, + Server, + Wrench, +} from "lucide-react"; +import { useEffect, useState } from "react"; const dashboardLinks = [ { @@ -36,6 +52,48 @@ const dashboardLinks = [ }, ] as const; +function isActive(pathname: string, to: string): boolean { + return to === "/dashboard" + ? pathname === to + : pathname === to || pathname.startsWith(`${to}/`); +} + +function NavItems({ + pathname, + onNavigate, +}: { + pathname: string; + onNavigate?: () => void; +}) { + return ( + + ); +} + export function DashboardShell({ userName, userEmail, @@ -47,25 +105,70 @@ export function DashboardShell({ select: (state) => state.location.pathname, }); + const [mobileOpen, setMobileOpen] = useState(false); + + useEffect(() => { + setMobileOpen(false); + }, [pathname]); + return (
-

+

+ + + + + } + /> + + + + + Navigation + + + setMobileOpen(false)} + /> + + +

+ Server Management Dashboard +

+
+

Server Management Dashboard

-

Operations overview for demos and day-to-day admin tasks

+

+ Operations overview for demos and day-to-day admin tasks +

- Use this area to review monitored assets, inspect detail states, currently used to monitor my homelab setup. + Use this area to review monitored assets, inspect detail + states, currently used to monitor my homelab setup.

-

Signed in as

-

{userName ?? "Administrator"}

-

{userEmail ?? "admin@minmon.local"}

+

+ Signed in as +

+

+ {userName ?? "Administrator"} +

+

+ {userEmail ?? "admin@minmon.local"} +

@@ -82,35 +185,14 @@ export function DashboardShell({
-