Aller au contenu
Design system @paulperigault

Composants

Visualisation de données

Huit composants Astro dessinent des graphiques en SVG statique, au build, sans JavaScript. Chacun écrit son résumé, lie son tableau de valeurs et ne s’appuie jamais sur la couleur seule.

Les exemples utilisent des jeux fictifs, lus dansapps/docs/src/components/examples/chart-data.json. Le cadre de décision est l’ADR-0007.

Les huit composants

LineChart

Courbe de une à six séries. Une valeur manquante rompt le trait, elle n’est jamais ramenée à zéro.

Visites mensuelles en 2025
Visites mensuelles en 2025Série « Visites » : de 820 visites (1 janvier 2025) à 1 190 visites (1 décembre 2025), hausse de 45,1 % ; minimum 790 visites (1 février 2025) ; maximum 1 240 visites (1 novembre 2025). Axe horizontal : Mois, axe vertical : visites. L'axe vertical ne part pas de zéro. Le tableau des données suit le graphique.6008001 0001 2001 400janv. 2025avr. 2025juil. 2025oct. 2025visites
Données du graphique
Visites mensuelles en 2025 : Données du graphique
MoisVisites (visites)
1 janvier 2025820
1 février 2025790
1 mars 2025880
1 avril 2025940
1 mai 20251 010
1 juin 2025980
1 juillet 2025870
1 août 2025810
1 septembre 20251 050
1 octobre 20251 180
1 novembre 20251 240
1 décembre 20251 190
import LineChart from '@paulperigault/astro/LineChart.astro';

<LineChart id="visites-mensuelles" title="Visites mensuelles en 2025" dataset={visites} />

Fiche LineChart : propriétés, limites et contrôles d’accessibilité.

BarChart

Barres verticales ou horizontales, simples ou groupées, toujours depuis zéro. Quarante catégories au plus.

Visites par rubrique
Visites par rubriqueSérie « Visites » : maximum 3 400 visites (Accueil) ; minimum 260 visites (Contact). Axe horizontal : Rubrique, axe vertical : visites. L'axe des valeurs part de zéro. Le tableau des données suit le graphique.01 0002 0003 0004 000visitesAccueilGuidesRéfére…RéférencesJournalContact3 4002 6001 900700260
Données du graphique
Visites par rubrique : Données du graphique
RubriqueVisites (visites)
Accueil3 400
Guides2 600
Références1 900
Journal700
Contact260
import BarChart from '@paulperigault/astro/BarChart.astro';

<BarChart id="visites-rubrique" title="Visites par rubrique" dataset={rubriques} showValues />

Fiche BarChart : propriétés, limites et contrôles d’accessibilité.

AreaChart

Aire d’un total, ou de deux à six couches empilées. L’empilement refuse les valeurs négatives.

Visites par source en 2025
Visites par source en 2025Série « Recherche » : de 410 visites (1 janvier 2025) à 610 visites (1 décembre 2025), hausse de 48,8 % ; minimum 400 visites (1 février 2025) ; maximum 640 visites (1 novembre 2025). Série « Direct » : de 260 visites (1 janvier 2025) à 360 visites (1 décembre 2025), hausse de 38,5 % ; minimum 250 visites (1 février 2025) ; maximum 380 visites (1 novembre 2025). Série « Référents » : de 150 visites (1 janvier 2025) à 220 visites (1 décembre 2025), hausse de 46,7 % ; minimum 140 visites (1 février 2025) ; maximum 230 visites (1 octobre 2025). Série « Total empilé » : de 820 visites (1 janvier 2025) à 1 190 visites (1 décembre 2025), hausse de 45,1 % ; minimum 790 visites (1 février 2025) ; maximum 1 240 visites (1 novembre 2025). Axe horizontal : Mois, axe vertical : visites. L'axe vertical part de zéro. Les aires sont empilées dans l'ordre des séries. Le tableau des données suit le graphique.05001 0001 500janv. 2025avr. 2025juil. 2025oct. 2025visites
  • Recherche
  • Direct
  • Référents
Données du graphique
Visites par source en 2025 : Données du graphique
MoisRecherche (visites)Direct (visites)Référents (visites)
1 janvier 2025410260150
1 février 2025400250140
1 mars 2025450270160
1 avril 2025480290170
1 mai 2025520310180
1 juin 2025500300180
1 juillet 2025430270170
1 août 2025400250160
1 septembre 2025540320190
1 octobre 2025600350230
1 novembre 2025640380220
1 décembre 2025610360220
import AreaChart from '@paulperigault/astro/AreaChart.astro';

<AreaChart id="visites-source" title="Visites par source en 2025" dataset={sources} />

Fiche AreaChart : propriétés, limites et contrôles d’accessibilité.

GaugeChart

Une valeur dans un intervalle et des zones nommées, en demi-cercle ou en cercle complet. La valeur et la zone atteinte sont écrites au centre.

Taux de remplissage de la salle
Taux de remplissage de la salleJauge « Taux de remplissage » : 72 % sur un intervalle de 0 % à 100 %, zone « Vigilance ». Zones : Critique : de 0 % à 40 % ; Vigilance : de 40 % à 80 % ; Nominal : de 80 % à 100 %. Le tableau des données suit le graphique.72%VigilanceTaux de remplissage0 %100 %
  • Critique : de 0 % à 40 %
  • Vigilance : de 40 % à 80 %
  • Nominal : de 80 % à 100 %
Données du graphique
Taux de remplissage de la salle : Données du graphique
ZoneDeÀValeur actuelle
Critique0 %40 %
Vigilance40 %80 %72 %
Nominal80 %100 %
import GaugeChart from '@paulperigault/astro/GaugeChart.astro';

<GaugeChart
  id="remplissage"
  title="Taux de remplissage de la salle"
  value={72}
  unit="%"
  label="Taux de remplissage"
  zones={[
    { label: 'Critique', to: 40, tone: 'bad' },
    { label: 'Vigilance', to: 80, tone: 'warning' },
    { label: 'Nominal', tone: 'good' },
  ]}
/>

Fiche GaugeChart : propriétés, limites et contrôles d’accessibilité.

KpiCard

Valeur et unité en grand, variation dite en mots avec son signe, tendance en option.

Visites du mois

1 190 visites

Baisse de 4,03 % (−50 visites) par rapport au mois précédent

Visites par mois en 2025
Visites par mois en 2025Sparkline « Visites par mois en 2025 » : Série « Visites » : de 820 visites (1 janvier 2025) à 1 190 visites (1 décembre 2025), hausse de 45,1 % ; minimum 790 visites (1 février 2025) ; maximum 1 240 visites (1 novembre 2025). Le tableau des données suit le graphique.
Données du graphique
Visites par mois en 2025 : Données du graphique
MoisVisites (visites)
1 janvier 2025820
1 février 2025790
1 mars 2025880
1 avril 2025940
1 mai 20251 010
1 juin 2025980
1 juillet 2025870
1 août 2025810
1 septembre 20251 050
1 octobre 20251 180
1 novembre 20251 240
1 décembre 20251 190
import KpiCard from '@paulperigault/astro/KpiCard.astro';

<KpiCard
  id="visites-mois"
  title="Visites du mois"
  value={1190}
  unit="visites"
  reference={1240}
  referenceLabel="par rapport au mois précédent"
  trend={{ title: 'Visites par mois en 2025', dataset: visites }}
/>

Fiche KpiCard : propriétés, limites et contrôles d’accessibilité.

Sparkline

Tendance d’une série en un trait, sans axes. Le point final, le plus haut et le plus bas sont écrits.

Visites mensuelles en 2025
Visites mensuelles en 2025Sparkline « Visites mensuelles en 2025 » : Série « Visites » : de 820 visites (1 janvier 2025) à 1 190 visites (1 décembre 2025), hausse de 45,1 % ; minimum 790 visites (1 février 2025) ; maximum 1 240 visites (1 novembre 2025). Le tableau des données suit le graphique.
  • Dernière valeur : 1 190 visites (1 décembre 2025)
  • Plus haut : 1 240 visites (1 novembre 2025)
  • Plus bas : 790 visites (1 février 2025)
Données du graphique
Visites mensuelles en 2025 : Données du graphique
MoisVisites (visites)
1 janvier 2025820
1 février 2025790
1 mars 2025880
1 avril 2025940
1 mai 20251 010
1 juin 2025980
1 juillet 2025870
1 août 2025810
1 septembre 20251 050
1 octobre 20251 180
1 novembre 20251 240
1 décembre 20251 190
import Sparkline from '@paulperigault/astro/Sparkline.astro';

<Sparkline id="visites-trait" title="Visites mensuelles en 2025" dataset={visites} />

Fiche Sparkline : propriétés, limites et contrôles d’accessibilité.

DataTable

Toutes les valeurs en tableau, en-têtes associés. Des cases à cocher masquent des colonnes sans JavaScript.

Séries affichées
Visites par source en 2025
MoisRecherche (visites)Direct (visites)Référents (visites)
1 janvier 2025410260150
1 février 2025400250140
1 mars 2025450270160
1 avril 2025480290170
1 mai 2025520310180
1 juin 2025500300180
1 juillet 2025430270170
1 août 2025400250160
1 septembre 2025540320190
1 octobre 2025600350230
1 novembre 2025640380220
1 décembre 2025610360220
import DataTable from '@paulperigault/astro/DataTable.astro';

<DataTable id="visites-tableau" title="Visites par source en 2025" dataset={sources} />

Fiche DataTable : propriétés, limites et contrôles d’accessibilité.

Legend

Un échantillon à forme propre et un libellé par série, pour un graphique dessiné ailleurs.

  • Recherche
  • Direct
  • Référents
import Legend from '@paulperigault/astro/Legend.astro';

<Legend id="sources" items={['Recherche', 'Direct', 'Référents']} />

Fiche Legend : propriétés, limites et contrôles d’accessibilité.

Contrat de données

Tous les composants lisent le même Dataset, défini par l’ADR-0007 (décision 1). Il est validé à la frontière : un jeu invalide fait échouer le build avec un code d’erreur, il n’est jamais dessiné de travers.

import type { Dataset } from '@paulperigault/dataviz';

const visites: Dataset = {
  schema: 1,
  x: { kind: 'time', label: 'Mois', values: ['2025-01-01', '2025-02-01', '2025-03-01'] },
  series: [{ id: 'visites', label: 'Visites', unit: 'visites', values: [820, 790, null] }],
};

Accessibilité

La cible est WCAG 2.2 AA. Les garanties ci-dessous viennent de l’ADR-0007 (décision 3) et sont testées dans packages/astro/test/.

Teinte d’accent

Un projet fournit une teinte OKLCH en degrés ; le système fixe la clarté et le chroma. Les six couleurs de graphique sont dérivées de cette teinte et contrôlées en daltonisme : écart CIEDE2000 d’au moins 10 entre deux couleurs de la catégorielle (seuil de convention, ADR-0007, décision 4). Les motifs et les marqueurs restent exigés en plus.

npm create @paulperigault mon-site -- --accent-hue 150

Ce site garde la teinte par défaut (270,7). Le tableau des jetons pour une autre teinte est dans la section « Teinte d’accent » de la fiche LineChart. La commande complète et ses refus sont décrits sur la page Utiliser.