[{"data":1,"prerenderedAt":666},["ShallowReactive",2],{"mobile-docs-navigation":3,"command-menu-docs":118,"navigation":171,"mobile-docs-page-meta":204,"docs-pages-category":235,"\u002Fdocs\u002Fcomponents\u002Fmodel-picker":262,"surround-\u002Fdocs\u002Fcomponents\u002Fmodel-picker":663},[4],{"title":5,"path":6,"stem":7,"children":8,"page":117},"Docs","\u002Fdocs","docs",[9,19],{"title":10,"path":11,"stem":12,"children":13},"Introduction","\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started\u002F1.index",[14,15],{"title":10,"path":11,"stem":12},{"title":16,"path":17,"stem":18},"Installation","\u002Fdocs\u002Fgetting-started\u002Finstallation","docs\u002F1.getting-started\u002F2.installation",{"title":20,"path":21,"stem":22,"children":23},"Components","\u002Fdocs\u002Fcomponents","docs\u002F2.components\u002F0.index",[24,25,29,33,37,41,45,49,53,57,61,65,69,73,77,81,85,89,93,97,101,105,109,113],{"title":20,"path":21,"stem":22},{"title":26,"path":27,"stem":28},"Chat","\u002Fdocs\u002Fcomponents\u002Fchat","docs\u002F2.components\u002F1.chat",{"title":30,"path":31,"stem":32},"PolaroidCard","\u002Fdocs\u002Fcomponents\u002Fpolaroid-card","docs\u002F2.components\u002F10.polaroid-card",{"title":34,"path":35,"stem":36},"FeatureCard","\u002Fdocs\u002Fcomponents\u002Ffeature-card","docs\u002F2.components\u002F11.feature-card",{"title":38,"path":39,"stem":40},"ChangelogTimeline","\u002Fdocs\u002Fcomponents\u002Fchangelog-timeline","docs\u002F2.components\u002F12.changelog-timeline",{"title":42,"path":43,"stem":44},"MetricsGrid","\u002Fdocs\u002Fcomponents\u002Fmetrics-grid","docs\u002F2.components\u002F13.metrics-grid",{"title":46,"path":47,"stem":48},"Testimonials","\u002Fdocs\u002Fcomponents\u002Ftestimonials","docs\u002F2.components\u002F13.testimonials",{"title":50,"path":51,"stem":52},"FeatureGrid","\u002Fdocs\u002Fcomponents\u002Ffeature-grid","docs\u002F2.components\u002F14.feature-grid",{"title":54,"path":55,"stem":56},"FaqTabs","\u002Fdocs\u002Fcomponents\u002Ffaq-tabs","docs\u002F2.components\u002F15.faq-tabs",{"title":58,"path":59,"stem":60},"BlogPostGrid","\u002Fdocs\u002Fcomponents\u002Fblog-post-grid","docs\u002F2.components\u002F16.blog-post-grid",{"title":62,"path":63,"stem":64},"FeatureSplit","\u002Fdocs\u002Fcomponents\u002Ffeature-split","docs\u002F2.components\u002F17.feature-split",{"title":66,"path":67,"stem":68},"FileAttachment","\u002Fdocs\u002Fcomponents\u002Ffile-attachment","docs\u002F2.components\u002F17.file-attachment",{"title":70,"path":71,"stem":72},"ModelPicker","\u002Fdocs\u002Fcomponents\u002Fmodel-picker","docs\u002F2.components\u002F17.model-picker",{"title":74,"path":75,"stem":76},"WorkExperience","\u002Fdocs\u002Fcomponents\u002Fwork-experience","docs\u002F2.components\u002F17.work-experience",{"title":78,"path":79,"stem":80},"ChatMessage","\u002Fdocs\u002Fcomponents\u002Fchat-message","docs\u002F2.components\u002F2.chat-message",{"title":82,"path":83,"stem":84},"ChatMessages","\u002Fdocs\u002Fcomponents\u002Fchat-messages","docs\u002F2.components\u002F3.chat-messages",{"title":86,"path":87,"stem":88},"ChatPrompt","\u002Fdocs\u002Fcomponents\u002Fchat-prompt","docs\u002F2.components\u002F4.chat-prompt",{"title":90,"path":91,"stem":92},"ChatPromptSubmit","\u002Fdocs\u002Fcomponents\u002Fchat-prompt-submit","docs\u002F2.components\u002F5.chat-prompt-submit",{"title":94,"path":95,"stem":96},"DocsSearchModal","\u002Fdocs\u002Fcomponents\u002Fdocs-search-modal","docs\u002F2.components\u002F6.docs-search-modal",{"title":98,"path":99,"stem":100},"PricingPlans","\u002Fdocs\u002Fcomponents\u002Fpricing-plans","docs\u002F2.components\u002F7.pricing-plans",{"title":102,"path":103,"stem":104},"PageToc","\u002Fdocs\u002Fcomponents\u002Fpage-toc","docs\u002F2.components\u002F8.page-toc",{"title":106,"path":107,"stem":108},"ReasoningDisclosure","\u002Fdocs\u002Fcomponents\u002Freasoning-disclosure","docs\u002F2.components\u002F8.reasoning-disclosure",{"title":110,"path":111,"stem":112},"DocsPager","\u002Fdocs\u002Fcomponents\u002Fdocs-pager","docs\u002F2.components\u002F9.docs-pager",{"title":114,"path":115,"stem":116},"HomeCta","\u002Fdocs\u002Fcomponents\u002Fhome-cta","docs\u002F2.components\u002F9.home-cta",false,[119,121,123,125,127,129,131,133,135,137,139,141,143,145,147,149,151,153,155,157,159,161,163,165,167,169],{"path":59,"title":58,"description":120},"Render responsive blog and content teaser grids from display-ready post data.",{"path":39,"title":38,"description":122},"Render a release timeline from app-owned changelog data with optional rich body slots.",{"path":27,"title":26,"description":124},"Build Nuxt chat interfaces with installable shadcn-vue components you own and compose.",{"path":79,"title":78,"description":126},"Render an individual chat message bubble with AI SDK parts, actions, and layout control.",{"path":83,"title":82,"description":128},"Compose chat message lists with scrolling behavior, loading states, and action-ready assistant output.",{"path":87,"title":86,"description":130},"Build chat input flows with an auto-resizing prompt, keyboard shortcuts, and flexible slot composition.",{"path":91,"title":90,"description":132},"Handle chat submit, stop, and retry actions with a status-aware control for prompt workflows.",{"path":21,"title":20,"description":134},"Explore reusable components that complement Nuxt templates and real app workflows.",{"path":111,"title":110,"description":136},"Render previous and next documentation links from app-owned page data.",{"path":95,"title":94,"description":138},"Add a lightweight local search modal to Nuxt documentation interfaces.",{"path":55,"title":54,"description":140},"Render categorized FAQ sections while keeping answer content in your app.",{"path":35,"title":34,"description":142},"Render a reusable feature, content, or navigation card with optional link and icon slot.",{"path":51,"title":50,"description":144},"Render a complete feature section from app-owned feature data.",{"path":63,"title":62,"description":146},"Render alternating split feature sections with app-owned media and icon slots.",{"path":67,"title":66,"description":148},"Render display-only file attachment UI while your app owns upload behavior.",{"path":115,"title":114,"description":150},"Render a centered marketing CTA section with an integrated starfield background.",{"path":17,"title":16,"description":152},"Start from templates or install individual components in your Nuxt project.",{"path":11,"title":10,"description":154},"Stackhacker UI is an open-source collection of Nuxt templates and components for the shadcn-vue community.",{"path":43,"title":42,"description":156},"Render a responsive marketing metrics section from app-owned data.",{"path":71,"title":70,"description":158},"Render a controlled model selector from app-owned model\u002Fprovider data.",{"path":103,"title":102,"description":160},"Render an on-page table of contents from app-supplied heading links.",{"path":31,"title":30,"description":162},"Render a tilted photo card with app-owned image data and explicit presentation controls.",{"path":99,"title":98,"description":164},"Render a responsive pricing plan section from app-owned data.",{"path":107,"title":106,"description":166},"Show app-owned AI reasoning text in a compact collapsible disclosure.",{"path":47,"title":46,"description":168},"Render a responsive social-proof section from app-owned testimonial data.",{"path":75,"title":74,"description":170},"Render compact work-history and resume lists from app-owned experience data.",[172],{"title":5,"path":6,"stem":7,"children":173,"page":117},[174,178],{"title":10,"path":11,"stem":12,"children":175},[176,177],{"title":10,"path":11,"stem":12},{"title":16,"path":17,"stem":18},{"title":20,"path":21,"stem":22,"children":179},[180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203],{"title":20,"path":21,"stem":22},{"title":26,"path":27,"stem":28},{"title":30,"path":31,"stem":32},{"title":34,"path":35,"stem":36},{"title":38,"path":39,"stem":40},{"title":42,"path":43,"stem":44},{"title":46,"path":47,"stem":48},{"title":50,"path":51,"stem":52},{"title":54,"path":55,"stem":56},{"title":58,"path":59,"stem":60},{"title":62,"path":63,"stem":64},{"title":66,"path":67,"stem":68},{"title":70,"path":71,"stem":72},{"title":74,"path":75,"stem":76},{"title":78,"path":79,"stem":80},{"title":82,"path":83,"stem":84},{"title":86,"path":87,"stem":88},{"title":90,"path":91,"stem":92},{"title":94,"path":95,"stem":96},{"title":98,"path":99,"stem":100},{"title":102,"path":103,"stem":104},{"title":106,"path":107,"stem":108},{"title":110,"path":111,"stem":112},{"title":114,"path":115,"stem":116},[205,207,208,209,211,213,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234],{"path":11,"category":206},"overview",{"path":17,"category":206},{"path":21,"category":206},{"path":27,"category":210},"chat",{"path":31,"category":212},"content",{"path":35,"category":214},"marketing",{"path":39,"category":212},{"path":43,"category":214},{"path":47,"category":214},{"path":51,"category":214},{"path":55,"category":214},{"path":59,"category":212},{"path":63,"category":214},{"path":67,"category":210},{"path":71,"category":210},{"path":75,"category":212},{"path":79,"category":210},{"path":83,"category":210},{"path":87,"category":210},{"path":91,"category":210},{"path":95,"category":212},{"path":99,"category":214},{"path":103,"category":212},{"path":107,"category":210},{"path":111,"category":212},{"path":115,"category":214},[236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261],{"path":11,"category":206},{"path":17,"category":206},{"path":21,"category":206},{"path":27,"category":210},{"path":31,"category":212},{"path":35,"category":214},{"path":39,"category":212},{"path":43,"category":214},{"path":47,"category":214},{"path":51,"category":214},{"path":55,"category":214},{"path":59,"category":212},{"path":63,"category":214},{"path":67,"category":210},{"path":71,"category":210},{"path":75,"category":212},{"path":79,"category":210},{"path":83,"category":210},{"path":87,"category":210},{"path":91,"category":210},{"path":95,"category":212},{"path":99,"category":214},{"path":103,"category":212},{"path":107,"category":210},{"path":111,"category":212},{"path":115,"category":214},{"id":263,"title":70,"body":264,"category":210,"description":158,"extension":658,"meta":659,"navigation":660,"path":71,"seo":661,"stem":72,"__hash__":662},"docs\u002Fdocs\u002F2.components\u002F17.model-picker.md",{"type":265,"value":266,"toc":642},"minimark",[267,271,275,286,290,298,302,308,323,327,332,334,338,342,518,522,530,534,564,568],[268,269],"component-preview",{"name":270},"ModelPickerDemo",[272,273,16],"h2",{"id":274},"installation",[276,277,283],"pre",{"className":278,"code":280,"language":281,"meta":282},[279],"language-bash","npx shadcn-vue@latest add \"https:\u002F\u002Fui.stackhacker.io\u002Fr\u002Fmodel-picker.json\"\n","bash","",[284,285,280],"code",{"__ignoreMap":282},[272,287,289],{"id":288},"usage","Usage",[276,291,296],{"className":292,"code":294,"language":295,"meta":282},[293],"language-vue","\u003Cscript setup lang=\"ts\">\nimport { ref } from 'vue'\nimport { ModelPicker, type ModelPickerModel } from '@\u002Fcomponents\u002Fmodel-picker'\n\nconst selected = ref('openai\u002Fgpt-5-nano')\n\nconst models: ModelPickerModel[] = [\n  { value: 'openai\u002Fgpt-5-nano', label: 'GPT-5 Nano', provider: 'OpenAI' },\n  { value: 'anthropic\u002Fclaude-haiku-4.5', label: 'Claude Haiku 4.5', provider: 'Anthropic' }\n]\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003CModelPicker v-model=\"selected\" :models=\"models\" \u002F>\n\u003C\u002Ftemplate>\n","vue",[284,297,294],{"__ignoreMap":282},[272,299,301],{"id":300},"app-owned-model-state","App-Owned Model State",[303,304,305,307],"p",{},[284,306,70],{}," is controlled UI. Your app owns model availability, provider metadata, persistence, cookies or local storage, pricing, and runtime selection behavior.",[303,309,310,311,314,315,318,319,322],{},"Pass model options through the ",[284,312,313],{},"models"," prop and handle ",[284,316,317],{},"update:modelValue"," through ",[284,320,321],{},"v-model",". Use scoped slots for provider icons or custom option rendering instead of Nuxt Icon strings or hardcoded provider lists.",[272,324,326],{"id":325},"examples","Examples",[328,329,331],"h3",{"id":330},"controlled-picker","Controlled picker",[268,333],{"name":270},[272,335,337],{"id":336},"api-reference","API Reference",[328,339,341],{"id":340},"props","Props",[343,344,345,364],"table",{},[346,347,348],"thead",{},[349,350,351,355,358,361],"tr",{},[352,353,354],"th",{},"Prop",[352,356,357],{},"Type",[352,359,360],{},"Default",[352,362,363],{},"Description",[365,366,367,386,405,424,443,462,482,502],"tbody",{},[349,368,369,375,380,383],{},[370,371,372],"td",{},[284,373,374],{},"modelValue",[370,376,377],{},[284,378,379],{},"string",[370,381,382],{},"—",[370,384,385],{},"Controlled selected model value.",[349,387,388,392,397,402],{},[370,389,390],{},[284,391,313],{},[370,393,394],{},[284,395,396],{},"ModelPickerModel[] | null",[370,398,399],{},[284,400,401],{},"[]",[370,403,404],{},"Models supplied by your app.",[349,406,407,412,416,421],{},[370,408,409],{},[284,410,411],{},"placeholder",[370,413,414],{},[284,415,379],{},[370,417,418],{},[284,419,420],{},"'Select model'",[370,422,423],{},"Trigger placeholder when selected value is unknown.",[349,425,426,431,435,440],{},[370,427,428],{},[284,429,430],{},"searchPlaceholder",[370,432,433],{},[284,434,379],{},[370,436,437],{},[284,438,439],{},"'Search models...'",[370,441,442],{},"Search input placeholder.",[349,444,445,450,454,459],{},[370,446,447],{},[284,448,449],{},"emptyLabel",[370,451,452],{},[284,453,379],{},[370,455,456],{},[284,457,458],{},"'No models found.'",[370,460,461],{},"Empty state text.",[349,463,464,469,474,479],{},[370,465,466],{},[284,467,468],{},"disabled",[370,470,471],{},[284,472,473],{},"boolean",[370,475,476],{},[284,477,478],{},"false",[370,480,481],{},"Disable the picker.",[349,483,484,489,494,499],{},[370,485,486],{},[284,487,488],{},"align",[370,490,491],{},[284,492,493],{},"'start' | 'end'",[370,495,496],{},[284,497,498],{},"'start'",[370,500,501],{},"Align the menu against the trigger.",[349,503,504,509,513,515],{},[370,505,506],{},[284,507,508],{},"class",[370,510,511],{},[284,512,379],{},[370,514,382],{},[370,516,517],{},"Additional CSS classes for the root element.",[328,519,521],{"id":520},"types","Types",[276,523,528],{"className":524,"code":526,"language":527,"meta":282},[525],"language-ts","interface ModelPickerModel {\n  value: string\n  label: string\n  description?: string\n  provider?: string\n  disabled?: boolean\n}\n","ts",[284,529,526],{"__ignoreMap":282},[328,531,533],{"id":532},"events","Events",[343,535,536,548],{},[346,537,538],{},[349,539,540,543,546],{},[352,541,542],{},"Event",[352,544,545],{},"Payload",[352,547,363],{},[365,549,550],{},[349,551,552,556,561],{},[370,553,554],{},[284,555,317],{},[370,557,558],{},[284,559,560],{},"[value: string]",[370,562,563],{},"Emitted when a selectable model is chosen.",[328,565,567],{"id":566},"slots","Slots",[343,569,570,581],{},[346,571,572],{},[349,573,574,577,579],{},[352,575,576],{},"Slot",[352,578,341],{},[352,580,363],{},[365,582,583,598,612,627],{},[349,584,585,590,595],{},[370,586,587],{},[284,588,589],{},"icon",[370,591,592],{},[284,593,594],{},"{ model?: ModelPickerModel }",[370,596,597],{},"Optional icon for the selected model and option rows.",[349,599,600,605,609],{},[370,601,602],{},[284,603,604],{},"selected",[370,606,607],{},[284,608,594],{},[370,610,611],{},"Replace trigger selected-model content.",[349,613,614,619,624],{},[370,615,616],{},[284,617,618],{},"option",[370,620,621],{},[284,622,623],{},"{ model: ModelPickerModel, selected: boolean }",[370,625,626],{},"Replace option row content.",[349,628,629,634,639],{},[370,630,631],{},[284,632,633],{},"empty",[370,635,636],{},[284,637,638],{},"{ query: string }",[370,640,641],{},"Replace empty state content.",{"title":282,"searchDepth":643,"depth":643,"links":644},2,[645,646,647,648,652],{"id":274,"depth":643,"text":16},{"id":288,"depth":643,"text":289},{"id":300,"depth":643,"text":301},{"id":325,"depth":643,"text":326,"children":649},[650],{"id":330,"depth":651,"text":331},3,{"id":336,"depth":643,"text":337,"children":653},[654,655,656,657],{"id":340,"depth":651,"text":341},{"id":520,"depth":651,"text":521},{"id":532,"depth":651,"text":533},{"id":566,"depth":651,"text":567},"md",{},true,{"title":70,"description":158},"P82U78_OYxcf65hZkWOGPWEgMiHnh7mfP9rrzFlPqQc",[664,665],{"title":66,"path":67,"stem":68,"children":-1},{"title":74,"path":75,"stem":76,"children":-1},1782622539353]