Personnalisation

Le DSBJ expose toutes ses couleurs, espacements et typographies sous forme de variables CSS. Vous pouvez les surcharger pour adapter le design system à la charte de votre ministère ou organisation.

Surcharge CSS simple

Redéfinissez les variables sur :root après l’import de dsbj.css. Tous les composants hériteront automatiquement des nouvelles valeurs.

/* Charger le DSBJ d'abord */
@import '@flrxnt/dsbj';

/* Puis surcharger les variables */
:root {
  /* Couleur d'action principale */
  --bj-action-high: #1a5f3c;
  --bj-action-high-hover: #14493d;
  --bj-action-high-active: #0f3a30;

  /* Fond et bordures */
  --bj-bg-alt: #f0f4f1;
  --bj-border-default: #c8d6cc;

  /* Arrondis */
  --bj-radius-sm: 6px;
  --bj-radius-md: 10px;

  /* Accent */
  --bj-accent: #e8a500;
}

Tokens sémantiques de couleur

Ces variables contrôlent les couleurs de texte, fond et bordure utilisées par tous les composants. Elles référencent la palette brute (--bj-color-*) mais peuvent être remplacées par toute valeur CSS valide.

VariableDescription
--bj-text-defaultTexte principal
--bj-text-titleTitres
--bj-text-altTexte secondaire
--bj-text-mentionTexte discret (placeholders, légendes)
--bj-text-disabledTexte désactivé
--bj-text-invertedTexte sur fond contrasté
--bj-bg-defaultFond principal
--bj-bg-altFond alternatif (sections, bandes)
--bj-bg-contrastFond contrasté (sombre en light, clair en dark)
--bj-bg-elevatedFond surélevé (cartes, modales)
--bj-bg-disabledFond désactivé
--bj-border-defaultBordure standard
--bj-border-strongBordure appuyée
--bj-border-subtleBordure légère (séparateurs)

Couleurs d’action

La couleur d’action principale (--bj-action-high) est utilisée par les boutons, liens, focus, et tout élément interactif. C’est la variable la plus impactante à surcharger.

VariableDescription
--bj-action-highCouleur principale (boutons, liens, focus)
--bj-action-high-hoverÉtat survol de l’action
--bj-action-high-activeÉtat actif / clic
--bj-action-lowFond d’action secondaire
--bj-action-low-hoverFond secondaire au survol
--bj-accentCouleur d’accent (badges, highlights)
--bj-accent-textTexte accent lisible
/* Exemple : charte du Ministère de la Santé */
:root {
  --bj-action-high: #0077b6;
  --bj-action-high-hover: #005f92;
  --bj-action-high-active: #004a73;
  --bj-action-low: #e0f0fa;
  --bj-action-low-hover: #c8e3f5;
  --bj-accent: #ff6b35;
  --bj-accent-text: #c44d1e;
}

Couleurs fonctionnelles

Ces couleurs indiquent les états système (alerte, erreur, succès, info). Chaque état possède une couleur principale et un fond associé.

VariableDescription
--bj-info / --bj-info-bgInformation
--bj-success / --bj-success-bgSuccès
--bj-warning / --bj-warning-bgAvertissement
--bj-error / --bj-error-bgErreur

Typographie et espacement

Les variables de typographie et d’espacement sont également surchargeables pour ajuster la densité visuelle du design system.

VariableDescription
--bj-font-basePolice principale (Montserrat)
--bj-font-altPolice alternative (Spectral)
--bj-font-monoPolice monospace
--bj-fs-xs … --bj-fs-3xlÉchelle de tailles de texte
--bj-fw-regular / semibold / boldGraisses
--bj-spacing-1v … --bj-spacing-16vÉchelle d’espacement (multiples de 4px)
--bj-radius-xs / sm / md / lg / fullArrondis
--bj-shadow-sm / md / lgOmbres portées
--bj-duration-fast / normal / slowDurées d’animation
--bj-easingCourbe d’accélération

Thème sombre personnalisé

Pour modifier les couleurs uniquement en thème sombre, ciblez le sélecteur [data-bj-theme="dark"]. Vos surcharges n’affecteront pas le thème clair.

/* Surcharges spécifiques au mode sombre */
[data-bj-theme="dark"] {
  --bj-action-high: #4da3c9;
  --bj-action-high-hover: #6bb8da;
  --bj-bg-default: #0a1628;
  --bj-bg-alt: #101e33;
  --bj-bg-elevated: #162640;
  --bj-border-default: #253d5c;
}

/* Les mêmes couleurs s'appliquent aussi
   quand le système est en mode sombre */
@media (prefers-color-scheme: dark) {
  :root:not([data-bj-theme="light"]) {
    --bj-action-high: #4da3c9;
    --bj-bg-default: #0a1628;
  }
}

Le thème sombre s’active également automatiquement si le système de l’utilisateur préfère le mode sombre, sauf si data-bj-theme="light" est explicitement défini.

Thème ciblé (par section)

Vous pouvez surcharger les variables sur un conteneur spécifique au lieu de :root. Cela permet d’avoir des sections avec des couleurs différentes sur la même page.

/* Section héro avec un fond contrasté */
.hero-section {
  --bj-bg-default: var(--bj-bg-contrast);
  --bj-text-default: var(--bj-text-inverted);
  --bj-action-high: var(--bj-accent);
  --bj-border-default: rgba(255, 255, 255, 0.2);

  background-color: var(--bj-bg-default);
  color: var(--bj-text-default);
}

/* Les composants DSBJ à l'intérieur de .hero-section
   utiliseront automatiquement ces couleurs */

Personnalisation avancée (SCSS)

Pour une personnalisation complète, importez les sources SCSS et surchargez la palette ou les tokens sémantiques en amont de la compilation. Cette approche est recommandée pour les refontes ministérielles.

// mon-theme/_palette.scss
// Remplacer les couleurs primaires
$palette: (
  'vert-benin': (
    975: #e0f2f1,
    925: #b2dfdb,
    850: #4db6ac,
    main-491: #00796b,
    425: #00695c,
    sun-340: #004d40,
    moon-680: #26a69a,
  ),
  // ... les autres familles restent inchangées
  // sauf celles que vous souhaitez modifier
);

Créez ensuite votre propre fichier d’entrée SCSS pour compiler un thème custom :

// mon-theme.scss
@use '@flrxnt/dsbj/src/core/color/settings' with (
  $palette: (/* votre palette personnalisée */)
);
@use '@flrxnt/dsbj/src/dsbj';

// Ou si vous voulez tout contrôler :
@use '@flrxnt/dsbj/src/core/color/tokens';

:root {
  @include tokens.generate-palette-tokens;
  @include tokens.generate-semantic-tokens-light;

  // Surcharges sémantiques supplémentaires
  --bj-action-high: #00796b;
}

[data-bj-theme="dark"] {
  @include tokens.generate-semantic-tokens-dark;
  --bj-action-high: #26a69a;
}

Référence palette complète

Voici les familles de couleurs brutes disponibles via --bj-color-*. Chaque famille possède plusieurs nuances allant du plus sombre (50) au plus clair (1000).

FamilleDescription
--bj-color-vert-benin-*Vert Bénin (7 nuances : 975, 925, 850, main-491, 425, sun-340, moon-680)
--bj-color-jaune-benin-*Jaune Bénin (6 nuances : 975, 925, main-822, 750, sun-600, moon-850)
--bj-color-rouge-benin-*Rouge Bénin (7 nuances)
--bj-color-ocre-terre-*Ocre terre (5 nuances)
--bj-color-bleu-horizon-*Bleu horizon (7 nuances)
--bj-color-info-*Bleu information (5 nuances)
--bj-color-succes-*Vert succès (5 nuances)
--bj-color-alerte-*Orange avertissement (5 nuances)
--bj-color-erreur-*Rouge erreur (5 nuances)
--bj-color-gris-*Gris neutre (13 nuances : 50 … 1000)