@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.
- package/dist/chunks/pkg/booking-engine/dist/node_modules/@date-fns/tz/date/index-DAbcklF5.js +1 -0
- package/dist/chunks/pkg/booking-engine/dist/node_modules/@date-fns/tz/date/mini-CSEBo1ZP.js +60 -0
- package/dist/chunks/pkg/booking-engine/dist/node_modules/@date-fns/tz/index--u3Qf-qy.js +4 -0
- package/dist/chunks/pkg/booking-engine/dist/node_modules/@date-fns/tz/tz/index-CEcibV-H.js +1 -0
- package/dist/chunks/pkg/booking-engine/dist/node_modules/@date-fns/tz/tzOffset/index-COlDDdap.js +22 -0
- package/dist/chunks/pkg/booking-engine/dist/pricing-BJaynUu_.js +3 -0
- package/dist/chunks/pkg/booking-engine/dist/utils/schedule-ssRov9xe.js +39 -0
- package/dist/chunks/pkg/booking-engine/dist/utils/timezone-B6XIbBPz.js +79 -0
- package/dist/components/ProductPriceBadge/index.d.ts.map +1 -1
- package/dist/components/ProductPriceBadge/index.js +86 -80
- package/dist/components/StorefrontCartPanel/index.d.ts +4 -4
- package/dist/components/StorefrontCartPanel/index.d.ts.map +1 -1
- package/dist/components/StorefrontCartPanel/index.js +10 -9
- package/dist/i18n/en.d.ts +11 -6
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +13 -8
- package/dist/i18n/fr.d.ts +11 -6
- package/dist/i18n/fr.d.ts.map +1 -1
- package/dist/i18n/fr.js +13 -8
- package/dist/index.d.ts +54 -36
- package/dist/index.js +66 -66
- package/dist/lib/booking.d.ts +0 -6
- package/dist/lib/booking.d.ts.map +1 -1
- package/dist/lib/booking.js +51 -65
- package/dist/lib/cartSummary.d.ts +5 -3
- package/dist/lib/cartSummary.d.ts.map +1 -1
- package/dist/lib/cartSummary.js +7 -7
- package/dist/lib/pricing.d.ts +18 -6
- package/dist/lib/pricing.d.ts.map +1 -1
- package/dist/lib/pricing.js +45 -29
- package/dist/pages/BookingPage.d.ts.map +1 -1
- package/dist/pages/BookingPage.js +205 -201
- package/dist/pages/CheckoutPage.d.ts.map +1 -1
- package/dist/pages/CheckoutPage.js +277 -274
- package/dist/pages/checkout/components/CheckoutSummaryColumn.d.ts +2 -2
- package/dist/pages/checkout/components/CheckoutSummaryColumn.d.ts.map +1 -1
- package/dist/pages/checkout/components/CheckoutSummaryColumn.js +4 -4
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "./mini-CSEBo1ZP.js";
|
|
@@ -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 @@
|
|
|
1
|
+
import "../date/index-DAbcklF5.js";
|
package/dist/chunks/pkg/booking-engine/dist/node_modules/@date-fns/tz/tzOffset/index-COlDDdap.js
ADDED
|
@@ -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":"
|
|
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 {
|
|
2
|
-
import { Badge as
|
|
3
|
-
import { useOptionalStorefront as
|
|
4
|
-
import { useEffect as o, useId as
|
|
5
|
-
import { Fragment as
|
|
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
|
|
7
|
+
import { useTranslation as ie } from "react-i18next";
|
|
8
8
|
import { cn as f } from "@rpcbase/ui";
|
|
9
|
-
import { Info as
|
|
10
|
-
import { Drawer as
|
|
11
|
-
import { Popover as
|
|
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
|
|
14
|
-
typeof window > "u" || window.dispatchEvent(new CustomEvent(
|
|
15
|
-
},
|
|
16
|
-
let { t:
|
|
17
|
-
|
|
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
|
-
|
|
19
|
+
D || (U(), k((t) => t === "click" ? t : e), v(T));
|
|
20
20
|
}, G = () => {
|
|
21
|
-
U(),
|
|
22
|
-
},
|
|
23
|
-
U(),
|
|
24
|
-
},
|
|
25
|
-
|
|
26
|
-
},
|
|
27
|
-
!
|
|
28
|
-
},
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
},
|
|
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
|
-
},
|
|
34
|
+
}, ge = (e) => {
|
|
35
35
|
let t = e.relatedTarget ?? document.activeElement;
|
|
36
|
-
|
|
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 !==
|
|
43
|
+
e.detail?.id !== T && (U(), k(null), j(!1));
|
|
44
44
|
};
|
|
45
|
-
return window.addEventListener(
|
|
46
|
-
window.removeEventListener(
|
|
45
|
+
return window.addEventListener(g, e), () => {
|
|
46
|
+
window.removeEventListener(g, e), U();
|
|
47
47
|
};
|
|
48
|
-
}, [
|
|
49
|
-
if (
|
|
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
|
-
|
|
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
|
-
}, [
|
|
61
|
-
if (
|
|
62
|
-
U(),
|
|
60
|
+
}, [O]), o(() => {
|
|
61
|
+
if (D) {
|
|
62
|
+
U(), k(null);
|
|
63
63
|
return;
|
|
64
64
|
}
|
|
65
|
-
|
|
66
|
-
}, [
|
|
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",
|
|
69
|
-
children: /* @__PURE__ */ l("span", { children:
|
|
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(
|
|
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(
|
|
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:
|
|
85
|
+
}), /* @__PURE__ */ l("span", { children: C("price_then", { price: H }) })]
|
|
83
86
|
}) : null,
|
|
84
87
|
B.length > 0 ? /* @__PURE__ */ l("span", {
|
|
85
|
-
ref:
|
|
88
|
+
ref: P,
|
|
86
89
|
className: "inline-flex shrink-0 items-center text-slate-500",
|
|
87
90
|
onMouseEnter: () => {
|
|
88
|
-
|
|
91
|
+
S && W("hover");
|
|
89
92
|
},
|
|
90
|
-
onMouseMove:
|
|
93
|
+
onMouseMove: me,
|
|
91
94
|
onMouseLeave: J,
|
|
92
|
-
children: /* @__PURE__ */ l(
|
|
95
|
+
children: /* @__PURE__ */ l(ae, {
|
|
93
96
|
className: "h-3 w-3",
|
|
94
97
|
"aria-hidden": "true"
|
|
95
98
|
})
|
|
96
99
|
}) : null
|
|
97
|
-
] }),
|
|
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:
|
|
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(
|
|
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(
|
|
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:
|
|
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(({
|
|
136
|
-
let i =
|
|
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
|
-
|
|
169
|
+
ve()
|
|
164
170
|
]
|
|
165
171
|
});
|
|
166
|
-
return
|
|
167
|
-
open:
|
|
172
|
+
return D ? /* @__PURE__ */ u(p.Root, {
|
|
173
|
+
open: A,
|
|
168
174
|
onOpenChange: (e) => {
|
|
169
|
-
e ?
|
|
175
|
+
e ? fe() : pe();
|
|
170
176
|
},
|
|
171
177
|
swipeDirection: "down",
|
|
172
|
-
children: [/* @__PURE__ */ l(
|
|
173
|
-
ref:
|
|
178
|
+
children: [/* @__PURE__ */ l(p.Trigger, {
|
|
179
|
+
ref: N,
|
|
174
180
|
type: "button",
|
|
175
181
|
className: Y,
|
|
176
|
-
"aria-label":
|
|
177
|
-
"aria-expanded":
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
202
|
+
children: /* @__PURE__ */ l(p.Title, {
|
|
197
203
|
className: "text-left text-lg font-semibold text-slate-950",
|
|
198
|
-
children: /* @__PURE__ */ l("span", { children:
|
|
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(
|
|
208
|
-
open:
|
|
213
|
+
}) : /* @__PURE__ */ u(m.Root, {
|
|
214
|
+
open: I,
|
|
209
215
|
onOpenChange: (e) => {
|
|
210
216
|
e ? W("click") : G();
|
|
211
217
|
},
|
|
212
|
-
children: [/* @__PURE__ */ l(
|
|
213
|
-
ref:
|
|
218
|
+
children: [/* @__PURE__ */ l(m.Trigger, {
|
|
219
|
+
ref: N,
|
|
214
220
|
type: "button",
|
|
215
221
|
className: Y,
|
|
216
|
-
"aria-label":
|
|
217
|
-
"aria-expanded":
|
|
218
|
-
onBlur:
|
|
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(),
|
|
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(
|
|
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(
|
|
233
|
-
ref:
|
|
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 {
|
|
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
|
-
|
|
7
|
-
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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("
|
|
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
|
|
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("
|
|
122
|
-
}),
|
|
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
|
-
})
|
|
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", {
|