@synertech/ui 0.42.0 → 0.43.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.
@@ -160,6 +160,8 @@ 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
+ - `ChartFilterBar` - Les filtres en une rangée au-dessus des graphiques qu'ils cadrent
164
+ - `ChartPeriodPicker` - La fenêtre d'un tableau de bord : préréglages nommés + calendrier
163
165
  - `WaterfallChart` - Comment on passe de A à B : chaque contribution, positive ou négative
164
166
  - `FunnelChart` - Des étapes ordonnées et leur déperdition (rampe ordinale)
165
167
  - `DumbbellChart` - Avant → après par élément, ou une plage min–max
@@ -732,6 +734,30 @@ const data = [
732
734
  today="2026-04-14"
733
735
  />
734
736
 
737
+ // Annotations — ce qui s'est passé, dessiné là où ça s'est passé
738
+ // (`referenceLines` = un seuil sur l'axe des valeurs ; les annotations = un
739
+ // moment sur l'axe des catégories. Lisible sur LineChart, AreaChart, BarChart)
740
+ <LineChart
741
+ data={monthly}
742
+ series={[{ key: "revenue" }]}
743
+ x={{ key: "month" }}
744
+ annotations={[
745
+ { type: "band", from: "Fév", to: "Mar", label: "Campagne" },
746
+ { type: "line", x: "Mai", label: "Refonte du tunnel" },
747
+ { type: "point", x: "Août", y: 39900, label: "Record" },
748
+ ]}
749
+ />
750
+
751
+ // Trames — le canal de secours quand la teinte échoue (CVD sévère, impression
752
+ // en niveaux de gris, forced-colors). Jamais par défaut : c'est de l'a11y
753
+ <BarChart data={channels} series={channelSeries} x={{ key: "quarter" }} stack="stacked" patterns />
754
+
755
+ // La rangée de filtres — une seule, au-dessus de TOUS les graphiques
756
+ <ChartFilterBar actions={<Button size="sm">Exporter</Button>}>
757
+ <ChartPeriodPicker size="sm" value={period} onChange={setPeriod} />
758
+ <Select size="sm" options={regions} value={region} onValueChange={setRegion} />
759
+ </ChartFilterBar>
760
+
735
761
  // Petits multiples — le domaine est calculé sur l'ensemble et imposé à chaque panneau
736
762
  <ChartFacets data={rows} by="region" values={["revenue"]} columns={3}>
737
763
  {({ data, domain, label }) => (
@@ -786,6 +812,16 @@ const data = [
786
812
  sous déficience de vision des couleurs.
787
813
  - **`GanttChart` n'est pas un `Calendar`.** Le calendrier sélectionne une date
788
814
  et la renvoie ; le planning se lit. Une ligne sans largeur est un jalon.
815
+ - **Les filtres vivent dans UNE rangée, au-dessus des graphiques.** Jamais dans
816
+ une carte, jamais par graphique : deux panneaux filtrés séparément répondent à
817
+ deux questions et rien à l'écran ne le dit.
818
+ - **Les trames ne sont jamais activées par défaut.** C'est une option
819
+ d'accessibilité, pas une décoration — et elles ne peignent que des identités :
820
+ une rampe (Heatmap, `diverging`, tunnel) encode une grandeur, ce qu'aucune
821
+ trame ne sait dire.
822
+ - **Les annotations se lisent sur l'axe des catégories.** Un `BarChart`
823
+ horizontal les ignore, avec un avertissement : un moment placé sur une liste
824
+ de noms n'en est plus un.
789
825
 
790
826
  ### Cartes KPI
791
827