@loczer/storefront-sdk 0.218.0 → 0.219.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 (53) hide show
  1. package/dist/components/BookingFlowPageLayout/index.d.ts +13 -0
  2. package/dist/components/BookingFlowPageLayout/index.d.ts.map +1 -0
  3. package/dist/components/BookingFlowPageLayout/index.js +35 -0
  4. package/dist/components/BookingPeriodSelector/components/BookingEndDateField.d.ts.map +1 -1
  5. package/dist/components/BookingPeriodSelector/components/BookingEndDateField.js +10 -33
  6. package/dist/components/BookingPeriodSelector/components/BookingStartDateField.d.ts.map +1 -1
  7. package/dist/components/BookingPeriodSelector/components/BookingStartDateField.js +1 -4
  8. package/dist/components/BookingPeriodSelector/index.d.ts +1 -1
  9. package/dist/components/BookingPeriodSelector/index.d.ts.map +1 -1
  10. package/dist/components/BookingPeriodSelector/useBookingPeriodController.d.ts +0 -5
  11. package/dist/components/BookingPeriodSelector/useBookingPeriodController.d.ts.map +1 -1
  12. package/dist/components/BookingPeriodSelector/useBookingPeriodController.js +150 -159
  13. package/dist/components/Footer/BusinessHours.d.ts +2 -1
  14. package/dist/components/Footer/BusinessHours.d.ts.map +1 -1
  15. package/dist/components/Footer/BusinessHours.js +19 -18
  16. package/dist/components/Footer/businessHoursStatus.d.ts +25 -0
  17. package/dist/components/Footer/businessHoursStatus.d.ts.map +1 -0
  18. package/dist/components/Footer/businessHoursStatus.js +99 -0
  19. package/dist/components/Footer/businessHoursUtils.d.ts +2 -1
  20. package/dist/components/Footer/businessHoursUtils.d.ts.map +1 -1
  21. package/dist/components/Footer/businessHoursUtils.js +52 -45
  22. package/dist/components/Footer/index.d.ts +2 -1
  23. package/dist/components/Footer/index.d.ts.map +1 -1
  24. package/dist/components/Footer/index.js +26 -25
  25. package/dist/components/Layout/index.d.ts.map +1 -1
  26. package/dist/components/Layout/index.js +2 -1
  27. package/dist/components/StorefrontCancellationPolicyNotice/index.d.ts.map +1 -1
  28. package/dist/components/StorefrontCancellationPolicyNotice/index.js +89 -86
  29. package/dist/components/StorefrontCartPanel/index.js +4 -4
  30. package/dist/components/StorefrontInsuranceNotice/index.d.ts +2 -1
  31. package/dist/components/StorefrontInsuranceNotice/index.d.ts.map +1 -1
  32. package/dist/components/StorefrontInsuranceNotice/index.js +155 -162
  33. package/dist/i18n/en.d.ts +7 -1
  34. package/dist/i18n/en.d.ts.map +1 -1
  35. package/dist/i18n/en.js +8 -2
  36. package/dist/i18n/fr.d.ts +7 -1
  37. package/dist/i18n/fr.d.ts.map +1 -1
  38. package/dist/i18n/fr.js +8 -2
  39. package/dist/index.d.ts +24 -9
  40. package/dist/index.js +66 -66
  41. package/dist/lib/pricing.d.ts.map +1 -1
  42. package/dist/lib/pricing.js +3 -1
  43. package/dist/lib/products.d.ts +6 -0
  44. package/dist/lib/products.d.ts.map +1 -1
  45. package/dist/lib/products.js +36 -32
  46. package/dist/pages/BookingPage.d.ts.map +1 -1
  47. package/dist/pages/BookingPage.js +306 -335
  48. package/dist/pages/CheckoutPage.d.ts.map +1 -1
  49. package/dist/pages/CheckoutPage.js +154 -168
  50. package/dist/pages/HomePage.d.ts.map +1 -1
  51. package/dist/pages/HomePage.js +435 -378
  52. package/dist/storefront.css +1 -1
  53. package/package.json +1 -1
@@ -49,21 +49,21 @@ var ae = (e) => e, oe = {
49
49
  }
50
50
  return null;
51
51
  }, _ = (ne) => {
52
- let { startDate: m, onStartDateChange: re, startTime: h, onStartTimeChange: ie, endDate: g, onEndDateChange: _, endTime: v, onEndTimeChange: fe, onEndDateCommit: pe, onEndTimeCommit: me, errors: he = {}, labels: ge, t: _e = ae, language: ve, labelClassName: ye, inputClassName: be, buttonClassName: xe, bookingPeriodConfig: y, fetchTimeSlots: b, onTimeSlotsAvailabilityChange: Se, onTimeSlotsConfirmationChange: Ce, selectionFlow: x = "chained-times", withMobileDateDrawer: we = !1, currencyCode: Te = "EUR", disableAutomaticTimeCorrection: S = !1, openDatePickerOnFocus: Ee = !0, startTimeOptions: C = [], endTimeOptions: De, locale: Oe, localeCode: ke } = ne, w = te("(max-width: 767px)"), T = ke ?? ve ?? "en-US", Ae = d(() => se({
53
- locale: Oe,
54
- localeCode: T
55
- }), [Oe, T]), E = d(() => y ? t(y) : null, [y]), D = d(() => y?.timing.slotIntervalMinutes ? y.timing.slotIntervalMinutes : ce(C) ?? 30, [y?.timing.slotIntervalMinutes, C]), [je, O] = p(!1), [Me, Ne] = p(!1), [Pe, k] = p(!1), [Fe, Ie] = p(!1), [Le, Re] = p(void 0), [ze, Be] = p(!1), [Ve, He] = p(!1), [Ue, We] = p([]), [Ge, A] = p(void 0), [Ke, qe] = p(void 0), [Je, Ye] = p(0), [Xe, Ze] = p([]), [j, Qe] = p(void 0), [$e, et] = p(void 0), [tt, nt] = p(0), M = f(null), rt = f(0), it = f(0), at = f(0), ot = f(void 0), N = f(void 0), st = f(b);
56
- st.current = b;
57
- let P = !!b, ct = l(() => {
58
- Re(void 0);
52
+ let { startDate: m, onStartDateChange: re, startTime: h, onStartTimeChange: ie, endDate: g, onEndDateChange: _, endTime: v, onEndTimeChange: fe, onEndDateCommit: y, onEndTimeCommit: pe, errors: me = {}, labels: he, t: ge = ae, language: _e, labelClassName: ve, inputClassName: ye, buttonClassName: be, bookingPeriodConfig: b, fetchTimeSlots: x, onTimeSlotsAvailabilityChange: xe, onTimeSlotsConfirmationChange: Se, withMobileDateDrawer: Ce = !1, currencyCode: we = "EUR", disableAutomaticTimeCorrection: S = !1, openDatePickerOnFocus: Te = !0, startTimeOptions: C = [], endTimeOptions: Ee, locale: De, localeCode: Oe } = ne, w = te("(max-width: 767px)"), ke = Oe ?? _e ?? "en-US", Ae = d(() => se({
53
+ locale: De,
54
+ localeCode: ke
55
+ }), [De, ke]), T = d(() => b ? t(b) : null, [b]), E = d(() => b?.timing.slotIntervalMinutes ? b.timing.slotIntervalMinutes : ce(C) ?? 30, [b?.timing.slotIntervalMinutes, C]), [je, Me] = p(!1), [Ne, Pe] = p(!1), [Fe, D] = p(!1), [Ie, Le] = p(!1), [Re, ze] = p(void 0), [Be, Ve] = p(!1), [He, Ue] = p(!1), [We, O] = p([]), [Ge, k] = p(void 0), [Ke, A] = p(void 0), [qe, Je] = p(0), [Ye, Xe] = p([]), [j, Ze] = p(void 0), [Qe, $e] = p(void 0), [et, tt] = p(0), M = f(null), nt = f(0), rt = f(0), it = f(0), at = f(void 0), N = f(void 0), ot = f(x);
56
+ ot.current = x;
57
+ let P = !!x, st = l(() => {
58
+ ze(void 0);
59
59
  }, []), F = d(() => !m || !g ? !1 : c(g, m) === 0, [m, g]), I = d(() => o(h), [h]), L = l((e) => {
60
60
  let t = (e instanceof Date ? e : e ? new Date(e) : void 0) ?? /* @__PURE__ */ new Date();
61
- return E ? n(t, E.timeZone) ?? void 0 : `${t.getFullYear()}-${String(t.getMonth() + 1).padStart(2, "0")}-${String(t.getDate()).padStart(2, "0")}`;
62
- }, [E]), R = d(() => L(m), [m, L]), z = d(() => L(g ?? m), [
61
+ return T ? n(t, T.timeZone) ?? void 0 : `${t.getFullYear()}-${String(t.getMonth() + 1).padStart(2, "0")}-${String(t.getDate()).padStart(2, "0")}`;
62
+ }, [T]), R = d(() => L(m), [m, L]), z = d(() => L(g ?? m), [
63
63
  g,
64
64
  m,
65
65
  L
66
- ]), lt = f(R), ut = E ? i(/* @__PURE__ */ new Date(), E.timeZone) : null, B = ut?.dateString, V = ut?.minutesFromMidnight, H = d(() => B ? !!(m && R && R === B) : !!m && c(m, /* @__PURE__ */ new Date()) === 0, [
66
+ ]), ct = f(R), lt = T ? i(/* @__PURE__ */ new Date(), T.timeZone) : null, B = lt?.dateString, V = lt?.minutesFromMidnight, H = d(() => B ? !!(m && R && R === B) : !!m && c(m, /* @__PURE__ */ new Date()) === 0, [
67
67
  m,
68
68
  R,
69
69
  B
@@ -71,11 +71,11 @@ var ae = (e) => e, oe = {
71
71
  g,
72
72
  z,
73
73
  B
74
- ]), dt = d(() => {
74
+ ]), ut = d(() => {
75
75
  if (B) return e(B);
76
76
  let t = /* @__PURE__ */ new Date();
77
77
  return t.setHours(0, 0, 0, 0), t;
78
- }, [B]), W = y?.timing.minBufferMinutes ?? 10, G = d(() => {
78
+ }, [B]), W = b?.timing.minBufferMinutes ?? 10, G = d(() => {
79
79
  if (!H && !U) return null;
80
80
  if (V != null) return V + W;
81
81
  let e = /* @__PURE__ */ new Date();
@@ -85,132 +85,132 @@ var ae = (e) => e, oe = {
85
85
  U,
86
86
  H,
87
87
  W
88
- ]), ft = d(() => H ? G : null, [G, H]), pt = l((e) => {
89
- if (!E) return;
88
+ ]), dt = d(() => H ? G : null, [G, H]), ft = l((e) => {
89
+ if (!T) return;
90
90
  let t = L(e);
91
- if (!t) return E.defaultEndTime;
92
- let n = r(t), i = E.getLastStartMinutesForWeekday(n, { dateString: t });
93
- return typeof i == "number" ? a(i) : E.defaultEndTime;
94
- }, [E, L]);
91
+ if (!t) return T.defaultEndTime;
92
+ let n = r(t), i = T.getLastStartMinutesForWeekday(n, { dateString: t });
93
+ return typeof i == "number" ? a(i) : T.defaultEndTime;
94
+ }, [T, L]);
95
95
  u(() => {
96
- let e = st.current;
96
+ let e = ot.current;
97
97
  if (!e) return;
98
98
  if (!R) {
99
- We([]), A(void 0), qe(void 0);
99
+ O([]), k(void 0), A(void 0);
100
100
  return;
101
101
  }
102
102
  let t = !0;
103
- return We([]), A(void 0), qe(void 0), e(R, "start").then((e) => {
104
- t && (We(e ?? []), A(R), qe(void 0));
103
+ return O([]), k(void 0), A(void 0), e(R, "start").then((e) => {
104
+ t && (O(e ?? []), k(R), A(void 0));
105
105
  }).catch((e) => {
106
- console.warn("Failed to fetch availability time slots", e), t && (We([]), A(void 0), qe(R));
106
+ console.warn("Failed to fetch availability time slots", e), t && (O([]), k(void 0), A(R));
107
107
  }), () => {
108
108
  t = !1;
109
109
  };
110
110
  }, [
111
111
  P,
112
112
  R,
113
- Je
113
+ qe
114
114
  ]), u(() => {
115
115
  if (!P) return;
116
- let e = ot.current, t = e !== void 0 && e !== z;
117
- ot.current = z, t && z && (N.current = z);
116
+ let e = at.current, t = e !== void 0 && e !== z;
117
+ at.current = z, t && z && (N.current = z);
118
118
  }, [z, P]), u(() => {
119
- let e = st.current;
119
+ let e = ot.current;
120
120
  if (!e) return;
121
121
  if (!z) {
122
- Ze([]), Qe(void 0), et(void 0);
122
+ Xe([]), Ze(void 0), $e(void 0);
123
123
  return;
124
124
  }
125
125
  let t = !0;
126
- return Ze([]), Qe(void 0), et(void 0), e(z, "end").then((e) => {
127
- t && (Ze(e ?? []), Qe(z), et(void 0));
126
+ return Xe([]), Ze(void 0), $e(void 0), e(z, "end").then((e) => {
127
+ t && (Xe(e ?? []), Ze(z), $e(void 0));
128
128
  }).catch((e) => {
129
- console.warn("Failed to fetch availability time slots", e), t && (Ze([]), Qe(void 0), et(z));
129
+ console.warn("Failed to fetch availability time slots", e), t && (Xe([]), Ze(void 0), $e(z));
130
130
  }), () => {
131
131
  t = !1;
132
132
  };
133
133
  }, [
134
134
  z,
135
- tt,
135
+ et,
136
136
  P
137
137
  ]), u(() => {
138
138
  if (!P || typeof window > "u") return;
139
139
  let e = (e) => {
140
- e.persisted && (N.current = z, Ye((e) => e + 1), nt((e) => e + 1));
140
+ e.persisted && (N.current = z, Je((e) => e + 1), tt((e) => e + 1));
141
141
  };
142
142
  return window.addEventListener("pageshow", e), () => window.removeEventListener("pageshow", e);
143
143
  }, [z, P]);
144
- let mt = d(() => b || !y ? null : s(y, { date: R }).startTimeSlots, [
145
- y,
144
+ let pt = d(() => x || !b ? null : s(b, { date: R }).startTimeSlots, [
146
145
  b,
146
+ x,
147
147
  R
148
- ]), ht = d(() => b || !y ? null : s(y, { date: z }).endTimeSlots, [
149
- y,
148
+ ]), mt = d(() => x || !b ? null : s(b, { date: z }).endTimeSlots, [
149
+ b,
150
150
  z,
151
- b
152
- ]), K = d(() => b ? Ge === R ? Ue : [] : y ? mt ?? [] : le(C, D), [
153
- y,
154
- mt,
151
+ x
152
+ ]), K = d(() => x ? Ge === R ? We : [] : b ? pt ?? [] : le(C, E), [
155
153
  b,
156
- Ue,
154
+ pt,
155
+ x,
156
+ We,
157
157
  Ge,
158
158
  R,
159
- D,
159
+ E,
160
160
  C
161
- ]), q = d(() => b ? j === z ? Xe : [] : y ? ht ?? [] : le(De ?? C, D), [
162
- y,
163
- ht,
164
- z,
165
- De,
161
+ ]), q = d(() => x ? j === z ? Ye : [] : b ? mt ?? [] : le(Ee ?? C, E), [
166
162
  b,
167
- Xe,
163
+ mt,
164
+ z,
165
+ Ee,
166
+ x,
167
+ Ye,
168
168
  j,
169
- D,
169
+ E,
170
170
  C
171
- ]), gt = K.some((e) => e.isDisabled ? !1 : !H || G == null || e.startMinutes >= G), _t = q.some((e) => e.isDisabled || U && G != null && e.startMinutes < G ? !1 : !F || I == null || e.startMinutes > I), vt = K.some((e) => e.value !== h || e.isDisabled ? !1 : !H || G == null || e.startMinutes >= G), yt = q.some((e) => !(e.value !== v || e.isDisabled || U && G != null && e.startMinutes < G || F && (I == null || e.startMinutes <= I))), J = b ? Ke === R ? "error" : Ge === R ? "ready" : "loading" : "local", Y = b ? $e === z ? "error" : j === z ? "ready" : "loading" : "local", X = (J === "local" || J === "ready" && gt) && (Y === "local" || Y === "ready" && _t), bt = X && vt && yt, xt = X, St = () => {
172
- Ye((e) => e + 1);
173
- }, Ct = () => {
174
- N.current = z, nt((e) => e + 1);
171
+ ]), ht = K.some((e) => e.isDisabled ? !1 : !H || G == null || e.startMinutes >= G), gt = q.some((e) => e.isDisabled || U && G != null && e.startMinutes < G ? !1 : !F || I == null || e.startMinutes > I), _t = K.some((e) => e.value !== h || e.isDisabled ? !1 : !H || G == null || e.startMinutes >= G), vt = q.some((e) => !(e.value !== v || e.isDisabled || U && G != null && e.startMinutes < G || F && (I == null || e.startMinutes <= I))), J = x ? Ke === R ? "error" : Ge === R ? "ready" : "loading" : "local", Y = x ? Qe === z ? "error" : j === z ? "ready" : "loading" : "local", X = (J === "local" || J === "ready" && ht) && (Y === "local" || Y === "ready" && gt), yt = X && _t && vt, bt = X, xt = () => {
172
+ Je((e) => e + 1);
173
+ }, St = () => {
174
+ N.current = z, tt((e) => e + 1);
175
175
  };
176
176
  u(() => {
177
- Se?.(X);
178
- }, [X, Se]), u(() => {
179
- Ce?.(bt);
180
- }, [bt, Ce]);
177
+ xe?.(X);
178
+ }, [X, xe]), u(() => {
179
+ Se?.(yt);
180
+ }, [yt, Se]);
181
181
  let Z = l((e, t) => {
182
- e !== h && (He(t === "user"), ie(e, { source: t }));
182
+ e !== h && (Ue(t === "user"), ie(e, { source: t }));
183
183
  }, [ie, h]), Q = l((e, t = "auto") => {
184
184
  e !== v && (t !== "user" && e && q.find((t) => t.value === e)?.isExtra || fe(e, { source: t }));
185
185
  }, [
186
186
  q,
187
187
  v,
188
188
  fe
189
- ]), $ = d(() => K.length ? K.find((e) => !(e.isDisabled || ft != null && e.startMinutes < ft)) ?? null : null, [ft, K]);
189
+ ]), $ = d(() => K.length ? K.find((e) => !(e.isDisabled || dt != null && e.startMinutes < dt)) ?? null : null, [dt, K]);
190
190
  u(() => {
191
- !b || !(J === "error" || J === "ready" && !gt) || !h || Z("", "auto");
191
+ !x || !(J === "error" || J === "ready" && !ht) || !h || Z("", "auto");
192
192
  }, [
193
- b,
194
- gt,
193
+ x,
194
+ ht,
195
195
  h,
196
196
  J,
197
197
  Z
198
198
  ]), u(() => {
199
- !b || !(Y === "error" || Y === "ready" && !_t) || !v || Q("");
199
+ !x || !(Y === "error" || Y === "ready" && !gt) || !v || Q("");
200
200
  }, [
201
201
  v,
202
202
  Y,
203
- b,
204
- _t,
203
+ x,
204
+ gt,
205
205
  Q
206
206
  ]), u(() => {
207
- if (S || Ve || !$) return;
208
- let e = lt.current !== R;
209
- (!h || e) && (lt.current = R, h !== $.value && Z($.value, "auto"));
207
+ if (S || He || !$) return;
208
+ let e = ct.current !== R;
209
+ (!h || e) && (ct.current = R, h !== $.value && Z($.value, "auto"));
210
210
  }, [
211
211
  S,
212
212
  $,
213
- Ve,
213
+ He,
214
214
  R,
215
215
  h,
216
216
  Z
@@ -242,7 +242,7 @@ var ae = (e) => e, oe = {
242
242
  Z
243
243
  ]), u(() => {
244
244
  if (S || !q.length) return;
245
- if (b && N.current === z && j === z) {
245
+ if (x && N.current === z && j === z) {
246
246
  N.current = void 0;
247
247
  let e = de(q);
248
248
  if (e && e.value !== v) {
@@ -251,12 +251,12 @@ var ae = (e) => e, oe = {
251
251
  }
252
252
  }
253
253
  let e = o(h), t = o(v), n = v ? q.find((e) => e.value === v) : void 0, r = [];
254
- U && G != null && r.push(G), F && e != null && r.push(e + D);
254
+ U && G != null && r.push(G), F && e != null && r.push(e + E);
255
255
  let i = r.length ? Math.max(...r) : null, a = (e) => {
256
256
  let t = typeof e == "number" ? e : null, n = q.find((e) => !(!ue(e) || t != null && e.startMinutes < t));
257
257
  n && n.value !== v ? Q(n.value) : !n && v && Q("");
258
258
  };
259
- if (b && v && !n) {
259
+ if (x && v && !n) {
260
260
  a(i);
261
261
  return;
262
262
  }
@@ -273,155 +273,146 @@ var ae = (e) => e, oe = {
273
273
  G,
274
274
  z,
275
275
  v,
276
- b,
276
+ x,
277
277
  j,
278
278
  U,
279
279
  F,
280
- D,
280
+ E,
281
281
  h,
282
282
  Q
283
- ]), u(() => (Be(!0), () => {
283
+ ]), u(() => (Ve(!0), () => {
284
284
  M.current != null && clearTimeout(M.current);
285
285
  }), []), u(() => {
286
- Me && je && O(!1);
287
- }, [je, Me]), u(() => {
288
- Fe && Pe && k(!1);
289
- }, [Pe, Fe]);
290
- let wt = l((e) => {
291
- e && rt.current && Date.now() < rt.current || O(e);
286
+ Ne && je && Me(!1);
287
+ }, [je, Ne]), u(() => {
288
+ Ie && Fe && D(!1);
289
+ }, [Fe, Ie]);
290
+ let Ct = l((e) => {
291
+ e && nt.current && Date.now() < nt.current || Me(e);
292
+ }, []), wt = l((e) => {
293
+ e && rt.current && Date.now() < rt.current || D(e);
292
294
  }, []), Tt = l((e) => {
293
- e && it.current && Date.now() < it.current || k(e);
294
- }, []), Et = l((e) => {
295
- e && at.current && Date.now() < at.current || Ie(e);
296
- }, []), Dt = l((e, { openTimePicker: t, openEndDatePicker: n, close: r = !0 } = {}) => {
297
- let i = t ?? x === "chained-times", a = n ?? x === "dates-first";
295
+ e && it.current && Date.now() < it.current || Le(e);
296
+ }, []), Et = l((e, { openEndDatePicker: t, close: n = !0 } = {}) => {
297
+ let r = t ?? !0;
298
298
  if (!e) {
299
- r && O(!1);
299
+ n && Me(!1);
300
300
  return;
301
301
  }
302
- (!m || !ee(e, m)) && re(e), (r || a) && (rt.current = Date.now() + 250, O(!1)), g && e > g && _(e), i && Ne(!0), a && (M.current != null && clearTimeout(M.current), w ? (k(!0), M.current = null) : M.current = setTimeout(() => {
303
- k(!0);
302
+ (!m || !ee(e, m)) && re(e), (n || r) && (nt.current = Date.now() + 250, Me(!1)), g && e > g && _(e), r && (M.current != null && clearTimeout(M.current), w ? (D(!0), M.current = null) : M.current = setTimeout(() => {
303
+ D(!0);
304
304
  }, 100));
305
305
  }, [
306
306
  g,
307
307
  w,
308
308
  _,
309
309
  re,
310
- x,
311
310
  m
312
- ]), Ot = l((e) => {
313
- Z(e, "user"), Ne(!1), M.current != null && clearTimeout(M.current), x === "chained-times" && e && m ? M.current = setTimeout(() => {
314
- k(!0);
315
- }, 100) : M.current = null;
316
- }, [
317
- x,
318
- m,
319
- Z
320
- ]), kt = l((e) => {
311
+ ]), Dt = l((e) => {
312
+ Z(e, "user"), Pe(!1), M.current != null && clearTimeout(M.current), M.current = null;
313
+ }, [Z]), Ot = l((e) => {
321
314
  e && e !== h && Z(e, "user");
322
- }, [h, Z]), At = l((e, { openTimePicker: t, close: n = !0, commit: r = x === "dates-first" && w } = {}) => {
323
- let i = t ?? x === "chained-times", a = v, o = !0;
324
- if (e && x === "dates-first") if (b) {
315
+ }, [h, Z]), kt = l((e, { close: t = !0, commit: n = w } = {}) => {
316
+ let r = v, i = !0;
317
+ if (e) if (x) {
325
318
  let t = L(e);
326
319
  t && (N.current = t);
327
- let n = j === t ? Xe : [], r = [];
328
- if (B ? t === B : c(e, /* @__PURE__ */ new Date()) === 0) if (V != null) r.push(V + W);
320
+ let n = j === t ? Ye : [], a = [];
321
+ if (B ? t === B : c(e, /* @__PURE__ */ new Date()) === 0) if (V != null) a.push(V + W);
329
322
  else {
330
323
  let e = /* @__PURE__ */ new Date();
331
- e.setMinutes(e.getMinutes() + W), r.push(e.getHours() * 60 + e.getMinutes());
324
+ e.setMinutes(e.getMinutes() + W), a.push(e.getHours() * 60 + e.getMinutes());
332
325
  }
333
- m && I != null && c(e, m) === 0 && r.push(I + D);
334
- let i = de(n, r.length ? Math.max(...r) : null);
335
- a = i?.value, o = !!i && xt, a ? Q(a) : v && Q("");
326
+ m && I != null && c(e, m) === 0 && a.push(I + E);
327
+ let o = de(n, a.length ? Math.max(...a) : null);
328
+ r = o?.value, i = !!o && bt, r ? Q(r) : v && Q("");
336
329
  } else {
337
- let t = pt(e);
338
- t && (a = t, Q(t));
330
+ let t = ft(e);
331
+ t && (r = t, Q(t));
339
332
  }
340
- (e ? !g || !ee(e, g) : g != null) && _(e), Re(void 0), n && (!r || o) && (it.current = Date.now() + 250, k(!1)), e && i && Ie(!0), e && r && o && pe && (typeof window > "u" ? pe(e, a) : requestAnimationFrame(() => pe(e, a)));
333
+ (e ? !g || !ee(e, g) : g != null) && _(e), ze(void 0), t && (!n || i) && (rt.current = Date.now() + 250, D(!1)), e && n && i && y && (typeof window > "u" ? y(e, r) : requestAnimationFrame(() => y(e, r)));
341
334
  }, [
342
335
  v,
343
336
  g,
344
- xt,
337
+ bt,
345
338
  V,
346
- b,
347
- Xe,
339
+ x,
340
+ Ye,
348
341
  j,
349
- pt,
342
+ ft,
350
343
  w,
351
344
  W,
352
345
  _,
353
- pe,
354
- x,
355
- D,
346
+ y,
347
+ E,
356
348
  m,
357
349
  I,
358
350
  B,
359
351
  L,
360
352
  Q
361
- ]), jt = l((e) => {
353
+ ]), At = l((e) => {
362
354
  Q(e, "user");
363
- }, [Q]), Mt = l((e) => {
364
- N.current = void 0, Q(e, "user"), at.current = Date.now() + 250, Ie(!1), me && (typeof window > "u" ? me() : requestAnimationFrame(() => {
365
- requestAnimationFrame(me);
355
+ }, [Q]), jt = l((e) => {
356
+ N.current = void 0, Q(e, "user"), it.current = Date.now() + 250, Le(!1), pe && (typeof window > "u" ? pe() : requestAnimationFrame(() => {
357
+ requestAnimationFrame(pe);
366
358
  }));
367
- }, [me, Q]);
359
+ }, [pe, Q]);
368
360
  return {
369
361
  startDate: m,
370
362
  startTime: h,
371
363
  endDate: g,
372
364
  endTime: v,
373
- errors: he,
365
+ errors: me,
374
366
  labels: {
375
367
  ...oe,
376
- ...ge
368
+ ...he
377
369
  },
378
- t: _e,
379
- language: ve ?? T,
380
- labelClassName: ye,
381
- inputClassName: be,
382
- buttonClassName: xe,
383
- currencyCode: Te,
384
- localeCode: T,
385
- slotIntervalMinutes: D,
370
+ t: ge,
371
+ language: _e ?? ke,
372
+ labelClassName: ve,
373
+ inputClassName: ye,
374
+ buttonClassName: be,
375
+ currencyCode: we,
376
+ localeCode: ke,
377
+ slotIntervalMinutes: E,
386
378
  dateLocale: Ae,
387
379
  numberOfMonths: w ? 1 : 2,
388
380
  isMobile: w,
389
- isHydrated: ze,
390
- openDatePickerOnFocus: Ee,
391
- withMobileDateDrawer: we,
392
- selectionFlow: x,
381
+ isHydrated: Be,
382
+ openDatePickerOnFocus: Te,
383
+ withMobileDateDrawer: Ce,
393
384
  isStartDatePopoverOpen: je,
394
- setIsStartDatePopoverOpen: wt,
395
- isStartTimeSelectOpen: Me,
396
- setIsStartTimeSelectOpen: Ne,
397
- isEndDatePopoverOpen: Pe,
398
- setIsEndDatePopoverOpen: Tt,
399
- isEndTimeSelectOpen: Fe,
400
- setIsEndTimeSelectOpen: Et,
401
- hoveredEndDate: Le,
402
- setHoveredEndDate: Re,
403
- resetHoveredEndDate: ct,
385
+ setIsStartDatePopoverOpen: Ct,
386
+ isStartTimeSelectOpen: Ne,
387
+ setIsStartTimeSelectOpen: Pe,
388
+ isEndDatePopoverOpen: Fe,
389
+ setIsEndDatePopoverOpen: wt,
390
+ isEndTimeSelectOpen: Ie,
391
+ setIsEndTimeSelectOpen: Tt,
392
+ hoveredEndDate: Re,
393
+ setHoveredEndDate: ze,
394
+ resetHoveredEndDate: st,
404
395
  startTimeSlots: K,
405
396
  availableEndTimeSlots: q,
406
397
  startTimeSlotsStatus: J,
407
398
  endTimeSlotsStatus: Y,
408
- retryStartTimeSlots: St,
409
- retryEndTimeSlots: Ct,
399
+ retryStartTimeSlots: xt,
400
+ retryEndTimeSlots: St,
410
401
  hasAvailableTimeSlots: X,
411
- hasConfirmedTimeSlots: bt,
412
- canCommitTimeSlots: xt,
402
+ hasConfirmedTimeSlots: yt,
403
+ canCommitTimeSlots: bt,
413
404
  isStartToday: H,
414
405
  isEndToday: U,
415
- minSelectableDate: dt,
406
+ minSelectableDate: ut,
416
407
  earliestMinutesForToday: G,
417
408
  startMinutesValue: I,
418
409
  isSameDaySelection: F,
419
- updateStartTime: kt,
420
- selectStartDate: Dt,
421
- selectStartTime: Ot,
422
- selectEndDate: At,
423
- updateEndTime: jt,
424
- selectEndTime: Mt
410
+ updateStartTime: Ot,
411
+ selectStartDate: Et,
412
+ selectStartTime: Dt,
413
+ selectEndDate: kt,
414
+ updateEndTime: At,
415
+ selectEndTime: jt
425
416
  };
426
417
  };
427
418
  //#endregion
@@ -4,7 +4,8 @@ export type SeasonOption = BusinessHoursSeasonOption;
4
4
  type BusinessHoursProps = {
5
5
  openingHours: StoreOpeningHours;
6
6
  openingHoursOverrides: StoreOpeningOverride[];
7
+ timeZone: string;
7
8
  };
8
- export declare function BusinessHours({ openingHours, openingHoursOverrides }: BusinessHoursProps): import("react/jsx-runtime").JSX.Element | null;
9
+ export declare function BusinessHours({ openingHours, openingHoursOverrides, timeZone }: BusinessHoursProps): import("react/jsx-runtime").JSX.Element | null;
9
10
  export {};
10
11
  //# sourceMappingURL=BusinessHours.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BusinessHours.d.ts","sourceRoot":"","sources":["../../../src/components/Footer/BusinessHours.tsx"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EAC1B,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,sBAAsB,CAAA;AAG7B,MAAM,MAAM,YAAY,GAAG,yBAAyB,CAAA;AAEpD,KAAK,kBAAkB,GAAG;IACxB,YAAY,EAAE,iBAAiB,CAAA;IAC/B,qBAAqB,EAAE,oBAAoB,EAAE,CAAA;CAC9C,CAAA;AAED,wBAAgB,aAAa,CAAC,EAAE,YAAY,EAAE,qBAAqB,EAAE,EAAE,kBAAkB,kDA+FxF"}
1
+ {"version":3,"file":"BusinessHours.d.ts","sourceRoot":"","sources":["../../../src/components/Footer/BusinessHours.tsx"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EAC1B,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,sBAAsB,CAAA;AAG7B,MAAM,MAAM,YAAY,GAAG,yBAAyB,CAAA;AAEpD,KAAK,kBAAkB,GAAG;IACxB,YAAY,EAAE,iBAAiB,CAAA;IAC/B,qBAAqB,EAAE,oBAAoB,EAAE,CAAA;IAC7C,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,wBAAgB,aAAa,CAAC,EAAE,YAAY,EAAE,qBAAqB,EAAE,QAAQ,EAAE,EAAE,kBAAkB,kDAgGlG"}
@@ -4,37 +4,38 @@ import { jsx as r, jsxs as i } from "react/jsx-runtime";
4
4
  import { useTranslation as a } from "react-i18next";
5
5
  import { ChevronDown as o, Clock as s } from "lucide-react";
6
6
  //#region src/components/Footer/BusinessHours.tsx
7
- function c({ openingHours: c, openingHoursOverrides: l }) {
8
- let { t: u, i18n: d } = a(), { seasons: f, defaultSeasonId: p } = e({
7
+ function c({ openingHours: c, openingHoursOverrides: l, timeZone: u }) {
8
+ let { t: d, i18n: f } = a(), { seasons: p, defaultSeasonId: m } = e({
9
9
  openingHours: c,
10
10
  openingHoursOverrides: l,
11
- language: d.language || "en",
12
- closedLabel: u("footer_business_hours_closed"),
13
- formatWeekdayRange: (e, t) => u("footer_business_hours_weekday_range", {
11
+ language: f.language || "en",
12
+ closedLabel: d("footer_business_hours_closed"),
13
+ formatWeekdayRange: (e, t) => d("footer_business_hours_weekday_range", {
14
14
  start: e,
15
15
  end: t
16
16
  }),
17
- formatSeasonRange: (e, t) => u("footer_business_hours_season_range", {
17
+ formatSeasonRange: (e, t) => d("footer_business_hours_season_range", {
18
18
  start: e,
19
19
  end: t
20
- })
21
- }), [m, h] = n(p);
20
+ }),
21
+ timeZone: u
22
+ }), [h, g] = n(m);
22
23
  return t(() => {
23
- if (!f.length) {
24
- m !== null && h(null);
24
+ if (!p.length) {
25
+ h !== null && g(null);
25
26
  return;
26
27
  }
27
- m !== null && (f.some((e) => e.id === m) || h(p));
28
+ h !== null && (p.some((e) => e.id === h) || g(m));
28
29
  }, [
29
- f,
30
30
  p,
31
- m
32
- ]), f.length ? /* @__PURE__ */ r("div", {
31
+ m,
32
+ h
33
+ ]), p.length ? /* @__PURE__ */ r("div", {
33
34
  "data-testid": "footer-business-hours",
34
35
  children: /* @__PURE__ */ r("div", {
35
36
  className: "space-y-2",
36
- children: f.map((e) => {
37
- let t = m === e.id;
37
+ children: p.map((e) => {
38
+ let t = h === e.id;
38
39
  return /* @__PURE__ */ i("section", {
39
40
  "data-testid": `footer-business-hours-season-${e.id}`,
40
41
  children: [/* @__PURE__ */ r("h3", { children: /* @__PURE__ */ i("button", {
@@ -43,7 +44,7 @@ function c({ openingHours: c, openingHoursOverrides: l }) {
43
44
  "data-testid": `footer-business-hours-season-toggle-${e.id}`,
44
45
  "aria-expanded": t,
45
46
  onClick: () => {
46
- h((t) => t === e.id ? null : e.id);
47
+ g((t) => t === e.id ? null : e.id);
47
48
  },
48
49
  children: [/* @__PURE__ */ i("span", {
49
50
  className: "min-w-0",
@@ -56,7 +57,7 @@ function c({ openingHours: c, openingHoursOverrides: l }) {
56
57
  }),
57
58
  /* @__PURE__ */ i("span", {
58
59
  className: "font-medium",
59
- children: [u("footer_business_hours_season_label"), ":"]
60
+ children: [d("footer_business_hours_season_label"), ":"]
60
61
  }),
61
62
  /* @__PURE__ */ r("span", {
62
63
  className: "truncate font-medium text-slate-500",
@@ -0,0 +1,25 @@
1
+ import { StoreOpeningHours, StoreOpeningOverride } from '../../lib/booking-period';
2
+ type BusinessHoursStatusOptions = {
3
+ openingHours: StoreOpeningHours;
4
+ openingHoursOverrides: StoreOpeningOverride[];
5
+ timeZone: string;
6
+ referenceDate?: Date;
7
+ };
8
+ export type BusinessHoursStatus = {
9
+ kind: "open";
10
+ } | {
11
+ kind: "closed";
12
+ nextOpening: {
13
+ date: string;
14
+ daysFromToday: number;
15
+ time: string;
16
+ } | null;
17
+ } | {
18
+ kind: "unknown";
19
+ };
20
+ export declare const getBusinessHoursStatus: ({ openingHours, openingHoursOverrides, timeZone, referenceDate, }: BusinessHoursStatusOptions) => BusinessHoursStatus;
21
+ export declare const formatBusinessHoursTime: (time: string, language: string) => string;
22
+ export declare const formatBusinessHoursWeekday: (dateString: string, language: string) => string;
23
+ export declare const formatBusinessHoursDate: (dateString: string, language: string) => string;
24
+ export {};
25
+ //# sourceMappingURL=businessHoursStatus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"businessHoursStatus.d.ts","sourceRoot":"","sources":["../../../src/components/Footer/businessHoursStatus.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EAC1B,MAAM,0BAA0B,CAAA;AAKjC,KAAK,0BAA0B,GAAG;IAChC,YAAY,EAAE,iBAAiB,CAAA;IAC/B,qBAAqB,EAAE,oBAAoB,EAAE,CAAA;IAC7C,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,IAAI,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAC3B;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IACA,IAAI,EAAE,QAAQ,CAAA;IACd,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,CAAA;QACZ,aAAa,EAAE,MAAM,CAAA;QACrB,IAAI,EAAE,MAAM,CAAA;KACb,GAAG,IAAI,CAAA;CACT,GACC;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAA;AAyFvB,eAAO,MAAM,sBAAsB,GAAI,mEAKpC,0BAA0B,KAAG,mBAkD/B,CAAA;AAED,eAAO,MAAM,uBAAuB,GAAI,MAAM,MAAM,EAAE,UAAU,MAAM,KAAG,MAexE,CAAA;AAED,eAAO,MAAM,0BAA0B,GAAI,YAAY,MAAM,EAAE,UAAU,MAAM,KAAG,MAejF,CAAA;AAED,eAAO,MAAM,uBAAuB,GAAI,YAAY,MAAM,EAAE,UAAU,MAAM,KAAG,MAiB9E,CAAA"}