[{"data":1,"prerenderedAt":3259},["ShallowReactive",2],{"navigation":3,"-docs-getting-started-migration-v4":959,"-docs-getting-started-migration-v4-description":3249},[4],{"title":5,"path":6,"stem":7,"children":8,"page":36},"Docs","\u002Fdocs","docs",[9,163,817,858],{"title":10,"path":11,"stem":12,"children":13,"framework":16,"category":16,"description":16,"icon":30},"Get Started","\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started\u002F1.index",[14,19,37,47,53,76,141],{"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,"\u002Fdocs\u002Fgetting-started\u002Finstallation","docs\u002F1.getting-started\u002F2.installation",[25,31],{"title":20,"path":26,"stem":27,"framework":28,"category":16,"description":29,"icon":30},"\u002Fdocs\u002Fgetting-started\u002Finstallation\u002Fnuxt","docs\u002F1.getting-started\u002F2.installation\u002F1.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},"\u002Fdocs\u002Fgetting-started\u002Finstallation\u002Fvue","docs\u002F1.getting-started\u002F2.installation\u002F2.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","\u002Fdocs\u002Fgetting-started\u002Fmigration","docs\u002F1.getting-started\u002F3.migration",[43],{"title":38,"path":44,"stem":45,"framework":16,"category":16,"description":46,"icon":39},"\u002Fdocs\u002Fgetting-started\u002Fmigration\u002Fv4","docs\u002F1.getting-started\u002F3.migration\u002F1.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","\u002Fdocs\u002Fgetting-started\u002Fcontribution","docs\u002F1.getting-started\u002F4.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","\u002Fdocs\u002Fgetting-started\u002Ftheme","docs\u002F1.getting-started\u002F5.theme",[58,64,70],{"title":59,"path":60,"stem":61,"framework":16,"category":16,"description":62,"icon":63},"Design System","\u002Fdocs\u002Fgetting-started\u002Ftheme\u002Fdesign-system","docs\u002F1.getting-started\u002F5.theme\u002F1.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","\u002Fdocs\u002Fgetting-started\u002Ftheme\u002Fcss-variables","docs\u002F1.getting-started\u002F5.theme\u002F2.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","\u002Fdocs\u002Fgetting-started\u002Ftheme\u002Fcomponents","docs\u002F1.getting-started\u002F5.theme\u002F3.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","\u002Fdocs\u002Fgetting-started\u002Fintegrations","docs\u002F1.getting-started\u002F6.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","\u002Fdocs\u002Fgetting-started\u002Fintegrations\u002Ficons","docs\u002F1.getting-started\u002F6.integrations\u002F1.icons",[86,91],{"title":82,"path":87,"stem":88,"framework":28,"category":16,"description":89,"icon":90},"\u002Fdocs\u002Fgetting-started\u002Fintegrations\u002Ficons\u002Fnuxt","docs\u002F1.getting-started\u002F6.integrations\u002F1.icons\u002F1.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},"\u002Fdocs\u002Fgetting-started\u002Fintegrations\u002Ficons\u002Fvue","docs\u002F1.getting-started\u002F6.integrations\u002F1.icons\u002F2.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","\u002Fdocs\u002Fgetting-started\u002Fintegrations\u002Ffonts","docs\u002F1.getting-started\u002F6.integrations\u002F2.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","\u002Fdocs\u002Fgetting-started\u002Fintegrations\u002Fcolor-mode","docs\u002F1.getting-started\u002F6.integrations\u002F3.color-mode",[106,111],{"title":102,"path":107,"stem":108,"framework":28,"category":16,"description":109,"icon":110},"\u002Fdocs\u002Fgetting-started\u002Fintegrations\u002Fcolor-mode\u002Fnuxt","docs\u002F1.getting-started\u002F6.integrations\u002F3.color-mode\u002F1.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},"\u002Fdocs\u002Fgetting-started\u002Fintegrations\u002Fcolor-mode\u002Fvue","docs\u002F1.getting-started\u002F6.integrations\u002F3.color-mode\u002F2.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","\u002Fdocs\u002Fgetting-started\u002Fintegrations\u002Fi18n","docs\u002F1.getting-started\u002F6.integrations\u002F4.i18n",[120,126],{"title":121,"path":122,"stem":123,"framework":28,"category":16,"description":124,"icon":125},"Internationalization (i18n)","\u002Fdocs\u002Fgetting-started\u002Fintegrations\u002Fi18n\u002Fnuxt","docs\u002F1.getting-started\u002F6.integrations\u002F4.i18n\u002F1.nuxt","Nuxt UI supports 50+ locales and multi-directional (LTR\u002FRTL) internationalization.","i-lucide-languages",{"title":121,"path":127,"stem":128,"framework":34,"category":16,"description":124,"icon":125},"\u002Fdocs\u002Fgetting-started\u002Fintegrations\u002Fi18n\u002Fvue","docs\u002F1.getting-started\u002F6.integrations\u002F4.i18n\u002F2.vue",{"title":130,"path":131,"stem":132,"framework":28,"category":16,"description":133,"icon":134},"Content","\u002Fdocs\u002Fgetting-started\u002Fintegrations\u002Fcontent","docs\u002F1.getting-started\u002F6.integrations\u002F5.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":140},"SSR","\u002Fdocs\u002Fgetting-started\u002Fintegrations\u002Fssr","docs\u002F1.getting-started\u002F6.integrations\u002F6.ssr","Nuxt UI has first-party support for Vue SSR. This guide will help you have it fully enabled.","i-lucide-server",{"title":142,"framework":16,"category":16,"description":16,"path":143,"stem":144,"children":145,"page":36},"Agents","\u002Fdocs\u002Fgetting-started\u002Fai","docs\u002F1.getting-started\u002F7.ai",[146,151,157],{"title":147,"path":148,"stem":149,"framework":16,"category":16,"description":150,"icon":140},"MCP Server","\u002Fdocs\u002Fgetting-started\u002Fai\u002Fmcp","docs\u002F1.getting-started\u002F7.ai\u002F1.mcp","Use Nuxt UI components in your AI assistants with Model Context Protocol support.",{"title":152,"path":153,"stem":154,"framework":16,"category":16,"description":155,"icon":156},"LLMs.txt","\u002Fdocs\u002Fgetting-started\u002Fai\u002Fllms-txt","docs\u002F1.getting-started\u002F7.ai\u002F2.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","\u002Fdocs\u002Fgetting-started\u002Fai\u002Fskills","docs\u002F1.getting-started\u002F7.ai\u002F3.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","\u002Fdocs\u002Fcomponents","docs\u002F2.components",[168,174,180,186,192,197,202,207,212,217,222,228,233,238,243,248,253,258,264,269,274,279,284,289,295,300,305,311,316,321,326,332,337,342,347,352,357,362,367,373,378,383,388,393,399,405,410,415,420,425,430,435,440,445,450,455,460,466,471,476,481,486,491,496,501,506,511,516,521,526,531,536,541,546,551,556,561,566,571,576,581,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,792,797,802,807,812],{"title":169,"path":170,"stem":171,"framework":16,"category":172,"description":173},"Accordion","\u002Fdocs\u002Fcomponents\u002Faccordion","docs\u002F2.components\u002Faccordion","data","A stacked set of collapsible panels.",{"title":175,"path":176,"stem":177,"framework":16,"category":178,"description":179},"Alert","\u002Fdocs\u002Fcomponents\u002Falert","docs\u002F2.components\u002Falert","element","A callout to draw user's attention.",{"title":181,"path":182,"stem":183,"framework":16,"category":184,"description":185},"App","\u002Fdocs\u002Fcomponents\u002Fapp","docs\u002F2.components\u002Fapp","layout","Wraps your app to provide global configurations and more.",{"title":187,"path":188,"stem":189,"framework":16,"category":190,"description":191},"AuthForm","\u002Fdocs\u002Fcomponents\u002Fauth-form","docs\u002F2.components\u002Fauth-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","\u002Fdocs\u002Fcomponents\u002Favatar","docs\u002F2.components\u002Favatar","An img element with fallback and Nuxt Image support.",{"title":198,"path":199,"stem":200,"framework":16,"category":178,"description":201},"AvatarGroup","\u002Fdocs\u002Fcomponents\u002Favatar-group","docs\u002F2.components\u002Favatar-group","Stack multiple avatars in a group.",{"title":203,"path":204,"stem":205,"framework":16,"category":178,"description":206},"Badge","\u002Fdocs\u002Fcomponents\u002Fbadge","docs\u002F2.components\u002Fbadge","A short text to represent a status or a category.",{"title":208,"path":209,"stem":210,"framework":16,"category":178,"description":211},"Banner","\u002Fdocs\u002Fcomponents\u002Fbanner","docs\u002F2.components\u002Fbanner","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","\u002Fdocs\u002Fcomponents\u002Fblog-post","docs\u002F2.components\u002Fblog-post","A customizable article to display in a blog page.",{"title":218,"path":219,"stem":220,"framework":16,"category":190,"description":221},"BlogPosts","\u002Fdocs\u002Fcomponents\u002Fblog-posts","docs\u002F2.components\u002Fblog-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","\u002Fdocs\u002Fcomponents\u002Fbreadcrumb","docs\u002F2.components\u002Fbreadcrumb","navigation","A hierarchy of links to navigate through a website.",{"title":229,"path":230,"stem":231,"framework":16,"category":178,"description":232},"Button","\u002Fdocs\u002Fcomponents\u002Fbutton","docs\u002F2.components\u002Fbutton","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","\u002Fdocs\u002Fcomponents\u002Fcalendar","docs\u002F2.components\u002Fcalendar","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","\u002Fdocs\u002Fcomponents\u002Fcard","docs\u002F2.components\u002Fcard","Display content in a card with a header, body and footer.",{"title":244,"path":245,"stem":246,"framework":16,"category":172,"description":247},"Carousel","\u002Fdocs\u002Fcomponents\u002Fcarousel","docs\u002F2.components\u002Fcarousel","A carousel with motion and swipe built using Embla.",{"title":249,"path":250,"stem":251,"framework":16,"category":190,"description":252},"ChangelogVersion","\u002Fdocs\u002Fcomponents\u002Fchangelog-version","docs\u002F2.components\u002Fchangelog-version","A customizable article to display in a changelog.",{"title":254,"path":255,"stem":256,"framework":16,"category":190,"description":257},"ChangelogVersions","\u002Fdocs\u002Fcomponents\u002Fchangelog-versions","docs\u002F2.components\u002Fchangelog-versions","Display a list of changelog versions in a timeline.",{"title":259,"path":260,"stem":261,"framework":16,"category":262,"description":263},"Chat","\u002Fdocs\u002Fcomponents\u002Fchat","docs\u002F2.components\u002Fchat","chat","Build AI chat interfaces with streaming, reasoning, and tool calling.",{"title":265,"path":266,"stem":267,"framework":16,"category":262,"description":268},"ChatMessage","\u002Fdocs\u002Fcomponents\u002Fchat-message","docs\u002F2.components\u002Fchat-message","Display a chat message with icon, avatar, and actions.",{"title":270,"path":271,"stem":272,"framework":16,"category":262,"description":273},"ChatMessages","\u002Fdocs\u002Fcomponents\u002Fchat-messages","docs\u002F2.components\u002Fchat-messages","Display a list of chat messages, designed to work seamlessly with Vercel AI SDK.",{"title":275,"path":276,"stem":277,"framework":16,"category":262,"description":278},"ChatPalette","\u002Fdocs\u002Fcomponents\u002Fchat-palette","docs\u002F2.components\u002Fchat-palette","A chat palette to create a chatbot interface inside an overlay.",{"title":280,"path":281,"stem":282,"framework":16,"category":262,"description":283},"ChatPrompt","\u002Fdocs\u002Fcomponents\u002Fchat-prompt","docs\u002F2.components\u002Fchat-prompt","An enhanced Textarea for submitting prompts in AI chat interfaces.",{"title":285,"path":286,"stem":287,"framework":16,"category":262,"description":288},"ChatPromptSubmit","\u002Fdocs\u002Fcomponents\u002Fchat-prompt-submit","docs\u002F2.components\u002Fchat-prompt-submit","A Button for submitting chat prompts with automatic status handling.",{"title":290,"path":291,"stem":292,"framework":16,"category":262,"description":293,"badge":294},"ChatReasoning","\u002Fdocs\u002Fcomponents\u002Fchat-reasoning","docs\u002F2.components\u002Fchat-reasoning","Display a collapsible AI reasoning or thinking process.","Soon",{"title":296,"path":297,"stem":298,"framework":16,"category":262,"description":299,"badge":294},"ChatShimmer","\u002Fdocs\u002Fcomponents\u002Fchat-shimmer","docs\u002F2.components\u002Fchat-shimmer","Display a text shimmer animation effect.",{"title":301,"path":302,"stem":303,"framework":16,"category":262,"description":304,"badge":294},"ChatTool","\u002Fdocs\u002Fcomponents\u002Fchat-tool","docs\u002F2.components\u002Fchat-tool","Display a collapsible AI tool invocation status.",{"title":306,"path":307,"stem":308,"framework":16,"category":309,"description":310},"Checkbox","\u002Fdocs\u002Fcomponents\u002Fcheckbox","docs\u002F2.components\u002Fcheckbox","form","An input element to toggle between checked and unchecked states.",{"title":312,"path":313,"stem":314,"framework":16,"category":309,"description":315},"CheckboxGroup","\u002Fdocs\u002Fcomponents\u002Fcheckbox-group","docs\u002F2.components\u002Fcheckbox-group","A set of checklist buttons to select multiple option from a list.",{"title":317,"path":318,"stem":319,"framework":16,"category":178,"description":320},"Chip","\u002Fdocs\u002Fcomponents\u002Fchip","docs\u002F2.components\u002Fchip","An indicator of a numeric value or a state.",{"title":322,"path":323,"stem":324,"framework":16,"category":178,"description":325},"Collapsible","\u002Fdocs\u002Fcomponents\u002Fcollapsible","docs\u002F2.components\u002Fcollapsible","A collapsible element to toggle visibility of its content.",{"title":327,"path":328,"stem":329,"framework":16,"category":330,"description":331},"ColorModeAvatar","\u002Fdocs\u002Fcomponents\u002Fcolor-mode-avatar","docs\u002F2.components\u002Fcolor-mode-avatar","color-mode","An Avatar with a different source for light and dark mode.",{"title":333,"path":334,"stem":335,"framework":16,"category":330,"description":336},"ColorModeButton","\u002Fdocs\u002Fcomponents\u002Fcolor-mode-button","docs\u002F2.components\u002Fcolor-mode-button","A Button to switch between light and dark mode.",{"title":338,"path":339,"stem":340,"framework":16,"category":330,"description":341},"ColorModeImage","\u002Fdocs\u002Fcomponents\u002Fcolor-mode-image","docs\u002F2.components\u002Fcolor-mode-image","An image element with a different source for light and dark mode.",{"title":343,"path":344,"stem":345,"framework":16,"category":330,"description":346},"ColorModeSelect","\u002Fdocs\u002Fcomponents\u002Fcolor-mode-select","docs\u002F2.components\u002Fcolor-mode-select","A Select to switch between system, dark & light mode.",{"title":348,"path":349,"stem":350,"framework":16,"category":330,"description":351},"ColorModeSwitch","\u002Fdocs\u002Fcomponents\u002Fcolor-mode-switch","docs\u002F2.components\u002Fcolor-mode-switch","A switch to toggle between light and dark mode.",{"title":353,"path":354,"stem":355,"framework":16,"category":309,"description":356},"ColorPicker","\u002Fdocs\u002Fcomponents\u002Fcolor-picker","docs\u002F2.components\u002Fcolor-picker","A component to select a color.",{"title":358,"path":359,"stem":360,"framework":16,"category":226,"description":361},"CommandPalette","\u002Fdocs\u002Fcomponents\u002Fcommand-palette","docs\u002F2.components\u002Fcommand-palette","A command palette with full-text search powered by Fuse.js for efficient fuzzy matching.",{"title":363,"path":364,"stem":365,"framework":16,"category":184,"description":366},"Container","\u002Fdocs\u002Fcomponents\u002Fcontainer","docs\u002F2.components\u002Fcontainer","A container lets you center and constrain the width of your content.",{"title":368,"path":369,"stem":370,"framework":28,"category":371,"description":372},"ContentNavigation","\u002Fdocs\u002Fcomponents\u002Fcontent-navigation","docs\u002F2.components\u002Fcontent-navigation","content","An accordion-style navigation component for organizing page links.",{"title":374,"path":375,"stem":376,"framework":28,"category":371,"description":377},"ContentSearch","\u002Fdocs\u002Fcomponents\u002Fcontent-search","docs\u002F2.components\u002Fcontent-search","A ready to use CommandPalette to add to your documentation.",{"title":379,"path":380,"stem":381,"framework":28,"category":371,"description":382},"ContentSearchButton","\u002Fdocs\u002Fcomponents\u002Fcontent-search-button","docs\u002F2.components\u002Fcontent-search-button","A pre-styled Button to open the ContentSearch modal.",{"title":384,"path":385,"stem":386,"framework":28,"category":371,"description":387},"ContentSurround","\u002Fdocs\u002Fcomponents\u002Fcontent-surround","docs\u002F2.components\u002Fcontent-surround","A pair of prev and next links to navigate between pages.",{"title":389,"path":390,"stem":391,"framework":28,"category":371,"description":392},"ContentToc","\u002Fdocs\u002Fcomponents\u002Fcontent-toc","docs\u002F2.components\u002Fcontent-toc","A sticky Table of Contents with automatic active anchor link highlighting.",{"title":394,"path":395,"stem":396,"framework":16,"category":397,"description":398},"ContextMenu","\u002Fdocs\u002Fcomponents\u002Fcontext-menu","docs\u002F2.components\u002Fcontext-menu","overlay","A menu to display actions when right-clicking on an element.",{"title":400,"path":401,"stem":402,"framework":16,"category":403,"description":404},"DashboardGroup","\u002Fdocs\u002Fcomponents\u002Fdashboard-group","docs\u002F2.components\u002Fdashboard-group","dashboard","A fixed layout component that provides context for dashboard components with sidebar state management and persistence.",{"title":406,"path":407,"stem":408,"framework":16,"category":403,"description":409},"DashboardNavbar","\u002Fdocs\u002Fcomponents\u002Fdashboard-navbar","docs\u002F2.components\u002Fdashboard-navbar","A responsive navbar to display in a dashboard.",{"title":411,"path":412,"stem":413,"framework":16,"category":403,"description":414},"DashboardPanel","\u002Fdocs\u002Fcomponents\u002Fdashboard-panel","docs\u002F2.components\u002Fdashboard-panel","A resizable panel to display in a dashboard.",{"title":416,"path":417,"stem":418,"framework":16,"category":403,"description":419},"DashboardResizeHandle","\u002Fdocs\u002Fcomponents\u002Fdashboard-resize-handle","docs\u002F2.components\u002Fdashboard-resize-handle","A handle to resize a sidebar or panel.",{"title":421,"path":422,"stem":423,"framework":16,"category":403,"description":424},"DashboardSearch","\u002Fdocs\u002Fcomponents\u002Fdashboard-search","docs\u002F2.components\u002Fdashboard-search","A ready to use CommandPalette to add to your dashboard.",{"title":426,"path":427,"stem":428,"framework":16,"category":403,"description":429},"DashboardSearchButton","\u002Fdocs\u002Fcomponents\u002Fdashboard-search-button","docs\u002F2.components\u002Fdashboard-search-button","A pre-styled Button to open the DashboardSearch modal.",{"title":431,"path":432,"stem":433,"framework":16,"category":403,"description":434},"DashboardSidebar","\u002Fdocs\u002Fcomponents\u002Fdashboard-sidebar","docs\u002F2.components\u002Fdashboard-sidebar","A resizable and collapsible sidebar to display in a dashboard.",{"title":436,"path":437,"stem":438,"framework":16,"category":403,"description":439},"DashboardSidebarCollapse","\u002Fdocs\u002Fcomponents\u002Fdashboard-sidebar-collapse","docs\u002F2.components\u002Fdashboard-sidebar-collapse","A Button to collapse the sidebar on desktop.",{"title":441,"path":442,"stem":443,"framework":16,"category":403,"description":444},"DashboardSidebarToggle","\u002Fdocs\u002Fcomponents\u002Fdashboard-sidebar-toggle","docs\u002F2.components\u002Fdashboard-sidebar-toggle","A Button to toggle the sidebar on mobile.",{"title":446,"path":447,"stem":448,"framework":16,"category":403,"description":449},"DashboardToolbar","\u002Fdocs\u002Fcomponents\u002Fdashboard-toolbar","docs\u002F2.components\u002Fdashboard-toolbar","A toolbar to display under the navbar in a dashboard.",{"title":451,"path":452,"stem":453,"framework":16,"category":397,"description":454},"Drawer","\u002Fdocs\u002Fcomponents\u002Fdrawer","docs\u002F2.components\u002Fdrawer","A drawer that smoothly slides in & out of the screen.",{"title":456,"path":457,"stem":458,"framework":16,"category":397,"description":459},"DropdownMenu","\u002Fdocs\u002Fcomponents\u002Fdropdown-menu","docs\u002F2.components\u002Fdropdown-menu","A menu to display actions when clicking on an element.",{"title":461,"path":462,"stem":463,"framework":16,"category":464,"description":465},"Editor","\u002Fdocs\u002Fcomponents\u002Feditor","docs\u002F2.components\u002Feditor","editor","A rich text editor component based on TipTap with support for markdown, HTML, and JSON content types.",{"title":467,"path":468,"stem":469,"framework":16,"category":464,"description":470},"EditorDragHandle","\u002Fdocs\u002Fcomponents\u002Feditor-drag-handle","docs\u002F2.components\u002Feditor-drag-handle","A draggable handle for reordering and selecting blocks in the editor.",{"title":472,"path":473,"stem":474,"framework":16,"category":464,"description":475},"EditorEmojiMenu","\u002Fdocs\u002Fcomponents\u002Feditor-emoji-menu","docs\u002F2.components\u002Feditor-emoji-menu","An emoji picker menu that displays emoji suggestions when typing the : character in the editor.",{"title":477,"path":478,"stem":479,"framework":16,"category":464,"description":480},"EditorMentionMenu","\u002Fdocs\u002Fcomponents\u002Feditor-mention-menu","docs\u002F2.components\u002Feditor-mention-menu","A mention menu that displays user suggestions when typing a trigger character in the editor.",{"title":482,"path":483,"stem":484,"framework":16,"category":464,"description":485},"EditorSuggestionMenu","\u002Fdocs\u002Fcomponents\u002Feditor-suggestion-menu","docs\u002F2.components\u002Feditor-suggestion-menu","A command menu that displays formatting and action suggestions when typing the \u002F character in the editor.",{"title":487,"path":488,"stem":489,"framework":16,"category":464,"description":490},"EditorToolbar","\u002Fdocs\u002Fcomponents\u002Feditor-toolbar","docs\u002F2.components\u002Feditor-toolbar","A customizable toolbar for editor actions that can be displayed as fixed, bubble, or floating menu.",{"title":492,"path":493,"stem":494,"framework":16,"category":172,"description":495},"Empty","\u002Fdocs\u002Fcomponents\u002Fempty","docs\u002F2.components\u002Fempty","A component to display an empty state.",{"title":497,"path":498,"stem":499,"framework":16,"category":184,"description":500},"Error","\u002Fdocs\u002Fcomponents\u002Ferror","docs\u002F2.components\u002Ferror","A pre-built error component with NuxtError support.",{"title":502,"path":503,"stem":504,"framework":16,"category":178,"description":505},"FieldGroup","\u002Fdocs\u002Fcomponents\u002Ffield-group","docs\u002F2.components\u002Ffield-group","Group multiple button-like elements together.",{"title":507,"path":508,"stem":509,"framework":16,"category":309,"description":510},"FileUpload","\u002Fdocs\u002Fcomponents\u002Ffile-upload","docs\u002F2.components\u002Ffile-upload","An input element to upload files.",{"title":512,"path":513,"stem":514,"framework":16,"category":184,"description":515},"Footer","\u002Fdocs\u002Fcomponents\u002Ffooter","docs\u002F2.components\u002Ffooter","A responsive footer component.",{"title":517,"path":518,"stem":519,"framework":16,"category":226,"description":520},"FooterColumns","\u002Fdocs\u002Fcomponents\u002Ffooter-columns","docs\u002F2.components\u002Ffooter-columns","A list of links as columns to display in your Footer.",{"title":522,"path":523,"stem":524,"framework":16,"category":309,"description":525},"Form","\u002Fdocs\u002Fcomponents\u002Fform","docs\u002F2.components\u002Fform","A form component with built-in validation and submission handling.",{"title":527,"path":528,"stem":529,"framework":16,"category":309,"description":530},"FormField","\u002Fdocs\u002Fcomponents\u002Fform-field","docs\u002F2.components\u002Fform-field","A wrapper for form elements that provides validation and error handling.",{"title":532,"path":533,"stem":534,"framework":16,"category":184,"description":535},"Header","\u002Fdocs\u002Fcomponents\u002Fheader","docs\u002F2.components\u002Fheader","A responsive header component.",{"title":537,"path":538,"stem":539,"framework":16,"category":178,"description":540},"Icon","\u002Fdocs\u002Fcomponents\u002Ficon","docs\u002F2.components\u002Ficon","A component to display any icon from Iconify or another component.",{"title":542,"path":543,"stem":544,"framework":16,"category":309,"description":545},"Input","\u002Fdocs\u002Fcomponents\u002Finput","docs\u002F2.components\u002Finput","An input element to enter text.",{"title":547,"path":548,"stem":549,"framework":16,"category":309,"description":550},"InputDate","\u002Fdocs\u002Fcomponents\u002Finput-date","docs\u002F2.components\u002Finput-date","An input component for date selection.",{"title":552,"path":553,"stem":554,"framework":16,"category":309,"description":555},"InputMenu","\u002Fdocs\u002Fcomponents\u002Finput-menu","docs\u002F2.components\u002Finput-menu","An autocomplete input with real-time suggestions.",{"title":557,"path":558,"stem":559,"framework":16,"category":309,"description":560},"InputNumber","\u002Fdocs\u002Fcomponents\u002Finput-number","docs\u002F2.components\u002Finput-number","An input for numerical values with a customizable range.",{"title":562,"path":563,"stem":564,"framework":16,"category":309,"description":565},"InputTags","\u002Fdocs\u002Fcomponents\u002Finput-tags","docs\u002F2.components\u002Finput-tags","An input element that displays interactive tags.",{"title":567,"path":568,"stem":569,"framework":16,"category":309,"description":570},"InputTime","\u002Fdocs\u002Fcomponents\u002Finput-time","docs\u002F2.components\u002Finput-time","An input for selecting a time.",{"title":572,"path":573,"stem":574,"framework":16,"category":178,"description":575},"Kbd","\u002Fdocs\u002Fcomponents\u002Fkbd","docs\u002F2.components\u002Fkbd","A kbd element to display a keyboard key.",{"title":577,"path":578,"stem":579,"framework":16,"category":226,"description":580},"Link","\u002Fdocs\u002Fcomponents\u002Flink","docs\u002F2.components\u002Flink","A wrapper around \u003CNuxtLink> with extra props.",{"title":582,"path":583,"stem":584,"framework":16,"category":585,"description":586},"LocaleSelect","\u002Fdocs\u002Fcomponents\u002Flocale-select","docs\u002F2.components\u002Flocale-select","i18n","A Select to switch between locales.",{"title":588,"path":589,"stem":590,"framework":16,"category":184,"description":591},"Main","\u002Fdocs\u002Fcomponents\u002Fmain","docs\u002F2.components\u002Fmain","A main element that fills the available viewport height.",{"title":593,"path":594,"stem":595,"framework":16,"category":172,"description":596},"Marquee","\u002Fdocs\u002Fcomponents\u002Fmarquee","docs\u002F2.components\u002Fmarquee","A component to create infinite scrolling content.",{"title":598,"path":599,"stem":600,"framework":16,"category":397,"description":601},"Modal","\u002Fdocs\u002Fcomponents\u002Fmodal","docs\u002F2.components\u002Fmodal","A dialog window that can be used to display a message or request user input.",{"title":603,"path":604,"stem":605,"framework":16,"category":226,"description":606},"NavigationMenu","\u002Fdocs\u002Fcomponents\u002Fnavigation-menu","docs\u002F2.components\u002Fnavigation-menu","A list of links that can be displayed horizontally or vertically.",{"title":608,"path":609,"stem":610,"framework":16,"category":190,"description":611},"Page","\u002Fdocs\u002Fcomponents\u002Fpage","docs\u002F2.components\u002Fpage","A grid layout for your pages with left and right columns.",{"title":613,"path":614,"stem":615,"framework":16,"category":190,"description":616},"PageAnchors","\u002Fdocs\u002Fcomponents\u002Fpage-anchors","docs\u002F2.components\u002Fpage-anchors","A list of anchors to be displayed in the page.",{"title":618,"path":619,"stem":620,"framework":16,"category":190,"description":621},"PageAside","\u002Fdocs\u002Fcomponents\u002Fpage-aside","docs\u002F2.components\u002Fpage-aside","A sticky aside to display your page navigation.",{"title":623,"path":624,"stem":625,"framework":16,"category":190,"description":626},"PageBody","\u002Fdocs\u002Fcomponents\u002Fpage-body","docs\u002F2.components\u002Fpage-body","The main content of your page.",{"title":628,"path":629,"stem":630,"framework":16,"category":190,"description":631},"PageCard","\u002Fdocs\u002Fcomponents\u002Fpage-card","docs\u002F2.components\u002Fpage-card","A pre-styled card component that displays a title, description and optional link.",{"title":633,"path":634,"stem":635,"framework":16,"category":190,"description":636},"PageColumns","\u002Fdocs\u002Fcomponents\u002Fpage-columns","docs\u002F2.components\u002Fpage-columns","A responsive multi-column layout system for organizing content side-by-side.",{"title":638,"path":639,"stem":640,"framework":16,"category":190,"description":641},"PageCTA","\u002Fdocs\u002Fcomponents\u002Fpage-cta","docs\u002F2.components\u002Fpage-cta","A call to action section to display in your pages.",{"title":643,"path":644,"stem":645,"framework":16,"category":190,"description":646},"PageFeature","\u002Fdocs\u002Fcomponents\u002Fpage-feature","docs\u002F2.components\u002Fpage-feature","A component to showcase key features of your application.",{"title":648,"path":649,"stem":650,"framework":16,"category":190,"description":651},"PageGrid","\u002Fdocs\u002Fcomponents\u002Fpage-grid","docs\u002F2.components\u002Fpage-grid","A responsive grid system for displaying content in a flexible layout.",{"title":653,"path":654,"stem":655,"framework":16,"category":190,"description":656},"PageHeader","\u002Fdocs\u002Fcomponents\u002Fpage-header","docs\u002F2.components\u002Fpage-header","A responsive header for your pages.",{"title":658,"path":659,"stem":660,"framework":16,"category":190,"description":661},"PageHero","\u002Fdocs\u002Fcomponents\u002Fpage-hero","docs\u002F2.components\u002Fpage-hero","A responsive hero for your pages.",{"title":663,"path":664,"stem":665,"framework":16,"category":190,"description":666},"PageLinks","\u002Fdocs\u002Fcomponents\u002Fpage-links","docs\u002F2.components\u002Fpage-links","A list of links to be displayed in the page.",{"title":668,"path":669,"stem":670,"framework":16,"category":190,"description":671},"PageList","\u002Fdocs\u002Fcomponents\u002Fpage-list","docs\u002F2.components\u002Fpage-list","A vertical list layout for displaying content in a stacked format.",{"title":673,"path":674,"stem":675,"framework":16,"category":190,"description":676},"PageLogos","\u002Fdocs\u002Fcomponents\u002Fpage-logos","docs\u002F2.components\u002Fpage-logos","A list of logos or images to display on your pages.",{"title":678,"path":679,"stem":680,"framework":16,"category":190,"description":681},"PageSection","\u002Fdocs\u002Fcomponents\u002Fpage-section","docs\u002F2.components\u002Fpage-section","A responsive section for your pages.",{"title":683,"path":684,"stem":685,"framework":16,"category":226,"description":686},"Pagination","\u002Fdocs\u002Fcomponents\u002Fpagination","docs\u002F2.components\u002Fpagination","A list of buttons or links to navigate through pages.",{"title":688,"path":689,"stem":690,"framework":16,"category":309,"description":691},"PinInput","\u002Fdocs\u002Fcomponents\u002Fpin-input","docs\u002F2.components\u002Fpin-input","An input element to enter a pin.",{"title":693,"path":694,"stem":695,"framework":16,"category":397,"description":696},"Popover","\u002Fdocs\u002Fcomponents\u002Fpopover","docs\u002F2.components\u002Fpopover","A non-modal dialog that floats around a trigger element.",{"title":698,"path":699,"stem":700,"framework":16,"category":190,"description":701},"PricingPlan","\u002Fdocs\u002Fcomponents\u002Fpricing-plan","docs\u002F2.components\u002Fpricing-plan","A customizable pricing plan to display in a pricing page.",{"title":703,"path":704,"stem":705,"framework":16,"category":190,"description":706},"PricingPlans","\u002Fdocs\u002Fcomponents\u002Fpricing-plans","docs\u002F2.components\u002Fpricing-plans","Display a list of pricing plans in a responsive grid layout.",{"title":708,"path":709,"stem":710,"framework":16,"category":190,"description":711},"PricingTable","\u002Fdocs\u002Fcomponents\u002Fpricing-table","docs\u002F2.components\u002Fpricing-table","A responsive pricing table component that displays tiered pricing plans with feature comparisons.",{"title":713,"path":714,"stem":715,"framework":16,"category":178,"description":716},"Progress","\u002Fdocs\u002Fcomponents\u002Fprogress","docs\u002F2.components\u002Fprogress","An indicator showing the progress of a task.",{"title":718,"path":719,"stem":720,"framework":16,"category":309,"description":721},"RadioGroup","\u002Fdocs\u002Fcomponents\u002Fradio-group","docs\u002F2.components\u002Fradio-group","A set of radio buttons to select a single option from a list.",{"title":723,"path":724,"stem":725,"framework":16,"category":172,"description":726},"ScrollArea","\u002Fdocs\u002Fcomponents\u002Fscroll-area","docs\u002F2.components\u002Fscroll-area","A flexible scroll container with virtualization support.",{"title":728,"path":729,"stem":730,"framework":16,"category":309,"description":731},"Select","\u002Fdocs\u002Fcomponents\u002Fselect","docs\u002F2.components\u002Fselect","A select element to choose from a list of options.",{"title":733,"path":734,"stem":735,"framework":16,"category":309,"description":736},"SelectMenu","\u002Fdocs\u002Fcomponents\u002Fselect-menu","docs\u002F2.components\u002Fselect-menu","An advanced searchable select element.",{"title":738,"path":739,"stem":740,"framework":16,"category":178,"description":741},"Separator","\u002Fdocs\u002Fcomponents\u002Fseparator","docs\u002F2.components\u002Fseparator","Separates content horizontally or vertically.",{"title":743,"path":744,"stem":745,"framework":16,"category":184,"description":746,"badge":294},"Sidebar","\u002Fdocs\u002Fcomponents\u002Fsidebar","docs\u002F2.components\u002Fsidebar","A collapsible sidebar with multiple visual variants.",{"title":748,"path":749,"stem":750,"framework":16,"category":178,"description":751},"Skeleton","\u002Fdocs\u002Fcomponents\u002Fskeleton","docs\u002F2.components\u002Fskeleton","A placeholder to show while content is loading.",{"title":753,"path":754,"stem":755,"framework":16,"category":397,"description":756},"Slideover","\u002Fdocs\u002Fcomponents\u002Fslideover","docs\u002F2.components\u002Fslideover","A dialog that slides in from any side of the screen.",{"title":758,"path":759,"stem":760,"framework":16,"category":309,"description":761},"Slider","\u002Fdocs\u002Fcomponents\u002Fslider","docs\u002F2.components\u002Fslider","An input to select a numeric value within a range.",{"title":763,"path":764,"stem":765,"framework":16,"category":226,"description":766},"Stepper","\u002Fdocs\u002Fcomponents\u002Fstepper","docs\u002F2.components\u002Fstepper","A set of steps that are used to indicate progress through a multi-step process.",{"title":768,"path":769,"stem":770,"framework":16,"category":309,"description":771},"Switch","\u002Fdocs\u002Fcomponents\u002Fswitch","docs\u002F2.components\u002Fswitch","A control that toggles between two states.",{"title":773,"path":774,"stem":775,"framework":16,"category":172,"description":776},"Table","\u002Fdocs\u002Fcomponents\u002Ftable","docs\u002F2.components\u002Ftable","A responsive table element to display data in rows and columns.",{"title":778,"path":779,"stem":780,"framework":16,"category":226,"description":781},"Tabs","\u002Fdocs\u002Fcomponents\u002Ftabs","docs\u002F2.components\u002Ftabs","A set of tab panels that are displayed one at a time.",{"title":783,"path":784,"stem":785,"framework":16,"category":309,"description":786},"Textarea","\u002Fdocs\u002Fcomponents\u002Ftextarea","docs\u002F2.components\u002Ftextarea","A textarea element to input multi-line text.",{"title":54,"path":788,"stem":789,"framework":16,"category":184,"description":790,"badge":791},"\u002Fdocs\u002Fcomponents\u002Ftheme","docs\u002F2.components\u002Ftheme","A headless component to theme child components.","New",{"title":793,"path":794,"stem":795,"framework":16,"category":172,"description":796},"Timeline","\u002Fdocs\u002Fcomponents\u002Ftimeline","docs\u002F2.components\u002Ftimeline","A component that displays a sequence of events with dates, titles, icons or avatars.",{"title":798,"path":799,"stem":800,"framework":16,"category":397,"description":801},"Toast","\u002Fdocs\u002Fcomponents\u002Ftoast","docs\u002F2.components\u002Ftoast","A succinct message to provide information or feedback to the user.",{"title":803,"path":804,"stem":805,"framework":16,"category":397,"description":806},"Tooltip","\u002Fdocs\u002Fcomponents\u002Ftooltip","docs\u002F2.components\u002Ftooltip","A popup that reveals information when hovering over an element.",{"title":808,"path":809,"stem":810,"framework":16,"category":172,"description":811},"Tree","\u002Fdocs\u002Fcomponents\u002Ftree","docs\u002F2.components\u002Ftree","A tree view component to display and interact with hierarchical data structures.",{"title":813,"path":814,"stem":815,"framework":16,"category":172,"description":816},"User","\u002Fdocs\u002Fcomponents\u002Fuser","docs\u002F2.components\u002Fuser","Display user information with name, description and avatar.",{"title":818,"framework":16,"category":16,"description":16,"icon":819,"path":820,"stem":821,"children":822,"page":36},"Composables","i-lucide-square-function","\u002Fdocs\u002Fcomposables","docs\u002F3.composables",[823,828,833,838,843,848,853],{"title":824,"path":825,"stem":826,"framework":16,"category":16,"description":827},"defineLocale","\u002Fdocs\u002Fcomposables\u002Fdefine-locale","docs\u002F3.composables\u002Fdefine-locale","A utility to create a custom locale for your app.",{"title":829,"path":830,"stem":831,"framework":16,"category":16,"description":832},"defineShortcuts","\u002Fdocs\u002Fcomposables\u002Fdefine-shortcuts","docs\u002F3.composables\u002Fdefine-shortcuts","A composable to define keyboard shortcuts in your app.",{"title":834,"path":835,"stem":836,"framework":16,"category":16,"description":837},"extendLocale","\u002Fdocs\u002Fcomposables\u002Fextend-locale","docs\u002F3.composables\u002Fextend-locale","A utility to extend an existing locale with custom translations.",{"title":839,"path":840,"stem":841,"framework":16,"category":16,"description":842},"extractShortcuts","\u002Fdocs\u002Fcomposables\u002Fextract-shortcuts","docs\u002F3.composables\u002Fextract-shortcuts","A utility to extract keyboard shortcuts from menu items.",{"title":844,"path":845,"stem":846,"framework":16,"category":16,"description":847},"useOverlay","\u002Fdocs\u002Fcomposables\u002Fuse-overlay","docs\u002F3.composables\u002Fuse-overlay","A composable to programmatically control overlays.",{"title":849,"path":850,"stem":851,"framework":16,"category":16,"description":852,"badge":294},"useScrollShadow","\u002Fdocs\u002Fcomposables\u002Fuse-scroll-shadow","docs\u002F3.composables\u002Fuse-scroll-shadow","A composable to apply scroll shadow effects on any scrollable element.",{"title":854,"path":855,"stem":856,"framework":16,"category":16,"description":857},"useToast","\u002Fdocs\u002Fcomposables\u002Fuse-toast","docs\u002F3.composables\u002Fuse-toast","A composable to display toast notifications in your app.",{"title":859,"path":860,"stem":861,"children":862,"framework":28,"category":16,"description":16,"icon":958},"Typography","\u002Fdocs\u002Ftypography","docs\u002F4.typography\u002F1.index",[863,865,870,875,880,885,890,894,899,903,908,913,918,923,928,932,937,941,945,949,954],{"title":15,"path":860,"stem":861,"framework":28,"category":16,"description":864},"Beautiful typography components and utilities to style your content with Nuxt UI.",{"title":866,"path":867,"stem":868,"framework":28,"category":16,"description":869},"Headers and text","\u002Fdocs\u002Ftypography\u002Fheaders-and-text","docs\u002F4.typography\u002F2.headers-and-text","Beautifully styled headings, paragraphs, text formatting, and links for optimal readability.",{"title":871,"path":872,"stem":873,"framework":28,"category":16,"description":874},"Lists and tables","\u002Fdocs\u002Ftypography\u002Flists-and-tables","docs\u002F4.typography\u002F3.lists-and-tables","Organize information with styled lists and responsive tables for clear, consistent readability.",{"title":876,"path":877,"stem":878,"framework":28,"category":16,"description":879},"Images and embeds","\u002Fdocs\u002Ftypography\u002Fimages-and-embeds","docs\u002F4.typography\u002F4.images-and-embeds","Responsive images, videos, and rich media embeds to enhance and illustrate your documentation.",{"title":881,"path":882,"stem":883,"framework":28,"category":16,"description":884},"Code","\u002Fdocs\u002Ftypography\u002Fcode","docs\u002F4.typography\u002F5.code","Display inline code and syntax-highlighted code blocks with copy-to-clipboard support.",{"title":169,"path":886,"stem":887,"framework":28,"category":888,"description":889},"\u002Fdocs\u002Ftypography\u002Faccordion","docs\u002F4.typography\u002Faccordion","components","Create expandable content sections for better information organization.",{"title":203,"path":891,"stem":892,"framework":28,"category":888,"description":893},"\u002Fdocs\u002Ftypography\u002Fbadge","docs\u002F4.typography\u002Fbadge","Display version numbers, status labels, and tags within your content.",{"title":895,"path":896,"stem":897,"framework":28,"category":888,"description":898},"Callout","\u002Fdocs\u002Ftypography\u002Fcallout","docs\u002F4.typography\u002Fcallout","Highlight important information with eye-catching colored boxes and icons.",{"title":239,"path":900,"stem":901,"framework":28,"category":888,"description":902},"\u002Fdocs\u002Ftypography\u002Fcard","docs\u002F4.typography\u002Fcard","Create highlighted content blocks with optional links and navigation.",{"title":904,"path":905,"stem":906,"framework":28,"category":888,"description":907},"CardGroup","\u002Fdocs\u002Ftypography\u002Fcard-group","docs\u002F4.typography\u002Fcard-group","Organize multiple cards in responsive grid layouts for better content presentation.",{"title":909,"path":910,"stem":911,"framework":28,"category":888,"description":912},"CodeCollapse","\u002Fdocs\u002Ftypography\u002Fcode-collapse","docs\u002F4.typography\u002Fcode-collapse","Make long code blocks collapsible to save space and improve readability.",{"title":914,"path":915,"stem":916,"framework":28,"category":888,"description":917},"CodeGroup","\u002Fdocs\u002Ftypography\u002Fcode-group","docs\u002F4.typography\u002Fcode-group","Group multiple code examples in tabbed interfaces for easy comparison.",{"title":919,"path":920,"stem":921,"framework":28,"category":888,"description":922},"CodePreview","\u002Fdocs\u002Ftypography\u002Fcode-preview","docs\u002F4.typography\u002Fcode-preview","Display code examples with a preview and their source for clearer documentation.",{"title":924,"path":925,"stem":926,"framework":28,"category":888,"description":927},"CodeTree","\u002Fdocs\u002Ftypography\u002Fcode-tree","docs\u002F4.typography\u002Fcode-tree","Visualize file and folder structures with syntax-highlighted code.",{"title":322,"path":929,"stem":930,"framework":28,"category":888,"description":931},"\u002Fdocs\u002Ftypography\u002Fcollapsible","docs\u002F4.typography\u002Fcollapsible","Toggle content visibility with smooth expand and collapse animations.",{"title":933,"path":934,"stem":935,"framework":28,"category":888,"description":936},"Field","\u002Fdocs\u002Ftypography\u002Ffield","docs\u002F4.typography\u002Ffield","Document API parameters, props, and configuration options clearly.",{"title":502,"path":938,"stem":939,"framework":28,"category":888,"description":940},"\u002Fdocs\u002Ftypography\u002Ffield-group","docs\u002F4.typography\u002Ffield-group","Group related fields together for comprehensive API documentation.",{"title":537,"path":942,"stem":943,"framework":28,"category":888,"description":944},"\u002Fdocs\u002Ftypography\u002Ficon","docs\u002F4.typography\u002Ficon","Display icons from popular icon libraries to enhance your content.",{"title":572,"path":946,"stem":947,"framework":28,"category":888,"description":948},"\u002Fdocs\u002Ftypography\u002Fkbd","docs\u002F4.typography\u002Fkbd","Display keyboard shortcuts and key combinations with proper styling.",{"title":950,"path":951,"stem":952,"framework":28,"category":888,"description":953},"Steps","\u002Fdocs\u002Ftypography\u002Fsteps","docs\u002F4.typography\u002Fsteps","Transform headings into numbered step-by-step guides and tutorials.",{"title":778,"path":955,"stem":956,"framework":28,"category":888,"description":957},"\u002Fdocs\u002Ftypography\u002Ftabs","docs\u002F4.typography\u002Ftabs","Organize related content in interactive tabbed interfaces.","i-lucide-square-pilcrow",{"id":960,"title":961,"body":962,"category":16,"description":46,"extension":3240,"framework":16,"index":36,"links":3241,"meta":3245,"navigation":3246,"path":44,"seo":3247,"stem":45,"__hash__":3248},"docs\u002Fdocs\u002F1.getting-started\u002F3.migration\u002F1.v4.md","Migration to v4",{"type":963,"value":964,"toc":3225},"minimark",[965,979,989,992,997,1002,1020,1137,1341,1644,1653,1751,1760,1779,1783,1788,1850,1854,1857,1861,1873,1926,1930,1939,1966,1970,1980,2031,2049,2053,2074,2100,2119,2138,2153,2157,2162,2201,2323,2327,2338,2351,2354,2391,2395,2409,2423,2476,2487,2605,2616,2708,2713,2774,2786,3200,3210,3221],[966,967,968,969,973,974,978],"p",{},"Nuxt UI v4 marks a major milestone: ",[970,971,972],"strong",{},"Nuxt UI and Nuxt UI Pro are now unified into a single, fully open-source and free library",". You now have access to 125+ production-ready components, all available in the ",[975,976,977],"code",{},"@nuxt\u002Fui"," package.",[980,981,982],"note",{},[966,983,984,985,988],{},"Nuxt UI v4 requires ",[970,986,987],{},"Nuxt 4"," due to some dependencies. Make sure to upgrade to Nuxt 4 before migrating to Nuxt UI v4.",[966,990,991],{},"This guide provides step-by-step instructions to migrate your application from v3 to v4.",[993,994,996],"h2",{"id":995},"migrate-your-project","Migrate your project",[998,999,1001],"h3",{"id":1000},"from-nuxt-ui-pro","From Nuxt UI Pro",[1003,1004,1005],"ol",{},[1006,1007,1008,1009,1012,1013,1015,1016,1019],"li",{},"Replace ",[975,1010,1011],{},"@nuxt\u002Fui-pro"," with ",[975,1014,977],{}," in your ",[975,1017,1018],{},"package.json",":",[1021,1022,1024,1063,1087,1113],"code-group",{"sync":1023},"pm",[1025,1026,1032],"pre",{"className":1027,"code":1028,"filename":1029,"language":1030,"meta":1031,"style":1031},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm remove @nuxt\u002Fui-pro\npnpm add @nuxt\u002Fui tailwindcss\n","pnpm","bash","",[975,1033,1034,1049],{"__ignoreMap":1031},[1035,1036,1039,1042,1046],"span",{"class":1037,"line":1038},"line",1,[1035,1040,1029],{"class":1041},"sBMFI",[1035,1043,1045],{"class":1044},"sfazB"," remove",[1035,1047,1048],{"class":1044}," @nuxt\u002Fui-pro\n",[1035,1050,1052,1054,1057,1060],{"class":1037,"line":1051},2,[1035,1053,1029],{"class":1041},[1035,1055,1056],{"class":1044}," add",[1035,1058,1059],{"class":1044}," @nuxt\u002Fui",[1035,1061,1062],{"class":1044}," tailwindcss\n",[1025,1064,1067],{"className":1027,"code":1065,"filename":1066,"language":1030,"meta":1031,"style":1031},"yarn remove @nuxt\u002Fui-pro\nyarn add @nuxt\u002Fui tailwindcss\n","yarn",[975,1068,1069,1077],{"__ignoreMap":1031},[1035,1070,1071,1073,1075],{"class":1037,"line":1038},[1035,1072,1066],{"class":1041},[1035,1074,1045],{"class":1044},[1035,1076,1048],{"class":1044},[1035,1078,1079,1081,1083,1085],{"class":1037,"line":1051},[1035,1080,1066],{"class":1041},[1035,1082,1056],{"class":1044},[1035,1084,1059],{"class":1044},[1035,1086,1062],{"class":1044},[1025,1088,1091],{"className":1027,"code":1089,"filename":1090,"language":1030,"meta":1031,"style":1031},"npm uninstall @nuxt\u002Fui-pro\nnpm install @nuxt\u002Fui tailwindcss\n","npm",[975,1092,1093,1102],{"__ignoreMap":1031},[1035,1094,1095,1097,1100],{"class":1037,"line":1038},[1035,1096,1090],{"class":1041},[1035,1098,1099],{"class":1044}," uninstall",[1035,1101,1048],{"class":1044},[1035,1103,1104,1106,1109,1111],{"class":1037,"line":1051},[1035,1105,1090],{"class":1041},[1035,1107,1108],{"class":1044}," install",[1035,1110,1059],{"class":1044},[1035,1112,1062],{"class":1044},[1025,1114,1117],{"className":1027,"code":1115,"filename":1116,"language":1030,"meta":1031,"style":1031},"bun remove @nuxt\u002Fui-pro\nbun add @nuxt\u002Fui tailwindcss\n","bun",[975,1118,1119,1127],{"__ignoreMap":1031},[1035,1120,1121,1123,1125],{"class":1037,"line":1038},[1035,1122,1116],{"class":1041},[1035,1124,1045],{"class":1044},[1035,1126,1048],{"class":1044},[1035,1128,1129,1131,1133,1135],{"class":1037,"line":1051},[1035,1130,1116],{"class":1041},[1035,1132,1056],{"class":1044},[1035,1134,1059],{"class":1044},[1035,1136,1062],{"class":1044},[1138,1139,1140,1207],"framework-only",{},[1141,1142,1143],"template",{"v-slot:nuxt":1031},[1144,1145,1146,1157],"div",{},[1003,1147,1148],{"start":1051},[1006,1149,1008,1150,1012,1152,1015,1154,1019],{},[975,1151,1011],{},[975,1153,977],{},[975,1155,1156],{},"nuxt.config.ts",[1025,1158,1162],{"className":1159,"code":1160,"filename":1156,"language":1161,"meta":1031,"style":1031},"language-diff shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineNuxtConfig({\n  modules: [\n-   '@nuxt\u002Fui-pro',\n+   '@nuxt\u002Fui'\n  ]\n})\n","diff",[975,1163,1164,1170,1175,1186,1195,1201],{"__ignoreMap":1031},[1035,1165,1166],{"class":1037,"line":1038},[1035,1167,1169],{"class":1168},"sTEyZ","export default defineNuxtConfig({\n",[1035,1171,1172],{"class":1037,"line":1051},[1035,1173,1174],{"class":1168},"  modules: [\n",[1035,1176,1178,1182],{"class":1037,"line":1177},3,[1035,1179,1181],{"class":1180},"sMK4o","-",[1035,1183,1185],{"class":1184},"swJcz","   '@nuxt\u002Fui-pro',\n",[1035,1187,1189,1192],{"class":1037,"line":1188},4,[1035,1190,1191],{"class":1180},"+",[1035,1193,1194],{"class":1044},"   '@nuxt\u002Fui'\n",[1035,1196,1198],{"class":1037,"line":1197},5,[1035,1199,1200],{"class":1168},"  ]\n",[1035,1202,1204],{"class":1037,"line":1203},6,[1035,1205,1206],{"class":1168},"})\n",[1141,1208,1209],{"v-slot:vue":1031},[1144,1210,1211,1222],{},[1003,1212,1213],{"start":1051},[1006,1214,1008,1215,1012,1217,1015,1219,1019],{},[975,1216,1011],{},[975,1218,977],{},[975,1220,1221],{},"vite.config.ts",[1025,1223,1225],{"className":1159,"code":1224,"filename":1221,"language":1161,"meta":1031,"style":1031},"import { defineConfig } from 'vite'\nimport vue from '@vitejs\u002Fplugin-vue'\n- import uiPro from '@nuxt\u002Fui-pro\u002Fvite'\n+ import ui from '@nuxt\u002Fui\u002Fvite'\n\nexport default defineConfig({\n  plugins: [\n    vue(),\n-   uiPro({\n+   ui({\n      ui: {\n        colors: {\n          primary: 'green',\n          neutral: 'slate'\n        }\n      }\n    })\n  ]\n})\n",[975,1226,1227,1232,1237,1244,1251,1256,1261,1267,1273,1281,1289,1295,1301,1307,1313,1319,1325,1331,1336],{"__ignoreMap":1031},[1035,1228,1229],{"class":1037,"line":1038},[1035,1230,1231],{"class":1168},"import { defineConfig } from 'vite'\n",[1035,1233,1234],{"class":1037,"line":1051},[1035,1235,1236],{"class":1168},"import vue from '@vitejs\u002Fplugin-vue'\n",[1035,1238,1239,1241],{"class":1037,"line":1177},[1035,1240,1181],{"class":1180},[1035,1242,1243],{"class":1184}," import uiPro from '@nuxt\u002Fui-pro\u002Fvite'\n",[1035,1245,1246,1248],{"class":1037,"line":1188},[1035,1247,1191],{"class":1180},[1035,1249,1250],{"class":1044}," import ui from '@nuxt\u002Fui\u002Fvite'\n",[1035,1252,1253],{"class":1037,"line":1197},[1035,1254,1255],{"emptyLinePlaceholder":21},"\n",[1035,1257,1258],{"class":1037,"line":1203},[1035,1259,1260],{"class":1168},"export default defineConfig({\n",[1035,1262,1264],{"class":1037,"line":1263},7,[1035,1265,1266],{"class":1168},"  plugins: [\n",[1035,1268,1270],{"class":1037,"line":1269},8,[1035,1271,1272],{"class":1168},"    vue(),\n",[1035,1274,1276,1278],{"class":1037,"line":1275},9,[1035,1277,1181],{"class":1180},[1035,1279,1280],{"class":1184},"   uiPro({\n",[1035,1282,1284,1286],{"class":1037,"line":1283},10,[1035,1285,1191],{"class":1180},[1035,1287,1288],{"class":1044},"   ui({\n",[1035,1290,1292],{"class":1037,"line":1291},11,[1035,1293,1294],{"class":1168},"      ui: {\n",[1035,1296,1298],{"class":1037,"line":1297},12,[1035,1299,1300],{"class":1168},"        colors: {\n",[1035,1302,1304],{"class":1037,"line":1303},13,[1035,1305,1306],{"class":1168},"          primary: 'green',\n",[1035,1308,1310],{"class":1037,"line":1309},14,[1035,1311,1312],{"class":1168},"          neutral: 'slate'\n",[1035,1314,1316],{"class":1037,"line":1315},15,[1035,1317,1318],{"class":1168},"        }\n",[1035,1320,1322],{"class":1037,"line":1321},16,[1035,1323,1324],{"class":1168},"      }\n",[1035,1326,1328],{"class":1037,"line":1327},17,[1035,1329,1330],{"class":1168},"    })\n",[1035,1332,1334],{"class":1037,"line":1333},18,[1035,1335,1200],{"class":1168},[1035,1337,1339],{"class":1037,"line":1338},19,[1035,1340,1206],{"class":1168},[1138,1342,1343,1487],{},[1141,1344,1345],{"v-slot:nuxt":1031},[1144,1346,1347,1362],{},[1003,1348,1349],{"start":1177},[1006,1350,1351,1352,1355,1356,1015,1359,1019],{},"Use the ",[975,1353,1354],{},"ui"," key instead of ",[975,1357,1358],{},"uiPro",[975,1360,1361],{},"app.config.ts",[1025,1363,1366],{"className":1159,"code":1364,"filename":1365,"language":1161,"meta":1031,"style":1031},"export default defineAppConfig({\n  ui: {\n    colors: {\n      primary: 'green',\n      neutral: 'slate'\n    },\n+   pageCard: {\n+     slots: {\n+       root: 'rounded-xl',\n+     }\n+   }\n  },\n- uiPro: {\n-   pageCard: {\n-     slots: {\n-       root: 'rounded-xl',\n-     }\n-   }\n- }\n})\n","app\u002Fapp.config.ts",[975,1367,1368,1373,1378,1383,1388,1393,1398,1405,1412,1419,1426,1433,1438,1445,1451,1457,1463,1469,1475,1482],{"__ignoreMap":1031},[1035,1369,1370],{"class":1037,"line":1038},[1035,1371,1372],{"class":1168},"export default defineAppConfig({\n",[1035,1374,1375],{"class":1037,"line":1051},[1035,1376,1377],{"class":1168},"  ui: {\n",[1035,1379,1380],{"class":1037,"line":1177},[1035,1381,1382],{"class":1168},"    colors: {\n",[1035,1384,1385],{"class":1037,"line":1188},[1035,1386,1387],{"class":1168},"      primary: 'green',\n",[1035,1389,1390],{"class":1037,"line":1197},[1035,1391,1392],{"class":1168},"      neutral: 'slate'\n",[1035,1394,1395],{"class":1037,"line":1203},[1035,1396,1397],{"class":1168},"    },\n",[1035,1399,1400,1402],{"class":1037,"line":1263},[1035,1401,1191],{"class":1180},[1035,1403,1404],{"class":1044},"   pageCard: {\n",[1035,1406,1407,1409],{"class":1037,"line":1269},[1035,1408,1191],{"class":1180},[1035,1410,1411],{"class":1044},"     slots: {\n",[1035,1413,1414,1416],{"class":1037,"line":1275},[1035,1415,1191],{"class":1180},[1035,1417,1418],{"class":1044},"       root: 'rounded-xl',\n",[1035,1420,1421,1423],{"class":1037,"line":1283},[1035,1422,1191],{"class":1180},[1035,1424,1425],{"class":1044},"     }\n",[1035,1427,1428,1430],{"class":1037,"line":1291},[1035,1429,1191],{"class":1180},[1035,1431,1432],{"class":1044},"   }\n",[1035,1434,1435],{"class":1037,"line":1297},[1035,1436,1437],{"class":1168},"  },\n",[1035,1439,1440,1442],{"class":1037,"line":1303},[1035,1441,1181],{"class":1180},[1035,1443,1444],{"class":1184}," uiPro: {\n",[1035,1446,1447,1449],{"class":1037,"line":1309},[1035,1448,1181],{"class":1180},[1035,1450,1404],{"class":1184},[1035,1452,1453,1455],{"class":1037,"line":1315},[1035,1454,1181],{"class":1180},[1035,1456,1411],{"class":1184},[1035,1458,1459,1461],{"class":1037,"line":1321},[1035,1460,1181],{"class":1180},[1035,1462,1418],{"class":1184},[1035,1464,1465,1467],{"class":1037,"line":1327},[1035,1466,1181],{"class":1180},[1035,1468,1425],{"class":1184},[1035,1470,1471,1473],{"class":1037,"line":1333},[1035,1472,1181],{"class":1180},[1035,1474,1432],{"class":1184},[1035,1476,1477,1479],{"class":1037,"line":1338},[1035,1478,1181],{"class":1180},[1035,1480,1481],{"class":1184}," }\n",[1035,1483,1485],{"class":1037,"line":1484},20,[1035,1486,1206],{"class":1168},[1141,1488,1489],{"v-slot:vue":1031},[1144,1490,1491,1501],{},[1003,1492,1493],{"start":1177},[1006,1494,1351,1495,1355,1497,1015,1499,1019],{},[975,1496,1354],{},[975,1498,1358],{},[975,1500,1221],{},[1025,1502,1504],{"className":1159,"code":1503,"filename":1221,"language":1161,"meta":1031,"style":1031},"export default defineConfig({\n  plugins: [\n    vue(),\n    ui({\n      ui: {\n        colors: {\n          primary: 'green',\n          neutral: 'slate'\n        },\n+       pageCard: {\n+         slots: {\n+           root: 'rounded-xl',\n+         }\n+       }\n      },\n-     uiPro: {\n-       pageCard: {\n-         slots: {\n-           root: 'rounded-xl',\n-         }\n-       }\n-     }\n    })\n  ]\n})\n",[975,1505,1506,1510,1514,1518,1523,1527,1531,1535,1539,1544,1551,1558,1565,1572,1579,1584,1591,1597,1603,1609,1615,1622,1629,1634,1639],{"__ignoreMap":1031},[1035,1507,1508],{"class":1037,"line":1038},[1035,1509,1260],{"class":1168},[1035,1511,1512],{"class":1037,"line":1051},[1035,1513,1266],{"class":1168},[1035,1515,1516],{"class":1037,"line":1177},[1035,1517,1272],{"class":1168},[1035,1519,1520],{"class":1037,"line":1188},[1035,1521,1522],{"class":1168},"    ui({\n",[1035,1524,1525],{"class":1037,"line":1197},[1035,1526,1294],{"class":1168},[1035,1528,1529],{"class":1037,"line":1203},[1035,1530,1300],{"class":1168},[1035,1532,1533],{"class":1037,"line":1263},[1035,1534,1306],{"class":1168},[1035,1536,1537],{"class":1037,"line":1269},[1035,1538,1312],{"class":1168},[1035,1540,1541],{"class":1037,"line":1275},[1035,1542,1543],{"class":1168},"        },\n",[1035,1545,1546,1548],{"class":1037,"line":1283},[1035,1547,1191],{"class":1180},[1035,1549,1550],{"class":1044},"       pageCard: {\n",[1035,1552,1553,1555],{"class":1037,"line":1291},[1035,1554,1191],{"class":1180},[1035,1556,1557],{"class":1044},"         slots: {\n",[1035,1559,1560,1562],{"class":1037,"line":1297},[1035,1561,1191],{"class":1180},[1035,1563,1564],{"class":1044},"           root: 'rounded-xl',\n",[1035,1566,1567,1569],{"class":1037,"line":1303},[1035,1568,1191],{"class":1180},[1035,1570,1571],{"class":1044},"         }\n",[1035,1573,1574,1576],{"class":1037,"line":1309},[1035,1575,1191],{"class":1180},[1035,1577,1578],{"class":1044},"       }\n",[1035,1580,1581],{"class":1037,"line":1315},[1035,1582,1583],{"class":1168},"      },\n",[1035,1585,1586,1588],{"class":1037,"line":1321},[1035,1587,1181],{"class":1180},[1035,1589,1590],{"class":1184},"     uiPro: {\n",[1035,1592,1593,1595],{"class":1037,"line":1327},[1035,1594,1181],{"class":1180},[1035,1596,1550],{"class":1184},[1035,1598,1599,1601],{"class":1037,"line":1333},[1035,1600,1181],{"class":1180},[1035,1602,1557],{"class":1184},[1035,1604,1605,1607],{"class":1037,"line":1338},[1035,1606,1181],{"class":1180},[1035,1608,1564],{"class":1184},[1035,1610,1611,1613],{"class":1037,"line":1484},[1035,1612,1181],{"class":1180},[1035,1614,1571],{"class":1184},[1035,1616,1618,1620],{"class":1037,"line":1617},21,[1035,1619,1181],{"class":1180},[1035,1621,1578],{"class":1184},[1035,1623,1625,1627],{"class":1037,"line":1624},22,[1035,1626,1181],{"class":1180},[1035,1628,1425],{"class":1184},[1035,1630,1632],{"class":1037,"line":1631},23,[1035,1633,1330],{"class":1168},[1035,1635,1637],{"class":1037,"line":1636},24,[1035,1638,1200],{"class":1168},[1035,1640,1642],{"class":1037,"line":1641},25,[1035,1643,1206],{"class":1168},[1003,1645,1646],{"start":1188},[1006,1647,1008,1648,1012,1650,1652],{},[975,1649,1011],{},[975,1651,977],{}," in your CSS:",[1138,1654,1655,1726],{},[1141,1656,1657],{"v-slot:nuxt":1031},[1144,1658,1659,1684],{},[1025,1660,1663],{"className":1159,"code":1661,"filename":1662,"language":1161,"meta":1031,"style":1031},"@import \"tailwindcss\";\n- @import \"@nuxt\u002Fui-pro\";\n+ @import \"@nuxt\u002Fui\";\n","app\u002Fassets\u002Fcss\u002Fmain.css",[975,1664,1665,1670,1677],{"__ignoreMap":1031},[1035,1666,1667],{"class":1037,"line":1038},[1035,1668,1669],{"class":1168},"@import \"tailwindcss\";\n",[1035,1671,1672,1674],{"class":1037,"line":1051},[1035,1673,1181],{"class":1180},[1035,1675,1676],{"class":1184}," @import \"@nuxt\u002Fui-pro\";\n",[1035,1678,1679,1681],{"class":1037,"line":1177},[1035,1680,1191],{"class":1180},[1035,1682,1683],{"class":1044}," @import \"@nuxt\u002Fui\";\n",[1685,1686,1687,1694],"warning",{},[966,1688,1689,1690,1693],{},"If you are upgrading to Nuxt 4 at the same time as Nuxt UI v4, make sure to update the ",[975,1691,1692],{},"@source"," directive to match the new directory structure.",[1025,1695,1697],{"className":1159,"code":1696,"filename":1662,"language":1161,"meta":1031,"style":1031},"@import \"tailwindcss\";\n@import \"@nuxt\u002Fui\";\n\n- @source \"..\u002F..\u002Fcontent\u002F**\u002F*\";\n+ @source \"..\u002F..\u002F..\u002Fcontent\u002F**\u002F*\";\n",[975,1698,1699,1703,1708,1712,1719],{"__ignoreMap":1031},[1035,1700,1701],{"class":1037,"line":1038},[1035,1702,1669],{"class":1168},[1035,1704,1705],{"class":1037,"line":1051},[1035,1706,1707],{"class":1168},"@import \"@nuxt\u002Fui\";\n",[1035,1709,1710],{"class":1037,"line":1177},[1035,1711,1255],{"emptyLinePlaceholder":21},[1035,1713,1714,1716],{"class":1037,"line":1188},[1035,1715,1181],{"class":1180},[1035,1717,1718],{"class":1184}," @source \"..\u002F..\u002Fcontent\u002F**\u002F*\";\n",[1035,1720,1721,1723],{"class":1037,"line":1197},[1035,1722,1191],{"class":1180},[1035,1724,1725],{"class":1044}," @source \"..\u002F..\u002F..\u002Fcontent\u002F**\u002F*\";\n",[1141,1727,1728],{"v-slot:vue":1031},[1144,1729,1730],{},[1025,1731,1733],{"className":1159,"code":1661,"filename":1732,"language":1161,"meta":1031,"style":1031},"src\u002Fassets\u002Fcss\u002Fmain.css",[975,1734,1735,1739,1745],{"__ignoreMap":1031},[1035,1736,1737],{"class":1037,"line":1038},[1035,1738,1669],{"class":1168},[1035,1740,1741,1743],{"class":1037,"line":1051},[1035,1742,1181],{"class":1180},[1035,1744,1676],{"class":1184},[1035,1746,1747,1749],{"class":1037,"line":1177},[1035,1748,1191],{"class":1180},[1035,1750,1683],{"class":1044},[1003,1752,1753],{"start":1197},[1006,1754,1008,1755,1012,1757,1759],{},[975,1756,1011],{},[975,1758,977],{}," in your imports:",[1025,1761,1763],{"className":1159,"code":1762,"language":1161,"meta":1031,"style":1031},"- import type { BannerProps } from '@nuxt\u002Fui-pro'\n+ import type { BannerProps } from '@nuxt\u002Fui'\n",[975,1764,1765,1772],{"__ignoreMap":1031},[1035,1766,1767,1769],{"class":1037,"line":1038},[1035,1768,1181],{"class":1180},[1035,1770,1771],{"class":1184}," import type { BannerProps } from '@nuxt\u002Fui-pro'\n",[1035,1773,1774,1776],{"class":1037,"line":1051},[1035,1775,1191],{"class":1180},[1035,1777,1778],{"class":1044}," import type { BannerProps } from '@nuxt\u002Fui'\n",[998,1780,1782],{"id":1781},"from-nuxt-ui","From Nuxt UI",[1003,1784,1785],{},[1006,1786,1787],{},"When upgrading from Nuxt UI v3, you simply need to update to v4:",[1021,1789,1790,1805,1820,1835],{"sync":1023},[1025,1791,1793],{"className":1027,"code":1792,"filename":1029,"language":1030,"meta":1031,"style":1031},"pnpm add @nuxt\u002Fui tailwindcss\n",[975,1794,1795],{"__ignoreMap":1031},[1035,1796,1797,1799,1801,1803],{"class":1037,"line":1038},[1035,1798,1029],{"class":1041},[1035,1800,1056],{"class":1044},[1035,1802,1059],{"class":1044},[1035,1804,1062],{"class":1044},[1025,1806,1808],{"className":1027,"code":1807,"filename":1066,"language":1030,"meta":1031,"style":1031},"yarn add @nuxt\u002Fui tailwindcss\n",[975,1809,1810],{"__ignoreMap":1031},[1035,1811,1812,1814,1816,1818],{"class":1037,"line":1038},[1035,1813,1066],{"class":1041},[1035,1815,1056],{"class":1044},[1035,1817,1059],{"class":1044},[1035,1819,1062],{"class":1044},[1025,1821,1823],{"className":1027,"code":1822,"filename":1090,"language":1030,"meta":1031,"style":1031},"npm install @nuxt\u002Fui tailwindcss\n",[975,1824,1825],{"__ignoreMap":1031},[1035,1826,1827,1829,1831,1833],{"class":1037,"line":1038},[1035,1828,1090],{"class":1041},[1035,1830,1108],{"class":1044},[1035,1832,1059],{"class":1044},[1035,1834,1062],{"class":1044},[1025,1836,1838],{"className":1027,"code":1837,"filename":1116,"language":1030,"meta":1031,"style":1031},"bun add @nuxt\u002Fui tailwindcss\n",[975,1839,1840],{"__ignoreMap":1031},[1035,1841,1842,1844,1846,1848],{"class":1037,"line":1038},[1035,1843,1116],{"class":1041},[1035,1845,1056],{"class":1044},[1035,1847,1059],{"class":1044},[1035,1849,1062],{"class":1044},[993,1851,1853],{"id":1852},"changes-from-v3","Changes from v3",[966,1855,1856],{},"After upgrading to Nuxt UI v4, please note the following important changes:",[998,1858,1860],{"id":1859},"renamed-buttongroup","Renamed ButtonGroup",[966,1862,1863,1864,1867,1868,1019],{},"The ",[975,1865,1866],{},"ButtonGroup"," component has been renamed to ",[1869,1870,1871],"a",{"href":503},[975,1872,502],{},[1025,1874,1876],{"className":1159,"code":1875,"language":1161,"meta":1031,"style":1031},"\u003Ctemplate>\n- \u003CUButtonGroup>\n+ \u003CUFieldGroup>\n    \u003CUButton label=\"Button\" \u002F>\n    \u003CUButton icon=\"i-lucide-chevron-down\" \u002F>\n+ \u003C\u002FUFieldGroup>\n- \u003C\u002FUButtonGroup>\n\u003C\u002Ftemplate>\n",[975,1877,1878,1883,1890,1897,1902,1907,1914,1921],{"__ignoreMap":1031},[1035,1879,1880],{"class":1037,"line":1038},[1035,1881,1882],{"class":1168},"\u003Ctemplate>\n",[1035,1884,1885,1887],{"class":1037,"line":1051},[1035,1886,1181],{"class":1180},[1035,1888,1889],{"class":1184}," \u003CUButtonGroup>\n",[1035,1891,1892,1894],{"class":1037,"line":1177},[1035,1893,1191],{"class":1180},[1035,1895,1896],{"class":1044}," \u003CUFieldGroup>\n",[1035,1898,1899],{"class":1037,"line":1188},[1035,1900,1901],{"class":1168},"    \u003CUButton label=\"Button\" \u002F>\n",[1035,1903,1904],{"class":1037,"line":1197},[1035,1905,1906],{"class":1168},"    \u003CUButton icon=\"i-lucide-chevron-down\" \u002F>\n",[1035,1908,1909,1911],{"class":1037,"line":1203},[1035,1910,1191],{"class":1180},[1035,1912,1913],{"class":1044}," \u003C\u002FUFieldGroup>\n",[1035,1915,1916,1918],{"class":1037,"line":1263},[1035,1917,1181],{"class":1180},[1035,1919,1920],{"class":1184}," \u003C\u002FUButtonGroup>\n",[1035,1922,1923],{"class":1037,"line":1269},[1035,1924,1925],{"class":1168},"\u003C\u002Ftemplate>\n",[998,1927,1929],{"id":1928},"renamed-pagemarquee","Renamed PageMarquee",[966,1931,1863,1932,1867,1935,1019],{},[975,1933,1934],{},"PageMarquee",[1869,1936,1937],{"href":594},[975,1938,593],{},[1025,1940,1942],{"className":1159,"code":1941,"language":1161,"meta":1031,"style":1031},"\u003Ctemplate>\n- \u003CUPageMarquee :items=\"items\" \u002F>\n+ \u003CUMarquee :items=\"items\" \u002F>\n\u003C\u002Ftemplate>\n",[975,1943,1944,1948,1955,1962],{"__ignoreMap":1031},[1035,1945,1946],{"class":1037,"line":1038},[1035,1947,1882],{"class":1168},[1035,1949,1950,1952],{"class":1037,"line":1051},[1035,1951,1181],{"class":1180},[1035,1953,1954],{"class":1184}," \u003CUPageMarquee :items=\"items\" \u002F>\n",[1035,1956,1957,1959],{"class":1037,"line":1177},[1035,1958,1191],{"class":1180},[1035,1960,1961],{"class":1044}," \u003CUMarquee :items=\"items\" \u002F>\n",[1035,1963,1964],{"class":1037,"line":1188},[1035,1965,1925],{"class":1168},[998,1967,1969],{"id":1968},"removed-pageaccordion","Removed PageAccordion",[966,1971,1863,1972,1975,1976,1019],{},[975,1973,1974],{},"PageAccordion"," component has been removed in favor of ",[1869,1977,1978],{"href":170},[975,1979,169],{},[1025,1981,1983],{"className":1159,"code":1982,"language":1161,"meta":1031,"style":1031},"\u003Ctemplate>\n- \u003CUPageAccordion\n+ \u003CUAccordion\n    :items=\"items\"\n+   :unmount-on-hide=\"false\"\n+   :ui=\"{ trigger: 'text-base', body: 'text-base text-muted' }\"\n  \u002F>\n\u003C\u002Ftemplate>\n",[975,1984,1985,1989,1996,2003,2008,2015,2022,2027],{"__ignoreMap":1031},[1035,1986,1987],{"class":1037,"line":1038},[1035,1988,1882],{"class":1168},[1035,1990,1991,1993],{"class":1037,"line":1051},[1035,1992,1181],{"class":1180},[1035,1994,1995],{"class":1184}," \u003CUPageAccordion\n",[1035,1997,1998,2000],{"class":1037,"line":1177},[1035,1999,1191],{"class":1180},[1035,2001,2002],{"class":1044}," \u003CUAccordion\n",[1035,2004,2005],{"class":1037,"line":1188},[1035,2006,2007],{"class":1168},"    :items=\"items\"\n",[1035,2009,2010,2012],{"class":1037,"line":1197},[1035,2011,1191],{"class":1180},[1035,2013,2014],{"class":1044},"   :unmount-on-hide=\"false\"\n",[1035,2016,2017,2019],{"class":1037,"line":1203},[1035,2018,1191],{"class":1180},[1035,2020,2021],{"class":1044},"   :ui=\"{ trigger: 'text-base', body: 'text-base text-muted' }\"\n",[1035,2023,2024],{"class":1037,"line":1263},[1035,2025,2026],{"class":1168},"  \u002F>\n",[1035,2028,2029],{"class":1037,"line":1269},[1035,2030,1925],{"class":1168},[980,2032,2033],{},[966,2034,1863,2035,2037,2038,2041,2042,2045,2046,2048],{},[975,2036,1974],{}," component was a wrapper that set ",[975,2039,2040],{},"unmount-on-hide"," to ",[975,2043,2044],{},"false"," and customized the ",[975,2047,1354],{}," prop.",[998,2050,2052],{"id":2051},"renamed-model-modifiers","Renamed model modifiers",[966,2054,1863,2055,2058,2059,2063,2064,2068,2069,2073],{},[975,2056,2057],{},"modelModifiers"," shape used by ",[1869,2060,2061],{"href":543},[975,2062,542],{},", ",[1869,2065,2066],{"href":558},[975,2067,557],{}," and ",[1869,2070,2071],{"href":784},[975,2072,783],{}," has changed in v4:",[1003,2075,2076,2090],{},[1006,2077,1863,2078,2081,2082,2085,2086,2089],{},[975,2079,2080],{},"nullify"," modifier was renamed to ",[975,2083,2084],{},"nullable"," (it converts empty\u002Fblank values to ",[975,2087,2088],{},"null",").",[1006,2091,2092,2093,2096,2097,2089],{},"A new ",[975,2094,2095],{},"optional"," modifier was added (it converts empty\u002Fblank values to ",[975,2098,2099],{},"undefined",[1025,2101,2103],{"className":1159,"code":2102,"language":1161,"meta":1031,"style":1031},"- \u003CUInput v-model.nullify=\"value\" \u002F>\n+ \u003CUInput v-model.nullable=\"value\" \u002F>\n",[975,2104,2105,2112],{"__ignoreMap":1031},[1035,2106,2107,2109],{"class":1037,"line":1038},[1035,2108,1181],{"class":1180},[1035,2110,2111],{"class":1184}," \u003CUInput v-model.nullify=\"value\" \u002F>\n",[1035,2113,2114,2116],{"class":1037,"line":1051},[1035,2115,1191],{"class":1180},[1035,2117,2118],{"class":1044}," \u003CUInput v-model.nullable=\"value\" \u002F>\n",[1025,2120,2122],{"className":1159,"code":2121,"language":1161,"meta":1031,"style":1031},"- \u003CUTextarea v-model=\"value\" :model-modifiers=\"{ nullify: true }\" \u002F>\n+ \u003CUTextarea v-model=\"value\" :model-modifiers=\"{ nullable: true }\" \u002F>\n",[975,2123,2124,2131],{"__ignoreMap":1031},[1035,2125,2126,2128],{"class":1037,"line":1038},[1035,2127,1181],{"class":1180},[1035,2129,2130],{"class":1184}," \u003CUTextarea v-model=\"value\" :model-modifiers=\"{ nullify: true }\" \u002F>\n",[1035,2132,2133,2135],{"class":1037,"line":1051},[1035,2134,1191],{"class":1180},[1035,2136,2137],{"class":1044}," \u003CUTextarea v-model=\"value\" :model-modifiers=\"{ nullable: true }\" \u002F>\n",[966,2139,2140,2141,2143,2144,2146,2147,2149,2150,2152],{},"Use ",[975,2142,2084],{}," when you want empty values as ",[975,2145,2088],{},", and ",[975,2148,2095],{}," when you prefer ",[975,2151,2099],{}," for absent values.",[998,2154,2156],{"id":2155},"changes-to-form-component","Changes to Form component",[966,2158,1863,2159,2161],{},[975,2160,522],{}," component has been improved in v4 with better state management and nested form handling. Here are the key changes you need to be aware of:",[1003,2163,2164,2178,2188],{},[1006,2165,2166,2167,2170,2171,2177],{},"Schema ",[970,2168,2169],{},"transformations will only"," be applied to the ",[970,2172,2173,2176],{},[975,2174,2175],{},"@submit"," data"," and will no longer mutate the form's state. This provides better predictability and prevents unexpected state mutations.",[1006,2179,2180,2183,2184,2187],{},[970,2181,2182],{},"Nested forms must be enabled explicitly"," using the ",[975,2185,2186],{},"nested"," prop. This makes the component behavior more explicit and prevents accidental nested form creation.",[1006,2189,2190,2196,2197,2200],{},[970,2191,2192,2193],{},"Nested forms should now provide a ",[975,2194,2195],{},"name"," prop (similar to ",[975,2198,2199],{},"UFormField",") and will automatically inherit their state from their parent form.",[1025,2202,2204],{"className":1159,"code":2203,"language":1161,"meta":1031,"style":1031},"\u003Ctemplate>\n  \u003CUForm :state=\"state\" :schema=\"schema\" @submit=\"onSubmit\">\n    \u003CUFormField label=\"Customer\" name=\"customer\">\n      \u003CUInput v-model=\"state.customer\" placeholder=\"Wonka Industries\" \u002F>\n    \u003C\u002FUFormField>\n\n    \u003Cdiv v-for=\"(item, index) in state.items\" :key=\"index\">\n      \u003CUForm\n-       :state=\"item\"\n+       :name=\"`items.${index}`\"\n        :schema=\"itemSchema\"\n+       nested\n      >\n        \u003CUFormField :label=\"!index ? 'Description' : undefined\" name=\"description\">\n          \u003CUInput v-model=\"item.description\" \u002F>\n        \u003C\u002FUFormField>\n        \u003CUFormField :label=\"!index ? 'Price' : undefined\" name=\"price\">\n          \u003CUInput v-model=\"item.price\" type=\"number\" \u002F>\n        \u003C\u002FUFormField>\n      \u003C\u002FUForm>\n    \u003C\u002Fdiv>\n  \u003C\u002FUForm>\n\u003C\u002Ftemplate>\n",[975,2205,2206,2210,2215,2220,2225,2230,2234,2239,2244,2251,2258,2263,2270,2275,2280,2285,2290,2295,2300,2304,2309,2314,2319],{"__ignoreMap":1031},[1035,2207,2208],{"class":1037,"line":1038},[1035,2209,1882],{"class":1168},[1035,2211,2212],{"class":1037,"line":1051},[1035,2213,2214],{"class":1168},"  \u003CUForm :state=\"state\" :schema=\"schema\" @submit=\"onSubmit\">\n",[1035,2216,2217],{"class":1037,"line":1177},[1035,2218,2219],{"class":1168},"    \u003CUFormField label=\"Customer\" name=\"customer\">\n",[1035,2221,2222],{"class":1037,"line":1188},[1035,2223,2224],{"class":1168},"      \u003CUInput v-model=\"state.customer\" placeholder=\"Wonka Industries\" \u002F>\n",[1035,2226,2227],{"class":1037,"line":1197},[1035,2228,2229],{"class":1168},"    \u003C\u002FUFormField>\n",[1035,2231,2232],{"class":1037,"line":1203},[1035,2233,1255],{"emptyLinePlaceholder":21},[1035,2235,2236],{"class":1037,"line":1263},[1035,2237,2238],{"class":1168},"    \u003Cdiv v-for=\"(item, index) in state.items\" :key=\"index\">\n",[1035,2240,2241],{"class":1037,"line":1269},[1035,2242,2243],{"class":1168},"      \u003CUForm\n",[1035,2245,2246,2248],{"class":1037,"line":1275},[1035,2247,1181],{"class":1180},[1035,2249,2250],{"class":1184},"       :state=\"item\"\n",[1035,2252,2253,2255],{"class":1037,"line":1283},[1035,2254,1191],{"class":1180},[1035,2256,2257],{"class":1044},"       :name=\"`items.${index}`\"\n",[1035,2259,2260],{"class":1037,"line":1291},[1035,2261,2262],{"class":1168},"        :schema=\"itemSchema\"\n",[1035,2264,2265,2267],{"class":1037,"line":1297},[1035,2266,1191],{"class":1180},[1035,2268,2269],{"class":1044},"       nested\n",[1035,2271,2272],{"class":1037,"line":1303},[1035,2273,2274],{"class":1168},"      >\n",[1035,2276,2277],{"class":1037,"line":1309},[1035,2278,2279],{"class":1168},"        \u003CUFormField :label=\"!index ? 'Description' : undefined\" name=\"description\">\n",[1035,2281,2282],{"class":1037,"line":1315},[1035,2283,2284],{"class":1168},"          \u003CUInput v-model=\"item.description\" \u002F>\n",[1035,2286,2287],{"class":1037,"line":1321},[1035,2288,2289],{"class":1168},"        \u003C\u002FUFormField>\n",[1035,2291,2292],{"class":1037,"line":1327},[1035,2293,2294],{"class":1168},"        \u003CUFormField :label=\"!index ? 'Price' : undefined\" name=\"price\">\n",[1035,2296,2297],{"class":1037,"line":1333},[1035,2298,2299],{"class":1168},"          \u003CUInput v-model=\"item.price\" type=\"number\" \u002F>\n",[1035,2301,2302],{"class":1037,"line":1338},[1035,2303,2289],{"class":1168},[1035,2305,2306],{"class":1037,"line":1484},[1035,2307,2308],{"class":1168},"      \u003C\u002FUForm>\n",[1035,2310,2311],{"class":1037,"line":1617},[1035,2312,2313],{"class":1168},"    \u003C\u002Fdiv>\n",[1035,2315,2316],{"class":1037,"line":1624},[1035,2317,2318],{"class":1168},"  \u003C\u002FUForm>\n",[1035,2320,2321],{"class":1037,"line":1631},[1035,2322,1925],{"class":1168},[998,2324,2326],{"id":2325},"removed-deprecated-utilities","Removed deprecated utilities",[966,2328,2329,2330,2333,2334,2337],{},"Some ",[970,2331,2332],{},"Nuxt Content utilities"," that were previously available in Nuxt UI Pro have been ",[970,2335,2336],{},"removed"," in v4:",[2339,2340,2341,2346],"ul",{},[1006,2342,2343],{},[975,2344,2345],{},"findPageBreadcrumb",[1006,2347,2348],{},[975,2349,2350],{},"findPageHeadline",[966,2352,2353],{},"These are now fully provided by Nuxt Content. Make sure to update your imports and usage accordingly.",[1025,2355,2357],{"className":1159,"code":2356,"language":1161,"meta":1031,"style":1031},"- import { findPageHeadline } from '@nuxt\u002Fui-pro\u002Futils\u002Fcontent'\n+ import { findPageHeadline } from '@nuxt\u002Fcontent\u002Futils'\n\n- import { findPageBreadcrumb } from '@nuxt\u002Fui-pro\u002Futils\u002Fcontent'\n+ import { findPageBreadcrumb } from '@nuxt\u002Fcontent\u002Futils'\n",[975,2358,2359,2366,2373,2377,2384],{"__ignoreMap":1031},[1035,2360,2361,2363],{"class":1037,"line":1038},[1035,2362,1181],{"class":1180},[1035,2364,2365],{"class":1184}," import { findPageHeadline } from '@nuxt\u002Fui-pro\u002Futils\u002Fcontent'\n",[1035,2367,2368,2370],{"class":1037,"line":1051},[1035,2369,1191],{"class":1180},[1035,2371,2372],{"class":1044}," import { findPageHeadline } from '@nuxt\u002Fcontent\u002Futils'\n",[1035,2374,2375],{"class":1037,"line":1177},[1035,2376,1255],{"emptyLinePlaceholder":21},[1035,2378,2379,2381],{"class":1037,"line":1188},[1035,2380,1181],{"class":1180},[1035,2382,2383],{"class":1184}," import { findPageBreadcrumb } from '@nuxt\u002Fui-pro\u002Futils\u002Fcontent'\n",[1035,2385,2386,2388],{"class":1037,"line":1197},[1035,2387,1191],{"class":1180},[1035,2389,2390],{"class":1044}," import { findPageBreadcrumb } from '@nuxt\u002Fcontent\u002Futils'\n",[998,2392,2394],{"id":2393},"ai-sdk-v5-migration-optional","AI SDK v5 migration (optional)",[966,2396,2397,2398,2063,2400,2063,2402,2063,2404,2063,2406,2408],{},"This section only applies if you're using the AI SDK and chat components (",[975,2399,265],{},[975,2401,270],{},[975,2403,280],{},[975,2405,285],{},[975,2407,275],{},"). If you're not using AI features, you can skip this section.",[1003,2410,2411],{},[1006,2412,2413,2414,2068,2417,2420,2421,1019],{},"Update ",[975,2415,2416],{},"@ai-sdk\u002Fvue",[975,2418,2419],{},"ai"," dependencies in your ",[975,2422,1018],{},[1025,2424,2426],{"className":1159,"code":2425,"language":1161,"meta":1031,"style":1031},"{\n  \"dependencies\": {\n-   \"@ai-sdk\u002Fvue\": \"^1.2.x\",\n+   \"@ai-sdk\u002Fvue\": \"^2.0.x\",\n-   \"ai\": \"^4.3.x\"\n+   \"ai\": \"^5.0.x\"\n  }\n}\n",[975,2427,2428,2433,2438,2445,2452,2459,2466,2471],{"__ignoreMap":1031},[1035,2429,2430],{"class":1037,"line":1038},[1035,2431,2432],{"class":1168},"{\n",[1035,2434,2435],{"class":1037,"line":1051},[1035,2436,2437],{"class":1168},"  \"dependencies\": {\n",[1035,2439,2440,2442],{"class":1037,"line":1177},[1035,2441,1181],{"class":1180},[1035,2443,2444],{"class":1184},"   \"@ai-sdk\u002Fvue\": \"^1.2.x\",\n",[1035,2446,2447,2449],{"class":1037,"line":1188},[1035,2448,1191],{"class":1180},[1035,2450,2451],{"class":1044},"   \"@ai-sdk\u002Fvue\": \"^2.0.x\",\n",[1035,2453,2454,2456],{"class":1037,"line":1197},[1035,2455,1181],{"class":1180},[1035,2457,2458],{"class":1184},"   \"ai\": \"^4.3.x\"\n",[1035,2460,2461,2463],{"class":1037,"line":1203},[1035,2462,1191],{"class":1180},[1035,2464,2465],{"class":1044},"   \"ai\": \"^5.0.x\"\n",[1035,2467,2468],{"class":1037,"line":1263},[1035,2469,2470],{"class":1168},"  }\n",[1035,2472,2473],{"class":1037,"line":1269},[1035,2474,2475],{"class":1168},"}\n",[1003,2477,2478],{"start":1051},[1006,2479,2480,2483,2484,2486],{},[975,2481,2482],{},"useChat"," composable has been replaced with the new ",[975,2485,259],{}," class:",[1025,2488,2490],{"className":1159,"code":2489,"language":1161,"meta":1031,"style":1031},"\u003Cscript setup lang=\"ts\">\n- import { useChat } from '@ai-sdk\u002Fvue'\n+ import { Chat } from '@ai-sdk\u002Fvue'\n+ import type { UIMessage } from 'ai'\n\n- const { messages, input, handleSubmit, status, error, reload, setMessages } = useChat()\n+ const messages: UIMessage[] = []\n+ const input = ref('')\n+\n+ const chat = new Chat({\n+   messages\n+ })\n+\n+ function handleSubmit() {\n+   chat.sendMessage({ text: input.value })\n+   input.value = ''\n+ }\n\u003C\u002Fscript>\n",[975,2491,2492,2497,2504,2511,2518,2522,2529,2536,2543,2548,2555,2562,2569,2573,2580,2587,2594,2600],{"__ignoreMap":1031},[1035,2493,2494],{"class":1037,"line":1038},[1035,2495,2496],{"class":1168},"\u003Cscript setup lang=\"ts\">\n",[1035,2498,2499,2501],{"class":1037,"line":1051},[1035,2500,1181],{"class":1180},[1035,2502,2503],{"class":1184}," import { useChat } from '@ai-sdk\u002Fvue'\n",[1035,2505,2506,2508],{"class":1037,"line":1177},[1035,2507,1191],{"class":1180},[1035,2509,2510],{"class":1044}," import { Chat } from '@ai-sdk\u002Fvue'\n",[1035,2512,2513,2515],{"class":1037,"line":1188},[1035,2514,1191],{"class":1180},[1035,2516,2517],{"class":1044}," import type { UIMessage } from 'ai'\n",[1035,2519,2520],{"class":1037,"line":1197},[1035,2521,1255],{"emptyLinePlaceholder":21},[1035,2523,2524,2526],{"class":1037,"line":1203},[1035,2525,1181],{"class":1180},[1035,2527,2528],{"class":1184}," const { messages, input, handleSubmit, status, error, reload, setMessages } = useChat()\n",[1035,2530,2531,2533],{"class":1037,"line":1263},[1035,2532,1191],{"class":1180},[1035,2534,2535],{"class":1044}," const messages: UIMessage[] = []\n",[1035,2537,2538,2540],{"class":1037,"line":1269},[1035,2539,1191],{"class":1180},[1035,2541,2542],{"class":1044}," const input = ref('')\n",[1035,2544,2545],{"class":1037,"line":1275},[1035,2546,2547],{"class":1180},"+\n",[1035,2549,2550,2552],{"class":1037,"line":1283},[1035,2551,1191],{"class":1180},[1035,2553,2554],{"class":1044}," const chat = new Chat({\n",[1035,2556,2557,2559],{"class":1037,"line":1291},[1035,2558,1191],{"class":1180},[1035,2560,2561],{"class":1044},"   messages\n",[1035,2563,2564,2566],{"class":1037,"line":1297},[1035,2565,1191],{"class":1180},[1035,2567,2568],{"class":1044}," })\n",[1035,2570,2571],{"class":1037,"line":1303},[1035,2572,2547],{"class":1180},[1035,2574,2575,2577],{"class":1037,"line":1309},[1035,2576,1191],{"class":1180},[1035,2578,2579],{"class":1044}," function handleSubmit() {\n",[1035,2581,2582,2584],{"class":1037,"line":1315},[1035,2583,1191],{"class":1180},[1035,2585,2586],{"class":1044},"   chat.sendMessage({ text: input.value })\n",[1035,2588,2589,2591],{"class":1037,"line":1321},[1035,2590,1191],{"class":1180},[1035,2592,2593],{"class":1044},"   input.value = ''\n",[1035,2595,2596,2598],{"class":1037,"line":1327},[1035,2597,1191],{"class":1180},[1035,2599,1481],{"class":1044},[1035,2601,2602],{"class":1037,"line":1333},[1035,2603,2604],{"class":1168},"\u003C\u002Fscript>\n",[1003,2606,2607],{"start":1177},[1006,2608,2609,2610,2613,2614,1019],{},"Messages now use ",[975,2611,2612],{},"parts"," instead of ",[975,2615,371],{},[1025,2617,2619],{"className":1159,"code":2618,"language":1161,"meta":1031,"style":1031},"\u002F\u002F When manually creating messages\n- setMessages([{\n+ messages.push({\n  id: '1',\n  role: 'user',\n- content: 'Hello world'\n+ parts: [{ type: 'text', text: 'Hello world' }]\n- }])\n+ })\n\n\u002F\u002F In templates\n\u003Ctemplate>\n- \u003CUChatMessage :content=\"message.content\" \u002F>\n+ \u003CUChatMessage :parts=\"message.parts\" \u002F>\n\u003C\u002Ftemplate>\n",[975,2620,2621,2626,2633,2640,2645,2650,2657,2664,2671,2677,2681,2686,2690,2697,2704],{"__ignoreMap":1031},[1035,2622,2623],{"class":1037,"line":1038},[1035,2624,2625],{"class":1168},"\u002F\u002F When manually creating messages\n",[1035,2627,2628,2630],{"class":1037,"line":1051},[1035,2629,1181],{"class":1180},[1035,2631,2632],{"class":1184}," setMessages([{\n",[1035,2634,2635,2637],{"class":1037,"line":1177},[1035,2636,1191],{"class":1180},[1035,2638,2639],{"class":1044}," messages.push({\n",[1035,2641,2642],{"class":1037,"line":1188},[1035,2643,2644],{"class":1168},"  id: '1',\n",[1035,2646,2647],{"class":1037,"line":1197},[1035,2648,2649],{"class":1168},"  role: 'user',\n",[1035,2651,2652,2654],{"class":1037,"line":1203},[1035,2653,1181],{"class":1180},[1035,2655,2656],{"class":1184}," content: 'Hello world'\n",[1035,2658,2659,2661],{"class":1037,"line":1263},[1035,2660,1191],{"class":1180},[1035,2662,2663],{"class":1044}," parts: [{ type: 'text', text: 'Hello world' }]\n",[1035,2665,2666,2668],{"class":1037,"line":1269},[1035,2667,1181],{"class":1180},[1035,2669,2670],{"class":1184}," }])\n",[1035,2672,2673,2675],{"class":1037,"line":1275},[1035,2674,1191],{"class":1180},[1035,2676,2568],{"class":1044},[1035,2678,2679],{"class":1037,"line":1283},[1035,2680,1255],{"emptyLinePlaceholder":21},[1035,2682,2683],{"class":1037,"line":1291},[1035,2684,2685],{"class":1168},"\u002F\u002F In templates\n",[1035,2687,2688],{"class":1037,"line":1297},[1035,2689,1882],{"class":1168},[1035,2691,2692,2694],{"class":1037,"line":1303},[1035,2693,1181],{"class":1180},[1035,2695,2696],{"class":1184}," \u003CUChatMessage :content=\"message.content\" \u002F>\n",[1035,2698,2699,2701],{"class":1037,"line":1309},[1035,2700,1191],{"class":1180},[1035,2702,2703],{"class":1044}," \u003CUChatMessage :parts=\"message.parts\" \u002F>\n",[1035,2705,2706],{"class":1037,"line":1315},[1035,2707,1925],{"class":1168},[1003,2709,2710],{"start":1188},[1006,2711,2712],{},"Some methods have been renamed:",[1025,2714,2716],{"className":1159,"code":2715,"language":1161,"meta":1031,"style":1031},"\u002F\u002F Regenerate the last message\n- reload()\n+ chat.regenerate()\n\n\u002F\u002F Access chat state\n- :messages=\"messages\"\n- :status=\"status\"\n+ :messages=\"chat.messages\"\n+ :status=\"chat.status\"\n",[975,2717,2718,2723,2730,2737,2741,2746,2753,2760,2767],{"__ignoreMap":1031},[1035,2719,2720],{"class":1037,"line":1038},[1035,2721,2722],{"class":1168},"\u002F\u002F Regenerate the last message\n",[1035,2724,2725,2727],{"class":1037,"line":1051},[1035,2726,1181],{"class":1180},[1035,2728,2729],{"class":1184}," reload()\n",[1035,2731,2732,2734],{"class":1037,"line":1177},[1035,2733,1191],{"class":1180},[1035,2735,2736],{"class":1044}," chat.regenerate()\n",[1035,2738,2739],{"class":1037,"line":1188},[1035,2740,1255],{"emptyLinePlaceholder":21},[1035,2742,2743],{"class":1037,"line":1197},[1035,2744,2745],{"class":1168},"\u002F\u002F Access chat state\n",[1035,2747,2748,2750],{"class":1037,"line":1203},[1035,2749,1181],{"class":1180},[1035,2751,2752],{"class":1184}," :messages=\"messages\"\n",[1035,2754,2755,2757],{"class":1037,"line":1263},[1035,2756,1181],{"class":1180},[1035,2758,2759],{"class":1184}," :status=\"status\"\n",[1035,2761,2762,2764],{"class":1037,"line":1269},[1035,2763,1191],{"class":1180},[1035,2765,2766],{"class":1044}," :messages=\"chat.messages\"\n",[1035,2768,2769,2771],{"class":1037,"line":1275},[1035,2770,1191],{"class":1180},[1035,2772,2773],{"class":1044}," :status=\"chat.status\"\n",[1003,2775,2776],{"start":1197},[1006,2777,2778,2779,2782,2783,1019],{},"Parts-based rendering with AI SDK helpers and ",[975,2780,2781],{},"isReasoningStreaming"," utility from ",[975,2784,2785],{},"@nuxt\u002Fui\u002Futils\u002Fai",[1025,2787,2790],{"className":2788,"code":2789,"language":34,"meta":1031,"style":1031},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\nimport { isReasoningUIPart, isTextUIPart } from 'ai'\nimport { isReasoningStreaming } from '@nuxt\u002Fui\u002Futils\u002Fai'\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003CUChatMessages :messages=\"chat.messages\" :status=\"chat.status\">\n    \u003Ctemplate #content=\"{ message }\">\n      \u003Ctemplate v-for=\"(part, index) in message.parts\" :key=\"`${message.id}-${part.type}-${index}`\">\n        \u003CUChatReasoning\n          v-if=\"isReasoningUIPart(part)\"\n          :text=\"part.text\"\n          :streaming=\"isReasoningStreaming(message, index, chat)\"\n        \u002F>\n\n        \u003CMDC\n          v-else-if=\"isTextUIPart(part)\"\n          :value=\"part.text\"\n          :cache-key=\"`${message.id}-${index}`\"\n          class=\"*:first:mt-0 *:last:mb-0\"\n        \u002F>\n      \u003C\u002Ftemplate>\n    \u003C\u002Ftemplate>\n  \u003C\u002FUChatMessages>\n\u003C\u002Ftemplate>\n",[975,2791,2792,2821,2853,2872,2881,2885,2893,2927,2956,3039,3047,3062,3076,3090,3095,3099,3106,3120,3133,3147,3161,3165,3174,3183,3192],{"__ignoreMap":1031},[1035,2793,2794,2797,2800,2804,2807,2810,2813,2816,2818],{"class":1037,"line":1038},[1035,2795,2796],{"class":1180},"\u003C",[1035,2798,2799],{"class":1184},"script",[1035,2801,2803],{"class":2802},"spNyl"," setup",[1035,2805,2806],{"class":2802}," lang",[1035,2808,2809],{"class":1180},"=",[1035,2811,2812],{"class":1180},"\"",[1035,2814,2815],{"class":1044},"ts",[1035,2817,2812],{"class":1180},[1035,2819,2820],{"class":1180},">\n",[1035,2822,2823,2827,2830,2833,2836,2839,2842,2845,2848,2850],{"class":1037,"line":1051},[1035,2824,2826],{"class":2825},"s7zQu","import",[1035,2828,2829],{"class":1180}," {",[1035,2831,2832],{"class":1168}," isReasoningUIPart",[1035,2834,2835],{"class":1180},",",[1035,2837,2838],{"class":1168}," isTextUIPart",[1035,2840,2841],{"class":1180}," }",[1035,2843,2844],{"class":2825}," from",[1035,2846,2847],{"class":1180}," '",[1035,2849,2419],{"class":1044},[1035,2851,2852],{"class":1180},"'\n",[1035,2854,2855,2857,2859,2862,2864,2866,2868,2870],{"class":1037,"line":1177},[1035,2856,2826],{"class":2825},[1035,2858,2829],{"class":1180},[1035,2860,2861],{"class":1168}," isReasoningStreaming",[1035,2863,2841],{"class":1180},[1035,2865,2844],{"class":2825},[1035,2867,2847],{"class":1180},[1035,2869,2785],{"class":1044},[1035,2871,2852],{"class":1180},[1035,2873,2874,2877,2879],{"class":1037,"line":1188},[1035,2875,2876],{"class":1180},"\u003C\u002F",[1035,2878,2799],{"class":1184},[1035,2880,2820],{"class":1180},[1035,2882,2883],{"class":1037,"line":1197},[1035,2884,1255],{"emptyLinePlaceholder":21},[1035,2886,2887,2889,2891],{"class":1037,"line":1203},[1035,2888,2796],{"class":1180},[1035,2890,1141],{"class":1184},[1035,2892,2820],{"class":1180},[1035,2894,2895,2898,2901,2904,2906,2908,2911,2913,2916,2918,2920,2923,2925],{"class":1037,"line":1263},[1035,2896,2897],{"class":1180},"  \u003C",[1035,2899,2900],{"class":1184},"UChatMessages",[1035,2902,2903],{"class":2802}," :messages",[1035,2905,2809],{"class":1180},[1035,2907,2812],{"class":1180},[1035,2909,2910],{"class":1044},"chat.messages",[1035,2912,2812],{"class":1180},[1035,2914,2915],{"class":2802}," :status",[1035,2917,2809],{"class":1180},[1035,2919,2812],{"class":1180},[1035,2921,2922],{"class":1044},"chat.status",[1035,2924,2812],{"class":1180},[1035,2926,2820],{"class":1180},[1035,2928,2929,2932,2934,2937,2939,2941,2943,2946,2949,2952,2954],{"class":1037,"line":1269},[1035,2930,2931],{"class":1180},"    \u003C",[1035,2933,1141],{"class":1184},[1035,2935,2936],{"class":1180}," #",[1035,2938,371],{"class":2802},[1035,2940,2809],{"class":1180},[1035,2942,2812],{"class":1180},[1035,2944,2945],{"class":1180},"{",[1035,2947,2948],{"class":1168}," message ",[1035,2950,2951],{"class":1180},"}",[1035,2953,2812],{"class":1180},[1035,2955,2820],{"class":1180},[1035,2957,2958,2961,2963,2966,2968,2970,2973,2975,2978,2981,2984,2987,2989,2991,2994,2997,2999,3002,3005,3007,3010,3012,3014,3017,3020,3022,3025,3027,3029,3031,3034,3037],{"class":1037,"line":1275},[1035,2959,2960],{"class":1180},"      \u003C",[1035,2962,1141],{"class":1184},[1035,2964,2965],{"class":2825}," v-for",[1035,2967,2809],{"class":1180},[1035,2969,2812],{"class":1180},[1035,2971,2972],{"class":1168},"(part",[1035,2974,2835],{"class":1180},[1035,2976,2977],{"class":1168}," index) ",[1035,2979,2980],{"class":1180},"in",[1035,2982,2983],{"class":1168}," message",[1035,2985,2986],{"class":1180},".",[1035,2988,2612],{"class":1168},[1035,2990,2812],{"class":1180},[1035,2992,2993],{"class":1180}," :",[1035,2995,2996],{"class":2802},"key",[1035,2998,2809],{"class":1180},[1035,3000,3001],{"class":1180},"\"`${",[1035,3003,3004],{"class":1168},"message",[1035,3006,2986],{"class":1180},[1035,3008,3009],{"class":1168},"id",[1035,3011,2951],{"class":1180},[1035,3013,1181],{"class":1044},[1035,3015,3016],{"class":1180},"${",[1035,3018,3019],{"class":1168},"part",[1035,3021,2986],{"class":1180},[1035,3023,3024],{"class":1168},"type",[1035,3026,2951],{"class":1180},[1035,3028,1181],{"class":1044},[1035,3030,3016],{"class":1180},[1035,3032,3033],{"class":1168},"index",[1035,3035,3036],{"class":1180},"}`\"",[1035,3038,2820],{"class":1180},[1035,3040,3041,3044],{"class":1037,"line":1283},[1035,3042,3043],{"class":1180},"        \u003C",[1035,3045,3046],{"class":1184},"UChatReasoning\n",[1035,3048,3049,3052,3054,3056,3059],{"class":1037,"line":1291},[1035,3050,3051],{"class":2802},"          v-if",[1035,3053,2809],{"class":1180},[1035,3055,2812],{"class":1180},[1035,3057,3058],{"class":1044},"isReasoningUIPart(part)",[1035,3060,3061],{"class":1180},"\"\n",[1035,3063,3064,3067,3069,3071,3074],{"class":1037,"line":1297},[1035,3065,3066],{"class":2802},"          :text",[1035,3068,2809],{"class":1180},[1035,3070,2812],{"class":1180},[1035,3072,3073],{"class":1044},"part.text",[1035,3075,3061],{"class":1180},[1035,3077,3078,3081,3083,3085,3088],{"class":1037,"line":1303},[1035,3079,3080],{"class":2802},"          :streaming",[1035,3082,2809],{"class":1180},[1035,3084,2812],{"class":1180},[1035,3086,3087],{"class":1044},"isReasoningStreaming(message, index, chat)",[1035,3089,3061],{"class":1180},[1035,3091,3092],{"class":1037,"line":1309},[1035,3093,3094],{"class":1180},"        \u002F>\n",[1035,3096,3097],{"class":1037,"line":1315},[1035,3098,1255],{"emptyLinePlaceholder":21},[1035,3100,3101,3103],{"class":1037,"line":1321},[1035,3102,3043],{"class":1180},[1035,3104,3105],{"class":1184},"MDC\n",[1035,3107,3108,3111,3113,3115,3118],{"class":1037,"line":1327},[1035,3109,3110],{"class":2802},"          v-else-if",[1035,3112,2809],{"class":1180},[1035,3114,2812],{"class":1180},[1035,3116,3117],{"class":1044},"isTextUIPart(part)",[1035,3119,3061],{"class":1180},[1035,3121,3122,3125,3127,3129,3131],{"class":1037,"line":1333},[1035,3123,3124],{"class":2802},"          :value",[1035,3126,2809],{"class":1180},[1035,3128,2812],{"class":1180},[1035,3130,3073],{"class":1044},[1035,3132,3061],{"class":1180},[1035,3134,3135,3138,3140,3142,3145],{"class":1037,"line":1338},[1035,3136,3137],{"class":2802},"          :cache-key",[1035,3139,2809],{"class":1180},[1035,3141,2812],{"class":1180},[1035,3143,3144],{"class":1044},"`${message.id}-${index}`",[1035,3146,3061],{"class":1180},[1035,3148,3149,3152,3154,3156,3159],{"class":1037,"line":1484},[1035,3150,3151],{"class":2802},"          class",[1035,3153,2809],{"class":1180},[1035,3155,2812],{"class":1180},[1035,3157,3158],{"class":1044},"*:first:mt-0 *:last:mb-0",[1035,3160,3061],{"class":1180},[1035,3162,3163],{"class":1037,"line":1617},[1035,3164,3094],{"class":1180},[1035,3166,3167,3170,3172],{"class":1037,"line":1624},[1035,3168,3169],{"class":1180},"      \u003C\u002F",[1035,3171,1141],{"class":1184},[1035,3173,2820],{"class":1180},[1035,3175,3176,3179,3181],{"class":1037,"line":1631},[1035,3177,3178],{"class":1180},"    \u003C\u002F",[1035,3180,1141],{"class":1184},[1035,3182,2820],{"class":1180},[1035,3184,3185,3188,3190],{"class":1037,"line":1636},[1035,3186,3187],{"class":1180},"  \u003C\u002F",[1035,3189,2900],{"class":1184},[1035,3191,2820],{"class":1180},[1035,3193,3194,3196,3198],{"class":1037,"line":1641},[1035,3195,2876],{"class":1180},[1035,3197,1141],{"class":1184},[1035,3199,2820],{"class":1180},[980,3201,3204],{"target":3202,"to":3203},"_blank","https:\u002F\u002Fai-sdk.dev\u002Fdocs\u002Fmigration-guides\u002Fmigration-guide-5-0",[966,3205,3206,3207,2986],{},"For more details on AI SDK v5 changes, review the ",[970,3208,3209],{},"official AI SDK v5 migration guide",[3211,3212,3214],"tip",{"target":3202,"to":3213},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fui\u002Fpull\u002F4698",[966,3215,3216,3217,3220],{},"View all changes from AI SDK v4 to v5 ",[970,3218,3219],{},"in the upgrade PR"," for a detailed migration reference.",[3222,3223,3224],"style",{},"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 .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 .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}",{"title":1031,"searchDepth":1051,"depth":1051,"links":3226},[3227,3231],{"id":995,"depth":1051,"text":996,"children":3228},[3229,3230],{"id":1000,"depth":1177,"text":1001},{"id":1781,"depth":1177,"text":1782},{"id":1852,"depth":1051,"text":1853,"children":3232},[3233,3234,3235,3236,3237,3238,3239],{"id":1859,"depth":1177,"text":1860},{"id":1928,"depth":1177,"text":1929},{"id":1968,"depth":1177,"text":1969},{"id":2051,"depth":1177,"text":2052},{"id":2155,"depth":1177,"text":2156},{"id":2325,"depth":1177,"text":2326},{"id":2393,"depth":1177,"text":2394},"md",[3242],{"label":3243,"to":3244,"icon":39},"Migration to v3","\u002Fdocs\u002Fgetting-started\u002Fmigration\u002Fv3",{},{"title":38,"icon":39},{"title":961,"description":46},"QTG-LhfHZ_3138NIO7E5Jg2Y39qm2R0-kvxrbwjr3wQ",{"data":3250,"body":3251},{},{"type":3252,"children":3253},"root",[3254],{"type":178,"tag":966,"props":3255,"children":3256},{},[3257],{"type":3258,"value":46},"text",1774017174911]