From 19408675192caf11a12c208aecf70c301527621a Mon Sep 17 00:00:00 2001 From: Citali Date: Sun, 1 Feb 2026 15:08:34 +0100 Subject: [PATCH] Change overall look for dark mode and Timelapse View --- src/app/(normal)/commissions/page.tsx | 15 +- src/app/globals.css | 170 +++++------------- .../artworks/ArtworkTimelapseViewer.tsx | 6 +- src/components/ui/button.tsx | 2 +- src/components/ui/checkbox.tsx | 2 +- src/components/ui/input.tsx | 2 +- src/components/ui/textarea.tsx | 2 +- 7 files changed, 54 insertions(+), 145 deletions(-) diff --git a/src/app/(normal)/commissions/page.tsx b/src/app/(normal)/commissions/page.tsx index 510aed2..65ff2a7 100644 --- a/src/app/(normal)/commissions/page.tsx +++ b/src/app/(normal)/commissions/page.tsx @@ -38,17 +38,18 @@ export default async function CommissionsPage() { - - - + + + Commission example -
+
Commission example
diff --git a/src/app/globals.css b/src/app/globals.css index f2b246a..e679054 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -48,119 +48,33 @@ --color-hover-foreground: var(--hover-foreground); } -/* :root { - --radius: 0.625rem; - --background: oklch(1 0 0); - --foreground: oklch(0.145 0 0); - --card: oklch(1 0 0); - --card-foreground: oklch(0.145 0 0); - --popover: oklch(1 0 0); - --popover-foreground: oklch(0.145 0 0); - --primary: oklch(0.205 0 0); - --primary-foreground: oklch(0.985 0 0); - --secondary: oklch(0.97 0 0); - --secondary-foreground: oklch(0.205 0 0); - --muted: oklch(0.97 0 0); - --muted-foreground: oklch(0.556 0 0); - --accent: oklch(0.97 0 0); - --accent-foreground: oklch(0.205 0 0); - --destructive: oklch(0.577 0.245 27.325); - --border: oklch(0.922 0 0); - --input: oklch(0.922 0 0); - --ring: oklch(0.708 0 0); - --chart-1: oklch(0.646 0.222 41.116); - --chart-2: oklch(0.6 0.118 184.704); - --chart-3: oklch(0.398 0.07 227.392); - --chart-4: oklch(0.828 0.189 84.429); - --chart-5: oklch(0.769 0.188 70.08); - --sidebar: oklch(0.985 0 0); - --sidebar-foreground: oklch(0.145 0 0); - --sidebar-primary: oklch(0.205 0 0); - --sidebar-primary-foreground: oklch(0.985 0 0); - --sidebar-accent: oklch(0.97 0 0); - --sidebar-accent-foreground: oklch(0.205 0 0); - --sidebar-border: oklch(0.922 0 0); - --sidebar-ring: oklch(0.708 0 0); -} - -.dark { - --background: oklch(0.145 0 0); - --foreground: oklch(0.985 0 0); - --card: oklch(0.205 0 0); - --card-foreground: oklch(0.985 0 0); - --popover: oklch(0.205 0 0); - --popover-foreground: oklch(0.985 0 0); - --primary: oklch(0.922 0 0); - --primary-foreground: oklch(0.205 0 0); - --secondary: oklch(0.269 0 0); - --secondary-foreground: oklch(0.985 0 0); - --muted: oklch(0.269 0 0); - --muted-foreground: oklch(0.708 0 0); - --accent: oklch(0.269 0 0); - --accent-foreground: oklch(0.985 0 0); - --destructive: oklch(0.704 0.191 22.216); - --border: oklch(1 0 0 / 10%); - --input: oklch(1 0 0 / 15%); - --ring: oklch(0.556 0 0); - --chart-1: oklch(0.488 0.243 264.376); - --chart-2: oklch(0.696 0.17 162.48); - --chart-3: oklch(0.769 0.188 70.08); - --chart-4: oklch(0.627 0.265 303.9); - --chart-5: oklch(0.645 0.246 16.439); - --sidebar: oklch(0.205 0 0); - --sidebar-foreground: oklch(0.985 0 0); - --sidebar-primary: oklch(0.488 0.243 264.376); - --sidebar-primary-foreground: oklch(0.985 0 0); - --sidebar-accent: oklch(0.269 0 0); - --sidebar-accent-foreground: oklch(0.985 0 0); - --sidebar-border: oklch(1 0 0 / 10%); - --sidebar-ring: oklch(0.556 0 0); -} */ - :root { --radius: 0.625rem; - - /* Light: warm paper + graphite */ - --background: oklch(0.985 0.012 85); /* warm off-white */ - --foreground: oklch(0.18 0.02 35); /* graphite */ - - --card: oklch(0.992 0.008 85); /* slightly lifted paper */ + --background: oklch(0.985 0.012 85); + --foreground: oklch(0.18 0.02 35); + --card: oklch(0.992 0.008 85); --card-foreground: var(--foreground); - --popover: oklch(0.992 0.008 85); --popover-foreground: var(--foreground); - - /* Primary: deep ink / indigo (artist-y but still neutral enough) */ --primary: oklch(0.32 0.06 260); --primary-foreground: oklch(0.985 0.012 85); - - /* Secondary/muted/accent: warm washes */ --secondary: oklch(0.96 0.015 85); --secondary-foreground: oklch(0.22 0.02 35); - --muted: oklch(0.955 0.012 85); --muted-foreground: oklch(0.46 0.02 35); - - --accent: oklch(0.95 0.02 110); /* subtle “wash” */ + --accent: oklch(0.95 0.02 110); --accent-foreground: oklch(0.22 0.02 35); - --destructive: oklch(0.58 0.22 27.325); - - --border: oklch(0.90 0.02 85); /* warm border */ + --border: oklch(0.90 0.02 85); --input: oklch(0.90 0.02 85); - --ring: oklch(0.55 0.07 260); /* ties to primary */ - - --hover: oklch(0.94 0.015 255); /* subtle cool lift */ + --ring: oklch(0.55 0.07 260); + --hover: oklch(0.94 0.015 255); --hover-foreground: var(--foreground); - - /* charts can stay, or we can harmonize later */ --chart-1: oklch(0.646 0.222 41.116); --chart-2: oklch(0.6 0.118 184.704); --chart-3: oklch(0.398 0.07 227.392); --chart-4: oklch(0.828 0.189 84.429); --chart-5: oklch(0.769 0.188 70.08); - - /* sidebar inherits the same “paper” idea */ --sidebar: oklch(0.975 0.012 85); --sidebar-foreground: var(--foreground); --sidebar-primary: var(--primary); @@ -172,36 +86,38 @@ } .dark { - /* Inky navy background (clearly not neutral) */ - --background: oklch(15.774% 0.03835 263.588); - --foreground: oklch(0.95 0.012 85); - - /* Surfaces */ - --card: oklch(0.155 0.03 255); - --card-foreground: var(--foreground); - - --popover: oklch(0.155 0.03 255); - --popover-foreground: var(--foreground); - - /* Primary accent stays “artist ink” */ - --primary: oklch(0.78 0.11 255); - --primary-foreground: oklch(0.13 0.03 255); - - --secondary: oklch(0.19 0.025 255); - --secondary-foreground: var(--foreground); - - --muted: oklch(0.19 0.025 255); - --muted-foreground: oklch(0.74 0.02 85); - - --accent: oklch(0.22 0.03 110); - --accent-foreground: var(--foreground); - - --border: oklch(0.40 0.03 255 / 55%); - --input: oklch(0.40 0.03 255 / 65%); - --ring: oklch(0.65 0.10 255); - - --hover: oklch(28.783% 0.03139 250.817); - --hover-foreground: var(--foreground); + --background: oklch(0.2223 0.0060 271.1393); + --foreground: oklch(0.9551 0 0); + --card: oklch(0.2568 0.0076 274.6528); + --card-foreground: oklch(0.9551 0 0); + --popover: oklch(0.2568 0.0076 274.6528); + --popover-foreground: oklch(0.9551 0 0); + --primary: oklch(0.6132 0.2294 291.7437); + --primary-foreground: oklch(1.0000 0 0); + --secondary: oklch(0.2940 0.0130 272.9312); + --secondary-foreground: oklch(0.9551 0 0); + --muted: oklch(0.2940 0.0130 272.9312); + --muted-foreground: oklch(0.7058 0 0); + --accent: oklch(0.2795 0.0368 260.0310); + --accent-foreground: oklch(0.7857 0.1153 246.6596); + --destructive: oklch(0.7106 0.1661 22.2162); + --destructive-foreground: oklch(1.0000 0 0); + --border: oklch(0.3289 0.0092 268.3843); + --input: oklch(0.3289 0.0092 268.3843); + --ring: oklch(0.6132 0.2294 291.7437); + --chart-1: oklch(0.8003 0.1821 151.7110); + --chart-2: oklch(0.6132 0.2294 291.7437); + --chart-3: oklch(0.8077 0.1035 19.5706); + --chart-4: oklch(0.6691 0.1569 260.1063); + --chart-5: oklch(0.7058 0 0); + --sidebar: oklch(0.2011 0.0039 286.0396); + --sidebar-foreground: oklch(0.9551 0 0); + --sidebar-primary: oklch(0.6132 0.2294 291.7437); + --sidebar-primary-foreground: oklch(1.0000 0 0); + --sidebar-accent: oklch(0.2940 0.0130 272.9312); + --sidebar-accent-foreground: oklch(0.6132 0.2294 291.7437); + --sidebar-border: oklch(0.3289 0.0092 268.3843); + --sidebar-ring: oklch(0.6132 0.2294 291.7437); } .markdown { @@ -260,10 +176,6 @@ @apply line-through text-muted-foreground; } -/* div:hover { - border-color: var(--hover-border-color); -} */ - @layer base { * { @apply border-border outline-ring/50; @@ -276,7 +188,7 @@ } .dark body { background-image: - radial-gradient(1200px 700px at 15% -10%, oklch(0.55 0.14 255 / 16%), transparent 60%), - radial-gradient(900px 600px at 85% 0%, oklch(0.50 0.12 110 / 10%), transparent 55%); + radial-gradient(1200px 700px at 15% -10%, oklch(0.35 0.06 35 / 10%), transparent 60%), + radial-gradient(900px 600px at 85% 0%, oklch(0.30 0.05 255 / 6%), transparent 55%); } } diff --git a/src/components/artworks/ArtworkTimelapseViewer.tsx b/src/components/artworks/ArtworkTimelapseViewer.tsx index 3a58fda..13bdd0c 100644 --- a/src/components/artworks/ArtworkTimelapseViewer.tsx +++ b/src/components/artworks/ArtworkTimelapseViewer.tsx @@ -27,9 +27,6 @@ export default function ArtworkTimelapseViewer({ }) { const [open, setOpen] = useState(false); - // IMPORTANT: - // This assumes your existing `/api/image/[...key]` can stream arbitrary S3 keys. - // If your route expects a different format, adjust this in one place. const src = `/api/image/${encodeURI(timelapse.s3Key)}`; // Minimal empty captions track (satisfies jsx-a11y/media-has-caption) @@ -46,7 +43,6 @@ export default function ArtworkTimelapseViewer({ {title} - {/* Only render video when open (prevents unnecessary network / CPU). */} {open ? (
) : null} diff --git a/src/components/ui/button.tsx b/src/components/ui/button.tsx index 37a7d4b..b54c96c 100644 --- a/src/components/ui/button.tsx +++ b/src/components/ui/button.tsx @@ -13,7 +13,7 @@ const buttonVariants = cva( destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60", outline: - "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50", + "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input dark:border-input dark:hover:bg-input/60", secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80", ghost: diff --git a/src/components/ui/checkbox.tsx b/src/components/ui/checkbox.tsx index cb0b07b..99c8b8b 100644 --- a/src/components/ui/checkbox.tsx +++ b/src/components/ui/checkbox.tsx @@ -14,7 +14,7 @@ function Checkbox({ ) { type={type} data-slot="input" className={cn( - "file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", + "file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]", "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", className diff --git a/src/components/ui/textarea.tsx b/src/components/ui/textarea.tsx index 7f21b5e..f979c9b 100644 --- a/src/components/ui/textarea.tsx +++ b/src/components/ui/textarea.tsx @@ -7,7 +7,7 @@ function Textarea({ className, ...props }: React.ComponentProps<"textarea">) {