--colors-white Surface principale et texte inverse.
Les couleurs Sirdata servent a clarifier l’information, hierarchiser les interfaces et identifier les produits sans surcharger l’experience. Elles doivent guider l’attention, soutenir la comprehension et rester coherentes entre le site marketing Astro, les portails produits React et les supports de communication.
La couleur n’est pas un decor. Elle porte un role : structure, action, feedback, identite produit ou signal d’etat.
Les neutres construisent la structure principale : fonds, textes, bordures, tableaux, cartes et navigation. Ils doivent rester dominants dans les interfaces SaaS pour conserver une experience calme et lisible.
--colors-white Surface principale et texte inverse.
--colors-neutral-50 Fond de page clair.
--colors-neutral-100 Fond subtil et etats hover discrets.
--colors-neutral-200 Separations legeres.
--colors-neutral-300 Bordures standards.
--colors-neutral-400 Icones secondaires et controles desactives.
--colors-neutral-500 Textes neutral et muted, bordures fortes.
--colors-neutral-600 Texte courant secondaire.
--colors-neutral-700 Texte par defaut.
--colors-neutral-800 Actions sombres et surfaces inverses.
--colors-neutral-900 Titres et texte primaire.
--colors-neutral-1000 Noir Sirdata structurel.
Sirdata est une marque principalement noire et blanche. La logique visuelle doit rester sobre, premium et structurante : beaucoup de neutres, peu d’effets, et des accents reserves aux actions ou aux produits.
--color-sirdata-black Ancrage de marque, titres forts, surfaces inverses.
--color-sirdata-white Surface principale et respiration visuelle.
--color-sirdata-ink Texte principal, navigation, contenus denses.
--color-sirdata-surface Fond subtil pour sections et cartes.
--color-sirdata-border Separateurs, contours et tableaux.
Les couleurs produit identifient un contexte fonctionnel. Elles ne doivent pas remplacer la hierarchie UI generale. Utiliser une couleur produit pour renforcer une appartenance, pas pour colorer toute l’interface.
Audience utilise un accent violet / magenta pour signaler les experiences liees aux segments, audiences et activations media.
--color-product-audience-primary Accent principal Audience.
--color-product-audience-surface Fond leger pour zones Audience.
--color-product-audience-subtle Emphase douce.
--color-product-audience-border Bordure coloree.
--color-product-audience-text Texte colore a fort contraste.
--color-product-audience-accent Accent ponctuel et data highlights.
ABConsent utilise un accent vert pour evoquer la validation, la confiance et la gestion du consentement.
--color-product-abconsent-primary Accent principal ABConsent.
--color-product-abconsent-surface Fond leger pour zones ABConsent.
--color-product-abconsent-subtle Emphase douce.
--color-product-abconsent-border Bordure coloree.
--color-product-abconsent-text Texte colore a fort contraste.
--color-product-abconsent-accent Accent ponctuel et confirmation produit.
ServerSide utilise un accent bleu pour les integrations techniques, les flux serveur et les contextes de configuration avancee.
--color-product-serverside-primary Accent principal ServerSide.
--color-product-serverside-surface Fond leger pour zones ServerSide.
--color-product-serverside-subtle Emphase douce.
--color-product-serverside-border Bordure coloree.
--color-product-serverside-text Texte colore a fort contraste.
--color-product-serverside-accent Accent ponctuel et signal technique.
Les couleurs semantiques decrivent un role stable. Elles doivent etre privilegiees dans le code produit, car elles peuvent evoluer sans changer l’intention fonctionnelle.
| Role | Token | Usage |
|---|---|---|
| Background default | --color-background-default | Fond principal des vues produit |
| Background subtle | --color-background-subtle | Zones secondaires, groupes, panneaux |
| Background elevated | --color-background-elevated | Cartes, modals, surfaces au-dessus du canvas |
| Background dark surface | --color-background-surface-dark | Cartes et previews sur fond sombre |
| Text primary | --color-text-primary | Titres, donnees importantes |
| Text secondary | --color-text-secondary | Labels, descriptions courtes |
| Text muted | --color-text-muted | Aides, metadata, contenus moins prioritaires |
| Border default | --color-border-default | Contours standards |
| Border subtle | --color-border-subtle | Separations legeres |
| Action primary | --color-action-primary | Action principale |
| Action primary hover | --color-action-primary-hover | Etat hover de l’action principale |
| Success | --color-success | Etat valide ou operation terminee |
| Warning | --color-warning | Risque ou attention non bloquante |
| Danger | --color-danger | Erreur, suppression, action destructive |
| Info | --color-info | Information contextuelle |
Utiliser la couleur produit uniquement pour renforcer l’identite d’un produit : une page Audience peut utiliser un accent violet dans les tags, highlights ou illustrations fonctionnelles, mais les boutons et textes restent guides par les tokens semantiques.
Eviter d’utiliser plusieurs accents produits dans une meme interface. Si une vue compare Audience, ABConsent et ServerSide, reserver les couleurs aux labels ou marqueurs, pas aux fonds principaux.
Reserver danger, warning et success aux etats fonctionnels. Le rouge ne doit jamais servir de couleur decorative.
Utiliser les neutres pour la structure : navigation, tableaux, cartes, bordures, surfaces et textes.
Utiliser les accents pour guider l’attention : action principale, element selectionne, produit actif ou information critique.
| Do | Don’t |
|---|---|
| Utiliser les tokens semantiques plutot que les hexadecimaux directement. | Coder #dc2626 dans un composant produit. |
| Verifier les contrastes texte/fond avant publication. | Poser du texte clair sur une surface pastel sans test. |
| Garder une hierarchie claire entre neutres, actions et produits. | Melanger Audience, ABConsent et ServerSide sans raison fonctionnelle. |
| Utiliser le rouge uniquement pour danger, erreur ou destruction. | Utiliser le rouge comme couleur decorative. |
| Garder les surfaces majoritairement neutres. | Multiplier les surfaces colorees dans une meme vue. |
Les tokens sont exposes globalement depuis src/styles/pixel.css. Les couleurs primitives vivent dans tokens-primitives.css, et les roles de couleur dans tokens-semantic.css.
/* TODO(Figma): remplacer les aliases documentation par les noms officiels Figma. */:root { --color-sirdata-black: var(--colors-neutral-1000); --color-sirdata-white: var(--colors-white); --color-sirdata-ink: var(--colors-neutral-900); --color-sirdata-surface: var(--colors-neutral-50); --color-sirdata-border: var(--colors-neutral-200);
--color-product-audience-primary: var(--colors-purple-600); --color-product-audience-surface: var(--colors-purple-50); --color-product-audience-border: var(--colors-purple-200);
--color-product-abconsent-primary: var(--colors-green-600); --color-product-abconsent-surface: var(--colors-green-50); --color-product-abconsent-border: var(--colors-green-200);
--color-product-serverside-primary: var(--colors-blue-600); --color-product-serverside-surface: var(--colors-blue-50); --color-product-serverside-border: var(--colors-blue-200);
--color-background-elevated: var(--color-background-surface); --color-background-surface-dark: var(--colors-neutral-900); --color-action-primary: var(--color-action-dark-base); --color-action-primary-hover: var(--color-action-dark-light); --color-success: var(--color-state-success-fg); --color-warning: var(--color-state-warning-fg); --color-danger: var(--color-state-danger-fg); --color-info: var(--color-state-info-fg);}Contraste texte/fond : viser au minimum WCAG AA pour les textes courants. Les textes importants, les tableaux et les donnees metier doivent rester lisibles sur surfaces neutres comme colorees.
Focus visible : ne jamais communiquer le focus uniquement par une couleur subtile. Ajouter une bordure, un outline ou un changement de surface suffisamment perceptible.
Information non exclusive a la couleur : un etat danger, warning ou success doit aussi etre indique par du texte, une icone ou une structure claire. La couleur seule ne suffit pas.
Dark mode futur : les tokens semantiques doivent pouvoir changer de valeur sans changer les composants. C’est la raison principale pour utiliser --color-background-*, --color-text-* et --color-state-* plutot que les primitives directement.