[{"data":1,"prerenderedAt":1249},["ShallowReactive",2],{"navigation":3,"\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form":358,"\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-surround":1244},[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":1238,"extension":1239,"links":361,"meta":1240,"navigation":1241,"path":247,"seo":1242,"stem":248,"__hash__":1243},"docs\u002F5.nuxt-module\u002F6.composables\u002F1.component\u002F4.use-cwa-form.md","useCwaForm",null,{"type":363,"value":364,"toc":1230},"minimark",[365,383,445,450,488,492,588,593,599,667,675,679,682,731,740,744,1174,1178,1226],[366,367,368,371,372,376,377,382],"p",{},[369,370,360],"code",{}," manages the submission lifecycle for a ",[373,374,375],"a",{"href":114},"Form component",". It reads the current field values collected by ",[373,378,379],{"href":251},[369,380,381],{},"useCwaFormInput",", submits them to the API, and tracks success and error state reactively.",[384,385,390],"pre",{"className":386,"code":387,"language":388,"meta":389,"style":389},"language-ts shiki shiki-themes github-light github-dark material-theme-palenight","const { submit, submitting, success, formErrors, unregisteredFieldErrors } = useCwaForm(iri)\n","ts","",[369,391,392],{"__ignoreMap":389},[393,394,397,401,405,409,412,415,417,420,422,425,427,430,433,437,441],"span",{"class":395,"line":396},"line",1,[393,398,400],{"class":399},"swB56","const",[393,402,404],{"class":403},"sOvfz"," {",[393,406,408],{"class":407},"sc2zw"," submit",[393,410,411],{"class":403},",",[393,413,414],{"class":407}," submitting",[393,416,411],{"class":403},[393,418,419],{"class":407}," success",[393,421,411],{"class":403},[393,423,424],{"class":407}," formErrors",[393,426,411],{"class":403},[393,428,429],{"class":407}," unregisteredFieldErrors",[393,431,432],{"class":403}," }",[393,434,436],{"class":435},"sVlFx"," =",[393,438,440],{"class":439},"sKpYG"," useCwaForm",[393,442,444],{"class":443},"sPB8G","(iri)\n",[446,447,449],"h2",{"id":448},"parameters","Parameters",[451,452,453,469],"table",{},[454,455,456],"thead",{},[457,458,459,463,466],"tr",{},[460,461,462],"th",{},"Parameter",[460,464,465],{},"Type",[460,467,468],{},"Description",[470,471,472],"tbody",{},[457,473,474,480,485],{},[475,476,477],"td",{},[369,478,479],{},"iri",[475,481,482],{},[369,483,484],{},"Ref\u003Cstring | undefined>",[475,486,487],{},"IRI of the Form component resource",[446,489,491],{"id":490},"return-value","Return value",[451,493,494,505],{},[454,495,496],{},[457,497,498,501,503],{},[460,499,500],{},"Property",[460,502,465],{},[460,504,468],{},[470,506,507,522,540,556,571],{},[457,508,509,514,519],{},[475,510,511],{},[369,512,513],{},"submit",[475,515,516],{},[369,517,518],{},"() => Promise\u003Cvoid>",[475,520,521],{},"Submit the form — see below",[457,523,524,529,534],{},[475,525,526],{},[369,527,528],{},"submitting",[475,530,531],{},[369,532,533],{},"Ref\u003Cboolean>",[475,535,536,539],{},[369,537,538],{},"true"," while the submit request is in-flight",[457,541,542,547,551],{},[475,543,544],{},[369,545,546],{},"success",[475,548,549],{},[369,550,533],{},[475,552,553,555],{},[369,554,538],{}," after a successful submission",[457,557,558,563,568],{},[475,559,560],{},[369,561,562],{},"formErrors",[475,564,565],{},[369,566,567],{},"ComputedRef\u003Cstring[]>",[475,569,570],{},"Root form-level error messages from the API response",[457,572,573,578,582],{},[475,574,575],{},[369,576,577],{},"unregisteredFieldErrors",[475,579,580],{},[369,581,567],{},[475,583,584,585,587],{},"Errors from fields the API returned but no ",[369,586,381],{}," is bound to — prevents silent error loss",[446,589,590],{"id":513},[369,591,592],{},"submit()",[366,594,595,596,598],{},"Calling ",[369,597,592],{},":",[600,601,602,609,620,631,646],"ol",{},[603,604,605,606,608],"li",{},"Reads the current field values for this form from the shared store (populated by each ",[369,607,381],{}," field)",[603,610,611,612,615,616,619],{},"Reads ",[369,613,614],{},"action"," and ",[369,617,618],{},"method"," from the root form vars in the API response",[603,621,622,623,626,627,630],{},"POSTs or PATCHes to the submit endpoint with all field values using Symfony ",[369,624,625],{},"full_name"," keys (e.g. ",[369,628,629],{},"contact_form[name]",")",[603,632,633,634,637,638,641,642,645],{},"On ",[635,636,546],"strong",{}," — sets ",[369,639,640],{},"success = true"," and clears ",[369,643,644],{},"submitAttempted"," (hides errors in all fields)",[603,647,633,648,637,651,654,655,658,659,661,662,615,664,666],{},[635,649,650],{},"failure (422)",[369,652,653],{},"submitAttempted = true"," (triggers ",[369,656,657],{},"displayErrors"," in every ",[369,660,381],{}," for this form); ",[369,663,562],{},[369,665,577],{}," update automatically from the store",[366,668,669,671,672,674],{},[369,670,528],{}," is ",[369,673,538],{}," for the duration of the request.",[446,676,678],{"id":677},"error-display-contract","Error display contract",[366,680,681],{},"Three error sources cover every possible API error:",[451,683,684,694],{},[454,685,686],{},[457,687,688,691],{},[460,689,690],{},"Source",[460,692,693],{},"What it contains",[470,695,696,710,719],{},[457,697,698,707],{},[475,699,700,703,704],{},[369,701,702],{},"useCwaFormInput.displayErrors"," \u002F ",[369,705,706],{},"errors",[475,708,709],{},"Errors for that specific registered field",[457,711,712,716],{},[475,713,714],{},[369,715,562],{},[475,717,718],{},"Root-level form messages (e.g. CSRF, global validation)",[457,720,721,725],{},[475,722,723],{},[369,724,577],{},[475,726,727,728,730],{},"Errors for form fields the API returned but no ",[369,729,381],{}," bound",[366,732,733,734,736,737,739],{},"Always render ",[369,735,577],{}," alongside ",[369,738,562],{}," so API errors are never silently swallowed — the composable already excludes fields that are registered, so there is no duplication.",[446,741,743],{"id":742},"example","Example",[384,745,749],{"className":746,"code":747,"language":748,"meta":389,"style":389},"language-vue shiki shiki-themes github-light github-dark material-theme-palenight","\u003Cscript setup lang=\"ts\">\nconst props = defineProps\u003C{ iri: string }>()\nconst iriRef = toRef(props, 'iri')\n\nconst { resource } = useCwaResource(props)\nconst { submit, submitting, success, formErrors, unregisteredFieldErrors } = useCwaForm(iriRef)\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cform @submit.prevent=\"submit\">\n    \u003C!-- fields rendered by child components using useCwaFormInput -->\n\n    \u003Cp v-for=\"error in formErrors\" :key=\"error\" class=\"text-red-500\">{{ error }}\u003C\u002Fp>\n    \u003Cp v-for=\"error in unregisteredFieldErrors\" :key=\"error\" class=\"text-orange-500\">{{ error }}\u003C\u002Fp>\n\n    \u003Cbutton type=\"submit\" :disabled=\"submitting\">\n      {{ submitting ? 'Sending…' : 'Submit' }}\n    \u003C\u002Fbutton>\n\n    \u003Cp v-if=\"success\">Thank you — your message has been sent.\u003C\u002Fp>\n  \u003C\u002Fform>\n\u003C\u002Ftemplate>\n","vue",[369,750,751,782,814,843,850,870,904,914,919,929,951,958,963,1019,1068,1073,1105,1111,1121,1126,1155,1165],{"__ignoreMap":389},[393,752,753,756,760,764,767,770,774,777,779],{"class":395,"line":396},[393,754,755],{"class":403},"\u003C",[393,757,759],{"class":758},"s-h7I","script",[393,761,763],{"class":762},"sGtlX"," setup",[393,765,766],{"class":762}," lang",[393,768,769],{"class":403},"=",[393,771,773],{"class":772},"seSrl","\"",[393,775,388],{"class":776},"sLL54",[393,778,773],{"class":772},[393,780,781],{"class":403},">\n",[393,783,785,787,790,792,795,798,802,804,808,811],{"class":395,"line":784},2,[393,786,400],{"class":399},[393,788,789],{"class":407}," props",[393,791,436],{"class":435},[393,793,794],{"class":439}," defineProps",[393,796,797],{"class":403},"\u003C{",[393,799,801],{"class":800},"ssFBz"," iri",[393,803,598],{"class":435},[393,805,807],{"class":806},"sbW4m"," string",[393,809,810],{"class":403}," }>",[393,812,813],{"class":443},"()\n",[393,815,817,819,822,824,827,830,832,835,837,840],{"class":395,"line":816},3,[393,818,400],{"class":399},[393,820,821],{"class":407}," iriRef",[393,823,436],{"class":435},[393,825,826],{"class":439}," toRef",[393,828,829],{"class":443},"(props",[393,831,411],{"class":403},[393,833,834],{"class":772}," '",[393,836,479],{"class":776},[393,838,839],{"class":772},"'",[393,841,842],{"class":443},")\n",[393,844,846],{"class":395,"line":845},4,[393,847,849],{"emptyLinePlaceholder":848},true,"\n",[393,851,853,855,857,860,862,864,867],{"class":395,"line":852},5,[393,854,400],{"class":399},[393,856,404],{"class":403},[393,858,859],{"class":407}," resource",[393,861,432],{"class":403},[393,863,436],{"class":435},[393,865,866],{"class":439}," useCwaResource",[393,868,869],{"class":443},"(props)\n",[393,871,873,875,877,879,881,883,885,887,889,891,893,895,897,899,901],{"class":395,"line":872},6,[393,874,400],{"class":399},[393,876,404],{"class":403},[393,878,408],{"class":407},[393,880,411],{"class":403},[393,882,414],{"class":407},[393,884,411],{"class":403},[393,886,419],{"class":407},[393,888,411],{"class":403},[393,890,424],{"class":407},[393,892,411],{"class":403},[393,894,429],{"class":407},[393,896,432],{"class":403},[393,898,436],{"class":435},[393,900,440],{"class":439},[393,902,903],{"class":443},"(iriRef)\n",[393,905,907,910,912],{"class":395,"line":906},7,[393,908,909],{"class":403},"\u003C\u002F",[393,911,759],{"class":758},[393,913,781],{"class":403},[393,915,917],{"class":395,"line":916},8,[393,918,849],{"emptyLinePlaceholder":848},[393,920,922,924,927],{"class":395,"line":921},9,[393,923,755],{"class":403},[393,925,926],{"class":758},"template",[393,928,781],{"class":403},[393,930,932,935,938,941,943,945,947,949],{"class":395,"line":931},10,[393,933,934],{"class":403},"  \u003C",[393,936,937],{"class":758},"form",[393,939,940],{"class":762}," @submit.prevent",[393,942,769],{"class":403},[393,944,773],{"class":772},[393,946,513],{"class":776},[393,948,773],{"class":772},[393,950,781],{"class":403},[393,952,954],{"class":395,"line":953},11,[393,955,957],{"class":956},"sTBSN","    \u003C!-- fields rendered by child components using useCwaFormInput -->\n",[393,959,961],{"class":395,"line":960},12,[393,962,849],{"emptyLinePlaceholder":848},[393,964,966,969,971,974,976,978,981,983,986,988,990,993,995,998,1000,1002,1005,1007,1010,1013,1015,1017],{"class":395,"line":965},13,[393,967,968],{"class":403},"    \u003C",[393,970,366],{"class":758},[393,972,973],{"class":762}," v-for",[393,975,769],{"class":403},[393,977,773],{"class":772},[393,979,980],{"class":776},"error in formErrors",[393,982,773],{"class":772},[393,984,985],{"class":762}," :key",[393,987,769],{"class":403},[393,989,773],{"class":772},[393,991,992],{"class":776},"error",[393,994,773],{"class":772},[393,996,997],{"class":762}," class",[393,999,769],{"class":403},[393,1001,773],{"class":772},[393,1003,1004],{"class":776},"text-red-500",[393,1006,773],{"class":772},[393,1008,1009],{"class":403},">",[393,1011,1012],{"class":443},"{{ error }}",[393,1014,909],{"class":403},[393,1016,366],{"class":758},[393,1018,781],{"class":403},[393,1020,1022,1024,1026,1028,1030,1032,1035,1037,1039,1041,1043,1045,1047,1049,1051,1053,1056,1058,1060,1062,1064,1066],{"class":395,"line":1021},14,[393,1023,968],{"class":403},[393,1025,366],{"class":758},[393,1027,973],{"class":762},[393,1029,769],{"class":403},[393,1031,773],{"class":772},[393,1033,1034],{"class":776},"error in unregisteredFieldErrors",[393,1036,773],{"class":772},[393,1038,985],{"class":762},[393,1040,769],{"class":403},[393,1042,773],{"class":772},[393,1044,992],{"class":776},[393,1046,773],{"class":772},[393,1048,997],{"class":762},[393,1050,769],{"class":403},[393,1052,773],{"class":772},[393,1054,1055],{"class":776},"text-orange-500",[393,1057,773],{"class":772},[393,1059,1009],{"class":403},[393,1061,1012],{"class":443},[393,1063,909],{"class":403},[393,1065,366],{"class":758},[393,1067,781],{"class":403},[393,1069,1071],{"class":395,"line":1070},15,[393,1072,849],{"emptyLinePlaceholder":848},[393,1074,1076,1078,1081,1084,1086,1088,1090,1092,1095,1097,1099,1101,1103],{"class":395,"line":1075},16,[393,1077,968],{"class":403},[393,1079,1080],{"class":758},"button",[393,1082,1083],{"class":762}," type",[393,1085,769],{"class":403},[393,1087,773],{"class":772},[393,1089,513],{"class":776},[393,1091,773],{"class":772},[393,1093,1094],{"class":762}," :disabled",[393,1096,769],{"class":403},[393,1098,773],{"class":772},[393,1100,528],{"class":776},[393,1102,773],{"class":772},[393,1104,781],{"class":403},[393,1106,1108],{"class":395,"line":1107},17,[393,1109,1110],{"class":443},"      {{ submitting ? 'Sending…' : 'Submit' }}\n",[393,1112,1114,1117,1119],{"class":395,"line":1113},18,[393,1115,1116],{"class":403},"    \u003C\u002F",[393,1118,1080],{"class":758},[393,1120,781],{"class":403},[393,1122,1124],{"class":395,"line":1123},19,[393,1125,849],{"emptyLinePlaceholder":848},[393,1127,1129,1131,1133,1136,1138,1140,1142,1144,1146,1149,1151,1153],{"class":395,"line":1128},20,[393,1130,968],{"class":403},[393,1132,366],{"class":758},[393,1134,1135],{"class":762}," v-if",[393,1137,769],{"class":403},[393,1139,773],{"class":772},[393,1141,546],{"class":776},[393,1143,773],{"class":772},[393,1145,1009],{"class":403},[393,1147,1148],{"class":443},"Thank you — your message has been sent.",[393,1150,909],{"class":403},[393,1152,366],{"class":758},[393,1154,781],{"class":403},[393,1156,1158,1161,1163],{"class":395,"line":1157},21,[393,1159,1160],{"class":403},"  \u003C\u002F",[393,1162,937],{"class":758},[393,1164,781],{"class":403},[393,1166,1168,1170,1172],{"class":395,"line":1167},22,[393,1169,909],{"class":403},[393,1171,926],{"class":758},[393,1173,781],{"class":403},[446,1175,1177],{"id":1176},"notes","Notes",[1179,1180,1181,1190,1198,1219],"ul",{},[603,1182,1183,1185,1186,1189],{},[369,1184,562],{}," reads the root form's ",[369,1187,1188],{},"vars.errors"," from the store — it updates automatically on 422",[603,1191,1192,1194,1195,1197],{},[369,1193,577],{}," iterates all form field views in the store, skipping the root and any key registered via ",[369,1196,381],{},"; useful as a fallback block",[603,1199,1200,1201,1203,1204,1207,1208,1211,1212,1215,1216,1218],{},"The ",[369,1202,644],{}," flag is shared state in ",[369,1205,1206],{},"$cwa.forms"," keyed by IRI — no ",[369,1209,1210],{},"provide","\u002F",[369,1213,1214],{},"inject"," required; all ",[369,1217,381],{}," instances for the same form IRI respond to it automatically",[603,1220,1221,1222,1225],{},"See the ",[373,1223,1224],{"href":318},"Forms guide"," for full field-type examples",[1227,1228,1229],"style",{},"html pre.shiki code .swB56, html code.shiki .swB56{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#C792EA}html pre.shiki code .sOvfz, html code.shiki .sOvfz{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#89DDFF}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 .sPB8G, html code.shiki .sPB8G{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#BABED8}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 .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 .ssFBz, html code.shiki .ssFBz{--shiki-light:#E36209;--shiki-default:#FFAB70;--shiki-dark:#F07178}html pre.shiki code .sbW4m, html code.shiki .sbW4m{--shiki-light:#005CC5;--shiki-default:#79B8FF;--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}",{"title":389,"searchDepth":784,"depth":784,"links":1231},[1232,1233,1234,1235,1236,1237],{"id":448,"depth":784,"text":449},{"id":490,"depth":784,"text":491},{"id":513,"depth":784,"text":592},{"id":677,"depth":784,"text":678},{"id":742,"depth":784,"text":743},{"id":1176,"depth":784,"text":1177},"Handle form submission, track in-flight state, and read form-level errors from a CWA Form component resource.","md",{},{"title":246},{"title":360,"description":1238},"xfaeYpE5QZ9cSGto0F_JMkr0G2YAfmgRRB38y-ltJ5w",[1245,1247],{"title":242,"path":243,"stem":244,"description":1246,"children":-1},"Extends useCwaResource for components with file uploads — adds image URL, load state, and Imagine filter variants.",{"title":250,"path":251,"stem":252,"description":1248,"children":-1},"Bind a single Symfony form field to a reactive value, validate on input, and control when errors are displayed.",1782512898815]