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