@loczer/storefront-sdk 0.218.0 → 0.220.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 (59) 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 -10
  40. package/dist/index.js +66 -66
  41. package/dist/lib/checkoutPaymentDecision.d.ts +2 -6
  42. package/dist/lib/checkoutPaymentDecision.d.ts.map +1 -1
  43. package/dist/lib/checkoutPaymentDecision.js +3 -4
  44. package/dist/lib/checkoutSubmit.d.ts +0 -3
  45. package/dist/lib/checkoutSubmit.d.ts.map +1 -1
  46. package/dist/lib/checkoutSubmit.js +41 -43
  47. package/dist/lib/pricing.d.ts.map +1 -1
  48. package/dist/lib/pricing.js +3 -1
  49. package/dist/lib/products.d.ts +6 -0
  50. package/dist/lib/products.d.ts.map +1 -1
  51. package/dist/lib/products.js +36 -32
  52. package/dist/pages/BookingPage.d.ts.map +1 -1
  53. package/dist/pages/BookingPage.js +306 -335
  54. package/dist/pages/CheckoutPage.d.ts.map +1 -1
  55. package/dist/pages/CheckoutPage.js +172 -186
  56. package/dist/pages/HomePage.d.ts.map +1 -1
  57. package/dist/pages/HomePage.js +435 -378
  58. package/dist/storefront.css +1 -1
  59. 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"}