import type { Meta, StoryObj } from '@storybook/vue3' import PageContainer from './PageContainer.vue' import { VCard, VDivider } from 'vuetify/components' import HeaderBar from '../HeaderBar/HeaderBar.vue' import FooterBar from '../FooterBar/FooterBar.vue' const meta = { title: 'Composants/Layout/PageContainer', component: PageContainer, parameters: { layout: 'fullscreen', controls: { exclude: ['spacingClass', 'containerSize', 'alignCenter'] }, }, argTypes: { size: { options: ['xl', 'lg', 'md', 'sm', 'xs'], control: { type: 'select' }, default: undefined, }, spacing: { options: ['xl', 'lg', 'md', 'sm', 'xs'], control: { type: 'select' }, default: undefined, }, color: { options: ['transparent', 'primary', 'secondary', 'accent', 'error', 'info', 'success', 'warning'], control: { type: 'select' }, default: 'transparent', }, uniqueId: { control: { type: 'text' }, default: undefined, }, role: { options: ['main', 'region', 'navigation', 'contentinfo', 'banner'], control: { type: 'text' }, default: undefined, }, }, } as Meta export default meta type Story = StoryObj export const Default: Story = { parameters: { sourceCode: [ { name: 'Template', code: ` `, }, { name: 'Script', code: ` `, }, ], }, args: { default: 'Contenu de la page', }, render: (args) => { return { components: { PageContainer }, setup() { return { args } }, template: ` {{ args.default }} `, } }, } export const Size: Story = { parameters: { sourceCode: [ { name: 'Template', code: ` `, }, { name: 'Script', code: ` `, }, ], }, args: { default: 'Contenu de la page', size: 'sm', }, render: (args) => { return { components: { PageContainer }, setup() { return { args } }, template: ` {{ args.default }} `, } }, } export const Color: Story = { parameters: { sourceCode: [ { name: 'Template', code: ` `, }, { name: 'Script', code: ` `, }, ], }, args: { default: 'Contenu de la page', color: 'primary', }, render: (args) => { return { components: { PageContainer }, setup() { return { args } }, template: `
{{ args.default }}
`, } }, } export const Card: Story = { parameters: { sourceCode: [ { name: 'Template', code: ` `, }, { name: 'Script', code: ` `, }, ], }, args: { default: 'Contenu de la page', }, render: (args) => { return { components: { PageContainer, VCard }, setup() { return { args } }, template: ` {{ args.default }} `, } }, } export const WithAriaRole: Story = { parameters: { sourceCode: [ { name: 'Template', code: ` `, }, { name: 'Script', code: ` `, }, ], }, args: { role: 'region', uniqueId: 'main-content', ariaLabelledby: 'main-content-title', }, render: (args) => { return { components: { PageContainer }, setup() { return { args } }, template: `

Contenu principal

Contenu de la page

`, } }, } export const WithHeaderAndFooter: Story = { parameters: { layout: 'fullscreen', sourceCode: [ { name: 'Template', code: ` `, }, { name: 'Script', code: ` `, }, ], }, render: (args) => { return { components: { PageContainer, HeaderBar, FooterBar, VDivider }, setup() { return { args } }, template: `

Bienvenue dans votre espace professionnel

Le lorem ipsum est, en imprimerie, une suite de mots sans signification utilisée à titre provisoire pour calibrer une mise en page, le texte définitif venant remplacer le faux-texte dès qu'il est prêt ou que la mise en page est achevée. Généralement, on utilise un texte en faux latin, qui permet de faire office de texte d'attente.

L'avantage de le mettre en latin est que l'opérateur sait au premier coup d'œil que la page contenant ces lignes n'est pas valide, et surtout l'attention du client n'est pas dérangée par le contenu, il demeure concentré seulement sur l'aspect graphique. Ce texte a pour autre avantage d'utiliser des mots de longueur variable, essayant de simuler une occupation normale.

La méthode simplifiée consiste à ne pas s'embarrasser de prétentions philosophiques, et à composer un texte en français présentable. On peut aussi utiliser des générateurs de texte automatiques pour obtenir du contenu aléatoire, mais il faut veiller à ce que le résultat soit cohérent et agréable à lire.

Ce contenu supplémentaire permet de bien visualiser l'espacement entre le contenu principal et le pied de page. Il est important de prévoir suffisamment d'espace pour que la mise en page reste harmonieuse et que le contenu soit facilement lisible. Le texte d'attente peut être remplacé par du texte réel dès que celui-ci est disponible.

`, } }, }