Javier
UI Functional, next fixing automations
d725335
Raw
History Blame Contribute Delete
1.89 kB
import { ListChecks, SlidersHorizontal, TestTube, Zap } from "lucide-react"
import type { LucideIcon } from "lucide-react"
import { SECTIONS, type SectionId } from "@/modules/registry"
import {
Tooltip,
TooltipContent,
TooltipProvider,
TooltipTrigger,
} from "@/components/ui/tooltip"
const SECTION_ICON: Record<SectionId, LucideIcon> = {
test: TestTube,
automation: ListChecks,
settings: SlidersHorizontal,
}
export function Sidebar() {
return (
<aside className="sticky top-0 hidden h-screen w-16 shrink-0 flex-col items-center border-r border-border/60 bg-card/40 py-4 backdrop-blur-sm md:flex">
<a
href="#top"
className="flex size-9 items-center justify-center rounded-lg bg-primary text-primary-foreground shadow-[0_8px_24px_-12px_oklch(0.885_0.19_122_/_0.8)]"
aria-label="Tiny Trigger"
>
<Zap className="size-5" />
</a>
<nav className="mt-6 flex flex-1 flex-col items-center gap-1.5">
<TooltipProvider delayDuration={200}>
{SECTIONS.map((s) => {
const Icon = SECTION_ICON[s.id]
return (
<Tooltip key={s.id}>
<TooltipTrigger asChild>
<a
href={`#${s.id}`}
className="group flex size-9 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-white/5 hover:text-foreground"
>
<Icon className="size-4" />
</a>
</TooltipTrigger>
<TooltipContent side="right">{s.label}</TooltipContent>
</Tooltip>
)
})}
</TooltipProvider>
</nav>
<div className="font-mono text-[0.5rem] uppercase tracking-[0.2em] text-muted-foreground/50 [writing-mode:vertical-rl]">
local-first
</div>
</aside>
)
}