import type { Meta, StoryObj } from '@storybook/vue3-vite'; import ProgressBar from '../progress-bar.vue'; const meta: Meta = { title: 'Components/Progress/Progress Bar', component: ProgressBar, argTypes: { color: { control: { type: 'select' }, options: ['primary', 'blue', 'red', 'orange', 'green'], }, layout: { control: { type: 'select' }, options: ['default', 'no-description', 'inline', 'bare'], }, }, }; export default meta; type Story = StoryObj; export const Default: Story = { args: { layout: 'default', title: 'Data Storage', modelValue: 60, color: 'primary', }, render: args => ({ components: { ProgressBar }, setup() { return { args }; }, template: ` `, }), }; export const ZeroProgress: Story = { args: { layout: 'default', title: 'Download Progress', modelValue: 0, }, render: args => ({ components: { ProgressBar }, setup() { return { args }; }, template: ` `, }), }; export const FullProgress: Story = { args: { layout: 'default', title: 'Upload Complete', modelValue: 100, color: 'green', }, render: args => ({ components: { ProgressBar }, setup() { return { args }; }, template: ` `, }), }; export const WithCustomMax: Story = { name: 'With Custom Max Value', args: { layout: 'default', title: 'Memory Usage', modelValue: 6144, max: 8192, }, render: args => ({ components: { ProgressBar }, setup() { return { args }; }, template: ` `, }), }; export const DifferentLayouts: Story = { render: () => ({ components: { ProgressBar }, template: `

Default Layout

No Description Layout

Inline Layout

Bare Layout

`, }), }; export const DifferentColors: Story = { render: () => ({ components: { ProgressBar }, template: `

Primary

Blue (Information)

Green (Success)

Orange (Warning)

Red (Error)

`, }), }; export const WithCustomLabel: Story = { name: 'With Custom Label (Slot)', args: { layout: 'default', title: 'File Transfer', modelValue: 1024, max: 2048, }, render: args => ({ components: { ProgressBar }, setup() { return { args }; }, template: ` `, }), }; export const InlineWithTitle: Story = { name: 'Inline Layout with Title', args: { layout: 'inline', title: 'CPU Usage', modelValue: 68, color: 'orange', }, render: args => ({ components: { ProgressBar }, setup() { return { args }; }, template: ` `, }), }; export const LoadingStates: Story = { name: 'Loading States Example', render: () => ({ components: { ProgressBar }, template: `

Initializing

In Progress

Nearly Complete

`, }), }; export const EdgeCases: Story = { render: () => ({ components: { ProgressBar }, template: `

Over Max Value

Negative Value

Max is Zero

Very Small Progress

`, }), }; export const RealWorldExamples: Story = { name: 'Real World Use Cases', render: () => ({ components: { ProgressBar }, template: `

Storage Quota

Profile Completion

System Health

`, }), };