nuxt-ui
nuxt/ui
125+ accessible Vue components with Tailwind CSS theming for Nuxt, Vue, Laravel, and AdonisJS.
What is nuxt-ui?
Nuxt UI is a component library built on Reka UI and Tailwind CSS that provides pre-built, accessible Vue components with semantic color theming. Use it when building interfaces, customizing brand themes, creating forms, or composing layouts like dashboards, documentation sites, and chat interfaces.
- Access 125+ accessible Vue components ready to use
- Customize themes with semantic colors and brand-specific variants
- Build forms with validation, field layout, and error handling
- Compose complex layouts (dashboards, docs, chat, editors) from layout patterns
- Use an MCP server to query component APIs, props, slots, and examples
- Search and integrate Iconify icons with the `i-{collection}-{name}` format
How to install nuxt-ui
npx skills add null --skill nuxt-ui- Node.js and a package manager (pnpm, npm, or yarn)
- Tailwind CSS configured in your project
- For Nuxt: Nuxt 3+; for Vue: Vite setup with @vitejs/plugin-vue
How to use nuxt-ui
- 1.Install @nuxt/ui and tailwindcss via your package manager
- 2.Configure Nuxt or Vite to use the @nuxt/ui module or plugin
- 3.Import the Tailwind CSS and @nuxt/ui styles in your main CSS file
- 4.Wrap your app root in the `<UApp>` component to enable toasts, tooltips, and overlays
- 5.Use the Nuxt UI MCP server (configure in .cursor/mcp.json or via claude mcp add) to query component APIs and examples
- 6.Load relevant reference files from the skill (design-system, component-selection, forms, layouts) based on your task
- 7.Build your UI using semantic color classes (text-default, bg-elevated, border-muted) and the `ui` prop to override component styles
Use cases
- Build a landing page with hero, features, pricing, and footer sections
- Create an admin dashboard with sidebar navigation and data tables
- Design a login/signup form with validation and error messages
- Display tabular data with filtering, pagination, sorting, and row selection
- Add modals, slideovers, drawers, and command palettes to your UI
- Vue and Nuxt developers
- Full-stack developers using Laravel Vite + Inertia or AdonisJS Vite + Inertia
- Product teams building internal tools and dashboards
- Developers customizing UI to match brand guidelines
nuxt-ui FAQ
Load the component-selection reference file for decision matrices (e.g., Modal vs Slideover, Select vs SelectMenu). Use the MCP server's search_components tool to find components by name, description, or category. Browse the components reference file for a categorized index.
Use semantic color classes like text-default, bg-elevated, and border-muted instead of raw Tailwind colors. Load the design-system reference file to understand theming, brand customization, and variants. Override component styles via the `ui` prop or global config.
Use the Nuxt UI MCP server with the get_component or get_component_metadata tools for full API documentation. Alternatively, read the generated theme files: .nuxt/ui/<component>.ts for Nuxt or node_modules/.nuxt-ui/ui/<component>.ts for Vue.
Nuxt UI works with Nuxt, Vue (Vite), Laravel (Vite + Inertia), and AdonisJS (Vite + Inertia). Use ui({ router: 'inertia' }) in vite.config.ts for Inertia-based frameworks.
Use the `i-{collection}-{name}` format, e.g., `i-lucide-check`. Lucide is the default icon collection. Use the MCP server's search_icons tool to find icon names, or browse icones.js.org.
Full instructions (SKILL.md)
Source of truth, from nuxt/ui.
name: nuxt-ui description: Build UIs with @nuxt/ui v4 — 125+ accessible Vue components with Tailwind CSS theming. Use when creating interfaces, customizing themes to match a brand, building forms, or composing layouts like dashboards, docs sites, and chat interfaces.
Nuxt UI
Vue component library built on Reka UI + Tailwind CSS + Tailwind Variants. Works with Nuxt, Vue (Vite), Laravel (Vite + Inertia), and AdonisJS (Vite + Inertia).
MCP Server
For component API details (props, slots, events, full documentation, examples), use the Nuxt UI MCP server. If not already configured, add it:
Cursor — .cursor/mcp.json:
{ "mcpServers": { "nuxt-ui": { "type": "http", "url": "https://ui.nuxt.com/mcp" } } }
Claude Code:
claude mcp add --transport http nuxt-ui https://ui.nuxt.com/mcp
Key MCP tools:
search_components— find components by name, description, or category (no params = list all)search_composables— find composables by name or description (no params = list all)search_icons— search Iconify icons (defaults tolucide), returnsi-{prefix}-{name}namesget_component— full component documentation with usage examplesget_component_metadata— props, slots, events (lightweight, no docs content)get_example— real-world code examples
When you need to know what a component accepts or how its API works, use the MCP. This skill teaches you when to use which component and how to build well.
Core rules (always apply)
- Always wrap the app in
UApp— required for toasts, tooltips, and programmatic overlays. Accepts alocaleprop for i18n. - Always use semantic colors —
text-default,bg-elevated,border-muted, etc. Never use raw Tailwind palette colors liketext-gray-500. - Read generated theme files for slot names — Nuxt:
.nuxt/ui/<component>.ts, Vue:node_modules/.nuxt-ui/ui/<component>.ts. These show every slot, variant, and default class for any component. - Override priority (highest wins):
uiprop /classprop → global config → theme defaults. - Icons use
i-{collection}-{name}format —lucideis the default collection. Use the MCPsearch_iconstool to find icons, or browse at icones.js.org.
How to use this skill
Based on the task, load the relevant reference files before writing any code. Don't load everything — only what's needed.
Reference files
Guidelines — design decisions and conventions:
- design-system — semantic colors, theming, brand customization, variants, the
uiprop - component-selection — decision matrices: when to use Modal vs Slideover, Select vs SelectMenu, Toast vs Alert, etc.
- conventions — coding patterns, slot naming, items arrays, composables, keyboard shortcuts
- forms — form validation, field layout, error handling, Standard Schema
Layouts — full page structure patterns:
- landing — landing pages, blog, changelog, pricing
- dashboard — admin UI with sidebar and panels
- docs — documentation sites with navigation and TOC
- chat — AI chat with Vercel AI SDK
- editor — rich text editor with toolbars
Recipes — complete patterns for common tasks:
- data-tables — tables with filters, pagination, sorting, selection
- auth — login, signup, forgot password forms
- overlays — modals, slideovers, drawers, command palette
- navigation — headers, sidebars, breadcrumbs, tabs
Quick reference:
- components — categorized component index for finding the right component name
Routing table
| Task | Load these references |
|---|---|
| Build a landing page | design-system, conventions, landing |
| Build a dashboard / admin UI | conventions, component-selection, dashboard |
| Add a settings page | conventions, forms |
| Create a login / signup form | conventions, forms, auth |
| Display data in a table | conventions, component-selection, data-tables |
| Customize theme / brand colors | design-system |
| Add a chat interface | conventions, chat |
| Add a modal, slideover, or drawer | conventions, component-selection, overlays |
| Build site navigation | conventions, component-selection, navigation |
| Build a documentation site | conventions, docs |
| Render markdown | component-selection, components, docs |
| Add a rich text editor | conventions, editor |
| General UI work | conventions, component-selection |
Installation
Nuxt
pnpm add @nuxt/ui tailwindcss
// nuxt.config.ts
export default defineNuxtConfig({
modules: ['@nuxt/ui'],
css: ['~/assets/css/main.css']
})
/* app/assets/css/main.css */
@import "tailwindcss";
@import "@nuxt/ui";
<!-- app.vue -->
<template>
<UApp>
<NuxtPage />
</UApp>
</template>
Vue (Vite)
pnpm add @nuxt/ui tailwindcss
// 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()
]
})
// src/main.ts
import './assets/css/main.css'
import { createApp } from 'vue'
import { createRouter, createWebHistory } from 'vue-router'
import ui from '@nuxt/ui/vue-plugin'
import App from './App.vue'
const app = createApp(App)
const router = createRouter({
routes: [],
history: createWebHistory()
})
app.use(router)
app.use(ui)
app.mount('#app')
/* src/assets/css/main.css */
@import "tailwindcss";
@import "@nuxt/ui";
<!-- src/App.vue -->
<template>
<UApp>
<RouterView />
</UApp>
</template>
Add
class="isolate"to your root<div id="app">inindex.html. For Inertia: useui({ router: 'inertia' })invite.config.ts.
Related skills
More from nuxt/ui and the wider catalog.
find-skills
Discover and install agent skills to extend your coding agent's capabilities on demand
frontend-design
Build visually distinctive UI with opinionated aesthetic direction, typography, and layout choices that avoid templated defaults.
vercel-react-best-practices
70 React/Next.js performance rules from Vercel Engineering, prioritized by impact for writing, reviewing, and refactoring code.
agent-browser
Fast browser automation CLI for AI agents — navigate, click, scrape, screenshot, and test via Chrome CDP
web-design-guidelines
Review UI code against Web Interface Guidelines for accessibility, UX, and design best practices
finetuning
Fine-tune models on Azure AI Foundry with SFT, DPO, or RFT training methods.