[{"data":1,"prerenderedAt":2371},["ShallowReactive",2],{"navigation":3,"\u002Fdocs\u002Fcomponents\u002Fquestionnaire":464,"$fd9cvft0wf4ga":2363,"surround-\u002Fdocs\u002Fcomponents\u002Fquestionnaire":2368},[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},{"id":465,"title":201,"body":466,"description":2361,"extension":2362,"links":2363,"meta":2364,"navigation":204,"new":204,"path":202,"rawbody":2365,"seo":2366,"stem":203,"__hash__":2367},"content\u002Fdocs\u002Fcomponents\u002Fquestionnaire.md",{"type":467,"value":468,"toc":2321},"minimark",[469,477,481,538,542,551,555,558,566,587,591,598,602,631,634,639,646,651,655,662,666,670,677,682,686,699,704,708,711,715,721,727,731,737,741,745,748,752,756,759,763,767,774,778,782,803,807,811,817,821,824,831,837,841,874,877,880,885,889,996,1000,1019,1035,1042,1046,1049,1052,1193,1259,1262,1277,1345,1348,1354,1470,1499,1502,1507,1571,1574,1579,1659,1662,1665,1728,1732,1735,1836,1878,1882,1885,1915,1918,1921,2025,2028,2031,2108,2111,2114,2177,2181,2198],[470,471],"component-preview",{"align":472,"className":473,"name":475,"previewClass":476},"end",[474],"style-nova","QuestionnaireDemo","min-h-[560px] p-4 sm:p-8",[478,479,299],"h2",{"id":480},"installation",[482,483,484,500,514],"code-tabs",{},[485,486,487,494],"tabs-list",{},[488,489,491],"tabs-trigger",{"value":490},"cli",[492,493,433],"p",{},[488,495,497],{"value":496},"manual",[492,498,499],{},"Manual",[501,502,503],"tabs-content",{"value":490},[504,505,511],"pre",{"className":506,"code":508,"language":509,"meta":510},[507],"language-bash","npx shadcn-vue@latest add questionnaire\n","bash","",[512,513,508],"code",{"__ignoreMap":510},[501,515,516],{"value":496},[517,518,519,533],"steps",{},[520,521,522],"step",{},[492,523,524,525,532],{},"Copy and paste the ",[526,527,531],"a",{"href":528,"rel":529},"https:\u002F\u002Fgithub.com\u002Funovue\u002Fshadcn-vue\u002Ftree\u002Fdev\u002Fapps\u002Fv4\u002Fregistry\u002Fbases\u002Freka\u002Fui\u002Fquestionnaire",[530],"nofollow","GitHub source code"," into your project.",[520,534,535],{},[492,536,537],{},"Update the import paths to match your project setup.",[478,539,541],{"id":540},"usage","Usage",[504,543,549],{"className":544,"code":546,"language":547,"meta":548},[545],"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",[512,550,546],{"__ignoreMap":510},[478,552,554],{"id":553},"composition","Composition",[492,556,557],{},"Use the following composition to build a questionnaire:",[504,559,564],{"className":560,"code":562,"language":563,"meta":510},[561],"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",[512,565,562],{"__ignoreMap":510},[492,567,568,570,571,574,575,578,579,582,583,586],{},[512,569,201],{}," renders a real ",[512,572,573],{},"\u003Cform>"," and every item renders a ",[512,576,577],{},"\u003Cfieldset>"," with a ",[512,580,581],{},"\u003Clegend>",", so answers submit with ",[512,584,585],{},"FormData"," and no extra state is needed.",[478,588,590],{"id":589},"server-rendering","Server Rendering",[492,592,593,594,597],{},"Pass ",[512,595,596],{},"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.",[478,599,601],{"id":600},"features","Features",[603,604,605,609,612,615,621,628],"ul",{},[606,607,608],"li",{},"One question at a time, with progress, navigation, and validation handled for you",[606,610,611],{},"Single-choice, multiple-choice, freeform, and intentionally skipped answers",[606,613,614],{},"Keyboard shortcuts for choices, plus arrow key navigation between questions and answers",[606,616,617,618,620],{},"Declarative ",[512,619,596],{}," for item order, conditional items, and stable shortcut assignment",[606,622,623,624,627],{},"Controlled navigation with ",[512,625,626],{},"v-model:item"," for custom validation flows",[606,629,630],{},"Native form reset restores the answers you marked as defaults",[478,632,372],{"id":633},"examples",[635,636,638],"h3",{"id":637},"multiple-selection","Multiple Selection",[492,640,641,642,645],{},"Use ",[512,643,644],{},"multiple"," for an item that accepts more than one fixed answer.",[470,647],{"align":472,"className":648,"name":649,"previewClass":650},[474],"QuestionnaireMultipleDemo","min-h-[420px] p-4 sm:p-8",[635,652,654],{"id":653},"freeform-answer","Freeform Answer",[492,656,657,658,661],{},"Compose ",[512,659,660],{},"QuestionnaireInput"," with fixed choices when the user can provide another answer.",[470,663],{"align":472,"className":664,"name":665,"previewClass":650},[474],"QuestionnaireFreeformDemo",[635,667,669],{"id":668},"explicit-skip","Explicit Skip",[492,671,672,673,676],{},"Add ",[512,674,675],{},"QuestionnaireSkip"," when an optional item may be intentionally left unanswered.",[470,678],{"align":472,"className":679,"name":680,"previewClass":681},[474],"QuestionnaireSkipDemo","min-h-[520px] p-4 sm:p-8",[635,683,685],{"id":684},"shortcuts","Shortcuts",[492,687,688,689,691,692,695,696,698],{},"Assign a letter or number key to each answer with ",[512,690,684],{},". Declare ",[512,693,694],{},"choices"," on ",[512,697,596],{}," so the keys stay stable regardless of the render order.",[470,700],{"align":472,"className":701,"name":702,"previewClass":703},[474],"QuestionnaireShortcutsDemo","min-h-[480px] p-4 sm:p-8",[635,705,707],{"id":706},"custom-validation","Custom Validation",[492,709,710],{},"Combine controlled navigation with an external schema such as Zod to return to an invalid item and present its error.",[470,712],{"align":472,"className":713,"name":714,"previewClass":681},[474],"QuestionnaireValidationDemo",[492,716,717,720],{},[512,718,719],{},"QuestionnaireError"," falls back to a built-in message, so only render your own message when you have one:",[504,722,725],{"className":723,"code":724,"language":547,"meta":548},[545],"\u003CQuestionnaireError>\n  \u003Ctemplate v-if=\"errors.detail\">\n    {{ errors.detail }}\n  \u003C\u002Ftemplate>\n\u003C\u002FQuestionnaireError>\n",[512,726,724],{"__ignoreMap":510},[635,728,730],{"id":729},"controlled","Controlled",[492,732,733,734,736],{},"Control the active item from host state, such as returning to an invalid step. Use ",[512,735,626],{},".",[470,738],{"align":472,"className":739,"name":740,"previewClass":681},[474],"QuestionnaireControlledDemo",[635,742,744],{"id":743},"resume","Resume",[492,746,747],{},"Restore a saved active item and default answers, then reset changes back to that saved state.",[470,749],{"align":472,"className":750,"name":751,"previewClass":681},[474],"QuestionnaireResumeDemo",[635,753,755],{"id":754},"conditional-items","Conditional Items",[492,757,758],{},"Disable items that do not apply to the user's earlier answers.",[470,760],{"align":472,"className":761,"name":762,"previewClass":681},[474],"QuestionnaireConditionalDemo",[635,764,766],{"id":765},"navigation-state","Navigation State",[492,768,769,770,773],{},"Read item status to opt into disabled navigation and custom action styling. Listen to ",[512,771,772],{},"@update:status"," on the items you want to track.",[470,775],{"align":472,"className":776,"name":777,"previewClass":703},[474],"QuestionnaireNavigationStateDemo",[635,779,781],{"id":780},"custom-progress","Custom Progress",[492,783,784,785,788,789,792,793,792,796,799,800,736],{},"Use the progress slot state to build a custom progress indicator. ",[512,786,787],{},"QuestionnaireProgress"," exposes ",[512,790,791],{},"current",", ",[512,794,795],{},"total",[512,797,798],{},"first",", and ",[512,801,802],{},"last",[470,804],{"align":472,"className":805,"name":806,"previewClass":681},[474],"QuestionnaireProgressDemo",[635,808,810],{"id":809},"animated-items","Animated Items",[492,812,813,814,736],{},"Animate the active item while keeping progress and navigation stationary. The active item is marked with ",[512,815,816],{},"data-active",[470,818],{"align":472,"className":819,"name":820,"previewClass":681},[474],"QuestionnaireAnimatedDemo",[635,822,65],{"id":823},"card",[492,825,826,827,830],{},"Compose Questionnaire with Card slots while keeping the question title and description semantic. Use ",[512,828,829],{},"as-child"," to render a part as another component:",[504,832,835],{"className":833,"code":834,"language":547,"meta":548},[545],"\u003CQuestionnaireTitle as-child>\n  \u003CCardTitle>What should the agent work on?\u003C\u002FCardTitle>\n\u003C\u002FQuestionnaireTitle>\n",[512,836,834],{"__ignoreMap":510},[470,838],{"align":472,"className":839,"name":840,"previewClass":476},[474],"QuestionnaireCardDemo",[492,842,843,792,845,792,848,792,851,792,854,792,856,859,860,863,864,866,867,869,870,873],{},[512,844,787],{},[512,846,847],{},"QuestionnaireTitle",[512,849,850],{},"QuestionnaireDescription",[512,852,853],{},"QuestionnaireChoices",[512,855,719],{},[512,857,858],{},"QuestionnaireActions",", and the four navigation buttons all accept ",[512,861,862],{},"as"," and ",[512,865,829],{},". ",[512,868,829],{}," on the title replaces the ",[512,871,872],{},"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.",[635,875,105],{"id":876},"dialog",[492,878,879],{},"Compose Questionnaire inside a Dialog while keeping cancellation and dismissal host-owned.",[470,881],{"align":472,"className":882,"name":883,"previewClass":884},[474],"QuestionnaireDialogDemo","min-h-[320px] p-4 sm:p-8",[478,886,888],{"id":887},"keyboard-navigation","Keyboard navigation",[890,891,892,905],"table",{},[893,894,895],"thead",{},[896,897,898,902],"tr",{},[899,900,901],"th",{},"Key",[899,903,904],{},"Description",[906,907,908,919,929,939,949,959,973],"tbody",{},[896,909,910,916],{},[911,912,913],"td",{},[512,914,915],{},"Arrow Down",[911,917,918],{},"Moves focus to the next answer.",[896,920,921,926],{},[911,922,923],{},[512,924,925],{},"Arrow Up",[911,927,928],{},"Moves focus to the previous answer.",[896,930,931,936],{},[911,932,933],{},[512,934,935],{},"Arrow Right",[911,937,938],{},"Moves to the next question once the current one is answered.",[896,940,941,946],{},[911,942,943],{},[512,944,945],{},"Arrow Left",[911,947,948],{},"Moves to the previous question.",[896,950,951,956],{},[911,952,953],{},[512,954,955],{},"Enter",[911,957,958],{},"Confirms the focused answer and moves on, or submits on the last question.",[896,960,961,970],{},[911,962,963,966,967],{},[512,964,965],{},"Meta+Enter"," \u002F ",[512,968,969],{},"Ctrl+Enter",[911,971,972],{},"Confirms the active question from anywhere in the form.",[896,974,975,990],{},[911,976,977,980,981,966,984,980,987],{},[512,978,979],{},"A"," – ",[512,982,983],{},"Z",[512,985,986],{},"1",[512,988,989],{},"9",[911,991,992,993,995],{},"Selects the matching choice when ",[512,994,684],{}," is set.",[478,997,999],{"id":998},"accessibility","Accessibility",[492,1001,1002,1005,1006,578,1009,1011,1012,1015,1016,736],{},[512,1003,1004],{},"QuestionnaireItem"," renders a ",[512,1007,1008],{},"fieldset",[512,1010,872],{},", so every question is announced with its answers. Descriptions and errors are associated with the item through ",[512,1013,1014],{},"aria-describedby",", and an invalid item exposes ",[512,1017,1018],{},"aria-invalid",[492,1020,1021,1023,1024,1027,1028,863,1031,1034],{},[512,1022,787],{}," renders a named ",[512,1025,1026],{},"progressbar"," that announces the current question. Inactive items are ",[512,1029,1030],{},"hidden",[512,1032,1033],{},"inert",", so they stay out of the tab order and the accessibility tree.",[492,1036,1037,1038,1041],{},"Navigation actions are real buttons. ",[512,1039,1040],{},"QuestionnaireSubmit"," submits the form, so a questionnaire keeps working with browser autofill and native form submission.",[478,1043,1045],{"id":1044},"api-reference","API Reference",[635,1047,201],{"id":1048},"questionnaire",[492,1050,1051],{},"The root form. Manages the active item, progress, validation, and keyboard navigation.",[890,1053,1054,1069],{},[893,1055,1056],{},[896,1057,1058,1061,1064,1067],{},[899,1059,1060],{},"Prop",[899,1062,1063],{},"Type",[899,1065,1066],{},"Default",[899,1068,904],{},[906,1070,1071,1098,1117,1136,1152,1176],{},[896,1072,1073,1077,1082,1085],{},[911,1074,1075],{},[512,1076,596],{},[911,1078,1079],{},[512,1080,1081],{},"QuestionnaireItemDefinition[]",[911,1083,1084],{},"-",[911,1086,1087,1088,792,1091,1094,1095,1097],{},"Declares item order, ",[512,1089,1090],{},"required",[512,1092,1093],{},"disabled",", and the ",[512,1096,694],{}," used for shortcuts.",[896,1099,1100,1105,1110,1112],{},[911,1101,1102],{},[512,1103,1104],{},"item",[911,1106,1107],{},[512,1108,1109],{},"string",[911,1111,1084],{},[911,1113,1114,1115,736],{},"The active item. Use with ",[512,1116,626],{},[896,1118,1119,1124,1128,1130],{},[911,1120,1121],{},[512,1122,1123],{},"defaultItem",[911,1125,1126],{},[512,1127,1109],{},[911,1129,1084],{},[911,1131,1132,1133,1135],{},"The item shown first. Ignored when ",[512,1134,1104],{}," is provided.",[896,1137,1138,1142,1147,1149],{},[911,1139,1140],{},[512,1141,684],{},[911,1143,1144],{},[512,1145,1146],{},"\"letters\" | \"numbers\"",[911,1148,1084],{},[911,1150,1151],{},"Assigns a keyboard shortcut to every choice.",[896,1153,1154,1159,1164,1169],{},[911,1155,1156],{},[512,1157,1158],{},"noValidate",[911,1160,1161],{},[512,1162,1163],{},"boolean",[911,1165,1166],{},[512,1167,1168],{},"true",[911,1170,1171,1172,1175],{},"Set to ",[512,1173,1174],{},"false"," to run native constraint validation on answered items.",[896,1177,1178,1183,1188,1190],{},[911,1179,1180],{},[512,1181,1182],{},"class",[911,1184,1185],{},[512,1186,1187],{},"HTMLAttributes[\"class\"]",[911,1189,1084],{},[911,1191,1192],{},"Additional classes to apply to the form.",[890,1194,1195,1207],{},[893,1196,1197],{},[896,1198,1199,1202,1205],{},[899,1200,1201],{},"Emit",[899,1203,1204],{},"Payload",[899,1206,904],{},[906,1208,1209,1223,1242],{},[896,1210,1211,1216,1220],{},[911,1212,1213],{},[512,1214,1215],{},"update:item",[911,1217,1218],{},[512,1219,1109],{},[911,1221,1222],{},"The active item changed.",[896,1224,1225,1230,1235],{},[911,1226,1227],{},[512,1228,1229],{},"submit",[911,1231,1232],{},[512,1233,1234],{},"Event",[911,1236,1237,1238,1241],{},"Every item is valid. Call ",[512,1239,1240],{},"event.preventDefault()"," to handle it yourself.",[896,1243,1244,1249,1253],{},[911,1245,1246],{},[512,1247,1248],{},"reset",[911,1250,1251],{},[512,1252,1234],{},[911,1254,1255,1256,1258],{},"The form was reset. Call ",[512,1257,1240],{}," to keep the answers.",[635,1260,787],{"id":1261},"questionnaireprogress",[492,1263,1264,1265,1267,1268,792,1270,792,1272,799,1274,1276],{},"A ",[512,1266,1026],{}," announcing the active question. Exposes ",[512,1269,791],{},[512,1271,795],{},[512,1273,798],{},[512,1275,802],{}," to its default slot.",[890,1278,1279,1291],{},[893,1280,1281],{},[896,1282,1283,1285,1287,1289],{},[899,1284,1060],{},[899,1286,1063],{},[899,1288,1066],{},[899,1290,904],{},[906,1292,1293,1308,1327],{},[896,1294,1295,1299,1303,1305],{},[911,1296,1297],{},[512,1298,1182],{},[911,1300,1301],{},[512,1302,1187],{},[911,1304,1084],{},[911,1306,1307],{},"Additional classes to apply to the progress bar.",[896,1309,1310,1314,1319,1324],{},[911,1311,1312],{},[512,1313,862],{},[911,1315,1316],{},[512,1317,1318],{},"AsTag | Component",[911,1320,1321],{},[512,1322,1323],{},"\"div\"",[911,1325,1326],{},"The element or component to render as.",[896,1328,1329,1334,1338,1342],{},[911,1330,1331],{},[512,1332,1333],{},"asChild",[911,1335,1336],{},[512,1337,1163],{},[911,1339,1340],{},[512,1341,1174],{},[911,1343,1344],{},"Render the child element instead.",[635,1346,1004],{"id":1347},"questionnaireitem",[492,1349,1350,1351,1353],{},"A single question, rendered as a ",[512,1352,1008],{},". Only the active item is visible.",[890,1355,1356,1368],{},[893,1357,1358],{},[896,1359,1360,1362,1364,1366],{},[899,1361,1060],{},[899,1363,1063],{},[899,1365,1066],{},[899,1367,904],{},[906,1369,1370,1386,1403,1420,1437,1455],{},[896,1371,1372,1377,1381,1383],{},[911,1373,1374],{},[512,1375,1376],{},"name",[911,1378,1379],{},[512,1380,1109],{},[911,1382,1084],{},[911,1384,1385],{},"Required. The name the answer submits under.",[896,1387,1388,1392,1396,1400],{},[911,1389,1390],{},[512,1391,1090],{},[911,1393,1394],{},[512,1395,1163],{},[911,1397,1398],{},[512,1399,1174],{},[911,1401,1402],{},"Requires an answer before the questionnaire can continue.",[896,1404,1405,1409,1413,1417],{},[911,1406,1407],{},[512,1408,644],{},[911,1410,1411],{},[512,1412,1163],{},[911,1414,1415],{},[512,1416,1174],{},[911,1418,1419],{},"Renders choices as checkboxes and keeps every selected answer.",[896,1421,1422,1426,1430,1434],{},[911,1423,1424],{},[512,1425,1093],{},[911,1427,1428],{},[512,1429,1163],{},[911,1431,1432],{},[512,1433,1174],{},[911,1435,1436],{},"Removes the item from the flow without unmounting it.",[896,1438,1439,1444,1448,1452],{},[911,1440,1441],{},[512,1442,1443],{},"invalid",[911,1445,1446],{},[512,1447,1163],{},[911,1449,1450],{},[512,1451,1174],{},[911,1453,1454],{},"Marks the item invalid from outside, for example after schema validation.",[896,1456,1457,1461,1465,1467],{},[911,1458,1459],{},[512,1460,1182],{},[911,1462,1463],{},[512,1464,1187],{},[911,1466,1084],{},[911,1468,1469],{},"Additional classes to apply to the item.",[890,1471,1472,1482],{},[893,1473,1474],{},[896,1475,1476,1478,1480],{},[899,1477,1201],{},[899,1479,1204],{},[899,1481,904],{},[906,1483,1484],{},[896,1485,1486,1491,1496],{},[911,1487,1488],{},[512,1489,1490],{},"update:status",[911,1492,1493],{},[512,1494,1495],{},"\"unanswered\" | \"answered\" | \"skipped\"",[911,1497,1498],{},"The item status changed.",[635,1500,847],{"id":1501},"questionnairetitle",[492,1503,1504,1505,736],{},"The question, rendered as a ",[512,1506,872],{},[890,1508,1509,1521],{},[893,1510,1511],{},[896,1512,1513,1515,1517,1519],{},[899,1514,1060],{},[899,1516,1063],{},[899,1518,1066],{},[899,1520,904],{},[906,1522,1523,1538,1555],{},[896,1524,1525,1529,1533,1535],{},[911,1526,1527],{},[512,1528,1182],{},[911,1530,1531],{},[512,1532,1187],{},[911,1534,1084],{},[911,1536,1537],{},"Additional classes to apply to the title.",[896,1539,1540,1544,1548,1553],{},[911,1541,1542],{},[512,1543,862],{},[911,1545,1546],{},[512,1547,1318],{},[911,1549,1550],{},[512,1551,1552],{},"\"legend\"",[911,1554,1326],{},[896,1556,1557,1561,1565,1569],{},[911,1558,1559],{},[512,1560,1333],{},[911,1562,1563],{},[512,1564,1163],{},[911,1566,1567],{},[512,1568,1174],{},[911,1570,1344],{},[635,1572,850],{"id":1573},"questionnairedescription",[492,1575,1576,1577,736],{},"Help text associated with the item through ",[512,1578,1014],{},[890,1580,1581,1593],{},[893,1582,1583],{},[896,1584,1585,1587,1589,1591],{},[899,1586,1060],{},[899,1588,1063],{},[899,1590,1066],{},[899,1592,904],{},[906,1594,1595,1611,1628,1644],{},[896,1596,1597,1602,1606,1608],{},[911,1598,1599],{},[512,1600,1601],{},"id",[911,1603,1604],{},[512,1605,1109],{},[911,1607,1084],{},[911,1609,1610],{},"Overrides the generated id.",[896,1612,1613,1617,1621,1626],{},[911,1614,1615],{},[512,1616,862],{},[911,1618,1619],{},[512,1620,1318],{},[911,1622,1623],{},[512,1624,1625],{},"\"p\"",[911,1627,1326],{},[896,1629,1630,1634,1638,1642],{},[911,1631,1632],{},[512,1633,1333],{},[911,1635,1636],{},[512,1637,1163],{},[911,1639,1640],{},[512,1641,1174],{},[911,1643,1344],{},[896,1645,1646,1650,1654,1656],{},[911,1647,1648],{},[512,1649,1182],{},[911,1651,1652],{},[512,1653,1187],{},[911,1655,1084],{},[911,1657,1658],{},"Additional classes to apply to the description.",[635,1660,853],{"id":1661},"questionnairechoices",[492,1663,1664],{},"The answer list. Wraps choices and an optional freeform input.",[890,1666,1667,1679],{},[893,1668,1669],{},[896,1670,1671,1673,1675,1677],{},[899,1672,1060],{},[899,1674,1063],{},[899,1676,1066],{},[899,1678,904],{},[906,1680,1681,1696,1712],{},[896,1682,1683,1687,1691,1693],{},[911,1684,1685],{},[512,1686,1182],{},[911,1688,1689],{},[512,1690,1187],{},[911,1692,1084],{},[911,1694,1695],{},"Additional classes to apply to the list.",[896,1697,1698,1702,1706,1710],{},[911,1699,1700],{},[512,1701,862],{},[911,1703,1704],{},[512,1705,1318],{},[911,1707,1708],{},[512,1709,1323],{},[911,1711,1326],{},[896,1713,1714,1718,1722,1726],{},[911,1715,1716],{},[512,1717,1333],{},[911,1719,1720],{},[512,1721,1163],{},[911,1723,1724],{},[512,1725,1174],{},[911,1727,1344],{},[635,1729,1731],{"id":1730},"questionnairechoice","QuestionnaireChoice",[492,1733,1734],{},"A single answer, rendered as a radio or a checkbox depending on the item.",[890,1736,1737,1749],{},[893,1738,1739],{},[896,1740,1741,1743,1745,1747],{},[899,1742,1060],{},[899,1744,1063],{},[899,1746,1066],{},[899,1748,904],{},[906,1750,1751,1767,1786,1804,1821],{},[896,1752,1753,1758,1762,1764],{},[911,1754,1755],{},[512,1756,1757],{},"value",[911,1759,1760],{},[512,1761,1109],{},[911,1763,1084],{},[911,1765,1766],{},"Required. The submitted value.",[896,1768,1769,1774,1778,1780],{},[911,1770,1771],{},[512,1772,1773],{},"checked",[911,1775,1776],{},[512,1777,1163],{},[911,1779,1084],{},[911,1781,1782,1783,736],{},"Controlled checked state. Use with ",[512,1784,1785],{},"v-model:checked",[896,1787,1788,1793,1797,1801],{},[911,1789,1790],{},[512,1791,1792],{},"defaultChecked",[911,1794,1795],{},[512,1796,1163],{},[911,1798,1799],{},[512,1800,1174],{},[911,1802,1803],{},"Checks the choice on mount and after a native form reset.",[896,1805,1806,1810,1814,1818],{},[911,1807,1808],{},[512,1809,1093],{},[911,1811,1812],{},[512,1813,1163],{},[911,1815,1816],{},[512,1817,1174],{},[911,1819,1820],{},"Disables the choice.",[896,1822,1823,1827,1831,1833],{},[911,1824,1825],{},[512,1826,1182],{},[911,1828,1829],{},[512,1830,1187],{},[911,1832,1084],{},[911,1834,1835],{},"Additional classes to apply to the choice.",[890,1837,1838,1848],{},[893,1839,1840],{},[896,1841,1842,1844,1846],{},[899,1843,1201],{},[899,1845,1204],{},[899,1847,904],{},[906,1849,1850,1864],{},[896,1851,1852,1857,1861],{},[911,1853,1854],{},[512,1855,1856],{},"update:checked",[911,1858,1859],{},[512,1860,1163],{},[911,1862,1863],{},"The choice was checked or cleared.",[896,1865,1866,1871,1875],{},[911,1867,1868],{},[512,1869,1870],{},"change",[911,1872,1873],{},[512,1874,1234],{},[911,1876,1877],{},"The native change event.",[635,1879,1881],{"id":1880},"questionnairechoicedescription","QuestionnaireChoiceDescription",[492,1883,1884],{},"Secondary text inside a choice.",[890,1886,1887,1899],{},[893,1888,1889],{},[896,1890,1891,1893,1895,1897],{},[899,1892,1060],{},[899,1894,1063],{},[899,1896,1066],{},[899,1898,904],{},[906,1900,1901],{},[896,1902,1903,1907,1911,1913],{},[911,1904,1905],{},[512,1906,1182],{},[911,1908,1909],{},[512,1910,1187],{},[911,1912,1084],{},[911,1914,1658],{},[635,1916,660],{"id":1917},"questionnaireinput",[492,1919,1920],{},"A freeform answer. Answers the item while it holds a value, and submits under the item name.",[890,1922,1923,1935],{},[893,1924,1925],{},[896,1926,1927,1929,1931,1933],{},[899,1928,1060],{},[899,1930,1063],{},[899,1932,1066],{},[899,1934,904],{},[906,1936,1937,1957,1973,1993,2010],{},[896,1938,1939,1944,1949,1951],{},[911,1940,1941],{},[512,1942,1943],{},"modelValue",[911,1945,1946],{},[512,1947,1948],{},"string | number",[911,1950,1084],{},[911,1952,1953,1954,736],{},"Controlled value. Use with ",[512,1955,1956],{},"v-model",[896,1958,1959,1964,1968,1970],{},[911,1960,1961],{},[512,1962,1963],{},"defaultValue",[911,1965,1966],{},[512,1967,1948],{},[911,1969,1084],{},[911,1971,1972],{},"Fills the answer on mount and after a native reset.",[896,1974,1975,1980,1985,1990],{},[911,1976,1977],{},[512,1978,1979],{},"type",[911,1981,1982],{},[512,1983,1984],{},"QuestionnaireInputType",[911,1986,1987],{},[512,1988,1989],{},"\"text\"",[911,1991,1992],{},"The input type.",[896,1994,1995,1999,2003,2007],{},[911,1996,1997],{},[512,1998,1093],{},[911,2000,2001],{},[512,2002,1163],{},[911,2004,2005],{},[512,2006,1174],{},[911,2008,2009],{},"Disables the input.",[896,2011,2012,2016,2020,2022],{},[911,2013,2014],{},[512,2015,1182],{},[911,2017,2018],{},[512,2019,1187],{},[911,2021,1084],{},[911,2023,2024],{},"Additional classes to apply to the input.",[635,2026,719],{"id":2027},"questionnaireerror",[492,2029,2030],{},"The item error. Hidden until the item is invalid, and falls back to a built-in message.",[890,2032,2033,2045],{},[893,2034,2035],{},[896,2036,2037,2039,2041,2043],{},[899,2038,1060],{},[899,2040,1063],{},[899,2042,1066],{},[899,2044,904],{},[906,2046,2047,2061,2077,2093],{},[896,2048,2049,2053,2057,2059],{},[911,2050,2051],{},[512,2052,1601],{},[911,2054,2055],{},[512,2056,1109],{},[911,2058,1084],{},[911,2060,1610],{},[896,2062,2063,2067,2071,2075],{},[911,2064,2065],{},[512,2066,862],{},[911,2068,2069],{},[512,2070,1318],{},[911,2072,2073],{},[512,2074,1625],{},[911,2076,1326],{},[896,2078,2079,2083,2087,2091],{},[911,2080,2081],{},[512,2082,1333],{},[911,2084,2085],{},[512,2086,1163],{},[911,2088,2089],{},[512,2090,1174],{},[911,2092,1344],{},[896,2094,2095,2099,2103,2105],{},[911,2096,2097],{},[512,2098,1182],{},[911,2100,2101],{},[512,2102,1187],{},[911,2104,1084],{},[911,2106,2107],{},"Additional classes to apply to the error.",[635,2109,858],{"id":2110},"questionnaireactions",[492,2112,2113],{},"The navigation row.",[890,2115,2116,2128],{},[893,2117,2118],{},[896,2119,2120,2122,2124,2126],{},[899,2121,1060],{},[899,2123,1063],{},[899,2125,1066],{},[899,2127,904],{},[906,2129,2130,2145,2161],{},[896,2131,2132,2136,2140,2142],{},[911,2133,2134],{},[512,2135,1182],{},[911,2137,2138],{},[512,2139,1187],{},[911,2141,1084],{},[911,2143,2144],{},"Additional classes to apply to the row.",[896,2146,2147,2151,2155,2159],{},[911,2148,2149],{},[512,2150,862],{},[911,2152,2153],{},[512,2154,1318],{},[911,2156,2157],{},[512,2158,1323],{},[911,2160,1326],{},[896,2162,2163,2167,2171,2175],{},[911,2164,2165],{},[512,2166,1333],{},[911,2168,2169],{},[512,2170,1163],{},[911,2172,2173],{},[512,2174,1174],{},[911,2176,1344],{},[635,2178,2180],{"id":2179},"questionnaireprevious-questionnaireskip-questionnairenext-and-questionnairesubmit","QuestionnairePrevious, QuestionnaireSkip, QuestionnaireNext, and QuestionnaireSubmit",[492,2182,2183,2184,2187,2188,2190,2191,2194,2195,2197],{},"Navigation buttons. Each one hides itself when it does not apply: ",[512,2185,2186],{},"QuestionnairePrevious"," on the first item, ",[512,2189,675],{}," on required items, ",[512,2192,2193],{},"QuestionnaireNext"," on the last item, and ",[512,2196,1040],{}," everywhere but the last item.",[890,2199,2200,2212],{},[893,2201,2202],{},[896,2203,2204,2206,2208,2210],{},[899,2205,1060],{},[899,2207,1063],{},[899,2209,1066],{},[899,2211,904],{},[906,2213,2214,2237,2256,2273,2290,2306],{},[896,2215,2216,2221,2226,2234],{},[911,2217,2218],{},[512,2219,2220],{},"variant",[911,2222,2223],{},[512,2224,2225],{},"ButtonVariants[\"variant\"]",[911,2227,2228,966,2231],{},[512,2229,2230],{},"\"outline\"",[512,2232,2233],{},"\"default\"",[911,2235,2236],{},"The button variant.",[896,2238,2239,2244,2249,2253],{},[911,2240,2241],{},[512,2242,2243],{},"size",[911,2245,2246],{},[512,2247,2248],{},"ButtonVariants[\"size\"]",[911,2250,2251],{},[512,2252,2233],{},[911,2254,2255],{},"The button size.",[896,2257,2258,2262,2266,2270],{},[911,2259,2260],{},[512,2261,1093],{},[911,2263,2264],{},[512,2265,1163],{},[911,2267,2268],{},[512,2269,1174],{},[911,2271,2272],{},"Disables the button.",[896,2274,2275,2279,2283,2288],{},[911,2276,2277],{},[512,2278,862],{},[911,2280,2281],{},[512,2282,1318],{},[911,2284,2285],{},[512,2286,2287],{},"\"button\"",[911,2289,1326],{},[896,2291,2292,2296,2300,2304],{},[911,2293,2294],{},[512,2295,1333],{},[911,2297,2298],{},[512,2299,1163],{},[911,2301,2302],{},[512,2303,1174],{},[911,2305,1344],{},[896,2307,2308,2312,2316,2318],{},[911,2309,2310],{},[512,2311,1182],{},[911,2313,2314],{},[512,2315,1187],{},[911,2317,1084],{},[911,2319,2320],{},"Additional classes to apply to the button.",{"title":510,"searchDepth":2322,"depth":2322,"links":2323},2,[2324,2325,2326,2327,2328,2329,2345,2346,2347],{"id":480,"depth":2322,"text":299},{"id":540,"depth":2322,"text":541},{"id":553,"depth":2322,"text":554},{"id":589,"depth":2322,"text":590},{"id":600,"depth":2322,"text":601},{"id":633,"depth":2322,"text":372,"children":2330},[2331,2333,2334,2335,2336,2337,2338,2339,2340,2341,2342,2343,2344],{"id":637,"depth":2332,"text":638},3,{"id":653,"depth":2332,"text":654},{"id":668,"depth":2332,"text":669},{"id":684,"depth":2332,"text":685},{"id":706,"depth":2332,"text":707},{"id":729,"depth":2332,"text":730},{"id":743,"depth":2332,"text":744},{"id":754,"depth":2332,"text":755},{"id":765,"depth":2332,"text":766},{"id":780,"depth":2332,"text":781},{"id":809,"depth":2332,"text":810},{"id":823,"depth":2332,"text":65},{"id":876,"depth":2332,"text":105},{"id":887,"depth":2322,"text":888},{"id":998,"depth":2322,"text":999},{"id":1044,"depth":2322,"text":1045,"children":2348},[2349,2350,2351,2352,2353,2354,2355,2356,2357,2358,2359,2360],{"id":1048,"depth":2332,"text":201},{"id":1261,"depth":2332,"text":787},{"id":1347,"depth":2332,"text":1004},{"id":1501,"depth":2332,"text":847},{"id":1573,"depth":2332,"text":850},{"id":1661,"depth":2332,"text":853},{"id":1730,"depth":2332,"text":1731},{"id":1880,"depth":2332,"text":1881},{"id":1917,"depth":2332,"text":660},{"id":2027,"depth":2332,"text":719},{"id":2110,"depth":2332,"text":858},{"id":2179,"depth":2332,"text":2180},"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":2361},"TqqXRBNuo-H0mV-cWg4RHJFkUeQIu4dgK_KOweh1xN8",[2369,2370],{"title":197,"path":198,"stem":199,"children":-1},{"title":206,"path":207,"stem":208,"children":-1},1786076630598]