Marker
Des notes discrètes entre les contenus, comme les séparateurs de date et les événements système, avec des dates et heures fixes qui se lisent « Aujourd’hui » ou « Hier ».
pnpm dlx shadcn@latest add https://hextaui.com/r/marker.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 class-variance-authority cnCopiez et collez le code suivant dans votre projet.
components/ui/marker.tsx Mettez à jour les chemins d’import selon la configuration de votre projet.
Variantes
default est une note discrète, separator la centre entre deux filets et border la souligne comme un titre de section.
Dates collantes
Avec sticky, un marqueur reste en haut de sa zone de défilement. Une fois collé, ses lignes s'estompent et le label devient une pastille flottante pour rester lisible au-dessus des messages. Placez chaque jour dans sa propre section pour que la date suivante repousse la précédente.
Dates relatives
<MarkerTime /> rend un <time> qui affiche Aujourd'hui, Hier, un jour de la semaine s'il date de moins d'une semaine, puis une date courte. Il se met à jour à minuit. Passez format pour votre propre formulation.
Activité
Rendez les marqueurs en éléments de liste pour un journal d'activité. Les liens à l'intérieur sont soulignés tant qu'ils ne sont pas survolés.
Contenu long
Les notes passent à la ligne et les chaînes sans espace sont coupées au lieu d'élargir la mise en page. Les lignes de séparation gardent une longueur minimale de chaque côté.
De droite à gauche
Les icônes et le texte suivent le sens de lecture.
- Les marqueurs sont du texte simple, les lecteurs d'écran les lisent donc sur place. Les icônes leur sont masquées.
<MarkerTime />conserve l'instant exact dansdateTimetout en affichant un libellé lisible.- La pastille collante apparaît sans mouvement quand la réduction des animations est activée.
| Prop | Type | Par défaut |
|---|---|---|
variant | "default" | "separator" | "border" | "default" |
stickySe colle en haut de la zone de défilement et devient une pastille une fois collé. | boolean | false |
render | ReactElement | (props, state) => ReactElement | <div> |
| Attribut | Description |
|---|---|
data-slot="marker" | Cible les marqueurs en CSS. |
data-variant | La variante actuelle. |
data-sticky | Présent quand sticky est activé. |
data-stuck | Présent tant que le marqueur est collé en haut. |
--marker-sticky-top | Distance depuis le haut une fois collé. 0.5rem par défaut. |
| Attribut | Description |
|---|---|
data-slot="marker-content" | Le texte. Devient la pastille une fois collé. |
| Attribut | Description |
|---|---|
data-slot="marker-icon" | Une boîte d'icône de 16px, masquée aux lecteurs d'écran. |
| Prop | Type | Par défaut |
|---|---|---|
dateObligatoire. Tout ce que new Date() accepte. | Date | string | number | – |
localeFixe par défaut, pour que le serveur et le navigateur s'accordent. | Intl.LocalesArgument | "en-US" |
formatRemplace le libellé relatif par le vôtre. | (date: Date) => ReactNode | – |
| Attribut | Description |
|---|---|
data-slot="marker-time" | L'élément time, avec un dateTime ISO. |
- AttachmentDes cartes de fichiers et d’images pour les uploads, avec progression, états, actions, un déclencheur sur toute la carte et des noms qui conservent leur extension.
- BubbleDes bulles de messages de chat avec variantes, coins groupés, réactions et place pour du contenu interactif.
- MessageUne ligne de message de chat avec avatar, nom, bulles et statut, où les nouveaux messages remontent depuis le côté de l’expéditeur.
- Message scrollerUne zone de défilement de chat qui suit les nouveaux messages, garde votre position quand vous remontez et compte les messages manqués sur le bouton de retour en bas.