From f5c9442d8e41c616c34f7c224147cbad909c3340 Mon Sep 17 00:00:00 2001 From: Trevor Miller Date: Sun, 16 Aug 2026 17:22:31 -0700 Subject: [PATCH 01/11] =?UTF-8?q?feat(shadcn):=20visual=20refresh=20?= =?UTF-8?q?=E2=80=94=20radius,=20elevation,=20ambient=20tint,=20polish?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - --radius 0.5rem → 0.75rem (rounder cards/buttons/inputs app-wide) - Ambient violet/teal brand tint in the window background corners - Cards: translucent bg + backdrop-blur + shadow-sm elevation - Badges: pill-shaped (rounded-full) - Buttons: focus ring offset + violet glow on primary - Dialogs/popovers/dropdowns/selects: heavier elevation (shadow-2xl/xl) - Inputs/textareas: stronger focus ring (ring-2) --- src/renderer/src/components/ui/badge.tsx | 2 +- src/renderer/src/components/ui/button.tsx | 4 ++-- src/renderer/src/components/ui/card.tsx | 2 +- src/renderer/src/components/ui/dialog.tsx | 2 +- .../src/components/ui/dropdown-menu.tsx | 4 ++-- src/renderer/src/components/ui/input.tsx | 2 +- src/renderer/src/components/ui/popover.tsx | 2 +- src/renderer/src/components/ui/select.tsx | 2 +- src/renderer/src/components/ui/tabs.tsx | 2 +- src/renderer/src/components/ui/textarea.tsx | 2 +- src/renderer/src/index.css | 20 +++++++++++++++++-- 11 files changed, 30 insertions(+), 14 deletions(-) diff --git a/src/renderer/src/components/ui/badge.tsx b/src/renderer/src/components/ui/badge.tsx index 1f90c1cc..cf6dc3de 100644 --- a/src/renderer/src/components/ui/badge.tsx +++ b/src/renderer/src/components/ui/badge.tsx @@ -8,7 +8,7 @@ import { cn } from '@/lib/utils' // tone keeps the lighter-violet label the brand already uses on violet tints. const badgeVariants = cva( - 'inline-flex items-center gap-0.5 rounded-md border px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide transition-colors focus:outline-none [&_svg]:pointer-events-none [&_svg]:size-2.5', + 'inline-flex items-center gap-0.5 rounded-full border px-2 py-0.5 text-[10px] font-semibold uppercase tracking-wide transition-colors focus:outline-none [&_svg]:pointer-events-none [&_svg]:size-2.5', { variants: { variant: { diff --git a/src/renderer/src/components/ui/button.tsx b/src/renderer/src/components/ui/button.tsx index e4be341c..dda38099 100644 --- a/src/renderer/src/components/ui/button.tsx +++ b/src/renderer/src/components/ui/button.tsx @@ -13,12 +13,12 @@ import { cn } from '@/lib/utils' // (`/10` → `/20`), not a solid — depth from the border, per §2.1/§2.2. const buttonVariants = cva( - "inline-flex shrink-0 items-center justify-center gap-1.5 whitespace-nowrap rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/60 disabled:pointer-events-none disabled:opacity-40 [&_svg]:pointer-events-none [&_svg]:size-3.5", + "inline-flex shrink-0 items-center justify-center gap-1.5 whitespace-nowrap rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/60 focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-40 [&_svg]:pointer-events-none [&_svg]:size-3.5", { variants: { variant: { default: - 'border border-primary/40 bg-primary/10 font-semibold text-[var(--gt-accent-light)] hover:bg-primary/20', + 'border border-primary/40 bg-primary/10 font-semibold text-[var(--gt-accent-light)] shadow-sm shadow-primary/20 hover:bg-primary/20', destructive: 'border border-destructive/50 bg-destructive/10 text-destructive hover:bg-destructive/20', outline: diff --git a/src/renderer/src/components/ui/card.tsx b/src/renderer/src/components/ui/card.tsx index 7b6c6f73..d7996eaf 100644 --- a/src/renderer/src/components/ui/card.tsx +++ b/src/renderer/src/components/ui/card.tsx @@ -9,7 +9,7 @@ function Card({ className, ...props }: React.ComponentProps<'div'>) { return (
) diff --git a/src/renderer/src/components/ui/dialog.tsx b/src/renderer/src/components/ui/dialog.tsx index dc3081ba..3af8b492 100644 --- a/src/renderer/src/components/ui/dialog.tsx +++ b/src/renderer/src/components/ui/dialog.tsx @@ -48,7 +48,7 @@ function DialogContent({ ) { type={type} data-slot="input" className={cn( - 'flex h-7 w-full rounded-md border border-input bg-[var(--gt-input)] px-2 py-1 text-[12px] text-foreground transition-colors placeholder:text-muted-foreground focus-visible:border-primary/60 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring/40 disabled:cursor-default disabled:opacity-40', + 'flex h-7 w-full rounded-md border border-input bg-[var(--gt-input)] px-2 py-1 text-[12px] text-foreground transition-colors placeholder:text-muted-foreground focus-visible:border-primary/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40 disabled:cursor-default disabled:opacity-40', className, )} {...props} diff --git a/src/renderer/src/components/ui/popover.tsx b/src/renderer/src/components/ui/popover.tsx index 1924a983..824440d2 100644 --- a/src/renderer/src/components/ui/popover.tsx +++ b/src/renderer/src/components/ui/popover.tsx @@ -25,7 +25,7 @@ function PopoverContent({ align={align} sideOffset={sideOffset} className={cn( - 'z-50 w-72 rounded-md border border-border bg-popover p-3 text-popover-foreground shadow-lg outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95', + 'z-50 w-72 rounded-md border border-border bg-popover p-3 text-popover-foreground shadow-xl outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95', className, )} {...props} diff --git a/src/renderer/src/components/ui/select.tsx b/src/renderer/src/components/ui/select.tsx index c6cc5cf8..9b05756f 100644 --- a/src/renderer/src/components/ui/select.tsx +++ b/src/renderer/src/components/ui/select.tsx @@ -46,7 +46,7 @@ function SelectContent({ ) {