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