import { useState } from 'react' import type { Meta, StoryObj } from '@storybook/react-vite' import { IconLock } from '@tabler/icons-react' import { Tabs, type TabDef } from './Tabs' /** A row of tabs; the selected one is a neutral fill, never the accent tint. */ const meta = { title: 'Navigation/Tabs', component: Tabs, } satisfies Meta export default meta type Story = StoryObj function Demo({ tabs, size, initial }: { tabs: TabDef[]; size?: 'default' | 'small'; initial: T }) { const [active, setActive] = useState(initial) return } /** A count is the sidebar's number — mono, muted, tabular — not a chip (Katerina, 2026-09-01). */ export const WithCounts: Story = { args: { tabs: [], active: 'active', onChange: () => {} }, render: () => ( ), } /** A count of 0 is still drawn — "Flagged 0" is an answer, not an absence. */ export const WithAZero: Story = { args: { tabs: [], active: 'all', onChange: () => {} }, render: () => ( ), } /** A plain pair — a view switch. */ export const NoCounts: Story = { args: { tabs: [], active: 'table', onChange: () => {} }, render: () => ( ), } /** A leading icon, 16px stroke 1.5 — as Peek draws them. */ export const WithAnIcon: Story = { args: { tabs: [], active: 'open', onChange: () => {} }, render: () => ( }, ]} /> ), } /** `unread`: something new behind a tab you are not on — the accent dot after the label. */ export const WithUnread: Story = { args: { tabs: [], active: 'overview', onChange: () => {} }, render: () => ( ), } /** `small` is the 12px geometry. */ export const Small: Story = { args: { tabs: [], active: 'conversations', onChange: () => {} }, render: () => ( }, { id: 'activity', label: 'Activity' }, ]} /> ), }