style: align light palette to Quiet Luxury reference
- Page background now #F8F9FA (was white); tokens matched to reference: foreground slate-900, muted slate-50/slate-500, border slate-200, card pure white, tertiary slate-400, border-light slate-100 - Sidebar colors matched to mock: emerald-200/70 inactive, white/8 active with emerald-400 active icon, emerald-50 logo, red-300 logout, right border - Content wrapped in max-w-[1400px] centered container (px-8 lg:px-10) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+21
-21
@@ -16,9 +16,9 @@
|
|||||||
them to Tailwind color utilities (bg-background, text-primary…).
|
them to Tailwind color utilities (bg-background, text-primary…).
|
||||||
========================================================= */
|
========================================================= */
|
||||||
:root {
|
:root {
|
||||||
/* Base */
|
/* Base — sfondo generale app #F8F9FA (color-bg-light), testo slate-900 */
|
||||||
--background: #ffffff;
|
--background: #F8F9FA;
|
||||||
--foreground: #1a1a1a;
|
--foreground: #0F172A;
|
||||||
|
|
||||||
/* Brand primary — verde scuro iamcavalli */
|
/* Brand primary — verde scuro iamcavalli */
|
||||||
--primary: #1A463C;
|
--primary: #1A463C;
|
||||||
@@ -28,29 +28,29 @@
|
|||||||
--accent: #DEF168;
|
--accent: #DEF168;
|
||||||
--accent-foreground: #1A463C;
|
--accent-foreground: #1A463C;
|
||||||
|
|
||||||
/* Secondary — grigio neutro */
|
/* Secondary — grigio neutro (slate-100) */
|
||||||
--secondary: #f4f4f5;
|
--secondary: #f1f5f9;
|
||||||
--secondary-foreground: #1a1a1a;
|
--secondary-foreground: #0F172A;
|
||||||
|
|
||||||
/* Muted — per testi e sfondi secondari */
|
/* Muted — sfondi secondari (slate-50) / testo slate-500 */
|
||||||
--muted: #f9f9f9;
|
--muted: #f8fafc;
|
||||||
--muted-foreground: #71717a;
|
--muted-foreground: #64748B;
|
||||||
|
|
||||||
/* Destructive */
|
/* Destructive */
|
||||||
--destructive: #ef4444;
|
--destructive: #ef4444;
|
||||||
--destructive-foreground: #ffffff;
|
--destructive-foreground: #ffffff;
|
||||||
|
|
||||||
/* Card */
|
/* Card — bianco puro (color-bg-card) */
|
||||||
--card: #ffffff;
|
--card: #FFFFFF;
|
||||||
--card-foreground: #1a1a1a;
|
--card-foreground: #0F172A;
|
||||||
|
|
||||||
/* Popover */
|
/* Popover */
|
||||||
--popover: #ffffff;
|
--popover: #FFFFFF;
|
||||||
--popover-foreground: #1a1a1a;
|
--popover-foreground: #0F172A;
|
||||||
|
|
||||||
/* Border / Input / Ring */
|
/* Border (slate-200 = border-card) / Input / Ring */
|
||||||
--border: #e5e7eb;
|
--border: #e2e8f0;
|
||||||
--input: #e5e7eb;
|
--input: #e2e8f0;
|
||||||
--ring: #1A463C;
|
--ring: #1A463C;
|
||||||
|
|
||||||
/* Semantic — stato task/pagamenti */
|
/* Semantic — stato task/pagamenti */
|
||||||
@@ -58,10 +58,10 @@
|
|||||||
--warning: #ca8a04;
|
--warning: #ca8a04;
|
||||||
--info: #2563eb;
|
--info: #2563eb;
|
||||||
|
|
||||||
/* Legacy — usati inline nei componenti esistenti */
|
/* Legacy — text-light slate-400, border-soft slate-100 */
|
||||||
--tertiary: #999999;
|
--tertiary: #94A3B8;
|
||||||
--bg-subtle: #f9f9f9;
|
--bg-subtle: #f8fafc;
|
||||||
--border-light: #e5e5e5;
|
--border-light: #f1f5f9;
|
||||||
|
|
||||||
--radius: 0.5rem;
|
--radius: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -58,7 +58,9 @@ export function AdminShell({ children }: { children: React.ReactNode }) {
|
|||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<main className="flex-1 px-8 py-8 overflow-y-auto">{children}</main>
|
<main className="flex-1 overflow-y-auto">
|
||||||
|
<div className="max-w-[1400px] w-full mx-auto px-8 py-8 lg:px-10">{children}</div>
|
||||||
|
</main>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ export function AdminSidebar({ collapsed = false }: { collapsed?: boolean }) {
|
|||||||
return (
|
return (
|
||||||
<aside
|
<aside
|
||||||
className={cn(
|
className={cn(
|
||||||
"shrink-0 min-h-screen bg-[#1A463C] flex flex-col overflow-hidden",
|
"shrink-0 min-h-screen bg-[#1A463C] border-r border-emerald-950/20 flex flex-col overflow-hidden",
|
||||||
"transition-[width] duration-350 ease-[cubic-bezier(0.4,0,0.2,1)]",
|
"transition-[width] duration-350 ease-[cubic-bezier(0.4,0,0.2,1)]",
|
||||||
collapsed ? "w-16" : "w-[200px]"
|
collapsed ? "w-16" : "w-[200px]"
|
||||||
)}
|
)}
|
||||||
@@ -54,7 +54,7 @@ export function AdminSidebar({ collapsed = false }: { collapsed?: boolean }) {
|
|||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
{!collapsed && (
|
{!collapsed && (
|
||||||
<span className="font-bold text-white tracking-tight text-sm whitespace-nowrap">
|
<span className="font-bold text-emerald-50 tracking-tight text-sm whitespace-nowrap">
|
||||||
iamcavalli
|
iamcavalli
|
||||||
</span>
|
</span>
|
||||||
)}
|
)}
|
||||||
@@ -70,14 +70,18 @@ export function AdminSidebar({ collapsed = false }: { collapsed?: boolean }) {
|
|||||||
href={href}
|
href={href}
|
||||||
title={collapsed ? label : undefined}
|
title={collapsed ? label : undefined}
|
||||||
className={cn(
|
className={cn(
|
||||||
"flex items-center py-2 rounded-md text-sm transition-colors",
|
"flex items-center py-2.5 rounded-lg text-sm transition-all duration-200",
|
||||||
rowClass,
|
rowClass,
|
||||||
active
|
active
|
||||||
? "bg-white/15 text-white font-medium"
|
? "bg-white/[0.08] text-white font-medium shadow-sm"
|
||||||
: "text-white/65 hover:text-white hover:bg-white/10"
|
: "text-emerald-200/70 hover:text-white hover:bg-white/5"
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
<Icon size={16} strokeWidth={1.8} className="shrink-0" />
|
<Icon
|
||||||
|
size={16}
|
||||||
|
strokeWidth={1.8}
|
||||||
|
className={cn("shrink-0", active && "text-emerald-400")}
|
||||||
|
/>
|
||||||
{!collapsed && <span className="whitespace-nowrap">{label}</span>}
|
{!collapsed && <span className="whitespace-nowrap">{label}</span>}
|
||||||
</Link>
|
</Link>
|
||||||
);
|
);
|
||||||
@@ -92,14 +96,15 @@ export function AdminSidebar({ collapsed = false }: { collapsed?: boolean }) {
|
|||||||
collapsed ? "justify-center px-0" : "justify-between px-3"
|
collapsed ? "justify-center px-0" : "justify-between px-3"
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
{!collapsed && <span className="text-xs text-white/50">Tema</span>}
|
{!collapsed && <span className="text-xs text-emerald-200/50">Tema</span>}
|
||||||
<ThemeToggle />
|
<ThemeToggle />
|
||||||
</div>
|
</div>
|
||||||
<button
|
<button
|
||||||
onClick={() => signOut({ callbackUrl: "/admin/login" })}
|
onClick={() => signOut({ callbackUrl: "/admin/login" })}
|
||||||
title={collapsed ? "Esci" : undefined}
|
title={collapsed ? "Esci" : undefined}
|
||||||
className={cn(
|
className={cn(
|
||||||
"flex items-center py-2 w-full rounded-md text-sm text-white/65 hover:text-white hover:bg-white/10 transition-colors",
|
"flex items-center py-2.5 w-full rounded-lg text-sm transition-all duration-200",
|
||||||
|
"text-red-300/80 hover:text-red-200 hover:bg-red-950/20",
|
||||||
rowClass
|
rowClass
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
|
|||||||
Reference in New Issue
Block a user