import type { Meta, StoryObj } from '@storybook/react-vite'; import { expect, within } from 'storybook/test'; import SubmitButton from '../app/components/forms/SubmitButton'; const submitButtonDescription = `Shared submit action for Biergarten forms. These stories cover the idle, loading, and custom-width states so you can verify button copy, disabled behavior during submission, and theme styling without wiring up a full form flow.`; const meta = { title: 'Forms/SubmitButton', component: SubmitButton, tags: ['autodocs'], args: { idleText: 'Save changes', submittingText: 'Saving changes', isSubmitting: false, }, parameters: { layout: 'centered', docs: { description: { component: submitButtonDescription, }, }, }, } satisfies Meta; export default meta; type Story = StoryObj; export const Idle: Story = { play: async ({ canvasElement }) => { const canvas = within(canvasElement); await expect(canvas.getByRole('button', { name: /save changes/i })).toBeEnabled(); }, }; export const Submitting: Story = { args: { isSubmitting: true, }, play: async ({ canvasElement }) => { const canvas = within(canvasElement); await expect(canvas.getByRole('button', { name: /saving changes/i })).toBeDisabled(); }, }; export const CustomWidth: Story = { args: { className: 'btn btn-secondary min-w-64', idleText: 'Register user', submittingText: 'Registering user', }, };