@loczer/storefront-sdk 0.193.0 → 0.195.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 (82) hide show
  1. package/dist/chunks/pkg/booking-engine/dist/models/{Product.shared-cjcvMCMa.js → Product.shared-iVSHRdn4.js} +21 -21
  2. package/dist/chunks/pkg/booking-engine/dist/schemas/{base-asset-CsOe0vXi.js → base-asset-BRQVuIes.js} +1 -1
  3. package/dist/chunks/pkg/booking-engine/dist/schemas/{base-booking-Sjsqh31e.js → base-booking-Bhy2Kww1.js} +2 -2
  4. package/dist/chunks/pkg/booking-engine/dist/schemas/{base-product-C_ATjuc6.js → base-product-BJHQLX8t.js} +1 -1
  5. package/dist/chunks/pkg/booking-engine/dist/schemas/{insurance-B01h642r.js → insurance-CPeHsTss.js} +1 -1
  6. package/dist/chunks/pkg/booking-engine/dist/schemas-BfXM1Dgb.js +14 -0
  7. package/dist/chunks/pkg/ui/dist/{Button-CxG2fSpA.js → Button-Cr_u8vnh.js} +1 -1
  8. package/dist/chunks/pkg/ui/dist/{Dialog-4leTWiev.js → Dialog-CczmPDwY.js} +1 -1
  9. package/dist/chunks/pkg/ui/dist/Drawer/{index-DA5V7R_q.js → index-CSvSVP_J.js} +1 -1
  10. package/dist/chunks/pkg/ui/dist/Map/{MapContent-BmKjdWmq.js → MapContent-CDeWtwKa.js} +1 -1
  11. package/dist/chunks/pkg/ui/dist/{Map-CsOTdTtL.js → Map-Cs7wgtH9.js} +2 -2
  12. package/dist/chunks/pkg/ui/dist/{MorphingModalWizard-CfEqkJ0y.js → MorphingModalWizard-j1CgFGLe.js} +4 -3
  13. package/dist/chunks/pkg/ui/dist/{ResponsiveDialog-C6IWYoIg.js → ResponsiveDialog-BVwhTZQo.js} +3 -3
  14. package/dist/chunks/pkg/ui/dist/{ScrollArea-Bjwo84cv.js → ScrollArea-BqLd0xZj.js} +1 -1
  15. package/dist/chunks/pkg/ui/dist/Spinner/{index-DzMEU0iA.js → index-Cgi70z_E.js} +1 -1
  16. package/dist/chunks/pkg/ui/dist/lib/utils-DXB19bzk.js +8 -0
  17. package/dist/components/BikeProductCard/index.js +6 -6
  18. package/dist/components/BookingBikeVariantDialog/index.js +7 -7
  19. package/dist/components/BookingFlowSteps/index.js +11 -11
  20. package/dist/components/BookingPeriodSelector/components/BookingEndDateField.js +1 -1
  21. package/dist/components/BookingPeriodSelector/components/BookingEndTimeField.d.ts.map +1 -1
  22. package/dist/components/BookingPeriodSelector/components/BookingEndTimeField.js +36 -54
  23. package/dist/components/BookingPeriodSelector/components/BookingStartDateField.js +1 -1
  24. package/dist/components/BookingPeriodSelector/components/BookingStartTimeField.d.ts.map +1 -1
  25. package/dist/components/BookingPeriodSelector/components/BookingStartTimeField.js +36 -54
  26. package/dist/components/BookingPeriodSelector/components/BookingTimeSlotsStatus.js +1 -1
  27. package/dist/components/BookingPeriodSelector/components/internal/BookingHourPickerField.d.ts +7 -0
  28. package/dist/components/BookingPeriodSelector/components/internal/BookingHourPickerField.d.ts.map +1 -0
  29. package/dist/components/BookingPeriodSelector/components/internal/BookingHourPickerField.js +27 -0
  30. package/dist/components/BookingPeriodSelector/components/internal/StorefrontHourPickerField.d.ts +36 -0
  31. package/dist/components/BookingPeriodSelector/components/internal/StorefrontHourPickerField.d.ts.map +1 -0
  32. package/dist/components/BookingPeriodSelector/components/internal/StorefrontHourPickerField.js +830 -0
  33. package/dist/components/BookingPeriodSelector/components/internal/useIsTouchDevice.d.ts +2 -0
  34. package/dist/components/BookingPeriodSelector/components/internal/useIsTouchDevice.d.ts.map +1 -0
  35. package/dist/components/BookingPeriodSelector/components/internal/useIsTouchDevice.js +21 -0
  36. package/dist/components/BookingPeriodSelector/useBookingPeriodController.d.ts +4 -1
  37. package/dist/components/BookingPeriodSelector/useBookingPeriodController.d.ts.map +1 -1
  38. package/dist/components/BookingPeriodSelector/useBookingPeriodController.js +114 -110
  39. package/dist/components/ContactSection/index.js +35 -35
  40. package/dist/components/ContractSaleDocument/DocumentAcceptanceSection.js +4 -4
  41. package/dist/components/ContractSaleDocument/ThumbnailSidebar.js +1 -1
  42. package/dist/components/DeliveryAddressSelector/index.js +5 -5
  43. package/dist/components/Footer/index.js +11 -11
  44. package/dist/components/FulfillmentSection/index.js +9 -9
  45. package/dist/components/Header/index.js +61 -61
  46. package/dist/components/Map/index.js +1 -1
  47. package/dist/components/PoweredByLoczerBadge/index.js +5 -5
  48. package/dist/components/ProductPriceBadge/index.js +73 -73
  49. package/dist/components/StorefrontCancellationPolicyNotice/index.js +6 -6
  50. package/dist/components/StorefrontCartPanel/index.js +8 -8
  51. package/dist/components/StorefrontInsuranceNotice/index.js +6 -6
  52. package/dist/components/StorefrontPopupMessages/index.js +8 -8
  53. package/dist/components/payment/MollieCardFieldsForm.js +1 -1
  54. package/dist/components/payment/StripeCardFieldsForm.js +1 -1
  55. package/dist/index.d.ts +15 -3
  56. package/dist/index.js +70 -70
  57. package/dist/lib/booking.js +1 -1
  58. package/dist/lib/checkoutSubmit.js +2 -2
  59. package/dist/lib/utils.d.ts +3 -1
  60. package/dist/lib/utils.d.ts.map +1 -1
  61. package/dist/lib/utils.js +9 -5
  62. package/dist/pages/BookingPage.d.ts.map +1 -1
  63. package/dist/pages/BookingPage.js +187 -159
  64. package/dist/pages/CheckoutPaymentPage.js +1 -1
  65. package/dist/pages/ContractSaleDocumentPage.js +15 -15
  66. package/dist/pages/HomePage.d.ts.map +1 -1
  67. package/dist/pages/HomePage.js +263 -257
  68. package/dist/pages/PaymentLinkPage.js +1 -1
  69. package/dist/pages/PaymentLinkSuccessPage.js +1 -1
  70. package/dist/pages/ProductPage.js +143 -143
  71. package/dist/pages/checkout/components/CheckoutCouponCard.js +5 -5
  72. package/dist/pages/checkout/components/CheckoutPaymentSummaryCard.js +1 -1
  73. package/dist/storefront.css +1 -1
  74. package/dist/storefrontSchemas.js +1 -1
  75. package/package.json +5 -1
  76. package/dist/chunks/node_modules/clsx/dist/clsx-CdyIqUTr.js +0 -16
  77. package/dist/chunks/node_modules/tailwind-merge/dist/bundle-mjs-CF4QheV5.js +0 -1608
  78. package/dist/chunks/pkg/booking-engine/dist/schemas-D_yUBLa0.js +0 -14
  79. package/dist/chunks/pkg/ui/dist/lib/utils-BN5KOMSm.js +0 -8
  80. package/dist/components/BookingPeriodSelector/components/internal/ModalHourPickerField.d.ts +0 -22
  81. package/dist/components/BookingPeriodSelector/components/internal/ModalHourPickerField.d.ts.map +0 -1
  82. package/dist/components/BookingPeriodSelector/components/internal/ModalHourPickerField.js +0 -333
@@ -1,20 +1,20 @@
1
1
  import { useBookingPeriod as e } from "../BookingPeriodContext.js";
2
- import { useMorphingModalWizardOverlayLayer as t } from "../../../chunks/pkg/ui/dist/MorphingModalWizard-CfEqkJ0y.js";
2
+ import { useMorphingModalWizardOverlayLayer as t } from "../../../chunks/pkg/ui/dist/MorphingModalWizard-j1CgFGLe.js";
3
3
  import { Label as n } from "../../../ui/label.js";
4
4
  import { BookingPeriodFieldErrorMessage as r } from "./BookingPeriodFieldErrorMessage.js";
5
- import { ModalHourPickerField as i } from "./internal/ModalHourPickerField.js";
5
+ import { BookingHourPickerField as i } from "./internal/BookingHourPickerField.js";
6
6
  import { useEffect as a, useRef as o } from "react";
7
7
  import { Fragment as s, jsx as c, jsxs as l } from "react/jsx-runtime";
8
- import { HourPickerField as u, cn as d } from "@rpcbase/ui";
8
+ import { cn as u } from "@rpcbase/ui";
9
9
  //#region src/components/BookingPeriodSelector/components/BookingStartTimeField.tsx
10
- var f = (e, t, n) => new Intl.NumberFormat(t, {
10
+ var d = (e, t, n) => new Intl.NumberFormat(t, {
11
11
  style: "currency",
12
12
  currency: n,
13
13
  minimumFractionDigits: 0,
14
14
  maximumFractionDigits: 0
15
- }).format(e / 100), p = () => {
16
- let { labels: p, localeCode: m, currencyCode: h, startTime: g, selectStartTime: _, startTimeSlots: v, startTimeSlotsStatus: y, isStartTimeSelectOpen: b, setIsStartTimeSelectOpen: x, labelClassName: S, inputClassName: C, buttonClassName: w, errors: T, isHydrated: E, isStartToday: D, earliestMinutesForToday: O } = e(), k = v.map((e) => {
17
- let t = D && O != null && e.startMinutes < O, n = e.isDisabled || t, r = e.disabledReason === "closed" ? p.timeSlotClosedLabel ?? "Closed" : e.disabledReason, i = e.isExtra && e.extraAmount != null ? p.timeSlotExtraFee?.({ amount: f(e.extraAmount, m, h) }) ?? `Extra fee: ${f(e.extraAmount, m, h)}` : null, a = e.isDisabled && r ? r : null, o = i && a ? /* @__PURE__ */ l(s, { children: [/* @__PURE__ */ c("span", {
15
+ }).format(e / 100), f = () => {
16
+ let { labels: f, localeCode: p, currencyCode: m, startTime: h, selectStartTime: g, startTimeSlots: _, startTimeSlotsStatus: v, isStartTimeSelectOpen: y, setIsStartTimeSelectOpen: b, labelClassName: x, inputClassName: S, buttonClassName: C, errors: w, isHydrated: T, isStartToday: E, earliestMinutesForToday: D } = e(), O = _.map((e) => {
17
+ let t = E && D != null && e.startMinutes < D, n = e.isDisabled || t, r = e.disabledReason === "closed" ? f.timeSlotClosedLabel ?? "Closed" : e.disabledReason, i = e.isExtra && e.extraAmount != null ? f.timeSlotExtraFee?.({ amount: d(e.extraAmount, p, m) }) ?? `Extra fee: ${d(e.extraAmount, p, m)}` : null, a = e.isDisabled && r ? r : null, o = i && a ? /* @__PURE__ */ l(s, { children: [/* @__PURE__ */ c("span", {
18
18
  className: "block",
19
19
  children: i
20
20
  }), /* @__PURE__ */ c("span", {
@@ -27,80 +27,62 @@ var f = (e, t, n) => new Intl.NumberFormat(t, {
27
27
  disabled: n,
28
28
  description: o
29
29
  };
30
- }), A = k.some((e) => !e.disabled), j = y !== "local" && (y !== "ready" || !A), M = y === "loading" ? p.timeSlotsLoading : y === "error" ? p.timeSlotsLoadError : y === "ready" && !A ? p.timeSlotsUnavailable : p.startTime, N = k.find((e) => !e.disabled)?.value, P = o(g ?? N ?? null), F = t(), I = !!F;
30
+ }), k = O.some((e) => !e.disabled), A = v !== "local" && (v !== "ready" || !k), j = v === "loading" ? f.timeSlotsLoading : v === "error" ? f.timeSlotsLoadError : v === "ready" && !k ? f.timeSlotsUnavailable : f.startTime, M = O.find((e) => !e.disabled)?.value, N = o(h ?? M ?? null), P = t();
31
31
  return a(() => {
32
- b || (P.current = g ?? N ?? null);
32
+ y || (N.current = h ?? M ?? null);
33
33
  }, [
34
- N,
35
- b,
36
- g
34
+ M,
35
+ y,
36
+ h
37
37
  ]), a(() => {
38
38
  if (typeof document > "u") return;
39
39
  let e = document.getElementById("start-time-picker");
40
40
  if (!(e instanceof HTMLInputElement)) return;
41
41
  let t = (e) => {
42
- if (e.key !== "Enter" || !b) return;
42
+ if (e.key !== "Enter" || !y) return;
43
43
  e.preventDefault(), e.stopPropagation();
44
- let t = P.current ?? g ?? N;
45
- t && _(t);
44
+ let t = N.current ?? h ?? M;
45
+ t && g(t);
46
46
  };
47
47
  return e.addEventListener("keydown", t, !0), () => {
48
48
  e.removeEventListener("keydown", t, !0);
49
49
  };
50
50
  }, [
51
- N,
52
- b,
53
- _,
54
- g
51
+ M,
52
+ y,
53
+ g,
54
+ h
55
55
  ]), /* @__PURE__ */ l("div", {
56
- className: "group/form-item relative w-[150px]",
56
+ className: "group/form-item relative min-w-0 w-[150px] md:shrink-0",
57
57
  children: [
58
58
  /* @__PURE__ */ c(n, {
59
59
  htmlFor: "start-time-picker",
60
- className: d("mb-1 block text-sm font-medium", S),
61
- children: /* @__PURE__ */ c("span", { children: p.startTime })
60
+ className: u("mb-1 block text-sm font-medium", x),
61
+ children: /* @__PURE__ */ c("span", { children: f.startTime })
62
62
  }),
63
- I ? /* @__PURE__ */ c(i, {
63
+ /* @__PURE__ */ c(i, {
64
64
  id: "start-time-picker",
65
- placeholder: M,
66
- value: g ?? null,
65
+ placeholder: j,
66
+ value: h ?? null,
67
67
  onValueUpdate: (e) => {
68
- e && (P.current = e);
68
+ e && (N.current = e);
69
69
  },
70
70
  onChange: (e) => {
71
- e && (P.current = e, _(e));
71
+ e && (N.current = e, g(e));
72
72
  },
73
- options: k,
74
- disabled: j,
75
- open: b,
76
- onOpenChange: x,
73
+ options: O,
74
+ disabled: A,
75
+ open: y,
76
+ onOpenChange: b,
77
77
  triggerTestId: "start-time-trigger",
78
78
  contentTestId: "start-time-select-content",
79
- isHydrated: E,
80
- inputClassName: d(T.startTime && "border-destructive", C, w),
81
- portalContainer: F
82
- }) : /* @__PURE__ */ c(u, {
83
- id: "start-time-picker",
84
- placeholder: M,
85
- value: g ?? null,
86
- onValueUpdate: (e) => {
87
- e && (P.current = e);
88
- },
89
- onChange: (e) => {
90
- e && (P.current = e, _(e));
91
- },
92
- options: k,
93
- disabled: j,
94
- open: b,
95
- onOpenChange: x,
96
- triggerTestId: "start-time-trigger",
97
- contentTestId: "start-time-select-content",
98
- isHydrated: E,
99
- inputClassName: d(T.startTime && "border-destructive", C, w)
79
+ isHydrated: T,
80
+ inputClassName: u(w.startTime && "border-destructive", S, C),
81
+ portalContainer: P
100
82
  }),
101
- T.startTime && /* @__PURE__ */ c(r, { children: T.startTime })
83
+ w.startTime && /* @__PURE__ */ c(r, { children: w.startTime })
102
84
  ]
103
85
  });
104
86
  };
105
87
  //#endregion
106
- export { p as BookingStartTimeField };
88
+ export { f as BookingStartTimeField };
@@ -4,7 +4,7 @@ import { jsx as n, jsxs as r } from "react/jsx-runtime";
4
4
  import { cn as i } from "@rpcbase/ui";
5
5
  //#region src/components/BookingPeriodSelector/components/BookingTimeSlotsStatus.tsx
6
6
  var a = ({ className: a, testId: o = "booking-time-slots-status" }) => {
7
- let { labels: s, startTimeSlotsStatus: c, endTimeSlotsStatus: l, retryStartTimeSlots: u, retryEndTimeSlots: d, canCommitTimeSlots: f } = t();
7
+ let { labels: s, startTimeSlotsStatus: c, endTimeSlotsStatus: l, retryStartTimeSlots: u, retryEndTimeSlots: d, hasAvailableTimeSlots: f } = t();
8
8
  if (c === "local" && l === "local") return null;
9
9
  let p = c === "error" || l === "error", m = c === "loading" || l === "loading";
10
10
  if (!p && !m && f) return null;
@@ -0,0 +1,7 @@
1
+ import { HourPickerFieldProps } from './StorefrontHourPickerField';
2
+ type BookingHourPickerFieldProps = HourPickerFieldProps & {
3
+ portalContainer?: HTMLElement | null;
4
+ };
5
+ export declare const BookingHourPickerField: ({ options, className, inputClassName, portalContainer, ...props }: BookingHourPickerFieldProps) => import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=BookingHourPickerField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BookingHourPickerField.d.ts","sourceRoot":"","sources":["../../../../../src/components/BookingPeriodSelector/components/internal/BookingHourPickerField.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,oBAAoB,EAE1B,MAAM,6BAA6B,CAAA;AAIpC,KAAK,2BAA2B,GAAG,oBAAoB,GAAG;IACxD,eAAe,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;CACrC,CAAA;AAED,eAAO,MAAM,sBAAsB,GAAI,mEAMpC,2BAA2B,4CAuB7B,CAAA"}
@@ -0,0 +1,27 @@
1
+ import { cn as e } from "../../../../lib/utils.js";
2
+ import { HourPickerField as t } from "./StorefrontHourPickerField.js";
3
+ import { Fragment as n, jsx as r, jsxs as i } from "react/jsx-runtime";
4
+ //#region src/components/BookingPeriodSelector/components/internal/BookingHourPickerField.tsx
5
+ var a = ({ options: a, className: o, inputClassName: s, portalContainer: c, ...l }) => {
6
+ let u = a.map((e) => ({
7
+ ...e,
8
+ selectedLabel: /* @__PURE__ */ i(n, { children: [/* @__PURE__ */ r("span", {
9
+ "data-slot": "booking-hour-picker-mobile-selected-label",
10
+ className: "md:hidden",
11
+ children: e.value
12
+ }), /* @__PURE__ */ r("span", {
13
+ "data-slot": "booking-hour-picker-desktop-selected-label",
14
+ className: "hidden md:inline",
15
+ children: e.label
16
+ })] })
17
+ }));
18
+ return /* @__PURE__ */ r(t, {
19
+ ...l,
20
+ options: u,
21
+ className: e("w-full min-w-0", o),
22
+ inputClassName: e("min-w-0", s),
23
+ portalContainer: c
24
+ });
25
+ };
26
+ //#endregion
27
+ export { a as BookingHourPickerField };
@@ -0,0 +1,36 @@
1
+ import * as React from "react";
2
+ export type HourPickerOption = {
3
+ value: string;
4
+ label: string;
5
+ selectedLabel?: React.ReactNode;
6
+ disabled?: boolean;
7
+ description?: React.ReactNode;
8
+ };
9
+ export type HourPickerInputProps = {
10
+ id?: string;
11
+ value: string | null;
12
+ onChange: (value: string | null) => void;
13
+ onValueUpdate?: (value: string | null) => void;
14
+ options: HourPickerOption[];
15
+ placeholder?: string;
16
+ className?: string;
17
+ inputClassName?: string;
18
+ disabled?: boolean;
19
+ readOnly?: boolean;
20
+ open?: boolean;
21
+ onOpenChange?: (open: boolean) => void;
22
+ triggerTestId?: string;
23
+ contentTestId?: string;
24
+ isHydrated?: boolean;
25
+ portalContainer?: HTMLElement | null;
26
+ };
27
+ export declare function HourPickerInput({ id, value, onChange, onValueUpdate, options, placeholder, className, inputClassName, disabled, readOnly, open: openProp, onOpenChange, triggerTestId, contentTestId, isHydrated, portalContainer, }: HourPickerInputProps): import("react/jsx-runtime").JSX.Element;
28
+ export declare namespace HourPickerInput {
29
+ var displayName: string;
30
+ }
31
+ export type HourPickerFieldProps = HourPickerInputProps;
32
+ export declare function HourPickerField(props: HourPickerFieldProps): import("react/jsx-runtime").JSX.Element;
33
+ export declare namespace HourPickerField {
34
+ var displayName: string;
35
+ }
36
+ //# sourceMappingURL=StorefrontHourPickerField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorefrontHourPickerField.d.ts","sourceRoot":"","sources":["../../../../../src/components/BookingPeriodSelector/components/internal/StorefrontHourPickerField.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAmB9B,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC9B,CAAA;AAyYD,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IACxC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IAC9C,OAAO,EAAE,gBAAgB,EAAE,CAAA;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACtC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,eAAe,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;CACrC,CAAA;AAED,wBAAgB,eAAe,CAAC,EAC9B,EAAE,EACF,KAAK,EACL,QAAQ,EACR,aAAa,EACb,OAAO,EACP,WAA2B,EAC3B,SAAS,EACT,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,IAAI,EAAE,QAAQ,EACd,YAAY,EACZ,aAAa,EACb,aAAa,EACb,UAAU,EACV,eAAe,GAChB,EAAE,oBAAoB,2CA6ctB;yBA9de,eAAe;;;AAke/B,MAAM,MAAM,oBAAoB,GAAG,oBAAoB,CAAA;AA0YvD,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,2CAQ1D;yBARe,eAAe"}