import type { Meta, StoryObj } from '@storybook/react'; import { Select } from './Select'; import { User, MapSettings, Mailbox } from '../icons'; import { fn } from '@storybook/test'; const meta: Meta = { title: 'UI/Select/Select', component: Select, parameters: { layout: 'centered' }, args: { onChange: fn() }, tags: ['autodocs'] }; export default meta; type Story = StoryObj; const basicItems = [ { value: 'apples', label: 'Apples' }, { value: 'bananas', label: 'Bananas' }, { value: 'cherries', label: 'Cherries' } ]; const itemsWithIcons = [ { value: 'profile', label: 'Profile', icon: }, { value: 'settings', label: 'Settings', icon: }, { value: 'messages', label: 'Messages', icon: } ]; const groupedItems = [ { label: 'Fruits', items: [ { value: 'apple', label: 'Apple' }, { value: 'banana', label: 'Banana' }, { value: 'orange', label: 'Orange' } ] }, { label: 'Vegetables', items: [ { value: 'carrot', label: 'Carrot' }, { value: 'broccoli', label: 'Broccoli' }, { value: 'spinach', label: 'Spinach' } ] } ]; const itemsWithSecondaryLabel = [ { value: 'user1', label: 'John Doe', secondaryLabel: 'Admin' }, { value: 'user2', label: 'Jane Smith', secondaryLabel: 'Editor' }, { value: 'user3', label: 'Bob Johnson', secondaryLabel: 'Viewer', disabled: true } ]; const itemsWithSomeDisabled = [ { value: 'active1', label: 'Available Option 1' }, { value: 'disabled1', label: 'Unavailable Option 1', disabled: true }, { value: 'active2', label: 'Available Option 2' }, { value: 'disabled2', label: 'Unavailable Option 2', disabled: true }, { value: 'active3', label: 'Available Option 3' } ]; export const Basic: Story = { args: { items: basicItems, placeholder: 'Select an option' } }; export const WithIcons: Story = { args: { items: itemsWithIcons, placeholder: 'Select an option' } }; export const Grouped: Story = { args: { items: groupedItems, placeholder: 'Select an option' } }; export const WithSecondaryLabels: Story = { args: { items: itemsWithSecondaryLabel, placeholder: 'Select a user' } }; export const Disabled: Story = { args: { items: basicItems, placeholder: 'Select an option', disabled: true } }; export const WithShowIndex: Story = { args: { items: basicItems, placeholder: 'Select an option', showIndex: true } }; export const PartiallyDisabled: Story = { args: { items: itemsWithSomeDisabled, placeholder: 'Select an available option' } }; export const WithLowCharacters: Story = { args: { items: [ { value: 'gyj', label: 'gyj - GYJ' } ], placeholder: 'Select an option' } };