**Version**: Nuxt UI v4.2.1 | Nuxt v4.0.0
/plugin marketplace add secondsky/claude-skills/plugin install nuxt-ui-v4@claude-skillsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
references/COMMON_ERRORS_DETAILED.mdreferences/accessibility-patterns.mdreferences/ai-sdk-v5-integration.mdreferences/command-palette-setup.mdreferences/common-components.mdreferences/component-theming-guide.mdreferences/composables-guide.mdreferences/css-variables-reference.mdreferences/dark-mode-guide.mdreferences/data-display-components.mdreferences/design-system-guide.mdreferences/feedback-components-reference.mdreferences/form-advanced-patterns.mdreferences/form-components-reference.mdreferences/form-validation-patterns.mdreferences/i18n-integration.mdreferences/icon-system-guide.mdreferences/layout-components-reference.mdreferences/loading-feedback-patterns.mdreferences/navigation-components-reference.mdVersion: Nuxt UI v4.2.1 | Nuxt v4.0.0 Last Verified: 2025-12-15
A comprehensive production-ready component library combining 100+ accessible components with Nuxt v4's latest features, Tailwind CSS v4's performance, and Reka UI's accessibility foundation.
Use when: Setting up Nuxt v4 projects, building design systems with semantic colors, creating accessible forms/data displays, implementing navigation/overlays/feedback UI, integrating AI chat (AI SDK v5), customizing component themes, debugging Nuxt UI issues
DON'T use: Vue-only projects (no Nuxt), React projects, Nuxt 3 or earlier, Tailwind CSS v3, need headless-only components
bunx nuxi init my-app && cd my-app
bun add @nuxt/ui
// nuxt.config.ts
export default defineNuxtConfig({ modules: ['@nuxt/ui'] })
<!-- app.vue -->
<template><UApp><NuxtPage /></UApp></template>
<style>
@import "tailwindcss";
@import "@nuxt/ui";
</style>
Done! 100+ components ready: <UButton>, <UCard>, <UModal>, etc.
Major Changes:
@nuxt/ui packagePerformance Improvements:
Breaking Changes from v3:
Component Renames:
ButtonGroup → FieldGroupPageMarquee → MarqueePageAccordion removed (use Accordion with unmount-on-hide="false")Model Modifiers:
nullify modifier renamed to nullableoptional modifier addedForm Changes:
nested propContent Utilities:
@nuxt/content directly)New Components:
@internationalized/date)@internationalized/date)New Features:
references/tailwind-prefix-guide.mdreferences/performance-optimization.mdreferences/performance-optimization.mdBreaking Changes (v4.2.0):
inputRef.value.$el.focus() ❌inputRef.value?.focus() ✅.js extension
import { useToast } from '#ui/composables/useToast.js' ❌import { useToast } from '#ui/composables/useToast' ✅Migration Guide: See references/nuxt-v4-features.md for complete v4.2.x migration steps
This skill targets Nuxt v4 with:
Nuxt UI v4 includes 55 components across 7 categories:
Input, InputDate (v4.2+), InputTime (v4.2+), Select, SelectMenu, Textarea, Checkbox, CheckboxGroup, RadioGroup, Switch, Toggle, Slider, Range, Calendar, ColorPicker, PinInput, InputMenu
Tabs, Breadcrumb, Link, Pagination, CommandPalette, NavigationMenu
Modal, Drawer, Dialog, Popover, DropdownMenu, ContextMenu, Sheet, Tooltip
Alert, Toast, Notification, Progress, Skeleton, Empty (v4.2+)
Card, Container, Divider
Table
Button, ButtonGroup (FieldGroup), Avatar, AvatarGroup, Badge, Accordion, Carousel, Chip, Collapsible, Icon, Kbd
Template Coverage: This skill provides 15 copy-paste templates covering 30+ of the most commonly used components.
Nuxt UI v4 uses 7 semantic color aliases: primary, secondary, success, info, warning, error, neutral.
Configure in app.config.ts:
export default defineAppConfig({
ui: {
theme: {
colors: { primary: 'violet', success: 'emerald' }
}
}
})
CSS Utilities: text-default/dimmed/muted/inverse, bg-default/elevated/sunken/overlay, border-default/dimmed
Full details: Load references/semantic-color-system.md for complete color configuration, CSS variables, and utility classes
Tailwind Variants system with 3 levels: (1) Global Config (app.config.ts), (2) Component :ui prop, (3) Slot class prop.
<UButton :ui="{ base: 'font-bold rounded-full' }">Themed Button</UButton>
Advanced theming: Load references/component-theming-guide.md for compound variants, global themes, and customization patterns
17 components: Input, InputDate (v4.2+), InputTime (v4.2+), Select, SelectMenu, Textarea, Checkbox, CheckboxGroup, RadioGroup, Switch, Toggle, Slider, Range, Calendar, ColorPicker, PinInput, InputMenu
Quick Example (Zod validation):
<UForm :state="state" :schema="schema" @submit="onSubmit">
<UFormField name="email" label="Email">
<UInput v-model="state.email" type="email" />
</UFormField>
<UButton type="submit">Submit</UButton>
</UForm>
<script setup lang="ts">
const schema = z.object({
email: z.string().email('Invalid email')
})
</script>
New in v4.2: InputDate, InputTime (require @internationalized/date)
<UInputDate v-model="date" range />
<UInputTime v-model="time" :hour-cycle="12" />
Details: Load references/form-components-reference.md for all 17 components, props, slots, and events
Validation: Load references/form-validation-patterns.md for Zod schemas, nested forms, and date/time validation
Templates: templates/components/ui-form-example.vue, ui-input-date.vue, ui-input-time.vue
Table with sorting, filtering, pagination:
<UTable :rows="rows" :columns="columns" :loading="loading" />
Card with header/footer slots, Avatar, Badge for status indicators.
Details: Load references/data-display-components.md for Table virtualization (v4.1+), Card layouts, Avatar groups, Badge variants
Templates: templates/components/ui-data-table.vue, ui-card-layouts.vue
7 components: Tabs, Breadcrumb, Link, Pagination, CommandPalette, NavigationMenu
Quick Examples:
<UTabs v-model="selected" :items="items" />
<UCommandPalette :groups="groups" placeholder="Search..." />
Details: Load references/navigation-components-reference.md for all navigation patterns, CommandPalette with Fuse.js, keyboard shortcuts
Templates: templates/components/ui-navigation-tabs.vue, ui-command-palette.vue
7 components: Modal, Drawer, Dialog, Popover, DropdownMenu, ContextMenu, Sheet, Tooltip
Quick Examples:
<UModal v-model="isOpen"><UCard>...</UCard></UModal>
<UDrawer v-model="isOpen" side="right">...</UDrawer>
<UDropdownMenu><UButton>Actions</UButton>...</UDropdownMenu>
<UTooltip text="Help"><UButton>Hover</UButton></UTooltip>
Details: Load references/overlay-components.md for all 7 overlay types, positioning, animations, accessibility
Templates: templates/components/ui-modal-dialog.vue, ui-drawer-mobile.vue, ui-dropdown-menu.vue
7 components: Alert, Toast, Notification, Progress, Skeleton, Empty (v4.2+)
Quick Examples:
<!-- Toast (via composable) -->
<script setup>
const { add } = useToast()
add({ title: 'Success!', color: 'success' })
</script>
<!-- Alert, Progress, Skeleton -->
<UAlert color="warning" title="Warning" />
<UProgress :value="60" :max="100" />
<USkeleton class="h-8 w-48" />
<!-- Empty state (v4.2+) -->
<UEmpty icon="i-heroicons-inbox" title="No messages" :actions="[...]" />
Details: Load references/feedback-components-reference.md for all 7 components, Empty state patterns, Toast/Notification API
Templates: templates/components/ui-feedback-states.vue, ui-empty-state.vue, ui-toast-notifications.vue
4 components: Card, Container, Divider, with Avatar & Badge for UI elements.
<UContainer><div>...</div></UContainer>
<UAvatar src="/avatar.jpg" size="lg" />
<UBadge color="success">Online</UBadge>
Details: Load references/layout-components-reference.md for Container max-widths, Card slots, Avatar groups, Badge variants
Templates: templates/components/ui-avatar-badge.vue
Key composables: useToast, useNotification, useColorMode, defineShortcuts
const { add } = useToast()
add({ title: 'Success', color: 'success' })
const colorMode = useColorMode()
colorMode.preference = 'dark'
defineShortcuts({ 'meta_k': () => openCommandPalette() })
Details: Load references/composables-guide.md for all composable APIs, keyboard shortcuts, dark mode patterns
Templates: templates/components/ui-dark-mode-toggle.vue
Build AI chat interfaces with Nuxt UI + AI SDK v5:
<script setup>
import { Chat } from '@ai-sdk/vue'
const chat = new Chat({ api: '/api/chat' })
</script>
<template>
<div v-for="msg in chat.messages">
<UCard><UAvatar />{{ msg.content }}</UCard>
</div>
<UInput v-model="input" @submit="chat.append({ role: 'user', content: input })" />
</template>
Details: Load references/ai-sdk-v5-integration.md for streaming chat, tool calling, embeddings, error handling
Templates: templates/components/ui-chat-interface.vue
Enable (default: true):
// nuxt.config.ts
export default defineNuxtConfig({ ui: { colorMode: true } })
Toggle: <UColorModeSwitch /> (built-in) or useColorMode() composable
Details: Load references/dark-mode-guide.md for auto-detection, localStorage persistence, CSS variables, theme switching
Generate types: bunx nuxt prepare
import type { Button } from '#ui/types'
const schema = z.object({ email: z.string().email() })
type FormData = z.infer<typeof schema>
Details: Load references/typescript-setup.md for type-safe props, Zod inference, tsconfig setup
This skill prevents 21+ errors (see references/COMMON_ERRORS_DETAILED.md for all 21).
Top 3 Critical Errors:
1. Missing UApp Wrapper
<UApp> in app.vue:
<template><UApp><NuxtPage /></UApp></template>
2. CSS Import Order Wrong
<style>
@import "tailwindcss"; /* FIRST */
@import "@nuxt/ui"; /* SECOND */
</style>
3. Template Refs Changed (v4.2+)
Cannot read property 'focus' of undefined after upgrading to v4.2.$el accessor on InputMenu, InputNumber, SelectMenu:
// Before: inputRef.value.$el.focus()
// After: inputRef.value?.focus()
All 21 errors: Load references/COMMON_ERRORS_DETAILED.md for complete solutions with symptoms, causes, and fixes
28 reference files organized by task. Load only when needed to optimize tokens.
Core Setup (new projects, themes):
nuxt-v4-features.md, semantic-color-system.md, component-theming-guide.mdComponents (building UI):
form-components-reference.md, data-display-components.md, navigation-components-reference.md, overlay-components.md, feedback-components-reference.md, layout-components-reference.mdFeatures (specific capabilities):
form-validation-patterns.md, dark-mode-guide.md, composables-guide.md, ai-sdk-v5-integration.md, tailwind-prefix-guide.md, performance-optimization.md, typescript-setup.mdTroubleshooting (errors/debugging):
COMMON_ERRORS_DETAILED.md (21 errors), loading-feedback-patterns.mdPro Tip: Load references progressively as you encounter specific tasks to save tokens