import React from 'react'; import type { Meta, StoryObj } from '@storybook/react-vite'; import { LocalizationProvider } from '@shoptet/ui-core-web'; import { NumberInput } from './NumberInput'; const meta: Meta = { title: 'UI kit/Form/Inputs/NumberInput', component: NumberInput, tags: ['autodocs'], parameters: { layout: 'centered', }, argTypes: { width: { control: { type: 'radio' }, options: ['xs', 'sm', 'md', 'lg', 'xl'], }, label: { control: { type: 'text' }, }, error: { control: { type: 'boolean' }, }, warning: { control: { type: 'boolean' }, }, disabled: { control: { type: 'boolean' }, }, readOnly: { control: { type: 'boolean' }, }, required: { control: { type: 'boolean' }, }, }, }; export default meta; type Story = StoryObj; export const Default: Story = { args: { label: 'Number input', placeholder: 'Enter a number', }, }; export const WithDifferentLocale: Story = { render: args => { const [value, setValue] = React.useState(null); const [locale, setLocale] = React.useState<'cs-CZ' | 'en-US'>('cs-CZ'); return (
Current value: {value === null ? 'null' : value}
Expected decimal separator for {locale}:{' '} {['cs-CZ', 'de-DE', 'hu-HU', 'pl-PL', 'ro-RO', 'sk-SK', 'vi-VN'].includes(locale) ? 'comma (,)' : 'dot (.)'}
); }, args: { label: 'Number input (locale-aware)', placeholder: 'Enter a number', }, }; export const WithDefaultValue: Story = { args: { label: 'Number input with default value', defaultValue: 42, placeholder: 'Enter a number', }, }; export const WithPlaceholder: Story = { args: { label: 'Age input', placeholder: 'Enter your age', }, }; export const PositiveNumber: Story = { args: { label: 'Positive number input', value: 42, placeholder: 'Enter a number', }, }; export const NegativeNumber: Story = { args: { label: 'Negative number input', value: -15, placeholder: 'Enter a number', }, }; export const ZeroValue: Story = { args: { label: 'Zero value input', value: 0, placeholder: 'Enter a number', }, }; export const Error: Story = { args: { label: 'Number input in error state', value: -999, placeholder: 'Enter a number', error: true, }, }; export const Warning: Story = { args: { label: 'Number input in warning state', value: 999, placeholder: 'Enter a number', warning: true, }, }; export const Disabled: Story = { args: { label: 'Disabled number input', value: 100, placeholder: 'Enter a number', disabled: true, }, }; export const ReadOnly: Story = { args: { label: 'Read-only number input', value: 500, placeholder: 'Enter a number', readOnly: true, }, }; export const Required: Story = { args: { label: 'Required number input', placeholder: 'Enter a number', required: true, }, }; export const WithName: Story = { args: { label: 'Quantity input', name: 'quantity', defaultValue: 1, placeholder: 'Enter quantity', }, }; export const Composed: Story = { render: () => { const [value, setValue] = React.useState(3); return ( ); }, };