[{"data":1,"prerenderedAt":3343},["ShallowReactive",2],{"navigation":3,"-docs-getting-started-migration-v4":958,"-docs-getting-started-migration-v4-description":3333},[4],{"title":5,"path":6,"stem":7,"children":8,"page":36},"Docs","\u002Fdocs","docs",[9,163,816,857],{"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,791,796,801,806,811],{"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.","New",{"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},"\u002Fdocs\u002Fcomponents\u002Ftheme","docs\u002F2.components\u002Ftheme","A headless component to theme child components.",{"title":792,"path":793,"stem":794,"framework":16,"category":172,"description":795},"Timeline","\u002Fdocs\u002Fcomponents\u002Ftimeline","docs\u002F2.components\u002Ftimeline","A component that displays a sequence of events with dates, titles, icons or avatars.",{"title":797,"path":798,"stem":799,"framework":16,"category":397,"description":800},"Toast","\u002Fdocs\u002Fcomponents\u002Ftoast","docs\u002F2.components\u002Ftoast","A succinct message to provide information or feedback to the user.",{"title":802,"path":803,"stem":804,"framework":16,"category":397,"description":805},"Tooltip","\u002Fdocs\u002Fcomponents\u002Ftooltip","docs\u002F2.components\u002Ftooltip","A popup that reveals information when hovering over an element.",{"title":807,"path":808,"stem":809,"framework":16,"category":172,"description":810},"Tree","\u002Fdocs\u002Fcomponents\u002Ftree","docs\u002F2.components\u002Ftree","A tree view component to display and interact with hierarchical data structures.",{"title":812,"path":813,"stem":814,"framework":16,"category":172,"description":815},"User","\u002Fdocs\u002Fcomponents\u002Fuser","docs\u002F2.components\u002Fuser","Display user information with name, description and avatar.",{"title":817,"framework":16,"category":16,"description":16,"icon":818,"path":819,"stem":820,"children":821,"page":36},"Composables","i-lucide-square-function","\u002Fdocs\u002Fcomposables","docs\u002F3.composables",[822,827,832,837,842,847,852],{"title":823,"path":824,"stem":825,"framework":16,"category":16,"description":826},"defineLocale","\u002Fdocs\u002Fcomposables\u002Fdefine-locale","docs\u002F3.composables\u002Fdefine-locale","A utility to create a custom locale for your app.",{"title":828,"path":829,"stem":830,"framework":16,"category":16,"description":831},"defineShortcuts","\u002Fdocs\u002Fcomposables\u002Fdefine-shortcuts","docs\u002F3.composables\u002Fdefine-shortcuts","A composable to define keyboard shortcuts in your app.",{"title":833,"path":834,"stem":835,"framework":16,"category":16,"description":836},"extendLocale","\u002Fdocs\u002Fcomposables\u002Fextend-locale","docs\u002F3.composables\u002Fextend-locale","A utility to extend an existing locale with custom translations.",{"title":838,"path":839,"stem":840,"framework":16,"category":16,"description":841},"extractShortcuts","\u002Fdocs\u002Fcomposables\u002Fextract-shortcuts","docs\u002F3.composables\u002Fextract-shortcuts","A utility to extract keyboard shortcuts from menu items.",{"title":843,"path":844,"stem":845,"framework":16,"category":16,"description":846},"useOverlay","\u002Fdocs\u002Fcomposables\u002Fuse-overlay","docs\u002F3.composables\u002Fuse-overlay","A composable to programmatically control overlays.",{"title":848,"path":849,"stem":850,"framework":16,"category":16,"description":851,"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":853,"path":854,"stem":855,"framework":16,"category":16,"description":856},"useToast","\u002Fdocs\u002Fcomposables\u002Fuse-toast","docs\u002F3.composables\u002Fuse-toast","A composable to display toast notifications in your app.",{"title":858,"path":859,"stem":860,"children":861,"framework":28,"category":16,"description":16,"icon":957},"Typography","\u002Fdocs\u002Ftypography","docs\u002F4.typography\u002F1.index",[862,864,869,874,879,884,889,893,898,902,907,912,917,922,927,931,936,940,944,948,953],{"title":15,"path":859,"stem":860,"framework":28,"category":16,"description":863},"Beautiful typography components and utilities to style your content with Nuxt UI.",{"title":865,"path":866,"stem":867,"framework":28,"category":16,"description":868},"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":870,"path":871,"stem":872,"framework":28,"category":16,"description":873},"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":875,"path":876,"stem":877,"framework":28,"category":16,"description":878},"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":880,"path":881,"stem":882,"framework":28,"category":16,"description":883},"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":885,"stem":886,"framework":28,"category":887,"description":888},"\u002Fdocs\u002Ftypography\u002Faccordion","docs\u002F4.typography\u002Faccordion","components","Create expandable content sections for better information organization.",{"title":203,"path":890,"stem":891,"framework":28,"category":887,"description":892},"\u002Fdocs\u002Ftypography\u002Fbadge","docs\u002F4.typography\u002Fbadge","Display version numbers, status labels, and tags within your content.",{"title":894,"path":895,"stem":896,"framework":28,"category":887,"description":897},"Callout","\u002Fdocs\u002Ftypography\u002Fcallout","docs\u002F4.typography\u002Fcallout","Highlight important information with eye-catching colored boxes and icons.",{"title":239,"path":899,"stem":900,"framework":28,"category":887,"description":901},"\u002Fdocs\u002Ftypography\u002Fcard","docs\u002F4.typography\u002Fcard","Create highlighted content blocks with optional links and navigation.",{"title":903,"path":904,"stem":905,"framework":28,"category":887,"description":906},"CardGroup","\u002Fdocs\u002Ftypography\u002Fcard-group","docs\u002F4.typography\u002Fcard-group","Organize multiple cards in responsive grid layouts for better content presentation.",{"title":908,"path":909,"stem":910,"framework":28,"category":887,"description":911},"CodeCollapse","\u002Fdocs\u002Ftypography\u002Fcode-collapse","docs\u002F4.typography\u002Fcode-collapse","Make long code blocks collapsible to save space and improve readability.",{"title":913,"path":914,"stem":915,"framework":28,"category":887,"description":916},"CodeGroup","\u002Fdocs\u002Ftypography\u002Fcode-group","docs\u002F4.typography\u002Fcode-group","Group multiple code examples in tabbed interfaces for easy comparison.",{"title":918,"path":919,"stem":920,"framework":28,"category":887,"description":921},"CodePreview","\u002Fdocs\u002Ftypography\u002Fcode-preview","docs\u002F4.typography\u002Fcode-preview","Display code examples with a preview and their source for clearer documentation.",{"title":923,"path":924,"stem":925,"framework":28,"category":887,"description":926},"CodeTree","\u002Fdocs\u002Ftypography\u002Fcode-tree","docs\u002F4.typography\u002Fcode-tree","Visualize file and folder structures with syntax-highlighted code.",{"title":322,"path":928,"stem":929,"framework":28,"category":887,"description":930},"\u002Fdocs\u002Ftypography\u002Fcollapsible","docs\u002F4.typography\u002Fcollapsible","Toggle content visibility with smooth expand and collapse animations.",{"title":932,"path":933,"stem":934,"framework":28,"category":887,"description":935},"Field","\u002Fdocs\u002Ftypography\u002Ffield","docs\u002F4.typography\u002Ffield","Document API parameters, props, and configuration options clearly.",{"title":502,"path":937,"stem":938,"framework":28,"category":887,"description":939},"\u002Fdocs\u002Ftypography\u002Ffield-group","docs\u002F4.typography\u002Ffield-group","Group related fields together for comprehensive API documentation.",{"title":537,"path":941,"stem":942,"framework":28,"category":887,"description":943},"\u002Fdocs\u002Ftypography\u002Ficon","docs\u002F4.typography\u002Ficon","Display icons from popular icon libraries to enhance your content.",{"title":572,"path":945,"stem":946,"framework":28,"category":887,"description":947},"\u002Fdocs\u002Ftypography\u002Fkbd","docs\u002F4.typography\u002Fkbd","Display keyboard shortcuts and key combinations with proper styling.",{"title":949,"path":950,"stem":951,"framework":28,"category":887,"description":952},"Steps","\u002Fdocs\u002Ftypography\u002Fsteps","docs\u002F4.typography\u002Fsteps","Transform headings into numbered step-by-step guides and tutorials.",{"title":778,"path":954,"stem":955,"framework":28,"category":887,"description":956},"\u002Fdocs\u002Ftypography\u002Ftabs","docs\u002F4.typography\u002Ftabs","Organize related content in interactive tabbed interfaces.","i-lucide-square-pilcrow",{"id":959,"title":960,"body":961,"category":16,"description":46,"extension":3324,"framework":16,"index":36,"links":3325,"meta":3329,"navigation":3330,"path":44,"seo":3331,"stem":45,"__hash__":3332},"docs\u002Fdocs\u002F1.getting-started\u002F3.migration\u002F1.v4.md","Migration to v4",{"type":962,"value":963,"toc":3309},"minimark",[964,978,988,991,996,1001,1019,1136,1340,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,3284,3294,3305],[965,966,967,968,972,973,977],"p",{},"Nuxt UI v4 marks a major milestone: ",[969,970,971],"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 ",[974,975,976],"code",{},"@nuxt\u002Fui"," package.",[979,980,981],"note",{},[965,982,983,984,987],{},"Nuxt UI v4 requires ",[969,985,986],{},"Nuxt 4"," due to some dependencies. Make sure to upgrade to Nuxt 4 before migrating to Nuxt UI v4.",[965,989,990],{},"This guide provides step-by-step instructions to migrate your application from v3 to v4.",[992,993,995],"h2",{"id":994},"migrate-your-project","Migrate your project",[997,998,1000],"h3",{"id":999},"from-nuxt-ui-pro","From Nuxt UI Pro",[1002,1003,1004],"ol",{},[1005,1006,1007,1008,1011,1012,1014,1015,1018],"li",{},"Replace ",[974,1009,1010],{},"@nuxt\u002Fui-pro"," with ",[974,1013,976],{}," in your ",[974,1016,1017],{},"package.json",":",[1020,1021,1023,1062,1086,1112],"code-group",{"sync":1022},"pm",[1024,1025,1031],"pre",{"className":1026,"code":1027,"filename":1028,"language":1029,"meta":1030,"style":1030},"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","",[974,1032,1033,1048],{"__ignoreMap":1030},[1034,1035,1038,1041,1045],"span",{"class":1036,"line":1037},"line",1,[1034,1039,1028],{"class":1040},"sBMFI",[1034,1042,1044],{"class":1043},"sfazB"," remove",[1034,1046,1047],{"class":1043}," @nuxt\u002Fui-pro\n",[1034,1049,1051,1053,1056,1059],{"class":1036,"line":1050},2,[1034,1052,1028],{"class":1040},[1034,1054,1055],{"class":1043}," add",[1034,1057,1058],{"class":1043}," @nuxt\u002Fui",[1034,1060,1061],{"class":1043}," tailwindcss\n",[1024,1063,1066],{"className":1026,"code":1064,"filename":1065,"language":1029,"meta":1030,"style":1030},"yarn remove @nuxt\u002Fui-pro\nyarn add @nuxt\u002Fui tailwindcss\n","yarn",[974,1067,1068,1076],{"__ignoreMap":1030},[1034,1069,1070,1072,1074],{"class":1036,"line":1037},[1034,1071,1065],{"class":1040},[1034,1073,1044],{"class":1043},[1034,1075,1047],{"class":1043},[1034,1077,1078,1080,1082,1084],{"class":1036,"line":1050},[1034,1079,1065],{"class":1040},[1034,1081,1055],{"class":1043},[1034,1083,1058],{"class":1043},[1034,1085,1061],{"class":1043},[1024,1087,1090],{"className":1026,"code":1088,"filename":1089,"language":1029,"meta":1030,"style":1030},"npm uninstall @nuxt\u002Fui-pro\nnpm install @nuxt\u002Fui tailwindcss\n","npm",[974,1091,1092,1101],{"__ignoreMap":1030},[1034,1093,1094,1096,1099],{"class":1036,"line":1037},[1034,1095,1089],{"class":1040},[1034,1097,1098],{"class":1043}," uninstall",[1034,1100,1047],{"class":1043},[1034,1102,1103,1105,1108,1110],{"class":1036,"line":1050},[1034,1104,1089],{"class":1040},[1034,1106,1107],{"class":1043}," install",[1034,1109,1058],{"class":1043},[1034,1111,1061],{"class":1043},[1024,1113,1116],{"className":1026,"code":1114,"filename":1115,"language":1029,"meta":1030,"style":1030},"bun remove @nuxt\u002Fui-pro\nbun add @nuxt\u002Fui tailwindcss\n","bun",[974,1117,1118,1126],{"__ignoreMap":1030},[1034,1119,1120,1122,1124],{"class":1036,"line":1037},[1034,1121,1115],{"class":1040},[1034,1123,1044],{"class":1043},[1034,1125,1047],{"class":1043},[1034,1127,1128,1130,1132,1134],{"class":1036,"line":1050},[1034,1129,1115],{"class":1040},[1034,1131,1055],{"class":1043},[1034,1133,1058],{"class":1043},[1034,1135,1061],{"class":1043},[1137,1138,1139,1206],"framework-only",{},[1140,1141,1142],"template",{"v-slot:nuxt":1030},[1143,1144,1145,1156],"div",{},[1002,1146,1147],{"start":1050},[1005,1148,1007,1149,1011,1151,1014,1153,1018],{},[974,1150,1010],{},[974,1152,976],{},[974,1154,1155],{},"nuxt.config.ts",[1024,1157,1161],{"className":1158,"code":1159,"filename":1155,"language":1160,"meta":1030,"style":1030},"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",[974,1162,1163,1169,1174,1185,1194,1200],{"__ignoreMap":1030},[1034,1164,1165],{"class":1036,"line":1037},[1034,1166,1168],{"class":1167},"sTEyZ","export default defineNuxtConfig({\n",[1034,1170,1171],{"class":1036,"line":1050},[1034,1172,1173],{"class":1167},"  modules: [\n",[1034,1175,1177,1181],{"class":1036,"line":1176},3,[1034,1178,1180],{"class":1179},"sMK4o","-",[1034,1182,1184],{"class":1183},"swJcz","   '@nuxt\u002Fui-pro',\n",[1034,1186,1188,1191],{"class":1036,"line":1187},4,[1034,1189,1190],{"class":1179},"+",[1034,1192,1193],{"class":1043},"   '@nuxt\u002Fui'\n",[1034,1195,1197],{"class":1036,"line":1196},5,[1034,1198,1199],{"class":1167},"  ]\n",[1034,1201,1203],{"class":1036,"line":1202},6,[1034,1204,1205],{"class":1167},"})\n",[1140,1207,1208],{"v-slot:vue":1030},[1143,1209,1210,1221],{},[1002,1211,1212],{"start":1050},[1005,1213,1007,1214,1011,1216,1014,1218,1018],{},[974,1215,1010],{},[974,1217,976],{},[974,1219,1220],{},"vite.config.ts",[1024,1222,1224],{"className":1158,"code":1223,"filename":1220,"language":1160,"meta":1030,"style":1030},"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",[974,1225,1226,1231,1236,1243,1250,1255,1260,1266,1272,1280,1288,1294,1300,1306,1312,1318,1324,1330,1335],{"__ignoreMap":1030},[1034,1227,1228],{"class":1036,"line":1037},[1034,1229,1230],{"class":1167},"import { defineConfig } from 'vite'\n",[1034,1232,1233],{"class":1036,"line":1050},[1034,1234,1235],{"class":1167},"import vue from '@vitejs\u002Fplugin-vue'\n",[1034,1237,1238,1240],{"class":1036,"line":1176},[1034,1239,1180],{"class":1179},[1034,1241,1242],{"class":1183}," import uiPro from '@nuxt\u002Fui-pro\u002Fvite'\n",[1034,1244,1245,1247],{"class":1036,"line":1187},[1034,1246,1190],{"class":1179},[1034,1248,1249],{"class":1043}," import ui from '@nuxt\u002Fui\u002Fvite'\n",[1034,1251,1252],{"class":1036,"line":1196},[1034,1253,1254],{"emptyLinePlaceholder":21},"\n",[1034,1256,1257],{"class":1036,"line":1202},[1034,1258,1259],{"class":1167},"export default defineConfig({\n",[1034,1261,1263],{"class":1036,"line":1262},7,[1034,1264,1265],{"class":1167},"  plugins: [\n",[1034,1267,1269],{"class":1036,"line":1268},8,[1034,1270,1271],{"class":1167},"    vue(),\n",[1034,1273,1275,1277],{"class":1036,"line":1274},9,[1034,1276,1180],{"class":1179},[1034,1278,1279],{"class":1183},"   uiPro({\n",[1034,1281,1283,1285],{"class":1036,"line":1282},10,[1034,1284,1190],{"class":1179},[1034,1286,1287],{"class":1043},"   ui({\n",[1034,1289,1291],{"class":1036,"line":1290},11,[1034,1292,1293],{"class":1167},"      ui: {\n",[1034,1295,1297],{"class":1036,"line":1296},12,[1034,1298,1299],{"class":1167},"        colors: {\n",[1034,1301,1303],{"class":1036,"line":1302},13,[1034,1304,1305],{"class":1167},"          primary: 'green',\n",[1034,1307,1309],{"class":1036,"line":1308},14,[1034,1310,1311],{"class":1167},"          neutral: 'slate'\n",[1034,1313,1315],{"class":1036,"line":1314},15,[1034,1316,1317],{"class":1167},"        }\n",[1034,1319,1321],{"class":1036,"line":1320},16,[1034,1322,1323],{"class":1167},"      }\n",[1034,1325,1327],{"class":1036,"line":1326},17,[1034,1328,1329],{"class":1167},"    })\n",[1034,1331,1333],{"class":1036,"line":1332},18,[1034,1334,1199],{"class":1167},[1034,1336,1338],{"class":1036,"line":1337},19,[1034,1339,1205],{"class":1167},[1137,1341,1342,1486],{},[1140,1343,1344],{"v-slot:nuxt":1030},[1143,1345,1346,1361],{},[1002,1347,1348],{"start":1176},[1005,1349,1350,1351,1354,1355,1014,1358,1018],{},"Use the ",[974,1352,1353],{},"ui"," key instead of ",[974,1356,1357],{},"uiPro",[974,1359,1360],{},"app.config.ts",[1024,1362,1365],{"className":1158,"code":1363,"filename":1364,"language":1160,"meta":1030,"style":1030},"export default defineAppConfig({\n  ui: {\n    colors: {\n      primary: 'green',\n      neutral: 'slate'\n    },\n+   pageCard: {\n+     slots: {\n+       root: 'rounded-xl',\n+     }\n+   }\n  },\n- uiPro: {\n-   pageCard: {\n-     slots: {\n-       root: 'rounded-xl',\n-     }\n-   }\n- }\n})\n","app\u002Fapp.config.ts",[974,1366,1367,1372,1377,1382,1387,1392,1397,1404,1411,1418,1425,1432,1437,1444,1450,1456,1462,1468,1474,1481],{"__ignoreMap":1030},[1034,1368,1369],{"class":1036,"line":1037},[1034,1370,1371],{"class":1167},"export default defineAppConfig({\n",[1034,1373,1374],{"class":1036,"line":1050},[1034,1375,1376],{"class":1167},"  ui: {\n",[1034,1378,1379],{"class":1036,"line":1176},[1034,1380,1381],{"class":1167},"    colors: {\n",[1034,1383,1384],{"class":1036,"line":1187},[1034,1385,1386],{"class":1167},"      primary: 'green',\n",[1034,1388,1389],{"class":1036,"line":1196},[1034,1390,1391],{"class":1167},"      neutral: 'slate'\n",[1034,1393,1394],{"class":1036,"line":1202},[1034,1395,1396],{"class":1167},"    },\n",[1034,1398,1399,1401],{"class":1036,"line":1262},[1034,1400,1190],{"class":1179},[1034,1402,1403],{"class":1043},"   pageCard: {\n",[1034,1405,1406,1408],{"class":1036,"line":1268},[1034,1407,1190],{"class":1179},[1034,1409,1410],{"class":1043},"     slots: {\n",[1034,1412,1413,1415],{"class":1036,"line":1274},[1034,1414,1190],{"class":1179},[1034,1416,1417],{"class":1043},"       root: 'rounded-xl',\n",[1034,1419,1420,1422],{"class":1036,"line":1282},[1034,1421,1190],{"class":1179},[1034,1423,1424],{"class":1043},"     }\n",[1034,1426,1427,1429],{"class":1036,"line":1290},[1034,1428,1190],{"class":1179},[1034,1430,1431],{"class":1043},"   }\n",[1034,1433,1434],{"class":1036,"line":1296},[1034,1435,1436],{"class":1167},"  },\n",[1034,1438,1439,1441],{"class":1036,"line":1302},[1034,1440,1180],{"class":1179},[1034,1442,1443],{"class":1183}," uiPro: {\n",[1034,1445,1446,1448],{"class":1036,"line":1308},[1034,1447,1180],{"class":1179},[1034,1449,1403],{"class":1183},[1034,1451,1452,1454],{"class":1036,"line":1314},[1034,1453,1180],{"class":1179},[1034,1455,1410],{"class":1183},[1034,1457,1458,1460],{"class":1036,"line":1320},[1034,1459,1180],{"class":1179},[1034,1461,1417],{"class":1183},[1034,1463,1464,1466],{"class":1036,"line":1326},[1034,1465,1180],{"class":1179},[1034,1467,1424],{"class":1183},[1034,1469,1470,1472],{"class":1036,"line":1332},[1034,1471,1180],{"class":1179},[1034,1473,1431],{"class":1183},[1034,1475,1476,1478],{"class":1036,"line":1337},[1034,1477,1180],{"class":1179},[1034,1479,1480],{"class":1183}," }\n",[1034,1482,1484],{"class":1036,"line":1483},20,[1034,1485,1205],{"class":1167},[1140,1487,1488],{"v-slot:vue":1030},[1143,1489,1490,1500],{},[1002,1491,1492],{"start":1176},[1005,1493,1350,1494,1354,1496,1014,1498,1018],{},[974,1495,1353],{},[974,1497,1357],{},[974,1499,1220],{},[1024,1501,1503],{"className":1158,"code":1502,"filename":1220,"language":1160,"meta":1030,"style":1030},"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",[974,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":1030},[1034,1506,1507],{"class":1036,"line":1037},[1034,1508,1259],{"class":1167},[1034,1510,1511],{"class":1036,"line":1050},[1034,1512,1265],{"class":1167},[1034,1514,1515],{"class":1036,"line":1176},[1034,1516,1271],{"class":1167},[1034,1518,1519],{"class":1036,"line":1187},[1034,1520,1521],{"class":1167},"    ui({\n",[1034,1523,1524],{"class":1036,"line":1196},[1034,1525,1293],{"class":1167},[1034,1527,1528],{"class":1036,"line":1202},[1034,1529,1299],{"class":1167},[1034,1531,1532],{"class":1036,"line":1262},[1034,1533,1305],{"class":1167},[1034,1535,1536],{"class":1036,"line":1268},[1034,1537,1311],{"class":1167},[1034,1539,1540],{"class":1036,"line":1274},[1034,1541,1542],{"class":1167},"        },\n",[1034,1544,1545,1547],{"class":1036,"line":1282},[1034,1546,1190],{"class":1179},[1034,1548,1549],{"class":1043},"       pageCard: {\n",[1034,1551,1552,1554],{"class":1036,"line":1290},[1034,1553,1190],{"class":1179},[1034,1555,1556],{"class":1043},"         slots: {\n",[1034,1558,1559,1561],{"class":1036,"line":1296},[1034,1560,1190],{"class":1179},[1034,1562,1563],{"class":1043},"           root: 'rounded-xl',\n",[1034,1565,1566,1568],{"class":1036,"line":1302},[1034,1567,1190],{"class":1179},[1034,1569,1570],{"class":1043},"         }\n",[1034,1572,1573,1575],{"class":1036,"line":1308},[1034,1574,1190],{"class":1179},[1034,1576,1577],{"class":1043},"       }\n",[1034,1579,1580],{"class":1036,"line":1314},[1034,1581,1582],{"class":1167},"      },\n",[1034,1584,1585,1587],{"class":1036,"line":1320},[1034,1586,1180],{"class":1179},[1034,1588,1589],{"class":1183},"     uiPro: {\n",[1034,1591,1592,1594],{"class":1036,"line":1326},[1034,1593,1180],{"class":1179},[1034,1595,1549],{"class":1183},[1034,1597,1598,1600],{"class":1036,"line":1332},[1034,1599,1180],{"class":1179},[1034,1601,1556],{"class":1183},[1034,1603,1604,1606],{"class":1036,"line":1337},[1034,1605,1180],{"class":1179},[1034,1607,1563],{"class":1183},[1034,1609,1610,1612],{"class":1036,"line":1483},[1034,1611,1180],{"class":1179},[1034,1613,1570],{"class":1183},[1034,1615,1617,1619],{"class":1036,"line":1616},21,[1034,1618,1180],{"class":1179},[1034,1620,1577],{"class":1183},[1034,1622,1624,1626],{"class":1036,"line":1623},22,[1034,1625,1180],{"class":1179},[1034,1627,1424],{"class":1183},[1034,1629,1631],{"class":1036,"line":1630},23,[1034,1632,1329],{"class":1167},[1034,1634,1636],{"class":1036,"line":1635},24,[1034,1637,1199],{"class":1167},[1034,1639,1641],{"class":1036,"line":1640},25,[1034,1642,1205],{"class":1167},[1002,1644,1645],{"start":1187},[1005,1646,1007,1647,1011,1649,1651],{},[974,1648,1010],{},[974,1650,976],{}," in your CSS:",[1137,1653,1654,1725],{},[1140,1655,1656],{"v-slot:nuxt":1030},[1143,1657,1658,1683],{},[1024,1659,1662],{"className":1158,"code":1660,"filename":1661,"language":1160,"meta":1030,"style":1030},"@import \"tailwindcss\";\n- @import \"@nuxt\u002Fui-pro\";\n+ @import \"@nuxt\u002Fui\";\n","app\u002Fassets\u002Fcss\u002Fmain.css",[974,1663,1664,1669,1676],{"__ignoreMap":1030},[1034,1665,1666],{"class":1036,"line":1037},[1034,1667,1668],{"class":1167},"@import \"tailwindcss\";\n",[1034,1670,1671,1673],{"class":1036,"line":1050},[1034,1672,1180],{"class":1179},[1034,1674,1675],{"class":1183}," @import \"@nuxt\u002Fui-pro\";\n",[1034,1677,1678,1680],{"class":1036,"line":1176},[1034,1679,1190],{"class":1179},[1034,1681,1682],{"class":1043}," @import \"@nuxt\u002Fui\";\n",[1684,1685,1686,1693],"warning",{},[965,1687,1688,1689,1692],{},"If you are upgrading to Nuxt 4 at the same time as Nuxt UI v4, make sure to update the ",[974,1690,1691],{},"@source"," directive to match the new directory structure.",[1024,1694,1696],{"className":1158,"code":1695,"filename":1661,"language":1160,"meta":1030,"style":1030},"@import \"tailwindcss\";\n@import \"@nuxt\u002Fui\";\n\n- @source \"..\u002F..\u002Fcontent\u002F**\u002F*\";\n+ @source \"..\u002F..\u002F..\u002Fcontent\u002F**\u002F*\";\n",[974,1697,1698,1702,1707,1711,1718],{"__ignoreMap":1030},[1034,1699,1700],{"class":1036,"line":1037},[1034,1701,1668],{"class":1167},[1034,1703,1704],{"class":1036,"line":1050},[1034,1705,1706],{"class":1167},"@import \"@nuxt\u002Fui\";\n",[1034,1708,1709],{"class":1036,"line":1176},[1034,1710,1254],{"emptyLinePlaceholder":21},[1034,1712,1713,1715],{"class":1036,"line":1187},[1034,1714,1180],{"class":1179},[1034,1716,1717],{"class":1183}," @source \"..\u002F..\u002Fcontent\u002F**\u002F*\";\n",[1034,1719,1720,1722],{"class":1036,"line":1196},[1034,1721,1190],{"class":1179},[1034,1723,1724],{"class":1043}," @source \"..\u002F..\u002F..\u002Fcontent\u002F**\u002F*\";\n",[1140,1726,1727],{"v-slot:vue":1030},[1143,1728,1729],{},[1024,1730,1732],{"className":1158,"code":1660,"filename":1731,"language":1160,"meta":1030,"style":1030},"src\u002Fassets\u002Fcss\u002Fmain.css",[974,1733,1734,1738,1744],{"__ignoreMap":1030},[1034,1735,1736],{"class":1036,"line":1037},[1034,1737,1668],{"class":1167},[1034,1739,1740,1742],{"class":1036,"line":1050},[1034,1741,1180],{"class":1179},[1034,1743,1675],{"class":1183},[1034,1745,1746,1748],{"class":1036,"line":1176},[1034,1747,1190],{"class":1179},[1034,1749,1682],{"class":1043},[1002,1751,1752],{"start":1196},[1005,1753,1007,1754,1011,1756,1758],{},[974,1755,1010],{},[974,1757,976],{}," in your imports:",[1024,1760,1762],{"className":1158,"code":1761,"language":1160,"meta":1030,"style":1030},"- import type { BannerProps } from '@nuxt\u002Fui-pro'\n+ import type { BannerProps } from '@nuxt\u002Fui'\n",[974,1763,1764,1771],{"__ignoreMap":1030},[1034,1765,1766,1768],{"class":1036,"line":1037},[1034,1767,1180],{"class":1179},[1034,1769,1770],{"class":1183}," import type { BannerProps } from '@nuxt\u002Fui-pro'\n",[1034,1772,1773,1775],{"class":1036,"line":1050},[1034,1774,1190],{"class":1179},[1034,1776,1777],{"class":1043}," import type { BannerProps } from '@nuxt\u002Fui'\n",[997,1779,1781],{"id":1780},"from-nuxt-ui","From Nuxt UI",[1002,1783,1784],{},[1005,1785,1786],{},"When upgrading from Nuxt UI v3, you simply need to update to v4:",[1020,1788,1789,1804,1819,1834],{"sync":1022},[1024,1790,1792],{"className":1026,"code":1791,"filename":1028,"language":1029,"meta":1030,"style":1030},"pnpm add @nuxt\u002Fui tailwindcss\n",[974,1793,1794],{"__ignoreMap":1030},[1034,1795,1796,1798,1800,1802],{"class":1036,"line":1037},[1034,1797,1028],{"class":1040},[1034,1799,1055],{"class":1043},[1034,1801,1058],{"class":1043},[1034,1803,1061],{"class":1043},[1024,1805,1807],{"className":1026,"code":1806,"filename":1065,"language":1029,"meta":1030,"style":1030},"yarn add @nuxt\u002Fui tailwindcss\n",[974,1808,1809],{"__ignoreMap":1030},[1034,1810,1811,1813,1815,1817],{"class":1036,"line":1037},[1034,1812,1065],{"class":1040},[1034,1814,1055],{"class":1043},[1034,1816,1058],{"class":1043},[1034,1818,1061],{"class":1043},[1024,1820,1822],{"className":1026,"code":1821,"filename":1089,"language":1029,"meta":1030,"style":1030},"npm install @nuxt\u002Fui tailwindcss\n",[974,1823,1824],{"__ignoreMap":1030},[1034,1825,1826,1828,1830,1832],{"class":1036,"line":1037},[1034,1827,1089],{"class":1040},[1034,1829,1107],{"class":1043},[1034,1831,1058],{"class":1043},[1034,1833,1061],{"class":1043},[1024,1835,1837],{"className":1026,"code":1836,"filename":1115,"language":1029,"meta":1030,"style":1030},"bun add @nuxt\u002Fui tailwindcss\n",[974,1838,1839],{"__ignoreMap":1030},[1034,1840,1841,1843,1845,1847],{"class":1036,"line":1037},[1034,1842,1115],{"class":1040},[1034,1844,1055],{"class":1043},[1034,1846,1058],{"class":1043},[1034,1848,1061],{"class":1043},[992,1850,1852],{"id":1851},"changes-from-v3","Changes from v3",[965,1854,1855],{},"After upgrading to Nuxt UI v4, please note the following important changes:",[997,1857,1859],{"id":1858},"renamed-buttongroup","Renamed ButtonGroup",[965,1861,1862,1863,1866,1867,1018],{},"The ",[974,1864,1865],{},"ButtonGroup"," component has been renamed to ",[1868,1869,1870],"a",{"href":503},[974,1871,502],{},[1024,1873,1875],{"className":1158,"code":1874,"language":1160,"meta":1030,"style":1030},"\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",[974,1876,1877,1882,1889,1896,1901,1906,1913,1920],{"__ignoreMap":1030},[1034,1878,1879],{"class":1036,"line":1037},[1034,1880,1881],{"class":1167},"\u003Ctemplate>\n",[1034,1883,1884,1886],{"class":1036,"line":1050},[1034,1885,1180],{"class":1179},[1034,1887,1888],{"class":1183}," \u003CUButtonGroup>\n",[1034,1890,1891,1893],{"class":1036,"line":1176},[1034,1892,1190],{"class":1179},[1034,1894,1895],{"class":1043}," \u003CUFieldGroup>\n",[1034,1897,1898],{"class":1036,"line":1187},[1034,1899,1900],{"class":1167},"    \u003CUButton label=\"Button\" \u002F>\n",[1034,1902,1903],{"class":1036,"line":1196},[1034,1904,1905],{"class":1167},"    \u003CUButton icon=\"i-lucide-chevron-down\" \u002F>\n",[1034,1907,1908,1910],{"class":1036,"line":1202},[1034,1909,1190],{"class":1179},[1034,1911,1912],{"class":1043}," \u003C\u002FUFieldGroup>\n",[1034,1914,1915,1917],{"class":1036,"line":1262},[1034,1916,1180],{"class":1179},[1034,1918,1919],{"class":1183}," \u003C\u002FUButtonGroup>\n",[1034,1921,1922],{"class":1036,"line":1268},[1034,1923,1924],{"class":1167},"\u003C\u002Ftemplate>\n",[997,1926,1928],{"id":1927},"renamed-pagemarquee","Renamed PageMarquee",[965,1930,1862,1931,1866,1934,1018],{},[974,1932,1933],{},"PageMarquee",[1868,1935,1936],{"href":594},[974,1937,593],{},[1024,1939,1941],{"className":1158,"code":1940,"language":1160,"meta":1030,"style":1030},"\u003Ctemplate>\n- \u003CUPageMarquee :items=\"items\" \u002F>\n+ \u003CUMarquee :items=\"items\" \u002F>\n\u003C\u002Ftemplate>\n",[974,1942,1943,1947,1954,1961],{"__ignoreMap":1030},[1034,1944,1945],{"class":1036,"line":1037},[1034,1946,1881],{"class":1167},[1034,1948,1949,1951],{"class":1036,"line":1050},[1034,1950,1180],{"class":1179},[1034,1952,1953],{"class":1183}," \u003CUPageMarquee :items=\"items\" \u002F>\n",[1034,1955,1956,1958],{"class":1036,"line":1176},[1034,1957,1190],{"class":1179},[1034,1959,1960],{"class":1043}," \u003CUMarquee :items=\"items\" \u002F>\n",[1034,1962,1963],{"class":1036,"line":1187},[1034,1964,1924],{"class":1167},[997,1966,1968],{"id":1967},"removed-pageaccordion","Removed PageAccordion",[965,1970,1862,1971,1974,1975,1018],{},[974,1972,1973],{},"PageAccordion"," component has been removed in favor of ",[1868,1976,1977],{"href":170},[974,1978,169],{},[1024,1980,1982],{"className":1158,"code":1981,"language":1160,"meta":1030,"style":1030},"\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",[974,1983,1984,1988,1995,2002,2007,2014,2021,2026],{"__ignoreMap":1030},[1034,1985,1986],{"class":1036,"line":1037},[1034,1987,1881],{"class":1167},[1034,1989,1990,1992],{"class":1036,"line":1050},[1034,1991,1180],{"class":1179},[1034,1993,1994],{"class":1183}," \u003CUPageAccordion\n",[1034,1996,1997,1999],{"class":1036,"line":1176},[1034,1998,1190],{"class":1179},[1034,2000,2001],{"class":1043}," \u003CUAccordion\n",[1034,2003,2004],{"class":1036,"line":1187},[1034,2005,2006],{"class":1167},"    :items=\"items\"\n",[1034,2008,2009,2011],{"class":1036,"line":1196},[1034,2010,1190],{"class":1179},[1034,2012,2013],{"class":1043},"   :unmount-on-hide=\"false\"\n",[1034,2015,2016,2018],{"class":1036,"line":1202},[1034,2017,1190],{"class":1179},[1034,2019,2020],{"class":1043},"   :ui=\"{ trigger: 'text-base', body: 'text-base text-muted' }\"\n",[1034,2022,2023],{"class":1036,"line":1262},[1034,2024,2025],{"class":1167},"  \u002F>\n",[1034,2027,2028],{"class":1036,"line":1268},[1034,2029,1924],{"class":1167},[979,2031,2032],{},[965,2033,1862,2034,2036,2037,2040,2041,2044,2045,2047],{},[974,2035,1973],{}," component was a wrapper that set ",[974,2038,2039],{},"unmount-on-hide"," to ",[974,2042,2043],{},"false"," and customized the ",[974,2046,1353],{}," prop.",[997,2049,2051],{"id":2050},"renamed-model-modifiers","Renamed model modifiers",[965,2053,1862,2054,2057,2058,2062,2063,2067,2068,2072],{},[974,2055,2056],{},"modelModifiers"," shape used by ",[1868,2059,2060],{"href":543},[974,2061,542],{},", ",[1868,2064,2065],{"href":558},[974,2066,557],{}," and ",[1868,2069,2070],{"href":784},[974,2071,783],{}," has changed in v4:",[1002,2074,2075,2089],{},[1005,2076,1862,2077,2080,2081,2084,2085,2088],{},[974,2078,2079],{},"nullify"," modifier was renamed to ",[974,2082,2083],{},"nullable"," (it converts empty\u002Fblank values to ",[974,2086,2087],{},"null",").",[1005,2090,2091,2092,2095,2096,2088],{},"A new ",[974,2093,2094],{},"optional"," modifier was added (it converts empty\u002Fblank values to ",[974,2097,2098],{},"undefined",[1024,2100,2102],{"className":1158,"code":2101,"language":1160,"meta":1030,"style":1030},"- \u003CUInput v-model.nullify=\"value\" \u002F>\n+ \u003CUInput v-model.nullable=\"value\" \u002F>\n",[974,2103,2104,2111],{"__ignoreMap":1030},[1034,2105,2106,2108],{"class":1036,"line":1037},[1034,2107,1180],{"class":1179},[1034,2109,2110],{"class":1183}," \u003CUInput v-model.nullify=\"value\" \u002F>\n",[1034,2112,2113,2115],{"class":1036,"line":1050},[1034,2114,1190],{"class":1179},[1034,2116,2117],{"class":1043}," \u003CUInput v-model.nullable=\"value\" \u002F>\n",[1024,2119,2121],{"className":1158,"code":2120,"language":1160,"meta":1030,"style":1030},"- \u003CUTextarea v-model=\"value\" :model-modifiers=\"{ nullify: true }\" \u002F>\n+ \u003CUTextarea v-model=\"value\" :model-modifiers=\"{ nullable: true }\" \u002F>\n",[974,2122,2123,2130],{"__ignoreMap":1030},[1034,2124,2125,2127],{"class":1036,"line":1037},[1034,2126,1180],{"class":1179},[1034,2128,2129],{"class":1183}," \u003CUTextarea v-model=\"value\" :model-modifiers=\"{ nullify: true }\" \u002F>\n",[1034,2131,2132,2134],{"class":1036,"line":1050},[1034,2133,1190],{"class":1179},[1034,2135,2136],{"class":1043}," \u003CUTextarea v-model=\"value\" :model-modifiers=\"{ nullable: true }\" \u002F>\n",[965,2138,2139,2140,2142,2143,2145,2146,2148,2149,2151],{},"Use ",[974,2141,2083],{}," when you want empty values as ",[974,2144,2087],{},", and ",[974,2147,2094],{}," when you prefer ",[974,2150,2098],{}," for absent values.",[997,2153,2155],{"id":2154},"changes-to-form-component","Changes to Form component",[965,2157,1862,2158,2160],{},[974,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:",[1002,2162,2163,2177,2187],{},[1005,2164,2165,2166,2169,2170,2176],{},"Schema ",[969,2167,2168],{},"transformations will only"," be applied to the ",[969,2171,2172,2175],{},[974,2173,2174],{},"@submit"," data"," and will no longer mutate the form's state. This provides better predictability and prevents unexpected state mutations.",[1005,2178,2179,2182,2183,2186],{},[969,2180,2181],{},"Nested forms must be enabled explicitly"," using the ",[974,2184,2185],{},"nested"," prop. This makes the component behavior more explicit and prevents accidental nested form creation.",[1005,2188,2189,2195,2196,2199],{},[969,2190,2191,2192],{},"Nested forms should now provide a ",[974,2193,2194],{},"name"," prop (similar to ",[974,2197,2198],{},"UFormField",") and will automatically inherit their state from their parent form.",[1024,2201,2203],{"className":1158,"code":2202,"language":1160,"meta":1030,"style":1030},"\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",[974,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":1030},[1034,2206,2207],{"class":1036,"line":1037},[1034,2208,1881],{"class":1167},[1034,2210,2211],{"class":1036,"line":1050},[1034,2212,2213],{"class":1167},"  \u003CUForm :state=\"state\" :schema=\"schema\" @submit=\"onSubmit\">\n",[1034,2215,2216],{"class":1036,"line":1176},[1034,2217,2218],{"class":1167},"    \u003CUFormField label=\"Customer\" name=\"customer\">\n",[1034,2220,2221],{"class":1036,"line":1187},[1034,2222,2223],{"class":1167},"      \u003CUInput v-model=\"state.customer\" placeholder=\"Wonka Industries\" \u002F>\n",[1034,2225,2226],{"class":1036,"line":1196},[1034,2227,2228],{"class":1167},"    \u003C\u002FUFormField>\n",[1034,2230,2231],{"class":1036,"line":1202},[1034,2232,1254],{"emptyLinePlaceholder":21},[1034,2234,2235],{"class":1036,"line":1262},[1034,2236,2237],{"class":1167},"    \u003Cdiv v-for=\"(item, index) in state.items\" :key=\"index\">\n",[1034,2239,2240],{"class":1036,"line":1268},[1034,2241,2242],{"class":1167},"      \u003CUForm\n",[1034,2244,2245,2247],{"class":1036,"line":1274},[1034,2246,1180],{"class":1179},[1034,2248,2249],{"class":1183},"       :state=\"item\"\n",[1034,2251,2252,2254],{"class":1036,"line":1282},[1034,2253,1190],{"class":1179},[1034,2255,2256],{"class":1043},"       :name=\"`items.${index}`\"\n",[1034,2258,2259],{"class":1036,"line":1290},[1034,2260,2261],{"class":1167},"        :schema=\"itemSchema\"\n",[1034,2263,2264,2266],{"class":1036,"line":1296},[1034,2265,1190],{"class":1179},[1034,2267,2268],{"class":1043},"       nested\n",[1034,2270,2271],{"class":1036,"line":1302},[1034,2272,2273],{"class":1167},"      >\n",[1034,2275,2276],{"class":1036,"line":1308},[1034,2277,2278],{"class":1167},"        \u003CUFormField :label=\"!index ? 'Description' : undefined\" name=\"description\">\n",[1034,2280,2281],{"class":1036,"line":1314},[1034,2282,2283],{"class":1167},"          \u003CUInput v-model=\"item.description\" \u002F>\n",[1034,2285,2286],{"class":1036,"line":1320},[1034,2287,2288],{"class":1167},"        \u003C\u002FUFormField>\n",[1034,2290,2291],{"class":1036,"line":1326},[1034,2292,2293],{"class":1167},"        \u003CUFormField :label=\"!index ? 'Price' : undefined\" name=\"price\">\n",[1034,2295,2296],{"class":1036,"line":1332},[1034,2297,2298],{"class":1167},"          \u003CUInput v-model=\"item.price\" type=\"number\" \u002F>\n",[1034,2300,2301],{"class":1036,"line":1337},[1034,2302,2288],{"class":1167},[1034,2304,2305],{"class":1036,"line":1483},[1034,2306,2307],{"class":1167},"      \u003C\u002FUForm>\n",[1034,2309,2310],{"class":1036,"line":1616},[1034,2311,2312],{"class":1167},"    \u003C\u002Fdiv>\n",[1034,2314,2315],{"class":1036,"line":1623},[1034,2316,2317],{"class":1167},"  \u003C\u002FUForm>\n",[1034,2319,2320],{"class":1036,"line":1630},[1034,2321,1924],{"class":1167},[997,2323,2325],{"id":2324},"removed-deprecated-utilities","Removed deprecated utilities",[965,2327,2328,2329,2332,2333,2336],{},"Some ",[969,2330,2331],{},"Nuxt Content utilities"," that were previously available in Nuxt UI Pro have been ",[969,2334,2335],{},"removed"," in v4:",[2338,2339,2340,2345],"ul",{},[1005,2341,2342],{},[974,2343,2344],{},"findPageBreadcrumb",[1005,2346,2347],{},[974,2348,2349],{},"findPageHeadline",[965,2351,2352],{},"These are now fully provided by Nuxt Content. Make sure to update your imports and usage accordingly.",[1024,2354,2356],{"className":1158,"code":2355,"language":1160,"meta":1030,"style":1030},"- 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",[974,2357,2358,2365,2372,2376,2383],{"__ignoreMap":1030},[1034,2359,2360,2362],{"class":1036,"line":1037},[1034,2361,1180],{"class":1179},[1034,2363,2364],{"class":1183}," import { findPageHeadline } from '@nuxt\u002Fui-pro\u002Futils\u002Fcontent'\n",[1034,2366,2367,2369],{"class":1036,"line":1050},[1034,2368,1190],{"class":1179},[1034,2370,2371],{"class":1043}," import { findPageHeadline } from '@nuxt\u002Fcontent\u002Futils'\n",[1034,2373,2374],{"class":1036,"line":1176},[1034,2375,1254],{"emptyLinePlaceholder":21},[1034,2377,2378,2380],{"class":1036,"line":1187},[1034,2379,1180],{"class":1179},[1034,2381,2382],{"class":1183}," import { findPageBreadcrumb } from '@nuxt\u002Fui-pro\u002Futils\u002Fcontent'\n",[1034,2384,2385,2387],{"class":1036,"line":1196},[1034,2386,1190],{"class":1179},[1034,2388,2389],{"class":1043}," import { findPageBreadcrumb } from '@nuxt\u002Fcontent\u002Futils'\n",[997,2391,2393],{"id":2392},"ai-sdk-v5-migration-optional","AI SDK v5 migration (optional)",[965,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 (",[974,2398,265],{},[974,2400,270],{},[974,2402,280],{},[974,2404,285],{},[974,2406,275],{},"). If you're not using AI features, you can skip this section.",[1002,2409,2410],{},[1005,2411,2412,2413,2067,2416,2419,2420,1018],{},"Update ",[974,2414,2415],{},"@ai-sdk\u002Fvue",[974,2417,2418],{},"ai"," dependencies in your ",[974,2421,1017],{},[1024,2423,2425],{"className":1158,"code":2424,"language":1160,"meta":1030,"style":1030},"{\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",[974,2426,2427,2432,2437,2444,2451,2458,2465,2470],{"__ignoreMap":1030},[1034,2428,2429],{"class":1036,"line":1037},[1034,2430,2431],{"class":1167},"{\n",[1034,2433,2434],{"class":1036,"line":1050},[1034,2435,2436],{"class":1167},"  \"dependencies\": {\n",[1034,2438,2439,2441],{"class":1036,"line":1176},[1034,2440,1180],{"class":1179},[1034,2442,2443],{"class":1183},"   \"@ai-sdk\u002Fvue\": \"^1.2.x\",\n",[1034,2445,2446,2448],{"class":1036,"line":1187},[1034,2447,1190],{"class":1179},[1034,2449,2450],{"class":1043},"   \"@ai-sdk\u002Fvue\": \"^2.0.x\",\n",[1034,2452,2453,2455],{"class":1036,"line":1196},[1034,2454,1180],{"class":1179},[1034,2456,2457],{"class":1183},"   \"ai\": \"^4.3.x\"\n",[1034,2459,2460,2462],{"class":1036,"line":1202},[1034,2461,1190],{"class":1179},[1034,2463,2464],{"class":1043},"   \"ai\": \"^5.0.x\"\n",[1034,2466,2467],{"class":1036,"line":1262},[1034,2468,2469],{"class":1167},"  }\n",[1034,2471,2472],{"class":1036,"line":1268},[1034,2473,2474],{"class":1167},"}\n",[1002,2476,2477],{"start":1050},[1005,2478,2479,2482,2483,2485],{},[974,2480,2481],{},"useChat"," composable has been replaced with the new ",[974,2484,259],{}," class:",[1024,2487,2489],{"className":1158,"code":2488,"language":1160,"meta":1030,"style":1030},"\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",[974,2490,2491,2496,2503,2510,2517,2521,2528,2535,2542,2547,2554,2561,2568,2572,2579,2586,2593,2599],{"__ignoreMap":1030},[1034,2492,2493],{"class":1036,"line":1037},[1034,2494,2495],{"class":1167},"\u003Cscript setup lang=\"ts\">\n",[1034,2497,2498,2500],{"class":1036,"line":1050},[1034,2499,1180],{"class":1179},[1034,2501,2502],{"class":1183}," import { useChat } from '@ai-sdk\u002Fvue'\n",[1034,2504,2505,2507],{"class":1036,"line":1176},[1034,2506,1190],{"class":1179},[1034,2508,2509],{"class":1043}," import { Chat } from '@ai-sdk\u002Fvue'\n",[1034,2511,2512,2514],{"class":1036,"line":1187},[1034,2513,1190],{"class":1179},[1034,2515,2516],{"class":1043}," import type { UIMessage } from 'ai'\n",[1034,2518,2519],{"class":1036,"line":1196},[1034,2520,1254],{"emptyLinePlaceholder":21},[1034,2522,2523,2525],{"class":1036,"line":1202},[1034,2524,1180],{"class":1179},[1034,2526,2527],{"class":1183}," const { messages, input, handleSubmit, status, error, reload, setMessages } = useChat()\n",[1034,2529,2530,2532],{"class":1036,"line":1262},[1034,2531,1190],{"class":1179},[1034,2533,2534],{"class":1043}," const messages: UIMessage[] = []\n",[1034,2536,2537,2539],{"class":1036,"line":1268},[1034,2538,1190],{"class":1179},[1034,2540,2541],{"class":1043}," const input = ref('')\n",[1034,2543,2544],{"class":1036,"line":1274},[1034,2545,2546],{"class":1179},"+\n",[1034,2548,2549,2551],{"class":1036,"line":1282},[1034,2550,1190],{"class":1179},[1034,2552,2553],{"class":1043}," const chat = new Chat({\n",[1034,2555,2556,2558],{"class":1036,"line":1290},[1034,2557,1190],{"class":1179},[1034,2559,2560],{"class":1043},"   messages\n",[1034,2562,2563,2565],{"class":1036,"line":1296},[1034,2564,1190],{"class":1179},[1034,2566,2567],{"class":1043}," })\n",[1034,2569,2570],{"class":1036,"line":1302},[1034,2571,2546],{"class":1179},[1034,2573,2574,2576],{"class":1036,"line":1308},[1034,2575,1190],{"class":1179},[1034,2577,2578],{"class":1043}," function handleSubmit() {\n",[1034,2580,2581,2583],{"class":1036,"line":1314},[1034,2582,1190],{"class":1179},[1034,2584,2585],{"class":1043},"   chat.sendMessage({ text: input.value })\n",[1034,2587,2588,2590],{"class":1036,"line":1320},[1034,2589,1190],{"class":1179},[1034,2591,2592],{"class":1043},"   input.value = ''\n",[1034,2594,2595,2597],{"class":1036,"line":1326},[1034,2596,1190],{"class":1179},[1034,2598,1480],{"class":1043},[1034,2600,2601],{"class":1036,"line":1332},[1034,2602,2603],{"class":1167},"\u003C\u002Fscript>\n",[1002,2605,2606],{"start":1176},[1005,2607,2608,2609,2612,2613,1018],{},"Messages now use ",[974,2610,2611],{},"parts"," instead of ",[974,2614,371],{},[1024,2616,2618],{"className":1158,"code":2617,"language":1160,"meta":1030,"style":1030},"\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",[974,2619,2620,2625,2632,2639,2644,2649,2656,2663,2670,2676,2680,2685,2689,2696,2703],{"__ignoreMap":1030},[1034,2621,2622],{"class":1036,"line":1037},[1034,2623,2624],{"class":1167},"\u002F\u002F When manually creating messages\n",[1034,2626,2627,2629],{"class":1036,"line":1050},[1034,2628,1180],{"class":1179},[1034,2630,2631],{"class":1183}," setMessages([{\n",[1034,2633,2634,2636],{"class":1036,"line":1176},[1034,2635,1190],{"class":1179},[1034,2637,2638],{"class":1043}," messages.push({\n",[1034,2640,2641],{"class":1036,"line":1187},[1034,2642,2643],{"class":1167},"  id: '1',\n",[1034,2645,2646],{"class":1036,"line":1196},[1034,2647,2648],{"class":1167},"  role: 'user',\n",[1034,2650,2651,2653],{"class":1036,"line":1202},[1034,2652,1180],{"class":1179},[1034,2654,2655],{"class":1183}," content: 'Hello world'\n",[1034,2657,2658,2660],{"class":1036,"line":1262},[1034,2659,1190],{"class":1179},[1034,2661,2662],{"class":1043}," parts: [{ type: 'text', text: 'Hello world' }]\n",[1034,2664,2665,2667],{"class":1036,"line":1268},[1034,2666,1180],{"class":1179},[1034,2668,2669],{"class":1183}," }])\n",[1034,2671,2672,2674],{"class":1036,"line":1274},[1034,2673,1190],{"class":1179},[1034,2675,2567],{"class":1043},[1034,2677,2678],{"class":1036,"line":1282},[1034,2679,1254],{"emptyLinePlaceholder":21},[1034,2681,2682],{"class":1036,"line":1290},[1034,2683,2684],{"class":1167},"\u002F\u002F In templates\n",[1034,2686,2687],{"class":1036,"line":1296},[1034,2688,1881],{"class":1167},[1034,2690,2691,2693],{"class":1036,"line":1302},[1034,2692,1180],{"class":1179},[1034,2694,2695],{"class":1183}," \u003CUChatMessage :content=\"message.content\" \u002F>\n",[1034,2697,2698,2700],{"class":1036,"line":1308},[1034,2699,1190],{"class":1179},[1034,2701,2702],{"class":1043}," \u003CUChatMessage :parts=\"message.parts\" \u002F>\n",[1034,2704,2705],{"class":1036,"line":1314},[1034,2706,1924],{"class":1167},[1002,2708,2709],{"start":1187},[1005,2710,2711],{},"Some methods have been renamed:",[1024,2713,2715],{"className":1158,"code":2714,"language":1160,"meta":1030,"style":1030},"\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",[974,2716,2717,2722,2729,2736,2740,2745,2752,2759,2766],{"__ignoreMap":1030},[1034,2718,2719],{"class":1036,"line":1037},[1034,2720,2721],{"class":1167},"\u002F\u002F Regenerate the last message\n",[1034,2723,2724,2726],{"class":1036,"line":1050},[1034,2725,1180],{"class":1179},[1034,2727,2728],{"class":1183}," reload()\n",[1034,2730,2731,2733],{"class":1036,"line":1176},[1034,2732,1190],{"class":1179},[1034,2734,2735],{"class":1043}," chat.regenerate()\n",[1034,2737,2738],{"class":1036,"line":1187},[1034,2739,1254],{"emptyLinePlaceholder":21},[1034,2741,2742],{"class":1036,"line":1196},[1034,2743,2744],{"class":1167},"\u002F\u002F Access chat state\n",[1034,2746,2747,2749],{"class":1036,"line":1202},[1034,2748,1180],{"class":1179},[1034,2750,2751],{"class":1183}," :messages=\"messages\"\n",[1034,2753,2754,2756],{"class":1036,"line":1262},[1034,2755,1180],{"class":1179},[1034,2757,2758],{"class":1183}," :status=\"status\"\n",[1034,2760,2761,2763],{"class":1036,"line":1268},[1034,2762,1190],{"class":1179},[1034,2764,2765],{"class":1043}," :messages=\"chat.messages\"\n",[1034,2767,2768,2770],{"class":1036,"line":1274},[1034,2769,1190],{"class":1179},[1034,2771,2772],{"class":1043}," :status=\"chat.status\"\n",[1002,2774,2775],{"start":1196},[1005,2776,2777,2778,2781,2782,1018],{},"Parts-based rendering with AI SDK helpers and ",[974,2779,2780],{},"isPartStreaming"," utility from ",[974,2783,2784],{},"@nuxt\u002Fui\u002Futils\u002Fai",[1024,2786,2789],{"className":2787,"code":2788,"language":34,"meta":1030,"style":1030},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\nimport { isReasoningUIPart, isTextUIPart } from 'ai'\nimport { isPartStreaming } 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=\"isPartStreaming(part)\"\n        \u002F>\n\n        \u003Ctemplate v-else-if=\"isTextUIPart(part)\">\n          \u003CMDC\n            v-if=\"message.role === 'assistant'\"\n            :value=\"part.text\"\n            :cache-key=\"`${message.id}-${index}`\"\n            class=\"*:first:mt-0 *:last:mb-0\"\n          \u002F>\n          \u003Cp v-else-if=\"message.role === 'user'\" class=\"whitespace-pre-wrap\">\n            {{ part.text }}\n          \u003C\u002Fp>\n        \u003C\u002Ftemplate>\n      \u003C\u002Ftemplate>\n    \u003C\u002Ftemplate>\n  \u003C\u002FUChatMessages>\n\u003C\u002Ftemplate>\n",[974,2790,2791,2820,2852,2871,2880,2884,2892,2926,2955,3038,3046,3061,3075,3089,3094,3098,3122,3130,3144,3157,3171,3185,3190,3221,3226,3235,3245,3255,3265,3275],{"__ignoreMap":1030},[1034,2792,2793,2796,2799,2803,2806,2809,2812,2815,2817],{"class":1036,"line":1037},[1034,2794,2795],{"class":1179},"\u003C",[1034,2797,2798],{"class":1183},"script",[1034,2800,2802],{"class":2801},"spNyl"," setup",[1034,2804,2805],{"class":2801}," lang",[1034,2807,2808],{"class":1179},"=",[1034,2810,2811],{"class":1179},"\"",[1034,2813,2814],{"class":1043},"ts",[1034,2816,2811],{"class":1179},[1034,2818,2819],{"class":1179},">\n",[1034,2821,2822,2826,2829,2832,2835,2838,2841,2844,2847,2849],{"class":1036,"line":1050},[1034,2823,2825],{"class":2824},"s7zQu","import",[1034,2827,2828],{"class":1179}," {",[1034,2830,2831],{"class":1167}," isReasoningUIPart",[1034,2833,2834],{"class":1179},",",[1034,2836,2837],{"class":1167}," isTextUIPart",[1034,2839,2840],{"class":1179}," }",[1034,2842,2843],{"class":2824}," from",[1034,2845,2846],{"class":1179}," '",[1034,2848,2418],{"class":1043},[1034,2850,2851],{"class":1179},"'\n",[1034,2853,2854,2856,2858,2861,2863,2865,2867,2869],{"class":1036,"line":1176},[1034,2855,2825],{"class":2824},[1034,2857,2828],{"class":1179},[1034,2859,2860],{"class":1167}," isPartStreaming",[1034,2862,2840],{"class":1179},[1034,2864,2843],{"class":2824},[1034,2866,2846],{"class":1179},[1034,2868,2784],{"class":1043},[1034,2870,2851],{"class":1179},[1034,2872,2873,2876,2878],{"class":1036,"line":1187},[1034,2874,2875],{"class":1179},"\u003C\u002F",[1034,2877,2798],{"class":1183},[1034,2879,2819],{"class":1179},[1034,2881,2882],{"class":1036,"line":1196},[1034,2883,1254],{"emptyLinePlaceholder":21},[1034,2885,2886,2888,2890],{"class":1036,"line":1202},[1034,2887,2795],{"class":1179},[1034,2889,1140],{"class":1183},[1034,2891,2819],{"class":1179},[1034,2893,2894,2897,2900,2903,2905,2907,2910,2912,2915,2917,2919,2922,2924],{"class":1036,"line":1262},[1034,2895,2896],{"class":1179},"  \u003C",[1034,2898,2899],{"class":1183},"UChatMessages",[1034,2901,2902],{"class":2801}," :messages",[1034,2904,2808],{"class":1179},[1034,2906,2811],{"class":1179},[1034,2908,2909],{"class":1043},"chat.messages",[1034,2911,2811],{"class":1179},[1034,2913,2914],{"class":2801}," :status",[1034,2916,2808],{"class":1179},[1034,2918,2811],{"class":1179},[1034,2920,2921],{"class":1043},"chat.status",[1034,2923,2811],{"class":1179},[1034,2925,2819],{"class":1179},[1034,2927,2928,2931,2933,2936,2938,2940,2942,2945,2948,2951,2953],{"class":1036,"line":1268},[1034,2929,2930],{"class":1179},"    \u003C",[1034,2932,1140],{"class":1183},[1034,2934,2935],{"class":1179}," #",[1034,2937,371],{"class":2801},[1034,2939,2808],{"class":1179},[1034,2941,2811],{"class":1179},[1034,2943,2944],{"class":1179},"{",[1034,2946,2947],{"class":1167}," message ",[1034,2949,2950],{"class":1179},"}",[1034,2952,2811],{"class":1179},[1034,2954,2819],{"class":1179},[1034,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":1036,"line":1274},[1034,2958,2959],{"class":1179},"      \u003C",[1034,2961,1140],{"class":1183},[1034,2963,2964],{"class":2824}," v-for",[1034,2966,2808],{"class":1179},[1034,2968,2811],{"class":1179},[1034,2970,2971],{"class":1167},"(part",[1034,2973,2834],{"class":1179},[1034,2975,2976],{"class":1167}," index) ",[1034,2978,2979],{"class":1179},"in",[1034,2981,2982],{"class":1167}," message",[1034,2984,2985],{"class":1179},".",[1034,2987,2611],{"class":1167},[1034,2989,2811],{"class":1179},[1034,2991,2992],{"class":1179}," :",[1034,2994,2995],{"class":2801},"key",[1034,2997,2808],{"class":1179},[1034,2999,3000],{"class":1179},"\"`${",[1034,3002,3003],{"class":1167},"message",[1034,3005,2985],{"class":1179},[1034,3007,3008],{"class":1167},"id",[1034,3010,2950],{"class":1179},[1034,3012,1180],{"class":1043},[1034,3014,3015],{"class":1179},"${",[1034,3017,3018],{"class":1167},"part",[1034,3020,2985],{"class":1179},[1034,3022,3023],{"class":1167},"type",[1034,3025,2950],{"class":1179},[1034,3027,1180],{"class":1043},[1034,3029,3015],{"class":1179},[1034,3031,3032],{"class":1167},"index",[1034,3034,3035],{"class":1179},"}`\"",[1034,3037,2819],{"class":1179},[1034,3039,3040,3043],{"class":1036,"line":1282},[1034,3041,3042],{"class":1179},"        \u003C",[1034,3044,3045],{"class":1183},"UChatReasoning\n",[1034,3047,3048,3051,3053,3055,3058],{"class":1036,"line":1290},[1034,3049,3050],{"class":2801},"          v-if",[1034,3052,2808],{"class":1179},[1034,3054,2811],{"class":1179},[1034,3056,3057],{"class":1043},"isReasoningUIPart(part)",[1034,3059,3060],{"class":1179},"\"\n",[1034,3062,3063,3066,3068,3070,3073],{"class":1036,"line":1296},[1034,3064,3065],{"class":2801},"          :text",[1034,3067,2808],{"class":1179},[1034,3069,2811],{"class":1179},[1034,3071,3072],{"class":1043},"part.text",[1034,3074,3060],{"class":1179},[1034,3076,3077,3080,3082,3084,3087],{"class":1036,"line":1302},[1034,3078,3079],{"class":2801},"          :streaming",[1034,3081,2808],{"class":1179},[1034,3083,2811],{"class":1179},[1034,3085,3086],{"class":1043},"isPartStreaming(part)",[1034,3088,3060],{"class":1179},[1034,3090,3091],{"class":1036,"line":1308},[1034,3092,3093],{"class":1179},"        \u002F>\n",[1034,3095,3096],{"class":1036,"line":1314},[1034,3097,1254],{"emptyLinePlaceholder":21},[1034,3099,3100,3102,3104,3107,3109,3111,3115,3118,3120],{"class":1036,"line":1320},[1034,3101,3042],{"class":1179},[1034,3103,1140],{"class":1183},[1034,3105,3106],{"class":2824}," v-else-if",[1034,3108,2808],{"class":1179},[1034,3110,2811],{"class":1179},[1034,3112,3114],{"class":3113},"s2Zo4","isTextUIPart",[1034,3116,3117],{"class":1167},"(part)",[1034,3119,2811],{"class":1179},[1034,3121,2819],{"class":1179},[1034,3123,3124,3127],{"class":1036,"line":1326},[1034,3125,3126],{"class":1179},"          \u003C",[1034,3128,3129],{"class":1183},"MDC\n",[1034,3131,3132,3135,3137,3139,3142],{"class":1036,"line":1332},[1034,3133,3134],{"class":2801},"            v-if",[1034,3136,2808],{"class":1179},[1034,3138,2811],{"class":1179},[1034,3140,3141],{"class":1043},"message.role === 'assistant'",[1034,3143,3060],{"class":1179},[1034,3145,3146,3149,3151,3153,3155],{"class":1036,"line":1337},[1034,3147,3148],{"class":2801},"            :value",[1034,3150,2808],{"class":1179},[1034,3152,2811],{"class":1179},[1034,3154,3072],{"class":1043},[1034,3156,3060],{"class":1179},[1034,3158,3159,3162,3164,3166,3169],{"class":1036,"line":1483},[1034,3160,3161],{"class":2801},"            :cache-key",[1034,3163,2808],{"class":1179},[1034,3165,2811],{"class":1179},[1034,3167,3168],{"class":1043},"`${message.id}-${index}`",[1034,3170,3060],{"class":1179},[1034,3172,3173,3176,3178,3180,3183],{"class":1036,"line":1616},[1034,3174,3175],{"class":2801},"            class",[1034,3177,2808],{"class":1179},[1034,3179,2811],{"class":1179},[1034,3181,3182],{"class":1043},"*:first:mt-0 *:last:mb-0",[1034,3184,3060],{"class":1179},[1034,3186,3187],{"class":1036,"line":1623},[1034,3188,3189],{"class":1179},"          \u002F>\n",[1034,3191,3192,3194,3196,3198,3200,3202,3205,3207,3210,3212,3214,3217,3219],{"class":1036,"line":1630},[1034,3193,3126],{"class":1179},[1034,3195,965],{"class":1183},[1034,3197,3106],{"class":2801},[1034,3199,2808],{"class":1179},[1034,3201,2811],{"class":1179},[1034,3203,3204],{"class":1043},"message.role === 'user'",[1034,3206,2811],{"class":1179},[1034,3208,3209],{"class":2801}," class",[1034,3211,2808],{"class":1179},[1034,3213,2811],{"class":1179},[1034,3215,3216],{"class":1043},"whitespace-pre-wrap",[1034,3218,2811],{"class":1179},[1034,3220,2819],{"class":1179},[1034,3222,3223],{"class":1036,"line":1635},[1034,3224,3225],{"class":1167},"            {{ part.text }}\n",[1034,3227,3228,3231,3233],{"class":1036,"line":1640},[1034,3229,3230],{"class":1179},"          \u003C\u002F",[1034,3232,965],{"class":1183},[1034,3234,2819],{"class":1179},[1034,3236,3238,3241,3243],{"class":1036,"line":3237},26,[1034,3239,3240],{"class":1179},"        \u003C\u002F",[1034,3242,1140],{"class":1183},[1034,3244,2819],{"class":1179},[1034,3246,3248,3251,3253],{"class":1036,"line":3247},27,[1034,3249,3250],{"class":1179},"      \u003C\u002F",[1034,3252,1140],{"class":1183},[1034,3254,2819],{"class":1179},[1034,3256,3258,3261,3263],{"class":1036,"line":3257},28,[1034,3259,3260],{"class":1179},"    \u003C\u002F",[1034,3262,1140],{"class":1183},[1034,3264,2819],{"class":1179},[1034,3266,3268,3271,3273],{"class":1036,"line":3267},29,[1034,3269,3270],{"class":1179},"  \u003C\u002F",[1034,3272,2899],{"class":1183},[1034,3274,2819],{"class":1179},[1034,3276,3278,3280,3282],{"class":1036,"line":3277},30,[1034,3279,2875],{"class":1179},[1034,3281,1140],{"class":1183},[1034,3283,2819],{"class":1179},[979,3285,3288],{"target":3286,"to":3287},"_blank","https:\u002F\u002Fai-sdk.dev\u002Fdocs\u002Fmigration-guides\u002Fmigration-guide-5-0",[965,3289,3290,3291,2985],{},"For more details on AI SDK v5 changes, review the ",[969,3292,3293],{},"official AI SDK v5 migration guide",[3295,3296,3298],"tip",{"target":3286,"to":3297},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fui\u002Fpull\u002F4698",[965,3299,3300,3301,3304],{},"View all changes from AI SDK v4 to v5 ",[969,3302,3303],{},"in the upgrade PR"," for a detailed migration reference.",[3306,3307,3308],"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}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}",{"title":1030,"searchDepth":1050,"depth":1050,"links":3310},[3311,3315],{"id":994,"depth":1050,"text":995,"children":3312},[3313,3314],{"id":999,"depth":1176,"text":1000},{"id":1780,"depth":1176,"text":1781},{"id":1851,"depth":1050,"text":1852,"children":3316},[3317,3318,3319,3320,3321,3322,3323],{"id":1858,"depth":1176,"text":1859},{"id":1927,"depth":1176,"text":1928},{"id":1967,"depth":1176,"text":1968},{"id":2050,"depth":1176,"text":2051},{"id":2154,"depth":1176,"text":2155},{"id":2324,"depth":1176,"text":2325},{"id":2392,"depth":1176,"text":2393},"md",[3326],{"label":3327,"to":3328,"icon":39},"Migration to v3","\u002Fdocs\u002Fgetting-started\u002Fmigration\u002Fv3",{},{"title":38,"icon":39},{"title":960,"description":46},"B8tl-m6sTvsYGptIEQuvWkw5jwli4h2KxGWjbTrPC88",{"data":3334,"body":3335},{},{"type":3336,"children":3337},"root",[3338],{"type":178,"tag":965,"props":3339,"children":3340},{},[3341],{"type":3342,"value":46},"text",1775198842075]