[{"data":1,"prerenderedAt":2384},["ShallowReactive",2],{"navigation":3,"$fd9cvft0wf4ga":464,"\u002Fdocs\u002Fcomponents\u002Fquestionnaire":477,"surround-\u002Fdocs\u002Fcomponents\u002Fquestionnaire":2381},[4],{"title":5,"path":6,"stem":7,"children":8,"page":18},"Docs","\u002Fdocs","docs",[9,298,324,342,348,365,391,404],{"title":10,"path":11,"stem":12,"children":13,"new":18,"type":297},"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,205,209,213,217,221,225,229,233,237,241,245,249,253,257,261,265,269,273,277,281,285,289,293],{"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},"Combobox","\u002Fdocs\u002Fcomponents\u002Fcombobox","docs\u002Fcomponents\u002Fcombobox",{"title":89,"path":90,"stem":91,"new":18,"type":19,"children":-1},"Command","\u002Fdocs\u002Fcomponents\u002Fcommand","docs\u002Fcomponents\u002Fcommand",{"title":93,"path":94,"stem":95,"new":18,"type":19,"children":-1},"Context Menu","\u002Fdocs\u002Fcomponents\u002Fcontext-menu","docs\u002Fcomponents\u002Fcontext-menu",{"title":97,"path":98,"stem":99,"new":18,"type":19,"children":-1},"Data Table","\u002Fdocs\u002Fcomponents\u002Fdata-table","docs\u002Fcomponents\u002Fdata-table",{"title":101,"path":102,"stem":103,"new":18,"type":19,"children":-1},"Date Picker","\u002Fdocs\u002Fcomponents\u002Fdate-picker","docs\u002Fcomponents\u002Fdate-picker",{"title":105,"path":106,"stem":107,"new":18,"type":19,"children":-1},"Dialog","\u002Fdocs\u002Fcomponents\u002Fdialog","docs\u002Fcomponents\u002Fdialog",{"title":109,"path":110,"stem":111,"new":18,"type":19,"children":-1},"Drawer","\u002Fdocs\u002Fcomponents\u002Fdrawer","docs\u002Fcomponents\u002Fdrawer",{"title":113,"path":114,"stem":115,"new":18,"type":19,"children":-1},"Dropdown Menu","\u002Fdocs\u002Fcomponents\u002Fdropdown-menu","docs\u002Fcomponents\u002Fdropdown-menu",{"title":117,"path":118,"stem":119,"new":18,"type":19,"children":-1},"Empty","\u002Fdocs\u002Fcomponents\u002Fempty","docs\u002Fcomponents\u002Fempty",{"title":121,"path":122,"stem":123,"new":18,"type":19,"children":-1},"Field","\u002Fdocs\u002Fcomponents\u002Ffield","docs\u002Fcomponents\u002Ffield",{"title":125,"path":126,"stem":127,"new":18,"type":19,"children":-1},"Form","\u002Fdocs\u002Fcomponents\u002Fform","docs\u002Fcomponents\u002Fform",{"title":129,"path":130,"stem":131,"new":18,"type":19,"children":-1},"Hover Card","\u002Fdocs\u002Fcomponents\u002Fhover-card","docs\u002Fcomponents\u002Fhover-card",{"title":133,"path":134,"stem":135,"new":18,"type":19,"children":-1},"Input","\u002Fdocs\u002Fcomponents\u002Finput","docs\u002Fcomponents\u002Finput",{"title":137,"path":138,"stem":139,"new":18,"type":19,"children":-1},"Input Group","\u002Fdocs\u002Fcomponents\u002Finput-group","docs\u002Fcomponents\u002Finput-group",{"title":141,"path":142,"stem":143,"new":18,"type":19,"children":-1},"Input OTP","\u002Fdocs\u002Fcomponents\u002Finput-otp","docs\u002Fcomponents\u002Finput-otp",{"title":145,"path":146,"stem":147,"new":18,"type":19,"children":-1},"Item","\u002Fdocs\u002Fcomponents\u002Fitem","docs\u002Fcomponents\u002Fitem",{"title":149,"path":150,"stem":151,"new":18,"type":19,"children":-1},"Kbd","\u002Fdocs\u002Fcomponents\u002Fkbd","docs\u002Fcomponents\u002Fkbd",{"title":153,"path":154,"stem":155,"new":18,"type":19,"children":-1},"Label","\u002Fdocs\u002Fcomponents\u002Flabel","docs\u002Fcomponents\u002Flabel",{"title":157,"path":158,"stem":159,"new":18,"type":19,"children":-1},"Marker","\u002Fdocs\u002Fcomponents\u002Fmarker","docs\u002Fcomponents\u002Fmarker",{"title":161,"path":162,"stem":163,"new":18,"type":19,"children":-1},"Menubar","\u002Fdocs\u002Fcomponents\u002Fmenubar","docs\u002Fcomponents\u002Fmenubar",{"title":165,"path":166,"stem":167,"new":18,"type":19,"children":-1},"Message","\u002Fdocs\u002Fcomponents\u002Fmessage","docs\u002Fcomponents\u002Fmessage",{"title":169,"path":170,"stem":171,"new":18,"type":19,"children":-1},"Message Scroller","\u002Fdocs\u002Fcomponents\u002Fmessage-scroller","docs\u002Fcomponents\u002Fmessage-scroller",{"title":173,"path":174,"stem":175,"new":18,"type":19,"children":-1},"Native Select","\u002Fdocs\u002Fcomponents\u002Fnative-select","docs\u002Fcomponents\u002Fnative-select",{"title":177,"path":178,"stem":179,"new":18,"type":19,"children":-1},"Navigation Menu","\u002Fdocs\u002Fcomponents\u002Fnavigation-menu","docs\u002Fcomponents\u002Fnavigation-menu",{"title":181,"path":182,"stem":183,"new":18,"type":19,"children":-1},"Number Field","\u002Fdocs\u002Fcomponents\u002Fnumber-field","docs\u002Fcomponents\u002Fnumber-field",{"title":185,"path":186,"stem":187,"new":18,"type":19,"children":-1},"Pagination","\u002Fdocs\u002Fcomponents\u002Fpagination","docs\u002Fcomponents\u002Fpagination",{"title":189,"path":190,"stem":191,"new":18,"type":19,"children":-1},"Pin Input","\u002Fdocs\u002Fcomponents\u002Fpin-input","docs\u002Fcomponents\u002Fpin-input",{"title":193,"path":194,"stem":195,"new":18,"type":19,"children":-1},"Popover","\u002Fdocs\u002Fcomponents\u002Fpopover","docs\u002Fcomponents\u002Fpopover",{"title":197,"path":198,"stem":199,"new":18,"type":19,"children":-1},"Progress","\u002Fdocs\u002Fcomponents\u002Fprogress","docs\u002Fcomponents\u002Fprogress",{"title":201,"path":202,"stem":203,"new":204,"type":19,"children":-1},"Questionnaire","\u002Fdocs\u002Fcomponents\u002Fquestionnaire","docs\u002Fcomponents\u002Fquestionnaire",true,{"title":206,"path":207,"stem":208,"new":18,"type":19,"children":-1},"Radio Group","\u002Fdocs\u002Fcomponents\u002Fradio-group","docs\u002Fcomponents\u002Fradio-group",{"title":210,"path":211,"stem":212,"new":18,"type":19,"children":-1},"Range Calendar","\u002Fdocs\u002Fcomponents\u002Frange-calendar","docs\u002Fcomponents\u002Frange-calendar",{"title":214,"path":215,"stem":216,"new":18,"type":19,"children":-1},"Resizable","\u002Fdocs\u002Fcomponents\u002Fresizable","docs\u002Fcomponents\u002Fresizable",{"title":218,"path":219,"stem":220,"new":18,"type":19,"children":-1},"Scroll Area","\u002Fdocs\u002Fcomponents\u002Fscroll-area","docs\u002Fcomponents\u002Fscroll-area",{"title":222,"path":223,"stem":224,"new":18,"type":19,"children":-1},"Select","\u002Fdocs\u002Fcomponents\u002Fselect","docs\u002Fcomponents\u002Fselect",{"title":226,"path":227,"stem":228,"new":18,"type":19,"children":-1},"Separator","\u002Fdocs\u002Fcomponents\u002Fseparator","docs\u002Fcomponents\u002Fseparator",{"title":230,"path":231,"stem":232,"new":18,"type":19,"children":-1},"Sheet","\u002Fdocs\u002Fcomponents\u002Fsheet","docs\u002Fcomponents\u002Fsheet",{"title":234,"path":235,"stem":236,"new":18,"type":19,"children":-1},"Sidebar","\u002Fdocs\u002Fcomponents\u002Fsidebar","docs\u002Fcomponents\u002Fsidebar",{"title":238,"path":239,"stem":240,"new":18,"type":19,"children":-1},"Skeleton","\u002Fdocs\u002Fcomponents\u002Fskeleton","docs\u002Fcomponents\u002Fskeleton",{"title":242,"path":243,"stem":244,"new":18,"type":19,"children":-1},"Slider","\u002Fdocs\u002Fcomponents\u002Fslider","docs\u002Fcomponents\u002Fslider",{"title":246,"path":247,"stem":248,"new":18,"type":19,"children":-1},"Sonner","\u002Fdocs\u002Fcomponents\u002Fsonner","docs\u002Fcomponents\u002Fsonner",{"title":250,"path":251,"stem":252,"new":18,"type":19,"children":-1},"Spinner","\u002Fdocs\u002Fcomponents\u002Fspinner","docs\u002Fcomponents\u002Fspinner",{"title":254,"path":255,"stem":256,"new":18,"type":19,"children":-1},"Stepper","\u002Fdocs\u002Fcomponents\u002Fstepper","docs\u002Fcomponents\u002Fstepper",{"title":258,"path":259,"stem":260,"new":18,"type":19,"children":-1},"Switch","\u002Fdocs\u002Fcomponents\u002Fswitch","docs\u002Fcomponents\u002Fswitch",{"title":262,"path":263,"stem":264,"new":18,"type":19,"children":-1},"Table","\u002Fdocs\u002Fcomponents\u002Ftable","docs\u002Fcomponents\u002Ftable",{"title":266,"path":267,"stem":268,"new":18,"type":19,"children":-1},"Tabs","\u002Fdocs\u002Fcomponents\u002Ftabs","docs\u002Fcomponents\u002Ftabs",{"title":270,"path":271,"stem":272,"new":18,"type":19,"children":-1},"Tags Input","\u002Fdocs\u002Fcomponents\u002Ftags-input","docs\u002Fcomponents\u002Ftags-input",{"title":274,"path":275,"stem":276,"new":18,"type":19,"children":-1},"Textarea","\u002Fdocs\u002Fcomponents\u002Ftextarea","docs\u002Fcomponents\u002Ftextarea",{"title":278,"path":279,"stem":280,"new":18,"type":19,"children":-1},"Toast","\u002Fdocs\u002Fcomponents\u002Ftoast","docs\u002Fcomponents\u002Ftoast",{"title":282,"path":283,"stem":284,"new":18,"type":19,"children":-1},"Toggle","\u002Fdocs\u002Fcomponents\u002Ftoggle","docs\u002Fcomponents\u002Ftoggle",{"title":286,"path":287,"stem":288,"new":18,"type":19,"children":-1},"Toggle Group","\u002Fdocs\u002Fcomponents\u002Ftoggle-group","docs\u002Fcomponents\u002Ftoggle-group",{"title":290,"path":291,"stem":292,"new":18,"type":19,"children":-1},"Tooltip","\u002Fdocs\u002Fcomponents\u002Ftooltip","docs\u002Fcomponents\u002Ftooltip",{"title":294,"path":295,"stem":296,"new":18,"type":19,"children":-1},"Typography","\u002Fdocs\u002Fcomponents\u002Ftypography","docs\u002Fcomponents\u002Ftypography","group",{"title":299,"path":300,"stem":301,"children":302,"new":18,"type":297},"Installation","\u002Fdocs\u002Finstallation","docs\u002F02.installation",[303,308,312,316,320],{"title":304,"path":305,"stem":306,"new":18,"type":307,"children":-1},"Vite","\u002Fdocs\u002Finstallation\u002Fvite","docs\u002Finstallation\u002F01.vite","page",{"title":309,"path":310,"stem":311,"new":18,"type":307,"children":-1},"Nuxt","\u002Fdocs\u002Finstallation\u002Fnuxt","docs\u002Finstallation\u002F02.nuxt",{"title":313,"path":314,"stem":315,"new":18,"type":307,"children":-1},"Astro","\u002Fdocs\u002Finstallation\u002Fastro","docs\u002Finstallation\u002F03.astro",{"title":317,"path":318,"stem":319,"new":18,"type":307,"children":-1},"Laravel","\u002Fdocs\u002Finstallation\u002Flaravel","docs\u002Finstallation\u002F04.laravel",{"title":321,"path":322,"stem":323,"new":18,"type":307,"children":-1},"Manual Installation","\u002Fdocs\u002Finstallation\u002Fmanual","docs\u002Finstallation\u002F05.manual",{"title":325,"path":326,"stem":327,"children":328,"new":18,"type":297},"Dark Mode","\u002Fdocs\u002Fdark-mode","docs\u002F05.dark-mode",[329,332,335,339],{"title":304,"path":330,"stem":331,"new":18,"type":307,"children":-1},"\u002Fdocs\u002Fdark-mode\u002Fvite","docs\u002Fdark-mode\u002F01.vite",{"title":309,"path":333,"stem":334,"new":18,"type":307,"children":-1},"\u002Fdocs\u002Fdark-mode\u002Fnuxt","docs\u002Fdark-mode\u002F02.nuxt",{"title":336,"path":337,"stem":338,"new":18,"type":307,"children":-1},"Vitepress","\u002Fdocs\u002Fdark-mode\u002Fvitepress","docs\u002Fdark-mode\u002F03.vitepress",{"title":313,"path":340,"stem":341,"new":18,"type":307,"children":-1},"\u002Fdocs\u002Fdark-mode\u002Fastro","docs\u002Fdark-mode\u002F04.astro",{"title":343,"path":344,"stem":345,"children":346,"new":18,"type":297},"Directory","\u002Fdocs\u002Fdirectory","docs\u002Fdirectory\u002Findex",[347],{"title":343,"path":344,"stem":345,"new":18,"type":307,"children":-1},{"title":349,"path":350,"stem":351,"children":352,"new":18,"type":297},"Forms","\u002Fdocs\u002Fforms","docs\u002Fforms",[353,357,361],{"title":354,"path":355,"stem":356,"new":18,"type":307,"children":-1},"VeeValidate","\u002Fdocs\u002Fforms\u002Fvee-validate","docs\u002Fforms\u002F01.vee-validate",{"title":358,"path":359,"stem":360,"new":18,"type":307,"children":-1},"TanStack Form","\u002Fdocs\u002Fforms\u002Ftanstack-form","docs\u002Fforms\u002F02.tanstack-form",{"title":362,"path":363,"stem":364,"new":18,"type":307,"children":-1},"Formisch","\u002Fdocs\u002Fforms\u002Fformisch","docs\u002Fforms\u002F03.formisch",{"title":366,"path":367,"stem":368,"children":369,"new":18,"type":297},"Registry","\u002Fdocs\u002Fregistry","docs\u002Fregistry\u002Findex",[370,371,375,379,383,387],{"title":366,"path":367,"stem":368,"new":18,"type":307,"children":-1},{"title":372,"path":373,"stem":374,"new":18,"type":307,"children":-1},"Examples","\u002Fdocs\u002Fregistry\u002Fexamples","docs\u002Fregistry\u002Fexamples",{"title":376,"path":377,"stem":378,"new":18,"type":307,"children":-1},"FAQ","\u002Fdocs\u002Fregistry\u002Ffaq","docs\u002Fregistry\u002Ffaq",{"title":380,"path":381,"stem":382,"new":18,"type":307,"children":-1},"Getting Started","\u002Fdocs\u002Fregistry\u002Fgetting-started","docs\u002Fregistry\u002Fgetting-started",{"title":384,"path":385,"stem":386,"new":18,"type":307,"children":-1},"registry-item.json","\u002Fdocs\u002Fregistry\u002Fregistry-item-json","docs\u002Fregistry\u002Fregistry-item-json",{"title":388,"path":389,"stem":390,"new":18,"type":307,"children":-1},"registry.json","\u002Fdocs\u002Fregistry\u002Fregistry-json","docs\u002Fregistry\u002Fregistry-json",{"title":392,"path":393,"stem":394,"children":395,"page":18,"type":297},"Utilities","\u002Fdocs\u002Futilities","docs\u002Futilities",[396,400],{"title":397,"path":398,"stem":399,"new":18,"type":307,"children":-1},"scroll-fade","\u002Fdocs\u002Futilities\u002Fscroll-fade","docs\u002Futilities\u002Fscroll-fade",{"title":401,"path":402,"stem":403,"new":18,"type":307,"children":-1},"shimmer","\u002Fdocs\u002Futilities\u002Fshimmer","docs\u002Futilities\u002Fshimmer",{"path":6,"stem":7,"title":405,"type":297,"children":406},"Get Started",[407,411,418,422,426,432,436,440,444,448,452,456,460],{"title":408,"path":409,"stem":410,"new":18,"type":307,"children":-1},"Introduction","\u002Fdocs\u002Fintroduction","docs\u002F01.introduction",{"title":299,"path":300,"stem":301,"children":412,"new":18,"type":297},[413,414,415,416,417],{"title":304,"path":305,"stem":306,"new":18,"type":307,"children":-1},{"title":309,"path":310,"stem":311,"new":18,"type":307,"children":-1},{"title":313,"path":314,"stem":315,"new":18,"type":307,"children":-1},{"title":317,"path":318,"stem":319,"new":18,"type":307,"children":-1},{"title":321,"path":322,"stem":323,"new":18,"type":307,"children":-1},{"title":419,"path":420,"stem":421,"new":18,"type":307,"children":-1},"components.json","\u002Fdocs\u002Fcomponents-json","docs\u002F03.components-json",{"title":423,"path":424,"stem":425,"new":18,"type":307,"children":-1},"Theming","\u002Fdocs\u002Ftheming","docs\u002F04.theming",{"title":325,"path":326,"stem":327,"children":427,"new":18,"type":297},[428,429,430,431],{"title":304,"path":330,"stem":331,"new":18,"type":307,"children":-1},{"title":309,"path":333,"stem":334,"new":18,"type":307,"children":-1},{"title":336,"path":337,"stem":338,"new":18,"type":307,"children":-1},{"title":313,"path":340,"stem":341,"new":18,"type":307,"children":-1},{"title":433,"path":434,"stem":435,"new":18,"type":307,"children":-1},"CLI","\u002Fdocs\u002Fcli","docs\u002F06.cli",{"title":437,"path":438,"stem":439,"new":18,"type":307,"children":-1},"JavaScript","\u002Fdocs\u002Fjavascript","docs\u002F07.javascript",{"title":441,"path":442,"stem":443,"new":18,"type":307,"children":-1},"RTL","\u002Fdocs\u002Frtl","docs\u002F08.rtl",{"title":445,"path":446,"stem":447,"new":18,"type":307,"children":-1},"Figma","\u002Fdocs\u002Ffigma","docs\u002F09.figma",{"title":449,"path":450,"stem":451,"new":18,"type":307,"children":-1},"Changelog","\u002Fdocs\u002Fchangelog","docs\u002F10.changelog",{"title":453,"path":454,"stem":455,"new":18,"type":307,"children":-1},"Legacy Docs","\u002Fdocs\u002Flegacy","docs\u002F11.legacy",{"title":457,"path":458,"stem":459,"new":18,"type":307,"children":-1},"Skills","\u002Fdocs\u002Fskills","docs\u002Fskills",{"title":392,"path":393,"stem":394,"children":461,"page":18,"type":297},[462,463],{"title":397,"path":398,"stem":399,"new":18,"type":307,"children":-1},{"title":401,"path":402,"stem":403,"new":18,"type":307,"children":-1},{"repo":465},{"id":466,"name":467,"repo":468,"description":469,"createdAt":470,"updatedAt":471,"pushedAt":472,"stars":473,"watchers":474,"forks":475,"defaultBranch":476},658791894,"shadcn-vue","unovue\u002Fshadcn-vue","Vue port of shadcn-ui","2023-06-26T13:53:23Z","2026-08-07T07:17:53Z","2026-08-07T07:16:31Z",10408,36,670,"dev",{"id":478,"title":201,"body":479,"description":2374,"extension":2375,"links":2376,"meta":2377,"navigation":204,"new":204,"path":202,"rawbody":2378,"seo":2379,"stem":203,"__hash__":2380},"content\u002Fdocs\u002Fcomponents\u002Fquestionnaire.md",{"type":480,"value":481,"toc":2334},"minimark",[482,490,494,551,555,564,568,571,579,600,604,611,615,644,647,652,659,664,668,675,679,683,690,695,699,712,717,721,724,728,734,740,744,750,754,758,761,765,769,772,776,780,787,791,795,816,820,824,830,834,837,844,850,854,887,890,893,898,902,1009,1013,1032,1048,1055,1059,1062,1065,1206,1272,1275,1290,1358,1361,1367,1483,1512,1515,1520,1584,1587,1592,1672,1675,1678,1741,1745,1748,1849,1891,1895,1898,1928,1931,1934,2038,2041,2044,2121,2124,2127,2190,2194,2211],[483,484],"component-preview",{"align":485,"className":486,"name":488,"previewClass":489},"end",[487],"style-nova","QuestionnaireDemo","min-h-[560px] p-4 sm:p-8",[491,492,299],"h2",{"id":493},"installation",[495,496,497,513,527],"code-tabs",{},[498,499,500,507],"tabs-list",{},[501,502,504],"tabs-trigger",{"value":503},"cli",[505,506,433],"p",{},[501,508,510],{"value":509},"manual",[505,511,512],{},"Manual",[514,515,516],"tabs-content",{"value":503},[517,518,524],"pre",{"className":519,"code":521,"language":522,"meta":523},[520],"language-bash","npx shadcn-vue@latest add questionnaire\n","bash","",[525,526,521],"code",{"__ignoreMap":523},[514,528,529],{"value":509},[530,531,532,546],"steps",{},[533,534,535],"step",{},[505,536,537,538,545],{},"Copy and paste the ",[539,540,544],"a",{"href":541,"rel":542},"https:\u002F\u002Fgithub.com\u002Funovue\u002Fshadcn-vue\u002Ftree\u002Fdev\u002Fapps\u002Fv4\u002Fregistry\u002Fbases\u002Freka\u002Fui\u002Fquestionnaire",[543],"nofollow","GitHub source code"," into your project.",[533,547,548],{},[505,549,550],{},"Update the import paths to match your project setup.",[491,552,554],{"id":553},"usage","Usage",[517,556,562],{"className":557,"code":559,"language":560,"meta":561},[558],"language-vue","\u003Cscript setup lang=\"ts\">\nimport {\n  Questionnaire,\n  QuestionnaireActions,\n  QuestionnaireChoice,\n  QuestionnaireChoices,\n  QuestionnaireDescription,\n  QuestionnaireError,\n  QuestionnaireItem,\n  QuestionnaireNext,\n  QuestionnairePrevious,\n  QuestionnaireProgress,\n  QuestionnaireSkip,\n  QuestionnaireSubmit,\n  QuestionnaireTitle,\n} from '@\u002Fcomponents\u002Fui\u002Fquestionnaire'\n\nconst items = [\n  { name: 'direction', required: true },\n  { name: 'timing', required: true },\n]\n\nfunction handleSubmit(event: Event) {\n  event.preventDefault()\n\n  const answers = new FormData(event.target as HTMLFormElement)\n  console.log(Object.fromEntries(answers))\n}\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003CQuestionnaire :items=\"items\" @submit=\"handleSubmit\">\n    \u003CQuestionnaireProgress \u002F>\n\n    \u003CQuestionnaireItem name=\"direction\" required>\n      \u003CQuestionnaireTitle>What should the agent build next?\u003C\u002FQuestionnaireTitle>\n      \u003CQuestionnaireDescription>Choose a direction.\u003C\u002FQuestionnaireDescription>\n      \u003CQuestionnaireChoices>\n        \u003CQuestionnaireChoice value=\"tool-calls\">Tool call timeline\u003C\u002FQuestionnaireChoice>\n        \u003CQuestionnaireChoice value=\"approvals\">Approval checkpoints\u003C\u002FQuestionnaireChoice>\n      \u003C\u002FQuestionnaireChoices>\n      \u003CQuestionnaireError \u002F>\n    \u003C\u002FQuestionnaireItem>\n\n    \u003CQuestionnaireItem name=\"timing\" required>\n      \u003CQuestionnaireTitle>When should work begin?\u003C\u002FQuestionnaireTitle>\n      \u003CQuestionnaireChoices>\n        \u003CQuestionnaireChoice value=\"now\">Start now\u003C\u002FQuestionnaireChoice>\n        \u003CQuestionnaireChoice value=\"backlog\">Add it to the backlog\u003C\u002FQuestionnaireChoice>\n      \u003C\u002FQuestionnaireChoices>\n      \u003CQuestionnaireError \u002F>\n    \u003C\u002FQuestionnaireItem>\n\n    \u003CQuestionnaireActions>\n      \u003CQuestionnairePrevious \u002F>\n      \u003CQuestionnaireSkip \u002F>\n      \u003CQuestionnaireNext \u002F>\n      \u003CQuestionnaireSubmit \u002F>\n    \u003C\u002FQuestionnaireActions>\n  \u003C\u002FQuestionnaire>\n\u003C\u002Ftemplate>\n","vue","showLineNumbers",[525,563,559],{"__ignoreMap":523},[491,565,567],{"id":566},"composition","Composition",[505,569,570],{},"Use the following composition to build a questionnaire:",[517,572,577],{"className":573,"code":575,"language":576,"meta":523},[574],"language-text","Questionnaire\n├── QuestionnaireProgress\n├── QuestionnaireItem\n│   ├── QuestionnaireTitle\n│   ├── QuestionnaireDescription\n│   ├── QuestionnaireChoices\n│   │   ├── QuestionnaireChoice\n│   │   │   └── QuestionnaireChoiceDescription\n│   │   └── QuestionnaireInput\n│   └── QuestionnaireError\n└── QuestionnaireActions\n    ├── QuestionnairePrevious\n    ├── QuestionnaireSkip\n    ├── QuestionnaireNext\n    └── QuestionnaireSubmit\n","text",[525,578,575],{"__ignoreMap":523},[505,580,581,583,584,587,588,591,592,595,596,599],{},[525,582,201],{}," renders a real ",[525,585,586],{},"\u003Cform>"," and every item renders a ",[525,589,590],{},"\u003Cfieldset>"," with a ",[525,593,594],{},"\u003Clegend>",", so answers submit with ",[525,597,598],{},"FormData"," and no extra state is needed.",[491,601,603],{"id":602},"server-rendering","Server Rendering",[505,605,606,607,610],{},"Pass ",[525,608,609],{},"items"," to server-render the active item, progress, actions, and answer shortcuts. Without it the questionnaire only learns its order once the items have mounted on the client.",[491,612,614],{"id":613},"features","Features",[616,617,618,622,625,628,634,641],"ul",{},[619,620,621],"li",{},"One question at a time, with progress, navigation, and validation handled for you",[619,623,624],{},"Single-choice, multiple-choice, freeform, and intentionally skipped answers",[619,626,627],{},"Keyboard shortcuts for choices, plus arrow key navigation between questions and answers",[619,629,630,631,633],{},"Declarative ",[525,632,609],{}," for item order, conditional items, and stable shortcut assignment",[619,635,636,637,640],{},"Controlled navigation with ",[525,638,639],{},"v-model:item"," for custom validation flows",[619,642,643],{},"Native form reset restores the answers you marked as defaults",[491,645,372],{"id":646},"examples",[648,649,651],"h3",{"id":650},"multiple-selection","Multiple Selection",[505,653,654,655,658],{},"Use ",[525,656,657],{},"multiple"," for an item that accepts more than one fixed answer.",[483,660],{"align":485,"className":661,"name":662,"previewClass":663},[487],"QuestionnaireMultipleDemo","min-h-[420px] p-4 sm:p-8",[648,665,667],{"id":666},"freeform-answer","Freeform Answer",[505,669,670,671,674],{},"Compose ",[525,672,673],{},"QuestionnaireInput"," with fixed choices when the user can provide another answer.",[483,676],{"align":485,"className":677,"name":678,"previewClass":663},[487],"QuestionnaireFreeformDemo",[648,680,682],{"id":681},"explicit-skip","Explicit Skip",[505,684,685,686,689],{},"Add ",[525,687,688],{},"QuestionnaireSkip"," when an optional item may be intentionally left unanswered.",[483,691],{"align":485,"className":692,"name":693,"previewClass":694},[487],"QuestionnaireSkipDemo","min-h-[520px] p-4 sm:p-8",[648,696,698],{"id":697},"shortcuts","Shortcuts",[505,700,701,702,704,705,708,709,711],{},"Assign a letter or number key to each answer with ",[525,703,697],{},". Declare ",[525,706,707],{},"choices"," on ",[525,710,609],{}," so the keys stay stable regardless of the render order.",[483,713],{"align":485,"className":714,"name":715,"previewClass":716},[487],"QuestionnaireShortcutsDemo","min-h-[480px] p-4 sm:p-8",[648,718,720],{"id":719},"custom-validation","Custom Validation",[505,722,723],{},"Combine controlled navigation with an external schema such as Zod to return to an invalid item and present its error.",[483,725],{"align":485,"className":726,"name":727,"previewClass":694},[487],"QuestionnaireValidationDemo",[505,729,730,733],{},[525,731,732],{},"QuestionnaireError"," falls back to a built-in message, so only render your own message when you have one:",[517,735,738],{"className":736,"code":737,"language":560,"meta":561},[558],"\u003CQuestionnaireError>\n  \u003Ctemplate v-if=\"errors.detail\">\n    {{ errors.detail }}\n  \u003C\u002Ftemplate>\n\u003C\u002FQuestionnaireError>\n",[525,739,737],{"__ignoreMap":523},[648,741,743],{"id":742},"controlled","Controlled",[505,745,746,747,749],{},"Control the active item from host state, such as returning to an invalid step. Use ",[525,748,639],{},".",[483,751],{"align":485,"className":752,"name":753,"previewClass":694},[487],"QuestionnaireControlledDemo",[648,755,757],{"id":756},"resume","Resume",[505,759,760],{},"Restore a saved active item and default answers, then reset changes back to that saved state.",[483,762],{"align":485,"className":763,"name":764,"previewClass":694},[487],"QuestionnaireResumeDemo",[648,766,768],{"id":767},"conditional-items","Conditional Items",[505,770,771],{},"Disable items that do not apply to the user's earlier answers.",[483,773],{"align":485,"className":774,"name":775,"previewClass":694},[487],"QuestionnaireConditionalDemo",[648,777,779],{"id":778},"navigation-state","Navigation State",[505,781,782,783,786],{},"Read item status to opt into disabled navigation and custom action styling. Listen to ",[525,784,785],{},"@update:status"," on the items you want to track.",[483,788],{"align":485,"className":789,"name":790,"previewClass":716},[487],"QuestionnaireNavigationStateDemo",[648,792,794],{"id":793},"custom-progress","Custom Progress",[505,796,797,798,801,802,805,806,805,809,812,813,749],{},"Use the progress slot state to build a custom progress indicator. ",[525,799,800],{},"QuestionnaireProgress"," exposes ",[525,803,804],{},"current",", ",[525,807,808],{},"total",[525,810,811],{},"first",", and ",[525,814,815],{},"last",[483,817],{"align":485,"className":818,"name":819,"previewClass":694},[487],"QuestionnaireProgressDemo",[648,821,823],{"id":822},"animated-items","Animated Items",[505,825,826,827,749],{},"Animate the active item while keeping progress and navigation stationary. The active item is marked with ",[525,828,829],{},"data-active",[483,831],{"align":485,"className":832,"name":833,"previewClass":694},[487],"QuestionnaireAnimatedDemo",[648,835,65],{"id":836},"card",[505,838,839,840,843],{},"Compose Questionnaire with Card slots while keeping the question title and description semantic. Use ",[525,841,842],{},"as-child"," to render a part as another component:",[517,845,848],{"className":846,"code":847,"language":560,"meta":561},[558],"\u003CQuestionnaireTitle as-child>\n  \u003CCardTitle>What should the agent work on?\u003C\u002FCardTitle>\n\u003C\u002FQuestionnaireTitle>\n",[525,849,847],{"__ignoreMap":523},[483,851],{"align":485,"className":852,"name":853,"previewClass":489},[487],"QuestionnaireCardDemo",[505,855,856,805,858,805,861,805,864,805,867,805,869,872,873,876,877,879,880,882,883,886],{},[525,857,800],{},[525,859,860],{},"QuestionnaireTitle",[525,862,863],{},"QuestionnaireDescription",[525,865,866],{},"QuestionnaireChoices",[525,868,732],{},[525,870,871],{},"QuestionnaireActions",", and the four navigation buttons all accept ",[525,874,875],{},"as"," and ",[525,878,842],{},". ",[525,881,842],{}," on the title replaces the ",[525,884,885],{},"legend"," that names the item, so the item labels itself with the rendered title instead. The title and description keep the id of the child they render.",[648,888,105],{"id":889},"dialog",[505,891,892],{},"Compose Questionnaire inside a Dialog while keeping cancellation and dismissal host-owned.",[483,894],{"align":485,"className":895,"name":896,"previewClass":897},[487],"QuestionnaireDialogDemo","min-h-[320px] p-4 sm:p-8",[491,899,901],{"id":900},"keyboard-navigation","Keyboard navigation",[903,904,905,918],"table",{},[906,907,908],"thead",{},[909,910,911,915],"tr",{},[912,913,914],"th",{},"Key",[912,916,917],{},"Description",[919,920,921,932,942,952,962,972,986],"tbody",{},[909,922,923,929],{},[924,925,926],"td",{},[525,927,928],{},"Arrow Down",[924,930,931],{},"Moves focus to the next answer.",[909,933,934,939],{},[924,935,936],{},[525,937,938],{},"Arrow Up",[924,940,941],{},"Moves focus to the previous answer.",[909,943,944,949],{},[924,945,946],{},[525,947,948],{},"Arrow Right",[924,950,951],{},"Moves to the next question once the current one is answered.",[909,953,954,959],{},[924,955,956],{},[525,957,958],{},"Arrow Left",[924,960,961],{},"Moves to the previous question.",[909,963,964,969],{},[924,965,966],{},[525,967,968],{},"Enter",[924,970,971],{},"Confirms the focused answer and moves on, or submits on the last question.",[909,973,974,983],{},[924,975,976,979,980],{},[525,977,978],{},"Meta+Enter"," \u002F ",[525,981,982],{},"Ctrl+Enter",[924,984,985],{},"Confirms the active question from anywhere in the form.",[909,987,988,1003],{},[924,989,990,993,994,979,997,993,1000],{},[525,991,992],{},"A"," – ",[525,995,996],{},"Z",[525,998,999],{},"1",[525,1001,1002],{},"9",[924,1004,1005,1006,1008],{},"Selects the matching choice when ",[525,1007,697],{}," is set.",[491,1010,1012],{"id":1011},"accessibility","Accessibility",[505,1014,1015,1018,1019,591,1022,1024,1025,1028,1029,749],{},[525,1016,1017],{},"QuestionnaireItem"," renders a ",[525,1020,1021],{},"fieldset",[525,1023,885],{},", so every question is announced with its answers. Descriptions and errors are associated with the item through ",[525,1026,1027],{},"aria-describedby",", and an invalid item exposes ",[525,1030,1031],{},"aria-invalid",[505,1033,1034,1036,1037,1040,1041,876,1044,1047],{},[525,1035,800],{}," renders a named ",[525,1038,1039],{},"progressbar"," that announces the current question. Inactive items are ",[525,1042,1043],{},"hidden",[525,1045,1046],{},"inert",", so they stay out of the tab order and the accessibility tree.",[505,1049,1050,1051,1054],{},"Navigation actions are real buttons. ",[525,1052,1053],{},"QuestionnaireSubmit"," submits the form, so a questionnaire keeps working with browser autofill and native form submission.",[491,1056,1058],{"id":1057},"api-reference","API Reference",[648,1060,201],{"id":1061},"questionnaire",[505,1063,1064],{},"The root form. Manages the active item, progress, validation, and keyboard navigation.",[903,1066,1067,1082],{},[906,1068,1069],{},[909,1070,1071,1074,1077,1080],{},[912,1072,1073],{},"Prop",[912,1075,1076],{},"Type",[912,1078,1079],{},"Default",[912,1081,917],{},[919,1083,1084,1111,1130,1149,1165,1189],{},[909,1085,1086,1090,1095,1098],{},[924,1087,1088],{},[525,1089,609],{},[924,1091,1092],{},[525,1093,1094],{},"QuestionnaireItemDefinition[]",[924,1096,1097],{},"-",[924,1099,1100,1101,805,1104,1107,1108,1110],{},"Declares item order, ",[525,1102,1103],{},"required",[525,1105,1106],{},"disabled",", and the ",[525,1109,707],{}," used for shortcuts.",[909,1112,1113,1118,1123,1125],{},[924,1114,1115],{},[525,1116,1117],{},"item",[924,1119,1120],{},[525,1121,1122],{},"string",[924,1124,1097],{},[924,1126,1127,1128,749],{},"The active item. Use with ",[525,1129,639],{},[909,1131,1132,1137,1141,1143],{},[924,1133,1134],{},[525,1135,1136],{},"defaultItem",[924,1138,1139],{},[525,1140,1122],{},[924,1142,1097],{},[924,1144,1145,1146,1148],{},"The item shown first. Ignored when ",[525,1147,1117],{}," is provided.",[909,1150,1151,1155,1160,1162],{},[924,1152,1153],{},[525,1154,697],{},[924,1156,1157],{},[525,1158,1159],{},"\"letters\" | \"numbers\"",[924,1161,1097],{},[924,1163,1164],{},"Assigns a keyboard shortcut to every choice.",[909,1166,1167,1172,1177,1182],{},[924,1168,1169],{},[525,1170,1171],{},"noValidate",[924,1173,1174],{},[525,1175,1176],{},"boolean",[924,1178,1179],{},[525,1180,1181],{},"true",[924,1183,1184,1185,1188],{},"Set to ",[525,1186,1187],{},"false"," to run native constraint validation on answered items.",[909,1190,1191,1196,1201,1203],{},[924,1192,1193],{},[525,1194,1195],{},"class",[924,1197,1198],{},[525,1199,1200],{},"HTMLAttributes[\"class\"]",[924,1202,1097],{},[924,1204,1205],{},"Additional classes to apply to the form.",[903,1207,1208,1220],{},[906,1209,1210],{},[909,1211,1212,1215,1218],{},[912,1213,1214],{},"Emit",[912,1216,1217],{},"Payload",[912,1219,917],{},[919,1221,1222,1236,1255],{},[909,1223,1224,1229,1233],{},[924,1225,1226],{},[525,1227,1228],{},"update:item",[924,1230,1231],{},[525,1232,1122],{},[924,1234,1235],{},"The active item changed.",[909,1237,1238,1243,1248],{},[924,1239,1240],{},[525,1241,1242],{},"submit",[924,1244,1245],{},[525,1246,1247],{},"Event",[924,1249,1250,1251,1254],{},"Every item is valid. Call ",[525,1252,1253],{},"event.preventDefault()"," to handle it yourself.",[909,1256,1257,1262,1266],{},[924,1258,1259],{},[525,1260,1261],{},"reset",[924,1263,1264],{},[525,1265,1247],{},[924,1267,1268,1269,1271],{},"The form was reset. Call ",[525,1270,1253],{}," to keep the answers.",[648,1273,800],{"id":1274},"questionnaireprogress",[505,1276,1277,1278,1280,1281,805,1283,805,1285,812,1287,1289],{},"A ",[525,1279,1039],{}," announcing the active question. Exposes ",[525,1282,804],{},[525,1284,808],{},[525,1286,811],{},[525,1288,815],{}," to its default slot.",[903,1291,1292,1304],{},[906,1293,1294],{},[909,1295,1296,1298,1300,1302],{},[912,1297,1073],{},[912,1299,1076],{},[912,1301,1079],{},[912,1303,917],{},[919,1305,1306,1321,1340],{},[909,1307,1308,1312,1316,1318],{},[924,1309,1310],{},[525,1311,1195],{},[924,1313,1314],{},[525,1315,1200],{},[924,1317,1097],{},[924,1319,1320],{},"Additional classes to apply to the progress bar.",[909,1322,1323,1327,1332,1337],{},[924,1324,1325],{},[525,1326,875],{},[924,1328,1329],{},[525,1330,1331],{},"AsTag | Component",[924,1333,1334],{},[525,1335,1336],{},"\"div\"",[924,1338,1339],{},"The element or component to render as.",[909,1341,1342,1347,1351,1355],{},[924,1343,1344],{},[525,1345,1346],{},"asChild",[924,1348,1349],{},[525,1350,1176],{},[924,1352,1353],{},[525,1354,1187],{},[924,1356,1357],{},"Render the child element instead.",[648,1359,1017],{"id":1360},"questionnaireitem",[505,1362,1363,1364,1366],{},"A single question, rendered as a ",[525,1365,1021],{},". Only the active item is visible.",[903,1368,1369,1381],{},[906,1370,1371],{},[909,1372,1373,1375,1377,1379],{},[912,1374,1073],{},[912,1376,1076],{},[912,1378,1079],{},[912,1380,917],{},[919,1382,1383,1399,1416,1433,1450,1468],{},[909,1384,1385,1390,1394,1396],{},[924,1386,1387],{},[525,1388,1389],{},"name",[924,1391,1392],{},[525,1393,1122],{},[924,1395,1097],{},[924,1397,1398],{},"Required. The name the answer submits under.",[909,1400,1401,1405,1409,1413],{},[924,1402,1403],{},[525,1404,1103],{},[924,1406,1407],{},[525,1408,1176],{},[924,1410,1411],{},[525,1412,1187],{},[924,1414,1415],{},"Requires an answer before the questionnaire can continue.",[909,1417,1418,1422,1426,1430],{},[924,1419,1420],{},[525,1421,657],{},[924,1423,1424],{},[525,1425,1176],{},[924,1427,1428],{},[525,1429,1187],{},[924,1431,1432],{},"Renders choices as checkboxes and keeps every selected answer.",[909,1434,1435,1439,1443,1447],{},[924,1436,1437],{},[525,1438,1106],{},[924,1440,1441],{},[525,1442,1176],{},[924,1444,1445],{},[525,1446,1187],{},[924,1448,1449],{},"Removes the item from the flow without unmounting it.",[909,1451,1452,1457,1461,1465],{},[924,1453,1454],{},[525,1455,1456],{},"invalid",[924,1458,1459],{},[525,1460,1176],{},[924,1462,1463],{},[525,1464,1187],{},[924,1466,1467],{},"Marks the item invalid from outside, for example after schema validation.",[909,1469,1470,1474,1478,1480],{},[924,1471,1472],{},[525,1473,1195],{},[924,1475,1476],{},[525,1477,1200],{},[924,1479,1097],{},[924,1481,1482],{},"Additional classes to apply to the item.",[903,1484,1485,1495],{},[906,1486,1487],{},[909,1488,1489,1491,1493],{},[912,1490,1214],{},[912,1492,1217],{},[912,1494,917],{},[919,1496,1497],{},[909,1498,1499,1504,1509],{},[924,1500,1501],{},[525,1502,1503],{},"update:status",[924,1505,1506],{},[525,1507,1508],{},"\"unanswered\" | \"answered\" | \"skipped\"",[924,1510,1511],{},"The item status changed.",[648,1513,860],{"id":1514},"questionnairetitle",[505,1516,1517,1518,749],{},"The question, rendered as a ",[525,1519,885],{},[903,1521,1522,1534],{},[906,1523,1524],{},[909,1525,1526,1528,1530,1532],{},[912,1527,1073],{},[912,1529,1076],{},[912,1531,1079],{},[912,1533,917],{},[919,1535,1536,1551,1568],{},[909,1537,1538,1542,1546,1548],{},[924,1539,1540],{},[525,1541,1195],{},[924,1543,1544],{},[525,1545,1200],{},[924,1547,1097],{},[924,1549,1550],{},"Additional classes to apply to the title.",[909,1552,1553,1557,1561,1566],{},[924,1554,1555],{},[525,1556,875],{},[924,1558,1559],{},[525,1560,1331],{},[924,1562,1563],{},[525,1564,1565],{},"\"legend\"",[924,1567,1339],{},[909,1569,1570,1574,1578,1582],{},[924,1571,1572],{},[525,1573,1346],{},[924,1575,1576],{},[525,1577,1176],{},[924,1579,1580],{},[525,1581,1187],{},[924,1583,1357],{},[648,1585,863],{"id":1586},"questionnairedescription",[505,1588,1589,1590,749],{},"Help text associated with the item through ",[525,1591,1027],{},[903,1593,1594,1606],{},[906,1595,1596],{},[909,1597,1598,1600,1602,1604],{},[912,1599,1073],{},[912,1601,1076],{},[912,1603,1079],{},[912,1605,917],{},[919,1607,1608,1624,1641,1657],{},[909,1609,1610,1615,1619,1621],{},[924,1611,1612],{},[525,1613,1614],{},"id",[924,1616,1617],{},[525,1618,1122],{},[924,1620,1097],{},[924,1622,1623],{},"Overrides the generated id.",[909,1625,1626,1630,1634,1639],{},[924,1627,1628],{},[525,1629,875],{},[924,1631,1632],{},[525,1633,1331],{},[924,1635,1636],{},[525,1637,1638],{},"\"p\"",[924,1640,1339],{},[909,1642,1643,1647,1651,1655],{},[924,1644,1645],{},[525,1646,1346],{},[924,1648,1649],{},[525,1650,1176],{},[924,1652,1653],{},[525,1654,1187],{},[924,1656,1357],{},[909,1658,1659,1663,1667,1669],{},[924,1660,1661],{},[525,1662,1195],{},[924,1664,1665],{},[525,1666,1200],{},[924,1668,1097],{},[924,1670,1671],{},"Additional classes to apply to the description.",[648,1673,866],{"id":1674},"questionnairechoices",[505,1676,1677],{},"The answer list. Wraps choices and an optional freeform input.",[903,1679,1680,1692],{},[906,1681,1682],{},[909,1683,1684,1686,1688,1690],{},[912,1685,1073],{},[912,1687,1076],{},[912,1689,1079],{},[912,1691,917],{},[919,1693,1694,1709,1725],{},[909,1695,1696,1700,1704,1706],{},[924,1697,1698],{},[525,1699,1195],{},[924,1701,1702],{},[525,1703,1200],{},[924,1705,1097],{},[924,1707,1708],{},"Additional classes to apply to the list.",[909,1710,1711,1715,1719,1723],{},[924,1712,1713],{},[525,1714,875],{},[924,1716,1717],{},[525,1718,1331],{},[924,1720,1721],{},[525,1722,1336],{},[924,1724,1339],{},[909,1726,1727,1731,1735,1739],{},[924,1728,1729],{},[525,1730,1346],{},[924,1732,1733],{},[525,1734,1176],{},[924,1736,1737],{},[525,1738,1187],{},[924,1740,1357],{},[648,1742,1744],{"id":1743},"questionnairechoice","QuestionnaireChoice",[505,1746,1747],{},"A single answer, rendered as a radio or a checkbox depending on the item.",[903,1749,1750,1762],{},[906,1751,1752],{},[909,1753,1754,1756,1758,1760],{},[912,1755,1073],{},[912,1757,1076],{},[912,1759,1079],{},[912,1761,917],{},[919,1763,1764,1780,1799,1817,1834],{},[909,1765,1766,1771,1775,1777],{},[924,1767,1768],{},[525,1769,1770],{},"value",[924,1772,1773],{},[525,1774,1122],{},[924,1776,1097],{},[924,1778,1779],{},"Required. The submitted value.",[909,1781,1782,1787,1791,1793],{},[924,1783,1784],{},[525,1785,1786],{},"checked",[924,1788,1789],{},[525,1790,1176],{},[924,1792,1097],{},[924,1794,1795,1796,749],{},"Controlled checked state. Use with ",[525,1797,1798],{},"v-model:checked",[909,1800,1801,1806,1810,1814],{},[924,1802,1803],{},[525,1804,1805],{},"defaultChecked",[924,1807,1808],{},[525,1809,1176],{},[924,1811,1812],{},[525,1813,1187],{},[924,1815,1816],{},"Checks the choice on mount and after a native form reset.",[909,1818,1819,1823,1827,1831],{},[924,1820,1821],{},[525,1822,1106],{},[924,1824,1825],{},[525,1826,1176],{},[924,1828,1829],{},[525,1830,1187],{},[924,1832,1833],{},"Disables the choice.",[909,1835,1836,1840,1844,1846],{},[924,1837,1838],{},[525,1839,1195],{},[924,1841,1842],{},[525,1843,1200],{},[924,1845,1097],{},[924,1847,1848],{},"Additional classes to apply to the choice.",[903,1850,1851,1861],{},[906,1852,1853],{},[909,1854,1855,1857,1859],{},[912,1856,1214],{},[912,1858,1217],{},[912,1860,917],{},[919,1862,1863,1877],{},[909,1864,1865,1870,1874],{},[924,1866,1867],{},[525,1868,1869],{},"update:checked",[924,1871,1872],{},[525,1873,1176],{},[924,1875,1876],{},"The choice was checked or cleared.",[909,1878,1879,1884,1888],{},[924,1880,1881],{},[525,1882,1883],{},"change",[924,1885,1886],{},[525,1887,1247],{},[924,1889,1890],{},"The native change event.",[648,1892,1894],{"id":1893},"questionnairechoicedescription","QuestionnaireChoiceDescription",[505,1896,1897],{},"Secondary text inside a choice.",[903,1899,1900,1912],{},[906,1901,1902],{},[909,1903,1904,1906,1908,1910],{},[912,1905,1073],{},[912,1907,1076],{},[912,1909,1079],{},[912,1911,917],{},[919,1913,1914],{},[909,1915,1916,1920,1924,1926],{},[924,1917,1918],{},[525,1919,1195],{},[924,1921,1922],{},[525,1923,1200],{},[924,1925,1097],{},[924,1927,1671],{},[648,1929,673],{"id":1930},"questionnaireinput",[505,1932,1933],{},"A freeform answer. Answers the item while it holds a value, and submits under the item name.",[903,1935,1936,1948],{},[906,1937,1938],{},[909,1939,1940,1942,1944,1946],{},[912,1941,1073],{},[912,1943,1076],{},[912,1945,1079],{},[912,1947,917],{},[919,1949,1950,1970,1986,2006,2023],{},[909,1951,1952,1957,1962,1964],{},[924,1953,1954],{},[525,1955,1956],{},"modelValue",[924,1958,1959],{},[525,1960,1961],{},"string | number",[924,1963,1097],{},[924,1965,1966,1967,749],{},"Controlled value. Use with ",[525,1968,1969],{},"v-model",[909,1971,1972,1977,1981,1983],{},[924,1973,1974],{},[525,1975,1976],{},"defaultValue",[924,1978,1979],{},[525,1980,1961],{},[924,1982,1097],{},[924,1984,1985],{},"Fills the answer on mount and after a native reset.",[909,1987,1988,1993,1998,2003],{},[924,1989,1990],{},[525,1991,1992],{},"type",[924,1994,1995],{},[525,1996,1997],{},"QuestionnaireInputType",[924,1999,2000],{},[525,2001,2002],{},"\"text\"",[924,2004,2005],{},"The input type.",[909,2007,2008,2012,2016,2020],{},[924,2009,2010],{},[525,2011,1106],{},[924,2013,2014],{},[525,2015,1176],{},[924,2017,2018],{},[525,2019,1187],{},[924,2021,2022],{},"Disables the input.",[909,2024,2025,2029,2033,2035],{},[924,2026,2027],{},[525,2028,1195],{},[924,2030,2031],{},[525,2032,1200],{},[924,2034,1097],{},[924,2036,2037],{},"Additional classes to apply to the input.",[648,2039,732],{"id":2040},"questionnaireerror",[505,2042,2043],{},"The item error. Hidden until the item is invalid, and falls back to a built-in message.",[903,2045,2046,2058],{},[906,2047,2048],{},[909,2049,2050,2052,2054,2056],{},[912,2051,1073],{},[912,2053,1076],{},[912,2055,1079],{},[912,2057,917],{},[919,2059,2060,2074,2090,2106],{},[909,2061,2062,2066,2070,2072],{},[924,2063,2064],{},[525,2065,1614],{},[924,2067,2068],{},[525,2069,1122],{},[924,2071,1097],{},[924,2073,1623],{},[909,2075,2076,2080,2084,2088],{},[924,2077,2078],{},[525,2079,875],{},[924,2081,2082],{},[525,2083,1331],{},[924,2085,2086],{},[525,2087,1638],{},[924,2089,1339],{},[909,2091,2092,2096,2100,2104],{},[924,2093,2094],{},[525,2095,1346],{},[924,2097,2098],{},[525,2099,1176],{},[924,2101,2102],{},[525,2103,1187],{},[924,2105,1357],{},[909,2107,2108,2112,2116,2118],{},[924,2109,2110],{},[525,2111,1195],{},[924,2113,2114],{},[525,2115,1200],{},[924,2117,1097],{},[924,2119,2120],{},"Additional classes to apply to the error.",[648,2122,871],{"id":2123},"questionnaireactions",[505,2125,2126],{},"The navigation row.",[903,2128,2129,2141],{},[906,2130,2131],{},[909,2132,2133,2135,2137,2139],{},[912,2134,1073],{},[912,2136,1076],{},[912,2138,1079],{},[912,2140,917],{},[919,2142,2143,2158,2174],{},[909,2144,2145,2149,2153,2155],{},[924,2146,2147],{},[525,2148,1195],{},[924,2150,2151],{},[525,2152,1200],{},[924,2154,1097],{},[924,2156,2157],{},"Additional classes to apply to the row.",[909,2159,2160,2164,2168,2172],{},[924,2161,2162],{},[525,2163,875],{},[924,2165,2166],{},[525,2167,1331],{},[924,2169,2170],{},[525,2171,1336],{},[924,2173,1339],{},[909,2175,2176,2180,2184,2188],{},[924,2177,2178],{},[525,2179,1346],{},[924,2181,2182],{},[525,2183,1176],{},[924,2185,2186],{},[525,2187,1187],{},[924,2189,1357],{},[648,2191,2193],{"id":2192},"questionnaireprevious-questionnaireskip-questionnairenext-and-questionnairesubmit","QuestionnairePrevious, QuestionnaireSkip, QuestionnaireNext, and QuestionnaireSubmit",[505,2195,2196,2197,2200,2201,2203,2204,2207,2208,2210],{},"Navigation buttons. Each one hides itself when it does not apply: ",[525,2198,2199],{},"QuestionnairePrevious"," on the first item, ",[525,2202,688],{}," on required items, ",[525,2205,2206],{},"QuestionnaireNext"," on the last item, and ",[525,2209,1053],{}," everywhere but the last item.",[903,2212,2213,2225],{},[906,2214,2215],{},[909,2216,2217,2219,2221,2223],{},[912,2218,1073],{},[912,2220,1076],{},[912,2222,1079],{},[912,2224,917],{},[919,2226,2227,2250,2269,2286,2303,2319],{},[909,2228,2229,2234,2239,2247],{},[924,2230,2231],{},[525,2232,2233],{},"variant",[924,2235,2236],{},[525,2237,2238],{},"ButtonVariants[\"variant\"]",[924,2240,2241,979,2244],{},[525,2242,2243],{},"\"outline\"",[525,2245,2246],{},"\"default\"",[924,2248,2249],{},"The button variant.",[909,2251,2252,2257,2262,2266],{},[924,2253,2254],{},[525,2255,2256],{},"size",[924,2258,2259],{},[525,2260,2261],{},"ButtonVariants[\"size\"]",[924,2263,2264],{},[525,2265,2246],{},[924,2267,2268],{},"The button size.",[909,2270,2271,2275,2279,2283],{},[924,2272,2273],{},[525,2274,1106],{},[924,2276,2277],{},[525,2278,1176],{},[924,2280,2281],{},[525,2282,1187],{},[924,2284,2285],{},"Disables the button.",[909,2287,2288,2292,2296,2301],{},[924,2289,2290],{},[525,2291,875],{},[924,2293,2294],{},[525,2295,1331],{},[924,2297,2298],{},[525,2299,2300],{},"\"button\"",[924,2302,1339],{},[909,2304,2305,2309,2313,2317],{},[924,2306,2307],{},[525,2308,1346],{},[924,2310,2311],{},[525,2312,1176],{},[924,2314,2315],{},[525,2316,1187],{},[924,2318,1357],{},[909,2320,2321,2325,2329,2331],{},[924,2322,2323],{},[525,2324,1195],{},[924,2326,2327],{},[525,2328,1200],{},[924,2330,1097],{},[924,2332,2333],{},"Additional classes to apply to the button.",{"title":523,"searchDepth":2335,"depth":2335,"links":2336},2,[2337,2338,2339,2340,2341,2342,2358,2359,2360],{"id":493,"depth":2335,"text":299},{"id":553,"depth":2335,"text":554},{"id":566,"depth":2335,"text":567},{"id":602,"depth":2335,"text":603},{"id":613,"depth":2335,"text":614},{"id":646,"depth":2335,"text":372,"children":2343},[2344,2346,2347,2348,2349,2350,2351,2352,2353,2354,2355,2356,2357],{"id":650,"depth":2345,"text":651},3,{"id":666,"depth":2345,"text":667},{"id":681,"depth":2345,"text":682},{"id":697,"depth":2345,"text":698},{"id":719,"depth":2345,"text":720},{"id":742,"depth":2345,"text":743},{"id":756,"depth":2345,"text":757},{"id":767,"depth":2345,"text":768},{"id":778,"depth":2345,"text":779},{"id":793,"depth":2345,"text":794},{"id":822,"depth":2345,"text":823},{"id":836,"depth":2345,"text":65},{"id":889,"depth":2345,"text":105},{"id":900,"depth":2335,"text":901},{"id":1011,"depth":2335,"text":1012},{"id":1057,"depth":2335,"text":1058,"children":2361},[2362,2363,2364,2365,2366,2367,2368,2369,2370,2371,2372,2373],{"id":1061,"depth":2345,"text":201},{"id":1274,"depth":2345,"text":800},{"id":1360,"depth":2345,"text":1017},{"id":1514,"depth":2345,"text":860},{"id":1586,"depth":2345,"text":863},{"id":1674,"depth":2345,"text":866},{"id":1743,"depth":2345,"text":1744},{"id":1893,"depth":2345,"text":1894},{"id":1930,"depth":2345,"text":673},{"id":2040,"depth":2345,"text":732},{"id":2123,"depth":2345,"text":871},{"id":2192,"depth":2345,"text":2193},"A multi-step questionnaire with single-choice, multiple-choice, freeform, and skippable questions.","md",null,{"component":204},"---\ntitle: Questionnaire\ndescription: A multi-step questionnaire with single-choice, multiple-choice, freeform, and skippable questions.\ncomponent: true\nnew: true\n---\n\n::component-preview\n---\nname: QuestionnaireDemo\nclass: style-nova\nalign: end\npreviewClass: min-h-[560px] p-4 sm:p-8\n---\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 shadcn-vue@latest add questionnaire\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\u002Funovue\u002Fshadcn-vue\u002Ftree\u002Fdev\u002Fapps\u002Fv4\u002Fregistry\u002Fbases\u002Freka\u002Fui\u002Fquestionnaire) into your project.\n    ::\n\n    ::step\n    Update the import paths to match your project setup.\n    ::\n  :::\n::::\n\n:::::\n\n## Usage\n\n```vue showLineNumbers\n\u003Cscript setup lang=\"ts\">\nimport {\n  Questionnaire,\n  QuestionnaireActions,\n  QuestionnaireChoice,\n  QuestionnaireChoices,\n  QuestionnaireDescription,\n  QuestionnaireError,\n  QuestionnaireItem,\n  QuestionnaireNext,\n  QuestionnairePrevious,\n  QuestionnaireProgress,\n  QuestionnaireSkip,\n  QuestionnaireSubmit,\n  QuestionnaireTitle,\n} from '@\u002Fcomponents\u002Fui\u002Fquestionnaire'\n\nconst items = [\n  { name: 'direction', required: true },\n  { name: 'timing', required: true },\n]\n\nfunction handleSubmit(event: Event) {\n  event.preventDefault()\n\n  const answers = new FormData(event.target as HTMLFormElement)\n  console.log(Object.fromEntries(answers))\n}\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003CQuestionnaire :items=\"items\" @submit=\"handleSubmit\">\n    \u003CQuestionnaireProgress \u002F>\n\n    \u003CQuestionnaireItem name=\"direction\" required>\n      \u003CQuestionnaireTitle>What should the agent build next?\u003C\u002FQuestionnaireTitle>\n      \u003CQuestionnaireDescription>Choose a direction.\u003C\u002FQuestionnaireDescription>\n      \u003CQuestionnaireChoices>\n        \u003CQuestionnaireChoice value=\"tool-calls\">Tool call timeline\u003C\u002FQuestionnaireChoice>\n        \u003CQuestionnaireChoice value=\"approvals\">Approval checkpoints\u003C\u002FQuestionnaireChoice>\n      \u003C\u002FQuestionnaireChoices>\n      \u003CQuestionnaireError \u002F>\n    \u003C\u002FQuestionnaireItem>\n\n    \u003CQuestionnaireItem name=\"timing\" required>\n      \u003CQuestionnaireTitle>When should work begin?\u003C\u002FQuestionnaireTitle>\n      \u003CQuestionnaireChoices>\n        \u003CQuestionnaireChoice value=\"now\">Start now\u003C\u002FQuestionnaireChoice>\n        \u003CQuestionnaireChoice value=\"backlog\">Add it to the backlog\u003C\u002FQuestionnaireChoice>\n      \u003C\u002FQuestionnaireChoices>\n      \u003CQuestionnaireError \u002F>\n    \u003C\u002FQuestionnaireItem>\n\n    \u003CQuestionnaireActions>\n      \u003CQuestionnairePrevious \u002F>\n      \u003CQuestionnaireSkip \u002F>\n      \u003CQuestionnaireNext \u002F>\n      \u003CQuestionnaireSubmit \u002F>\n    \u003C\u002FQuestionnaireActions>\n  \u003C\u002FQuestionnaire>\n\u003C\u002Ftemplate>\n```\n\n## Composition\n\nUse the following composition to build a questionnaire:\n\n```text\nQuestionnaire\n├── QuestionnaireProgress\n├── QuestionnaireItem\n│   ├── QuestionnaireTitle\n│   ├── QuestionnaireDescription\n│   ├── QuestionnaireChoices\n│   │   ├── QuestionnaireChoice\n│   │   │   └── QuestionnaireChoiceDescription\n│   │   └── QuestionnaireInput\n│   └── QuestionnaireError\n└── QuestionnaireActions\n    ├── QuestionnairePrevious\n    ├── QuestionnaireSkip\n    ├── QuestionnaireNext\n    └── QuestionnaireSubmit\n```\n\n`Questionnaire` renders a real `\u003Cform>` and every item renders a `\u003Cfieldset>` with a `\u003Clegend>`, so answers submit with `FormData` and no extra state is needed.\n\n## Server Rendering\n\nPass `items` to server-render the active item, progress, actions, and answer shortcuts. Without it the questionnaire only learns its order once the items have mounted on the client.\n\n## Features\n\n- One question at a time, with progress, navigation, and validation handled for you\n- Single-choice, multiple-choice, freeform, and intentionally skipped answers\n- Keyboard shortcuts for choices, plus arrow key navigation between questions and answers\n- Declarative `items` for item order, conditional items, and stable shortcut assignment\n- Controlled navigation with `v-model:item` for custom validation flows\n- Native form reset restores the answers you marked as defaults\n\n## Examples\n\n### Multiple Selection\n\nUse `multiple` for an item that accepts more than one fixed answer.\n\n::component-preview\n---\nname: QuestionnaireMultipleDemo\nclass: style-nova\nalign: end\npreviewClass: min-h-[420px] p-4 sm:p-8\n---\n::\n\n### Freeform Answer\n\nCompose `QuestionnaireInput` with fixed choices when the user can provide another answer.\n\n::component-preview\n---\nname: QuestionnaireFreeformDemo\nclass: style-nova\nalign: end\npreviewClass: min-h-[420px] p-4 sm:p-8\n---\n::\n\n### Explicit Skip\n\nAdd `QuestionnaireSkip` when an optional item may be intentionally left unanswered.\n\n::component-preview\n---\nname: QuestionnaireSkipDemo\nclass: style-nova\nalign: end\npreviewClass: min-h-[520px] p-4 sm:p-8\n---\n::\n\n### Shortcuts\n\nAssign a letter or number key to each answer with `shortcuts`. Declare `choices` on `items` so the keys stay stable regardless of the render order.\n\n::component-preview\n---\nname: QuestionnaireShortcutsDemo\nclass: style-nova\nalign: end\npreviewClass: min-h-[480px] p-4 sm:p-8\n---\n::\n\n### Custom Validation\n\nCombine controlled navigation with an external schema such as Zod to return to an invalid item and present its error.\n\n::component-preview\n---\nname: QuestionnaireValidationDemo\nclass: style-nova\nalign: end\npreviewClass: min-h-[520px] p-4 sm:p-8\n---\n::\n\n`QuestionnaireError` falls back to a built-in message, so only render your own message when you have one:\n\n```vue showLineNumbers\n\u003CQuestionnaireError>\n  \u003Ctemplate v-if=\"errors.detail\">\n    {{ errors.detail }}\n  \u003C\u002Ftemplate>\n\u003C\u002FQuestionnaireError>\n```\n\n### Controlled\n\nControl the active item from host state, such as returning to an invalid step. Use `v-model:item`.\n\n::component-preview\n---\nname: QuestionnaireControlledDemo\nclass: style-nova\nalign: end\npreviewClass: min-h-[520px] p-4 sm:p-8\n---\n::\n\n### Resume\n\nRestore a saved active item and default answers, then reset changes back to that saved state.\n\n::component-preview\n---\nname: QuestionnaireResumeDemo\nclass: style-nova\nalign: end\npreviewClass: min-h-[520px] p-4 sm:p-8\n---\n::\n\n### Conditional Items\n\nDisable items that do not apply to the user's earlier answers.\n\n::component-preview\n---\nname: QuestionnaireConditionalDemo\nclass: style-nova\nalign: end\npreviewClass: min-h-[520px] p-4 sm:p-8\n---\n::\n\n### Navigation State\n\nRead item status to opt into disabled navigation and custom action styling. Listen to `@update:status` on the items you want to track.\n\n::component-preview\n---\nname: QuestionnaireNavigationStateDemo\nclass: style-nova\nalign: end\npreviewClass: min-h-[480px] p-4 sm:p-8\n---\n::\n\n### Custom Progress\n\nUse the progress slot state to build a custom progress indicator. `QuestionnaireProgress` exposes `current`, `total`, `first`, and `last`.\n\n::component-preview\n---\nname: QuestionnaireProgressDemo\nclass: style-nova\nalign: end\npreviewClass: min-h-[520px] p-4 sm:p-8\n---\n::\n\n### Animated Items\n\nAnimate the active item while keeping progress and navigation stationary. The active item is marked with `data-active`.\n\n::component-preview\n---\nname: QuestionnaireAnimatedDemo\nclass: style-nova\nalign: end\npreviewClass: min-h-[520px] p-4 sm:p-8\n---\n::\n\n### Card\n\nCompose Questionnaire with Card slots while keeping the question title and description semantic. Use `as-child` to render a part as another component:\n\n```vue showLineNumbers\n\u003CQuestionnaireTitle as-child>\n  \u003CCardTitle>What should the agent work on?\u003C\u002FCardTitle>\n\u003C\u002FQuestionnaireTitle>\n```\n\n::component-preview\n---\nname: QuestionnaireCardDemo\nclass: style-nova\nalign: end\npreviewClass: min-h-[560px] p-4 sm:p-8\n---\n::\n\n`QuestionnaireProgress`, `QuestionnaireTitle`, `QuestionnaireDescription`, `QuestionnaireChoices`, `QuestionnaireError`, `QuestionnaireActions`, and the four navigation buttons all accept `as` and `as-child`. `as-child` on the title replaces the `legend` that names the item, so the item labels itself with the rendered title instead. The title and description keep the id of the child they render.\n\n### Dialog\n\nCompose Questionnaire inside a Dialog while keeping cancellation and dismissal host-owned.\n\n::component-preview\n---\nname: QuestionnaireDialogDemo\nclass: style-nova\nalign: end\npreviewClass: min-h-[320px] p-4 sm:p-8\n---\n::\n\n## Keyboard navigation\n\n| Key                    | Description                                                      |\n| ---------------------- | ---------------------------------------------------------------- |\n| `Arrow Down`           | Moves focus to the next answer.                                   |\n| `Arrow Up`             | Moves focus to the previous answer.                               |\n| `Arrow Right`          | Moves to the next question once the current one is answered.      |\n| `Arrow Left`           | Moves to the previous question.                                   |\n| `Enter`                | Confirms the focused answer and moves on, or submits on the last question. |\n| `Meta+Enter` \u002F `Ctrl+Enter` | Confirms the active question from anywhere in the form.      |\n| `A` – `Z` \u002F `1` – `9`  | Selects the matching choice when `shortcuts` is set.              |\n\n## Accessibility\n\n`QuestionnaireItem` renders a `fieldset` with a `legend`, so every question is announced with its answers. Descriptions and errors are associated with the item through `aria-describedby`, and an invalid item exposes `aria-invalid`.\n\n`QuestionnaireProgress` renders a named `progressbar` that announces the current question. Inactive items are `hidden` and `inert`, so they stay out of the tab order and the accessibility tree.\n\nNavigation actions are real buttons. `QuestionnaireSubmit` submits the form, so a questionnaire keeps working with browser autofill and native form submission.\n\n## API Reference\n\n### Questionnaire\n\nThe root form. Manages the active item, progress, validation, and keyboard navigation.\n\n| Prop          | Type                            | Default | Description                                                                 |\n| ------------- | ------------------------------- | ------- | --------------------------------------------------------------------------- |\n| `items`       | `QuestionnaireItemDefinition[]`  | -       | Declares item order, `required`, `disabled`, and the `choices` used for shortcuts. |\n| `item`        | `string`                        | -       | The active item. Use with `v-model:item`.                                    |\n| `defaultItem` | `string`                        | -       | The item shown first. Ignored when `item` is provided.                       |\n| `shortcuts`   | `\"letters\" \\| \"numbers\"`        | -       | Assigns a keyboard shortcut to every choice.                                 |\n| `noValidate`  | `boolean`                       | `true`  | Set to `false` to run native constraint validation on answered items.        |\n| `class`       | `HTMLAttributes[\"class\"]`       | -       | Additional classes to apply to the form.                                     |\n\n| Emit           | Payload  | Description                                                              |\n| -------------- | -------- | ------------------------------------------------------------------------ |\n| `update:item`  | `string` | The active item changed.                                                 |\n| `submit`       | `Event`  | Every item is valid. Call `event.preventDefault()` to handle it yourself. |\n| `reset`        | `Event`  | The form was reset. Call `event.preventDefault()` to keep the answers.    |\n\n### QuestionnaireProgress\n\nA `progressbar` announcing the active question. Exposes `current`, `total`, `first`, and `last` to its default slot.\n\n| Prop    | Type                      | Default | Description                                      |\n| ------- | ------------------------- | ------- | ------------------------------------------------ |\n| `class` | `HTMLAttributes[\"class\"]` | -       | Additional classes to apply to the progress bar. |\n| `as`      | `AsTag \\| Component`      | `\"div\"`   | The element or component to render as.      |\n| `asChild` | `boolean`                 | `false` | Render the child element instead.           |\n\n### QuestionnaireItem\n\nA single question, rendered as a `fieldset`. Only the active item is visible.\n\n| Prop       | Type                      | Default | Description                                                   |\n| ---------- | ------------------------- | ------- | ------------------------------------------------------------- |\n| `name`     | `string`                  | -       | Required. The name the answer submits under.                   |\n| `required` | `boolean`                 | `false` | Requires an answer before the questionnaire can continue.      |\n| `multiple` | `boolean`                 | `false` | Renders choices as checkboxes and keeps every selected answer. |\n| `disabled` | `boolean`                 | `false` | Removes the item from the flow without unmounting it.          |\n| `invalid`  | `boolean`                 | `false` | Marks the item invalid from outside, for example after schema validation. |\n| `class`    | `HTMLAttributes[\"class\"]` | -       | Additional classes to apply to the item.                       |\n\n| Emit             | Payload                                       | Description             |\n| ---------------- | --------------------------------------------- | ----------------------- |\n| `update:status`  | `\"unanswered\" \\| \"answered\" \\| \"skipped\"`     | The item status changed. |\n\n### QuestionnaireTitle\n\nThe question, rendered as a `legend`.\n\n| Prop    | Type                      | Default | Description                                 |\n| ------- | ------------------------- | ------- | ------------------------------------------- |\n| `class` | `HTMLAttributes[\"class\"]` | -       | Additional classes to apply to the title.   |\n| `as`      | `AsTag \\| Component`      | `\"legend\"`   | The element or component to render as.      |\n| `asChild` | `boolean`                 | `false` | Render the child element instead.           |\n\n### QuestionnaireDescription\n\nHelp text associated with the item through `aria-describedby`.\n\n| Prop    | Type                      | Default | Description                                     |\n| ------- | ------------------------- | ------- | ----------------------------------------------- |\n| `id`    | `string`                  | -       | Overrides the generated id.                     |\n| `as`      | `AsTag \\| Component`      | `\"p\"`   | The element or component to render as.      |\n| `asChild` | `boolean`                 | `false` | Render the child element instead.           |\n| `class` | `HTMLAttributes[\"class\"]` | -       | Additional classes to apply to the description. |\n\n### QuestionnaireChoices\n\nThe answer list. Wraps choices and an optional freeform input.\n\n| Prop    | Type                      | Default | Description                                 |\n| ------- | ------------------------- | ------- | ------------------------------------------- |\n| `class` | `HTMLAttributes[\"class\"]` | -       | Additional classes to apply to the list.    |\n| `as`      | `AsTag \\| Component`      | `\"div\"`   | The element or component to render as.      |\n| `asChild` | `boolean`                 | `false` | Render the child element instead.           |\n\n### QuestionnaireChoice\n\nA single answer, rendered as a radio or a checkbox depending on the item.\n\n| Prop             | Type                      | Default | Description                                             |\n| ---------------- | ------------------------- | ------- | ------------------------------------------------------- |\n| `value`          | `string`                  | -       | Required. The submitted value.                           |\n| `checked`        | `boolean`                 | -       | Controlled checked state. Use with `v-model:checked`.    |\n| `defaultChecked` | `boolean`                 | `false` | Checks the choice on mount and after a native form reset.|\n| `disabled`       | `boolean`                 | `false` | Disables the choice.                                     |\n| `class`          | `HTMLAttributes[\"class\"]` | -       | Additional classes to apply to the choice.               |\n\n| Emit               | Payload   | Description                        |\n| ------------------ | --------- | ---------------------------------- |\n| `update:checked`   | `boolean` | The choice was checked or cleared. |\n| `change`           | `Event`   | The native change event.           |\n\n### QuestionnaireChoiceDescription\n\nSecondary text inside a choice.\n\n| Prop    | Type                      | Default | Description                                     |\n| ------- | ------------------------- | ------- | ----------------------------------------------- |\n| `class` | `HTMLAttributes[\"class\"]` | -       | Additional classes to apply to the description. |\n\n### QuestionnaireInput\n\nA freeform answer. Answers the item while it holds a value, and submits under the item name.\n\n| Prop           | Type                      | Default  | Description                                           |\n| -------------- | ------------------------- | -------- | ----------------------------------------------------- |\n| `modelValue`   | `string \\| number`        | -        | Controlled value. Use with `v-model`.                 |\n| `defaultValue` | `string \\| number`        | -        | Fills the answer on mount and after a native reset.   |\n| `type`         | `QuestionnaireInputType`  | `\"text\"` | The input type.                                       |\n| `disabled`     | `boolean`                 | `false`  | Disables the input.                                   |\n| `class`        | `HTMLAttributes[\"class\"]` | -        | Additional classes to apply to the input.             |\n\n### QuestionnaireError\n\nThe item error. Hidden until the item is invalid, and falls back to a built-in message.\n\n| Prop    | Type                      | Default | Description                               |\n| ------- | ------------------------- | ------- | ----------------------------------------- |\n| `id`    | `string`                  | -       | Overrides the generated id.               |\n| `as`      | `AsTag \\| Component`      | `\"p\"`   | The element or component to render as.      |\n| `asChild` | `boolean`                 | `false` | Render the child element instead.           |\n| `class` | `HTMLAttributes[\"class\"]` | -       | Additional classes to apply to the error. |\n\n### QuestionnaireActions\n\nThe navigation row.\n\n| Prop    | Type                      | Default | Description                                 |\n| ------- | ------------------------- | ------- | ------------------------------------------- |\n| `class` | `HTMLAttributes[\"class\"]` | -       | Additional classes to apply to the row.     |\n| `as`      | `AsTag \\| Component`      | `\"div\"`   | The element or component to render as.      |\n| `asChild` | `boolean`                 | `false` | Render the child element instead.           |\n\n### QuestionnairePrevious, QuestionnaireSkip, QuestionnaireNext, and QuestionnaireSubmit\n\nNavigation buttons. Each one hides itself when it does not apply: `QuestionnairePrevious` on the first item, `QuestionnaireSkip` on required items, `QuestionnaireNext` on the last item, and `QuestionnaireSubmit` everywhere but the last item.\n\n| Prop       | Type                            | Default                            | Description                                |\n| ---------- | ------------------------------- | ---------------------------------- | ------------------------------------------ |\n| `variant`  | `ButtonVariants[\"variant\"]`     | `\"outline\"` \u002F `\"default\"`          | The button variant.                        |\n| `size`     | `ButtonVariants[\"size\"]`        | `\"default\"`                        | The button size.                            |\n| `disabled` | `boolean`                       | `false`                            | Disables the button.                        |\n| `as`       | `AsTag \\| Component`            | `\"button\"`                         | The element or component to render as.      |\n| `asChild`  | `boolean`                       | `false`                            | Render the child element instead.           |\n| `class`    | `HTMLAttributes[\"class\"]`       | -                                  | Additional classes to apply to the button.  |\n",{"title":201,"description":2374},"TqqXRBNuo-H0mV-cWg4RHJFkUeQIu4dgK_KOweh1xN8",[2382,2383],{"title":197,"path":198,"stem":199,"children":-1},{"title":206,"path":207,"stem":208,"children":-1},1786087168939]