@alfadocs/ui-kit-debug 0.11.0 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/dist/_chunks/_commonjsHelpers-C6fGbg64.js +7 -0
  2. package/dist/_chunks/_commonjsHelpers-C6fGbg64.js.map +1 -0
  3. package/dist/_chunks/{ai-prompt-input-bAJwYu84.js → ai-prompt-input-DEiQwIMn.js} +22 -21
  4. package/dist/_chunks/ai-prompt-input-DEiQwIMn.js.map +1 -0
  5. package/dist/_chunks/{audio-recorder-BHBonrFf.js → audio-recorder-CRh4uyFL.js} +2 -2
  6. package/dist/_chunks/{audio-recorder-BHBonrFf.js.map → audio-recorder-CRh4uyFL.js.map} +1 -1
  7. package/dist/_chunks/{autocomplete-C34hbfKh.js → autocomplete-mOg7WLOh.js} +2 -2
  8. package/dist/_chunks/{autocomplete-C34hbfKh.js.map → autocomplete-mOg7WLOh.js.map} +1 -1
  9. package/dist/_chunks/{chat-input-Bov-gkwP.js → chat-input-UK-bXU7u.js} +9 -8
  10. package/dist/_chunks/chat-input-UK-bXU7u.js.map +1 -0
  11. package/dist/_chunks/{combobox-BHhnR3qm.js → combobox-D5tWe0t_.js} +2 -2
  12. package/dist/_chunks/{combobox-BHhnR3qm.js.map → combobox-D5tWe0t_.js.map} +1 -1
  13. package/dist/_chunks/{contact-card-VJIUqKB2.js → contact-card-DTQUMetD.js} +22 -38
  14. package/dist/_chunks/contact-card-DTQUMetD.js.map +1 -0
  15. package/dist/_chunks/{date-picker-BD5FYW08.js → date-picker-BlhtBhPo.js} +2 -2
  16. package/dist/_chunks/{date-picker-BD5FYW08.js.map → date-picker-BlhtBhPo.js.map} +1 -1
  17. package/dist/_chunks/{date-range-picker-BZLVgcXE.js → date-range-picker-C2hRu_Ke.js} +2 -2
  18. package/dist/_chunks/{date-range-picker-BZLVgcXE.js.map → date-range-picker-C2hRu_Ke.js.map} +1 -1
  19. package/dist/_chunks/{date-time-picker-CCoRWX7R.js → date-time-picker-B67mPZmP.js} +2 -2
  20. package/dist/_chunks/{date-time-picker-CCoRWX7R.js.map → date-time-picker-B67mPZmP.js.map} +1 -1
  21. package/dist/_chunks/external-link-C6F25E6k.js +16 -0
  22. package/dist/_chunks/external-link-C6F25E6k.js.map +1 -0
  23. package/dist/_chunks/{file-upload-DIecAfC-.js → file-upload-nMh-1jDD.js} +2 -2
  24. package/dist/_chunks/{file-upload-DIecAfC-.js.map → file-upload-nMh-1jDD.js.map} +1 -1
  25. package/dist/_chunks/{index-CeY1nNvd.js → index-CFoBa86t.js} +61 -63
  26. package/dist/_chunks/{index-CeY1nNvd.js.map → index-CFoBa86t.js.map} +1 -1
  27. package/dist/_chunks/{input-surface-u4QB0lxe.js → input-surface-xyERuLU_.js} +9 -3
  28. package/dist/_chunks/input-surface-xyERuLU_.js.map +1 -0
  29. package/dist/_chunks/{leo-sidebar-B054wsZm.js → leo-sidebar-D3TuyH5_.js} +2 -2
  30. package/dist/_chunks/{leo-sidebar-B054wsZm.js.map → leo-sidebar-D3TuyH5_.js.map} +1 -1
  31. package/dist/_chunks/{link-BGpwaFik.js → link-DmM5IevO.js} +16 -26
  32. package/dist/_chunks/link-DmM5IevO.js.map +1 -0
  33. package/dist/_chunks/map-pin-B8STOPMJ.js +21 -0
  34. package/dist/_chunks/map-pin-B8STOPMJ.js.map +1 -0
  35. package/dist/_chunks/map-view-Dd48BxVB.js +1941 -0
  36. package/dist/_chunks/map-view-Dd48BxVB.js.map +1 -0
  37. package/dist/_chunks/{multi-select-Bh-xR8kP.js → multi-select-DooDzQIp.js} +2 -2
  38. package/dist/_chunks/{multi-select-Bh-xR8kP.js.map → multi-select-DooDzQIp.js.map} +1 -1
  39. package/dist/_chunks/{number-input-mpSLk-ld.js → number-input-DH00o0DN.js} +28 -27
  40. package/dist/_chunks/number-input-DH00o0DN.js.map +1 -0
  41. package/dist/_chunks/{otp-input-CI-Zv5q6.js → otp-input-BBXYvLx5.js} +49 -48
  42. package/dist/_chunks/otp-input-BBXYvLx5.js.map +1 -0
  43. package/dist/_chunks/{phone-input-DtBVs5fz.js → phone-input-DKSHX7NQ.js} +23 -22
  44. package/dist/_chunks/phone-input-DKSHX7NQ.js.map +1 -0
  45. package/dist/_chunks/{react-day-picker-C04L_28V.js → react-day-picker-C5F3-TTX.js} +6 -3
  46. package/dist/_chunks/{react-day-picker-C04L_28V.js.map → react-day-picker-C5F3-TTX.js.map} +1 -1
  47. package/dist/_chunks/{search-bar-DmZZ9UvV.js → search-bar-DORSAzNt.js} +2 -2
  48. package/dist/_chunks/{search-bar-DmZZ9UvV.js.map → search-bar-DORSAzNt.js.map} +1 -1
  49. package/dist/_chunks/{search-input-BBtSRH-Q.js → search-input-BtEJAJHa.js} +2 -2
  50. package/dist/_chunks/{search-input-BBtSRH-Q.js.map → search-input-BtEJAJHa.js.map} +1 -1
  51. package/dist/_chunks/{select-i9MwQeQy.js → select-Ca6ibiDL.js} +13 -12
  52. package/dist/_chunks/select-Ca6ibiDL.js.map +1 -0
  53. package/dist/_chunks/{tabs-Cg794H0Q.js → tabs-CRCyPpJo.js} +2 -2
  54. package/dist/_chunks/{tabs-Cg794H0Q.js.map → tabs-CRCyPpJo.js.map} +1 -1
  55. package/dist/_chunks/{text-area-DHtcpcLv.js → text-area-D5GAe8pV.js} +26 -25
  56. package/dist/_chunks/text-area-D5GAe8pV.js.map +1 -0
  57. package/dist/_chunks/{text-input-1oqFRbVI.js → text-input-CakysYnD.js} +26 -25
  58. package/dist/_chunks/text-input-CakysYnD.js.map +1 -0
  59. package/dist/_chunks/{transcript-panel-BpJqPr7I.js → transcript-panel-DUrjx5sa.js} +2 -2
  60. package/dist/_chunks/{transcript-panel-BpJqPr7I.js.map → transcript-panel-DUrjx5sa.js.map} +1 -1
  61. package/dist/_chunks/{use-password-requirements-DbPZMfV9.js → use-password-requirements-BOgFsoIe.js} +2 -2
  62. package/dist/_chunks/{use-password-requirements-DbPZMfV9.js.map → use-password-requirements-BOgFsoIe.js.map} +1 -1
  63. package/dist/_chunks/whatsapp-button-Bj5FIhpC.js +175 -0
  64. package/dist/_chunks/whatsapp-button-Bj5FIhpC.js.map +1 -0
  65. package/dist/agent-catalog.json +53 -1
  66. package/dist/components/_shared/date-picker-variants.d.ts.map +1 -1
  67. package/dist/components/_shared/input-surface.d.ts.map +1 -1
  68. package/dist/components/ai-prompt-input/ai-prompt-input.d.ts.map +1 -1
  69. package/dist/components/ai-prompt-input/index.js +1 -1
  70. package/dist/components/audio-recorder/index.js +1 -1
  71. package/dist/components/autocomplete/index.js +1 -1
  72. package/dist/components/chat-input/chat-input.d.ts.map +1 -1
  73. package/dist/components/chat-input/index.js +1 -1
  74. package/dist/components/combobox/index.js +1 -1
  75. package/dist/components/contact-card/index.js +1 -1
  76. package/dist/components/date-picker/index.js +1 -1
  77. package/dist/components/date-range-picker/index.js +1 -1
  78. package/dist/components/date-time-picker/index.js +1 -1
  79. package/dist/components/file-upload/index.js +1 -1
  80. package/dist/components/index.d.ts +2 -0
  81. package/dist/components/index.d.ts.map +1 -1
  82. package/dist/components/link/index.js +1 -1
  83. package/dist/components/map-view/index.d.ts +3 -0
  84. package/dist/components/map-view/index.d.ts.map +1 -0
  85. package/dist/components/map-view/index.js +5 -0
  86. package/dist/components/map-view/index.js.map +1 -0
  87. package/dist/components/map-view/map-view.agent.d.ts +4 -0
  88. package/dist/components/map-view/map-view.agent.d.ts.map +1 -0
  89. package/dist/components/map-view/map-view.d.ts +78 -0
  90. package/dist/components/map-view/map-view.d.ts.map +1 -0
  91. package/dist/components/multi-select/index.js +1 -1
  92. package/dist/components/number-input/index.js +1 -1
  93. package/dist/components/number-input/number-input.d.ts.map +1 -1
  94. package/dist/components/otp-input/index.js +1 -1
  95. package/dist/components/otp-input/otp-input.d.ts.map +1 -1
  96. package/dist/components/password-input/index.js +1 -1
  97. package/dist/components/phone-input/index.js +1 -1
  98. package/dist/components/phone-input/phone-input.d.ts.map +1 -1
  99. package/dist/components/search-bar/index.js +1 -1
  100. package/dist/components/search-input/index.js +1 -1
  101. package/dist/components/select/index.js +1 -1
  102. package/dist/components/select/select.d.ts.map +1 -1
  103. package/dist/components/tabs/index.js +1 -1
  104. package/dist/components/text-area/index.js +1 -1
  105. package/dist/components/text-area/text-area.d.ts.map +1 -1
  106. package/dist/components/text-input/index.js +1 -1
  107. package/dist/components/text-input/text-input.d.ts.map +1 -1
  108. package/dist/components/transcript-panel/index.js +1 -1
  109. package/dist/components/whatsapp-button/index.d.ts +3 -0
  110. package/dist/components/whatsapp-button/index.d.ts.map +1 -0
  111. package/dist/components/whatsapp-button/index.js +5 -0
  112. package/dist/components/whatsapp-button/index.js.map +1 -0
  113. package/dist/components/whatsapp-button/whatsapp-button.d.ts +32 -0
  114. package/dist/components/whatsapp-button/whatsapp-button.d.ts.map +1 -0
  115. package/dist/i18n/config.js +45 -6
  116. package/dist/i18n/config.js.map +1 -1
  117. package/dist/i18n/resources.d.ts +39 -0
  118. package/dist/i18n/resources.d.ts.map +1 -1
  119. package/dist/index.js +361 -357
  120. package/dist/index.js.map +1 -1
  121. package/dist/locales/de.json +13 -0
  122. package/dist/locales/en.json +13 -0
  123. package/dist/locales/it.json +13 -0
  124. package/dist/patterns/leo-assistant/index.js +1 -1
  125. package/dist/tokens/google-maps-theme.d.ts +15 -0
  126. package/dist/tokens/google-maps-theme.d.ts.map +1 -0
  127. package/dist/tokens.css +1 -1
  128. package/package.json +15 -1
  129. package/dist/_chunks/ai-prompt-input-bAJwYu84.js.map +0 -1
  130. package/dist/_chunks/chat-input-Bov-gkwP.js.map +0 -1
  131. package/dist/_chunks/contact-card-VJIUqKB2.js.map +0 -1
  132. package/dist/_chunks/input-surface-u4QB0lxe.js.map +0 -1
  133. package/dist/_chunks/link-BGpwaFik.js.map +0 -1
  134. package/dist/_chunks/number-input-mpSLk-ld.js.map +0 -1
  135. package/dist/_chunks/otp-input-CI-Zv5q6.js.map +0 -1
  136. package/dist/_chunks/phone-input-DtBVs5fz.js.map +0 -1
  137. package/dist/_chunks/select-i9MwQeQy.js.map +0 -1
  138. package/dist/_chunks/text-area-DHtcpcLv.js.map +0 -1
  139. package/dist/_chunks/text-input-1oqFRbVI.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import { jsxs as ee, jsx as M } from "react/jsx-runtime";
2
- import { forwardRef as te, useId as re, useState as L, useRef as R, useEffect as se, useCallback as N, useMemo as oe } from "react";
2
+ import { forwardRef as te, useId as se, useState as L, useRef as R, useEffect as re, useCallback as N, useMemo as oe } from "react";
3
3
  import { c as O } from "./index-D2ZczOXr.js";
4
4
  import { useTranslation as ae } from "react-i18next";
5
5
  import { u as ie } from "./form-field-context-B3APVHKx.js";
@@ -64,8 +64,9 @@ const ce = {
64
64
  [
65
65
  "ds:w-[var(--min-target-size)] ds:h-[var(--min-target-size)]",
66
66
  "ds:rounded-[var(--radius-sm)]",
67
- "ds:border ds:bg-background ds:text-foreground ds:text-center ds:font-medium ds:text-[length:var(--font-size-lg)]",
68
- "ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none",
67
+ "ds:border ds:bg-input ds:text-foreground ds:text-center ds:font-medium ds:text-[length:var(--font-size-lg)]",
68
+ "ds:shadow-[var(--shadow-input)]",
69
+ "ds:transition-[colors,box-shadow] ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none",
69
70
  "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
70
71
  "ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
71
72
  "ds:disabled:cursor-not-allowed ds:disabled:opacity-50"
@@ -105,69 +106,69 @@ const pe = te(
105
106
  id: K,
106
107
  className: j
107
108
  }, z) => {
108
- const { t: H } = ae(), v = ie(), _ = re(), P = y ? _ : void 0, I = o !== void 0, [q, W] = L(
109
+ const { t: H } = ae(), v = ie(), _ = se(), P = y ? _ : void 0, w = o !== void 0, [q, W] = L(
109
110
  () => g(m ?? "", e)
110
111
  ), p = g(
111
- I ? o : q,
112
+ w ? o : q,
112
113
  e
113
- ), G = de(p, e), k = v.disabled || !!S, B = v.invalid || !!$, J = B ? "error" : "default", C = R([]), w = R(p.length === e), d = R(p);
114
+ ), G = de(p, e), I = v.disabled || !!S, B = v.invalid || !!$, J = B ? "error" : "default", C = R([]), h = R(p.length === e), d = R(p);
114
115
  d.current = p;
115
116
  const Q = () => {
116
- const r = p.length;
117
- return r >= e ? e - 1 : r;
118
- }, [f, V] = L(Q);
119
- se(() => {
120
- f >= e && V(e - 1);
117
+ const s = p.length;
118
+ return s >= e ? e - 1 : s;
119
+ }, [f, k] = L(Q);
120
+ re(() => {
121
+ f >= e && k(e - 1);
121
122
  }, [f, e]);
122
123
  const c = N(
123
- (r) => {
124
- const t = Math.max(0, Math.min(e - 1, r));
125
- V(t);
126
- const s = C.current[t];
127
- s && (s.focus(), s.select());
124
+ (s) => {
125
+ const t = Math.max(0, Math.min(e - 1, s));
126
+ k(t);
127
+ const r = C.current[t];
128
+ r && (r.focus(), r.select());
128
129
  },
129
130
  [e]
130
131
  ), u = N(
131
- (r) => {
132
- const t = g(r, e);
133
- I || W(t), d.current = t, l == null || l(t), t.length === e ? w.current || (w.current = !0, n == null || n(t)) : w.current = !1;
132
+ (s) => {
133
+ const t = g(s, e);
134
+ w || W(t), d.current = t, l == null || l(t), t.length === e ? h.current || (h.current = !0, n == null || n(t)) : h.current = !1;
134
135
  },
135
- [I, e, l, n]
136
- ), U = (r) => (t) => {
137
- const s = t.target.value, a = F(s).replace(/\D/g, ""), i = d.current;
136
+ [w, e, l, n]
137
+ ), U = (s) => (t) => {
138
+ const r = t.target.value, a = F(r).replace(/\D/g, ""), i = d.current;
138
139
  if (a.length === 0) {
139
- if (s === "" && r < i.length) {
140
- const A = i.slice(0, r) + i.slice(r + 1);
140
+ if (r === "" && s < i.length) {
141
+ const A = i.slice(0, s) + i.slice(s + 1);
141
142
  u(A);
142
143
  }
143
144
  return;
144
145
  }
145
- const b = i.slice(0, r), h = i.slice(r + a.length), D = (b + a + h).slice(0, e);
146
+ const b = i.slice(0, s), V = i.slice(s + a.length), D = (b + a + V).slice(0, e);
146
147
  u(D);
147
- const T = Math.min(r + a.length, e - 1);
148
+ const T = Math.min(s + a.length, e - 1);
148
149
  c(T);
149
- }, X = (r) => (t) => {
150
- const s = d.current;
150
+ }, X = (s) => (t) => {
151
+ const r = d.current;
151
152
  if (t.key === "Backspace") {
152
- if (s[r]) {
153
+ if (r[s]) {
153
154
  t.preventDefault();
154
- const a = s.slice(0, r) + s.slice(r + 1);
155
+ const a = r.slice(0, s) + r.slice(s + 1);
155
156
  u(a);
156
157
  return;
157
158
  }
158
- if (r > 0) {
159
+ if (s > 0) {
159
160
  t.preventDefault();
160
- const a = s.slice(0, r - 1) + s.slice(r);
161
- u(a), c(r - 1);
161
+ const a = r.slice(0, s - 1) + r.slice(s);
162
+ u(a), c(s - 1);
162
163
  }
163
164
  return;
164
165
  }
165
166
  if (t.key === "ArrowLeft") {
166
- t.preventDefault(), r > 0 && c(r - 1);
167
+ t.preventDefault(), s > 0 && c(s - 1);
167
168
  return;
168
169
  }
169
170
  if (t.key === "ArrowRight") {
170
- t.preventDefault(), r < e - 1 && c(r + 1);
171
+ t.preventDefault(), s < e - 1 && c(s + 1);
171
172
  return;
172
173
  }
173
174
  if (t.key === "Home") {
@@ -175,20 +176,20 @@ const pe = te(
175
176
  return;
176
177
  }
177
178
  t.key === "End" && (t.preventDefault(), c(e - 1));
178
- }, Y = (r) => (t) => {
179
+ }, Y = (s) => (t) => {
179
180
  const a = t.clipboardData.getData("text").replace(/\s+/g, ""), i = F(a);
180
181
  if (!/^[0-9]+$/.test(i)) return;
181
182
  t.preventDefault();
182
- const b = d.current, h = b.slice(0, r), D = b.slice(r + i.length), T = (h + i + D).slice(0, e);
183
+ const b = d.current, V = b.slice(0, s), D = b.slice(s + i.length), T = (V + i + D).slice(0, e);
183
184
  u(T);
184
- const A = Math.min(r + i.length, e - 1);
185
+ const A = Math.min(s + i.length, e - 1);
185
186
  c(A);
186
- }, Z = (r) => (t) => {
187
- V(r), t.currentTarget.select();
187
+ }, Z = (s) => (t) => {
188
+ k(s), t.currentTarget.select();
188
189
  }, E = v.id, x = oe(
189
190
  () => ({
190
191
  getValue: () => d.current,
191
- setValue: (r) => u(r),
192
+ setValue: (s) => u(s),
192
193
  clear: () => u(""),
193
194
  focus: () => c(f),
194
195
  isComplete: () => d.current.length === e
@@ -214,12 +215,12 @@ const pe = te(
214
215
  "aria-labelledby": P,
215
216
  "aria-invalid": B || void 0,
216
217
  "aria-describedby": v.describedBy || void 0,
217
- "aria-disabled": k || void 0,
218
+ "aria-disabled": I || void 0,
218
219
  "data-component": "otp-input",
219
220
  "data-component-id": K,
220
221
  className: "ds:inline-flex ds:items-center ds:gap-[var(--spacing-sm)]",
221
- children: G.map((r, t) => {
222
- const s = !k && t === f;
222
+ children: G.map((s, t) => {
223
+ const r = !I && t === f;
223
224
  return /* @__PURE__ */ M(
224
225
  "input",
225
226
  {
@@ -232,9 +233,9 @@ const pe = te(
232
233
  pattern: "[0-9]*",
233
234
  autoComplete: t === 0 ? "one-time-code" : "off",
234
235
  maxLength: 1,
235
- value: r,
236
- disabled: k,
237
- tabIndex: s ? 0 : -1,
236
+ value: s,
237
+ disabled: I,
238
+ tabIndex: r ? 0 : -1,
238
239
  "aria-label": H("inputs.otp.digitLabel", {
239
240
  current: t + 1,
240
241
  total: e
@@ -257,4 +258,4 @@ pe.displayName = "OTPInput";
257
258
  export {
258
259
  pe as O
259
260
  };
260
- //# sourceMappingURL=otp-input-CI-Zv5q6.js.map
261
+ //# sourceMappingURL=otp-input-BBXYvLx5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otp-input-BBXYvLx5.js","sources":["../../src/components/otp-input/otp-input.agent.ts","../../src/components/otp-input/otp-input.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — OTPInput. */\n/* */\n/* See `src/docs/26-agent-readiness.mdx` for the contract. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { OTPInputHandle } from './otp-input';\n\nexport const otpInputAgent: AgentAdapter<OTPInputHandle> = {\n id: 'otp-input',\n capabilities: ['edit_inline', 'submit'],\n state: {\n value: {\n type: 'string',\n descriptionKey: 'ui.agent.otpInput.state.value',\n description: 'Current digits entered, packed into a single string.',\n read: (handle) => handle.getValue(),\n },\n isComplete: {\n type: 'boolean',\n descriptionKey: 'ui.agent.otpInput.state.isComplete',\n description: 'Whether all required digits have been entered.',\n read: (handle) => handle.isComplete(),\n },\n },\n actions: {\n set_value: {\n safety: 'write',\n argsType: '{ value: string }',\n descriptionKey: 'ui.agent.otpInput.actions.setValue',\n description: 'Replace the entered digits.',\n invoke: (handle, args: { value: string }) => {\n handle.setValue(args.value);\n },\n },\n clear: {\n safety: 'destructive',\n descriptionKey: 'ui.agent.otpInput.actions.clear',\n description: 'Empty all digit cells. Loses any typed value.',\n invoke: (handle) => {\n handle.clear();\n },\n },\n focus: {\n safety: 'read',\n descriptionKey: 'ui.agent.otpInput.actions.focus',\n description: 'Move keyboard focus to the active digit cell.',\n invoke: (handle) => {\n handle.focus();\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'otp-input',\n description:\n 'Marks the OTPInput wrapper. Completion is observable via state.isComplete; the host onComplete callback fires once when all digits are filled.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n },\n};\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type ChangeEvent,\n type ClipboardEvent,\n type FocusEvent,\n type KeyboardEvent,\n} from 'react';\nimport { cva } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { useFormField } from '../form-field/form-field-context';\nimport { useAgentRegistration } from '../../agent';\nimport { otpInputAgent } from './otp-input.agent';\n\n/** Agent-readiness curated handle for OTPInput. */\nexport interface OTPInputHandle {\n getValue: () => string;\n setValue: (value: string) => void;\n clear: () => void;\n focus: () => void;\n isComplete: () => boolean;\n}\n\nconst wrapperVariants = cva('ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]');\n\nconst boxVariants = cva(\n [\n 'ds:w-[var(--min-target-size)] ds:h-[var(--min-target-size)]',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:border ds:bg-input ds:text-foreground ds:text-center ds:font-medium ds:text-[length:var(--font-size-lg)]',\n 'ds:shadow-[var(--shadow-input)]',\n 'ds:transition-[colors,box-shadow] ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:disabled:cursor-not-allowed ds:disabled:opacity-50',\n ].join(' '),\n {\n variants: {\n tone: {\n default: 'ds:border-border',\n error: 'ds:border-destructive',\n },\n },\n defaultVariants: { tone: 'default' },\n },\n);\n\nexport interface OTPInputProps {\n length?: 4 | 6 | 8;\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n onComplete?: (code: string) => void;\n disabled?: boolean;\n error?: boolean;\n label?: string;\n /** Stable id, used to address this instance from the agent runtime. */\n id?: string;\n className?: string;\n}\n\nfunction normaliseDigits(str: string): string {\n return str\n .replace(/[\\u0660-\\u0669]/g, (c) => String(c.charCodeAt(0) - 0x0660))\n .replace(/[\\u06F0-\\u06F9]/g, (c) => String(c.charCodeAt(0) - 0x06f0));\n}\n\nfunction packValue(value: string, length: number): string {\n return normaliseDigits(value).replace(/\\D/g, '').slice(0, length);\n}\n\nfunction valueToArray(value: string, length: number): string[] {\n const packed = packValue(value, length);\n const arr = new Array<string>(length).fill('');\n for (let i = 0; i < packed.length; i += 1) {\n arr[i] = packed[i];\n }\n return arr;\n}\n\nexport const OTPInput = forwardRef<HTMLDivElement, OTPInputProps>(\n (\n {\n length = 6,\n value,\n defaultValue,\n onChange,\n onComplete,\n disabled,\n error,\n label,\n id,\n className,\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const ctx = useFormField();\n const generatedLabelId = useId();\n const labelId = label ? generatedLabelId : undefined;\n\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState<string>(() =>\n packValue(defaultValue ?? '', length),\n );\n const currentValue = packValue(\n isControlled ? value : internalValue,\n length,\n );\n const digits = valueToArray(currentValue, length);\n\n const effectiveDisabled = ctx.disabled || Boolean(disabled);\n const effectiveError = ctx.invalid || Boolean(error);\n const effectiveTone = effectiveError ? 'error' : 'default';\n\n const inputsRef = useRef<Array<HTMLInputElement | null>>([]);\n const completedRef = useRef(currentValue.length === length);\n const valueRef = useRef(currentValue);\n valueRef.current = currentValue;\n\n const computeInitialIndex = () => {\n const firstEmpty = currentValue.length;\n if (firstEmpty >= length) return length - 1;\n return firstEmpty;\n };\n const [activeIndex, setActiveIndex] = useState<number>(computeInitialIndex);\n\n useEffect(() => {\n if (activeIndex >= length) setActiveIndex(length - 1);\n }, [activeIndex, length]);\n\n const focusBox = useCallback(\n (index: number) => {\n const clamped = Math.max(0, Math.min(length - 1, index));\n setActiveIndex(clamped);\n const node = inputsRef.current[clamped];\n if (node) {\n node.focus();\n node.select();\n }\n },\n [length],\n );\n\n const commit = useCallback(\n (next: string) => {\n const packed = packValue(next, length);\n if (!isControlled) setInternalValue(packed);\n valueRef.current = packed;\n onChange?.(packed);\n if (packed.length === length) {\n if (!completedRef.current) {\n completedRef.current = true;\n onComplete?.(packed);\n }\n } else {\n completedRef.current = false;\n }\n },\n [isControlled, length, onChange, onComplete],\n );\n\n const handleChange =\n (index: number) => (event: ChangeEvent<HTMLInputElement>) => {\n const raw = event.target.value;\n const norm = normaliseDigits(raw).replace(/\\D/g, '');\n const current = valueRef.current;\n\n if (norm.length === 0) {\n if (raw === '' && index < current.length) {\n const newValue = current.slice(0, index) + current.slice(index + 1);\n commit(newValue);\n }\n return;\n }\n\n const before = current.slice(0, index);\n const after = current.slice(index + norm.length);\n const newValue = (before + norm + after).slice(0, length);\n commit(newValue);\n\n const focusTarget = Math.min(index + norm.length, length - 1);\n focusBox(focusTarget);\n };\n\n const handleKeyDown =\n (index: number) => (event: KeyboardEvent<HTMLInputElement>) => {\n const current = valueRef.current;\n if (event.key === 'Backspace') {\n if (current[index]) {\n event.preventDefault();\n const newValue = current.slice(0, index) + current.slice(index + 1);\n commit(newValue);\n return;\n }\n if (index > 0) {\n event.preventDefault();\n const newValue = current.slice(0, index - 1) + current.slice(index);\n commit(newValue);\n focusBox(index - 1);\n }\n return;\n }\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n if (index > 0) focusBox(index - 1);\n return;\n }\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n if (index < length - 1) focusBox(index + 1);\n return;\n }\n if (event.key === 'Home') {\n event.preventDefault();\n focusBox(0);\n return;\n }\n if (event.key === 'End') {\n event.preventDefault();\n focusBox(length - 1);\n }\n };\n\n const handlePaste =\n (index: number) => (event: ClipboardEvent<HTMLInputElement>) => {\n const text = event.clipboardData.getData('text');\n const stripped = text.replace(/\\s+/g, '');\n const norm = normaliseDigits(stripped);\n if (!/^[0-9]+$/.test(norm)) return;\n event.preventDefault();\n const current = valueRef.current;\n const before = current.slice(0, index);\n const after = current.slice(index + norm.length);\n const newValue = (before + norm + after).slice(0, length);\n commit(newValue);\n const focusTarget = Math.min(index + norm.length, length - 1);\n focusBox(focusTarget);\n };\n\n const handleFocus =\n (index: number) => (event: FocusEvent<HTMLInputElement>) => {\n setActiveIndex(index);\n event.currentTarget.select();\n };\n\n const baseId = ctx.id;\n\n const agentHandle = useMemo<OTPInputHandle>(\n () => ({\n getValue: () => valueRef.current,\n setValue: (next) => commit(next),\n clear: () => commit(''),\n focus: () => focusBox(activeIndex),\n isComplete: () => valueRef.current.length === length,\n }),\n [commit, focusBox, activeIndex, length],\n );\n useAgentRegistration(otpInputAgent, agentHandle, id);\n\n return (\n <div className={wrapperVariants({ className })}>\n {label ? (\n <label\n id={labelId}\n htmlFor={`${baseId}-0`}\n className=\"type-label ds:text-foreground\"\n >\n {label}\n </label>\n ) : null}\n {/* eslint-disable-next-line jsx-a11y/role-supports-aria-props -- aria-invalid is a global ARIA state; conveys group-level validation */}\n <div\n ref={ref}\n role=\"group\"\n dir=\"ltr\"\n aria-labelledby={labelId}\n aria-invalid={effectiveError || undefined}\n aria-describedby={ctx.describedBy || undefined}\n aria-disabled={effectiveDisabled || undefined}\n data-component=\"otp-input\"\n data-component-id={id}\n className=\"ds:inline-flex ds:items-center ds:gap-[var(--spacing-sm)]\"\n >\n {digits.map((digit, index) => {\n const isTabbable = !effectiveDisabled && index === activeIndex;\n return (\n <input\n key={index}\n ref={(node) => {\n inputsRef.current[index] = node;\n }}\n id={`${baseId}-${index}`}\n type=\"text\"\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n autoComplete={index === 0 ? 'one-time-code' : 'off'}\n maxLength={1}\n value={digit}\n disabled={effectiveDisabled}\n tabIndex={isTabbable ? 0 : -1}\n aria-label={t('inputs.otp.digitLabel', {\n current: index + 1,\n total: length,\n })}\n onChange={handleChange(index)}\n onKeyDown={handleKeyDown(index)}\n onPaste={handlePaste(index)}\n onFocus={handleFocus(index)}\n className={boxVariants({ tone: effectiveTone })}\n />\n );\n })}\n </div>\n </div>\n );\n },\n);\n\nOTPInput.displayName = 'OTPInput';\n"],"names":["otpInputAgent","handle","args","wrapperVariants","cva","boxVariants","normaliseDigits","str","c","packValue","value","length","valueToArray","packed","arr","i","OTPInput","forwardRef","defaultValue","onChange","onComplete","disabled","error","label","id","className","ref","t","useTranslation","ctx","useFormField","generatedLabelId","useId","labelId","isControlled","internalValue","setInternalValue","useState","currentValue","digits","effectiveDisabled","effectiveError","effectiveTone","inputsRef","useRef","completedRef","valueRef","computeInitialIndex","firstEmpty","activeIndex","setActiveIndex","useEffect","focusBox","useCallback","index","clamped","node","commit","next","handleChange","event","raw","norm","current","newValue","before","after","focusTarget","handleKeyDown","handlePaste","stripped","handleFocus","baseId","agentHandle","useMemo","useAgentRegistration","jsx","digit","isTabbable"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { jsxs as f, jsx as i } from "react/jsx-runtime";
2
- import { forwardRef as Se, useContext as Pe, useMemo as m, useState as P, useRef as $, useEffect as Ve, useLayoutEffect as Fe, useCallback as se } from "react";
2
+ import { forwardRef as ke, useContext as Pe, useMemo as m, useState as P, useRef as $, useEffect as Ve, useLayoutEffect as Fe, useCallback as se } from "react";
3
3
  import * as V from "@radix-ui/react-popover";
4
4
  import { R as Ee, _ as b } from "./index-4xgbg-sn.js";
5
5
  import { c as H } from "./index-D2ZczOXr.js";
@@ -70,9 +70,10 @@ const Me = {
70
70
  }, qe = H(
71
71
  [
72
72
  "ds:group ds:relative ds:inline-flex ds:items-stretch ds:w-full",
73
- "ds:rounded-[var(--radius-sm)] ds:border ds:border-border ds:bg-background",
73
+ "ds:rounded-[var(--radius-sm)] ds:border ds:border-border ds:bg-input",
74
+ "ds:shadow-[var(--shadow-input)]",
74
75
  "ds:text-foreground",
75
- "ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none",
76
+ "ds:transition-[colors,box-shadow] ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none",
76
77
  "ds:focus-within:outline-[length:var(--focus-ring-width)] ds:focus-within:outline-solid",
77
78
  "ds:focus-within:outline-ring ds:focus-within:outline-offset-[length:var(--focus-ring-offset)]",
78
79
  "ds:forced-colors:focus-within:outline-[CanvasText]",
@@ -218,7 +219,7 @@ function et(n, r) {
218
219
  })), y = new Intl.Collator(n);
219
220
  return a.sort((o, u) => y.compare(o.name, u.name));
220
221
  }
221
- const tt = Se(
222
+ const tt = ke(
222
223
  function({
223
224
  value: r,
224
225
  defaultValue: d,
@@ -237,7 +238,7 @@ const tt = Se(
237
238
  required: ue,
238
239
  "aria-label": pe
239
240
  }, fe) {
240
- const { t: v, i18n: j } = je(), C = Te(), w = Pe(Ae) !== null, z = m(
241
+ const { t: v, i18n: j } = je(), C = Te(), x = Pe(Ae) !== null, z = m(
241
242
  () => new Set(Be()),
242
243
  []
243
244
  ), G = m(() => {
@@ -257,7 +258,7 @@ const tt = Se(
257
258
  return { country: e, display: "" };
258
259
  }, []), [l, B] = P(G.country), [O, p] = P(
259
260
  G.display
260
- ), [D, T] = P(!1), [me, U] = P(""), W = r !== void 0, A = $(""), R = $(null), k = $(null), he = Le(fe, k);
261
+ ), [D, T] = P(!1), [me, U] = P(""), W = r !== void 0, A = $(""), R = $(null), S = $(null), he = Le(fe, S);
261
262
  Ve(() => {
262
263
  if (!W) return;
263
264
  const e = r ?? "";
@@ -272,7 +273,7 @@ const tt = Se(
272
273
  if (R.current == null) return;
273
274
  const e = R.current;
274
275
  R.current = null;
275
- const t = k.current;
276
+ const t = S.current;
276
277
  t && document.activeElement === t && t.setSelectionRange(e, e);
277
278
  });
278
279
  const h = se(
@@ -286,11 +287,11 @@ const tt = Se(
286
287
  });
287
288
  },
288
289
  [o]
289
- ), ge = E ?? (w ? C.id : void 0), Y = (w ? C.disabled : !1) || !!ie, be = (w ? C.required : !1) || !!ue, Z = w ? C.invalid : !1, ye = Z ? "error" : ae, ve = w && C.describedBy ? C.describedBy : void 0, Ce = de ?? v("inputs.phone.placeholder", "Phone number"), xe = (e) => {
290
+ ), ge = E ?? (x ? C.id : void 0), Y = (x ? C.disabled : !1) || !!ie, be = (x ? C.required : !1) || !!ue, Z = x ? C.invalid : !1, ye = Z ? "error" : ae, ve = x && C.describedBy ? C.describedBy : void 0, Ce = de ?? v("inputs.phone.placeholder", "Phone number"), we = (e) => {
290
291
  if (_) return;
291
- const t = e.target, s = t.value, c = t.selectionStart ?? s.length, x = Je(s, c), K = new M(l).input(s);
292
- R.current = Qe(K, x), p(K), h(K, l);
293
- }, J = A, we = m(
292
+ const t = e.target, s = t.value, c = t.selectionStart ?? s.length, w = Je(s, c), K = new M(l).input(s);
293
+ R.current = Qe(K, w), p(K), h(K, l);
294
+ }, J = A, xe = m(
294
295
  () => ({
295
296
  getValue: () => J.current,
296
297
  setValue: (e) => {
@@ -311,12 +312,12 @@ const tt = Se(
311
312
  },
312
313
  focus: () => {
313
314
  var e;
314
- return (e = k.current) == null ? void 0 : e.focus();
315
+ return (e = S.current) == null ? void 0 : e.focus();
315
316
  }
316
317
  }),
317
318
  [l, h, J]
318
319
  );
319
- Ke(Me, we, E);
320
+ Ke(Me, xe, E);
320
321
  const ze = (e) => {
321
322
  if (e === l) {
322
323
  T(!1);
@@ -324,8 +325,8 @@ const tt = Se(
324
325
  }
325
326
  const t = O.replace(/\D/g, ""), s = new M(e), c = t ? s.input(t) : "";
326
327
  B(e), p(c), T(!1), U(""), h(c, e), requestAnimationFrame(() => {
327
- var x;
328
- (x = k.current) == null || x.focus();
328
+ var w;
329
+ (w = S.current) == null || w.focus();
329
330
  });
330
331
  }, g = m(
331
332
  () => et(
@@ -343,15 +344,15 @@ const tt = Se(
343
344
  ), Ne = m(
344
345
  () => L.size > 0 ? g.filter((e) => !L.has(e.code)) : g,
345
346
  [g, L]
346
- ), S = m(
347
+ ), k = m(
347
348
  () => g.find((e) => e.code === l),
348
349
  [g, l]
349
- ), Q = S ? S.dialCode : "", Ie = S ? S.name : l, X = v("inputs.phone.countryPickerLabel", "Country"), Re = `${X}: ${Ie}, +${Q}`, ke = se(
350
+ ), Q = k ? k.dialCode : "", Ie = k ? k.name : l, X = v("inputs.phone.countryPickerLabel", "Country"), Re = `${X}: ${Ie}, +${Q}`, Se = se(
350
351
  (e, t, s) => {
351
- const c = q(e), x = q(t), te = s == null ? void 0 : s.map(q);
352
+ const c = q(e), w = q(t), te = s == null ? void 0 : s.map(q);
352
353
  return Ee(
353
354
  c,
354
- x,
355
+ w,
355
356
  te
356
357
  );
357
358
  },
@@ -427,7 +428,7 @@ const tt = Se(
427
428
  sideOffset: 6,
428
429
  align: "start",
429
430
  className: Ge,
430
- children: /* @__PURE__ */ f(b, { filter: ke, shouldFilter: !0, loop: !0, label: X, children: [
431
+ children: /* @__PURE__ */ f(b, { filter: Se, shouldFilter: !0, loop: !0, label: X, children: [
431
432
  /* @__PURE__ */ i(
432
433
  b.Input,
433
434
  {
@@ -489,7 +490,7 @@ const tt = Se(
489
490
  "aria-label": pe,
490
491
  "aria-describedby": ve,
491
492
  "aria-invalid": Z || void 0,
492
- onChange: xe,
493
+ onChange: we,
493
494
  className: _e({ size: u })
494
495
  }
495
496
  )
@@ -505,4 +506,4 @@ export {
505
506
  He as c,
506
507
  qe as p
507
508
  };
508
- //# sourceMappingURL=phone-input-DtBVs5fz.js.map
509
+ //# sourceMappingURL=phone-input-DKSHX7NQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phone-input-DKSHX7NQ.js","sources":["../../src/components/phone-input/phone-input.agent.ts","../../src/components/phone-input/phone-input.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — PhoneInput. */\n/* */\n/* See `src/docs/26-agent-readiness.mdx` for the contract. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { PhoneInputHandle } from './phone-input';\n\nexport const phoneInputAgent: AgentAdapter<PhoneInputHandle> = {\n id: 'phone-input',\n capabilities: ['edit_inline'],\n state: {\n value: {\n type: 'string',\n descriptionKey: 'ui.agent.phoneInput.state.value',\n description:\n 'Current E.164 phone number, or empty string when not yet valid.',\n read: (handle) => handle.getValue(),\n },\n isEmpty: {\n type: 'boolean',\n descriptionKey: 'ui.agent.phoneInput.state.isEmpty',\n description: 'Whether the input has no value.',\n read: (handle) => handle.getValue() === '',\n },\n },\n actions: {\n set_value: {\n safety: 'write',\n argsType: '{ value: string }',\n descriptionKey: 'ui.agent.phoneInput.actions.setValue',\n description:\n 'Replace the phone number (E.164 or national format; parser will infer country).',\n invoke: (handle, args: { value: string }) => {\n handle.setValue(args.value);\n },\n },\n clear: {\n safety: 'destructive',\n descriptionKey: 'ui.agent.phoneInput.actions.clear',\n description: 'Empty the input. Loses any typed value.',\n invoke: (handle) => {\n handle.clear();\n },\n },\n focus: {\n safety: 'read',\n descriptionKey: 'ui.agent.phoneInput.actions.focus',\n description: 'Move keyboard focus to the phone-number input.',\n invoke: (handle) => {\n handle.focus();\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'phone-input',\n description: 'Marks the PhoneInput wrapper.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n },\n};\n","import {\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type ChangeEvent,\n} from 'react';\nimport { useAgentRegistration } from '../../agent';\nimport { phoneInputAgent } from './phone-input.agent';\n\n/** Agent-readiness curated handle for PhoneInput. */\nexport interface PhoneInputHandle {\n getValue: () => string;\n setValue: (value: string) => void;\n clear: () => void;\n focus: () => void;\n}\nimport * as Popover from '@radix-ui/react-popover';\nimport { Command, defaultFilter } from 'cmdk';\nimport { cva } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { ChevronDown } from 'lucide-react';\nimport {\n AsYouType,\n getCountries,\n getCountryCallingCode,\n parsePhoneNumberFromString,\n type CountryCode,\n} from 'libphonenumber-js/min';\nimport {\n FormFieldContext,\n useFormField,\n} from '../form-field/form-field-context';\nimport { composeRefs } from '../_shared/compose-refs';\nimport { normalizeDiacritics } from '../_shared/normalize-diacritics';\nimport { Flag } from '../flag';\n\nexport interface PhoneInputChangeMeta {\n country: CountryCode;\n isValid: boolean;\n isPossible: boolean;\n type?: string;\n}\n\nexport interface PhoneInputProps {\n value?: string;\n defaultValue?: string;\n /**\n * Country pre-selected when no value is supplied. Defaults to `IT`\n * (AlfaDocs's dominant user base is Italian). Pass a different\n * `CountryCode` to override, or enable `detectBrowserCountry` to\n * derive it from the browser locale.\n */\n defaultCountry?: CountryCode;\n /**\n * When true, infer the default country from `navigator.language` /\n * `Intl.Locale` before falling back to `defaultCountry` (or `IT`).\n * Off by default — most AlfaDocs flows should stay on IT regardless\n * of the visitor's browser locale.\n */\n detectBrowserCountry?: boolean;\n onChange?: (e164: string, meta: PhoneInputChangeMeta) => void;\n size?: 'sm' | 'md' | 'lg';\n tone?: 'default' | 'error';\n disabled?: boolean;\n readOnly?: boolean;\n placeholder?: string;\n popularCountries?: CountryCode[];\n className?: string;\n id?: string;\n name?: string;\n required?: boolean;\n 'aria-label'?: string;\n}\n\nconst phoneInputWrapperVariants = cva(\n [\n 'ds:group ds:relative ds:inline-flex ds:items-stretch ds:w-full',\n 'ds:rounded-[var(--radius-sm)] ds:border ds:border-border ds:bg-input',\n 'ds:shadow-[var(--shadow-input)]',\n 'ds:text-foreground',\n 'ds:transition-[colors,box-shadow] ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:focus-within:outline-[length:var(--focus-ring-width)] ds:focus-within:outline-solid',\n 'ds:focus-within:outline-ring ds:focus-within:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:forced-colors:focus-within:outline-[CanvasText]',\n 'ds:has-[:disabled]:cursor-not-allowed ds:has-[:disabled]:opacity-50',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:h-8 ds:text-[length:var(--font-size-sm)]',\n md: 'ds:h-[var(--min-target-size)] ds:text-[length:var(--font-size-base)]',\n lg: 'ds:h-12 ds:text-[length:var(--font-size-lg)]',\n },\n tone: {\n default: '',\n error: 'ds:border-destructive ds:focus-within:outline-destructive',\n },\n },\n defaultVariants: {\n size: 'md',\n tone: 'default',\n },\n },\n);\n\nconst countryTriggerVariants = cva(\n [\n 'ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]',\n 'ds:bg-transparent ds:text-foreground',\n 'ds:border-0 ds:border-e ds:border-e-border',\n 'ds:rounded-s-[var(--radius-sm)]',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:hover:bg-muted',\n 'ds:focus:outline-none',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:forced-colors:focus-visible:outline-[CanvasText]',\n 'ds:disabled:cursor-not-allowed',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:ps-3 ds:pe-2',\n md: 'ds:ps-3 ds:pe-2',\n lg: 'ds:ps-4 ds:pe-3',\n },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\nconst phoneNumberInputVariants = cva(\n [\n 'ds:flex-1 ds:min-w-0 ds:bg-transparent ds:text-foreground ds:placeholder:text-muted-foreground',\n 'ds:border-0 ds:outline-none',\n 'ds:disabled:cursor-not-allowed',\n 'ds:read-only:cursor-default',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:ps-2 ds:pe-3 ds:text-[length:var(--font-size-sm)]',\n md: 'ds:ps-2 ds:pe-3 ds:text-[length:var(--font-size-base)]',\n lg: 'ds:ps-3 ds:pe-4 ds:text-[length:var(--font-size-lg)]',\n },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\nconst pickerContentClasses = [\n 'ds:z-[var(--z-popover)] ds:overflow-hidden ds:w-72',\n 'ds:rounded-[var(--radius-md)] ds:border ds:border-border ds:bg-background ds:text-foreground',\n 'ds:shadow-[var(--shadow-lg)]',\n 'ds:animate-in ds:fade-in ds:zoom-in-95',\n 'ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out',\n 'ds:data-[state=closed]:zoom-out-95',\n 'ds:data-[side=bottom]:slide-in-from-top-2',\n 'ds:data-[side=top]:slide-in-from-bottom-2',\n 'ds:motion-reduce:animate-none',\n].join(' ');\n\nconst pickerSearchClasses = [\n 'ds:w-full ds:bg-transparent ds:text-foreground ds:placeholder:text-muted-foreground',\n 'ds:border-0 ds:border-b ds:border-b-border ds:outline-none',\n 'ds:ps-3 ds:pe-3 ds:py-2 ds:text-[var(--font-size-sm)]',\n 'ds:focus:outline-none',\n].join(' ');\n\nconst pickerListClasses =\n 'ds:max-h-72 ds:overflow-y-auto ds:p-[var(--spacing-xs)]';\n\nconst pickerItemClasses = [\n 'ds:relative ds:flex ds:cursor-pointer ds:items-center ds:gap-[var(--spacing-sm)]',\n 'ds:rounded-[var(--radius-sm)] ds:ps-3 ds:pe-3 ds:py-2 ds:text-[var(--font-size-sm)]',\n 'ds:text-foreground ds:outline-none ds:select-none',\n 'ds:data-[highlighted]:bg-muted ds:data-[highlighted]:text-foreground',\n 'ds:data-[highlighted]:border-s-2 ds:data-[highlighted]:border-s-primary',\n 'ds:aria-selected:bg-muted',\n].join(' ');\n\nconst pickerGroupHeadingClasses = [\n 'ds:ps-3 ds:pe-3 ds:py-1.5',\n 'type-eyebrow ds:text-muted-foreground',\n].join(' ');\n\nconst pickerEmptyClasses =\n 'ds:ps-3 ds:pe-3 ds:py-2 type-body-sm ds:text-muted-foreground';\n\nconst chevronSizeBySize = {\n sm: 'ds:size-3.5',\n md: 'ds:size-4',\n lg: 'ds:size-5',\n} as const;\n\nconst flagSizeBySize = {\n sm: 'sm',\n md: 'md',\n lg: 'lg',\n} as const satisfies Record<'sm' | 'md' | 'lg', 'sm' | 'md' | 'lg'>;\n\nfunction countDigitsBefore(str: string, position: number): number {\n let digits = 0;\n for (let i = 0; i < position && i < str.length; i++) {\n if (str[i] >= '0' && str[i] <= '9') digits++;\n }\n return digits;\n}\n\nfunction positionAfterDigits(str: string, targetDigits: number): number {\n if (targetDigits === 0) return 0;\n let count = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] >= '0' && str[i] <= '9') {\n count++;\n if (count === targetDigits) return i + 1;\n }\n }\n return str.length;\n}\n\nfunction resolveDefaultCountry(\n explicit: CountryCode | undefined,\n supported: Set<string>,\n detectBrowser: boolean,\n locale: string,\n): CountryCode {\n if (explicit && supported.has(explicit)) return explicit;\n\n if (detectBrowser) {\n const fromNavigator =\n typeof navigator !== 'undefined' ? navigator.language : undefined;\n if (fromNavigator) {\n const match = fromNavigator.match(/-([A-Za-z]{2})/);\n if (match) {\n const candidate = match[1].toUpperCase();\n if (supported.has(candidate)) return candidate as CountryCode;\n }\n }\n\n try {\n const region = new Intl.Locale(locale).region;\n if (region && supported.has(region.toUpperCase())) {\n return region.toUpperCase() as CountryCode;\n }\n } catch {\n // Intl.Locale may throw on malformed BCP-47 — fall through.\n }\n }\n\n return 'IT';\n}\n\ninterface CountryRow {\n code: CountryCode;\n name: string;\n dialCode: string;\n}\n\nfunction buildCountryRows(\n locale: string,\n countries: CountryCode[],\n): CountryRow[] {\n let displayNames: Intl.DisplayNames;\n try {\n displayNames = new Intl.DisplayNames([locale], { type: 'region' });\n } catch {\n displayNames = new Intl.DisplayNames(['en'], { type: 'region' });\n }\n const rows = countries.map<CountryRow>((code) => ({\n code,\n name: displayNames.of(code) ?? code,\n dialCode: getCountryCallingCode(code),\n }));\n const collator = new Intl.Collator(locale);\n return rows.sort((a, b) => collator.compare(a.name, b.name));\n}\n\nexport const PhoneInput = forwardRef<HTMLInputElement, PhoneInputProps>(\n function PhoneInput(\n {\n value,\n defaultValue,\n defaultCountry,\n detectBrowserCountry = false,\n onChange,\n size = 'md',\n tone = 'default',\n disabled,\n readOnly,\n placeholder,\n popularCountries,\n className,\n id,\n name,\n required,\n 'aria-label': ariaLabel,\n },\n ref,\n ) {\n const { t, i18n } = useTranslation();\n const ctx = useFormField();\n const inFormField = useContext(FormFieldContext) !== null;\n\n const supportedCountries = useMemo(\n () => new Set(getCountries() as string[]),\n [],\n );\n\n const initialState = useMemo(() => {\n const resolvedCountry = resolveDefaultCountry(\n defaultCountry,\n supportedCountries,\n detectBrowserCountry,\n i18n.language,\n );\n const raw = value ?? defaultValue;\n if (raw) {\n const parsed = parsePhoneNumberFromString(raw);\n if (parsed?.country) {\n return {\n country: parsed.country,\n display: parsed.formatNational(),\n };\n }\n return { country: resolvedCountry, display: raw };\n }\n return { country: resolvedCountry, display: '' };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const [country, setCountry] = useState<CountryCode>(initialState.country);\n const [displayValue, setDisplayValue] = useState<string>(\n initialState.display,\n );\n const [pickerOpen, setPickerOpen] = useState(false);\n const [pickerSearch, setPickerSearch] = useState('');\n\n const isControlled = value !== undefined;\n const lastEmittedRef = useRef<string>('');\n const pendingCaretRef = useRef<number | null>(null);\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n const composedInputRef = composeRefs(ref, inputRef);\n\n // Sync state back from a controlled `value` prop change that did not\n // originate from this component (e.g. parent reset). Skip the sync when\n // the incoming value matches what we just emitted.\n useEffect(() => {\n if (!isControlled) return;\n const current = value ?? '';\n if (current === lastEmittedRef.current) return;\n if (current === '') {\n setDisplayValue('');\n return;\n }\n const parsed = parsePhoneNumberFromString(current);\n if (parsed?.country) {\n setCountry(parsed.country);\n setDisplayValue(parsed.formatNational());\n } else {\n setDisplayValue(current);\n }\n }, [value, isControlled]);\n\n useLayoutEffect(() => {\n if (pendingCaretRef.current == null) return;\n const pos = pendingCaretRef.current;\n pendingCaretRef.current = null;\n const node = inputRef.current;\n if (node && document.activeElement === node) {\n node.setSelectionRange(pos, pos);\n }\n });\n\n const emit = useCallback(\n (nextDisplay: string, nextCountry: CountryCode) => {\n const parsed = parsePhoneNumberFromString(nextDisplay, nextCountry);\n const e164 = parsed?.number ?? '';\n lastEmittedRef.current = e164;\n onChange?.(e164, {\n country: nextCountry,\n isValid: parsed?.isValid() ?? false,\n isPossible: parsed?.isPossible() ?? false,\n type: parsed?.getType(),\n });\n },\n [onChange],\n );\n\n const inputId = id ?? (inFormField ? ctx.id : undefined);\n const effectiveDisabled =\n (inFormField ? ctx.disabled : false) || Boolean(disabled);\n const effectiveRequired =\n (inFormField ? ctx.required : false) || Boolean(required);\n const effectiveInvalid = inFormField ? ctx.invalid : false;\n const effectiveTone = effectiveInvalid ? 'error' : tone;\n const describedBy =\n inFormField && ctx.describedBy ? ctx.describedBy : undefined;\n\n const resolvedPlaceholder =\n placeholder ?? t('inputs.phone.placeholder', 'Phone number');\n\n const handleInputChange = (event: ChangeEvent<HTMLInputElement>) => {\n if (readOnly) return;\n const target = event.target;\n const raw = target.value;\n const caret = target.selectionStart ?? raw.length;\n const digitsBefore = countDigitsBefore(raw, caret);\n\n const formatter = new AsYouType(country);\n const formatted = formatter.input(raw);\n\n pendingCaretRef.current = positionAfterDigits(formatted, digitsBefore);\n setDisplayValue(formatted);\n emit(formatted, country);\n };\n\n const lastEmittedRefForHandle = lastEmittedRef;\n const agentHandle = useMemo<PhoneInputHandle>(\n () => ({\n getValue: () => lastEmittedRefForHandle.current,\n setValue: (next) => {\n if (next === '') {\n setDisplayValue('');\n emit('', country);\n return;\n }\n const parsed = parsePhoneNumberFromString(next);\n if (parsed?.country) {\n setCountry(parsed.country);\n setDisplayValue(parsed.formatNational());\n emit(parsed.formatNational(), parsed.country);\n } else {\n const formatter = new AsYouType(country);\n const formatted = formatter.input(next);\n setDisplayValue(formatted);\n emit(formatted, country);\n }\n },\n clear: () => {\n setDisplayValue('');\n emit('', country);\n },\n focus: () => inputRef.current?.focus(),\n }),\n [country, emit, lastEmittedRefForHandle],\n );\n useAgentRegistration(phoneInputAgent, agentHandle, id);\n\n const handleCountrySelect = (nextCountry: CountryCode) => {\n if (nextCountry === country) {\n setPickerOpen(false);\n return;\n }\n const digits = displayValue.replace(/\\D/g, '');\n const formatter = new AsYouType(nextCountry);\n const reformatted = digits ? formatter.input(digits) : '';\n setCountry(nextCountry);\n setDisplayValue(reformatted);\n setPickerOpen(false);\n setPickerSearch('');\n emit(reformatted, nextCountry);\n requestAnimationFrame(() => {\n inputRef.current?.focus();\n });\n };\n\n const countryRows = useMemo(\n () =>\n buildCountryRows(\n i18n.language,\n Array.from(supportedCountries) as CountryCode[],\n ),\n [i18n.language, supportedCountries],\n );\n\n const popularRows = useMemo(() => {\n if (!popularCountries || popularCountries.length === 0) return [];\n const byCode = new Map(countryRows.map((row) => [row.code, row]));\n return popularCountries\n .filter((code): code is CountryCode => supportedCountries.has(code))\n .map((code) => byCode.get(code))\n .filter((row): row is CountryRow => Boolean(row));\n }, [popularCountries, countryRows, supportedCountries]);\n\n const popularCodes = useMemo(\n () => new Set(popularRows.map((row) => row.code)),\n [popularRows],\n );\n\n const remainingRows = useMemo(\n () =>\n popularCodes.size > 0\n ? countryRows.filter((row) => !popularCodes.has(row.code))\n : countryRows,\n [countryRows, popularCodes],\n );\n\n const selected = useMemo(\n () => countryRows.find((row) => row.code === country),\n [countryRows, country],\n );\n const selectedDialCode = selected ? selected.dialCode : '';\n const selectedName = selected ? selected.name : country;\n\n const triggerLabel = t('inputs.phone.countryPickerLabel', 'Country');\n const triggerAccessibleName = `${triggerLabel}: ${selectedName}, +${selectedDialCode}`;\n\n const filterFn = useCallback(\n (candidate: string, searchStr: string, keywords?: string[]) => {\n const normalizedCandidate = normalizeDiacritics(candidate);\n const normalizedSearch = normalizeDiacritics(searchStr);\n const normalizedKeywords = keywords?.map(normalizeDiacritics);\n return defaultFilter(\n normalizedCandidate,\n normalizedSearch,\n normalizedKeywords,\n );\n },\n [],\n );\n\n const renderRow = (row: CountryRow) => {\n const accessibleLabel = `${row.name}, +${row.dialCode}`;\n return (\n <Command.Item\n key={row.code}\n value={row.code}\n keywords={[row.name, row.dialCode, `+${row.dialCode}`]}\n onSelect={() => handleCountrySelect(row.code)}\n className={pickerItemClasses}\n aria-label={accessibleLabel}\n >\n <Flag country={row.code} size={flagSizeBySize[size]} />\n <span className=\"ds:flex-1 ds:truncate\">{row.name}</span>\n <bdi dir=\"ltr\" className=\"ds:text-muted-foreground ds:tabular-nums\">\n +{row.dialCode}\n </bdi>\n </Command.Item>\n );\n };\n\n return (\n <div\n data-component=\"phone-input\"\n data-component-id={id}\n data-slot=\"phone-input\"\n className={phoneInputWrapperVariants({\n size,\n tone: effectiveTone,\n className,\n })}\n >\n <Popover.Root open={pickerOpen} onOpenChange={setPickerOpen}>\n <Popover.Trigger asChild>\n <button\n type=\"button\"\n disabled={effectiveDisabled}\n aria-haspopup=\"listbox\"\n aria-expanded={pickerOpen}\n aria-label={triggerAccessibleName}\n className={countryTriggerVariants({ size })}\n >\n <Flag country={country} size={flagSizeBySize[size]} />\n <bdi dir=\"ltr\" className=\"ds:tabular-nums\">\n +{selectedDialCode}\n </bdi>\n <ChevronDown\n aria-hidden=\"true\"\n className={[\n chevronSizeBySize[size],\n 'ds:shrink-0 ds:text-muted-foreground',\n 'ds:transition-transform ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n pickerOpen ? 'ds:rotate-180' : '',\n ].join(' ')}\n />\n </button>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content\n sideOffset={6}\n align=\"start\"\n className={pickerContentClasses}\n >\n <Command filter={filterFn} shouldFilter loop label={triggerLabel}>\n <Command.Input\n asChild\n value={pickerSearch}\n onValueChange={setPickerSearch}\n >\n <input\n data-phone-country-search=\"true\"\n type=\"text\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n spellCheck={false}\n placeholder={t(\n 'inputs.phone.searchCountry',\n 'Search countries…',\n )}\n className={pickerSearchClasses}\n />\n </Command.Input>\n <Command.List className={pickerListClasses}>\n <Command.Empty className={pickerEmptyClasses}>\n {t('inputs.phone.noCountryFound', 'No country found')}\n </Command.Empty>\n {popularRows.length > 0 ? (\n <Command.Group\n heading={\n <span className={pickerGroupHeadingClasses}>\n {t('inputs.phone.popularCountries', 'Popular')}\n </span>\n }\n >\n {popularRows.map(renderRow)}\n </Command.Group>\n ) : null}\n <Command.Group\n heading={\n popularRows.length > 0 ? (\n <span className={pickerGroupHeadingClasses}>\n {t('inputs.phone.allCountries', 'All countries')}\n </span>\n ) : undefined\n }\n >\n {remainingRows.map(renderRow)}\n </Command.Group>\n </Command.List>\n </Command>\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n <input\n ref={composedInputRef}\n id={inputId}\n name={name}\n type=\"tel\"\n inputMode=\"tel\"\n autoComplete=\"tel-national\"\n value={displayValue}\n placeholder={resolvedPlaceholder}\n disabled={effectiveDisabled}\n readOnly={readOnly}\n required={effectiveRequired}\n aria-label={ariaLabel}\n aria-describedby={describedBy}\n aria-invalid={effectiveInvalid || undefined}\n onChange={handleInputChange}\n className={phoneNumberInputVariants({ size })}\n />\n </div>\n );\n },\n);\n\nPhoneInput.displayName = 'PhoneInput';\n\nexport {\n phoneInputWrapperVariants,\n countryTriggerVariants,\n phoneNumberInputVariants,\n};\n"],"names":["phoneInputAgent","handle","args","phoneInputWrapperVariants","cva","countryTriggerVariants","phoneNumberInputVariants","pickerContentClasses","pickerSearchClasses","pickerListClasses","pickerItemClasses","pickerGroupHeadingClasses","pickerEmptyClasses","chevronSizeBySize","flagSizeBySize","countDigitsBefore","str","position","digits","i","positionAfterDigits","targetDigits","count","resolveDefaultCountry","explicit","supported","detectBrowser","locale","fromNavigator","match","candidate","region","buildCountryRows","countries","displayNames","rows","code","getCountryCallingCode","collator","a","b","PhoneInput","forwardRef","value","defaultValue","defaultCountry","detectBrowserCountry","onChange","size","tone","disabled","readOnly","placeholder","popularCountries","className","id","name","required","ariaLabel","ref","t","i18n","useTranslation","ctx","useFormField","inFormField","useContext","FormFieldContext","supportedCountries","useMemo","getCountries","initialState","resolvedCountry","raw","parsed","parsePhoneNumberFromString","country","setCountry","useState","displayValue","setDisplayValue","pickerOpen","setPickerOpen","pickerSearch","setPickerSearch","isControlled","lastEmittedRef","useRef","pendingCaretRef","inputRef","composedInputRef","composeRefs","useEffect","current","useLayoutEffect","pos","node","emit","useCallback","nextDisplay","nextCountry","e164","inputId","effectiveDisabled","effectiveRequired","effectiveInvalid","effectiveTone","describedBy","resolvedPlaceholder","handleInputChange","event","target","caret","digitsBefore","formatted","AsYouType","lastEmittedRefForHandle","agentHandle","next","_a","useAgentRegistration","handleCountrySelect","formatter","reformatted","countryRows","popularRows","byCode","row","popularCodes","remainingRows","selected","selectedDialCode","selectedName","triggerLabel","triggerAccessibleName","filterFn","searchStr","keywords","normalizedCandidate","normalizeDiacritics","normalizedSearch","normalizedKeywords","defaultFilter","renderRow","accessibleLabel","jsxs","Command","jsx","Flag","Popover","ChevronDown"],"mappings":"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"}
@@ -1752,9 +1752,12 @@ function No({ orientation: e }) {
1752
1752
  const Co = ve(
1753
1753
  [
1754
1754
  "ds:relative ds:flex ds:items-center ds:w-full",
1755
- "ds:rounded-[var(--radius-sm)] ds:border ds:bg-background ds:text-foreground",
1755
+ // Soft-chrome look matches `INPUT_SURFACE_CHROME` so the trigger
1756
+ // shares the fill + halo with TextInput / Select / NumberInput.
1757
+ "ds:rounded-[var(--radius-sm)] ds:border ds:bg-input ds:text-foreground",
1758
+ "ds:shadow-[var(--shadow-input)]",
1756
1759
  "ds:placeholder:text-muted-foreground",
1757
- "ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none",
1760
+ "ds:transition-[colors,box-shadow] ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none",
1758
1761
  "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
1759
1762
  "ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
1760
1763
  "ds:disabled:cursor-not-allowed ds:disabled:opacity-50"
@@ -1821,4 +1824,4 @@ export {
1821
1824
  _o as p,
1822
1825
  Co as t
1823
1826
  };
1824
- //# sourceMappingURL=react-day-picker-C04L_28V.js.map
1827
+ //# sourceMappingURL=react-day-picker-C5F3-TTX.js.map