[{"data":1,"prerenderedAt":4130},["ShallowReactive",2],{"navigation":3,"-docs-components-chat":958,"-docs-components-chat-description":4120},[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":4112,"framework":16,"index":21,"links":4113,"meta":4117,"navigation":16,"path":260,"seo":4118,"stem":261,"__hash__":4119},"docs\u002Fdocs\u002F2.components\u002Fchat.md",{"type":961,"value":962,"toc":4102},"minimark",[963,975,1000,1003,1095,1098,1112,1115,1205,1209,1226,1481,1486,1515,1886,1890,1905,2610,2614,2626,3067,3071,3081,4068,4086,4098],[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,991,992,999],{},"Check out the ",[968,983,987],{"href":984,"rel":985,"target":986},"https:\u002F\u002Fgithub.com\u002Fnuxt-ui-templates\u002Fchat",[972],"_blank",[988,989,990],"code",{},"Nuxt"," and ",[968,993,996],{"href":994,"rel":995,"target":986},"https:\u002F\u002Fgithub.com\u002Fnuxt-ui-templates\u002Fchat-vue",[972],[988,997,998],{},"Vue"," AI Chat templates on GitHub for production-ready implementations.",[1001,1002,71],"h2",{"id":887},[1004,1005,1006,1019],"table",{},[1007,1008,1009],"thead",{},[1010,1011,1012,1016],"tr",{},[1013,1014,1015],"th",{},"Component",[1013,1017,1018],{},"Description",[1020,1021,1022,1032,1041,1050,1059,1068,1077,1086],"tbody",{},[1010,1023,1024,1029],{},[1025,1026,1027],"td",{},[968,1028,270],{"href":271},[1025,1030,1031],{},"Scrollable message list with auto-scroll and loading indicator.",[1010,1033,1034,1038],{},[1025,1035,1036],{},[968,1037,265],{"href":266},[1025,1039,1040],{},"Individual message bubble with avatar, actions, and slots.",[1010,1042,1043,1047],{},[1025,1044,1045],{},[968,1046,280],{"href":281},[1025,1048,1049],{},"Enhanced textarea for submitting prompts.",[1010,1051,1052,1056],{},[1025,1053,1054],{},[968,1055,285],{"href":286},[1025,1057,1058],{},"Submit button with automatic status handling.",[1010,1060,1061,1065],{},[1025,1062,1063],{},[968,1064,290],{"href":291},[1025,1066,1067],{},"Collapsible block for AI reasoning \u002F thinking process.",[1010,1069,1070,1074],{},[1025,1071,1072],{},[968,1073,301],{"href":302},[1025,1075,1076],{},"Collapsible block for AI tool invocation status.",[1010,1078,1079,1083],{},[1025,1080,1081],{},[968,1082,296],{"href":297},[1025,1084,1085],{},"Text shimmer animation for streaming states.",[1010,1087,1088,1092],{},[1025,1089,1090],{},[968,1091,275],{"href":276},[1025,1093,1094],{},"Layout wrapper for embedding chat in modals or drawers.",[1001,1096,20],{"id":1097},"installation",[964,1099,1100,1101,1104,1105,1111],{},"The Chat components are designed to be used with the ",[968,1102,973],{"href":970,"rel":1103},[972],", specifically the ",[968,1106,1109],{"href":1107,"rel":1108},"https:\u002F\u002Fai-sdk.dev\u002Fdocs\u002Freference\u002Fai-sdk-ui\u002Fuse-chat",[972],[988,1110,259],{}," class for managing chat state and streaming responses.",[964,1113,1114],{},"Install the required dependencies:",[1116,1117,1119,1150,1168,1187],"code-group",{"sync":1118},"pm",[1120,1121,1127],"pre",{"className":1122,"code":1123,"filename":1124,"language":1125,"meta":1126,"style":1126},"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","",[988,1128,1129],{"__ignoreMap":1126},[1130,1131,1134,1137,1141,1144,1147],"span",{"class":1132,"line":1133},"line",1,[1130,1135,1124],{"class":1136},"sBMFI",[1130,1138,1140],{"class":1139},"sfazB"," add",[1130,1142,1143],{"class":1139}," ai",[1130,1145,1146],{"class":1139}," @ai-sdk\u002Fgateway",[1130,1148,1149],{"class":1139}," @ai-sdk\u002Fvue\n",[1120,1151,1154],{"className":1122,"code":1152,"filename":1153,"language":1125,"meta":1126,"style":1126},"yarn add ai @ai-sdk\u002Fgateway @ai-sdk\u002Fvue\n","yarn",[988,1155,1156],{"__ignoreMap":1126},[1130,1157,1158,1160,1162,1164,1166],{"class":1132,"line":1133},[1130,1159,1153],{"class":1136},[1130,1161,1140],{"class":1139},[1130,1163,1143],{"class":1139},[1130,1165,1146],{"class":1139},[1130,1167,1149],{"class":1139},[1120,1169,1172],{"className":1122,"code":1170,"filename":1171,"language":1125,"meta":1126,"style":1126},"npm install ai @ai-sdk\u002Fgateway @ai-sdk\u002Fvue\n","npm",[988,1173,1174],{"__ignoreMap":1126},[1130,1175,1176,1178,1181,1183,1185],{"class":1132,"line":1133},[1130,1177,1171],{"class":1136},[1130,1179,1180],{"class":1139}," install",[1130,1182,1143],{"class":1139},[1130,1184,1146],{"class":1139},[1130,1186,1149],{"class":1139},[1120,1188,1191],{"className":1122,"code":1189,"filename":1190,"language":1125,"meta":1126,"style":1126},"bun add ai @ai-sdk\u002Fgateway @ai-sdk\u002Fvue\n","bun",[988,1192,1193],{"__ignoreMap":1126},[1130,1194,1195,1197,1199,1201,1203],{"class":1132,"line":1133},[1130,1196,1190],{"class":1136},[1130,1198,1140],{"class":1139},[1130,1200,1143],{"class":1139},[1130,1202,1146],{"class":1139},[1130,1204,1149],{"class":1139},[1001,1206,1208],{"id":1207},"server-setup","Server Setup",[964,1210,1211,1212,1219,1220,1225],{},"Create a server API endpoint to handle chat requests using ",[968,1213,1216],{"href":1214,"rel":1215},"https:\u002F\u002Fai-sdk.dev\u002Fdocs\u002Freference\u002Fai-sdk-core\u002Fstream-text",[972],[988,1217,1218],{},"streamText",". You can use the ",[968,1221,1224],{"href":1222,"rel":1223},"https:\u002F\u002Fvercel.com\u002Fai-gateway",[972],"Vercel AI Gateway"," to access AI models through a centralized endpoint:",[1120,1227,1232],{"className":1228,"code":1229,"filename":1230,"language":1231,"meta":1126,"style":1126},"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",[988,1233,1234,1269,1290,1296,1332,1362,1367,1380,1406,1420,1437,1456,1473],{"__ignoreMap":1126},[1130,1235,1236,1240,1244,1248,1251,1254,1257,1260,1263,1266],{"class":1132,"line":1133},[1130,1237,1239],{"class":1238},"s7zQu","import",[1130,1241,1243],{"class":1242},"sMK4o"," {",[1130,1245,1247],{"class":1246},"sTEyZ"," streamText",[1130,1249,1250],{"class":1242},",",[1130,1252,1253],{"class":1246}," convertToModelMessages",[1130,1255,1256],{"class":1242}," }",[1130,1258,1259],{"class":1238}," from",[1130,1261,1262],{"class":1242}," '",[1130,1264,1265],{"class":1139},"ai",[1130,1267,1268],{"class":1242},"'\n",[1130,1270,1272,1274,1276,1279,1281,1283,1285,1288],{"class":1132,"line":1271},2,[1130,1273,1239],{"class":1238},[1130,1275,1243],{"class":1242},[1130,1277,1278],{"class":1246}," gateway",[1130,1280,1256],{"class":1242},[1130,1282,1259],{"class":1238},[1130,1284,1262],{"class":1242},[1130,1286,1287],{"class":1139},"@ai-sdk\u002Fgateway",[1130,1289,1268],{"class":1242},[1130,1291,1293],{"class":1132,"line":1292},3,[1130,1294,1295],{"emptyLinePlaceholder":21},"\n",[1130,1297,1299,1302,1305,1309,1312,1316,1319,1323,1326,1329],{"class":1132,"line":1298},4,[1130,1300,1301],{"class":1238},"export",[1130,1303,1304],{"class":1238}," default",[1130,1306,1308],{"class":1307},"s2Zo4"," defineEventHandler",[1130,1310,1311],{"class":1246},"(",[1130,1313,1315],{"class":1314},"spNyl","async",[1130,1317,1318],{"class":1242}," (",[1130,1320,1322],{"class":1321},"sHdIc","event",[1130,1324,1325],{"class":1242},")",[1130,1327,1328],{"class":1314}," =>",[1130,1330,1331],{"class":1242}," {\n",[1130,1333,1335,1338,1340,1343,1345,1348,1351,1354,1357,1359],{"class":1132,"line":1334},5,[1130,1336,1337],{"class":1314},"  const",[1130,1339,1243],{"class":1242},[1130,1341,1342],{"class":1246}," messages",[1130,1344,1256],{"class":1242},[1130,1346,1347],{"class":1242}," =",[1130,1349,1350],{"class":1238}," await",[1130,1352,1353],{"class":1307}," readBody",[1130,1355,1311],{"class":1356},"swJcz",[1130,1358,1322],{"class":1246},[1130,1360,1361],{"class":1356},")\n",[1130,1363,1365],{"class":1132,"line":1364},6,[1130,1366,1295],{"emptyLinePlaceholder":21},[1130,1368,1370,1373,1375,1377],{"class":1132,"line":1369},7,[1130,1371,1372],{"class":1238},"  return",[1130,1374,1247],{"class":1307},[1130,1376,1311],{"class":1356},[1130,1378,1379],{"class":1242},"{\n",[1130,1381,1383,1386,1389,1391,1393,1396,1399,1401,1403],{"class":1132,"line":1382},8,[1130,1384,1385],{"class":1356},"    model",[1130,1387,1388],{"class":1242},":",[1130,1390,1278],{"class":1307},[1130,1392,1311],{"class":1356},[1130,1394,1395],{"class":1242},"'",[1130,1397,1398],{"class":1139},"anthropic\u002Fclaude-sonnet-4.6",[1130,1400,1395],{"class":1242},[1130,1402,1325],{"class":1356},[1130,1404,1405],{"class":1242},",\n",[1130,1407,1409,1412,1414,1418],{"class":1132,"line":1408},9,[1130,1410,1411],{"class":1356},"    maxOutputTokens",[1130,1413,1388],{"class":1242},[1130,1415,1417],{"class":1416},"sbssI"," 10000",[1130,1419,1405],{"class":1242},[1130,1421,1423,1426,1428,1430,1433,1435],{"class":1132,"line":1422},10,[1130,1424,1425],{"class":1356},"    system",[1130,1427,1388],{"class":1242},[1130,1429,1262],{"class":1242},[1130,1431,1432],{"class":1139},"You are a helpful assistant.",[1130,1434,1395],{"class":1242},[1130,1436,1405],{"class":1242},[1130,1438,1440,1443,1445,1447,1449,1451,1454],{"class":1132,"line":1439},11,[1130,1441,1442],{"class":1356},"    messages",[1130,1444,1388],{"class":1242},[1130,1446,1350],{"class":1238},[1130,1448,1253],{"class":1307},[1130,1450,1311],{"class":1356},[1130,1452,1453],{"class":1246},"messages",[1130,1455,1361],{"class":1356},[1130,1457,1459,1462,1464,1467,1470],{"class":1132,"line":1458},12,[1130,1460,1461],{"class":1242},"  }",[1130,1463,1325],{"class":1356},[1130,1465,1466],{"class":1242},".",[1130,1468,1469],{"class":1307},"toUIMessageStreamResponse",[1130,1471,1472],{"class":1356},"()\n",[1130,1474,1476,1479],{"class":1132,"line":1475},13,[1130,1477,1478],{"class":1242},"}",[1130,1480,1361],{"class":1246},[1482,1483,1485],"h3",{"id":1484},"reasoning","Reasoning",[964,1487,1488,1489,1493,1494,1497,1498,1503,1504,1503,1509,1514],{},"To enable ",[968,1490,1484],{"href":1491,"rel":1492},"https:\u002F\u002Fai-sdk.dev\u002Fdocs\u002Fai-sdk-ui\u002Fchatbot#reasoning",[972],", configure ",[988,1495,1496],{},"providerOptions"," for your provider (",[968,1499,1502],{"href":1500,"rel":1501},"https:\u002F\u002Fai-sdk.dev\u002Fdocs\u002Fguides\u002Fproviders\u002Fanthropic#reasoning",[972],"Anthropic",", ",[968,1505,1508],{"href":1506,"rel":1507},"https:\u002F\u002Fai-sdk.dev\u002Fproviders\u002Fai-sdk-providers\u002Fgoogle-generative-ai#thinking",[972],"Google",[968,1510,1513],{"href":1511,"rel":1512},"https:\u002F\u002Fai-sdk.dev\u002Fdocs\u002Fguides\u002Fproviders\u002Fopenai#reasoning",[972],"OpenAI","):",[1120,1516,1518],{"className":1228,"code":1517,"filename":1230,"language":1231,"meta":1126,"style":1126},"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",[988,1519,1520,1542,1560,1564,1586,1608,1612,1622,1642,1652,1666,1684,1693,1702,1712,1727,1733,1748,1754,1764,1774,1788,1802,1808,1813,1823,1839,1854,1860,1866,1879],{"__ignoreMap":1126},[1130,1521,1522,1524,1526,1528,1530,1532,1534,1536,1538,1540],{"class":1132,"line":1133},[1130,1523,1239],{"class":1238},[1130,1525,1243],{"class":1242},[1130,1527,1247],{"class":1246},[1130,1529,1250],{"class":1242},[1130,1531,1253],{"class":1246},[1130,1533,1256],{"class":1242},[1130,1535,1259],{"class":1238},[1130,1537,1262],{"class":1242},[1130,1539,1265],{"class":1139},[1130,1541,1268],{"class":1242},[1130,1543,1544,1546,1548,1550,1552,1554,1556,1558],{"class":1132,"line":1271},[1130,1545,1239],{"class":1238},[1130,1547,1243],{"class":1242},[1130,1549,1278],{"class":1246},[1130,1551,1256],{"class":1242},[1130,1553,1259],{"class":1238},[1130,1555,1262],{"class":1242},[1130,1557,1287],{"class":1139},[1130,1559,1268],{"class":1242},[1130,1561,1562],{"class":1132,"line":1292},[1130,1563,1295],{"emptyLinePlaceholder":21},[1130,1565,1566,1568,1570,1572,1574,1576,1578,1580,1582,1584],{"class":1132,"line":1298},[1130,1567,1301],{"class":1238},[1130,1569,1304],{"class":1238},[1130,1571,1308],{"class":1307},[1130,1573,1311],{"class":1246},[1130,1575,1315],{"class":1314},[1130,1577,1318],{"class":1242},[1130,1579,1322],{"class":1321},[1130,1581,1325],{"class":1242},[1130,1583,1328],{"class":1314},[1130,1585,1331],{"class":1242},[1130,1587,1588,1590,1592,1594,1596,1598,1600,1602,1604,1606],{"class":1132,"line":1334},[1130,1589,1337],{"class":1314},[1130,1591,1243],{"class":1242},[1130,1593,1342],{"class":1246},[1130,1595,1256],{"class":1242},[1130,1597,1347],{"class":1242},[1130,1599,1350],{"class":1238},[1130,1601,1353],{"class":1307},[1130,1603,1311],{"class":1356},[1130,1605,1322],{"class":1246},[1130,1607,1361],{"class":1356},[1130,1609,1610],{"class":1132,"line":1364},[1130,1611,1295],{"emptyLinePlaceholder":21},[1130,1613,1614,1616,1618,1620],{"class":1132,"line":1369},[1130,1615,1372],{"class":1238},[1130,1617,1247],{"class":1307},[1130,1619,1311],{"class":1356},[1130,1621,1379],{"class":1242},[1130,1623,1624,1626,1628,1630,1632,1634,1636,1638,1640],{"class":1132,"line":1382},[1130,1625,1385],{"class":1356},[1130,1627,1388],{"class":1242},[1130,1629,1278],{"class":1307},[1130,1631,1311],{"class":1356},[1130,1633,1395],{"class":1242},[1130,1635,1398],{"class":1139},[1130,1637,1395],{"class":1242},[1130,1639,1325],{"class":1356},[1130,1641,1405],{"class":1242},[1130,1643,1644,1646,1648,1650],{"class":1132,"line":1408},[1130,1645,1411],{"class":1356},[1130,1647,1388],{"class":1242},[1130,1649,1417],{"class":1416},[1130,1651,1405],{"class":1242},[1130,1653,1654,1656,1658,1660,1662,1664],{"class":1132,"line":1422},[1130,1655,1425],{"class":1356},[1130,1657,1388],{"class":1242},[1130,1659,1262],{"class":1242},[1130,1661,1432],{"class":1139},[1130,1663,1395],{"class":1242},[1130,1665,1405],{"class":1242},[1130,1667,1668,1670,1672,1674,1676,1678,1680,1682],{"class":1132,"line":1439},[1130,1669,1442],{"class":1356},[1130,1671,1388],{"class":1242},[1130,1673,1350],{"class":1238},[1130,1675,1253],{"class":1307},[1130,1677,1311],{"class":1356},[1130,1679,1453],{"class":1246},[1130,1681,1325],{"class":1356},[1130,1683,1405],{"class":1242},[1130,1685,1686,1689,1691],{"class":1132,"line":1458},[1130,1687,1688],{"class":1356},"    providerOptions",[1130,1690,1388],{"class":1242},[1130,1692,1331],{"class":1242},[1130,1694,1695,1698,1700],{"class":1132,"line":1475},[1130,1696,1697],{"class":1356},"      anthropic",[1130,1699,1388],{"class":1242},[1130,1701,1331],{"class":1242},[1130,1703,1705,1708,1710],{"class":1132,"line":1704},14,[1130,1706,1707],{"class":1356},"        thinking",[1130,1709,1388],{"class":1242},[1130,1711,1331],{"class":1242},[1130,1713,1715,1718,1720,1722,1725],{"class":1132,"line":1714},15,[1130,1716,1717],{"class":1356},"          type",[1130,1719,1388],{"class":1242},[1130,1721,1262],{"class":1242},[1130,1723,1724],{"class":1139},"adaptive",[1130,1726,1268],{"class":1242},[1130,1728,1730],{"class":1132,"line":1729},16,[1130,1731,1732],{"class":1242},"        },\n",[1130,1734,1736,1739,1741,1743,1746],{"class":1132,"line":1735},17,[1130,1737,1738],{"class":1356},"        effort",[1130,1740,1388],{"class":1242},[1130,1742,1262],{"class":1242},[1130,1744,1745],{"class":1139},"low",[1130,1747,1268],{"class":1242},[1130,1749,1751],{"class":1132,"line":1750},18,[1130,1752,1753],{"class":1242},"      },\n",[1130,1755,1757,1760,1762],{"class":1132,"line":1756},19,[1130,1758,1759],{"class":1356},"      google",[1130,1761,1388],{"class":1242},[1130,1763,1331],{"class":1242},[1130,1765,1767,1770,1772],{"class":1132,"line":1766},20,[1130,1768,1769],{"class":1356},"        thinkingConfig",[1130,1771,1388],{"class":1242},[1130,1773,1331],{"class":1242},[1130,1775,1777,1780,1782,1786],{"class":1132,"line":1776},21,[1130,1778,1779],{"class":1356},"          includeThoughts",[1130,1781,1388],{"class":1242},[1130,1783,1785],{"class":1784},"sfNiH"," true",[1130,1787,1405],{"class":1242},[1130,1789,1791,1794,1796,1798,1800],{"class":1132,"line":1790},22,[1130,1792,1793],{"class":1356},"          thinkingLevel",[1130,1795,1388],{"class":1242},[1130,1797,1262],{"class":1242},[1130,1799,1745],{"class":1139},[1130,1801,1268],{"class":1242},[1130,1803,1805],{"class":1132,"line":1804},23,[1130,1806,1807],{"class":1242},"        }\n",[1130,1809,1811],{"class":1132,"line":1810},24,[1130,1812,1753],{"class":1242},[1130,1814,1816,1819,1821],{"class":1132,"line":1815},25,[1130,1817,1818],{"class":1356},"      openai",[1130,1820,1388],{"class":1242},[1130,1822,1331],{"class":1242},[1130,1824,1826,1829,1831,1833,1835,1837],{"class":1132,"line":1825},26,[1130,1827,1828],{"class":1356},"        reasoningEffort",[1130,1830,1388],{"class":1242},[1130,1832,1262],{"class":1242},[1130,1834,1745],{"class":1139},[1130,1836,1395],{"class":1242},[1130,1838,1405],{"class":1242},[1130,1840,1842,1845,1847,1849,1852],{"class":1132,"line":1841},27,[1130,1843,1844],{"class":1356},"        reasoningSummary",[1130,1846,1388],{"class":1242},[1130,1848,1262],{"class":1242},[1130,1850,1851],{"class":1139},"detailed",[1130,1853,1268],{"class":1242},[1130,1855,1857],{"class":1132,"line":1856},28,[1130,1858,1859],{"class":1242},"      }\n",[1130,1861,1863],{"class":1132,"line":1862},29,[1130,1864,1865],{"class":1242},"    }\n",[1130,1867,1869,1871,1873,1875,1877],{"class":1132,"line":1868},30,[1130,1870,1461],{"class":1242},[1130,1872,1325],{"class":1356},[1130,1874,1466],{"class":1242},[1130,1876,1469],{"class":1307},[1130,1878,1472],{"class":1356},[1130,1880,1882,1884],{"class":1132,"line":1881},31,[1130,1883,1478],{"class":1242},[1130,1885,1361],{"class":1246},[1482,1887,1889],{"id":1888},"web-search","Web Search",[964,1891,1892,1893,1503,1897,1503,1901,1466],{},"Some providers offer built-in web search tools: ",[968,1894,1502],{"href":1895,"rel":1896},"https:\u002F\u002Fai-sdk.dev\u002Fdocs\u002Fguides\u002Fproviders\u002Fanthropic#web-search-tool",[972],[968,1898,1508],{"href":1899,"rel":1900},"https:\u002F\u002Fai-sdk.dev\u002Fproviders\u002Fai-sdk-providers\u002Fgoogle-generative-ai#google-search",[972],[968,1902,1513],{"href":1903,"rel":1904},"https:\u002F\u002Fai-sdk.dev\u002Fproviders\u002Fai-sdk-providers\u002Fopenai#web-search-tool",[972],[1116,1906,1907,2143,2377],{},[1120,1908,1910],{"className":1228,"code":1909,"filename":1502,"language":1231,"meta":1126,"style":1126},"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",[988,1911,1912,1934,1954,1972,1976,1998,2020,2024,2034,2054,2068,2086,2095,2121,2125,2137],{"__ignoreMap":1126},[1130,1913,1914,1916,1918,1920,1922,1924,1926,1928,1930,1932],{"class":1132,"line":1133},[1130,1915,1239],{"class":1238},[1130,1917,1243],{"class":1242},[1130,1919,1247],{"class":1246},[1130,1921,1250],{"class":1242},[1130,1923,1253],{"class":1246},[1130,1925,1256],{"class":1242},[1130,1927,1259],{"class":1238},[1130,1929,1262],{"class":1242},[1130,1931,1265],{"class":1139},[1130,1933,1268],{"class":1242},[1130,1935,1936,1938,1940,1943,1945,1947,1949,1952],{"class":1132,"line":1271},[1130,1937,1239],{"class":1238},[1130,1939,1243],{"class":1242},[1130,1941,1942],{"class":1246}," anthropic",[1130,1944,1256],{"class":1242},[1130,1946,1259],{"class":1238},[1130,1948,1262],{"class":1242},[1130,1950,1951],{"class":1139},"@ai-sdk\u002Fanthropic",[1130,1953,1268],{"class":1242},[1130,1955,1956,1958,1960,1962,1964,1966,1968,1970],{"class":1132,"line":1292},[1130,1957,1239],{"class":1238},[1130,1959,1243],{"class":1242},[1130,1961,1278],{"class":1246},[1130,1963,1256],{"class":1242},[1130,1965,1259],{"class":1238},[1130,1967,1262],{"class":1242},[1130,1969,1287],{"class":1139},[1130,1971,1268],{"class":1242},[1130,1973,1974],{"class":1132,"line":1298},[1130,1975,1295],{"emptyLinePlaceholder":21},[1130,1977,1978,1980,1982,1984,1986,1988,1990,1992,1994,1996],{"class":1132,"line":1334},[1130,1979,1301],{"class":1238},[1130,1981,1304],{"class":1238},[1130,1983,1308],{"class":1307},[1130,1985,1311],{"class":1246},[1130,1987,1315],{"class":1314},[1130,1989,1318],{"class":1242},[1130,1991,1322],{"class":1321},[1130,1993,1325],{"class":1242},[1130,1995,1328],{"class":1314},[1130,1997,1331],{"class":1242},[1130,1999,2000,2002,2004,2006,2008,2010,2012,2014,2016,2018],{"class":1132,"line":1364},[1130,2001,1337],{"class":1314},[1130,2003,1243],{"class":1242},[1130,2005,1342],{"class":1246},[1130,2007,1256],{"class":1242},[1130,2009,1347],{"class":1242},[1130,2011,1350],{"class":1238},[1130,2013,1353],{"class":1307},[1130,2015,1311],{"class":1356},[1130,2017,1322],{"class":1246},[1130,2019,1361],{"class":1356},[1130,2021,2022],{"class":1132,"line":1369},[1130,2023,1295],{"emptyLinePlaceholder":21},[1130,2025,2026,2028,2030,2032],{"class":1132,"line":1382},[1130,2027,1372],{"class":1238},[1130,2029,1247],{"class":1307},[1130,2031,1311],{"class":1356},[1130,2033,1379],{"class":1242},[1130,2035,2036,2038,2040,2042,2044,2046,2048,2050,2052],{"class":1132,"line":1408},[1130,2037,1385],{"class":1356},[1130,2039,1388],{"class":1242},[1130,2041,1278],{"class":1307},[1130,2043,1311],{"class":1356},[1130,2045,1395],{"class":1242},[1130,2047,1398],{"class":1139},[1130,2049,1395],{"class":1242},[1130,2051,1325],{"class":1356},[1130,2053,1405],{"class":1242},[1130,2055,2056,2058,2060,2062,2064,2066],{"class":1132,"line":1422},[1130,2057,1425],{"class":1356},[1130,2059,1388],{"class":1242},[1130,2061,1262],{"class":1242},[1130,2063,1432],{"class":1139},[1130,2065,1395],{"class":1242},[1130,2067,1405],{"class":1242},[1130,2069,2070,2072,2074,2076,2078,2080,2082,2084],{"class":1132,"line":1439},[1130,2071,1442],{"class":1356},[1130,2073,1388],{"class":1242},[1130,2075,1350],{"class":1238},[1130,2077,1253],{"class":1307},[1130,2079,1311],{"class":1356},[1130,2081,1453],{"class":1246},[1130,2083,1325],{"class":1356},[1130,2085,1405],{"class":1242},[1130,2087,2088,2091,2093],{"class":1132,"line":1458},[1130,2089,2090],{"class":1356},"    tools",[1130,2092,1388],{"class":1242},[1130,2094,1331],{"class":1242},[1130,2096,2097,2100,2102,2104,2106,2109,2111,2114,2116,2119],{"class":1132,"line":1475},[1130,2098,2099],{"class":1356},"      web_search",[1130,2101,1388],{"class":1242},[1130,2103,1942],{"class":1246},[1130,2105,1466],{"class":1242},[1130,2107,2108],{"class":1246},"tools",[1130,2110,1466],{"class":1242},[1130,2112,2113],{"class":1307},"webSearch_20250305",[1130,2115,1311],{"class":1356},[1130,2117,2118],{"class":1242},"{}",[1130,2120,1361],{"class":1356},[1130,2122,2123],{"class":1132,"line":1704},[1130,2124,1865],{"class":1242},[1130,2126,2127,2129,2131,2133,2135],{"class":1132,"line":1714},[1130,2128,1461],{"class":1242},[1130,2130,1325],{"class":1356},[1130,2132,1466],{"class":1242},[1130,2134,1469],{"class":1307},[1130,2136,1472],{"class":1356},[1130,2138,2139,2141],{"class":1132,"line":1729},[1130,2140,1478],{"class":1242},[1130,2142,1361],{"class":1246},[1120,2144,2146],{"className":1228,"code":2145,"filename":1508,"language":1231,"meta":1126,"style":1126},"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",[988,2147,2148,2170,2190,2208,2212,2234,2256,2260,2270,2291,2305,2323,2331,2355,2359,2371],{"__ignoreMap":1126},[1130,2149,2150,2152,2154,2156,2158,2160,2162,2164,2166,2168],{"class":1132,"line":1133},[1130,2151,1239],{"class":1238},[1130,2153,1243],{"class":1242},[1130,2155,1247],{"class":1246},[1130,2157,1250],{"class":1242},[1130,2159,1253],{"class":1246},[1130,2161,1256],{"class":1242},[1130,2163,1259],{"class":1238},[1130,2165,1262],{"class":1242},[1130,2167,1265],{"class":1139},[1130,2169,1268],{"class":1242},[1130,2171,2172,2174,2176,2179,2181,2183,2185,2188],{"class":1132,"line":1271},[1130,2173,1239],{"class":1238},[1130,2175,1243],{"class":1242},[1130,2177,2178],{"class":1246}," google",[1130,2180,1256],{"class":1242},[1130,2182,1259],{"class":1238},[1130,2184,1262],{"class":1242},[1130,2186,2187],{"class":1139},"@ai-sdk\u002Fgoogle",[1130,2189,1268],{"class":1242},[1130,2191,2192,2194,2196,2198,2200,2202,2204,2206],{"class":1132,"line":1292},[1130,2193,1239],{"class":1238},[1130,2195,1243],{"class":1242},[1130,2197,1278],{"class":1246},[1130,2199,1256],{"class":1242},[1130,2201,1259],{"class":1238},[1130,2203,1262],{"class":1242},[1130,2205,1287],{"class":1139},[1130,2207,1268],{"class":1242},[1130,2209,2210],{"class":1132,"line":1298},[1130,2211,1295],{"emptyLinePlaceholder":21},[1130,2213,2214,2216,2218,2220,2222,2224,2226,2228,2230,2232],{"class":1132,"line":1334},[1130,2215,1301],{"class":1238},[1130,2217,1304],{"class":1238},[1130,2219,1308],{"class":1307},[1130,2221,1311],{"class":1246},[1130,2223,1315],{"class":1314},[1130,2225,1318],{"class":1242},[1130,2227,1322],{"class":1321},[1130,2229,1325],{"class":1242},[1130,2231,1328],{"class":1314},[1130,2233,1331],{"class":1242},[1130,2235,2236,2238,2240,2242,2244,2246,2248,2250,2252,2254],{"class":1132,"line":1364},[1130,2237,1337],{"class":1314},[1130,2239,1243],{"class":1242},[1130,2241,1342],{"class":1246},[1130,2243,1256],{"class":1242},[1130,2245,1347],{"class":1242},[1130,2247,1350],{"class":1238},[1130,2249,1353],{"class":1307},[1130,2251,1311],{"class":1356},[1130,2253,1322],{"class":1246},[1130,2255,1361],{"class":1356},[1130,2257,2258],{"class":1132,"line":1369},[1130,2259,1295],{"emptyLinePlaceholder":21},[1130,2261,2262,2264,2266,2268],{"class":1132,"line":1382},[1130,2263,1372],{"class":1238},[1130,2265,1247],{"class":1307},[1130,2267,1311],{"class":1356},[1130,2269,1379],{"class":1242},[1130,2271,2272,2274,2276,2278,2280,2282,2285,2287,2289],{"class":1132,"line":1408},[1130,2273,1385],{"class":1356},[1130,2275,1388],{"class":1242},[1130,2277,1278],{"class":1307},[1130,2279,1311],{"class":1356},[1130,2281,1395],{"class":1242},[1130,2283,2284],{"class":1139},"google\u002Fgemini-3-flash",[1130,2286,1395],{"class":1242},[1130,2288,1325],{"class":1356},[1130,2290,1405],{"class":1242},[1130,2292,2293,2295,2297,2299,2301,2303],{"class":1132,"line":1422},[1130,2294,1425],{"class":1356},[1130,2296,1388],{"class":1242},[1130,2298,1262],{"class":1242},[1130,2300,1432],{"class":1139},[1130,2302,1395],{"class":1242},[1130,2304,1405],{"class":1242},[1130,2306,2307,2309,2311,2313,2315,2317,2319,2321],{"class":1132,"line":1439},[1130,2308,1442],{"class":1356},[1130,2310,1388],{"class":1242},[1130,2312,1350],{"class":1238},[1130,2314,1253],{"class":1307},[1130,2316,1311],{"class":1356},[1130,2318,1453],{"class":1246},[1130,2320,1325],{"class":1356},[1130,2322,1405],{"class":1242},[1130,2324,2325,2327,2329],{"class":1132,"line":1458},[1130,2326,2090],{"class":1356},[1130,2328,1388],{"class":1242},[1130,2330,1331],{"class":1242},[1130,2332,2333,2336,2338,2340,2342,2344,2346,2349,2351,2353],{"class":1132,"line":1475},[1130,2334,2335],{"class":1356},"      google_search",[1130,2337,1388],{"class":1242},[1130,2339,2178],{"class":1246},[1130,2341,1466],{"class":1242},[1130,2343,2108],{"class":1246},[1130,2345,1466],{"class":1242},[1130,2347,2348],{"class":1307},"googleSearch",[1130,2350,1311],{"class":1356},[1130,2352,2118],{"class":1242},[1130,2354,1361],{"class":1356},[1130,2356,2357],{"class":1132,"line":1704},[1130,2358,1865],{"class":1242},[1130,2360,2361,2363,2365,2367,2369],{"class":1132,"line":1714},[1130,2362,1461],{"class":1242},[1130,2364,1325],{"class":1356},[1130,2366,1466],{"class":1242},[1130,2368,1469],{"class":1307},[1130,2370,1472],{"class":1356},[1130,2372,2373,2375],{"class":1132,"line":1729},[1130,2374,1478],{"class":1242},[1130,2376,1361],{"class":1246},[1120,2378,2380],{"className":1228,"code":2379,"filename":1513,"language":1231,"meta":1126,"style":1126},"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",[988,2381,2382,2404,2424,2442,2446,2468,2490,2494,2504,2525,2539,2557,2565,2588,2592,2604],{"__ignoreMap":1126},[1130,2383,2384,2386,2388,2390,2392,2394,2396,2398,2400,2402],{"class":1132,"line":1133},[1130,2385,1239],{"class":1238},[1130,2387,1243],{"class":1242},[1130,2389,1247],{"class":1246},[1130,2391,1250],{"class":1242},[1130,2393,1253],{"class":1246},[1130,2395,1256],{"class":1242},[1130,2397,1259],{"class":1238},[1130,2399,1262],{"class":1242},[1130,2401,1265],{"class":1139},[1130,2403,1268],{"class":1242},[1130,2405,2406,2408,2410,2413,2415,2417,2419,2422],{"class":1132,"line":1271},[1130,2407,1239],{"class":1238},[1130,2409,1243],{"class":1242},[1130,2411,2412],{"class":1246}," openai",[1130,2414,1256],{"class":1242},[1130,2416,1259],{"class":1238},[1130,2418,1262],{"class":1242},[1130,2420,2421],{"class":1139},"@ai-sdk\u002Fopenai",[1130,2423,1268],{"class":1242},[1130,2425,2426,2428,2430,2432,2434,2436,2438,2440],{"class":1132,"line":1292},[1130,2427,1239],{"class":1238},[1130,2429,1243],{"class":1242},[1130,2431,1278],{"class":1246},[1130,2433,1256],{"class":1242},[1130,2435,1259],{"class":1238},[1130,2437,1262],{"class":1242},[1130,2439,1287],{"class":1139},[1130,2441,1268],{"class":1242},[1130,2443,2444],{"class":1132,"line":1298},[1130,2445,1295],{"emptyLinePlaceholder":21},[1130,2447,2448,2450,2452,2454,2456,2458,2460,2462,2464,2466],{"class":1132,"line":1334},[1130,2449,1301],{"class":1238},[1130,2451,1304],{"class":1238},[1130,2453,1308],{"class":1307},[1130,2455,1311],{"class":1246},[1130,2457,1315],{"class":1314},[1130,2459,1318],{"class":1242},[1130,2461,1322],{"class":1321},[1130,2463,1325],{"class":1242},[1130,2465,1328],{"class":1314},[1130,2467,1331],{"class":1242},[1130,2469,2470,2472,2474,2476,2478,2480,2482,2484,2486,2488],{"class":1132,"line":1364},[1130,2471,1337],{"class":1314},[1130,2473,1243],{"class":1242},[1130,2475,1342],{"class":1246},[1130,2477,1256],{"class":1242},[1130,2479,1347],{"class":1242},[1130,2481,1350],{"class":1238},[1130,2483,1353],{"class":1307},[1130,2485,1311],{"class":1356},[1130,2487,1322],{"class":1246},[1130,2489,1361],{"class":1356},[1130,2491,2492],{"class":1132,"line":1369},[1130,2493,1295],{"emptyLinePlaceholder":21},[1130,2495,2496,2498,2500,2502],{"class":1132,"line":1382},[1130,2497,1372],{"class":1238},[1130,2499,1247],{"class":1307},[1130,2501,1311],{"class":1356},[1130,2503,1379],{"class":1242},[1130,2505,2506,2508,2510,2512,2514,2516,2519,2521,2523],{"class":1132,"line":1408},[1130,2507,1385],{"class":1356},[1130,2509,1388],{"class":1242},[1130,2511,1278],{"class":1307},[1130,2513,1311],{"class":1356},[1130,2515,1395],{"class":1242},[1130,2517,2518],{"class":1139},"openai\u002Fgpt-5-nano",[1130,2520,1395],{"class":1242},[1130,2522,1325],{"class":1356},[1130,2524,1405],{"class":1242},[1130,2526,2527,2529,2531,2533,2535,2537],{"class":1132,"line":1422},[1130,2528,1425],{"class":1356},[1130,2530,1388],{"class":1242},[1130,2532,1262],{"class":1242},[1130,2534,1432],{"class":1139},[1130,2536,1395],{"class":1242},[1130,2538,1405],{"class":1242},[1130,2540,2541,2543,2545,2547,2549,2551,2553,2555],{"class":1132,"line":1439},[1130,2542,1442],{"class":1356},[1130,2544,1388],{"class":1242},[1130,2546,1350],{"class":1238},[1130,2548,1253],{"class":1307},[1130,2550,1311],{"class":1356},[1130,2552,1453],{"class":1246},[1130,2554,1325],{"class":1356},[1130,2556,1405],{"class":1242},[1130,2558,2559,2561,2563],{"class":1132,"line":1458},[1130,2560,2090],{"class":1356},[1130,2562,1388],{"class":1242},[1130,2564,1331],{"class":1242},[1130,2566,2567,2569,2571,2573,2575,2577,2579,2582,2584,2586],{"class":1132,"line":1475},[1130,2568,2099],{"class":1356},[1130,2570,1388],{"class":1242},[1130,2572,2412],{"class":1246},[1130,2574,1466],{"class":1242},[1130,2576,2108],{"class":1246},[1130,2578,1466],{"class":1242},[1130,2580,2581],{"class":1307},"webSearch",[1130,2583,1311],{"class":1356},[1130,2585,2118],{"class":1242},[1130,2587,1361],{"class":1356},[1130,2589,2590],{"class":1132,"line":1704},[1130,2591,1865],{"class":1242},[1130,2593,2594,2596,2598,2600,2602],{"class":1132,"line":1714},[1130,2595,1461],{"class":1242},[1130,2597,1325],{"class":1356},[1130,2599,1466],{"class":1242},[1130,2601,1469],{"class":1307},[1130,2603,1472],{"class":1356},[1130,2605,2606,2608],{"class":1132,"line":1729},[1130,2607,1478],{"class":1242},[1130,2609,1361],{"class":1246},[1482,2611,2613],{"id":2612},"tool-calling-mcp","Tool Calling (MCP)",[964,2615,2616,2617,1318,2622,2625],{},"You can enhance your chatbot with tool calling capabilities using the ",[968,2618,2621],{"href":2619,"rel":2620},"https:\u002F\u002Fai-sdk.dev\u002Fdocs\u002Fai-sdk-core\u002Fmcp-tools",[972],"Model Context Protocol",[988,2623,2624],{},"@ai-sdk\u002Fmcp","). This allows the AI to search your documentation or perform other actions:",[1120,2627,2629],{"className":1228,"code":2628,"filename":1230,"language":1231,"meta":1126,"style":1126},"import { StreamableHTTPClientTransport } from '@modelcontextprotocol\u002Fsdk\u002Fclient\u002FstreamableHttp.js'\nimport { streamText, convertToModelMessages, stepCountIs } from 'ai'\nimport { experimental_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 httpTransport = new StreamableHTTPClientTransport(\n    new URL('https:\u002F\u002Fyour-app.com\u002Fmcp')\n  )\n  const httpClient = await experimental_createMCPClient({\n    transport: httpTransport\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",[988,2630,2631,2651,2678,2697,2715,2719,2741,2763,2767,2784,2803,2808,2825,2835,2841,2860,2864,2874,2894,2904,2919,2937,2955,2961,2978,2992,2997,3017,3032,3044,3048,3060],{"__ignoreMap":1126},[1130,2632,2633,2635,2637,2640,2642,2644,2646,2649],{"class":1132,"line":1133},[1130,2634,1239],{"class":1238},[1130,2636,1243],{"class":1242},[1130,2638,2639],{"class":1246}," StreamableHTTPClientTransport",[1130,2641,1256],{"class":1242},[1130,2643,1259],{"class":1238},[1130,2645,1262],{"class":1242},[1130,2647,2648],{"class":1139},"@modelcontextprotocol\u002Fsdk\u002Fclient\u002FstreamableHttp.js",[1130,2650,1268],{"class":1242},[1130,2652,2653,2655,2657,2659,2661,2663,2665,2668,2670,2672,2674,2676],{"class":1132,"line":1271},[1130,2654,1239],{"class":1238},[1130,2656,1243],{"class":1242},[1130,2658,1247],{"class":1246},[1130,2660,1250],{"class":1242},[1130,2662,1253],{"class":1246},[1130,2664,1250],{"class":1242},[1130,2666,2667],{"class":1246}," stepCountIs",[1130,2669,1256],{"class":1242},[1130,2671,1259],{"class":1238},[1130,2673,1262],{"class":1242},[1130,2675,1265],{"class":1139},[1130,2677,1268],{"class":1242},[1130,2679,2680,2682,2684,2687,2689,2691,2693,2695],{"class":1132,"line":1292},[1130,2681,1239],{"class":1238},[1130,2683,1243],{"class":1242},[1130,2685,2686],{"class":1246}," experimental_createMCPClient",[1130,2688,1256],{"class":1242},[1130,2690,1259],{"class":1238},[1130,2692,1262],{"class":1242},[1130,2694,2624],{"class":1139},[1130,2696,1268],{"class":1242},[1130,2698,2699,2701,2703,2705,2707,2709,2711,2713],{"class":1132,"line":1298},[1130,2700,1239],{"class":1238},[1130,2702,1243],{"class":1242},[1130,2704,1278],{"class":1246},[1130,2706,1256],{"class":1242},[1130,2708,1259],{"class":1238},[1130,2710,1262],{"class":1242},[1130,2712,1287],{"class":1139},[1130,2714,1268],{"class":1242},[1130,2716,2717],{"class":1132,"line":1334},[1130,2718,1295],{"emptyLinePlaceholder":21},[1130,2720,2721,2723,2725,2727,2729,2731,2733,2735,2737,2739],{"class":1132,"line":1364},[1130,2722,1301],{"class":1238},[1130,2724,1304],{"class":1238},[1130,2726,1308],{"class":1307},[1130,2728,1311],{"class":1246},[1130,2730,1315],{"class":1314},[1130,2732,1318],{"class":1242},[1130,2734,1322],{"class":1321},[1130,2736,1325],{"class":1242},[1130,2738,1328],{"class":1314},[1130,2740,1331],{"class":1242},[1130,2742,2743,2745,2747,2749,2751,2753,2755,2757,2759,2761],{"class":1132,"line":1369},[1130,2744,1337],{"class":1314},[1130,2746,1243],{"class":1242},[1130,2748,1342],{"class":1246},[1130,2750,1256],{"class":1242},[1130,2752,1347],{"class":1242},[1130,2754,1350],{"class":1238},[1130,2756,1353],{"class":1307},[1130,2758,1311],{"class":1356},[1130,2760,1322],{"class":1246},[1130,2762,1361],{"class":1356},[1130,2764,2765],{"class":1132,"line":1382},[1130,2766,1295],{"emptyLinePlaceholder":21},[1130,2768,2769,2771,2774,2776,2779,2781],{"class":1132,"line":1408},[1130,2770,1337],{"class":1314},[1130,2772,2773],{"class":1246}," httpTransport",[1130,2775,1347],{"class":1242},[1130,2777,2778],{"class":1242}," new",[1130,2780,2639],{"class":1307},[1130,2782,2783],{"class":1356},"(\n",[1130,2785,2786,2789,2792,2794,2796,2799,2801],{"class":1132,"line":1422},[1130,2787,2788],{"class":1242},"    new",[1130,2790,2791],{"class":1307}," URL",[1130,2793,1311],{"class":1356},[1130,2795,1395],{"class":1242},[1130,2797,2798],{"class":1139},"https:\u002F\u002Fyour-app.com\u002Fmcp",[1130,2800,1395],{"class":1242},[1130,2802,1361],{"class":1356},[1130,2804,2805],{"class":1132,"line":1439},[1130,2806,2807],{"class":1356},"  )\n",[1130,2809,2810,2812,2815,2817,2819,2821,2823],{"class":1132,"line":1458},[1130,2811,1337],{"class":1314},[1130,2813,2814],{"class":1246}," httpClient",[1130,2816,1347],{"class":1242},[1130,2818,1350],{"class":1238},[1130,2820,2686],{"class":1307},[1130,2822,1311],{"class":1356},[1130,2824,1379],{"class":1242},[1130,2826,2827,2830,2832],{"class":1132,"line":1475},[1130,2828,2829],{"class":1356},"    transport",[1130,2831,1388],{"class":1242},[1130,2833,2834],{"class":1246}," httpTransport\n",[1130,2836,2837,2839],{"class":1132,"line":1704},[1130,2838,1461],{"class":1242},[1130,2840,1361],{"class":1356},[1130,2842,2843,2845,2848,2850,2852,2854,2856,2858],{"class":1132,"line":1714},[1130,2844,1337],{"class":1314},[1130,2846,2847],{"class":1246}," tools",[1130,2849,1347],{"class":1242},[1130,2851,1350],{"class":1238},[1130,2853,2814],{"class":1246},[1130,2855,1466],{"class":1242},[1130,2857,2108],{"class":1307},[1130,2859,1472],{"class":1356},[1130,2861,2862],{"class":1132,"line":1729},[1130,2863,1295],{"emptyLinePlaceholder":21},[1130,2865,2866,2868,2870,2872],{"class":1132,"line":1735},[1130,2867,1372],{"class":1238},[1130,2869,1247],{"class":1307},[1130,2871,1311],{"class":1356},[1130,2873,1379],{"class":1242},[1130,2875,2876,2878,2880,2882,2884,2886,2888,2890,2892],{"class":1132,"line":1750},[1130,2877,1385],{"class":1356},[1130,2879,1388],{"class":1242},[1130,2881,1278],{"class":1307},[1130,2883,1311],{"class":1356},[1130,2885,1395],{"class":1242},[1130,2887,1398],{"class":1139},[1130,2889,1395],{"class":1242},[1130,2891,1325],{"class":1356},[1130,2893,1405],{"class":1242},[1130,2895,2896,2898,2900,2902],{"class":1132,"line":1756},[1130,2897,1411],{"class":1356},[1130,2899,1388],{"class":1242},[1130,2901,1417],{"class":1416},[1130,2903,1405],{"class":1242},[1130,2905,2906,2908,2910,2912,2915,2917],{"class":1132,"line":1766},[1130,2907,1425],{"class":1356},[1130,2909,1388],{"class":1242},[1130,2911,1262],{"class":1242},[1130,2913,2914],{"class":1139},"You are a helpful assistant. Use your tools to search for relevant information before answering questions.",[1130,2916,1395],{"class":1242},[1130,2918,1405],{"class":1242},[1130,2920,2921,2923,2925,2927,2929,2931,2933,2935],{"class":1132,"line":1776},[1130,2922,1442],{"class":1356},[1130,2924,1388],{"class":1242},[1130,2926,1350],{"class":1238},[1130,2928,1253],{"class":1307},[1130,2930,1311],{"class":1356},[1130,2932,1453],{"class":1246},[1130,2934,1325],{"class":1356},[1130,2936,1405],{"class":1242},[1130,2938,2939,2942,2944,2946,2948,2951,2953],{"class":1132,"line":1790},[1130,2940,2941],{"class":1356},"    stopWhen",[1130,2943,1388],{"class":1242},[1130,2945,2667],{"class":1307},[1130,2947,1311],{"class":1356},[1130,2949,2950],{"class":1416},"6",[1130,2952,1325],{"class":1356},[1130,2954,1405],{"class":1242},[1130,2956,2957,2959],{"class":1132,"line":1804},[1130,2958,2090],{"class":1246},[1130,2960,1405],{"class":1242},[1130,2962,2963,2966,2968,2971,2974,2976],{"class":1132,"line":1810},[1130,2964,2965],{"class":1307},"    onFinish",[1130,2967,1388],{"class":1242},[1130,2969,2970],{"class":1314}," async",[1130,2972,2973],{"class":1242}," ()",[1130,2975,1328],{"class":1314},[1130,2977,1331],{"class":1242},[1130,2979,2980,2983,2985,2987,2990],{"class":1132,"line":1815},[1130,2981,2982],{"class":1238},"      await",[1130,2984,2814],{"class":1246},[1130,2986,1466],{"class":1242},[1130,2988,2989],{"class":1307},"close",[1130,2991,1472],{"class":1356},[1130,2993,2994],{"class":1132,"line":1825},[1130,2995,2996],{"class":1242},"    },\n",[1130,2998,2999,3002,3004,3006,3008,3011,3013,3015],{"class":1132,"line":1841},[1130,3000,3001],{"class":1307},"    onError",[1130,3003,1388],{"class":1242},[1130,3005,2970],{"class":1314},[1130,3007,1318],{"class":1242},[1130,3009,3010],{"class":1321},"error",[1130,3012,1325],{"class":1242},[1130,3014,1328],{"class":1314},[1130,3016,1331],{"class":1242},[1130,3018,3019,3022,3024,3026,3028,3030],{"class":1132,"line":1856},[1130,3020,3021],{"class":1246},"      console",[1130,3023,1466],{"class":1242},[1130,3025,3010],{"class":1307},[1130,3027,1311],{"class":1356},[1130,3029,3010],{"class":1246},[1130,3031,1361],{"class":1356},[1130,3033,3034,3036,3038,3040,3042],{"class":1132,"line":1862},[1130,3035,2982],{"class":1238},[1130,3037,2814],{"class":1246},[1130,3039,1466],{"class":1242},[1130,3041,2989],{"class":1307},[1130,3043,1472],{"class":1356},[1130,3045,3046],{"class":1132,"line":1868},[1130,3047,1865],{"class":1242},[1130,3049,3050,3052,3054,3056,3058],{"class":1132,"line":1881},[1130,3051,1461],{"class":1242},[1130,3053,1325],{"class":1356},[1130,3055,1466],{"class":1242},[1130,3057,1469],{"class":1307},[1130,3059,1472],{"class":1356},[1130,3061,3063,3065],{"class":1132,"line":3062},32,[1130,3064,1478],{"class":1242},[1130,3066,1361],{"class":1246},[1001,3068,3070],{"id":3069},"client-setup","Client Setup",[964,3072,3073,3074,3076,3077,3080],{},"Use the ",[988,3075,259],{}," class from ",[988,3078,3079],{},"@ai-sdk\u002Fvue"," to manage chat state and connect to your server endpoint:",[1120,3082,3085],{"className":3083,"code":3084,"language":34,"meta":1126,"style":1126},"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 { isReasoningStreaming, 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=\"isReasoningStreaming(message, index, chat)\"\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",[988,3086,3087,3114,3136,3170,3189,3214,3218,3238,3242,3259,3272,3287,3292,3298,3302,3315,3347,3351,3365,3370,3379,3383,3392,3400,3415,3429,3434,3461,3469,3499,3548,3553,3561,3576,3591,3606,3612,3621,3635,3650,3665,3671,3682,3687,3695,3710,3724,3738,3744,3749,3773,3780,3795,3808,3822,3835,3840,3872,3878,3888,3897,3907,3917,3928,3933,3941,3956,3971,3986,3991,3999,4013,4028,4043,4049,4059],{"__ignoreMap":1126},[1130,3088,3089,3092,3095,3098,3101,3104,3107,3109,3111],{"class":1132,"line":1133},[1130,3090,3091],{"class":1242},"\u003C",[1130,3093,3094],{"class":1356},"script",[1130,3096,3097],{"class":1314}," setup",[1130,3099,3100],{"class":1314}," lang",[1130,3102,3103],{"class":1242},"=",[1130,3105,3106],{"class":1242},"\"",[1130,3108,1231],{"class":1139},[1130,3110,3106],{"class":1242},[1130,3112,3113],{"class":1242},">\n",[1130,3115,3116,3118,3121,3123,3126,3128,3130,3132,3134],{"class":1132,"line":1271},[1130,3117,1239],{"class":1238},[1130,3119,3120],{"class":1238}," type",[1130,3122,1243],{"class":1242},[1130,3124,3125],{"class":1246}," UIMessage",[1130,3127,1256],{"class":1242},[1130,3129,1259],{"class":1238},[1130,3131,1262],{"class":1242},[1130,3133,1265],{"class":1139},[1130,3135,1268],{"class":1242},[1130,3137,3138,3140,3142,3145,3147,3150,3152,3155,3157,3160,3162,3164,3166,3168],{"class":1132,"line":1292},[1130,3139,1239],{"class":1238},[1130,3141,1243],{"class":1242},[1130,3143,3144],{"class":1246}," isReasoningUIPart",[1130,3146,1250],{"class":1242},[1130,3148,3149],{"class":1246}," isTextUIPart",[1130,3151,1250],{"class":1242},[1130,3153,3154],{"class":1246}," isToolUIPart",[1130,3156,1250],{"class":1242},[1130,3158,3159],{"class":1246}," getToolName",[1130,3161,1256],{"class":1242},[1130,3163,1259],{"class":1238},[1130,3165,1262],{"class":1242},[1130,3167,1265],{"class":1139},[1130,3169,1268],{"class":1242},[1130,3171,3172,3174,3176,3179,3181,3183,3185,3187],{"class":1132,"line":1298},[1130,3173,1239],{"class":1238},[1130,3175,1243],{"class":1242},[1130,3177,3178],{"class":1246}," Chat",[1130,3180,1256],{"class":1242},[1130,3182,1259],{"class":1238},[1130,3184,1262],{"class":1242},[1130,3186,3079],{"class":1139},[1130,3188,1268],{"class":1242},[1130,3190,3191,3193,3195,3198,3200,3203,3205,3207,3209,3212],{"class":1132,"line":1334},[1130,3192,1239],{"class":1238},[1130,3194,1243],{"class":1242},[1130,3196,3197],{"class":1246}," isReasoningStreaming",[1130,3199,1250],{"class":1242},[1130,3201,3202],{"class":1246}," isToolStreaming",[1130,3204,1256],{"class":1242},[1130,3206,1259],{"class":1238},[1130,3208,1262],{"class":1242},[1130,3210,3211],{"class":1139},"@nuxt\u002Fui\u002Futils\u002Fai",[1130,3213,1268],{"class":1242},[1130,3215,3216],{"class":1132,"line":1364},[1130,3217,1295],{"emptyLinePlaceholder":21},[1130,3219,3220,3223,3226,3228,3231,3233,3236],{"class":1132,"line":1369},[1130,3221,3222],{"class":1314},"const",[1130,3224,3225],{"class":1246}," input ",[1130,3227,3103],{"class":1242},[1130,3229,3230],{"class":1307}," ref",[1130,3232,1311],{"class":1246},[1130,3234,3235],{"class":1242},"''",[1130,3237,1361],{"class":1246},[1130,3239,3240],{"class":1132,"line":1382},[1130,3241,1295],{"emptyLinePlaceholder":21},[1130,3243,3244,3246,3249,3251,3253,3255,3257],{"class":1132,"line":1408},[1130,3245,3222],{"class":1314},[1130,3247,3248],{"class":1246}," chat ",[1130,3250,3103],{"class":1242},[1130,3252,2778],{"class":1242},[1130,3254,3178],{"class":1307},[1130,3256,1311],{"class":1246},[1130,3258,1379],{"class":1242},[1130,3260,3261,3264,3266,3268,3270],{"class":1132,"line":1422},[1130,3262,3263],{"class":1356},"  onError",[1130,3265,1311],{"class":1242},[1130,3267,3010],{"class":1321},[1130,3269,1325],{"class":1242},[1130,3271,1331],{"class":1242},[1130,3273,3274,3277,3279,3281,3283,3285],{"class":1132,"line":1439},[1130,3275,3276],{"class":1246},"    console",[1130,3278,1466],{"class":1242},[1130,3280,3010],{"class":1307},[1130,3282,1311],{"class":1356},[1130,3284,3010],{"class":1246},[1130,3286,1361],{"class":1356},[1130,3288,3289],{"class":1132,"line":1458},[1130,3290,3291],{"class":1242},"  }\n",[1130,3293,3294,3296],{"class":1132,"line":1475},[1130,3295,1478],{"class":1242},[1130,3297,1361],{"class":1246},[1130,3299,3300],{"class":1132,"line":1704},[1130,3301,1295],{"emptyLinePlaceholder":21},[1130,3303,3304,3307,3310,3313],{"class":1132,"line":1714},[1130,3305,3306],{"class":1314},"function",[1130,3308,3309],{"class":1307}," onSubmit",[1130,3311,3312],{"class":1242},"()",[1130,3314,1331],{"class":1242},[1130,3316,3317,3320,3322,3325,3327,3330,3333,3335,3338,3340,3343,3345],{"class":1132,"line":1729},[1130,3318,3319],{"class":1246},"  chat",[1130,3321,1466],{"class":1242},[1130,3323,3324],{"class":1307},"sendMessage",[1130,3326,1311],{"class":1356},[1130,3328,3329],{"class":1242},"{",[1130,3331,3332],{"class":1356}," text",[1130,3334,1388],{"class":1242},[1130,3336,3337],{"class":1246}," input",[1130,3339,1466],{"class":1242},[1130,3341,3342],{"class":1246},"value",[1130,3344,1256],{"class":1242},[1130,3346,1361],{"class":1356},[1130,3348,3349],{"class":1132,"line":1735},[1130,3350,1295],{"emptyLinePlaceholder":21},[1130,3352,3353,3356,3358,3360,3362],{"class":1132,"line":1750},[1130,3354,3355],{"class":1246},"  input",[1130,3357,1466],{"class":1242},[1130,3359,3342],{"class":1246},[1130,3361,1347],{"class":1242},[1130,3363,3364],{"class":1242}," ''\n",[1130,3366,3367],{"class":1132,"line":1756},[1130,3368,3369],{"class":1242},"}\n",[1130,3371,3372,3375,3377],{"class":1132,"line":1766},[1130,3373,3374],{"class":1242},"\u003C\u002F",[1130,3376,3094],{"class":1356},[1130,3378,3113],{"class":1242},[1130,3380,3381],{"class":1132,"line":1776},[1130,3382,1295],{"emptyLinePlaceholder":21},[1130,3384,3385,3387,3390],{"class":1132,"line":1790},[1130,3386,3091],{"class":1242},[1130,3388,3389],{"class":1356},"template",[1130,3391,3113],{"class":1242},[1130,3393,3394,3397],{"class":1132,"line":1804},[1130,3395,3396],{"class":1242},"  \u003C",[1130,3398,3399],{"class":1356},"UChatMessages\n",[1130,3401,3402,3405,3407,3409,3412],{"class":1132,"line":1810},[1130,3403,3404],{"class":1314},"    :messages",[1130,3406,3103],{"class":1242},[1130,3408,3106],{"class":1242},[1130,3410,3411],{"class":1139},"chat.messages",[1130,3413,3414],{"class":1242},"\"\n",[1130,3416,3417,3420,3422,3424,3427],{"class":1132,"line":1815},[1130,3418,3419],{"class":1314},"    :status",[1130,3421,3103],{"class":1242},[1130,3423,3106],{"class":1242},[1130,3425,3426],{"class":1139},"chat.status",[1130,3428,3414],{"class":1242},[1130,3430,3431],{"class":1132,"line":1825},[1130,3432,3433],{"class":1242},"  >\n",[1130,3435,3436,3439,3441,3444,3446,3448,3450,3452,3455,3457,3459],{"class":1132,"line":1841},[1130,3437,3438],{"class":1242},"    \u003C",[1130,3440,3389],{"class":1356},[1130,3442,3443],{"class":1242}," #",[1130,3445,371],{"class":1314},[1130,3447,3103],{"class":1242},[1130,3449,3106],{"class":1242},[1130,3451,3329],{"class":1242},[1130,3453,3454],{"class":1246}," message ",[1130,3456,1478],{"class":1242},[1130,3458,3106],{"class":1242},[1130,3460,3113],{"class":1242},[1130,3462,3463,3466],{"class":1132,"line":1856},[1130,3464,3465],{"class":1242},"      \u003C",[1130,3467,3468],{"class":1356},"template\n",[1130,3470,3471,3474,3476,3478,3481,3483,3486,3489,3492,3494,3497],{"class":1132,"line":1862},[1130,3472,3473],{"class":1238},"        v-for",[1130,3475,3103],{"class":1242},[1130,3477,3106],{"class":1242},[1130,3479,3480],{"class":1246},"(part",[1130,3482,1250],{"class":1242},[1130,3484,3485],{"class":1246}," index) ",[1130,3487,3488],{"class":1242},"in",[1130,3490,3491],{"class":1246}," message",[1130,3493,1466],{"class":1242},[1130,3495,3496],{"class":1246},"parts",[1130,3498,3414],{"class":1242},[1130,3500,3501,3504,3507,3509,3512,3515,3517,3520,3522,3525,3528,3531,3533,3536,3538,3540,3542,3545],{"class":1132,"line":1868},[1130,3502,3503],{"class":1242},"        :",[1130,3505,3506],{"class":1314},"key",[1130,3508,3103],{"class":1242},[1130,3510,3511],{"class":1242},"\"`${",[1130,3513,3514],{"class":1246},"message",[1130,3516,1466],{"class":1242},[1130,3518,3519],{"class":1246},"id",[1130,3521,1478],{"class":1242},[1130,3523,3524],{"class":1139},"-",[1130,3526,3527],{"class":1242},"${",[1130,3529,3530],{"class":1246},"part",[1130,3532,1466],{"class":1242},[1130,3534,3535],{"class":1246},"type",[1130,3537,1478],{"class":1242},[1130,3539,3524],{"class":1139},[1130,3541,3527],{"class":1242},[1130,3543,3544],{"class":1246},"index",[1130,3546,3547],{"class":1242},"}`\"\n",[1130,3549,3550],{"class":1132,"line":1881},[1130,3551,3552],{"class":1242},"      >\n",[1130,3554,3555,3558],{"class":1132,"line":3062},[1130,3556,3557],{"class":1242},"        \u003C",[1130,3559,3560],{"class":1356},"UChatReasoning\n",[1130,3562,3564,3567,3569,3571,3574],{"class":1132,"line":3563},33,[1130,3565,3566],{"class":1314},"          v-if",[1130,3568,3103],{"class":1242},[1130,3570,3106],{"class":1242},[1130,3572,3573],{"class":1139},"isReasoningUIPart(part)",[1130,3575,3414],{"class":1242},[1130,3577,3579,3582,3584,3586,3589],{"class":1132,"line":3578},34,[1130,3580,3581],{"class":1314},"          :text",[1130,3583,3103],{"class":1242},[1130,3585,3106],{"class":1242},[1130,3587,3588],{"class":1139},"part.text",[1130,3590,3414],{"class":1242},[1130,3592,3594,3597,3599,3601,3604],{"class":1132,"line":3593},35,[1130,3595,3596],{"class":1314},"          :streaming",[1130,3598,3103],{"class":1242},[1130,3600,3106],{"class":1242},[1130,3602,3603],{"class":1139},"isReasoningStreaming(message, index, chat)",[1130,3605,3414],{"class":1242},[1130,3607,3609],{"class":1132,"line":3608},36,[1130,3610,3611],{"class":1242},"        >\n",[1130,3613,3615,3618],{"class":1132,"line":3614},37,[1130,3616,3617],{"class":1242},"          \u003C",[1130,3619,3620],{"class":1356},"MDC\n",[1130,3622,3624,3627,3629,3631,3633],{"class":1132,"line":3623},38,[1130,3625,3626],{"class":1314},"            :value",[1130,3628,3103],{"class":1242},[1130,3630,3106],{"class":1242},[1130,3632,3588],{"class":1139},[1130,3634,3414],{"class":1242},[1130,3636,3638,3641,3643,3645,3648],{"class":1132,"line":3637},39,[1130,3639,3640],{"class":1314},"            :cache-key",[1130,3642,3103],{"class":1242},[1130,3644,3106],{"class":1242},[1130,3646,3647],{"class":1139},"`reasoning-${message.id}-${index}`",[1130,3649,3414],{"class":1242},[1130,3651,3653,3656,3658,3660,3663],{"class":1132,"line":3652},40,[1130,3654,3655],{"class":1314},"            class",[1130,3657,3103],{"class":1242},[1130,3659,3106],{"class":1242},[1130,3661,3662],{"class":1139},"*:first:mt-0 *:last:mb-0",[1130,3664,3414],{"class":1242},[1130,3666,3668],{"class":1132,"line":3667},41,[1130,3669,3670],{"class":1242},"          \u002F>\n",[1130,3672,3674,3677,3680],{"class":1132,"line":3673},42,[1130,3675,3676],{"class":1242},"        \u003C\u002F",[1130,3678,3679],{"class":1356},"UChatReasoning",[1130,3681,3113],{"class":1242},[1130,3683,3685],{"class":1132,"line":3684},43,[1130,3686,1295],{"emptyLinePlaceholder":21},[1130,3688,3690,3692],{"class":1132,"line":3689},44,[1130,3691,3557],{"class":1242},[1130,3693,3694],{"class":1356},"UChatTool\n",[1130,3696,3698,3701,3703,3705,3708],{"class":1132,"line":3697},45,[1130,3699,3700],{"class":1314},"          v-else-if",[1130,3702,3103],{"class":1242},[1130,3704,3106],{"class":1242},[1130,3706,3707],{"class":1139},"isToolUIPart(part)",[1130,3709,3414],{"class":1242},[1130,3711,3713,3715,3717,3719,3722],{"class":1132,"line":3712},46,[1130,3714,3581],{"class":1314},[1130,3716,3103],{"class":1242},[1130,3718,3106],{"class":1242},[1130,3720,3721],{"class":1139},"getToolName(part)",[1130,3723,3414],{"class":1242},[1130,3725,3727,3729,3731,3733,3736],{"class":1132,"line":3726},47,[1130,3728,3596],{"class":1314},[1130,3730,3103],{"class":1242},[1130,3732,3106],{"class":1242},[1130,3734,3735],{"class":1139},"isToolStreaming(part)",[1130,3737,3414],{"class":1242},[1130,3739,3741],{"class":1132,"line":3740},48,[1130,3742,3743],{"class":1242},"        \u002F>\n",[1130,3745,3747],{"class":1132,"line":3746},49,[1130,3748,1295],{"emptyLinePlaceholder":21},[1130,3750,3752,3754,3756,3759,3761,3763,3766,3769,3771],{"class":1132,"line":3751},50,[1130,3753,3557],{"class":1242},[1130,3755,3389],{"class":1356},[1130,3757,3758],{"class":1238}," v-else-if",[1130,3760,3103],{"class":1242},[1130,3762,3106],{"class":1242},[1130,3764,3765],{"class":1307},"isTextUIPart",[1130,3767,3768],{"class":1246},"(part)",[1130,3770,3106],{"class":1242},[1130,3772,3113],{"class":1242},[1130,3774,3776,3778],{"class":1132,"line":3775},51,[1130,3777,3617],{"class":1242},[1130,3779,3620],{"class":1356},[1130,3781,3783,3786,3788,3790,3793],{"class":1132,"line":3782},52,[1130,3784,3785],{"class":1314},"            v-if",[1130,3787,3103],{"class":1242},[1130,3789,3106],{"class":1242},[1130,3791,3792],{"class":1139},"message.role === 'assistant'",[1130,3794,3414],{"class":1242},[1130,3796,3798,3800,3802,3804,3806],{"class":1132,"line":3797},53,[1130,3799,3626],{"class":1314},[1130,3801,3103],{"class":1242},[1130,3803,3106],{"class":1242},[1130,3805,3588],{"class":1139},[1130,3807,3414],{"class":1242},[1130,3809,3811,3813,3815,3817,3820],{"class":1132,"line":3810},54,[1130,3812,3640],{"class":1314},[1130,3814,3103],{"class":1242},[1130,3816,3106],{"class":1242},[1130,3818,3819],{"class":1139},"`${message.id}-${index}`",[1130,3821,3414],{"class":1242},[1130,3823,3825,3827,3829,3831,3833],{"class":1132,"line":3824},55,[1130,3826,3655],{"class":1314},[1130,3828,3103],{"class":1242},[1130,3830,3106],{"class":1242},[1130,3832,3662],{"class":1139},[1130,3834,3414],{"class":1242},[1130,3836,3838],{"class":1132,"line":3837},56,[1130,3839,3670],{"class":1242},[1130,3841,3843,3845,3847,3849,3851,3853,3856,3858,3861,3863,3865,3868,3870],{"class":1132,"line":3842},57,[1130,3844,3617],{"class":1242},[1130,3846,964],{"class":1356},[1130,3848,3758],{"class":1314},[1130,3850,3103],{"class":1242},[1130,3852,3106],{"class":1242},[1130,3854,3855],{"class":1139},"message.role === 'user'",[1130,3857,3106],{"class":1242},[1130,3859,3860],{"class":1314}," class",[1130,3862,3103],{"class":1242},[1130,3864,3106],{"class":1242},[1130,3866,3867],{"class":1139},"whitespace-pre-wrap",[1130,3869,3106],{"class":1242},[1130,3871,3113],{"class":1242},[1130,3873,3875],{"class":1132,"line":3874},58,[1130,3876,3877],{"class":1246},"            {{ part.text }}\n",[1130,3879,3881,3884,3886],{"class":1132,"line":3880},59,[1130,3882,3883],{"class":1242},"          \u003C\u002F",[1130,3885,964],{"class":1356},[1130,3887,3113],{"class":1242},[1130,3889,3891,3893,3895],{"class":1132,"line":3890},60,[1130,3892,3676],{"class":1242},[1130,3894,3389],{"class":1356},[1130,3896,3113],{"class":1242},[1130,3898,3900,3903,3905],{"class":1132,"line":3899},61,[1130,3901,3902],{"class":1242},"      \u003C\u002F",[1130,3904,3389],{"class":1356},[1130,3906,3113],{"class":1242},[1130,3908,3910,3913,3915],{"class":1132,"line":3909},62,[1130,3911,3912],{"class":1242},"    \u003C\u002F",[1130,3914,3389],{"class":1356},[1130,3916,3113],{"class":1242},[1130,3918,3920,3923,3926],{"class":1132,"line":3919},63,[1130,3921,3922],{"class":1242},"  \u003C\u002F",[1130,3924,3925],{"class":1356},"UChatMessages",[1130,3927,3113],{"class":1242},[1130,3929,3931],{"class":1132,"line":3930},64,[1130,3932,1295],{"emptyLinePlaceholder":21},[1130,3934,3936,3938],{"class":1132,"line":3935},65,[1130,3937,3396],{"class":1242},[1130,3939,3940],{"class":1356},"UChatPrompt\n",[1130,3942,3944,3947,3949,3951,3954],{"class":1132,"line":3943},66,[1130,3945,3946],{"class":1314},"    v-model",[1130,3948,3103],{"class":1242},[1130,3950,3106],{"class":1242},[1130,3952,3953],{"class":1139},"input",[1130,3955,3414],{"class":1242},[1130,3957,3959,3962,3964,3966,3969],{"class":1132,"line":3958},67,[1130,3960,3961],{"class":1314},"    :error",[1130,3963,3103],{"class":1242},[1130,3965,3106],{"class":1242},[1130,3967,3968],{"class":1139},"chat.error",[1130,3970,3414],{"class":1242},[1130,3972,3974,3977,3979,3981,3984],{"class":1132,"line":3973},68,[1130,3975,3976],{"class":1314},"    @submit",[1130,3978,3103],{"class":1242},[1130,3980,3106],{"class":1242},[1130,3982,3983],{"class":1139},"onSubmit",[1130,3985,3414],{"class":1242},[1130,3987,3989],{"class":1132,"line":3988},69,[1130,3990,3433],{"class":1242},[1130,3992,3994,3996],{"class":1132,"line":3993},70,[1130,3995,3438],{"class":1242},[1130,3997,3998],{"class":1356},"UChatPromptSubmit\n",[1130,4000,4002,4005,4007,4009,4011],{"class":1132,"line":4001},71,[1130,4003,4004],{"class":1314},"      :status",[1130,4006,3103],{"class":1242},[1130,4008,3106],{"class":1242},[1130,4010,3426],{"class":1139},[1130,4012,3414],{"class":1242},[1130,4014,4016,4019,4021,4023,4026],{"class":1132,"line":4015},72,[1130,4017,4018],{"class":1314},"      @stop",[1130,4020,3103],{"class":1242},[1130,4022,3106],{"class":1242},[1130,4024,4025],{"class":1139},"chat.stop()",[1130,4027,3414],{"class":1242},[1130,4029,4031,4034,4036,4038,4041],{"class":1132,"line":4030},73,[1130,4032,4033],{"class":1314},"      @reload",[1130,4035,3103],{"class":1242},[1130,4037,3106],{"class":1242},[1130,4039,4040],{"class":1139},"chat.regenerate()",[1130,4042,3414],{"class":1242},[1130,4044,4046],{"class":1132,"line":4045},74,[1130,4047,4048],{"class":1242},"    \u002F>\n",[1130,4050,4052,4054,4057],{"class":1132,"line":4051},75,[1130,4053,3922],{"class":1242},[1130,4055,4056],{"class":1356},"UChatPrompt",[1130,4058,3113],{"class":1242},[1130,4060,4062,4064,4066],{"class":1132,"line":4061},76,[1130,4063,3374],{"class":1242},[1130,4065,3389],{"class":1356},[1130,4067,3113],{"class":1242},[4069,4070,4071],"note",{},[964,4072,4073,4074,4077,4078,4085],{},"In this example, we use the ",[988,4075,4076],{},"MDC"," component from ",[968,4079,4082],{"href":4080,"rel":4081},"https:\u002F\u002Fgithub.com\u002Fnuxt-modules\u002Fmdc",[972],[988,4083,4084],{},"@nuxtjs\u002Fmdc"," to render messages as Markdown. As Nuxt UI provides pre-styled prose components, your content will be automatically styled.",[4087,4088,4090],"tip",{"to":4089},"\u002Fblog\u002Fhow-to-build-an-ai-chat",[964,4091,4092,4093,4097],{},"Read the full ",[4094,4095,4096],"strong",{},"Build an AI Chatbot"," tutorial for a step-by-step guide.",[4099,4100,4101],"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":1126,"searchDepth":1271,"depth":1271,"links":4103},[4104,4105,4106,4111],{"id":887,"depth":1271,"text":71},{"id":1097,"depth":1271,"text":20},{"id":1207,"depth":1271,"text":1208,"children":4107},[4108,4109,4110],{"id":1484,"depth":1292,"text":1485},{"id":1888,"depth":1292,"text":1889},{"id":2612,"depth":1292,"text":2613},{"id":3069,"depth":1271,"text":3070},"md",[4114],{"label":4115,"icon":4116,"to":970,"target":986},"AI SDK","i-simple-icons-vercel",{},{"title":259,"description":263},"qyNHSPbY4L5KdrpfaelZ74kR37z6XouLutS-pmeV6Vg",{"data":4121,"body":4122},{},{"type":4123,"children":4124},"root",[4125],{"type":178,"tag":964,"props":4126,"children":4127},{},[4128],{"type":4129,"value":263},"text",1774901427879]