@satoshibits/react-json-schema-builder 1.1.3 → 1.1.5

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 (196) hide show
  1. package/dist/index.cjs.js +1 -1
  2. package/dist/index.cjs10.js +1 -1
  3. package/dist/index.cjs10.js.map +1 -1
  4. package/dist/index.cjs11.js +1 -1
  5. package/dist/index.cjs11.js.map +1 -1
  6. package/dist/index.cjs12.js +1 -1
  7. package/dist/index.cjs12.js.map +1 -1
  8. package/dist/index.cjs13.js +1 -1
  9. package/dist/index.cjs13.js.map +1 -1
  10. package/dist/index.cjs14.js +1 -1
  11. package/dist/index.cjs14.js.map +1 -1
  12. package/dist/index.cjs15.js +6 -1
  13. package/dist/index.cjs15.js.map +1 -1
  14. package/dist/index.cjs16.js +1 -1
  15. package/dist/index.cjs16.js.map +1 -1
  16. package/dist/index.cjs17.js +1 -1
  17. package/dist/index.cjs17.js.map +1 -1
  18. package/dist/index.cjs18.js +1 -1
  19. package/dist/index.cjs18.js.map +1 -1
  20. package/dist/index.cjs19.js +1 -1
  21. package/dist/index.cjs19.js.map +1 -1
  22. package/dist/index.cjs2.js +1 -1
  23. package/dist/index.cjs2.js.map +1 -1
  24. package/dist/index.cjs20.js +1 -1
  25. package/dist/index.cjs20.js.map +1 -1
  26. package/dist/index.cjs21.js +1 -1
  27. package/dist/index.cjs21.js.map +1 -1
  28. package/dist/index.cjs22.js +1 -1
  29. package/dist/index.cjs22.js.map +1 -1
  30. package/dist/index.cjs23.js +1 -6
  31. package/dist/index.cjs23.js.map +1 -1
  32. package/dist/index.cjs24.js +1 -6
  33. package/dist/index.cjs24.js.map +1 -1
  34. package/dist/index.cjs25.js +1 -6
  35. package/dist/index.cjs25.js.map +1 -1
  36. package/dist/index.cjs26.js +1 -1
  37. package/dist/index.cjs26.js.map +1 -1
  38. package/dist/index.cjs27.js +1 -1
  39. package/dist/index.cjs27.js.map +1 -1
  40. package/dist/index.cjs28.js +6 -1
  41. package/dist/index.cjs28.js.map +1 -1
  42. package/dist/index.cjs29.js +6 -1
  43. package/dist/index.cjs29.js.map +1 -1
  44. package/dist/index.cjs3.js +1 -1
  45. package/dist/index.cjs3.js.map +1 -1
  46. package/dist/index.cjs30.js +1 -1
  47. package/dist/index.cjs30.js.map +1 -1
  48. package/dist/index.cjs31.js +1 -1
  49. package/dist/index.cjs34.js +1 -1
  50. package/dist/index.cjs36.js +1 -1
  51. package/dist/index.cjs37.js +1 -1
  52. package/dist/index.cjs38.js +1 -1
  53. package/dist/index.cjs39.js +1 -1
  54. package/dist/index.cjs4.js +1 -1
  55. package/dist/index.cjs4.js.map +1 -1
  56. package/dist/index.cjs41.js +1 -1
  57. package/dist/index.cjs42.js +1 -1
  58. package/dist/index.cjs42.js.map +1 -1
  59. package/dist/index.cjs43.js +1 -1
  60. package/dist/index.cjs47.js +1 -1
  61. package/dist/index.cjs5.js +1 -1
  62. package/dist/index.cjs5.js.map +1 -1
  63. package/dist/index.cjs55.js +1 -5
  64. package/dist/index.cjs55.js.map +1 -1
  65. package/dist/index.cjs56.js +1 -1
  66. package/dist/index.cjs56.js.map +1 -1
  67. package/dist/index.cjs57.js +1 -1
  68. package/dist/index.cjs57.js.map +1 -1
  69. package/dist/index.cjs58.js +1 -1
  70. package/dist/index.cjs58.js.map +1 -1
  71. package/dist/index.cjs59.js +1 -1
  72. package/dist/index.cjs59.js.map +1 -1
  73. package/dist/index.cjs6.js +1 -1
  74. package/dist/index.cjs6.js.map +1 -1
  75. package/dist/index.cjs60.js +1 -1
  76. package/dist/index.cjs60.js.map +1 -1
  77. package/dist/index.cjs61.js +1 -1
  78. package/dist/index.cjs61.js.map +1 -1
  79. package/dist/index.cjs62.js +5 -1
  80. package/dist/index.cjs62.js.map +1 -1
  81. package/dist/index.cjs63.js +1 -1
  82. package/dist/index.cjs63.js.map +1 -1
  83. package/dist/index.cjs65.js +1 -1
  84. package/dist/index.cjs67.js +1 -1
  85. package/dist/index.cjs69.js +1 -1
  86. package/dist/index.cjs7.js +1 -1
  87. package/dist/index.cjs7.js.map +1 -1
  88. package/dist/index.cjs71.js +1 -1
  89. package/dist/index.cjs72.js +1 -1
  90. package/dist/index.cjs75.js +1 -1
  91. package/dist/index.cjs78.js +1 -1
  92. package/dist/index.cjs8.js +1 -1
  93. package/dist/index.cjs8.js.map +1 -1
  94. package/dist/index.cjs81.js +1 -1
  95. package/dist/index.cjs9.js +1 -1
  96. package/dist/index.cjs9.js.map +1 -1
  97. package/dist/index.d.mts +5 -4
  98. package/dist/index.d.mts.map +1 -1
  99. package/dist/index.es.js +18 -28
  100. package/dist/index.es10.js +22 -22
  101. package/dist/index.es10.js.map +1 -1
  102. package/dist/index.es11.js +14 -42
  103. package/dist/index.es11.js.map +1 -1
  104. package/dist/index.es12.js +5 -65
  105. package/dist/index.es12.js.map +1 -1
  106. package/dist/index.es13.js +43 -24
  107. package/dist/index.es13.js.map +1 -1
  108. package/dist/index.es14.js +21 -126
  109. package/dist/index.es14.js.map +1 -1
  110. package/dist/index.es15.js +13 -20
  111. package/dist/index.es15.js.map +1 -1
  112. package/dist/index.es16.js +129 -130
  113. package/dist/index.es16.js.map +1 -1
  114. package/dist/index.es17.js +3 -137
  115. package/dist/index.es17.js.map +1 -1
  116. package/dist/index.es18.js +20 -61
  117. package/dist/index.es18.js.map +1 -1
  118. package/dist/index.es19.js +65 -10
  119. package/dist/index.es19.js.map +1 -1
  120. package/dist/index.es2.js +156 -113
  121. package/dist/index.es2.js.map +1 -1
  122. package/dist/index.es20.js +134 -22
  123. package/dist/index.es20.js.map +1 -1
  124. package/dist/index.es21.js +131 -421
  125. package/dist/index.es21.js.map +1 -1
  126. package/dist/index.es22.js +63 -5
  127. package/dist/index.es22.js.map +1 -1
  128. package/dist/index.es23.js +11 -13
  129. package/dist/index.es23.js.map +1 -1
  130. package/dist/index.es24.js +23 -16
  131. package/dist/index.es24.js.map +1 -1
  132. package/dist/index.es25.js +428 -13
  133. package/dist/index.es25.js.map +1 -1
  134. package/dist/index.es26.js +7 -13
  135. package/dist/index.es26.js.map +1 -1
  136. package/dist/index.es27.js +9 -3
  137. package/dist/index.es27.js.map +1 -1
  138. package/dist/index.es28.js +13 -19
  139. package/dist/index.es28.js.map +1 -1
  140. package/dist/index.es29.js +19 -23
  141. package/dist/index.es29.js.map +1 -1
  142. package/dist/index.es3.js +129 -340
  143. package/dist/index.es3.js.map +1 -1
  144. package/dist/index.es30.js +4 -7
  145. package/dist/index.es30.js.map +1 -1
  146. package/dist/index.es31.js +1 -1
  147. package/dist/index.es34.js +1 -1
  148. package/dist/index.es36.js +7 -7
  149. package/dist/index.es37.js +3 -3
  150. package/dist/index.es38.js +3 -3
  151. package/dist/index.es39.js +2 -2
  152. package/dist/index.es4.js +92 -70
  153. package/dist/index.es4.js.map +1 -1
  154. package/dist/index.es41.js +2 -2
  155. package/dist/index.es42.js +4 -4
  156. package/dist/index.es43.js +6 -6
  157. package/dist/index.es47.js +4 -4
  158. package/dist/index.es5.js +225 -79
  159. package/dist/index.es5.js.map +1 -1
  160. package/dist/index.es55.js +30 -252
  161. package/dist/index.es55.js.map +1 -1
  162. package/dist/index.es56.js +26 -21
  163. package/dist/index.es56.js.map +1 -1
  164. package/dist/index.es57.js +6 -32
  165. package/dist/index.es57.js.map +1 -1
  166. package/dist/index.es58.js +62 -23
  167. package/dist/index.es58.js.map +1 -1
  168. package/dist/index.es59.js +29 -6
  169. package/dist/index.es59.js.map +1 -1
  170. package/dist/index.es6.js +117 -57
  171. package/dist/index.es6.js.map +1 -1
  172. package/dist/index.es60.js +4 -64
  173. package/dist/index.es60.js.map +1 -1
  174. package/dist/index.es61.js +24 -29
  175. package/dist/index.es61.js.map +1 -1
  176. package/dist/index.es62.js +254 -5
  177. package/dist/index.es62.js.map +1 -1
  178. package/dist/index.es63.js +21 -24
  179. package/dist/index.es63.js.map +1 -1
  180. package/dist/index.es65.js +2 -2
  181. package/dist/index.es67.js +3 -3
  182. package/dist/index.es69.js +2 -2
  183. package/dist/index.es7.js +345 -48
  184. package/dist/index.es7.js.map +1 -1
  185. package/dist/index.es71.js +4 -4
  186. package/dist/index.es72.js +1 -1
  187. package/dist/index.es75.js +1 -1
  188. package/dist/index.es78.js +1 -1
  189. package/dist/index.es8.js +73 -163
  190. package/dist/index.es8.js.map +1 -1
  191. package/dist/index.es81.js +1 -1
  192. package/dist/index.es9.js +18 -3
  193. package/dist/index.es9.js.map +1 -1
  194. package/dist/packages/builder/add-dialog.d.ts +5 -5
  195. package/dist/packages/builder/context.d.ts.map +1 -1
  196. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),d=require("./index.cjs28.js"),m=require("./index.cjs29.js"),p=require("./index.cjs15.js"),b=require("./index.cjs22.js"),x=require("./index.cjs4.js"),j=require("./index.cjs11.js"),h=require("./index.cjs30.js"),n=({constraintName:s,value:i,onConstraintChange:o,disabled:c,error:t,onRemoveConstraint:a})=>{const{getConstraintDefinition:u}=x.useConstraints(),r=u(s);return r?e.jsx(m.InputErrorWrapper,{errorCode:t?.code,errorDescription:t?.message,showError:!!t,children:e.jsxs("div",{children:[e.jsx(p.Label,{className:"mb-2",htmlFor:r.name,children:r.name}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(d.Input,{id:r.name,type:"number",value:i,onChange:l=>o(Number(l.target.value)),disabled:c,min:0,className:b.cn({"border-destructive":t})}),e.jsx(j.Button,{type:"button",variant:"ghost",size:"icon",onClick:()=>a(),children:e.jsx(h.default,{className:"size-4"})})]}),r.description&&e.jsx("div",{className:"mt-2 text-sm text-gray-500",children:r.description})]})}):null},g=n,q=n;exports.ObjectMaxPropertiesRenderer=q;exports.ObjectMinPropertiesRenderer=g;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),s=require("react"),ie=require("./index.cjs6.js"),u=require("./index.cjs13.js"),d=require("./index.cjs19.js"),se=require("./index.cjs14.js"),r=require("./index.cjs16.js"),$=require("./index.cjs11.js"),ae=require("./index.cjs18.js"),L=require("./index.cjs8.js"),oe=require("./index.cjs20.js"),a=require("./index.cjs21.js"),S=require("./index.cjs22.js"),ce=require("./index.cjs23.js"),de=require("ajv"),p=require("./index.cjs24.js"),ue=require("./index.cjs25.js"),C=require("./index.cjs12.js"),he=require("./index.cjs26.js"),me=require("./index.cjs27.js"),je=require("./index.cjs28.js"),xe=require("./index.cjs29.js"),ge=require("./index.cjs30.js"),be=i=>{const[O,m]=s.useState(!1),[k,b]=s.useState(!1),[F,j]=s.useState(!1),[x,f]=s.useState(),[D,A]=s.useState(),[P,N]=s.useState(),[q,g]=s.useState(null);L.usePluginSystem(i.plugins??[]);const{getCurrentSchema:U,setPath:h,path:o,handleAddProperty:Q,handlePropertyChange:c,handleKeyChange:B,handleDeleteProperty:H,setSchema:M,isPropertyRequired:I,handleDuplicateProperty:_}=ie.useSchema({onSchemaChange:i.onSchemaChange}),{getConstraintDefinitionsForType:G}=L.useConstraints();s.useEffect(()=>{if(i.initialSchema)try{ce.validateSchema(i.initialSchema),M(ae.a(i.initialSchema)),g(null)}catch(t){t instanceof Error?g(t.message):t instanceof de.ValidationError?g(`Schema validation error: ${t.message}`):g("Unknown schema validation error")}},[i.initialSchema]);const J=U(),E=t=>{h([...o,t])},w=()=>{h(o.slice(0,-1))},W=(t,n)=>{A(t),N(n),b(!0)},T=t=>{f(t),j(!0)},X=()=>{x&&(H(x),f(void 0)),j(!1)},Y=()=>{f(void 0),j(!1)},R=t=>{const n=_(t);n?.status==="error"?i.onPropertyAddError?.(n):n?.status==="success"&&i.onPropertyAddSuccess?.(n)},Z=(...t)=>{const n=Q(...t);n.status==="error"?i.onPropertyAddError?.(n):n.status==="success"&&i.onPropertyAddSuccess?.(n),m(!1)},z=i.propertyComponent,ee=(t,n)=>z?e.jsx(z,{property:{key:t,schema:n,isRequired:I(t)},onPropertyChange:c,onKeyChange:B,onDelete:T,onDuplicate:R,onNavigate:n.type==="object"||n.type==="array"&&typeof n.items=="object"&&n.items.type==="object"?E:void 0},t):e.jsxs("div",{className:"flex flex-col md:grid grid-cols-(--my-autofit-grid) gap-4 md:items-center border p-2 rounded-md mb-2",children:[e.jsx("div",{className:"",children:e.jsx(p.DebouncedInput,{value:t,onDebounce:l=>B(t,l),placeholder:"Property Key","aria-label":`Property key for ${t}`,delay:500})}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(se.Switch,{checked:I(t),onCheckedChange:l=>c(t,{isRequired:l}),"aria-label":"Required"}),e.jsx($.Label,{htmlFor:`required-${t}`,children:"Required"})]}),e.jsx("div",{className:"",children:e.jsxs(r.Select,{value:typeof n=="object"&&!Array.isArray(n.type)?n.type:void 0,onValueChange:l=>c(t,{type:l}),"aria-label":"Type",children:[e.jsx(r.SelectTrigger,{className:"w-full","aria-label":"Select type",children:e.jsx(r.SelectValue,{})}),e.jsxs(r.SelectContent,{children:[e.jsx(r.SelectItem,{value:"string",children:"string"}),e.jsx(r.SelectItem,{value:"number",children:"number"}),e.jsx(r.SelectItem,{value:"integer",children:"integer"}),e.jsx(r.SelectItem,{value:"boolean",children:"boolean"}),e.jsx(r.SelectItem,{value:"object",children:"object"}),e.jsx(r.SelectItem,{value:"array",children:"array"}),e.jsx(r.SelectItem,{value:"null",children:"null"}),e.jsx(r.SelectItem,{value:"enum",children:"enum"})]})]})}),e.jsx("div",{className:"",children:e.jsx(p.DebouncedInput,{value:typeof n=="object"?n.title:void 0,onDebounce:l=>c(t,{title:l}),placeholder:"Title"})}),e.jsx("div",{className:"",children:e.jsx(p.DebouncedInput,{value:typeof n=="object"?n.description:void 0,onDebounce:l=>c(t,{description:l}),placeholder:"Description"})}),e.jsxs("div",{className:"order-last md:order-none flex gap-2",children:[e.jsx(u.Button,{variant:"outline",size:"sm",onClick:()=>T(t),"aria-label":"Delete",className:"block!",children:e.jsx(me.default,{size:16,className:"text-destructive"})}),e.jsx(u.Button,{variant:"outline",size:"sm",onClick:()=>R(t),"aria-label":"Duplicate",className:"block!",children:e.jsx(je.default,{size:16})}),ne(t,n),K(t,n)]}),te(t,n)]},t),te=(t,n)=>{if(typeof n!="object"||n.type!=="array")return null;const l=n.items,v=!Array.isArray(l)&&typeof l=="object"&&typeof l.type=="string"?l?.type:"string";return e.jsxs("div",{className:"col-span-full flex items-center gap-4 pl-8 mt-2 bg-gray-50 p-2 rounded-md",children:[e.jsx($.Label,{children:"Items of type:"}),e.jsxs(r.Select,{value:v,onValueChange:V=>{const y={...typeof l=="object"?l:{},type:V};V==="object"&&(y.properties=y.properties??{}),c(t,{items:y})},children:[e.jsx(r.SelectTrigger,{className:"w-[200px]","aria-label":"Select items of type",children:e.jsx(r.SelectValue,{})}),e.jsxs(r.SelectContent,{children:[e.jsx(r.SelectItem,{value:"string",children:"string"}),e.jsx(r.SelectItem,{value:"number",children:"number"}),e.jsx(r.SelectItem,{value:"integer",children:"integer"}),e.jsx(r.SelectItem,{value:"boolean",children:"boolean"}),e.jsx(r.SelectItem,{value:"object",children:"object"}),e.jsx(r.SelectItem,{value:"array",children:"array"}),e.jsx(r.SelectItem,{value:"null",children:"null"})]})]}),K(t,l)]})},ne=(t,n)=>{if(typeof n!="object")return null;const l=G(typeof n.type=="string"?n.type:""),v=Array.isArray(n?.enum);return l.length||v?e.jsx(u.Button,{variant:"outline",size:"sm",onClick:()=>W(t,n),"aria-label":"Edit constraints",children:e.jsx(xe.default,{size:16})}):null},K=(t,n)=>!Array.isArray(n)&&typeof n=="object"&&n?.type==="object"?e.jsxs(u.Button,{variant:"outline",size:"sm",onClick:()=>E(t),"aria-label":"Navigate",children:[e.jsx("span",{className:"sr-only",children:"Navigate"}),e.jsx(ge.default,{size:16})]}):null,re=()=>{const t=i.navigationComponent;return t?e.jsx(t,{currentPath:o,onNavigateUp:w,onNavigateTo:h,isRootPath:o.length===0}):e.jsxs("div",{className:"flex items-center space-x-4",children:[e.jsx(u.Button,{variant:"outline",size:"sm",onClick:w,disabled:o.length===0,className:C.cn(i.backButtonClassName),children:"Back"}),e.jsx(d.Breadcrumb,{children:e.jsxs(d.BreadcrumbList,{children:[e.jsx(d.BreadcrumbItem,{children:e.jsx(d.BreadcrumbLink,{href:"#",onClick:()=>h([]),children:"Root"})}),o.map((n,l)=>e.jsxs(s.Fragment,{children:[e.jsx(d.BreadcrumbSeparator,{}),e.jsx(d.BreadcrumbItem,{children:e.jsx(d.BreadcrumbLink,{href:"#",onClick:()=>h(o.slice(0,l+1)),children:n})})]},`path-${l}`))]})})]})},le=()=>{const t=i.addPropertyButtonComponent;return t?e.jsx(t,{onClick:()=>m(!0)}):e.jsxs(u.Button,{type:"button",className:C.cn("self-center",i.addPropertyButtonClassName),onClick:()=>{m(!0)},children:[e.jsx(he.default,{className:"h-4 w-4 mr-2"}),"Add Property"]})};return e.jsxs("div",{children:[q&&e.jsxs(S.Alert,{variant:"destructive",children:[e.jsx(S.AlertTitle,{children:"Schema Error"}),e.jsx(S.AlertDescription,{children:q})]}),re(),e.jsx("div",{className:C.cn("mt-6 overflow-x-hidden",i.propertiesListClassName),children:Object.entries(J.properties??{}).map(([t,n])=>typeof n=="boolean"?null:ee(t,n))}),le(),e.jsx(ue.AddPropertyDialog,{open:O,onOpenChange:m,onSubmit:Z}),D&&P&&e.jsx(oe.EditPropertyDialog,{propertyKey:D,property:P,open:k,onOpenChange:b,onSubmit:t=>{c(...t),A(void 0),N(void 0),b(!1)}}),e.jsx(a.AlertDialog,{open:F,onOpenChange:j,children:e.jsxs(a.AlertDialogContent,{children:[e.jsxs(a.AlertDialogHeader,{children:[e.jsx(a.AlertDialogTitle,{children:"Are you sure?"}),e.jsxs(a.AlertDialogDescription,{children:["This action cannot be undone. This will permanently delete the property",x?` "${x}"`:""," from the schema."]})]}),e.jsxs(a.AlertDialogFooter,{children:[e.jsx(a.AlertDialogCancel,{onClick:Y,children:"Cancel"}),e.jsx(a.AlertDialogAction,{onClick:X,children:"Delete"})]})]})})]})};exports.SchemaBuilder=be;
2
2
  //# sourceMappingURL=index.cjs7.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs7.js","sources":["../src/packages/plugins/object.tsx"],"sourcesContent":["import { Input } from \"@/components/ui/input\";\nimport { InputErrorWrapper } from \"@/components/input-error\";\nimport { Label } from \"@/components/ui/label\";\nimport { cn } from \"@/lib/utils\";\nimport {\n BaseJSONSchemaPlugin,\n ConstraintRendererProps,\n useConstraints,\n} from \"@/packages/constraints/context\";\nimport { Button } from \"@/components/ui/button\";\nimport { X } from \"lucide-react\";\n\n// Number constraint renderer for minProperties and maxProperties\nconst ObjectNumberConstraintRenderer = ({\n constraintName,\n value,\n onConstraintChange,\n disabled,\n error,\n onRemoveConstraint,\n}: ConstraintRendererProps<number> & { disabled?: boolean }) => {\n const { getConstraintDefinition } = useConstraints();\n const constraintDef = getConstraintDefinition(constraintName);\n\n if (!constraintDef) {\n return null;\n }\n\n return (\n <InputErrorWrapper\n errorCode={error?.code}\n errorDescription={error?.message}\n showError={!!error}\n >\n <div>\n <Label className=\"mb-2\" htmlFor={constraintDef.name}>\n {constraintDef.name}\n </Label>\n <div className=\"flex items-center gap-2\">\n <Input\n id={constraintDef.name}\n type=\"number\"\n value={value}\n onChange={(e) => onConstraintChange(Number(e.target.value))}\n disabled={disabled}\n min={0}\n className={cn({ \"border-destructive\": error })}\n />\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => onRemoveConstraint()}\n >\n <X className=\"size-4\" />\n </Button>\n </div>\n {constraintDef.description && (\n <div className=\"mt-2 text-sm text-gray-500\">\n {constraintDef.description}\n </div>\n )}\n </div>\n </InputErrorWrapper>\n );\n};\n\n// Export the renderers\nexport const ObjectMinPropertiesRenderer = ObjectNumberConstraintRenderer;\nexport const ObjectMaxPropertiesRenderer = ObjectNumberConstraintRenderer;\n\nconst plugin: BaseJSONSchemaPlugin = {\n id: \"object-constraints\",\n hooks: {\n registerConstraints() {\n return [\n {\n name: \"minProperties\",\n label: \"Min Properties\",\n appliesTo: [\"object\"],\n schema: {\n type: \"integer\",\n title: \"Minimum Properties Constraint\",\n description:\n \"The minimum number of properties the object must have\",\n examples: [1, 2, 5],\n minimum: 0,\n },\n description:\n \"Specifies the minimum number of properties in the object\",\n defaultValue: 0,\n },\n {\n name: \"maxProperties\",\n label: \"Max Properties\",\n appliesTo: [\"object\"],\n schema: {\n type: \"integer\",\n title: \"Maximum Properties Constraint\",\n description: \"The maximum number of properties the object can have\",\n examples: [5, 10, 20],\n minimum: 0,\n },\n description:\n \"Specifies the maximum number of properties in the object\",\n defaultValue: 10,\n },\n ];\n },\n registerRenderers() {\n return {\n minProperties: ObjectMinPropertiesRenderer,\n maxProperties: ObjectMaxPropertiesRenderer,\n };\n },\n },\n};\n\nexport default plugin;\n"],"names":["ObjectNumberConstraintRenderer","constraintName","value","onConstraintChange","disabled","error","onRemoveConstraint","getConstraintDefinition","useConstraints","constraintDef","jsx","InputErrorWrapper","Label","jsxs","Input","e","cn","Button","X","ObjectMinPropertiesRenderer","ObjectMaxPropertiesRenderer"],"mappings":"sUAaMA,EAAiC,CAAC,CACtC,eAAAC,EACA,MAAAC,EACA,mBAAAC,EACA,SAAAC,EACA,MAAAC,EACA,mBAAAC,CACF,IAAgE,CACxD,KAAA,CAAE,wBAAAC,CAAwB,EAAIC,iBAAe,EAC7CC,EAAgBF,EAAwBN,CAAc,EAE5D,OAAKQ,EAKHC,EAAA,IAACC,EAAA,kBAAA,CACC,UAAWN,GAAO,KAClB,iBAAkBA,GAAO,QACzB,UAAW,CAAC,CAACA,EAEb,gBAAC,MACC,CAAA,SAAA,CAAAK,EAAAA,IAACE,SAAM,UAAU,OAAO,QAASH,EAAc,KAC5C,WAAc,IACjB,CAAA,EACAI,EAAAA,KAAC,MAAI,CAAA,UAAU,0BACb,SAAA,CAAAH,EAAA,IAACI,EAAA,MAAA,CACC,GAAIL,EAAc,KAClB,KAAK,SACL,MAAAP,EACA,SAAWa,GAAMZ,EAAmB,OAAOY,EAAE,OAAO,KAAK,CAAC,EAC1D,SAAAX,EACA,IAAK,EACL,UAAWY,EAAA,GAAG,CAAE,qBAAsBX,CAAO,CAAA,CAAA,CAC/C,EACAK,EAAA,IAACO,EAAA,OAAA,CACC,KAAK,SACL,QAAQ,QACR,KAAK,OACL,QAAS,IAAMX,EAAmB,EAElC,SAAAI,EAAAA,IAACQ,EAAAA,QAAE,CAAA,UAAU,QAAS,CAAA,CAAA,CAAA,CACxB,EACF,EACCT,EAAc,aACbC,EAAA,IAAC,OAAI,UAAU,6BACZ,WAAc,WACjB,CAAA,CAAA,CAEJ,CAAA,CAAA,CACF,EAtCO,IAwCX,EAGaS,EAA8BnB,EAC9BoB,EAA8BpB"}
1
+ {"version":3,"file":"index.cjs7.js","sources":["../src/packages/builder/schema-builder.tsx"],"sourcesContent":["import { useEffect, useState, Fragment } from \"react\";\nimport { PropertyAddError, PropertyAddSuccess, useSchema } from \"./context\";\nimport { Button } from \"@/components/ui/button\";\nimport {\n Breadcrumb,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\";\nimport { Switch } from \"@/components/ui/switch\";\nimport { Bolt, ChevronRight, Copy, Plus, Trash2 } from \"lucide-react\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\nimport { Label } from \"@/components/ui/label\";\nimport type { JSONSchema7 } from \"json-schema\";\nimport { clone } from \"remeda\";\nimport {\n BaseJSONSchemaPlugin,\n useConstraints,\n usePluginSystem,\n} from \"@/packages/constraints/context\";\nimport { EditPropertyDialog } from \"./edit-dialog\";\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n} from \"@/components/ui/alert-dialog\";\nimport { Alert, AlertDescription, AlertTitle } from \"@/components/ui/alert\";\nimport { validateSchema } from \"./utils\";\nimport Ajv from \"ajv\";\nimport { DebouncedInput } from \"@/components/depounced-input\";\nimport { AddPropertyDialog, type AddPropertyDialogProps } from \"./add-dialog\";\nimport { cn } from \"@/lib/utils\";\n\n// PropertyComponent type definition for custom property components\nexport interface PropertyComponentProps {\n property: {\n key: string;\n schema: JSONSchema7;\n isRequired: boolean;\n };\n onPropertyChange: (key: string, changes: Partial<JSONSchema7>) => void;\n onKeyChange: (oldKey: string, newKey: string) => void;\n onDelete: (key: string) => void;\n onDuplicate?: (key: string) => void;\n onNavigate?: (key: string) => void;\n}\n\n// NavigationProps for custom navigation component\nexport interface NavigationProps {\n currentPath: string[];\n onNavigateUp: () => void;\n onNavigateTo: (newPath: string[]) => void;\n isRootPath: boolean;\n}\n\n// AddPropertyButtonProps for custom add property button\nexport interface AddPropertyButtonProps {\n onClick: () => void;\n}\n\ninterface SchemaBuilderProps {\n /** The schema to edit */\n initialSchema?: JSONSchema7;\n /** Constraint plugins to use */\n plugins?: BaseJSONSchemaPlugin[];\n /** Custom component to render properties */\n propertyComponent?: React.ComponentType<PropertyComponentProps>;\n /** Called when the schema changes */\n onSchemaChange?: (schema: JSONSchema7) => void;\n /** Called when a property is successfully added */\n onPropertyAddSuccess?: (props: PropertyAddSuccess) => void;\n /** Called when there's an error adding a property */\n onPropertyAddError?: (props: PropertyAddError) => void;\n /** Called when there's an error changing a property */\n onPropertyChangeError?: (prop: Error) => void;\n /** Called when a property is successfully changed */\n onPropertyChangeSuccess?: () => void;\n /** Class name for the navigation bar back button */\n backButtonClassName?: string;\n /** Class name for the properties list container */\n propertiesListClassName?: string;\n /** Class name for the add property button */\n addPropertyButtonClassName?: string;\n /** Custom navigation component */\n navigationComponent?: React.ComponentType<NavigationProps>;\n /** Custom add property button component */\n addPropertyButtonComponent?: React.ComponentType<AddPropertyButtonProps>;\n}\n\nexport const SchemaBuilder = (props: SchemaBuilderProps) => {\n // State\n const [showPropertyDialog, setShowPropertyDialog] = useState(false);\n const [showEditDialog, setShowEditDialog] = useState(false);\n const [showDeleteDialog, setShowDeleteDialog] = useState(false);\n const [deleteKey, setDeleteKey] = useState<string | undefined>();\n const [editingKey, setEditingKey] = useState<string | undefined>();\n const [editingProperty, setEditingProperty] = useState<\n JSONSchema7 | undefined\n >();\n const [schemaValidationError, setSchemaValidationError] = useState<\n string | null\n >(null);\n\n // Initialize the plugin system\n usePluginSystem(props.plugins ?? []);\n\n // Get schema context\n const {\n getCurrentSchema,\n setPath,\n path,\n handleAddProperty,\n handlePropertyChange,\n handleKeyChange,\n handleDeleteProperty,\n setSchema,\n isPropertyRequired,\n handleDuplicateProperty,\n } = useSchema({ onSchemaChange: props.onSchemaChange });\n\n // Get constraints context\n const { getConstraintDefinitionsForType } = useConstraints();\n\n // Set schema from props\n useEffect(() => {\n if (props.initialSchema) {\n try {\n // Validate the schema before setting it\n validateSchema(props.initialSchema);\n setSchema(clone(props.initialSchema));\n setSchemaValidationError(null);\n } catch (error) {\n if (error instanceof Error) {\n setSchemaValidationError(error.message);\n } else if (error instanceof Ajv.ValidationError) {\n setSchemaValidationError(`Schema validation error: ${error.message}`);\n } else {\n setSchemaValidationError(\"Unknown schema validation error\");\n }\n }\n }\n }, [props.initialSchema]);\n\n const currentSchema = getCurrentSchema();\n\n // Navigation handlers\n const handleNavigateToProperty = (name: string) => {\n setPath([...path, name]);\n };\n\n const handleNavigateUp = () => {\n setPath(path.slice(0, -1));\n };\n\n // Property management handlers\n const handleEditProperty = (key: string, property: JSONSchema7) => {\n setEditingKey(key);\n setEditingProperty(property);\n setShowEditDialog(true);\n };\n\n const handleInitiateDelete = (key: string) => {\n setDeleteKey(key);\n setShowDeleteDialog(true);\n };\n\n const handleConfirmDelete = () => {\n if (deleteKey) {\n handleDeleteProperty(deleteKey);\n setDeleteKey(undefined);\n }\n setShowDeleteDialog(false);\n };\n\n const handleCancelDelete = () => {\n setDeleteKey(undefined);\n setShowDeleteDialog(false);\n };\n\n const handleDuplicate = (key: string) => {\n const result = handleDuplicateProperty(key);\n\n // Notify if needed\n if (result?.status === \"error\") {\n props.onPropertyAddError?.(result);\n } else if (result?.status === \"success\") {\n props.onPropertyAddSuccess?.(result);\n }\n };\n\n const onAddProperty: AddPropertyDialogProps[\"onSubmit\"] = (...vals) => {\n const result = handleAddProperty(...vals);\n\n if (result.status === \"error\") {\n props.onPropertyAddError?.(result);\n } else if (result.status === \"success\") {\n props.onPropertyAddSuccess?.(result);\n }\n setShowPropertyDialog(false);\n };\n\n // Custom property component or default renderer\n const PropertyComponent = props.propertyComponent;\n\n const renderProperty = (key: string, property: JSONSchema7) => {\n if (PropertyComponent) {\n return (\n <PropertyComponent\n key={key}\n property={{\n key,\n schema: property,\n isRequired: isPropertyRequired(key),\n }}\n onPropertyChange={handlePropertyChange}\n onKeyChange={handleKeyChange}\n onDelete={handleInitiateDelete}\n onDuplicate={handleDuplicate}\n onNavigate={\n property.type === \"object\" ||\n (property.type === \"array\" &&\n typeof property.items === \"object\" &&\n (property.items as JSONSchema7).type === \"object\")\n ? handleNavigateToProperty\n : undefined\n }\n />\n );\n }\n\n // Default property renderer\n return (\n <div\n key={key}\n className=\"flex flex-col md:grid grid-cols-(--my-autofit-grid) gap-4 md:items-center border p-2 rounded-md mb-2\"\n >\n <div className=\"\">\n <DebouncedInput\n value={key}\n onDebounce={(newVal) => handleKeyChange(key, newVal)}\n placeholder=\"Property Key\"\n aria-label={`Property key for ${key}`}\n delay={500}\n />\n </div>\n\n <div className=\"flex items-center gap-2\">\n <Switch\n checked={isPropertyRequired(key)}\n onCheckedChange={(checked) =>\n handlePropertyChange(key, { isRequired: checked })\n }\n aria-label=\"Required\"\n />\n <Label htmlFor={`required-${key}`}>Required</Label>\n </div>\n\n <div className=\"\">\n <Select\n value={\n typeof property === \"object\" && !Array.isArray(property.type)\n ? property.type\n : undefined\n }\n onValueChange={(value) =>\n handlePropertyChange(key, {\n type: value as JSONSchema7[\"type\"],\n })\n }\n aria-label=\"Type\"\n >\n <SelectTrigger className=\"w-full\" aria-label=\"Select type\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value={\"string\" satisfies JSONSchema7[\"type\"]}>\n string\n </SelectItem>\n <SelectItem value={\"number\" satisfies JSONSchema7[\"type\"]}>\n number\n </SelectItem>\n <SelectItem value={\"integer\" satisfies JSONSchema7[\"type\"]}>\n integer\n </SelectItem>\n <SelectItem value={\"boolean\" satisfies JSONSchema7[\"type\"]}>\n boolean\n </SelectItem>\n <SelectItem value={\"object\" satisfies JSONSchema7[\"type\"]}>\n object\n </SelectItem>\n <SelectItem value={\"array\" satisfies JSONSchema7[\"type\"]}>\n array\n </SelectItem>\n <SelectItem value={\"null\" satisfies JSONSchema7[\"type\"]}>\n null\n </SelectItem>\n <SelectItem value={\"enum\"}>enum</SelectItem>\n </SelectContent>\n </Select>\n </div>\n\n <div className=\"\">\n <DebouncedInput\n value={typeof property === \"object\" ? property.title : undefined}\n onDebounce={(newVal) =>\n handlePropertyChange(key, { title: newVal })\n }\n placeholder=\"Title\"\n />\n </div>\n\n <div className=\"\">\n <DebouncedInput\n value={\n typeof property === \"object\" ? property.description : undefined\n }\n onDebounce={(newVal) =>\n handlePropertyChange(key, { description: newVal })\n }\n placeholder=\"Description\"\n />\n </div>\n\n <div className=\"order-last md:order-none flex gap-2\">\n {/* Delete button */}\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => handleInitiateDelete(key)}\n aria-label=\"Delete\"\n className=\"block!\"\n >\n <Trash2 size={16} className=\"text-destructive\" />\n </Button>\n\n {/* Duplicate button */}\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => handleDuplicate(key)}\n aria-label=\"Duplicate\"\n className=\"block!\"\n >\n <Copy size={16} />\n </Button>\n\n {/* Edit button if applicable */}\n {renderEditButton(key, property)}\n\n {/* Navigate button for objects/array items */}\n {renderNavigateButton(key, property)}\n </div>\n\n {/* Render array items configuration if needed */}\n {renderArrayItemsConfig(key, property)}\n </div>\n );\n };\n\n // Helper to render array items configuration\n const renderArrayItemsConfig = (key: string, property: JSONSchema7) => {\n if (typeof property !== \"object\" || property.type !== \"array\") {\n return null;\n }\n\n const items = property.items;\n const itemType =\n !Array.isArray(items) &&\n typeof items === \"object\" &&\n typeof items.type === \"string\"\n ? items?.type\n : \"string\";\n\n return (\n <div className=\"col-span-full flex items-center gap-4 pl-8 mt-2 bg-gray-50 p-2 rounded-md\">\n <Label>Items of type:</Label>\n <Select\n value={itemType as string}\n onValueChange={(value) => {\n const newItems: JSONSchema7 = {\n ...(typeof items === \"object\" ? items : {}),\n type: value as JSONSchema7[\"type\"],\n };\n\n if (value === \"object\") {\n // Initialize empty properties for object type\n newItems.properties = newItems.properties ?? {};\n }\n\n handlePropertyChange(key, { items: newItems });\n }}\n >\n <SelectTrigger\n className=\"w-[200px]\"\n aria-label=\"Select items of type\"\n >\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value={\"string\" satisfies JSONSchema7[\"type\"]}>\n string\n </SelectItem>\n <SelectItem value={\"number\" satisfies JSONSchema7[\"type\"]}>\n number\n </SelectItem>\n <SelectItem value={\"integer\" satisfies JSONSchema7[\"type\"]}>\n integer\n </SelectItem>\n <SelectItem value={\"boolean\" satisfies JSONSchema7[\"type\"]}>\n boolean\n </SelectItem>\n <SelectItem value={\"object\" satisfies JSONSchema7[\"type\"]}>\n object\n </SelectItem>\n <SelectItem value={\"array\" satisfies JSONSchema7[\"type\"]}>\n array\n </SelectItem>\n <SelectItem value={\"null\" satisfies JSONSchema7[\"type\"]}>\n null\n </SelectItem>\n </SelectContent>\n </Select>\n\n {/* Configure object button for array items of type object */}\n {renderNavigateButton(key, items)}\n </div>\n );\n };\n\n // Helper to render the edit constraint button when needed\n const renderEditButton = (key: string, property: JSONSchema7) => {\n if (typeof property !== \"object\") return null;\n\n // Check for constraints\n const availableConstraints = getConstraintDefinitionsForType(\n typeof property.type === \"string\" ? property.type : \"\",\n );\n\n // Check for enum\n const hasEnum = Array.isArray(property?.enum);\n\n if (availableConstraints.length || hasEnum) {\n return (\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => handleEditProperty(key, property)}\n aria-label=\"Edit constraints\"\n >\n <Bolt size={16} />\n </Button>\n );\n }\n\n return null;\n };\n\n const renderNavigateButton = (key: string, items: JSONSchema7[\"items\"]) => {\n if (\n !Array.isArray(items) &&\n typeof items === \"object\" &&\n items?.type === \"object\"\n ) {\n return (\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => handleNavigateToProperty(key)}\n aria-label=\"Navigate\"\n >\n <span className=\"sr-only\">Navigate</span>\n <ChevronRight size={16} />\n </Button>\n );\n }\n\n return null;\n };\n\n // Render navigation component\n const renderNavigation = () => {\n const NavigationComponent = props.navigationComponent;\n\n if (NavigationComponent) {\n return (\n <NavigationComponent\n currentPath={path}\n onNavigateUp={handleNavigateUp}\n onNavigateTo={setPath}\n isRootPath={path.length === 0}\n />\n );\n }\n\n return (\n <div className=\"flex items-center space-x-4\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={handleNavigateUp}\n disabled={path.length === 0}\n className={cn(props.backButtonClassName)}\n >\n Back\n </Button>\n <Breadcrumb>\n <BreadcrumbList>\n <BreadcrumbItem>\n <BreadcrumbLink href=\"#\" onClick={() => setPath([])}>\n Root\n </BreadcrumbLink>\n </BreadcrumbItem>\n {path.map((item, index) => (\n <Fragment key={`path-${index}`}>\n <BreadcrumbSeparator />\n <BreadcrumbItem>\n <BreadcrumbLink\n href=\"#\"\n onClick={() => setPath(path.slice(0, index + 1))}\n >\n {item}\n </BreadcrumbLink>\n </BreadcrumbItem>\n </Fragment>\n ))}\n </BreadcrumbList>\n </Breadcrumb>\n </div>\n );\n };\n\n // Render add property button\n const renderAddPropertyButton = () => {\n const AddPropertyButtonComponent = props.addPropertyButtonComponent;\n\n if (AddPropertyButtonComponent) {\n return (\n <AddPropertyButtonComponent\n onClick={() => setShowPropertyDialog(true)}\n />\n );\n }\n\n return (\n <Button\n type=\"button\"\n className={cn(\"self-center\", props.addPropertyButtonClassName)}\n onClick={() => {\n setShowPropertyDialog(true);\n }}\n >\n <Plus className=\"h-4 w-4 mr-2\" />\n Add Property\n </Button>\n );\n };\n\n return (\n <div>\n {/* Schema validation error */}\n {schemaValidationError && (\n <Alert variant=\"destructive\">\n <AlertTitle>Schema Error</AlertTitle>\n <AlertDescription>{schemaValidationError}</AlertDescription>\n </Alert>\n )}\n\n {/* Navigation bar */}\n {renderNavigation()}\n\n {/* Properties list */}\n <div\n className={cn(\"mt-6 overflow-x-hidden\", props.propertiesListClassName)}\n >\n {Object.entries(currentSchema.properties ?? {}).map(\n ([key, property]) => {\n if (typeof property === \"boolean\") {\n // We don't support editing boolean properties\n return null;\n }\n\n return renderProperty(key, property);\n },\n )}\n </div>\n\n {/* Add property button */}\n {renderAddPropertyButton()}\n\n {/* Add property dialog */}\n <AddPropertyDialog\n open={showPropertyDialog}\n onOpenChange={setShowPropertyDialog}\n onSubmit={onAddProperty}\n />\n\n {/* Edit property dialog */}\n {editingKey && editingProperty && (\n <EditPropertyDialog\n propertyKey={editingKey}\n property={editingProperty}\n open={showEditDialog}\n onOpenChange={setShowEditDialog}\n onSubmit={(params) => {\n handlePropertyChange(...params);\n setEditingKey(undefined);\n setEditingProperty(undefined);\n setShowEditDialog(false);\n }}\n />\n )}\n\n {/* Delete confirmation dialog */}\n <AlertDialog open={showDeleteDialog} onOpenChange={setShowDeleteDialog}>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>Are you sure?</AlertDialogTitle>\n <AlertDialogDescription>\n This action cannot be undone. This will permanently delete the\n property\n {deleteKey ? ` \"${deleteKey}\"` : \"\"} from the schema.\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel onClick={handleCancelDelete}>\n Cancel\n </AlertDialogCancel>\n <AlertDialogAction onClick={handleConfirmDelete}>\n Delete\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n </div>\n );\n};\n"],"names":["SchemaBuilder","props","showPropertyDialog","setShowPropertyDialog","useState","showEditDialog","setShowEditDialog","showDeleteDialog","setShowDeleteDialog","deleteKey","setDeleteKey","editingKey","setEditingKey","editingProperty","setEditingProperty","schemaValidationError","setSchemaValidationError","usePluginSystem","getCurrentSchema","setPath","path","handleAddProperty","handlePropertyChange","handleKeyChange","handleDeleteProperty","setSchema","isPropertyRequired","handleDuplicateProperty","useSchema","getConstraintDefinitionsForType","useConstraints","useEffect","validateSchema","clone","error","Ajv","currentSchema","handleNavigateToProperty","name","handleNavigateUp","handleEditProperty","key","property","handleInitiateDelete","handleConfirmDelete","handleCancelDelete","handleDuplicate","result","onAddProperty","vals","PropertyComponent","renderProperty","jsx","jsxs","DebouncedInput","newVal","Switch","checked","Label","Select","value","SelectTrigger","SelectValue","SelectContent","SelectItem","Button","Trash2","Copy","renderEditButton","renderNavigateButton","renderArrayItemsConfig","items","itemType","newItems","availableConstraints","hasEnum","Bolt","ChevronRight","renderNavigation","NavigationComponent","cn","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","item","index","Fragment","BreadcrumbSeparator","renderAddPropertyButton","AddPropertyButtonComponent","Plus","Alert","AlertTitle","AlertDescription","AddPropertyDialog","EditPropertyDialog","params","AlertDialog","AlertDialogContent","AlertDialogHeader","AlertDialogTitle","AlertDialogDescription","AlertDialogFooter","AlertDialogCancel","AlertDialogAction"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const ue=require("react"),l=require("./index.cjs80.js"),he=require("./index.cjs81.js"),Y=require("./index.cjs58.js"),ge=require("./index.cjs60.js"),T=require("./index.cjs57.js"),me=require("./index.cjs73.js"),I=require("./index.cjs74.js"),we=require("./index.cjs63.js"),u=require("react/jsx-runtime"),xe=require("./index.cjs82.js");function Pe(e){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,o.get?o:{enumerable:!0,get:()=>e[t]})}}return r.default=e,Object.freeze(r)}const s=Pe(ue);var O="Popper",[X,ye]=ge.createContextScope(O),[Ae,k]=X(O),R=e=>{const{__scopePopper:r,children:t}=e,[o,a]=s.useState(null);return u.jsx(Ae,{scope:r,anchor:o,onAnchorChange:a,children:t})};R.displayName=O;var F="PopperAnchor",_=s.forwardRef((e,r)=>{const{__scopePopper:t,virtualRef:o,...a}=e,n=k(F,t),i=s.useRef(null),m=Y.useComposedRefs(r,i);return s.useEffect(()=>{n.onAnchorChange(o?.current||i.current)}),o?null:u.jsx(T.Primitive.div,{...a,ref:m})});_.displayName=F;var $="PopperContent",[ve,Ce]=X($),j=s.forwardRef((e,r)=>{const{__scopePopper:t,side:o="bottom",sideOffset:a=0,align:n="center",alignOffset:i=0,arrowPadding:m=0,avoidCollisions:c=!0,collisionBoundary:d=[],collisionPadding:w=0,sticky:h="partial",hideWhenDetached:P=!1,updatePositionStrategy:y="optimized",onPlaced:f,...p}=e,L=k($,t),[S,Z]=s.useState(null),G=Y.useComposedRefs(r,x=>Z(x)),[b,J]=s.useState(null),N=we.useSize(b),K=N?.width??0,q=N?.height??0,Q=o+(n!=="center"?"-"+n:""),V=typeof w=="number"?w:{top:0,right:0,bottom:0,left:0,...w},H=Array.isArray(d)?d:[d],ee=H.length>0,A={padding:V,boundary:H.filter(be),altBoundary:ee},{refs:te,floatingStyles:z,placement:re,isPositioned:v,middlewareData:g}=l.useFloating({strategy:"fixed",placement:Q,whileElementsMounted:(...x)=>xe.autoUpdate(...x,{animationFrame:y==="always"}),elements:{reference:L.anchor},middleware:[l.offset({mainAxis:a+q,alignmentAxis:i}),c&&l.shift({mainAxis:!0,crossAxis:!1,limiter:h==="partial"?l.limitShift():void 0,...A}),c&&l.flip({...A}),l.size({...A,apply:({elements:x,rects:W,availableWidth:de,availableHeight:pe})=>{const{width:le,height:fe}=W.reference,C=x.floating.style;C.setProperty("--radix-popper-available-width",`${de}px`),C.setProperty("--radix-popper-available-height",`${pe}px`),C.setProperty("--radix-popper-anchor-width",`${le}px`),C.setProperty("--radix-popper-anchor-height",`${fe}px`)}}),b&&l.arrow({element:b,padding:m}),Oe({arrowWidth:K,arrowHeight:q}),P&&l.hide({strategy:"referenceHidden",...A})]}),[D,oe]=U(re),M=me.useCallbackRef(f);I.useLayoutEffect(()=>{v&&M?.()},[v,M]);const ne=g.arrow?.x,ie=g.arrow?.y,ae=g.arrow?.centerOffset!==0,[se,ce]=s.useState();return I.useLayoutEffect(()=>{S&&ce(window.getComputedStyle(S).zIndex)},[S]),u.jsx("div",{ref:te.setFloating,"data-radix-popper-content-wrapper":"",style:{...z,transform:v?z.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:se,"--radix-popper-transform-origin":[g.transformOrigin?.x,g.transformOrigin?.y].join(" "),...g.hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:u.jsx(ve,{scope:t,placedSide:D,onArrowChange:J,arrowX:ne,arrowY:ie,shouldHideArrow:ae,children:u.jsx(T.Primitive.div,{"data-side":D,"data-align":oe,...p,ref:G,style:{...p.style,animation:v?void 0:"none"}})})})});j.displayName=$;var B="PopperArrow",Se={top:"bottom",right:"left",bottom:"top",left:"right"},E=s.forwardRef(function(r,t){const{__scopePopper:o,...a}=r,n=Ce(B,o),i=Se[n.placedSide];return u.jsx("span",{ref:n.onArrowChange,style:{position:"absolute",left:n.arrowX,top:n.arrowY,[i]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[n.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[n.placedSide],visibility:n.shouldHideArrow?"hidden":void 0},children:u.jsx(he.Root,{...a,ref:t,style:{...a.style,display:"block"}})})});E.displayName=B;function be(e){return e!==null}var Oe=e=>({name:"transformOrigin",options:e,fn(r){const{placement:t,rects:o,middlewareData:a}=r,i=a.arrow?.centerOffset!==0,m=i?0:e.arrowWidth,c=i?0:e.arrowHeight,[d,w]=U(t),h={start:"0%",center:"50%",end:"100%"}[w],P=(a.arrow?.x??0)+m/2,y=(a.arrow?.y??0)+c/2;let f="",p="";return d==="bottom"?(f=i?h:`${P}px`,p=`${-c}px`):d==="top"?(f=i?h:`${P}px`,p=`${o.floating.height+c}px`):d==="right"?(f=`${-c}px`,p=i?h:`${y}px`):d==="left"&&(f=`${o.floating.width+c}px`,p=i?h:`${y}px`),{data:{x:f,y:p}}}});function U(e){const[r,t="center"]=e.split("-");return[r,t]}var Re=R,_e=_,$e=j,je=E;exports.Anchor=_e;exports.Arrow=je;exports.Content=$e;exports.Popper=R;exports.PopperAnchor=_;exports.PopperArrow=E;exports.PopperContent=j;exports.Root=Re;exports.createPopperScope=ye;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const ue=require("react"),l=require("./index.cjs80.js"),he=require("./index.cjs81.js"),Y=require("./index.cjs56.js"),ge=require("./index.cjs58.js"),T=require("./index.cjs55.js"),me=require("./index.cjs73.js"),I=require("./index.cjs74.js"),we=require("./index.cjs61.js"),u=require("react/jsx-runtime"),xe=require("./index.cjs82.js");function Pe(e){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,o.get?o:{enumerable:!0,get:()=>e[t]})}}return r.default=e,Object.freeze(r)}const s=Pe(ue);var O="Popper",[X,ye]=ge.createContextScope(O),[Ae,k]=X(O),R=e=>{const{__scopePopper:r,children:t}=e,[o,a]=s.useState(null);return u.jsx(Ae,{scope:r,anchor:o,onAnchorChange:a,children:t})};R.displayName=O;var F="PopperAnchor",_=s.forwardRef((e,r)=>{const{__scopePopper:t,virtualRef:o,...a}=e,n=k(F,t),i=s.useRef(null),m=Y.useComposedRefs(r,i);return s.useEffect(()=>{n.onAnchorChange(o?.current||i.current)}),o?null:u.jsx(T.Primitive.div,{...a,ref:m})});_.displayName=F;var $="PopperContent",[ve,Ce]=X($),j=s.forwardRef((e,r)=>{const{__scopePopper:t,side:o="bottom",sideOffset:a=0,align:n="center",alignOffset:i=0,arrowPadding:m=0,avoidCollisions:c=!0,collisionBoundary:d=[],collisionPadding:w=0,sticky:h="partial",hideWhenDetached:P=!1,updatePositionStrategy:y="optimized",onPlaced:f,...p}=e,L=k($,t),[S,Z]=s.useState(null),G=Y.useComposedRefs(r,x=>Z(x)),[b,J]=s.useState(null),N=we.useSize(b),K=N?.width??0,q=N?.height??0,Q=o+(n!=="center"?"-"+n:""),V=typeof w=="number"?w:{top:0,right:0,bottom:0,left:0,...w},H=Array.isArray(d)?d:[d],ee=H.length>0,A={padding:V,boundary:H.filter(be),altBoundary:ee},{refs:te,floatingStyles:z,placement:re,isPositioned:v,middlewareData:g}=l.useFloating({strategy:"fixed",placement:Q,whileElementsMounted:(...x)=>xe.autoUpdate(...x,{animationFrame:y==="always"}),elements:{reference:L.anchor},middleware:[l.offset({mainAxis:a+q,alignmentAxis:i}),c&&l.shift({mainAxis:!0,crossAxis:!1,limiter:h==="partial"?l.limitShift():void 0,...A}),c&&l.flip({...A}),l.size({...A,apply:({elements:x,rects:W,availableWidth:de,availableHeight:pe})=>{const{width:le,height:fe}=W.reference,C=x.floating.style;C.setProperty("--radix-popper-available-width",`${de}px`),C.setProperty("--radix-popper-available-height",`${pe}px`),C.setProperty("--radix-popper-anchor-width",`${le}px`),C.setProperty("--radix-popper-anchor-height",`${fe}px`)}}),b&&l.arrow({element:b,padding:m}),Oe({arrowWidth:K,arrowHeight:q}),P&&l.hide({strategy:"referenceHidden",...A})]}),[D,oe]=U(re),M=me.useCallbackRef(f);I.useLayoutEffect(()=>{v&&M?.()},[v,M]);const ne=g.arrow?.x,ie=g.arrow?.y,ae=g.arrow?.centerOffset!==0,[se,ce]=s.useState();return I.useLayoutEffect(()=>{S&&ce(window.getComputedStyle(S).zIndex)},[S]),u.jsx("div",{ref:te.setFloating,"data-radix-popper-content-wrapper":"",style:{...z,transform:v?z.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:se,"--radix-popper-transform-origin":[g.transformOrigin?.x,g.transformOrigin?.y].join(" "),...g.hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:u.jsx(ve,{scope:t,placedSide:D,onArrowChange:J,arrowX:ne,arrowY:ie,shouldHideArrow:ae,children:u.jsx(T.Primitive.div,{"data-side":D,"data-align":oe,...p,ref:G,style:{...p.style,animation:v?void 0:"none"}})})})});j.displayName=$;var B="PopperArrow",Se={top:"bottom",right:"left",bottom:"top",left:"right"},E=s.forwardRef(function(r,t){const{__scopePopper:o,...a}=r,n=Ce(B,o),i=Se[n.placedSide];return u.jsx("span",{ref:n.onArrowChange,style:{position:"absolute",left:n.arrowX,top:n.arrowY,[i]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[n.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[n.placedSide],visibility:n.shouldHideArrow?"hidden":void 0},children:u.jsx(he.Root,{...a,ref:t,style:{...a.style,display:"block"}})})});E.displayName=B;function be(e){return e!==null}var Oe=e=>({name:"transformOrigin",options:e,fn(r){const{placement:t,rects:o,middlewareData:a}=r,i=a.arrow?.centerOffset!==0,m=i?0:e.arrowWidth,c=i?0:e.arrowHeight,[d,w]=U(t),h={start:"0%",center:"50%",end:"100%"}[w],P=(a.arrow?.x??0)+m/2,y=(a.arrow?.y??0)+c/2;let f="",p="";return d==="bottom"?(f=i?h:`${P}px`,p=`${-c}px`):d==="top"?(f=i?h:`${P}px`,p=`${o.floating.height+c}px`):d==="right"?(f=`${-c}px`,p=i?h:`${y}px`):d==="left"&&(f=`${o.floating.width+c}px`,p=i?h:`${y}px`),{data:{x:f,y:p}}}});function U(e){const[r,t="center"]=e.split("-");return[r,t]}var Re=R,_e=_,$e=j,je=E;exports.Anchor=_e;exports.Arrow=je;exports.Content=$e;exports.Popper=R;exports.PopperAnchor=_;exports.PopperArrow=E;exports.PopperContent=j;exports.Root=Re;exports.createPopperScope=ye;
2
2
  //# sourceMappingURL=index.cjs71.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react"),l=require("react-dom"),d=require("./index.cjs57.js"),f=require("./index.cjs74.js"),p=require("react/jsx-runtime");function P(e){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,o.get?o:{enumerable:!0,get:()=>e[t]})}}return r.default=e,Object.freeze(r)}const a=P(s);var b="Portal",c=a.forwardRef((e,r)=>{const{container:t,...o}=e,[i,u]=a.useState(!1);f.useLayoutEffect(()=>u(!0),[]);const n=t||i&&globalThis?.document?.body;return n?l.createPortal(p.jsx(d.Primitive.div,{...o,ref:r}),n):null});c.displayName=b;exports.Portal=c;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react"),l=require("react-dom"),d=require("./index.cjs55.js"),f=require("./index.cjs74.js"),p=require("react/jsx-runtime");function P(e){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,o.get?o:{enumerable:!0,get:()=>e[t]})}}return r.default=e,Object.freeze(r)}const a=P(s);var b="Portal",c=a.forwardRef((e,r)=>{const{container:t,...o}=e,[i,u]=a.useState(!1);f.useLayoutEffect(()=>u(!0),[]);const n=t||i&&globalThis?.document?.body;return n?l.createPortal(p.jsx(d.Primitive.div,{...o,ref:r}),n):null});c.displayName=b;exports.Portal=c;
2
2
  //# sourceMappingURL=index.cjs72.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react"),o=require("./index.cjs57.js"),l=require("react/jsx-runtime");function c(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,i.get?i:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const d=c(a);var s="VisuallyHidden",n=d.forwardRef((e,t)=>l.jsx(o.Primitive.span,{...e,ref:t,style:{position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal",...e.style}}));n.displayName=s;exports.VisuallyHidden=n;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react"),o=require("./index.cjs55.js"),l=require("react/jsx-runtime");function c(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,i.get?i:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const d=c(a);var s="VisuallyHidden",n=d.forwardRef((e,t)=>l.jsx(o.Primitive.span,{...e,ref:t,style:{position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal",...e.style}}));n.displayName=s;exports.VisuallyHidden=n;
2
2
  //# sourceMappingURL=index.cjs75.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const T=require("react"),P=require("./index.cjs58.js"),g=require("./index.cjs74.js");function E(n){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const t in n)if(t!=="default"){const r=Object.getOwnPropertyDescriptor(n,t);Object.defineProperty(e,t,r.get?r:{enumerable:!0,get:()=>n[t]})}}return e.default=n,Object.freeze(e)}const i=E(T);function R(n,e){return i.useReducer((t,r)=>e[t][r]??t,n)}var O=n=>{const{present:e,children:t}=n,r=v(e),a=typeof t=="function"?t({present:r.isPresent}):i.Children.only(t),u=P.useComposedRefs(r.ref,S(a));return typeof t=="function"||r.isPresent?i.cloneElement(a,{ref:u}):null};O.displayName="Presence";function v(n){const[e,t]=i.useState(),r=i.useRef({}),a=i.useRef(n),u=i.useRef("none"),p=n?"mounted":"unmounted",[N,s]=R(p,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return i.useEffect(()=>{const o=l(r.current);u.current=N==="mounted"?o:"none"},[N]),g.useLayoutEffect(()=>{const o=r.current,d=a.current;if(d!==n){const f=u.current,c=l(o);n?s("MOUNT"):c==="none"||o?.display==="none"?s("UNMOUNT"):s(d&&f!==c?"ANIMATION_OUT":"UNMOUNT"),a.current=n}},[n,s]),g.useLayoutEffect(()=>{if(e){let o;const d=e.ownerDocument.defaultView??window,m=c=>{const A=l(r.current).includes(c.animationName);if(c.target===e&&A&&(s("ANIMATION_END"),!a.current)){const M=e.style.animationFillMode;e.style.animationFillMode="forwards",o=d.setTimeout(()=>{e.style.animationFillMode==="forwards"&&(e.style.animationFillMode=M)})}},f=c=>{c.target===e&&(u.current=l(r.current))};return e.addEventListener("animationstart",f),e.addEventListener("animationcancel",m),e.addEventListener("animationend",m),()=>{d.clearTimeout(o),e.removeEventListener("animationstart",f),e.removeEventListener("animationcancel",m),e.removeEventListener("animationend",m)}}else s("ANIMATION_END")},[e,s]),{isPresent:["mounted","unmountSuspended"].includes(N),ref:i.useCallback(o=>{o&&(r.current=getComputedStyle(o)),t(o)},[])}}function l(n){return n?.animationName||"none"}function S(n){let e=Object.getOwnPropertyDescriptor(n.props,"ref")?.get,t=e&&"isReactWarning"in e&&e.isReactWarning;return t?n.ref:(e=Object.getOwnPropertyDescriptor(n,"ref")?.get,t=e&&"isReactWarning"in e&&e.isReactWarning,t?n.props.ref:n.props.ref||n.ref)}exports.Presence=O;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const T=require("react"),P=require("./index.cjs56.js"),g=require("./index.cjs74.js");function E(n){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const t in n)if(t!=="default"){const r=Object.getOwnPropertyDescriptor(n,t);Object.defineProperty(e,t,r.get?r:{enumerable:!0,get:()=>n[t]})}}return e.default=n,Object.freeze(e)}const i=E(T);function R(n,e){return i.useReducer((t,r)=>e[t][r]??t,n)}var O=n=>{const{present:e,children:t}=n,r=v(e),a=typeof t=="function"?t({present:r.isPresent}):i.Children.only(t),u=P.useComposedRefs(r.ref,S(a));return typeof t=="function"||r.isPresent?i.cloneElement(a,{ref:u}):null};O.displayName="Presence";function v(n){const[e,t]=i.useState(),r=i.useRef({}),a=i.useRef(n),u=i.useRef("none"),p=n?"mounted":"unmounted",[N,s]=R(p,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return i.useEffect(()=>{const o=l(r.current);u.current=N==="mounted"?o:"none"},[N]),g.useLayoutEffect(()=>{const o=r.current,d=a.current;if(d!==n){const f=u.current,c=l(o);n?s("MOUNT"):c==="none"||o?.display==="none"?s("UNMOUNT"):s(d&&f!==c?"ANIMATION_OUT":"UNMOUNT"),a.current=n}},[n,s]),g.useLayoutEffect(()=>{if(e){let o;const d=e.ownerDocument.defaultView??window,m=c=>{const A=l(r.current).includes(c.animationName);if(c.target===e&&A&&(s("ANIMATION_END"),!a.current)){const M=e.style.animationFillMode;e.style.animationFillMode="forwards",o=d.setTimeout(()=>{e.style.animationFillMode==="forwards"&&(e.style.animationFillMode=M)})}},f=c=>{c.target===e&&(u.current=l(r.current))};return e.addEventListener("animationstart",f),e.addEventListener("animationcancel",m),e.addEventListener("animationend",m),()=>{d.clearTimeout(o),e.removeEventListener("animationstart",f),e.removeEventListener("animationcancel",m),e.removeEventListener("animationend",m)}}else s("ANIMATION_END")},[e,s]),{isPresent:["mounted","unmountSuspended"].includes(N),ref:i.useCallback(o=>{o&&(r.current=getComputedStyle(o)),t(o)},[])}}function l(n){return n?.animationName||"none"}function S(n){let e=Object.getOwnPropertyDescriptor(n.props,"ref")?.get,t=e&&"isReactWarning"in e&&e.isReactWarning;return t?n.ref:(e=Object.getOwnPropertyDescriptor(n,"ref")?.get,t=e&&"isReactWarning"in e&&e.isReactWarning,t?n.props.ref:n.props.ref||n.ref)}exports.Presence=O;
2
2
  //# sourceMappingURL=index.cjs78.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),b=require("./index.cjs28.js"),m=require("./index.cjs29.js"),x=require("./index.cjs15.js"),h=require("./index.cjs22.js"),g=require("./index.cjs4.js"),p=require("./index.cjs11.js"),u=require("./index.cjs14.js"),v=require("./index.cjs30.js"),j=({constraintName:r,value:s,onConstraintChange:a,disabled:i,error:n,onRemoveConstraint:l})=>{const{getConstraintDefinition:c}=g.useConstraints(),t=c(r);return t?e.jsx(m.InputErrorWrapper,{errorCode:n?.code,errorDescription:n?.message,showError:!!n,children:e.jsxs("div",{children:[e.jsx(x.Label,{className:"mb-2",htmlFor:t.name,children:t.name}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b.Input,{id:t.name,type:"number",value:s,onChange:o=>a(Number(o.target.value)),disabled:i,min:0,className:h.cn({"border-destructive":n})}),e.jsx(p.Button,{type:"button",variant:"ghost",size:"icon",onClick:()=>l(),children:e.jsx(v.default,{className:"size-4"})})]}),t.description&&e.jsx("div",{className:"mt-2 text-sm text-gray-500",children:t.description})]})}):null},f=({constraintName:r,value:s,onConstraintChange:a,disabled:i,error:n,onRemoveConstraint:l})=>{const{getConstraintDefinition:c}=g.useConstraints(),t=c(r);return t?e.jsx(m.InputErrorWrapper,{errorCode:n?.code,errorDescription:n?.message,showError:!!n,children:e.jsxs("div",{children:[e.jsx(x.Label,{className:"mb-2",htmlFor:t.name,children:t.name}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b.Input,{id:t.name,type:"text",value:s,onChange:o=>a(o.target.value),disabled:i,placeholder:"Regular expression pattern",className:h.cn({"border-destructive":n})}),e.jsx(p.Button,{type:"button",variant:"ghost",size:"icon",onClick:()=>l(),children:e.jsx(v.default,{className:"size-4"})})]}),t.description&&e.jsx("div",{className:"mt-2 text-sm text-gray-500",children:t.description})]})}):null},C=({constraintName:r,value:s,onConstraintChange:a,disabled:i,error:n,onRemoveConstraint:l})=>{const{getConstraintDefinition:c}=g.useConstraints(),t=c(r),o=[{value:"email",label:"Email"},{value:"uri",label:"URI"},{value:"url",label:"URL"},{value:"date",label:"Date"},{value:"date-time",label:"Date-Time"},{value:"uuid",label:"UUID"},{value:"hostname",label:"Hostname"},{value:"ipv4",label:"IPv4"},{value:"ipv6",label:"IPv6"},{value:"phone",label:"Phone"}];return t?e.jsx(m.InputErrorWrapper,{errorCode:n?.code,errorDescription:n?.message,showError:!!n,children:e.jsxs("div",{children:[e.jsx(x.Label,{className:"mb-2",htmlFor:t.name,children:t.name}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(u.Select,{value:s,onValueChange:d=>a(d),disabled:i,children:[e.jsx(u.SelectTrigger,{id:t.name,className:h.cn("flex-1",{"border-destructive":n}),children:e.jsx(u.SelectValue,{placeholder:"Select format"})}),e.jsx(u.SelectContent,{children:o.map(d=>e.jsx(u.SelectItem,{value:d.value,children:d.label},d.value))})]}),e.jsx(p.Button,{type:"button",variant:"ghost",size:"icon",onClick:()=>l(),children:e.jsx(v.default,{className:"size-4"})})]}),t.description&&e.jsx("div",{className:"mt-2 text-sm text-gray-500",children:t.description})]})}):null},N=j,S=j,R=f,D=C;exports.StringFormatRenderer=D;exports.StringMaxLengthRenderer=S;exports.StringMinLengthRenderer=N;exports.StringPatternRenderer=R;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const v=require("react/jsx-runtime"),o=require("react"),C=require("./index.cjs23.js"),d=o.createContext(void 0),P=({children:t})=>{const s=o.useRef(new Map),i=o.useRef(new Map);return v.jsx(d.Provider,{value:{constraintDefinitionsMap:s.current,constraintRenderersMap:i.current},children:t})};function h(t){const s=o.useContext(d);if(!s)throw new Error("usePluginSystem must be used within a PluginsProvider");const{constraintDefinitionsMap:i,constraintRenderersMap:c}=s;return o.useMemo(()=>(t.forEach(e=>{if(e.hooks.registerConstraints&&e.hooks.registerConstraints().forEach(a=>{i.set(a.name,a)}),e.hooks.registerRenderers){const r=e.hooks.registerRenderers();Object.entries(r).forEach(([a,n])=>{c.set(a,n)})}}),{hasPlugin(e){return t.some(r=>r.id===e)},getPlugin(e){return t.find(r=>r.id===e)}}),[t])}const R=()=>{const t=o.useContext(d);if(!t)throw new Error("useConstraints must be used within a ConstraintsProvider");const{constraintDefinitionsMap:s,constraintRenderersMap:i}=t,c=()=>Array.from(s.values()),f=n=>c().filter(u=>u.appliesTo.includes(n)),e=n=>s.get(n);return{getConstraintDefinitionsForType:f,getAllDefinitions:c,getRendererForConstraint:n=>i.get(n),getConstraintDefinition:e,validateConstraintValue:(n,l)=>{const u=e(n);if(u){const m=u.schema,g=C.ajv.compile(m);return g(l)?{status:"success"}:{status:"error",code:"invalid",message:"Invalid value",error:g.errors}}return{status:"error",code:"constraint-def-missing",message:"Constraint not found"}}}};exports.PluginsProvider=P;exports.useConstraints=R;exports.usePluginSystem=h;
2
2
  //# sourceMappingURL=index.cjs8.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs8.js","sources":["../src/packages/plugins/string.tsx"],"sourcesContent":["import { Input } from \"@/components/ui/input\";\nimport { InputErrorWrapper } from \"@/components/input-error\";\nimport { Label } from \"@/components/ui/label\";\nimport { cn } from \"@/lib/utils\";\nimport {\n BaseJSONSchemaPlugin,\n ConstraintRendererProps,\n useConstraints,\n} from \"@/packages/constraints/context\";\nimport { Button } from \"@/components/ui/button\";\nimport { X } from \"lucide-react\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\n\n// Generic string constraint renderer for number-based constraints (minLength, maxLength)\nconst StringNumberConstraintRenderer = ({\n constraintName,\n value,\n onConstraintChange,\n disabled,\n error,\n onRemoveConstraint,\n}: ConstraintRendererProps<number> & { disabled?: boolean }) => {\n const { getConstraintDefinition } = useConstraints();\n const constraintDef = getConstraintDefinition(constraintName);\n\n if (!constraintDef) {\n return null;\n }\n\n return (\n <InputErrorWrapper\n errorCode={error?.code}\n errorDescription={error?.message}\n showError={!!error}\n >\n <div>\n <Label className=\"mb-2\" htmlFor={constraintDef.name}>\n {constraintDef.name}\n </Label>\n <div className=\"flex items-center gap-2\">\n <Input\n id={constraintDef.name}\n type=\"number\"\n value={value}\n onChange={(e) => onConstraintChange(Number(e.target.value))}\n disabled={disabled}\n min={0}\n className={cn({ \"border-destructive\": error })}\n />\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => onRemoveConstraint()}\n >\n <X className=\"size-4\" />\n </Button>\n </div>\n {constraintDef.description && (\n <div className=\"mt-2 text-sm text-gray-500\">\n {constraintDef.description}\n </div>\n )}\n </div>\n </InputErrorWrapper>\n );\n};\n\n// Pattern constraint renderer for regex input\nconst PatternConstraintRenderer = ({\n constraintName,\n value,\n onConstraintChange,\n disabled,\n error,\n onRemoveConstraint,\n}: ConstraintRendererProps<string> & { disabled?: boolean }) => {\n const { getConstraintDefinition } = useConstraints();\n const constraintDef = getConstraintDefinition(constraintName);\n\n if (!constraintDef) {\n return null;\n }\n\n return (\n <InputErrorWrapper\n errorCode={error?.code}\n errorDescription={error?.message}\n showError={!!error}\n >\n <div>\n <Label className=\"mb-2\" htmlFor={constraintDef.name}>\n {constraintDef.name}\n </Label>\n <div className=\"flex items-center gap-2\">\n <Input\n id={constraintDef.name}\n type=\"text\"\n value={value}\n onChange={(e) => onConstraintChange(e.target.value)}\n disabled={disabled}\n placeholder=\"Regular expression pattern\"\n className={cn({ \"border-destructive\": error })}\n />\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => onRemoveConstraint()}\n >\n <X className=\"size-4\" />\n </Button>\n </div>\n {constraintDef.description && (\n <div className=\"mt-2 text-sm text-gray-500\">\n {constraintDef.description}\n </div>\n )}\n </div>\n </InputErrorWrapper>\n );\n};\n\n// Format constraint renderer with predefined format options\nconst FormatConstraintRenderer = ({\n constraintName,\n value,\n onConstraintChange,\n disabled,\n error,\n onRemoveConstraint,\n}: ConstraintRendererProps<string> & { disabled?: boolean }) => {\n const { getConstraintDefinition } = useConstraints();\n const constraintDef = getConstraintDefinition(constraintName);\n\n const formatOptions = [\n { value: \"email\", label: \"Email\" },\n { value: \"uri\", label: \"URI\" },\n { value: \"url\", label: \"URL\" },\n { value: \"date\", label: \"Date\" },\n { value: \"date-time\", label: \"Date-Time\" },\n { value: \"uuid\", label: \"UUID\" },\n { value: \"hostname\", label: \"Hostname\" },\n { value: \"ipv4\", label: \"IPv4\" },\n { value: \"ipv6\", label: \"IPv6\" },\n { value: \"phone\", label: \"Phone\" },\n ];\n\n if (!constraintDef) {\n return null;\n }\n\n return (\n <InputErrorWrapper\n errorCode={error?.code}\n errorDescription={error?.message}\n showError={!!error}\n >\n <div>\n <Label className=\"mb-2\" htmlFor={constraintDef.name}>\n {constraintDef.name}\n </Label>\n <div className=\"flex items-center gap-2\">\n <Select\n value={value}\n onValueChange={(newValue) => onConstraintChange(newValue)}\n disabled={disabled}\n >\n <SelectTrigger\n id={constraintDef.name}\n className={cn(\"flex-1\", { \"border-destructive\": error })}\n >\n <SelectValue placeholder=\"Select format\" />\n </SelectTrigger>\n <SelectContent>\n {formatOptions.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => onRemoveConstraint()}\n >\n <X className=\"size-4\" />\n </Button>\n </div>\n {constraintDef.description && (\n <div className=\"mt-2 text-sm text-gray-500\">\n {constraintDef.description}\n </div>\n )}\n </div>\n </InputErrorWrapper>\n );\n};\n\n// Export the renderers\nexport const StringMinLengthRenderer = StringNumberConstraintRenderer;\nexport const StringMaxLengthRenderer = StringNumberConstraintRenderer;\nexport const StringPatternRenderer = PatternConstraintRenderer;\nexport const StringFormatRenderer = FormatConstraintRenderer;\n\nconst plugin: BaseJSONSchemaPlugin = {\n id: \"string-constraints\",\n hooks: {\n registerConstraints() {\n return [\n {\n name: \"minLength\",\n label: \"Min Length\",\n appliesTo: [\"string\"],\n schema: {\n type: \"integer\",\n title: \"Minimum Length Constraint\",\n description: \"The minimum length of the string\",\n examples: [1, 5, 10],\n minimum: 0,\n },\n description: \"Constrains a string to a minimum length\",\n defaultValue: 0,\n },\n {\n name: \"maxLength\",\n label: \"Max Length\",\n appliesTo: [\"string\"],\n schema: {\n type: \"integer\",\n title: \"Maximum Length Constraint\",\n description: \"The maximum length of the string\",\n examples: [50, 100, 255],\n minimum: 0,\n },\n description: \"Constrains a string to a maximum length\",\n defaultValue: 100,\n },\n {\n name: \"pattern\",\n label: \"Pattern\",\n appliesTo: [\"string\"],\n schema: {\n type: \"string\",\n title: \"Pattern Constraint\",\n description: \"Regular expression pattern the string must match\",\n examples: [\"^[a-zA-Z0-9]+$\", \"\\\\d{3}-\\\\d{2}-\\\\d{4}\"],\n },\n description: \"Regular expression that the string must match\",\n defaultValue: \"\",\n },\n {\n name: \"format\",\n label: \"Format\",\n appliesTo: [\"string\"],\n schema: {\n type: \"string\",\n title: \"Format Constraint\",\n description: \"Predefined format the string must follow\",\n enum: [\n \"email\",\n \"uri\",\n \"url\",\n \"date\",\n \"date-time\",\n \"uuid\",\n \"hostname\",\n \"ipv4\",\n \"ipv6\",\n \"phone\",\n ],\n },\n description: \"Predefined format validation for the string\",\n defaultValue: \"email\",\n },\n ];\n },\n registerRenderers() {\n return {\n minLength: StringMinLengthRenderer,\n maxLength: StringMaxLengthRenderer,\n pattern: StringPatternRenderer,\n format: StringFormatRenderer,\n };\n },\n },\n};\n\nexport default plugin;\n"],"names":["StringNumberConstraintRenderer","constraintName","value","onConstraintChange","disabled","error","onRemoveConstraint","getConstraintDefinition","useConstraints","constraintDef","jsx","InputErrorWrapper","Label","jsxs","Input","e","cn","Button","X","PatternConstraintRenderer","FormatConstraintRenderer","formatOptions","Select","newValue","SelectTrigger","SelectValue","SelectContent","option","SelectItem","StringMinLengthRenderer","StringMaxLengthRenderer","StringPatternRenderer","StringFormatRenderer"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs8.js","sources":["../src/packages/constraints/context.tsx"],"sourcesContent":["import { createContext, useContext, useMemo, useRef } from \"react\";\nimport type { PropsWithChildren, ComponentType } from \"react\";\n\nimport type { JSONSchema7 } from \"json-schema\";\nimport { ajv } from \"@/packages/builder/utils\";\nimport type { OperationError } from \"../builder/shared-types\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface ConstraintRendererProps<T = any> {\n value: T;\n onConstraintChange: (newValue: T) => void;\n onRemoveConstraint: () => void;\n constraintName: string;\n // Is this constraint disabled/readonly\n disabled?: boolean;\n error?: OperationError;\n}\n\nexport interface ConstraintDefinition {\n /**\n * The unique identifier for the constraint\n */\n name: keyof JSONSchema7;\n label: string;\n /**\n * Types this constraint applies to.\n */\n appliesTo: string[];\n /**\n * Apply JSON schema principles to the constraint.\n */\n schema: JSONSchema7;\n description?: string;\n defaultValue: unknown;\n}\n\nexport interface Constraint {\n name: ConstraintDefinition[\"name\"];\n value: unknown;\n}\n\nexport interface BaseJSONSchemaPlugin {\n id: string;\n hooks: {\n registerConstraints?: () => ConstraintDefinition[];\n registerRenderers?: () => Record<\n string,\n ComponentType<ConstraintRendererProps>\n >;\n };\n}\n\ninterface ContextState {\n constraintDefinitionsMap: Map<string, ConstraintDefinition>;\n constraintRenderersMap: Map<string, ComponentType<ConstraintRendererProps>>;\n}\n\nconst PluginsContext = createContext<ContextState | undefined>(undefined);\n\nexport const PluginsProvider = ({ children }: PropsWithChildren) => {\n // Store references. If you need to trigger a re-render,\n //use the methods in usePluginSystem hook instead\n const constraintDefinitionsRef = useRef<Map<string, ConstraintDefinition>>(\n new Map(),\n );\n const constraintRenderersRef = useRef<\n Map<string, ComponentType<ConstraintRendererProps>>\n >(new Map());\n\n return (\n <PluginsContext.Provider\n value={{\n constraintDefinitionsMap: constraintDefinitionsRef.current,\n constraintRenderersMap: constraintRenderersRef.current,\n }}\n >\n {children}\n </PluginsContext.Provider>\n );\n};\n\n// The main plugin system hook\nexport function usePluginSystem<TPlugin extends BaseJSONSchemaPlugin>(\n plugins: TPlugin[],\n) {\n const context = useContext(PluginsContext);\n if (!context) {\n throw new Error(\"usePluginSystem must be used within a PluginsProvider\");\n }\n\n const { constraintDefinitionsMap, constraintRenderersMap } = context;\n\n const memoizedPluginValues = useMemo(() => {\n // Register all plugins\n plugins.forEach((plugin) => {\n // Register constraints\n if (plugin.hooks.registerConstraints) {\n const constraints = plugin.hooks.registerConstraints();\n constraints.forEach((constraint) => {\n constraintDefinitionsMap.set(constraint.name, constraint);\n });\n }\n\n // Register renderers\n if (plugin.hooks.registerRenderers) {\n const renderers = plugin.hooks.registerRenderers();\n Object.entries(renderers).forEach(([name, component]) => {\n constraintRenderersMap.set(name, component);\n });\n }\n });\n\n return {\n // Check if a plugin with given ID exists\n hasPlugin(id: string): boolean {\n return plugins.some((plugin) => plugin.id === id);\n },\n\n // Get a plugin by ID\n getPlugin(id: string): BaseJSONSchemaPlugin | undefined {\n return plugins.find((plugin) => plugin.id === id);\n },\n };\n }, [plugins]);\n\n return memoizedPluginValues;\n}\n\nexport const useConstraints = () => {\n const context = useContext(PluginsContext);\n if (!context) {\n throw new Error(\"useConstraints must be used within a ConstraintsProvider\");\n }\n\n const { constraintDefinitionsMap, constraintRenderersMap } = context;\n\n const getAllDefinitions = (): ConstraintDefinition[] => {\n return Array.from(constraintDefinitionsMap.values());\n };\n\n const getConstraintDefinitionsForType = (\n type: string,\n ): ConstraintDefinition[] => {\n const definitions = getAllDefinitions();\n return definitions.filter((definition) =>\n definition.appliesTo.includes(type),\n );\n };\n\n const getConstraintDefinition = (constraintName: string) => {\n return constraintDefinitionsMap.get(constraintName);\n };\n\n const getRendererForConstraint = (constraintName: string) => {\n return constraintRenderersMap.get(constraintName);\n };\n\n const validateConstraintValue = (constraintName: string, value: unknown) => {\n const constraintDefinition = getConstraintDefinition(constraintName);\n\n if (constraintDefinition) {\n const schema = constraintDefinition.schema;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const validate = ajv.compile<any>(schema);\n const valid = validate(value);\n\n if (valid) {\n return { status: \"success\" as const };\n }\n\n const obj = {\n status: \"error\" as const,\n code: \"invalid\" as const,\n message: \"Invalid value\",\n error: validate.errors,\n };\n\n return obj satisfies OperationError;\n }\n\n const obj = {\n status: \"error\" as const,\n code: \"constraint-def-missing\" as const,\n message: \"Constraint not found\",\n };\n\n return obj satisfies OperationError;\n };\n\n return {\n getConstraintDefinitionsForType,\n getAllDefinitions,\n getRendererForConstraint,\n getConstraintDefinition,\n validateConstraintValue,\n };\n};\n"],"names":["PluginsContext","createContext","PluginsProvider","children","constraintDefinitionsRef","useRef","constraintRenderersRef","jsx","usePluginSystem","plugins","context","useContext","constraintDefinitionsMap","constraintRenderersMap","useMemo","plugin","constraint","renderers","name","component","id","useConstraints","getAllDefinitions","getConstraintDefinitionsForType","type","definition","getConstraintDefinition","constraintName","value","constraintDefinition","schema","validate","ajv"],"mappings":"sKAyDMA,EAAiBC,gBAAwC,MAAS,EAE3DC,EAAkB,CAAC,CAAE,SAAAC,KAAkC,CAGlE,MAAMC,EAA2BC,EAAA,WAC3B,GACN,EACMC,EAAyBD,EAAAA,OAEzB,IAAA,GAAK,EAGT,OAAAE,EAAA,IAACP,EAAe,SAAf,CACC,MAAO,CACL,yBAA0BI,EAAyB,QACnD,uBAAwBE,EAAuB,OACjD,EAEC,SAAAH,CAAA,CACH,CAEJ,EAGO,SAASK,EACdC,EACA,CACM,MAAAC,EAAUC,aAAWX,CAAc,EACzC,GAAI,CAACU,EACG,MAAA,IAAI,MAAM,uDAAuD,EAGnE,KAAA,CAAE,yBAAAE,EAA0B,uBAAAC,CAAA,EAA2BH,EAmCtD,OAjCsBI,EAAAA,QAAQ,KAE3BL,EAAA,QAASM,GAAW,CAUtB,GARAA,EAAO,MAAM,qBACKA,EAAO,MAAM,oBAAoB,EACzC,QAASC,GAAe,CACTJ,EAAA,IAAII,EAAW,KAAMA,CAAU,CAAA,CACzD,EAICD,EAAO,MAAM,kBAAmB,CAC5B,MAAAE,EAAYF,EAAO,MAAM,kBAAkB,EAC1C,OAAA,QAAQE,CAAS,EAAE,QAAQ,CAAC,CAACC,EAAMC,CAAS,IAAM,CAChCN,EAAA,IAAIK,EAAMC,CAAS,CAAA,CAC3C,CAAA,CACH,CACD,EAEM,CAEL,UAAUC,EAAqB,CAC7B,OAAOX,EAAQ,KAAMM,GAAWA,EAAO,KAAOK,CAAE,CAClD,EAGA,UAAUA,EAA8C,CACtD,OAAOX,EAAQ,KAAMM,GAAWA,EAAO,KAAOK,CAAE,CAAA,CAEpD,GACC,CAACX,CAAO,CAAC,CAGd,CAEO,MAAMY,EAAiB,IAAM,CAC5B,MAAAX,EAAUC,aAAWX,CAAc,EACzC,GAAI,CAACU,EACG,MAAA,IAAI,MAAM,0DAA0D,EAGtE,KAAA,CAAE,yBAAAE,EAA0B,uBAAAC,CAAA,EAA2BH,EAEvDY,EAAoB,IACjB,MAAM,KAAKV,EAAyB,OAAA,CAAQ,EAG/CW,EACJC,GAEoBF,EAAkB,EACnB,OAAQG,GACzBA,EAAW,UAAU,SAASD,CAAI,CACpC,EAGIE,EAA2BC,GACxBf,EAAyB,IAAIe,CAAc,EAuC7C,MAAA,CACL,gCAAAJ,EACA,kBAAAD,EACA,yBAvCgCK,GACzBd,EAAuB,IAAIc,CAAc,EAuChD,wBAAAD,EACA,wBArC8B,CAACC,EAAwBC,IAAmB,CACpE,MAAAC,EAAuBH,EAAwBC,CAAc,EAEnE,GAAIE,EAAsB,CACxB,MAAMC,EAASD,EAAqB,OAE9BE,EAAWC,EAAAA,IAAI,QAAaF,CAAM,EAGxC,OAFcC,EAASH,CAAK,EAGnB,CAAE,OAAQ,SAAmB,EAG1B,CACV,OAAQ,QACR,KAAM,UACN,QAAS,gBACT,MAAOG,EAAS,MAClB,CAEO,CASF,MANK,CACV,OAAQ,QACR,KAAM,yBACN,QAAS,sBACX,CAGF,CAQA,CACF"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react"),u=require("./index.cjs57.js"),i=require("react/jsx-runtime");function l(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,o.get?o:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const d=l(s);var f="Arrow",n=d.forwardRef((e,t)=>{const{children:r,width:o=10,height:a=5,...c}=e;return i.jsx(u.Primitive.svg,{...c,ref:t,width:o,height:a,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?r:i.jsx("polygon",{points:"0,0 30,0 15,10"})})});n.displayName=f;var p=n;exports.Arrow=n;exports.Root=p;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react"),u=require("./index.cjs55.js"),i=require("react/jsx-runtime");function l(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,o.get?o:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const d=l(s);var f="Arrow",n=d.forwardRef((e,t)=>{const{children:r,width:o=10,height:a=5,...c}=e;return i.jsx(u.Primitive.svg,{...c,ref:t,width:o,height:a,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?r:i.jsx("polygon",{points:"0,0 30,0 15,10"})})});n.displayName=f;var p=n;exports.Arrow=n;exports.Root=p;
2
2
  //# sourceMappingURL=index.cjs81.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function r(t){return t===void 0?!0:typeof t=="string"||Array.isArray(t)?t.length===0:Object.keys(t).length===0}exports.a=r;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),n=require("./index.cjs12.js");function o({className:e,type:i,...r}){return t.jsx("input",{type:i,"data-slot":"input",className:n.cn("border-input file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",e),...r})}exports.Input=o;
2
2
  //# sourceMappingURL=index.cjs9.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs9.js","sources":["../../../node_modules/.pnpm/remeda@2.20.2/node_modules/remeda/dist/chunk-VCYTMP4D.js"],"sourcesContent":["function n(e){return e===void 0?!0:typeof e==\"string\"||Array.isArray(e)?e.length===0:Object.keys(e).length===0}export{n as a};\n"],"names":["n","e"],"mappings":"gFAAA,SAASA,EAAEC,EAAE,CAAC,OAAOA,IAAI,OAAO,GAAG,OAAOA,GAAG,UAAU,MAAM,QAAQA,CAAC,EAAEA,EAAE,SAAS,EAAE,OAAO,KAAKA,CAAC,EAAE,SAAS,CAAC","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.cjs9.js","sources":["../src/components/ui/input.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n \"border-input file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Input }\n"],"names":["Input","className","type","props","jsx","cn"],"mappings":"mJAIA,SAASA,EAAM,CAAE,UAAAC,EAAW,KAAAC,EAAM,GAAGC,GAAwC,CAEzE,OAAAC,EAAA,IAAC,QAAA,CACC,KAAAF,EACA,YAAU,QACV,UAAWG,EAAA,GACT,ibACA,gFACA,yGACAJ,CACF,EACC,GAAGE,CAAA,CACN,CAEJ"}
package/dist/index.d.mts CHANGED
@@ -1,10 +1,11 @@
1
+ import { default as arrayPlugin } from './packages/plugins/array';
2
+ import { default as numberPlugin } from './packages/plugins/number';
3
+ import { default as objectPlugin } from './packages/plugins/object';
4
+ import { default as stringPlugin } from './packages/plugins/string';
1
5
  export { SchemaContext, SchemaProvider, useSchema, } from './packages/builder/context';
2
6
  export { SchemaBuilder } from './packages/builder/schema-builder';
3
7
  export type { PropertyComponentProps } from './packages/builder/schema-builder';
4
8
  export { useConstraints, usePluginSystem, PluginsProvider, } from './packages/constraints/context';
5
9
  export type { BaseJSONSchemaPlugin, Constraint, ConstraintDefinition, ConstraintRendererProps, } from './packages/constraints/context';
6
- export * from './packages/plugins/array';
7
- export * from './packages/plugins/number';
8
- export * from './packages/plugins/object';
9
- export * from './packages/plugins/string';
10
+ export { arrayPlugin, numberPlugin, objectPlugin, stringPlugin };
10
11
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,cAAc,EACd,SAAS,GACV,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,YAAY,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,EACL,cAAc,EACd,eAAe,EACf,eAAe,GAChB,MAAM,gCAAgC,CAAC;AACxC,YAAY,EACV,oBAAoB,EACpB,UAAU,EACV,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,gCAAgC,CAAC;AAGxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.mts"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,0BAA0B,CAAC;AACnD,OAAO,YAAY,MAAM,2BAA2B,CAAC;AACrD,OAAO,YAAY,MAAM,2BAA2B,CAAC;AACrD,OAAO,YAAY,MAAM,2BAA2B,CAAC;AAErD,OAAO,EACL,aAAa,EACb,cAAc,EACd,SAAS,GACV,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,YAAY,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,EACL,cAAc,EACd,eAAe,EACf,eAAe,GAChB,MAAM,gCAAgC,CAAC;AACxC,YAAY,EACV,oBAAoB,EACpB,UAAU,EACV,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC"}
package/dist/index.es.js CHANGED
@@ -1,31 +1,21 @@
1
- import { SchemaContext as n, SchemaProvider as m, useSchema as t } from "./index.es2.js";
2
- import { SchemaBuilder as o } from "./index.es3.js";
3
- import { PluginsProvider as d, useConstraints as a, usePluginSystem as x } from "./index.es4.js";
4
- import { ArrayMaxItemsRenderer as R, ArrayMinItemsRenderer as M, ArrayUniqueItemsRenderer as p } from "./index.es5.js";
5
- import { NumberExclusiveMaximumRenderer as c, NumberExclusiveMinimumRenderer as f, NumberMaximumRenderer as g, NumberMinimumRenderer as b, NumberMultipleOfRenderer as l } from "./index.es6.js";
6
- import { ObjectMaxPropertiesRenderer as h, ObjectMinPropertiesRenderer as N } from "./index.es7.js";
7
- import { StringFormatRenderer as y, StringMaxLengthRenderer as A, StringMinLengthRenderer as I, StringPatternRenderer as O } from "./index.es8.js";
1
+ import { default as o } from "./index.es2.js";
2
+ import { default as a } from "./index.es3.js";
3
+ import { default as m } from "./index.es4.js";
4
+ import { default as f } from "./index.es5.js";
5
+ import { SchemaContext as l, SchemaProvider as n, useSchema as x } from "./index.es6.js";
6
+ import { SchemaBuilder as d } from "./index.es7.js";
7
+ import { PluginsProvider as p, useConstraints as c, usePluginSystem as S } from "./index.es8.js";
8
8
  export {
9
- R as ArrayMaxItemsRenderer,
10
- M as ArrayMinItemsRenderer,
11
- p as ArrayUniqueItemsRenderer,
12
- c as NumberExclusiveMaximumRenderer,
13
- f as NumberExclusiveMinimumRenderer,
14
- g as NumberMaximumRenderer,
15
- b as NumberMinimumRenderer,
16
- l as NumberMultipleOfRenderer,
17
- h as ObjectMaxPropertiesRenderer,
18
- N as ObjectMinPropertiesRenderer,
19
- d as PluginsProvider,
20
- o as SchemaBuilder,
21
- n as SchemaContext,
22
- m as SchemaProvider,
23
- y as StringFormatRenderer,
24
- A as StringMaxLengthRenderer,
25
- I as StringMinLengthRenderer,
26
- O as StringPatternRenderer,
27
- a as useConstraints,
28
- x as usePluginSystem,
29
- t as useSchema
9
+ p as PluginsProvider,
10
+ d as SchemaBuilder,
11
+ l as SchemaContext,
12
+ n as SchemaProvider,
13
+ o as arrayPlugin,
14
+ a as numberPlugin,
15
+ m as objectPlugin,
16
+ f as stringPlugin,
17
+ c as useConstraints,
18
+ S as usePluginSystem,
19
+ x as useSchema
30
20
  };
31
21
  //# sourceMappingURL=index.es.js.map
@@ -1,26 +1,26 @@
1
- import { a as n } from "./index.es53.js";
2
- function p(...e) {
3
- return n(i, e);
4
- }
5
- function i(e, r = [], o = []) {
6
- if (typeof e == "function") return e;
7
- if (typeof e != "object" || e === null || e instanceof Date || e instanceof RegExp) return structuredClone(e);
8
- let t = r.indexOf(e);
9
- return t !== -1 ? o[t] : (r.push(e), Array.isArray(e) ? s(e, r, o) : c(e, r, o));
10
- }
11
- function c(e, r, o) {
12
- let t = {};
13
- o.push(t);
14
- for (let [u, f] of Object.entries(e)) t[u] = i(f, r, o);
15
- return t;
16
- }
17
- function s(e, r, o) {
18
- let t = [];
19
- o.push(t);
20
- for (let [u, f] of e.entries()) t[u] = i(f, r, o);
21
- return t;
1
+ import { jsxs as m, jsx as a } from "react/jsx-runtime";
2
+ import { cn as c } from "./index.es12.js";
3
+ function n({
4
+ children: s,
5
+ errorCode: e,
6
+ errorDescription: t,
7
+ showError: i = !1,
8
+ className: l
9
+ }) {
10
+ return /* @__PURE__ */ m("div", { className: c("space-y-2", l), children: [
11
+ i && e && /* @__PURE__ */ a(
12
+ "div",
13
+ {
14
+ className: "text-sm font-medium text-destructive",
15
+ "aria-live": "polite",
16
+ children: e
17
+ }
18
+ ),
19
+ s,
20
+ i && t && /* @__PURE__ */ a("div", { className: "text-sm text-destructive", "aria-live": "polite", children: t })
21
+ ] });
22
22
  }
23
23
  export {
24
- p as a
24
+ n as InputErrorWrapper
25
25
  };
26
26
  //# sourceMappingURL=index.es10.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es10.js","sources":["../../../node_modules/.pnpm/remeda@2.20.2/node_modules/remeda/dist/chunk-2OQBQB3V.js"],"sourcesContent":["import{a as i}from\"./chunk-WIMGWYZL.js\";function p(...n){return i(u,n)}function u(n,t=[],r=[]){if(typeof n==\"function\")return n;if(typeof n!=\"object\"||n===null||n instanceof Date||n instanceof RegExp)return structuredClone(n);let o=t.indexOf(n);return o!==-1?r[o]:(t.push(n),Array.isArray(n)?y(n,t,r):s(n,t,r))}function s(n,t,r){let o={};r.push(o);for(let[e,c]of Object.entries(n))o[e]=u(c,t,r);return o}function y(n,t,r){let o=[];r.push(o);for(let[e,c]of n.entries())o[e]=u(c,t,r);return o}export{p as a};\n"],"names":["n","i","u","t","r","o","y","s","e","c"],"mappings":";AAAwC,SAAS,KAAKA,GAAE;AAAC,SAAOC,EAAEC,GAAEF,CAAC;AAAC;AAAC,SAASE,EAAEF,GAAEG,IAAE,CAAE,GAACC,IAAE,IAAG;AAAC,MAAG,OAAOJ,KAAG,WAAW,QAAOA;AAAE,MAAG,OAAOA,KAAG,YAAUA,MAAI,QAAMA,aAAa,QAAMA,aAAa,OAAO,QAAO,gBAAgBA,CAAC;AAAE,MAAIK,IAAEF,EAAE,QAAQH,CAAC;AAAE,SAAOK,MAAI,KAAGD,EAAEC,CAAC,KAAGF,EAAE,KAAKH,CAAC,GAAE,MAAM,QAAQA,CAAC,IAAEM,EAAEN,GAAEG,GAAEC,CAAC,IAAEG,EAAEP,GAAEG,GAAEC,CAAC;AAAE;AAAC,SAASG,EAAEP,GAAEG,GAAEC,GAAE;AAAC,MAAIC,IAAE,CAAE;AAAC,EAAAD,EAAE,KAAKC,CAAC;AAAE,WAAO,CAACG,GAAEC,CAAC,KAAI,OAAO,QAAQT,CAAC,EAAE,CAAAK,EAAEG,CAAC,IAAEN,EAAEO,GAAEN,GAAEC,CAAC;AAAE,SAAOC;AAAC;AAAC,SAASC,EAAEN,GAAEG,GAAEC,GAAE;AAAC,MAAIC,IAAE,CAAE;AAAC,EAAAD,EAAE,KAAKC,CAAC;AAAE,WAAO,CAACG,GAAEC,CAAC,KAAIT,EAAE,QAAO,EAAG,CAAAK,EAAEG,CAAC,IAAEN,EAAEO,GAAEN,GAAEC,CAAC;AAAE,SAAOC;AAAC;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.es10.js","sources":["../src/components/input-error.tsx"],"sourcesContent":["import type React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\ninterface InputErrorWrapperProps {\n children: React.ReactNode;\n errorCode?: string;\n errorDescription?: string;\n showError?: boolean;\n className?: string;\n}\n\nexport function InputErrorWrapper({\n children,\n errorCode,\n errorDescription,\n showError = false,\n className,\n}: InputErrorWrapperProps) {\n return (\n <div className={cn(\"space-y-2\", className)}>\n {showError && errorCode && (\n <div\n className=\"text-sm font-medium text-destructive\"\n aria-live=\"polite\"\n >\n {errorCode}\n </div>\n )}\n\n {children}\n\n {showError && errorDescription && (\n <div className=\"text-sm text-destructive\" aria-live=\"polite\">\n {errorDescription}\n </div>\n )}\n </div>\n );\n}\n"],"names":["InputErrorWrapper","children","errorCode","errorDescription","showError","className","cn","jsx"],"mappings":";;AAWO,SAASA,EAAkB;AAAA,EAChC,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,WAAAC;AACF,GAA2B;AACzB,2BACG,OAAI,EAAA,WAAWC,EAAG,aAAaD,CAAS,GACtC,UAAA;AAAA,IAAAD,KAAaF,KACZ,gBAAAK;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,aAAU;AAAA,QAET,UAAAL;AAAA,MAAA;AAAA,IACH;AAAA,IAGDD;AAAA,IAEAG,KAAaD,KACX,gBAAAI,EAAA,OAAA,EAAI,WAAU,4BAA2B,aAAU,UACjD,UACHJ,EAAA,CAAA;AAAA,EAAA,GAEJ;AAEJ;"}
@@ -1,51 +1,23 @@
1
- import { jsx as n } from "react/jsx-runtime";
2
- import { Slot as s } from "./index.es34.js";
3
- import { cva as a } from "./index.es35.js";
4
- import { cn as d } from "./index.es22.js";
5
- const u = a(
6
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
7
- {
8
- variants: {
9
- variant: {
10
- default: "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",
11
- destructive: "bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40",
12
- outline: "border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground",
13
- secondary: "bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",
14
- ghost: "hover:bg-accent hover:text-accent-foreground",
15
- link: "text-primary underline-offset-4 hover:underline"
16
- },
17
- size: {
18
- default: "h-9 px-4 py-2 has-[>svg]:px-3",
19
- sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
20
- lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
21
- icon: "size-9"
22
- }
23
- },
24
- defaultVariants: {
25
- variant: "default",
26
- size: "default"
27
- }
28
- }
29
- );
30
- function b({
1
+ import { jsx as o } from "react/jsx-runtime";
2
+ import { Root as a } from "./index.es31.js";
3
+ import { cn as r } from "./index.es12.js";
4
+ function l({
31
5
  className: e,
32
- variant: r,
33
- size: t,
34
- asChild: i = !1,
35
- ...o
6
+ ...t
36
7
  }) {
37
- return /* @__PURE__ */ n(
38
- i ? s : "button",
8
+ return /* @__PURE__ */ o(
9
+ a,
39
10
  {
40
- "data-slot": "button",
41
- className: d(u({ variant: r, size: t, className: e })),
42
- type: "button",
43
- ...o
11
+ "data-slot": "label",
12
+ className: r(
13
+ "flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
14
+ e
15
+ ),
16
+ ...t
44
17
  }
45
18
  );
46
19
  }
47
20
  export {
48
- b as Button,
49
- u as buttonVariants
21
+ l as Label
50
22
  };
51
23
  //# sourceMappingURL=index.es11.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es11.js","sources":["../src/components/ui/button.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40\",\n outline:\n \"border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean;\n }) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n type=\"button\"\n {...props}\n />\n );\n}\n\nexport { Button, buttonVariants };\n"],"names":["buttonVariants","cva","Button","className","variant","size","asChild","props","jsx","Slot","cn"],"mappings":";;;;AAMA,MAAMA,IAAiBC;AAAA,EACrB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SACE;AAAA,QACF,aACE;AAAA,QACF,SACE;AAAA,QACF,WACE;AAAA,QACF,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,MACA,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,MAAM;AAAA,MAAA;AAAA,IAEV;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IAAA;AAAA,EACR;AAEJ;AAEA,SAASC,EAAO;AAAA,EACd,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,GAAGC;AACL,GAGK;AAID,SAAA,gBAAAC;AAAA,IAHWF,IAAUG,IAAO;AAAA,IAG3B;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,EAAGV,EAAe,EAAE,SAAAI,GAAS,MAAAC,GAAM,WAAAF,EAAA,CAAW,CAAC;AAAA,MAC1D,MAAK;AAAA,MACJ,GAAGI;AAAA,IAAA;AAAA,EACN;AAEJ;"}
1
+ {"version":3,"file":"index.es11.js","sources":["../src/components/ui/label.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(\n \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Label }\n"],"names":["Label","className","props","jsx","LabelPrimitive.Root","cn"],"mappings":";;;AAOA,SAASA,EAAM;AAAA,EACb,WAAAC;AAAA,EACA,GAAGC;AACL,GAAqD;AAEjD,SAAA,gBAAAC;AAAA,IAACC;AAAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAJ;AAAA,MACF;AAAA,MACC,GAAGC;AAAA,IAAA;AAAA,EACN;AAEJ;"}