reactaform 1.4.4 → 1.8.0

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 (98) hide show
  1. package/README.md +72 -12
  2. package/dist/components/LayoutComponents.d.ts +77 -0
  3. package/dist/components/PopupOptionMenu.d.ts +16 -0
  4. package/dist/components/ReactaForm.d.ts +4 -0
  5. package/dist/components/ReactaFormProvider.d.ts +3 -0
  6. package/dist/components/ReactaFormRenderer.d.ts +10 -0
  7. package/dist/components/Tooltip.d.ts +8 -0
  8. package/dist/components/fields/CheckboxInput.d.ts +5 -0
  9. package/dist/components/fields/ColorInput.d.ts +16 -0
  10. package/dist/components/fields/DateInput.d.ts +11 -0
  11. package/dist/components/fields/DropdownInput.d.ts +16 -0
  12. package/dist/components/fields/EmailInput.d.ts +6 -0
  13. package/dist/components/fields/FileInput.d.ts +5 -0
  14. package/dist/components/fields/FloatArrayInput.d.ts +8 -0
  15. package/dist/components/fields/FloatInput.d.ts +9 -0
  16. package/dist/components/fields/ImageDisplay.d.ts +18 -0
  17. package/dist/components/fields/IntegerArrayInput.d.ts +9 -0
  18. package/dist/components/fields/IntegerInput.d.ts +6 -0
  19. package/dist/components/fields/MultiSelection.d.ts +9 -0
  20. package/dist/components/fields/MultilineTextInput.d.ts +6 -0
  21. package/dist/components/fields/NumericStepperInput.d.ts +6 -0
  22. package/dist/components/fields/PasswordInput.d.ts +6 -0
  23. package/dist/components/fields/PhoneInput.d.ts +6 -0
  24. package/dist/components/fields/RadioInput.d.ts +8 -0
  25. package/dist/components/fields/RatingInput.d.ts +9 -0
  26. package/dist/components/fields/Separator.d.ts +21 -0
  27. package/dist/components/fields/SliderInput.d.ts +5 -0
  28. package/dist/components/fields/SpinInput.d.ts +5 -0
  29. package/dist/components/fields/SwitchInput.d.ts +13 -0
  30. package/dist/components/fields/TextInput.d.ts +6 -0
  31. package/dist/components/fields/TimeInput.d.ts +6 -0
  32. package/dist/components/fields/UnitValueInput.d.ts +8 -0
  33. package/dist/components/fields/UrlInput.d.ts +21 -0
  34. package/dist/components/renderFields.d.ts +3 -0
  35. package/dist/core/baseRegistry.d.ts +15 -0
  36. package/dist/core/componentRegistry.d.ts +8 -0
  37. package/dist/core/debounceConfig.d.ts +6 -0
  38. package/dist/core/debounceEnv.d.ts +1 -0
  39. package/dist/core/fieldVisibility.d.ts +25 -0
  40. package/dist/core/index.d.ts +23 -0
  41. package/dist/core/pluginRegistry.d.ts +44 -0
  42. package/dist/core/reactaFormModel.d.ts +31 -0
  43. package/dist/core/reactaFormTypes.d.ts +141 -0
  44. package/dist/core/submissionHandlerRegistry.d.ts +7 -0
  45. package/dist/core/submitForm.d.ts +9 -0
  46. package/dist/hooks/useDebouncedCallback.d.ts +27 -0
  47. package/dist/hooks/useDropdownPosition.d.ts +6 -0
  48. package/dist/hooks/useReactaFormContext.d.ts +4 -0
  49. package/dist/hooks/useUncontrolledValidatedInput.d.ts +18 -0
  50. package/dist/hooks/useUnitValueField.d.ts +13 -0
  51. package/dist/index.d.ts +9 -6
  52. package/dist/reactaform.cjs.js +18 -5
  53. package/dist/reactaform.css +1 -1
  54. package/dist/reactaform.es.js +2771 -2738
  55. package/dist/themes/ant-design-dark.css +31 -0
  56. package/dist/themes/ant-design.css +42 -0
  57. package/dist/themes/blueprint-dark.css +31 -0
  58. package/dist/themes/blueprint.css +43 -0
  59. package/dist/themes/compact-variant.css +8 -0
  60. package/dist/themes/fluent.css +40 -0
  61. package/dist/themes/glass-morphism.css +25 -0
  62. package/dist/themes/high-contrast-accessible.css +22 -0
  63. package/dist/themes/ios-mobile.css +32 -0
  64. package/dist/themes/macos-native.css +32 -0
  65. package/dist/themes/material-dark.css +27 -0
  66. package/dist/themes/material.css +46 -0
  67. package/dist/themes/midnight-dark.css +24 -0
  68. package/dist/themes/modern-light.css +23 -0
  69. package/dist/themes/neon-cyber-dark.css +24 -0
  70. package/dist/themes/shadcn.css +40 -0
  71. package/dist/themes/soft-pastel.css +24 -0
  72. package/dist/themes/spacious-variant.css +9 -0
  73. package/dist/themes/tailwind-dark.css +30 -0
  74. package/dist/themes/tailwind.css +50 -0
  75. package/dist/utils/cssClasses.d.ts +14 -0
  76. package/dist/utils/definitionSerializers.d.ts +62 -0
  77. package/dist/utils/groupingHelpers.d.ts +24 -0
  78. package/dist/utils/index.d.ts +11 -0
  79. package/dist/utils/themeUtils.d.ts +31 -0
  80. package/dist/utils/translationCache.d.ts +43 -0
  81. package/dist/utils/unitValueMapper.d.ts +14 -0
  82. package/dist/validation/index.d.ts +13 -0
  83. package/dist/validation/validateColorField.d.ts +2 -0
  84. package/dist/validation/validateDateField.d.ts +2 -0
  85. package/dist/validation/validateEmailField.d.ts +2 -0
  86. package/dist/validation/validateFieldPattern.d.ts +3 -0
  87. package/dist/validation/validateFloatField.d.ts +3 -0
  88. package/dist/validation/validateIntegerField.d.ts +3 -0
  89. package/dist/validation/validatePhoneField.d.ts +2 -0
  90. package/dist/validation/validateRatingField.d.ts +2 -0
  91. package/dist/validation/validateSelectionFields.d.ts +3 -0
  92. package/dist/validation/validateTextField.d.ts +2 -0
  93. package/dist/validation/validateTimeField.d.ts +2 -0
  94. package/dist/validation/validateUnitValueField.d.ts +2 -0
  95. package/dist/validation/validateUrlField.d.ts +2 -0
  96. package/dist/validation/validation.d.ts +12 -0
  97. package/dist/validation/validationHandlerRegistry.d.ts +19 -0
  98. package/package.json +15 -13
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("react/jsx-runtime"),_=require("react"),jr=require("react-dom");function Ye(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 i=Ye(_),Re=Ye(jr),Rr=`/* ReactaForm CSS Custom Properties (CSS Variables) */\r
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("react/jsx-runtime"),q=require("react"),Fr=require("react-dom");function Ke(e){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:()=>e[t]})}}return r.default=e,Object.freeze(r)}const l=Ke(q),le=Ke(Fr),Nr=`/* ReactaForm CSS Custom Properties (CSS Variables) */\r
2
2
  \r
3
3
  /* Default Light Theme */\r
4
4
  :root {\r
@@ -214,6 +214,19 @@
214
214
  box-sizing: border-box;\r
215
215
  }\r
216
216
  \r
217
+ .reactaform-chip {\r
218
+ display: flex;\r
219
+ align-items: center;\r
220
+ justify-content: space-between;\r
221
+ padding: 6px 10px;\r
222
+ background-color: var(--reactaform-input-bg);\r
223
+ border: 1px solid var(--reactaform-border-color);\r
224
+ border-radius: var(--reactaform-border-radius);\r
225
+ color: var(--reactaform-text-color);\r
226
+ font-size: 0.875rem;\r
227
+ gap: 8px;\r
228
+ }\r
229
+ \r
217
230
  \r
218
231
  \r
219
232
  /* Responsive Design */\r
@@ -284,9 +297,9 @@
284
297
  \r
285
298
  \r
286
299
  }\r
287
- `,ke=_.createContext(void 0),A=()=>{const e=_.useContext(ke);if(!e)throw new Error("❌ useReactaFormContext must be used within a <ReactaFormProvider>");return e};class fe{map={};register(r,t){if(!r||typeof r!="string")throw new Error("Registry key must be a non-empty string");this.map[r]=t}get(r){if(!(!r||typeof r!="string"))return this.map[r]}has(r){return!r||typeof r!="string"?!1:r in this.map}list(){return Object.keys(this.map)}entries(){return Object.entries(this.map)}values(){return Object.values(this.map)}size(){return Object.keys(this.map).length}unregister(r){return r in this.map?(delete this.map[r],!0):!1}clear(){this.map={}}registerAll(r){Array.isArray(r)?r.forEach(([t,o])=>{t&&typeof t=="string"&&this.register(t,o)}):r&&typeof r=="object"&&Object.entries(r).forEach(([t,o])=>{t&&typeof t=="string"&&this.register(t,o)})}getOrDefault(r,t){const o=this.get(r);return o!==void 0?o:t}}function Xe(e,r=300,t){const o=_.useRef(void 0),n=_.useRef(e),a=_.useRef(null),u=_.useRef(!1);_.useEffect(()=>{n.current=e},[e]),_.useEffect(()=>()=>{o.current!==void 0&&(window.clearTimeout(o.current),o.current=void 0)},[]);const c=_.useCallback(()=>{o.current!==void 0&&(window.clearTimeout(o.current),o.current=void 0),a.current=null,u.current=!1},[]),s=_.useCallback(()=>{if(o.current!==void 0&&(window.clearTimeout(o.current),o.current=void 0),a.current)try{n.current(...a.current)}finally{a.current=null,u.current=!1}},[]);return{callback:_.useCallback((...l)=>{if(t?.leading===!0&&!u.current){u.current=!0,n.current(...l),window.clearTimeout(o.current),o.current=window.setTimeout(()=>{u.current=!1,o.current=void 0},r);return}a.current=l,window.clearTimeout(o.current),o.current=window.setTimeout(()=>{o.current=void 0,a.current&&(n.current(...a.current),a.current=null,u.current=!1)},r)},[r,t?.leading]),cancel:c,flush:s}}const R={field:"reactaform-field",label:"reactaform-label",input:"reactaform-input",textInput:"reactaform-input--text",inputNumber:"reactaform-input--number",inputSelect:"reactaform-select",rangeInput:"reactaform-input--range",button:"reactaform-button"},T=(...e)=>{const r=[];for(const t of e)t&&(typeof t=="string"?r.push(t):typeof t=="object"&&Object.entries(t).forEach(([o,n])=>{n&&r.push(o)}));return r.join(" ")},Ze=({content:e,size:r="medium",animation:t=!0})=>{const{t:o,darkMode:n,formStyle:a,fieldStyle:u}=A(),[c,s]=i.useState(!1),[m,l]=i.useState({x:0,y:0}),[d,f]=i.useState(!1),p=i.useRef(null),y=i.useRef(null),h=i.useRef(null),b=i.useId(),v=i.useMemo(()=>{const w={icon:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:"1.2em",height:"1.2em",fontSize:"0.9em",fontWeight:"bold",borderRadius:"50%",backgroundColor:n?"rgba(255,255,255,0.1)":"rgba(0,0,0,0.06)",color:n?"#f0f0f0":"#333",border:`1px solid ${n?"rgba(255,255,255,0.2)":"rgba(0,0,0,0.1)"}`,cursor:"pointer",transition:t?"all 0.2s ease":void 0,marginLeft:"0.3em"},text:{...{small:{padding:"4px 8px",fontSize:"11px",maxWidth:"200px"},medium:{padding:"6px 10px",fontSize:"12px",maxWidth:"240px"},large:{padding:"8px 12px",fontSize:"13px",maxWidth:"280px"}}[r],position:"fixed",backgroundColor:`var(--reactaform-tooltip-color-bg, ${n?"rgba(45,45,45,0.95)":"rgba(60,60,60,0.92)"})`,color:`var(--reactaform-tooltip-color, ${n?"#f0f0f0":"#fff"})`,borderRadius:"6px",border:`1px solid ${n?"rgba(255,255,255,0.1)":"rgba(0,0,0,0.1)"}`,boxShadow:n?"0 8px 16px rgba(0,0,0,0.4)":"0 6px 18px rgba(0,0,0,0.12)",zIndex:2147483647,opacity:0,pointerEvents:"none",transition:t?"opacity 0.2s ease":void 0,whiteSpace:"normal",wordBreak:"break-word",boxSizing:"border-box"},textVisible:{opacity:1,pointerEvents:"auto"}},S=($,j,E)=>{const D=$?.[j];return(E&&D?D[E]:void 0)??{}};return{icon:{...w.icon,...S(a,"tooltip","icon"),...S(u,"tooltip","icon")},text:{...w.text,...S(a,"tooltip","text"),...S(u,"tooltip","text")},textVisible:w.textVisible}},[n,r,t,a,u]);i.useLayoutEffect(()=>{if(!c||!p.current||!y.current){f(!1);return}const M=p.current.getBoundingClientRect();h.current=M;const w=y.current.getBoundingClientRect(),S=8,k=window.innerWidth,$=window.innerHeight,j=-4;let E=M.right+S,N=M.top+M.height/2-w.height/2+j;E+w.width>k-S&&(E=M.left-S-w.width),E=Math.max(S,Math.min(E,k-w.width-S)),N=Math.max(S,Math.min(N,$-w.height-S)),l({x:E,y:N}),f(!0)},[c]);const x=typeof document<"u"?document.getElementById("popup-root"):null,C=g.jsx("div",{ref:y,"data-tooltip-id":b,style:{...v.text,transform:d?"translateY(0) scale(1)":"translateY(-4px) scale(0.98)",transition:"opacity 120ms ease, transform 120ms ease, visibility 120ms ease",width:240,...d?v.textVisible:{},top:m.y,left:m.x},"data-reactaform-theme":n?"dark":"light",children:o(e)});return g.jsxs(g.Fragment,{children:[g.jsx("span",{"data-testid":"tooltip-icon",ref:p,"aria-describedby":c?b:void 0,onMouseEnter:()=>s(!0),onMouseLeave:()=>s(!1),style:{...v.icon},children:"?"}),c&&(x?Re.createPortal(C,x):C)]})},xe=i.memo(({field:e,error:r,children:t,showLabel:o=!0})=>{const{t:n}=A(),a=e?.labelLayout==="column-center"?"center":"left";return g.jsxs("div",{className:`${R.field} column-layout`,style:{display:"flex",flexDirection:"column",gap:"var(--reactaform-label-gap, 4px)","--label-align":a},children:[o&&g.jsx("div",{style:{textAlign:a,width:"100%"},children:g.jsx("label",{id:`${e.name}-label`,className:R.label,htmlFor:e.name,style:{textAlign:a,width:"100%",minWidth:"unset",display:"block",marginBottom:"10px"},children:n(e.displayName)})}),g.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"var(--reactaform-inline-gap, 8px)",width:"100%"},children:[g.jsx("div",{style:{flex:1,minWidth:0,maxWidth:"100%"},children:g.jsx("div",{style:{width:"100%"},children:t})}),e.tooltip&&g.jsx(Ze,{content:e.tooltip})]}),r&&g.jsx(Ee,{id:`${e.name}-error`,children:r})]})});xe.displayName="ColumnFieldLayout";const Qe=i.memo(({field:e,error:r,children:t,rightAlign:o=!1})=>{const{t:n}=A(),a=i.useMemo(()=>({display:"flex",flexDirection:"column",gap:0}),[]),u=i.useMemo(()=>({display:"flex",flexDirection:"row",alignItems:"center",gap:"3px"}),[]);return g.jsxs("div",{className:`${R.field} row-layout`,children:[g.jsx("label",{id:`${e.name}-label`,className:R.label,htmlFor:e.name,style:{textAlign:"left",justifyContent:"flex-start"},children:n(e.displayName)}),g.jsxs("div",{style:a,children:[g.jsxs("div",{style:u,children:[o?g.jsx("div",{style:{display:"flex",flex:1,justifyContent:"flex-end",alignItems:"center",gap:"var(--reactaform-inline-gap, 8px)"},children:t}):t,e.tooltip&&g.jsx(Ze,{content:e.tooltip})]}),r&&g.jsx(Ee,{id:`${e.name}-error`,children:r})]})]})});Qe.displayName="RowFieldLayout";const P=({field:e,error:r,children:t,rightAlign:o=!1})=>e.labelLayout==="column-left"||e.labelLayout==="column-center"?g.jsx(xe,{field:e,error:r,showLabel:!0,children:t}):e.type==="checkbox"||e.type==="switch"?g.jsx(xe,{field:e,error:r,showLabel:!1,children:t}):g.jsx(Qe,{field:e,error:r,rightAlign:o,children:t}),Ee=i.memo(({children:e,id:r})=>{const t=i.useMemo(()=>({color:"var(--reactaform-error-color)",fontSize:"13px",marginTop:"4px",fontWeight:"var(--reactaform-font-weight)",display:"flex",flex:1,justifyContent:"flex-start",alignItems:"flex-start"}),[]);return g.jsx("div",{id:r,style:t,children:e})});Ee.displayName="ErrorDiv";const er=i.memo(({name:e,onChange:r})=>{const{t}=A();return g.jsxs("div",{style:{marginBottom:16},children:[g.jsxs("div",{style:{display:"grid",gridTemplateColumns:"1fr 2fr",gap:12,alignItems:"center"},children:[g.jsx("label",{htmlFor:"instance-name-input",style:{margin:0,fontSize:"0.95em",fontWeight:500,color:"var(--reactaform-text-color, #333)"},children:t("Instance Name")}),g.jsx("input",{id:"instance-name-input",type:"text",value:e,onChange:o=>r(o.target.value),style:{width:"100%",padding:"var(--reactaform-input-padding, 8px 12px)",fontSize:"var(--reactaform-input-font-size, 14px)",border:"1px solid var(--reactaform-input-border, #ddd)",borderRadius:"var(--reactaform-border-radius, 4px)",backgroundColor:"var(--reactaform-input-bg, #fff)",color:"var(--reactaform-text-color, #333)",boxSizing:"border-box"},placeholder:t("Enter instance name")})]}),g.jsx("div",{style:{height:"1px",backgroundColor:"var(--reactaform-separator, #e6e6e6)",marginTop:12,marginBottom:12}})]})});er.displayName="InstanceName";class kr extends fe{registerInCategory(r,t,o){this.get(r)||this.register(r,{});const n=this.get(r);n[t]=o}getFromCategory(r,t){return this.get(r)?.[t]}listFromCategory(r){return Object.keys(this.get(r)||{})}listCategories(){return this.list()}}const rr=new fe,tr=new kr;function nr(e,r){rr.register(e,r)}function or(e,r,t){tr.registerInCategory(e,r,t)}function ar(e,r){return tr.getFromCategory(e,r)||null}function sr(e){return rr.get(e)||null}function Er(e){return(typeof e=="object"||typeof e=="function")&&e!==null&&typeof e.then=="function"}const Pe=new Map,He=new Map;function O(e,r,t,o){if(!r||!r.validationHandlerName)return null;let n,a;if(typeof r.validationHandlerName=="string")n=e,a=r.validationHandlerName;else if(Array.isArray(r.validationHandlerName)){const[s,m]=r.validationHandlerName;if(m)n=s,a=m;else if(s)n=e,a=s;else return null}else return null;const u=`${n}:${a}`;let c=Pe.get(u);if(c===void 0&&(c=ar(n,a)||null,Pe.set(u,c)),c)try{return c(r.name,t,o)||null}catch(s){return String(s instanceof Error?s.message:s)}return null}async function Nr(e,r,t){if(!e||typeof e.validationHandlerName!="string")return null;const o=e.validationHandlerName;let n=He.get(o);if(n===void 0&&(n=sr(o)||null,He.set(o,n)),n)try{const a=n(r,t);return Er(a)?await a||null:a||null}catch(a){return[String(a instanceof Error?a.message:a)]}return null}function Z(e){return typeof e=="object"&&e!==null}function Ne(e){if(!Z(e))return!1;const r=e;return typeof r.name=="string"&&typeof r.displayName=="string"}function ir(e){if(!Z(e))return!1;const r=e;return typeof r.name!="string"||typeof r.version!="string"||!Array.isArray(r.properties)?!1:r.properties.every(t=>Ne(t))}function ve(e){try{return typeof File<"u"&&e instanceof File}catch{const r=Z(e)?e:void 0;return!!r&&typeof r.name=="string"&&typeof r.size=="number"}}function Ir(e,r,t={}){try{const{includeMetadata:o=!1,dateFormat:n="iso",fileHandling:a="metadata",prettify:u=!1,excludeFields:c=[],includeOnlyFields:s=[]}=t;if(!e||typeof e!="object")return{success:!1,error:"Instance must be a valid object"};const m=[],l=[],d={},p=(ir(r)||Z(r)&&Array.isArray(r.properties)?r.properties:[]).filter(Ne),y=new Map(p.map(b=>[b.name,b]));for(const[b,v]of Object.entries(e)){if(c.includes(b)){l.push(b);continue}if(s.length>0&&!s.includes(b)){l.push(b);continue}if(v===void 0)continue;const x=y.get(b);try{d[b]=Mr(v,x,{dateFormat:n,fileHandling:a})}catch(C){m.push(`Error serializing field '${b}': ${String(C)}`),d[b]=null}}return o&&(d._metadata={serializedAt:new Date().toISOString(),version:(Z(r)?r.version:void 0)||"1.0.0",fieldCount:Object.keys(d).length-1}),{success:!0,data:u?JSON.stringify(d,null,2):JSON.stringify(d),metadata:{fieldCount:Object.keys(d).length,excludedFields:l,warnings:m}}}catch(o){return{success:!1,error:`Serialization failed: ${o instanceof Error?o.message:"Unknown error"}`}}}function Mr(e,r,t={}){const{dateFormat:o="iso",fileHandling:n="metadata"}=t;if(e==null)return null;if(r)switch(r.type){case"date":case"datetime":case"date-time":return qe(e,o);case"file":return Te(e,n);case"int":case"integer":return typeof e=="string"?parseInt(e,10):e;case"float":case"number":return typeof e=="string"?parseFloat(e):e;case"boolean":return typeof e=="string"?e==="true":!!e;case"int-array":case"float-array":return Array.isArray(e)?e.map(a=>typeof a=="string"?Number(a):a):e;default:return e}return e instanceof Date?qe(e,o):ve(e)||Array.isArray(e)&&ve(e[0])?Te(e,n):e}function qe(e,r){let t=null;if(e instanceof Date)t=e;else if(typeof e=="string"){const o=new Date(e);if(!isNaN(o.getTime()))t=o;else return e}else return e;switch(r){case"timestamp":return t.getTime();case"locale":return t.toLocaleString();case"iso":default:return t.toISOString()}}function Te(e,r){return r==="skip"?null:Array.isArray(e)?e.map(t=>Be(t,r)):Be(e,r)}function Be(e,r){if(!ve(e))return e;const t=e;return r==="metadata"?{name:t.name,size:t.size,type:t.type,lastModified:t.lastModified}:{name:t.name,size:t.size,type:t.type,lastModified:t.lastModified,_note:"Base64 encoding requires async implementation"}}function $r(e,r,t={}){try{const{strict:o=!1,validateTypes:n=!0,preserveUnknownFields:a=!0,dateFormat:u="auto"}=t;if(!e||typeof e!="string")return{success:!1,error:"Serialized data must be a non-empty string"};let c;try{c=JSON.parse(e)}catch(h){return{success:!1,error:`Invalid JSON: ${h instanceof Error?h.message:"Unknown parsing error"}`}}if(!c||typeof c!="object")return{success:!1,error:"Parsed data must be an object"};const s=[],m=[],l={},f=(ir(r)||Z(r)&&Array.isArray(r.properties)?r.properties:[]).filter(Ne),p=new Map(f.map(h=>[h.name,h]));for(const h of f){const b=h.name,v=c[b];if(v===void 0){o&&h.required&&m.push(`Required field '${b}' is missing`);continue}try{l[b]=Ar(v,h,{validateTypes:n,dateFormat:u})}catch(x){const C=`Error deserializing field '${b}': ${String(x)}`;o?m.push(C):(s.push(C),l[b]=v)}}if(a)for(const[h,b]of Object.entries(c))!p.has(h)&&h!=="_metadata"&&(o&&s.push(`Unknown field '${h}' preserved`),l[h]=b);const y=m.length>0;return{success:!y,data:l,warnings:s.length>0?s:void 0,validationErrors:y?m:void 0}}catch(o){return{success:!1,error:`Deserialization failed: ${o instanceof Error?o.message:"Unknown error"}`}}}function Ar(e,r,t={}){const{validateTypes:o=!0,dateFormat:n="auto"}=t;if(e==null)return e;try{switch(r.type){case"date":case"datetime":case"date-time":return Dr(e,n,o);case"int":case"integer":return we(e,o);case"float":case"number":return Se(e,o);case"boolean":return zr(e,o);case"int-array":return Ue(e,"integer",o);case"float-array":return Ue(e,"number",o);case"string":case"text":case"email":case"url":case"phone":return o?String(e):e;default:return e}}catch(a){if(o)throw new Error(`Type conversion failed: ${String(a)}`);return e}}function Vr(e,r={}){try{const{prettify:t=!0,includeMetadata:o=!0}=r;if(!e||typeof e!="object")return{success:!1,error:"Definition must be a valid object"};const n={...e};return o&&(n._metadata={serializedAt:new Date().toISOString(),version:n.version||"1.0.0",propertyCount:(Array.isArray(n.properties)?n.properties.length:0)||0}),{success:!0,data:t?JSON.stringify(n,null,2):JSON.stringify(n),metadata:{fieldCount:(Array.isArray(n.properties)?n.properties.length:0)||0,excludedFields:[],warnings:[]}}}catch(t){return{success:!1,error:`Definition serialization failed: ${t instanceof Error?t.message:"Unknown error"}`}}}function Fr(e,r={}){try{const{strict:t=!1,validateTypes:o=!0}=r;let n;if(typeof e=="string")try{n=JSON.parse(e)}catch(l){return{success:!1,error:`Invalid JSON for definition: ${l instanceof Error?l.message:"Unknown parsing error"}`}}else if(e&&typeof e=="object")n={...e};else return{success:!1,error:"Input must be a string or object"};const a=[],u=[],c=["name","version","displayName"];for(const l of c)if(!(l in n)||!n[l])if(t)u.push(`Required field '${l}' is missing`);else switch(a.push(`Missing field '${l}', using default`),l){case"name":n.name="unnamed-definition";break;case"version":n.version="1.0.0";break;case"displayName":n.displayName=n.name||"Unnamed Definition";break}const s=Array.isArray(n.properties)?n.properties:null;s?n.properties=s.map((l,d)=>{const f=Z(l)?l:{},p={...f};if(!f.name){const y=`Property at index ${d} missing 'name'`;t?u.push(y):(a.push(`${y}, using 'field_${d}'`),p.name=`field_${d}`)}return f.displayName||(p.displayName=f.name||`Field ${d}`),f.type||(t&&o?u.push(`Property '${f.name||d}' missing 'type'`):(a.push(`Property '${f.name||d}' missing 'type', using 'string'`),p.type="string")),f.defaultValue===void 0&&(p.defaultValue=null),f.required===void 0&&(p.required=!1),p}):t?u.push("Properties must be an array"):(a.push("Properties not found or invalid, using empty array"),n.properties=[]);const m=u.length>0;return{success:!m,data:n,warnings:a.length>0?a:void 0,validationErrors:m?u:void 0}}catch(t){return{success:!1,error:`Definition deserialization failed: ${t instanceof Error?t.message:"Unknown error"}`}}}function Dr(e,r,t){if(e instanceof Date)return e;if(typeof e=="number"){const o=new Date(e);if(t&&isNaN(o.getTime()))throw new Error(`Invalid timestamp: ${e}`);return o}if(typeof e=="string"){const o=new Date(e);if(t&&isNaN(o.getTime()))throw new Error(`Invalid date string: ${e}`);return o}if(t)throw new Error(`Cannot convert ${typeof e} to Date`);return e}function we(e,r){if(typeof e=="number"){if(Number.isInteger(e))return e;if(r)throw new Error(`Number ${e} is not an integer`);return Math.floor(e)}if(typeof e=="string"){const t=e.trim();if(t===""){if(r)throw new Error("Cannot convert empty string to integer");return e}const o=parseInt(t,10);if(r&&isNaN(o))throw new Error(`Cannot convert "${e}" to integer`);return o}if(r)throw new Error(`Cannot convert ${typeof e} to integer`);return e}function Se(e,r){if(typeof e=="number"){if(r&&!isFinite(e))throw new Error(`Number ${e} is not finite`);return e}if(typeof e=="string"){const t=e.trim();if(t===""){if(r)throw new Error("Cannot convert empty string to number");return e}const o=parseFloat(t);if(r&&(isNaN(o)||!isFinite(o)))throw new Error(`Cannot convert "${e}" to number`);return o}if(r)throw new Error(`Cannot convert ${typeof e} to number`);return e}function zr(e,r){if(typeof e=="boolean")return e;if(typeof e=="string"){const t=e.toLowerCase();if(t==="true"||t==="1")return!0;if(t==="false"||t==="0")return!1;if(r)throw new Error(`Cannot convert "${e}" to boolean`)}if(typeof e=="number")return!!e;if(r)throw new Error(`Cannot convert ${typeof e} to boolean`);return e}function Ue(e,r,t){if(!Array.isArray(e)){if(typeof e=="string")return e.split(",").map(n=>n.trim()).filter(Boolean).map(n=>r==="integer"?we(n,t):Se(n,t));if(t)throw new Error(`Expected array, got ${typeof e}`);return e}return e.map((o,n)=>{try{return r==="integer"?we(o,t):Se(o,t)}catch(a){if(t)throw new Error(`Array element ${n}: ${a}`);return o}})}const Or=(e,r)=>{const t=new Map;let o=null,n=null,a=0;for(const u of e){const c=u.group;if(!c){o=null,n=null;continue}if(c===o)r[u.name].group=n??c;else{if(!t.has(c))t.set(c,1),n=null,r[u.name].group=c;else{const s=t.get(c),m=`${c}(${s})`;t.set(c,s+1),n=m,r[u.name].group=m,a++}o=c}}return a},Lr=(e,r={})=>{const{includeEmpty:t=!0}=r,o=[];let n=null,a=[],u=0;for(const s of e){const m=s.group||null;m!==n?((a.length>0||t)&&(a.length===0&&u++,o.push({name:n,fields:a})),n=m,a=[s]):a.push(s)}(a.length>0||t)&&(a.length===0&&u++,o.push({name:n,fields:a}));const c=Math.max(0,...o.map(s=>s.fields.length));return{groups:o,metadata:{totalGroups:o.length,emptyGroups:u,largestGroup:c}}},ye=new Map,ce=new Map,re=new Set,Ce=new Map,Pr=async e=>{try{let r;switch(e.toLowerCase()){case"fr":r=(await Promise.resolve().then(()=>require("./common-DLr0UoG9.js"))).default;break;case"de":r=(await Promise.resolve().then(()=>require("./common-Crb-me6O.js"))).default;break;case"es":r=(await Promise.resolve().then(()=>require("./common-DRIndE7S.js"))).default;break;case"zh-cn":r=(await Promise.resolve().then(()=>require("./common-BeJOG7Z0.js"))).default;break;case"en":r={};break;default:r={}}return{success:!0,translations:r,fromCache:!1}}catch(r){return{success:!1,translations:{},error:`Failed to load common translations for ${e}: ${r}`}}},Hr=async e=>{if(!e)return{success:!1,translations:{},error:"Language is required"};const r=e.toLowerCase();if(r==="en")return{success:!0,translations:{},fromCache:!1};if(ye.has(r))return{success:!0,translations:ye.get(r)||{},fromCache:!0};const t=await Pr(r);return t.success&&(ye.set(r,t.translations),Ce.set(r,{loadedAt:new Date,size:Object.keys(t.translations).length,source:"common"})),t},qr=async(e,r)=>{if(!e||!r)return{success:!1,translations:{},error:"Both language and localizeName are required"};const t=`${e.toLowerCase()}/${r}`;if(re.has(t))return{success:!1,translations:{},error:"Previously failed to load",fromCache:!0};if(ce.has(t))return{success:!0,translations:ce.get(t)||{},fromCache:!0};try{let o=r;!r.includes("/")&&!r.includes(".")&&(o=`/locales/${e}/${r}.json`);const n=await fetch(o);if(!n.ok){const m=`HTTP ${n.status}: ${n.statusText}`;return n.status===404?(ce.set(t,{}),Ce.set(t,{loadedAt:new Date,size:0,source:"user"}),{success:!0,translations:{},fromCache:!1}):(re.add(t),{success:!1,translations:{},error:m})}const a=n.headers.get("content-type")||"";!a.includes("application/json")&&!a.includes("text/json")&&cr()&&console.warn(`Translation file at ${o} has unexpected content-type: ${a}`);const u=await n.text();if(!u){const m="Empty translation file";return re.add(t),{success:!1,translations:{},error:m}}let c;try{c=JSON.parse(u)}catch(m){const l=`Invalid JSON in translation file: ${m instanceof Error?m.message:String(m)}`;return re.add(t),{success:!1,translations:{},error:l}}if(!c||typeof c!="object"){const m="Invalid translation file format";return re.add(t),{success:!1,translations:{},error:m}}const s=Object.fromEntries(Object.entries(c).map(([m,l])=>[m,typeof l=="string"?l:String(l)]));return ce.set(t,s),Ce.set(t,{loadedAt:new Date,size:Object.keys(s).length,source:"user"}),{success:!0,translations:s,fromCache:!1}}catch(o){const n=`Failed to load user translations: ${o instanceof Error?o.message:"Unknown error"}`;return re.add(t),{success:!1,translations:{},error:n}}};function cr(){try{if(typeof process<"u"&&process?.env?.NODE_ENV==="development")return!0}catch{}return!1}function Tr(e,r){return r.length===0||!e.includes("{{")?e:e.replace(/\{\{(\d+)\}\}/g,(t,o)=>{const n=parseInt(o,10)-1,a=r[n];if(a==null)return t;try{return String(a)}catch{return t}})}const Br=(e,r,t)=>(o,...n)=>{let a=o,u=!1;return!o||typeof o!="string"?String(o||""):(e.toLowerCase()==="en"?(a=o,u=!0):o in t?(a=t[o],u=!0):o in r?(a=r[o],u=!0):a=o,a=Tr(a,n),!u&&cr()&&console.debug(`Missing translation for "${o}" in language "${e}"`),a)},Ie={length:["m","cm","mm","km","in","ft","yd","mi"],area:["m^2","cm^2","mm^2","in^2","ft^2","yd^2"],volume:["L","m^3","cm^3","mL","in^3","ft^3","yd^3"],weight:["kg","g","mg","t","lb","oz"],time:["min","s","h","ms","d"],temperature:["C","F","K"],angle:["deg","rad","rev"]},Me={length:{m:"Meter (m)",mm:"Millimeter (mm)",cm:"Centimeter (cm)",km:"Kilometer (km)",in:"Inch (in)",ft:"Foot (ft)",yd:"Yard (yd)",mi:"Mile (mi)"},area:{"m^2":"Square meter (m^2)","mm^2":"Square millimeter (mm^2)","cm^2":"Square centimeter (cm^2)","in^2":"Square inch (in^2)","ft^2":"Square foot (ft^2)","yd^2":"Square yard (yd^2)"},volume:{L:"Liter (L)","cm^3":"Cubic centimeter (cm^3)","m^3":"Cubic meter (m^3)",mL:"Milliliter (mL)","in^3":"Cubic inch (in^3)","ft^3":"Cubic foot (ft^3)","yd^3":"Cubic yard (yd^3)"},weight:{kg:"Kilogram (kg)",g:"Gram (g)",mg:"Milligram (mg)",t:"Tonne (t)",lb:"Pound (lb)",oz:"Ounce (oz)"},time:{s:"Second (s)",min:"Minute (min)",h:"Hour (h)",ms:"Millisecond (ms)",d:"Day (d)",wk:"Week (wk)"},temperature:{C:"Celsius (C)",F:"Fahrenheit (F)",K:"Kelvin (K)"},angle:{deg:"Degree (deg)",rad:"Radian (rad)",rev:"Revolution (rev)"}},$e={length:{mm:1e3,cm:100,m:1,km:.001,in:100/2.54,ft:100/(2.54*12),yd:100/(2.54*36),mi:1/1609.344},area:{"m^2":1,"mm^2":1e6,"cm^2":1e4,"km^2":1/1e6,"in^2":(100/2.54)**2,"ft^2":(100/(2.54*12))**2,"yd^2":(100/(2.54*36))**2},volume:{"cm^3":1e6,"m^3":1,L:1,mL:1e6,"in^3":(100/2.54)**3,"ft^3":(100/(2.54*12))**3,"yd^3":(100/(2.54*36))**3},weight:{mg:1e6,g:1e3,kg:1,t:.001,lb:1/.45359237,oz:1/.028349523125},time:{ms:1e3,s:1,min:1/60,h:1/3600,d:1/86400,wk:1/604800},temperature:{C:1,F:33.8,K:274.15},angle:{deg:1,rad:Math.PI/180,rev:1/360}},Ae={},Ur=new Set([...Object.keys(Ie),...Object.keys(Me),...Object.keys($e)]);for(const e of Ur){const r={},t=Ie[e]??[],o=Me[e]??{},n=$e[e]??{};for(const a of t){const u=o[a];r[a]={name:typeof u=="string"?u:String(a),shortName:a,factor:Object.prototype.hasOwnProperty.call(n,a)?n[a]:void 0}}for(const[a,u]of Object.entries(o))if(!r[a]){const c=typeof u=="string"?u:String(a);r[a]={name:c,shortName:a,factor:Object.prototype.hasOwnProperty.call(n,a)?n[a]:void 0}}for(const[a,u]of Object.entries(n))r[a]||(r[a]={name:String(a),shortName:String(a),factor:u});Ae[e]=r}const Wr=Object.freeze(Object.defineProperty({__proto__:null,dimensionUnitDisplayMap:Me,dimensionUnitsMap:Ie,dimensonUnitFactorsMap:$e,unitsByDimension:Ae},Symbol.toStringTag,{value:"Module"})),_r=({field:e,value:r,onChange:t,onError:o})=>{const{definitionName:n,t:a}=A(),u=i.useRef(o);i.useEffect(()=>{u.current=o},[o]),i.useEffect(()=>{const d=O(n,e,r??!1,a);u.current?.(d??null)},[r,e,n,a]);const c=d=>{const f=d.target.checked;t?.(f,null)},s=d=>{(d.key===" "||d.key==="Spacebar"||d.key==="Space"||d.key==="Enter")&&(d.preventDefault(),t?.(!r,null))},m=e.name,l=O(n,e,r??!1,a);return g.jsx(P,{field:e,rightAlign:!1,children:g.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%"},children:[g.jsx("label",{className:R.label,htmlFor:m,style:{textAlign:"left",justifyContent:"flex-start"},children:a(e.displayName)}),g.jsx("input",{id:m,"data-testid":"boolean-checkbox",type:"checkbox",checked:!!r,onChange:c,onKeyDown:s,"aria-checked":!!r,"aria-invalid":!!l,"aria-describedby":l?`${e.name}-error`:void 0,style:{cursor:"pointer",margin:"8px 0 8px 0",width:"1.2em",height:"1.2em",verticalAlign:"middle",color:"#FFFFFF",accentColor:"#0000FF",opacity:void 0}})]})})},We=[{label:"Black",value:"#000000"},{label:"White",value:"#ffffff"},{label:"Red",value:"#ff0000"},{label:"Green",value:"#008000"},{label:"Blue",value:"#0000ff"},{label:"Yellow",value:"#ffff00"},{label:"Cyan",value:"#00ffff"},{label:"Magenta",value:"#ff00ff"},{label:"Orange",value:"#ffa500"},{label:"Purple",value:"#800080"},{label:"Brown",value:"#a52a2a"},{label:"Gray",value:"#808080"},{label:"Light Gray",value:"#d3d3d3"},{label:"Pink",value:"#ffc0cb"}];function lr(e){return/^#([0-9A-F]{3}){1,2}$/i.test(e)}function Kr(e){if(!lr(e))return null;const r=ur(e),t=parseInt(r.slice(1),16);return{r:t>>16&255,g:t>>8&255,b:t&255}}function ur(e){return e?(e=e.toLowerCase(),/^#([a-f0-9]){3}$/i.test(e)?"#"+e.slice(1).split("").map(r=>r+r).join(""):e):"#000000"}const Jr=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,definitionName:a}=A(),[u,c]=i.useState("#000000"),s=i.useRef(null),m=i.useRef(null),l=i.useRef(o);i.useEffect(()=>{l.current=o},[o]),i.useEffect(()=>{const x=r&&lr(r)?r:"#000000",C=ur(x);c(C)},[r]),i.useEffect(()=>{const x=O(a,e,r??"#000000",n);l.current?.(x??null)},[r,e,a,n]);const d=O(a,e,r??"#000000",n),f=x=>{const C=x.target.value;c(C),t?.(C,null)},p=x=>{const C=x.target.value;c(C),t?.(C,null)},y=We.find(x=>x.value===u),{r:h,g:b,b:v}=Kr(u)||{r:0,g:0,b:0};return g.jsx(P,{field:e,error:d,children:g.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",width:"100%"},children:[g.jsxs("select",{ref:s,id:e.name,value:u,onChange:f,style:{minWidth:"120px",flex:1},className:T(R.input,R.inputSelect),"aria-invalid":!!d,"aria-describedby":d?`${e.name}-error`:void 0,children:[We.map(x=>g.jsx("option",{value:x.value,children:n(x.label)},x.value)),y?null:g.jsxs("option",{value:u,children:["(",h,", ",b,", ",v,")"]},u)]}),g.jsx("label",{style:{width:"2.5em",height:"1.8em",display:"inline-block",border:"1px solid #ccc",borderRadius:"4px",backgroundColor:u,cursor:"pointer",overflow:"hidden",flexShrink:0},children:g.jsx("input",{ref:m,id:`${e.name}-color`,type:"color",value:u,onChange:p,style:{opacity:0,width:"100%",height:"100%",border:"none",padding:0,cursor:"pointer"},"aria-invalid":!!d,"aria-describedby":d?`${e.name}-error`:void 0})})]})})},ae=e=>{if(!e)return null;const r=new Date(e);return isNaN(r.getTime())?null:r},Gr=e=>{if(!e)return"";if(/^\d{4}-\d{2}-\d{2}$/.test(e))return ae(e)?e:"";const t=ae(e);if(t){const o=t.getFullYear(),n=String(t.getMonth()+1).padStart(2,"0"),a=String(t.getDate()).padStart(2,"0");return`${o}-${n}-${a}`}return""},Yr=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,definitionName:a}=A(),{name:u,required:c}=e,s=i.useRef(null),m=i.useRef(o);i.useEffect(()=>{m.current=o},[o]);const l=i.useCallback(f=>{if(!f||f.trim()==="")return c?n("Value required"):null;if(f){const y=ae(f);if(!y)return n("Invalid date format");if(e.minDate){const h=ae(e.minDate);if(h&&y.getTime()<h.getTime())return n("Date must be on or after {{1}}",e.minDate)}if(e.maxDate){const h=ae(e.maxDate);if(h&&y.getTime()>h.getTime())return n("Date must be on or before {{1}}",e.maxDate)}}return O(a,e,f,n)??null},[e,a,n,c]),d=f=>{const p=f.target.value,y=l(p);t?.(p,y)};return i.useEffect(()=>{const f=l(r);f!==s.current&&(s.current=f,m.current?.(f??null))},[r,l]),g.jsx(P,{field:e,error:l(r),children:g.jsx("input",{id:u,type:"date",value:Gr(r),onChange:d,className:T(R.input,R.textInput),...e.minDate?{min:e.minDate}:{},...e.maxDate?{max:e.maxDate}:{},"aria-invalid":!!l(r),"aria-describedby":l(r)?`${u}-error`:void 0})})},Xr=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,definitionName:a}=A(),u=i.useRef(null),c=i.useRef(o);i.useEffect(()=>{c.current=o},[o]);const s=i.useCallback(l=>l===""||l===null||l===void 0?n("Value required"):e.options.some(f=>f.value===l)?O(a,e,l,n)??null:n("Invalid option selected"),[e,n,a]);i.useEffect(()=>{const l=r!=null?String(r):"",d=s(l);if(d&&e.options.length>0){const f=String(e.options[0].value);u.current&&(u.current.value=f),t?.(f,null),c.current?.(null)}else u.current&&(u.current.value=l),c.current?.(d??null)},[r,s,t,e.options]);const m=l=>{const d=l.target.value,f=s(d);t?.(d,f)};return g.jsx(P,{field:e,error:s(String(r??"")),children:g.jsx("select",{id:e.name,"aria-invalid":!!s(String(r??"")),"aria-describedby":s(String(r??""))?`${e.name}-error`:void 0,defaultValue:String(r??""),ref:u,onChange:m,className:T(R.input,R.inputSelect),children:e.options.map(l=>g.jsx("option",{value:String(l.value),children:n(l.label)},String(l.value)))})})};function Zr(e){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}const Qr=({field:e,value:r,onChange:t,onError:o})=>{const{definitionName:n,t:a}=A(),u=i.useRef(null),c=i.useCallback(d=>{const f=d.trim();return f===""?e.required?a("Value required"):null:Zr(f)?e.pattern&&!new RegExp(e.pattern).test(f)?e.patternErrorMessage?a(e.patternErrorMessage):a("Email does not match pattern: {{1}}",e.pattern):O(n,e,d,a)??null:a("Must be valid email format")},[e,n,a]),s=d=>{const f=d.target.value,p=c(f);t?.(f,p)},m=i.useRef(null),l=i.useRef(o);return i.useEffect(()=>{l.current=o},[o]),i.useEffect(()=>{const d=r??"",f=c(d);u.current&&u.current.value!==String(d)&&(u.current.value=String(d)),f!==m.current&&(m.current=f,l.current?.(f??null))},[r,c]),g.jsx(P,{field:e,error:c(String(r??"")),children:g.jsx("input",{id:e.name,type:"email",defaultValue:String(r??""),ref:u,onChange:s,className:T(R.input,R.textInput),"aria-invalid":!!c(String(r??"")),"aria-describedby":c(String(r??""))?`${e.name}-error`:void 0})})},et=({field:e})=>{const{darkMode:r}=A(),{color:t=r?"#444444":"#CCCCCC",thickness:o=1,margin:n="8px 0"}=e;return g.jsx("div",{style:{width:"auto",height:"0",borderTop:`${o}px solid ${t}`,margin:n}})},rt=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,definitionName:a}=A(),[u,c]=i.useState(!1),s=i.useRef(null),m=i.useRef(o);i.useEffect(()=>{m.current=o},[o]);const l=i.useCallback(x=>e.required&&(!x||Array.isArray(x)&&x.length===0)?n("Value required"):O(a,e,x,n)??null,[e,a,n]),d=i.useMemo(()=>l(r),[r,l]);i.useEffect(()=>{const x=l(r);t?.(r,x),m.current?.(x??null)},[r,l]);const f=x=>{const C=x.target.files;let M=null;if(C&&C.length>0){const S=Array.from(C);e.multiple?M=[...Array.isArray(r)?r:[],...S]:M=S[0]}const w=l(M);t?.(M,w)},p=x=>{x.preventDefault(),x.stopPropagation(),c(!1);const C=x.dataTransfer.files;if(C&&C.length>0){const M=Array.from(C);let w=null;e.multiple?w=[...Array.isArray(r)?r:[],...M]:w=M[0];const S=l(w);t?.(w,S)}},y=x=>{x.preventDefault(),x.stopPropagation(),c(!0)},h=x=>{x.preventDefault(),x.stopPropagation(),c(!1)},b=x=>{if(Array.isArray(r)&&typeof x=="number"){const C=r.filter((S,k)=>k!==x),M=C.length>0?C:null,w=l(M);t?.(M,w)}else{const C=l(null);t?.(null,C)}},v=()=>{const x=Array.isArray(r)?r:r?[r]:[];return x.length===0?null:g.jsx("div",{style:{marginTop:"8px",display:"flex",flexDirection:"column",gap:"6px"},children:x.map((C,M)=>g.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"6px 10px",backgroundColor:"var(--reactaform-input-bg, #fff)",border:"1px solid var(--reactaform-border-color, #d1d5db)",borderRadius:"4px",fontSize:"0.875rem",gap:"8px"},children:[g.jsx("div",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:C.name}),g.jsx("button",{type:"button",onClick:()=>b(Array.isArray(r)?M:void 0),"aria-label":n("Remove file"),style:{background:"transparent",border:"none",color:"var(--reactaform-color-error, #ef4444)",cursor:"pointer",padding:"2px 6px",fontSize:"1.125rem",lineHeight:1,borderRadius:"4px",transition:"background-color 0.2s",flexShrink:0},onMouseEnter:w=>{w.currentTarget.style.backgroundColor="var(--reactaform-bg-hover, #fee)"},onMouseLeave:w=>{w.currentTarget.style.backgroundColor="transparent"},children:"×"})]},`${C.name}-${M}`))})};return g.jsx(P,{field:e,error:d,children:g.jsxs("div",{style:{width:"100%"},children:[g.jsxs("div",{onDrop:p,onDragOver:y,onDragLeave:h,style:{position:"relative",border:`1px dashed ${u?"var(--reactaform-color-primary, #2563eb)":d?"var(--reactaform-color-error, #ef4444)":"var(--reactaform-border-color, #d1d5db)"}`,borderRadius:"var(--reactaform-border-radius, 4px)",padding:"8px 12px",textAlign:"center",backgroundColor:u?"var(--reactaform-bg-hover, #f0f9ff)":"var(--reactaform-input-bg, #fff)",transition:"all 0.2s ease",cursor:"pointer",minHeight:"var(--reactaform-input-height, 34px)",width:"100%",maxWidth:"100%",alignSelf:"stretch",boxSizing:"border-box",display:"flex",alignItems:"center",justifyContent:"center",gap:"8px"},onClick:()=>s.current?.click(),onKeyDown:x=>{(x.key==="Enter"||x.key===" ")&&(x.preventDefault(),s.current?.click())},role:"button","aria-label":e.multiple?n("Choose Files or Drag & Drop"):n("Choose File or Drag & Drop"),"aria-invalid":!!d,"aria-describedby":d?`${e.name}-error`:void 0,children:[g.jsx("input",{id:e.name,ref:s,type:"file",accept:e.accept,multiple:e.multiple,style:{display:"none"},onChange:f}),g.jsx("div",{style:{fontSize:"1.25rem",opacity:.6,lineHeight:1,flexShrink:0},children:"📁"}),g.jsx("div",{style:{fontSize:"0.875rem",fontWeight:400,color:"var(--reactaform-text-color, #111827)",flex:1,textAlign:"left"},children:u?n("Drop files here"):e.multiple?n("Choose Files or Drag & Drop"):n("Choose File or Drag & Drop")}),e.accept&&g.jsx("div",{style:{fontSize:"0.75rem",color:"var(--reactaform-text-muted, #6b7280)",whiteSpace:"nowrap",opacity:u?0:1,transition:"opacity 0.15s ease",pointerEvents:u?"none":"auto"},children:e.accept})]}),v()]})})},tt=/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][-+]?\d+)?$/;function nt(e){return e.split(",").map(r=>r.trim()).every(r=>tt.test(r))}const ot=e=>!e||e.trim()===""?[]:e.split(",").map(r=>r.trim()).filter(Boolean).map(Number),at=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,definitionName:a}=A(),[u,c]=i.useState(Array.isArray(r)?r.join(", "):String(r??"")),s=i.useCallback(f=>{if(f.trim()==="")return e.required?n("Value required"):null;if(!nt(f))return n("Each value must be a valid float");const p=ot(f);if(e.minCount!==void 0&&p.length<e.minCount)return n("Minimum number of values: {{1}}",e.minCount);if(e.maxCount!==void 0&&p.length>e.maxCount)return n("Maximum number of values: {{1}}",e.maxCount);for(const h of p){if(e.min!==void 0&&(e.minInclusive?h<e.min:h<=e.min))return n("Each value must be {{1}} {{2}}",e.minInclusive?"≥":">",e.min);if(e.max!==void 0&&(e.maxInclusive?h>e.max:h>=e.max))return n("Each value must be {{1}} {{2}}",e.maxInclusive?"≤":"<",e.max)}return O(a,e,p,n)??null},[a,e,n]),m=f=>{const p=f.target.value,y=s(p);c(p),t?.(p,y)},l=i.useRef(null),d=i.useRef(o);return i.useEffect(()=>{d.current=o},[o]),i.useEffect(()=>{const f=Array.isArray(r)?r.join(", "):String(r??""),p=s(f);p!==l.current&&(l.current=p,d.current?.(p??null))},[r,e.required,s,n]),g.jsx(P,{field:e,error:s(u),children:g.jsx("input",{id:e.name,type:"text",value:u,onChange:m,className:T(R.input,R.textInput),style:{flex:1},"aria-invalid":!!s(u),"aria-describedby":s(u)?`${e.name}-error`:void 0})})},st=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,definitionName:a}=A(),u=i.useRef(null),c=i.useCallback(f=>{if(f.trim()==="")return e.required?n("Value required"):null;const p=Number.parseFloat(f);return Number.isNaN(p)?n("Must be a valid float"):e.min!==void 0&&(e.minInclusive?p<e.min:p<=e.min)?n("Must be {{1}} {{2}}",e.minInclusive?"≥":">",e.min):e.max!==void 0&&(e.maxInclusive?p>e.max:p>=e.max)?n("Must be {{1}} {{2}}",e.maxInclusive?"≤":"<",e.max):O(a,e,p,n)??null},[e,a,n]),s=i.useRef(null),m=i.useRef(o);i.useEffect(()=>{m.current=o},[o]),i.useEffect(()=>{const f=String(r??""),p=c(f);p!==s.current&&(s.current=p,m.current?.(p??null)),u.current&&document.activeElement!==u.current&&(u.current.value=f)},[r,e,c,n]);const l=f=>{const p=f.target.value,y=c(p);t?.(p,y)},d=i.useMemo(()=>c(String(r??"")),[r,c]);return g.jsx(P,{field:e,error:d,children:g.jsx("input",{id:e.name,type:"text",defaultValue:String(r??""),ref:u,onChange:l,className:T(R.input,R.inputNumber),"aria-invalid":!!d,"aria-describedby":d?`${e.name}-error`:void 0})})};function it(){try{return"/"}catch{}try{if(typeof process<"u"&&process?.env?.PUBLIC_URL)return process.env.PUBLIC_URL}catch{}return"/"}const ct=({field:e,value:r})=>{const{language:t,t:o}=A(),n=e.alignment||"center",a={left:"flex-start",center:"center",right:"flex-end"},u=typeof r=="string"?r:"";let c=u&&u.trim()!==""?u:typeof e.defaultValue=="string"?e.defaultValue:"";c&&!c.startsWith("/")&&(c=`${it()}${c}`);const s=e.localized?.split(";").map(b=>b.trim()),[m,l]=i.useState(c||""),d=i.useRef(c||null);if(i.useEffect(()=>{if(!c)return;const b=c.split("/"),v=b.pop(),x=v.lastIndexOf(".");if(x===-1)return;const C=v.substring(0,x),M=v.substring(x);let w=null;s?.includes(t)&&(w=`${C}_${t}${M}`);const S=new AbortController;if(w){const k=[...b,w].join("/");fetch(k,{method:"HEAD",signal:S.signal}).then($=>{const j=$.ok?k:c;j!==d.current&&(d.current=j,l(j))}).catch(()=>{c!==d.current&&(d.current=c,l(c))})}else{const k=c;k!==d.current&&(d.current=k,requestAnimationFrame(()=>l(k)))}return()=>{S.abort()}},[c,t,s]),!m)return null;const{width:f,height:p}=e,y={},h={borderRadius:"8px",objectFit:"contain",boxShadow:"0 2px 6px rgba(0,0,0,0.1)",margin:"0 0 8px 0"};return f&&p?(y.width=f,y.height=p,h.width=`${f}px`,h.height=`${p}px`):f&&!p?(y.width=f,h.width=`${f}px`,h.height="auto"):!f&&p&&(y.height=p,h.width="auto",h.height=`${p}px`),g.jsx(P,{field:e,children:g.jsx("div",{"data-testid":"image-wrapper",style:{display:"flex",justifyContent:a[n]||"center",margin:"0 0"},children:g.jsx("img",{src:m,alt:o?.(e.displayName||"Image")||e.displayName||"Image",...y,style:h})})})};function lt(e){const r=/^-?\d+$/;return e.split(",").map(t=>t.trim()).every(t=>r.test(t))}const ut=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,definitionName:a}=A(),u=",",[c,s]=i.useState(Array.isArray(r)?r.join(u+" "):String(r??"")),m=h=>!h||h.trim()===""?[]:h.split(u).map(b=>b.trim()).filter(Boolean).map(b=>Number(b)),l=i.useCallback(h=>{if(h.trim()==="")return e.required?n("Value required"):null;if(!lt(h))return n("Each value must be a valid integer");const b=m(h);if(e.minCount!==void 0&&b.length<e.minCount)return n("Minimum number of values: {{1}}",`${e.minCount}`);if(e.maxCount!==void 0&&b.length>e.maxCount)return n("Maximum number of values: {{1}}",`${e.maxCount}`);for(const x of b){if(e.min!==void 0&&(e.minInclusive?x<e.min:x<=e.min))return n("Each value must be {{1}} {{2}}",e.minInclusive?"≥":">",e.min);if(e.max!==void 0&&(e.maxInclusive?x>e.max:x>=e.max))return n("Each value must be {{1}} {{2}}",e.maxInclusive?"≤":"<",e.max)}return O(a,e,b,n)??null},[a,e,n]),d=h=>{const b=h.target.value,v=l(b);s(b),t?.(b,v)},f=i.useRef(null),p=i.useRef(o);i.useEffect(()=>{p.current=o},[o]),i.useEffect(()=>{const h=Array.isArray(r)?r.join(u+" "):String(r??""),b=l(h);b!==f.current&&(f.current=b,p.current?.(b??null))},[r,e.required,l,n]);const y=l(c);return g.jsx(P,{field:e,error:y,children:g.jsx("input",{id:e.name,type:"text",value:c,onChange:d,className:T(R.input,R.textInput),style:{flex:1},"aria-invalid":!!y,"aria-describedby":y?`${e.name}-error`:void 0})})};function ft(e){return/^[-+]?\d*$/.test(e)}const mt=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,definitionName:a}=A(),u=i.useRef(null),c=i.useCallback(f=>{if(f.trim()==="")return e.required?n("Value required"):null;if(!ft(f))return n("Must be a valid integer");const p=parseInt(f,10);if(Number.isNaN(p))return n("Must be a valid integer");if(e.min!==void 0&&(e.minInclusive?p<e.min:p<=e.min))return n("Must be {{1}} {{2}}",e.minInclusive?"≥":">",e.min);if(e.max!==void 0&&(e.maxInclusive?p>e.max:p>=e.max))return n("Must be {{1}} {{2}}",e.maxInclusive?"≤":"<",e.max);if(e.step!==void 0){const h=Number(e.step);if(!Number.isInteger(h))return n("Invalid step value");if(p%h!==0)return n("Must be a multiple of {{1}}",h)}return O(a,e,p,n)??null},[e,a,n]),s=i.useRef(null),m=i.useRef(o);i.useEffect(()=>{m.current=o},[o]),i.useEffect(()=>{const f=String(r??""),p=c(f);p!==s.current&&(s.current=p,m.current?.(p??null)),u.current&&document.activeElement!==u.current&&(u.current.value=f)},[r,e,c,n]);const l=f=>{const p=f.target.value,y=c(p);t?.(p,y)},d=i.useMemo(()=>c(String(r??"")),[r,c]);return g.jsx(P,{field:e,error:d,children:g.jsx("input",{id:e.name,type:"text",defaultValue:String(r??""),ref:u,onChange:l,className:T(R.input,R.inputNumber),"aria-invalid":!!d,"aria-describedby":d?`${e.name}-error`:void 0})})},dt=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,definitionName:a}=A(),u=e.minHeight??"80px",c=i.useRef(null),s=i.useRef(null),m=i.useRef(o);i.useEffect(()=>{m.current=o},[o]);const l=i.useCallback(y=>y.trim()===""?e.required?n("Value required"):null:e.minLength!==void 0&&y.length<e.minLength?n("Must be at least {{1}} characters",e.minLength):e.maxLength!==void 0&&y.length>e.maxLength?n("Must be at most {{1}} characters",e.maxLength):O(a,e,y,n),[e,a,n]),d=y=>{const h=y.target.value,b=l(h);t?.(h,b)};i.useEffect(()=>{const y=l(r);y!==s.current&&(s.current=y,m.current?.(y??null)),c.current&&c.current.value!==String(r??"")&&(c.current.value=String(r??""))},[r,l]);const f={id:e.name,defaultValue:String(r??""),ref:c,onChange:d,style:{resize:"vertical",minHeight:u,width:"100%",boxSizing:"border-box"},className:T(R.input,R.textInput)},p=l(r);return g.jsx(P,{field:e,error:p,children:g.jsx("textarea",{...f,"aria-invalid":!!p,"aria-describedby":p?`${e.name}-error`:void 0})})},pt=({field:e,value:r,onChange:t,onError:o})=>{const n=i.useRef(o);i.useEffect(()=>{n.current=o},[o]);const{t:a,darkMode:u,formStyle:c,fieldStyle:s,definitionName:m}=A(),l=(j,E,N)=>{if(!E)return{};const q=j?.[E];return(N&&q?q[N]:void 0)??{}},d=i.useRef(null),[f,p]=i.useState(!1),[y,h]=i.useState(null),b=i.useMemo(()=>e.options.map(j=>({value:j.value,label:a(j.label)})),[e.options,a]),v=i.useMemo(()=>{const j=Array.isArray(r)?r:[],E=new Set(b.map(N=>N.value));return j.filter(N=>E.has(N))},[r,b]),x=j=>{const E=Array.isArray(j)?j:[];return e.required&&E.length===0?a("Value required"):O(m,e,E,a)??null},C=()=>{if(!d.current)return;const j=d.current.getBoundingClientRect();h({x:j.left,y:j.bottom}),p(E=>!E)},M=j=>{const E=v.includes(j)?v.filter(D=>D!==j):[...v,j],N=x(E);n.current?.(N??null),t?.(E,N)},w=i.useMemo(()=>({height:"var(--reactaform-input-height, 2.5rem)",padding:"var(--reactaform-input-padding, 8px)",display:"flex",alignItems:"center",boxSizing:"border-box",cursor:"pointer",position:"relative",borderRadius:"var(--reactaform-border-radius, 4px)",border:"1px solid var(--reactaform-border-color, #ccc)",background:"var(--reactaform-secondary-bg, #fff)",color:"var(--reactaform-text-color, #000)",...l(c,"multiSelect","control"),...l(s,void 0,"control")}),[c,s]),S=i.useMemo(()=>({position:"absolute",right:"1.5em",top:"50%",transform:"translateY(-50%)",background:"none",border:"none",cursor:"pointer",fontSize:"0.8em",color:"var(--reactaform-text-muted, #999)",padding:0,...l(c,"multiSelect","clearButton"),...l(s,void 0,"clearButton")}),[c,s]),k=i.useMemo(()=>({position:"absolute",right:"0.7em",top:"50%",transform:"translateY(-50%)",pointerEvents:"none",fontSize:"0.8em",color:"var(--reactaform-text-muted, #999)",...l(c,"multiSelect","arrow"),...l(s,void 0,"arrow")}),[c,s]),$=x(Array.isArray(r)?r:[]);return g.jsxs("div",{children:[g.jsx(P,{field:e,error:null,children:g.jsx("div",{style:{width:"100%"},children:g.jsxs("div",{ref:d,className:"reactaform-multiselection-control",style:w,onClick:C,tabIndex:0,role:"button","aria-haspopup":"listbox","aria-expanded":f,"aria-invalid":!!$,"aria-describedby":$?`${e.name}-error`:void 0,onKeyDown:j=>{(j.key==="Enter"||j.key===" ")&&(j.preventDefault(),C())},children:[g.jsxs("span",{style:{flex:1,color:"var(--reactaform-text-muted, #888)"},children:[v.length," / ",b.length," selected"]}),v.length>0&&g.jsx("button",{type:"button","aria-label":"Clear selections",onClick:j=>{j.stopPropagation(),t?.([],null)},style:S,children:g.jsx("span",{style:S,"aria-hidden":!0,children:"✖"})}),g.jsx("span",{style:k,"aria-hidden":!0,children:"▼"})]})})}),f&&y&&g.jsx(gt,{position:y,options:b,selectedValues:v,onToggleOption:M,onClose:()=>p(!1),controlRef:d,darkMode:u})]})},gt=({position:e,options:r,selectedValues:t,onToggleOption:o,onClose:n,controlRef:a,darkMode:u})=>{const c=i.useRef(null),[s,m]=i.useState(-1),{formStyle:l,fieldStyle:d}=A(),f=(S,k,$)=>{if(!k)return{};const E=S?.[k];return($&&E?E[$]:void 0)??{}},p=i.useMemo(()=>({maxHeight:200,overflowY:"auto",background:"var(--reactaform-secondary-bg, #fff)",border:"1px solid var(--reactaform-border-color, #ccc)",borderRadius:4,zIndex:2e3,boxShadow:"var(--reactaform-shadow, 0 2px 8px rgba(0,0,0,0.15))",pointerEvents:"auto",color:"var(--reactaform-text-color, #000)",fontSize:"var(--reactaform-popup-font-size, 0.875rem)",...f(l,"multiSelect","popup"),...f(d,void 0,"popup")}),[l,d]),y=i.useMemo(()=>({padding:"6px 8px",cursor:"pointer",display:"flex",alignItems:"center",background:"transparent",color:"var(--reactaform-text-color, #000)",...f(l,"multiSelect","option"),...f(d,void 0,"option")}),[l,d]);i.useEffect(()=>{const S=k=>{const $=k.target;!c.current?.contains($)&&!a.current?.contains($)&&n()};return document.addEventListener("mousedown",S),()=>document.removeEventListener("mousedown",S)},[n,a]),i.useEffect(()=>{c.current&&r.length>0&&requestAnimationFrame(()=>m(S=>S===-1?0:S))},[r.length]),i.useEffect(()=>{if(!c.current||s<0)return;const S=c.current.querySelector(`#multi-opt-${s}`);S&&requestAnimationFrame(()=>S.focus())},[s]);const h=250,b=200,[v,x]=i.useState(null),[C,M]=i.useState(null);if(i.useEffect(()=>{if(typeof window>"u")return;const S=()=>{let j=e.x,E=e.y,N=h;const D=a?.current;if(D){const q=D.getBoundingClientRect();j=q.left,E=q.bottom,N=Math.max(80,Math.round(q.width))}j=Math.min(j,window.innerWidth-N),E=Math.min(E,window.innerHeight-b),x({left:j,top:E}),M(N)};S(),window.addEventListener("scroll",S,!0),window.addEventListener("resize",S);let k=null;const $=a?.current;return typeof ResizeObserver<"u"&&$&&(k=new ResizeObserver(()=>S()),k.observe($)),()=>{window.removeEventListener("scroll",S,!0),window.removeEventListener("resize",S),k&&$&&k.unobserve($)}},[a,e.x,e.y]),typeof window>"u")return null;let w=document.getElementById("popup-root");return w||(w=document.createElement("div"),w.id="popup-root",document.body.appendChild(w)),Re.createPortal(g.jsx("div",{ref:c,role:"listbox","aria-activedescendant":s>=0?`multi-opt-${s}`:void 0,style:{position:"fixed",top:v?v.top:e.y,left:v?v.left:e.x,width:C??h,...p},"data-reactaform-theme":u?"dark":"light",children:r.map((S,k)=>{const $=t.includes(S.value),j=u?"var(--reactaform-hover-bg, rgba(255,255,255,0.01))":"var(--reactaform-hover-bg, #eee)",E={...y,background:k===s?j:y.background};return g.jsxs("div",{id:`multi-opt-${k}`,onMouseDown:N=>{N.stopPropagation(),o(S.value)},onKeyDown:N=>{const D=r.length;switch(N.key){case"ArrowDown":N.preventDefault(),m(q=>(q+1)%D);break;case"ArrowUp":N.preventDefault(),m(q=>(q-1+D)%D);break;case"Home":N.preventDefault(),m(0);break;case"End":N.preventDefault(),m(D-1);break;case"Enter":case" ":N.preventDefault(),N.stopPropagation(),o(S.value);break;case"Escape":N.preventDefault(),n(),a?.current?.focus();break}},tabIndex:k===s?0:-1,role:"option","aria-selected":$,style:E,onMouseEnter:N=>{N.currentTarget.style.background=j,m(k)},onMouseLeave:N=>{N.currentTarget.style.background="transparent",m(D=>D===k?-1:D)},children:[g.jsx("input",{type:"checkbox",checked:$,readOnly:!0,style:{marginRight:8,width:"1.125em",height:"1.125em",verticalAlign:"middle",accentColor:u?"#10b981":"#22c55e",cursor:"pointer"}}),S.label]},S.value)})}),w)},ht=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,definitionName:a}=A(),u=i.useRef(null),c=e.min??void 0,s=e.max??void 0,m=Math.max(1,Math.round(e.step??1)),l=i.useCallback(b=>isNaN(b)?n("Must be a valid integer"):Number.isInteger(b)?c!==void 0&&b<c?n("Must be ≥ {{1}}",c):s!==void 0&&b>s?n("Must be ≤ {{1}}",s):O(a,e,b,n)??null:n("Must be an integer"),[a,e,n,c,s]),d=i.useRef(null),f=i.useRef(o);i.useEffect(()=>{f.current=o},[o]),i.useEffect(()=>{if(document.activeElement===u.current)return;const v=String(r),x=l(r);u.current&&(u.current.value=v),x!==d.current&&(d.current=x,f.current?.(x??null))},[r,l]);const p=b=>{if(b.trim()==="")return e.required?n("Value required"):null;const x=Number(b);return l(x)},y=b=>{const v=b.target.value,x=b.target.valueAsNumber,C=p(v);t?.(x,C)},h=p(String(r??""));return g.jsx(P,{field:e,error:h,children:g.jsx("input",{ref:u,id:e.name,type:"number",defaultValue:String(r??""),min:c,max:s,step:m,onChange:y,style:{width:"100%",height:"100%"},className:R.input,"aria-invalid":!!h,"aria-describedby":h?`${e.name}-error`:void 0})})},bt=({field:e,value:r,onChange:t,onError:o})=>{const{t:n}=A(),a=i.useRef(null),{definitionName:u}=A(),c=i.useCallback(f=>{const p=String(f??"").trim();if(p==="")return e.required?n("Value required"):null;if(e.pattern)try{if(!new RegExp(e.pattern).test(p))return e.patternErrorMessage?n(e.patternErrorMessage):n("Phone number does not match pattern: {{1}}",`${e.pattern}`)}catch{}return O(u,e,p,n)},[u,e,n]),s=i.useRef(null),m=i.useRef(o);i.useEffect(()=>{m.current=o},[o]),i.useEffect(()=>{const f=String(r??""),p=c(f);a.current&&a.current.value!==String(f)&&(a.current.value=String(f)),p!==s.current&&(s.current=p,m.current?.(p??null))},[r,c]);const l=f=>{const p=f.target.value,y=p.trim();let h=null;if(y===""){h=e.required?n("Value required"):null,t?.(p,h);return}h||(h=c(p)),t?.(p,h)},d=i.useMemo(()=>c(String(r??"")),[r,c]);return g.jsx(P,{field:e,error:d,children:g.jsx("input",{id:e.name,type:"tel",defaultValue:String(r??""),ref:a,onChange:l,className:T(R.input,R.textInput),"aria-invalid":!!d,"aria-describedby":d?`${e.name}-error`:void 0})})},yt=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,definitionName:a}=A(),u=e.layout?.toLowerCase()==="horizontal"?"row":"column",c=i.useRef(null),s=i.useRef(o);i.useEffect(()=>{s.current=o},[o]);const m=i.useCallback(d=>d===""||d===null||d===void 0?n("Value required"):e.options.some(p=>p.value===d)?O(a,e,d,n)??null:n("Invalid option selected"),[e,n,a]);i.useEffect(()=>{const d=r!=null?String(r):"",f=m(d);if(s.current?.(f??null),c.current){const p=Array.from(c.current.querySelectorAll("input[type=radio]"));if(f&&e.options.length>0){const y=String(e.options[0].value);p.forEach(h=>h.checked=h.value===y),t?.(y,null)}else p.forEach(y=>y.checked=y.value===d)}},[r,m,t,e.options]);const l=d=>{const f=d.target.value,p=m(f);s.current?.(p??null),t?.(f,p)};return g.jsx(P,{field:e,error:m(String(r??"")),children:g.jsx("div",{className:R.input,role:"radiogroup","aria-labelledby":`${e.name}-label`,"aria-invalid":!!m(String(r??"")),style:{display:"flex",flexDirection:u,flexWrap:u==="row"?"wrap":"nowrap",gap:u==="row"?"12px":"4px",alignItems:u==="row"?"center":"stretch",width:"100%",padding:u==="row"?"8px":void 0,boxSizing:"border-box"},ref:c,children:e.options.map(d=>g.jsxs("label",{className:T(R.label),style:{display:u==="column"?"flex":"inline-flex",gap:"8px",alignItems:"center",whiteSpace:"nowrap",marginBottom:u==="column"?6:0,cursor:"pointer",width:u==="column"?"100%":void 0,justifyContent:"flex-start"},children:[g.jsx("input",{type:"radio",name:e.name,value:String(d.value),defaultChecked:String(r??"")===String(d.value),onChange:l,style:{width:"1.1em",height:"1.1em"}}),g.jsx("span",{style:{userSelect:"none",textAlign:u==="column"?"left":void 0,flex:u==="column"?1:void 0,fontWeight:400},children:n(d.label)})]},String(d.value)))})})},xt={display:"flex",gap:4},vt={cursor:"pointer",fontSize:"1.5rem",lineHeight:1,display:"inline-block",marginRight:"0.25rem",userSelect:"none",transition:"color 0.12s ease"},wt=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,definitionName:a}=A(),[u,c]=i.useState(null),s=i.useRef([]),m=e.max||5,l=i.useCallback(h=>e.required&&h===0?n("Value required"):O(a,e,h,n)??null,[e,n,a]),d=i.useRef(null),f=i.useRef(o);i.useEffect(()=>{f.current=o},[o]),i.useEffect(()=>{let h=r||0;r<0&&(h=0),r>m&&(h=m);const b=l(h);b!==d.current&&(d.current=b,f.current?.(b??null))},[r,l,m]);const p=h=>{const b=l(h);t?.(h,b)},y=(()=>{let h=r||0;return h<0&&(h=0),h>m&&(h=m),h})();return g.jsx(P,{field:e,error:l(y),children:g.jsx("div",{role:"radiogroup","aria-labelledby":`${e.name}-label`,style:xt,"aria-invalid":!!l(y),"aria-describedby":l(y)?`${e.name}-error`:void 0,children:(()=>{const h=e.icon&&String(e.icon).trim()?String(e.icon):"★";return[...Array(m)].map((b,v)=>{const x=v<y,M=u!==null&&v<=u||x?"gold":"lightgray";return g.jsx("span",{ref:w=>s.current[v]=w,role:"radio",tabIndex:y>0?v===y-1?0:-1:v===0?0:-1,"aria-checked":x,onClick:()=>p(v+1),onKeyDown:w=>{if(w.key==="Enter"||w.key===" ")w.preventDefault(),p(v+1);else if(w.key==="ArrowRight"||w.key==="ArrowUp"){w.preventDefault();const S=Math.min(m-1,v+1);s.current[S]?.focus()}else if(w.key==="ArrowLeft"||w.key==="ArrowDown"){w.preventDefault();const S=Math.max(0,v-1);s.current[S]?.focus()}},onMouseEnter:()=>c(v),onMouseLeave:()=>c(null),style:{...vt,color:M},"aria-label":`Rating ${v+1}`,title:n(`${e.displayName} ${v+1}`),children:h},v)})})()})})},St=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,definitionName:a}=A(),u=i.useRef(null),c=i.useRef(null),s=i.useRef(o);i.useEffect(()=>{s.current=o},[o]);const m=i.useMemo(()=>e.pattern?new RegExp(e.pattern):null,[e.pattern]),l=i.useCallback(b=>b===""?e.required?n("Value required"):null:e.minLength!==void 0&&b.length<e.minLength?n("Must be at least {{1}} characters",e.minLength):e.maxLength!==void 0&&b.length>e.maxLength?n("Must be at most {{1}} characters",e.maxLength):m&&!m.test(b)?e.patternErrorMessage?n(e.patternErrorMessage):n("Input does not match pattern: {{1}}",e.pattern):O(a,e,b,n),[e,a,n,m]),d=b=>{const v=b.target.value,x=l(v);t?.(v,x)};i.useEffect(()=>{const b=l(r??"");u.current&&u.current.value!==String(r??"")&&(u.current.value=String(r??"")),b!==c.current&&(c.current=b,s.current?.(b??null))},[r,l]);const[f,p]=i.useState(!1),y=()=>p(b=>!b),h=i.useMemo(()=>l(String(r??"")),[r,l]);return g.jsx(P,{field:e,error:h,children:g.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,width:"100%"},children:[g.jsx("input",{id:e.name,type:f?"text":"password",defaultValue:String(r??""),ref:u,onChange:d,className:T(R.input,R.textInput),style:{flex:1,minWidth:0},"aria-invalid":!!h,"aria-describedby":h?`${e.name}-error`:void 0}),g.jsx("button",{type:"button",onClick:y,"aria-label":n(f?"Hide password":"Show password"),style:{background:"transparent",border:"none",cursor:"pointer",fontSize:16,lineHeight:1,padding:"4px 6px",flexShrink:0},children:f?"🙈":"👁️"})]})})},Ct=/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][-+]?\d+)?$/;function jt(e){return Ct.test(e)}const Rt=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,definitionName:a}=A(),u=i.useRef(null),c=i.useRef(null),s=i.useCallback(y=>{let h=null;if(y.trim()==="")return n("Value required");if(!jt(y))return n("Invalid number");const b=Number(y);return typeof e.min=="number"&&b<e.min?n("Value should be at least {{1}}",e.min):typeof e.max=="number"&&b>e.max?n("Value should be at most {{1}}",e.max):(h||(h=O(a,e,b,n)),h)},[a,e,n]),m=i.useRef(null),l=i.useRef(o);i.useEffect(()=>{l.current=o},[o]),i.useEffect(()=>{const y=String(r),h=s(y);c.current&&document.activeElement!==c.current&&(c.current.value=isNaN(Number(y))?String(e.min??0):String(Number(y))),u.current&&document.activeElement!==u.current&&(u.current.value=y),h!==m.current&&(m.current=h,l.current?.(h??null))},[r,s,e.min]);const d=e.min??0,f=e.max??100,p=y=>{const h=y.target.value,b=s(h);t?.(h,b)};return g.jsx(P,{field:e,error:s(String(r??"")),children:g.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",width:"100%"},children:[g.jsx("input",{ref:c,id:`${e.name}-range`,type:"range",defaultValue:isNaN(Number(r))?String(d):String(Number(r)),onChange:p,min:d,max:f,style:{padding:0,flex:1},className:R.rangeInput,"aria-invalid":!!s(String(r??"")),"aria-describedby":s(String(r??""))?`${e.name}-error`:void 0}),g.jsx("input",{id:e.name,ref:u,type:"text",defaultValue:String(r??""),onChange:p,required:!0,style:{width:"40px",minWidth:"40px",height:"2.3em",textAlign:"center",flexShrink:0},className:T(R.input,R.textInput),"aria-invalid":!!s(String(r??"")),"aria-describedby":s(String(r??""))?`${e.name}-error`:void 0})]})})},kt=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,formStyle:a,fieldStyle:u,definitionName:c}=A(),s=a,m=u,l=(w,S,k)=>{if(!S)return{};const $=w?.[S];return(k&&$?$[k]:void 0)??{}},d=i.useMemo(()=>({display:"inline-block",position:"relative",width:44,height:24,...l(s,"switch","label"),...l(m,void 0,"label")}),[s,m]),f=i.useMemo(()=>({position:"absolute",opacity:0,top:0,left:0,width:"100%",height:"100%",margin:0,cursor:"pointer",pointerEvents:"none",...l(s,"switch","hiddenInput"),...l(m,void 0,"hiddenInput")}),[s,m]),p=i.useMemo(()=>({position:"absolute",cursor:"pointer",top:0,left:0,right:0,bottom:0,backgroundColor:"var(--reactaform-switch-off-bg, #ccc)",transition:"0.3s",borderRadius:24,borderWidth:2,borderStyle:"solid",borderColor:"transparent",...l(s,"switch","slider"),...l(m,void 0,"slider")}),[s,m]),y=i.useMemo(()=>({position:"absolute",height:16,width:16,left:2,bottom:2,backgroundColor:"white",transition:"0.3s",borderRadius:"50%",boxShadow:"0 1px 3px rgba(0, 0, 0, 0.3)",...l(s,"switch","knob"),...l(m,void 0,"knob")}),[s,m]),h=!!r,b=i.useRef(null),v=i.useRef(o),x=i.useCallback(w=>w?O(c,e,w,n)??null:e.required?n("Value required"):null,[e,n,c]),C=()=>{const w=!h,S=x(w);t?.(w,S)};i.useEffect(()=>{v.current=o},[o]),i.useEffect(()=>{const w=x(h);w!==b.current&&(b.current=w,v.current?.(w??null))},[h,e,x]);const M=e.name;return g.jsx(P,{field:e,error:x(h),rightAlign:!1,children:g.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%"},children:[g.jsx("label",{className:R.label,htmlFor:M,style:{textAlign:"left",justifyContent:"flex-start"},children:n(e.displayName)}),g.jsxs("label",{style:d,children:[g.jsx("input",{id:e.name,type:"checkbox",checked:h,readOnly:!0,"aria-label":n(e.displayName),"aria-invalid":!!x(h),"aria-describedby":x(h)?`${e.name}-error`:void 0,style:f,tabIndex:-1}),g.jsx("span",{role:"switch","data-testid":"switch",tabIndex:0,"aria-checked":h,"aria-invalid":!!x(h),"aria-describedby":x(h)?`${e.name}-error`:void 0,onClick:C,onKeyDown:w=>{(w.key===" "||w.key==="Spacebar"||w.key==="Space"||w.key==="Enter")&&(w.preventDefault(),C())},className:`reactaform-switch ${h?"active checked on":""} `,style:h?{...p,backgroundColor:"var(--reactaform-switch-on-bg, #22c55e)",borderColor:"var(--reactaform-switch-on-border, #16a34a)"}:p,children:g.jsx("span",{style:{...y,transform:h?"translateX(20px)":void 0}})})]})]})})},_e=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,definitionName:a}=A(),u=i.useRef(null),c=i.useRef(null),s=i.useRef(o);i.useEffect(()=>{s.current=o},[o]);const m=i.useMemo(()=>e.pattern?new RegExp(e.pattern):null,[e.pattern]),l=i.useCallback(f=>f.trim()===""?e.required?n("Value required"):null:e.minLength!==void 0&&f.length<e.minLength?n("Must be at least {{1}} characters",e.minLength):e.maxLength!==void 0&&f.length>e.maxLength?n("Must be at most {{1}} characters",e.maxLength):m&&!m.test(f)?e.patternErrorMessage?n(e.patternErrorMessage):n("Input does not match pattern: {{1}}",e.pattern):O(a,e,f,n),[e,a,n,m]),d=f=>{const p=f.target.value,y=l(p);t?.(p,y)};return i.useEffect(()=>{const f=l(r);u.current&&u.current.value!==String(r??"")&&(u.current.value=String(r??"")),f!==c.current&&(c.current=f,s.current?.(f??null))},[r,l]),g.jsx(P,{field:e,error:l(String(r??"")),children:g.jsx("input",{id:e.name,"aria-invalid":!!l(String(r??"")),"aria-describedby":l(String(r??""))?`${e.name}-error`:void 0,type:"text",defaultValue:String(r??""),ref:u,onChange:d,className:T(R.input,R.textInput)})})},Et=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,definitionName:a}=A(),u=i.useRef(null),c=i.useRef(o),s=e.includeSeconds??!0;i.useEffect(()=>{c.current=o},[o]);const m=i.useCallback(d=>{if(!d||d.trim()==="")return e.required||e.min||e.max?n("Value required"):null;const f=h=>{const b=h.split(":").map(x=>parseInt(x,10));if(b.some(x=>Number.isNaN(x)))return NaN;let v=0;if(b.length===3)v=b[0]*3600+b[1]*60+b[2];else if(b.length===2)v=b[0]*3600+b[1]*60;else if(b.length===1)v=b[0]*3600;else return NaN;return v},p=f(d);if(Number.isNaN(p))return n("Invalid time format");if(e.min&&typeof e.min=="string"){const h=f(e.min);if(!Number.isNaN(h)&&p<h)return n("Time must be on or after {{1}}",e.min)}if(e.max&&typeof e.max=="string"){const h=f(e.max);if(!Number.isNaN(h)&&p>h)return n("Time must be on or before {{1}}",e.max)}return O(a,e,d,n)??null},[e,a,n]),l=d=>{const f=d.target.value,p=m(f);t?.(f,p)};return i.useEffect(()=>{const d=m(r);d!==u.current&&(u.current=d,c.current?.(d??null))},[r,m]),g.jsx(P,{field:e,error:m(r),children:g.jsx("input",{id:e.name,type:"time",value:r,step:s?1:60,onChange:l,min:typeof e.min=="string"?e.min:void 0,max:typeof e.max=="string"?e.max:void 0,className:T(R.input,R.textInput),"aria-invalid":!!m(r),"aria-describedby":m(r)?`${e.name}-error`:void 0})})};function Nt({pos:e,options:r,onClose:t,onClickOption:o}){const n=i.useRef(null),a=i.useRef(!1),[u,c]=i.useState({top:e?.y??0,left:e?.x??0,ready:!1}),s=typeof window<"u"?document.getElementById("popup-root")||document.body:null;return i.useEffect(()=>{function m(l){a.current||l.target.dataset?.popupMenu==="item"||n.current&&l.target instanceof Node&&!n.current.contains(l.target)&&t()}return document.addEventListener("mousedown",m),()=>document.removeEventListener("mousedown",m)},[t]),i.useLayoutEffect(()=>{if(!n.current||!e||e.x==null||e.y==null)return;const m=n.current.getBoundingClientRect(),l=window.innerWidth,d=window.innerHeight;let f=e.x,p=e.y;f+m.width>l&&(f=Math.max(0,l-m.width-10)),p+m.height>d&&(p=Math.max(0,e.y-m.height-5)),c({top:p,left:f,ready:!0})},[e,r]),!s||r===void 0||r.length===0||!e||e.x==null||e.y==null?null:Re.createPortal(g.jsx("div",{ref:n,onMouseDown:m=>{m.stopPropagation()},style:{position:"fixed",top:u.top,left:u.left,visibility:u.ready?"visible":"hidden",backgroundColor:"var(--reactaform-primary-bg, #fff)",border:"1px solid var(--reactaform-border-color, #ccc)",borderRadius:"var(--reactaform-border-radius, 4px)",boxShadow:"var(--reactaform-shadow, 0 2px 10px rgba(0,0,0,0.2))",zIndex:9999,minWidth:"var(--reactaform-menu-min-width, 150px)",maxHeight:"var(--reactaform-menu-max-height, 300px)",overflowY:"auto",pointerEvents:"auto"},children:r.map((m,l)=>g.jsx("div",{"data-popup-menu":"item",onMouseDown:d=>{d.stopPropagation(),a.current=!0},onClick:d=>{d.stopPropagation(),d.preventDefault(),o(m),t(),setTimeout(()=>{a.current=!1},100)},style:{padding:"var(--reactaform-menu-item-padding, 8px 12px)",cursor:"pointer",fontSize:"var(--reactaform-menu-item-font-size, 0.8em)",borderBottom:l<r.length-1?"1px solid var(--reactaform-border-light, #eee)":void 0,transition:"background-color 0.15s ease"},onMouseEnter:d=>{d.currentTarget.style.backgroundColor="var(--reactaform-hover-bg, #e0e0e0)"},onMouseLeave:d=>{d.currentTarget.style.backgroundColor="transparent"},children:m.label},m.label??l))}),s)}const se={};function It(e,r){if(e in se)return;const t=Ae[e]??{},o={},n={},a={};for(const[c,s]of Object.entries(t))typeof s.factor=="number"&&(o[c]=s.factor),n[c]=r(c),a[r(c)]=c;const u=Object.keys(t)[0]??"";se[e]={default:u,factors:o,labels:n,reverseLabels:a}}function Mt(e,r,t){if(e==="C"){if(r==="F")return t*(9/5)+32;if(r==="K")return t+273.15}else if(e==="F"){if(r==="C")return(t-32)*5/9;if(r==="K")return(t-32)*5/9+273.15}else if(e==="K"){if(r==="C")return t-273.15;if(r==="F")return(t-273.15)*9/5+32}return t}function $t(e,r,t){if(!Number.isFinite(e))return[];if(t===se.temperature)return Object.keys(t.labels).map(a=>{const u=Mt(r,a,e);return Number.isFinite(u)?{label:`${u.toFixed(6)} ${a}`,value:u.toString(),unit:a}:{label:`${String(u)} ${a}`,value:String(u),unit:a}});const n=t.factors[r];return n===void 0?[]:Object.entries(t.factors).map(([a,u])=>{const c=e/n*u;return Number.isFinite(c)?{label:`${c.toFixed(6)} ${a}`,value:c.toString(),unit:a}:{label:`${String(c)} ${a}`,value:String(c),unit:a}})}function le(e,r){return e in r.labels?e:r.reverseLabels&&r.reverseLabels[e]?r.reverseLabels[e]:null}const At=/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][-+]?\d+)?$/,Vt=({unitFactors:e,field:r,value:t,onChange:o,onError:n})=>{const{t:a,definitionName:u}=A(),c=i.useRef(null),s=i.useRef(null),[m,l]=i.useState(null),[d,f]=i.useState(null),[p,y]=i.useState(!1),[h,b]=i.useState(null),[v,x]=i.useState([]),C=i.useCallback((z,I)=>{if(!z||z.trim()==="")return r.required?a("Value required"):null;if(!At.test(z))return a("Must be a valid number");const V=O(u,r,[z,I],a);return V||null},[u,r,a]),M=e.reverseLabels!==void 0?e.reverseLabels:Object.fromEntries(Object.entries(e.labels).map(([z,I])=>[I,z]));i.useEffect(()=>{const z=String(t[0]);let I=t[1]??e.default;I=le(I,e)||I;const V=document.activeElement;V===c.current||V===s.current||(c.current&&(c.current.value=z),s.current&&(s.current.value=I),l(null),f(null))},[t,e]);const w=i.useRef(null),S=i.useRef(n);i.useEffect(()=>{S.current=n},[n]),i.useEffect(()=>{const z=String(t[0]);let I=t[1]??e.default;I=le(I,e)||I;const V=C(z,I);V!==w.current&&(w.current=V,S.current?.(V??null))},[t,e,C]);const k=(z,I,V)=>{const B=M[I]||I;o?.([z,B],V)},$=z=>{const I=z.target.value,V=s.current?s.current.value:e.default,B=C(I,V);l(I),k(I,V,B)},j=z=>{const I=z.target.value,V=c.current?c.current.value:String(t[0]??""),B=C(V,I);f(I),s.current&&(s.current.value=I),k(V,I,B)},E=z=>{const I=c.current?c.current.value:String(t[0]??""),V=parseFloat(I),B=s.current?s.current.value:e.default;if(C(I,B)||!I.trim()||!Number.isFinite(V))return;const ie=z.currentTarget.getBoundingClientRect(),ge=ie.left,he=ie.bottom;b({x:ge,y:he});const X=$t(V,B,e);if(X.length===0){x([]),y(!1);return}x(X),y(F=>!F)},N=z=>{const{value:I,unit:V}=z;y(!1),b(null),c.current&&(c.current.value=I),s.current&&(s.current.value=V),l(I),f(V);const B=C(I,V);k(I,V,B)},D=String(t[0]??""),q=le(t[1]??e.default,e)||(t[1]??e.default),te=m??D,Y=!!C(te,d??q)||!te.trim(),de={width:"var(--reactaform-unit-btn-width, 2.5em)",height:"var(--reactaform-unit-btn-height, 2.5em)",padding:"var(--reactaform-unit-btn-padding, 0)",border:"none",borderRadius:"var(--reactaform-button-border-radius, var(--reactaform-border-radius, 0.25em))",backgroundColor:Y?"var(--reactaform-button-disabled-bg, #cccccc)":"var(--reactaform-button-bg, var(--reactaform-success-color))",color:"var(--reactaform-button-text, #ffffff)",cursor:Y?"var(--reactaform-button-disabled-cursor, not-allowed)":"pointer",opacity:Y?+"var(--reactaform-button-disabled-opacity, 0.6)":1,display:"flex",alignItems:"center",justifyContent:"center"},G=C(D,q);return g.jsx(P,{field:r,error:G,children:g.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"var(--reactaform-unit-gap, 8px)",width:"100%"},children:[g.jsx("input",{id:r.name,type:"text",ref:c,defaultValue:String(t[0]??""),onChange:$,style:{width:"var(--reactaform-unit-input-width, 100px)"},className:T(R.input,R.textInput),"aria-invalid":!!G,"aria-describedby":G?`${r.name}-error`:void 0}),g.jsx("select",{id:`${r.name}-unit`,ref:s,defaultValue:le(t[1]??e.default,e)||(t[1]??e.default),onChange:j,className:T(R.input,R.inputSelect),"aria-invalid":!!G,"aria-describedby":G?`${r.name}-error`:void 0,children:Object.keys(e.labels).map(z=>g.jsx("option",{value:z,children:e.labels[z]??z},z))}),g.jsxs("div",{style:{display:"flex",alignItems:"center"},children:[g.jsx("button",{onClick:E,"aria-disabled":Y,disabled:Y,style:de,className:R.button,children:g.jsx("span",{style:{fontSize:"var(--reactaform-unit-btn-icon-size, 1em)",lineHeight:"1",transform:"translateY(-1px)",pointerEvents:"none"},children:"⟷"})}),p&&v&&g.jsx(Nt,{pos:h,options:v,onClose:()=>{b(null),y(!1)},onClickOption:N})]})]})})};function Ft({field:e,value:r,onChange:t}){const{t:o}=A(),n=e.dimension;if(!n)return null;se[n]||It(n,o);const a=se[n];return a?g.jsx(Vt,{unitFactors:a,field:e,value:r,onChange:t}):null}const Ke=/^(https?|ftp|file):\/\/[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|]$/i,Je=e=>{try{return new URL(e),!0}catch{return!1}},Dt=({field:e,value:r,onChange:t,onError:o})=>{const{t:n,definitionName:a}=A(),u=i.useRef(null),c=i.useCallback(f=>{const p=f.trim();if(p==="")return e.required?n("Value required"):null;if(!Ke.test(p)&&!Je(p)){const h=e.allowRelative===!0;let b=!1;if(Ke.test(p)||Je(p))b=!0;else if(h)try{new URL(p,"http://example.com"),b=!0}catch{b=!1}if(!b)return n("Must be a valid URL")}return O(a,e,p,n)??null},[a,e,n]),s=f=>{const p=f.target.value,y=c(p);t?.(p.trim(),y)},m=i.useRef(null),l=i.useRef(o);i.useEffect(()=>{l.current=o},[o]),i.useEffect(()=>{const f=r??"",p=c(f);u.current&&u.current.value!==String(f)&&(u.current.value=String(f)),p!==m.current&&(m.current=p,l.current?.(p??null))},[r,c]);const d=i.useMemo(()=>c(String(r??"")),[r,c]);return g.jsx(P,{field:e,error:d,children:g.jsx("input",{id:e.name,type:"url",defaultValue:String(r??""),ref:u,onChange:s,style:{alignItems:"left"},className:T(R.input,R.textInput),placeholder:"https://example.com","aria-invalid":!!d,"aria-describedby":d?`${e.name}-error`:void 0})})},je=new fe,zt=new Set(["checkbox","switch","dropdown","radio","multi-selection","slider","stepper","color","rating"]),fr={checkbox:_r,color:Jr,date:Yr,dropdown:Xr,email:Qr,file:rt,float:st,"float-array":at,image:ct,int:mt,"int-array":ut,"multi-selection":pt,multiline:dt,password:St,phone:bt,radio:yt,rating:wt,separator:et,slider:Rt,string:_e,stepper:ht,switch:kt,text:_e,time:Et,unit:Ft,url:Dt};function mr(e,r,t){const o=r;if(!t&&e in fr){console.warn(`Can't Overwrite Base Component type "${e}".`);return}if(zt.has(e)){je.register(e,o);return}const n=a=>{const{callback:c,cancel:s}=Xe((...m)=>{const l=a.onChange;typeof l=="function"&&l(...m)},200);return i.useEffect(()=>()=>{s()},[s]),i.createElement(o,{...a,onChange:c})};je.register(e,n)}function Ve(e,r){mr(e,r,!1)}function Fe(e){return je.get(e)}let Ge=!1;function dr(){Ge||(Object.entries(fr).forEach(([e,r])=>{mr(e,r,!0)}),Ge=!0)}const De=new fe;function ze(e,r){De.register(e,r)}function Ot(e){return De.get(e)}function Lt(e){return De.get(e)}ze("Preset_AlertSubmitHandler",(e,r,t)=>{const o={name:r||"Unnamed Instance",version:e.version,definition:e.name,values:t},n=JSON.stringify(o,null,2);alert(n)});const Q=new Map,W={components:new Map,fieldValidators:new Map,formValidators:new Map,submissionHandlers:new Map};function pr(e,r,t){if(!e)return!0;if(t&&!t(e))return!1;switch(r){case"error":throw new Error(`Plugin conflict: "${e.newPlugin}" tried to register ${e.type} "${e.name}" already registered by "${e.existingPlugin}"`);case"warn":return console.warn(`Plugin conflict: "${e.newPlugin}" tried to register ${e.type} "${e.name}" already registered by "${e.existingPlugin}". Skipping.`),!1;case"override":return console.info(`Plugin "${e.newPlugin}" is overriding ${e.type} "${e.name}" previously registered by "${e.existingPlugin}"`),!0;case"skip":return!1}}function Pt(e){const r=[];if(e.components){for(const t of Object.keys(e.components))if(Fe(t)){const n=W.components.get(t);n&&n!==e.name&&r.push({type:"component",name:t,existingPlugin:n,newPlugin:e.name})}}if(e.fieldValidators)for(const[t,o]of Object.entries(e.fieldValidators))for(const n of Object.keys(o)){const u=W.fieldValidators.get(t)?.get(n);ar(t,n)&&u&&u!==e.name&&r.push({type:"fieldValidator",name:`${t}:${n}`,existingPlugin:u,newPlugin:e.name})}if(e.formValidators)for(const t of Object.keys(e.formValidators)){const o=sr(t),n=W.formValidators.get(t);o&&n&&n!==e.name&&r.push({type:"formValidator",name:t,existingPlugin:n,newPlugin:e.name})}if(e.submissionHandlers)for(const t of Object.keys(e.submissionHandlers)){const o=Lt(t),n=W.submissionHandlers.get(t);o&&n&&n!==e.name&&r.push({type:"submissionHandler",name:t,existingPlugin:n,newPlugin:e.name})}return r}function ue(e,r,t,o,n,a,u,c){for(const s of Object.keys(e)){let m;if(c?m=n.find(l=>l.type==="fieldValidator"&&l.name===`${c}:${s}`):e===o.components?m=n.find(l=>l.type==="component"&&l.name===s):e===o.formValidators?m=n.find(l=>l.type==="formValidator"&&l.name===s):e===o.submissionHandlers&&(m=n.find(l=>l.type==="submissionHandler"&&l.name===s)),pr(m||null,a,u))if(c){const l=r.get(c)||new Map;l.set(s,o.name),r.set(c,l),t(s,e[s])}else r.set(s,o.name),t(s,e[s])}}function Ht(e,r){const t=r?.conflictResolution||"error";if(Q.has(e.name)){const n={type:"plugin",name:e.name,existingPlugin:e.name,newPlugin:e.name};if(!pr(n,t,r?.onConflict))return}const o=Pt(e);if(e.components&&ue(e.components,W.components,Ve,e,o,t,r?.onConflict),e.fieldValidators)for(const[n,a]of Object.entries(e.fieldValidators))ue(a,W.fieldValidators,(u,c)=>or(n,u,c),e,o,t,r?.onConflict,n);e.formValidators&&ue(e.formValidators,W.formValidators,nr,e,o,t,r?.onConflict),e.submissionHandlers&&ue(e.submissionHandlers,W.submissionHandlers,ze,e,o,t,r?.onConflict),e.setup&&e.setup(),Q.set(e.name,e)}function qt(e,r=!1){const t=Q.get(e);if(!t)return!1;if(t.cleanup&&t.cleanup(),r){if(t.components)for(const o of Object.keys(t.components))W.components.delete(o);if(t.fieldValidators)for(const[o,n]of Object.entries(t.fieldValidators)){const a=W.fieldValidators.get(o);if(a){for(const u of Object.keys(n))a.delete(u);a.size===0&&W.fieldValidators.delete(o)}}if(t.formValidators)for(const o of Object.keys(t.formValidators))W.formValidators.delete(o);if(t.submissionHandlers)for(const o of Object.keys(t.submissionHandlers))W.submissionHandlers.delete(o)}return Q.delete(e),!0}function Tt(e){return Q.get(e)}function Bt(){return Array.from(Q.values())}function Ut(e){return Q.has(e)}function Wt(e){for(const[r,t]of Object.entries(e))Ve(r,t)}const gr=i.memo(({field:e,value:r,handleChange:t,handleError:o})=>{const n=Fe(e.type),a=i.useCallback((c,s)=>t(e.name,c,s),[t,e.name]),u=i.useCallback(c=>o?.(e.name,c),[o,e.name]);return n?g.jsx(n,{field:e,value:r,onChange:a,onError:u}):null},(e,r)=>e.field===r.field&&e.value===r.value&&e.handleChange===r.handleChange&&e.handleError===r.handleError);gr.displayName="FieldWrapper";const hr=(e,r,t,o)=>g.jsx(gr,{field:e,value:r[e.name],handleChange:t,handleError:o},e.name),br=i.memo(({groupName:e,isOpen:r,fields:t,valuesMap:o,handleChange:n,handleError:a,toggleGroup:u,t:c})=>{const s=i.useCallback(()=>u(e),[u,e]),{formStyle:m,fieldStyle:l}=A(),d=i.useMemo(()=>({border:"1px solid var(--reactaform-border-color, #bbb)",padding:"var(--reactaform-fieldset-padding, 0.5em)",borderRadius:"var(--reactaform-border-radius, 4px)",marginBottom:"var(--reactaform-space, 8px)",...m?.fieldset||{},...l?.fieldset||{}}),[m,l]),f=i.useMemo(()=>({fontWeight:"bold",cursor:"pointer",display:"flex",justifyContent:"space-between",alignItems:"center",padding:"0 var(--reactaform-space, 8px)",color:"var(--reactaform-text-color, inherit)",...m?.legend||{},...l?.legend||{}}),[m,l]);return g.jsxs("fieldset",{style:d,children:[g.jsxs("legend",{onClick:s,style:f,children:[g.jsx("span",{children:c(e)}),g.jsx("span",{children:r?"▼":"▶"})]}),r&&t.map(p=>g.jsx("div",{children:hr(p,o,n,a)},p.name))]})});br.displayName="FieldGroup";const _t=(e,r,t,o,n,a,u,c,s)=>{const m=r.slice(0,c).filter(p=>u[p.name]),d=Lr(m).groups,f=[];return d.forEach(p=>{if(p.name){const y=e[p.name]??!0;f.push(g.jsx(br,{groupName:p.name,isOpen:y,fields:p.fields,valuesMap:t,handleChange:n,handleError:a,toggleGroup:s,t:o},p.name))}else p.fields.forEach(y=>f.push(g.jsx("div",{children:hr(y,t,n,a)},y.name)))}),f},Kt=e=>{const r={};return e.forEach(t=>{r[t.name]=!1}),r},Oe=(e,r,t,o)=>{const n=r[e];if(!n||!n.children)return;const a=t[e],u=a!=null?String(a):"",c=n.children[u];!c||!Array.isArray(c)||c.forEach(s=>{typeof s=="string"&&(o[s]=!0,Oe(s,r,t,o))})},yr=(e,r,t)=>{const o=r[e];!o||!o.children||Object.values(o.children).filter(Array.isArray).flat().forEach(n=>{typeof n=="string"&&n in t&&(t[n]=!1,yr(n,r,t))})},Jt=(e,r,t,o)=>{const n={...t};return e.forEach(a=>{(!a.parents||Object.keys(a.parents).length===0)&&(n[a.name]=!0,Oe(a.name,o,r,n))}),n},Gt=(e,r,t,o,n)=>{const a={...e};if(yr(o,r,a),n!=null){const u=r[o];if(u&&u.children){const c=String(n),s=u.children[c];s&&Array.isArray(s)&&s.forEach(m=>{typeof m=="string"&&(a[m]=!0,Oe(m,r,t,a))})}}return a};async function Yt(e,r,t,o,n){const a=Object.values(n).filter(Boolean);if(a.length>0)return{success:!1,message:o("Please fix validation errors before submitting."),errors:a};const u={...t},c=[];if(e&&Array.isArray(e.properties))for(const m of e.properties){const l=m.name,d=u[l];if(d==null)continue;const f=m.type;try{if(f==="int"||f==="number"||f==="float"){const p=String(d).trim();if(p==="")u[l]=0;else{const y=Number(p);isNaN(y)?c.push(o("Invalid number format for field {{1}}",m.displayName||l)):u[l]=y}}else if(f==="int-array"||f==="float-array"){const p=String(d).split(",").map(b=>b.trim()).filter(Boolean),y=[];let h=!1;for(const b of p){const v=Number(b);if(isNaN(v)){c.push(o("Invalid number {{1}} in array for field {{2}}",b,m.displayName||l)),h=!0;break}y.push(v)}h||(u[l]=y)}}catch(p){c.push(o("Error processing field {{1}}: {{2}}",m.displayName||l,p instanceof Error?p.message:String(p)))}}if(c.length>0)return{success:!1,message:o("Data transformation errors occurred."),errors:c};const s=await Nr(e,u,o);if(s&&s.length>0)return{success:!1,message:o("Validation failed"),errors:s};if(e&&typeof e.submitHandlerName=="string"){const m=Ot(e.submitHandlerName);if(m)try{const l=await m(e,r?.name??null,u,o);if(l&&l.length>0)return{success:!1,message:o("Submission failed"),errors:Array.isArray(l)?l:[String(l)]}}catch(l){return{success:!1,message:o("Submission handler error occurred"),errors:[String(l instanceof Error?l.message:l)]}}}return{success:!0,message:o("Form submitted successfully."),data:u}}const xr=({definition:e,instance:r,chunkSize:t=50,chunkDelay:o=50})=>{const{properties:n,displayName:a}=e,u=A(),{t:c,formStyle:s,language:m}=u,l={...u,definitionName:e?.name??u.definitionName},[d,f]=i.useState("en"),[p,y]=i.useState([]),[h,b]=i.useState({}),[v,x]=i.useState({}),[C,M]=i.useState({}),[w,S]=i.useState({}),[k,$]=i.useState({}),[j,E]=i.useState(null),[N,D]=i.useState(null),[q,te]=i.useState(0),[me,Y]=i.useState(!1),[de,G]=i.useState(!1),[z,I]=i.useState(r.name||""),V=i.useRef(r),B=i.useRef(!1);i.useEffect(()=>{const F=Object.fromEntries(n.map(L=>[L.name,{...L,children:{}}]));n.forEach(L=>{L.parents&&Object.entries(L.parents).forEach(([ne,be])=>{const oe=F[ne];oe&&be.forEach(Cr=>{oe.children||(oe.children={});const Le=String(Cr);oe.children[Le]=[...oe.children[Le]||[],L.name]})})}),Or(n,F);const H=Object.values(F),U={};H.forEach(L=>{if(L.type==="unit"){const ne=typeof L.defaultValue=="number"?String(L.defaultValue):"",be=typeof L.defaultUnit=="string"?L.defaultUnit:String(L.defaultUnit??"m");U[L.name]=[ne,be]}else U[L.name]=L.defaultValue}),V.current=r,Object.keys(r.values).forEach(L=>{F[L]!==void 0&&(U[L]=r.values[L])});const K=Kt(H),J={};H.forEach(L=>{L.group&&!(L.group in J)&&(J[L.group]=!0)});const ee=requestAnimationFrame(()=>{y(H),b(F),x(U),M(Jt(H,U,K,F)),S(J),Y(!0),I(r.name)});return()=>cancelAnimationFrame(ee)},[n,r,e]),i.useEffect(()=>{if(!me||q>=p.length)return;const F=setTimeout(()=>{te(H=>Math.min(H+t,p.length))},o);return()=>clearTimeout(F)},[me,q,p.length,t,o]);const pe=i.useCallback((F,H,U)=>{E(null),D(null),x(K=>{const J={...K,[F]:H},ee=h[F];return ee&&["checkbox","dropdown","multi-select","radio","switch"].includes(ee.type)&&M(ne=>Gt(ne,h,J,F,String(H))),J}),$(K=>U?{...K,[F]:U}:Object.fromEntries(Object.entries(K).filter(([ee])=>ee!==F)))},[h,E,D]);i.useEffect(()=>{let F=0;return F=requestAnimationFrame(()=>{m!==d&&(f(m||"en"),E(null),D(null))}),()=>cancelAnimationFrame(F)},[m,d]),i.useEffect(()=>{let F=0;return F=requestAnimationFrame(()=>{if(B.current){B.current=!1,V.current=r,I(r.name||"");return}V.current=r,E(null),D(null),I(r.name||"")}),()=>cancelAnimationFrame(F)},[r,r.name]);const ie=i.useCallback((F,H)=>{$(U=>H?{...U,[F]:String(H)}:Object.fromEntries(Object.entries(U).filter(([J])=>J!==F)))},[]),ge=async()=>{B.current=!0;const F=V.current?.name;V.current.name=z;const H=await Yt(e,V.current,v,c,k),U=typeof H.message=="string"?H.message:String(H.message),K=Object.values(H.errors??{}).join(`
288
- `);E(K?U+`
289
- `+K:U),D(H.success),H.success||(V.current.name=F??V.current.name,I(F??""))},he=F=>{S(H=>({...H,[F]:!H[F]}))},X=i.useMemo(()=>Object.values(k).some(Boolean),[k]);return g.jsx(ke.Provider,{value:l,children:g.jsxs("div",{style:s.container,children:[a&&g.jsx("h2",{style:s.titleStyle,children:c(a)}),j&&g.jsxs("div",{role:"status",style:{marginBottom:12,padding:12,borderRadius:6,backgroundColor:N?"rgba(76, 175, 80, 0.12)":"rgba(225, 29, 72, 0.06)",border:`1px solid ${N?"rgba(76,175,80,0.3)":"rgba(225,29,72,0.12)"}`,color:N?"var(--reactaform-success-color, #4CAF50)":"var(--reactaform-error-color, #e11d48)",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[g.jsx("div",{style:{whiteSpace:"pre-wrap",flex:1},children:j}),g.jsx("button",{onClick:()=>{E(null),D(null)},"aria-label":c("Dismiss"),style:{marginLeft:12,background:"transparent",border:"none",cursor:"pointer",color:"inherit",fontSize:16,lineHeight:1},children:"×"})]}),r&&g.jsx(er,{name:z,onChange:F=>{I(F),E(null),D(null)}}),g.jsxs(g.Fragment,{children:[_t(w,p,v,c,pe,ie,C,q,he),q<p.length&&g.jsx("div",{style:{fontSize:"0.9em",color:"var(--reactaform-text-muted, #666)"}})]}),g.jsx("button",{onClick:ge,disabled:X,onMouseEnter:()=>G(!0),onMouseLeave:()=>G(!1),style:{padding:"var(--reactaform-button-padding, var(--reactaform-space) 12px)",backgroundColor:X?"var(--reactaform-button-disabled-bg, #cccccc)":"var(--reactaform-button-bg, var(--reactaform-success-color))",color:"var(--reactaform-button-text, #ffffff)",border:"none",borderRadius:"4px",cursor:X?"var(--reactaform-button-disabled-cursor, not-allowed)":"pointer",fontSize:"var(--reactaform-button-font-size, 14px)",fontWeight:"var(--reactaform-button-font-weight, 500)",boxShadow:"var(--reactaform-button-shadow, none)",marginTop:"var(--reactaform-button-margin-top, 0.5em)",transition:"opacity 0.2s ease",opacity:X?"var(--reactaform-button-disabled-opacity, 0.6)":de?"var(--reactaform-button-hover-opacity, 0.9)":"1"},children:c("Submit")})]})})};dr();const Xt=(e,r=!1)=>({container:{padding:"var(--reactaform-space-sm, 8px)",margin:"0 auto",backgroundColor:"transparent",borderRadius:0,color:"var(--reactaform-color-text)",fontFamily:e?.fontFamily||"var(--reactaform-font-family, system-ui, -apple-system, sans-serif)",boxSizing:"border-box",minHeight:e?.minHeight??"0",...e?.width?{width:e.width,overflowX:"auto"}:{maxWidth:"100%"},...e?.height?{height:e.height,overflowY:"auto"}:{}},buttonStyle:{padding:"var(--reactaform-space-sm, 8px) var(--reactaform-space-md, 16px)",backgroundColor:"var(--reactaform-color-primary)",color:"var(--reactaform-color-background)",border:"1px solid var(--reactaform-color-primary)",borderRadius:"var(--reactaform-border-radius, 6px)",cursor:"pointer",fontSize:e?.fontSize||"1rem",fontWeight:"600",transition:"all 0.2s ease",boxShadow:"var(--reactaform-shadow-small, 0 1px 3px rgba(0, 0, 0, 0.12))"},titleStyle:{marginBottom:"var(--reactaform-space-lg, 24px)",color:"var(--reactaform-color-text)",fontSize:typeof e?.fontSize=="number"?`${e.fontSize*1.5}px`:"1.5rem",fontWeight:"700",lineHeight:"1.2",textAlign:"left"}}),Zt=(e,r=!1)=>{const t={color:"var(--reactaform-color-text)",fontFamily:e?.fontFamily||"var(--reactaform-font-family, inherit)",transition:"all 0.2s ease",outline:"none",width:"100%",boxSizing:"border-box"};return{container:{fontFamily:e?.fontFamily||"var(--reactaform-font-family, inherit)",fontSize:e?.fontSize||"var(--reactaform-font-size, 1rem)",width:"100%",maxWidth:e?.width||"100%",marginBottom:"var(--reactaform-space-md, 16px)"},label:{display:"block",marginBottom:"var(--reactaform-space-xs, 4px)",fontWeight:"500",color:"var(--reactaform-color-text)",fontSize:"var(--reactaform-font-size, 1rem)",fontFamily:e?.fontFamily||"var(--reactaform-font-family, inherit)"},input:t,textInput:t,optionInput:t,select:{...t,cursor:"pointer",backgroundRepeat:"no-repeat",backgroundPosition:"right 8px center",backgroundSize:"16px",paddingRight:"32px",backgroundImage:`url("data:image/svg+xml;utf8,<svg
300
+ `,ve=q.createContext(void 0),A=()=>{const e=q.useContext(ve);if(!e)throw new Error("❌ useReactaFormContext must be used within a <ReactaFormProvider>");return e};class ne{map={};register(r,t){if(!r||typeof r!="string")throw new Error("Registry key must be a non-empty string");this.map[r]=t}get(r){if(!(!r||typeof r!="string"))return this.map[r]}has(r){return!r||typeof r!="string"?!1:r in this.map}list(){return Object.keys(this.map)}entries(){return Object.entries(this.map)}values(){return Object.values(this.map)}size(){return Object.keys(this.map).length}unregister(r){return r in this.map?(delete this.map[r],!0):!1}clear(){this.map={}}registerAll(r){Array.isArray(r)?r.forEach(([t,n])=>{t&&typeof t=="string"&&this.register(t,n)}):r&&typeof r=="object"&&Object.entries(r).forEach(([t,n])=>{t&&typeof t=="string"&&this.register(t,n)})}getOrDefault(r,t){const n=this.get(r);return n!==void 0?n:t}}const Je=typeof process<"u"&&process.env.NODE_ENV==="test";function Ge(e,r=300,t){const n=q.useRef(),o=q.useRef(e),a=q.useRef(null),i=t?.leading===!0,f=t?.trailing!==!1;q.useEffect(()=>{o.current=e},[e]),q.useEffect(()=>()=>{n.current&&clearTimeout(n.current)},[]);const s=p=>{o.current(...p)},u=q.useCallback(()=>{n.current&&(clearTimeout(n.current),n.current=void 0),a.current=null},[]),c=q.useCallback(()=>{n.current&&f&&a.current&&(clearTimeout(n.current),n.current=void 0,s(a.current),a.current=null)},[f]);return{callback:q.useCallback((...p)=>{if(Je){s(p);return}const g=i&&!n.current;a.current=p,g&&s(p),n.current&&clearTimeout(n.current),n.current=setTimeout(()=>{n.current=void 0,f&&a.current&&(s(a.current),a.current=null)},r)},[i,f,r]),cancel:u,flush:c}}const Ir={checkbox:!1,switch:!1,radio:!1,dropdown:!1,"multi-selection":!1,color:!1,rating:!1,file:!1,image:!1,separator:!1,string:{wait:200},text:{wait:200},multiline:{wait:200},email:{wait:200},password:{wait:200},phone:{wait:200},url:{wait:200},int:{wait:200},float:{wait:200},unit:{wait:100},date:{wait:150},time:{wait:150},slider:{wait:100,leading:!0,trailing:!0},stepper:{wait:100,leading:!0,trailing:!0}},R={field:"reactaform-field",label:"reactaform-label",input:"reactaform-input",textInput:"reactaform-input--text",inputNumber:"reactaform-input--number",inputSelect:"reactaform-select",rangeInput:"reactaform-input--range",button:"reactaform-button"},T=(...e)=>{const r=[];for(const t of e)t&&(typeof t=="string"?r.push(t):typeof t=="object"&&Object.entries(t).forEach(([n,o])=>{o&&r.push(n)}));return r.join(" ")};function oe(e){return e.toLowerCase().includes("dark")}function Mr(e){if(!e)return!1;const r=e.trim();let t=0,n=0,o=0;if(r.startsWith("#")){const i=r.substring(1);i.length===3||i.length===4?(t=parseInt(i[0]+i[0],16),n=parseInt(i[1]+i[1],16),o=parseInt(i[2]+i[2],16)):(i.length===6||i.length===8)&&(t=parseInt(i.substring(0,2),16),n=parseInt(i.substring(2,4),16),o=parseInt(i.substring(4,6),16))}else if(r.startsWith("rgb")){const i=r.match(/\d+(\.\d+)?/g);i&&i.length>=3&&(t=parseFloat(i[0]),n=parseFloat(i[1]),o=parseFloat(i[2]))}else return!1;return(t*299+n*587+o*114)/1e3<128}const Rr=()=>d.jsxs("svg",{width:"1em",height:"1em",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[d.jsx("path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"}),d.jsx("line",{x1:"12",y1:"17",x2:"12.01",y2:"17"})]}),$r=({content:e,size:r="medium",animation:t=!0})=>{const{t:n,theme:o,formStyle:a,fieldStyle:i}=A(),[f,s]=l.useState(!1),[u,c]=l.useState({x:0,y:0}),[m,p]=l.useState(!1),g=l.useRef(null),w=l.useRef(null),x=l.useRef(null),h=l.useId(),C=oe(o),[I,M]=l.useState(void 0);l.useLayoutEffect(()=>{if(!g.current)return;const S="rgba(255,255,255,0.1)",y=getComputedStyle(g.current).getPropertyValue("--reactaform-primary-bg").trim();if(y&&typeof CSS<"u"&&CSS.supports?.("color: color-mix(in srgb, red, blue)")){const k=Mr(y)?"black":"white";M(`color-mix(in srgb, var(--reactaform-primary-bg) 85%, ${k} 15%)`)}else M(S)},[]);const $=l.useMemo(()=>{const b={icon:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:"1.2em",height:"1.2em",fontSize:"0.9em",fontWeight:"bold",borderRadius:"50%",backgroundColor:I??(C?"rgba(255,255,255,0.1)":"rgba(0,0,0,0.1)"),color:`var(--reactaform-text-color, ${C?"#f0f0f0":"#333"})`,border:`1px solid ${C?"rgba(255,255,255,0.2)":"rgba(0,0,0,0.1)"}`,cursor:"pointer",transition:t?"all 0.2s ease":void 0,marginLeft:"0.3em"},text:{...{small:{padding:"4px 8px",fontSize:"11px",maxWidth:"200px"},medium:{padding:"6px 10px",fontSize:"12px",maxWidth:"240px"},large:{padding:"8px 12px",fontSize:"13px",maxWidth:"280px"}}[r],position:"fixed",backgroundColor:`var(--reactaform-tooltip-color-bg, ${C?"rgba(45,45,45,0.95)":"rgba(34, 10, 170, 0.92)"})`,color:`var(--reactaform-tooltip-color, ${C?"#f0f0f0":"#fff"})`,borderRadius:"6px",border:`1px solid ${C?"rgba(255,255,255,0.1)":"rgba(0,0,0,0.1)"}`,boxShadow:C?"0 8px 16px rgba(0,0,0,0.4)":"0 6px 18px rgba(0,0,0,0.12)",zIndex:2147483647,opacity:0,pointerEvents:"none",transition:t?"opacity 0.2s ease":void 0,whiteSpace:"normal",wordBreak:"break-word",boxSizing:"border-box"},textVisible:{opacity:1,pointerEvents:"auto"}},y=(E,N,F)=>{const H=E?.[N];return(F&&H?H[F]:void 0)??{}};return{icon:{...b.icon,...y(a,"tooltip","icon"),...y(i,"tooltip","icon")},text:{...b.text,...y(a,"tooltip","text"),...y(i,"tooltip","text")},textVisible:b.textVisible}},[C,r,t,a,i,I]);l.useLayoutEffect(()=>{if(!f||!g.current||!w.current){p(!1);return}const S=g.current.getBoundingClientRect();x.current=S;const b=w.current.getBoundingClientRect(),y=8,k=window.innerWidth,E=window.innerHeight,N=-4;let F=S.right+y,V=S.top+S.height/2-b.height/2+N;F+b.width>k-y&&(F=S.left-y-b.width),F=Math.max(y,Math.min(F,k-b.width-y)),V=Math.max(y,Math.min(V,E-b.height-y)),c({x:F,y:V}),p(!0);const H=g.current.closest("[data-reactaform-theme]"),G=document.getElementById("popup-root");if(H&&G){const ae=getComputedStyle(H);G.style.setProperty("--reactaform-tooltip-color-bg",ae.getPropertyValue("--reactaform-tooltip-color-bg")),G.style.setProperty("--reactaform-tooltip-color",ae.getPropertyValue("--reactaform-tooltip-color"))}},[f]);const v=typeof document<"u"?document.getElementById("popup-root"):null,j=d.jsx("div",{ref:w,"data-tooltip-id":h,style:{...$.text,transform:m?"translateY(0) scale(1)":"translateY(-4px) scale(0.98)",transition:"opacity 120ms ease, transform 120ms ease, visibility 120ms ease",width:240,...m?$.textVisible:{},top:u.y,left:u.x},children:n(e)});return d.jsxs(d.Fragment,{children:[d.jsx("span",{"data-testid":"tooltip-icon",ref:g,"aria-describedby":f?h:void 0,onMouseEnter:()=>s(!0),onMouseLeave:()=>s(!1),style:{...$.icon},children:d.jsx(Rr,{})}),f&&(v?le.createPortal(j,v):j)]})},Ye=l.memo($r),pe=l.memo(({field:e,error:r,children:t,showLabel:n=!0})=>{const{t:o}=A(),a=e.labelLayout==="column-center"?"center":"left",i=l.useMemo(()=>{const u={display:"flex",flexDirection:"column",gap:"var(--reactaform-label-gap, 4px)"};return u["--label-align"]=a,u},[a]),f=l.useMemo(()=>({textAlign:a,width:"100%",minWidth:"unset",display:"block",marginBottom:"10px"}),[a]),s=l.useMemo(()=>({display:"flex",alignItems:"center",gap:"var(--reactaform-inline-gap, 8px)",width:"100%"}),[]);return d.jsxs("div",{className:`${R.field} column-layout`,style:i,children:[n&&d.jsx("label",{id:`${e.name}-label`,className:R.label,htmlFor:e.name,style:f,children:o(e.displayName)}),d.jsxs("div",{style:s,children:[d.jsx("div",{style:{flex:1,minWidth:0},children:t}),e.tooltip&&d.jsx(Ye,{content:e.tooltip})]}),r&&d.jsx(we,{id:`${e.name}-error`,children:r})]})});pe.displayName="ColumnFieldLayout";const Xe=l.memo(({field:e,error:r,children:t,rightAlign:n=!1})=>{const{t:o}=A(),a=l.useMemo(()=>({display:"flex",alignItems:"center",gap:"3px"}),[]);return d.jsxs("div",{className:`${R.field} row-layout`,children:[d.jsx("label",{id:`${e.name}-label`,className:R.label,htmlFor:e.name,children:o(e.displayName)}),d.jsxs("div",{children:[d.jsxs("div",{style:a,children:[n?d.jsx("div",{style:{display:"flex",flex:1,justifyContent:"flex-end"},children:t}):t,e.tooltip&&d.jsx(Ye,{content:e.tooltip})]}),r&&d.jsx(we,{id:`${e.name}-error`,children:r})]})]})});Xe.displayName="RowFieldLayout";const z=l.memo(({field:e,error:r,children:t,rightAlign:n=!1})=>e.labelLayout==="column-left"||e.labelLayout==="column-center"?d.jsx(pe,{field:e,error:r,showLabel:!0,children:t}):e.type==="checkbox"||e.type==="switch"?d.jsx(pe,{field:e,error:r,showLabel:!1,children:t}):d.jsx(Xe,{field:e,error:r,rightAlign:n,children:t}));z.displayName="StandardFieldLayout";const we=l.memo(({children:e,id:r})=>{const t=l.useMemo(()=>({color:"var(--reactaform-error-color)",fontSize:"13px",marginTop:"4px",fontWeight:"var(--reactaform-font-weight)",display:"flex",flex:1,justifyContent:"flex-start",alignItems:"flex-start"}),[]);return d.jsx("div",{id:r,style:t,children:e})});we.displayName="ErrorDiv";const Qe=l.memo(({name:e,onChange:r})=>{const{t}=A();return d.jsxs("div",{style:{marginBottom:16},children:[d.jsxs("div",{style:{display:"grid",gridTemplateColumns:"1fr 2fr",gap:12,alignItems:"center"},children:[d.jsx("label",{htmlFor:"instance-name-input",style:{margin:0,fontSize:"0.95em",fontWeight:500,color:"var(--reactaform-text-color, #333)"},children:t("Instance Name")}),d.jsx("input",{id:"instance-name-input",type:"text",value:e,className:T(R.input,R.textInput),onChange:n=>r(n.target.value),placeholder:t("Enter instance name")})]}),d.jsx("div",{style:{height:"1px",backgroundColor:"var(--reactaform-separator, #e6e6e6)",marginTop:12,marginBottom:12}})]})});Qe.displayName="InstanceName";class Ar extends ne{registerInCategory(r,t,n){this.get(r)||this.register(r,{});const o=this.get(r);o[t]=n}getFromCategory(r,t){return this.get(r)?.[t]}listFromCategory(r){return Object.keys(this.get(r)||{})}listCategories(){return this.list()}}const Ze=new ne,er=new Ar,Dr=new ne;function rr(e,r){Ze.register(e,r)}function tr(e,r,t){er.registerInCategory(e,r,t)}function nr(e,r){return er.getFromCategory(e,r)||null}function or(e){return Ze.get(e)||null}function Vr(e){return Dr.get(e)||null}function Pr(e){return(typeof e=="object"||typeof e=="function")&&e!==null&&typeof e.then=="function"}const Pe=new Map,ze=new Map;function Se(e,r,t,n){if(!r||!r.validationHandlerName)return null;let o,a;if(typeof r.validationHandlerName=="string")o=e,a=r.validationHandlerName;else if(Array.isArray(r.validationHandlerName)){const[s,u]=r.validationHandlerName;if(u)o=s,a=u;else if(s)o=e,a=s;else return null}else return null;const i=`${o}:${a}`;let f=Pe.get(i);if(f===void 0&&(f=nr(o,a)||null,Pe.set(i,f)),f)try{return f(r.name,t,n)||null}catch(s){return String(s instanceof Error?s.message:s)}return null}function zr(e,r,t,n){return Se(e,r,t,n)}function P(e,r,t,n){const o=Vr(r.type);if(o){const a=o(r,t,n);if(a)return a}else if(String(t??"").trim()==="")return r.required?n("Value required"):null;return Se(e,r,t,n)}async function Or(e,r,t){if(!e||typeof e.validationHandlerName!="string")return null;const n=e.validationHandlerName;let o=ze.get(n);if(o===void 0&&(o=or(n)||null,ze.set(n,o)),o)try{const a=o(r,t);return Pr(a)?await a||null:a||null}catch(a){return[String(a instanceof Error?a.message:a)]}return null}function Y(e){return typeof e=="object"&&e!==null}function Ce(e){if(!Y(e))return!1;const r=e;return typeof r.name=="string"&&typeof r.displayName=="string"}function ar(e){if(!Y(e))return!1;const r=e;return typeof r.name!="string"||typeof r.version!="string"||!Array.isArray(r.properties)?!1:r.properties.every(t=>Ce(t))}function ge(e){try{return typeof File<"u"&&e instanceof File}catch{const r=Y(e)?e:void 0;return!!r&&typeof r.name=="string"&&typeof r.size=="number"}}function Lr(e,r,t={}){try{const{includeMetadata:n=!1,dateFormat:o="iso",fileHandling:a="metadata",prettify:i=!1,excludeFields:f=[],includeOnlyFields:s=[]}=t;if(!e||typeof e!="object")return{success:!1,error:"Instance must be a valid object"};const u=[],c=[],m={},g=(ar(r)||Y(r)&&Array.isArray(r.properties)?r.properties:[]).filter(Ce),w=new Map(g.map(h=>[h.name,h]));for(const[h,C]of Object.entries(e)){if(f.includes(h)){c.push(h);continue}if(s.length>0&&!s.includes(h)){c.push(h);continue}if(C===void 0)continue;const I=w.get(h);try{m[h]=Hr(C,I,{dateFormat:o,fileHandling:a})}catch(M){u.push(`Error serializing field '${h}': ${String(M)}`),m[h]=null}}return n&&(m._metadata={serializedAt:new Date().toISOString(),version:(Y(r)?r.version:void 0)||"1.0.0",fieldCount:Object.keys(m).length-1}),{success:!0,data:i?JSON.stringify(m,null,2):JSON.stringify(m),metadata:{fieldCount:Object.keys(m).length,excludedFields:c,warnings:u}}}catch(n){return{success:!1,error:`Serialization failed: ${n instanceof Error?n.message:"Unknown error"}`}}}function Hr(e,r,t={}){const{dateFormat:n="iso",fileHandling:o="metadata"}=t;if(e==null)return null;if(r)switch(r.type){case"date":case"datetime":case"date-time":return Oe(e,n);case"file":return Le(e,o);case"int":case"integer":return typeof e=="string"?parseInt(e,10):e;case"float":case"number":return typeof e=="string"?parseFloat(e):e;case"boolean":return typeof e=="string"?e==="true":!!e;case"int-array":case"float-array":return Array.isArray(e)?e.map(a=>typeof a=="string"?Number(a):a):e;default:return e}return e instanceof Date?Oe(e,n):ge(e)||Array.isArray(e)&&ge(e[0])?Le(e,o):e}function Oe(e,r){let t=null;if(e instanceof Date)t=e;else if(typeof e=="string"){const n=new Date(e);if(!isNaN(n.getTime()))t=n;else return e}else return e;switch(r){case"timestamp":return t.getTime();case"locale":return t.toLocaleString();case"iso":default:return t.toISOString()}}function Le(e,r){return r==="skip"?null:Array.isArray(e)?e.map(t=>He(t,r)):He(e,r)}function He(e,r){if(!ge(e))return e;const t=e;return r==="metadata"?{name:t.name,size:t.size,type:t.type,lastModified:t.lastModified}:{name:t.name,size:t.size,type:t.type,lastModified:t.lastModified,_note:"Base64 encoding requires async implementation"}}function Tr(e,r,t={}){try{const{strict:n=!1,validateTypes:o=!0,preserveUnknownFields:a=!0,dateFormat:i="auto"}=t;if(!e||typeof e!="string")return{success:!1,error:"Serialized data must be a non-empty string"};let f;try{f=JSON.parse(e)}catch(x){return{success:!1,error:`Invalid JSON: ${x instanceof Error?x.message:"Unknown parsing error"}`}}if(!f||typeof f!="object")return{success:!1,error:"Parsed data must be an object"};const s=[],u=[],c={},p=(ar(r)||Y(r)&&Array.isArray(r.properties)?r.properties:[]).filter(Ce),g=new Map(p.map(x=>[x.name,x]));for(const x of p){const h=x.name,C=f[h];if(C===void 0){n&&x.required&&u.push(`Required field '${h}' is missing`);continue}try{c[h]=Br(C,x,{validateTypes:o,dateFormat:i})}catch(I){const M=`Error deserializing field '${h}': ${String(I)}`;n?u.push(M):(s.push(M),c[h]=C)}}if(a)for(const[x,h]of Object.entries(f))!g.has(x)&&x!=="_metadata"&&(n&&s.push(`Unknown field '${x}' preserved`),c[x]=h);const w=u.length>0;return{success:!w,data:c,warnings:s.length>0?s:void 0,validationErrors:w?u:void 0}}catch(n){return{success:!1,error:`Deserialization failed: ${n instanceof Error?n.message:"Unknown error"}`}}}function Br(e,r,t={}){const{validateTypes:n=!0,dateFormat:o="auto"}=t;if(e==null)return e;try{switch(r.type){case"date":case"datetime":case"date-time":return qr(e,o,n);case"int":case"integer":return he(e,n);case"float":case"number":return ye(e,n);case"boolean":return _r(e,n);case"int-array":return Te(e,"integer",n);case"float-array":return Te(e,"number",n);case"string":case"text":case"email":case"url":case"phone":return n?String(e):e;default:return e}}catch(a){if(n)throw new Error(`Type conversion failed: ${String(a)}`);return e}}function Ur(e,r={}){try{const{prettify:t=!0,includeMetadata:n=!0}=r;if(!e||typeof e!="object")return{success:!1,error:"Definition must be a valid object"};const o={...e};return n&&(o._metadata={serializedAt:new Date().toISOString(),version:o.version||"1.0.0",propertyCount:(Array.isArray(o.properties)?o.properties.length:0)||0}),{success:!0,data:t?JSON.stringify(o,null,2):JSON.stringify(o),metadata:{fieldCount:(Array.isArray(o.properties)?o.properties.length:0)||0,excludedFields:[],warnings:[]}}}catch(t){return{success:!1,error:`Definition serialization failed: ${t instanceof Error?t.message:"Unknown error"}`}}}function Wr(e,r={}){try{const{strict:t=!1,validateTypes:n=!0}=r;let o;if(typeof e=="string")try{o=JSON.parse(e)}catch(c){return{success:!1,error:`Invalid JSON for definition: ${c instanceof Error?c.message:"Unknown parsing error"}`}}else if(e&&typeof e=="object")o={...e};else return{success:!1,error:"Input must be a string or object"};const a=[],i=[],f=["name","version","displayName"];for(const c of f)if(!(c in o)||!o[c])if(t)i.push(`Required field '${c}' is missing`);else switch(a.push(`Missing field '${c}', using default`),c){case"name":o.name="unnamed-definition";break;case"version":o.version="1.0.0";break;case"displayName":o.displayName=o.name||"Unnamed Definition";break}const s=Array.isArray(o.properties)?o.properties:null;s?o.properties=s.map((c,m)=>{const p=Y(c)?c:{},g={...p};if(!p.name){const w=`Property at index ${m} missing 'name'`;t?i.push(w):(a.push(`${w}, using 'field_${m}'`),g.name=`field_${m}`)}return p.displayName||(g.displayName=p.name||`Field ${m}`),p.type||(t&&n?i.push(`Property '${p.name||m}' missing 'type'`):(a.push(`Property '${p.name||m}' missing 'type', using 'string'`),g.type="string")),p.defaultValue===void 0&&(g.defaultValue=null),p.required===void 0&&(g.required=!1),g}):t?i.push("Properties must be an array"):(a.push("Properties not found or invalid, using empty array"),o.properties=[]);const u=i.length>0;return{success:!u,data:o,warnings:a.length>0?a:void 0,validationErrors:u?i:void 0}}catch(t){return{success:!1,error:`Definition deserialization failed: ${t instanceof Error?t.message:"Unknown error"}`}}}function qr(e,r,t){if(e instanceof Date)return e;if(typeof e=="number"){const n=new Date(e);if(t&&isNaN(n.getTime()))throw new Error(`Invalid timestamp: ${e}`);return n}if(typeof e=="string"){const n=new Date(e);if(t&&isNaN(n.getTime()))throw new Error(`Invalid date string: ${e}`);return n}if(t)throw new Error(`Cannot convert ${typeof e} to Date`);return e}function he(e,r){if(typeof e=="number"){if(Number.isInteger(e))return e;if(r)throw new Error(`Number ${e} is not an integer`);return Math.floor(e)}if(typeof e=="string"){const t=e.trim();if(t===""){if(r)throw new Error("Cannot convert empty string to integer");return e}const n=parseInt(t,10);if(r&&isNaN(n))throw new Error(`Cannot convert "${e}" to integer`);return n}if(r)throw new Error(`Cannot convert ${typeof e} to integer`);return e}function ye(e,r){if(typeof e=="number"){if(r&&!isFinite(e))throw new Error(`Number ${e} is not finite`);return e}if(typeof e=="string"){const t=e.trim();if(t===""){if(r)throw new Error("Cannot convert empty string to number");return e}const n=parseFloat(t);if(r&&(isNaN(n)||!isFinite(n)))throw new Error(`Cannot convert "${e}" to number`);return n}if(r)throw new Error(`Cannot convert ${typeof e} to number`);return e}function _r(e,r){if(typeof e=="boolean")return e;if(typeof e=="string"){const t=e.toLowerCase();if(t==="true"||t==="1")return!0;if(t==="false"||t==="0")return!1;if(r)throw new Error(`Cannot convert "${e}" to boolean`)}if(typeof e=="number")return!!e;if(r)throw new Error(`Cannot convert ${typeof e} to boolean`);return e}function Te(e,r,t){if(!Array.isArray(e)){if(typeof e=="string")return e.split(",").map(o=>o.trim()).filter(Boolean).map(o=>r==="integer"?he(o,t):ye(o,t));if(t)throw new Error(`Expected array, got ${typeof e}`);return e}return e.map((n,o)=>{try{return r==="integer"?he(n,t):ye(n,t)}catch(a){if(t)throw new Error(`Array element ${o}: ${a}`);return n}})}const Kr=(e,r)=>{const t=new Map;let n=null,o=null,a=0;for(const i of e){const f=i.group;if(!f){n=null,o=null;continue}if(f===n)r[i.name].group=o??f;else{if(!t.has(f))t.set(f,1),o=null,r[i.name].group=f;else{const s=t.get(f),u=`${f}(${s})`;t.set(f,s+1),o=u,r[i.name].group=u,a++}n=f}}return a},Jr=(e,r={})=>{const{includeEmpty:t=!0}=r,n=[];let o=null,a=[],i=0;for(const s of e){const u=s.group||null;u!==o?((a.length>0||t)&&(a.length===0&&i++,n.push({name:o,fields:a})),o=u,a=[s]):a.push(s)}(a.length>0||t)&&(a.length===0&&i++,n.push({name:o,fields:a}));const f=Math.max(0,...n.map(s=>s.fields.length));return{groups:n,metadata:{totalGroups:n.length,emptyGroups:i,largestGroup:f}}},de=new Map,ie=new Map,Z=new Set,be=new Map,Gr=async e=>{try{let r={};switch(e.toLowerCase()){case"fr":r=(await Promise.resolve().then(()=>require("./common-DLr0UoG9.js"))).default;break;case"de":r=(await Promise.resolve().then(()=>require("./common-Crb-me6O.js"))).default;break;case"es":r=(await Promise.resolve().then(()=>require("./common-DRIndE7S.js"))).default;break;case"zh-cn":r=(await Promise.resolve().then(()=>require("./common-BeJOG7Z0.js"))).default;break;case"en":r={};break;default:r={}}return{success:!0,translations:r,fromCache:!1}}catch(r){return{success:!1,translations:{},error:`Failed to load common translations for ${e}: ${r}`}}},Yr=async e=>{if(!e)return{success:!1,translations:{},error:"Language is required"};if(!e||e.toLowerCase()==="en")return{success:!0,translations:{},fromCache:!1};const r=e.toLowerCase();if(de.has(r))return{success:!0,translations:de.get(r)||{},fromCache:!0};const t=await Gr(r);return t.success&&(de.set(r,t.translations),be.set(r,{loadedAt:new Date,size:Object.keys(t.translations).length,source:"common"})),t},Xr=async(e,r)=>{if(!e||!r)return{success:!1,translations:{},error:"Both language and localizeName are required"};const t=`${e.toLowerCase()}/${r}`;if(Z.has(t))return{success:!1,translations:{},error:"Previously failed to load",fromCache:!0};if(ie.has(t))return{success:!0,translations:ie.get(t)||{},fromCache:!0};try{let n=r;!r.includes("/")&&!r.includes(".")&&(n=`/locales/${e}/${r}.json`);const o=await fetch(n);if(!o.ok)return o.status===404?(ie.set(t,{}),be.set(t,{loadedAt:new Date,size:0,source:"user"}),{success:!0,translations:{},fromCache:!1}):(Z.add(t),{success:!1,translations:{},error:`HTTP ${o.status}`,fromCache:!1});const a=o.headers.get("content-type")||"";!a.includes("application/json")&&!a.includes("text/json")&&sr()&&console.warn(`Translation file at ${n} has unexpected content-type: ${a}`);const i=await o.text();if(!i){const u="Empty translation file";return Z.add(t),{success:!1,translations:{},error:u}}let f;try{f=JSON.parse(i)}catch(u){const c=`Invalid JSON in translation file: ${u instanceof Error?u.message:String(u)}`;return Z.add(t),{success:!1,translations:{},error:c}}if(!f||typeof f!="object"){const u="Invalid translation file format";return Z.add(t),{success:!1,translations:{},error:u}}const s=Object.fromEntries(Object.entries(f).map(([u,c])=>[u,typeof c=="string"?c:String(c)]));return ie.set(t,s),be.set(t,{loadedAt:new Date,size:Object.keys(s).length,source:"user"}),{success:!0,translations:s,fromCache:!1}}catch(n){const o=`Failed to load user translations: ${n instanceof Error?n.message:"Unknown error"}`;return Z.add(t),{success:!1,translations:{},error:o}}};function sr(){try{if(typeof process<"u"&&process?.env?.NODE_ENV==="development")return!0}catch{}return!1}function Qr(e,r){return r.length===0?e:e.replace(/\{\{(\d+)\}\}/g,(t,n)=>{const o=parseInt(n,10)-1,a=r[o];return a==null?t:String(a)})}const Zr=(e,r,t)=>(n,...o)=>{let a=n,i=!1;return!n||typeof n!="string"?String(n||""):(e.toLowerCase()==="en"?(a=n,i=!0):n in t?(a=t[n],i=!0):n in r?(a=r[n],i=!0):a=n,a=Qr(a,o),!i&&sr()&&console.debug(`Missing translation for "${n}" in language "${e}"`),a)},ke={length:["m","cm","mm","km","in","ft","yd","mi"],area:["m^2","cm^2","mm^2","in^2","ft^2","yd^2"],volume:["L","m^3","cm^3","mL","in^3","ft^3","yd^3"],weight:["kg","g","mg","t","lb","oz"],time:["min","s","h","ms","d"],temperature:["C","F","K"],angle:["deg","rad","rev"]},je={length:{m:"Meter (m)",mm:"Millimeter (mm)",cm:"Centimeter (cm)",km:"Kilometer (km)",in:"Inch (in)",ft:"Foot (ft)",yd:"Yard (yd)",mi:"Mile (mi)"},area:{"m^2":"Square meter (m^2)","mm^2":"Square millimeter (mm^2)","cm^2":"Square centimeter (cm^2)","in^2":"Square inch (in^2)","ft^2":"Square foot (ft^2)","yd^2":"Square yard (yd^2)"},volume:{L:"Liter (L)","cm^3":"Cubic centimeter (cm^3)","m^3":"Cubic meter (m^3)",mL:"Milliliter (mL)","in^3":"Cubic inch (in^3)","ft^3":"Cubic foot (ft^3)","yd^3":"Cubic yard (yd^3)"},weight:{kg:"Kilogram (kg)",g:"Gram (g)",mg:"Milligram (mg)",t:"Tonne (t)",lb:"Pound (lb)",oz:"Ounce (oz)"},time:{s:"Second (s)",min:"Minute (min)",h:"Hour (h)",ms:"Millisecond (ms)",d:"Day (d)",wk:"Week (wk)"},temperature:{C:"Celsius (C)",F:"Fahrenheit (F)",K:"Kelvin (K)"},angle:{deg:"Degree (deg)",rad:"Radian (rad)",rev:"Revolution (rev)"}},Ee={length:{mm:1e3,cm:100,m:1,km:.001,in:100/2.54,ft:100/(2.54*12),yd:100/(2.54*36),mi:1/1609.344},area:{"m^2":1,"mm^2":1e6,"cm^2":1e4,"km^2":1/1e6,"in^2":(100/2.54)**2,"ft^2":(100/(2.54*12))**2,"yd^2":(100/(2.54*36))**2},volume:{"cm^3":1e6,"m^3":1,L:1,mL:1e6,"in^3":(100/2.54)**3,"ft^3":(100/(2.54*12))**3,"yd^3":(100/(2.54*36))**3},weight:{mg:1e6,g:1e3,kg:1,t:.001,lb:1/.45359237,oz:1/.028349523125},time:{ms:1e3,s:1,min:1/60,h:1/3600,d:1/86400,wk:1/604800},temperature:{C:1,F:33.8,K:274.15},angle:{deg:1,rad:Math.PI/180,rev:1/360}},Fe={},et=new Set([...Object.keys(ke),...Object.keys(je),...Object.keys(Ee)]);for(const e of et){const r={},t=ke[e]??[],n=je[e]??{},o=Ee[e]??{};for(const a of t){const i=n[a];r[a]={name:typeof i=="string"?i:String(a),shortName:a,factor:Object.prototype.hasOwnProperty.call(o,a)?o[a]:void 0}}for(const[a,i]of Object.entries(n))if(!r[a]){const f=typeof i=="string"?i:String(a);r[a]={name:f,shortName:a,factor:Object.prototype.hasOwnProperty.call(o,a)?o[a]:void 0}}for(const[a,i]of Object.entries(o))r[a]||(r[a]={name:String(a),shortName:String(a),factor:i});Fe[e]=r}function ir(e,r,t){if(e==="C"){if(r==="F")return t*(9/5)+32;if(r==="K")return t+273.15}else if(e==="F"){if(r==="C")return(t-32)*5/9;if(r==="K")return(t-32)*5/9+273.15}else if(e==="K"){if(r==="C")return t-273.15;if(r==="F")return(t-273.15)*9/5+32}return t}function cr(e){const r=Fe[e];if(!r)return null;const t={},n=[];for(const[a,i]of Object.entries(r))typeof i.factor=="number"&&(t[a]=i.factor),n.push(a);return{default:Object.keys(r)[0]??"",units:n,factors:t}}const rt=Object.freeze(Object.defineProperty({__proto__:null,convertTemperature:ir,dimensionUnitDisplayMap:je,dimensionUnitsMap:ke,dimensonUnitFactorsMap:Ee,getUnitFactors:cr,unitsByDimension:Fe},Symbol.toStringTag,{value:"Module"})),tt=({field:e,value:r=!1,onChange:t,onError:n})=>{const{definitionName:o,t:a}=A(),i=l.useMemo(()=>P(o,e,r,a)??null,[o,e,r,a]);l.useEffect(()=>{n?.(i)},[i,n]);const f=l.useCallback(c=>{t?.(c.target.checked,null)},[t]),s=l.useCallback(c=>{(c.key===" "||c.key==="Space"||c.key==="Spacebar"||c.code==="Space"||c.key==="Enter")&&(c.preventDefault(),t?.(!r,null))},[t,r]),u=e.name;return d.jsx(z,{field:e,rightAlign:!1,error:i,children:d.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%"},children:[d.jsx("label",{className:R.label,htmlFor:u,style:{textAlign:"left",justifyContent:"flex-start"},children:a(e.displayName)}),d.jsx("input",{id:u,"data-testid":"boolean-checkbox",type:"checkbox",checked:r,onChange:f,onKeyDown:s,"aria-checked":r,"aria-invalid":!!i,"aria-describedby":i?`${e.name}-error`:void 0,style:{cursor:"pointer",margin:"8px 0",width:"1.2em",height:"1.2em",verticalAlign:"middle",accentColor:"#0000FF"}})]})})};function W({value:e,onChange:r,onError:t,validate:n}){const o=l.useRef(null),a=l.useRef(null),i=l.useRef(t),[f,s]=l.useState(null);l.useEffect(()=>{i.current=t},[t]),l.useEffect(()=>{const c=String(e??"");if(!(document.activeElement===o.current)){const p=n(c);p!==a.current&&(a.current=p,i.current?.(p??null),s(p)),o.current&&o.current.value!==c&&(o.current.value=c)}},[e,n]);const u=l.useCallback(c=>{const m=c.target.value,p=n(m);p!==a.current&&(a.current=p,s(p),i.current?.(p??null)),r?.(m,p)},[r,n]);return{inputRef:o,error:f,handleChange:u}}const Be=[{label:"Black",value:"#000000"},{label:"White",value:"#ffffff"},{label:"Red",value:"#ff0000"},{label:"Green",value:"#008000"},{label:"Blue",value:"#0000ff"},{label:"Yellow",value:"#ffff00"},{label:"Cyan",value:"#00ffff"},{label:"Magenta",value:"#ff00ff"},{label:"Orange",value:"#ffa500"},{label:"Purple",value:"#800080"},{label:"Brown",value:"#a52a2a"},{label:"Gray",value:"#808080"},{label:"Light Gray",value:"#d3d3d3"},{label:"Pink",value:"#ffc0cb"}],nt=/^#([0-9A-F]{3}){1,2}$/i,ot="#000000",at=e=>nt.test(e),me=e=>{if(!e||!at(e))return ot;const r=e.toLowerCase();return r.length===4?"#"+r.slice(1).split("").map(t=>t+t).join(""):r},st=e=>{const r=parseInt(e.slice(1),16);return{r:r>>16&255,g:r>>8&255,b:r&255}},it=({field:e,value:r,onChange:t,onError:n})=>{const{t:o,definitionName:a}=A(),i=l.useMemo(()=>me(r),[r]),f=l.useCallback(v=>P(a,e,v,o)??null,[a,e,o]),{inputRef:s,error:u,handleChange:c}=W({value:i,onChange:t,onError:n,validate:f}),[m,p]=l.useState(i);l.useEffect(()=>{p(i)},[i]);const g=l.useCallback(v=>{const j=me(v.target.value);p(j),c(v)},[c]),w=l.useCallback(v=>{c({target:{value:v}})},[c]),x=l.useCallback(v=>{const j=me(v.target.value);p(j),w(j)},[w]),C=l.useMemo(()=>new Set(Be.map(v=>v.value)),[]).has(m),{r:I,g:M,b:$}=l.useMemo(()=>st(m),[m]);return d.jsx(z,{field:e,error:u,children:d.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,width:"100%"},children:[d.jsxs("select",{id:e.name,value:m,onChange:x,className:T(R.input,R.inputSelect),"aria-invalid":!!u,children:[Be.map(v=>d.jsx("option",{value:v.value,children:o(v.label)},v.value)),!C&&d.jsxs("option",{value:m,children:["(",I,", ",M,", ",$,")"]})]}),d.jsx("label",{style:{width:"2.5em",height:"1.8em",border:"1px solid #ccc",borderRadius:4,backgroundColor:m,cursor:"pointer",overflow:"hidden",flexShrink:0},children:d.jsx("input",{ref:s,id:`${e.name}-color`,type:"color",defaultValue:m,onChange:g,style:{opacity:0,width:"100%",height:"100%"},"aria-invalid":!!u})})]})})},Ue=e=>{if(!e)return null;const r=new Date(e);return isNaN(r.getTime())?null:r},We=e=>{if(!e)return"";if(/^\d{4}-\d{2}-\d{2}$/.test(e))return Ue(e)?e:"";const t=Ue(e);if(t){const n=t.getUTCFullYear(),o=String(t.getUTCMonth()+1).padStart(2,"0"),a=String(t.getUTCDate()).padStart(2,"0");return`${n}-${o}-${a}`}return""},ct=({field:e,value:r,onChange:t,onError:n})=>{const{t:o,definitionName:a}=A(),i=l.useCallback(m=>P(a,e,m,o)??null,[e,a,o]),f=We(r),{inputRef:s,error:u,handleChange:c}=W({value:f,onChange:t,onError:n,validate:i});return d.jsx(z,{field:e,error:u,children:d.jsx("input",{id:e.name,type:"date",ref:s,defaultValue:We(r),onChange:c,className:T(R.input,R.textInput),...e.minDate?{min:e.minDate}:{},...e.maxDate?{max:e.maxDate}:{},"aria-invalid":!!u,"aria-describedby":u?`${e.name}-error`:void 0})})},lt=({field:e,value:r,onChange:t,onError:n})=>{const{t:o,definitionName:a,theme:i,formStyle:f,fieldStyle:s}=A(),u=l.useRef(null),c=l.useRef(n),[m,p]=l.useState(!1),[g,w]=l.useState(null);l.useEffect(()=>{c.current=n},[n]);const x=l.useCallback(y=>P(a,e,y,o)??null,[e,o,a]),[h,C]=l.useState(null),I=l.useRef(null);l.useEffect(()=>{const y=String(r??"");let k=x(y);if(k&&e.options.length>0){const E=String(e.options[0].value);t?.(E,null),k=null}k!==I.current&&(I.current=k,C(k),c.current?.(k??null))},[r,x,t,e.options]);const M=()=>{if(!u.current)return;const y=u.current.getBoundingClientRect();w({x:y.left,y:y.bottom}),p(k=>!k)},$=y=>{const k=x(y);k!==I.current&&(I.current=k,C(k),c.current?.(k??null)),t?.(y,k),p(!1)},v=l.useMemo(()=>{const y=e.options.find(k=>String(k.value)===String(r));return y?o(y.label):""},[e.options,r,o]),j=(y,k,E)=>{if(!k)return{};const F=y?.[k];return(E&&F?F[E]:void 0)??{}},S=l.useMemo(()=>({height:"var(--reactaform-input-height, 2.5rem)",display:"flex",alignItems:"center",cursor:"pointer",position:"relative",...j(f,"dropdown","control"),...j(s,void 0,"control")}),[f,s]),b=l.useMemo(()=>({position:"absolute",right:"0.7em",top:"50%",transform:"translateY(-50%)",pointerEvents:"none",fontSize:"0.8em",color:"var(--reactaform-text-muted, #999)",...j(f,"dropdown","arrow"),...j(s,void 0,"arrow")}),[f,s]);return d.jsxs("div",{children:[d.jsx(z,{field:e,error:h,children:d.jsxs("div",{ref:u,className:"reactaform-input",style:S,onClick:M,tabIndex:0,role:"combobox","aria-haspopup":"listbox","aria-expanded":m,"aria-invalid":!!h,"aria-describedby":h?`${e.name}-error`:void 0,onKeyDown:y=>{(y.key==="Enter"||y.key===" ")&&(y.preventDefault(),M())},children:[d.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:v}),d.jsx("span",{style:b,"aria-hidden":!0,children:"▼"})]})}),m&&g&&d.jsx(ut,{position:g,options:e.options,selectedValue:String(r),onSelect:$,onClose:()=>p(!1),controlRef:u,theme:i,t:o})]})},ut=({position:e,options:r,selectedValue:t,onSelect:n,onClose:o,controlRef:a,theme:i,t:f})=>{const s=l.useRef(null),[u,c]=l.useState(-1),{formStyle:m,fieldStyle:p}=A(),g=oe(i??"light");l.useLayoutEffect(()=>{if(!a.current)return;const b=a.current.closest("[data-reactaform-theme]"),y=document.getElementById("popup-root");if(b&&y){const k=getComputedStyle(b);y.style.setProperty("--reactaform-secondary-bg",k.getPropertyValue("--reactaform-secondary-bg")),y.style.setProperty("--reactaform-text-color",k.getPropertyValue("--reactaform-text-color")),y.style.setProperty("--reactaform-hover-bg",k.getPropertyValue("--reactaform-hover-bg"))}},[a]);const w=(b,y,k)=>{if(!y)return{};const N=b?.[y];return(k&&N?N[k]:void 0)??{}},x=l.useMemo(()=>({maxHeight:200,overflowY:"auto",background:"var(--reactaform-secondary-bg, #fff)",border:"1px solid var(--reactaform-border-color, #ccc)",borderRadius:4,zIndex:2e3,boxShadow:"var(--reactaform-shadow, 0 2px 8px rgba(0,0,0,0.15))",pointerEvents:"auto",color:"var(--reactaform-text-color, #000)",fontSize:"var(--reactaform-popup-font-size, 0.875rem)",...w(m,"dropdown","popup"),...w(p,void 0,"popup")}),[m,p]),h=l.useMemo(()=>({padding:"6px 8px",cursor:"pointer",display:"flex",alignItems:"center",background:"transparent",color:"var(--reactaform-text-color, #000)",...w(m,"dropdown","option"),...w(p,void 0,"option")}),[m,p]);l.useEffect(()=>{const b=y=>{const k=y.target;!s.current?.contains(k)&&!a.current?.contains(k)&&o()};return document.addEventListener("mousedown",b),()=>document.removeEventListener("mousedown",b)},[o,a]),l.useEffect(()=>{if(s.current&&r.length>0){const b=r.findIndex(y=>String(y.value)===t);requestAnimationFrame(()=>c(b>=0?b:0))}},[r,t]),l.useEffect(()=>{if(!s.current||u<0)return;const b=s.current.querySelector(`#opt-${u}`);b&&requestAnimationFrame(()=>b.focus())},[u]);const C=250,I=200,[M,$]=l.useState(null),[v,j]=l.useState(null);if(l.useEffect(()=>{if(typeof window>"u")return;const b=()=>{let E=e.x,N=e.y,F=C;const V=a?.current;if(V){const H=V.getBoundingClientRect();E=H.left,N=H.bottom,F=Math.max(80,Math.round(H.width))}E=Math.min(E,window.innerWidth-F),N=Math.min(N,window.innerHeight-I),$({left:E,top:N}),j(F)};b(),window.addEventListener("scroll",b,!0),window.addEventListener("resize",b);let y=null;const k=a?.current;return typeof ResizeObserver<"u"&&k&&(y=new ResizeObserver(()=>b()),y.observe(k)),()=>{window.removeEventListener("scroll",b,!0),window.removeEventListener("resize",b),y&&k&&y.unobserve(k)}},[a,e.x,e.y]),typeof window>"u")return null;let S=document.getElementById("popup-root");return S||(S=document.createElement("div"),S.id="popup-root",document.body.appendChild(S)),le.createPortal(d.jsx("div",{ref:s,role:"listbox","aria-activedescendant":u>=0?`opt-${u}`:void 0,style:{position:"fixed",top:M?M.top:e.y,left:M?M.left:e.x,width:v??C,...x},"data-reactaform-theme":i??"light",children:r.map((b,y)=>{const k=String(b.value)===t,E=g?"var(--reactaform-hover-bg, rgba(255,255,255,0.01))":"var(--reactaform-hover-bg, #eee)",N={...h,background:y===u?E:h.background,fontWeight:k?"bold":"normal"};return d.jsx("div",{id:`opt-${y}`,onMouseDown:F=>{F.stopPropagation(),n(String(b.value))},onKeyDown:F=>{const V=r.length;switch(F.key){case"ArrowDown":F.preventDefault(),c(H=>(H+1)%V);break;case"ArrowUp":F.preventDefault(),c(H=>(H-1+V)%V);break;case"Home":F.preventDefault(),c(0);break;case"End":F.preventDefault(),c(V-1);break;case"Enter":case" ":F.preventDefault(),F.stopPropagation(),n(String(b.value));break;case"Escape":F.preventDefault(),o(),a?.current?.focus();break}},tabIndex:y===u?0:-1,role:"option","aria-selected":k,style:N,onMouseEnter:F=>{F.currentTarget.style.background=E,c(y)},onMouseLeave:F=>{F.currentTarget.style.background="transparent",c(V=>V===y?-1:V)},children:f(b.label)},String(b.value))})}),S)},ft=({field:e,value:r,onChange:t,onError:n})=>{const{definitionName:o,t:a}=A(),i=l.useCallback(c=>P(o,e,c,a)??null,[e,o,a]),{inputRef:f,error:s,handleChange:u}=W({value:r,onChange:t,onError:n,validate:i});return d.jsx(z,{field:e,error:s,children:d.jsx("input",{id:e.name,type:"email",defaultValue:String(r??""),ref:f,onChange:u,className:T(R.input,R.textInput),"aria-invalid":!!s,"aria-describedby":s?`${e.name}-error`:void 0})})},dt=({field:e})=>{const{theme:r}=A(),{color:t=oe(r)?"#444444":"#CCCCCC",thickness:n=1,margin:o="8px 0"}=e;return d.jsx("div",{style:{width:"auto",height:"0",borderTop:`${n}px solid ${t}`,margin:o}})},mt=({field:e,value:r,onChange:t,onError:n})=>{const{t:o,definitionName:a}=A(),[i,f]=l.useState(!1),s=l.useRef(null),u=l.useRef(n),c=l.useRef(null),[m,p]=l.useState(null);l.useEffect(()=>{u.current=n},[n]);const g=(v,j)=>j.some(S=>S.name===v.name&&S.size===v.size&&S.lastModified===v.lastModified),w=l.useCallback(v=>P(a,e,v,o),[e,a,o]);l.useEffect(()=>{const v=w(r??[]);t?.(r,v),v!==c.current&&(c.current=v,p(v),u.current?.(v??null))},[r,w]);const x=v=>{const j=v.target.files;let S=null;if(j&&j.length>0){const y=Array.from(j);if(e.multiple){const k=Array.isArray(r)?r:[],E=y.filter(N=>!g(N,k));S=[...k,...E]}else S=y[0]}const b=w(S??[]);b!==c.current&&(c.current=b,p(b),u.current?.(b??null)),t?.(S,b),v.target&&(v.target.value="")},h=v=>{v.preventDefault(),v.stopPropagation(),f(!1);const j=v.dataTransfer.files;if(j&&j.length>0){const S=Array.from(j);let b=null;if(e.multiple){const k=Array.isArray(r)?r:[],E=S.filter(N=>!g(N,k));b=[...k,...E]}else b=S[0];const y=w(b);y!==c.current&&(c.current=y,p(y),u.current?.(y??null)),t?.(b,y)}},C=v=>{v.preventDefault(),v.stopPropagation(),f(!0)},I=v=>{v.preventDefault(),v.stopPropagation(),f(!1)},M=v=>{if(Array.isArray(r)&&typeof v=="number"){const j=r.filter((y,k)=>k!==v),S=j.length>0?j:null,b=w(S??[]);b!==c.current&&(c.current=b,p(b),u.current?.(b??null)),t?.(S,b)}else{const j=w([]);j!==c.current&&(c.current=j,p(j),u.current?.(j??null)),t?.(null,j)}},$=()=>{const v=Array.isArray(r)?r:r?[r]:[];return v.length===0?null:d.jsx("div",{style:{marginTop:"8px",display:"flex",flexDirection:"column",gap:"6px"},children:v.map((j,S)=>d.jsxs("div",{className:"reactaform-chip",children:[d.jsx("div",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:j.name}),d.jsx("button",{type:"button",onClick:()=>M(Array.isArray(r)?S:void 0),"aria-label":o("Remove file"),style:{background:"transparent",border:"none",color:"var(--reactaform-color-error, #ef4444)",cursor:"pointer",padding:"2px 6px",fontSize:"1.125rem",lineHeight:1,borderRadius:"4px",transition:"background-color 0.2s",flexShrink:0},onMouseEnter:b=>{b.currentTarget.style.backgroundColor="var(--reactaform-bg-hover, #fee)"},onMouseLeave:b=>{b.currentTarget.style.backgroundColor="transparent"},children:"×"})]},`${j.name}-${S}`))})};return d.jsx(z,{field:e,error:m,children:d.jsxs("div",{style:{width:"100%"},children:[d.jsxs("div",{className:"reactaform-input",onDrop:h,onDragOver:C,onDragLeave:I,style:{position:"relative",borderStyle:"dashed",borderColor:i?"var(--reactaform-color-primary, #2563eb)":m?"var(--reactaform-color-error, #ef4444)":void 0,borderWidth:"1px",borderRadius:"var(--reactaform-border-radius, 4px)",padding:"8px 12px",textAlign:"center",backgroundColor:i?"var(--reactaform-bg-hover, #f0f9ff)":void 0,transition:"all 0.2s ease",cursor:"pointer",minHeight:"var(--reactaform-input-height, 34px)",width:"100%",maxWidth:"100%",alignSelf:"stretch",boxSizing:"border-box",display:"flex",alignItems:"center",justifyContent:"center",gap:"8px"},onClick:()=>s.current?.click(),onKeyDown:v=>{(v.key==="Enter"||v.key===" ")&&(v.preventDefault(),s.current?.click())},role:"button","aria-label":e.multiple?o("Choose Files or Drag & Drop"):o("Choose File or Drag & Drop"),"aria-invalid":!!m,"aria-describedby":m?`${e.name}-error`:void 0,children:[d.jsx("input",{id:e.name,ref:s,type:"file",accept:e.accept,multiple:e.multiple,style:{display:"none"},onChange:x}),d.jsx("div",{style:{fontSize:"1.25rem",opacity:.6,lineHeight:1,flexShrink:0},children:"📁"}),d.jsx("div",{style:{fontSize:"0.875rem",fontWeight:400,color:"var(--reactaform-text-color, #111827)",flex:1,textAlign:"left"},children:i?o("Drop files here"):e.multiple?o("Choose Files or Drag & Drop"):o("Choose File or Drag & Drop")}),e.accept&&d.jsx("div",{style:{fontSize:"0.75rem",color:"var(--reactaform-text-muted, #6b7280)",whiteSpace:"nowrap",opacity:i?0:1,transition:"opacity 0.15s ease",pointerEvents:i?"none":"auto"},children:e.accept})]}),$()]})})},pt=({field:e,value:r,onChange:t,onError:n})=>{const{t:o,definitionName:a}=A(),[i,f]=l.useState(Array.isArray(r)?r.join(", "):String(r??"")),s=l.useCallback(w=>P(a,e,w,o),[a,e,o]),u=w=>{const x=w.target.value,h=s(x);f(x),t?.(x,h)},c=l.useRef(null),m=l.useRef(n);l.useEffect(()=>{m.current=n},[n]);const[p,g]=l.useState(null);return l.useEffect(()=>{const w=Array.isArray(r)?r.join(", "):String(r??""),x=s(w);x!==c.current&&(c.current=x,g(x),m.current?.(x??null))},[r,e.required,s,o]),d.jsx(z,{field:e,error:p,children:d.jsx("input",{id:e.name,type:"text",value:i,onChange:u,className:T(R.input,R.textInput),style:{flex:1},"aria-invalid":!!p,"aria-describedby":p?`${e.name}-error`:void 0})})},gt=({field:e,value:r,onChange:t,onError:n})=>{const{t:o,definitionName:a}=A(),i=l.useCallback(c=>P(a,e,c,o)??null,[e,a,o]),{inputRef:f,error:s,handleChange:u}=W({value:r,onChange:t,onError:n,validate:i});return d.jsx(z,{field:e,error:s,children:d.jsx("input",{id:e.name,type:"text",ref:f,defaultValue:String(r??""),onChange:u,className:T(R.input,R.inputNumber),"aria-invalid":!!s,"aria-describedby":s?`${e.name}-error`:void 0})})};function ht(){try{return"/"}catch{}try{if(typeof process<"u"&&process?.env?.PUBLIC_URL)return process.env.PUBLIC_URL}catch{}return"/"}const yt=({field:e,value:r})=>{const{language:t,t:n}=A(),o=e.alignment||"center",a={left:"flex-start",center:"center",right:"flex-end"},i=typeof r=="string"?r:"";let f=i&&i.trim()!==""?i:typeof e.defaultValue=="string"?e.defaultValue:"";f&&!f.startsWith("/")&&(f=`${ht()}${f}`);const s=e.localized?.split(";").map(h=>h.trim()),[u,c]=l.useState(f||""),m=l.useRef(f||null);if(l.useEffect(()=>{if(!f)return;const h=f.split("/"),C=h.pop(),I=C.lastIndexOf(".");if(I===-1)return;const M=C.substring(0,I),$=C.substring(I);let v=null;s?.includes(t)&&(v=`${M}_${t}${$}`);const j=new AbortController;if(v){const S=[...h,v].join("/");fetch(S,{method:"HEAD",signal:j.signal}).then(b=>{const y=b.ok?S:f;y!==m.current&&(m.current=y,c(y))}).catch(()=>{f!==m.current&&(m.current=f,c(f))})}else{const S=f;S!==m.current&&(m.current=S,requestAnimationFrame(()=>c(S)))}return()=>{j.abort()}},[f,t,s]),!u)return null;const{width:p,height:g}=e,w={},x={borderRadius:"8px",objectFit:"contain",boxShadow:"0 2px 6px rgba(0,0,0,0.1)",margin:"0 0 8px 0"};return p&&g?(w.width=p,w.height=g,x.width=`${p}px`,x.height=`${g}px`):p&&!g?(w.width=p,x.width=`${p}px`,x.height="auto"):!p&&g&&(w.height=g,x.width="auto",x.height=`${g}px`),d.jsx(z,{field:e,children:d.jsx("div",{"data-testid":"image-wrapper",style:{display:"flex",justifyContent:a[o]||"center",margin:"0 0"},children:d.jsx("img",{src:u,alt:n?.(e.displayName||"Image")||e.displayName||"Image",...w,style:x})})})},bt=({field:e,value:r,onChange:t,onError:n})=>{const{t:o,definitionName:a}=A(),i=",",[f,s]=l.useState(Array.isArray(r)?r.join(i+" "):String(r??"")),u=l.useCallback(x=>P(a,e,x,o),[a,e,o]),c=x=>{const h=x.target.value,C=u(h);s(h),t?.(h,C)},m=l.useRef(null),p=l.useRef(n);l.useEffect(()=>{p.current=n},[n]);const[g,w]=l.useState(null);return l.useEffect(()=>{const x=Array.isArray(r)?r.join(i+" "):String(r??""),h=u(x);h!==m.current&&(m.current=h,w(h),p.current?.(h??null))},[r,e.required,u,o]),d.jsx(z,{field:e,error:g,children:d.jsx("input",{id:e.name,type:"text",value:f,onChange:c,className:T(R.input,R.textInput),style:{flex:1},"aria-invalid":!!g,"aria-describedby":g?`${e.name}-error`:void 0})})},lr=({field:e,value:r,onChange:t,onError:n})=>{const{t:o,definitionName:a}=A(),i=l.useCallback(c=>P(a,e,c,o)??null,[a,e,o]),{inputRef:f,error:s,handleChange:u}=W({value:r,onChange:t,onError:n,validate:i});return d.jsx(z,{field:e,error:s,children:d.jsx("input",{id:e.name,type:"text",defaultValue:String(r??""),ref:f,onChange:u,className:T(R.input,R.inputNumber),"aria-invalid":!!s,"aria-describedby":s?`${e.name}-error`:void 0})})};lr.displayName="IntegerInput";const xt=l.memo(lr),vt=({field:e,value:r,onChange:t,onError:n})=>{const{t:o,definitionName:a}=A(),i=l.useCallback(c=>P(a,e,c,o),[e,a,o]),{inputRef:f,error:s,handleChange:u}=W({value:r,onChange:t,onError:n,validate:i});return d.jsx(z,{field:e,error:s,children:d.jsx("textarea",{id:e.name,defaultValue:String(r??""),ref:f,onChange:u,style:{resize:"vertical",minHeight:e.minHeight??"80px",width:"100%",boxSizing:"border-box"},className:T(R.input,R.textInput),"aria-invalid":!!s,"aria-describedby":s?`${e.name}-error`:void 0})})},wt=({field:e,value:r,onChange:t,onError:n})=>{const o=l.useRef(n);l.useEffect(()=>{o.current=n},[n]);const{t:a,theme:i,formStyle:f,fieldStyle:s,definitionName:u}=A(),c=(E,N,F)=>{if(!N)return{};const H=E?.[N];return(F&&H?H[F]:void 0)??{}},m=l.useRef(null),[p,g]=l.useState(!1),[w,x]=l.useState(null),h=l.useMemo(()=>e.options.map(E=>({value:E.value,label:a(E.label)})),[e.options,a]),C=l.useMemo(()=>{const E=Array.isArray(r)?r:[],N=new Set(h.map(F=>F.value));return E.filter(F=>N.has(F))},[r,h]),I=l.useCallback(E=>P(u,e,E,a),[e,u,a]),[M,$]=l.useState(null),v=l.useRef(null);l.useEffect(()=>{const E=I(Array.isArray(r)?r:[]);E!==v.current&&(v.current=E,$(E),o.current?.(E??null))},[r,I]);const j=()=>{if(!m.current)return;const E=m.current.getBoundingClientRect();x({x:E.left,y:E.bottom}),g(N=>!N)},S=E=>{const N=C.includes(E)?C.filter(V=>V!==E):[...C,E],F=I(N);F!==v.current&&(v.current=F,$(F),o.current?.(F??null)),t?.(N,F)},b=l.useMemo(()=>({height:"var(--reactaform-input-height, 2.5rem)",display:"flex",alignItems:"center",cursor:"pointer",position:"relative",...c(f,"multiSelect","control"),...c(s,void 0,"control")}),[f,s]),y=l.useMemo(()=>({position:"absolute",right:"1.5em",top:"50%",transform:"translateY(-50%)",background:"none",border:"none",cursor:"pointer",fontSize:"0.8em",color:"var(--reactaform-text-muted, #999)",padding:0,...c(f,"multiSelect","clearButton"),...c(s,void 0,"clearButton")}),[f,s]),k=l.useMemo(()=>({position:"absolute",right:"0.7em",top:"50%",transform:"translateY(-50%)",pointerEvents:"none",fontSize:"0.8em",color:"var(--reactaform-text-muted, #999)",...c(f,"multiSelect","arrow"),...c(s,void 0,"arrow")}),[f,s]);return d.jsxs("div",{children:[d.jsx(z,{field:e,error:M,children:d.jsx("div",{style:{width:"100%"},children:d.jsxs("div",{ref:m,className:"reactaform-multiselection-control reactaform-input",style:b,onClick:j,role:"button","aria-haspopup":"listbox","aria-expanded":p,"aria-invalid":!!M,"aria-describedby":M?`${e.name}-error`:void 0,onKeyDown:E=>{(E.key==="Enter"||E.key===" ")&&(E.preventDefault(),j())},children:[d.jsxs("span",{style:{flex:1,color:"var(--reactaform-text-muted, #888)"},children:[C.length," / ",h.length," selected"]}),C.length>0&&d.jsx("button",{type:"button","aria-label":"Clear selections",onClick:E=>{E.stopPropagation(),t?.([],null)},style:y,children:d.jsx("span",{style:y,"aria-hidden":!0,children:"✖"})}),d.jsx("span",{style:k,"aria-hidden":!0,children:"▼"})]})})}),p&&w&&d.jsx(St,{position:w,options:h,selectedValues:C,onToggleOption:S,onClose:()=>g(!1),controlRef:m,theme:i})]})},St=({position:e,options:r,selectedValues:t,onToggleOption:n,onClose:o,controlRef:a,theme:i})=>{const f=l.useRef(null),[s,u]=l.useState(-1),{formStyle:c,fieldStyle:m}=A(),p=oe(i??"light");l.useLayoutEffect(()=>{if(!a.current)return;const S=a.current.closest("[data-reactaform-theme]"),b=document.getElementById("popup-root");if(S&&b){const y=getComputedStyle(S);b.style.setProperty("--reactaform-secondary-bg",y.getPropertyValue("--reactaform-secondary-bg")),b.style.setProperty("--reactaform-text-color",y.getPropertyValue("--reactaform-text-color")),b.style.setProperty("--reactaform-hover-bg",y.getPropertyValue("--reactaform-hover-bg"))}},[a]);const g=(S,b,y)=>{if(!b)return{};const E=S?.[b];return(y&&E?E[y]:void 0)??{}},w=l.useMemo(()=>({maxHeight:200,overflowY:"auto",background:"var(--reactaform-secondary-bg, #fff)",border:"1px solid var(--reactaform-border-color, #ccc)",borderRadius:4,zIndex:2e3,boxShadow:"var(--reactaform-shadow, 0 2px 8px rgba(0,0,0,0.15))",pointerEvents:"auto",color:"var(--reactaform-text-color, #000)",fontSize:"var(--reactaform-popup-font-size, 0.875rem)",...g(c,"multiSelect","popup"),...g(m,void 0,"popup")}),[c,m]),x=l.useMemo(()=>({padding:"6px 8px",cursor:"pointer",display:"flex",alignItems:"center",background:"transparent",color:"var(--reactaform-text-color, #000)",...g(c,"multiSelect","option"),...g(m,void 0,"option")}),[c,m]);l.useEffect(()=>{const S=b=>{const y=b.target;!f.current?.contains(y)&&!a.current?.contains(y)&&o()};return document.addEventListener("mousedown",S),()=>document.removeEventListener("mousedown",S)},[o,a]),l.useEffect(()=>{f.current&&r.length>0&&requestAnimationFrame(()=>u(S=>S===-1?0:S))},[r.length]),l.useEffect(()=>{if(!f.current||s<0)return;const S=f.current.querySelector(`#multi-opt-${s}`);S&&requestAnimationFrame(()=>S.focus())},[s]);const h=250,C=200,[I,M]=l.useState(null),[$,v]=l.useState(null);if(l.useEffect(()=>{if(typeof window>"u")return;const S=()=>{let k=e.x,E=e.y,N=h;const F=a?.current;if(F){const V=F.getBoundingClientRect();k=V.left,E=V.bottom,N=Math.max(80,Math.round(V.width))}k=Math.min(k,window.innerWidth-N),E=Math.min(E,window.innerHeight-C),M({left:k,top:E}),v(N)};S(),window.addEventListener("scroll",S,!0),window.addEventListener("resize",S);let b=null;const y=a?.current;return typeof ResizeObserver<"u"&&y&&(b=new ResizeObserver(()=>S()),b.observe(y)),()=>{window.removeEventListener("scroll",S,!0),window.removeEventListener("resize",S),b&&y&&b.unobserve(y)}},[a,e.x,e.y]),typeof window>"u")return null;let j=document.getElementById("popup-root");return j||(j=document.createElement("div"),j.id="popup-root",document.body.appendChild(j)),le.createPortal(d.jsx("div",{ref:f,role:"listbox","aria-activedescendant":s>=0?`multi-opt-${s}`:void 0,style:{position:"fixed",top:I?I.top:e.y,left:I?I.left:e.x,width:$??h,...w},"data-reactaform-theme":i??"light",children:r.map((S,b)=>{const y=t.includes(S.value),k=p?"var(--reactaform-hover-bg, rgba(255,255,255,0.01))":"var(--reactaform-hover-bg, #eee)",E={...x,background:b===s?k:x.background};return d.jsxs("div",{id:`multi-opt-${b}`,onMouseDown:N=>{N.stopPropagation(),n(S.value)},onKeyDown:N=>{const F=r.length;switch(N.key){case"ArrowDown":N.preventDefault(),u(V=>(V+1)%F);break;case"ArrowUp":N.preventDefault(),u(V=>(V-1+F)%F);break;case"Home":N.preventDefault(),u(0);break;case"End":N.preventDefault(),u(F-1);break;case"Enter":case" ":N.preventDefault(),N.stopPropagation(),n(S.value);break;case"Escape":N.preventDefault(),o(),a?.current?.focus();break}},tabIndex:b===s?0:-1,role:"option","aria-selected":y,style:E,onMouseEnter:N=>{N.currentTarget.style.background=k,u(b)},onMouseLeave:N=>{N.currentTarget.style.background="transparent",u(F=>F===b?-1:F)},children:[d.jsx("input",{type:"checkbox",checked:y,readOnly:!0,style:{marginRight:8,width:"1.125em",height:"1.125em",verticalAlign:"middle",accentColor:p?"#10b981":"#22c55e",cursor:"pointer"}}),S.label]},S.value)})}),j)},Ct=({field:e,value:r,onChange:t,onError:n})=>{const{t:o,definitionName:a}=A(),i=Math.max(1,Math.round(e.step??1)),f=l.useCallback(m=>P(a,e,m,o)??null,[a,e,o]),{inputRef:s,error:u,handleChange:c}=W({value:String(r??""),onChange:t,onError:n,validate:f});return d.jsx(z,{field:e,error:u,children:d.jsx("input",{id:e.name,type:"number",defaultValue:String(r??""),ref:s,min:e.min??void 0,max:e.max??void 0,step:i,onChange:c,style:{width:"100%",height:"100%"},className:R.input,"aria-invalid":!!u,"aria-describedby":u?`${e.name}-error`:void 0})})},kt=({field:e,value:r,onChange:t,onError:n})=>{const{definitionName:o,t:a}=A(),i=l.useCallback(c=>P(o,e,c,a),[o,e,a]),{inputRef:f,error:s,handleChange:u}=W({value:r,onChange:t,onError:n,validate:i});return d.jsx(z,{field:e,error:s,children:d.jsx("input",{id:e.name,type:"tel",defaultValue:String(r??""),ref:f,onChange:u,className:T(R.input,R.textInput),"aria-invalid":!!s,"aria-describedby":s?`${e.name}-error`:void 0})})},jt=({field:e,value:r,onChange:t,onError:n})=>{const{t:o,definitionName:a}=A(),i=e.layout?.toLowerCase()==="horizontal"?"row":"column",f=l.useRef(null),s=l.useRef(n);l.useEffect(()=>{s.current=n},[n]);const u=l.useCallback(C=>P(a,e,C,o),[a,e,o]),[c,m]=l.useState(null),p=l.useRef(null),g=l.useCallback(C=>{C!==p.current&&(p.current=C,m(C),s.current?.(C))},[]);l.useEffect(()=>{const C=r!=null?String(r):"",I=u(C);if(I&&e.options.length>0){const M=String(e.options[0].value);t?.(M,null),f.current?.querySelectorAll("input[type=radio]").forEach($=>{$.checked=$.value===M})}g(I)},[r,e.options,u,t,g]);const w=C=>{const I=C.target.value,M=u(I);g(M),t?.(I,M)},x={display:"flex",flexDirection:i,flexWrap:i==="row"?"wrap":"nowrap",gap:i==="row"?"12px":"4px",alignItems:i==="row"?"center":"stretch",width:"100%",padding:i==="row"?"8px":void 0,boxSizing:"border-box"},h={display:i==="column"?"flex":"inline-flex",gap:"8px",alignItems:"center",whiteSpace:"nowrap",marginBottom:i==="column"?6:0,cursor:"pointer",width:i==="column"?"100%":void 0,justifyContent:"flex-start"};return d.jsx(z,{field:e,error:c,children:d.jsx("div",{ref:f,className:R.input,role:"radiogroup","aria-labelledby":`${e.name}-label`,"aria-invalid":!!c,style:x,children:e.options.map(C=>{const I=String(C.value);return d.jsxs("label",{className:T(R.label),style:h,children:[d.jsx("input",{type:"radio",name:e.name,value:I,checked:String(r??"")===I,onChange:w,style:{width:"1.1em",height:"1.1em"}}),d.jsx("span",{style:{userSelect:"none",textAlign:i==="column"?"left":void 0,flex:i==="column"?1:void 0,fontWeight:400},children:o(C.label)})]},I)})})})},Et={display:"flex",gap:4},Ft={cursor:"pointer",fontSize:"1.5rem",lineHeight:1,display:"inline-block",marginRight:"0.25rem",userSelect:"none",transition:"color 0.12s ease"},Nt=({field:e,value:r,onChange:t,onError:n})=>{const{t:o,definitionName:a}=A(),i=e.max??5,f=e.icon?.trim()||"★",[s,u]=l.useState(null),c=l.useRef([]),m=l.useMemo(()=>Math.min(Math.max(r??0,0),i),[r,i]),p=l.useMemo(()=>P(a,e,m,o)??null,[a,e,m,o]);l.useEffect(()=>{n?.(p)},[p,n]);const g=l.useCallback(x=>{const h=Math.min(Math.max(x,0),i),C=P(a,e,h,o)??null;t?.(h,C)},[i,a,e,o,t]),w=l.useCallback((x,h)=>{switch(x.key){case"Enter":case" ":x.preventDefault(),g(h+1);break;case"ArrowRight":case"ArrowUp":x.preventDefault(),c.current[Math.min(i-1,h+1)]?.focus();break;case"ArrowLeft":case"ArrowDown":x.preventDefault(),c.current[Math.max(0,h-1)]?.focus();break}},[i,g]);return d.jsx(z,{field:e,error:p,children:d.jsx("div",{role:"radiogroup","aria-labelledby":`${e.name}-label`,"aria-invalid":!!p,"aria-describedby":p?`${e.name}-error`:void 0,style:Et,children:Array.from({length:i},(x,h)=>{const C=h<m,M=s!==null&&h<=s||C?"gold":"lightgray";return d.jsx("span",{ref:$=>c.current[h]=$,role:"radio",tabIndex:m>0?h===m-1?0:-1:h===0?0:-1,"aria-checked":C,"aria-label":`Rating ${h+1}`,title:o(`${e.displayName} ${h+1}`),onClick:()=>g(h+1),onKeyDown:$=>w($,h),onMouseEnter:()=>u(h),onMouseLeave:()=>u(null),style:{...Ft,color:M},children:f},h)})})})},It=({field:e,value:r,onChange:t,onError:n})=>{const{t:o,definitionName:a}=A(),i=l.useCallback(g=>P(a,e,g,o)??null,[a,e,o]),{inputRef:f,error:s,handleChange:u}=W({value:r,onChange:t,onError:n,validate:i}),[c,m]=l.useState(!1),p=()=>m(g=>!g);return d.jsx(z,{field:e,error:s,children:d.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,width:"100%"},children:[d.jsx("input",{id:e.name,type:c?"text":"password",defaultValue:String(r??""),ref:f,onChange:u,className:T(R.input,R.textInput),style:{flex:1,minWidth:0},"aria-invalid":!!s,"aria-describedby":s?`${e.name}-error`:void 0}),d.jsx("button",{type:"button",onClick:p,"aria-label":o(c?"Hide password":"Show password"),style:{background:"transparent",border:"none",cursor:"pointer",fontSize:16,lineHeight:1,padding:"4px 6px",flexShrink:0},children:c?"🙈":"👁️"})]})})},Mt=({field:e,value:r,onChange:t,onError:n})=>{const{t:o,definitionName:a}=A(),i=e.min??0,f=e.max??100,[s,u]=l.useState(()=>isNaN(Number(r))?String(i):String(Number(r)));l.useEffect(()=>{const g=isNaN(Number(r))?String(i):String(Number(r));u(g)},[r,i]);const c=l.useMemo(()=>P(a,e,s,o)??null,[a,e,s,o]);l.useEffect(()=>{n?.(c)},[c,n]);const m=l.useCallback(g=>{const w=g.target.value;u(w);const x=P(a,e,w,o)??null;t?.(w,x)},[a,e,o,t]),p=isNaN(Number(s))?String(i):String(Number(s));return d.jsx(z,{field:e,error:c,children:d.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",width:"100%"},children:[d.jsx("input",{id:`${e.name}-range`,type:"range",value:p,onChange:m,min:i,max:f,step:"1.0",style:{padding:0,flex:1},className:R.rangeInput,"aria-invalid":!!c,"aria-describedby":c?`${e.name}-error`:void 0}),d.jsx("input",{id:e.name,type:"text",value:s,onChange:m,required:!0,style:{width:"40px",minWidth:"40px",height:"2.3em",textAlign:"center",flexShrink:0},className:T(R.input,R.textInput),"aria-invalid":!!c,"aria-describedby":c?`${e.name}-error`:void 0})]})})},Rt=({field:e,value:r,onChange:t})=>{const{t:n,formStyle:o,fieldStyle:a}=A(),i=o,f=a,s=(x,h,C)=>{if(!h)return{};const I=x?.[h];return(C&&I?I[C]:void 0)??{}},u=l.useMemo(()=>({display:"inline-block",position:"relative",width:44,height:24,...s(i,"switch","label"),...s(f,void 0,"label")}),[i,f]),c=l.useMemo(()=>({position:"absolute",opacity:0,top:0,left:0,width:"100%",height:"100%",margin:0,cursor:"pointer",pointerEvents:"none",...s(i,"switch","hiddenInput"),...s(f,void 0,"hiddenInput")}),[i,f]),m=l.useMemo(()=>({position:"absolute",cursor:"pointer",top:0,left:0,right:0,bottom:0,backgroundColor:"var(--reactaform-switch-off-bg, #ccc)",transition:"0.3s",borderRadius:24,borderWidth:2,borderStyle:"solid",borderColor:"transparent",...s(i,"switch","slider"),...s(f,void 0,"slider")}),[i,f]),p=l.useMemo(()=>({position:"absolute",height:16,width:16,left:2,bottom:2,backgroundColor:"white",transition:"0.3s",borderRadius:"50%",boxShadow:"0 1px 3px rgba(0, 0, 0, 0.3)",...s(i,"switch","knob"),...s(f,void 0,"knob")}),[i,f]),g=!!r,w=()=>{t?.(!g,null)};return d.jsx(z,{field:e,error:null,rightAlign:!1,children:d.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%"},children:[d.jsx("label",{className:R.label,htmlFor:e.name,style:{textAlign:"left",justifyContent:"flex-start"},children:n(e.displayName)}),d.jsxs("label",{style:u,children:[d.jsx("input",{id:e.name,type:"checkbox",checked:g,readOnly:!0,"aria-label":n(e.displayName),"aria-invalid":!1,"aria-describedby":void 0,style:c,tabIndex:-1}),d.jsx("span",{role:"switch","data-testid":"switch",tabIndex:0,"aria-checked":g,"aria-invalid":!1,"aria-describedby":void 0,onClick:w,onKeyDown:x=>{(x.key===" "||x.key==="Spacebar"||x.key==="Space"||x.key==="Enter")&&(x.preventDefault(),w())},className:`reactaform-switch ${g?"active checked on":""} `,style:g?{...m,backgroundColor:"var(--reactaform-switch-on-bg, #22c55e)",borderColor:"var(--reactaform-switch-on-border, #16a34a)"}:m,children:d.jsx("span",{style:{...p,transform:g?"translateX(20px)":void 0}})})]})]})})},qe=({field:e,value:r,onChange:t,onError:n})=>{const{t:o,definitionName:a}=A(),i=l.useCallback(c=>P(a,e,c,o),[e,a,o]),{inputRef:f,error:s,handleChange:u}=W({value:r,onChange:t,onError:n,validate:i});return d.jsx(z,{field:e,error:s,children:d.jsx("input",{id:e.name,type:"text",defaultValue:String(r??""),ref:f,onChange:u,className:T(R.input,R.textInput),placeholder:e.placeholder,"aria-invalid":!!s,"aria-describedby":s?`${e.name}-error`:void 0})})},$t=({field:e,value:r,onChange:t,onError:n})=>{const{t:o,definitionName:a}=A(),i=l.useCallback(c=>P(a,e,c,o)??null,[e,a,o]),{inputRef:f,error:s,handleChange:u}=W({value:r,onChange:t,onError:n,validate:i});return d.jsx(z,{field:e,error:s,children:d.jsx("input",{id:e.name,type:"time",ref:f,defaultValue:r,step:e.includeSeconds?1:60,onChange:u,min:typeof e.min=="string"?e.min:void 0,max:typeof e.max=="string"?e.max:void 0,className:T(R.input,R.textInput),"aria-invalid":!!s,"aria-describedby":s?`${e.name}-error`:void 0})})};function At({pos:e,options:r,onClose:t,onClickOption:n}){const o=l.useRef(null),a=l.useRef(!1),[i,f]=l.useState({top:e?.y??0,left:e?.x??0,ready:!1}),s=typeof window<"u"?document.getElementById("popup-root")||document.body:null;return l.useEffect(()=>{function u(c){a.current||c.target.dataset?.popupMenu==="item"||o.current&&c.target instanceof Node&&!o.current.contains(c.target)&&t()}return document.addEventListener("mousedown",u),()=>document.removeEventListener("mousedown",u)},[t]),l.useLayoutEffect(()=>{if(!o.current||!e||e.x==null||e.y==null)return;const u=o.current.getBoundingClientRect(),c=window.innerWidth,m=window.innerHeight;let p=e.x,g=e.y;p+u.width>c&&(p=Math.max(0,c-u.width-10)),g+u.height>m&&(g=Math.max(0,e.y-u.height-5)),f({top:g,left:p,ready:!0})},[e,r]),!s||r===void 0||r.length===0||!e||e.x==null||e.y==null?null:le.createPortal(d.jsx("div",{ref:o,onMouseDown:u=>{u.stopPropagation()},style:{position:"fixed",top:i.top,left:i.left,visibility:i.ready?"visible":"hidden",backgroundColor:"var(--reactaform-primary-bg, #fff)",border:"1px solid var(--reactaform-border-color, #ccc)",borderRadius:"var(--reactaform-border-radius, 4px)",boxShadow:"var(--reactaform-shadow, 0 2px 10px rgba(0,0,0,0.2))",zIndex:9999,minWidth:"var(--reactaform-menu-min-width, 150px)",maxHeight:"var(--reactaform-menu-max-height, 300px)",overflowY:"auto",pointerEvents:"auto"},children:r.map((u,c)=>d.jsx("div",{"data-popup-menu":"item",onMouseDown:m=>{m.stopPropagation(),a.current=!0},onClick:m=>{m.stopPropagation(),m.preventDefault(),n(u),t(),setTimeout(()=>{a.current=!1},100)},style:{padding:"var(--reactaform-menu-item-padding, 8px 12px)",cursor:"pointer",fontSize:"var(--reactaform-menu-item-font-size, 0.8em)",borderBottom:c<r.length-1?"1px solid var(--reactaform-border-light, #eee)":void 0,transition:"background-color 0.15s ease"},onMouseEnter:m=>{m.currentTarget.style.backgroundColor="var(--reactaform-hover-bg, #e0e0e0)"},onMouseLeave:m=>{m.currentTarget.style.backgroundColor="transparent"},children:u.label},u.label??c))}),s)}const ur=l.memo(({disabled:e,inputValue:r,selectedUnit:t,dimension:n,unitFactors:o,onConversionSelect:a,t:i})=>{const[f,s]=l.useState(!1),[u,c]=l.useState(null),[m,p]=l.useState([]),g=l.useCallback(h=>{if(e)return;const C=parseFloat(r);if(!Number.isFinite(C))return;const I=h.currentTarget.getBoundingClientRect();c({x:I.left,y:I.bottom});const M=[];if(n==="temperature")o.units.forEach(v=>{const j=ir(t,v,C);Number.isFinite(j)&&M.push({label:`${j.toFixed(6)} ${i(v)}`,value:j.toString(),unit:v})});else{const v=o.factors[t];v!==void 0&&Object.entries(o.factors).forEach(([j,S])=>{const b=C/v*S;Number.isFinite(b)&&M.push({label:`${b.toFixed(6)} ${i(j)}`,value:b.toString(),unit:j})})}p(M),s(M.length>0)},[e,r,t,n,o,i]),w=l.useCallback(h=>{s(!1),c(null),a(h)},[a]),x=l.useCallback(()=>{s(!1),c(null)},[]);return d.jsxs(d.Fragment,{children:[d.jsx("button",{onClick:g,disabled:e,"aria-disabled":e,style:{width:"var(--reactaform-unit-btn-width, 2.5em)",height:"var(--reactaform-unit-btn-height, 2.5em)",padding:"0",border:"none",borderRadius:"var(--reactaform-button-border-radius, var(--reactaform-border-radius, 0.25em))",backgroundColor:e?"var(--reactaform-button-disabled-bg, #cccccc)":"var(--reactaform-button-bg, var(--reactaform-success-color))",color:"var(--reactaform-button-text, #ffffff)",cursor:e?"not-allowed":"pointer",opacity:e?.6:1,display:"flex",alignItems:"center",justifyContent:"center"},className:R.button,children:d.jsx("span",{style:{fontSize:"1em",lineHeight:"1",pointerEvents:"none"},children:"⇄"})}),f&&m.length>0&&d.jsx(At,{pos:u,options:m,onClose:x,onClickOption:w})]})});ur.displayName="ConversionButton";const Dt=({field:e,value:r,onChange:t,onError:n})=>{const{t:o,definitionName:a}=A(),i=e.dimension,f=l.useMemo(()=>i?cr(i):null,[i]),s=String(r?.[0]??""),u=String(r?.[1]??f?.default??""),[c,m]=l.useState(s),[p,g]=l.useState(u);l.useEffect(()=>{m(s)},[s]),l.useEffect(()=>{g(u)},[u]);const w=l.useMemo(()=>P(a,e,[c,p],o)??null,[a,e,c,p,o]);l.useEffect(()=>{n?.(w)},[w,n]);const x=l.useCallback($=>{const v=$.target.value;m(v);const j=P(a,e,[v,p],o)??null;t?.([v,p],j)},[p,a,e,o,t]),h=l.useCallback($=>{const v=$.target.value;g(v);const j=P(a,e,[c,v],o)??null;t?.([c,v],j)},[c,a,e,o,t]),C=l.useCallback($=>{m($.value),g($.unit),t?.([$.value,$.unit],null)},[t]),I=l.useMemo(()=>f?f.units.map($=>d.jsx("option",{value:$,children:o($)},$)):[],[f,o]);if(!i||!f)return null;const M=!!w||!c.trim();return d.jsx(z,{field:e,error:w,children:d.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"var(--reactaform-unit-gap, 8px)",width:"100%"},children:[d.jsx("input",{id:e.name,type:"text",value:c,onChange:x,style:{flex:"2 1 0"},className:T(R.input,R.textInput),"aria-invalid":!!w,"aria-describedby":w?`${e.name}-error`:void 0}),d.jsx("select",{id:`${e.name}-unit`,value:p,onChange:h,style:{flex:"1 1 0"},className:T(R.input,R.inputSelect),"aria-invalid":!!w,"aria-describedby":w?`${e.name}-error`:void 0,children:I}),d.jsx(ur,{disabled:M,inputValue:c,selectedUnit:p,dimension:i,unitFactors:f,onConversionSelect:C,t:o})]})})},Vt=l.memo(Dt),Pt=({field:e,value:r,onChange:t,onError:n})=>{const{t:o,definitionName:a}=A(),i=l.useCallback(c=>P(a,e,c,o),[a,e,o]),{inputRef:f,error:s,handleChange:u}=W({value:r,onChange:t,onError:n,validate:i});return d.jsx(z,{field:e,error:s,children:d.jsx("input",{id:e.name,type:"url",defaultValue:String(r??""),ref:f,onChange:u,className:T(R.input,R.textInput),placeholder:"https://example.com","aria-invalid":!!s,"aria-describedby":s?`${e.name}-error`:void 0})})},xe=new ne,fr={checkbox:tt,color:it,date:ct,dropdown:lt,email:ft,file:mt,float:gt,"float-array":pt,image:yt,int:xt,"int-array":bt,"multi-selection":wt,multiline:vt,password:It,phone:kt,radio:jt,rating:Nt,separator:dt,slider:Mt,string:qe,stepper:Ct,switch:Rt,text:qe,time:$t,unit:Vt,url:Pt};function zt(e,r){if(Je)return e;const{wait:t=200,leading:n,trailing:o}=r,a=l.memo(i=>{const f=l.useRef(i.onChange);l.useEffect(()=>{f.current=i.onChange},[i.onChange]);const{callback:s,cancel:u}=Ge((...c)=>{f.current?.(...c)},t,{leading:n,trailing:o});return l.useEffect(()=>u,[u]),l.createElement(e,{...i,onChange:s})});return a.displayName="DebouncedFieldWrapper",a}function dr(e,r,t){const n=r;if(!t&&e in fr){console.warn(`Can't overwrite base component type "${e}".`);return}const o=Ir[e];if(o===!1){xe.register(e,n);return}const a=o??{wait:200};xe.register(e,zt(n,a))}function Ne(e,r){dr(e,r,!1)}function Ie(e){return xe.get(e)}let _e=!1;function Ot(){_e||(Object.entries(fr).forEach(([e,r])=>{dr(e,r,!0)}),_e=!0)}const mr=l.memo(({field:e,value:r,handleChange:t,handleError:n})=>{const o=Ie(e.type),a=l.useMemo(()=>r,[r]),i=l.useCallback((s,u)=>t(e.name,s,u),[t,e.name]),f=l.useCallback(s=>n?.(e.name,s),[n,e.name]);return o?d.jsx(o,{field:e,value:a,onChange:i,onError:f}):null},(e,r)=>e.field===r.field&&e.value===r.value&&e.handleChange===r.handleChange&&e.handleError===r.handleError);mr.displayName="FieldWrapper";const pr=(e,r,t,n)=>d.jsx(l.Fragment,{children:d.jsx(mr,{field:e,value:r[e.name],handleChange:t,handleError:n})},e.name),gr=l.memo(({groupName:e,isOpen:r,fields:t,valuesMap:n,handleChange:o,handleError:a,toggleGroup:i,t:f})=>{const s=l.useCallback(()=>i(e),[i,e]),{formStyle:u,fieldStyle:c}=A(),m=l.useMemo(()=>({border:"1px solid var(--reactaform-border-color, #bbb)",padding:"var(--reactaform-fieldset-padding, 0.5em)",borderRadius:"var(--reactaform-border-radius, 4px)",marginBottom:"var(--reactaform-space, 8px)",...u?.fieldset||{},...c?.fieldset||{}}),[u,c]),p=l.useMemo(()=>({fontWeight:"bold",cursor:"pointer",display:"flex",justifyContent:"space-between",alignItems:"center",padding:"0 var(--reactaform-space, 8px)",color:"var(--reactaform-text-color, inherit)",...u?.legend||{},...c?.legend||{}}),[u,c]);return d.jsxs("fieldset",{style:m,children:[d.jsxs("legend",{onClick:s,style:p,children:[d.jsx("span",{children:f(e)}),d.jsx("span",{children:r?"▼":"▶"})]}),r&&t.map(g=>pr(g,n,o,a))]})});gr.displayName="FieldGroup";const Lt=(e,r,t,n,o,a,i,f,s)=>{const u=r.slice(0,f).filter(p=>i[p.name]),c=Jr(u),m=[];return c.groups.forEach(p=>{if(p.name){const g=e[p.name]??!0;m.push(d.jsx(gr,{groupName:p.name,isOpen:g,fields:p.fields,valuesMap:t,handleChange:o,handleError:a,toggleGroup:s,t:n},p.name))}else p.fields.forEach(g=>m.push(pr(g,t,o,a)))}),m},Ht=e=>{const r={};return e.forEach(t=>{r[t.name]=!1}),r},Me=(e,r,t,n)=>{const o=r[e];if(!o||!o.children)return;const a=t[e],i=a!=null?String(a):"",f=o.children[i];!f||!Array.isArray(f)||f.forEach(s=>{typeof s=="string"&&(n[s]=!0,Me(s,r,t,n))})},hr=(e,r,t)=>{const n=r[e];!n||!n.children||Object.values(n.children).filter(Array.isArray).flat().forEach(o=>{typeof o=="string"&&o in t&&(t[o]=!1,hr(o,r,t))})},Tt=(e,r,t,n)=>{const o={...t};return e.forEach(a=>{(!a.parents||Object.keys(a.parents).length===0)&&(o[a.name]=!0,Me(a.name,n,r,o))}),o},Bt=(e,r,t,n,o)=>{const a={...e};if(hr(n,r,a),o!=null){const i=r[n];if(i&&i.children){const f=String(o),s=i.children[f];s&&Array.isArray(s)&&s.forEach(u=>{typeof u=="string"&&(a[u]=!0,Me(u,r,t,a))})}}return a},Re=new ne;function $e(e,r){Re.register(e,r)}function Ut(e){return Re.get(e)}function Wt(e){return Re.get(e)}$e("Preset_AlertSubmitHandler",(e,r,t)=>{const n={name:r||"Unnamed Instance",version:e.version,definition:e.name,values:t},o=JSON.stringify(n,null,2);alert(o)});async function qt(e,r,t,n,o){const a=Object.values(o).filter(Boolean);if(a.length>0)return{success:!1,message:n("Please fix validation errors before submitting."),errors:a};const i={...t},f=[];if(e&&Array.isArray(e.properties))for(const u of e.properties){const c=u.name,m=i[c];if(m==null)continue;const p=u.type;try{if(p==="int"||p==="number"||p==="float"){const g=String(m).trim();if(g==="")i[c]=0;else{const w=Number(g);isNaN(w)?f.push(n("Invalid number format for field {{1}}",u.displayName||c)):i[c]=w}}else if(p==="int-array"||p==="float-array"){const g=String(m).split(",").map(h=>h.trim()).filter(Boolean),w=[];let x=!1;for(const h of g){const C=Number(h);if(isNaN(C)){f.push(n("Invalid number {{1}} in array for field {{2}}",h,u.displayName||c)),x=!0;break}w.push(C)}x||(i[c]=w)}}catch(g){f.push(n("Error processing field {{1}}: {{2}}",u.displayName||c,g instanceof Error?g.message:String(g)))}}if(f.length>0)return{success:!1,message:n("Data transformation errors occurred."),errors:f};const s=await Or(e,i,n);if(s&&s.length>0)return{success:!1,message:n("Validation failed"),errors:s};if(e&&typeof e.submitHandlerName=="string"){const u=Ut(e.submitHandlerName);if(u)try{const c=await u(e,r?.name??null,i,n);if(c&&c.length>0)return{success:!1,message:n("Submission failed"),errors:Array.isArray(c)?c:[String(c)]}}catch(c){return{success:!1,message:n("Submission handler error occurred"),errors:[String(c instanceof Error?c.message:c)]}}}return{success:!0,message:n("Form submitted successfully."),data:i}}const yr=({definition:e,instance:r,chunkSize:t=50,chunkDelay:n=50})=>{const{properties:o,displayName:a}=e,i=A(),{t:f,formStyle:s,language:u}=i,c={...i,definitionName:e?.name??i.definitionName},[m,p]=l.useState("en"),[g,w]=l.useState([]),[x,h]=l.useState({}),[C,I]=l.useState({}),[M,$]=l.useState({}),[v,j]=l.useState({}),[S,b]=l.useState({}),[y,k]=l.useState(null),[E,N]=l.useState(null),[F,V]=l.useState(0),[H,G]=l.useState(!1),[ae,Ae]=l.useState(!1),[De,ee]=l.useState(r.name||""),J=l.useRef(r),ue=l.useRef(!1);l.useEffect(()=>{const D=Object.fromEntries(o.map(O=>[O.name,{...O,children:{}}]));o.forEach(O=>{O.parents&&Object.entries(O.parents).forEach(([re,fe])=>{const te=D[re];te&&fe.forEach(Er=>{te.children||(te.children={});const Ve=String(Er);te.children[Ve]=[...te.children[Ve]||[],O.name]})})}),Kr(o,D);const L=Object.values(D),B={};L.forEach(O=>{if(O.type==="unit"){const re=typeof O.defaultValue=="number"?String(O.defaultValue):"",fe=typeof O.defaultUnit=="string"?O.defaultUnit:String(O.defaultUnit??"m");B[O.name]=[re,fe]}else B[O.name]=O.defaultValue}),J.current=r,Object.keys(r.values).forEach(O=>{D[O]!==void 0&&(B[O]=r.values[O])});const _=Ht(L),K={};L.forEach(O=>{O.group&&!(O.group in K)&&(K[O.group]=!0)});const Q=requestAnimationFrame(()=>{w(L),h(D),I(B),$(Tt(L,B,_,D)),j(K),G(!0),ee(r.name)});return()=>cancelAnimationFrame(Q)},[o,r,e]),l.useEffect(()=>{if(!H||F>=g.length)return;const D=setTimeout(()=>{V(L=>Math.min(L+t,g.length))},n);return()=>clearTimeout(D)},[H,F,g.length,t,n]);const Sr=l.useCallback((D,L,B)=>{k(null),N(null),I(_=>{const K={..._,[D]:L},Q=x[D];return Q&&["checkbox","dropdown","multi-select","radio","switch"].includes(Q.type)&&$(re=>Bt(re,x,K,D,String(L))),K}),b(_=>B?{..._,[D]:B}:Object.fromEntries(Object.entries(_).filter(([Q])=>Q!==D)))},[x,k,N]);l.useEffect(()=>{let D=0;return D=requestAnimationFrame(()=>{u!==m&&(p(u||"en"),k(null),N(null))}),()=>cancelAnimationFrame(D)},[u,m]),l.useEffect(()=>{let D=0;return D=requestAnimationFrame(()=>{if(ue.current){ue.current=!1,J.current=r,ee(r.name||"");return}J.current=r,k(null),N(null),ee(r.name||"")}),()=>cancelAnimationFrame(D)},[r,r.name]);const Cr=l.useCallback((D,L)=>{b(B=>L?{...B,[D]:String(L)}:Object.fromEntries(Object.entries(B).filter(([K])=>K!==D)))},[]),kr=async()=>{ue.current=!0;const D=J.current?.name;J.current.name=De;const L=await qt(e,J.current,C,f,S),B=typeof L.message=="string"?L.message:String(L.message),_=Object.values(L.errors??{}).join(`
301
+ `);k(_?B+`
302
+ `+_:B),N(L.success),L.success||(J.current.name=D??J.current.name,ee(D??""))},jr=D=>{j(L=>({...L,[D]:!L[D]}))},se=l.useMemo(()=>Object.values(S).some(Boolean),[S]);return d.jsx(ve.Provider,{value:c,children:d.jsxs("div",{style:s.container,children:[a&&d.jsx("h2",{style:s.titleStyle,children:f(a)}),y&&d.jsxs("div",{role:"status",style:{marginBottom:12,padding:12,borderRadius:6,backgroundColor:E?"rgba(76, 175, 80, 0.12)":"rgba(225, 29, 72, 0.06)",border:`1px solid ${E?"rgba(76,175,80,0.3)":"rgba(225,29,72,0.12)"}`,color:E?"var(--reactaform-success-color, #4CAF50)":"var(--reactaform-error-color, #e11d48)",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[d.jsx("div",{style:{whiteSpace:"pre-wrap",flex:1},children:y}),d.jsx("button",{onClick:()=>{k(null),N(null)},"aria-label":f("Dismiss"),style:{marginLeft:12,background:"transparent",border:"none",cursor:"pointer",color:"inherit",fontSize:16,lineHeight:1},children:"×"})]}),r&&d.jsx(Qe,{name:De,onChange:D=>{ee(D),k(null),N(null)}}),d.jsxs(d.Fragment,{children:[Lt(v,g,C,f,Sr,Cr,M,F,jr),F<g.length&&d.jsx("div",{style:{fontSize:"0.9em",color:"var(--reactaform-text-muted, #666)"}})]}),d.jsx("button",{onClick:kr,disabled:se,onMouseEnter:()=>Ae(!0),onMouseLeave:()=>Ae(!1),style:{padding:"var(--reactaform-button-padding, var(--reactaform-space) 12px)",backgroundColor:se?"var(--reactaform-button-disabled-bg, #cccccc)":"var(--reactaform-button-bg, var(--reactaform-success-color))",color:"var(--reactaform-button-text, #ffffff)",border:"none",borderRadius:"4px",cursor:se?"var(--reactaform-button-disabled-cursor, not-allowed)":"pointer",fontSize:"var(--reactaform-button-font-size, 14px)",fontWeight:"var(--reactaform-button-font-weight, 500)",boxShadow:"var(--reactaform-button-shadow, none)",marginTop:"var(--reactaform-button-margin-top, 0.5em)",transition:"opacity 0.2s ease",opacity:se?"var(--reactaform-button-disabled-opacity, 0.6)":ae?"var(--reactaform-button-hover-opacity, 0.9)":"1"},children:f("Submit")})]})})};Ot();const _t=e=>({container:{padding:"var(--reactaform-space-sm, 8px)",margin:"0 auto",backgroundColor:"transparent",borderRadius:0,color:"var(--reactaform-color-text)",fontFamily:e?.fontFamily||"var(--reactaform-font-family, system-ui, -apple-system, sans-serif)",boxSizing:"border-box",minHeight:e?.minHeight??"0",...e?.width?{width:e.width,overflowX:"auto"}:{maxWidth:"100%"},...e?.height?{height:e.height,overflowY:"auto"}:{}},buttonStyle:{padding:"var(--reactaform-space-sm, 8px) var(--reactaform-space-md, 16px)",backgroundColor:"var(--reactaform-color-primary)",color:"var(--reactaform-color-background)",border:"1px solid var(--reactaform-color-primary)",borderRadius:"var(--reactaform-border-radius, 6px)",cursor:"pointer",fontSize:e?.fontSize||"1rem",fontWeight:"600",transition:"all 0.2s ease",boxShadow:"var(--reactaform-shadow-small, 0 1px 3px rgba(0, 0, 0, 0.12))"},titleStyle:{marginBottom:"var(--reactaform-space-lg, 24px)",color:"var(--reactaform-color-text)",fontSize:typeof e?.fontSize=="number"?`${e.fontSize*1.5}px`:"1.5rem",fontWeight:"700",lineHeight:"1.2",textAlign:"left"}}),Kt=e=>{const r={color:"var(--reactaform-color-text)",fontFamily:e?.fontFamily||"var(--reactaform-font-family, inherit)",transition:"all 0.2s ease",outline:"none",width:"100%",boxSizing:"border-box"};return{container:{fontFamily:e?.fontFamily||"var(--reactaform-font-family, inherit)",fontSize:e?.fontSize||"var(--reactaform-font-size, 1rem)",width:"100%",maxWidth:e?.width||"100%",marginBottom:"var(--reactaform-space-md, 16px)"},label:{display:"block",marginBottom:"var(--reactaform-space-xs, 4px)",fontWeight:"500",color:"var(--reactaform-color-text)",fontSize:"var(--reactaform-font-size, 1rem)",fontFamily:e?.fontFamily||"var(--reactaform-font-family, inherit)"},input:r,textInput:r,optionInput:r,select:{...r,cursor:"pointer",backgroundRepeat:"no-repeat",backgroundPosition:"right 8px center",backgroundSize:"16px",paddingRight:"32px",backgroundImage:`url("data:image/svg+xml;utf8,<svg
290
303
  xmlns='http://www.w3.org/2000/svg'
291
304
  viewBox='0 0 24 24'
292
305
  fill='none'
@@ -295,4 +308,4 @@
295
308
  stroke-linecap='round'
296
309
  stroke-linejoin='round'>
297
310
  <polyline points='6,9 12,15 18,9'/>
298
- </svg>")`},textarea:{...t,minHeight:"80px",resize:"vertical",paddingTop:"var(--reactaform-space-sm, 8px)"},error:{color:"var(--reactaform-color-error)",fontSize:"0.875rem",marginTop:"var(--reactaform-space-xs, 4px)",display:"block"}}},vr=({children:e,definitionName:r="",defaultStyle:t,defaultLanguage:o="en",defaultDarkMode:n=!1,defaultLocalizeName:a="",className:u="reactaform-container"})=>{const c=r,s=a,m=n,l=o,d=i.useMemo(()=>t??{},[t]),[f,p]=i.useState({}),[y,h]=i.useState({}),[b,v]=i.useState({}),[x,C]=i.useState({});i.useEffect(()=>{let $=!0;return(async()=>{if(l==="en"){$&&(p({}),h({}));return}try{const E=await Hr(l),N=E.success?E.translations:{};$&&p(N);const D=await qr(l,s),q=D.success?D.translations:{};$&&h(q)}catch{$&&(p({}),h({}))}})(),()=>{$=!1}},[l,s]),i.useEffect(()=>{C(Xt(d,m)),v(Zt(d,m))},[d,m]);const M=i.useMemo(()=>Br(l,f,y),[l,f,y]),w=i.useCallback(($,...j)=>M($,...j),[M]),S=i.useMemo(()=>({definitionName:c,language:l,darkMode:m,formStyle:x,fieldStyle:b,t:w}),[c,l,m,b,x,w]),k=d?.height?{height:"100%"}:void 0;return g.jsx(ke.Provider,{value:S,children:g.jsx("div",{"data-reactaform-theme":m?"dark":"light",className:u,style:k,children:e})})};function Qt(e){if(!e||typeof e!="object")return"Definition must be an object";const r=e;if(!r.name||typeof r.name!="string")return"Definition must include a 'name' string";if(r.name.trim()==="")return"Definition 'name' cannot be empty";if(!r.version||typeof r.version!="string")return"Definition must include a 'version' string";if(r.properties!==void 0&&!Array.isArray(r.properties))return"'properties' must be an array if provided";if(Array.isArray(r.properties))for(let t=0;t<r.properties.length;t++){const o=r.properties[t];if(!o||typeof o!="object")return`Property at index ${t} must be an object`;if(!o.name||typeof o.name!="string")return`Property at index ${t} must have a string 'name'`;if(o.name.trim()==="")return`Property at index ${t} has an empty 'name'`;if(!o.type||typeof o.type!="string")return`Property '${o.name}' must have a string 'type'`;if(o.type.trim()==="")return`Property '${o.name}' has an empty 'type'`}return null}async function en(e,r={}){const{validateSchema:t=!0}=r;try{if(!e||typeof e!="string")return{success:!1,error:"jsonData must be a non-empty JSON string"};const o=e.trim();if(!o)return{success:!1,error:"jsonData is empty"};let n;try{n=JSON.parse(o)}catch(a){return{success:!1,error:`Invalid JSON format: ${a instanceof Error?a.message:"Unknown parsing error"}`}}if(t){const a=Qt(n);if(a)return{success:!1,error:`Schema validation failed: ${a}`}}return{success:!0,definition:n}}catch(o){return{success:!1,error:`Unexpected error loading definition: ${o instanceof Error?o.message:"Unknown error"}`}}}function wr(e,r){try{if(!e)return{success:!1,error:"Definition is required"};if(!r||typeof r!="string")return{success:!1,error:"Instance name is required"};const t={name:r,definition:e.name??"unknown",version:e.version??"1.0.0",values:{}},o=e.properties||[];return Array.isArray(o)&&o.forEach(n=>{const a=n;if(a.type==="unit"){const u=a.defaultUnit,c=Number(a.defaultValue)||void 0;t.values[a.name]=[c||0,u||"m"]}else a.defaultValue!==void 0&&(t.values[a.name]=a.defaultValue)}),{success:!0,instance:t}}catch(t){return{success:!1,error:`Error creating instance: ${t instanceof Error?t.message:"Unknown error"}`}}}function rn(e){try{if(!e)return{success:!1,error:"Instance data is required"};let r;if(typeof e=="string")try{r=JSON.parse(e)}catch(t){return{success:!1,error:`Invalid JSON format: ${t instanceof Error?t.message:"Unknown parsing error"}`}}else r=e;return typeof r!="object"||r===null?{success:!1,error:"Instance must be a valid object"}:{success:!0,instance:r}}catch(r){return{success:!1,error:`Error loading instance: ${r instanceof Error?r.message:"Unknown error"}`}}}function tn(e,r,t){try{if(!e)return{success:!1,error:"Instance is required"};if(!r)return{success:!1,error:"Latest definition is required"};if(e.definition===r.name&&e.version===r.version)return{success:!0,instance:e};const o={name:e.name||r.name+"-instance",definition:r.name,version:r.version,values:{}},n=o.values,a={};(r.properties||[]).forEach(s=>{a[s.name]=s});const u=(s,m,l)=>{if(s==null)return s;const d=m.toLowerCase();try{if(d==="string"||d==="text")return String(s);if(d==="int"||d==="integer"||d==="number"||d==="float"){if(typeof s=="number")return s;if(typeof s=="boolean")return s?1:0;if(typeof s=="string"){const f=s.trim();if(f==="")return null;const p=Number(f);return Number.isNaN(p)?0:p}return 0}if(d==="boolean"||d==="bool"||d==="checkbox"||d==="switch"){if(typeof s=="boolean")return s;if(typeof s=="number")return s!==0;if(typeof s=="string"){const f=s.toLowerCase().trim();return["true","1","yes","on"].includes(f)}return!!s}if(d==="unit"){if(Array.isArray(s)&&s.length>=2)return s;if(Array.isArray(s)&&s.length===1)return[s[0],l&&l.defaultUnit||"m"];if(typeof s=="number")return[s,l&&l.defaultUnit||"m"];if(typeof s=="string"){const f=Number(s);return[Number.isNaN(f)?0:f,l&&l.defaultUnit||"m"]}return[0,l&&l.defaultUnit||"m"]}if(d.endsWith("[]")||d==="array"||d==="int-array"||d==="float-array")return Array.isArray(s)?s:typeof s=="string"?s.split(",").map(f=>f.trim()).filter(Boolean):[s]}catch{}return s},c=e.values||{};Object.keys(c).forEach(s=>{const m=c[s],l=a[s];if(!l)return;const d=Array.isArray(m)?"array":m===null?"null":typeof m,f=(l.type||"").toLowerCase();d===f||f==="string"&&typeof m=="string"?n[s]=m:n[s]=u(m,f,l)}),(r.properties||[]).forEach(s=>{const m=s.name;m in n||(n[m]=s.defaultValue)});try{typeof t=="function"&&t?.(e,o,r)}catch(s){return{success:!1,error:`Upgrade callback error: ${s instanceof Error?s.message:String(s)}`}}return{success:!0,instance:o}}catch(o){return{success:!1,error:`Error upgrading instance: ${o instanceof Error?o.message:"Unknown error"}`}}}dr();function nn(e){const[r,t]=i.useState(null);return i.useEffect(()=>{const o=document.querySelector("[data-reactaform-theme]");if(!o)return;const n=o.closest("[data-reactaform-theme]");if(!n)return;const a=()=>t(n.getAttribute("data-reactaform-theme"));a();const u=new MutationObserver(c=>{for(const s of c)s.type==="attributes"&&s.attributeName==="data-reactaform-theme"&&a()});return u.observe(n,{attributes:!0,attributeFilter:["data-reactaform-theme"]}),()=>u.disconnect()},[e]),r}const on=({definitionData:e,instance:r,language:t,className:o,darkMode:n,style:a})=>{const u=i.useMemo(()=>{try{return typeof e=="string"?JSON.parse(e):e??null}catch{return null}},[e]),c={fontSize:"inherit",fontFamily:"inherit",...a},s=nn(),m=n??s==="dark",l=t??"en";if(i.useEffect(()=>{let f=document.getElementById("popup-root");f||(f=document.createElement("div"),f.id="popup-root",document.body.appendChild(f))},[]),!u)return g.jsx("div",{style:{color:"red"},children:"Error: No form definition provided."});let d=r;if(!d){const f=wr(u,u.name);if(!f.success||!f.instance)return g.jsx("div",{style:{color:"red"},children:"Error: Failed to create instance from definition."});d=f.instance}return g.jsx(vr,{definitionName:u.name,defaultStyle:c,defaultLanguage:l,defaultDarkMode:m,defaultLocalizeName:u.localization||"",className:o,children:g.jsx(xr,{definition:u,instance:d})})};function Sr(){if(!document.getElementById("reactaform-styles"))try{const e=document.createElement("style");e.id="reactaform-styles",e.textContent=Rr,document.head.appendChild(e)}catch{}}typeof document<"u"&&Sr();exports.CSS_CLASSES=R;exports.ReactaForm=on;exports.ReactaFormProvider=vr;exports.ReactaFormRenderer=xr;exports.StandardFieldLayout=P;exports.Units=Wr;exports.combineClasses=T;exports.createInstanceFromDefinition=wr;exports.deserializeDefinition=Fr;exports.deserializeInstance=$r;exports.getAllPlugins=Bt;exports.getComponent=Fe;exports.getPlugin=Tt;exports.hasPlugin=Ut;exports.injectReactaFormStyles=Sr;exports.loadInstance=rn;exports.loadJsonDefinition=en;exports.registerComponent=Ve;exports.registerComponents=Wt;exports.registerFieldValidationHandler=or;exports.registerFormValidationHandler=nr;exports.registerPlugin=Ht;exports.registerSubmissionHandler=ze;exports.serializeDefinition=Vr;exports.serializeInstance=Ir;exports.unregisterPlugin=qt;exports.upgradeInstanceToLatestDefinition=tn;exports.useDebouncedCallback=Xe;exports.useReactaFormContext=A;exports.validateFieldValue=O;
311
+ </svg>")`},textarea:{...r,minHeight:"80px",resize:"vertical",paddingTop:"var(--reactaform-space-sm, 8px)"},error:{color:"var(--reactaform-color-error)",fontSize:"0.875rem",marginTop:"var(--reactaform-space-xs, 4px)",display:"block"}}},br=({children:e,definitionName:r="",defaultStyle:t,defaultLanguage:n="en",defaultTheme:o="light",defaultLocalizeName:a="",className:i="reactaform-container"})=>{const f=r,s=a,u=o,c=n,m=l.useMemo(()=>t??{},[t]),[p,g]=l.useState({}),[w,x]=l.useState({});l.useEffect(()=>{let j=!0;return(async()=>{if(c==="en"){j&&(g({}),x({}));return}try{const b=await Yr(c),y=b.success?b.translations:{};j&&g(y);const k=await Xr(c,s),E=k.success?k.translations:{};j&&x(E)}catch{j&&(g({}),x({}))}})(),()=>{j=!1}},[c,s]);const h=l.useMemo(()=>_t(m),[m]),C=l.useMemo(()=>Kt(m),[m]),I=l.useMemo(()=>Zr(c,p,w),[c,p,w]),M=l.useCallback((j,...S)=>I(j,...S),[I]),$=l.useMemo(()=>({definitionName:f,language:c,theme:u,formStyle:h,fieldStyle:C,t:M}),[f,c,u,C,h,M]),v=m?.height?{height:"100%"}:void 0;return d.jsx(ve.Provider,{value:$,children:d.jsx("div",{"data-reactaform-theme":u,className:i,style:v,children:e})})};function Jt(e){if(!e||typeof e!="object")return"Definition must be an object";const r=e;if(!r.name||typeof r.name!="string")return"Definition must include a 'name' string";if(r.name.trim()==="")return"Definition 'name' cannot be empty";if(!r.version||typeof r.version!="string")return"Definition must include a 'version' string";if(r.properties!==void 0&&!Array.isArray(r.properties))return"'properties' must be an array if provided";if(Array.isArray(r.properties))for(let t=0;t<r.properties.length;t++){const n=r.properties[t];if(!n||typeof n!="object")return`Property at index ${t} must be an object`;if(!n.name||typeof n.name!="string")return`Property at index ${t} must have a string 'name'`;if(n.name.trim()==="")return`Property at index ${t} has an empty 'name'`;if(!n.type||typeof n.type!="string")return`Property '${n.name}' must have a string 'type'`;if(n.type.trim()==="")return`Property '${n.name}' has an empty 'type'`}return null}async function Gt(e,r={}){const{validateSchema:t=!0}=r;try{if(!e||typeof e!="string")return{success:!1,error:"jsonData must be a non-empty JSON string"};const n=e.trim();if(!n)return{success:!1,error:"jsonData is empty"};let o;try{o=JSON.parse(n)}catch(a){return{success:!1,error:`Invalid JSON format: ${a instanceof Error?a.message:"Unknown parsing error"}`}}if(t){const a=Jt(o);if(a)return{success:!1,error:`Schema validation failed: ${a}`}}return{success:!0,definition:o}}catch(n){return{success:!1,error:`Unexpected error loading definition: ${n instanceof Error?n.message:"Unknown error"}`}}}function xr(e,r){try{if(!e)return{success:!1,error:"Definition is required"};if(!r||typeof r!="string")return{success:!1,error:"Instance name is required"};const t={name:r,definition:e.name??"unknown",version:e.version??"1.0.0",values:{}},n=e.properties||[];return Array.isArray(n)&&n.forEach(o=>{const a=o;if(a.type==="unit"){const i=a.defaultUnit,f=Number(a.defaultValue)||void 0;t.values[a.name]=[f||0,i||"m"]}else a.defaultValue!==void 0&&(t.values[a.name]=a.defaultValue)}),{success:!0,instance:t}}catch(t){return{success:!1,error:`Error creating instance: ${t instanceof Error?t.message:"Unknown error"}`}}}function Yt(e){try{if(!e)return{success:!1,error:"Instance data is required"};let r;if(typeof e=="string")try{r=JSON.parse(e)}catch(t){return{success:!1,error:`Invalid JSON format: ${t instanceof Error?t.message:"Unknown parsing error"}`}}else r=e;return typeof r!="object"||r===null?{success:!1,error:"Instance must be a valid object"}:{success:!0,instance:r}}catch(r){return{success:!1,error:`Error loading instance: ${r instanceof Error?r.message:"Unknown error"}`}}}function Xt(e,r,t){try{if(!e)return{success:!1,error:"Instance is required"};if(!r)return{success:!1,error:"Latest definition is required"};if(e.definition===r.name&&e.version===r.version)return{success:!0,instance:e};const n={name:e.name||r.name+"-instance",definition:r.name,version:r.version,values:{}},o=n.values,a={};(r.properties||[]).forEach(s=>{a[s.name]=s});const i=(s,u,c)=>{if(s==null)return s;const m=u.toLowerCase();try{if(m==="string"||m==="text")return String(s);if(m==="int"||m==="integer"||m==="number"||m==="float"){if(typeof s=="number")return s;if(typeof s=="boolean")return s?1:0;if(typeof s=="string"){const p=s.trim();if(p==="")return null;const g=Number(p);return Number.isNaN(g)?0:g}return 0}if(m==="boolean"||m==="bool"||m==="checkbox"||m==="switch"){if(typeof s=="boolean")return s;if(typeof s=="number")return s!==0;if(typeof s=="string"){const p=s.toLowerCase().trim();return["true","1","yes","on"].includes(p)}return!!s}if(m==="unit"){if(Array.isArray(s)&&s.length>=2)return s;if(Array.isArray(s)&&s.length===1)return[s[0],c&&c.defaultUnit||"m"];if(typeof s=="number")return[s,c&&c.defaultUnit||"m"];if(typeof s=="string"){const p=Number(s);return[Number.isNaN(p)?0:p,c&&c.defaultUnit||"m"]}return[0,c&&c.defaultUnit||"m"]}if(m.endsWith("[]")||m==="array"||m==="int-array"||m==="float-array")return Array.isArray(s)?s:typeof s=="string"?s.split(",").map(p=>p.trim()).filter(Boolean):[s]}catch{}return s},f=e.values||{};Object.keys(f).forEach(s=>{const u=f[s],c=a[s];if(!c)return;const m=Array.isArray(u)?"array":u===null?"null":typeof u,p=(c.type||"").toLowerCase();m===p||p==="string"&&typeof u=="string"?o[s]=u:o[s]=i(u,p,c)}),(r.properties||[]).forEach(s=>{const u=s.name;u in o||(o[u]=s.defaultValue)});try{typeof t=="function"&&t?.(e,n,r)}catch(s){return{success:!1,error:`Upgrade callback error: ${s instanceof Error?s.message:String(s)}`}}return{success:!0,instance:n}}catch(n){return{success:!1,error:`Error upgrading instance: ${n instanceof Error?n.message:"Unknown error"}`}}}const X=new Map,U={components:new Map,fieldValidators:new Map,formValidators:new Map,submissionHandlers:new Map};function vr(e,r,t){if(!e)return!0;if(t&&!t(e))return!1;switch(r){case"error":throw new Error(`Plugin conflict: "${e.newPlugin}" tried to register ${e.type} "${e.name}" already registered by "${e.existingPlugin}"`);case"warn":return console.warn(`Plugin conflict: "${e.newPlugin}" tried to register ${e.type} "${e.name}" already registered by "${e.existingPlugin}". Skipping.`),!1;case"override":return console.info(`Plugin "${e.newPlugin}" is overriding ${e.type} "${e.name}" previously registered by "${e.existingPlugin}"`),!0;case"skip":return!1}}function Qt(e){const r=[];if(e.components){for(const t of Object.keys(e.components))if(Ie(t)){const o=U.components.get(t);o&&o!==e.name&&r.push({type:"component",name:t,existingPlugin:o,newPlugin:e.name})}}if(e.fieldValidators)for(const[t,n]of Object.entries(e.fieldValidators))for(const o of Object.keys(n)){const i=U.fieldValidators.get(t)?.get(o);nr(t,o)&&i&&i!==e.name&&r.push({type:"fieldValidator",name:`${t}:${o}`,existingPlugin:i,newPlugin:e.name})}if(e.formValidators)for(const t of Object.keys(e.formValidators)){const n=or(t),o=U.formValidators.get(t);n&&o&&o!==e.name&&r.push({type:"formValidator",name:t,existingPlugin:o,newPlugin:e.name})}if(e.submissionHandlers)for(const t of Object.keys(e.submissionHandlers)){const n=Wt(t),o=U.submissionHandlers.get(t);n&&o&&o!==e.name&&r.push({type:"submissionHandler",name:t,existingPlugin:o,newPlugin:e.name})}return r}function ce(e,r,t,n,o,a,i,f){for(const s of Object.keys(e)){let u;if(f?u=o.find(c=>c.type==="fieldValidator"&&c.name===`${f}:${s}`):e===n.components?u=o.find(c=>c.type==="component"&&c.name===s):e===n.formValidators?u=o.find(c=>c.type==="formValidator"&&c.name===s):e===n.submissionHandlers&&(u=o.find(c=>c.type==="submissionHandler"&&c.name===s)),vr(u||null,a,i))if(f){const c=r.get(f)||new Map;c.set(s,n.name),r.set(f,c),t(s,e[s])}else r.set(s,n.name),t(s,e[s])}}function Zt(e,r){const t=r?.conflictResolution||"error";if(X.has(e.name)){const o={type:"plugin",name:e.name,existingPlugin:e.name,newPlugin:e.name};if(!vr(o,t,r?.onConflict))return}const n=Qt(e);if(e.components&&ce(e.components,U.components,Ne,e,n,t,r?.onConflict),e.fieldValidators)for(const[o,a]of Object.entries(e.fieldValidators))ce(a,U.fieldValidators,(i,f)=>tr(o,i,f),e,n,t,r?.onConflict,o);e.formValidators&&ce(e.formValidators,U.formValidators,rr,e,n,t,r?.onConflict),e.submissionHandlers&&ce(e.submissionHandlers,U.submissionHandlers,$e,e,n,t,r?.onConflict),e.setup&&e.setup(),X.set(e.name,e)}function en(e,r=!1){const t=X.get(e);if(!t)return!1;if(t.cleanup&&t.cleanup(),r){if(t.components)for(const n of Object.keys(t.components))U.components.delete(n);if(t.fieldValidators)for(const[n,o]of Object.entries(t.fieldValidators)){const a=U.fieldValidators.get(n);if(a){for(const i of Object.keys(o))a.delete(i);a.size===0&&U.fieldValidators.delete(n)}}if(t.formValidators)for(const n of Object.keys(t.formValidators))U.formValidators.delete(n);if(t.submissionHandlers)for(const n of Object.keys(t.submissionHandlers))U.submissionHandlers.delete(n)}return X.delete(e),!0}function rn(e){return X.get(e)}function tn(){return Array.from(X.values())}function nn(e){return X.has(e)}function on(e){for(const[r,t]of Object.entries(e))Ne(r,t)}function an(e){const[r,t]=l.useState(null);return l.useEffect(()=>{const n=document.querySelector("[data-reactaform-theme]");if(!n)return;const o=n.closest("[data-reactaform-theme]");if(!o)return;const a=()=>t(o.getAttribute("data-reactaform-theme"));a();const i=new MutationObserver(f=>{for(const s of f)s.type==="attributes"&&s.attributeName==="data-reactaform-theme"&&a()});return i.observe(o,{attributes:!0,attributeFilter:["data-reactaform-theme"]}),()=>i.disconnect()},[e]),r}const sn=({definitionData:e,instance:r,language:t,className:n,theme:o,style:a})=>{const i=l.useMemo(()=>{try{return typeof e=="string"?JSON.parse(e):e??null}catch{return null}},[e]),f={fontSize:"inherit",fontFamily:"inherit",...a},s=an(),u=o??s??"light",c=t??"en";l.useEffect(()=>{let p=document.getElementById("popup-root");p||(p=document.createElement("div"),p.id="popup-root",document.body.appendChild(p))},[]);const m=l.useMemo(()=>{if(r)return r;if(!i)return null;const p=xr(i,i.name);return!p.success||!p.instance?null:p.instance},[r,i]);return i?m?d.jsx(br,{definitionName:i.name,defaultStyle:f,defaultLanguage:c,defaultTheme:u,defaultLocalizeName:i.localization||"",className:n,children:d.jsx(yr,{definition:i,instance:m})}):d.jsx("div",{style:{color:"red"},children:"Error: Failed to create instance from definition."}):d.jsx("div",{style:{color:"red"},children:"Error: No form definition provided."})};function wr(){if(!document.getElementById("reactaform-styles"))try{const e=document.createElement("style");e.id="reactaform-styles",e.textContent=Nr,document.head.appendChild(e)}catch{}}typeof document<"u"&&wr();exports.CSS_CLASSES=R;exports.ReactaForm=sn;exports.ReactaFormProvider=br;exports.ReactaFormRenderer=yr;exports.StandardFieldLayout=z;exports.Units=rt;exports.combineClasses=T;exports.createInstanceFromDefinition=xr;exports.deserializeDefinition=Wr;exports.deserializeInstance=Tr;exports.getAllPlugins=tn;exports.getComponent=Ie;exports.getPlugin=rn;exports.hasPlugin=nn;exports.injectReactaFormStyles=wr;exports.isDarkTheme=oe;exports.loadInstance=Yt;exports.loadJsonDefinition=Gt;exports.registerComponent=Ne;exports.registerComponents=on;exports.registerFieldValidationHandler=tr;exports.registerFormValidationHandler=rr;exports.registerPlugin=Zt;exports.registerSubmissionHandler=$e;exports.serializeDefinition=Ur;exports.serializeInstance=Lr;exports.unregisterPlugin=en;exports.upgradeInstanceToLatestDefinition=Xt;exports.useDebouncedCallback=Ge;exports.useReactaFormContext=A;exports.validateFieldValue=zr;exports.validateFieldWithHandler=Se;
@@ -1 +1 @@
1
- :root{--reactaform-primary-bg: #f9f9f9;--reactaform-secondary-bg: #fff;--reactaform-text-color: #000;--reactaform-text-muted: #666;--reactaform-border-color: #ccc;--reactaform-border-hover: #999;--reactaform-border-focus: #4CAF50;--reactaform-error-color: #e11d48;--reactaform-success-color: #4CAF50;--reactaform-space: 8px;--reactaform-space-lg: 12px;--reactaform-hover-bg: #f5f5f5;--reactaform-column-gap: var(--reactaform-space);--reactaform-inline-gap: var(--reactaform-space);--reactaform-label-gap: 4px;--reactaform-font-size: 14px;--reactaform-font-weight: 500;--reactaform-border-radius: 0px;--reactaform-shadow: 0 2px 4px rgba(0, 0, 0, .1);--reactaform-button-bg: var(--reactaform-success-color);--reactaform-button-text: #ffffff;--reactaform-button-padding: var(--reactaform-space) 12px;--reactaform-button-border-radius: var(--reactaform-border-radius);--reactaform-button-font-size: 14px;--reactaform-button-font-weight: var(--reactaform-font-weight);--reactaform-button-hover-opacity: .9;--reactaform-button-disabled-opacity: .6;--reactaform-button-disabled-bg: #cccccc;--reactaform-button-disabled-cursor: not-allowed;--reactaform-button-margin-top: .5em;--reactaform-button-shadow: none;--reactaform-input-padding: var(--reactaform-space);--reactaform-container-padding: var(--reactaform-space-lg);--reactaform-field-gap: var(--reactaform-space);--reactaform-input-bg: var(--reactaform-secondary-bg);--reactaform-field-text-color: #0000ff;--reactaform-tooltip-color-bg: rgba(60,60,60,.92);--reactaform-tooltip-color: #ffffff}[data-reactaform-theme=dark]{--reactaform-primary-bg: #121212;--reactaform-secondary-bg: #1A1A1A;--reactaform-input-bg: #262626;--reactaform-text-color: #EDEDED;--reactaform-text-muted: #A5A5A5;--reactaform-field-text-color: #C8C8E5;--reactaform-border-color: #3A3A3A;--reactaform-border-hover: #4A4A4A;--reactaform-border-focus: #4DA6FF;--reactaform-error-color: #FF6B6B;--reactaform-success-color: #4CAF6A;--reactaform-hover-bg: rgba(255, 255, 255, .06);--reactaform-shadow: 0 2px 8px rgba(0, 0, 0, .45);--reactaform-tooltip-color-bg: rgba(40, 40, 40, .95);--reactaform-tooltip-color: #F5F5F5}.reactaform-container{background-color:var(--reactaform-primary-bg);color:var(--reactaform-text-color);padding:var(--reactaform-container-padding);border-radius:var(--reactaform-border-radius);box-shadow:var(--reactaform-shadow);gap:var(--reactaform-space-lg);max-width:100%;margin:0 auto}.reactaform-field{display:grid;grid-template-columns:1fr 2fr;align-items:start;padding:0;gap:var(--reactaform-column-gap);margin-bottom:var(--reactaform-field-gap)}.reactaform-label{justify-self:start;align-self:center;white-space:normal;line-height:1.4;min-width:100px;color:var(--reactaform-text-color);font-weight:600;font-size:var(--reactaform-font-size);-webkit-user-select:none;user-select:none}.reactaform-input{width:100%;color:var(--reactaform-text-color);border:1px solid var(--reactaform-border-color);border-radius:var(--reactaform-border-radius);padding:var(--reactaform-input-padding);box-sizing:border-box;background-color:var(--reactaform-input-bg);font-size:var(--reactaform-font-size);transition:border-color .2s ease;box-shadow:inset 0 1px #ffffff08}.reactaform-input:hover{border-color:var(--reactaform-border-hover)}.reactaform-input:focus{outline:none;border-color:var(--reactaform-border-focus);box-shadow:0 0 0 3px #22d3ee66,0 0 16px #22d3ee40,inset 0 1px #ffffff0d}.reactaform-input--text{text-align:left}.reactaform-input--number{text-align:right}.reactaform-input--select{text-align:left;appearance:none;background-image:url("data:image/svg+xml;utf8,<svg fill='%23666' height='8' viewBox='0 0 24 24' width='8' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/></svg>");background-repeat:no-repeat;background-position:right var(--reactaform-space) center;background-size:20px;padding-right:32px}.reactaform-select{text-align:left;appearance:none;background-image:url("data:image/svg+xml;utf8,<svg fill='%23666' height='8' viewBox='0 0 24 24' width='8' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/></svg>");background-repeat:no-repeat;background-position:right var(--reactaform-space) center;background-size:2.5em;padding-right:32px;background-color:var(--reactaform-input-bg)}.reactaform-textarea{width:100%;background-color:var(--reactaform-input-bg);color:var(--reactaform-text-color);border:1px solid var(--reactaform-border-color);border-radius:var(--reactaform-border-radius);padding:var(--reactaform-input-padding);box-sizing:border-box}@media(max-width:1024px){.reactaform-container{padding:calc(var(--reactaform-space) * .8)}.reactaform-field{gap:calc(var(--reactaform-column-gap) * .8)}}@media(max-width:768px){.reactaform-field{grid-template-columns:1fr;gap:6px}.reactaform-label{justify-self:start;margin-bottom:4px;font-size:.9rem}.reactaform-container{padding:var(--reactaform-space)}.reactaform-input,.reactaform-textarea,.reactaform-select{font-size:16px;padding:12px}.reactaform-checkbox-wrapper,.reactaform-radio-wrapper{padding:8px 0;min-height:44px;align-items:center}.reactaform-group{margin-bottom:calc(var(--reactaform-space) * 1.5)}}@media(max-width:480px){.reactaform-container{padding:calc(var(--reactaform-space) * .7)}.reactaform-field{gap:8px}.reactaform-label{font-size:.85rem;line-height:1.3}.reactaform-input,.reactaform-textarea,.reactaform-select{padding:14px}}
1
+ :root{--reactaform-primary-bg: #f9f9f9;--reactaform-secondary-bg: #fff;--reactaform-text-color: #000;--reactaform-text-muted: #666;--reactaform-border-color: #ccc;--reactaform-border-hover: #999;--reactaform-border-focus: #4CAF50;--reactaform-error-color: #e11d48;--reactaform-success-color: #4CAF50;--reactaform-space: 8px;--reactaform-space-lg: 12px;--reactaform-hover-bg: #f5f5f5;--reactaform-column-gap: var(--reactaform-space);--reactaform-inline-gap: var(--reactaform-space);--reactaform-label-gap: 4px;--reactaform-font-size: 14px;--reactaform-font-weight: 500;--reactaform-border-radius: 0px;--reactaform-shadow: 0 2px 4px rgba(0, 0, 0, .1);--reactaform-button-bg: var(--reactaform-success-color);--reactaform-button-text: #ffffff;--reactaform-button-padding: var(--reactaform-space) 12px;--reactaform-button-border-radius: var(--reactaform-border-radius);--reactaform-button-font-size: 14px;--reactaform-button-font-weight: var(--reactaform-font-weight);--reactaform-button-hover-opacity: .9;--reactaform-button-disabled-opacity: .6;--reactaform-button-disabled-bg: #cccccc;--reactaform-button-disabled-cursor: not-allowed;--reactaform-button-margin-top: .5em;--reactaform-button-shadow: none;--reactaform-input-padding: var(--reactaform-space);--reactaform-container-padding: var(--reactaform-space-lg);--reactaform-field-gap: var(--reactaform-space);--reactaform-input-bg: var(--reactaform-secondary-bg);--reactaform-field-text-color: #0000ff;--reactaform-tooltip-color-bg: rgba(60,60,60,.92);--reactaform-tooltip-color: #ffffff}[data-reactaform-theme=dark]{--reactaform-primary-bg: #121212;--reactaform-secondary-bg: #1A1A1A;--reactaform-input-bg: #262626;--reactaform-text-color: #EDEDED;--reactaform-text-muted: #A5A5A5;--reactaform-field-text-color: #C8C8E5;--reactaform-border-color: #3A3A3A;--reactaform-border-hover: #4A4A4A;--reactaform-border-focus: #4DA6FF;--reactaform-error-color: #FF6B6B;--reactaform-success-color: #4CAF6A;--reactaform-hover-bg: rgba(255, 255, 255, .06);--reactaform-shadow: 0 2px 8px rgba(0, 0, 0, .45);--reactaform-tooltip-color-bg: rgba(40, 40, 40, .95);--reactaform-tooltip-color: #F5F5F5}.reactaform-container{background-color:var(--reactaform-primary-bg);color:var(--reactaform-text-color);padding:var(--reactaform-container-padding);border-radius:var(--reactaform-border-radius);box-shadow:var(--reactaform-shadow);gap:var(--reactaform-space-lg);max-width:100%;margin:0 auto}.reactaform-field{display:grid;grid-template-columns:1fr 2fr;align-items:start;padding:0;gap:var(--reactaform-column-gap);margin-bottom:var(--reactaform-field-gap)}.reactaform-label{justify-self:start;align-self:center;white-space:normal;line-height:1.4;min-width:100px;color:var(--reactaform-text-color);font-weight:600;font-size:var(--reactaform-font-size);-webkit-user-select:none;user-select:none}.reactaform-input{width:100%;color:var(--reactaform-text-color);border:1px solid var(--reactaform-border-color);border-radius:var(--reactaform-border-radius);padding:var(--reactaform-input-padding);box-sizing:border-box;background-color:var(--reactaform-input-bg);font-size:var(--reactaform-font-size);transition:border-color .2s ease;box-shadow:inset 0 1px #ffffff08}.reactaform-input:hover{border-color:var(--reactaform-border-hover)}.reactaform-input:focus{outline:none;border-color:var(--reactaform-border-focus);box-shadow:0 0 0 3px #22d3ee66,0 0 16px #22d3ee40,inset 0 1px #ffffff0d}.reactaform-input--text{text-align:left}.reactaform-input--number{text-align:right}.reactaform-input--select{text-align:left;appearance:none;background-image:url("data:image/svg+xml;utf8,<svg fill='%23666' height='8' viewBox='0 0 24 24' width='8' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/></svg>");background-repeat:no-repeat;background-position:right var(--reactaform-space) center;background-size:20px;padding-right:32px}.reactaform-select{text-align:left;appearance:none;background-image:url("data:image/svg+xml;utf8,<svg fill='%23666' height='8' viewBox='0 0 24 24' width='8' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/></svg>");background-repeat:no-repeat;background-position:right var(--reactaform-space) center;background-size:2.5em;padding-right:32px;background-color:var(--reactaform-input-bg)}.reactaform-textarea{width:100%;background-color:var(--reactaform-input-bg);color:var(--reactaform-text-color);border:1px solid var(--reactaform-border-color);border-radius:var(--reactaform-border-radius);padding:var(--reactaform-input-padding);box-sizing:border-box}.reactaform-chip{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;background-color:var(--reactaform-input-bg);border:1px solid var(--reactaform-border-color);border-radius:var(--reactaform-border-radius);color:var(--reactaform-text-color);font-size:.875rem;gap:8px}@media(max-width:1024px){.reactaform-container{padding:calc(var(--reactaform-space) * .8)}.reactaform-field{gap:calc(var(--reactaform-column-gap) * .8)}}@media(max-width:768px){.reactaform-field{grid-template-columns:1fr;gap:6px}.reactaform-label{justify-self:start;margin-bottom:4px;font-size:.9rem}.reactaform-container{padding:var(--reactaform-space)}.reactaform-input,.reactaform-textarea,.reactaform-select{font-size:16px;padding:12px}.reactaform-checkbox-wrapper,.reactaform-radio-wrapper{padding:8px 0;min-height:44px;align-items:center}.reactaform-group{margin-bottom:calc(var(--reactaform-space) * 1.5)}}@media(max-width:480px){.reactaform-container{padding:calc(var(--reactaform-space) * .7)}.reactaform-field{gap:8px}.reactaform-label{font-size:.85rem;line-height:1.3}.reactaform-input,.reactaform-textarea,.reactaform-select{padding:14px}}