|
| 1 | +# Carte - `DsfrCard` |
| 2 | + |
| 3 | +La carte est un aperçu d'une page et un lien vers cette dernière. Elle fait généralement partie d'une liste de contenus similaires. |
| 4 | + |
| 5 | +La carte existe en trois tailles (LG, MD, SM) et deux formats (horizontal et vertical) déclinés sur deux supports (desktop et mobile). Les cartes horizontales sont réservées au desktop (en mobile, une carte horizontale devient verticale). |
| 6 | + |
| 7 | +## Structure |
| 8 | + |
| 9 | +Une carte se compose des éléments suivants : |
| 10 | + |
| 11 | +- un titre (prop **`title`**, de type `string`), reprenant celui de l’objet visé (page de destination, action, site). |
| 12 | +- un lien (prop **`link`**, de type `string`), sur le titre de la carte. |
| 13 | +- une image (prop **`imgSrc`**, de type `string`), issue ou en lien avec la page de destination à laquelle on peut ajouter une description textuelle de l'image (prop **`altImg`**, de type `string`), ce texte alternatif sera affiché sur la page si l'image ne peut pas être chargée et sera très utile pour l'accessibilité. |
| 14 | +- une zone destinée à d'éventuels détails (prop **`detail`**, de type `string`). |
| 15 | +- une description (prop **`description`**, de type `string`), de 5 lignes maximum (tronquée au-delà). |
| 16 | +- une icône illustrative (par défaut, une flèche) - optionnelle peut se désactiver (prop **`noArrow`**, de type `boolean`). |
| 17 | +- une zone d’action, composée de boutons (prop **`buttons`**, un tableau d'objets pouvant contenir les props à passer à chaque bouton (cf le composant `DsfrButton` afin de connaître les props à passer)). |
| 18 | +- une zone d’action, composée de liens (prop **`linksGroup`**, un tableau d'objets composé de la propriété **`label`** (`string`),et de **`link`** (`string`) s'il s'agit d'un lien interne au site ou à l'application, ou de **`href`** (`string`) s'il s'agit d'un lien externe). |
| 19 | + |
| 20 | +Autres props : |
| 21 | + |
| 22 | +- la taille de la carte (prop **`size`**, de type `string`) qui peut prendre plusieurs valeurs: `md`, `medium`, `large`, `lg`, `sm`, `small`. |
| 23 | +- la balise du titre (prop **`titleTag`**, de type `string`) afin de respecter la hiérarchie des titres. Valeurs possibles: `h1`, `h2`, `h3`, `h4`, `h5`, `h6`. |
| 24 | +- l'orientation de la carte (verticale par défaut) (prop **`horizontal`**, de type `boolean`) pour la basculer à l'horizontal. |
| 25 | +- une variante de carte indiquant que l’évènement de clic lancera un téléchargement (prop **`download`**, de type `boolean`). |
| 26 | + |
| 27 | +## Les props |
| 28 | + |
| 29 | +| nom | type | défaut | obligatoire | |
| 30 | +| ---------------------- | --------- | --------------- | ----------- | |
| 31 | +| `altImg` | *`string`* | | non | |
| 32 | +| `buttons` | *`object`* | | non | |
| 33 | +| `detail` | *`string`* | | non | |
| 34 | +| `description` | *`string`* | | oui | |
| 35 | +| `download` | *`boolean`* | | non | |
| 36 | +| `horizontal` | *`boolean`* | | non | |
| 37 | +| `imgSrc` | *`string`* | | non | |
| 38 | +| `link` | *`string`* | | non | |
| 39 | +| `linksGroup` | *`object`* | | non | |
| 40 | +| `size` | *`string`* | `'md'` | non | |
| 41 | +| `title` | *`string`* | | oui | |
| 42 | +| `titleTag` | [*`TitleTag`*](/docs/types.md#title-tag "'h1' \| 'h2' \| 'h3' \| 'h4' \| 'h5' \| 'h6'") | `'h3'` | non | |
| 43 | + |
| 44 | +## Un exemple complet |
| 45 | + |
| 46 | +<Story data-title="Démo" min-h="530px"> |
| 47 | + <DsfrCardDemo /> |
| 48 | +</Story> |
| 49 | + |
| 50 | +<<< docs-demo/DsfrCardDemo.vue [Code de la démo] |
| 51 | + |
| 52 | +<script setup lang="ts"> |
| 53 | +import DsfrCardDemo from './docs-demo/DsfrCardDemo.vue' |
| 54 | +</script> |
0 commit comments