[{"data":1,"prerenderedAt":4146},["ShallowReactive",2],{"navigation":3,"-docs-components-chat":958,"-docs-components-chat-description":4136},[4],{"title":5,"path":6,"stem":7,"children":8,"page":36},"Docs","\u002Fdocs","docs",[9,163,816,857],{"title":10,"path":11,"stem":12,"children":13,"framework":16,"category":16,"description":16,"icon":30},"Get Started","\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started\u002F1.index",[14,19,37,47,53,76,141],{"title":15,"path":11,"stem":12,"framework":16,"category":16,"description":17,"icon":18},"Introduction",null,"Nuxt UI is a comprehensive Vue UI component library (Nuxt optional), offering 125+ accessible, Tailwind CSS components for building modern web applications.","i-lucide-house",{"title":20,"framework":16,"category":16,"description":16,"shadow":21,"path":22,"stem":23,"children":24,"page":36},"Installation",true,"\u002Fdocs\u002Fgetting-started\u002Finstallation","docs\u002F1.getting-started\u002F2.installation",[25,31],{"title":20,"path":26,"stem":27,"framework":28,"category":16,"description":29,"icon":30},"\u002Fdocs\u002Fgetting-started\u002Finstallation\u002Fnuxt","docs\u002F1.getting-started\u002F2.installation\u002F1.nuxt","nuxt","Learn how to install and configure Nuxt UI in your Nuxt application.","i-lucide-square-play",{"title":20,"path":32,"stem":33,"framework":34,"category":16,"description":35,"icon":30},"\u002Fdocs\u002Fgetting-started\u002Finstallation\u002Fvue","docs\u002F1.getting-started\u002F2.installation\u002F2.vue","vue","Learn how to install and configure Nuxt UI in your Vue application, compatible with both plain Vite and Inertia.",false,{"title":38,"framework":16,"category":16,"description":16,"icon":39,"shadow":21,"path":40,"stem":41,"children":42,"page":36},"Migration","i-lucide-arrow-right-left","\u002Fdocs\u002Fgetting-started\u002Fmigration","docs\u002F1.getting-started\u002F3.migration",[43],{"title":38,"path":44,"stem":45,"framework":16,"category":16,"description":46,"icon":39},"\u002Fdocs\u002Fgetting-started\u002Fmigration\u002Fv4","docs\u002F1.getting-started\u002F3.migration\u002F1.v4","A comprehensive guide to migrate your application from Nuxt UI v3 to Nuxt UI v4.",{"title":48,"path":49,"stem":50,"framework":16,"category":16,"description":51,"icon":52},"Contribution","\u002Fdocs\u002Fgetting-started\u002Fcontribution","docs\u002F1.getting-started\u002F4.contribution","A comprehensive guide on contributing to Nuxt UI, including project structure, development workflow, and best practices.","i-lucide-handshake",{"title":54,"path":55,"stem":56,"children":57,"page":36},"Theme","\u002Fdocs\u002Fgetting-started\u002Ftheme","docs\u002F1.getting-started\u002F5.theme",[58,64,70],{"title":59,"path":60,"stem":61,"framework":16,"category":16,"description":62,"icon":63},"Design System","\u002Fdocs\u002Fgetting-started\u002Ftheme\u002Fdesign-system","docs\u002F1.getting-started\u002F5.theme\u002F1.design-system","Nuxt UI's design system uses Tailwind CSS for simple theming and easy customization.","i-lucide-palette",{"title":65,"path":66,"stem":67,"framework":16,"category":16,"description":68,"icon":69},"CSS Variables","\u002Fdocs\u002Fgetting-started\u002Ftheme\u002Fcss-variables","docs\u002F1.getting-started\u002F5.theme\u002F2.css-variables","Nuxt UI uses CSS variables as design tokens for flexible, consistent theming with built-in light and dark mode support.","i-lucide-swatch-book",{"title":71,"path":72,"stem":73,"framework":16,"category":16,"description":74,"icon":75},"Components","\u002Fdocs\u002Fgetting-started\u002Ftheme\u002Fcomponents","docs\u002F1.getting-started\u002F5.theme\u002F3.components","Learn how to customize Nuxt UI components with the Tailwind Variants API for advanced, flexible, and maintainable styling.","i-lucide-layout-grid",{"title":77,"framework":16,"category":16,"description":16,"path":78,"stem":79,"children":80,"page":36},"Integrations","\u002Fdocs\u002Fgetting-started\u002Fintegrations","docs\u002F1.getting-started\u002F6.integrations",[81,95,101,115,129,135],{"title":82,"framework":16,"category":16,"description":16,"shadow":21,"path":83,"stem":84,"children":85,"page":36},"Icons","\u002Fdocs\u002Fgetting-started\u002Fintegrations\u002Ficons","docs\u002F1.getting-started\u002F6.integrations\u002F1.icons",[86,91],{"title":82,"path":87,"stem":88,"framework":28,"category":16,"description":89,"icon":90},"\u002Fdocs\u002Fgetting-started\u002Fintegrations\u002Ficons\u002Fnuxt","docs\u002F1.getting-started\u002F6.integrations\u002F1.icons\u002F1.nuxt","Nuxt UI integrates with Nuxt Icon to access over 200,000+ icons from Iconify.","i-lucide-smile",{"title":82,"path":92,"stem":93,"framework":34,"category":16,"description":94,"icon":90},"\u002Fdocs\u002Fgetting-started\u002Fintegrations\u002Ficons\u002Fvue","docs\u002F1.getting-started\u002F6.integrations\u002F1.icons\u002F2.vue","Nuxt UI integrates with Iconify to access over 200,000+ icons.",{"title":96,"path":97,"stem":98,"framework":28,"category":16,"description":99,"icon":100},"Fonts","\u002Fdocs\u002Fgetting-started\u002Fintegrations\u002Ffonts","docs\u002F1.getting-started\u002F6.integrations\u002F2.fonts","Nuxt UI integrates with Nuxt Fonts to provide plug-and-play font optimization.","i-lucide-a-large-small",{"title":102,"framework":16,"category":16,"description":16,"shadow":21,"path":103,"stem":104,"children":105,"page":36},"Color Mode","\u002Fdocs\u002Fgetting-started\u002Fintegrations\u002Fcolor-mode","docs\u002F1.getting-started\u002F6.integrations\u002F3.color-mode",[106,111],{"title":102,"path":107,"stem":108,"framework":28,"category":16,"description":109,"icon":110},"\u002Fdocs\u002Fgetting-started\u002Fintegrations\u002Fcolor-mode\u002Fnuxt","docs\u002F1.getting-started\u002F6.integrations\u002F3.color-mode\u002F1.nuxt","Nuxt UI integrates with Nuxt Color Mode to allow for easy switching between light and dark themes.","i-lucide-sun-moon",{"title":102,"path":112,"stem":113,"framework":34,"category":16,"description":114,"icon":110},"\u002Fdocs\u002Fgetting-started\u002Fintegrations\u002Fcolor-mode\u002Fvue","docs\u002F1.getting-started\u002F6.integrations\u002F3.color-mode\u002F2.vue","Nuxt UI integrates with VueUse to allow for easy switching between light and dark themes.",{"title":116,"framework":16,"category":16,"description":16,"shadow":21,"path":117,"stem":118,"children":119,"page":36},"I18n","\u002Fdocs\u002Fgetting-started\u002Fintegrations\u002Fi18n","docs\u002F1.getting-started\u002F6.integrations\u002F4.i18n",[120,126],{"title":121,"path":122,"stem":123,"framework":28,"category":16,"description":124,"icon":125},"Internationalization (i18n)","\u002Fdocs\u002Fgetting-started\u002Fintegrations\u002Fi18n\u002Fnuxt","docs\u002F1.getting-started\u002F6.integrations\u002F4.i18n\u002F1.nuxt","Nuxt UI supports 50+ locales and multi-directional (LTR\u002FRTL) internationalization.","i-lucide-languages",{"title":121,"path":127,"stem":128,"framework":34,"category":16,"description":124,"icon":125},"\u002Fdocs\u002Fgetting-started\u002Fintegrations\u002Fi18n\u002Fvue","docs\u002F1.getting-started\u002F6.integrations\u002F4.i18n\u002F2.vue",{"title":130,"path":131,"stem":132,"framework":28,"category":16,"description":133,"icon":134},"Content","\u002Fdocs\u002Fgetting-started\u002Fintegrations\u002Fcontent","docs\u002F1.getting-started\u002F6.integrations\u002F5.content","Nuxt UI integrates with Nuxt Content to deliver beautiful typography and consistent component styling.","i-simple-icons-markdown",{"title":136,"path":137,"stem":138,"framework":34,"category":16,"description":139,"icon":140},"SSR","\u002Fdocs\u002Fgetting-started\u002Fintegrations\u002Fssr","docs\u002F1.getting-started\u002F6.integrations\u002F6.ssr","Nuxt UI has first-party support for Vue SSR. This guide will help you have it fully enabled.","i-lucide-server",{"title":142,"framework":16,"category":16,"description":16,"path":143,"stem":144,"children":145,"page":36},"Agents","\u002Fdocs\u002Fgetting-started\u002Fai","docs\u002F1.getting-started\u002F7.ai",[146,151,157],{"title":147,"path":148,"stem":149,"framework":16,"category":16,"description":150,"icon":140},"MCP Server","\u002Fdocs\u002Fgetting-started\u002Fai\u002Fmcp","docs\u002F1.getting-started\u002F7.ai\u002F1.mcp","Use Nuxt UI components in your AI assistants with Model Context Protocol support.",{"title":152,"path":153,"stem":154,"framework":16,"category":16,"description":155,"icon":156},"LLMs.txt","\u002Fdocs\u002Fgetting-started\u002Fai\u002Fllms-txt","docs\u002F1.getting-started\u002F7.ai\u002F2.llms-txt","How to get AI tools like Cursor, Windsurf, GitHub Copilot, ChatGPT, and Claude to understand Nuxt UI components, theming, and best practices.","i-lucide-bot",{"title":158,"path":159,"stem":160,"framework":16,"category":16,"description":161,"icon":162},"Skills","\u002Fdocs\u002Fgetting-started\u002Fai\u002Fskills","docs\u002F1.getting-started\u002F7.ai\u002F3.skills","Install Nuxt UI skills to give AI coding agents deep knowledge of components, theming, and best practices.","i-lucide-sparkles",{"title":71,"framework":16,"category":16,"description":16,"icon":164,"path":165,"stem":166,"children":167,"page":36},"i-lucide-square-code","\u002Fdocs\u002Fcomponents","docs\u002F2.components",[168,174,180,186,192,197,202,207,212,217,222,228,233,238,243,248,253,258,264,269,274,279,284,289,295,300,305,311,316,321,326,332,337,342,347,352,357,362,367,373,378,383,388,393,399,405,410,415,420,425,430,435,440,445,450,455,460,466,471,476,481,486,491,496,501,506,511,516,521,526,531,536,541,546,551,556,561,566,571,576,581,587,592,597,602,607,612,617,622,627,632,637,642,647,652,657,662,667,672,677,682,687,692,697,702,707,712,717,722,727,732,737,742,747,752,757,762,767,772,777,782,787,791,796,801,806,811],{"title":169,"path":170,"stem":171,"framework":16,"category":172,"description":173},"Accordion","\u002Fdocs\u002Fcomponents\u002Faccordion","docs\u002F2.components\u002Faccordion","data","A stacked set of collapsible panels.",{"title":175,"path":176,"stem":177,"framework":16,"category":178,"description":179},"Alert","\u002Fdocs\u002Fcomponents\u002Falert","docs\u002F2.components\u002Falert","element","A callout to draw user's attention.",{"title":181,"path":182,"stem":183,"framework":16,"category":184,"description":185},"App","\u002Fdocs\u002Fcomponents\u002Fapp","docs\u002F2.components\u002Fapp","layout","Wraps your app to provide global configurations and more.",{"title":187,"path":188,"stem":189,"framework":16,"category":190,"description":191},"AuthForm","\u002Fdocs\u002Fcomponents\u002Fauth-form","docs\u002F2.components\u002Fauth-form","page","A customizable Form to create login, register or password reset forms.",{"title":193,"path":194,"stem":195,"framework":16,"category":178,"description":196},"Avatar","\u002Fdocs\u002Fcomponents\u002Favatar","docs\u002F2.components\u002Favatar","An img element with fallback and Nuxt Image support.",{"title":198,"path":199,"stem":200,"framework":16,"category":178,"description":201},"AvatarGroup","\u002Fdocs\u002Fcomponents\u002Favatar-group","docs\u002F2.components\u002Favatar-group","Stack multiple avatars in a group.",{"title":203,"path":204,"stem":205,"framework":16,"category":178,"description":206},"Badge","\u002Fdocs\u002Fcomponents\u002Fbadge","docs\u002F2.components\u002Fbadge","A short text to represent a status or a category.",{"title":208,"path":209,"stem":210,"framework":16,"category":178,"description":211},"Banner","\u002Fdocs\u002Fcomponents\u002Fbanner","docs\u002F2.components\u002Fbanner","Display a banner at the top of your website to inform users about important information.",{"title":213,"path":214,"stem":215,"framework":16,"category":190,"description":216},"BlogPost","\u002Fdocs\u002Fcomponents\u002Fblog-post","docs\u002F2.components\u002Fblog-post","A customizable article to display in a blog page.",{"title":218,"path":219,"stem":220,"framework":16,"category":190,"description":221},"BlogPosts","\u002Fdocs\u002Fcomponents\u002Fblog-posts","docs\u002F2.components\u002Fblog-posts","Display a list of blog posts in a responsive grid layout.",{"title":223,"path":224,"stem":225,"framework":16,"category":226,"description":227},"Breadcrumb","\u002Fdocs\u002Fcomponents\u002Fbreadcrumb","docs\u002F2.components\u002Fbreadcrumb","navigation","A hierarchy of links to navigate through a website.",{"title":229,"path":230,"stem":231,"framework":16,"category":178,"description":232},"Button","\u002Fdocs\u002Fcomponents\u002Fbutton","docs\u002F2.components\u002Fbutton","A button element that can act as a link or trigger an action.",{"title":234,"path":235,"stem":236,"framework":16,"category":178,"description":237},"Calendar","\u002Fdocs\u002Fcomponents\u002Fcalendar","docs\u002F2.components\u002Fcalendar","A calendar component for selecting single dates, multiple dates or date ranges.",{"title":239,"path":240,"stem":241,"framework":16,"category":178,"description":242},"Card","\u002Fdocs\u002Fcomponents\u002Fcard","docs\u002F2.components\u002Fcard","Display content in a card with a header, body and footer.",{"title":244,"path":245,"stem":246,"framework":16,"category":172,"description":247},"Carousel","\u002Fdocs\u002Fcomponents\u002Fcarousel","docs\u002F2.components\u002Fcarousel","A carousel with motion and swipe built using Embla.",{"title":249,"path":250,"stem":251,"framework":16,"category":190,"description":252},"ChangelogVersion","\u002Fdocs\u002Fcomponents\u002Fchangelog-version","docs\u002F2.components\u002Fchangelog-version","A customizable article to display in a changelog.",{"title":254,"path":255,"stem":256,"framework":16,"category":190,"description":257},"ChangelogVersions","\u002Fdocs\u002Fcomponents\u002Fchangelog-versions","docs\u002F2.components\u002Fchangelog-versions","Display a list of changelog versions in a timeline.",{"title":259,"path":260,"stem":261,"framework":16,"category":262,"description":263},"Chat","\u002Fdocs\u002Fcomponents\u002Fchat","docs\u002F2.components\u002Fchat","chat","Build AI chat interfaces with streaming, reasoning, and tool calling.",{"title":265,"path":266,"stem":267,"framework":16,"category":262,"description":268},"ChatMessage","\u002Fdocs\u002Fcomponents\u002Fchat-message","docs\u002F2.components\u002Fchat-message","Display a chat message with icon, avatar, and actions.",{"title":270,"path":271,"stem":272,"framework":16,"category":262,"description":273},"ChatMessages","\u002Fdocs\u002Fcomponents\u002Fchat-messages","docs\u002F2.components\u002Fchat-messages","Display a list of chat messages, designed to work seamlessly with Vercel AI SDK.",{"title":275,"path":276,"stem":277,"framework":16,"category":262,"description":278},"ChatPalette","\u002Fdocs\u002Fcomponents\u002Fchat-palette","docs\u002F2.components\u002Fchat-palette","A chat palette to create a chatbot interface inside an overlay.",{"title":280,"path":281,"stem":282,"framework":16,"category":262,"description":283},"ChatPrompt","\u002Fdocs\u002Fcomponents\u002Fchat-prompt","docs\u002F2.components\u002Fchat-prompt","An enhanced Textarea for submitting prompts in AI chat interfaces.",{"title":285,"path":286,"stem":287,"framework":16,"category":262,"description":288},"ChatPromptSubmit","\u002Fdocs\u002Fcomponents\u002Fchat-prompt-submit","docs\u002F2.components\u002Fchat-prompt-submit","A Button for submitting chat prompts with automatic status handling.",{"title":290,"path":291,"stem":292,"framework":16,"category":262,"description":293,"badge":294},"ChatReasoning","\u002Fdocs\u002Fcomponents\u002Fchat-reasoning","docs\u002F2.components\u002Fchat-reasoning","Display a collapsible AI reasoning or thinking process.","New",{"title":296,"path":297,"stem":298,"framework":16,"category":262,"description":299,"badge":294},"ChatShimmer","\u002Fdocs\u002Fcomponents\u002Fchat-shimmer","docs\u002F2.components\u002Fchat-shimmer","Display a text shimmer animation effect.",{"title":301,"path":302,"stem":303,"framework":16,"category":262,"description":304,"badge":294},"ChatTool","\u002Fdocs\u002Fcomponents\u002Fchat-tool","docs\u002F2.components\u002Fchat-tool","Display a collapsible AI tool invocation status.",{"title":306,"path":307,"stem":308,"framework":16,"category":309,"description":310},"Checkbox","\u002Fdocs\u002Fcomponents\u002Fcheckbox","docs\u002F2.components\u002Fcheckbox","form","An input element to toggle between checked and unchecked states.",{"title":312,"path":313,"stem":314,"framework":16,"category":309,"description":315},"CheckboxGroup","\u002Fdocs\u002Fcomponents\u002Fcheckbox-group","docs\u002F2.components\u002Fcheckbox-group","A set of checklist buttons to select multiple option from a list.",{"title":317,"path":318,"stem":319,"framework":16,"category":178,"description":320},"Chip","\u002Fdocs\u002Fcomponents\u002Fchip","docs\u002F2.components\u002Fchip","An indicator of a numeric value or a state.",{"title":322,"path":323,"stem":324,"framework":16,"category":178,"description":325},"Collapsible","\u002Fdocs\u002Fcomponents\u002Fcollapsible","docs\u002F2.components\u002Fcollapsible","A collapsible element to toggle visibility of its content.",{"title":327,"path":328,"stem":329,"framework":16,"category":330,"description":331},"ColorModeAvatar","\u002Fdocs\u002Fcomponents\u002Fcolor-mode-avatar","docs\u002F2.components\u002Fcolor-mode-avatar","color-mode","An Avatar with a different source for light and dark mode.",{"title":333,"path":334,"stem":335,"framework":16,"category":330,"description":336},"ColorModeButton","\u002Fdocs\u002Fcomponents\u002Fcolor-mode-button","docs\u002F2.components\u002Fcolor-mode-button","A Button to switch between light and dark mode.",{"title":338,"path":339,"stem":340,"framework":16,"category":330,"description":341},"ColorModeImage","\u002Fdocs\u002Fcomponents\u002Fcolor-mode-image","docs\u002F2.components\u002Fcolor-mode-image","An image element with a different source for light and dark mode.",{"title":343,"path":344,"stem":345,"framework":16,"category":330,"description":346},"ColorModeSelect","\u002Fdocs\u002Fcomponents\u002Fcolor-mode-select","docs\u002F2.components\u002Fcolor-mode-select","A Select to switch between system, dark & light mode.",{"title":348,"path":349,"stem":350,"framework":16,"category":330,"description":351},"ColorModeSwitch","\u002Fdocs\u002Fcomponents\u002Fcolor-mode-switch","docs\u002F2.components\u002Fcolor-mode-switch","A switch to toggle between light and dark mode.",{"title":353,"path":354,"stem":355,"framework":16,"category":309,"description":356},"ColorPicker","\u002Fdocs\u002Fcomponents\u002Fcolor-picker","docs\u002F2.components\u002Fcolor-picker","A component to select a color.",{"title":358,"path":359,"stem":360,"framework":16,"category":226,"description":361},"CommandPalette","\u002Fdocs\u002Fcomponents\u002Fcommand-palette","docs\u002F2.components\u002Fcommand-palette","A command palette with full-text search powered by Fuse.js for efficient fuzzy matching.",{"title":363,"path":364,"stem":365,"framework":16,"category":184,"description":366},"Container","\u002Fdocs\u002Fcomponents\u002Fcontainer","docs\u002F2.components\u002Fcontainer","A container lets you center and constrain the width of your content.",{"title":368,"path":369,"stem":370,"framework":28,"category":371,"description":372},"ContentNavigation","\u002Fdocs\u002Fcomponents\u002Fcontent-navigation","docs\u002F2.components\u002Fcontent-navigation","content","An accordion-style navigation component for organizing page links.",{"title":374,"path":375,"stem":376,"framework":28,"category":371,"description":377},"ContentSearch","\u002Fdocs\u002Fcomponents\u002Fcontent-search","docs\u002F2.components\u002Fcontent-search","A ready to use CommandPalette to add to your documentation.",{"title":379,"path":380,"stem":381,"framework":28,"category":371,"description":382},"ContentSearchButton","\u002Fdocs\u002Fcomponents\u002Fcontent-search-button","docs\u002F2.components\u002Fcontent-search-button","A pre-styled Button to open the ContentSearch modal.",{"title":384,"path":385,"stem":386,"framework":28,"category":371,"description":387},"ContentSurround","\u002Fdocs\u002Fcomponents\u002Fcontent-surround","docs\u002F2.components\u002Fcontent-surround","A pair of prev and next links to navigate between pages.",{"title":389,"path":390,"stem":391,"framework":28,"category":371,"description":392},"ContentToc","\u002Fdocs\u002Fcomponents\u002Fcontent-toc","docs\u002F2.components\u002Fcontent-toc","A sticky Table of Contents with automatic active anchor link highlighting.",{"title":394,"path":395,"stem":396,"framework":16,"category":397,"description":398},"ContextMenu","\u002Fdocs\u002Fcomponents\u002Fcontext-menu","docs\u002F2.components\u002Fcontext-menu","overlay","A menu to display actions when right-clicking on an element.",{"title":400,"path":401,"stem":402,"framework":16,"category":403,"description":404},"DashboardGroup","\u002Fdocs\u002Fcomponents\u002Fdashboard-group","docs\u002F2.components\u002Fdashboard-group","dashboard","A fixed layout component that provides context for dashboard components with sidebar state management and persistence.",{"title":406,"path":407,"stem":408,"framework":16,"category":403,"description":409},"DashboardNavbar","\u002Fdocs\u002Fcomponents\u002Fdashboard-navbar","docs\u002F2.components\u002Fdashboard-navbar","A responsive navbar to display in a dashboard.",{"title":411,"path":412,"stem":413,"framework":16,"category":403,"description":414},"DashboardPanel","\u002Fdocs\u002Fcomponents\u002Fdashboard-panel","docs\u002F2.components\u002Fdashboard-panel","A resizable panel to display in a dashboard.",{"title":416,"path":417,"stem":418,"framework":16,"category":403,"description":419},"DashboardResizeHandle","\u002Fdocs\u002Fcomponents\u002Fdashboard-resize-handle","docs\u002F2.components\u002Fdashboard-resize-handle","A handle to resize a sidebar or panel.",{"title":421,"path":422,"stem":423,"framework":16,"category":403,"description":424},"DashboardSearch","\u002Fdocs\u002Fcomponents\u002Fdashboard-search","docs\u002F2.components\u002Fdashboard-search","A ready to use CommandPalette to add to your dashboard.",{"title":426,"path":427,"stem":428,"framework":16,"category":403,"description":429},"DashboardSearchButton","\u002Fdocs\u002Fcomponents\u002Fdashboard-search-button","docs\u002F2.components\u002Fdashboard-search-button","A pre-styled Button to open the DashboardSearch modal.",{"title":431,"path":432,"stem":433,"framework":16,"category":403,"description":434},"DashboardSidebar","\u002Fdocs\u002Fcomponents\u002Fdashboard-sidebar","docs\u002F2.components\u002Fdashboard-sidebar","A resizable and collapsible sidebar to display in a dashboard.",{"title":436,"path":437,"stem":438,"framework":16,"category":403,"description":439},"DashboardSidebarCollapse","\u002Fdocs\u002Fcomponents\u002Fdashboard-sidebar-collapse","docs\u002F2.components\u002Fdashboard-sidebar-collapse","A Button to collapse the sidebar on desktop.",{"title":441,"path":442,"stem":443,"framework":16,"category":403,"description":444},"DashboardSidebarToggle","\u002Fdocs\u002Fcomponents\u002Fdashboard-sidebar-toggle","docs\u002F2.components\u002Fdashboard-sidebar-toggle","A Button to toggle the sidebar on mobile.",{"title":446,"path":447,"stem":448,"framework":16,"category":403,"description":449},"DashboardToolbar","\u002Fdocs\u002Fcomponents\u002Fdashboard-toolbar","docs\u002F2.components\u002Fdashboard-toolbar","A toolbar to display under the navbar in a dashboard.",{"title":451,"path":452,"stem":453,"framework":16,"category":397,"description":454},"Drawer","\u002Fdocs\u002Fcomponents\u002Fdrawer","docs\u002F2.components\u002Fdrawer","A drawer that smoothly slides in & out of the screen.",{"title":456,"path":457,"stem":458,"framework":16,"category":397,"description":459},"DropdownMenu","\u002Fdocs\u002Fcomponents\u002Fdropdown-menu","docs\u002F2.components\u002Fdropdown-menu","A menu to display actions when clicking on an element.",{"title":461,"path":462,"stem":463,"framework":16,"category":464,"description":465},"Editor","\u002Fdocs\u002Fcomponents\u002Feditor","docs\u002F2.components\u002Feditor","editor","A rich text editor component based on TipTap with support for markdown, HTML, and JSON content types.",{"title":467,"path":468,"stem":469,"framework":16,"category":464,"description":470},"EditorDragHandle","\u002Fdocs\u002Fcomponents\u002Feditor-drag-handle","docs\u002F2.components\u002Feditor-drag-handle","A draggable handle for reordering and selecting blocks in the editor.",{"title":472,"path":473,"stem":474,"framework":16,"category":464,"description":475},"EditorEmojiMenu","\u002Fdocs\u002Fcomponents\u002Feditor-emoji-menu","docs\u002F2.components\u002Feditor-emoji-menu","An emoji picker menu that displays emoji suggestions when typing the : character in the editor.",{"title":477,"path":478,"stem":479,"framework":16,"category":464,"description":480},"EditorMentionMenu","\u002Fdocs\u002Fcomponents\u002Feditor-mention-menu","docs\u002F2.components\u002Feditor-mention-menu","A mention menu that displays user suggestions when typing a trigger character in the editor.",{"title":482,"path":483,"stem":484,"framework":16,"category":464,"description":485},"EditorSuggestionMenu","\u002Fdocs\u002Fcomponents\u002Feditor-suggestion-menu","docs\u002F2.components\u002Feditor-suggestion-menu","A command menu that displays formatting and action suggestions when typing the \u002F character in the editor.",{"title":487,"path":488,"stem":489,"framework":16,"category":464,"description":490},"EditorToolbar","\u002Fdocs\u002Fcomponents\u002Feditor-toolbar","docs\u002F2.components\u002Feditor-toolbar","A customizable toolbar for editor actions that can be displayed as fixed, bubble, or floating menu.",{"title":492,"path":493,"stem":494,"framework":16,"category":172,"description":495},"Empty","\u002Fdocs\u002Fcomponents\u002Fempty","docs\u002F2.components\u002Fempty","A component to display an empty state.",{"title":497,"path":498,"stem":499,"framework":16,"category":184,"description":500},"Error","\u002Fdocs\u002Fcomponents\u002Ferror","docs\u002F2.components\u002Ferror","A pre-built error component with NuxtError support.",{"title":502,"path":503,"stem":504,"framework":16,"category":178,"description":505},"FieldGroup","\u002Fdocs\u002Fcomponents\u002Ffield-group","docs\u002F2.components\u002Ffield-group","Group multiple button-like elements together.",{"title":507,"path":508,"stem":509,"framework":16,"category":309,"description":510},"FileUpload","\u002Fdocs\u002Fcomponents\u002Ffile-upload","docs\u002F2.components\u002Ffile-upload","An input element to upload files.",{"title":512,"path":513,"stem":514,"framework":16,"category":184,"description":515},"Footer","\u002Fdocs\u002Fcomponents\u002Ffooter","docs\u002F2.components\u002Ffooter","A responsive footer component.",{"title":517,"path":518,"stem":519,"framework":16,"category":226,"description":520},"FooterColumns","\u002Fdocs\u002Fcomponents\u002Ffooter-columns","docs\u002F2.components\u002Ffooter-columns","A list of links as columns to display in your Footer.",{"title":522,"path":523,"stem":524,"framework":16,"category":309,"description":525},"Form","\u002Fdocs\u002Fcomponents\u002Fform","docs\u002F2.components\u002Fform","A form component with built-in validation and submission handling.",{"title":527,"path":528,"stem":529,"framework":16,"category":309,"description":530},"FormField","\u002Fdocs\u002Fcomponents\u002Fform-field","docs\u002F2.components\u002Fform-field","A wrapper for form elements that provides validation and error handling.",{"title":532,"path":533,"stem":534,"framework":16,"category":184,"description":535},"Header","\u002Fdocs\u002Fcomponents\u002Fheader","docs\u002F2.components\u002Fheader","A responsive header component.",{"title":537,"path":538,"stem":539,"framework":16,"category":178,"description":540},"Icon","\u002Fdocs\u002Fcomponents\u002Ficon","docs\u002F2.components\u002Ficon","A component to display any icon from Iconify or another component.",{"title":542,"path":543,"stem":544,"framework":16,"category":309,"description":545},"Input","\u002Fdocs\u002Fcomponents\u002Finput","docs\u002F2.components\u002Finput","An input element to enter text.",{"title":547,"path":548,"stem":549,"framework":16,"category":309,"description":550},"InputDate","\u002Fdocs\u002Fcomponents\u002Finput-date","docs\u002F2.components\u002Finput-date","An input component for date selection.",{"title":552,"path":553,"stem":554,"framework":16,"category":309,"description":555},"InputMenu","\u002Fdocs\u002Fcomponents\u002Finput-menu","docs\u002F2.components\u002Finput-menu","An autocomplete input with real-time suggestions.",{"title":557,"path":558,"stem":559,"framework":16,"category":309,"description":560},"InputNumber","\u002Fdocs\u002Fcomponents\u002Finput-number","docs\u002F2.components\u002Finput-number","An input for numerical values with a customizable range.",{"title":562,"path":563,"stem":564,"framework":16,"category":309,"description":565},"InputTags","\u002Fdocs\u002Fcomponents\u002Finput-tags","docs\u002F2.components\u002Finput-tags","An input element that displays interactive tags.",{"title":567,"path":568,"stem":569,"framework":16,"category":309,"description":570},"InputTime","\u002Fdocs\u002Fcomponents\u002Finput-time","docs\u002F2.components\u002Finput-time","An input for selecting a time.",{"title":572,"path":573,"stem":574,"framework":16,"category":178,"description":575},"Kbd","\u002Fdocs\u002Fcomponents\u002Fkbd","docs\u002F2.components\u002Fkbd","A kbd element to display a keyboard key.",{"title":577,"path":578,"stem":579,"framework":16,"category":226,"description":580},"Link","\u002Fdocs\u002Fcomponents\u002Flink","docs\u002F2.components\u002Flink","A wrapper around \u003CNuxtLink> with extra props.",{"title":582,"path":583,"stem":584,"framework":16,"category":585,"description":586},"LocaleSelect","\u002Fdocs\u002Fcomponents\u002Flocale-select","docs\u002F2.components\u002Flocale-select","i18n","A Select to switch between locales.",{"title":588,"path":589,"stem":590,"framework":16,"category":184,"description":591},"Main","\u002Fdocs\u002Fcomponents\u002Fmain","docs\u002F2.components\u002Fmain","A main element that fills the available viewport height.",{"title":593,"path":594,"stem":595,"framework":16,"category":172,"description":596},"Marquee","\u002Fdocs\u002Fcomponents\u002Fmarquee","docs\u002F2.components\u002Fmarquee","A component to create infinite scrolling content.",{"title":598,"path":599,"stem":600,"framework":16,"category":397,"description":601},"Modal","\u002Fdocs\u002Fcomponents\u002Fmodal","docs\u002F2.components\u002Fmodal","A dialog window that can be used to display a message or request user input.",{"title":603,"path":604,"stem":605,"framework":16,"category":226,"description":606},"NavigationMenu","\u002Fdocs\u002Fcomponents\u002Fnavigation-menu","docs\u002F2.components\u002Fnavigation-menu","A list of links that can be displayed horizontally or vertically.",{"title":608,"path":609,"stem":610,"framework":16,"category":190,"description":611},"Page","\u002Fdocs\u002Fcomponents\u002Fpage","docs\u002F2.components\u002Fpage","A grid layout for your pages with left and right columns.",{"title":613,"path":614,"stem":615,"framework":16,"category":190,"description":616},"PageAnchors","\u002Fdocs\u002Fcomponents\u002Fpage-anchors","docs\u002F2.components\u002Fpage-anchors","A list of anchors to be displayed in the page.",{"title":618,"path":619,"stem":620,"framework":16,"category":190,"description":621},"PageAside","\u002Fdocs\u002Fcomponents\u002Fpage-aside","docs\u002F2.components\u002Fpage-aside","A sticky aside to display your page navigation.",{"title":623,"path":624,"stem":625,"framework":16,"category":190,"description":626},"PageBody","\u002Fdocs\u002Fcomponents\u002Fpage-body","docs\u002F2.components\u002Fpage-body","The main content of your page.",{"title":628,"path":629,"stem":630,"framework":16,"category":190,"description":631},"PageCard","\u002Fdocs\u002Fcomponents\u002Fpage-card","docs\u002F2.components\u002Fpage-card","A pre-styled card component that displays a title, description and optional link.",{"title":633,"path":634,"stem":635,"framework":16,"category":190,"description":636},"PageColumns","\u002Fdocs\u002Fcomponents\u002Fpage-columns","docs\u002F2.components\u002Fpage-columns","A responsive multi-column layout system for organizing content side-by-side.",{"title":638,"path":639,"stem":640,"framework":16,"category":190,"description":641},"PageCTA","\u002Fdocs\u002Fcomponents\u002Fpage-cta","docs\u002F2.components\u002Fpage-cta","A call to action section to display in your pages.",{"title":643,"path":644,"stem":645,"framework":16,"category":190,"description":646},"PageFeature","\u002Fdocs\u002Fcomponents\u002Fpage-feature","docs\u002F2.components\u002Fpage-feature","A component to showcase key features of your application.",{"title":648,"path":649,"stem":650,"framework":16,"category":190,"description":651},"PageGrid","\u002Fdocs\u002Fcomponents\u002Fpage-grid","docs\u002F2.components\u002Fpage-grid","A responsive grid system for displaying content in a flexible layout.",{"title":653,"path":654,"stem":655,"framework":16,"category":190,"description":656},"PageHeader","\u002Fdocs\u002Fcomponents\u002Fpage-header","docs\u002F2.components\u002Fpage-header","A responsive header for your pages.",{"title":658,"path":659,"stem":660,"framework":16,"category":190,"description":661},"PageHero","\u002Fdocs\u002Fcomponents\u002Fpage-hero","docs\u002F2.components\u002Fpage-hero","A responsive hero for your pages.",{"title":663,"path":664,"stem":665,"framework":16,"category":190,"description":666},"PageLinks","\u002Fdocs\u002Fcomponents\u002Fpage-links","docs\u002F2.components\u002Fpage-links","A list of links to be displayed in the page.",{"title":668,"path":669,"stem":670,"framework":16,"category":190,"description":671},"PageList","\u002Fdocs\u002Fcomponents\u002Fpage-list","docs\u002F2.components\u002Fpage-list","A vertical list layout for displaying content in a stacked format.",{"title":673,"path":674,"stem":675,"framework":16,"category":190,"description":676},"PageLogos","\u002Fdocs\u002Fcomponents\u002Fpage-logos","docs\u002F2.components\u002Fpage-logos","A list of logos or images to display on your pages.",{"title":678,"path":679,"stem":680,"framework":16,"category":190,"description":681},"PageSection","\u002Fdocs\u002Fcomponents\u002Fpage-section","docs\u002F2.components\u002Fpage-section","A responsive section for your pages.",{"title":683,"path":684,"stem":685,"framework":16,"category":226,"description":686},"Pagination","\u002Fdocs\u002Fcomponents\u002Fpagination","docs\u002F2.components\u002Fpagination","A list of buttons or links to navigate through pages.",{"title":688,"path":689,"stem":690,"framework":16,"category":309,"description":691},"PinInput","\u002Fdocs\u002Fcomponents\u002Fpin-input","docs\u002F2.components\u002Fpin-input","An input element to enter a pin.",{"title":693,"path":694,"stem":695,"framework":16,"category":397,"description":696},"Popover","\u002Fdocs\u002Fcomponents\u002Fpopover","docs\u002F2.components\u002Fpopover","A non-modal dialog that floats around a trigger element.",{"title":698,"path":699,"stem":700,"framework":16,"category":190,"description":701},"PricingPlan","\u002Fdocs\u002Fcomponents\u002Fpricing-plan","docs\u002F2.components\u002Fpricing-plan","A customizable pricing plan to display in a pricing page.",{"title":703,"path":704,"stem":705,"framework":16,"category":190,"description":706},"PricingPlans","\u002Fdocs\u002Fcomponents\u002Fpricing-plans","docs\u002F2.components\u002Fpricing-plans","Display a list of pricing plans in a responsive grid layout.",{"title":708,"path":709,"stem":710,"framework":16,"category":190,"description":711},"PricingTable","\u002Fdocs\u002Fcomponents\u002Fpricing-table","docs\u002F2.components\u002Fpricing-table","A responsive pricing table component that displays tiered pricing plans with feature comparisons.",{"title":713,"path":714,"stem":715,"framework":16,"category":178,"description":716},"Progress","\u002Fdocs\u002Fcomponents\u002Fprogress","docs\u002F2.components\u002Fprogress","An indicator showing the progress of a task.",{"title":718,"path":719,"stem":720,"framework":16,"category":309,"description":721},"RadioGroup","\u002Fdocs\u002Fcomponents\u002Fradio-group","docs\u002F2.components\u002Fradio-group","A set of radio buttons to select a single option from a list.",{"title":723,"path":724,"stem":725,"framework":16,"category":172,"description":726},"ScrollArea","\u002Fdocs\u002Fcomponents\u002Fscroll-area","docs\u002F2.components\u002Fscroll-area","A flexible scroll container with virtualization support.",{"title":728,"path":729,"stem":730,"framework":16,"category":309,"description":731},"Select","\u002Fdocs\u002Fcomponents\u002Fselect","docs\u002F2.components\u002Fselect","A select element to choose from a list of options.",{"title":733,"path":734,"stem":735,"framework":16,"category":309,"description":736},"SelectMenu","\u002Fdocs\u002Fcomponents\u002Fselect-menu","docs\u002F2.components\u002Fselect-menu","An advanced searchable select element.",{"title":738,"path":739,"stem":740,"framework":16,"category":178,"description":741},"Separator","\u002Fdocs\u002Fcomponents\u002Fseparator","docs\u002F2.components\u002Fseparator","Separates content horizontally or vertically.",{"title":743,"path":744,"stem":745,"framework":16,"category":184,"description":746,"badge":294},"Sidebar","\u002Fdocs\u002Fcomponents\u002Fsidebar","docs\u002F2.components\u002Fsidebar","A collapsible sidebar with multiple visual variants.",{"title":748,"path":749,"stem":750,"framework":16,"category":178,"description":751},"Skeleton","\u002Fdocs\u002Fcomponents\u002Fskeleton","docs\u002F2.components\u002Fskeleton","A placeholder to show while content is loading.",{"title":753,"path":754,"stem":755,"framework":16,"category":397,"description":756},"Slideover","\u002Fdocs\u002Fcomponents\u002Fslideover","docs\u002F2.components\u002Fslideover","A dialog that slides in from any side of the screen.",{"title":758,"path":759,"stem":760,"framework":16,"category":309,"description":761},"Slider","\u002Fdocs\u002Fcomponents\u002Fslider","docs\u002F2.components\u002Fslider","An input to select a numeric value within a range.",{"title":763,"path":764,"stem":765,"framework":16,"category":226,"description":766},"Stepper","\u002Fdocs\u002Fcomponents\u002Fstepper","docs\u002F2.components\u002Fstepper","A set of steps that are used to indicate progress through a multi-step process.",{"title":768,"path":769,"stem":770,"framework":16,"category":309,"description":771},"Switch","\u002Fdocs\u002Fcomponents\u002Fswitch","docs\u002F2.components\u002Fswitch","A control that toggles between two states.",{"title":773,"path":774,"stem":775,"framework":16,"category":172,"description":776},"Table","\u002Fdocs\u002Fcomponents\u002Ftable","docs\u002F2.components\u002Ftable","A responsive table element to display data in rows and columns.",{"title":778,"path":779,"stem":780,"framework":16,"category":226,"description":781},"Tabs","\u002Fdocs\u002Fcomponents\u002Ftabs","docs\u002F2.components\u002Ftabs","A set of tab panels that are displayed one at a time.",{"title":783,"path":784,"stem":785,"framework":16,"category":309,"description":786},"Textarea","\u002Fdocs\u002Fcomponents\u002Ftextarea","docs\u002F2.components\u002Ftextarea","A textarea element to input multi-line text.",{"title":54,"path":788,"stem":789,"framework":16,"category":184,"description":790},"\u002Fdocs\u002Fcomponents\u002Ftheme","docs\u002F2.components\u002Ftheme","A headless component to theme child components.",{"title":792,"path":793,"stem":794,"framework":16,"category":172,"description":795},"Timeline","\u002Fdocs\u002Fcomponents\u002Ftimeline","docs\u002F2.components\u002Ftimeline","A component that displays a sequence of events with dates, titles, icons or avatars.",{"title":797,"path":798,"stem":799,"framework":16,"category":397,"description":800},"Toast","\u002Fdocs\u002Fcomponents\u002Ftoast","docs\u002F2.components\u002Ftoast","A succinct message to provide information or feedback to the user.",{"title":802,"path":803,"stem":804,"framework":16,"category":397,"description":805},"Tooltip","\u002Fdocs\u002Fcomponents\u002Ftooltip","docs\u002F2.components\u002Ftooltip","A popup that reveals information when hovering over an element.",{"title":807,"path":808,"stem":809,"framework":16,"category":172,"description":810},"Tree","\u002Fdocs\u002Fcomponents\u002Ftree","docs\u002F2.components\u002Ftree","A tree view component to display and interact with hierarchical data structures.",{"title":812,"path":813,"stem":814,"framework":16,"category":172,"description":815},"User","\u002Fdocs\u002Fcomponents\u002Fuser","docs\u002F2.components\u002Fuser","Display user information with name, description and avatar.",{"title":817,"framework":16,"category":16,"description":16,"icon":818,"path":819,"stem":820,"children":821,"page":36},"Composables","i-lucide-square-function","\u002Fdocs\u002Fcomposables","docs\u002F3.composables",[822,827,832,837,842,847,852],{"title":823,"path":824,"stem":825,"framework":16,"category":16,"description":826},"defineLocale","\u002Fdocs\u002Fcomposables\u002Fdefine-locale","docs\u002F3.composables\u002Fdefine-locale","A utility to create a custom locale for your app.",{"title":828,"path":829,"stem":830,"framework":16,"category":16,"description":831},"defineShortcuts","\u002Fdocs\u002Fcomposables\u002Fdefine-shortcuts","docs\u002F3.composables\u002Fdefine-shortcuts","A composable to define keyboard shortcuts in your app.",{"title":833,"path":834,"stem":835,"framework":16,"category":16,"description":836},"extendLocale","\u002Fdocs\u002Fcomposables\u002Fextend-locale","docs\u002F3.composables\u002Fextend-locale","A utility to extend an existing locale with custom translations.",{"title":838,"path":839,"stem":840,"framework":16,"category":16,"description":841},"extractShortcuts","\u002Fdocs\u002Fcomposables\u002Fextract-shortcuts","docs\u002F3.composables\u002Fextract-shortcuts","A utility to extract keyboard shortcuts from menu items.",{"title":843,"path":844,"stem":845,"framework":16,"category":16,"description":846},"useOverlay","\u002Fdocs\u002Fcomposables\u002Fuse-overlay","docs\u002F3.composables\u002Fuse-overlay","A composable to programmatically control overlays.",{"title":848,"path":849,"stem":850,"framework":16,"category":16,"description":851,"badge":294},"useScrollShadow","\u002Fdocs\u002Fcomposables\u002Fuse-scroll-shadow","docs\u002F3.composables\u002Fuse-scroll-shadow","A composable to apply scroll shadow effects on any scrollable element.",{"title":853,"path":854,"stem":855,"framework":16,"category":16,"description":856},"useToast","\u002Fdocs\u002Fcomposables\u002Fuse-toast","docs\u002F3.composables\u002Fuse-toast","A composable to display toast notifications in your app.",{"title":858,"path":859,"stem":860,"children":861,"framework":28,"category":16,"description":16,"icon":957},"Typography","\u002Fdocs\u002Ftypography","docs\u002F4.typography\u002F1.index",[862,864,869,874,879,884,889,893,898,902,907,912,917,922,927,931,936,940,944,948,953],{"title":15,"path":859,"stem":860,"framework":28,"category":16,"description":863},"Beautiful typography components and utilities to style your content with Nuxt UI.",{"title":865,"path":866,"stem":867,"framework":28,"category":16,"description":868},"Headers and text","\u002Fdocs\u002Ftypography\u002Fheaders-and-text","docs\u002F4.typography\u002F2.headers-and-text","Beautifully styled headings, paragraphs, text formatting, and links for optimal readability.",{"title":870,"path":871,"stem":872,"framework":28,"category":16,"description":873},"Lists and tables","\u002Fdocs\u002Ftypography\u002Flists-and-tables","docs\u002F4.typography\u002F3.lists-and-tables","Organize information with styled lists and responsive tables for clear, consistent readability.",{"title":875,"path":876,"stem":877,"framework":28,"category":16,"description":878},"Images and embeds","\u002Fdocs\u002Ftypography\u002Fimages-and-embeds","docs\u002F4.typography\u002F4.images-and-embeds","Responsive images, videos, and rich media embeds to enhance and illustrate your documentation.",{"title":880,"path":881,"stem":882,"framework":28,"category":16,"description":883},"Code","\u002Fdocs\u002Ftypography\u002Fcode","docs\u002F4.typography\u002F5.code","Display inline code and syntax-highlighted code blocks with copy-to-clipboard support.",{"title":169,"path":885,"stem":886,"framework":28,"category":887,"description":888},"\u002Fdocs\u002Ftypography\u002Faccordion","docs\u002F4.typography\u002Faccordion","components","Create expandable content sections for better information organization.",{"title":203,"path":890,"stem":891,"framework":28,"category":887,"description":892},"\u002Fdocs\u002Ftypography\u002Fbadge","docs\u002F4.typography\u002Fbadge","Display version numbers, status labels, and tags within your content.",{"title":894,"path":895,"stem":896,"framework":28,"category":887,"description":897},"Callout","\u002Fdocs\u002Ftypography\u002Fcallout","docs\u002F4.typography\u002Fcallout","Highlight important information with eye-catching colored boxes and icons.",{"title":239,"path":899,"stem":900,"framework":28,"category":887,"description":901},"\u002Fdocs\u002Ftypography\u002Fcard","docs\u002F4.typography\u002Fcard","Create highlighted content blocks with optional links and navigation.",{"title":903,"path":904,"stem":905,"framework":28,"category":887,"description":906},"CardGroup","\u002Fdocs\u002Ftypography\u002Fcard-group","docs\u002F4.typography\u002Fcard-group","Organize multiple cards in responsive grid layouts for better content presentation.",{"title":908,"path":909,"stem":910,"framework":28,"category":887,"description":911},"CodeCollapse","\u002Fdocs\u002Ftypography\u002Fcode-collapse","docs\u002F4.typography\u002Fcode-collapse","Make long code blocks collapsible to save space and improve readability.",{"title":913,"path":914,"stem":915,"framework":28,"category":887,"description":916},"CodeGroup","\u002Fdocs\u002Ftypography\u002Fcode-group","docs\u002F4.typography\u002Fcode-group","Group multiple code examples in tabbed interfaces for easy comparison.",{"title":918,"path":919,"stem":920,"framework":28,"category":887,"description":921},"CodePreview","\u002Fdocs\u002Ftypography\u002Fcode-preview","docs\u002F4.typography\u002Fcode-preview","Display code examples with a preview and their source for clearer documentation.",{"title":923,"path":924,"stem":925,"framework":28,"category":887,"description":926},"CodeTree","\u002Fdocs\u002Ftypography\u002Fcode-tree","docs\u002F4.typography\u002Fcode-tree","Visualize file and folder structures with syntax-highlighted code.",{"title":322,"path":928,"stem":929,"framework":28,"category":887,"description":930},"\u002Fdocs\u002Ftypography\u002Fcollapsible","docs\u002F4.typography\u002Fcollapsible","Toggle content visibility with smooth expand and collapse animations.",{"title":932,"path":933,"stem":934,"framework":28,"category":887,"description":935},"Field","\u002Fdocs\u002Ftypography\u002Ffield","docs\u002F4.typography\u002Ffield","Document API parameters, props, and configuration options clearly.",{"title":502,"path":937,"stem":938,"framework":28,"category":887,"description":939},"\u002Fdocs\u002Ftypography\u002Ffield-group","docs\u002F4.typography\u002Ffield-group","Group related fields together for comprehensive API documentation.",{"title":537,"path":941,"stem":942,"framework":28,"category":887,"description":943},"\u002Fdocs\u002Ftypography\u002Ficon","docs\u002F4.typography\u002Ficon","Display icons from popular icon libraries to enhance your content.",{"title":572,"path":945,"stem":946,"framework":28,"category":887,"description":947},"\u002Fdocs\u002Ftypography\u002Fkbd","docs\u002F4.typography\u002Fkbd","Display keyboard shortcuts and key combinations with proper styling.",{"title":949,"path":950,"stem":951,"framework":28,"category":887,"description":952},"Steps","\u002Fdocs\u002Ftypography\u002Fsteps","docs\u002F4.typography\u002Fsteps","Transform headings into numbered step-by-step guides and tutorials.",{"title":778,"path":954,"stem":955,"framework":28,"category":887,"description":956},"\u002Fdocs\u002Ftypography\u002Ftabs","docs\u002F4.typography\u002Ftabs","Organize related content in interactive tabbed interfaces.","i-lucide-square-pilcrow",{"id":959,"title":259,"body":960,"category":262,"description":263,"extension":4127,"framework":16,"index":21,"links":4128,"meta":4133,"navigation":16,"path":260,"seo":4134,"stem":261,"__hash__":4135},"docs\u002Fdocs\u002F2.components\u002Fchat.md",{"type":961,"value":962,"toc":4117},"minimark",[963,975,999,1002,1094,1097,1111,1114,1204,1208,1225,1480,1485,1514,1885,1889,1904,2609,2613,2626,2629,2671,2674,3081,3085,3095,4083,4101,4113],[964,965,966,967,974],"p",{},"Nuxt UI provides a set of components designed to build AI-powered chat interfaces. They integrate seamlessly with the ",[968,969,973],"a",{"href":970,"rel":971},"https:\u002F\u002Fai-sdk.dev\u002F",[972],"nofollow","Vercel AI SDK"," for streaming responses, reasoning, tool calling, and more.",[976,977,979],"callout",{"icon":978},"i-simple-icons-github",[964,980,981,982,990,991,998],{},"Check out the ",[968,983,986],{"href":984,"rel":985},"https:\u002F\u002Fgithub.com\u002Fnuxt-ui-templates\u002Fchat",[972],[987,988,989],"code",{},"Nuxt"," and ",[968,992,995],{"href":993,"rel":994},"https:\u002F\u002Fgithub.com\u002Fnuxt-ui-templates\u002Fchat-vue",[972],[987,996,997],{},"Vue"," AI Chat templates on GitHub for production-ready implementations.",[1000,1001,71],"h2",{"id":887},[1003,1004,1005,1018],"table",{},[1006,1007,1008],"thead",{},[1009,1010,1011,1015],"tr",{},[1012,1013,1014],"th",{},"Component",[1012,1016,1017],{},"Description",[1019,1020,1021,1031,1040,1049,1058,1067,1076,1085],"tbody",{},[1009,1022,1023,1028],{},[1024,1025,1026],"td",{},[968,1027,270],{"href":271},[1024,1029,1030],{},"Scrollable message list with auto-scroll and loading indicator.",[1009,1032,1033,1037],{},[1024,1034,1035],{},[968,1036,265],{"href":266},[1024,1038,1039],{},"Individual message bubble with avatar, actions, and slots.",[1009,1041,1042,1046],{},[1024,1043,1044],{},[968,1045,280],{"href":281},[1024,1047,1048],{},"Enhanced textarea for submitting prompts.",[1009,1050,1051,1055],{},[1024,1052,1053],{},[968,1054,285],{"href":286},[1024,1056,1057],{},"Submit button with automatic status handling.",[1009,1059,1060,1064],{},[1024,1061,1062],{},[968,1063,290],{"href":291},[1024,1065,1066],{},"Collapsible block for AI reasoning \u002F thinking process.",[1009,1068,1069,1073],{},[1024,1070,1071],{},[968,1072,301],{"href":302},[1024,1074,1075],{},"Collapsible block for AI tool invocation status.",[1009,1077,1078,1082],{},[1024,1079,1080],{},[968,1081,296],{"href":297},[1024,1083,1084],{},"Text shimmer animation for streaming states.",[1009,1086,1087,1091],{},[1024,1088,1089],{},[968,1090,275],{"href":276},[1024,1092,1093],{},"Layout wrapper for embedding chat in modals or drawers.",[1000,1095,20],{"id":1096},"installation",[964,1098,1099,1100,1103,1104,1110],{},"The Chat components are designed to be used with the ",[968,1101,973],{"href":970,"rel":1102},[972],", specifically the ",[968,1105,1108],{"href":1106,"rel":1107},"https:\u002F\u002Fai-sdk.dev\u002Fdocs\u002Freference\u002Fai-sdk-ui\u002Fuse-chat",[972],[987,1109,259],{}," class for managing chat state and streaming responses.",[964,1112,1113],{},"Install the required dependencies:",[1115,1116,1118,1149,1167,1186],"code-group",{"sync":1117},"pm",[1119,1120,1126],"pre",{"className":1121,"code":1122,"filename":1123,"language":1124,"meta":1125,"style":1125},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add ai @ai-sdk\u002Fgateway @ai-sdk\u002Fvue\n","pnpm","bash","",[987,1127,1128],{"__ignoreMap":1125},[1129,1130,1133,1136,1140,1143,1146],"span",{"class":1131,"line":1132},"line",1,[1129,1134,1123],{"class":1135},"sBMFI",[1129,1137,1139],{"class":1138},"sfazB"," add",[1129,1141,1142],{"class":1138}," ai",[1129,1144,1145],{"class":1138}," @ai-sdk\u002Fgateway",[1129,1147,1148],{"class":1138}," @ai-sdk\u002Fvue\n",[1119,1150,1153],{"className":1121,"code":1151,"filename":1152,"language":1124,"meta":1125,"style":1125},"yarn add ai @ai-sdk\u002Fgateway @ai-sdk\u002Fvue\n","yarn",[987,1154,1155],{"__ignoreMap":1125},[1129,1156,1157,1159,1161,1163,1165],{"class":1131,"line":1132},[1129,1158,1152],{"class":1135},[1129,1160,1139],{"class":1138},[1129,1162,1142],{"class":1138},[1129,1164,1145],{"class":1138},[1129,1166,1148],{"class":1138},[1119,1168,1171],{"className":1121,"code":1169,"filename":1170,"language":1124,"meta":1125,"style":1125},"npm install ai @ai-sdk\u002Fgateway @ai-sdk\u002Fvue\n","npm",[987,1172,1173],{"__ignoreMap":1125},[1129,1174,1175,1177,1180,1182,1184],{"class":1131,"line":1132},[1129,1176,1170],{"class":1135},[1129,1178,1179],{"class":1138}," install",[1129,1181,1142],{"class":1138},[1129,1183,1145],{"class":1138},[1129,1185,1148],{"class":1138},[1119,1187,1190],{"className":1121,"code":1188,"filename":1189,"language":1124,"meta":1125,"style":1125},"bun add ai @ai-sdk\u002Fgateway @ai-sdk\u002Fvue\n","bun",[987,1191,1192],{"__ignoreMap":1125},[1129,1193,1194,1196,1198,1200,1202],{"class":1131,"line":1132},[1129,1195,1189],{"class":1135},[1129,1197,1139],{"class":1138},[1129,1199,1142],{"class":1138},[1129,1201,1145],{"class":1138},[1129,1203,1148],{"class":1138},[1000,1205,1207],{"id":1206},"server-setup","Server Setup",[964,1209,1210,1211,1218,1219,1224],{},"Create a server API endpoint to handle chat requests using ",[968,1212,1215],{"href":1213,"rel":1214},"https:\u002F\u002Fai-sdk.dev\u002Fdocs\u002Freference\u002Fai-sdk-core\u002Fstream-text",[972],[987,1216,1217],{},"streamText",". You can use the ",[968,1220,1223],{"href":1221,"rel":1222},"https:\u002F\u002Fvercel.com\u002Fai-gateway",[972],"Vercel AI Gateway"," to access AI models through a centralized endpoint:",[1119,1226,1231],{"className":1227,"code":1228,"filename":1229,"language":1230,"meta":1125,"style":1125},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { streamText, convertToModelMessages } from 'ai'\nimport { gateway } from '@ai-sdk\u002Fgateway'\n\nexport default defineEventHandler(async (event) => {\n  const { messages } = await readBody(event)\n\n  return streamText({\n    model: gateway('anthropic\u002Fclaude-sonnet-4.6'),\n    maxOutputTokens: 10000,\n    system: 'You are a helpful assistant.',\n    messages: await convertToModelMessages(messages)\n  }).toUIMessageStreamResponse()\n})\n","server\u002Fapi\u002Fchat.post.ts","ts",[987,1232,1233,1268,1289,1295,1331,1361,1366,1379,1405,1419,1436,1455,1472],{"__ignoreMap":1125},[1129,1234,1235,1239,1243,1247,1250,1253,1256,1259,1262,1265],{"class":1131,"line":1132},[1129,1236,1238],{"class":1237},"s7zQu","import",[1129,1240,1242],{"class":1241},"sMK4o"," {",[1129,1244,1246],{"class":1245},"sTEyZ"," streamText",[1129,1248,1249],{"class":1241},",",[1129,1251,1252],{"class":1245}," convertToModelMessages",[1129,1254,1255],{"class":1241}," }",[1129,1257,1258],{"class":1237}," from",[1129,1260,1261],{"class":1241}," '",[1129,1263,1264],{"class":1138},"ai",[1129,1266,1267],{"class":1241},"'\n",[1129,1269,1271,1273,1275,1278,1280,1282,1284,1287],{"class":1131,"line":1270},2,[1129,1272,1238],{"class":1237},[1129,1274,1242],{"class":1241},[1129,1276,1277],{"class":1245}," gateway",[1129,1279,1255],{"class":1241},[1129,1281,1258],{"class":1237},[1129,1283,1261],{"class":1241},[1129,1285,1286],{"class":1138},"@ai-sdk\u002Fgateway",[1129,1288,1267],{"class":1241},[1129,1290,1292],{"class":1131,"line":1291},3,[1129,1293,1294],{"emptyLinePlaceholder":21},"\n",[1129,1296,1298,1301,1304,1308,1311,1315,1318,1322,1325,1328],{"class":1131,"line":1297},4,[1129,1299,1300],{"class":1237},"export",[1129,1302,1303],{"class":1237}," default",[1129,1305,1307],{"class":1306},"s2Zo4"," defineEventHandler",[1129,1309,1310],{"class":1245},"(",[1129,1312,1314],{"class":1313},"spNyl","async",[1129,1316,1317],{"class":1241}," (",[1129,1319,1321],{"class":1320},"sHdIc","event",[1129,1323,1324],{"class":1241},")",[1129,1326,1327],{"class":1313}," =>",[1129,1329,1330],{"class":1241}," {\n",[1129,1332,1334,1337,1339,1342,1344,1347,1350,1353,1356,1358],{"class":1131,"line":1333},5,[1129,1335,1336],{"class":1313},"  const",[1129,1338,1242],{"class":1241},[1129,1340,1341],{"class":1245}," messages",[1129,1343,1255],{"class":1241},[1129,1345,1346],{"class":1241}," =",[1129,1348,1349],{"class":1237}," await",[1129,1351,1352],{"class":1306}," readBody",[1129,1354,1310],{"class":1355},"swJcz",[1129,1357,1321],{"class":1245},[1129,1359,1360],{"class":1355},")\n",[1129,1362,1364],{"class":1131,"line":1363},6,[1129,1365,1294],{"emptyLinePlaceholder":21},[1129,1367,1369,1372,1374,1376],{"class":1131,"line":1368},7,[1129,1370,1371],{"class":1237},"  return",[1129,1373,1246],{"class":1306},[1129,1375,1310],{"class":1355},[1129,1377,1378],{"class":1241},"{\n",[1129,1380,1382,1385,1388,1390,1392,1395,1398,1400,1402],{"class":1131,"line":1381},8,[1129,1383,1384],{"class":1355},"    model",[1129,1386,1387],{"class":1241},":",[1129,1389,1277],{"class":1306},[1129,1391,1310],{"class":1355},[1129,1393,1394],{"class":1241},"'",[1129,1396,1397],{"class":1138},"anthropic\u002Fclaude-sonnet-4.6",[1129,1399,1394],{"class":1241},[1129,1401,1324],{"class":1355},[1129,1403,1404],{"class":1241},",\n",[1129,1406,1408,1411,1413,1417],{"class":1131,"line":1407},9,[1129,1409,1410],{"class":1355},"    maxOutputTokens",[1129,1412,1387],{"class":1241},[1129,1414,1416],{"class":1415},"sbssI"," 10000",[1129,1418,1404],{"class":1241},[1129,1420,1422,1425,1427,1429,1432,1434],{"class":1131,"line":1421},10,[1129,1423,1424],{"class":1355},"    system",[1129,1426,1387],{"class":1241},[1129,1428,1261],{"class":1241},[1129,1430,1431],{"class":1138},"You are a helpful assistant.",[1129,1433,1394],{"class":1241},[1129,1435,1404],{"class":1241},[1129,1437,1439,1442,1444,1446,1448,1450,1453],{"class":1131,"line":1438},11,[1129,1440,1441],{"class":1355},"    messages",[1129,1443,1387],{"class":1241},[1129,1445,1349],{"class":1237},[1129,1447,1252],{"class":1306},[1129,1449,1310],{"class":1355},[1129,1451,1452],{"class":1245},"messages",[1129,1454,1360],{"class":1355},[1129,1456,1458,1461,1463,1466,1469],{"class":1131,"line":1457},12,[1129,1459,1460],{"class":1241},"  }",[1129,1462,1324],{"class":1355},[1129,1464,1465],{"class":1241},".",[1129,1467,1468],{"class":1306},"toUIMessageStreamResponse",[1129,1470,1471],{"class":1355},"()\n",[1129,1473,1475,1478],{"class":1131,"line":1474},13,[1129,1476,1477],{"class":1241},"}",[1129,1479,1360],{"class":1245},[1481,1482,1484],"h3",{"id":1483},"reasoning","Reasoning",[964,1486,1487,1488,1492,1493,1496,1497,1502,1503,1502,1508,1513],{},"To enable ",[968,1489,1483],{"href":1490,"rel":1491},"https:\u002F\u002Fai-sdk.dev\u002Fdocs\u002Fai-sdk-ui\u002Fchatbot#reasoning",[972],", configure ",[987,1494,1495],{},"providerOptions"," for your provider (",[968,1498,1501],{"href":1499,"rel":1500},"https:\u002F\u002Fai-sdk.dev\u002Fdocs\u002Fguides\u002Fproviders\u002Fanthropic#reasoning",[972],"Anthropic",", ",[968,1504,1507],{"href":1505,"rel":1506},"https:\u002F\u002Fai-sdk.dev\u002Fproviders\u002Fai-sdk-providers\u002Fgoogle-generative-ai#thinking",[972],"Google",[968,1509,1512],{"href":1510,"rel":1511},"https:\u002F\u002Fai-sdk.dev\u002Fdocs\u002Fguides\u002Fproviders\u002Fopenai#reasoning",[972],"OpenAI","):",[1119,1515,1517],{"className":1227,"code":1516,"filename":1229,"language":1230,"meta":1125,"style":1125},"import { streamText, convertToModelMessages } from 'ai'\nimport { gateway } from '@ai-sdk\u002Fgateway'\n\nexport default defineEventHandler(async (event) => {\n  const { messages } = await readBody(event)\n\n  return streamText({\n    model: gateway('anthropic\u002Fclaude-sonnet-4.6'),\n    maxOutputTokens: 10000,\n    system: 'You are a helpful assistant.',\n    messages: await convertToModelMessages(messages),\n    providerOptions: {\n      anthropic: {\n        thinking: {\n          type: 'adaptive'\n        },\n        effort: 'low'\n      },\n      google: {\n        thinkingConfig: {\n          includeThoughts: true,\n          thinkingLevel: 'low'\n        }\n      },\n      openai: {\n        reasoningEffort: 'low',\n        reasoningSummary: 'detailed'\n      }\n    }\n  }).toUIMessageStreamResponse()\n})\n",[987,1518,1519,1541,1559,1563,1585,1607,1611,1621,1641,1651,1665,1683,1692,1701,1711,1726,1732,1747,1753,1763,1773,1787,1801,1807,1812,1822,1838,1853,1859,1865,1878],{"__ignoreMap":1125},[1129,1520,1521,1523,1525,1527,1529,1531,1533,1535,1537,1539],{"class":1131,"line":1132},[1129,1522,1238],{"class":1237},[1129,1524,1242],{"class":1241},[1129,1526,1246],{"class":1245},[1129,1528,1249],{"class":1241},[1129,1530,1252],{"class":1245},[1129,1532,1255],{"class":1241},[1129,1534,1258],{"class":1237},[1129,1536,1261],{"class":1241},[1129,1538,1264],{"class":1138},[1129,1540,1267],{"class":1241},[1129,1542,1543,1545,1547,1549,1551,1553,1555,1557],{"class":1131,"line":1270},[1129,1544,1238],{"class":1237},[1129,1546,1242],{"class":1241},[1129,1548,1277],{"class":1245},[1129,1550,1255],{"class":1241},[1129,1552,1258],{"class":1237},[1129,1554,1261],{"class":1241},[1129,1556,1286],{"class":1138},[1129,1558,1267],{"class":1241},[1129,1560,1561],{"class":1131,"line":1291},[1129,1562,1294],{"emptyLinePlaceholder":21},[1129,1564,1565,1567,1569,1571,1573,1575,1577,1579,1581,1583],{"class":1131,"line":1297},[1129,1566,1300],{"class":1237},[1129,1568,1303],{"class":1237},[1129,1570,1307],{"class":1306},[1129,1572,1310],{"class":1245},[1129,1574,1314],{"class":1313},[1129,1576,1317],{"class":1241},[1129,1578,1321],{"class":1320},[1129,1580,1324],{"class":1241},[1129,1582,1327],{"class":1313},[1129,1584,1330],{"class":1241},[1129,1586,1587,1589,1591,1593,1595,1597,1599,1601,1603,1605],{"class":1131,"line":1333},[1129,1588,1336],{"class":1313},[1129,1590,1242],{"class":1241},[1129,1592,1341],{"class":1245},[1129,1594,1255],{"class":1241},[1129,1596,1346],{"class":1241},[1129,1598,1349],{"class":1237},[1129,1600,1352],{"class":1306},[1129,1602,1310],{"class":1355},[1129,1604,1321],{"class":1245},[1129,1606,1360],{"class":1355},[1129,1608,1609],{"class":1131,"line":1363},[1129,1610,1294],{"emptyLinePlaceholder":21},[1129,1612,1613,1615,1617,1619],{"class":1131,"line":1368},[1129,1614,1371],{"class":1237},[1129,1616,1246],{"class":1306},[1129,1618,1310],{"class":1355},[1129,1620,1378],{"class":1241},[1129,1622,1623,1625,1627,1629,1631,1633,1635,1637,1639],{"class":1131,"line":1381},[1129,1624,1384],{"class":1355},[1129,1626,1387],{"class":1241},[1129,1628,1277],{"class":1306},[1129,1630,1310],{"class":1355},[1129,1632,1394],{"class":1241},[1129,1634,1397],{"class":1138},[1129,1636,1394],{"class":1241},[1129,1638,1324],{"class":1355},[1129,1640,1404],{"class":1241},[1129,1642,1643,1645,1647,1649],{"class":1131,"line":1407},[1129,1644,1410],{"class":1355},[1129,1646,1387],{"class":1241},[1129,1648,1416],{"class":1415},[1129,1650,1404],{"class":1241},[1129,1652,1653,1655,1657,1659,1661,1663],{"class":1131,"line":1421},[1129,1654,1424],{"class":1355},[1129,1656,1387],{"class":1241},[1129,1658,1261],{"class":1241},[1129,1660,1431],{"class":1138},[1129,1662,1394],{"class":1241},[1129,1664,1404],{"class":1241},[1129,1666,1667,1669,1671,1673,1675,1677,1679,1681],{"class":1131,"line":1438},[1129,1668,1441],{"class":1355},[1129,1670,1387],{"class":1241},[1129,1672,1349],{"class":1237},[1129,1674,1252],{"class":1306},[1129,1676,1310],{"class":1355},[1129,1678,1452],{"class":1245},[1129,1680,1324],{"class":1355},[1129,1682,1404],{"class":1241},[1129,1684,1685,1688,1690],{"class":1131,"line":1457},[1129,1686,1687],{"class":1355},"    providerOptions",[1129,1689,1387],{"class":1241},[1129,1691,1330],{"class":1241},[1129,1693,1694,1697,1699],{"class":1131,"line":1474},[1129,1695,1696],{"class":1355},"      anthropic",[1129,1698,1387],{"class":1241},[1129,1700,1330],{"class":1241},[1129,1702,1704,1707,1709],{"class":1131,"line":1703},14,[1129,1705,1706],{"class":1355},"        thinking",[1129,1708,1387],{"class":1241},[1129,1710,1330],{"class":1241},[1129,1712,1714,1717,1719,1721,1724],{"class":1131,"line":1713},15,[1129,1715,1716],{"class":1355},"          type",[1129,1718,1387],{"class":1241},[1129,1720,1261],{"class":1241},[1129,1722,1723],{"class":1138},"adaptive",[1129,1725,1267],{"class":1241},[1129,1727,1729],{"class":1131,"line":1728},16,[1129,1730,1731],{"class":1241},"        },\n",[1129,1733,1735,1738,1740,1742,1745],{"class":1131,"line":1734},17,[1129,1736,1737],{"class":1355},"        effort",[1129,1739,1387],{"class":1241},[1129,1741,1261],{"class":1241},[1129,1743,1744],{"class":1138},"low",[1129,1746,1267],{"class":1241},[1129,1748,1750],{"class":1131,"line":1749},18,[1129,1751,1752],{"class":1241},"      },\n",[1129,1754,1756,1759,1761],{"class":1131,"line":1755},19,[1129,1757,1758],{"class":1355},"      google",[1129,1760,1387],{"class":1241},[1129,1762,1330],{"class":1241},[1129,1764,1766,1769,1771],{"class":1131,"line":1765},20,[1129,1767,1768],{"class":1355},"        thinkingConfig",[1129,1770,1387],{"class":1241},[1129,1772,1330],{"class":1241},[1129,1774,1776,1779,1781,1785],{"class":1131,"line":1775},21,[1129,1777,1778],{"class":1355},"          includeThoughts",[1129,1780,1387],{"class":1241},[1129,1782,1784],{"class":1783},"sfNiH"," true",[1129,1786,1404],{"class":1241},[1129,1788,1790,1793,1795,1797,1799],{"class":1131,"line":1789},22,[1129,1791,1792],{"class":1355},"          thinkingLevel",[1129,1794,1387],{"class":1241},[1129,1796,1261],{"class":1241},[1129,1798,1744],{"class":1138},[1129,1800,1267],{"class":1241},[1129,1802,1804],{"class":1131,"line":1803},23,[1129,1805,1806],{"class":1241},"        }\n",[1129,1808,1810],{"class":1131,"line":1809},24,[1129,1811,1752],{"class":1241},[1129,1813,1815,1818,1820],{"class":1131,"line":1814},25,[1129,1816,1817],{"class":1355},"      openai",[1129,1819,1387],{"class":1241},[1129,1821,1330],{"class":1241},[1129,1823,1825,1828,1830,1832,1834,1836],{"class":1131,"line":1824},26,[1129,1826,1827],{"class":1355},"        reasoningEffort",[1129,1829,1387],{"class":1241},[1129,1831,1261],{"class":1241},[1129,1833,1744],{"class":1138},[1129,1835,1394],{"class":1241},[1129,1837,1404],{"class":1241},[1129,1839,1841,1844,1846,1848,1851],{"class":1131,"line":1840},27,[1129,1842,1843],{"class":1355},"        reasoningSummary",[1129,1845,1387],{"class":1241},[1129,1847,1261],{"class":1241},[1129,1849,1850],{"class":1138},"detailed",[1129,1852,1267],{"class":1241},[1129,1854,1856],{"class":1131,"line":1855},28,[1129,1857,1858],{"class":1241},"      }\n",[1129,1860,1862],{"class":1131,"line":1861},29,[1129,1863,1864],{"class":1241},"    }\n",[1129,1866,1868,1870,1872,1874,1876],{"class":1131,"line":1867},30,[1129,1869,1460],{"class":1241},[1129,1871,1324],{"class":1355},[1129,1873,1465],{"class":1241},[1129,1875,1468],{"class":1306},[1129,1877,1471],{"class":1355},[1129,1879,1881,1883],{"class":1131,"line":1880},31,[1129,1882,1477],{"class":1241},[1129,1884,1360],{"class":1245},[1481,1886,1888],{"id":1887},"web-search","Web Search",[964,1890,1891,1892,1502,1896,1502,1900,1465],{},"Some providers offer built-in web search tools: ",[968,1893,1501],{"href":1894,"rel":1895},"https:\u002F\u002Fai-sdk.dev\u002Fdocs\u002Fguides\u002Fproviders\u002Fanthropic#web-search-tool",[972],[968,1897,1507],{"href":1898,"rel":1899},"https:\u002F\u002Fai-sdk.dev\u002Fproviders\u002Fai-sdk-providers\u002Fgoogle-generative-ai#google-search",[972],[968,1901,1512],{"href":1902,"rel":1903},"https:\u002F\u002Fai-sdk.dev\u002Fproviders\u002Fai-sdk-providers\u002Fopenai#web-search-tool",[972],[1115,1905,1906,2142,2376],{},[1119,1907,1909],{"className":1227,"code":1908,"filename":1501,"language":1230,"meta":1125,"style":1125},"import { streamText, convertToModelMessages } from 'ai'\nimport { anthropic } from '@ai-sdk\u002Fanthropic'\nimport { gateway } from '@ai-sdk\u002Fgateway'\n\nexport default defineEventHandler(async (event) => {\n  const { messages } = await readBody(event)\n\n  return streamText({\n    model: gateway('anthropic\u002Fclaude-sonnet-4.6'),\n    system: 'You are a helpful assistant.',\n    messages: await convertToModelMessages(messages),\n    tools: {\n      web_search: anthropic.tools.webSearch_20250305({})\n    }\n  }).toUIMessageStreamResponse()\n})\n",[987,1910,1911,1933,1953,1971,1975,1997,2019,2023,2033,2053,2067,2085,2094,2120,2124,2136],{"__ignoreMap":1125},[1129,1912,1913,1915,1917,1919,1921,1923,1925,1927,1929,1931],{"class":1131,"line":1132},[1129,1914,1238],{"class":1237},[1129,1916,1242],{"class":1241},[1129,1918,1246],{"class":1245},[1129,1920,1249],{"class":1241},[1129,1922,1252],{"class":1245},[1129,1924,1255],{"class":1241},[1129,1926,1258],{"class":1237},[1129,1928,1261],{"class":1241},[1129,1930,1264],{"class":1138},[1129,1932,1267],{"class":1241},[1129,1934,1935,1937,1939,1942,1944,1946,1948,1951],{"class":1131,"line":1270},[1129,1936,1238],{"class":1237},[1129,1938,1242],{"class":1241},[1129,1940,1941],{"class":1245}," anthropic",[1129,1943,1255],{"class":1241},[1129,1945,1258],{"class":1237},[1129,1947,1261],{"class":1241},[1129,1949,1950],{"class":1138},"@ai-sdk\u002Fanthropic",[1129,1952,1267],{"class":1241},[1129,1954,1955,1957,1959,1961,1963,1965,1967,1969],{"class":1131,"line":1291},[1129,1956,1238],{"class":1237},[1129,1958,1242],{"class":1241},[1129,1960,1277],{"class":1245},[1129,1962,1255],{"class":1241},[1129,1964,1258],{"class":1237},[1129,1966,1261],{"class":1241},[1129,1968,1286],{"class":1138},[1129,1970,1267],{"class":1241},[1129,1972,1973],{"class":1131,"line":1297},[1129,1974,1294],{"emptyLinePlaceholder":21},[1129,1976,1977,1979,1981,1983,1985,1987,1989,1991,1993,1995],{"class":1131,"line":1333},[1129,1978,1300],{"class":1237},[1129,1980,1303],{"class":1237},[1129,1982,1307],{"class":1306},[1129,1984,1310],{"class":1245},[1129,1986,1314],{"class":1313},[1129,1988,1317],{"class":1241},[1129,1990,1321],{"class":1320},[1129,1992,1324],{"class":1241},[1129,1994,1327],{"class":1313},[1129,1996,1330],{"class":1241},[1129,1998,1999,2001,2003,2005,2007,2009,2011,2013,2015,2017],{"class":1131,"line":1363},[1129,2000,1336],{"class":1313},[1129,2002,1242],{"class":1241},[1129,2004,1341],{"class":1245},[1129,2006,1255],{"class":1241},[1129,2008,1346],{"class":1241},[1129,2010,1349],{"class":1237},[1129,2012,1352],{"class":1306},[1129,2014,1310],{"class":1355},[1129,2016,1321],{"class":1245},[1129,2018,1360],{"class":1355},[1129,2020,2021],{"class":1131,"line":1368},[1129,2022,1294],{"emptyLinePlaceholder":21},[1129,2024,2025,2027,2029,2031],{"class":1131,"line":1381},[1129,2026,1371],{"class":1237},[1129,2028,1246],{"class":1306},[1129,2030,1310],{"class":1355},[1129,2032,1378],{"class":1241},[1129,2034,2035,2037,2039,2041,2043,2045,2047,2049,2051],{"class":1131,"line":1407},[1129,2036,1384],{"class":1355},[1129,2038,1387],{"class":1241},[1129,2040,1277],{"class":1306},[1129,2042,1310],{"class":1355},[1129,2044,1394],{"class":1241},[1129,2046,1397],{"class":1138},[1129,2048,1394],{"class":1241},[1129,2050,1324],{"class":1355},[1129,2052,1404],{"class":1241},[1129,2054,2055,2057,2059,2061,2063,2065],{"class":1131,"line":1421},[1129,2056,1424],{"class":1355},[1129,2058,1387],{"class":1241},[1129,2060,1261],{"class":1241},[1129,2062,1431],{"class":1138},[1129,2064,1394],{"class":1241},[1129,2066,1404],{"class":1241},[1129,2068,2069,2071,2073,2075,2077,2079,2081,2083],{"class":1131,"line":1438},[1129,2070,1441],{"class":1355},[1129,2072,1387],{"class":1241},[1129,2074,1349],{"class":1237},[1129,2076,1252],{"class":1306},[1129,2078,1310],{"class":1355},[1129,2080,1452],{"class":1245},[1129,2082,1324],{"class":1355},[1129,2084,1404],{"class":1241},[1129,2086,2087,2090,2092],{"class":1131,"line":1457},[1129,2088,2089],{"class":1355},"    tools",[1129,2091,1387],{"class":1241},[1129,2093,1330],{"class":1241},[1129,2095,2096,2099,2101,2103,2105,2108,2110,2113,2115,2118],{"class":1131,"line":1474},[1129,2097,2098],{"class":1355},"      web_search",[1129,2100,1387],{"class":1241},[1129,2102,1941],{"class":1245},[1129,2104,1465],{"class":1241},[1129,2106,2107],{"class":1245},"tools",[1129,2109,1465],{"class":1241},[1129,2111,2112],{"class":1306},"webSearch_20250305",[1129,2114,1310],{"class":1355},[1129,2116,2117],{"class":1241},"{}",[1129,2119,1360],{"class":1355},[1129,2121,2122],{"class":1131,"line":1703},[1129,2123,1864],{"class":1241},[1129,2125,2126,2128,2130,2132,2134],{"class":1131,"line":1713},[1129,2127,1460],{"class":1241},[1129,2129,1324],{"class":1355},[1129,2131,1465],{"class":1241},[1129,2133,1468],{"class":1306},[1129,2135,1471],{"class":1355},[1129,2137,2138,2140],{"class":1131,"line":1728},[1129,2139,1477],{"class":1241},[1129,2141,1360],{"class":1245},[1119,2143,2145],{"className":1227,"code":2144,"filename":1507,"language":1230,"meta":1125,"style":1125},"import { streamText, convertToModelMessages } from 'ai'\nimport { google } from '@ai-sdk\u002Fgoogle'\nimport { gateway } from '@ai-sdk\u002Fgateway'\n\nexport default defineEventHandler(async (event) => {\n  const { messages } = await readBody(event)\n\n  return streamText({\n    model: gateway('google\u002Fgemini-3-flash'),\n    system: 'You are a helpful assistant.',\n    messages: await convertToModelMessages(messages),\n    tools: {\n      google_search: google.tools.googleSearch({})\n    }\n  }).toUIMessageStreamResponse()\n})\n",[987,2146,2147,2169,2189,2207,2211,2233,2255,2259,2269,2290,2304,2322,2330,2354,2358,2370],{"__ignoreMap":1125},[1129,2148,2149,2151,2153,2155,2157,2159,2161,2163,2165,2167],{"class":1131,"line":1132},[1129,2150,1238],{"class":1237},[1129,2152,1242],{"class":1241},[1129,2154,1246],{"class":1245},[1129,2156,1249],{"class":1241},[1129,2158,1252],{"class":1245},[1129,2160,1255],{"class":1241},[1129,2162,1258],{"class":1237},[1129,2164,1261],{"class":1241},[1129,2166,1264],{"class":1138},[1129,2168,1267],{"class":1241},[1129,2170,2171,2173,2175,2178,2180,2182,2184,2187],{"class":1131,"line":1270},[1129,2172,1238],{"class":1237},[1129,2174,1242],{"class":1241},[1129,2176,2177],{"class":1245}," google",[1129,2179,1255],{"class":1241},[1129,2181,1258],{"class":1237},[1129,2183,1261],{"class":1241},[1129,2185,2186],{"class":1138},"@ai-sdk\u002Fgoogle",[1129,2188,1267],{"class":1241},[1129,2190,2191,2193,2195,2197,2199,2201,2203,2205],{"class":1131,"line":1291},[1129,2192,1238],{"class":1237},[1129,2194,1242],{"class":1241},[1129,2196,1277],{"class":1245},[1129,2198,1255],{"class":1241},[1129,2200,1258],{"class":1237},[1129,2202,1261],{"class":1241},[1129,2204,1286],{"class":1138},[1129,2206,1267],{"class":1241},[1129,2208,2209],{"class":1131,"line":1297},[1129,2210,1294],{"emptyLinePlaceholder":21},[1129,2212,2213,2215,2217,2219,2221,2223,2225,2227,2229,2231],{"class":1131,"line":1333},[1129,2214,1300],{"class":1237},[1129,2216,1303],{"class":1237},[1129,2218,1307],{"class":1306},[1129,2220,1310],{"class":1245},[1129,2222,1314],{"class":1313},[1129,2224,1317],{"class":1241},[1129,2226,1321],{"class":1320},[1129,2228,1324],{"class":1241},[1129,2230,1327],{"class":1313},[1129,2232,1330],{"class":1241},[1129,2234,2235,2237,2239,2241,2243,2245,2247,2249,2251,2253],{"class":1131,"line":1363},[1129,2236,1336],{"class":1313},[1129,2238,1242],{"class":1241},[1129,2240,1341],{"class":1245},[1129,2242,1255],{"class":1241},[1129,2244,1346],{"class":1241},[1129,2246,1349],{"class":1237},[1129,2248,1352],{"class":1306},[1129,2250,1310],{"class":1355},[1129,2252,1321],{"class":1245},[1129,2254,1360],{"class":1355},[1129,2256,2257],{"class":1131,"line":1368},[1129,2258,1294],{"emptyLinePlaceholder":21},[1129,2260,2261,2263,2265,2267],{"class":1131,"line":1381},[1129,2262,1371],{"class":1237},[1129,2264,1246],{"class":1306},[1129,2266,1310],{"class":1355},[1129,2268,1378],{"class":1241},[1129,2270,2271,2273,2275,2277,2279,2281,2284,2286,2288],{"class":1131,"line":1407},[1129,2272,1384],{"class":1355},[1129,2274,1387],{"class":1241},[1129,2276,1277],{"class":1306},[1129,2278,1310],{"class":1355},[1129,2280,1394],{"class":1241},[1129,2282,2283],{"class":1138},"google\u002Fgemini-3-flash",[1129,2285,1394],{"class":1241},[1129,2287,1324],{"class":1355},[1129,2289,1404],{"class":1241},[1129,2291,2292,2294,2296,2298,2300,2302],{"class":1131,"line":1421},[1129,2293,1424],{"class":1355},[1129,2295,1387],{"class":1241},[1129,2297,1261],{"class":1241},[1129,2299,1431],{"class":1138},[1129,2301,1394],{"class":1241},[1129,2303,1404],{"class":1241},[1129,2305,2306,2308,2310,2312,2314,2316,2318,2320],{"class":1131,"line":1438},[1129,2307,1441],{"class":1355},[1129,2309,1387],{"class":1241},[1129,2311,1349],{"class":1237},[1129,2313,1252],{"class":1306},[1129,2315,1310],{"class":1355},[1129,2317,1452],{"class":1245},[1129,2319,1324],{"class":1355},[1129,2321,1404],{"class":1241},[1129,2323,2324,2326,2328],{"class":1131,"line":1457},[1129,2325,2089],{"class":1355},[1129,2327,1387],{"class":1241},[1129,2329,1330],{"class":1241},[1129,2331,2332,2335,2337,2339,2341,2343,2345,2348,2350,2352],{"class":1131,"line":1474},[1129,2333,2334],{"class":1355},"      google_search",[1129,2336,1387],{"class":1241},[1129,2338,2177],{"class":1245},[1129,2340,1465],{"class":1241},[1129,2342,2107],{"class":1245},[1129,2344,1465],{"class":1241},[1129,2346,2347],{"class":1306},"googleSearch",[1129,2349,1310],{"class":1355},[1129,2351,2117],{"class":1241},[1129,2353,1360],{"class":1355},[1129,2355,2356],{"class":1131,"line":1703},[1129,2357,1864],{"class":1241},[1129,2359,2360,2362,2364,2366,2368],{"class":1131,"line":1713},[1129,2361,1460],{"class":1241},[1129,2363,1324],{"class":1355},[1129,2365,1465],{"class":1241},[1129,2367,1468],{"class":1306},[1129,2369,1471],{"class":1355},[1129,2371,2372,2374],{"class":1131,"line":1728},[1129,2373,1477],{"class":1241},[1129,2375,1360],{"class":1245},[1119,2377,2379],{"className":1227,"code":2378,"filename":1512,"language":1230,"meta":1125,"style":1125},"import { streamText, convertToModelMessages } from 'ai'\nimport { openai } from '@ai-sdk\u002Fopenai'\nimport { gateway } from '@ai-sdk\u002Fgateway'\n\nexport default defineEventHandler(async (event) => {\n  const { messages } = await readBody(event)\n\n  return streamText({\n    model: gateway('openai\u002Fgpt-5-nano'),\n    system: 'You are a helpful assistant.',\n    messages: await convertToModelMessages(messages),\n    tools: {\n      web_search: openai.tools.webSearch({})\n    }\n  }).toUIMessageStreamResponse()\n})\n",[987,2380,2381,2403,2423,2441,2445,2467,2489,2493,2503,2524,2538,2556,2564,2587,2591,2603],{"__ignoreMap":1125},[1129,2382,2383,2385,2387,2389,2391,2393,2395,2397,2399,2401],{"class":1131,"line":1132},[1129,2384,1238],{"class":1237},[1129,2386,1242],{"class":1241},[1129,2388,1246],{"class":1245},[1129,2390,1249],{"class":1241},[1129,2392,1252],{"class":1245},[1129,2394,1255],{"class":1241},[1129,2396,1258],{"class":1237},[1129,2398,1261],{"class":1241},[1129,2400,1264],{"class":1138},[1129,2402,1267],{"class":1241},[1129,2404,2405,2407,2409,2412,2414,2416,2418,2421],{"class":1131,"line":1270},[1129,2406,1238],{"class":1237},[1129,2408,1242],{"class":1241},[1129,2410,2411],{"class":1245}," openai",[1129,2413,1255],{"class":1241},[1129,2415,1258],{"class":1237},[1129,2417,1261],{"class":1241},[1129,2419,2420],{"class":1138},"@ai-sdk\u002Fopenai",[1129,2422,1267],{"class":1241},[1129,2424,2425,2427,2429,2431,2433,2435,2437,2439],{"class":1131,"line":1291},[1129,2426,1238],{"class":1237},[1129,2428,1242],{"class":1241},[1129,2430,1277],{"class":1245},[1129,2432,1255],{"class":1241},[1129,2434,1258],{"class":1237},[1129,2436,1261],{"class":1241},[1129,2438,1286],{"class":1138},[1129,2440,1267],{"class":1241},[1129,2442,2443],{"class":1131,"line":1297},[1129,2444,1294],{"emptyLinePlaceholder":21},[1129,2446,2447,2449,2451,2453,2455,2457,2459,2461,2463,2465],{"class":1131,"line":1333},[1129,2448,1300],{"class":1237},[1129,2450,1303],{"class":1237},[1129,2452,1307],{"class":1306},[1129,2454,1310],{"class":1245},[1129,2456,1314],{"class":1313},[1129,2458,1317],{"class":1241},[1129,2460,1321],{"class":1320},[1129,2462,1324],{"class":1241},[1129,2464,1327],{"class":1313},[1129,2466,1330],{"class":1241},[1129,2468,2469,2471,2473,2475,2477,2479,2481,2483,2485,2487],{"class":1131,"line":1363},[1129,2470,1336],{"class":1313},[1129,2472,1242],{"class":1241},[1129,2474,1341],{"class":1245},[1129,2476,1255],{"class":1241},[1129,2478,1346],{"class":1241},[1129,2480,1349],{"class":1237},[1129,2482,1352],{"class":1306},[1129,2484,1310],{"class":1355},[1129,2486,1321],{"class":1245},[1129,2488,1360],{"class":1355},[1129,2490,2491],{"class":1131,"line":1368},[1129,2492,1294],{"emptyLinePlaceholder":21},[1129,2494,2495,2497,2499,2501],{"class":1131,"line":1381},[1129,2496,1371],{"class":1237},[1129,2498,1246],{"class":1306},[1129,2500,1310],{"class":1355},[1129,2502,1378],{"class":1241},[1129,2504,2505,2507,2509,2511,2513,2515,2518,2520,2522],{"class":1131,"line":1407},[1129,2506,1384],{"class":1355},[1129,2508,1387],{"class":1241},[1129,2510,1277],{"class":1306},[1129,2512,1310],{"class":1355},[1129,2514,1394],{"class":1241},[1129,2516,2517],{"class":1138},"openai\u002Fgpt-5-nano",[1129,2519,1394],{"class":1241},[1129,2521,1324],{"class":1355},[1129,2523,1404],{"class":1241},[1129,2525,2526,2528,2530,2532,2534,2536],{"class":1131,"line":1421},[1129,2527,1424],{"class":1355},[1129,2529,1387],{"class":1241},[1129,2531,1261],{"class":1241},[1129,2533,1431],{"class":1138},[1129,2535,1394],{"class":1241},[1129,2537,1404],{"class":1241},[1129,2539,2540,2542,2544,2546,2548,2550,2552,2554],{"class":1131,"line":1438},[1129,2541,1441],{"class":1355},[1129,2543,1387],{"class":1241},[1129,2545,1349],{"class":1237},[1129,2547,1252],{"class":1306},[1129,2549,1310],{"class":1355},[1129,2551,1452],{"class":1245},[1129,2553,1324],{"class":1355},[1129,2555,1404],{"class":1241},[1129,2557,2558,2560,2562],{"class":1131,"line":1457},[1129,2559,2089],{"class":1355},[1129,2561,1387],{"class":1241},[1129,2563,1330],{"class":1241},[1129,2565,2566,2568,2570,2572,2574,2576,2578,2581,2583,2585],{"class":1131,"line":1474},[1129,2567,2098],{"class":1355},[1129,2569,1387],{"class":1241},[1129,2571,2411],{"class":1245},[1129,2573,1465],{"class":1241},[1129,2575,2107],{"class":1245},[1129,2577,1465],{"class":1241},[1129,2579,2580],{"class":1306},"webSearch",[1129,2582,1310],{"class":1355},[1129,2584,2117],{"class":1241},[1129,2586,1360],{"class":1355},[1129,2588,2589],{"class":1131,"line":1703},[1129,2590,1864],{"class":1241},[1129,2592,2593,2595,2597,2599,2601],{"class":1131,"line":1713},[1129,2594,1460],{"class":1241},[1129,2596,1324],{"class":1355},[1129,2598,1465],{"class":1241},[1129,2600,1468],{"class":1306},[1129,2602,1471],{"class":1355},[1129,2604,2605,2607],{"class":1131,"line":1728},[1129,2606,1477],{"class":1241},[1129,2608,1360],{"class":1245},[1481,2610,2612],{"id":2611},"tool-calling-with-mcp","Tool Calling with MCP",[964,2614,2615,2616,2621,2622,2625],{},"Empower your chatbot with advanced tool-calling features using the ",[968,2617,2620],{"href":2618,"rel":2619},"https:\u002F\u002Fai-sdk.dev\u002Fdocs\u002Fai-sdk-core\u002Fmcp-tools",[972],"Model Context Protocol (MCP)"," from ",[987,2623,2624],{},"@ai-sdk\u002Fmcp",". MCP enables your AI to perform dynamic actions, such as searching your documentation or executing custom tasks, to provide more relevant and accurate responses.",[964,2627,2628],{},"To get started, install the MCP package:",[1115,2630,2631,2645,2658],{},[1119,2632,2634],{"className":1121,"code":2633,"filename":1170,"language":1124,"meta":1125,"style":1125},"npm install @ai-sdk\u002Fmcp\n",[987,2635,2636],{"__ignoreMap":1125},[1129,2637,2638,2640,2642],{"class":1131,"line":1132},[1129,2639,1170],{"class":1135},[1129,2641,1179],{"class":1138},[1129,2643,2644],{"class":1138}," @ai-sdk\u002Fmcp\n",[1119,2646,2648],{"className":1121,"code":2647,"filename":1123,"language":1124,"meta":1125,"style":1125},"pnpm add @ai-sdk\u002Fmcp\n",[987,2649,2650],{"__ignoreMap":1125},[1129,2651,2652,2654,2656],{"class":1131,"line":1132},[1129,2653,1123],{"class":1135},[1129,2655,1139],{"class":1138},[1129,2657,2644],{"class":1138},[1119,2659,2661],{"className":1121,"code":2660,"filename":1152,"language":1124,"meta":1125,"style":1125},"yarn add @ai-sdk\u002Fmcp\n",[987,2662,2663],{"__ignoreMap":1125},[1129,2664,2665,2667,2669],{"class":1131,"line":1132},[1129,2666,1152],{"class":1135},[1129,2668,1139],{"class":1138},[1129,2670,2644],{"class":1138},[964,2672,2673],{},"Then, configure your server endpoint to use MCP tools:",[1119,2675,2677],{"className":1227,"code":2676,"filename":1229,"language":1230,"meta":1125,"style":1125},"import { streamText, convertToModelMessages, stepCountIs } from 'ai'\nimport { createMCPClient } from '@ai-sdk\u002Fmcp'\nimport { gateway } from '@ai-sdk\u002Fgateway'\n\nexport default defineEventHandler(async (event) => {\n  const { messages } = await readBody(event)\n\n  const httpClient = await createMCPClient({\n    transport: { type: 'http', url: 'https:\u002F\u002Fyour-app.com\u002Fmcp' }\n  })\n  const tools = await httpClient.tools()\n\n  return streamText({\n    model: gateway('anthropic\u002Fclaude-sonnet-4.6'),\n    maxOutputTokens: 10000,\n    system: 'You are a helpful assistant. Use your tools to search for relevant information before answering questions.',\n    messages: await convertToModelMessages(messages),\n    stopWhen: stepCountIs(6),\n    tools,\n    onFinish: async () => {\n      await httpClient.close()\n    },\n    onError: async (error) => {\n      console.error(error)\n      await httpClient.close()\n    }\n  }).toUIMessageStreamResponse()\n})\n",[987,2678,2679,2706,2725,2743,2747,2769,2791,2795,2812,2850,2856,2875,2879,2889,2909,2919,2934,2952,2970,2976,2993,3007,3012,3032,3047,3059,3063,3075],{"__ignoreMap":1125},[1129,2680,2681,2683,2685,2687,2689,2691,2693,2696,2698,2700,2702,2704],{"class":1131,"line":1132},[1129,2682,1238],{"class":1237},[1129,2684,1242],{"class":1241},[1129,2686,1246],{"class":1245},[1129,2688,1249],{"class":1241},[1129,2690,1252],{"class":1245},[1129,2692,1249],{"class":1241},[1129,2694,2695],{"class":1245}," stepCountIs",[1129,2697,1255],{"class":1241},[1129,2699,1258],{"class":1237},[1129,2701,1261],{"class":1241},[1129,2703,1264],{"class":1138},[1129,2705,1267],{"class":1241},[1129,2707,2708,2710,2712,2715,2717,2719,2721,2723],{"class":1131,"line":1270},[1129,2709,1238],{"class":1237},[1129,2711,1242],{"class":1241},[1129,2713,2714],{"class":1245}," createMCPClient",[1129,2716,1255],{"class":1241},[1129,2718,1258],{"class":1237},[1129,2720,1261],{"class":1241},[1129,2722,2624],{"class":1138},[1129,2724,1267],{"class":1241},[1129,2726,2727,2729,2731,2733,2735,2737,2739,2741],{"class":1131,"line":1291},[1129,2728,1238],{"class":1237},[1129,2730,1242],{"class":1241},[1129,2732,1277],{"class":1245},[1129,2734,1255],{"class":1241},[1129,2736,1258],{"class":1237},[1129,2738,1261],{"class":1241},[1129,2740,1286],{"class":1138},[1129,2742,1267],{"class":1241},[1129,2744,2745],{"class":1131,"line":1297},[1129,2746,1294],{"emptyLinePlaceholder":21},[1129,2748,2749,2751,2753,2755,2757,2759,2761,2763,2765,2767],{"class":1131,"line":1333},[1129,2750,1300],{"class":1237},[1129,2752,1303],{"class":1237},[1129,2754,1307],{"class":1306},[1129,2756,1310],{"class":1245},[1129,2758,1314],{"class":1313},[1129,2760,1317],{"class":1241},[1129,2762,1321],{"class":1320},[1129,2764,1324],{"class":1241},[1129,2766,1327],{"class":1313},[1129,2768,1330],{"class":1241},[1129,2770,2771,2773,2775,2777,2779,2781,2783,2785,2787,2789],{"class":1131,"line":1363},[1129,2772,1336],{"class":1313},[1129,2774,1242],{"class":1241},[1129,2776,1341],{"class":1245},[1129,2778,1255],{"class":1241},[1129,2780,1346],{"class":1241},[1129,2782,1349],{"class":1237},[1129,2784,1352],{"class":1306},[1129,2786,1310],{"class":1355},[1129,2788,1321],{"class":1245},[1129,2790,1360],{"class":1355},[1129,2792,2793],{"class":1131,"line":1368},[1129,2794,1294],{"emptyLinePlaceholder":21},[1129,2796,2797,2799,2802,2804,2806,2808,2810],{"class":1131,"line":1381},[1129,2798,1336],{"class":1313},[1129,2800,2801],{"class":1245}," httpClient",[1129,2803,1346],{"class":1241},[1129,2805,1349],{"class":1237},[1129,2807,2714],{"class":1306},[1129,2809,1310],{"class":1355},[1129,2811,1378],{"class":1241},[1129,2813,2814,2817,2819,2821,2824,2826,2828,2831,2833,2835,2838,2840,2842,2845,2847],{"class":1131,"line":1407},[1129,2815,2816],{"class":1355},"    transport",[1129,2818,1387],{"class":1241},[1129,2820,1242],{"class":1241},[1129,2822,2823],{"class":1355}," type",[1129,2825,1387],{"class":1241},[1129,2827,1261],{"class":1241},[1129,2829,2830],{"class":1138},"http",[1129,2832,1394],{"class":1241},[1129,2834,1249],{"class":1241},[1129,2836,2837],{"class":1355}," url",[1129,2839,1387],{"class":1241},[1129,2841,1261],{"class":1241},[1129,2843,2844],{"class":1138},"https:\u002F\u002Fyour-app.com\u002Fmcp",[1129,2846,1394],{"class":1241},[1129,2848,2849],{"class":1241}," }\n",[1129,2851,2852,2854],{"class":1131,"line":1421},[1129,2853,1460],{"class":1241},[1129,2855,1360],{"class":1355},[1129,2857,2858,2860,2863,2865,2867,2869,2871,2873],{"class":1131,"line":1438},[1129,2859,1336],{"class":1313},[1129,2861,2862],{"class":1245}," tools",[1129,2864,1346],{"class":1241},[1129,2866,1349],{"class":1237},[1129,2868,2801],{"class":1245},[1129,2870,1465],{"class":1241},[1129,2872,2107],{"class":1306},[1129,2874,1471],{"class":1355},[1129,2876,2877],{"class":1131,"line":1457},[1129,2878,1294],{"emptyLinePlaceholder":21},[1129,2880,2881,2883,2885,2887],{"class":1131,"line":1474},[1129,2882,1371],{"class":1237},[1129,2884,1246],{"class":1306},[1129,2886,1310],{"class":1355},[1129,2888,1378],{"class":1241},[1129,2890,2891,2893,2895,2897,2899,2901,2903,2905,2907],{"class":1131,"line":1703},[1129,2892,1384],{"class":1355},[1129,2894,1387],{"class":1241},[1129,2896,1277],{"class":1306},[1129,2898,1310],{"class":1355},[1129,2900,1394],{"class":1241},[1129,2902,1397],{"class":1138},[1129,2904,1394],{"class":1241},[1129,2906,1324],{"class":1355},[1129,2908,1404],{"class":1241},[1129,2910,2911,2913,2915,2917],{"class":1131,"line":1713},[1129,2912,1410],{"class":1355},[1129,2914,1387],{"class":1241},[1129,2916,1416],{"class":1415},[1129,2918,1404],{"class":1241},[1129,2920,2921,2923,2925,2927,2930,2932],{"class":1131,"line":1728},[1129,2922,1424],{"class":1355},[1129,2924,1387],{"class":1241},[1129,2926,1261],{"class":1241},[1129,2928,2929],{"class":1138},"You are a helpful assistant. Use your tools to search for relevant information before answering questions.",[1129,2931,1394],{"class":1241},[1129,2933,1404],{"class":1241},[1129,2935,2936,2938,2940,2942,2944,2946,2948,2950],{"class":1131,"line":1734},[1129,2937,1441],{"class":1355},[1129,2939,1387],{"class":1241},[1129,2941,1349],{"class":1237},[1129,2943,1252],{"class":1306},[1129,2945,1310],{"class":1355},[1129,2947,1452],{"class":1245},[1129,2949,1324],{"class":1355},[1129,2951,1404],{"class":1241},[1129,2953,2954,2957,2959,2961,2963,2966,2968],{"class":1131,"line":1749},[1129,2955,2956],{"class":1355},"    stopWhen",[1129,2958,1387],{"class":1241},[1129,2960,2695],{"class":1306},[1129,2962,1310],{"class":1355},[1129,2964,2965],{"class":1415},"6",[1129,2967,1324],{"class":1355},[1129,2969,1404],{"class":1241},[1129,2971,2972,2974],{"class":1131,"line":1755},[1129,2973,2089],{"class":1245},[1129,2975,1404],{"class":1241},[1129,2977,2978,2981,2983,2986,2989,2991],{"class":1131,"line":1765},[1129,2979,2980],{"class":1306},"    onFinish",[1129,2982,1387],{"class":1241},[1129,2984,2985],{"class":1313}," async",[1129,2987,2988],{"class":1241}," ()",[1129,2990,1327],{"class":1313},[1129,2992,1330],{"class":1241},[1129,2994,2995,2998,3000,3002,3005],{"class":1131,"line":1775},[1129,2996,2997],{"class":1237},"      await",[1129,2999,2801],{"class":1245},[1129,3001,1465],{"class":1241},[1129,3003,3004],{"class":1306},"close",[1129,3006,1471],{"class":1355},[1129,3008,3009],{"class":1131,"line":1789},[1129,3010,3011],{"class":1241},"    },\n",[1129,3013,3014,3017,3019,3021,3023,3026,3028,3030],{"class":1131,"line":1803},[1129,3015,3016],{"class":1306},"    onError",[1129,3018,1387],{"class":1241},[1129,3020,2985],{"class":1313},[1129,3022,1317],{"class":1241},[1129,3024,3025],{"class":1320},"error",[1129,3027,1324],{"class":1241},[1129,3029,1327],{"class":1313},[1129,3031,1330],{"class":1241},[1129,3033,3034,3037,3039,3041,3043,3045],{"class":1131,"line":1809},[1129,3035,3036],{"class":1245},"      console",[1129,3038,1465],{"class":1241},[1129,3040,3025],{"class":1306},[1129,3042,1310],{"class":1355},[1129,3044,3025],{"class":1245},[1129,3046,1360],{"class":1355},[1129,3048,3049,3051,3053,3055,3057],{"class":1131,"line":1814},[1129,3050,2997],{"class":1237},[1129,3052,2801],{"class":1245},[1129,3054,1465],{"class":1241},[1129,3056,3004],{"class":1306},[1129,3058,1471],{"class":1355},[1129,3060,3061],{"class":1131,"line":1824},[1129,3062,1864],{"class":1241},[1129,3064,3065,3067,3069,3071,3073],{"class":1131,"line":1840},[1129,3066,1460],{"class":1241},[1129,3068,1324],{"class":1355},[1129,3070,1465],{"class":1241},[1129,3072,1468],{"class":1306},[1129,3074,1471],{"class":1355},[1129,3076,3077,3079],{"class":1131,"line":1855},[1129,3078,1477],{"class":1241},[1129,3080,1360],{"class":1245},[1000,3082,3084],{"id":3083},"client-setup","Client Setup",[964,3086,3087,3088,3090,3091,3094],{},"Use the ",[987,3089,259],{}," class from ",[987,3092,3093],{},"@ai-sdk\u002Fvue"," to manage chat state and connect to your server endpoint:",[1119,3096,3099],{"className":3097,"code":3098,"language":34,"meta":1125,"style":1125},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\nimport type { UIMessage } from 'ai'\nimport { isReasoningUIPart, isTextUIPart, isToolUIPart, getToolName } from 'ai'\nimport { Chat } from '@ai-sdk\u002Fvue'\nimport { isPartStreaming, isToolStreaming } from '@nuxt\u002Fui\u002Futils\u002Fai'\n\nconst input = ref('')\n\nconst chat = new Chat({\n  onError(error) {\n    console.error(error)\n  }\n})\n\nfunction onSubmit() {\n  chat.sendMessage({ text: input.value })\n\n  input.value = ''\n}\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003CUChatMessages\n    :messages=\"chat.messages\"\n    :status=\"chat.status\"\n  >\n    \u003Ctemplate #content=\"{ message }\">\n      \u003Ctemplate\n        v-for=\"(part, index) in message.parts\"\n        :key=\"`${message.id}-${part.type}-${index}`\"\n      >\n        \u003CUChatReasoning\n          v-if=\"isReasoningUIPart(part)\"\n          :text=\"part.text\"\n          :streaming=\"isPartStreaming(part)\"\n        >\n          \u003CMDC\n            :value=\"part.text\"\n            :cache-key=\"`reasoning-${message.id}-${index}`\"\n            class=\"*:first:mt-0 *:last:mb-0\"\n          \u002F>\n        \u003C\u002FUChatReasoning>\n\n        \u003CUChatTool\n          v-else-if=\"isToolUIPart(part)\"\n          :text=\"getToolName(part)\"\n          :streaming=\"isToolStreaming(part)\"\n        \u002F>\n\n        \u003Ctemplate v-else-if=\"isTextUIPart(part)\">\n          \u003CMDC\n            v-if=\"message.role === 'assistant'\"\n            :value=\"part.text\"\n            :cache-key=\"`${message.id}-${index}`\"\n            class=\"*:first:mt-0 *:last:mb-0\"\n          \u002F>\n          \u003Cp v-else-if=\"message.role === 'user'\" class=\"whitespace-pre-wrap\">\n            {{ part.text }}\n          \u003C\u002Fp>\n        \u003C\u002Ftemplate>\n      \u003C\u002Ftemplate>\n    \u003C\u002Ftemplate>\n  \u003C\u002FUChatMessages>\n\n  \u003CUChatPrompt\n    v-model=\"input\"\n    :error=\"chat.error\"\n    @submit=\"onSubmit\"\n  >\n    \u003CUChatPromptSubmit\n      :status=\"chat.status\"\n      @stop=\"chat.stop()\"\n      @reload=\"chat.regenerate()\"\n    \u002F>\n  \u003C\u002FUChatPrompt>\n\u003C\u002Ftemplate>\n",[987,3100,3101,3128,3149,3183,3202,3227,3231,3251,3255,3273,3286,3301,3306,3312,3316,3329,3361,3365,3379,3384,3393,3397,3406,3414,3429,3443,3448,3475,3483,3513,3562,3567,3576,3591,3606,3621,3627,3636,3650,3665,3680,3686,3697,3702,3710,3725,3739,3753,3759,3764,3788,3795,3810,3823,3837,3850,3855,3887,3893,3903,3912,3922,3932,3943,3948,3956,3971,3986,4001,4006,4014,4028,4043,4058,4064,4074],{"__ignoreMap":1125},[1129,3102,3103,3106,3109,3112,3115,3118,3121,3123,3125],{"class":1131,"line":1132},[1129,3104,3105],{"class":1241},"\u003C",[1129,3107,3108],{"class":1355},"script",[1129,3110,3111],{"class":1313}," setup",[1129,3113,3114],{"class":1313}," lang",[1129,3116,3117],{"class":1241},"=",[1129,3119,3120],{"class":1241},"\"",[1129,3122,1230],{"class":1138},[1129,3124,3120],{"class":1241},[1129,3126,3127],{"class":1241},">\n",[1129,3129,3130,3132,3134,3136,3139,3141,3143,3145,3147],{"class":1131,"line":1270},[1129,3131,1238],{"class":1237},[1129,3133,2823],{"class":1237},[1129,3135,1242],{"class":1241},[1129,3137,3138],{"class":1245}," UIMessage",[1129,3140,1255],{"class":1241},[1129,3142,1258],{"class":1237},[1129,3144,1261],{"class":1241},[1129,3146,1264],{"class":1138},[1129,3148,1267],{"class":1241},[1129,3150,3151,3153,3155,3158,3160,3163,3165,3168,3170,3173,3175,3177,3179,3181],{"class":1131,"line":1291},[1129,3152,1238],{"class":1237},[1129,3154,1242],{"class":1241},[1129,3156,3157],{"class":1245}," isReasoningUIPart",[1129,3159,1249],{"class":1241},[1129,3161,3162],{"class":1245}," isTextUIPart",[1129,3164,1249],{"class":1241},[1129,3166,3167],{"class":1245}," isToolUIPart",[1129,3169,1249],{"class":1241},[1129,3171,3172],{"class":1245}," getToolName",[1129,3174,1255],{"class":1241},[1129,3176,1258],{"class":1237},[1129,3178,1261],{"class":1241},[1129,3180,1264],{"class":1138},[1129,3182,1267],{"class":1241},[1129,3184,3185,3187,3189,3192,3194,3196,3198,3200],{"class":1131,"line":1297},[1129,3186,1238],{"class":1237},[1129,3188,1242],{"class":1241},[1129,3190,3191],{"class":1245}," Chat",[1129,3193,1255],{"class":1241},[1129,3195,1258],{"class":1237},[1129,3197,1261],{"class":1241},[1129,3199,3093],{"class":1138},[1129,3201,1267],{"class":1241},[1129,3203,3204,3206,3208,3211,3213,3216,3218,3220,3222,3225],{"class":1131,"line":1333},[1129,3205,1238],{"class":1237},[1129,3207,1242],{"class":1241},[1129,3209,3210],{"class":1245}," isPartStreaming",[1129,3212,1249],{"class":1241},[1129,3214,3215],{"class":1245}," isToolStreaming",[1129,3217,1255],{"class":1241},[1129,3219,1258],{"class":1237},[1129,3221,1261],{"class":1241},[1129,3223,3224],{"class":1138},"@nuxt\u002Fui\u002Futils\u002Fai",[1129,3226,1267],{"class":1241},[1129,3228,3229],{"class":1131,"line":1363},[1129,3230,1294],{"emptyLinePlaceholder":21},[1129,3232,3233,3236,3239,3241,3244,3246,3249],{"class":1131,"line":1368},[1129,3234,3235],{"class":1313},"const",[1129,3237,3238],{"class":1245}," input ",[1129,3240,3117],{"class":1241},[1129,3242,3243],{"class":1306}," ref",[1129,3245,1310],{"class":1245},[1129,3247,3248],{"class":1241},"''",[1129,3250,1360],{"class":1245},[1129,3252,3253],{"class":1131,"line":1381},[1129,3254,1294],{"emptyLinePlaceholder":21},[1129,3256,3257,3259,3262,3264,3267,3269,3271],{"class":1131,"line":1407},[1129,3258,3235],{"class":1313},[1129,3260,3261],{"class":1245}," chat ",[1129,3263,3117],{"class":1241},[1129,3265,3266],{"class":1241}," new",[1129,3268,3191],{"class":1306},[1129,3270,1310],{"class":1245},[1129,3272,1378],{"class":1241},[1129,3274,3275,3278,3280,3282,3284],{"class":1131,"line":1421},[1129,3276,3277],{"class":1355},"  onError",[1129,3279,1310],{"class":1241},[1129,3281,3025],{"class":1320},[1129,3283,1324],{"class":1241},[1129,3285,1330],{"class":1241},[1129,3287,3288,3291,3293,3295,3297,3299],{"class":1131,"line":1438},[1129,3289,3290],{"class":1245},"    console",[1129,3292,1465],{"class":1241},[1129,3294,3025],{"class":1306},[1129,3296,1310],{"class":1355},[1129,3298,3025],{"class":1245},[1129,3300,1360],{"class":1355},[1129,3302,3303],{"class":1131,"line":1457},[1129,3304,3305],{"class":1241},"  }\n",[1129,3307,3308,3310],{"class":1131,"line":1474},[1129,3309,1477],{"class":1241},[1129,3311,1360],{"class":1245},[1129,3313,3314],{"class":1131,"line":1703},[1129,3315,1294],{"emptyLinePlaceholder":21},[1129,3317,3318,3321,3324,3327],{"class":1131,"line":1713},[1129,3319,3320],{"class":1313},"function",[1129,3322,3323],{"class":1306}," onSubmit",[1129,3325,3326],{"class":1241},"()",[1129,3328,1330],{"class":1241},[1129,3330,3331,3334,3336,3339,3341,3344,3347,3349,3352,3354,3357,3359],{"class":1131,"line":1728},[1129,3332,3333],{"class":1245},"  chat",[1129,3335,1465],{"class":1241},[1129,3337,3338],{"class":1306},"sendMessage",[1129,3340,1310],{"class":1355},[1129,3342,3343],{"class":1241},"{",[1129,3345,3346],{"class":1355}," text",[1129,3348,1387],{"class":1241},[1129,3350,3351],{"class":1245}," input",[1129,3353,1465],{"class":1241},[1129,3355,3356],{"class":1245},"value",[1129,3358,1255],{"class":1241},[1129,3360,1360],{"class":1355},[1129,3362,3363],{"class":1131,"line":1734},[1129,3364,1294],{"emptyLinePlaceholder":21},[1129,3366,3367,3370,3372,3374,3376],{"class":1131,"line":1749},[1129,3368,3369],{"class":1245},"  input",[1129,3371,1465],{"class":1241},[1129,3373,3356],{"class":1245},[1129,3375,1346],{"class":1241},[1129,3377,3378],{"class":1241}," ''\n",[1129,3380,3381],{"class":1131,"line":1755},[1129,3382,3383],{"class":1241},"}\n",[1129,3385,3386,3389,3391],{"class":1131,"line":1765},[1129,3387,3388],{"class":1241},"\u003C\u002F",[1129,3390,3108],{"class":1355},[1129,3392,3127],{"class":1241},[1129,3394,3395],{"class":1131,"line":1775},[1129,3396,1294],{"emptyLinePlaceholder":21},[1129,3398,3399,3401,3404],{"class":1131,"line":1789},[1129,3400,3105],{"class":1241},[1129,3402,3403],{"class":1355},"template",[1129,3405,3127],{"class":1241},[1129,3407,3408,3411],{"class":1131,"line":1803},[1129,3409,3410],{"class":1241},"  \u003C",[1129,3412,3413],{"class":1355},"UChatMessages\n",[1129,3415,3416,3419,3421,3423,3426],{"class":1131,"line":1809},[1129,3417,3418],{"class":1313},"    :messages",[1129,3420,3117],{"class":1241},[1129,3422,3120],{"class":1241},[1129,3424,3425],{"class":1138},"chat.messages",[1129,3427,3428],{"class":1241},"\"\n",[1129,3430,3431,3434,3436,3438,3441],{"class":1131,"line":1814},[1129,3432,3433],{"class":1313},"    :status",[1129,3435,3117],{"class":1241},[1129,3437,3120],{"class":1241},[1129,3439,3440],{"class":1138},"chat.status",[1129,3442,3428],{"class":1241},[1129,3444,3445],{"class":1131,"line":1824},[1129,3446,3447],{"class":1241},"  >\n",[1129,3449,3450,3453,3455,3458,3460,3462,3464,3466,3469,3471,3473],{"class":1131,"line":1840},[1129,3451,3452],{"class":1241},"    \u003C",[1129,3454,3403],{"class":1355},[1129,3456,3457],{"class":1241}," #",[1129,3459,371],{"class":1313},[1129,3461,3117],{"class":1241},[1129,3463,3120],{"class":1241},[1129,3465,3343],{"class":1241},[1129,3467,3468],{"class":1245}," message ",[1129,3470,1477],{"class":1241},[1129,3472,3120],{"class":1241},[1129,3474,3127],{"class":1241},[1129,3476,3477,3480],{"class":1131,"line":1855},[1129,3478,3479],{"class":1241},"      \u003C",[1129,3481,3482],{"class":1355},"template\n",[1129,3484,3485,3488,3490,3492,3495,3497,3500,3503,3506,3508,3511],{"class":1131,"line":1861},[1129,3486,3487],{"class":1237},"        v-for",[1129,3489,3117],{"class":1241},[1129,3491,3120],{"class":1241},[1129,3493,3494],{"class":1245},"(part",[1129,3496,1249],{"class":1241},[1129,3498,3499],{"class":1245}," index) ",[1129,3501,3502],{"class":1241},"in",[1129,3504,3505],{"class":1245}," message",[1129,3507,1465],{"class":1241},[1129,3509,3510],{"class":1245},"parts",[1129,3512,3428],{"class":1241},[1129,3514,3515,3518,3521,3523,3526,3529,3531,3534,3536,3539,3542,3545,3547,3550,3552,3554,3556,3559],{"class":1131,"line":1867},[1129,3516,3517],{"class":1241},"        :",[1129,3519,3520],{"class":1313},"key",[1129,3522,3117],{"class":1241},[1129,3524,3525],{"class":1241},"\"`${",[1129,3527,3528],{"class":1245},"message",[1129,3530,1465],{"class":1241},[1129,3532,3533],{"class":1245},"id",[1129,3535,1477],{"class":1241},[1129,3537,3538],{"class":1138},"-",[1129,3540,3541],{"class":1241},"${",[1129,3543,3544],{"class":1245},"part",[1129,3546,1465],{"class":1241},[1129,3548,3549],{"class":1245},"type",[1129,3551,1477],{"class":1241},[1129,3553,3538],{"class":1138},[1129,3555,3541],{"class":1241},[1129,3557,3558],{"class":1245},"index",[1129,3560,3561],{"class":1241},"}`\"\n",[1129,3563,3564],{"class":1131,"line":1880},[1129,3565,3566],{"class":1241},"      >\n",[1129,3568,3570,3573],{"class":1131,"line":3569},32,[1129,3571,3572],{"class":1241},"        \u003C",[1129,3574,3575],{"class":1355},"UChatReasoning\n",[1129,3577,3579,3582,3584,3586,3589],{"class":1131,"line":3578},33,[1129,3580,3581],{"class":1313},"          v-if",[1129,3583,3117],{"class":1241},[1129,3585,3120],{"class":1241},[1129,3587,3588],{"class":1138},"isReasoningUIPart(part)",[1129,3590,3428],{"class":1241},[1129,3592,3594,3597,3599,3601,3604],{"class":1131,"line":3593},34,[1129,3595,3596],{"class":1313},"          :text",[1129,3598,3117],{"class":1241},[1129,3600,3120],{"class":1241},[1129,3602,3603],{"class":1138},"part.text",[1129,3605,3428],{"class":1241},[1129,3607,3609,3612,3614,3616,3619],{"class":1131,"line":3608},35,[1129,3610,3611],{"class":1313},"          :streaming",[1129,3613,3117],{"class":1241},[1129,3615,3120],{"class":1241},[1129,3617,3618],{"class":1138},"isPartStreaming(part)",[1129,3620,3428],{"class":1241},[1129,3622,3624],{"class":1131,"line":3623},36,[1129,3625,3626],{"class":1241},"        >\n",[1129,3628,3630,3633],{"class":1131,"line":3629},37,[1129,3631,3632],{"class":1241},"          \u003C",[1129,3634,3635],{"class":1355},"MDC\n",[1129,3637,3639,3642,3644,3646,3648],{"class":1131,"line":3638},38,[1129,3640,3641],{"class":1313},"            :value",[1129,3643,3117],{"class":1241},[1129,3645,3120],{"class":1241},[1129,3647,3603],{"class":1138},[1129,3649,3428],{"class":1241},[1129,3651,3653,3656,3658,3660,3663],{"class":1131,"line":3652},39,[1129,3654,3655],{"class":1313},"            :cache-key",[1129,3657,3117],{"class":1241},[1129,3659,3120],{"class":1241},[1129,3661,3662],{"class":1138},"`reasoning-${message.id}-${index}`",[1129,3664,3428],{"class":1241},[1129,3666,3668,3671,3673,3675,3678],{"class":1131,"line":3667},40,[1129,3669,3670],{"class":1313},"            class",[1129,3672,3117],{"class":1241},[1129,3674,3120],{"class":1241},[1129,3676,3677],{"class":1138},"*:first:mt-0 *:last:mb-0",[1129,3679,3428],{"class":1241},[1129,3681,3683],{"class":1131,"line":3682},41,[1129,3684,3685],{"class":1241},"          \u002F>\n",[1129,3687,3689,3692,3695],{"class":1131,"line":3688},42,[1129,3690,3691],{"class":1241},"        \u003C\u002F",[1129,3693,3694],{"class":1355},"UChatReasoning",[1129,3696,3127],{"class":1241},[1129,3698,3700],{"class":1131,"line":3699},43,[1129,3701,1294],{"emptyLinePlaceholder":21},[1129,3703,3705,3707],{"class":1131,"line":3704},44,[1129,3706,3572],{"class":1241},[1129,3708,3709],{"class":1355},"UChatTool\n",[1129,3711,3713,3716,3718,3720,3723],{"class":1131,"line":3712},45,[1129,3714,3715],{"class":1313},"          v-else-if",[1129,3717,3117],{"class":1241},[1129,3719,3120],{"class":1241},[1129,3721,3722],{"class":1138},"isToolUIPart(part)",[1129,3724,3428],{"class":1241},[1129,3726,3728,3730,3732,3734,3737],{"class":1131,"line":3727},46,[1129,3729,3596],{"class":1313},[1129,3731,3117],{"class":1241},[1129,3733,3120],{"class":1241},[1129,3735,3736],{"class":1138},"getToolName(part)",[1129,3738,3428],{"class":1241},[1129,3740,3742,3744,3746,3748,3751],{"class":1131,"line":3741},47,[1129,3743,3611],{"class":1313},[1129,3745,3117],{"class":1241},[1129,3747,3120],{"class":1241},[1129,3749,3750],{"class":1138},"isToolStreaming(part)",[1129,3752,3428],{"class":1241},[1129,3754,3756],{"class":1131,"line":3755},48,[1129,3757,3758],{"class":1241},"        \u002F>\n",[1129,3760,3762],{"class":1131,"line":3761},49,[1129,3763,1294],{"emptyLinePlaceholder":21},[1129,3765,3767,3769,3771,3774,3776,3778,3781,3784,3786],{"class":1131,"line":3766},50,[1129,3768,3572],{"class":1241},[1129,3770,3403],{"class":1355},[1129,3772,3773],{"class":1237}," v-else-if",[1129,3775,3117],{"class":1241},[1129,3777,3120],{"class":1241},[1129,3779,3780],{"class":1306},"isTextUIPart",[1129,3782,3783],{"class":1245},"(part)",[1129,3785,3120],{"class":1241},[1129,3787,3127],{"class":1241},[1129,3789,3791,3793],{"class":1131,"line":3790},51,[1129,3792,3632],{"class":1241},[1129,3794,3635],{"class":1355},[1129,3796,3798,3801,3803,3805,3808],{"class":1131,"line":3797},52,[1129,3799,3800],{"class":1313},"            v-if",[1129,3802,3117],{"class":1241},[1129,3804,3120],{"class":1241},[1129,3806,3807],{"class":1138},"message.role === 'assistant'",[1129,3809,3428],{"class":1241},[1129,3811,3813,3815,3817,3819,3821],{"class":1131,"line":3812},53,[1129,3814,3641],{"class":1313},[1129,3816,3117],{"class":1241},[1129,3818,3120],{"class":1241},[1129,3820,3603],{"class":1138},[1129,3822,3428],{"class":1241},[1129,3824,3826,3828,3830,3832,3835],{"class":1131,"line":3825},54,[1129,3827,3655],{"class":1313},[1129,3829,3117],{"class":1241},[1129,3831,3120],{"class":1241},[1129,3833,3834],{"class":1138},"`${message.id}-${index}`",[1129,3836,3428],{"class":1241},[1129,3838,3840,3842,3844,3846,3848],{"class":1131,"line":3839},55,[1129,3841,3670],{"class":1313},[1129,3843,3117],{"class":1241},[1129,3845,3120],{"class":1241},[1129,3847,3677],{"class":1138},[1129,3849,3428],{"class":1241},[1129,3851,3853],{"class":1131,"line":3852},56,[1129,3854,3685],{"class":1241},[1129,3856,3858,3860,3862,3864,3866,3868,3871,3873,3876,3878,3880,3883,3885],{"class":1131,"line":3857},57,[1129,3859,3632],{"class":1241},[1129,3861,964],{"class":1355},[1129,3863,3773],{"class":1313},[1129,3865,3117],{"class":1241},[1129,3867,3120],{"class":1241},[1129,3869,3870],{"class":1138},"message.role === 'user'",[1129,3872,3120],{"class":1241},[1129,3874,3875],{"class":1313}," class",[1129,3877,3117],{"class":1241},[1129,3879,3120],{"class":1241},[1129,3881,3882],{"class":1138},"whitespace-pre-wrap",[1129,3884,3120],{"class":1241},[1129,3886,3127],{"class":1241},[1129,3888,3890],{"class":1131,"line":3889},58,[1129,3891,3892],{"class":1245},"            {{ part.text }}\n",[1129,3894,3896,3899,3901],{"class":1131,"line":3895},59,[1129,3897,3898],{"class":1241},"          \u003C\u002F",[1129,3900,964],{"class":1355},[1129,3902,3127],{"class":1241},[1129,3904,3906,3908,3910],{"class":1131,"line":3905},60,[1129,3907,3691],{"class":1241},[1129,3909,3403],{"class":1355},[1129,3911,3127],{"class":1241},[1129,3913,3915,3918,3920],{"class":1131,"line":3914},61,[1129,3916,3917],{"class":1241},"      \u003C\u002F",[1129,3919,3403],{"class":1355},[1129,3921,3127],{"class":1241},[1129,3923,3925,3928,3930],{"class":1131,"line":3924},62,[1129,3926,3927],{"class":1241},"    \u003C\u002F",[1129,3929,3403],{"class":1355},[1129,3931,3127],{"class":1241},[1129,3933,3935,3938,3941],{"class":1131,"line":3934},63,[1129,3936,3937],{"class":1241},"  \u003C\u002F",[1129,3939,3940],{"class":1355},"UChatMessages",[1129,3942,3127],{"class":1241},[1129,3944,3946],{"class":1131,"line":3945},64,[1129,3947,1294],{"emptyLinePlaceholder":21},[1129,3949,3951,3953],{"class":1131,"line":3950},65,[1129,3952,3410],{"class":1241},[1129,3954,3955],{"class":1355},"UChatPrompt\n",[1129,3957,3959,3962,3964,3966,3969],{"class":1131,"line":3958},66,[1129,3960,3961],{"class":1313},"    v-model",[1129,3963,3117],{"class":1241},[1129,3965,3120],{"class":1241},[1129,3967,3968],{"class":1138},"input",[1129,3970,3428],{"class":1241},[1129,3972,3974,3977,3979,3981,3984],{"class":1131,"line":3973},67,[1129,3975,3976],{"class":1313},"    :error",[1129,3978,3117],{"class":1241},[1129,3980,3120],{"class":1241},[1129,3982,3983],{"class":1138},"chat.error",[1129,3985,3428],{"class":1241},[1129,3987,3989,3992,3994,3996,3999],{"class":1131,"line":3988},68,[1129,3990,3991],{"class":1313},"    @submit",[1129,3993,3117],{"class":1241},[1129,3995,3120],{"class":1241},[1129,3997,3998],{"class":1138},"onSubmit",[1129,4000,3428],{"class":1241},[1129,4002,4004],{"class":1131,"line":4003},69,[1129,4005,3447],{"class":1241},[1129,4007,4009,4011],{"class":1131,"line":4008},70,[1129,4010,3452],{"class":1241},[1129,4012,4013],{"class":1355},"UChatPromptSubmit\n",[1129,4015,4017,4020,4022,4024,4026],{"class":1131,"line":4016},71,[1129,4018,4019],{"class":1313},"      :status",[1129,4021,3117],{"class":1241},[1129,4023,3120],{"class":1241},[1129,4025,3440],{"class":1138},[1129,4027,3428],{"class":1241},[1129,4029,4031,4034,4036,4038,4041],{"class":1131,"line":4030},72,[1129,4032,4033],{"class":1313},"      @stop",[1129,4035,3117],{"class":1241},[1129,4037,3120],{"class":1241},[1129,4039,4040],{"class":1138},"chat.stop()",[1129,4042,3428],{"class":1241},[1129,4044,4046,4049,4051,4053,4056],{"class":1131,"line":4045},73,[1129,4047,4048],{"class":1313},"      @reload",[1129,4050,3117],{"class":1241},[1129,4052,3120],{"class":1241},[1129,4054,4055],{"class":1138},"chat.regenerate()",[1129,4057,3428],{"class":1241},[1129,4059,4061],{"class":1131,"line":4060},74,[1129,4062,4063],{"class":1241},"    \u002F>\n",[1129,4065,4067,4069,4072],{"class":1131,"line":4066},75,[1129,4068,3937],{"class":1241},[1129,4070,4071],{"class":1355},"UChatPrompt",[1129,4073,3127],{"class":1241},[1129,4075,4077,4079,4081],{"class":1131,"line":4076},76,[1129,4078,3388],{"class":1241},[1129,4080,3403],{"class":1355},[1129,4082,3127],{"class":1241},[4084,4085,4086],"note",{},[964,4087,4088,4089,4092,4093,4100],{},"In this example, we use the ",[987,4090,4091],{},"MDC"," component from ",[968,4094,4097],{"href":4095,"rel":4096},"https:\u002F\u002Fgithub.com\u002Fnuxt-modules\u002Fmdc",[972],[987,4098,4099],{},"@nuxtjs\u002Fmdc"," to render messages as Markdown. As Nuxt UI provides pre-styled prose components, your content will be automatically styled.",[4102,4103,4105],"tip",{"to":4104},"\u002Fblog\u002Fhow-to-build-an-ai-chat",[964,4106,4107,4108,4112],{},"Read the full ",[4109,4110,4111],"strong",{},"Build an AI Chatbot"," tutorial for a step-by-step guide.",[4114,4115,4116],"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 .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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":1125,"searchDepth":1270,"depth":1270,"links":4118},[4119,4120,4121,4126],{"id":887,"depth":1270,"text":71},{"id":1096,"depth":1270,"text":20},{"id":1206,"depth":1270,"text":1207,"children":4122},[4123,4124,4125],{"id":1483,"depth":1291,"text":1484},{"id":1887,"depth":1291,"text":1888},{"id":2611,"depth":1291,"text":2612},{"id":3083,"depth":1270,"text":3084},"md",[4129],{"label":4130,"icon":4131,"to":970,"target":4132},"AI SDK","i-simple-icons-vercel","_blank",{},{"title":259,"description":263},"vUwhHAZt3ps1aUecNZRpOPUJ09uc1OXdSdBgwOXofR0",{"data":4137,"body":4138},{},{"type":4139,"children":4140},"root",[4141],{"type":178,"tag":964,"props":4142,"children":4143},{},[4144],{"type":4145,"value":263},"text",1776270233493]