Separator
Un trait fin qui sépare le contenu horizontalement ou verticalement, avec un libellé facultatif et un mode décoratif pour les lignes purement visuelles.
HextaUI
Components that feel great to use and to write.
pnpm dlx shadcn@latest add https://hextaui.com/r/separator.jsonAjoute le composant, les tokens de thème HextaUI et les composants HextaUI dont il dépend.
Ajoutez les tokens de thème à votre CSS global, si ce n’est pas déjà fait.
Installez les dépendances.
pnpm add @base-ui/react cnCopiez et collez le code suivant dans votre projet.
components/ui/separator.tsx Mettez à jour les chemins d’import selon la configuration de votre projet.
La ligne fait un pixel physique d'épaisseur sur tous les écrans, le même filet que les bordures, et s'aligne donc avec les cartes et champs alentour. Espacez-la avec le gap du parent ou une marge.
Vertical
Avec orientation="vertical", la ligne s'étire à la hauteur de sa rangée flex. En dehors d'une rangée flex, donnez-lui une hauteur.
Label
Les enfants se placent au milieu de la ligne, qui remplit l'espace des deux côtés.
Alignement
align place le label au start ou à l'end, ce qui convient aux en-têtes de section et de date. Les icônes sont dimensionnées sur le texte.
Label vertical
Un séparateur vertical avec label garde le texte droit et trace la ligne au-dessus et en dessous.
Décoratif
decorative masque aux lecteurs d'écran une ligne purement visuelle, pour qu'ils n'annoncent pas un séparateur entre des lignes qui se lisent déjà bien seules.
En ligne
Utilisez render pour produire un <span> là où un <div> n'est pas autorisé, comme dans un paragraphe.
Contenu long
Les longs labels passent à la ligne et les chaînes sans espace sont coupées, tandis qu'un court tronçon de ligne reste visible de chaque côté.
De droite à gauche
Début et fin suivent le sens de lecture.
- Un séparateur simple a
role="separator"etaria-orientation, comme un<hr>. - Avec
decorative, il reçoitrole="none"et les lecteurs d'écran l'ignorent. - Un séparateur avec label n'a pas de rôle. Le rôle separator rendrait son texte présentationnel, si bien que le label est lu comme du texte ordinaire.
Construit sur le Separator de Base UI. Rend un <div> et accepte ses attributs.
| Prop | Type | Par défaut |
|---|---|---|
orientation | "horizontal" | "vertical" | "horizontal" |
decorativeMasque la ligne aux lecteurs d'écran quand elle est purement visuelle. | boolean | false |
childrenUn label tracé dans la ligne. Omettez-le pour une ligne simple. | ReactNode | – |
alignOù le label se place le long de la ligne. | "start" | "center" | "end" | "center" |
className | string | (state) => string | – |
render | ReactElement | (props, state) => ReactElement | <div> |
| Attribut | Description |
|---|---|
data-slot="separator" | Ciblez les séparateurs en CSS. |
data-orientation | "horizontal" ou "vertical". |
data-content | Présent quand le séparateur a un label. |
data-align | L'alignement du label, quand il y en a un. |
data-slot="separator-label" | L'élément qui enveloppe le label. |
- AccordionDes titres empilés qui révèlent chacun un panneau, avec un mouvement de hauteur réversible en cours de route et des panneaux qui restent consultables par la recherche une fois fermés.
- Aspect ratioUne boîte qui garde sa forme avant le chargement du média, scintille pendant le chargement, fait apparaître le média en fondu et bascule sur un repli en cas d’échec.
- CarouselDes slides à scroll-snap natif avec inertie au toucher, glisser à la souris, flèches du clavier, points, miniatures et une lecture automatique qui se met en pause au bon moment.
- CollapsibleUn panneau qui s’affiche et se masque avec un mouvement de hauteur réversible en cours de route, sans faire sauter la mise en page.
- ResizableDes panneaux que l’on peut écarter à la main, avec un séparateur discret qui s’éveille au survol, des tailles qui glissent à la réinitialisation ou au repli, et des mises en page persistantes.
- Scroll areaUn défilement natif avec une barre de défilement minimale, des bords qui s’estompent seulement là où il y a plus à voir, et un aperçu facultatif qui coupe le dernier élément en deux.