@forms.expert/sdk 0.4.5 → 0.4.7

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.
@@ -1,4 +1,4 @@
1
- "use strict";var FormsExpert=(()=>{var T=Object.defineProperty;var O=Object.getOwnPropertyDescriptor;var H=Object.getOwnPropertyNames;var V=Object.prototype.hasOwnProperty;var W=(t,e)=>{for(var i in e)T(t,i,{get:e[i],enumerable:!0})},q=(t,e,i,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of H(e))!V.call(t,a)&&a!==i&&T(t,a,{get:()=>e[a],enumerable:!(s=O(e,a))||s.enumerable});return t};var D=t=>q(T({},"__esModule",{value:!0}),t);var oe={};W(oe,{FormWidget:()=>$,autoInit:()=>M,errorsToRecord:()=>P,generateFormStyles:()=>R,renderField:()=>E,renderForm:()=>L,renderSuccess:()=>z});var B={theme:"light",primaryColor:"#3b82f6",backgroundColor:"#ffffff",textColor:"#1f2937",borderRadius:"md",fontSize:"md",buttonStyle:"filled",labelPosition:"top"};function j(t){switch(t){case"none":return"0";case"sm":return"0.125rem";case"md":return"0.375rem";case"lg":return"0.5rem";default:return"0.375rem"}}function K(t){switch(t){case"none":return"0";case"small":return"0.25rem";case"medium":return"0.375rem";case"large":return"0.75rem";case"full":return"9999px";default:return"0.375rem"}}function _(t){switch(t){case"none":return"0";case"small":return"4px";case"medium":return"8px";case"large":return"12px";case"full":return"9999px";default:return"8px"}}function G(t){switch(t){case"sm":case"small":return"0.875rem";case"md":case"medium":return"1rem";case"lg":case"large":return"1.125rem";default:return"1rem"}}function Y(t){switch(t){case"small":return"0.75rem";case"large":return"1rem";default:return"0.875rem"}}function X(t){switch(t){case"compact":return"0.5rem";case"relaxed":return"1.5rem";case"spacious":return"2rem";default:return"1rem"}}function J(t){switch(t){case"none":return"0";case"compact":return"1rem";case"relaxed":return"2.5rem";case"spacious":return"3.5rem";default:return"1.5rem"}}function Q(t){switch(t){case"compact":return"0.125rem";case"relaxed":return"0.75rem";default:return"0.25rem"}}function Z(t){switch(t){case"narrow":return"28rem";case"wide":return"48rem";case"full":return"100%";default:return"36rem"}}function ee(t){switch(t){case"left":return"flex-start";case"right":return"flex-end";default:return"center"}}function R(t=B){let e={...B,...t},i=j(e.borderRadius),s=K(e.fieldBorderRadius),a=_(e.buttonRadius),m=G(e.fontSize),c=Y(e.placeholderFontSize),o=X(e.fieldSpacing),d=J(e.formPadding),p=Q(e.labelSpacing),n=Z(e.formWidth),r=e.primaryColor,u=e.buttonColor,l=e.fieldBorderColor||(e.theme==="dark"?"#4b5563":"#d1d5db"),g=e.separatorColor||(e.theme==="dark"?"#4b5563":"#d1d5db"),f=e.fontFamily?e.fontFamily.includes(",")?e.fontFamily:`${e.fontFamily}, sans-serif`:"inherit",h=ee(e.buttonAlign),C={small:{px:"0.75rem",py:"0.375rem",fs:"0.875rem"},medium:{px:"1.25rem",py:"0.625rem",fs:"1rem"},large:{px:"1.75rem",py:"0.875rem",fs:"1.125rem"}}[e.buttonSize||"medium"],S=e.buttonPaddingX!=null?`${e.buttonPaddingX}px`:C.px,N=e.buttonPaddingY!=null?`${e.buttonPaddingY}px`:C.py,A=e.buttonFontSize!=null?`${e.buttonFontSize}px`:C.fs,U=e.buttonGradient||(e.buttonStyle==="filled"?r:"transparent");return`
1
+ "use strict";var FormsExpert=(()=>{var T=Object.defineProperty;var O=Object.getOwnPropertyDescriptor;var H=Object.getOwnPropertyNames;var V=Object.prototype.hasOwnProperty;var q=(t,e)=>{for(var a in e)T(t,a,{get:e[a],enumerable:!0})},W=(t,e,a,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let l of H(e))!V.call(t,l)&&l!==a&&T(t,l,{get:()=>e[l],enumerable:!(i=O(e,l))||i.enumerable});return t};var D=t=>W(T({},"__esModule",{value:!0}),t);var ie={};q(ie,{FormWidget:()=>F,autoInit:()=>I,errorsToRecord:()=>P,generateFormStyles:()=>R,renderField:()=>E,renderForm:()=>L,renderSuccess:()=>z});var A={theme:"light",primaryColor:"#3b82f6",backgroundColor:"#ffffff",textColor:"#1f2937",borderRadius:"md",fontSize:"md",buttonStyle:"filled",labelPosition:"top"};function j(t){switch(t){case"none":return"0";case"sm":return"0.125rem";case"md":return"0.375rem";case"lg":return"0.5rem";default:return"0.375rem"}}function K(t){switch(t){case"none":return"0";case"small":return"0.25rem";case"medium":return"0.375rem";case"large":return"0.75rem";case"full":return"9999px";default:return"0.375rem"}}function _(t){switch(t){case"none":return"0";case"small":return"4px";case"medium":return"8px";case"large":return"12px";case"full":return"9999px";default:return"8px"}}function Y(t){switch(t){case"sm":case"small":return"0.875rem";case"md":case"medium":return"1rem";case"lg":case"large":return"1.125rem";default:return"1rem"}}function X(t){switch(t){case"small":return"0.75rem";case"large":return"1rem";default:return"0.875rem"}}function G(t){switch(t){case"compact":return"0.5rem";case"relaxed":return"1.5rem";case"spacious":return"2rem";default:return"1rem"}}function J(t){switch(t){case"none":return"0";case"compact":return"1rem";case"relaxed":return"2.5rem";case"spacious":return"3.5rem";default:return"1.5rem"}}function Q(t){switch(t){case"compact":return"0.125rem";case"relaxed":return"0.75rem";default:return"0.25rem"}}function Z(t){switch(t){case"narrow":return"28rem";case"wide":return"48rem";case"full":return"100%";default:return"36rem"}}function ee(t){switch(t){case"left":return"flex-start";case"right":return"flex-end";default:return"center"}}function R(t=A){let e={...A,...t},a=j(e.borderRadius),i=K(e.fieldBorderRadius),l=_(e.buttonRadius),c=Y(e.fontSize),d=X(e.placeholderFontSize),n=G(e.fieldSpacing),m=J(e.formPadding),p=Q(e.labelSpacing),s=Z(e.formWidth),r=e.primaryColor,u=e.buttonColor,o=e.fieldBorderColor||(e.theme==="dark"?"#4b5563":"#d1d5db"),g=e.separatorColor||(e.theme==="dark"?"#4b5563":"#d1d5db"),f=e.fontFamily?e.fontFamily.includes(",")?e.fontFamily:`${e.fontFamily}, sans-serif`:"inherit",h=ee(e.buttonAlign),y={small:{px:"0.75rem",py:"0.375rem",fs:"0.875rem"},medium:{px:"1.25rem",py:"0.625rem",fs:"1rem"},large:{px:"1.75rem",py:"0.875rem",fs:"1.125rem"}}[e.buttonSize||"medium"],S=e.buttonPaddingX!=null?`${e.buttonPaddingX}px`:y.px,N=e.buttonPaddingY!=null?`${e.buttonPaddingY}px`:y.py,M=e.buttonFontSize!=null?`${e.buttonFontSize}px`:y.fs,U=e.buttonGradient||(e.buttonStyle==="filled"?r:"transparent");return`
2
2
  .forms-expert-wrapper {
3
3
  ${e.backgroundImageUrl?`background-image: url(${e.backgroundImageUrl}); background-size: cover; background-position: center;`:""}
4
4
  ${e.backgroundImageUrl?"":`background-color: ${e.backgroundColor};`}
@@ -14,13 +14,13 @@
14
14
 
15
15
  .forms-expert {
16
16
  font-family: ${f};
17
- font-size: ${m};
17
+ font-size: ${c};
18
18
  color: ${e.textColor};
19
19
  background-color: ${e.transparentBackground?"transparent":e.backgroundColor};
20
- padding: ${d};
21
- border-radius: ${i};
20
+ padding: ${m};
21
+ border-radius: ${a};
22
22
  box-sizing: border-box;
23
- max-width: ${n};
23
+ max-width: ${s};
24
24
  width: 100%;
25
25
  margin: 0 auto;
26
26
  position: relative;
@@ -44,12 +44,12 @@
44
44
  width: 100%;
45
45
  max-height: 200px;
46
46
  object-fit: cover;
47
- border-radius: ${i} ${i} 0 0;
47
+ border-radius: ${a} ${a} 0 0;
48
48
  margin-bottom: 1rem;
49
49
  }
50
50
 
51
51
  .forms-expert-group {
52
- margin-bottom: ${o};
52
+ margin-bottom: ${n};
53
53
  ${e.labelPosition==="left"||e.fieldLayout==="inline"?"display: flex; align-items: flex-start; gap: 1rem;":""}
54
54
  }
55
55
 
@@ -74,10 +74,10 @@
74
74
  .forms-expert-select {
75
75
  width: 100%;
76
76
  padding: ${e.fieldPaddingX!=null||e.fieldPaddingY!=null?`${e.fieldPaddingY??8}px ${e.fieldPaddingX??12}px`:"0.5rem 0.75rem"};
77
- border: ${e.fieldBorderStyle==="bottom"?"none":`1px solid ${l}`};
78
- ${e.fieldBorderStyle==="bottom"?`border-bottom: 1px solid ${l};`:""}
79
- border-radius: ${e.fieldBorderStyle==="bottom"?"0":s};
80
- font-size: ${m};
77
+ border: ${e.fieldBorderStyle==="bottom"?"none":`1px solid ${o}`};
78
+ ${e.fieldBorderStyle==="bottom"?`border-bottom: 1px solid ${o};`:""}
79
+ border-radius: ${e.fieldBorderStyle==="bottom"?"0":i};
80
+ font-size: ${c};
81
81
  font-family: inherit;
82
82
  background-color: ${e.inputBackgroundColor||(e.theme==="dark"?"#374151":"#ffffff")};
83
83
  color: ${e.textColor};
@@ -86,7 +86,7 @@
86
86
 
87
87
  .forms-expert-input::placeholder,
88
88
  .forms-expert-textarea::placeholder {
89
- font-size: ${c};${e.placeholderColor?`
89
+ font-size: ${d};${e.placeholderColor?`
90
90
  color: ${e.placeholderColor};`:""}
91
91
  }
92
92
 
@@ -105,6 +105,36 @@
105
105
  border-color: #ef4444;
106
106
  }
107
107
 
108
+ .forms-expert-select-dropdown {
109
+ position: absolute;
110
+ top: 100%;
111
+ left: 0;
112
+ right: 0;
113
+ z-index: 50;
114
+ margin-top: 4px;
115
+ background-color: ${e.inputBackgroundColor||(e.theme==="dark"?"#374151":"#ffffff")};
116
+ border: 1px solid ${o};
117
+ border-radius: ${i};
118
+ box-shadow: 0 4px 12px rgba(0,0,0,0.15);
119
+ max-height: 200px;
120
+ overflow-y: auto;
121
+ }
122
+
123
+ .forms-expert-select-option {
124
+ padding: ${e.fieldPaddingX!=null||e.fieldPaddingY!=null?`${e.fieldPaddingY??8}px ${e.fieldPaddingX??12}px`:"0.5rem 0.75rem"};
125
+ cursor: pointer;
126
+ font-size: ${c};
127
+ transition: background-color 0.1s;
128
+ }
129
+
130
+ .forms-expert-select-option:hover {
131
+ background-color: ${e.primaryColor}15;
132
+ }
133
+
134
+ .forms-expert-select-option.active {
135
+ background-color: ${e.primaryColor}20;
136
+ }
137
+
108
138
  .forms-expert-textarea {
109
139
  min-height: 100px;
110
140
  resize: vertical;
@@ -114,7 +144,7 @@
114
144
  display: flex;
115
145
  align-items: flex-start;
116
146
  gap: 0.5rem;
117
- margin-bottom: ${o};
147
+ margin-bottom: ${n};
118
148
  }
119
149
 
120
150
  .forms-expert-checkbox {
@@ -138,8 +168,8 @@
138
168
  align-items: center;
139
169
  justify-content: center;
140
170
  gap: 0.5rem;
141
- border: 2px dashed ${l};
142
- border-radius: ${s};
171
+ border: 2px dashed ${o};
172
+ border-radius: ${i};
143
173
  padding: 1.5rem;
144
174
  cursor: pointer;
145
175
  transition: border-color 0.15s, background-color 0.15s;
@@ -153,10 +183,10 @@
153
183
  .forms-expert-file {
154
184
  width: 100%;
155
185
  padding: 0.5rem 0.75rem;
156
- border: ${e.fieldBorderStyle==="bottom"?"none":`1px solid ${l}`};
157
- ${e.fieldBorderStyle==="bottom"?`border-bottom: 1px solid ${l};`:""}
158
- border-radius: ${e.fieldBorderStyle==="bottom"?"0":s};
159
- font-size: ${m};
186
+ border: ${e.fieldBorderStyle==="bottom"?"none":`1px solid ${o}`};
187
+ ${e.fieldBorderStyle==="bottom"?`border-bottom: 1px solid ${o};`:""}
188
+ border-radius: ${e.fieldBorderStyle==="bottom"?"0":i};
189
+ font-size: ${c};
160
190
  background-color: ${e.inputBackgroundColor||(e.theme==="dark"?"#374151":"#ffffff")};
161
191
  cursor: pointer;
162
192
  }
@@ -170,7 +200,7 @@
170
200
  .forms-expert-divider {
171
201
  border: none;
172
202
  border-top: 1px solid ${g};
173
- margin: ${o} 0;
203
+ margin: ${n} 0;
174
204
  }
175
205
 
176
206
  .forms-expert-button-wrapper {
@@ -185,9 +215,9 @@
185
215
  ${e.buttonFullWidth?"width: 100%;":e.buttonAlign?"":"width: 100%;"}
186
216
  padding: ${N} ${S};
187
217
  font-weight: 500;
188
- font-size: ${A};
218
+ font-size: ${M};
189
219
  font-family: inherit;
190
- border-radius: ${a};
220
+ border-radius: ${l};
191
221
  cursor: pointer;
192
222
  transition: opacity 0.2s, transform 0.1s;
193
223
  max-width: 100%;
@@ -283,9 +313,9 @@
283
313
  justify-content: center;
284
314
  padding: 0.625rem 1.25rem;
285
315
  font-weight: 500;
286
- font-size: ${m};
316
+ font-size: ${c};
287
317
  font-family: inherit;
288
- border-radius: ${a};
318
+ border-radius: ${l};
289
319
  cursor: pointer;
290
320
  transition: opacity 0.2s;
291
321
  text-decoration: none;
@@ -318,7 +348,7 @@
318
348
  .forms-expert-scale { display: flex; gap: 0.25rem; flex-wrap: wrap; }
319
349
  .forms-expert-scale-labels { display: flex; justify-content: space-between; font-size: 0.75rem; color: ${e.theme==="dark"?"#9ca3af":"#6b7280"}; margin-top: 0.25rem; }
320
350
  .forms-expert-scale-btn {
321
- min-width: 2.25rem; height: 2.25rem; border-radius: ${i}; cursor: pointer;
351
+ min-width: 2.25rem; height: 2.25rem; border-radius: ${a}; cursor: pointer;
322
352
  border: 1px solid ${e.theme==="dark"?"#4b5563":"#d1d5db"};
323
353
  background: ${e.theme==="dark"?"#374151":"#ffffff"}; color: ${e.textColor};
324
354
  font-size: 0.875rem; transition: all 0.15s;
@@ -329,7 +359,18 @@
329
359
 
330
360
  /* Radio & multiselect groups */
331
361
  .forms-expert-radio-group,
332
- .forms-expert-multiselect-group { display: flex; flex-direction: column; gap: 0.5rem; }
362
+ .forms-expert-multiselect-group {
363
+ display: flex;
364
+ flex-direction: column;
365
+ gap: 0.5rem;
366
+ width: 100%;
367
+ padding: ${e.fieldPaddingX!=null||e.fieldPaddingY!=null?`${e.fieldPaddingY??8}px ${e.fieldPaddingX??12}px`:"0.5rem 0.75rem"};
368
+ border: ${e.fieldBorderStyle==="bottom"?"none":`1px solid ${o}`};
369
+ ${e.fieldBorderStyle==="bottom"?`border-bottom: 1px solid ${o};`:""}
370
+ border-radius: ${e.fieldBorderStyle==="bottom"?"0":i};
371
+ background-color: ${e.inputBackgroundColor||(e.theme==="dark"?"#374151":"#ffffff")};
372
+ box-sizing: border-box;
373
+ }
333
374
  .forms-expert-radio-item,
334
375
  .forms-expert-multiselect-item { display: flex; align-items: center; gap: 0.5rem; cursor: pointer; }
335
376
  .forms-expert-radio-item input,
@@ -342,11 +383,11 @@
342
383
  /* Image choice */
343
384
  .forms-expert-image-choice { display: flex; flex-wrap: wrap; gap: 0.5rem; }
344
385
  .forms-expert-image-choice-item {
345
- border: 2px solid ${e.theme==="dark"?"#4b5563":"#d1d5db"}; border-radius: ${i};
386
+ border: 2px solid ${e.theme==="dark"?"#4b5563":"#d1d5db"}; border-radius: ${a};
346
387
  padding: 0.5rem; cursor: pointer; text-align: center; transition: border-color 0.15s;
347
388
  }
348
389
  .forms-expert-image-choice-item.active { border-color: ${e.primaryColor}; }
349
- .forms-expert-image-choice-item img { max-width: 80px; max-height: 80px; object-fit: cover; border-radius: ${i}; }
390
+ .forms-expert-image-choice-item img { max-width: 80px; max-height: 80px; object-fit: cover; border-radius: ${a}; }
350
391
 
351
392
  /* Responsive button scaling */
352
393
  @media (max-width: 480px) {
@@ -354,22 +395,22 @@
354
395
  .forms-expert-secondary-btn {
355
396
  padding-left: max(0.5rem, min(${S}, 3vw));
356
397
  padding-right: max(0.5rem, min(${S}, 3vw));
357
- font-size: max(0.75rem, min(${A}, 3.5vw));
398
+ font-size: max(0.75rem, min(${M}, 3.5vw));
358
399
  }
359
400
  }
360
401
 
361
402
  ${e.customCss||""}
362
- `.trim()}function v(t){let e=document.createElement("div");return e.textContent=t,e.innerHTML}function te(t){switch(t){case"small":return"18px";case"large":return"30px";case"extra-large":return"36px";default:return"24px"}}function re(t){switch(t){case"small":return"14px";case"large":return"18px";default:return"16px"}}function b(t,e){return e?`${t} ${e}`:t}function ne(t){switch(t){case"1/4":return"25%";case"1/3":return"33.333%";case"1/2":return"50%";case"2/3":return"66.666%";case"3/4":return"75%";case"full":return"100%";default:return}}function E(t,e,i,s){let a=document.createElement("div");if(t.type==="heading"){a.className="forms-expert-group";let o=document.createElement("h3");if(o.className="forms-expert-heading",o.style.fontSize=te(s?.headingSize),o.textContent=t.label||"",a.appendChild(o),t.content){let d=document.createElement("p");d.className="forms-expert-heading-subtitle",d.textContent=t.content,a.appendChild(d)}return a}if(t.type==="divider"){let o=document.createElement("hr");return o.className="forms-expert-divider",o}if(t.type==="paragraph"){a.className="forms-expert-group";let o=t.paragraphFontSize?`${t.paragraphFontSize}px`:re(s?.paragraphSize);if(t.label){let d=document.createElement("p");d.className="forms-expert-paragraph-label",d.style.fontSize=o,d.textContent=t.label,a.appendChild(d)}if(t.content){let d=document.createElement("div");d.className="forms-expert-paragraph",d.style.fontSize=o,d.innerHTML=t.content,a.appendChild(d)}return a}if(t.type==="hidden"){let o=document.createElement("input");return o.type="hidden",o.name=t.name,o.value=String(t.defaultValue??e??""),a.appendChild(o),a.style.display="none",a}if(t.type==="checkbox"||t.type==="toggle"||t.type==="consent"){a.className="forms-expert-checkbox-group";let o=document.createElement("input");o.type="checkbox",o.id=`mira-field-${t.name}`,o.name=t.name,o.className="forms-expert-checkbox",o.checked=!!e,t.required&&(o.required=!0);let d=document.createElement("div"),p=document.createElement("label");p.htmlFor=o.id,p.style.cursor="pointer",t.type==="consent"&&t.consentFontSize&&(p.style.fontSize=`${t.consentFontSize}px`);let n=t.type==="consent"?t.consentText||t.label||t.name:t.label||t.name;if(p.innerHTML=`${v(n)}${t.required?'<span class="forms-expert-required">*</span>':""}`,d.appendChild(p),t.type==="consent"&&t.consentUrl){let r=document.createElement("a");r.href=t.consentUrl,r.target="_blank",r.rel="noopener noreferrer",r.textContent="View policy",r.className="forms-expert-consent-link",d.appendChild(r)}if(a.appendChild(o),a.appendChild(d),i){let r=document.createElement("div");r.className="forms-expert-error-message",r.textContent=i,a.appendChild(r)}return a}if(a.className="forms-expert-group",t.label){let o=document.createElement("label");o.className=`forms-expert-label${s?.labelClassName?" "+s.labelClassName:""}`,o.htmlFor=`mira-field-${t.name}`,o.innerHTML=`${v(t.label)}${t.required?'<span class="forms-expert-required">*</span>':""}`,a.appendChild(o)}let m=document.createElement("div");m.className="forms-expert-input-wrapper";let c;switch(t.type){case"textarea":case"richText":c=document.createElement("textarea"),c.className=b("forms-expert-textarea",s?.fieldClassName),c.value=String(e||""),t.maxLength&&(c.maxLength=t.maxLength);break;case"select":case"dropdown":{c=document.createElement("select"),c.className=b("forms-expert-select",s?.fieldClassName);let o=document.createElement("option");o.value="",o.textContent=t.placeholder||"Select an option...",c.appendChild(o),(t.options||[]).forEach(p=>{let n=document.createElement("option");n.value=p,n.textContent=p,e===p&&(n.selected=!0),c.appendChild(n)});break}case"radio":{let o=document.createElement("div");if(o.className="forms-expert-radio-group",(t.options||[]).forEach(p=>{let n=document.createElement("label");n.className="forms-expert-radio-item";let r=document.createElement("input");r.type="radio",r.name=t.name,r.value=p,r.checked=e===p,n.appendChild(r),n.appendChild(document.createTextNode(` ${p}`)),o.appendChild(n)}),m.appendChild(o),i){let p=document.createElement("div");p.className="forms-expert-error-message",p.textContent=i,m.appendChild(p)}return a.appendChild(m),a}case"multiselect":{let o=document.createElement("div");o.className="forms-expert-multiselect-group";let d=e||[];if((t.options||[]).forEach(n=>{let r=document.createElement("label");r.className="forms-expert-checkbox-item";let u=document.createElement("input");u.type="checkbox",u.name=t.name,u.value=n,u.checked=d.includes(n),r.appendChild(u),r.appendChild(document.createTextNode(` ${n}`)),o.appendChild(r)}),m.appendChild(o),i){let n=document.createElement("div");n.className="forms-expert-error-message",n.textContent=i,m.appendChild(n)}return a.appendChild(m),a}case"rating":{let o=document.createElement("div");o.className="forms-expert-rating";let d=t.ratingMax||5,p=e||0;for(let n=1;n<=d;n++){let r=document.createElement("button");r.type="button",r.className=`forms-expert-rating-star ${n<=p?"active":""}`,r.textContent="\u2605",r.dataset.value=String(n),o.appendChild(r)}if(m.appendChild(o),i){let n=document.createElement("div");n.className="forms-expert-error-message",n.textContent=i,m.appendChild(n)}return a.appendChild(m),a}case"scale":case"opinionScale":{let o=document.createElement("div");o.className="forms-expert-scale";let d=t.min??(t.type==="opinionScale"?0:1),p=t.max??(t.type==="opinionScale"?10:5),n=e;for(let r=d;r<=p;r++){let u=document.createElement("button");u.type="button",u.className=`forms-expert-scale-btn ${n===r?"active":""}`,u.textContent=String(r),u.dataset.value=String(r),o.appendChild(u)}if(m.appendChild(o),t.lowLabel||t.highLabel){let r=document.createElement("div");r.className="forms-expert-scale-labels",r.innerHTML=`<span>${v(t.lowLabel||"")}</span><span>${v(t.highLabel||"")}</span>`,m.appendChild(r)}if(i){let r=document.createElement("div");r.className="forms-expert-error-message",r.textContent=i,m.appendChild(r)}return a.appendChild(m),a}case"slider":{c=document.createElement("input"),c.type="range",c.className="forms-expert-slider",c.min=String(t.min??0),c.max=String(t.max??100),c.step=String(t.step??1),c.value=String(e??t.min??0);break}case"file":{let o=s?.theme==="dark"?"#4b5563":"#d1d5db",d=s?.theme==="dark"?"#9ca3af":"#6b7280",p=s?.primaryColor||"#3b82f6",n=document.createElement("label");n.htmlFor=`mira-field-${t.name}`,n.className="forms-expert-dropzone";let r=document.createElement("input");r.id=`mira-field-${t.name}`,r.name=t.name,r.type="file",r.style.cssText="position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0",t.allowedMimeTypes?.length&&(r.accept=t.allowedMimeTypes.join(",")),t.multiple&&(r.multiple=!0),n.appendChild(r);let u=document.createElement("div");u.innerHTML=`<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="${d}" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="17 8 12 3 7 8"/><line x1="12" x2="12" y1="3" y2="15"/></svg>`,n.appendChild(u);let l=document.createElement("span");if(l.style.cssText="font-size:0.875rem;font-weight:500",l.textContent="Drag & drop a file here, or click to browse",n.appendChild(l),t.allowedMimeTypes?.length){let g=document.createElement("span");g.style.cssText=`font-size:0.75rem;color:${d}`,g.textContent=t.allowedMimeTypes.join(", "),n.appendChild(g)}if(t.maxFileSize){let g=document.createElement("span");g.style.cssText=`font-size:0.75rem;color:${d}`;let f=t.maxFileSize;g.textContent=`Max size: ${f<1048576?`${(f/1024).toFixed(0)} KB`:`${(f/1048576).toFixed(0)} MB`}`,n.appendChild(g)}if(n.addEventListener("dragover",g=>{g.preventDefault(),n.style.borderColor=p,n.style.backgroundColor=s?.theme==="dark"?"rgba(255,255,255,0.08)":"rgba(0,0,0,0.04)"}),n.addEventListener("dragleave",()=>{n.style.borderColor=o,n.style.backgroundColor="transparent"}),n.addEventListener("drop",g=>{g.preventDefault(),n.style.borderColor=o,n.style.backgroundColor="transparent"}),a.appendChild(n),i){let g=document.createElement("div");g.className="forms-expert-error-message",g.textContent=i,a.appendChild(g)}return a}case"currency":{c=document.createElement("input"),c.type="number",c.className=b("forms-expert-input",s?.fieldClassName),c.value=String(e??""),t.min!==void 0&&(c.min=String(t.min)),t.max!==void 0&&(c.max=String(t.max)),c.step=String(t.step||.01);break}case"phone":c=document.createElement("input"),c.type="tel",c.className=b("forms-expert-input",s?.fieldClassName),c.value=String(e||"");break;case"url":c=document.createElement("input"),c.type="url",c.className=b("forms-expert-input",s?.fieldClassName),c.value=String(e||"");break;case"password":c=document.createElement("input"),c.type="password",c.className=b("forms-expert-input",s?.fieldClassName),c.value=String(e||"");break;case"time":c=document.createElement("input"),c.type="time",c.className=b("forms-expert-input",s?.fieldClassName),c.value=String(e||"");break;case"datetime":c=document.createElement("input"),c.type="datetime-local",c.className=b("forms-expert-input",s?.fieldClassName),c.value=String(e||"");break;case"colorPicker":c=document.createElement("input"),c.type="color",c.className="forms-expert-color",c.value=String(e||"#000000");break;case"dateRange":{let o=document.createElement("div");o.className="forms-expert-date-range";let d=e||{},p=document.createElement("input");p.type="date",p.className=b("forms-expert-input",s?.fieldClassName),p.name=`${t.name}.start`,p.value=d.start||"";let n=document.createElement("input");if(n.type="date",n.className=b("forms-expert-input",s?.fieldClassName),n.name=`${t.name}.end`,n.value=d.end||"",o.appendChild(p),o.appendChild(n),m.appendChild(o),i){let r=document.createElement("div");r.className="forms-expert-error-message",r.textContent=i,m.appendChild(r)}return a.appendChild(m),a}case"address":{let o=document.createElement("div");o.className="forms-expert-address";let d=t.addressFields||["street","city","state","zip","country"],p=e||{},n={street:"Street",street2:"Street Line 2",city:"City",state:"State",zip:"ZIP",country:"Country"};if(d.forEach(r=>{let u=document.createElement("input");u.type="text",u.className=b("forms-expert-input",s?.fieldClassName),u.name=`${t.name}.${r}`,u.placeholder=n[r]||r,u.value=p[r]||"",o.appendChild(u)}),m.appendChild(o),i){let r=document.createElement("div");r.className="forms-expert-error-message",r.textContent=i,m.appendChild(r)}return a.appendChild(m),a}case"name":{let o=document.createElement("div");o.className="forms-expert-name";let d=t.nameFields||["first","last"],p=e||{},n={prefix:"Prefix",first:"First Name",middle:"Middle",last:"Last Name",suffix:"Suffix"};if(d.forEach(r=>{let u=document.createElement("input");u.type="text",u.className=b("forms-expert-input",s?.fieldClassName),u.name=`${t.name}.${r}`,u.placeholder=n[r]||r,u.value=p[r]||"",o.appendChild(u)}),m.appendChild(o),i){let r=document.createElement("div");r.className="forms-expert-error-message",r.textContent=i,m.appendChild(r)}return a.appendChild(m),a}case"imageChoice":{let o=document.createElement("div");o.className="forms-expert-image-choice";let d=t.options||[],p=e;if(d.forEach(n=>{let r=document.createElement("button");if(r.type="button",r.className=`forms-expert-image-choice-item ${p===n.value?"active":""}`,r.dataset.value=n.value,n.imageUrl){let l=document.createElement("img");l.src=n.imageUrl,l.alt=n.label,r.appendChild(l)}let u=document.createElement("span");u.textContent=n.label,r.appendChild(u),o.appendChild(r)}),m.appendChild(o),i){let n=document.createElement("div");n.className="forms-expert-error-message",n.textContent=i,m.appendChild(n)}return a.appendChild(m),a}case"ranking":{let o=document.createElement("div");o.className="forms-expert-ranking";let d=t.options||[];if((e||[...d]).forEach((n,r)=>{let u=document.createElement("div");u.className="forms-expert-ranking-item",u.textContent=`${r+1}. ${n}`,u.dataset.value=n,o.appendChild(u)}),m.appendChild(o),i){let n=document.createElement("div");n.className="forms-expert-error-message",n.textContent=i,m.appendChild(n)}return a.appendChild(m),a}case"location":{let o=document.createElement("div");o.className="forms-expert-location";let d=e||{},p=document.createElement("input");p.type="text",p.className=b("forms-expert-input",s?.fieldClassName),p.name=`${t.name}.address`,p.placeholder="Address",p.value=d.address||"",o.appendChild(p);let n=document.createElement("div");n.className="forms-expert-location-coords";let r=document.createElement("input");r.type="number",r.className=b("forms-expert-input",s?.fieldClassName),r.name=`${t.name}.lat`,r.placeholder="Latitude",r.step="any",r.value=d.lat!==void 0?String(d.lat):"";let u=document.createElement("input");if(u.type="number",u.className=b("forms-expert-input",s?.fieldClassName),u.name=`${t.name}.lng`,u.placeholder="Longitude",u.step="any",u.value=d.lng!==void 0?String(d.lng):"",n.appendChild(r),n.appendChild(u),o.appendChild(n),m.appendChild(o),i){let l=document.createElement("div");l.className="forms-expert-error-message",l.textContent=i,m.appendChild(l)}return a.appendChild(m),a}default:c=document.createElement("input"),c.type=t.type==="email"?"email":t.type==="number"?"number":t.type==="date"?"date":"text",c.className=b("forms-expert-input",s?.fieldClassName),c.value=String(e||""),t.type==="number"&&(t.min!==void 0&&(c.min=String(t.min)),t.max!==void 0&&(c.max=String(t.max)),t.step!==void 0&&(c.step=String(t.step)));break}if(c.id=`mira-field-${t.name}`,c.name=t.name,t.placeholder&&"placeholder"in c&&(c.placeholder=t.placeholder),t.required&&(c.required=!0),i&&c.classList.add("forms-expert-error"),m.appendChild(c),i){let o=document.createElement("div");o.className="forms-expert-error-message",o.textContent=i,m.appendChild(o)}return a.appendChild(m),a}function L(t,e={},i={},s={}){let a=document.createElement("form");if(a.className="forms-expert",s.hideRequiredAsterisk){let l=document.createElement("style");l.textContent=".forms-expert .forms-expert-required { display: none; }",a.appendChild(l)}if(s.showFormName!==!1&&s.formName){let l=document.createElement("h1");l.className="forms-expert-title",l.textContent=s.formName,l.style.fontSize=s.formNameFontSize!=null?`${s.formNameFontSize}px`:"1.5rem";let g={normal:"400",medium:"500",semibold:"600",bold:"700"};l.style.fontWeight=g[s.formNameFontWeight||"bold"]||"700",l.style.marginBottom="0.5rem",a.appendChild(l)}let m=t.styling,c=t.fields,o=0;for(;o<c.length;){let l=c[o];if(l.row!=null){let g=[l],f=o+1;for(;f<c.length&&c[f].row===l.row;)g.push(c[f]),f++;if(g.length>1){let h=document.createElement("div");h.style.display="flex",h.style.gap="0.75rem",h.style.flexWrap="wrap",g.forEach(y=>{let C=document.createElement("div"),S=ne(y.width);S?C.style.flex=`0 0 calc(${S} - 0.75rem)`:C.style.flex="1 1 0",C.style.minWidth="180px";let N=E(y,e[y.name],i[y.name],m);C.appendChild(N),h.appendChild(C)}),a.appendChild(h)}else{let h=E(l,e[l.name],i[l.name],m);a.appendChild(h)}o=f}else{let g=E(l,e[l.name],i[l.name],m);a.appendChild(g),o++}}if(s.honeypot){let l=document.createElement("input");l.type="text",l.name="_hp",l.className="forms-expert-honeypot",l.tabIndex=-1,l.autocomplete="off",a.appendChild(l)}let d=document.createElement("input");d.type="hidden",d.name="pageUrl",d.value=typeof window<"u"?window.location.href:"",a.appendChild(d);let p=document.createElement("div");p.className="forms-expert-button-wrapper";let n=document.createElement("button");if(n.type="submit",n.className=b("forms-expert-button",s.buttonClassName),n.disabled=s.isLoading||!1,s.isLoading)n.innerHTML=`
403
+ `.trim()}function v(t){let e=document.createElement("div");return e.textContent=t,e.innerHTML}function te(t){switch(t){case"small":return"18px";case"large":return"30px";case"extra-large":return"36px";default:return"24px"}}function re(t){switch(t){case"small":return"14px";case"large":return"18px";default:return"16px"}}function b(t,e){return e?`${t} ${e}`:t}function ne(t){return t.map(e=>typeof e=="string"?{value:e,label:e}:e)}function oe(t){switch(t){case"1/4":return"25%";case"1/3":return"33.333%";case"1/2":return"50%";case"2/3":return"66.666%";case"3/4":return"75%";case"full":return"100%";default:return}}function E(t,e,a,i){let l=document.createElement("div");if(t.type==="heading"){l.className="forms-expert-group";let n=document.createElement("h3");if(n.className="forms-expert-heading",n.style.fontSize=te(i?.headingSize),n.textContent=t.label||"",l.appendChild(n),t.content){let m=document.createElement("p");m.className="forms-expert-heading-subtitle",m.textContent=t.content,l.appendChild(m)}return l}if(t.type==="divider"){let n=document.createElement("hr");return n.className="forms-expert-divider",n}if(t.type==="paragraph"){l.className="forms-expert-group";let n=t.paragraphFontSize?`${t.paragraphFontSize}px`:re(i?.paragraphSize);if(t.label){let m=document.createElement("p");m.className="forms-expert-paragraph-label",m.style.fontSize=n,m.textContent=t.label,l.appendChild(m)}if(t.content){let m=document.createElement("div");m.className="forms-expert-paragraph",m.style.fontSize=n,m.innerHTML=t.content,l.appendChild(m)}return l}if(t.type==="hidden"){let n=document.createElement("input");return n.type="hidden",n.name=t.name,n.value=String(t.defaultValue??e??""),l.appendChild(n),l.style.display="none",l}if(t.type==="checkbox"||t.type==="toggle"||t.type==="consent"){l.className="forms-expert-checkbox-group";let n=document.createElement("input");n.type="checkbox",n.id=`mira-field-${t.name}`,n.name=t.name,n.className="forms-expert-checkbox",n.checked=!!e,t.required&&(n.required=!0);let m=document.createElement("div"),p=document.createElement("label");p.htmlFor=n.id,p.style.cursor="pointer",t.type==="consent"&&t.consentFontSize&&(p.style.fontSize=`${t.consentFontSize}px`);let s=t.type==="consent"?t.consentText||t.label||t.name:t.label||t.name;if(p.innerHTML=`${v(s)}${t.required?'<span class="forms-expert-required">*</span>':""}`,m.appendChild(p),t.type==="consent"&&t.consentUrl){let r=document.createElement("a");r.href=t.consentUrl,r.target="_blank",r.rel="noopener noreferrer",r.textContent="View policy",r.className="forms-expert-consent-link",m.appendChild(r)}if(l.appendChild(n),l.appendChild(m),a){let r=document.createElement("div");r.className="forms-expert-error-message",r.textContent=a,l.appendChild(r)}return l}if(l.className="forms-expert-group",t.label){let n=document.createElement("label");n.className=`forms-expert-label${i?.labelClassName?" "+i.labelClassName:""}`,n.htmlFor=`mira-field-${t.name}`,n.innerHTML=`${v(t.label)}${t.required?'<span class="forms-expert-required">*</span>':""}`,l.appendChild(n)}let c=document.createElement("div");c.className="forms-expert-input-wrapper";let d;switch(t.type){case"textarea":case"richText":d=document.createElement("textarea"),d.className=b("forms-expert-textarea",i?.fieldClassName),d.value=String(e||""),t.maxLength&&(d.maxLength=t.maxLength);break;case"select":case"dropdown":{let n=document.createElement("div");n.style.position="relative",n.style.width="100%",i?.fieldClassName&&(n.className=i.fieldClassName);let m=document.createElement("button");m.type="button",m.className="forms-expert-select",m.style.display="flex",m.style.alignItems="center",m.style.justifyContent="space-between",m.style.cursor="pointer",m.style.textAlign="left",m.style.width="100%";let p=ne(t.options||[]),s=p.find(f=>f.value===String(e||"")),r=document.createElement("span");r.textContent=s?.label||t.placeholder||"Select an option...",!s&&i?.placeholderColor&&(r.style.color=i.placeholderColor),m.appendChild(r);let u=document.createElement("span");u.innerHTML='<svg width="12" height="12" viewBox="0 0 12 12" fill="none"><path d="M3 4.5L6 7.5L9 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>',u.style.flexShrink="0",u.style.opacity="0.5",m.appendChild(u);let o=document.createElement("div");o.className="forms-expert-select-dropdown",o.style.display="none",p.forEach(f=>{let h=document.createElement("div");h.className="forms-expert-select-option",h.textContent=f.label,String(e||"")===f.value&&h.classList.add("active"),h.addEventListener("mousedown",x=>{x.preventDefault(),g.value=f.value,r.textContent=f.label,i?.placeholderColor&&(r.style.color=""),o.querySelectorAll(".forms-expert-select-option").forEach(y=>y.classList.remove("active")),h.classList.add("active"),o.style.display="none",g.dispatchEvent(new Event("input",{bubbles:!0}))}),o.appendChild(h)}),m.addEventListener("click",()=>{o.style.display=o.style.display==="none"?"block":"none"}),m.addEventListener("blur",()=>{setTimeout(()=>{o.style.display="none"},150)});let g=document.createElement("input");if(g.type="hidden",g.name=t.name,g.value=String(e||""),t.required&&(g.required=!0),n.appendChild(m),n.appendChild(o),n.appendChild(g),c.appendChild(n),a){let f=document.createElement("div");f.className="forms-expert-error-message",f.textContent=a,c.appendChild(f)}return l.appendChild(c),l}case"radio":{let n=document.createElement("div");if(n.className="forms-expert-radio-group",(t.options||[]).forEach(p=>{let s=document.createElement("label");s.className="forms-expert-radio-item";let r=document.createElement("input");r.type="radio",r.name=t.name,r.value=p,r.checked=e===p,s.appendChild(r),s.appendChild(document.createTextNode(` ${p}`)),n.appendChild(s)}),c.appendChild(n),a){let p=document.createElement("div");p.className="forms-expert-error-message",p.textContent=a,c.appendChild(p)}return l.appendChild(c),l}case"multiselect":{let n=document.createElement("div");n.className="forms-expert-multiselect-group";let m=e||[];if((t.options||[]).forEach(s=>{let r=document.createElement("label");r.className="forms-expert-checkbox-item";let u=document.createElement("input");u.type="checkbox",u.name=t.name,u.value=s,u.checked=m.includes(s),r.appendChild(u),r.appendChild(document.createTextNode(` ${s}`)),n.appendChild(r)}),c.appendChild(n),a){let s=document.createElement("div");s.className="forms-expert-error-message",s.textContent=a,c.appendChild(s)}return l.appendChild(c),l}case"rating":{let n=document.createElement("div");n.className="forms-expert-rating";let m=t.ratingMax||5,p=e||0;for(let s=1;s<=m;s++){let r=document.createElement("button");r.type="button",r.className=`forms-expert-rating-star ${s<=p?"active":""}`,r.textContent="\u2605",r.dataset.value=String(s),n.appendChild(r)}if(c.appendChild(n),a){let s=document.createElement("div");s.className="forms-expert-error-message",s.textContent=a,c.appendChild(s)}return l.appendChild(c),l}case"scale":case"opinionScale":{let n=document.createElement("div");n.className="forms-expert-scale";let m=t.min??(t.type==="opinionScale"?0:1),p=t.max??(t.type==="opinionScale"?10:5),s=e;for(let r=m;r<=p;r++){let u=document.createElement("button");u.type="button",u.className=`forms-expert-scale-btn ${s===r?"active":""}`,u.textContent=String(r),u.dataset.value=String(r),n.appendChild(u)}if(c.appendChild(n),t.lowLabel||t.highLabel){let r=document.createElement("div");r.className="forms-expert-scale-labels",r.innerHTML=`<span>${v(t.lowLabel||"")}</span><span>${v(t.highLabel||"")}</span>`,c.appendChild(r)}if(a){let r=document.createElement("div");r.className="forms-expert-error-message",r.textContent=a,c.appendChild(r)}return l.appendChild(c),l}case"slider":{d=document.createElement("input"),d.type="range",d.className="forms-expert-slider",d.min=String(t.min??0),d.max=String(t.max??100),d.step=String(t.step??1),d.value=String(e??t.min??0);break}case"file":{let n=i?.theme==="dark"?"#4b5563":"#d1d5db",m=i?.theme==="dark"?"#9ca3af":"#6b7280",p=i?.primaryColor||"#3b82f6",s=document.createElement("label");s.htmlFor=`mira-field-${t.name}`,s.className="forms-expert-dropzone";let r=document.createElement("input");r.id=`mira-field-${t.name}`,r.name=t.name,r.type="file",r.style.cssText="position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0",t.allowedMimeTypes?.length&&(r.accept=t.allowedMimeTypes.join(",")),t.multiple&&(r.multiple=!0),s.appendChild(r);let u=document.createElement("div");u.innerHTML=`<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="${m}" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="17 8 12 3 7 8"/><line x1="12" x2="12" y1="3" y2="15"/></svg>`,s.appendChild(u);let o=document.createElement("span");if(o.style.cssText="font-size:0.875rem;font-weight:500",o.textContent="Drag & drop a file here, or click to browse",s.appendChild(o),t.allowedMimeTypes?.length){let g=document.createElement("span");g.style.cssText=`font-size:0.75rem;color:${m}`,g.textContent=t.allowedMimeTypes.join(", "),s.appendChild(g)}if(t.maxFileSize){let g=document.createElement("span");g.style.cssText=`font-size:0.75rem;color:${m}`;let f=t.maxFileSize;g.textContent=`Max size: ${f<1048576?`${(f/1024).toFixed(0)} KB`:`${(f/1048576).toFixed(0)} MB`}`,s.appendChild(g)}if(s.addEventListener("dragover",g=>{g.preventDefault(),s.style.borderColor=p,s.style.backgroundColor=i?.theme==="dark"?"rgba(255,255,255,0.08)":"rgba(0,0,0,0.04)"}),s.addEventListener("dragleave",()=>{s.style.borderColor=n,s.style.backgroundColor="transparent"}),s.addEventListener("drop",g=>{g.preventDefault(),s.style.borderColor=n,s.style.backgroundColor="transparent"}),l.appendChild(s),a){let g=document.createElement("div");g.className="forms-expert-error-message",g.textContent=a,l.appendChild(g)}return l}case"currency":{d=document.createElement("input"),d.type="number",d.className=b("forms-expert-input",i?.fieldClassName),d.value=String(e??""),t.min!==void 0&&(d.min=String(t.min)),t.max!==void 0&&(d.max=String(t.max)),d.step=String(t.step||.01);break}case"phone":d=document.createElement("input"),d.type="tel",d.className=b("forms-expert-input",i?.fieldClassName),d.value=String(e||"");break;case"url":d=document.createElement("input"),d.type="url",d.className=b("forms-expert-input",i?.fieldClassName),d.value=String(e||"");break;case"password":d=document.createElement("input"),d.type="password",d.className=b("forms-expert-input",i?.fieldClassName),d.value=String(e||"");break;case"time":d=document.createElement("input"),d.type="time",d.className=b("forms-expert-input",i?.fieldClassName),d.value=String(e||"");break;case"datetime":d=document.createElement("input"),d.type="datetime-local",d.className=b("forms-expert-input",i?.fieldClassName),d.value=String(e||"");break;case"colorPicker":d=document.createElement("input"),d.type="color",d.className="forms-expert-color",d.value=String(e||"#000000");break;case"dateRange":{let n=document.createElement("div");n.className="forms-expert-date-range";let m=e||{},p=document.createElement("input");p.type="date",p.className=b("forms-expert-input",i?.fieldClassName),p.name=`${t.name}.start`,p.value=m.start||"";let s=document.createElement("input");if(s.type="date",s.className=b("forms-expert-input",i?.fieldClassName),s.name=`${t.name}.end`,s.value=m.end||"",n.appendChild(p),n.appendChild(s),c.appendChild(n),a){let r=document.createElement("div");r.className="forms-expert-error-message",r.textContent=a,c.appendChild(r)}return l.appendChild(c),l}case"address":{let n=document.createElement("div");n.className="forms-expert-address";let m=t.addressFields||["street","city","state","zip","country"],p=e||{},s={street:"Street",street2:"Street Line 2",city:"City",state:"State",zip:"ZIP",country:"Country"};if(m.forEach(r=>{let u=document.createElement("input");u.type="text",u.className=b("forms-expert-input",i?.fieldClassName),u.name=`${t.name}.${r}`,u.placeholder=s[r]||r,u.value=p[r]||"",n.appendChild(u)}),c.appendChild(n),a){let r=document.createElement("div");r.className="forms-expert-error-message",r.textContent=a,c.appendChild(r)}return l.appendChild(c),l}case"name":{let n=document.createElement("div");n.className="forms-expert-name";let m=t.nameFields||["first","last"],p=e||{},s={prefix:"Prefix",first:"First Name",middle:"Middle",last:"Last Name",suffix:"Suffix"};if(m.forEach(r=>{let u=document.createElement("input");u.type="text",u.className=b("forms-expert-input",i?.fieldClassName),u.name=`${t.name}.${r}`,u.placeholder=s[r]||r,u.value=p[r]||"",n.appendChild(u)}),c.appendChild(n),a){let r=document.createElement("div");r.className="forms-expert-error-message",r.textContent=a,c.appendChild(r)}return l.appendChild(c),l}case"imageChoice":{let n=document.createElement("div");n.className="forms-expert-image-choice";let m=t.options||[],p=e;if(m.forEach(s=>{let r=document.createElement("button");if(r.type="button",r.className=`forms-expert-image-choice-item ${p===s.value?"active":""}`,r.dataset.value=s.value,s.imageUrl){let o=document.createElement("img");o.src=s.imageUrl,o.alt=s.label,r.appendChild(o)}let u=document.createElement("span");u.textContent=s.label,r.appendChild(u),n.appendChild(r)}),c.appendChild(n),a){let s=document.createElement("div");s.className="forms-expert-error-message",s.textContent=a,c.appendChild(s)}return l.appendChild(c),l}case"ranking":{let n=document.createElement("div");n.className="forms-expert-ranking";let m=t.options||[];if((e||[...m]).forEach((s,r)=>{let u=document.createElement("div");u.className="forms-expert-ranking-item",u.textContent=`${r+1}. ${s}`,u.dataset.value=s,n.appendChild(u)}),c.appendChild(n),a){let s=document.createElement("div");s.className="forms-expert-error-message",s.textContent=a,c.appendChild(s)}return l.appendChild(c),l}case"location":{let n=document.createElement("div");n.className="forms-expert-location";let m=e||{},p=document.createElement("input");p.type="text",p.className=b("forms-expert-input",i?.fieldClassName),p.name=`${t.name}.address`,p.placeholder="Address",p.value=m.address||"",n.appendChild(p);let s=document.createElement("div");s.className="forms-expert-location-coords";let r=document.createElement("input");r.type="number",r.className=b("forms-expert-input",i?.fieldClassName),r.name=`${t.name}.lat`,r.placeholder="Latitude",r.step="any",r.value=m.lat!==void 0?String(m.lat):"";let u=document.createElement("input");if(u.type="number",u.className=b("forms-expert-input",i?.fieldClassName),u.name=`${t.name}.lng`,u.placeholder="Longitude",u.step="any",u.value=m.lng!==void 0?String(m.lng):"",s.appendChild(r),s.appendChild(u),n.appendChild(s),c.appendChild(n),a){let o=document.createElement("div");o.className="forms-expert-error-message",o.textContent=a,c.appendChild(o)}return l.appendChild(c),l}default:d=document.createElement("input"),d.type=t.type==="email"?"email":t.type==="number"?"number":t.type==="date"?"date":"text",d.className=b("forms-expert-input",i?.fieldClassName),d.value=String(e||""),t.type==="number"&&(t.min!==void 0&&(d.min=String(t.min)),t.max!==void 0&&(d.max=String(t.max)),t.step!==void 0&&(d.step=String(t.step)));break}if(d.id=`mira-field-${t.name}`,d.name=t.name,t.placeholder&&"placeholder"in d&&(d.placeholder=t.placeholder),t.required&&(d.required=!0),a&&d.classList.add("forms-expert-error"),c.appendChild(d),a){let n=document.createElement("div");n.className="forms-expert-error-message",n.textContent=a,c.appendChild(n)}return l.appendChild(c),l}function L(t,e={},a={},i={}){let l=document.createElement("form");if(l.className="forms-expert",i.hideRequiredAsterisk){let o=document.createElement("style");o.textContent=".forms-expert .forms-expert-required { display: none; }",l.appendChild(o)}if(i.showFormName!==!1&&i.formName){let o=document.createElement("h1");o.className="forms-expert-title",o.textContent=i.formName,o.style.fontSize=i.formNameFontSize!=null?`${i.formNameFontSize}px`:"1.5rem";let g={normal:"400",medium:"500",semibold:"600",bold:"700"};o.style.fontWeight=g[i.formNameFontWeight||"bold"]||"700",o.style.marginBottom="0.5rem",l.appendChild(o)}let c=t.styling,d=t.fields,n=0;for(;n<d.length;){let o=d[n];if(o.row!=null){let g=[o],f=n+1;for(;f<d.length&&d[f].row===o.row;)g.push(d[f]),f++;if(g.length>1){let h=document.createElement("div");h.style.display="flex",h.style.gap="0.75rem",h.style.flexWrap="wrap",g.forEach(x=>{let y=document.createElement("div"),S=oe(x.width);S?y.style.flex=`0 0 calc(${S} - 0.75rem)`:y.style.flex="1 1 0",y.style.minWidth="180px";let N=E(x,e[x.name],a[x.name],c);y.appendChild(N),h.appendChild(y)}),l.appendChild(h)}else{let h=E(o,e[o.name],a[o.name],c);l.appendChild(h)}n=f}else{let g=E(o,e[o.name],a[o.name],c);l.appendChild(g),n++}}if(i.honeypot){let o=document.createElement("input");o.type="text",o.name="_hp",o.className="forms-expert-honeypot",o.tabIndex=-1,o.autocomplete="off",l.appendChild(o)}let m=document.createElement("input");m.type="hidden",m.name="pageUrl",m.value=typeof window<"u"?window.location.href:"",l.appendChild(m);let p=document.createElement("div");p.className="forms-expert-button-wrapper";let s=document.createElement("button");if(s.type="submit",s.className=b("forms-expert-button",i.buttonClassName),s.disabled=i.isLoading||!1,i.isLoading)s.innerHTML=`
363
404
  <span class="forms-expert-button-loading">
364
405
  <span class="forms-expert-spinner"></span>
365
406
  Submitting...
366
407
  </span>
367
- `;else{let l=m?.buttonIcon,g=m?.buttonIconPosition||"left";if(l){n.style.display="inline-flex",n.style.alignItems="center",n.style.gap="0.5rem";let f=document.createElement("span");f.style.display="inline-flex",f.style.flexShrink="0",f.innerHTML=l;let h=document.createElement("span");h.textContent=s.submitText||"Submit",g==="right"?(n.appendChild(h),n.appendChild(f)):(n.appendChild(f),n.appendChild(h))}else n.textContent=s.submitText||"Submit"}let r=s.secondaryButton,u=()=>{if(!r?.enabled)return null;let l=document.createElement("a");if(l.className="forms-expert-secondary-btn",l.href=r.href||"#",l.style.display="inline-flex",l.style.alignItems="center",l.style.gap="0.5rem",r.icon){let h=document.createElement("span");h.style.display="inline-flex",h.style.flexShrink="0",h.innerHTML=r.icon;let y=document.createElement("span");y.textContent=r.text||"Learn More",r.iconPosition==="right"?(l.appendChild(y),l.appendChild(h)):(l.appendChild(h),l.appendChild(y))}else l.textContent=r.text||"Learn More";r.openInNewTab&&(l.target="_blank",l.rel="noopener noreferrer");let g=m?.primaryColor||"#3b82f6",f=r.color||g;return r.style==="filled"?(l.style.background=f,l.style.color=r.textColor||"#ffffff",l.style.border="none"):r.style==="outlined"?(l.style.background="transparent",l.style.color=r.textColor||f,l.style.border=`2px solid ${f}`):r.style==="link"?(l.style.background="transparent",l.style.color=r.textColor||f,l.style.border="none",l.style.textDecoration="underline"):(l.style.background="transparent",l.style.color=r.textColor||f,l.style.border="none"),r.marginTop!=null&&(l.style.marginTop=`${r.marginTop}px`),r.marginBottom!=null&&(l.style.marginBottom=`${r.marginBottom}px`),r.fontSize!=null&&(l.style.fontSize=`${r.fontSize}px`),l};if(r?.enabled&&r.position==="left"){let l=u();l&&p.appendChild(l)}if(p.appendChild(n),r?.enabled&&r.position!=="left"&&r.position!=="below"){let l=u();l&&(l.style.marginLeft="auto",p.appendChild(l))}if(a.appendChild(p),r?.enabled&&r.position==="below"){let l=document.createElement("div");l.className="forms-expert-secondary-below";let g=r.align||s.buttonAlign||"left";l.style.justifyContent=g==="center"?"center":g==="right"?"flex-end":"flex-start",r.marginTop!=null&&(l.style.marginTop=`${r.marginTop}px`),r.marginBottom!=null&&(l.style.marginBottom=`${r.marginBottom}px`);let f=u();f&&(f.style.marginTop="0",f.style.marginBottom="0",l.appendChild(f)),a.appendChild(l)}if(s.showBranding!==!1){let l=s.brandingText||"Powered by Forms Expert",g=s.brandingUrl||"https://mira.io",f=document.createElement("div");f.className="forms-expert-branding",f.innerHTML=`<a href="${g}" target="_blank" rel="noopener">${l}</a>`,a.appendChild(f)}return a}function z(t){let e=document.createElement("div");return e.className="forms-expert-success",e.innerHTML=`
408
+ `;else{let o=c?.buttonIcon,g=c?.buttonIconPosition||"left";if(o){s.style.display="inline-flex",s.style.alignItems="center",s.style.gap="0.5rem";let f=document.createElement("span");f.style.display="inline-flex",f.style.flexShrink="0",f.innerHTML=o;let h=document.createElement("span");h.textContent=i.submitText||"Submit",g==="right"?(s.appendChild(h),s.appendChild(f)):(s.appendChild(f),s.appendChild(h))}else s.textContent=i.submitText||"Submit"}let r=i.secondaryButton,u=()=>{if(!r?.enabled)return null;let o=document.createElement("a");if(o.className="forms-expert-secondary-btn",o.href=r.href||"#",o.style.display="inline-flex",o.style.alignItems="center",o.style.gap="0.5rem",r.icon){let h=document.createElement("span");h.style.display="inline-flex",h.style.flexShrink="0",h.innerHTML=r.icon;let x=document.createElement("span");x.textContent=r.text||"Learn More",r.iconPosition==="right"?(o.appendChild(x),o.appendChild(h)):(o.appendChild(h),o.appendChild(x))}else o.textContent=r.text||"Learn More";r.openInNewTab&&(o.target="_blank",o.rel="noopener noreferrer");let g=c?.primaryColor||"#3b82f6",f=r.color||g;return r.style==="filled"?(o.style.background=f,o.style.color=r.textColor||"#ffffff",o.style.border="none"):r.style==="outlined"?(o.style.background="transparent",o.style.color=r.textColor||f,o.style.border=`2px solid ${f}`):r.style==="link"?(o.style.background="transparent",o.style.color=r.textColor||f,o.style.border="none",o.style.textDecoration="underline"):(o.style.background="transparent",o.style.color=r.textColor||f,o.style.border="none"),r.marginTop!=null&&(o.style.marginTop=`${r.marginTop}px`),r.marginBottom!=null&&(o.style.marginBottom=`${r.marginBottom}px`),r.fontSize!=null&&(o.style.fontSize=`${r.fontSize}px`),o};if(r?.enabled&&r.position==="left"){let o=u();o&&p.appendChild(o)}if(p.appendChild(s),r?.enabled&&r.position!=="left"&&r.position!=="below"){let o=u();o&&(o.style.marginLeft="auto",p.appendChild(o))}if(l.appendChild(p),r?.enabled&&r.position==="below"){let o=document.createElement("div");o.className="forms-expert-secondary-below";let g=r.align||i.buttonAlign||"left";o.style.justifyContent=g==="center"?"center":g==="right"?"flex-end":"flex-start",r.marginTop!=null&&(o.style.marginTop=`${r.marginTop}px`),r.marginBottom!=null&&(o.style.marginBottom=`${r.marginBottom}px`);let f=u();f&&(f.style.marginTop="0",f.style.marginBottom="0",o.appendChild(f)),l.appendChild(o)}if(i.showBranding!==!1){let o=i.brandingText||"Powered by Forms Expert",g=i.brandingUrl||"https://mira.io",f=document.createElement("div");f.className="forms-expert-branding",f.innerHTML=`<a href="${g}" target="_blank" rel="noopener">${o}</a>`,l.appendChild(f)}return l}function z(t){let e=document.createElement("div");return e.className="forms-expert-success",e.innerHTML=`
368
409
  <svg class="forms-expert-success-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
369
410
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path>
370
411
  </svg>
371
412
  <div class="forms-expert-success-message">${v(t)}</div>
372
- `,e}function P(t){return t.reduce((e,i)=>({...e,[i.field]:i.message}),{})}var x=class extends Error{constructor(i,s,a,m){super(i);this.code=s;this.statusCode=a;this.retryAfter=m;this.name="FormsError"}},w=class extends Error{constructor(i){super("Validation failed");this.errors=i;this.name="FormValidationError"}};var k=class{constructor(e){this.apiKey=e.apiKey,this.resourceId=e.resourceId,this.baseUrl=(e.baseUrl||"https://api.forms.expert/api/v1").replace(/\/$/,"")}buildUrl(e){let i=e.includes("?")?"&":"?";return`${this.baseUrl}${e}${i}token=${encodeURIComponent(this.apiKey)}`}async request(e,i,s){let a=this.buildUrl(i),m=await fetch(a,{method:e,headers:{"Content-Type":"application/json"},body:s?JSON.stringify(s):void 0}),c=await m.json();if(!m.ok)throw new x(c.message||"Request failed",c.code||"UNKNOWN_ERROR",m.status,c.retryAfter);return c}async isActive(e,i){let s=i?`?lang=${encodeURIComponent(i)}`:"";return this.request("GET",`/f/${this.resourceId}/${e}/is-active${s}`)}async validate(e,i){return this.request("POST",`/f/${this.resourceId}/${e}/validate`,{data:i})}async submit(e,i,s){let a=this.buildUrl(`/f/${this.resourceId}/${e}`);return Object.values(i).some(c=>c instanceof File||c instanceof FileList&&c.length>0)||s?.onProgress?this.submitWithFormData(a,i,s):this.request("POST",`/f/${this.resourceId}/${e}`,{data:i,pageUrl:s?.pageUrl||(typeof window<"u"?window.location.href:void 0),captchaToken:s?.captchaToken})}submitWithFormData(e,i,s){return new Promise((a,m)=>{let c=new FormData;for(let[p,n]of Object.entries(i))n instanceof File?c.append(p,n):n instanceof FileList?Array.from(n).forEach(r=>c.append(p,r)):n!=null&&c.append(`data[${p}]`,String(n));let o=s?.pageUrl||(typeof window<"u"?window.location.href:"");o&&c.append("pageUrl",o),s?.captchaToken&&c.append("captchaToken",s.captchaToken);let d=new XMLHttpRequest;s?.onProgress&&d.upload.addEventListener("progress",p=>{p.lengthComputable&&s.onProgress({loaded:p.loaded,total:p.total,percentage:Math.round(p.loaded/p.total*100)})}),d.addEventListener("load",()=>{try{let p=JSON.parse(d.responseText);d.status>=200&&d.status<300?a(p):m(new x(p.message||"Submission failed",p.code||"UNKNOWN_ERROR",d.status,p.retryAfter))}catch{m(new x("Invalid response","PARSE_ERROR",d.status))}}),d.addEventListener("error",()=>{m(new x("Network error","NETWORK_ERROR",0))}),d.addEventListener("abort",()=>{m(new x("Request aborted","ABORTED",0))}),d.open("POST",e),d.send(c)})}async trackView(e){let i=this.buildUrl(`/f/${this.resourceId}/${e}/view`);await fetch(i,{method:"POST",headers:{"Content-Type":"application/json"},body:"{}"}).catch(()=>{})}getResourceId(){return this.resourceId}getBaseUrl(){return this.baseUrl}};var I=class{constructor(e,i,s={}){this.config=null;this.apiClient=e,this.slug=i,this.options=s}async initialize(e){return this.config=await this.apiClient.isActive(this.slug,e),this.options.trackViews&&this.apiClient.trackView(this.slug),this.config}getConfig(){return this.config}isActive(){return this.config?.active??!1}requiresCaptcha(){return this.config?.settings?.captcha?.enabled??!1}getCaptchaProvider(){return this.config?.settings?.captcha?.provider}getSchema(){return this.config?.schema}async validate(e){return this.apiClient.validate(this.slug,e)}async submit(e,i){this.options.onSubmitStart?.();try{if(this.config?.mode==="schema"){let a=await this.validate(e);if(!a.valid)throw this.options.onValidationError?.(a.errors),new w(a.errors)}let s=await this.apiClient.submit(this.slug,e,i);return this.options.onSubmitSuccess?.(s),s}catch(s){throw s instanceof x&&this.options.onSubmitError?.(s),s}}getSuccessMessage(){return this.config?.settings?.successMessage||"Form submitted successfully!"}getRedirectUrl(){return this.config?.settings?.redirectUrl}},F=class{constructor(e){this.apiClient=new k(e)}async isActive(e,i){return this.apiClient.isActive(e,i)}async validate(e,i){return this.apiClient.validate(e,i)}async submit(e,i,s){return this.apiClient.submit(e,i,s)}form(e,i){return new I(this.apiClient,e,i)}async trackView(e){return this.apiClient.trackView(e)}async submitWithRetry(e,i,s){let a=s?.maxRetries??3,m=null;for(let c=0;c<a;c++)try{return await this.submit(e,i,s)}catch(o){if(m=o,o instanceof x){if(["VALIDATION_ERROR","CAPTCHA_REQUIRED","ORIGIN_NOT_ALLOWED"].includes(o.code))throw o;if(o.code.includes("RATE_LIMIT")){let d=o.retryAfter||Math.pow(2,c)*1e3;await new Promise(p=>setTimeout(p,d));continue}}await new Promise(d=>setTimeout(d,Math.pow(2,c)*1e3))}throw m}};var $=class{constructor(e,i){this.config=null;this.values={};this.errors={};this.isLoading=!1;this.isSubmitted=!1;this.styleEl=null;this.sdk=new F(e),this.options=i;let s=i.target;if(typeof s=="string"){let a=document.querySelector(s);if(!a)throw new Error(`Element not found: ${s}`);this.container=a}else this.container=s}async init(){try{if(this.renderLoading(),this.config=await this.sdk.isActive(this.options.slug,this.options.lang),!this.config.active){this.renderError("This form is not available");return}this.options.trackViews&&this.sdk.trackView(this.options.slug),this.injectStyles(),this.render()}catch(e){this.renderError("Failed to load form"),this.options.onError?.(e)}}injectStyles(){if(this.styleEl)return;this.styleEl=document.createElement("style"),this.styleEl.id=`forms-expert-styles-${this.options.slug}`;let e={...this.config?.schema?.styling,...this.config?.styling};this.styleEl.textContent=R(e),document.head.appendChild(this.styleEl),this.injectGoogleFont(e?.fontFamily)}injectGoogleFont(e){if(!e)return;let i=["Inter","Roboto","Open Sans","Lato","Poppins","Montserrat","Nunito","Source Sans Pro","Raleway","Ubuntu","Playfair Display","Merriweather"],s=e.split(",")[0]?.trim();if(!s||!i.includes(s))return;let a=`forms-expert-font-${this.options.slug}`;if(document.getElementById(a))return;let m=document.createElement("link");m.id=a,m.rel="stylesheet",m.href=`https://fonts.googleapis.com/css2?family=${s.replace(/ /g,"+")}:wght@400;500;600;700&display=swap`,document.head.appendChild(m)}render(){if(!this.config?.schema)return;if(this.isSubmitted){this.container.innerHTML="";let a=this.config.settings?.successMessage||"Form submitted successfully!";this.container.appendChild(z(a));return}let e={...this.config.schema.styling,...this.config.styling},i={...this.config.schema,styling:e},s=L(i,this.values,this.errors,{honeypot:this.config.settings?.honeypot,showBranding:this.config.branding?.enabled!==!1,brandingText:this.config.branding?.text,brandingUrl:this.config.branding?.url,submitText:e.buttonText||this.options.submitText,isLoading:this.isLoading,hideRequiredAsterisk:e.hideRequiredAsterisk,formName:this.config.hostedConfig?.pageTitle||this.config.name,showFormName:this.config.settings?.showFormName,secondaryButton:e.secondaryButton,buttonAlign:e.buttonAlign,buttonClassName:e.buttonClassName,formNameFontSize:e.formNameFontSize,formNameFontWeight:e.formNameFontWeight});s.addEventListener("input",a=>{let m=a.target;m.name&&m.name!=="_hp"&&m.name!=="pageUrl"&&(m.type==="checkbox"?this.values[m.name]=m.checked:m.type==="file"?this.values[m.name]=m.multiple?m.files:m.files?.[0]:this.values[m.name]=m.value,this.errors[m.name]&&(delete this.errors[m.name],this.render()))}),s.addEventListener("submit",a=>{a.preventDefault(),this.handleSubmit()}),this.container.innerHTML="",this.container.appendChild(s)}async handleSubmit(){if(!(this.isLoading||!this.config)){this.isLoading=!0,this.errors={},this.render();try{let e=await this.sdk.submit(this.options.slug,this.values);this.isLoading=!1,this.isSubmitted=!0,this.render(),this.options.onSuccess?.(e);let i=this.options.redirectUrl||this.config.settings?.redirectUrl;i&&setTimeout(()=>{window.location.href=i},1500),this.options.resetOnSuccess&&setTimeout(()=>{this.reset()},3e3)}catch(e){this.isLoading=!1,e instanceof w?(this.errors=P(e.errors),this.options.onValidationError?.(e.errors)):this.options.onError?.(e),this.render()}}}reset(){this.values={},this.errors={},this.isLoading=!1,this.isSubmitted=!1,this.render()}renderLoading(){this.container.innerHTML=`
413
+ `,e}function P(t){return t.reduce((e,a)=>({...e,[a.field]:a.message}),{})}var C=class extends Error{constructor(a,i,l,c){super(a);this.code=i;this.statusCode=l;this.retryAfter=c;this.name="FormsError"}},w=class extends Error{constructor(a){super("Validation failed");this.errors=a;this.name="FormValidationError"}};var k=class{constructor(e){this.apiKey=e.apiKey,this.resourceId=e.resourceId,this.baseUrl=(e.baseUrl||"https://api.forms.expert/api/v1").replace(/\/$/,"")}buildUrl(e){let a=e.includes("?")?"&":"?";return`${this.baseUrl}${e}${a}token=${encodeURIComponent(this.apiKey)}`}async request(e,a,i){let l=this.buildUrl(a),c=await fetch(l,{method:e,headers:{"Content-Type":"application/json"},body:i?JSON.stringify(i):void 0}),d=await c.json();if(!c.ok)throw new C(d.message||"Request failed",d.code||"UNKNOWN_ERROR",c.status,d.retryAfter);return d}async isActive(e,a){let i=a?`?lang=${encodeURIComponent(a)}`:"";return this.request("GET",`/f/${this.resourceId}/${e}/is-active${i}`)}async validate(e,a){return this.request("POST",`/f/${this.resourceId}/${e}/validate`,{data:a})}async submit(e,a,i){let l=this.buildUrl(`/f/${this.resourceId}/${e}`);return Object.values(a).some(d=>d instanceof File||d instanceof FileList&&d.length>0)||i?.onProgress?this.submitWithFormData(l,a,i):this.request("POST",`/f/${this.resourceId}/${e}`,{data:a,pageUrl:i?.pageUrl||(typeof window<"u"?window.location.href:void 0),captchaToken:i?.captchaToken})}submitWithFormData(e,a,i){return new Promise((l,c)=>{let d=new FormData;for(let[p,s]of Object.entries(a))s instanceof File?d.append(p,s):s instanceof FileList?Array.from(s).forEach(r=>d.append(p,r)):s!=null&&d.append(`data[${p}]`,String(s));let n=i?.pageUrl||(typeof window<"u"?window.location.href:"");n&&d.append("pageUrl",n),i?.captchaToken&&d.append("captchaToken",i.captchaToken);let m=new XMLHttpRequest;i?.onProgress&&m.upload.addEventListener("progress",p=>{p.lengthComputable&&i.onProgress({loaded:p.loaded,total:p.total,percentage:Math.round(p.loaded/p.total*100)})}),m.addEventListener("load",()=>{try{let p=JSON.parse(m.responseText);m.status>=200&&m.status<300?l(p):c(new C(p.message||"Submission failed",p.code||"UNKNOWN_ERROR",m.status,p.retryAfter))}catch{c(new C("Invalid response","PARSE_ERROR",m.status))}}),m.addEventListener("error",()=>{c(new C("Network error","NETWORK_ERROR",0))}),m.addEventListener("abort",()=>{c(new C("Request aborted","ABORTED",0))}),m.open("POST",e),m.send(d)})}async trackView(e){let a=this.buildUrl(`/f/${this.resourceId}/${e}/view`);await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:"{}"}).catch(()=>{})}getResourceId(){return this.resourceId}getBaseUrl(){return this.baseUrl}};var B=class{constructor(e,a,i={}){this.config=null;this.apiClient=e,this.slug=a,this.options=i}async initialize(e){return this.config=await this.apiClient.isActive(this.slug,e),this.options.trackViews&&this.apiClient.trackView(this.slug),this.config}getConfig(){return this.config}isActive(){return this.config?.active??!1}requiresCaptcha(){return this.config?.settings?.captcha?.enabled??!1}getCaptchaProvider(){return this.config?.settings?.captcha?.provider}getSchema(){return this.config?.schema}async validate(e){return this.apiClient.validate(this.slug,e)}async submit(e,a){this.options.onSubmitStart?.();try{if(this.config?.mode==="schema"){let l=await this.validate(e);if(!l.valid)throw this.options.onValidationError?.(l.errors),new w(l.errors)}let i=await this.apiClient.submit(this.slug,e,a);return this.options.onSubmitSuccess?.(i),i}catch(i){throw i instanceof C&&this.options.onSubmitError?.(i),i}}getSuccessMessage(){return this.config?.settings?.successMessage||"Form submitted successfully!"}getRedirectUrl(){return this.config?.settings?.redirectUrl}},$=class{constructor(e){this.apiClient=new k(e)}async isActive(e,a){return this.apiClient.isActive(e,a)}async validate(e,a){return this.apiClient.validate(e,a)}async submit(e,a,i){return this.apiClient.submit(e,a,i)}form(e,a){return new B(this.apiClient,e,a)}async trackView(e){return this.apiClient.trackView(e)}async submitWithRetry(e,a,i){let l=i?.maxRetries??3,c=null;for(let d=0;d<l;d++)try{return await this.submit(e,a,i)}catch(n){if(c=n,n instanceof C){if(["VALIDATION_ERROR","CAPTCHA_REQUIRED","ORIGIN_NOT_ALLOWED"].includes(n.code))throw n;if(n.code.includes("RATE_LIMIT")){let m=n.retryAfter||Math.pow(2,d)*1e3;await new Promise(p=>setTimeout(p,m));continue}}await new Promise(m=>setTimeout(m,Math.pow(2,d)*1e3))}throw c}};var F=class{constructor(e,a){this.config=null;this.values={};this.errors={};this.isLoading=!1;this.isSubmitted=!1;this.styleEl=null;this.sdk=new $(e),this.options=a;let i=a.target;if(typeof i=="string"){let l=document.querySelector(i);if(!l)throw new Error(`Element not found: ${i}`);this.container=l}else this.container=i}async init(){try{if(this.renderLoading(),this.config=await this.sdk.isActive(this.options.slug,this.options.lang),!this.config.active){this.renderError("This form is not available");return}this.options.trackViews&&this.sdk.trackView(this.options.slug),this.injectStyles(),this.render()}catch(e){this.renderError("Failed to load form"),this.options.onError?.(e)}}injectStyles(){if(this.styleEl)return;this.styleEl=document.createElement("style"),this.styleEl.id=`forms-expert-styles-${this.options.slug}`;let e={...this.config?.schema?.styling,...this.config?.styling};this.styleEl.textContent=R(e),document.head.appendChild(this.styleEl),this.injectGoogleFont(e?.fontFamily)}injectGoogleFont(e){if(!e)return;let a=["Inter","Roboto","Open Sans","Lato","Poppins","Montserrat","Nunito","Source Sans Pro","Raleway","Ubuntu","Playfair Display","Merriweather"],i=e.split(",")[0]?.trim();if(!i||!a.includes(i))return;let l=`forms-expert-font-${this.options.slug}`;if(document.getElementById(l))return;let c=document.createElement("link");c.id=l,c.rel="stylesheet",c.href=`https://fonts.googleapis.com/css2?family=${i.replace(/ /g,"+")}:wght@400;500;600;700&display=swap`,document.head.appendChild(c)}render(){if(!this.config?.schema)return;if(this.isSubmitted){this.container.innerHTML="";let l=this.config.settings?.successMessage||"Form submitted successfully!";this.container.appendChild(z(l));return}let e={...this.config.schema.styling,...this.config.styling},a={...this.config.schema,styling:e},i=L(a,this.values,this.errors,{honeypot:this.config.settings?.honeypot,showBranding:this.config.branding?.enabled!==!1,brandingText:this.config.branding?.text,brandingUrl:this.config.branding?.url,submitText:e.buttonText||this.options.submitText,isLoading:this.isLoading,hideRequiredAsterisk:e.hideRequiredAsterisk,formName:this.config.hostedConfig?.pageTitle||this.config.name,showFormName:this.config.settings?.showFormName,secondaryButton:e.secondaryButton,buttonAlign:e.buttonAlign,buttonClassName:e.buttonClassName,formNameFontSize:e.formNameFontSize,formNameFontWeight:e.formNameFontWeight});i.addEventListener("input",l=>{let c=l.target;c.name&&c.name!=="_hp"&&c.name!=="pageUrl"&&(c.type==="checkbox"?this.values[c.name]=c.checked:c.type==="file"?this.values[c.name]=c.multiple?c.files:c.files?.[0]:this.values[c.name]=c.value,this.errors[c.name]&&(delete this.errors[c.name],this.render()))}),i.addEventListener("submit",l=>{l.preventDefault(),this.handleSubmit()}),this.container.innerHTML="",this.container.appendChild(i)}async handleSubmit(){if(!(this.isLoading||!this.config)){this.isLoading=!0,this.errors={},this.render();try{let e=await this.sdk.submit(this.options.slug,this.values);this.isLoading=!1,this.isSubmitted=!0,this.render(),this.options.onSuccess?.(e);let a=this.options.redirectUrl||this.config.settings?.redirectUrl;a&&setTimeout(()=>{window.location.href=a},1500),this.options.resetOnSuccess&&setTimeout(()=>{this.reset()},3e3)}catch(e){this.isLoading=!1,e instanceof w?(this.errors=P(e.errors),this.options.onValidationError?.(e.errors)):this.options.onError?.(e),this.render()}}}reset(){this.values={},this.errors={},this.isLoading=!1,this.isSubmitted=!1,this.render()}renderLoading(){this.container.innerHTML=`
373
414
  <div class="forms-expert" style="display: flex; align-items: center; justify-content: center; padding: 2rem;">
374
415
  <svg width="24" height="24" viewBox="0 0 24 24" style="animation: fe-spin 1s linear infinite; color: #9ca3af;">
375
416
  <circle cx="12" cy="12" r="10" stroke="currentColor" stroke-width="3" fill="none" stroke-dasharray="31.4 31.4" stroke-linecap="round"/>
@@ -380,5 +421,5 @@ ${e.customCss||""}
380
421
  <div class="forms-expert" style="text-align: center; padding: 2rem; color: #ef4444;">
381
422
  <p>${e}</p>
382
423
  </div>
383
- `}destroy(){this.container.innerHTML="",this.styleEl?.remove(),this.styleEl=null}};function M(){document.querySelectorAll("[data-forms-expert]").forEach(e=>{let i=e.getAttribute("data-api-key"),s=e.getAttribute("data-resource-id"),a=e.getAttribute("data-forms-expert"),m=e.getAttribute("data-base-url")||void 0;if(!i||!s||!a){console.error("Forms Expert: Missing required attributes",{apiKey:!!i,resourceId:!!s,slug:!!a});return}new $({apiKey:i,resourceId:s,baseUrl:m},{target:e,slug:a,trackViews:e.getAttribute("data-track-views")==="true",submitText:e.getAttribute("data-submit-text")||void 0,resetOnSuccess:e.getAttribute("data-reset")==="true",lang:e.getAttribute("data-lang")||void 0}).init()})}typeof window<"u"&&(document.readyState==="loading"?document.addEventListener("DOMContentLoaded",M):M());return D(oe);})();
424
+ `}destroy(){this.container.innerHTML="",this.styleEl?.remove(),this.styleEl=null}};function I(){document.querySelectorAll("[data-forms-expert]").forEach(e=>{let a=e.getAttribute("data-api-key"),i=e.getAttribute("data-resource-id"),l=e.getAttribute("data-forms-expert"),c=e.getAttribute("data-base-url")||void 0;if(!a||!i||!l){console.error("Forms Expert: Missing required attributes",{apiKey:!!a,resourceId:!!i,slug:!!l});return}new F({apiKey:a,resourceId:i,baseUrl:c},{target:e,slug:l,trackViews:e.getAttribute("data-track-views")==="true",submitText:e.getAttribute("data-submit-text")||void 0,resetOnSuccess:e.getAttribute("data-reset")==="true",lang:e.getAttribute("data-lang")||void 0}).init()})}typeof window<"u"&&(document.readyState==="loading"?document.addEventListener("DOMContentLoaded",I):I());return D(ie);})();
384
425
  //# sourceMappingURL=index.global.js.map