@reformer/builder 1.0.0-beta.2 → 1.0.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/README.md +40 -2
  2. package/dist/assets/App-DhfnN2PQ.js +1147 -0
  3. package/dist/assets/BootError-BsY6cGIZ.js +1 -0
  4. package/dist/assets/CodeEditor-JLfxhhe0.js +2 -0
  5. package/dist/assets/RawJsonEditor-57g0Rm7H.js +1 -0
  6. package/dist/assets/boot-BWxMqNgc.js +2 -0
  7. package/dist/assets/{freemarker2-tfw_pRan.js → freemarker2-DbCqF1ZC.js} +2 -2
  8. package/dist/assets/handlebars-DSBoIGTo.js +1 -0
  9. package/dist/assets/html-CWy7OEeC.js +1 -0
  10. package/dist/assets/index-BLGbxQaR.js +104 -0
  11. package/dist/assets/index-BfbmpSTa.js +11 -0
  12. package/dist/assets/index-Bnp0iuTg.js +3 -0
  13. package/dist/assets/index-Bv1xwgY8.js +10 -0
  14. package/dist/assets/index-Crsub4wy.js +5028 -0
  15. package/dist/assets/index-DIgOR-JL.css +1 -0
  16. package/dist/assets/index-DzAasWzr.css +1 -0
  17. package/dist/assets/index-IJIJTAKu.js +68 -0
  18. package/dist/assets/index-IZOejzqt.js +4709 -0
  19. package/dist/assets/index-sBr0hAnB.js +1 -0
  20. package/dist/assets/javascript-DUf-ZLKm.js +1 -0
  21. package/dist/assets/{jsonMode-Aya4lOGs.js → jsonMode-Brz11yjF.js} +3 -3
  22. package/dist/assets/liquid-CvvhoEw5.js +1 -0
  23. package/dist/assets/load-B8MFuNhL.js +11 -0
  24. package/dist/assets/mdx-DvF3MtVm.js +1 -0
  25. package/dist/assets/{monaco-setup-B6kwd_0J.js → monaco-setup-D3b3uU6s.js} +34 -34
  26. package/dist/assets/python-PPnkm6ew.js +1 -0
  27. package/dist/assets/razor-ByKZ6TkS.js +1 -0
  28. package/dist/assets/reformer-ui-kit-11-CeSX1KRr.js +1 -0
  29. package/dist/assets/reformer-ui-kit-CzN5mDMr.js +1 -0
  30. package/dist/assets/typescript-CwhzuadN.js +1 -0
  31. package/dist/assets/typescript-DZSqjTqg.js +433 -0
  32. package/dist/assets/useFormField-BLbvmpme-gc2657u6.js +1 -0
  33. package/dist/assets/xml-CKD6Y3PR.js +1 -0
  34. package/dist/assets/yaml-FlNIn5wo.js +1 -0
  35. package/dist/index.html +2 -2
  36. package/package.json +5 -1
  37. package/runtime-config.schema.json +7 -2
  38. package/dist/assets/App-DvLyYXtZ.js +0 -897
  39. package/dist/assets/BootError-ps-fllml.js +0 -1
  40. package/dist/assets/CodeEditor-CX-m-nEs.js +0 -2
  41. package/dist/assets/RawJsonEditor-CY7IUmDp.js +0 -1
  42. package/dist/assets/boot-CuZxg0HF.js +0 -1
  43. package/dist/assets/contract-B3HSgIc9.js +0 -9
  44. package/dist/assets/handlebars-DBfGlcms.js +0 -1
  45. package/dist/assets/html-Dngeqtjy.js +0 -1
  46. package/dist/assets/index-BCoy6hGR.css +0 -1
  47. package/dist/assets/index-C-GU80Rf.js +0 -10
  48. package/dist/assets/javascript-DnPmr6xA.js +0 -1
  49. package/dist/assets/liquid-C4xaioHY.js +0 -1
  50. package/dist/assets/load-XqAV88cm.js +0 -3
  51. package/dist/assets/mdx-CCZI-lp7.js +0 -1
  52. package/dist/assets/python-CJHezmLq.js +0 -1
  53. package/dist/assets/razor-CK3JWDE6.js +0 -1
  54. package/dist/assets/typescript-WN4cheQs.js +0 -1
  55. package/dist/assets/validate-Dx8tWiBg.js +0 -8
  56. package/dist/assets/xml-C-RWR0G6.js +0 -1
  57. package/dist/assets/yaml-lg5xL1Wa.js +0 -1
@@ -0,0 +1,11 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/reformer-ui-kit-CzN5mDMr.js","assets/index-Bv1xwgY8.js","assets/index-DIgOR-JL.css","assets/index-IJIJTAKu.js","assets/useFormField-BLbvmpme-gc2657u6.js","assets/reformer-ui-kit-11-CeSX1KRr.js","assets/index-sBr0hAnB.js","assets/index-IZOejzqt.js","assets/index-DzAasWzr.css"])))=>i.map(i=>d[i]);
2
+ import{g as ko,_ as kt}from"./index-Bv1xwgY8.js";var Ie={exports:{}},$t={},fe={},Pe={},Tt={},Nt={},Et={},Ht;function bt(){return Ht||(Ht=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.regexpCode=e.getEsmExportName=e.getProperty=e.safeStringify=e.stringify=e.strConcat=e.addCodeArg=e.str=e._=e.nil=e._Code=e.Name=e.IDENTIFIER=e._CodeOrName=void 0;class t{}e._CodeOrName=t,e.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;class u extends t{constructor(r){if(super(),!e.IDENTIFIER.test(r))throw new Error("CodeGen: name must be a valid identifier");this.str=r}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}}e.Name=u;class n extends t{constructor(r){super(),this._items=typeof r=="string"?[r]:r}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;const r=this._items[0];return r===""||r==='""'}get str(){var r;return(r=this._str)!==null&&r!==void 0?r:this._str=this._items.reduce((s,y)=>`${s}${y}`,"")}get names(){var r;return(r=this._names)!==null&&r!==void 0?r:this._names=this._items.reduce((s,y)=>(y instanceof u&&(s[y.str]=(s[y.str]||0)+1),s),{})}}e._Code=n,e.nil=new n("");function v(p,...r){const s=[p[0]];let y=0;for(;y<r.length;)l(s,r[y]),s.push(p[++y]);return new n(s)}e._=v;const a=new n("+");function m(p,...r){const s=[h(p[0])];let y=0;for(;y<r.length;)s.push(a),l(s,r[y]),s.push(a,h(p[++y]));return f(s),new n(s)}e.str=m;function l(p,r){r instanceof n?p.push(...r._items):r instanceof u?p.push(r):p.push(w(r))}e.addCodeArg=l;function f(p){let r=1;for(;r<p.length-1;){if(p[r]===a){const s=x(p[r-1],p[r+1]);if(s!==void 0){p.splice(r-1,3,s);continue}p[r++]="+"}r++}}function x(p,r){if(r==='""')return p;if(p==='""')return r;if(typeof p=="string")return r instanceof u||p[p.length-1]!=='"'?void 0:typeof r!="string"?`${p.slice(0,-1)}${r}"`:r[0]==='"'?p.slice(0,-1)+r.slice(1):void 0;if(typeof r=="string"&&r[0]==='"'&&!(p instanceof u))return`"${p}${r.slice(1)}`}function b(p,r){return r.emptyStr()?p:p.emptyStr()?r:m`${p}${r}`}e.strConcat=b;function w(p){return typeof p=="number"||typeof p=="boolean"||p===null?p:h(Array.isArray(p)?p.join(","):p)}function S(p){return new n(h(p))}e.stringify=S;function h(p){return JSON.stringify(p).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}e.safeStringify=h;function g(p){return typeof p=="string"&&e.IDENTIFIER.test(p)?new n(`.${p}`):v`[${p}]`}e.getProperty=g;function C(p){if(typeof p=="string"&&e.IDENTIFIER.test(p))return new n(`${p}`);throw new Error(`CodeGen: invalid export name: ${p}, use explicit $id name mapping`)}e.getEsmExportName=C;function i(p){return new n(p.toString())}e.regexpCode=i})(Et)),Et}var It={},Wt;function Jt(){return Wt||(Wt=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ValueScope=e.ValueScopeName=e.Scope=e.varKinds=e.UsedValueState=void 0;const t=bt();class u extends Error{constructor(x){super(`CodeGen: "code" for ${x} not defined`),this.value=x.value}}var n;(function(f){f[f.Started=0]="Started",f[f.Completed=1]="Completed"})(n||(e.UsedValueState=n={})),e.varKinds={const:new t.Name("const"),let:new t.Name("let"),var:new t.Name("var")};class v{constructor({prefixes:x,parent:b}={}){this._names={},this._prefixes=x,this._parent=b}toName(x){return x instanceof t.Name?x:this.name(x)}name(x){return new t.Name(this._newName(x))}_newName(x){const b=this._names[x]||this._nameGroup(x);return`${x}${b.index++}`}_nameGroup(x){var b,w;if(!((w=(b=this._parent)===null||b===void 0?void 0:b._prefixes)===null||w===void 0)&&w.has(x)||this._prefixes&&!this._prefixes.has(x))throw new Error(`CodeGen: prefix "${x}" is not allowed in this scope`);return this._names[x]={prefix:x,index:0}}}e.Scope=v;class a extends t.Name{constructor(x,b){super(b),this.prefix=x}setValue(x,{property:b,itemIndex:w}){this.value=x,this.scopePath=(0,t._)`.${new t.Name(b)}[${w}]`}}e.ValueScopeName=a;const m=(0,t._)`\n`;class l extends v{constructor(x){super(x),this._values={},this._scope=x.scope,this.opts={...x,_n:x.lines?m:t.nil}}get(){return this._scope}name(x){return new a(x,this._newName(x))}value(x,b){var w;if(b.ref===void 0)throw new Error("CodeGen: ref must be passed in value");const S=this.toName(x),{prefix:h}=S,g=(w=b.key)!==null&&w!==void 0?w:b.ref;let C=this._values[h];if(C){const r=C.get(g);if(r)return r}else C=this._values[h]=new Map;C.set(g,S);const i=this._scope[h]||(this._scope[h]=[]),p=i.length;return i[p]=b.ref,S.setValue(b,{property:h,itemIndex:p}),S}getValue(x,b){const w=this._values[x];if(w)return w.get(b)}scopeRefs(x,b=this._values){return this._reduceValues(b,w=>{if(w.scopePath===void 0)throw new Error(`CodeGen: name "${w}" has no value`);return(0,t._)`${x}${w.scopePath}`})}scopeCode(x=this._values,b,w){return this._reduceValues(x,S=>{if(S.value===void 0)throw new Error(`CodeGen: name "${S}" has no value`);return S.value.code},b,w)}_reduceValues(x,b,w={},S){let h=t.nil;for(const g in x){const C=x[g];if(!C)continue;const i=w[g]=w[g]||new Map;C.forEach(p=>{if(i.has(p))return;i.set(p,n.Started);let r=b(p);if(r){const s=this.opts.es5?e.varKinds.var:e.varKinds.const;h=(0,t._)`${h}${s} ${p} = ${r};${this.opts._n}`}else if(r=S?.(p))h=(0,t._)`${h}${r}${this.opts._n}`;else throw new u(p);i.set(p,n.Completed)})}return h}}e.ValueScope=l})(It)),It}var Yt;function K(){return Yt||(Yt=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.or=e.and=e.not=e.CodeGen=e.operators=e.varKinds=e.ValueScopeName=e.ValueScope=e.Scope=e.Name=e.regexpCode=e.stringify=e.getProperty=e.nil=e.strConcat=e.str=e._=void 0;const t=bt(),u=Jt();var n=bt();Object.defineProperty(e,"_",{enumerable:!0,get:function(){return n._}}),Object.defineProperty(e,"str",{enumerable:!0,get:function(){return n.str}}),Object.defineProperty(e,"strConcat",{enumerable:!0,get:function(){return n.strConcat}}),Object.defineProperty(e,"nil",{enumerable:!0,get:function(){return n.nil}}),Object.defineProperty(e,"getProperty",{enumerable:!0,get:function(){return n.getProperty}}),Object.defineProperty(e,"stringify",{enumerable:!0,get:function(){return n.stringify}}),Object.defineProperty(e,"regexpCode",{enumerable:!0,get:function(){return n.regexpCode}}),Object.defineProperty(e,"Name",{enumerable:!0,get:function(){return n.Name}});var v=Jt();Object.defineProperty(e,"Scope",{enumerable:!0,get:function(){return v.Scope}}),Object.defineProperty(e,"ValueScope",{enumerable:!0,get:function(){return v.ValueScope}}),Object.defineProperty(e,"ValueScopeName",{enumerable:!0,get:function(){return v.ValueScopeName}}),Object.defineProperty(e,"varKinds",{enumerable:!0,get:function(){return v.varKinds}}),e.operators={GT:new t._Code(">"),GTE:new t._Code(">="),LT:new t._Code("<"),LTE:new t._Code("<="),EQ:new t._Code("==="),NEQ:new t._Code("!=="),NOT:new t._Code("!"),OR:new t._Code("||"),AND:new t._Code("&&"),ADD:new t._Code("+")};class a{optimizeNodes(){return this}optimizeNames(d,_){return this}}class m extends a{constructor(d,_,E){super(),this.varKind=d,this.name=_,this.rhs=E}render({es5:d,_n:_}){const E=d?u.varKinds.var:this.varKind,B=this.rhs===void 0?"":` = ${this.rhs}`;return`${E} ${this.name}${B};`+_}optimizeNames(d,_){if(d[this.name.str])return this.rhs&&(this.rhs=J(this.rhs,d,_)),this}get names(){return this.rhs instanceof t._CodeOrName?this.rhs.names:{}}}class l extends a{constructor(d,_,E){super(),this.lhs=d,this.rhs=_,this.sideEffects=E}render({_n:d}){return`${this.lhs} = ${this.rhs};`+d}optimizeNames(d,_){if(!(this.lhs instanceof t.Name&&!d[this.lhs.str]&&!this.sideEffects))return this.rhs=J(this.rhs,d,_),this}get names(){const d=this.lhs instanceof t.Name?{}:{...this.lhs.names};return L(d,this.rhs)}}class f extends l{constructor(d,_,E,B){super(d,E,B),this.op=_}render({_n:d}){return`${this.lhs} ${this.op}= ${this.rhs};`+d}}class x extends a{constructor(d){super(),this.label=d,this.names={}}render({_n:d}){return`${this.label}:`+d}}class b extends a{constructor(d){super(),this.label=d,this.names={}}render({_n:d}){return`break${this.label?` ${this.label}`:""};`+d}}class w extends a{constructor(d){super(),this.error=d}render({_n:d}){return`throw ${this.error};`+d}get names(){return this.error.names}}class S extends a{constructor(d){super(),this.code=d}render({_n:d}){return`${this.code};`+d}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(d,_){return this.code=J(this.code,d,_),this}get names(){return this.code instanceof t._CodeOrName?this.code.names:{}}}class h extends a{constructor(d=[]){super(),this.nodes=d}render(d){return this.nodes.reduce((_,E)=>_+E.render(d),"")}optimizeNodes(){const{nodes:d}=this;let _=d.length;for(;_--;){const E=d[_].optimizeNodes();Array.isArray(E)?d.splice(_,1,...E):E?d[_]=E:d.splice(_,1)}return d.length>0?this:void 0}optimizeNames(d,_){const{nodes:E}=this;let B=E.length;for(;B--;){const z=E[B];z.optimizeNames(d,_)||(ee(d,z.names),E.splice(B,1))}return E.length>0?this:void 0}get names(){return this.nodes.reduce((d,_)=>G(d,_.names),{})}}class g extends h{render(d){return"{"+d._n+super.render(d)+"}"+d._n}}class C extends h{}class i extends g{}i.kind="else";class p extends g{constructor(d,_){super(_),this.condition=d}render(d){let _=`if(${this.condition})`+super.render(d);return this.else&&(_+="else "+this.else.render(d)),_}optimizeNodes(){super.optimizeNodes();const d=this.condition;if(d===!0)return this.nodes;let _=this.else;if(_){const E=_.optimizeNodes();_=this.else=Array.isArray(E)?new i(E):E}if(_)return d===!1?_ instanceof p?_:_.nodes:this.nodes.length?this:new p(ue(d),_ instanceof p?[_]:_.nodes);if(!(d===!1||!this.nodes.length))return this}optimizeNames(d,_){var E;if(this.else=(E=this.else)===null||E===void 0?void 0:E.optimizeNames(d,_),!!(super.optimizeNames(d,_)||this.else))return this.condition=J(this.condition,d,_),this}get names(){const d=super.names;return L(d,this.condition),this.else&&G(d,this.else.names),d}}p.kind="if";class r extends g{}r.kind="for";class s extends r{constructor(d){super(),this.iteration=d}render(d){return`for(${this.iteration})`+super.render(d)}optimizeNames(d,_){if(super.optimizeNames(d,_))return this.iteration=J(this.iteration,d,_),this}get names(){return G(super.names,this.iteration.names)}}class y extends r{constructor(d,_,E,B){super(),this.varKind=d,this.name=_,this.from=E,this.to=B}render(d){const _=d.es5?u.varKinds.var:this.varKind,{name:E,from:B,to:z}=this;return`for(${_} ${E}=${B}; ${E}<${z}; ${E}++)`+super.render(d)}get names(){const d=L(super.names,this.from);return L(d,this.to)}}class o extends r{constructor(d,_,E,B){super(),this.loop=d,this.varKind=_,this.name=E,this.iterable=B}render(d){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(d)}optimizeNames(d,_){if(super.optimizeNames(d,_))return this.iterable=J(this.iterable,d,_),this}get names(){return G(super.names,this.iterable.names)}}class c extends g{constructor(d,_,E){super(),this.name=d,this.args=_,this.async=E}render(d){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(d)}}c.kind="func";class P extends h{render(d){return"return "+super.render(d)}}P.kind="return";class N extends g{render(d){let _="try"+super.render(d);return this.catch&&(_+=this.catch.render(d)),this.finally&&(_+=this.finally.render(d)),_}optimizeNodes(){var d,_;return super.optimizeNodes(),(d=this.catch)===null||d===void 0||d.optimizeNodes(),(_=this.finally)===null||_===void 0||_.optimizeNodes(),this}optimizeNames(d,_){var E,B;return super.optimizeNames(d,_),(E=this.catch)===null||E===void 0||E.optimizeNames(d,_),(B=this.finally)===null||B===void 0||B.optimizeNames(d,_),this}get names(){const d=super.names;return this.catch&&G(d,this.catch.names),this.finally&&G(d,this.finally.names),d}}class A extends g{constructor(d){super(),this.error=d}render(d){return`catch(${this.error})`+super.render(d)}}A.kind="catch";class D extends g{render(d){return"finally"+super.render(d)}}D.kind="finally";class F{constructor(d,_={}){this._values={},this._blockStarts=[],this._constants={},this.opts={..._,_n:_.lines?`
3
+ `:""},this._extScope=d,this._scope=new u.Scope({parent:d}),this._nodes=[new C]}toString(){return this._root.render(this.opts)}name(d){return this._scope.name(d)}scopeName(d){return this._extScope.name(d)}scopeValue(d,_){const E=this._extScope.value(d,_);return(this._values[E.prefix]||(this._values[E.prefix]=new Set)).add(E),E}getScopeValue(d,_){return this._extScope.getValue(d,_)}scopeRefs(d){return this._extScope.scopeRefs(d,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(d,_,E,B){const z=this._scope.toName(_);return E!==void 0&&B&&(this._constants[z.str]=E),this._leafNode(new m(d,z,E)),z}const(d,_,E){return this._def(u.varKinds.const,d,_,E)}let(d,_,E){return this._def(u.varKinds.let,d,_,E)}var(d,_,E){return this._def(u.varKinds.var,d,_,E)}assign(d,_,E){return this._leafNode(new l(d,_,E))}add(d,_){return this._leafNode(new f(d,e.operators.ADD,_))}code(d){return typeof d=="function"?d():d!==t.nil&&this._leafNode(new S(d)),this}object(...d){const _=["{"];for(const[E,B]of d)_.length>1&&_.push(","),_.push(E),(E!==B||this.opts.es5)&&(_.push(":"),(0,t.addCodeArg)(_,B));return _.push("}"),new t._Code(_)}if(d,_,E){if(this._blockNode(new p(d)),_&&E)this.code(_).else().code(E).endIf();else if(_)this.code(_).endIf();else if(E)throw new Error('CodeGen: "else" body without "then" body');return this}elseIf(d){return this._elseNode(new p(d))}else(){return this._elseNode(new i)}endIf(){return this._endBlockNode(p,i)}_for(d,_){return this._blockNode(d),_&&this.code(_).endFor(),this}for(d,_){return this._for(new s(d),_)}forRange(d,_,E,B,z=this.opts.es5?u.varKinds.var:u.varKinds.let){const X=this._scope.toName(d);return this._for(new y(z,X,_,E),()=>B(X))}forOf(d,_,E,B=u.varKinds.const){const z=this._scope.toName(d);if(this.opts.es5){const X=_ instanceof t.Name?_:this.var("_arr",_);return this.forRange("_i",0,(0,t._)`${X}.length`,W=>{this.var(z,(0,t._)`${X}[${W}]`),E(z)})}return this._for(new o("of",B,z,_),()=>E(z))}forIn(d,_,E,B=this.opts.es5?u.varKinds.var:u.varKinds.const){if(this.opts.ownProperties)return this.forOf(d,(0,t._)`Object.keys(${_})`,E);const z=this._scope.toName(d);return this._for(new o("in",B,z,_),()=>E(z))}endFor(){return this._endBlockNode(r)}label(d){return this._leafNode(new x(d))}break(d){return this._leafNode(new b(d))}return(d){const _=new P;if(this._blockNode(_),this.code(d),_.nodes.length!==1)throw new Error('CodeGen: "return" should have one node');return this._endBlockNode(P)}try(d,_,E){if(!_&&!E)throw new Error('CodeGen: "try" without "catch" and "finally"');const B=new N;if(this._blockNode(B),this.code(d),_){const z=this.name("e");this._currNode=B.catch=new A(z),_(z)}return E&&(this._currNode=B.finally=new D,this.code(E)),this._endBlockNode(A,D)}throw(d){return this._leafNode(new w(d))}block(d,_){return this._blockStarts.push(this._nodes.length),d&&this.code(d).endBlock(_),this}endBlock(d){const _=this._blockStarts.pop();if(_===void 0)throw new Error("CodeGen: not in self-balancing block");const E=this._nodes.length-_;if(E<0||d!==void 0&&E!==d)throw new Error(`CodeGen: wrong number of nodes: ${E} vs ${d} expected`);return this._nodes.length=_,this}func(d,_=t.nil,E,B){return this._blockNode(new c(d,_,E)),B&&this.code(B).endFunc(),this}endFunc(){return this._endBlockNode(c)}optimize(d=1){for(;d-- >0;)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(d){return this._currNode.nodes.push(d),this}_blockNode(d){this._currNode.nodes.push(d),this._nodes.push(d)}_endBlockNode(d,_){const E=this._currNode;if(E instanceof d||_&&E instanceof _)return this._nodes.pop(),this;throw new Error(`CodeGen: not in block "${_?`${d.kind}/${_.kind}`:d.kind}"`)}_elseNode(d){const _=this._currNode;if(!(_ instanceof p))throw new Error('CodeGen: "else" without "if"');return this._currNode=_.else=d,this}get _root(){return this._nodes[0]}get _currNode(){const d=this._nodes;return d[d.length-1]}set _currNode(d){const _=this._nodes;_[_.length-1]=d}}e.CodeGen=F;function G(T,d){for(const _ in d)T[_]=(T[_]||0)+(d[_]||0);return T}function L(T,d){return d instanceof t._CodeOrName?G(T,d.names):T}function J(T,d,_){if(T instanceof t.Name)return E(T);if(!B(T))return T;return new t._Code(T._items.reduce((z,X)=>(X instanceof t.Name&&(X=E(X)),X instanceof t._Code?z.push(...X._items):z.push(X),z),[]));function E(z){const X=_[z.str];return X===void 0||d[z.str]!==1?z:(delete d[z.str],X)}function B(z){return z instanceof t._Code&&z._items.some(X=>X instanceof t.Name&&d[X.str]===1&&_[X.str]!==void 0)}}function ee(T,d){for(const _ in d)T[_]=(T[_]||0)-(d[_]||0)}function ue(T){return typeof T=="boolean"||typeof T=="number"||T===null?!T:(0,t._)`!${R(T)}`}e.not=ue;const ye=k(e.operators.AND);function Z(...T){return T.reduce(ye)}e.and=Z;const be=k(e.operators.OR);function M(...T){return T.reduce(be)}e.or=M;function k(T){return(d,_)=>d===t.nil?_:_===t.nil?d:(0,t._)`${R(d)} ${T} ${R(_)}`}function R(T){return T instanceof t.Name?T:(0,t._)`(${T})`}})(Nt)),Nt}var V={},Xt;function Y(){if(Xt)return V;Xt=1,Object.defineProperty(V,"__esModule",{value:!0}),V.checkStrictMode=V.getErrorPath=V.Type=V.useFunc=V.setEvaluated=V.evaluatedPropsToName=V.mergeEvaluated=V.eachItem=V.unescapeJsonPointer=V.escapeJsonPointer=V.escapeFragment=V.unescapeFragment=V.schemaRefOrVal=V.schemaHasRulesButRef=V.schemaHasRules=V.checkUnknownRules=V.alwaysValidSchema=V.toHash=void 0;const e=K(),t=bt();function u(o){const c={};for(const P of o)c[P]=!0;return c}V.toHash=u;function n(o,c){return typeof c=="boolean"?c:Object.keys(c).length===0?!0:(v(o,c),!a(c,o.self.RULES.all))}V.alwaysValidSchema=n;function v(o,c=o.schema){const{opts:P,self:N}=o;if(!P.strictSchema||typeof c=="boolean")return;const A=N.RULES.keywords;for(const D in c)A[D]||y(o,`unknown keyword: "${D}"`)}V.checkUnknownRules=v;function a(o,c){if(typeof o=="boolean")return!o;for(const P in o)if(c[P])return!0;return!1}V.schemaHasRules=a;function m(o,c){if(typeof o=="boolean")return!o;for(const P in o)if(P!=="$ref"&&c.all[P])return!0;return!1}V.schemaHasRulesButRef=m;function l({topSchemaRef:o,schemaPath:c},P,N,A){if(!A){if(typeof P=="number"||typeof P=="boolean")return P;if(typeof P=="string")return(0,e._)`${P}`}return(0,e._)`${o}${c}${(0,e.getProperty)(N)}`}V.schemaRefOrVal=l;function f(o){return w(decodeURIComponent(o))}V.unescapeFragment=f;function x(o){return encodeURIComponent(b(o))}V.escapeFragment=x;function b(o){return typeof o=="number"?`${o}`:o.replace(/~/g,"~0").replace(/\//g,"~1")}V.escapeJsonPointer=b;function w(o){return o.replace(/~1/g,"/").replace(/~0/g,"~")}V.unescapeJsonPointer=w;function S(o,c){if(Array.isArray(o))for(const P of o)c(P);else c(o)}V.eachItem=S;function h({mergeNames:o,mergeToName:c,mergeValues:P,resultToName:N}){return(A,D,F,G)=>{const L=F===void 0?D:F instanceof e.Name?(D instanceof e.Name?o(A,D,F):c(A,D,F),F):D instanceof e.Name?(c(A,F,D),D):P(D,F);return G===e.Name&&!(L instanceof e.Name)?N(A,L):L}}V.mergeEvaluated={props:h({mergeNames:(o,c,P)=>o.if((0,e._)`${P} !== true && ${c} !== undefined`,()=>{o.if((0,e._)`${c} === true`,()=>o.assign(P,!0),()=>o.assign(P,(0,e._)`${P} || {}`).code((0,e._)`Object.assign(${P}, ${c})`))}),mergeToName:(o,c,P)=>o.if((0,e._)`${P} !== true`,()=>{c===!0?o.assign(P,!0):(o.assign(P,(0,e._)`${P} || {}`),C(o,P,c))}),mergeValues:(o,c)=>o===!0?!0:{...o,...c},resultToName:g}),items:h({mergeNames:(o,c,P)=>o.if((0,e._)`${P} !== true && ${c} !== undefined`,()=>o.assign(P,(0,e._)`${c} === true ? true : ${P} > ${c} ? ${P} : ${c}`)),mergeToName:(o,c,P)=>o.if((0,e._)`${P} !== true`,()=>o.assign(P,c===!0?!0:(0,e._)`${P} > ${c} ? ${P} : ${c}`)),mergeValues:(o,c)=>o===!0?!0:Math.max(o,c),resultToName:(o,c)=>o.var("items",c)})};function g(o,c){if(c===!0)return o.var("props",!0);const P=o.var("props",(0,e._)`{}`);return c!==void 0&&C(o,P,c),P}V.evaluatedPropsToName=g;function C(o,c,P){Object.keys(P).forEach(N=>o.assign((0,e._)`${c}${(0,e.getProperty)(N)}`,!0))}V.setEvaluated=C;const i={};function p(o,c){return o.scopeValue("func",{ref:c,code:i[c.code]||(i[c.code]=new t._Code(c.code))})}V.useFunc=p;var r;(function(o){o[o.Num=0]="Num",o[o.Str=1]="Str"})(r||(V.Type=r={}));function s(o,c,P){if(o instanceof e.Name){const N=c===r.Num;return P?N?(0,e._)`"[" + ${o} + "]"`:(0,e._)`"['" + ${o} + "']"`:N?(0,e._)`"/" + ${o}`:(0,e._)`"/" + ${o}.replace(/~/g, "~0").replace(/\\//g, "~1")`}return P?(0,e.getProperty)(o).toString():"/"+b(o)}V.getErrorPath=s;function y(o,c,P=o.opts.strictSchema){if(P){if(c=`strict mode: ${c}`,P===!0)throw new Error(c);o.self.logger.warn(c)}}return V.checkStrictMode=y,V}var Re={},Qt;function ve(){if(Qt)return Re;Qt=1,Object.defineProperty(Re,"__esModule",{value:!0});const e=K(),t={data:new e.Name("data"),valCxt:new e.Name("valCxt"),instancePath:new e.Name("instancePath"),parentData:new e.Name("parentData"),parentDataProperty:new e.Name("parentDataProperty"),rootData:new e.Name("rootData"),dynamicAnchors:new e.Name("dynamicAnchors"),vErrors:new e.Name("vErrors"),errors:new e.Name("errors"),this:new e.Name("this"),self:new e.Name("self"),scope:new e.Name("scope"),json:new e.Name("json"),jsonPos:new e.Name("jsonPos"),jsonLen:new e.Name("jsonLen"),jsonPart:new e.Name("jsonPart")};return Re.default=t,Re}var Zt;function vt(){return Zt||(Zt=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.extendErrors=e.resetErrorsCount=e.reportExtraError=e.reportError=e.keyword$DataError=e.keywordError=void 0;const t=K(),u=Y(),n=ve();e.keywordError={message:({keyword:i})=>(0,t.str)`must pass "${i}" keyword validation`},e.keyword$DataError={message:({keyword:i,schemaType:p})=>p?(0,t.str)`"${i}" keyword must be ${p} ($data)`:(0,t.str)`"${i}" keyword is invalid ($data)`};function v(i,p=e.keywordError,r,s){const{it:y}=i,{gen:o,compositeRule:c,allErrors:P}=y,N=w(i,p,r);s??(c||P)?f(o,N):x(y,(0,t._)`[${N}]`)}e.reportError=v;function a(i,p=e.keywordError,r){const{it:s}=i,{gen:y,compositeRule:o,allErrors:c}=s,P=w(i,p,r);f(y,P),o||c||x(s,n.default.vErrors)}e.reportExtraError=a;function m(i,p){i.assign(n.default.errors,p),i.if((0,t._)`${n.default.vErrors} !== null`,()=>i.if(p,()=>i.assign((0,t._)`${n.default.vErrors}.length`,p),()=>i.assign(n.default.vErrors,null)))}e.resetErrorsCount=m;function l({gen:i,keyword:p,schemaValue:r,data:s,errsCount:y,it:o}){if(y===void 0)throw new Error("ajv implementation error");const c=i.name("err");i.forRange("i",y,n.default.errors,P=>{i.const(c,(0,t._)`${n.default.vErrors}[${P}]`),i.if((0,t._)`${c}.instancePath === undefined`,()=>i.assign((0,t._)`${c}.instancePath`,(0,t.strConcat)(n.default.instancePath,o.errorPath))),i.assign((0,t._)`${c}.schemaPath`,(0,t.str)`${o.errSchemaPath}/${p}`),o.opts.verbose&&(i.assign((0,t._)`${c}.schema`,r),i.assign((0,t._)`${c}.data`,s))})}e.extendErrors=l;function f(i,p){const r=i.const("err",p);i.if((0,t._)`${n.default.vErrors} === null`,()=>i.assign(n.default.vErrors,(0,t._)`[${r}]`),(0,t._)`${n.default.vErrors}.push(${r})`),i.code((0,t._)`${n.default.errors}++`)}function x(i,p){const{gen:r,validateName:s,schemaEnv:y}=i;y.$async?r.throw((0,t._)`new ${i.ValidationError}(${p})`):(r.assign((0,t._)`${s}.errors`,p),r.return(!1))}const b={keyword:new t.Name("keyword"),schemaPath:new t.Name("schemaPath"),params:new t.Name("params"),propertyName:new t.Name("propertyName"),message:new t.Name("message"),schema:new t.Name("schema"),parentSchema:new t.Name("parentSchema")};function w(i,p,r){const{createErrors:s}=i.it;return s===!1?(0,t._)`{}`:S(i,p,r)}function S(i,p,r={}){const{gen:s,it:y}=i,o=[h(y,r),g(i,r)];return C(i,p,o),s.object(...o)}function h({errorPath:i},{instancePath:p}){const r=p?(0,t.str)`${i}${(0,u.getErrorPath)(p,u.Type.Str)}`:i;return[n.default.instancePath,(0,t.strConcat)(n.default.instancePath,r)]}function g({keyword:i,it:{errSchemaPath:p}},{schemaPath:r,parentSchema:s}){let y=s?p:(0,t.str)`${p}/${i}`;return r&&(y=(0,t.str)`${y}${(0,u.getErrorPath)(r,u.Type.Str)}`),[b.schemaPath,y]}function C(i,{params:p,message:r},s){const{keyword:y,data:o,schemaValue:c,it:P}=i,{opts:N,propertyName:A,topSchemaRef:D,schemaPath:F}=P;s.push([b.keyword,y],[b.params,typeof p=="function"?p(i):p||(0,t._)`{}`]),N.messages&&s.push([b.message,typeof r=="function"?r(i):r]),N.verbose&&s.push([b.schema,c],[b.parentSchema,(0,t._)`${D}${F}`],[n.default.data,o]),A&&s.push([b.propertyName,A])}})(Tt)),Tt}var er;function $o(){if(er)return Pe;er=1,Object.defineProperty(Pe,"__esModule",{value:!0}),Pe.boolOrEmptySchema=Pe.topBoolOrEmptySchema=void 0;const e=vt(),t=K(),u=ve(),n={message:"boolean schema is false"};function v(l){const{gen:f,schema:x,validateName:b}=l;x===!1?m(l,!1):typeof x=="object"&&x.$async===!0?f.return(u.default.data):(f.assign((0,t._)`${b}.errors`,null),f.return(!0))}Pe.topBoolOrEmptySchema=v;function a(l,f){const{gen:x,schema:b}=l;b===!1?(x.var(f,!1),m(l)):x.var(f,!0)}Pe.boolOrEmptySchema=a;function m(l,f){const{gen:x,data:b}=l,w={gen:x,keyword:"false schema",data:b,schema:!1,schemaCode:!1,schemaValue:!1,params:{},it:l};(0,e.reportError)(w,n,void 0,f)}return Pe}var oe={},xe={},tr;function po(){if(tr)return xe;tr=1,Object.defineProperty(xe,"__esModule",{value:!0}),xe.getRules=xe.isJSONType=void 0;const e=["string","number","integer","boolean","null","object","array"],t=new Set(e);function u(v){return typeof v=="string"&&t.has(v)}xe.isJSONType=u;function n(){const v={number:{type:"number",rules:[]},string:{type:"string",rules:[]},array:{type:"array",rules:[]},object:{type:"object",rules:[]}};return{types:{...v,integer:!0,boolean:!0,null:!0},rules:[{rules:[]},v.number,v.string,v.array,v.object],post:{rules:[]},all:{},keywords:{}}}return xe.getRules=n,xe}var ge={},rr;function lo(){if(rr)return ge;rr=1,Object.defineProperty(ge,"__esModule",{value:!0}),ge.shouldUseRule=ge.shouldUseGroup=ge.schemaHasRulesForType=void 0;function e({schema:n,self:v},a){const m=v.RULES.types[a];return m&&m!==!0&&t(n,m)}ge.schemaHasRulesForType=e;function t(n,v){return v.rules.some(a=>u(n,a))}ge.shouldUseGroup=t;function u(n,v){var a;return n[v.keyword]!==void 0||((a=v.definition.implements)===null||a===void 0?void 0:a.some(m=>n[m]!==void 0))}return ge.shouldUseRule=u,ge}var or;function St(){if(or)return oe;or=1,Object.defineProperty(oe,"__esModule",{value:!0}),oe.reportTypeError=oe.checkDataTypes=oe.checkDataType=oe.coerceAndCheckDataType=oe.getJSONTypes=oe.getSchemaTypes=oe.DataType=void 0;const e=po(),t=lo(),u=vt(),n=K(),v=Y();var a;(function(r){r[r.Correct=0]="Correct",r[r.Wrong=1]="Wrong"})(a||(oe.DataType=a={}));function m(r){const s=l(r.type);if(s.includes("null")){if(r.nullable===!1)throw new Error("type: null contradicts nullable: false")}else{if(!s.length&&r.nullable!==void 0)throw new Error('"nullable" cannot be used without "type"');r.nullable===!0&&s.push("null")}return s}oe.getSchemaTypes=m;function l(r){const s=Array.isArray(r)?r:r?[r]:[];if(s.every(e.isJSONType))return s;throw new Error("type must be JSONType or JSONType[]: "+s.join(","))}oe.getJSONTypes=l;function f(r,s){const{gen:y,data:o,opts:c}=r,P=b(s,c.coerceTypes),N=s.length>0&&!(P.length===0&&s.length===1&&(0,t.schemaHasRulesForType)(r,s[0]));if(N){const A=g(s,o,c.strictNumbers,a.Wrong);y.if(A,()=>{P.length?w(r,s,P):i(r)})}return N}oe.coerceAndCheckDataType=f;const x=new Set(["string","number","integer","boolean","null"]);function b(r,s){return s?r.filter(y=>x.has(y)||s==="array"&&y==="array"):[]}function w(r,s,y){const{gen:o,data:c,opts:P}=r,N=o.let("dataType",(0,n._)`typeof ${c}`),A=o.let("coerced",(0,n._)`undefined`);P.coerceTypes==="array"&&o.if((0,n._)`${N} == 'object' && Array.isArray(${c}) && ${c}.length == 1`,()=>o.assign(c,(0,n._)`${c}[0]`).assign(N,(0,n._)`typeof ${c}`).if(g(s,c,P.strictNumbers),()=>o.assign(A,c))),o.if((0,n._)`${A} !== undefined`);for(const F of y)(x.has(F)||F==="array"&&P.coerceTypes==="array")&&D(F);o.else(),i(r),o.endIf(),o.if((0,n._)`${A} !== undefined`,()=>{o.assign(c,A),S(r,A)});function D(F){switch(F){case"string":o.elseIf((0,n._)`${N} == "number" || ${N} == "boolean"`).assign(A,(0,n._)`"" + ${c}`).elseIf((0,n._)`${c} === null`).assign(A,(0,n._)`""`);return;case"number":o.elseIf((0,n._)`${N} == "boolean" || ${c} === null
4
+ || (${N} == "string" && ${c} && ${c} == +${c})`).assign(A,(0,n._)`+${c}`);return;case"integer":o.elseIf((0,n._)`${N} === "boolean" || ${c} === null
5
+ || (${N} === "string" && ${c} && ${c} == +${c} && !(${c} % 1))`).assign(A,(0,n._)`+${c}`);return;case"boolean":o.elseIf((0,n._)`${c} === "false" || ${c} === 0 || ${c} === null`).assign(A,!1).elseIf((0,n._)`${c} === "true" || ${c} === 1`).assign(A,!0);return;case"null":o.elseIf((0,n._)`${c} === "" || ${c} === 0 || ${c} === false`),o.assign(A,null);return;case"array":o.elseIf((0,n._)`${N} === "string" || ${N} === "number"
6
+ || ${N} === "boolean" || ${c} === null`).assign(A,(0,n._)`[${c}]`)}}}function S({gen:r,parentData:s,parentDataProperty:y},o){r.if((0,n._)`${s} !== undefined`,()=>r.assign((0,n._)`${s}[${y}]`,o))}function h(r,s,y,o=a.Correct){const c=o===a.Correct?n.operators.EQ:n.operators.NEQ;let P;switch(r){case"null":return(0,n._)`${s} ${c} null`;case"array":P=(0,n._)`Array.isArray(${s})`;break;case"object":P=(0,n._)`${s} && typeof ${s} == "object" && !Array.isArray(${s})`;break;case"integer":P=N((0,n._)`!(${s} % 1) && !isNaN(${s})`);break;case"number":P=N();break;default:return(0,n._)`typeof ${s} ${c} ${r}`}return o===a.Correct?P:(0,n.not)(P);function N(A=n.nil){return(0,n.and)((0,n._)`typeof ${s} == "number"`,A,y?(0,n._)`isFinite(${s})`:n.nil)}}oe.checkDataType=h;function g(r,s,y,o){if(r.length===1)return h(r[0],s,y,o);let c;const P=(0,v.toHash)(r);if(P.array&&P.object){const N=(0,n._)`typeof ${s} != "object"`;c=P.null?N:(0,n._)`!${s} || ${N}`,delete P.null,delete P.array,delete P.object}else c=n.nil;P.number&&delete P.integer;for(const N in P)c=(0,n.and)(c,h(N,s,y,o));return c}oe.checkDataTypes=g;const C={message:({schema:r})=>`must be ${r}`,params:({schema:r,schemaValue:s})=>typeof r=="string"?(0,n._)`{type: ${r}}`:(0,n._)`{type: ${s}}`};function i(r){const s=p(r);(0,u.reportError)(s,C)}oe.reportTypeError=i;function p(r){const{gen:s,data:y,schema:o}=r,c=(0,v.schemaRefOrVal)(r,o,"type");return{gen:s,keyword:"type",data:y,schema:o.type,schemaCode:c,schemaValue:c,parentSchema:o,params:{},it:r}}return oe}var Te={},nr;function To(){if(nr)return Te;nr=1,Object.defineProperty(Te,"__esModule",{value:!0}),Te.assignDefaults=void 0;const e=K(),t=Y();function u(v,a){const{properties:m,items:l}=v.schema;if(a==="object"&&m)for(const f in m)n(v,f,m[f].default);else a==="array"&&Array.isArray(l)&&l.forEach((f,x)=>n(v,x,f.default))}Te.assignDefaults=u;function n(v,a,m){const{gen:l,compositeRule:f,data:x,opts:b}=v;if(m===void 0)return;const w=(0,e._)`${x}${(0,e.getProperty)(a)}`;if(f){(0,t.checkStrictMode)(v,`default is ignored for: ${w}`);return}let S=(0,e._)`${w} === undefined`;b.useDefaults==="empty"&&(S=(0,e._)`${S} || ${w} === null || ${w} === ""`),l.if(S,(0,e._)`${w} = ${(0,e.stringify)(m)}`)}return Te}var le={},Q={},ar;function ce(){if(ar)return Q;ar=1,Object.defineProperty(Q,"__esModule",{value:!0}),Q.validateUnion=Q.validateArray=Q.usePattern=Q.callValidateCode=Q.schemaProperties=Q.allSchemaProperties=Q.noPropertyInData=Q.propertyInData=Q.isOwnProperty=Q.hasPropFunc=Q.reportMissingProp=Q.checkMissingProp=Q.checkReportMissingProp=void 0;const e=K(),t=Y(),u=ve(),n=Y();function v(r,s){const{gen:y,data:o,it:c}=r;y.if(b(y,o,s,c.opts.ownProperties),()=>{r.setParams({missingProperty:(0,e._)`${s}`},!0),r.error()})}Q.checkReportMissingProp=v;function a({gen:r,data:s,it:{opts:y}},o,c){return(0,e.or)(...o.map(P=>(0,e.and)(b(r,s,P,y.ownProperties),(0,e._)`${c} = ${P}`)))}Q.checkMissingProp=a;function m(r,s){r.setParams({missingProperty:s},!0),r.error()}Q.reportMissingProp=m;function l(r){return r.scopeValue("func",{ref:Object.prototype.hasOwnProperty,code:(0,e._)`Object.prototype.hasOwnProperty`})}Q.hasPropFunc=l;function f(r,s,y){return(0,e._)`${l(r)}.call(${s}, ${y})`}Q.isOwnProperty=f;function x(r,s,y,o){const c=(0,e._)`${s}${(0,e.getProperty)(y)} !== undefined`;return o?(0,e._)`${c} && ${f(r,s,y)}`:c}Q.propertyInData=x;function b(r,s,y,o){const c=(0,e._)`${s}${(0,e.getProperty)(y)} === undefined`;return o?(0,e.or)(c,(0,e.not)(f(r,s,y))):c}Q.noPropertyInData=b;function w(r){return r?Object.keys(r).filter(s=>s!=="__proto__"):[]}Q.allSchemaProperties=w;function S(r,s){return w(s).filter(y=>!(0,t.alwaysValidSchema)(r,s[y]))}Q.schemaProperties=S;function h({schemaCode:r,data:s,it:{gen:y,topSchemaRef:o,schemaPath:c,errorPath:P},it:N},A,D,F){const G=F?(0,e._)`${r}, ${s}, ${o}${c}`:s,L=[[u.default.instancePath,(0,e.strConcat)(u.default.instancePath,P)],[u.default.parentData,N.parentData],[u.default.parentDataProperty,N.parentDataProperty],[u.default.rootData,u.default.rootData]];N.opts.dynamicRef&&L.push([u.default.dynamicAnchors,u.default.dynamicAnchors]);const J=(0,e._)`${G}, ${y.object(...L)}`;return D!==e.nil?(0,e._)`${A}.call(${D}, ${J})`:(0,e._)`${A}(${J})`}Q.callValidateCode=h;const g=(0,e._)`new RegExp`;function C({gen:r,it:{opts:s}},y){const o=s.unicodeRegExp?"u":"",{regExp:c}=s.code,P=c(y,o);return r.scopeValue("pattern",{key:P.toString(),ref:P,code:(0,e._)`${c.code==="new RegExp"?g:(0,n.useFunc)(r,c)}(${y}, ${o})`})}Q.usePattern=C;function i(r){const{gen:s,data:y,keyword:o,it:c}=r,P=s.name("valid");if(c.allErrors){const A=s.let("valid",!0);return N(()=>s.assign(A,!1)),A}return s.var(P,!0),N(()=>s.break()),P;function N(A){const D=s.const("len",(0,e._)`${y}.length`);s.forRange("i",0,D,F=>{r.subschema({keyword:o,dataProp:F,dataPropType:t.Type.Num},P),s.if((0,e.not)(P),A)})}}Q.validateArray=i;function p(r){const{gen:s,schema:y,keyword:o,it:c}=r;if(!Array.isArray(y))throw new Error("ajv implementation error");if(y.some(D=>(0,t.alwaysValidSchema)(c,D))&&!c.opts.unevaluated)return;const N=s.let("valid",!1),A=s.name("_valid");s.block(()=>y.forEach((D,F)=>{const G=r.subschema({keyword:o,schemaProp:F,compositeRule:!0},A);s.assign(N,(0,e._)`${N} || ${A}`),r.mergeValidEvaluated(G,A)||s.if((0,e.not)(N))})),r.result(N,()=>r.reset(),()=>r.error(!0))}return Q.validateUnion=p,Q}var ir;function No(){if(ir)return le;ir=1,Object.defineProperty(le,"__esModule",{value:!0}),le.validateKeywordUsage=le.validSchemaType=le.funcKeywordCode=le.macroKeywordCode=void 0;const e=K(),t=ve(),u=ce(),n=vt();function v(S,h){const{gen:g,keyword:C,schema:i,parentSchema:p,it:r}=S,s=h.macro.call(r.self,i,p,r),y=x(g,C,s);r.opts.validateSchema!==!1&&r.self.validateSchema(s,!0);const o=g.name("valid");S.subschema({schema:s,schemaPath:e.nil,errSchemaPath:`${r.errSchemaPath}/${C}`,topSchemaRef:y,compositeRule:!0},o),S.pass(o,()=>S.error(!0))}le.macroKeywordCode=v;function a(S,h){var g;const{gen:C,keyword:i,schema:p,parentSchema:r,$data:s,it:y}=S;f(y,h);const o=!s&&h.compile?h.compile.call(y.self,p,r,y):h.validate,c=x(C,i,o),P=C.let("valid");S.block$data(P,N),S.ok((g=h.valid)!==null&&g!==void 0?g:P);function N(){if(h.errors===!1)F(),h.modifying&&m(S),G(()=>S.error());else{const L=h.async?A():D();h.modifying&&m(S),G(()=>l(S,L))}}function A(){const L=C.let("ruleErrs",null);return C.try(()=>F((0,e._)`await `),J=>C.assign(P,!1).if((0,e._)`${J} instanceof ${y.ValidationError}`,()=>C.assign(L,(0,e._)`${J}.errors`),()=>C.throw(J))),L}function D(){const L=(0,e._)`${c}.errors`;return C.assign(L,null),F(e.nil),L}function F(L=h.async?(0,e._)`await `:e.nil){const J=y.opts.passContext?t.default.this:t.default.self,ee=!("compile"in h&&!s||h.schema===!1);C.assign(P,(0,e._)`${L}${(0,u.callValidateCode)(S,c,J,ee)}`,h.modifying)}function G(L){var J;C.if((0,e.not)((J=h.valid)!==null&&J!==void 0?J:P),L)}}le.funcKeywordCode=a;function m(S){const{gen:h,data:g,it:C}=S;h.if(C.parentData,()=>h.assign(g,(0,e._)`${C.parentData}[${C.parentDataProperty}]`))}function l(S,h){const{gen:g}=S;g.if((0,e._)`Array.isArray(${h})`,()=>{g.assign(t.default.vErrors,(0,e._)`${t.default.vErrors} === null ? ${h} : ${t.default.vErrors}.concat(${h})`).assign(t.default.errors,(0,e._)`${t.default.vErrors}.length`),(0,n.extendErrors)(S)},()=>S.error())}function f({schemaEnv:S},h){if(h.async&&!S.$async)throw new Error("async keyword in sync schema")}function x(S,h,g){if(g===void 0)throw new Error(`keyword "${h}" failed to compile`);return S.scopeValue("keyword",typeof g=="function"?{ref:g}:{ref:g,code:(0,e.stringify)(g)})}function b(S,h,g=!1){return!h.length||h.some(C=>C==="array"?Array.isArray(S):C==="object"?S&&typeof S=="object"&&!Array.isArray(S):typeof S==C||g&&typeof S>"u")}le.validSchemaType=b;function w({schema:S,opts:h,self:g,errSchemaPath:C},i,p){if(Array.isArray(i.keyword)?!i.keyword.includes(p):i.keyword!==p)throw new Error("ajv implementation error");const r=i.dependencies;if(r?.some(s=>!Object.prototype.hasOwnProperty.call(S,s)))throw new Error(`parent schema must have dependencies of ${p}: ${r.join(",")}`);if(i.validateSchema&&!i.validateSchema(S[p])){const y=`keyword "${p}" value is invalid at path "${C}": `+g.errorsText(i.validateSchema.errors);if(h.validateSchema==="log")g.logger.error(y);else throw new Error(y)}}return le.validateKeywordUsage=w,le}var he={},sr;function Eo(){if(sr)return he;sr=1,Object.defineProperty(he,"__esModule",{value:!0}),he.extendSubschemaMode=he.extendSubschemaData=he.getSubschema=void 0;const e=K(),t=Y();function u(a,{keyword:m,schemaProp:l,schema:f,schemaPath:x,errSchemaPath:b,topSchemaRef:w}){if(m!==void 0&&f!==void 0)throw new Error('both "keyword" and "schema" passed, only one allowed');if(m!==void 0){const S=a.schema[m];return l===void 0?{schema:S,schemaPath:(0,e._)`${a.schemaPath}${(0,e.getProperty)(m)}`,errSchemaPath:`${a.errSchemaPath}/${m}`}:{schema:S[l],schemaPath:(0,e._)`${a.schemaPath}${(0,e.getProperty)(m)}${(0,e.getProperty)(l)}`,errSchemaPath:`${a.errSchemaPath}/${m}/${(0,t.escapeFragment)(l)}`}}if(f!==void 0){if(x===void 0||b===void 0||w===void 0)throw new Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"');return{schema:f,schemaPath:x,topSchemaRef:w,errSchemaPath:b}}throw new Error('either "keyword" or "schema" must be passed')}he.getSubschema=u;function n(a,m,{dataProp:l,dataPropType:f,data:x,dataTypes:b,propertyName:w}){if(x!==void 0&&l!==void 0)throw new Error('both "data" and "dataProp" passed, only one allowed');const{gen:S}=m;if(l!==void 0){const{errorPath:g,dataPathArr:C,opts:i}=m,p=S.let("data",(0,e._)`${m.data}${(0,e.getProperty)(l)}`,!0);h(p),a.errorPath=(0,e.str)`${g}${(0,t.getErrorPath)(l,f,i.jsPropertySyntax)}`,a.parentDataProperty=(0,e._)`${l}`,a.dataPathArr=[...C,a.parentDataProperty]}if(x!==void 0){const g=x instanceof e.Name?x:S.let("data",x,!0);h(g),w!==void 0&&(a.propertyName=w)}b&&(a.dataTypes=b);function h(g){a.data=g,a.dataLevel=m.dataLevel+1,a.dataTypes=[],m.definedProperties=new Set,a.parentData=m.data,a.dataNames=[...m.dataNames,g]}}he.extendSubschemaData=n;function v(a,{jtdDiscriminator:m,jtdMetadata:l,compositeRule:f,createErrors:x,allErrors:b}){f!==void 0&&(a.compositeRule=f),x!==void 0&&(a.createErrors=x),b!==void 0&&(a.allErrors=b),a.jtdDiscriminator=m,a.jtdMetadata=l}return he.extendSubschemaMode=v,he}var ne={},Rt,pr;function co(){return pr||(pr=1,Rt=function e(t,u){if(t===u)return!0;if(t&&u&&typeof t=="object"&&typeof u=="object"){if(t.constructor!==u.constructor)return!1;var n,v,a;if(Array.isArray(t)){if(n=t.length,n!=u.length)return!1;for(v=n;v--!==0;)if(!e(t[v],u[v]))return!1;return!0}if(t.constructor===RegExp)return t.source===u.source&&t.flags===u.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===u.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===u.toString();if(a=Object.keys(t),n=a.length,n!==Object.keys(u).length)return!1;for(v=n;v--!==0;)if(!Object.prototype.hasOwnProperty.call(u,a[v]))return!1;for(v=n;v--!==0;){var m=a[v];if(!e(t[m],u[m]))return!1}return!0}return t!==t&&u!==u}),Rt}var At={exports:{}},dr;function Io(){if(dr)return At.exports;dr=1;var e=At.exports=function(n,v,a){typeof v=="function"&&(a=v,v={}),a=v.cb||a;var m=typeof a=="function"?a:a.pre||function(){},l=a.post||function(){};t(v,m,l,n,"",n)};e.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0,if:!0,then:!0,else:!0},e.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0},e.propsKeywords={$defs:!0,definitions:!0,properties:!0,patternProperties:!0,dependencies:!0},e.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0};function t(n,v,a,m,l,f,x,b,w,S){if(m&&typeof m=="object"&&!Array.isArray(m)){v(m,l,f,x,b,w,S);for(var h in m){var g=m[h];if(Array.isArray(g)){if(h in e.arrayKeywords)for(var C=0;C<g.length;C++)t(n,v,a,g[C],l+"/"+h+"/"+C,f,l,h,m,C)}else if(h in e.propsKeywords){if(g&&typeof g=="object")for(var i in g)t(n,v,a,g[i],l+"/"+h+"/"+u(i),f,l,h,m,i)}else(h in e.keywords||n.allKeys&&!(h in e.skipKeywords))&&t(n,v,a,g,l+"/"+h,f,l,h,m)}a(m,l,f,x,b,w,S)}}function u(n){return n.replace(/~/g,"~0").replace(/\//g,"~1")}return At.exports}var lr;function Pt(){if(lr)return ne;lr=1,Object.defineProperty(ne,"__esModule",{value:!0}),ne.getSchemaRefs=ne.resolveUrl=ne.normalizeId=ne._getFullPath=ne.getFullPath=ne.inlineRef=void 0;const e=Y(),t=co(),u=Io(),n=new Set(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum","const"]);function v(C,i=!0){return typeof C=="boolean"?!0:i===!0?!m(C):i?l(C)<=i:!1}ne.inlineRef=v;const a=new Set(["$ref","$recursiveRef","$recursiveAnchor","$dynamicRef","$dynamicAnchor"]);function m(C){for(const i in C){if(a.has(i))return!0;const p=C[i];if(Array.isArray(p)&&p.some(m)||typeof p=="object"&&m(p))return!0}return!1}function l(C){let i=0;for(const p in C){if(p==="$ref")return 1/0;if(i++,!n.has(p)&&(typeof C[p]=="object"&&(0,e.eachItem)(C[p],r=>i+=l(r)),i===1/0))return 1/0}return i}function f(C,i="",p){p!==!1&&(i=w(i));const r=C.parse(i);return x(C,r)}ne.getFullPath=f;function x(C,i){return C.serialize(i).split("#")[0]+"#"}ne._getFullPath=x;const b=/#\/?$/;function w(C){return C?C.replace(b,""):""}ne.normalizeId=w;function S(C,i,p){return p=w(p),C.resolve(i,p)}ne.resolveUrl=S;const h=/^[a-z_][-a-z0-9._]*$/i;function g(C,i){if(typeof C=="boolean")return{};const{schemaId:p,uriResolver:r}=this.opts,s=w(C[p]||i),y={"":s},o=f(r,s,!1),c={},P=new Set;return u(C,{allKeys:!0},(D,F,G,L)=>{if(L===void 0)return;const J=o+F;let ee=y[L];typeof D[p]=="string"&&(ee=ue.call(this,D[p])),ye.call(this,D.$anchor),ye.call(this,D.$dynamicAnchor),y[F]=ee;function ue(Z){const be=this.opts.uriResolver.resolve;if(Z=w(ee?be(ee,Z):Z),P.has(Z))throw A(Z);P.add(Z);let M=this.refs[Z];return typeof M=="string"&&(M=this.refs[M]),typeof M=="object"?N(D,M.schema,Z):Z!==w(J)&&(Z[0]==="#"?(N(D,c[Z],Z),c[Z]=D):this.refs[Z]=J),Z}function ye(Z){if(typeof Z=="string"){if(!h.test(Z))throw new Error(`invalid anchor "${Z}"`);ue.call(this,`#${Z}`)}}}),c;function N(D,F,G){if(F!==void 0&&!t(D,F))throw A(G)}function A(D){return new Error(`reference "${D}" resolves to more than one schema`)}}return ne.getSchemaRefs=g,ne}var cr;function xt(){if(cr)return fe;cr=1,Object.defineProperty(fe,"__esModule",{value:!0}),fe.getData=fe.KeywordCxt=fe.validateFunctionCode=void 0;const e=$o(),t=St(),u=lo(),n=St(),v=To(),a=No(),m=Eo(),l=K(),f=ve(),x=Pt(),b=Y(),w=vt();function S(j){if(o(j)&&(P(j),y(j))){i(j);return}h(j,()=>(0,e.topBoolOrEmptySchema)(j))}fe.validateFunctionCode=S;function h({gen:j,validateName:$,schema:I,schemaEnv:O,opts:q},U){q.code.es5?j.func($,(0,l._)`${f.default.data}, ${f.default.valCxt}`,O.$async,()=>{j.code((0,l._)`"use strict"; ${r(I,q)}`),C(j,q),j.code(U)}):j.func($,(0,l._)`${f.default.data}, ${g(q)}`,O.$async,()=>j.code(r(I,q)).code(U))}function g(j){return(0,l._)`{${f.default.instancePath}="", ${f.default.parentData}, ${f.default.parentDataProperty}, ${f.default.rootData}=${f.default.data}${j.dynamicRef?(0,l._)`, ${f.default.dynamicAnchors}={}`:l.nil}}={}`}function C(j,$){j.if(f.default.valCxt,()=>{j.var(f.default.instancePath,(0,l._)`${f.default.valCxt}.${f.default.instancePath}`),j.var(f.default.parentData,(0,l._)`${f.default.valCxt}.${f.default.parentData}`),j.var(f.default.parentDataProperty,(0,l._)`${f.default.valCxt}.${f.default.parentDataProperty}`),j.var(f.default.rootData,(0,l._)`${f.default.valCxt}.${f.default.rootData}`),$.dynamicRef&&j.var(f.default.dynamicAnchors,(0,l._)`${f.default.valCxt}.${f.default.dynamicAnchors}`)},()=>{j.var(f.default.instancePath,(0,l._)`""`),j.var(f.default.parentData,(0,l._)`undefined`),j.var(f.default.parentDataProperty,(0,l._)`undefined`),j.var(f.default.rootData,f.default.data),$.dynamicRef&&j.var(f.default.dynamicAnchors,(0,l._)`{}`)})}function i(j){const{schema:$,opts:I,gen:O}=j;h(j,()=>{I.$comment&&$.$comment&&L(j),D(j),O.let(f.default.vErrors,null),O.let(f.default.errors,0),I.unevaluated&&p(j),N(j),J(j)})}function p(j){const{gen:$,validateName:I}=j;j.evaluated=$.const("evaluated",(0,l._)`${I}.evaluated`),$.if((0,l._)`${j.evaluated}.dynamicProps`,()=>$.assign((0,l._)`${j.evaluated}.props`,(0,l._)`undefined`)),$.if((0,l._)`${j.evaluated}.dynamicItems`,()=>$.assign((0,l._)`${j.evaluated}.items`,(0,l._)`undefined`))}function r(j,$){const I=typeof j=="object"&&j[$.schemaId];return I&&($.code.source||$.code.process)?(0,l._)`/*# sourceURL=${I} */`:l.nil}function s(j,$){if(o(j)&&(P(j),y(j))){c(j,$);return}(0,e.boolOrEmptySchema)(j,$)}function y({schema:j,self:$}){if(typeof j=="boolean")return!j;for(const I in j)if($.RULES.all[I])return!0;return!1}function o(j){return typeof j.schema!="boolean"}function c(j,$){const{schema:I,gen:O,opts:q}=j;q.$comment&&I.$comment&&L(j),F(j),G(j);const U=O.const("_errs",f.default.errors);N(j,U),O.var($,(0,l._)`${U} === ${f.default.errors}`)}function P(j){(0,b.checkUnknownRules)(j),A(j)}function N(j,$){if(j.opts.jtd)return ue(j,[],!1,$);const I=(0,t.getSchemaTypes)(j.schema),O=(0,t.coerceAndCheckDataType)(j,I);ue(j,I,!O,$)}function A(j){const{schema:$,errSchemaPath:I,opts:O,self:q}=j;$.$ref&&O.ignoreKeywordsWithRef&&(0,b.schemaHasRulesButRef)($,q.RULES)&&q.logger.warn(`$ref: keywords ignored in schema at path "${I}"`)}function D(j){const{schema:$,opts:I}=j;$.default!==void 0&&I.useDefaults&&I.strictSchema&&(0,b.checkStrictMode)(j,"default is ignored in the schema root")}function F(j){const $=j.schema[j.opts.schemaId];$&&(j.baseId=(0,x.resolveUrl)(j.opts.uriResolver,j.baseId,$))}function G(j){if(j.schema.$async&&!j.schemaEnv.$async)throw new Error("async schema in sync schema")}function L({gen:j,schemaEnv:$,schema:I,errSchemaPath:O,opts:q}){const U=I.$comment;if(q.$comment===!0)j.code((0,l._)`${f.default.self}.logger.log(${U})`);else if(typeof q.$comment=="function"){const te=(0,l.str)`${O}/$comment`,de=j.scopeValue("root",{ref:$.root});j.code((0,l._)`${f.default.self}.opts.$comment(${U}, ${te}, ${de}.schema)`)}}function J(j){const{gen:$,schemaEnv:I,validateName:O,ValidationError:q,opts:U}=j;I.$async?$.if((0,l._)`${f.default.errors} === 0`,()=>$.return(f.default.data),()=>$.throw((0,l._)`new ${q}(${f.default.vErrors})`)):($.assign((0,l._)`${O}.errors`,f.default.vErrors),U.unevaluated&&ee(j),$.return((0,l._)`${f.default.errors} === 0`))}function ee({gen:j,evaluated:$,props:I,items:O}){I instanceof l.Name&&j.assign((0,l._)`${$}.props`,I),O instanceof l.Name&&j.assign((0,l._)`${$}.items`,O)}function ue(j,$,I,O){const{gen:q,schema:U,data:te,allErrors:de,opts:ae,self:ie}=j,{RULES:re}=ie;if(U.$ref&&(ae.ignoreKeywordsWithRef||!(0,b.schemaHasRulesButRef)(U,re))){q.block(()=>B(j,"$ref",re.all.$ref.definition));return}ae.jtd||Z(j,$),q.block(()=>{for(const pe of re.rules)_e(pe);_e(re.post)});function _e(pe){(0,u.shouldUseGroup)(U,pe)&&(pe.type?(q.if((0,n.checkDataType)(pe.type,te,ae.strictNumbers)),ye(j,pe),$.length===1&&$[0]===pe.type&&I&&(q.else(),(0,n.reportTypeError)(j)),q.endIf()):ye(j,pe),de||q.if((0,l._)`${f.default.errors} === ${O||0}`))}}function ye(j,$){const{gen:I,schema:O,opts:{useDefaults:q}}=j;q&&(0,v.assignDefaults)(j,$.type),I.block(()=>{for(const U of $.rules)(0,u.shouldUseRule)(O,U)&&B(j,U.keyword,U.definition,$.type)})}function Z(j,$){j.schemaEnv.meta||!j.opts.strictTypes||(be(j,$),j.opts.allowUnionTypes||M(j,$),k(j,j.dataTypes))}function be(j,$){if($.length){if(!j.dataTypes.length){j.dataTypes=$;return}$.forEach(I=>{T(j.dataTypes,I)||_(j,`type "${I}" not allowed by context "${j.dataTypes.join(",")}"`)}),d(j,$)}}function M(j,$){$.length>1&&!($.length===2&&$.includes("null"))&&_(j,"use allowUnionTypes to allow union type keyword")}function k(j,$){const I=j.self.RULES.all;for(const O in I){const q=I[O];if(typeof q=="object"&&(0,u.shouldUseRule)(j.schema,q)){const{type:U}=q.definition;U.length&&!U.some(te=>R($,te))&&_(j,`missing type "${U.join(",")}" for keyword "${O}"`)}}}function R(j,$){return j.includes($)||$==="number"&&j.includes("integer")}function T(j,$){return j.includes($)||$==="integer"&&j.includes("number")}function d(j,$){const I=[];for(const O of j.dataTypes)T($,O)?I.push(O):$.includes("integer")&&O==="number"&&I.push("integer");j.dataTypes=I}function _(j,$){const I=j.schemaEnv.baseId+j.errSchemaPath;$+=` at "${I}" (strictTypes)`,(0,b.checkStrictMode)(j,$,j.opts.strictTypes)}class E{constructor($,I,O){if((0,a.validateKeywordUsage)($,I,O),this.gen=$.gen,this.allErrors=$.allErrors,this.keyword=O,this.data=$.data,this.schema=$.schema[O],this.$data=I.$data&&$.opts.$data&&this.schema&&this.schema.$data,this.schemaValue=(0,b.schemaRefOrVal)($,this.schema,O,this.$data),this.schemaType=I.schemaType,this.parentSchema=$.schema,this.params={},this.it=$,this.def=I,this.$data)this.schemaCode=$.gen.const("vSchema",W(this.$data,$));else if(this.schemaCode=this.schemaValue,!(0,a.validSchemaType)(this.schema,I.schemaType,I.allowUndefined))throw new Error(`${O} value must be ${JSON.stringify(I.schemaType)}`);("code"in I?I.trackErrors:I.errors!==!1)&&(this.errsCount=$.gen.const("_errs",f.default.errors))}result($,I,O){this.failResult((0,l.not)($),I,O)}failResult($,I,O){this.gen.if($),O?O():this.error(),I?(this.gen.else(),I(),this.allErrors&&this.gen.endIf()):this.allErrors?this.gen.endIf():this.gen.else()}pass($,I){this.failResult((0,l.not)($),void 0,I)}fail($){if($===void 0){this.error(),this.allErrors||this.gen.if(!1);return}this.gen.if($),this.error(),this.allErrors?this.gen.endIf():this.gen.else()}fail$data($){if(!this.$data)return this.fail($);const{schemaCode:I}=this;this.fail((0,l._)`${I} !== undefined && (${(0,l.or)(this.invalid$data(),$)})`)}error($,I,O){if(I){this.setParams(I),this._error($,O),this.setParams({});return}this._error($,O)}_error($,I){($?w.reportExtraError:w.reportError)(this,this.def.error,I)}$dataError(){(0,w.reportError)(this,this.def.$dataError||w.keyword$DataError)}reset(){if(this.errsCount===void 0)throw new Error('add "trackErrors" to keyword definition');(0,w.resetErrorsCount)(this.gen,this.errsCount)}ok($){this.allErrors||this.gen.if($)}setParams($,I){I?Object.assign(this.params,$):this.params=$}block$data($,I,O=l.nil){this.gen.block(()=>{this.check$data($,O),I()})}check$data($=l.nil,I=l.nil){if(!this.$data)return;const{gen:O,schemaCode:q,schemaType:U,def:te}=this;O.if((0,l.or)((0,l._)`${q} === undefined`,I)),$!==l.nil&&O.assign($,!0),(U.length||te.validateSchema)&&(O.elseIf(this.invalid$data()),this.$dataError(),$!==l.nil&&O.assign($,!1)),O.else()}invalid$data(){const{gen:$,schemaCode:I,schemaType:O,def:q,it:U}=this;return(0,l.or)(te(),de());function te(){if(O.length){if(!(I instanceof l.Name))throw new Error("ajv implementation error");const ae=Array.isArray(O)?O:[O];return(0,l._)`${(0,n.checkDataTypes)(ae,I,U.opts.strictNumbers,n.DataType.Wrong)}`}return l.nil}function de(){if(q.validateSchema){const ae=$.scopeValue("validate$data",{ref:q.validateSchema});return(0,l._)`!${ae}(${I})`}return l.nil}}subschema($,I){const O=(0,m.getSubschema)(this.it,$);(0,m.extendSubschemaData)(O,this.it,$),(0,m.extendSubschemaMode)(O,$);const q={...this.it,...O,items:void 0,props:void 0};return s(q,I),q}mergeEvaluated($,I){const{it:O,gen:q}=this;O.opts.unevaluated&&(O.props!==!0&&$.props!==void 0&&(O.props=b.mergeEvaluated.props(q,$.props,O.props,I)),O.items!==!0&&$.items!==void 0&&(O.items=b.mergeEvaluated.items(q,$.items,O.items,I)))}mergeValidEvaluated($,I){const{it:O,gen:q}=this;if(O.opts.unevaluated&&(O.props!==!0||O.items!==!0))return q.if(I,()=>this.mergeEvaluated($,l.Name)),!0}}fe.KeywordCxt=E;function B(j,$,I,O){const q=new E(j,I,$);"code"in I?I.code(q,O):q.$data&&I.validate?(0,a.funcKeywordCode)(q,I):"macro"in I?(0,a.macroKeywordCode)(q,I):(I.compile||I.validate)&&(0,a.funcKeywordCode)(q,I)}const z=/^\/(?:[^~]|~0|~1)*$/,X=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function W(j,{dataLevel:$,dataNames:I,dataPathArr:O}){let q,U;if(j==="")return f.default.rootData;if(j[0]==="/"){if(!z.test(j))throw new Error(`Invalid JSON-pointer: ${j}`);q=j,U=f.default.rootData}else{const ie=X.exec(j);if(!ie)throw new Error(`Invalid JSON-pointer: ${j}`);const re=+ie[1];if(q=ie[2],q==="#"){if(re>=$)throw new Error(ae("property/index",re));return O[$-re]}if(re>$)throw new Error(ae("data",re));if(U=I[$-re],!q)return U}let te=U;const de=q.split("/");for(const ie of de)ie&&(U=(0,l._)`${U}${(0,l.getProperty)((0,b.unescapeJsonPointer)(ie))}`,te=(0,l._)`${te} && ${U}`);return te;function ae(ie,re){return`Cannot access ${ie} ${re} levels up, current level is ${$}`}}return fe.getData=W,fe}var Ae={},ur;function zt(){if(ur)return Ae;ur=1,Object.defineProperty(Ae,"__esModule",{value:!0});class e extends Error{constructor(u){super("validation failed"),this.errors=u,this.ajv=this.validation=!0}}return Ae.default=e,Ae}var Me={},mr;function Ct(){if(mr)return Me;mr=1,Object.defineProperty(Me,"__esModule",{value:!0});const e=Pt();class t extends Error{constructor(n,v,a,m){super(m||`can't resolve reference ${a} from id ${v}`),this.missingRef=(0,e.resolveUrl)(n,v,a),this.missingSchema=(0,e.normalizeId)((0,e.getFullPath)(n,this.missingRef))}}return Me.default=t,Me}var se={},yr;function Lt(){if(yr)return se;yr=1,Object.defineProperty(se,"__esModule",{value:!0}),se.resolveSchema=se.getCompilingSchema=se.resolveRef=se.compileSchema=se.SchemaEnv=void 0;const e=K(),t=zt(),u=ve(),n=Pt(),v=Y(),a=xt();class m{constructor(p){var r;this.refs={},this.dynamicAnchors={};let s;typeof p.schema=="object"&&(s=p.schema),this.schema=p.schema,this.schemaId=p.schemaId,this.root=p.root||this,this.baseId=(r=p.baseId)!==null&&r!==void 0?r:(0,n.normalizeId)(s?.[p.schemaId||"$id"]),this.schemaPath=p.schemaPath,this.localRefs=p.localRefs,this.meta=p.meta,this.$async=s?.$async,this.refs={}}}se.SchemaEnv=m;function l(i){const p=b.call(this,i);if(p)return p;const r=(0,n.getFullPath)(this.opts.uriResolver,i.root.baseId),{es5:s,lines:y}=this.opts.code,{ownProperties:o}=this.opts,c=new e.CodeGen(this.scope,{es5:s,lines:y,ownProperties:o});let P;i.$async&&(P=c.scopeValue("Error",{ref:t.default,code:(0,e._)`require("ajv/dist/runtime/validation_error").default`}));const N=c.scopeName("validate");i.validateName=N;const A={gen:c,allErrors:this.opts.allErrors,data:u.default.data,parentData:u.default.parentData,parentDataProperty:u.default.parentDataProperty,dataNames:[u.default.data],dataPathArr:[e.nil],dataLevel:0,dataTypes:[],definedProperties:new Set,topSchemaRef:c.scopeValue("schema",this.opts.code.source===!0?{ref:i.schema,code:(0,e.stringify)(i.schema)}:{ref:i.schema}),validateName:N,ValidationError:P,schema:i.schema,schemaEnv:i,rootId:r,baseId:i.baseId||r,schemaPath:e.nil,errSchemaPath:i.schemaPath||(this.opts.jtd?"":"#"),errorPath:(0,e._)`""`,opts:this.opts,self:this};let D;try{this._compilations.add(i),(0,a.validateFunctionCode)(A),c.optimize(this.opts.code.optimize);const F=c.toString();D=`${c.scopeRefs(u.default.scope)}return ${F}`,this.opts.code.process&&(D=this.opts.code.process(D,i));const L=new Function(`${u.default.self}`,`${u.default.scope}`,D)(this,this.scope.get());if(this.scope.value(N,{ref:L}),L.errors=null,L.schema=i.schema,L.schemaEnv=i,i.$async&&(L.$async=!0),this.opts.code.source===!0&&(L.source={validateName:N,validateCode:F,scopeValues:c._values}),this.opts.unevaluated){const{props:J,items:ee}=A;L.evaluated={props:J instanceof e.Name?void 0:J,items:ee instanceof e.Name?void 0:ee,dynamicProps:J instanceof e.Name,dynamicItems:ee instanceof e.Name},L.source&&(L.source.evaluated=(0,e.stringify)(L.evaluated))}return i.validate=L,i}catch(F){throw delete i.validate,delete i.validateName,D&&this.logger.error("Error compiling schema, function code:",D),F}finally{this._compilations.delete(i)}}se.compileSchema=l;function f(i,p,r){var s;r=(0,n.resolveUrl)(this.opts.uriResolver,p,r);const y=i.refs[r];if(y)return y;let o=S.call(this,i,r);if(o===void 0){const c=(s=i.localRefs)===null||s===void 0?void 0:s[r],{schemaId:P}=this.opts;c&&(o=new m({schema:c,schemaId:P,root:i,baseId:p}))}if(o!==void 0)return i.refs[r]=x.call(this,o)}se.resolveRef=f;function x(i){return(0,n.inlineRef)(i.schema,this.opts.inlineRefs)?i.schema:i.validate?i:l.call(this,i)}function b(i){for(const p of this._compilations)if(w(p,i))return p}se.getCompilingSchema=b;function w(i,p){return i.schema===p.schema&&i.root===p.root&&i.baseId===p.baseId}function S(i,p){let r;for(;typeof(r=this.refs[p])=="string";)p=r;return r||this.schemas[p]||h.call(this,i,p)}function h(i,p){const r=this.opts.uriResolver.parse(p),s=(0,n._getFullPath)(this.opts.uriResolver,r);let y=(0,n.getFullPath)(this.opts.uriResolver,i.baseId,void 0);if(Object.keys(i.schema).length>0&&s===y)return C.call(this,r,i);const o=(0,n.normalizeId)(s),c=this.refs[o]||this.schemas[o];if(typeof c=="string"){const P=h.call(this,i,c);return typeof P?.schema!="object"?void 0:C.call(this,r,P)}if(typeof c?.schema=="object"){if(c.validate||l.call(this,c),o===(0,n.normalizeId)(p)){const{schema:P}=c,{schemaId:N}=this.opts,A=P[N];return A&&(y=(0,n.resolveUrl)(this.opts.uriResolver,y,A)),new m({schema:P,schemaId:N,root:i,baseId:y})}return C.call(this,r,c)}}se.resolveSchema=h;const g=new Set(["properties","patternProperties","enum","dependencies","definitions"]);function C(i,{baseId:p,schema:r,root:s}){var y;if(((y=i.fragment)===null||y===void 0?void 0:y[0])!=="/")return;for(const P of i.fragment.slice(1).split("/")){if(typeof r=="boolean")return;const N=r[(0,v.unescapeFragment)(P)];if(N===void 0)return;r=N;const A=typeof r=="object"&&r[this.opts.schemaId];!g.has(P)&&A&&(p=(0,n.resolveUrl)(this.opts.uriResolver,p,A))}let o;if(typeof r!="boolean"&&r.$ref&&!(0,v.schemaHasRulesButRef)(r,this.RULES)){const P=(0,n.resolveUrl)(this.opts.uriResolver,p,r.$ref);o=h.call(this,s,P)}const{schemaId:c}=this.opts;if(o=o||new m({schema:r,schemaId:c,root:s,baseId:p}),o.schema!==o.root.schema)return o}return se}const Ro="https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",Ao="Meta-schema for $data reference (JSON AnySchema extension proposal)",Mo="object",Oo=["$data"],Do={$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},Fo=!1,Bo={$id:Ro,description:Ao,type:Mo,required:Oo,properties:Do,additionalProperties:Fo};var Oe={},Ne={exports:{}},Mt,fr;function uo(){if(fr)return Mt;fr=1;const e=RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu),t=RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u);function u(S){let h="",g=0,C=0;for(C=0;C<S.length;C++)if(g=S[C].charCodeAt(0),g!==48){if(!(g>=48&&g<=57||g>=65&&g<=70||g>=97&&g<=102))return"";h+=S[C];break}for(C+=1;C<S.length;C++){if(g=S[C].charCodeAt(0),!(g>=48&&g<=57||g>=65&&g<=70||g>=97&&g<=102))return"";h+=S[C]}return h}const n=RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u);function v(S){return S.length=0,!0}function a(S,h,g){if(S.length){const C=u(S);if(C!=="")h.push(C);else return g.error=!0,!1;S.length=0}return!0}function m(S){let h=0;const g={error:!1,address:"",zone:""},C=[],i=[];let p=!1,r=!1,s=a;for(let y=0;y<S.length;y++){const o=S[y];if(!(o==="["||o==="]"))if(o===":"){if(p===!0&&(r=!0),!s(i,C,g))break;if(++h>7){g.error=!0;break}y>0&&S[y-1]===":"&&(p=!0),C.push(":");continue}else if(o==="%"){if(!s(i,C,g))break;s=v}else{i.push(o);continue}}return i.length&&(s===v?g.zone=i.join(""):r?C.push(i.join("")):C.push(u(i))),g.address=C.join(""),g}function l(S){if(f(S,":")<2)return{host:S,isIPV6:!1};const h=m(S);if(h.error)return{host:S,isIPV6:!1};{let g=h.address,C=h.address;return h.zone&&(g+="%"+h.zone,C+="%25"+h.zone),{host:g,isIPV6:!0,escapedHost:C}}}function f(S,h){let g=0;for(let C=0;C<S.length;C++)S[C]===h&&g++;return g}function x(S){let h=S;const g=[];let C=-1,i=0;for(;i=h.length;){if(i===1){if(h===".")break;if(h==="/"){g.push("/");break}else{g.push(h);break}}else if(i===2){if(h[0]==="."){if(h[1]===".")break;if(h[1]==="/"){h=h.slice(2);continue}}else if(h[0]==="/"&&(h[1]==="."||h[1]==="/")){g.push("/");break}}else if(i===3&&h==="/.."){g.length!==0&&g.pop(),g.push("/");break}if(h[0]==="."){if(h[1]==="."){if(h[2]==="/"){h=h.slice(3);continue}}else if(h[1]==="/"){h=h.slice(2);continue}}else if(h[0]==="/"&&h[1]==="."){if(h[2]==="/"){h=h.slice(2);continue}else if(h[2]==="."&&h[3]==="/"){h=h.slice(3),g.length!==0&&g.pop();continue}}if((C=h.indexOf("/",1))===-1){g.push(h);break}else g.push(h.slice(0,C)),h=h.slice(C)}return g.join("")}function b(S,h){const g=h!==!0?escape:unescape;return S.scheme!==void 0&&(S.scheme=g(S.scheme)),S.userinfo!==void 0&&(S.userinfo=g(S.userinfo)),S.host!==void 0&&(S.host=g(S.host)),S.path!==void 0&&(S.path=g(S.path)),S.query!==void 0&&(S.query=g(S.query)),S.fragment!==void 0&&(S.fragment=g(S.fragment)),S}function w(S){const h=[];if(S.userinfo!==void 0&&(h.push(S.userinfo),h.push("@")),S.host!==void 0){let g=unescape(S.host);if(!t(g)){const C=l(g);C.isIPV6===!0?g=`[${C.escapedHost}]`:g=S.host}h.push(g)}return(typeof S.port=="number"||typeof S.port=="string")&&(h.push(":"),h.push(String(S.port))),h.length?h.join(""):void 0}return Mt={nonSimpleDomain:n,recomposeAuthority:w,normalizeComponentEncoding:b,removeDotSegments:x,isIPv4:t,isUUID:e,normalizeIPv6:l,stringArrayToHexStripped:u},Mt}var Ot,gr;function qo(){if(gr)return Ot;gr=1;const{isUUID:e}=uo(),t=/([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-.:;=@]|%[\da-f]{2})+)/iu,u=["http","https","ws","wss","urn","urn:uuid"];function n(o){return u.indexOf(o)!==-1}function v(o){return o.secure===!0?!0:o.secure===!1?!1:o.scheme?o.scheme.length===3&&(o.scheme[0]==="w"||o.scheme[0]==="W")&&(o.scheme[1]==="s"||o.scheme[1]==="S")&&(o.scheme[2]==="s"||o.scheme[2]==="S"):!1}function a(o){return o.host||(o.error=o.error||"HTTP URIs must have a host."),o}function m(o){const c=String(o.scheme).toLowerCase()==="https";return(o.port===(c?443:80)||o.port==="")&&(o.port=void 0),o.path||(o.path="/"),o}function l(o){return o.secure=v(o),o.resourceName=(o.path||"/")+(o.query?"?"+o.query:""),o.path=void 0,o.query=void 0,o}function f(o){if((o.port===(v(o)?443:80)||o.port==="")&&(o.port=void 0),typeof o.secure=="boolean"&&(o.scheme=o.secure?"wss":"ws",o.secure=void 0),o.resourceName){const[c,P]=o.resourceName.split("?");o.path=c&&c!=="/"?c:void 0,o.query=P,o.resourceName=void 0}return o.fragment=void 0,o}function x(o,c){if(!o.path)return o.error="URN can not be parsed",o;const P=o.path.match(t);if(P){const N=c.scheme||o.scheme||"urn";o.nid=P[1].toLowerCase(),o.nss=P[2];const A=`${N}:${c.nid||o.nid}`,D=y(A);o.path=void 0,D&&(o=D.parse(o,c))}else o.error=o.error||"URN can not be parsed.";return o}function b(o,c){if(o.nid===void 0)throw new Error("URN without nid cannot be serialized");const P=c.scheme||o.scheme||"urn",N=o.nid.toLowerCase(),A=`${P}:${c.nid||N}`,D=y(A);D&&(o=D.serialize(o,c));const F=o,G=o.nss;return F.path=`${N||c.nid}:${G}`,c.skipEscape=!0,F}function w(o,c){const P=o;return P.uuid=P.nss,P.nss=void 0,!c.tolerant&&(!P.uuid||!e(P.uuid))&&(P.error=P.error||"UUID is not valid."),P}function S(o){const c=o;return c.nss=(o.uuid||"").toLowerCase(),c}const h={scheme:"http",domainHost:!0,parse:a,serialize:m},g={scheme:"https",domainHost:h.domainHost,parse:a,serialize:m},C={scheme:"ws",domainHost:!0,parse:l,serialize:f},i={scheme:"wss",domainHost:C.domainHost,parse:C.parse,serialize:C.serialize},s={http:h,https:g,ws:C,wss:i,urn:{scheme:"urn",parse:x,serialize:b,skipNormalize:!0},"urn:uuid":{scheme:"urn:uuid",parse:w,serialize:S,skipNormalize:!0}};Object.setPrototypeOf(s,null);function y(o){return o&&(s[o]||s[o.toLowerCase()])||void 0}return Ot={wsIsSecure:v,SCHEMES:s,isValidSchemeName:n,getSchemeHandler:y},Ot}var hr;function zo(){if(hr)return Ne.exports;hr=1;const{normalizeIPv6:e,removeDotSegments:t,recomposeAuthority:u,normalizeComponentEncoding:n,isIPv4:v,nonSimpleDomain:a}=uo(),{SCHEMES:m,getSchemeHandler:l}=qo();function f(i,p){return typeof i=="string"?i=S(g(i,p),p):typeof i=="object"&&(i=g(S(i,p),p)),i}function x(i,p,r){const s=r?Object.assign({scheme:"null"},r):{scheme:"null"},y=b(g(i,s),g(p,s),s,!0);return s.skipEscape=!0,S(y,s)}function b(i,p,r,s){const y={};return s||(i=g(S(i,r),r),p=g(S(p,r),r)),r=r||{},!r.tolerant&&p.scheme?(y.scheme=p.scheme,y.userinfo=p.userinfo,y.host=p.host,y.port=p.port,y.path=t(p.path||""),y.query=p.query):(p.userinfo!==void 0||p.host!==void 0||p.port!==void 0?(y.userinfo=p.userinfo,y.host=p.host,y.port=p.port,y.path=t(p.path||""),y.query=p.query):(p.path?(p.path[0]==="/"?y.path=t(p.path):((i.userinfo!==void 0||i.host!==void 0||i.port!==void 0)&&!i.path?y.path="/"+p.path:i.path?y.path=i.path.slice(0,i.path.lastIndexOf("/")+1)+p.path:y.path=p.path,y.path=t(y.path)),y.query=p.query):(y.path=i.path,p.query!==void 0?y.query=p.query:y.query=i.query),y.userinfo=i.userinfo,y.host=i.host,y.port=i.port),y.scheme=i.scheme),y.fragment=p.fragment,y}function w(i,p,r){return typeof i=="string"?(i=unescape(i),i=S(n(g(i,r),!0),{...r,skipEscape:!0})):typeof i=="object"&&(i=S(n(i,!0),{...r,skipEscape:!0})),typeof p=="string"?(p=unescape(p),p=S(n(g(p,r),!0),{...r,skipEscape:!0})):typeof p=="object"&&(p=S(n(p,!0),{...r,skipEscape:!0})),i.toLowerCase()===p.toLowerCase()}function S(i,p){const r={host:i.host,scheme:i.scheme,userinfo:i.userinfo,port:i.port,path:i.path,query:i.query,nid:i.nid,nss:i.nss,uuid:i.uuid,fragment:i.fragment,reference:i.reference,resourceName:i.resourceName,secure:i.secure,error:""},s=Object.assign({},p),y=[],o=l(s.scheme||r.scheme);o&&o.serialize&&o.serialize(r,s),r.path!==void 0&&(s.skipEscape?r.path=unescape(r.path):(r.path=escape(r.path),r.scheme!==void 0&&(r.path=r.path.split("%3A").join(":")))),s.reference!=="suffix"&&r.scheme&&y.push(r.scheme,":");const c=u(r);if(c!==void 0&&(s.reference!=="suffix"&&y.push("//"),y.push(c),r.path&&r.path[0]!=="/"&&y.push("/")),r.path!==void 0){let P=r.path;!s.absolutePath&&(!o||!o.absolutePath)&&(P=t(P)),c===void 0&&P[0]==="/"&&P[1]==="/"&&(P="/%2F"+P.slice(2)),y.push(P)}return r.query!==void 0&&y.push("?",r.query),r.fragment!==void 0&&y.push("#",r.fragment),y.join("")}const h=/^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u;function g(i,p){const r=Object.assign({},p),s={scheme:void 0,userinfo:void 0,host:"",port:void 0,path:"",query:void 0,fragment:void 0};let y=!1;r.reference==="suffix"&&(r.scheme?i=r.scheme+":"+i:i="//"+i);const o=i.match(h);if(o){if(s.scheme=o[1],s.userinfo=o[3],s.host=o[4],s.port=parseInt(o[5],10),s.path=o[6]||"",s.query=o[7],s.fragment=o[8],isNaN(s.port)&&(s.port=o[5]),s.host)if(v(s.host)===!1){const N=e(s.host);s.host=N.host.toLowerCase(),y=N.isIPV6}else y=!0;s.scheme===void 0&&s.userinfo===void 0&&s.host===void 0&&s.port===void 0&&s.query===void 0&&!s.path?s.reference="same-document":s.scheme===void 0?s.reference="relative":s.fragment===void 0?s.reference="absolute":s.reference="uri",r.reference&&r.reference!=="suffix"&&r.reference!==s.reference&&(s.error=s.error||"URI is not a "+r.reference+" reference.");const c=l(r.scheme||s.scheme);if(!r.unicodeSupport&&(!c||!c.unicodeSupport)&&s.host&&(r.domainHost||c&&c.domainHost)&&y===!1&&a(s.host))try{s.host=URL.domainToASCII(s.host.toLowerCase())}catch(P){s.error=s.error||"Host's domain name can not be converted to ASCII: "+P}(!c||c&&!c.skipNormalize)&&(i.indexOf("%")!==-1&&(s.scheme!==void 0&&(s.scheme=unescape(s.scheme)),s.host!==void 0&&(s.host=unescape(s.host))),s.path&&(s.path=escape(unescape(s.path))),s.fragment&&(s.fragment=encodeURI(decodeURIComponent(s.fragment)))),c&&c.parse&&c.parse(s,r)}else s.error=s.error||"URI can not be parsed.";return s}const C={SCHEMES:m,normalize:f,resolve:x,resolveComponent:b,equal:w,serialize:S,parse:g};return Ne.exports=C,Ne.exports.default=C,Ne.exports.fastUri=C,Ne.exports}var br;function Lo(){if(br)return Oe;br=1,Object.defineProperty(Oe,"__esModule",{value:!0});const e=zo();return e.code='require("ajv/dist/runtime/uri").default',Oe.default=e,Oe}var Sr;function Go(){return Sr||(Sr=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.CodeGen=e.Name=e.nil=e.stringify=e.str=e._=e.KeywordCxt=void 0;var t=xt();Object.defineProperty(e,"KeywordCxt",{enumerable:!0,get:function(){return t.KeywordCxt}});var u=K();Object.defineProperty(e,"_",{enumerable:!0,get:function(){return u._}}),Object.defineProperty(e,"str",{enumerable:!0,get:function(){return u.str}}),Object.defineProperty(e,"stringify",{enumerable:!0,get:function(){return u.stringify}}),Object.defineProperty(e,"nil",{enumerable:!0,get:function(){return u.nil}}),Object.defineProperty(e,"Name",{enumerable:!0,get:function(){return u.Name}}),Object.defineProperty(e,"CodeGen",{enumerable:!0,get:function(){return u.CodeGen}});const n=zt(),v=Ct(),a=po(),m=Lt(),l=K(),f=Pt(),x=St(),b=Y(),w=Bo,S=Lo(),h=(M,k)=>new RegExp(M,k);h.code="new RegExp";const g=["removeAdditional","useDefaults","coerceTypes"],C=new Set(["validate","serialize","parse","wrapper","root","schema","keyword","pattern","formats","validate$data","func","obj","Error"]),i={errorDataPath:"",format:"`validateFormats: false` can be used instead.",nullable:'"nullable" keyword is supported by default.',jsonPointers:"Deprecated jsPropertySyntax can be used instead.",extendRefs:"Deprecated ignoreKeywordsWithRef can be used instead.",missingRefs:"Pass empty schema with $id that should be ignored to ajv.addSchema.",processCode:"Use option `code: {process: (code, schemaEnv: object) => string}`",sourceCode:"Use option `code: {source: true}`",strictDefaults:"It is default now, see option `strict`.",strictKeywords:"It is default now, see option `strict`.",uniqueItems:'"uniqueItems" keyword is always validated.',unknownFormats:"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).",cache:"Map is used as cache, schema object as key.",serialize:"Map is used as cache, schema object as key.",ajvErrors:"It is default now."},p={ignoreKeywordsWithRef:"",jsPropertySyntax:"",unicode:'"minLength"/"maxLength" account for unicode characters by default.'},r=200;function s(M){var k,R,T,d,_,E,B,z,X,W,j,$,I,O,q,U,te,de,ae,ie,re,_e,pe,_t,wt;const $e=M.strict,jt=(k=M.code)===null||k===void 0?void 0:k.optimize,Ut=jt===!0||jt===void 0?1:jt||0,Kt=(T=(R=M.code)===null||R===void 0?void 0:R.regExp)!==null&&T!==void 0?T:h,jo=(d=M.uriResolver)!==null&&d!==void 0?d:S.default;return{strictSchema:(E=(_=M.strictSchema)!==null&&_!==void 0?_:$e)!==null&&E!==void 0?E:!0,strictNumbers:(z=(B=M.strictNumbers)!==null&&B!==void 0?B:$e)!==null&&z!==void 0?z:!0,strictTypes:(W=(X=M.strictTypes)!==null&&X!==void 0?X:$e)!==null&&W!==void 0?W:"log",strictTuples:($=(j=M.strictTuples)!==null&&j!==void 0?j:$e)!==null&&$!==void 0?$:"log",strictRequired:(O=(I=M.strictRequired)!==null&&I!==void 0?I:$e)!==null&&O!==void 0?O:!1,code:M.code?{...M.code,optimize:Ut,regExp:Kt}:{optimize:Ut,regExp:Kt},loopRequired:(q=M.loopRequired)!==null&&q!==void 0?q:r,loopEnum:(U=M.loopEnum)!==null&&U!==void 0?U:r,meta:(te=M.meta)!==null&&te!==void 0?te:!0,messages:(de=M.messages)!==null&&de!==void 0?de:!0,inlineRefs:(ae=M.inlineRefs)!==null&&ae!==void 0?ae:!0,schemaId:(ie=M.schemaId)!==null&&ie!==void 0?ie:"$id",addUsedSchema:(re=M.addUsedSchema)!==null&&re!==void 0?re:!0,validateSchema:(_e=M.validateSchema)!==null&&_e!==void 0?_e:!0,validateFormats:(pe=M.validateFormats)!==null&&pe!==void 0?pe:!0,unicodeRegExp:(_t=M.unicodeRegExp)!==null&&_t!==void 0?_t:!0,int32range:(wt=M.int32range)!==null&&wt!==void 0?wt:!0,uriResolver:jo}}class y{constructor(k={}){this.schemas={},this.refs={},this.formats={},this._compilations=new Set,this._loading={},this._cache=new Map,k=this.opts={...k,...s(k)};const{es5:R,lines:T}=this.opts.code;this.scope=new l.ValueScope({scope:{},prefixes:C,es5:R,lines:T}),this.logger=G(k.logger);const d=k.validateFormats;k.validateFormats=!1,this.RULES=(0,a.getRules)(),o.call(this,i,k,"NOT SUPPORTED"),o.call(this,p,k,"DEPRECATED","warn"),this._metaOpts=D.call(this),k.formats&&N.call(this),this._addVocabularies(),this._addDefaultMetaSchema(),k.keywords&&A.call(this,k.keywords),typeof k.meta=="object"&&this.addMetaSchema(k.meta),P.call(this),k.validateFormats=d}_addVocabularies(){this.addKeyword("$async")}_addDefaultMetaSchema(){const{$data:k,meta:R,schemaId:T}=this.opts;let d=w;T==="id"&&(d={...w},d.id=d.$id,delete d.$id),R&&k&&this.addMetaSchema(d,d[T],!1)}defaultMeta(){const{meta:k,schemaId:R}=this.opts;return this.opts.defaultMeta=typeof k=="object"?k[R]||k:void 0}validate(k,R){let T;if(typeof k=="string"){if(T=this.getSchema(k),!T)throw new Error(`no schema with key or ref "${k}"`)}else T=this.compile(k);const d=T(R);return"$async"in T||(this.errors=T.errors),d}compile(k,R){const T=this._addSchema(k,R);return T.validate||this._compileSchemaEnv(T)}compileAsync(k,R){if(typeof this.opts.loadSchema!="function")throw new Error("options.loadSchema should be a function");const{loadSchema:T}=this.opts;return d.call(this,k,R);async function d(W,j){await _.call(this,W.$schema);const $=this._addSchema(W,j);return $.validate||E.call(this,$)}async function _(W){W&&!this.getSchema(W)&&await d.call(this,{$ref:W},!0)}async function E(W){try{return this._compileSchemaEnv(W)}catch(j){if(!(j instanceof v.default))throw j;return B.call(this,j),await z.call(this,j.missingSchema),E.call(this,W)}}function B({missingSchema:W,missingRef:j}){if(this.refs[W])throw new Error(`AnySchema ${W} is loaded but ${j} cannot be resolved`)}async function z(W){const j=await X.call(this,W);this.refs[W]||await _.call(this,j.$schema),this.refs[W]||this.addSchema(j,W,R)}async function X(W){const j=this._loading[W];if(j)return j;try{return await(this._loading[W]=T(W))}finally{delete this._loading[W]}}}addSchema(k,R,T,d=this.opts.validateSchema){if(Array.isArray(k)){for(const E of k)this.addSchema(E,void 0,T,d);return this}let _;if(typeof k=="object"){const{schemaId:E}=this.opts;if(_=k[E],_!==void 0&&typeof _!="string")throw new Error(`schema ${E} must be string`)}return R=(0,f.normalizeId)(R||_),this._checkUnique(R),this.schemas[R]=this._addSchema(k,T,R,d,!0),this}addMetaSchema(k,R,T=this.opts.validateSchema){return this.addSchema(k,R,!0,T),this}validateSchema(k,R){if(typeof k=="boolean")return!0;let T;if(T=k.$schema,T!==void 0&&typeof T!="string")throw new Error("$schema must be a string");if(T=T||this.opts.defaultMeta||this.defaultMeta(),!T)return this.logger.warn("meta-schema not available"),this.errors=null,!0;const d=this.validate(T,k);if(!d&&R){const _="schema is invalid: "+this.errorsText();if(this.opts.validateSchema==="log")this.logger.error(_);else throw new Error(_)}return d}getSchema(k){let R;for(;typeof(R=c.call(this,k))=="string";)k=R;if(R===void 0){const{schemaId:T}=this.opts,d=new m.SchemaEnv({schema:{},schemaId:T});if(R=m.resolveSchema.call(this,d,k),!R)return;this.refs[k]=R}return R.validate||this._compileSchemaEnv(R)}removeSchema(k){if(k instanceof RegExp)return this._removeAllSchemas(this.schemas,k),this._removeAllSchemas(this.refs,k),this;switch(typeof k){case"undefined":return this._removeAllSchemas(this.schemas),this._removeAllSchemas(this.refs),this._cache.clear(),this;case"string":{const R=c.call(this,k);return typeof R=="object"&&this._cache.delete(R.schema),delete this.schemas[k],delete this.refs[k],this}case"object":{const R=k;this._cache.delete(R);let T=k[this.opts.schemaId];return T&&(T=(0,f.normalizeId)(T),delete this.schemas[T],delete this.refs[T]),this}default:throw new Error("ajv.removeSchema: invalid parameter")}}addVocabulary(k){for(const R of k)this.addKeyword(R);return this}addKeyword(k,R){let T;if(typeof k=="string")T=k,typeof R=="object"&&(this.logger.warn("these parameters are deprecated, see docs for addKeyword"),R.keyword=T);else if(typeof k=="object"&&R===void 0){if(R=k,T=R.keyword,Array.isArray(T)&&!T.length)throw new Error("addKeywords: keyword must be string or non-empty array")}else throw new Error("invalid addKeywords parameters");if(J.call(this,T,R),!R)return(0,b.eachItem)(T,_=>ee.call(this,_)),this;ye.call(this,R);const d={...R,type:(0,x.getJSONTypes)(R.type),schemaType:(0,x.getJSONTypes)(R.schemaType)};return(0,b.eachItem)(T,d.type.length===0?_=>ee.call(this,_,d):_=>d.type.forEach(E=>ee.call(this,_,d,E))),this}getKeyword(k){const R=this.RULES.all[k];return typeof R=="object"?R.definition:!!R}removeKeyword(k){const{RULES:R}=this;delete R.keywords[k],delete R.all[k];for(const T of R.rules){const d=T.rules.findIndex(_=>_.keyword===k);d>=0&&T.rules.splice(d,1)}return this}addFormat(k,R){return typeof R=="string"&&(R=new RegExp(R)),this.formats[k]=R,this}errorsText(k=this.errors,{separator:R=", ",dataVar:T="data"}={}){return!k||k.length===0?"No errors":k.map(d=>`${T}${d.instancePath} ${d.message}`).reduce((d,_)=>d+R+_)}$dataMetaSchema(k,R){const T=this.RULES.all;k=JSON.parse(JSON.stringify(k));for(const d of R){const _=d.split("/").slice(1);let E=k;for(const B of _)E=E[B];for(const B in T){const z=T[B];if(typeof z!="object")continue;const{$data:X}=z.definition,W=E[B];X&&W&&(E[B]=be(W))}}return k}_removeAllSchemas(k,R){for(const T in k){const d=k[T];(!R||R.test(T))&&(typeof d=="string"?delete k[T]:d&&!d.meta&&(this._cache.delete(d.schema),delete k[T]))}}_addSchema(k,R,T,d=this.opts.validateSchema,_=this.opts.addUsedSchema){let E;const{schemaId:B}=this.opts;if(typeof k=="object")E=k[B];else{if(this.opts.jtd)throw new Error("schema must be object");if(typeof k!="boolean")throw new Error("schema must be object or boolean")}let z=this._cache.get(k);if(z!==void 0)return z;T=(0,f.normalizeId)(E||T);const X=f.getSchemaRefs.call(this,k,T);return z=new m.SchemaEnv({schema:k,schemaId:B,meta:R,baseId:T,localRefs:X}),this._cache.set(z.schema,z),_&&!T.startsWith("#")&&(T&&this._checkUnique(T),this.refs[T]=z),d&&this.validateSchema(k,!0),z}_checkUnique(k){if(this.schemas[k]||this.refs[k])throw new Error(`schema with key or id "${k}" already exists`)}_compileSchemaEnv(k){if(k.meta?this._compileMetaSchema(k):m.compileSchema.call(this,k),!k.validate)throw new Error("ajv implementation error");return k.validate}_compileMetaSchema(k){const R=this.opts;this.opts=this._metaOpts;try{m.compileSchema.call(this,k)}finally{this.opts=R}}}y.ValidationError=n.default,y.MissingRefError=v.default,e.default=y;function o(M,k,R,T="error"){for(const d in M){const _=d;_ in k&&this.logger[T](`${R}: option ${d}. ${M[_]}`)}}function c(M){return M=(0,f.normalizeId)(M),this.schemas[M]||this.refs[M]}function P(){const M=this.opts.schemas;if(M)if(Array.isArray(M))this.addSchema(M);else for(const k in M)this.addSchema(M[k],k)}function N(){for(const M in this.opts.formats){const k=this.opts.formats[M];k&&this.addFormat(M,k)}}function A(M){if(Array.isArray(M)){this.addVocabulary(M);return}this.logger.warn("keywords option as map is deprecated, pass array");for(const k in M){const R=M[k];R.keyword||(R.keyword=k),this.addKeyword(R)}}function D(){const M={...this.opts};for(const k of g)delete M[k];return M}const F={log(){},warn(){},error(){}};function G(M){if(M===!1)return F;if(M===void 0)return console;if(M.log&&M.warn&&M.error)return M;throw new Error("logger must implement log, warn and error methods")}const L=/^[a-z_$][a-z0-9_$:-]*$/i;function J(M,k){const{RULES:R}=this;if((0,b.eachItem)(M,T=>{if(R.keywords[T])throw new Error(`Keyword ${T} is already defined`);if(!L.test(T))throw new Error(`Keyword ${T} has invalid name`)}),!!k&&k.$data&&!("code"in k||"validate"in k))throw new Error('$data keyword must have "code" or "validate" function')}function ee(M,k,R){var T;const d=k?.post;if(R&&d)throw new Error('keyword with "post" flag cannot have "type"');const{RULES:_}=this;let E=d?_.post:_.rules.find(({type:z})=>z===R);if(E||(E={type:R,rules:[]},_.rules.push(E)),_.keywords[M]=!0,!k)return;const B={keyword:M,definition:{...k,type:(0,x.getJSONTypes)(k.type),schemaType:(0,x.getJSONTypes)(k.schemaType)}};k.before?ue.call(this,E,B,k.before):E.rules.push(B),_.all[M]=B,(T=k.implements)===null||T===void 0||T.forEach(z=>this.addKeyword(z))}function ue(M,k,R){const T=M.rules.findIndex(d=>d.keyword===R);T>=0?M.rules.splice(T,0,k):(M.rules.push(k),this.logger.warn(`rule ${R} is not defined`))}function ye(M){let{metaSchema:k}=M;k!==void 0&&(M.$data&&this.opts.$data&&(k=be(k)),M.validateSchema=this.compile(k,!0))}const Z={$ref:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#"};function be(M){return{anyOf:[M,Z]}}})($t)),$t}var De={},Fe={},Be={},vr;function Vo(){if(vr)return Be;vr=1,Object.defineProperty(Be,"__esModule",{value:!0});const e={keyword:"id",code(){throw new Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID')}};return Be.default=e,Be}var Se={},Pr;function Uo(){if(Pr)return Se;Pr=1,Object.defineProperty(Se,"__esModule",{value:!0}),Se.callRef=Se.getValidate=void 0;const e=Ct(),t=ce(),u=K(),n=ve(),v=Lt(),a=Y(),m={keyword:"$ref",schemaType:"string",code(x){const{gen:b,schema:w,it:S}=x,{baseId:h,schemaEnv:g,validateName:C,opts:i,self:p}=S,{root:r}=g;if((w==="#"||w==="#/")&&h===r.baseId)return y();const s=v.resolveRef.call(p,r,h,w);if(s===void 0)throw new e.default(S.opts.uriResolver,h,w);if(s instanceof v.SchemaEnv)return o(s);return c(s);function y(){if(g===r)return f(x,C,g,g.$async);const P=b.scopeValue("root",{ref:r});return f(x,(0,u._)`${P}.validate`,r,r.$async)}function o(P){const N=l(x,P);f(x,N,P,P.$async)}function c(P){const N=b.scopeValue("schema",i.code.source===!0?{ref:P,code:(0,u.stringify)(P)}:{ref:P}),A=b.name("valid"),D=x.subschema({schema:P,dataTypes:[],schemaPath:u.nil,topSchemaRef:N,errSchemaPath:w},A);x.mergeEvaluated(D),x.ok(A)}}};function l(x,b){const{gen:w}=x;return b.validate?w.scopeValue("validate",{ref:b.validate}):(0,u._)`${w.scopeValue("wrapper",{ref:b})}.validate`}Se.getValidate=l;function f(x,b,w,S){const{gen:h,it:g}=x,{allErrors:C,schemaEnv:i,opts:p}=g,r=p.passContext?n.default.this:u.nil;S?s():y();function s(){if(!i.$async)throw new Error("async schema referenced by sync schema");const P=h.let("valid");h.try(()=>{h.code((0,u._)`await ${(0,t.callValidateCode)(x,b,r)}`),c(b),C||h.assign(P,!0)},N=>{h.if((0,u._)`!(${N} instanceof ${g.ValidationError})`,()=>h.throw(N)),o(N),C||h.assign(P,!1)}),x.ok(P)}function y(){x.result((0,t.callValidateCode)(x,b,r),()=>c(b),()=>o(b))}function o(P){const N=(0,u._)`${P}.errors`;h.assign(n.default.vErrors,(0,u._)`${n.default.vErrors} === null ? ${N} : ${n.default.vErrors}.concat(${N})`),h.assign(n.default.errors,(0,u._)`${n.default.vErrors}.length`)}function c(P){var N;if(!g.opts.unevaluated)return;const A=(N=w?.validate)===null||N===void 0?void 0:N.evaluated;if(g.props!==!0)if(A&&!A.dynamicProps)A.props!==void 0&&(g.props=a.mergeEvaluated.props(h,A.props,g.props));else{const D=h.var("props",(0,u._)`${P}.evaluated.props`);g.props=a.mergeEvaluated.props(h,D,g.props,u.Name)}if(g.items!==!0)if(A&&!A.dynamicItems)A.items!==void 0&&(g.items=a.mergeEvaluated.items(h,A.items,g.items));else{const D=h.var("items",(0,u._)`${P}.evaluated.items`);g.items=a.mergeEvaluated.items(h,D,g.items,u.Name)}}}return Se.callRef=f,Se.default=m,Se}var xr;function Ko(){if(xr)return Fe;xr=1,Object.defineProperty(Fe,"__esModule",{value:!0});const e=Vo(),t=Uo(),u=["$schema","$id","$defs","$vocabulary",{keyword:"$comment"},"definitions",e.default,t.default];return Fe.default=u,Fe}var qe={},ze={},Cr;function Ho(){if(Cr)return ze;Cr=1,Object.defineProperty(ze,"__esModule",{value:!0});const e=K(),t=e.operators,u={maximum:{okStr:"<=",ok:t.LTE,fail:t.GT},minimum:{okStr:">=",ok:t.GTE,fail:t.LT},exclusiveMaximum:{okStr:"<",ok:t.LT,fail:t.GTE},exclusiveMinimum:{okStr:">",ok:t.GT,fail:t.LTE}},n={message:({keyword:a,schemaCode:m})=>(0,e.str)`must be ${u[a].okStr} ${m}`,params:({keyword:a,schemaCode:m})=>(0,e._)`{comparison: ${u[a].okStr}, limit: ${m}}`},v={keyword:Object.keys(u),type:"number",schemaType:"number",$data:!0,error:n,code(a){const{keyword:m,data:l,schemaCode:f}=a;a.fail$data((0,e._)`${l} ${u[m].fail} ${f} || isNaN(${l})`)}};return ze.default=v,ze}var Le={},_r;function Wo(){if(_r)return Le;_r=1,Object.defineProperty(Le,"__esModule",{value:!0});const e=K(),u={keyword:"multipleOf",type:"number",schemaType:"number",$data:!0,error:{message:({schemaCode:n})=>(0,e.str)`must be multiple of ${n}`,params:({schemaCode:n})=>(0,e._)`{multipleOf: ${n}}`},code(n){const{gen:v,data:a,schemaCode:m,it:l}=n,f=l.opts.multipleOfPrecision,x=v.let("res"),b=f?(0,e._)`Math.abs(Math.round(${x}) - ${x}) > 1e-${f}`:(0,e._)`${x} !== parseInt(${x})`;n.fail$data((0,e._)`(${m} === 0 || (${x} = ${a}/${m}, ${b}))`)}};return Le.default=u,Le}var Ge={},Ve={},wr;function Jo(){if(wr)return Ve;wr=1,Object.defineProperty(Ve,"__esModule",{value:!0});function e(t){const u=t.length;let n=0,v=0,a;for(;v<u;)n++,a=t.charCodeAt(v++),a>=55296&&a<=56319&&v<u&&(a=t.charCodeAt(v),(a&64512)===56320&&v++);return n}return Ve.default=e,e.code='require("ajv/dist/runtime/ucs2length").default',Ve}var jr;function Yo(){if(jr)return Ge;jr=1,Object.defineProperty(Ge,"__esModule",{value:!0});const e=K(),t=Y(),u=Jo(),v={keyword:["maxLength","minLength"],type:"string",schemaType:"number",$data:!0,error:{message({keyword:a,schemaCode:m}){const l=a==="maxLength"?"more":"fewer";return(0,e.str)`must NOT have ${l} than ${m} characters`},params:({schemaCode:a})=>(0,e._)`{limit: ${a}}`},code(a){const{keyword:m,data:l,schemaCode:f,it:x}=a,b=m==="maxLength"?e.operators.GT:e.operators.LT,w=x.opts.unicode===!1?(0,e._)`${l}.length`:(0,e._)`${(0,t.useFunc)(a.gen,u.default)}(${l})`;a.fail$data((0,e._)`${w} ${b} ${f}`)}};return Ge.default=v,Ge}var Ue={},kr;function Xo(){if(kr)return Ue;kr=1,Object.defineProperty(Ue,"__esModule",{value:!0});const e=ce(),t=K(),n={keyword:"pattern",type:"string",schemaType:"string",$data:!0,error:{message:({schemaCode:v})=>(0,t.str)`must match pattern "${v}"`,params:({schemaCode:v})=>(0,t._)`{pattern: ${v}}`},code(v){const{data:a,$data:m,schema:l,schemaCode:f,it:x}=v,b=x.opts.unicodeRegExp?"u":"",w=m?(0,t._)`(new RegExp(${f}, ${b}))`:(0,e.usePattern)(v,l);v.fail$data((0,t._)`!${w}.test(${a})`)}};return Ue.default=n,Ue}var Ke={},$r;function Qo(){if($r)return Ke;$r=1,Object.defineProperty(Ke,"__esModule",{value:!0});const e=K(),u={keyword:["maxProperties","minProperties"],type:"object",schemaType:"number",$data:!0,error:{message({keyword:n,schemaCode:v}){const a=n==="maxProperties"?"more":"fewer";return(0,e.str)`must NOT have ${a} than ${v} properties`},params:({schemaCode:n})=>(0,e._)`{limit: ${n}}`},code(n){const{keyword:v,data:a,schemaCode:m}=n,l=v==="maxProperties"?e.operators.GT:e.operators.LT;n.fail$data((0,e._)`Object.keys(${a}).length ${l} ${m}`)}};return Ke.default=u,Ke}var He={},Tr;function Zo(){if(Tr)return He;Tr=1,Object.defineProperty(He,"__esModule",{value:!0});const e=ce(),t=K(),u=Y(),v={keyword:"required",type:"object",schemaType:"array",$data:!0,error:{message:({params:{missingProperty:a}})=>(0,t.str)`must have required property '${a}'`,params:({params:{missingProperty:a}})=>(0,t._)`{missingProperty: ${a}}`},code(a){const{gen:m,schema:l,schemaCode:f,data:x,$data:b,it:w}=a,{opts:S}=w;if(!b&&l.length===0)return;const h=l.length>=S.loopRequired;if(w.allErrors?g():C(),S.strictRequired){const r=a.parentSchema.properties,{definedProperties:s}=a.it;for(const y of l)if(r?.[y]===void 0&&!s.has(y)){const o=w.schemaEnv.baseId+w.errSchemaPath,c=`required property "${y}" is not defined at "${o}" (strictRequired)`;(0,u.checkStrictMode)(w,c,w.opts.strictRequired)}}function g(){if(h||b)a.block$data(t.nil,i);else for(const r of l)(0,e.checkReportMissingProp)(a,r)}function C(){const r=m.let("missing");if(h||b){const s=m.let("valid",!0);a.block$data(s,()=>p(r,s)),a.ok(s)}else m.if((0,e.checkMissingProp)(a,l,r)),(0,e.reportMissingProp)(a,r),m.else()}function i(){m.forOf("prop",f,r=>{a.setParams({missingProperty:r}),m.if((0,e.noPropertyInData)(m,x,r,S.ownProperties),()=>a.error())})}function p(r,s){a.setParams({missingProperty:r}),m.forOf(r,f,()=>{m.assign(s,(0,e.propertyInData)(m,x,r,S.ownProperties)),m.if((0,t.not)(s),()=>{a.error(),m.break()})},t.nil)}}};return He.default=v,He}var We={},Nr;function en(){if(Nr)return We;Nr=1,Object.defineProperty(We,"__esModule",{value:!0});const e=K(),u={keyword:["maxItems","minItems"],type:"array",schemaType:"number",$data:!0,error:{message({keyword:n,schemaCode:v}){const a=n==="maxItems"?"more":"fewer";return(0,e.str)`must NOT have ${a} than ${v} items`},params:({schemaCode:n})=>(0,e._)`{limit: ${n}}`},code(n){const{keyword:v,data:a,schemaCode:m}=n,l=v==="maxItems"?e.operators.GT:e.operators.LT;n.fail$data((0,e._)`${a}.length ${l} ${m}`)}};return We.default=u,We}var Je={},Ye={},Er;function Gt(){if(Er)return Ye;Er=1,Object.defineProperty(Ye,"__esModule",{value:!0});const e=co();return e.code='require("ajv/dist/runtime/equal").default',Ye.default=e,Ye}var Ir;function tn(){if(Ir)return Je;Ir=1,Object.defineProperty(Je,"__esModule",{value:!0});const e=St(),t=K(),u=Y(),n=Gt(),a={keyword:"uniqueItems",type:"array",schemaType:"boolean",$data:!0,error:{message:({params:{i:m,j:l}})=>(0,t.str)`must NOT have duplicate items (items ## ${l} and ${m} are identical)`,params:({params:{i:m,j:l}})=>(0,t._)`{i: ${m}, j: ${l}}`},code(m){const{gen:l,data:f,$data:x,schema:b,parentSchema:w,schemaCode:S,it:h}=m;if(!x&&!b)return;const g=l.let("valid"),C=w.items?(0,e.getSchemaTypes)(w.items):[];m.block$data(g,i,(0,t._)`${S} === false`),m.ok(g);function i(){const y=l.let("i",(0,t._)`${f}.length`),o=l.let("j");m.setParams({i:y,j:o}),l.assign(g,!0),l.if((0,t._)`${y} > 1`,()=>(p()?r:s)(y,o))}function p(){return C.length>0&&!C.some(y=>y==="object"||y==="array")}function r(y,o){const c=l.name("item"),P=(0,e.checkDataTypes)(C,c,h.opts.strictNumbers,e.DataType.Wrong),N=l.const("indices",(0,t._)`{}`);l.for((0,t._)`;${y}--;`,()=>{l.let(c,(0,t._)`${f}[${y}]`),l.if(P,(0,t._)`continue`),C.length>1&&l.if((0,t._)`typeof ${c} == "string"`,(0,t._)`${c} += "_"`),l.if((0,t._)`typeof ${N}[${c}] == "number"`,()=>{l.assign(o,(0,t._)`${N}[${c}]`),m.error(),l.assign(g,!1).break()}).code((0,t._)`${N}[${c}] = ${y}`)})}function s(y,o){const c=(0,u.useFunc)(l,n.default),P=l.name("outer");l.label(P).for((0,t._)`;${y}--;`,()=>l.for((0,t._)`${o} = ${y}; ${o}--;`,()=>l.if((0,t._)`${c}(${f}[${y}], ${f}[${o}])`,()=>{m.error(),l.assign(g,!1).break(P)})))}}};return Je.default=a,Je}var Xe={},Rr;function rn(){if(Rr)return Xe;Rr=1,Object.defineProperty(Xe,"__esModule",{value:!0});const e=K(),t=Y(),u=Gt(),v={keyword:"const",$data:!0,error:{message:"must be equal to constant",params:({schemaCode:a})=>(0,e._)`{allowedValue: ${a}}`},code(a){const{gen:m,data:l,$data:f,schemaCode:x,schema:b}=a;f||b&&typeof b=="object"?a.fail$data((0,e._)`!${(0,t.useFunc)(m,u.default)}(${l}, ${x})`):a.fail((0,e._)`${b} !== ${l}`)}};return Xe.default=v,Xe}var Qe={},Ar;function on(){if(Ar)return Qe;Ar=1,Object.defineProperty(Qe,"__esModule",{value:!0});const e=K(),t=Y(),u=Gt(),v={keyword:"enum",schemaType:"array",$data:!0,error:{message:"must be equal to one of the allowed values",params:({schemaCode:a})=>(0,e._)`{allowedValues: ${a}}`},code(a){const{gen:m,data:l,$data:f,schema:x,schemaCode:b,it:w}=a;if(!f&&x.length===0)throw new Error("enum must have non-empty array");const S=x.length>=w.opts.loopEnum;let h;const g=()=>h??(h=(0,t.useFunc)(m,u.default));let C;if(S||f)C=m.let("valid"),a.block$data(C,i);else{if(!Array.isArray(x))throw new Error("ajv implementation error");const r=m.const("vSchema",b);C=(0,e.or)(...x.map((s,y)=>p(r,y)))}a.pass(C);function i(){m.assign(C,!1),m.forOf("v",b,r=>m.if((0,e._)`${g()}(${l}, ${r})`,()=>m.assign(C,!0).break()))}function p(r,s){const y=x[s];return typeof y=="object"&&y!==null?(0,e._)`${g()}(${l}, ${r}[${s}])`:(0,e._)`${l} === ${y}`}}};return Qe.default=v,Qe}var Mr;function nn(){if(Mr)return qe;Mr=1,Object.defineProperty(qe,"__esModule",{value:!0});const e=Ho(),t=Wo(),u=Yo(),n=Xo(),v=Qo(),a=Zo(),m=en(),l=tn(),f=rn(),x=on(),b=[e.default,t.default,u.default,n.default,v.default,a.default,m.default,l.default,{keyword:"type",schemaType:["string","array"]},{keyword:"nullable",schemaType:"boolean"},f.default,x.default];return qe.default=b,qe}var Ze={},we={},Or;function mo(){if(Or)return we;Or=1,Object.defineProperty(we,"__esModule",{value:!0}),we.validateAdditionalItems=void 0;const e=K(),t=Y(),n={keyword:"additionalItems",type:"array",schemaType:["boolean","object"],before:"uniqueItems",error:{message:({params:{len:a}})=>(0,e.str)`must NOT have more than ${a} items`,params:({params:{len:a}})=>(0,e._)`{limit: ${a}}`},code(a){const{parentSchema:m,it:l}=a,{items:f}=m;if(!Array.isArray(f)){(0,t.checkStrictMode)(l,'"additionalItems" is ignored when "items" is not an array of schemas');return}v(a,f)}};function v(a,m){const{gen:l,schema:f,data:x,keyword:b,it:w}=a;w.items=!0;const S=l.const("len",(0,e._)`${x}.length`);if(f===!1)a.setParams({len:m.length}),a.pass((0,e._)`${S} <= ${m.length}`);else if(typeof f=="object"&&!(0,t.alwaysValidSchema)(w,f)){const g=l.var("valid",(0,e._)`${S} <= ${m.length}`);l.if((0,e.not)(g),()=>h(g)),a.ok(g)}function h(g){l.forRange("i",m.length,S,C=>{a.subschema({keyword:b,dataProp:C,dataPropType:t.Type.Num},g),w.allErrors||l.if((0,e.not)(g),()=>l.break())})}}return we.validateAdditionalItems=v,we.default=n,we}var et={},je={},Dr;function yo(){if(Dr)return je;Dr=1,Object.defineProperty(je,"__esModule",{value:!0}),je.validateTuple=void 0;const e=K(),t=Y(),u=ce(),n={keyword:"items",type:"array",schemaType:["object","array","boolean"],before:"uniqueItems",code(a){const{schema:m,it:l}=a;if(Array.isArray(m))return v(a,"additionalItems",m);l.items=!0,!(0,t.alwaysValidSchema)(l,m)&&a.ok((0,u.validateArray)(a))}};function v(a,m,l=a.schema){const{gen:f,parentSchema:x,data:b,keyword:w,it:S}=a;C(x),S.opts.unevaluated&&l.length&&S.items!==!0&&(S.items=t.mergeEvaluated.items(f,l.length,S.items));const h=f.name("valid"),g=f.const("len",(0,e._)`${b}.length`);l.forEach((i,p)=>{(0,t.alwaysValidSchema)(S,i)||(f.if((0,e._)`${g} > ${p}`,()=>a.subschema({keyword:w,schemaProp:p,dataProp:p},h)),a.ok(h))});function C(i){const{opts:p,errSchemaPath:r}=S,s=l.length,y=s===i.minItems&&(s===i.maxItems||i[m]===!1);if(p.strictTuples&&!y){const o=`"${w}" is ${s}-tuple, but minItems or maxItems/${m} are not specified or different at path "${r}"`;(0,t.checkStrictMode)(S,o,p.strictTuples)}}}return je.validateTuple=v,je.default=n,je}var Fr;function an(){if(Fr)return et;Fr=1,Object.defineProperty(et,"__esModule",{value:!0});const e=yo(),t={keyword:"prefixItems",type:"array",schemaType:["array"],before:"uniqueItems",code:u=>(0,e.validateTuple)(u,"items")};return et.default=t,et}var tt={},Br;function sn(){if(Br)return tt;Br=1,Object.defineProperty(tt,"__esModule",{value:!0});const e=K(),t=Y(),u=ce(),n=mo(),a={keyword:"items",type:"array",schemaType:["object","boolean"],before:"uniqueItems",error:{message:({params:{len:m}})=>(0,e.str)`must NOT have more than ${m} items`,params:({params:{len:m}})=>(0,e._)`{limit: ${m}}`},code(m){const{schema:l,parentSchema:f,it:x}=m,{prefixItems:b}=f;x.items=!0,!(0,t.alwaysValidSchema)(x,l)&&(b?(0,n.validateAdditionalItems)(m,b):m.ok((0,u.validateArray)(m)))}};return tt.default=a,tt}var rt={},qr;function pn(){if(qr)return rt;qr=1,Object.defineProperty(rt,"__esModule",{value:!0});const e=K(),t=Y(),n={keyword:"contains",type:"array",schemaType:["object","boolean"],before:"uniqueItems",trackErrors:!0,error:{message:({params:{min:v,max:a}})=>a===void 0?(0,e.str)`must contain at least ${v} valid item(s)`:(0,e.str)`must contain at least ${v} and no more than ${a} valid item(s)`,params:({params:{min:v,max:a}})=>a===void 0?(0,e._)`{minContains: ${v}}`:(0,e._)`{minContains: ${v}, maxContains: ${a}}`},code(v){const{gen:a,schema:m,parentSchema:l,data:f,it:x}=v;let b,w;const{minContains:S,maxContains:h}=l;x.opts.next?(b=S===void 0?1:S,w=h):b=1;const g=a.const("len",(0,e._)`${f}.length`);if(v.setParams({min:b,max:w}),w===void 0&&b===0){(0,t.checkStrictMode)(x,'"minContains" == 0 without "maxContains": "contains" keyword ignored');return}if(w!==void 0&&b>w){(0,t.checkStrictMode)(x,'"minContains" > "maxContains" is always invalid'),v.fail();return}if((0,t.alwaysValidSchema)(x,m)){let s=(0,e._)`${g} >= ${b}`;w!==void 0&&(s=(0,e._)`${s} && ${g} <= ${w}`),v.pass(s);return}x.items=!0;const C=a.name("valid");w===void 0&&b===1?p(C,()=>a.if(C,()=>a.break())):b===0?(a.let(C,!0),w!==void 0&&a.if((0,e._)`${f}.length > 0`,i)):(a.let(C,!1),i()),v.result(C,()=>v.reset());function i(){const s=a.name("_valid"),y=a.let("count",0);p(s,()=>a.if(s,()=>r(y)))}function p(s,y){a.forRange("i",0,g,o=>{v.subschema({keyword:"contains",dataProp:o,dataPropType:t.Type.Num,compositeRule:!0},s),y()})}function r(s){a.code((0,e._)`${s}++`),w===void 0?a.if((0,e._)`${s} >= ${b}`,()=>a.assign(C,!0).break()):(a.if((0,e._)`${s} > ${w}`,()=>a.assign(C,!1).break()),b===1?a.assign(C,!0):a.if((0,e._)`${s} >= ${b}`,()=>a.assign(C,!0)))}}};return rt.default=n,rt}var Dt={},zr;function dn(){return zr||(zr=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.validateSchemaDeps=e.validatePropertyDeps=e.error=void 0;const t=K(),u=Y(),n=ce();e.error={message:({params:{property:f,depsCount:x,deps:b}})=>{const w=x===1?"property":"properties";return(0,t.str)`must have ${w} ${b} when property ${f} is present`},params:({params:{property:f,depsCount:x,deps:b,missingProperty:w}})=>(0,t._)`{property: ${f},
7
+ missingProperty: ${w},
8
+ depsCount: ${x},
9
+ deps: ${b}}`};const v={keyword:"dependencies",type:"object",schemaType:"object",error:e.error,code(f){const[x,b]=a(f);m(f,x),l(f,b)}};function a({schema:f}){const x={},b={};for(const w in f){if(w==="__proto__")continue;const S=Array.isArray(f[w])?x:b;S[w]=f[w]}return[x,b]}function m(f,x=f.schema){const{gen:b,data:w,it:S}=f;if(Object.keys(x).length===0)return;const h=b.let("missing");for(const g in x){const C=x[g];if(C.length===0)continue;const i=(0,n.propertyInData)(b,w,g,S.opts.ownProperties);f.setParams({property:g,depsCount:C.length,deps:C.join(", ")}),S.allErrors?b.if(i,()=>{for(const p of C)(0,n.checkReportMissingProp)(f,p)}):(b.if((0,t._)`${i} && (${(0,n.checkMissingProp)(f,C,h)})`),(0,n.reportMissingProp)(f,h),b.else())}}e.validatePropertyDeps=m;function l(f,x=f.schema){const{gen:b,data:w,keyword:S,it:h}=f,g=b.name("valid");for(const C in x)(0,u.alwaysValidSchema)(h,x[C])||(b.if((0,n.propertyInData)(b,w,C,h.opts.ownProperties),()=>{const i=f.subschema({keyword:S,schemaProp:C},g);f.mergeValidEvaluated(i,g)},()=>b.var(g,!0)),f.ok(g))}e.validateSchemaDeps=l,e.default=v})(Dt)),Dt}var ot={},Lr;function ln(){if(Lr)return ot;Lr=1,Object.defineProperty(ot,"__esModule",{value:!0});const e=K(),t=Y(),n={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:{message:"property name must be valid",params:({params:v})=>(0,e._)`{propertyName: ${v.propertyName}}`},code(v){const{gen:a,schema:m,data:l,it:f}=v;if((0,t.alwaysValidSchema)(f,m))return;const x=a.name("valid");a.forIn("key",l,b=>{v.setParams({propertyName:b}),v.subschema({keyword:"propertyNames",data:b,dataTypes:["string"],propertyName:b,compositeRule:!0},x),a.if((0,e.not)(x),()=>{v.error(!0),f.allErrors||a.break()})}),v.ok(x)}};return ot.default=n,ot}var nt={},Gr;function fo(){if(Gr)return nt;Gr=1,Object.defineProperty(nt,"__esModule",{value:!0});const e=ce(),t=K(),u=ve(),n=Y(),a={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:{message:"must NOT have additional properties",params:({params:m})=>(0,t._)`{additionalProperty: ${m.additionalProperty}}`},code(m){const{gen:l,schema:f,parentSchema:x,data:b,errsCount:w,it:S}=m;if(!w)throw new Error("ajv implementation error");const{allErrors:h,opts:g}=S;if(S.props=!0,g.removeAdditional!=="all"&&(0,n.alwaysValidSchema)(S,f))return;const C=(0,e.allSchemaProperties)(x.properties),i=(0,e.allSchemaProperties)(x.patternProperties);p(),m.ok((0,t._)`${w} === ${u.default.errors}`);function p(){l.forIn("key",b,c=>{!C.length&&!i.length?y(c):l.if(r(c),()=>y(c))})}function r(c){let P;if(C.length>8){const N=(0,n.schemaRefOrVal)(S,x.properties,"properties");P=(0,e.isOwnProperty)(l,N,c)}else C.length?P=(0,t.or)(...C.map(N=>(0,t._)`${c} === ${N}`)):P=t.nil;return i.length&&(P=(0,t.or)(P,...i.map(N=>(0,t._)`${(0,e.usePattern)(m,N)}.test(${c})`))),(0,t.not)(P)}function s(c){l.code((0,t._)`delete ${b}[${c}]`)}function y(c){if(g.removeAdditional==="all"||g.removeAdditional&&f===!1){s(c);return}if(f===!1){m.setParams({additionalProperty:c}),m.error(),h||l.break();return}if(typeof f=="object"&&!(0,n.alwaysValidSchema)(S,f)){const P=l.name("valid");g.removeAdditional==="failing"?(o(c,P,!1),l.if((0,t.not)(P),()=>{m.reset(),s(c)})):(o(c,P),h||l.if((0,t.not)(P),()=>l.break()))}}function o(c,P,N){const A={keyword:"additionalProperties",dataProp:c,dataPropType:n.Type.Str};N===!1&&Object.assign(A,{compositeRule:!0,createErrors:!1,allErrors:!1}),m.subschema(A,P)}}};return nt.default=a,nt}var at={},Vr;function cn(){if(Vr)return at;Vr=1,Object.defineProperty(at,"__esModule",{value:!0});const e=xt(),t=ce(),u=Y(),n=fo(),v={keyword:"properties",type:"object",schemaType:"object",code(a){const{gen:m,schema:l,parentSchema:f,data:x,it:b}=a;b.opts.removeAdditional==="all"&&f.additionalProperties===void 0&&n.default.code(new e.KeywordCxt(b,n.default,"additionalProperties"));const w=(0,t.allSchemaProperties)(l);for(const i of w)b.definedProperties.add(i);b.opts.unevaluated&&w.length&&b.props!==!0&&(b.props=u.mergeEvaluated.props(m,(0,u.toHash)(w),b.props));const S=w.filter(i=>!(0,u.alwaysValidSchema)(b,l[i]));if(S.length===0)return;const h=m.name("valid");for(const i of S)g(i)?C(i):(m.if((0,t.propertyInData)(m,x,i,b.opts.ownProperties)),C(i),b.allErrors||m.else().var(h,!0),m.endIf()),a.it.definedProperties.add(i),a.ok(h);function g(i){return b.opts.useDefaults&&!b.compositeRule&&l[i].default!==void 0}function C(i){a.subschema({keyword:"properties",schemaProp:i,dataProp:i},h)}}};return at.default=v,at}var it={},Ur;function un(){if(Ur)return it;Ur=1,Object.defineProperty(it,"__esModule",{value:!0});const e=ce(),t=K(),u=Y(),n=Y(),v={keyword:"patternProperties",type:"object",schemaType:"object",code(a){const{gen:m,schema:l,data:f,parentSchema:x,it:b}=a,{opts:w}=b,S=(0,e.allSchemaProperties)(l),h=S.filter(y=>(0,u.alwaysValidSchema)(b,l[y]));if(S.length===0||h.length===S.length&&(!b.opts.unevaluated||b.props===!0))return;const g=w.strictSchema&&!w.allowMatchingProperties&&x.properties,C=m.name("valid");b.props!==!0&&!(b.props instanceof t.Name)&&(b.props=(0,n.evaluatedPropsToName)(m,b.props));const{props:i}=b;p();function p(){for(const y of S)g&&r(y),b.allErrors?s(y):(m.var(C,!0),s(y),m.if(C))}function r(y){for(const o in g)new RegExp(y).test(o)&&(0,u.checkStrictMode)(b,`property ${o} matches pattern ${y} (use allowMatchingProperties)`)}function s(y){m.forIn("key",f,o=>{m.if((0,t._)`${(0,e.usePattern)(a,y)}.test(${o})`,()=>{const c=h.includes(y);c||a.subschema({keyword:"patternProperties",schemaProp:y,dataProp:o,dataPropType:n.Type.Str},C),b.opts.unevaluated&&i!==!0?m.assign((0,t._)`${i}[${o}]`,!0):!c&&!b.allErrors&&m.if((0,t.not)(C),()=>m.break())})})}}};return it.default=v,it}var st={},Kr;function mn(){if(Kr)return st;Kr=1,Object.defineProperty(st,"__esModule",{value:!0});const e=Y(),t={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(u){const{gen:n,schema:v,it:a}=u;if((0,e.alwaysValidSchema)(a,v)){u.fail();return}const m=n.name("valid");u.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},m),u.failResult(m,()=>u.reset(),()=>u.error())},error:{message:"must NOT be valid"}};return st.default=t,st}var pt={},Hr;function yn(){if(Hr)return pt;Hr=1,Object.defineProperty(pt,"__esModule",{value:!0});const t={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:ce().validateUnion,error:{message:"must match a schema in anyOf"}};return pt.default=t,pt}var dt={},Wr;function fn(){if(Wr)return dt;Wr=1,Object.defineProperty(dt,"__esModule",{value:!0});const e=K(),t=Y(),n={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:{message:"must match exactly one schema in oneOf",params:({params:v})=>(0,e._)`{passingSchemas: ${v.passing}}`},code(v){const{gen:a,schema:m,parentSchema:l,it:f}=v;if(!Array.isArray(m))throw new Error("ajv implementation error");if(f.opts.discriminator&&l.discriminator)return;const x=m,b=a.let("valid",!1),w=a.let("passing",null),S=a.name("_valid");v.setParams({passing:w}),a.block(h),v.result(b,()=>v.reset(),()=>v.error(!0));function h(){x.forEach((g,C)=>{let i;(0,t.alwaysValidSchema)(f,g)?a.var(S,!0):i=v.subschema({keyword:"oneOf",schemaProp:C,compositeRule:!0},S),C>0&&a.if((0,e._)`${S} && ${b}`).assign(b,!1).assign(w,(0,e._)`[${w}, ${C}]`).else(),a.if(S,()=>{a.assign(b,!0),a.assign(w,C),i&&v.mergeEvaluated(i,e.Name)})})}}};return dt.default=n,dt}var lt={},Jr;function gn(){if(Jr)return lt;Jr=1,Object.defineProperty(lt,"__esModule",{value:!0});const e=Y(),t={keyword:"allOf",schemaType:"array",code(u){const{gen:n,schema:v,it:a}=u;if(!Array.isArray(v))throw new Error("ajv implementation error");const m=n.name("valid");v.forEach((l,f)=>{if((0,e.alwaysValidSchema)(a,l))return;const x=u.subschema({keyword:"allOf",schemaProp:f},m);u.ok(m),u.mergeEvaluated(x)})}};return lt.default=t,lt}var ct={},Yr;function hn(){if(Yr)return ct;Yr=1,Object.defineProperty(ct,"__esModule",{value:!0});const e=K(),t=Y(),n={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:{message:({params:a})=>(0,e.str)`must match "${a.ifClause}" schema`,params:({params:a})=>(0,e._)`{failingKeyword: ${a.ifClause}}`},code(a){const{gen:m,parentSchema:l,it:f}=a;l.then===void 0&&l.else===void 0&&(0,t.checkStrictMode)(f,'"if" without "then" and "else" is ignored');const x=v(f,"then"),b=v(f,"else");if(!x&&!b)return;const w=m.let("valid",!0),S=m.name("_valid");if(h(),a.reset(),x&&b){const C=m.let("ifClause");a.setParams({ifClause:C}),m.if(S,g("then",C),g("else",C))}else x?m.if(S,g("then")):m.if((0,e.not)(S),g("else"));a.pass(w,()=>a.error(!0));function h(){const C=a.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},S);a.mergeEvaluated(C)}function g(C,i){return()=>{const p=a.subschema({keyword:C},S);m.assign(w,S),a.mergeValidEvaluated(p,w),i?m.assign(i,(0,e._)`${C}`):a.setParams({ifClause:C})}}}};function v(a,m){const l=a.schema[m];return l!==void 0&&!(0,t.alwaysValidSchema)(a,l)}return ct.default=n,ct}var ut={},Xr;function bn(){if(Xr)return ut;Xr=1,Object.defineProperty(ut,"__esModule",{value:!0});const e=Y(),t={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:u,parentSchema:n,it:v}){n.if===void 0&&(0,e.checkStrictMode)(v,`"${u}" without "if" is ignored`)}};return ut.default=t,ut}var Qr;function Sn(){if(Qr)return Ze;Qr=1,Object.defineProperty(Ze,"__esModule",{value:!0});const e=mo(),t=an(),u=yo(),n=sn(),v=pn(),a=dn(),m=ln(),l=fo(),f=cn(),x=un(),b=mn(),w=yn(),S=fn(),h=gn(),g=hn(),C=bn();function i(p=!1){const r=[b.default,w.default,S.default,h.default,g.default,C.default,m.default,l.default,a.default,f.default,x.default];return p?r.push(t.default,n.default):r.push(e.default,u.default),r.push(v.default),r}return Ze.default=i,Ze}var mt={},yt={},Zr;function vn(){if(Zr)return yt;Zr=1,Object.defineProperty(yt,"__esModule",{value:!0});const e=K(),u={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:{message:({schemaCode:n})=>(0,e.str)`must match format "${n}"`,params:({schemaCode:n})=>(0,e._)`{format: ${n}}`},code(n,v){const{gen:a,data:m,$data:l,schema:f,schemaCode:x,it:b}=n,{opts:w,errSchemaPath:S,schemaEnv:h,self:g}=b;if(!w.validateFormats)return;l?C():i();function C(){const p=a.scopeValue("formats",{ref:g.formats,code:w.code.formats}),r=a.const("fDef",(0,e._)`${p}[${x}]`),s=a.let("fType"),y=a.let("format");a.if((0,e._)`typeof ${r} == "object" && !(${r} instanceof RegExp)`,()=>a.assign(s,(0,e._)`${r}.type || "string"`).assign(y,(0,e._)`${r}.validate`),()=>a.assign(s,(0,e._)`"string"`).assign(y,r)),n.fail$data((0,e.or)(o(),c()));function o(){return w.strictSchema===!1?e.nil:(0,e._)`${x} && !${y}`}function c(){const P=h.$async?(0,e._)`(${r}.async ? await ${y}(${m}) : ${y}(${m}))`:(0,e._)`${y}(${m})`,N=(0,e._)`(typeof ${y} == "function" ? ${P} : ${y}.test(${m}))`;return(0,e._)`${y} && ${y} !== true && ${s} === ${v} && !${N}`}}function i(){const p=g.formats[f];if(!p){o();return}if(p===!0)return;const[r,s,y]=c(p);r===v&&n.pass(P());function o(){if(w.strictSchema===!1){g.logger.warn(N());return}throw new Error(N());function N(){return`unknown format "${f}" ignored in schema at path "${S}"`}}function c(N){const A=N instanceof RegExp?(0,e.regexpCode)(N):w.code.formats?(0,e._)`${w.code.formats}${(0,e.getProperty)(f)}`:void 0,D=a.scopeValue("formats",{key:f,ref:N,code:A});return typeof N=="object"&&!(N instanceof RegExp)?[N.type||"string",N.validate,(0,e._)`${D}.validate`]:["string",N,D]}function P(){if(typeof p=="object"&&!(p instanceof RegExp)&&p.async){if(!h.$async)throw new Error("async format in sync schema");return(0,e._)`await ${y}(${m})`}return typeof s=="function"?(0,e._)`${y}(${m})`:(0,e._)`${y}.test(${m})`}}}};return yt.default=u,yt}var eo;function Pn(){if(eo)return mt;eo=1,Object.defineProperty(mt,"__esModule",{value:!0});const t=[vn().default];return mt.default=t,mt}var Ce={},to;function xn(){return to||(to=1,Object.defineProperty(Ce,"__esModule",{value:!0}),Ce.contentVocabulary=Ce.metadataVocabulary=void 0,Ce.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"],Ce.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]),Ce}var ro;function Cn(){if(ro)return De;ro=1,Object.defineProperty(De,"__esModule",{value:!0});const e=Ko(),t=nn(),u=Sn(),n=Pn(),v=xn(),a=[e.default,t.default,(0,u.default)(),n.default,v.metadataVocabulary,v.contentVocabulary];return De.default=a,De}var ft={},Ee={},oo;function _n(){if(oo)return Ee;oo=1,Object.defineProperty(Ee,"__esModule",{value:!0}),Ee.DiscrError=void 0;var e;return(function(t){t.Tag="tag",t.Mapping="mapping"})(e||(Ee.DiscrError=e={})),Ee}var no;function wn(){if(no)return ft;no=1,Object.defineProperty(ft,"__esModule",{value:!0});const e=K(),t=_n(),u=Lt(),n=Ct(),v=Y(),m={keyword:"discriminator",type:"object",schemaType:"object",error:{message:({params:{discrError:l,tagName:f}})=>l===t.DiscrError.Tag?`tag "${f}" must be string`:`value of tag "${f}" must be in oneOf`,params:({params:{discrError:l,tag:f,tagName:x}})=>(0,e._)`{error: ${l}, tag: ${x}, tagValue: ${f}}`},code(l){const{gen:f,data:x,schema:b,parentSchema:w,it:S}=l,{oneOf:h}=w;if(!S.opts.discriminator)throw new Error("discriminator: requires discriminator option");const g=b.propertyName;if(typeof g!="string")throw new Error("discriminator: requires propertyName");if(b.mapping)throw new Error("discriminator: mapping is not supported");if(!h)throw new Error("discriminator: requires oneOf keyword");const C=f.let("valid",!1),i=f.const("tag",(0,e._)`${x}${(0,e.getProperty)(g)}`);f.if((0,e._)`typeof ${i} == "string"`,()=>p(),()=>l.error(!1,{discrError:t.DiscrError.Tag,tag:i,tagName:g})),l.ok(C);function p(){const y=s();f.if(!1);for(const o in y)f.elseIf((0,e._)`${i} === ${o}`),f.assign(C,r(y[o]));f.else(),l.error(!1,{discrError:t.DiscrError.Mapping,tag:i,tagName:g}),f.endIf()}function r(y){const o=f.name("valid"),c=l.subschema({keyword:"oneOf",schemaProp:y},o);return l.mergeEvaluated(c,e.Name),o}function s(){var y;const o={},c=N(w);let P=!0;for(let F=0;F<h.length;F++){let G=h[F];if(G?.$ref&&!(0,v.schemaHasRulesButRef)(G,S.self.RULES)){const J=G.$ref;if(G=u.resolveRef.call(S.self,S.schemaEnv.root,S.baseId,J),G instanceof u.SchemaEnv&&(G=G.schema),G===void 0)throw new n.default(S.opts.uriResolver,S.baseId,J)}const L=(y=G?.properties)===null||y===void 0?void 0:y[g];if(typeof L!="object")throw new Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${g}"`);P=P&&(c||N(G)),A(L,F)}if(!P)throw new Error(`discriminator: "${g}" must be required`);return o;function N({required:F}){return Array.isArray(F)&&F.includes(g)}function A(F,G){if(F.const)D(F.const,G);else if(F.enum)for(const L of F.enum)D(L,G);else throw new Error(`discriminator: "properties/${g}" must have "const" or "enum"`)}function D(F,G){if(typeof F!="string"||F in o)throw new Error(`discriminator: "${g}" values must be unique strings`);o[F]=G}}}};return ft.default=m,ft}const jn="http://json-schema.org/draft-07/schema#",kn="http://json-schema.org/draft-07/schema#",$n="Core schema meta-schema",Tn={schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},Nn=["object","boolean"],En={$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},In={$schema:jn,$id:kn,title:$n,definitions:Tn,type:Nn,properties:En,default:!0};var ao;function Rn(){return ao||(ao=1,(function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.MissingRefError=t.ValidationError=t.CodeGen=t.Name=t.nil=t.stringify=t.str=t._=t.KeywordCxt=t.Ajv=void 0;const u=Go(),n=Cn(),v=wn(),a=In,m=["/properties"],l="http://json-schema.org/draft-07/schema";class f extends u.default{_addVocabularies(){super._addVocabularies(),n.default.forEach(g=>this.addVocabulary(g)),this.opts.discriminator&&this.addKeyword(v.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;const g=this.opts.$data?this.$dataMetaSchema(a,m):a;this.addMetaSchema(g,l,!1),this.refs["http://json-schema.org/schema"]=l}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(l)?l:void 0)}}t.Ajv=f,e.exports=t=f,e.exports.Ajv=f,Object.defineProperty(t,"__esModule",{value:!0}),t.default=f;var x=xt();Object.defineProperty(t,"KeywordCxt",{enumerable:!0,get:function(){return x.KeywordCxt}});var b=K();Object.defineProperty(t,"_",{enumerable:!0,get:function(){return b._}}),Object.defineProperty(t,"str",{enumerable:!0,get:function(){return b.str}}),Object.defineProperty(t,"stringify",{enumerable:!0,get:function(){return b.stringify}}),Object.defineProperty(t,"nil",{enumerable:!0,get:function(){return b.nil}}),Object.defineProperty(t,"Name",{enumerable:!0,get:function(){return b.Name}}),Object.defineProperty(t,"CodeGen",{enumerable:!0,get:function(){return b.CodeGen}});var w=zt();Object.defineProperty(t,"ValidationError",{enumerable:!0,get:function(){return w.default}});var S=Ct();Object.defineProperty(t,"MissingRefError",{enumerable:!0,get:function(){return S.default}})})(Ie,Ie.exports)),Ie.exports}var An=Rn();const go=ko(An),Mn={};let ho=Mn,bo=null;function So(){return ho}function On(e){ho=e}function Dn(){return bo}function Fn(e){bo=e}function ke(e,t){return{type:"string",...t?{description:t}:{},"x-doc":{group:e,type:"string"}}}function Ft(e,t){return{type:"number",...t?{description:t}:{},"x-doc":{group:e,type:"number"}}}function Bn(e,t){return{type:"boolean",description:t,"x-doc":{group:e,type:"boolean"}}}function Bt(e,t,u){return{type:"string",enum:[...t],...u?{description:u}:{},"x-doc":{group:e,type:"string"}}}const qn={type:"string",description:"CSS-класс (Tailwind: flex, grid, gap-*).","x-doc":{group:"Control",type:"string",kind:"readonly"}},qt=[{tag:"div",content:"container",defaultClass:"flex gap-4"},{tag:"section",content:"container",defaultClass:"space-y-4"},{tag:"article",content:"container",defaultClass:"space-y-4"},{tag:"aside",content:"container",defaultClass:"space-y-4"},{tag:"header",content:"container",defaultClass:"space-y-4"},{tag:"footer",content:"container",defaultClass:"space-y-4"},{tag:"nav",content:"container",defaultClass:"flex gap-4"},{tag:"main",content:"container",defaultClass:"space-y-4"},{tag:"fieldset",content:"container",defaultClass:"space-y-4"},{tag:"h1",content:"text",defaultText:"Заголовок"},{tag:"h2",content:"text",defaultText:"Заголовок"},{tag:"h3",content:"text",defaultText:"Заголовок"},{tag:"h4",content:"text",defaultText:"Заголовок"},{tag:"h5",content:"text",defaultText:"Заголовок"},{tag:"h6",content:"text",defaultText:"Заголовок"},{tag:"p",content:"text",defaultText:"Текст"},{tag:"span",content:"text",defaultText:"Текст"},{tag:"strong",content:"text",defaultText:"Текст"},{tag:"em",content:"text",defaultText:"Текст"},{tag:"small",content:"text",defaultText:"Текст"},{tag:"blockquote",content:"text",defaultText:"Цитата",props:{cite:ke("Options","URL источника цитаты.")}},{tag:"code",content:"text",defaultText:"code"},{tag:"pre",content:"text",defaultText:"Текст"},{tag:"a",content:"text",defaultText:"Ссылка",props:{href:ke("Control","URL ссылки."),target:Bt("Options",["_self","_blank","_parent","_top"],"Где открыть ссылку."),rel:ke("Options","Отношение (напр. noopener noreferrer).")}},{tag:"label",content:"text",defaultText:"Подпись",props:{htmlFor:ke("Options","ID связанного поля (атрибут for).")}},{tag:"br",content:"void"},{tag:"ul",content:"container",defaultClass:"list-disc space-y-1 pl-5"},{tag:"ol",content:"container",defaultClass:"list-decimal space-y-1 pl-5",props:{start:Ft("Options","Начальный номер списка."),reversed:Bn("Behavior","Обратный порядок нумерации."),type:Bt("Options",["1","a","A","i","I"],"Стиль маркера нумерации.")}},{tag:"li",content:"container"},{tag:"hr",content:"void"},{tag:"img",content:"void",props:{src:ke("Control","URL изображения."),alt:ke("Control","Альтернативный текст (доступность)."),width:Ft("Options","Ширина, px."),height:Ft("Options","Высота, px."),loading:Bt("Behavior",["lazy","eager"],"Стратегия загрузки.")}}],zn=new Map(qt.map(e=>[e.tag,e]));function Ln(e){return zn.get(e)}function Gn(e){const t={className:qn};return e.props&&Object.assign(t,e.props),{type:"object",properties:t}}const Vn={type:"object",properties:{title:{type:"string","x-doc":{group:"Control",type:"string"}},addButtonLabel:{type:"string","x-doc":{group:"Control",type:"string"}},emptyMessage:{type:"string","x-doc":{group:"Control",type:"string"}},itemLabel:{type:"string",description:"Подпись элемента: строка или $dataSource/$fn.","x-doc":{group:"Options",type:"string"}},reorderable:{type:"boolean","x-doc":{group:"Behavior",type:"boolean"}},minItems:{type:"number","x-doc":{group:"Behavior",type:"number"}},maxItems:{type:"number","x-doc":{group:"Behavior",type:"number"}}}},Un={type:"object",properties:{className:{type:"string","x-doc":{group:"Control",type:"string"}}}},Kn={type:"object",properties:{title:{type:"string","x-doc":{group:"Control",type:"string"}},icon:{type:"string",description:"Иконка шага: эмодзи или строка.","x-doc":{group:"Control",type:"string"}}}};function Hn(e){const t=e?.htmlTags&&e.htmlTags.length?qt.filter(l=>e.htmlTags.includes(l.tag)):qt,u=e?.html===!1?[]:t.map(l=>({name:`$html(${l.tag})`,role:"container",category:"HTML",propsSchema:Gn(l)})),n={name:"FormArray",role:"array",category:"Массив",propsSchema:Vn},v={name:"Wizard",role:"container",category:"Мастер",propsSchema:Un},a={name:"Step",role:"container",category:"Мастер",propsSchema:Kn},m=[...u];return e?.formArray!==!1&&m.push(n),e?.wizard!==!1&&m.push(v,a),m}const Wn={Input:"Поля ввода",InputPassword:"Поля ввода",InputMask:"Поля ввода",InputOTP:"Поля ввода",Textarea:"Поля ввода",DatePicker:"Поля ввода",Calendar:"Поля ввода",FileUpload:"Поля ввода",FileUploadAvatar:"Поля ввода",Select:"Выбор и переключатели",NativeSelect:"Выбор и переключатели",Combobox:"Выбор и переключатели",RadioGroup:"Выбор и переключатели",Checkbox:"Выбор и переключатели",Switch:"Выбор и переключатели",Slider:"Выбор и переключатели",Toggle:"Выбор и переключатели",ToggleGroup:"Выбор и переключатели",Box:"Контейнеры",Section:"Контейнеры",Card:"Контейнеры",Accordion:"Контейнеры",Tabs:"Контейнеры",Collapsible:"Контейнеры",InputGroup:"Контейнеры",ButtonGroup:"Контейнеры",AspectRatio:"Контейнеры",ScrollArea:"Контейнеры",Resizable:"Контейнеры",Sidebar:"Контейнеры",Button:"Действия",Icon:"Отображение",Label:"Отображение",Badge:"Отображение",Typography:"Отображение",Avatar:"Отображение",Progress:"Отображение",Skeleton:"Отображение",Spinner:"Отображение",Table:"Отображение",Chart:"Отображение",Empty:"Отображение",Kbd:"Отображение",Marker:"Отображение",Alert:"Отображение",Separator:"Отображение",Carousel:"Отображение",Dialog:"Оверлеи",AlertDialog:"Оверлеи",Sheet:"Оверлеи",Drawer:"Оверлеи",Popover:"Оверлеи",HoverCard:"Оверлеи",Tooltip:"Оверлеи",Command:"Оверлеи",DropdownMenu:"Навигация",ContextMenu:"Навигация",Menubar:"Навигация",NavigationMenu:"Навигация",Breadcrumb:"Навигация",Pagination:"Навигация",Bubble:"Чат",Message:"Чат",MessageScroller:"Чат",Attachment:"Чат",Item:"Чат"},Jn=new Set(["Dialog","AlertDialog","Sheet","Popover","HoverCard","Tooltip","DropdownMenu","ContextMenu","Menubar","NavigationMenu"]),Yn=new Map([["Carousel","subpath-only: embla-carousel-react"],["Chart","subpath-only: recharts (экспорт ChartContainer, не Chart)"],["Command","subpath-only: cmdk"],["Drawer","subpath-only: vaul"],["MessageScroller","subpath-only: @shadcn/react"],["Resizable","subpath-only: react-resizable-panels (экспорт ResizablePanelGroup, не Resizable)"],["Sidebar","subpath-only"]]),Xn=new Set(["Icon","Separator","Spinner","Skeleton","Progress"]),si=["FormField","AsyncBoundary","List"],vo=new Set(["Wizard","RendererFormWizard","Step","FormWizard"]);function Qn(){const e=new Map;for(const t of Jn)e.set(t,{mode:"limited",reason:"оверлей — нужен триггер/портал"});return e}function Zn(){return new Map(Yn)}const me={id:"reformer-ui-kit",label:"ReFormer UI Kit",package:"@reformer/ui-kit",resolve:{fieldSuffix:"Field"},infra:{fieldWrapper:"FormField",asyncBoundary:"AsyncBoundary",list:"List"},adapters:{wizard:{symbol:"FormWizard",subpath:"form-wizard"},step:null},palette:{categoryByName:Wn},styles:{mode:"tokens"},codegen:{needsShim:[...vo]}},ea="workspace";function ta(e){const t=Qn();for(const u of e)u.preview&&t.set(u.name,u.preview);return t}function ra(e){const t=Zn();for(const u of e)u.subpath&&t.set(u.name,`subpath-only: ${u.subpath}`);return t}function oa(e){const t=new Set(Xn);for(const u of e)u.leaf===!0?t.add(u.name):u.leaf===!1&&t.delete(u.name);return t}function na(e,t){const u=t?.classGroupsByRole??{},n=new Map;for(const v of e){const a=v.classGroups??u[v.role];a===void 0||a==="*"||n.set(v.name,new Set(a))}return n}function Po(e){const t=e.kit??{},u=e.components??[],n=t.package??me.package;return{id:t.id??me.id,label:t.label??me.label,package:n,version:t.version??ea,peerRanges:t.peerRanges??{},resolve:{fieldSuffix:t.resolve?.fieldSuffix??me.resolve.fieldSuffix},infra:{fieldWrapper:t.infra?.fieldWrapper??me.infra.fieldWrapper,asyncBoundary:t.infra?.asyncBoundary??me.infra.asyncBoundary,list:t.infra?.list??me.infra.list},adapters:t.adapters??me.adapters,palette:{categoryByName:t.palette?.categoryByName??me.palette.categoryByName,...t.palette?.order?{order:t.palette.order}:{},...t.palette?.glyphs?{glyphs:t.palette.glyphs}:{}},styles:{mode:t.styles?.mode??me.styles.mode,classNames:t.styles?.classNames??[],...t.styles?.href?{href:t.styles.href}:{},...t.styles?.classGroupsByRole?{classGroupsByRole:t.styles.classGroupsByRole}:{}},codegen:{importSpecifier:t.codegen?.importSpecifier??n,needsShim:t.codegen?.needsShim?new Set(t.codegen.needsShim):vo},previewPolicy:ta(u),unresolvedReason:ra(u),leafComponents:oa(u),classGroupPolicy:na(u,t.styles),compoundTemplates:void 0}}function pi(e,t){return e.exportName?e.exportName:e.role==="field"?`${e.name}${t.resolve.fieldSuffix}`:e.name}let xo=null,aa=null;function ia(){return xo??(aa??=Po({components:[]}))}function di(e){xo=e}function sa(e){return{value:"$model(newField)",component:`$component(${e})`,componentProps:{label:e}}}function pa(e){return{component:`$component(${e})`,componentProps:{className:"space-y-4"},children:[]}}function da(e){return{component:`$component(${e})`,componentProps:{}}}function la(e){const t=e.slice(6,-1),u=`$html(${t})`,n=Ln(t);if(!n||n.content==="container"){const v=n?.defaultClass?{className:n.defaultClass}:{};return{component:u,componentProps:v,children:[]}}return n.content==="void"?{component:u,componentProps:{}}:{component:u,children:[n.defaultText??"Текст"]}}function H(e,t){return{component:`$component(${e})`,children:t===void 0?[]:[t]}}const ca=["Title","Description","Text","Trigger","Link","Page","Caption","Head","Cell","Fallback"];function ua(e){return ca.some(t=>e.endsWith(t))?"Текст":void 0}const ma={Alert:()=>({component:"$component(Alert)",children:[H("AlertTitle","Заголовок"),H("AlertDescription","Описание")]}),Card:()=>({component:"$component(Card)",children:[{component:"$component(CardHeader)",children:[H("CardTitle","Заголовок"),H("CardDescription","Описание")]},H("CardContent"),H("CardFooter")]}),Accordion:()=>({component:"$component(Accordion)",componentProps:{type:"single",collapsible:!0},children:[{component:"$component(AccordionItem)",componentProps:{value:"item-1"},children:[H("AccordionTrigger","Секция 1"),H("AccordionContent")]}]}),Tabs:()=>({component:"$component(Tabs)",componentProps:{defaultValue:"tab-1"},children:[{component:"$component(TabsList)",children:[{component:"$component(TabsTrigger)",componentProps:{value:"tab-1"},children:["Вкладка 1"]},{component:"$component(TabsTrigger)",componentProps:{value:"tab-2"},children:["Вкладка 2"]}]},{component:"$component(TabsContent)",componentProps:{value:"tab-1"},children:[]},{component:"$component(TabsContent)",componentProps:{value:"tab-2"},children:[]}]}),Table:()=>({component:"$component(Table)",children:[{component:"$component(TableHeader)",children:[{component:"$component(TableRow)",children:[H("TableHead","Колонка 1"),H("TableHead","Колонка 2")]}]},{component:"$component(TableBody)",children:[{component:"$component(TableRow)",children:[H("TableCell","Значение 1"),H("TableCell","Значение 2")]}]}]}),Breadcrumb:()=>({component:"$component(Breadcrumb)",children:[{component:"$component(BreadcrumbList)",children:[{component:"$component(BreadcrumbItem)",children:[H("BreadcrumbLink","Главная")]},H("BreadcrumbSeparator"),{component:"$component(BreadcrumbItem)",children:[H("BreadcrumbPage","Текущая страница")]}]}]}),Empty:()=>({component:"$component(Empty)",children:[{component:"$component(EmptyHeader)",children:[H("EmptyTitle","Нет данных"),H("EmptyDescription","Здесь пока пусто")]},H("EmptyContent")]}),Item:()=>({component:"$component(Item)",children:[{component:"$component(ItemContent)",children:[H("ItemTitle","Заголовок"),H("ItemDescription","Описание")]},H("ItemActions")]}),InputGroup:()=>({component:"$component(InputGroup)",children:[{component:"$component(InputGroupAddon)",componentProps:{align:"inline-start"},children:[]},H("InputGroupInput")]}),Pagination:()=>({component:"$component(Pagination)",children:[{component:"$component(PaginationContent)",children:[{component:"$component(PaginationItem)",children:[H("PaginationPrevious")]},{component:"$component(PaginationItem)",children:[{component:"$component(PaginationLink)",children:["1"]}]},{component:"$component(PaginationItem)",children:[H("PaginationNext")]}]}]}),Avatar:()=>({component:"$component(Avatar)",children:[H("AvatarImage"),H("AvatarFallback","ИИ")]}),Message:()=>({component:"$component(Message)",children:[H("MessageAvatar"),H("MessageContent","Текст сообщения")]}),Bubble:()=>({component:"$component(Bubble)",children:[H("BubbleContent","Текст сообщения")]}),Collapsible:()=>({component:"$component(Collapsible)",children:[H("CollapsibleTrigger","Показать"),H("CollapsibleContent")]}),Carousel:()=>({component:"$component(Carousel)",children:[{component:"$component(CarouselContent)",children:[H("CarouselItem")]},H("CarouselPrevious"),H("CarouselNext")]})};function ya(){return{array:"$model(items)",item:{$template:{component:"$component(Box)",componentProps:{className:"space-y-3"},children:[]}},componentProps:{addButtonLabel:"+ Добавить элемент"}}}function Co(e="Шаг"){return{component:"$component(Step)",componentProps:{title:e},children:[]}}function fa(){return{component:"$component(Wizard)",componentProps:{steps:[Co("Шаг 1")]}}}function ga(e,t,u){if(t==="array")return ya();if(e.startsWith("$html("))return la(e);if(t==="field")return sa(e);if(e==="Wizard")return fa();if(e==="Step")return Co();const n=ia();if(n.leafComponents.has(e))return da(e);const v=(n.compoundTemplates??ma)[e];return v?v():u?H(e,ua(e)):pa(e)}const ha="http://json-schema.org/draft-07/schema#",ba="https://reformer.dev/schemas/component-catalog.schema.json",Sa="ReFormer component catalog",va="Контракт каталога компонентов (спека §5). Владелец — reformer-builder; клиенты (напр. @reformer/ui-kit) генерируют валидный catalog-JSON со списком своих компонентов. Билдер грузит его в палитру/инспектор.",Pa="object",xa=["version","components"],Ca=!1,_a={$schema:{type:"string",description:"Ссылка на этот контракт (для валидации/подсказок в IDE). Не нормативна — билдер валидирует каталог программно."},version:{type:"string",minLength:1},components:{type:"array",items:{type:"object",required:["name","role","propsSchema"],additionalProperties:!1,properties:{name:{type:"string",minLength:1,description:"Имя компонента для оператора $component(name)."},role:{enum:["field","container","array"],description:"field — form-control (несёт value); container — держит children; array — повторяющийся блок."},category:{type:"string",description:"Необязательная группировка палитры. Категория — забота билдера; клиент может не поставлять."},propsSchema:{type:"object",description:"JSON Schema редактируемых пропсов компонента (валидируется её структура, не содержимое)."},variantGroup:{type:"string",description:"Имя группы вариантов. Компоненты с одним variantGroup — варианты одного компонента (селектор variant в инспекторе). Дефолт группы — член, чей name === variantGroup."},variant:{type:"string",description:"Человекочитаемая метка варианта в группе (напр. «Пароль»)."},compoundParent:{type:"string",description:"Имя корня compound-компонента, частью которого является запись (AlertTitle → Alert). Части не показываются в общем списке палитры: они предлагаются в контексте своего корня и входят в его композицию по умолчанию."},exportName:{type:"string",minLength:1,description:"Контракт 2.0. Точечный override имени экспорта в namespace кита, когда правило kit.resolve не подходит (например Chart → ChartContainer). По умолчанию: `${name}${kit.resolve.fieldSuffix}` для role=field, иначе name."},subpath:{type:"string",minLength:1,description:"Контракт 2.0. Subpath кита, за которым лежит символ, если его нет в главном barrel (тяжёлые компоненты за optional peer-deps)."},preview:{type:"object",required:["mode"],additionalProperties:!1,description:"Контракт 2.0. Ограничение живого превью. Позволяет киту самому объявить, что компонент нельзя рисовать вживую, вместо allowlist'а внутри билдера.",properties:{mode:{enum:["live","limited"],description:"limited — вместо компонента рисуется подписанный стаб «предпросмотр ограничен»."},reason:{type:"string",description:"Причина ограничения, показывается в стабе."}}},leaf:{type:"boolean",description:"Контракт 2.0. Компонент-лист: рендерит самодостаточный визуал (иконка, разделитель, спиннер) и вложенных компонентов не держит — не является drop-target."},classGroups:{type:"array",items:{type:"string",minLength:1},description:"Контракт 2.0. id групп kit.styles.classNames, которыми РАЗРЕШЕНО стилизовать этот компонент. Отсутствие поля НЕ РАВНО пустому массиву: отсутствие отдаёт решение правилу роли kit.styles.classGroupsByRole (а если и его нет — доступен весь словарь), пустой массив = разрешённых групп нет и подсказок не будет. Типовой случай — form-control, которому разрешают только spacing: расположение поля в форме править можно, его вид — нет."}}}},kit:{type:"object",additionalProperties:!1,description:"Контракт 2.0. Дескриптор кита — то, что дизайн-система рассказывает о себе сама. Блок целиком опционален: каталог без него трактуется как «неявный кит» и достраивается дефолтами билдера (поведение 1:1 как до введения контракта).",properties:{id:{type:"string",minLength:1,description:"Стабильный идентификатор кита, независимый от npm-алиаса (напр. reformer-ui-kit)."},label:{type:"string",description:"Человекочитаемое имя для переключателя китов."},package:{type:"string",description:"Имя npm-пакета кита."},version:{type:"string",description:"Версия ПАКЕТА кита (не путать с version на верхнем уровне — та относится к контракту каталога)."},peerRanges:{type:"object",additionalProperties:{type:"string"},description:"Требования кита к shared-рантайму хоста. Информационная подсказка: решение об активации принимает символьная проверка, а не semver — открытые диапазоны вида '>=1.0.0' реальный контракт не выражают."},resolve:{type:"object",additionalProperties:!1,description:"Правило «имя записи каталога → имя экспорта».",properties:{fieldSuffix:{type:"string",description:"Суффикс символа для записей role=field (у @reformer/ui-kit — 'Field': Input → InputField)."}}},infra:{type:"object",additionalProperties:!1,description:"Компоненты вне палитрового каталога, обязательные для рендерера.",properties:{fieldWrapper:{type:"string",description:"Враппер поля (он же FIELD_WRAPPER реестра renderer-json)."},asyncBoundary:{type:"string",description:"Граница асинхронной загрузки."},list:{type:"string",description:"Обёртка display-списка для array-узлов."}}},adapters:{type:"object",additionalProperties:!1,description:"Символы кита под builder-адаптерами: wizard/step — пошаговая форма, provider — обёртка поддерева превью (тема styled-components, i18n, конфиг портала). null — кит такого не поставляет.",properties:{wizard:{$ref:"#/definitions/kitAdapter"},step:{$ref:"#/definitions/kitAdapter"},provider:{$ref:"#/definitions/kitAdapter"}}},palette:{type:"object",additionalProperties:!1,description:"Настройки палитры, которые знает сам кит. Клиентский конфиг билдера накладывается поверх.",properties:{categoryByName:{type:"object",additionalProperties:{type:"string"},description:"Имя компонента → категория палитры. Если задано, ЗАМЕЩАЕТ карту билдера целиком: смешивать категории чужого кита с картой ui-kit бессмысленно."},order:{type:"array",items:{type:"string"},description:"Порядок разделов палитры."},glyphs:{type:"object",additionalProperties:{type:"string"},description:"Имя компонента → текстовый глиф-бейдж."}}},styles:{type:"object",additionalProperties:!1,description:"Как подключаются стили кита и какими классами разрешено стилизовать его компоненты.",properties:{mode:{enum:["tokens","standalone"],description:"tokens — кит использует стандартный словарь токенов, достаточно переобъявить их значения на контейнере превью; standalone — кит поставляет самодостаточный CSS со своими утилитами."},href:{type:"string",description:"URL самодостаточного CSS (только для standalone)."},classNames:{type:"array",description:"Словарь классов для автодополнения поля className в инспекторе, разбитый на группы. Группы нужны не только для UI: запись компонента ссылается на их id в classGroups, ограничивая, чем её разрешено стилизовать. Отсутствие секции = кит подсказок не поставляет и поле остаётся свободным вводом — своего списка билдер НЕ держит (для standalone-кита Tailwind-подсказки были бы просто неверны).",items:{type:"object",required:["id","label","classes"],additionalProperties:!1,properties:{id:{type:"string",pattern:"^[a-z][a-z0-9-]*$",description:"СТАБИЛЬНЫЙ идентификатор группы: на него ссылаются classGroups записи и classGroupsByRole. Переименование — ломающее изменение каталога, а не косметика."},label:{type:"string",minLength:1,description:"Человекочитаемая подпись группы."},classes:{type:"array",items:{type:"string",minLength:1},description:"Классы группы в курируемом порядке — он же порядок подсказок."}}}},classGroupsByRole:{type:"object",description:"Дефолт «чем разрешено стилизовать» по роли записи; точечный classGroups записи это правило перекрывает. Типовой смысл: field — только расположение поля в форме (отступы), вид задаёт дизайн-система; container/array — '*'.",additionalProperties:{oneOf:[{const:"*",description:"Ограничений нет — доступен весь словарь."},{type:"array",items:{type:"string",minLength:1}}]}}}},codegen:{type:"object",additionalProperties:!1,description:"Что подставлять в сгенерированный registry.ts при экспорте примера.",properties:{importSpecifier:{type:"string",description:"Спецификатор пакета в import { … } from '…'. По умолчанию — kit.package."},needsShim:{type:"array",items:{type:"string"},description:"Символы, которым нужен shim вместо прямого импорта."}}}}}},wa={kitAdapter:{anyOf:[{type:"null"},{type:"object",required:["symbol"],additionalProperties:!1,properties:{symbol:{type:"string",minLength:1,description:"Имя экспорта в namespace кита."},subpath:{type:"string",description:"Subpath кита, за которым лежит символ."}}}]}},ja={$schema:ha,$id:ba,title:Sa,description:va,type:Pa,required:xa,additionalProperties:Ca,properties:_a,definitions:wa},ka="../../projects/reformer-builder/src/catalog/component-catalog.schema.json",$a="2.0",Ta={styles:{classNames:[{id:"layout",label:"Раскладка",classes:["block","inline-block","inline","flex","inline-flex","grid","inline-grid","hidden","contents","table","overflow-auto","overflow-hidden","overflow-scroll","overflow-visible","overflow-x-auto","overflow-y-auto","overflow-x-hidden","overflow-y-hidden"]},{id:"flex",label:"Флексбокс и выравнивание",classes:["flex-row","flex-row-reverse","flex-col","flex-col-reverse","flex-wrap","flex-nowrap","flex-1","flex-auto","flex-initial","flex-none","grow","grow-0","shrink","shrink-0","items-start","items-center","items-end","items-stretch","items-baseline","justify-start","justify-center","justify-end","justify-between","justify-around","justify-evenly","self-start","self-center","self-end","self-stretch","self-auto","content-start","content-center","content-between","place-items-center","place-content-center"]},{id:"grid",label:"Грид",classes:["grid-cols-1","grid-cols-2","grid-cols-3","grid-cols-4","grid-cols-5","grid-cols-6","grid-cols-12","col-span-1","col-span-2","col-span-3","col-span-full","row-span-1","row-span-2","grid-flow-row","grid-flow-col","auto-cols-fr","auto-rows-fr"]},{id:"spacing",label:"Отступы",classes:["gap-0","gap-0.5","gap-1","gap-1.5","gap-2","gap-2.5","gap-3","gap-4","gap-5","gap-6","gap-8","gap-10","gap-12","gap-16","gap-20","gap-24","gap-x-0","gap-x-0.5","gap-x-1","gap-x-1.5","gap-x-2","gap-x-2.5","gap-x-3","gap-x-4","gap-x-5","gap-x-6","gap-x-8","gap-x-10","gap-x-12","gap-x-16","gap-x-20","gap-x-24","gap-y-0","gap-y-0.5","gap-y-1","gap-y-1.5","gap-y-2","gap-y-2.5","gap-y-3","gap-y-4","gap-y-5","gap-y-6","gap-y-8","gap-y-10","gap-y-12","gap-y-16","gap-y-20","gap-y-24","p-0","p-0.5","p-1","p-1.5","p-2","p-2.5","p-3","p-4","p-5","p-6","p-8","p-10","p-12","p-16","p-20","p-24","px-0","px-0.5","px-1","px-1.5","px-2","px-2.5","px-3","px-4","px-5","px-6","px-8","px-10","px-12","px-16","px-20","px-24","py-0","py-0.5","py-1","py-1.5","py-2","py-2.5","py-3","py-4","py-5","py-6","py-8","py-10","py-12","py-16","py-20","py-24","pt-0","pt-0.5","pt-1","pt-1.5","pt-2","pt-2.5","pt-3","pt-4","pt-5","pt-6","pt-8","pt-10","pt-12","pt-16","pt-20","pt-24","pr-0","pr-0.5","pr-1","pr-1.5","pr-2","pr-2.5","pr-3","pr-4","pr-5","pr-6","pr-8","pr-10","pr-12","pr-16","pr-20","pr-24","pb-0","pb-0.5","pb-1","pb-1.5","pb-2","pb-2.5","pb-3","pb-4","pb-5","pb-6","pb-8","pb-10","pb-12","pb-16","pb-20","pb-24","pl-0","pl-0.5","pl-1","pl-1.5","pl-2","pl-2.5","pl-3","pl-4","pl-5","pl-6","pl-8","pl-10","pl-12","pl-16","pl-20","pl-24","m-0","m-0.5","m-1","m-1.5","m-2","m-2.5","m-3","m-4","m-5","m-6","m-8","m-10","m-12","m-16","m-20","m-24","mx-0","mx-0.5","mx-1","mx-1.5","mx-2","mx-2.5","mx-3","mx-4","mx-5","mx-6","mx-8","mx-10","mx-12","mx-16","mx-20","mx-24","my-0","my-0.5","my-1","my-1.5","my-2","my-2.5","my-3","my-4","my-5","my-6","my-8","my-10","my-12","my-16","my-20","my-24","mt-0","mt-0.5","mt-1","mt-1.5","mt-2","mt-2.5","mt-3","mt-4","mt-5","mt-6","mt-8","mt-10","mt-12","mt-16","mt-20","mt-24","mr-0","mr-0.5","mr-1","mr-1.5","mr-2","mr-2.5","mr-3","mr-4","mr-5","mr-6","mr-8","mr-10","mr-12","mr-16","mr-20","mr-24","mb-0","mb-0.5","mb-1","mb-1.5","mb-2","mb-2.5","mb-3","mb-4","mb-5","mb-6","mb-8","mb-10","mb-12","mb-16","mb-20","mb-24","ml-0","ml-0.5","ml-1","ml-1.5","ml-2","ml-2.5","ml-3","ml-4","ml-5","ml-6","ml-8","ml-10","ml-12","ml-16","ml-20","ml-24","mx-auto","my-auto","ml-auto","mr-auto","space-x-0","space-x-0.5","space-x-1","space-x-1.5","space-x-2","space-x-2.5","space-x-3","space-x-4","space-x-5","space-x-6","space-x-8","space-x-10","space-x-12","space-x-16","space-x-20","space-x-24","space-y-0","space-y-0.5","space-y-1","space-y-1.5","space-y-2","space-y-2.5","space-y-3","space-y-4","space-y-5","space-y-6","space-y-8","space-y-10","space-y-12","space-y-16","space-y-20","space-y-24"]},{id:"sizing",label:"Размеры",classes:["w-full","w-auto","w-screen","w-fit","w-min","w-max","w-px","w-1/2","w-1/3","w-2/3","w-1/4","w-3/4","w-0","w-0.5","w-1","w-1.5","w-2","w-2.5","w-3","w-4","w-5","w-6","w-8","w-10","w-12","w-16","w-20","w-24","h-full","h-auto","h-screen","h-fit","h-min","h-max","h-px","h-0","h-0.5","h-1","h-1.5","h-2","h-2.5","h-3","h-4","h-5","h-6","h-8","h-10","h-12","h-16","h-20","h-24","min-w-0","min-w-full","min-h-0","min-h-full","min-h-screen","max-w-none","max-w-xs","max-w-sm","max-w-md","max-w-lg","max-w-xl","max-w-2xl","max-w-full","max-w-screen-md","max-h-full","max-h-screen","size-full","size-4","size-5","size-6","size-8","size-10"]},{id:"position",label:"Позиционирование",classes:["relative","absolute","fixed","sticky","static","inset-0","inset-x-0","inset-y-0","top-0","right-0","bottom-0","left-0","z-0","z-10","z-20","z-30","z-40","z-50"]},{id:"typography",label:"Типографика",classes:["text-xs","text-sm","text-base","text-lg","text-xl","text-2xl","text-3xl","text-4xl","font-normal","font-medium","font-semibold","font-bold","font-light","font-mono","italic","uppercase","lowercase","capitalize","normal-case","truncate","text-balance","text-pretty","text-left","text-center","text-right","text-justify","leading-none","leading-tight","leading-snug","leading-normal","leading-relaxed","leading-loose","tracking-tight","tracking-normal","tracking-wide","tracking-wider","underline","line-through","no-underline","whitespace-normal","whitespace-nowrap","whitespace-pre","tabular-nums","antialiased"]},{id:"borders",label:"Границы и скругления",classes:["border","border-0","border-2","border-4","border-t","border-r","border-b","border-l","rounded-none","rounded-sm","rounded","rounded-md","rounded-lg","rounded-xl","rounded-2xl","rounded-3xl","rounded-full","rounded-t-md","rounded-b-md","rounded-l-md","rounded-r-md"]},{id:"effects",label:"Эффекты",classes:["shadow-none","shadow-sm","shadow","shadow-md","shadow-lg","shadow-xl","shadow-2xl","shadow-inner","opacity-0","opacity-50","opacity-70","opacity-90","opacity-100","ring","ring-1","ring-2","backdrop-blur"]},{id:"color",label:"Цвета и токены темы",classes:["bg-background","bg-foreground","bg-card","bg-card-foreground","bg-popover","bg-popover-foreground","bg-primary","bg-primary-foreground","bg-secondary","bg-secondary-foreground","bg-muted","bg-muted-foreground","bg-accent","bg-accent-foreground","bg-destructive","bg-border","bg-input","bg-ring","bg-chart-1","bg-chart-2","bg-chart-3","bg-chart-4","bg-chart-5","bg-sidebar","bg-sidebar-foreground","bg-sidebar-primary","bg-sidebar-primary-foreground","bg-sidebar-accent","bg-sidebar-accent-foreground","bg-sidebar-border","bg-sidebar-ring","text-background","text-foreground","text-card","text-card-foreground","text-popover","text-popover-foreground","text-primary","text-primary-foreground","text-secondary","text-secondary-foreground","text-muted","text-muted-foreground","text-accent","text-accent-foreground","text-destructive","text-border","text-input","text-ring","text-chart-1","text-chart-2","text-chart-3","text-chart-4","text-chart-5","text-sidebar","text-sidebar-foreground","text-sidebar-primary","text-sidebar-primary-foreground","text-sidebar-accent","text-sidebar-accent-foreground","text-sidebar-border","text-sidebar-ring","border-border","border-input","border-ring","border-destructive","border-primary","border-muted","ring-ring","ring-primary","ring-destructive","text-white","text-black","border-transparent","bg-slate-400","bg-slate-500","bg-slate-600","bg-slate-700","bg-gray-400","bg-gray-500","bg-gray-600","bg-gray-700","bg-zinc-400","bg-zinc-500","bg-zinc-600","bg-zinc-700","bg-red-400","bg-red-500","bg-red-600","bg-red-700","bg-orange-400","bg-orange-500","bg-orange-600","bg-orange-700","bg-amber-400","bg-amber-500","bg-amber-600","bg-amber-700","bg-yellow-400","bg-yellow-500","bg-yellow-600","bg-yellow-700","bg-green-400","bg-green-500","bg-green-600","bg-green-700","bg-emerald-400","bg-emerald-500","bg-emerald-600","bg-emerald-700","bg-blue-400","bg-blue-500","bg-blue-600","bg-blue-700","bg-indigo-400","bg-indigo-500","bg-indigo-600","bg-indigo-700","bg-violet-400","bg-violet-500","bg-violet-600","bg-violet-700","text-slate-400","text-slate-500","text-slate-600","text-slate-700","text-gray-400","text-gray-500","text-gray-600","text-gray-700","text-zinc-400","text-zinc-500","text-zinc-600","text-zinc-700","text-red-400","text-red-500","text-red-600","text-red-700","text-orange-400","text-orange-500","text-orange-600","text-orange-700","text-amber-400","text-amber-500","text-amber-600","text-amber-700","text-yellow-400","text-yellow-500","text-yellow-600","text-yellow-700","text-green-400","text-green-500","text-green-600","text-green-700","text-emerald-400","text-emerald-500","text-emerald-600","text-emerald-700","text-blue-400","text-blue-500","text-blue-600","text-blue-700","text-indigo-400","text-indigo-500","text-indigo-600","text-indigo-700","text-violet-400","text-violet-500","text-violet-600","text-violet-700"]},{id:"interactivity",label:"Интерактивность",classes:["cursor-pointer","cursor-default","cursor-not-allowed","select-none","select-text","pointer-events-none","pointer-events-auto","transition","transition-all","transition-colors","duration-150","duration-200","duration-300","ease-in-out"]}],classGroupsByRole:{field:["spacing"],container:"*",array:"*"}}},Na=JSON.parse(`[{"name":"Accordion","role":"container","propsSchema":{"type":"object","additionalProperties":false,"x-registryName":"Accordion","properties":{"className":{"type":"string","description":"CSS-класс контейнера аккордеона (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}},"type":{"type":"string","enum":["single","multiple"],"description":"Режим раскрытия: одна секция за раз (single) или несколько (multiple).","x-doc":{"group":"Behavior","type":"'single' | 'multiple'","kind":"enum"}},"collapsible":{"type":"boolean","description":"В режиме single разрешить закрыть открытую секцию (не оставлять всегда одну открытой).","x-doc":{"group":"Behavior","type":"boolean","kind":"boolean"}},"defaultValue":{"type":"string","description":"Значение(-я) секции, открытой по умолчанию (uncontrolled).","x-doc":{"group":"Behavior","type":"string | string[]"}},"disabled":{"type":"boolean","description":"Заблокировать взаимодействие со всеми секциями.","x-doc":{"group":"Behavior","type":"boolean","kind":"boolean"}},"orientation":{"type":"string","enum":["vertical","horizontal"],"default":"vertical","description":"Ориентация раскладки секций.","x-doc":{"group":"Behavior","type":"'vertical' | 'horizontal'","kind":"enum"}}}}},{"name":"AccordionContent","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Accordion"},{"name":"AccordionItem","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}},"value":{"type":"string","description":"Значение секции — по нему Accordion её открывает.","x-doc":{"group":"Control","type":"string"}}}},"compoundParent":"Accordion"},{"name":"AccordionTrigger","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Accordion"},{"name":"Alert","role":"container","propsSchema":{"type":"object","additionalProperties":false,"x-registryName":"Alert","properties":{"className":{"type":"string","description":"CSS-класс контейнера алерта (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}},"variant":{"type":"string","enum":["default","destructive"],"default":"default","description":"Визуальный тон алерта.","x-doc":{"group":"Behavior","type":"'default' | 'destructive'","kind":"enum"}}}}},{"name":"AlertDescription","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Alert"},{"name":"AlertDialog","role":"container","propsSchema":{"type":"object","additionalProperties":true,"x-registryName":"AlertDialog","properties":{"defaultOpen":{"type":"boolean","default":false,"description":"Открыт ли диалог изначально (неуправляемый режим).","x-doc":{"group":"State","type":"boolean"}}}}},{"name":"AlertTitle","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Alert"},{"name":"AspectRatio","role":"container","propsSchema":{"type":"object","additionalProperties":true,"x-registryName":"AspectRatio","properties":{"ratio":{"type":"number","default":1,"description":"Соотношение сторон (ширина / высота), напр. 16/9 ≈ 1.78.","x-doc":{"group":"Behavior","type":"number"}},"className":{"type":"string","description":"Доп. CSS-класс (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"Attachment","role":"container","propsSchema":{"type":"object","additionalProperties":true,"x-registryName":"Attachment","properties":{"state":{"type":"string","enum":["idle","uploading","processing","error","done"],"default":"done","description":"Состояние загрузки/обработки файла — влияет на стили рамки и анимацию.","x-doc":{"group":"Behavior","type":"'idle' | 'uploading' | 'processing' | 'error' | 'done'","kind":"enum"}},"size":{"type":"string","enum":["default","sm","xs"],"default":"default","description":"Размер чипа (отступы и типографика).","x-doc":{"group":"Behavior","type":"'default' | 'sm' | 'xs'","kind":"enum"}},"orientation":{"type":"string","enum":["horizontal","vertical"],"default":"horizontal","description":"Ориентация: горизонтальный чип или вертикальная карточка.","x-doc":{"group":"Behavior","type":"'horizontal' | 'vertical'","kind":"enum"}},"className":{"type":"string","description":"Доп. CSS-класс (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"AttachmentAction","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Attachment"},{"name":"AttachmentActions","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Attachment"},{"name":"AttachmentContent","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Attachment"},{"name":"AttachmentDescription","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Attachment"},{"name":"AttachmentGroup","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Attachment"},{"name":"AttachmentMedia","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Attachment"},{"name":"AttachmentTitle","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Attachment"},{"name":"AttachmentTrigger","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Attachment"},{"name":"Avatar","role":"container","propsSchema":{"type":"object","additionalProperties":false,"x-registryName":"Avatar","properties":{"className":{"type":"string","description":"CSS-класс аватара (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}},"size":{"type":"string","enum":["default","sm","lg"],"default":"default","description":"Размер аватара: sm (24px), default (32px), lg (40px).","x-doc":{"group":"Behavior","type":"'default' | 'sm' | 'lg'","kind":"enum"}}}}},{"name":"AvatarBadge","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Avatar"},{"name":"AvatarFallback","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Avatar"},{"name":"AvatarGroup","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Avatar"},{"name":"AvatarGroupCount","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Avatar"},{"name":"AvatarImage","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}},"src":{"type":"string","description":"URL изображения.","x-doc":{"group":"Control","type":"string"}},"alt":{"type":"string","description":"Альтернативный текст.","x-doc":{"group":"Control","type":"string"}}}},"compoundParent":"Avatar"},{"name":"Badge","role":"container","propsSchema":{"type":"object","additionalProperties":false,"x-registryName":"Badge","properties":{"className":{"type":"string","description":"CSS-класс бейджа (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}},"variant":{"type":"string","enum":["default","secondary","destructive","outline","ghost","link"],"default":"default","description":"Визуальный вариант бейджа.","x-doc":{"group":"Behavior","type":"'default' | 'secondary' | 'destructive' | 'outline' | 'ghost' | 'link'","kind":"enum"}}}}},{"name":"Box","role":"container","propsSchema":{"type":"object","additionalProperties":false,"x-registryName":"Box","properties":{"className":{"type":"string","description":"CSS-класс layout-контейнера (atomic CSS / Tailwind: flex, grid, gap-*).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"Breadcrumb","role":"container","propsSchema":{"type":"object","additionalProperties":true,"x-registryName":"Breadcrumb","properties":{"className":{"type":"string","description":"Доп. CSS-класс (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"BreadcrumbEllipsis","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Breadcrumb"},{"name":"BreadcrumbItem","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Breadcrumb"},{"name":"BreadcrumbLink","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}},"href":{"type":"string","description":"URL ссылки.","x-doc":{"group":"Control","type":"string"}}}},"compoundParent":"Breadcrumb"},{"name":"BreadcrumbList","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Breadcrumb"},{"name":"BreadcrumbPage","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Breadcrumb"},{"name":"BreadcrumbSeparator","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Breadcrumb"},{"name":"Bubble","role":"container","propsSchema":{"type":"object","additionalProperties":true,"x-registryName":"Bubble","properties":{"variant":{"type":"string","enum":["default","secondary","muted","tinted","outline","ghost","destructive"],"default":"default","description":"Вариант оформления пузыря.","x-doc":{"group":"Behavior","type":"'default' | 'secondary' | 'muted' | 'tinted' | 'outline' | 'ghost' | 'destructive'","kind":"enum"}},"align":{"type":"string","enum":["start","end"],"default":"start","description":"Сторона выравнивания пузыря (start — слева, end — справа).","x-doc":{"group":"Behavior","type":"'start' | 'end'","kind":"enum"}},"className":{"type":"string","description":"Доп. CSS-класс (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"BubbleContent","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Bubble"},{"name":"BubbleGroup","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Bubble"},{"name":"BubbleReactions","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Bubble"},{"name":"Button","role":"container","propsSchema":{"type":"object","additionalProperties":false,"x-registryName":"Button","properties":{"className":{"type":"string","description":"Доп. CSS-класс кнопки (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}},"variant":{"type":"string","enum":["default","destructive","outline","secondary","ghost","link"],"default":"default","description":"Визуальный вариант кнопки (cva).","x-doc":{"group":"Behavior","type":"'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link'","kind":"enum"}},"size":{"type":"string","enum":["default","xs","sm","lg","icon","icon-xs","icon-sm","icon-lg"],"default":"default","description":"Размер кнопки (cva); icon-* — квадратные для иконок без текста.","x-doc":{"group":"Behavior","type":"'default' | 'xs' | 'sm' | 'lg' | 'icon' | 'icon-xs' | 'icon-sm' | 'icon-lg'","kind":"enum"}},"type":{"type":"string","enum":["button","submit","reset"],"description":"HTML-тип кнопки: button | submit | reset.","x-doc":{"group":"Behavior","type":"'button' | 'submit' | 'reset'","kind":"enum"}},"disabled":{"type":"boolean","description":"Заблокировать кнопку.","x-doc":{"group":"Behavior","type":"boolean","kind":"boolean"}}}}},{"name":"ButtonGroup","role":"container","propsSchema":{"type":"object","additionalProperties":false,"x-registryName":"ButtonGroup","properties":{"className":{"type":"string","description":"CSS-класс группы кнопок (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}},"orientation":{"type":"string","enum":["horizontal","vertical"],"default":"horizontal","description":"Ориентация группы: горизонтальная (по умолчанию) или вертикальная (cva).","x-doc":{"group":"Behavior","type":"'horizontal' | 'vertical'","kind":"enum"}}}}},{"name":"ButtonGroupSeparator","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"ButtonGroup"},{"name":"ButtonGroupText","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"ButtonGroup"},{"name":"Calendar","role":"field","propsSchema":{"type":"object","properties":{"label":{"type":"string","description":"Подпись поля (рендерит FormField.Label).","x-doc":{"group":"Textfield","type":"string"}},"required":{"type":"boolean","default":false,"description":"Маркер «*» у метки + aria-required.","x-doc":{"group":"State","type":"boolean"}},"description":{"type":"string","description":"Пояснение под полем (shadcn FieldDescription).","x-doc":{"group":"Textfield","type":"string"}},"testId":{"type":"string","description":"data-testid для e2e (meta-проп; в DOM примитива не течёт).","x-doc":{"group":"Behavior","type":"string","kind":"readonly"}},"mode":{"type":"string","enum":["single"],"default":"single","description":"Режим выбора. Field-версия — только single (одна дата, value: Date | null).","x-doc":{"group":"Behavior","type":"'single'","kind":"enum"}},"captionLayout":{"type":"string","enum":["label","dropdown","dropdown-months","dropdown-years"],"default":"label","description":"Шапка месяца: статичная подпись или дропдауны выбора месяца/года.","x-doc":{"group":"Behavior","type":"'label' | 'dropdown' | 'dropdown-months' | 'dropdown-years'","kind":"enum"}},"showOutsideDays":{"type":"boolean","default":true,"description":"Показывать дни соседних месяцев в первой и последней неделе.","x-doc":{"group":"Behavior","type":"boolean"}},"className":{"type":"string","description":"Доп. CSS-класс корневого элемента.","x-doc":{"group":"Control","type":"string","kind":"readonly"}}},"additionalProperties":false,"x-runtimeProps":{"value":{"group":"Control","type":"Date | null","description":"Выбранная дата. null — ничего не выбрано."},"onChange":{"group":"Control","type":"(value: Date | null) => void","description":"Выбор даты. Повторный клик по выбранной дате сбрасывает значение в null."},"onBlur":{"group":"Control","type":"() => void","kind":"readonly","description":"Отметка touched. Форма подставляет control.markAsTouched."},"disabled":{"group":"State","type":"boolean","kind":"boolean","default":false,"description":"Блокировка поля. Задаётся через control.disable()/enable(), НЕ через componentProps: FormFieldControl.tsx:104-115 ставит disabled ПОСЛЕ спреда componentProps, поэтому componentProps.disabled мёртв."}}}},{"name":"Card","role":"container","propsSchema":{"type":"object","additionalProperties":false,"x-registryName":"Card","properties":{"className":{"type":"string","description":"CSS-класс карточки-контейнера (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"CardAction","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Card"},{"name":"CardContent","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Card"},{"name":"CardDescription","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Card"},{"name":"CardFooter","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Card"},{"name":"CardHeader","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Card"},{"name":"CardTitle","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Card"},{"name":"Carousel","role":"container","propsSchema":{"type":"object","additionalProperties":true,"x-registryName":"Carousel","properties":{"orientation":{"type":"string","enum":["horizontal","vertical"],"default":"horizontal","description":"Ориентация прокрутки карусели.","x-doc":{"group":"Behavior","type":"'horizontal' | 'vertical'","kind":"enum"}},"className":{"type":"string","description":"Доп. CSS-класс (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"CarouselContent","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Carousel"},{"name":"CarouselItem","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Carousel"},{"name":"CarouselNext","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Carousel"},{"name":"CarouselPrevious","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Carousel"},{"name":"Chart","role":"container","propsSchema":{"type":"object","additionalProperties":true,"x-registryName":"Chart","properties":{"className":{"type":"string","description":"Доп. CSS-класс (Tailwind) — обычно задаёт высоту/ширину графика.","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"Checkbox","role":"field","propsSchema":{"type":"object","properties":{"label":{"type":"string","description":"Подпись справа от чекбокса (inline-раскладка). Рендерит сам контрол.","x-doc":{"group":"Textfield","type":"string"}},"required":{"type":"boolean","default":false,"description":"Маркер «*» у метки + aria-required.","x-doc":{"group":"State","type":"boolean"}},"description":{"type":"string","description":"Пояснение под полем (shadcn FieldDescription).","x-doc":{"group":"Textfield","type":"string"}},"testId":{"type":"string","description":"data-testid для e2e (meta-проп; в DOM примитива не течёт).","x-doc":{"group":"Behavior","type":"string","kind":"readonly"}},"className":{"type":"string","description":"Доп. CSS-класс контрола (CheckboxPrimitive.Root).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}},"additionalProperties":false,"x-runtimeProps":{"value":{"group":"Control","type":"boolean","description":"Состояние чекбокса. undefined/null трактуется как false."},"onChange":{"group":"Control","type":"(value: boolean) => void","description":"Изменение. indeterminate приводится к false."},"onBlur":{"group":"Control","type":"() => void","kind":"readonly","description":"Отметка touched. Форма подставляет control.markAsTouched."},"disabled":{"group":"State","type":"boolean","kind":"boolean","default":false,"description":"Блокировка поля. Задаётся через control.disable()/enable(), НЕ через componentProps: FormFieldControl.tsx:104-115 ставит disabled ПОСЛЕ спреда componentProps, поэтому componentProps.disabled мёртв."}}}},{"name":"Collapsible","role":"container","propsSchema":{"type":"object","additionalProperties":false,"x-registryName":"Collapsible","properties":{"className":{"type":"string","description":"CSS-класс контейнера collapsible (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}},"defaultOpen":{"type":"boolean","description":"Раскрыт ли collapsible по умолчанию (uncontrolled).","x-doc":{"group":"Behavior","type":"boolean","kind":"boolean"}},"disabled":{"type":"boolean","description":"Заблокировать раскрытие/сворачивание.","x-doc":{"group":"Behavior","type":"boolean","kind":"boolean"}}}}},{"name":"CollapsibleContent","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Collapsible"},{"name":"CollapsibleTrigger","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Collapsible"},{"name":"Combobox","role":"field","propsSchema":{"type":"object","properties":{"label":{"type":"string","description":"Подпись поля (рендерит FormField.Label).","x-doc":{"group":"Textfield","type":"string"}},"required":{"type":"boolean","default":false,"description":"Маркер «*» у метки + aria-required.","x-doc":{"group":"State","type":"boolean"}},"description":{"type":"string","description":"Пояснение под полем (shadcn FieldDescription).","x-doc":{"group":"Textfield","type":"string"}},"testId":{"type":"string","description":"data-testid для e2e (meta-проп; в DOM примитива не течёт).","x-doc":{"group":"Behavior","type":"string","kind":"readonly"}},"className":{"type":"string","description":"Доп. CSS-класс триггера.","x-doc":{"group":"Control","type":"string","kind":"readonly"}},"options":{"type":"array","items":{"type":"object","required":["value","label"],"additionalProperties":false,"properties":{"value":{"type":"string"},"label":{"type":"string"}}},"description":"Список опций { value, label }. Поиск идёт по label.","x-doc":{"group":"Options","type":"Array<{ value; label }>","kind":"readonly"}},"placeholder":{"type":"string","default":"Select an option...","description":"Подсказка в триггере, пока ничего не выбрано.","x-doc":{"group":"Textfield","type":"string"}},"searchPlaceholder":{"type":"string","default":"Search...","description":"Подсказка в поле поиска.","x-doc":{"group":"Textfield","type":"string"}},"emptyText":{"type":"string","default":"No options found.","description":"Текст пустого состояния (ничего не найдено).","x-doc":{"group":"Textfield","type":"string"}},"clearable":{"type":"boolean","default":false,"description":"Показывать крестик очистки (сброс в null); повторный выбор опции тоже сбрасывает.","x-doc":{"group":"Behavior","type":"boolean"}},"creatable":{"type":"boolean","default":false,"description":"Разрешить ввести своё значение: при отсутствии совпадения — пункт «Создать «…»» (эмитит введённое как value).","x-doc":{"group":"Behavior","type":"boolean"}}},"additionalProperties":false,"x-runtimeProps":{"value":{"group":"Control","type":"string | null","description":"Выбранное значение (option.value). null — ничего не выбрано."},"onChange":{"group":"Control","type":"(value: string | null) => void","description":"Выбор; при очистке приходит null."},"onBlur":{"group":"Control","type":"() => void","kind":"readonly","description":"Отметка touched. Форма подставляет control.markAsTouched."},"disabled":{"group":"State","type":"boolean","kind":"boolean","default":false,"description":"Блокировка поля. Задаётся через control.disable()/enable(), НЕ через componentProps: FormFieldControl.tsx:104-115 ставит disabled ПОСЛЕ спреда componentProps, поэтому componentProps.disabled мёртв."}}}},{"name":"Command","role":"container","propsSchema":{"type":"object","additionalProperties":true,"x-registryName":"Command","properties":{"shouldFilter":{"type":"boolean","default":true,"description":"Авто-фильтрация и сортировка по поисковому запросу.","x-doc":{"group":"Behavior","type":"boolean"}},"loop":{"type":"boolean","default":false,"description":"Зацикливать навигацию стрелками (с конца — в начало).","x-doc":{"group":"Behavior","type":"boolean"}},"disablePointerSelection":{"type":"boolean","default":false,"description":"Отключить выбор пункта наведением мыши.","x-doc":{"group":"Behavior","type":"boolean"}},"vimBindings":{"type":"boolean","default":true,"description":"Vim-хоткеи навигации (ctrl+n/j/p/k).","x-doc":{"group":"Behavior","type":"boolean"}},"className":{"type":"string","description":"Доп. CSS-класс (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"ContextMenu","role":"container","propsSchema":{"type":"object","additionalProperties":true,"x-registryName":"ContextMenu","properties":{"dir":{"type":"string","enum":["ltr","rtl"],"default":"ltr","description":"Направление чтения — влияет на раскладку и навигацию с клавиатуры.","x-doc":{"group":"Behavior","type":"'ltr' | 'rtl'","kind":"enum"}},"modal":{"type":"boolean","default":true,"description":"Модальный режим — блокирует взаимодействие с фоном при открытом меню.","x-doc":{"group":"Behavior","type":"boolean"}}}}},{"name":"DatePicker","role":"field","propsSchema":{"type":"object","properties":{"label":{"type":"string","description":"Подпись поля (рендерит FormField.Label).","x-doc":{"group":"Textfield","type":"string"}},"required":{"type":"boolean","default":false,"description":"Маркер «*» у метки + aria-required.","x-doc":{"group":"State","type":"boolean"}},"description":{"type":"string","description":"Пояснение под полем (shadcn FieldDescription).","x-doc":{"group":"Textfield","type":"string"}},"testId":{"type":"string","description":"data-testid для e2e (meta-проп; в DOM примитива не течёт).","x-doc":{"group":"Behavior","type":"string","kind":"readonly"}},"placeholder":{"type":"string","default":"Выберите дату","description":"Текст кнопки-триггера, когда дата не выбрана.","x-doc":{"group":"Textfield","type":"string"}},"dateFormat":{"type":"string","default":"PPP","description":"Формат отображения выбранной даты — токены date-fns (напр. dd.MM.yyyy).","x-doc":{"group":"Behavior","type":"string"}},"className":{"type":"string","description":"Доп. CSS-класс кнопки-триггера.","x-doc":{"group":"Control","type":"string","kind":"readonly"}}},"additionalProperties":false,"x-runtimeProps":{"value":{"group":"Control","type":"Date | null","description":"Выбранная дата. null — ничего не выбрано."},"onChange":{"group":"Control","type":"(value: Date | null) => void","description":"Выбор даты в календаре. Повторный клик по выбранной дате сбрасывает в null."},"onBlur":{"group":"Control","type":"() => void","kind":"readonly","description":"Отметка touched. Форма подставляет control.markAsTouched."},"disabled":{"group":"State","type":"boolean","kind":"boolean","default":false,"description":"Блокировка поля. Задаётся через control.disable()/enable(), НЕ через componentProps: FormFieldControl.tsx:104-115 ставит disabled ПОСЛЕ спреда componentProps, поэтому componentProps.disabled мёртв."}}}},{"name":"Dialog","role":"container","propsSchema":{"type":"object","additionalProperties":true,"x-registryName":"Dialog","properties":{"defaultOpen":{"type":"boolean","default":false,"description":"Открыт ли диалог изначально (неуправляемый режим).","x-doc":{"group":"State","type":"boolean"}},"modal":{"type":"boolean","default":true,"description":"Модальный режим — блокирует взаимодействие с фоном.","x-doc":{"group":"Behavior","type":"boolean"}}}}},{"name":"Drawer","role":"container","propsSchema":{"type":"object","additionalProperties":true,"x-registryName":"Drawer","properties":{"direction":{"type":"string","enum":["top","bottom","left","right"],"default":"bottom","description":"Сторона появления шторки.","x-doc":{"group":"Behavior","type":"'top' | 'bottom' | 'left' | 'right'","kind":"enum"}},"defaultOpen":{"type":"boolean","default":false,"description":"Открыта ли шторка изначально (неуправляемый режим).","x-doc":{"group":"State","type":"boolean"}},"modal":{"type":"boolean","default":true,"description":"Модальный режим — блокирует взаимодействие с фоном.","x-doc":{"group":"Behavior","type":"boolean"}},"dismissible":{"type":"boolean","default":true,"description":"Можно ли закрыть свайпом/кликом по фону.","x-doc":{"group":"Behavior","type":"boolean"}},"handleOnly":{"type":"boolean","default":false,"description":"Тянуть только за «ручку», а не за весь контент.","x-doc":{"group":"Behavior","type":"boolean"}}}}},{"name":"DropdownMenu","role":"container","propsSchema":{"type":"object","additionalProperties":true,"x-registryName":"DropdownMenu","properties":{"defaultOpen":{"type":"boolean","default":false,"description":"Открыто ли меню изначально (неуправляемый режим).","x-doc":{"group":"State","type":"boolean"}},"modal":{"type":"boolean","default":true,"description":"Модальный режим — блокирует взаимодействие с фоном, пока меню открыто.","x-doc":{"group":"Behavior","type":"boolean"}},"dir":{"type":"string","enum":["ltr","rtl"],"description":"Направление чтения — влияет на раскладку и навигацию клавиатурой.","x-doc":{"group":"Behavior","type":"'ltr' | 'rtl'","kind":"enum"}}}}},{"name":"Empty","role":"container","propsSchema":{"type":"object","additionalProperties":true,"x-registryName":"Empty","properties":{"className":{"type":"string","description":"Доп. CSS-класс (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"EmptyContent","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Empty"},{"name":"EmptyDescription","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Empty"},{"name":"EmptyHeader","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Empty"},{"name":"EmptyMedia","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Empty"},{"name":"EmptyTitle","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Empty"},{"name":"FileUpload","role":"field","propsSchema":{"type":"object","properties":{"label":{"type":"string","description":"Подпись поля (рендерит FormField.Label).","x-doc":{"group":"Textfield","type":"string"}},"required":{"type":"boolean","default":false,"description":"Маркер «*» у метки + aria-required.","x-doc":{"group":"State","type":"boolean"}},"description":{"type":"string","description":"Пояснение под полем (shadcn FieldDescription).","x-doc":{"group":"Textfield","type":"string"}},"testId":{"type":"string","description":"data-testid для e2e (meta-проп; в DOM примитива не течёт).","x-doc":{"group":"Behavior","type":"string","kind":"readonly"}},"variant":{"type":"string","enum":["button","dropzone","input"],"default":"button","description":"Представление: кнопка-триггер, зона drag-and-drop или компактный инпут с кнопкой-иконкой.","x-doc":{"group":"Control","type":"'button' | 'dropzone' | 'input'"}},"placeholder":{"type":"string","description":"Видимый текст кнопки (button), зоны (dropzone) или пустого инпута (input). Подпись поля — отдельная конвенция label (рендерит FormField).","x-doc":{"group":"Textfield","type":"string"}},"invalid":{"type":"boolean","default":false,"description":"Явно пометить поле невалидным (подсветка рамки у dropzone/input). Под FormField не нужен: aria-invalid приходит от обёртки при ошибке валидации; button показывает ошибку текстом (FormField.Error).","x-doc":{"group":"State","type":"boolean"}},"hint":{"type":"string","description":"Подсказка с ограничениями («PDF, до 5 МБ, максимум 3 файла»).","x-doc":{"group":"Textfield","type":"string"}},"accept":{"type":"string","description":"Допустимые типы в синтаксисе нативного accept: \\".pdf\\", \\"image/png\\", \\"image/*\\", список через запятую. Применяется и к drag-and-drop.","x-doc":{"group":"Behavior","type":"string"}},"multiple":{"type":"boolean","default":false,"description":"Несколько файлов. При false новая селекция заменяет текущую.","x-doc":{"group":"Behavior","type":"boolean"}},"maxFiles":{"type":"number","minimum":1,"description":"Максимум файлов в списке (действует при multiple).","x-doc":{"group":"Behavior","type":"number"}},"maxFileSize":{"type":"number","minimum":0,"description":"Максимальный размер одного файла, байты.","x-doc":{"group":"Behavior","type":"number"}},"minFileSize":{"type":"number","minimum":0,"description":"Минимальный размер одного файла, байты (1 — отсев пустых).","x-doc":{"group":"Behavior","type":"number"}},"maxTotalFileSize":{"type":"number","minimum":0,"description":"Максимальный суммарный размер всех файлов, байты.","x-doc":{"group":"Behavior","type":"number"}},"preventDuplicates":{"type":"boolean","default":true,"description":"Отклонять дубликаты (совпадение имени и размера).","x-doc":{"group":"Behavior","type":"boolean"}},"allowDrop":{"type":"boolean","default":true,"description":"Принимать drag-and-drop на зоне.","x-doc":{"group":"Behavior","type":"boolean"}},"allowPaste":{"type":"boolean","default":false,"description":"Принимать файлы из буфера обмена (paste на сфокусированной зоне).","x-doc":{"group":"Behavior","type":"boolean"}},"capture":{"type":"string","enum":["user","environment"],"description":"Источник камеры для мобильного пикера (фронтальная/тыловая).","x-doc":{"group":"Behavior","type":"'user' | 'environment'"}},"autoUpload":{"type":"boolean","default":true,"description":"Автозагрузка принятых файлов (действует при заданном uploader).","x-doc":{"group":"Behavior","type":"boolean"}},"className":{"type":"string","description":"Доп. CSS-класс контейнера.","x-doc":{"group":"Control","type":"string","kind":"readonly"}}},"additionalProperties":false,"x-runtimeProps":{"value":{"group":"Control","type":"File[] | RemoteFileRef[] | null","description":"Выбранные файлы. Без uploader — File[]; с uploader — сериализуемые дескрипторы загруженных. null — пусто."},"onChange":{"group":"Control","type":"(value: File[] | RemoteFileRef[] | null) => void","description":"Изменение списка; пустой список приходит как null."},"onBlur":{"group":"Control","type":"() => void","kind":"readonly","description":"Отметка touched. Форма подставляет control.markAsTouched."},"disabled":{"group":"State","type":"boolean","kind":"boolean","default":false,"description":"Блокировка поля. Задаётся через control.disable()/enable(), НЕ через componentProps: FormFieldControl.tsx:104-115 ставит disabled ПОСЛЕ спреда componentProps, поэтому componentProps.disabled мёртв."},"uploader":{"group":"Behavior","type":"(file: File, ctx: { onProgress; signal }) => Promise<RemoteFileRef>","description":"Загрузчик immediate-режима. В JSON-форме недостижим: требует функцию — передаётся через реестр."},"onReject":{"group":"Behavior","type":"(rejections: FileRejection[]) => void","description":"Файлы, отклонённые отбором (в значение поля не попадают)."}}},"variantGroup":"FileUpload","variant":"Файлы"},{"name":"FileUploadAvatar","role":"field","propsSchema":{"type":"object","properties":{"label":{"type":"string","default":"Загрузить изображение","description":"Доступное имя зоны (aria-label).","x-doc":{"group":"Textfield","type":"string"}},"required":{"type":"boolean","default":false,"description":"Маркер «*» у метки + aria-required.","x-doc":{"group":"State","type":"boolean"}},"description":{"type":"string","description":"Пояснение под полем (shadcn FieldDescription).","x-doc":{"group":"Textfield","type":"string"}},"testId":{"type":"string","description":"data-testid для e2e (meta-проп; в DOM примитива не течёт).","x-doc":{"group":"Behavior","type":"string","kind":"readonly"}},"shape":{"type":"string","enum":["circle","square"],"default":"circle","description":"Форма превью.","x-doc":{"group":"Control","type":"'circle' | 'square'"}},"accept":{"type":"string","default":"image/*","description":"Допустимые типы в синтаксисе нативного accept.","x-doc":{"group":"Behavior","type":"string"}},"maxFileSize":{"type":"number","minimum":0,"description":"Максимальный размер файла, байты.","x-doc":{"group":"Behavior","type":"number"}},"capture":{"type":"string","enum":["user","environment"],"description":"Источник камеры для мобильного пикера.","x-doc":{"group":"Behavior","type":"'user' | 'environment'"}},"invalid":{"type":"boolean","default":false,"description":"Явно пометить поле невалидным (подсветка рамки зоны). Под FormField не нужен: aria-invalid приходит от обёртки при ошибке валидации.","x-doc":{"group":"State","type":"boolean"}},"className":{"type":"string","description":"Доп. CSS-класс контейнера.","x-doc":{"group":"Control","type":"string","kind":"readonly"}}},"additionalProperties":false,"x-runtimeProps":{"value":{"group":"Control","type":"File | RemoteFileRef | null","description":"Выбранное изображение (single). null — пусто."},"onChange":{"group":"Control","type":"(value: File | RemoteFileRef | null) => void","description":"Выбор/замена/удаление изображения."},"onBlur":{"group":"Control","type":"() => void","kind":"readonly","description":"Отметка touched. Форма подставляет control.markAsTouched."},"disabled":{"group":"State","type":"boolean","kind":"boolean","default":false,"description":"Блокировка поля. Задаётся через control.disable()/enable(), НЕ через componentProps: FormFieldControl.tsx:104-115 ставит disabled ПОСЛЕ спреда componentProps, поэтому componentProps.disabled мёртв."},"uploader":{"group":"Behavior","type":"(file: File, ctx: { onProgress; signal }) => Promise<RemoteFileRef>","description":"Загрузчик immediate-режима. В JSON-форме недостижим: требует функцию — передаётся через реестр."},"onReject":{"group":"Behavior","type":"(rejections: FileRejection[]) => void","description":"Файлы, отклонённые отбором."}}},"variantGroup":"FileUpload","variant":"Аватар"},{"name":"HoverCard","role":"container","propsSchema":{"type":"object","additionalProperties":true,"x-registryName":"HoverCard","properties":{"defaultOpen":{"type":"boolean","default":false,"description":"Открыта ли карточка изначально (неуправляемый режим).","x-doc":{"group":"State","type":"boolean"}},"openDelay":{"type":"number","default":700,"description":"Задержка (мс) перед открытием при наведении.","x-doc":{"group":"Behavior","type":"number"}},"closeDelay":{"type":"number","default":300,"description":"Задержка (мс) перед закрытием при уходе курсора.","x-doc":{"group":"Behavior","type":"number"}}}}},{"name":"Icon","role":"container","propsSchema":{"type":"object","additionalProperties":false,"x-registryName":"Icon","properties":{"iconName":{"type":"string","default":"Circle","description":"Имя иконки lucide (PascalCase, напр. Home, ArrowRight).","x-doc":{"group":"Control","type":"string"}},"size":{"type":"number","default":24,"minimum":8,"description":"Размер в пикселях.","x-doc":{"group":"Control","type":"number"}},"color":{"type":"string","description":"Цвет обводки (любой CSS-цвет; по умолчанию currentColor).","x-doc":{"group":"Control","type":"string"}},"strokeWidth":{"type":"number","default":2,"minimum":0.5,"description":"Толщина линий.","x-doc":{"group":"Behavior","type":"number"}},"className":{"type":"string","description":"Доп. CSS-класс.","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"Input","role":"field","propsSchema":{"type":"object","properties":{"label":{"type":"string","description":"Подпись поля (рендерит FormField.Label).","x-doc":{"group":"Textfield","type":"string"}},"required":{"type":"boolean","default":false,"description":"Маркер «*» у метки + aria-required.","x-doc":{"group":"State","type":"boolean"}},"description":{"type":"string","description":"Пояснение под полем (shadcn FieldDescription).","x-doc":{"group":"Textfield","type":"string"}},"testId":{"type":"string","description":"data-testid для e2e (meta-проп; в DOM примитива не течёт).","x-doc":{"group":"Behavior","type":"string","kind":"readonly"}},"type":{"type":"string","enum":["text","email","tel","url","password","number","date"],"default":"text","description":"HTML-тип input. number включает числовой буфер, остальные — строковые.","x-doc":{"group":"Textfield","type":"'text' | 'email' | 'number' | 'date' | …","kind":"enum"}},"placeholder":{"type":"string","description":"Подсказка внутри поля.","x-doc":{"group":"Textfield","type":"string"}},"min":{"type":"number","description":"Минимум (type=number). При min>=0 отрицательные значения зажимаются к 0.","x-doc":{"group":"Behavior","type":"number"}},"max":{"type":"number","description":"Максимум (type=number).","x-doc":{"group":"Behavior","type":"number"}},"step":{"type":"number","description":"Шаг (type=number).","x-doc":{"group":"Behavior","type":"number"}},"className":{"type":"string","description":"Доп. CSS-класс.","x-doc":{"group":"Control","type":"string","kind":"readonly"}}},"additionalProperties":false,"x-runtimeProps":{"value":{"group":"Control","type":"string | number | null","description":"Значение поля. Для type=number — number|null, иначе string|null."},"onChange":{"group":"Control","type":"(value: string | number | null) => void","description":"Изменение. Пустой ввод → null. Для number частичный ввод («-», «1.») не эмитится."},"onBlur":{"group":"Control","type":"() => void","kind":"readonly","description":"Отметка touched. Форма подставляет control.markAsTouched."},"disabled":{"group":"State","type":"boolean","kind":"boolean","default":false,"description":"Блокировка поля. Задаётся через control.disable()/enable(), НЕ через componentProps: FormFieldControl.tsx:104-115 ставит disabled ПОСЛЕ спреда componentProps, поэтому componentProps.disabled мёртв."}}},"variantGroup":"Input","variant":"Текст"},{"name":"InputGroup","role":"container","propsSchema":{"type":"object","additionalProperties":false,"x-registryName":"InputGroup","properties":{"className":{"type":"string","description":"CSS-класс контейнера-группы (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"InputGroupAddon","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}},"align":{"type":"string","enum":["inline-start","inline-end","block-start","block-end"],"default":"inline-start","description":"Сторона, с которой аддон прижат к контролу.","x-doc":{"group":"Control","type":"'inline-start' | 'inline-end' | 'block-start' | 'block-end'","kind":"enum"}}}},"compoundParent":"InputGroup"},{"name":"InputGroupButton","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"InputGroup"},{"name":"InputGroupInput","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"InputGroup"},{"name":"InputGroupText","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"InputGroup"},{"name":"InputGroupTextarea","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"InputGroup"},{"name":"InputMask","role":"field","propsSchema":{"type":"object","properties":{"label":{"type":"string","description":"Подпись поля (рендерит FormField.Label).","x-doc":{"group":"Textfield","type":"string"}},"required":{"type":"boolean","default":false,"description":"Маркер «*» у метки + aria-required.","x-doc":{"group":"State","type":"boolean"}},"description":{"type":"string","description":"Пояснение под полем (shadcn FieldDescription).","x-doc":{"group":"Textfield","type":"string"}},"testId":{"type":"string","description":"data-testid для e2e (meta-проп; в DOM примитива не течёт).","x-doc":{"group":"Behavior","type":"string","kind":"readonly"}},"mask":{"type":"string","description":"Шаблон маски-подсказки: '9' — цифра, прочие символы — литералы (уходят в placeholder). Напр. '+7 (999) 999-99-99'. Автовставки литералов нет — компонент только помечает формат.","x-doc":{"group":"Textfield","type":"string"}},"placeholder":{"type":"string","description":"Подсказка внутри поля. По умолчанию равна mask.","x-doc":{"group":"Textfield","type":"string"}},"className":{"type":"string","description":"Доп. CSS-класс.","x-doc":{"group":"Control","type":"string","kind":"readonly"}}},"additionalProperties":false,"x-runtimeProps":{"value":{"group":"Control","type":"string | null","description":"Значение поля. null/undefined → пустое поле."},"onChange":{"group":"Control","type":"(value: string | null) => void","description":"Изменение. Пустой ввод → null."},"onBlur":{"group":"Control","type":"() => void","kind":"readonly","description":"Отметка touched. Форма подставляет control.markAsTouched."},"disabled":{"group":"State","type":"boolean","kind":"boolean","default":false,"description":"Блокировка поля. Задаётся через control.disable()/enable(), НЕ через componentProps: FormFieldControl.tsx:104-115 ставит disabled ПОСЛЕ спреда componentProps, поэтому componentProps.disabled мёртв."}}},"variantGroup":"Input","variant":"Маска"},{"name":"InputOTP","role":"field","propsSchema":{"type":"object","properties":{"label":{"type":"string","description":"Подпись поля (рендерит FormField.Label).","x-doc":{"group":"Textfield","type":"string"}},"required":{"type":"boolean","default":false,"description":"Маркер «*» у метки + aria-required.","x-doc":{"group":"State","type":"boolean"}},"description":{"type":"string","description":"Пояснение под полем (shadcn FieldDescription).","x-doc":{"group":"Textfield","type":"string"}},"testId":{"type":"string","description":"data-testid для e2e (meta-проп; в DOM примитива не течёт).","x-doc":{"group":"Behavior","type":"string","kind":"readonly"}},"maxLength":{"type":"number","default":6,"minimum":1,"description":"Число слотов (длина кода). Дефолтная раскладка разворачивает одну группу из maxLength слотов.","x-doc":{"group":"Behavior","type":"number"}},"className":{"type":"string","description":"Доп. CSS-класс скрытого input.","x-doc":{"group":"Control","type":"string","kind":"readonly"}}},"additionalProperties":false,"x-runtimeProps":{"value":{"group":"Control","type":"string | null","description":"Набранный код. null — пусто."},"onChange":{"group":"Control","type":"(value: string | null) => void","description":"Изменение кода. Пустой ввод → null."},"onBlur":{"group":"Control","type":"() => void","kind":"readonly","description":"Отметка touched. Форма подставляет control.markAsTouched."},"disabled":{"group":"State","type":"boolean","kind":"boolean","default":false,"description":"Блокировка поля. Задаётся через control.disable()/enable(), НЕ через componentProps: FormFieldControl.tsx:104-115 ставит disabled ПОСЛЕ спреда componentProps, поэтому componentProps.disabled мёртв."}}},"variantGroup":"Input","variant":"OTP"},{"name":"InputPassword","role":"field","propsSchema":{"type":"object","properties":{"label":{"type":"string","description":"Подпись поля (рендерит FormField.Label).","x-doc":{"group":"Textfield","type":"string"}},"required":{"type":"boolean","default":false,"description":"Маркер «*» у метки + aria-required.","x-doc":{"group":"State","type":"boolean"}},"description":{"type":"string","description":"Пояснение под полем (shadcn FieldDescription).","x-doc":{"group":"Textfield","type":"string"}},"testId":{"type":"string","description":"data-testid для e2e (meta-проп; в DOM примитива не течёт).","x-doc":{"group":"Behavior","type":"string","kind":"readonly"}},"placeholder":{"type":"string","default":"Password","description":"Подсказка внутри поля.","x-doc":{"group":"Textfield","type":"string"}},"showToggle":{"type":"boolean","default":true,"description":"Показывать иконку переключения видимости (eye/eye-off). Появляется при непустом value.","x-doc":{"group":"Behavior","type":"boolean"}},"className":{"type":"string","description":"Доп. CSS-класс.","x-doc":{"group":"Control","type":"string","kind":"readonly"}}},"additionalProperties":false,"x-runtimeProps":{"value":{"group":"Control","type":"string | null","description":"Значение пароля. null/пусто — пустое поле."},"onChange":{"group":"Control","type":"(value: string | null) => void","description":"Изменение. Пустой ввод приводится к null."},"onBlur":{"group":"Control","type":"() => void","kind":"readonly","description":"Отметка touched. Форма подставляет control.markAsTouched."},"disabled":{"group":"State","type":"boolean","kind":"boolean","default":false,"description":"Блокировка поля. Задаётся через control.disable()/enable(), НЕ через componentProps: FormFieldControl.tsx:104-115 ставит disabled ПОСЛЕ спреда componentProps, поэтому componentProps.disabled мёртв."}}},"variantGroup":"Input","variant":"Пароль"},{"name":"Item","role":"container","propsSchema":{"type":"object","additionalProperties":true,"x-registryName":"Item","properties":{"variant":{"type":"string","enum":["default","outline","muted"],"default":"default","description":"Визуальный стиль: прозрачный, с рамкой или приглушённый фон.","x-doc":{"group":"Behavior","type":"'default' | 'outline' | 'muted'","kind":"enum"}},"size":{"type":"string","enum":["default","sm"],"default":"default","description":"Размер отступов и зазоров внутри строки.","x-doc":{"group":"Behavior","type":"'default' | 'sm'","kind":"enum"}},"className":{"type":"string","description":"Доп. CSS-класс (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"ItemActions","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Item"},{"name":"ItemContent","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Item"},{"name":"ItemDescription","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Item"},{"name":"ItemFooter","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Item"},{"name":"ItemGroup","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Item"},{"name":"ItemHeader","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Item"},{"name":"ItemMedia","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Item"},{"name":"ItemSeparator","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Item"},{"name":"ItemTitle","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Item"},{"name":"Kbd","role":"container","propsSchema":{"type":"object","additionalProperties":true,"x-registryName":"Kbd","properties":{"className":{"type":"string","description":"Доп. CSS-класс (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"KbdGroup","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Kbd"},{"name":"Label","role":"container","propsSchema":{"type":"object","additionalProperties":false,"x-registryName":"Label","properties":{"className":{"type":"string","description":"CSS-класс подписи (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}},"htmlFor":{"type":"string","description":"id связанного контрола (атрибут \`for\` тега \`<label>\`).","x-doc":{"group":"Behavior","type":"string"}}}}},{"name":"Marker","role":"container","propsSchema":{"type":"object","additionalProperties":true,"x-registryName":"Marker","properties":{"variant":{"type":"string","enum":["default","separator","border"],"default":"default","description":"Вариант оформления маркера.","x-doc":{"group":"Behavior","type":"'default' | 'separator' | 'border'","kind":"enum"}},"className":{"type":"string","description":"Доп. CSS-класс (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"MarkerContent","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Marker"},{"name":"MarkerIcon","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Marker"},{"name":"Menubar","role":"container","propsSchema":{"type":"object","additionalProperties":true,"x-registryName":"Menubar","properties":{"dir":{"type":"string","enum":["ltr","rtl"],"default":"ltr","description":"Направление чтения (влияет на навигацию стрелками).","x-doc":{"group":"Behavior","type":"'ltr' | 'rtl'","kind":"enum"}},"loop":{"type":"boolean","default":false,"description":"Зациклить перемещение фокуса стрелками по краям.","x-doc":{"group":"Behavior","type":"boolean"}},"className":{"type":"string","description":"Доп. CSS-класс (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"Message","role":"container","propsSchema":{"type":"object","additionalProperties":true,"x-registryName":"Message","properties":{"align":{"type":"string","enum":["start","end"],"default":"start","description":"Сторона выравнивания сообщения (end — своё сообщение справа).","x-doc":{"group":"Behavior","type":"'start' | 'end'","kind":"enum"}},"className":{"type":"string","description":"Доп. CSS-класс (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"MessageAvatar","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Message"},{"name":"MessageContent","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Message"},{"name":"MessageFooter","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Message"},{"name":"MessageGroup","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Message"},{"name":"MessageHeader","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Message"},{"name":"MessageScroller","role":"container","propsSchema":{"type":"object","additionalProperties":true,"x-registryName":"MessageScroller","properties":{"className":{"type":"string","description":"Доп. CSS-класс (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"MessageScrollerButton","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"MessageScroller"},{"name":"MessageScrollerContent","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"MessageScroller"},{"name":"MessageScrollerItem","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"MessageScroller"},{"name":"MessageScrollerViewport","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"MessageScroller"},{"name":"NativeSelect","role":"field","propsSchema":{"type":"object","properties":{"label":{"type":"string","description":"Подпись поля (рендерит FormField.Label).","x-doc":{"group":"Textfield","type":"string"}},"required":{"type":"boolean","default":false,"description":"Маркер «*» у метки + aria-required.","x-doc":{"group":"State","type":"boolean"}},"description":{"type":"string","description":"Пояснение под полем (shadcn FieldDescription).","x-doc":{"group":"Textfield","type":"string"}},"testId":{"type":"string","description":"data-testid для e2e (meta-проп; в DOM примитива не течёт).","x-doc":{"group":"Behavior","type":"string","kind":"readonly"}},"options":{"type":"array","items":{"type":"object","required":["value","label"],"additionalProperties":false,"properties":{"value":{"type":["string","number"]},"label":{"type":"string"},"group":{"type":"string"}}},"description":"Опции списка. Одинаковый group объединяется в <optgroup>.","x-doc":{"group":"Options","type":"Array<{ value; label; group? }>","kind":"readonly"}},"placeholder":{"type":"string","description":"Подсказка-опция (value=\\"\\") в начале списка.","x-doc":{"group":"Textfield","type":"string"}},"className":{"type":"string","description":"Доп. CSS-класс select.","x-doc":{"group":"Control","type":"string","kind":"readonly"}}},"additionalProperties":false,"x-runtimeProps":{"value":{"group":"Control","type":"string | null","description":"Выбранное значение (option.value как строка). Пустой выбор → null."},"onChange":{"group":"Control","type":"(value: string | null) => void","description":"Изменение. Пустой выбор (value=\\"\\") → null."},"onBlur":{"group":"Control","type":"() => void","kind":"readonly","description":"Отметка touched. Форма подставляет control.markAsTouched."},"disabled":{"group":"State","type":"boolean","kind":"boolean","default":false,"description":"Блокировка поля. Задаётся через control.disable()/enable(), НЕ через componentProps: FormFieldControl.tsx:104-115 ставит disabled ПОСЛЕ спреда componentProps, поэтому componentProps.disabled мёртв."}}}},{"name":"NavigationMenu","role":"container","propsSchema":{"type":"object","additionalProperties":true,"x-registryName":"NavigationMenu","properties":{"orientation":{"type":"string","enum":["horizontal","vertical"],"default":"horizontal","description":"Ориентация меню.","x-doc":{"group":"Behavior","type":"'horizontal' | 'vertical'","kind":"enum"}},"dir":{"type":"string","enum":["ltr","rtl"],"description":"Направление письма (слева-направо / справа-налево).","x-doc":{"group":"Behavior","type":"'ltr' | 'rtl'","kind":"enum"}},"viewport":{"type":"boolean","default":true,"description":"Рендерить общий Viewport-оверлей для контента (иначе контент под каждым пунктом).","x-doc":{"group":"Behavior","type":"boolean"}},"delayDuration":{"type":"number","default":200,"description":"Задержка (мс) перед открытием меню при наведении.","x-doc":{"group":"Behavior","type":"number"}},"skipDelayDuration":{"type":"number","default":300,"description":"Окно (мс), в течение которого переход между пунктами открывает меню без задержки.","x-doc":{"group":"Behavior","type":"number"}},"className":{"type":"string","description":"Доп. CSS-класс (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"Pagination","role":"container","propsSchema":{"type":"object","additionalProperties":true,"x-registryName":"Pagination","properties":{"className":{"type":"string","description":"Доп. CSS-класс (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"PaginationContent","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Pagination"},{"name":"PaginationEllipsis","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Pagination"},{"name":"PaginationItem","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Pagination"},{"name":"PaginationLink","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}},"href":{"type":"string","description":"URL страницы.","x-doc":{"group":"Control","type":"string"}},"isActive":{"type":"boolean","description":"Текущая страница (подсвечена).","x-doc":{"group":"State","type":"boolean","kind":"boolean"}}}},"compoundParent":"Pagination"},{"name":"PaginationNext","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Pagination"},{"name":"PaginationPrevious","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Pagination"},{"name":"Popover","role":"container","propsSchema":{"type":"object","additionalProperties":true,"x-registryName":"Popover","properties":{"defaultOpen":{"type":"boolean","default":false,"description":"Открыт ли поповер изначально (неуправляемый режим).","x-doc":{"group":"State","type":"boolean"}},"modal":{"type":"boolean","default":false,"description":"Модальный режим — блокирует взаимодействие с фоном и ловит фокус.","x-doc":{"group":"Behavior","type":"boolean"}}}}},{"name":"Progress","role":"container","propsSchema":{"type":"object","additionalProperties":false,"x-registryName":"Progress","properties":{"className":{"type":"string","description":"CSS-класс дорожки прогресса (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}},"value":{"type":"number","minimum":0,"maximum":100,"description":"Текущее значение прогресса в процентах (0–100).","x-doc":{"group":"State","type":"number","kind":"number"}},"max":{"type":"number","minimum":1,"default":100,"description":"Максимальное значение шкалы (по умолчанию 100).","x-doc":{"group":"State","type":"number","kind":"number"}}}}},{"name":"RadioGroup","role":"field","propsSchema":{"type":"object","properties":{"label":{"type":"string","description":"Подпись поля (рендерит FormField.Label).","x-doc":{"group":"Textfield","type":"string"}},"required":{"type":"boolean","default":false,"description":"Маркер «*» у метки + aria-required.","x-doc":{"group":"State","type":"boolean"}},"description":{"type":"string","description":"Пояснение под полем (shadcn FieldDescription).","x-doc":{"group":"Textfield","type":"string"}},"testId":{"type":"string","description":"data-testid для e2e (meta-проп; в DOM примитива не течёт).","x-doc":{"group":"Behavior","type":"string","kind":"readonly"}},"options":{"type":"array","items":{"type":"object","required":["value","label"],"additionalProperties":false,"properties":{"value":{"type":"string"},"label":{"type":"string"}}},"description":"Варианты выбора. Каждый рендерится как radio + подпись справа.","x-doc":{"group":"Options","type":"Array<{ value; label }>","kind":"readonly"}},"className":{"type":"string","description":"Доп. CSS-класс контейнера группы (по умолчанию grid gap-3).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}},"additionalProperties":false,"x-runtimeProps":{"value":{"group":"Control","type":"string | null","description":"Выбранное значение (option.value). null — ничего не выбрано."},"onChange":{"group":"Control","type":"(value: string | null) => void","description":"Выбор варианта; пустой выбор → null."},"onBlur":{"group":"Control","type":"() => void","kind":"readonly","description":"Отметка touched. Форма подставляет control.markAsTouched."},"disabled":{"group":"State","type":"boolean","kind":"boolean","default":false,"description":"Блокировка поля. Задаётся через control.disable()/enable(), НЕ через componentProps: FormFieldControl.tsx:104-115 ставит disabled ПОСЛЕ спреда componentProps, поэтому componentProps.disabled мёртв."}}}},{"name":"Resizable","role":"container","propsSchema":{"type":"object","additionalProperties":true,"x-registryName":"Resizable","properties":{"direction":{"type":"string","enum":["horizontal","vertical"],"default":"horizontal","description":"Направление разделения панелей.","x-doc":{"group":"Behavior","type":"'horizontal' | 'vertical'","kind":"enum"}},"className":{"type":"string","description":"Доп. CSS-класс (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"ResizableHandle","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Resizable"},{"name":"ResizablePanel","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Resizable"},{"name":"ResizablePanelGroup","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Resizable"},{"name":"ScrollArea","role":"container","propsSchema":{"type":"object","additionalProperties":true,"x-registryName":"ScrollArea","properties":{"type":{"type":"string","enum":["auto","always","scroll","hover"],"default":"hover","description":"Когда показывать скроллбары.","x-doc":{"group":"Behavior","type":"'auto' | 'always' | 'scroll' | 'hover'","kind":"enum"}},"scrollHideDelay":{"type":"number","default":600,"description":"Задержка скрытия скроллбаров (мс) — для type=hover/scroll.","x-doc":{"group":"Behavior","type":"number"}},"className":{"type":"string","description":"Доп. CSS-класс (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"Section","role":"container","propsSchema":{"type":"object","additionalProperties":false,"x-registryName":"Section","properties":{"title":{"type":"string","description":"Заголовок секции. Не задан — заголовок не рендерится (только обёртка).","x-doc":{"group":"Textfield","type":"string"}},"titleAs":{"type":"string","enum":["h1","h2","h3","h4","h5","h6"],"default":"h3","description":"HTML-элемент заголовка (уровень h1-h6).","x-doc":{"group":"Behavior","type":"'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'","kind":"enum"}},"titleClassName":{"type":"string","description":"Доп. CSS-класс заголовка.","x-doc":{"group":"Control","type":"string","kind":"readonly"}},"className":{"type":"string","description":"Доп. CSS-класс контейнера \`<section>\` (напр. \`grid grid-cols-2 gap-4\`).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"Select","role":"field","propsSchema":{"type":"object","properties":{"label":{"type":"string","description":"Подпись поля (рендерит FormField.Label).","x-doc":{"group":"Textfield","type":"string"}},"required":{"type":"boolean","default":false,"description":"Маркер «*» у метки + aria-required.","x-doc":{"group":"State","type":"boolean"}},"description":{"type":"string","description":"Пояснение под полем (shadcn FieldDescription).","x-doc":{"group":"Textfield","type":"string"}},"testId":{"type":"string","description":"data-testid для e2e (meta-проп; в DOM примитива не течёт).","x-doc":{"group":"Behavior","type":"string","kind":"readonly"}},"className":{"type":"string","description":"Доп. CSS-класс триггера.","x-doc":{"group":"Control","type":"string","kind":"readonly"}},"options":{"type":"array","items":{"type":"object","required":["value","label"],"additionalProperties":false,"properties":{"value":{"type":["string","number"]},"label":{"type":"string"},"group":{"type":"string"}}},"description":"Inline-опции. Одинаковый group объединяется в секцию SelectLabel.","x-doc":{"group":"Options","type":"Array<{ value; label; group? }>","kind":"readonly"}},"placeholder":{"type":"string","default":"Select an option...","description":"Подсказка в триггере.","x-doc":{"group":"Textfield","type":"string"}},"clearable":{"type":"boolean","default":false,"description":"Показывать крестик очистки (сброс в null).","x-doc":{"group":"Behavior","type":"boolean"}}},"additionalProperties":false,"x-runtimeProps":{"value":{"group":"Control","type":"string | null","description":"Выбранное значение (option.value). null — ничего не выбрано."},"onChange":{"group":"Control","type":"(value: string | null) => void","description":"Выбор; при очистке приходит null."},"onBlur":{"group":"Control","type":"() => void","kind":"readonly","description":"Отметка touched. Форма подставляет control.markAsTouched."},"disabled":{"group":"State","type":"boolean","kind":"boolean","default":false,"description":"Блокировка поля. Задаётся через control.disable()/enable(), НЕ через componentProps: FormFieldControl.tsx:104-115 ставит disabled ПОСЛЕ спреда componentProps, поэтому componentProps.disabled мёртв."},"resource":{"group":"Options","type":"ResourceConfig<unknown>","description":"Асинхронный источник опций (static / preload / partial). В JSON-форме недостижим: требует функцию load."}}}},{"name":"Separator","role":"container","propsSchema":{"type":"object","additionalProperties":false,"x-registryName":"Separator","properties":{"className":{"type":"string","description":"CSS-класс разделителя (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}},"orientation":{"type":"string","enum":["horizontal","vertical"],"default":"horizontal","description":"Ориентация разделителя: горизонтальный (по умолчанию) или вертикальный.","x-doc":{"group":"Behavior","type":"'horizontal' | 'vertical'","kind":"enum"}},"decorative":{"type":"boolean","default":true,"description":"Декоративный ли разделитель. true (по умолчанию) — скрыт от AT; false — семантический separator.","x-doc":{"group":"Behavior","type":"boolean","kind":"boolean"}}}}},{"name":"Sheet","role":"container","propsSchema":{"type":"object","additionalProperties":true,"x-registryName":"Sheet","properties":{"defaultOpen":{"type":"boolean","default":false,"description":"Открыта ли панель изначально (неуправляемый режим).","x-doc":{"group":"State","type":"boolean"}},"modal":{"type":"boolean","default":true,"description":"Модальный режим — блокирует взаимодействие с фоном.","x-doc":{"group":"Behavior","type":"boolean"}}}}},{"name":"Sidebar","role":"container","propsSchema":{"type":"object","additionalProperties":true,"x-registryName":"Sidebar","properties":{"side":{"type":"string","enum":["left","right"],"default":"left","description":"Сторона размещения.","x-doc":{"group":"Behavior","type":"'left' | 'right'","kind":"enum"}},"variant":{"type":"string","enum":["sidebar","floating","inset"],"default":"sidebar","description":"Вариант оформления.","x-doc":{"group":"Behavior","type":"'sidebar' | 'floating' | 'inset'","kind":"enum"}},"collapsible":{"type":"string","enum":["offcanvas","icon","none"],"default":"offcanvas","description":"Режим сворачивания.","x-doc":{"group":"Behavior","type":"'offcanvas' | 'icon' | 'none'","kind":"enum"}},"className":{"type":"string","description":"Доп. CSS-класс (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"Skeleton","role":"container","propsSchema":{"type":"object","additionalProperties":true,"x-registryName":"Skeleton","properties":{"className":{"type":"string","description":"Доп. CSS-класс (Tailwind) — задаёт размеры плейсхолдера (h-*/w-*).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"Slider","role":"field","propsSchema":{"type":"object","properties":{"label":{"type":"string","description":"Подпись поля (рендерит FormField.Label).","x-doc":{"group":"Textfield","type":"string"}},"required":{"type":"boolean","default":false,"description":"Маркер «*» у метки + aria-required.","x-doc":{"group":"State","type":"boolean"}},"description":{"type":"string","description":"Пояснение под полем (shadcn FieldDescription).","x-doc":{"group":"Textfield","type":"string"}},"testId":{"type":"string","description":"data-testid для e2e (meta-проп; в DOM примитива не течёт).","x-doc":{"group":"Behavior","type":"string","kind":"readonly"}},"min":{"type":"number","default":0,"description":"Минимум диапазона (Radix min).","x-doc":{"group":"Behavior","type":"number"}},"max":{"type":"number","default":100,"description":"Максимум диапазона (Radix max).","x-doc":{"group":"Behavior","type":"number"}},"step":{"type":"number","default":1,"description":"Шаг изменения значения (Radix step).","x-doc":{"group":"Behavior","type":"number"}},"className":{"type":"string","description":"Доп. CSS-класс слайдера (SliderPrimitive.Root).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}},"additionalProperties":false,"x-runtimeProps":{"value":{"group":"Control","type":"number | null","description":"Значение слайдера (одно-thumb). null трактуется как min. Резолвится формой."},"onChange":{"group":"Control","type":"(value: number | null) => void","description":"Изменение; эмитит первое число массива Radix (onValueChange → arr[0])."},"onBlur":{"group":"Control","type":"() => void","kind":"readonly","description":"Отметка touched. Форма подставляет control.markAsTouched."},"disabled":{"group":"State","type":"boolean","kind":"boolean","default":false,"description":"Блокировка поля. Задаётся через control.disable()/enable(), НЕ через componentProps: FormFieldControl.tsx:104-115 ставит disabled ПОСЛЕ спреда componentProps, поэтому componentProps.disabled мёртв."}}}},{"name":"Spinner","role":"container","propsSchema":{"type":"object","additionalProperties":true,"x-registryName":"Spinner","properties":{"className":{"type":"string","description":"Доп. CSS-класс (Tailwind); размер задаётся через size-* (по умолчанию size-4).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"Switch","role":"field","propsSchema":{"type":"object","properties":{"label":{"type":"string","description":"Подпись справа от переключателя (inline-раскладка; FormField верхнюю метку не рисует).","x-doc":{"group":"Textfield","type":"string"}},"required":{"type":"boolean","default":false,"description":"Маркер «*» у метки + aria-required.","x-doc":{"group":"State","type":"boolean"}},"description":{"type":"string","description":"Пояснение под полем (shadcn FieldDescription).","x-doc":{"group":"Textfield","type":"string"}},"testId":{"type":"string","description":"data-testid для e2e (meta-проп; в DOM примитива не течёт).","x-doc":{"group":"Behavior","type":"string","kind":"readonly"}},"className":{"type":"string","description":"Доп. CSS-класс переключателя.","x-doc":{"group":"Control","type":"string","kind":"readonly"}}},"additionalProperties":false,"x-runtimeProps":{"value":{"group":"Control","type":"boolean","description":"Состояние переключателя (true — включён). Резолвится формой."},"onChange":{"group":"Control","type":"(value: boolean) => void","description":"Переключение; эмитит boolean (Radix onCheckedChange, indeterminate → false)."},"onBlur":{"group":"Control","type":"() => void","kind":"readonly","description":"Отметка touched. Форма подставляет control.markAsTouched."},"disabled":{"group":"State","type":"boolean","kind":"boolean","default":false,"description":"Блокировка поля. Задаётся через control.disable()/enable(), НЕ через componentProps: FormFieldControl.tsx:104-115 ставит disabled ПОСЛЕ спреда componentProps, поэтому componentProps.disabled мёртв."}}}},{"name":"Table","role":"container","propsSchema":{"type":"object","additionalProperties":false,"x-registryName":"Table","properties":{"className":{"type":"string","description":"CSS-класс таблицы (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"TableBody","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Table"},{"name":"TableCaption","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Table"},{"name":"TableCell","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Table"},{"name":"TableFooter","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Table"},{"name":"TableHead","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Table"},{"name":"TableHeader","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Table"},{"name":"TableRow","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Table"},{"name":"Tabs","role":"container","propsSchema":{"type":"object","additionalProperties":false,"x-registryName":"Tabs","properties":{"className":{"type":"string","description":"CSS-класс контейнера табов (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}},"defaultValue":{"type":"string","description":"Значение вкладки, активной по умолчанию (uncontrolled).","x-doc":{"group":"Behavior","type":"string"}},"orientation":{"type":"string","enum":["horizontal","vertical"],"default":"horizontal","description":"Ориентация раскладки табов.","x-doc":{"group":"Behavior","type":"'horizontal' | 'vertical'","kind":"enum"}},"activationMode":{"type":"string","enum":["automatic","manual"],"default":"automatic","description":"Активировать вкладку при фокусе (automatic) или только по клику/Enter (manual).","x-doc":{"group":"Behavior","type":"'automatic' | 'manual'","kind":"enum"}}}}},{"name":"TabsContent","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}},"value":{"type":"string","description":"Значение вкладки, содержимое которой показывает панель.","x-doc":{"group":"Control","type":"string"}}}},"compoundParent":"Tabs"},{"name":"TabsList","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}},"compoundParent":"Tabs"},{"name":"TabsTrigger","role":"container","propsSchema":{"type":"object","additionalProperties":false,"properties":{"className":{"type":"string","description":"CSS-класс части (Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}},"value":{"type":"string","description":"Значение вкладки — связывает кнопку с TabsContent.","x-doc":{"group":"Control","type":"string"}}}},"compoundParent":"Tabs"},{"name":"Textarea","role":"field","propsSchema":{"type":"object","properties":{"label":{"type":"string","description":"Подпись поля (рендерит FormField.Label).","x-doc":{"group":"Textfield","type":"string"}},"required":{"type":"boolean","default":false,"description":"Маркер «*» у метки + aria-required.","x-doc":{"group":"State","type":"boolean"}},"description":{"type":"string","description":"Пояснение под полем (shadcn FieldDescription).","x-doc":{"group":"Textfield","type":"string"}},"testId":{"type":"string","description":"data-testid для e2e (meta-проп; в DOM примитива не течёт).","x-doc":{"group":"Behavior","type":"string","kind":"readonly"}},"placeholder":{"type":"string","description":"Подсказка внутри поля.","x-doc":{"group":"Textfield","type":"string"}},"rows":{"type":"number","description":"Число видимых строк (HTML-атрибут rows).","x-doc":{"group":"Behavior","type":"number"}},"className":{"type":"string","description":"Доп. CSS-класс.","x-doc":{"group":"Control","type":"string","kind":"readonly"}}},"additionalProperties":false,"x-runtimeProps":{"value":{"group":"Control","type":"string | null","description":"Значение поля. Пустой ввод → null."},"onChange":{"group":"Control","type":"(value: string | null) => void","description":"Изменение. Пустой ввод → null."},"onBlur":{"group":"Control","type":"() => void","kind":"readonly","description":"Отметка touched. Форма подставляет control.markAsTouched."},"disabled":{"group":"State","type":"boolean","kind":"boolean","default":false,"description":"Блокировка поля. Задаётся через control.disable()/enable(), НЕ через componentProps: FormFieldControl.tsx:104-115 ставит disabled ПОСЛЕ спреда componentProps, поэтому componentProps.disabled мёртв."}}}},{"name":"Toggle","role":"field","propsSchema":{"type":"object","properties":{"label":{"type":"string","description":"Подпись поля (рендерит FormField.Label).","x-doc":{"group":"Textfield","type":"string"}},"required":{"type":"boolean","default":false,"description":"Маркер «*» у метки + aria-required.","x-doc":{"group":"State","type":"boolean"}},"description":{"type":"string","description":"Пояснение под полем (shadcn FieldDescription).","x-doc":{"group":"Textfield","type":"string"}},"testId":{"type":"string","description":"data-testid для e2e (meta-проп; в DOM примитива не течёт).","x-doc":{"group":"Behavior","type":"string","kind":"readonly"}},"variant":{"type":"string","enum":["default","outline"],"default":"default","description":"Стиль cva: default (заливка при нажатии) | outline (граница).","x-doc":{"group":"Control","type":"'default' | 'outline'","kind":"enum"}},"size":{"type":"string","enum":["default","sm","lg"],"default":"default","description":"Размер cva: default | sm | lg.","x-doc":{"group":"Control","type":"'default' | 'sm' | 'lg'","kind":"enum"}},"className":{"type":"string","description":"Доп. CSS-класс контрола (TogglePrimitive.Root).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}},"additionalProperties":false,"x-runtimeProps":{"value":{"group":"Control","type":"boolean","description":"Состояние (true — нажат/pressed). undefined/null трактуется как false. Резолвится формой."},"onChange":{"group":"Control","type":"(value: boolean) => void","description":"Переключение; эмитит boolean (Radix onPressedChange)."},"onBlur":{"group":"Control","type":"() => void","kind":"readonly","description":"Отметка touched. Форма подставляет control.markAsTouched."},"disabled":{"group":"State","type":"boolean","kind":"boolean","default":false,"description":"Блокировка поля. Задаётся через control.disable()/enable(), НЕ через componentProps: FormFieldControl.tsx:104-115 ставит disabled ПОСЛЕ спреда componentProps, поэтому componentProps.disabled мёртв."}}}},{"name":"ToggleGroup","role":"field","propsSchema":{"type":"object","properties":{"label":{"type":"string","description":"Подпись поля (рендерит FormField.Label).","x-doc":{"group":"Textfield","type":"string"}},"required":{"type":"boolean","default":false,"description":"Маркер «*» у метки + aria-required.","x-doc":{"group":"State","type":"boolean"}},"description":{"type":"string","description":"Пояснение под полем (shadcn FieldDescription).","x-doc":{"group":"Textfield","type":"string"}},"testId":{"type":"string","description":"data-testid для e2e (meta-проп; в DOM примитива не течёт).","x-doc":{"group":"Behavior","type":"string","kind":"readonly"}},"options":{"type":"array","items":{"type":"object","required":["value","label"],"additionalProperties":false,"properties":{"value":{"type":"string"},"label":{"type":"string"}}},"description":"Варианты выбора. Каждый рендерится как кнопка-переключатель.","x-doc":{"group":"Options","type":"Array<{ value; label }>","kind":"readonly"}},"variant":{"type":"string","enum":["default","outline"],"default":"default","description":"Визуальный стиль кнопок: плоские (default) или с рамкой (outline).","x-doc":{"group":"Control","type":"'default' | 'outline'"}},"className":{"type":"string","description":"Доп. CSS-класс контейнера группы.","x-doc":{"group":"Control","type":"string","kind":"readonly"}}},"additionalProperties":false,"x-runtimeProps":{"value":{"group":"Control","type":"string | null","description":"Выбранное значение (option.value). null — ничего не выбрано."},"onChange":{"group":"Control","type":"(value: string | null) => void","description":"Выбор варианта; пустой выбор → null."},"onBlur":{"group":"Control","type":"() => void","kind":"readonly","description":"Отметка touched. Форма подставляет control.markAsTouched."},"disabled":{"group":"State","type":"boolean","kind":"boolean","default":false,"description":"Блокировка поля. Задаётся через control.disable()/enable(), НЕ через componentProps: FormFieldControl.tsx:104-115 ставит disabled ПОСЛЕ спреда componentProps, поэтому componentProps.disabled мёртв."}}}},{"name":"Tooltip","role":"container","propsSchema":{"type":"object","additionalProperties":true,"x-registryName":"Tooltip","properties":{"defaultOpen":{"type":"boolean","default":false,"description":"Показан ли тултип изначально (неуправляемый режим).","x-doc":{"group":"State","type":"boolean"}},"delayDuration":{"type":"number","default":700,"description":"Задержка перед показом (мс).","x-doc":{"group":"Behavior","type":"number"}},"disableHoverableContent":{"type":"boolean","default":false,"description":"Скрывать тултип при уходе курсора с триггера (нельзя навести на сам тултип).","x-doc":{"group":"Behavior","type":"boolean"}}}}},{"name":"TypographyBlockquote","role":"container","propsSchema":{"type":"object","additionalProperties":false,"x-registryName":"TypographyBlockquote","properties":{"className":{"type":"string","description":"Доп. CSS-класс для «Цитата» (элемент <blockquote>, Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"TypographyH1","role":"container","propsSchema":{"type":"object","additionalProperties":false,"x-registryName":"TypographyH1","properties":{"className":{"type":"string","description":"Доп. CSS-класс для «Заголовок 1» (элемент <h1>, Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"TypographyH2","role":"container","propsSchema":{"type":"object","additionalProperties":false,"x-registryName":"TypographyH2","properties":{"className":{"type":"string","description":"Доп. CSS-класс для «Заголовок 2» (элемент <h2>, Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"TypographyH3","role":"container","propsSchema":{"type":"object","additionalProperties":false,"x-registryName":"TypographyH3","properties":{"className":{"type":"string","description":"Доп. CSS-класс для «Заголовок 3» (элемент <h3>, Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"TypographyH4","role":"container","propsSchema":{"type":"object","additionalProperties":false,"x-registryName":"TypographyH4","properties":{"className":{"type":"string","description":"Доп. CSS-класс для «Заголовок 4» (элемент <h4>, Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"TypographyInlineCode","role":"container","propsSchema":{"type":"object","additionalProperties":false,"x-registryName":"TypographyInlineCode","properties":{"className":{"type":"string","description":"Доп. CSS-класс для «Инлайн-код» (элемент <code>, Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"TypographyLarge","role":"container","propsSchema":{"type":"object","additionalProperties":false,"x-registryName":"TypographyLarge","properties":{"className":{"type":"string","description":"Доп. CSS-класс для «Крупный текст» (элемент <div>, Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"TypographyLead","role":"container","propsSchema":{"type":"object","additionalProperties":false,"x-registryName":"TypographyLead","properties":{"className":{"type":"string","description":"Доп. CSS-класс для «Лид-абзац» (элемент <p>, Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"TypographyList","role":"container","propsSchema":{"type":"object","additionalProperties":false,"x-registryName":"TypographyList","properties":{"className":{"type":"string","description":"Доп. CSS-класс для «Список» (элемент <ul>, Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"TypographyMuted","role":"container","propsSchema":{"type":"object","additionalProperties":false,"x-registryName":"TypographyMuted","properties":{"className":{"type":"string","description":"Доп. CSS-класс для «Приглушённый текст» (элемент <p>, Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"TypographyP","role":"container","propsSchema":{"type":"object","additionalProperties":false,"x-registryName":"TypographyP","properties":{"className":{"type":"string","description":"Доп. CSS-класс для «Абзац» (элемент <p>, Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"TypographySmall","role":"container","propsSchema":{"type":"object","additionalProperties":false,"x-registryName":"TypographySmall","properties":{"className":{"type":"string","description":"Доп. CSS-класс для «Мелкий текст» (элемент <small>, Tailwind).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}}]`),Ea={$schema:ka,version:$a,kit:Ta,components:Na},Ia="../../catalog/component-catalog.schema.json",Ra="2.0",Aa={id:"reformer-ui-kit-11",label:"ReFormer UI Kit 11",package:"@reformer/ui-kit",version:"11.0.0",peerRanges:{"@reformer/cdk":">=1.0.0","@reformer/core":">=1.1.0","@reformer/renderer-react":">=1.0.0",react:"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},resolve:{fieldSuffix:"Field"},infra:{fieldWrapper:"FormField",asyncBoundary:"AsyncBoundary"},adapters:{wizard:{symbol:"FormWizard",subpath:"form-wizard"},step:null},styles:{mode:"tokens"},codegen:{importSpecifier:"@reformer/ui-kit"}},Ma=JSON.parse(`[{"name":"Accordion","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"AccordionContent","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Accordion"},{"name":"AccordionItem","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Accordion"},{"name":"Alert","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"AlertDescription","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Alert"},{"name":"AlertDialog","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"AlertDialogAction","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"AlertDialog"},{"name":"AlertDialogCancel","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"AlertDialog"},{"name":"AlertDialogContent","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"AlertDialog"},{"name":"AlertDialogDescription","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"AlertDialog"},{"name":"AlertDialogFooter","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"AlertDialog"},{"name":"AlertDialogHeader","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"AlertDialog"},{"name":"AlertDialogMedia","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"AlertDialog"},{"name":"AlertDialogTitle","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"AlertDialog"},{"name":"AlertTitle","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Alert"},{"name":"AspectRatio","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"AsyncBoundary","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"Attachment","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"AttachmentAction","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Attachment"},{"name":"AttachmentActions","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Attachment"},{"name":"AttachmentContent","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Attachment"},{"name":"AttachmentDescription","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Attachment"},{"name":"AttachmentGroup","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Attachment"},{"name":"AttachmentMedia","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Attachment"},{"name":"AttachmentTitle","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Attachment"},{"name":"Avatar","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"AvatarBadge","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Avatar"},{"name":"AvatarFallback","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Avatar"},{"name":"AvatarGroup","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Avatar"},{"name":"AvatarGroupCount","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Avatar"},{"name":"AvatarImage","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Avatar"},{"name":"Badge","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"Box","role":"container","propsSchema":{"type":"object","additionalProperties":false,"x-registryName":"Box","properties":{"className":{"type":"string","description":"CSS-класс layout-контейнера (atomic CSS / Tailwind: flex, grid, gap-*).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"Breadcrumb","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"BreadcrumbEllipsis","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Breadcrumb"},{"name":"BreadcrumbItem","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Breadcrumb"},{"name":"BreadcrumbLink","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Breadcrumb"},{"name":"BreadcrumbList","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Breadcrumb"},{"name":"BreadcrumbPage","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Breadcrumb"},{"name":"BreadcrumbSeparator","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Breadcrumb"},{"name":"Bubble","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"BubbleContent","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Bubble"},{"name":"BubbleGroup","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Bubble"},{"name":"BubbleReactions","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Bubble"},{"name":"Button","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"ButtonGroup","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"ButtonGroupSeparator","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"ButtonGroup"},{"name":"ButtonGroupText","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"ButtonGroup"},{"name":"Calendar","role":"field","propsSchema":{"type":"object","properties":{"label":{"type":"string","description":"Подпись поля (рендерит FormField.Label).","x-doc":{"group":"Textfield","type":"string"}},"required":{"type":"boolean","default":false,"description":"Маркер «*» у метки + aria-required.","x-doc":{"group":"State","type":"boolean"}},"description":{"type":"string","description":"Пояснение под полем (shadcn FieldDescription).","x-doc":{"group":"Textfield","type":"string"}},"testId":{"type":"string","description":"data-testid для e2e (meta-проп; в DOM примитива не течёт).","x-doc":{"group":"Behavior","type":"string","kind":"readonly"}},"mode":{"type":"string","enum":["single"],"default":"single","description":"Режим выбора. Field-версия — только single (одна дата, value: Date | null).","x-doc":{"group":"Behavior","type":"'single'","kind":"enum"}},"captionLayout":{"type":"string","enum":["label","dropdown","dropdown-months","dropdown-years"],"default":"label","description":"Шапка месяца: статичная подпись или дропдауны выбора месяца/года.","x-doc":{"group":"Behavior","type":"'label' | 'dropdown' | 'dropdown-months' | 'dropdown-years'","kind":"enum"}},"showOutsideDays":{"type":"boolean","default":true,"description":"Показывать дни соседних месяцев в первой и последней неделе.","x-doc":{"group":"Behavior","type":"boolean"}},"className":{"type":"string","description":"Доп. CSS-класс корневого элемента.","x-doc":{"group":"Control","type":"string","kind":"readonly"}}},"additionalProperties":false,"x-runtimeProps":{"value":{"group":"Control","type":"Date | null","description":"Выбранная дата. null — ничего не выбрано."},"onChange":{"group":"Control","type":"(value: Date | null) => void","description":"Выбор даты. Повторный клик по выбранной дате сбрасывает значение в null."},"onBlur":{"group":"Control","type":"() => void","kind":"readonly","description":"Отметка touched. Форма подставляет control.markAsTouched."},"disabled":{"group":"State","type":"boolean","kind":"boolean","default":false,"description":"Блокировка поля. Задаётся через control.disable()/enable(), НЕ через componentProps: FormFieldControl.tsx:104-115 ставит disabled ПОСЛЕ спреда componentProps, поэтому componentProps.disabled мёртв."}}},"subpath":"calendar"},{"name":"CalendarDayButton","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Calendar","subpath":"calendar"},{"name":"Card","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"CardAction","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Card"},{"name":"CardContent","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Card"},{"name":"CardDescription","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Card"},{"name":"CardFooter","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Card"},{"name":"CardHeader","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Card"},{"name":"CardTitle","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Card"},{"name":"Carousel","role":"container","propsSchema":{"type":"object","additionalProperties":true},"subpath":"carousel"},{"name":"CarouselContent","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Carousel","subpath":"carousel"},{"name":"CarouselItem","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Carousel","subpath":"carousel"},{"name":"CarouselNext","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Carousel","subpath":"carousel"},{"name":"CarouselPrevious","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Carousel","subpath":"carousel"},{"name":"Chart","role":"container","propsSchema":{"type":"object","additionalProperties":true},"subpath":"chart"},{"name":"ChartContainer","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Chart","subpath":"chart"},{"name":"ChartLegend","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Chart","subpath":"chart"},{"name":"ChartLegendContent","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Chart","subpath":"chart"},{"name":"ChartTooltip","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Chart","subpath":"chart"},{"name":"ChartTooltipContent","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Chart","subpath":"chart"},{"name":"Checkbox","role":"field","propsSchema":{"type":"object","properties":{"label":{"type":"string","description":"Подпись справа от чекбокса (inline-раскладка). Рендерит сам контрол.","x-doc":{"group":"Textfield","type":"string"}},"required":{"type":"boolean","default":false,"description":"Маркер «*» у метки + aria-required.","x-doc":{"group":"State","type":"boolean"}},"description":{"type":"string","description":"Пояснение под полем (shadcn FieldDescription).","x-doc":{"group":"Textfield","type":"string"}},"testId":{"type":"string","description":"data-testid для e2e (meta-проп; в DOM примитива не течёт).","x-doc":{"group":"Behavior","type":"string","kind":"readonly"}},"className":{"type":"string","description":"Доп. CSS-класс контрола (CheckboxPrimitive.Root).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}},"additionalProperties":false,"x-runtimeProps":{"value":{"group":"Control","type":"boolean","description":"Состояние чекбокса. undefined/null трактуется как false."},"onChange":{"group":"Control","type":"(value: boolean) => void","description":"Изменение. indeterminate приводится к false."},"onBlur":{"group":"Control","type":"() => void","kind":"readonly","description":"Отметка touched. Форма подставляет control.markAsTouched."},"disabled":{"group":"State","type":"boolean","kind":"boolean","default":false,"description":"Блокировка поля. Задаётся через control.disable()/enable(), НЕ через componentProps: FormFieldControl.tsx:104-115 ставит disabled ПОСЛЕ спреда componentProps, поэтому componentProps.disabled мёртв."}}}},{"name":"CheckboxWithLabel","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Checkbox"},{"name":"Collapsible","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"CollapsibleContent","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Collapsible"},{"name":"Combobox","role":"field","propsSchema":{"type":"object","properties":{"label":{"type":"string","description":"Подпись поля (рендерит FormField.Label).","x-doc":{"group":"Textfield","type":"string"}},"required":{"type":"boolean","default":false,"description":"Маркер «*» у метки + aria-required.","x-doc":{"group":"State","type":"boolean"}},"description":{"type":"string","description":"Пояснение под полем (shadcn FieldDescription).","x-doc":{"group":"Textfield","type":"string"}},"testId":{"type":"string","description":"data-testid для e2e (meta-проп; в DOM примитива не течёт).","x-doc":{"group":"Behavior","type":"string","kind":"readonly"}},"className":{"type":"string","description":"Доп. CSS-класс триггера.","x-doc":{"group":"Control","type":"string","kind":"readonly"}},"options":{"type":"array","items":{"type":"object","required":["value","label"],"additionalProperties":false,"properties":{"value":{"type":"string"},"label":{"type":"string"}}},"description":"Список опций { value, label }. Поиск идёт по label.","x-doc":{"group":"Options","type":"Array<{ value; label }>","kind":"readonly"}},"placeholder":{"type":"string","default":"Select an option...","description":"Подсказка в триггере, пока ничего не выбрано.","x-doc":{"group":"Textfield","type":"string"}},"searchPlaceholder":{"type":"string","default":"Search...","description":"Подсказка в поле поиска.","x-doc":{"group":"Textfield","type":"string"}},"emptyText":{"type":"string","default":"No options found.","description":"Текст пустого состояния (ничего не найдено).","x-doc":{"group":"Textfield","type":"string"}},"clearable":{"type":"boolean","default":false,"description":"Показывать крестик очистки (сброс в null); повторный выбор опции тоже сбрасывает.","x-doc":{"group":"Behavior","type":"boolean"}}},"additionalProperties":false,"x-runtimeProps":{"value":{"group":"Control","type":"string | null","description":"Выбранное значение (option.value). null — ничего не выбрано."},"onChange":{"group":"Control","type":"(value: string | null) => void","description":"Выбор; при очистке приходит null."},"onBlur":{"group":"Control","type":"() => void","kind":"readonly","description":"Отметка touched. Форма подставляет control.markAsTouched."},"disabled":{"group":"State","type":"boolean","kind":"boolean","default":false,"description":"Блокировка поля. Задаётся через control.disable()/enable(), НЕ через componentProps: FormFieldControl.tsx:104-115 ставит disabled ПОСЛЕ спреда componentProps, поэтому componentProps.disabled мёртв."}}},"subpath":"combobox"},{"name":"Command","role":"container","propsSchema":{"type":"object","additionalProperties":true},"subpath":"command"},{"name":"CommandDialog","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Command","subpath":"command"},{"name":"CommandEmpty","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Command","subpath":"command"},{"name":"CommandGroup","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Command","subpath":"command"},{"name":"CommandInput","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Command","subpath":"command"},{"name":"CommandItem","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Command","subpath":"command"},{"name":"CommandList","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Command","subpath":"command"},{"name":"CommandSeparator","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Command","subpath":"command"},{"name":"CommandShortcut","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Command","subpath":"command"},{"name":"ContextMenu","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"DatePicker","role":"field","propsSchema":{"type":"object","properties":{"label":{"type":"string","description":"Подпись поля (рендерит FormField.Label).","x-doc":{"group":"Textfield","type":"string"}},"required":{"type":"boolean","default":false,"description":"Маркер «*» у метки + aria-required.","x-doc":{"group":"State","type":"boolean"}},"description":{"type":"string","description":"Пояснение под полем (shadcn FieldDescription).","x-doc":{"group":"Textfield","type":"string"}},"testId":{"type":"string","description":"data-testid для e2e (meta-проп; в DOM примитива не течёт).","x-doc":{"group":"Behavior","type":"string","kind":"readonly"}},"placeholder":{"type":"string","default":"Выберите дату","description":"Текст кнопки-триггера, когда дата не выбрана.","x-doc":{"group":"Textfield","type":"string"}},"dateFormat":{"type":"string","default":"PPP","description":"Формат отображения выбранной даты — токены date-fns (напр. dd.MM.yyyy).","x-doc":{"group":"Behavior","type":"string"}},"className":{"type":"string","description":"Доп. CSS-класс кнопки-триггера.","x-doc":{"group":"Control","type":"string","kind":"readonly"}}},"additionalProperties":false,"x-runtimeProps":{"value":{"group":"Control","type":"Date | null","description":"Выбранная дата. null — ничего не выбрано."},"onChange":{"group":"Control","type":"(value: Date | null) => void","description":"Выбор даты в календаре. Повторный клик по выбранной дате сбрасывает в null."},"onBlur":{"group":"Control","type":"() => void","kind":"readonly","description":"Отметка touched. Форма подставляет control.markAsTouched."},"disabled":{"group":"State","type":"boolean","kind":"boolean","default":false,"description":"Блокировка поля. Задаётся через control.disable()/enable(), НЕ через componentProps: FormFieldControl.tsx:104-115 ставит disabled ПОСЛЕ спреда componentProps, поэтому componentProps.disabled мёртв."}}},"subpath":"date-picker"},{"name":"Dialog","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"DialogClose","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Dialog"},{"name":"DialogContent","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Dialog"},{"name":"DialogDescription","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Dialog"},{"name":"DialogFooter","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Dialog"},{"name":"DialogHeader","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Dialog"},{"name":"DialogTitle","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Dialog"},{"name":"Direction","role":"container","propsSchema":{"type":"object","additionalProperties":true},"subpath":"direction"},{"name":"Drawer","role":"container","propsSchema":{"type":"object","additionalProperties":true},"subpath":"drawer"},{"name":"DrawerClose","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Drawer","subpath":"drawer"},{"name":"DrawerContent","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Drawer","subpath":"drawer"},{"name":"DrawerDescription","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Drawer","subpath":"drawer"},{"name":"DrawerFooter","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Drawer","subpath":"drawer"},{"name":"DrawerHeader","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Drawer","subpath":"drawer"},{"name":"DrawerTitle","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Drawer","subpath":"drawer"},{"name":"DropdownMenu","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"DropdownMenuCheckboxItem","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"DropdownMenu"},{"name":"DropdownMenuContent","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"DropdownMenu"},{"name":"DropdownMenuGroup","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"DropdownMenu"},{"name":"DropdownMenuItem","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"DropdownMenu"},{"name":"DropdownMenuLabel","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"DropdownMenu"},{"name":"DropdownMenuRadioGroup","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"DropdownMenu"},{"name":"DropdownMenuRadioItem","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"DropdownMenu"},{"name":"DropdownMenuSeparator","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"DropdownMenu"},{"name":"DropdownMenuShortcut","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"DropdownMenu"},{"name":"DropdownMenuSub","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"DropdownMenu"},{"name":"DropdownMenuSubContent","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"DropdownMenu"},{"name":"Empty","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"EmptyContent","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Empty"},{"name":"EmptyDescription","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Empty"},{"name":"EmptyHeader","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Empty"},{"name":"EmptyMedia","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Empty"},{"name":"EmptyTitle","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Empty"},{"name":"ExampleCard","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"Field","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"FormArray","role":"container","propsSchema":{"type":"object","additionalProperties":true},"subpath":"form-array"},{"name":"FormArraySection","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"FormArray"},{"name":"FormField","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"FormWizard","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"FormWizardActions","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"FormWizard"},{"name":"FormWizardProgress","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"FormWizard"},{"name":"HoverCard","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"HoverCardContent","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"HoverCard"},{"name":"Input","role":"field","propsSchema":{"type":"object","properties":{"label":{"type":"string","description":"Подпись поля (рендерит FormField.Label).","x-doc":{"group":"Textfield","type":"string"}},"required":{"type":"boolean","default":false,"description":"Маркер «*» у метки + aria-required.","x-doc":{"group":"State","type":"boolean"}},"description":{"type":"string","description":"Пояснение под полем (shadcn FieldDescription).","x-doc":{"group":"Textfield","type":"string"}},"testId":{"type":"string","description":"data-testid для e2e (meta-проп; в DOM примитива не течёт).","x-doc":{"group":"Behavior","type":"string","kind":"readonly"}},"type":{"type":"string","enum":["text","email","tel","url","password","number","date"],"default":"text","description":"HTML-тип input. number включает числовой буфер, остальные — строковые.","x-doc":{"group":"Textfield","type":"'text' | 'email' | 'number' | 'date' | …","kind":"enum"}},"placeholder":{"type":"string","description":"Подсказка внутри поля.","x-doc":{"group":"Textfield","type":"string"}},"min":{"type":"number","description":"Минимум (type=number). При min>=0 отрицательные значения зажимаются к 0.","x-doc":{"group":"Behavior","type":"number"}},"max":{"type":"number","description":"Максимум (type=number).","x-doc":{"group":"Behavior","type":"number"}},"step":{"type":"number","description":"Шаг (type=number).","x-doc":{"group":"Behavior","type":"number"}},"className":{"type":"string","description":"Доп. CSS-класс.","x-doc":{"group":"Control","type":"string","kind":"readonly"}}},"additionalProperties":false,"x-runtimeProps":{"value":{"group":"Control","type":"string | number | null","description":"Значение поля. Для type=number — number|null, иначе string|null."},"onChange":{"group":"Control","type":"(value: string | number | null) => void","description":"Изменение. Пустой ввод → null. Для number частичный ввод («-», «1.») не эмитится."},"onBlur":{"group":"Control","type":"() => void","kind":"readonly","description":"Отметка touched. Форма подставляет control.markAsTouched."},"disabled":{"group":"State","type":"boolean","kind":"boolean","default":false,"description":"Блокировка поля. Задаётся через control.disable()/enable(), НЕ через componentProps: FormFieldControl.tsx:104-115 ставит disabled ПОСЛЕ спреда componentProps, поэтому componentProps.disabled мёртв."}}}},{"name":"InputGroup","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"InputGroupAddon","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"InputGroup"},{"name":"InputGroupButton","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"InputGroup"},{"name":"InputGroupInput","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"InputGroup"},{"name":"InputGroupText","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"InputGroup"},{"name":"InputGroupTextarea","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"InputGroup"},{"name":"InputMask","role":"field","propsSchema":{"type":"object","properties":{"label":{"type":"string","description":"Подпись поля (рендерит FormField.Label).","x-doc":{"group":"Textfield","type":"string"}},"required":{"type":"boolean","default":false,"description":"Маркер «*» у метки + aria-required.","x-doc":{"group":"State","type":"boolean"}},"description":{"type":"string","description":"Пояснение под полем (shadcn FieldDescription).","x-doc":{"group":"Textfield","type":"string"}},"testId":{"type":"string","description":"data-testid для e2e (meta-проп; в DOM примитива не течёт).","x-doc":{"group":"Behavior","type":"string","kind":"readonly"}},"mask":{"type":"string","description":"Шаблон маски-подсказки: '9' — цифра, прочие символы — литералы (уходят в placeholder). Напр. '+7 (999) 999-99-99'. Автовставки литералов нет — компонент только помечает формат.","x-doc":{"group":"Textfield","type":"string"}},"placeholder":{"type":"string","description":"Подсказка внутри поля. По умолчанию равна mask.","x-doc":{"group":"Textfield","type":"string"}},"className":{"type":"string","description":"Доп. CSS-класс.","x-doc":{"group":"Control","type":"string","kind":"readonly"}}},"additionalProperties":false,"x-runtimeProps":{"value":{"group":"Control","type":"string | null","description":"Значение поля. null/undefined → пустое поле."},"onChange":{"group":"Control","type":"(value: string | null) => void","description":"Изменение. Пустой ввод → null."},"onBlur":{"group":"Control","type":"() => void","kind":"readonly","description":"Отметка touched. Форма подставляет control.markAsTouched."},"disabled":{"group":"State","type":"boolean","kind":"boolean","default":false,"description":"Блокировка поля. Задаётся через control.disable()/enable(), НЕ через componentProps: FormFieldControl.tsx:104-115 ставит disabled ПОСЛЕ спреда componentProps, поэтому componentProps.disabled мёртв."}}}},{"name":"InputOTP","role":"field","propsSchema":{"type":"object","properties":{"label":{"type":"string","description":"Подпись поля (рендерит FormField.Label).","x-doc":{"group":"Textfield","type":"string"}},"required":{"type":"boolean","default":false,"description":"Маркер «*» у метки + aria-required.","x-doc":{"group":"State","type":"boolean"}},"description":{"type":"string","description":"Пояснение под полем (shadcn FieldDescription).","x-doc":{"group":"Textfield","type":"string"}},"testId":{"type":"string","description":"data-testid для e2e (meta-проп; в DOM примитива не течёт).","x-doc":{"group":"Behavior","type":"string","kind":"readonly"}},"maxLength":{"type":"number","default":6,"minimum":1,"description":"Число слотов (длина кода). Дефолтная раскладка разворачивает одну группу из maxLength слотов.","x-doc":{"group":"Behavior","type":"number"}},"className":{"type":"string","description":"Доп. CSS-класс скрытого input.","x-doc":{"group":"Control","type":"string","kind":"readonly"}}},"additionalProperties":false,"x-runtimeProps":{"value":{"group":"Control","type":"string | null","description":"Набранный код. null — пусто."},"onChange":{"group":"Control","type":"(value: string | null) => void","description":"Изменение кода. Пустой ввод → null."},"onBlur":{"group":"Control","type":"() => void","kind":"readonly","description":"Отметка touched. Форма подставляет control.markAsTouched."},"disabled":{"group":"State","type":"boolean","kind":"boolean","default":false,"description":"Блокировка поля. Задаётся через control.disable()/enable(), НЕ через componentProps: FormFieldControl.tsx:104-115 ставит disabled ПОСЛЕ спреда componentProps, поэтому componentProps.disabled мёртв."}}},"subpath":"input-otp"},{"name":"InputOTPGroup","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"InputOTP","subpath":"input-otp"},{"name":"InputOTPSeparator","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"InputOTP","subpath":"input-otp"},{"name":"InputOTPSlot","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"InputOTP","subpath":"input-otp"},{"name":"InputPassword","role":"field","propsSchema":{"type":"object","properties":{"label":{"type":"string","description":"Подпись поля (рендерит FormField.Label).","x-doc":{"group":"Textfield","type":"string"}},"required":{"type":"boolean","default":false,"description":"Маркер «*» у метки + aria-required.","x-doc":{"group":"State","type":"boolean"}},"description":{"type":"string","description":"Пояснение под полем (shadcn FieldDescription).","x-doc":{"group":"Textfield","type":"string"}},"testId":{"type":"string","description":"data-testid для e2e (meta-проп; в DOM примитива не течёт).","x-doc":{"group":"Behavior","type":"string","kind":"readonly"}},"placeholder":{"type":"string","default":"Password","description":"Подсказка внутри поля.","x-doc":{"group":"Textfield","type":"string"}},"showToggle":{"type":"boolean","default":true,"description":"Показывать иконку переключения видимости (eye/eye-off). Появляется при непустом value.","x-doc":{"group":"Behavior","type":"boolean"}},"className":{"type":"string","description":"Доп. CSS-класс.","x-doc":{"group":"Control","type":"string","kind":"readonly"}}},"additionalProperties":false,"x-runtimeProps":{"value":{"group":"Control","type":"string | null","description":"Значение пароля. null/пусто — пустое поле."},"onChange":{"group":"Control","type":"(value: string | null) => void","description":"Изменение. Пустой ввод приводится к null."},"onBlur":{"group":"Control","type":"() => void","kind":"readonly","description":"Отметка touched. Форма подставляет control.markAsTouched."},"disabled":{"group":"State","type":"boolean","kind":"boolean","default":false,"description":"Блокировка поля. Задаётся через control.disable()/enable(), НЕ через componentProps: FormFieldControl.tsx:104-115 ставит disabled ПОСЛЕ спреда componentProps, поэтому componentProps.disabled мёртв."}}}},{"name":"Item","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"ItemActions","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Item"},{"name":"ItemContent","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Item"},{"name":"ItemDescription","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Item"},{"name":"ItemFooter","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Item"},{"name":"ItemGroup","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Item"},{"name":"ItemHeader","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Item"},{"name":"ItemMedia","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Item"},{"name":"ItemSeparator","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Item"},{"name":"ItemTitle","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Item"},{"name":"Kbd","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"KbdGroup","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Kbd"},{"name":"Label","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"Marker","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"MarkerContent","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Marker"},{"name":"MarkerIcon","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Marker"},{"name":"Menubar","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"MenubarCheckboxItem","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Menubar"},{"name":"MenubarContent","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Menubar"},{"name":"MenubarGroup","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Menubar"},{"name":"MenubarItem","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Menubar"},{"name":"MenubarLabel","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Menubar"},{"name":"MenubarMenu","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Menubar"},{"name":"MenubarRadioGroup","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Menubar"},{"name":"MenubarRadioItem","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Menubar"},{"name":"MenubarSeparator","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Menubar"},{"name":"MenubarShortcut","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Menubar"},{"name":"MenubarSub","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Menubar"},{"name":"MenubarSubContent","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Menubar"},{"name":"Message","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"MessageAvatar","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Message"},{"name":"MessageContent","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Message"},{"name":"MessageFooter","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Message"},{"name":"MessageGroup","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Message"},{"name":"MessageHeader","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Message"},{"name":"MessageScroller","role":"container","propsSchema":{"type":"object","additionalProperties":true},"subpath":"message-scroller"},{"name":"MessageScrollerButton","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"MessageScroller","subpath":"message-scroller"},{"name":"MessageScrollerContent","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"MessageScroller","subpath":"message-scroller"},{"name":"MessageScrollerItem","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"MessageScroller","subpath":"message-scroller"},{"name":"MessageScrollerViewport","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"MessageScroller","subpath":"message-scroller"},{"name":"NativeSelect","role":"field","propsSchema":{"type":"object","properties":{"label":{"type":"string","description":"Подпись поля (рендерит FormField.Label).","x-doc":{"group":"Textfield","type":"string"}},"required":{"type":"boolean","default":false,"description":"Маркер «*» у метки + aria-required.","x-doc":{"group":"State","type":"boolean"}},"description":{"type":"string","description":"Пояснение под полем (shadcn FieldDescription).","x-doc":{"group":"Textfield","type":"string"}},"testId":{"type":"string","description":"data-testid для e2e (meta-проп; в DOM примитива не течёт).","x-doc":{"group":"Behavior","type":"string","kind":"readonly"}},"options":{"type":"array","items":{"type":"object","required":["value","label"],"additionalProperties":false,"properties":{"value":{"type":["string","number"]},"label":{"type":"string"},"group":{"type":"string"}}},"description":"Опции списка. Одинаковый group объединяется в <optgroup>.","x-doc":{"group":"Options","type":"Array<{ value; label; group? }>","kind":"readonly"}},"placeholder":{"type":"string","description":"Подсказка-опция (value=\\"\\") в начале списка.","x-doc":{"group":"Textfield","type":"string"}},"className":{"type":"string","description":"Доп. CSS-класс select.","x-doc":{"group":"Control","type":"string","kind":"readonly"}}},"additionalProperties":false,"x-runtimeProps":{"value":{"group":"Control","type":"string | null","description":"Выбранное значение (option.value как строка). Пустой выбор → null."},"onChange":{"group":"Control","type":"(value: string | null) => void","description":"Изменение. Пустой выбор (value=\\"\\") → null."},"onBlur":{"group":"Control","type":"() => void","kind":"readonly","description":"Отметка touched. Форма подставляет control.markAsTouched."},"disabled":{"group":"State","type":"boolean","kind":"boolean","default":false,"description":"Блокировка поля. Задаётся через control.disable()/enable(), НЕ через componentProps: FormFieldControl.tsx:104-115 ставит disabled ПОСЛЕ спреда componentProps, поэтому componentProps.disabled мёртв."}}}},{"name":"NativeSelectOptGroup","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"NativeSelect"},{"name":"NativeSelectOption","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"NativeSelect"},{"name":"NativeSelectWithOptions","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"NativeSelect"},{"name":"NavigationMenu","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"NavigationMenuContent","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"NavigationMenu"},{"name":"NavigationMenuIndicator","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"NavigationMenu"},{"name":"NavigationMenuItem","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"NavigationMenu"},{"name":"NavigationMenuLink","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"NavigationMenu"},{"name":"NavigationMenuList","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"NavigationMenu"},{"name":"NavigationMenuViewport","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"NavigationMenu"},{"name":"Pagination","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"PaginationContent","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Pagination"},{"name":"PaginationEllipsis","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Pagination"},{"name":"PaginationItem","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Pagination"},{"name":"PaginationLink","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Pagination"},{"name":"PaginationNext","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Pagination"},{"name":"PaginationPrevious","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Pagination"},{"name":"Popover","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"PopoverAnchor","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Popover"},{"name":"PopoverContent","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Popover"},{"name":"PopoverDescription","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Popover"},{"name":"PopoverHeader","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Popover"},{"name":"PopoverTitle","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Popover"},{"name":"Progress","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"RadioGroup","role":"field","propsSchema":{"type":"object","properties":{"label":{"type":"string","description":"Подпись поля (рендерит FormField.Label).","x-doc":{"group":"Textfield","type":"string"}},"required":{"type":"boolean","default":false,"description":"Маркер «*» у метки + aria-required.","x-doc":{"group":"State","type":"boolean"}},"description":{"type":"string","description":"Пояснение под полем (shadcn FieldDescription).","x-doc":{"group":"Textfield","type":"string"}},"testId":{"type":"string","description":"data-testid для e2e (meta-проп; в DOM примитива не течёт).","x-doc":{"group":"Behavior","type":"string","kind":"readonly"}},"options":{"type":"array","items":{"type":"object","required":["value","label"],"additionalProperties":false,"properties":{"value":{"type":"string"},"label":{"type":"string"}}},"description":"Варианты выбора. Каждый рендерится как radio + подпись справа.","x-doc":{"group":"Options","type":"Array<{ value; label }>","kind":"readonly"}},"className":{"type":"string","description":"Доп. CSS-класс контейнера группы (по умолчанию grid gap-3).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}},"additionalProperties":false,"x-runtimeProps":{"value":{"group":"Control","type":"string | null","description":"Выбранное значение (option.value). null — ничего не выбрано."},"onChange":{"group":"Control","type":"(value: string | null) => void","description":"Выбор варианта; пустой выбор → null."},"onBlur":{"group":"Control","type":"() => void","kind":"readonly","description":"Отметка touched. Форма подставляет control.markAsTouched."},"disabled":{"group":"State","type":"boolean","kind":"boolean","default":false,"description":"Блокировка поля. Задаётся через control.disable()/enable(), НЕ через componentProps: FormFieldControl.tsx:104-115 ставит disabled ПОСЛЕ спреда componentProps, поэтому componentProps.disabled мёртв."}}}},{"name":"RadioGroupItem","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"RadioGroup"},{"name":"RadioGroupOptions","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"RadioGroup"},{"name":"Resizable","role":"container","propsSchema":{"type":"object","additionalProperties":true},"subpath":"resizable"},{"name":"ResizableHandle","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Resizable","subpath":"resizable"},{"name":"ResizablePanel","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Resizable","subpath":"resizable"},{"name":"ResizablePanelGroup","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Resizable","subpath":"resizable"},{"name":"ScrollArea","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"Section","role":"container","propsSchema":{"type":"object","additionalProperties":false,"x-registryName":"Section","properties":{"title":{"type":"string","description":"Заголовок секции. Не задан — заголовок не рендерится (только обёртка).","x-doc":{"group":"Textfield","type":"string"}},"titleAs":{"type":"string","enum":["h1","h2","h3","h4","h5","h6"],"default":"h3","description":"HTML-элемент заголовка (уровень h1-h6).","x-doc":{"group":"Behavior","type":"'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'","kind":"enum"}},"titleClassName":{"type":"string","description":"Доп. CSS-класс заголовка.","x-doc":{"group":"Control","type":"string","kind":"readonly"}},"className":{"type":"string","description":"Доп. CSS-класс контейнера \`<section>\` (напр. \`grid grid-cols-2 gap-4\`).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}}}},{"name":"Select","role":"field","propsSchema":{"type":"object","properties":{"label":{"type":"string","description":"Подпись поля (рендерит FormField.Label).","x-doc":{"group":"Textfield","type":"string"}},"required":{"type":"boolean","default":false,"description":"Маркер «*» у метки + aria-required.","x-doc":{"group":"State","type":"boolean"}},"description":{"type":"string","description":"Пояснение под полем (shadcn FieldDescription).","x-doc":{"group":"Textfield","type":"string"}},"testId":{"type":"string","description":"data-testid для e2e (meta-проп; в DOM примитива не течёт).","x-doc":{"group":"Behavior","type":"string","kind":"readonly"}},"className":{"type":"string","description":"Доп. CSS-класс триггера.","x-doc":{"group":"Control","type":"string","kind":"readonly"}},"options":{"type":"array","items":{"type":"object","required":["value","label"],"additionalProperties":false,"properties":{"value":{"type":["string","number"]},"label":{"type":"string"},"group":{"type":"string"}}},"description":"Inline-опции. Одинаковый group объединяется в секцию SelectLabel.","x-doc":{"group":"Options","type":"Array<{ value; label; group? }>","kind":"readonly"}},"placeholder":{"type":"string","default":"Select an option...","description":"Подсказка в триггере.","x-doc":{"group":"Textfield","type":"string"}},"clearable":{"type":"boolean","default":false,"description":"Показывать крестик очистки (сброс в null).","x-doc":{"group":"Behavior","type":"boolean"}}},"additionalProperties":false,"x-runtimeProps":{"value":{"group":"Control","type":"string | null","description":"Выбранное значение (option.value). null — ничего не выбрано."},"onChange":{"group":"Control","type":"(value: string | null) => void","description":"Выбор; при очистке приходит null."},"onBlur":{"group":"Control","type":"() => void","kind":"readonly","description":"Отметка touched. Форма подставляет control.markAsTouched."},"disabled":{"group":"State","type":"boolean","kind":"boolean","default":false,"description":"Блокировка поля. Задаётся через control.disable()/enable(), НЕ через componentProps: FormFieldControl.tsx:104-115 ставит disabled ПОСЛЕ спреда componentProps, поэтому componentProps.disabled мёртв."},"resource":{"group":"Options","type":"ResourceConfig<unknown>","description":"Асинхронный источник опций (static / preload / partial). В JSON-форме недостижим: требует функцию load."}}}},{"name":"SelectAsync","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Select"},{"name":"SelectContent","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Select"},{"name":"SelectGroup","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Select"},{"name":"SelectItem","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Select"},{"name":"SelectLabel","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Select"},{"name":"SelectScrollDownButton","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Select"},{"name":"SelectScrollUpButton","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Select"},{"name":"SelectSeparator","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Select"},{"name":"SelectValue","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Select"},{"name":"Separator","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"Sheet","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"SheetClose","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Sheet"},{"name":"SheetContent","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Sheet"},{"name":"SheetDescription","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Sheet"},{"name":"SheetFooter","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Sheet"},{"name":"SheetHeader","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Sheet"},{"name":"SheetTitle","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Sheet"},{"name":"Sidebar","role":"container","propsSchema":{"type":"object","additionalProperties":true},"subpath":"sidebar"},{"name":"SidebarContent","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Sidebar","subpath":"sidebar"},{"name":"SidebarFooter","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Sidebar","subpath":"sidebar"},{"name":"SidebarGroup","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Sidebar","subpath":"sidebar"},{"name":"SidebarGroupAction","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Sidebar","subpath":"sidebar"},{"name":"SidebarGroupContent","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Sidebar","subpath":"sidebar"},{"name":"SidebarGroupLabel","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Sidebar","subpath":"sidebar"},{"name":"SidebarHeader","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Sidebar","subpath":"sidebar"},{"name":"SidebarInput","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Sidebar","subpath":"sidebar"},{"name":"SidebarInset","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Sidebar","subpath":"sidebar"},{"name":"SidebarMenu","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Sidebar","subpath":"sidebar"},{"name":"SidebarMenuAction","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Sidebar","subpath":"sidebar"},{"name":"SidebarMenuBadge","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Sidebar","subpath":"sidebar"},{"name":"SidebarMenuButton","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Sidebar","subpath":"sidebar"},{"name":"SidebarMenuItem","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Sidebar","subpath":"sidebar"},{"name":"SidebarMenuSkeleton","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Sidebar","subpath":"sidebar"},{"name":"SidebarMenuSub","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Sidebar","subpath":"sidebar"},{"name":"SidebarMenuSubButton","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Sidebar","subpath":"sidebar"},{"name":"SidebarMenuSubItem","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Sidebar","subpath":"sidebar"},{"name":"SidebarRail","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Sidebar","subpath":"sidebar"},{"name":"SidebarSeparator","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Sidebar","subpath":"sidebar"},{"name":"Skeleton","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"Slider","role":"field","propsSchema":{"type":"object","properties":{"label":{"type":"string","description":"Подпись поля (рендерит FormField.Label).","x-doc":{"group":"Textfield","type":"string"}},"required":{"type":"boolean","default":false,"description":"Маркер «*» у метки + aria-required.","x-doc":{"group":"State","type":"boolean"}},"description":{"type":"string","description":"Пояснение под полем (shadcn FieldDescription).","x-doc":{"group":"Textfield","type":"string"}},"testId":{"type":"string","description":"data-testid для e2e (meta-проп; в DOM примитива не течёт).","x-doc":{"group":"Behavior","type":"string","kind":"readonly"}},"min":{"type":"number","default":0,"description":"Минимум диапазона (Radix min).","x-doc":{"group":"Behavior","type":"number"}},"max":{"type":"number","default":100,"description":"Максимум диапазона (Radix max).","x-doc":{"group":"Behavior","type":"number"}},"step":{"type":"number","default":1,"description":"Шаг изменения значения (Radix step).","x-doc":{"group":"Behavior","type":"number"}},"className":{"type":"string","description":"Доп. CSS-класс слайдера (SliderPrimitive.Root).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}},"additionalProperties":false,"x-runtimeProps":{"value":{"group":"Control","type":"number | null","description":"Значение слайдера (одно-thumb). null трактуется как min. Резолвится формой."},"onChange":{"group":"Control","type":"(value: number | null) => void","description":"Изменение; эмитит первое число массива Radix (onValueChange → arr[0])."},"onBlur":{"group":"Control","type":"() => void","kind":"readonly","description":"Отметка touched. Форма подставляет control.markAsTouched."},"disabled":{"group":"State","type":"boolean","kind":"boolean","default":false,"description":"Блокировка поля. Задаётся через control.disable()/enable(), НЕ через componentProps: FormFieldControl.tsx:104-115 ставит disabled ПОСЛЕ спреда componentProps, поэтому componentProps.disabled мёртв."}}}},{"name":"Sonner","role":"container","propsSchema":{"type":"object","additionalProperties":true},"subpath":"sonner"},{"name":"Spinner","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"State","role":"container","propsSchema":{"type":"object","additionalProperties":true},"subpath":"state"},{"name":"Switch","role":"field","propsSchema":{"type":"object","properties":{"label":{"type":"string","description":"Подпись справа от переключателя (inline-раскладка; FormField верхнюю метку не рисует).","x-doc":{"group":"Textfield","type":"string"}},"required":{"type":"boolean","default":false,"description":"Маркер «*» у метки + aria-required.","x-doc":{"group":"State","type":"boolean"}},"description":{"type":"string","description":"Пояснение под полем (shadcn FieldDescription).","x-doc":{"group":"Textfield","type":"string"}},"testId":{"type":"string","description":"data-testid для e2e (meta-проп; в DOM примитива не течёт).","x-doc":{"group":"Behavior","type":"string","kind":"readonly"}},"className":{"type":"string","description":"Доп. CSS-класс переключателя.","x-doc":{"group":"Control","type":"string","kind":"readonly"}}},"additionalProperties":false,"x-runtimeProps":{"value":{"group":"Control","type":"boolean","description":"Состояние переключателя (true — включён). Резолвится формой."},"onChange":{"group":"Control","type":"(value: boolean) => void","description":"Переключение; эмитит boolean (Radix onCheckedChange, indeterminate → false)."},"onBlur":{"group":"Control","type":"() => void","kind":"readonly","description":"Отметка touched. Форма подставляет control.markAsTouched."},"disabled":{"group":"State","type":"boolean","kind":"boolean","default":false,"description":"Блокировка поля. Задаётся через control.disable()/enable(), НЕ через componentProps: FormFieldControl.tsx:104-115 ставит disabled ПОСЛЕ спреда componentProps, поэтому componentProps.disabled мёртв."}}}},{"name":"Table","role":"container","propsSchema":{"type":"object","additionalProperties":true},"subpath":"table"},{"name":"TableBody","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Table","subpath":"table"},{"name":"TableCaption","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Table","subpath":"table"},{"name":"TableCell","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Table","subpath":"table"},{"name":"TableFooter","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Table","subpath":"table"},{"name":"TableHead","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Table","subpath":"table"},{"name":"TableHeader","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Table","subpath":"table"},{"name":"TableRow","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Table","subpath":"table"},{"name":"Tabs","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"TabsContent","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Tabs"},{"name":"TabsList","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Tabs"},{"name":"Textarea","role":"field","propsSchema":{"type":"object","properties":{"label":{"type":"string","description":"Подпись поля (рендерит FormField.Label).","x-doc":{"group":"Textfield","type":"string"}},"required":{"type":"boolean","default":false,"description":"Маркер «*» у метки + aria-required.","x-doc":{"group":"State","type":"boolean"}},"description":{"type":"string","description":"Пояснение под полем (shadcn FieldDescription).","x-doc":{"group":"Textfield","type":"string"}},"testId":{"type":"string","description":"data-testid для e2e (meta-проп; в DOM примитива не течёт).","x-doc":{"group":"Behavior","type":"string","kind":"readonly"}},"placeholder":{"type":"string","description":"Подсказка внутри поля.","x-doc":{"group":"Textfield","type":"string"}},"rows":{"type":"number","description":"Число видимых строк (HTML-атрибут rows).","x-doc":{"group":"Behavior","type":"number"}},"className":{"type":"string","description":"Доп. CSS-класс.","x-doc":{"group":"Control","type":"string","kind":"readonly"}}},"additionalProperties":false,"x-runtimeProps":{"value":{"group":"Control","type":"string | null","description":"Значение поля. Пустой ввод → null."},"onChange":{"group":"Control","type":"(value: string | null) => void","description":"Изменение. Пустой ввод → null."},"onBlur":{"group":"Control","type":"() => void","kind":"readonly","description":"Отметка touched. Форма подставляет control.markAsTouched."},"disabled":{"group":"State","type":"boolean","kind":"boolean","default":false,"description":"Блокировка поля. Задаётся через control.disable()/enable(), НЕ через componentProps: FormFieldControl.tsx:104-115 ставит disabled ПОСЛЕ спреда componentProps, поэтому componentProps.disabled мёртв."}}}},{"name":"Toggle","role":"field","propsSchema":{"type":"object","properties":{"label":{"type":"string","description":"Подпись поля (рендерит FormField.Label).","x-doc":{"group":"Textfield","type":"string"}},"required":{"type":"boolean","default":false,"description":"Маркер «*» у метки + aria-required.","x-doc":{"group":"State","type":"boolean"}},"description":{"type":"string","description":"Пояснение под полем (shadcn FieldDescription).","x-doc":{"group":"Textfield","type":"string"}},"testId":{"type":"string","description":"data-testid для e2e (meta-проп; в DOM примитива не течёт).","x-doc":{"group":"Behavior","type":"string","kind":"readonly"}},"variant":{"type":"string","enum":["default","outline"],"default":"default","description":"Стиль cva: default (заливка при нажатии) | outline (граница).","x-doc":{"group":"Control","type":"'default' | 'outline'","kind":"enum"}},"size":{"type":"string","enum":["default","sm","lg"],"default":"default","description":"Размер cva: default | sm | lg.","x-doc":{"group":"Control","type":"'default' | 'sm' | 'lg'","kind":"enum"}},"className":{"type":"string","description":"Доп. CSS-класс контрола (TogglePrimitive.Root).","x-doc":{"group":"Control","type":"string","kind":"readonly"}}},"additionalProperties":false,"x-runtimeProps":{"value":{"group":"Control","type":"boolean","description":"Состояние (true — нажат/pressed). undefined/null трактуется как false. Резолвится формой."},"onChange":{"group":"Control","type":"(value: boolean) => void","description":"Переключение; эмитит boolean (Radix onPressedChange)."},"onBlur":{"group":"Control","type":"() => void","kind":"readonly","description":"Отметка touched. Форма подставляет control.markAsTouched."},"disabled":{"group":"State","type":"boolean","kind":"boolean","default":false,"description":"Блокировка поля. Задаётся через control.disable()/enable(), НЕ через componentProps: FormFieldControl.tsx:104-115 ставит disabled ПОСЛЕ спреда componentProps, поэтому componentProps.disabled мёртв."}}}},{"name":"ToggleGroup","role":"field","propsSchema":{"type":"object","properties":{"label":{"type":"string","description":"Подпись поля (рендерит FormField.Label).","x-doc":{"group":"Textfield","type":"string"}},"required":{"type":"boolean","default":false,"description":"Маркер «*» у метки + aria-required.","x-doc":{"group":"State","type":"boolean"}},"description":{"type":"string","description":"Пояснение под полем (shadcn FieldDescription).","x-doc":{"group":"Textfield","type":"string"}},"testId":{"type":"string","description":"data-testid для e2e (meta-проп; в DOM примитива не течёт).","x-doc":{"group":"Behavior","type":"string","kind":"readonly"}},"options":{"type":"array","items":{"type":"object","required":["value","label"],"additionalProperties":false,"properties":{"value":{"type":"string"},"label":{"type":"string"}}},"description":"Варианты выбора. Каждый рендерится как кнопка-переключатель.","x-doc":{"group":"Options","type":"Array<{ value; label }>","kind":"readonly"}},"variant":{"type":"string","enum":["default","outline"],"default":"default","description":"Визуальный стиль кнопок: плоские (default) или с рамкой (outline).","x-doc":{"group":"Control","type":"'default' | 'outline'"}},"className":{"type":"string","description":"Доп. CSS-класс контейнера группы.","x-doc":{"group":"Control","type":"string","kind":"readonly"}}},"additionalProperties":false,"x-runtimeProps":{"value":{"group":"Control","type":"string | null","description":"Выбранное значение (option.value). null — ничего не выбрано."},"onChange":{"group":"Control","type":"(value: string | null) => void","description":"Выбор варианта; пустой выбор → null."},"onBlur":{"group":"Control","type":"() => void","kind":"readonly","description":"Отметка touched. Форма подставляет control.markAsTouched."},"disabled":{"group":"State","type":"boolean","kind":"boolean","default":false,"description":"Блокировка поля. Задаётся через control.disable()/enable(), НЕ через componentProps: FormFieldControl.tsx:104-115 ставит disabled ПОСЛЕ спреда componentProps, поэтому componentProps.disabled мёртв."}}}},{"name":"ToggleGroupItem","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"ToggleGroup"},{"name":"ToggleGroupOptions","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"ToggleGroup"},{"name":"Tooltip","role":"container","propsSchema":{"type":"object","additionalProperties":true}},{"name":"TooltipContent","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Tooltip"},{"name":"Typography","role":"container","propsSchema":{"type":"object","additionalProperties":true},"subpath":"typography"},{"name":"TypographyBlockquote","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Typography"},{"name":"TypographyH1","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Typography"},{"name":"TypographyH2","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Typography"},{"name":"TypographyH3","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Typography"},{"name":"TypographyH4","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Typography"},{"name":"TypographyInlineCode","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Typography"},{"name":"TypographyLarge","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Typography"},{"name":"TypographyLead","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Typography"},{"name":"TypographyList","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Typography"},{"name":"TypographyMuted","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Typography"},{"name":"TypographyP","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Typography"},{"name":"TypographySmall","role":"container","propsSchema":{"type":"object","additionalProperties":true},"compoundParent":"Typography"}]`),Oa={$schema:Ia,version:Ra,kit:Aa,components:Ma},Da="../../projects/reformer-builder/src/catalog/component-catalog.schema.json",Fa="2.0",Ba={id:"hexa-ui",label:"Kaspersky HexaUI",package:"@kaspersky/hexa-ui",version:"6.387.4",peerRanges:{react:"16.x || 17.x || 18.x"},resolve:{fieldSuffix:"Field"},infra:{fieldWrapper:"FormField"},adapters:{wizard:null,step:null,provider:{symbol:"KitProvider"}},styles:{mode:"standalone",href:"@kaspersky/hexa-ui/design-system/global-style/styles.css"},palette:{categoryByName:{Input:"Поля ввода",InputPassword:"Поля ввода",InputNumber:"Поля ввода",Textarea:"Поля ввода",Checkbox:"Выбор и переключатели",Select:"Выбор и переключатели",Box:"Контейнеры",Section:"Контейнеры",Card:"Контейнеры",Panel:"Контейнеры",Space:"Контейнеры",Button:"Действия",Alert:"Отображение",Badge:"Отображение",Tag:"Отображение",Label:"Отображение",Link:"Отображение",Separator:"Отображение",Spinner:"Отображение",Progress:"Отображение",Skeleton:"Отображение"}},codegen:{importSpecifier:"@reformer/kit-hexa-ui"}},qa=[{name:"Input",role:"field",exportName:"InputField",propsSchema:{type:"object",additionalProperties:!1,properties:{label:{type:"string",description:"Подпись поля.","x-doc":{group:"Control",type:"string"}},required:{type:"boolean",default:!1,description:"Обязательное поле.","x-doc":{group:"Control",type:"boolean"}},placeholder:{type:"string",description:"Подсказка в пустом поле.","x-doc":{group:"Textfield",type:"string"}},disabled:{type:"boolean",default:!1,description:"Поле недоступно.","x-doc":{group:"State",type:"boolean"}},testId:{type:"string",description:"Префикс data-testid.","x-doc":{group:"Behavior",type:"string"}},className:{type:"string",description:"CSS-классы.","x-doc":{group:"Control",type:"string"}}},"x-runtimeProps":{value:{group:"Control",type:"string",description:"Значение поля."},onChange:{group:"Control",type:"(value: string) => void",description:"Изменение значения."}}}},{name:"Textarea",role:"field",exportName:"TextareaField",propsSchema:{type:"object",additionalProperties:!1,properties:{label:{type:"string","x-doc":{group:"Control",type:"string"}},required:{type:"boolean",default:!1,"x-doc":{group:"Control",type:"boolean"}},placeholder:{type:"string","x-doc":{group:"Textfield",type:"string"}},rows:{type:"number",minimum:1,description:"Высота в строках.","x-doc":{group:"Textfield",type:"number"}},disabled:{type:"boolean",default:!1,"x-doc":{group:"State",type:"boolean"}},testId:{type:"string","x-doc":{group:"Behavior",type:"string"}},className:{type:"string","x-doc":{group:"Control",type:"string"}}},"x-runtimeProps":{value:{group:"Control",type:"string",description:"Значение поля."},onChange:{group:"Control",type:"(value: string) => void",description:"Изменение значения."}}}},{name:"InputPassword",role:"field",exportName:"InputPasswordField",propsSchema:{type:"object",additionalProperties:!1,properties:{label:{type:"string","x-doc":{group:"Control",type:"string"}},required:{type:"boolean",default:!1,"x-doc":{group:"Control",type:"boolean"}},placeholder:{type:"string","x-doc":{group:"Textfield",type:"string"}},disabled:{type:"boolean",default:!1,"x-doc":{group:"State",type:"boolean"}},testId:{type:"string","x-doc":{group:"Behavior",type:"string"}},className:{type:"string","x-doc":{group:"Control",type:"string"}}},"x-runtimeProps":{value:{group:"Control",type:"string",description:"Значение поля."},onChange:{group:"Control",type:"(value: string) => void",description:"Изменение значения."}}}},{name:"InputNumber",role:"field",exportName:"InputNumberField",propsSchema:{type:"object",additionalProperties:!1,properties:{label:{type:"string","x-doc":{group:"Control",type:"string"}},required:{type:"boolean",default:!1,"x-doc":{group:"Control",type:"boolean"}},min:{type:"number","x-doc":{group:"Textfield",type:"number"}},max:{type:"number","x-doc":{group:"Textfield",type:"number"}},disabled:{type:"boolean",default:!1,"x-doc":{group:"State",type:"boolean"}},testId:{type:"string","x-doc":{group:"Behavior",type:"string"}},className:{type:"string","x-doc":{group:"Control",type:"string"}}},"x-runtimeProps":{value:{group:"Control",type:"number | null",description:"Значение поля."},onChange:{group:"Control",type:"(value: number | null) => void",description:"Изменение значения."}}}},{name:"Checkbox",role:"field",exportName:"CheckboxField",propsSchema:{type:"object",additionalProperties:!1,properties:{label:{type:"string",description:"Подпись рядом с чекбоксом.","x-doc":{group:"Control",type:"string"}},required:{type:"boolean",default:!1,"x-doc":{group:"Control",type:"boolean"}},disabled:{type:"boolean",default:!1,"x-doc":{group:"State",type:"boolean"}},testId:{type:"string","x-doc":{group:"Behavior",type:"string"}},className:{type:"string","x-doc":{group:"Control",type:"string"}}},"x-runtimeProps":{value:{group:"Control",type:"boolean",description:"Отмечен ли чекбокс."},onChange:{group:"Control",type:"(value: boolean) => void",description:"Изменение состояния."}}}},{name:"Select",role:"field",exportName:"SelectField",propsSchema:{type:"object",additionalProperties:!1,properties:{label:{type:"string","x-doc":{group:"Control",type:"string"}},required:{type:"boolean",default:!1,"x-doc":{group:"Control",type:"boolean"}},placeholder:{type:"string","x-doc":{group:"Textfield",type:"string"}},options:{type:"array",description:"Варианты выбора: { value, label }.",items:{type:"object"},"x-doc":{group:"Options",type:"OptionType[]"}},mode:{type:"string",enum:["multiple","tags"],description:"Множественный выбор.","x-doc":{group:"Behavior",type:"'multiple' | 'tags'",kind:"enum"}},disabled:{type:"boolean",default:!1,"x-doc":{group:"State",type:"boolean"}},testId:{type:"string","x-doc":{group:"Behavior",type:"string"}},className:{type:"string","x-doc":{group:"Control",type:"string"}}},"x-runtimeProps":{value:{group:"Control",type:"string | number",description:"Выбранное значение."},onChange:{group:"Control",type:"(value: unknown) => void",description:"Изменение выбора."}}}},{name:"Box",role:"container",propsSchema:{type:"object",additionalProperties:!1,properties:{className:{type:"string",description:"CSS-классы контейнера.","x-doc":{group:"Control",type:"string"}}}}},{name:"Section",role:"container",propsSchema:{type:"object",additionalProperties:!1,properties:{className:{type:"string","x-doc":{group:"Control",type:"string"}}}}},{name:"Card",role:"container",propsSchema:{type:"object",additionalProperties:!0}},{name:"Panel",role:"container",propsSchema:{type:"object",additionalProperties:!0}},{name:"Space",role:"container",propsSchema:{type:"object",additionalProperties:!0}},{name:"Button",role:"container",propsSchema:{type:"object",additionalProperties:!0}},{name:"Alert",role:"container",propsSchema:{type:"object",additionalProperties:!0}},{name:"Badge",role:"container",propsSchema:{type:"object",additionalProperties:!0}},{name:"Tag",role:"container",propsSchema:{type:"object",additionalProperties:!0}},{name:"Label",role:"container",propsSchema:{type:"object",additionalProperties:!0}},{name:"Link",role:"container",propsSchema:{type:"object",additionalProperties:!0}},{name:"Separator",role:"container",exportName:"Divider",leaf:!0,propsSchema:{type:"object",additionalProperties:!0}},{name:"Spinner",role:"container",exportName:"Loader",leaf:!0,propsSchema:{type:"object",additionalProperties:!0}},{name:"Progress",role:"container",exportName:"ProgressBar",leaf:!0,propsSchema:{type:"object",additionalProperties:!0}},{name:"Skeleton",role:"container",leaf:!0,propsSchema:{type:"object",additionalProperties:!0}}],za={$schema:Da,version:Fa,kit:Ba,components:qa},_o="reformer-ui-kit",wo=[{id:_o,label:"ReFormer UI Kit",version:"workspace",catalog:Ea,loadNamespace:async()=>(await kt(async()=>{const{REFORMER_UI_KIT_NAMESPACE:e}=await import("./reformer-ui-kit-CzN5mDMr.js").then(t=>t.al);return{REFORMER_UI_KIT_NAMESPACE:e}},__vite__mapDeps([0,1,2,3,4]))).REFORMER_UI_KIT_NAMESPACE},{id:"reformer-ui-kit-11",label:"ReFormer UI Kit",version:"11.0.0",catalog:Oa,loadNamespace:async()=>(await kt(async()=>{const{REFORMER_UI_KIT_11_NAMESPACE:e}=await import("./reformer-ui-kit-11-CeSX1KRr.js");return{REFORMER_UI_KIT_11_NAMESPACE:e}},__vite__mapDeps([5,1,2,3,4,6]))).REFORMER_UI_KIT_11_NAMESPACE},{id:"hexa-ui",label:"Kaspersky HexaUI",version:"6.387.4",catalog:za,loadNamespace:async()=>(await kt(async()=>{const{HEXA_UI_NAMESPACE:e}=await import("./index-IZOejzqt.js").then(t=>t.i);return{HEXA_UI_NAMESPACE:e}},__vite__mapDeps([7,1,2,4,8]))).HEXA_UI_NAMESPACE}];function li(){return wo}function io(e){return wo.find(t=>t.id===e)}function La(e){return(e?io(e):void 0)??io(_o)}const Vt="reformer-builder:active-kit";function Ga(){try{return localStorage.getItem(Vt)}catch{return null}}function ci(e){try{localStorage.setItem(Vt,e)}catch{}}function ui(){try{localStorage.removeItem(Vt)}catch{}}const Va=ja;function Ua(e,t,u){const n=So().palette?.categoryByName?.[e];return n||(e.startsWith("Typography")?"Типографика":u[e]??(t==="container"?"Контейнеры":"Прочее"))}function Ka(e,t){let u=e;if(t?.include&&t.include.length){const n=new Set(t.include);u=u.filter(v=>n.has(v.name))}if(t?.exclude&&t.exclude.length){const n=new Set(t.exclude);u=u.filter(v=>!n.has(v.name))}return u}function mi(){const e=So().components,t=Dn()??La(Ga()).catalog,u=[...t.components,...Hn(e?.synthetic)];return{version:t.version,components:Ka(u,e),...t.kit?{kit:t.kit}:{}}}function yi(e,t=Po(e)){const u=t.palette.categoryByName;return e.components.map(n=>({name:n.name,role:n.role,category:n.category??Ua(n.compoundParent??n.name,n.role,u),propsSchema:n.propsSchema,...n.variantGroup?{variantGroup:n.variantGroup}:{},...n.variant?{variant:n.variant}:{},...n.compoundParent?{compoundParent:n.compoundParent}:{},...n.exportName?{exportName:n.exportName}:{},...n.subpath?{subpath:n.subpath}:{},makeNode:()=>ga(n.name,n.role,n.compoundParent)}))}let gt=null;function Ha(e){gt||(gt=new go({allErrors:!0,strict:!1}).compile(Va));const t=gt(e),u=(gt.errors??[]).map(n=>`${n.instancePath||"/"} ${n.message??""}`.trim());return{valid:!!t,errors:u}}const Wa="http://json-schema.org/draft-07/schema#",Ja="https://reformer.dev/schemas/reformer-builder-config",Ya="ReFormer Builder runtime config",Xa="Runtime-конфигурация UI-Builder, передаваемая клиентом при локальном старте (reformer-builder.config.json). Все секции опциональны; отсутствие ⇒ встроенные дефолты.",Qa="object",Za=!1,ei={$schema:{type:"string"},version:{type:"string"},branding:{type:"object",additionalProperties:!1,properties:{productName:{type:"string"},title:{type:"string"},logoUrl:{type:"string"}}},palette:{type:"object",additionalProperties:!1,properties:{categoryByName:{type:"object",additionalProperties:{type:"string"}},order:{type:"array",items:{type:"string"}},collapsedByDefault:{type:"array",items:{type:"string"}},glyphs:{type:"object",additionalProperties:{type:"string"}}}},components:{type:"object",additionalProperties:!1,properties:{include:{type:"array",items:{type:"string"}},exclude:{type:"array",items:{type:"string"}},synthetic:{type:"object",additionalProperties:!1,properties:{html:{type:"boolean"},htmlTags:{type:"array",items:{type:"string"}},formArray:{type:"boolean"},wizard:{type:"boolean"}}}}},ui:{type:"object",additionalProperties:!1,properties:{theme:{type:"string",enum:["light","dark"]},leftPanel:{type:["string","null"],enum:["files","palette","templates",null]},rightOpen:{type:"boolean"},preview:{type:"string",enum:["wire","runtime","code"]},runtimeMode:{type:"string",enum:["edit","test"]},bottomTab:{type:"string",enum:["raw","model","registry"]},hideDivWrappers:{type:"boolean"}}},project:{type:"object",additionalProperties:!1,properties:{formSchemaMarkers:{type:"array",items:{type:"string"}},ignoreDirs:{type:"array",items:{type:"string"}},skipFiles:{type:"array",items:{type:"string"}},templatesDir:{type:"string"},seedSchema:{type:["object","null"]}}}},ti={$schema:Wa,$id:Ja,title:Ya,description:Xa,type:Qa,additionalProperties:Za,properties:ei},ri="__reformer-builder/runtime.json";class so extends Error{source;errors;constructor(t,u){super(`Невалидный ${t==="config"?"конфиг билдера":"каталог компонентов"}:
10
+ `+u.map(n=>` • ${n}`).join(`
11
+ `)),this.name="RuntimeBundleError",this.source=t,this.errors=u}}let ht=null;function oi(e){ht||(ht=new go({allErrors:!0,strict:!1}).compile(ti));const t=ht(e),u=(ht.errors??[]).map(n=>`${n.instancePath||"/"} ${n.message??""}`.trim());return{valid:!!t,errors:u}}function ni(){return"/".endsWith("/")?"/":"//"}async function ai(){let e;try{e=await fetch(`${ni()}${ri}`,{cache:"no-cache"})}catch{return null}if(!e.ok||!(e.headers.get("content-type")??"").includes("application/json"))return null;try{const u=await e.json();return!u||typeof u!="object"?null:{catalog:u.catalog??null,config:u.config??null}}catch{return null}}async function fi(){const e=await ai();if(e){if(e.config!=null){const{valid:t,errors:u}=oi(e.config);if(!t)throw new so("config",u);On(e.config)}if(e.catalog!=null){const{valid:t,errors:u}=Ha(e.catalog);if(!t)throw new so("catalog",u);Fn(e.catalog)}}}export{_o as D,si as I,vo as N,Jn as O,so as R,Yn as S,So as a,yi as b,li as c,ci as d,pi as e,fi as f,ia as g,Ga as h,La as i,ui as j,io as k,mi as l,di as s,Po as t};