LogStream
Un journal d'exécution qui se lit en direct.
Timeline raconte des événements ; ici, on suit une exécution : heure en colonne, niveau, police à chasse fixe, essais repliables. Le suivi de la fin se met en pause dès qu'on remonte — lire une erreur pendant que le journal défile sous les yeux est impossible — et un bouton dit combien de lignes sont arrivées entre-temps.
Installation
bash
sia-ui add log-streamOu par le paquet, sans rien copier :
tsx
import { LogStream } from "@sia-ui/react-web";Props
| Prop | Type | Défaut | Description |
|---|---|---|---|
* lines | LogLine[] | — | |
ariaLabel | string | — | Le nom de la zone pour les lecteurs d'écran. |
className | string | — | |
copiedLabel | string | — | |
copyButtonProps | Partial<Omit<ButtonProps, "children" | "onClick">> | — | Le bouton de copie. Son action et son libellé suivent la copie. |
copyLabel | string | — | |
defaultCollapsedGroups | string[] | — | Les groupes repliés au premier affichage. |
defaultFollow | boolean | true | Vrai par défaut : un journal d'exécution se lit par la fin. |
defaultLevels | LogLevel[] | ["debug", "info", "warn", "error", "success"] | Tous par défaut. |
emptyStateProps | EmptyStateProps | — | L'état vide : pas encore de ligne, ou aucune qui corresponde. |
follow | boolean | — | Défiler jusqu'à la dernière ligne à chaque arrivée. Contrôlé quand il est fourni ; remonter dans le journal appelle alors onFollowChange(false). |
followLabel | string | — | |
followToggleProps | Partial<Omit<ToggleProps, "pressed" | "defaultPressed" | "onPressedChange">> | — | La bascule « Suivre la fin ». Son état est celui du suivi. |
groupButtonProps | Partial<Omit<ButtonProps, "children" | "onClick" | "aria-controls" | "aria-expanded">> | — | L'en-tête repliable de chaque groupe. aria-expanded et aria-controls restent calculés groupe par groupe. |
height | string | number | 20rem | La hauteur de la zone défilante. 20rem par défaut. |
levelFilterProps | Partial<Omit<ToggleGroupProps, "value" | "defaultValue" | "onValueChange" | "options" | "type">> | — | Le filtre par niveau. Sans ses options ni sa valeur, tirées des niveaux, ni son type : on en retient plusieurs à la fois. |
levelLabels | Partial<Record<LogLevel, string>> | — | Les libellés des niveaux, dans la colonne comme dans la copie. |
levels | LogLevel[] | — | Les niveaux affichés. Contrôlé quand il est fourni. |
loading | boolean | false | Le premier chargement : rien n'est encore arrivé. |
loadingLabel | string | — | |
locale | string | — | La langue du format horaire. Par défaut, celle de la locale SIA. |
maxLines | number | 1000 | Le nombre de lignes gardées. Au-delà, les plus anciennes tombent. C'est la réponse à un journal qui grossit sans fin, plutôt qu'une virtualisation : mille lignes se dessinent sans peine, et une liste virtuelle casserait la recherche du navigateur et la sélection au clavier. 1000 par défaut. |
onFollowChange | (follow: boolean) => void | — | |
onLevelsChange | (levels: LogLevel[]) => void | — | |
resumeButtonProps | Partial<Omit<ButtonProps, "children" | "onClick">> | — | Le bouton « Reprendre le suivi », affiché quand le suivi est en pause. |
resumeLabel | string | — | |
searchInputProps | Partial<Omit<SearchInputProps, "value" | "defaultValue" | "onValueChange">> | — | La recherche. Sa valeur reste celle du journal, qui filtre avec. |
searchPlaceholder | string | — | |
spinnerProps | Partial<Omit<SpinnerProps, "label">> | — | Les indicateurs de chargement et de flux en cours. Sans label. |
streaming | boolean | false | Des lignes arrivent encore. Un indicateur discret le dit. |
streamingLabel | string | — | |
toolbar | boolean | true | Sans barre d'outils : ni filtre, ni recherche, ni copie. |
* obligatoire.
Voir aussi
- Le composant dans le catalogue — états, variantes, et bac à sable.
- La référence complète — tous les composants.