import type { ComponentMeta, ComponentStory } from '@storybook/react'; import type { FC, ReactNode } from 'react'; import { Grid } from './grid'; export default { title: 'Molecules/Grid', component: Grid, argTypes: { items: { description: 'The grid items.', type: { name: 'object', required: true, value: {}, }, }, }, } as ComponentMeta; const Template: ComponentStory = (args) => ; type ItemProps = { children: ReactNode; }; const Item: FC = ({ children }) => (
{children}
); export const Default = Template.bind({}); Default.args = { items: [ { id: 'item-1', item: Item 1 }, { id: 'item-2', item: Item 2 }, { id: 'item-3', item: Item 3 }, { id: 'item-4', item: Item 4 }, { id: 'item-5', item: Item 5 }, ], }; export const OneColumn = Template.bind({}); OneColumn.args = { items: [ { id: 'item-1', item: Item 1 }, { id: 'item-2', item: Item 2 }, { id: 'item-3', item: Item 3 }, ], col: 1, gap: 'sm', }; export const TwoColumns = Template.bind({}); TwoColumns.args = { items: [ { id: 'item-1', item: Item 1 }, { id: 'item-2', item: Item 2 }, { id: 'item-3', item: Item 3 }, ], col: 2, gap: 'sm', }; export const ThreeColumns = Template.bind({}); ThreeColumns.args = { items: [ { id: 'item-1', item: Item 1 }, { id: 'item-2', item: Item 2 }, { id: 'item-3', item: Item 3 }, { id: 'item-4', item: Item 4 }, ], col: 3, gap: 'sm', }; export const FixedSize = Template.bind({}); FixedSize.args = { items: [ { id: 'item-1', item: Item 1 }, { id: 'item-2', item: Item 2 }, { id: 'item-3', item: Item 3 }, { id: 'item-4', item: Item 4 }, { id: 'item-5', item: Item 5 }, ], size: '300px', gap: 'sm', }; export const MaxSize = Template.bind({}); MaxSize.args = { items: [ { id: 'item-1', item: Item 1 }, { id: 'item-2', item: Item 2 }, { id: 'item-3', item: Item 3 }, { id: 'item-4', item: Item 4 }, { id: 'item-5', item: Item 5 }, ], sizeMax: '300px', gap: 'sm', }; export const MinSize = Template.bind({}); MinSize.args = { items: [ { id: 'item-1', item: Item 1 }, { id: 'item-2', item: Item 2 }, { id: 'item-3', item: Item 3 }, { id: 'item-4', item: Item 4 }, { id: 'item-5', item: Item 5 }, ], sizeMin: '100px', gap: 'sm', }; export const MinAndMaxSize = Template.bind({}); MinAndMaxSize.args = { items: [ { id: 'item-1', item: Item 1 }, { id: 'item-2', item: Item 2 }, { id: 'item-3', item: Item 3 }, { id: 'item-4', item: Item 4 }, { id: 'item-5', item: Item 5 }, ], sizeMax: '300px', sizeMin: '100px', gap: 'sm', }; export const Fill = Template.bind({}); Fill.args = { items: [ { id: 'item-1', item: Item 1 }, { id: 'item-2', item: Item 2 }, { id: 'item-3', item: Item 3 }, { id: 'item-4', item: Item 4 }, { id: 'item-5', item: Item 5 }, ], col: 'auto-fill', sizeMin: '100px', gap: 'sm', };