[{"data":1,"prerenderedAt":3552},["ShallowReactive",2],{"navigation":3,"\u002Fnuxt-module\u002Fcomponent-helpers\u002Fforms":342,"\u002Fnuxt-module\u002Fcomponent-helpers\u002Fforms-surround":3547},[4,14,36,69,140,325],{"title":5,"path":6,"stem":7,"children":8},"Introduction","\u002Fgetting-started","1.getting-started\u002F1.index",[9,10],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation",{"title":15,"path":16,"stem":17,"children":18,"page":35},"Guides","\u002Fguides","2.guides",[19,23,27,31],{"title":20,"path":21,"stem":22},"Your First Layout","\u002Fguides\u002Fyour-first-layout","2.guides\u002F1.your-first-layout",{"title":24,"path":25,"stem":26},"Your First Page Template","\u002Fguides\u002Fyour-first-page-template","2.guides\u002F2.your-first-page-template",{"title":28,"path":29,"stem":30},"Your First Component","\u002Fguides\u002Fyour-first-component","2.guides\u002F3.your-first-component",{"title":32,"path":33,"stem":34},"Alternative UI Variants","\u002Fguides\u002Falternative-ui-variants","2.guides\u002F4.alternative-ui-variants",false,{"title":37,"path":38,"stem":39,"children":40,"page":35},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[41,45,49,53,57,61,65],{"title":42,"path":43,"stem":44},"How It All Works","\u002Fcore-concepts\u002Farchitecture","3.core-concepts\u002F1.architecture",{"title":46,"path":47,"stem":48},"The Data Model","\u002Fcore-concepts\u002Fthe-data-model","3.core-concepts\u002F2.the-data-model",{"title":50,"path":51,"stem":52},"Layouts & Pages","\u002Fcore-concepts\u002Flayouts-and-pages","3.core-concepts\u002F3.layouts-and-pages",{"title":54,"path":55,"stem":56},"Dynamic Pages","\u002Fcore-concepts\u002Fdynamic-pages","3.core-concepts\u002F4.dynamic-pages",{"title":58,"path":59,"stem":60},"Components","\u002Fcore-concepts\u002Fcomponents","3.core-concepts\u002F5.components",{"title":62,"path":63,"stem":64},"Draft & Publish Workflow","\u002Fcore-concepts\u002Fdraft-and-publish","3.core-concepts\u002F6.draft-and-publish",{"title":66,"path":67,"stem":68},"The Admin Panel","\u002Fcore-concepts\u002Fadmin-panel","3.core-concepts\u002F7.admin-panel",{"title":70,"path":71,"stem":72,"children":73,"page":35},"Api","\u002Fapi","4.api",[74,78,116,120,124,128,132,136],{"title":75,"path":76,"stem":77},"Bundle Setup","\u002Fapi\u002Fbundle-setup","4.api\u002F1.bundle-setup",{"title":58,"path":79,"stem":80,"children":81,"page":35},"\u002Fapi\u002Fcomponents","4.api\u002F2.components",[82,86,103],{"title":83,"path":84,"stem":85},"Creating Components","\u002Fapi\u002Fcomponents\u002Fcreating-components","4.api\u002F2.components\u002F1.creating-components",{"title":87,"path":88,"stem":89,"children":90,"page":35},"Annotations","\u002Fapi\u002Fcomponents\u002Fannotations","4.api\u002F2.components\u002F2.annotations",[91,95,99],{"title":92,"path":93,"stem":94},"Publishable","\u002Fapi\u002Fcomponents\u002Fannotations\u002Fpublishable","4.api\u002F2.components\u002F2.annotations\u002F1.publishable",{"title":96,"path":97,"stem":98},"Uploadable","\u002Fapi\u002Fcomponents\u002Fannotations\u002Fuploadable","4.api\u002F2.components\u002F2.annotations\u002F2.uploadable",{"title":100,"path":101,"stem":102},"Timestamped","\u002Fapi\u002Fcomponents\u002Fannotations\u002Ftimestamped","4.api\u002F2.components\u002F2.annotations\u002F3.timestamped",{"title":104,"path":105,"stem":106,"children":107,"page":35},"Built Ins","\u002Fapi\u002Fcomponents\u002Fbuilt-ins","4.api\u002F2.components\u002F3.built-ins",[108,112],{"title":109,"path":110,"stem":111},"Collection Component","\u002Fapi\u002Fcomponents\u002Fbuilt-ins\u002Fcollection-component","4.api\u002F2.components\u002F3.built-ins\u002F1.collection-component",{"title":113,"path":114,"stem":115},"Form Component","\u002Fapi\u002Fcomponents\u002Fbuilt-ins\u002Fform-component","4.api\u002F2.components\u002F3.built-ins\u002F2.form-component",{"title":117,"path":118,"stem":119},"Dynamic & Nested Pages","\u002Fapi\u002Fdynamic-pages","4.api\u002F3.dynamic-pages",{"title":121,"path":122,"stem":123},"Users & Security","\u002Fapi\u002Fusers-and-security","4.api\u002F4.users-and-security",{"title":125,"path":126,"stem":127},"Data Fixtures","\u002Fapi\u002Fdata-fixtures","4.api\u002F5.data-fixtures",{"title":129,"path":130,"stem":131},"Configuration Reference","\u002Fapi\u002Fconfiguration","4.api\u002F6.configuration",{"title":133,"path":134,"stem":135},"Console Commands","\u002Fapi\u002Fconsole-commands","4.api\u002F7.console-commands",{"title":137,"path":138,"stem":139},"Debugging & Profiler","\u002Fapi\u002Fdebugging","4.api\u002F8.debugging",{"title":141,"path":142,"stem":143,"children":144,"page":35},"Nuxt Module","\u002Fnuxt-module","5.nuxt-module",[145,149,162,178,203,207,279,304,308],{"title":146,"path":147,"stem":148},"Module Setup","\u002Fnuxt-module\u002Fmodule-setup","5.nuxt-module\u002F1.module-setup",{"title":150,"path":151,"stem":152,"children":153,"page":35},"Configuration","\u002Fnuxt-module\u002Fconfiguration","5.nuxt-module\u002F2.configuration",[154,158],{"title":155,"path":156,"stem":157},"Nuxt Config","\u002Fnuxt-module\u002Fconfiguration\u002Fnuxt-config","5.nuxt-module\u002F2.configuration\u002F1.nuxt-config",{"title":159,"path":160,"stem":161},"Site Config & SEO","\u002Fnuxt-module\u002Fconfiguration\u002Fsite-config-and-seo","5.nuxt-module\u002F2.configuration\u002F2.site-config-and-seo",{"title":163,"path":164,"stem":165,"children":166,"page":35},"Building Your Ui","\u002Fnuxt-module\u002Fbuilding-your-ui","5.nuxt-module\u002F3.building-your-ui",[167,171,175],{"title":168,"path":169,"stem":170},"Layouts","\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcreating-layouts","5.nuxt-module\u002F3.building-your-ui\u002F1.creating-layouts",{"title":172,"path":173,"stem":174},"Page Templates","\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcreating-page-templates","5.nuxt-module\u002F3.building-your-ui\u002F2.creating-page-templates",{"title":83,"path":176,"stem":177},"\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcreating-components","5.nuxt-module\u002F3.building-your-ui\u002F3.creating-components",{"title":179,"path":180,"stem":181,"children":182,"page":35},"Cwa Components","\u002Fnuxt-module\u002Fcwa-components","5.nuxt-module\u002F4.cwa-components",[183,187,191,195,199],{"title":184,"path":185,"stem":186},"\u003CCwaComponentGroup \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-component-group","5.nuxt-module\u002F4.cwa-components\u002F1.cwa-component-group",{"title":188,"path":189,"stem":190},"\u003CCwaPage \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-page","5.nuxt-module\u002F4.cwa-components\u002F2.cwa-page",{"title":192,"path":193,"stem":194},"\u003CCwaLink \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-link","5.nuxt-module\u002F4.cwa-components\u002F3.cwa-link",{"title":196,"path":197,"stem":198},"\u003CCwaImage \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-image","5.nuxt-module\u002F4.cwa-components\u002F4.cwa-image",{"title":200,"path":201,"stem":202},"\u003CCwaDefaultLayout \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-default-layout","5.nuxt-module\u002F4.cwa-components\u002F5.cwa-default-layout",{"title":204,"path":205,"stem":206},"The useCwa() API","\u002Fnuxt-module\u002Fcwa-api","5.nuxt-module\u002F5.cwa-api",{"title":208,"path":209,"stem":210,"children":211,"page":35},"Composables","\u002Fnuxt-module\u002Fcomposables","5.nuxt-module\u002F6.composables",[212,245,262],{"title":213,"path":214,"stem":215,"children":216,"page":35},"Component","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent","5.nuxt-module\u002F6.composables\u002F1.component",[217,221,225,229,233,237,241],{"title":218,"path":219,"stem":220},"Resource","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-resource","5.nuxt-module\u002F6.composables\u002F1.component\u002F1.use-cwa-resource",{"title":222,"path":223,"stem":224},"Collection Resource","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-collection-resource","5.nuxt-module\u002F6.composables\u002F1.component\u002F2.use-cwa-collection-resource",{"title":226,"path":227,"stem":228},"Image Resource","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-image-resource","5.nuxt-module\u002F6.composables\u002F1.component\u002F3.use-cwa-image-resource",{"title":230,"path":231,"stem":232},"Form","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form","5.nuxt-module\u002F6.composables\u002F1.component\u002F4.use-cwa-form",{"title":234,"path":235,"stem":236},"Form Input","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-input","5.nuxt-module\u002F6.composables\u002F1.component\u002F5.use-cwa-form-input",{"title":238,"path":239,"stem":240},"Form Repeated","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-repeated","5.nuxt-module\u002F6.composables\u002F1.component\u002F6.use-cwa-form-repeated",{"title":242,"path":243,"stem":244},"Form Collection","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-collection","5.nuxt-module\u002F6.composables\u002F1.component\u002F7.use-cwa-form-collection",{"title":246,"path":247,"stem":248,"children":249,"page":35},"Admin Manager","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager","5.nuxt-module\u002F6.composables\u002F2.admin-manager",[250,254,258],{"title":251,"path":252,"stem":253},"Manager Tab","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager\u002Fuse-cwa-resource-manager-tab","5.nuxt-module\u002F6.composables\u002F2.admin-manager\u002F1.use-cwa-resource-manager-tab",{"title":255,"path":256,"stem":257},"Resource Model","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager\u002Fuse-cwa-resource-model","5.nuxt-module\u002F6.composables\u002F2.admin-manager\u002F2.use-cwa-resource-model",{"title":259,"path":260,"stem":261},"Resource Upload","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager\u002Fuse-cwa-resource-upload","5.nuxt-module\u002F6.composables\u002F2.admin-manager\u002F3.use-cwa-resource-upload",{"title":263,"path":264,"stem":265,"children":266,"page":35},"Utilities","\u002Fnuxt-module\u002Fcomposables\u002Futilities","5.nuxt-module\u002F6.composables\u002F3.utilities",[267,271,275],{"title":268,"path":269,"stem":270},"Resource Endpoint","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-cwa-resource-endpoint","5.nuxt-module\u002F6.composables\u002F3.utilities\u002F1.use-cwa-resource-endpoint",{"title":272,"path":273,"stem":274},"Query Model","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-query-bound-model","5.nuxt-module\u002F6.composables\u002F3.utilities\u002F2.use-query-bound-model",{"title":276,"path":277,"stem":278},"Resource Route","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-cwa-resource-route","5.nuxt-module\u002F6.composables\u002F3.utilities\u002F3.use-cwa-resource-route",{"title":280,"path":281,"stem":282,"children":283,"page":35},"Component Helpers","\u002Fnuxt-module\u002Fcomponent-helpers","5.nuxt-module\u002F7.component-helpers",[284,288,292,296,300],{"title":285,"path":286,"stem":287},"Images & Media","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fimages-and-uploads","5.nuxt-module\u002F7.component-helpers\u002F1.images-and-uploads",{"title":289,"path":290,"stem":291},"Collections & Pagination","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fcollections-and-pagination","5.nuxt-module\u002F7.component-helpers\u002F2.collections-and-pagination",{"title":293,"path":294,"stem":295},"HTML Content","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fhtml-content","5.nuxt-module\u002F7.component-helpers\u002F3.html-content",{"title":297,"path":298,"stem":299},"Real-Time Updates","\u002Fnuxt-module\u002Fcomponent-helpers\u002Freal-time-updates","5.nuxt-module\u002F7.component-helpers\u002F4.real-time-updates",{"title":301,"path":302,"stem":303},"Forms","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fforms","5.nuxt-module\u002F7.component-helpers\u002F5.forms",{"title":305,"path":306,"stem":307},"Authentication","\u002Fnuxt-module\u002Fauthentication","5.nuxt-module\u002F8.authentication",{"title":309,"path":310,"stem":311,"children":312,"page":35},"Cwa Layer","\u002Fnuxt-module\u002Fcwa-layer","5.nuxt-module\u002F9.cwa-layer",[313,317,321],{"title":314,"path":315,"stem":316},"Overview","\u002Fnuxt-module\u002Fcwa-layer\u002Foverview","5.nuxt-module\u002F9.cwa-layer\u002F1.overview",{"title":318,"path":319,"stem":320},"Auth Pages","\u002Fnuxt-module\u002Fcwa-layer\u002Fauth-pages","5.nuxt-module\u002F9.cwa-layer\u002F2.auth-pages",{"title":322,"path":323,"stem":324},"Admin Panel","\u002Fnuxt-module\u002Fcwa-layer\u002Fadmin-panel","5.nuxt-module\u002F9.cwa-layer\u002F3.admin-panel",{"title":326,"path":327,"stem":328,"children":329,"page":35},"Deployment","\u002Fdeployment","6.deployment",[330,334,338],{"title":331,"path":332,"stem":333},"Docker","\u002Fdeployment\u002Fdocker","6.deployment\u002F1.docker",{"title":335,"path":336,"stem":337},"Kubernetes & Helm","\u002Fdeployment\u002Fkubernetes","6.deployment\u002F2.kubernetes",{"title":339,"path":340,"stem":341},"CI\u002FCD","\u002Fdeployment\u002Fci-cd","6.deployment\u002F3.ci-cd",{"id":343,"title":344,"badge":345,"body":346,"description":3541,"extension":3542,"links":345,"meta":3543,"navigation":3544,"path":302,"seo":3545,"stem":303,"__hash__":3546},"docs\u002F5.nuxt-module\u002F7.component-helpers\u002F5.forms.md","Working with Forms",null,{"type":347,"value":348,"toc":3524},"minimark",[349,358,361,430,435,450,1116,1132,1136,1141,1428,1432,1453,1585,1589,1714,1718,1732,1857,1861,1991,1995,2059,2365,2369,2695,2698,2702,2711,2981,3300,3311,3324,3327,3390,3395,3402,3415,3423,3432,3435,3484,3488,3508,3511,3520],[350,351,352,353,357],"p",{},"CWA renders Symfony forms as API resources. The form's field structure (",[354,355,356],"code",{},"vars",", choices, errors, constraints) comes from the API response; CWA composables wire that data to reactive Vue state and handle submit\u002Fvalidation automatically.",[350,359,360],{},"Four composables cover the full Symfony form type system:",[362,363,364,377],"table",{},[365,366,367],"thead",{},[368,369,370,374],"tr",{},[371,372,373],"th",{},"Composable",[371,375,376],{},"Use for",[378,379,380,394,406,418],"tbody",{},[368,381,382,391],{},[383,384,385],"td",{},[386,387,388],"a",{"href":231},[354,389,390],{},"useCwaForm",[383,392,393],{},"Form-level submit, success, and error state",[368,395,396,403],{},[383,397,398],{},[386,399,400],{"href":235},[354,401,402],{},"useCwaFormInput",[383,404,405],{},"Any single field (TextType, EmailType, ChoiceType, CheckboxType, etc.)",[368,407,408,415],{},[383,409,410],{},[386,411,412],{"href":239},[354,413,414],{},"useCwaFormRepeated",[383,416,417],{},"RepeatedType (e.g. password + confirmation)",[368,419,420,427],{},[383,421,422],{},[386,423,424],{"href":243},[354,425,426],{},"useCwaFormCollection",[383,428,429],{},"CollectionType (dynamic add\u002Fremove entries)",[431,432,434],"h2",{"id":433},"form-container-component","Form container component",[350,436,437,438,440,441,443,444,446,447,449],{},"The root CWA component for a form calls ",[354,439,390],{}," for submit lifecycle and one ",[354,442,402],{}," (or ",[354,445,414],{}," \u002F ",[354,448,426],{},") per field:",[451,452,457],"pre",{"className":453,"code":454,"language":455,"meta":456,"style":456},"language-vue shiki shiki-themes github-light github-dark material-theme-palenight","\u003Cscript setup lang=\"ts\">\nimport { computed, toRef } from 'vue'\nimport type { IriProp } from '#cwa\u002Fcomposables\u002Fcwa-resource'\nimport { useCwaResource, useCwaForm, useCwaFormInput } from '#imports'\n\nconst props = defineProps\u003CIriProp>()\nconst iriRef = toRef(props, 'iri')\n\nconst { exposeMeta } = useCwaResource(iriRef)\ndefineExpose(exposeMeta)\n\nconst form    = useCwaForm(iriRef)\nconst name    = useCwaFormInput(iriRef, 'contact_form[name]')\nconst email   = useCwaFormInput(iriRef, 'contact_form[email]')\nconst message = useCwaFormInput(iriRef, 'contact_form[message]')\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cform @submit.prevent=\"form.submit()\">\n    \u003C!-- field slots here -->\n\n    \u003CUAlert v-if=\"form.success.value\" color=\"success\" title=\"Sent!\" \u002F>\n\n    \u003CUAlert\n      v-for=\"error in form.formErrors.value\"\n      :key=\"error\"\n      color=\"error\"\n      :description=\"error\"\n    \u002F>\n    \u003CUAlert\n      v-for=\"error in form.unregisteredFieldErrors.value\"\n      :key=\"error\"\n      color=\"warning\"\n      :description=\"error\"\n    \u002F>\n\n    \u003CUButton type=\"submit\" :loading=\"form.submitting.value\" :disabled=\"form.success.value\">\n      Submit\n    \u003C\u002FUButton>\n  \u003C\u002Fform>\n\u003C\u002Ftemplate>\n","vue","",[354,458,459,495,529,553,584,591,622,650,655,674,683,688,703,729,755,780,790,795,805,828,835,840,888,893,901,917,932,946,960,966,973,987,1000,1014,1027,1032,1037,1081,1087,1097,1107],{"__ignoreMap":456},[460,461,464,468,472,476,479,482,486,490,492],"span",{"class":462,"line":463},"line",1,[460,465,467],{"class":466},"sOvfz","\u003C",[460,469,471],{"class":470},"s-h7I","script",[460,473,475],{"class":474},"sGtlX"," setup",[460,477,478],{"class":474}," lang",[460,480,481],{"class":466},"=",[460,483,485],{"class":484},"seSrl","\"",[460,487,489],{"class":488},"sLL54","ts",[460,491,485],{"class":484},[460,493,494],{"class":466},">\n",[460,496,498,502,505,509,512,515,518,521,524,526],{"class":462,"line":497},2,[460,499,501],{"class":500},"sm4w6","import",[460,503,504],{"class":466}," {",[460,506,508],{"class":507},"sPB8G"," computed",[460,510,511],{"class":466},",",[460,513,514],{"class":507}," toRef",[460,516,517],{"class":466}," }",[460,519,520],{"class":500}," from",[460,522,523],{"class":484}," '",[460,525,455],{"class":488},[460,527,528],{"class":484},"'\n",[460,530,532,534,537,539,542,544,546,548,551],{"class":462,"line":531},3,[460,533,501],{"class":500},[460,535,536],{"class":500}," type",[460,538,504],{"class":466},[460,540,541],{"class":507}," IriProp",[460,543,517],{"class":466},[460,545,520],{"class":500},[460,547,523],{"class":484},[460,549,550],{"class":488},"#cwa\u002Fcomposables\u002Fcwa-resource",[460,552,528],{"class":484},[460,554,556,558,560,563,565,568,570,573,575,577,579,582],{"class":462,"line":555},4,[460,557,501],{"class":500},[460,559,504],{"class":466},[460,561,562],{"class":507}," useCwaResource",[460,564,511],{"class":466},[460,566,567],{"class":507}," useCwaForm",[460,569,511],{"class":466},[460,571,572],{"class":507}," useCwaFormInput",[460,574,517],{"class":466},[460,576,520],{"class":500},[460,578,523],{"class":484},[460,580,581],{"class":488},"#imports",[460,583,528],{"class":484},[460,585,587],{"class":462,"line":586},5,[460,588,590],{"emptyLinePlaceholder":589},true,"\n",[460,592,594,598,602,606,610,612,616,619],{"class":462,"line":593},6,[460,595,597],{"class":596},"swB56","const",[460,599,601],{"class":600},"sc2zw"," props",[460,603,605],{"class":604},"sVlFx"," =",[460,607,609],{"class":608},"sKpYG"," defineProps",[460,611,467],{"class":466},[460,613,615],{"class":614},"sRCss","IriProp",[460,617,618],{"class":466},">",[460,620,621],{"class":507},"()\n",[460,623,625,627,630,632,634,637,639,641,644,647],{"class":462,"line":624},7,[460,626,597],{"class":596},[460,628,629],{"class":600}," iriRef",[460,631,605],{"class":604},[460,633,514],{"class":608},[460,635,636],{"class":507},"(props",[460,638,511],{"class":466},[460,640,523],{"class":484},[460,642,643],{"class":488},"iri",[460,645,646],{"class":484},"'",[460,648,649],{"class":507},")\n",[460,651,653],{"class":462,"line":652},8,[460,654,590],{"emptyLinePlaceholder":589},[460,656,658,660,662,665,667,669,671],{"class":462,"line":657},9,[460,659,597],{"class":596},[460,661,504],{"class":466},[460,663,664],{"class":600}," exposeMeta",[460,666,517],{"class":466},[460,668,605],{"class":604},[460,670,562],{"class":608},[460,672,673],{"class":507},"(iriRef)\n",[460,675,677,680],{"class":462,"line":676},10,[460,678,679],{"class":608},"defineExpose",[460,681,682],{"class":507},"(exposeMeta)\n",[460,684,686],{"class":462,"line":685},11,[460,687,590],{"emptyLinePlaceholder":589},[460,689,691,693,696,699,701],{"class":462,"line":690},12,[460,692,597],{"class":596},[460,694,695],{"class":600}," form",[460,697,698],{"class":604},"    =",[460,700,567],{"class":608},[460,702,673],{"class":507},[460,704,706,708,711,713,715,718,720,722,725,727],{"class":462,"line":705},13,[460,707,597],{"class":596},[460,709,710],{"class":600}," name",[460,712,698],{"class":604},[460,714,572],{"class":608},[460,716,717],{"class":507},"(iriRef",[460,719,511],{"class":466},[460,721,523],{"class":484},[460,723,724],{"class":488},"contact_form[name]",[460,726,646],{"class":484},[460,728,649],{"class":507},[460,730,732,734,737,740,742,744,746,748,751,753],{"class":462,"line":731},14,[460,733,597],{"class":596},[460,735,736],{"class":600}," email",[460,738,739],{"class":604},"   =",[460,741,572],{"class":608},[460,743,717],{"class":507},[460,745,511],{"class":466},[460,747,523],{"class":484},[460,749,750],{"class":488},"contact_form[email]",[460,752,646],{"class":484},[460,754,649],{"class":507},[460,756,758,760,763,765,767,769,771,773,776,778],{"class":462,"line":757},15,[460,759,597],{"class":596},[460,761,762],{"class":600}," message",[460,764,605],{"class":604},[460,766,572],{"class":608},[460,768,717],{"class":507},[460,770,511],{"class":466},[460,772,523],{"class":484},[460,774,775],{"class":488},"contact_form[message]",[460,777,646],{"class":484},[460,779,649],{"class":507},[460,781,783,786,788],{"class":462,"line":782},16,[460,784,785],{"class":466},"\u003C\u002F",[460,787,471],{"class":470},[460,789,494],{"class":466},[460,791,793],{"class":462,"line":792},17,[460,794,590],{"emptyLinePlaceholder":589},[460,796,798,800,803],{"class":462,"line":797},18,[460,799,467],{"class":466},[460,801,802],{"class":470},"template",[460,804,494],{"class":466},[460,806,808,811,814,817,819,821,824,826],{"class":462,"line":807},19,[460,809,810],{"class":466},"  \u003C",[460,812,813],{"class":470},"form",[460,815,816],{"class":474}," @submit.prevent",[460,818,481],{"class":466},[460,820,485],{"class":484},[460,822,823],{"class":488},"form.submit()",[460,825,485],{"class":484},[460,827,494],{"class":466},[460,829,831],{"class":462,"line":830},20,[460,832,834],{"class":833},"sTBSN","    \u003C!-- field slots here -->\n",[460,836,838],{"class":462,"line":837},21,[460,839,590],{"emptyLinePlaceholder":589},[460,841,843,846,849,852,854,856,859,861,864,866,868,871,873,876,878,880,883,885],{"class":462,"line":842},22,[460,844,845],{"class":466},"    \u003C",[460,847,848],{"class":470},"UAlert",[460,850,851],{"class":474}," v-if",[460,853,481],{"class":466},[460,855,485],{"class":484},[460,857,858],{"class":488},"form.success.value",[460,860,485],{"class":484},[460,862,863],{"class":474}," color",[460,865,481],{"class":466},[460,867,485],{"class":484},[460,869,870],{"class":488},"success",[460,872,485],{"class":484},[460,874,875],{"class":474}," title",[460,877,481],{"class":466},[460,879,485],{"class":484},[460,881,882],{"class":488},"Sent!",[460,884,485],{"class":484},[460,886,887],{"class":466}," \u002F>\n",[460,889,891],{"class":462,"line":890},23,[460,892,590],{"emptyLinePlaceholder":589},[460,894,896,898],{"class":462,"line":895},24,[460,897,845],{"class":466},[460,899,900],{"class":470},"UAlert\n",[460,902,904,907,909,911,914],{"class":462,"line":903},25,[460,905,906],{"class":474},"      v-for",[460,908,481],{"class":466},[460,910,485],{"class":484},[460,912,913],{"class":488},"error in form.formErrors.value",[460,915,916],{"class":484},"\"\n",[460,918,920,923,925,927,930],{"class":462,"line":919},26,[460,921,922],{"class":474},"      :key",[460,924,481],{"class":466},[460,926,485],{"class":484},[460,928,929],{"class":488},"error",[460,931,916],{"class":484},[460,933,935,938,940,942,944],{"class":462,"line":934},27,[460,936,937],{"class":474},"      color",[460,939,481],{"class":466},[460,941,485],{"class":484},[460,943,929],{"class":488},[460,945,916],{"class":484},[460,947,949,952,954,956,958],{"class":462,"line":948},28,[460,950,951],{"class":474},"      :description",[460,953,481],{"class":466},[460,955,485],{"class":484},[460,957,929],{"class":488},[460,959,916],{"class":484},[460,961,963],{"class":462,"line":962},29,[460,964,965],{"class":466},"    \u002F>\n",[460,967,969,971],{"class":462,"line":968},30,[460,970,845],{"class":466},[460,972,900],{"class":470},[460,974,976,978,980,982,985],{"class":462,"line":975},31,[460,977,906],{"class":474},[460,979,481],{"class":466},[460,981,485],{"class":484},[460,983,984],{"class":488},"error in form.unregisteredFieldErrors.value",[460,986,916],{"class":484},[460,988,990,992,994,996,998],{"class":462,"line":989},32,[460,991,922],{"class":474},[460,993,481],{"class":466},[460,995,485],{"class":484},[460,997,929],{"class":488},[460,999,916],{"class":484},[460,1001,1003,1005,1007,1009,1012],{"class":462,"line":1002},33,[460,1004,937],{"class":474},[460,1006,481],{"class":466},[460,1008,485],{"class":484},[460,1010,1011],{"class":488},"warning",[460,1013,916],{"class":484},[460,1015,1017,1019,1021,1023,1025],{"class":462,"line":1016},34,[460,1018,951],{"class":474},[460,1020,481],{"class":466},[460,1022,485],{"class":484},[460,1024,929],{"class":488},[460,1026,916],{"class":484},[460,1028,1030],{"class":462,"line":1029},35,[460,1031,965],{"class":466},[460,1033,1035],{"class":462,"line":1034},36,[460,1036,590],{"emptyLinePlaceholder":589},[460,1038,1040,1042,1045,1047,1049,1051,1054,1056,1059,1061,1063,1066,1068,1071,1073,1075,1077,1079],{"class":462,"line":1039},37,[460,1041,845],{"class":466},[460,1043,1044],{"class":470},"UButton",[460,1046,536],{"class":474},[460,1048,481],{"class":466},[460,1050,485],{"class":484},[460,1052,1053],{"class":488},"submit",[460,1055,485],{"class":484},[460,1057,1058],{"class":474}," :loading",[460,1060,481],{"class":466},[460,1062,485],{"class":484},[460,1064,1065],{"class":488},"form.submitting.value",[460,1067,485],{"class":484},[460,1069,1070],{"class":474}," :disabled",[460,1072,481],{"class":466},[460,1074,485],{"class":484},[460,1076,858],{"class":488},[460,1078,485],{"class":484},[460,1080,494],{"class":466},[460,1082,1084],{"class":462,"line":1083},38,[460,1085,1086],{"class":507},"      Submit\n",[460,1088,1090,1093,1095],{"class":462,"line":1089},39,[460,1091,1092],{"class":466},"    \u003C\u002F",[460,1094,1044],{"class":470},[460,1096,494],{"class":466},[460,1098,1100,1103,1105],{"class":462,"line":1099},40,[460,1101,1102],{"class":466},"  \u003C\u002F",[460,1104,813],{"class":470},[460,1106,494],{"class":466},[460,1108,1110,1112,1114],{"class":462,"line":1109},41,[460,1111,785],{"class":466},[460,1113,802],{"class":470},[460,1115,494],{"class":466},[350,1117,1118,1119,1122,1123,1126,1127,1131],{},"Always render both ",[354,1120,1121],{},"formErrors"," and ",[354,1124,1125],{},"unregisteredFieldErrors"," — they cover different error categories and never overlap. See ",[386,1128,1130],{"href":1129},"#error-display-contract","Error display contract"," below.",[431,1133,1135],{"id":1134},"field-types","Field types",[1137,1138,1140],"h3",{"id":1139},"text-email-textarea","Text, Email, Textarea",[451,1142,1144],{"className":453,"code":1143,"language":455,"meta":456,"style":456},"\u003C!-- TextType \u002F EmailType -->\n\u003CUFormField\n  :label=\"name.vars.value?.label\"\n  :error=\"name.displayErrors.value ? name.errors.value[0] : undefined\"\n  :required=\"name.vars.value?.required\"\n>\n  \u003CUInput\n    v-model=\"name.value.value\"\n    @blur=\"name.onBlur\"\n    @input=\"name.onInput\"\n  \u002F>\n\u003C\u002FUFormField>\n\n\u003C!-- TextareaType -->\n\u003CUFormField\n  :label=\"message.vars.value?.label\"\n  :error=\"message.displayErrors.value ? message.errors.value[0] : undefined\"\n>\n  \u003CUTextarea\n    v-model=\"message.value.value\"\n    @blur=\"message.onBlur\"\n    @input=\"message.onInput\"\n  \u002F>\n\u003C\u002FUFormField>\n",[354,1145,1146,1151,1158,1190,1243,1270,1274,1279,1284,1289,1294,1299,1308,1312,1317,1323,1350,1392,1396,1401,1406,1411,1416,1420],{"__ignoreMap":456},[460,1147,1148],{"class":462,"line":463},[460,1149,1150],{"class":833},"\u003C!-- TextType \u002F EmailType -->\n",[460,1152,1153,1155],{"class":462,"line":497},[460,1154,467],{"class":466},[460,1156,1157],{"class":470},"UFormField\n",[460,1159,1160,1163,1166,1168,1170,1173,1176,1178,1180,1183,1186,1188],{"class":462,"line":531},[460,1161,1162],{"class":466},"  :",[460,1164,1165],{"class":474},"label",[460,1167,481],{"class":466},[460,1169,485],{"class":484},[460,1171,1172],{"class":507},"name",[460,1174,1175],{"class":466},".",[460,1177,356],{"class":507},[460,1179,1175],{"class":466},[460,1181,1182],{"class":507},"value",[460,1184,1185],{"class":466},"?.",[460,1187,1165],{"class":507},[460,1189,916],{"class":484},[460,1191,1192,1194,1196,1198,1200,1202,1204,1207,1209,1212,1215,1217,1219,1222,1224,1227,1231,1234,1237,1241],{"class":462,"line":555},[460,1193,1162],{"class":466},[460,1195,929],{"class":474},[460,1197,481],{"class":466},[460,1199,485],{"class":484},[460,1201,1172],{"class":507},[460,1203,1175],{"class":466},[460,1205,1206],{"class":507},"displayErrors",[460,1208,1175],{"class":466},[460,1210,1211],{"class":507},"value ",[460,1213,1214],{"class":604},"?",[460,1216,710],{"class":507},[460,1218,1175],{"class":466},[460,1220,1221],{"class":507},"errors",[460,1223,1175],{"class":466},[460,1225,1226],{"class":507},"value[",[460,1228,1230],{"class":1229},"scSvc","0",[460,1232,1233],{"class":507},"] ",[460,1235,1236],{"class":604},":",[460,1238,1240],{"class":1239},"sBtbT"," undefined",[460,1242,916],{"class":484},[460,1244,1245,1247,1250,1252,1254,1256,1258,1260,1262,1264,1266,1268],{"class":462,"line":586},[460,1246,1162],{"class":466},[460,1248,1249],{"class":474},"required",[460,1251,481],{"class":466},[460,1253,485],{"class":484},[460,1255,1172],{"class":507},[460,1257,1175],{"class":466},[460,1259,356],{"class":507},[460,1261,1175],{"class":466},[460,1263,1182],{"class":507},[460,1265,1185],{"class":466},[460,1267,1249],{"class":507},[460,1269,916],{"class":484},[460,1271,1272],{"class":462,"line":593},[460,1273,494],{"class":466},[460,1275,1276],{"class":462,"line":624},[460,1277,1278],{"class":507},"  \u003CUInput\n",[460,1280,1281],{"class":462,"line":652},[460,1282,1283],{"class":507},"    v-model=\"name.value.value\"\n",[460,1285,1286],{"class":462,"line":657},[460,1287,1288],{"class":507},"    @blur=\"name.onBlur\"\n",[460,1290,1291],{"class":462,"line":676},[460,1292,1293],{"class":507},"    @input=\"name.onInput\"\n",[460,1295,1296],{"class":462,"line":685},[460,1297,1298],{"class":507},"  \u002F>\n",[460,1300,1301,1303,1306],{"class":462,"line":690},[460,1302,785],{"class":466},[460,1304,1305],{"class":470},"UFormField",[460,1307,494],{"class":466},[460,1309,1310],{"class":462,"line":705},[460,1311,590],{"emptyLinePlaceholder":589},[460,1313,1314],{"class":462,"line":731},[460,1315,1316],{"class":833},"\u003C!-- TextareaType -->\n",[460,1318,1319,1321],{"class":462,"line":757},[460,1320,467],{"class":466},[460,1322,1157],{"class":470},[460,1324,1325,1327,1329,1331,1333,1336,1338,1340,1342,1344,1346,1348],{"class":462,"line":782},[460,1326,1162],{"class":466},[460,1328,1165],{"class":474},[460,1330,481],{"class":466},[460,1332,485],{"class":484},[460,1334,1335],{"class":507},"message",[460,1337,1175],{"class":466},[460,1339,356],{"class":507},[460,1341,1175],{"class":466},[460,1343,1182],{"class":507},[460,1345,1185],{"class":466},[460,1347,1165],{"class":507},[460,1349,916],{"class":484},[460,1351,1352,1354,1356,1358,1360,1362,1364,1366,1368,1370,1372,1374,1376,1378,1380,1382,1384,1386,1388,1390],{"class":462,"line":792},[460,1353,1162],{"class":466},[460,1355,929],{"class":474},[460,1357,481],{"class":466},[460,1359,485],{"class":484},[460,1361,1335],{"class":507},[460,1363,1175],{"class":466},[460,1365,1206],{"class":507},[460,1367,1175],{"class":466},[460,1369,1211],{"class":507},[460,1371,1214],{"class":604},[460,1373,762],{"class":507},[460,1375,1175],{"class":466},[460,1377,1221],{"class":507},[460,1379,1175],{"class":466},[460,1381,1226],{"class":507},[460,1383,1230],{"class":1229},[460,1385,1233],{"class":507},[460,1387,1236],{"class":604},[460,1389,1240],{"class":1239},[460,1391,916],{"class":484},[460,1393,1394],{"class":462,"line":797},[460,1395,494],{"class":466},[460,1397,1398],{"class":462,"line":807},[460,1399,1400],{"class":507},"  \u003CUTextarea\n",[460,1402,1403],{"class":462,"line":830},[460,1404,1405],{"class":507},"    v-model=\"message.value.value\"\n",[460,1407,1408],{"class":462,"line":837},[460,1409,1410],{"class":507},"    @blur=\"message.onBlur\"\n",[460,1412,1413],{"class":462,"line":842},[460,1414,1415],{"class":507},"    @input=\"message.onInput\"\n",[460,1417,1418],{"class":462,"line":890},[460,1419,1298],{"class":507},[460,1421,1422,1424,1426],{"class":462,"line":895},[460,1423,785],{"class":466},[460,1425,1305],{"class":470},[460,1427,494],{"class":466},[1137,1429,1431],{"id":1430},"choicetype-select-collapsed-single","ChoiceType — select (collapsed, single)",[350,1433,1434,1437,1438,1441,1442,1122,1445,1448,1449,1452],{},[354,1435,1436],{},"vars.choices"," is an array of ",[354,1439,1440],{},"{ label, value }"," objects from the API. Always pass ",[354,1443,1444],{},"value-key",[354,1446,1447],{},"label-key"," — without them, Nuxt UI binds the full object to ",[354,1450,1451],{},"v-model"," and Symfony rejects it with a 422 \"option selected is invalid\" error.",[451,1454,1456],{"className":453,"code":1455,"language":455,"meta":456,"style":456},"\u003CUFormField\n  :label=\"subject.vars.value?.label\"\n  :error=\"subject.displayErrors.value ? subject.errors.value[0] : undefined\"\n>\n  \u003CUSelect\n    v-model=\"subject.value.value\"\n    :items=\"subject.vars.value?.choices || []\"\n    value-key=\"value\"\n    label-key=\"label\"\n    @update:model-value=\"subject.onInput()\"\n    @blur=\"subject.onBlur\"\n  \u002F>\n\u003C\u002FUFormField>\n",[354,1457,1458,1464,1491,1534,1538,1543,1548,1553,1558,1563,1568,1573,1577],{"__ignoreMap":456},[460,1459,1460,1462],{"class":462,"line":463},[460,1461,467],{"class":466},[460,1463,1157],{"class":470},[460,1465,1466,1468,1470,1472,1474,1477,1479,1481,1483,1485,1487,1489],{"class":462,"line":497},[460,1467,1162],{"class":466},[460,1469,1165],{"class":474},[460,1471,481],{"class":466},[460,1473,485],{"class":484},[460,1475,1476],{"class":507},"subject",[460,1478,1175],{"class":466},[460,1480,356],{"class":507},[460,1482,1175],{"class":466},[460,1484,1182],{"class":507},[460,1486,1185],{"class":466},[460,1488,1165],{"class":507},[460,1490,916],{"class":484},[460,1492,1493,1495,1497,1499,1501,1503,1505,1507,1509,1511,1513,1516,1518,1520,1522,1524,1526,1528,1530,1532],{"class":462,"line":531},[460,1494,1162],{"class":466},[460,1496,929],{"class":474},[460,1498,481],{"class":466},[460,1500,485],{"class":484},[460,1502,1476],{"class":507},[460,1504,1175],{"class":466},[460,1506,1206],{"class":507},[460,1508,1175],{"class":466},[460,1510,1211],{"class":507},[460,1512,1214],{"class":604},[460,1514,1515],{"class":507}," subject",[460,1517,1175],{"class":466},[460,1519,1221],{"class":507},[460,1521,1175],{"class":466},[460,1523,1226],{"class":507},[460,1525,1230],{"class":1229},[460,1527,1233],{"class":507},[460,1529,1236],{"class":604},[460,1531,1240],{"class":1239},[460,1533,916],{"class":484},[460,1535,1536],{"class":462,"line":555},[460,1537,494],{"class":466},[460,1539,1540],{"class":462,"line":586},[460,1541,1542],{"class":507},"  \u003CUSelect\n",[460,1544,1545],{"class":462,"line":593},[460,1546,1547],{"class":507},"    v-model=\"subject.value.value\"\n",[460,1549,1550],{"class":462,"line":624},[460,1551,1552],{"class":507},"    :items=\"subject.vars.value?.choices || []\"\n",[460,1554,1555],{"class":462,"line":652},[460,1556,1557],{"class":507},"    value-key=\"value\"\n",[460,1559,1560],{"class":462,"line":657},[460,1561,1562],{"class":507},"    label-key=\"label\"\n",[460,1564,1565],{"class":462,"line":676},[460,1566,1567],{"class":507},"    @update:model-value=\"subject.onInput()\"\n",[460,1569,1570],{"class":462,"line":685},[460,1571,1572],{"class":507},"    @blur=\"subject.onBlur\"\n",[460,1574,1575],{"class":462,"line":690},[460,1576,1298],{"class":507},[460,1578,1579,1581,1583],{"class":462,"line":705},[460,1580,785],{"class":466},[460,1582,1305],{"class":470},[460,1584,494],{"class":466},[1137,1586,1588],{"id":1587},"choicetype-radio-group-expanded-single","ChoiceType — radio group (expanded, single)",[451,1590,1592],{"className":453,"code":1591,"language":455,"meta":456,"style":456},"\u003CUFormField\n  :label=\"plan.vars.value?.label\"\n  :error=\"plan.displayErrors.value ? plan.errors.value[0] : undefined\"\n>\n  \u003CURadioGroup\n    v-model=\"plan.value.value\"\n    :items=\"plan.vars.value?.choices || []\"\n    value-key=\"value\"\n    label-key=\"label\"\n    @change=\"plan.onInput()\"\n  \u002F>\n\u003C\u002FUFormField>\n",[354,1593,1594,1600,1627,1670,1674,1679,1684,1689,1693,1697,1702,1706],{"__ignoreMap":456},[460,1595,1596,1598],{"class":462,"line":463},[460,1597,467],{"class":466},[460,1599,1157],{"class":470},[460,1601,1602,1604,1606,1608,1610,1613,1615,1617,1619,1621,1623,1625],{"class":462,"line":497},[460,1603,1162],{"class":466},[460,1605,1165],{"class":474},[460,1607,481],{"class":466},[460,1609,485],{"class":484},[460,1611,1612],{"class":507},"plan",[460,1614,1175],{"class":466},[460,1616,356],{"class":507},[460,1618,1175],{"class":466},[460,1620,1182],{"class":507},[460,1622,1185],{"class":466},[460,1624,1165],{"class":507},[460,1626,916],{"class":484},[460,1628,1629,1631,1633,1635,1637,1639,1641,1643,1645,1647,1649,1652,1654,1656,1658,1660,1662,1664,1666,1668],{"class":462,"line":531},[460,1630,1162],{"class":466},[460,1632,929],{"class":474},[460,1634,481],{"class":466},[460,1636,485],{"class":484},[460,1638,1612],{"class":507},[460,1640,1175],{"class":466},[460,1642,1206],{"class":507},[460,1644,1175],{"class":466},[460,1646,1211],{"class":507},[460,1648,1214],{"class":604},[460,1650,1651],{"class":507}," plan",[460,1653,1175],{"class":466},[460,1655,1221],{"class":507},[460,1657,1175],{"class":466},[460,1659,1226],{"class":507},[460,1661,1230],{"class":1229},[460,1663,1233],{"class":507},[460,1665,1236],{"class":604},[460,1667,1240],{"class":1239},[460,1669,916],{"class":484},[460,1671,1672],{"class":462,"line":555},[460,1673,494],{"class":466},[460,1675,1676],{"class":462,"line":586},[460,1677,1678],{"class":507},"  \u003CURadioGroup\n",[460,1680,1681],{"class":462,"line":593},[460,1682,1683],{"class":507},"    v-model=\"plan.value.value\"\n",[460,1685,1686],{"class":462,"line":624},[460,1687,1688],{"class":507},"    :items=\"plan.vars.value?.choices || []\"\n",[460,1690,1691],{"class":462,"line":652},[460,1692,1557],{"class":507},[460,1694,1695],{"class":462,"line":657},[460,1696,1562],{"class":507},[460,1698,1699],{"class":462,"line":676},[460,1700,1701],{"class":507},"    @change=\"plan.onInput()\"\n",[460,1703,1704],{"class":462,"line":685},[460,1705,1298],{"class":507},[460,1707,1708,1710,1712],{"class":462,"line":690},[460,1709,785],{"class":466},[460,1711,1305],{"class":470},[460,1713,494],{"class":466},[1137,1715,1717],{"id":1716},"choicetype-checkbox-group-expanded-multiple","ChoiceType — checkbox group (expanded, multiple)",[350,1719,1720,1721,1724,1725,1728,1729,1175],{},"When ",[354,1722,1723],{},"vars.multiple"," is ",[354,1726,1727],{},"true",", the field value is a ",[354,1730,1731],{},"string[]",[451,1733,1735],{"className":453,"code":1734,"language":455,"meta":456,"style":456},"\u003CUFormField\n  :label=\"interests.vars.value?.label\"\n  :error=\"interests.displayErrors.value ? interests.errors.value[0] : undefined\"\n>\n  \u003CUCheckboxGroup\n    v-model=\"interests.value.value\"\n    :items=\"interests.vars.value?.choices || []\"\n    value-key=\"value\"\n    label-key=\"label\"\n    @change=\"interests.onInput()\"\n  \u002F>\n\u003C\u002FUFormField>\n",[354,1736,1737,1743,1770,1813,1817,1822,1827,1832,1836,1840,1845,1849],{"__ignoreMap":456},[460,1738,1739,1741],{"class":462,"line":463},[460,1740,467],{"class":466},[460,1742,1157],{"class":470},[460,1744,1745,1747,1749,1751,1753,1756,1758,1760,1762,1764,1766,1768],{"class":462,"line":497},[460,1746,1162],{"class":466},[460,1748,1165],{"class":474},[460,1750,481],{"class":466},[460,1752,485],{"class":484},[460,1754,1755],{"class":507},"interests",[460,1757,1175],{"class":466},[460,1759,356],{"class":507},[460,1761,1175],{"class":466},[460,1763,1182],{"class":507},[460,1765,1185],{"class":466},[460,1767,1165],{"class":507},[460,1769,916],{"class":484},[460,1771,1772,1774,1776,1778,1780,1782,1784,1786,1788,1790,1792,1795,1797,1799,1801,1803,1805,1807,1809,1811],{"class":462,"line":531},[460,1773,1162],{"class":466},[460,1775,929],{"class":474},[460,1777,481],{"class":466},[460,1779,485],{"class":484},[460,1781,1755],{"class":507},[460,1783,1175],{"class":466},[460,1785,1206],{"class":507},[460,1787,1175],{"class":466},[460,1789,1211],{"class":507},[460,1791,1214],{"class":604},[460,1793,1794],{"class":507}," interests",[460,1796,1175],{"class":466},[460,1798,1221],{"class":507},[460,1800,1175],{"class":466},[460,1802,1226],{"class":507},[460,1804,1230],{"class":1229},[460,1806,1233],{"class":507},[460,1808,1236],{"class":604},[460,1810,1240],{"class":1239},[460,1812,916],{"class":484},[460,1814,1815],{"class":462,"line":555},[460,1816,494],{"class":466},[460,1818,1819],{"class":462,"line":586},[460,1820,1821],{"class":507},"  \u003CUCheckboxGroup\n",[460,1823,1824],{"class":462,"line":593},[460,1825,1826],{"class":507},"    v-model=\"interests.value.value\"\n",[460,1828,1829],{"class":462,"line":624},[460,1830,1831],{"class":507},"    :items=\"interests.vars.value?.choices || []\"\n",[460,1833,1834],{"class":462,"line":652},[460,1835,1557],{"class":507},[460,1837,1838],{"class":462,"line":657},[460,1839,1562],{"class":507},[460,1841,1842],{"class":462,"line":676},[460,1843,1844],{"class":507},"    @change=\"interests.onInput()\"\n",[460,1846,1847],{"class":462,"line":685},[460,1848,1298],{"class":507},[460,1850,1851,1853,1855],{"class":462,"line":690},[460,1852,785],{"class":466},[460,1854,1305],{"class":470},[460,1856,494],{"class":466},[1137,1858,1860],{"id":1859},"choicetype-multi-select-collapsed-multiple","ChoiceType — multi-select (collapsed, multiple)",[451,1862,1864],{"className":453,"code":1863,"language":455,"meta":456,"style":456},"\u003CUFormField\n  :label=\"tags.vars.value?.label\"\n  :error=\"tags.displayErrors.value ? tags.errors.value[0] : undefined\"\n>\n  \u003CUSelectMenu\n    v-model=\"tags.value.value\"\n    :items=\"tags.vars.value?.choices || []\"\n    :multiple=\"true\"\n    value-key=\"value\"\n    label-key=\"label\"\n    @update:model-value=\"tags.onInput()\"\n  \u002F>\n\u003C\u002FUFormField>\n",[354,1865,1866,1872,1899,1942,1946,1951,1956,1961,1966,1970,1974,1979,1983],{"__ignoreMap":456},[460,1867,1868,1870],{"class":462,"line":463},[460,1869,467],{"class":466},[460,1871,1157],{"class":470},[460,1873,1874,1876,1878,1880,1882,1885,1887,1889,1891,1893,1895,1897],{"class":462,"line":497},[460,1875,1162],{"class":466},[460,1877,1165],{"class":474},[460,1879,481],{"class":466},[460,1881,485],{"class":484},[460,1883,1884],{"class":507},"tags",[460,1886,1175],{"class":466},[460,1888,356],{"class":507},[460,1890,1175],{"class":466},[460,1892,1182],{"class":507},[460,1894,1185],{"class":466},[460,1896,1165],{"class":507},[460,1898,916],{"class":484},[460,1900,1901,1903,1905,1907,1909,1911,1913,1915,1917,1919,1921,1924,1926,1928,1930,1932,1934,1936,1938,1940],{"class":462,"line":531},[460,1902,1162],{"class":466},[460,1904,929],{"class":474},[460,1906,481],{"class":466},[460,1908,485],{"class":484},[460,1910,1884],{"class":507},[460,1912,1175],{"class":466},[460,1914,1206],{"class":507},[460,1916,1175],{"class":466},[460,1918,1211],{"class":507},[460,1920,1214],{"class":604},[460,1922,1923],{"class":507}," tags",[460,1925,1175],{"class":466},[460,1927,1221],{"class":507},[460,1929,1175],{"class":466},[460,1931,1226],{"class":507},[460,1933,1230],{"class":1229},[460,1935,1233],{"class":507},[460,1937,1236],{"class":604},[460,1939,1240],{"class":1239},[460,1941,916],{"class":484},[460,1943,1944],{"class":462,"line":555},[460,1945,494],{"class":466},[460,1947,1948],{"class":462,"line":586},[460,1949,1950],{"class":507},"  \u003CUSelectMenu\n",[460,1952,1953],{"class":462,"line":593},[460,1954,1955],{"class":507},"    v-model=\"tags.value.value\"\n",[460,1957,1958],{"class":462,"line":624},[460,1959,1960],{"class":507},"    :items=\"tags.vars.value?.choices || []\"\n",[460,1962,1963],{"class":462,"line":652},[460,1964,1965],{"class":507},"    :multiple=\"true\"\n",[460,1967,1968],{"class":462,"line":657},[460,1969,1557],{"class":507},[460,1971,1972],{"class":462,"line":676},[460,1973,1562],{"class":507},[460,1975,1976],{"class":462,"line":685},[460,1977,1978],{"class":507},"    @update:model-value=\"tags.onInput()\"\n",[460,1980,1981],{"class":462,"line":690},[460,1982,1298],{"class":507},[460,1984,1985,1987,1989],{"class":462,"line":705},[460,1986,785],{"class":466},[460,1988,1305],{"class":470},[460,1990,494],{"class":466},[1137,1992,1994],{"id":1993},"checkboxtype-single-checkbox","CheckboxType (single checkbox)",[350,1996,1997,1998,2001,2002,2005,2006,2009,2010,2012,2013,2015,2016,2019,2020,2022,2023,2025,2026,2029,2030,2032,2033,2036,2037,2039,2040,2043,2044,2047,2048,2050,2051,2054,2055,2058],{},"Symfony's ",[354,1999,2000],{},"CheckboxType"," submits ",[354,2003,2004],{},"'1'"," when checked and ",[354,2007,2008],{},"null"," when unchecked. ",[354,2011,402],{}," initialises ",[354,2014,1182],{}," from ",[354,2017,2018],{},"vars.checked"," (",[354,2021,2004],{}," or ",[354,2024,2008],{},"), so read the boolean state from ",[354,2027,2028],{},"!!field.value.value",". Always set the unchecked value to ",[354,2031,2008],{}," — Symfony's ",[354,2034,2035],{},"BooleanToStringTransformer"," maps ",[354,2038,2008],{}," → ",[354,2041,2042],{},"false","; an empty string ",[354,2045,2046],{},"''"," is treated as ",[354,2049,1727],{}," and suppresses ",[354,2052,2053],{},"NotBlank","\u002F",[354,2056,2057],{},"IsTrue"," constraint errors:",[451,2060,2062],{"className":453,"code":2061,"language":455,"meta":456,"style":456},"\u003Cscript setup lang=\"ts\">\nconst agree = useCwaFormInput(iriRef, 'form[agreeToTerms]')\nconst isChecked = computed({\n  get: () => !!agree.value.value,\n  set: (v: boolean) => {\n    agree.value.value = v ? '1' : null\n    agree.onInput()\n  },\n})\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003CUCheckbox\n    v-model=\"isChecked\"\n    :label=\"agree.vars.value?.label\"\n    @blur=\"agree.onBlur\"\n  \u002F>\n  \u003Cp v-if=\"agree.displayErrors.value\" class=\"text-red-500\">\n    {{ agree.errors.value[0] }}\n  \u003C\u002Fp>\n\u003C\u002Ftemplate>\n",[354,2063,2064,2084,2108,2125,2155,2182,2216,2228,2233,2240,2248,2252,2260,2267,2281,2295,2309,2313,2344,2349,2357],{"__ignoreMap":456},[460,2065,2066,2068,2070,2072,2074,2076,2078,2080,2082],{"class":462,"line":463},[460,2067,467],{"class":466},[460,2069,471],{"class":470},[460,2071,475],{"class":474},[460,2073,478],{"class":474},[460,2075,481],{"class":466},[460,2077,485],{"class":484},[460,2079,489],{"class":488},[460,2081,485],{"class":484},[460,2083,494],{"class":466},[460,2085,2086,2088,2091,2093,2095,2097,2099,2101,2104,2106],{"class":462,"line":497},[460,2087,597],{"class":596},[460,2089,2090],{"class":600}," agree",[460,2092,605],{"class":604},[460,2094,572],{"class":608},[460,2096,717],{"class":507},[460,2098,511],{"class":466},[460,2100,523],{"class":484},[460,2102,2103],{"class":488},"form[agreeToTerms]",[460,2105,646],{"class":484},[460,2107,649],{"class":507},[460,2109,2110,2112,2115,2117,2119,2122],{"class":462,"line":531},[460,2111,597],{"class":596},[460,2113,2114],{"class":600}," isChecked",[460,2116,605],{"class":604},[460,2118,508],{"class":608},[460,2120,2121],{"class":507},"(",[460,2123,2124],{"class":466},"{\n",[460,2126,2127,2130,2132,2135,2138,2141,2144,2146,2148,2150,2152],{"class":462,"line":555},[460,2128,2129],{"class":608},"  get",[460,2131,1236],{"class":466},[460,2133,2134],{"class":466}," ()",[460,2136,2137],{"class":596}," =>",[460,2139,2140],{"class":604}," !!",[460,2142,2143],{"class":507},"agree",[460,2145,1175],{"class":466},[460,2147,1182],{"class":507},[460,2149,1175],{"class":466},[460,2151,1182],{"class":507},[460,2153,2154],{"class":466},",\n",[460,2156,2157,2160,2162,2164,2168,2170,2174,2177,2179],{"class":462,"line":586},[460,2158,2159],{"class":608},"  set",[460,2161,1236],{"class":466},[460,2163,2019],{"class":466},[460,2165,2167],{"class":2166},"sNTR6","v",[460,2169,1236],{"class":604},[460,2171,2173],{"class":2172},"sbW4m"," boolean",[460,2175,2176],{"class":466},")",[460,2178,2137],{"class":596},[460,2180,2181],{"class":466}," {\n",[460,2183,2184,2187,2189,2191,2193,2195,2197,2200,2203,2205,2208,2210,2213],{"class":462,"line":593},[460,2185,2186],{"class":507},"    agree",[460,2188,1175],{"class":466},[460,2190,1182],{"class":507},[460,2192,1175],{"class":466},[460,2194,1182],{"class":507},[460,2196,605],{"class":604},[460,2198,2199],{"class":507}," v",[460,2201,2202],{"class":604}," ?",[460,2204,523],{"class":484},[460,2206,2207],{"class":488},"1",[460,2209,646],{"class":484},[460,2211,2212],{"class":604}," :",[460,2214,2215],{"class":1239}," null\n",[460,2217,2218,2220,2222,2225],{"class":462,"line":624},[460,2219,2186],{"class":507},[460,2221,1175],{"class":466},[460,2223,2224],{"class":608},"onInput",[460,2226,621],{"class":2227},"sDHlG",[460,2229,2230],{"class":462,"line":652},[460,2231,2232],{"class":466},"  },\n",[460,2234,2235,2238],{"class":462,"line":657},[460,2236,2237],{"class":466},"}",[460,2239,649],{"class":507},[460,2241,2242,2244,2246],{"class":462,"line":676},[460,2243,785],{"class":466},[460,2245,471],{"class":470},[460,2247,494],{"class":466},[460,2249,2250],{"class":462,"line":685},[460,2251,590],{"emptyLinePlaceholder":589},[460,2253,2254,2256,2258],{"class":462,"line":690},[460,2255,467],{"class":466},[460,2257,802],{"class":470},[460,2259,494],{"class":466},[460,2261,2262,2264],{"class":462,"line":705},[460,2263,810],{"class":466},[460,2265,2266],{"class":470},"UCheckbox\n",[460,2268,2269,2272,2274,2276,2279],{"class":462,"line":731},[460,2270,2271],{"class":474},"    v-model",[460,2273,481],{"class":466},[460,2275,485],{"class":484},[460,2277,2278],{"class":488},"isChecked",[460,2280,916],{"class":484},[460,2282,2283,2286,2288,2290,2293],{"class":462,"line":757},[460,2284,2285],{"class":474},"    :label",[460,2287,481],{"class":466},[460,2289,485],{"class":484},[460,2291,2292],{"class":488},"agree.vars.value?.label",[460,2294,916],{"class":484},[460,2296,2297,2300,2302,2304,2307],{"class":462,"line":782},[460,2298,2299],{"class":474},"    @blur",[460,2301,481],{"class":466},[460,2303,485],{"class":484},[460,2305,2306],{"class":488},"agree.onBlur",[460,2308,916],{"class":484},[460,2310,2311],{"class":462,"line":792},[460,2312,1298],{"class":466},[460,2314,2315,2317,2319,2321,2323,2325,2328,2330,2333,2335,2337,2340,2342],{"class":462,"line":797},[460,2316,810],{"class":466},[460,2318,350],{"class":470},[460,2320,851],{"class":474},[460,2322,481],{"class":466},[460,2324,485],{"class":484},[460,2326,2327],{"class":488},"agree.displayErrors.value",[460,2329,485],{"class":484},[460,2331,2332],{"class":474}," class",[460,2334,481],{"class":466},[460,2336,485],{"class":484},[460,2338,2339],{"class":488},"text-red-500",[460,2341,485],{"class":484},[460,2343,494],{"class":466},[460,2345,2346],{"class":462,"line":807},[460,2347,2348],{"class":507},"    {{ agree.errors.value[0] }}\n",[460,2350,2351,2353,2355],{"class":462,"line":830},[460,2352,1102],{"class":466},[460,2354,350],{"class":470},[460,2356,494],{"class":466},[460,2358,2359,2361,2363],{"class":462,"line":837},[460,2360,785],{"class":466},[460,2362,802],{"class":470},[460,2364,494],{"class":466},[1137,2366,2368],{"id":2367},"repeatedtype-password-confirmation","RepeatedType (password + confirmation)",[451,2370,2372],{"className":453,"code":2371,"language":455,"meta":456,"style":456},"\u003Cscript setup lang=\"ts\">\nconst password = useCwaFormRepeated(iriRef, 'registration[plainPassword]')\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003CUFormField\n    :label=\"password.first.vars.value?.label || 'New password'\"\n    :error=\"password.first.displayErrors.value ? password.first.errors.value[0] : undefined\"\n  >\n    \u003CUInput\n      v-model=\"password.first.value.value\"\n      type=\"password\"\n      autocomplete=\"new-password\"\n      @blur=\"password.first.onBlur\"\n      @input=\"password.first.onInput\"\n    \u002F>\n  \u003C\u002FUFormField>\n\n  \u003CUFormField\n    :label=\"password.second.vars.value?.label || 'Confirm password'\"\n    :error=\"password.second.displayErrors.value ? password.second.errors.value[0] : undefined\"\n  >\n    \u003CUInput\n      v-model=\"password.second.value.value\"\n      type=\"password\"\n      autocomplete=\"new-password\"\n      @blur=\"password.second.onBlur\"\n      @input=\"password.second.onInput\"\n    \u002F>\n  \u003C\u002FUFormField>\n\u003C\u002Ftemplate>\n",[354,2373,2374,2394,2419,2427,2431,2439,2445,2458,2472,2477,2484,2498,2512,2526,2540,2554,2558,2566,2570,2576,2589,2602,2606,2612,2625,2637,2649,2662,2675,2679,2687],{"__ignoreMap":456},[460,2375,2376,2378,2380,2382,2384,2386,2388,2390,2392],{"class":462,"line":463},[460,2377,467],{"class":466},[460,2379,471],{"class":470},[460,2381,475],{"class":474},[460,2383,478],{"class":474},[460,2385,481],{"class":466},[460,2387,485],{"class":484},[460,2389,489],{"class":488},[460,2391,485],{"class":484},[460,2393,494],{"class":466},[460,2395,2396,2398,2401,2403,2406,2408,2410,2412,2415,2417],{"class":462,"line":497},[460,2397,597],{"class":596},[460,2399,2400],{"class":600}," password",[460,2402,605],{"class":604},[460,2404,2405],{"class":608}," useCwaFormRepeated",[460,2407,717],{"class":507},[460,2409,511],{"class":466},[460,2411,523],{"class":484},[460,2413,2414],{"class":488},"registration[plainPassword]",[460,2416,646],{"class":484},[460,2418,649],{"class":507},[460,2420,2421,2423,2425],{"class":462,"line":531},[460,2422,785],{"class":466},[460,2424,471],{"class":470},[460,2426,494],{"class":466},[460,2428,2429],{"class":462,"line":555},[460,2430,590],{"emptyLinePlaceholder":589},[460,2432,2433,2435,2437],{"class":462,"line":586},[460,2434,467],{"class":466},[460,2436,802],{"class":470},[460,2438,494],{"class":466},[460,2440,2441,2443],{"class":462,"line":593},[460,2442,810],{"class":466},[460,2444,1157],{"class":470},[460,2446,2447,2449,2451,2453,2456],{"class":462,"line":624},[460,2448,2285],{"class":474},[460,2450,481],{"class":466},[460,2452,485],{"class":484},[460,2454,2455],{"class":488},"password.first.vars.value?.label || 'New password'",[460,2457,916],{"class":484},[460,2459,2460,2463,2465,2467,2470],{"class":462,"line":652},[460,2461,2462],{"class":474},"    :error",[460,2464,481],{"class":466},[460,2466,485],{"class":484},[460,2468,2469],{"class":488},"password.first.displayErrors.value ? password.first.errors.value[0] : undefined",[460,2471,916],{"class":484},[460,2473,2474],{"class":462,"line":657},[460,2475,2476],{"class":466},"  >\n",[460,2478,2479,2481],{"class":462,"line":676},[460,2480,845],{"class":466},[460,2482,2483],{"class":470},"UInput\n",[460,2485,2486,2489,2491,2493,2496],{"class":462,"line":685},[460,2487,2488],{"class":474},"      v-model",[460,2490,481],{"class":466},[460,2492,485],{"class":484},[460,2494,2495],{"class":488},"password.first.value.value",[460,2497,916],{"class":484},[460,2499,2500,2503,2505,2507,2510],{"class":462,"line":690},[460,2501,2502],{"class":474},"      type",[460,2504,481],{"class":466},[460,2506,485],{"class":484},[460,2508,2509],{"class":488},"password",[460,2511,916],{"class":484},[460,2513,2514,2517,2519,2521,2524],{"class":462,"line":705},[460,2515,2516],{"class":474},"      autocomplete",[460,2518,481],{"class":466},[460,2520,485],{"class":484},[460,2522,2523],{"class":488},"new-password",[460,2525,916],{"class":484},[460,2527,2528,2531,2533,2535,2538],{"class":462,"line":731},[460,2529,2530],{"class":474},"      @blur",[460,2532,481],{"class":466},[460,2534,485],{"class":484},[460,2536,2537],{"class":488},"password.first.onBlur",[460,2539,916],{"class":484},[460,2541,2542,2545,2547,2549,2552],{"class":462,"line":757},[460,2543,2544],{"class":474},"      @input",[460,2546,481],{"class":466},[460,2548,485],{"class":484},[460,2550,2551],{"class":488},"password.first.onInput",[460,2553,916],{"class":484},[460,2555,2556],{"class":462,"line":782},[460,2557,965],{"class":466},[460,2559,2560,2562,2564],{"class":462,"line":792},[460,2561,1102],{"class":466},[460,2563,1305],{"class":470},[460,2565,494],{"class":466},[460,2567,2568],{"class":462,"line":797},[460,2569,590],{"emptyLinePlaceholder":589},[460,2571,2572,2574],{"class":462,"line":807},[460,2573,810],{"class":466},[460,2575,1157],{"class":470},[460,2577,2578,2580,2582,2584,2587],{"class":462,"line":830},[460,2579,2285],{"class":474},[460,2581,481],{"class":466},[460,2583,485],{"class":484},[460,2585,2586],{"class":488},"password.second.vars.value?.label || 'Confirm password'",[460,2588,916],{"class":484},[460,2590,2591,2593,2595,2597,2600],{"class":462,"line":837},[460,2592,2462],{"class":474},[460,2594,481],{"class":466},[460,2596,485],{"class":484},[460,2598,2599],{"class":488},"password.second.displayErrors.value ? password.second.errors.value[0] : undefined",[460,2601,916],{"class":484},[460,2603,2604],{"class":462,"line":842},[460,2605,2476],{"class":466},[460,2607,2608,2610],{"class":462,"line":890},[460,2609,845],{"class":466},[460,2611,2483],{"class":470},[460,2613,2614,2616,2618,2620,2623],{"class":462,"line":895},[460,2615,2488],{"class":474},[460,2617,481],{"class":466},[460,2619,485],{"class":484},[460,2621,2622],{"class":488},"password.second.value.value",[460,2624,916],{"class":484},[460,2626,2627,2629,2631,2633,2635],{"class":462,"line":903},[460,2628,2502],{"class":474},[460,2630,481],{"class":466},[460,2632,485],{"class":484},[460,2634,2509],{"class":488},[460,2636,916],{"class":484},[460,2638,2639,2641,2643,2645,2647],{"class":462,"line":919},[460,2640,2516],{"class":474},[460,2642,481],{"class":466},[460,2644,485],{"class":484},[460,2646,2523],{"class":488},[460,2648,916],{"class":484},[460,2650,2651,2653,2655,2657,2660],{"class":462,"line":934},[460,2652,2530],{"class":474},[460,2654,481],{"class":466},[460,2656,485],{"class":484},[460,2658,2659],{"class":488},"password.second.onBlur",[460,2661,916],{"class":484},[460,2663,2664,2666,2668,2670,2673],{"class":462,"line":948},[460,2665,2544],{"class":474},[460,2667,481],{"class":466},[460,2669,485],{"class":484},[460,2671,2672],{"class":488},"password.second.onInput",[460,2674,916],{"class":484},[460,2676,2677],{"class":462,"line":962},[460,2678,965],{"class":466},[460,2680,2681,2683,2685],{"class":462,"line":968},[460,2682,1102],{"class":466},[460,2684,1305],{"class":470},[460,2686,494],{"class":466},[460,2688,2689,2691,2693],{"class":462,"line":975},[460,2690,785],{"class":466},[460,2692,802],{"class":470},[460,2694,494],{"class":466},[350,2696,2697],{},"Each side validates with the sibling's current value so the API can check both entries match.",[1137,2699,2701],{"id":2700},"collectiontype","CollectionType",[350,2703,2704,2705,2707,2708,2710],{},"Use ",[354,2706,426],{}," in the parent and ",[354,2709,402],{}," in a child component per entry. The child component's lifecycle automatically registers and unregisters field values.",[451,2712,2714],{"className":453,"code":2713,"language":455,"meta":456,"style":456},"\u003C!-- Parent component -->\n\u003Cscript setup lang=\"ts\">\nconst tags = useCwaFormCollection(iriRef, 'example_form[tags]')\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003CTagEntry\n    v-for=\"entry in tags.entries.value\"\n    :key=\"entry\"\n    :iri=\"props.iri\"\n    :entry-full-name=\"entry\"\n    @remove=\"tags.removeEntry(entry)\"\n  \u002F>\n  \u003Cp v-if=\"tags.vars.value?.errors?.[0]\" class=\"text-red-500\">\n    {{ tags.vars.value.errors[0] }}\n  \u003C\u002Fp>\n  \u003CUButton\n    v-if=\"tags.vars.value?.allow_add\"\n    variant=\"soft\"\n    @click.prevent=\"tags.addEntry()\"\n  >\n    Add Tag\n  \u003C\u002FUButton>\n\u003C\u002Ftemplate>\n",[354,2715,2716,2721,2741,2765,2773,2777,2785,2792,2806,2820,2834,2847,2861,2865,2894,2899,2907,2914,2928,2942,2956,2960,2965,2973],{"__ignoreMap":456},[460,2717,2718],{"class":462,"line":463},[460,2719,2720],{"class":833},"\u003C!-- Parent component -->\n",[460,2722,2723,2725,2727,2729,2731,2733,2735,2737,2739],{"class":462,"line":497},[460,2724,467],{"class":466},[460,2726,471],{"class":470},[460,2728,475],{"class":474},[460,2730,478],{"class":474},[460,2732,481],{"class":466},[460,2734,485],{"class":484},[460,2736,489],{"class":488},[460,2738,485],{"class":484},[460,2740,494],{"class":466},[460,2742,2743,2745,2747,2749,2752,2754,2756,2758,2761,2763],{"class":462,"line":531},[460,2744,597],{"class":596},[460,2746,1923],{"class":600},[460,2748,605],{"class":604},[460,2750,2751],{"class":608}," useCwaFormCollection",[460,2753,717],{"class":507},[460,2755,511],{"class":466},[460,2757,523],{"class":484},[460,2759,2760],{"class":488},"example_form[tags]",[460,2762,646],{"class":484},[460,2764,649],{"class":507},[460,2766,2767,2769,2771],{"class":462,"line":555},[460,2768,785],{"class":466},[460,2770,471],{"class":470},[460,2772,494],{"class":466},[460,2774,2775],{"class":462,"line":586},[460,2776,590],{"emptyLinePlaceholder":589},[460,2778,2779,2781,2783],{"class":462,"line":593},[460,2780,467],{"class":466},[460,2782,802],{"class":470},[460,2784,494],{"class":466},[460,2786,2787,2789],{"class":462,"line":624},[460,2788,810],{"class":466},[460,2790,2791],{"class":470},"TagEntry\n",[460,2793,2794,2797,2799,2801,2804],{"class":462,"line":652},[460,2795,2796],{"class":474},"    v-for",[460,2798,481],{"class":466},[460,2800,485],{"class":484},[460,2802,2803],{"class":488},"entry in tags.entries.value",[460,2805,916],{"class":484},[460,2807,2808,2811,2813,2815,2818],{"class":462,"line":657},[460,2809,2810],{"class":474},"    :key",[460,2812,481],{"class":466},[460,2814,485],{"class":484},[460,2816,2817],{"class":488},"entry",[460,2819,916],{"class":484},[460,2821,2822,2825,2827,2829,2832],{"class":462,"line":676},[460,2823,2824],{"class":474},"    :iri",[460,2826,481],{"class":466},[460,2828,485],{"class":484},[460,2830,2831],{"class":488},"props.iri",[460,2833,916],{"class":484},[460,2835,2836,2839,2841,2843,2845],{"class":462,"line":685},[460,2837,2838],{"class":474},"    :entry-full-name",[460,2840,481],{"class":466},[460,2842,485],{"class":484},[460,2844,2817],{"class":488},[460,2846,916],{"class":484},[460,2848,2849,2852,2854,2856,2859],{"class":462,"line":690},[460,2850,2851],{"class":474},"    @remove",[460,2853,481],{"class":466},[460,2855,485],{"class":484},[460,2857,2858],{"class":488},"tags.removeEntry(entry)",[460,2860,916],{"class":484},[460,2862,2863],{"class":462,"line":705},[460,2864,1298],{"class":466},[460,2866,2867,2869,2871,2873,2875,2877,2880,2882,2884,2886,2888,2890,2892],{"class":462,"line":731},[460,2868,810],{"class":466},[460,2870,350],{"class":470},[460,2872,851],{"class":474},[460,2874,481],{"class":466},[460,2876,485],{"class":484},[460,2878,2879],{"class":488},"tags.vars.value?.errors?.[0]",[460,2881,485],{"class":484},[460,2883,2332],{"class":474},[460,2885,481],{"class":466},[460,2887,485],{"class":484},[460,2889,2339],{"class":488},[460,2891,485],{"class":484},[460,2893,494],{"class":466},[460,2895,2896],{"class":462,"line":757},[460,2897,2898],{"class":507},"    {{ tags.vars.value.errors[0] }}\n",[460,2900,2901,2903,2905],{"class":462,"line":782},[460,2902,1102],{"class":466},[460,2904,350],{"class":470},[460,2906,494],{"class":466},[460,2908,2909,2911],{"class":462,"line":792},[460,2910,810],{"class":466},[460,2912,2913],{"class":470},"UButton\n",[460,2915,2916,2919,2921,2923,2926],{"class":462,"line":797},[460,2917,2918],{"class":474},"    v-if",[460,2920,481],{"class":466},[460,2922,485],{"class":484},[460,2924,2925],{"class":488},"tags.vars.value?.allow_add",[460,2927,916],{"class":484},[460,2929,2930,2933,2935,2937,2940],{"class":462,"line":807},[460,2931,2932],{"class":474},"    variant",[460,2934,481],{"class":466},[460,2936,485],{"class":484},[460,2938,2939],{"class":488},"soft",[460,2941,916],{"class":484},[460,2943,2944,2947,2949,2951,2954],{"class":462,"line":830},[460,2945,2946],{"class":474},"    @click.prevent",[460,2948,481],{"class":466},[460,2950,485],{"class":484},[460,2952,2953],{"class":488},"tags.addEntry()",[460,2955,916],{"class":484},[460,2957,2958],{"class":462,"line":837},[460,2959,2476],{"class":466},[460,2961,2962],{"class":462,"line":842},[460,2963,2964],{"class":507},"    Add Tag\n",[460,2966,2967,2969,2971],{"class":462,"line":890},[460,2968,1102],{"class":466},[460,2970,1044],{"class":470},[460,2972,494],{"class":466},[460,2974,2975,2977,2979],{"class":462,"line":895},[460,2976,785],{"class":466},[460,2978,802],{"class":470},[460,2980,494],{"class":466},[451,2982,2984],{"className":453,"code":2983,"language":455,"meta":456,"style":456},"\u003C!-- TagEntry.vue — child component -->\n\u003Cscript setup lang=\"ts\">\nconst props = defineProps\u003C{ iri: string | undefined, entryFullName: string }>()\ndefineEmits\u003C{ remove: [] }>()\nconst field = useCwaFormInput(toRef(props, 'iri'), props.entryFullName)\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003CUFormField :error=\"field.displayErrors.value ? field.errors.value[0] : undefined\">\n    \u003Cdiv class=\"flex items-center gap-2\">\n      \u003CUInput v-model=\"field.value.value\" class=\"flex-1\" @blur=\"field.onBlur\" @input=\"field.onInput\" \u002F>\n      \u003CUButton color=\"error\" variant=\"soft\" @click=\"$emit('remove')\">Remove\u003C\u002FUButton>\n    \u003C\u002Fdiv>\n  \u003C\u002FUFormField>\n\u003C\u002Ftemplate>\n",[354,2985,2986,2991,3011,3052,3072,3109,3117,3121,3129,3149,3169,3226,3276,3284,3292],{"__ignoreMap":456},[460,2987,2988],{"class":462,"line":463},[460,2989,2990],{"class":833},"\u003C!-- TagEntry.vue — child component -->\n",[460,2992,2993,2995,2997,2999,3001,3003,3005,3007,3009],{"class":462,"line":497},[460,2994,467],{"class":466},[460,2996,471],{"class":470},[460,2998,475],{"class":474},[460,3000,478],{"class":474},[460,3002,481],{"class":466},[460,3004,485],{"class":484},[460,3006,489],{"class":488},[460,3008,485],{"class":484},[460,3010,494],{"class":466},[460,3012,3013,3015,3017,3019,3021,3024,3028,3030,3033,3036,3038,3040,3043,3045,3047,3050],{"class":462,"line":531},[460,3014,597],{"class":596},[460,3016,601],{"class":600},[460,3018,605],{"class":604},[460,3020,609],{"class":608},[460,3022,3023],{"class":466},"\u003C{",[460,3025,3027],{"class":3026},"ssFBz"," iri",[460,3029,1236],{"class":604},[460,3031,3032],{"class":2172}," string",[460,3034,3035],{"class":604}," |",[460,3037,1240],{"class":2172},[460,3039,511],{"class":466},[460,3041,3042],{"class":3026}," entryFullName",[460,3044,1236],{"class":604},[460,3046,3032],{"class":2172},[460,3048,3049],{"class":466}," }>",[460,3051,621],{"class":507},[460,3053,3054,3057,3059,3062,3064,3067,3070],{"class":462,"line":555},[460,3055,3056],{"class":608},"defineEmits",[460,3058,3023],{"class":466},[460,3060,3061],{"class":3026}," remove",[460,3063,1236],{"class":604},[460,3065,3066],{"class":507}," [] ",[460,3068,3069],{"class":466},"}>",[460,3071,621],{"class":507},[460,3073,3074,3076,3079,3081,3083,3085,3088,3090,3092,3094,3096,3098,3100,3102,3104,3106],{"class":462,"line":586},[460,3075,597],{"class":596},[460,3077,3078],{"class":600}," field",[460,3080,605],{"class":604},[460,3082,572],{"class":608},[460,3084,2121],{"class":507},[460,3086,3087],{"class":608},"toRef",[460,3089,636],{"class":507},[460,3091,511],{"class":466},[460,3093,523],{"class":484},[460,3095,643],{"class":488},[460,3097,646],{"class":484},[460,3099,2176],{"class":507},[460,3101,511],{"class":466},[460,3103,601],{"class":507},[460,3105,1175],{"class":466},[460,3107,3108],{"class":507},"entryFullName)\n",[460,3110,3111,3113,3115],{"class":462,"line":593},[460,3112,785],{"class":466},[460,3114,471],{"class":470},[460,3116,494],{"class":466},[460,3118,3119],{"class":462,"line":624},[460,3120,590],{"emptyLinePlaceholder":589},[460,3122,3123,3125,3127],{"class":462,"line":652},[460,3124,467],{"class":466},[460,3126,802],{"class":470},[460,3128,494],{"class":466},[460,3130,3131,3133,3135,3138,3140,3142,3145,3147],{"class":462,"line":657},[460,3132,810],{"class":466},[460,3134,1305],{"class":470},[460,3136,3137],{"class":474}," :error",[460,3139,481],{"class":466},[460,3141,485],{"class":484},[460,3143,3144],{"class":488},"field.displayErrors.value ? field.errors.value[0] : undefined",[460,3146,485],{"class":484},[460,3148,494],{"class":466},[460,3150,3151,3153,3156,3158,3160,3162,3165,3167],{"class":462,"line":676},[460,3152,845],{"class":466},[460,3154,3155],{"class":470},"div",[460,3157,2332],{"class":474},[460,3159,481],{"class":466},[460,3161,485],{"class":484},[460,3163,3164],{"class":488},"flex items-center gap-2",[460,3166,485],{"class":484},[460,3168,494],{"class":466},[460,3170,3171,3174,3177,3180,3182,3184,3187,3189,3191,3193,3195,3198,3200,3203,3205,3207,3210,3212,3215,3217,3219,3222,3224],{"class":462,"line":685},[460,3172,3173],{"class":466},"      \u003C",[460,3175,3176],{"class":470},"UInput",[460,3178,3179],{"class":474}," v-model",[460,3181,481],{"class":466},[460,3183,485],{"class":484},[460,3185,3186],{"class":488},"field.value.value",[460,3188,485],{"class":484},[460,3190,2332],{"class":474},[460,3192,481],{"class":466},[460,3194,485],{"class":484},[460,3196,3197],{"class":488},"flex-1",[460,3199,485],{"class":484},[460,3201,3202],{"class":474}," @blur",[460,3204,481],{"class":466},[460,3206,485],{"class":484},[460,3208,3209],{"class":488},"field.onBlur",[460,3211,485],{"class":484},[460,3213,3214],{"class":474}," @input",[460,3216,481],{"class":466},[460,3218,485],{"class":484},[460,3220,3221],{"class":488},"field.onInput",[460,3223,485],{"class":484},[460,3225,887],{"class":466},[460,3227,3228,3230,3232,3234,3236,3238,3240,3242,3245,3247,3249,3251,3253,3256,3258,3260,3263,3265,3267,3270,3272,3274],{"class":462,"line":690},[460,3229,3173],{"class":466},[460,3231,1044],{"class":470},[460,3233,863],{"class":474},[460,3235,481],{"class":466},[460,3237,485],{"class":484},[460,3239,929],{"class":488},[460,3241,485],{"class":484},[460,3243,3244],{"class":474}," variant",[460,3246,481],{"class":466},[460,3248,485],{"class":484},[460,3250,2939],{"class":488},[460,3252,485],{"class":484},[460,3254,3255],{"class":474}," @click",[460,3257,481],{"class":466},[460,3259,485],{"class":484},[460,3261,3262],{"class":488},"$emit('remove')",[460,3264,485],{"class":484},[460,3266,618],{"class":466},[460,3268,3269],{"class":507},"Remove",[460,3271,785],{"class":466},[460,3273,1044],{"class":470},[460,3275,494],{"class":466},[460,3277,3278,3280,3282],{"class":462,"line":705},[460,3279,1092],{"class":466},[460,3281,3155],{"class":470},[460,3283,494],{"class":466},[460,3285,3286,3288,3290],{"class":462,"line":731},[460,3287,1102],{"class":466},[460,3289,1305],{"class":470},[460,3291,494],{"class":466},[460,3293,3294,3296,3298],{"class":462,"line":757},[460,3295,785],{"class":466},[460,3297,802],{"class":470},[460,3299,494],{"class":466},[350,3301,3302,3303,3306,3307,3310],{},"For compound entries (each entry has multiple sub-fields), call ",[354,3304,3305],{},"useCwaFormInput(iriRef, \\","${props.entryFullName}",[460,3308,3309],{},"subField","`)` for each sub-field within the child component.",[3312,3313,3315],"callout",{"icon":3314},"i-lucide-info",[350,3316,3317,3320,3321,3323],{},[354,3318,3319],{},"addEntry()"," clones the prototype entry from the API form view and pre-registers it in the form store, so ",[354,3322,356],{}," (label, errors, etc.) is available immediately in the child component without waiting for a validation or submission response.",[431,3325,1130],{"id":3326},"error-display-contract",[362,3328,3329,3342],{},[365,3330,3331],{},[368,3332,3333,3336,3339],{},[371,3334,3335],{},"Error source",[371,3337,3338],{},"What it covers",[371,3340,3341],{},"Where to render",[378,3343,3344,3360,3373],{},[368,3345,3346,3354,3357],{},[383,3347,3348,3351,3352,2176],{},[354,3349,3350],{},"useCwaFormInput.errors"," (gated by ",[354,3353,1206],{},[383,3355,3356],{},"Errors for that registered field",[383,3358,3359],{},"Next to the field in the template",[368,3361,3362,3367,3370],{},[383,3363,3364],{},[354,3365,3366],{},"useCwaForm.formErrors",[383,3368,3369],{},"Root-level form messages (CSRF, global constraints)",[383,3371,3372],{},"At the top of the form",[368,3374,3375,3380,3385],{},[383,3376,3377],{},[354,3378,3379],{},"useCwaForm.unregisteredFieldErrors",[383,3381,3382,3383],{},"Errors for API fields not bound by any ",[354,3384,402],{},[383,3386,3387,3388],{},"Fallback block near ",[354,3389,1121],{},[350,3391,3392,3394],{},[354,3393,1125],{}," exists to prevent silent error loss — if the API returns an error on a field your template didn't bind, it surfaces here instead of disappearing. The composable filters by registered keys, so there is no duplication with field-level errors.",[431,3396,3398,3401],{"id":3397},"full_name-convention",[354,3399,3400],{},"full_name"," convention",[350,3403,3404,3405,3408,3409,3411,3412,3414],{},"The ",[354,3406,3407],{},"fullName"," argument to ",[354,3410,402],{}," must match the ",[354,3413,3400],{}," value in the API's form view, which follows Symfony's bracket notation:",[451,3416,3421],{"className":3417,"code":3419,"language":3420},[3418],"language-text","form_name[fieldName]\nform_name[parent][child]\nform_name[collection][0][subField]\n","text",[354,3422,3419],{"__ignoreMap":456},[350,3424,3425,3426,3429,3430,1175],{},"The root key (no brackets, e.g. ",[354,3427,3428],{},"form_name",") is reserved for the form root and should not be passed to ",[354,3431,402],{},[350,3433,3434],{},"Two ChoiceType configurations require special attention:",[3436,3437,3438,3458],"ul",{},[3439,3440,3441,2019,3445,3448,3449,3451,3452,3454,3455,3457],"li",{},[3442,3443,3444],"strong",{},"Expanded radio groups",[354,3446,3447],{},"expanded: true, multiple: false",") — each radio button child shares the same ",[354,3450,3400],{}," as the parent field. Pass the parent ",[354,3453,3400],{}," to ",[354,3456,402],{},"; do not pass individual child names.",[3439,3459,3460,2019,3463,3466,3467,3454,3470,3472,3473,3476,3477,3479,3480,3483],{},[3442,3461,3462],{},"Non-expanded multi-select",[354,3464,3465],{},"expanded: false, multiple: true",") — Symfony appends ",[354,3468,3469],{},"[]",[354,3471,3400],{}," in the raw form view (e.g. ",[354,3474,3475],{},"example_form[interests][]","). The composable strips this suffix automatically, so pass the bare key without ",[354,3478,3469],{}," (e.g. ",[354,3481,3482],{},"example_form[interests]",").",[431,3485,3487],{"id":3486},"validation-internals","Validation internals",[350,3489,3490,3491,3494,3495,3498,3499,1122,3501,3504,3505,3507],{},"Per-field validation sends a PATCH to ",[354,3492,3493],{},"{iri}\u002Fsubmit"," and the response ",[354,3496,3497],{},"@id"," is normalised back to the Form IRI before saving to the store. This means ",[354,3500,1221],{},[354,3502,3503],{},"valid"," on each ",[354,3506,402],{}," update reactively after every keystroke without any extra wiring.",[350,3509,3510],{},"Each PATCH body includes all currently registered field values — not just the triggering field — so the API can validate the whole form and all sibling field errors update in a single response.",[350,3512,3513,3515,3516,3519],{},[354,3514,1206],{}," is suppressed while a validation PATCH is in-flight (",[354,3517,3518],{},"validating: true","). This prevents stale errors from flashing briefly between submitting a value and receiving the updated form view.",[3521,3522,3523],"style",{},"html pre.shiki code .sOvfz, html code.shiki .sOvfz{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#89DDFF}html pre.shiki code .s-h7I, html code.shiki .s-h7I{--shiki-light:#22863A;--shiki-default:#85E89D;--shiki-dark:#F07178}html pre.shiki code .sGtlX, html code.shiki .sGtlX{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#C792EA}html pre.shiki code .seSrl, html code.shiki .seSrl{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#89DDFF}html pre.shiki code .sLL54, html code.shiki .sLL54{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#C3E88D}html pre.shiki code .sm4w6, html code.shiki .sm4w6{--shiki-light:#D73A49;--shiki-light-font-style:inherit;--shiki-default:#F97583;--shiki-default-font-style:inherit;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sPB8G, html code.shiki .sPB8G{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#BABED8}html pre.shiki code .swB56, html code.shiki .swB56{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#C792EA}html pre.shiki code .sc2zw, html code.shiki .sc2zw{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#BABED8}html pre.shiki code .sVlFx, html code.shiki .sVlFx{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#89DDFF}html pre.shiki code .sKpYG, html code.shiki .sKpYG{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#82AAFF}html pre.shiki code .sRCss, html code.shiki .sRCss{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#FFCB6B}html pre.shiki code .sTBSN, html code.shiki .sTBSN{--shiki-light:#6A737D;--shiki-light-font-style:inherit;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .scSvc, html code.shiki .scSvc{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#F78C6C}html pre.shiki code .sBtbT, html code.shiki .sBtbT{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#89DDFF}html pre.shiki code .sNTR6, html code.shiki .sNTR6{--shiki-light:#E36209;--shiki-light-font-style:inherit;--shiki-default:#FFAB70;--shiki-default-font-style:inherit;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sbW4m, html code.shiki .sbW4m{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#FFCB6B}html pre.shiki code .sDHlG, html code.shiki .sDHlG{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#F07178}html pre.shiki code .ssFBz, html code.shiki .ssFBz{--shiki-light:#E36209;--shiki-default:#FFAB70;--shiki-dark:#F07178}",{"title":456,"searchDepth":497,"depth":497,"links":3525},[3526,3527,3537,3538,3540],{"id":433,"depth":497,"text":434},{"id":1134,"depth":497,"text":1135,"children":3528},[3529,3530,3531,3532,3533,3534,3535,3536],{"id":1139,"depth":531,"text":1140},{"id":1430,"depth":531,"text":1431},{"id":1587,"depth":531,"text":1588},{"id":1716,"depth":531,"text":1717},{"id":1859,"depth":531,"text":1860},{"id":1993,"depth":531,"text":1994},{"id":2367,"depth":531,"text":2368},{"id":2700,"depth":531,"text":2701},{"id":3326,"depth":497,"text":1130},{"id":3397,"depth":497,"text":3539},"full_name convention",{"id":3486,"depth":497,"text":3487},"Build form components for Symfony Form types using CWA's form composables — covering every field type with Nuxt UI examples.","md",{},{"title":301},{"title":344,"description":3541},"C-1Hntq790-bg_yW7wxpKCF0zYfTYG8hf-RgMYvHMLQ",[3548,3550],{"title":297,"path":298,"stem":299,"description":3549,"children":-1},"How Mercure broadcasts live content changes to all open browser sessions automatically when a component is published.",{"title":305,"path":306,"stem":307,"description":3551,"children":-1},"The auto-provided auth pages, $cwa.auth state, protecting routes, and building a custom registration flow.",1782241282140]