Sistema de diseño

El sistema de diseño de Nuxt UI utiliza Tailwind CSS para una temática simple y una fácil personalización.

Tailwind CSS (en inglés)

Tailwind CSS utiliza una configuración CSS primero, lo que le permite definir sus tokens de diseño con la directiva @theme directamente en su CSS.

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

@theme {
  /* Your custom design tokens go here */
}
Consulte la documentación de Tailwind CSS para ver todas las opciones de personalización de variables de tema disponibles.
Tailwind CSS v4 cambió su Preflight para que los botones usen cursor: default en lugar de cursor: pointer para que coincidan con los valores predeterminados del navegador.
app/assets/css/main.css
@layer base {
  button:not(:disabled),
  [role="button"]:not(:disabled) {
    cursor: pointer;
  }
}

Fuentes (Edición española)

Utilice las variables de tema --font-* para personalizar las utilidades de la familia de fuentes ](https://tailwindcss.com/docs/font-family#customizing-your-theme) en su proyecto.

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

@theme {
  --font-sans: 'Public Sans', system-ui, sans-serif;
  --font-mono: 'JetBrains Mono', monospace;
}
Las fuentes definidas aquí se cargan y optimizan automáticamente por el módulo @nuxt/fonts.

colores

Utilice las variables de tema --color-* para personalizar sus colores](https://tailwindcss.com/docs/colors#customizing-your-colors) o override los colores predeterminados .

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;
}
Al agregar colores personalizados, asegúrese de definir todos los tonos de 50 a 950 para cada color.

Puntos de ruptura

Utilice las variables de tema --breakpoint-* para personalizar sus puntos de interrupción ](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

Utilice las variables de tema --ease-* para personalizar la facilidad ](https://tailwindcss.com/docs/transition-timing-function#customizing-your-theme) de las animaciones y transiciones de movimiento en su proyecto.

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

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

Las animaciones de entrada y salida se ejecutan en --ease-out, las animaciones de carga indeterminadas en --ease-in-out, por lo que anulan estos dos tiempos de la biblioteca.

When prefers-reduced-motion is set, overlays fade in place instead of scaling or sliding and motion transitions are disabled.

Sistema de color ## Color

El sistema de color de la interfaz de usuario de Nuxt está diseñado en torno a naming semántico en lugar de valores de color específicos. Este enfoque hace que su interfaz de usuario sea más fácil de mantener y facilita el cambio de tema.

Colores semánticos

Cada alias se define en función de un color de su configuración @theme, que puede ser cualquier color que defina además de la paleta CSS por defecto de Tailwind .

El colorpor defectoDescripción
primaryx{color="primary"} (Edición española)greenCTA principales, navegación activa, elementos de marca, enlaces importantes
secondaryx{color="secondary"}blue tambiénBotones secundarios, acciones alternativas, elementos de interfaz de usuario complementarios
successx{color="success"} (Edición española)greenMensajes de éxito, estados completados, confirmaciones positivas
infox{color="info"} (Edición española)blueAlertas de información, tooltips, texto de ayuda, notificaciones neutrales
warningx{color="warning"} (Edición española)yellowMensajes de advertencia, estados pendientes, elementos que requieren atención
errorx{color="error"} (Edición española)red tambiénMensajes de error, errores de validación, acciones destructivas
Xph150x tambiénslateTexto, fronteras, fondos, estados discapacitados

Estos colores semánticos están disponibles en el prop color de los componentes de la interfaz de usuario de Nuxt:

<template>
  <UButton color="primary">Save Changes</UButton>
</template>
Pruebe el menú de tema: prose-icon{name="i-lucide-palette" class="text-primary"} en el encabezado para ver instantáneamente cómo los diferentes esquemas de color afectan a toda la interfaz de usuario, o abra el editor ](/theme) para personalizar todo a la vez.

Runtime Configuración

Puede configurar estos colores en tiempo de ejecución en su archivo app.config.ts bajo la tecla ui.colors, lo que permite la personalización dinámica del tema sin reiniciar el servidor:

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

Puede configurar estos colores en tiempo de ejecución en su archivo vite.config.ts bajo la tecla ui.colors, lo que permite la personalización dinámica del tema:

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'
        }
      }
    })
  ]
})
Solo puedes usar colores que existan en tu tema.
  • Use los colores predeterminados de Tailwind ](https://tailwindcss.com/docs/colors) (como blue, green, zinc)
  • Defina colores personalizados primero usando la directiva @theme (como brand en nuestro ejemplo anterior)

Extend colores

Es posible que desee definir colores semánticos adicionales más allá de los valores predeterminados, como la adición de un color tertiary:

En primer lugar, registre el nuevo color en su nuxt.config.ts bajo la tecla ui.theme.colors:

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

Luego, asígnalo en tu app.config.ts bajo la clave ui.colors:

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

Registre y asigne el nuevo color en su archivo 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'
        }
      }
    })
  ]
})

Por último, utilice este nuevo color en los componentes que admiten el accesorio color o as una class:

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