import type { Meta, StoryObj } from '@storybook/vue3-vite' import { ref } from 'vue' import SingleSelect from './SingleSelect.vue' const meta: Meta = { title: 'Components/Select/SingleSelect', component: SingleSelect, tags: ['autodocs'], parameters: { layout: 'padded' }, decorators: [ () => ({ template: '
' }) ], argTypes: { label: { control: 'text' }, options: { control: 'object' }, size: { control: { type: 'select' }, options: ['lg', 'md'] }, invalid: { control: 'boolean' }, loading: { control: 'boolean' } }, args: { label: 'Category', size: 'lg', invalid: false, loading: false, options: [ { name: 'Popular', value: 'popular' }, { name: 'Newest', value: 'newest' }, { name: 'Oldest', value: 'oldest' }, { name: 'A → Z', value: 'az' }, { name: 'Z → A', value: 'za' } ] } } export default meta type Story = StoryObj const sampleOptions = [ { name: 'Popular', value: 'popular' }, { name: 'Newest', value: 'newest' }, { name: 'Oldest', value: 'oldest' }, { name: 'A → Z', value: 'az' }, { name: 'Z → A', value: 'za' } ] export const Default: Story = { render: (args) => ({ components: { SingleSelect }, setup() { const selected = ref(null) return { selected, args } }, template: '' }) } export const MediumSize: Story = { render: () => ({ components: { SingleSelect }, setup() { const selected = ref('popular') return { selected, sampleOptions } }, template: '' }), parameters: { controls: { disable: true } } } export const WithIcon: Story = { render: () => ({ components: { SingleSelect }, setup() { const selected = ref('popular') return { selected, sampleOptions } }, template: ` ` }), parameters: { controls: { disable: true } } } export const Disabled: Story = { render: () => ({ components: { SingleSelect }, setup() { const selected = ref('popular') return { selected, sampleOptions } }, template: '' }), parameters: { controls: { disable: true } } } export const Invalid: Story = { render: () => ({ components: { SingleSelect }, setup() { const selected = ref('popular') return { selected, sampleOptions } }, template: '' }), parameters: { controls: { disable: true } } } export const Loading: Story = { render: () => ({ components: { SingleSelect }, setup() { const selected = ref('popular') return { selected, sampleOptions } }, template: '' }), parameters: { controls: { disable: true } } } export const AllStates: Story = { render: () => ({ components: { SingleSelect }, setup() { const a = ref('popular') const b = ref('popular') const c = ref('popular') const d = ref('popular') const e = ref('popular') return { sampleOptions, a, b, c, d, e } }, template: `

Large (Interface)

Medium (Node)

` }), parameters: { controls: { disable: true } } }