@planetaexo/design-system 0.2.15 → 0.3.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 +126 -79
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +60 -3
- package/dist/index.d.ts +60 -3
- package/dist/index.js +126 -79
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1069,21 +1069,33 @@ function CountrySearchField({
|
|
|
1069
1069
|
] });
|
|
1070
1070
|
}
|
|
1071
1071
|
function AdventureCard({ adventure }) {
|
|
1072
|
-
var _a, _b, _c;
|
|
1073
|
-
const
|
|
1074
|
-
|
|
1072
|
+
var _a, _b, _c, _d, _e;
|
|
1073
|
+
const isControlled = (_b = (_a = adventure.optionals) == null ? void 0 : _a.some((o) => o.onCheckedChange !== void 0)) != null ? _b : false;
|
|
1074
|
+
const [checkedInternal, setCheckedInternal] = React18__namespace.useState(
|
|
1075
|
+
new Set((_d = (_c = adventure.optionals) == null ? void 0 : _c.filter((o) => o.defaultChecked).map((o) => o.id)) != null ? _d : [])
|
|
1075
1076
|
);
|
|
1076
|
-
const
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1077
|
+
const isChecked = (opt) => {
|
|
1078
|
+
var _a2;
|
|
1079
|
+
return isControlled ? (_a2 = opt.checked) != null ? _a2 : false : checkedInternal.has(opt.id);
|
|
1080
|
+
};
|
|
1081
|
+
const toggleOptional = (opt) => {
|
|
1082
|
+
var _a2;
|
|
1083
|
+
if (isControlled) {
|
|
1084
|
+
(_a2 = opt.onCheckedChange) == null ? void 0 : _a2.call(opt, opt.id, !opt.checked);
|
|
1085
|
+
} else {
|
|
1086
|
+
setCheckedInternal((prev) => {
|
|
1087
|
+
const next = new Set(prev);
|
|
1088
|
+
next.has(opt.id) ? next.delete(opt.id) : next.add(opt.id);
|
|
1089
|
+
return next;
|
|
1090
|
+
});
|
|
1091
|
+
}
|
|
1092
|
+
};
|
|
1081
1093
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-2xl border border-border bg-card overflow-hidden", children: [
|
|
1082
1094
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "aspect-[16/7] overflow-hidden bg-muted", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1083
1095
|
"img",
|
|
1084
1096
|
{
|
|
1085
1097
|
src: adventure.image,
|
|
1086
|
-
alt: (
|
|
1098
|
+
alt: (_e = adventure.imageAlt) != null ? _e : adventure.title,
|
|
1087
1099
|
className: "w-full h-full object-cover"
|
|
1088
1100
|
}
|
|
1089
1101
|
) }),
|
|
@@ -1125,8 +1137,8 @@ function AdventureCard({ adventure }) {
|
|
|
1125
1137
|
"input",
|
|
1126
1138
|
{
|
|
1127
1139
|
type: "checkbox",
|
|
1128
|
-
checked:
|
|
1129
|
-
onChange: () => toggleOptional(opt
|
|
1140
|
+
checked: isChecked(opt),
|
|
1141
|
+
onChange: () => toggleOptional(opt),
|
|
1130
1142
|
className: "h-4 w-4 shrink-0 rounded border-border accent-primary cursor-pointer"
|
|
1131
1143
|
}
|
|
1132
1144
|
),
|
|
@@ -2655,6 +2667,42 @@ function BookingDetails({
|
|
|
2655
2667
|
}
|
|
2656
2668
|
);
|
|
2657
2669
|
}
|
|
2670
|
+
var DEFAULT_LABELS = {
|
|
2671
|
+
ctaButton: "View booking details",
|
|
2672
|
+
logoAlt: "PlanetaEXO",
|
|
2673
|
+
greeting: (recipientName) => `Hi ${recipientName},`,
|
|
2674
|
+
confirmationMessage: "Great news \u2014 your booking has been confirmed! Everything is set and we\u2019re getting ready for your adventure.",
|
|
2675
|
+
detailsIntro: "Below you\u2019ll find the full details of your reservation, including the adventures, travellers, and payment summary.",
|
|
2676
|
+
nextStepsHeading: "\u{1F4CB} Next Steps",
|
|
2677
|
+
nextSteps: [
|
|
2678
|
+
"Each traveller will receive a separate email with a link to complete their individual registration.",
|
|
2679
|
+
"Make sure everyone completes their registration so we can organise everything properly.",
|
|
2680
|
+
"You will receive a final confirmation once all travellers are registered and ready to go."
|
|
2681
|
+
],
|
|
2682
|
+
bookingSummaryHeading: "\u{1F4DD} Booking Summary",
|
|
2683
|
+
bookingNumberLabel: "Booking Number",
|
|
2684
|
+
adventuresLabel: "Adventures",
|
|
2685
|
+
totalTravellersLabel: "Total Travellers",
|
|
2686
|
+
agentLabel: "Agent",
|
|
2687
|
+
adultsUnit: "adult(s)",
|
|
2688
|
+
childrenUnit: "child(ren)",
|
|
2689
|
+
travellersLabel: "Travellers",
|
|
2690
|
+
childBadge: "child",
|
|
2691
|
+
itineraryLabel: "Itinerary",
|
|
2692
|
+
includedLabel: "O que est\xE1 incluso",
|
|
2693
|
+
notIncludedLabel: "O que n\xE3o est\xE1 incluso",
|
|
2694
|
+
pricingLabel: "Pricing",
|
|
2695
|
+
subtotalLabel: "Subtotal",
|
|
2696
|
+
totalLabel: "Total",
|
|
2697
|
+
paymentSummaryHeading: "\u{1F4B0} Payment Summary",
|
|
2698
|
+
paymentDetailsHeading: "Payment Details",
|
|
2699
|
+
depositLabel: (percent) => `Deposit (${percent}%)`,
|
|
2700
|
+
remainingBalanceLabel: "Remaining balance",
|
|
2701
|
+
balanceDueLabel: "Balance due",
|
|
2702
|
+
paidInFullLabel: "\u2705 Paid in full",
|
|
2703
|
+
footerMessage: "All travellers have been registered for this booking. Each person will receive a separate email with their individual details and any pre-departure information.",
|
|
2704
|
+
footerContact: (agent) => `If you have any questions, just reply to this email or contact ${agent} \u2014 happy to help.`
|
|
2705
|
+
};
|
|
2658
2706
|
var DEFAULT_LOGO = "/logo-planetaexo.png";
|
|
2659
2707
|
function BookingConfirmation({
|
|
2660
2708
|
recipientName,
|
|
@@ -2667,8 +2715,10 @@ function BookingConfirmation({
|
|
|
2667
2715
|
depositInfo,
|
|
2668
2716
|
agent,
|
|
2669
2717
|
viewBookingUrl,
|
|
2718
|
+
labels,
|
|
2670
2719
|
className
|
|
2671
2720
|
}) {
|
|
2721
|
+
const l = __spreadValues(__spreadValues({}, DEFAULT_LABELS), labels);
|
|
2672
2722
|
const allTravellers = adventures.flatMap((a) => {
|
|
2673
2723
|
var _a;
|
|
2674
2724
|
return (_a = a.travellers) != null ? _a : [];
|
|
@@ -2678,14 +2728,14 @@ function BookingConfirmation({
|
|
|
2678
2728
|
{
|
|
2679
2729
|
href: viewBookingUrl,
|
|
2680
2730
|
className: "inline-flex items-center justify-center rounded-lg bg-primary px-8 py-3.5 text-sm font-bold text-primary-foreground font-heading hover:bg-primary/90 transition-colors no-underline",
|
|
2681
|
-
children:
|
|
2731
|
+
children: l.ctaButton
|
|
2682
2732
|
}
|
|
2683
2733
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
2684
2734
|
"span",
|
|
2685
2735
|
{
|
|
2686
2736
|
className: "inline-flex items-center justify-center rounded-lg bg-primary px-8 py-3.5 text-sm font-bold text-primary-foreground font-heading",
|
|
2687
2737
|
role: "presentation",
|
|
2688
|
-
children:
|
|
2738
|
+
children: l.ctaButton
|
|
2689
2739
|
}
|
|
2690
2740
|
);
|
|
2691
2741
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -2700,50 +2750,42 @@ function BookingConfirmation({
|
|
|
2700
2750
|
"img",
|
|
2701
2751
|
{
|
|
2702
2752
|
src: logoUrl,
|
|
2703
|
-
alt:
|
|
2753
|
+
alt: l.logoAlt,
|
|
2704
2754
|
className: "h-[70px] w-auto object-contain"
|
|
2705
2755
|
}
|
|
2706
2756
|
) }),
|
|
2707
2757
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-8", children: [
|
|
2708
|
-
/* @__PURE__ */ jsxRuntime.
|
|
2709
|
-
|
|
2710
|
-
|
|
2711
|
-
","
|
|
2712
|
-
] }),
|
|
2713
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-5 text-base", children: "Great news \u2014 your booking has been confirmed! Everything is set and we're getting ready for your adventure." }),
|
|
2714
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-8 text-base", children: "Below you'll find the full details of your reservation, including the adventures, travellers, and payment summary." }),
|
|
2758
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-5 text-base", children: l.greeting(recipientName) }),
|
|
2759
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-5 text-base", children: l.confirmationMessage }),
|
|
2760
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-8 text-base", children: l.detailsIntro }),
|
|
2715
2761
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-10", children: ViewBookingCta })
|
|
2716
2762
|
] }),
|
|
2717
2763
|
/* @__PURE__ */ jsxRuntime.jsx("hr", { className: "border-t border-border mx-8" }),
|
|
2718
2764
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-8 py-8", children: [
|
|
2719
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-5 font-heading font-bold text-foreground text-lg", children:
|
|
2720
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-xl border border-border p-5 flex flex-col gap-4", children: [
|
|
2721
|
-
"Each traveller will receive a separate email with a link to complete their individual registration.",
|
|
2722
|
-
"Make sure everyone completes their registration so we can organise everything properly.",
|
|
2723
|
-
"You will receive a final confirmation once all travellers are registered and ready to go."
|
|
2724
|
-
].map((step, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3.5", children: [
|
|
2765
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-5 font-heading font-bold text-foreground text-lg", children: l.nextStepsHeading }),
|
|
2766
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-xl border border-border p-5 flex flex-col gap-4", children: l.nextSteps.map((step, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3.5", children: [
|
|
2725
2767
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex h-6 w-6 shrink-0 items-center justify-center rounded-full bg-primary/10 text-xs font-bold text-primary font-heading mt-0.5", children: i + 1 }),
|
|
2726
2768
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-foreground/80 leading-relaxed", children: step })
|
|
2727
2769
|
] }, i)) })
|
|
2728
2770
|
] }),
|
|
2729
2771
|
/* @__PURE__ */ jsxRuntime.jsx("hr", { className: "border-t border-border mx-8" }),
|
|
2730
2772
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-8 py-8", children: [
|
|
2731
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-5 font-heading font-bold text-foreground text-lg", children:
|
|
2773
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-5 font-heading font-bold text-foreground text-lg", children: l.bookingSummaryHeading }),
|
|
2732
2774
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-xl border border-border overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx("table", { className: "w-full text-sm", children: /* @__PURE__ */ jsxRuntime.jsxs("tbody", { children: [
|
|
2733
2775
|
/* @__PURE__ */ jsxRuntime.jsxs("tr", { className: "border-b border-border", children: [
|
|
2734
|
-
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-3 px-5 text-muted-foreground font-ui bg-muted/30", children:
|
|
2776
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-3 px-5 text-muted-foreground font-ui bg-muted/30", children: l.bookingNumberLabel }),
|
|
2735
2777
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-3 px-5 font-semibold text-primary", children: bookingReference })
|
|
2736
2778
|
] }),
|
|
2737
2779
|
/* @__PURE__ */ jsxRuntime.jsxs("tr", { className: "border-b border-border", children: [
|
|
2738
|
-
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-3 px-5 text-muted-foreground font-ui bg-muted/30", children:
|
|
2780
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-3 px-5 text-muted-foreground font-ui bg-muted/30", children: l.adventuresLabel }),
|
|
2739
2781
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-3 px-5 font-medium text-foreground", children: adventures.length })
|
|
2740
2782
|
] }),
|
|
2741
2783
|
/* @__PURE__ */ jsxRuntime.jsxs("tr", { className: "border-b border-border", children: [
|
|
2742
|
-
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-3 px-5 text-muted-foreground font-ui bg-muted/30", children:
|
|
2784
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-3 px-5 text-muted-foreground font-ui bg-muted/30", children: l.totalTravellersLabel }),
|
|
2743
2785
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-3 px-5 font-medium text-foreground", children: allTravellers.length })
|
|
2744
2786
|
] }),
|
|
2745
2787
|
/* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
|
|
2746
|
-
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-3 px-5 text-muted-foreground font-ui bg-muted/30", children:
|
|
2788
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-3 px-5 text-muted-foreground font-ui bg-muted/30", children: l.agentLabel }),
|
|
2747
2789
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-3 px-5 font-medium text-foreground", children: agent })
|
|
2748
2790
|
] })
|
|
2749
2791
|
] }) }) })
|
|
@@ -2793,8 +2835,8 @@ function BookingConfirmation({
|
|
|
2793
2835
|
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M16 3.13a4 4 0 0 1 0 7.75" })
|
|
2794
2836
|
] }),
|
|
2795
2837
|
[
|
|
2796
|
-
adventure.slots.adults ? `${adventure.slots.adults}
|
|
2797
|
-
adventure.slots.children ? `${adventure.slots.children}
|
|
2838
|
+
adventure.slots.adults ? `${adventure.slots.adults} ${l.adultsUnit}` : null,
|
|
2839
|
+
adventure.slots.children ? `${adventure.slots.children} ${l.childrenUnit}` : null
|
|
2798
2840
|
].filter(Boolean).join(" \xB7 ")
|
|
2799
2841
|
] }),
|
|
2800
2842
|
adventure.partner && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "flex items-center gap-1.5 text-sm text-muted-foreground font-sans leading-none", children: [
|
|
@@ -2807,7 +2849,7 @@ function BookingConfirmation({
|
|
|
2807
2849
|
adventure.travellers && adventure.travellers.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2808
2850
|
/* @__PURE__ */ jsxRuntime.jsx("hr", { className: "border-t border-border my-1" }),
|
|
2809
2851
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
2810
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[10px] font-bold text-muted-foreground font-heading uppercase tracking-widest mb-2", children:
|
|
2852
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[10px] font-bold text-muted-foreground font-heading uppercase tracking-widest mb-2", children: l.travellersLabel }),
|
|
2811
2853
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-1.5", children: adventure.travellers.map((t) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2812
2854
|
"div",
|
|
2813
2855
|
{
|
|
@@ -2818,7 +2860,7 @@ function BookingConfirmation({
|
|
|
2818
2860
|
" ",
|
|
2819
2861
|
t.lastName
|
|
2820
2862
|
] }),
|
|
2821
|
-
t.isChild && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] font-semibold text-muted-foreground bg-muted rounded-full px-2 py-0.5 font-heading uppercase tracking-wide", children:
|
|
2863
|
+
t.isChild && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] font-semibold text-muted-foreground bg-muted rounded-full px-2 py-0.5 font-heading uppercase tracking-wide", children: l.childBadge })
|
|
2822
2864
|
]
|
|
2823
2865
|
},
|
|
2824
2866
|
t.id
|
|
@@ -2828,12 +2870,12 @@ function BookingConfirmation({
|
|
|
2828
2870
|
adventure.description && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2829
2871
|
/* @__PURE__ */ jsxRuntime.jsx("hr", { className: "border-t border-border my-1" }),
|
|
2830
2872
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
2831
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[10px] font-bold text-muted-foreground font-heading uppercase tracking-widest mb-2", children:
|
|
2873
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[10px] font-bold text-muted-foreground font-heading uppercase tracking-widest mb-2", children: l.itineraryLabel }),
|
|
2832
2874
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-foreground/80 leading-relaxed font-sans", children: adventure.description })
|
|
2833
2875
|
] })
|
|
2834
2876
|
] }),
|
|
2835
2877
|
adventure.included && adventure.included.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2.5 mt-1", children: [
|
|
2836
|
-
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-sm font-bold text-foreground font-heading", children:
|
|
2878
|
+
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-sm font-bold text-foreground font-heading", children: l.includedLabel }),
|
|
2837
2879
|
/* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex flex-col gap-1.5", children: adventure.included.map((item, i) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2838
2880
|
"li",
|
|
2839
2881
|
{
|
|
@@ -2847,7 +2889,7 @@ function BookingConfirmation({
|
|
|
2847
2889
|
)) })
|
|
2848
2890
|
] }),
|
|
2849
2891
|
adventure.notIncluded && adventure.notIncluded.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2.5 mt-1", children: [
|
|
2850
|
-
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-sm font-bold text-foreground font-heading", children:
|
|
2892
|
+
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-sm font-bold text-foreground font-heading", children: l.notIncludedLabel }),
|
|
2851
2893
|
/* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex flex-col gap-1.5", children: adventure.notIncluded.map((item, i) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2852
2894
|
"li",
|
|
2853
2895
|
{
|
|
@@ -2866,7 +2908,7 @@ function BookingConfirmation({
|
|
|
2866
2908
|
adventure.lineItems && adventure.lineItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2867
2909
|
/* @__PURE__ */ jsxRuntime.jsx("hr", { className: "border-t border-border my-1" }),
|
|
2868
2910
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
2869
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[10px] font-bold text-muted-foreground font-heading uppercase tracking-widest mb-2", children:
|
|
2911
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[10px] font-bold text-muted-foreground font-heading uppercase tracking-widest mb-2", children: l.pricingLabel }),
|
|
2870
2912
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
2871
2913
|
adventure.lineItems.map((item, j) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2872
2914
|
"div",
|
|
@@ -2892,7 +2934,7 @@ function BookingConfirmation({
|
|
|
2892
2934
|
j
|
|
2893
2935
|
)),
|
|
2894
2936
|
adventure.subtotal && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between pt-2 mt-1 border-t border-border", children: [
|
|
2895
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold text-foreground font-heading", children:
|
|
2937
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold text-foreground font-heading", children: l.subtotalLabel }),
|
|
2896
2938
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold text-foreground font-heading whitespace-nowrap", children: adventure.subtotal })
|
|
2897
2939
|
] })
|
|
2898
2940
|
] })
|
|
@@ -2906,7 +2948,7 @@ function BookingConfirmation({
|
|
|
2906
2948
|
}) }),
|
|
2907
2949
|
/* @__PURE__ */ jsxRuntime.jsx("hr", { className: "border-t border-border mx-8" }),
|
|
2908
2950
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-8 py-8", children: [
|
|
2909
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-5 font-heading font-bold text-foreground text-lg", children:
|
|
2951
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-5 font-heading font-bold text-foreground text-lg", children: l.paymentSummaryHeading }),
|
|
2910
2952
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-xl border border-border overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx("table", { className: "w-full text-sm", children: /* @__PURE__ */ jsxRuntime.jsxs("tbody", { children: [
|
|
2911
2953
|
summaryLineItems && summaryLineItems.map((item, i) => /* @__PURE__ */ jsxRuntime.jsxs("tr", { className: "border-b border-border", children: [
|
|
2912
2954
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-2.5 px-4 text-muted-foreground", children: item.label }),
|
|
@@ -2925,27 +2967,23 @@ function BookingConfirmation({
|
|
|
2925
2967
|
)
|
|
2926
2968
|
] }, i)),
|
|
2927
2969
|
subtotal && /* @__PURE__ */ jsxRuntime.jsxs("tr", { className: "border-b border-border", children: [
|
|
2928
|
-
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-2.5 px-4 text-muted-foreground font-ui", children:
|
|
2970
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-2.5 px-4 text-muted-foreground font-ui", children: l.subtotalLabel }),
|
|
2929
2971
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-2.5 px-4 text-right font-medium text-foreground whitespace-nowrap", children: subtotal })
|
|
2930
2972
|
] }),
|
|
2931
2973
|
/* @__PURE__ */ jsxRuntime.jsxs("tr", { className: "bg-muted/30", children: [
|
|
2932
|
-
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-4 px-4 font-bold text-foreground font-heading text-base", children:
|
|
2974
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-4 px-4 font-bold text-foreground font-heading text-base", children: l.totalLabel }),
|
|
2933
2975
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-4 px-4 text-right font-bold text-primary font-heading text-xl whitespace-nowrap", children: total })
|
|
2934
2976
|
] })
|
|
2935
2977
|
] }) }) }),
|
|
2936
2978
|
depositInfo && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-xl border border-border mt-4 overflow-hidden", children: [
|
|
2937
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-4 py-3 bg-muted/30 border-b border-border", children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest", children:
|
|
2979
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-4 py-3 bg-muted/30 border-b border-border", children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest", children: l.paymentDetailsHeading }) }),
|
|
2938
2980
|
/* @__PURE__ */ jsxRuntime.jsx("table", { className: "w-full text-sm", children: /* @__PURE__ */ jsxRuntime.jsxs("tbody", { children: [
|
|
2939
2981
|
/* @__PURE__ */ jsxRuntime.jsxs("tr", { className: "border-b border-border", children: [
|
|
2940
|
-
/* @__PURE__ */ jsxRuntime.
|
|
2941
|
-
"Deposit (",
|
|
2942
|
-
depositInfo.depositPercent,
|
|
2943
|
-
"%)"
|
|
2944
|
-
] }),
|
|
2982
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-2.5 px-4 text-muted-foreground", children: l.depositLabel(depositInfo.depositPercent) }),
|
|
2945
2983
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-2.5 px-4 text-right font-medium text-foreground whitespace-nowrap", children: depositInfo.depositAmount })
|
|
2946
2984
|
] }),
|
|
2947
2985
|
/* @__PURE__ */ jsxRuntime.jsxs("tr", { className: "border-b border-border", children: [
|
|
2948
|
-
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-2.5 px-4 text-muted-foreground", children:
|
|
2986
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-2.5 px-4 text-muted-foreground", children: l.remainingBalanceLabel }),
|
|
2949
2987
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-2.5 px-4 text-right font-medium text-foreground whitespace-nowrap", children: depositInfo.remainingAmount })
|
|
2950
2988
|
] }),
|
|
2951
2989
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -2955,7 +2993,7 @@ function BookingConfirmation({
|
|
|
2955
2993
|
depositInfo.isPaidInFull && "border-b border-border"
|
|
2956
2994
|
),
|
|
2957
2995
|
children: [
|
|
2958
|
-
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-2.5 px-4 text-muted-foreground", children:
|
|
2996
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-2.5 px-4 text-muted-foreground", children: l.balanceDueLabel }),
|
|
2959
2997
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-2.5 px-4 text-right font-medium text-foreground whitespace-nowrap", children: depositInfo.balanceDueDate })
|
|
2960
2998
|
]
|
|
2961
2999
|
}
|
|
@@ -2965,7 +3003,7 @@ function BookingConfirmation({
|
|
|
2965
3003
|
{
|
|
2966
3004
|
colSpan: 2,
|
|
2967
3005
|
className: "py-3 px-4 text-center font-semibold text-green-600 bg-green-50",
|
|
2968
|
-
children:
|
|
3006
|
+
children: l.paidInFullLabel
|
|
2969
3007
|
}
|
|
2970
3008
|
) })
|
|
2971
3009
|
] }) })
|
|
@@ -2973,18 +3011,29 @@ function BookingConfirmation({
|
|
|
2973
3011
|
] }),
|
|
2974
3012
|
/* @__PURE__ */ jsxRuntime.jsx("hr", { className: "border-t border-border mx-8" }),
|
|
2975
3013
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-8 py-8 pb-10", children: [
|
|
2976
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-5 text-base", children:
|
|
2977
|
-
/* @__PURE__ */ jsxRuntime.
|
|
2978
|
-
"If you have any questions, just reply to this email or contact",
|
|
2979
|
-
" ",
|
|
2980
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-semibold", children: agent }),
|
|
2981
|
-
" \u2014 happy to help."
|
|
2982
|
-
] })
|
|
3014
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-5 text-base", children: l.footerMessage }),
|
|
3015
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-base", children: l.footerContact(agent) })
|
|
2983
3016
|
] })
|
|
2984
3017
|
]
|
|
2985
3018
|
}
|
|
2986
3019
|
);
|
|
2987
3020
|
}
|
|
3021
|
+
var DEFAULT_LABELS2 = {
|
|
3022
|
+
ctaButton: "Add travellers to your booking",
|
|
3023
|
+
logoAlt: "PlanetaEXO",
|
|
3024
|
+
greeting: (recipientName) => `Hi ${recipientName},`,
|
|
3025
|
+
thankYouMessage: "Thank you for booking your adventure with PlanetaEXO \u2014 we\u2019re really looking forward to your adventure.",
|
|
3026
|
+
addTravellersInstruction: "To move forward, the first step is to add all travellers included in your booking. Once you do this, each person \u2014 including you \u2014 will receive an email with a link to complete their individual registration.",
|
|
3027
|
+
summaryHeading: "\u{1F4DD} Here\u2019s a quick summary of your booking:",
|
|
3028
|
+
bookingNumberLabel: "Booking Number:",
|
|
3029
|
+
activityLabel: "Activity:",
|
|
3030
|
+
adventureLabel: "Adventure:",
|
|
3031
|
+
startingDateLabel: "Starting Date:",
|
|
3032
|
+
numberOfPeopleLabel: "Number of People:",
|
|
3033
|
+
hostLabel: "Host:",
|
|
3034
|
+
postCtaMessage: "After adding everyone, you will also receive your own registration email, just like the other travellers. Please make sure everyone completes this step so we can organise everything properly.",
|
|
3035
|
+
closingMessage: "If you have any questions, just reply to this email \u2014 happy to help."
|
|
3036
|
+
};
|
|
2988
3037
|
var DEFAULT_LOGO2 = "/logo-planetaexo.png";
|
|
2989
3038
|
function BookingConfirmationEmail({
|
|
2990
3039
|
recipientName,
|
|
@@ -2996,21 +3045,23 @@ function BookingConfirmationEmail({
|
|
|
2996
3045
|
startingDate,
|
|
2997
3046
|
numberOfPeople,
|
|
2998
3047
|
host,
|
|
3048
|
+
labels,
|
|
2999
3049
|
className
|
|
3000
3050
|
}) {
|
|
3051
|
+
const l = __spreadValues(__spreadValues({}, DEFAULT_LABELS2), labels);
|
|
3001
3052
|
const AddTravellersCta = addTravellersUrl ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
3002
3053
|
"a",
|
|
3003
3054
|
{
|
|
3004
3055
|
href: addTravellersUrl,
|
|
3005
3056
|
className: "inline-flex items-center justify-center rounded-lg bg-primary px-6 py-3 text-sm font-bold text-primary-foreground font-heading hover:bg-primary-800 transition-colors no-underline",
|
|
3006
|
-
children:
|
|
3057
|
+
children: l.ctaButton
|
|
3007
3058
|
}
|
|
3008
3059
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
3009
3060
|
"span",
|
|
3010
3061
|
{
|
|
3011
3062
|
className: "inline-flex items-center justify-center rounded-lg bg-primary px-6 py-3 text-sm font-bold text-primary-foreground font-heading",
|
|
3012
3063
|
role: "presentation",
|
|
3013
|
-
children:
|
|
3064
|
+
children: l.ctaButton
|
|
3014
3065
|
}
|
|
3015
3066
|
);
|
|
3016
3067
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -3025,49 +3076,45 @@ function BookingConfirmationEmail({
|
|
|
3025
3076
|
"img",
|
|
3026
3077
|
{
|
|
3027
3078
|
src: logoUrl,
|
|
3028
|
-
alt:
|
|
3079
|
+
alt: l.logoAlt,
|
|
3029
3080
|
className: "h-[70px] w-auto object-contain"
|
|
3030
3081
|
}
|
|
3031
3082
|
) }),
|
|
3032
|
-
/* @__PURE__ */ jsxRuntime.
|
|
3033
|
-
|
|
3034
|
-
|
|
3035
|
-
","
|
|
3036
|
-
] }),
|
|
3037
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-4", children: "Thank you for booking your adventure with PlanetaEXO \u2014 we're really looking forward to your adventure." }),
|
|
3038
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-4", children: "To move forward, the first step is to add all travellers included in your booking. Once you do this, each person \u2014 including you \u2014 will receive an email with a link to complete their individual registration." }),
|
|
3083
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-4", children: l.greeting(recipientName) }),
|
|
3084
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-4", children: l.thankYouMessage }),
|
|
3085
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-4", children: l.addTravellersInstruction }),
|
|
3039
3086
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-8", children: AddTravellersCta }),
|
|
3040
3087
|
/* @__PURE__ */ jsxRuntime.jsx("hr", { className: "border-t border-border mb-8" }),
|
|
3041
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-4 font-heading font-bold text-foreground", children:
|
|
3088
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-4 font-heading font-bold text-foreground", children: l.summaryHeading }),
|
|
3042
3089
|
/* @__PURE__ */ jsxRuntime.jsx("table", { className: "w-full text-sm mb-8", children: /* @__PURE__ */ jsxRuntime.jsxs("tbody", { className: "divide-y divide-border", children: [
|
|
3043
3090
|
/* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
|
|
3044
|
-
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 pr-4 text-muted-foreground font-ui", children:
|
|
3091
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 pr-4 text-muted-foreground font-ui", children: l.bookingNumberLabel }),
|
|
3045
3092
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 font-medium text-foreground", children: bookingNumber })
|
|
3046
3093
|
] }),
|
|
3047
3094
|
/* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
|
|
3048
|
-
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 pr-4 text-muted-foreground font-ui", children:
|
|
3095
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 pr-4 text-muted-foreground font-ui", children: l.activityLabel }),
|
|
3049
3096
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 font-medium text-foreground", children: activity })
|
|
3050
3097
|
] }),
|
|
3051
3098
|
/* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
|
|
3052
|
-
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 pr-4 text-muted-foreground font-ui", children:
|
|
3099
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 pr-4 text-muted-foreground font-ui", children: l.adventureLabel }),
|
|
3053
3100
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 font-medium text-foreground", children: adventure })
|
|
3054
3101
|
] }),
|
|
3055
3102
|
/* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
|
|
3056
|
-
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 pr-4 text-muted-foreground font-ui", children:
|
|
3103
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 pr-4 text-muted-foreground font-ui", children: l.startingDateLabel }),
|
|
3057
3104
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 font-medium text-foreground", children: startingDate })
|
|
3058
3105
|
] }),
|
|
3059
3106
|
/* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
|
|
3060
|
-
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 pr-4 text-muted-foreground font-ui", children:
|
|
3107
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 pr-4 text-muted-foreground font-ui", children: l.numberOfPeopleLabel }),
|
|
3061
3108
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 font-medium text-foreground", children: numberOfPeople })
|
|
3062
3109
|
] }),
|
|
3063
3110
|
/* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
|
|
3064
|
-
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 pr-4 text-muted-foreground font-ui", children:
|
|
3111
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 pr-4 text-muted-foreground font-ui", children: l.hostLabel }),
|
|
3065
3112
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 font-medium text-foreground", children: host })
|
|
3066
3113
|
] })
|
|
3067
3114
|
] }) }),
|
|
3068
3115
|
/* @__PURE__ */ jsxRuntime.jsx("hr", { className: "border-t border-border mb-8" }),
|
|
3069
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-4", children:
|
|
3070
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { children:
|
|
3116
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-4", children: l.postCtaMessage }),
|
|
3117
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { children: l.closingMessage })
|
|
3071
3118
|
]
|
|
3072
3119
|
}
|
|
3073
3120
|
);
|