import type { Meta, StoryObj } from '@storybook/react' import { useState } from 'react' import { Checkbox } from './Checkbox' const meta = { title: 'Components/Checkbox', component: Checkbox, argTypes: { isDisabled: { control: 'boolean', }, isIndeterminate: { control: 'boolean', }, }, } satisfies Meta export default meta type Story = StoryObj export const Default: Story = { args: { children: '동의합니다', }, } export const Checked: Story = { render: function Render() { const [isSelected, setIsSelected] = useState(true) return ( 선택됨 ) }, } export const Unchecked: Story = { render: function Render() { const [isSelected, setIsSelected] = useState(false) return ( 선택 안됨 ) }, } export const Indeterminate: Story = { args: { isIndeterminate: true, children: '일부 선택됨', }, } export const Disabled: Story = { args: { isDisabled: true, children: '비활성화', }, } export const DisabledChecked: Story = { args: { isDisabled: true, isSelected: true, children: '비활성화 (선택됨)', }, } export const WithoutLabel: Story = { args: {}, } export const MultipleCheckboxes: Story = { render: function Render() { const [checkedItems, setCheckedItems] = useState>({ option1: false, option2: true, option3: false, }) const handleChange = (key: string) => (isSelected: boolean) => { setCheckedItems((prev) => ({ ...prev, [key]: isSelected })) } return (
옵션 1 옵션 2 옵션 3
) }, } export const AllStates: Story = { render: () => (
기본 선택됨 일부 선택 비활성화 비활성화 (선택됨)
), }