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