From 8f2225c902675a7109a4e8f05e80b89fac9c36d0 Mon Sep 17 00:00:00 2001 From: Arun-kushwaha007 Date: Sat, 11 Apr 2026 18:13:34 +0530 Subject: [PATCH 01/14] feat(web): implement theming system with CSS variables Replace hardcoded colors and styles in dashboard components and layout with CSS custom properties for dynamic theming support. Introduce ThemeToggle component for user-controlled theme switching. --- apps/web/app/dashboard/page.tsx | 42 ++++++++--------- apps/web/app/layout.tsx | 3 +- apps/web/components/ui/GlassCard.tsx | 6 +-- .../src/components/dashboard/ActivityList.tsx | 24 +++++----- .../components/dashboard/SpendingChart.tsx | 16 +++---- .../src/components/dashboard/SummaryCard.tsx | 17 +++---- .../src/components/layout/DashboardLayout.tsx | 3 +- apps/web/src/components/layout/Topbar.tsx | 6 ++- apps/web/src/components/theme/ThemeToggle.tsx | 47 +++++++++++++++++++ 9 files changed, 109 insertions(+), 55 deletions(-) create mode 100644 apps/web/src/components/theme/ThemeToggle.tsx diff --git a/apps/web/app/dashboard/page.tsx b/apps/web/app/dashboard/page.tsx index 9a71110..733104b 100644 --- a/apps/web/app/dashboard/page.tsx +++ b/apps/web/app/dashboard/page.tsx @@ -98,13 +98,13 @@ export default async function DashboardPage() { {attentionItems.length > 0 ? ( - +
-

+

Needs Attention

-

+

Resolve the next blockers

@@ -116,20 +116,20 @@ export default async function DashboardPage() { {attentionItems.map((item) => (
-

+

{item.groupName}

-

+

{item.currency} · {item.memberCount} members

Open @@ -153,7 +153,7 @@ export default async function DashboardPage() { {item.dueRecurringCount} due recurring ) : null} - + {formatMoney(item.netBalanceCents, item.currency)}
@@ -175,13 +175,13 @@ export default async function DashboardPage() {
- +
-

+

Crews & Nodes

-

+

Distributed spending groups

@@ -198,18 +198,18 @@ export default async function DashboardPage() {
-
+
- + {group.name}
- + {group.currency} ))} {groups.length === 0 && ( -
-

+

+

NO_ACTIVE_GROUPS_LOCATED

@@ -231,17 +231,17 @@ export default async function DashboardPage() {
-
+
-

+

OPTIMIZE
FLOW.

-

+

Review the groups with pending settlements and due recurring bills first.

-
diff --git a/apps/web/app/layout.tsx b/apps/web/app/layout.tsx index c985113..6df0518 100644 --- a/apps/web/app/layout.tsx +++ b/apps/web/app/layout.tsx @@ -50,7 +50,8 @@ export default function RootLayout({ children }: { children: React.ReactNode })