Oihana Next UI - 0.48.0

Application logo

Métriques

Micro-visualisations compactes, sans dépendance : faites pour tenir dans une carte ou une cellule de tableau.

CategoryBar

Une barre horizontale qui découpe un total en segments proportionnels.

Simple

Trois valeurs, les couleurs du thème par défaut.

Épaisseurs

xs, sm, md (défaut), lg, xl — et une taille responsive : fine sur mobile, épaisse à partir de lg. xl existe pour le bullet, dont la piste doit loger une mesure.

Labels cumulés

Les totaux courants au-dessus de la barre. Un label qui ne tient pas est retiré plutôt que superposé — réduis la fenêtre pour voir l'effet.

Marker

Un seuil pointé sur la barre, avec son tooltip. Il reprend la couleur du segment sur lequel il tombe.

Segments nommés et légende

Avec items, chaque segment porte un tooltip et la légende se replie sur plusieurs lignes quand la place manque.

  • Documents42 Go
  • Photos28 Go
  • Vidéos18 Go
  • Libre112 Go

Bullet

Avec measure, les segments deviennent des bandes qualitatives et la barre se lit comme un bullet graph : la mesure par-dessus, l'objectif en marqueur. Les bandes sont des teintes de base-content — elles se voient sur n'importe quelle surface et dans les deux thèmes, là où un base-200 disparaît sur une carte base-200. Les gaps disparaissent d'eux-mêmes, sinon la pointe de la mesure ne tomberait pas là où l'échelle le dit.

Couleur de la mesure

measure.color prend les trois mêmes formes que partout : un token du thème, une classe utilitaire toute faite (utile pour les teintes translucides), ou une couleur CSS libre qui passe en style inline. Par défaut primary, comme Sparkline et BarList — la mesure est la donnée, les bandes sont le fond.

primary
info
success
bg-base-content/70
#4E79A7

Domaine explicite

max étend l'échelle au-delà des bandes — le reste du domaine reste visible en fond. max ne peut qu'étendre : réduire l'échelle sous la somme des bandes les ferait déborder de la piste.

Comparaison

L'argument de la forme : trois indicateurs sur la même échelle, comparables d'un coup d'œil. Trois jauges rondes prendraient dix fois la place sans s'aligner.

Ventes82 / 90
Marge45 / 70
Satisfaction96 / 85

Couleurs libres

Un hex, un oklch, une variable CSS : tout ce qui n'est pas un token du thème passe en style inline. De quoi aligner la barre sur la palette d'un graphe voisin.

Cas limites

Somme nulle, valeurs décimales, et un segment à zéro qui ne casse pas les arrondis des extrémités.

BarList

Un classement de valeurs, chacune dessinée comme une barre à la mesure de sa part.

Simple

Trié par ordre décroissant par défaut : une liste de barres est un classement.

  1. /home
    843
  2. /documentation
    384
  3. /blocks
    108
  4. /imprint
    46
  5. /cancellation
    3

Format et pourcentages

valueFormatter met en forme la valeur, showPercentage ajoute sa part du total. La colonne des valeurs reste alignée quoi qu'il arrive.

  1. /home
    843 visiteurs60.9 %
  2. /documentation
    384 visiteurs27.7 %
  3. /blocks
    108 visiteurs7.8 %
  4. /imprint
    46 visiteurs3.3 %
  5. /cancellation
    3 visiteurs0.2 %

Hauteurs de ligne

sm, md (défaut), lg — et une hauteur responsive. Sur mobile, lg donne une cible tactile confortable.

  1. /home
    843
  2. /imprint
    46
  3. /cancellation
    3
  1. /home
    843
  2. /imprint
    46
  3. /cancellation
    3
  1. /home
    843
  2. /imprint
    46
  3. /cancellation
    3
  1. /home
    843
  2. /imprint
    46
  3. /cancellation
    3

Couleurs

Une couleur globale, ou une couleur par ligne pour faire ressortir ce qui compte. Les tokens du thème comme les couleurs CSS libres sont acceptés.

  1. /home
    843
  2. /documentation
    384
  3. /blocks
    108
  4. /imprint
    46
  5. /cancellation
    3
  1. 404 Not Found
    302
  2. 500 Internal Server Error
    128
  3. 403 Forbidden
    41
  4. 429 Too Many Requests
    12
  1. /home
    843
  2. /imprint
    46
  3. /cancellation
    3

Échelle partagée

Sans max, chaque liste se normalise sur son propre maximum et deux listes ne sont pas comparables. Avec le même max, elles le deviennent.

Sans max

Cette semaine

  1. /home
    420
  2. /blocks
    180
  3. /imprint
    60

Semaine dernière

  1. /home
    940
  2. /blocks
    410
  3. /imprint
    130

Avec max = 1000

Cette semaine

  1. /home
    420
  2. /blocks
    180
  3. /imprint
    60

Semaine dernière

  1. /home
    940
  2. /blocks
    410
  3. /imprint
    130

Lignes cliquables et liens

onSelect transforme la ligne en bouton, href en lien — jamais les deux, un lien dans un bouton n'est ni valide ni atteignable au clavier.

  1. 843
  2. 384
  3. 108
  4. 46
  5. 3

Clique sur une ligne.

  1. /home843
  2. /imprint46
  3. /cancellation3

Chargement et liste vide

loading affiche des squelettes pour que le panneau ne saute pas quand la donnée arrive : autant que la liste aura de lignes, ou le nombre que skeletonRows annonce — une liste qui attend sa première réponse n'a pas de données pour se mesurer. Une liste vide bascule sur EmptyState.

Au nombre de lignes des données déjà là

skeletonRows = 8, sans aucune donnée

Aucune visite sur la période

Élargis la plage de dates pour voir des résultats.

Entrée progressive des barres

reveal fait pousser chaque barre depuis zéro, avec revealStagger millisecondes de décalage d'une ligne à l'autre. Elle rejoue au montage, quand loading retombe à false — la forme d'un appel API — et à chaque changement de revealKey. Un simple changement de données ne la rejoue pas. Ignorée si le système demande moins d'animations.

  1. /home
    84360.9 %
  2. /documentation
    38427.7 %
  3. /blocks
    1087.8 %
  4. /imprint
    463.3 %
  5. /cancellation
    30.2 %

Erreurs les plus fréquentes

  1. 500 Internal Server Error
    12826.5 %
  2. 404 Not Found
    30262.5 %
  3. 403 Forbidden
    418.5 %
  4. 429 Too Many Requests
    122.5 %

Tracker

Une bande de blocs, un par observation, où la couleur porte l'état.

Simple

90 jours de disponibilité. Chaque bloc porte son tooltip — en CSS pur, sans un seul composant React par case.

États

success, warning, error, info, neutral — et base-300 pour un bloc dont on ne sait rien. Ce sont des tokens du thème : aucune variante dark: à écrire.

Hauteurs

xs, sm, md (défaut), lg — et une hauteur responsive.

Bornes et résumé

Le patron des pages de statut : un résumé au-dessus, les bornes de la période en dessous. startLabel accepte une fonction, qui reçoit le nombre de blocs réellement affichés.

90.0 % de disponibilité sur la période
il y a 90 joursaujourd'hui

Légende

legend décrit ce que les couleurs veulent dire, sous les bornes. Les comptes sont calculés par l'appelant : la bande retire les blocs qui ne tiennent pas, un compte fait par le composant ne dirait pas clairement s'il parle de la période ou de l'écran.

90.0 % de disponibilité sur la période
il y a 90 joursaujourd'hui
  • Opérationnel81
  • Lenteurs3
  • Indisponible2
  • Aucune donnée4

Troncature responsive

Les mêmes 90 jours dans trois largeurs. Le composant mesure son conteneur — pas la fenêtre — et garde les blocs les plus récents qui tiennent à minBlockWidth. Réduis la fenêtre : la bande large en perd, les autres non.

Conteneur étroit

il y a 90 joursaujourd'hui

Conteneur moyen

il y a 90 joursaujourd'hui

Pleine largeur

il y a 90 joursaujourd'hui

Plafond explicite

maxBlocks plafonne en plus de ce qui tient, quand le nombre est connu d'avance. Ici 30, sur les mêmes 90 jours.

Couleurs libres

Comme partout dans metrics, une couleur CSS qui n'est pas un token passe en style inline.

Sparkline

La forme d'une série, assez petite pour tenir à côté d'un nombre.

Variantes

line (défaut), area et bar. Une seule prop : l'aire n'est que la ligne refermée sur sa base.

Ligne

Aire

Barres

Hauteurs

xs, sm, md (défaut), lg — et une hauteur responsive. La largeur revient au conteneur, donc une classe suffit à la fixer.

Domaine

Par défaut le domaine est l'étendue des données : c'est la forme qui compte. Ancrer l'échelle à zéro l'aplatit — utile seulement pour comparer plusieurs séries, via min et max.

Domaine automatique

min = 0

min = 0, max = 100 sur les deux

Remplissage

gradient (défaut), solid, none — sur la variante area uniquement.

Couleur et tendance

Un token du thème, une couleur CSS libre, ou colorByTrend qui prend la direction du trajet : vert si ça monte, rouge si ça descend, neutre si c'est plat.

En hausse

En baisse

Stable

Cas limites

Série vide, point unique, série plate, et des trous — qui restent des trous, sauf si connectNulls dit le contraire. Une mesure manquante n'est pas un zéro. Une valeur hors d'un domaine imposé s'écrase sur la borne plutôt que de sortir du cadre.

Vide

Un seul point

Série plate

Trous

Trous, connectNulls

Hors domaine (min 40, max 60)

Recette : la tuile KPI

Aucun composant de plus : Card + Stats + Stat, dont figure accueille la sparkline. Le Delta du prochain lot ira dans description.

Visiteurs
12 480
30 derniers jours
Chiffre d'affaires
48 210 €
30 derniers jours
Erreurs
312
30 derniers jours

Delta

Une variation, sa direction et le jugement qu'on porte dessus.

Simple

value est un ratio par défaut : 0.124 donne +12,4 %. La flèche dit le fait, la couleur dit si c'est une bonne nouvelle.

+12,4 %-8,3 %0 %

inverted : quand baisser est une bonne nouvelle

Un taux d'erreur, un churn, une latence, un coût. inverted échange les couleurs et jamais la flèche — la flèche décrit la donnée, elle ne la juge pas.

Visiteurs (monter est bon)

+12,4 %-8,3 %

Taux d'erreur (baisser est bon)

+12,4 %-8,3 %

Badge ou texte

badge (défaut) pour une cellule de tableau, text pour se glisser sous un nombre sans l'alourdir.

badge

+12,4 %+12,4 %+12,4 %-8,3 %-8,3 %+12,4 %

text

+12,4 %-8,3 %0 %

Formats et localisation

percent lit un ratio, number lit la valeur telle quelle. Les nombres sont mis en forme dans la langue du LangProvider — bascule la langue de l'application pour voir le séparateur décimal suivre.

percent (défaut)

+12,4 %+150 %

number

+1 380-225

valueFormatter

+12 points

Bande neutre

neutralThreshold : en deçà, ce n'est pas une tendance mais du bruit. À zéro par défaut, donc toute variation compte.

Sans seuil

+0,2 %-0,4 %

neutralThreshold = 0.05

+0,2 %-0,4 %+12 %

from / to

Le composant calcule la variation, avec la valeur de départ en valeur absolue au dénominateur — une métrique qui remonte d'un socle négatif ne doit pas ressortir en baisse. Partir de zéro n'a pas de ratio : la valeur est alors annoncée indisponible.

11 100 → 12 480

+12,4 %+1 380

840 → 615

-26,8 %

−200 → −50

+75 %

0 → 320

—+320

Valeur absente

Un tiret muet plutôt que rien : une tuile dont la donnée n'est pas encore arrivée garde sa mise en page.

——

La tuile KPI, complète

La sparkline dans figure, le delta dans description. Toujours aucun composant de plus.

Visiteurs
12 480
+12,4 %vs période précédente
Chiffre d'affaires
48 210 €
+4,2 %vs période précédente
Taux d'erreur
0,8 %
-31 %vs période précédente

MetricLegend

La légende d'une métrique : une pastille, un nom, et une valeur quand il y en a une.

Simple

Des parts nommées et chiffrées. Les couleurs sont des tokens du thème.

  • Documents42 Go
  • Photos18 Go
  • Vidéos12 Go
  • Libre28 Go

Formes de marqueur

dot (défaut) pour une surface pleine — segment, bloc — square, et line pour une courbe.

dot

  • Visites
  • Ventes
  • Erreurs

square

  • Visites
  • Ventes
  • Erreurs

line

  • Visites
  • Ventes
  • Erreurs

Orientation

En colonne, ou responsive : empilée sur mobile, en ligne à partir de md. Réduis la fenêtre pour voir le passage.

Verticale

  • Documents42 Go
  • Photos18 Go
  • Vidéos12 Go
  • Libre28 Go

Responsive : verticale sur mobile, horizontale à partir de md

  • Documents42 Go
  • Photos18 Go
  • Vidéos12 Go
  • Libre28 Go

Tailles

xs, sm, md. Par défaut : xs sur mobile, sm à partir du breakpoint sm.

  • Documents42 Go
  • Photos18 Go
  • Vidéos12 Go
  • Libre28 Go
  • Documents42 Go
  • Photos18 Go
  • Vidéos12 Go
  • Libre28 Go
  • Documents42 Go
  • Photos18 Go
  • Vidéos12 Go
  • Libre28 Go

Sans valeur

Une légende de séries ne nomme que des couleurs : sans value, l'entrée affiche son nom seul plutôt qu'un zéro inventé. Chaque entrée peut porter un tooltip.

  • Visites
  • Ventes
  • Erreurs

Plusieurs sparklines

Ce pour quoi le marqueur line existe : trois courbes dans une même tuile, identifiées par un trait de leur couleur.

  • Visites
  • Ventes
  • Erreurs

Dans CategoryBar

C'est la même légende que showLegend affiche sous la barre. legendProps donne accès à marker, orientation et size.

  • Documents42 Go
  • Photos18 Go
  • Vidéos12 Go
  • Libre28 Go

Couleurs libres

Comme partout dans metrics, une couleur CSS qui n'est pas un token passe en style inline — de quoi aligner la légende sur la palette d'un graphe voisin.

  • Bleu62 %
  • Orange24 %
  • Rouge14 %

MetricScale

L'échelle d'une grandeur : une bande par seau, et les deux bouts de la plage écrits dessous.

Simple

La rampe dans l'ordre, du plus bas au plus haut. Les bandes sont franches parce que l'échelle l'est : un graphe quantitatif range ses valeurs en seaux, un dégradé lisse dirait le contraire.

0 vues240 vues

Orientation

Debout, le petit bout est en bas — là où un lecteur l'attend. C'est ce que prennent les placements latéraux d'un graphe.

Horizontale
0240
Verticale
0240

Tailles

xs, sm, md, comme MetricLegend — les deux se posent au même endroit sous les mêmes graphes et doivent se lire à la même taille.

0240
0240
0240

Frontières des seaux

ticks imprime les bords, pas les bornes seules — éteint par défaut, parce que N seaux font N+1 chiffres et que ça se bouscule vite sous une barre de 224 px. Un nombre en montre au plus autant, en sautant des bords : chaque chiffre affiché reste une vraie frontière, quitte à ce que le dernier intervalle soit plus court.

Toutes — 4 seaux, 5 frontières
060120180240
ticks={ 4 } sur 10 seaux — 0, 96, 192, 240
096192240
Une plage qui ne tombe pas rond : c'est valueFormatter qui décide de l'arrondi, pas l'échelle.
12.018.324.530.837.0
Debout
060120180240

Sans bornes

Sans min ni max, il ne reste que la rampe. Zéro est une borne comme une autre : c'est l'absence qui efface la ligne, pas la valeur nulle.

Couleurs libres

Comme partout dans metrics, un token du thème passe en classe et toute autre couleur CSS en style inline — de quoi aligner l'échelle sur la rampe du graphe voisin.

Tokens du thème
0100
Rampe nivo
0100

useNumberFormat — locale : fr-FR

RatioformatPercentratio < 0.1 (avant)
0.25425 %25 %
0.00420,42 %0,42 %
-0.042-4,2 %-4,2 %
-0.1234-12 %-12,34 %
-0.5678-57 %-56,78 %
00 %0 %
MontantformatNumber (EUR)formatCompact (EUR)formatCompact
12.512,50 €
168000168 000,00 €
163174.19163 174,19 €
85011246.9385 011 246,93 €