import type { Args, Meta, StoryObj } from '@storybook/vue3-vite' import { ref } from 'vue' import CpButtonToggle from '@/components/CpButtonToggle.vue' import CpSwitch from '@/components/CpSwitch.vue' import { docCellStyle, docLabelStyle, docRowWrapStyle } from '@/stories/documentationStyles' const meta = { title: 'Atoms/CpButtonToggle', component: CpButtonToggle, argTypes: { isSelected: { control: 'boolean', description: 'Whether the toggle button is selected.', }, disabled: { control: 'boolean', description: 'Whether interactions are disabled.', }, label: { control: 'text', description: 'Text displayed in the button.', }, leadingIcon: { control: 'text', description: 'Icon displayed in the button.', }, }, } satisfies Meta export default meta type Story = StoryObj const defaultRender = (args: Args) => ({ components: { CpButtonToggle }, setup() { return { args } }, template: ` `, }) export const Default: Story = { args: { label: 'Title', isSelected: false, disabled: false, leadingIcon: 'dashed-circle', }, render: defaultRender, } export const States: Story = { parameters: { controls: { disable: true } }, render: () => ({ components: { CpButtonToggle }, setup() { return { docCellStyle, docLabelStyle, docRowWrapStyle } }, template: `
Default
Selected
Disabled
Disabled selected
`, }), } export const withInertSwitch: Story = { args: { ...Default.args, isSelected: undefined, }, render: (args: Args) => ({ components: { CpButtonToggle, CpSwitch }, setup() { const isSelected = ref(false) return { docCellStyle, docLabelStyle, docRowWrapStyle, isSelected, args } }, template: `
Selected
`, }), } export const CustomLeadingSlot: Story = { parameters: { controls: { disable: true } }, render: () => ({ components: { CpButtonToggle }, template: `
`, }), }