Colorful sidebar: per-group icon chips, vivid gradient, gradient logo

The nav was too monochrome. Each item now has a color-coded rounded icon chip (group
palette: amber start, sky Work, emerald Organization, violet AI & libraries, teal
Insights, pink Help), the sidebar uses a richer multi-hue indigo→violet→magenta glass
gradient, and the logo is a gradient.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
soroush.asadi
2026-06-16 08:14:14 +03:30
parent c9be692d52
commit 0496cb1436
+32 -19
View File
@@ -32,10 +32,16 @@ export function AppShell({ children }: { children: ReactNode }) {
<div className="flex min-h-screen text-foreground"> <div className="flex min-h-screen text-foreground">
<aside <aside
className="flex w-60 shrink-0 flex-col border-r border-white/15 text-sidebar-foreground backdrop-blur-2xl" className="flex w-60 shrink-0 flex-col border-r border-white/15 text-sidebar-foreground backdrop-blur-2xl"
style={{ background: 'linear-gradient(180deg, oklch(0.27 0.1 287 / 0.78) 0%, oklch(0.2 0.085 298 / 0.78) 100%)' }} style={{
background:
'linear-gradient(168deg, oklch(0.32 0.14 268 / 0.82) 0%, oklch(0.28 0.15 292 / 0.82) 42%, oklch(0.26 0.15 318 / 0.82) 72%, oklch(0.24 0.13 340 / 0.82) 100%)',
}}
> >
<div className="flex items-center gap-3 px-5 py-4"> <div className="flex items-center gap-3 px-5 py-4">
<span className="grid size-8 place-items-center rounded-md bg-sidebar-primary font-bold text-sidebar-primary-foreground"> <span
className="grid size-8 place-items-center rounded-md font-bold text-white shadow-sm"
style={{ background: 'linear-gradient(135deg, #6366f1, #d946ef)' }}
>
T T
</span> </span>
<div className="leading-tight"> <div className="leading-tight">
@@ -47,31 +53,31 @@ export function AppShell({ children }: { children: ReactNode }) {
<Separator className="bg-sidebar-border" /> <Separator className="bg-sidebar-border" />
<nav className="flex flex-1 flex-col gap-0.5 overflow-y-auto p-3"> <nav className="flex flex-1 flex-col gap-0.5 overflow-y-auto p-3">
<NavItem icon={Rocket} label="Get started" to="/start" /> <NavItem icon={Rocket} label="Get started" to="/start" color="#fbbf24" />
<NavSection label="Work" /> <NavSection label="Work" />
<NavItem icon={LayoutDashboard} label="Board" to="/" /> <NavItem icon={LayoutDashboard} label="Board" to="/" color="#38bdf8" />
<NavItem icon={Sparkles} label="Team" to="/team" /> <NavItem icon={Sparkles} label="Team" to="/team" color="#38bdf8" />
<NavItem icon={Inbox} label="Cartable" to="/cartable" /> <NavItem icon={Inbox} label="Cartable" to="/cartable" color="#38bdf8" />
<NavItem icon={ShieldCheck} label="Review inbox" to="/reviews" /> <NavItem icon={ShieldCheck} label="Review inbox" to="/reviews" color="#38bdf8" />
<NavSection label="Organization" /> <NavSection label="Organization" />
<NavItem icon={Boxes} label="Structure" to="/structure" /> <NavItem icon={Boxes} label="Structure" to="/structure" color="#34d399" />
<NavItem icon={Network} label="Org chart" to="/org" /> <NavItem icon={Network} label="Org chart" to="/org" color="#34d399" />
<NavItem icon={Users} label="Members" to="/members" /> <NavItem icon={Users} label="Members" to="/members" color="#34d399" />
<NavSection label="AI & libraries" /> <NavSection label="AI & libraries" />
<NavItem icon={Bot} label="AI seats" to="/seats" /> <NavItem icon={Bot} label="AI seats" to="/seats" color="#a78bfa" />
<NavItem icon={BookMarked} label="Skills" to="/skills" /> <NavItem icon={BookMarked} label="Skills" to="/skills" color="#a78bfa" />
<NavItem icon={BookUser} label="Agent profiles" to="/agent-profiles" /> <NavItem icon={BookUser} label="Agent profiles" to="/agent-profiles" color="#a78bfa" />
<NavItem icon={Package} label="Product profiles" to="/product-profiles" /> <NavItem icon={Package} label="Product profiles" to="/product-profiles" color="#a78bfa" />
<NavSection label="Insights" /> <NavSection label="Insights" />
<NavItem icon={Gauge} label="Performance" to="/performance" /> <NavItem icon={Gauge} label="Performance" to="/performance" color="#2dd4bf" />
<NavItem icon={ChartColumn} label="Analytics" to="/analytics" /> <NavItem icon={ChartColumn} label="Analytics" to="/analytics" color="#2dd4bf" />
<NavSection label="Help" /> <NavSection label="Help" />
<NavItem icon={BookOpen} label="Knowledge base" to="/help" /> <NavItem icon={BookOpen} label="Knowledge base" to="/help" color="#f472b6" />
</nav> </nav>
<Separator className="bg-sidebar-border" /> <Separator className="bg-sidebar-border" />
@@ -108,17 +114,19 @@ function NavItem({
label, label,
to, to,
muted, muted,
color,
}: { }: {
icon: LucideIcon icon: LucideIcon
label: string label: string
to?: string to?: string
muted?: boolean muted?: boolean
color?: string
}) { }) {
const location = useLocation() const location = useLocation()
const active = to ? location.pathname === to : false const active = to ? location.pathname === to : false
const className = cn( const className = cn(
'flex items-center gap-3 rounded-lg px-3 py-2 text-sm transition-colors', 'group/nav flex items-center gap-3 rounded-lg px-3 py-2 text-sm transition-colors',
active active
? 'bg-white/15 font-medium text-white shadow-sm ring-1 ring-white/15 backdrop-blur-sm' ? 'bg-white/15 font-medium text-white shadow-sm ring-1 ring-white/15 backdrop-blur-sm'
: 'text-sidebar-foreground/80', : 'text-sidebar-foreground/80',
@@ -127,7 +135,12 @@ function NavItem({
const content = ( const content = (
<> <>
<Icon className="size-4" /> <span
className="grid size-6 shrink-0 place-items-center rounded-md transition-colors"
style={{ backgroundColor: color ? `${color}26` : undefined, color }}
>
<Icon className="size-3.5" />
</span>
{label} {label}
{muted && <span className="ml-auto text-[10px] uppercase tracking-wide opacity-70">soon</span>} {muted && <span className="ml-auto text-[10px] uppercase tracking-wide opacity-70">soon</span>}
</> </>