[{"data":1,"prerenderedAt":2185},["ShallowReactive",2],{"navigation_docs":3,"-guide-forms":91,"-guide-forms-surround":2180},[4,18,67],{"title":5,"path":6,"stem":7,"children":8,"page":17},"Getting Started","/getting-started","1.getting-started",[9,13],{"title":10,"path":11,"stem":12},"Installation","/getting-started/installation","1.getting-started/1.installation",{"title":14,"path":15,"stem":16},"Usage","/getting-started/usage","1.getting-started/2.usage",false,{"title":19,"path":20,"stem":21,"children":22,"page":17},"Guide","/guide","2.guide",[23,27,31,35,39,43,47,51,55,59,63],{"title":24,"path":25,"stem":26},"Action Client","/guide/action-client","2.guide/1.action-client",{"title":28,"path":29,"stem":30},"Queries","/guide/queries","2.guide/10.queries",{"title":32,"path":33,"stem":34},"Comparison","/guide/comparison","2.guide/11.comparison",{"title":36,"path":37,"stem":38},"Defining Actions","/guide/defining-actions","2.guide/2.defining-actions",{"title":40,"path":41,"stem":42},"useAction","/guide/use-action","2.guide/3.use-action",{"title":44,"path":45,"stem":46},"Middleware","/guide/middleware","2.guide/4.middleware",{"title":48,"path":49,"stem":50},"Error Handling","/guide/error-handling","2.guide/5.error-handling",{"title":52,"path":53,"stem":54},"Validation","/guide/validation","2.guide/6.validation",{"title":56,"path":57,"stem":58},"Forms","/guide/forms","2.guide/7.forms",{"title":60,"path":61,"stem":62},"Authentication","/guide/authentication","2.guide/8.authentication",{"title":64,"path":65,"stem":66},"Optimistic Updates","/guide/optimistic-updates","2.guide/9.optimistic-updates",{"title":68,"path":69,"stem":70,"children":71,"page":17},"Api","/api","3.api",[72,76,80,83,87],{"title":73,"path":74,"stem":75},"createSafeActionClient","/api/create-safe-action-client","3.api/1.create-safe-action-client",{"title":77,"path":78,"stem":79},"Builder Chain","/api/builder-chain","3.api/2.builder-chain",{"title":40,"path":81,"stem":82},"/api/use-action","3.api/3.use-action",{"title":84,"path":85,"stem":86},"useFormAction","/api/use-form-action","3.api/4.use-form-action",{"title":88,"path":89,"stem":90},"useOptimisticAction","/api/use-optimistic-action","3.api/5.use-optimistic-action",{"id":92,"title":56,"body":93,"description":2174,"extension":2175,"links":2176,"meta":2177,"navigation":309,"path":57,"seo":2178,"stem":58,"__hash__":2179},"docs/2.guide/7.forms.md",{"type":94,"value":95,"toc":2170},"minimark",[96,100,110,201,215,236,241,248,669,1307,1314,1318,1335,2151,2166],[97,98,56],"h1",{"id":99},"forms",[101,102,103,106,107,109],"p",{},[104,105,84],"code",{}," adds typed values, a submission snapshot, and initial-value reset to ",[104,108,40],{},". It has no UI-library dependency.",[111,112,117],"pre",{"className":113,"code":114,"language":115,"meta":116,"style":116},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const form = useFormAction(updateProfile, {\n  initialValues: { profile: { name: '', email: '' } },\n})\n","ts","",[104,118,119,149,192],{"__ignoreMap":116},[120,121,124,128,132,136,140,143,146],"span",{"class":122,"line":123},"line",1,[120,125,127],{"class":126},"spNyl","const",[120,129,131],{"class":130},"sTEyZ"," form ",[120,133,135],{"class":134},"sMK4o","=",[120,137,139],{"class":138},"s2Zo4"," useFormAction",[120,141,142],{"class":130},"(updateProfile",[120,144,145],{"class":134},",",[120,147,148],{"class":134}," {\n",[120,150,152,156,159,162,165,167,169,172,174,177,179,182,184,186,189],{"class":122,"line":151},2,[120,153,155],{"class":154},"swJcz","  initialValues",[120,157,158],{"class":134},":",[120,160,161],{"class":134}," {",[120,163,164],{"class":154}," profile",[120,166,158],{"class":134},[120,168,161],{"class":134},[120,170,171],{"class":154}," name",[120,173,158],{"class":134},[120,175,176],{"class":134}," ''",[120,178,145],{"class":134},[120,180,181],{"class":154}," email",[120,183,158],{"class":134},[120,185,176],{"class":134},[120,187,188],{"class":134}," }",[120,190,191],{"class":134}," },\n",[120,193,195,198],{"class":122,"line":194},3,[120,196,197],{"class":134},"}",[120,199,200],{"class":130},")\n",[101,202,203,206,207,210,211,214],{},[104,204,205],{},"values"," is a mutable ref inferred from action input. ",[104,208,209],{},"submit()"," snapshots current values and resolves the full result envelope. ",[104,212,213],{},"reset()"," cancels pending execution, clears action state, and restores the initial captured values. Use plain form objects/arrays/primitives. Dates can be cloned locally but JSON sends them as strings; use ISO strings in action contracts.",[101,216,217,220,221,224,225,228,229,232,233,235],{},[104,218,219],{},"fieldErrors"," is always an object containing dotted paths. ",[104,222,223],{},"rootErrors"," combines legacy ",[104,226,227],{},"_root"," and transport ",[104,230,231],{},"_errors"," messages. All other ",[104,234,40],{}," refs, methods, options, and callbacks remain available.",[237,238,240],"h2",{"id":239},"working-html-form","Working HTML form",[101,242,243,244,247],{},"This action returns a demonstration profile without persistent storage. The same runnable example is in the repository's ",[104,245,246],{},"example/"," directory.",[111,249,252],{"className":113,"code":250,"filename":251,"language":115,"meta":116,"style":116},"import { z } from 'zod'\nimport { createSafeActionClient, returnValidationErrors } from '#safe-action'\n\nexport default createSafeActionClient()\n  .schema(z.object({ profile: z.object({\n    name: z.string().trim().min(2, 'Use at least two characters'),\n    email: z.string().email('Enter a valid email'),\n  }) }))\n  .outputSchema(z.object({ profile: z.object({ name: z.string(), email: z.string() }) }))\n  .action(({ parsedInput }) => {\n    if (parsedInput.profile.name.toLowerCase() === 'admin') {\n      returnValidationErrors({ 'profile.name': ['This name is reserved'] })\n    }\n    return { profile: parsedInput.profile }\n  })\n","server/actions/update-profile.ts",[104,253,254,280,305,311,325,364,416,450,464,531,556,599,635,641,662],{"__ignoreMap":116},[120,255,256,260,262,265,267,270,273,277],{"class":122,"line":123},[120,257,259],{"class":258},"s7zQu","import",[120,261,161],{"class":134},[120,263,264],{"class":130}," z",[120,266,188],{"class":134},[120,268,269],{"class":258}," from",[120,271,272],{"class":134}," '",[120,274,276],{"class":275},"sfazB","zod",[120,278,279],{"class":134},"'\n",[120,281,282,284,286,289,291,294,296,298,300,303],{"class":122,"line":151},[120,283,259],{"class":258},[120,285,161],{"class":134},[120,287,288],{"class":130}," createSafeActionClient",[120,290,145],{"class":134},[120,292,293],{"class":130}," returnValidationErrors",[120,295,188],{"class":134},[120,297,269],{"class":258},[120,299,272],{"class":134},[120,301,302],{"class":275},"#safe-action",[120,304,279],{"class":134},[120,306,307],{"class":122,"line":194},[120,308,310],{"emptyLinePlaceholder":309},true,"\n",[120,312,314,317,320,322],{"class":122,"line":313},4,[120,315,316],{"class":258},"export",[120,318,319],{"class":258}," default",[120,321,288],{"class":138},[120,323,324],{"class":130},"()\n",[120,326,328,331,334,337,340,343,346,349,351,353,355,357,359,361],{"class":122,"line":327},5,[120,329,330],{"class":134},"  .",[120,332,333],{"class":138},"schema",[120,335,336],{"class":130},"(z",[120,338,339],{"class":134},".",[120,341,342],{"class":138},"object",[120,344,345],{"class":130},"(",[120,347,348],{"class":134},"{",[120,350,164],{"class":154},[120,352,158],{"class":134},[120,354,264],{"class":130},[120,356,339],{"class":134},[120,358,342],{"class":138},[120,360,345],{"class":130},[120,362,363],{"class":134},"{\n",[120,365,367,370,372,374,376,379,382,384,387,389,391,394,396,400,402,404,407,410,413],{"class":122,"line":366},6,[120,368,369],{"class":154},"    name",[120,371,158],{"class":134},[120,373,264],{"class":130},[120,375,339],{"class":134},[120,377,378],{"class":138},"string",[120,380,381],{"class":130},"()",[120,383,339],{"class":134},[120,385,386],{"class":138},"trim",[120,388,381],{"class":130},[120,390,339],{"class":134},[120,392,393],{"class":138},"min",[120,395,345],{"class":130},[120,397,399],{"class":398},"sbssI","2",[120,401,145],{"class":134},[120,403,272],{"class":134},[120,405,406],{"class":275},"Use at least two characters",[120,408,409],{"class":134},"'",[120,411,412],{"class":130},")",[120,414,415],{"class":134},",\n",[120,417,419,422,424,426,428,430,432,434,437,439,441,444,446,448],{"class":122,"line":418},7,[120,420,421],{"class":154},"    email",[120,423,158],{"class":134},[120,425,264],{"class":130},[120,427,339],{"class":134},[120,429,378],{"class":138},[120,431,381],{"class":130},[120,433,339],{"class":134},[120,435,436],{"class":138},"email",[120,438,345],{"class":130},[120,440,409],{"class":134},[120,442,443],{"class":275},"Enter a valid email",[120,445,409],{"class":134},[120,447,412],{"class":130},[120,449,415],{"class":134},[120,451,453,456,459,461],{"class":122,"line":452},8,[120,454,455],{"class":134},"  }",[120,457,458],{"class":130},") ",[120,460,197],{"class":134},[120,462,463],{"class":130},"))\n",[120,465,467,469,472,474,476,478,480,482,484,486,488,490,492,494,496,498,500,502,504,506,508,510,512,514,516,518,520,523,525,527,529],{"class":122,"line":466},9,[120,468,330],{"class":134},[120,470,471],{"class":138},"outputSchema",[120,473,336],{"class":130},[120,475,339],{"class":134},[120,477,342],{"class":138},[120,479,345],{"class":130},[120,481,348],{"class":134},[120,483,164],{"class":154},[120,485,158],{"class":134},[120,487,264],{"class":130},[120,489,339],{"class":134},[120,491,342],{"class":138},[120,493,345],{"class":130},[120,495,348],{"class":134},[120,497,171],{"class":154},[120,499,158],{"class":134},[120,501,264],{"class":130},[120,503,339],{"class":134},[120,505,378],{"class":138},[120,507,381],{"class":130},[120,509,145],{"class":134},[120,511,181],{"class":154},[120,513,158],{"class":134},[120,515,264],{"class":130},[120,517,339],{"class":134},[120,519,378],{"class":138},[120,521,522],{"class":130},"() ",[120,524,197],{"class":134},[120,526,458],{"class":130},[120,528,197],{"class":134},[120,530,463],{"class":130},[120,532,534,536,539,541,544,548,551,554],{"class":122,"line":533},10,[120,535,330],{"class":134},[120,537,538],{"class":138},"action",[120,540,345],{"class":130},[120,542,543],{"class":134},"({",[120,545,547],{"class":546},"sHdIc"," parsedInput",[120,549,550],{"class":134}," })",[120,552,553],{"class":126}," =>",[120,555,148],{"class":134},[120,557,559,562,565,568,570,573,575,578,580,583,585,588,590,593,595,597],{"class":122,"line":558},11,[120,560,561],{"class":258},"    if",[120,563,564],{"class":154}," (",[120,566,567],{"class":130},"parsedInput",[120,569,339],{"class":134},[120,571,572],{"class":130},"profile",[120,574,339],{"class":134},[120,576,577],{"class":130},"name",[120,579,339],{"class":134},[120,581,582],{"class":138},"toLowerCase",[120,584,522],{"class":154},[120,586,587],{"class":134},"===",[120,589,272],{"class":134},[120,591,592],{"class":275},"admin",[120,594,409],{"class":134},[120,596,458],{"class":154},[120,598,363],{"class":134},[120,600,602,605,607,609,611,614,616,618,621,623,626,628,631,633],{"class":122,"line":601},12,[120,603,604],{"class":138},"      returnValidationErrors",[120,606,345],{"class":154},[120,608,348],{"class":134},[120,610,272],{"class":134},[120,612,613],{"class":154},"profile.name",[120,615,409],{"class":134},[120,617,158],{"class":134},[120,619,620],{"class":154}," [",[120,622,409],{"class":134},[120,624,625],{"class":275},"This name is reserved",[120,627,409],{"class":134},[120,629,630],{"class":154},"] ",[120,632,197],{"class":134},[120,634,200],{"class":154},[120,636,638],{"class":122,"line":637},13,[120,639,640],{"class":134},"    }\n",[120,642,644,647,649,651,653,655,657,659],{"class":122,"line":643},14,[120,645,646],{"class":258},"    return",[120,648,161],{"class":134},[120,650,164],{"class":154},[120,652,158],{"class":134},[120,654,547],{"class":130},[120,656,339],{"class":134},[120,658,572],{"class":130},[120,660,661],{"class":134}," }\n",[120,663,665,667],{"class":122,"line":664},15,[120,666,455],{"class":134},[120,668,200],{"class":130},[111,670,675],{"className":671,"code":672,"filename":673,"language":674,"meta":116,"style":116},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\nimport { updateProfile } from '#safe-action/actions'\n\nconst { values, submit, data, fieldErrors, rootErrors, serverError, isExecuting, reset } =\n  useFormAction(updateProfile, { initialValues: { profile: { name: '', email: '' } } })\n\u003C/script>\n\n\u003Ctemplate>\n  \u003Cform @submit.prevent=\"submit()\">\n    \u003Clabel for=\"profile-name\">Name\u003C/label>\n    \u003Cinput id=\"profile-name\" v-model=\"values.profile.name\" :aria-invalid=\"Boolean(fieldErrors['profile.name'])\" />\n    \u003Cp v-for=\"message in fieldErrors['profile.name']\" :key=\"message\">{{ message }}\u003C/p>\n    \u003Clabel for=\"profile-email\">Email\u003C/label>\n    \u003Cinput id=\"profile-email\" v-model=\"values.profile.email\" type=\"email\" :aria-invalid=\"Boolean(fieldErrors['profile.email'])\" />\n    \u003Cp v-for=\"message in fieldErrors['profile.email']\" :key=\"message\">{{ message }}\u003C/p>\n    \u003Cp v-for=\"message in rootErrors\" :key=\"message\" role=\"alert\">{{ message }}\u003C/p>\n    \u003Cp v-if=\"serverError\" role=\"alert\">{{ serverError }}\u003C/p>\n    \u003Cbutton :disabled=\"isExecuting\">Save\u003C/button>\n    \u003Cbutton type=\"button\" @click=\"reset()\">Reset\u003C/button>\n    \u003Cp v-if=\"data\">Saved: {{ data.profile.name }}\u003C/p>\n  \u003C/form>\n\u003C/template>\n","app/components/ProfileForm.vue","vue",[104,676,677,703,723,727,776,822,831,835,844,865,897,942,983,1011,1062,1099,1149,1189,1220,1259,1288,1298],{"__ignoreMap":116},[120,678,679,682,685,688,691,693,696,698,700],{"class":122,"line":123},[120,680,681],{"class":134},"\u003C",[120,683,684],{"class":154},"script",[120,686,687],{"class":126}," setup",[120,689,690],{"class":126}," lang",[120,692,135],{"class":134},[120,694,695],{"class":134},"\"",[120,697,115],{"class":275},[120,699,695],{"class":134},[120,701,702],{"class":134},">\n",[120,704,705,707,709,712,714,716,718,721],{"class":122,"line":151},[120,706,259],{"class":258},[120,708,161],{"class":134},[120,710,711],{"class":130}," updateProfile",[120,713,188],{"class":134},[120,715,269],{"class":258},[120,717,272],{"class":134},[120,719,720],{"class":275},"#safe-action/actions",[120,722,279],{"class":134},[120,724,725],{"class":122,"line":194},[120,726,310],{"emptyLinePlaceholder":309},[120,728,729,731,733,736,738,741,743,746,748,751,753,756,758,761,763,766,768,771,773],{"class":122,"line":313},[120,730,127],{"class":126},[120,732,161],{"class":134},[120,734,735],{"class":130}," values",[120,737,145],{"class":134},[120,739,740],{"class":130}," submit",[120,742,145],{"class":134},[120,744,745],{"class":130}," data",[120,747,145],{"class":134},[120,749,750],{"class":130}," fieldErrors",[120,752,145],{"class":134},[120,754,755],{"class":130}," rootErrors",[120,757,145],{"class":134},[120,759,760],{"class":130}," serverError",[120,762,145],{"class":134},[120,764,765],{"class":130}," isExecuting",[120,767,145],{"class":134},[120,769,770],{"class":130}," reset ",[120,772,197],{"class":134},[120,774,775],{"class":134}," =\n",[120,777,778,781,783,785,787,790,792,794,796,798,800,802,804,806,808,810,812,814,816,818,820],{"class":122,"line":327},[120,779,780],{"class":138},"  useFormAction",[120,782,142],{"class":130},[120,784,145],{"class":134},[120,786,161],{"class":134},[120,788,789],{"class":154}," initialValues",[120,791,158],{"class":134},[120,793,161],{"class":134},[120,795,164],{"class":154},[120,797,158],{"class":134},[120,799,161],{"class":134},[120,801,171],{"class":154},[120,803,158],{"class":134},[120,805,176],{"class":134},[120,807,145],{"class":134},[120,809,181],{"class":154},[120,811,158],{"class":134},[120,813,176],{"class":134},[120,815,188],{"class":134},[120,817,188],{"class":134},[120,819,188],{"class":134},[120,821,200],{"class":130},[120,823,824,827,829],{"class":122,"line":366},[120,825,826],{"class":134},"\u003C/",[120,828,684],{"class":154},[120,830,702],{"class":134},[120,832,833],{"class":122,"line":418},[120,834,310],{"emptyLinePlaceholder":309},[120,836,837,839,842],{"class":122,"line":452},[120,838,681],{"class":134},[120,840,841],{"class":154},"template",[120,843,702],{"class":134},[120,845,846,849,852,855,857,859,861,863],{"class":122,"line":466},[120,847,848],{"class":134},"  \u003C",[120,850,851],{"class":154},"form",[120,853,854],{"class":126}," @submit.prevent",[120,856,135],{"class":134},[120,858,695],{"class":134},[120,860,209],{"class":275},[120,862,695],{"class":134},[120,864,702],{"class":134},[120,866,867,870,873,876,878,880,883,885,888,891,893,895],{"class":122,"line":533},[120,868,869],{"class":134},"    \u003C",[120,871,872],{"class":154},"label",[120,874,875],{"class":126}," for",[120,877,135],{"class":134},[120,879,695],{"class":134},[120,881,882],{"class":275},"profile-name",[120,884,695],{"class":134},[120,886,887],{"class":134},">",[120,889,890],{"class":130},"Name",[120,892,826],{"class":134},[120,894,872],{"class":154},[120,896,702],{"class":134},[120,898,899,901,904,907,909,911,913,915,918,920,922,925,927,930,932,934,937,939],{"class":122,"line":558},[120,900,869],{"class":134},[120,902,903],{"class":154},"input",[120,905,906],{"class":126}," id",[120,908,135],{"class":134},[120,910,695],{"class":134},[120,912,882],{"class":275},[120,914,695],{"class":134},[120,916,917],{"class":126}," v-model",[120,919,135],{"class":134},[120,921,695],{"class":134},[120,923,924],{"class":275},"values.profile.name",[120,926,695],{"class":134},[120,928,929],{"class":126}," :aria-invalid",[120,931,135],{"class":134},[120,933,695],{"class":134},[120,935,936],{"class":275},"Boolean(fieldErrors['profile.name'])",[120,938,695],{"class":134},[120,940,941],{"class":134}," />\n",[120,943,944,946,948,951,953,955,958,960,963,965,967,970,972,974,977,979,981],{"class":122,"line":601},[120,945,869],{"class":134},[120,947,101],{"class":154},[120,949,950],{"class":126}," v-for",[120,952,135],{"class":134},[120,954,695],{"class":134},[120,956,957],{"class":275},"message in fieldErrors['profile.name']",[120,959,695],{"class":134},[120,961,962],{"class":126}," :key",[120,964,135],{"class":134},[120,966,695],{"class":134},[120,968,969],{"class":275},"message",[120,971,695],{"class":134},[120,973,887],{"class":134},[120,975,976],{"class":130},"{{ message }}",[120,978,826],{"class":134},[120,980,101],{"class":154},[120,982,702],{"class":134},[120,984,985,987,989,991,993,995,998,1000,1002,1005,1007,1009],{"class":122,"line":637},[120,986,869],{"class":134},[120,988,872],{"class":154},[120,990,875],{"class":126},[120,992,135],{"class":134},[120,994,695],{"class":134},[120,996,997],{"class":275},"profile-email",[120,999,695],{"class":134},[120,1001,887],{"class":134},[120,1003,1004],{"class":130},"Email",[120,1006,826],{"class":134},[120,1008,872],{"class":154},[120,1010,702],{"class":134},[120,1012,1013,1015,1017,1019,1021,1023,1025,1027,1029,1031,1033,1036,1038,1041,1043,1045,1047,1049,1051,1053,1055,1058,1060],{"class":122,"line":643},[120,1014,869],{"class":134},[120,1016,903],{"class":154},[120,1018,906],{"class":126},[120,1020,135],{"class":134},[120,1022,695],{"class":134},[120,1024,997],{"class":275},[120,1026,695],{"class":134},[120,1028,917],{"class":126},[120,1030,135],{"class":134},[120,1032,695],{"class":134},[120,1034,1035],{"class":275},"values.profile.email",[120,1037,695],{"class":134},[120,1039,1040],{"class":126}," type",[120,1042,135],{"class":134},[120,1044,695],{"class":134},[120,1046,436],{"class":275},[120,1048,695],{"class":134},[120,1050,929],{"class":126},[120,1052,135],{"class":134},[120,1054,695],{"class":134},[120,1056,1057],{"class":275},"Boolean(fieldErrors['profile.email'])",[120,1059,695],{"class":134},[120,1061,941],{"class":134},[120,1063,1064,1066,1068,1070,1072,1074,1077,1079,1081,1083,1085,1087,1089,1091,1093,1095,1097],{"class":122,"line":664},[120,1065,869],{"class":134},[120,1067,101],{"class":154},[120,1069,950],{"class":126},[120,1071,135],{"class":134},[120,1073,695],{"class":134},[120,1075,1076],{"class":275},"message in fieldErrors['profile.email']",[120,1078,695],{"class":134},[120,1080,962],{"class":126},[120,1082,135],{"class":134},[120,1084,695],{"class":134},[120,1086,969],{"class":275},[120,1088,695],{"class":134},[120,1090,887],{"class":134},[120,1092,976],{"class":130},[120,1094,826],{"class":134},[120,1096,101],{"class":154},[120,1098,702],{"class":134},[120,1100,1102,1104,1106,1108,1110,1112,1115,1117,1119,1121,1123,1125,1127,1130,1132,1134,1137,1139,1141,1143,1145,1147],{"class":122,"line":1101},16,[120,1103,869],{"class":134},[120,1105,101],{"class":154},[120,1107,950],{"class":126},[120,1109,135],{"class":134},[120,1111,695],{"class":134},[120,1113,1114],{"class":275},"message in rootErrors",[120,1116,695],{"class":134},[120,1118,962],{"class":126},[120,1120,135],{"class":134},[120,1122,695],{"class":134},[120,1124,969],{"class":275},[120,1126,695],{"class":134},[120,1128,1129],{"class":126}," role",[120,1131,135],{"class":134},[120,1133,695],{"class":134},[120,1135,1136],{"class":275},"alert",[120,1138,695],{"class":134},[120,1140,887],{"class":134},[120,1142,976],{"class":130},[120,1144,826],{"class":134},[120,1146,101],{"class":154},[120,1148,702],{"class":134},[120,1150,1152,1154,1156,1159,1161,1163,1166,1168,1170,1172,1174,1176,1178,1180,1183,1185,1187],{"class":122,"line":1151},17,[120,1153,869],{"class":134},[120,1155,101],{"class":154},[120,1157,1158],{"class":126}," v-if",[120,1160,135],{"class":134},[120,1162,695],{"class":134},[120,1164,1165],{"class":275},"serverError",[120,1167,695],{"class":134},[120,1169,1129],{"class":126},[120,1171,135],{"class":134},[120,1173,695],{"class":134},[120,1175,1136],{"class":275},[120,1177,695],{"class":134},[120,1179,887],{"class":134},[120,1181,1182],{"class":130},"{{ serverError }}",[120,1184,826],{"class":134},[120,1186,101],{"class":154},[120,1188,702],{"class":134},[120,1190,1192,1194,1197,1200,1202,1204,1207,1209,1211,1214,1216,1218],{"class":122,"line":1191},18,[120,1193,869],{"class":134},[120,1195,1196],{"class":154},"button",[120,1198,1199],{"class":126}," :disabled",[120,1201,135],{"class":134},[120,1203,695],{"class":134},[120,1205,1206],{"class":275},"isExecuting",[120,1208,695],{"class":134},[120,1210,887],{"class":134},[120,1212,1213],{"class":130},"Save",[120,1215,826],{"class":134},[120,1217,1196],{"class":154},[120,1219,702],{"class":134},[120,1221,1223,1225,1227,1229,1231,1233,1235,1237,1240,1242,1244,1246,1248,1250,1253,1255,1257],{"class":122,"line":1222},19,[120,1224,869],{"class":134},[120,1226,1196],{"class":154},[120,1228,1040],{"class":126},[120,1230,135],{"class":134},[120,1232,695],{"class":134},[120,1234,1196],{"class":275},[120,1236,695],{"class":134},[120,1238,1239],{"class":126}," @click",[120,1241,135],{"class":134},[120,1243,695],{"class":134},[120,1245,213],{"class":275},[120,1247,695],{"class":134},[120,1249,887],{"class":134},[120,1251,1252],{"class":130},"Reset",[120,1254,826],{"class":134},[120,1256,1196],{"class":154},[120,1258,702],{"class":134},[120,1260,1262,1264,1266,1268,1270,1272,1275,1277,1279,1282,1284,1286],{"class":122,"line":1261},20,[120,1263,869],{"class":134},[120,1265,101],{"class":154},[120,1267,1158],{"class":126},[120,1269,135],{"class":134},[120,1271,695],{"class":134},[120,1273,1274],{"class":275},"data",[120,1276,695],{"class":134},[120,1278,887],{"class":134},[120,1280,1281],{"class":130},"Saved: {{ data.profile.name }}",[120,1283,826],{"class":134},[120,1285,101],{"class":154},[120,1287,702],{"class":134},[120,1289,1291,1294,1296],{"class":122,"line":1290},21,[120,1292,1293],{"class":134},"  \u003C/",[120,1295,851],{"class":154},[120,1297,702],{"class":134},[120,1299,1301,1303,1305],{"class":122,"line":1300},22,[120,1302,826],{"class":134},[120,1304,841],{"class":154},[120,1306,702],{"class":134},[101,1308,1309,1310,1313],{},"For registration/business-rule validation, use the same pattern with server-side uniqueness checks and ",[104,1311,1312],{},"returnValidationErrors({ email: ['This email is already taken'] })",". Enforce uniqueness in persistent storage as well, because concurrent requests can pass a preliminary lookup.",[237,1315,1317],{"id":1316},"nuxt-ui-uform","Nuxt UI UForm",[101,1319,1320,1321,1328,1329,1334],{},"Install/configure ",[1322,1323,1327],"a",{"href":1324,"rel":1325},"https://ui.nuxt.com/docs/getting-started/installation/nuxt",[1326],"nofollow","Nuxt UI"," separately. This recipe uses the action above and Nuxt UI's ",[1322,1330,1333],{"href":1331,"rel":1332},"https://ui.nuxt.com/docs/components/form",[1326],"setErrors and dotted-path conventions",". Client-side schema validation is optional; the server always validates.",[111,1336,1338],{"className":671,"code":1337,"language":674,"meta":116,"style":116},"\u003Cscript setup lang=\"ts\">\nimport type { FormSubmitEvent } from '@nuxt/ui'\nimport { updateProfile } from '#safe-action/actions'\n\nconst state = reactive({ profile: { name: '', email: '' } })\nconst form = useTemplateRef('form')\nconst rootErrors = ref\u003Cstring[]>([])\nconst { executeAsync, isExecuting, serverError } = useAction(updateProfile)\n\nasync function onSubmit(event: FormSubmitEvent\u003Ctypeof state>) {\n  form.value?.clear()\n  rootErrors.value = []\n  const result = await executeAsync(event.data)\n  const errors = result.validationErrors || {}\n  rootErrors.value = [...(errors._root || []), ...(errors._errors || [])]\n  form.value?.setErrors(Object.entries(errors)\n    .filter(([name]) => name !== '_root' && name !== '_errors')\n    .flatMap(([name, messages]) => messages.map(message => ({ name, message }))))\n}\n\u003C/script>\n\n\u003Ctemplate>\n  \u003CUForm ref=\"form\" :state=\"state\" @submit=\"onSubmit\">\n    \u003CUFormField label=\"Name\" name=\"profile.name\">\n      \u003CUInput v-model=\"state.profile.name\" />\n    \u003C/UFormField>\n    \u003CUFormField label=\"Email\" name=\"profile.email\">\n      \u003CUInput v-model=\"state.profile.email\" type=\"email\" />\n    \u003C/UFormField>\n    \u003Cp v-for=\"message in rootErrors\" :key=\"message\" role=\"alert\">{{ message }}\u003C/p>\n    \u003Cp v-if=\"serverError\" role=\"alert\">{{ serverError }}\u003C/p>\n    \u003CUButton type=\"submit\" :loading=\"isExecuting\">Save\u003C/UButton>\n  \u003C/UForm>\n\u003C/template>\n",[104,1339,1340,1360,1382,1400,1404,1446,1467,1492,1521,1525,1556,1574,1588,1613,1635,1682,1711,1757,1808,1813,1821,1825,1833,1877,1908,1930,1940,1970,2000,2009,2056,2093,2133,2142],{"__ignoreMap":116},[120,1341,1342,1344,1346,1348,1350,1352,1354,1356,1358],{"class":122,"line":123},[120,1343,681],{"class":134},[120,1345,684],{"class":154},[120,1347,687],{"class":126},[120,1349,690],{"class":126},[120,1351,135],{"class":134},[120,1353,695],{"class":134},[120,1355,115],{"class":275},[120,1357,695],{"class":134},[120,1359,702],{"class":134},[120,1361,1362,1364,1366,1368,1371,1373,1375,1377,1380],{"class":122,"line":151},[120,1363,259],{"class":258},[120,1365,1040],{"class":258},[120,1367,161],{"class":134},[120,1369,1370],{"class":130}," FormSubmitEvent",[120,1372,188],{"class":134},[120,1374,269],{"class":258},[120,1376,272],{"class":134},[120,1378,1379],{"class":275},"@nuxt/ui",[120,1381,279],{"class":134},[120,1383,1384,1386,1388,1390,1392,1394,1396,1398],{"class":122,"line":194},[120,1385,259],{"class":258},[120,1387,161],{"class":134},[120,1389,711],{"class":130},[120,1391,188],{"class":134},[120,1393,269],{"class":258},[120,1395,272],{"class":134},[120,1397,720],{"class":275},[120,1399,279],{"class":134},[120,1401,1402],{"class":122,"line":313},[120,1403,310],{"emptyLinePlaceholder":309},[120,1405,1406,1408,1411,1413,1416,1418,1420,1422,1424,1426,1428,1430,1432,1434,1436,1438,1440,1442,1444],{"class":122,"line":327},[120,1407,127],{"class":126},[120,1409,1410],{"class":130}," state ",[120,1412,135],{"class":134},[120,1414,1415],{"class":138}," reactive",[120,1417,345],{"class":130},[120,1419,348],{"class":134},[120,1421,164],{"class":154},[120,1423,158],{"class":134},[120,1425,161],{"class":134},[120,1427,171],{"class":154},[120,1429,158],{"class":134},[120,1431,176],{"class":134},[120,1433,145],{"class":134},[120,1435,181],{"class":154},[120,1437,158],{"class":134},[120,1439,176],{"class":134},[120,1441,188],{"class":134},[120,1443,188],{"class":134},[120,1445,200],{"class":130},[120,1447,1448,1450,1452,1454,1457,1459,1461,1463,1465],{"class":122,"line":366},[120,1449,127],{"class":126},[120,1451,131],{"class":130},[120,1453,135],{"class":134},[120,1455,1456],{"class":138}," useTemplateRef",[120,1458,345],{"class":130},[120,1460,409],{"class":134},[120,1462,851],{"class":275},[120,1464,409],{"class":134},[120,1466,200],{"class":130},[120,1468,1469,1471,1474,1476,1479,1481,1484,1487,1489],{"class":122,"line":418},[120,1470,127],{"class":126},[120,1472,1473],{"class":130}," rootErrors ",[120,1475,135],{"class":134},[120,1477,1478],{"class":138}," ref",[120,1480,681],{"class":134},[120,1482,378],{"class":1483},"sBMFI",[120,1485,1486],{"class":130},"[]",[120,1488,887],{"class":134},[120,1490,1491],{"class":130},"([])\n",[120,1493,1494,1496,1498,1501,1503,1505,1507,1510,1512,1515,1518],{"class":122,"line":452},[120,1495,127],{"class":126},[120,1497,161],{"class":134},[120,1499,1500],{"class":130}," executeAsync",[120,1502,145],{"class":134},[120,1504,765],{"class":130},[120,1506,145],{"class":134},[120,1508,1509],{"class":130}," serverError ",[120,1511,197],{"class":134},[120,1513,1514],{"class":134}," =",[120,1516,1517],{"class":138}," useAction",[120,1519,1520],{"class":130},"(updateProfile)\n",[120,1522,1523],{"class":122,"line":466},[120,1524,310],{"emptyLinePlaceholder":309},[120,1526,1527,1530,1533,1536,1538,1541,1543,1545,1548,1551,1554],{"class":122,"line":533},[120,1528,1529],{"class":126},"async",[120,1531,1532],{"class":126}," function",[120,1534,1535],{"class":138}," onSubmit",[120,1537,345],{"class":134},[120,1539,1540],{"class":546},"event",[120,1542,158],{"class":134},[120,1544,1370],{"class":1483},[120,1546,1547],{"class":134},"\u003Ctypeof",[120,1549,1550],{"class":130}," state",[120,1552,1553],{"class":134},">)",[120,1555,148],{"class":134},[120,1557,1558,1561,1563,1566,1569,1572],{"class":122,"line":558},[120,1559,1560],{"class":130},"  form",[120,1562,339],{"class":134},[120,1564,1565],{"class":130},"value",[120,1567,1568],{"class":134},"?.",[120,1570,1571],{"class":138},"clear",[120,1573,324],{"class":154},[120,1575,1576,1579,1581,1583,1585],{"class":122,"line":601},[120,1577,1578],{"class":130},"  rootErrors",[120,1580,339],{"class":134},[120,1582,1565],{"class":130},[120,1584,1514],{"class":134},[120,1586,1587],{"class":154}," []\n",[120,1589,1590,1593,1596,1598,1601,1603,1605,1607,1609,1611],{"class":122,"line":637},[120,1591,1592],{"class":126},"  const",[120,1594,1595],{"class":130}," result",[120,1597,1514],{"class":134},[120,1599,1600],{"class":258}," await",[120,1602,1500],{"class":138},[120,1604,345],{"class":154},[120,1606,1540],{"class":130},[120,1608,339],{"class":134},[120,1610,1274],{"class":130},[120,1612,200],{"class":154},[120,1614,1615,1617,1620,1622,1624,1626,1629,1632],{"class":122,"line":643},[120,1616,1592],{"class":126},[120,1618,1619],{"class":130}," errors",[120,1621,1514],{"class":134},[120,1623,1595],{"class":130},[120,1625,339],{"class":134},[120,1627,1628],{"class":130},"validationErrors",[120,1630,1631],{"class":134}," ||",[120,1633,1634],{"class":134}," {}\n",[120,1636,1637,1639,1641,1643,1645,1647,1650,1652,1655,1657,1659,1661,1664,1666,1669,1671,1673,1675,1677,1679],{"class":122,"line":664},[120,1638,1578],{"class":130},[120,1640,339],{"class":134},[120,1642,1565],{"class":130},[120,1644,1514],{"class":134},[120,1646,620],{"class":154},[120,1648,1649],{"class":134},"...",[120,1651,345],{"class":154},[120,1653,1654],{"class":130},"errors",[120,1656,339],{"class":134},[120,1658,227],{"class":130},[120,1660,1631],{"class":134},[120,1662,1663],{"class":154}," [])",[120,1665,145],{"class":134},[120,1667,1668],{"class":134}," ...",[120,1670,345],{"class":154},[120,1672,1654],{"class":130},[120,1674,339],{"class":134},[120,1676,231],{"class":130},[120,1678,1631],{"class":134},[120,1680,1681],{"class":154}," [])]\n",[120,1683,1684,1686,1688,1690,1692,1695,1697,1700,1702,1705,1707,1709],{"class":122,"line":1101},[120,1685,1560],{"class":130},[120,1687,339],{"class":134},[120,1689,1565],{"class":130},[120,1691,1568],{"class":134},[120,1693,1694],{"class":138},"setErrors",[120,1696,345],{"class":154},[120,1698,1699],{"class":130},"Object",[120,1701,339],{"class":134},[120,1703,1704],{"class":138},"entries",[120,1706,345],{"class":154},[120,1708,1654],{"class":130},[120,1710,200],{"class":154},[120,1712,1713,1716,1719,1721,1724,1726,1729,1731,1733,1736,1738,1740,1742,1745,1747,1749,1751,1753,1755],{"class":122,"line":1151},[120,1714,1715],{"class":134},"    .",[120,1717,1718],{"class":138},"filter",[120,1720,345],{"class":154},[120,1722,1723],{"class":134},"([",[120,1725,577],{"class":546},[120,1727,1728],{"class":134},"])",[120,1730,553],{"class":126},[120,1732,171],{"class":130},[120,1734,1735],{"class":134}," !==",[120,1737,272],{"class":134},[120,1739,227],{"class":275},[120,1741,409],{"class":134},[120,1743,1744],{"class":134}," &&",[120,1746,171],{"class":130},[120,1748,1735],{"class":134},[120,1750,272],{"class":134},[120,1752,231],{"class":275},[120,1754,409],{"class":134},[120,1756,200],{"class":154},[120,1758,1759,1761,1764,1766,1768,1770,1772,1775,1777,1779,1781,1783,1786,1788,1790,1792,1794,1796,1798,1800,1803,1805],{"class":122,"line":1191},[120,1760,1715],{"class":134},[120,1762,1763],{"class":138},"flatMap",[120,1765,345],{"class":154},[120,1767,1723],{"class":134},[120,1769,577],{"class":546},[120,1771,145],{"class":134},[120,1773,1774],{"class":546}," messages",[120,1776,1728],{"class":134},[120,1778,553],{"class":126},[120,1780,1774],{"class":130},[120,1782,339],{"class":134},[120,1784,1785],{"class":138},"map",[120,1787,345],{"class":154},[120,1789,969],{"class":546},[120,1791,553],{"class":126},[120,1793,564],{"class":154},[120,1795,348],{"class":134},[120,1797,171],{"class":130},[120,1799,145],{"class":134},[120,1801,1802],{"class":130}," message",[120,1804,188],{"class":134},[120,1806,1807],{"class":154},"))))\n",[120,1809,1810],{"class":122,"line":1222},[120,1811,1812],{"class":134},"}\n",[120,1814,1815,1817,1819],{"class":122,"line":1261},[120,1816,826],{"class":134},[120,1818,684],{"class":154},[120,1820,702],{"class":134},[120,1822,1823],{"class":122,"line":1290},[120,1824,310],{"emptyLinePlaceholder":309},[120,1826,1827,1829,1831],{"class":122,"line":1300},[120,1828,681],{"class":134},[120,1830,841],{"class":154},[120,1832,702],{"class":134},[120,1834,1836,1838,1841,1843,1845,1847,1849,1851,1854,1856,1858,1861,1863,1866,1868,1870,1873,1875],{"class":122,"line":1835},23,[120,1837,848],{"class":134},[120,1839,1840],{"class":154},"UForm",[120,1842,1478],{"class":126},[120,1844,135],{"class":134},[120,1846,695],{"class":134},[120,1848,851],{"class":275},[120,1850,695],{"class":134},[120,1852,1853],{"class":126}," :state",[120,1855,135],{"class":134},[120,1857,695],{"class":134},[120,1859,1860],{"class":275},"state",[120,1862,695],{"class":134},[120,1864,1865],{"class":126}," @submit",[120,1867,135],{"class":134},[120,1869,695],{"class":134},[120,1871,1872],{"class":275},"onSubmit",[120,1874,695],{"class":134},[120,1876,702],{"class":134},[120,1878,1880,1882,1885,1888,1890,1892,1894,1896,1898,1900,1902,1904,1906],{"class":122,"line":1879},24,[120,1881,869],{"class":134},[120,1883,1884],{"class":154},"UFormField",[120,1886,1887],{"class":126}," label",[120,1889,135],{"class":134},[120,1891,695],{"class":134},[120,1893,890],{"class":275},[120,1895,695],{"class":134},[120,1897,171],{"class":126},[120,1899,135],{"class":134},[120,1901,695],{"class":134},[120,1903,613],{"class":275},[120,1905,695],{"class":134},[120,1907,702],{"class":134},[120,1909,1911,1914,1917,1919,1921,1923,1926,1928],{"class":122,"line":1910},25,[120,1912,1913],{"class":134},"      \u003C",[120,1915,1916],{"class":154},"UInput",[120,1918,917],{"class":126},[120,1920,135],{"class":134},[120,1922,695],{"class":134},[120,1924,1925],{"class":275},"state.profile.name",[120,1927,695],{"class":134},[120,1929,941],{"class":134},[120,1931,1933,1936,1938],{"class":122,"line":1932},26,[120,1934,1935],{"class":134},"    \u003C/",[120,1937,1884],{"class":154},[120,1939,702],{"class":134},[120,1941,1943,1945,1947,1949,1951,1953,1955,1957,1959,1961,1963,1966,1968],{"class":122,"line":1942},27,[120,1944,869],{"class":134},[120,1946,1884],{"class":154},[120,1948,1887],{"class":126},[120,1950,135],{"class":134},[120,1952,695],{"class":134},[120,1954,1004],{"class":275},[120,1956,695],{"class":134},[120,1958,171],{"class":126},[120,1960,135],{"class":134},[120,1962,695],{"class":134},[120,1964,1965],{"class":275},"profile.email",[120,1967,695],{"class":134},[120,1969,702],{"class":134},[120,1971,1973,1975,1977,1979,1981,1983,1986,1988,1990,1992,1994,1996,1998],{"class":122,"line":1972},28,[120,1974,1913],{"class":134},[120,1976,1916],{"class":154},[120,1978,917],{"class":126},[120,1980,135],{"class":134},[120,1982,695],{"class":134},[120,1984,1985],{"class":275},"state.profile.email",[120,1987,695],{"class":134},[120,1989,1040],{"class":126},[120,1991,135],{"class":134},[120,1993,695],{"class":134},[120,1995,436],{"class":275},[120,1997,695],{"class":134},[120,1999,941],{"class":134},[120,2001,2003,2005,2007],{"class":122,"line":2002},29,[120,2004,1935],{"class":134},[120,2006,1884],{"class":154},[120,2008,702],{"class":134},[120,2010,2012,2014,2016,2018,2020,2022,2024,2026,2028,2030,2032,2034,2036,2038,2040,2042,2044,2046,2048,2050,2052,2054],{"class":122,"line":2011},30,[120,2013,869],{"class":134},[120,2015,101],{"class":154},[120,2017,950],{"class":126},[120,2019,135],{"class":134},[120,2021,695],{"class":134},[120,2023,1114],{"class":275},[120,2025,695],{"class":134},[120,2027,962],{"class":126},[120,2029,135],{"class":134},[120,2031,695],{"class":134},[120,2033,969],{"class":275},[120,2035,695],{"class":134},[120,2037,1129],{"class":126},[120,2039,135],{"class":134},[120,2041,695],{"class":134},[120,2043,1136],{"class":275},[120,2045,695],{"class":134},[120,2047,887],{"class":134},[120,2049,976],{"class":130},[120,2051,826],{"class":134},[120,2053,101],{"class":154},[120,2055,702],{"class":134},[120,2057,2059,2061,2063,2065,2067,2069,2071,2073,2075,2077,2079,2081,2083,2085,2087,2089,2091],{"class":122,"line":2058},31,[120,2060,869],{"class":134},[120,2062,101],{"class":154},[120,2064,1158],{"class":126},[120,2066,135],{"class":134},[120,2068,695],{"class":134},[120,2070,1165],{"class":275},[120,2072,695],{"class":134},[120,2074,1129],{"class":126},[120,2076,135],{"class":134},[120,2078,695],{"class":134},[120,2080,1136],{"class":275},[120,2082,695],{"class":134},[120,2084,887],{"class":134},[120,2086,1182],{"class":130},[120,2088,826],{"class":134},[120,2090,101],{"class":154},[120,2092,702],{"class":134},[120,2094,2096,2098,2101,2103,2105,2107,2110,2112,2115,2117,2119,2121,2123,2125,2127,2129,2131],{"class":122,"line":2095},32,[120,2097,869],{"class":134},[120,2099,2100],{"class":154},"UButton",[120,2102,1040],{"class":126},[120,2104,135],{"class":134},[120,2106,695],{"class":134},[120,2108,2109],{"class":275},"submit",[120,2111,695],{"class":134},[120,2113,2114],{"class":126}," :loading",[120,2116,135],{"class":134},[120,2118,695],{"class":134},[120,2120,1206],{"class":275},[120,2122,695],{"class":134},[120,2124,887],{"class":134},[120,2126,1213],{"class":130},[120,2128,826],{"class":134},[120,2130,2100],{"class":154},[120,2132,702],{"class":134},[120,2134,2136,2138,2140],{"class":122,"line":2135},33,[120,2137,1293],{"class":134},[120,2139,1840],{"class":154},[120,2141,702],{"class":134},[120,2143,2145,2147,2149],{"class":122,"line":2144},34,[120,2146,826],{"class":134},[120,2148,841],{"class":154},[120,2150,702],{"class":134},[101,2152,2153,2154,2157,2158,2161,2162,2165],{},"For arrays, names include indices such as ",[104,2155,2156],{},"addresses.0.city",". Nuxt UI also supports ",[104,2159,2160],{},"error-pattern"," for collecting array-item messages. If a shared schema transforms input on the client, ensure you submit the action's ",[2163,2164,903],"strong",{}," shape rather than accidentally applying a server transform twice.",[2167,2168,2169],"style",{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":116,"searchDepth":151,"depth":151,"links":2171},[2172,2173],{"id":239,"depth":151,"text":240},{"id":1316,"depth":151,"text":1317},"Typed HTML forms, nested field errors, root errors, and Nuxt UI integration.","md",null,{},{"title":56,"description":2174},"wS-Yy_ozRRlPAnM_-0P1S72G9lW_1qvZV2TlWJZX0Lg",[2181,2183],{"title":52,"path":53,"stem":54,"description":2182,"children":-1},"Use Standard Schema validators, preserve Zod compatibility, and infer transformed inputs and outputs.",{"title":60,"path":61,"stem":62,"description":2184,"children":-1},"Authenticate actions with nuxt-auth-utils, enforce ownership, and return public output fields.",1791798655156]