fix(web): resolve design-system token discrepancies - #365
Merged
DamienBattistella merged 1 commit intoJul 22, 2026
Conversation
Align the frontend with the semantic design tokens defined in app.css and fix a radius-token bug. - app.css: move the full radius scale (--radius-sm..4xl) from `@theme inline` into the plain `@theme` block. With `inline`, Tailwind v4 does not emit the tokens as :root custom properties, so `var(--radius-md)` referenced directly in button/select variants never resolved. Also removes the duplicate --radius-sm/--radius-lg that were declared twice with conflicting values (:root said 0.25rem while the utility computed 0.45rem). - badge, tabs: normalise focus ring `ring-[3px]` -> `ring-3` to match the notation used everywhere else (input, button, select, slider). - article/comparison, key-takeaways: replace raw emerald/rose palette classes with the semantic success-*/danger-* surface tokens (same tokens the Callout component uses). - article/encouragement: replace raw amber with the honey accent-* palette, the app's designated warm/celebratory accent. - admin-analytics alerts, admin-users auth info: replace raw amber warnings with the warning-* surface / status-warning tokens. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014dPMM8hiV8uRmQr6YuWZgn
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Contexte
Audit du design system (
apps/web/src/app.css+components/ui/) pour relever les incohérences par rapport aux tokens sémantiques, puis les corriger. L'objectif : que le code respecte les tokens définis (cohérence = principe clé pour une UI à faible charge cognitive).Corrections
1. Bug de token
--radius(le plus important)La grille de rayons (
--radius-sm…--radius-4xl) était déclarée dans le bloc@theme inline. En Tailwind v4,@theme inlinen'émet pas les variables comme custom properties:root— la valeur est inlinée dans les utilitaires. Orbutton-variants.tsetselect.tsxréférencent directementvar(--radius-md):Cette référence ne se résolvait donc jamais (variable absente de
:root). De plus,--radius-smet--radius-lgétaient déclarés deux fois avec des valeurs contradictoires (:root=0.25rem, mais l'utilitaire calculait0.45rem).Fix : déplacer toute la grille dans le bloc
@themenormal (les rayons ne varient pas selon le thème, contrairement aux couleurs). Les tokens sont maintenant émis dans:rootetvar(--radius-*)se résout correctement. Vérifié sur le CSS compilé :--radius-md:calc(var(--radius) * .8)est bien présent etvar(--radius-md)se résout.2. Notation d'anneau de focus
focus-visible:ring-[3px]→focus-visible:ring-3dansbadgeettabs, pour aligner sur la notation utilisée partout ailleurs (input,button,select,slider). Aucun changement visuel.3. Couleurs de statut : adoption des tokens sémantiques
Deux sous-systèmes (
components/article/,admin-*) utilisaient encore des couleurs brutes de la palette Tailwind au lieu des tokens sémantiques utilisés partout ailleurs :article/comparison.tsx— bloc « Ce qui aide » (emerald) → tokenssuccess-*; bloc « Ce qui aggrave » (rose) → tokensdanger-*(les mêmes que le composantCallout).article/key-takeaways.tsx— emerald →success-*.article/encouragement.tsx— amber → palette honeyaccent-*(l'accent chaleureux/positif désigné de l'app ; « warning » aurait été sémantiquement faux pour un encouragement).admin-analytics/analytics-sections.tsx— alerte amber →warning-surface/warning-border.admin-users/admin-users-auth-info.tsx— amber →text-status-warning.Laissé intentionnellement (non-discrepancies)
article-cluster-theme.ts— table de thèmes couleur par cluster (taxonomie éditoriale) : usage décoratif intentionnel et cohérent en interne.brand-logo, boutons Google) et palette catégorielle du graphique admin (EVENT_COLORS) : constantes légitimes.oklch(...)décoratifs répétés sur les pages auth/landing : chaque page ajuste taille/position/opacité ; consolidation à faible valeur, laissée de côté.Vérification
pnpm build(incluttsc -b) ✓:root, ancien0.25remconflictuel supprimé,var(--radius-md)résolu ✓🤖 Generated with Claude Code
Generated by Claude Code