import type { Meta, StoryObj } from '@storybook/vue3' import AmeliproStatus from './AmeliproStatus.vue' const meta = { argTypes: { isSpan: { description: 'Change la balise qui entoure le statut en balise span' }, label: { description: 'Change le texte du statut' }, paddingX: { description: 'Padding à gauche et à droite du statut' }, paddingY: { description: 'Padding en haut et en bas du statut' }, type: { control: 'select', description: 'Type de statut parmi ces choix : `success`, `failure`, `action`, `progress`, `closed`, `draft`, `archive` et `canceled`', options: ['action', 'archive', 'canceled', 'closed', 'draft', 'failure', 'progress', 'success'], table: { type: { summary: 'string' } }, }, uniqueId: { description: 'Identifiant unique du statut' }, }, component: AmeliproStatus, title: 'Composants/Amelipro/AmeliproStatus', } as Meta export default meta type Story = StoryObj export const Default: Story = { args: { type: 'draft' }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, { name: 'Scripts', code: ``, }, ], }, render: args => ({ components: { AmeliproStatus }, setup() { return { args } }, template: ` `, }), } export const TypeSuccess: Story = { name: 'Succès', args: { type: 'success', label: 'Succès', uniqueId: 'status-success', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, ], }, render: args => ({ components: { AmeliproStatus }, setup() { return { args } }, template: `

Statut de type success (vert) avec label personnalisé.

`, }), } export const TypeErreur: Story = { name: 'Erreur', args: { type: 'failure', label: 'Erreur détectée', uniqueId: 'status-error', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, ], }, render: args => ({ components: { AmeliproStatus }, setup() { return { args } }, template: `

Statut de type failure (rouge) avec label personnalisé.

`, }), } export const TypeArchive: Story = { name: 'Archivé', args: { type: 'archive', label: 'Archivé', uniqueId: 'status-archive', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, ], }, render: args => ({ components: { AmeliproStatus }, setup() { return { args } }, template: `

Statut de type archive (gris) avec label personnalisé.

`, }), } export const TypeEnCours: Story = { name: 'En cours', args: { type: 'progress', label: 'Traitement en cours', uniqueId: 'status-progress', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, ], }, render: args => ({ components: { AmeliproStatus }, setup() { return { args } }, template: `

Statut de type progress (bleu) avec label personnalisé.

`, }), } export const TypeBrouillon: Story = { name: 'Brouillon', args: { type: 'draft', label: 'Brouillon', uniqueId: 'status-draft', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, ], }, render: args => ({ components: { AmeliproStatus }, setup() { return { args } }, template: `

Statut de type draft (jaune) avec label personnalisé.

`, }), } export const TypeFerme: Story = { name: 'Fermé', args: { type: 'closed', label: 'Fermé', uniqueId: 'status-closed', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, ], }, render: args => ({ components: { AmeliproStatus }, setup() { return { args } }, template: `

Statut de type closed (violet) avec label personnalisé.

`, }), } export const TypeAction: Story = { name: 'Action', args: { type: 'action', label: 'Action requise', uniqueId: 'status-action', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, ], }, render: args => ({ components: { AmeliproStatus }, setup() { return { args } }, template: `

Statut de type action (bleu foncé) avec label personnalisé.

`, }), } export const TypeAnnule: Story = { name: 'Annulé', args: { type: 'canceled', label: 'Annulé', uniqueId: 'status-canceled', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, ], }, render: args => ({ components: { AmeliproStatus }, setup() { return { args } }, template: `

Statut de type canceled (rouge clair) avec label personnalisé.

`, }), } export const BaliseSpan: Story = { name: 'Balise span', args: { type: 'success', label: 'Statut en span', isSpan: true, uniqueId: 'status-span', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, ], }, render: args => ({ components: { AmeliproStatus }, setup() { return { args } }, template: `

Statut affiché dans une balise span (isSpan).

`, }), } export const PaddingPersonnalise: Story = { name: 'Padding personnalisé', args: { type: 'draft', label: 'Padding personnalisé', paddingX: '32px', paddingY: '12px', uniqueId: 'status-padding', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, ], }, render: args => ({ components: { AmeliproStatus }, setup() { return { args } }, template: `

Statut avec padding horizontal et vertical personnalisé (paddingX et paddingY).

`, }), }