This commit is contained in:
@@ -3,80 +3,80 @@ import { HomeIcon, UserCircleIcon, UsersIcon } from '@heroicons/react/24/outline
|
||||
import { SidebarNavItem } from './SidebarNavItem';
|
||||
|
||||
const meta = {
|
||||
title: 'Components/SidebarNavItem',
|
||||
component: SidebarNavItem,
|
||||
tags: ['autodocs'],
|
||||
parameters: {
|
||||
layout: 'padded',
|
||||
docs: {
|
||||
description: {
|
||||
component:
|
||||
'Sidebar navigation link with active state styling and collapsed/expanded rendering mode.',
|
||||
},
|
||||
title: 'Components/SidebarNavItem',
|
||||
component: SidebarNavItem,
|
||||
tags: ['autodocs'],
|
||||
parameters: {
|
||||
layout: 'padded',
|
||||
docs: {
|
||||
description: {
|
||||
component:
|
||||
'Sidebar navigation link with active state styling and collapsed/expanded rendering mode.',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
argTypes: {
|
||||
to: {
|
||||
description: 'Destination route path.',
|
||||
control: 'text',
|
||||
table: { type: { summary: 'string' } },
|
||||
argTypes: {
|
||||
to: {
|
||||
description: 'Destination route path.',
|
||||
control: 'text',
|
||||
table: { type: { summary: 'string' } },
|
||||
},
|
||||
label: {
|
||||
description: 'Navigation item label.',
|
||||
control: 'text',
|
||||
table: { type: { summary: 'string' } },
|
||||
},
|
||||
icon: {
|
||||
description: 'Icon component rendered before the label.',
|
||||
control: false,
|
||||
table: { type: { summary: 'ComponentType<SVGProps<SVGSVGElement>>' } },
|
||||
},
|
||||
collapsed: {
|
||||
description: 'Collapsed state. When true, desktop view shows icon-only rail style.',
|
||||
control: 'boolean',
|
||||
table: { type: { summary: 'boolean' } },
|
||||
},
|
||||
onClick: {
|
||||
description: 'Optional click callback (for example to close mobile drawer).',
|
||||
action: 'clicked',
|
||||
table: { type: { summary: '() => void' } },
|
||||
},
|
||||
},
|
||||
label: {
|
||||
description: 'Navigation item label.',
|
||||
control: 'text',
|
||||
table: { type: { summary: 'string' } },
|
||||
args: {
|
||||
to: '/',
|
||||
label: 'Dashboard',
|
||||
icon: HomeIcon,
|
||||
collapsed: false,
|
||||
},
|
||||
icon: {
|
||||
description: 'Icon component rendered before the label.',
|
||||
control: false,
|
||||
table: { type: { summary: 'ComponentType<SVGProps<SVGSVGElement>>' } },
|
||||
},
|
||||
collapsed: {
|
||||
description: 'Collapsed state. When true, desktop view shows icon-only rail style.',
|
||||
control: 'boolean',
|
||||
table: { type: { summary: 'boolean' } },
|
||||
},
|
||||
onClick: {
|
||||
description: 'Optional click callback (for example to close mobile drawer).',
|
||||
action: 'clicked',
|
||||
table: { type: { summary: '() => void' } },
|
||||
},
|
||||
},
|
||||
args: {
|
||||
to: '/',
|
||||
label: 'Dashboard',
|
||||
icon: HomeIcon,
|
||||
collapsed: false,
|
||||
},
|
||||
} satisfies Meta<typeof SidebarNavItem>;
|
||||
|
||||
export default meta;
|
||||
type Story = StoryObj<typeof meta>;
|
||||
|
||||
export const Expanded: Story = {
|
||||
render: (args) => (
|
||||
<nav className="flex w-56 flex-col gap-1">
|
||||
<SidebarNavItem {...args} />
|
||||
<SidebarNavItem to="/users" label="Users" icon={UsersIcon} collapsed={args.collapsed} />
|
||||
<SidebarNavItem
|
||||
to="/profile"
|
||||
label="Profile"
|
||||
icon={UserCircleIcon}
|
||||
collapsed={args.collapsed}
|
||||
/>
|
||||
</nav>
|
||||
),
|
||||
render: (args) => (
|
||||
<nav className="flex w-56 flex-col gap-1">
|
||||
<SidebarNavItem {...args} />
|
||||
<SidebarNavItem to="/users" label="Users" icon={UsersIcon} collapsed={args.collapsed} />
|
||||
<SidebarNavItem
|
||||
to="/profile"
|
||||
label="Profile"
|
||||
icon={UserCircleIcon}
|
||||
collapsed={args.collapsed}
|
||||
/>
|
||||
</nav>
|
||||
),
|
||||
};
|
||||
|
||||
export const Collapsed: Story = {
|
||||
args: {
|
||||
collapsed: true,
|
||||
},
|
||||
render: (args) => (
|
||||
<nav className="flex w-14 flex-col gap-1">
|
||||
<SidebarNavItem {...args} />
|
||||
<SidebarNavItem to="/users" label="Users" icon={UsersIcon} collapsed />
|
||||
<SidebarNavItem to="/profile" label="Profile" icon={UserCircleIcon} collapsed />
|
||||
</nav>
|
||||
),
|
||||
args: {
|
||||
collapsed: true,
|
||||
},
|
||||
render: (args) => (
|
||||
<nav className="flex w-14 flex-col gap-1">
|
||||
<SidebarNavItem {...args} />
|
||||
<SidebarNavItem to="/users" label="Users" icon={UsersIcon} collapsed />
|
||||
<SidebarNavItem to="/profile" label="Profile" icon={UserCircleIcon} collapsed />
|
||||
</nav>
|
||||
),
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user