From d559a24c45c6e41af921428816ebcb451fea1efe Mon Sep 17 00:00:00 2001 From: Wikid82 Date: Wed, 19 Nov 2025 10:53:55 -0500 Subject: [PATCH 001/162] feat(frontend): implement basic UI foundation (Issue #6) --- frontend/src/App.tsx | 2 + frontend/src/components/Layout.tsx | 53 +++++++++++++++++------ frontend/src/components/ThemeToggle.tsx | 12 ++++++ frontend/src/components/ui/Button.tsx | 55 ++++++++++++++++++++++++ frontend/src/components/ui/Card.tsx | 31 ++++++++++++++ frontend/src/components/ui/Input.tsx | 41 ++++++++++++++++++ frontend/src/context/ThemeContext.tsx | 42 ++++++++++++++++++ frontend/src/main.tsx | 5 ++- frontend/src/pages/Login.tsx | 57 +++++++++++++++++++++++++ frontend/tailwind.config.js | 1 + 10 files changed, 286 insertions(+), 13 deletions(-) create mode 100644 frontend/src/components/ThemeToggle.tsx create mode 100644 frontend/src/components/ui/Button.tsx create mode 100644 frontend/src/components/ui/Card.tsx create mode 100644 frontend/src/components/ui/Input.tsx create mode 100644 frontend/src/context/ThemeContext.tsx create mode 100644 frontend/src/pages/Login.tsx diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index d42a28a3..543c3c04 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -6,11 +6,13 @@ import ProxyHosts from './pages/ProxyHosts' import RemoteServers from './pages/RemoteServers' import ImportCaddy from './pages/ImportCaddy' import Settings from './pages/Settings' +import Login from './pages/Login' export default function App() { return ( + } /> }> } /> } /> diff --git a/frontend/src/components/Layout.tsx b/frontend/src/components/Layout.tsx index 4f3adf38..f23d7ea1 100644 --- a/frontend/src/components/Layout.tsx +++ b/frontend/src/components/Layout.tsx @@ -1,5 +1,7 @@ -import { ReactNode } from 'react' +import { ReactNode, useState } from 'react' import { Link, useLocation } from 'react-router-dom' +import { ThemeToggle } from './ThemeToggle' +import { Button } from './ui/Button' interface LayoutProps { children: ReactNode @@ -7,6 +9,7 @@ interface LayoutProps { export default function Layout({ children }: LayoutProps) { const location = useLocation() + const [sidebarOpen, setSidebarOpen] = useState(false) const navigation = [ { name: 'Dashboard', path: '/', icon: '📊' }, @@ -17,23 +20,41 @@ export default function Layout({ children }: LayoutProps) { ] return ( -
- {/* Sidebar */} -