Design système

Le système de conception de Nuxt UI utilise le CSS Tailwind pour une thématisation simple et une personnalisation facile.

Tailwind CSS

Tailwind CSS utilise une configuration CSS-first, vous permettant de définir vos jetons de conception avec la directive [@themexph003https://tailwindcss.com/docs/functions-and-directives#theme-directive) directement dans votre CSS.

app/assets/css/main.css
@import "tailwindcss";
@import "@nuxt/ui";

@theme {
  /* Your custom design tokens go here */
}
Consultez la documentation CSS de Tailwind pour connaître toutes les options de personnalisation des variables de thème disponibles.
Tailwind CSS v4 a changé son Preflight pour que les boutons utilisent cursor: default au lieu de cursor: pointer pour correspondre aux valeurs par défaut du navigateur.
app/assets/css/main.css
@layer base {
  button:not(:disabled),
  [role="button"]:not(:disabled) {
    cursor: pointer;
  }
}

Fonts écrit

Utilisez les variables de thème --font-* pour personnaliser la famille de polices utilitaies](https://tailwindcss.com/docs/font-family#customizing-your-theme) dans votre projet.

app/assets/css/main.css
@import "tailwindcss";
@import "@nuxt/ui";

@theme {
  --font-sans: 'Public Sans', system-ui, sans-serif;
  --font-mono: 'JetBrains Mono', monospace;
}
Les polices définies ici sont automatiquement chargées et optimisées par le module @nuxt/fonts.

couleurs

Utilisez les variables de thème --color-* pour customize vos colors ou override default colors.

app/assets/css/main.css
@import "tailwindcss";
@import "@nuxt/ui";

@theme static {
  /* Override default green color */
  --color-green-50: #EFFDF5;
  --color-green-100: #D9FBE8;
  --color-green-200: #B3F5D1;
  --color-green-300: #75EDAE;
  --color-green-400: #00DC82;
  --color-green-500: #00C16A;
  --color-green-600: #00A155;
  --color-green-700: #007F45;
  --color-green-800: #016538;
  --color-green-900: #0A5331;
  --color-green-950: #052E16;

  /* Define new custom color */
  --color-brand-50: #fef2f2;
  --color-brand-100: #fee2e2;
  --color-brand-200: #fecaca;
  --color-brand-300: #fca5a5;
  --color-brand-400: #f87171;
  --color-brand-500: #ef4444;
  --color-brand-600: #dc2626;
  --color-brand-700: #b91c1c;
  --color-brand-800: #991b1b;
  --color-brand-900: #7f1d1d;
  --color-brand-950: #450a0a;
}
Lorsque vous ajoutez des couleurs personnalisées, assurez-vous de définir toutes les nuances de 50 à 950 pour chaque couleur.

Breakpoints

Utilisez les variables de thème --breakpoint-* pour personnaliser vos points de rupture ](https://tailwindcss.com/docs/responsive-design#customizing-your-theme).

app/assets/css/main.css
@import "tailwindcss";
@import "@nuxt/ui";

@theme {
  --breakpoint-3xl: 1920px;
  --breakpoint-4xl: 2560px;
  --breakpoint-5xl: 3840px;
}

motion

Utilisez les variables de thème --ease-* pour personnaliser la facilité ](https://tailwindcss.com/docs/transition-timing-function#customizing-your-theme) des animations et des transitions de mouvement dans votre projet.

app/assets/css/main.css
@import "tailwindcss";
@import "@nuxt/ui";

@theme {
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
}

Les animations d'entrée et de sortie s'exécutent sur --ease-out, les animations de chargement indéterminées sur --ease-in-out, donc en remplaçant ces deux rediffusions de la bibliothèque.

Lorsque prefers-reduced-motion est défini, les superpositions s'estompent au lieu de s'adapter ou de glisser et les transitions de mouvement sont désactivées.

Système XPH121XColor

Le système de couleurs de l'interface utilisateur Nuxt est conçu autour de naming plutôt que de valeurs de couleurs spécifiques. Cette approche rend votre interface utilisateur plus facile à maintenir et facilite le changement de thème.

Couleurs sémantiques

Chaque alias est défini en fonction d'une couleur de votre configuration @theme, qui peut être n'importe quelle couleur que vous définissez en plus de la palette CSS Tailwind par défaut ](xph128).

CouleurDéfautDescription
primaryx{color="primary"}greenCTA principaux, navigation active, éléments de marque, liens importants
secondaryx{color="secondary"}blueBoutons secondaires, actions alternatives, éléments complémentaires de l'interface utilisateur
successx{color="success"}Xph139xMessages de réussite, états terminés, confirmations positives
infoblueAlertes d'information, infobulles, texte d'aide, notifications neutres
warningx{color="warning"}yellow équipementMessages d'avertissement, états en attente, éléments nécessitant une attention
errorx{color="error"}redMessages d'erreur, erreurs de validation, actions destructives
neutralslateTexte, frontières, arrière-plans, états handicapés

Ces couleurs sémantiques sont disponibles dans la prop color des composants de l'interface utilisateur Nuxt:

<template>
  <UButton color="primary">Save Changes</UButton>
</template>
Essayez le menu de thème: prose-icon{name="i-lucide-palette" class="text-primary"} dans l'en-tête pour voir instantanément comment différents schémas de couleurs affectent l'ensemble de l'interface utilisateur, ou ouvrez l'éditeur ](xph161) pour tout personnaliser en même temps!

Configuration ### Runtime

Vous pouvez configurer ces couleurs à l'exécution dans votre fichier app.config.ts sous la touche ui.colors, ce qui permet une personnalisation dynamique du thème sans redémarrer le serveur:

app/app.config.ts
export default defineAppConfig({
  ui: {
    colors: {
      primary: 'blue',
      secondary: 'purple',
      neutral: 'zinc'
    }
  }
})

Vous pouvez configurer ces couleurs à l'exécution dans votre fichier vite.config.ts sous la touche ui.colors, ce qui permet une personnalisation dynamique du thème:

vite.config.ts
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import ui from '@nuxt/ui/vite'

export default defineConfig({
  plugins: [
    vue(),
    ui({
      ui: {
        colors: {
          primary: 'blue',
          secondary: 'purple',
          neutral: 'zinc'
        }
      }
    })
  ]
})
Vous pouvez uniquement utiliser les couleurs qui existent dans votre thème.
  • Use los colores predeterminados de Tailwind ](https://tailwindcss.com/docs/colors) (como blue, green, zinc)
  • Définissez d'abord les couleurs personnalisées en utilisant la directive @theme (comme brand dans notre exemple ci-dessus)

Extend couleurs

Vous pouvez définir des couleurs sémantiques supplémentaires au-delà des valeurs par défaut, comme l'ajout d'une couleur tertiary:

Tout d'abord, enregistrez la nouvelle couleur dans votre nuxt.config.ts sous la touche ui.theme.colors:

nuxt.config.ts
export default defineNuxtConfig({
  ui: {
    theme: {
      colors: [
        'primary',
        'secondary',
        'tertiary',
        'info',
        'success',
        'warning',
        'error'
      ]
    }
  }
})

Ensuite, assignez-le dans votre app.config.ts sous la clé ui.colors:

app/app.config.ts
export default defineAppConfig({
  ui: {
    colors: {
      primary: 'blue',
      secondary: 'purple',
      tertiary: 'indigo'
    }
  }
})

Enregistrez et affectez la nouvelle couleur dans votre fichier vite.config.ts:

vite.config.ts
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import ui from '@nuxt/ui/vite'

export default defineConfig({
  plugins: [
    vue(),
    ui({
      theme: {
        colors: [
          'primary',
          'secondary',
          'tertiary',
          'info',
          'success',
          'warning',
          'error'
        ]
      },
      ui: {
        colors: {
          primary: 'blue',
          secondary: 'purple',
          tertiary: 'indigo'
        }
      }
    })
  ]
})

Enfin, utilisez cette nouvelle couleur dans les composants qui prennent en charge la prop color ou as une classe:

<UButton color="tertiary">
  Special Action
</UButton>