Skip to content

Panel ​

Le composant Panel fournit un conteneur structuré et accessible pour regrouper du contenu sémantiquement cohérent.
Il peut être rendu sous forme de <section> ou de <div> selon le contexte, et inclut des slots dédiés pour la tête, le contenu principal et le pied.

✨ Fonctionnalités ​

  • Rendu sous <section> ou <div>
  • Fournit des slots head, default et footer
  • Compatible avec le thème clair/sombre
  • Compatible avec les langues RTL
  • Respecte les recommandations WCAG 2.1 AA
  • Prend en charge les rôles ARIA et les titres accessibles

🚀 Exemples d’utilisation ​

Exemple de base ​

vue
<template>
  <SuPanel>
    <template #head>
      <SuHeading level="3">Informations principales</SuHeading>
    </template>

    <p>Voici le contenu principal du panneau.</p>

    <template #footer>
      <button>En savoir plus</button>
    </template>
  </SuPanel>
</template>

API ​

Props ​

PropTypeDéfautDescription
asstring'section'Définit la balise HTML utilisée pour le conteneur principal (section ou div).
outlinedbooleanfalseAjoute un contour au panneau.
elevatedbooleanfalseAjoute une ombre pour un effet de profondeur.
classstring-Classes CSS supplémentaires.

Slots ​

SlotDescription
headContenu de l’en-tête du panneau (souvent un Heading ou un titre)
defaultContenu principal du panneau
footerZone du bas du panneau (boutons, liens, résumé, etc.)

🧱 Exemple avec options de style ​

vue
<SuPanel outlined elevated>
  <template #head>
    <SuHeading level="3">Résumé de la commande</SuHeading>
  </template>

  <p>Montant total : 85,90 €</p>

  <template #footer>
    <button>Valider</button>
  </template>
</SuPanel>

Bonnes pratiques ​

  • Utilisez la balise <section> pour des blocs sémantiquement distincts.
  • Utilisez la prop as="div" pour des panneaux purement visuels ou imbriqués.
  • Le slot head devrait toujours contenir un titre accessible (Heading ou équivalent).

Attributs d accessibilité ​

AttributRôle / UtilitéExemple
roleDéfinit la fonction du panneau si nécessaire (region, group)role="region"
aria-labelledbyLie le panneau à un titre visible pour les lecteurs d’écranaria-labelledby="panelTitle"
aria-describedbyFournit un résumé optionnel du contenu du panneauaria-describedby="panelDesc"

Attributs HTML de validation ​

AttributDescription
idIdentifiant unique pour la section
langLangue du contenu si différente du document
dirContrôle de la direction du texte (ltr, rtl, auto)

Accessibilité ​

Le composant Panel respecte les critères WCAG 2.1 niveau AA et suit les bonnes pratiques W3C ARIA.

Fonctionnalités d accessibilité

  • Utilisation de rôles sémantiques (section, region) selon le contexte.
  • Association optionnelle à un titre via aria-labelledby.
  • Espacement et contraste conformes aux normes pour la lisibilité.
  • Ciblage tactile conforme à la recommandation de 44×44px minimum.

Exemples d’usage avancés ​

Panneaux imbriqués

vue
<SuPanel outlined>
  <template #head>
    <SuHeading level="3">Section principale</SuHeading>
  </template>
  <SuPanel as="div" outlined>
    <template #head>
      <SuHeading level="3">Sous-section</SuHeading>
    </template>
    <p>Contenu secondaire.</p>
  </SuPanel>
</SuPanel>

Panneau dynamique

vue
<SuPanel v-if="showPanel" elevated>
  <template #head>
    <SuHeading level="3">Notifications</SuHeading>
  </template>
  <ul>
    <li v-for="notif in notifications" :key="notif.id">
      {{ notif.message }}
    </li>
  </ul>
</SuPanel>

Publié sous licence MIT.