Frontend Design Styles
Transposer fidèlement les quatre langages de design dominants dans du code frontend. Le cœur n'est pas de "faire ressemblant", mais d'assurer une cohérence à trois niveaux — tokens sémantiques + morphologie des composants + courbes d'animation — pour que le résultat soit immédiatement reconnaissable par les utilisateurs de la plateforme cible : "ça, c'est iOS / c'est Material / c'est Windows".
Quand l'utiliser / Ne pas l'utiliser
À utiliser : générer ou modifier une interface avec un style de design spécifique ; comparer les quatre styles ; produire des tokens de design et des fichiers de thème ; réaliser un audit visuel selon un langage de design.
Ne pas utiliser : l'utilisateur n'a pas de préférence de style, veut juste une "belle page" rapidement → demander d'abord s'il souhaite un style, ou suivre la logique de recommandation de references/style-router.md ; les tâches purement back-end / algorithmiques ne relèvent pas de cette compétence.
Aperçu rapide des quatre styles
Voici les caractéristiques les plus distinctives. Avant toute implémentation, consultez ce tableau, puis référez-vous aux documents dédiés pour les détails.
| | MIUIX / HyperOS | Apple HIG | Material Design 3 | Fluent 2 |
|---|---|---|---|
| Couleur principale | #3482FF (clair) / #277AF7 (sombre) | #007AFF / #0A84FF | Rôle, base #6750A4 | #0F6CBD |
| Police | MiSans | SF Pro (<20pt Text, ≥20pt Display) | Roboto / Roboto Flex | Segoe UI Variable |
| Taille de corps de texte | 16–17px | 17pt | 16sp (body-large) | 14px (body-1) |
| Langage des coins arrondis | 16dp uniforme + squircle (même origine qu'iOS, pas de pilule pour les boutons) | Coins arrondis à courbure continue (squircle), conteneurs 10–20pt | 12dp pour les cartes / 28dp pour FAB & fenêtres modales / boutons ronds | Petits rayons, contrôles 4px, fenêtres modales 8px, imbrication −2px |
| Technique de hiérarchie | Calques de niveaux de gris (#FFFFFF / #F7F7F7 / #E8E8E8), presque pas d'ombres fortes | Flou de matière (translucency) + listes groupées + contenu au-dessus de l'UI | Superposition tonale (tonal overlay) en priorité, ombres en second plan | Matière (Mica / Acrylic) + ombres multiples discrètes |
| Animation | Légère, avec rebond élastique, 200–300ms | Physique à ressort, 200–300ms, pas de linear | Courbe accentuée cubic-bezier(0.2,0,0,1), gradation par durée token | Rapide et sobre, 150–250ms, easyEase |
| Cible tactile/click | ≥ 48dp | ≥ 44×44pt | ≥ 48dp | Hauteur du contrôle 32px (mode compact/comfort) |
| Ambiance en une phrase | Rond, transparent, technologie bleue | Sobriété, espace vide, contenu d'abord | Forte expression colorée, hiérarchie par tonalité | Productivité, clarté, natif bureau |
Flux de travail
Étape 1 · Définir le style. Utilisateur a spécifié → l'utiliser directement. Non spécifié → lire references/style-router.md, donner 1 recommandation + 1 alternative selon le type de produit/plateforme/densité, puis demander confirmation.
Étape 2 · Lire les tokens. Ouvrir le document de référence correspondant, lire intégralement couleurs, échelles typographiques, espacements, coins arrondis, ombres, animations avant d'écrire du code — ne pas se fier à sa mémoire :
- MIUIX / HyperOS →
references/miuix-hyperos.md - Apple HIG →
references/apple-hig.md - Material Design 3 →
references/material-design-3.md - Fluent 2 →
references/fluent-2.md
Étape 3 · Appliquer les tokens. Copier directement assets/tokens/<style>.css comme couche de tokens sémantiques (déjà avec thèmes clair/sombre). Ne pas écrire de valeurs hexadécimales dans les styles de composants. Le mode sombre se bascule via [data-theme="dark"] ou prefers-color-scheme.
Étape 4 · Construire les composants. Suivre les spécifications du style dans references/components-playbook.md (variantes de boutons, champs de saisie, cartes, navigation, menus, interrupteurs, listes). Chaque état interactif (hover / focus / pressed / selected / disabled) doit être implémenté, pas seulement l'état par défaut.
Étape 5 · Ajouter animations + auto-vérification. Compléter les transitions selon references/motion-and-accessibility.md, puis exécuter python3 scripts/lint_tokens.py <fichier_produit> --style <style>, et enfin passer en revue la checklist (ci-dessous).
Règles absolues
- Ne pas mélanger les styles. Si Fluent est choisi, pas de
#007AFFd'iOS, de FAB en pilule de Material ou de grandes cartes arrondies d'HyperOS. Le mélange est le mode d'échec le plus courant. - Tokens d'abord. Dans le CSS des composants, seules les variables
var(--xxx)sont autorisées — jamais de valeurs littérales pour couleurs, tailles de police ou rayons. - Faire les deux thèmes clair et sombre ensemble. Les quatre systèmes ont des valeurs sombres officielles, à utiliser via les tables ; ne pas tricher avec
filter: invertou des assombrissements manuels. - Les conventions de plateforme sont immuables. Par exemple : zone de clic minimale iOS 44pt, opacité des calques d'état Material, bordure de 1px en bas des contrôles Fluent, fond sombre HyperOS
#242424(pas un noir pur). - L'accessibilité est un critère dur. Contraste du corps de texte ≥ 4.5:1, éléments d'UI ≥ 3:1, anneau de focus visible, respecter
prefers-reduced-motion. - La typographie chinoise doit être traitée à part. Roboto / Segoe UI / SF Pro n'ont pas de glyphes chinois complets ; les interfaces chinoises doivent utiliser des polices de secours comme PingFang, Source Han Sans ou MiSans, et réduire l'espacement entre lettres (letter-spacing latin ne convient pas au chinois).
Spécifications de livraison
- Par défaut, produire un fichier HTML exécutable unique (
<style>+<script>en ligne), les tokens organisés en variables CSS:root, pour prévisualisation et copie faciles. - Si l'utilisateur spécifie un framework, basculer selon les règles de
references/framework-mappings.md: Taildown avecassets/mappings/tailwind.css; React/Vue avec objet de tokens + variables CSS ; Compose en priorité avec les bibliothèques officielles (MiuixThemepour MIUIX,MaterialThemepour M3). - Pour une page de démonstration des composants, se référer à
assets/templates/showcase.html(même jeu de composants présenté dans les quatre styles, avec bascule de thème et mode clair/sombre). - Validation obligatoire après production : exécuter
python3 scripts/lint_tokens.py <fichier_produit> --style <style>; les trois vérifications (valeurs de couleurs codées en dur / contraste / tokens essentiels) doivent passer, sinon corriger avant livraison. - À la livraison, préciser : quel système a été utilisé, les éventuelles déviations volontaires, comment basculer le mode sombre, et la pile de polices de secours.
Checklist d'auto-vérification
Après avoir terminé, cocher chaque point, ne pas livrer si un point échoue :
- Toutes les couleurs proviennent des tokens, pas de hex codé en dur
- Hiérarchie typographique ne dépasse pas 4 niveaux, taille de corps de texte conforme au système
- Système de coins arrondis cohérent (arrondis imbriqués = extérieur − marge intérieure)
- Utilisation des ombres/matières conforme au système (Material utilise superposition tonale, Fluent Mica/Acrylic, iOS matière floutée, HyperOS niveaux de gris)
- Tous les états interactifs sont présents : hover / focus-visible / active / disabled / selected
- Les deux thèmes clair et sombre ont été vérifiés
- Tailles des cibles de clic conformes
- Contraste conforme, anneau de focus visible
- Animations dégradées sous
prefers-reduced-motion - Polices de secours chinoises correctes, espacement ajusté
- Aucune interférence d'un autre système
Fichiers de référence
| Fichier | Contenu |
|---|---|
references/style-router.md | Arbre de décision pour le choix des quatre styles, matrice de comparaison, zones interdites de mélange |
references/miuix-hyperos.md | Table complète des tokens MIUIX + caractéristiques visuelles HyperOS + spécifications des composants |
references/apple-hig.md | Table complète des couleurs système + 12 niveaux Dynamic Type + matières + spécifications des composants |
references/material-design-3.md | Table complète clair/sombre des 29 rôles de couleur + 15 niveaux typographiques + formes/altitude/calques d'état |
references/fluent-2.md | Neutres / échelles de couleurs de marque + Type Ramp + tailles de contrôles + Mica/Acrylic + tokens d'ombres |
references/components-playbook.md | Spécifications détaillées par style pour boutons/saisies/cartes/navigation/menus/interrupteurs/listes |
references/motion-and-accessibility.md | Courbes et durées d'animation des quatre systèmes + exigences d'accessibilité + grille d'audit |
references/framework-mappings.md | Règles de mapping des tokens pour Tailwind / React / Vue / Compose / SwiftUI |
scripts/lint_tokens.py | Validation exécutable : valeurs codées en dur, contraste, exhaustivité des tokens essentiels |
assets/mappings/tailwind.css | Mapping des tokens pour Tailwind v4 @theme, les quatre systèmes peuvent coexister sur une même page |