import type { Meta, StoryObj } from '@storybook/react-webpack5';
import { Spin } from '@/components/ui/spin';
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
const meta = {
title: 'Example/Spin',
component: Spin,
parameters: {
// Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout
layout: 'centered',
docs: {
description: {
component: `
## Spin Component
Spin is a loading spinner component that can be used to indicate loading states. It supports different sizes and can wrap other content to create loading overlays.
### Import Path
\`\`\`typescript
import { Spin } from '@/components/ui/spin';
\`\`\`
### Basic Usage
\`\`\`tsx
import { Spin } from '@/components/ui/spin';
function MyComponent() {
return (
Your content here
);
}
\`\`\`
### Features
- Three different sizes: small, default, and large
- Can wrap content to create loading overlays
- Smooth animation with CSS transitions
- Customizable styling with className prop
- Built with Tailwind CSS
`,
},
},
},
// This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs
tags: ['autodocs'],
// More on argTypes: https://storybook.js.org/docs/api/argtypes
argTypes: {
spinning: {
description: 'Whether the spinner is active',
control: { type: 'boolean' },
},
size: {
description: 'Size of the spinner',
control: { type: 'select' },
options: ['small', 'default', 'large'],
},
className: {
description: 'Additional CSS classes for styling',
control: { type: 'text' },
},
children: {
description: 'Content to be wrapped by the spinner',
control: false,
},
},
// Use `fn` to spy on any callbacks
args: {},
} satisfies Meta;
export default meta;
type Story = StoryObj;
// More on writing stories with args: https://storybook.js.org/docs/writing-stories/args
export const Default: Story = {
args: {
spinning: true,
size: 'default',
},
parameters: {
docs: {
description: {
story: `
### Default Spinner
Shows the basic spinner with default size and active state.
\`\`\`tsx
\`\`\`
`,
},
},
},
tags: ['!dev'],
};