@alfadocs/ui-kit 1.74.0 → 1.75.1

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 (33) hide show
  1. package/dist/_chunks/booking-D2r19Lia.js +3901 -0
  2. package/dist/_chunks/{calendar-appointment-editor-dialog-CctI6mpd.js → calendar-appointment-editor-dialog-B4My4eiB.js} +2 -2
  3. package/dist/_chunks/{header-settings-DBlTL6Qj.js → header-settings-Coh1r41O.js} +148 -154
  4. package/dist/_chunks/{locale-picker-KT-Vz3bx.js → locale-picker-DzdGDSBI.js} +311 -282
  5. package/dist/_chunks/{marketplace-app-shell-B0ix9yNI.js → marketplace-app-shell-Ck5NVJcO.js} +2 -2
  6. package/dist/_chunks/{patient-details-Dgd_tocD.js → patient-details-B-I9Xkh9.js} +2 -2
  7. package/dist/_chunks/{patient-field-row-BFVlJnS9.js → patient-field-row-Bn0z6lAZ.js} +2 -2
  8. package/dist/_chunks/{patient-summary-card-BTKvFUmh.js → patient-summary-card-bhDo0gVX.js} +2 -2
  9. package/dist/_chunks/{phone-input-EwVuqFik.js → phone-input-C3NrD-nl.js} +78 -73
  10. package/dist/_chunks/{registration-form-B6qqeXP1.js → registration-form-DeK2QiJu.js} +2 -2
  11. package/dist/_chunks/{send-registration-link-form-pO2bGjGa.js → send-registration-link-form-__DWY62q.js} +2 -2
  12. package/dist/_chunks/{use-appointment-details-read-BFslxbRr.js → use-appointment-details-read-lFUL4kkd.js} +2 -2
  13. package/dist/agent-catalog.json +4 -4
  14. package/dist/agent-i18n/en.json +2 -2
  15. package/dist/components/appointment-details-panel/index.js +1 -1
  16. package/dist/components/booking/booking-types.d.ts +9 -1
  17. package/dist/components/booking/details-form.d.ts +2 -0
  18. package/dist/components/booking/index.js +1 -1
  19. package/dist/components/header-settings/header-settings.d.ts +6 -0
  20. package/dist/components/header-settings/index.js +1 -1
  21. package/dist/components/locale-picker/index.js +1 -1
  22. package/dist/components/locale-picker/locale-picker.d.ts +16 -4
  23. package/dist/components/patient-details/index.js +1 -1
  24. package/dist/components/patient-summary-card/index.js +1 -1
  25. package/dist/components/phone-input/index.js +1 -1
  26. package/dist/index.js +9 -9
  27. package/dist/patterns/calendar/index.js +1 -1
  28. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  29. package/dist/patterns/registration-form/index.js +1 -1
  30. package/dist/patterns/send-registration-link-form/index.js +1 -1
  31. package/dist/tokens.css +1 -1
  32. package/package.json +1 -1
  33. package/dist/_chunks/booking-sq9sa29d.js +0 -3889
@@ -9,7 +9,7 @@ import { C as U } from "./card-BA4Ig_kn.js";
9
9
  import { D as u } from "./dropdown-menu-D1we7oAY.js";
10
10
  import { T as ke } from "./tab-bar-BEODTG6k.js";
11
11
  import { a as Y, H as we, g as Ne, f as G, e as ye, c as Se, d as Ce } from "./header-l_B8MV0g.js";
12
- import { H as Ae } from "./header-settings-DBlTL6Qj.js";
12
+ import { H as Ae } from "./header-settings-Coh1r41O.js";
13
13
  import { S as Te } from "./sign-in-with-alfadocs-button-DzrNgbWv.js";
14
14
  import { S as Ee, a as ee, v as ze, h as Ie, c as Me, r as Le, b as He, l as Ve, m as Be, k as Re, j as J } from "./sidebar-BS24EnYd.js";
15
15
  import { N as De } from "./navigation-dismiss-B1mcW1CT.js";
@@ -656,4 +656,4 @@ export {
656
656
  na as M,
657
657
  y as P
658
658
  };
659
- //# sourceMappingURL=marketplace-app-shell-B0ix9yNI.js.map
659
+ //# sourceMappingURL=marketplace-app-shell-Ck5NVJcO.js.map
@@ -8,7 +8,7 @@ import { C as ie, b as te, a as se } from "./collapsible-DVPM46bq.js";
8
8
  import { D as ae } from "./description-list-BxzDN9o2.js";
9
9
  import { P as de } from "./panel-header-CbtlTe85.js";
10
10
  import { u as re } from "./registry-DvAUVLHh.js";
11
- import { u as ne, F as le, r as oe, P as ce } from "./patient-field-row-BFVlJnS9.js";
11
+ import { u as ne, F as le, r as oe, P as ce } from "./patient-field-row-Bn0z6lAZ.js";
12
12
  import { C as pe } from "./clipboard-list-rSzfIYZB.js";
13
13
  const me = {
14
14
  id: "patient-details",
@@ -368,4 +368,4 @@ export {
368
368
  ue as P,
369
369
  me as p
370
370
  };
371
- //# sourceMappingURL=patient-details-Dgd_tocD.js.map
371
+ //# sourceMappingURL=patient-details-B-I9Xkh9.js.map
@@ -24,7 +24,7 @@ import { D as me } from "./date-picker-CdhXlgVI.js";
24
24
  import { E as pe } from "./email-input-C7THAwh2.js";
25
25
  import { F as fe } from "./fiscal-code-input-BzWmNDnl.js";
26
26
  import { N as ge } from "./number-input-CVwI1ltI.js";
27
- import { P as he } from "./phone-input-EwVuqFik.js";
27
+ import { P as he } from "./phone-input-C3NrD-nl.js";
28
28
  import { P as ye } from "./postal-code-input-CfZOnIkW.js";
29
29
  import { P as be } from "./province-select-CDjs5obD.js";
30
30
  import { S as ve } from "./select-4S-eYZUf.js";
@@ -805,4 +805,4 @@ export {
805
805
  Dt as r,
806
806
  St as u
807
807
  };
808
- //# sourceMappingURL=patient-field-row-BFVlJnS9.js.map
808
+ //# sourceMappingURL=patient-field-row-Bn0z6lAZ.js.map
@@ -14,7 +14,7 @@ import { T as Ke } from "./transaction-chip-CohY6sTA.js";
14
14
  import { T as je } from "./tooltip-uEBdD1-5.js";
15
15
  import { H as G } from "./hover-card-CuRIA4wN.js";
16
16
  import { i as de } from "./is-safe-url-DkETxeHz.js";
17
- import { u as qe, r as We, a as He, b as Je, F as Qe, S as Xe, A as Ye, N as Ze } from "./patient-field-row-BFVlJnS9.js";
17
+ import { u as qe, r as We, a as He, b as Je, F as Qe, S as Xe, A as Ye, N as Ze } from "./patient-field-row-Bn0z6lAZ.js";
18
18
  import { u as Oe } from "./registry-DvAUVLHh.js";
19
19
  import { M as ea } from "./mail-BqXVF2zH.js";
20
20
  import { P as aa } from "./phone-FceYcIFQ.js";
@@ -548,4 +548,4 @@ export {
548
548
  Ca as P,
549
549
  ma as p
550
550
  };
551
- //# sourceMappingURL=patient-summary-card-BTKvFUmh.js.map
551
+ //# sourceMappingURL=patient-summary-card-bhDo0gVX.js.map
@@ -1,19 +1,19 @@
1
1
  import { jsxs as m, jsx as r } from "react/jsx-runtime";
2
- import { forwardRef as Xe, useContext as et, useMemo as v, useState as G, useRef as b, useEffect as de, useCallback as U } from "react";
2
+ import { forwardRef as Xe, useContext as et, useMemo as v, useState as G, useRef as y, useEffect as de, useCallback as U } from "react";
3
3
  import { u as tt } from "./registry-DvAUVLHh.js";
4
4
  import { u as nt } from "./use-isomorphic-layout-effect-BGfaCOP1.js";
5
5
  import { u as st } from "./use-dom-value-DTxHhQAN.js";
6
6
  import * as O from "@radix-ui/react-popover";
7
7
  import { u as ot, f as rt } from "./non-modal-tab-exit-j3CPOuE3.js";
8
- import { R as at, _ as w } from "./index-4xgbg-sn.js";
8
+ import { R as at, _ as I } from "./index-4xgbg-sn.js";
9
9
  import { c as pe } from "./index-D2ZczOXr.js";
10
10
  import { useTranslation as it } from "react-i18next";
11
- import { getCountries as dt, parsePhoneNumberFromString as T, AsYouType as W, getCountryCallingCode as ut } from "libphonenumber-js/min";
12
- import { u as lt, F as ct, a as pt } from "./form-field-context-DtiROUJV.js";
11
+ import { getCountries as dt, parsePhoneNumberFromString as T, AsYouType as W, getCountryCallingCode as lt } from "libphonenumber-js/min";
12
+ import { u as ut, F as ct, a as pt } from "./form-field-context-DtiROUJV.js";
13
13
  import { c as ft } from "./compose-refs-C0k0tdqF.js";
14
- import { n as ue } from "./normalize-diacritics-BNGbFNlJ.js";
14
+ import { n as le } from "./normalize-diacritics-BNGbFNlJ.js";
15
15
  import { b as mt } from "./menu-row-BAr8bx1I.js";
16
- import { a as le } from "./flag-DVBE6DnB.js";
16
+ import { a as ue } from "./flag-DVBE6DnB.js";
17
17
  import { C as ht } from "./chevron-down-DWE7GSq9.js";
18
18
  const gt = {
19
19
  id: "phone-input",
@@ -100,7 +100,11 @@ const gt = {
100
100
  "ds:has-[input:focus]:outline-[length:var(--focus-ring-width)] ds:has-[input:focus]:outline-solid",
101
101
  "ds:has-[input:focus]:outline-ring ds:has-[input:focus]:outline-offset-[length:var(--focus-ring-offset)]",
102
102
  "ds:forced-colors:has-[input:focus]:outline-[CanvasText]",
103
- "ds:has-[input:disabled]:cursor-not-allowed ds:has-[input:disabled]:opacity-50"
103
+ "ds:has-[input:disabled]:cursor-not-allowed ds:has-[input:disabled]:opacity-50",
104
+ /* A locked number looks like a locked TextInput: muted, flat, no dimming.
105
+ Keyed on an explicit attribute, not `has-[input:read-only]`, which also
106
+ matches hidden inputs inside the wrapper. */
107
+ "ds:data-[read-only]:bg-muted ds:data-[read-only]:shadow-none ds:data-[read-only]:cursor-default"
104
108
  ].join(" "),
105
109
  {
106
110
  variants: {
@@ -143,7 +147,7 @@ const gt = {
143
147
  },
144
148
  defaultVariants: { size: "md" }
145
149
  }
146
- ), bt = pe(
150
+ ), yt = pe(
147
151
  [
148
152
  "ds:flex-1 ds:min-w-0 ds:bg-transparent ds:text-foreground ds:placeholder:text-muted-foreground",
149
153
  "ds:border-0 ds:outline-none",
@@ -160,7 +164,7 @@ const gt = {
160
164
  },
161
165
  defaultVariants: { size: "md" }
162
166
  }
163
- ), yt = [
167
+ ), bt = [
164
168
  "ds:z-[var(--z-popover)] ds:overflow-hidden ds:w-72",
165
169
  "ds:rounded-[var(--radius-md)] ds:border ds:border-border ds:bg-background ds:text-foreground",
166
170
  "ds:shadow-[var(--shadow-lg)]",
@@ -212,16 +216,16 @@ function Re(s, a, c, o, f) {
212
216
  if (c) {
213
217
  const C = typeof navigator < "u" ? navigator.language : void 0;
214
218
  if (C) {
215
- const y = C.match(/-([A-Za-z]{2})/);
216
- if (y) {
217
- const I = y[1].toUpperCase();
218
- if (d(I)) return I;
219
+ const b = C.match(/-([A-Za-z]{2})/);
220
+ if (b) {
221
+ const x = b[1].toUpperCase();
222
+ if (d(x)) return x;
219
223
  }
220
224
  }
221
225
  try {
222
- const y = new Intl.Locale(o).region;
223
- if (y && d(y.toUpperCase()))
224
- return y.toUpperCase();
226
+ const b = new Intl.Locale(o).region;
227
+ if (b && d(b.toUpperCase()))
228
+ return b.toUpperCase();
225
229
  } catch {
226
230
  }
227
231
  }
@@ -237,7 +241,7 @@ function St(s, a) {
237
241
  const o = a.map((i) => ({
238
242
  code: i,
239
243
  name: c.of(i) ?? i,
240
- dialCode: ut(i)
244
+ dialCode: lt(i)
241
245
  })), f = new Intl.Collator(s);
242
246
  return o.sort((i, d) => f.compare(i.name, d.name));
243
247
  }
@@ -250,8 +254,8 @@ const Et = Xe(
250
254
  onChange: i,
251
255
  size: d = "md",
252
256
  tone: C = "default",
253
- disabled: y,
254
- readOnly: I,
257
+ disabled: b,
258
+ readOnly: x,
255
259
  placeholder: Se,
256
260
  popularCountries: V,
257
261
  allowedCountries: D,
@@ -264,7 +268,7 @@ const Et = Xe(
264
268
  "aria-label": Fe
265
269
  }, Te) {
266
270
  var Ne;
267
- const { t: z, i18n: E } = it("ui"), R = lt(), k = et(ct) !== null, h = v(
271
+ const { t: z, i18n: E } = it("ui"), R = ut(), k = et(ct) !== null, h = v(
268
272
  () => new Set(dt()),
269
273
  []
270
274
  ), p = v(() => {
@@ -294,9 +298,9 @@ const Et = Xe(
294
298
  } : { country: e, display: t, pinned: !1 };
295
299
  }
296
300
  return { country: e, display: "", pinned: !1 };
297
- }, []), [u, j] = G(J.country), [Q, g] = G(
301
+ }, []), [l, j] = G(J.country), [Q, g] = G(
298
302
  J.display
299
- ), [X, A] = G(!1), [De, fe] = G(""), me = a !== void 0, ee = b(""), B = b(null), $ = b(J.pinned), P = b(null), Le = ft(Te, P), je = st(P, Q), he = b(null), ge = b(null);
303
+ ), [X, A] = G(!1), [De, fe] = G(""), me = a !== void 0, ee = y(""), B = y(null), $ = y(J.pinned), P = y(null), Le = ft(Te, P), je = st(P, Q), he = y(null), ge = y(null);
300
304
  de(() => {
301
305
  if ($.current) return;
302
306
  const e = Re(
@@ -330,10 +334,10 @@ const Et = Xe(
330
334
  const t = P.current;
331
335
  t && document.activeElement === t && t.setSelectionRange(e, e);
332
336
  });
333
- const x = U(
337
+ const N = U(
334
338
  (e, t) => {
335
- const n = T(e, t), l = (n == null ? void 0 : n.number) ?? "";
336
- ee.current = l, i == null || i(l, {
339
+ const n = T(e, t), u = (n == null ? void 0 : n.number) ?? "";
340
+ ee.current = u, i == null || i(u, {
337
341
  country: t,
338
342
  isValid: (n == null ? void 0 : n.isValid()) ?? !1,
339
343
  isPossible: (n == null ? void 0 : n.isPossible()) ?? !1,
@@ -341,9 +345,9 @@ const Et = Xe(
341
345
  });
342
346
  },
343
347
  [i]
344
- ), Ae = pt(R, L), Be = L ?? (k ? Ae : void 0), te = (k ? R.disabled : !1) || !!y, $e = (k ? R.required : !1) || !!Pe, ve = k ? R.invalid : !1, He = ve ? "error" : C, Ke = k && R.describedBy ? R.describedBy : void 0, Me = Se ?? z("inputs.phone.placeholder", "Phone number"), H = b(Z);
348
+ ), Ae = pt(R, L), Be = L ?? (k ? Ae : void 0), te = (k ? R.disabled : !1) || !!b, $e = (k ? R.required : !1) || !!Pe, ve = k ? R.invalid : !1, He = ve ? "error" : C, Ke = k && R.describedBy ? R.describedBy : void 0, Me = Se ?? z("inputs.phone.placeholder", "Phone number"), H = y(Z);
345
349
  H.current = Z;
346
- const ne = b(!1), K = b(!1), M = U(
350
+ const ne = y(!1), K = y(!1), M = U(
347
351
  (e) => {
348
352
  var t, n;
349
353
  return e instanceof Node && !!((t = he.current) != null && t.contains(e) || (n = ge.current) != null && n.contains(e));
@@ -357,12 +361,12 @@ const Et = Xe(
357
361
  }, qe = (e) => {
358
362
  const t = e.relatedTarget;
359
363
  M(t) || t === null && K.current || se();
360
- }, be = Z !== void 0;
364
+ }, ye = Z !== void 0;
361
365
  de(() => {
362
- if (!be) return;
366
+ if (!ye) return;
363
367
  let e;
364
- const t = (l) => {
365
- K.current = M(l.target), !K.current && (e = window.setTimeout(() => {
368
+ const t = (u) => {
369
+ K.current = M(u.target), !K.current && (e = window.setTimeout(() => {
366
370
  M(document.activeElement) || se();
367
371
  }, 0));
368
372
  }, n = () => {
@@ -371,52 +375,52 @@ const Et = Xe(
371
375
  return document.addEventListener("pointerdown", t, !0), document.addEventListener("pointerup", n, !0), document.addEventListener("pointercancel", n, !0), () => {
372
376
  window.clearTimeout(e), document.removeEventListener("pointerdown", t, !0), document.removeEventListener("pointerup", n, !0), document.removeEventListener("pointercancel", n, !0);
373
377
  };
374
- }, [be, M, se]);
375
- const oe = ke === "e164" && Y !== void 0, Ge = oe ? ((Ne = T(Q, u)) == null ? void 0 : Ne.number) ?? "" : "", Ue = (e) => {
376
- if (je(), I) return;
377
- const t = e.target, n = t.value, l = t.selectionStart ?? n.length, S = zt(n, l), ie = new W(u).input(n);
378
- B.current = Rt(ie, S), g(ie), x(ie, u);
379
- }, ye = ee, Oe = v(
378
+ }, [ye, M, se]);
379
+ const oe = ke === "e164" && Y !== void 0, Ge = oe ? ((Ne = T(Q, l)) == null ? void 0 : Ne.number) ?? "" : "", Ue = (e) => {
380
+ if (je(), x) return;
381
+ const t = e.target, n = t.value, u = t.selectionStart ?? n.length, S = zt(n, u), ie = new W(l).input(n);
382
+ B.current = Rt(ie, S), g(ie), N(ie, l);
383
+ }, be = ee, Oe = v(
380
384
  () => ({
381
- getValue: () => ye.current,
385
+ getValue: () => be.current,
382
386
  setValue: (e) => {
383
387
  if (e === "") {
384
- g(""), x("", u);
388
+ g(""), N("", l);
385
389
  return;
386
390
  }
387
391
  const t = T(e);
388
392
  if (t != null && t.country)
389
- $.current = !0, j(t.country), g(t.formatNational()), x(t.formatNational(), t.country);
393
+ $.current = !0, j(t.country), g(t.formatNational()), N(t.formatNational(), t.country);
390
394
  else {
391
- const l = new W(u).input(e);
392
- g(l), x(l, u);
395
+ const u = new W(l).input(e);
396
+ g(u), N(u, l);
393
397
  }
394
398
  },
395
399
  clear: () => {
396
- g(""), x("", u);
400
+ g(""), N("", l);
397
401
  },
398
402
  focus: () => {
399
403
  var e;
400
404
  return (e = P.current) == null ? void 0 : e.focus();
401
405
  }
402
406
  }),
403
- [u, x, ye]
407
+ [l, N, be]
404
408
  );
405
409
  tt(gt, Oe, L);
406
410
  const We = ot(!0, {
407
411
  getAnchor: rt,
408
412
  onReturnToTrigger: () => A(!1)
409
413
  }), Ye = (e) => {
410
- if (e === u) {
414
+ if (e === l) {
411
415
  A(!1);
412
416
  return;
413
417
  }
414
- const t = Q.replace(/\D/g, ""), n = new W(e), l = t ? n.input(t) : "";
415
- $.current = !0, j(e), g(l), A(!1), fe(""), x(l, e), requestAnimationFrame(() => {
418
+ const t = Q.replace(/\D/g, ""), n = new W(e), u = t ? n.input(t) : "";
419
+ $.current = !0, j(e), g(u), A(!1), fe(""), N(u, e), requestAnimationFrame(() => {
416
420
  var S;
417
421
  (S = P.current) == null || S.focus();
418
422
  });
419
- }, N = v(
423
+ }, w = v(
420
424
  () => St(
421
425
  E.language,
422
426
  p ?? Array.from(h)
@@ -424,22 +428,22 @@ const Et = Xe(
424
428
  [E.language, h, p]
425
429
  ), F = v(() => {
426
430
  if (!V || V.length === 0) return [];
427
- const e = new Map(N.map((t) => [t.code, t]));
431
+ const e = new Map(w.map((t) => [t.code, t]));
428
432
  return V.filter((t) => h.has(t)).map((t) => e.get(t)).filter((t) => !!t);
429
- }, [V, N, h]), re = v(
433
+ }, [V, w, h]), re = v(
430
434
  () => new Set(F.map((e) => e.code)),
431
435
  [F]
432
436
  ), Ze = v(
433
- () => re.size > 0 ? N.filter((e) => !re.has(e.code)) : N,
434
- [N, re]
437
+ () => re.size > 0 ? w.filter((e) => !re.has(e.code)) : w,
438
+ [w, re]
435
439
  ), _ = v(
436
- () => N.find((e) => e.code === u),
437
- [N, u]
438
- ), ae = _ ? _.dialCode : "", Ce = _ ? _.name : u, q = z("inputs.phone.countryPickerLabel", "Country"), Je = `${q}: ${Ce}, +${ae}`, Qe = U(
440
+ () => w.find((e) => e.code === l),
441
+ [w, l]
442
+ ), ae = _ ? _.dialCode : "", Ce = _ ? _.name : l, q = z("inputs.phone.countryPickerLabel", "Country"), Je = `${q}: ${Ce}, +${ae}`, Qe = U(
439
443
  (e, t, n) => {
440
- const l = ue(e), S = ue(t), we = n == null ? void 0 : n.map(ue);
444
+ const u = le(e), S = le(t), we = n == null ? void 0 : n.map(le);
441
445
  return at(
442
- l,
446
+ u,
443
447
  S,
444
448
  we
445
449
  );
@@ -448,7 +452,7 @@ const Et = Xe(
448
452
  ), xe = (e) => {
449
453
  const t = `${e.name}, +${e.dialCode}`;
450
454
  return /* @__PURE__ */ m(
451
- w.Item,
455
+ I.Item,
452
456
  {
453
457
  value: e.code,
454
458
  keywords: [e.name, e.dialCode, `+${e.dialCode}`],
@@ -456,7 +460,7 @@ const Et = Xe(
456
460
  className: Nt,
457
461
  "aria-label": t,
458
462
  children: [
459
- /* @__PURE__ */ r(le, { country: e.code, size: ce[d] }),
463
+ /* @__PURE__ */ r(ue, { country: e.code, size: ce[d] }),
460
464
  /* @__PURE__ */ r("span", { className: "ds:flex-1 ds:truncate", children: e.name }),
461
465
  /* @__PURE__ */ m("bdi", { dir: "ltr", className: "ds:text-muted-foreground ds:tabular-nums", children: [
462
466
  "+",
@@ -476,6 +480,7 @@ const Et = Xe(
476
480
  "data-component": "phone-input",
477
481
  "data-component-id": L,
478
482
  "data-slot": "phone-input",
483
+ "data-read-only": x ? "" : void 0,
479
484
  className: vt({
480
485
  size: d,
481
486
  tone: He,
@@ -489,7 +494,7 @@ const Et = Xe(
489
494
  className: `${Ie({ size: d })} ds:cursor-default ds:hover:bg-transparent`,
490
495
  children: [
491
496
  /* @__PURE__ */ r("span", { className: "ds:sr-only", children: `${q}: ${Ce}` }),
492
- /* @__PURE__ */ r(le, { country: u, size: ce[d] }),
497
+ /* @__PURE__ */ r(ue, { country: l, size: ce[d] }),
493
498
  /* @__PURE__ */ m("bdi", { dir: "ltr", className: "ds:tabular-nums", children: [
494
499
  "+",
495
500
  ae
@@ -501,13 +506,13 @@ const Et = Xe(
501
506
  "button",
502
507
  {
503
508
  type: "button",
504
- disabled: te || !!I,
509
+ disabled: te || !!x,
505
510
  "aria-haspopup": "dialog",
506
511
  "aria-expanded": X,
507
512
  "aria-label": Je,
508
513
  className: Ie({ size: d }),
509
514
  children: [
510
- /* @__PURE__ */ r(le, { country: u, size: ce[d] }),
515
+ /* @__PURE__ */ r(ue, { country: l, size: ce[d] }),
511
516
  /* @__PURE__ */ m("bdi", { dir: "ltr", className: "ds:tabular-nums", children: [
512
517
  "+",
513
518
  ae
@@ -535,9 +540,9 @@ const Et = Xe(
535
540
  sideOffset: 6,
536
541
  align: "start",
537
542
  "aria-label": q,
538
- className: yt,
543
+ className: bt,
539
544
  children: /* @__PURE__ */ m(
540
- w,
545
+ I,
541
546
  {
542
547
  filter: Qe,
543
548
  shouldFilter: !0,
@@ -545,7 +550,7 @@ const Et = Xe(
545
550
  label: q,
546
551
  children: [
547
552
  /* @__PURE__ */ r(
548
- w.Input,
553
+ I.Input,
549
554
  {
550
555
  asChild: !0,
551
556
  value: De,
@@ -567,17 +572,17 @@ const Et = Xe(
567
572
  )
568
573
  }
569
574
  ),
570
- /* @__PURE__ */ m(w.List, { className: xt, children: [
571
- /* @__PURE__ */ r(w.Empty, { className: wt, children: z("inputs.phone.noCountryFound", "No country found") }),
575
+ /* @__PURE__ */ m(I.List, { className: xt, children: [
576
+ /* @__PURE__ */ r(I.Empty, { className: wt, children: z("inputs.phone.noCountryFound", "No country found") }),
572
577
  F.length > 0 ? /* @__PURE__ */ r(
573
- w.Group,
578
+ I.Group,
574
579
  {
575
580
  heading: /* @__PURE__ */ r("span", { className: ze, children: z("inputs.phone.popularCountries", "Popular") }),
576
581
  children: F.map(xe)
577
582
  }
578
583
  ) : null,
579
584
  /* @__PURE__ */ r(
580
- w.Group,
585
+ I.Group,
581
586
  {
582
587
  heading: F.length > 0 ? /* @__PURE__ */ r("span", { className: ze, children: z("inputs.phone.allCountries", "All countries") }) : void 0,
583
588
  children: Ze.map(xe)
@@ -601,13 +606,13 @@ const Et = Xe(
601
606
  autoComplete: "tel-national",
602
607
  placeholder: Me,
603
608
  disabled: te,
604
- readOnly: I,
609
+ readOnly: x,
605
610
  required: $e,
606
611
  "aria-label": Fe,
607
612
  "aria-describedby": Ke,
608
613
  "aria-invalid": ve || void 0,
609
614
  onChange: Ue,
610
- className: bt({ size: d })
615
+ className: yt({ size: d })
611
616
  }
612
617
  ),
613
618
  oe ? /* @__PURE__ */ r(
@@ -627,8 +632,8 @@ const Et = Xe(
627
632
  Et.displayName = "PhoneInput";
628
633
  export {
629
634
  Et as P,
630
- bt as a,
635
+ yt as a,
631
636
  Ie as c,
632
637
  vt as p
633
638
  };
634
- //# sourceMappingURL=phone-input-EwVuqFik.js.map
639
+ //# sourceMappingURL=phone-input-C3NrD-nl.js.map
@@ -14,7 +14,7 @@ import { F as z } from "./form-field-Ani72sVY.js";
14
14
  import { L as Ir } from "./list-CNnn7DOD.js";
15
15
  import { P as Rr } from "./password-input-BokZ_rnT.js";
16
16
  import { u as yn } from "./use-password-requirements-C8DdwPEy.js";
17
- import { P as Fn } from "./phone-input-EwVuqFik.js";
17
+ import { P as Fn } from "./phone-input-C3NrD-nl.js";
18
18
  import { R as xn } from "./recaptcha-widget-CsvwlYTE.js";
19
19
  import { S as Sn } from "./select-4S-eYZUf.js";
20
20
  import { S as Ar } from "./state-backed-text-input-Cgh4ms3p.js";
@@ -1307,4 +1307,4 @@ export {
1307
1307
  $r as R,
1308
1308
  es as a
1309
1309
  };
1310
- //# sourceMappingURL=registration-form-B6qqeXP1.js.map
1310
+ //# sourceMappingURL=registration-form-DeK2QiJu.js.map
@@ -10,7 +10,7 @@ import { C as B } from "./card-BA4Ig_kn.js";
10
10
  import { D as Ze } from "./date-picker-CdhXlgVI.js";
11
11
  import { E as Ve } from "./error-summary-mGxIyDAY.js";
12
12
  import { F } from "./form-field-Ani72sVY.js";
13
- import { P as ue } from "./phone-input-EwVuqFik.js";
13
+ import { P as ue } from "./phone-input-C3NrD-nl.js";
14
14
  import { a as en, i as nn } from "./safe-href-5dbsfbQn.js";
15
15
  import { u as ge } from "./use-state-backed-input-DhRQo6gM.js";
16
16
  import { u as Ce } from "./use-field-match-C8ug3sdQ.js";
@@ -406,4 +406,4 @@ export {
406
406
  q as S,
407
407
  fn as a
408
408
  };
409
- //# sourceMappingURL=send-registration-link-form-pO2bGjGa.js.map
409
+ //# sourceMappingURL=send-registration-link-form-__DWY62q.js.map
@@ -16,7 +16,7 @@ import { E as zt } from "./editable-description-KU56SP4P.js";
16
16
  import { N as Xe } from "./note-timeline-KzL52MmB.js";
17
17
  import { P as Ot } from "./panel-header-CbtlTe85.js";
18
18
  import { P as Ge } from "./panel-subview-DCyvn-49.js";
19
- import { P as _t } from "./patient-summary-card-BTKvFUmh.js";
19
+ import { P as _t } from "./patient-summary-card-bhDo0gVX.js";
20
20
  import { S as ne } from "./section-card-D5nWiTcK.js";
21
21
  import { C as nn, S as ue } from "./skeleton-tTWJpvAq.js";
22
22
  import { T as an } from "./text-area-COMVJ1yE.js";
@@ -2195,4 +2195,4 @@ export {
2195
2195
  Kn as s,
2196
2196
  _s as u
2197
2197
  };
2198
- //# sourceMappingURL=use-appointment-details-read-BFslxbRr.js.map
2198
+ //# sourceMappingURL=use-appointment-details-read-lFUL4kkd.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "packageVersion": "1.74.0",
3
+ "packageVersion": "1.75.1",
4
4
  "components": [
5
5
  {
6
6
  "kind": "component",
@@ -1511,7 +1511,7 @@
1511
1511
  "root": {
1512
1512
  "attr": "data-component",
1513
1513
  "value": "booking",
1514
- "description": "Marks the Booking root region."
1514
+ "description": "Marks the Booking root region. The host prop hideEmail (boolean, default false) hides the email field, skips its validation and omits email from submission. Pair with confirmationChannels [\"sms\"] for SMS-only confirmation with no channel picker. Patient contact details are never exposed through this adapter."
1515
1515
  },
1516
1516
  "instanceId": {
1517
1517
  "attr": "data-component-id",
@@ -6497,7 +6497,7 @@
6497
6497
  {
6498
6498
  "name": "locale",
6499
6499
  "type": "string",
6500
- "description": "Active IETF language tag (e.g. \"en\", \"it\", \"ar\"). Read after `set_locale` to confirm the switch landed — an unknown tag is silently dropped and leaves this unchanged.",
6500
+ "description": "Active IETF language tag (e.g. \"en\", \"it\", \"ar\"). Initially uses storage, then HTML lang when initialLocaleFromHtmlLang is enabled, then the browser. Read after set_locale to confirm the switch; unknown tags leave it unchanged.",
6501
6501
  "descriptionKey": "ui.agent.headerSettings.state.locale"
6502
6502
  },
6503
6503
  {
@@ -7551,7 +7551,7 @@
7551
7551
  {
7552
7552
  "name": "isSystemDefault",
7553
7553
  "type": "boolean",
7554
- "description": "True when the resolved locale came from `navigator.language` rather than an explicit user choice. Distinguishes \"the user chose English\" from \"we are following the browser, which happens to be English\" — a distinction the resolved tag alone destroys.",
7554
+ "description": "True when following navigator.language. False for a saved or explicit choice, or when initialLocaleFromHtmlLang used the page language. Read alongside locale to distinguish browser detection from a concrete language selection.",
7555
7555
  "descriptionKey": "ui.agent.localePicker.state.isSystemDefault"
7556
7556
  }
7557
7557
  ],
@@ -675,7 +675,7 @@
675
675
  },
676
676
  "headerSettings": {
677
677
  "state": {
678
- "locale": "Active IETF language tag (e.g. \"en\", \"it\", \"ar\"). Read after `set_locale` to confirm the switch landed — an unknown tag is silently dropped and leaves this unchanged.",
678
+ "locale": "Active IETF language tag (e.g. \"en\", \"it\", \"ar\"). Initially uses storage, then HTML lang when initialLocaleFromHtmlLang is enabled, then the browser. Read after set_locale to confirm the switch; unknown tags leave it unchanged.",
679
679
  "theme": "Stored base-theme preference. `'system'` means no override is set and the OS decides — read `resolvedTheme` for what is actually painted.",
680
680
  "accessibility": "Stored AAA-contrast preference. `'system'` means no override is set and `prefers-contrast` decides.",
681
681
  "resolvedTheme": "The theme actually applied to the document once preference and OS signals resolve. This is what makes a `set_theme(\"system\")` or `set_accessibility(\"system\")` write verifiable."
@@ -773,7 +773,7 @@
773
773
  "localePicker": {
774
774
  "state": {
775
775
  "locale": "Resolved IETF tag of the locale currently applied to the page. Read this after `set_locale` — the setter silently drops tags the kit ships no bundle for, so this is the only confirmation the switch landed.",
776
- "isSystemDefault": "True when the resolved locale came from `navigator.language` rather than an explicit user choice. Distinguishes \"the user chose English\" from \"we are following the browser, which happens to be English\" — a distinction the resolved tag alone destroys."
776
+ "isSystemDefault": "True when following navigator.language. False for a saved or explicit choice, or when initialLocaleFromHtmlLang used the page language. Read alongside locale to distinguish browser detection from a concrete language selection."
777
777
  },
778
778
  "actions": {
779
779
  "setLocale": "Switch the active locale to the given IETF tag. Unsupported tags are a silent no-op — read the `locale` state slot afterwards to confirm the switch landed."
@@ -1,4 +1,4 @@
1
- import { A as e, a as n, p, u as s } from "../../_chunks/use-appointment-details-read-BFslxbRr.js";
1
+ import { A as e, a as n, p, u as s } from "../../_chunks/use-appointment-details-read-lFUL4kkd.js";
2
2
  export {
3
3
  e as AppointmentDetailsPanel,
4
4
  n as appointmentDetailsPanelAgent,
@@ -170,7 +170,8 @@ export interface BookingBillingDetails {
170
170
  export interface BookingDetails {
171
171
  firstName: string;
172
172
  lastName: string;
173
- email: string;
173
+ /** Required by default; omitted from submission when `hideEmail` is true. */
174
+ email?: string;
174
175
  mobilePhone: string;
175
176
  privacyConsent: boolean;
176
177
  termsConsent: boolean;
@@ -296,6 +297,13 @@ export interface BookingProps extends Omit<ComponentPropsWithoutRef<'div'>, 'ari
296
297
  availableSlots: Record<string, BookingSlot[]>;
297
298
  /** Server-side hint of the next free date when the current window is empty. */
298
299
  nextAvailableDate?: string;
300
+ /**
301
+ * Hide the email field and skip its validation. Default: false.
302
+ * Submission omits email, including any email in the controlled value.
303
+ * Pair with `confirmationChannels={['sms']}` for SMS-only confirmation.
304
+ * This prop does not change the enabled confirmation channels.
305
+ */
306
+ hideEmail?: boolean;
299
307
  requireCodiceFiscale?: boolean;
300
308
  requireDateOfBirth?: boolean;
301
309
  requireInsuranceNumber?: boolean;
@@ -4,6 +4,8 @@ export interface BookingDetailsFormProps {
4
4
  value: Partial<BookingDetails>;
5
5
  onChange: (next: Partial<BookingDetails>) => void;
6
6
  onSubmit: (details: BookingDetails) => void | Promise<void>;
7
+ /** Hide email, skip its validation and omit it from submission. Default: false. */
8
+ hideEmail?: boolean;
7
9
  requireCodiceFiscale?: boolean;
8
10
  requireDateOfBirth?: boolean;
9
11
  /** When `true` AND `insuranceType === 'public'`, render the Versichertennummer field. */
@@ -1,4 +1,4 @@
1
- import { B as A, C as R, O as a, b as s } from "../../_chunks/booking-sq9sa29d.js";
1
+ import { B as A, C as R, O as a, b as s } from "../../_chunks/booking-D2r19Lia.js";
2
2
  export {
3
3
  A as Booking,
4
4
  R as CONFIRMATION_CHANNEL_ORDER,
@@ -20,6 +20,12 @@ export interface HeaderSettingsProps extends Omit<HTMLAttributes<HTMLDivElement>
20
20
  size?: 'sm' | 'md' | 'lg';
21
21
  /** Disable the trigger entirely. */
22
22
  disabled?: boolean;
23
+ /**
24
+ * With no saved choice, start from the page's HTML lang before falling back
25
+ * to the browser. Defaults to false. The first locale surface's mount effect
26
+ * decides for the app lifecycle; pass the same option to LocalePicker.
27
+ */
28
+ initialLocaleFromHtmlLang?: boolean;
23
29
  }
24
30
  export interface HeaderSettingsHandle {
25
31
  /**
@@ -1,4 +1,4 @@
1
- import { H as t } from "../../_chunks/header-settings-DBlTL6Qj.js";
1
+ import { H as t } from "../../_chunks/header-settings-Coh1r41O.js";
2
2
  export {
3
3
  t as HeaderSettings
4
4
  };
@@ -1,4 +1,4 @@
1
- import { L, a as c, b as r } from "../../_chunks/locale-picker-KT-Vz3bx.js";
1
+ import { L, a as c, b as r } from "../../_chunks/locale-picker-DzdGDSBI.js";
2
2
  export {
3
3
  L as LOCALE_STORAGE_KEY,
4
4
  c as LocalePicker,