@synertech/ui 0.40.1 → 0.41.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/skills/use-synertech-ui/SKILL.md +83 -0
- package/dist/index.cjs +10 -10
- package/dist/index.d.cts +427 -46
- package/dist/index.d.ts +427 -46
- package/dist/index.js +10 -10
- package/dist/styles.css +109 -0
- package/package.json +2 -2
|
@@ -156,6 +156,10 @@ import { cn } from "@synertech/ui";
|
|
|
156
156
|
- `ScatterChart` - Corrélation entre deux variables numériques (3 séries max)
|
|
157
157
|
- `StatCard` / `StatCardGroup` - Valeur unique avec variation et sparkline
|
|
158
158
|
- `Sparkline` - Courbe sans axe, pour une cellule ou une carte
|
|
159
|
+
- `Heatmap` - Une grandeur sur une grille (jour × heure, cohortes, matrice)
|
|
160
|
+
- `BulletChart` - Réalisé, objectif et plages qualitatives sur une seule ligne
|
|
161
|
+
- `ChartFacets` - Petits multiples : un même graphique répété, à échelle partagée
|
|
162
|
+
- `ChartScaleLegend` - La légende d'une rampe de couleur
|
|
159
163
|
|
|
160
164
|
### Feedback & Overlays
|
|
161
165
|
|
|
@@ -586,6 +590,26 @@ const data = [
|
|
|
586
590
|
showValues
|
|
587
591
|
/>
|
|
588
592
|
|
|
593
|
+
// Barres divergentes : l'écart à une référence
|
|
594
|
+
<BarChart
|
|
595
|
+
data={gaps}
|
|
596
|
+
x={{ key: "region" }}
|
|
597
|
+
series={[{ key: "gap" }]}
|
|
598
|
+
orientation="horizontal"
|
|
599
|
+
diverging // true | un nombre (le centre) | une clé de série
|
|
600
|
+
y={{ label: "Écart à la cible (%)" }}
|
|
601
|
+
/>
|
|
602
|
+
|
|
603
|
+
// Échelle d'accord : la série nommée est à cheval sur le centre
|
|
604
|
+
<BarChart
|
|
605
|
+
data={survey}
|
|
606
|
+
x={{ key: "question" }}
|
|
607
|
+
series={[{ key: "awful" }, { key: "bad" }, { key: "ok" }, { key: "good" }, { key: "great" }]}
|
|
608
|
+
orientation="horizontal"
|
|
609
|
+
stack="stacked"
|
|
610
|
+
diverging="ok"
|
|
611
|
+
/>
|
|
612
|
+
|
|
589
613
|
// Camembert ou anneau
|
|
590
614
|
<PieChart
|
|
591
615
|
data={sources}
|
|
@@ -606,6 +630,46 @@ const data = [
|
|
|
606
630
|
/>
|
|
607
631
|
```
|
|
608
632
|
|
|
633
|
+
```tsx
|
|
634
|
+
// Carte de chaleur — une ligne de données par case
|
|
635
|
+
<Heatmap
|
|
636
|
+
data={load} // [{ day, hour, sessions }, ...]
|
|
637
|
+
x={{ key: "hour", label: "Heure" }}
|
|
638
|
+
y={{ key: "day", label: "Jour" }}
|
|
639
|
+
value="sessions"
|
|
640
|
+
scale="sequential" // "sequential" | "diverging" (+ center)
|
|
641
|
+
steps={undefined} // la rampe reste continue tant qu'on ne la découpe pas
|
|
642
|
+
legendLabel="Sessions" // la légende d'échelle est affichée par défaut
|
|
643
|
+
showValues
|
|
644
|
+
tableView="toggle" // la grille pivotée : une ligne par catégorie de rangée
|
|
645
|
+
/>
|
|
646
|
+
|
|
647
|
+
// Graphique à puce — réalisé, objectif, plages
|
|
648
|
+
<BulletChart
|
|
649
|
+
data={[{ measure: "Revenu", value: 38400, target: 42000, bands: [20000, 34000, 50000] }]}
|
|
650
|
+
x={{ key: "measure" }}
|
|
651
|
+
value="value"
|
|
652
|
+
target="target"
|
|
653
|
+
ranges="bands" // bornes croissantes, peintes en gris derrière la barre
|
|
654
|
+
normalize="row" // "row" (par défaut) | "shared" → ramène l'axe des valeurs
|
|
655
|
+
/>
|
|
656
|
+
|
|
657
|
+
// Petits multiples — le domaine est calculé sur l'ensemble et imposé à chaque panneau
|
|
658
|
+
<ChartFacets data={rows} by="region" values={["revenue"]} columns={3}>
|
|
659
|
+
{({ data, domain, label }) => (
|
|
660
|
+
<LineChart
|
|
661
|
+
data={data}
|
|
662
|
+
series={[{ key: "revenue" }]}
|
|
663
|
+
x={{ key: "month" }}
|
|
664
|
+
y={{ domain }} // ← toujours le passer, c'est tout l'intérêt
|
|
665
|
+
plotLabel={label}
|
|
666
|
+
height={130}
|
|
667
|
+
legend={false}
|
|
668
|
+
/>
|
|
669
|
+
)}
|
|
670
|
+
</ChartFacets>
|
|
671
|
+
```
|
|
672
|
+
|
|
609
673
|
**Ce que les composants refusent de faire, et pourquoi :**
|
|
610
674
|
|
|
611
675
|
- **Pas de second axe Y.** Deux mesures d'échelles différentes inventent une
|
|
@@ -617,6 +681,16 @@ const data = [
|
|
|
617
681
|
Un nuage de points s'arrête à 3 séries.
|
|
618
682
|
- **`PieChart` n'est pas fait pour comparer des valeurs proches** — l'œil compare
|
|
619
683
|
mal des angles. Deux parts, c'est une `StatCard`.
|
|
684
|
+
- **La palette catégorielle ne peint pas une grandeur.** Les huit créneaux
|
|
685
|
+
répondent à « lequel » ; une rampe répond à « combien ». Dès qu'une couleur
|
|
686
|
+
encode une grandeur, la légende d'échelle est obligatoire.
|
|
687
|
+
- **Une `Heatmap` ne se découpe pas au-delà de 7 classes de couleur** — les cases
|
|
688
|
+
voisines cessent d'être distinguables. Sans `steps`, la rampe reste continue.
|
|
689
|
+
- **Les panneaux d'un `ChartFacets` partagent leur domaine.** Des échelles libres
|
|
690
|
+
ont l'air comparables et ne le sont pas : passez toujours le `domain` reçu.
|
|
691
|
+
- **La rampe divergente dit un sens, pas un jugement.** « Au-dessus » n'est pas
|
|
692
|
+
« bon » : un délai qui glisse est au-dessus. Le jugement appartient aux
|
|
693
|
+
couleurs de statut, toujours accompagnées d'un libellé.
|
|
620
694
|
|
|
621
695
|
### Cartes KPI
|
|
622
696
|
|
|
@@ -653,9 +727,18 @@ tout le kit sur une charte :
|
|
|
653
727
|
--color-chart-1: #0f766e;
|
|
654
728
|
--color-chart-2: #b45309;
|
|
655
729
|
/* ... jusqu'à 8 */
|
|
730
|
+
|
|
731
|
+
/* Les trois rampes de grandeur, si le kit en affiche */
|
|
732
|
+
--color-chart-seq-1: #e0f2f1; /* ... jusqu'à 6, du clair au foncé */
|
|
733
|
+
--color-chart-ord-1: #4db6ac; /* ... jusqu'à 5, paliers ordonnés */
|
|
734
|
+
--color-chart-div-1: #00695c; /* ... jusqu'à 7, milieu neutre au 4 */
|
|
656
735
|
}
|
|
657
736
|
```
|
|
658
737
|
|
|
738
|
+
Redéfinissez-les aussi sous `:root.dark` / `[data-theme="dark"]` : les rampes
|
|
739
|
+
sombres du kit ne sont pas les claires éclaircies, elles courent en sens inverse
|
|
740
|
+
(sur fond sombre, « plus » doit s'éloigner du fond).
|
|
741
|
+
|
|
659
742
|
### Card (Composable)
|
|
660
743
|
|
|
661
744
|
```tsx
|