[{"data":1,"prerenderedAt":2746},["ShallowReactive",2],{"navigation_docs":3,"-form-reference-vue-api":82,"-form-reference-vue-api-surround":2741},[4],{"title":5,"path":6,"stem":7,"children":8,"page":25},"Form","\u002Fform","1.getting-started",[9,26,58],{"title":10,"path":11,"stem":12,"children":13,"page":25},"Getting Started","\u002Fform\u002Fgetting-started","1.getting-started\u002F1.installation",[14,17,21],{"title":15,"path":16,"stem":12},"Installation","\u002Fform\u002Fgetting-started\u002Finstallation",{"title":18,"path":19,"stem":20},"Your first form","\u002Fform\u002Fgetting-started\u002Ffirst-form","1.getting-started\u002F2.first-form",{"title":22,"path":23,"stem":24},"Vue rendering","\u002Fform\u002Fgetting-started\u002Fvue-rendering","1.getting-started\u002F3.vue-rendering",false,{"title":27,"path":28,"stem":29,"children":30,"page":25},"Guide","\u002Fform\u002Fguide","2.guide\u002F1.forms-data-validation",[31,34,38,42,46,50,54],{"title":32,"path":33,"stem":29},"Forms, data, and validation","\u002Fform\u002Fguide\u002Fforms-data-validation",{"title":35,"path":36,"stem":37},"Fields and visibility","\u002Fform\u002Fguide\u002Ffields-visibility","2.guide\u002F2.fields-visibility",{"title":39,"path":40,"stem":41},"Renderers and composables","\u002Fform\u002Fguide\u002Frenderers-composables","2.guide\u002F3.renderers-composables",{"title":43,"path":44,"stem":45},"Collections and wizards","\u002Fform\u002Fguide\u002Fcollections-wizards","2.guide\u002F4.collections-wizards",{"title":47,"path":48,"stem":49},"Comboboxes","\u002Fform\u002Fguide\u002Fcomboboxes","2.guide\u002F5.comboboxes",{"title":51,"path":52,"stem":53},"Uploads","\u002Fform\u002Fguide\u002Fuploads","2.guide\u002F6.uploads",{"title":55,"path":56,"stem":57},"Composer and rich text","\u002Fform\u002Fguide\u002Fcomposer-rich-text","2.guide\u002F7.composer-rich-text",{"title":59,"path":60,"stem":61,"children":62,"page":25},"Reference","\u002Fform\u002Freference","3.reference\u002F1.fields",[63,66,70,74,78],{"title":64,"path":65,"stem":61},"Fields","\u002Fform\u002Freference\u002Ffields",{"title":67,"path":68,"stem":69},"PHP API","\u002Fform\u002Freference\u002Fphp-api","3.reference\u002F2.php-api",{"title":71,"path":72,"stem":73},"Vue API","\u002Fform\u002Freference\u002Fvue-api","3.reference\u002F3.vue-api",{"title":75,"path":76,"stem":77},"Configuration and commands","\u002Fform\u002Freference\u002Fconfiguration-commands","3.reference\u002F4.configuration-commands",{"title":79,"path":80,"stem":81},"Resource shape","\u002Fform\u002Freference\u002Fresource-shape","3.reference\u002F5.resource-shape",{"id":83,"title":71,"body":84,"description":2735,"extension":2736,"links":2737,"meta":2738,"navigation":186,"path":72,"seo":2739,"stem":73,"__hash__":2740},"docs\u002Fform\u002F3.reference\u002F3.vue-api.md",{"type":85,"value":86,"toc":2713},"minimark",[87,95,100,103,267,274,281,287,397,402,555,560,638,688,692,698,778,804,808,954,966,977,981,992,995,1027,1040,1044,1059,1066,1069,1083,1110,1113,1212,1217,1274,1331,1339,1406,1419,1424,1443,1447,1604,1626,1649,1659,1665,1668,1954,1960,2016,2022,2040,2054,2098,2102,2105,2132,2145,2151,2257,2274,2278,2287,2431,2477,2491,2495,2498,2628,2659,2663,2679,2686,2690,2694,2697,2709],[88,89,90,94],"p",{},[91,92,93],"code",{},"@inertify\u002Fform-vue"," is a headless Vue 3 package. It manages form behavior and returns state through composables or slots; it does not ship field markup or CSS.",[96,97,99],"h2",{"id":98},"public-entry-points","Public entry points",[88,101,102],{},"Only these package paths are public:",[104,105,110],"pre",{"className":106,"code":107,"language":108,"meta":109,"style":109},"language-ts shiki shiki-themes material-theme-lighter catppuccin-mocha catppuccin-mocha","import {\n  Form,\n  createFormRenderer,\n  useForm,\n  type FormResource,\n} from '@inertify\u002Fform-vue'\n\nimport {\n  FormProvider,\n  FormWizard,\n} from '@inertify\u002Fform-vue\u002Fcomponents'\n\nimport {\n  useFormCombobox,\n  useFormUploads,\n} from '@inertify\u002Fform-vue\u002Fcomposables'\n","ts","",[91,111,112,125,135,143,151,162,181,188,195,203,211,225,230,237,245,253],{"__ignoreMap":109},[113,114,117,121],"span",{"class":115,"line":116},"line",1,[113,118,120],{"class":119},"su_vF","import",[113,122,124],{"class":123},"sOG8g"," {\n",[113,126,128,132],{"class":115,"line":127},2,[113,129,131],{"class":130},"svMjs","  Form",[113,133,134],{"class":123},",\n",[113,136,138,141],{"class":115,"line":137},3,[113,139,140],{"class":130},"  createFormRenderer",[113,142,134],{"class":123},[113,144,146,149],{"class":115,"line":145},4,[113,147,148],{"class":130},"  useForm",[113,150,134],{"class":123},[113,152,154,157,160],{"class":115,"line":153},5,[113,155,156],{"class":119},"  type",[113,158,159],{"class":130}," FormResource",[113,161,134],{"class":123},[113,163,165,168,171,175,178],{"class":115,"line":164},6,[113,166,167],{"class":123},"}",[113,169,170],{"class":119}," from",[113,172,174],{"class":173},"sQGZM"," '",[113,176,93],{"class":177},"s2lAL",[113,179,180],{"class":173},"'\n",[113,182,184],{"class":115,"line":183},7,[113,185,187],{"emptyLinePlaceholder":186},true,"\n",[113,189,191,193],{"class":115,"line":190},8,[113,192,120],{"class":119},[113,194,124],{"class":123},[113,196,198,201],{"class":115,"line":197},9,[113,199,200],{"class":130},"  FormProvider",[113,202,134],{"class":123},[113,204,206,209],{"class":115,"line":205},10,[113,207,208],{"class":130},"  FormWizard",[113,210,134],{"class":123},[113,212,214,216,218,220,223],{"class":115,"line":213},11,[113,215,167],{"class":123},[113,217,170],{"class":119},[113,219,174],{"class":173},[113,221,222],{"class":177},"@inertify\u002Fform-vue\u002Fcomponents",[113,224,180],{"class":173},[113,226,228],{"class":115,"line":227},12,[113,229,187],{"emptyLinePlaceholder":186},[113,231,233,235],{"class":115,"line":232},13,[113,234,120],{"class":119},[113,236,124],{"class":123},[113,238,240,243],{"class":115,"line":239},14,[113,241,242],{"class":130},"  useFormCombobox",[113,244,134],{"class":123},[113,246,248,251],{"class":115,"line":247},15,[113,249,250],{"class":130},"  useFormUploads",[113,252,134],{"class":123},[113,254,256,258,260,262,265],{"class":115,"line":255},16,[113,257,167],{"class":123},[113,259,170],{"class":119},[113,261,174],{"class":173},[113,263,264],{"class":177},"@inertify\u002Fform-vue\u002Fcomposables",[113,266,180],{"class":173},[88,268,269,270,273],{},"The package also exports ",[91,271,272],{},".\u002Fpackage.json",". Do not import source files or build output below these entry points; those modules are implementation details and may change without notice.",[88,275,276,277,280],{},"The package provides ESM, CommonJS, and TypeScript declaration builds. It requires Vue 3.5 or newer and ",[91,278,279],{},"@inertiajs\u002Fvue3"," 3.6 or newer.",[96,282,284],{"id":283},"useform",[91,285,286],{},"useForm()",[104,288,290],{"className":106,"code":289,"language":108,"meta":109,"style":109},"function useForm\u003CTData extends Record\u003Cstring, unknown>>(\n  resource: MaybeRef\u003CFormResource\u003CTData>>,\n  options?: UseFormOptions\u003CTData>,\n): UseFormApi\u003CTData>\n",[91,291,292,334,360,380],{"__ignoreMap":109},[113,293,294,298,302,306,310,313,316,318,322,325,328,331],{"class":115,"line":116},[113,295,297],{"class":296},"sNFzF","function",[113,299,301],{"class":300},"sgeHj"," useForm",[113,303,305],{"class":304},"sdlML","\u003C",[113,307,309],{"class":308},"s6-7G","TData",[113,311,312],{"class":296}," extends",[113,314,315],{"class":308}," Record",[113,317,305],{"class":304},[113,319,321],{"class":320},"stJF1","string",[113,323,324],{"class":123},",",[113,326,327],{"class":320}," unknown",[113,329,330],{"class":304},">>",[113,332,333],{"class":123},"(\n",[113,335,336,340,344,347,349,352,354,356,358],{"class":115,"line":127},[113,337,339],{"class":338},"s12WM","  resource",[113,341,343],{"class":342},"sWTNM",":",[113,345,346],{"class":308}," MaybeRef",[113,348,305],{"class":304},[113,350,351],{"class":308},"FormResource",[113,353,305],{"class":304},[113,355,309],{"class":308},[113,357,330],{"class":304},[113,359,134],{"class":123},[113,361,362,365,368,371,373,375,378],{"class":115,"line":137},[113,363,364],{"class":338},"  options",[113,366,367],{"class":342},"?:",[113,369,370],{"class":308}," UseFormOptions",[113,372,305],{"class":304},[113,374,309],{"class":308},[113,376,377],{"class":304},">",[113,379,134],{"class":123},[113,381,382,385,387,390,392,394],{"class":115,"line":145},[113,383,384],{"class":123},")",[113,386,343],{"class":342},[113,388,389],{"class":308}," UseFormApi",[113,391,305],{"class":304},[113,393,309],{"class":308},[113,395,396],{"class":304},">\n",[88,398,399,401],{},[91,400,286],{}," creates the form engine around Inertia's form helper. Pass a reactive resource when the Inertia prop may be refreshed.",[104,403,405],{"className":106,"code":404,"language":108,"meta":109,"style":109},"import { toRef } from 'vue'\nimport { useForm, type FormResource } from '@inertify\u002Fform-vue'\n\nconst props = defineProps\u003C{ profileForm: FormResource }>()\n\nconst form = useForm(toRef(props, 'profileForm'), {\n  propKey: 'profileForm',\n})\n",[91,406,407,429,454,458,492,496,532,548],{"__ignoreMap":109},[113,408,409,411,414,417,420,422,424,427],{"class":115,"line":116},[113,410,120],{"class":119},[113,412,413],{"class":123}," {",[113,415,416],{"class":130}," toRef",[113,418,419],{"class":123}," }",[113,421,170],{"class":119},[113,423,174],{"class":173},[113,425,426],{"class":177},"vue",[113,428,180],{"class":173},[113,430,431,433,435,437,439,442,444,446,448,450,452],{"class":115,"line":127},[113,432,120],{"class":119},[113,434,413],{"class":123},[113,436,301],{"class":130},[113,438,324],{"class":123},[113,440,441],{"class":119}," type",[113,443,159],{"class":130},[113,445,419],{"class":123},[113,447,170],{"class":119},[113,449,174],{"class":173},[113,451,93],{"class":177},[113,453,180],{"class":173},[113,455,456],{"class":115,"line":137},[113,457,187],{"emptyLinePlaceholder":186},[113,459,460,463,466,469,472,474,477,481,483,485,487,489],{"class":115,"line":145},[113,461,462],{"class":296},"const",[113,464,465],{"class":130}," props ",[113,467,468],{"class":342},"=",[113,470,471],{"class":300}," defineProps",[113,473,305],{"class":304},[113,475,476],{"class":123},"{",[113,478,480],{"class":479},"spHpb"," profileForm",[113,482,343],{"class":342},[113,484,159],{"class":308},[113,486,419],{"class":123},[113,488,377],{"class":304},[113,490,491],{"class":130},"()\n",[113,493,494],{"class":115,"line":153},[113,495,187],{"emptyLinePlaceholder":186},[113,497,498,500,503,505,507,510,513,516,518,520,523,526,528,530],{"class":115,"line":164},[113,499,462],{"class":296},[113,501,502],{"class":130}," form ",[113,504,468],{"class":342},[113,506,301],{"class":300},[113,508,509],{"class":130},"(",[113,511,512],{"class":300},"toRef",[113,514,515],{"class":130},"(props",[113,517,324],{"class":123},[113,519,174],{"class":173},[113,521,522],{"class":177},"profileForm",[113,524,525],{"class":173},"'",[113,527,384],{"class":130},[113,529,324],{"class":123},[113,531,124],{"class":123},[113,533,534,538,540,542,544,546],{"class":115,"line":183},[113,535,537],{"class":536},"sHTG8","  propKey",[113,539,343],{"class":342},[113,541,174],{"class":173},[113,543,522],{"class":177},[113,545,525],{"class":173},[113,547,134],{"class":123},[113,549,550,552],{"class":115,"line":190},[113,551,167],{"class":123},[113,553,554],{"class":130},")\n",[556,557,559],"h3",{"id":558},"options","Options",[561,562,563,576],"table",{},[564,565,566],"thead",{},[567,568,569,573],"tr",{},[570,571,572],"th",{},"Option",[570,574,575],{},"Purpose",[577,578,579,594,604,614,624],"tbody",{},[567,580,581,587],{},[582,583,584],"td",{},[91,585,586],{},"syncResourceData",[582,588,589,590,593],{},"Synchronizes changed server resource data into local state. Defaults to enabled; set to ",[91,591,592],{},"false"," when the application owns that lifecycle.",[567,595,596,601],{},[582,597,598],{},[91,599,600],{},"validationTransport",[582,602,603],{},"Replaces the default Laravel Precognition request transport.",[567,605,606,611],{},[582,607,608],{},[91,609,610],{},"uploadTransport",[582,612,613],{},"Replaces the default package upload transport.",[567,615,616,621],{},[582,617,618],{},[91,619,620],{},"submit",[582,622,623],{},"Supplies default Inertia visit options and lifecycle callbacks.",[567,625,626,631],{},[582,627,628],{},[91,629,630],{},"propKey",[582,632,633,634,637],{},"Identifies the owning Inertia prop for query-backed combobox partial reloads. The default assumption is ",[91,635,636],{},"form",".",[88,639,640,642,643,646,647,646,650,646,653,646,656,646,659,662,663,666,667,646,670,646,673,646,676,646,679,646,682,662,685,637],{},[91,641,620],{}," accepts action\u002Fmethod overrides, Inertia options such as ",[91,644,645],{},"preserveScroll",", ",[91,648,649],{},"preserveState",[91,651,652],{},"replace",[91,654,655],{},"headers",[91,657,658],{},"only",[91,660,661],{},"except",", and ",[91,664,665],{},"reset",", plus ",[91,668,669],{},"onBefore",[91,671,672],{},"onStart",[91,674,675],{},"onProgress",[91,677,678],{},"onSuccess",[91,680,681],{},"onError",[91,683,684],{},"onCancel",[91,686,687],{},"onFinish",[556,689,691],{"id":690},"engine-state","Engine state",[88,693,694,697],{},[91,695,696],{},"UseFormApi"," exposes computed state:",[699,700,701,719,733,747,761,772],"ul",{},[702,703,704,646,707,646,710,646,713,662,716],"li",{},[91,705,706],{},"formId",[91,708,709],{},"resource",[91,711,712],{},"inertia",[91,714,715],{},"data",[91,717,718],{},"rootData",[702,720,721,646,724,646,727,662,730],{},[91,722,723],{},"fieldsets",[91,725,726],{},"fields",[91,728,729],{},"visibleFieldsets",[91,731,732],{},"visibleFields",[702,734,735,646,738,646,741,662,744],{},[91,736,737],{},"errors",[91,739,740],{},"rootErrors",[91,742,743],{},"hasErrors",[91,745,746],{},"firstErrorPath",[702,748,749,646,752,646,755,662,758],{},[91,750,751],{},"processing",[91,753,754],{},"progress",[91,756,757],{},"wasSuccessful",[91,759,760],{},"recentlySuccessful",[702,762,763,646,766,662,769],{},[91,764,765],{},"isDirty",[91,767,768],{},"touched",[91,770,771],{},"shouldWarnOnUnsavedChanges",[702,773,774,777],{},[91,775,776],{},"fieldElements"," for registered application-owned controls",[88,779,780,781,784,785,646,788,646,791,646,794,646,797,800,801,803],{},"Resolved collection children are ",[91,782,783],{},"FormFieldInstance"," objects. In addition to the schema field, an instance has ",[91,786,787],{},"path",[91,789,790],{},"schemaName",[91,792,793],{},"schemaField",[91,795,796],{},"rowPath",[91,798,799],{},"fieldsetIndex",", and inherited visibility data. Use ",[91,802,787],{}," as the input name and error key.",[556,805,807],{"id":806},"engine-operations","Engine operations",[561,809,810,820],{},[564,811,812],{},[567,813,814,817],{},[570,815,816],{},"Group",[570,818,819],{},"Methods",[577,821,822,844,857,867,886,899,915,931,944],{},[567,823,824,827],{},[582,825,826],{},"Values",[582,828,829,646,832,646,835,646,838,646,841],{},[91,830,831],{},"getValue()",[91,833,834],{},"getDefaultValue()",[91,836,837],{},"setValue()",[91,839,840],{},"setData()",[91,842,843],{},"setValues()",[567,845,846,849],{},[582,847,848],{},"Touched state",[582,850,851,646,854],{},[91,852,853],{},"touch()",[91,855,856],{},"isTouched()",[567,858,859,862],{},[582,860,861],{},"Elements",[582,863,864],{},[91,865,866],{},"registerFieldElement()",[567,868,869,872],{},[582,870,871],{},"Reset and clearing",[582,873,874,646,877,646,880,646,883],{},[91,875,876],{},"reset()",[91,878,879],{},"resetField()",[91,881,882],{},"clearField()",[91,884,885],{},"defaults()",[567,887,888,891],{},[582,889,890],{},"Errors",[582,892,893,646,896],{},[91,894,895],{},"setError()",[91,897,898],{},"clearErrors()",[567,900,901,904],{},[582,902,903],{},"Submission",[582,905,906,646,909,646,912],{},[91,907,908],{},"transform()",[91,910,911],{},"submit()",[91,913,914],{},"cancel()",[567,916,917,920],{},[582,918,919],{},"Schema lookup",[582,921,922,646,925,646,928],{},[91,923,924],{},"resolveField()",[91,926,927],{},"getField()",[91,929,930],{},"resolveFieldset()",[567,932,933,936],{},[582,934,935],{},"Visibility",[582,937,938,646,941],{},[91,939,940],{},"isVisible()",[91,942,943],{},"isFieldsetVisible()",[567,945,946,949],{},[582,947,948],{},"Precognition",[582,950,951],{},[91,952,953],{},"validate(path)",[88,955,956,958,959,961,962,965],{},[91,957,911],{}," returns ",[91,960,592],{}," when no action is configured or a submission is already processing. A successful visit makes current data the new defaults and clears touched state. When ",[91,963,964],{},"scrollToFirstError"," is enabled, the first errored element registered by the application is scrolled into view.",[88,967,968,969,972,973,976],{},"When ",[91,970,971],{},"unsavedWarning"," is enabled, dirty forms install an Inertia navigation guard in the browser. Set ",[91,974,975],{},"resource.meta.unsavedWarningMessage"," to customize its confirmation text.",[96,978,980],{"id":979},"context","Context",[88,982,983,646,985,662,988,991],{},[91,984,5],{},[91,986,987],{},"FormProvider",[91,989,990],{},"Wizard"," provide the engine to descendants. Composables and renderless components use that context when no explicit form argument\u002Fprop is given.",[88,993,994],{},"The public context helpers are:",[104,996,998],{"className":106,"code":997,"language":108,"meta":109,"style":109},"FormContextKey\nprovideFormContext(form)\ntryUseFormContext()\nuseFormContext()\n",[91,999,1000,1005,1013,1020],{"__ignoreMap":109},[113,1001,1002],{"class":115,"line":116},[113,1003,1004],{"class":130},"FormContextKey\n",[113,1006,1007,1010],{"class":115,"line":127},[113,1008,1009],{"class":300},"provideFormContext",[113,1011,1012],{"class":130},"(form)\n",[113,1014,1015,1018],{"class":115,"line":137},[113,1016,1017],{"class":300},"tryUseFormContext",[113,1019,491],{"class":130},[113,1021,1022,1025],{"class":115,"line":145},[113,1023,1024],{"class":300},"useFormContext",[113,1026,491],{"class":130},[88,1028,1029,1032,1033,958,1036,1039],{},[91,1030,1031],{},"useFormContext()"," throws outside a provider. ",[91,1034,1035],{},"tryUseFormContext()",[91,1037,1038],{},"null"," instead.",[96,1041,1043],{"id":1042},"components","Components",[88,1045,1046,1048,1049,1051,1052,1055,1056,1058],{},[91,1047,5],{}," and ",[91,1050,990],{}," render one native ",[91,1053,1054],{},"\u003Cform>"," element. Every other package component returns consumer slot nodes or ",[91,1057,1038],{}," and inserts no wrapper element.",[556,1060,1062,1048,1064],{"id":1061},"form-and-formprovider",[91,1063,5],{},[91,1065,987],{},[88,1067,1068],{},"Both accept:",[699,1070,1071,1077],{},[702,1072,1073,1076],{},[91,1074,1075],{},"form: FormResource"," — required",[702,1078,1079,1082],{},[91,1080,1081],{},"options: UseFormOptions"," — optional",[88,1084,1085,1086,1088,1089,646,1092,646,1095,646,1097,646,1100,646,1103,662,1106,1109],{},"They expose the complete ",[91,1087,696],{}," and emit ",[91,1090,1091],{},"before",[91,1093,1094],{},"start",[91,1096,754],{},[91,1098,1099],{},"success",[91,1101,1102],{},"error",[91,1104,1105],{},"cancel",[91,1107,1108],{},"finish"," around submission callbacks.",[88,1111,1112],{},"The default slot receives:",[104,1114,1116],{"className":106,"code":1115,"language":108,"meta":109,"style":109},"{\n  form, formId, data, rootData, errors, rootErrors,\n  processing, isDirty, setData, validate, submit, cancel,\n  reset, defaults, transform, clearErrors\n}\n",[91,1117,1118,1123,1155,1187,1207],{"__ignoreMap":109},[113,1119,1120],{"class":115,"line":116},[113,1121,1122],{"class":123},"{\n",[113,1124,1125,1128,1130,1133,1135,1138,1140,1143,1145,1148,1150,1153],{"class":115,"line":127},[113,1126,1127],{"class":130},"  form",[113,1129,324],{"class":123},[113,1131,1132],{"class":130}," formId",[113,1134,324],{"class":123},[113,1136,1137],{"class":130}," data",[113,1139,324],{"class":123},[113,1141,1142],{"class":130}," rootData",[113,1144,324],{"class":123},[113,1146,1147],{"class":130}," errors",[113,1149,324],{"class":123},[113,1151,1152],{"class":130}," rootErrors",[113,1154,134],{"class":123},[113,1156,1157,1160,1162,1165,1167,1170,1172,1175,1177,1180,1182,1185],{"class":115,"line":137},[113,1158,1159],{"class":130},"  processing",[113,1161,324],{"class":123},[113,1163,1164],{"class":130}," isDirty",[113,1166,324],{"class":123},[113,1168,1169],{"class":130}," setData",[113,1171,324],{"class":123},[113,1173,1174],{"class":130}," validate",[113,1176,324],{"class":123},[113,1178,1179],{"class":130}," submit",[113,1181,324],{"class":123},[113,1183,1184],{"class":130}," cancel",[113,1186,134],{"class":123},[113,1188,1189,1192,1194,1197,1199,1202,1204],{"class":115,"line":145},[113,1190,1191],{"class":130},"  reset",[113,1193,324],{"class":123},[113,1195,1196],{"class":130}," defaults",[113,1198,324],{"class":123},[113,1200,1201],{"class":130}," transform",[113,1203,324],{"class":123},[113,1205,1206],{"class":130}," clearErrors\n",[113,1208,1209],{"class":115,"line":153},[113,1210,1211],{"class":123},"}\n",[88,1213,1214,1216],{},[91,1215,5],{}," is the normal root. It renders:",[104,1218,1222],{"className":1219,"code":1220,"language":1221,"meta":109,"style":109},"language-html shiki shiki-themes material-theme-lighter catppuccin-mocha catppuccin-mocha","\u003Cform id=\"{formId}\" action=\"{resource.action}\" method=\"get|post\" novalidate>\n","html",[91,1223,1224],{"__ignoreMap":109},[113,1225,1226,1228,1231,1235,1237,1240,1243,1245,1248,1250,1252,1255,1257,1260,1262,1264,1267,1269,1272],{"class":115,"line":116},[113,1227,305],{"class":342},[113,1229,636],{"class":1230},"sgRj0",[113,1232,1234],{"class":1233},"sGkbZ"," id",[113,1236,468],{"class":342},[113,1238,1239],{"class":173},"\"",[113,1241,1242],{"class":177},"{formId}",[113,1244,1239],{"class":173},[113,1246,1247],{"class":1233}," action",[113,1249,468],{"class":342},[113,1251,1239],{"class":173},[113,1253,1254],{"class":177},"{resource.action}",[113,1256,1239],{"class":173},[113,1258,1259],{"class":1233}," method",[113,1261,468],{"class":342},[113,1263,1239],{"class":173},[113,1265,1266],{"class":177},"get|post",[113,1268,1239],{"class":173},[113,1270,1271],{"class":1233}," novalidate",[113,1273,396],{"class":342},[88,1275,1276,1279,1280,646,1283,662,1286,1289,1290,1293,1294,1297,1298,1301,1302,1305,1306,646,1309,646,1312,646,1314,646,1316,646,1319,1322,1323,1326,1327,1330],{},[91,1277,1278],{},"method"," is the native equivalent of the serialized method, and ",[91,1281,1282],{},"put",[91,1284,1285],{},"patch",[91,1287,1288],{},"delete"," also emit a hidden ",[91,1291,1292],{},"_method"," field. ",[91,1295,1296],{},"novalidate"," is set because validation is server-driven. The submit handler calls ",[91,1299,1300],{},"preventDefault()"," and submits through Inertia, forwarding ",[91,1303,1304],{},"event.submitter"," so a named submit button contributes its value. Fallthrough attributes are merged last, so ",[91,1307,1308],{},"id",[91,1310,1311],{},"action",[91,1313,1278],{},[91,1315,1296],{},[91,1317,1318],{},"class",[91,1320,1321],{},"enctype",", and additional ",[91,1324,1325],{},"@submit"," listeners can all be supplied per usage. A component ref exposes the element as ",[91,1328,1329],{},"element"," alongside the form API.",[88,1332,1333,1335,1336,1338],{},[91,1334,987],{}," is the same component without the element. Use it when the ",[91,1337,1054],{}," belongs elsewhere in the layout, when a provider must nest inside another form, or when a page only reads and validates.",[104,1340,1343],{"className":1341,"code":1342,"language":426,"meta":109,"style":109},"language-vue shiki shiki-themes material-theme-lighter catppuccin-mocha catppuccin-mocha","\u003CForm :form=\"resource\" v-slot=\"{ form, processing }\">\n  \u003CAppFormFields :form=\"form\" \u002F>\n  \u003Cbutton :disabled=\"processing\">Save\u003C\u002Fbutton>\n\u003C\u002FForm>\n",[91,1344,1345,1387,1392,1397],{"__ignoreMap":109},[113,1346,1347,1349,1351,1354,1356,1358,1360,1362,1364,1367,1369,1371,1373,1376,1378,1381,1383,1385],{"class":115,"line":116},[113,1348,305],{"class":342},[113,1350,5],{"class":1230},[113,1352,1353],{"class":123}," :",[113,1355,636],{"class":1233},[113,1357,468],{"class":342},[113,1359,1239],{"class":173},[113,1361,709],{"class":130},[113,1363,1239],{"class":173},[113,1365,1366],{"class":1233}," v-slot",[113,1368,468],{"class":342},[113,1370,1239],{"class":173},[113,1372,476],{"class":123},[113,1374,1375],{"class":130}," form",[113,1377,324],{"class":123},[113,1379,1380],{"class":130}," processing ",[113,1382,167],{"class":123},[113,1384,1239],{"class":173},[113,1386,396],{"class":342},[113,1388,1389],{"class":115,"line":127},[113,1390,1391],{"class":130},"  \u003CAppFormFields :form=\"form\" \u002F>\n",[113,1393,1394],{"class":115,"line":137},[113,1395,1396],{"class":130},"  \u003Cbutton :disabled=\"processing\">Save\u003C\u002Fbutton>\n",[113,1398,1399,1402,1404],{"class":115,"line":145},[113,1400,1401],{"class":342},"\u003C\u002F",[113,1403,5],{"class":1230},[113,1405,396],{"class":342},[1407,1408,1409,1410,1412,1413,1415,1416,1418],"warning",{},"Do not nest your own ",[91,1411,1054],{}," inside ",[91,1414,5],{}," or ",[91,1417,990],{},". Nested forms are invalid HTML: the parser discards the inner element together with its submit handler, and submits fall back to a full page navigation.",[556,1420,1422],{"id":1421},"wizard",[91,1423,990],{},[88,1425,1426,1428,1429,1431,1432,1434,1435,1438,1439,1442],{},[91,1427,990],{}," accepts a form resource and options, creates both the form engine and wizard controller, provides the form context, renders the same ",[91,1430,1054],{}," element as ",[91,1433,5],{},", and exposes ",[91,1436,1437],{},"{ form, wizard }"," to its default slot and ",[91,1440,1441],{},"{ form, wizard, element }"," on a component ref.",[556,1444,1446],{"id":1445},"context-consumers","Context consumers",[561,1448,1449,1462],{},[564,1450,1451],{},[567,1452,1453,1456,1459],{},[570,1454,1455],{},"Component",[570,1457,1458],{},"Props",[570,1460,1461],{},"Default-slot payload",[577,1463,1464,1509,1535,1556,1570,1588],{},[567,1465,1466,1471,1485],{},[582,1467,1468],{},[91,1469,1470],{},"FormFieldsets",[582,1472,1473,646,1476,646,1479,646,1482],{},[91,1474,1475],{},"form?",[91,1477,1478],{},"only?",[91,1480,1481],{},"except?",[91,1483,1484],{},"includeHidden?",[582,1486,1487,1488,646,1491,646,1493,1495,1496,646,1499,1502,1503,662,1505,1508],{},"One call per selected fieldset with ",[91,1489,1490],{},"fieldset",[91,1492,636],{},[91,1494,1308],{},", display ",[91,1497,1498],{},"index",[91,1500,1501],{},"originalIndex",", resolved ",[91,1504,726],{},[91,1506,1507],{},"visible",". Named insertion and replacement slots are also supported.",[567,1510,1511,1516,1520],{},[582,1512,1513],{},[91,1514,1515],{},"FormErrors",[582,1517,1518],{},[91,1519,1475],{},[582,1521,1522,1524,1525,646,1528,646,1530,646,1532,637],{},[91,1523,636],{},", error map, ",[91,1526,1527],{},"{ name, message }[]",[91,1529,743],{},[91,1531,746],{},[91,1533,1534],{},"clearErrors",[567,1536,1537,1542,1546],{},[582,1538,1539],{},[91,1540,1541],{},"FormSubmit",[582,1543,1544],{},[91,1545,1475],{},[582,1547,1548,1549,646,1552,662,1554,637],{},"Submission state plus ",[91,1550,1551],{},"canSubmit",[91,1553,620],{},[91,1555,1105],{},[567,1557,1558,1563,1567],{},[582,1559,1560],{},[91,1561,1562],{},"FormWizard",[582,1564,1565],{},[91,1566,1475],{},[582,1568,1569],{},"The wizard controller and unwrapped step\u002Fnavigation state and methods.",[567,1571,1572,1577,1585],{},[582,1573,1574],{},[91,1575,1576],{},"FormUploads",[582,1578,1579,1581,1582],{},[91,1580,1475],{},", required ",[91,1583,1584],{},"name",[582,1586,1587],{},"Upload controller, field state\u002Fvalue, and path-bound upload, remove, reorder, cancel, retry, pause, resume, and clear methods.",[567,1589,1590,1595,1601],{},[582,1591,1592],{},[91,1593,1594],{},"FormCollection",[582,1596,1597,1581,1599],{},[91,1598,1475],{},[91,1600,1584],{},[582,1602,1603],{},"Collection controller, rows, stable keys, field, bounds, and mutation methods.",[88,1605,1606,1608,1609,646,1612,1615,1616,1619,1620,1048,1623,637],{},[91,1607,1470],{}," slot precedence is ",[91,1610,1611],{},"{id}-fieldset",[91,1613,1614],{},"fieldset-{id}",", then ",[91,1617,1618],{},"default","; insertion slots are ",[91,1621,1622],{},"before-{id}-fieldset",[91,1624,1625],{},"after-{id}-fieldset",[88,1627,1628,1048,1630,1632,1633,1415,1635,1638,1639,1641,1642,1644,1645,1648],{},[91,1629,658],{},[91,1631,661],{}," each accept an exact, case-sensitive fieldset ID as ",[91,1634,321],{},[91,1636,1637],{},"readonly string[]",". ",[91,1640,658],{}," narrows the candidates first and ",[91,1643,661],{}," then removes matches, so exclusion wins when an ID appears in both. Selector array order does not reorder the result; fieldsets remain in schema order. Selection and visibility are independent: ",[91,1646,1647],{},"includeHidden"," still controls whether hidden fieldsets and fields are emitted, but never bypasses either selector.",[88,1650,1651,1652,1655,1656,1039],{},"Assign selectable fieldsets explicit, unique PHP IDs with ",[91,1653,1654],{},"Fieldset::id()"," because generated fallback IDs are based on schema position. For a fixed application layout, render a known group directly with the generated ",[91,1657,1658],{},"\u003CFormFields fieldset=\"identity\" \u002F>",[96,1660,1662],{"id":1661},"createformrenderer",[91,1663,1664],{},"createFormRenderer()",[88,1666,1667],{},"Register application-owned field components once while retaining page-level slots:",[104,1669,1671],{"className":106,"code":1670,"language":108,"meta":109,"style":109},"import {\n  createFormRenderer,\n  type FormFieldRenderer,\n} from '@inertify\u002Fform-vue'\nimport CheckboxField from '.\u002FCheckboxField.vue'\nimport TextField from '.\u002FTextField.vue'\nimport UnsupportedField from '.\u002FUnsupportedField.vue'\n\nconst renderers = {\n  Text: TextField,\n  Textarea: {\n    component: TextField,\n    props: { multiline: true },\n  },\n  Checkbox: CheckboxField,\n  Submit: null,\n} satisfies Record\u003Cstring, FormFieldRenderer>\n\nexport const { FormField, FormFields } = createFormRenderer({\n  name: 'AppForm',\n  renderers,\n  fallback: UnsupportedField,\n})\n",[91,1672,1673,1679,1685,1694,1706,1723,1739,1755,1759,1770,1782,1791,1802,1823,1828,1840,1853,1873,1878,1909,1926,1934,1947],{"__ignoreMap":109},[113,1674,1675,1677],{"class":115,"line":116},[113,1676,120],{"class":119},[113,1678,124],{"class":123},[113,1680,1681,1683],{"class":115,"line":127},[113,1682,140],{"class":130},[113,1684,134],{"class":123},[113,1686,1687,1689,1692],{"class":115,"line":137},[113,1688,156],{"class":119},[113,1690,1691],{"class":130}," FormFieldRenderer",[113,1693,134],{"class":123},[113,1695,1696,1698,1700,1702,1704],{"class":115,"line":145},[113,1697,167],{"class":123},[113,1699,170],{"class":119},[113,1701,174],{"class":173},[113,1703,93],{"class":177},[113,1705,180],{"class":173},[113,1707,1708,1710,1713,1716,1718,1721],{"class":115,"line":153},[113,1709,120],{"class":119},[113,1711,1712],{"class":130}," CheckboxField ",[113,1714,1715],{"class":119},"from",[113,1717,174],{"class":173},[113,1719,1720],{"class":177},".\u002FCheckboxField.vue",[113,1722,180],{"class":173},[113,1724,1725,1727,1730,1732,1734,1737],{"class":115,"line":164},[113,1726,120],{"class":119},[113,1728,1729],{"class":130}," TextField ",[113,1731,1715],{"class":119},[113,1733,174],{"class":173},[113,1735,1736],{"class":177},".\u002FTextField.vue",[113,1738,180],{"class":173},[113,1740,1741,1743,1746,1748,1750,1753],{"class":115,"line":183},[113,1742,120],{"class":119},[113,1744,1745],{"class":130}," UnsupportedField ",[113,1747,1715],{"class":119},[113,1749,174],{"class":173},[113,1751,1752],{"class":177},".\u002FUnsupportedField.vue",[113,1754,180],{"class":173},[113,1756,1757],{"class":115,"line":190},[113,1758,187],{"emptyLinePlaceholder":186},[113,1760,1761,1763,1766,1768],{"class":115,"line":197},[113,1762,462],{"class":296},[113,1764,1765],{"class":130}," renderers ",[113,1767,468],{"class":342},[113,1769,124],{"class":123},[113,1771,1772,1775,1777,1780],{"class":115,"line":205},[113,1773,1774],{"class":536},"  Text",[113,1776,343],{"class":342},[113,1778,1779],{"class":130}," TextField",[113,1781,134],{"class":123},[113,1783,1784,1787,1789],{"class":115,"line":213},[113,1785,1786],{"class":536},"  Textarea",[113,1788,343],{"class":342},[113,1790,124],{"class":123},[113,1792,1793,1796,1798,1800],{"class":115,"line":227},[113,1794,1795],{"class":536},"    component",[113,1797,343],{"class":342},[113,1799,1779],{"class":130},[113,1801,134],{"class":123},[113,1803,1804,1807,1809,1811,1814,1816,1820],{"class":115,"line":232},[113,1805,1806],{"class":536},"    props",[113,1808,343],{"class":342},[113,1810,413],{"class":123},[113,1812,1813],{"class":536}," multiline",[113,1815,343],{"class":342},[113,1817,1819],{"class":1818},"sgRL5"," true",[113,1821,1822],{"class":123}," },\n",[113,1824,1825],{"class":115,"line":239},[113,1826,1827],{"class":123},"  },\n",[113,1829,1830,1833,1835,1838],{"class":115,"line":247},[113,1831,1832],{"class":536},"  Checkbox",[113,1834,343],{"class":342},[113,1836,1837],{"class":130}," CheckboxField",[113,1839,134],{"class":123},[113,1841,1842,1845,1847,1851],{"class":115,"line":255},[113,1843,1844],{"class":536},"  Submit",[113,1846,343],{"class":342},[113,1848,1850],{"class":1849},"s27pR"," null",[113,1852,134],{"class":123},[113,1854,1856,1858,1861,1863,1865,1867,1869,1871],{"class":115,"line":1855},17,[113,1857,167],{"class":123},[113,1859,1860],{"class":119}," satisfies",[113,1862,315],{"class":308},[113,1864,305],{"class":304},[113,1866,321],{"class":320},[113,1868,324],{"class":123},[113,1870,1691],{"class":308},[113,1872,396],{"class":304},[113,1874,1876],{"class":115,"line":1875},18,[113,1877,187],{"emptyLinePlaceholder":186},[113,1879,1881,1884,1887,1889,1892,1894,1897,1899,1902,1905,1907],{"class":115,"line":1880},19,[113,1882,1883],{"class":119},"export",[113,1885,1886],{"class":296}," const",[113,1888,413],{"class":123},[113,1890,1891],{"class":130}," FormField",[113,1893,324],{"class":123},[113,1895,1896],{"class":130}," FormFields ",[113,1898,167],{"class":123},[113,1900,1901],{"class":342}," =",[113,1903,1904],{"class":300}," createFormRenderer",[113,1906,509],{"class":130},[113,1908,1122],{"class":123},[113,1910,1912,1915,1917,1919,1922,1924],{"class":115,"line":1911},20,[113,1913,1914],{"class":536},"  name",[113,1916,343],{"class":342},[113,1918,174],{"class":173},[113,1920,1921],{"class":177},"AppForm",[113,1923,525],{"class":173},[113,1925,134],{"class":123},[113,1927,1929,1932],{"class":115,"line":1928},21,[113,1930,1931],{"class":130},"  renderers",[113,1933,134],{"class":123},[113,1935,1937,1940,1942,1945],{"class":115,"line":1936},22,[113,1938,1939],{"class":536},"  fallback",[113,1941,343],{"class":342},[113,1943,1944],{"class":130}," UnsupportedField",[113,1946,134],{"class":123},[113,1948,1950,1952],{"class":115,"line":1949},23,[113,1951,167],{"class":123},[113,1953,554],{"class":130},[88,1955,1956,1959],{},[91,1957,1958],{},"CreateFormRendererOptions"," contains:",[561,1961,1962,1971],{},[564,1963,1964],{},[567,1965,1966,1968],{},[570,1967,572],{},[570,1969,1970],{},"Contract",[577,1972,1973,1994,2004],{},[567,1974,1975,1980],{},[582,1976,1977],{},[91,1978,1979],{},"renderers",[582,1981,1982,1983,1986,1987,1990,1991,1993],{},"Map of exact serialized ",[91,1984,1985],{},"component"," discriminators to a Vue component, ",[91,1988,1989],{},"{ component, props }",", or ",[91,1992,1038],{},". These frontend protocol keys are independent of PHP class names.",[567,1995,1996,2001],{},[582,1997,1998],{},[91,1999,2000],{},"fallback",[582,2002,2003],{},"Renderer used for an unregistered component.",[567,2005,2006,2010],{},[582,2007,2008],{},[91,2009,1584],{},[582,2011,2012,2013,637],{},"Prefix for the generated Vue component names; defaults to ",[91,2014,2015],{},"RegisteredForm",[88,2017,2018,2019,2021],{},"Each factory call snapshots an isolated registry, which makes it safe to create at module scope during SSR. Preset props are merged first; the behavioral field payload remains authoritative. ",[91,2020,1038],{}," intentionally renders no field.",[88,2023,2024,2025,2028,2029,646,2031,646,2034,662,2037,2039],{},"The returned ",[91,2026,2027],{},"FormFields"," accepts ",[91,2030,1475],{},[91,2032,2033],{},"fields?",[91,2035,2036],{},"fieldset?",[91,2038,1484],{},". It renders declared layout fields in schema order. A collection renderer owns its repeater or block descendants so nested controls are not emitted twice.",[88,2041,2024,2042,2045,2046,2048,2049,662,2051,2053],{},[91,2043,2044],{},"FormField"," accepts required ",[91,2047,1584],{}," (a qualified path or field object), ",[91,2050,1475],{},[91,2052,1484],{}," for explicit placement:",[104,2055,2057],{"className":1341,"code":2056,"language":426,"meta":109,"style":109},"\u003Cdiv class=\"grid gap-6 md:grid-cols-2\">\n  \u003CFormField name=\"name\" \u002F>\n  \u003CFormField name=\"email\" \u002F>\n\u003C\u002Fdiv>\n",[91,2058,2059,2080,2085,2090],{"__ignoreMap":109},[113,2060,2061,2063,2066,2069,2071,2073,2076,2078],{"class":115,"line":116},[113,2062,305],{"class":342},[113,2064,2065],{"class":1230},"div",[113,2067,2068],{"class":1233}," class",[113,2070,468],{"class":342},[113,2072,1239],{"class":173},[113,2074,2075],{"class":177},"grid gap-6 md:grid-cols-2",[113,2077,1239],{"class":173},[113,2079,396],{"class":342},[113,2081,2082],{"class":115,"line":127},[113,2083,2084],{"class":130},"  \u003CFormField name=\"name\" \u002F>\n",[113,2086,2087],{"class":115,"line":137},[113,2088,2089],{"class":130},"  \u003CFormField name=\"email\" \u002F>\n",[113,2091,2092,2094,2096],{"class":115,"line":145},[113,2093,1401],{"class":342},[113,2095,2065],{"class":1230},[113,2097,396],{"class":342},[556,2099,2101],{"id":2100},"field-slots","Field slots",[88,2103,2104],{},"For each resolved field, override resolution follows this order:",[2106,2107,2108,2113,2119,2123,2129],"ol",{},[702,2109,2110],{},[91,2111,2112],{},"field-{path}",[702,2114,2115,2118],{},[91,2116,2117],{},"type-{component}"," with the component normalized to kebab case",[702,2120,2121],{},[91,2122,1618],{},[702,2124,2125,2128],{},[91,2126,2127],{},"{name}-field",", the deprecated compatibility fallback",[702,2130,2131],{},"The registered renderer, unsupported handler, or fallback",[88,2133,2134,2135,1048,2138,2141,2142,637],{},"Insertion slots are ",[91,2136,2137],{},"before-{path}-field",[91,2139,2140],{},"after-{path}-field",". Qualified paths include collection indexes, for example ",[91,2143,2144],{},"projects.0.title",[88,2146,2147,2148,343],{},"Every field slot and registered renderer receives ",[91,2149,2150],{},"FormFieldSlotProps",[104,2152,2154],{"className":106,"code":2153,"language":108,"meta":109,"style":109},"{\n  field, form, context, controller, name, value,\n  error, errors, visible, touched, dirty,\n  disabled, readonly, required,\n  setValue, blur, validate, registerElement\n}\n",[91,2155,2156,2160,2191,2217,2234,2253],{"__ignoreMap":109},[113,2157,2158],{"class":115,"line":116},[113,2159,1122],{"class":123},[113,2161,2162,2165,2167,2169,2171,2174,2176,2179,2181,2184,2186,2189],{"class":115,"line":127},[113,2163,2164],{"class":130},"  field",[113,2166,324],{"class":123},[113,2168,1375],{"class":130},[113,2170,324],{"class":123},[113,2172,2173],{"class":130}," context",[113,2175,324],{"class":123},[113,2177,2178],{"class":130}," controller",[113,2180,324],{"class":123},[113,2182,2183],{"class":130}," name",[113,2185,324],{"class":123},[113,2187,2188],{"class":130}," value",[113,2190,134],{"class":123},[113,2192,2193,2196,2198,2200,2202,2205,2207,2210,2212,2215],{"class":115,"line":137},[113,2194,2195],{"class":130},"  error",[113,2197,324],{"class":123},[113,2199,1147],{"class":130},[113,2201,324],{"class":123},[113,2203,2204],{"class":130}," visible",[113,2206,324],{"class":123},[113,2208,2209],{"class":130}," touched",[113,2211,324],{"class":123},[113,2213,2214],{"class":130}," dirty",[113,2216,134],{"class":123},[113,2218,2219,2222,2224,2227,2229,2232],{"class":115,"line":145},[113,2220,2221],{"class":130},"  disabled",[113,2223,324],{"class":123},[113,2225,2226],{"class":130}," readonly",[113,2228,324],{"class":123},[113,2230,2231],{"class":130}," required",[113,2233,134],{"class":123},[113,2235,2236,2239,2241,2244,2246,2248,2250],{"class":115,"line":153},[113,2237,2238],{"class":130},"  setValue",[113,2240,324],{"class":123},[113,2242,2243],{"class":130}," blur",[113,2245,324],{"class":123},[113,2247,1174],{"class":130},[113,2249,324],{"class":123},[113,2251,2252],{"class":130}," registerElement\n",[113,2254,2255],{"class":115,"line":164},[113,2256,1211],{"class":123},[88,2258,2259,2260,2262,2263,2265,2266,2269,2270,2273],{},"Unknown fields render ",[91,2261,1038],{}," unless ",[91,2264,2000],{}," or an ",[91,2267,2268],{},"unsupported"," slot is provided. Components that declare only part of the payload should use ",[91,2271,2272],{},"defineOptions({ inheritAttrs: false })"," so controller objects and callbacks do not fall through to a root DOM element.",[96,2275,2277],{"id":2276},"core-composables","Core composables",[88,2279,2280,2281,2283,2284,2286],{},"All composables except ",[91,2282,286],{}," accept an optional ",[91,2285,696],{},"; without it, they use provider context.",[561,2288,2289,2299],{},[564,2290,2291],{},[567,2292,2293,2296],{},[570,2294,2295],{},"Composable",[570,2297,2298],{},"Main contract",[577,2300,2301,2311,2321,2338,2348,2364,2388,2398,2408,2421],{},[567,2302,2303,2308],{},[582,2304,2305],{},[91,2306,2307],{},"useFormField(fieldOrPath, form?)",[582,2309,2310],{},"One field's writable value, errors, visibility, dirty\u002Ftouched\u002Fsemantic state, element registration, blur validation, reset, clear, and clear-errors operations.",[567,2312,2313,2318],{},[582,2314,2315],{},[91,2316,2317],{},"useFormFields(form?)",[582,2319,2320],{},"Resolved schema collections, lookup, and cached field controllers.",[567,2322,2323,2328],{},[582,2324,2325],{},[91,2326,2327],{},"useFormValidation(form?)",[582,2329,2330,2331,646,2334,2337],{},"Pending state, ",[91,2332,2333],{},"validate()",[91,2335,2336],{},"validateMany()",", debounced validation, cancellation, and error clearing.",[567,2339,2340,2345],{},[582,2341,2342],{},[91,2343,2344],{},"useFormVisibility(form?)",[582,2346,2347],{},"Visible\u002Fhidden fields and fieldsets plus visibility predicates.",[567,2349,2350,2355],{},[582,2351,2352],{},[91,2353,2354],{},"useFormSubmission(form?)",[582,2356,2357,2358,646,2360,662,2362,637],{},"Submission state, ",[91,2359,1551],{},[91,2361,620],{},[91,2363,1105],{},[567,2365,2366,2371],{},[582,2367,2368],{},[91,2369,2370],{},"useFormWizard(form?)",[582,2372,2373,2374,646,2377,646,2380,646,2383,662,2386,637],{},"Steps, current position, completion, labels, guards, ",[91,2375,2376],{},"goTo()",[91,2378,2379],{},"next()",[91,2381,2382],{},"previous()",[91,2384,2385],{},"validateCurrent()",[91,2387,876],{},[567,2389,2390,2395],{},[582,2391,2392],{},[91,2393,2394],{},"useFormUploads(form?)",[582,2396,2397],{},"Upload state by path plus upload, retry, pause\u002Fresume, remove, reorder, cancel, and clear.",[567,2399,2400,2405],{},[582,2401,2402],{},[91,2403,2404],{},"useFormCollection(path, form?)",[582,2406,2407],{},"One repeater\u002Fblocks collection controller.",[567,2409,2410,2415],{},[582,2411,2412],{},[91,2413,2414],{},"useFormCollections(form?)",[582,2416,2417,2418,637],{},"Cached collection controllers through ",[91,2419,2420],{},"forField(path)",[567,2422,2423,2428],{},[582,2424,2425],{},[91,2426,2427],{},"useFormCombobox(path, form?, options?)",[582,2429,2430],{},"Search, paging, selected hydration, record creation, loading\u002Ferror state, and cancellation.",[88,2432,2433,2436,2437,2440,2441,646,2444,646,2447,646,2450,646,2453,646,2456,646,2459,646,2462,646,2465,646,2468,646,2471,662,2474,637],{},[91,2434,2435],{},"useFormCollection()"," exposes ",[91,2438,2439],{},"items",", stable ",[91,2442,2443],{},"keys",[91,2445,2446],{},"canAppend",[91,2448,2449],{},"append()",[91,2451,2452],{},"prepend()",[91,2454,2455],{},"insert()",[91,2457,2458],{},"update()",[91,2460,2461],{},"remove()",[91,2463,2464],{},"move()",[91,2466,2467],{},"swap()",[91,2469,2470],{},"duplicate()",[91,2472,2473],{},"appendBlock()",[91,2475,2476],{},"clear()",[88,2478,2479,2482,2483,2486,2487,2490],{},[91,2480,2481],{},"useFormCombobox()"," accepts a custom ",[91,2484,2485],{},"transport",". Its default transport understands endpoint-backed fields and query-backed Inertia option metadata. ",[91,2488,2489],{},"normalizeComboboxPage()"," is public for custom transport implementations.",[96,2492,2494],{"id":2493},"field-controllers","Field controllers",[88,2496,2497],{},"Controller composables adapt serialized behavior to application renderers:",[561,2499,2500,2510],{},[564,2501,2502],{},[567,2503,2504,2507],{},[570,2505,2506],{},"Controller",[570,2508,2509],{},"Specialized state and operations",[577,2511,2512,2522,2532,2542,2558,2568,2578,2588,2601,2615],{},[567,2513,2514,2519],{},[582,2515,2516],{},[91,2517,2518],{},"useTextInput()",[582,2520,2521],{},"Raw\u002Ftext\u002Fdisplay values, masking, numeric formatting, parsing, and input handling.",[567,2523,2524,2529],{},[582,2525,2526],{},[91,2527,2528],{},"useSlug()",[582,2530,2531],{},"Text behavior plus source tracking, locking, generation, and manual input.",[567,2533,2534,2539],{},[582,2535,2536],{},[91,2537,2538],{},"useChoices()",[582,2540,2541],{},"Selected list plus select, deselect, toggle, and membership checks.",[567,2543,2544,2549],{},[582,2545,2546],{},[91,2547,2548],{},"useDate()",[582,2550,2551,2552,662,2555,637],{},"Writable date string, parsed ",[91,2553,2554],{},"Date",[91,2556,2557],{},"setDate()",[567,2559,2560,2565],{},[582,2561,2562],{},[91,2563,2564],{},"useFile()",[582,2566,2567],{},"Field upload state and path-bound upload operations.",[567,2569,2570,2575],{},[582,2571,2572],{},[91,2573,2574],{},"useRichText()",[582,2576,2577],{},"HTML, companion image tokens, image upload state, and image operations.",[567,2579,2580,2585],{},[582,2581,2582],{},[91,2583,2584],{},"useComposer()",[582,2586,2587],{},"Text, attachment state, and attachment upload operations.",[567,2589,2590,2595],{},[582,2591,2592],{},[91,2593,2594],{},"useOtp()",[582,2596,2597,2598,637],{},"Length, digit list, completeness, and ",[91,2599,2600],{},"setDigit()",[567,2602,2603,2608],{},[582,2604,2605],{},[91,2606,2607],{},"useLink()",[582,2609,2610,2611,2614],{},"Plain\u002Fstructured URL parts, safe-scheme state, normalized ",[91,2612,2613],{},"href",", target, and setters.",[567,2616,2617,2622],{},[582,2618,2619],{},[91,2620,2621],{},"useFormFieldController()",[582,2623,2624,2625,637],{},"Chooses a built-in controller from the serialized component discriminator, falling back to ",[91,2626,2627],{},"useFormField()",[88,2629,2630,2631,646,2634,646,2637,646,2640,646,2643,646,2646,646,2649,646,2652,662,2655,2658],{},"The aliases ",[91,2632,2633],{},"useTextInputField",[91,2635,2636],{},"useSlugField",[91,2638,2639],{},"useChoicesField",[91,2641,2642],{},"useDateField",[91,2644,2645],{},"useFileField",[91,2647,2648],{},"useRichTextField",[91,2650,2651],{},"useComposerField",[91,2653,2654],{},"useOtpField",[91,2656,2657],{},"useLinkField"," are also public.",[96,2660,2662],{"id":2661},"transports","Transports",[88,2664,2665,2666,646,2669,646,2672,662,2675,2678],{},"The package exports ",[91,2667,2668],{},"defaultValidationTransport",[91,2670,2671],{},"defaultUploadTransport",[91,2673,2674],{},"normalizeUploadDescriptor",[91,2676,2677],{},"defaultComboboxTransport"," for composition with application-specific transports.",[88,2680,2681,2682,2685],{},"Custom validation receives the action, method, qualified path, current data, resource, and ",[91,2683,2684],{},"AbortSignal",". Custom upload transport receives the resolved field, files, normalized descriptor, progress callback, resumable session state, and signal. Cancellation and stale-response handling remain part of the form engine.",[2687,2688,2689],"caution",{},"Transport customization does not relax the server contract. Keep authentication, CSRF protection, authorization, tenant scope, file validation, token validation, and rate limits on the Laravel endpoints.",[96,2691,2693],{"id":2692},"rendering-safety","Rendering safety",[88,2695,2696],{},"The package deliberately does not render labels, error relationships, focus styles, dialogs, or editor HTML. Application renderers must provide accessible names, descriptions, error announcements, keyboard behavior, and focus handling.",[88,2698,2699,2701,2702,2704,2705,2708],{},[91,2700,2607],{}," normalizes configured schemes for renderer convenience; server validation is authoritative. ",[91,2703,2574],{}," treats the value as HTML state and does not sanitize it. Never use ",[91,2706,2707],{},"v-html"," with untrusted content unless the application has sanitized it under an explicit policy.",[2710,2711,2712],"style",{},"html pre.shiki code .su_vF, html code.shiki .su_vF{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#CBA6F7;--shiki-default-font-style:inherit;--shiki-dark:#CBA6F7;--shiki-dark-font-style:inherit}html pre.shiki code .sOG8g, html code.shiki .sOG8g{--shiki-light:#39ADB5;--shiki-default:#9399B2;--shiki-dark:#9399B2}html pre.shiki code .svMjs, html code.shiki .svMjs{--shiki-light:#90A4AE;--shiki-default:#CDD6F4;--shiki-dark:#CDD6F4}html pre.shiki code .sQGZM, html code.shiki .sQGZM{--shiki-light:#39ADB5;--shiki-default:#A6E3A1;--shiki-dark:#A6E3A1}html pre.shiki code .s2lAL, html code.shiki .s2lAL{--shiki-light:#91B859;--shiki-default:#A6E3A1;--shiki-dark:#A6E3A1}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 .sNFzF, html code.shiki .sNFzF{--shiki-light:#9C3EDA;--shiki-default:#CBA6F7;--shiki-dark:#CBA6F7}html pre.shiki code .sgeHj, html code.shiki .sgeHj{--shiki-light:#6182B8;--shiki-light-font-style:inherit;--shiki-default:#89B4FA;--shiki-default-font-style:italic;--shiki-dark:#89B4FA;--shiki-dark-font-style:italic}html pre.shiki code .sdlML, html code.shiki .sdlML{--shiki-light:#39ADB5;--shiki-default:#89DCEB;--shiki-dark:#89DCEB}html pre.shiki code .s6-7G, html code.shiki .s6-7G{--shiki-light:#E2931D;--shiki-light-font-style:inherit;--shiki-default:#F9E2AF;--shiki-default-font-style:italic;--shiki-dark:#F9E2AF;--shiki-dark-font-style:italic}html pre.shiki code .stJF1, html code.shiki .stJF1{--shiki-light:#E2931D;--shiki-default:#CBA6F7;--shiki-dark:#CBA6F7}html pre.shiki code .s12WM, html code.shiki .s12WM{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EBA0AC;--shiki-default-font-style:italic;--shiki-dark:#EBA0AC;--shiki-dark-font-style:italic}html pre.shiki code .sWTNM, html code.shiki .sWTNM{--shiki-light:#39ADB5;--shiki-default:#94E2D5;--shiki-dark:#94E2D5}html pre.shiki code .spHpb, html code.shiki .spHpb{--shiki-light:#E53935;--shiki-light-font-style:inherit;--shiki-default:#CDD6F4;--shiki-default-font-style:italic;--shiki-dark:#CDD6F4;--shiki-dark-font-style:italic}html pre.shiki code .sHTG8, html code.shiki .sHTG8{--shiki-light:#E53935;--shiki-default:#CDD6F4;--shiki-dark:#CDD6F4}html pre.shiki code .sgRj0, html code.shiki .sgRj0{--shiki-light:#E53935;--shiki-default:#89B4FA;--shiki-dark:#89B4FA}html pre.shiki code .sGkbZ, html code.shiki .sGkbZ{--shiki-light:#9C3EDA;--shiki-default:#F9E2AF;--shiki-dark:#F9E2AF}html pre.shiki code .sgRL5, html code.shiki .sgRL5{--shiki-light:#FF5370;--shiki-default:#FAB387;--shiki-dark:#FAB387}html pre.shiki code .s27pR, html code.shiki .s27pR{--shiki-light:#39ADB5;--shiki-default:#CBA6F7;--shiki-dark:#CBA6F7}",{"title":109,"searchDepth":127,"depth":127,"links":2714},[2715,2716,2721,2722,2728,2731,2732,2733,2734],{"id":98,"depth":127,"text":99},{"id":283,"depth":127,"text":286,"children":2717},[2718,2719,2720],{"id":558,"depth":137,"text":559},{"id":690,"depth":137,"text":691},{"id":806,"depth":137,"text":807},{"id":979,"depth":127,"text":980},{"id":1042,"depth":127,"text":1043,"children":2723},[2724,2726,2727],{"id":1061,"depth":137,"text":2725},"Form and FormProvider",{"id":1421,"depth":137,"text":990},{"id":1445,"depth":137,"text":1446},{"id":1661,"depth":127,"text":1664,"children":2729},[2730],{"id":2100,"depth":137,"text":2101},{"id":2276,"depth":127,"text":2277},{"id":2493,"depth":127,"text":2494},{"id":2661,"depth":127,"text":2662},{"id":2692,"depth":127,"text":2693},"Public entry points, form engine, renderless components, renderer factory, composables, and controllers.","md",null,{},{"title":71,"description":2735},"rj275MNdBxKPqOUcljTpBGyWqmNFN0AGARwhbYj_rNs",[2742,2744],{"title":67,"path":68,"stem":69,"description":2743,"children":-1},"Form lifecycle, validation, authorization, wizards, uploads, and rich-text helpers.",{"title":75,"path":76,"stem":77,"description":2745,"children":-1},"Upload configuration, opt-in routes, publish tags, Artisan commands, and operational security.",1786995560669]