import type { Meta, StoryObj } from '@storybook/vue3' import AmeliproIllustratedDataTile from './AmeliproIllustratedDataTile.vue' const meta = { argTypes: { complementaryInformation: { description: 'Informations supplémentaires après le sous-titre' }, iconName: { description: 'Nom de l’icône pour illustrer la data' }, imgSrc: { description: 'Chemin vers une image.' }, labelFirstLine: { description: 'Première ligne de texte de la tuile' }, labelSecondLine: { description: 'Deuxième ligne de texte de la tuile' }, tileInfoColor: { description: 'Couleur de l’icône, et des deux lignes de label' }, tileMinHeight: { description: 'Hauteur minimale du bouton/lien.' }, tilePadding: { description: 'Padding sur la tuile' }, tileWidth: { description: 'Largeur de la tuile' }, titleLevel: { description: 'Niveau de titre de la tuile' }, uniqueId: { description: 'Identifiant unique du composant' }, }, component: AmeliproIllustratedDataTile, title: 'Composants/Amelipro/Tuiles/AmeliproIllustratedDataTile', } as Meta export default meta type Story = StoryObj export const Default: Story = { args: { iconName: 'chrono', labelFirstLine: 'Label 1', labelSecondLine: 'Label 2', tileWidth: '250px', uniqueId: 'amelipro-illustrated-data-tile-unique-id', }, parameters: { sourceCode: [ { name: 'Template', code: ``, }, { name: 'Scripts', code: ``, }, ], }, render: args => ({ components: { AmeliproIllustratedDataTile }, setup() { return { args } }, template: ` `, }), } // --- Tuile illustrée avec image personnalisée --- export const AvecImage: Story = { name: 'Avec image', args: { imgSrc: '/logos/logo-assurance-maladie.svg', labelFirstLine: 'Assurance Maladie', labelSecondLine: 'Partenaire', tileWidth: '250px', uniqueId: 'amelipro-illustrated-tile-img', }, parameters: { sourceCode: [ { name: 'Template', code: ` `, }, ], }, render: args => ({ components: { AmeliproIllustratedDataTile }, setup() { return { args } }, template: `

Affichage d’une image personnalisée grâce à la prop imgSrc.

`, }), } // --- Tuile illustrée avec icône --- export const AvecIcone: Story = { name: 'Avec icône', args: { iconName: 'document', labelFirstLine: 'Documents', labelSecondLine: 'à traiter', tileWidth: '250px', uniqueId: 'amelipro-illustrated-tile-icon', }, parameters: { sourceCode: [ { name: 'Template', code: ` `, }, ], }, render: args => ({ components: { AmeliproIllustratedDataTile }, setup() { return { args } }, template: `

Affichage d’une icône grâce à la prop iconName.

`, }), } // --- Tuile illustrée avec informations complémentaires --- export const AvecInfosComplements: Story = { name: 'Avec infos complémentaires', args: { iconName: 'chrono', labelFirstLine: 'Traitement', labelSecondLine: 'en cours', tileWidth: '250px', uniqueId: 'amelipro-illustrated-tile-complement', complementaryInformation: [ { label: 'Dossiers', value: '12' }, { label: 'Restants', value: '3' }, ], }, parameters: { sourceCode: [ { name: 'Template', code: ` `, }, ], }, render: args => ({ components: { AmeliproIllustratedDataTile }, setup() { return { args } }, template: `

Affichage d’informations complémentaires sous le sous-titre grâce à la prop complementaryInformation.

`, }), } // --- Tuile illustrée avec niveau de titre personnalisé --- export const TitreNiveauPersonnalise: Story = { name: 'Niveau de titre personnalisé', args: { iconName: 'document', labelFirstLine: 'Titre niveau 4', labelSecondLine: 'Sous-titre', tileWidth: '250px', uniqueId: 'amelipro-illustrated-tile-title-level', titleLevel: 4, }, parameters: { sourceCode: [ { name: 'Template', code: ` `, }, ], }, render: args => ({ components: { AmeliproIllustratedDataTile }, setup() { return { args } }, template: `

Le niveau du titre est personnalisé grâce à la prop titleLevel.

`, }), } // --- Tuile illustrée avec padding et min-height personnalisés --- export const AvecStylePerso: Story = { name: 'Style personnalisé', args: { iconName: 'chrono', labelFirstLine: 'Style', labelSecondLine: 'personnalisé', tileWidth: '250px', tilePadding: '3rem 2rem', tileMinHeight: '200px', uniqueId: 'amelipro-illustrated-tile-style', }, parameters: { sourceCode: [ { name: 'Template', code: ` `, }, ], }, render: args => ({ components: { AmeliproIllustratedDataTile }, setup() { return { args } }, template: `

Le padding et la hauteur minimale sont personnalisés grâce aux props tilePadding et tileMinHeight.

`, }), }