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