@loczer/storefront-sdk 0.166.0 → 0.168.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 (56) hide show
  1. package/dist/chunks/booking-engine/dist/schemas/base-booking-Dlgnuu6k.js +74 -0
  2. package/dist/chunks/ui/dist/{Dialog-COr6fnKd.js → Dialog-CR_9vgBQ.js} +1 -1
  3. package/dist/chunks/ui/dist/{MorphingModalWizard-BuRND-yE.js → MorphingModalWizard-CPLr3dh2.js} +3 -3
  4. package/dist/chunks/ui/dist/{ResponsiveDialog-D8YzB_3J.js → ResponsiveDialog-DhFgsW_0.js} +2 -2
  5. package/dist/chunks/ui/dist/node_modules/lucide-react/dist/esm/Icon-OkokCq-b.js +37 -0
  6. package/dist/chunks/ui/dist/node_modules/lucide-react/dist/esm/context-C4oH64Wf.js +5 -0
  7. package/dist/chunks/ui/dist/node_modules/lucide-react/dist/esm/createLucideIcon-BI4k0Tt0.js +23 -0
  8. package/dist/chunks/ui/dist/node_modules/lucide-react/dist/esm/icons/{arrow-left-asE1l_Qw.js → arrow-left-DMMNgJEB.js} +1 -1
  9. package/dist/chunks/ui/dist/node_modules/lucide-react/dist/esm/icons/{x-Cdi8GS7U.js → x-BDxS-rYd.js} +1 -1
  10. package/dist/chunks/ui/dist/node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp-Lff9pF65.js +9 -0
  11. package/dist/chunks/ui/dist/node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses-HV-Vu34x.js +4 -0
  12. package/dist/chunks/ui/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase-BZAgYi2F.js +7 -0
  13. package/dist/chunks/ui/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase-DsnfsuSi.js +4 -0
  14. package/dist/chunks/ui/dist/node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase-DZxyG2X3.js +8 -0
  15. package/dist/components/BikeProductCard/index.d.ts.map +1 -1
  16. package/dist/components/BikeProductCard/index.js +40 -45
  17. package/dist/components/BookingBikeVariantDialog/index.js +1 -1
  18. package/dist/components/BookingPeriodSelector/components/BookingEndDateField.js +1 -1
  19. package/dist/components/BookingPeriodSelector/components/BookingEndTimeField.js +1 -1
  20. package/dist/components/BookingPeriodSelector/components/BookingStartDateField.js +1 -1
  21. package/dist/components/BookingPeriodSelector/components/BookingStartTimeField.js +1 -1
  22. package/dist/components/ContactSection/index.d.ts.map +1 -1
  23. package/dist/components/ContactSection/index.js +73 -98
  24. package/dist/components/DelayedReveal/index.js +1 -1
  25. package/dist/components/Footer/index.d.ts +2 -1
  26. package/dist/components/Footer/index.d.ts.map +1 -1
  27. package/dist/components/Footer/index.js +38 -48
  28. package/dist/components/Header/index.d.ts +2 -1
  29. package/dist/components/Header/index.d.ts.map +1 -1
  30. package/dist/components/Header/index.js +55 -62
  31. package/dist/components/Layout/index.d.ts.map +1 -1
  32. package/dist/components/Layout/index.js +35 -26
  33. package/dist/components/StorefrontCancellationPolicyNotice/index.js +3 -3
  34. package/dist/components/StorefrontPopupMessages/index.js +1 -1
  35. package/dist/i18n/en.d.ts +2 -5
  36. package/dist/i18n/en.d.ts.map +1 -1
  37. package/dist/i18n/en.js +7 -10
  38. package/dist/i18n/fr.d.ts +2 -5
  39. package/dist/i18n/fr.d.ts.map +1 -1
  40. package/dist/i18n/fr.js +8 -11
  41. package/dist/index.d.ts +8 -20
  42. package/dist/index.js +2 -2
  43. package/dist/lib/checkoutSubmit.js +1 -1
  44. package/dist/pages/CheckoutPage.d.ts.map +1 -1
  45. package/dist/pages/CheckoutPage.js +171 -179
  46. package/dist/pages/CheckoutPaymentPage.d.ts.map +1 -1
  47. package/dist/pages/CheckoutPaymentPage.js +124 -145
  48. package/dist/pages/HomePage.d.ts.map +1 -1
  49. package/dist/pages/HomePage.js +185 -173
  50. package/dist/storefront.css +1 -1
  51. package/dist/storefrontSchemas.js +1 -1
  52. package/package.json +2 -2
  53. package/dist/chunks/booking-engine/dist/schemas/base-booking-BMAjsw9r.js +0 -78
  54. package/dist/chunks/ui/dist/node_modules/lucide-react/dist/esm/Icon-BNiQfVqr.js +0 -35
  55. package/dist/chunks/ui/dist/node_modules/lucide-react/dist/esm/createLucideIcon-5_J8fxOF.js +0 -21
  56. package/dist/chunks/ui/dist/node_modules/lucide-react/dist/esm/shared/src/utils-nzQUBs6v.js +0 -18
@@ -0,0 +1,74 @@
1
+ import { z as o } from "zod";
2
+ import { identifierSchema as i, isoDateTimeSchema as n, ulidStringSchema as p, objectIdStringSchema as c } from "../models/types-DLcvzW5b.js";
3
+ import { productKindSchema as s } from "../models/Product.shared-BiDGmurZ.js";
4
+ import { moneyMinorSchema as r } from "./money-Dy4b9loa.js";
5
+ import { richTextSchema as m } from "./rich-text-CqXhNDN3.js";
6
+ import { cancellationPolicySchema as a } from "./booking-engine-configuration-DTJD2G9w.js";
7
+ const l = o.enum([
8
+ "pending_approval",
9
+ "pending_payment",
10
+ "confirmed",
11
+ "active",
12
+ "completed",
13
+ "canceled",
14
+ "expired"
15
+ ]), d = o.object({
16
+ _id: i,
17
+ productId: i,
18
+ kind: s,
19
+ qty: o.number().int().positive(),
20
+ productVariantId: i.optional()
21
+ }), u = o.object({
22
+ name: o.preprocess(
23
+ (e) => {
24
+ if (typeof e != "string") return;
25
+ const t = e.trim();
26
+ return t.length > 0 ? t : void 0;
27
+ },
28
+ o.string().min(1).optional()
29
+ ),
30
+ email: o.preprocess(
31
+ (e) => {
32
+ if (typeof e != "string") return;
33
+ const t = e.trim();
34
+ return t.length > 0 ? t : void 0;
35
+ },
36
+ o.string().email().optional()
37
+ ),
38
+ phone: o.preprocess(
39
+ (e) => {
40
+ if (typeof e != "string") return;
41
+ const t = e.trim();
42
+ return t.length > 0 ? t : void 0;
43
+ },
44
+ o.string().min(1).optional()
45
+ ),
46
+ message: m.optional()
47
+ }), v = o.object({
48
+ _id: c,
49
+ externalId: p,
50
+ state: l,
51
+ shopId: i,
52
+ customer: u,
53
+ deliveryOption: o.enum(["delivery", "pickup"]),
54
+ start: n,
55
+ end: n,
56
+ startAddress: o.string().optional(),
57
+ endAddress: o.string().optional(),
58
+ items: o.array(d),
59
+ couponCode: o.string().min(1).optional(),
60
+ couponDiscountRate: o.number().min(0).max(1).optional(),
61
+ couponDiscountAmountUnits: r.optional(),
62
+ couponAutoApplied: o.boolean().optional(),
63
+ couponPriceRuleId: i.optional(),
64
+ totalPriceUnits: r.optional(),
65
+ cancellationPolicySnapshot: a.optional(),
66
+ cancellationPolicyOverride: a.optional(),
67
+ createdAt: n,
68
+ updatedAt: n
69
+ });
70
+ export {
71
+ d as baseBookingItemSchema,
72
+ v as baseBookingSchema,
73
+ l as baseBookingStateSchema
74
+ };
@@ -4,7 +4,7 @@ import { cn as m } from "./lib/utils-B6zhukbw.js";
4
4
  import { useBodyPointerEventsLock as S } from "./lib/body-pointer-events-CyPsDvc9.js";
5
5
  import { createAutoFocusHandler as C, composeRefs as w } from "./lib/slot-CklkPb7k.js";
6
6
  import { SsrHydratablePortal as H } from "./SsrHydratablePortal/index-Ue09qUAi.js";
7
- import O from "./node_modules/lucide-react/dist/esm/icons/x-Cdi8GS7U.js";
7
+ import O from "./node_modules/lucide-react/dist/esm/icons/x-BDxS-rYd.js";
8
8
  import { DialogBackdrop as z } from "./node_modules/@base-ui/react/esm/dialog/backdrop/DialogBackdrop-dfhPbhun.js";
9
9
  import { DialogPortal as I } from "./node_modules/@base-ui/react/esm/dialog/portal/DialogPortal-DCoXyUCa.js";
10
10
  import { DialogPopup as T } from "./node_modules/@base-ui/react/esm/dialog/popup/DialogPopup-Ce1MaHNd.js";
@@ -1,7 +1,7 @@
1
1
  import "react/jsx-runtime";
2
2
  import { createContext as o, useContext as r } from "react";
3
3
  import "./Button-CEl4MEmL.js";
4
- import "./Dialog-COr6fnKd.js";
4
+ import "./Dialog-CR_9vgBQ.js";
5
5
  import "./node_modules/@base-ui/react/esm/scroll-area/root/ScrollAreaRoot-Cw_gyhhI.js";
6
6
  import "./node_modules/@base-ui/react/esm/scroll-area/viewport/ScrollAreaViewport-CadjBxEp.js";
7
7
  import "./node_modules/@base-ui/react/esm/scroll-area/corner/ScrollAreaCorner-z0cNScNF.js";
@@ -22,8 +22,8 @@ import "./node_modules/framer-motion/dist/es/render/dom/utils/filter-props-DZcjZ
22
22
  import "./node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext-BWutRI4l.js";
23
23
  import "./node_modules/motion-dom/dist/es/animation/optimized-appear/data-id-CNQuVmXa.js";
24
24
  import "./node_modules/motion-dom/dist/es/projection/node/create-projection-node-DL2q-YuA.js";
25
- import "./node_modules/lucide-react/dist/esm/icons/arrow-left-asE1l_Qw.js";
26
- import "./node_modules/lucide-react/dist/esm/icons/x-Cdi8GS7U.js";
25
+ import "./node_modules/lucide-react/dist/esm/icons/arrow-left-DMMNgJEB.js";
26
+ import "./node_modules/lucide-react/dist/esm/icons/x-BDxS-rYd.js";
27
27
  const t = o(null), k = () => r(t);
28
28
  export {
29
29
  k as useMorphingModalWizardOverlayLayer
@@ -1,10 +1,10 @@
1
1
  import { jsx as o, jsxs as R } from "react/jsx-runtime";
2
2
  import * as i from "react";
3
- import { DialogTrigger as h, DialogClose as w, DialogContent as b, DialogTitle as y, DialogDescription as M, Dialog as E, DialogHeader as O, DialogFooter as T } from "./Dialog-COr6fnKd.js";
3
+ import { DialogTrigger as h, DialogClose as w, DialogContent as b, DialogTitle as y, DialogDescription as M, Dialog as E, DialogHeader as O, DialogFooter as T } from "./Dialog-CR_9vgBQ.js";
4
4
  import { DrawerTrigger as I, DrawerClose as N, DrawerContent as _, DrawerTitle as x, DrawerDescription as $, Drawer as H, DrawerHeader as P, DrawerFooter as k } from "./Drawer/index-BxM7gmh_.js";
5
5
  import { useMediaQuery as B } from "./lib/useMediaQuery-DhKGnWgn.js";
6
6
  import { cn as m } from "./lib/utils-B6zhukbw.js";
7
- import L from "./node_modules/lucide-react/dist/esm/icons/x-Cdi8GS7U.js";
7
+ import L from "./node_modules/lucide-react/dist/esm/icons/x-BDxS-rYd.js";
8
8
  const S = 639, j = `(max-width: ${S}px)`, C = i.createContext(null);
9
9
  function n(e) {
10
10
  const s = i.useContext(C);
@@ -0,0 +1,37 @@
1
+ import { forwardRef as b, createElement as m } from "react";
2
+ import t from "./defaultAttributes-C1BTxN61.js";
3
+ import { hasA11yProp as g } from "./shared/src/utils/hasA11yProp-Lff9pF65.js";
4
+ import { mergeClasses as w } from "./shared/src/utils/mergeClasses-HV-Vu34x.js";
5
+ import { useLucideContext as x } from "./context-C4oH64Wf.js";
6
+ const S = b(
7
+ ({ color: d, size: e, strokeWidth: s, absoluteStrokeWidth: h, className: c = "", children: r, iconNode: l, ...i }, f) => {
8
+ const {
9
+ size: o = 24,
10
+ strokeWidth: a = 2,
11
+ absoluteStrokeWidth: u = !1,
12
+ color: n = "currentColor",
13
+ className: p = ""
14
+ } = x() ?? {}, k = h ?? u ? Number(s ?? a) * 24 / Number(e ?? o) : s ?? a;
15
+ return m(
16
+ "svg",
17
+ {
18
+ ref: f,
19
+ ...t,
20
+ width: e ?? o ?? t.width,
21
+ height: e ?? o ?? t.height,
22
+ stroke: d ?? n,
23
+ strokeWidth: k,
24
+ className: w("lucide", p, c),
25
+ ...!r && !g(i) && { "aria-hidden": "true" },
26
+ ...i
27
+ },
28
+ [
29
+ ...l.map(([N, W]) => m(N, W)),
30
+ ...Array.isArray(r) ? r : [r]
31
+ ]
32
+ );
33
+ }
34
+ );
35
+ export {
36
+ S as default
37
+ };
@@ -0,0 +1,5 @@
1
+ import { createContext as t, useContext as e } from "react";
2
+ const o = t({}), n = () => e(o);
3
+ export {
4
+ n as useLucideContext
5
+ };
@@ -0,0 +1,23 @@
1
+ import { forwardRef as c, createElement as f } from "react";
2
+ import { mergeClasses as i } from "./shared/src/utils/mergeClasses-HV-Vu34x.js";
3
+ import { toKebabCase as l } from "./shared/src/utils/toKebabCase-DsnfsuSi.js";
4
+ import { toPascalCase as o } from "./shared/src/utils/toPascalCase-DZxyG2X3.js";
5
+ import p from "./Icon-OkokCq-b.js";
6
+ const b = (a, r) => {
7
+ const e = c(
8
+ ({ className: s, ...m }, t) => f(p, {
9
+ ref: t,
10
+ iconNode: r,
11
+ className: i(
12
+ `lucide-${l(o(a))}`,
13
+ `lucide-${a}`,
14
+ s
15
+ ),
16
+ ...m
17
+ })
18
+ );
19
+ return e.displayName = o(a), e;
20
+ };
21
+ export {
22
+ b as default
23
+ };
@@ -1,4 +1,4 @@
1
- import o from "../createLucideIcon-5_J8fxOF.js";
1
+ import o from "../createLucideIcon-BI4k0Tt0.js";
2
2
  const t = [
3
3
  ["path", { d: "m12 19-7-7 7-7", key: "1l729n" }],
4
4
  ["path", { d: "M19 12H5", key: "x3x0zl" }]
@@ -1,4 +1,4 @@
1
- import o from "../createLucideIcon-5_J8fxOF.js";
1
+ import o from "../createLucideIcon-BI4k0Tt0.js";
2
2
  const t = [
3
3
  ["path", { d: "M18 6 6 18", key: "1bl5f8" }],
4
4
  ["path", { d: "m6 6 12 12", key: "d8bk6v" }]
@@ -0,0 +1,9 @@
1
+ const e = (t) => {
2
+ for (const r in t)
3
+ if (r.startsWith("aria-") || r === "role" || r === "title")
4
+ return !0;
5
+ return !1;
6
+ };
7
+ export {
8
+ e as hasA11yProp
9
+ };
@@ -0,0 +1,4 @@
1
+ const n = (...i) => i.filter((e, s, t) => !!e && e.trim() !== "" && t.indexOf(e) === s).join(" ").trim();
2
+ export {
3
+ n as mergeClasses
4
+ };
@@ -0,0 +1,7 @@
1
+ const t = (s) => s.replace(
2
+ /^([A-Z])|[\s-_]+(\w)/g,
3
+ (o, a, e) => e ? e.toUpperCase() : a.toLowerCase()
4
+ );
5
+ export {
6
+ t as toCamelCase
7
+ };
@@ -0,0 +1,4 @@
1
+ const e = (a) => a.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
2
+ export {
3
+ e as toKebabCase
4
+ };
@@ -0,0 +1,8 @@
1
+ import { toCamelCase as e } from "./toCamelCase-BZAgYi2F.js";
2
+ const o = (a) => {
3
+ const s = e(a);
4
+ return s.charAt(0).toUpperCase() + s.slice(1);
5
+ };
6
+ export {
7
+ o as toPascalCase
8
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/BikeProductCard/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AASrD,KAAK,oBAAoB,GAAG;IAC1B,IAAI,EAAE,WAAW,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,uBAAuB,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,WAAW,EACX,uBAAuB,EACvB,cAA8B,EAC9B,QAAQ,EACR,cAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,OAAmB,EACnB,MAAM,GACP,EAAE,oBAAoB,2CA2FtB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/BikeProductCard/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AASrD,KAAK,oBAAoB,GAAG;IAC1B,IAAI,EAAE,WAAW,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,uBAAuB,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,WAAW,EACX,uBAAuB,EACvB,cAA8B,EAC9B,QAAQ,EACR,cAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,OAAmB,EACnB,MAAM,GACP,EAAE,oBAAoB,2CAgFtB"}
@@ -1,87 +1,82 @@
1
- import { jsxs as a, jsx as e, Fragment as d } from "react/jsx-runtime";
2
- import { Link as S } from "@rpcbase/router";
3
- import { cn as j } from "@rpcbase/ui";
1
+ import { jsxs as a, jsx as e, Fragment as _ } from "react/jsx-runtime";
2
+ import { Link as B } from "@rpcbase/router";
3
+ import { cn as S } from "@rpcbase/ui";
4
4
  import { Bike as C, ArrowRight as O } from "lucide-react";
5
- import { useTranslation as P } from "react-i18next";
6
- import { getAvailabilityVariant as z } from "../../lib/utils.js";
7
- import { resolveProductImageContainerStyle as I } from "../../lib/productImageStyles.js";
8
- import { getLocalizedValue as p } from "../../localization.js";
9
- import { Badge as h } from "../../ui/badge.js";
10
- import { Button as T } from "../../ui/button.js";
11
- import { ProductPriceBadge as f } from "../ProductPriceBadge/index.js";
5
+ import { useTranslation as j } from "react-i18next";
6
+ import { getAvailabilityVariant as P } from "../../lib/utils.js";
7
+ import { resolveProductImageContainerStyle as z } from "../../lib/productImageStyles.js";
8
+ import { getLocalizedValue as d } from "../../localization.js";
9
+ import { Badge as p } from "../../ui/badge.js";
10
+ import { Button as I } from "../../ui/button.js";
11
+ import { ProductPriceBadge as T } from "../ProductPriceBadge/index.js";
12
12
  function G({
13
13
  bike: t,
14
- detailsPath: u,
15
- productDetailsLinkState: x,
16
- actionLabelKey: g = "product_cta",
17
- onAction: v,
18
- actionDisabled: N = !1,
19
- availabilityLabel: y,
20
- fallbackLanguage: r,
21
- variant: w = "default",
22
- testId: b
14
+ detailsPath: h,
15
+ productDetailsLinkState: f,
16
+ actionLabelKey: u = "product_cta",
17
+ onAction: x,
18
+ actionDisabled: g = !1,
19
+ availabilityLabel: v,
20
+ fallbackLanguage: i,
21
+ variant: N = "default",
22
+ testId: y
23
23
  }) {
24
- const { t: s, i18n: n } = P(), l = p(t.name, n.language, r), _ = p(t.description, n.language, r), o = typeof t.images?.[0] == "string" ? t.images[0].trim() : "", c = I(t.primaryImageStyle), m = z(t.availabilityStatus), i = w === "booking", B = t.availabilityStatus === "OUT_OF_STOCK";
24
+ const { t: l, i18n: s } = j(), r = d(t.name, s.language, i), w = d(t.description, s.language, i), n = typeof t.images?.[0] == "string" ? t.images[0].trim() : "", o = z(t.primaryImageStyle), c = P(t.availabilityStatus), m = N === "booking", b = t.availabilityStatus === "OUT_OF_STOCK";
25
25
  return /* @__PURE__ */ a(
26
26
  "div",
27
27
  {
28
28
  className: "flex h-full flex-col gap-2 rounded-xl border border-slate-200 bg-white p-3 shadow-sm",
29
- "data-testid": b,
29
+ "data-testid": y,
30
30
  children: [
31
31
  /* @__PURE__ */ a("div", { className: "flex flex-1 items-stretch gap-4", children: [
32
32
  /* @__PURE__ */ e("div", { className: "w-24 shrink-0 sm:w-28", children: /* @__PURE__ */ a(
33
33
  "div",
34
34
  {
35
- className: j("relative h-full min-h-20 overflow-hidden rounded-xl", c.className),
36
- style: c.style,
35
+ className: S("relative h-full min-h-20 overflow-hidden rounded-xl", o.className),
36
+ style: o.style,
37
37
  children: [
38
- o ? /* @__PURE__ */ e("img", { src: o, alt: l, className: "absolute inset-0 h-full w-full object-contain p-1", loading: "lazy" }) : /* @__PURE__ */ e("div", { className: "absolute inset-0 flex items-center justify-center text-slate-400", children: /* @__PURE__ */ e(C, { className: "h-7 w-7", "aria-hidden": "true" }) }),
39
- i && B ? /* @__PURE__ */ e(
40
- h,
38
+ n ? /* @__PURE__ */ e("img", { src: n, alt: r, className: "absolute inset-0 h-full w-full object-contain p-1", loading: "lazy" }) : /* @__PURE__ */ e("div", { className: "absolute inset-0 flex items-center justify-center text-slate-400", children: /* @__PURE__ */ e(C, { className: "h-7 w-7", "aria-hidden": "true" }) }),
39
+ m && b ? /* @__PURE__ */ e(
40
+ p,
41
41
  {
42
42
  variant: "destructive",
43
43
  className: "pointer-events-none absolute right-2 top-2 shadow-sm",
44
- children: /* @__PURE__ */ e("span", { children: s("availability_out_of_stock") })
44
+ children: /* @__PURE__ */ e("span", { children: l("availability_out_of_stock") })
45
45
  }
46
46
  ) : null
47
47
  ]
48
48
  }
49
49
  ) }),
50
50
  /* @__PURE__ */ a("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [
51
- i ? /* @__PURE__ */ a("div", { className: "flex items-start justify-between gap-2", children: [
52
- /* @__PURE__ */ e("p", { className: "min-w-0 text-sm font-semibold text-slate-950", children: /* @__PURE__ */ e("span", { children: l }) }),
53
- /* @__PURE__ */ e(f, { prices: t.prices, className: "shrink-0" })
54
- ] }) : /* @__PURE__ */ a(d, { children: [
55
- /* @__PURE__ */ e("p", { className: "text-sm font-semibold text-slate-950", children: /* @__PURE__ */ e("span", { children: l }) }),
56
- /* @__PURE__ */ e(f, { prices: t.prices, className: "self-start" })
57
- ] }),
58
- /* @__PURE__ */ e("p", { className: "line-clamp-2 text-xs text-slate-600", children: /* @__PURE__ */ e("span", { children: _ }) })
51
+ /* @__PURE__ */ e("p", { className: "min-w-0 text-sm font-semibold text-slate-950", children: /* @__PURE__ */ e("span", { children: r }) }),
52
+ /* @__PURE__ */ e(T, { prices: t.prices, className: "self-start" }),
53
+ /* @__PURE__ */ e("p", { className: "line-clamp-2 text-xs text-slate-600", children: /* @__PURE__ */ e("span", { children: w }) })
59
54
  ] })
60
55
  ] }),
61
56
  /* @__PURE__ */ a("div", { className: "flex flex-wrap items-center gap-x-2 gap-y-1", children: [
62
- i ? null : /* @__PURE__ */ a(d, { children: [
63
- /* @__PURE__ */ e(h, { variant: m.variant, children: /* @__PURE__ */ e("span", { children: y ?? s(m.labelKey) }) }),
57
+ m ? null : /* @__PURE__ */ a(_, { children: [
58
+ /* @__PURE__ */ e(p, { variant: c.variant, children: /* @__PURE__ */ e("span", { children: v ?? l(c.labelKey) }) }),
64
59
  /* @__PURE__ */ e("span", { className: "text-slate-400", children: "·" })
65
60
  ] }),
66
61
  /* @__PURE__ */ e(
67
- S,
62
+ B,
68
63
  {
69
- to: u,
70
- state: x,
64
+ to: h,
65
+ state: f,
71
66
  className: "text-xs font-medium text-slate-700 hover:text-slate-950",
72
- children: /* @__PURE__ */ e("span", { children: s("product_details_link") })
67
+ children: /* @__PURE__ */ e("span", { children: l("product_details_link") })
73
68
  }
74
69
  ),
75
70
  /* @__PURE__ */ a(
76
- T,
71
+ I,
77
72
  {
78
73
  type: "button",
79
74
  size: "sm",
80
75
  className: "ml-auto rounded-full gap-2 text-xs",
81
- onClick: v,
82
- disabled: N,
76
+ onClick: x,
77
+ disabled: g,
83
78
  children: [
84
- /* @__PURE__ */ e("span", { children: s(g) }),
79
+ /* @__PURE__ */ e("span", { children: l(u) }),
85
80
  /* @__PURE__ */ e(O, { className: "h-4 w-4", "aria-hidden": "true" })
86
81
  ]
87
82
  }
@@ -1,7 +1,7 @@
1
1
  import { jsx as e, jsxs as i } from "react/jsx-runtime";
2
2
  import { useState as O, useEffect as q } from "react";
3
3
  import { useMediaQuery as K } from "@rpcbase/client";
4
- import { RESPONSIVE_DIALOG_MOBILE_MEDIA_QUERY as T, ResponsiveDialog as G, ResponsiveDialogContent as W, ResponsiveDialogHeader as F, ResponsiveDialogTitle as H, ResponsiveDialogDescription as U, ResponsiveDialogFooter as X } from "../../chunks/ui/dist/ResponsiveDialog-D8YzB_3J.js";
4
+ import { RESPONSIVE_DIALOG_MOBILE_MEDIA_QUERY as T, ResponsiveDialog as G, ResponsiveDialogContent as W, ResponsiveDialogHeader as F, ResponsiveDialogTitle as H, ResponsiveDialogDescription as U, ResponsiveDialogFooter as X } from "../../chunks/ui/dist/ResponsiveDialog-DhFgsW_0.js";
5
5
  import { cn as S } from "@rpcbase/ui";
6
6
  import { Bike as Y, CheckCircle2 as I, Plus as V } from "lucide-react";
7
7
  import { useTranslation as Z } from "react-i18next";
@@ -2,7 +2,7 @@ import { jsxs as ne, jsx as s } from "react/jsx-runtime";
2
2
  import { differenceInCalendarDays as me } from "date-fns";
3
3
  import { createContext as pe, useRef as F, useState as X, useEffect as v, useContext as ye } from "react";
4
4
  import { cn as k, DayPickerField as De } from "@rpcbase/ui";
5
- import { useMorphingModalWizardOverlayLayer as Ee } from "../../../chunks/ui/dist/MorphingModalWizard-BuRND-yE.js";
5
+ import { useMorphingModalWizardOverlayLayer as Ee } from "../../../chunks/ui/dist/MorphingModalWizard-CPLr3dh2.js";
6
6
  import { DayPicker as he } from "../../../ui/day-picker.js";
7
7
  import { Label as ve } from "../../../ui/label.js";
8
8
  import { Provider as be, Root as ge, TooltipTrigger as Me, Content as ke } from "../../../ui/tooltip.js";
@@ -1,7 +1,7 @@
1
1
  import { jsxs as M, Fragment as w, jsx as r } from "react/jsx-runtime";
2
2
  import { useRef as P, useEffect as N } from "react";
3
3
  import { cn as T, HourPickerField as V } from "@rpcbase/ui";
4
- import { useMorphingModalWizardOverlayLayer as H } from "../../../chunks/ui/dist/MorphingModalWizard-BuRND-yE.js";
4
+ import { useMorphingModalWizardOverlayLayer as H } from "../../../chunks/ui/dist/MorphingModalWizard-CPLr3dh2.js";
5
5
  import { Label as U } from "../../../ui/label.js";
6
6
  import { useBookingPeriod as A } from "../BookingPeriodContext.js";
7
7
  import { BookingPeriodFieldErrorMessage as j } from "./BookingPeriodFieldErrorMessage.js";
@@ -2,7 +2,7 @@ import { jsxs as I, jsx as u } from "react/jsx-runtime";
2
2
  import { useRef as L, useState as A, useEffect as H } from "react";
3
3
  import { DayButton as U } from "react-day-picker";
4
4
  import { cn as f, DayPickerField as K } from "@rpcbase/ui";
5
- import { useMorphingModalWizardOverlayLayer as R } from "../../../chunks/ui/dist/MorphingModalWizard-BuRND-yE.js";
5
+ import { useMorphingModalWizardOverlayLayer as R } from "../../../chunks/ui/dist/MorphingModalWizard-CPLr3dh2.js";
6
6
  import { DayPicker as v } from "../../../ui/day-picker.js";
7
7
  import { Label as _ } from "../../../ui/label.js";
8
8
  import { useBookingPeriod as $ } from "../BookingPeriodContext.js";
@@ -1,7 +1,7 @@
1
1
  import { jsxs as E, Fragment as B, jsx as n } from "react/jsx-runtime";
2
2
  import { useRef as O, useEffect as S } from "react";
3
3
  import { cn as T, HourPickerField as R } from "@rpcbase/ui";
4
- import { useMorphingModalWizardOverlayLayer as w } from "../../../chunks/ui/dist/MorphingModalWizard-BuRND-yE.js";
4
+ import { useMorphingModalWizardOverlayLayer as w } from "../../../chunks/ui/dist/MorphingModalWizard-CPLr3dh2.js";
5
5
  import { Label as P } from "../../../ui/label.js";
6
6
  import { useBookingPeriod as H } from "../BookingPeriodContext.js";
7
7
  import { BookingPeriodFieldErrorMessage as U } from "./BookingPeriodFieldErrorMessage.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ContactSection/index.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAqBzD,wBAAgB,cAAc,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,2CA2SpG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ContactSection/index.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAoBzD,wBAAgB,cAAc,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,2CAmRpG"}