[{"data":1,"prerenderedAt":1456},["ShallowReactive",2],{"navigation":3,"$f1jvagmno7cfld":496,"\u002Fdocs\u002Fcomponents\u002Fattachment":507,"surround-\u002Fdocs\u002Fcomponents\u002Fattachment":1453},[4],{"title":5,"path":6,"stem":7,"children":8,"page":18},"Docs","\u002Fdocs","docs",[9,326,352,370,376,393,419,432],{"title":10,"path":11,"stem":12,"children":13,"new":18,"type":325},"Components","\u002Fdocs\u002Fcomponents","docs\u002F02.components",[14,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96,100,104,108,112,116,120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180,184,188,192,196,200,204,208,212,216,221,225,229,233,237,241,245,249,253,257,261,265,269,273,277,281,285,289,293,297,301,305,309,313,317,321],{"title":15,"path":16,"stem":17,"new":18,"type":19,"children":-1},"Accordion","\u002Fdocs\u002Fcomponents\u002Faccordion","docs\u002Fcomponents\u002Faccordion",false,"component",{"title":21,"path":22,"stem":23,"new":18,"type":19,"children":-1},"Alert","\u002Fdocs\u002Fcomponents\u002Falert","docs\u002Fcomponents\u002Falert",{"title":25,"path":26,"stem":27,"new":18,"type":19,"children":-1},"Alert Dialog","\u002Fdocs\u002Fcomponents\u002Falert-dialog","docs\u002Fcomponents\u002Falert-dialog",{"title":29,"path":30,"stem":31,"new":18,"type":19,"children":-1},"Aspect Ratio","\u002Fdocs\u002Fcomponents\u002Faspect-ratio","docs\u002Fcomponents\u002Faspect-ratio",{"title":33,"path":34,"stem":35,"new":18,"type":19,"children":-1},"Attachment","\u002Fdocs\u002Fcomponents\u002Fattachment","docs\u002Fcomponents\u002Fattachment",{"title":37,"path":38,"stem":39,"new":18,"type":19,"children":-1},"Avatar","\u002Fdocs\u002Fcomponents\u002Favatar","docs\u002Fcomponents\u002Favatar",{"title":41,"path":42,"stem":43,"new":18,"type":19,"children":-1},"Badge","\u002Fdocs\u002Fcomponents\u002Fbadge","docs\u002Fcomponents\u002Fbadge",{"title":45,"path":46,"stem":47,"new":18,"type":19,"children":-1},"Breadcrumb","\u002Fdocs\u002Fcomponents\u002Fbreadcrumb","docs\u002Fcomponents\u002Fbreadcrumb",{"title":49,"path":50,"stem":51,"new":18,"type":19,"children":-1},"Bubble","\u002Fdocs\u002Fcomponents\u002Fbubble","docs\u002Fcomponents\u002Fbubble",{"title":53,"path":54,"stem":55,"new":18,"type":19,"children":-1},"Button","\u002Fdocs\u002Fcomponents\u002Fbutton","docs\u002Fcomponents\u002Fbutton",{"title":57,"path":58,"stem":59,"new":18,"type":19,"children":-1},"Button Group","\u002Fdocs\u002Fcomponents\u002Fbutton-group","docs\u002Fcomponents\u002Fbutton-group",{"title":61,"path":62,"stem":63,"new":18,"type":19,"children":-1},"Calendar","\u002Fdocs\u002Fcomponents\u002Fcalendar","docs\u002Fcomponents\u002Fcalendar",{"title":65,"path":66,"stem":67,"new":18,"type":19,"children":-1},"Card","\u002Fdocs\u002Fcomponents\u002Fcard","docs\u002Fcomponents\u002Fcard",{"title":69,"path":70,"stem":71,"new":18,"type":19,"children":-1},"Carousel","\u002Fdocs\u002Fcomponents\u002Fcarousel","docs\u002Fcomponents\u002Fcarousel",{"title":73,"path":74,"stem":75,"new":18,"type":19,"children":-1},"Chart","\u002Fdocs\u002Fcomponents\u002Fchart","docs\u002Fcomponents\u002Fchart",{"title":77,"path":78,"stem":79,"new":18,"type":19,"children":-1},"Checkbox","\u002Fdocs\u002Fcomponents\u002Fcheckbox","docs\u002Fcomponents\u002Fcheckbox",{"title":81,"path":82,"stem":83,"new":18,"type":19,"children":-1},"Collapsible","\u002Fdocs\u002Fcomponents\u002Fcollapsible","docs\u002Fcomponents\u002Fcollapsible",{"title":85,"path":86,"stem":87,"new":18,"type":19,"children":-1},"ColorPicker","\u002Fdocs\u002Fcomponents\u002Fcolor-picker","docs\u002Fcomponents\u002Fcolor-picker",{"title":89,"path":90,"stem":91,"new":18,"type":19,"children":-1},"Combobox","\u002Fdocs\u002Fcomponents\u002Fcombobox","docs\u002Fcomponents\u002Fcombobox",{"title":93,"path":94,"stem":95,"new":18,"type":19,"children":-1},"Command","\u002Fdocs\u002Fcomponents\u002Fcommand","docs\u002Fcomponents\u002Fcommand",{"title":97,"path":98,"stem":99,"new":18,"type":19,"children":-1},"Context Menu","\u002Fdocs\u002Fcomponents\u002Fcontext-menu","docs\u002Fcomponents\u002Fcontext-menu",{"title":101,"path":102,"stem":103,"new":18,"type":19,"children":-1},"Curves","\u002Fdocs\u002Fcomponents\u002Fcurves","docs\u002Fcomponents\u002Fcurves",{"title":105,"path":106,"stem":107,"new":18,"type":19,"children":-1},"Data Table","\u002Fdocs\u002Fcomponents\u002Fdata-table","docs\u002Fcomponents\u002Fdata-table",{"title":109,"path":110,"stem":111,"new":18,"type":19,"children":-1},"Date Picker","\u002Fdocs\u002Fcomponents\u002Fdate-picker","docs\u002Fcomponents\u002Fdate-picker",{"title":113,"path":114,"stem":115,"new":18,"type":19,"children":-1},"Dialog","\u002Fdocs\u002Fcomponents\u002Fdialog","docs\u002Fcomponents\u002Fdialog",{"title":117,"path":118,"stem":119,"new":18,"type":19,"children":-1},"Drawer","\u002Fdocs\u002Fcomponents\u002Fdrawer","docs\u002Fcomponents\u002Fdrawer",{"title":121,"path":122,"stem":123,"new":18,"type":19,"children":-1},"Dropdown Menu","\u002Fdocs\u002Fcomponents\u002Fdropdown-menu","docs\u002Fcomponents\u002Fdropdown-menu",{"title":125,"path":126,"stem":127,"new":18,"type":19,"children":-1},"Empty","\u002Fdocs\u002Fcomponents\u002Fempty","docs\u002Fcomponents\u002Fempty",{"title":129,"path":130,"stem":131,"new":18,"type":19,"children":-1},"Field","\u002Fdocs\u002Fcomponents\u002Ffield","docs\u002Fcomponents\u002Ffield",{"title":133,"path":134,"stem":135,"new":18,"type":19,"children":-1},"FontPicker","\u002Fdocs\u002Fcomponents\u002Ffont-picker","docs\u002Fcomponents\u002Ffont-picker",{"title":137,"path":138,"stem":139,"new":18,"type":19,"children":-1},"Form","\u002Fdocs\u002Fcomponents\u002Fform","docs\u002Fcomponents\u002Fform",{"title":141,"path":142,"stem":143,"new":18,"type":19,"children":-1},"Gradient Picker","\u002Fdocs\u002Fcomponents\u002Fgradient-picker","docs\u002Fcomponents\u002Fgradient-picker",{"title":145,"path":146,"stem":147,"new":18,"type":19,"children":-1},"Hover Card","\u002Fdocs\u002Fcomponents\u002Fhover-card","docs\u002Fcomponents\u002Fhover-card",{"title":149,"path":150,"stem":151,"new":18,"type":19,"children":-1},"Input","\u002Fdocs\u002Fcomponents\u002Finput","docs\u002Fcomponents\u002Finput",{"title":153,"path":154,"stem":155,"new":18,"type":19,"children":-1},"Input Group","\u002Fdocs\u002Fcomponents\u002Finput-group","docs\u002Fcomponents\u002Finput-group",{"title":157,"path":158,"stem":159,"new":18,"type":19,"children":-1},"Input OTP","\u002Fdocs\u002Fcomponents\u002Finput-otp","docs\u002Fcomponents\u002Finput-otp",{"title":161,"path":162,"stem":163,"new":18,"type":19,"children":-1},"Item","\u002Fdocs\u002Fcomponents\u002Fitem","docs\u002Fcomponents\u002Fitem",{"title":165,"path":166,"stem":167,"new":18,"type":19,"children":-1},"Kbd","\u002Fdocs\u002Fcomponents\u002Fkbd","docs\u002Fcomponents\u002Fkbd",{"title":169,"path":170,"stem":171,"new":18,"type":19,"children":-1},"Label","\u002Fdocs\u002Fcomponents\u002Flabel","docs\u002Fcomponents\u002Flabel",{"title":173,"path":174,"stem":175,"new":18,"type":19,"children":-1},"Marker","\u002Fdocs\u002Fcomponents\u002Fmarker","docs\u002Fcomponents\u002Fmarker",{"title":177,"path":178,"stem":179,"new":18,"type":19,"children":-1},"Menubar","\u002Fdocs\u002Fcomponents\u002Fmenubar","docs\u002Fcomponents\u002Fmenubar",{"title":181,"path":182,"stem":183,"new":18,"type":19,"children":-1},"Message","\u002Fdocs\u002Fcomponents\u002Fmessage","docs\u002Fcomponents\u002Fmessage",{"title":185,"path":186,"stem":187,"new":18,"type":19,"children":-1},"Message Scroller","\u002Fdocs\u002Fcomponents\u002Fmessage-scroller","docs\u002Fcomponents\u002Fmessage-scroller",{"title":189,"path":190,"stem":191,"new":18,"type":19,"children":-1},"Native Select","\u002Fdocs\u002Fcomponents\u002Fnative-select","docs\u002Fcomponents\u002Fnative-select",{"title":193,"path":194,"stem":195,"new":18,"type":19,"children":-1},"Navigation Menu","\u002Fdocs\u002Fcomponents\u002Fnavigation-menu","docs\u002Fcomponents\u002Fnavigation-menu",{"title":197,"path":198,"stem":199,"new":18,"type":19,"children":-1},"Number Field","\u002Fdocs\u002Fcomponents\u002Fnumber-field","docs\u002Fcomponents\u002Fnumber-field",{"title":201,"path":202,"stem":203,"new":18,"type":19,"children":-1},"Pagination","\u002Fdocs\u002Fcomponents\u002Fpagination","docs\u002Fcomponents\u002Fpagination",{"title":205,"path":206,"stem":207,"new":18,"type":19,"children":-1},"Pin Input","\u002Fdocs\u002Fcomponents\u002Fpin-input","docs\u002Fcomponents\u002Fpin-input",{"title":209,"path":210,"stem":211,"new":18,"type":19,"children":-1},"Popover","\u002Fdocs\u002Fcomponents\u002Fpopover","docs\u002Fcomponents\u002Fpopover",{"title":213,"path":214,"stem":215,"new":18,"type":19,"children":-1},"Progress","\u002Fdocs\u002Fcomponents\u002Fprogress","docs\u002Fcomponents\u002Fprogress",{"title":217,"path":218,"stem":219,"new":220,"type":19,"children":-1},"Questionnaire","\u002Fdocs\u002Fcomponents\u002Fquestionnaire","docs\u002Fcomponents\u002Fquestionnaire",true,{"title":222,"path":223,"stem":224,"new":18,"type":19,"children":-1},"Radio Group","\u002Fdocs\u002Fcomponents\u002Fradio-group","docs\u002Fcomponents\u002Fradio-group",{"title":226,"path":227,"stem":228,"new":18,"type":19,"children":-1},"Range Calendar","\u002Fdocs\u002Fcomponents\u002Frange-calendar","docs\u002Fcomponents\u002Frange-calendar",{"title":230,"path":231,"stem":232,"new":18,"type":19,"children":-1},"Resizable","\u002Fdocs\u002Fcomponents\u002Fresizable","docs\u002Fcomponents\u002Fresizable",{"title":234,"path":235,"stem":236,"new":18,"type":19,"children":-1},"Scroll Area","\u002Fdocs\u002Fcomponents\u002Fscroll-area","docs\u002Fcomponents\u002Fscroll-area",{"title":238,"path":239,"stem":240,"new":18,"type":19,"children":-1},"Select","\u002Fdocs\u002Fcomponents\u002Fselect","docs\u002Fcomponents\u002Fselect",{"title":242,"path":243,"stem":244,"new":18,"type":19,"children":-1},"Separator","\u002Fdocs\u002Fcomponents\u002Fseparator","docs\u002Fcomponents\u002Fseparator",{"title":246,"path":247,"stem":248,"new":18,"type":19,"children":-1},"Sheet","\u002Fdocs\u002Fcomponents\u002Fsheet","docs\u002Fcomponents\u002Fsheet",{"title":250,"path":251,"stem":252,"new":18,"type":19,"children":-1},"Sidebar","\u002Fdocs\u002Fcomponents\u002Fsidebar","docs\u002Fcomponents\u002Fsidebar",{"title":254,"path":255,"stem":256,"new":18,"type":19,"children":-1},"Skeleton","\u002Fdocs\u002Fcomponents\u002Fskeleton","docs\u002Fcomponents\u002Fskeleton",{"title":258,"path":259,"stem":260,"new":18,"type":19,"children":-1},"Slider","\u002Fdocs\u002Fcomponents\u002Fslider","docs\u002Fcomponents\u002Fslider",{"title":262,"path":263,"stem":264,"new":18,"type":19,"children":-1},"Sonner","\u002Fdocs\u002Fcomponents\u002Fsonner","docs\u002Fcomponents\u002Fsonner",{"title":266,"path":267,"stem":268,"new":18,"type":19,"children":-1},"Spinner","\u002Fdocs\u002Fcomponents\u002Fspinner","docs\u002Fcomponents\u002Fspinner",{"title":270,"path":271,"stem":272,"new":18,"type":19,"children":-1},"Stepper","\u002Fdocs\u002Fcomponents\u002Fstepper","docs\u002Fcomponents\u002Fstepper",{"title":274,"path":275,"stem":276,"new":18,"type":19,"children":-1},"Switch","\u002Fdocs\u002Fcomponents\u002Fswitch","docs\u002Fcomponents\u002Fswitch",{"title":278,"path":279,"stem":280,"new":18,"type":19,"children":-1},"Table","\u002Fdocs\u002Fcomponents\u002Ftable","docs\u002Fcomponents\u002Ftable",{"title":282,"path":283,"stem":284,"new":18,"type":19,"children":-1},"Tabs","\u002Fdocs\u002Fcomponents\u002Ftabs","docs\u002Fcomponents\u002Ftabs",{"title":286,"path":287,"stem":288,"new":18,"type":19,"children":-1},"Tags Input","\u002Fdocs\u002Fcomponents\u002Ftags-input","docs\u002Fcomponents\u002Ftags-input",{"title":290,"path":291,"stem":292,"new":18,"type":19,"children":-1},"Textarea","\u002Fdocs\u002Fcomponents\u002Ftextarea","docs\u002Fcomponents\u002Ftextarea",{"title":294,"path":295,"stem":296,"new":18,"type":19,"children":-1},"Toast","\u002Fdocs\u002Fcomponents\u002Ftoast","docs\u002Fcomponents\u002Ftoast",{"title":298,"path":299,"stem":300,"new":18,"type":19,"children":-1},"Toggle","\u002Fdocs\u002Fcomponents\u002Ftoggle","docs\u002Fcomponents\u002Ftoggle",{"title":302,"path":303,"stem":304,"new":18,"type":19,"children":-1},"Toggle Group","\u002Fdocs\u002Fcomponents\u002Ftoggle-group","docs\u002Fcomponents\u002Ftoggle-group",{"title":306,"path":307,"stem":308,"new":18,"type":19,"children":-1},"Tool Rail","\u002Fdocs\u002Fcomponents\u002Ftool-rail","docs\u002Fcomponents\u002Ftool-rail",{"title":310,"path":311,"stem":312,"new":18,"type":19,"children":-1},"Tooltip","\u002Fdocs\u002Fcomponents\u002Ftooltip","docs\u002Fcomponents\u002Ftooltip",{"title":314,"path":315,"stem":316,"new":18,"type":19,"children":-1},"Tree","\u002Fdocs\u002Fcomponents\u002Ftree","docs\u002Fcomponents\u002Ftree",{"title":318,"path":319,"stem":320,"new":18,"type":19,"children":-1},"Typography","\u002Fdocs\u002Fcomponents\u002Ftypography","docs\u002Fcomponents\u002Ftypography",{"title":322,"path":323,"stem":324,"new":18,"type":19,"children":-1},"Vector Pad","\u002Fdocs\u002Fcomponents\u002Fvector-pad","docs\u002Fcomponents\u002Fvector-pad","group",{"title":327,"path":328,"stem":329,"children":330,"new":18,"type":325},"Installation","\u002Fdocs\u002Finstallation","docs\u002F02.installation",[331,336,340,344,348],{"title":332,"path":333,"stem":334,"new":18,"type":335,"children":-1},"Vite","\u002Fdocs\u002Finstallation\u002Fvite","docs\u002Finstallation\u002F01.vite","page",{"title":337,"path":338,"stem":339,"new":18,"type":335,"children":-1},"Nuxt","\u002Fdocs\u002Finstallation\u002Fnuxt","docs\u002Finstallation\u002F02.nuxt",{"title":341,"path":342,"stem":343,"new":18,"type":335,"children":-1},"Astro","\u002Fdocs\u002Finstallation\u002Fastro","docs\u002Finstallation\u002F03.astro",{"title":345,"path":346,"stem":347,"new":18,"type":335,"children":-1},"Laravel","\u002Fdocs\u002Finstallation\u002Flaravel","docs\u002Finstallation\u002F04.laravel",{"title":349,"path":350,"stem":351,"new":18,"type":335,"children":-1},"Manual Installation","\u002Fdocs\u002Finstallation\u002Fmanual","docs\u002Finstallation\u002F05.manual",{"title":353,"path":354,"stem":355,"children":356,"new":18,"type":325},"Dark Mode","\u002Fdocs\u002Fdark-mode","docs\u002F05.dark-mode",[357,360,363,367],{"title":332,"path":358,"stem":359,"new":18,"type":335,"children":-1},"\u002Fdocs\u002Fdark-mode\u002Fvite","docs\u002Fdark-mode\u002F01.vite",{"title":337,"path":361,"stem":362,"new":18,"type":335,"children":-1},"\u002Fdocs\u002Fdark-mode\u002Fnuxt","docs\u002Fdark-mode\u002F02.nuxt",{"title":364,"path":365,"stem":366,"new":18,"type":335,"children":-1},"Vitepress","\u002Fdocs\u002Fdark-mode\u002Fvitepress","docs\u002Fdark-mode\u002F03.vitepress",{"title":341,"path":368,"stem":369,"new":18,"type":335,"children":-1},"\u002Fdocs\u002Fdark-mode\u002Fastro","docs\u002Fdark-mode\u002F04.astro",{"title":371,"path":372,"stem":373,"children":374,"new":18,"type":325},"Directory","\u002Fdocs\u002Fdirectory","docs\u002Fdirectory\u002Findex",[375],{"title":371,"path":372,"stem":373,"new":18,"type":335,"children":-1},{"title":377,"path":378,"stem":379,"children":380,"new":18,"type":325},"Forms","\u002Fdocs\u002Fforms","docs\u002Fforms",[381,385,389],{"title":382,"path":383,"stem":384,"new":18,"type":335,"children":-1},"VeeValidate","\u002Fdocs\u002Fforms\u002Fvee-validate","docs\u002Fforms\u002F01.vee-validate",{"title":386,"path":387,"stem":388,"new":18,"type":335,"children":-1},"TanStack Form","\u002Fdocs\u002Fforms\u002Ftanstack-form","docs\u002Fforms\u002F02.tanstack-form",{"title":390,"path":391,"stem":392,"new":18,"type":335,"children":-1},"Formisch","\u002Fdocs\u002Fforms\u002Fformisch","docs\u002Fforms\u002F03.formisch",{"title":394,"path":395,"stem":396,"children":397,"new":18,"type":325},"Registry","\u002Fdocs\u002Fregistry","docs\u002Fregistry\u002Findex",[398,399,403,407,411,415],{"title":394,"path":395,"stem":396,"new":18,"type":335,"children":-1},{"title":400,"path":401,"stem":402,"new":18,"type":335,"children":-1},"Examples","\u002Fdocs\u002Fregistry\u002Fexamples","docs\u002Fregistry\u002Fexamples",{"title":404,"path":405,"stem":406,"new":18,"type":335,"children":-1},"FAQ","\u002Fdocs\u002Fregistry\u002Ffaq","docs\u002Fregistry\u002Ffaq",{"title":408,"path":409,"stem":410,"new":18,"type":335,"children":-1},"Getting Started","\u002Fdocs\u002Fregistry\u002Fgetting-started","docs\u002Fregistry\u002Fgetting-started",{"title":412,"path":413,"stem":414,"new":18,"type":335,"children":-1},"registry-item.json","\u002Fdocs\u002Fregistry\u002Fregistry-item-json","docs\u002Fregistry\u002Fregistry-item-json",{"title":416,"path":417,"stem":418,"new":18,"type":335,"children":-1},"registry.json","\u002Fdocs\u002Fregistry\u002Fregistry-json","docs\u002Fregistry\u002Fregistry-json",{"title":420,"path":421,"stem":422,"children":423,"page":18,"type":325},"Utilities","\u002Fdocs\u002Futilities","docs\u002Futilities",[424,428],{"title":425,"path":426,"stem":427,"new":18,"type":335,"children":-1},"scroll-fade","\u002Fdocs\u002Futilities\u002Fscroll-fade","docs\u002Futilities\u002Fscroll-fade",{"title":429,"path":430,"stem":431,"new":18,"type":335,"children":-1},"shimmer","\u002Fdocs\u002Futilities\u002Fshimmer","docs\u002Futilities\u002Fshimmer",{"path":6,"stem":7,"title":433,"type":325,"children":434},"Get Started",[435,439,446,450,454,460,464,468,472,476,480,484,488,492],{"title":436,"path":437,"stem":438,"new":18,"type":335,"children":-1},"Introduction","\u002Fdocs\u002Fintroduction","docs\u002F01.introduction",{"title":327,"path":328,"stem":329,"children":440,"new":18,"type":325},[441,442,443,444,445],{"title":332,"path":333,"stem":334,"new":18,"type":335,"children":-1},{"title":337,"path":338,"stem":339,"new":18,"type":335,"children":-1},{"title":341,"path":342,"stem":343,"new":18,"type":335,"children":-1},{"title":345,"path":346,"stem":347,"new":18,"type":335,"children":-1},{"title":349,"path":350,"stem":351,"new":18,"type":335,"children":-1},{"title":447,"path":448,"stem":449,"new":18,"type":335,"children":-1},"components.json","\u002Fdocs\u002Fcomponents-json","docs\u002F03.components-json",{"title":451,"path":452,"stem":453,"new":18,"type":335,"children":-1},"Theming","\u002Fdocs\u002Ftheming","docs\u002F04.theming",{"title":353,"path":354,"stem":355,"children":455,"new":18,"type":325},[456,457,458,459],{"title":332,"path":358,"stem":359,"new":18,"type":335,"children":-1},{"title":337,"path":361,"stem":362,"new":18,"type":335,"children":-1},{"title":364,"path":365,"stem":366,"new":18,"type":335,"children":-1},{"title":341,"path":368,"stem":369,"new":18,"type":335,"children":-1},{"title":461,"path":462,"stem":463,"new":18,"type":335,"children":-1},"CLI","\u002Fdocs\u002Fcli","docs\u002F06.cli",{"title":465,"path":466,"stem":467,"new":18,"type":335,"children":-1},"JavaScript","\u002Fdocs\u002Fjavascript","docs\u002F07.javascript",{"title":469,"path":470,"stem":471,"new":18,"type":335,"children":-1},"RTL","\u002Fdocs\u002Frtl","docs\u002F08.rtl",{"title":473,"path":474,"stem":475,"new":18,"type":335,"children":-1},"Figma","\u002Fdocs\u002Ffigma","docs\u002F09.figma",{"title":477,"path":478,"stem":479,"new":18,"type":335,"children":-1},"Changelog","\u002Fdocs\u002Fchangelog","docs\u002F10.changelog",{"title":481,"path":482,"stem":483,"new":18,"type":335,"children":-1},"Legacy Docs","\u002Fdocs\u002Flegacy","docs\u002F11.legacy",{"title":485,"path":486,"stem":487,"new":18,"type":335,"children":-1},"Skills","\u002Fdocs\u002Fskills","docs\u002Fskills",{"title":489,"path":490,"stem":491,"new":18,"type":335,"children":-1},"Typeset","\u002Fdocs\u002Ftypeset","docs\u002Ftypeset",{"title":420,"path":421,"stem":422,"children":493,"page":18,"type":325},[494,495],{"title":425,"path":426,"stem":427,"new":18,"type":335,"children":-1},{"title":429,"path":430,"stem":431,"new":18,"type":335,"children":-1},{"repo":497},{"id":498,"name":499,"repo":500,"description":501,"createdAt":502,"updatedAt":503,"pushedAt":504,"stars":505,"watchers":505,"forks":505,"defaultBranch":506},1338772706,"hui-vue","Clientik\u002Fhui-vue",null,"2026-08-18T19:33:07Z","2026-08-25T22:44:28Z","2026-08-25T22:44:11Z",0,"main",{"id":508,"title":33,"body":509,"description":1447,"extension":1448,"links":501,"meta":1449,"navigation":220,"new":18,"path":34,"rawbody":1450,"seo":1451,"stem":35,"__hash__":1452},"content\u002Fdocs\u002Fcomponents\u002Fattachment.md",{"type":510,"value":511,"toc":1415},"minimark",[512,517,525,529,584,588,597,601,604,612,619,625,629,683,686,691,709,712,716,731,734,738,754,757,760,766,769,773,779,782,788,792,811,815,824,830,834,842,848,857,861,876,880,889,893,896,899,1000,1003,1006,1059,1063,1066,1097,1101,1109,1140,1143,1146,1177,1181,1184,1215,1218,1228,1297,1300,1308,1378,1381,1384],[513,514],"component-preview",{"name":515,"previewClass":516},"AttachmentDemo","h-auto theme-blue bg-surface dark:bg-background",[518,519,520,521,524],"p",{},"The ",[522,523,33],"code",{}," component displays a file or image attachment, its media, name, and metadata, with optional actions and upload state. Use it for files and images in chat composers, message threads, and upload lists.",[526,527,327],"h2",{"id":528},"installation",[530,531,532,547,560],"code-tabs",{},[533,534,535,541],"tabs-list",{},[536,537,539],"tabs-trigger",{"value":538},"cli",[518,540,461],{},[536,542,544],{"value":543},"manual",[518,545,546],{},"Manual",[548,549,550],"tabs-content",{"value":538},[551,552,558],"pre",{"className":553,"code":555,"language":556,"meta":557},[554],"language-bash","npx hui-kit@latest add attachment\n","bash","",[522,559,555],{"__ignoreMap":557},[548,561,562],{"value":543},[563,564,565,579],"steps",{},[566,567,568],"step",{},[518,569,570,571,578],{},"Copy and paste the ",[572,573,577],"a",{"href":574,"rel":575},"https:\u002F\u002Fgithub.com\u002FClientik\u002Fhui-vue\u002Ftree\u002Fdev\u002Fapps\u002Fv4\u002Fregistry\u002Fbases\u002Freka\u002Fui\u002Fattachment",[576],"nofollow","GitHub source code"," into your project.",[566,580,581],{},[518,582,583],{},"Update the import paths to match your project setup.",[526,585,587],{"id":586},"usage","Usage",[551,589,595],{"className":590,"code":592,"language":593,"meta":594},[591],"language-vue","\u003Cscript setup lang=\"ts\">\nimport { FileTextIcon, XIcon } from '@lucide\u002Fvue'\nimport {\n  Attachment,\n  AttachmentAction,\n  AttachmentActions,\n  AttachmentContent,\n  AttachmentDescription,\n  AttachmentMedia,\n  AttachmentTitle,\n} from '@\u002Fcomponents\u002Fui\u002Fattachment'\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003CAttachment>\n    \u003CAttachmentMedia>\n      \u003CFileTextIcon \u002F>\n    \u003C\u002FAttachmentMedia>\n    \u003CAttachmentContent>\n      \u003CAttachmentTitle>sales-dashboard.pdf\u003C\u002FAttachmentTitle>\n      \u003CAttachmentDescription>PDF · 2.4 MB\u003C\u002FAttachmentDescription>\n    \u003C\u002FAttachmentContent>\n    \u003CAttachmentActions>\n      \u003CAttachmentAction aria-label=\"Remove sales-dashboard.pdf\">\n        \u003CXIcon \u002F>\n      \u003C\u002FAttachmentAction>\n    \u003C\u002FAttachmentActions>\n  \u003C\u002FAttachment>\n\u003C\u002Ftemplate>\n","vue","showLineNumbers",[522,596,592],{"__ignoreMap":557},[526,598,600],{"id":599},"composition","Composition",[518,602,603],{},"Use the following composition to build an attachment:",[551,605,610],{"className":606,"code":608,"language":609,"meta":557},[607],"language-text","Attachment\n├── AttachmentMedia\n├── AttachmentContent\n│   ├── AttachmentTitle\n│   └── AttachmentDescription\n├── AttachmentActions\n│   └── AttachmentAction\n└── AttachmentTrigger\n","text",[522,611,608],{"__ignoreMap":557},[518,613,614,615,618],{},"Use ",[522,616,617],{},"AttachmentGroup"," to lay out multiple attachments in a scrollable row:",[551,620,623],{"className":621,"code":622,"language":609,"meta":557},[607],"AttachmentGroup\n├── Attachment\n└── Attachment\n",[522,624,622],{"__ignoreMap":557},[526,626,628],{"id":627},"features","Features",[630,631,632,639,660,663,670,676],"ul",{},[633,634,635,636],"li",{},"Icon and image media through ",[522,637,638],{},"AttachmentMedia",[633,640,641,642,645,646,645,649,645,652,655,656,659],{},"Upload states: ",[522,643,644],{},"idle",", ",[522,647,648],{},"uploading",[522,650,651],{},"processing",[522,653,654],{},"error",", and ",[522,657,658],{},"done"," with built-in styling and a shimmer while in progress",[633,661,662],{},"Three sizes and horizontal or vertical orientation",[633,664,665,666,669],{},"A full-card ",[522,667,668],{},"AttachmentTrigger"," that opens a link or dialog while the actions stay independently clickable",[633,671,672,673,675],{},"Scrollable, snapping ",[522,674,617],{}," with an edge fade",[633,677,678,679,682],{},"Customizable styling through the Vue ",[522,680,681],{},"class"," attribute on every part",[526,684,400],{"id":685},"examples",[687,688,690],"h3",{"id":689},"image","Image",[518,692,693,694,697,698,700,701,704,705,708],{},"Set ",[522,695,696],{},"variant=\"image\""," on ",[522,699,638],{}," and render an ",[522,702,703],{},"\u003Cimg>"," inside it. Use ",[522,706,707],{},"orientation=\"vertical\""," to stack the media above the content.",[513,710],{"name":711,"previewClass":516},"AttachmentImageDemo",[687,713,715],{"id":714},"states","States",[518,717,693,718,721,722,724,725,727,728,730],{},[522,719,720],{},"state"," to reflect the upload lifecycle. ",[522,723,648],{}," and ",[522,726,651],{}," shimmer the title, and ",[522,729,654],{}," switches to a destructive treatment.",[513,732],{"name":733,"previewClass":516},"AttachmentStatesDemo",[687,735,737],{"id":736},"sizes","Sizes",[518,739,614,740,743,744,645,747,655,750,753],{},[522,741,742],{},"size"," to switch between ",[522,745,746],{},"default",[522,748,749],{},"sm",[522,751,752],{},"xs",".",[513,755],{"name":756,"previewClass":516},"AttachmentSizesDemo",[687,758,759],{"id":325},"Group",[518,761,762,763,765],{},"Wrap attachments in ",[522,764,617],{}," to lay them out in a horizontally scrollable, snapping row with an edge fade.",[513,767],{"name":768,"previewClass":516},"AttachmentGroupDemo",[687,770,772],{"id":771},"trigger","Trigger",[518,774,775,776,778],{},"Add an ",[522,777,668],{}," to make the whole card open a link or dialog. It fills the card behind the actions, so the actions stay clickable.",[513,780],{"name":781,"previewClass":516},"AttachmentTriggerDemo",[551,783,786],{"className":784,"code":785,"language":593,"meta":594},[591],"\u003Ctemplate>\n  \u003CDialog>\n    \u003CAttachment>\n      \u003C!-- media, content, actions -->\n      \u003CDialogTrigger as-child>\n        \u003CAttachmentTrigger aria-label=\"Preview research-summary.pdf\" \u002F>\n      \u003C\u002FDialogTrigger>\n    \u003C\u002FAttachment>\n    \u003CDialogContent>\n      \u003C!-- ... -->\n    \u003C\u002FDialogContent>\n  \u003C\u002FDialog>\n\u003C\u002Ftemplate>\n",[522,787,785],{"__ignoreMap":557},[526,789,791],{"id":790},"accessibility","Accessibility",[518,793,794,797,798,655,800,802,803,806,807,810],{},[522,795,796],{},"AttachmentAction"," renders a ",[522,799,53],{},[522,801,668],{}," renders a real ",[522,804,805],{},"\u003Cbutton>"," (or your element via ",[522,808,809],{},"as-child","). Follow the guidance below so both are operable and announced.",[687,812,814],{"id":813},"label-icon-only-actions","Label icon-only actions",[518,816,817,819,820,823],{},[522,818,796],{}," is usually icon-only, so give each one an ",[522,821,822],{},"aria-label"," describing the action and its target.",[551,825,828],{"className":826,"code":827,"language":593,"meta":594},[591],"\u003Ctemplate>\n  \u003CAttachmentAction aria-label=\"Remove sales-dashboard.pdf\">\n    \u003CXIcon \u002F>\n  \u003C\u002FAttachmentAction>\n\u003C\u002Ftemplate>\n",[522,829,827],{"__ignoreMap":557},[687,831,833],{"id":832},"label-the-trigger","Label the trigger",[518,835,836,838,839,841],{},[522,837,668],{}," covers the card with no text of its own, so give it an ",[522,840,822],{}," for what activating it does.",[551,843,846],{"className":844,"code":845,"language":593,"meta":594},[591],"\u003Ctemplate>\n  \u003CAttachmentTrigger as-child>\n    \u003Ca\n      :href=\"url\"\n      target=\"_blank\"\n      rel=\"noreferrer\"\n      aria-label=\"Open workspace.png\"\n    \u002F>\n  \u003C\u002FAttachmentTrigger>\n\u003C\u002Ftemplate>\n",[522,847,845],{"__ignoreMap":557},[518,849,850,851,853,854,856],{},"The trigger sits behind the actions in the stacking order, so an ",[522,852,796],{}," and the ",[522,855,668],{}," never trap each other — both remain separately focusable and clickable.",[687,858,860],{"id":859},"keyboard-scrolling","Keyboard scrolling",[518,862,863,864,866,867,645,870,873,874,753],{},"An ",[522,865,617],{}," scrolls horizontally. When its attachments are interactive: a trigger or actions, keyboard users reach off-screen items by tabbing to them. For a row of presentational attachments, make the group itself focusable and scrollable by adding ",[522,868,869],{},"tabindex=\"0\"",[522,871,872],{},"role=\"group\"",", and an ",[522,875,822],{},[687,877,879],{"id":878},"meaning-beyond-color","Meaning beyond color",[518,881,520,882,884,885,888],{},[522,883,654],{}," state uses a destructive color. Keep the failure reason in ",[522,886,887],{},"AttachmentDescription"," so the state is not conveyed by color alone.",[526,890,892],{"id":891},"api-reference","API Reference",[687,894,33],{"id":895},"attachment",[518,897,898],{},"The root attachment container.",[900,901,902,921],"table",{},[903,904,905],"thead",{},[906,907,908,912,915,918],"tr",{},[909,910,911],"th",{},"Prop",[909,913,914],{},"Type",[909,916,917],{},"Default",[909,919,920],{},"Description",[922,923,924,944,963,983],"tbody",{},[906,925,926,931,936,941],{},[927,928,929],"td",{},[522,930,720],{},[927,932,933],{},[522,934,935],{},"\"idle\" | \"uploading\" | \"processing\" | \"error\" | \"done\"",[927,937,938],{},[522,939,940],{},"\"done\"",[927,942,943],{},"The upload state. Drives styling and the shimmer.",[906,945,946,950,955,960],{},[927,947,948],{},[522,949,742],{},[927,951,952],{},[522,953,954],{},"\"default\" | \"sm\" | \"xs\"",[927,956,957],{},[522,958,959],{},"\"default\"",[927,961,962],{},"The attachment size.",[906,964,965,970,975,980],{},[927,966,967],{},[522,968,969],{},"orientation",[927,971,972],{},[522,973,974],{},"\"horizontal\" | \"vertical\"",[927,976,977],{},[522,978,979],{},"\"horizontal\"",[927,981,982],{},"Lay the media beside or above the content.",[906,984,985,989,994,997],{},[927,986,987],{},[522,988,681],{},[927,990,991],{},[522,992,993],{},"HTMLAttributes[\"class\"]",[927,995,996],{},"-",[927,998,999],{},"Additional classes to apply to the root element.",[687,1001,638],{"id":1002},"attachmentmedia",[518,1004,1005],{},"The media slot for an icon or image preview.",[900,1007,1008,1020],{},[903,1009,1010],{},[906,1011,1012,1014,1016,1018],{},[909,1013,911],{},[909,1015,914],{},[909,1017,917],{},[909,1019,920],{},[922,1021,1022,1044],{},[906,1023,1024,1029,1034,1039],{},[927,1025,1026],{},[522,1027,1028],{},"variant",[927,1030,1031],{},[522,1032,1033],{},"\"icon\" | \"image\"",[927,1035,1036],{},[522,1037,1038],{},"\"icon\"",[927,1040,1041,1042,753],{},"Whether the media holds an icon or an ",[522,1043,703],{},[906,1045,1046,1050,1054,1056],{},[927,1047,1048],{},[522,1049,681],{},[927,1051,1052],{},[522,1053,993],{},[927,1055,996],{},[927,1057,1058],{},"Additional classes to apply to the media slot.",[687,1060,1062],{"id":1061},"attachmentcontent","AttachmentContent",[518,1064,1065],{},"Wraps the title and description.",[900,1067,1068,1080],{},[903,1069,1070],{},[906,1071,1072,1074,1076,1078],{},[909,1073,911],{},[909,1075,914],{},[909,1077,917],{},[909,1079,920],{},[922,1081,1082],{},[906,1083,1084,1088,1092,1094],{},[927,1085,1086],{},[522,1087,681],{},[927,1089,1090],{},[522,1091,993],{},[927,1093,996],{},[927,1095,1096],{},"Additional classes to apply to the content slot.",[687,1098,1100],{"id":1099},"attachmenttitle","AttachmentTitle",[518,1102,1103,1104,1106,1107,753],{},"The attachment name. Shimmers while the attachment is ",[522,1105,648],{}," or ",[522,1108,651],{},[900,1110,1111,1123],{},[903,1112,1113],{},[906,1114,1115,1117,1119,1121],{},[909,1116,911],{},[909,1118,914],{},[909,1120,917],{},[909,1122,920],{},[922,1124,1125],{},[906,1126,1127,1131,1135,1137],{},[927,1128,1129],{},[522,1130,681],{},[927,1132,1133],{},[522,1134,993],{},[927,1136,996],{},[927,1138,1139],{},"Additional classes to apply to the title.",[687,1141,887],{"id":1142},"attachmentdescription",[518,1144,1145],{},"Secondary metadata such as the file type, size, or upload status.",[900,1147,1148,1160],{},[903,1149,1150],{},[906,1151,1152,1154,1156,1158],{},[909,1153,911],{},[909,1155,914],{},[909,1157,917],{},[909,1159,920],{},[922,1161,1162],{},[906,1163,1164,1168,1172,1174],{},[927,1165,1166],{},[522,1167,681],{},[927,1169,1170],{},[522,1171,993],{},[927,1173,996],{},[927,1175,1176],{},"Additional classes to apply to the description.",[687,1178,1180],{"id":1179},"attachmentactions","AttachmentActions",[518,1182,1183],{},"A container for one or more actions, aligned to the end of the attachment.",[900,1185,1186,1198],{},[903,1187,1188],{},[906,1189,1190,1192,1194,1196],{},[909,1191,911],{},[909,1193,914],{},[909,1195,917],{},[909,1197,920],{},[922,1199,1200],{},[906,1201,1202,1206,1210,1212],{},[927,1203,1204],{},[522,1205,681],{},[927,1207,1208],{},[522,1209,993],{},[927,1211,996],{},[927,1213,1214],{},"Additional classes to apply to the actions.",[687,1216,796],{"id":1217},"attachmentaction",[518,1219,1220,1221,1225,1226,753],{},"An action button. Renders a ",[572,1222,1223],{"href":54},[522,1224,53],{}," and accepts Vue fallthrough attributes such as ",[522,1227,822],{},[900,1229,1230,1242],{},[903,1231,1232],{},[906,1233,1234,1236,1238,1240],{},[909,1235,911],{},[909,1237,914],{},[909,1239,917],{},[909,1241,920],{},[922,1243,1244,1263,1282],{},[906,1245,1246,1250,1255,1260],{},[927,1247,1248],{},[522,1249,1028],{},[927,1251,1252],{},[522,1253,1254],{},"ButtonVariants[\"variant\"]",[927,1256,1257],{},[522,1258,1259],{},"\"ghost\"",[927,1261,1262],{},"The button variant.",[906,1264,1265,1269,1274,1279],{},[927,1266,1267],{},[522,1268,742],{},[927,1270,1271],{},[522,1272,1273],{},"ButtonVariants[\"size\"]",[927,1275,1276],{},[522,1277,1278],{},"\"icon-xs\"",[927,1280,1281],{},"The button size.",[906,1283,1284,1288,1292,1294],{},[927,1285,1286],{},[522,1287,681],{},[927,1289,1290],{},[522,1291,993],{},[927,1293,996],{},[927,1295,1296],{},"Additional classes to apply to the action.",[687,1298,668],{"id":1299},"attachmenttrigger",[518,1301,1302,1303,1305,1306,753],{},"A full-card overlay that activates the attachment. Renders a ",[522,1304,805],{}," by default and accepts Vue fallthrough attributes such as ",[522,1307,822],{},[900,1309,1310,1322],{},[903,1311,1312],{},[906,1313,1314,1316,1318,1320],{},[909,1315,911],{},[909,1317,914],{},[909,1319,917],{},[909,1321,920],{},[922,1323,1324,1344,1363],{},[906,1325,1326,1331,1336,1341],{},[927,1327,1328],{},[522,1329,1330],{},"as",[927,1332,1333],{},[522,1334,1335],{},"PrimitiveProps[\"as\"]",[927,1337,1338],{},[522,1339,1340],{},"\"button\"",[927,1342,1343],{},"Element or component to render.",[906,1345,1346,1350,1355,1360],{},[927,1347,1348],{},[522,1349,809],{},[927,1351,1352],{},[522,1353,1354],{},"boolean",[927,1356,1357],{},[522,1358,1359],{},"false",[927,1361,1362],{},"Render as the child element, such as a link.",[906,1364,1365,1369,1373,1375],{},[927,1366,1367],{},[522,1368,681],{},[927,1370,1371],{},[522,1372,993],{},[927,1374,996],{},[927,1376,1377],{},"Additional classes to apply to the trigger.",[687,1379,617],{"id":1380},"attachmentgroup",[518,1382,1383],{},"Lays out attachments in a horizontally scrollable, snapping row.",[900,1385,1386,1398],{},[903,1387,1388],{},[906,1389,1390,1392,1394,1396],{},[909,1391,911],{},[909,1393,914],{},[909,1395,917],{},[909,1397,920],{},[922,1399,1400],{},[906,1401,1402,1406,1410,1412],{},[927,1403,1404],{},[522,1405,681],{},[927,1407,1408],{},[522,1409,993],{},[927,1411,996],{},[927,1413,1414],{},"Additional classes to apply to the group.",{"title":557,"searchDepth":1416,"depth":1416,"links":1417},2,[1418,1419,1420,1421,1422,1430,1436],{"id":528,"depth":1416,"text":327},{"id":586,"depth":1416,"text":587},{"id":599,"depth":1416,"text":600},{"id":627,"depth":1416,"text":628},{"id":685,"depth":1416,"text":400,"children":1423},[1424,1426,1427,1428,1429],{"id":689,"depth":1425,"text":690},3,{"id":714,"depth":1425,"text":715},{"id":736,"depth":1425,"text":737},{"id":325,"depth":1425,"text":759},{"id":771,"depth":1425,"text":772},{"id":790,"depth":1416,"text":791,"children":1431},[1432,1433,1434,1435],{"id":813,"depth":1425,"text":814},{"id":832,"depth":1425,"text":833},{"id":859,"depth":1425,"text":860},{"id":878,"depth":1425,"text":879},{"id":891,"depth":1416,"text":892,"children":1437},[1438,1439,1440,1441,1442,1443,1444,1445,1446],{"id":895,"depth":1425,"text":33},{"id":1002,"depth":1425,"text":638},{"id":1061,"depth":1425,"text":1062},{"id":1099,"depth":1425,"text":1100},{"id":1142,"depth":1425,"text":887},{"id":1179,"depth":1425,"text":1180},{"id":1217,"depth":1425,"text":796},{"id":1299,"depth":1425,"text":668},{"id":1380,"depth":1425,"text":617},"Displays a file or image attachment with media, metadata, upload state, and actions.","md",{"component":220},"---\ntitle: Attachment\ndescription: Displays a file or image attachment with media, metadata, upload state, and actions.\ncomponent: true\n---\n\n::component-preview\n---\nname: AttachmentDemo\npreviewClass: h-auto theme-blue bg-surface dark:bg-background\n---\n::\n\nThe `Attachment` component displays a file or image attachment, its media, name, and metadata, with optional actions and upload state. Use it for files and images in chat composers, message threads, and upload lists.\n\n\n## Installation\n\n:::::code-tabs\n\n:::tabs-list\n\n  ::tabs-trigger{value=\"cli\"}\n  CLI\n  ::\n\n  ::tabs-trigger{value=\"manual\"}\n  Manual\n  ::\n\n:::\n\n::tabs-content{value=\"cli\"}\n\n```bash\nnpx hui-kit@latest add attachment\n```\n\n::\n\n::::tabs-content{value=\"manual\"}\n  :::steps\n    ::step\n    Copy and paste the [GitHub source code](https:\u002F\u002Fgithub.com\u002FClientik\u002Fhui-vue\u002Ftree\u002Fdev\u002Fapps\u002Fv4\u002Fregistry\u002Fbases\u002Freka\u002Fui\u002Fattachment) into your project.\n    ::\n\n    ::step\n    Update the import paths to match your project setup.\n    ::\n  :::\n::::\n\n:::::\n\n\n## Usage\n\n```vue showLineNumbers\n\u003Cscript setup lang=\"ts\">\nimport { FileTextIcon, XIcon } from '@lucide\u002Fvue'\nimport {\n  Attachment,\n  AttachmentAction,\n  AttachmentActions,\n  AttachmentContent,\n  AttachmentDescription,\n  AttachmentMedia,\n  AttachmentTitle,\n} from '@\u002Fcomponents\u002Fui\u002Fattachment'\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003CAttachment>\n    \u003CAttachmentMedia>\n      \u003CFileTextIcon \u002F>\n    \u003C\u002FAttachmentMedia>\n    \u003CAttachmentContent>\n      \u003CAttachmentTitle>sales-dashboard.pdf\u003C\u002FAttachmentTitle>\n      \u003CAttachmentDescription>PDF · 2.4 MB\u003C\u002FAttachmentDescription>\n    \u003C\u002FAttachmentContent>\n    \u003CAttachmentActions>\n      \u003CAttachmentAction aria-label=\"Remove sales-dashboard.pdf\">\n        \u003CXIcon \u002F>\n      \u003C\u002FAttachmentAction>\n    \u003C\u002FAttachmentActions>\n  \u003C\u002FAttachment>\n\u003C\u002Ftemplate>\n```\n\n## Composition\n\nUse the following composition to build an attachment:\n\n```text\nAttachment\n├── AttachmentMedia\n├── AttachmentContent\n│   ├── AttachmentTitle\n│   └── AttachmentDescription\n├── AttachmentActions\n│   └── AttachmentAction\n└── AttachmentTrigger\n```\n\nUse `AttachmentGroup` to lay out multiple attachments in a scrollable row:\n\n```text\nAttachmentGroup\n├── Attachment\n└── Attachment\n```\n\n## Features\n\n- Icon and image media through `AttachmentMedia`\n- Upload states: `idle`, `uploading`, `processing`, `error`, and `done` with built-in styling and a shimmer while in progress\n- Three sizes and horizontal or vertical orientation\n- A full-card `AttachmentTrigger` that opens a link or dialog while the actions stay independently clickable\n- Scrollable, snapping `AttachmentGroup` with an edge fade\n- Customizable styling through the Vue `class` attribute on every part\n\n## Examples\n\n### Image\n\nSet `variant=\"image\"` on `AttachmentMedia` and render an `\u003Cimg>` inside it. Use `orientation=\"vertical\"` to stack the media above the content.\n\n::component-preview\n---\nname: AttachmentImageDemo\npreviewClass: h-auto theme-blue bg-surface dark:bg-background\n---\n::\n\n### States\n\nSet `state` to reflect the upload lifecycle. `uploading` and `processing` shimmer the title, and `error` switches to a destructive treatment.\n\n::component-preview\n---\nname: AttachmentStatesDemo\npreviewClass: h-auto theme-blue bg-surface dark:bg-background\n---\n::\n\n### Sizes\n\nUse `size` to switch between `default`, `sm`, and `xs`.\n\n::component-preview\n---\nname: AttachmentSizesDemo\npreviewClass: h-auto theme-blue bg-surface dark:bg-background\n---\n::\n\n### Group\n\nWrap attachments in `AttachmentGroup` to lay them out in a horizontally scrollable, snapping row with an edge fade.\n\n\n::component-preview\n---\nname: AttachmentGroupDemo\npreviewClass: h-auto theme-blue bg-surface dark:bg-background\n---\n::\n\n### Trigger\n\nAdd an `AttachmentTrigger` to make the whole card open a link or dialog. It fills the card behind the actions, so the actions stay clickable.\n\n::component-preview\n---\nname: AttachmentTriggerDemo\npreviewClass: h-auto theme-blue bg-surface dark:bg-background\n---\n::\n\n```vue showLineNumbers\n\u003Ctemplate>\n  \u003CDialog>\n    \u003CAttachment>\n      \u003C!-- media, content, actions -->\n      \u003CDialogTrigger as-child>\n        \u003CAttachmentTrigger aria-label=\"Preview research-summary.pdf\" \u002F>\n      \u003C\u002FDialogTrigger>\n    \u003C\u002FAttachment>\n    \u003CDialogContent>\n      \u003C!-- ... -->\n    \u003C\u002FDialogContent>\n  \u003C\u002FDialog>\n\u003C\u002Ftemplate>\n```\n\n## Accessibility\n\n`AttachmentAction` renders a `Button`, and `AttachmentTrigger` renders a real `\u003Cbutton>` (or your element via `as-child`). Follow the guidance below so both are operable and announced.\n\n### Label icon-only actions\n\n`AttachmentAction` is usually icon-only, so give each one an `aria-label` describing the action and its target.\n\n```vue showLineNumbers\n\u003Ctemplate>\n  \u003CAttachmentAction aria-label=\"Remove sales-dashboard.pdf\">\n    \u003CXIcon \u002F>\n  \u003C\u002FAttachmentAction>\n\u003C\u002Ftemplate>\n```\n\n### Label the trigger\n\n`AttachmentTrigger` covers the card with no text of its own, so give it an `aria-label` for what activating it does.\n\n```vue showLineNumbers\n\u003Ctemplate>\n  \u003CAttachmentTrigger as-child>\n    \u003Ca\n      :href=\"url\"\n      target=\"_blank\"\n      rel=\"noreferrer\"\n      aria-label=\"Open workspace.png\"\n    \u002F>\n  \u003C\u002FAttachmentTrigger>\n\u003C\u002Ftemplate>\n```\n\nThe trigger sits behind the actions in the stacking order, so an `AttachmentAction` and the `AttachmentTrigger` never trap each other — both remain separately focusable and clickable.\n\n### Keyboard scrolling\n\nAn `AttachmentGroup` scrolls horizontally. When its attachments are interactive: a trigger or actions, keyboard users reach off-screen items by tabbing to them. For a row of presentational attachments, make the group itself focusable and scrollable by adding `tabindex=\"0\"`, `role=\"group\"`, and an `aria-label`.\n\n### Meaning beyond color\n\nThe `error` state uses a destructive color. Keep the failure reason in `AttachmentDescription` so the state is not conveyed by color alone.\n\n## API Reference\n\n### Attachment\n\nThe root attachment container.\n\n| Prop          | Type                                                         | Default        | Description                                       |\n| ------------- | ------------------------------------------------------------ | -------------- | ------------------------------------------------- |\n| `state`       | `\"idle\" \\| \"uploading\" \\| \"processing\" \\| \"error\" \\| \"done\"` | `\"done\"`       | The upload state. Drives styling and the shimmer. |\n| `size`        | `\"default\" \\| \"sm\" \\| \"xs\"`                                  | `\"default\"`    | The attachment size.                              |\n| `orientation` | `\"horizontal\" \\| \"vertical\"`                                 | `\"horizontal\"` | Lay the media beside or above the content.        |\n| `class`       | `HTMLAttributes[\"class\"]`                                    | -              | Additional classes to apply to the root element.  |\n\n### AttachmentMedia\n\nThe media slot for an icon or image preview.\n\n| Prop        | Type                | Default  | Description                                    |\n| ----------- | ------------------- | -------- | ---------------------------------------------- |\n| `variant`   | `\"icon\" \\| \"image\"` | `\"icon\"` | Whether the media holds an icon or an `\u003Cimg>`. |\n| `class`   | `HTMLAttributes[\"class\"]` | -        | Additional classes to apply to the media slot. |\n\n### AttachmentContent\n\nWraps the title and description.\n\n| Prop        | Type     | Default | Description                                      |\n| ----------- | -------- | ------- | ------------------------------------------------ |\n| `class` | `HTMLAttributes[\"class\"]` | -       | Additional classes to apply to the content slot. |\n\n### AttachmentTitle\n\nThe attachment name. Shimmers while the attachment is `uploading` or `processing`.\n\n| Prop        | Type     | Default | Description                               |\n| ----------- | -------- | ------- | ----------------------------------------- |\n| `class` | `HTMLAttributes[\"class\"]` | -       | Additional classes to apply to the title. |\n\n### AttachmentDescription\n\nSecondary metadata such as the file type, size, or upload status.\n\n| Prop        | Type     | Default | Description                                     |\n| ----------- | -------- | ------- | ----------------------------------------------- |\n| `class` | `HTMLAttributes[\"class\"]` | -       | Additional classes to apply to the description. |\n\n### AttachmentActions\n\nA container for one or more actions, aligned to the end of the attachment.\n\n| Prop        | Type     | Default | Description                                 |\n| ----------- | -------- | ------- | ------------------------------------------- |\n| `class` | `HTMLAttributes[\"class\"]` | -       | Additional classes to apply to the actions. |\n\n### AttachmentAction\n\nAn action button. Renders a [`Button`](\u002Fdocs\u002Fcomponents\u002Fbutton) and accepts Vue fallthrough attributes such as `aria-label`.\n\n| Prop       | Type                       | Default     | Description                                  |\n| ---------- | -------------------------- | ----------- | -------------------------------------------- |\n| `variant`  | `ButtonVariants[\"variant\"]` | `\"ghost\"`   | The button variant.                          |\n| `size`     | `ButtonVariants[\"size\"]`   | `\"icon-xs\"` | The button size.                             |\n| `class`    | `HTMLAttributes[\"class\"]`  | -           | Additional classes to apply to the action.   |\n\n### AttachmentTrigger\n\nA full-card overlay that activates the attachment. Renders a `\u003Cbutton>` by default and accepts Vue fallthrough attributes such as `aria-label`.\n\n| Prop       | Type                             | Default | Description                                  |\n| ---------- | -------------------------------- | ------- | -------------------------------------------- |\n| `as`       | `PrimitiveProps[\"as\"]`           | `\"button\"` | Element or component to render.           |\n| `as-child` | `boolean`                        | `false` | Render as the child element, such as a link. |\n| `class`    | `HTMLAttributes[\"class\"]`        | -       | Additional classes to apply to the trigger.  |\n\n### AttachmentGroup\n\nLays out attachments in a horizontally scrollable, snapping row.\n\n| Prop        | Type     | Default | Description                               |\n| ----------- | -------- | ------- | ----------------------------------------- |\n| `class` | `HTMLAttributes[\"class\"]` | -       | Additional classes to apply to the group. |\n",{"title":33,"description":1447},"ZaWDxTrH_hqzhxcYNaWh0Y6hMdbf2kli_xJPQSWyx8U",[1454,1455],{"title":29,"path":30,"stem":31,"children":-1},{"title":37,"path":38,"stem":39,"children":-1},1787698051624]