La couche livre le thème sous forme de fichiers que vous pouvez masquer. Trois
niveaux, du plus petit au plus grand — et le plus petit qui fait l’affaire est
le bon, car un composant que vous remplacez est un composant que vous maintenez
désormais.

## Étapes

:::steps
1. **Une couleur : redéfinissez le token.** La palette est l’ensemble neutre de
   shadcn sous forme de variables CSS. Redéfinissez-en une dans votre feuille de
   style ; aucun fork du fichier de la couche n’est nécessaire.

   ```css [app/assets/css/main.css]
   :root {
     --primary: oklch(0.55 0.2 265);
   }
   .dark {
     --primary: oklch(0.7 0.18 265);
   }
   ```

   Les deux blocs comptent : le thème bascule sur une **classe** `dark`, pas sur
   une media query — un token défini une seule fois est donc faux dans l’un des
   deux modes.

   ::callout{type="warning" title="Vérifiez le contraste que vous venez de changer"}
   `--muted-foreground` porte les descriptions de page, le sommaire et le fil
   d’Ariane. La valeur de la couche est volontairement plus sombre que celle de
   shadcn par défaut, qui mesure en dessous de 4,5:1 sur les surfaces où ce
   token atterrit réellement.
   ::

2. **Un morceau de la mise en page : créez le fichier.** Nuxt résout d’abord
   votre composant du même nom : remplacer `DuxtFooter`, c’est donc créer
   `app/components/DuxtFooter.vue` dans votre projet. Les noms, props et slots
   sont dans la [référence des composants](/reference/components) — un nom
   documenté fait partie de la surface publique et ne sera pas renommé sans une
   version majeure.

3. **Un slot, là où il y en a un.** `DuxtPageFeedback` émet `feedback` et expose
   son état via un slot : vous pouvez y accrocher votre propre formulaire sans
   remplacer le composant — détaillé dans
   [Recueillir des retours](/guides/collect-page-feedback).

4. **Une nouvelle primitive : utilisez la CLI.** La couche possède ses
   composants shadcn-vue au lieu de les importer, et `components.json` oriente
   déjà la CLI vers le bon alias :

   ```bash
   pnpm dlx shadcn-vue@latest add tooltip
   ```

5. **Un composant pour le Markdown.** Tout ce qui se trouve dans
   `app/components/content/` est appelable depuis une page avec la syntaxe de
   bloc MDC. Votre fichier du même nom remplace celui de la couche — voir la
   [référence MDC](/reference/mdc-components).

:::

## Liste de contrôle

- [ ] Rien n’a été copié hors de la couche qu’un token aurait pu changer
- [ ] Chaque token redéfini a une valeur en clair et en sombre
- [ ] Les composants remplacés portent exactement le nom que la référence leur
      donne
- [ ] `pnpm build` rend toujours chaque page (une surcharge est l’endroit où le
      SSR casse)