[{"data":1,"prerenderedAt":668},["ShallowReactive",2],{"mobile-docs-navigation":3,"command-menu-docs":118,"navigation":171,"mobile-docs-page-meta":204,"docs-pages-category":235,"\u002Fdocs\u002Fcomponents\u002Ffile-attachment":262,"surround-\u002Fdocs\u002Fcomponents\u002Ffile-attachment":665},[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":66,"body":264,"category":210,"description":148,"extension":660,"meta":661,"navigation":662,"path":67,"seo":663,"stem":68,"__hash__":664},"docs\u002Fdocs\u002F2.components\u002F17.file-attachment.md",{"type":265,"value":266,"toc":645},"minimark",[267,271,275,286,290,298,302,308,323,327,332,334,338,342,549,553,584,588],[268,269],"component-preview",{"name":270},"FileAttachmentDemo",[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\u002Ffile-attachment.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 { FileAttachment } from '@\u002Fcomponents\u002Ffile-attachment'\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003CFileAttachment\n    name=\"product-shot.png\"\n    type=\"image\u002Fpng\"\n    preview-url=\"\u002Fuploads\u002Fproduct-shot.png\"\n    status=\"uploaded\"\n    removable\n    @remove=\"removeAttachment\"\n  \u002F>\n\u003C\u002Ftemplate>\n","vue",[284,297,294],{"__ignoreMap":282},[272,299,301],{"id":300},"app-owned-upload-state","App-Owned Upload State",[303,304,305,307],"p",{},[284,306,66],{}," renders display-only attachment UI. Your app owns upload handlers, preview URL creation and cleanup, file limits, server state, toast messages, and removal confirmation.",[303,309,310,311,314,315,318,319,322],{},"Pass display-ready state through props. Use the ",[284,312,313],{},"icon",", ",[284,316,317],{},"preview",", or ",[284,320,321],{},"actions"," slots when your app needs custom file-type icons, preview rendering, or actions.",[272,324,326],{"id":325},"examples","Examples",[328,329,331],"h3",{"id":330},"status-states","Status states",[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,440,460,478,498,517,533],"tbody",{},[349,368,369,375,380,383],{},[370,371,372],"td",{},[284,373,374],{},"name",[370,376,377],{},[284,378,379],{},"string",[370,381,382],{},"—",[370,384,385],{},"Original file name supplied by your app.",[349,387,388,393,397,402],{},[370,389,390],{},[284,391,392],{},"type",[370,394,395],{},[284,396,379],{},[370,398,399],{},[284,400,401],{},"\"\"",[370,403,404],{},"Optional MIME type used for default fallback icons.",[349,406,407,412,416,418],{},[370,408,409],{},[284,410,411],{},"displayName",[370,413,414],{},[284,415,379],{},[370,417,382],{},[370,419,420,421,423],{},"Optional display name. Falls back to ",[284,422,374],{},".",[349,425,426,431,435,437],{},[370,427,428],{},[284,429,430],{},"previewUrl",[370,432,433],{},[284,434,379],{},[370,436,382],{},[370,438,439],{},"Optional preview image URL supplied by your app.",[349,441,442,447,452,457],{},[370,443,444],{},[284,445,446],{},"status",[370,448,449],{},[284,450,451],{},"'idle' | 'uploading' | 'uploaded' | 'error'",[370,453,454],{},[284,455,456],{},"'idle'",[370,458,459],{},"Display status supplied by your app.",[349,461,462,467,471,473],{},[370,463,464],{},[284,465,466],{},"error",[370,468,469],{},[284,470,379],{},[370,472,382],{},[370,474,475,476,423],{},"Error text shown when status is ",[284,477,466],{},[349,479,480,485,490,495],{},[370,481,482],{},[284,483,484],{},"removable",[370,486,487],{},[284,488,489],{},"boolean",[370,491,492],{},[284,493,494],{},"false",[370,496,497],{},"Show a remove button when not uploading.",[349,499,500,505,509,514],{},[370,501,502],{},[284,503,504],{},"removeLabel",[370,506,507],{},[284,508,379],{},[370,510,511],{},[284,512,513],{},"'Remove attachment'",[370,515,516],{},"Accessible label for the remove button.",[349,518,519,524,528,530],{},[370,520,521],{},[284,522,523],{},"ariaLabel",[370,525,526],{},[284,527,379],{},[370,529,382],{},[370,531,532],{},"Accessible label for the attachment.",[349,534,535,540,544,546],{},[370,536,537],{},[284,538,539],{},"class",[370,541,542],{},[284,543,379],{},[370,545,382],{},[370,547,548],{},"Additional CSS classes for the root element.",[328,550,552],{"id":551},"events","Events",[343,554,555,567],{},[346,556,557],{},[349,558,559,562,565],{},[352,560,561],{},"Event",[352,563,564],{},"Payload",[352,566,363],{},[365,568,569],{},[349,570,571,576,581],{},[370,572,573],{},[284,574,575],{},"remove",[370,577,578],{},[284,579,580],{},"[]",[370,582,583],{},"Emitted when the remove button is clicked.",[328,585,587],{"id":586},"slots","Slots",[343,589,590,601],{},[346,591,592],{},[349,593,594,597,599],{},[352,595,596],{},"Slot",[352,598,341],{},[352,600,363],{},[365,602,603,617,631],{},[349,604,605,609,614],{},[370,606,607],{},[284,608,317],{},[370,610,611],{},[284,612,613],{},"{ name, displayName, type, previewUrl, status }",[370,615,616],{},"Replace the preview area.",[349,618,619,623,628],{},[370,620,621],{},[284,622,313],{},[370,624,625],{},[284,626,627],{},"{ name, displayName, type, status }",[370,629,630],{},"Replace the fallback file icon.",[349,632,633,637,642],{},[370,634,635],{},[284,636,321],{},[370,638,639],{},[284,640,641],{},"{ name, displayName, type, previewUrl, status, remove }",[370,643,644],{},"Replace the remove\u002Faction area.",{"title":282,"searchDepth":646,"depth":646,"links":647},2,[648,649,650,651,655],{"id":274,"depth":646,"text":16},{"id":288,"depth":646,"text":289},{"id":300,"depth":646,"text":301},{"id":325,"depth":646,"text":326,"children":652},[653],{"id":330,"depth":654,"text":331},3,{"id":336,"depth":646,"text":337,"children":656},[657,658,659],{"id":340,"depth":654,"text":341},{"id":551,"depth":654,"text":552},{"id":586,"depth":654,"text":587},"md",{},true,{"title":66,"description":148},"60DjJ9yf0x1kTV2RBNjbP8bpSegD-DouB4wI1xAbETM",[666,667],{"title":62,"path":63,"stem":64,"children":-1},{"title":70,"path":71,"stem":72,"children":-1},1782622539333]