import type { Meta, StoryObj } from '@storybook/vue3' import { VCard, VCardTitle, VCardText, VCardActions } from 'vuetify/components' import { VBtn } from 'vuetify/components' const meta: Meta = { title: 'Composants/Composants Vuetify/VCard', tags: ['!dev'], component: VCard, parameters: { docs: { source: { transform: (src: string) => { // Extract only the template part const templateMatch = src.match(/template:\s*`([\s\S]*?)`/) if (templateMatch && templateMatch[1]) { return templateMatch[1] .trim() .replace(//g, '') .replace(//g, '') .replace(//g, '') .replace(//g, '') .replace(//g, '') } return src }, }, }, }, argTypes: { color: { control: { type: 'text' }, description: 'Couleur de la carte', }, variant: { control: { type: 'select' }, options: ['elevated', 'flat', 'tonal', 'outlined', 'text', 'plain'], description: 'Variante de style de la carte', }, elevation: { control: { type: 'number' }, description: 'Élévation de la carte (ombre)', }, disabled: { control: { type: 'boolean' }, description: 'Désactive la carte', }, loading: { control: { type: 'boolean' }, description: 'Affiche un état de chargement', }, rounded: { control: { type: 'select' }, options: ['0', 'sm', 'md', 'lg', 'xl', 'pill', 'circle'], description: 'Arrondi des coins de la carte', }, }, } export default meta type Story = StoryObj export const Primary: Story = { render: args => ({ components: { VCard, VCardTitle, VCardText }, setup() { return { args } }, template: ` Carte Primary Cette carte utilise la couleur "primary". `, }), args: { color: 'primary', }, parameters: { docs: { source: { code: ` Carte Primary Cette carte utilise la couleur "primary". `, }, }, }, } export const PrimaryTonal: Story = { render: args => ({ components: { VCard, VCardTitle, VCardText }, setup() { return { args } }, template: ` Carte Primary Tonal Cette carte utilise la couleur "primary" et la variant "tonal". `, }), args: { color: 'primary', variant: 'tonal', }, parameters: { docs: { source: { code: ` Carte Primary Tonal Cette carte utilise la couleur "primary" et la variant "tonal". `, }, }, }, } export const PrimaryElevated: Story = { render: args => ({ components: { VCard, VCardTitle, VCardText }, setup() { return { args } }, template: ` Carte Primary Elevated Cette carte utilise la couleur "primary" et la variant "elevated". `, }), args: { color: 'primary', variant: 'elevated', elevation: 4, }, parameters: { docs: { source: { code: ` Carte Primary Elevated Cette carte utilise la couleur "primary" et la variant "elevated". `, }, }, }, } export const PrimaryOutlined: Story = { render: args => ({ components: { VCard, VCardTitle, VCardText, VCardActions, VBtn }, setup() { return { args } }, template: ` Carte Primary Outlined Cette carte utilise la couleur "primary" et la variant "outlined". Elle contient également des boutons d'action. Annuler Confirmer `, }), args: { color: 'primary', variant: 'outlined', }, parameters: { docs: { source: { code: ` Carte Primary Outlined Cette carte utilise la couleur "primary" et la variant "outlined". Elle contient également des boutons d'action. Annuler Confirmer `, }, }, }, } // États export const Loading: Story = { render: args => ({ components: { VCard, VCardTitle, VCardText }, setup() { return { args } }, template: ` Carte Primary en chargement Cette carte utilise la couleur "primary" et affiche un état de chargement. `, }), args: { loading: true, color: 'primary', }, parameters: { docs: { source: { code: ` Carte Primary en chargement Cette carte utilise la couleur "primary" et affiche un état de chargement. `, }, }, }, } export const Disabled: Story = { render: args => ({ components: { VCard, VCardTitle, VCardText, VCardActions, VBtn }, setup() { return { args } }, template: ` Carte désactivée Cette carte est désactivée. Action `, }), args: { disabled: true, }, parameters: { docs: { source: { code: ` Carte désactivée Cette carte est désactivée. Action `, }, }, }, }