@alfadocs/ui-kit-debug 1.6.1 → 1.7.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 (100) hide show
  1. package/dist/_chunks/{practice-results-F_Rf7c4H.js → practice-results-BEsAdW-B.js} +719 -633
  2. package/dist/_chunks/practice-results-BEsAdW-B.js.map +1 -0
  3. package/dist/agent-catalog.json +2 -2
  4. package/dist/components/practice-results/index.js +1 -1
  5. package/dist/components/practice-results/practice-results.d.ts +47 -7
  6. package/dist/components/practice-results/practice-results.d.ts.map +1 -1
  7. package/dist/i18n/locales/ar.d.ts +1 -0
  8. package/dist/i18n/locales/ar.d.ts.map +1 -1
  9. package/dist/i18n/locales/ar.js +2 -1
  10. package/dist/i18n/locales/ar.js.map +1 -1
  11. package/dist/i18n/locales/de.d.ts +1 -0
  12. package/dist/i18n/locales/de.d.ts.map +1 -1
  13. package/dist/i18n/locales/de.js +2 -1
  14. package/dist/i18n/locales/de.js.map +1 -1
  15. package/dist/i18n/locales/el.d.ts +1 -0
  16. package/dist/i18n/locales/el.d.ts.map +1 -1
  17. package/dist/i18n/locales/el.js +2 -1
  18. package/dist/i18n/locales/el.js.map +1 -1
  19. package/dist/i18n/locales/en.d.ts +1 -0
  20. package/dist/i18n/locales/en.d.ts.map +1 -1
  21. package/dist/i18n/locales/en.js +2 -1
  22. package/dist/i18n/locales/en.js.map +1 -1
  23. package/dist/i18n/locales/es.d.ts +1 -0
  24. package/dist/i18n/locales/es.d.ts.map +1 -1
  25. package/dist/i18n/locales/es.js +2 -1
  26. package/dist/i18n/locales/es.js.map +1 -1
  27. package/dist/i18n/locales/fr.d.ts +1 -0
  28. package/dist/i18n/locales/fr.d.ts.map +1 -1
  29. package/dist/i18n/locales/fr.js +2 -1
  30. package/dist/i18n/locales/fr.js.map +1 -1
  31. package/dist/i18n/locales/hi.d.ts +1 -0
  32. package/dist/i18n/locales/hi.d.ts.map +1 -1
  33. package/dist/i18n/locales/hi.js +2 -1
  34. package/dist/i18n/locales/hi.js.map +1 -1
  35. package/dist/i18n/locales/it.d.ts +1 -0
  36. package/dist/i18n/locales/it.d.ts.map +1 -1
  37. package/dist/i18n/locales/it.js +2 -1
  38. package/dist/i18n/locales/it.js.map +1 -1
  39. package/dist/i18n/locales/ja.d.ts +1 -0
  40. package/dist/i18n/locales/ja.d.ts.map +1 -1
  41. package/dist/i18n/locales/ja.js +2 -1
  42. package/dist/i18n/locales/ja.js.map +1 -1
  43. package/dist/i18n/locales/nl.d.ts +1 -0
  44. package/dist/i18n/locales/nl.d.ts.map +1 -1
  45. package/dist/i18n/locales/nl.js +2 -1
  46. package/dist/i18n/locales/nl.js.map +1 -1
  47. package/dist/i18n/locales/pl.d.ts +1 -0
  48. package/dist/i18n/locales/pl.d.ts.map +1 -1
  49. package/dist/i18n/locales/pl.js +2 -1
  50. package/dist/i18n/locales/pl.js.map +1 -1
  51. package/dist/i18n/locales/pt.d.ts +1 -0
  52. package/dist/i18n/locales/pt.d.ts.map +1 -1
  53. package/dist/i18n/locales/pt.js +2 -1
  54. package/dist/i18n/locales/pt.js.map +1 -1
  55. package/dist/i18n/locales/ro.d.ts +1 -0
  56. package/dist/i18n/locales/ro.d.ts.map +1 -1
  57. package/dist/i18n/locales/ro.js +2 -1
  58. package/dist/i18n/locales/ro.js.map +1 -1
  59. package/dist/i18n/locales/ru.d.ts +1 -0
  60. package/dist/i18n/locales/ru.d.ts.map +1 -1
  61. package/dist/i18n/locales/ru.js +2 -1
  62. package/dist/i18n/locales/ru.js.map +1 -1
  63. package/dist/i18n/locales/sq.d.ts +1 -0
  64. package/dist/i18n/locales/sq.d.ts.map +1 -1
  65. package/dist/i18n/locales/sq.js +2 -1
  66. package/dist/i18n/locales/sq.js.map +1 -1
  67. package/dist/i18n/locales/sv.d.ts +1 -0
  68. package/dist/i18n/locales/sv.d.ts.map +1 -1
  69. package/dist/i18n/locales/sv.js +2 -1
  70. package/dist/i18n/locales/sv.js.map +1 -1
  71. package/dist/i18n/locales/tr.d.ts +1 -0
  72. package/dist/i18n/locales/tr.d.ts.map +1 -1
  73. package/dist/i18n/locales/tr.js +2 -1
  74. package/dist/i18n/locales/tr.js.map +1 -1
  75. package/dist/i18n/locales/zh.d.ts +1 -0
  76. package/dist/i18n/locales/zh.d.ts.map +1 -1
  77. package/dist/i18n/locales/zh.js +2 -1
  78. package/dist/i18n/locales/zh.js.map +1 -1
  79. package/dist/index.js +1 -1
  80. package/dist/locales/ar.json +2 -1
  81. package/dist/locales/de.json +2 -1
  82. package/dist/locales/el.json +2 -1
  83. package/dist/locales/en.json +2 -1
  84. package/dist/locales/es.json +2 -1
  85. package/dist/locales/fr.json +2 -1
  86. package/dist/locales/hi.json +2 -1
  87. package/dist/locales/it.json +2 -1
  88. package/dist/locales/ja.json +2 -1
  89. package/dist/locales/nl.json +2 -1
  90. package/dist/locales/pl.json +2 -1
  91. package/dist/locales/pt.json +2 -1
  92. package/dist/locales/ro.json +2 -1
  93. package/dist/locales/ru.json +2 -1
  94. package/dist/locales/sq.json +2 -1
  95. package/dist/locales/sv.json +2 -1
  96. package/dist/locales/tr.json +2 -1
  97. package/dist/locales/zh.json +2 -1
  98. package/dist/tokens.css +1 -1
  99. package/package.json +1 -1
  100. package/dist/_chunks/practice-results-F_Rf7c4H.js.map +0 -1
@@ -1,35 +1,49 @@
1
- import { jsx as t, jsxs as m, Fragment as Ge } from "react/jsx-runtime";
2
- import { forwardRef as Ze, useState as pe, useRef as _, useMemo as D, useImperativeHandle as Qe, useCallback as B, useEffect as J } from "react";
3
- import { c as Z } from "./index-D2ZczOXr.js";
1
+ import { jsx as t, jsxs as p, Fragment as et } from "react/jsx-runtime";
2
+ import { forwardRef as tt, useState as me, useRef as A, useMemo as O, useImperativeHandle as nt, useCallback as B, useEffect as W } from "react";
3
+ import { c as j } from "./index-D2ZczOXr.js";
4
4
  import { useTranslation as C } from "react-i18next";
5
5
  import { A as Y } from "./alert-CiJT540z.js";
6
- import { A as ke } from "./avatar-BNQNhoyL.js";
7
- import { B as G } from "./button-nJaPh_HC.js";
6
+ import { A as Re } from "./avatar-BNQNhoyL.js";
7
+ import { B as ee } from "./button-nJaPh_HC.js";
8
8
  import { D as $ } from "./dropdown-menu-DU-Hrf33.js";
9
- import { E as Je } from "./empty-state-X0sVPfVo.js";
10
- import { M as We } from "./map-view-CCAlC9IL.js";
11
- import { R as Ce } from "./rating-BYbUowdK.js";
12
- import { S as I } from "./sheet-BSznOyJs.js";
13
- import { S as Xe } from "./skeleton-CZbwyJAA.js";
14
- import { S as Ye } from "./spinner-hbwuKwMf.js";
15
- import { B as L } from "./badge-sTusUqZD.js";
16
- import { u as et } from "./use-media-query-CcAx5SMM.js";
17
- import { u as tt } from "./registry-DvAUVLHh.js";
18
- import { c as nt } from "./createLucideIcon-DhHxpK9K.js";
19
- import { R as at } from "./refresh-cw-DnI0cLFC.js";
20
- import { C as Se } from "./chevron-down-DWE7GSq9.js";
21
- import { M as te } from "./map-pin-BaY37-Km.js";
22
- import { L as Ne } from "./languages-CGLX6Qpe.js";
23
- import { S as Pe } from "./shield-check-DCJALLVh.js";
24
- import { H as Ae } from "./heart--qCA4ffe.js";
25
- import { C as Me } from "./calendar-clock-hbObjfGY.js";
9
+ import { E as at } from "./empty-state-X0sVPfVo.js";
10
+ import { M as st } from "./map-view-CCAlC9IL.js";
11
+ import { R as Se } from "./rating-BYbUowdK.js";
12
+ import { S as _ } from "./sheet-BSznOyJs.js";
13
+ import { S as it } from "./skeleton-CZbwyJAA.js";
14
+ import { S as rt } from "./spinner-hbwuKwMf.js";
15
+ import { B as D } from "./badge-sTusUqZD.js";
16
+ import { u as ot } from "./use-media-query-CcAx5SMM.js";
17
+ import { u as lt } from "./registry-DvAUVLHh.js";
18
+ import { c as Ne } from "./createLucideIcon-DhHxpK9K.js";
19
+ import { R as ct } from "./refresh-cw-DnI0cLFC.js";
20
+ import { C as Me } from "./chevron-down-DWE7GSq9.js";
21
+ import { M as ne } from "./map-pin-BaY37-Km.js";
22
+ import { L as Pe } from "./languages-CGLX6Qpe.js";
23
+ import { S as Ae } from "./shield-check-DCJALLVh.js";
24
+ import { H as _e } from "./heart--qCA4ffe.js";
25
+ import { C as dt } from "./calendar-clock-hbObjfGY.js";
26
26
  /**
27
27
  * @license lucide-react v1.22.0 - ISC
28
28
  *
29
29
  * This source code is licensed under the ISC license.
30
30
  * See the LICENSE file in the root directory of this source tree.
31
31
  */
32
- const st = [
32
+ const ut = [
33
+ ["path", { d: "M16 19h6", key: "xwg31i" }],
34
+ ["path", { d: "M16 2v4", key: "4m81vk" }],
35
+ ["path", { d: "M19 16v6", key: "tddt3s" }],
36
+ ["path", { d: "M21 12.598V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h8.5", key: "1glfrc" }],
37
+ ["path", { d: "M3 10h18", key: "8toen8" }],
38
+ ["path", { d: "M8 2v4", key: "1cmpym" }]
39
+ ], pt = Ne("calendar-plus", ut);
40
+ /**
41
+ * @license lucide-react v1.22.0 - ISC
42
+ *
43
+ * This source code is licensed under the ISC license.
44
+ * See the LICENSE file in the root directory of this source tree.
45
+ */
46
+ const mt = [
33
47
  [
34
48
  "path",
35
49
  {
@@ -39,7 +53,7 @@ const st = [
39
53
  ],
40
54
  ["path", { d: "M15 5.764v15", key: "1pn4in" }],
41
55
  ["path", { d: "M9 3.236v15", key: "1uimfh" }]
42
- ], it = nt("map", st), rt = {
56
+ ], ft = Ne("map", mt), ht = {
43
57
  id: "practice-results",
44
58
  // `scroll` backs scroll_to_result; `pick` backs focus_pin (a non-persisting
45
59
  // pin highlight). The active variant is consumer-owned via props, so there is
@@ -115,20 +129,20 @@ const st = [
115
129
  },
116
130
  item: {
117
131
  attr: "data-result-id",
118
- description: "Stable result id emitted on each rendered result card. Used by scroll_to_result / focus_pin to address a single result."
132
+ description: 'Stable result id emitted on each rendered result card. Used by scroll_to_result / focus_pin to address a single result. Each card also carries two anchors: data-component="practice-result-open-cta" (practice page) and data-component="practice-result-book-cta" (booking flow; data-slot-aware="true" when it deep-links to a next slot).'
119
133
  }
120
134
  }
121
- }, ot = 13, lt = [
135
+ }, gt = 13, vt = [
122
136
  "distance",
123
137
  "rating",
124
138
  "next-available",
125
139
  "relevance"
126
140
  ];
127
- function _e(e, n, s) {
141
+ function Ie(e, n, s) {
128
142
  const r = `languages.${e}`;
129
143
  return s.exists(r) ? n(r) : e.toUpperCase();
130
144
  }
131
- function H(e, n) {
145
+ function F(e, n) {
132
146
  if (typeof window > "u") return;
133
147
  const s = window.track;
134
148
  try {
@@ -136,28 +150,28 @@ function H(e, n) {
136
150
  } catch {
137
151
  }
138
152
  }
139
- function W(e, n, s, r) {
153
+ function Q(e, n, s, r) {
140
154
  const i = e.findIndex((c) => c.id === n);
141
155
  if (i < 0) return;
142
156
  const a = e[i];
143
- a && (H("serp_result_clicked", { resultId: n, source: s, position: i }), r(a, s));
157
+ a && (F("serp_result_clicked", { resultId: n, source: s, position: i }), r(a, s));
144
158
  }
145
- function ct(e, n) {
146
- const r = (n.lat - e.lat) * Math.PI / 180, i = (n.lng - e.lng) * Math.PI / 180, a = e.lat * Math.PI / 180, c = n.lat * Math.PI / 180, d = Math.sin(r / 2), o = Math.sin(i / 2), g = d * d + Math.cos(a) * Math.cos(c) * o * o;
147
- return 2 * 6371 * Math.asin(Math.min(1, Math.sqrt(g)));
159
+ function bt(e, n) {
160
+ const r = (n.lat - e.lat) * Math.PI / 180, i = (n.lng - e.lng) * Math.PI / 180, a = e.lat * Math.PI / 180, c = n.lat * Math.PI / 180, d = Math.sin(r / 2), l = Math.sin(i / 2), u = d * d + Math.cos(a) * Math.cos(c) * l * l;
161
+ return 2 * 6371 * Math.asin(Math.min(1, Math.sqrt(u)));
148
162
  }
149
- function dt(e, n, s) {
163
+ function yt(e, n, s) {
150
164
  var i;
151
165
  const r = [];
152
166
  for (const a of e) {
153
- const c = a.field ?? a.key, d = (((i = s == null ? void 0 : s[a.key]) == null ? void 0 : i.length) ?? 0) > 0, o = a.type === "boolean" || a.type !== "options" && a.options.length === 0 && (d || n.some(
154
- (g) => typeof g[c] == "boolean"
167
+ const c = a.field ?? a.key, d = (((i = s == null ? void 0 : s[a.key]) == null ? void 0 : i.length) ?? 0) > 0, l = a.type === "boolean" || a.type !== "options" && a.options.length === 0 && (d || n.some(
168
+ (u) => typeof u[c] == "boolean"
155
169
  ));
156
- !o && a.options.length === 0 || r.push({ ...a, boolean: o, booleanField: c });
170
+ !l && a.options.length === 0 || r.push({ ...a, boolean: l, booleanField: c });
157
171
  }
158
172
  return r;
159
173
  }
160
- function ut(e, n, s) {
174
+ function xt(e, n, s) {
161
175
  return !n || Object.keys(n).length === 0 ? e : e.filter((r) => {
162
176
  for (const i of s) {
163
177
  const a = n[i.key];
@@ -167,27 +181,27 @@ function ut(e, n, s) {
167
181
  continue;
168
182
  }
169
183
  const c = i.key === "insurance" ? r.insurances : i.key === "language" ? r.languages : r[i.key];
170
- if (!Array.isArray(c) || !(i.multi ? a.some((o) => c.includes(o)) : c.includes(a[0]))) return !1;
184
+ if (!Array.isArray(c) || !(i.multi ? a.some((l) => c.includes(l)) : c.includes(a[0]))) return !1;
171
185
  }
172
186
  return !0;
173
187
  });
174
188
  }
175
- function pt(e, n, s) {
189
+ function kt(e, n, s) {
176
190
  const r = e.map((a) => {
177
- const c = a.location ? a.location.distanceKm ?? (s ? ct(s, a.location) : void 0) : void 0;
191
+ const c = a.location ? a.location.distanceKm ?? (s ? bt(s, a.location) : void 0) : void 0;
178
192
  return { result: a, distanceKm: c };
179
193
  }), i = (a, c) => {
180
- var d, o, g, l;
194
+ var d, l, u, o;
181
195
  switch (n) {
182
196
  case "distance":
183
197
  return a.distanceKm == null && c.distanceKm == null ? 0 : a.distanceKm == null ? 1 : c.distanceKm == null ? -1 : a.distanceKm - c.distanceKm;
184
198
  case "rating": {
185
- const p = ((d = a.result.rating) == null ? void 0 : d.value) ?? -1;
186
- return (((o = c.result.rating) == null ? void 0 : o.value) ?? -1) - p;
199
+ const m = ((d = a.result.rating) == null ? void 0 : d.value) ?? -1;
200
+ return (((l = c.result.rating) == null ? void 0 : l.value) ?? -1) - m;
187
201
  }
188
202
  case "next-available": {
189
- const p = ((g = a.result.nextAvailableSlot) == null ? void 0 : g.dateTime) ?? "", h = ((l = c.result.nextAvailableSlot) == null ? void 0 : l.dateTime) ?? "";
190
- return !p && !h ? 0 : p ? h ? p.localeCompare(h) : -1 : 1;
203
+ const m = ((u = a.result.nextAvailableSlot) == null ? void 0 : u.dateTime) ?? "", f = ((o = c.result.nextAvailableSlot) == null ? void 0 : o.dateTime) ?? "";
204
+ return !m && !f ? 0 : m ? f ? m.localeCompare(f) : -1 : 1;
191
205
  }
192
206
  case "relevance":
193
207
  default:
@@ -201,18 +215,18 @@ function pt(e, n, s) {
201
215
  } : a
202
216
  );
203
217
  }
204
- function Re(e) {
218
+ function we(e) {
205
219
  let n = -1 / 0, s = 1 / 0, r = -1 / 0, i = 1 / 0, a = !1;
206
220
  for (const c of e) {
207
221
  if (!c.location) continue;
208
222
  a = !0;
209
- const { lat: d, lng: o } = c.location;
210
- d > n && (n = d), d < s && (s = d), o > r && (r = o), o < i && (i = o);
223
+ const { lat: d, lng: l } = c.location;
224
+ d > n && (n = d), d < s && (s = d), l > r && (r = l), l < i && (i = l);
211
225
  }
212
226
  if (a)
213
227
  return { north: n, south: s, east: r, west: i };
214
228
  }
215
- const mt = Z(
229
+ const wt = j(
216
230
  "ds:flex ds:w-full ds:flex-col ds:text-[var(--foreground)] ds:gap-[var(--spacing-md)]",
217
231
  {
218
232
  variants: {
@@ -225,7 +239,7 @@ const mt = Z(
225
239
  defaultVariants: { variant: "split-list-map" }
226
240
  }
227
241
  );
228
- function Ie({
242
+ function Te({
229
243
  heading: e,
230
244
  intro: n,
231
245
  totalCount: s,
@@ -237,7 +251,7 @@ function Ie({
237
251
  count: s,
238
252
  place: r
239
253
  }) : i("practiceResults.results.summary", { count: s }) : void 0;
240
- return /* @__PURE__ */ m("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]", children: [
254
+ return /* @__PURE__ */ p("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]", children: [
241
255
  e ? /* @__PURE__ */ t("h2", { className: "type-title-section ds:m-0 ds:text-[var(--foreground)]", children: e }) : null,
242
256
  n ? /* @__PURE__ */ t("p", { className: "type-body ds:m-0 ds:text-[var(--muted-foreground)]", children: n }) : null,
243
257
  a ? /* @__PURE__ */ t(
@@ -250,7 +264,7 @@ function Ie({
250
264
  ) : null
251
265
  ] });
252
266
  }
253
- const ee = Z(
267
+ const te = j(
254
268
  [
255
269
  "ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]",
256
270
  "ds:min-h-[var(--min-target-size)]",
@@ -272,7 +286,7 @@ const ee = Z(
272
286
  },
273
287
  defaultVariants: { state: "idle" }
274
288
  }
275
- ), ft = Z(
289
+ ), Ct = j(
276
290
  "ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]",
277
291
  {
278
292
  variants: {
@@ -291,7 +305,7 @@ const ee = Z(
291
305
  },
292
306
  defaultVariants: { placement: "inline" }
293
307
  }
294
- ), ht = Z(
308
+ ), Rt = j(
295
309
  [
296
310
  "ds:ms-[var(--spacing-xs)] ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]",
297
311
  "ds:min-h-[var(--min-target-size)] ds:ps-[var(--spacing-xs)] ds:pe-[var(--spacing-xs)]",
@@ -302,71 +316,71 @@ const ee = Z(
302
316
  "ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]"
303
317
  ].join(" ")
304
318
  );
305
- function ze({
319
+ function Le({
306
320
  facets: e,
307
321
  value: n,
308
322
  onChange: s,
309
323
  floating: r
310
324
  }) {
311
- const { t: i } = C(), a = D(() => n ?? {}, [n]), c = D(
312
- () => Object.values(a).some((l) => l && l.length > 0),
325
+ const { t: i } = C(), a = O(() => n ?? {}, [n]), c = O(
326
+ () => Object.values(a).some((o) => o && o.length > 0),
313
327
  [a]
314
- ), d = (l, p) => {
315
- const h = { ...a };
316
- p.length === 0 ? delete h[l] : h[l] = p, s(h), H("serp_filter_changed", { key: l, values: p });
317
- }, o = (l) => {
318
- var h;
319
- const p = (((h = a[l]) == null ? void 0 : h.length) ?? 0) > 0;
320
- d(l, p ? [] : ["true"]);
321
- }, g = (l, p) => {
322
- const h = a[l.key] ?? [], x = h.includes(p);
323
- let v;
324
- l.multi ? v = x ? h.filter((u) => u !== p) : [...h, p] : v = x ? [] : [p], d(l.key, v);
328
+ ), d = (o, m) => {
329
+ const f = { ...a };
330
+ m.length === 0 ? delete f[o] : f[o] = m, s(f), F("serp_filter_changed", { key: o, values: m });
331
+ }, l = (o) => {
332
+ var f;
333
+ const m = (((f = a[o]) == null ? void 0 : f.length) ?? 0) > 0;
334
+ d(o, m ? [] : ["true"]);
335
+ }, u = (o, m) => {
336
+ const f = a[o.key] ?? [], x = f.includes(m);
337
+ let b;
338
+ o.multi ? b = x ? f.filter((y) => y !== m) : [...f, m] : b = x ? [] : [m], d(o.key, b);
325
339
  };
326
- return e.length === 0 ? null : /* @__PURE__ */ m(
340
+ return e.length === 0 ? null : /* @__PURE__ */ p(
327
341
  "div",
328
342
  {
329
343
  "data-component": "practice-results-filters",
330
344
  role: "group",
331
345
  "aria-label": i("practiceResults.filters.label"),
332
- className: ft({
346
+ className: Ct({
333
347
  placement: r ? "floating" : "inline"
334
348
  }),
335
349
  children: [
336
- e.map((l) => {
337
- const p = l.boolean, h = a[l.key] ?? [], x = h.length > 0;
338
- if (p)
350
+ e.map((o) => {
351
+ const m = o.boolean, f = a[o.key] ?? [], x = f.length > 0;
352
+ if (m)
339
353
  return /* @__PURE__ */ t(
340
354
  "button",
341
355
  {
342
356
  type: "button",
343
357
  "aria-pressed": x,
344
- "aria-label": l.label,
345
- onClick: () => o(l.key),
346
- className: ee({
358
+ "aria-label": o.label,
359
+ onClick: () => l(o.key),
360
+ className: te({
347
361
  state: x ? "active" : "idle"
348
362
  }),
349
- children: /* @__PURE__ */ t("span", { children: l.label })
363
+ children: /* @__PURE__ */ t("span", { children: o.label })
350
364
  },
351
- l.key
365
+ o.key
352
366
  );
353
- const v = x ? ` (${h.length})` : "";
354
- return /* @__PURE__ */ m($.Root, { children: [
355
- /* @__PURE__ */ t($.Trigger, { asChild: !0, children: /* @__PURE__ */ m(
367
+ const b = x ? ` (${f.length})` : "";
368
+ return /* @__PURE__ */ p($.Root, { children: [
369
+ /* @__PURE__ */ t($.Trigger, { asChild: !0, children: /* @__PURE__ */ p(
356
370
  "button",
357
371
  {
358
372
  type: "button",
359
- "aria-label": `${l.label}${v}`,
360
- className: ee({
373
+ "aria-label": `${o.label}${b}`,
374
+ className: te({
361
375
  state: x ? "active" : "idle"
362
376
  }),
363
377
  children: [
364
- /* @__PURE__ */ m("span", { children: [
365
- l.label,
366
- v
378
+ /* @__PURE__ */ p("span", { children: [
379
+ o.label,
380
+ b
367
381
  ] }),
368
382
  /* @__PURE__ */ t(
369
- Se,
383
+ Me,
370
384
  {
371
385
  "aria-hidden": "true",
372
386
  className: "ds:size-3.5 ds:shrink-0"
@@ -375,27 +389,27 @@ function ze({
375
389
  ]
376
390
  }
377
391
  ) }),
378
- /* @__PURE__ */ t($.Content, { sideOffset: 8, align: "start", children: l.options.map((u) => /* @__PURE__ */ t(
392
+ /* @__PURE__ */ t($.Content, { sideOffset: 8, align: "start", children: o.options.map((y) => /* @__PURE__ */ t(
379
393
  $.CheckboxItem,
380
394
  {
381
- checked: h.includes(u.value),
382
- onSelect: (f) => {
383
- l.multi && f.preventDefault(), g(l, u.value);
395
+ checked: f.includes(y.value),
396
+ onSelect: (h) => {
397
+ o.multi && h.preventDefault(), u(o, y.value);
384
398
  },
385
- children: u.label
399
+ children: y.label
386
400
  },
387
- u.value
401
+ y.value
388
402
  )) })
389
- ] }, l.key);
403
+ ] }, o.key);
390
404
  }),
391
405
  c ? /* @__PURE__ */ t(
392
406
  "button",
393
407
  {
394
408
  type: "button",
395
409
  onClick: () => {
396
- s({}), H("serp_filter_changed", { key: "*", values: [] });
410
+ s({}), F("serp_filter_changed", { key: "*", values: [] });
397
411
  },
398
- className: ht(),
412
+ className: Rt(),
399
413
  children: i("practiceResults.filters.clear")
400
414
  }
401
415
  ) : null
@@ -403,7 +417,7 @@ function ze({
403
417
  }
404
418
  );
405
419
  }
406
- function de({ value: e, onChange: n }) {
420
+ function ue({ value: e, onChange: n }) {
407
421
  const { t: s } = C(), r = (i) => {
408
422
  switch (i) {
409
423
  case "distance":
@@ -417,20 +431,20 @@ function de({ value: e, onChange: n }) {
417
431
  return s("practiceResults.sort.relevance");
418
432
  }
419
433
  };
420
- return /* @__PURE__ */ m($.Root, { children: [
421
- /* @__PURE__ */ t($.Trigger, { asChild: !0, children: /* @__PURE__ */ m(
434
+ return /* @__PURE__ */ p($.Root, { children: [
435
+ /* @__PURE__ */ t($.Trigger, { asChild: !0, children: /* @__PURE__ */ p(
422
436
  "button",
423
437
  {
424
438
  type: "button",
425
439
  "aria-label": `${s("practiceResults.sort.label")}: ${r(e)}`,
426
- className: ee({ state: "idle" }),
440
+ className: te({ state: "idle" }),
427
441
  children: [
428
- /* @__PURE__ */ m("span", { children: [
442
+ /* @__PURE__ */ p("span", { children: [
429
443
  s("practiceResults.sort.label"),
430
444
  ": ",
431
445
  r(e)
432
446
  ] }),
433
- /* @__PURE__ */ t(Se, { "aria-hidden": "true", className: "ds:size-3.5 ds:shrink-0" })
447
+ /* @__PURE__ */ t(Me, { "aria-hidden": "true", className: "ds:size-3.5 ds:shrink-0" })
434
448
  ]
435
449
  }
436
450
  ) }),
@@ -440,24 +454,24 @@ function de({ value: e, onChange: n }) {
440
454
  value: e,
441
455
  onValueChange: (i) => {
442
456
  const a = i;
443
- a !== e && (n(a), H("serp_sort_changed", { sort: a }));
457
+ a !== e && (n(a), F("serp_sort_changed", { sort: a }));
444
458
  },
445
- children: lt.map((i) => /* @__PURE__ */ t($.RadioItem, { value: i, children: r(i) }, i))
459
+ children: vt.map((i) => /* @__PURE__ */ t($.RadioItem, { value: i, children: r(i) }, i))
446
460
  }
447
461
  ) })
448
462
  ] });
449
463
  }
450
- function Te({ distanceKm: e }) {
451
- const { t: n, i18n: s } = C(), r = D(() => {
464
+ function ze({ distanceKm: e }) {
465
+ const { t: n, i18n: s } = C(), r = O(() => {
452
466
  if (e < 1) return n("practiceResults.distance.below");
453
467
  const i = new Intl.NumberFormat(s.language, {
454
468
  maximumFractionDigits: 1
455
469
  }).format(e);
456
470
  return n("practiceResults.distance.km", { distance: i });
457
471
  }, [e, n, s.language]);
458
- return /* @__PURE__ */ t(L, { variant: "neutral", leading: /* @__PURE__ */ t(te, { "aria-hidden": "true" }), children: r });
472
+ return /* @__PURE__ */ t(D, { variant: "neutral", leading: /* @__PURE__ */ t(ne, { "aria-hidden": "true" }), children: r });
459
473
  }
460
- const we = Z(
474
+ const Ce = j(
461
475
  [
462
476
  "ds:inline-size-[12rem] ds:block-size-[8rem] ds:shrink-0",
463
477
  "ds:rounded-[var(--radius-md)] ds:overflow-hidden"
@@ -476,12 +490,12 @@ const we = Z(
476
490
  defaultVariants: { state: "placeholder" }
477
491
  }
478
492
  );
479
- function gt() {
493
+ function St() {
480
494
  if (typeof document > "u") return "4945a3";
481
495
  const e = getComputedStyle(document.documentElement).getPropertyValue("--map-marker-color").trim(), n = /^#?([0-9a-fA-F]{6})$/.exec(e);
482
496
  return n ? n[1] : "4945a3";
483
497
  }
484
- function vt({
498
+ function Nt({
485
499
  apiKey: e,
486
500
  center: n,
487
501
  zoom: s = 14,
@@ -489,18 +503,18 @@ function vt({
489
503
  }) {
490
504
  const { t: i } = C();
491
505
  if (!e)
492
- return /* @__PURE__ */ m(
506
+ return /* @__PURE__ */ p(
493
507
  "div",
494
508
  {
495
509
  "aria-hidden": r ? void 0 : "true",
496
- className: we({ state: "placeholder" }),
510
+ className: Ce({ state: "placeholder" }),
497
511
  children: [
498
- /* @__PURE__ */ t(te, { "aria-hidden": "true", className: "ds:size-5 ds:shrink-0" }),
512
+ /* @__PURE__ */ t(ne, { "aria-hidden": "true", className: "ds:size-5 ds:shrink-0" }),
499
513
  r ? /* @__PURE__ */ t("span", { className: "type-meta ds:[overflow-wrap:anywhere]", children: r }) : null
500
514
  ]
501
515
  }
502
516
  );
503
- const a = gt(), c = `https://maps.googleapis.com/maps/api/staticmap?center=${n.lat},${n.lng}&zoom=${s}&size=240x160&scale=2&markers=color:0x${a}%7C${n.lat},${n.lng}&key=${encodeURIComponent(e)}`;
517
+ const a = St(), c = `https://maps.googleapis.com/maps/api/staticmap?center=${n.lat},${n.lng}&zoom=${s}&size=240x160&scale=2&markers=color:0x${a}%7C${n.lat},${n.lng}&key=${encodeURIComponent(e)}`;
504
518
  return /* @__PURE__ */ t(
505
519
  "img",
506
520
  {
@@ -510,11 +524,112 @@ function vt({
510
524
  decoding: "async",
511
525
  width: 240,
512
526
  height: 160,
513
- className: we({ state: "image" })
527
+ className: Ce({ state: "image" })
514
528
  }
515
529
  );
516
530
  }
517
- const Fe = Z(
531
+ function Fe({ tagline: e }) {
532
+ return e ? /* @__PURE__ */ t(
533
+ "span",
534
+ {
535
+ "data-component": "practice-result-tagline",
536
+ className: "type-body-sm ds:font-[var(--font-weight-medium)] ds:text-[var(--foreground)]",
537
+ children: e
538
+ }
539
+ ) : null;
540
+ }
541
+ const Mt = j(
542
+ "type-body-sm ds:m-0 ds:text-[var(--muted-foreground)] ds:whitespace-pre-line ds:break-words",
543
+ {
544
+ variants: {
545
+ density: {
546
+ compact: "ds:line-clamp-2",
547
+ rich: "ds:line-clamp-3"
548
+ }
549
+ },
550
+ defaultVariants: { density: "compact" }
551
+ }
552
+ );
553
+ function He({
554
+ description: e,
555
+ density: n
556
+ }) {
557
+ return e ? /* @__PURE__ */ t(
558
+ "p",
559
+ {
560
+ "data-component": "practice-result-description",
561
+ className: Mt({ density: n }),
562
+ children: e
563
+ }
564
+ ) : null;
565
+ }
566
+ function Be({ time: e }) {
567
+ const { t: n } = C();
568
+ return /* @__PURE__ */ p("span", { className: "type-body-sm ds:text-[var(--muted-foreground)] ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]", children: [
569
+ /* @__PURE__ */ t(
570
+ dt,
571
+ {
572
+ "aria-hidden": "true",
573
+ className: "ds:size-4 ds:text-[var(--primary)]"
574
+ }
575
+ ),
576
+ n("practiceResults.nextSlot.summary", { time: e })
577
+ ] });
578
+ }
579
+ function $e({
580
+ result: e,
581
+ openLabel: n,
582
+ bookLabel: s,
583
+ nextSlotText: r,
584
+ onOpenClick: i,
585
+ onBookClick: a
586
+ }) {
587
+ const { t: c } = C(), d = e.nextAvailableSlot, l = (d == null ? void 0 : d.bookingHref) ?? e.bookingHref ?? e.href, u = d && r ? c("practiceResults.nextSlot.cta", { time: r }) : s;
588
+ return /* @__PURE__ */ p("div", { className: "ds:mt-[var(--spacing-xs)] ds:flex ds:flex-wrap ds:items-center ds:justify-end ds:gap-[var(--spacing-xs)]", children: [
589
+ /* @__PURE__ */ t(
590
+ ee,
591
+ {
592
+ intent: "secondary",
593
+ size: "sm",
594
+ asChild: !0,
595
+ onClick: (o) => {
596
+ o.stopPropagation(), i();
597
+ },
598
+ children: /* @__PURE__ */ p("a", { href: e.href, "data-component": "practice-result-open-cta", children: [
599
+ n,
600
+ " ",
601
+ /* @__PURE__ */ t("span", { className: "ds:sr-only", children: e.name })
602
+ ] })
603
+ }
604
+ ),
605
+ /* @__PURE__ */ t(
606
+ ee,
607
+ {
608
+ intent: "primary",
609
+ size: "sm",
610
+ asChild: !0,
611
+ startIcon: /* @__PURE__ */ t(pt, { "aria-hidden": "true" }),
612
+ onClick: (o) => {
613
+ o.stopPropagation(), a();
614
+ },
615
+ children: /* @__PURE__ */ p(
616
+ "a",
617
+ {
618
+ href: l,
619
+ "data-component": "practice-result-book-cta",
620
+ "data-slot-aware": d ? "true" : void 0,
621
+ children: [
622
+ u,
623
+ " ",
624
+ /* @__PURE__ */ t("span", { className: "ds:sr-only", children: e.name })
625
+ ]
626
+ }
627
+ )
628
+ }
629
+ )
630
+ ] });
631
+ }
632
+ const De = j(
518
633
  [
519
634
  "ds:relative ds:flex ds:w-full ds:cursor-pointer",
520
635
  "ds:rounded-[var(--radius-lg)]",
@@ -543,7 +658,7 @@ const Fe = Z(
543
658
  defaultVariants: { density: "compact" }
544
659
  }
545
660
  );
546
- function bt({
661
+ function Pt({
547
662
  result: e,
548
663
  highlighted: n,
549
664
  onSelect: s,
@@ -551,16 +666,18 @@ function bt({
551
666
  onHover: i,
552
667
  density: a = "compact",
553
668
  openLabel: c,
554
- nextSlotText: d,
669
+ bookLabel: d,
670
+ onBookClick: l,
671
+ nextSlotText: u,
555
672
  maxInsuranceChips: o = 3,
556
- maxLanguageChips: g = 4,
557
- children: l
673
+ maxLanguageChips: m = 4,
674
+ children: f
558
675
  }) {
559
- var T, P, q, U, O, K;
560
- const { t: p, i18n: h } = C(), x = e.rating, v = (T = e.location) == null ? void 0 : T.distanceKm, u = (((P = e.languages) == null ? void 0 : P.length) ?? 0) > 0, f = (((q = e.insurances) == null ? void 0 : q.length) ?? 0) > 0, y = e.specializedInFearPatients, N = u || f || y, R = (e.languages ?? []).slice(0, g), A = (((U = e.languages) == null ? void 0 : U.length) ?? 0) - R.length, M = (e.insurances ?? []).slice(0, o), z = (((O = e.insurances) == null ? void 0 : O.length) ?? 0) - M.length;
676
+ var q, U, G, H, K, Z;
677
+ const { t: x, i18n: b } = C(), y = e.rating, h = (q = e.location) == null ? void 0 : q.distanceKm, g = (((U = e.languages) == null ? void 0 : U.length) ?? 0) > 0, R = (((G = e.insurances) == null ? void 0 : G.length) ?? 0) > 0, M = e.specializedInFearPatients, S = g || R || M, w = (e.languages ?? []).slice(0, m), I = (((H = e.languages) == null ? void 0 : H.length) ?? 0) - w.length, T = (e.insurances ?? []).slice(0, o), P = (((K = e.insurances) == null ? void 0 : K.length) ?? 0) - T.length;
561
678
  return (
562
679
  // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events -- card is role="group" by design (axe nested-interactive); click handler is mouse-only sync.
563
- /* @__PURE__ */ m(
680
+ /* @__PURE__ */ p(
564
681
  "div",
565
682
  {
566
683
  "data-component": "practice-result-card",
@@ -571,12 +688,12 @@ function bt({
571
688
  onClick: s,
572
689
  onMouseEnter: i,
573
690
  onFocus: i,
574
- className: Fe({ density: a }),
691
+ className: De({ density: a }),
575
692
  children: [
576
- /* @__PURE__ */ t(ke, { src: e.imageUrl, name: e.name, size: "lg" }),
577
- /* @__PURE__ */ m("div", { className: "ds:flex ds:min-w-0 ds:flex-1 ds:flex-col ds:gap-[var(--spacing-xs)]", children: [
578
- /* @__PURE__ */ m("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-2xs)]", children: [
579
- /* @__PURE__ */ m("div", { className: "ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]", children: [
693
+ /* @__PURE__ */ t(Re, { src: e.imageUrl, name: e.name, size: "lg" }),
694
+ /* @__PURE__ */ p("div", { className: "ds:flex ds:min-w-0 ds:flex-1 ds:flex-col ds:gap-[var(--spacing-xs)]", children: [
695
+ /* @__PURE__ */ p("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-2xs)]", children: [
696
+ /* @__PURE__ */ p("div", { className: "ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]", children: [
580
697
  /* @__PURE__ */ t(
581
698
  "span",
582
699
  {
@@ -585,106 +702,79 @@ function bt({
585
702
  children: e.name
586
703
  }
587
704
  ),
588
- v != null ? /* @__PURE__ */ t(Te, { distanceKm: v }) : null
705
+ h != null ? /* @__PURE__ */ t(ze, { distanceKm: h }) : null
589
706
  ] }),
590
707
  e.subtitle ? /* @__PURE__ */ t("span", { className: "type-body-sm ds:text-[var(--muted-foreground)]", children: e.subtitle }) : null,
591
- (K = e.location) != null && K.address ? /* @__PURE__ */ m("span", { className: "type-meta ds:text-[var(--muted-foreground)] ds:inline-flex ds:items-center ds:gap-[var(--spacing-2xs)]", children: [
592
- /* @__PURE__ */ t(te, { "aria-hidden": "true", className: "ds:size-3.5 ds:shrink-0" }),
708
+ /* @__PURE__ */ t(Fe, { tagline: e.tagline }),
709
+ (Z = e.location) != null && Z.address ? /* @__PURE__ */ p("span", { className: "type-meta ds:text-[var(--muted-foreground)] ds:inline-flex ds:items-center ds:gap-[var(--spacing-2xs)]", children: [
710
+ /* @__PURE__ */ t(ne, { "aria-hidden": "true", className: "ds:size-3.5 ds:shrink-0" }),
593
711
  e.location.address
594
712
  ] }) : null
595
713
  ] }),
596
- x && x.count > 0 ? /* @__PURE__ */ t(
597
- Ce,
714
+ y && y.count > 0 ? /* @__PURE__ */ t(
715
+ Se,
598
716
  {
599
- value: x.value,
600
- reviews: { count: x.count },
717
+ value: y.value,
718
+ reviews: { count: y.count },
601
719
  size: "sm"
602
720
  }
603
721
  ) : null,
604
- N ? /* @__PURE__ */ m("div", { className: "ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]", children: [
605
- R.map((S) => /* @__PURE__ */ t(
606
- L,
722
+ S ? /* @__PURE__ */ p("div", { className: "ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]", children: [
723
+ w.map((k) => /* @__PURE__ */ t(
724
+ D,
607
725
  {
608
726
  variant: "neutral",
609
- leading: /* @__PURE__ */ t(Ne, { "aria-hidden": "true" }),
610
- children: _e(S, p, h)
727
+ leading: /* @__PURE__ */ t(Pe, { "aria-hidden": "true" }),
728
+ children: Ie(k, x, b)
611
729
  },
612
- `lang-${S}`
730
+ `lang-${k}`
613
731
  )),
614
- A > 0 ? /* @__PURE__ */ t(L, { variant: "neutral", children: `+${A}` }) : null,
615
- M.map((S) => /* @__PURE__ */ t(
616
- L,
732
+ I > 0 ? /* @__PURE__ */ t(D, { variant: "neutral", children: `+${I}` }) : null,
733
+ T.map((k) => /* @__PURE__ */ t(
734
+ D,
617
735
  {
618
736
  variant: "info",
619
- leading: /* @__PURE__ */ t(Pe, { "aria-hidden": "true" }),
620
- children: S
737
+ leading: /* @__PURE__ */ t(Ae, { "aria-hidden": "true" }),
738
+ children: k
621
739
  },
622
- `ins-${S}`
740
+ `ins-${k}`
623
741
  )),
624
- z > 0 ? /* @__PURE__ */ t(L, { variant: "neutral", children: `+${z}` }) : null,
625
- y ? /* @__PURE__ */ t(L, { variant: "info", leading: /* @__PURE__ */ t(Ae, { "aria-hidden": "true" }), children: p("practiceResults.fearPatient.label") }) : null
626
- ] }) : null,
627
- e.nextAvailableSlot && d ? /* @__PURE__ */ m("div", { className: "ds:flex ds:flex-wrap ds:items-center ds:justify-between ds:gap-[var(--spacing-sm)]", children: [
628
- /* @__PURE__ */ m("span", { className: "type-body-sm ds:text-[var(--muted-foreground)] ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]", children: [
629
- /* @__PURE__ */ t(
630
- Me,
631
- {
632
- "aria-hidden": "true",
633
- className: "ds:size-4 ds:text-[var(--primary)]"
634
- }
635
- ),
636
- p("practiceResults.nextSlot.summary", { time: d })
637
- ] }),
638
- /* @__PURE__ */ t(
639
- G,
640
- {
641
- intent: "primary",
642
- size: "sm",
643
- asChild: !0,
644
- onClick: (S) => {
645
- S.stopPropagation();
646
- },
647
- children: /* @__PURE__ */ t(
648
- "a",
649
- {
650
- href: e.nextAvailableSlot.bookingHref,
651
- "data-component": "practice-result-next-slot-cta",
652
- children: p("practiceResults.nextSlot.cta", { time: d })
653
- }
654
- )
655
- }
656
- )
742
+ P > 0 ? /* @__PURE__ */ t(D, { variant: "neutral", children: `+${P}` }) : null,
743
+ M ? /* @__PURE__ */ t(D, { variant: "info", leading: /* @__PURE__ */ t(_e, { "aria-hidden": "true" }), children: x("practiceResults.fearPatient.label") }) : null
657
744
  ] }) : null,
658
- l,
659
- /* @__PURE__ */ t("div", { className: "ds:mt-[var(--spacing-xs)] ds:flex ds:justify-end", children: /* @__PURE__ */ t(
660
- G,
745
+ /* @__PURE__ */ t(He, { description: e.description, density: "compact" }),
746
+ e.nextAvailableSlot && u ? /* @__PURE__ */ t(Be, { time: u }) : null,
747
+ f,
748
+ /* @__PURE__ */ t(
749
+ $e,
661
750
  {
662
- intent: "secondary",
663
- size: "sm",
664
- asChild: !0,
665
- onClick: (S) => {
666
- S.stopPropagation(), r();
667
- },
668
- children: /* @__PURE__ */ t("a", { href: e.href, "data-component": "practice-result-open-cta", children: c })
751
+ result: e,
752
+ openLabel: c,
753
+ bookLabel: d,
754
+ nextSlotText: u,
755
+ onOpenClick: r,
756
+ onBookClick: l
669
757
  }
670
- ) })
758
+ )
671
759
  ] })
672
760
  ]
673
761
  }
674
762
  )
675
763
  );
676
764
  }
677
- function xt({
765
+ function At({
678
766
  result: e,
679
767
  apiKey: n,
680
768
  highlighted: s,
681
769
  onSelect: r,
682
770
  onOpenClick: i,
683
- onHover: a,
684
- openLabel: c
771
+ onBookClick: a,
772
+ onHover: c,
773
+ openLabel: d,
774
+ bookLabel: l
685
775
  }) {
686
- var u, f, y, N;
687
- const { t: d, i18n: o } = C(), g = D(() => {
776
+ var g, R, M, S;
777
+ const { t: u, i18n: o } = C(), m = O(() => {
688
778
  if (e.nextAvailableSlot)
689
779
  try {
690
780
  return new Intl.DateTimeFormat(o.language, {
@@ -695,10 +785,10 @@ function xt({
695
785
  } catch {
696
786
  return e.nextAvailableSlot.dateTime;
697
787
  }
698
- }, [e.nextAvailableSlot, o.language]), l = (((u = e.languages) == null ? void 0 : u.length) ?? 0) > 0, p = (((f = e.insurances) == null ? void 0 : f.length) ?? 0) > 0, h = e.specializedInFearPatients, x = l || p || h, v = (y = e.location) == null ? void 0 : y.distanceKm;
788
+ }, [e.nextAvailableSlot, o.language]), f = (((g = e.languages) == null ? void 0 : g.length) ?? 0) > 0, x = (((R = e.insurances) == null ? void 0 : R.length) ?? 0) > 0, b = e.specializedInFearPatients, y = f || x || b, h = (M = e.location) == null ? void 0 : M.distanceKm;
699
789
  return (
700
790
  // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events -- card is role="group" by design (axe nested-interactive); click handler is mouse-only sync.
701
- /* @__PURE__ */ m(
791
+ /* @__PURE__ */ p(
702
792
  "div",
703
793
  {
704
794
  "data-component": "practice-result-card",
@@ -708,12 +798,12 @@ function xt({
708
798
  role: "group",
709
799
  "aria-labelledby": `practice-result-${e.id}-name`,
710
800
  onClick: r,
711
- onMouseEnter: a,
712
- onFocus: a,
713
- className: Fe({ density: "rich" }),
801
+ onMouseEnter: c,
802
+ onFocus: c,
803
+ className: De({ density: "rich" }),
714
804
  children: [
715
805
  e.location ? /* @__PURE__ */ t(
716
- vt,
806
+ Nt,
717
807
  {
718
808
  apiKey: n,
719
809
  center: {
@@ -723,11 +813,11 @@ function xt({
723
813
  address: e.location.address
724
814
  }
725
815
  ) : null,
726
- /* @__PURE__ */ m("div", { className: "ds:flex ds:min-w-0 ds:flex-1 ds:flex-col ds:gap-[var(--spacing-sm)]", children: [
727
- /* @__PURE__ */ m("div", { className: "ds:flex ds:items-start ds:gap-[var(--spacing-md)]", children: [
728
- /* @__PURE__ */ t(ke, { src: e.imageUrl, name: e.name, size: "md" }),
729
- /* @__PURE__ */ m("div", { className: "ds:flex ds:min-w-0 ds:flex-1 ds:flex-col ds:gap-[var(--spacing-2xs)]", children: [
730
- /* @__PURE__ */ m("div", { className: "ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]", children: [
816
+ /* @__PURE__ */ p("div", { className: "ds:flex ds:min-w-0 ds:flex-1 ds:flex-col ds:gap-[var(--spacing-sm)]", children: [
817
+ /* @__PURE__ */ p("div", { className: "ds:flex ds:items-start ds:gap-[var(--spacing-md)]", children: [
818
+ /* @__PURE__ */ t(Re, { src: e.imageUrl, name: e.name, size: "md" }),
819
+ /* @__PURE__ */ p("div", { className: "ds:flex ds:min-w-0 ds:flex-1 ds:flex-col ds:gap-[var(--spacing-2xs)]", children: [
820
+ /* @__PURE__ */ p("div", { className: "ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]", children: [
731
821
  /* @__PURE__ */ t(
732
822
  "span",
733
823
  {
@@ -736,12 +826,13 @@ function xt({
736
826
  children: e.name
737
827
  }
738
828
  ),
739
- v != null ? /* @__PURE__ */ t(Te, { distanceKm: v }) : null
829
+ h != null ? /* @__PURE__ */ t(ze, { distanceKm: h }) : null
740
830
  ] }),
741
831
  e.subtitle ? /* @__PURE__ */ t("span", { className: "type-body-sm ds:text-[var(--muted-foreground)]", children: e.subtitle }) : null,
742
- (N = e.location) != null && N.address ? /* @__PURE__ */ m("span", { className: "type-meta ds:text-[var(--muted-foreground)] ds:inline-flex ds:items-center ds:gap-[var(--spacing-2xs)]", children: [
832
+ /* @__PURE__ */ t(Fe, { tagline: e.tagline }),
833
+ (S = e.location) != null && S.address ? /* @__PURE__ */ p("span", { className: "type-meta ds:text-[var(--muted-foreground)] ds:inline-flex ds:items-center ds:gap-[var(--spacing-2xs)]", children: [
743
834
  /* @__PURE__ */ t(
744
- te,
835
+ ne,
745
836
  {
746
837
  "aria-hidden": "true",
747
838
  className: "ds:size-3.5 ds:shrink-0"
@@ -751,7 +842,7 @@ function xt({
751
842
  ] }) : null
752
843
  ] }),
753
844
  e.rating && e.rating.count > 0 ? /* @__PURE__ */ t(
754
- Ce,
845
+ Se,
755
846
  {
756
847
  value: e.rating.value,
757
848
  reviews: { count: e.rating.count },
@@ -759,168 +850,144 @@ function xt({
759
850
  }
760
851
  ) : null
761
852
  ] }),
762
- x ? /* @__PURE__ */ m("div", { className: "ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]", children: [
763
- l ? (e.languages ?? []).map((R) => /* @__PURE__ */ t(
764
- L,
853
+ y ? /* @__PURE__ */ p("div", { className: "ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]", children: [
854
+ f ? (e.languages ?? []).map((w) => /* @__PURE__ */ t(
855
+ D,
765
856
  {
766
857
  variant: "neutral",
767
- leading: /* @__PURE__ */ t(Ne, { "aria-hidden": "true" }),
768
- children: _e(R, d, o)
858
+ leading: /* @__PURE__ */ t(Pe, { "aria-hidden": "true" }),
859
+ children: Ie(w, u, o)
769
860
  },
770
- `lang-${R}`
861
+ `lang-${w}`
771
862
  )) : null,
772
- p ? (e.insurances ?? []).map((R) => /* @__PURE__ */ t(
773
- L,
863
+ x ? (e.insurances ?? []).map((w) => /* @__PURE__ */ t(
864
+ D,
774
865
  {
775
866
  variant: "info",
776
- leading: /* @__PURE__ */ t(Pe, { "aria-hidden": "true" }),
777
- children: R
867
+ leading: /* @__PURE__ */ t(Ae, { "aria-hidden": "true" }),
868
+ children: w
778
869
  },
779
- `ins-${R}`
870
+ `ins-${w}`
780
871
  )) : null,
781
- h ? /* @__PURE__ */ t(L, { variant: "info", leading: /* @__PURE__ */ t(Ae, { "aria-hidden": "true" }), children: d("practiceResults.fearPatient.label") }) : null
782
- ] }) : null,
783
- e.nextAvailableSlot && g ? /* @__PURE__ */ m("div", { className: "ds:flex ds:flex-wrap ds:items-center ds:justify-between ds:gap-[var(--spacing-sm)]", children: [
784
- /* @__PURE__ */ m("span", { className: "type-body-sm ds:text-[var(--muted-foreground)] ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]", children: [
785
- /* @__PURE__ */ t(
786
- Me,
787
- {
788
- "aria-hidden": "true",
789
- className: "ds:size-4 ds:text-[var(--primary)]"
790
- }
791
- ),
792
- d("practiceResults.nextSlot.summary", { time: g })
793
- ] }),
794
- /* @__PURE__ */ t(
795
- G,
796
- {
797
- intent: "primary",
798
- size: "sm",
799
- asChild: !0,
800
- onClick: (R) => {
801
- R.stopPropagation();
802
- },
803
- children: /* @__PURE__ */ t(
804
- "a",
805
- {
806
- href: e.nextAvailableSlot.bookingHref,
807
- "data-component": "practice-result-next-slot-cta",
808
- children: d("practiceResults.nextSlot.cta", { time: g })
809
- }
810
- )
811
- }
812
- )
872
+ b ? /* @__PURE__ */ t(D, { variant: "info", leading: /* @__PURE__ */ t(_e, { "aria-hidden": "true" }), children: u("practiceResults.fearPatient.label") }) : null
813
873
  ] }) : null,
814
- /* @__PURE__ */ t("div", { className: "ds:mt-[var(--spacing-xs)] ds:flex ds:justify-end", children: /* @__PURE__ */ t(
815
- G,
874
+ /* @__PURE__ */ t(He, { description: e.description, density: "rich" }),
875
+ e.nextAvailableSlot && m ? /* @__PURE__ */ t(Be, { time: m }) : null,
876
+ /* @__PURE__ */ t(
877
+ $e,
816
878
  {
817
- intent: "secondary",
818
- size: "sm",
819
- asChild: !0,
820
- onClick: (R) => {
821
- R.stopPropagation(), i();
822
- },
823
- children: /* @__PURE__ */ t("a", { href: e.href, "data-component": "practice-result-open-cta", children: c })
879
+ result: e,
880
+ openLabel: d,
881
+ bookLabel: l,
882
+ nextSlotText: m,
883
+ onOpenClick: i,
884
+ onBookClick: a
824
885
  }
825
- ) })
886
+ )
826
887
  ] })
827
888
  ]
828
889
  }
829
890
  )
830
891
  );
831
892
  }
832
- function me({
893
+ function fe({
833
894
  results: e,
834
895
  highlightedId: n,
835
896
  onCardHover: s,
836
897
  onCardSelect: r,
837
898
  onCardOpenClick: i,
838
- openLabel: a,
839
- formatNextSlot: c,
840
- onLoadMore: d,
899
+ onCardBookClick: a,
900
+ openLabel: c,
901
+ bookLabel: d,
902
+ formatNextSlot: l,
903
+ onLoadMore: u,
841
904
  loadingMore: o,
842
- loadingSkeletons: g,
843
- density: l = "compact",
844
- apiKey: p,
845
- containerRef: h
905
+ loadingSkeletons: m,
906
+ density: f = "compact",
907
+ apiKey: x,
908
+ containerRef: b
846
909
  }) {
847
- const { t: x } = C(), v = _(null);
848
- return J(() => {
849
- if (!d) return;
850
- const u = v.current;
851
- if (!u || typeof IntersectionObserver > "u") return;
852
- const f = new IntersectionObserver(
853
- (y) => {
854
- for (const N of y)
855
- N.isIntersecting && (H("serp_load_more", {
910
+ const { t: y } = C(), h = A(null);
911
+ return W(() => {
912
+ if (!u) return;
913
+ const g = h.current;
914
+ if (!g || typeof IntersectionObserver > "u") return;
915
+ const R = new IntersectionObserver(
916
+ (M) => {
917
+ for (const S of M)
918
+ S.isIntersecting && (F("serp_load_more", {
856
919
  currentCount: e.length
857
- }), d());
920
+ }), u());
858
921
  },
859
922
  { root: null, rootMargin: "200px" }
860
923
  );
861
- return f.observe(u), () => f.disconnect();
862
- }, [d, e.length]), g ? /* @__PURE__ */ t(
924
+ return R.observe(g), () => R.disconnect();
925
+ }, [u, e.length]), m ? /* @__PURE__ */ t(
863
926
  "div",
864
927
  {
865
928
  role: "status",
866
929
  "aria-live": "polite",
867
- "aria-label": x("practiceResults.loading"),
930
+ "aria-label": y("practiceResults.loading"),
868
931
  className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]",
869
- children: Array.from({ length: 4 }).map((u, f) => /* @__PURE__ */ t(
870
- Xe,
932
+ children: Array.from({ length: 4 }).map((g, R) => /* @__PURE__ */ t(
933
+ it,
871
934
  {
872
935
  variant: "rounded",
873
- height: l === "rich" ? "11rem" : "7rem"
936
+ height: f === "rich" ? "11rem" : "7rem"
874
937
  },
875
- `pr-skel-${f}`
938
+ `pr-skel-${R}`
876
939
  ))
877
940
  }
878
- ) : /* @__PURE__ */ m(
941
+ ) : /* @__PURE__ */ p(
879
942
  "div",
880
943
  {
881
- ref: h,
944
+ ref: b,
882
945
  "data-component": "practice-results-list",
883
946
  role: "list",
884
- "aria-label": x("practiceResults.list.label"),
947
+ "aria-label": y("practiceResults.list.label"),
885
948
  className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)] ds:overflow-y-auto",
886
949
  children: [
887
- e.map((u) => /* @__PURE__ */ t("div", { role: "listitem", children: l === "rich" ? /* @__PURE__ */ t(
888
- xt,
950
+ e.map((g) => /* @__PURE__ */ t("div", { role: "listitem", children: f === "rich" ? /* @__PURE__ */ t(
951
+ At,
889
952
  {
890
- result: u,
891
- apiKey: p,
892
- highlighted: n === u.id,
893
- onSelect: () => r(u.id),
894
- onOpenClick: () => i(u.id),
895
- onHover: () => s(u.id),
896
- openLabel: a
953
+ result: g,
954
+ apiKey: x,
955
+ highlighted: n === g.id,
956
+ onSelect: () => r(g.id),
957
+ onOpenClick: () => i(g.id),
958
+ onBookClick: () => a(g.id),
959
+ onHover: () => s(g.id),
960
+ openLabel: c,
961
+ bookLabel: d
897
962
  }
898
963
  ) : /* @__PURE__ */ t(
899
- bt,
964
+ Pt,
900
965
  {
901
- result: u,
902
- highlighted: n === u.id,
903
- onSelect: () => r(u.id),
904
- onOpenClick: () => i(u.id),
905
- onHover: () => s(u.id),
906
- openLabel: a,
907
- nextSlotText: c(u)
966
+ result: g,
967
+ highlighted: n === g.id,
968
+ onSelect: () => r(g.id),
969
+ onOpenClick: () => i(g.id),
970
+ onBookClick: () => a(g.id),
971
+ onHover: () => s(g.id),
972
+ openLabel: c,
973
+ bookLabel: d,
974
+ nextSlotText: l(g)
908
975
  }
909
- ) }, u.id)),
910
- d ? /* @__PURE__ */ t(
976
+ ) }, g.id)),
977
+ u ? /* @__PURE__ */ t(
911
978
  "div",
912
979
  {
913
- ref: v,
980
+ ref: h,
914
981
  "aria-hidden": "true",
915
982
  className: "ds:flex ds:items-center ds:justify-center ds:py-[var(--spacing-md)]",
916
- children: o ? /* @__PURE__ */ t(Ye, { size: "md", variant: "pulse" }) : /* @__PURE__ */ t("span", { className: "ds:size-1" })
983
+ children: o ? /* @__PURE__ */ t(rt, { size: "md", variant: "pulse" }) : /* @__PURE__ */ t("span", { className: "ds:size-1" })
917
984
  }
918
985
  ) : null
919
986
  ]
920
987
  }
921
988
  );
922
989
  }
923
- function ue({
990
+ function pe({
924
991
  results: e,
925
992
  searchCentre: n,
926
993
  zoom: s,
@@ -929,55 +996,55 @@ function ue({
929
996
  highlightedId: a,
930
997
  onPinClick: c,
931
998
  onPinHover: d,
932
- onPinFirstInteract: o,
933
- onBoundsChange: g,
934
- consentGranted: l,
935
- onConsentRequest: p,
936
- mapHandleRef: h
999
+ onPinFirstInteract: l,
1000
+ onBoundsChange: u,
1001
+ consentGranted: o,
1002
+ onConsentRequest: m,
1003
+ mapHandleRef: f
937
1004
  }) {
938
- const { t: x } = C(), v = D(
1005
+ const { t: x } = C(), b = O(
939
1006
  () => e.filter(
940
- (f) => !!f.location
941
- ).map((f) => ({
942
- id: f.id,
1007
+ (h) => !!h.location
1008
+ ).map((h) => ({
1009
+ id: h.id,
943
1010
  position: {
944
- lat: f.location.lat,
945
- lng: f.location.lng
1011
+ lat: h.location.lat,
1012
+ lng: h.location.lng
946
1013
  },
947
- label: f.name
1014
+ label: h.name
948
1015
  })),
949
1016
  [e]
950
- ), u = D(() => {
1017
+ ), y = O(() => {
951
1018
  if (n) return n;
952
- const f = Re(e);
953
- return f ? {
954
- lat: (f.north + f.south) / 2,
955
- lng: (f.east + f.west) / 2
1019
+ const h = we(e);
1020
+ return h ? {
1021
+ lat: (h.north + h.south) / 2,
1022
+ lng: (h.east + h.west) / 2
956
1023
  } : { lat: 45.4642, lng: 9.19 };
957
1024
  }, [e, n]);
958
- return J(() => {
959
- if (!g) return;
960
- const f = Re(e);
961
- f && (g(f), H("serp_map_panned", { bounds: f }));
962
- }, [e, g]), /* @__PURE__ */ t(
1025
+ return W(() => {
1026
+ if (!u) return;
1027
+ const h = we(e);
1028
+ h && (u(h), F("serp_map_panned", { bounds: h }));
1029
+ }, [e, u]), /* @__PURE__ */ t(
963
1030
  "div",
964
1031
  {
965
1032
  "data-component": "practice-results-map-panel",
966
1033
  className: "ds:relative ds:flex ds:size-full ds:min-h-[24rem] ds:flex-col",
967
1034
  children: /* @__PURE__ */ t(
968
- We,
1035
+ st,
969
1036
  {
970
- ref: h,
1037
+ ref: f,
971
1038
  apiKey: r ?? "",
972
1039
  mapId: i,
973
- center: u,
1040
+ center: y,
974
1041
  zoom: s,
975
- markers: v,
1042
+ markers: b,
976
1043
  selectedMarkerId: a,
977
- consentGranted: !!l,
978
- onConsentRequest: p,
979
- onMarkerClick: (f) => {
980
- f != null && (d(f), o(f), c(f));
1044
+ consentGranted: !!o,
1045
+ onConsentRequest: m,
1046
+ onMarkerClick: (h) => {
1047
+ h != null && (d(h), l(h), c(h));
981
1048
  },
982
1049
  ariaLabel: x("practiceResults.map.label"),
983
1050
  size: "fill",
@@ -988,13 +1055,13 @@ function ue({
988
1055
  }
989
1056
  );
990
1057
  }
991
- function fe({
1058
+ function he({
992
1059
  variantBodyProps: e
993
1060
  }) {
994
1061
  const { facets: n, value: s, onChange: r, heading: i, intro: a, totalCount: c, searchCentre: d } = e;
995
- return /* @__PURE__ */ m("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]", children: [
1062
+ return /* @__PURE__ */ p("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]", children: [
996
1063
  /* @__PURE__ */ t(
997
- Ie,
1064
+ Te,
998
1065
  {
999
1066
  heading: i,
1000
1067
  intro: a,
@@ -1002,35 +1069,35 @@ function fe({
1002
1069
  searchCentreLabel: d == null ? void 0 : d.label
1003
1070
  }
1004
1071
  ),
1005
- n.length > 0 ? /* @__PURE__ */ m("div", { className: "ds:flex ds:flex-wrap ds:items-center ds:justify-between ds:gap-[var(--spacing-sm)]", children: [
1072
+ n.length > 0 ? /* @__PURE__ */ p("div", { className: "ds:flex ds:flex-wrap ds:items-center ds:justify-between ds:gap-[var(--spacing-sm)]", children: [
1006
1073
  /* @__PURE__ */ t(
1007
- ze,
1074
+ Le,
1008
1075
  {
1009
1076
  facets: n,
1010
1077
  value: s.facets,
1011
- onChange: (o) => r({ ...s, facets: o })
1078
+ onChange: (l) => r({ ...s, facets: l })
1012
1079
  }
1013
1080
  ),
1014
1081
  /* @__PURE__ */ t(
1015
- de,
1082
+ ue,
1016
1083
  {
1017
1084
  value: s.sort ?? "relevance",
1018
- onChange: (o) => r({ ...s, sort: o })
1085
+ onChange: (l) => r({ ...s, sort: l })
1019
1086
  }
1020
1087
  )
1021
1088
  ] }) : /* @__PURE__ */ t("div", { className: "ds:flex ds:justify-end", children: /* @__PURE__ */ t(
1022
- de,
1089
+ ue,
1023
1090
  {
1024
1091
  value: s.sort ?? "relevance",
1025
- onChange: (o) => r({ ...s, sort: o })
1092
+ onChange: (l) => r({ ...s, sort: l })
1026
1093
  }
1027
1094
  ) })
1028
1095
  ] });
1029
1096
  }
1030
- function he() {
1097
+ function ge() {
1031
1098
  const { t: e } = C();
1032
1099
  return /* @__PURE__ */ t(
1033
- Je,
1100
+ at,
1034
1101
  {
1035
1102
  variant: "no-results",
1036
1103
  title: e("practiceResults.empty.title"),
@@ -1038,24 +1105,24 @@ function he() {
1038
1105
  }
1039
1106
  );
1040
1107
  }
1041
- function ge({ onRetry: e }) {
1108
+ function ve({ onRetry: e }) {
1042
1109
  const { t: n } = C();
1043
- return /* @__PURE__ */ m(Y, { variant: "error", children: [
1110
+ return /* @__PURE__ */ p(Y, { variant: "error", children: [
1044
1111
  /* @__PURE__ */ t(Y.Title, { as: "h3", children: n("practiceResults.error.title") }),
1045
1112
  /* @__PURE__ */ t(Y.Description, { children: n("practiceResults.error.description") }),
1046
1113
  e ? /* @__PURE__ */ t(Y.Action, { children: /* @__PURE__ */ t(
1047
- G,
1114
+ ee,
1048
1115
  {
1049
1116
  intent: "secondary",
1050
1117
  size: "sm",
1051
- startIcon: /* @__PURE__ */ t(at, { "aria-hidden": "true" }),
1118
+ startIcon: /* @__PURE__ */ t(ct, { "aria-hidden": "true" }),
1052
1119
  onClick: e,
1053
1120
  children: n("practiceResults.error.retry")
1054
1121
  }
1055
1122
  ) }) : null
1056
1123
  ] });
1057
1124
  }
1058
- function yt(e) {
1125
+ function _t(e) {
1059
1126
  const {
1060
1127
  results: n,
1061
1128
  apiKey: s,
@@ -1064,41 +1131,43 @@ function yt(e) {
1064
1131
  searchCentre: a,
1065
1132
  onLoadMore: c,
1066
1133
  loadingMore: d,
1067
- loadingSkeletons: o,
1068
- emptyResultsSlot: g,
1069
- errorSlot: l,
1070
- error: p,
1071
- onRetry: h,
1134
+ loadingSkeletons: l,
1135
+ emptyResultsSlot: u,
1136
+ errorSlot: o,
1137
+ error: m,
1138
+ onRetry: f,
1072
1139
  highlightedId: x,
1073
- onCardHover: v,
1074
- onPinClick: u,
1075
- consentGranted: f,
1076
- onConsentRequest: y,
1077
- onBoundsChange: N,
1078
- listContainerRef: R
1079
- } = e, { t: A } = C(), [M, z] = pe(!1), T = p ? l ?? /* @__PURE__ */ t(ge, { onRetry: h }) : n.length === 0 && !o ? g ?? /* @__PURE__ */ t(he, {}) : /* @__PURE__ */ t(
1080
- me,
1140
+ onCardHover: b,
1141
+ onPinClick: y,
1142
+ consentGranted: h,
1143
+ onConsentRequest: g,
1144
+ onBoundsChange: R,
1145
+ listContainerRef: M
1146
+ } = e, { t: S } = C(), [w, I] = me(!1), T = m ? o ?? /* @__PURE__ */ t(ve, { onRetry: f }) : n.length === 0 && !l ? u ?? /* @__PURE__ */ t(ge, {}) : /* @__PURE__ */ t(
1147
+ fe,
1081
1148
  {
1082
1149
  results: n,
1083
1150
  highlightedId: x,
1084
- onCardHover: v,
1151
+ onCardHover: b,
1085
1152
  onCardSelect: e.onCardSelect,
1086
1153
  onCardOpenClick: e.onCardOpenClick,
1154
+ onCardBookClick: e.onCardBookClick,
1087
1155
  openLabel: e.openLabel,
1156
+ bookLabel: e.bookLabel,
1088
1157
  formatNextSlot: e.formatNextSlot,
1089
1158
  onLoadMore: c,
1090
1159
  loadingMore: d,
1091
- loadingSkeletons: o,
1160
+ loadingSkeletons: l,
1092
1161
  density: "compact",
1093
- containerRef: R
1162
+ containerRef: M
1094
1163
  }
1095
1164
  );
1096
- return /* @__PURE__ */ m("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]", children: [
1097
- /* @__PURE__ */ t(fe, { variantBodyProps: e }),
1098
- /* @__PURE__ */ m("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)] ds:lg:grid ds:lg:grid-cols-[55fr_45fr] ds:lg:gap-[var(--spacing-lg)] ds:lg:items-start", children: [
1165
+ return /* @__PURE__ */ p("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]", children: [
1166
+ /* @__PURE__ */ t(he, { variantBodyProps: e }),
1167
+ /* @__PURE__ */ p("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)] ds:lg:grid ds:lg:grid-cols-[55fr_45fr] ds:lg:gap-[var(--spacing-lg)] ds:lg:items-start", children: [
1099
1168
  /* @__PURE__ */ t("div", { className: "ds:min-w-0", children: T }),
1100
1169
  /* @__PURE__ */ t("div", { className: "ds:hidden ds:lg:block ds:sticky ds:top-[var(--spacing-md)] ds:h-[40rem]", children: /* @__PURE__ */ t(
1101
- ue,
1170
+ pe,
1102
1171
  {
1103
1172
  results: n,
1104
1173
  searchCentre: a,
@@ -1107,34 +1176,34 @@ function yt(e) {
1107
1176
  mapId: r,
1108
1177
  highlightedId: x,
1109
1178
  onPinClick: (P) => {
1110
- W(n, P, "pin", e.onResultSelect), u(P);
1179
+ Q(n, P, "pin", e.onResultSelect), y(P);
1111
1180
  },
1112
- onPinHover: v,
1181
+ onPinHover: b,
1113
1182
  onPinFirstInteract: e.onPinFirstInteract,
1114
- onBoundsChange: N,
1115
- consentGranted: f,
1116
- onConsentRequest: y,
1183
+ onBoundsChange: R,
1184
+ consentGranted: h,
1185
+ onConsentRequest: g,
1117
1186
  mapHandleRef: e.mapHandleRef
1118
1187
  }
1119
1188
  ) })
1120
1189
  ] }),
1121
1190
  /* @__PURE__ */ t("div", { className: "ds:flex ds:lg:hidden ds:sticky ds:bottom-[var(--spacing-md)] ds:justify-center", children: /* @__PURE__ */ t(
1122
- G,
1191
+ ee,
1123
1192
  {
1124
1193
  intent: "primary",
1125
1194
  size: "md",
1126
- startIcon: /* @__PURE__ */ t(it, { "aria-hidden": "true" }),
1127
- onClick: () => z(!0),
1128
- children: A("practiceResults.viewMap")
1195
+ startIcon: /* @__PURE__ */ t(ft, { "aria-hidden": "true" }),
1196
+ onClick: () => I(!0),
1197
+ children: S("practiceResults.viewMap")
1129
1198
  }
1130
1199
  ) }),
1131
- /* @__PURE__ */ t(I.Root, { open: M, onOpenChange: z, children: /* @__PURE__ */ m(I.Content, { side: "bottom", size: "lg", children: [
1132
- /* @__PURE__ */ t(I.Header, { children: /* @__PURE__ */ t(I.Title, { children: A("practiceResults.map.label") }) }),
1133
- /* @__PURE__ */ m(I.Body, { children: [
1134
- /* @__PURE__ */ t(I.Description, { className: "ds:sr-only", children: A("practiceResults.sheet.description") }),
1135
- /* @__PURE__ */ m("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]", children: [
1200
+ /* @__PURE__ */ t(_.Root, { open: w, onOpenChange: I, children: /* @__PURE__ */ p(_.Content, { side: "bottom", size: "lg", children: [
1201
+ /* @__PURE__ */ t(_.Header, { children: /* @__PURE__ */ t(_.Title, { children: S("practiceResults.map.label") }) }),
1202
+ /* @__PURE__ */ p(_.Body, { children: [
1203
+ /* @__PURE__ */ t(_.Description, { className: "ds:sr-only", children: S("practiceResults.sheet.description") }),
1204
+ /* @__PURE__ */ p("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]", children: [
1136
1205
  /* @__PURE__ */ t("div", { className: "ds:h-[20rem]", children: /* @__PURE__ */ t(
1137
- ue,
1206
+ pe,
1138
1207
  {
1139
1208
  results: n,
1140
1209
  searchCentre: a,
@@ -1143,13 +1212,13 @@ function yt(e) {
1143
1212
  mapId: r,
1144
1213
  highlightedId: x,
1145
1214
  onPinClick: (P) => {
1146
- W(n, P, "pin", e.onResultSelect), u(P);
1215
+ Q(n, P, "pin", e.onResultSelect), y(P);
1147
1216
  },
1148
- onPinHover: v,
1217
+ onPinHover: b,
1149
1218
  onPinFirstInteract: e.onPinFirstInteract,
1150
- onBoundsChange: N,
1151
- consentGranted: f,
1152
- onConsentRequest: y,
1219
+ onBoundsChange: R,
1220
+ consentGranted: h,
1221
+ onConsentRequest: g,
1153
1222
  mapHandleRef: e.mapHandleRef
1154
1223
  }
1155
1224
  ) }),
@@ -1159,44 +1228,44 @@ function yt(e) {
1159
1228
  ] }) })
1160
1229
  ] });
1161
1230
  }
1162
- const Rt = {
1231
+ const It = {
1163
1232
  peek: "sm",
1164
1233
  half: "md",
1165
1234
  full: "lg"
1166
- }, V = [
1235
+ }, E = [
1167
1236
  "peek",
1168
1237
  "half",
1169
1238
  "full"
1170
1239
  ];
1171
- function wt({ value: e, onChange: n }) {
1172
- const { t: s, i18n: r } = C(), i = r.dir() === "rtl", a = _(
1240
+ function Tt({ value: e, onChange: n }) {
1241
+ const { t: s, i18n: r } = C(), i = r.dir() === "rtl", a = A(
1173
1242
  /* @__PURE__ */ new Map()
1174
- ), c = B((o) => {
1175
- var g;
1176
- (g = a.current.get(o)) == null || g.focus();
1243
+ ), c = B((l) => {
1244
+ var u;
1245
+ (u = a.current.get(l)) == null || u.focus();
1177
1246
  }, []), d = B(
1178
- (o, g) => {
1179
- const l = V.indexOf(g), p = V.length, h = i ? "ArrowLeft" : "ArrowRight", x = i ? "ArrowRight" : "ArrowLeft";
1180
- let v = null;
1181
- switch (o.key) {
1182
- case h:
1247
+ (l, u) => {
1248
+ const o = E.indexOf(u), m = E.length, f = i ? "ArrowLeft" : "ArrowRight", x = i ? "ArrowRight" : "ArrowLeft";
1249
+ let b = null;
1250
+ switch (l.key) {
1251
+ case f:
1183
1252
  case "ArrowDown":
1184
- v = V[(l + 1) % p];
1253
+ b = E[(o + 1) % m];
1185
1254
  break;
1186
1255
  case x:
1187
1256
  case "ArrowUp":
1188
- v = V[(l - 1 + p) % p];
1257
+ b = E[(o - 1 + m) % m];
1189
1258
  break;
1190
1259
  case "Home":
1191
- v = V[0];
1260
+ b = E[0];
1192
1261
  break;
1193
1262
  case "End":
1194
- v = V[p - 1];
1263
+ b = E[m - 1];
1195
1264
  break;
1196
1265
  default:
1197
1266
  return;
1198
1267
  }
1199
- o.preventDefault(), v && v !== g && n(v), v && c(v);
1268
+ l.preventDefault(), b && b !== u && n(b), b && c(b);
1200
1269
  },
1201
1270
  [c, i, n]
1202
1271
  );
@@ -1206,33 +1275,33 @@ function wt({ value: e, onChange: n }) {
1206
1275
  role: "radiogroup",
1207
1276
  "aria-label": s("practiceResults.sheet.snap.label"),
1208
1277
  className: "ds:inline-flex ds:items-center ds:gap-[var(--spacing-2xs)]",
1209
- children: V.map((o) => {
1210
- const g = e === o;
1278
+ children: E.map((l) => {
1279
+ const u = e === l;
1211
1280
  return /* @__PURE__ */ t(
1212
1281
  "button",
1213
1282
  {
1214
- ref: (l) => {
1215
- l ? a.current.set(o, l) : a.current.delete(o);
1283
+ ref: (o) => {
1284
+ o ? a.current.set(l, o) : a.current.delete(l);
1216
1285
  },
1217
1286
  type: "button",
1218
1287
  role: "radio",
1219
- "aria-checked": g,
1220
- "aria-label": s(`practiceResults.sheet.snap.${o}`),
1221
- tabIndex: g ? 0 : -1,
1222
- onClick: () => n(o),
1223
- onKeyDown: (l) => d(l, o),
1224
- className: ee({
1225
- state: g ? "active" : "idle"
1288
+ "aria-checked": u,
1289
+ "aria-label": s(`practiceResults.sheet.snap.${l}`),
1290
+ tabIndex: u ? 0 : -1,
1291
+ onClick: () => n(l),
1292
+ onKeyDown: (o) => d(o, l),
1293
+ className: te({
1294
+ state: u ? "active" : "idle"
1226
1295
  }),
1227
- children: s(`practiceResults.sheet.snap.${o}`)
1296
+ children: s(`practiceResults.sheet.snap.${l}`)
1228
1297
  },
1229
- o
1298
+ l
1230
1299
  );
1231
1300
  })
1232
1301
  }
1233
1302
  );
1234
1303
  }
1235
- function kt(e) {
1304
+ function Lt(e) {
1236
1305
  const {
1237
1306
  results: n,
1238
1307
  apiKey: s,
@@ -1241,40 +1310,42 @@ function kt(e) {
1241
1310
  searchCentre: a,
1242
1311
  onLoadMore: c,
1243
1312
  loadingMore: d,
1244
- loadingSkeletons: o,
1245
- emptyResultsSlot: g,
1246
- errorSlot: l,
1247
- error: p,
1248
- onRetry: h,
1313
+ loadingSkeletons: l,
1314
+ emptyResultsSlot: u,
1315
+ errorSlot: o,
1316
+ error: m,
1317
+ onRetry: f,
1249
1318
  highlightedId: x,
1250
- onCardHover: v,
1251
- onPinClick: u,
1252
- consentGranted: f,
1253
- onConsentRequest: y,
1254
- onBoundsChange: N,
1255
- listContainerRef: R,
1256
- facets: A,
1257
- value: M,
1258
- onChange: z
1259
- } = e, { t: T } = C(), [P, q] = pe("half"), U = Rt[P], O = et("(min-width: 1024px)"), K = p ? l ?? /* @__PURE__ */ t(ge, { onRetry: h }) : n.length === 0 && !o ? g ?? /* @__PURE__ */ t(he, {}) : /* @__PURE__ */ t(
1260
- me,
1319
+ onCardHover: b,
1320
+ onPinClick: y,
1321
+ consentGranted: h,
1322
+ onConsentRequest: g,
1323
+ onBoundsChange: R,
1324
+ listContainerRef: M,
1325
+ facets: S,
1326
+ value: w,
1327
+ onChange: I
1328
+ } = e, { t: T } = C(), [P, q] = me("half"), U = It[P], G = ot("(min-width: 1024px)"), H = m ? o ?? /* @__PURE__ */ t(ve, { onRetry: f }) : n.length === 0 && !l ? u ?? /* @__PURE__ */ t(ge, {}) : /* @__PURE__ */ t(
1329
+ fe,
1261
1330
  {
1262
1331
  results: n,
1263
1332
  highlightedId: x,
1264
- onCardHover: v,
1333
+ onCardHover: b,
1265
1334
  onCardSelect: e.onCardSelect,
1266
1335
  onCardOpenClick: e.onCardOpenClick,
1336
+ onCardBookClick: e.onCardBookClick,
1267
1337
  openLabel: e.openLabel,
1338
+ bookLabel: e.bookLabel,
1268
1339
  formatNextSlot: e.formatNextSlot,
1269
1340
  onLoadMore: c,
1270
1341
  loadingMore: d,
1271
- loadingSkeletons: o,
1342
+ loadingSkeletons: l,
1272
1343
  density: "compact",
1273
1344
  apiKey: s,
1274
- containerRef: R
1345
+ containerRef: M
1275
1346
  }
1276
- ), S = /* @__PURE__ */ t(
1277
- ue,
1347
+ ), K = /* @__PURE__ */ t(
1348
+ pe,
1278
1349
  {
1279
1350
  results: n,
1280
1351
  searchCentre: a,
@@ -1282,26 +1353,26 @@ function kt(e) {
1282
1353
  apiKey: s,
1283
1354
  mapId: r,
1284
1355
  highlightedId: x,
1285
- onPinClick: (w) => {
1286
- W(n, w, "pin", e.onResultSelect), u(w);
1356
+ onPinClick: (k) => {
1357
+ Q(n, k, "pin", e.onResultSelect), y(k);
1287
1358
  },
1288
- onPinHover: v,
1359
+ onPinHover: b,
1289
1360
  onPinFirstInteract: e.onPinFirstInteract,
1290
- onBoundsChange: N,
1291
- consentGranted: f,
1292
- onConsentRequest: y,
1361
+ onBoundsChange: R,
1362
+ consentGranted: h,
1363
+ onConsentRequest: g,
1293
1364
  mapHandleRef: e.mapHandleRef
1294
1365
  }
1295
- ), ne = A.length > 0 ? /* @__PURE__ */ t("div", { className: "ds:absolute ds:start-[var(--spacing-md)] ds:top-[var(--spacing-md)] ds:max-w-[calc(100%-var(--spacing-lg))]", children: /* @__PURE__ */ t(
1296
- ze,
1366
+ ), Z = S.length > 0 ? /* @__PURE__ */ t("div", { className: "ds:absolute ds:start-[var(--spacing-md)] ds:top-[var(--spacing-md)] ds:max-w-[calc(100%-var(--spacing-lg))]", children: /* @__PURE__ */ t(
1367
+ Le,
1297
1368
  {
1298
- facets: A,
1299
- value: M.facets,
1300
- onChange: (w) => z({ ...M, facets: w }),
1369
+ facets: S,
1370
+ value: w.facets,
1371
+ onChange: (k) => I({ ...w, facets: k }),
1301
1372
  floating: !0
1302
1373
  }
1303
1374
  ) }) : null;
1304
- return /* @__PURE__ */ t("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]", children: O ? (
1375
+ return /* @__PURE__ */ t("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]", children: G ? (
1305
1376
  // Desktop: 65/35 map left + cards rail right. NO Sheet (the
1306
1377
  // Sheet would portal to body and occlude the desktop layout
1307
1378
  // regardless of the parent's `lg:hidden` class).
@@ -1319,11 +1390,11 @@ function kt(e) {
1319
1390
  // the map column is `lg:sticky lg:h-[44rem]` (stays visible
1320
1391
  // as the patient scrolls cards) and the rail renders at
1321
1392
  // natural height. Single page scroll.
1322
- /* @__PURE__ */ m(Ge, { children: [
1323
- /* @__PURE__ */ t(fe, { variantBodyProps: e }),
1324
- /* @__PURE__ */ m("div", { className: "ds:grid ds:grid-cols-[65fr_35fr] ds:gap-[var(--spacing-lg)] ds:items-start", children: [
1325
- /* @__PURE__ */ t("div", { className: "ds:sticky ds:top-[var(--spacing-md)] ds:h-[44rem]", children: S }),
1326
- /* @__PURE__ */ t("div", { className: "ds:min-w-0", children: K })
1393
+ /* @__PURE__ */ p(et, { children: [
1394
+ /* @__PURE__ */ t(he, { variantBodyProps: e }),
1395
+ /* @__PURE__ */ p("div", { className: "ds:grid ds:grid-cols-[65fr_35fr] ds:gap-[var(--spacing-lg)] ds:items-start", children: [
1396
+ /* @__PURE__ */ t("div", { className: "ds:sticky ds:top-[var(--spacing-md)] ds:h-[44rem]", children: K }),
1397
+ /* @__PURE__ */ t("div", { className: "ds:min-w-0", children: H })
1327
1398
  ] })
1328
1399
  ] })
1329
1400
  ) : (
@@ -1333,9 +1404,9 @@ function kt(e) {
1333
1404
  // via the snap radiogroup at the top of the sheet body. Filters
1334
1405
  // stay floating on mobile — the full-bleed map IS the viewport
1335
1406
  // chrome, so floating chips are the only place for them.
1336
- /* @__PURE__ */ m("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]", children: [
1407
+ /* @__PURE__ */ p("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]", children: [
1337
1408
  /* @__PURE__ */ t(
1338
- Ie,
1409
+ Te,
1339
1410
  {
1340
1411
  heading: e.heading,
1341
1412
  intro: e.intro,
@@ -1343,26 +1414,26 @@ function kt(e) {
1343
1414
  searchCentreLabel: a == null ? void 0 : a.label
1344
1415
  }
1345
1416
  ),
1346
- /* @__PURE__ */ m("div", { className: "ds:relative ds:h-[60vh] ds:min-h-[20rem]", children: [
1347
- S,
1348
- ne
1417
+ /* @__PURE__ */ p("div", { className: "ds:relative ds:h-[60vh] ds:min-h-[20rem]", children: [
1418
+ K,
1419
+ Z
1349
1420
  ] }),
1350
- /* @__PURE__ */ t(I.Root, { open: !0, children: /* @__PURE__ */ t(
1351
- I.Content,
1421
+ /* @__PURE__ */ t(_.Root, { open: !0, children: /* @__PURE__ */ t(
1422
+ _.Content,
1352
1423
  {
1353
1424
  side: "bottom",
1354
1425
  size: U,
1355
- onEscapeKeyDown: (w) => w.preventDefault(),
1356
- onPointerDownOutside: (w) => w.preventDefault(),
1357
- onInteractOutside: (w) => w.preventDefault(),
1358
- children: /* @__PURE__ */ m(I.Body, { children: [
1359
- /* @__PURE__ */ t(I.Description, { className: "ds:sr-only", children: T("practiceResults.sheet.descriptionMapFirst") }),
1360
- /* @__PURE__ */ m("div", { className: "ds:flex ds:items-start ds:justify-between ds:gap-[var(--spacing-sm)] ds:pb-[var(--spacing-sm)]", children: [
1361
- /* @__PURE__ */ t(I.Title, { className: "type-title-card ds:m-0 ds:text-[var(--foreground)]", children: T("practiceResults.sheet.title", {
1426
+ onEscapeKeyDown: (k) => k.preventDefault(),
1427
+ onPointerDownOutside: (k) => k.preventDefault(),
1428
+ onInteractOutside: (k) => k.preventDefault(),
1429
+ children: /* @__PURE__ */ p(_.Body, { children: [
1430
+ /* @__PURE__ */ t(_.Description, { className: "ds:sr-only", children: T("practiceResults.sheet.descriptionMapFirst") }),
1431
+ /* @__PURE__ */ p("div", { className: "ds:flex ds:items-start ds:justify-between ds:gap-[var(--spacing-sm)] ds:pb-[var(--spacing-sm)]", children: [
1432
+ /* @__PURE__ */ t(_.Title, { className: "type-title-card ds:m-0 ds:text-[var(--foreground)]", children: T("practiceResults.sheet.title", {
1362
1433
  count: e.totalCount ?? n.length
1363
1434
  }) }),
1364
1435
  /* @__PURE__ */ t(
1365
- wt,
1436
+ Tt,
1366
1437
  {
1367
1438
  value: P,
1368
1439
  onChange: q
@@ -1370,20 +1441,20 @@ function kt(e) {
1370
1441
  )
1371
1442
  ] }),
1372
1443
  /* @__PURE__ */ t("div", { className: "ds:pb-[var(--spacing-sm)]", children: /* @__PURE__ */ t(
1373
- de,
1444
+ ue,
1374
1445
  {
1375
- value: M.sort ?? "relevance",
1376
- onChange: (w) => z({ ...M, sort: w })
1446
+ value: w.sort ?? "relevance",
1447
+ onChange: (k) => I({ ...w, sort: k })
1377
1448
  }
1378
1449
  ) }),
1379
- K
1450
+ H
1380
1451
  ] })
1381
1452
  }
1382
1453
  ) })
1383
1454
  ] })
1384
1455
  ) });
1385
1456
  }
1386
- function Ct(e) {
1457
+ function zt(e) {
1387
1458
  const {
1388
1459
  results: n,
1389
1460
  apiKey: s,
@@ -1392,35 +1463,37 @@ function Ct(e) {
1392
1463
  loadingSkeletons: a,
1393
1464
  emptyResultsSlot: c,
1394
1465
  errorSlot: d,
1395
- error: o,
1396
- onRetry: g,
1397
- highlightedId: l,
1398
- onCardHover: p,
1399
- listContainerRef: h
1400
- } = e, x = o ? d ?? /* @__PURE__ */ t(ge, { onRetry: g }) : n.length === 0 && !a ? c ?? /* @__PURE__ */ t(he, {}) : /* @__PURE__ */ t(
1401
- me,
1466
+ error: l,
1467
+ onRetry: u,
1468
+ highlightedId: o,
1469
+ onCardHover: m,
1470
+ listContainerRef: f
1471
+ } = e, x = l ? d ?? /* @__PURE__ */ t(ve, { onRetry: u }) : n.length === 0 && !a ? c ?? /* @__PURE__ */ t(ge, {}) : /* @__PURE__ */ t(
1472
+ fe,
1402
1473
  {
1403
1474
  results: n,
1404
- highlightedId: l,
1405
- onCardHover: p,
1475
+ highlightedId: o,
1476
+ onCardHover: m,
1406
1477
  onCardSelect: e.onCardSelect,
1407
1478
  onCardOpenClick: e.onCardOpenClick,
1479
+ onCardBookClick: e.onCardBookClick,
1408
1480
  openLabel: e.openLabel,
1481
+ bookLabel: e.bookLabel,
1409
1482
  formatNextSlot: e.formatNextSlot,
1410
1483
  onLoadMore: r,
1411
1484
  loadingMore: i,
1412
1485
  loadingSkeletons: a,
1413
1486
  density: "rich",
1414
1487
  apiKey: s,
1415
- containerRef: h
1488
+ containerRef: f
1416
1489
  }
1417
1490
  );
1418
- return /* @__PURE__ */ m("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]", children: [
1419
- /* @__PURE__ */ t(fe, { variantBodyProps: e }),
1491
+ return /* @__PURE__ */ p("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]", children: [
1492
+ /* @__PURE__ */ t(he, { variantBodyProps: e }),
1420
1493
  x
1421
1494
  ] });
1422
1495
  }
1423
- const St = Ze(function({
1496
+ const Ft = tt(function({
1424
1497
  variant: n = "split-list-map",
1425
1498
  results: s,
1426
1499
  totalCount: r,
@@ -1428,196 +1501,209 @@ const St = Ze(function({
1428
1501
  facets: a,
1429
1502
  googleMapsApiKey: c,
1430
1503
  mapId: d,
1431
- defaultZoom: o = ot,
1432
- onBoundsChange: g,
1433
- consentGranted: l,
1434
- onConsentRequest: p,
1435
- skipConsentGate: h = !1,
1504
+ defaultZoom: l = gt,
1505
+ onBoundsChange: u,
1506
+ consentGranted: o,
1507
+ onConsentRequest: m,
1508
+ skipConsentGate: f = !1,
1436
1509
  onLoadMore: x,
1437
- loadingMore: v,
1438
- value: u,
1439
- onChange: f,
1440
- onResultSelect: y,
1441
- loading: N,
1442
- emptyResultsSlot: R,
1443
- errorSlot: A,
1444
- error: M,
1445
- onRetry: z,
1510
+ loadingMore: b,
1511
+ value: y,
1512
+ onChange: h,
1513
+ onResultSelect: g,
1514
+ loading: R,
1515
+ emptyResultsSlot: M,
1516
+ errorSlot: S,
1517
+ error: w,
1518
+ onRetry: I,
1446
1519
  heading: T,
1447
1520
  intro: P,
1448
1521
  cardOpenButtonLabel: q,
1449
- "aria-label": U,
1450
- id: O,
1522
+ cardBookButtonLabel: U,
1523
+ "aria-label": G,
1524
+ id: H,
1451
1525
  className: K,
1452
- ...S
1453
- }, ne) {
1454
- const { t: w, i18n: ve } = C(), [He, Q] = pe(null), X = _(/* @__PURE__ */ new Set()), ae = _(/* @__PURE__ */ new Set()), $e = _(null), se = _(null), ie = D(
1526
+ ...Z
1527
+ }, k) {
1528
+ const { t: ae, i18n: be } = C(), [Oe, J] = me(null), X = A(/* @__PURE__ */ new Set()), se = A(/* @__PURE__ */ new Set()), Ke = A(null), ie = A(null), re = O(
1455
1529
  () => ({
1456
1530
  getVariant: () => n,
1457
- scrollToResult: (b) => {
1458
- const F = se.current;
1459
- if (!F) return;
1460
- const k = F.querySelector(
1461
- `[data-component="practice-result-card"][data-result-id="${CSS.escape(b)}"]`
1531
+ scrollToResult: (v) => {
1532
+ const z = ie.current;
1533
+ if (!z) return;
1534
+ const N = z.querySelector(
1535
+ `[data-component="practice-result-card"][data-result-id="${CSS.escape(v)}"]`
1462
1536
  );
1463
- k && (k.scrollIntoView({ behavior: "smooth", block: "nearest" }), Q(b));
1537
+ N && (N.scrollIntoView({ behavior: "smooth", block: "nearest" }), J(v));
1464
1538
  },
1465
- focusPin: (b) => {
1466
- Q(b);
1539
+ focusPin: (v) => {
1540
+ J(v);
1467
1541
  }
1468
1542
  }),
1469
1543
  [n]
1470
1544
  );
1471
- Qe(ne, () => ie, [ie]), tt(rt, ie, O);
1472
- const Le = q ?? w("practiceResults.card.open"), De = B(
1473
- (b) => {
1474
- if (b.nextAvailableSlot)
1545
+ nt(k, () => re, [re]), lt(ht, re, H);
1546
+ const Ve = q ?? ae("practiceResults.card.open"), Ee = U ?? ae("practiceResults.card.book"), je = B(
1547
+ (v) => {
1548
+ if (v.nextAvailableSlot)
1475
1549
  try {
1476
- return new Intl.DateTimeFormat(ve.language, {
1550
+ return new Intl.DateTimeFormat(be.language, {
1477
1551
  weekday: "short",
1478
1552
  hour: "numeric",
1479
1553
  minute: "numeric"
1480
- }).format(new Date(b.nextAvailableSlot.dateTime));
1554
+ }).format(new Date(v.nextAvailableSlot.dateTime));
1481
1555
  } catch {
1482
- return b.nextAvailableSlot.dateTime;
1556
+ return v.nextAvailableSlot.dateTime;
1483
1557
  }
1484
1558
  },
1485
- [ve.language]
1486
- ), be = _(null);
1487
- J(() => {
1488
- be.current !== n && (be.current = n, H("serp_variant_exposed", {
1559
+ [be.language]
1560
+ ), ye = A(null);
1561
+ W(() => {
1562
+ ye.current !== n && (ye.current = n, F("serp_variant_exposed", {
1489
1563
  variant: n,
1490
1564
  totalCount: r ?? s.length
1491
- }), X.current = /* @__PURE__ */ new Set(), ae.current = /* @__PURE__ */ new Set());
1565
+ }), X.current = /* @__PURE__ */ new Set(), se.current = /* @__PURE__ */ new Set());
1492
1566
  }, [n]);
1493
- const re = _(!1), oe = D(
1494
- () => dt(a ?? [], s, u.facets),
1495
- [a, s, u.facets]
1496
- ), le = u.sort ?? (i ? "distance" : "relevance"), j = D(() => {
1497
- const b = ut(s, u.facets, oe);
1498
- return pt(b, le, i);
1499
- }, [s, u.facets, oe, le, i]);
1500
- J(() => {
1501
- const b = j.length === 0;
1502
- b && !re.current ? (H("serp_empty_results", {
1503
- appliedFacets: u.facets ?? {}
1504
- }), re.current = !0) : b || (re.current = !1);
1505
- }, [j.length, u.facets]);
1506
- const E = _(null), xe = _(null);
1507
- J(
1567
+ const oe = A(!1), le = O(
1568
+ () => yt(a ?? [], s, y.facets),
1569
+ [a, s, y.facets]
1570
+ ), ce = y.sort ?? (i ? "distance" : "relevance"), L = O(() => {
1571
+ const v = xt(s, y.facets, le);
1572
+ return kt(v, ce, i);
1573
+ }, [s, y.facets, le, ce, i]);
1574
+ W(() => {
1575
+ const v = L.length === 0;
1576
+ v && !oe.current ? (F("serp_empty_results", {
1577
+ appliedFacets: y.facets ?? {}
1578
+ }), oe.current = !0) : v || (oe.current = !1);
1579
+ }, [L.length, y.facets]);
1580
+ const V = A(null), xe = A(null);
1581
+ W(
1508
1582
  () => () => {
1509
- E.current && clearTimeout(E.current);
1583
+ V.current && clearTimeout(V.current);
1510
1584
  },
1511
1585
  []
1512
1586
  );
1513
- const Oe = B((b) => {
1514
- Q(b), !X.current.has(b) && (xe.current === b && E.current || (E.current && clearTimeout(E.current), xe.current = b, E.current = setTimeout(() => {
1515
- X.current.has(b) || (X.current.add(b), H("serp_result_hovered_card", { resultId: b })), E.current = null;
1587
+ const qe = B((v) => {
1588
+ J(v), !X.current.has(v) && (xe.current === v && V.current || (V.current && clearTimeout(V.current), xe.current = v, V.current = setTimeout(() => {
1589
+ X.current.has(v) || (X.current.add(v), F("serp_result_hovered_card", { resultId: v })), V.current = null;
1516
1590
  }, 500)));
1517
- }, []), je = B((b) => {
1518
- Q(b);
1519
- const F = se.current;
1520
- if (!F) return;
1521
- const k = F.querySelector(
1522
- `[data-component="practice-result-card"][data-result-id="${CSS.escape(b)}"]`
1591
+ }, []), Ue = B((v) => {
1592
+ J(v);
1593
+ const z = ie.current;
1594
+ if (!z) return;
1595
+ const N = z.querySelector(
1596
+ `[data-component="practice-result-card"][data-result-id="${CSS.escape(v)}"]`
1523
1597
  );
1524
- k == null || k.scrollIntoView({ behavior: "smooth", block: "nearest" });
1525
- }, []), Be = B((b) => {
1526
- ae.current.has(b) || (ae.current.add(b), H("serp_result_hovered_pin", { resultId: b }));
1527
- }, []), ye = _(null), Ke = B(
1528
- (b) => {
1529
- Q(b);
1530
- const F = j.find((k) => k.id === b);
1531
- if (F) {
1532
- if (F.location) {
1533
- const k = ye.current;
1534
- k == null || k.panTo({
1535
- lat: F.location.lat,
1536
- lng: F.location.lng
1537
- }), k == null || k.setZoom(16);
1598
+ N == null || N.scrollIntoView({ behavior: "smooth", block: "nearest" });
1599
+ }, []), Ge = B((v) => {
1600
+ se.current.has(v) || (se.current.add(v), F("serp_result_hovered_pin", { resultId: v }));
1601
+ }, []), ke = A(null), Ze = B(
1602
+ (v) => {
1603
+ J(v);
1604
+ const z = L.find((N) => N.id === v);
1605
+ if (z) {
1606
+ if (z.location) {
1607
+ const N = ke.current;
1608
+ N == null || N.panTo({
1609
+ lat: z.location.lat,
1610
+ lng: z.location.lng
1611
+ }), N == null || N.setZoom(16);
1538
1612
  }
1539
- W(j, b, "card", y);
1613
+ Q(L, v, "card", g);
1540
1614
  }
1541
1615
  },
1542
- [j, y]
1543
- ), Ee = B(
1544
- (b) => {
1545
- W(
1546
- j,
1547
- b,
1616
+ [L, g]
1617
+ ), Qe = B(
1618
+ (v) => {
1619
+ Q(
1620
+ L,
1621
+ v,
1548
1622
  "open-button",
1549
- y
1623
+ g
1624
+ );
1625
+ },
1626
+ [L, g]
1627
+ ), Je = B(
1628
+ (v) => {
1629
+ Q(
1630
+ L,
1631
+ v,
1632
+ "book-button",
1633
+ g
1550
1634
  );
1551
1635
  },
1552
- [j, y]
1553
- ), Ve = !!N && s.length === 0, ce = {
1554
- results: j,
1636
+ [L, g]
1637
+ ), We = !!R && s.length === 0, de = {
1638
+ results: L,
1555
1639
  totalCount: r,
1556
1640
  searchCentre: i,
1557
- facets: oe,
1558
- value: { ...u, sort: le },
1559
- onChange: f,
1560
- onResultSelect: y,
1641
+ facets: le,
1642
+ value: { ...y, sort: ce },
1643
+ onChange: h,
1644
+ onResultSelect: g,
1561
1645
  onLoadMore: x,
1562
- loadingMore: v,
1646
+ loadingMore: b,
1563
1647
  apiKey: c,
1564
1648
  mapId: d,
1565
- zoom: o,
1649
+ zoom: l,
1566
1650
  // 0.31.4: when `skipConsentGate` is true the kit synthesises
1567
1651
  // `consentGranted=true` for every internal MapView; the consumer's
1568
1652
  // CMP at the page level is responsible for whether the Google Maps
1569
1653
  // loader script is present at all. `onConsentRequest` is dropped
1570
1654
  // because no placeholder renders — nothing to fire it from.
1571
- consentGranted: h ? !0 : l,
1572
- onConsentRequest: h ? void 0 : p,
1573
- onBoundsChange: g,
1574
- loadingSkeletons: Ve,
1575
- emptyResultsSlot: R,
1576
- errorSlot: A,
1577
- error: M,
1578
- onRetry: z,
1655
+ consentGranted: f ? !0 : o,
1656
+ onConsentRequest: f ? void 0 : m,
1657
+ onBoundsChange: u,
1658
+ loadingSkeletons: We,
1659
+ emptyResultsSlot: M,
1660
+ errorSlot: S,
1661
+ error: w,
1662
+ onRetry: I,
1579
1663
  heading: T,
1580
1664
  intro: P,
1581
- highlightedId: He,
1582
- onCardHover: Oe,
1583
- onPinClick: je,
1584
- onPinFirstInteract: Be,
1585
- onCardSelect: Ke,
1586
- onCardOpenClick: Ee,
1587
- openLabel: Le,
1588
- formatNextSlot: De,
1589
- listContainerRef: $e,
1590
- mapHandleRef: ye
1591
- }, qe = (() => {
1665
+ highlightedId: Oe,
1666
+ onCardHover: qe,
1667
+ onPinClick: Ue,
1668
+ onPinFirstInteract: Ge,
1669
+ onCardSelect: Ze,
1670
+ onCardOpenClick: Qe,
1671
+ onCardBookClick: Je,
1672
+ openLabel: Ve,
1673
+ bookLabel: Ee,
1674
+ formatNextSlot: je,
1675
+ listContainerRef: Ke,
1676
+ mapHandleRef: ke
1677
+ }, Xe = (() => {
1592
1678
  switch (n) {
1593
1679
  case "map-first":
1594
- return /* @__PURE__ */ t(kt, { ...ce });
1680
+ return /* @__PURE__ */ t(Lt, { ...de });
1595
1681
  case "rich-cards":
1596
- return /* @__PURE__ */ t(Ct, { ...ce });
1682
+ return /* @__PURE__ */ t(zt, { ...de });
1597
1683
  case "split-list-map":
1598
1684
  default:
1599
- return /* @__PURE__ */ t(yt, { ...ce });
1685
+ return /* @__PURE__ */ t(_t, { ...de });
1600
1686
  }
1601
- })(), Ue = U ?? w("practiceResults.regionLabel");
1687
+ })(), Ye = G ?? ae("practiceResults.regionLabel");
1602
1688
  return /* @__PURE__ */ t(
1603
1689
  "div",
1604
1690
  {
1605
- ref: se,
1691
+ ref: ie,
1606
1692
  role: "region",
1607
- "aria-label": Ue,
1608
- id: O,
1693
+ "aria-label": Ye,
1694
+ id: H,
1609
1695
  "data-component": "practice-results",
1610
- "data-component-id": O,
1696
+ "data-component-id": H,
1611
1697
  "data-variant": n,
1612
- className: mt({ variant: n, className: K }),
1613
- ...S,
1614
- children: qe
1698
+ className: wt({ variant: n, className: K }),
1699
+ ...Z,
1700
+ children: Xe
1615
1701
  }
1616
1702
  );
1617
1703
  });
1618
- St.displayName = "PracticeResults";
1704
+ Ft.displayName = "PracticeResults";
1619
1705
  export {
1620
- St as P,
1621
- rt as p
1706
+ Ft as P,
1707
+ ht as p
1622
1708
  };
1623
- //# sourceMappingURL=practice-results-F_Rf7c4H.js.map
1709
+ //# sourceMappingURL=practice-results-BEsAdW-B.js.map