@planetaexo/design-system 0.13.3 → 0.14.1
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/index.cjs +146 -131
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +102 -2
- package/dist/index.d.ts +102 -2
- package/dist/index.js +146 -131
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1261,8 +1261,8 @@ function Alert({ variant = "info", children, className }) {
|
|
|
1261
1261
|
}
|
|
1262
1262
|
);
|
|
1263
1263
|
}
|
|
1264
|
-
function AdventureCard({ adventure }) {
|
|
1265
|
-
var _a, _b, _c, _d, _e, _f;
|
|
1264
|
+
function AdventureCard({ adventure, labels }) {
|
|
1265
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
|
|
1266
1266
|
const isControlled = (_b = (_a = adventure.optionals) == null ? void 0 : _a.some((o) => o.onCheckedChange !== void 0)) != null ? _b : false;
|
|
1267
1267
|
const [checkedInternal, setCheckedInternal] = React23.useState(
|
|
1268
1268
|
new Set((_d = (_c = adventure.optionals) == null ? void 0 : _c.filter((o) => o.defaultChecked).map((o) => o.id)) != null ? _d : [])
|
|
@@ -1303,7 +1303,7 @@ function AdventureCard({ adventure }) {
|
|
|
1303
1303
|
className: "flex items-center gap-1.5 rounded-full border border-border px-3 py-1 text-xs text-muted-foreground font-ui hover:border-destructive hover:text-destructive transition-colors",
|
|
1304
1304
|
children: [
|
|
1305
1305
|
/* @__PURE__ */ jsx(XIcon, { className: "w-3 h-3" }),
|
|
1306
|
-
"Remove"
|
|
1306
|
+
(_f = labels == null ? void 0 : labels.remove) != null ? _f : "Remove"
|
|
1307
1307
|
]
|
|
1308
1308
|
}
|
|
1309
1309
|
)
|
|
@@ -1320,7 +1320,7 @@ function AdventureCard({ adventure }) {
|
|
|
1320
1320
|
adventure.location
|
|
1321
1321
|
] }),
|
|
1322
1322
|
adventure.optionals && adventure.optionals.length > 0 && /* @__PURE__ */ jsxs("div", { className: "mt-2 rounded-xl border border-border bg-muted/30 p-4 flex flex-col gap-3", children: [
|
|
1323
|
-
/* @__PURE__ */ jsx("p", { className: "text-[10px] font-bold text-muted-foreground font-heading uppercase tracking-widest", children: "Available optionals" }),
|
|
1323
|
+
/* @__PURE__ */ jsx("p", { className: "text-[10px] font-bold text-muted-foreground font-heading uppercase tracking-widest", children: (_g = labels == null ? void 0 : labels.availableOptionals) != null ? _g : "Available optionals" }),
|
|
1324
1324
|
/* @__PURE__ */ jsx("div", { className: "flex flex-col gap-2", children: adventure.optionals.map((opt) => {
|
|
1325
1325
|
var _a2, _b2, _c2, _d2, _e2;
|
|
1326
1326
|
const checked = isChecked(opt);
|
|
@@ -1400,7 +1400,7 @@ function AdventureCard({ adventure }) {
|
|
|
1400
1400
|
(adventure.description || adventure.detailsSlot) && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1401
1401
|
/* @__PURE__ */ jsx(Separator, { className: "my-1" }),
|
|
1402
1402
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
1403
|
-
/* @__PURE__ */ jsx("p", { className: "text-[10px] font-bold text-muted-foreground font-heading uppercase tracking-widest mb-3", children: (
|
|
1403
|
+
/* @__PURE__ */ jsx("p", { className: "text-[10px] font-bold text-muted-foreground font-heading uppercase tracking-widest mb-3", children: (_h = adventure.itineraryLabel) != null ? _h : "Details" }),
|
|
1404
1404
|
adventure.description && !adventure.detailsSlot && /* @__PURE__ */ jsx("p", { className: "text-base text-foreground/80 leading-snug font-sans", children: adventure.description }),
|
|
1405
1405
|
adventure.detailsSlot && /* @__PURE__ */ jsx("div", { className: cn(
|
|
1406
1406
|
"text-foreground",
|
|
@@ -1426,21 +1426,21 @@ function AdventureCard({ adventure }) {
|
|
|
1426
1426
|
] })
|
|
1427
1427
|
] }),
|
|
1428
1428
|
adventure.included && adventure.included.length > 0 && /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2.5 mt-1", children: [
|
|
1429
|
-
/* @__PURE__ */ jsx("h4", { className: "text-base font-bold text-foreground font-heading", children:
|
|
1429
|
+
/* @__PURE__ */ jsx("h4", { className: "text-base font-bold text-foreground font-heading", children: (_i = adventure.includedLabel) != null ? _i : "What's included" }),
|
|
1430
1430
|
/* @__PURE__ */ jsx("ul", { className: "flex flex-col gap-1.5", children: adventure.included.map((item, i) => /* @__PURE__ */ jsxs("li", { className: "flex items-start gap-2 text-base text-foreground/80 font-sans", children: [
|
|
1431
1431
|
/* @__PURE__ */ jsx(CheckIcon, { className: "w-4 h-4 text-primary shrink-0 mt-1" }),
|
|
1432
1432
|
item
|
|
1433
1433
|
] }, i)) })
|
|
1434
1434
|
] }),
|
|
1435
1435
|
adventure.notIncluded && adventure.notIncluded.length > 0 && /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2.5 mt-1", children: [
|
|
1436
|
-
/* @__PURE__ */ jsx("h4", { className: "text-base font-bold text-foreground font-heading", children:
|
|
1436
|
+
/* @__PURE__ */ jsx("h4", { className: "text-base font-bold text-foreground font-heading", children: (_j = adventure.notIncludedLabel) != null ? _j : "What's not included" }),
|
|
1437
1437
|
/* @__PURE__ */ jsx("ul", { className: "flex flex-col gap-1.5", children: adventure.notIncluded.map((item, i) => /* @__PURE__ */ jsxs("li", { className: "flex items-start gap-2 text-base text-foreground/80 font-sans", children: [
|
|
1438
1438
|
/* @__PURE__ */ jsx(XIcon, { className: "w-4 h-4 text-destructive shrink-0 mt-1" }),
|
|
1439
1439
|
item
|
|
1440
1440
|
] }, i)) })
|
|
1441
1441
|
] }),
|
|
1442
1442
|
adventure.cancellationPolicy && adventure.cancellationPolicy.length > 0 && /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2.5 mt-1", children: [
|
|
1443
|
-
/* @__PURE__ */ jsx("h4", { className: "text-base font-bold text-foreground font-heading", children:
|
|
1443
|
+
/* @__PURE__ */ jsx("h4", { className: "text-base font-bold text-foreground font-heading", children: (_k = adventure.cancellationPolicyLabel) != null ? _k : "Cancellation policy" }),
|
|
1444
1444
|
/* @__PURE__ */ jsx("ul", { className: "flex flex-col gap-1.5", children: adventure.cancellationPolicy.map((item, i) => /* @__PURE__ */ jsxs("li", { className: "flex items-start gap-2 text-base text-muted-foreground font-sans", children: [
|
|
1445
1445
|
/* @__PURE__ */ jsx("span", { className: "w-1.5 h-1.5 rounded-full bg-primary shrink-0 mt-2.5" }),
|
|
1446
1446
|
item
|
|
@@ -1454,12 +1454,14 @@ function OfferSidebar({
|
|
|
1454
1454
|
agent,
|
|
1455
1455
|
onBook,
|
|
1456
1456
|
bookLabel,
|
|
1457
|
-
bookDisabled
|
|
1457
|
+
bookDisabled,
|
|
1458
|
+
labels
|
|
1458
1459
|
}) {
|
|
1460
|
+
var _a, _b;
|
|
1459
1461
|
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4", children: [
|
|
1460
1462
|
/* @__PURE__ */ jsxs("div", { className: "hidden lg:flex rounded-2xl border border-border bg-card p-5 flex-col gap-4", children: [
|
|
1461
1463
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
1462
|
-
/* @__PURE__ */ jsx("p", { className: "text-xs uppercase tracking-widest text-muted-foreground font-heading mb-1", children: "Booking Total" }),
|
|
1464
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs uppercase tracking-widest text-muted-foreground font-heading mb-1", children: (_a = labels == null ? void 0 : labels.bookingTotal) != null ? _a : "Booking Total" }),
|
|
1463
1465
|
/* @__PURE__ */ jsx("p", { className: "text-3xl font-black text-primary font-heading leading-none", children: total })
|
|
1464
1466
|
] }),
|
|
1465
1467
|
/* @__PURE__ */ jsx(
|
|
@@ -1492,7 +1494,7 @@ function OfferSidebar({
|
|
|
1492
1494
|
)
|
|
1493
1495
|
) : /* @__PURE__ */ jsx("div", { className: "w-16 h-16 rounded-full bg-primary/10 flex items-center justify-center", children: /* @__PURE__ */ jsx("span", { className: "text-xl font-bold text-primary font-heading", children: agent.name.charAt(0) }) }),
|
|
1494
1496
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
1495
|
-
/* @__PURE__ */ jsx("p", { className: "text-sm text-foreground font-sans", children: "Need help with your offer?" }),
|
|
1497
|
+
/* @__PURE__ */ jsx("p", { className: "text-sm text-foreground font-sans", children: (_b = labels == null ? void 0 : labels.needHelp) != null ? _b : "Need help with your offer?" }),
|
|
1496
1498
|
/* @__PURE__ */ jsxs("p", { className: "text-sm font-sans text-foreground mt-0.5", children: [
|
|
1497
1499
|
"Contact",
|
|
1498
1500
|
" ",
|
|
@@ -1559,10 +1561,12 @@ function OfferSummarySection({
|
|
|
1559
1561
|
continueLabel,
|
|
1560
1562
|
summaryNotesSlot,
|
|
1561
1563
|
summaryDiscountLine,
|
|
1562
|
-
continueDisabled
|
|
1564
|
+
continueDisabled,
|
|
1565
|
+
labels
|
|
1563
1566
|
}) {
|
|
1567
|
+
var _a, _b, _c, _d, _e;
|
|
1564
1568
|
return /* @__PURE__ */ jsxs("div", { className: "rounded-2xl border border-border bg-card p-5 flex flex-col gap-4", children: [
|
|
1565
|
-
/* @__PURE__ */ jsx("h3", { className: "font-bold text-foreground font-heading text-base", children: "Summary" }),
|
|
1569
|
+
/* @__PURE__ */ jsx("h3", { className: "font-bold text-foreground font-heading text-base", children: (_a = labels == null ? void 0 : labels.summary) != null ? _a : "Summary" }),
|
|
1566
1570
|
/* @__PURE__ */ jsx(Separator, {}),
|
|
1567
1571
|
/* @__PURE__ */ jsx("div", { className: "flex flex-col gap-4", children: adventures.map((adventure, i) => /* @__PURE__ */ jsxs("div", { children: [
|
|
1568
1572
|
/* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-3", children: [
|
|
@@ -1581,7 +1585,7 @@ function OfferSummarySection({
|
|
|
1581
1585
|
summaryNotesSlot,
|
|
1582
1586
|
/* @__PURE__ */ jsx(Separator, {}),
|
|
1583
1587
|
subtotal && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
1584
|
-
/* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground font-sans", children: "Subtotal" }),
|
|
1588
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground font-sans", children: (_b = labels == null ? void 0 : labels.subtotal) != null ? _b : "Subtotal" }),
|
|
1585
1589
|
/* @__PURE__ */ jsx("span", { className: "text-sm font-semibold text-foreground font-sans", children: subtotal })
|
|
1586
1590
|
] }),
|
|
1587
1591
|
summaryDiscountLine && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between text-success", children: [
|
|
@@ -1601,16 +1605,16 @@ function OfferSummarySection({
|
|
|
1601
1605
|
/* @__PURE__ */ jsx("span", { className: "text-xs font-semibold text-foreground font-sans", children: depositInfo.depositAmount })
|
|
1602
1606
|
] }),
|
|
1603
1607
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
1604
|
-
/* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground font-sans", children: "Remaining balance" }),
|
|
1608
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground font-sans", children: (_c = labels == null ? void 0 : labels.remainingBalance) != null ? _c : "Remaining balance" }),
|
|
1605
1609
|
/* @__PURE__ */ jsx("span", { className: "text-xs font-semibold text-foreground font-sans", children: depositInfo.remainingAmount })
|
|
1606
1610
|
] }),
|
|
1607
1611
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
1608
|
-
/* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground font-sans", children: "Balance due" }),
|
|
1612
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground font-sans", children: (_d = labels == null ? void 0 : labels.balanceDue) != null ? _d : "Balance due" }),
|
|
1609
1613
|
/* @__PURE__ */ jsx("span", { className: "text-xs font-semibold text-foreground font-sans", children: depositInfo.balanceDueDate })
|
|
1610
1614
|
] })
|
|
1611
1615
|
] }),
|
|
1612
1616
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between pt-1", children: [
|
|
1613
|
-
/* @__PURE__ */ jsx("span", { className: "text-base font-bold text-foreground font-heading", children: "Total" }),
|
|
1617
|
+
/* @__PURE__ */ jsx("span", { className: "text-base font-bold text-foreground font-heading", children: (_e = labels == null ? void 0 : labels.total) != null ? _e : "Total" }),
|
|
1614
1618
|
/* @__PURE__ */ jsx("span", { className: "text-2xl font-black text-primary font-heading", children: total })
|
|
1615
1619
|
] }),
|
|
1616
1620
|
/* @__PURE__ */ jsx(
|
|
@@ -1925,17 +1929,23 @@ function BookingConfirmedCard({
|
|
|
1925
1929
|
)
|
|
1926
1930
|
] });
|
|
1927
1931
|
}
|
|
1928
|
-
var
|
|
1929
|
-
|
|
1930
|
-
|
|
1931
|
-
|
|
1932
|
-
|
|
1932
|
+
var WIZARD_STEPS_FN = (l) => {
|
|
1933
|
+
var _a, _b, _c, _d, _e, _f;
|
|
1934
|
+
return [
|
|
1935
|
+
{ id: "responsible", label: (_b = (_a = l == null ? void 0 : l.wizardSteps) == null ? void 0 : _a.responsible) != null ? _b : "Responsible party details" },
|
|
1936
|
+
{ id: "travellers", label: (_d = (_c = l == null ? void 0 : l.wizardSteps) == null ? void 0 : _c.travellers) != null ? _d : "Travellers" },
|
|
1937
|
+
{ id: "payment", label: (_f = (_e = l == null ? void 0 : l.wizardSteps) == null ? void 0 : _e.paymentAndTerms) != null ? _f : "Payment and terms" }
|
|
1938
|
+
];
|
|
1939
|
+
};
|
|
1933
1940
|
function BookingWizard({
|
|
1934
1941
|
adventures,
|
|
1935
1942
|
total,
|
|
1936
1943
|
depositInfo,
|
|
1937
|
-
onCancel
|
|
1944
|
+
onCancel,
|
|
1945
|
+
labels
|
|
1938
1946
|
}) {
|
|
1947
|
+
var _a;
|
|
1948
|
+
const wizardSteps = WIZARD_STEPS_FN(labels);
|
|
1939
1949
|
const [step, setStep] = React23.useState("responsible");
|
|
1940
1950
|
const [error, setError] = React23.useState(null);
|
|
1941
1951
|
const [responsible, setResponsible] = React23.useState({
|
|
@@ -1949,12 +1959,12 @@ function BookingWizard({
|
|
|
1949
1959
|
notes: ""
|
|
1950
1960
|
});
|
|
1951
1961
|
const totalAdults = adventures.reduce((s, a) => {
|
|
1952
|
-
var
|
|
1953
|
-
return s + ((_b = (
|
|
1962
|
+
var _a2, _b;
|
|
1963
|
+
return s + ((_b = (_a2 = a.slots) == null ? void 0 : _a2.adults) != null ? _b : 1);
|
|
1954
1964
|
}, 0);
|
|
1955
1965
|
const totalChildren = adventures.reduce((s, a) => {
|
|
1956
|
-
var
|
|
1957
|
-
return s + ((_b = (
|
|
1966
|
+
var _a2, _b;
|
|
1967
|
+
return s + ((_b = (_a2 = a.slots) == null ? void 0 : _a2.children) != null ? _b : 0);
|
|
1958
1968
|
}, 0);
|
|
1959
1969
|
const totalPax = totalAdults + totalChildren;
|
|
1960
1970
|
const [travellers, setTravellers] = React23.useState(
|
|
@@ -1971,7 +1981,7 @@ function BookingWizard({
|
|
|
1971
1981
|
const setR = (k, v) => setResponsible((p) => __spreadProps(__spreadValues({}, p), { [k]: v }));
|
|
1972
1982
|
const setT = (i, k, v) => setTravellers((prev) => prev.map((t, idx) => idx === i ? __spreadProps(__spreadValues({}, t), { [k]: v }) : t));
|
|
1973
1983
|
const setTDob = (i, v) => setTravellers((prev) => prev.map((t, idx) => idx === i ? __spreadProps(__spreadValues({}, t), { dateOfBirth: v }) : t));
|
|
1974
|
-
const stepIndex =
|
|
1984
|
+
const stepIndex = wizardSteps.findIndex((s) => s.id === step);
|
|
1975
1985
|
const goNext = () => {
|
|
1976
1986
|
setError(null);
|
|
1977
1987
|
if (step === "responsible") {
|
|
@@ -2004,15 +2014,16 @@ function BookingWizard({
|
|
|
2004
2014
|
if (step === "travellers") setStep("responsible");
|
|
2005
2015
|
else if (step === "payment") setStep("travellers");
|
|
2006
2016
|
};
|
|
2007
|
-
const
|
|
2017
|
+
const payDepositLabel = (_a = labels == null ? void 0 : labels.payDeposit) != null ? _a : "Pay deposit";
|
|
2018
|
+
const depositLabel = depositInfo ? `${payDepositLabel} (${depositInfo.depositPercent}%) \u2014 ${depositInfo.depositAmount}` : payDepositLabel;
|
|
2008
2019
|
const fullLabel = `Pay full amount \u2014 ${total}`;
|
|
2009
2020
|
if (step === "confirmed") {
|
|
2010
|
-
return /* @__PURE__ */ jsx(BookingConfirmedCard, { email: responsible.email, onBack: onCancel });
|
|
2021
|
+
return /* @__PURE__ */ jsx(BookingConfirmedCard, { title: labels == null ? void 0 : labels.bookingConfirmed, email: responsible.email, onBack: onCancel });
|
|
2011
2022
|
}
|
|
2012
2023
|
return /* @__PURE__ */ jsx(
|
|
2013
2024
|
BookingShell,
|
|
2014
2025
|
{
|
|
2015
|
-
steps:
|
|
2026
|
+
steps: wizardSteps.map((s) => s.label),
|
|
2016
2027
|
currentStep: stepIndex,
|
|
2017
2028
|
title: "Booking details",
|
|
2018
2029
|
onNext: goNext,
|
|
@@ -2072,6 +2083,7 @@ function BookingWizard({
|
|
|
2072
2083
|
/* @__PURE__ */ jsx("h4", { className: "font-bold text-foreground font-heading text-base", children: "Traveller details" })
|
|
2073
2084
|
] }),
|
|
2074
2085
|
travellers.map((t, i) => {
|
|
2086
|
+
var _a2, _b;
|
|
2075
2087
|
const isChild = i >= totalAdults;
|
|
2076
2088
|
return /* @__PURE__ */ jsxs("div", { className: "rounded-xl border border-border p-4 flex flex-col gap-3", children: [
|
|
2077
2089
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
@@ -2082,7 +2094,7 @@ function BookingWizard({
|
|
|
2082
2094
|
/* @__PURE__ */ jsx("span", { className: cn(
|
|
2083
2095
|
"text-xs font-semibold font-heading rounded-full px-2.5 py-0.5",
|
|
2084
2096
|
isChild ? "bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-400" : "bg-primary/10 text-primary"
|
|
2085
|
-
), children: isChild ? "
|
|
2097
|
+
), children: isChild ? (_a2 = labels == null ? void 0 : labels.childLabel) != null ? _a2 : "Child" : (_b = labels == null ? void 0 : labels.adultLabel) != null ? _b : "Adult" })
|
|
2086
2098
|
] }),
|
|
2087
2099
|
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
|
|
2088
2100
|
/* @__PURE__ */ jsx(FloatingInput, { label: "First name", required: true, value: t.firstName, onChange: (e) => setT(i, "firstName", e.target.value) }),
|
|
@@ -2125,6 +2137,7 @@ function BookingWizard({
|
|
|
2125
2137
|
/* @__PURE__ */ jsx(
|
|
2126
2138
|
PaymentMethodSelector,
|
|
2127
2139
|
{
|
|
2140
|
+
title: labels == null ? void 0 : labels.paymentMethod,
|
|
2128
2141
|
methods: [
|
|
2129
2142
|
{ id: "stripe", label: "Credit / Debit card", description: "Secure payment via Stripe" },
|
|
2130
2143
|
{ id: "pix", label: "PIX", description: "Instant transfer \u2014 Brazil only" },
|
|
@@ -2166,8 +2179,10 @@ function Offer({
|
|
|
2166
2179
|
summaryNotesSlot,
|
|
2167
2180
|
summaryDiscountLine,
|
|
2168
2181
|
continueDisabled,
|
|
2182
|
+
labels,
|
|
2169
2183
|
className
|
|
2170
2184
|
}) {
|
|
2185
|
+
var _a, _b;
|
|
2171
2186
|
const [showBooking, setShowBooking] = React23.useState(false);
|
|
2172
2187
|
const isShowingCheckout = !!checkoutSlot || showBooking;
|
|
2173
2188
|
const handleBook = () => {
|
|
@@ -2183,9 +2198,9 @@ function Offer({
|
|
|
2183
2198
|
/* @__PURE__ */ jsxs("section", { className: "flex flex-col gap-5", children: [
|
|
2184
2199
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
2185
2200
|
/* @__PURE__ */ jsx(MapIcon, { className: "w-5 h-5 text-primary shrink-0" }),
|
|
2186
|
-
/* @__PURE__ */ jsx("h2", { className: "font-bold text-foreground font-heading text-base", children: "Included Adventures" })
|
|
2201
|
+
/* @__PURE__ */ jsx("h2", { className: "font-bold text-foreground font-heading text-base", children: (_a = labels == null ? void 0 : labels.includedAdventures) != null ? _a : "Included Adventures" })
|
|
2187
2202
|
] }),
|
|
2188
|
-
adventures.map((adventure) => /* @__PURE__ */ jsx(AdventureCard, { adventure }, adventure.id))
|
|
2203
|
+
adventures.map((adventure) => /* @__PURE__ */ jsx(AdventureCard, { adventure, labels }, adventure.id))
|
|
2189
2204
|
] }),
|
|
2190
2205
|
!isShowingCheckout && /* @__PURE__ */ jsx(
|
|
2191
2206
|
OfferSummarySection,
|
|
@@ -2198,7 +2213,8 @@ function Offer({
|
|
|
2198
2213
|
continueLabel,
|
|
2199
2214
|
summaryNotesSlot,
|
|
2200
2215
|
summaryDiscountLine,
|
|
2201
|
-
continueDisabled
|
|
2216
|
+
continueDisabled,
|
|
2217
|
+
labels
|
|
2202
2218
|
}
|
|
2203
2219
|
),
|
|
2204
2220
|
isShowingCheckout && (checkoutSlot != null ? checkoutSlot : /* @__PURE__ */ jsx(
|
|
@@ -2207,7 +2223,8 @@ function Offer({
|
|
|
2207
2223
|
adventures,
|
|
2208
2224
|
total,
|
|
2209
2225
|
depositInfo,
|
|
2210
|
-
onCancel: () => setShowBooking(false)
|
|
2226
|
+
onCancel: () => setShowBooking(false),
|
|
2227
|
+
labels
|
|
2211
2228
|
}
|
|
2212
2229
|
))
|
|
2213
2230
|
] }),
|
|
@@ -2218,13 +2235,14 @@ function Offer({
|
|
|
2218
2235
|
agent,
|
|
2219
2236
|
onBook: handleBook,
|
|
2220
2237
|
bookLabel: continueLabel,
|
|
2221
|
-
bookDisabled: continueDisabled
|
|
2238
|
+
bookDisabled: continueDisabled,
|
|
2239
|
+
labels
|
|
2222
2240
|
}
|
|
2223
2241
|
) })
|
|
2224
2242
|
] }),
|
|
2225
2243
|
!isShowingCheckout && /* @__PURE__ */ jsx("div", { className: "fixed bottom-0 inset-x-0 z-40 border-t border-border bg-background/95 backdrop-blur-sm px-4 py-3 lg:hidden", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-4 max-w-5xl mx-auto", children: [
|
|
2226
2244
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-col", children: [
|
|
2227
|
-
/* @__PURE__ */ jsx("span", { className: "text-[10px] uppercase tracking-widest text-muted-foreground font-heading", children: "Total" }),
|
|
2245
|
+
/* @__PURE__ */ jsx("span", { className: "text-[10px] uppercase tracking-widest text-muted-foreground font-heading", children: (_b = labels == null ? void 0 : labels.total) != null ? _b : "Total" }),
|
|
2228
2246
|
/* @__PURE__ */ jsx("span", { className: "text-xl font-black text-primary font-heading leading-tight", children: total })
|
|
2229
2247
|
] }),
|
|
2230
2248
|
/* @__PURE__ */ jsx(
|
|
@@ -2503,9 +2521,10 @@ function AdventureSection({
|
|
|
2503
2521
|
onRequestOpenAddModal,
|
|
2504
2522
|
onRequestOpenEditModal,
|
|
2505
2523
|
onRequestOpenDeleteModal,
|
|
2506
|
-
cannotRemoveLastTravellerLabel
|
|
2524
|
+
cannotRemoveLastTravellerLabel,
|
|
2525
|
+
labels
|
|
2507
2526
|
}) {
|
|
2508
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i;
|
|
2527
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
|
|
2509
2528
|
const [detailsOpen, setDetailsOpen] = React23.useState(false);
|
|
2510
2529
|
const handleCopyUrl = (url) => {
|
|
2511
2530
|
if (onCopyFormLink) {
|
|
@@ -2643,7 +2662,7 @@ function AdventureSection({
|
|
|
2643
2662
|
/* @__PURE__ */ jsxs("div", { className: "border-t border-border px-5 lg:px-6 py-5 flex flex-col gap-4", children: [
|
|
2644
2663
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-3 flex-wrap", children: [
|
|
2645
2664
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
2646
|
-
/* @__PURE__ */ jsx("h4", { className: "text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest", children: "Travellers" }),
|
|
2665
|
+
/* @__PURE__ */ jsx("h4", { className: "text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest", children: (_f = labels == null ? void 0 : labels.travellersSection) != null ? _f : "Travellers" }),
|
|
2647
2666
|
adventure.formName && /* @__PURE__ */ jsxs("span", { className: "text-xs font-semibold text-muted-foreground/50 font-heading tracking-wide", children: [
|
|
2648
2667
|
"\xB7 ",
|
|
2649
2668
|
adventure.formName
|
|
@@ -2663,8 +2682,8 @@ function AdventureSection({
|
|
|
2663
2682
|
),
|
|
2664
2683
|
children: [
|
|
2665
2684
|
/* @__PURE__ */ jsx(UserPlusIcon, { className: "w-3 h-3" }),
|
|
2666
|
-
/* @__PURE__ */ jsx("span", { className: "hidden sm:inline", children: "Add contact as traveller" }),
|
|
2667
|
-
/* @__PURE__ */ jsx("span", { className: "sm:hidden", children: "Add contact" })
|
|
2685
|
+
/* @__PURE__ */ jsx("span", { className: "hidden sm:inline", children: (_g = labels == null ? void 0 : labels.addContactAsTraveller) != null ? _g : "Add contact as traveller" }),
|
|
2686
|
+
/* @__PURE__ */ jsx("span", { className: "sm:hidden", children: (_h = labels == null ? void 0 : labels.addContactAsTravellerShort) != null ? _h : "Add contact" })
|
|
2668
2687
|
]
|
|
2669
2688
|
}
|
|
2670
2689
|
),
|
|
@@ -2682,14 +2701,15 @@ function AdventureSection({
|
|
|
2682
2701
|
className: "flex items-center gap-1.5 rounded-full border border-border px-3 py-1.5 text-xs font-ui text-primary hover:border-primary hover:bg-primary/5 transition-colors",
|
|
2683
2702
|
children: [
|
|
2684
2703
|
/* @__PURE__ */ jsx(PlusIcon, { className: "w-3 h-3" }),
|
|
2685
|
-
/* @__PURE__ */ jsx("span", { className: "hidden sm:inline", children: (
|
|
2686
|
-
/* @__PURE__ */ jsx("span", { className: "sm:hidden", children: (
|
|
2704
|
+
/* @__PURE__ */ jsx("span", { className: "hidden sm:inline", children: (_i = adventure.addTravellerLabel) != null ? _i : "More travellers" }),
|
|
2705
|
+
/* @__PURE__ */ jsx("span", { className: "sm:hidden", children: (_k = (_j = adventure.addTravellerShortLabel) != null ? _j : adventure.addTravellerLabel) != null ? _k : "Add" })
|
|
2687
2706
|
]
|
|
2688
2707
|
}
|
|
2689
2708
|
)
|
|
2690
2709
|
] })
|
|
2691
2710
|
] }),
|
|
2692
2711
|
/* @__PURE__ */ jsx("div", { className: "flex flex-col divide-y divide-border", children: adventure.travellers.map((t) => {
|
|
2712
|
+
var _a2, _b2, _c2, _d2, _e2, _f2, _g2, _h2, _i2, _j2, _k2;
|
|
2693
2713
|
const canRemoveTraveller = adventure.travellers.length > 1;
|
|
2694
2714
|
const disabledRemoveTitle = canRemoveTraveller ? void 0 : cannotRemoveLastTravellerLabel != null ? cannotRemoveLastTravellerLabel : "Cannot remove last traveller";
|
|
2695
2715
|
return /* @__PURE__ */ jsxs(
|
|
@@ -2704,7 +2724,7 @@ function AdventureSection({
|
|
|
2704
2724
|
" ",
|
|
2705
2725
|
t.lastName
|
|
2706
2726
|
] }),
|
|
2707
|
-
t.isChild && /* @__PURE__ */ jsx("span", { className: "text-xs font-semibold font-heading rounded-full px-2 py-0.5 bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-400 shrink-0", children: "Child" })
|
|
2727
|
+
t.isChild && /* @__PURE__ */ jsx("span", { className: "text-xs font-semibold font-heading rounded-full px-2 py-0.5 bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-400 shrink-0", children: (_a2 = labels == null ? void 0 : labels.childBadge) != null ? _a2 : "Child" })
|
|
2708
2728
|
] }),
|
|
2709
2729
|
t.formUrl && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
2710
2730
|
/* @__PURE__ */ jsxs(
|
|
@@ -2716,7 +2736,7 @@ function AdventureSection({
|
|
|
2716
2736
|
className: "flex items-center gap-1 text-xs text-primary hover:text-primary/80 transition-colors font-ui",
|
|
2717
2737
|
children: [
|
|
2718
2738
|
/* @__PURE__ */ jsx(ExternalLinkIcon, { className: "w-3 h-3" }),
|
|
2719
|
-
"Open"
|
|
2739
|
+
(_b2 = labels == null ? void 0 : labels.openFormLink) != null ? _b2 : "Open"
|
|
2720
2740
|
]
|
|
2721
2741
|
}
|
|
2722
2742
|
),
|
|
@@ -2726,7 +2746,7 @@ function AdventureSection({
|
|
|
2726
2746
|
type: "button",
|
|
2727
2747
|
onClick: () => handleCopyUrl(t.formUrl),
|
|
2728
2748
|
className: "flex items-center text-xs text-muted-foreground hover:text-primary transition-colors font-ui",
|
|
2729
|
-
"aria-label": "Copy form URL",
|
|
2749
|
+
"aria-label": (_c2 = labels == null ? void 0 : labels.copyFormUrlAria) != null ? _c2 : "Copy form URL",
|
|
2730
2750
|
children: /* @__PURE__ */ jsx(CopyIcon, { className: "w-3 h-3" })
|
|
2731
2751
|
}
|
|
2732
2752
|
)
|
|
@@ -2740,7 +2760,7 @@ function AdventureSection({
|
|
|
2740
2760
|
"inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-bold font-heading uppercase tracking-wider shrink-0",
|
|
2741
2761
|
t.status === "completed" ? "bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400" : "bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400"
|
|
2742
2762
|
),
|
|
2743
|
-
children: t.status
|
|
2763
|
+
children: t.status === "completed" ? (_d2 = labels == null ? void 0 : labels.travellerStatusCompleted) != null ? _d2 : t.status : (_e2 = labels == null ? void 0 : labels.travellerStatusPending) != null ? _e2 : t.status
|
|
2744
2764
|
}
|
|
2745
2765
|
),
|
|
2746
2766
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-0.5 shrink-0", children: [
|
|
@@ -2756,7 +2776,7 @@ function AdventureSection({
|
|
|
2756
2776
|
}
|
|
2757
2777
|
},
|
|
2758
2778
|
className: "flex h-8 w-8 sm:h-7 sm:w-7 items-center justify-center rounded-lg text-muted-foreground hover:text-primary hover:bg-primary/10 transition-colors",
|
|
2759
|
-
"aria-label": `Edit ${t.firstName}`,
|
|
2779
|
+
"aria-label": (_g2 = (_f2 = labels == null ? void 0 : labels.editTravellerAria) == null ? void 0 : _f2.call(labels, t.firstName)) != null ? _g2 : `Edit ${t.firstName}`,
|
|
2760
2780
|
children: /* @__PURE__ */ jsx(PencilIcon, { className: "w-3.5 h-3.5" })
|
|
2761
2781
|
}
|
|
2762
2782
|
),
|
|
@@ -2779,7 +2799,7 @@ function AdventureSection({
|
|
|
2779
2799
|
"flex h-8 w-8 sm:h-7 sm:w-7 items-center justify-center rounded-lg text-muted-foreground hover:text-destructive hover:bg-destructive/10 transition-colors",
|
|
2780
2800
|
"disabled:opacity-40 disabled:cursor-not-allowed disabled:pointer-events-none disabled:hover:text-muted-foreground disabled:hover:bg-transparent"
|
|
2781
2801
|
),
|
|
2782
|
-
"aria-label": `Delete ${t.firstName}`,
|
|
2802
|
+
"aria-label": (_i2 = (_h2 = labels == null ? void 0 : labels.deleteTravellerAria) == null ? void 0 : _h2.call(labels, t.firstName)) != null ? _i2 : `Delete ${t.firstName}`,
|
|
2783
2803
|
children: /* @__PURE__ */ jsx(Trash2Icon, { className: "w-3.5 h-3.5" })
|
|
2784
2804
|
}
|
|
2785
2805
|
),
|
|
@@ -2804,7 +2824,7 @@ function AdventureSection({
|
|
|
2804
2824
|
"flex h-8 w-8 sm:h-7 sm:w-7 items-center justify-center rounded-lg text-muted-foreground hover:text-amber-500 hover:bg-amber-500/10 transition-colors",
|
|
2805
2825
|
"disabled:opacity-40 disabled:cursor-not-allowed disabled:pointer-events-none disabled:hover:text-muted-foreground disabled:hover:bg-transparent"
|
|
2806
2826
|
),
|
|
2807
|
-
"aria-label": `Remove ${t.firstName} from adventure`,
|
|
2827
|
+
"aria-label": (_k2 = (_j2 = labels == null ? void 0 : labels.removeFromAdventureAria) == null ? void 0 : _j2.call(labels, t.firstName)) != null ? _k2 : `Remove ${t.firstName} from adventure`,
|
|
2808
2828
|
children: /* @__PURE__ */ jsx(UserMinusIcon, { className: "w-3.5 h-3.5" })
|
|
2809
2829
|
}
|
|
2810
2830
|
)
|
|
@@ -2816,11 +2836,11 @@ function AdventureSection({
|
|
|
2816
2836
|
);
|
|
2817
2837
|
}) }),
|
|
2818
2838
|
adventure.suggestedTravellers && adventure.suggestedTravellers.length > 0 && (() => {
|
|
2819
|
-
var _a2;
|
|
2839
|
+
var _a2, _b2;
|
|
2820
2840
|
const atCapacity = totalSlots > 0 && adventure.travellers.length >= totalSlots;
|
|
2821
2841
|
const atCapacityTooltip = atCapacity ? (_a2 = adventure.atCapacityLabel) != null ? _a2 : "Adventure full" : void 0;
|
|
2822
2842
|
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 pt-2", children: [
|
|
2823
|
-
/* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground font-ui", children: "Add to this adventure" }),
|
|
2843
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground font-ui", children: (_b2 = labels == null ? void 0 : labels.addToThisAdventure) != null ? _b2 : "Add to this adventure" }),
|
|
2824
2844
|
/* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-2", children: adventure.suggestedTravellers.map((st) => /* @__PURE__ */ jsxs(
|
|
2825
2845
|
"button",
|
|
2826
2846
|
{
|
|
@@ -2847,7 +2867,8 @@ function AdventureSection({
|
|
|
2847
2867
|
)) })
|
|
2848
2868
|
] });
|
|
2849
2869
|
})(),
|
|
2850
|
-
adventure.registrationNotRequired ? /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2 mt-1", children: /* @__PURE__ */ jsx("span", { className: "text-xs font-ui text-muted-foreground", children: (
|
|
2870
|
+
adventure.registrationNotRequired ? /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2 mt-1", children: /* @__PURE__ */ jsx("span", { className: "text-xs font-ui text-muted-foreground", children: (_l = adventure.noRegistrationRequiredLabel) != null ? _l : "No registration required" }) }) : adventure.travellers.length > 0 && totalSlots > 0 && (() => {
|
|
2871
|
+
var _a2, _b2;
|
|
2851
2872
|
const completed = adventure.travellers.filter((t) => t.status === "completed").length;
|
|
2852
2873
|
const percent = Math.round(completed / totalSlots * 100);
|
|
2853
2874
|
const isComplete = completed >= totalSlots;
|
|
@@ -2866,10 +2887,7 @@ function AdventureSection({
|
|
|
2866
2887
|
"text-xs font-semibold font-ui shrink-0 flex items-center gap-1",
|
|
2867
2888
|
textColor
|
|
2868
2889
|
), children: [
|
|
2869
|
-
completed,
|
|
2870
|
-
" of ",
|
|
2871
|
-
totalSlots,
|
|
2872
|
-
" travellers registered",
|
|
2890
|
+
(_b2 = (_a2 = labels == null ? void 0 : labels.travellersRegistered) == null ? void 0 : _a2.call(labels, { completed, total: totalSlots })) != null ? _b2 : `${completed} of ${totalSlots} travellers registered`,
|
|
2873
2891
|
isComplete ? /* @__PURE__ */ jsx(CheckIcon, { className: "w-3 h-3" }) : /* @__PURE__ */ jsx(AlertTriangleIcon, { className: "w-3 h-3" })
|
|
2874
2892
|
] })
|
|
2875
2893
|
] });
|
|
@@ -3179,52 +3197,56 @@ function OrderSummary({
|
|
|
3179
3197
|
total,
|
|
3180
3198
|
depositInfo,
|
|
3181
3199
|
balanceDueLabel,
|
|
3182
|
-
totalPaidLabel
|
|
3200
|
+
totalPaidLabel,
|
|
3201
|
+
labels
|
|
3183
3202
|
}) {
|
|
3184
|
-
var _a;
|
|
3203
|
+
var _a, _b, _c, _d, _e;
|
|
3185
3204
|
return /* @__PURE__ */ jsxs("div", { className: "rounded-2xl border border-border bg-card p-5 lg:p-6 flex flex-col gap-4", children: [
|
|
3186
|
-
/* @__PURE__ */ jsx("h3", { className: "text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest", children: "Order Summary" }),
|
|
3205
|
+
/* @__PURE__ */ jsx("h3", { className: "text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest", children: (_a = labels == null ? void 0 : labels.orderSummary) != null ? _a : "Order Summary" }),
|
|
3187
3206
|
/* @__PURE__ */ jsx(Separator, {}),
|
|
3188
|
-
adventures.map((adventure, i) =>
|
|
3189
|
-
|
|
3190
|
-
|
|
3191
|
-
"
|
|
3192
|
-
{
|
|
3193
|
-
|
|
3194
|
-
|
|
3195
|
-
|
|
3196
|
-
|
|
3197
|
-
|
|
3198
|
-
|
|
3199
|
-
|
|
3200
|
-
|
|
3201
|
-
|
|
3202
|
-
|
|
3203
|
-
|
|
3204
|
-
|
|
3205
|
-
|
|
3206
|
-
|
|
3207
|
-
|
|
3208
|
-
|
|
3209
|
-
|
|
3210
|
-
|
|
3211
|
-
|
|
3212
|
-
|
|
3213
|
-
|
|
3214
|
-
|
|
3215
|
-
|
|
3216
|
-
|
|
3217
|
-
|
|
3218
|
-
|
|
3219
|
-
|
|
3220
|
-
|
|
3221
|
-
|
|
3222
|
-
|
|
3223
|
-
|
|
3224
|
-
/* @__PURE__ */
|
|
3225
|
-
|
|
3226
|
-
|
|
3227
|
-
|
|
3207
|
+
adventures.map((adventure, i) => {
|
|
3208
|
+
var _a2;
|
|
3209
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
3210
|
+
/* @__PURE__ */ jsx("p", { className: "text-base font-bold text-foreground font-heading", children: adventure.title }),
|
|
3211
|
+
adventure.lineItems && adventure.lineItems.length > 0 && /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-1.5 pl-3 border-l-2 border-primary/20 ml-1", children: adventure.lineItems.map((item, j) => /* @__PURE__ */ jsxs(
|
|
3212
|
+
"div",
|
|
3213
|
+
{
|
|
3214
|
+
className: "flex items-start justify-between gap-3",
|
|
3215
|
+
children: [
|
|
3216
|
+
/* @__PURE__ */ jsx(
|
|
3217
|
+
"span",
|
|
3218
|
+
{
|
|
3219
|
+
className: cn(
|
|
3220
|
+
"text-sm font-sans leading-tight",
|
|
3221
|
+
item.isBold ? "font-semibold text-foreground" : "text-muted-foreground"
|
|
3222
|
+
),
|
|
3223
|
+
children: item.label
|
|
3224
|
+
}
|
|
3225
|
+
),
|
|
3226
|
+
/* @__PURE__ */ jsxs(
|
|
3227
|
+
"span",
|
|
3228
|
+
{
|
|
3229
|
+
className: cn(
|
|
3230
|
+
"text-sm font-sans shrink-0",
|
|
3231
|
+
item.isDiscount ? "text-green-600 dark:text-green-400" : item.isBold ? "font-semibold text-foreground" : "text-foreground"
|
|
3232
|
+
),
|
|
3233
|
+
children: [
|
|
3234
|
+
item.isDiscount ? "\u2212" : "",
|
|
3235
|
+
item.price
|
|
3236
|
+
]
|
|
3237
|
+
}
|
|
3238
|
+
)
|
|
3239
|
+
]
|
|
3240
|
+
},
|
|
3241
|
+
j
|
|
3242
|
+
)) }),
|
|
3243
|
+
adventure.subtotal && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between mt-1", children: [
|
|
3244
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground font-sans", children: (_a2 = labels == null ? void 0 : labels.subtotalThisAdventure) != null ? _a2 : "Subtotal this adventure" }),
|
|
3245
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm font-semibold text-foreground font-sans", children: adventure.subtotal })
|
|
3246
|
+
] }),
|
|
3247
|
+
i < adventures.length - 1 && /* @__PURE__ */ jsx(Separator, { className: "mt-2" })
|
|
3248
|
+
] }, adventure.id);
|
|
3249
|
+
}),
|
|
3228
3250
|
/* @__PURE__ */ jsx(Separator, {}),
|
|
3229
3251
|
summaryLineItems && summaryLineItems.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
3230
3252
|
summaryLineItems.map((item, i) => /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
@@ -3255,11 +3277,11 @@ function OrderSummary({
|
|
|
3255
3277
|
/* @__PURE__ */ jsx(Separator, {})
|
|
3256
3278
|
] }),
|
|
3257
3279
|
subtotal && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
3258
|
-
/* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground font-sans", children: "Subtotal" }),
|
|
3280
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground font-sans", children: (_b = labels == null ? void 0 : labels.subtotal) != null ? _b : "Subtotal" }),
|
|
3259
3281
|
/* @__PURE__ */ jsx("span", { className: "text-sm font-semibold text-foreground font-sans", children: subtotal })
|
|
3260
3282
|
] }),
|
|
3261
3283
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between pt-1", children: [
|
|
3262
|
-
/* @__PURE__ */ jsx("span", { className: "text-base font-bold text-foreground font-heading", children: "Total" }),
|
|
3284
|
+
/* @__PURE__ */ jsx("span", { className: "text-base font-bold text-foreground font-heading", children: (_c = labels == null ? void 0 : labels.total) != null ? _c : "Total" }),
|
|
3263
3285
|
/* @__PURE__ */ jsx("span", { className: "text-2xl font-black text-primary font-heading", children: total })
|
|
3264
3286
|
] }),
|
|
3265
3287
|
(depositInfo == null ? void 0 : depositInfo.totalPaid) && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
@@ -3269,7 +3291,7 @@ function OrderSummary({
|
|
|
3269
3291
|
depositInfo && /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 rounded-lg bg-muted/50 border border-border p-4", children: [
|
|
3270
3292
|
!depositInfo.hideDepositLine && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
3271
3293
|
/* @__PURE__ */ jsxs("span", { className: "text-sm text-muted-foreground font-sans", children: [
|
|
3272
|
-
(
|
|
3294
|
+
(_d = depositInfo.depositLabel) != null ? _d : "Deposit",
|
|
3273
3295
|
" (",
|
|
3274
3296
|
depositInfo.depositPercent,
|
|
3275
3297
|
"%)"
|
|
@@ -3277,7 +3299,7 @@ function OrderSummary({
|
|
|
3277
3299
|
/* @__PURE__ */ jsx("span", { className: "text-sm font-semibold text-foreground font-sans", children: depositInfo.depositAmount })
|
|
3278
3300
|
] }),
|
|
3279
3301
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
3280
|
-
/* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground font-sans", children: "Remaining balance" }),
|
|
3302
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground font-sans", children: (_e = labels == null ? void 0 : labels.remainingBalance) != null ? _e : "Remaining balance" }),
|
|
3281
3303
|
/* @__PURE__ */ jsx("span", { className: "text-sm font-semibold text-foreground font-sans", children: depositInfo.remainingAmount })
|
|
3282
3304
|
] }),
|
|
3283
3305
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
@@ -3330,9 +3352,10 @@ function BookingDetails({
|
|
|
3330
3352
|
logoAlt,
|
|
3331
3353
|
onSignOut,
|
|
3332
3354
|
signOutLabel,
|
|
3355
|
+
labels,
|
|
3333
3356
|
className
|
|
3334
3357
|
}) {
|
|
3335
|
-
var _a, _b, _c, _d;
|
|
3358
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u;
|
|
3336
3359
|
const people = totalPeople(adventures);
|
|
3337
3360
|
const hasSubmitAddTraveller = !!onSubmitAddTraveller;
|
|
3338
3361
|
const hasSubmitEditTraveller = !!onSubmitEditTraveller;
|
|
@@ -3442,15 +3465,12 @@ function BookingDetails({
|
|
|
3442
3465
|
bookingId
|
|
3443
3466
|
] })
|
|
3444
3467
|
] }),
|
|
3445
|
-
/* @__PURE__ */
|
|
3446
|
-
"Created on ",
|
|
3447
|
-
createdAt
|
|
3448
|
-
] })
|
|
3468
|
+
/* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground font-sans", children: (_b = (_a = labels == null ? void 0 : labels.createdOn) == null ? void 0 : _a.call(labels, createdAt)) != null ? _b : `Created on ${createdAt}` })
|
|
3449
3469
|
] }),
|
|
3450
3470
|
/* @__PURE__ */ jsx(StatusBadge, { status, label: statusLabel })
|
|
3451
3471
|
] }),
|
|
3452
3472
|
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-3 gap-3", children: [
|
|
3453
|
-
/* @__PURE__ */ jsxs(InfoCard, { label: "Contact", children: [
|
|
3473
|
+
/* @__PURE__ */ jsxs(InfoCard, { label: (_c = labels == null ? void 0 : labels.contactInfo) != null ? _c : "Contact", children: [
|
|
3454
3474
|
/* @__PURE__ */ jsx("p", { className: "font-semibold", children: contact.name }),
|
|
3455
3475
|
contact.email && /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground font-sans truncate", children: contact.email })
|
|
3456
3476
|
] }),
|
|
@@ -3458,7 +3478,7 @@ function BookingDetails({
|
|
|
3458
3478
|
AgentContactCard,
|
|
3459
3479
|
{
|
|
3460
3480
|
layout: "compact",
|
|
3461
|
-
name: (
|
|
3481
|
+
name: (_d = agent == null ? void 0 : agent.name) != null ? _d : agentName,
|
|
3462
3482
|
avatar: agent == null ? void 0 : agent.avatar,
|
|
3463
3483
|
email: agent == null ? void 0 : agent.email,
|
|
3464
3484
|
whatsappUrl: agent == null ? void 0 : agent.whatsappUrl,
|
|
@@ -3468,27 +3488,20 @@ function BookingDetails({
|
|
|
3468
3488
|
legacyContactLabel: agentContactLabel
|
|
3469
3489
|
}
|
|
3470
3490
|
),
|
|
3471
|
-
/* @__PURE__ */ jsxs(InfoCard, { label: "Total People", children: [
|
|
3491
|
+
/* @__PURE__ */ jsxs(InfoCard, { label: (_e = labels == null ? void 0 : labels.totalPeople) != null ? _e : "Total People", children: [
|
|
3472
3492
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
3473
3493
|
/* @__PURE__ */ jsx(UsersIcon, { className: "w-4 h-4 text-primary shrink-0" }),
|
|
3474
|
-
/* @__PURE__ */
|
|
3475
|
-
people.total,
|
|
3476
|
-
" person(s)"
|
|
3477
|
-
] })
|
|
3494
|
+
/* @__PURE__ */ jsx("span", { className: "font-semibold", children: (_g = (_f = labels == null ? void 0 : labels.personCount) == null ? void 0 : _f.call(labels, people.total)) != null ? _g : `${people.total} person(s)` })
|
|
3478
3495
|
] }),
|
|
3479
3496
|
/* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground font-sans", children: [
|
|
3480
|
-
people.adults > 0 ? `Adults: ${people.adults}` : null,
|
|
3481
|
-
people.children > 0 ? `Children: ${people.children}` : null,
|
|
3482
|
-
people.seniors > 0 ? `Seniors: ${people.seniors}` : null
|
|
3497
|
+
people.adults > 0 ? (_j = (_i = (_h = labels == null ? void 0 : labels.peopleBreakdown) == null ? void 0 : _h.adults) == null ? void 0 : _i.call(_h, people.adults)) != null ? _j : `Adults: ${people.adults}` : null,
|
|
3498
|
+
people.children > 0 ? (_m = (_l = (_k = labels == null ? void 0 : labels.peopleBreakdown) == null ? void 0 : _k.children) == null ? void 0 : _l.call(_k, people.children)) != null ? _m : `Children: ${people.children}` : null,
|
|
3499
|
+
people.seniors > 0 ? (_p = (_o = (_n = labels == null ? void 0 : labels.peopleBreakdown) == null ? void 0 : _n.seniors) == null ? void 0 : _o.call(_n, people.seniors)) != null ? _p : `Seniors: ${people.seniors}` : null
|
|
3483
3500
|
].filter(Boolean).join(" \xB7 ") })
|
|
3484
3501
|
] })
|
|
3485
3502
|
] }),
|
|
3486
3503
|
/* @__PURE__ */ jsxs("section", { className: "flex flex-col gap-4", children: [
|
|
3487
|
-
/* @__PURE__ */
|
|
3488
|
-
"Adventures (",
|
|
3489
|
-
adventures.length,
|
|
3490
|
-
")"
|
|
3491
|
-
] }),
|
|
3504
|
+
/* @__PURE__ */ jsx("h2", { className: "text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest", children: (_r = (_q = labels == null ? void 0 : labels.adventuresSection) == null ? void 0 : _q.call(labels, adventures.length)) != null ? _r : `Adventures (${adventures.length})` }),
|
|
3492
3505
|
adventures.map((adventure) => /* @__PURE__ */ jsx(
|
|
3493
3506
|
AdventureSection,
|
|
3494
3507
|
{
|
|
@@ -3506,7 +3519,8 @@ function BookingDetails({
|
|
|
3506
3519
|
onRequestOpenAddModal: handleRequestOpenAddModal,
|
|
3507
3520
|
onRequestOpenEditModal: handleRequestOpenEditModal,
|
|
3508
3521
|
onRequestOpenDeleteModal: handleRequestOpenDeleteModal,
|
|
3509
|
-
cannotRemoveLastTravellerLabel
|
|
3522
|
+
cannotRemoveLastTravellerLabel,
|
|
3523
|
+
labels
|
|
3510
3524
|
},
|
|
3511
3525
|
adventure.id
|
|
3512
3526
|
))
|
|
@@ -3520,7 +3534,8 @@ function BookingDetails({
|
|
|
3520
3534
|
total,
|
|
3521
3535
|
depositInfo,
|
|
3522
3536
|
balanceDueLabel,
|
|
3523
|
-
totalPaidLabel
|
|
3537
|
+
totalPaidLabel,
|
|
3538
|
+
labels
|
|
3524
3539
|
}
|
|
3525
3540
|
),
|
|
3526
3541
|
/* @__PURE__ */ jsxs("div", { className: "rounded-2xl border border-border bg-card p-5 lg:p-6 flex flex-col gap-4", children: [
|
|
@@ -3532,15 +3547,15 @@ function BookingDetails({
|
|
|
3532
3547
|
] }),
|
|
3533
3548
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
3534
3549
|
/* @__PURE__ */ jsx("p", { className: "text-xs font-bold text-muted-foreground/60 font-heading uppercase tracking-widest mb-0.5", children: "Email" }),
|
|
3535
|
-
/* @__PURE__ */ jsx("p", { className: "text-sm text-foreground font-sans truncate", children: (
|
|
3550
|
+
/* @__PURE__ */ jsx("p", { className: "text-sm text-foreground font-sans truncate", children: (_s = contact.email) != null ? _s : "\u2014" })
|
|
3536
3551
|
] }),
|
|
3537
3552
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
3538
3553
|
/* @__PURE__ */ jsx("p", { className: "text-xs font-bold text-muted-foreground/60 font-heading uppercase tracking-widest mb-0.5", children: "Phone" }),
|
|
3539
|
-
/* @__PURE__ */ jsx("p", { className: "text-sm text-foreground font-sans", children: (
|
|
3554
|
+
/* @__PURE__ */ jsx("p", { className: "text-sm text-foreground font-sans", children: (_t = contact.phone) != null ? _t : "\u2014" })
|
|
3540
3555
|
] }),
|
|
3541
3556
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
3542
3557
|
/* @__PURE__ */ jsx("p", { className: "text-xs font-bold text-muted-foreground/60 font-heading uppercase tracking-widest mb-0.5", children: "Country" }),
|
|
3543
|
-
/* @__PURE__ */ jsx("p", { className: "text-sm text-foreground font-sans", children: (
|
|
3558
|
+
/* @__PURE__ */ jsx("p", { className: "text-sm text-foreground font-sans", children: (_u = contact.country) != null ? _u : "\u2014" })
|
|
3544
3559
|
] }),
|
|
3545
3560
|
contact.passport && /* @__PURE__ */ jsxs("div", { children: [
|
|
3546
3561
|
/* @__PURE__ */ jsx("p", { className: "text-xs font-bold text-muted-foreground/60 font-heading uppercase tracking-widest mb-0.5", children: "Passport / CPF" }),
|