import type { Meta, StoryObj } from '@storybook/vue3' import AmeliproIcon from './AmeliproIcon.vue' import { iconList } from './iconList' const meta = { argTypes: { borderColor: { description: 'Couleur de bordure de l’icône' }, bordered: { description: 'Bordure autour de l’icône' }, default: { description: 'Pour utiliser une icône material design utilisez les noms de classe `mdi-icon`' }, icon: { description: 'Le nom de l’icône personnalisé' }, iconBgColor: { description: 'Couleur de l’arrière plan de l’icône' }, iconColor: { description: 'Couleur de l’icône' }, label: { description: 'Permet d’ajouter un nom accessible qui ne sera visible que par les technologies d’assistance' }, large: { description: 'Pour avoir une icône de grande taille' }, mdiPadding: { description: 'padding personnalisé lorsque vous utilisez une icône provenant de mdi' }, medium: { description: 'Pour avoir une icône de taille moyenne' }, size: { description: 'Défini la hauteur et la largeur de l’icône' }, small: { description: 'Pour avoir une icône de petite taille' }, uniqueId: { description: 'Identifiant unique du composant' }, widthAuto: { description: 'Défini à `auto` la largeur de l’icône' }, xLarge: { description: 'Pour avoir une icône de très grande taille' }, }, component: AmeliproIcon, title: 'Composants/Amelipro/AmeliproIcon', } as Meta export default meta type Story = StoryObj export const Default: Story = { args: { icon: 'utilisateur', iconBgColor: 'ap-blue-darken-1', iconColor: 'ap-white', uniqueId: 'amelipro-icon-id', xLarge: true, }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, { name: 'Scripts', code: ``, }, ], }, render: args => ({ components: { AmeliproIcon }, setup() { return { args } }, template: ` `, }), } // Génrer le code à afficher dans la story AllIcons const allIconsCode = iconList.map((icon) => { const bgColor = icon.noBackground ? 'transparent' : 'ap-blue-darken-1' const color = icon.noBackground ? 'ap-blue-darken-1' : 'ap-white' return ` ` }).join('\n') export const AllIcons: Story = { args: { iconColor: 'ap-white' }, parameters: { sourceCode: [ { name: 'Template', code: allIconsCode, }, ], }, render: args => ({ components: { AmeliproIcon }, setup() { const icons = iconList return { args, icons } }, template: `
  • {{ icon.name }}

`, }), } export const AvecBordure: Story = { name: 'Avec bordure personnalisée', args: { icon: 'utilisateur', iconColor: 'ap-red-darken-1', iconBgColor: 'ap-white', bordered: true, borderColor: 'ap-red-darken-1', uniqueId: 'amelipro-icon-bordered', xLarge: true, }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, ], }, render: args => ({ components: { AmeliproIcon }, setup() { return { args } }, template: `

Icône Amelipro avec bordure personnalisée (bordered et borderColor).

`, }), }