@loczer/storefront-sdk 0.161.0 → 0.162.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/booking-engine/dist/utils/{pricing-DcnUXaeI.js → pricing-CYLeWtmu.js} +6 -6
- package/dist/components/BikeProductCard/index.js +1 -1
- package/dist/components/ContactSection/index.js +2 -2
- package/dist/components/StorefrontCartPanel/index.d.ts +3 -1
- package/dist/components/StorefrontCartPanel/index.d.ts.map +1 -1
- package/dist/components/StorefrontCartPanel/index.js +25 -23
- package/dist/i18n/en.js +1 -1
- package/dist/i18n/fr.js +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/lib/checkoutSubmit.d.ts +2 -2
- package/dist/lib/checkoutSubmit.js +1 -1
- package/dist/lib/pricing.js +3 -3
- package/dist/pages/BookingPage.js +1 -1
- package/dist/pages/CheckoutPage.d.ts.map +1 -1
- package/dist/pages/CheckoutPage.js +71 -75
- package/dist/pages/CheckoutPaymentPage.js +5 -5
- package/dist/pages/CheckoutSuccessPage.js +6 -6
- package/dist/pages/ContractSaleDocumentPage.js +1 -1
- package/dist/pages/HomePage.js +7 -7
- package/dist/pages/PaymentLinkPage.js +3 -3
- package/dist/pages/PaymentLinkSuccessPage.js +1 -1
- package/dist/pages/ProductPage.js +3 -3
- package/dist/pages/checkout/components/CheckoutCouponCard.d.ts +2 -1
- package/dist/pages/checkout/components/CheckoutCouponCard.d.ts.map +1 -1
- package/dist/pages/checkout/components/CheckoutCouponCard.js +37 -36
- package/dist/pages/checkout/components/CheckoutDetailsCard.js +2 -2
- package/dist/pages/checkout/components/CheckoutPaymentSummaryCard.js +21 -21
- package/dist/pages/checkout/components/CheckoutSummaryColumn.d.ts +6 -2
- package/dist/pages/checkout/components/CheckoutSummaryColumn.d.ts.map +1 -1
- package/dist/pages/checkout/components/CheckoutSummaryColumn.js +26 -23
- package/dist/pages/checkout/types.d.ts +1 -1
- package/dist/pages/checkout/types.js +3 -3
- package/dist/storefront.css +1 -1
- package/dist/ui/card.js +26 -26
- package/package.json +1 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
function d(n, r) {
|
|
2
2
|
return n.quantity - r.quantity;
|
|
3
3
|
}
|
|
4
|
-
function
|
|
5
|
-
return Number.
|
|
4
|
+
function q(n) {
|
|
5
|
+
return Number.isFinite(n) && n > 0;
|
|
6
6
|
}
|
|
7
|
-
function
|
|
8
|
-
if (!
|
|
9
|
-
throw new Error(`Requested quantity must be a positive
|
|
7
|
+
function v(n, r, a = "day") {
|
|
8
|
+
if (!q(r))
|
|
9
|
+
throw new Error(`Requested quantity must be a positive number (received ${r}).`);
|
|
10
10
|
if (!n || n.length === 0)
|
|
11
11
|
throw new Error("Cannot calculate price without pricing tiers.");
|
|
12
12
|
const c = n.filter((t) => t.unit === a).sort(d);
|
|
@@ -32,5 +32,5 @@ function q(n, r, a = "day") {
|
|
|
32
32
|
return Math.round(e);
|
|
33
33
|
}
|
|
34
34
|
export {
|
|
35
|
-
|
|
35
|
+
v as calculatePriceForQuantity
|
|
36
36
|
};
|
|
@@ -24,7 +24,7 @@ function F({
|
|
|
24
24
|
return /* @__PURE__ */ a(
|
|
25
25
|
"div",
|
|
26
26
|
{
|
|
27
|
-
className: "flex h-full flex-col gap-2 rounded-
|
|
27
|
+
className: "flex h-full flex-col gap-2 rounded-xl border border-slate-200 bg-white p-3 shadow-sm",
|
|
28
28
|
"data-testid": g,
|
|
29
29
|
children: [
|
|
30
30
|
/* @__PURE__ */ a("div", { className: "flex flex-1 items-stretch gap-4", children: [
|
|
@@ -62,8 +62,8 @@ function we({ preset: s, storeSlug: j }) {
|
|
|
62
62
|
/* @__PURE__ */ e("h2", { className: "text-3xl font-semibold tracking-tight text-slate-950", children: t("contact_section_title") }),
|
|
63
63
|
/* @__PURE__ */ e("p", { className: "mt-3 text-sm text-slate-600 sm:text-base", children: t("contact_section_subtitle") })
|
|
64
64
|
] }),
|
|
65
|
-
/* @__PURE__ */ r("div", { className: "mt-
|
|
66
|
-
/* @__PURE__ */ r("div", { className: "flex flex-col gap-
|
|
65
|
+
/* @__PURE__ */ r("div", { className: "mt-8 grid gap-6 rounded-xl border border-slate-200 bg-white p-4 shadow-sm lg:grid-cols-2 lg:p-6", children: [
|
|
66
|
+
/* @__PURE__ */ r("div", { className: "flex flex-col gap-6 lg:border-r lg:border-slate-200 lg:pr-6", children: [
|
|
67
67
|
/* @__PURE__ */ r("div", { children: [
|
|
68
68
|
/* @__PURE__ */ e("h3", { className: "text-lg font-semibold text-slate-950", children: t("contact_section_info_title") }),
|
|
69
69
|
/* @__PURE__ */ e("p", { className: "mt-2 text-sm text-slate-600", children: t(T ? "contact_section_info_description" : "contact_section_info_description_without_whatsapp") })
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
1
2
|
import { StorefrontCartSummaryLine } from '../../lib/cartSummary';
|
|
2
3
|
type StorefrontCartPanelProps = {
|
|
3
4
|
lines: StorefrontCartSummaryLine[];
|
|
@@ -16,11 +17,12 @@ type StorefrontCartPanelProps = {
|
|
|
16
17
|
showCheckoutAction?: boolean;
|
|
17
18
|
showClearAction?: boolean;
|
|
18
19
|
editable?: boolean;
|
|
20
|
+
summaryAddon?: ReactNode;
|
|
19
21
|
stickyTopClassName?: string;
|
|
20
22
|
onQuantityChange?: (key: string, quantity: number) => void;
|
|
21
23
|
onRemove?: (key: string) => void;
|
|
22
24
|
onClear?: () => void;
|
|
23
25
|
};
|
|
24
|
-
export declare function StorefrontCartPanel({ lines, itemCount, totalPerDayMinor, estimatedDays, estimatedTotalMinor, discountedEstimatedTotalMinor, discountAmountMinor, lateReturnSurchargeMinor, couponCode, durationLabel, title, description, checkoutPath, showCheckoutAction, showClearAction, editable, stickyTopClassName, onQuantityChange, onRemove, onClear, }: StorefrontCartPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
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;
|
|
25
27
|
export {};
|
|
26
28
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/StorefrontCartPanel/index.tsx"],"names":[],"mappings":"
|
|
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,15 +1,15 @@
|
|
|
1
|
-
import { jsxs as l, jsx as e, Fragment as
|
|
2
|
-
import { Link as
|
|
1
|
+
import { jsxs as l, jsx as e, Fragment as F } from "react/jsx-runtime";
|
|
2
|
+
import { Link as W } from "@rpcbase/router";
|
|
3
3
|
import { cn as d } from "@rpcbase/ui";
|
|
4
|
-
import { Trash2 as
|
|
5
|
-
import { useTranslation as
|
|
4
|
+
import { Trash2 as D, ArrowRight as T } from "lucide-react";
|
|
5
|
+
import { useTranslation as E } from "react-i18next";
|
|
6
6
|
import { formatPriceMinor as r } from "../../lib/utils.js";
|
|
7
7
|
import { Badge as m } from "../../ui/badge.js";
|
|
8
8
|
import { Button as o } from "../../ui/button.js";
|
|
9
|
-
import { Card as
|
|
10
|
-
import { Input as
|
|
11
|
-
import { ProductWarningNotice as
|
|
12
|
-
function
|
|
9
|
+
import { Card as G } from "../../ui/card.js";
|
|
10
|
+
import { Input as H } from "../../ui/input.js";
|
|
11
|
+
import { ProductWarningNotice as J } from "../ProductWarningNotice/index.js";
|
|
12
|
+
function ee({
|
|
13
13
|
lines: n,
|
|
14
14
|
itemCount: _,
|
|
15
15
|
totalPerDayMinor: v,
|
|
@@ -26,13 +26,14 @@ function M({
|
|
|
26
26
|
showCheckoutAction: q = !1,
|
|
27
27
|
showClearAction: C = !1,
|
|
28
28
|
editable: V = !0,
|
|
29
|
-
|
|
29
|
+
summaryAddon: L,
|
|
30
|
+
stickyTopClassName: P = "top-24",
|
|
30
31
|
onQuantityChange: b,
|
|
31
32
|
onRemove: N,
|
|
32
33
|
onClear: g
|
|
33
34
|
}) {
|
|
34
|
-
const { t, i18n: s } =
|
|
35
|
-
return /* @__PURE__ */ l(
|
|
35
|
+
const { t, i18n: s } = E();
|
|
36
|
+
return /* @__PURE__ */ l(G, { className: d("sticky border-slate-200 bg-white shadow-sm", P), children: [
|
|
36
37
|
/* @__PURE__ */ l("div", { className: "border-b border-slate-200 px-4 py-4", children: [
|
|
37
38
|
/* @__PURE__ */ l("div", { className: "flex items-center justify-between gap-3", children: [
|
|
38
39
|
/* @__PURE__ */ e("p", { className: "text-sm font-semibold text-slate-950", children: /* @__PURE__ */ e("span", { children: j ?? t("cart_title") }) }),
|
|
@@ -42,7 +43,7 @@ function M({
|
|
|
42
43
|
] }),
|
|
43
44
|
/* @__PURE__ */ l("div", { className: "grid gap-3 p-4", children: [
|
|
44
45
|
n.length === 0 ? /* @__PURE__ */ e("p", { className: "text-sm text-slate-600", children: /* @__PURE__ */ e("span", { children: t("cart_empty") }) }) : /* @__PURE__ */ e("div", { className: "grid gap-3", children: n.map((a) => {
|
|
45
|
-
const
|
|
46
|
+
const $ = r(a.unitPriceMinor, s.language), z = a.insufficientCapacity === !0, I = a.availabilityIssue === "quantity_unavailable" ? t("availability_quantity_unavailable") : t("availability_out_of_stock");
|
|
46
47
|
return /* @__PURE__ */ l(
|
|
47
48
|
"div",
|
|
48
49
|
{
|
|
@@ -52,20 +53,20 @@ function M({
|
|
|
52
53
|
/* @__PURE__ */ e("p", { className: "truncate text-sm font-medium text-slate-950", children: /* @__PURE__ */ e("span", { children: a.productName }) }),
|
|
53
54
|
a.productVariantLabel ? /* @__PURE__ */ e("p", { className: "text-xs text-slate-600", children: /* @__PURE__ */ e("span", { children: `${t(a.productVariantIsSize ? "product_size_label" : "product_variant_label")}: ${a.productVariantLabel}` }) }) : null,
|
|
54
55
|
a.productVariantDescription ? /* @__PURE__ */ e("p", { className: "text-xs text-slate-500", children: /* @__PURE__ */ e("span", { children: a.productVariantDescription }) }) : null,
|
|
55
|
-
/* @__PURE__ */ e(
|
|
56
|
-
/* @__PURE__ */ e("p", { className: "text-xs text-slate-600", children: /* @__PURE__ */ e("span", { children: t("cart_line_meta", { quantity: a.quantity, price:
|
|
57
|
-
|
|
56
|
+
/* @__PURE__ */ e(J, { warning: a.productWarning }),
|
|
57
|
+
/* @__PURE__ */ e("p", { className: "text-xs text-slate-600", children: /* @__PURE__ */ e("span", { children: t("cart_line_meta", { quantity: a.quantity, price: $ }) }) }),
|
|
58
|
+
z ? /* @__PURE__ */ e("div", { className: "flex flex-col items-start gap-1 pt-1", children: /* @__PURE__ */ e(m, { variant: "destructive", children: /* @__PURE__ */ e("span", { children: I }) }) }) : null
|
|
58
59
|
] }),
|
|
59
60
|
V ? /* @__PURE__ */ l("div", { className: "flex items-center gap-2", children: [
|
|
60
61
|
b ? /* @__PURE__ */ e(
|
|
61
|
-
|
|
62
|
+
H,
|
|
62
63
|
{
|
|
63
64
|
type: "number",
|
|
64
65
|
min: 1,
|
|
65
66
|
max: 99,
|
|
66
67
|
value: a.quantity,
|
|
67
|
-
onChange: (
|
|
68
|
-
const y = Number(
|
|
68
|
+
onChange: (B) => {
|
|
69
|
+
const y = Number(B.target.value);
|
|
69
70
|
b(a.key, Number.isFinite(y) ? y : 0);
|
|
70
71
|
},
|
|
71
72
|
className: "h-9 w-16",
|
|
@@ -81,7 +82,7 @@ function M({
|
|
|
81
82
|
className: "h-8 w-8 text-slate-500 hover:bg-slate-50 hover:text-slate-700",
|
|
82
83
|
onClick: () => N(a.key),
|
|
83
84
|
"aria-label": t("remove_from_cart"),
|
|
84
|
-
children: /* @__PURE__ */ e(
|
|
85
|
+
children: /* @__PURE__ */ e(D, { className: "h-4 w-4", "aria-hidden": "true" })
|
|
85
86
|
}
|
|
86
87
|
) : null
|
|
87
88
|
] }) : null
|
|
@@ -90,11 +91,12 @@ function M({
|
|
|
90
91
|
a.key
|
|
91
92
|
);
|
|
92
93
|
}) }),
|
|
94
|
+
L,
|
|
93
95
|
/* @__PURE__ */ l("div", { className: "flex items-center justify-between gap-3 border-t border-slate-200 pt-3 text-sm", children: [
|
|
94
96
|
/* @__PURE__ */ e("p", { className: "text-slate-700", children: /* @__PURE__ */ e("span", { children: t("cart_total_per_day") }) }),
|
|
95
97
|
/* @__PURE__ */ e("p", { className: "font-semibold text-slate-950", children: /* @__PURE__ */ e("span", { children: r(v, s.language) }) })
|
|
96
98
|
] }),
|
|
97
|
-
typeof p == "number" && typeof h == "number" ? /* @__PURE__ */ l(
|
|
99
|
+
typeof p == "number" && typeof h == "number" ? /* @__PURE__ */ l(F, { children: [
|
|
98
100
|
/* @__PURE__ */ l("div", { className: "flex items-center justify-between gap-3 text-sm", children: [
|
|
99
101
|
/* @__PURE__ */ e("p", { className: "text-slate-700", children: /* @__PURE__ */ e("span", { children: t("checkout_estimated_days", { count: p }) }) }),
|
|
100
102
|
u ? /* @__PURE__ */ e(m, { variant: "outline", className: "border-slate-200 bg-white text-slate-700", children: /* @__PURE__ */ e("span", { children: u }) }) : null
|
|
@@ -113,9 +115,9 @@ function M({
|
|
|
113
115
|
] })
|
|
114
116
|
] }) : null,
|
|
115
117
|
/* @__PURE__ */ l("div", { className: "grid gap-2", children: [
|
|
116
|
-
q && f ? /* @__PURE__ */ e(
|
|
118
|
+
q && f ? /* @__PURE__ */ e(W, { to: f, className: d(n.length > 0 ? "block" : "hidden"), children: /* @__PURE__ */ l(o, { className: "w-full gap-2", children: [
|
|
117
119
|
/* @__PURE__ */ e("span", { children: t("checkout_button") }),
|
|
118
|
-
/* @__PURE__ */ e(
|
|
120
|
+
/* @__PURE__ */ e(T, { className: "h-4 w-4", "aria-hidden": "true" })
|
|
119
121
|
] }) }) : null,
|
|
120
122
|
C && g ? /* @__PURE__ */ e(
|
|
121
123
|
o,
|
|
@@ -132,5 +134,5 @@ function M({
|
|
|
132
134
|
] });
|
|
133
135
|
}
|
|
134
136
|
export {
|
|
135
|
-
|
|
137
|
+
ee as StorefrontCartPanel
|
|
136
138
|
};
|
package/dist/i18n/en.js
CHANGED
|
@@ -127,7 +127,7 @@ const e = {
|
|
|
127
127
|
checkout_full_name_placeholder: "Jane Doe",
|
|
128
128
|
checkout_email_label: "Email",
|
|
129
129
|
checkout_email_placeholder: "jane@example.com",
|
|
130
|
-
checkout_phone_label: "Phone
|
|
130
|
+
checkout_phone_label: "Phone",
|
|
131
131
|
checkout_phone_placeholder: "+1 555 555 5555",
|
|
132
132
|
checkout_notes_label: "Notes or message (optional)",
|
|
133
133
|
checkout_notes_placeholder: "Any details about your booking…",
|
package/dist/i18n/fr.js
CHANGED
|
@@ -127,7 +127,7 @@ const e = {
|
|
|
127
127
|
checkout_full_name_placeholder: "Jean Dupont",
|
|
128
128
|
checkout_email_label: "Email",
|
|
129
129
|
checkout_email_placeholder: "jean@example.com",
|
|
130
|
-
checkout_phone_label: "Téléphone
|
|
130
|
+
checkout_phone_label: "Téléphone",
|
|
131
131
|
checkout_phone_placeholder: "+33 6 00 00 00 00",
|
|
132
132
|
checkout_notes_label: "Notes ou message (optionnel)",
|
|
133
133
|
checkout_notes_placeholder: "Précisions pour votre réservation…",
|
package/dist/index.d.ts
CHANGED
|
@@ -2801,7 +2801,7 @@ export declare type StorefrontCartItem = {
|
|
|
2801
2801
|
quantity: number;
|
|
2802
2802
|
};
|
|
2803
2803
|
|
|
2804
|
-
export declare function StorefrontCartPanel({ lines, itemCount, totalPerDayMinor, estimatedDays, estimatedTotalMinor, discountedEstimatedTotalMinor, discountAmountMinor, lateReturnSurchargeMinor, couponCode, durationLabel, title, description, checkoutPath, showCheckoutAction, showClearAction, editable, stickyTopClassName, onQuantityChange, onRemove, onClear, }: StorefrontCartPanelProps): JSX.Element;
|
|
2804
|
+
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): JSX.Element;
|
|
2805
2805
|
|
|
2806
2806
|
declare type StorefrontCartPanelProps = {
|
|
2807
2807
|
lines: StorefrontCartSummaryLine[];
|
|
@@ -2820,6 +2820,7 @@ declare type StorefrontCartPanelProps = {
|
|
|
2820
2820
|
showCheckoutAction?: boolean;
|
|
2821
2821
|
showClearAction?: boolean;
|
|
2822
2822
|
editable?: boolean;
|
|
2823
|
+
summaryAddon?: ReactNode;
|
|
2823
2824
|
stickyTopClassName?: string;
|
|
2824
2825
|
onQuantityChange?: (key: string, quantity: number) => void;
|
|
2825
2826
|
onRemove?: (key: string) => void;
|
|
@@ -2893,7 +2894,7 @@ export declare const storefrontCheckoutSubmitRequestBaseSchema: z.ZodObject<{
|
|
|
2893
2894
|
customer: z.ZodObject<{
|
|
2894
2895
|
fullName: z.ZodString;
|
|
2895
2896
|
email: z.ZodString;
|
|
2896
|
-
phone: z.
|
|
2897
|
+
phone: z.ZodString;
|
|
2897
2898
|
notes: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
2898
2899
|
}, z.core.$strip>;
|
|
2899
2900
|
items: z.ZodArray<z.ZodObject<{
|
|
@@ -2926,7 +2927,7 @@ export declare const storefrontCheckoutSubmitRequestSchema: z.ZodObject<{
|
|
|
2926
2927
|
customer: z.ZodObject<{
|
|
2927
2928
|
fullName: z.ZodString;
|
|
2928
2929
|
email: z.ZodString;
|
|
2929
|
-
phone: z.
|
|
2930
|
+
phone: z.ZodString;
|
|
2930
2931
|
notes: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
2931
2932
|
}, z.core.$strip>;
|
|
2932
2933
|
items: z.ZodArray<z.ZodObject<{
|
|
@@ -26,7 +26,7 @@ export declare const requestBaseSchema: z.ZodObject<{
|
|
|
26
26
|
customer: z.ZodObject<{
|
|
27
27
|
fullName: z.ZodString;
|
|
28
28
|
email: z.ZodString;
|
|
29
|
-
phone: z.
|
|
29
|
+
phone: z.ZodString;
|
|
30
30
|
notes: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
31
31
|
}, z.core.$strip>;
|
|
32
32
|
items: z.ZodArray<z.ZodObject<{
|
|
@@ -60,7 +60,7 @@ export declare const requestSchema: z.ZodObject<{
|
|
|
60
60
|
customer: z.ZodObject<{
|
|
61
61
|
fullName: z.ZodString;
|
|
62
62
|
email: z.ZodString;
|
|
63
|
-
phone: z.
|
|
63
|
+
phone: z.ZodString;
|
|
64
64
|
notes: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
|
|
65
65
|
}, z.core.$strip>;
|
|
66
66
|
items: z.ZodArray<z.ZodObject<{
|
|
@@ -27,7 +27,7 @@ const x = "/api/public/storefront/checkout/submit", n = t.object({
|
|
|
27
27
|
customer: t.object({
|
|
28
28
|
fullName: t.string().trim().min(2),
|
|
29
29
|
email: t.string().trim().email(),
|
|
30
|
-
phone: t.string().trim().min(6)
|
|
30
|
+
phone: t.string().trim().min(6),
|
|
31
31
|
notes: t.string().trim().max(2e3).optional().or(t.literal(""))
|
|
32
32
|
}),
|
|
33
33
|
items: t.array(n).min(1),
|
package/dist/lib/pricing.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { calculatePriceForQuantity as
|
|
1
|
+
import { calculatePriceForQuantity as D } from "../chunks/booking-engine/dist/utils/pricing-CYLeWtmu.js";
|
|
2
2
|
import { formatPriceMinor as d } from "./utils.js";
|
|
3
3
|
const f = "EUR", b = 8, p = (t) => [...t].sort((r, i) => r.quantity - i.quantity), P = (t) => t.find((r) => r.currency?.trim())?.currency?.trim() || f, F = (t) => Math.abs(t) % 100 !== 0 ? {} : {
|
|
4
4
|
minimumFractionDigits: 0,
|
|
@@ -17,7 +17,7 @@ function Q(t, r) {
|
|
|
17
17
|
const i = m(t);
|
|
18
18
|
if (i.length === 0) return null;
|
|
19
19
|
try {
|
|
20
|
-
return
|
|
20
|
+
return D(i, r, "day");
|
|
21
21
|
} catch {
|
|
22
22
|
return null;
|
|
23
23
|
}
|
|
@@ -38,7 +38,7 @@ function E(t, r) {
|
|
|
38
38
|
function I(t, r, i) {
|
|
39
39
|
const n = m(t), a = P(n);
|
|
40
40
|
return n.map((c, e) => {
|
|
41
|
-
const o = e > 0 ? n[e - 1] : void 0, s = o?.quantity ?? 0,
|
|
41
|
+
const o = e > 0 ? n[e - 1] : void 0, s = o?.quantity ?? 0, g = o?.value ?? 0, l = c.quantity - s, y = c.value - g;
|
|
42
42
|
return l <= 0 || y < 0 ? u(c.value, r, { currency: a }) : `${u(y, r, { currency: a })} / ${_(l, r, i)}`;
|
|
43
43
|
});
|
|
44
44
|
}
|
|
@@ -431,7 +431,7 @@ function ua() {
|
|
|
431
431
|
pe,
|
|
432
432
|
{
|
|
433
433
|
className: "border-slate-200 bg-white shadow-sm",
|
|
434
|
-
children: /* @__PURE__ */ c("div", { className: "flex flex-col gap-
|
|
434
|
+
children: /* @__PURE__ */ c("div", { className: "flex flex-col gap-2 p-3", children: [
|
|
435
435
|
/* @__PURE__ */ i(
|
|
436
436
|
"div",
|
|
437
437
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CheckoutPage.d.ts","sourceRoot":"","sources":["../../src/pages/CheckoutPage.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CheckoutPage.d.ts","sourceRoot":"","sources":["../../src/pages/CheckoutPage.tsx"],"names":[],"mappings":"AAsGA,MAAM,CAAC,OAAO,UAAU,YAAY,4CA2lBnC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as
|
|
1
|
+
import { jsx as a, jsxs as y } from "react/jsx-runtime";
|
|
2
2
|
import { useState as c, useMemo as u, useEffect as E } from "react";
|
|
3
3
|
import { toast as Z } from "@rpcbase/client";
|
|
4
4
|
import { useForm as Ye, zodResolver as et } from "@rpcbase/form";
|
|
@@ -17,12 +17,11 @@ import { useStorefront as kt, useStorefrontProducts as Ct } from "../StorefrontP
|
|
|
17
17
|
import { BookingFlowSteps as vt } from "../components/BookingFlowSteps/index.js";
|
|
18
18
|
import { Button as xe } from "../ui/button.js";
|
|
19
19
|
import { CheckoutDetailsCard as St } from "./checkout/components/CheckoutDetailsCard.js";
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
|
|
25
|
-
const Pe = 0.2, Dt = (o) => o <= 0 ? 1 : Math.max(1, Math.ceil(o / 1440)), _ = (o, r, p) => {
|
|
20
|
+
import { CheckoutPaymentSummaryCard as Mt } from "./checkout/components/CheckoutPaymentSummaryCard.js";
|
|
21
|
+
import { CheckoutSummaryColumn as xt } from "./checkout/components/CheckoutSummaryColumn.js";
|
|
22
|
+
import { FulfillmentSection as Pt } from "../components/FulfillmentSection/index.js";
|
|
23
|
+
import { checkoutFormSchema as Tt } from "./checkout/types.js";
|
|
24
|
+
const Pe = 0.2, At = (o) => o <= 0 ? 1 : Math.max(1, Math.ceil(o / 1440)), _ = (o, r, p) => {
|
|
26
25
|
try {
|
|
27
26
|
return new Intl.NumberFormat(p, {
|
|
28
27
|
style: "currency",
|
|
@@ -41,7 +40,7 @@ const Pe = 0.2, Dt = (o) => o <= 0 ? 1 : Math.max(1, Math.ceil(o / 1440)), _ = (
|
|
|
41
40
|
} catch {
|
|
42
41
|
return `${Math.round(o * 100)}%`;
|
|
43
42
|
}
|
|
44
|
-
},
|
|
43
|
+
}, Dt = (o, r, p) => {
|
|
45
44
|
const S = {
|
|
46
45
|
dateStyle: "medium",
|
|
47
46
|
timeStyle: "short"
|
|
@@ -53,14 +52,14 @@ const Pe = 0.2, Dt = (o) => o <= 0 ? 1 : Math.max(1, Math.ceil(o / 1440)), _ = (
|
|
|
53
52
|
}
|
|
54
53
|
return new Intl.DateTimeFormat(r, S).format(o);
|
|
55
54
|
};
|
|
56
|
-
function
|
|
55
|
+
function Yt() {
|
|
57
56
|
const { t: o, i18n: r } = at(), { storefrontConfiguration: p } = kt(), S = p.workspace?.workspaceLanguage, { bikes: G, accessories: J } = Ct(), { storeSlug: s } = tt(), [M, Ae] = ot(), De = nt(), { items: X, itemCount: we, setQuantity: Ie, removeItem: Le, clear: Re } = bt(), [U, Y] = c(!1), [l, T] = c(null), [ee, $] = c(!1), [te, A] = c(null), oe = M.get("coupon") ?? M.get("code") ?? "", [ne, B] = c(oe), [ae, re] = c(oe.trim()), [f, x] = c(null), [se, D] = c(null), [ie, O] = c(!1), [Ne, b] = c(null), [le, k] = c(null), [V, ce] = c(!1), ue = u(
|
|
58
57
|
() => ht(M, s),
|
|
59
58
|
[M, s]
|
|
60
59
|
), w = p.settings.fulfillmentModes.includes("delivery"), de = p.settings.deliveryDisabledReason.trim(), Ee = w || de.length > 0, Fe = p.shop.address?.trim() ?? "", t = u(() => {
|
|
61
60
|
const e = ft(ue);
|
|
62
61
|
return e.fulfillment === "delivery" && !w ? { ...e, fulfillment: "pickup" } : e;
|
|
63
|
-
}, [ue, w]), Ue = u(() => gt(t), [t]), me = u(() => yt(t), [t]), pe = u(() =>
|
|
62
|
+
}, [ue, w]), Ue = u(() => gt(t), [t]), me = u(() => yt(t), [t]), pe = u(() => At(me), [me]), d = u(
|
|
64
63
|
() => _t({
|
|
65
64
|
items: X,
|
|
66
65
|
language: r.language,
|
|
@@ -97,9 +96,9 @@ function to() {
|
|
|
97
96
|
},
|
|
98
97
|
products: q
|
|
99
98
|
}
|
|
100
|
-
),
|
|
99
|
+
), n = mt.parse(i);
|
|
101
100
|
if (e) return;
|
|
102
|
-
I(
|
|
101
|
+
I(n.success ? n.availability ?? [] : []);
|
|
103
102
|
} catch (i) {
|
|
104
103
|
if (e) return;
|
|
105
104
|
console.error("Failed to load checkout cart availability", i), I([]);
|
|
@@ -126,11 +125,11 @@ function to() {
|
|
|
126
125
|
() => ({
|
|
127
126
|
...d,
|
|
128
127
|
lines: d.lines.map((e) => {
|
|
129
|
-
const i = fe.get(ve(e.checkoutProductId, e.productVariantId)),
|
|
128
|
+
const i = fe.get(ve(e.checkoutProductId, e.productVariantId)), n = i ? pt(i) : e.availabilityStatus === "OUT_OF_STOCK" ? "unavailable" : void 0;
|
|
130
129
|
return {
|
|
131
130
|
...e,
|
|
132
|
-
insufficientCapacity: !K &&
|
|
133
|
-
availabilityIssue: K ? void 0 :
|
|
131
|
+
insufficientCapacity: !K && n !== void 0,
|
|
132
|
+
availabilityIssue: K ? void 0 : n
|
|
134
133
|
};
|
|
135
134
|
})
|
|
136
135
|
}),
|
|
@@ -144,15 +143,15 @@ function to() {
|
|
|
144
143
|
})),
|
|
145
144
|
[d.lines]
|
|
146
145
|
), $e = d.estimatedTotalMinor ?? d.totalPerDayMinor, v = se?.totalMinor ?? $e, P = f?.discountAmountMinor ?? 0, R = Se(new URLSearchParams(), t).toString(), j = `/${s ?? ""}/booking${R ? `?${R}` : ""}`, Be = `/${s ?? ""}/checkout${R ? `?${R}` : ""}`, ge = Ye({
|
|
147
|
-
resolver: et(
|
|
146
|
+
resolver: et(Tt),
|
|
148
147
|
defaultValues: { full_name: "", email: "", phone: "", notes: "" }
|
|
149
148
|
});
|
|
150
149
|
E(() => {
|
|
151
150
|
Me(s, t);
|
|
152
151
|
}, [t, s]);
|
|
153
152
|
const H = (e) => {
|
|
154
|
-
const i = { ...t, ...e },
|
|
155
|
-
Ae(
|
|
153
|
+
const i = { ...t, ...e }, n = Se(M, i);
|
|
154
|
+
Ae(n, { replace: !0 }), Me(s, n);
|
|
156
155
|
};
|
|
157
156
|
E(() => {
|
|
158
157
|
if (!s || C.length === 0) {
|
|
@@ -160,7 +159,7 @@ function to() {
|
|
|
160
159
|
return;
|
|
161
160
|
}
|
|
162
161
|
const e = ae.trim(), i = e.length === 0 && !V;
|
|
163
|
-
let
|
|
162
|
+
let n = !1;
|
|
164
163
|
return O(!0), k(null), b(null), (async () => {
|
|
165
164
|
try {
|
|
166
165
|
const W = await F(
|
|
@@ -178,7 +177,7 @@ function to() {
|
|
|
178
177
|
includeAutoApply: i
|
|
179
178
|
}
|
|
180
179
|
), m = lt.parse(W);
|
|
181
|
-
if (
|
|
180
|
+
if (n) return;
|
|
182
181
|
if (D(
|
|
183
182
|
typeof m.subtotalMinor == "number" && typeof m.totalMinor == "number" ? {
|
|
184
183
|
subtotalMinor: m.subtotalMinor,
|
|
@@ -191,13 +190,13 @@ function to() {
|
|
|
191
190
|
}
|
|
192
191
|
x(m.coupon ?? null), m.coupon && (m.coupon.autoApplied && e.length === 0 ? (B(m.coupon.code), b(o("checkout_coupon_auto_applied", { code: m.coupon.code }))) : b(o("checkout_coupon_manual_applied")));
|
|
193
192
|
} catch (W) {
|
|
194
|
-
if (
|
|
193
|
+
if (n) return;
|
|
195
194
|
console.error("Failed to verify checkout coupon", W), x(null), D(null), k(o("checkout_coupon_error"));
|
|
196
195
|
} finally {
|
|
197
|
-
|
|
196
|
+
n || O(!1);
|
|
198
197
|
}
|
|
199
198
|
})(), () => {
|
|
200
|
-
|
|
199
|
+
n = !0;
|
|
201
200
|
};
|
|
202
201
|
}, [
|
|
203
202
|
V,
|
|
@@ -229,13 +228,13 @@ function to() {
|
|
|
229
228
|
},
|
|
230
229
|
estimatedTotalMinor: v
|
|
231
230
|
}
|
|
232
|
-
),
|
|
231
|
+
), n = st.parse(i);
|
|
233
232
|
if (e) return;
|
|
234
|
-
if (!
|
|
235
|
-
T(null), A(
|
|
233
|
+
if (!n.success || !n.decision) {
|
|
234
|
+
T(null), A(n.message || o("checkout_payment_error"));
|
|
236
235
|
return;
|
|
237
236
|
}
|
|
238
|
-
T(
|
|
237
|
+
T(n.decision);
|
|
239
238
|
} catch (i) {
|
|
240
239
|
if (e) return;
|
|
241
240
|
console.error("Failed to load checkout payment decision", i), T(null), A(o("checkout_payment_error"));
|
|
@@ -262,7 +261,7 @@ function to() {
|
|
|
262
261
|
}, [r.language, l]), Q = u(() => {
|
|
263
262
|
if (!l?.depositRefundableUntilIso) return null;
|
|
264
263
|
const e = new Date(l.depositRefundableUntilIso);
|
|
265
|
-
return Number.isNaN(e.getTime()) ? null :
|
|
264
|
+
return Number.isNaN(e.getTime()) ? null : Dt(e, r.language, _e);
|
|
266
265
|
}, [r.language, l?.depositRefundableUntilIso, _e]), Ze = u(() => l ? l.paymentMode === "deposit" && h > 0 && N ? Q ? o("checkout_payment_due_now_helper_deposit_refundable_until", {
|
|
267
266
|
percent: N,
|
|
268
267
|
date: Q
|
|
@@ -301,12 +300,12 @@ function to() {
|
|
|
301
300
|
},
|
|
302
301
|
items: C
|
|
303
302
|
}
|
|
304
|
-
),
|
|
305
|
-
if (!
|
|
306
|
-
Z.error(
|
|
303
|
+
), n = ut.parse(i);
|
|
304
|
+
if (!n.success || !n.checkout) {
|
|
305
|
+
Z.error(n.message || o("checkout_payment_error"));
|
|
307
306
|
return;
|
|
308
307
|
}
|
|
309
|
-
|
|
308
|
+
n.checkout.requiresPayment || Z.success(o("checkout_success_toast")), await De(n.checkout.nextPath), Re();
|
|
310
309
|
} catch (i) {
|
|
311
310
|
console.error("Failed to submit storefront checkout", i), Z.error(o("checkout_payment_error"));
|
|
312
311
|
} finally {
|
|
@@ -314,25 +313,25 @@ function to() {
|
|
|
314
313
|
}
|
|
315
314
|
}
|
|
316
315
|
}), Je = o(We ? "checkout_continue_to_payment" : "checkout_submit"), be = t.fulfillment === "delivery" && t.start_address.trim().length === 0, Xe = !U && !ee && !te && !ie && !le && !!l && !be && C.length > 0;
|
|
317
|
-
return d.lines.length === 0 ? /* @__PURE__ */
|
|
318
|
-
/* @__PURE__ */
|
|
319
|
-
/* @__PURE__ */
|
|
320
|
-
/* @__PURE__ */
|
|
321
|
-
/* @__PURE__ */
|
|
322
|
-
/* @__PURE__ */
|
|
316
|
+
return d.lines.length === 0 ? /* @__PURE__ */ a("div", { className: "mx-auto max-w-3xl px-4 py-10 sm:px-6", children: /* @__PURE__ */ y("div", { className: "rounded-xl border border-slate-200 bg-white p-4 shadow-sm", children: [
|
|
317
|
+
/* @__PURE__ */ a("h1", { className: "text-xl font-semibold tracking-tight text-slate-950", children: /* @__PURE__ */ a("span", { children: o("cart_empty_title") }) }),
|
|
318
|
+
/* @__PURE__ */ a("p", { className: "mt-2 text-sm text-slate-600", children: /* @__PURE__ */ a("span", { children: o("cart_empty_description") }) }),
|
|
319
|
+
/* @__PURE__ */ a("div", { className: "mt-6", children: /* @__PURE__ */ a(ke, { to: j, children: /* @__PURE__ */ y(xe, { className: "gap-2", children: [
|
|
320
|
+
/* @__PURE__ */ a(Ce, { className: "h-4 w-4", "aria-hidden": "true" }),
|
|
321
|
+
/* @__PURE__ */ a("span", { children: o("back_to_booking") })
|
|
323
322
|
] }) }) })
|
|
324
|
-
] }) }) : /* @__PURE__ */
|
|
325
|
-
/* @__PURE__ */
|
|
323
|
+
] }) }) : /* @__PURE__ */ a("div", { className: "mx-auto max-w-7xl px-4 py-8 sm:px-6", children: /* @__PURE__ */ y("div", { className: "flex flex-col gap-6", children: [
|
|
324
|
+
/* @__PURE__ */ a(vt, { currentStep: "checkout", bookingPath: j, checkoutPath: Be }),
|
|
326
325
|
/* @__PURE__ */ y(ke, { to: j, className: "inline-flex items-center gap-2 text-sm font-medium text-slate-700 hover:text-slate-950", children: [
|
|
327
|
-
/* @__PURE__ */
|
|
328
|
-
/* @__PURE__ */
|
|
326
|
+
/* @__PURE__ */ a(Ce, { className: "h-4 w-4", "aria-hidden": "true" }),
|
|
327
|
+
/* @__PURE__ */ a("span", { children: o("back_to_booking") })
|
|
329
328
|
] }),
|
|
330
329
|
/* @__PURE__ */ y("div", { className: "grid gap-6 lg:grid-cols-12", children: [
|
|
331
330
|
/* @__PURE__ */ y("div", { className: "lg:col-span-7", children: [
|
|
332
|
-
/* @__PURE__ */
|
|
331
|
+
/* @__PURE__ */ a("h1", { className: "text-xl font-semibold tracking-tight text-slate-950", children: /* @__PURE__ */ a("span", { children: o("checkout_title") }) }),
|
|
333
332
|
/* @__PURE__ */ y("div", { className: "mt-5 grid gap-4", children: [
|
|
334
|
-
Ee ? /* @__PURE__ */
|
|
335
|
-
|
|
333
|
+
Ee ? /* @__PURE__ */ a("div", { className: "rounded-xl border border-slate-200 bg-white p-3 shadow-sm", children: /* @__PURE__ */ a(
|
|
334
|
+
Pt,
|
|
336
335
|
{
|
|
337
336
|
value: t.fulfillment,
|
|
338
337
|
onValueChange: (e) => H({ fulfillment: e }),
|
|
@@ -347,30 +346,9 @@ function to() {
|
|
|
347
346
|
testIdPrefix: "storefront-checkout-fulfillment"
|
|
348
347
|
}
|
|
349
348
|
) }) : null,
|
|
350
|
-
/* @__PURE__ */
|
|
351
|
-
/* @__PURE__ */
|
|
349
|
+
/* @__PURE__ */ a(St, { form: ge }),
|
|
350
|
+
/* @__PURE__ */ a(
|
|
352
351
|
Mt,
|
|
353
|
-
{
|
|
354
|
-
code: ne,
|
|
355
|
-
appliedCode: f?.code,
|
|
356
|
-
discountLabel: f && P > 0 ? _(P, g, r.language) : null,
|
|
357
|
-
message: Ne,
|
|
358
|
-
error: le,
|
|
359
|
-
loading: ie,
|
|
360
|
-
disabled: U,
|
|
361
|
-
onCodeChange: (e) => {
|
|
362
|
-
B(e), k(null), b(null);
|
|
363
|
-
},
|
|
364
|
-
onApply: () => {
|
|
365
|
-
ce(!1), re(ne.trim());
|
|
366
|
-
},
|
|
367
|
-
onRemove: () => {
|
|
368
|
-
B(""), re(""), x(null), D(null), k(null), b(null), ce(!0);
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
),
|
|
372
|
-
/* @__PURE__ */ n(
|
|
373
|
-
xt,
|
|
374
352
|
{
|
|
375
353
|
estimatedTotalLabel: Oe,
|
|
376
354
|
couponCode: f?.code,
|
|
@@ -392,7 +370,7 @@ function to() {
|
|
|
392
370
|
}
|
|
393
371
|
}
|
|
394
372
|
),
|
|
395
|
-
/* @__PURE__ */
|
|
373
|
+
/* @__PURE__ */ a(
|
|
396
374
|
xe,
|
|
397
375
|
{
|
|
398
376
|
type: "button",
|
|
@@ -402,14 +380,14 @@ function to() {
|
|
|
402
380
|
},
|
|
403
381
|
disabled: !Xe,
|
|
404
382
|
className: "mt-4 w-fit",
|
|
405
|
-
children: /* @__PURE__ */
|
|
383
|
+
children: /* @__PURE__ */ a("span", { children: Je })
|
|
406
384
|
}
|
|
407
385
|
),
|
|
408
|
-
be ? /* @__PURE__ */
|
|
386
|
+
be ? /* @__PURE__ */ a("p", { className: "text-sm text-slate-600", children: /* @__PURE__ */ a("span", { children: o("checkout_delivery_address_required") }) }) : null
|
|
409
387
|
] })
|
|
410
388
|
] }),
|
|
411
|
-
/* @__PURE__ */
|
|
412
|
-
|
|
389
|
+
/* @__PURE__ */ a(
|
|
390
|
+
xt,
|
|
413
391
|
{
|
|
414
392
|
lines: L.lines,
|
|
415
393
|
itemCount: we,
|
|
@@ -422,12 +400,30 @@ function to() {
|
|
|
422
400
|
couponCode: f?.code,
|
|
423
401
|
durationLabel: Ue.label,
|
|
424
402
|
onQuantityChange: Ie,
|
|
425
|
-
onRemove: Le
|
|
403
|
+
onRemove: Le,
|
|
404
|
+
coupon: {
|
|
405
|
+
code: ne,
|
|
406
|
+
appliedCode: f?.code,
|
|
407
|
+
discountLabel: f && P > 0 ? _(P, g, r.language) : null,
|
|
408
|
+
message: Ne,
|
|
409
|
+
error: le,
|
|
410
|
+
loading: ie,
|
|
411
|
+
disabled: U,
|
|
412
|
+
onCodeChange: (e) => {
|
|
413
|
+
B(e), k(null), b(null);
|
|
414
|
+
},
|
|
415
|
+
onApply: () => {
|
|
416
|
+
ce(!1), re(ne.trim());
|
|
417
|
+
},
|
|
418
|
+
onRemove: () => {
|
|
419
|
+
B(""), re(""), x(null), D(null), k(null), b(null), ce(!0);
|
|
420
|
+
}
|
|
421
|
+
}
|
|
426
422
|
}
|
|
427
423
|
)
|
|
428
424
|
] })
|
|
429
425
|
] }) });
|
|
430
426
|
}
|
|
431
427
|
export {
|
|
432
|
-
|
|
428
|
+
Yt as default
|
|
433
429
|
};
|