diff --git a/Web_Backgrounds/bw-theme.css b/Web_Backgrounds/bw-theme.css index c4e3155..d69f526 100644 --- a/Web_Backgrounds/bw-theme.css +++ b/Web_Backgrounds/bw-theme.css @@ -318,3 +318,71 @@ color: #1BB0CE !important; background: none !important; } + +/* ============================================================================ + Client Portal Overrides — Background for portal pages + ============================================================================ */ + +/* Make the outer portal container transparent so body::before background shows */ +.dark.theme-bw .min-h-screen.bg-background { + background: transparent !important; +} + +/* Portal sidebar — dark glass */ +.dark.theme-bw aside.bg-card.border-r.border-border { + background: hsl(240, 15%, 3%) !important; + border-right-color: hsl(270, 25%, 10%) !important; +} + +/* Portal sidebar nav items — muted text */ +.dark.theme-bw aside .text-muted-foreground { + color: hsl(240, 8%, 50%) !important; +} +.dark.theme-bw aside button:hover { + background: hsla(330, 100%, 50%, 0.08) !important; + color: hsl(0, 0%, 90%) !important; +} + +/* Portal sidebar active nav item */ +.dark.theme-bw aside .bg-primary\/10.text-primary { + background: hsl(330, 100%, 50%) !important; + color: hsl(0, 0%, 100%) !important; + box-shadow: 0 0 10px rgba(255, 0, 127, 0.3), 0 0 20px rgba(255, 0, 127, 0.1); + border-color: hsl(330, 100%, 50%) !important; +} +.dark.theme-bw aside .bg-primary\/10.text-primary svg { + color: hsl(0, 0%, 100%) !important; +} + +/* Portal header — dark glass */ +.dark.theme-bw header.bg-card\/80 { + background: hsl(240, 15%, 3%) !important; + border-bottom-color: hsl(270, 25%, 10%) !important; +} + +/* Portal card backgrounds — semi-transparent glass */ +.dark.theme-bw .bg-card { + background: hsla(240, 15%, 7%, 0.65) !important; + backdrop-filter: blur(10px) !important; + border-color: hsla(270, 30%, 20%, 0.35) !important; +} + +/* Portal borders */ +.dark.theme-bw .border-border { + border-color: hsl(270, 25%, 12%) !important; +} + +/* Portal input fields */ +.dark.theme-bw .bg-muted { + background: hsl(240, 12%, 9%) !important; +} + +/* Portal primary buttons */ +.dark.theme-bw .bg-primary { + background: hsl(330, 100%, 50%) !important; + box-shadow: 0 0 10px rgba(255, 0, 127, 0.2); +} +.dark.theme-bw .bg-primary:hover { + background: hsl(330, 100%, 55%) !important; + box-shadow: 0 0 15px rgba(255, 0, 127, 0.4); +} diff --git a/Web_Backgrounds/cosmic-theme.css b/Web_Backgrounds/cosmic-theme.css index acf723f..0219b76 100644 --- a/Web_Backgrounds/cosmic-theme.css +++ b/Web_Backgrounds/cosmic-theme.css @@ -287,3 +287,71 @@ color: #1BB0CE !important; background: none !important; } + +/* ============================================================================ + Client Portal Overrides — Background for portal pages + ============================================================================ */ + +/* Make the outer portal container transparent so body::before background shows */ +.dark.theme-cosmic .min-h-screen.bg-background { + background: transparent !important; +} + +/* Portal sidebar — dark glass */ +.dark.theme-cosmic aside.bg-card.border-r.border-border { + background: hsl(240, 15%, 3%) !important; + border-right-color: hsl(270, 25%, 10%) !important; +} + +/* Portal sidebar nav items — muted text */ +.dark.theme-cosmic aside .text-muted-foreground { + color: hsl(240, 8%, 50%) !important; +} +.dark.theme-cosmic aside button:hover { + background: hsla(330, 100%, 50%, 0.08) !important; + color: hsl(0, 0%, 90%) !important; +} + +/* Portal sidebar active nav item */ +.dark.theme-cosmic aside .bg-primary\/10.text-primary { + background: hsl(330, 100%, 50%) !important; + color: hsl(0, 0%, 100%) !important; + box-shadow: 0 0 10px rgba(255, 0, 127, 0.3), 0 0 20px rgba(255, 0, 127, 0.1); + border-color: hsl(330, 100%, 50%) !important; +} +.dark.theme-cosmic aside .bg-primary\/10.text-primary svg { + color: hsl(0, 0%, 100%) !important; +} + +/* Portal header — dark glass */ +.dark.theme-cosmic header.bg-card\/80 { + background: hsl(240, 15%, 3%) !important; + border-bottom-color: hsl(270, 25%, 10%) !important; +} + +/* Portal card backgrounds — semi-transparent glass */ +.dark.theme-cosmic .bg-card { + background: hsla(240, 15%, 7%, 0.65) !important; + backdrop-filter: blur(10px) !important; + border-color: hsla(270, 30%, 20%, 0.35) !important; +} + +/* Portal borders */ +.dark.theme-cosmic .border-border { + border-color: hsl(270, 25%, 12%) !important; +} + +/* Portal input fields */ +.dark.theme-cosmic .bg-muted { + background: hsl(240, 12%, 9%) !important; +} + +/* Portal primary buttons */ +.dark.theme-cosmic .bg-primary { + background: hsl(330, 100%, 50%) !important; + box-shadow: 0 0 10px rgba(255, 0, 127, 0.2); +} +.dark.theme-cosmic .bg-primary:hover { + background: hsl(330, 100%, 55%) !important; + box-shadow: 0 0 15px rgba(255, 0, 127, 0.4); +} diff --git a/Web_Backgrounds/cyber2-theme.css b/Web_Backgrounds/cyber2-theme.css index a0f06bc..d0aacb6 100644 --- a/Web_Backgrounds/cyber2-theme.css +++ b/Web_Backgrounds/cyber2-theme.css @@ -318,3 +318,71 @@ color: #1BB0CE !important; background: none !important; } + +/* ============================================================================ + Client Portal Overrides — Background for portal pages + ============================================================================ */ + +/* Make the outer portal container transparent so body::before background shows */ +.dark.theme-cyber2 .min-h-screen.bg-background { + background: transparent !important; +} + +/* Portal sidebar — dark glass */ +.dark.theme-cyber2 aside.bg-card.border-r.border-border { + background: hsl(240, 15%, 3%) !important; + border-right-color: hsl(270, 25%, 10%) !important; +} + +/* Portal sidebar nav items — muted text */ +.dark.theme-cyber2 aside .text-muted-foreground { + color: hsl(240, 8%, 50%) !important; +} +.dark.theme-cyber2 aside button:hover { + background: hsla(330, 100%, 50%, 0.08) !important; + color: hsl(0, 0%, 90%) !important; +} + +/* Portal sidebar active nav item */ +.dark.theme-cyber2 aside .bg-primary\/10.text-primary { + background: hsl(330, 100%, 50%) !important; + color: hsl(0, 0%, 100%) !important; + box-shadow: 0 0 10px rgba(255, 0, 127, 0.3), 0 0 20px rgba(255, 0, 127, 0.1); + border-color: hsl(330, 100%, 50%) !important; +} +.dark.theme-cyber2 aside .bg-primary\/10.text-primary svg { + color: hsl(0, 0%, 100%) !important; +} + +/* Portal header — dark glass */ +.dark.theme-cyber2 header.bg-card\/80 { + background: hsl(240, 15%, 3%) !important; + border-bottom-color: hsl(270, 25%, 10%) !important; +} + +/* Portal card backgrounds — semi-transparent glass */ +.dark.theme-cyber2 .bg-card { + background: hsla(240, 15%, 7%, 0.65) !important; + backdrop-filter: blur(10px) !important; + border-color: hsla(270, 30%, 20%, 0.35) !important; +} + +/* Portal borders */ +.dark.theme-cyber2 .border-border { + border-color: hsl(270, 25%, 12%) !important; +} + +/* Portal input fields */ +.dark.theme-cyber2 .bg-muted { + background: hsl(240, 12%, 9%) !important; +} + +/* Portal primary buttons */ +.dark.theme-cyber2 .bg-primary { + background: hsl(330, 100%, 50%) !important; + box-shadow: 0 0 10px rgba(255, 0, 127, 0.2); +} +.dark.theme-cyber2 .bg-primary:hover { + background: hsl(330, 100%, 55%) !important; + box-shadow: 0 0 15px rgba(255, 0, 127, 0.4); +} diff --git a/Web_Backgrounds/cyberpunk-theme.css b/Web_Backgrounds/cyberpunk-theme.css index cc4b4cd..ad5ad8d 100644 --- a/Web_Backgrounds/cyberpunk-theme.css +++ b/Web_Backgrounds/cyberpunk-theme.css @@ -1233,3 +1233,84 @@ .light.theme-cyberpunk span.h-1\.5.w-1\.5.rounded-full.bg-zinc-500 { background: hsl(0, 0%, 40%) !important; } + +/* ============================================================================ + Client Portal Overrides — Cyberpunk background for portal pages + ============================================================================ */ + +/* Make the outer portal container transparent so body::before background shows */ +.dark.theme-cyberpunk .min-h-screen.bg-background { + background: transparent !important; +} + +/* Portal sidebar — dark glass */ +.dark.theme-cyberpunk aside.bg-card.border-r.border-border { + background: hsl(240, 15%, 3%) !important; + border-right-color: hsl(270, 25%, 10%) !important; +} + +/* Portal sidebar nav items — muted text */ +.dark.theme-cyberpunk aside .text-muted-foreground { + color: hsl(240, 8%, 50%) !important; +} +.dark.theme-cyberpunk aside button:hover { + background: hsla(330, 100%, 50%, 0.08) !important; + color: hsl(0, 0%, 90%) !important; +} + +/* Portal sidebar active nav item — neon pink pill */ +.dark.theme-cyberpunk aside .bg-primary\/10.text-primary { + background: hsl(330, 100%, 50%) !important; + color: hsl(0, 0%, 100%) !important; + box-shadow: 0 0 10px rgba(255, 0, 127, 0.3), 0 0 20px rgba(255, 0, 127, 0.1); + border-color: hsl(330, 100%, 50%) !important; +} +.dark.theme-cyberpunk aside .bg-primary\/10.text-primary svg { + color: hsl(0, 0%, 100%) !important; +} + +/* Portal header — dark glass */ +.dark.theme-cyberpunk header.bg-card\/80 { + background: hsl(240, 15%, 3%) !important; + border-bottom-color: hsl(270, 25%, 10%) !important; +} + +/* Portal card backgrounds — semi-transparent glass */ +.dark.theme-cyberpunk .bg-card { + background: hsla(240, 15%, 7%, 0.65) !important; + backdrop-filter: blur(10px) !important; + border-color: hsla(270, 30%, 20%, 0.35) !important; +} + +/* Portal borders */ +.dark.theme-cyberpunk .border-border { + border-color: hsl(270, 25%, 12%) !important; +} + +/* Portal input fields */ +.dark.theme-cyberpunk .bg-muted { + background: hsl(240, 12%, 9%) !important; +} +.dark.theme-cyberpunk .border-border:focus { + border-color: hsl(330, 100%, 50%) !important; +} + +/* Portal primary buttons */ +.dark.theme-cyberpunk .bg-primary { + background: hsl(330, 100%, 50%) !important; + box-shadow: 0 0 10px rgba(255, 0, 127, 0.2); +} +.dark.theme-cyberpunk .bg-primary:hover { + background: hsl(330, 100%, 55%) !important; + box-shadow: 0 0 15px rgba(255, 0, 127, 0.4); +} + +/* Portal primary text highlights */ +.dark.theme-cyberpunk .text-primary { + color: hsl(330, 100%, 55%) !important; +} + +/* Portal muted text */ +.dark.theme-cyberpunk .text-muted-foreground { + color: hsl(240, 8%, 50%) !important; +} diff --git a/Web_Backgrounds/pumpkin-theme.css b/Web_Backgrounds/pumpkin-theme.css index 6bc2a39..2f11e7f 100644 --- a/Web_Backgrounds/pumpkin-theme.css +++ b/Web_Backgrounds/pumpkin-theme.css @@ -273,3 +273,71 @@ color: #1BB0CE !important; background: none !important; } + +/* ============================================================================ + Client Portal Overrides — Background for portal pages + ============================================================================ */ + +/* Make the outer portal container transparent so body::before background shows */ +.dark.theme-pumpkin .min-h-screen.bg-background { + background: transparent !important; +} + +/* Portal sidebar — dark glass */ +.dark.theme-pumpkin aside.bg-card.border-r.border-border { + background: hsl(240, 15%, 3%) !important; + border-right-color: hsl(270, 25%, 10%) !important; +} + +/* Portal sidebar nav items — muted text */ +.dark.theme-pumpkin aside .text-muted-foreground { + color: hsl(240, 8%, 50%) !important; +} +.dark.theme-pumpkin aside button:hover { + background: hsla(330, 100%, 50%, 0.08) !important; + color: hsl(0, 0%, 90%) !important; +} + +/* Portal sidebar active nav item */ +.dark.theme-pumpkin aside .bg-primary\/10.text-primary { + background: hsl(330, 100%, 50%) !important; + color: hsl(0, 0%, 100%) !important; + box-shadow: 0 0 10px rgba(255, 0, 127, 0.3), 0 0 20px rgba(255, 0, 127, 0.1); + border-color: hsl(330, 100%, 50%) !important; +} +.dark.theme-pumpkin aside .bg-primary\/10.text-primary svg { + color: hsl(0, 0%, 100%) !important; +} + +/* Portal header — dark glass */ +.dark.theme-pumpkin header.bg-card\/80 { + background: hsl(240, 15%, 3%) !important; + border-bottom-color: hsl(270, 25%, 10%) !important; +} + +/* Portal card backgrounds — semi-transparent glass */ +.dark.theme-pumpkin .bg-card { + background: hsla(240, 15%, 7%, 0.65) !important; + backdrop-filter: blur(10px) !important; + border-color: hsla(270, 30%, 20%, 0.35) !important; +} + +/* Portal borders */ +.dark.theme-pumpkin .border-border { + border-color: hsl(270, 25%, 12%) !important; +} + +/* Portal input fields */ +.dark.theme-pumpkin .bg-muted { + background: hsl(240, 12%, 9%) !important; +} + +/* Portal primary buttons */ +.dark.theme-pumpkin .bg-primary { + background: hsl(330, 100%, 50%) !important; + box-shadow: 0 0 10px rgba(255, 0, 127, 0.2); +} +.dark.theme-pumpkin .bg-primary:hover { + background: hsl(330, 100%, 55%) !important; + box-shadow: 0 0 15px rgba(255, 0, 127, 0.4); +} diff --git a/Web_Backgrounds/spidey-theme.css b/Web_Backgrounds/spidey-theme.css index 5a68e00..b5e101e 100644 --- a/Web_Backgrounds/spidey-theme.css +++ b/Web_Backgrounds/spidey-theme.css @@ -183,3 +183,71 @@ color: #1BB0CE !important; background: none !important; } + +/* ============================================================================ + Client Portal Overrides — Background for portal pages + ============================================================================ */ + +/* Make the outer portal container transparent so body::before background shows */ +.dark.theme-spidey .min-h-screen.bg-background { + background: transparent !important; +} + +/* Portal sidebar — dark glass */ +.dark.theme-spidey aside.bg-card.border-r.border-border { + background: hsl(240, 15%, 3%) !important; + border-right-color: hsl(270, 25%, 10%) !important; +} + +/* Portal sidebar nav items — muted text */ +.dark.theme-spidey aside .text-muted-foreground { + color: hsl(240, 8%, 50%) !important; +} +.dark.theme-spidey aside button:hover { + background: hsla(0, 100%, 50%, 0.08) !important; + color: hsl(0, 0%, 90%) !important; +} + +/* Portal sidebar active nav item */ +.dark.theme-spidey aside .bg-primary\/10.text-primary { + background: hsl(0, 100%, 50%) !important; + color: hsl(0, 0%, 100%) !important; + box-shadow: 0 0 10px rgba(255, 0, 0, 0.3), 0 0 20px rgba(255, 0, 0, 0.1); + border-color: hsl(0, 100%, 50%) !important; +} +.dark.theme-spidey aside .bg-primary\/10.text-primary svg { + color: hsl(0, 0%, 100%) !important; +} + +/* Portal header — dark glass */ +.dark.theme-spidey header.bg-card\/80 { + background: hsl(240, 15%, 3%) !important; + border-bottom-color: hsl(270, 25%, 10%) !important; +} + +/* Portal card backgrounds — semi-transparent glass */ +.dark.theme-spidey .bg-card { + background: hsla(240, 15%, 7%, 0.65) !important; + backdrop-filter: blur(10px) !important; + border-color: hsla(270, 30%, 20%, 0.35) !important; +} + +/* Portal borders */ +.dark.theme-spidey .border-border { + border-color: hsl(270, 25%, 12%) !important; +} + +/* Portal input fields */ +.dark.theme-spidey .bg-muted { + background: hsl(240, 12%, 9%) !important; +} + +/* Portal primary buttons */ +.dark.theme-spidey .bg-primary { + background: hsl(0, 100%, 50%) !important; + box-shadow: 0 0 10px rgba(255, 0, 0, 0.2); +} +.dark.theme-spidey .bg-primary:hover { + background: hsl(0, 100%, 55%) !important; + box-shadow: 0 0 15px rgba(255, 0, 0, 0.4); +} diff --git a/src/app/client-portal/activity/page.tsx b/src/app/client-portal/activity/page.tsx index a39326a..f45e571 100644 --- a/src/app/client-portal/activity/page.tsx +++ b/src/app/client-portal/activity/page.tsx @@ -31,9 +31,9 @@ export default function ClientActivity() { }, []) const getIcon = (type: string) => { - if (type === "milestone") return - if (type === "invoice") return - return + if (type === "milestone") return + if (type === "invoice") return + return } const getStatusColor = (type: string, status: string) => { @@ -59,35 +59,35 @@ export default function ClientActivity() { return (
-

Activity

-

Recent project updates and changes

+

Activity

+

Recent project updates and changes

{events.length === 0 ? (
- -

No recent activity

+ +

No recent activity

) : (
-
+
{(events || []).map((e, i) => ( ))}
diff --git a/src/app/client-portal/dashboard/page.tsx b/src/app/client-portal/dashboard/page.tsx index 79122f7..48f40f6 100644 --- a/src/app/client-portal/dashboard/page.tsx +++ b/src/app/client-portal/dashboard/page.tsx @@ -60,8 +60,8 @@ export default function ClientDashboard() { return (
-

Welcome, {name}

-

Your project overview at a glance

+

Welcome, {name}

+

Your project overview at a glance

{/* Count cards */}
@@ -71,15 +71,15 @@ export default function ClientDashboard() { ) })} @@ -87,24 +87,24 @@ export default function ClientDashboard() { {/* Financial stats */}
-
+
- - Total Billed + + Total Billed
-

{formatCurrency(stats.totalBilled)}

+

{formatCurrency(stats.totalBilled)}

-
+
- Total Paid + Total Paid

{formatCurrency(stats.totalPaid)}

-
+
- Overdue + Overdue

{formatCurrency(stats.totalOverdue)}

@@ -112,24 +112,24 @@ export default function ClientDashboard() { {/* Upcoming Deadlines */} {stats.upcomingDeadlines.length > 0 && ( -
+
- - Upcoming Deadlines + + Upcoming Deadlines
{(stats.upcomingDeadlines || []).map((d, i) => (
-

{d.name}

-

{d.type} · {d.status_name?.replace("_", " ")}

+

{d.name}

+

{d.type} · {d.status_name?.replace("_", " ")}

- + {new Date(d.date).toLocaleDateString()}
diff --git a/src/app/client-portal/invoices/[id]/page.tsx b/src/app/client-portal/invoices/[id]/page.tsx index e409855..77e9488 100644 --- a/src/app/client-portal/invoices/[id]/page.tsx +++ b/src/app/client-portal/invoices/[id]/page.tsx @@ -147,7 +147,7 @@ export default function InvoiceDetail() { if (!data) { return (
-
+
) } @@ -157,10 +157,10 @@ export default function InvoiceDetail() { return (
-

Invoice {invoice.invoice_number}

+

Invoice {invoice.invoice_number}