Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
Reference for Nuxt UI v4 (125+ components built on Reka UI + Tailwind CSS v4) including forms, overlays, and theming.
Files
Skill
Size
Entrypoint
Format
Open file
Syntax-highlighted preview of this file as included in the skill package.
references/installation.md
1# Installation23## Nuxt Installation45```bash6pnpm add @nuxt/ui7```89```ts10// nuxt.config.ts11export default defineNuxtConfig({12modules: ['@nuxt/ui'],13css: ['~/assets/css/main.css']14})15```1617```css18/* assets/css/main.css */19@import 'tailwindcss';20@import '@nuxt/ui';21```2223**Critical**: Wrap app in UApp for Toast, Tooltip, and overlays to work:2425```vue26<!-- app.vue -->27<template>28<UApp>29<NuxtPage />30</UApp>31</template>32```3334### pnpm Gotcha3536If using pnpm, either:37381. Add `shamefully-hoist=true` to `.npmrc`, OR392. Install tailwindcss explicitly: `pnpm add tailwindcss`4041## Vue Installation (Vite)4243```bash44pnpm add @nuxt/ui45```4647```ts48import ui from '@nuxt/ui/vite'49import vue from '@vitejs/plugin-vue'50// vite.config.ts51import { defineConfig } from 'vite'5253export default defineConfig({54plugins: [vue(), ui()]55})56```5758```ts59import ui from '@nuxt/ui/vue-plugin'60// main.ts61import { createApp } from 'vue'62import App from './App.vue'63import './assets/main.css'6465const app = createApp(App)66app.use(ui)67app.mount('#app')68```6970```css71/* assets/main.css */72@import 'tailwindcss';73@import '@nuxt/ui';74```7576**Critical**: Add `isolate` class to root for overlay stacking:7778```vue79<!-- App.vue -->80<template>81<div class="isolate">82<UApp>83<RouterView />84</UApp>85</div>86</template>87```8889### Auto-imports9091Vue generates `auto-imports.d.ts` and `components.d.ts`. Add to `.gitignore`:9293```gitignore94auto-imports.d.ts95components.d.ts96```9798## Module Options99100```ts101// nuxt.config.ts102export default defineNuxtConfig({103modules: ['@nuxt/ui'],104ui: {105prefix: 'U', // Component prefix (default 'U')106fonts: true, // Enable @nuxt/fonts107colorMode: true, // Enable @nuxtjs/color-mode108theme: {109colors: ['primary', 'secondary', 'success', 'info', 'warning', 'error', 'neutral'],110transitions: true, // transition-colors on components111defaultVariants: {112color: 'primary',113size: 'md'114},115prefix: '' // Tailwind CSS prefix (v4.2+) - ensures prefixed utilities work116},117mdc: false, // Force Prose components118content: false, // Force UContent* components119experimental: {120componentDetection: false // Tree-shake unused components (v4.1+) - auto-generates CSS only for used components121}122}123})124```125126## Vue Vite Options127128```ts129// vite.config.ts130ui({131prefix: 'U',132colorMode: true,133inertia: true, // Inertia.js support134theme: {135colors: ['primary', 'secondary', 'success', 'info', 'warning', 'error', 'neutral'],136transitions: true,137defaultVariants: { color: 'primary', size: 'md' },138prefix: ''139},140ui: {141colors: { primary: 'green' }, // Runtime color config142button: { /* theme overrides */ }143}144})145```146147## Auto-installed Modules148149Nuxt UI automatically installs:150151- `@nuxt/icon` - Icon system152- `@nuxt/fonts` - Web fonts (if `fonts: true`)153- `@nuxtjs/color-mode` - Dark mode (if `colorMode: true`)154155## Common Issues156157| Issue | Solution |158| ------------------------- | -------------------------------------------------- |159| Tailwind not found (pnpm) | Add `shamefully-hoist=true` or install tailwindcss |160| Overlays not showing | Wrap app in `<UApp>` |161| Vue overlays broken | Add `isolate` class to root element |162| Icons not loading | Check @nuxt/icon is installed |163| Dark mode not working | Ensure `colorMode: true` in config |164165## Performance Features (v4.1+)166167### Component Virtualization168169Large datasets in CommandPalette, InputMenu, SelectMenu, Table, and Tree automatically use virtualization for better performance.170171### Experimental Component Detection172173Enable `experimental.componentDetection` to auto-generate CSS only for components you actually use:174175```ts176// nuxt.config.ts177export default defineNuxtConfig({178ui: {179experimental: {180componentDetection: true181}182}183})184```185186**Benefits:** Smaller CSS bundle, faster builds, reduced unused styles.187188### Tailwind CSS Prefix Support (v4.2+)189190Avoid style conflicts in complex apps:191192```ts193// nuxt.config.ts194export default defineNuxtConfig({195ui: {196theme: {197prefix: 'ui-' // Prefixes all Tailwind utilities198}199}200})201```202203**Result:** Components use `ui-bg-primary` instead of `bg-primary`.204205## Best Practices206207| Do | Don't |208| -------------------------- | ------------------------- |209| Wrap in UApp first | Forget UApp wrapper |210| Use semantic colors | Hardcode color values |211| Import CSS correctly | Skip @nuxt/ui import |212| Check pnpm hoisting | Ignore tailwindcss errors |213| Use component detection | Ship unused component CSS |214| Use prefix in complex apps | Risk style conflicts |215