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
| Variable | Role principal | Statut |
|---|---|---|
--bg, --bg2, --bg3 | Fonds principal, secondaire et tertiaire | Requis |
--border | Bordures et separateurs | Requis |
--text, --text2 | Texte principal et secondaire | Requis |
--accent, --accent2 | Liens, focus, etats actifs | Requis |
--green, --red, --yellow, --purple | Etats et accents complementaires | Requis |
--font-mono, --font-sans | Polices du shell | Optionnel |
--radius, --shadow | Arrondis et ombres | Optionnel |
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
iddoit faire 1 a 32 caracteres et n utiliser quea-z, chiffres, tirets et underscores.nameest obligatoire,descriptionetauthoront une longueur maximale.versionaccepte seulement un format court base sur lettres, chiffres, points, underscores et tirets.- Les valeurs CSS sont filtrees pour rejeter
@importnon 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
- Creer un manifeste minimal avec toutes les variables requises.
- Verifier le contraste de base sur la sidebar, les cartes et les etats de formulaire.
- Ajouter ensuite les variables optionnelles pour aligner la typographie et la densite.
- Passer seulement apres cela a un theme
advancedsi le besoin depasse les tokens.