[{"data":1,"prerenderedAt":1962},["ShallowReactive",2],{"navigation":3,"-docs-getting-started-contribution":929,"-docs-getting-started-contribution-description":1952},[4],{"title":5,"path":6,"stem":7,"children":8,"page":36},"Docs","/docs","docs",[9,163,792,828],{"title":10,"path":11,"stem":12,"children":13,"framework":16,"category":16,"description":16,"icon":30},"Get Started","/docs/getting-started","docs/1.getting-started/1.index",[14,19,37,47,53,76,140],{"title":15,"path":11,"stem":12,"framework":16,"category":16,"description":17,"icon":18},"Introduction",null,"Nuxt UI is a comprehensive Vue UI component library (Nuxt optional), offering 125+ accessible, Tailwind CSS components for building modern web applications.","i-lucide-house",{"title":20,"framework":16,"category":16,"description":16,"shadow":21,"path":22,"stem":23,"children":24,"page":36},"Installation",true,"/docs/getting-started/installation","docs/1.getting-started/2.installation",[25,31],{"title":20,"path":26,"stem":27,"framework":28,"category":16,"description":29,"icon":30},"/docs/getting-started/installation/nuxt","docs/1.getting-started/2.installation/1.nuxt","nuxt","Learn how to install and configure Nuxt UI in your Nuxt application.","i-lucide-square-play",{"title":20,"path":32,"stem":33,"framework":34,"category":16,"description":35,"icon":30},"/docs/getting-started/installation/vue","docs/1.getting-started/2.installation/2.vue","vue","Learn how to install and configure Nuxt UI in your Vue application, compatible with both plain Vite and Inertia.",false,{"title":38,"framework":16,"category":16,"description":16,"icon":39,"shadow":21,"path":40,"stem":41,"children":42,"page":36},"Migration","i-lucide-arrow-right-left","/docs/getting-started/migration","docs/1.getting-started/3.migration",[43],{"title":38,"path":44,"stem":45,"framework":16,"category":16,"description":46,"icon":39},"/docs/getting-started/migration/v4","docs/1.getting-started/3.migration/1.v4","A comprehensive guide to migrate your application from Nuxt UI v3 to Nuxt UI v4.",{"title":48,"path":49,"stem":50,"framework":16,"category":16,"description":51,"icon":52},"Contribution","/docs/getting-started/contribution","docs/1.getting-started/4.contribution","A comprehensive guide on contributing to Nuxt UI, including project structure, development workflow, and best practices.","i-lucide-handshake",{"title":54,"path":55,"stem":56,"children":57,"page":36},"Theme","/docs/getting-started/theme","docs/1.getting-started/5.theme",[58,64,70],{"title":59,"path":60,"stem":61,"framework":16,"category":16,"description":62,"icon":63},"Design System","/docs/getting-started/theme/design-system","docs/1.getting-started/5.theme/1.design-system","Nuxt UI's design system uses Tailwind CSS for simple theming and easy customization.","i-lucide-palette",{"title":65,"path":66,"stem":67,"framework":16,"category":16,"description":68,"icon":69},"CSS Variables","/docs/getting-started/theme/css-variables","docs/1.getting-started/5.theme/2.css-variables","Nuxt UI uses CSS variables as design tokens for flexible, consistent theming with built-in light and dark mode support.","i-lucide-swatch-book",{"title":71,"path":72,"stem":73,"framework":16,"category":16,"description":74,"icon":75},"Components","/docs/getting-started/theme/components","docs/1.getting-started/5.theme/3.components","Learn how to customize Nuxt UI components with the Tailwind Variants API for advanced, flexible, and maintainable styling.","i-lucide-layout-grid",{"title":77,"framework":16,"category":16,"description":16,"path":78,"stem":79,"children":80,"page":36},"Integrations","/docs/getting-started/integrations","docs/1.getting-started/6.integrations",[81,95,101,115,129,135],{"title":82,"framework":16,"category":16,"description":16,"shadow":21,"path":83,"stem":84,"children":85,"page":36},"Icons","/docs/getting-started/integrations/icons","docs/1.getting-started/6.integrations/1.icons",[86,91],{"title":82,"path":87,"stem":88,"framework":28,"category":16,"description":89,"icon":90},"/docs/getting-started/integrations/icons/nuxt","docs/1.getting-started/6.integrations/1.icons/1.nuxt","Nuxt UI integrates with Nuxt Icon to access over 200,000+ icons from Iconify.","i-lucide-smile",{"title":82,"path":92,"stem":93,"framework":34,"category":16,"description":94,"icon":90},"/docs/getting-started/integrations/icons/vue","docs/1.getting-started/6.integrations/1.icons/2.vue","Nuxt UI integrates with Iconify to access over 200,000+ icons.",{"title":96,"path":97,"stem":98,"framework":28,"category":16,"description":99,"icon":100},"Fonts","/docs/getting-started/integrations/fonts","docs/1.getting-started/6.integrations/2.fonts","Nuxt UI integrates with Nuxt Fonts to provide plug-and-play font optimization.","i-lucide-a-large-small",{"title":102,"framework":16,"category":16,"description":16,"shadow":21,"path":103,"stem":104,"children":105,"page":36},"Color Mode","/docs/getting-started/integrations/color-mode","docs/1.getting-started/6.integrations/3.color-mode",[106,111],{"title":102,"path":107,"stem":108,"framework":28,"category":16,"description":109,"icon":110},"/docs/getting-started/integrations/color-mode/nuxt","docs/1.getting-started/6.integrations/3.color-mode/1.nuxt","Nuxt UI integrates with Nuxt Color Mode to allow for easy switching between light and dark themes.","i-lucide-sun-moon",{"title":102,"path":112,"stem":113,"framework":34,"category":16,"description":114,"icon":110},"/docs/getting-started/integrations/color-mode/vue","docs/1.getting-started/6.integrations/3.color-mode/2.vue","Nuxt UI integrates with VueUse to allow for easy switching between light and dark themes.",{"title":116,"framework":16,"category":16,"description":16,"shadow":21,"path":117,"stem":118,"children":119,"page":36},"I18n","/docs/getting-started/integrations/i18n","docs/1.getting-started/6.integrations/4.i18n",[120,126],{"title":121,"path":122,"stem":123,"framework":28,"category":16,"description":124,"icon":125},"Internationalization (i18n)","/docs/getting-started/integrations/i18n/nuxt","docs/1.getting-started/6.integrations/4.i18n/1.nuxt","Nuxt UI supports 50+ locales and multi-directional (LTR/RTL) internationalization.","i-lucide-languages",{"title":121,"path":127,"stem":128,"framework":34,"category":16,"description":124,"icon":125},"/docs/getting-started/integrations/i18n/vue","docs/1.getting-started/6.integrations/4.i18n/2.vue",{"title":130,"path":131,"stem":132,"framework":28,"category":16,"description":133,"icon":134},"Content","/docs/getting-started/integrations/content","docs/1.getting-started/6.integrations/5.content","Nuxt UI integrates with Nuxt Content to deliver beautiful typography and consistent component styling.","i-simple-icons-markdown",{"title":136,"path":137,"stem":138,"framework":34,"category":16,"description":139,"icon":134},"SSR","/docs/getting-started/integrations/ssr","docs/1.getting-started/6.integrations/6.ssr","Nuxt UI has first-party support for Vue SSR. This guide will help you have it fully enabled.",{"title":141,"framework":16,"category":16,"description":16,"path":142,"stem":143,"children":144,"page":36},"Agents","/docs/getting-started/ai","docs/1.getting-started/7.ai",[145,151,157],{"title":146,"path":147,"stem":148,"framework":16,"category":16,"description":149,"icon":150},"MCP Server","/docs/getting-started/ai/mcp","docs/1.getting-started/7.ai/1.mcp","Use Nuxt UI components in your AI assistants with Model Context Protocol support.","i-lucide-server",{"title":152,"path":153,"stem":154,"framework":16,"category":16,"description":155,"icon":156},"LLMs.txt","/docs/getting-started/ai/llms-txt","docs/1.getting-started/7.ai/2.llms-txt","How to get AI tools like Cursor, Windsurf, GitHub Copilot, ChatGPT, and Claude to understand Nuxt UI components, theming, and best practices.","i-lucide-bot",{"title":158,"path":159,"stem":160,"framework":16,"category":16,"description":161,"icon":162},"Skills","/docs/getting-started/ai/skills","docs/1.getting-started/7.ai/3.skills","Install Nuxt UI skills to give AI coding agents deep knowledge of components, theming, and best practices.","i-lucide-sparkles",{"title":71,"framework":16,"category":16,"description":16,"icon":164,"path":165,"stem":166,"children":167,"page":36},"i-lucide-square-code","/docs/components","docs/2.components",[168,174,180,186,192,197,202,207,212,217,222,228,233,238,243,248,253,258,264,269,274,279,284,290,295,300,305,311,316,321,326,331,336,341,346,352,357,362,367,372,378,384,389,394,399,404,409,414,419,424,429,434,439,446,451,456,461,466,471,476,481,486,491,496,501,506,511,516,521,526,531,536,541,546,551,556,561,567,572,577,582,587,592,597,602,607,612,617,622,627,632,637,642,647,652,657,662,667,672,677,682,687,692,697,702,707,712,717,722,727,732,737,742,747,752,757,762,767,772,777,782,787],{"title":169,"path":170,"stem":171,"framework":16,"category":172,"description":173},"Accordion","/docs/components/accordion","docs/2.components/accordion","data","A stacked set of collapsible panels.",{"title":175,"path":176,"stem":177,"framework":16,"category":178,"description":179},"Alert","/docs/components/alert","docs/2.components/alert","element","A callout to draw user's attention.",{"title":181,"path":182,"stem":183,"framework":16,"category":184,"description":185},"App","/docs/components/app","docs/2.components/app","layout","Wraps your app to provide global configurations and more.",{"title":187,"path":188,"stem":189,"framework":16,"category":190,"description":191},"AuthForm","/docs/components/auth-form","docs/2.components/auth-form","page","A customizable Form to create login, register or password reset forms.",{"title":193,"path":194,"stem":195,"framework":16,"category":178,"description":196},"Avatar","/docs/components/avatar","docs/2.components/avatar","An img element with fallback and Nuxt Image support.",{"title":198,"path":199,"stem":200,"framework":16,"category":178,"description":201},"AvatarGroup","/docs/components/avatar-group","docs/2.components/avatar-group","Stack multiple avatars in a group.",{"title":203,"path":204,"stem":205,"framework":16,"category":178,"description":206},"Badge","/docs/components/badge","docs/2.components/badge","A short text to represent a status or a category.",{"title":208,"path":209,"stem":210,"framework":16,"category":178,"description":211},"Banner","/docs/components/banner","docs/2.components/banner","Display a banner at the top of your website to inform users about important information.",{"title":213,"path":214,"stem":215,"framework":16,"category":190,"description":216},"BlogPost","/docs/components/blog-post","docs/2.components/blog-post","A customizable article to display in a blog page.",{"title":218,"path":219,"stem":220,"framework":16,"category":190,"description":221},"BlogPosts","/docs/components/blog-posts","docs/2.components/blog-posts","Display a list of blog posts in a responsive grid layout.",{"title":223,"path":224,"stem":225,"framework":16,"category":226,"description":227},"Breadcrumb","/docs/components/breadcrumb","docs/2.components/breadcrumb","navigation","A hierarchy of links to navigate through a website.",{"title":229,"path":230,"stem":231,"framework":16,"category":178,"description":232},"Button","/docs/components/button","docs/2.components/button","A button element that can act as a link or trigger an action.",{"title":234,"path":235,"stem":236,"framework":16,"category":178,"description":237},"Calendar","/docs/components/calendar","docs/2.components/calendar","A calendar component for selecting single dates, multiple dates or date ranges.",{"title":239,"path":240,"stem":241,"framework":16,"category":178,"description":242},"Card","/docs/components/card","docs/2.components/card","Display content in a card with a header, body and footer.",{"title":244,"path":245,"stem":246,"framework":16,"category":172,"description":247},"Carousel","/docs/components/carousel","docs/2.components/carousel","A carousel with motion and swipe built using Embla.",{"title":249,"path":250,"stem":251,"framework":16,"category":190,"description":252},"ChangelogVersion","/docs/components/changelog-version","docs/2.components/changelog-version","A customizable article to display in a changelog.",{"title":254,"path":255,"stem":256,"framework":16,"category":190,"description":257},"ChangelogVersions","/docs/components/changelog-versions","docs/2.components/changelog-versions","Display a list of changelog versions in a timeline.",{"title":259,"path":260,"stem":261,"framework":16,"category":262,"description":263},"ChatMessage","/docs/components/chat-message","docs/2.components/chat-message","chat","Display a chat message with icon, avatar, and actions.",{"title":265,"path":266,"stem":267,"framework":16,"category":262,"description":268},"ChatMessages","/docs/components/chat-messages","docs/2.components/chat-messages","Display a list of chat messages, designed to work seamlessly with Vercel AI SDK.",{"title":270,"path":271,"stem":272,"framework":16,"category":262,"description":273},"ChatPalette","/docs/components/chat-palette","docs/2.components/chat-palette","A chat palette to create a chatbot interface inside an overlay.",{"title":275,"path":276,"stem":277,"framework":16,"category":262,"description":278},"ChatPrompt","/docs/components/chat-prompt","docs/2.components/chat-prompt","An enhanced Textarea for submitting prompts in AI chat interfaces.",{"title":280,"path":281,"stem":282,"framework":16,"category":262,"description":283},"ChatPromptSubmit","/docs/components/chat-prompt-submit","docs/2.components/chat-prompt-submit","A Button for submitting chat prompts with automatic status handling.",{"title":285,"path":286,"stem":287,"framework":16,"category":288,"description":289},"Checkbox","/docs/components/checkbox","docs/2.components/checkbox","form","An input element to toggle between checked and unchecked states.",{"title":291,"path":292,"stem":293,"framework":16,"category":288,"description":294},"CheckboxGroup","/docs/components/checkbox-group","docs/2.components/checkbox-group","A set of checklist buttons to select multiple option from a list.",{"title":296,"path":297,"stem":298,"framework":16,"category":178,"description":299},"Chip","/docs/components/chip","docs/2.components/chip","An indicator of a numeric value or a state.",{"title":301,"path":302,"stem":303,"framework":16,"category":178,"description":304},"Collapsible","/docs/components/collapsible","docs/2.components/collapsible","A collapsible element to toggle visibility of its content.",{"title":306,"path":307,"stem":308,"framework":16,"category":309,"description":310},"ColorModeAvatar","/docs/components/color-mode-avatar","docs/2.components/color-mode-avatar","color-mode","An Avatar with a different source for light and dark mode.",{"title":312,"path":313,"stem":314,"framework":16,"category":309,"description":315},"ColorModeButton","/docs/components/color-mode-button","docs/2.components/color-mode-button","A Button to switch between light and dark mode.",{"title":317,"path":318,"stem":319,"framework":16,"category":309,"description":320},"ColorModeImage","/docs/components/color-mode-image","docs/2.components/color-mode-image","An image element with a different source for light and dark mode.",{"title":322,"path":323,"stem":324,"framework":16,"category":309,"description":325},"ColorModeSelect","/docs/components/color-mode-select","docs/2.components/color-mode-select","A Select to switch between system, dark & light mode.",{"title":327,"path":328,"stem":329,"framework":16,"category":309,"description":330},"ColorModeSwitch","/docs/components/color-mode-switch","docs/2.components/color-mode-switch","A switch to toggle between light and dark mode.",{"title":332,"path":333,"stem":334,"framework":16,"category":288,"description":335},"ColorPicker","/docs/components/color-picker","docs/2.components/color-picker","A component to select a color.",{"title":337,"path":338,"stem":339,"framework":16,"category":226,"description":340},"CommandPalette","/docs/components/command-palette","docs/2.components/command-palette","A command palette with full-text search powered by Fuse.js for efficient fuzzy matching.",{"title":342,"path":343,"stem":344,"framework":16,"category":184,"description":345},"Container","/docs/components/container","docs/2.components/container","A container lets you center and constrain the width of your content.",{"title":347,"path":348,"stem":349,"framework":28,"category":350,"description":351},"ContentNavigation","/docs/components/content-navigation","docs/2.components/content-navigation","content","An accordion-style navigation component for organizing page links.",{"title":353,"path":354,"stem":355,"framework":28,"category":350,"description":356},"ContentSearch","/docs/components/content-search","docs/2.components/content-search","A ready to use CommandPalette to add to your documentation.",{"title":358,"path":359,"stem":360,"framework":28,"category":350,"description":361},"ContentSearchButton","/docs/components/content-search-button","docs/2.components/content-search-button","A pre-styled Button to open the ContentSearch modal.",{"title":363,"path":364,"stem":365,"framework":28,"category":350,"description":366},"ContentSurround","/docs/components/content-surround","docs/2.components/content-surround","A pair of prev and next links to navigate between pages.",{"title":368,"path":369,"stem":370,"framework":28,"category":350,"description":371},"ContentToc","/docs/components/content-toc","docs/2.components/content-toc","A sticky Table of Contents with automatic active anchor link highlighting.",{"title":373,"path":374,"stem":375,"framework":16,"category":376,"description":377},"ContextMenu","/docs/components/context-menu","docs/2.components/context-menu","overlay","A menu to display actions when right-clicking on an element.",{"title":379,"path":380,"stem":381,"framework":16,"category":382,"description":383},"DashboardGroup","/docs/components/dashboard-group","docs/2.components/dashboard-group","dashboard","A fixed layout component that provides context for dashboard components with sidebar state management and persistence.",{"title":385,"path":386,"stem":387,"framework":16,"category":382,"description":388},"DashboardNavbar","/docs/components/dashboard-navbar","docs/2.components/dashboard-navbar","A responsive navbar to display in a dashboard.",{"title":390,"path":391,"stem":392,"framework":16,"category":382,"description":393},"DashboardPanel","/docs/components/dashboard-panel","docs/2.components/dashboard-panel","A resizable panel to display in a dashboard.",{"title":395,"path":396,"stem":397,"framework":16,"category":382,"description":398},"DashboardResizeHandle","/docs/components/dashboard-resize-handle","docs/2.components/dashboard-resize-handle","A handle to resize a sidebar or panel.",{"title":400,"path":401,"stem":402,"framework":16,"category":382,"description":403},"DashboardSearch","/docs/components/dashboard-search","docs/2.components/dashboard-search","A ready to use CommandPalette to add to your dashboard.",{"title":405,"path":406,"stem":407,"framework":16,"category":382,"description":408},"DashboardSearchButton","/docs/components/dashboard-search-button","docs/2.components/dashboard-search-button","A pre-styled Button to open the DashboardSearch modal.",{"title":410,"path":411,"stem":412,"framework":16,"category":382,"description":413},"DashboardSidebar","/docs/components/dashboard-sidebar","docs/2.components/dashboard-sidebar","A resizable and collapsible sidebar to display in a dashboard.",{"title":415,"path":416,"stem":417,"framework":16,"category":382,"description":418},"DashboardSidebarCollapse","/docs/components/dashboard-sidebar-collapse","docs/2.components/dashboard-sidebar-collapse","A Button to collapse the sidebar on desktop.",{"title":420,"path":421,"stem":422,"framework":16,"category":382,"description":423},"DashboardSidebarToggle","/docs/components/dashboard-sidebar-toggle","docs/2.components/dashboard-sidebar-toggle","A Button to toggle the sidebar on mobile.",{"title":425,"path":426,"stem":427,"framework":16,"category":382,"description":428},"DashboardToolbar","/docs/components/dashboard-toolbar","docs/2.components/dashboard-toolbar","A toolbar to display under the navbar in a dashboard.",{"title":430,"path":431,"stem":432,"framework":16,"category":376,"description":433},"Drawer","/docs/components/drawer","docs/2.components/drawer","A drawer that smoothly slides in & out of the screen.",{"title":435,"path":436,"stem":437,"framework":16,"category":376,"description":438},"DropdownMenu","/docs/components/dropdown-menu","docs/2.components/dropdown-menu","A menu to display actions when clicking on an element.",{"title":440,"path":441,"stem":442,"framework":16,"category":443,"description":444,"badge":445},"Editor","/docs/components/editor","docs/2.components/editor","editor","A rich text editor component based on TipTap with support for markdown, HTML, and JSON content types.","New",{"title":447,"path":448,"stem":449,"framework":16,"category":443,"description":450,"badge":445},"EditorDragHandle","/docs/components/editor-drag-handle","docs/2.components/editor-drag-handle","A draggable handle for reordering and selecting blocks in the editor.",{"title":452,"path":453,"stem":454,"framework":16,"category":443,"description":455,"badge":445},"EditorEmojiMenu","/docs/components/editor-emoji-menu","docs/2.components/editor-emoji-menu","An emoji picker menu that displays emoji suggestions when typing the : character in the editor.",{"title":457,"path":458,"stem":459,"framework":16,"category":443,"description":460,"badge":445},"EditorMentionMenu","/docs/components/editor-mention-menu","docs/2.components/editor-mention-menu","A mention menu that displays user suggestions when typing a trigger character in the editor.",{"title":462,"path":463,"stem":464,"framework":16,"category":443,"description":465,"badge":445},"EditorSuggestionMenu","/docs/components/editor-suggestion-menu","docs/2.components/editor-suggestion-menu","A command menu that displays formatting and action suggestions when typing the / character in the editor.",{"title":467,"path":468,"stem":469,"framework":16,"category":443,"description":470,"badge":445},"EditorToolbar","/docs/components/editor-toolbar","docs/2.components/editor-toolbar","A customizable toolbar for editor actions that can be displayed as fixed, bubble, or floating menu.",{"title":472,"path":473,"stem":474,"framework":16,"category":172,"description":475},"Empty","/docs/components/empty","docs/2.components/empty","A component to display an empty state.",{"title":477,"path":478,"stem":479,"framework":16,"category":184,"description":480},"Error","/docs/components/error","docs/2.components/error","A pre-built error component with NuxtError support.",{"title":482,"path":483,"stem":484,"framework":16,"category":178,"description":485},"FieldGroup","/docs/components/field-group","docs/2.components/field-group","Group multiple button-like elements together.",{"title":487,"path":488,"stem":489,"framework":16,"category":288,"description":490},"FileUpload","/docs/components/file-upload","docs/2.components/file-upload","An input element to upload files.",{"title":492,"path":493,"stem":494,"framework":16,"category":184,"description":495},"Footer","/docs/components/footer","docs/2.components/footer","A responsive footer component.",{"title":497,"path":498,"stem":499,"framework":16,"category":226,"description":500},"FooterColumns","/docs/components/footer-columns","docs/2.components/footer-columns","A list of links as columns to display in your Footer.",{"title":502,"path":503,"stem":504,"framework":16,"category":288,"description":505},"Form","/docs/components/form","docs/2.components/form","A form component with built-in validation and submission handling.",{"title":507,"path":508,"stem":509,"framework":16,"category":288,"description":510},"FormField","/docs/components/form-field","docs/2.components/form-field","A wrapper for form elements that provides validation and error handling.",{"title":512,"path":513,"stem":514,"framework":16,"category":184,"description":515},"Header","/docs/components/header","docs/2.components/header","A responsive header component.",{"title":517,"path":518,"stem":519,"framework":16,"category":178,"description":520},"Icon","/docs/components/icon","docs/2.components/icon","A component to display any icon from Iconify or another component.",{"title":522,"path":523,"stem":524,"framework":16,"category":288,"description":525},"Input","/docs/components/input","docs/2.components/input","An input element to enter text.",{"title":527,"path":528,"stem":529,"framework":16,"category":288,"description":530},"InputDate","/docs/components/input-date","docs/2.components/input-date","An input component for date selection.",{"title":532,"path":533,"stem":534,"framework":16,"category":288,"description":535},"InputMenu","/docs/components/input-menu","docs/2.components/input-menu","An autocomplete input with real-time suggestions.",{"title":537,"path":538,"stem":539,"framework":16,"category":288,"description":540},"InputNumber","/docs/components/input-number","docs/2.components/input-number","An input for numerical values with a customizable range.",{"title":542,"path":543,"stem":544,"framework":16,"category":288,"description":545},"InputTags","/docs/components/input-tags","docs/2.components/input-tags","An input element that displays interactive tags.",{"title":547,"path":548,"stem":549,"framework":16,"category":288,"description":550},"InputTime","/docs/components/input-time","docs/2.components/input-time","An input for selecting a time.",{"title":552,"path":553,"stem":554,"framework":16,"category":178,"description":555},"Kbd","/docs/components/kbd","docs/2.components/kbd","A kbd element to display a keyboard key.",{"title":557,"path":558,"stem":559,"framework":16,"category":226,"description":560},"Link","/docs/components/link","docs/2.components/link","A wrapper around \u003CNuxtLink> with extra props.",{"title":562,"path":563,"stem":564,"framework":16,"category":565,"description":566},"LocaleSelect","/docs/components/locale-select","docs/2.components/locale-select","i18n","A Select to switch between locales.",{"title":568,"path":569,"stem":570,"framework":16,"category":184,"description":571},"Main","/docs/components/main","docs/2.components/main","A main element that fills the available viewport height.",{"title":573,"path":574,"stem":575,"framework":16,"category":172,"description":576},"Marquee","/docs/components/marquee","docs/2.components/marquee","A component to create infinite scrolling content.",{"title":578,"path":579,"stem":580,"framework":16,"category":376,"description":581},"Modal","/docs/components/modal","docs/2.components/modal","A dialog window that can be used to display a message or request user input.",{"title":583,"path":584,"stem":585,"framework":16,"category":226,"description":586},"NavigationMenu","/docs/components/navigation-menu","docs/2.components/navigation-menu","A list of links that can be displayed horizontally or vertically.",{"title":588,"path":589,"stem":590,"framework":16,"category":190,"description":591},"Page","/docs/components/page","docs/2.components/page","A grid layout for your pages with left and right columns.",{"title":593,"path":594,"stem":595,"framework":16,"category":190,"description":596},"PageAnchors","/docs/components/page-anchors","docs/2.components/page-anchors","A list of anchors to be displayed in the page.",{"title":598,"path":599,"stem":600,"framework":16,"category":190,"description":601},"PageAside","/docs/components/page-aside","docs/2.components/page-aside","A sticky aside to display your page navigation.",{"title":603,"path":604,"stem":605,"framework":16,"category":190,"description":606},"PageBody","/docs/components/page-body","docs/2.components/page-body","The main content of your page.",{"title":608,"path":609,"stem":610,"framework":16,"category":190,"description":611},"PageCard","/docs/components/page-card","docs/2.components/page-card","A pre-styled card component that displays a title, description and optional link.",{"title":613,"path":614,"stem":615,"framework":16,"category":190,"description":616},"PageColumns","/docs/components/page-columns","docs/2.components/page-columns","A responsive multi-column layout system for organizing content side-by-side.",{"title":618,"path":619,"stem":620,"framework":16,"category":190,"description":621},"PageCTA","/docs/components/page-cta","docs/2.components/page-cta","A call to action section to display in your pages.",{"title":623,"path":624,"stem":625,"framework":16,"category":190,"description":626},"PageFeature","/docs/components/page-feature","docs/2.components/page-feature","A component to showcase key features of your application.",{"title":628,"path":629,"stem":630,"framework":16,"category":190,"description":631},"PageGrid","/docs/components/page-grid","docs/2.components/page-grid","A responsive grid system for displaying content in a flexible layout.",{"title":633,"path":634,"stem":635,"framework":16,"category":190,"description":636},"PageHeader","/docs/components/page-header","docs/2.components/page-header","A responsive header for your pages.",{"title":638,"path":639,"stem":640,"framework":16,"category":190,"description":641},"PageHero","/docs/components/page-hero","docs/2.components/page-hero","A responsive hero for your pages.",{"title":643,"path":644,"stem":645,"framework":16,"category":190,"description":646},"PageLinks","/docs/components/page-links","docs/2.components/page-links","A list of links to be displayed in the page.",{"title":648,"path":649,"stem":650,"framework":16,"category":190,"description":651},"PageList","/docs/components/page-list","docs/2.components/page-list","A vertical list layout for displaying content in a stacked format.",{"title":653,"path":654,"stem":655,"framework":16,"category":190,"description":656},"PageLogos","/docs/components/page-logos","docs/2.components/page-logos","A list of logos or images to display on your pages.",{"title":658,"path":659,"stem":660,"framework":16,"category":190,"description":661},"PageSection","/docs/components/page-section","docs/2.components/page-section","A responsive section for your pages.",{"title":663,"path":664,"stem":665,"framework":16,"category":226,"description":666},"Pagination","/docs/components/pagination","docs/2.components/pagination","A list of buttons or links to navigate through pages.",{"title":668,"path":669,"stem":670,"framework":16,"category":288,"description":671},"PinInput","/docs/components/pin-input","docs/2.components/pin-input","An input element to enter a pin.",{"title":673,"path":674,"stem":675,"framework":16,"category":376,"description":676},"Popover","/docs/components/popover","docs/2.components/popover","A non-modal dialog that floats around a trigger element.",{"title":678,"path":679,"stem":680,"framework":16,"category":190,"description":681},"PricingPlan","/docs/components/pricing-plan","docs/2.components/pricing-plan","A customizable pricing plan to display in a pricing page.",{"title":683,"path":684,"stem":685,"framework":16,"category":190,"description":686},"PricingPlans","/docs/components/pricing-plans","docs/2.components/pricing-plans","Display a list of pricing plans in a responsive grid layout.",{"title":688,"path":689,"stem":690,"framework":16,"category":190,"description":691},"PricingTable","/docs/components/pricing-table","docs/2.components/pricing-table","A responsive pricing table component that displays tiered pricing plans with feature comparisons.",{"title":693,"path":694,"stem":695,"framework":16,"category":178,"description":696},"Progress","/docs/components/progress","docs/2.components/progress","An indicator showing the progress of a task.",{"title":698,"path":699,"stem":700,"framework":16,"category":288,"description":701},"RadioGroup","/docs/components/radio-group","docs/2.components/radio-group","A set of radio buttons to select a single option from a list.",{"title":703,"path":704,"stem":705,"framework":16,"category":172,"description":706,"badge":445},"ScrollArea","/docs/components/scroll-area","docs/2.components/scroll-area","A flexible scroll container with virtualization support.",{"title":708,"path":709,"stem":710,"framework":16,"category":288,"description":711},"Select","/docs/components/select","docs/2.components/select","A select element to choose from a list of options.",{"title":713,"path":714,"stem":715,"framework":16,"category":288,"description":716},"SelectMenu","/docs/components/select-menu","docs/2.components/select-menu","An advanced searchable select element.",{"title":718,"path":719,"stem":720,"framework":16,"category":178,"description":721},"Separator","/docs/components/separator","docs/2.components/separator","Separates content horizontally or vertically.",{"title":723,"path":724,"stem":725,"framework":16,"category":178,"description":726},"Skeleton","/docs/components/skeleton","docs/2.components/skeleton","A placeholder to show while content is loading.",{"title":728,"path":729,"stem":730,"framework":16,"category":376,"description":731},"Slideover","/docs/components/slideover","docs/2.components/slideover","A dialog that slides in from any side of the screen.",{"title":733,"path":734,"stem":735,"framework":16,"category":288,"description":736},"Slider","/docs/components/slider","docs/2.components/slider","An input to select a numeric value within a range.",{"title":738,"path":739,"stem":740,"framework":16,"category":226,"description":741},"Stepper","/docs/components/stepper","docs/2.components/stepper","A set of steps that are used to indicate progress through a multi-step process.",{"title":743,"path":744,"stem":745,"framework":16,"category":288,"description":746},"Switch","/docs/components/switch","docs/2.components/switch","A control that toggles between two states.",{"title":748,"path":749,"stem":750,"framework":16,"category":172,"description":751},"Table","/docs/components/table","docs/2.components/table","A responsive table element to display data in rows and columns.",{"title":753,"path":754,"stem":755,"framework":16,"category":226,"description":756},"Tabs","/docs/components/tabs","docs/2.components/tabs","A set of tab panels that are displayed one at a time.",{"title":758,"path":759,"stem":760,"framework":16,"category":288,"description":761},"Textarea","/docs/components/textarea","docs/2.components/textarea","A textarea element to input multi-line text.",{"title":54,"path":763,"stem":764,"framework":16,"category":184,"description":765,"badge":766},"/docs/components/theme","docs/2.components/theme","A headless component to theme child components.","Soon",{"title":768,"path":769,"stem":770,"framework":16,"category":172,"description":771},"Timeline","/docs/components/timeline","docs/2.components/timeline","A component that displays a sequence of events with dates, titles, icons or avatars.",{"title":773,"path":774,"stem":775,"framework":16,"category":376,"description":776},"Toast","/docs/components/toast","docs/2.components/toast","A succinct message to provide information or feedback to the user.",{"title":778,"path":779,"stem":780,"framework":16,"category":376,"description":781},"Tooltip","/docs/components/tooltip","docs/2.components/tooltip","A popup that reveals information when hovering over an element.",{"title":783,"path":784,"stem":785,"framework":16,"category":172,"description":786},"Tree","/docs/components/tree","docs/2.components/tree","A tree view component to display and interact with hierarchical data structures.",{"title":788,"path":789,"stem":790,"framework":16,"category":172,"description":791},"User","/docs/components/user","docs/2.components/user","Display user information with name, description and avatar.",{"title":793,"framework":16,"category":16,"description":16,"icon":794,"path":795,"stem":796,"children":797,"page":36},"Composables","i-lucide-square-function","/docs/composables","docs/3.composables",[798,803,808,813,818,823],{"title":799,"path":800,"stem":801,"framework":16,"category":16,"description":802},"defineLocale","/docs/composables/define-locale","docs/3.composables/define-locale","A utility to create a custom locale for your app.",{"title":804,"path":805,"stem":806,"framework":16,"category":16,"description":807},"defineShortcuts","/docs/composables/define-shortcuts","docs/3.composables/define-shortcuts","A composable to define keyboard shortcuts in your app.",{"title":809,"path":810,"stem":811,"framework":16,"category":16,"description":812},"extendLocale","/docs/composables/extend-locale","docs/3.composables/extend-locale","A utility to extend an existing locale with custom translations.",{"title":814,"path":815,"stem":816,"framework":16,"category":16,"description":817},"extractShortcuts","/docs/composables/extract-shortcuts","docs/3.composables/extract-shortcuts","A utility to extract keyboard shortcuts from menu items.",{"title":819,"path":820,"stem":821,"framework":16,"category":16,"description":822},"useOverlay","/docs/composables/use-overlay","docs/3.composables/use-overlay","A composable to programmatically control overlays.",{"title":824,"path":825,"stem":826,"framework":16,"category":16,"description":827},"useToast","/docs/composables/use-toast","docs/3.composables/use-toast","A composable to display toast notifications in your app.",{"title":829,"path":830,"stem":831,"children":832,"framework":28,"category":16,"description":16,"icon":928},"Typography","/docs/typography","docs/4.typography/1.index",[833,835,840,845,850,855,860,864,869,873,878,883,888,893,898,902,907,911,915,919,924],{"title":15,"path":830,"stem":831,"framework":28,"category":16,"description":834},"Beautiful typography components and utilities to style your content with Nuxt UI.",{"title":836,"path":837,"stem":838,"framework":28,"category":16,"description":839},"Headers and text","/docs/typography/headers-and-text","docs/4.typography/2.headers-and-text","Beautifully styled headings, paragraphs, text formatting, and links for optimal readability.",{"title":841,"path":842,"stem":843,"framework":28,"category":16,"description":844},"Lists and tables","/docs/typography/lists-and-tables","docs/4.typography/3.lists-and-tables","Organize information with styled lists and responsive tables for clear, consistent readability.",{"title":846,"path":847,"stem":848,"framework":28,"category":16,"description":849},"Images and embeds","/docs/typography/images-and-embeds","docs/4.typography/4.images-and-embeds","Responsive images, videos, and rich media embeds to enhance and illustrate your documentation.",{"title":851,"path":852,"stem":853,"framework":28,"category":16,"description":854},"Code","/docs/typography/code","docs/4.typography/5.code","Display inline code and syntax-highlighted code blocks with copy-to-clipboard support.",{"title":169,"path":856,"stem":857,"framework":28,"category":858,"description":859},"/docs/typography/accordion","docs/4.typography/accordion","components","Create expandable content sections for better information organization.",{"title":203,"path":861,"stem":862,"framework":28,"category":858,"description":863},"/docs/typography/badge","docs/4.typography/badge","Display version numbers, status labels, and tags within your content.",{"title":865,"path":866,"stem":867,"framework":28,"category":858,"description":868},"Callout","/docs/typography/callout","docs/4.typography/callout","Highlight important information with eye-catching colored boxes and icons.",{"title":239,"path":870,"stem":871,"framework":28,"category":858,"description":872},"/docs/typography/card","docs/4.typography/card","Create highlighted content blocks with optional links and navigation.",{"title":874,"path":875,"stem":876,"framework":28,"category":858,"description":877},"CardGroup","/docs/typography/card-group","docs/4.typography/card-group","Organize multiple cards in responsive grid layouts for better content presentation.",{"title":879,"path":880,"stem":881,"framework":28,"category":858,"description":882},"CodeCollapse","/docs/typography/code-collapse","docs/4.typography/code-collapse","Make long code blocks collapsible to save space and improve readability.",{"title":884,"path":885,"stem":886,"framework":28,"category":858,"description":887},"CodeGroup","/docs/typography/code-group","docs/4.typography/code-group","Group multiple code examples in tabbed interfaces for easy comparison.",{"title":889,"path":890,"stem":891,"framework":28,"category":858,"description":892},"CodePreview","/docs/typography/code-preview","docs/4.typography/code-preview","Display code examples with a preview and their source for clearer documentation.",{"title":894,"path":895,"stem":896,"framework":28,"category":858,"description":897},"CodeTree","/docs/typography/code-tree","docs/4.typography/code-tree","Visualize file and folder structures with syntax-highlighted code.",{"title":301,"path":899,"stem":900,"framework":28,"category":858,"description":901},"/docs/typography/collapsible","docs/4.typography/collapsible","Toggle content visibility with smooth expand and collapse animations.",{"title":903,"path":904,"stem":905,"framework":28,"category":858,"description":906},"Field","/docs/typography/field","docs/4.typography/field","Document API parameters, props, and configuration options clearly.",{"title":482,"path":908,"stem":909,"framework":28,"category":858,"description":910},"/docs/typography/field-group","docs/4.typography/field-group","Group related fields together for comprehensive API documentation.",{"title":517,"path":912,"stem":913,"framework":28,"category":858,"description":914},"/docs/typography/icon","docs/4.typography/icon","Display icons from popular icon libraries to enhance your content.",{"title":552,"path":916,"stem":917,"framework":28,"category":858,"description":918},"/docs/typography/kbd","docs/4.typography/kbd","Display keyboard shortcuts and key combinations with proper styling.",{"title":920,"path":921,"stem":922,"framework":28,"category":858,"description":923},"Steps","/docs/typography/steps","docs/4.typography/steps","Transform headings into numbered step-by-step guides and tutorials.",{"title":753,"path":925,"stem":926,"framework":28,"category":858,"description":927},"/docs/typography/tabs","docs/4.typography/tabs","Organize related content in interactive tabbed interfaces.","i-lucide-square-pilcrow",{"id":930,"title":48,"body":931,"category":16,"description":51,"extension":1947,"framework":16,"links":16,"meta":1948,"navigation":1949,"path":49,"seo":1950,"stem":50,"__hash__":1951},"docs/docs/1.getting-started/4.contribution.md",{"type":932,"value":933,"toc":1926},"minimark",[934,938,958,968,977,981,984,988,1005,1140,1144,1151,1338,1342,1349,1352,1363,1365,1368,1377,1380,1424,1427,1485,1491,1495,1498,1507,1517,1521,1524,1527,1531,1534,1657,1666,1670,1679,1749,1759,1763,1770,1785,1789,1796,1805,1809,1812,1821,1831,1835,1850,1872,1876,1912,1915,1919,1922],[935,936,937],"p",{},"Nuxt UI thrives thanks to its incredible community ❤️. We welcome all contributions through bug reports, pull requests, and feedback to help make this library even better.",[939,940,941],"caution",{},[935,942,943,944,951,952,957],{},"Before reporting a bug or requesting a feature, make sure that you have read through our ",[945,946,950],"a",{"href":947,"rel":948},"https://ui.nuxt.com/",[949],"nofollow","documentation"," and existing ",[945,953,956],{"href":954,"rel":955},"https://github.com/nuxt/ui/issues?q=is%3Aissue%20is%3Aopen%20sort%3Aupdated-desc",[949],"issues",".",[959,960,962,963],"h2",{"id":961},"ai-assistance","AI assistance ",[964,965],"badge",{"className":966,"label":445},[967],"align-text-top",[935,969,970,971,976],{},"We provide a ",[945,972,975],{"href":973,"rel":974},"https://github.com/nuxt/ui/tree/v4/.claude/skills/contributing",[949],"skill"," for AI assistants to help you contribute to Nuxt UI. It will automatically guide you through component structure, theming patterns, testing conventions, and documentation guidelines when working in this repository.",[959,978,980],{"id":979},"project-structure","Project structure",[935,982,983],{},"Here's an overview of the key directories and files in the Nuxt UI project structure:",[985,986,987],"h3",{"id":950},"Documentation",[935,989,990,991,994,995,998,999,1004],{},"The documentation lives in the ",[992,993,7],"code",{}," folder as a Nuxt app using ",[992,996,997],{},"@nuxt/content"," to generate pages from Markdown files. See the ",[945,1000,1003],{"href":1001,"rel":1002},"https://content.nuxt.com/docs/getting-started",[949],"Nuxt Content documentation"," for details on how it works. Here's a breakdown of its structure:",[1006,1007,1012],"pre",{"className":1008,"code":1009,"language":1010,"meta":1011,"style":1011},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","├── app/\n│   ├── assets/\n│   ├── components/\n│   │   └── content/\n│   │       └── examples   # Components used in documentation as examples\n│   ├── composables/\n│   └── ...\n├── content/\n│   ├── 1.getting-started\n│   ├── 2.composables\n│   └── 3.components       # Components documentation\n","bash","",[992,1013,1014,1027,1039,1049,1063,1080,1090,1100,1107,1117,1127],{"__ignoreMap":1011},[1015,1016,1019,1023],"span",{"class":1017,"line":1018},"line",1,[1015,1020,1022],{"class":1021},"sBMFI","├──",[1015,1024,1026],{"class":1025},"sfazB"," app/\n",[1015,1028,1030,1033,1036],{"class":1017,"line":1029},2,[1015,1031,1032],{"class":1021},"│",[1015,1034,1035],{"class":1025},"   ├──",[1015,1037,1038],{"class":1025}," assets/\n",[1015,1040,1042,1044,1046],{"class":1017,"line":1041},3,[1015,1043,1032],{"class":1021},[1015,1045,1035],{"class":1025},[1015,1047,1048],{"class":1025}," components/\n",[1015,1050,1052,1054,1057,1060],{"class":1017,"line":1051},4,[1015,1053,1032],{"class":1021},[1015,1055,1056],{"class":1025},"   │",[1015,1058,1059],{"class":1025},"   └──",[1015,1061,1062],{"class":1025}," content/\n",[1015,1064,1066,1068,1070,1073,1076],{"class":1017,"line":1065},5,[1015,1067,1032],{"class":1021},[1015,1069,1056],{"class":1025},[1015,1071,1072],{"class":1025},"       └──",[1015,1074,1075],{"class":1025}," examples",[1015,1077,1079],{"class":1078},"sHwdD","   # Components used in documentation as examples\n",[1015,1081,1083,1085,1087],{"class":1017,"line":1082},6,[1015,1084,1032],{"class":1021},[1015,1086,1035],{"class":1025},[1015,1088,1089],{"class":1025}," composables/\n",[1015,1091,1093,1095,1097],{"class":1017,"line":1092},7,[1015,1094,1032],{"class":1021},[1015,1096,1059],{"class":1025},[1015,1098,1099],{"class":1025}," ...\n",[1015,1101,1103,1105],{"class":1017,"line":1102},8,[1015,1104,1022],{"class":1021},[1015,1106,1062],{"class":1025},[1015,1108,1110,1112,1114],{"class":1017,"line":1109},9,[1015,1111,1032],{"class":1021},[1015,1113,1035],{"class":1025},[1015,1115,1116],{"class":1025}," 1.getting-started\n",[1015,1118,1120,1122,1124],{"class":1017,"line":1119},10,[1015,1121,1032],{"class":1021},[1015,1123,1035],{"class":1025},[1015,1125,1126],{"class":1025}," 2.composables\n",[1015,1128,1130,1132,1134,1137],{"class":1017,"line":1129},11,[1015,1131,1032],{"class":1021},[1015,1133,1059],{"class":1025},[1015,1135,1136],{"class":1025}," 3.components",[1015,1138,1139],{"class":1078},"       # Components documentation\n",[985,1141,1143],{"id":1142},"module","Module",[935,1145,1146,1147,1150],{},"The module code resides in the ",[992,1148,1149],{},"src"," folder. Here's a breakdown of its structure:",[1006,1152,1154],{"className":1008,"code":1153,"language":1010,"meta":1011,"style":1011},"├── plugins/\n├── runtime/\n│   ├── components/        # Where all the components are located\n│   │   ├── Accordion.vue\n│   │   ├── Alert.vue\n│   │   └── ...\n│   ├── composables/\n│   ├── locale/\n│   ├── plugins/\n│   ├── types/\n│   ├── utils/\n│   └── vue/\n│       ├── components/\n│       └── plugins/\n├── theme/                 # This where the theme for each component is located\n│   ├── accordion.ts       # Theme for Accordion component\n│   ├── alert.ts\n│   └── ...\n└── module.ts\n",[992,1155,1156,1163,1170,1182,1193,1204,1214,1222,1231,1239,1248,1257,1267,1277,1286,1297,1310,1320,1329],{"__ignoreMap":1011},[1015,1157,1158,1160],{"class":1017,"line":1018},[1015,1159,1022],{"class":1021},[1015,1161,1162],{"class":1025}," plugins/\n",[1015,1164,1165,1167],{"class":1017,"line":1029},[1015,1166,1022],{"class":1021},[1015,1168,1169],{"class":1025}," runtime/\n",[1015,1171,1172,1174,1176,1179],{"class":1017,"line":1041},[1015,1173,1032],{"class":1021},[1015,1175,1035],{"class":1025},[1015,1177,1178],{"class":1025}," components/",[1015,1180,1181],{"class":1078},"        # Where all the components are located\n",[1015,1183,1184,1186,1188,1190],{"class":1017,"line":1051},[1015,1185,1032],{"class":1021},[1015,1187,1056],{"class":1025},[1015,1189,1035],{"class":1025},[1015,1191,1192],{"class":1025}," Accordion.vue\n",[1015,1194,1195,1197,1199,1201],{"class":1017,"line":1065},[1015,1196,1032],{"class":1021},[1015,1198,1056],{"class":1025},[1015,1200,1035],{"class":1025},[1015,1202,1203],{"class":1025}," Alert.vue\n",[1015,1205,1206,1208,1210,1212],{"class":1017,"line":1082},[1015,1207,1032],{"class":1021},[1015,1209,1056],{"class":1025},[1015,1211,1059],{"class":1025},[1015,1213,1099],{"class":1025},[1015,1215,1216,1218,1220],{"class":1017,"line":1092},[1015,1217,1032],{"class":1021},[1015,1219,1035],{"class":1025},[1015,1221,1089],{"class":1025},[1015,1223,1224,1226,1228],{"class":1017,"line":1102},[1015,1225,1032],{"class":1021},[1015,1227,1035],{"class":1025},[1015,1229,1230],{"class":1025}," locale/\n",[1015,1232,1233,1235,1237],{"class":1017,"line":1109},[1015,1234,1032],{"class":1021},[1015,1236,1035],{"class":1025},[1015,1238,1162],{"class":1025},[1015,1240,1241,1243,1245],{"class":1017,"line":1119},[1015,1242,1032],{"class":1021},[1015,1244,1035],{"class":1025},[1015,1246,1247],{"class":1025}," types/\n",[1015,1249,1250,1252,1254],{"class":1017,"line":1129},[1015,1251,1032],{"class":1021},[1015,1253,1035],{"class":1025},[1015,1255,1256],{"class":1025}," utils/\n",[1015,1258,1260,1262,1264],{"class":1017,"line":1259},12,[1015,1261,1032],{"class":1021},[1015,1263,1059],{"class":1025},[1015,1265,1266],{"class":1025}," vue/\n",[1015,1268,1270,1272,1275],{"class":1017,"line":1269},13,[1015,1271,1032],{"class":1021},[1015,1273,1274],{"class":1025},"       ├──",[1015,1276,1048],{"class":1025},[1015,1278,1280,1282,1284],{"class":1017,"line":1279},14,[1015,1281,1032],{"class":1021},[1015,1283,1072],{"class":1025},[1015,1285,1162],{"class":1025},[1015,1287,1289,1291,1294],{"class":1017,"line":1288},15,[1015,1290,1022],{"class":1021},[1015,1292,1293],{"class":1025}," theme/",[1015,1295,1296],{"class":1078},"                 # This where the theme for each component is located\n",[1015,1298,1300,1302,1304,1307],{"class":1017,"line":1299},16,[1015,1301,1032],{"class":1021},[1015,1303,1035],{"class":1025},[1015,1305,1306],{"class":1025}," accordion.ts",[1015,1308,1309],{"class":1078},"       # Theme for Accordion component\n",[1015,1311,1313,1315,1317],{"class":1017,"line":1312},17,[1015,1314,1032],{"class":1021},[1015,1316,1035],{"class":1025},[1015,1318,1319],{"class":1025}," alert.ts\n",[1015,1321,1323,1325,1327],{"class":1017,"line":1322},18,[1015,1324,1032],{"class":1021},[1015,1326,1059],{"class":1025},[1015,1328,1099],{"class":1025},[1015,1330,1332,1335],{"class":1017,"line":1331},19,[1015,1333,1334],{"class":1021},"└──",[1015,1336,1337],{"class":1025}," module.ts\n",[959,1339,1341],{"id":1340},"cli","CLI",[935,1343,1344,1345,1348],{},"To make development easier, we've created a CLI that you can use to generate components and locales. You can access it using the ",[992,1346,1347],{},"nuxt-ui make"," command.",[935,1350,1351],{},"First, you need to link the CLI to your global environment:",[1006,1353,1357],{"className":1354,"code":1355,"language":1356,"meta":1011,"style":1011},"language-sh shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npm link\n","sh",[992,1358,1359],{"__ignoreMap":1011},[1015,1360,1361],{"class":1017,"line":1018},[1015,1362,1355],{},[985,1364,71],{"id":858},[935,1366,1367],{},"You can create new components using the following command:",[1006,1369,1371],{"className":1354,"code":1370,"language":1356,"meta":1011,"style":1011},"nuxt-ui make component \u003Cname> [options]\n",[992,1372,1373],{"__ignoreMap":1011},[1015,1374,1375],{"class":1017,"line":1018},[1015,1376,1370],{},[935,1378,1379],{},"Available options:",[1381,1382,1383,1390,1396,1402],"ul",{},[1384,1385,1386,1389],"li",{},[992,1387,1388],{},"--primitive"," Create a primitive component",[1384,1391,1392,1395],{},[992,1393,1394],{},"--prose"," Create a prose component",[1384,1397,1398,1401],{},[992,1399,1400],{},"--content"," Create a content component",[1384,1403,1404,1407,1408,1411,1412,1411,1414,1411,1417,1411,1420,1423],{},[992,1405,1406],{},"--template"," Only generate specific template (available templates: ",[992,1409,1410],{},"playground",", ",[992,1413,7],{},[992,1415,1416],{},"test",[992,1418,1419],{},"theme",[992,1421,1422],{},"component",")",[935,1425,1426],{},"Example:",[1006,1428,1430],{"className":1354,"code":1429,"language":1356,"meta":1011,"style":1011},"# Create a basic component\nnuxt-ui make component my-component\n\n# Create a prose component\nnuxt-ui make component heading --prose\n\n# Create a content component\nnuxt-ui make component block --content\n\n# Generate only documentation template\nnuxt-ui make component my-component --template=docs\n",[992,1431,1432,1437,1442,1447,1452,1457,1461,1466,1471,1475,1480],{"__ignoreMap":1011},[1015,1433,1434],{"class":1017,"line":1018},[1015,1435,1436],{},"# Create a basic component\n",[1015,1438,1439],{"class":1017,"line":1029},[1015,1440,1441],{},"nuxt-ui make component my-component\n",[1015,1443,1444],{"class":1017,"line":1041},[1015,1445,1446],{"emptyLinePlaceholder":21},"\n",[1015,1448,1449],{"class":1017,"line":1051},[1015,1450,1451],{},"# Create a prose component\n",[1015,1453,1454],{"class":1017,"line":1065},[1015,1455,1456],{},"nuxt-ui make component heading --prose\n",[1015,1458,1459],{"class":1017,"line":1082},[1015,1460,1446],{"emptyLinePlaceholder":21},[1015,1462,1463],{"class":1017,"line":1092},[1015,1464,1465],{},"# Create a content component\n",[1015,1467,1468],{"class":1017,"line":1102},[1015,1469,1470],{},"nuxt-ui make component block --content\n",[1015,1472,1473],{"class":1017,"line":1109},[1015,1474,1446],{"emptyLinePlaceholder":21},[1015,1476,1477],{"class":1017,"line":1119},[1015,1478,1479],{},"# Generate only documentation template\n",[1015,1481,1482],{"class":1017,"line":1129},[1015,1483,1484],{},"nuxt-ui make component my-component --template=docs\n",[1486,1487,1488],"note",{},[935,1489,1490],{},"When creating a new component, the CLI will automatically generate all the necessary files like the component itself, theme, tests, and documentation.",[985,1492,1494],{"id":1493},"locales","Locales",[935,1496,1497],{},"You can create new locales using the following command:",[1006,1499,1501],{"className":1354,"code":1500,"language":1356,"meta":1011,"style":1011},"nuxt-ui make locale --code \u003Ccode> --name \u003Cname>\n",[992,1502,1503],{"__ignoreMap":1011},[1015,1504,1505],{"class":1017,"line":1018},[1015,1506,1500],{},[1486,1508,1510],{"to":1509},"/docs/getting-started/integrations/i18n/nuxt#supported-languages",[935,1511,1512,1513,1516],{},"Learn more about ",[1514,1515,565],"strong",{}," in the documentation.",[959,1518,1520],{"id":1519},"submit-a-pull-request-pr","Submit a Pull Request (PR)",[935,1522,1523],{},"Before you start, check if there's an existing issue describing the problem or feature request you're working on. If there is, please leave a comment on the issue to let us know you're working on it.",[935,1525,1526],{},"If there isn't, open a new issue to discuss the problem or feature.",[985,1528,1530],{"id":1529},"local-development","Local development",[935,1532,1533],{},"To begin local development, follow these steps:",[1535,1536,1538,1547,1556,1565,1574,1578,1587,1591,1600,1604,1615,1624,1632,1641,1648],"steps",{"level":1537},"4",[1539,1540,1542,1543,1546],"h4",{"id":1541},"clone-the-nuxtui-repository-to-your-local-machine","Clone the ",[992,1544,1545],{},"nuxt/ui"," repository to your local machine",[1006,1548,1550],{"className":1354,"code":1549,"language":1356,"meta":1011,"style":1011},"git clone -b v4 https://github.com/nuxt/ui.git\n",[992,1551,1552],{"__ignoreMap":1011},[1015,1553,1554],{"class":1017,"line":1018},[1015,1555,1549],{},[1539,1557,1559,1560],{"id":1558},"enable-corepack","Enable ",[945,1561,1564],{"href":1562,"rel":1563},"https://github.com/nodejs/corepack",[949],"Corepack",[1006,1566,1568],{"className":1354,"code":1567,"language":1356,"meta":1011,"style":1011},"corepack enable\n",[992,1569,1570],{"__ignoreMap":1011},[1015,1571,1572],{"class":1017,"line":1018},[1015,1573,1567],{},[1539,1575,1577],{"id":1576},"install-dependencies","Install dependencies",[1006,1579,1581],{"className":1354,"code":1580,"language":1356,"meta":1011,"style":1011},"pnpm install\n",[992,1582,1583],{"__ignoreMap":1011},[1015,1584,1585],{"class":1017,"line":1018},[1015,1586,1580],{},[1539,1588,1590],{"id":1589},"generate-type-stubs","Generate type stubs",[1006,1592,1594],{"className":1354,"code":1593,"language":1356,"meta":1011,"style":1011},"pnpm run dev:prepare\n",[992,1595,1596],{"__ignoreMap":1011},[1015,1597,1598],{"class":1017,"line":1018},[1015,1599,1593],{},[1539,1601,1603],{"id":1602},"start-development","Start development",[1381,1605,1606],{},[1384,1607,1608,1609,1611,1612,1614],{},"To work on the ",[1514,1610,950],{}," located in the ",[992,1613,7],{}," folder, run:",[1006,1616,1618],{"className":1354,"code":1617,"language":1356,"meta":1011,"style":1011},"pnpm run docs\n",[992,1619,1620],{"__ignoreMap":1011},[1015,1621,1622],{"class":1017,"line":1018},[1015,1623,1617],{},[1381,1625,1626],{},[1384,1627,1628,1629,1631],{},"To test the Nuxt components using the ",[1514,1630,1410],{},", run:",[1006,1633,1635],{"className":1354,"code":1634,"language":1356,"meta":1011,"style":1011},"pnpm run dev\n",[992,1636,1637],{"__ignoreMap":1011},[1015,1638,1639],{"class":1017,"line":1018},[1015,1640,1634],{},[1381,1642,1643],{},[1384,1644,1645,1646,1631],{},"To test the Vue components using the ",[1514,1647,1410],{},[1006,1649,1651],{"className":1354,"code":1650,"language":1356,"meta":1011,"style":1011},"pnpm run dev:vue\n",[992,1652,1653],{"__ignoreMap":1011},[1015,1654,1655],{"class":1017,"line":1018},[1015,1656,1650],{},[1486,1658,1660],{"to":1659},"#cli",[935,1661,1662,1663,1665],{},"If you're working on implementing a new component, check the ",[1514,1664,1341],{}," section to kickstart the process.",[985,1667,1669],{"id":1668},"ide-setup","IDE Setup",[935,1671,1672,1673,1678],{},"We recommend using VSCode alongside the ",[945,1674,1677],{"href":1675,"rel":1676},"https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint",[949],"ESLint extension",". You can enable auto-fix and formatting when saving your code. Here's how:",[1006,1680,1684],{"className":1681,"code":1682,"language":1683,"meta":1011,"style":1011},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"editor.codeActionsOnSave\": {\n    \"source.fixAll\": false,\n    \"source.fixAll.eslint\": true\n  }\n}\n","json",[992,1685,1686,1692,1710,1725,1739,1744],{"__ignoreMap":1011},[1015,1687,1688],{"class":1017,"line":1018},[1015,1689,1691],{"class":1690},"sMK4o","{\n",[1015,1693,1694,1697,1701,1704,1707],{"class":1017,"line":1029},[1015,1695,1696],{"class":1690},"  \"",[1015,1698,1700],{"class":1699},"spNyl","editor.codeActionsOnSave",[1015,1702,1703],{"class":1690},"\"",[1015,1705,1706],{"class":1690},":",[1015,1708,1709],{"class":1690}," {\n",[1015,1711,1712,1715,1718,1720,1722],{"class":1017,"line":1041},[1015,1713,1714],{"class":1690},"    \"",[1015,1716,1717],{"class":1021},"source.fixAll",[1015,1719,1703],{"class":1690},[1015,1721,1706],{"class":1690},[1015,1723,1724],{"class":1690}," false,\n",[1015,1726,1727,1729,1732,1734,1736],{"class":1017,"line":1051},[1015,1728,1714],{"class":1690},[1015,1730,1731],{"class":1021},"source.fixAll.eslint",[1015,1733,1703],{"class":1690},[1015,1735,1706],{"class":1690},[1015,1737,1738],{"class":1690}," true\n",[1015,1740,1741],{"class":1017,"line":1065},[1015,1742,1743],{"class":1690},"  }\n",[1015,1745,1746],{"class":1017,"line":1082},[1015,1747,1748],{"class":1690},"}\n",[1750,1751,1752],"warning",{},[935,1753,1754,1755,1758],{},"Since ESLint is already configured to format the code, there's no need for duplicating functionality with ",[1514,1756,1757],{},"Prettier",". If you have it installed in your editor, we recommend disabling it to avoid conflicts.",[985,1760,1762],{"id":1761},"linting","Linting",[935,1764,1765,1766,1769],{},"You can use the ",[992,1767,1768],{},"lint"," command to check for linting errors:",[1006,1771,1773],{"className":1354,"code":1772,"language":1356,"meta":1011,"style":1011},"pnpm run lint # check for linting errors\npnpm run lint:fix # fix linting errors\n",[992,1774,1775,1780],{"__ignoreMap":1011},[1015,1776,1777],{"class":1017,"line":1018},[1015,1778,1779],{},"pnpm run lint # check for linting errors\n",[1015,1781,1782],{"class":1017,"line":1029},[1015,1783,1784],{},"pnpm run lint:fix # fix linting errors\n",[985,1786,1788],{"id":1787},"type-checking","Type checking",[935,1790,1791,1792,1795],{},"We use TypeScript for type checking. You can use the ",[992,1793,1794],{},"typecheck"," command to check for type errors:",[1006,1797,1799],{"className":1354,"code":1798,"language":1356,"meta":1011,"style":1011},"pnpm run typecheck\n",[992,1800,1801],{"__ignoreMap":1011},[1015,1802,1803],{"class":1017,"line":1018},[1015,1804,1798],{},[985,1806,1808],{"id":1807},"testing","Testing",[935,1810,1811],{},"Before submitting a PR, ensure that you run the tests:",[1006,1813,1815],{"className":1354,"code":1814,"language":1356,"meta":1011,"style":1011},"pnpm run test\n",[992,1816,1817],{"__ignoreMap":1011},[1015,1818,1819],{"class":1017,"line":1018},[1015,1820,1814],{},[1822,1823,1824],"tip",{},[935,1825,1826,1827,1830],{},"If you have to update the snapshots, press ",[992,1828,1829],{},"u"," after the tests have finished running.",[985,1832,1834],{"id":1833},"commit-conventions","Commit conventions",[935,1836,1837,1838,1843,1844,1849],{},"We use ",[945,1839,1842],{"href":1840,"rel":1841},"https://www.conventionalcommits.org/",[949],"Conventional Commits"," for commit messages, which allows a changelog to be auto-generated based on the commits. Please read the ",[945,1845,1848],{"href":1846,"rel":1847},"https://www.conventionalcommits.org/en/v1.0.0/#summary",[949],"guide"," through if you aren't familiar with it already.",[1381,1851,1852,1863],{},[1384,1853,1854,1855,1858,1859,1862],{},"Use ",[992,1856,1857],{},"fix"," and ",[992,1860,1861],{},"feat"," for code changes that affect functionality or logic",[1384,1864,1854,1865,1867,1868,1871],{},[992,1866,7],{}," for documentation changes and ",[992,1869,1870],{},"chore"," for maintenance tasks",[985,1873,1875],{"id":1874},"making-a-pull-request","Making a Pull Request",[1381,1877,1878,1887,1894,1901],{},[1384,1879,1880,1881,1886],{},"Follow along the ",[945,1882,1885],{"href":1883,"rel":1884},"https://github.com/nuxt/ui/blob/v4/.github/PULL_REQUEST_TEMPLATE.md?plain=1",[949],"instructions"," provided when creating a PR",[1384,1888,1889,1890,1893],{},"Ensure your PR's title adheres to the ",[945,1891,1842],{"href":1840,"rel":1892},[949]," since it will be used once the code is merged.",[1384,1895,1896,1897,1900],{},"Multiple commits are fine; no need to rebase or force push. We'll use ",[992,1898,1899],{},"Squash and Merge"," when merging.",[1384,1902,1903,1904,1411,1906,1858,1908,1911],{},"Ensure ",[992,1905,1768],{},[992,1907,1794],{},[992,1909,1910],{},"tests"," work before submitting the PR. Avoid making unrelated changes.",[935,1913,1914],{},"We'll review it promptly. If assigned to a maintainer, they'll review it carefully. Ignore the red text; it's for tracking purposes.",[959,1916,1918],{"id":1917},"thanks","Thanks",[935,1920,1921],{},"Thank you again for being interested in this project! You are awesome! ❤️",[1923,1924,1925],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}",{"title":1011,"searchDepth":1029,"depth":1029,"links":1927},[1928,1929,1933,1937,1946],{"id":961,"depth":1029,"text":962},{"id":979,"depth":1029,"text":980,"children":1930},[1931,1932],{"id":950,"depth":1041,"text":987},{"id":1142,"depth":1041,"text":1143},{"id":1340,"depth":1029,"text":1341,"children":1934},[1935,1936],{"id":858,"depth":1041,"text":71},{"id":1493,"depth":1041,"text":1494},{"id":1519,"depth":1029,"text":1520,"children":1938},[1939,1940,1941,1942,1943,1944,1945],{"id":1529,"depth":1041,"text":1530},{"id":1668,"depth":1041,"text":1669},{"id":1761,"depth":1041,"text":1762},{"id":1787,"depth":1041,"text":1788},{"id":1807,"depth":1041,"text":1808},{"id":1833,"depth":1041,"text":1834},{"id":1874,"depth":1041,"text":1875},{"id":1917,"depth":1029,"text":1918},"md",{},{"icon":52},{"title":48,"description":51},"lUiQ_4MKZ7j5Zv5mNpO-OiCvbacZ5G01NMmrhxEdO8g",{"data":1953,"body":1954},{},{"type":1955,"children":1956},"root",[1957],{"type":178,"tag":935,"props":1958,"children":1959},{},[1960],{"type":1961,"value":51},"text",1772538727433]