Sur cette page

Accessibilité

#Lien direct vers cette section

Pris en charge automatiquement

#Lien direct vers cette section
  • role="navigation" et aria-labelledby posés sur le conteneur — la région est identifiable par les lecteurs d’écran sans configuration supplémentaire (WCAG 1.3.1 (ouvre dans un nouvel onglet)Info and Relationships : les relations et structures visuelles doivent être déterminables par programmation ou disponibles en texte.).
  • Le dernier item est automatiquement rendu comme texte (pas de lien), quel que soit son attribut href. aria-current="page" lui est appliqué automatiquement — conforme WCAG 2.4.8 (ouvre dans un nouvel onglet)Location : l'utilisateur doit pouvoir situer sa position dans un ensemble de pages.
  • Les icônes de séparation sont masquées aux lecteurs d’écran (aria-hidden).
  • En mobile, le bouton “dropdown” expose son état via aria-expanded. Son label est vocalisé via une classe .sr-only — accessible sans être visible.

À votre charge

#Lien direct vers cette section
  • Labels descriptifs sur chaque item. Le label est le seul texte vocalisé — évitez les labels génériques (“Page 1”, “Étape”) au profit de libellés qui situent l’utilisateur (“Mon espace personnel”, “Résultats de recherche”).

Comportement responsive

#Lien direct vers cette section

En dessous de 768px, le composant bascule automatiquement vers un affichage condensé :

  • Les liens intermédiaires sont masqués derrière un dropdown.
  • Seul le premier lien reste visible, rendu sous forme de bouton “Retour”.
  • Le dropdown expose son état via aria-expanded — le comportement clavier et vocal est géré automatiquement.

Pour observer ce rendu, utiliser les DevTools du navigateur en mode responsive.

Utilisation

#Lien direct vers cette section

Écouter l’ouverture/fermeture du dropdown mobile

#Lien direct vers cette section

En dessous de 768px, ar-breadcrumb émet ar-breadcrumb-show/ar-breadcrumb-shown (annulable puis confirmé) et ar-breadcrumb-hide/ar-breadcrumb-hidden à chaque changement d’état du dropdown condensé, avec detail: { id } :

const breadcrumb = document.querySelector('ar-breadcrumb');
breadcrumb.addEventListener('ar-breadcrumb-shown', () => console.log('Dropdown ouvert'));
breadcrumb.addEventListener('ar-breadcrumb-hidden', () => console.log('Dropdown fermé'));

Ces événements se déclenchent à chaque changement d’état du dropdown : clic sur le bouton toggle, mise à jour programmatique de la prop open, ou fermeture externe (clic en dehors, Escape) — pratique pour synchroniser un état d’UI externe ou pour de l’analytics.

Exemples

#Lien direct vers cette section

Les exemples de cette page sont affichés avec le thème neutre du starter-kit.

Par défaut

#Lien direct vers cette section

Fil d'ariane avec 3 niveaux, le dernier élément actif.

Voir le code
<ar-breadcrumb>
  <ar-breadcrumb-item label="Accueil" href="/accueil"></ar-breadcrumb-item>
  <ar-breadcrumb-item label="Item 1" href="/item-1"></ar-breadcrumb-item>
  <ar-breadcrumb-item label="Item 2" href="/item-2"></ar-breadcrumb-item>
  <ar-breadcrumb-item label="Item actuel"></ar-breadcrumb-item>
</ar-breadcrumb>

Séparateur personnalisé

#Lien direct vers cette section

Un contenu posé dans le slot separator remplace le « / » par défaut ; il est cloné entre chaque item.

›
Voir le code
<ar-breadcrumb>
  <span slot="separator">›</span>
  <ar-breadcrumb-item label="Accueil" href="/accueil"></ar-breadcrumb-item>
  <ar-breadcrumb-item label="Item-1" href="/journal"></ar-breadcrumb-item>
  <ar-breadcrumb-item label="Item actuel"></ar-breadcrumb-item>
</ar-breadcrumb>

Séparateur en icône

#Lien direct vers cette section

Une icône SVG comme séparateur ; le contenu slotté fixe sa propre taille (width et height).

Voir le code
<ar-breadcrumb>
  <svg slot="separator" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 6l6 6-6 6"/></svg>
  <ar-breadcrumb-item label="Accueil" href="/accueil"></ar-breadcrumb-item>
  <ar-breadcrumb-item label="Item-1" href="/journal"></ar-breadcrumb-item>
  <ar-breadcrumb-item label="Item actuel"></ar-breadcrumb-item>
</ar-breadcrumb>

Démo interactive

#Lien direct vers cette section

Manipulez les attributs pour voir le code et la preview se mettre à jour.

<ar-breadcrumb>
  <ar-breadcrumb-item label="Accueil" href="/accueil"></ar-breadcrumb-item>
  <ar-breadcrumb-item label="Item 1" href="/item-1"></ar-breadcrumb-item>
  <ar-breadcrumb-item label="Item 2" href="/item-2"></ar-breadcrumb-item>
  <ar-breadcrumb-item label="Item actuel"></ar-breadcrumb-item>
</ar-breadcrumb>

Référence API

#Lien direct vers cette section

Import

#Lien direct vers cette section

Si vous utilisez l'autoloader, les composants détectés dans la pages sont chargés automatiquement, donc pas besoin de les importer individuellement.
Pour un import manuel, voici comment vous y prendre.

CDNnpm

Importez ce composant depuis le CDN.

<script type="module" src="https://unpkg.com/@ariane-ui/core/dist/components/breadcrumb/index.js"></script>

Après avoir installé le paquet via npm, vous pouvez importer le composant ainsi :

import '@ariane-ui/core/dist/components/breadcrumb/index.js';

Configuration

#Lien direct vers cette section
Attributs et propriétés 1Slots 3Événements 6

Attributs et propriétés

1 sur 1
openreflète

Contrôle programmatique du panel mobile. Reflété comme attribut HTML. Sans effet en mode desktop.

Type booleanDéfaut false

Slots

1 sur 3home-icon

Icône du bouton "Retour" (mobile). Remplace le chevron SVG par défaut.

2 sur 3separator

Séparateur entre les items en desktop (« / » par défaut).

3 sur 3trigger-icon

Icône du bouton d'ouverture du panel (mobile). Remplace les 3 points SVG par défaut.

Événements

1 sur 6
ar-breadcrumb-showannulabledetail : { id: string | undefined }

Émis avant l'ouverture du dropdown mobile.

2 sur 6
ar-breadcrumb-show-preventeddetail : { id: string | undefined }

Émis si ar-breadcrumb-show est annulé.

3 sur 6
ar-breadcrumb-showndetail : { id: string | undefined }

Émis après l'ouverture du dropdown mobile.

4 sur 6
ar-breadcrumb-hideannulabledetail : { id: string | undefined }

Émis avant la fermeture du dropdown mobile.

5 sur 6
ar-breadcrumb-hide-preventeddetail : { id: string | undefined }

Émis si ar-breadcrumb-hide est annulé.

6 sur 6
ar-breadcrumb-hiddendetail : { id: string | undefined }

Émis après la fermeture du dropdown mobile.

Personnalisation

#Lien direct vers cette section
CSS Parts 8CSS Custom States 1CSS Custom Properties 12

CSS Parts

Utilisez ::part(name) pour styler ces éléments depuis l'extérieur.
Certaines parts indiquent un rôle transverse, partagé avec d'autres composants — voir Personnalisation avancée.
Certaines parts portent un modificateur d'état (--) — voir Personnalisation avancée.

1 sur 8breadcrumb

Racine du composant.

2 sur 8list

Le conteneur `role="list"` des liens (desktop ou mobile).

3 sur 8list--desktop

La liste desktop (variante d'état de `list`).

4 sur 8list--mobile

La liste mobile, affichée dans le panel (variante d'état de `list`).

5 sur 8connector

Point d'ancrage décoratif pour le trait reliant les puces des items dans le panel mobile — position verticale, géométrie et couleur à la charge du thème.

6 sur 8home

Le lien "Retour" vers le premier item (mobile uniquement).

7 sur 8trigger

Le bouton d'ouverture du panel mobile.

8 sur 8panel

Le panel mobile flottant.

CSS Custom States

Utilisez le sélecteur :state(name) sur le tag pour styler ce composant en fonction de son état.
Composable avec ::part() pour cibler un élément interne (ar-breadcrumb:state(name)::part(x)).
Sous Chrome et Edge 125, l'état est exposé avec le préfixe -- (:--name) : voir Compatibilité.

1 sur 1:state(open)

Le panel mobile est ouvert.

CSS Custom Properties

Ce composant utilise un panel flottant, partagé avec d'autres composants, qui expose des custom properties.
Les thèmes peuvent redéfinir ces tokens globalement via :root, ou par composant comme dans cet exemple :

ar-breadcrumb {
    --ar-panel-radius: 1rem;
}
1 sur 9--ar-panel-bg

Fond du panel partagé. Repli système `Canvas` si aucun thème n'est chargé.

2 sur 9--ar-panel-text

Couleur du texte du panel partagé. Repli système `CanvasText` si aucun thème n'est chargé.

3 sur 9--ar-panel-border-color

Couleur de bordure du panel partagé. Repli système `ButtonBorder` si aucun thème n'est chargé.

4 sur 9--ar-panel-radius

Rayon de bordure du panel partagé.

5 sur 9--ar-panel-shadow

Ombre portée du panel partagé.

6 sur 9--ar-panel-padding

Espacement interne du panel partagé.

7 sur 9--ar-panel-min-width

Largeur minimale du panel partagé.

8 sur 9--ar-panel-max-width

Largeur maximale du panel partagé.

9 sur 9--ar-panel-show-duration

Durée de l'animation d'ouverture du panel partagé (respecte `prefers-reduced-motion`).

Il expose également des custom properties propres, personnalisables directement via :root.

1 sur 3--ar-breadcrumb-distance

Espacement entre le trigger et le panel mobile.

2 sur 3--ar-breadcrumb-offset

Décalage latéral du panel mobile.

3 sur 3--ar-breadcrumb-toggle-min-size

Taille minimale (largeur/hauteur) du bouton retour/trigger mobile, repli WCAG 2.5.8 si aucun thème n'est chargé.

Traduction

#Lien direct vers cette section

La langue de ce composant suit l'attribut lang de la page (<html lang>).
Vous pouvez appliquer une langue différente à une instance donnée en posant l'attribut lang directement dessus.
Voir la page Traductions pour le détail du mécanisme et la liste des traductions disponibles.

lang étant un attribut HTML natif, il n'apparaît pas dans le tableau « Attributs & Propriétés ».