[{"data":1,"prerenderedAt":3258},["ShallowReactive",2],{"navigation":3,"-docs-getting-started-migration-v4":959,"-docs-getting-started-migration-v4-description":3248},[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":3239,"framework":16,"index":36,"links":3240,"meta":3244,"navigation":3245,"path":44,"seo":3246,"stem":45,"__hash__":3247},"docs\u002Fdocs\u002F1.getting-started\u002F3.migration\u002F1.v4.md","Migration to v4",{"type":963,"value":964,"toc":3224},"minimark",[965,979,989,992,997,1002,1020,1137,1341,1643,1652,1750,1759,1778,1782,1787,1849,1853,1856,1860,1872,1925,1929,1938,1965,1969,1979,2030,2048,2052,2073,2099,2118,2137,2152,2156,2161,2200,2322,2326,2337,2350,2353,2390,2394,2408,2422,2475,2486,2604,2615,2707,2712,2773,2785,3199,3209,3220],[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,1486],{},[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,1365],{"className":1159,"code":1364,"filename":1361,"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",[975,1366,1367,1372,1377,1382,1387,1392,1397,1404,1411,1418,1425,1432,1437,1444,1450,1456,1462,1468,1474,1481],{"__ignoreMap":1031},[1035,1368,1369],{"class":1037,"line":1038},[1035,1370,1371],{"class":1168},"export default defineAppConfig({\n",[1035,1373,1374],{"class":1037,"line":1051},[1035,1375,1376],{"class":1168},"  ui: {\n",[1035,1378,1379],{"class":1037,"line":1177},[1035,1380,1381],{"class":1168},"    colors: {\n",[1035,1383,1384],{"class":1037,"line":1188},[1035,1385,1386],{"class":1168},"      primary: 'green',\n",[1035,1388,1389],{"class":1037,"line":1197},[1035,1390,1391],{"class":1168},"      neutral: 'slate'\n",[1035,1393,1394],{"class":1037,"line":1203},[1035,1395,1396],{"class":1168},"    },\n",[1035,1398,1399,1401],{"class":1037,"line":1263},[1035,1400,1191],{"class":1180},[1035,1402,1403],{"class":1044},"   pageCard: {\n",[1035,1405,1406,1408],{"class":1037,"line":1269},[1035,1407,1191],{"class":1180},[1035,1409,1410],{"class":1044},"     slots: {\n",[1035,1412,1413,1415],{"class":1037,"line":1275},[1035,1414,1191],{"class":1180},[1035,1416,1417],{"class":1044},"       root: 'rounded-xl',\n",[1035,1419,1420,1422],{"class":1037,"line":1283},[1035,1421,1191],{"class":1180},[1035,1423,1424],{"class":1044},"     }\n",[1035,1426,1427,1429],{"class":1037,"line":1291},[1035,1428,1191],{"class":1180},[1035,1430,1431],{"class":1044},"   }\n",[1035,1433,1434],{"class":1037,"line":1297},[1035,1435,1436],{"class":1168},"  },\n",[1035,1438,1439,1441],{"class":1037,"line":1303},[1035,1440,1181],{"class":1180},[1035,1442,1443],{"class":1184}," uiPro: {\n",[1035,1445,1446,1448],{"class":1037,"line":1309},[1035,1447,1181],{"class":1180},[1035,1449,1403],{"class":1184},[1035,1451,1452,1454],{"class":1037,"line":1315},[1035,1453,1181],{"class":1180},[1035,1455,1410],{"class":1184},[1035,1457,1458,1460],{"class":1037,"line":1321},[1035,1459,1181],{"class":1180},[1035,1461,1417],{"class":1184},[1035,1463,1464,1466],{"class":1037,"line":1327},[1035,1465,1181],{"class":1180},[1035,1467,1424],{"class":1184},[1035,1469,1470,1472],{"class":1037,"line":1333},[1035,1471,1181],{"class":1180},[1035,1473,1431],{"class":1184},[1035,1475,1476,1478],{"class":1037,"line":1338},[1035,1477,1181],{"class":1180},[1035,1479,1480],{"class":1184}," }\n",[1035,1482,1484],{"class":1037,"line":1483},20,[1035,1485,1206],{"class":1168},[1141,1487,1488],{"v-slot:vue":1031},[1144,1489,1490,1500],{},[1003,1491,1492],{"start":1177},[1006,1493,1351,1494,1355,1496,1015,1498,1019],{},[975,1495,1354],{},[975,1497,1358],{},[975,1499,1221],{},[1025,1501,1503],{"className":1159,"code":1502,"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,1504,1505,1509,1513,1517,1522,1526,1530,1534,1538,1543,1550,1557,1564,1571,1578,1583,1590,1596,1602,1608,1614,1621,1628,1633,1638],{"__ignoreMap":1031},[1035,1506,1507],{"class":1037,"line":1038},[1035,1508,1260],{"class":1168},[1035,1510,1511],{"class":1037,"line":1051},[1035,1512,1266],{"class":1168},[1035,1514,1515],{"class":1037,"line":1177},[1035,1516,1272],{"class":1168},[1035,1518,1519],{"class":1037,"line":1188},[1035,1520,1521],{"class":1168},"    ui({\n",[1035,1523,1524],{"class":1037,"line":1197},[1035,1525,1294],{"class":1168},[1035,1527,1528],{"class":1037,"line":1203},[1035,1529,1300],{"class":1168},[1035,1531,1532],{"class":1037,"line":1263},[1035,1533,1306],{"class":1168},[1035,1535,1536],{"class":1037,"line":1269},[1035,1537,1312],{"class":1168},[1035,1539,1540],{"class":1037,"line":1275},[1035,1541,1542],{"class":1168},"        },\n",[1035,1544,1545,1547],{"class":1037,"line":1283},[1035,1546,1191],{"class":1180},[1035,1548,1549],{"class":1044},"       pageCard: {\n",[1035,1551,1552,1554],{"class":1037,"line":1291},[1035,1553,1191],{"class":1180},[1035,1555,1556],{"class":1044},"         slots: {\n",[1035,1558,1559,1561],{"class":1037,"line":1297},[1035,1560,1191],{"class":1180},[1035,1562,1563],{"class":1044},"           root: 'rounded-xl',\n",[1035,1565,1566,1568],{"class":1037,"line":1303},[1035,1567,1191],{"class":1180},[1035,1569,1570],{"class":1044},"         }\n",[1035,1572,1573,1575],{"class":1037,"line":1309},[1035,1574,1191],{"class":1180},[1035,1576,1577],{"class":1044},"       }\n",[1035,1579,1580],{"class":1037,"line":1315},[1035,1581,1582],{"class":1168},"      },\n",[1035,1584,1585,1587],{"class":1037,"line":1321},[1035,1586,1181],{"class":1180},[1035,1588,1589],{"class":1184},"     uiPro: {\n",[1035,1591,1592,1594],{"class":1037,"line":1327},[1035,1593,1181],{"class":1180},[1035,1595,1549],{"class":1184},[1035,1597,1598,1600],{"class":1037,"line":1333},[1035,1599,1181],{"class":1180},[1035,1601,1556],{"class":1184},[1035,1603,1604,1606],{"class":1037,"line":1338},[1035,1605,1181],{"class":1180},[1035,1607,1563],{"class":1184},[1035,1609,1610,1612],{"class":1037,"line":1483},[1035,1611,1181],{"class":1180},[1035,1613,1570],{"class":1184},[1035,1615,1617,1619],{"class":1037,"line":1616},21,[1035,1618,1181],{"class":1180},[1035,1620,1577],{"class":1184},[1035,1622,1624,1626],{"class":1037,"line":1623},22,[1035,1625,1181],{"class":1180},[1035,1627,1424],{"class":1184},[1035,1629,1631],{"class":1037,"line":1630},23,[1035,1632,1330],{"class":1168},[1035,1634,1636],{"class":1037,"line":1635},24,[1035,1637,1200],{"class":1168},[1035,1639,1641],{"class":1037,"line":1640},25,[1035,1642,1206],{"class":1168},[1003,1644,1645],{"start":1188},[1006,1646,1008,1647,1012,1649,1651],{},[975,1648,1011],{},[975,1650,977],{}," in your CSS:",[1138,1653,1654,1725],{},[1141,1655,1656],{"v-slot:nuxt":1031},[1144,1657,1658,1683],{},[1025,1659,1662],{"className":1159,"code":1660,"filename":1661,"language":1161,"meta":1031,"style":1031},"@import \"tailwindcss\";\n- @import \"@nuxt\u002Fui-pro\";\n+ @import \"@nuxt\u002Fui\";\n","app\u002Fassets\u002Fcss\u002Fmain.css",[975,1663,1664,1669,1676],{"__ignoreMap":1031},[1035,1665,1666],{"class":1037,"line":1038},[1035,1667,1668],{"class":1168},"@import \"tailwindcss\";\n",[1035,1670,1671,1673],{"class":1037,"line":1051},[1035,1672,1181],{"class":1180},[1035,1674,1675],{"class":1184}," @import \"@nuxt\u002Fui-pro\";\n",[1035,1677,1678,1680],{"class":1037,"line":1177},[1035,1679,1191],{"class":1180},[1035,1681,1682],{"class":1044}," @import \"@nuxt\u002Fui\";\n",[1684,1685,1686,1693],"warning",{},[966,1687,1688,1689,1692],{},"If you are upgrading to Nuxt 4 at the same time as Nuxt UI v4, make sure to update the ",[975,1690,1691],{},"@source"," directive to match the new directory structure.",[1025,1694,1696],{"className":1159,"code":1695,"filename":1661,"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,1697,1698,1702,1707,1711,1718],{"__ignoreMap":1031},[1035,1699,1700],{"class":1037,"line":1038},[1035,1701,1668],{"class":1168},[1035,1703,1704],{"class":1037,"line":1051},[1035,1705,1706],{"class":1168},"@import \"@nuxt\u002Fui\";\n",[1035,1708,1709],{"class":1037,"line":1177},[1035,1710,1255],{"emptyLinePlaceholder":21},[1035,1712,1713,1715],{"class":1037,"line":1188},[1035,1714,1181],{"class":1180},[1035,1716,1717],{"class":1184}," @source \"..\u002F..\u002Fcontent\u002F**\u002F*\";\n",[1035,1719,1720,1722],{"class":1037,"line":1197},[1035,1721,1191],{"class":1180},[1035,1723,1724],{"class":1044}," @source \"..\u002F..\u002F..\u002Fcontent\u002F**\u002F*\";\n",[1141,1726,1727],{"v-slot:vue":1031},[1144,1728,1729],{},[1025,1730,1732],{"className":1159,"code":1660,"filename":1731,"language":1161,"meta":1031,"style":1031},"src\u002Fassets\u002Fcss\u002Fmain.css",[975,1733,1734,1738,1744],{"__ignoreMap":1031},[1035,1735,1736],{"class":1037,"line":1038},[1035,1737,1668],{"class":1168},[1035,1739,1740,1742],{"class":1037,"line":1051},[1035,1741,1181],{"class":1180},[1035,1743,1675],{"class":1184},[1035,1745,1746,1748],{"class":1037,"line":1177},[1035,1747,1191],{"class":1180},[1035,1749,1682],{"class":1044},[1003,1751,1752],{"start":1197},[1006,1753,1008,1754,1012,1756,1758],{},[975,1755,1011],{},[975,1757,977],{}," in your imports:",[1025,1760,1762],{"className":1159,"code":1761,"language":1161,"meta":1031,"style":1031},"- import type { BannerProps } from '@nuxt\u002Fui-pro'\n+ import type { BannerProps } from '@nuxt\u002Fui'\n",[975,1763,1764,1771],{"__ignoreMap":1031},[1035,1765,1766,1768],{"class":1037,"line":1038},[1035,1767,1181],{"class":1180},[1035,1769,1770],{"class":1184}," import type { BannerProps } from '@nuxt\u002Fui-pro'\n",[1035,1772,1773,1775],{"class":1037,"line":1051},[1035,1774,1191],{"class":1180},[1035,1776,1777],{"class":1044}," import type { BannerProps } from '@nuxt\u002Fui'\n",[998,1779,1781],{"id":1780},"from-nuxt-ui","From Nuxt UI",[1003,1783,1784],{},[1006,1785,1786],{},"When upgrading from Nuxt UI v3, you simply need to update to v4:",[1021,1788,1789,1804,1819,1834],{"sync":1023},[1025,1790,1792],{"className":1027,"code":1791,"filename":1029,"language":1030,"meta":1031,"style":1031},"pnpm add @nuxt\u002Fui tailwindcss\n",[975,1793,1794],{"__ignoreMap":1031},[1035,1795,1796,1798,1800,1802],{"class":1037,"line":1038},[1035,1797,1029],{"class":1041},[1035,1799,1056],{"class":1044},[1035,1801,1059],{"class":1044},[1035,1803,1062],{"class":1044},[1025,1805,1807],{"className":1027,"code":1806,"filename":1066,"language":1030,"meta":1031,"style":1031},"yarn add @nuxt\u002Fui tailwindcss\n",[975,1808,1809],{"__ignoreMap":1031},[1035,1810,1811,1813,1815,1817],{"class":1037,"line":1038},[1035,1812,1066],{"class":1041},[1035,1814,1056],{"class":1044},[1035,1816,1059],{"class":1044},[1035,1818,1062],{"class":1044},[1025,1820,1822],{"className":1027,"code":1821,"filename":1090,"language":1030,"meta":1031,"style":1031},"npm install @nuxt\u002Fui tailwindcss\n",[975,1823,1824],{"__ignoreMap":1031},[1035,1825,1826,1828,1830,1832],{"class":1037,"line":1038},[1035,1827,1090],{"class":1041},[1035,1829,1108],{"class":1044},[1035,1831,1059],{"class":1044},[1035,1833,1062],{"class":1044},[1025,1835,1837],{"className":1027,"code":1836,"filename":1116,"language":1030,"meta":1031,"style":1031},"bun add @nuxt\u002Fui tailwindcss\n",[975,1838,1839],{"__ignoreMap":1031},[1035,1840,1841,1843,1845,1847],{"class":1037,"line":1038},[1035,1842,1116],{"class":1041},[1035,1844,1056],{"class":1044},[1035,1846,1059],{"class":1044},[1035,1848,1062],{"class":1044},[993,1850,1852],{"id":1851},"changes-from-v3","Changes from v3",[966,1854,1855],{},"After upgrading to Nuxt UI v4, please note the following important changes:",[998,1857,1859],{"id":1858},"renamed-buttongroup","Renamed ButtonGroup",[966,1861,1862,1863,1866,1867,1019],{},"The ",[975,1864,1865],{},"ButtonGroup"," component has been renamed to ",[1868,1869,1870],"a",{"href":503},[975,1871,502],{},[1025,1873,1875],{"className":1159,"code":1874,"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,1876,1877,1882,1889,1896,1901,1906,1913,1920],{"__ignoreMap":1031},[1035,1878,1879],{"class":1037,"line":1038},[1035,1880,1881],{"class":1168},"\u003Ctemplate>\n",[1035,1883,1884,1886],{"class":1037,"line":1051},[1035,1885,1181],{"class":1180},[1035,1887,1888],{"class":1184}," \u003CUButtonGroup>\n",[1035,1890,1891,1893],{"class":1037,"line":1177},[1035,1892,1191],{"class":1180},[1035,1894,1895],{"class":1044}," \u003CUFieldGroup>\n",[1035,1897,1898],{"class":1037,"line":1188},[1035,1899,1900],{"class":1168},"    \u003CUButton label=\"Button\" \u002F>\n",[1035,1902,1903],{"class":1037,"line":1197},[1035,1904,1905],{"class":1168},"    \u003CUButton icon=\"i-lucide-chevron-down\" \u002F>\n",[1035,1907,1908,1910],{"class":1037,"line":1203},[1035,1909,1191],{"class":1180},[1035,1911,1912],{"class":1044}," \u003C\u002FUFieldGroup>\n",[1035,1914,1915,1917],{"class":1037,"line":1263},[1035,1916,1181],{"class":1180},[1035,1918,1919],{"class":1184}," \u003C\u002FUButtonGroup>\n",[1035,1921,1922],{"class":1037,"line":1269},[1035,1923,1924],{"class":1168},"\u003C\u002Ftemplate>\n",[998,1926,1928],{"id":1927},"renamed-pagemarquee","Renamed PageMarquee",[966,1930,1862,1931,1866,1934,1019],{},[975,1932,1933],{},"PageMarquee",[1868,1935,1936],{"href":594},[975,1937,593],{},[1025,1939,1941],{"className":1159,"code":1940,"language":1161,"meta":1031,"style":1031},"\u003Ctemplate>\n- \u003CUPageMarquee :items=\"items\" \u002F>\n+ \u003CUMarquee :items=\"items\" \u002F>\n\u003C\u002Ftemplate>\n",[975,1942,1943,1947,1954,1961],{"__ignoreMap":1031},[1035,1944,1945],{"class":1037,"line":1038},[1035,1946,1881],{"class":1168},[1035,1948,1949,1951],{"class":1037,"line":1051},[1035,1950,1181],{"class":1180},[1035,1952,1953],{"class":1184}," \u003CUPageMarquee :items=\"items\" \u002F>\n",[1035,1955,1956,1958],{"class":1037,"line":1177},[1035,1957,1191],{"class":1180},[1035,1959,1960],{"class":1044}," \u003CUMarquee :items=\"items\" \u002F>\n",[1035,1962,1963],{"class":1037,"line":1188},[1035,1964,1924],{"class":1168},[998,1966,1968],{"id":1967},"removed-pageaccordion","Removed PageAccordion",[966,1970,1862,1971,1974,1975,1019],{},[975,1972,1973],{},"PageAccordion"," component has been removed in favor of ",[1868,1976,1977],{"href":170},[975,1978,169],{},[1025,1980,1982],{"className":1159,"code":1981,"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,1983,1984,1988,1995,2002,2007,2014,2021,2026],{"__ignoreMap":1031},[1035,1985,1986],{"class":1037,"line":1038},[1035,1987,1881],{"class":1168},[1035,1989,1990,1992],{"class":1037,"line":1051},[1035,1991,1181],{"class":1180},[1035,1993,1994],{"class":1184}," \u003CUPageAccordion\n",[1035,1996,1997,1999],{"class":1037,"line":1177},[1035,1998,1191],{"class":1180},[1035,2000,2001],{"class":1044}," \u003CUAccordion\n",[1035,2003,2004],{"class":1037,"line":1188},[1035,2005,2006],{"class":1168},"    :items=\"items\"\n",[1035,2008,2009,2011],{"class":1037,"line":1197},[1035,2010,1191],{"class":1180},[1035,2012,2013],{"class":1044},"   :unmount-on-hide=\"false\"\n",[1035,2015,2016,2018],{"class":1037,"line":1203},[1035,2017,1191],{"class":1180},[1035,2019,2020],{"class":1044},"   :ui=\"{ trigger: 'text-base', body: 'text-base text-muted' }\"\n",[1035,2022,2023],{"class":1037,"line":1263},[1035,2024,2025],{"class":1168},"  \u002F>\n",[1035,2027,2028],{"class":1037,"line":1269},[1035,2029,1924],{"class":1168},[980,2031,2032],{},[966,2033,1862,2034,2036,2037,2040,2041,2044,2045,2047],{},[975,2035,1973],{}," component was a wrapper that set ",[975,2038,2039],{},"unmount-on-hide"," to ",[975,2042,2043],{},"false"," and customized the ",[975,2046,1354],{}," prop.",[998,2049,2051],{"id":2050},"renamed-model-modifiers","Renamed model modifiers",[966,2053,1862,2054,2057,2058,2062,2063,2067,2068,2072],{},[975,2055,2056],{},"modelModifiers"," shape used by ",[1868,2059,2060],{"href":543},[975,2061,542],{},", ",[1868,2064,2065],{"href":558},[975,2066,557],{}," and ",[1868,2069,2070],{"href":784},[975,2071,783],{}," has changed in v4:",[1003,2074,2075,2089],{},[1006,2076,1862,2077,2080,2081,2084,2085,2088],{},[975,2078,2079],{},"nullify"," modifier was renamed to ",[975,2082,2083],{},"nullable"," (it converts empty\u002Fblank values to ",[975,2086,2087],{},"null",").",[1006,2090,2091,2092,2095,2096,2088],{},"A new ",[975,2093,2094],{},"optional"," modifier was added (it converts empty\u002Fblank values to ",[975,2097,2098],{},"undefined",[1025,2100,2102],{"className":1159,"code":2101,"language":1161,"meta":1031,"style":1031},"- \u003CUInput v-model.nullify=\"value\" \u002F>\n+ \u003CUInput v-model.nullable=\"value\" \u002F>\n",[975,2103,2104,2111],{"__ignoreMap":1031},[1035,2105,2106,2108],{"class":1037,"line":1038},[1035,2107,1181],{"class":1180},[1035,2109,2110],{"class":1184}," \u003CUInput v-model.nullify=\"value\" \u002F>\n",[1035,2112,2113,2115],{"class":1037,"line":1051},[1035,2114,1191],{"class":1180},[1035,2116,2117],{"class":1044}," \u003CUInput v-model.nullable=\"value\" \u002F>\n",[1025,2119,2121],{"className":1159,"code":2120,"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,2122,2123,2130],{"__ignoreMap":1031},[1035,2124,2125,2127],{"class":1037,"line":1038},[1035,2126,1181],{"class":1180},[1035,2128,2129],{"class":1184}," \u003CUTextarea v-model=\"value\" :model-modifiers=\"{ nullify: true }\" \u002F>\n",[1035,2131,2132,2134],{"class":1037,"line":1051},[1035,2133,1191],{"class":1180},[1035,2135,2136],{"class":1044}," \u003CUTextarea v-model=\"value\" :model-modifiers=\"{ nullable: true }\" \u002F>\n",[966,2138,2139,2140,2142,2143,2145,2146,2148,2149,2151],{},"Use ",[975,2141,2083],{}," when you want empty values as ",[975,2144,2087],{},", and ",[975,2147,2094],{}," when you prefer ",[975,2150,2098],{}," for absent values.",[998,2153,2155],{"id":2154},"changes-to-form-component","Changes to Form component",[966,2157,1862,2158,2160],{},[975,2159,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,2162,2163,2177,2187],{},[1006,2164,2165,2166,2169,2170,2176],{},"Schema ",[970,2167,2168],{},"transformations will only"," be applied to the ",[970,2171,2172,2175],{},[975,2173,2174],{},"@submit"," data"," and will no longer mutate the form's state. This provides better predictability and prevents unexpected state mutations.",[1006,2178,2179,2182,2183,2186],{},[970,2180,2181],{},"Nested forms must be enabled explicitly"," using the ",[975,2184,2185],{},"nested"," prop. This makes the component behavior more explicit and prevents accidental nested form creation.",[1006,2188,2189,2195,2196,2199],{},[970,2190,2191,2192],{},"Nested forms should now provide a ",[975,2193,2194],{},"name"," prop (similar to ",[975,2197,2198],{},"UFormField",") and will automatically inherit their state from their parent form.",[1025,2201,2203],{"className":1159,"code":2202,"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,2204,2205,2209,2214,2219,2224,2229,2233,2238,2243,2250,2257,2262,2269,2274,2279,2284,2289,2294,2299,2303,2308,2313,2318],{"__ignoreMap":1031},[1035,2206,2207],{"class":1037,"line":1038},[1035,2208,1881],{"class":1168},[1035,2210,2211],{"class":1037,"line":1051},[1035,2212,2213],{"class":1168},"  \u003CUForm :state=\"state\" :schema=\"schema\" @submit=\"onSubmit\">\n",[1035,2215,2216],{"class":1037,"line":1177},[1035,2217,2218],{"class":1168},"    \u003CUFormField label=\"Customer\" name=\"customer\">\n",[1035,2220,2221],{"class":1037,"line":1188},[1035,2222,2223],{"class":1168},"      \u003CUInput v-model=\"state.customer\" placeholder=\"Wonka Industries\" \u002F>\n",[1035,2225,2226],{"class":1037,"line":1197},[1035,2227,2228],{"class":1168},"    \u003C\u002FUFormField>\n",[1035,2230,2231],{"class":1037,"line":1203},[1035,2232,1255],{"emptyLinePlaceholder":21},[1035,2234,2235],{"class":1037,"line":1263},[1035,2236,2237],{"class":1168},"    \u003Cdiv v-for=\"(item, index) in state.items\" :key=\"index\">\n",[1035,2239,2240],{"class":1037,"line":1269},[1035,2241,2242],{"class":1168},"      \u003CUForm\n",[1035,2244,2245,2247],{"class":1037,"line":1275},[1035,2246,1181],{"class":1180},[1035,2248,2249],{"class":1184},"       :state=\"item\"\n",[1035,2251,2252,2254],{"class":1037,"line":1283},[1035,2253,1191],{"class":1180},[1035,2255,2256],{"class":1044},"       :name=\"`items.${index}`\"\n",[1035,2258,2259],{"class":1037,"line":1291},[1035,2260,2261],{"class":1168},"        :schema=\"itemSchema\"\n",[1035,2263,2264,2266],{"class":1037,"line":1297},[1035,2265,1191],{"class":1180},[1035,2267,2268],{"class":1044},"       nested\n",[1035,2270,2271],{"class":1037,"line":1303},[1035,2272,2273],{"class":1168},"      >\n",[1035,2275,2276],{"class":1037,"line":1309},[1035,2277,2278],{"class":1168},"        \u003CUFormField :label=\"!index ? 'Description' : undefined\" name=\"description\">\n",[1035,2280,2281],{"class":1037,"line":1315},[1035,2282,2283],{"class":1168},"          \u003CUInput v-model=\"item.description\" \u002F>\n",[1035,2285,2286],{"class":1037,"line":1321},[1035,2287,2288],{"class":1168},"        \u003C\u002FUFormField>\n",[1035,2290,2291],{"class":1037,"line":1327},[1035,2292,2293],{"class":1168},"        \u003CUFormField :label=\"!index ? 'Price' : undefined\" name=\"price\">\n",[1035,2295,2296],{"class":1037,"line":1333},[1035,2297,2298],{"class":1168},"          \u003CUInput v-model=\"item.price\" type=\"number\" \u002F>\n",[1035,2300,2301],{"class":1037,"line":1338},[1035,2302,2288],{"class":1168},[1035,2304,2305],{"class":1037,"line":1483},[1035,2306,2307],{"class":1168},"      \u003C\u002FUForm>\n",[1035,2309,2310],{"class":1037,"line":1616},[1035,2311,2312],{"class":1168},"    \u003C\u002Fdiv>\n",[1035,2314,2315],{"class":1037,"line":1623},[1035,2316,2317],{"class":1168},"  \u003C\u002FUForm>\n",[1035,2319,2320],{"class":1037,"line":1630},[1035,2321,1924],{"class":1168},[998,2323,2325],{"id":2324},"removed-deprecated-utilities","Removed deprecated utilities",[966,2327,2328,2329,2332,2333,2336],{},"Some ",[970,2330,2331],{},"Nuxt Content utilities"," that were previously available in Nuxt UI Pro have been ",[970,2334,2335],{},"removed"," in v4:",[2338,2339,2340,2345],"ul",{},[1006,2341,2342],{},[975,2343,2344],{},"findPageBreadcrumb",[1006,2346,2347],{},[975,2348,2349],{},"findPageHeadline",[966,2351,2352],{},"These are now fully provided by Nuxt Content. Make sure to update your imports and usage accordingly.",[1025,2354,2356],{"className":1159,"code":2355,"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,2357,2358,2365,2372,2376,2383],{"__ignoreMap":1031},[1035,2359,2360,2362],{"class":1037,"line":1038},[1035,2361,1181],{"class":1180},[1035,2363,2364],{"class":1184}," import { findPageHeadline } from '@nuxt\u002Fui-pro\u002Futils\u002Fcontent'\n",[1035,2366,2367,2369],{"class":1037,"line":1051},[1035,2368,1191],{"class":1180},[1035,2370,2371],{"class":1044}," import { findPageHeadline } from '@nuxt\u002Fcontent\u002Futils'\n",[1035,2373,2374],{"class":1037,"line":1177},[1035,2375,1255],{"emptyLinePlaceholder":21},[1035,2377,2378,2380],{"class":1037,"line":1188},[1035,2379,1181],{"class":1180},[1035,2381,2382],{"class":1184}," import { findPageBreadcrumb } from '@nuxt\u002Fui-pro\u002Futils\u002Fcontent'\n",[1035,2384,2385,2387],{"class":1037,"line":1197},[1035,2386,1191],{"class":1180},[1035,2388,2389],{"class":1044}," import { findPageBreadcrumb } from '@nuxt\u002Fcontent\u002Futils'\n",[998,2391,2393],{"id":2392},"ai-sdk-v5-migration-optional","AI SDK v5 migration (optional)",[966,2395,2396,2397,2062,2399,2062,2401,2062,2403,2062,2405,2407],{},"This section only applies if you're using the AI SDK and chat components (",[975,2398,265],{},[975,2400,270],{},[975,2402,280],{},[975,2404,285],{},[975,2406,275],{},"). If you're not using AI features, you can skip this section.",[1003,2409,2410],{},[1006,2411,2412,2413,2067,2416,2419,2420,1019],{},"Update ",[975,2414,2415],{},"@ai-sdk\u002Fvue",[975,2417,2418],{},"ai"," dependencies in your ",[975,2421,1018],{},[1025,2423,2425],{"className":1159,"code":2424,"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,2426,2427,2432,2437,2444,2451,2458,2465,2470],{"__ignoreMap":1031},[1035,2428,2429],{"class":1037,"line":1038},[1035,2430,2431],{"class":1168},"{\n",[1035,2433,2434],{"class":1037,"line":1051},[1035,2435,2436],{"class":1168},"  \"dependencies\": {\n",[1035,2438,2439,2441],{"class":1037,"line":1177},[1035,2440,1181],{"class":1180},[1035,2442,2443],{"class":1184},"   \"@ai-sdk\u002Fvue\": \"^1.2.x\",\n",[1035,2445,2446,2448],{"class":1037,"line":1188},[1035,2447,1191],{"class":1180},[1035,2449,2450],{"class":1044},"   \"@ai-sdk\u002Fvue\": \"^2.0.x\",\n",[1035,2452,2453,2455],{"class":1037,"line":1197},[1035,2454,1181],{"class":1180},[1035,2456,2457],{"class":1184},"   \"ai\": \"^4.3.x\"\n",[1035,2459,2460,2462],{"class":1037,"line":1203},[1035,2461,1191],{"class":1180},[1035,2463,2464],{"class":1044},"   \"ai\": \"^5.0.x\"\n",[1035,2466,2467],{"class":1037,"line":1263},[1035,2468,2469],{"class":1168},"  }\n",[1035,2471,2472],{"class":1037,"line":1269},[1035,2473,2474],{"class":1168},"}\n",[1003,2476,2477],{"start":1051},[1006,2478,2479,2482,2483,2485],{},[975,2480,2481],{},"useChat"," composable has been replaced with the new ",[975,2484,259],{}," class:",[1025,2487,2489],{"className":1159,"code":2488,"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,2490,2491,2496,2503,2510,2517,2521,2528,2535,2542,2547,2554,2561,2568,2572,2579,2586,2593,2599],{"__ignoreMap":1031},[1035,2492,2493],{"class":1037,"line":1038},[1035,2494,2495],{"class":1168},"\u003Cscript setup lang=\"ts\">\n",[1035,2497,2498,2500],{"class":1037,"line":1051},[1035,2499,1181],{"class":1180},[1035,2501,2502],{"class":1184}," import { useChat } from '@ai-sdk\u002Fvue'\n",[1035,2504,2505,2507],{"class":1037,"line":1177},[1035,2506,1191],{"class":1180},[1035,2508,2509],{"class":1044}," import { Chat } from '@ai-sdk\u002Fvue'\n",[1035,2511,2512,2514],{"class":1037,"line":1188},[1035,2513,1191],{"class":1180},[1035,2515,2516],{"class":1044}," import type { UIMessage } from 'ai'\n",[1035,2518,2519],{"class":1037,"line":1197},[1035,2520,1255],{"emptyLinePlaceholder":21},[1035,2522,2523,2525],{"class":1037,"line":1203},[1035,2524,1181],{"class":1180},[1035,2526,2527],{"class":1184}," const { messages, input, handleSubmit, status, error, reload, setMessages } = useChat()\n",[1035,2529,2530,2532],{"class":1037,"line":1263},[1035,2531,1191],{"class":1180},[1035,2533,2534],{"class":1044}," const messages: UIMessage[] = []\n",[1035,2536,2537,2539],{"class":1037,"line":1269},[1035,2538,1191],{"class":1180},[1035,2540,2541],{"class":1044}," const input = ref('')\n",[1035,2543,2544],{"class":1037,"line":1275},[1035,2545,2546],{"class":1180},"+\n",[1035,2548,2549,2551],{"class":1037,"line":1283},[1035,2550,1191],{"class":1180},[1035,2552,2553],{"class":1044}," const chat = new Chat({\n",[1035,2555,2556,2558],{"class":1037,"line":1291},[1035,2557,1191],{"class":1180},[1035,2559,2560],{"class":1044},"   messages\n",[1035,2562,2563,2565],{"class":1037,"line":1297},[1035,2564,1191],{"class":1180},[1035,2566,2567],{"class":1044}," })\n",[1035,2569,2570],{"class":1037,"line":1303},[1035,2571,2546],{"class":1180},[1035,2573,2574,2576],{"class":1037,"line":1309},[1035,2575,1191],{"class":1180},[1035,2577,2578],{"class":1044}," function handleSubmit() {\n",[1035,2580,2581,2583],{"class":1037,"line":1315},[1035,2582,1191],{"class":1180},[1035,2584,2585],{"class":1044},"   chat.sendMessage({ text: input.value })\n",[1035,2587,2588,2590],{"class":1037,"line":1321},[1035,2589,1191],{"class":1180},[1035,2591,2592],{"class":1044},"   input.value = ''\n",[1035,2594,2595,2597],{"class":1037,"line":1327},[1035,2596,1191],{"class":1180},[1035,2598,1480],{"class":1044},[1035,2600,2601],{"class":1037,"line":1333},[1035,2602,2603],{"class":1168},"\u003C\u002Fscript>\n",[1003,2605,2606],{"start":1177},[1006,2607,2608,2609,2612,2613,1019],{},"Messages now use ",[975,2610,2611],{},"parts"," instead of ",[975,2614,371],{},[1025,2616,2618],{"className":1159,"code":2617,"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,2619,2620,2625,2632,2639,2644,2649,2656,2663,2670,2676,2680,2685,2689,2696,2703],{"__ignoreMap":1031},[1035,2621,2622],{"class":1037,"line":1038},[1035,2623,2624],{"class":1168},"\u002F\u002F When manually creating messages\n",[1035,2626,2627,2629],{"class":1037,"line":1051},[1035,2628,1181],{"class":1180},[1035,2630,2631],{"class":1184}," setMessages([{\n",[1035,2633,2634,2636],{"class":1037,"line":1177},[1035,2635,1191],{"class":1180},[1035,2637,2638],{"class":1044}," messages.push({\n",[1035,2640,2641],{"class":1037,"line":1188},[1035,2642,2643],{"class":1168},"  id: '1',\n",[1035,2645,2646],{"class":1037,"line":1197},[1035,2647,2648],{"class":1168},"  role: 'user',\n",[1035,2650,2651,2653],{"class":1037,"line":1203},[1035,2652,1181],{"class":1180},[1035,2654,2655],{"class":1184}," content: 'Hello world'\n",[1035,2657,2658,2660],{"class":1037,"line":1263},[1035,2659,1191],{"class":1180},[1035,2661,2662],{"class":1044}," parts: [{ type: 'text', text: 'Hello world' }]\n",[1035,2664,2665,2667],{"class":1037,"line":1269},[1035,2666,1181],{"class":1180},[1035,2668,2669],{"class":1184}," }])\n",[1035,2671,2672,2674],{"class":1037,"line":1275},[1035,2673,1191],{"class":1180},[1035,2675,2567],{"class":1044},[1035,2677,2678],{"class":1037,"line":1283},[1035,2679,1255],{"emptyLinePlaceholder":21},[1035,2681,2682],{"class":1037,"line":1291},[1035,2683,2684],{"class":1168},"\u002F\u002F In templates\n",[1035,2686,2687],{"class":1037,"line":1297},[1035,2688,1881],{"class":1168},[1035,2690,2691,2693],{"class":1037,"line":1303},[1035,2692,1181],{"class":1180},[1035,2694,2695],{"class":1184}," \u003CUChatMessage :content=\"message.content\" \u002F>\n",[1035,2697,2698,2700],{"class":1037,"line":1309},[1035,2699,1191],{"class":1180},[1035,2701,2702],{"class":1044}," \u003CUChatMessage :parts=\"message.parts\" \u002F>\n",[1035,2704,2705],{"class":1037,"line":1315},[1035,2706,1924],{"class":1168},[1003,2708,2709],{"start":1188},[1006,2710,2711],{},"Some methods have been renamed:",[1025,2713,2715],{"className":1159,"code":2714,"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,2716,2717,2722,2729,2736,2740,2745,2752,2759,2766],{"__ignoreMap":1031},[1035,2718,2719],{"class":1037,"line":1038},[1035,2720,2721],{"class":1168},"\u002F\u002F Regenerate the last message\n",[1035,2723,2724,2726],{"class":1037,"line":1051},[1035,2725,1181],{"class":1180},[1035,2727,2728],{"class":1184}," reload()\n",[1035,2730,2731,2733],{"class":1037,"line":1177},[1035,2732,1191],{"class":1180},[1035,2734,2735],{"class":1044}," chat.regenerate()\n",[1035,2737,2738],{"class":1037,"line":1188},[1035,2739,1255],{"emptyLinePlaceholder":21},[1035,2741,2742],{"class":1037,"line":1197},[1035,2743,2744],{"class":1168},"\u002F\u002F Access chat state\n",[1035,2746,2747,2749],{"class":1037,"line":1203},[1035,2748,1181],{"class":1180},[1035,2750,2751],{"class":1184}," :messages=\"messages\"\n",[1035,2753,2754,2756],{"class":1037,"line":1263},[1035,2755,1181],{"class":1180},[1035,2757,2758],{"class":1184}," :status=\"status\"\n",[1035,2760,2761,2763],{"class":1037,"line":1269},[1035,2762,1191],{"class":1180},[1035,2764,2765],{"class":1044}," :messages=\"chat.messages\"\n",[1035,2767,2768,2770],{"class":1037,"line":1275},[1035,2769,1191],{"class":1180},[1035,2771,2772],{"class":1044}," :status=\"chat.status\"\n",[1003,2774,2775],{"start":1197},[1006,2776,2777,2778,2781,2782,1019],{},"Parts-based rendering with AI SDK helpers and ",[975,2779,2780],{},"isReasoningStreaming"," utility from ",[975,2783,2784],{},"@nuxt\u002Fui\u002Futils\u002Fai",[1025,2786,2789],{"className":2787,"code":2788,"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,2790,2791,2820,2852,2871,2880,2884,2892,2926,2955,3038,3046,3061,3075,3089,3094,3098,3105,3119,3132,3146,3160,3164,3173,3182,3191],{"__ignoreMap":1031},[1035,2792,2793,2796,2799,2803,2806,2809,2812,2815,2817],{"class":1037,"line":1038},[1035,2794,2795],{"class":1180},"\u003C",[1035,2797,2798],{"class":1184},"script",[1035,2800,2802],{"class":2801},"spNyl"," setup",[1035,2804,2805],{"class":2801}," lang",[1035,2807,2808],{"class":1180},"=",[1035,2810,2811],{"class":1180},"\"",[1035,2813,2814],{"class":1044},"ts",[1035,2816,2811],{"class":1180},[1035,2818,2819],{"class":1180},">\n",[1035,2821,2822,2826,2829,2832,2835,2838,2841,2844,2847,2849],{"class":1037,"line":1051},[1035,2823,2825],{"class":2824},"s7zQu","import",[1035,2827,2828],{"class":1180}," {",[1035,2830,2831],{"class":1168}," isReasoningUIPart",[1035,2833,2834],{"class":1180},",",[1035,2836,2837],{"class":1168}," isTextUIPart",[1035,2839,2840],{"class":1180}," }",[1035,2842,2843],{"class":2824}," from",[1035,2845,2846],{"class":1180}," '",[1035,2848,2418],{"class":1044},[1035,2850,2851],{"class":1180},"'\n",[1035,2853,2854,2856,2858,2861,2863,2865,2867,2869],{"class":1037,"line":1177},[1035,2855,2825],{"class":2824},[1035,2857,2828],{"class":1180},[1035,2859,2860],{"class":1168}," isReasoningStreaming",[1035,2862,2840],{"class":1180},[1035,2864,2843],{"class":2824},[1035,2866,2846],{"class":1180},[1035,2868,2784],{"class":1044},[1035,2870,2851],{"class":1180},[1035,2872,2873,2876,2878],{"class":1037,"line":1188},[1035,2874,2875],{"class":1180},"\u003C\u002F",[1035,2877,2798],{"class":1184},[1035,2879,2819],{"class":1180},[1035,2881,2882],{"class":1037,"line":1197},[1035,2883,1255],{"emptyLinePlaceholder":21},[1035,2885,2886,2888,2890],{"class":1037,"line":1203},[1035,2887,2795],{"class":1180},[1035,2889,1141],{"class":1184},[1035,2891,2819],{"class":1180},[1035,2893,2894,2897,2900,2903,2905,2907,2910,2912,2915,2917,2919,2922,2924],{"class":1037,"line":1263},[1035,2895,2896],{"class":1180},"  \u003C",[1035,2898,2899],{"class":1184},"UChatMessages",[1035,2901,2902],{"class":2801}," :messages",[1035,2904,2808],{"class":1180},[1035,2906,2811],{"class":1180},[1035,2908,2909],{"class":1044},"chat.messages",[1035,2911,2811],{"class":1180},[1035,2913,2914],{"class":2801}," :status",[1035,2916,2808],{"class":1180},[1035,2918,2811],{"class":1180},[1035,2920,2921],{"class":1044},"chat.status",[1035,2923,2811],{"class":1180},[1035,2925,2819],{"class":1180},[1035,2927,2928,2931,2933,2936,2938,2940,2942,2945,2948,2951,2953],{"class":1037,"line":1269},[1035,2929,2930],{"class":1180},"    \u003C",[1035,2932,1141],{"class":1184},[1035,2934,2935],{"class":1180}," #",[1035,2937,371],{"class":2801},[1035,2939,2808],{"class":1180},[1035,2941,2811],{"class":1180},[1035,2943,2944],{"class":1180},"{",[1035,2946,2947],{"class":1168}," message ",[1035,2949,2950],{"class":1180},"}",[1035,2952,2811],{"class":1180},[1035,2954,2819],{"class":1180},[1035,2956,2957,2960,2962,2965,2967,2969,2972,2974,2977,2980,2983,2986,2988,2990,2993,2996,2998,3001,3004,3006,3009,3011,3013,3016,3019,3021,3024,3026,3028,3030,3033,3036],{"class":1037,"line":1275},[1035,2958,2959],{"class":1180},"      \u003C",[1035,2961,1141],{"class":1184},[1035,2963,2964],{"class":2824}," v-for",[1035,2966,2808],{"class":1180},[1035,2968,2811],{"class":1180},[1035,2970,2971],{"class":1168},"(part",[1035,2973,2834],{"class":1180},[1035,2975,2976],{"class":1168}," index) ",[1035,2978,2979],{"class":1180},"in",[1035,2981,2982],{"class":1168}," message",[1035,2984,2985],{"class":1180},".",[1035,2987,2611],{"class":1168},[1035,2989,2811],{"class":1180},[1035,2991,2992],{"class":1180}," :",[1035,2994,2995],{"class":2801},"key",[1035,2997,2808],{"class":1180},[1035,2999,3000],{"class":1180},"\"`${",[1035,3002,3003],{"class":1168},"message",[1035,3005,2985],{"class":1180},[1035,3007,3008],{"class":1168},"id",[1035,3010,2950],{"class":1180},[1035,3012,1181],{"class":1044},[1035,3014,3015],{"class":1180},"${",[1035,3017,3018],{"class":1168},"part",[1035,3020,2985],{"class":1180},[1035,3022,3023],{"class":1168},"type",[1035,3025,2950],{"class":1180},[1035,3027,1181],{"class":1044},[1035,3029,3015],{"class":1180},[1035,3031,3032],{"class":1168},"index",[1035,3034,3035],{"class":1180},"}`\"",[1035,3037,2819],{"class":1180},[1035,3039,3040,3043],{"class":1037,"line":1283},[1035,3041,3042],{"class":1180},"        \u003C",[1035,3044,3045],{"class":1184},"UChatReasoning\n",[1035,3047,3048,3051,3053,3055,3058],{"class":1037,"line":1291},[1035,3049,3050],{"class":2801},"          v-if",[1035,3052,2808],{"class":1180},[1035,3054,2811],{"class":1180},[1035,3056,3057],{"class":1044},"isReasoningUIPart(part)",[1035,3059,3060],{"class":1180},"\"\n",[1035,3062,3063,3066,3068,3070,3073],{"class":1037,"line":1297},[1035,3064,3065],{"class":2801},"          :text",[1035,3067,2808],{"class":1180},[1035,3069,2811],{"class":1180},[1035,3071,3072],{"class":1044},"part.text",[1035,3074,3060],{"class":1180},[1035,3076,3077,3080,3082,3084,3087],{"class":1037,"line":1303},[1035,3078,3079],{"class":2801},"          :streaming",[1035,3081,2808],{"class":1180},[1035,3083,2811],{"class":1180},[1035,3085,3086],{"class":1044},"isReasoningStreaming(message, index, chat)",[1035,3088,3060],{"class":1180},[1035,3090,3091],{"class":1037,"line":1309},[1035,3092,3093],{"class":1180},"        \u002F>\n",[1035,3095,3096],{"class":1037,"line":1315},[1035,3097,1255],{"emptyLinePlaceholder":21},[1035,3099,3100,3102],{"class":1037,"line":1321},[1035,3101,3042],{"class":1180},[1035,3103,3104],{"class":1184},"MDC\n",[1035,3106,3107,3110,3112,3114,3117],{"class":1037,"line":1327},[1035,3108,3109],{"class":2801},"          v-else-if",[1035,3111,2808],{"class":1180},[1035,3113,2811],{"class":1180},[1035,3115,3116],{"class":1044},"isTextUIPart(part)",[1035,3118,3060],{"class":1180},[1035,3120,3121,3124,3126,3128,3130],{"class":1037,"line":1333},[1035,3122,3123],{"class":2801},"          :value",[1035,3125,2808],{"class":1180},[1035,3127,2811],{"class":1180},[1035,3129,3072],{"class":1044},[1035,3131,3060],{"class":1180},[1035,3133,3134,3137,3139,3141,3144],{"class":1037,"line":1338},[1035,3135,3136],{"class":2801},"          :cache-key",[1035,3138,2808],{"class":1180},[1035,3140,2811],{"class":1180},[1035,3142,3143],{"class":1044},"`${message.id}-${index}`",[1035,3145,3060],{"class":1180},[1035,3147,3148,3151,3153,3155,3158],{"class":1037,"line":1483},[1035,3149,3150],{"class":2801},"          class",[1035,3152,2808],{"class":1180},[1035,3154,2811],{"class":1180},[1035,3156,3157],{"class":1044},"*:first:mt-0 *:last:mb-0",[1035,3159,3060],{"class":1180},[1035,3161,3162],{"class":1037,"line":1616},[1035,3163,3093],{"class":1180},[1035,3165,3166,3169,3171],{"class":1037,"line":1623},[1035,3167,3168],{"class":1180},"      \u003C\u002F",[1035,3170,1141],{"class":1184},[1035,3172,2819],{"class":1180},[1035,3174,3175,3178,3180],{"class":1037,"line":1630},[1035,3176,3177],{"class":1180},"    \u003C\u002F",[1035,3179,1141],{"class":1184},[1035,3181,2819],{"class":1180},[1035,3183,3184,3187,3189],{"class":1037,"line":1635},[1035,3185,3186],{"class":1180},"  \u003C\u002F",[1035,3188,2899],{"class":1184},[1035,3190,2819],{"class":1180},[1035,3192,3193,3195,3197],{"class":1037,"line":1640},[1035,3194,2875],{"class":1180},[1035,3196,1141],{"class":1184},[1035,3198,2819],{"class":1180},[980,3200,3203],{"target":3201,"to":3202},"_blank","https:\u002F\u002Fai-sdk.dev\u002Fdocs\u002Fmigration-guides\u002Fmigration-guide-5-0",[966,3204,3205,3206,2985],{},"For more details on AI SDK v5 changes, review the ",[970,3207,3208],{},"official AI SDK v5 migration guide",[3210,3211,3213],"tip",{"target":3201,"to":3212},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fui\u002Fpull\u002F4698",[966,3214,3215,3216,3219],{},"View all changes from AI SDK v4 to v5 ",[970,3217,3218],{},"in the upgrade PR"," for a detailed migration reference.",[3221,3222,3223],"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":3225},[3226,3230],{"id":995,"depth":1051,"text":996,"children":3227},[3228,3229],{"id":1000,"depth":1177,"text":1001},{"id":1780,"depth":1177,"text":1781},{"id":1851,"depth":1051,"text":1852,"children":3231},[3232,3233,3234,3235,3236,3237,3238],{"id":1858,"depth":1177,"text":1859},{"id":1927,"depth":1177,"text":1928},{"id":1967,"depth":1177,"text":1968},{"id":2050,"depth":1177,"text":2051},{"id":2154,"depth":1177,"text":2155},{"id":2324,"depth":1177,"text":2325},{"id":2392,"depth":1177,"text":2393},"md",[3241],{"label":3242,"to":3243,"icon":39},"Migration to v3","\u002Fdocs\u002Fgetting-started\u002Fmigration\u002Fv3",{},{"title":38,"icon":39},{"title":961,"description":46},"N1Spi-_qQa_vcU1yLXYTp7sFRVvp3JmgQjXyWvVGjWg",{"data":3249,"body":3250},{},{"type":3251,"children":3252},"root",[3253],{"type":178,"tag":966,"props":3254,"children":3255},{},[3256],{"type":3257,"value":46},"text",1773707870605]