import { useState } from "react"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { NavItem } from "@shared/components/NavItem"; import { SectionDivider } from "@shared/components/SectionDivider"; function Dot({ color = "var(--color-blue)" }: { color?: string }) { return ( ); } const meta: Meta = { title: "Primitives/NavItem", component: NavItem, tags: ["autodocs"], parameters: { layout: "padded" }, args: { id: "home", label: "Home", isActive: false }, argTypes: { isActive: { control: "boolean" } }, decorators: [ (S) => (
), ], }; export default meta; type Story = StoryObj; /** Flip isActive / label / icon / trailing in controls. */ export const Playground: Story = { args: { icon: }, }; export const WithTrailingBadge: Story = { args: { icon: , trailing: ( 3 ), }, }; export const InContext_SidebarGroup: Story = { render: () => { function Bound() { const [active, setActive] = useState("pipelines"); const items = [ { id: "home", label: "Home" }, { id: "editor", label: "Editor" }, { id: "sources", label: "Sources" }, { id: "pipelines", label: "Pipelines" }, { id: "documents", label: "Documents" }, ]; return (
} isActive={active === "home"} onClick={setActive} /> {items.slice(1).map((item) => ( } isActive={active === item.id} onClick={setActive} /> ))}
); } return ; }, };