[{"data":1,"prerenderedAt":302},["ShallowReactive",2],{"i-simple-icons:github":3,"i-lucide:arrow-right":8,"doc-\u002Fdocs\u002Fvalidation":10,"docs-sidebar":261,"doc-surround-\u002Fdocs\u002Fvalidation":295,"i-lucide:arrow-left":300},{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":7},0,24,false,"\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":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":9},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 12h14m-7-7l7 7l-7 7\"\u002F>",{"id":11,"title":12,"body":13,"description":253,"extension":254,"group":255,"groupOrder":50,"meta":256,"navTitle":12,"navigation":74,"order":78,"path":257,"seo":258,"stem":259,"__hash__":260},"docs\u002Fdocs\u002Fvalidation.md","Validation",{"type":14,"value":15,"toc":249},"minimark",[16,20,37,139,142,167,172,178,221,225,245],[17,18,12],"h1",{"id":19},"validation",[21,22,23,24,31,32,36],"p",{},"Every control accepts a ",[25,26,30],"a",{"href":27,"rel":28},"https:\u002F\u002Fstandardschema.dev",[29],"nofollow","Standard Schema"," validator on its ",[33,34,35],"code",{},"schema"," property. Bring Zod, Valibot, ArkType, or anything that implements the spec — there's no bespoke schema language to learn.",[38,39,44],"pre",{"className":40,"code":41,"language":42,"meta":43,"style":43},"language-ts shiki shiki-themes github-light github-dark","import { z } from 'zod';\n\nconst input = document.querySelector('wmcp-input')!;\ninput.schema = z.string().email('Enter a valid email');\n","ts","",[33,45,46,69,76,110],{"__ignoreMap":43},[47,48,51,55,59,62,66],"span",{"class":49,"line":50},"line",1,[47,52,54],{"class":53},"szBVR","import",[47,56,58],{"class":57},"sVt8B"," { z } ",[47,60,61],{"class":53},"from",[47,63,65],{"class":64},"sZZnC"," 'zod'",[47,67,68],{"class":57},";\n",[47,70,72],{"class":49,"line":71},2,[47,73,75],{"emptyLinePlaceholder":74},true,"\n",[47,77,79,82,86,89,92,96,99,102,105,108],{"class":49,"line":78},3,[47,80,81],{"class":53},"const",[47,83,85],{"class":84},"sj4cs"," input",[47,87,88],{"class":53}," =",[47,90,91],{"class":57}," document.",[47,93,95],{"class":94},"sScJk","querySelector",[47,97,98],{"class":57},"(",[47,100,101],{"class":64},"'wmcp-input'",[47,103,104],{"class":57},")",[47,106,107],{"class":53},"!",[47,109,68],{"class":57},[47,111,113,116,119,122,125,128,131,133,136],{"class":49,"line":112},4,[47,114,115],{"class":57},"input.schema ",[47,117,118],{"class":53},"=",[47,120,121],{"class":57}," z.",[47,123,124],{"class":94},"string",[47,126,127],{"class":57},"().",[47,129,130],{"class":94},"email",[47,132,98],{"class":57},[47,134,135],{"class":64},"'Enter a valid email'",[47,137,138],{"class":57},");\n",[21,140,141],{},"Validation runs on input and during native form validation. On failure the element:",[143,144,145,153,156],"ul",{},[146,147,148,149,152],"li",{},"sets ",[33,150,151],{},"aria-invalid",",",[146,154,155],{},"renders the error message in a live region (announced to assistive tech), and",[146,157,158,159,162,163,166],{},"propagates the failure to the containing ",[33,160,161],{},"\u003Cform>"," via ",[33,164,165],{},"ElementInternals",", so native form submission is blocked just like a built-in control.",[168,169,171],"h2",{"id":170},"required-fields","Required fields",[21,173,174,177],{},[33,175,176],{},"required"," is a real constraint, not just a visual marker — an empty required control fails validation and participates in native form validity.",[38,179,183],{"className":180,"code":181,"language":182,"meta":43,"style":43},"language-html shiki shiki-themes github-light github-dark","\u003Cwmcp-input label=\"Name\" name=\"name\" required>\u003C\u002Fwmcp-input>\n","html",[33,184,185],{"__ignoreMap":43},[47,186,187,190,194,197,199,202,205,207,210,213,216,218],{"class":49,"line":50},[47,188,189],{"class":57},"\u003C",[47,191,193],{"class":192},"s9eBZ","wmcp-input",[47,195,196],{"class":94}," label",[47,198,118],{"class":57},[47,200,201],{"class":64},"\"Name\"",[47,203,204],{"class":94}," name",[47,206,118],{"class":57},[47,208,209],{"class":64},"\"name\"",[47,211,212],{"class":94}," required",[47,214,215],{"class":57},">\u003C\u002F",[47,217,193],{"class":192},[47,219,220],{"class":57},">\n",[168,222,224],{"id":223},"a-note-on-tool-schemas","A note on tool schemas",[21,226,227,228,232,233,236,237,240,241,244],{},"Standard Schema validates ",[229,230,231],"em",{},"values"," but does not emit JSON Schema, so a control's WebMCP tool parameter schema is derived from the element (its ",[33,234,235],{},"type",", or its enumerated options for ",[33,238,239],{},"\u003Cwmcp-select>"," \u002F ",[33,242,243],{},"\u003Cwmcp-radio-group>",") rather than from the validator. Richer tool schemas are a future enhancement.",[246,247,248],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}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 .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":43,"searchDepth":71,"depth":71,"links":250},[251,252],{"id":170,"depth":71,"text":171},{"id":223,"depth":71,"text":224},"Bring any Standard Schema validator — Zod, Valibot, ArkType — and wire it straight into form validation.","md","Getting started",{},"\u002Fdocs\u002Fvalidation",{"title":12,"description":253},"docs\u002Fvalidation","Q-lxQqg-HFKNNxx0fp_AmC_HVS6D7C-N5VR45kZjap4",[262,267,271,275,278,282,285,288,291,292],{"path":263,"title":264,"navTitle":265,"group":266,"order":112,"groupOrder":71},"\u002Fdocs\u002Felements\u002Fcheckbox","\u003Cwmcp-checkbox>","Checkbox","Elements",{"path":268,"title":269,"navTitle":270,"group":266,"order":50,"groupOrder":71},"\u002Fdocs\u002Felements\u002Finput","\u003Cwmcp-input>","Input",{"path":272,"title":243,"navTitle":273,"group":266,"order":274,"groupOrder":71},"\u002Fdocs\u002Felements\u002Fradio","Radio group",5,{"path":276,"title":239,"navTitle":277,"group":266,"order":78,"groupOrder":71},"\u002Fdocs\u002Felements\u002Fselect","Select",{"path":279,"title":280,"navTitle":281,"group":266,"order":71,"groupOrder":71},"\u002Fdocs\u002Felements\u002Ftextarea","\u003Cwmcp-textarea>","Textarea",{"path":283,"title":284,"navTitle":284,"group":255,"order":50,"groupOrder":50},"\u002Fdocs","Introduction",{"path":286,"title":287,"navTitle":287,"group":255,"order":71,"groupOrder":50},"\u002Fdocs\u002Finstallation","Installation",{"path":289,"title":290,"navTitle":290,"group":255,"order":274,"groupOrder":50},"\u002Fdocs\u002Ftesting","Testing",{"path":257,"title":12,"navTitle":12,"group":255,"order":78,"groupOrder":50},{"path":293,"title":294,"navTitle":294,"group":255,"order":112,"groupOrder":50},"\u002Fdocs\u002Fwebmcp","WebMCP exposure",[296,298],{"title":290,"path":289,"stem":297,"navTitle":290,"children":-1},"docs\u002Ftesting",{"title":294,"path":293,"stem":299,"navTitle":294,"children":-1},"docs\u002Fwebmcp",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":301},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m12 19l-7-7l7-7m7 7H5\"\u002F>",1781416228942]