import type { Meta, StoryObj } from '@storybook/vue3' import AmeliproCallback from './AmeliproCallback.vue' const meta = { argTypes: { 'cardActions': { description: 'Permet de modifier la zone prévu pour les boutons cardActions' }, 'cardTitle': { description: 'Titre de la carte' }, 'click:transmission': { description: 'Événement émis au clic sur le bouton "Réessayer".', type: 'void' }, 'contentBottom': { description: 'Permet de rajouter du contenu sous le contenu principal de la carte' }, 'contentText': { description: 'Text de la carte (contenu)' }, 'contentTitle': { description: 'Titre du contenu' }, 'contentTitleColor': { description: 'Permet de définir la couleur du titre du contenu' }, 'defaultContent': { description: 'Permet de modifier le contenu central par défaut à l’intérieur de la card' }, 'failure': { description: 'Affiche un icône en forme de croix pour signifier un échec de transmission' }, 'imgMinWidth': { description: 'Permet de définir la taille minimale de l’image' }, 'imgUrl': { description: 'Url permettant l’affichage d’une image en remplacement des icônes par défaut' }, 'imgWidth': { description: 'Permet de définir la taille de l’image' }, 'retryBtn': { description: 'Affiche le bouton réessayer' }, 'text': { description: 'Permet de modifier la zone de texte par défaut à l’intérieur de la card si le slot defaultContent n’est pas renseigné' }, 'transmissionHref': { description: 'Url du bouton réessayer' }, 'transmissionTo': { description: 'Route du bouton réessayer' }, 'uniqueId': { description: 'Identifiant unique du composant' }, }, component: AmeliproCallback, title: 'Composants/Amelipro/Cartes/AmeliproCallback', } as Meta export default meta type Story = StoryObj export const Default: Story = { args: { cardTitle: 'Titre de la carte', contentText: 'Texte du contenu', contentTitle: 'Titre du contenu', }, parameters: { sourceCode: [ { name: 'Template', code: ` `, }, { name: 'Scripts', code: ``, }, ], }, render: args => ({ components: { AmeliproCallback }, setup() { return { args } }, template: ` `, }), } // --- Carte avec bouton Réessayer (retryBtn) --- export const AvecBoutonReessayer: Story = { name: 'Avec bouton Réessayer', args: { cardTitle: 'Transmission échouée', contentText: 'Une erreur est survenue lors de la transmission.', contentTitle: 'Erreur', retryBtn: true, failure: true, uniqueId: 'amelipro-callback-retry', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, { name: 'Script', code: ``, }, ], }, render: args => ({ components: { AmeliproCallback }, setup() { return { args } }, template: `

Affichage du bouton Réessayer grâce à la prop retryBtn et gestion de l’échec avec failure.

`, }), } // --- Carte avec image personnalisée --- export const AvecImage: Story = { name: 'Avec image personnalisée', args: { cardTitle: 'Carte avec image', contentText: 'Une image personnalisée est affichée.', contentTitle: 'Image', imgUrl: '/amelipro/img/tile-example.svg', imgWidth: '80px', imgMinWidth: '80px', uniqueId: 'amelipro-callback-image', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, { name: 'Script', code: ``, }, ], }, render: args => ({ components: { AmeliproCallback }, setup() { return { args } }, template: `

Affichage d’une image personnalisée grâce aux props imgUrl, imgWidth et imgMinWidth.

`, }), } // --- Carte avec couleur de titre personnalisée --- export const TitreCouleurPersonnalisee: Story = { name: 'Titre couleur personnalisée', args: { cardTitle: 'Carte avec titre coloré', contentText: 'Le titre du contenu est en couleur personnalisée.', contentTitle: 'Titre coloré', contentTitleColor: '#1976d2', uniqueId: 'amelipro-callback-title-color', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, { name: 'Script', code: ``, }, ], }, render: args => ({ components: { AmeliproCallback }, setup() { return { args } }, template: `

Le titre du contenu est coloré grâce à la prop contentTitleColor.

`, }), } // --- Carte avec slot defaultContent --- export const AvecSlotDefaultContent: Story = { name: 'Slot defaultContent', args: { cardTitle: 'Carte avec slot', uniqueId: 'amelipro-callback-slot', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, { name: 'Script', code: ``, }, ], }, render: args => ({ components: { AmeliproCallback }, setup() { return { args } }, template: `

Le slot defaultContent permet de personnaliser le contenu central de la carte.

`, }), } // --- Carte avec slot cardActions --- export const AvecSlotCardActions: Story = { name: 'Slot cardActions', args: { cardTitle: 'Carte avec actions', contentText: 'Des actions personnalisées sont ajoutées.', uniqueId: 'amelipro-callback-actions', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, { name: 'Script', code: ``, }, ], }, render: args => ({ components: { AmeliproCallback }, setup() { return { args } }, template: `

Le slot cardActions permet d’ajouter des boutons ou actions personnalisées en bas de la carte.

`, }), } // --- Carte avec contenu en bas (slot contentBottom) --- export const AvecSlotContentBottom: Story = { name: 'Slot contentBottom', args: { cardTitle: 'Carte avec contenu bas', contentText: 'Un contenu supplémentaire est affiché en bas.', uniqueId: 'amelipro-callback-content-bottom', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, { name: 'Script', code: ``, }, ], }, render: args => ({ components: { AmeliproCallback }, setup() { return { args } }, template: `

Le slot contentBottom permet d’ajouter du contenu sous le contenu principal de la carte.

`, }), } // --- Bouton Réessayer avec navigation (transmissionHref) --- export const AvecNavigationHref: Story = { name: 'Bouton Réessayer avec lien', args: { cardTitle: 'Session expirée', contentText: 'Votre session a expiré. Veuillez vous reconnecter.', contentTitle: 'Session expirée', retryBtn: true, transmissionHref: '#espacepro-ameli-fr', uniqueId: 'amelipro-callback-href', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, { name: 'Script', code: ``, }, ], }, render: args => ({ components: { AmeliproCallback }, setup() { return { args } }, template: `

Le bouton Réessayer redirige vers une URL grâce à la prop transmissionHref.

`, }), }