[{"data":1,"prerenderedAt":1309},["ShallowReactive",2],{"navigation":3,"\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-input":342,"\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-input-surround":1304},[4,14,36,69,140,325],{"title":5,"path":6,"stem":7,"children":8},"Introduction","\u002Fgetting-started","1.getting-started\u002F1.index",[9,10],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation",{"title":15,"path":16,"stem":17,"children":18,"page":35},"Guides","\u002Fguides","2.guides",[19,23,27,31],{"title":20,"path":21,"stem":22},"Your First Layout","\u002Fguides\u002Fyour-first-layout","2.guides\u002F1.your-first-layout",{"title":24,"path":25,"stem":26},"Your First Page Template","\u002Fguides\u002Fyour-first-page-template","2.guides\u002F2.your-first-page-template",{"title":28,"path":29,"stem":30},"Your First Component","\u002Fguides\u002Fyour-first-component","2.guides\u002F3.your-first-component",{"title":32,"path":33,"stem":34},"Alternative UI Variants","\u002Fguides\u002Falternative-ui-variants","2.guides\u002F4.alternative-ui-variants",false,{"title":37,"path":38,"stem":39,"children":40,"page":35},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[41,45,49,53,57,61,65],{"title":42,"path":43,"stem":44},"How It All Works","\u002Fcore-concepts\u002Farchitecture","3.core-concepts\u002F1.architecture",{"title":46,"path":47,"stem":48},"The Data Model","\u002Fcore-concepts\u002Fthe-data-model","3.core-concepts\u002F2.the-data-model",{"title":50,"path":51,"stem":52},"Layouts & Pages","\u002Fcore-concepts\u002Flayouts-and-pages","3.core-concepts\u002F3.layouts-and-pages",{"title":54,"path":55,"stem":56},"Dynamic Pages","\u002Fcore-concepts\u002Fdynamic-pages","3.core-concepts\u002F4.dynamic-pages",{"title":58,"path":59,"stem":60},"Components","\u002Fcore-concepts\u002Fcomponents","3.core-concepts\u002F5.components",{"title":62,"path":63,"stem":64},"Draft & Publish Workflow","\u002Fcore-concepts\u002Fdraft-and-publish","3.core-concepts\u002F6.draft-and-publish",{"title":66,"path":67,"stem":68},"The Admin Panel","\u002Fcore-concepts\u002Fadmin-panel","3.core-concepts\u002F7.admin-panel",{"title":70,"path":71,"stem":72,"children":73,"page":35},"Api","\u002Fapi","4.api",[74,78,116,120,124,128,132,136],{"title":75,"path":76,"stem":77},"Bundle Setup","\u002Fapi\u002Fbundle-setup","4.api\u002F1.bundle-setup",{"title":58,"path":79,"stem":80,"children":81,"page":35},"\u002Fapi\u002Fcomponents","4.api\u002F2.components",[82,86,103],{"title":83,"path":84,"stem":85},"Creating Components","\u002Fapi\u002Fcomponents\u002Fcreating-components","4.api\u002F2.components\u002F1.creating-components",{"title":87,"path":88,"stem":89,"children":90,"page":35},"Annotations","\u002Fapi\u002Fcomponents\u002Fannotations","4.api\u002F2.components\u002F2.annotations",[91,95,99],{"title":92,"path":93,"stem":94},"Publishable","\u002Fapi\u002Fcomponents\u002Fannotations\u002Fpublishable","4.api\u002F2.components\u002F2.annotations\u002F1.publishable",{"title":96,"path":97,"stem":98},"Uploadable","\u002Fapi\u002Fcomponents\u002Fannotations\u002Fuploadable","4.api\u002F2.components\u002F2.annotations\u002F2.uploadable",{"title":100,"path":101,"stem":102},"Timestamped","\u002Fapi\u002Fcomponents\u002Fannotations\u002Ftimestamped","4.api\u002F2.components\u002F2.annotations\u002F3.timestamped",{"title":104,"path":105,"stem":106,"children":107,"page":35},"Built Ins","\u002Fapi\u002Fcomponents\u002Fbuilt-ins","4.api\u002F2.components\u002F3.built-ins",[108,112],{"title":109,"path":110,"stem":111},"Collection Component","\u002Fapi\u002Fcomponents\u002Fbuilt-ins\u002Fcollection-component","4.api\u002F2.components\u002F3.built-ins\u002F1.collection-component",{"title":113,"path":114,"stem":115},"Form Component","\u002Fapi\u002Fcomponents\u002Fbuilt-ins\u002Fform-component","4.api\u002F2.components\u002F3.built-ins\u002F2.form-component",{"title":117,"path":118,"stem":119},"Dynamic & Nested Pages","\u002Fapi\u002Fdynamic-pages","4.api\u002F3.dynamic-pages",{"title":121,"path":122,"stem":123},"Users & Security","\u002Fapi\u002Fusers-and-security","4.api\u002F4.users-and-security",{"title":125,"path":126,"stem":127},"Data Fixtures","\u002Fapi\u002Fdata-fixtures","4.api\u002F5.data-fixtures",{"title":129,"path":130,"stem":131},"Configuration Reference","\u002Fapi\u002Fconfiguration","4.api\u002F6.configuration",{"title":133,"path":134,"stem":135},"Console Commands","\u002Fapi\u002Fconsole-commands","4.api\u002F7.console-commands",{"title":137,"path":138,"stem":139},"Debugging & Profiler","\u002Fapi\u002Fdebugging","4.api\u002F8.debugging",{"title":141,"path":142,"stem":143,"children":144,"page":35},"Nuxt Module","\u002Fnuxt-module","5.nuxt-module",[145,149,162,178,203,207,279,304,308],{"title":146,"path":147,"stem":148},"Module Setup","\u002Fnuxt-module\u002Fmodule-setup","5.nuxt-module\u002F1.module-setup",{"title":150,"path":151,"stem":152,"children":153,"page":35},"Configuration","\u002Fnuxt-module\u002Fconfiguration","5.nuxt-module\u002F2.configuration",[154,158],{"title":155,"path":156,"stem":157},"Nuxt Config","\u002Fnuxt-module\u002Fconfiguration\u002Fnuxt-config","5.nuxt-module\u002F2.configuration\u002F1.nuxt-config",{"title":159,"path":160,"stem":161},"Site Config & SEO","\u002Fnuxt-module\u002Fconfiguration\u002Fsite-config-and-seo","5.nuxt-module\u002F2.configuration\u002F2.site-config-and-seo",{"title":163,"path":164,"stem":165,"children":166,"page":35},"Building Your Ui","\u002Fnuxt-module\u002Fbuilding-your-ui","5.nuxt-module\u002F3.building-your-ui",[167,171,175],{"title":168,"path":169,"stem":170},"Layouts","\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcreating-layouts","5.nuxt-module\u002F3.building-your-ui\u002F1.creating-layouts",{"title":172,"path":173,"stem":174},"Page Templates","\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcreating-page-templates","5.nuxt-module\u002F3.building-your-ui\u002F2.creating-page-templates",{"title":83,"path":176,"stem":177},"\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcreating-components","5.nuxt-module\u002F3.building-your-ui\u002F3.creating-components",{"title":179,"path":180,"stem":181,"children":182,"page":35},"Cwa Components","\u002Fnuxt-module\u002Fcwa-components","5.nuxt-module\u002F4.cwa-components",[183,187,191,195,199],{"title":184,"path":185,"stem":186},"\u003CCwaComponentGroup \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-component-group","5.nuxt-module\u002F4.cwa-components\u002F1.cwa-component-group",{"title":188,"path":189,"stem":190},"\u003CCwaPage \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-page","5.nuxt-module\u002F4.cwa-components\u002F2.cwa-page",{"title":192,"path":193,"stem":194},"\u003CCwaLink \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-link","5.nuxt-module\u002F4.cwa-components\u002F3.cwa-link",{"title":196,"path":197,"stem":198},"\u003CCwaImage \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-image","5.nuxt-module\u002F4.cwa-components\u002F4.cwa-image",{"title":200,"path":201,"stem":202},"\u003CCwaDefaultLayout \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-default-layout","5.nuxt-module\u002F4.cwa-components\u002F5.cwa-default-layout",{"title":204,"path":205,"stem":206},"The useCwa() API","\u002Fnuxt-module\u002Fcwa-api","5.nuxt-module\u002F5.cwa-api",{"title":208,"path":209,"stem":210,"children":211,"page":35},"Composables","\u002Fnuxt-module\u002Fcomposables","5.nuxt-module\u002F6.composables",[212,245,262],{"title":213,"path":214,"stem":215,"children":216,"page":35},"Component","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent","5.nuxt-module\u002F6.composables\u002F1.component",[217,221,225,229,233,237,241],{"title":218,"path":219,"stem":220},"Resource","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-resource","5.nuxt-module\u002F6.composables\u002F1.component\u002F1.use-cwa-resource",{"title":222,"path":223,"stem":224},"Collection Resource","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-collection-resource","5.nuxt-module\u002F6.composables\u002F1.component\u002F2.use-cwa-collection-resource",{"title":226,"path":227,"stem":228},"Image Resource","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-image-resource","5.nuxt-module\u002F6.composables\u002F1.component\u002F3.use-cwa-image-resource",{"title":230,"path":231,"stem":232},"Form","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form","5.nuxt-module\u002F6.composables\u002F1.component\u002F4.use-cwa-form",{"title":234,"path":235,"stem":236},"Form Input","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-input","5.nuxt-module\u002F6.composables\u002F1.component\u002F5.use-cwa-form-input",{"title":238,"path":239,"stem":240},"Form Repeated","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-repeated","5.nuxt-module\u002F6.composables\u002F1.component\u002F6.use-cwa-form-repeated",{"title":242,"path":243,"stem":244},"Form Collection","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-collection","5.nuxt-module\u002F6.composables\u002F1.component\u002F7.use-cwa-form-collection",{"title":246,"path":247,"stem":248,"children":249,"page":35},"Admin Manager","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager","5.nuxt-module\u002F6.composables\u002F2.admin-manager",[250,254,258],{"title":251,"path":252,"stem":253},"Manager Tab","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager\u002Fuse-cwa-resource-manager-tab","5.nuxt-module\u002F6.composables\u002F2.admin-manager\u002F1.use-cwa-resource-manager-tab",{"title":255,"path":256,"stem":257},"Resource Model","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager\u002Fuse-cwa-resource-model","5.nuxt-module\u002F6.composables\u002F2.admin-manager\u002F2.use-cwa-resource-model",{"title":259,"path":260,"stem":261},"Resource Upload","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager\u002Fuse-cwa-resource-upload","5.nuxt-module\u002F6.composables\u002F2.admin-manager\u002F3.use-cwa-resource-upload",{"title":263,"path":264,"stem":265,"children":266,"page":35},"Utilities","\u002Fnuxt-module\u002Fcomposables\u002Futilities","5.nuxt-module\u002F6.composables\u002F3.utilities",[267,271,275],{"title":268,"path":269,"stem":270},"Resource Endpoint","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-cwa-resource-endpoint","5.nuxt-module\u002F6.composables\u002F3.utilities\u002F1.use-cwa-resource-endpoint",{"title":272,"path":273,"stem":274},"Query Model","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-query-bound-model","5.nuxt-module\u002F6.composables\u002F3.utilities\u002F2.use-query-bound-model",{"title":276,"path":277,"stem":278},"Resource Route","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-cwa-resource-route","5.nuxt-module\u002F6.composables\u002F3.utilities\u002F3.use-cwa-resource-route",{"title":280,"path":281,"stem":282,"children":283,"page":35},"Component Helpers","\u002Fnuxt-module\u002Fcomponent-helpers","5.nuxt-module\u002F7.component-helpers",[284,288,292,296,300],{"title":285,"path":286,"stem":287},"Images & Media","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fimages-and-uploads","5.nuxt-module\u002F7.component-helpers\u002F1.images-and-uploads",{"title":289,"path":290,"stem":291},"Collections & Pagination","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fcollections-and-pagination","5.nuxt-module\u002F7.component-helpers\u002F2.collections-and-pagination",{"title":293,"path":294,"stem":295},"HTML Content","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fhtml-content","5.nuxt-module\u002F7.component-helpers\u002F3.html-content",{"title":297,"path":298,"stem":299},"Real-Time Updates","\u002Fnuxt-module\u002Fcomponent-helpers\u002Freal-time-updates","5.nuxt-module\u002F7.component-helpers\u002F4.real-time-updates",{"title":301,"path":302,"stem":303},"Forms","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fforms","5.nuxt-module\u002F7.component-helpers\u002F5.forms",{"title":305,"path":306,"stem":307},"Authentication","\u002Fnuxt-module\u002Fauthentication","5.nuxt-module\u002F8.authentication",{"title":309,"path":310,"stem":311,"children":312,"page":35},"Cwa Layer","\u002Fnuxt-module\u002Fcwa-layer","5.nuxt-module\u002F9.cwa-layer",[313,317,321],{"title":314,"path":315,"stem":316},"Overview","\u002Fnuxt-module\u002Fcwa-layer\u002Foverview","5.nuxt-module\u002F9.cwa-layer\u002F1.overview",{"title":318,"path":319,"stem":320},"Auth Pages","\u002Fnuxt-module\u002Fcwa-layer\u002Fauth-pages","5.nuxt-module\u002F9.cwa-layer\u002F2.auth-pages",{"title":322,"path":323,"stem":324},"Admin Panel","\u002Fnuxt-module\u002Fcwa-layer\u002Fadmin-panel","5.nuxt-module\u002F9.cwa-layer\u002F3.admin-panel",{"title":326,"path":327,"stem":328,"children":329,"page":35},"Deployment","\u002Fdeployment","6.deployment",[330,334,338],{"title":331,"path":332,"stem":333},"Docker","\u002Fdeployment\u002Fdocker","6.deployment\u002F1.docker",{"title":335,"path":336,"stem":337},"Kubernetes & Helm","\u002Fdeployment\u002Fkubernetes","6.deployment\u002F2.kubernetes",{"title":339,"path":340,"stem":341},"CI\u002FCD","\u002Fdeployment\u002Fci-cd","6.deployment\u002F3.ci-cd",{"id":343,"title":344,"badge":345,"body":348,"description":1297,"extension":1298,"links":1299,"meta":1300,"navigation":1301,"path":235,"seo":1302,"stem":236,"__hash__":1303},"docs\u002F5.nuxt-module\u002F6.composables\u002F1.component\u002F5.use-cwa-form-input.md","useCwaFormInput",{"label":346,"color":347},"Draft","amber",{"type":349,"value":350,"toc":1286},"minimark",[351,363,445,450,511,515,689,694,697,720,723,728,742,750,756,774,778,807,811,1252,1256,1282],[352,353,354,357,358,362],"p",{},[355,356,344],"code",{}," binds a single field inside a ",[359,360,361],"a",{"href":114},"Form component"," to a reactive value and handles per-field validation, error display, and value synchronisation with the shared form store.",[364,365,370],"pre",{"className":366,"code":367,"language":368,"meta":369,"style":369},"language-ts shiki shiki-themes github-light github-dark material-theme-palenight","const { value, vars, errors, valid, displayErrors, onBlur, validate, onInput } = useCwaFormInput(iri, fullName)\n","ts","",[355,371,372],{"__ignoreMap":369},[373,374,377,381,385,389,392,395,397,400,402,405,407,410,412,415,417,420,422,425,428,432,436,440,442],"span",{"class":375,"line":376},"line",1,[373,378,380],{"class":379},"swB56","const",[373,382,384],{"class":383},"sOvfz"," {",[373,386,388],{"class":387},"sc2zw"," value",[373,390,391],{"class":383},",",[373,393,394],{"class":387}," vars",[373,396,391],{"class":383},[373,398,399],{"class":387}," errors",[373,401,391],{"class":383},[373,403,404],{"class":387}," valid",[373,406,391],{"class":383},[373,408,409],{"class":387}," displayErrors",[373,411,391],{"class":383},[373,413,414],{"class":387}," onBlur",[373,416,391],{"class":383},[373,418,419],{"class":387}," validate",[373,421,391],{"class":383},[373,423,424],{"class":387}," onInput",[373,426,427],{"class":383}," }",[373,429,431],{"class":430},"sVlFx"," =",[373,433,435],{"class":434},"sKpYG"," useCwaFormInput",[373,437,439],{"class":438},"sPB8G","(iri",[373,441,391],{"class":383},[373,443,444],{"class":438}," fullName)\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,488],"tbody",{},[457,473,474,480,485],{},[475,476,477],"td",{},[355,478,479],{},"iri",[475,481,482],{},[355,483,484],{},"Ref\u003Cstring | undefined>",[475,486,487],{},"IRI of the Form component resource",[457,489,490,495,500],{},[475,491,492],{},[355,493,494],{},"fullName",[475,496,497],{},[355,498,499],{},"string",[475,501,502,503,506,507,510],{},"Symfony field ",[355,504,505],{},"full_name"," (e.g. ",[355,508,509],{},"contact_form[name]",")",[446,512,514],{"id":513},"return-value","Return value",[451,516,517,528],{},[454,518,519],{},[457,520,521,524,526],{},[460,522,523],{},"Property",[460,525,465],{},[460,527,468],{},[470,529,530,552,581,595,620,635,654,669],{},[457,531,532,537,542],{},[475,533,534],{},[355,535,536],{},"value",[475,538,539],{},[355,540,541],{},"Ref\u003Cany>",[475,543,544,545,548,549],{},"Reactive local value — bind to your ",[355,546,547],{},"\u003Cinput>"," with ",[355,550,551],{},"v-model",[457,553,554,559,564],{},[475,555,556],{},[355,557,558],{},"vars",[475,560,561],{},[355,562,563],{},"ComputedRef",[475,565,566,567,570,571,570,574,570,577,580],{},"Full field vars from the API (",[355,568,569],{},"label",", ",[355,572,573],{},"attr",[355,575,576],{},"errors",[355,578,579],{},"valid",", etc.)",[457,582,583,587,592],{},[475,584,585],{},[355,586,576],{},[475,588,589],{},[355,590,591],{},"ComputedRef\u003Cstring[]>",[475,593,594],{},"Field-level error messages from the API",[457,596,597,601,606],{},[475,598,599],{},[355,600,579],{},[475,602,603],{},[355,604,605],{},"ComputedRef\u003Cboolean | null>",[475,607,608,611,612,615,616,619],{},[355,609,610],{},"true"," = valid, ",[355,613,614],{},"false"," = invalid, ",[355,617,618],{},"null"," = not yet evaluated",[457,621,622,627,632],{},[475,623,624],{},[355,625,626],{},"displayErrors",[475,628,629],{},[355,630,631],{},"ComputedRef\u003Cboolean>",[475,633,634],{},"Whether errors should be shown — see below",[457,636,637,642,647],{},[475,638,639],{},[355,640,641],{},"onBlur",[475,643,644],{},[355,645,646],{},"() => void",[475,648,649,650,653],{},"Call on ",[355,651,652],{},"@blur"," to enable error display after the user leaves the field",[457,655,656,661,666],{},[475,657,658],{},[355,659,660],{},"validate",[475,662,663],{},[355,664,665],{},"(extraData?) => Promise\u003Cvoid>",[475,667,668],{},"Trigger PATCH validation immediately",[457,670,671,676,680],{},[475,672,673],{},[355,674,675],{},"onInput",[475,677,678],{},[355,679,646],{},[475,681,682,683,685,686],{},"Debounced (300 ms) wrapper around ",[355,684,660],{}," — call on ",[355,687,688],{},"@input",[446,690,692],{"id":691},"displayerrors",[355,693,626],{},[352,695,696],{},"Errors should be displayed when any of the following is true:",[698,699,700,707,710],"ul",{},[701,702,703,704,706],"li",{},"The user has blurred the field (",[355,705,641],{}," was called)",[701,708,709],{},"The field was previously valid and has since become invalid (regression)",[701,711,712,713,716,717,719],{},"The form has been submitted and failed (",[355,714,715],{},"isSubmitAttempted"," is ",[355,718,610],{}," for this IRI)",[352,721,722],{},"Bind it to a conditional wrapper around your error list so errors only surface at the right moment.",[446,724,725],{"id":660},[355,726,727],{},"validate()",[352,729,730,731,735,736,738,739,741],{},"For ",[732,733,734],"strong",{},"PATCH forms"," only: sends the current field value to the form's submit endpoint via PATCH so the API can validate it and return per-field errors. The store is updated automatically, and ",[355,737,576],{}," \u002F ",[355,740,579],{}," react accordingly.",[352,743,730,744,570,747,749],{},[732,745,746],{},"POST forms",[355,748,727],{}," is a no-op — validation only happens on full submission.",[446,751,753,754],{"id":752},"field-full_name","Field ",[355,755,505],{},[352,757,758,759,761,762,765,766,769,770,773],{},"Symfony serialises form fields using their ",[355,760,505],{},", which follows the pattern ",[355,763,764],{},"form_name[field_name]"," (or ",[355,767,768],{},"form_name[child][field_name]"," for nested fields). The value comes from ",[355,771,772],{},"vars.value.full_name"," in the form resource response.",[446,775,777],{"id":776},"value-lifecycle","Value lifecycle",[698,779,780,787,793,804],{},[701,781,782,783,786],{},"Initialised from ",[355,784,785],{},"vars.value"," (the API's current value for this field)",[701,788,789,790,792],{},"Resets to the API value when ",[355,791,479],{}," changes (e.g. navigating between resources)",[701,794,795,796,799,800,803],{},"Synced into ",[355,797,798],{},"$cwa.forms.fieldValues"," so ",[355,801,802],{},"useCwaForm.submit()"," can read all fields at once",[701,805,806],{},"Cleared from the store on component unmount",[446,808,810],{"id":809},"example","Example",[364,812,816],{"className":813,"code":814,"language":815,"meta":369,"style":369},"language-vue shiki shiki-themes github-light github-dark material-theme-palenight","\u003Cscript setup lang=\"ts\">\nconst props = defineProps\u003C{ iri: string; fullName: string }>()\nconst iriRef = toRef(props, 'iri')\n\nconst { value, vars, errors, displayErrors, onBlur, onInput } = useCwaFormInput(iriRef, props.fullName)\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cdiv>\n    \u003Clabel :for=\"props.fullName\">{{ vars?.label }}\u003C\u002Flabel>\n\n    \u003Cinput\n      :id=\"props.fullName\"\n      v-model=\"value\"\n      v-bind=\"vars?.attr\"\n      @blur=\"onBlur\"\n      @input=\"onInput\"\n    \u002F>\n\n    \u003Cul v-if=\"displayErrors && errors.length\">\n      \u003Cli v-for=\"error in errors\" :key=\"error\" class=\"text-red-500\">\n        {{ error }}\n      \u003C\u002Fli>\n    \u003C\u002Ful>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n","vue",[355,817,818,849,892,921,928,976,986,991,1001,1012,1044,1049,1057,1072,1086,1101,1115,1129,1135,1140,1161,1207,1213,1223,1233,1243],{"__ignoreMap":369},[373,819,820,823,827,831,834,837,841,844,846],{"class":375,"line":376},[373,821,822],{"class":383},"\u003C",[373,824,826],{"class":825},"s-h7I","script",[373,828,830],{"class":829},"sGtlX"," setup",[373,832,833],{"class":829}," lang",[373,835,836],{"class":383},"=",[373,838,840],{"class":839},"seSrl","\"",[373,842,368],{"class":843},"sLL54",[373,845,840],{"class":839},[373,847,848],{"class":383},">\n",[373,850,852,854,857,859,862,865,869,872,876,879,882,884,886,889],{"class":375,"line":851},2,[373,853,380],{"class":379},[373,855,856],{"class":387}," props",[373,858,431],{"class":430},[373,860,861],{"class":434}," defineProps",[373,863,864],{"class":383},"\u003C{",[373,866,868],{"class":867},"ssFBz"," iri",[373,870,871],{"class":430},":",[373,873,875],{"class":874},"sbW4m"," string",[373,877,878],{"class":383},";",[373,880,881],{"class":867}," fullName",[373,883,871],{"class":430},[373,885,875],{"class":874},[373,887,888],{"class":383}," }>",[373,890,891],{"class":438},"()\n",[373,893,895,897,900,902,905,908,910,913,915,918],{"class":375,"line":894},3,[373,896,380],{"class":379},[373,898,899],{"class":387}," iriRef",[373,901,431],{"class":430},[373,903,904],{"class":434}," toRef",[373,906,907],{"class":438},"(props",[373,909,391],{"class":383},[373,911,912],{"class":839}," '",[373,914,479],{"class":843},[373,916,917],{"class":839},"'",[373,919,920],{"class":438},")\n",[373,922,924],{"class":375,"line":923},4,[373,925,927],{"emptyLinePlaceholder":926},true,"\n",[373,929,931,933,935,937,939,941,943,945,947,949,951,953,955,957,959,961,963,966,968,970,973],{"class":375,"line":930},5,[373,932,380],{"class":379},[373,934,384],{"class":383},[373,936,388],{"class":387},[373,938,391],{"class":383},[373,940,394],{"class":387},[373,942,391],{"class":383},[373,944,399],{"class":387},[373,946,391],{"class":383},[373,948,409],{"class":387},[373,950,391],{"class":383},[373,952,414],{"class":387},[373,954,391],{"class":383},[373,956,424],{"class":387},[373,958,427],{"class":383},[373,960,431],{"class":430},[373,962,435],{"class":434},[373,964,965],{"class":438},"(iriRef",[373,967,391],{"class":383},[373,969,856],{"class":438},[373,971,972],{"class":383},".",[373,974,975],{"class":438},"fullName)\n",[373,977,979,982,984],{"class":375,"line":978},6,[373,980,981],{"class":383},"\u003C\u002F",[373,983,826],{"class":825},[373,985,848],{"class":383},[373,987,989],{"class":375,"line":988},7,[373,990,927],{"emptyLinePlaceholder":926},[373,992,994,996,999],{"class":375,"line":993},8,[373,995,822],{"class":383},[373,997,998],{"class":825},"template",[373,1000,848],{"class":383},[373,1002,1004,1007,1010],{"class":375,"line":1003},9,[373,1005,1006],{"class":383},"  \u003C",[373,1008,1009],{"class":825},"div",[373,1011,848],{"class":383},[373,1013,1015,1018,1020,1023,1025,1027,1030,1032,1035,1038,1040,1042],{"class":375,"line":1014},10,[373,1016,1017],{"class":383},"    \u003C",[373,1019,569],{"class":825},[373,1021,1022],{"class":829}," :for",[373,1024,836],{"class":383},[373,1026,840],{"class":839},[373,1028,1029],{"class":843},"props.fullName",[373,1031,840],{"class":839},[373,1033,1034],{"class":383},">",[373,1036,1037],{"class":438},"{{ vars?.label }}",[373,1039,981],{"class":383},[373,1041,569],{"class":825},[373,1043,848],{"class":383},[373,1045,1047],{"class":375,"line":1046},11,[373,1048,927],{"emptyLinePlaceholder":926},[373,1050,1052,1054],{"class":375,"line":1051},12,[373,1053,1017],{"class":383},[373,1055,1056],{"class":825},"input\n",[373,1058,1060,1063,1065,1067,1069],{"class":375,"line":1059},13,[373,1061,1062],{"class":829},"      :id",[373,1064,836],{"class":383},[373,1066,840],{"class":839},[373,1068,1029],{"class":843},[373,1070,1071],{"class":839},"\"\n",[373,1073,1075,1078,1080,1082,1084],{"class":375,"line":1074},14,[373,1076,1077],{"class":829},"      v-model",[373,1079,836],{"class":383},[373,1081,840],{"class":839},[373,1083,536],{"class":843},[373,1085,1071],{"class":839},[373,1087,1089,1092,1094,1096,1099],{"class":375,"line":1088},15,[373,1090,1091],{"class":829},"      v-bind",[373,1093,836],{"class":383},[373,1095,840],{"class":839},[373,1097,1098],{"class":843},"vars?.attr",[373,1100,1071],{"class":839},[373,1102,1104,1107,1109,1111,1113],{"class":375,"line":1103},16,[373,1105,1106],{"class":829},"      @blur",[373,1108,836],{"class":383},[373,1110,840],{"class":839},[373,1112,641],{"class":843},[373,1114,1071],{"class":839},[373,1116,1118,1121,1123,1125,1127],{"class":375,"line":1117},17,[373,1119,1120],{"class":829},"      @input",[373,1122,836],{"class":383},[373,1124,840],{"class":839},[373,1126,675],{"class":843},[373,1128,1071],{"class":839},[373,1130,1132],{"class":375,"line":1131},18,[373,1133,1134],{"class":383},"    \u002F>\n",[373,1136,1138],{"class":375,"line":1137},19,[373,1139,927],{"emptyLinePlaceholder":926},[373,1141,1143,1145,1147,1150,1152,1154,1157,1159],{"class":375,"line":1142},20,[373,1144,1017],{"class":383},[373,1146,698],{"class":825},[373,1148,1149],{"class":829}," v-if",[373,1151,836],{"class":383},[373,1153,840],{"class":839},[373,1155,1156],{"class":843},"displayErrors && errors.length",[373,1158,840],{"class":839},[373,1160,848],{"class":383},[373,1162,1164,1167,1169,1172,1174,1176,1179,1181,1184,1186,1188,1191,1193,1196,1198,1200,1203,1205],{"class":375,"line":1163},21,[373,1165,1166],{"class":383},"      \u003C",[373,1168,701],{"class":825},[373,1170,1171],{"class":829}," v-for",[373,1173,836],{"class":383},[373,1175,840],{"class":839},[373,1177,1178],{"class":843},"error in errors",[373,1180,840],{"class":839},[373,1182,1183],{"class":829}," :key",[373,1185,836],{"class":383},[373,1187,840],{"class":839},[373,1189,1190],{"class":843},"error",[373,1192,840],{"class":839},[373,1194,1195],{"class":829}," class",[373,1197,836],{"class":383},[373,1199,840],{"class":839},[373,1201,1202],{"class":843},"text-red-500",[373,1204,840],{"class":839},[373,1206,848],{"class":383},[373,1208,1210],{"class":375,"line":1209},22,[373,1211,1212],{"class":438},"        {{ error }}\n",[373,1214,1216,1219,1221],{"class":375,"line":1215},23,[373,1217,1218],{"class":383},"      \u003C\u002F",[373,1220,701],{"class":825},[373,1222,848],{"class":383},[373,1224,1226,1229,1231],{"class":375,"line":1225},24,[373,1227,1228],{"class":383},"    \u003C\u002F",[373,1230,698],{"class":825},[373,1232,848],{"class":383},[373,1234,1236,1239,1241],{"class":375,"line":1235},25,[373,1237,1238],{"class":383},"  \u003C\u002F",[373,1240,1009],{"class":825},[373,1242,848],{"class":383},[373,1244,1246,1248,1250],{"class":375,"line":1245},26,[373,1247,981],{"class":383},[373,1249,998],{"class":825},[373,1251,848],{"class":383},[446,1253,1255],{"id":1254},"notes","Notes",[698,1257,1258,1267,1275],{},[701,1259,1260,1261,1263,1264,1266],{},"Each field component should call ",[355,1262,344],{}," with its own ",[355,1265,494],{}," — the composable registers itself in the shared store and cleans up on unmount",[701,1268,1269,1271,1272,1274],{},[355,1270,675],{}," is a 300 ms debounce so rapid typing doesn't flood the API with validation requests; call ",[355,1273,727],{}," directly if you need immediate validation",[701,1276,1277,1278,1281],{},"Extra data can be passed to ",[355,1279,1280],{},"validate(extraData)"," — it is merged into the PATCH body, useful when validation of one field depends on another's current value",[1283,1284,1285],"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}",{"title":369,"searchDepth":851,"depth":851,"links":1287},[1288,1289,1290,1291,1292,1294,1295,1296],{"id":448,"depth":851,"text":449},{"id":513,"depth":851,"text":514},{"id":691,"depth":851,"text":626},{"id":660,"depth":851,"text":727},{"id":752,"depth":851,"text":1293},"Field full_name",{"id":776,"depth":851,"text":777},{"id":809,"depth":851,"text":810},{"id":1254,"depth":851,"text":1255},"Bind a single Symfony form field to a reactive value, validate on input, and control when errors are displayed.","md",null,{},{"title":234},{"title":344,"description":1297},"TP9zk8tbEFO6yRYFY4iSUHnyI3WsgQ5KlvKJdWLINik",[1305,1307],{"title":230,"path":231,"stem":232,"description":1306,"children":-1},"Handle form submission, track in-flight state, and read form-level errors from a CWA Form component resource.",{"title":238,"path":239,"stem":240,"description":1308,"children":-1},"Bind a Symfony RepeatedType field (e.g. new password + confirmation) with cross-field validation.",1782241283744]