[{"data":1,"prerenderedAt":1054},["ShallowReactive",2],{"navigation":3,"i-custom:logo":92,"i-lucide:search":96,"i-lucide:moon":98,"i-lucide:sun":100,"i-simple-icons:github":102,"i-lucide:menu":104,"i-lucide:house":106,"i-lucide:package":108,"i-lucide:play":110,"i-simple-icons:nuxtdotjs":112,"i-lucide:arrow-right-left":114,"i-lucide:square":116,"i-lucide:text-cursor-input":118,"i-lucide:message-circle-warning":120,"i-lucide:list":122,"i-lucide:code":124,"i-lucide:share-2":126,"i-lucide:shield-check":128,"i-lucide:chevron-down":130,"\u002Fadvanced\u002Fvalidation":132,"\u002Fadvanced\u002Fvalidation-surround":1039,"i-lucide:copy":1044,"i-lucide:text-align-start":1046,"i-lucide:hash":1048,"i-lucide:info":1050,"i-lucide:arrow-right":1052},[4,33,58,68,83],{"title":5,"path":6,"stem":7,"children":8,"icon":32},"Get Started","\u002Fget-started","1.get-started\u002F1.index",[9,12,17,22,27],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-lucide-house",{"title":13,"path":14,"stem":15,"icon":16},"Installation","\u002Fget-started\u002Finstallation","1.get-started\u002F2.installation","i-lucide-package",{"title":18,"path":19,"stem":20,"icon":21},"Quickstart","\u002Fget-started\u002Fquickstart","1.get-started\u002F3.quickstart","i-lucide-play",{"title":23,"path":24,"stem":25,"icon":26},"Nuxt Module","\u002Fget-started\u002Fnuxt-module","1.get-started\u002F4.nuxt-module","i-simple-icons-nuxtdotjs",{"title":28,"path":29,"stem":30,"icon":31},"Migrating to v2","\u002Fget-started\u002Fmigration","1.get-started\u002F5.migration","i-lucide-arrow-right-left",false,{"title":34,"icon":32,"path":35,"stem":36,"children":37,"page":32},"Components","\u002Fcomponents","2.components",[38,43,48,53],{"title":39,"path":40,"stem":41,"icon":42},"NotForm","\u002Fcomponents\u002Fnot-form","2.components\u002F1.not-form","i-lucide-square",{"title":44,"path":45,"stem":46,"icon":47},"NotField","\u002Fcomponents\u002Fnot-field","2.components\u002F2.not-field","i-lucide-text-cursor-input",{"title":49,"path":50,"stem":51,"icon":52},"NotMessage","\u002Fcomponents\u002Fnot-message","2.components\u002F3.not-message","i-lucide-message-circle-warning",{"title":54,"path":55,"stem":56,"icon":57},"NotArrayField","\u002Fcomponents\u002Fnot-array-field","2.components\u002F4.not-array-field","i-lucide-list",{"title":59,"icon":32,"path":60,"stem":61,"children":62,"page":32},"Composables","\u002Fcomposables","3.composables",[63],{"title":64,"path":65,"stem":66,"icon":67},"useNotForm","\u002Fcomposables\u002Fuse-not-form","3.composables\u002F1.use-not-form","i-lucide-code",{"title":69,"icon":32,"path":70,"stem":71,"children":72,"page":32},"Advanced","\u002Fadvanced","4.advanced",[73,78],{"title":74,"path":75,"stem":76,"icon":77},"Pinia & Composables","\u002Fadvanced\u002Fpinia-and-composables","4.advanced\u002F2.pinia-and-composables","i-lucide-share-2",{"title":79,"path":80,"stem":81,"icon":82},"Validation","\u002Fadvanced\u002Fvalidation","4.advanced\u002F3.validation","i-lucide-shield-check",{"title":84,"icon":32,"path":85,"stem":86,"children":87,"page":32},"Working with AI","\u002Fai","5.ai",[88],{"title":89,"path":90,"stem":91},"LLMs.txt","\u002Fai\u002Fllms-txt","5.ai\u002F1.llms-txt",{"left":93,"top":93,"width":94,"height":94,"rotate":93,"vFlip":32,"hFlip":32,"body":95},0,24,"\u003Cg fill=\"none\">\u003C!--field 1-->\n  \u003Crect x=\"0.5\" y=\"0.5\" width=\"23\" height=\"3\" rx=\"0.3\" stroke=\"currentColor\" stroke-opacity=\"0.5\" stroke-width=\"0.3\"\u002F>\n\u003C!--field 2 — active-->\n  \u003Crect x=\"0.5\" y=\"4.3\" width=\"23\" height=\"3\" rx=\"0.3\" fill=\"currentColor\" fill-opacity=\"0.12\" stroke=\"currentColor\" stroke-opacity=\"0.75\" stroke-width=\"0.3\"\u002F>\n  \u003Crect x=\"1\" y=\"5.7\" width=\"8\" height=\"0.3\" rx=\"0.2\" fill=\"currentColor\" fill-opacity=\"0.5\"\u002F>\n\u003C!--field 3-->\n  \u003Crect x=\"0.5\" y=\"8.6\" width=\"23\" height=\"3\" rx=\"0.3\" stroke=\"currentColor\" stroke-opacity=\"0.5\" stroke-width=\"0.3\"\u002F>\n\u003C!--button-->\n  \u003Crect x=\"0.5\" y=\"12.9\" width=\"9.9\" height=\"3\" rx=\"0.3\" fill=\"currentColor\" fill-opacity=\"0.2\" stroke=\"currentColor\" stroke-width=\"0.2\"\u002F>\n  \u003Crect x=\"2.2\" y=\"14.3\" width=\"5.5\" height=\"0.4\" rx=\"0.2\" fill=\"currentColor\" fill-opacity=\"0.85\"\u002F>\u003C\u002Fg>",{"left":93,"top":93,"width":94,"height":94,"rotate":93,"vFlip":32,"hFlip":32,"body":97},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"m21 21l-4.34-4.34\"\u002F>\u003Ccircle cx=\"11\" cy=\"11\" r=\"8\"\u002F>\u003C\u002Fg>",{"left":93,"top":93,"width":94,"height":94,"rotate":93,"vFlip":32,"hFlip":32,"body":99},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401\"\u002F>",{"left":93,"top":93,"width":94,"height":94,"rotate":93,"vFlip":32,"hFlip":32,"body":101},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Ccircle cx=\"12\" cy=\"12\" r=\"4\"\u002F>\u003Cpath d=\"M12 2v2m0 16v2M4.93 4.93l1.41 1.41m11.32 11.32l1.41 1.41M2 12h2m16 0h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41\"\u002F>\u003C\u002Fg>",{"left":93,"top":93,"width":94,"height":94,"rotate":93,"vFlip":32,"hFlip":32,"body":103},"\u003Cpath fill=\"currentColor\" d=\"M12 .297c-6.63 0-12 5.373-12 12c0 5.303 3.438 9.8 8.205 11.385c.6.113.82-.258.82-.577c0-.285-.01-1.04-.015-2.04c-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729c1.205.084 1.838 1.236 1.838 1.236c1.07 1.835 2.809 1.305 3.495.998c.108-.776.417-1.305.76-1.605c-2.665-.3-5.466-1.332-5.466-5.93c0-1.31.465-2.38 1.235-3.22c-.135-.303-.54-1.523.105-3.176c0 0 1.005-.322 3.3 1.23c.96-.267 1.98-.399 3-.405c1.02.006 2.04.138 3 .405c2.28-1.552 3.285-1.23 3.285-1.23c.645 1.653.24 2.873.12 3.176c.765.84 1.23 1.91 1.23 3.22c0 4.61-2.805 5.625-5.475 5.92c.42.36.81 1.096.81 2.22c0 1.606-.015 2.896-.015 3.286c0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\"\u002F>",{"left":93,"top":93,"width":94,"height":94,"rotate":93,"vFlip":32,"hFlip":32,"body":105},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 5h16M4 12h16M4 19h16\"\u002F>",{"left":93,"top":93,"width":94,"height":94,"rotate":93,"vFlip":32,"hFlip":32,"body":107},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8\"\u002F>\u003Cpath d=\"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"\u002F>\u003C\u002Fg>",{"left":93,"top":93,"width":94,"height":94,"rotate":93,"vFlip":32,"hFlip":32,"body":109},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73zm1 .27V12\"\u002F>\u003Cpath d=\"M3.29 7L12 12l8.71-5M7.5 4.27l9 5.15\"\u002F>\u003C\u002Fg>",{"left":93,"top":93,"width":94,"height":94,"rotate":93,"vFlip":32,"hFlip":32,"body":111},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z\"\u002F>",{"left":93,"top":93,"width":94,"height":94,"rotate":93,"vFlip":32,"hFlip":32,"body":113},"\u003Cpath fill=\"currentColor\" d=\"M13.464 19.83h8.922c.283 0 .562-.073.807-.21a1.6 1.6 0 0 0 .591-.574a1.53 1.53 0 0 0 .216-.783a1.53 1.53 0 0 0-.217-.782L17.792 7.414a1.6 1.6 0 0 0-.591-.573a1.65 1.65 0 0 0-.807-.21c-.283 0-.562.073-.807.21a1.6 1.6 0 0 0-.59.573L13.463 9.99L10.47 4.953a1.6 1.6 0 0 0-.591-.573a1.65 1.65 0 0 0-.807-.21c-.284 0-.562.073-.807.21a1.6 1.6 0 0 0-.591.573L.216 17.481a1.53 1.53 0 0 0-.217.782c0 .275.074.545.216.783a1.6 1.6 0 0 0 .59.574c.246.137.525.21.808.21h5.6c2.22 0 3.856-.946 4.982-2.79l2.733-4.593l1.464-2.457l4.395 7.382h-5.859Zm-6.341-2.46l-3.908-.002l5.858-9.842l2.923 4.921l-1.957 3.29c-.748 1.196-1.597 1.632-2.916 1.632\"\u002F>",{"left":93,"top":93,"width":94,"height":94,"rotate":93,"vFlip":32,"hFlip":32,"body":115},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m16 3l4 4l-4 4m4-4H4m4 14l-4-4l4-4m-4 4h16\"\u002F>",{"left":93,"top":93,"width":94,"height":94,"rotate":93,"vFlip":32,"hFlip":32,"body":117},"\u003Crect width=\"18\" height=\"18\" x=\"3\" y=\"3\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" rx=\"2\"\u002F>",{"left":93,"top":93,"width":94,"height":94,"rotate":93,"vFlip":32,"hFlip":32,"body":119},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 20h-1a2 2 0 0 1-2-2a2 2 0 0 1-2 2H6m7-12h7a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-7m-8 0H4a2 2 0 0 1-2-2v-4a2 2 0 0 1 2-2h1m1-4h1a2 2 0 0 1 2 2a2 2 0 0 1 2-2h1M9 6v12\"\u002F>",{"left":93,"top":93,"width":94,"height":94,"rotate":93,"vFlip":32,"hFlip":32,"body":121},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092a10 10 0 1 0-4.777-4.719M12 8v4m0 4h.01\"\u002F>",{"left":93,"top":93,"width":94,"height":94,"rotate":93,"vFlip":32,"hFlip":32,"body":123},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M3 5h.01M3 12h.01M3 19h.01M8 5h13M8 12h13M8 19h13\"\u002F>",{"left":93,"top":93,"width":94,"height":94,"rotate":93,"vFlip":32,"hFlip":32,"body":125},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m16 18l6-6l-6-6M8 6l-6 6l6 6\"\u002F>",{"left":93,"top":93,"width":94,"height":94,"rotate":93,"vFlip":32,"hFlip":32,"body":127},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Ccircle cx=\"18\" cy=\"5\" r=\"3\"\u002F>\u003Ccircle cx=\"6\" cy=\"12\" r=\"3\"\u002F>\u003Ccircle cx=\"18\" cy=\"19\" r=\"3\"\u002F>\u003Cpath d=\"m8.59 13.51l6.83 3.98m-.01-10.98l-6.82 3.98\"\u002F>\u003C\u002Fg>",{"left":93,"top":93,"width":94,"height":94,"rotate":93,"vFlip":32,"hFlip":32,"body":129},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\"\u002F>\u003Cpath d=\"m9 12l2 2l4-4\"\u002F>\u003C\u002Fg>",{"left":93,"top":93,"width":94,"height":94,"rotate":93,"vFlip":32,"hFlip":32,"body":131},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m6 9l6 6l6-6\"\u002F>",{"id":133,"title":79,"body":134,"description":1033,"extension":1034,"meta":1035,"navigation":1036,"path":80,"seo":1037,"stem":81,"__hash__":1038},"docs\u002F4.advanced\u002F3.validation.md",{"type":135,"value":136,"toc":1020},"minimark",[137,142,146,242,247,257,395,399,402,417,426,434,438,444,451,493,498,505,602,606,609,672,676,687,850,860,864,871,883,893,1003,1016],[138,139,141],"h2",{"id":140},"triggers","Triggers",[143,144,145],"p",{},"Triggers determine which interaction causes a field to validate. Configure them once on the form and override per field where needed.",[147,148,149,165],"table",{},[150,151,152],"thead",{},[153,154,155,159,162],"tr",{},[156,157,158],"th",{},"Trigger",[156,160,161],{},"Default",[156,163,164],{},"Fires when",[166,167,168,185,199,213,228],"tbody",{},[153,169,170,177,182],{},[171,172,173],"td",{},[174,175,176],"code",{},"onBlur",[171,178,179],{},[174,180,181],{},"true",[171,183,184],{},"Field loses focus",[153,186,187,192,196],{},[171,188,189],{},[174,190,191],{},"onChange",[171,193,194],{},[174,195,181],{},[171,197,198],{},"Value is committed",[153,200,201,206,210],{},[171,202,203],{},[174,204,205],{},"onInput",[171,207,208],{},[174,209,181],{},[171,211,212],{},"Every keystroke",[153,214,215,220,225],{},[171,216,217],{},[174,218,219],{},"onFocus",[171,221,222],{},[174,223,224],{},"false",[171,226,227],{},"Field gains focus",[153,229,230,235,239],{},[171,231,232],{},[174,233,234],{},"onMount",[171,236,237],{},[174,238,224],{},[171,240,241],{},"Component mounts",[243,244,246],"h3",{"id":245},"per-field-overrides","Per-field overrides",[143,248,249,252,253,256],{},[174,250,251],{},"validateOn"," on ",[174,254,255],{},"\u003CNotField>"," merges over the form config. Only the keys you specify are changed.",[258,259,264],"pre",{"className":260,"code":261,"language":262,"meta":263,"style":263},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Ctemplate>\n  \u003C!-- Form has onInput: false — this field overrides it -->\n  \u003CNotField path=\"username\" :validateOn=\"{ onInput: true }\" v-slot=\"{ events }\">\n    \u003Cinput v-model=\"form.values.username\" v-bind=\"events\" \u002F>\n  \u003C\u002FNotField>\n\u003C\u002Ftemplate>\n","vue","",[174,265,266,282,289,339,375,385],{"__ignoreMap":263},[267,268,271,275,279],"span",{"class":269,"line":270},"line",1,[267,272,274],{"class":273},"sMK4o","\u003C",[267,276,278],{"class":277},"swJcz","template",[267,280,281],{"class":273},">\n",[267,283,285],{"class":269,"line":284},2,[267,286,288],{"class":287},"sHwdD","  \u003C!-- Form has onInput: false — this field overrides it -->\n",[267,290,292,295,297,301,304,307,311,313,316,318,320,323,325,328,330,332,335,337],{"class":269,"line":291},3,[267,293,294],{"class":273},"  \u003C",[267,296,44],{"class":277},[267,298,300],{"class":299},"spNyl"," path",[267,302,303],{"class":273},"=",[267,305,306],{"class":273},"\"",[267,308,310],{"class":309},"sfazB","username",[267,312,306],{"class":273},[267,314,315],{"class":299}," :validateOn",[267,317,303],{"class":273},[267,319,306],{"class":273},[267,321,322],{"class":309},"{ onInput: true }",[267,324,306],{"class":273},[267,326,327],{"class":299}," v-slot",[267,329,303],{"class":273},[267,331,306],{"class":273},[267,333,334],{"class":309},"{ events }",[267,336,306],{"class":273},[267,338,281],{"class":273},[267,340,342,345,348,351,353,355,358,360,363,365,367,370,372],{"class":269,"line":341},4,[267,343,344],{"class":273},"    \u003C",[267,346,347],{"class":277},"input",[267,349,350],{"class":299}," v-model",[267,352,303],{"class":273},[267,354,306],{"class":273},[267,356,357],{"class":309},"form.values.username",[267,359,306],{"class":273},[267,361,362],{"class":299}," v-bind",[267,364,303],{"class":273},[267,366,306],{"class":273},[267,368,369],{"class":309},"events",[267,371,306],{"class":273},[267,373,374],{"class":273}," \u002F>\n",[267,376,378,381,383],{"class":269,"line":377},5,[267,379,380],{"class":273},"  \u003C\u002F",[267,382,44],{"class":277},[267,384,281],{"class":273},[267,386,388,391,393],{"class":269,"line":387},6,[267,389,390],{"class":273},"\u003C\u002F",[267,392,278],{"class":277},[267,394,281],{"class":273},[138,396,398],{"id":397},"modes","Modes",[143,400,401],{},"The mode controls re-validation behaviour after an error has first appeared. Type into each field, blur it, then keep typing to see the difference.",[403,404,405,408],"code-preview",{},[406,407],"demos-validation-modes",{},[278,409,410],{"v-slot:code":263},[411,412,413],"code-collapse",{},[414,415],"docs-demo-code",{"file":416},"validation-modes.vue",[143,418,419,425],{},[420,421,422],"strong",{},[174,423,424],{},"eager"," — validates on blur, then re-validates on every input\u002Fchange while an error exists. Use for short forms where instant feedback matters.",[143,427,428,433],{},[420,429,430],{},[174,431,432],{},"lazy"," — validates only on blur or submit. No re-validation while typing. Use for long forms where constant feedback would feel intrusive.",[138,435,437],{"id":436},"field-vs-form-validation","Field vs form validation",[243,439,441],{"id":440},"validatefield",[174,442,443],{},"validateField",[143,445,446,447,450],{},"Runs the full schema, then updates errors ",[420,448,449],{},"only for the targeted path",". All other field errors are left untouched.",[258,452,456],{"className":453,"code":454,"language":455,"meta":263,"style":263},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","await form.validateField('email')\n\u002F\u002F Only errors for 'email' change\n","ts",[174,457,458,488],{"__ignoreMap":263},[267,459,460,464,468,471,474,477,480,483,485],{"class":269,"line":270},[267,461,463],{"class":462},"s7zQu","await",[267,465,467],{"class":466},"sTEyZ"," form",[267,469,470],{"class":273},".",[267,472,443],{"class":473},"s2Zo4",[267,475,476],{"class":466},"(",[267,478,479],{"class":273},"'",[267,481,482],{"class":309},"email",[267,484,479],{"class":273},[267,486,487],{"class":466},")\n",[267,489,490],{"class":269,"line":284},[267,491,492],{"class":287},"\u002F\u002F Only errors for 'email' change\n",[243,494,496],{"id":495},"validate",[174,497,495],{},[143,499,500,501,504],{},"Runs the schema and replaces ",[420,502,503],{},"all"," errors with the result.",[258,506,508],{"className":453,"code":507,"language":455,"meta":263,"style":263},"const result = await form.validate()\n\nif (result.issues) {\n  \u002F\u002F Validation failed — result.issues contains all errors\n} else {\n  console.log(result.value) \u002F\u002F Typed, transformed schema output\n}\n",[174,509,510,532,538,554,559,570,596],{"__ignoreMap":263},[267,511,512,515,518,520,523,525,527,529],{"class":269,"line":270},[267,513,514],{"class":299},"const",[267,516,517],{"class":466}," result ",[267,519,303],{"class":273},[267,521,522],{"class":462}," await",[267,524,467],{"class":466},[267,526,470],{"class":273},[267,528,495],{"class":473},[267,530,531],{"class":466},"()\n",[267,533,534],{"class":269,"line":284},[267,535,537],{"emptyLinePlaceholder":536},true,"\n",[267,539,540,543,546,548,551],{"class":269,"line":291},[267,541,542],{"class":462},"if",[267,544,545],{"class":466}," (result",[267,547,470],{"class":273},[267,549,550],{"class":466},"issues) ",[267,552,553],{"class":273},"{\n",[267,555,556],{"class":269,"line":341},[267,557,558],{"class":287},"  \u002F\u002F Validation failed — result.issues contains all errors\n",[267,560,561,564,567],{"class":269,"line":377},[267,562,563],{"class":273},"}",[267,565,566],{"class":462}," else",[267,568,569],{"class":273}," {\n",[267,571,572,575,577,580,582,585,587,590,593],{"class":269,"line":387},[267,573,574],{"class":466},"  console",[267,576,470],{"class":273},[267,578,579],{"class":473},"log",[267,581,476],{"class":277},[267,583,584],{"class":466},"result",[267,586,470],{"class":273},[267,588,589],{"class":466},"value",[267,591,592],{"class":277},") ",[267,594,595],{"class":287},"\u002F\u002F Typed, transformed schema output\n",[267,597,599],{"class":269,"line":598},7,[267,600,601],{"class":273},"}\n",[138,603,605],{"id":604},"async-validation","Async validation",[143,607,608],{},"All schema validation is awaited. Async rules in your schema — HTTP calls, database lookups — work without any extra configuration.",[258,610,612],{"className":260,"code":611,"language":262,"meta":263,"style":263},"\u003CNotField path=\"username\" v-slot=\"{ events, isValidating }\">\n  \u003Cinput v-model=\"form.values.username\" v-bind=\"events\" \u002F>\n  \u003Cspan v-if=\"isValidating\">Checking availability…\u003C\u002Fspan>\n\u003C\u002FNotField>\n",[174,613,614,654,659,664],{"__ignoreMap":263},[267,615,616,618,620,622,624,626,628,630,632,634,636,639,642,645,648,650,652],{"class":269,"line":270},[267,617,274],{"class":273},[267,619,44],{"class":277},[267,621,300],{"class":299},[267,623,303],{"class":273},[267,625,306],{"class":273},[267,627,310],{"class":309},[267,629,306],{"class":273},[267,631,327],{"class":299},[267,633,303],{"class":273},[267,635,306],{"class":273},[267,637,638],{"class":273},"{",[267,640,641],{"class":466}," events",[267,643,644],{"class":273},",",[267,646,647],{"class":466}," isValidating ",[267,649,563],{"class":273},[267,651,306],{"class":273},[267,653,281],{"class":273},[267,655,656],{"class":269,"line":284},[267,657,658],{"class":466},"  \u003Cinput v-model=\"form.values.username\" v-bind=\"events\" \u002F>\n",[267,660,661],{"class":269,"line":291},[267,662,663],{"class":466},"  \u003Cspan v-if=\"isValidating\">Checking availability…\u003C\u002Fspan>\n",[267,665,666,668,670],{"class":269,"line":341},[267,667,390],{"class":273},[267,669,44],{"class":277},[267,671,281],{"class":273},[138,673,675],{"id":674},"cross-field-validation","Cross-field validation",[143,677,678,679,682,683,686],{},"Cross-field rules belong in the schema. NotForm runs the full schema on every validation call, so ",[174,680,681],{},"refine"," and ",[174,684,685],{},"superRefine"," work correctly.",[258,688,690],{"className":453,"code":689,"language":455,"meta":263,"style":263},"const schema = z.object({\n  password: z.string().min(8),\n  confirm: z.string(),\n}).refine(value => value.password === v.confirm, {\n  message: 'Passwords do not match',\n  path: ['confirm'],\n})\n",[174,691,692,713,748,765,806,823,844],{"__ignoreMap":263},[267,693,694,696,699,701,704,706,709,711],{"class":269,"line":270},[267,695,514],{"class":299},[267,697,698],{"class":466}," schema ",[267,700,303],{"class":273},[267,702,703],{"class":466}," z",[267,705,470],{"class":273},[267,707,708],{"class":473},"object",[267,710,476],{"class":466},[267,712,553],{"class":273},[267,714,715,718,721,723,725,728,731,733,736,738,742,745],{"class":269,"line":284},[267,716,717],{"class":277},"  password",[267,719,720],{"class":273},":",[267,722,703],{"class":466},[267,724,470],{"class":273},[267,726,727],{"class":473},"string",[267,729,730],{"class":466},"()",[267,732,470],{"class":273},[267,734,735],{"class":473},"min",[267,737,476],{"class":466},[267,739,741],{"class":740},"sbssI","8",[267,743,744],{"class":466},")",[267,746,747],{"class":273},",\n",[267,749,750,753,755,757,759,761,763],{"class":269,"line":291},[267,751,752],{"class":277},"  confirm",[267,754,720],{"class":273},[267,756,703],{"class":466},[267,758,470],{"class":273},[267,760,727],{"class":473},[267,762,730],{"class":466},[267,764,747],{"class":273},[267,766,767,769,771,773,775,777,780,783,786,788,791,794,797,799,802,804],{"class":269,"line":341},[267,768,563],{"class":273},[267,770,744],{"class":466},[267,772,470],{"class":273},[267,774,681],{"class":473},[267,776,476],{"class":466},[267,778,589],{"class":779},"sHdIc",[267,781,782],{"class":299}," =>",[267,784,785],{"class":466}," value",[267,787,470],{"class":273},[267,789,790],{"class":466},"password ",[267,792,793],{"class":273},"===",[267,795,796],{"class":466}," v",[267,798,470],{"class":273},[267,800,801],{"class":466},"confirm",[267,803,644],{"class":273},[267,805,569],{"class":273},[267,807,808,811,813,816,819,821],{"class":269,"line":377},[267,809,810],{"class":277},"  message",[267,812,720],{"class":273},[267,814,815],{"class":273}," '",[267,817,818],{"class":309},"Passwords do not match",[267,820,479],{"class":273},[267,822,747],{"class":273},[267,824,825,828,830,833,835,837,839,842],{"class":269,"line":387},[267,826,827],{"class":277},"  path",[267,829,720],{"class":273},[267,831,832],{"class":466}," [",[267,834,479],{"class":273},[267,836,801],{"class":309},[267,838,479],{"class":273},[267,840,841],{"class":466},"]",[267,843,747],{"class":273},[267,845,846,848],{"class":269,"line":598},[267,847,563],{"class":273},[267,849,487],{"class":466},[143,851,852,853,855,856,859],{},"When the user blurs ",[174,854,801],{},", ",[174,857,858],{},"validateField('confirm')"," surfaces the cross-field error at that path. Other field errors are not touched.",[138,861,863],{"id":862},"server-side-errors","Server-side errors",[143,865,866,867,870],{},"Submit the form below with ",[174,868,869],{},"taken@example.com"," to see a server error applied to a specific field after submission.",[403,872,873,876],{},[874,875],"demos-server-errors",{},[278,877,878],{"v-slot:code":263},[411,879,880],{},[414,881],{"file":882},"server-errors.vue",[143,884,885,888,889,892],{},[174,886,887],{},"setError"," replaces an existing error for the same path, or appends it if none exists. To bulk-replace all errors at once (e.g., from a ",[174,890,891],{},"422"," response):",[258,894,896],{"className":453,"code":895,"language":455,"meta":263,"style":263},"form.setErrors([\n  { path: [{ key: 'email' }], message: 'Already taken' },\n  { path: [{ key: 'username' }], message: 'Too short' },\n])\n",[174,897,898,911,957,998],{"__ignoreMap":263},[267,899,900,903,905,908],{"class":269,"line":270},[267,901,902],{"class":466},"form",[267,904,470],{"class":273},[267,906,907],{"class":473},"setErrors",[267,909,910],{"class":466},"([\n",[267,912,913,916,918,920,922,924,927,929,931,933,935,938,940,942,945,947,949,952,954],{"class":269,"line":284},[267,914,915],{"class":273},"  {",[267,917,300],{"class":277},[267,919,720],{"class":273},[267,921,832],{"class":466},[267,923,638],{"class":273},[267,925,926],{"class":277}," key",[267,928,720],{"class":273},[267,930,815],{"class":273},[267,932,482],{"class":309},[267,934,479],{"class":273},[267,936,937],{"class":273}," }",[267,939,841],{"class":466},[267,941,644],{"class":273},[267,943,944],{"class":277}," message",[267,946,720],{"class":273},[267,948,815],{"class":273},[267,950,951],{"class":309},"Already taken",[267,953,479],{"class":273},[267,955,956],{"class":273}," },\n",[267,958,959,961,963,965,967,969,971,973,975,977,979,981,983,985,987,989,991,994,996],{"class":269,"line":291},[267,960,915],{"class":273},[267,962,300],{"class":277},[267,964,720],{"class":273},[267,966,832],{"class":466},[267,968,638],{"class":273},[267,970,926],{"class":277},[267,972,720],{"class":273},[267,974,815],{"class":273},[267,976,310],{"class":309},[267,978,479],{"class":273},[267,980,937],{"class":273},[267,982,841],{"class":466},[267,984,644],{"class":273},[267,986,944],{"class":277},[267,988,720],{"class":273},[267,990,815],{"class":273},[267,992,993],{"class":309},"Too short",[267,995,479],{"class":273},[267,997,956],{"class":273},[267,999,1000],{"class":269,"line":341},[267,1001,1002],{"class":466},"])\n",[1004,1005,1006],"note",{},[143,1007,1008,1009,1012,1013,1015],{},"Server errors live in the same ",[174,1010,1011],{},"errors"," array as schema errors. When ",[174,1014,443],{}," runs again for a field, its server error is replaced by the schema result.",[1017,1018,1019],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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}",{"title":263,"searchDepth":270,"depth":284,"links":1021},[1022,1025,1026,1030,1031,1032],{"id":140,"depth":284,"text":141,"children":1023},[1024],{"id":245,"depth":291,"text":246},{"id":397,"depth":284,"text":398},{"id":436,"depth":284,"text":437,"children":1027},[1028,1029],{"id":440,"depth":291,"text":443},{"id":495,"depth":291,"text":495},{"id":604,"depth":284,"text":605},{"id":674,"depth":284,"text":675},{"id":862,"depth":284,"text":863},"Configure when validation runs, how it behaves, and how to apply errors from the server.","md",{},{"icon":82},{"title":79,"description":1033},"q8N4JBdu5vGM-2ecK9x4-vyViqKNFQ-wG76lhN0wiMY",[1040,1042],{"title":74,"path":75,"stem":76,"description":1041,"icon":77,"children":-1},"Share form instances across components using Pinia stores or dedicated composables.",{"title":89,"path":90,"stem":91,"description":1043,"children":-1},"How to get AI tools like Cursor, Windsurf, GitHub Copilot, ChatGPT, and Claude to understand NotForm concepts, APIs, and best practices.",{"left":93,"top":93,"width":94,"height":94,"rotate":93,"vFlip":32,"hFlip":32,"body":1045},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\"\u002F>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\u002F>\u003C\u002Fg>",{"left":93,"top":93,"width":94,"height":94,"rotate":93,"vFlip":32,"hFlip":32,"body":1047},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M21 5H3m12 7H3m14 7H3\"\u002F>",{"left":93,"top":93,"width":94,"height":94,"rotate":93,"vFlip":32,"hFlip":32,"body":1049},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 9h16M4 15h16M10 3L8 21m8-18l-2 18\"\u002F>",{"left":93,"top":93,"width":94,"height":94,"rotate":93,"vFlip":32,"hFlip":32,"body":1051},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Ccircle cx=\"12\" cy=\"12\" r=\"10\"\u002F>\u003Cpath d=\"M12 16v-4m0-4h.01\"\u002F>\u003C\u002Fg>",{"left":93,"top":93,"width":94,"height":94,"rotate":93,"vFlip":32,"hFlip":32,"body":1053},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 12h14m-7-7l7 7l-7 7\"\u002F>",1776950606716]