Structure

Manifeste minimal

Un theme a variables repose sur un manifeste JSON contenant un identifiant stable, des metadonnees et le bloc variables.

{
  "id": "ocean",
  "name": "Ocean",
  "description": "Palette bleu nuit",
  "author": "Jane Doe",
  "version": "1.0",
  "type": "variables",
  "variables": {
    "--bg": "#0a1628",
    "--bg2": "#0d1f3c",
    "--bg3": "#152849",
    "--border": "#1e3a5f",
    "--text": "#cdd9e5",
    "--text2": "#7d9ab5",
    "--accent": "#39c5cf",
    "--accent2": "#1a9aa4",
    "--green": "#26a641",
    "--red": "#f85149",
    "--yellow": "#e3b341",
    "--purple": "#bc8cff"
  }
}
Tokens supportes

Variables requises et optionnelles

VariableRole principalStatut
--bg, --bg2, --bg3Fonds principal, secondaire et tertiaireRequis
--borderBordures et separateursRequis
--text, --text2Texte principal et secondaireRequis
--accent, --accent2Liens, focus, etats actifsRequis
--green, --red, --yellow, --purpleEtats et accents complementairesRequis
--font-mono, --font-sansPolices du shellOptionnel
--radius, --shadowArrondis et ombresOptionnel

Les valeurs par defaut du shell UI se trouvent dans public/assets/app.css. Un theme a variables remplace uniquement ces tokens, il ne modifie pas la structure HTML.

Validation

Regles imposees par le moteur

  • id doit faire 1 a 32 caracteres et n utiliser que a-z, chiffres, tirets et underscores.
  • name est obligatoire, description et author ont une longueur maximale.
  • version accepte seulement un format court base sur lettres, chiffres, points, underscores et tirets.
  • Les valeurs CSS sont filtrees pour rejeter @import non autorise, javascript:, expression, balises HTML et caracteres dangereux.
La validation est centralisee dans src/ThemeManager.php. Quand vous avez un doute sur un token ou un format, c est le bon fichier a relire avant de livrer.
Iteration

Workflow recommande

  1. Creer un manifeste minimal avec toutes les variables requises.
  2. Verifier le contraste de base sur la sidebar, les cartes et les etats de formulaire.
  3. Ajouter ensuite les variables optionnelles pour aligner la typographie et la densite.
  4. Passer seulement apres cela a un theme advanced si le besoin depasse les tokens.