[{"data":1,"prerenderedAt":1328},["ShallowReactive",2],{"content-\u002Fdocs\u002Freference\u002Ftypes":3},{"id":4,"title":5,"body":6,"description":1310,"extension":1311,"meta":1312,"metaRows":1313,"navigation":1322,"path":1323,"seo":1324,"source":1325,"stem":1326,"__hash__":1327},"docs\u002Fdocs\u002Freference\u002Ftypes.md","Types reference",{"type":7,"value":8,"toc":1292},"minimark",[9,13,20,23,37,42,210,214,320,324,495,499,582,586,668,672,820,824,949,953,1022,1026,1066,1070,1151,1155,1182,1186,1218,1222,1228,1251,1264,1268],[10,11,5],"h1",{"id":12},"types-reference",[14,15,16],"blockquote",{},[17,18,19],"p",{},"Every public type Attaform exports, grouped by purpose. Inference handles the common cases; these are for advanced wiring (custom adapters, deeply nested generic helpers, type-safe consumer libraries).",[21,22],"docs-meta-table",{},[17,24,25,26,31,32,36],{},"This page is reference material, alphabetical-ish by purpose. Most consumers never reach for these directly; the ",[27,28,30],"a",{"href":29},"\u002Fdocs\u002Fschemas\u002Fcontract","Inference-first DX"," doctrine means ",[33,34,35],"code",{},"useForm"," + a schema gives you autocomplete on every reactive surface without naming the types.",[38,39,41],"h2",{"id":40},"form-configuration","Form configuration",[43,44,45,61],"table",{},[46,47,48],"thead",{},[49,50,51,55,58],"tr",{},[52,53,54],"th",{},"Type",[52,56,57],{},"Source",[52,59,60],{},"Purpose",[62,63,64,81,93,109,124,139,163,182],"tbody",{},[49,65,66,72,75],{},[67,68,69],"td",{},[33,70,71],{},"UseFormConfiguration\u003CForm>",[67,73,74],{},"runtime\u002Ftypes\u002Ftypes-api",[67,76,77,78,80],{},"The options bag passed to ",[33,79,35],{},".",[49,82,83,88,90],{},[67,84,85],{},[33,86,87],{},"UseFormReturnType\u003CForm, GetValue>",[67,89,74],{},[67,91,92],{},"The whole reactive return: values, fields, errors, meta, methods.",[49,94,95,100,103],{},[67,96,97],{},[33,98,99],{},"AttaformPluginOptions",[67,101,102],{},"runtime\u002Fcore\u002Fplugin",[67,104,105,106,80],{},"Options for ",[33,107,108],{},"createAttaform({ defaults, devtools })",[49,110,111,116,118],{},[67,112,113],{},[33,114,115],{},"AttaformDefaults",[67,117,74],{},[67,119,120,121,80],{},"The fields settable via ",[33,122,123],{},"createAttaform({ defaults })",[49,125,126,131,133],{},[67,127,128],{},[33,129,130],{},"HistoryConfig",[67,132,74],{},[67,134,135,138],{},[33,136,137],{},"useForm({ history })"," shape.",[49,140,141,146,148],{},[67,142,143],{},[33,144,145],{},"OnInvalidSubmitPolicy",[67,147,74],{},[67,149,150,153,154,153,157,153,160,80],{},[33,151,152],{},"'none'"," | ",[33,155,156],{},"'focus-first-error'",[33,158,159],{},"'scroll-to-first-error'",[33,161,162],{},"'both'",[49,164,165,174,176],{},[67,166,167,170,171],{},[33,168,169],{},"ValidateOn"," \u002F ",[33,172,173],{},"ValidateOnConfig",[67,175,74],{},[67,177,178,181],{},[33,179,180],{},"validateOn"," field and its discriminated config.",[49,183,184,192,194],{},[67,185,186,170,189],{},[33,187,188],{},"DisplayState",[33,190,191],{},"GetDisplayState",[67,193,74],{},[67,195,196,197,153,200,153,203,153,206,209],{},"The display-state verdict (",[33,198,199],{},"idle",[33,201,202],{},"pending",[33,204,205],{},"error",[33,207,208],{},"success",") and its resolver.",[38,211,213],{"id":212},"reactive-surfaces","Reactive surfaces",[43,215,216,226],{},[46,217,218],{},[49,219,220,222,224],{},[52,221,54],{},[52,223,57],{},[52,225,60],{},[62,227,228,240,258,270,284,296,308],{},[49,229,230,235,237],{},[67,231,232],{},[33,233,234],{},"FieldState\u003CValue>",[67,236,74],{},[67,238,239],{},"The 29-property per-leaf reactive bundle.",[49,241,242,250,252],{},[67,243,244,170,247],{},[33,245,246],{},"FieldStateMap\u003CForm>",[33,248,249],{},"Entry",[67,251,74],{},[67,253,254,255,80],{},"The proxy shape exposing ",[33,256,257],{},"form.fields",[49,259,260,265,267],{},[67,261,262],{},[33,263,264],{},"FormMeta\u003CForm>",[67,266,74],{},[67,268,269],{},"Form-level aggregates over every field's state.",[49,271,272,277,279],{},[67,273,274],{},[33,275,276],{},"FormErrorsSurface\u003CForm>",[67,278,74],{},[67,280,254,281,80],{},[33,282,283],{},"form.errors",[49,285,286,291,293],{},[67,287,288],{},[33,289,290],{},"FormErrorRecord",[67,292,74],{},[67,294,295],{},"The per-path error array shape.",[49,297,298,303,305],{},[67,299,300],{},[33,301,302],{},"ErrorsProxyShape\u003CForm>",[67,304,74],{},[67,306,307],{},"Type-level view of the errors proxy for advanced helpers.",[49,309,310,315,317],{},[67,311,312],{},[33,313,314],{},"WriteMeta",[67,316,74],{},[67,318,319],{},"Metadata attached to a mutation (source, batch flags).",[38,321,323],{"id":322},"validation","Validation",[43,325,326,336],{},[46,327,328],{},[49,329,330,332,334],{},[52,331,54],{},[52,333,57],{},[52,335,60],{},[62,337,338,354,385,401,413,431,443,461,483],{},[49,339,340,345,347],{},[67,341,342],{},[33,343,344],{},"ValidationError",[67,346,74],{},[67,348,349,350,353],{},"The error shape (",[33,351,352],{},"{ path, message, code, formKey, data? }",").",[49,355,356,361,363],{},[67,357,358],{},[33,359,360],{},"ErrorInput",[67,362,74],{},[67,364,365,366,369,370,373,374,377,378,381,382,384],{},"What ",[33,367,368],{},"form.setErrors"," accepts: an ",[33,371,372],{},"Error"," or ",[33,375,376],{},"{ message?, path?, code?, data? }",". ",[33,379,380],{},"formKey"," is also accepted but ignored (the form stamps its own), so ",[33,383,344],{}," is a subtype.",[49,386,387,392,394],{},[67,388,389],{},[33,390,391],{},"Json",[67,393,74],{},[67,395,396,397,400],{},"JSON-serialisable value; the type of the optional ",[33,398,399],{},"data"," payload.",[49,402,403,408,410],{},[67,404,405],{},[33,406,407],{},"ValidationResponse\u003CForm>",[67,409,74],{},[67,411,412],{},"Discriminated success-or-failure validation result with parsed data.",[49,414,415,420,422],{},[67,416,417],{},[33,418,419],{},"ValidationResponseWithoutValue\u003CForm>",[67,421,74],{},[67,423,424,425,427,428,353],{},"Same shape minus the ",[33,426,399],{}," payload (used by ",[33,429,430],{},"validateAsync",[49,432,433,438,440],{},[67,434,435],{},[33,436,437],{},"ReactiveValidationStatus\u003CForm>",[67,439,74],{},[67,441,442],{},"Discriminated pending-vs-settled reactive validation status.",[49,444,445,453,455],{},[67,446,447,170,450],{},[33,448,449],{},"PendingValidationStatus",[33,451,452],{},"SettledValidationStatus",[67,454,74],{},[67,456,457,458,80],{},"The two branches of ",[33,459,460],{},"ReactiveValidationStatus",[49,462,463,474,476],{},[67,464,465,170,468,170,471],{},[33,466,467],{},"HandleSubmit",[33,469,470],{},"OnSubmit",[33,472,473],{},"OnError",[67,475,74],{},[67,477,478,479,482],{},"The ",[33,480,481],{},"handleSubmit"," callback signatures.",[49,484,485,490,492],{},[67,486,487],{},[33,488,489],{},"SubmitHandler\u003CForm>",[67,491,74],{},[67,493,494],{},"Generic handler type for typed user submit functions.",[38,496,498],{"id":497},"schema-contract","Schema contract",[43,500,501,511],{},[46,502,503],{},[49,504,505,507,509],{},[52,506,54],{},[52,508,57],{},[52,510,60],{},[62,512,513,525,540,558,570],{},[49,514,515,520,522],{},[67,516,517],{},[33,518,519],{},"AbstractSchema\u003CForm, GetValue>",[67,521,74],{},[67,523,524],{},"The 12-method + 2-optional contract custom adapters implement.",[49,526,527,532,534],{},[67,528,529],{},[33,530,531],{},"DefaultValuesResponse\u003CForm>",[67,533,74],{},[67,535,365,536,539],{},[33,537,538],{},"getDefaultValues"," returns.",[49,541,542,547,549],{},[67,543,544],{},[33,545,546],{},"SlimPrimitiveKind",[67,548,74],{},[67,550,551,153,554,557],{},[33,552,553],{},"'string'",[33,555,556],{},"'number'"," | … (typeof-style kinds).",[49,559,560,565,567],{},[67,561,562],{},[33,563,564],{},"SlimRuntimeOf\u003CT>",[67,566,74],{},[67,568,569],{},"Type-level helper to compute the slim primitive set for a type.",[49,571,572,577,579],{},[67,573,574],{},[33,575,576],{},"FieldMetaPayload",[67,578,74],{},[67,580,581],{},"Schema-attached metadata: label, description, placeholder, meta.",[38,583,585],{"id":584},"path-types","Path types",[43,587,588,598],{},[46,589,590],{},[49,591,592,594,596],{},[52,593,54],{},[52,595,57],{},[52,597,60],{},[62,599,600,613,625,637,649],{},[49,601,602,607,610],{},[67,603,604],{},[33,605,606],{},"FlatPath\u003CForm>",[67,608,609],{},"runtime\u002Ftypes\u002Ftypes-core",[67,611,612],{},"Every reachable dotted path through the form.",[49,614,615,620,622],{},[67,616,617],{},[33,618,619],{},"PartialFlatPath\u003CForm>",[67,621,609],{},[67,623,624],{},"Same but allowing partial-prefix paths.",[49,626,627,632,634],{},[67,628,629],{},[33,630,631],{},"ArrayPath\u003CForm>",[67,633,609],{},[67,635,636],{},"Every reachable path whose value is an array.",[49,638,639,644,646],{},[67,640,641],{},[33,642,643],{},"JoinSegments\u003CSegments>",[67,645,609],{},[67,647,648],{},"Type-level join of a segment tuple into a dotted string.",[49,650,651,662,665],{},[67,652,653,170,656,170,659],{},[33,654,655],{},"Path",[33,657,658],{},"PathKey",[33,660,661],{},"Segment",[67,663,664],{},"runtime\u002Fcore\u002Fpaths",[67,666,667],{},"Canonicalized runtime path representation.",[38,669,671],{"id":670},"shape-helpers","Shape helpers",[43,673,674,684],{},[46,675,676],{},[49,677,678,680,682],{},[52,679,54],{},[52,681,57],{},[52,683,60],{},[62,685,686,698,710,728,748,763,775,787,808],{},[49,687,688,693,695],{},[67,689,690],{},[33,691,692],{},"GenericForm",[67,694,609],{},[67,696,697],{},"The most-permissive form shape; used in generics that constrain.",[49,699,700,705,707],{},[67,701,702],{},[33,703,704],{},"DeepPartial\u003CT>",[67,706,609],{},[67,708,709],{},"Every leaf made optional, recursively.",[49,711,712,720,722],{},[67,713,714,170,717],{},[33,715,716],{},"DefaultValuesInput\u003CSchema>",[33,718,719],{},"DefaultValuesShape\u003CForm>",[67,721,609],{},[67,723,478,724,727],{},[33,725,726],{},"defaultValues"," argument shape vs. the resolved tree.",[49,729,730,735,737],{},[67,731,732],{},[33,733,734],{},"WriteShape\u003CSchema>",[67,736,609],{},[67,738,739,740,743,744,747],{},"The shape ",[33,741,742],{},"setValue"," accepts (",[33,745,746],{},"z.input","-equivalent).",[49,749,750,758,760],{},[67,751,752,170,755],{},[33,753,754],{},"NestedReadType\u003CT, P>",[33,756,757],{},"NestedType\u003CT, P>",[67,759,609],{},[67,761,762],{},"Walk a type to the value at a path.",[49,764,765,770,772],{},[67,766,767],{},[33,768,769],{},"LiftedValueShape\u003CT>",[67,771,609],{},[67,773,774],{},"Helper for variant-memory and discriminated-union plumbing.",[49,776,777,782,784],{},[67,778,779],{},[33,780,781],{},"ArrayItem\u003CT>",[67,783,609],{},[67,785,786],{},"Element type of an array.",[49,788,789,803,805],{},[67,790,791,170,794,170,797,170,800],{},[33,792,793],{},"IsTuple\u003CT>",[33,795,796],{},"IsUnion\u003CT>",[33,798,799],{},"KeyofUnion\u003CT>",[33,801,802],{},"ValueOfUnion\u003CT>",[67,804,609],{},[67,806,807],{},"Type-level predicates and unions over generic values.",[49,809,810,815,817],{},[67,811,812],{},[33,813,814],{},"Primitive",[67,816,609],{},[67,818,819],{},"The base primitive set.",[38,821,823],{"id":822},"binding","Binding",[43,825,826,836],{},[46,827,828],{},[49,829,830,832,834],{},[52,831,54],{},[52,833,57],{},[52,835,60],{},[62,837,838,853,868,883,907,919,934],{},[49,839,840,845,847],{},[67,841,842],{},[33,843,844],{},"RegisterDirective",[67,846,74],{},[67,848,478,849,852],{},[33,850,851],{},"v-register"," directive type.",[49,854,855,863,865],{},[67,856,857,170,860],{},[33,858,859],{},"RegisterValue",[33,861,862],{},"RegisterOptions",[67,864,74],{},[67,866,867],{},"The value the directive accepts; the per-register options shape.",[49,869,870,875,877],{},[67,871,872],{},[33,873,874],{},"RegisterFlatPath\u003CForm>",[67,876,74],{},[67,878,879,880,80],{},"Paths bindable through ",[33,881,882],{},"register",[49,884,885,893,895],{},[67,886,887,170,890],{},[33,888,889],{},"RegisterTextModifier",[33,891,892],{},"RegisterSelectModifier",[67,894,74],{},[67,896,478,897,170,900,170,903,906],{},[33,898,899],{},".lazy",[33,901,902],{},".trim",[33,904,905],{},".number"," modifier types.",[49,908,909,914,916],{},[67,910,911],{},[33,912,913],{},"RegisterTransform\u003CV>",[67,915,74],{},[67,917,918],{},"Custom DOM ↔ value transform shape.",[49,920,921,926,928],{},[67,922,923],{},[33,924,925],{},"CustomDirectiveRegisterAssignerFn",[67,927,74],{},[67,929,478,930,933],{},[33,931,932],{},"assignKey"," custom-assigner signature.",[49,935,936,941,944],{},[67,937,938],{},[33,939,940],{},"UseRegisterReturn\u003CV>",[67,942,943],{},"runtime\u002Fcomposables\u002Fuse-register",[67,945,365,946,539],{},[33,947,948],{},"useRegister\u003CV>()",[38,950,952],{"id":951},"set-mutate","Set \u002F mutate",[43,954,955,965],{},[46,956,957],{},[49,958,959,961,963],{},[52,960,54],{},[52,962,57],{},[52,964,60],{},[62,966,967,979,994,1006],{},[49,968,969,974,976],{},[67,970,971],{},[33,972,973],{},"SetValuePayload\u003CForm>",[67,975,74],{},[67,977,978],{},"Whole-form merge payload shape.",[49,980,981,986,988],{},[67,982,983],{},[33,984,985],{},"SetValueCallback\u003CForm>",[67,987,74],{},[67,989,478,990,993],{},[33,991,992],{},"(prev) => next"," callback signature.",[49,995,996,1001,1003],{},[67,997,998],{},[33,999,1000],{},"MetaTrackerValue",[67,1002,74],{},[67,1004,1005],{},"Internal \"I'm mutating\" flag exposed for advanced consumers.",[49,1007,1008,1013,1016],{},[67,1009,1010],{},[33,1011,1012],{},"Unset",[67,1014,1015],{},"runtime\u002Fcore\u002Funset",[67,1017,478,1018,1021],{},[33,1019,1020],{},"unset"," sentinel's brand type.",[38,1023,1025],{"id":1024},"ssr-payload","SSR payload",[43,1027,1028,1038],{},[46,1029,1030],{},[49,1031,1032,1034,1036],{},[52,1033,54],{},[52,1035,57],{},[52,1037,60],{},[62,1039,1040,1053],{},[49,1041,1042,1047,1050],{},[67,1043,1044],{},[33,1045,1046],{},"SerializedAttaformState",[67,1048,1049],{},"runtime\u002Fcore\u002Fserialize",[67,1051,1052],{},"The SSR payload shape.",[49,1054,1055,1060,1063],{},[67,1056,1057],{},[33,1058,1059],{},"SerializedFormData",[67,1061,1062],{},"runtime\u002Fcore\u002Fregistry",[67,1064,1065],{},"Single form's serialized state.",[38,1067,1069],{"id":1068},"wizard","Wizard",[43,1071,1072,1082],{},[46,1073,1074],{},[49,1075,1076,1078,1080],{},[52,1077,54],{},[52,1079,57],{},[52,1081,60],{},[62,1083,1084,1097,1109,1130],{},[49,1085,1086,1091,1094],{},[67,1087,1088],{},[33,1089,1090],{},"UseWizardReturnType\u003CForms>",[67,1092,1093],{},"runtime\u002Ftypes\u002Ftypes-wizard",[67,1095,1096],{},"The whole wizard return: current, statuses, navigation.",[49,1098,1099,1104,1106],{},[67,1100,1101],{},[33,1102,1103],{},"WizardOptions\u003CForms>",[67,1105,1093],{},[67,1107,1108],{},"The options bag.",[49,1110,1111,1122,1124],{},[67,1112,1113,170,1116,170,1119],{},[33,1114,1115],{},"AnyForm",[33,1117,1118],{},"FormKeyOf\u003CF>",[33,1120,1121],{},"KeysOf\u003CForms>",[67,1123,1093],{},[67,1125,1126,1127,80],{},"Helpers for typing forms passed to ",[33,1128,1129],{},"useWizard",[49,1131,1132,1137,1139],{},[67,1133,1134],{},[33,1135,1136],{},"WizardNavOptions",[67,1138,1093],{},[67,1140,1141,1142,170,1145,170,1148,80],{},"Options forwarded to ",[33,1143,1144],{},"next",[33,1146,1147],{},"back",[33,1149,1150],{},"goTo",[38,1152,1154],{"id":1153},"devtools","DevTools",[43,1156,1157,1167],{},[46,1158,1159],{},[49,1160,1161,1163,1165],{},[52,1162,54],{},[52,1164,57],{},[52,1166,60],{},[62,1168,1169],{},[49,1170,1171,1176,1179],{},[67,1172,1173],{},[33,1174,1175],{},"AttaformDevtoolsBridge",[67,1177,1178],{},"runtime\u002Fcore\u002Fdevtools-shared",[67,1180,1181],{},"The window-bridge contract the Nuxt overlay consumes.",[38,1183,1185],{"id":1184},"coercion","Coercion",[43,1187,1188,1198],{},[46,1189,1190],{},[49,1191,1192,1194,1196],{},[52,1193,54],{},[52,1195,57],{},[52,1197,60],{},[62,1199,1200],{},[49,1201,1202,1213,1215],{},[67,1203,1204,170,1207,170,1210],{},[33,1205,1206],{},"CoercionEntry",[33,1208,1209],{},"CoercionRegistry",[33,1211,1212],{},"CoercionResult",[67,1214,74],{},[67,1216,1217],{},"The schema-driven coercion shapes.",[38,1219,1221],{"id":1220},"internal-only-not-for-direct-consumption","Internal-only (not for direct consumption)",[17,1223,1224,1225,1227],{},"These types ride on internal helpers and are exported for advanced custom-adapter authors. The ",[27,1226,30],{"href":29}," doctrine means everyday consumers never need them:",[1229,1230,1231,1241,1246],"ul",{},[1232,1233,1234,170,1237,1240],"li",{},[33,1235,1236],{},"StorageLeaf",[33,1238,1239],{},"StorageShape",": the slim-write-shape internal representations the runtime walks.",[1232,1242,1243,1245],{},[33,1244,619],{},": used by the path-prefix matchers inside the runtime.",[1232,1247,1248,1250],{},[33,1249,769],{},": variant-memory plumbing.",[17,1252,1253,1254,1257,1258,1257,1261,1263],{},"Treat them as appendix items: stable enough to reference, but the public-facing surfaces (",[33,1255,1256],{},"UseFormReturnType",", ",[33,1259,1260],{},"FieldState",[33,1262,344],{},") are what consumer code should depend on.",[38,1265,1267],{"id":1266},"where-to-next","Where to next",[1229,1269,1270,1276,1285],{},[1232,1271,1272,1275],{},[27,1273,1274],{"href":29},"The schema contract",": the high-level model these types implement.",[1232,1277,1278,1284],{},[27,1279,1281],{"href":1280},"\u002Fdocs\u002Fschemas\u002Fabstract-schema",[33,1282,1283],{},"AbstractSchema",": when you need the contract for a non-Zod schema library.",[1232,1286,1287,1291],{},[27,1288,1290],{"href":1289},"\u002Fdocs\u002Freference\u002Fentry-points","Entry-point reference",": which subpath each type ships from.",{"title":1293,"searchDepth":1294,"depth":1294,"links":1295},"",2,[1296,1297,1298,1299,1300,1301,1302,1303,1304,1305,1306,1307,1308,1309],{"id":40,"depth":1294,"text":41},{"id":212,"depth":1294,"text":213},{"id":322,"depth":1294,"text":323},{"id":497,"depth":1294,"text":498},{"id":584,"depth":1294,"text":585},{"id":670,"depth":1294,"text":671},{"id":822,"depth":1294,"text":823},{"id":951,"depth":1294,"text":952},{"id":1024,"depth":1294,"text":1025},{"id":1068,"depth":1294,"text":1069},{"id":1153,"depth":1294,"text":1154},{"id":1184,"depth":1294,"text":1185},{"id":1220,"depth":1294,"text":1221},{"id":1266,"depth":1294,"text":1267},"Every public type Attaform exports, grouped by purpose. Inference flows from useForm; consumers rarely need to reach for these directly, but they're documented for advanced wiring.","md",{},[1314,1317,1320],{"label":1315,"value":1316},"Category","Reference",{"label":1318,"value":1319},"Doctrine","inference-first; types exposed but rarely needed",{"label":57,"value":1321,"kind":33},"src\u002Fruntime\u002Ftypes\u002Ftypes-api.ts + types-core.ts",true,"\u002Fdocs\u002Freference\u002Ftypes",{"title":5,"description":1310},null,"docs\u002Freference\u002Ftypes","vRjlRowGXZb4PUwXiYYorcxjbtKdfdPG5dfoyGnlCuQ",1781745874847]