|
| 1 | +# Image - `DsfrPicture` |
| 2 | + |
| 3 | +Les contenus médias désignent vos contenus photos et vidéos. Lorsqu’ils sont intégrés à une page de contenu, il est recommandé de suivre les règles décrites ci-dessous. |
| 4 | + |
| 5 | +🏅 La documentation sur les contenus médias sur le [DSFR](https://www.systeme-de-design.gouv.fr/elements-d-interface/composants/contenus-medias) |
| 6 | + |
| 7 | +<VIcon name="vi-file-type-storybook" /> La story sur le contenu média image (picture) sur le storybook de [VueDsfr](https://storybook.vue-ds.fr/?path=/docs/composants-dsfrpicture--docs) |
| 8 | + |
| 9 | +## 🌟 Introduction |
| 10 | + |
| 11 | +Le composant `DsfrPicture` permet d'afficher une image de manière responsive, avec une légende optionnelle. Il est conçu pour être flexible, offrant des options pour personnaliser la taille, le ratio, et le contenu de l'image. Ce composant est idéal pour intégrer des images dans une interface utilisateur tout en garantissant leur adaptabilité et accessibilité. |
| 12 | + |
| 13 | +Le `DsfrPicture` utilise une structure HTML sémantique avec `<figure>` et `<figcaption>` pour améliorer l'accessibilité. Il applique des classes CSS conditionnelles pour ajuster la taille et le ratio de l'image en fonction des props fournies. Le slot par défaut permet une personnalisation avancée du contenu de l'image. |
| 14 | + |
| 15 | +## 📐 Structure |
| 16 | + |
| 17 | +- `<DsfrPicture>` : Le composant principal. |
| 18 | + - Affiche une image avec un ratio et une taille personnalisés. |
| 19 | + - Inclut une légende sous l'image. |
| 20 | + - Utilise un slot pour permettre l'insertion d'un contenu personnalisé, comme un SVG. |
| 21 | + |
| 22 | +## 🛠️ Props |
| 23 | + |
| 24 | +| Propriété | Type | Description | Valeur par défaut | |
| 25 | +|-----------|-------------------------------------|-----------------------------------------------------------|-------------------| |
| 26 | +| `alt` | `string` | Texte alternatif pour l'image, utilisé pour l'accessibilité. | `''` | |
| 27 | +| `legend` | `string` | Légende à afficher sous l'image. | `''` | |
| 28 | +| `size` | `'small' \| 'medium' \| 'large'` | Taille de l'image (petite, moyenne, ou grande). | `'medium'` | |
| 29 | +| `src` | `string` | URL de l'image à afficher. | `obligatoire` | |
| 30 | +| `title` | `string` | Titre de l'image, affiché au survol. | `''` | |
| 31 | +| `ratio` | `string` | Ratio de l'image (par exemple, '16x9'). | `'16x9'` | |
| 32 | + |
| 33 | +## 📡 Événements |
| 34 | + |
| 35 | +Ce composant ne déclenche pas d'événements spécifiques. |
| 36 | + |
| 37 | +## 🧩 Slots |
| 38 | + |
| 39 | +- `default` : Slot pour insérer un contenu personnalisé (comme une image SVG). Si aucun contenu n'est fourni, l'image spécifiée par `src` est utilisée. |
| 40 | + |
| 41 | +## 📝 Exemples |
| 42 | + |
| 43 | +::: code-group |
| 44 | + |
| 45 | +<Story data-title="Démo" min-h="400px"> |
| 46 | + <DsfrPictureDemo /> |
| 47 | +</Story> |
| 48 | + |
| 49 | +<<< docs-demo/DsfrPictureDemo.vue [Code de la démo] |
| 50 | + |
| 51 | +::: |
| 52 | + |
| 53 | +## ⚙️ Code source du composant |
| 54 | + |
| 55 | +::: code-group |
| 56 | + |
| 57 | +<<< DsfrPicture.vue |
| 58 | +<<< DsfrMedia.types.ts |
| 59 | + |
| 60 | +::: |
| 61 | + |
| 62 | +<script setup lang="ts"> |
| 63 | +import DsfrPictureDemo from './docs-demo/DsfrPictureDemo.vue' |
| 64 | +</script> |
0 commit comments