@loczer/storefront-sdk 0.209.0 → 0.210.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 (38) hide show
  1. package/dist/chunks/pkg/booking-engine/dist/node_modules/@date-fns/tz/date/index-DAbcklF5.js +1 -0
  2. package/dist/chunks/pkg/booking-engine/dist/node_modules/@date-fns/tz/date/mini-CSEBo1ZP.js +60 -0
  3. package/dist/chunks/pkg/booking-engine/dist/node_modules/@date-fns/tz/index--u3Qf-qy.js +4 -0
  4. package/dist/chunks/pkg/booking-engine/dist/node_modules/@date-fns/tz/tz/index-CEcibV-H.js +1 -0
  5. package/dist/chunks/pkg/booking-engine/dist/node_modules/@date-fns/tz/tzOffset/index-COlDDdap.js +22 -0
  6. package/dist/chunks/pkg/booking-engine/dist/pricing-BJaynUu_.js +3 -0
  7. package/dist/chunks/pkg/booking-engine/dist/utils/schedule-ssRov9xe.js +39 -0
  8. package/dist/chunks/pkg/booking-engine/dist/utils/timezone-B6XIbBPz.js +79 -0
  9. package/dist/components/ProductPriceBadge/index.d.ts.map +1 -1
  10. package/dist/components/ProductPriceBadge/index.js +86 -80
  11. package/dist/components/StorefrontCartPanel/index.d.ts +4 -4
  12. package/dist/components/StorefrontCartPanel/index.d.ts.map +1 -1
  13. package/dist/components/StorefrontCartPanel/index.js +10 -9
  14. package/dist/i18n/en.d.ts +11 -6
  15. package/dist/i18n/en.d.ts.map +1 -1
  16. package/dist/i18n/en.js +13 -8
  17. package/dist/i18n/fr.d.ts +11 -6
  18. package/dist/i18n/fr.d.ts.map +1 -1
  19. package/dist/i18n/fr.js +13 -8
  20. package/dist/index.d.ts +54 -36
  21. package/dist/index.js +66 -66
  22. package/dist/lib/booking.d.ts +0 -6
  23. package/dist/lib/booking.d.ts.map +1 -1
  24. package/dist/lib/booking.js +51 -65
  25. package/dist/lib/cartSummary.d.ts +5 -3
  26. package/dist/lib/cartSummary.d.ts.map +1 -1
  27. package/dist/lib/cartSummary.js +7 -7
  28. package/dist/lib/pricing.d.ts +18 -6
  29. package/dist/lib/pricing.d.ts.map +1 -1
  30. package/dist/lib/pricing.js +45 -29
  31. package/dist/pages/BookingPage.d.ts.map +1 -1
  32. package/dist/pages/BookingPage.js +205 -201
  33. package/dist/pages/CheckoutPage.d.ts.map +1 -1
  34. package/dist/pages/CheckoutPage.js +277 -274
  35. package/dist/pages/checkout/components/CheckoutSummaryColumn.d.ts +2 -2
  36. package/dist/pages/checkout/components/CheckoutSummaryColumn.d.ts.map +1 -1
  37. package/dist/pages/checkout/components/CheckoutSummaryColumn.js +4 -4
  38. package/package.json +1 -1
@@ -0,0 +1,60 @@
1
+ import { tzOffset as e } from "../tzOffset/index-COlDDdap.js";
2
+ //#region ../booking-engine/dist/node_modules/@date-fns/tz/date/mini.js
3
+ var t = class t extends Date {
4
+ constructor(...t) {
5
+ super(), t.length > 1 && typeof t[t.length - 1] == "string" && (this.timeZone = t.pop()), this.internal = /* @__PURE__ */ new Date(), isNaN(e(this.timeZone, this)) ? this.setTime(NaN) : t.length ? typeof t[0] == "number" && (t.length === 1 || t.length === 2 && typeof t[1] != "number") ? this.setTime(t[0]) : typeof t[0] == "string" ? this.setTime(+new Date(t[0])) : t[0] instanceof Date ? this.setTime(+t[0]) : (this.setTime(+new Date(...t)), a(this, NaN), r(this)) : this.setTime(Date.now());
6
+ }
7
+ static tz(e, ...n) {
8
+ return n.length ? new t(...n, e) : new t(Date.now(), e);
9
+ }
10
+ withTimeZone(e) {
11
+ return new t(+this, e);
12
+ }
13
+ getTimezoneOffset() {
14
+ let t = -e(this.timeZone, this);
15
+ return t > 0 ? Math.floor(t) : Math.ceil(t);
16
+ }
17
+ setTime(e) {
18
+ return Date.prototype.setTime.apply(this, arguments), r(this), +this;
19
+ }
20
+ [Symbol.for("constructDateFrom")](e) {
21
+ return new t(+new Date(e), this.timeZone);
22
+ }
23
+ }, n = /^(get|set)(?!UTC)/;
24
+ Object.getOwnPropertyNames(Date.prototype).forEach((e) => {
25
+ if (!n.test(e)) return;
26
+ let a = e.replace(n, "$1UTC");
27
+ t.prototype[a] && (e.startsWith("get") ? t.prototype[e] = function() {
28
+ return this.internal[a]();
29
+ } : (t.prototype[e] = function() {
30
+ return Date.prototype[a].apply(this.internal, arguments), i(this), +this;
31
+ }, t.prototype[a] = function() {
32
+ return Date.prototype[a].apply(this, arguments), r(this), +this;
33
+ }));
34
+ });
35
+ function r(t) {
36
+ t.internal.setTime(+t), t.internal.setUTCSeconds(t.internal.getUTCSeconds() - Math.round(-e(t.timeZone, t) * 60));
37
+ }
38
+ function i(e) {
39
+ Date.prototype.setFullYear.call(e, e.internal.getUTCFullYear(), e.internal.getUTCMonth(), e.internal.getUTCDate()), Date.prototype.setHours.call(e, e.internal.getUTCHours(), e.internal.getUTCMinutes(), e.internal.getUTCSeconds(), e.internal.getUTCMilliseconds()), a(e);
40
+ }
41
+ function a(t) {
42
+ let n = e(t.timeZone, t), r = n > 0 ? Math.floor(n) : Math.ceil(n), i = /* @__PURE__ */ new Date(+t);
43
+ i.setUTCHours(i.getUTCHours() - 1);
44
+ let a = -(/* @__PURE__ */ new Date(+t)).getTimezoneOffset(), o = a - -(/* @__PURE__ */ new Date(+i)).getTimezoneOffset(), s = Date.prototype.getHours.apply(t) !== t.internal.getUTCHours();
45
+ o && s && t.internal.setUTCMinutes(t.internal.getUTCMinutes() + o);
46
+ let c = a - r;
47
+ c && Date.prototype.setUTCMinutes.call(t, Date.prototype.getUTCMinutes.call(t) + c);
48
+ let l = /* @__PURE__ */ new Date(+t);
49
+ l.setUTCSeconds(0);
50
+ let u = a > 0 ? l.getSeconds() : (l.getSeconds() - 60) % 60, d = Math.round(-(e(t.timeZone, t) * 60)) % 60;
51
+ (d || u) && (t.internal.setUTCSeconds(t.internal.getUTCSeconds() + d), Date.prototype.setUTCSeconds.call(t, Date.prototype.getUTCSeconds.call(t) + d + u));
52
+ let f = e(t.timeZone, t), p = f > 0 ? Math.floor(f) : Math.ceil(f), m = -(/* @__PURE__ */ new Date(+t)).getTimezoneOffset() - p, h = p !== r, g = m - c;
53
+ if (h && g) {
54
+ Date.prototype.setUTCMinutes.call(t, Date.prototype.getUTCMinutes.call(t) + g);
55
+ let n = e(t.timeZone, t), r = p - (n > 0 ? Math.floor(n) : Math.ceil(n));
56
+ r && (t.internal.setUTCMinutes(t.internal.getUTCMinutes() + r), Date.prototype.setUTCMinutes.call(t, Date.prototype.getUTCMinutes.call(t) + r));
57
+ }
58
+ }
59
+ //#endregion
60
+ export { t as TZDateMini };
@@ -0,0 +1,4 @@
1
+ import "./tzOffset/index-COlDDdap.js";
2
+ import "./date/mini-CSEBo1ZP.js";
3
+ import "./date/index-DAbcklF5.js";
4
+ import "./tz/index-CEcibV-H.js";
@@ -0,0 +1 @@
1
+ import "../date/index-DAbcklF5.js";
@@ -0,0 +1,22 @@
1
+ //#region ../booking-engine/dist/node_modules/@date-fns/tz/tzOffset/index.js
2
+ var e = {}, t = {};
3
+ function n(n, a) {
4
+ try {
5
+ let r = (e[n] ||= new Intl.DateTimeFormat("en-US", {
6
+ timeZone: n,
7
+ timeZoneName: "longOffset"
8
+ }).format)(a).split("GMT")[1];
9
+ return r in t ? t[r] : i(r, r.split(":"));
10
+ } catch {
11
+ if (n in t) return t[n];
12
+ let e = n?.match(r);
13
+ return e ? i(n, e.slice(1)) : NaN;
14
+ }
15
+ }
16
+ var r = /([+-]\d\d):?(\d\d)?/;
17
+ function i(e, n) {
18
+ let r = +(n[0] || 0), i = +(n[1] || 0), a = (n[2] || 0) / 60;
19
+ return t[e] = r * 60 + i > 0 ? r * 60 + i + a : r * 60 - i - a;
20
+ }
21
+ //#endregion
22
+ export { n as tzOffset };
@@ -0,0 +1,3 @@
1
+ import { calculatePriceForQuantity as e } from "./utils/pricing-CqXJ5fMP.js";
2
+ import { calculateRentalQuantity as t, combineDateAndTime as n } from "./utils/schedule-ssRov9xe.js";
3
+ export { e as calculatePriceForQuantity, t as calculateRentalQuantity, n as combineDateAndTime };
@@ -0,0 +1,39 @@
1
+ import { getZonedDateTimeParts as e, zonedTimeToUtcDate as t } from "./timezone-B6XIbBPz.js";
2
+ //#region ../booking-engine/dist/utils/schedule.js
3
+ function n(e, n, r = "UTC") {
4
+ return t(e, n, r);
5
+ }
6
+ var r = 3600 * 1e3, i = 24 * r;
7
+ function a(t, n) {
8
+ let r = n === "UTC" ? {
9
+ year: t.getUTCFullYear(),
10
+ month: t.getUTCMonth() + 1,
11
+ day: t.getUTCDate()
12
+ } : e(t, n);
13
+ return Date.UTC(r.year, r.month - 1, r.day);
14
+ }
15
+ function o(t, n) {
16
+ return n === "UTC" ? t.getUTCHours() : e(t, n).hour;
17
+ }
18
+ function s(e, t, n, r) {
19
+ let s = a(e, r), c = a(t, r), l = Math.round((c - s) / i);
20
+ if (l <= 0) return 1;
21
+ let u = o(e, r) >= n, d = o(t, r) < n, f = u || d ? .5 : 0;
22
+ return l + 1 - f;
23
+ }
24
+ function c(e) {
25
+ let t = e.rentalUnits.find((t) => t.unit === e.baseUnit);
26
+ if (!t) throw Error(`Pricing configuration is missing a rental unit for base unit ${e.baseUnit}`);
27
+ if (t.durationHours <= 0) throw Error(`Rental unit ${e.baseUnit} must declare a positive duration`);
28
+ return t;
29
+ }
30
+ function l(e, t, n, i = "UTC") {
31
+ let a = c(n), o = n.halfDay, l = n.rentalUnits.some((e) => e.unit === "half_day");
32
+ if (n.baseUnit === "day" && o?.enabled === !0 && !l) return s(e, t, o?.boundaryHour ?? 12, i);
33
+ let u = a.durationHours * r;
34
+ if (u <= 0) throw Error("Base pricing unit must convert to a positive duration");
35
+ let d = Math.max(0, t.getTime() - e.getTime()) / u;
36
+ return Math.max(1, Math.ceil(d));
37
+ }
38
+ //#endregion
39
+ export { l as calculateRentalQuantity, n as combineDateAndTime };
@@ -0,0 +1,79 @@
1
+ import { TZDateMini as e } from "../node_modules/@date-fns/tz/date/mini-CSEBo1ZP.js";
2
+ import "../node_modules/@date-fns/tz/index--u3Qf-qy.js";
3
+ //#region ../booking-engine/dist/utils/timezone.js
4
+ var t = /^(\d{4})-(\d{2})-(\d{2})$/, n = /^(\d{2}):(\d{2})$/;
5
+ function r(e) {
6
+ try {
7
+ new Intl.DateTimeFormat("en-US", { timeZone: e });
8
+ } catch (t) {
9
+ throw t instanceof RangeError ? Error(`Invalid IANA timeZone provided: ${e}`) : t;
10
+ }
11
+ }
12
+ function i(e, n = "date") {
13
+ let r = t.exec(e);
14
+ if (!r) throw Error(`Invalid ${n}: expected YYYY-MM-DD, received ${e}`);
15
+ let i = Number(r[1]), a = Number(r[2]), o = Number(r[3]);
16
+ if (!Number.isInteger(i) || i < 0) throw Error(`Invalid ${n}: year must be a positive integer, received ${e}`);
17
+ if (!Number.isInteger(a) || a < 1 || a > 12) throw Error(`Invalid ${n}: month must be between 01 and 12, received ${e}`);
18
+ if (!Number.isInteger(o) || o < 1 || o > 31) throw Error(`Invalid ${n}: day must be between 01 and 31, received ${e}`);
19
+ let s = new Date(Date.UTC(i, a - 1, o));
20
+ if (s.getUTCFullYear() !== i || s.getUTCMonth() !== a - 1 || s.getUTCDate() !== o) throw Error(`Invalid ${n}: received ${e}`);
21
+ return {
22
+ year: i,
23
+ month: a,
24
+ day: o
25
+ };
26
+ }
27
+ function a(e, t = "time") {
28
+ let r = n.exec(e);
29
+ if (!r) throw Error(`Invalid ${t}: expected HH:mm, received ${e}`);
30
+ let i = Number(r[1]), a = Number(r[2]);
31
+ if (!Number.isInteger(i) || i < 0 || i > 23) throw Error(`Invalid ${t}: hour must be between 00 and 23, received ${e}`);
32
+ if (!Number.isInteger(a) || a < 0 || a > 59) throw Error(`Invalid ${t}: minute must be between 00 and 59, received ${e}`);
33
+ return {
34
+ hour: i,
35
+ minute: a
36
+ };
37
+ }
38
+ function o(e) {
39
+ let t = (t, n) => {
40
+ let r = e.find((e) => e.type === t)?.value;
41
+ if (!r) throw Error(`Unable to resolve ${n} from timeZone conversion`);
42
+ return Number(r);
43
+ };
44
+ return {
45
+ year: t("year", "year"),
46
+ month: t("month", "month"),
47
+ day: t("day", "day"),
48
+ hour: t("hour", "hour"),
49
+ minute: t("minute", "minute"),
50
+ second: t("second", "second")
51
+ };
52
+ }
53
+ function s(e, t) {
54
+ return r(t), o(new Intl.DateTimeFormat("en-US", {
55
+ timeZone: t,
56
+ year: "numeric",
57
+ month: "2-digit",
58
+ day: "2-digit",
59
+ hour: "2-digit",
60
+ minute: "2-digit",
61
+ second: "2-digit",
62
+ hour12: !1,
63
+ hourCycle: "h23"
64
+ }).formatToParts(e));
65
+ }
66
+ function c(e, t) {
67
+ return e.year === t.year && e.month === t.month && e.day === t.day && e.hour === t.hour && e.minute === t.minute;
68
+ }
69
+ function l(t, n, o) {
70
+ r(o);
71
+ let l = i(t, "date"), u = a(n, "time"), d = {
72
+ ...l,
73
+ ...u
74
+ }, f = new e(d.year, d.month - 1, d.day, d.hour, d.minute, 0, o).getTime();
75
+ if (!c(s(new Date(f), o), d)) throw Error(`Invalid local datetime for timeZone ${o}: ${t} ${n} (DST shift?)`);
76
+ return new Date(f);
77
+ }
78
+ //#endregion
79
+ export { s as getZonedDateTimeParts, i as parseIsoDateParts, a as parseTimeOfDayParts, l as zonedTimeToUtcDate };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ProductPriceBadge/index.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAA;AAoBhF,KAAK,sBAAsB,GAAG;IAC5B,MAAM,CAAC,EAAE,4BAA4B,EAAE,CAAA;IACvC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,oDAK/B,sBAAsB,mDA8WxB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ProductPriceBadge/index.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAA;AAoBhF,KAAK,sBAAsB,GAAG;IAC5B,MAAM,CAAC,EAAE,4BAA4B,EAAE,CAAA;IACvC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,oDAK/B,sBAAsB,mDAoXxB,CAAA"}
@@ -1,110 +1,113 @@
1
- import { buildDailyPriceRows as e, buildPriceTierLabels as t, formatStorefrontPriceMinor as n } from "../../lib/pricing.js";
2
- import { Badge as r, badgeVariants as i } from "../../ui/badge.js";
3
- import { useOptionalStorefront as a } from "../../StorefrontContext.js";
4
- import { useEffect as o, useId as ee, useRef as s, useState as c } from "react";
5
- import { Fragment as te, jsx as l, jsxs as u } from "react/jsx-runtime";
1
+ import { buildPriceTierLabels as e, buildRentalPriceRows as t, formatRentalUnitQuantity as ee, formatStorefrontPriceMinor as n, getPricingUnitLabel as r } from "../../lib/pricing.js";
2
+ import { Badge as i, badgeVariants as a } from "../../ui/badge.js";
3
+ import { useOptionalStorefront as te } from "../../StorefrontContext.js";
4
+ import { useEffect as o, useId as ne, useRef as s, useState as c } from "react";
5
+ import { Fragment as re, jsx as l, jsxs as u } from "react/jsx-runtime";
6
6
  import { useMediaQuery as d } from "@rpcbase/client";
7
- import { useTranslation as ne } from "react-i18next";
7
+ import { useTranslation as ie } from "react-i18next";
8
8
  import { cn as f } from "@rpcbase/ui";
9
- import { Info as re, Mail as p, Phone as m, TrendingDown as h } from "lucide-react";
10
- import { Drawer as g } from "@base-ui/react/drawer";
11
- import { Popover as _ } from "@base-ui/react/popover";
9
+ import { Info as ae, Mail as oe, Phone as se, TrendingDown as ce } from "lucide-react";
10
+ import { Drawer as p } from "@base-ui/react/drawer";
11
+ import { Popover as m } from "@base-ui/react/popover";
12
12
  //#region src/components/ProductPriceBadge/index.tsx
13
- var ie = 180, ae = "(max-width: 767px)", v = "loczer:storefront:product-price-popover-open", y = (e) => typeof Node < "u" && e instanceof Node, b = (e) => {
14
- typeof window > "u" || window.dispatchEvent(new CustomEvent(v, { detail: { id: e } }));
15
- }, x = ({ prices: x, minPriceMinor: S, className: C, openOnHover: w = !0 }) => {
16
- let { t: T, i18n: E } = ne(), D = ee(), O = a(), oe = d(ae), se = d("(hover: none), (pointer: coarse)"), k = !!(oe || se), [A, j] = c(null), [M, N] = c(!1), P = s(null), F = s(null), I = s(null), L = s(null), R = A !== null, z = t(x, E.language, T), B = e(x, E.language), V = z[0], H = z[1], U = () => {
17
- P.current &&= (clearTimeout(P.current), null);
13
+ var le = 180, h = "(max-width: 767px)", g = "loczer:storefront:product-price-popover-open", _ = (e) => typeof Node < "u" && e instanceof Node, v = (e) => {
14
+ typeof window > "u" || window.dispatchEvent(new CustomEvent(g, { detail: { id: e } }));
15
+ }, y = ({ prices: y, minPriceMinor: b, className: x, openOnHover: S = !0 }) => {
16
+ let { t: C, i18n: w } = ie(), T = ne(), E = te(), ue = d(h), de = d("(hover: none), (pointer: coarse)"), D = !!(ue || de), [O, k] = c(null), [A, j] = c(!1), M = s(null), N = s(null), P = s(null), F = s(null), I = O !== null, L = E?.storefrontConfiguration.bookingEngine.pricing.baseUnit ?? "day", R = r(L, C), z = e(y, w.language, C, L), B = t(y, w.language, L), V = z[0], H = z[1], U = () => {
17
+ M.current &&= (clearTimeout(M.current), null);
18
18
  }, W = (e) => {
19
- k || (U(), j((t) => t === "click" ? t : e), b(D));
19
+ D || (U(), k((t) => t === "click" ? t : e), v(T));
20
20
  }, G = () => {
21
- U(), j(null);
22
- }, ce = () => {
23
- U(), N(!0), b(D);
24
- }, le = () => {
25
- N(!1);
26
- }, ue = () => {
27
- !w || R || W("hover");
28
- }, de = (e) => y(e) ? !!(F.current?.contains(e) || L.current?.contains(e)) : !1, K = (e) => y(e) ? !!(I.current?.contains(e) || L.current?.contains(e)) : !1, q = (e) => {
29
- A !== "hover" || K(e) || (U(), P.current = setTimeout(() => {
30
- j((e) => e === "hover" ? null : e), P.current = null;
31
- }, ie));
21
+ U(), k(null);
22
+ }, fe = () => {
23
+ U(), j(!0), v(T);
24
+ }, pe = () => {
25
+ j(!1);
26
+ }, me = () => {
27
+ !S || I || W("hover");
28
+ }, he = (e) => _(e) ? !!(N.current?.contains(e) || F.current?.contains(e)) : !1, K = (e) => _(e) ? !!(P.current?.contains(e) || F.current?.contains(e)) : !1, q = (e) => {
29
+ O !== "hover" || K(e) || (U(), M.current = setTimeout(() => {
30
+ k((e) => e === "hover" ? null : e), M.current = null;
31
+ }, le));
32
32
  }, J = (e) => {
33
33
  q(e?.relatedTarget);
34
- }, fe = (e) => {
34
+ }, ge = (e) => {
35
35
  let t = e.relatedTarget ?? document.activeElement;
36
- de(t) || G();
36
+ he(t) || G();
37
37
  };
38
38
  if (o(() => {
39
39
  if (typeof window > "u") return () => {
40
40
  U();
41
41
  };
42
42
  let e = (e) => {
43
- e.detail?.id !== D && (U(), j(null), N(!1));
43
+ e.detail?.id !== T && (U(), k(null), j(!1));
44
44
  };
45
- return window.addEventListener(v, e), () => {
46
- window.removeEventListener(v, e), U();
45
+ return window.addEventListener(g, e), () => {
46
+ window.removeEventListener(g, e), U();
47
47
  };
48
- }, [D]), o(() => {
49
- if (A !== "hover" || typeof window > "u") return;
48
+ }, [T]), o(() => {
49
+ if (O !== "hover" || typeof window > "u") return;
50
50
  let e = (e) => {
51
51
  if (K(e.target)) {
52
52
  U();
53
53
  return;
54
54
  }
55
- P.current || q(e.target);
55
+ M.current || q(e.target);
56
56
  };
57
57
  return window.addEventListener("pointermove", e, { passive: !0 }), window.addEventListener("mousemove", e, { passive: !0 }), () => {
58
58
  window.removeEventListener("pointermove", e), window.removeEventListener("mousemove", e);
59
59
  };
60
- }, [A]), o(() => {
61
- if (k) {
62
- U(), j(null);
60
+ }, [O]), o(() => {
61
+ if (D) {
62
+ U(), k(null);
63
63
  return;
64
64
  }
65
- N(!1);
66
- }, [k]), !V) return typeof S == "number" ? /* @__PURE__ */ l(r, {
65
+ j(!1);
66
+ }, [D]), !V) return typeof b == "number" ? /* @__PURE__ */ l(i, {
67
67
  variant: "outline",
68
- className: f("border-slate-200 bg-white text-slate-700", C),
69
- children: /* @__PURE__ */ l("span", { children: T("price_from", { price: n(S, E.language) }) })
68
+ className: f("border-slate-200 bg-white text-slate-700", x),
69
+ children: /* @__PURE__ */ l("span", { children: C("price_from", {
70
+ price: n(b, w.language),
71
+ unit: R
72
+ }) })
70
73
  }) : null;
71
- let Y = f(i({ variant: "outline" }), "gap-1.5 border-slate-200 bg-white text-slate-700 outline-none transition hover:border-slate-300 hover:text-slate-950 focus:border-slate-200 focus:outline-none focus:ring-0 focus:ring-transparent focus:ring-offset-0 focus-visible:border-slate-200 focus-visible:outline-none focus-visible:ring-0 focus-visible:ring-transparent focus-visible:ring-offset-0", B.length > 0 && "cursor-pointer", C), X = O?.storefrontConfiguration.shop.emailAddress?.trim(), Z = O?.storefrontConfiguration.shop.contactPhone1?.trim(), pe = !!(X || Z), Q = () => /* @__PURE__ */ u(te, { children: [
74
+ let Y = f(a({ variant: "outline" }), "gap-1.5 border-slate-200 bg-white text-slate-700 outline-none transition hover:border-slate-300 hover:text-slate-950 focus:border-slate-200 focus:outline-none focus:ring-0 focus:ring-transparent focus:ring-offset-0 focus-visible:border-slate-200 focus-visible:outline-none focus-visible:ring-0 focus-visible:ring-transparent focus-visible:ring-offset-0", B.length > 0 && "cursor-pointer", x), X = E?.storefrontConfiguration.shop.emailAddress?.trim(), Z = E?.storefrontConfiguration.shop.contactPhone1?.trim(), _e = !!(X || Z), Q = () => /* @__PURE__ */ u(re, { children: [
72
75
  /* @__PURE__ */ l("span", {
73
76
  className: "font-semibold",
74
77
  children: V
75
78
  }),
76
79
  H ? /* @__PURE__ */ u("span", {
77
80
  className: "inline-flex items-center gap-1 text-slate-500",
78
- children: [/* @__PURE__ */ l(h, {
81
+ children: [/* @__PURE__ */ l(ce, {
79
82
  className: "h-3 w-3",
80
83
  strokeWidth: 2.4,
81
84
  "aria-hidden": "true"
82
- }), /* @__PURE__ */ l("span", { children: T("price_then", { price: H }) })]
85
+ }), /* @__PURE__ */ l("span", { children: C("price_then", { price: H }) })]
83
86
  }) : null,
84
87
  B.length > 0 ? /* @__PURE__ */ l("span", {
85
- ref: I,
88
+ ref: P,
86
89
  className: "inline-flex shrink-0 items-center text-slate-500",
87
90
  onMouseEnter: () => {
88
- w && W("hover");
91
+ S && W("hover");
89
92
  },
90
- onMouseMove: ue,
93
+ onMouseMove: me,
91
94
  onMouseLeave: J,
92
- children: /* @__PURE__ */ l(re, {
95
+ children: /* @__PURE__ */ l(ae, {
93
96
  className: "h-3 w-3",
94
97
  "aria-hidden": "true"
95
98
  })
96
99
  }) : null
97
- ] }), me = () => pe ? /* @__PURE__ */ u("div", {
100
+ ] }), ve = () => _e ? /* @__PURE__ */ u("div", {
98
101
  className: "border-t border-slate-200 pt-2 text-slate-600",
99
102
  children: [/* @__PURE__ */ l("p", {
100
103
  className: "leading-snug",
101
- children: /* @__PURE__ */ l("span", { children: T("price_table_contact_prompt") })
104
+ children: /* @__PURE__ */ l("span", { children: C("price_table_contact_prompt") })
102
105
  }), /* @__PURE__ */ u("div", {
103
106
  className: "mt-2 flex flex-wrap gap-x-3 gap-y-1",
104
107
  children: [Z ? /* @__PURE__ */ u("a", {
105
108
  className: "inline-flex min-w-0 items-center gap-1 font-medium text-slate-800 underline-offset-4 hover:underline",
106
109
  href: `tel:${Z}`,
107
- children: [/* @__PURE__ */ l(m, {
110
+ children: [/* @__PURE__ */ l(se, {
108
111
  className: "h-3 w-3 shrink-0",
109
112
  "aria-hidden": "true"
110
113
  }), /* @__PURE__ */ l("span", {
@@ -114,7 +117,7 @@ var ie = 180, ae = "(max-width: 767px)", v = "loczer:storefront:product-price-po
114
117
  }) : null, X ? /* @__PURE__ */ u("a", {
115
118
  className: "inline-flex min-w-0 items-center gap-1 font-medium text-slate-800 underline-offset-4 hover:underline",
116
119
  href: `mailto:${X}`,
117
- children: [/* @__PURE__ */ l(p, {
120
+ children: [/* @__PURE__ */ l(oe, {
118
121
  className: "h-3 w-3 shrink-0",
119
122
  "aria-hidden": "true"
120
123
  }), /* @__PURE__ */ l("span", {
@@ -128,12 +131,15 @@ var ie = 180, ae = "(max-width: 767px)", v = "loczer:storefront:product-price-po
128
131
  children: [
129
132
  e ? /* @__PURE__ */ l("p", {
130
133
  className: "font-semibold uppercase tracking-[0.12em] text-slate-500",
131
- children: /* @__PURE__ */ l("span", { children: T("price_table_title") })
134
+ children: /* @__PURE__ */ l("span", { children: C("price_table_title") })
132
135
  }) : null,
133
136
  /* @__PURE__ */ l("ul", {
134
137
  className: f("grid gap-1 text-slate-600", t === "drawer" && "gap-1.5"),
135
- children: B.map(({ dayCount: e, totalPriceLabel: n, perDayPriceLabel: r }) => {
136
- let i = T("price_table_day", { count: e }), a = T("price_table_per_day", { price: r });
138
+ children: B.map(({ unitCount: e, totalPriceLabel: n, perUnitPriceLabel: r }) => {
139
+ let i = ee(e, L, w.language, C), a = C("price_table_per_unit", {
140
+ price: r,
141
+ unit: R
142
+ });
137
143
  return /* @__PURE__ */ l("li", { children: /* @__PURE__ */ u("div", {
138
144
  className: "flex items-baseline gap-2",
139
145
  children: [
@@ -160,21 +166,21 @@ var ie = 180, ae = "(max-width: 767px)", v = "loczer:storefront:product-price-po
160
166
  }) }, e);
161
167
  })
162
168
  }),
163
- me()
169
+ ve()
164
170
  ]
165
171
  });
166
- return k ? /* @__PURE__ */ u(g.Root, {
167
- open: M,
172
+ return D ? /* @__PURE__ */ u(p.Root, {
173
+ open: A,
168
174
  onOpenChange: (e) => {
169
- e ? ce() : le();
175
+ e ? fe() : pe();
170
176
  },
171
177
  swipeDirection: "down",
172
- children: [/* @__PURE__ */ l(g.Trigger, {
173
- ref: F,
178
+ children: [/* @__PURE__ */ l(p.Trigger, {
179
+ ref: N,
174
180
  type: "button",
175
181
  className: Y,
176
- "aria-label": T("price_details_aria_label", { price: V }),
177
- "aria-expanded": M,
182
+ "aria-label": C("price_details_aria_label", { price: V }),
183
+ "aria-expanded": A,
178
184
  onClick: (e) => {
179
185
  e.stopPropagation();
180
186
  },
@@ -182,20 +188,20 @@ var ie = 180, ae = "(max-width: 767px)", v = "loczer:storefront:product-price-po
182
188
  e.stopPropagation();
183
189
  },
184
190
  children: Q()
185
- }), /* @__PURE__ */ u(g.Portal, { children: [/* @__PURE__ */ l(g.Backdrop, { className: "pointer-events-auto fixed inset-0 z-50 bg-black/50 outline-none data-[closed]:animate-out data-[closed]:fade-out-0 data-[open]:animate-in data-[open]:fade-in-0" }), /* @__PURE__ */ l(g.Viewport, {
191
+ }), /* @__PURE__ */ u(p.Portal, { children: [/* @__PURE__ */ l(p.Backdrop, { className: "pointer-events-auto fixed inset-0 z-50 bg-black/50 outline-none data-[closed]:animate-out data-[closed]:fade-out-0 data-[open]:animate-in data-[open]:fade-in-0" }), /* @__PURE__ */ l(p.Viewport, {
186
192
  className: "pointer-events-none fixed inset-0 z-50",
187
- children: /* @__PURE__ */ u(g.Popup, {
193
+ children: /* @__PURE__ */ u(p.Popup, {
188
194
  className: "pointer-events-auto fixed inset-x-0 bottom-0 z-50 flex max-h-[90dvh] flex-col rounded-t-2xl border-t border-slate-200 bg-white text-slate-950 shadow-xl outline-none data-[closed]:animate-out data-[closed]:fade-out-0 data-[closed]:slide-out-to-bottom data-[open]:animate-in data-[open]:fade-in-0 data-[open]:slide-in-from-bottom",
189
195
  children: [/* @__PURE__ */ l("div", {
190
196
  className: "mx-auto mt-4 h-2 w-[100px] shrink-0 rounded-full bg-slate-200",
191
197
  "aria-hidden": "true"
192
- }), /* @__PURE__ */ l(g.Content, { children: /* @__PURE__ */ u("div", {
198
+ }), /* @__PURE__ */ l(p.Content, { children: /* @__PURE__ */ u("div", {
193
199
  className: "flex max-h-[calc(90dvh-1rem)] flex-col",
194
200
  children: [/* @__PURE__ */ l("div", {
195
201
  className: "border-b border-slate-200 px-4 py-4 text-left",
196
- children: /* @__PURE__ */ l(g.Title, {
202
+ children: /* @__PURE__ */ l(p.Title, {
197
203
  className: "text-left text-lg font-semibold text-slate-950",
198
- children: /* @__PURE__ */ l("span", { children: T("price_table_title") })
204
+ children: /* @__PURE__ */ l("span", { children: C("price_table_title") })
199
205
  })
200
206
  }), /* @__PURE__ */ l("div", {
201
207
  className: "flex-1 overflow-y-auto px-4 pb-6 pt-3",
@@ -204,33 +210,33 @@ var ie = 180, ae = "(max-width: 767px)", v = "loczer:storefront:product-price-po
204
210
  }) })]
205
211
  })
206
212
  })] })]
207
- }) : /* @__PURE__ */ u(_.Root, {
208
- open: R,
213
+ }) : /* @__PURE__ */ u(m.Root, {
214
+ open: I,
209
215
  onOpenChange: (e) => {
210
216
  e ? W("click") : G();
211
217
  },
212
- children: [/* @__PURE__ */ l(_.Trigger, {
213
- ref: F,
218
+ children: [/* @__PURE__ */ l(m.Trigger, {
219
+ ref: N,
214
220
  type: "button",
215
221
  className: Y,
216
- "aria-label": T("price_details_aria_label", { price: V }),
217
- "aria-expanded": R,
218
- onBlur: fe,
222
+ "aria-label": C("price_details_aria_label", { price: V }),
223
+ "aria-expanded": I,
224
+ onBlur: ge,
219
225
  onClick: (e) => {
220
- e.preventDefault(), e.stopPropagation(), A === "click" ? G() : W("click");
226
+ e.preventDefault(), e.stopPropagation(), O === "click" ? G() : W("click");
221
227
  },
222
228
  onPointerDown: (e) => {
223
229
  e.stopPropagation();
224
230
  },
225
231
  children: Q()
226
- }), B.length > 0 ? /* @__PURE__ */ l(_.Portal, { children: /* @__PURE__ */ l(_.Positioner, {
232
+ }), B.length > 0 ? /* @__PURE__ */ l(m.Portal, { children: /* @__PURE__ */ l(m.Positioner, {
227
233
  side: "top",
228
234
  align: "end",
229
235
  sideOffset: 8,
230
236
  collisionPadding: 12,
231
237
  className: "pointer-events-auto z-[70] outline-none",
232
- children: /* @__PURE__ */ l(_.Popup, {
233
- ref: L,
238
+ children: /* @__PURE__ */ l(m.Popup, {
239
+ ref: F,
234
240
  initialFocus: !1,
235
241
  className: "w-64 rounded-xl border border-slate-200 bg-white p-3 text-slate-950 shadow-xl outline-none data-[closed]:animate-out data-[closed]:fade-out-0 data-[closed]:zoom-out-95 data-[open]:animate-in data-[open]:fade-in-0 data-[open]:zoom-in-95",
236
242
  onPointerDown: (e) => {
@@ -247,4 +253,4 @@ var ie = 180, ae = "(max-width: 767px)", v = "loczer:storefront:product-price-po
247
253
  });
248
254
  };
249
255
  //#endregion
250
- export { x as ProductPriceBadge };
256
+ export { y as ProductPriceBadge };
@@ -3,14 +3,14 @@ import { StorefrontCartSummaryLine } from '../../lib/cartSummary';
3
3
  type StorefrontCartPanelProps = {
4
4
  lines: StorefrontCartSummaryLine[];
5
5
  itemCount: number;
6
- totalPerDayMinor: number;
7
- estimatedDays?: number;
6
+ totalPerBaseUnitMinor: number;
7
+ baseUnitLabel: string;
8
8
  estimatedTotalMinor?: number;
9
9
  discountedEstimatedTotalMinor?: number;
10
10
  discountAmountMinor?: number;
11
11
  lateReturnSurchargeMinor?: number;
12
12
  couponCode?: string;
13
- durationLabel?: string;
13
+ durationInBaseUnitLabel?: string;
14
14
  title?: string;
15
15
  description?: string;
16
16
  checkoutPath?: string;
@@ -23,6 +23,6 @@ type StorefrontCartPanelProps = {
23
23
  onRemove?: (key: string) => void;
24
24
  onClear?: () => void;
25
25
  };
26
- export declare function StorefrontCartPanel({ lines, itemCount, totalPerDayMinor, estimatedDays, estimatedTotalMinor, discountedEstimatedTotalMinor, discountAmountMinor, lateReturnSurchargeMinor, couponCode, durationLabel, title, description, checkoutPath, showCheckoutAction, showClearAction, editable, summaryAddon, stickyTopClassName, onQuantityChange, onRemove, onClear, }: StorefrontCartPanelProps): import("react/jsx-runtime").JSX.Element;
26
+ export declare function StorefrontCartPanel({ lines, itemCount, totalPerBaseUnitMinor, baseUnitLabel, estimatedTotalMinor, discountedEstimatedTotalMinor, discountAmountMinor, lateReturnSurchargeMinor, couponCode, durationInBaseUnitLabel, title, description, checkoutPath, showCheckoutAction, showClearAction, editable, summaryAddon, stickyTopClassName, onQuantityChange, onRemove, onClear, }: StorefrontCartPanelProps): import("react/jsx-runtime").JSX.Element;
27
27
  export {};
28
28
  //# 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,gBAAgB,EAAE,MAAM,CAAA;IACxB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,6BAA6B,CAAC,EAAE,MAAM,CAAA;IACtC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,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,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,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,6BAA6B,EAC7B,mBAAmB,EACnB,wBAAwB,EACxB,UAAU,EACV,aAAa,EACb,KAAK,EACL,WAAW,EACX,YAAY,EACZ,kBAA0B,EAC1B,eAAuB,EACvB,QAAe,EACf,YAAY,EACZ,kBAA6B,EAC7B,gBAAgB,EAChB,QAAQ,EACR,OAAO,GACR,EAAE,wBAAwB,2CA0L1B"}
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,qBAAqB,EAAE,MAAM,CAAA;IAC7B,aAAa,EAAE,MAAM,CAAA;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,6BAA6B,CAAC,EAAE,MAAM,CAAA;IACtC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,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,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,qBAAqB,EACrB,aAAa,EACb,mBAAmB,EACnB,6BAA6B,EAC7B,mBAAmB,EACnB,wBAAwB,EACxB,UAAU,EACV,uBAAuB,EACvB,KAAK,EACL,WAAW,EACX,YAAY,EACZ,kBAA0B,EAC1B,eAAuB,EACvB,QAAe,EACf,YAAY,EACZ,kBAA6B,EAC7B,gBAAgB,EAChB,QAAQ,EACR,OAAO,GACR,EAAE,wBAAwB,2CAgM1B"}
@@ -10,7 +10,7 @@ import { useTranslation as u } from "react-i18next";
10
10
  import { cn as d } from "@rpcbase/ui";
11
11
  import { ArrowRight as f, Trash2 as p } from "lucide-react";
12
12
  //#region src/components/StorefrontCartPanel/index.tsx
13
- function m({ lines: m, itemCount: h, totalPerDayMinor: g, estimatedDays: _, estimatedTotalMinor: v, discountedEstimatedTotalMinor: y, discountAmountMinor: b, lateReturnSurchargeMinor: x, couponCode: S, durationLabel: C, title: w, description: T, checkoutPath: E, showCheckoutAction: D = !1, showClearAction: O = !1, editable: k = !0, summaryAddon: A, stickyTopClassName: j = "top-24", onQuantityChange: M, onRemove: N, onClear: P }) {
13
+ function m({ lines: m, itemCount: h, totalPerBaseUnitMinor: g, baseUnitLabel: _, estimatedTotalMinor: v, discountedEstimatedTotalMinor: y, discountAmountMinor: b, lateReturnSurchargeMinor: x, couponCode: S, durationInBaseUnitLabel: C, title: w, description: T, checkoutPath: E, showCheckoutAction: D = !1, showClearAction: O = !1, editable: k = !0, summaryAddon: A, stickyTopClassName: j = "top-24", onQuantityChange: M, onRemove: N, onClear: P }) {
14
14
  let { t: F, i18n: I } = u();
15
15
  return /* @__PURE__ */ c(i, {
16
16
  className: d("sticky border-slate-200 bg-white shadow-sm", j),
@@ -62,7 +62,8 @@ function m({ lines: m, itemCount: h, totalPerDayMinor: g, estimatedDays: _, esti
62
62
  className: "text-xs text-slate-600",
63
63
  children: /* @__PURE__ */ s("span", { children: F("cart_line_meta", {
64
64
  quantity: i.quantity,
65
- price: o
65
+ price: o,
66
+ unit: _
66
67
  }) })
67
68
  }),
68
69
  l ? /* @__PURE__ */ s("div", {
@@ -107,24 +108,24 @@ function m({ lines: m, itemCount: h, totalPerDayMinor: g, estimatedDays: _, esti
107
108
  className: "flex items-center justify-between gap-3 border-t border-slate-200 pt-3 text-sm",
108
109
  children: [/* @__PURE__ */ s("p", {
109
110
  className: "text-slate-700",
110
- children: /* @__PURE__ */ s("span", { children: F("cart_total_per_day") })
111
+ children: /* @__PURE__ */ s("span", { children: F("cart_total_per_unit", { unit: _ }) })
111
112
  }), /* @__PURE__ */ s("p", {
112
113
  className: "font-semibold text-slate-950",
113
114
  children: /* @__PURE__ */ s("span", { children: e(g, I.language) })
114
115
  })]
115
116
  }),
116
- typeof _ == "number" && typeof v == "number" ? /* @__PURE__ */ c(o, { children: [
117
- /* @__PURE__ */ c("div", {
117
+ typeof v == "number" ? /* @__PURE__ */ c(o, { children: [
118
+ C ? /* @__PURE__ */ c("div", {
118
119
  className: "flex items-center justify-between gap-3 text-sm",
119
120
  children: [/* @__PURE__ */ s("p", {
120
121
  className: "text-slate-700",
121
- children: /* @__PURE__ */ s("span", { children: F("checkout_estimated_days", { count: _ }) })
122
- }), C ? /* @__PURE__ */ s(t, {
122
+ children: /* @__PURE__ */ s("span", { children: F("checkout_estimated_duration") })
123
+ }), /* @__PURE__ */ s(t, {
123
124
  variant: "outline",
124
125
  className: "border-slate-200 bg-white text-slate-700",
125
126
  children: /* @__PURE__ */ s("span", { children: C })
126
- }) : null]
127
- }),
127
+ })]
128
+ }) : null,
128
129
  typeof b == "number" && b > 0 ? /* @__PURE__ */ c("div", {
129
130
  className: "flex items-center justify-between gap-3 text-sm",
130
131
  children: [/* @__PURE__ */ s("p", {