@verbb/formie-browser 1.0.7 → 1.0.9

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 (90) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/chunks/_survey-presentations-RbSqcQph.js +4 -0
  3. package/dist/chunks/{address-state-BQ0xGV9n.js → address-state-BwE01m2_.js} +1 -1
  4. package/dist/chunks/{api-DztsCJ4r.js → api-BYe9YPko.js} +194 -153
  5. package/dist/chunks/{bpoint-2qDxlKD9.js → bpoint-C0VOftX9.js} +1 -1
  6. package/dist/chunks/{combobox-D-2b42wn.js → combobox-C0EuExSI.js} +1 -1
  7. package/dist/chunks/{eway-CImXrB4g.js → eway-CS6Y1Yvo.js} +1 -1
  8. package/dist/chunks/{file-upload-D49m8-DR.js → file-upload-rqfZNqlH.js} +1 -1
  9. package/dist/chunks/{go-cardless-Bz7HHtH0.js → go-cardless-BTPD668l.js} +1 -1
  10. package/dist/chunks/{mollie-BtnB3KGh.js → mollie-CXgBwvo6.js} +1 -1
  11. package/dist/chunks/{moneris-Bd4vUk8b.js → moneris-B6oLu7nj.js} +1 -1
  12. package/dist/chunks/{opayo-B-eRIXo-.js → opayo-DPUA5CKr.js} +1 -1
  13. package/dist/chunks/{paddle-BUFeEU4d.js → paddle-GRlsm5mm.js} +1 -1
  14. package/dist/chunks/{paypal-8Euw7Hrn.js → paypal-CdcZnf6r.js} +2 -2
  15. package/dist/chunks/{payway-dV0SzJxy.js → payway-CfmYOS__.js} +2 -2
  16. package/dist/chunks/{repeater-B5leVxZU.js → repeater-BVnPUqTj.js} +1 -1
  17. package/dist/chunks/rich-text-Bg_--4TG.js +349 -0
  18. package/dist/chunks/{square-reyJukb7.js → square-BY--5M-X.js} +1 -1
  19. package/dist/chunks/{stripe-BC-2PBvY.js → stripe-uusYjWty.js} +2 -2
  20. package/dist/chunks/{summary-D3AjxpYN.js → summary-Dks0gXS3.js} +42 -38
  21. package/dist/chunks/survey-likert-DkE6bR7B.js +20 -0
  22. package/dist/chunks/survey-rank-DN6x4IZM.js +127 -0
  23. package/dist/chunks/survey-rating-BnsNL9U5.js +88 -0
  24. package/dist/chunks/{table-C-lkQN6I.js → table-CAjCJHrL.js} +1 -1
  25. package/dist/chunks/{upload-manager-BpqWSHmU.js → upload-manager-W-QDgxKD.js} +1 -1
  26. package/dist/css/formie-theme.css +1 -0
  27. package/dist/css/theme/_tokens.css +10 -5
  28. package/dist/css/theme/fields/_check-radio.css +1 -1
  29. package/dist/css/theme/fields/_combobox.css +1 -1
  30. package/dist/css/theme/fields/_file.css +3 -3
  31. package/dist/css/theme/fields/_input.css +1 -1
  32. package/dist/css/theme/fields/_repeater.css +1 -1
  33. package/dist/css/theme/fields/_rich-text.css +1 -1
  34. package/dist/css/theme/fields/_select.css +1 -1
  35. package/dist/css/theme/fields/_survey-presentations.css +396 -0
  36. package/dist/css/theme/fields/_table.css +1 -1
  37. package/dist/css/theme/fields/_upload-manager.css +3 -3
  38. package/dist/css/theme/integrations/_paypal.css +1 -1
  39. package/dist/css/theme/integrations/_payway.css +1 -1
  40. package/dist/css/theme/integrations/_stripe.css +1 -1
  41. package/dist/index.js +398 -376
  42. package/dist/js/contracts/schema.d.ts +5 -0
  43. package/dist/js/contracts/schema.d.ts.map +1 -1
  44. package/dist/js/core/create-formie-client.d.ts.map +1 -1
  45. package/dist/js/core/page-client-event.d.ts +8 -4
  46. package/dist/js/core/page-client-event.d.ts.map +1 -1
  47. package/dist/js/core/submit-flow.d.ts.map +1 -1
  48. package/dist/js/core/submit-result-state.d.ts.map +1 -1
  49. package/dist/js/core/submit-result-ui.d.ts +1 -0
  50. package/dist/js/core/submit-result-ui.d.ts.map +1 -1
  51. package/dist/js/modules/fields/index.d.ts.map +1 -1
  52. package/dist/js/modules/fields/summary.d.ts.map +1 -1
  53. package/dist/js/modules/fields/survey-likert.d.ts +3 -0
  54. package/dist/js/modules/fields/survey-likert.d.ts.map +1 -0
  55. package/dist/js/modules/fields/survey-rank.d.ts +3 -0
  56. package/dist/js/modules/fields/survey-rank.d.ts.map +1 -0
  57. package/dist/js/modules/fields/survey-rating.d.ts +3 -0
  58. package/dist/js/modules/fields/survey-rating.d.ts.map +1 -0
  59. package/dist/js/transport/forms-api.d.ts.map +1 -1
  60. package/dist/js/utils/fields.d.ts.map +1 -1
  61. package/package.json +2 -2
  62. package/src/css/formie-theme.css +1 -0
  63. package/src/css/theme/_tokens.css +10 -5
  64. package/src/css/theme/fields/_check-radio.css +1 -1
  65. package/src/css/theme/fields/_combobox.css +1 -1
  66. package/src/css/theme/fields/_file.css +3 -3
  67. package/src/css/theme/fields/_input.css +1 -1
  68. package/src/css/theme/fields/_repeater.css +1 -1
  69. package/src/css/theme/fields/_rich-text.css +1 -1
  70. package/src/css/theme/fields/_select.css +1 -1
  71. package/src/css/theme/fields/_survey-presentations.css +396 -0
  72. package/src/css/theme/fields/_table.css +1 -1
  73. package/src/css/theme/fields/_upload-manager.css +3 -3
  74. package/src/css/theme/integrations/_paypal.css +1 -1
  75. package/src/css/theme/integrations/_payway.css +1 -1
  76. package/src/css/theme/integrations/_stripe.css +1 -1
  77. package/src/js/contracts/schema.ts +6 -0
  78. package/src/js/core/create-formie-client.ts +14 -1
  79. package/src/js/core/page-client-event.ts +86 -18
  80. package/src/js/core/submit-flow.ts +3 -1
  81. package/src/js/core/submit-result-state.ts +18 -2
  82. package/src/js/core/submit-result-ui.ts +47 -9
  83. package/src/js/modules/fields/index.ts +3 -0
  84. package/src/js/modules/fields/summary.ts +17 -3
  85. package/src/js/modules/fields/survey-likert.ts +50 -0
  86. package/src/js/modules/fields/survey-rank.ts +385 -0
  87. package/src/js/modules/fields/survey-rating.ts +182 -0
  88. package/src/js/transport/forms-api.ts +1 -0
  89. package/src/js/utils/fields.ts +14 -2
  90. package/dist/chunks/rich-text-D0sb8bmX.js +0 -349
@@ -5,29 +5,33 @@ import { t as r } from "./async-nPFRNQ06.js";
5
5
  import { t as i } from "./styles-BfoIZwJp.js";
6
6
  import { r as a, t as o } from "./shared-Bx9s0i0P.js";
7
7
  //#region src/css/theme/fields/_summary.css?inline
8
- var s = "@layer formie-theme{.formie-summary-container{padding:var(--formie-summary-padding);border:var(--formie-border-width) solid var(--formie-color-border);border-radius:var(--formie-radius-sm)}.formie-summary-heading{color:var(--formie-color-heading)}.formie-summary-blocks{gap:var(--formie-gap-summary);display:grid}.formie-summary-blocks[data-formie-loading=true]{min-height:calc(var(--formie-loading-size) + var(--formie-space-4));position:relative}.formie-summary-blocks[data-formie-loading=true]>*{opacity:0;pointer-events:none}.formie-summary-blocks[data-formie-loading=true]:before{content:\"\";background:var(--formie-color-bg);border-radius:inherit;z-index:1;display:block;position:absolute;inset:0}.formie-summary-blocks[data-formie-loading=true]:after{width:var(--formie-loading-size);height:var(--formie-loading-size);content:\"\";border:var(--formie-loading-border-width) solid var(--formie-loading-color);border-radius:var(--formie-radius-full);z-index:2;animation:formie-loading-spin var(--formie-loading-speed) linear infinite;border-top-color:#0000;border-right-color:#0000;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}}", c = "[data-formie-summary-blocks]", l = "[data-formie-summary-container]", u = "formie/fields/get-summary-html", d = "summary", f = e("fields", "summary");
9
- i(d, [s]);
10
- function p() {
8
+ var s = "@layer formie-theme{.formie-summary-container{padding:var(--formie-summary-padding);border:var(--formie-border-width) solid var(--formie-color-border);border-radius:var(--formie-radius-sm)}.formie-summary-heading{color:var(--formie-color-heading)}.formie-summary-blocks{gap:var(--formie-gap-summary);display:grid}.formie-summary-blocks[data-formie-loading=true]{min-height:calc(var(--formie-loading-size) + var(--formie-space-4));position:relative}.formie-summary-blocks[data-formie-loading=true]>*{opacity:0;pointer-events:none}.formie-summary-blocks[data-formie-loading=true]:before{content:\"\";background:var(--formie-color-bg);border-radius:inherit;z-index:1;display:block;position:absolute;inset:0}.formie-summary-blocks[data-formie-loading=true]:after{width:var(--formie-loading-size);height:var(--formie-loading-size);content:\"\";border:var(--formie-loading-border-width) solid var(--formie-loading-color);border-radius:var(--formie-radius-full);z-index:2;animation:formie-loading-spin var(--formie-loading-speed) linear infinite;border-top-color:#0000;border-right-color:#0000;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}}", c = "[data-formie-summary-blocks]", l = "[data-formie-summary-container]", u = "formie/fields/get-summary-html", d = "data-formie-theme-config", f = "data-formie-frontend-theme", p = "summary", m = e("fields", "summary");
9
+ i(p, [s]);
10
+ function h() {
11
11
  let e = new URL(window.location.href);
12
12
  return e.hash = "", e.toString();
13
13
  }
14
- function m(e) {
15
- return { accessToken: e.querySelector("[data-formie-summary-token]")?.value?.trim() || null };
14
+ function g(e, t) {
15
+ return {
16
+ accessToken: e.querySelector("[data-formie-summary-token]")?.value?.trim() || null,
17
+ themeConfig: t.getAttribute(d)?.trim() || null,
18
+ frontendTheme: t.getAttribute(f)?.trim() || null
19
+ };
16
20
  }
17
- async function h(e, t, r) {
21
+ async function _(e, t, r) {
18
22
  if (!t.accessToken) throw Error("Summary field requires an access token.");
19
23
  let i = new FormData(e);
20
- return i.set("action", u), i.set("accessToken", t.accessToken), n(p(), {
24
+ return i.set("action", u), i.set("accessToken", t.accessToken), t.themeConfig && i.set("themeConfig", t.themeConfig), t.frontendTheme && i.set("frontendTheme", t.frontendTheme), n(h(), {
21
25
  method: "POST",
22
26
  body: i,
23
27
  signal: r,
24
28
  headers: { Accept: "text/html" }
25
29
  });
26
30
  }
27
- function g(e, n) {
31
+ function v(e, n) {
28
32
  let i = e.closest("form");
29
- if (!(i instanceof HTMLFormElement)) return f.warn("Missing form ancestor; skipping field."), () => {};
30
- let a = !1, s = !0, u = !1, p = 0, g = 0, _ = null, v = () => {
33
+ if (!(i instanceof HTMLFormElement)) return m.warn("Missing form ancestor; skipping field."), () => {};
34
+ let a = !1, s = !0, u = !1, d = 0, f = 0, h = null, v = () => {
31
35
  let t = e.querySelector(c);
32
36
  return t instanceof HTMLElement ? t : null;
33
37
  }, y = () => {
@@ -43,72 +47,72 @@ function g(e, n) {
43
47
  n.removeAttribute("data-formie-loading"), n.removeAttribute("aria-busy"), t(n, i, "loading", !1);
44
48
  }
45
49
  };
46
- b(!!m(e).accessToken);
50
+ b(!!g(e, i).accessToken);
47
51
  let x = () => {
48
- !u || a && !s || (f.log("Queueing fetch."), S());
52
+ !u || a && !s || (m.log("Queueing fetch."), S());
49
53
  }, S = r(async () => {
50
- let t = m(e);
54
+ let t = g(e, i);
51
55
  if (!v() || !t.accessToken) {
52
- f.warn("Missing state for fetch.", t), b(!1);
56
+ m.warn("Missing state for fetch.", t), b(!1);
53
57
  return;
54
58
  }
55
- g += 1;
56
- let n = g, r = p;
57
- _?.abort(), _ = new AbortController(), b(!0);
59
+ f += 1;
60
+ let n = f, r = d;
61
+ h?.abort(), h = new AbortController(), b(!0);
58
62
  try {
59
- let c = await h(i, t, _.signal);
60
- if (n !== g) return;
61
- let u = y(), m = document.createElement("template");
62
- m.innerHTML = c.trim();
63
- let v = m.content.querySelector(l);
64
- u && v instanceof HTMLElement ? u.replaceWith(v) : u && (u.innerHTML = c), a = !0, s = p !== r, f.log("Fetch complete.", {
63
+ let c = await _(i, t, h.signal);
64
+ if (n !== f) return;
65
+ let u = y(), g = document.createElement("template");
66
+ g.innerHTML = c.trim();
67
+ let v = g.content.querySelector(l);
68
+ u && v instanceof HTMLElement ? u.replaceWith(v) : u && (u.innerHTML = c), a = !0, s = d !== r, m.log("Fetch complete.", {
65
69
  isDirty: s,
66
- dirtyVersion: p,
70
+ dirtyVersion: d,
67
71
  requestVersion: n
68
- }), o(e, d, "fetch-summary", {
72
+ }), o(e, p, "fetch-summary", {
69
73
  summary: e,
70
74
  html: c
71
75
  });
72
76
  } catch (e) {
73
77
  if (e instanceof DOMException && e.name === "AbortError") {
74
- f.log("Fetch aborted.");
78
+ m.log("Fetch aborted.");
75
79
  return;
76
80
  }
77
81
  console.error("[formie] Failed to load summary field HTML.", e);
78
82
  } finally {
79
- n === g && (b(!1), _ = null, s && x());
83
+ n === f && (b(!1), h = null, s && x());
80
84
  }
81
85
  }, 300), C = (t) => {
82
86
  let n = t?.target;
83
- n instanceof Node && e.contains(n) || (s = !0, p += 1, f.log("Marked dirty.", { dirtyVersion: p }));
87
+ n instanceof Node && e.contains(n) || (s = !0, d += 1, m.log("Marked dirty.", { dirtyVersion: d }));
84
88
  }, w = (e) => {
85
89
  C(e), x();
86
90
  }, T = () => {
87
- s = !0, f.log("Submit result received; refreshing."), x();
91
+ s = !0, m.log("Submit result received; refreshing."), x();
88
92
  }, E = () => {
89
- s = !0, f.log("Page navigation received; refreshing."), x();
93
+ s = !0, m.log("Page navigation received; refreshing."), x();
90
94
  }, D = new IntersectionObserver((t) => {
91
- u = !!t[0]?.isIntersecting, u && (f.log("Field became visible."), o(e, d, "field-visible", { summary: e }), x());
95
+ u = !!t[0]?.isIntersecting, u && (m.log("Field became visible."), o(e, p, "field-visible", { summary: e }), x());
92
96
  }, {
93
97
  root: i,
94
98
  rootMargin: "50px"
95
99
  });
96
100
  return D.observe(e), i.addEventListener("input", w), i.addEventListener("change", w), n.addEventListener("formie:page:navigate:after", E), n.addEventListener("formie:submit:result", T), () => {
97
- _?.abort(), D.disconnect(), i.removeEventListener("input", w), i.removeEventListener("change", w), n.removeEventListener("formie:page:navigate:after", E), n.removeEventListener("formie:submit:result", T), f.log("Field destroyed.");
101
+ h?.abort(), D.disconnect(), i.removeEventListener("input", w), i.removeEventListener("change", w), n.removeEventListener("formie:page:navigate:after", E), n.removeEventListener("formie:submit:result", T), m.log("Field destroyed.");
98
102
  };
99
103
  }
100
- var _ = {
101
- id: d,
104
+ var y = {
105
+ id: p,
102
106
  kind: "field",
103
107
  match: (e) => !!e.target.querySelector(c),
104
108
  setup: async (e) => {
105
- let t = a(e).map((t) => g(t, e.root));
106
- return f.log("Module setup.", { fieldCount: t.length }), await e.emit("formie:module:summary:init", { count: t.length }), { destroy: () => {
109
+ let t = a(e).map((t) => v(t, e.root));
110
+ return m.log("Module setup.", { fieldCount: t.length }), await e.emit("formie:module:summary:init", { count: t.length }), { destroy: () => {
107
111
  t.forEach((e) => {
108
112
  e();
109
- }), f.log("Module destroy.", { fieldCount: t.length }), e.emit("formie:module:summary:destroy", {});
113
+ }), m.log("Module destroy.", { fieldCount: t.length }), e.emit("formie:module:summary:destroy", {});
110
114
  } };
111
115
  }
112
116
  };
113
117
  //#endregion
114
- export { _ as summaryModule };
118
+ export { y as summaryModule };
@@ -0,0 +1,20 @@
1
+ import { t as e } from "./debug-BV0DvdHx.js";
2
+ import { t } from "./styles-BfoIZwJp.js";
3
+ import { t as n } from "./_survey-presentations-RbSqcQph.js";
4
+ //#region src/js/modules/fields/survey-likert.ts
5
+ var r = "[data-formie-likert-field-layout]", i = "survey-likert", a = e("fields", "survey-likert");
6
+ t(i, [n]);
7
+ var o = {
8
+ id: i,
9
+ kind: "field",
10
+ match: (e) => e.target instanceof HTMLElement && (e.target.matches(r) || !!e.target.querySelector(r)),
11
+ setup: async (e) => {
12
+ if (!(e.target instanceof HTMLElement)) return;
13
+ let t = e.target.matches(r) ? [e.target] : Array.from(e.target.querySelectorAll(r)).filter((e) => e instanceof HTMLElement);
14
+ return a.log("Module setup.", { fieldCount: t.length }), await e.emit("formie:module:survey-likert:init", { count: t.length }), { destroy: () => {
15
+ a.log("Module destroy.", { fieldCount: t.length }), e.emit("formie:module:survey-likert:destroy", {});
16
+ } };
17
+ }
18
+ };
19
+ //#endregion
20
+ export { o as surveyLikertModule };
@@ -0,0 +1,127 @@
1
+ import { t as e } from "./debug-BV0DvdHx.js";
2
+ import { t } from "./styles-BfoIZwJp.js";
3
+ import { t as n } from "./shared-Bx9s0i0P.js";
4
+ import { t as r } from "./_survey-presentations-RbSqcQph.js";
5
+ //#region src/js/modules/fields/survey-rank.ts
6
+ var i = "[data-formie-survey-rank]", a = "[data-formie-survey-rank-list]", o = "[data-formie-survey-rank-item]", s = "[data-formie-rank-handle]", c = "formie-rank-placeholder", l = .42, u = "survey-rank", d = e("fields", "survey-rank");
7
+ t(u, [r]);
8
+ function f(e) {
9
+ e.querySelectorAll(o).forEach((e, t) => {
10
+ e instanceof HTMLElement && e.querySelectorAll("input[data-formie-rank-input]").forEach((e) => {
11
+ e instanceof HTMLInputElement && (e.dataset.formieRankOrder = String(t));
12
+ });
13
+ });
14
+ }
15
+ function p(e) {
16
+ return Array.from(e.querySelectorAll(o)).filter((e) => e instanceof HTMLElement);
17
+ }
18
+ function m(e, t) {
19
+ return Array.from(e.children).indexOf(t);
20
+ }
21
+ function h(e, t, n) {
22
+ return Array.from(e.children).filter((e) => e instanceof HTMLElement && e !== t && e !== n);
23
+ }
24
+ function g(e, t) {
25
+ return Math.max(0, Math.min(e.bottom, t.bottom) - Math.max(e.top, t.top));
26
+ }
27
+ function _(e) {
28
+ let t = e.getBoundingClientRect();
29
+ return t.top + t.height / 2;
30
+ }
31
+ function v(e, t, n, r) {
32
+ let i = e.getBoundingClientRect(), a = _(e), o = h(t, n, e);
33
+ for (let e = 0; e < o.length; e += 1) {
34
+ let t = o[e].getBoundingClientRect(), n = t.top + t.height * l;
35
+ if (g(i, t) / t.height >= l) return r ? Math.min(e + 1, o.length) : e;
36
+ if (a < n) return e;
37
+ }
38
+ return o.length;
39
+ }
40
+ function y(e, t, n, r) {
41
+ let i = h(e, t, n)[r] ?? null;
42
+ if (i) {
43
+ e.insertBefore(t, i);
44
+ return;
45
+ }
46
+ e.appendChild(t);
47
+ }
48
+ function b(e, t) {
49
+ let n = document.createElement("li");
50
+ return n.className = c, n.setAttribute("data-formie-rank-placeholder", "true"), n.setAttribute("aria-hidden", "true"), n.style.height = `${t.offsetHeight}px`, e.insertBefore(n, t), n;
51
+ }
52
+ function x(e) {
53
+ return {
54
+ position: e.style.position,
55
+ left: e.style.left,
56
+ top: e.style.top,
57
+ width: e.style.width,
58
+ zIndex: e.style.zIndex,
59
+ pointerEvents: e.style.pointerEvents,
60
+ margin: e.style.margin
61
+ };
62
+ }
63
+ function S(e, t) {
64
+ e.style.position = "fixed", e.style.left = `${t.left}px`, e.style.top = `${t.top}px`, e.style.width = `${t.width}px`, e.style.zIndex = "1000", e.style.pointerEvents = "none", e.style.margin = "0";
65
+ }
66
+ function C(e, t, n) {
67
+ e.style.left = `${t.clientX - n.x}px`, e.style.top = `${t.clientY - n.y}px`;
68
+ }
69
+ function w(e, t) {
70
+ e.style.position = t.position, e.style.left = t.left, e.style.top = t.top, e.style.width = t.width, e.style.zIndex = t.zIndex, e.style.pointerEvents = t.pointerEvents, e.style.margin = t.margin;
71
+ }
72
+ function T(e) {
73
+ let t = e.querySelector(a);
74
+ if (!(t instanceof HTMLElement)) return d.warn("Missing rank list; skipping field."), () => {};
75
+ let r = null, i = null, o = null, c = null, l = null, h = null, g = null, T = null, E = null, D = !1, O = [], k = () => {
76
+ if (r && i ? (t.insertBefore(r, i), i.remove()) : i && i.remove(), r && o && (w(r, o), r.removeAttribute("data-formie-rank-dragging")), l && h !== null) try {
77
+ l.releasePointerCapture(h);
78
+ } catch {}
79
+ r = null, i = null, o = null, c = null, l = null, h = null, g = null, T = null, E = null, t.removeAttribute("data-formie-rank-sorting"), D && (f(t), n(e, u, "reorder", { rankField: e })), D = !1;
80
+ }, A = (e) => {
81
+ if (!r || !i || !c || e.pointerId !== h) return;
82
+ e.preventDefault(), C(r, e, c);
83
+ let n = _(r), a = E === null || n >= E;
84
+ E = n;
85
+ let o = v(r, t, i, a);
86
+ o !== g && (g = o, y(t, i, r, o));
87
+ }, j = (e) => {
88
+ e.pointerId === h && (document.removeEventListener("pointermove", A), document.removeEventListener("pointerup", j), document.removeEventListener("pointercancel", j), i && T !== null && (D = m(t, i) !== T), k());
89
+ };
90
+ return p(t).forEach((e) => {
91
+ if (!e.querySelector(s)) return;
92
+ let n = (n) => {
93
+ if (n.button !== 0 || n.target instanceof HTMLInputElement) return;
94
+ n.preventDefault();
95
+ let a = e.getBoundingClientRect();
96
+ r = e, l = e, h = n.pointerId, c = {
97
+ x: n.clientX - a.left,
98
+ y: n.clientY - a.top
99
+ }, o = x(e), i = b(t, e), T = m(t, i), D = !1, S(e, a), e.setAttribute("data-formie-rank-dragging", "true"), t.setAttribute("data-formie-rank-sorting", "true"), e.setPointerCapture(n.pointerId), E = _(e), g = v(e, t, i, !0), document.addEventListener("pointermove", A), document.addEventListener("pointerup", j), document.addEventListener("pointercancel", j);
100
+ };
101
+ e.addEventListener("pointerdown", n), O.push(() => {
102
+ e.removeEventListener("pointerdown", n);
103
+ });
104
+ }), f(t), () => {
105
+ document.removeEventListener("pointermove", A), document.removeEventListener("pointerup", j), document.removeEventListener("pointercancel", j), O.forEach((e) => {
106
+ e();
107
+ }), k();
108
+ };
109
+ }
110
+ var E = {
111
+ id: u,
112
+ kind: "field",
113
+ match: (e) => e.target instanceof HTMLElement && (e.target.matches(i) || !!e.target.querySelector(i)),
114
+ setup: async (e) => {
115
+ if (!(e.target instanceof HTMLElement)) return;
116
+ let t = e.target.matches(i) ? [e.target] : Array.from(e.target.querySelectorAll(i)).filter((e) => e instanceof HTMLElement);
117
+ d.log("Module setup.", { fieldCount: t.length });
118
+ let n = t.map((e) => T(e));
119
+ return await e.emit("formie:module:survey-rank:init", { count: t.length }), { destroy: () => {
120
+ n.forEach((e) => {
121
+ e();
122
+ }), d.log("Module destroy.", { fieldCount: t.length }), e.emit("formie:module:survey-rank:destroy", {});
123
+ } };
124
+ }
125
+ };
126
+ //#endregion
127
+ export { E as surveyRankModule };
@@ -0,0 +1,88 @@
1
+ import { t as e } from "./debug-BV0DvdHx.js";
2
+ import { t } from "./styles-BfoIZwJp.js";
3
+ import { t as n } from "./shared-Bx9s0i0P.js";
4
+ import { t as r } from "./_survey-presentations-RbSqcQph.js";
5
+ //#region src/js/modules/fields/survey-rating.ts
6
+ var i = "[data-formie-survey-rating]", a = "[data-formie-survey-rating-stars]", o = "[data-formie-rating-option]", s = "input[data-formie-rating-input]", c = "data-formie-rating-pressed-while-checked", l = "survey-rating", u = e("fields", "survey-rating");
7
+ t(l, [r]);
8
+ function d(e) {
9
+ return Array.from(e.querySelectorAll(s)).filter((e) => e instanceof HTMLInputElement);
10
+ }
11
+ function f(e) {
12
+ let t = d(e).findIndex((e) => e.checked);
13
+ if (t >= 0) {
14
+ e.setAttribute("data-formie-rating-value", String(t + 1));
15
+ return;
16
+ }
17
+ e.removeAttribute("data-formie-rating-value");
18
+ }
19
+ function p(e) {
20
+ let t = e.querySelector(a);
21
+ if (!(t instanceof HTMLElement)) return u.warn("Missing rating stars container; skipping field."), () => {};
22
+ let r = [], i = () => {
23
+ t.removeAttribute("data-formie-rating-hover");
24
+ }, p = (e) => {
25
+ let n = Array.from(t.querySelectorAll(o)).indexOf(e);
26
+ n >= 0 && t.setAttribute("data-formie-rating-hover", String(n + 1));
27
+ };
28
+ return t.querySelectorAll(o).forEach((e) => {
29
+ if (!(e instanceof HTMLElement)) return;
30
+ let t = e.querySelector(s), n = () => {
31
+ if (t instanceof HTMLInputElement) {
32
+ if (t.checked) {
33
+ t.setAttribute(c, "true");
34
+ return;
35
+ }
36
+ t.removeAttribute(c);
37
+ }
38
+ }, i = () => {
39
+ p(e);
40
+ };
41
+ e.addEventListener("pointerdown", n), e.addEventListener("mouseenter", i), r.push(() => {
42
+ e.removeEventListener("pointerdown", n), e.removeEventListener("mouseenter", i);
43
+ });
44
+ }), t.addEventListener("mouseleave", i), r.push(() => {
45
+ t.removeEventListener("mouseleave", i);
46
+ }), d(t).forEach((i) => {
47
+ let a = (r) => {
48
+ if (i.getAttribute(c) !== "true") {
49
+ f(t), n(e, l, "change", {
50
+ ratingField: e,
51
+ value: i.checked ? i.value : ""
52
+ });
53
+ return;
54
+ }
55
+ r.preventDefault(), d(t).forEach((e) => {
56
+ e.checked = !1, e.removeAttribute(c);
57
+ }), f(t), n(e, l, "change", {
58
+ ratingField: e,
59
+ value: ""
60
+ });
61
+ };
62
+ i.addEventListener("click", a), r.push(() => {
63
+ i.removeEventListener("click", a), i.removeAttribute(c);
64
+ });
65
+ }), f(t), () => {
66
+ r.forEach((e) => {
67
+ e();
68
+ }), i(), t.removeAttribute("data-formie-rating-value");
69
+ };
70
+ }
71
+ var m = {
72
+ id: l,
73
+ kind: "field",
74
+ match: (e) => e.target instanceof HTMLElement && (e.target.matches(i) || !!e.target.querySelector(i)),
75
+ setup: async (e) => {
76
+ if (!(e.target instanceof HTMLElement)) return;
77
+ let t = e.target.matches(i) ? [e.target] : Array.from(e.target.querySelectorAll(i)).filter((e) => e instanceof HTMLElement);
78
+ u.log("Module setup.", { fieldCount: t.length });
79
+ let n = t.map((e) => p(e));
80
+ return await e.emit("formie:module:survey-rating:init", { count: t.length }), { destroy: () => {
81
+ n.forEach((e) => {
82
+ e();
83
+ }), u.log("Module destroy.", { fieldCount: t.length }), e.emit("formie:module:survey-rating:destroy", {});
84
+ } };
85
+ }
86
+ };
87
+ //#endregion
88
+ export { m as surveyRatingModule };
@@ -2,7 +2,7 @@ import { n as e } from "./async-nPFRNQ06.js";
2
2
  import { t } from "./styles-BfoIZwJp.js";
3
3
  import { a as n, o as r, t as i } from "./shared-Bx9s0i0P.js";
4
4
  //#region src/css/theme/fields/_table.css?inline
5
- var a = "@layer formie-theme{.formie-table-wrapper{-webkit-overflow-scrolling:touch;max-width:100%;overflow:auto hidden}.formie-table{width:var(--formie-table-width);margin-bottom:var(--formie-table-margin-bottom);border-collapse:var(--formie-table-border-collapse)}.formie-table th{text-align:var(--formie-table-th-text-align);font-size:var(--formie-table-th-font-size);font-weight:var(--formie-table-th-font-weight);color:var(--formie-table-th-color,var(--formie-gray-500))}.formie-table th,.formie-table td{padding:var(--formie-table-row-padding);vertical-align:top}.formie-table th:first-child,.formie-table td:first-child{padding-left:0}.formie-table th:last-child,.formie-table td:last-child{padding-right:0}.formie-table [data-col-remove]{width:calc(var(--formie-button-icon-button-size) + (var(--formie-table-row-padding) * 2));min-width:calc(var(--formie-button-icon-button-size) + (var(--formie-table-row-padding) * 2));white-space:nowrap;text-align:center;vertical-align:middle}.formie-table [data-formie-table-column-type=checkbox]{text-align:center;vertical-align:middle}.formie-table [data-formie-table-column-type=checkbox] .formie-checkbox-option{width:100%;min-height:var(--formie-check-size);justify-content:center;align-items:center;margin:0;display:flex}.formie-table [data-formie-table-column-type=checkbox] .formie-checkbox-option-label{width:var(--formie-check-size);min-width:var(--formie-check-size);height:var(--formie-check-size);margin:0 auto;padding-left:0;font-size:0;line-height:0;display:block}.formie-table [data-formie-table-column-type=checkbox] .formie-checkbox-option-label:before{position:static}.formie-table-color-input{min-width:4rem;padding:var(--formie-space-1)}.formie-table-multiline-input{min-height:calc(var(--formie-control-height) + var(--formie-space-2))}.formie-table-remove-button{vertical-align:middle;display:inline-flex}.formie-button.formie-table-add-button{width:auto;max-width:100%;padding-left:var(--formie-table-add-button-padding-left);justify-content:center;justify-self:start;align-items:center;display:inline-flex;position:relative}.formie-button.formie-table-add-button:before{content:\"\";width:var(--formie-table-add-button-width);height:var(--formie-table-add-button-height);left:var(--formie-table-add-button-left);-webkit-mask-image:var(--formie-table-add-button-icon-mask);-webkit-mask-image:var(--formie-table-add-button-icon-mask);mask-image:var(--formie-table-add-button-icon-mask);background-color:currentColor;display:block;position:absolute;top:50%;transform:translateY(-50%);-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}}", o = "[data-formie-table-field-layout]", s = "[data-formie-table]", c = "[data-formie-table-body]", l = "[data-formie-table-row]", u = "[data-formie-table-add]", d = "[data-formie-table-remove]", f = "data-formie-template-id", p = "data-formie-table-row-id", m = "table";
5
+ var a = "@layer formie-theme{.formie-table-wrapper{-webkit-overflow-scrolling:touch;max-width:100%;overflow:auto hidden}.formie-table{width:var(--formie-table-width);margin-bottom:var(--formie-table-margin-bottom);border-collapse:var(--formie-table-border-collapse)}.formie-table th{text-align:var(--formie-table-th-text-align);font-size:var(--formie-table-th-font-size);font-weight:var(--formie-table-th-font-weight);color:var(--formie-table-th-color,var(--formie-color-text-muted))}.formie-table th,.formie-table td{padding:var(--formie-table-row-padding);vertical-align:top}.formie-table th:first-child,.formie-table td:first-child{padding-left:0}.formie-table th:last-child,.formie-table td:last-child{padding-right:0}.formie-table [data-col-remove]{width:calc(var(--formie-button-icon-button-size) + (var(--formie-table-row-padding) * 2));min-width:calc(var(--formie-button-icon-button-size) + (var(--formie-table-row-padding) * 2));white-space:nowrap;text-align:center;vertical-align:middle}.formie-table [data-formie-table-column-type=checkbox]{text-align:center;vertical-align:middle}.formie-table [data-formie-table-column-type=checkbox] .formie-checkbox-option{width:100%;min-height:var(--formie-check-size);justify-content:center;align-items:center;margin:0;display:flex}.formie-table [data-formie-table-column-type=checkbox] .formie-checkbox-option-label{width:var(--formie-check-size);min-width:var(--formie-check-size);height:var(--formie-check-size);margin:0 auto;padding-left:0;font-size:0;line-height:0;display:block}.formie-table [data-formie-table-column-type=checkbox] .formie-checkbox-option-label:before{position:static}.formie-table-color-input{min-width:4rem;padding:var(--formie-space-1)}.formie-table-multiline-input{min-height:calc(var(--formie-control-height) + var(--formie-space-2))}.formie-table-remove-button{vertical-align:middle;display:inline-flex}.formie-button.formie-table-add-button{width:auto;max-width:100%;padding-left:var(--formie-table-add-button-padding-left);justify-content:center;justify-self:start;align-items:center;display:inline-flex;position:relative}.formie-button.formie-table-add-button:before{content:\"\";width:var(--formie-table-add-button-width);height:var(--formie-table-add-button-height);left:var(--formie-table-add-button-left);-webkit-mask-image:var(--formie-table-add-button-icon-mask);-webkit-mask-image:var(--formie-table-add-button-icon-mask);mask-image:var(--formie-table-add-button-icon-mask);background-color:currentColor;display:block;position:absolute;top:50%;transform:translateY(-50%);-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}}", o = "[data-formie-table-field-layout]", s = "[data-formie-table]", c = "[data-formie-table-body]", l = "[data-formie-table-row]", u = "[data-formie-table-add]", d = "[data-formie-table-remove]", f = "data-formie-template-id", p = "data-formie-table-row-id", m = "table";
6
6
  t(m, [a]);
7
7
  function h(e, t) {
8
8
  return n(e, t);
@@ -2081,7 +2081,7 @@ var Be = {
2081
2081
  }
2082
2082
  this.uppy.removeUploader(this.#o);
2083
2083
  }
2084
- }, He = "@layer formie-theme{.formie-upload-manager{gap:var(--formie-gap-field);flex-direction:column;display:flex}.formie-upload-manager-dropzone{justify-content:center;align-items:center;gap:var(--formie-space-2);padding:var(--formie-space-4);min-height:calc(var(--formie-control-height) * 3);border:var(--formie-border-width) dashed var(--formie-color-border);border-radius:var(--formie-radius-sm);background:var(--formie-color-surface-subtle);color:var(--formie-color-text);text-align:center;cursor:pointer;flex-direction:column;transition:border-color .15s,background-color .15s,box-shadow .15s;display:flex}.formie-upload-manager-dropzone:hover,.formie-upload-manager-dropzone.formie-upload-manager-dropzone-active{border-color:var(--formie-color-focus-ring);background:var(--formie-color-surface-muted)}.formie-upload-manager-dropzone:focus{outline:0}.formie-upload-manager-dropzone:focus-visible{box-shadow:0 0 0 var(--formie-focus-ring-width) var(--formie-color-focus-ring)}.formie-field-has-error .formie-upload-manager-dropzone{border-color:var(--formie-color-danger)}.formie-upload-manager-prompt{font-size:var(--formie-font-size-sm);color:var(--formie-color-text-muted);margin:0}.formie-upload-manager-list{gap:var(--formie-space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.formie-upload-manager-item{align-items:center;gap:var(--formie-space-2);padding:var(--formie-space-2) var(--formie-space-3);border:var(--formie-border-width) solid var(--formie-color-border);border-radius:var(--formie-radius-sm);background:var(--formie-color-surface);grid-template-columns:minmax(0,1fr) minmax(6.5rem,8rem) auto;display:grid}.formie-upload-manager-item.is-error{border-color:var(--formie-color-danger)}.formie-upload-manager-item.is-complete .formie-upload-manager-progress{opacity:0;visibility:hidden;pointer-events:none}.formie-upload-manager-filename{text-overflow:ellipsis;white-space:nowrap;font-size:var(--formie-font-size-sm);overflow:hidden}.formie-upload-manager-progress{justify-content:center;gap:var(--formie-space-1);min-height:var(--formie-button-icon-button-size);opacity:1;visibility:visible;flex-direction:column;align-self:center;transition:opacity .2s,visibility .2s;display:flex}.formie-upload-manager-progress-track{border-radius:var(--formie-radius-full);background:var(--formie-color-surface-muted);height:.375rem;position:relative;overflow:hidden}.formie-upload-manager-progress-bar{border-radius:inherit;background:var(--formie-color-primary);width:0;height:100%;transition:width .18s ease-out,background-color .2s}.formie-upload-manager-item.is-upload-complete .formie-upload-manager-progress-bar{background:var(--formie-color-success,var(--formie-color-primary));width:100%!important}.formie-upload-manager-item.is-uploading:not(.is-upload-complete) .formie-upload-manager-progress-track[data-indeterminate=true] .formie-upload-manager-progress-bar,.formie-upload-manager-item.is-preparing .formie-upload-manager-progress-bar,.formie-upload-manager-item.is-processing .formie-upload-manager-progress-bar{width:35%;animation:1.1s ease-in-out infinite formie-upload-manager-progress-indeterminate}.formie-upload-manager-item.is-processing .formie-upload-manager-progress-bar{opacity:.85}.formie-upload-manager-item.is-processing .formie-upload-manager-progress-label{color:var(--formie-color-text)}@keyframes formie-upload-manager-progress-indeterminate{0%{transform:translate(-120%)}to{transform:translate(320%)}}.formie-upload-manager-progress-label{font-size:var(--formie-font-size-xs);color:var(--formie-color-text-muted);text-align:center;white-space:nowrap;line-height:1.2}.formie-upload-manager-item.is-upload-complete .formie-upload-manager-progress-label{color:var(--formie-color-success,var(--formie-color-primary));font-weight:var(--formie-font-weight-medium)}.formie-upload-manager-error{font-size:var(--formie-font-size-xs);color:var(--formie-color-danger);grid-column:1/-1}.formie-upload-manager-browse-button{margin-top:var(--formie-space-1)}.formie-upload-manager-actions{align-items:center;gap:var(--formie-space-2);flex-shrink:0;align-self:center;display:flex}.formie-upload-manager-sort-controls{border-radius:var(--formie-radius-sm);background:0 0;flex-direction:row;align-items:center;gap:.0625rem;padding:0;display:inline-flex}.formie-upload-manager-sort-controls[hidden]{display:none}.formie-upload-manager-sort-button,.formie-upload-manager-action-button{border-radius:var(--formie-radius-sm);width:1.375rem;height:1.375rem;color:var(--formie-color-text-muted);cursor:pointer;text-indent:-9999px;white-space:nowrap;background:0 0;border:0;justify-content:center;align-items:center;padding:0;font-size:0;line-height:0;transition:background-color .15s,color .15s,opacity .15s;display:inline-flex;position:relative;overflow:hidden}.formie-upload-manager-sort-button{width:1.375rem;height:1.375rem}.formie-upload-manager-sort-button:hover:not(:disabled),.formie-upload-manager-action-button:hover{background:var(--formie-color-surface-muted);color:var(--formie-color-text)}.formie-upload-manager-sort-button:focus-visible,.formie-upload-manager-action-button:focus-visible{box-shadow:0 0 0 var(--formie-focus-ring-width) var(--formie-color-focus-ring);outline:0}.formie-upload-manager-sort-button:disabled{opacity:.28;cursor:not-allowed}.formie-upload-manager-sort-button:after,.formie-upload-manager-action-button:after{content:\"\";background-color:currentColor;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.formie-upload-manager-sort-button[data-formie-icon=arrow-up]{--formie-upload-manager-icon-mask:var(--formie-icon-mask-arrow-up)}.formie-upload-manager-sort-button[data-formie-icon=arrow-down]{--formie-upload-manager-icon-mask:var(--formie-icon-mask-arrow-down)}.formie-upload-manager-action-button[data-formie-icon=close]{--formie-upload-manager-icon-mask:var(--formie-icon-mask-close)}.formie-upload-manager-sort-button:after{width:.75rem;height:.75rem;-webkit-mask-image:var(--formie-upload-manager-icon-mask);-webkit-mask-image:var(--formie-upload-manager-icon-mask);mask-image:var(--formie-upload-manager-icon-mask)}.formie-upload-manager-action-button:after{width:.825rem;height:.825rem;-webkit-mask-image:var(--formie-upload-manager-icon-mask);-webkit-mask-image:var(--formie-upload-manager-icon-mask);mask-image:var(--formie-upload-manager-icon-mask)}.formie-upload-manager-remove-button{flex-shrink:0}}", z = "[data-formie-upload-manager-root]", B = "[data-formie-upload-manager]", Ue = "[data-formie-upload-manager-browse]", We = "[data-formie-upload-manager-input]", V = "[data-formie-upload-manager-status]", Ge = "[data-formie-upload-manager-list]", Ke = "[data-formie-upload-manager-sort-controls]", qe = "[data-formie-upload-manager-sort=\"up\"]", Je = "[data-formie-upload-manager-sort=\"down\"]", H = "data-formie-file-upload-anchor", Ye = "data-formie-file-upload-asset-id", Xe = n("reset"), Ze = r("repeater", "init-row"), Qe = "upload-manager", $e = "upload-manager", et = ["uploadManagerRequired", "uploadManagerFileLimit"], tt = 900, nt = 95, rt = 12e4, U = i("fields", "upload-manager");
2084
+ }, He = "@layer formie-theme{.formie-upload-manager{gap:var(--formie-gap-field);flex-direction:column;display:flex}.formie-upload-manager-dropzone{justify-content:center;align-items:center;gap:var(--formie-space-2);padding:var(--formie-space-4);min-height:calc(var(--formie-control-height) * 3);border:var(--formie-border-width) dashed var(--formie-color-border-control);border-radius:var(--formie-radius-sm);background:var(--formie-color-surface-subtle);color:var(--formie-color-text);text-align:center;cursor:pointer;flex-direction:column;transition:border-color .15s,background-color .15s,box-shadow .15s;display:flex}.formie-upload-manager-dropzone:hover,.formie-upload-manager-dropzone.formie-upload-manager-dropzone-active{border-color:var(--formie-color-focus-ring);background:var(--formie-color-surface-muted)}.formie-upload-manager-dropzone:focus{outline:0}.formie-upload-manager-dropzone:focus-visible{box-shadow:0 0 0 var(--formie-focus-ring-width) var(--formie-color-focus-ring)}.formie-field-has-error .formie-upload-manager-dropzone{border-color:var(--formie-color-danger)}.formie-upload-manager-prompt{font-size:var(--formie-font-size-sm);color:var(--formie-color-text-muted);margin:0}.formie-upload-manager-list{gap:var(--formie-space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.formie-upload-manager-item{align-items:center;gap:var(--formie-space-2);padding:var(--formie-space-2) var(--formie-space-3);border:var(--formie-border-width) solid var(--formie-color-border-control);border-radius:var(--formie-radius-sm);background:var(--formie-color-surface);grid-template-columns:minmax(0,1fr) minmax(6.5rem,8rem) auto;display:grid}.formie-upload-manager-item.is-error{border-color:var(--formie-color-danger)}.formie-upload-manager-item.is-complete .formie-upload-manager-progress{opacity:0;visibility:hidden;pointer-events:none}.formie-upload-manager-filename{text-overflow:ellipsis;white-space:nowrap;font-size:var(--formie-font-size-sm);overflow:hidden}.formie-upload-manager-progress{justify-content:center;gap:var(--formie-space-1);min-height:var(--formie-button-icon-button-size);opacity:1;visibility:visible;flex-direction:column;align-self:center;transition:opacity .2s,visibility .2s;display:flex}.formie-upload-manager-progress-track{border-radius:var(--formie-radius-full);background:var(--formie-color-surface-muted);height:.375rem;position:relative;overflow:hidden}.formie-upload-manager-progress-bar{border-radius:inherit;background:var(--formie-color-primary);width:0;height:100%;transition:width .18s ease-out,background-color .2s}.formie-upload-manager-item.is-upload-complete .formie-upload-manager-progress-bar{background:var(--formie-color-success,var(--formie-color-primary));width:100%!important}.formie-upload-manager-item.is-uploading:not(.is-upload-complete) .formie-upload-manager-progress-track[data-indeterminate=true] .formie-upload-manager-progress-bar,.formie-upload-manager-item.is-preparing .formie-upload-manager-progress-bar,.formie-upload-manager-item.is-processing .formie-upload-manager-progress-bar{width:35%;animation:1.1s ease-in-out infinite formie-upload-manager-progress-indeterminate}.formie-upload-manager-item.is-processing .formie-upload-manager-progress-bar{opacity:.85}.formie-upload-manager-item.is-processing .formie-upload-manager-progress-label{color:var(--formie-color-text)}@keyframes formie-upload-manager-progress-indeterminate{0%{transform:translate(-120%)}to{transform:translate(320%)}}.formie-upload-manager-progress-label{font-size:var(--formie-font-size-xs);color:var(--formie-color-text-muted);text-align:center;white-space:nowrap;line-height:1.2}.formie-upload-manager-item.is-upload-complete .formie-upload-manager-progress-label{color:var(--formie-color-success-dark,var(--formie-color-primary));font-weight:var(--formie-font-weight-medium)}.formie-upload-manager-error{font-size:var(--formie-font-size-xs);color:var(--formie-color-danger);grid-column:1/-1}.formie-upload-manager-browse-button{margin-top:var(--formie-space-1)}.formie-upload-manager-actions{align-items:center;gap:var(--formie-space-2);flex-shrink:0;align-self:center;display:flex}.formie-upload-manager-sort-controls{border-radius:var(--formie-radius-sm);background:0 0;flex-direction:row;align-items:center;gap:.0625rem;padding:0;display:inline-flex}.formie-upload-manager-sort-controls[hidden]{display:none}.formie-upload-manager-sort-button,.formie-upload-manager-action-button{border-radius:var(--formie-radius-sm);width:1.375rem;height:1.375rem;color:var(--formie-color-text-muted);cursor:pointer;text-indent:-9999px;white-space:nowrap;background:0 0;border:0;justify-content:center;align-items:center;padding:0;font-size:0;line-height:0;transition:background-color .15s,color .15s,opacity .15s;display:inline-flex;position:relative;overflow:hidden}.formie-upload-manager-sort-button{width:1.375rem;height:1.375rem}.formie-upload-manager-sort-button:hover:not(:disabled),.formie-upload-manager-action-button:hover{background:var(--formie-color-surface-muted);color:var(--formie-color-text)}.formie-upload-manager-sort-button:focus-visible,.formie-upload-manager-action-button:focus-visible{box-shadow:0 0 0 var(--formie-focus-ring-width) var(--formie-color-focus-ring);outline:0}.formie-upload-manager-sort-button:disabled{opacity:.28;cursor:not-allowed}.formie-upload-manager-sort-button:after,.formie-upload-manager-action-button:after{content:\"\";background-color:currentColor;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.formie-upload-manager-sort-button[data-formie-icon=arrow-up]{--formie-upload-manager-icon-mask:var(--formie-icon-mask-arrow-up)}.formie-upload-manager-sort-button[data-formie-icon=arrow-down]{--formie-upload-manager-icon-mask:var(--formie-icon-mask-arrow-down)}.formie-upload-manager-action-button[data-formie-icon=close]{--formie-upload-manager-icon-mask:var(--formie-icon-mask-close)}.formie-upload-manager-sort-button:after{width:.75rem;height:.75rem;-webkit-mask-image:var(--formie-upload-manager-icon-mask);-webkit-mask-image:var(--formie-upload-manager-icon-mask);mask-image:var(--formie-upload-manager-icon-mask)}.formie-upload-manager-action-button:after{width:.825rem;height:.825rem;-webkit-mask-image:var(--formie-upload-manager-icon-mask);-webkit-mask-image:var(--formie-upload-manager-icon-mask);mask-image:var(--formie-upload-manager-icon-mask)}.formie-upload-manager-remove-button{flex-shrink:0}}", z = "[data-formie-upload-manager-root]", B = "[data-formie-upload-manager]", Ue = "[data-formie-upload-manager-browse]", We = "[data-formie-upload-manager-input]", V = "[data-formie-upload-manager-status]", Ge = "[data-formie-upload-manager-list]", Ke = "[data-formie-upload-manager-sort-controls]", qe = "[data-formie-upload-manager-sort=\"up\"]", Je = "[data-formie-upload-manager-sort=\"down\"]", H = "data-formie-file-upload-anchor", Ye = "data-formie-file-upload-asset-id", Xe = n("reset"), Ze = r("repeater", "init-row"), Qe = "upload-manager", $e = "upload-manager", et = ["uploadManagerRequired", "uploadManagerFileLimit"], tt = 900, nt = 95, rt = 12e4, U = i("fields", "upload-manager");
2085
2085
  o(Qe, [He]);
2086
2086
  function W(e) {
2087
2087
  return !!e && typeof e == "object" && !Array.isArray(e);
@@ -15,6 +15,7 @@
15
15
  @import "./theme/fields/_select.css";
16
16
  @import "./theme/fields/_combobox.css";
17
17
  @import "./theme/fields/_check-radio.css";
18
+ @import "./theme/fields/_survey-presentations.css";
18
19
  @import "./theme/fields/_address.css";
19
20
  @import "./theme/fields/_address-state.css";
20
21
  @import "./theme/integrations/_payment-modal.css";
@@ -52,6 +52,8 @@
52
52
  --formie-neutral-200: #e2e8f0;
53
53
  --formie-neutral-300: #cbd5e1;
54
54
  --formie-neutral-400: #94a3b8;
55
+ /* Lightest slate step that meets ~3:1 non-text contrast on white (WCAG 1.4.11). */
56
+ --formie-neutral-450: #8796ac;
55
57
  --formie-neutral-500: #64748b;
56
58
  --formie-neutral-600: #475569;
57
59
  --formie-neutral-700: #334155;
@@ -101,16 +103,19 @@
101
103
  --formie-color-surface-subtle: var(--formie-neutral-50);
102
104
  --formie-color-surface-muted: var(--formie-neutral-100);
103
105
  --formie-color-text: var(--formie-neutral-700);
104
- --formie-color-text-muted: var(--formie-neutral-500);
106
+ --formie-color-text-muted: var(--formie-neutral-600);
105
107
  --formie-color-heading: var(--formie-neutral-900);
108
+ /* Structural chrome: tabs, groups, dividers. */
106
109
  --formie-color-border: var(--formie-neutral-300);
110
+ /* Interactive controls: inputs, selects, checkboxes. Border-only; use focus ring for interaction contrast. */
111
+ --formie-color-border-control: var(--formie-neutral-400);
107
112
  --formie-color-border-soft: var(--formie-neutral-200);
108
113
  --formie-color-primary: var(--formie-primary-400);
109
114
  --formie-color-primary-hover: var(--formie-primary-500);
110
115
  --formie-color-primary-border: var(--formie-primary-500);
111
116
  --formie-color-primary-soft: var(--formie-primary-100);
112
117
  --formie-color-focus-ring: var(--formie-primary-300);
113
- --formie-color-danger: var(--formie-danger-500);
118
+ --formie-color-danger: var(--formie-danger-600);
114
119
  --formie-color-danger-soft: var(--formie-danger-50);
115
120
  --formie-color-danger-dark: var(--formie-danger-900);
116
121
  --formie-color-success: var(--formie-success-500);
@@ -158,8 +163,8 @@
158
163
  --formie-button-icon-border-radius: var(--formie-radius-full);
159
164
  --formie-button-icon-background: var(--formie-neutral-100);
160
165
  --formie-button-icon-background-hover: var(--formie-neutral-200);
161
- --formie-button-icon-border: var(--formie-border-width) solid var(--formie-neutral-300);
162
- --formie-button-icon-border-hover: var(--formie-border-width) solid var(--formie-neutral-400);
166
+ --formie-button-icon-border: var(--formie-border-width) solid var(--formie-color-border-control);
167
+ --formie-button-icon-border-hover: var(--formie-border-width) solid var(--formie-neutral-450);
163
168
  --formie-button-icon-color: var(--formie-neutral-950);
164
169
  --formie-button-opacity-disabled: 0.7;
165
170
  --formie-button-shadow-focus: 0 0 0 3px var(--formie-color-border-soft);
@@ -273,7 +278,7 @@
273
278
  --formie-signature-width: 100%;
274
279
  --formie-signature-height: 8rem;
275
280
  --formie-signature-background: var(--formie-color-surface-subtle);
276
- --formie-signature-border: 1px solid var(--formie-color-border);
281
+ --formie-signature-border: 1px solid var(--formie-color-border-control);
277
282
  --formie-signature-border-radius: var(--formie-radius-sm);
278
283
 
279
284
  --formie-signature-remove-button-top: 0;
@@ -51,7 +51,7 @@
51
51
  height: var(--formie-check-size);
52
52
  content: "";
53
53
  cursor: pointer;
54
- border: var(--formie-border-width) solid var(--formie-color-border);
54
+ border: var(--formie-border-width) solid var(--formie-color-border-control);
55
55
  background-color: var(--formie-check-label-background-color);
56
56
  background-repeat: no-repeat;
57
57
  background-position: center center;
@@ -32,7 +32,7 @@
32
32
  overflow: hidden;
33
33
  z-index: 1;
34
34
  width: 100%;
35
- border: var(--formie-border-width) solid var(--formie-color-border);
35
+ border: var(--formie-border-width) solid var(--formie-color-border-control);
36
36
  border-radius: var(--formie-radius-sm);
37
37
  background-color: var(--formie-color-surface);
38
38
  background-image: none;
@@ -12,7 +12,7 @@
12
12
  margin-inline-end: var(--formie-space-2);
13
13
  padding: calc(var(--formie-control-padding-y) - 1px) var(--formie-space-2);
14
14
  min-height: calc(var(--formie-control-height) - (var(--formie-space-1) * 2));
15
- border: var(--formie-border-width) solid var(--formie-color-border);
15
+ border: var(--formie-border-width) solid var(--formie-color-border-control);
16
16
  border-radius: calc(var(--formie-radius-sm) - 1px);
17
17
  background: var(--formie-color-surface-subtle);
18
18
  color: var(--formie-color-heading);
@@ -26,7 +26,7 @@
26
26
 
27
27
  .formie-file-input:hover::file-selector-button,
28
28
  .formie-file-input:hover::-webkit-file-upload-button {
29
- border-color: color-mix(in srgb, var(--formie-color-border) 70%, var(--formie-color-heading) 30%);
29
+ border-color: color-mix(in srgb, var(--formie-color-border-control) 70%, var(--formie-color-heading) 30%);
30
30
  background: var(--formie-color-surface-muted);
31
31
  }
32
32
 
@@ -47,7 +47,7 @@
47
47
  .formie-file-summary {
48
48
  padding: var(--formie-file-summary-padding);
49
49
  gap: var(--formie-gap-file-summary);
50
- border: var(--formie-border-width) solid var(--formie-color-border);
50
+ border: var(--formie-border-width) solid var(--formie-color-border-control);
51
51
  border-radius: var(--formie-radius-sm);
52
52
  }
53
53
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  .formie-input,
4
4
  .formie-textarea {
5
- border: var(--formie-border-width) solid var(--formie-color-border);
5
+ border: var(--formie-border-width) solid var(--formie-color-border-control);
6
6
  border-radius: var(--formie-radius-sm);
7
7
  background: var(--formie-color-surface);
8
8
  transition: border-color 150ms ease, box-shadow 150ms ease, background-color 150ms ease;
@@ -9,7 +9,7 @@
9
9
  display: grid;
10
10
  gap: var(--formie-space-4);
11
11
  padding: var(--formie-space-4);
12
- border: var(--formie-border-width) solid var(--formie-color-border);
12
+ border: var(--formie-border-width) solid var(--formie-color-border-control);
13
13
  border-radius: var(--formie-radius-md);
14
14
  transition: border-color 150ms ease, box-shadow 150ms ease, background-color 150ms ease;
15
15
  }
@@ -1,6 +1,6 @@
1
1
  @layer formie-theme {
2
2
  .formie-rich-text {
3
- border: var(--formie-border-width) solid var(--formie-color-border);
3
+ border: var(--formie-border-width) solid var(--formie-color-border-control);
4
4
  border-radius: var(--formie-radius-sm);
5
5
  background: var(--formie-color-surface);
6
6
  box-sizing: border-box;
@@ -1,6 +1,6 @@
1
1
  @layer formie-theme {
2
2
  .formie-select {
3
- border: var(--formie-border-width) solid var(--formie-color-border);
3
+ border: var(--formie-border-width) solid var(--formie-color-border-control);
4
4
  border-radius: var(--formie-radius-sm);
5
5
  background: var(--formie-color-surface);
6
6
  transition: border-color 150ms ease, box-shadow 150ms ease, background-color 150ms ease;