Navigation ​

Composants de navigation : fil d'Ariane, onglets, pagination, barre de commandes et en-tête de page.

BcBreadcrumb ​

vue
<BcBreadcrumb :items="[
  { label: 'Accueil', href: '#' },
  { label: 'Utilisateurs', href: '#' },
  { label: 'Alice Martin' },
]" />

Props ​

PropTypeDéfautDescription
itemsBreadcrumbItem[]— (requis)Éléments { label, href? }
ariaLabelstring"Fil d'Ariane"Label ARIA
separatorstring">"Séparateur

BcTabs ​

Composant d'onglets. L'onglet actif est distingué par un trait gradient 2px en bas, cohérent avec l'item actif de la side navigation.

Variante simple ​

vue
<script setup>
const activeTab = ref('general')
const tabs = [
  { id: 'general',       label: 'Général' },
  { id: 'security',      label: 'Sécurité' },
  { id: 'billing',       label: 'Facturation' },
  { id: 'notifications', label: 'Notifications' },
]
</script>

<BcTabs v-model="activeTab" :tabs="tabs">
  <template #panel-general>
    <!-- contenu de l'onglet Général -->
  </template>
  <template #panel-security>
    <!-- contenu de l'onglet Sécurité -->
  </template>
</BcTabs>

Variante avec badges ​

Les badges permettent d'afficher des compteurs sur chaque onglet.

vue
<script setup>
const tabs = [
  { id: 'active',  label: 'Dossiers actifs', badge: 12 },
  { id: 'pending', label: 'En attente',       badge: 4  },
  { id: 'archive', label: 'Archivés',         badge: 38 },
]
</script>

<BcTabs v-model="activeTab" :tabs="tabs" />

Props ​

PropTypeDéfautDescription
tabsTabItem[]— (requis)Onglets { id, label, badge?, disabled? }
modelValuestring""Onglet actif (v-model)
ariaLabelstring"Onglets"Label ARIA

Type TabItem ​

ts
interface TabItem {
  id: string
  label: string
  badge?: string | number   // compteur affiché sur l'onglet
  disabled?: boolean
}

Slots ​

SlotPropsDescription
#panel-{id}{ tab }Contenu du panneau pour l'onglet id
#panel{ tab }Contenu générique (fallback si #panel-{id} absent)

Events ​

EventPayloadDescription
update:modelValuestringChangement d'onglet (v-model)
changestringIdem, pratique pour les side-effects

BcPagination ​

vue
<BcPagination v-model="currentPage" :total-pages="12" />

Props ​

PropTypeDéfautDescription
modelValuenumber— (requis)Page courante (v-model)
totalPagesnumber— (requis)Nombre total de pages
maxVisiblePagesnumber7Pages visibles
ariaLabelstring"Pagination"Label ARIA
prevLabelstring"Précédent"Label bouton précédent
nextLabelstring"Suivant"Label bouton suivant

BcPageHeader ​

Structure le haut de chaque page métier avec navigation, contexte et actions principales. Le breadcrumb s'insère via le slot #breadcrumb.

Variante avec actions ​

vue
<BcPageHeader
  title="Corp Alpha — SAS Nextera"
  subtitle="Dossier créé le 15/01/2026 · Responsable : a.lavon"
>
  <template #breadcrumb>
    <BcBreadcrumb :items="[
      { label: 'Dashboard', href: '#' },
      { label: 'Onboarding', href: '#' },
      { label: 'Corp Alpha' },
    ]" />
  </template>
  <template #actions>
    <BcButton variant="ghost">Exporter</BcButton>
    <BcButton variant="primary">Modifier le dossier</BcButton>
  </template>
</BcPageHeader>

Props ​

PropTypeDéfautDescription
titlestring— (requis)Titre H1 de la page
subtitlestring""Sous-titre contextuel
metastring""Métadonnée en monospace (ex: ID, date)

Slots ​

SlotDescription
#breadcrumbFil d'Ariane (utiliser <BcBreadcrumb>)
defaultContenu complémentaire sous le titre
#actionsBoutons d'action alignés à droite

BcCommandBar ​

Barre d'actions horizontale pour regrouper des boutons, champs de recherche et filtres. Les enfants vont dans le slot par défaut.

Mode actions ​

vue
<BcCommandBar>
  <BcButton variant="ghost" size="sm">Importer</BcButton>
  <BcButton variant="ghost" size="sm">Exporter</BcButton>
  <BcButton variant="primary" size="sm">Nouveau dossier</BcButton>
</BcCommandBar>

Mode compact (dense) ​

vue
<BcCommandBar :dense="true">
  <BcButton variant="ghost" size="sm">Filtrer</BcButton>
  <BcButton variant="primary" size="sm">+ Nouveau</BcButton>
</BcCommandBar>

Props ​

PropTypeDéfautDescription
wrapbooleantrueRetour à la ligne si débordement
densebooleanfalseEspacement réduit (min-height 38px vs 44px)

Accordion en contexte ​

Le composant BcAccordion est utilisé dans les pages de navigation pour les contenus repliables. La documentation canonique (API complète + variantes) est centralisée ici :