import type { Meta, StoryObj } from '@storybook/vue3' import AmeliproIconBtn from './AmeliproIconBtn.vue' const meta = { argTypes: { append: { description: 'texte à afficher à droite de l’icône' }, 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: 'Active le mode bordered' }, btnLabel: { description: 'Label masqué du bouton à remplir si les slots `prepend`, `append` et la property `btnTitle` ne sont pas utilisés' }, btnTitle: { description: 'Title du bouton à remplir si le slots `prepend`, `append` et la property `btnLabel` ne sont pas utilisés. Est affiché au survol du bouton' }, click: { description: 'Event émis au click sur le bouton, ne fonctionne correctement que si `href` et `to` ne sont pas renseignés.' }, href: { description: 'Url du lien' }, icon: { description: 'Nom de l’icône personnalisée' }, iconBgColor: { description: 'Couleur de l’arrière plan de l’icône' }, iconBorderColor: { description: 'Couleur de bordure de l’icône' }, iconColor: { description: 'Couleur de l’icône' }, iconHoverBgColor: { description: 'Couleur d’arrière plan de l’icône au survol' }, iconHoverBorderColor: { description: 'Couleur de bordure de l’icône au survol' }, iconHoverColor: { description: 'Couleur de l’icône au survol' }, prepend: { description: 'texte à afficher à gauche de l’icône' }, size: { description: 'Défini la hauteur et la largeur de l’icône' }, to: { description: 'Route du lien' }, uniqueId: { description: 'Ajoute un id au bouton' }, }, component: AmeliproIconBtn, title: 'Composants/Amelipro/AmeliproIconBtn', } as Meta export default meta type Story = StoryObj export const Default: Story = { args: { btnLabel: 'informations utilisateur', icon: 'utilisateur', iconBgColor: 'ap-blue-darken-1', iconColor: 'ap-white', iconHoverBgColor: 'ap-blue-darken-2', iconHoverColor: 'ap-white', uniqueId: 'amelipro-icon-btn-id', xLarge: true, }, parameters: { sourceCode: [ { name: 'Template', code: ` `, }, { name: 'Scripts', code: ``, }, ], }, render: args => ({ components: { AmeliproIconBtn }, setup() { return { args } }, template: ` `, }), } export const BadgeTexte: Story = { name: 'Badge texte', args: { icon: 'utilisateur', iconColor: 'ap-blue-darken-1', iconHoverColor: 'ap-blue-darken-2', badge: 'A', badgeBgColor: 'ap-green', badgeColor: 'ap-white', btnLabel: 'Voir les nouveautés', uniqueId: 'icon-btn-badge-texte', xLarge: true, }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, ], }, render: args => ({ components: { AmeliproIconBtn }, setup() { return { args } }, template: `

Bouton icône avec badge texte personnalisé.

`, }), } export const NavigationInterne: Story = { name: 'Navigation interne', args: { icon: 'applications', iconColor: 'ap-grey-darken-2', iconHoverColor: 'ap-blue-darken-1', btnLabel: 'Aller aux paramètres', to: '/parametres', uniqueId: 'icon-btn-to', xLarge: true, }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, ], }, render: args => ({ components: { AmeliproIconBtn }, setup() { return { args } }, template: `

Bouton icône qui utilise la prop to pour une navigation interne.

`, }), } export const AvecPrependAppend: Story = { name: 'Avec slot prepend et append', args: { icon: 'utilisateur', iconColor: 'ap-blue-darken-1', iconHoverColor: 'ap-blue-darken-2', btnLabel: 'Bouton avec slots', uniqueId: 'icon-btn-slots', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, ], }, render: args => ({ components: { AmeliproIconBtn }, setup() { return { args } }, template: `

Bouton icône avec contenu dans les slots prepend et append.

`, }), } export const Accessibilite: Story = { name: 'Accessibilité (label et title)', args: { icon: 'aide', iconColor: 'ap-blue-darken-1', iconHoverColor: 'ap-blue-darken-2', btnLabel: 'Aide', btnTitle: 'Ouvrir l’aide', uniqueId: 'icon-btn-access', xLarge: true, }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, ], }, render: args => ({ components: { AmeliproIconBtn }, setup() { return { args } }, template: `

Bouton icône avec label et title pour l’accessibilité.

`, }), }