@loczer/storefront-sdk 0.236.0 → 0.237.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 (31) hide show
  1. package/dist/components/FaqSection/index.d.ts +2 -0
  2. package/dist/components/FaqSection/index.d.ts.map +1 -0
  3. package/dist/components/FaqSection/index.js +76 -0
  4. package/dist/components/StorefrontCartPanel/index.d.ts +2 -1
  5. package/dist/components/StorefrontCartPanel/index.d.ts.map +1 -1
  6. package/dist/components/StorefrontCartPanel/index.js +42 -38
  7. package/dist/components/StorefrontInsuranceNotice/index.d.ts.map +1 -1
  8. package/dist/components/StorefrontInsuranceNotice/index.js +3 -12
  9. package/dist/i18n/en.d.ts +3 -2
  10. package/dist/i18n/en.d.ts.map +1 -1
  11. package/dist/i18n/en.js +3 -2
  12. package/dist/i18n/fr.d.ts +3 -2
  13. package/dist/i18n/fr.d.ts.map +1 -1
  14. package/dist/i18n/fr.js +3 -2
  15. package/dist/index.d.ts +14 -5
  16. package/dist/index.js +27 -26
  17. package/dist/lib/storefrontProducts.d.ts +4 -0
  18. package/dist/lib/storefrontProducts.d.ts.map +1 -1
  19. package/dist/lib/storefrontProducts.js +2 -0
  20. package/dist/pages/CheckoutPage.d.ts.map +1 -1
  21. package/dist/pages/CheckoutPage.js +7 -0
  22. package/dist/pages/HomePage.d.ts.map +1 -1
  23. package/dist/pages/HomePage.js +397 -388
  24. package/dist/pages/checkout/components/CheckoutBookingPeriodSummary.d.ts +9 -0
  25. package/dist/pages/checkout/components/CheckoutBookingPeriodSummary.d.ts.map +1 -0
  26. package/dist/pages/checkout/components/CheckoutBookingPeriodSummary.js +83 -0
  27. package/dist/pages/checkout/components/CheckoutSummaryColumn.d.ts +3 -1
  28. package/dist/pages/checkout/components/CheckoutSummaryColumn.d.ts.map +1 -1
  29. package/dist/pages/checkout/components/CheckoutSummaryColumn.js +34 -32
  30. package/dist/storefront.css +1 -1
  31. package/package.json +1 -1
@@ -0,0 +1,2 @@
1
+ export declare function FaqSection(): import("react/jsx-runtime").JSX.Element | null;
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/FaqSection/index.tsx"],"names":[],"mappings":"AAuDA,wBAAgB,UAAU,mDAuCzB"}
@@ -0,0 +1,76 @@
1
+ import { getLocalizedValue as e } from "../../localization.js";
2
+ import { useStorefront as t } from "../../StorefrontContext.js";
3
+ import { useState as n } from "react";
4
+ import { jsx as r, jsxs as i } from "react/jsx-runtime";
5
+ import { useTranslation as a } from "react-i18next";
6
+ import { ChevronDown as o } from "lucide-react";
7
+ import { Accordion as s } from "@base-ui/react/accordion";
8
+ //#region src/components/FaqSection/index.tsx
9
+ var c = [
10
+ "general",
11
+ "deliveries",
12
+ "booking"
13
+ ];
14
+ function l({ items: e }) {
15
+ let [t, a] = n([]);
16
+ return /* @__PURE__ */ r(s.Root, {
17
+ className: "w-full",
18
+ value: t,
19
+ onValueChange: a,
20
+ keepMounted: !0,
21
+ "data-testid": "storefront-faq-column",
22
+ children: e.map((e) => /* @__PURE__ */ i(s.Item, {
23
+ value: e.id,
24
+ className: "border-b border-slate-200",
25
+ children: [/* @__PURE__ */ r(s.Header, {
26
+ className: "flex",
27
+ children: /* @__PURE__ */ i(s.Trigger, {
28
+ className: "flex w-full flex-1 items-center justify-between gap-4 py-4 text-left text-lg font-medium text-slate-700 transition-colors hover:text-slate-950 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 data-[panel-open]:[&>svg]:rotate-180",
29
+ children: [/* @__PURE__ */ r("span", { children: e.question }), /* @__PURE__ */ r(o, {
30
+ className: "h-4 w-4 shrink-0 transition-transform duration-200",
31
+ "aria-hidden": "true"
32
+ })]
33
+ })
34
+ }), /* @__PURE__ */ r(s.Panel, {
35
+ keepMounted: !0,
36
+ className: "h-[var(--accordion-panel-height)] overflow-hidden transition-[height,opacity] duration-200 ease-out data-[ending-style]:h-0 data-[ending-style]:opacity-0 data-[starting-style]:h-0 data-[starting-style]:opacity-0",
37
+ children: /* @__PURE__ */ r("p", {
38
+ className: "whitespace-pre-line pb-4 text-base leading-7 text-slate-600",
39
+ children: /* @__PURE__ */ r("span", { children: e.answer })
40
+ })
41
+ })]
42
+ }, e.id))
43
+ });
44
+ }
45
+ function u() {
46
+ let { i18n: n, t: o } = a(), { storefrontConfiguration: s } = t(), u = s.workspace?.workspaceLanguage, d = s.content?.faq, f = c.flatMap((t) => (d?.[t] ?? []).flatMap((r) => {
47
+ let i = e(r.question, n.language, u).trim(), a = e(r.answer, n.language, u).trim();
48
+ return i && a ? [{
49
+ id: `${t}-${r.id}`,
50
+ question: i,
51
+ answer: a
52
+ }] : [];
53
+ }));
54
+ if (f.length === 0) return null;
55
+ let p = Math.ceil(f.length / 2);
56
+ return /* @__PURE__ */ r("section", {
57
+ id: "faq",
58
+ className: "border-t border-slate-200 bg-white py-12 scroll-mt-16 sm:scroll-mt-20 sm:py-16",
59
+ "data-testid": "storefront-faq",
60
+ children: /* @__PURE__ */ i("div", {
61
+ className: "mx-auto max-w-7xl px-4 sm:px-6",
62
+ children: [/* @__PURE__ */ r("div", {
63
+ className: "text-center",
64
+ children: /* @__PURE__ */ r("h2", {
65
+ className: "text-3xl font-semibold tracking-tight text-slate-950",
66
+ children: /* @__PURE__ */ r("span", { children: o("faq_section_title") })
67
+ })
68
+ }), /* @__PURE__ */ i("div", {
69
+ className: "mx-auto mt-8 grid max-w-6xl grid-cols-1 gap-x-8 gap-y-0 lg:grid-cols-2",
70
+ children: [/* @__PURE__ */ r(l, { items: f.slice(0, p) }), /* @__PURE__ */ r(l, { items: f.slice(p) })]
71
+ })]
72
+ })
73
+ });
74
+ }
75
+ //#endregion
76
+ export { u as FaqSection };
@@ -7,6 +7,7 @@ type StorefrontCartPanelProps = {
7
7
  totalMinor?: number;
8
8
  title?: string;
9
9
  description?: string;
10
+ headerAddon?: ReactNode;
10
11
  checkoutPath?: string;
11
12
  showCheckoutAction?: boolean;
12
13
  showClearAction?: boolean;
@@ -18,6 +19,6 @@ type StorefrontCartPanelProps = {
18
19
  onRemove?: (key: string) => void;
19
20
  onClear?: () => void;
20
21
  };
21
- export declare function StorefrontCartPanel({ lines, itemCount, baseUnitLabel, totalMinor, title, description, checkoutPath, showCheckoutAction, showClearAction, editable, summaryAddon, pricingSummary, stickyTopClassName, onQuantityChange, onRemove, onClear, }: StorefrontCartPanelProps): import("react/jsx-runtime").JSX.Element;
22
+ export declare function StorefrontCartPanel({ lines, itemCount, baseUnitLabel, totalMinor, title, description, headerAddon, checkoutPath, showCheckoutAction, showClearAction, editable, summaryAddon, pricingSummary, stickyTopClassName, onQuantityChange, onRemove, onClear, }: StorefrontCartPanelProps): import("react/jsx-runtime").JSX.Element;
22
23
  export {};
23
24
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/StorefrontCartPanel/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAOtC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AAQtE,KAAK,wBAAwB,GAAG;IAC9B,KAAK,EAAE,yBAAyB,EAAE,CAAA;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,YAAY,CAAC,EAAE,SAAS,CAAA;IACxB,cAAc,CAAC,EAAE,SAAS,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1D,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB,CAAA;AAED,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,SAAS,EACT,aAAa,EACb,UAAU,EACV,KAAK,EACL,WAAW,EACX,YAAY,EACZ,kBAA0B,EAC1B,eAAuB,EACvB,QAAe,EACf,YAAY,EACZ,cAAc,EACd,kBAA6B,EAC7B,gBAAgB,EAChB,QAAQ,EACR,OAAO,GACR,EAAE,wBAAwB,2CAsJ1B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/StorefrontCartPanel/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAOtC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AAQtE,KAAK,wBAAwB,GAAG;IAC9B,KAAK,EAAE,yBAAyB,EAAE,CAAA;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,YAAY,CAAC,EAAE,SAAS,CAAA;IACxB,cAAc,CAAC,EAAE,SAAS,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1D,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB,CAAA;AAED,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,SAAS,EACT,aAAa,EACb,UAAU,EACV,KAAK,EACL,WAAW,EACX,WAAW,EACX,YAAY,EACZ,kBAA0B,EAC1B,eAAuB,EACvB,QAAe,EACf,YAAY,EACZ,cAAc,EACd,kBAA6B,EAC7B,gBAAgB,EAChB,QAAQ,EACR,OAAO,GACR,EAAE,wBAAwB,2CAuJ1B"}
@@ -10,36 +10,40 @@ import { useTranslation as l } from "react-i18next";
10
10
  import { cn as u } from "@rpcbase/ui";
11
11
  import { ArrowRight as d, Trash2 as f } from "lucide-react";
12
12
  //#region src/components/StorefrontCartPanel/index.tsx
13
- function p({ lines: p, itemCount: m, baseUnitLabel: h, totalMinor: g, title: _, description: v, checkoutPath: y, showCheckoutAction: b = !1, showClearAction: x = !1, editable: S = !0, summaryAddon: C, pricingSummary: w, stickyTopClassName: T = "top-24", onQuantityChange: E, onRemove: D, onClear: O }) {
14
- let { t: k, i18n: A } = l();
13
+ function p({ lines: p, itemCount: m, baseUnitLabel: h, totalMinor: g, title: _, description: v, headerAddon: y, checkoutPath: b, showCheckoutAction: x = !1, showClearAction: S = !1, editable: C = !0, summaryAddon: w, pricingSummary: T, stickyTopClassName: E = "top-24", onQuantityChange: D, onRemove: O, onClear: k }) {
14
+ let { t: A, i18n: j } = l();
15
15
  return /* @__PURE__ */ s(i, {
16
- className: u("sticky border-slate-200 bg-white shadow-sm", T),
16
+ className: u("sticky border-slate-200 bg-white shadow-sm", E),
17
17
  children: [/* @__PURE__ */ s("div", {
18
18
  className: "border-b border-slate-200 px-4 py-4",
19
- children: [/* @__PURE__ */ s("div", {
20
- className: "flex items-center justify-between gap-3",
21
- children: [/* @__PURE__ */ o("p", {
22
- className: "text-sm font-semibold text-slate-950",
23
- children: /* @__PURE__ */ o("span", { children: _ ?? k("cart_title") })
24
- }), /* @__PURE__ */ o(t, {
25
- variant: "outline",
26
- className: "border-slate-200 bg-white text-slate-700",
27
- children: /* @__PURE__ */ o("span", { children: k("cart_items_count", { count: m }) })
28
- })]
29
- }), v ? /* @__PURE__ */ o("p", {
30
- className: "mt-1 text-xs text-slate-600",
31
- children: /* @__PURE__ */ o("span", { children: v })
32
- }) : null]
19
+ children: [
20
+ /* @__PURE__ */ s("div", {
21
+ className: "flex items-center justify-between gap-3",
22
+ children: [/* @__PURE__ */ o("p", {
23
+ className: "text-sm font-semibold text-slate-950",
24
+ children: /* @__PURE__ */ o("span", { children: _ ?? A("cart_title") })
25
+ }), /* @__PURE__ */ o(t, {
26
+ variant: "outline",
27
+ className: "border-slate-200 bg-white text-slate-700",
28
+ children: /* @__PURE__ */ o("span", { children: A("cart_items_count", { count: m }) })
29
+ })]
30
+ }),
31
+ v ? /* @__PURE__ */ o("p", {
32
+ className: "mt-1 text-xs text-slate-600",
33
+ children: /* @__PURE__ */ o("span", { children: v })
34
+ }) : null,
35
+ y
36
+ ]
33
37
  }), /* @__PURE__ */ s("div", {
34
38
  className: "grid gap-3 p-4",
35
39
  children: [
36
40
  p.length === 0 ? /* @__PURE__ */ o("p", {
37
41
  className: "text-sm text-slate-600",
38
- children: /* @__PURE__ */ o("span", { children: k("cart_empty") })
42
+ children: /* @__PURE__ */ o("span", { children: A("cart_empty") })
39
43
  }) : /* @__PURE__ */ o("ul", {
40
44
  className: "divide-y divide-slate-200",
41
45
  children: p.map((i) => {
42
- let c = e(i.unitPriceMinor, A.language), l = i.insufficientCapacity === !0, u = i.availabilityIssue === "quantityUnavailable" ? k("availability_quantity_unavailable") : k("availability_out_of_stock");
46
+ let c = e(i.unitPriceMinor, j.language), l = i.insufficientCapacity === !0, u = i.availabilityIssue === "quantityUnavailable" ? A("availability_quantity_unavailable") : A("availability_out_of_stock");
43
47
  return /* @__PURE__ */ s("li", {
44
48
  className: "flex items-start justify-between gap-3 py-4 first:pt-0 last:pb-0",
45
49
  children: [/* @__PURE__ */ s("div", {
@@ -51,7 +55,7 @@ function p({ lines: p, itemCount: m, baseUnitLabel: h, totalMinor: g, title: _,
51
55
  }),
52
56
  i.productVariantLabel ? /* @__PURE__ */ o("p", {
53
57
  className: "text-xs text-slate-600",
54
- children: /* @__PURE__ */ o("span", { children: `${k(i.productVariantIsSize ? "product_size_label" : "product_variant_label")}: ${i.productVariantLabel}` })
58
+ children: /* @__PURE__ */ o("span", { children: `${A(i.productVariantIsSize ? "product_size_label" : "product_variant_label")}: ${i.productVariantLabel}` })
55
59
  }) : null,
56
60
  i.productVariantDescription ? /* @__PURE__ */ o("p", {
57
61
  className: "text-xs text-slate-500",
@@ -60,7 +64,7 @@ function p({ lines: p, itemCount: m, baseUnitLabel: h, totalMinor: g, title: _,
60
64
  /* @__PURE__ */ o(a, { warning: i.productWarning }),
61
65
  /* @__PURE__ */ o("p", {
62
66
  className: "text-xs text-slate-600",
63
- children: /* @__PURE__ */ o("span", { children: k("cart_line_meta", {
67
+ children: /* @__PURE__ */ o("span", { children: A("cart_line_meta", {
64
68
  quantity: i.quantity,
65
69
  price: c,
66
70
  unit: h
@@ -74,26 +78,26 @@ function p({ lines: p, itemCount: m, baseUnitLabel: h, totalMinor: g, title: _,
74
78
  })
75
79
  }) : null
76
80
  ]
77
- }), S ? /* @__PURE__ */ s("div", {
81
+ }), C ? /* @__PURE__ */ s("div", {
78
82
  className: "flex items-center gap-2",
79
- children: [E ? /* @__PURE__ */ o(r, {
83
+ children: [D ? /* @__PURE__ */ o(r, {
80
84
  type: "number",
81
85
  min: 1,
82
86
  max: 99,
83
87
  value: i.quantity,
84
88
  onChange: (e) => {
85
89
  let t = Number(e.target.value);
86
- E(i.key, Number.isFinite(t) ? t : 0);
90
+ D(i.key, Number.isFinite(t) ? t : 0);
87
91
  },
88
92
  className: "h-9 w-16",
89
- "aria-label": k("quantity_label")
90
- }) : null, D ? /* @__PURE__ */ o(n, {
93
+ "aria-label": A("quantity_label")
94
+ }) : null, O ? /* @__PURE__ */ o(n, {
91
95
  type: "button",
92
96
  variant: "ghost",
93
97
  size: "icon",
94
98
  className: "h-8 w-8 text-slate-500 hover:bg-slate-50 hover:text-slate-700",
95
- onClick: () => D(i.key),
96
- "aria-label": k("remove_from_cart"),
99
+ onClick: () => O(i.key),
100
+ "aria-label": A("remove_from_cart"),
97
101
  children: /* @__PURE__ */ o(f, {
98
102
  className: "h-4 w-4",
99
103
  "aria-hidden": "true"
@@ -103,35 +107,35 @@ function p({ lines: p, itemCount: m, baseUnitLabel: h, totalMinor: g, title: _,
103
107
  }, i.key);
104
108
  })
105
109
  }),
106
- C,
107
- w ?? (typeof g == "number" ? /* @__PURE__ */ s("div", {
110
+ w,
111
+ T ?? (typeof g == "number" ? /* @__PURE__ */ s("div", {
108
112
  className: "flex items-center justify-between gap-3 border-t border-slate-200 pt-3 text-sm",
109
113
  children: [/* @__PURE__ */ o("p", {
110
114
  className: "text-slate-700",
111
- children: /* @__PURE__ */ o("span", { children: k("cart_total") })
115
+ children: /* @__PURE__ */ o("span", { children: A("cart_total") })
112
116
  }), /* @__PURE__ */ o("p", {
113
117
  className: "font-semibold text-slate-950",
114
- children: /* @__PURE__ */ o("span", { children: e(g, A.language) })
118
+ children: /* @__PURE__ */ o("span", { children: e(g, j.language) })
115
119
  })]
116
120
  }) : null),
117
121
  /* @__PURE__ */ s("div", {
118
122
  className: "grid gap-2",
119
- children: [b && y ? /* @__PURE__ */ o(c, {
120
- to: y,
123
+ children: [x && b ? /* @__PURE__ */ o(c, {
124
+ to: b,
121
125
  className: u(p.length > 0 ? "block" : "hidden"),
122
126
  children: /* @__PURE__ */ s(n, {
123
127
  className: "w-full gap-2",
124
- children: [/* @__PURE__ */ o("span", { children: k("checkout_button") }), /* @__PURE__ */ o(d, {
128
+ children: [/* @__PURE__ */ o("span", { children: A("checkout_button") }), /* @__PURE__ */ o(d, {
125
129
  className: "h-4 w-4",
126
130
  "aria-hidden": "true"
127
131
  })]
128
132
  })
129
- }) : null, x && O ? /* @__PURE__ */ o(n, {
133
+ }) : null, S && k ? /* @__PURE__ */ o(n, {
130
134
  type: "button",
131
135
  variant: "outline",
132
136
  className: u(p.length > 0 ? "w-full gap-2" : "hidden"),
133
- onClick: O,
134
- children: /* @__PURE__ */ o("span", { children: k("cart_clear") })
137
+ onClick: k,
138
+ children: /* @__PURE__ */ o("span", { children: A("cart_clear") })
135
139
  }) : null]
136
140
  })
137
141
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/StorefrontInsuranceNotice/index.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAsC,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAOzF,KAAK,8BAA8B,GAAG;IACpC,KAAK,EAAE,WAAW,EAAE,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,wBAAgB,yBAAyB,CAAC,EACxC,KAAK,EACL,QAAQ,EACR,gBAAgB,EAChB,SAAS,GACV,EAAE,8BAA8B,2CA2KhC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/StorefrontInsuranceNotice/index.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAsC,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAOzF,KAAK,8BAA8B,GAAG;IACpC,KAAK,EAAE,WAAW,EAAE,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,wBAAgB,yBAAyB,CAAC,EACxC,KAAK,EACL,QAAQ,EACR,gBAAgB,EAChB,SAAS,GACV,EAAE,8BAA8B,2CAmKhC"}
@@ -86,19 +86,10 @@ function v({ bikes: v, currency: y, fallbackLanguage: b, className: x }) {
86
86
  /* @__PURE__ */ d("div", {
87
87
  className: "overflow-y-auto",
88
88
  children: [
89
- /* @__PURE__ */ d("section", {
89
+ /* @__PURE__ */ u("section", {
90
90
  className: "border-b border-slate-200 bg-slate-50",
91
91
  "data-testid": "storefront-insurance-pricing-section",
92
- children: [/* @__PURE__ */ d("div", {
93
- className: "px-5 py-4 sm:px-6",
94
- children: [/* @__PURE__ */ u("h3", {
95
- className: "text-base font-semibold text-slate-950",
96
- children: /* @__PURE__ */ u("span", { children: S("insurance_modal_pricing_title") })
97
- }), /* @__PURE__ */ u("p", {
98
- className: "mt-1 text-sm text-slate-600",
99
- children: /* @__PURE__ */ u("span", { children: S("insurance_modal_pricing_description") })
100
- })]
101
- }), /* @__PURE__ */ u("dl", {
92
+ children: /* @__PURE__ */ u("dl", {
102
93
  className: "grid divide-y divide-slate-200 border-t border-slate-200 sm:grid-cols-2 sm:divide-x sm:divide-y-0",
103
94
  children: k.map((e) => /* @__PURE__ */ d("div", {
104
95
  className: "px-5 py-4 sm:px-6",
@@ -111,7 +102,7 @@ function v({ bikes: v, currency: y, fallbackLanguage: b, className: x }) {
111
102
  children: /* @__PURE__ */ u("span", { children: e.price })
112
103
  })]
113
104
  }, e.kind))
114
- })]
105
+ })
115
106
  }),
116
107
  /* @__PURE__ */ d("section", {
117
108
  className: "border-b border-slate-200 px-5 py-5 sm:px-6",
package/dist/i18n/en.d.ts CHANGED
@@ -41,8 +41,6 @@ export declare const storefront: {
41
41
  insurance_info_aria_label: string;
42
42
  insurance_modal_title: string;
43
43
  insurance_modal_description: string;
44
- insurance_modal_pricing_title: string;
45
- insurance_modal_pricing_description: string;
46
44
  insurance_modal_muscular_bike: string;
47
45
  insurance_modal_electric_bike: string;
48
46
  insurance_modal_price_per_day: string;
@@ -132,6 +130,7 @@ export declare const storefront: {
132
130
  about_section_title: string;
133
131
  about_section_heading: string;
134
132
  about_section_fallback: string;
133
+ faq_section_title: string;
135
134
  testimonials: {
136
135
  title: string;
137
136
  reviews_label: string;
@@ -205,6 +204,7 @@ export declare const storefront: {
205
204
  go_to_checkout: string;
206
205
  checkout_title: string;
207
206
  checkout_subtitle: string;
207
+ checkout_booking_period_edit: string;
208
208
  checkout_summary_title: string;
209
209
  checkout_summary_description: string;
210
210
  checkout_booking_subtotal: string;
@@ -355,6 +355,7 @@ export declare const storefront: {
355
355
  docs_contract_sale_acceptance_section_required_description: string;
356
356
  accessories_title: string;
357
357
  accessories_description: string;
358
+ accessories_view_all: string;
358
359
  accessories_badge: string;
359
360
  contact_section_title: string;
360
361
  contact_section_subtitle: string;
@@ -1 +1 @@
1
- {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4gBtB,CAAA"}
1
+ {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8gBtB,CAAA"}
package/dist/i18n/en.js CHANGED
@@ -42,8 +42,6 @@ var e = {
42
42
  insurance_info_aria_label: "Show theft and accidental damage guarantee terms",
43
43
  insurance_modal_title: "Theft and accidental damage guarantee",
44
44
  insurance_modal_description: "Optional protection that limits your costs after covered accidental damage or theft.",
45
- insurance_modal_pricing_title: "Price by category",
46
- insurance_modal_pricing_description: "The exact amount depends on the bike selected.",
47
45
  insurance_modal_muscular_bike: "Regular bike",
48
46
  insurance_modal_electric_bike: "Electric bike",
49
47
  insurance_modal_price_per_day: "{{price}} per bike per day",
@@ -133,6 +131,7 @@ var e = {
133
131
  about_section_title: "About",
134
132
  about_section_heading: "About the storefront",
135
133
  about_section_fallback: "This shop hasn’t added a description yet.",
134
+ faq_section_title: "Frequently asked questions",
136
135
  testimonials: {
137
136
  title: "Our customers love our bikes and our service",
138
137
  reviews_label: "reviews",
@@ -206,6 +205,7 @@ var e = {
206
205
  go_to_checkout: "Go to checkout",
207
206
  checkout_title: "Confirm your details and payment",
208
207
  checkout_subtitle: "Confirm your details and payment · {{duration}}",
208
+ checkout_booking_period_edit: "Edit",
209
209
  checkout_summary_title: "Summary",
210
210
  checkout_summary_description: "Cart and pricing recap.",
211
211
  checkout_booking_subtotal: "Subtotal",
@@ -356,6 +356,7 @@ var e = {
356
356
  docs_contract_sale_acceptance_section_required_description: "The customer must scroll through the document and accept it before completion.",
357
357
  accessories_title: "Popular accessories",
358
358
  accessories_description: "Add accessories during checkout.",
359
+ accessories_view_all: "See all accessories",
359
360
  accessories_badge: "Accessory",
360
361
  contact_section_title: "Contact us",
361
362
  contact_section_subtitle: "Need help or have a specific question? Send us a message and we’ll reply simply.",
package/dist/i18n/fr.d.ts CHANGED
@@ -41,8 +41,6 @@ export declare const storefront: {
41
41
  insurance_info_aria_label: string;
42
42
  insurance_modal_title: string;
43
43
  insurance_modal_description: string;
44
- insurance_modal_pricing_title: string;
45
- insurance_modal_pricing_description: string;
46
44
  insurance_modal_muscular_bike: string;
47
45
  insurance_modal_electric_bike: string;
48
46
  insurance_modal_price_per_day: string;
@@ -132,6 +130,7 @@ export declare const storefront: {
132
130
  about_section_title: string;
133
131
  about_section_heading: string;
134
132
  about_section_fallback: string;
133
+ faq_section_title: string;
135
134
  testimonials: {
136
135
  title: string;
137
136
  reviews_label: string;
@@ -206,6 +205,7 @@ export declare const storefront: {
206
205
  go_to_checkout: string;
207
206
  checkout_title: string;
208
207
  checkout_subtitle: string;
208
+ checkout_booking_period_edit: string;
209
209
  checkout_summary_title: string;
210
210
  checkout_summary_description: string;
211
211
  checkout_booking_subtotal: string;
@@ -356,6 +356,7 @@ export declare const storefront: {
356
356
  docs_contract_sale_acceptance_section_required_description: string;
357
357
  accessories_title: string;
358
358
  accessories_description: string;
359
+ accessories_view_all: string;
359
360
  accessories_badge: string;
360
361
  contact_section_title: string;
361
362
  contact_section_subtitle: string;
@@ -1 +1 @@
1
- {"version":3,"file":"fr.d.ts","sourceRoot":"","sources":["../../src/i18n/fr.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6gBtB,CAAA"}
1
+ {"version":3,"file":"fr.d.ts","sourceRoot":"","sources":["../../src/i18n/fr.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+gBtB,CAAA"}
package/dist/i18n/fr.js CHANGED
@@ -42,8 +42,6 @@ var e = {
42
42
  insurance_info_aria_label: "Afficher les conditions de la garantie casse et vol",
43
43
  insurance_modal_title: "Garantie casse et vol",
44
44
  insurance_modal_description: "Une protection facultative pour limiter les frais en cas de dommage accidentel ou de vol couvert.",
45
- insurance_modal_pricing_title: "Tarif par catégorie",
46
- insurance_modal_pricing_description: "Le montant exact dépend du vélo choisi.",
47
45
  insurance_modal_muscular_bike: "Vélo musculaire",
48
46
  insurance_modal_electric_bike: "Vélo électrique",
49
47
  insurance_modal_price_per_day: "{{price}} par vélo et par jour",
@@ -133,6 +131,7 @@ var e = {
133
131
  about_section_title: "Présentation",
134
132
  about_section_heading: "Présentation de la boutique",
135
133
  about_section_fallback: "Cette boutique n’a pas encore ajouté de présentation.",
134
+ faq_section_title: "Questions fréquentes",
136
135
  testimonials: {
137
136
  title: "Nos clients adorent nos vélos et notre service",
138
137
  reviews_label: "avis",
@@ -207,6 +206,7 @@ var e = {
207
206
  go_to_checkout: "Aller au paiement",
208
207
  checkout_title: "Confirmez vos informations et le paiement",
209
208
  checkout_subtitle: "Confirmez vos informations et le paiement · {{duration}}",
209
+ checkout_booking_period_edit: "Modifier",
210
210
  checkout_summary_title: "Récapitulatif",
211
211
  checkout_summary_description: "Panier et récap des montants.",
212
212
  checkout_booking_subtotal: "Sous-total",
@@ -357,6 +357,7 @@ var e = {
357
357
  docs_contract_sale_acceptance_section_required_description: "Le client doit faire défiler le document et l'accepter avant la finalisation.",
358
358
  accessories_title: "Accessoires populaires",
359
359
  accessories_description: "Ajoutez des accessoires pendant le paiement.",
360
+ accessories_view_all: "Voir tous les accessoires",
360
361
  accessories_badge: "Accessoire",
361
362
  contact_section_title: "Contact",
362
363
  contact_section_subtitle: "Une question ou un besoin précis ? Écrivez-nous, on vous répond simplement.",
package/dist/index.d.ts CHANGED
@@ -1817,6 +1817,8 @@ export declare const eBikeProductSchema: z.ZodObject<{
1817
1817
  kind: z.ZodLiteral<"e-bike">;
1818
1818
  }, z.core.$strip>;
1819
1819
 
1820
+ export declare function FaqSection(): JSX.Element | null;
1821
+
1820
1822
  export declare function findStorefrontInsurancePricingBike<T extends StorefrontInsuranceCandidate>(bikes: readonly T[], kind: BikeProduct["kind"]): T | undefined;
1821
1823
 
1822
1824
  export declare const findStorefrontProduct: (id: string, products: StorefrontProductsCollections) => StorefrontProduct | null;
@@ -3570,7 +3572,7 @@ export declare type StorefrontCartItem = {
3570
3572
  quantity: number;
3571
3573
  };
3572
3574
 
3573
- export declare function StorefrontCartPanel({ lines, itemCount, baseUnitLabel, totalMinor, title, description, checkoutPath, showCheckoutAction, showClearAction, editable, summaryAddon, pricingSummary, stickyTopClassName, onQuantityChange, onRemove, onClear, }: StorefrontCartPanelProps): JSX.Element;
3575
+ export declare function StorefrontCartPanel({ lines, itemCount, baseUnitLabel, totalMinor, title, description, headerAddon, checkoutPath, showCheckoutAction, showClearAction, editable, summaryAddon, pricingSummary, stickyTopClassName, onQuantityChange, onRemove, onClear, }: StorefrontCartPanelProps): JSX.Element;
3574
3576
 
3575
3577
  declare type StorefrontCartPanelProps = {
3576
3578
  lines: StorefrontCartSummaryLine[];
@@ -3579,6 +3581,7 @@ declare type StorefrontCartPanelProps = {
3579
3581
  totalMinor?: number;
3580
3582
  title?: string;
3581
3583
  description?: string;
3584
+ headerAddon?: ReactNode;
3582
3585
  checkoutPath?: string;
3583
3586
  showCheckoutAction?: boolean;
3584
3587
  showClearAction?: boolean;
@@ -4219,8 +4222,6 @@ export declare const storefrontEn: {
4219
4222
  insurance_info_aria_label: string;
4220
4223
  insurance_modal_title: string;
4221
4224
  insurance_modal_description: string;
4222
- insurance_modal_pricing_title: string;
4223
- insurance_modal_pricing_description: string;
4224
4225
  insurance_modal_muscular_bike: string;
4225
4226
  insurance_modal_electric_bike: string;
4226
4227
  insurance_modal_price_per_day: string;
@@ -4310,6 +4311,7 @@ export declare const storefrontEn: {
4310
4311
  about_section_title: string;
4311
4312
  about_section_heading: string;
4312
4313
  about_section_fallback: string;
4314
+ faq_section_title: string;
4313
4315
  testimonials: {
4314
4316
  title: string;
4315
4317
  reviews_label: string;
@@ -4383,6 +4385,7 @@ export declare const storefrontEn: {
4383
4385
  go_to_checkout: string;
4384
4386
  checkout_title: string;
4385
4387
  checkout_subtitle: string;
4388
+ checkout_booking_period_edit: string;
4386
4389
  checkout_summary_title: string;
4387
4390
  checkout_summary_description: string;
4388
4391
  checkout_booking_subtotal: string;
@@ -4533,6 +4536,7 @@ export declare const storefrontEn: {
4533
4536
  docs_contract_sale_acceptance_section_required_description: string;
4534
4537
  accessories_title: string;
4535
4538
  accessories_description: string;
4539
+ accessories_view_all: string;
4536
4540
  accessories_badge: string;
4537
4541
  contact_section_title: string;
4538
4542
  contact_section_subtitle: string;
@@ -4776,8 +4780,6 @@ export declare const storefrontFr: {
4776
4780
  insurance_info_aria_label: string;
4777
4781
  insurance_modal_title: string;
4778
4782
  insurance_modal_description: string;
4779
- insurance_modal_pricing_title: string;
4780
- insurance_modal_pricing_description: string;
4781
4783
  insurance_modal_muscular_bike: string;
4782
4784
  insurance_modal_electric_bike: string;
4783
4785
  insurance_modal_price_per_day: string;
@@ -4867,6 +4869,7 @@ export declare const storefrontFr: {
4867
4869
  about_section_title: string;
4868
4870
  about_section_heading: string;
4869
4871
  about_section_fallback: string;
4872
+ faq_section_title: string;
4870
4873
  testimonials: {
4871
4874
  title: string;
4872
4875
  reviews_label: string;
@@ -4941,6 +4944,7 @@ export declare const storefrontFr: {
4941
4944
  go_to_checkout: string;
4942
4945
  checkout_title: string;
4943
4946
  checkout_subtitle: string;
4947
+ checkout_booking_period_edit: string;
4944
4948
  checkout_summary_title: string;
4945
4949
  checkout_summary_description: string;
4946
4950
  checkout_booking_subtotal: string;
@@ -5091,6 +5095,7 @@ export declare const storefrontFr: {
5091
5095
  docs_contract_sale_acceptance_section_required_description: string;
5092
5096
  accessories_title: string;
5093
5097
  accessories_description: string;
5098
+ accessories_view_all: string;
5094
5099
  accessories_badge: string;
5095
5100
  contact_section_title: string;
5096
5101
  contact_section_subtitle: string;
@@ -5830,6 +5835,7 @@ export declare const storefrontProductsResponseSchema: z.ZodDiscriminatedUnion<[
5830
5835
  quantity: z.ZodNumber;
5831
5836
  currency: z.ZodOptional<z.ZodString>;
5832
5837
  }, z.core.$strip>>>;
5838
+ depositAmount: z.ZodDefault<z.ZodNumber>;
5833
5839
  insurance: z.ZodOptional<z.ZodObject<{
5834
5840
  enabled: z.ZodBoolean;
5835
5841
  pricePerDayMinor: z.ZodNumber;
@@ -5908,6 +5914,7 @@ export declare const storefrontProductsResponseSchema: z.ZodDiscriminatedUnion<[
5908
5914
  quantity: z.ZodNumber;
5909
5915
  currency: z.ZodOptional<z.ZodString>;
5910
5916
  }, z.core.$strip>>;
5917
+ depositAmount: z.ZodDefault<z.ZodNumber>;
5911
5918
  features: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodObject<{
5912
5919
  value: z.ZodString;
5913
5920
  updatedAt: z.ZodCoercedDate<unknown>;
@@ -5983,6 +5990,7 @@ export declare const storefrontPublicAccessoryProductSchema: z.ZodObject<{
5983
5990
  quantity: z.ZodNumber;
5984
5991
  currency: z.ZodOptional<z.ZodString>;
5985
5992
  }, z.core.$strip>>;
5993
+ depositAmount: z.ZodDefault<z.ZodNumber>;
5986
5994
  features: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodObject<{
5987
5995
  value: z.ZodString;
5988
5996
  updatedAt: z.ZodCoercedDate<unknown>;
@@ -6084,6 +6092,7 @@ export declare const storefrontPublicBikeProductSchema: z.ZodObject<{
6084
6092
  quantity: z.ZodNumber;
6085
6093
  currency: z.ZodOptional<z.ZodString>;
6086
6094
  }, z.core.$strip>>>;
6095
+ depositAmount: z.ZodDefault<z.ZodNumber>;
6087
6096
  insurance: z.ZodOptional<z.ZodObject<{
6088
6097
  enabled: z.ZodBoolean;
6089
6098
  pricePerDayMinor: z.ZodNumber;