import React from 'react'; import type { Meta, StoryObj } from '@storybook/react-vite'; import { Collection } from 'react-aria-components'; import { QuantaSelect, SelectItem, SelectSection, SelectSectionHeader, type SelectItemObject, type SelectProps, } from './Select'; const options = [ { label: '1', value: 'Aerospace' }, { label: '2', value: 'Mechanical' }, { label: '3', value: 'Civil' }, { label: '4', value: 'Biomedical' }, { label: '5', value: 'Nuclear' }, { label: '6', value: 'Industrial' }, { label: '7', value: 'Chemical' }, { label: '8', value: 'Agricultural' }, { label: '9', value: 'Electrical' }, { label: '10', value: 'Telco' }, ]; const groupedOptions = [ { name: 'Fruit', children: [ { id: 'apple', name: 'Apple' }, { id: 'banana', name: 'Banana' }, { id: 'orange', name: 'Orange' }, { id: 'pear', name: 'Pear' }, ], }, { name: 'Vegetable', children: [ { id: 'broccoli', name: 'Broccoli' }, { id: 'carrots', name: 'Carrots' }, { id: 'lettuce', name: 'Lettuce' }, { id: 'spinach', name: 'Spinach' }, ], }, ]; const meta: Meta = { title: 'Basic/Quanta/Select', component: QuantaSelect, parameters: { layout: 'centered', }, tags: ['autodocs'], }; export default meta; type Story = StoryObj; function ControlledValueStory(args: any) { const [value, setValue] = React.useState('10'); return ( <> {(item: SelectItemObject) => ( {item.value} )}
        Current selection: {JSON.stringify(value)}
      
); } export const Default: Story = { args: { name: 'field-default', label: 'Field title', description: 'Optional help text', placeholder: 'Select...', children: ( <> Hello Lorem Ipsum ), }, }; export const Items: Story = { render: (args) => ( {...(args as SelectProps)} > {(item: SelectItemObject) => ( {item.value} )} ), args: { name: 'field-items', label: 'Field title', description: 'Optional help text', placeholder: 'Select...', items: options, }, }; export const Sections: Story = { render: (args) => ( {...(args as SelectProps<(typeof groupedOptions)[number], 'single'>)} items={groupedOptions} > {(section: (typeof groupedOptions)[number]) => ( {section.name} {(item: (typeof groupedOptions)[number]['children'][number]) => ( {item.name} )} )} ), args: { name: 'field-sections', label: 'Preferred fruit or vegetable', placeholder: 'Select...', }, }; export const ControlledValue: Story = { render: ControlledValueStory, args: { name: 'field-controlled', label: 'Pick an industry', placeholder: 'Select...', }, };