Aller au contenu
Design system

Composants · data

Graphiques & KPI

Graphiques SVG sans dépendance, colorés uniquement par les tokens chart-1 → chart-6 (recalculés en mode sombre). Chaque graphique embarque une table de données accessible : le graphique ne porte jamais seul l’information.

  • KpiCard
  • Sparkline
  • BarChart
  • LineChart
  • DonutChart
  • ChartLegend
  • ChartDataTable
  • chartSeriesColors

Indicateurs clés

KpiCard avec Sparkline

Quand l’utiliser : Rangée d’indicateurs clés en tête de tableau de bord : valeur principale formatée, variation (couleur selon le sens métier), tendance, lien vers le détail. Sur mobile, les KPI s’empilent.

102 600 500 F CFA
−62,8 %vs mois précédent

Production

634.7 t
−2,7 %vs mois précédent

Rendement usinage

61 %
−0,4 %pts vs septembreObjectif 62 %

Heures d’arrêt machines

31,5 h
+303,8 %vs mois précédent

Créances clients

220 715 555 F CFA
dont 21 712 120 F CFA échues

Stock paddy

629,9 t
Couverture : 28 jours d’usinage
Chargement…

Marge brute

—
Données comptables non clôturées
invertDelta pour les indicateurs où une baisse est bonne (heures d’arrêt, retards). loading affiche un squelette.
Afficher le code
<KpiCard
  label="Chiffre d’affaires du mois"
  value={<MoneyText value="186400000" currency="XOF" />}
  delta={0.089} icon={<Banknote />} href="/reports/sales"
  sparkline={<Sparkline data={[142, 151, 148, 160, 158, 171, 186]} label="Tendance sur 7 mois" />}
/>
<KpiCard label="Heures d’arrêt" value="14,5 h" delta={-0.34} invertDelta />

Sparkline

Quand l’utiliser : Tendance compacte sans axe, dans une carte KPI ou une cellule de tableau. Avec label, elle est annoncée ; sans, elle est décorative.

color="chart-1"
color="chart-2"
color="success"
color="warning"
color="danger"
color="info"
width={160} height={40}
Afficher le code
<Sparkline data={series} />                        // aire, chart-1
<Sparkline data={series} variant="line" color="success" width={120} height={32} />

Graphiques

BarChart

Quand l’utiliser : Comparer des catégories (sites, produits, mois). Plusieurs séries = barres groupées ; horizontal pour des libellés longs ou un classement.

0 M50 M100 M150 M200 MAvr. — Riz blanc : 118 MAvr. — Brisures : 16 MAvr. — Son et balles : 8 MAvr.Mai — Riz blanc : 126 MMai — Brisures : 17 MMai — Son et balles : 8 MMaiJuin — Riz blanc : 121 MJuin — Brisures : 18 MJuin — Son et balles : 9 MJuinJuil. — Riz blanc : 133 MJuil. — Brisures : 18 MJuil. — Son et balles : 9 MJuil.Août — Riz blanc : 130 MAoût — Brisures : 19 MAoût — Son et balles : 9 MAoûtSept. — Riz blanc : 141 MSept. — Brisures : 20 MSept. — Son et balles : 10 MSept.Oct. — Riz blanc : 152 MOct. — Brisures : 22 MOct. — Son et balles : 12 MOct.
Ventes par mois et par famille (millions de F CFA)
MoisRiz blancBrisuresSon et balles
Avr.118 M16 M8 M
Mai126 M17 M8 M
Juin121 M18 M9 M
Juil.133 M18 M9 M
Août130 M19 M9 M
Sept.141 M20 M10 M
Oct.152 M22 M12 M
0 M F CFA10 M F CFA20 M F CFA30 M F CFA40 M F CFAGrossiste Démo Kossodo — CA : 39,8 M F CFAGrossiste Démo Ko…Alimentation Démo Sahel — CA : 28,1 M F CFAAlimentation Démo…Distribution Céréales Démo — CA : 17 M F CFADistribution Céré…Comptoir Démo du Centre — CA : 6,8 M F CFAComptoir Démo du …Supérette Démo Gounghin — CA : 1,1 M F CFASupérette Démo Go…
Chiffre d’affaires par client — octobre (millions de F CFA)
ClientCA
Grossiste Démo Kossodo39,8 M F CFA
Alimentation Démo Sahel28,1 M F CFA
Distribution Céréales Démo17 M F CFA
Comptoir Démo du Centre6,8 M F CFA
Supérette Démo Gounghin1,1 M F CFA
Afficher le code
<BarChart title="Ventes par mois (M F CFA)" labels={months}
  series={[{ name: 'Riz blanc', values: [...] }, { name: 'Brisures', values: [...] }]}
  valueFormatter={(v) => `${v} M`} />
<BarChart orientation="horizontal" title="Top clients" labels={clients} series={[{ name: 'CA', values }]} />

LineChart

Quand l’utiliser : Évolution dans le temps d’une ou plusieurs grandeurs comparables (rendement vs objectif, production par site). area pour insister sur le volume.

0 %20 %40 %60 %80 %Avr.MaiJuinJuil.AoûtSept.Oct.Avr. — Rendement : 61,4 %Mai — Rendement : 61 %Juin — Rendement : 61,2 %Juil. — Rendement : 59,8 %Août — Rendement : 61,9 %Sept. — Rendement : 60,6 %Oct. — Rendement : 61,8 %Avr. — Objectif : 62 %Mai — Objectif : 62 %Juin — Objectif : 62 %Juil. — Objectif : 62 %Août — Objectif : 62 %Sept. — Objectif : 62 %Oct. — Objectif : 62 %
Rendement usinage vs objectif
MoisRendementObjectif
Avr.61,4 %62 %
Mai61 %62 %
Juin61,2 %62 %
Juil.59,8 %62 %
Août61,9 %62 %
Sept.60,6 %62 %
Oct.61,8 %62 %
0 t200 t400 t600 tAvr.MaiJuinJuil.AoûtSept.Oct.Avr. — Usine de Di : 480 tMai — Usine de Di : 492 tJuin — Usine de Di : 505 tJuil. — Usine de Di : 498 tAoût — Usine de Di : 510 tSept. — Usine de Di : 522 tOct. — Usine de Di : 548 tAvr. — Atelier Bobo (sous-traitance) : 80 tMai — Atelier Bobo (sous-traitance) : 83 tJuin — Atelier Bobo (sous-traitance) : 85 tJuil. — Atelier Bobo (sous-traitance) : 86 tAoût — Atelier Bobo (sous-traitance) : 88 tSept. — Atelier Bobo (sous-traitance) : 90 tOct. — Atelier Bobo (sous-traitance) : 94 t
Production mensuelle par site (tonnes)
MoisUsine de DiAtelier Bobo (sous-traitance)
Avr.480 t80 t
Mai492 t83 t
Juin505 t85 t
Juil.498 t86 t
Août510 t88 t
Sept.522 t90 t
Oct.548 t94 t
Afficher le code
<LineChart title="Rendement usinage" labels={months} area showPoints
  series={[{ name: 'Rendement', values }, { name: 'Objectif', values: target, color: 'chart-6' }]}
  valueFormatter={(v) => formatPercent(v)} />

DonutChart

Quand l’utiliser : Répartition d’un total en peu de parts (≤ 6) : mix produits, ventilation des créances. Au-delà, préférer un BarChart horizontal.

Riz 50 kg : 98,4 M (52,8 %)Riz 25 kg : 41,2 M (22,1 %)Riz 5 kg : 12,6 M (6,8 %)Brisures : 22,1 M (11,9 %)Son et balles : 12,1 M (6,5 %)
Répartition des ventes d’octobre (millions de F CFA)
FamilleValeurPart
Riz 50 kg98,4 M52,8 %
Riz 25 kg41,2 M22,1 %
Riz 5 kg12,6 M6,8 %
Brisures22,1 M11,9 %
Son et balles12,1 M6,5 %
Non échues : 73 500 000 F CFA (77,5 %)1 à 30 jours : 14 200 000 F CFA (15 %)Plus de 30 jours : 7 100 000 F CFA (7,5 %)
Créances clients par ancienneté
CatégorieValeurPart
Non échues73 500 000 F CFA77,5 %
1 à 30 jours14 200 000 F CFA15 %
Plus de 30 jours7 100 000 F CFA7,5 %
Afficher le code
<DonutChart title="Répartition des ventes" data={[{ label: 'Riz 50 kg', value: 98 }, …]}
  centerLabel="Total" centerValue="186 M" valueFormatter={(v) => `${v} M`} />

DonutChart — table de données visible

Quand l’utiliser : Quand les valeurs exactes comptent autant que la forme (rapport imprimé, comité, export) : showDataTable affiche sous l’anneau la table de données, sinon réservée aux lecteurs d’écran.

Achats de paddy : 412 000 000 F CFA (81,3 %)Personnel : 58 300 000 F CFA (11,5 %)Énergie : 21 700 000 F CFA (4,3 %)Transport : 14 900 000 F CFA (2,9 %)
Charges d’octobre par nature
NatureMontantPart
Achats de paddy412 000 000 F CFA81,3 %
Personnel58 300 000 F CFA11,5 %
Énergie21 700 000 F CFA4,3 %
Transport14 900 000 F CFA2,9 %
Afficher le code
<DonutChart title="Charges d’octobre par nature" data={…} showDataTable
  categoryHeader="Nature" valueHeader="Montant" valueFormatter={(v) => formatMoney(v, 'XOF')} />

ChartLegend, ChartDataTable et palette

Quand l’utiliser : Briques internes des graphiques, exportées pour composer une visualisation sur mesure : légende cohérente et table de données accessible (sr-only ou visible).

Stock de paddy par site
SitePaddy reçuPaddy usiné
Usine de Di412 850 kg318 400 kg
Dépôt Bobo-Dioulasso186 300 kg—
Afficher le code
<ChartLegend items={chartSeriesColors.map((c, i) => ({ label: `Série ${i + 1}`, color: c }))} />
<ChartDataTable caption="…" categoryHeader="Site" seriesNames={['Paddy reçu']} rows={[{ label: 'Di', values: ['412 850 kg'] }]} />