import type { Meta, StoryObj } from '@storybook/vue3-vite' import AmeliproBtn from './AmeliproBtn.vue' const meta = { argTypes: { badge: { description: 'Ajoute un badge avec un nombre ou du texte à côté de l’icône.' }, badgeBgColor: { description: 'Gère la couleur de fond du badge.' }, badgeColor: { description: 'Gère la couleur de texte du badge.' }, bordered: { description: 'Applique une bordure de 1px autour du bouton de la même couleur que hoverColor' }, classes: { description: 'Classes personnalisées du bouton' }, click: { table: { category: 'events' }, description: 'Événement émis au click sur le bouton', }, color: { description: 'La couleur de fond du bouton/lien ou la couleur du texte si la propriété `text` est activée.' }, default: { description: 'Intitulé du bouton' }, disabled: { description: 'Désactive le bouton.' }, hoverColor: { description: 'Cette propriété est similaire à la propriété `color` mais pour le survol du bouton/lien.' }, hoverUnderline: { description: 'Souligne le texte du bouton/lien au survol.' }, icon: { table: { category: 'props' }, description: 'Slot pour utiliser une icône MDI', }, iconBgColor: { description: 'Applique une couleur de fond à l’icône' }, iconBordered: { description: 'Applique une bordure de 1px autour de l’icône' }, iconColor: { description: 'Applique une couleur à l’icône si la propriété infoBlock est activée' }, iconFocusColor: { description: 'Applique une couleur de focus à l’icône' }, iconHoverColor: { description: 'Applique une couleur de survol à l’icône si la propriété infoBlock est activée' }, iconLeft: { description: 'S’il y a un icône le place à gauche.' }, iconName: { description: 'Nom de l’icône à rajouter au bouton/lien à droite du texte.' }, infoBlock: { description: 'Change la forme du bouton/lien et le positionnement de l’icône pour correspondre à l’affichage `bloc d’information`.' }, minHeight: { description: 'La hauteur minimale du bouton/lien.' }, size: { description: 'Change la taille de l’icône pour l’affichage `bloc d’information`.' }, text: { description: 'Supprime la couleur de fond du bouton pour l’appliquer directement au texte.' }, textColor: { description: 'La couleur du texte si la propriété `text` est désactivée.' }, textFocusColor: { description: 'La couleur du texte au focus si la propriété `text` est désactivée.' }, textHoverColor: { description: 'La couleur du texte au survol si la propriété `text` est désactivée.' }, underline: { description: 'Souligne le texte du bouton/lien.' }, uniqueId: { description: 'Identifiant unique du bouton/lien' }, }, component: AmeliproBtn, title: 'Composants/Amelipro/AmeliproBtn', } as Meta export default meta type Story = StoryObj export const Default: Story = { args: { default: 'My Button', uniqueId: 'my-btn-id', }, parameters: { render: args => ({ components: { AmeliproBtn }, setup() { return { args } }, template: ` {{ args.default }} `, }), sourceCode: [ { name: 'Template', code: ` `, }, { name: 'Script', code: ` `, }, ], }, } export const AvecBadge: Story = { args: { badge: 1, badgeBgColor: 'ap-pink', badgeColor: 'ap-white', default: 'My Button', iconBordered: true, iconName: 'notifications', textColor: 'ap-white', }, parameters: { render: args => ({ components: { AmeliproBtn }, setup() { return { args } }, }), sourceCode: [ { name: 'Template', code: ` `, }, { name: 'Script', code: ` `, }, ], }, } export const SecundaryBtn: Story = { args: { bordered: true, color: 'ap-white', default: 'My Button', hoverColor: 'ap-blue-lighten-3', textColor: 'ap-blue-darken-1', }, parameters: { render: () => ({ components: { AmeliproBtn }, setup() { return {} }, }), sourceCode: [ { name: 'Template', code: ` `, }, { name: 'Script', code: ` `, }, ], }, } export const CouleurEtTexteParDefaut: Story = { name: 'Couleur et texte par défaut', args: { default: 'Bouton par défaut', uniqueId: 'btn-default', }, parameters: { sourceCode: [ { name: 'Template', code: ` `, }, ], }, render: args => ({ components: { AmeliproBtn }, setup() { return { args } }, template: `

Bouton avec couleur et texte par défaut.

{{ args.default }} `, }), } export const AvecIconeAGauche: Story = { name: 'Icône à gauche', args: { default: 'Bouton avec icône à gauche', iconName: 'chrono', iconLeft: true, uniqueId: 'btn-icon-left', color: 'ap-blue-darken-1', textColor: 'ap-white', }, parameters: { sourceCode: [ { name: 'Template', code: ` `, }, ], }, render: args => ({ components: { AmeliproBtn }, setup() { return { args } }, template: `

Bouton avec une icône à gauche (iconLeft).

{{ args.default }} `, }), } export const Desactive: Story = { name: 'Désactivé', args: { default: 'Bouton désactivé', disabled: true, uniqueId: 'btn-disabled', color: 'ap-blue-darken-1', textColor: 'ap-white', }, parameters: { sourceCode: [ { name: 'Template', code: ` `, }, ], }, render: args => ({ components: { AmeliproBtn }, setup() { return { args } }, template: `

Bouton désactivé (disabled).

{{ args.default }} `, }), } export const TexteSeul: Story = { name: 'Texte seul', args: { default: 'Bouton texte seul', text: true, color: 'ap-blue-darken-1', textColor: 'ap-blue-darken-1', uniqueId: 'btn-text-only', }, parameters: { sourceCode: [ { name: 'Template', code: ` `, }, ], }, render: args => ({ components: { AmeliproBtn }, setup() { return { args } }, template: `

Bouton affiché sans fond, uniquement en texte (text).

{{ args.default }} `, }), }