@loczer/storefront-sdk 0.187.0 → 0.189.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 (66) hide show
  1. package/dist/chunks/booking-engine/dist/models/{Product.shared-CTuk4fiR.js → Product.shared-IYOeC3N7.js} +12 -10
  2. package/dist/chunks/booking-engine/dist/schemas/{base-asset-B_Dm8_Vk.js → base-asset-zsUj5_3O.js} +1 -1
  3. package/dist/chunks/booking-engine/dist/schemas/{base-booking-DW8AEPKo.js → base-booking-TzCge_mR.js} +2 -2
  4. package/dist/chunks/booking-engine/dist/schemas/{base-product-1H8l2aUv.js → base-product-DvFFzAcg.js} +1 -1
  5. package/dist/chunks/booking-engine/dist/schemas/{booking-engine-configuration-D02MRF9U.js → booking-engine-configuration-LnrhShqm.js} +4 -1
  6. package/dist/chunks/booking-engine/dist/schemas/{cart-inputs-j1yWfJxO.js → cart-inputs-B0HpcFe5.js} +1 -1
  7. package/dist/chunks/booking-engine/dist/schemas/{public-booking-engine-configuration-BnJ_H-p1.js → public-booking-engine-configuration-CEM9mexX.js} +1 -1
  8. package/dist/chunks/booking-engine/dist/schemas-BNUzqsci.js +13 -0
  9. package/dist/chunks/ui/dist/Map/{MapContent-QPkuTBvK.js → MapContent-PK-ptOx6.js} +126 -94
  10. package/dist/chunks/ui/dist/Map/mapboxError-oRn0l3EE.js +25 -0
  11. package/dist/chunks/ui/dist/{Map-BXmRf5Ep.js → Map-BwXj49kV.js} +1 -1
  12. package/dist/components/BookingBikeVariantDialog/index.d.ts +2 -1
  13. package/dist/components/BookingBikeVariantDialog/index.d.ts.map +1 -1
  14. package/dist/components/BookingBikeVariantDialog/index.js +39 -38
  15. package/dist/components/BookingPeriodSelector/components/BookingEndTimeField.d.ts.map +1 -1
  16. package/dist/components/BookingPeriodSelector/components/BookingEndTimeField.js +32 -30
  17. package/dist/components/BookingPeriodSelector/components/BookingMobileDateDrawer.d.ts.map +1 -1
  18. package/dist/components/BookingPeriodSelector/components/BookingMobileDateDrawer.js +127 -122
  19. package/dist/components/BookingPeriodSelector/components/BookingStartTimeField.d.ts.map +1 -1
  20. package/dist/components/BookingPeriodSelector/components/BookingStartTimeField.js +32 -30
  21. package/dist/components/BookingPeriodSelector/components/BookingTimeSlotsStatus.d.ts +7 -0
  22. package/dist/components/BookingPeriodSelector/components/BookingTimeSlotsStatus.d.ts.map +1 -0
  23. package/dist/components/BookingPeriodSelector/components/BookingTimeSlotsStatus.js +29 -0
  24. package/dist/components/BookingPeriodSelector/index.d.ts +2 -1
  25. package/dist/components/BookingPeriodSelector/index.d.ts.map +1 -1
  26. package/dist/components/BookingPeriodSelector/index.js +15 -14
  27. package/dist/components/BookingPeriodSelector/useBookingPeriodController.d.ts +11 -0
  28. package/dist/components/BookingPeriodSelector/useBookingPeriodController.d.ts.map +1 -1
  29. package/dist/components/BookingPeriodSelector/useBookingPeriodController.js +280 -216
  30. package/dist/components/ContactSection/index.d.ts.map +1 -1
  31. package/dist/components/ContactSection/index.js +120 -116
  32. package/dist/components/Header/index.d.ts.map +1 -1
  33. package/dist/components/Header/index.js +35 -35
  34. package/dist/components/Map/index.js +1 -1
  35. package/dist/components/StorefrontCancellationPolicyNotice/index.d.ts.map +1 -1
  36. package/dist/components/StorefrontCancellationPolicyNotice/index.js +51 -48
  37. package/dist/components/StorefrontInsuranceNotice/index.d.ts +9 -0
  38. package/dist/components/StorefrontInsuranceNotice/index.d.ts.map +1 -0
  39. package/dist/components/StorefrontInsuranceNotice/index.js +191 -0
  40. package/dist/i18n/en.d.ts +24 -0
  41. package/dist/i18n/en.d.ts.map +1 -1
  42. package/dist/i18n/en.js +26 -2
  43. package/dist/i18n/fr.d.ts +24 -0
  44. package/dist/i18n/fr.d.ts.map +1 -1
  45. package/dist/i18n/fr.js +26 -2
  46. package/dist/index.d.ts +91 -0
  47. package/dist/index.js +69 -68
  48. package/dist/lib/booking.js +2 -2
  49. package/dist/lib/checkoutSubmit.js +3 -3
  50. package/dist/lib/fetchStorefrontTimeSlots.d.ts.map +1 -1
  51. package/dist/lib/fetchStorefrontTimeSlots.js +2 -1
  52. package/dist/lib/storefrontProducts.d.ts +16 -0
  53. package/dist/lib/storefrontProducts.d.ts.map +1 -1
  54. package/dist/lib/storefrontProducts.js +27 -22
  55. package/dist/pages/BookingPage.d.ts.map +1 -1
  56. package/dist/pages/BookingPage.js +109 -95
  57. package/dist/pages/CheckoutPage.d.ts.map +1 -1
  58. package/dist/pages/CheckoutPage.js +229 -231
  59. package/dist/pages/HomePage.d.ts.map +1 -1
  60. package/dist/pages/HomePage.js +339 -314
  61. package/dist/pages/ProductPage.d.ts.map +1 -1
  62. package/dist/pages/ProductPage.js +60 -52
  63. package/dist/storefront.css +1 -1
  64. package/dist/storefrontSchemas.js +2 -2
  65. package/package.json +1 -1
  66. package/dist/chunks/booking-engine/dist/schemas-DftrSnTE.js +0 -13
@@ -1,40 +1,42 @@
1
- import { applyBookingParamsToSearch as e, createBookingPeriodConfigFromStorefrontConfiguration as t, getBookingParamsFromSearch as n, getDefaultBookingParamsForStorefrontConfiguration as r, resolveBookingSearchParamsFromSessionStorage as i, writeBookingSearchParamsToSessionStorage as a } from "../lib/booking.js";
1
+ import { BOOKING_SEARCH_KEYS as e, applyBookingParamsToSearch as t, createBookingPeriodConfigFromStorefrontConfiguration as n, getBookingParamsFromSearch as r, getDefaultBookingParamsForStorefrontConfiguration as i, resolveBookingSearchParamsFromSessionStorage as a, writeBookingSearchParamsToSessionStorage as o } from "../lib/booking.js";
2
2
  import { getAvailabilityVariant as ee } from "../lib/utils.js";
3
- import { getLocalizedValue as o } from "../localization.js";
4
- import { buildStorefrontImageUrl as s } from "../lib/storefrontImage.js";
3
+ import { getLocalizedValue as s } from "../localization.js";
4
+ import { buildStorefrontImageUrl as c } from "../lib/storefrontImage.js";
5
5
  import "../lib/storefrontMissingValues.js";
6
- import { Badge as c } from "../ui/badge.js";
7
- import { Button as l } from "../ui/button.js";
8
- import { usePlaygroundDevSettings as u } from "../lib/playgroundDevSettings.js";
9
- import { BookingPeriodProvider as te } from "../components/BookingPeriodSelector/BookingPeriodContext.js";
10
- import { BookingStartDateField as ne } from "../components/BookingPeriodSelector/components/BookingStartDateField.js";
11
- import { BookingStartTimeField as re } from "../components/BookingPeriodSelector/components/BookingStartTimeField.js";
12
- import { BookingEndDateField as ie } from "../components/BookingPeriodSelector/components/BookingEndDateField.js";
13
- import { BookingEndTimeField as ae } from "../components/BookingPeriodSelector/components/BookingEndTimeField.js";
6
+ import { Badge as l } from "../ui/badge.js";
7
+ import { Button as u } from "../ui/button.js";
8
+ import { usePlaygroundDevSettings as te } from "../lib/playgroundDevSettings.js";
9
+ import { BookingPeriodProvider as ne, useBookingPeriod as d } from "../components/BookingPeriodSelector/BookingPeriodContext.js";
10
+ import { BookingStartDateField as re } from "../components/BookingPeriodSelector/components/BookingStartDateField.js";
11
+ import { BookingStartTimeField as ie } from "../components/BookingPeriodSelector/components/BookingStartTimeField.js";
12
+ import { BookingEndDateField as ae } from "../components/BookingPeriodSelector/components/BookingEndDateField.js";
13
+ import { BookingEndTimeField as oe } from "../components/BookingPeriodSelector/components/BookingEndTimeField.js";
14
+ import { BookingTimeSlotsStatus as se } from "../components/BookingPeriodSelector/components/BookingTimeSlotsStatus.js";
14
15
  import "../components/BookingPeriodSelector/index.js";
15
- import { DeliveryAddressSelector as oe } from "../components/DeliveryAddressSelector/index.js";
16
- import { useStorefront as se, useStorefrontProducts as ce } from "../StorefrontProvider.js";
17
- import { ContactSection as le } from "../components/ContactSection/index.js";
18
- import { TestimonialsSection as ue } from "../components/TestimonialsSection/index.js";
19
- import { AboutSection as de } from "../components/AboutSection/index.js";
20
- import { Card as fe } from "../ui/card.js";
21
- import { ProductWarningNotice as pe } from "../components/ProductWarningNotice/index.js";
22
- import { ProductPriceBadge as me } from "../components/ProductPriceBadge/index.js";
23
- import d from "../chunks/assets/playground-hero-preview-kf4c9tSc.js";
24
- import { resolveProductImageContainerStyle as he } from "../lib/productImageStyles.js";
25
- import { BikeProductCard as ge } from "../components/BikeProductCard/index.js";
26
- import { StorefrontCancellationPolicyNotice as _e, resolveStorefrontCancellationPolicyTeaserTier as ve } from "../components/StorefrontCancellationPolicyNotice/index.js";
27
- import { createStorefrontTimeSlotsFetcher as ye } from "../lib/fetchStorefrontTimeSlots.js";
28
- import { FulfillmentSection as be } from "../components/FulfillmentSection/index.js";
29
- import { useEffect as xe, useMemo as f, useRef as Se, useState as p } from "react";
30
- import { Fragment as Ce, jsx as m, jsxs as h } from "react/jsx-runtime";
31
- import { cn as g } from "@rpcbase/ui";
32
- import { useMediaQuery as we } from "@rpcbase/client";
33
- import { Link as _, useLocation as Te, useNavigate as Ee, useParams as De, useSearchParams as Oe } from "@rpcbase/router";
34
- import { useTranslation as ke } from "react-i18next";
35
- import { ArrowRight as v, Bike as Ae, Clock as je, MapPin as Me, ShieldCheck as Ne, Truck as Pe, Umbrella as Fe } from "lucide-react";
16
+ import { DeliveryAddressSelector as ce } from "../components/DeliveryAddressSelector/index.js";
17
+ import { useStorefront as le, useStorefrontProducts as ue } from "../StorefrontProvider.js";
18
+ import { ContactSection as de } from "../components/ContactSection/index.js";
19
+ import { TestimonialsSection as fe } from "../components/TestimonialsSection/index.js";
20
+ import { AboutSection as pe } from "../components/AboutSection/index.js";
21
+ import { Card as me } from "../ui/card.js";
22
+ import { ProductWarningNotice as he } from "../components/ProductWarningNotice/index.js";
23
+ import { ProductPriceBadge as ge } from "../components/ProductPriceBadge/index.js";
24
+ import f from "../chunks/assets/playground-hero-preview-kf4c9tSc.js";
25
+ import { resolveProductImageContainerStyle as _e } from "../lib/productImageStyles.js";
26
+ import { BikeProductCard as ve } from "../components/BikeProductCard/index.js";
27
+ import { StorefrontCancellationPolicyNotice as ye } from "../components/StorefrontCancellationPolicyNotice/index.js";
28
+ import { StorefrontInsuranceNotice as be } from "../components/StorefrontInsuranceNotice/index.js";
29
+ import { createStorefrontTimeSlotsFetcher as xe } from "../lib/fetchStorefrontTimeSlots.js";
30
+ import { FulfillmentSection as Se } from "../components/FulfillmentSection/index.js";
31
+ import { useEffect as Ce, useMemo as p, useRef as we, useState as m } from "react";
32
+ import { Fragment as h, jsx as g, jsxs as _ } from "react/jsx-runtime";
33
+ import { cn as v } from "@rpcbase/ui";
34
+ import { useMediaQuery as Te } from "@rpcbase/client";
35
+ import { Link as y, useLocation as Ee, useNavigate as De, useParams as Oe, useSearchParams as ke } from "@rpcbase/router";
36
+ import { useTranslation as Ae } from "react-i18next";
37
+ import { ArrowRight as b, Bike as je, Clock as Me, MapPin as Ne, ShieldCheck as Pe, Truck as Fe } from "lucide-react";
36
38
  //#region src/pages/HomePage.tsx
37
- var y = (e) => String(e).padStart(2, "0"), b = "text-2xs font-semibold uppercase tracking-wide text-slate-600", x = "h-10", S = 6, C = 5, w = [
39
+ var x = (e) => String(e).padStart(2, "0"), Ie = "text-2xs font-semibold uppercase tracking-wide text-slate-600", Le = "h-10", S = 6, C = 5, w = [
38
40
  15,
39
41
  25,
40
42
  42,
@@ -50,14 +52,26 @@ var y = (e) => String(e).padStart(2, "0"), b = "text-2xs font-semibold uppercase
50
52
  "4 / 3",
51
53
  "9 / 16",
52
54
  "6 / 7"
53
- ], Ie = (e) => `${e.getFullYear()}-${y(e.getMonth() + 1)}-${y(e.getDate())}`, E = (e) => {
55
+ ], Re = ({ buttonRef: e, className: t, label: n, onSubmit: r }) => {
56
+ let { canCommitTimeSlots: i, startTime: a, endTime: o } = d();
57
+ return /* @__PURE__ */ _(u, {
58
+ ref: e,
59
+ className: v("gap-2", t),
60
+ disabled: !i || !a || !o,
61
+ onClick: r,
62
+ children: [/* @__PURE__ */ g("span", { children: n }), /* @__PURE__ */ g(b, {
63
+ className: "h-4 w-4",
64
+ "aria-hidden": "true"
65
+ })]
66
+ });
67
+ }, E = (e) => `${e.getFullYear()}-${x(e.getMonth() + 1)}-${x(e.getDate())}`, D = (e) => {
54
68
  if (!e) return;
55
69
  let t = e.match(/^(\d{4})-(\d{2})-(\d{2})$/);
56
70
  if (!t) return;
57
71
  let n = Number(t[1]), r = Number(t[2]), i = Number(t[3]), a = new Date(n, r - 1, i);
58
72
  if (!(Number.isNaN(a.getTime()) || a.getFullYear() !== n || a.getMonth() !== r - 1 || a.getDate() !== i)) return a;
59
- }, Le = (e) => {
60
- let t = e.length > 0 ? e : [d];
73
+ }, ze = (e) => {
74
+ let t = e.length > 0 ? e : [f];
61
75
  return Array.from({ length: S }, (e, n) => Array.from({ length: C }, (e, r) => {
62
76
  let i = n * C + r;
63
77
  return {
@@ -66,258 +80,269 @@ var y = (e) => String(e).padStart(2, "0"), b = "text-2xs font-semibold uppercase
66
80
  };
67
81
  }));
68
82
  };
69
- function D() {
70
- let { t: d, i18n: y } = ke(), { storeSlug: S } = De(), C = Te(), { storefrontConfiguration: T } = se(), D = T.shop.address?.trim() ?? "", O = T.workspace?.workspaceLanguage, { bikes: k, accessories: Re } = ce(), [A] = Oe(), ze = Ee(), j = f(() => i(A, S), [A, S]), Be = f(() => t(T), [T]), M = f(() => r(T), [T]), N = f(() => E(M.start_date), [M.start_date]), Ve = f(() => E(M.end_date) ?? N, [M.end_date, N]), P = T.settings.fulfillmentModes.includes("delivery"), He = T.settings.deliveryDisabledReason.trim(), Ue = !!ve(T.bookingEngine.cancellationPolicy), F = f(() => n(j, M), [M, j]), [I, We] = p(() => F.fulfillment === "delivery" && P ? "delivery" : "pickup"), [L, Ge] = p(() => E(j.get("start_date")) ?? N), [R, Ke] = p(() => j.get("start_time") ?? M.start_time), [z, qe] = p(() => {
71
- let e = E(j.get("start_date")) ?? N;
72
- return E(j.get("end_date")) ?? e ?? Ve;
73
- }), [B, Je] = p(() => j.get("end_time") ?? M.end_time), [V, H] = p(() => F.start_address), [U, W] = p(() => F.end_address), G = Se(null), Ye = f(() => k.slice(0, 4), [k]), { heroMode: Xe } = u(), Ze = Xe ?? T.content?.heroMode ?? "current_booking_hero", K = Ze === "vertical_marquee_hero", q = Ze === "booking_bar_overlay_hero" || K, Qe = we("(min-width: 1024px)"), $e = ye(S), et = f(() => ({
83
+ function O() {
84
+ let { t: d, i18n: f } = Ae(), { storeSlug: x } = Oe(), S = Ee(), { storefrontConfiguration: C } = le(), T = C.shop.address?.trim() ?? "", O = C.workspace?.workspaceLanguage, { bikes: k, accessories: Be } = ue(), [A, Ve] = ke(), He = De(), j = p(() => a(A, x), [A, x]), Ue = p(() => n(C), [C]), M = p(() => i(C), [C]), N = p(() => D(M.start_date), [M.start_date]), We = p(() => D(M.end_date) ?? N, [M.end_date, N]), P = C.settings.fulfillmentModes.includes("delivery"), F = C.settings.deliveryDisabledReason.trim(), I = p(() => r(j, M), [M, j]), [L, Ge] = m(() => I.fulfillment === "delivery" && P ? "delivery" : "pickup"), [R, Ke] = m(() => D(j.get("start_date")) ?? N), [z, qe] = m(() => j.get("start_time") ?? M.start_time), [B, Je] = m(() => {
85
+ let e = D(j.get("start_date")) ?? N;
86
+ return D(j.get("end_date")) ?? e ?? We;
87
+ }), [V, Ye] = m(() => j.get("end_time") ?? M.end_time), [Xe, Ze] = m(void 0), [H, U] = m(() => I.start_address), [W, G] = m(() => I.end_address), K = we(null), Qe = p(() => k.slice(0, 4), [k]), { heroMode: $e } = te(), et = $e ?? C.content?.heroMode ?? "current_booking_hero", q = et === "vertical_marquee_hero", J = et === "booking_bar_overlay_hero" || q, tt = Te("(min-width: 1024px)"), nt = xe(x), rt = p(() => ({
74
88
  startDate: d("booking_start_date"),
75
89
  pickStartDate: d("booking_start_date"),
76
90
  startTime: d("booking_start_time"),
77
91
  endDate: d("booking_end_date"),
78
92
  pickEndDate: d("booking_end_date"),
79
93
  endTime: d("booking_end_time"),
80
- selectedDaysTooltip: ({ count: e }) => d("booking_selected_days_tooltip", { count: e })
81
- }), [y.language, d]), J = f(() => {
82
- let t = L ?? N ?? /* @__PURE__ */ new Date(), n = z ?? t;
83
- return e(new URLSearchParams(), {
84
- fulfillment: I === "delivery" && P ? "delivery" : "pickup",
85
- start_date: Ie(t),
86
- start_time: R || M.start_time,
87
- end_date: Ie(n),
88
- end_time: B || M.end_time,
89
- start_address: V,
90
- end_address: U
94
+ selectedDaysTooltip: ({ count: e }) => d("booking_selected_days_tooltip", { count: e }),
95
+ timeSlotsLoading: d("booking_time_slots_loading"),
96
+ timeSlotsUnavailable: d("booking_time_slots_unavailable"),
97
+ timeSlotsLoadError: d("booking_time_slots_load_error"),
98
+ retryTimeSlots: d("booking_time_slots_retry")
99
+ }), [f.language, d]), Y = p(() => {
100
+ let e = R ?? N ?? /* @__PURE__ */ new Date(), n = B ?? e;
101
+ return t(new URLSearchParams(), {
102
+ fulfillment: L === "delivery" && P ? "delivery" : "pickup",
103
+ start_date: E(e),
104
+ start_time: z,
105
+ end_date: E(n),
106
+ end_time: V,
107
+ start_address: H,
108
+ end_address: W
91
109
  });
92
110
  }, [
93
- M.end_time,
94
- M.start_time,
95
111
  N,
96
112
  P,
97
- U,
98
- z,
113
+ W,
99
114
  B,
100
- I,
101
115
  V,
102
116
  L,
103
- R
104
- ]), tt = J.toString(), nt = tt ? `?${tt}` : "";
105
- xe(() => {
106
- a(S, J);
107
- }, [J, S]);
108
- let rt = {
109
- startDate: L,
110
- onStartDateChange: Ge,
111
- startTime: R,
112
- onStartTimeChange: Ke,
113
- endDate: z,
114
- onEndDateChange: qe,
115
- endTime: B,
116
- onEndTimeChange: Je,
117
+ H,
118
+ R,
119
+ z
120
+ ]), it = Y.toString(), at = it ? `?${it}` : "";
121
+ Ce(() => {
122
+ o(x, Y);
123
+ }, [Y, x]), Ce(() => {
124
+ let t = new URLSearchParams(A);
125
+ for (let n of e) t.delete(n);
126
+ for (let [e, n] of Y.entries()) t.set(e, n);
127
+ t.toString() !== A.toString() && Ve(t, { replace: !0 });
128
+ }, [
129
+ Y,
130
+ A,
131
+ Ve
132
+ ]);
133
+ let ot = `${R ? E(R) : ""}:${B ? E(B) : ""}`, st = Xe === ot && !!(z && V), ct = {
134
+ startDate: R,
135
+ onStartDateChange: Ke,
136
+ startTime: z,
137
+ onStartTimeChange: qe,
138
+ endDate: B,
139
+ onEndDateChange: Je,
140
+ endTime: V,
141
+ onEndTimeChange: Ye,
117
142
  onEndTimeCommit: () => {
118
- G.current?.focus({ preventScroll: !0 });
143
+ K.current?.focus({ preventScroll: !0 });
144
+ },
145
+ bookingPeriodConfig: Ue,
146
+ fetchTimeSlots: nt,
147
+ onTimeSlotsAvailabilityChange: (e) => {
148
+ Ze(e ? ot : void 0);
119
149
  },
120
- bookingPeriodConfig: Be,
121
- fetchTimeSlots: $e,
122
- labels: et,
123
- localeCode: y.language
124
- }, Y = () => {
150
+ labels: rt,
151
+ localeCode: f.language
152
+ }, X = () => {
153
+ if (!st) return;
125
154
  let e = new URLSearchParams(A);
126
- for (let [t, n] of J.entries()) e.set(t, n);
127
- ze(`/${S ?? ""}/booking?${e.toString()}#booking-products`);
128
- }, it = (e) => `/${S ?? ""}/products/${e}`, X = { backTo: `${C.pathname}${C.search}${C.hash}` }, at = /* @__PURE__ */ h("div", { children: [
129
- /* @__PURE__ */ h("div", {
155
+ for (let [t, n] of Y.entries()) e.set(t, n);
156
+ He(`/${x ?? ""}/booking?${e.toString()}#booking-products`);
157
+ }, lt = (e) => `/${x ?? ""}/products/${e}`, Z = { backTo: `${S.pathname}${S.search}${S.hash}` }, ut = /* @__PURE__ */ _("div", { children: [
158
+ /* @__PURE__ */ _("div", {
130
159
  className: "flex items-center gap-2",
131
- children: [/* @__PURE__ */ h(c, {
160
+ children: [/* @__PURE__ */ _(l, {
132
161
  variant: "secondary",
133
- children: [/* @__PURE__ */ m(je, {
162
+ children: [/* @__PURE__ */ g(Me, {
134
163
  className: "h-3 w-3",
135
164
  "aria-hidden": "true"
136
- }), /* @__PURE__ */ m("span", { children: d("status_open") })]
137
- }), /* @__PURE__ */ h(c, {
165
+ }), /* @__PURE__ */ g("span", { children: d("status_open") })]
166
+ }), /* @__PURE__ */ _(l, {
138
167
  variant: "outline",
139
- className: g(!D && "border-destructive/40 text-destructive"),
140
- children: [/* @__PURE__ */ m(Me, {
168
+ className: v(!T && "border-destructive/40 text-destructive"),
169
+ children: [/* @__PURE__ */ g(Ne, {
141
170
  className: "h-3 w-3",
142
171
  "aria-hidden": "true"
143
- }), /* @__PURE__ */ m("span", { children: D || "[Missing shop address]" })]
172
+ }), /* @__PURE__ */ g("span", { children: T || "[Missing shop address]" })]
144
173
  })]
145
174
  }),
146
- /* @__PURE__ */ m("h1", {
175
+ /* @__PURE__ */ g("h1", {
147
176
  className: "mt-4 text-3xl font-semibold tracking-tight sm:text-4xl",
148
- children: /* @__PURE__ */ m("span", { children: d("hero_title") })
177
+ children: /* @__PURE__ */ g("span", { children: d("hero_title") })
149
178
  }),
150
- /* @__PURE__ */ m("p", {
179
+ /* @__PURE__ */ g("p", {
151
180
  className: "mt-3 text-sm text-slate-700 sm:text-base",
152
- children: /* @__PURE__ */ m("span", { children: d("hero_description") })
181
+ children: /* @__PURE__ */ g("span", { children: d("hero_description") })
153
182
  }),
154
- /* @__PURE__ */ m("div", {
155
- className: g("mt-6", !q && "rounded-xl border bg-white/70 p-3"),
156
- children: /* @__PURE__ */ h("ul", {
157
- className: g("space-y-3", q && "space-y-2"),
183
+ /* @__PURE__ */ g("div", {
184
+ className: v("mt-6", !J && "rounded-xl border bg-white/70 p-3"),
185
+ children: /* @__PURE__ */ _("ul", {
186
+ className: v("space-y-3", J && "space-y-2"),
187
+ "data-testid": "storefront-home-trust-features",
158
188
  children: [
159
- /* @__PURE__ */ m(_e, { policy: T.bookingEngine.cancellationPolicy }),
160
- /* @__PURE__ */ h("li", {
161
- className: g("flex items-start gap-3", !q && Ue && "border-t border-slate-200/70 pt-3"),
162
- children: [/* @__PURE__ */ m(Ne, {
189
+ /* @__PURE__ */ _("li", {
190
+ className: "flex items-start gap-3",
191
+ "data-testid": "storefront-secure-payment-notice",
192
+ children: [/* @__PURE__ */ g(Pe, {
163
193
  className: "mt-0.5 h-5 w-5 text-success",
164
194
  "aria-hidden": "true"
165
- }), /* @__PURE__ */ h("div", {
195
+ }), /* @__PURE__ */ _("div", {
166
196
  className: "flex flex-col gap-0.5",
167
- children: [/* @__PURE__ */ m("p", {
197
+ children: [/* @__PURE__ */ g("p", {
168
198
  className: "text-sm font-medium text-slate-950",
169
- children: /* @__PURE__ */ m("span", { children: d("feature_secure_payment_title") })
170
- }), /* @__PURE__ */ m("p", {
199
+ children: /* @__PURE__ */ g("span", { children: d("feature_secure_payment_title") })
200
+ }), /* @__PURE__ */ g("p", {
171
201
  className: "text-xs text-slate-600",
172
- children: /* @__PURE__ */ m("span", { children: d("feature_secure_payment_description") })
202
+ children: /* @__PURE__ */ g("span", { children: d("feature_secure_payment_description") })
173
203
  })]
174
204
  })]
175
205
  }),
176
- /* @__PURE__ */ h("li", {
177
- className: g("flex items-start gap-3", !q && "border-t border-slate-200/70 pt-3"),
178
- children: [/* @__PURE__ */ m(Fe, {
179
- className: "mt-0.5 h-5 w-5 text-success",
180
- "aria-hidden": "true"
181
- }), /* @__PURE__ */ h("div", {
182
- className: "flex flex-col gap-0.5",
183
- children: [/* @__PURE__ */ m("p", {
184
- className: "text-sm font-medium text-slate-950",
185
- children: /* @__PURE__ */ m("span", { children: d("feature_guarantee_insurance_title") })
186
- }), /* @__PURE__ */ m("p", {
187
- className: "text-xs text-slate-600",
188
- children: /* @__PURE__ */ m("span", { children: d("feature_guarantee_insurance_description") })
189
- })]
190
- })]
206
+ /* @__PURE__ */ g(ye, {
207
+ policy: C.bookingEngine.cancellationPolicy,
208
+ className: v(!J && "border-t border-slate-200/70 pt-3")
191
209
  }),
192
- P ? /* @__PURE__ */ h("li", {
193
- className: g("flex items-start gap-3", !q && "border-t border-slate-200/70 pt-3"),
194
- children: [/* @__PURE__ */ m(Pe, {
210
+ P ? /* @__PURE__ */ _("li", {
211
+ className: v("flex items-start gap-3", !J && "border-t border-slate-200/70 pt-3"),
212
+ "data-testid": "storefront-delivery-notice",
213
+ children: [/* @__PURE__ */ g(Fe, {
195
214
  className: "mt-0.5 h-5 w-5 text-slate-900",
196
215
  "aria-hidden": "true"
197
- }), /* @__PURE__ */ h("div", {
216
+ }), /* @__PURE__ */ _("div", {
198
217
  className: "flex flex-col gap-0.5",
199
- children: [/* @__PURE__ */ m("p", {
218
+ children: [/* @__PURE__ */ g("p", {
200
219
  className: "text-sm font-medium text-slate-950",
201
- children: /* @__PURE__ */ m("span", { children: d("feature_delivery_title") })
202
- }), /* @__PURE__ */ m("p", {
220
+ children: /* @__PURE__ */ g("span", { children: d("feature_delivery_title") })
221
+ }), /* @__PURE__ */ g("p", {
203
222
  className: "text-xs text-slate-600",
204
- children: /* @__PURE__ */ m("span", { children: d("feature_delivery_description") })
223
+ children: /* @__PURE__ */ g("span", { children: d("feature_delivery_description") })
205
224
  })]
206
225
  })]
207
- }) : null
226
+ }) : null,
227
+ /* @__PURE__ */ g(be, {
228
+ bikes: k,
229
+ currency: C.bookingEngine.currency,
230
+ className: v(!J && "border-t border-slate-200/70 pt-3")
231
+ })
208
232
  ]
209
233
  })
210
234
  })
211
- ] }), ot = ({ className: e, showSubmitButton: t = !1, submitButtonClassName: n }) => /* @__PURE__ */ m(te, {
212
- ...rt,
213
- labelClassName: b,
214
- inputClassName: x,
215
- children: /* @__PURE__ */ h("div", {
235
+ ] }), dt = ({ className: e, showSubmitButton: t = !1, submitButtonClassName: n }) => /* @__PURE__ */ g(ne, {
236
+ ...ct,
237
+ labelClassName: Ie,
238
+ inputClassName: Le,
239
+ children: /* @__PURE__ */ _(h, { children: [/* @__PURE__ */ _("div", {
216
240
  className: e,
217
241
  children: [
218
- /* @__PURE__ */ m("div", {
242
+ /* @__PURE__ */ g("div", {
219
243
  className: "min-w-0",
220
- children: /* @__PURE__ */ m(ne, {})
244
+ children: /* @__PURE__ */ g(re, {})
221
245
  }),
222
- /* @__PURE__ */ m(re, {}),
223
- /* @__PURE__ */ m("div", {
246
+ /* @__PURE__ */ g(ie, {}),
247
+ /* @__PURE__ */ g("div", {
224
248
  className: "min-w-0",
225
- children: /* @__PURE__ */ m(ie, {})
249
+ children: /* @__PURE__ */ g(ae, {})
226
250
  }),
227
- /* @__PURE__ */ m(ae, {}),
228
- t ? /* @__PURE__ */ h(l, {
229
- ref: G,
230
- className: g("gap-2", n),
231
- onClick: Y,
232
- children: [/* @__PURE__ */ m("span", { children: d("booking_submit") }), /* @__PURE__ */ m(v, {
233
- className: "h-4 w-4",
234
- "aria-hidden": "true"
235
- })]
251
+ /* @__PURE__ */ g(oe, {}),
252
+ t ? /* @__PURE__ */ g(Re, {
253
+ buttonRef: K,
254
+ className: n,
255
+ label: d("booking_submit"),
256
+ onSubmit: X
236
257
  }) : null
237
258
  ]
238
- })
239
- }), Z = (e) => P ? /* @__PURE__ */ m(oe, {
240
- open: I === "delivery",
259
+ }), /* @__PURE__ */ g(se, {
260
+ className: "mt-2",
261
+ testId: "booking-home-time-slots-status"
262
+ })] })
263
+ }), Q = (e) => P ? /* @__PURE__ */ g(ce, {
264
+ open: L === "delivery",
241
265
  className: "sm:min-h-[6.75rem]",
242
- inputClassName: `${x} bg-white`,
243
- labelClassName: b,
244
- startAddress: V,
245
- onStartAddressChange: H,
246
- returnAddress: U,
247
- onReturnAddressChange: W,
266
+ inputClassName: `${Le} bg-white`,
267
+ labelClassName: Ie,
268
+ startAddress: H,
269
+ onStartAddressChange: U,
270
+ returnAddress: W,
271
+ onReturnAddressChange: G,
248
272
  testIdPrefix: e
249
- }) : null, st = Z("storefront-home-fulfillment-delivery-address"), ct = Z("storefront-home-compact-fulfillment-delivery-address"), lt = /* @__PURE__ */ h(fe, {
273
+ }) : null, ft = Q("storefront-home-fulfillment-delivery-address"), pt = Q("storefront-home-compact-fulfillment-delivery-address"), mt = /* @__PURE__ */ _(me, {
250
274
  className: "border-slate-200 bg-white/80 shadow-none",
251
- children: [/* @__PURE__ */ h("div", {
275
+ children: [/* @__PURE__ */ _("div", {
252
276
  className: "border-b border-slate-200 px-4 py-4",
253
- children: [/* @__PURE__ */ m("p", {
277
+ children: [/* @__PURE__ */ g("p", {
254
278
  className: "text-sm font-semibold text-slate-950",
255
- children: /* @__PURE__ */ m("span", { children: d("booking_title") })
256
- }), /* @__PURE__ */ m("p", {
279
+ children: /* @__PURE__ */ g("span", { children: d("booking_title") })
280
+ }), /* @__PURE__ */ g("p", {
257
281
  className: "mt-1 text-xs text-slate-600",
258
- children: /* @__PURE__ */ m("span", { children: d("booking_subtitle") })
282
+ children: /* @__PURE__ */ g("span", { children: d("booking_subtitle") })
259
283
  })]
260
- }), /* @__PURE__ */ h("div", {
284
+ }), /* @__PURE__ */ _("div", {
261
285
  className: "grid gap-4 px-4 py-4",
262
286
  children: [
263
- /* @__PURE__ */ m(be, {
264
- value: I,
265
- onValueChange: We,
266
- pickupAddress: D,
287
+ /* @__PURE__ */ g(Se, {
288
+ value: L,
289
+ onValueChange: Ge,
290
+ pickupAddress: T,
267
291
  deliveryEnabled: P,
268
- deliveryDisabledReason: He,
269
- startAddress: V,
270
- onStartAddressChange: H,
271
- endAddress: U,
272
- onEndAddressChange: W,
292
+ deliveryDisabledReason: F,
293
+ startAddress: H,
294
+ onStartAddressChange: U,
295
+ endAddress: W,
296
+ onEndAddressChange: G,
273
297
  showDeliveryAddressSelector: !1,
274
298
  testIdPrefix: "storefront-home-fulfillment"
275
299
  }),
276
- ot({ className: "grid grid-cols-1 gap-3 md:grid-cols-2 xl:grid-cols-[minmax(0,1fr)_150px_minmax(0,1fr)_150px] xl:items-start" }),
277
- st,
278
- /* @__PURE__ */ m("p", {
300
+ dt({ className: "grid grid-cols-1 gap-3 md:grid-cols-2 xl:grid-cols-[minmax(0,1fr)_150px_minmax(0,1fr)_150px] xl:items-start" }),
301
+ ft,
302
+ /* @__PURE__ */ g("p", {
279
303
  className: "text-xs text-slate-600",
280
- children: /* @__PURE__ */ m("span", { children: d("booking_minimum_duration", { hours: 4 }) })
304
+ children: /* @__PURE__ */ g("span", { children: d("booking_minimum_duration", { hours: 4 }) })
281
305
  }),
282
- /* @__PURE__ */ h(l, {
283
- ref: G,
306
+ /* @__PURE__ */ _(u, {
307
+ ref: K,
284
308
  className: "h-11 w-fit justify-self-start rounded-xl text-sm font-semibold gap-2",
285
- onClick: Y,
286
- children: [/* @__PURE__ */ m("span", { children: d("booking_submit") }), /* @__PURE__ */ m(v, {
309
+ disabled: !st,
310
+ onClick: X,
311
+ children: [/* @__PURE__ */ g("span", { children: d("booking_submit") }), /* @__PURE__ */ g(b, {
287
312
  className: "h-4 w-4",
288
313
  "aria-hidden": "true"
289
314
  })]
290
315
  })
291
316
  ]
292
317
  })]
293
- }), ut = /* @__PURE__ */ m(fe, {
318
+ }), ht = /* @__PURE__ */ g(me, {
294
319
  className: "border-slate-200 bg-white/95 shadow-xl",
295
- children: /* @__PURE__ */ h("div", {
320
+ children: /* @__PURE__ */ _("div", {
296
321
  className: "grid gap-3 p-4",
297
322
  children: [
298
- /* @__PURE__ */ m("div", { children: /* @__PURE__ */ m(be, {
299
- value: I,
300
- onValueChange: We,
301
- pickupAddress: D,
323
+ /* @__PURE__ */ g("div", { children: /* @__PURE__ */ g(Se, {
324
+ value: L,
325
+ onValueChange: Ge,
326
+ pickupAddress: T,
302
327
  deliveryEnabled: P,
303
- deliveryDisabledReason: He,
304
- startAddress: V,
305
- onStartAddressChange: H,
306
- endAddress: U,
307
- onEndAddressChange: W,
328
+ deliveryDisabledReason: F,
329
+ startAddress: H,
330
+ onStartAddressChange: U,
331
+ endAddress: W,
332
+ onEndAddressChange: G,
308
333
  showDeliveryAddressSelector: !1,
309
334
  testIdPrefix: "storefront-home-compact-fulfillment"
310
335
  }) }),
311
- ot({
336
+ dt({
312
337
  className: "grid gap-3 md:grid-cols-2 xl:grid-cols-[minmax(0,1fr)_150px_minmax(0,1fr)_150px_auto] xl:items-end",
313
338
  showSubmitButton: !0,
314
339
  submitButtonClassName: "h-10 rounded-xl text-sm font-semibold xl:self-end"
315
340
  }),
316
- ct
341
+ pt
317
342
  ]
318
343
  })
319
- }), Q = (T.content?.galleryImageIds ?? []).map((e) => s(e, S ?? T.storeSlug)).filter((e) => e.length > 0), dt = [...k, ...Re].flatMap((e) => Array.isArray(e.images) ? e.images : []).filter((e) => typeof e == "string" && e.trim().length > 0).map((e) => e.trim()).slice(0, 12), ft = Le(Q.length > 0 ? Q : dt), pt = Q[0] ?? "data:image/svg+xml,%3csvg%20width='1600'%20height='1066'%20viewBox='0%200%201600%201066'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cdefs%3e%3clinearGradient%20id='bg'%20x1='0'%20y1='0'%20x2='1600'%20y2='1066'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%230F172A'/%3e%3cstop%20offset='1'%20stop-color='%23164E63'/%3e%3c/linearGradient%3e%3clinearGradient%20id='road'%20x1='0'%20y1='740'%20x2='1600'%20y2='1066'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23334155'/%3e%3cstop%20offset='1'%20stop-color='%230F172A'/%3e%3c/linearGradient%3e%3c/defs%3e%3crect%20width='1600'%20height='1066'%20fill='url(%23bg)'/%3e%3cpath%20d='M0%20675C233%20555%20420%20530%20590%20551C752%20571%20930%20635%201088%20632C1252%20629%201423%20559%201600%20498V1066H0V675Z'%20fill='%231E293B'%20opacity='0.7'/%3e%3cpath%20d='M0%20792C213%20710%20393%20686%20573%20697C760%20708%20945%20760%201123%20761C1286%20762%201437%20722%201600%20666V1066H0V792Z'%20fill='url(%23road)'/%3e%3ccircle%20cx='440'%20cy='620'%20r='92'%20stroke='%23F8FAFC'%20stroke-width='18'%20opacity='0.8'/%3e%3ccircle%20cx='740'%20cy='620'%20r='92'%20stroke='%23F8FAFC'%20stroke-width='18'%20opacity='0.8'/%3e%3cpath%20d='M440%20620L560%20520L650%20620H740M560%20520L610%20445M595%20470H665'%20stroke='%23F8FAFC'%20stroke-width='18'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3ccircle%20cx='980'%20cy='700'%20r='80'%20stroke='%23E2E8F0'%20stroke-width='14'%20opacity='0.7'/%3e%3ccircle%20cx='1240'%20cy='700'%20r='80'%20stroke='%23E2E8F0'%20stroke-width='14'%20opacity='0.7'/%3e%3cpath%20d='M980%20700L1078%20616L1156%20700H1240M1078%20616L1122%20556M1112%20574H1172'%20stroke='%23E2E8F0'%20stroke-width='14'%20stroke-linecap='round'%20stroke-linejoin='round'%20opacity='0.7'/%3e%3c/svg%3e", mt = K ? /* @__PURE__ */ m("style", { children: "\n @keyframes storefront-hero-marquee-up {\n 0% { transform: translateY(0); }\n 100% { transform: translateY(calc(-50% - (var(--storefront-hero-marquee-gap) / 2))); }\n }\n @keyframes storefront-hero-marquee-down {\n 0% { transform: translateY(calc(-50% - (var(--storefront-hero-marquee-gap) / 2))); }\n 100% { transform: translateY(0); }\n }\n .storefront-hero-marquee-track {\n animation: storefront-hero-marquee-up var(--storefront-hero-marquee-duration, 32s) linear infinite;\n will-change: transform;\n }\n .storefront-hero-marquee-track-reverse {\n animation-name: storefront-hero-marquee-down;\n }\n @media (prefers-reduced-motion: reduce) {\n .storefront-hero-marquee-track,\n .storefront-hero-marquee-track-reverse {\n animation: none !important;\n transform: none !important;\n }\n }\n " }) : null, $ = (e) => /* @__PURE__ */ m("div", {
320
- className: g("relative h-full min-h-[340px] overflow-hidden", e),
344
+ }), $ = (C.content?.galleryImageIds ?? []).map((e) => c(e, x ?? C.storeSlug)).filter((e) => e.length > 0), gt = [...k, ...Be].flatMap((e) => Array.isArray(e.images) ? e.images : []).filter((e) => typeof e == "string" && e.trim().length > 0).map((e) => e.trim()).slice(0, 12), _t = ze($.length > 0 ? $ : gt), vt = $[0] ?? "data:image/svg+xml,%3csvg%20width='1600'%20height='1066'%20viewBox='0%200%201600%201066'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cdefs%3e%3clinearGradient%20id='bg'%20x1='0'%20y1='0'%20x2='1600'%20y2='1066'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%230F172A'/%3e%3cstop%20offset='1'%20stop-color='%23164E63'/%3e%3c/linearGradient%3e%3clinearGradient%20id='road'%20x1='0'%20y1='740'%20x2='1600'%20y2='1066'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23334155'/%3e%3cstop%20offset='1'%20stop-color='%230F172A'/%3e%3c/linearGradient%3e%3c/defs%3e%3crect%20width='1600'%20height='1066'%20fill='url(%23bg)'/%3e%3cpath%20d='M0%20675C233%20555%20420%20530%20590%20551C752%20571%20930%20635%201088%20632C1252%20629%201423%20559%201600%20498V1066H0V675Z'%20fill='%231E293B'%20opacity='0.7'/%3e%3cpath%20d='M0%20792C213%20710%20393%20686%20573%20697C760%20708%20945%20760%201123%20761C1286%20762%201437%20722%201600%20666V1066H0V792Z'%20fill='url(%23road)'/%3e%3ccircle%20cx='440'%20cy='620'%20r='92'%20stroke='%23F8FAFC'%20stroke-width='18'%20opacity='0.8'/%3e%3ccircle%20cx='740'%20cy='620'%20r='92'%20stroke='%23F8FAFC'%20stroke-width='18'%20opacity='0.8'/%3e%3cpath%20d='M440%20620L560%20520L650%20620H740M560%20520L610%20445M595%20470H665'%20stroke='%23F8FAFC'%20stroke-width='18'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3ccircle%20cx='980'%20cy='700'%20r='80'%20stroke='%23E2E8F0'%20stroke-width='14'%20opacity='0.7'/%3e%3ccircle%20cx='1240'%20cy='700'%20r='80'%20stroke='%23E2E8F0'%20stroke-width='14'%20opacity='0.7'/%3e%3cpath%20d='M980%20700L1078%20616L1156%20700H1240M1078%20616L1122%20556M1112%20574H1172'%20stroke='%23E2E8F0'%20stroke-width='14'%20stroke-linecap='round'%20stroke-linejoin='round'%20opacity='0.7'/%3e%3c/svg%3e", yt = q ? /* @__PURE__ */ g("style", { children: "\n @keyframes storefront-hero-marquee-up {\n 0% { transform: translateY(0); }\n 100% { transform: translateY(calc(-50% - (var(--storefront-hero-marquee-gap) / 2))); }\n }\n @keyframes storefront-hero-marquee-down {\n 0% { transform: translateY(calc(-50% - (var(--storefront-hero-marquee-gap) / 2))); }\n 100% { transform: translateY(0); }\n }\n .storefront-hero-marquee-track {\n animation: storefront-hero-marquee-up var(--storefront-hero-marquee-duration, 32s) linear infinite;\n will-change: transform;\n }\n .storefront-hero-marquee-track-reverse {\n animation-name: storefront-hero-marquee-down;\n }\n @media (prefers-reduced-motion: reduce) {\n .storefront-hero-marquee-track,\n .storefront-hero-marquee-track-reverse {\n animation: none !important;\n transform: none !important;\n }\n }\n " }) : null, bt = (e) => /* @__PURE__ */ g("div", {
345
+ className: v("relative h-full min-h-[340px] overflow-hidden", e),
321
346
  style: {
322
347
  WebkitMaskImage: "linear-gradient(to bottom, transparent 0%, black 5%, black 95%, transparent 100%)",
323
348
  maskImage: "linear-gradient(to bottom, transparent 0%, black 5%, black 95%, transparent 100%)",
@@ -327,194 +352,194 @@ function D() {
327
352
  maskSize: "100% 100%"
328
353
  },
329
354
  "aria-hidden": "true",
330
- children: /* @__PURE__ */ m("div", {
355
+ children: /* @__PURE__ */ g("div", {
331
356
  className: "absolute inset-0 grid grid-cols-2 gap-3 md:grid-cols-3 lg:grid-cols-6",
332
- children: ft.map((e, t) => {
357
+ children: _t.map((e, t) => {
333
358
  let n = w[t % w.length] ?? 32, r = [...e, ...e];
334
- return /* @__PURE__ */ m("div", {
335
- className: g("relative min-h-0 overflow-hidden", t === 2 && "hidden md:block", t >= 3 && "hidden lg:block"),
336
- children: /* @__PURE__ */ m("div", {
337
- className: g("storefront-hero-marquee-track flex flex-col gap-[var(--storefront-hero-marquee-gap)]", t % 2 == 1 && "storefront-hero-marquee-track-reverse"),
359
+ return /* @__PURE__ */ g("div", {
360
+ className: v("relative min-h-0 overflow-hidden", t === 2 && "hidden md:block", t >= 3 && "hidden lg:block"),
361
+ children: /* @__PURE__ */ g("div", {
362
+ className: v("storefront-hero-marquee-track flex flex-col gap-[var(--storefront-hero-marquee-gap)]", t % 2 == 1 && "storefront-hero-marquee-track-reverse"),
338
363
  style: {
339
364
  "--storefront-hero-marquee-duration": `${n}s`,
340
365
  "--storefront-hero-marquee-gap": "0.75rem"
341
366
  },
342
- children: r.map((n, r) => /* @__PURE__ */ h("div", {
367
+ children: r.map((n, r) => /* @__PURE__ */ _("div", {
343
368
  className: "group relative overflow-hidden rounded-[1.35rem] border border-white/40 bg-transparent",
344
369
  style: { aspectRatio: n.aspectRatio },
345
370
  children: [
346
- /* @__PURE__ */ m("div", { className: "absolute inset-0 bg-linear-to-b from-white/22 via-transparent to-transparent" }),
347
- /* @__PURE__ */ m("img", {
371
+ /* @__PURE__ */ g("div", { className: "absolute inset-0 bg-linear-to-b from-white/22 via-transparent to-transparent" }),
372
+ /* @__PURE__ */ g("img", {
348
373
  src: n.src,
349
374
  alt: "",
350
375
  className: "absolute inset-0 h-full w-full object-cover opacity-90 saturate-[1.05] transition-transform duration-700 group-hover:scale-[1.04]",
351
376
  loading: r < e.length ? "eager" : "lazy"
352
377
  }),
353
- /* @__PURE__ */ m("div", { className: "absolute inset-0 bg-linear-to-t from-slate-950/40 via-slate-950/10 to-white/10" })
378
+ /* @__PURE__ */ g("div", { className: "absolute inset-0 bg-linear-to-t from-slate-950/40 via-slate-950/10 to-white/10" })
354
379
  ]
355
380
  }, `hero-marquee-tile-${t}-${r}`))
356
381
  })
357
382
  }, `hero-marquee-column-${t}`);
358
383
  })
359
384
  })
360
- }), ht = K ? /* @__PURE__ */ m("div", {
385
+ }), xt = q ? /* @__PURE__ */ g("div", {
361
386
  className: "pointer-events-none absolute inset-0 hidden lg:block",
362
387
  "aria-hidden": "true",
363
- children: /* @__PURE__ */ h("div", {
388
+ children: /* @__PURE__ */ _("div", {
364
389
  className: "mx-auto grid h-full max-w-7xl grid-cols-12 gap-8 px-4 sm:px-6",
365
- children: [/* @__PURE__ */ m("div", { className: "lg:col-span-5" }), /* @__PURE__ */ m("div", {
390
+ children: [/* @__PURE__ */ g("div", { className: "lg:col-span-5" }), /* @__PURE__ */ g("div", {
366
391
  className: "lg:col-span-7",
367
- children: $()
392
+ children: bt()
368
393
  })]
369
394
  })
370
- }) : null, gt = K ? /* @__PURE__ */ h(Ce, { children: [/* @__PURE__ */ m("div", {
395
+ }) : null, St = q ? /* @__PURE__ */ _(h, { children: [/* @__PURE__ */ g("div", {
371
396
  className: "lg:hidden",
372
- children: $()
373
- }), /* @__PURE__ */ m("div", {
397
+ children: bt()
398
+ }), /* @__PURE__ */ g("div", {
374
399
  className: "hidden min-h-[510px] lg:block",
375
400
  "aria-hidden": "true"
376
- })] }) : /* @__PURE__ */ h("div", {
401
+ })] }) : /* @__PURE__ */ _("div", {
377
402
  className: "relative min-h-[340px] overflow-hidden rounded-3xl border border-slate-200 bg-slate-900 shadow-sm lg:min-h-[510px]",
378
- children: [/* @__PURE__ */ m("img", {
379
- src: pt,
403
+ children: [/* @__PURE__ */ g("img", {
404
+ src: vt,
380
405
  alt: "",
381
406
  className: "absolute inset-0 h-full w-full object-cover",
382
407
  "aria-hidden": "true"
383
- }), /* @__PURE__ */ m("div", {
408
+ }), /* @__PURE__ */ g("div", {
384
409
  className: "absolute inset-0 bg-linear-to-t from-slate-900/45 via-slate-900/15 to-transparent",
385
410
  "aria-hidden": "true"
386
411
  })]
387
412
  });
388
- return /* @__PURE__ */ h(Ce, { children: [
389
- /* @__PURE__ */ h("section", {
413
+ return /* @__PURE__ */ _(h, { children: [
414
+ /* @__PURE__ */ _("section", {
390
415
  className: "relative overflow-hidden border-b border-slate-200",
391
416
  children: [
392
- /* @__PURE__ */ m("div", {
417
+ /* @__PURE__ */ g("div", {
393
418
  className: "absolute inset-0 bg-linear-to-b from-slate-50 to-white",
394
419
  "aria-hidden": "true"
395
420
  }),
396
- /* @__PURE__ */ m("div", {
421
+ /* @__PURE__ */ g("div", {
397
422
  className: "absolute inset-0 opacity-[0.07]",
398
423
  style: { backgroundImage: "radial-gradient(circle at 20% 20%, rgba(15, 23, 42, 0.9) 0px, transparent 55%), radial-gradient(circle at 80% 35%, rgba(14, 116, 144, 0.9) 0px, transparent 55%), radial-gradient(circle at 55% 85%, rgba(99, 102, 241, 0.9) 0px, transparent 55%)" },
399
424
  "aria-hidden": "true"
400
425
  }),
401
- mt,
402
- ht,
403
- q ? /* @__PURE__ */ h("div", {
426
+ yt,
427
+ xt,
428
+ J ? /* @__PURE__ */ _("div", {
404
429
  className: "relative mx-auto grid max-w-7xl gap-8 px-4 py-10 sm:px-6 lg:grid-cols-12 lg:py-14",
405
- children: [/* @__PURE__ */ h("div", {
430
+ children: [/* @__PURE__ */ _("div", {
406
431
  className: "lg:col-span-5",
407
- children: [at, Qe ? /* @__PURE__ */ m("div", {
432
+ children: [ut, tt ? /* @__PURE__ */ g("div", {
408
433
  className: "mt-7",
409
- children: /* @__PURE__ */ m("div", {
434
+ children: /* @__PURE__ */ g("div", {
410
435
  className: "relative z-20 w-[calc(100%+24rem)] max-w-none",
411
- children: ut
436
+ children: ht
412
437
  })
413
438
  }) : null]
414
- }), /* @__PURE__ */ h("div", {
415
- className: g("lg:col-span-7", !K && "lg:pt-4"),
416
- children: [gt, Qe ? null : /* @__PURE__ */ m("div", {
439
+ }), /* @__PURE__ */ _("div", {
440
+ className: v("lg:col-span-7", !q && "lg:pt-4"),
441
+ children: [St, tt ? null : /* @__PURE__ */ g("div", {
417
442
  className: "mt-4",
418
- children: ut
443
+ children: ht
419
444
  })]
420
445
  })]
421
- }) : /* @__PURE__ */ h("div", {
446
+ }) : /* @__PURE__ */ _("div", {
422
447
  className: "relative mx-auto grid max-w-7xl gap-8 px-4 py-10 sm:px-6 lg:grid-cols-12 lg:items-center lg:py-14",
423
- children: [/* @__PURE__ */ m("div", {
448
+ children: [/* @__PURE__ */ g("div", {
424
449
  className: "lg:col-span-5",
425
- children: at
426
- }), /* @__PURE__ */ m("div", {
450
+ children: ut
451
+ }), /* @__PURE__ */ g("div", {
427
452
  className: "lg:col-span-7",
428
- children: lt
453
+ children: mt
429
454
  })]
430
455
  })
431
456
  ]
432
457
  }),
433
- /* @__PURE__ */ h("section", {
458
+ /* @__PURE__ */ _("section", {
434
459
  id: "featured",
435
460
  className: "mx-auto max-w-7xl scroll-mt-16 px-4 py-10 sm:scroll-mt-20 sm:px-6",
436
- children: [/* @__PURE__ */ h("div", {
461
+ children: [/* @__PURE__ */ _("div", {
437
462
  className: "flex items-center justify-between gap-3",
438
- children: [/* @__PURE__ */ h("div", {
463
+ children: [/* @__PURE__ */ _("div", {
439
464
  className: "space-y-1",
440
- children: [/* @__PURE__ */ m("h2", {
465
+ children: [/* @__PURE__ */ g("h2", {
441
466
  className: "text-xl font-semibold tracking-tight",
442
- children: /* @__PURE__ */ m("span", { children: d("featured_title") })
443
- }), /* @__PURE__ */ m("p", {
467
+ children: /* @__PURE__ */ g("span", { children: d("featured_title") })
468
+ }), /* @__PURE__ */ g("p", {
444
469
  className: "text-sm text-slate-600",
445
- children: /* @__PURE__ */ m("span", { children: d("featured_description") })
470
+ children: /* @__PURE__ */ g("span", { children: d("featured_description") })
446
471
  })]
447
- }), /* @__PURE__ */ h(_, {
472
+ }), /* @__PURE__ */ _(y, {
448
473
  className: "hidden items-center gap-2 text-sm font-medium text-slate-700 hover:text-slate-950 sm:inline-flex",
449
- to: `/${S ?? ""}/booking${nt}`,
450
- children: [/* @__PURE__ */ m("span", { children: d("featured_view_all") }), /* @__PURE__ */ m(v, {
474
+ to: `/${x ?? ""}/booking${at}`,
475
+ children: [/* @__PURE__ */ g("span", { children: d("featured_view_all") }), /* @__PURE__ */ g(b, {
451
476
  className: "h-4 w-4",
452
477
  "aria-hidden": "true"
453
478
  })]
454
479
  })]
455
- }), /* @__PURE__ */ m("div", {
480
+ }), /* @__PURE__ */ g("div", {
456
481
  className: "mt-6 grid gap-4 sm:grid-cols-2 lg:grid-cols-4",
457
- children: Ye.map((e) => {
458
- let t = e.id, n = e.slug, r = o(e.name, y.language, O), i = o(e.description, y.language, O), a = typeof e.images?.[0] == "string" ? e.images[0].trim() : "", s = he(e.primaryImageStyle), l = ee(e.availabilityStatus), u = it(n);
459
- return /* @__PURE__ */ h("div", {
482
+ children: Qe.map((e) => {
483
+ let t = e.id, n = e.slug, r = s(e.name, f.language, O), i = s(e.description, f.language, O), a = typeof e.images?.[0] == "string" ? e.images[0].trim() : "", o = _e(e.primaryImageStyle), c = ee(e.availabilityStatus), u = lt(n);
484
+ return /* @__PURE__ */ _("div", {
460
485
  className: "group flex h-full flex-col gap-2 rounded-xl border border-slate-200 bg-white p-3 text-left shadow-sm transition hover:border-slate-400",
461
486
  children: [
462
- /* @__PURE__ */ m(_, {
487
+ /* @__PURE__ */ g(y, {
463
488
  to: u,
464
- state: X,
489
+ state: Z,
465
490
  className: "block",
466
- children: /* @__PURE__ */ m("span", {
467
- className: g("relative block aspect-[1618/1000] overflow-hidden rounded-xl", s.className),
468
- style: s.style,
469
- children: a ? /* @__PURE__ */ m("img", {
491
+ children: /* @__PURE__ */ g("span", {
492
+ className: v("relative block aspect-[1618/1000] overflow-hidden rounded-xl", o.className),
493
+ style: o.style,
494
+ children: a ? /* @__PURE__ */ g("img", {
470
495
  src: a,
471
496
  alt: r,
472
497
  className: "absolute inset-0 h-full w-full object-contain p-1",
473
498
  loading: "lazy"
474
- }) : /* @__PURE__ */ m("span", {
499
+ }) : /* @__PURE__ */ g("span", {
475
500
  className: "absolute inset-0 flex items-center justify-center text-slate-400",
476
- children: /* @__PURE__ */ m(Ae, {
501
+ children: /* @__PURE__ */ g(je, {
477
502
  className: "h-8 w-8",
478
503
  "aria-hidden": "true"
479
504
  })
480
505
  })
481
506
  })
482
507
  }),
483
- /* @__PURE__ */ h("span", {
508
+ /* @__PURE__ */ _("span", {
484
509
  className: "flex flex-1 flex-col gap-1",
485
510
  children: [
486
- /* @__PURE__ */ m(_, {
511
+ /* @__PURE__ */ g(y, {
487
512
  to: u,
488
- state: X,
513
+ state: Z,
489
514
  className: "text-sm font-semibold text-slate-950 hover:text-slate-700",
490
- children: /* @__PURE__ */ m("span", { children: r })
515
+ children: /* @__PURE__ */ g("span", { children: r })
491
516
  }),
492
- /* @__PURE__ */ m(me, {
517
+ /* @__PURE__ */ g(ge, {
493
518
  prices: e.prices,
494
519
  className: "self-start"
495
520
  }),
496
- /* @__PURE__ */ m("span", {
521
+ /* @__PURE__ */ g("span", {
497
522
  className: "line-clamp-2 text-xs text-slate-600",
498
523
  children: i
499
524
  })
500
525
  ]
501
526
  }),
502
- /* @__PURE__ */ h("span", {
527
+ /* @__PURE__ */ _("span", {
503
528
  className: "flex flex-wrap items-center gap-x-2 gap-y-1",
504
529
  children: [
505
- /* @__PURE__ */ m(c, {
506
- variant: l.variant,
507
- children: /* @__PURE__ */ m("span", { children: d(l.labelKey) })
530
+ /* @__PURE__ */ g(l, {
531
+ variant: c.variant,
532
+ children: /* @__PURE__ */ g("span", { children: d(c.labelKey) })
508
533
  }),
509
- /* @__PURE__ */ m("span", {
534
+ /* @__PURE__ */ g("span", {
510
535
  className: "text-slate-400",
511
536
  children: "·"
512
537
  }),
513
- /* @__PURE__ */ m(_, {
538
+ /* @__PURE__ */ g(y, {
514
539
  to: u,
515
- state: X,
540
+ state: Z,
516
541
  className: "text-xs font-medium text-slate-700 hover:text-slate-950",
517
- children: /* @__PURE__ */ m("span", { children: d("product_details_link") })
542
+ children: /* @__PURE__ */ g("span", { children: d("product_details_link") })
518
543
  })
519
544
  ]
520
545
  })
@@ -523,102 +548,102 @@ function D() {
523
548
  })
524
549
  })]
525
550
  }),
526
- /* @__PURE__ */ m("section", {
551
+ /* @__PURE__ */ g("section", {
527
552
  id: "products",
528
553
  className: "border-t bg-slate-50/60 scroll-mt-16 sm:scroll-mt-20",
529
- children: /* @__PURE__ */ h("div", {
554
+ children: /* @__PURE__ */ _("div", {
530
555
  className: "mx-auto max-w-7xl px-4 py-10 sm:px-6",
531
- children: [/* @__PURE__ */ m("div", {
556
+ children: [/* @__PURE__ */ g("div", {
532
557
  className: "flex flex-col gap-3 sm:flex-row sm:items-end sm:justify-between",
533
- children: /* @__PURE__ */ h("div", {
558
+ children: /* @__PURE__ */ _("div", {
534
559
  className: "space-y-1",
535
- children: [/* @__PURE__ */ m("h2", {
560
+ children: [/* @__PURE__ */ g("h2", {
536
561
  className: "text-xl font-semibold tracking-tight",
537
- children: /* @__PURE__ */ m("span", { children: d("products_title") })
538
- }), /* @__PURE__ */ m("p", {
562
+ children: /* @__PURE__ */ g("span", { children: d("products_title") })
563
+ }), /* @__PURE__ */ g("p", {
539
564
  className: "text-sm text-slate-600",
540
- children: /* @__PURE__ */ m("span", { children: d("products_description") })
565
+ children: /* @__PURE__ */ g("span", { children: d("products_description") })
541
566
  })]
542
567
  })
543
- }), /* @__PURE__ */ m("div", {
568
+ }), /* @__PURE__ */ g("div", {
544
569
  className: "mt-6 grid gap-4 md:grid-cols-2",
545
- children: k.map((e) => /* @__PURE__ */ m(ge, {
570
+ children: k.map((e) => /* @__PURE__ */ g(ve, {
546
571
  bike: e,
547
- detailsPath: it(e.slug),
548
- productDetailsLinkState: X,
572
+ detailsPath: lt(e.slug),
573
+ productDetailsLinkState: Z,
549
574
  fallbackLanguage: O,
550
- onAction: Y
575
+ onAction: X
551
576
  }, e.id))
552
577
  })]
553
578
  })
554
579
  }),
555
- /* @__PURE__ */ h("section", {
580
+ /* @__PURE__ */ _("section", {
556
581
  className: "mx-auto max-w-7xl px-4 py-10 sm:px-6",
557
- children: [/* @__PURE__ */ m("div", {
582
+ children: [/* @__PURE__ */ g("div", {
558
583
  className: "flex flex-col gap-2 sm:flex-row sm:items-end sm:justify-between",
559
- children: /* @__PURE__ */ h("div", {
584
+ children: /* @__PURE__ */ _("div", {
560
585
  className: "space-y-1",
561
- children: [/* @__PURE__ */ m("h2", {
586
+ children: [/* @__PURE__ */ g("h2", {
562
587
  className: "text-xl font-semibold tracking-tight",
563
- children: /* @__PURE__ */ m("span", { children: d("accessories_title") })
564
- }), /* @__PURE__ */ m("p", {
588
+ children: /* @__PURE__ */ g("span", { children: d("accessories_title") })
589
+ }), /* @__PURE__ */ g("p", {
565
590
  className: "text-sm text-slate-600",
566
- children: /* @__PURE__ */ m("span", { children: d("accessories_description") })
591
+ children: /* @__PURE__ */ g("span", { children: d("accessories_description") })
567
592
  })]
568
593
  })
569
- }), /* @__PURE__ */ m("div", {
594
+ }), /* @__PURE__ */ g("div", {
570
595
  className: "mt-6 grid gap-4 sm:grid-cols-2 lg:grid-cols-4",
571
- children: Re.slice(0, 4).map((e) => {
572
- let t = o(e.name, y.language, O), n = o(e.description, y.language, O), r = o(e.warning, y.language, O), i = typeof e.images?.[0] == "string" ? e.images[0].trim() : "", a = he(e.primaryImageStyle);
573
- return /* @__PURE__ */ h("div", {
596
+ children: Be.slice(0, 4).map((e) => {
597
+ let t = s(e.name, f.language, O), n = s(e.description, f.language, O), r = s(e.warning, f.language, O), i = typeof e.images?.[0] == "string" ? e.images[0].trim() : "", a = _e(e.primaryImageStyle);
598
+ return /* @__PURE__ */ _("div", {
574
599
  className: "flex h-full flex-col gap-2 rounded-xl border border-slate-200 bg-white p-3 shadow-sm",
575
600
  children: [
576
- /* @__PURE__ */ m("div", {
577
- className: g("relative aspect-[1618/1000] overflow-hidden rounded-xl", a.className),
601
+ /* @__PURE__ */ g("div", {
602
+ className: v("relative aspect-[1618/1000] overflow-hidden rounded-xl", a.className),
578
603
  style: a.style,
579
- children: i ? /* @__PURE__ */ m("img", {
604
+ children: i ? /* @__PURE__ */ g("img", {
580
605
  src: i,
581
606
  alt: t,
582
607
  className: "absolute inset-0 h-full w-full object-contain p-1",
583
608
  loading: "lazy"
584
- }) : /* @__PURE__ */ m("div", {
609
+ }) : /* @__PURE__ */ g("div", {
585
610
  className: "absolute inset-0 flex items-center justify-center text-slate-400",
586
- children: /* @__PURE__ */ m(Ae, {
611
+ children: /* @__PURE__ */ g(je, {
587
612
  className: "h-8 w-8",
588
613
  "aria-hidden": "true"
589
614
  })
590
615
  })
591
616
  }),
592
- /* @__PURE__ */ h("div", {
617
+ /* @__PURE__ */ _("div", {
593
618
  className: "flex flex-1 flex-col gap-1",
594
619
  children: [
595
- /* @__PURE__ */ m("p", {
620
+ /* @__PURE__ */ g("p", {
596
621
  className: "text-sm font-semibold text-slate-950",
597
- children: /* @__PURE__ */ m("span", { children: t })
622
+ children: /* @__PURE__ */ g("span", { children: t })
598
623
  }),
599
- /* @__PURE__ */ m("p", {
624
+ /* @__PURE__ */ g("p", {
600
625
  className: "line-clamp-2 text-xs text-slate-600",
601
- children: /* @__PURE__ */ m("span", { children: n })
626
+ children: /* @__PURE__ */ g("span", { children: n })
602
627
  }),
603
- /* @__PURE__ */ m(pe, {
628
+ /* @__PURE__ */ g(he, {
604
629
  warning: r,
605
630
  className: "mt-1"
606
631
  })
607
632
  ]
608
633
  }),
609
- /* @__PURE__ */ m("div", {
634
+ /* @__PURE__ */ g("div", {
610
635
  className: "flex items-center justify-between gap-2",
611
- children: /* @__PURE__ */ m(me, { prices: e.prices })
636
+ children: /* @__PURE__ */ g(ge, { prices: e.prices })
612
637
  })
613
638
  ]
614
639
  }, e.id);
615
640
  })
616
641
  })]
617
642
  }),
618
- /* @__PURE__ */ m(de, {}),
619
- /* @__PURE__ */ m(ue, {}),
620
- /* @__PURE__ */ m(le, { storeSlug: S ?? "" })
643
+ /* @__PURE__ */ g(pe, {}),
644
+ /* @__PURE__ */ g(fe, {}),
645
+ /* @__PURE__ */ g(de, { storeSlug: x ?? "" })
621
646
  ] });
622
647
  }
623
648
  //#endregion
624
- export { D as default };
649
+ export { O as default };