From 28757d1e6bba9db6ef32d44cb6d18d63594aafba Mon Sep 17 00:00:00 2001 From: myrmidex Date: Sun, 28 Jun 2026 02:22:07 +0200 Subject: [PATCH] 33 - Add terminal UI primitives and base layout --- frontend/src/App.tsx | 21 +++++-- frontend/src/components/layout/AppLayout.tsx | 18 ++++++ frontend/src/components/ui/Button.tsx | 19 ++++++ .../src/components/ui/DigitalProgressBar.tsx | 59 +++++++++++++++++++ frontend/src/components/ui/Panel.tsx | 13 ++++ frontend/src/lib/cn.ts | 13 ++++ 6 files changed, 137 insertions(+), 6 deletions(-) create mode 100644 frontend/src/components/layout/AppLayout.tsx create mode 100644 frontend/src/components/ui/Button.tsx create mode 100644 frontend/src/components/ui/DigitalProgressBar.tsx create mode 100644 frontend/src/components/ui/Panel.tsx create mode 100644 frontend/src/lib/cn.ts diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index d8ef4c3..8953049 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1,11 +1,20 @@ +import AppLayout from './components/layout/AppLayout' +import Button from './components/ui/Button' +import DigitalProgressBar from './components/ui/DigitalProgressBar' +import Panel from './components/ui/Panel' + function App() { return ( -
-

- BUCKETS -

-

1234567890

-
+ + +

+ Emergency Fund +

+ +

$750 / $1000

+ +
+
) } diff --git a/frontend/src/components/layout/AppLayout.tsx b/frontend/src/components/layout/AppLayout.tsx new file mode 100644 index 0000000..da6fc37 --- /dev/null +++ b/frontend/src/components/layout/AppLayout.tsx @@ -0,0 +1,18 @@ +import type { ReactNode } from 'react' + +interface AppLayoutProps { + children: ReactNode +} + +export default function AppLayout({ children }: AppLayoutProps) { + return ( +
+
+

+ BUCKETS +

+
+
{children}
+
+ ) +} diff --git a/frontend/src/components/ui/Button.tsx b/frontend/src/components/ui/Button.tsx new file mode 100644 index 0000000..fa8a56f --- /dev/null +++ b/frontend/src/components/ui/Button.tsx @@ -0,0 +1,19 @@ +import type { ButtonHTMLAttributes } from 'react' +import { cn } from '../../lib/cn' + +interface ButtonProps extends ButtonHTMLAttributes { + glow?: boolean +} + +export default function Button({ glow, className, ...props }: ButtonProps) { + return ( +