mirror of
https://github.com/aaronpo97/the-biergarten-app.git
synced 2026-05-31 17:53:59 +00:00
53 lines
1.5 KiB
TypeScript
53 lines
1.5 KiB
TypeScript
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<typeof SubmitButton>;
|
|
|
|
export default meta;
|
|
type Story = StoryObj<typeof meta>;
|
|
|
|
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',
|
|
},
|
|
};
|