@synertech/ui 0.41.0 → 0.42.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 +95 -0
- package/dist/index.cjs +9 -9
- package/dist/index.d.cts +782 -3
- package/dist/index.d.ts +782 -3
- package/dist/index.js +9 -9
- package/dist/styles.css +25 -0
- package/package.json +1 -1
|
@@ -160,6 +160,12 @@ import { cn } from "@synertech/ui";
|
|
|
160
160
|
- `BulletChart` - Réalisé, objectif et plages qualitatives sur une seule ligne
|
|
161
161
|
- `ChartFacets` - Petits multiples : un même graphique répété, à échelle partagée
|
|
162
162
|
- `ChartScaleLegend` - La légende d'une rampe de couleur
|
|
163
|
+
- `WaterfallChart` - Comment on passe de A à B : chaque contribution, positive ou négative
|
|
164
|
+
- `FunnelChart` - Des étapes ordonnées et leur déperdition (rampe ordinale)
|
|
165
|
+
- `DumbbellChart` - Avant → après par élément, ou une plage min–max
|
|
166
|
+
- `BoxPlot` - Médiane, quartiles, moustaches et valeurs aberrantes
|
|
167
|
+
- `CandlestickChart` - Ouverture, haut, bas, clôture (couleurs de statut)
|
|
168
|
+
- `GanttChart` - Des tâches dans le temps, avec dépendances et jalons
|
|
163
169
|
|
|
164
170
|
### Feedback & Overlays
|
|
165
171
|
|
|
@@ -628,6 +634,25 @@ const data = [
|
|
|
628
634
|
bubble={{ key: "clients", range: [4, 18] }}
|
|
629
635
|
trendLine
|
|
630
636
|
/>
|
|
637
|
+
|
|
638
|
+
// Histogramme — `bins` lit x.key comme une mesure, la range et la compte
|
|
639
|
+
<BarChart
|
|
640
|
+
data={sessions} // [{ duration: 42 }, { duration: 118 }, ...]
|
|
641
|
+
x={{ key: "duration", label: "Durée (s)" }}
|
|
642
|
+
series={[{ key: "sessions", label: "Sessions" }]} // nomme le COMPTE
|
|
643
|
+
bins={12} // ou true (auto), ou [0, 15, 30, 60, 120]
|
|
644
|
+
/>
|
|
645
|
+
|
|
646
|
+
// Barres + ligne — une série typée, un seul axe
|
|
647
|
+
<BarChart
|
|
648
|
+
data={monthly}
|
|
649
|
+
x={{ key: "month" }}
|
|
650
|
+
series={[
|
|
651
|
+
{ key: "commandes", label: "Commandes" },
|
|
652
|
+
{ key: "retours", label: "Retours", type: "line" },
|
|
653
|
+
]}
|
|
654
|
+
curve="monotone"
|
|
655
|
+
/>
|
|
631
656
|
```
|
|
632
657
|
|
|
633
658
|
```tsx
|
|
@@ -654,6 +679,59 @@ const data = [
|
|
|
654
679
|
normalize="row" // "row" (par défaut) | "shared" → ramène l'axe des valeurs
|
|
655
680
|
/>
|
|
656
681
|
|
|
682
|
+
// Cascade — chaque pas flotte entre le cumul avant et après lui
|
|
683
|
+
<WaterfallChart
|
|
684
|
+
data={budget} // [{ poste, montant, jalon? }, ...]
|
|
685
|
+
x={{ key: "poste" }}
|
|
686
|
+
value="montant"
|
|
687
|
+
total="jalon" // ligne de contrôle dessinée depuis zéro
|
|
688
|
+
start={0} // cumul d'ouverture
|
|
689
|
+
/>
|
|
690
|
+
|
|
691
|
+
// Tunnel — étapes ORDONNÉES, donc rampe ordinale (jamais les créneaux)
|
|
692
|
+
<FunnelChart
|
|
693
|
+
data={stages} // [{ etape, utilisateurs }, ...]
|
|
694
|
+
x={{ key: "etape" }}
|
|
695
|
+
value="utilisateurs"
|
|
696
|
+
align="center" // "center" (silhouette) | "left" (comparaison)
|
|
697
|
+
showConversion // le ratio d'un pas au suivant : le constat
|
|
698
|
+
/>
|
|
699
|
+
|
|
700
|
+
// Haltère — avant → après, ou une plage. L'écart EST la marque
|
|
701
|
+
<DumbbellChart
|
|
702
|
+
data={satisfaction}
|
|
703
|
+
x={{ key: "service" }}
|
|
704
|
+
series={[{ key: "avant", label: "2025" }, { key: "apres", label: "2026" }]}
|
|
705
|
+
sort="gap" // les plus gros mouvements en tête
|
|
706
|
+
/>
|
|
707
|
+
|
|
708
|
+
// Boîte à moustaches — `values` (observations) ou `quantiles` (résumé)
|
|
709
|
+
<BoxPlot
|
|
710
|
+
data={teams} // [{ equipe, durees: [12, 14, ...] }, ...]
|
|
711
|
+
x={{ key: "equipe" }}
|
|
712
|
+
values="durees" // moustaches de Tukey + aberrations calculées
|
|
713
|
+
showMean // le losange : l'écart moyenne/médiane = la queue
|
|
714
|
+
/>
|
|
715
|
+
|
|
716
|
+
// Chandeliers — couleurs de statut + corps creux/plein, jamais la teinte seule
|
|
717
|
+
<CandlestickChart
|
|
718
|
+
data={sessions}
|
|
719
|
+
x={{ key: "jour" }}
|
|
720
|
+
open="ouverture" high="haut" low="bas" close="cloture"
|
|
721
|
+
/>
|
|
722
|
+
|
|
723
|
+
// Planning — dates, dépendances, jalons. Ce n'est pas un `Calendar`
|
|
724
|
+
<GanttChart
|
|
725
|
+
data={project}
|
|
726
|
+
x={{ key: "tache" }}
|
|
727
|
+
start="debut" end="fin"
|
|
728
|
+
id="id" dependencies="depend" // les flèches : ce qui bloque quoi
|
|
729
|
+
progress="avancement" // 0 à 1
|
|
730
|
+
milestone="jalon"
|
|
731
|
+
group="lot" // un créneau de palette par lot
|
|
732
|
+
today="2026-04-14"
|
|
733
|
+
/>
|
|
734
|
+
|
|
657
735
|
// Petits multiples — le domaine est calculé sur l'ensemble et imposé à chaque panneau
|
|
658
736
|
<ChartFacets data={rows} by="region" values={["revenue"]} columns={3}>
|
|
659
737
|
{({ data, domain, label }) => (
|
|
@@ -691,6 +769,23 @@ const data = [
|
|
|
691
769
|
- **La rampe divergente dit un sens, pas un jugement.** « Au-dessus » n'est pas
|
|
692
770
|
« bon » : un délai qui glisse est au-dessus. Le jugement appartient aux
|
|
693
771
|
couleurs de statut, toujours accompagnées d'un libellé.
|
|
772
|
+
- **Un `BarChart` combiné garde un seul axe.** Une série `type: "line"` partage
|
|
773
|
+
l'échelle des barres. Deux axes laissent deux mesures étrangères se croiser
|
|
774
|
+
là où le cadrage les place, ce qui se lit comme une corrélation inventée.
|
|
775
|
+
- **Un histogramme ne se trie pas.** `sort`, `stack` et `diverging` sont ignorés
|
|
776
|
+
avec `bins` : les seaux ont un ordre, et le réordonner détruit la forme.
|
|
777
|
+
- **Un tunnel encode une longueur, pas une surface.** Le trapèze classique
|
|
778
|
+
demande de comparer deux surfaces, ce que l'œil ne sait pas faire.
|
|
779
|
+
- **Un `BoxPlot` nourri d'un résumé ne dessine aucune valeur aberrante.** Les
|
|
780
|
+
bornes de Tukey ont besoin des observations ; le composant préfère ne rien
|
|
781
|
+
affirmer plutôt qu'inventer.
|
|
782
|
+
- **`DumbbellChart` et `BoxPlot` ne s'ancrent pas à zéro.** Ils se lisent à un
|
|
783
|
+
écart et à un étalement, pas à la longueur d'une marque depuis une base.
|
|
784
|
+
- **`CandlestickChart` porte le sens deux fois** : couleur de statut ET corps
|
|
785
|
+
creux (hausse) contre plein (baisse). Vert contre rouge est la pire paire
|
|
786
|
+
sous déficience de vision des couleurs.
|
|
787
|
+
- **`GanttChart` n'est pas un `Calendar`.** Le calendrier sélectionne une date
|
|
788
|
+
et la renvoie ; le planning se lit. Une ligne sans largeur est un jalon.
|
|
694
789
|
|
|
695
790
|
### Cartes KPI
|
|
696
791
|
|