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