Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
140 changes: 139 additions & 1 deletion dashboard/app/globals.css
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
@import "tailwindcss";
@import "tw-animate-css";

@custom-variant dark (&:is(.dark *));
@variant dark (.dark &);

@theme inline {
--font-display: var(--font-rebels);
Expand Down Expand Up @@ -168,6 +168,144 @@
}
}

/* Enhanced shadows that work in both light and dark modes */
.shadow-navbar {
box-shadow:
0 2px 4px -1px rgb(0 0 0 / 0.1),
0 4px 6px -1px rgb(0 0 0 / 0.1),
0 1px 0px 0px rgb(0 0 0 / 0.05);
}

.dark .shadow-navbar {
box-shadow:
0 2px 4px -1px rgb(0 0 0 / 0.8),
0 4px 6px -1px rgb(0 0 0 / 0.6),
0 1px 0px 0px oklch(0.65 0.22 45 / 0.2),
inset 0 1px 0 0 oklch(0.65 0.22 45 / 0.1);
}

.shadow-sidebar {
box-shadow:
4px 0 6px -1px rgb(0 0 0 / 0.1),
2px 0 4px -1px rgb(0 0 0 / 0.06),
8px 0 15px -3px rgb(0 0 0 / 0.1);
}

.dark .shadow-sidebar {
box-shadow:
4px 0 6px -1px rgb(0 0 0 / 0.9),
2px 0 4px -1px rgb(0 0 0 / 0.7),
8px 0 15px -3px rgb(0 0 0 / 0.8),
inset -1px 0 0 0 oklch(0.65 0.22 45 / 0.15),
4px 0 20px -5px oklch(0.65 0.22 45 / 0.1);
}

.shadow-panel {
box-shadow:
0 4px 6px -1px rgb(0 0 0 / 0.1),
0 2px 4px -1px rgb(0 0 0 / 0.06),
0 10px 15px -3px rgb(0 0 0 / 0.1);
}

.dark .shadow-panel {
box-shadow:
0 4px 6px -1px rgb(0 0 0 / 0.8),
0 2px 4px -1px rgb(0 0 0 / 0.6),
0 10px 15px -3px rgb(0 0 0 / 0.7),
inset 0 1px 0 0 oklch(0.65 0.22 45 / 0.08),
0 0 30px -10px oklch(0.65 0.22 45 / 0.05);
}

.shadow-card {
box-shadow:
0 1px 3px 0 rgb(0 0 0 / 0.1),
0 1px 2px 0 rgb(0 0 0 / 0.06),
0 4px 6px -1px rgb(0 0 0 / 0.1);
}

.dark .shadow-card {
box-shadow:
0 1px 3px 0 rgb(0 0 0 / 0.8),
0 1px 2px 0 rgb(0 0 0 / 0.6),
0 4px 6px -1px rgb(0 0 0 / 0.7),
inset 0 1px 0 0 oklch(0.65 0.22 45 / 0.12),
0 0 0 1px oklch(0.65 0.22 45 / 0.08);
}

.shadow-elevated {
box-shadow:
0 10px 15px -3px rgb(0 0 0 / 0.1),
0 4px 6px -2px rgb(0 0 0 / 0.05),
0 20px 25px -5px rgb(0 0 0 / 0.1);
}

.dark .shadow-elevated {
box-shadow:
0 10px 15px -3px rgb(0 0 0 / 0.9),
0 4px 6px -2px rgb(0 0 0 / 0.7),
0 20px 25px -5px rgb(0 0 0 / 0.8),
inset 0 1px 0 0 oklch(0.65 0.22 45 / 0.15),
0 0 0 1px oklch(0.65 0.22 45 / 0.1),
0 0 40px -10px oklch(0.65 0.22 45 / 0.08);
}

.shadow-button {
box-shadow:
0 1px 2px 0 rgb(0 0 0 / 0.05),
0 1px 3px 0 rgb(0 0 0 / 0.1);
}

.dark .shadow-button {
box-shadow:
0 1px 2px 0 rgb(0 0 0 / 0.6),
0 1px 3px 0 rgb(0 0 0 / 0.8),
inset 0 1px 0 0 oklch(0.65 0.22 45 / 0.1);
}

.shadow-button:hover {
box-shadow:
0 2px 4px 0 rgb(0 0 0 / 0.1),
0 4px 6px -1px rgb(0 0 0 / 0.1);
}

.dark .shadow-button:hover {
box-shadow:
0 2px 4px 0 rgb(0 0 0 / 0.8),
0 4px 6px -1px rgb(0 0 0 / 0.9),
inset 0 1px 0 0 oklch(0.65 0.22 45 / 0.2),
0 0 15px -5px oklch(0.65 0.22 45 / 0.15);
}

/* Additional dark mode enhancements with orange theme */
.dark .shadow-glow {
box-shadow:
0 0 20px oklch(0.65 0.22 45 / 0.08),
0 0 40px oklch(0.65 0.22 45 / 0.04),
inset 0 0 0 1px oklch(0.65 0.22 45 / 0.1);
}

.dark .shadow-border {
box-shadow:
inset 0 0 0 1px oklch(0.65 0.22 45 / 0.15),
0 1px 3px 0 rgb(0 0 0 / 0.8),
0 0 10px -3px oklch(0.65 0.22 45 / 0.1);
}

.dark .shadow-orange-glow {
box-shadow:
0 0 30px oklch(0.65 0.22 45 / 0.1),
0 0 60px oklch(0.65 0.22 45 / 0.05),
inset 0 1px 0 0 oklch(0.65 0.22 45 / 0.2);
}

.dark .shadow-accent {
box-shadow:
0 4px 6px -1px rgb(0 0 0 / 0.8),
0 2px 4px -1px rgb(0 0 0 / 0.6),
inset 0 1px 0 0 oklch(0.769 0.188 70.08 / 0.1),
0 0 0 1px oklch(0.769 0.188 70.08 / 0.08);
}

.recharts-cartesian-grid-vertical :first-child,
.recharts-cartesian-grid-vertical :last-child {
opacity: 0;
Expand Down
2 changes: 1 addition & 1 deletion dashboard/app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ export default function RootLayout({
children: React.ReactNode
}>) {
return (
<html lang="en" className="dark">
<html lang="en" suppressHydrationWarning>
<head>
<link rel="preload" href="/fonts/Rebels-Fett.woff2" as="font" type="font/woff2" crossOrigin="anonymous" />
</head>
Expand Down
2 changes: 1 addition & 1 deletion dashboard/components/dashboard/chart/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ export default function DashboardChart() {

const renderChart = (data: ChartDataPoint[]) => {
return (
<div className="bg-accent rounded-lg p-3">
<div className="bg-accent rounded-lg p-3 shadow-card dark:shadow-accent">
<ChartContainer className="md:aspect-[3/1] w-full" config={chartConfig}>
<AreaChart
accessibilityLayer
Expand Down
8 changes: 4 additions & 4 deletions dashboard/components/dashboard/layout/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ export default function DashboardPageLayout({
}: DashboardPageLayoutProps) {
return (
<div className="flex flex-col relative w-full gap-1 min-h-full">
<div className="flex items-center lg:items-baseline gap-2.5 md:gap-4 px-4 md:px-6 py-3 md:pb-4 lg:pt-7 ring-2 ring-pop sticky top-header-mobile lg:top-0 bg-background z-10">
<div className="max-lg:contents rounded bg-primary size-7 md:size-9 flex items-center justify-center my-auto">
<header.icon className="ml-1 lg:ml-0 opacity-50 md:opacity-100 size-5" />
<div className="flex items-center lg:items-baseline gap-2.5 md:gap-4 px-4 md:px-6 py-3 md:pb-4 lg:pt-7 ring-2 ring-pop sticky top-header-mobile lg:top-0 bg-background z-10 shadow-navbar">
<div className="max-lg:contents rounded bg-primary size-7 md:size-9 flex items-center justify-center my-auto shadow-card">
<header.icon className="ml-1 lg:ml-0 opacity-50 md:opacity-100 size-5 text-primary-foreground" />
</div>
<h1 className="text-xl lg:text-4xl font-serif leading-[1] mb-1">
{header.title}
Expand All @@ -29,7 +29,7 @@ export default function DashboardPageLayout({
</span>
)}
</div>
<div className="min-h-full flex-1 flex flex-col gap-8 md:gap-14 px-3 lg:px-6 py-6 md:py-10 ring-2 ring-pop bg-background">
<div className="min-h-full flex-1 flex flex-col gap-8 md:gap-14 px-3 lg:px-6 py-6 md:py-10 ring-2 ring-pop bg-background shadow-panel dark:shadow-border">
{children}
</div>
</div>
Expand Down
11 changes: 9 additions & 2 deletions dashboard/components/dashboard/mobile-header/index.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
import Image from "next/image"
import { ThemeToggleSimple } from "@/components/theme-toggle-simple"

export function MobileHeader() {
return (
<div className="lg:hidden h-header-mobile sticky top-0 z-50 bg-background/95 backdrop-blur-sm border-b border-border">
<div className="flex items-center justify-center px-4 py-3">
<div className="lg:hidden h-header-mobile sticky top-0 z-50 bg-background/95 backdrop-blur-sm border-b border-border shadow-elevated">
<div className="flex items-center justify-between px-4 py-3">
{/* Left: Empty space for balance */}
<div className="w-8"></div>

{/* Center: Logo */}
<div className="flex items-center gap-3">
<div className="flex items-center gap-2">
Expand All @@ -18,6 +22,9 @@ export function MobileHeader() {
</div>
</div>
</div>

{/* Right: Theme Toggle */}
<ThemeToggleSimple />
</div>
</div>
)
Expand Down
4 changes: 4 additions & 0 deletions dashboard/components/dashboard/sidebar/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import { Bullet } from "@/components/ui/bullet"
import LockIcon from "@/components/icons/lock"
import CreditCardIcon from "@/components/icons/credit-card"
import { usePathname } from "next/navigation"
import { ThemeToggleSimpleClick } from "@/components/theme-toggle-simple-click"

import {
Sidebar,
Expand Down Expand Up @@ -80,6 +81,9 @@ export function DashboardSidebar({ className, ...props }: React.ComponentProps<t
<span className="text-2xl font-serif font-bold">StablePay</span>
<span className="text-xs uppercase">Merchant Dashboard for Payment Management</span>
</div>
<div className="flex items-start pt-1">
<ThemeToggleSimpleClick />
</div>
</SidebarHeader>

<SidebarContent>
Expand Down
2 changes: 1 addition & 1 deletion dashboard/components/dashboard/stat/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ export default function DashboardStat({ label, value, description, icon, tag, in
const { prefix, numericValue, suffix, isNumeric } = parseValue(value)

return (
<Card className="relative overflow-hidden min-h-[200px]">
<Card className="relative overflow-hidden min-h-[200px] shadow-card hover:shadow-elevated transition-shadow duration-300 dark:shadow-border">
<CardHeader className="flex items-center justify-between pb-4">
<CardTitle className="flex items-center gap-2.5 text-base">
<Bullet />
Expand Down
Loading