Composant de disclosure basé sur l'élément natif <details>/<summary>. Fonctionne sans JavaScript en mode non-contrôlé. Mode contrôlé (open + onToggle) pour la logique exclusive ou orchestrée. Animation fade+slide via @keyframes. 3 variantes, 3 tailles, support icônes et disabled.
Utilisez pnpm add @brickslab/ui-web dans votre projet. Assurez-vous d'avoir React 18+ et les design tokens configurés dans votre CSS global.
Les composants sont-ils accessibles ?
Oui — chaque composant respecte les attributs ARIA (role, aria-selected, aria-label…) et le focus-visible est visible sur tous les éléments interactifs.
Peut-on utiliser les composants en dark mode ?
Absolument. Tous les styles utilisent des design tokens CSS (var(--color-fg), var(--c-surface)…) qui s'adaptent automatiquement selon le thème actif.
Y a-t-il des dépendances requises ?
Seulement React 18+ et react-icons. Aucune librairie CSS externe n'est requise — les styles sont injectés via des balises <style>.
Mode exclusif contrôlé
un seul item ouvert à la fois — géré par useState
Comment installer la librairie ?
Utilisez pnpm add @brickslab/ui-web dans votre projet. Assurez-vous d'avoir React 18+ et les design tokens configurés dans votre CSS global.
Les composants sont-ils accessibles ?
Oui — chaque composant respecte les attributs ARIA (role, aria-selected, aria-label…) et le focus-visible est visible sur tous les éléments interactifs.
Peut-on utiliser les composants en dark mode ?
Absolument. Tous les styles utilisent des design tokens CSS (var(--color-fg), var(--c-surface)…) qui s'adaptent automatiquement selon le thème actif.
Y a-t-il des dépendances requises ?
Seulement React 18+ et react-icons. Aucune librairie CSS externe n'est requise — les styles sont injectés via des balises <style>.
Variantes
bordered · separated · ghost
bordered
Item A
Contenu de l'item A — variante bordered.
Item B
Contenu de l'item B — variante bordered.
Item C
Contenu de l'item C — variante bordered.
separated
Item A
Contenu de l'item A — variante separated.
Item B
Contenu de l'item B — variante separated.
Item C
Contenu de l'item C — variante separated.
ghost
Item A
Contenu de l'item A — variante ghost.
Item B
Contenu de l'item B — variante ghost.
Item C
Contenu de l'item C — variante ghost.
Tailles
sm · md (défaut) · lg — typographie + padding via CSS custom properties
sm
Titre de l'item
Contenu de l'accordéon en taille sm.
Autre item
Un second item pour montrer l'espacement.
md
Titre de l'item
Contenu de l'accordéon en taille md.
Autre item
Un second item pour montrer l'espacement.
lg
Titre de l'item
Contenu de l'accordéon en taille lg.
Autre item
Un second item pour montrer l'espacement.
Avec icônes
prop icon — icône à gauche du titre
Introduction
Présentation générale du projet et de ses objectifs.
Installation
Guide d'installation et de configuration initiale.
Composants
Catalogue complet des composants disponibles.
Sécurité
Bonnes pratiques et recommandations de sécurité.
Performance
Optimisations et conseils de performance.
Configuration
Options avancées et personnalisation.
Disabled
disabled — bloque l'interaction sur un item spécifique
Item disponible
Cet item est interactif et peut être ouvert.
Item désactivé
Ce contenu n'est pas accessible.
Autre item disponible
Ce dernier item fonctionne normalement.
Props — Accordion
Prop
Type
Défaut
Requis
Description
children
React.ReactNode
—
✓
Éléments AccordionItem enfants.
variant
"bordered" | "separated" | "ghost"
"bordered"
—
Style visuel du groupe d'accordéons.
size
"sm" | "md" | "lg"
"md"
—
Taille appliquée à tous les items via CSS custom properties.
Props — AccordionItem
Prop
Type
Défaut
Requis
Description
title
React.ReactNode
—
✓
Contenu du déclencheur — texte ou JSX.
children
React.ReactNode
—
✓
Contenu du panneau révélé.
open
boolean
—
—
État ouvert — contrôlé par le parent. Sans cette prop, comportement natif <details>.
onToggle
(open: boolean) => void
—
—
Callback appelé avec le nouvel état. Requis si open est fourni.
disabled
boolean
false
—
Bloque l'interaction — empêche ouverture et fermeture.