import type { Meta, StoryObj } from '@storybook/react'; import { type Tab, Tabs } from '@tpmjs/ui/Tabs/Tabs'; import { createElement } from 'react'; const meta = { title: 'Components/Tabs', component: Tabs, tags: ['autodocs'], parameters: { layout: 'centered', }, } satisfies Meta; export default meta; type Story = StoryObj; const mockTabs: Tab[] = [ { id: 'overview', label: 'Overview' }, { id: 'usage', label: 'Usage' }, { id: 'api', label: 'API' }, ]; export const Default: Story = { render: () => createElement(Tabs, { tabs: mockTabs, activeTab: 'overview', onTabChange: (id: string) => console.log('Tab changed:', id), }), }; export const AllSizes: Story = { render: () => createElement( 'div', { className: 'flex flex-col gap-8 w-full' }, createElement(Tabs, { tabs: mockTabs, activeTab: 'overview', size: 'sm', onTabChange: () => {}, }), createElement(Tabs, { tabs: mockTabs, activeTab: 'overview', size: 'md', onTabChange: () => {}, }), createElement(Tabs, { tabs: mockTabs, activeTab: 'overview', size: 'lg', onTabChange: () => {}, }) ), }; export const WithCounts: Story = { render: () => createElement(Tabs, { tabs: [ { id: 'all', label: 'All Tools', count: 1234 }, { id: 'featured', label: 'Featured', count: 42 }, { id: 'recent', label: 'Recent', count: 18 }, ], activeTab: 'all', onTabChange: () => {}, }), }; export const ManyTabs: Story = { render: () => createElement( 'div', { className: 'w-96' }, createElement(Tabs, { tabs: [ { id: 'tab1', label: 'Overview' }, { id: 'tab2', label: 'Documentation' }, { id: 'tab3', label: 'Examples' }, { id: 'tab4', label: 'API Reference' }, { id: 'tab5', label: 'Configuration' }, { id: 'tab6', label: 'Changelog' }, { id: 'tab7', label: 'Contributing' }, ], activeTab: 'tab1', onTabChange: () => {}, }) ), };