@planetaexo/design-system 0.2.15 → 0.3.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/index.cjs CHANGED
@@ -2655,6 +2655,42 @@ function BookingDetails({
2655
2655
  }
2656
2656
  );
2657
2657
  }
2658
+ var DEFAULT_LABELS = {
2659
+ ctaButton: "View booking details",
2660
+ logoAlt: "PlanetaEXO",
2661
+ greeting: (recipientName) => `Hi ${recipientName},`,
2662
+ confirmationMessage: "Great news \u2014 your booking has been confirmed! Everything is set and we\u2019re getting ready for your adventure.",
2663
+ detailsIntro: "Below you\u2019ll find the full details of your reservation, including the adventures, travellers, and payment summary.",
2664
+ nextStepsHeading: "\u{1F4CB} Next Steps",
2665
+ nextSteps: [
2666
+ "Each traveller will receive a separate email with a link to complete their individual registration.",
2667
+ "Make sure everyone completes their registration so we can organise everything properly.",
2668
+ "You will receive a final confirmation once all travellers are registered and ready to go."
2669
+ ],
2670
+ bookingSummaryHeading: "\u{1F4DD} Booking Summary",
2671
+ bookingNumberLabel: "Booking Number",
2672
+ adventuresLabel: "Adventures",
2673
+ totalTravellersLabel: "Total Travellers",
2674
+ agentLabel: "Agent",
2675
+ adultsUnit: "adult(s)",
2676
+ childrenUnit: "child(ren)",
2677
+ travellersLabel: "Travellers",
2678
+ childBadge: "child",
2679
+ itineraryLabel: "Itinerary",
2680
+ includedLabel: "O que est\xE1 incluso",
2681
+ notIncludedLabel: "O que n\xE3o est\xE1 incluso",
2682
+ pricingLabel: "Pricing",
2683
+ subtotalLabel: "Subtotal",
2684
+ totalLabel: "Total",
2685
+ paymentSummaryHeading: "\u{1F4B0} Payment Summary",
2686
+ paymentDetailsHeading: "Payment Details",
2687
+ depositLabel: (percent) => `Deposit (${percent}%)`,
2688
+ remainingBalanceLabel: "Remaining balance",
2689
+ balanceDueLabel: "Balance due",
2690
+ paidInFullLabel: "\u2705 Paid in full",
2691
+ 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.",
2692
+ footerContact: (agent) => `If you have any questions, just reply to this email or contact ${agent} \u2014 happy to help.`
2693
+ };
2658
2694
  var DEFAULT_LOGO = "/logo-planetaexo.png";
2659
2695
  function BookingConfirmation({
2660
2696
  recipientName,
@@ -2667,8 +2703,10 @@ function BookingConfirmation({
2667
2703
  depositInfo,
2668
2704
  agent,
2669
2705
  viewBookingUrl,
2706
+ labels,
2670
2707
  className
2671
2708
  }) {
2709
+ const l = __spreadValues(__spreadValues({}, DEFAULT_LABELS), labels);
2672
2710
  const allTravellers = adventures.flatMap((a) => {
2673
2711
  var _a;
2674
2712
  return (_a = a.travellers) != null ? _a : [];
@@ -2678,14 +2716,14 @@ function BookingConfirmation({
2678
2716
  {
2679
2717
  href: viewBookingUrl,
2680
2718
  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: "View booking details"
2719
+ children: l.ctaButton
2682
2720
  }
2683
2721
  ) : /* @__PURE__ */ jsxRuntime.jsx(
2684
2722
  "span",
2685
2723
  {
2686
2724
  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
2725
  role: "presentation",
2688
- children: "View booking details"
2726
+ children: l.ctaButton
2689
2727
  }
2690
2728
  );
2691
2729
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -2700,50 +2738,42 @@ function BookingConfirmation({
2700
2738
  "img",
2701
2739
  {
2702
2740
  src: logoUrl,
2703
- alt: "PlanetaEXO",
2741
+ alt: l.logoAlt,
2704
2742
  className: "h-[70px] w-auto object-contain"
2705
2743
  }
2706
2744
  ) }),
2707
2745
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-8", children: [
2708
- /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "mb-5 text-base", children: [
2709
- "Hi ",
2710
- recipientName,
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." }),
2746
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-5 text-base", children: l.greeting(recipientName) }),
2747
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-5 text-base", children: l.confirmationMessage }),
2748
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-8 text-base", children: l.detailsIntro }),
2715
2749
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-10", children: ViewBookingCta })
2716
2750
  ] }),
2717
2751
  /* @__PURE__ */ jsxRuntime.jsx("hr", { className: "border-t border-border mx-8" }),
2718
2752
  /* @__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: "\u{1F4CB} Next Steps" }),
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: [
2753
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-5 font-heading font-bold text-foreground text-lg", children: l.nextStepsHeading }),
2754
+ /* @__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
2755
  /* @__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
2756
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-foreground/80 leading-relaxed", children: step })
2727
2757
  ] }, i)) })
2728
2758
  ] }),
2729
2759
  /* @__PURE__ */ jsxRuntime.jsx("hr", { className: "border-t border-border mx-8" }),
2730
2760
  /* @__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: "\u{1F4DD} Booking Summary" }),
2761
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-5 font-heading font-bold text-foreground text-lg", children: l.bookingSummaryHeading }),
2732
2762
  /* @__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
2763
  /* @__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: "Booking Number" }),
2764
+ /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-3 px-5 text-muted-foreground font-ui bg-muted/30", children: l.bookingNumberLabel }),
2735
2765
  /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-3 px-5 font-semibold text-primary", children: bookingReference })
2736
2766
  ] }),
2737
2767
  /* @__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: "Adventures" }),
2768
+ /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-3 px-5 text-muted-foreground font-ui bg-muted/30", children: l.adventuresLabel }),
2739
2769
  /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-3 px-5 font-medium text-foreground", children: adventures.length })
2740
2770
  ] }),
2741
2771
  /* @__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: "Total Travellers" }),
2772
+ /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-3 px-5 text-muted-foreground font-ui bg-muted/30", children: l.totalTravellersLabel }),
2743
2773
  /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-3 px-5 font-medium text-foreground", children: allTravellers.length })
2744
2774
  ] }),
2745
2775
  /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
2746
- /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-3 px-5 text-muted-foreground font-ui bg-muted/30", children: "Agent" }),
2776
+ /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-3 px-5 text-muted-foreground font-ui bg-muted/30", children: l.agentLabel }),
2747
2777
  /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-3 px-5 font-medium text-foreground", children: agent })
2748
2778
  ] })
2749
2779
  ] }) }) })
@@ -2793,8 +2823,8 @@ function BookingConfirmation({
2793
2823
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M16 3.13a4 4 0 0 1 0 7.75" })
2794
2824
  ] }),
2795
2825
  [
2796
- adventure.slots.adults ? `${adventure.slots.adults} adult(s)` : null,
2797
- adventure.slots.children ? `${adventure.slots.children} child(ren)` : null
2826
+ adventure.slots.adults ? `${adventure.slots.adults} ${l.adultsUnit}` : null,
2827
+ adventure.slots.children ? `${adventure.slots.children} ${l.childrenUnit}` : null
2798
2828
  ].filter(Boolean).join(" \xB7 ")
2799
2829
  ] }),
2800
2830
  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 +2837,7 @@ function BookingConfirmation({
2807
2837
  adventure.travellers && adventure.travellers.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2808
2838
  /* @__PURE__ */ jsxRuntime.jsx("hr", { className: "border-t border-border my-1" }),
2809
2839
  /* @__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: "Travellers" }),
2840
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[10px] font-bold text-muted-foreground font-heading uppercase tracking-widest mb-2", children: l.travellersLabel }),
2811
2841
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-1.5", children: adventure.travellers.map((t) => /* @__PURE__ */ jsxRuntime.jsxs(
2812
2842
  "div",
2813
2843
  {
@@ -2818,7 +2848,7 @@ function BookingConfirmation({
2818
2848
  " ",
2819
2849
  t.lastName
2820
2850
  ] }),
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: "child" })
2851
+ 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
2852
  ]
2823
2853
  },
2824
2854
  t.id
@@ -2828,12 +2858,12 @@ function BookingConfirmation({
2828
2858
  adventure.description && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2829
2859
  /* @__PURE__ */ jsxRuntime.jsx("hr", { className: "border-t border-border my-1" }),
2830
2860
  /* @__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: "Itinerary" }),
2861
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[10px] font-bold text-muted-foreground font-heading uppercase tracking-widest mb-2", children: l.itineraryLabel }),
2832
2862
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-foreground/80 leading-relaxed font-sans", children: adventure.description })
2833
2863
  ] })
2834
2864
  ] }),
2835
2865
  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: "O que est\xE1 incluso" }),
2866
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-sm font-bold text-foreground font-heading", children: l.includedLabel }),
2837
2867
  /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex flex-col gap-1.5", children: adventure.included.map((item, i) => /* @__PURE__ */ jsxRuntime.jsxs(
2838
2868
  "li",
2839
2869
  {
@@ -2847,7 +2877,7 @@ function BookingConfirmation({
2847
2877
  )) })
2848
2878
  ] }),
2849
2879
  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: "O que n\xE3o est\xE1 incluso" }),
2880
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-sm font-bold text-foreground font-heading", children: l.notIncludedLabel }),
2851
2881
  /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex flex-col gap-1.5", children: adventure.notIncluded.map((item, i) => /* @__PURE__ */ jsxRuntime.jsxs(
2852
2882
  "li",
2853
2883
  {
@@ -2866,7 +2896,7 @@ function BookingConfirmation({
2866
2896
  adventure.lineItems && adventure.lineItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2867
2897
  /* @__PURE__ */ jsxRuntime.jsx("hr", { className: "border-t border-border my-1" }),
2868
2898
  /* @__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: "Pricing" }),
2899
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[10px] font-bold text-muted-foreground font-heading uppercase tracking-widest mb-2", children: l.pricingLabel }),
2870
2900
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
2871
2901
  adventure.lineItems.map((item, j) => /* @__PURE__ */ jsxRuntime.jsxs(
2872
2902
  "div",
@@ -2892,7 +2922,7 @@ function BookingConfirmation({
2892
2922
  j
2893
2923
  )),
2894
2924
  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: "Subtotal" }),
2925
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold text-foreground font-heading", children: l.subtotalLabel }),
2896
2926
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-bold text-foreground font-heading whitespace-nowrap", children: adventure.subtotal })
2897
2927
  ] })
2898
2928
  ] })
@@ -2906,7 +2936,7 @@ function BookingConfirmation({
2906
2936
  }) }),
2907
2937
  /* @__PURE__ */ jsxRuntime.jsx("hr", { className: "border-t border-border mx-8" }),
2908
2938
  /* @__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: "\u{1F4B0} Payment Summary" }),
2939
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-5 font-heading font-bold text-foreground text-lg", children: l.paymentSummaryHeading }),
2910
2940
  /* @__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
2941
  summaryLineItems && summaryLineItems.map((item, i) => /* @__PURE__ */ jsxRuntime.jsxs("tr", { className: "border-b border-border", children: [
2912
2942
  /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-2.5 px-4 text-muted-foreground", children: item.label }),
@@ -2925,27 +2955,23 @@ function BookingConfirmation({
2925
2955
  )
2926
2956
  ] }, i)),
2927
2957
  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: "Subtotal" }),
2958
+ /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-2.5 px-4 text-muted-foreground font-ui", children: l.subtotalLabel }),
2929
2959
  /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-2.5 px-4 text-right font-medium text-foreground whitespace-nowrap", children: subtotal })
2930
2960
  ] }),
2931
2961
  /* @__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: "Total" }),
2962
+ /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-4 px-4 font-bold text-foreground font-heading text-base", children: l.totalLabel }),
2933
2963
  /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-4 px-4 text-right font-bold text-primary font-heading text-xl whitespace-nowrap", children: total })
2934
2964
  ] })
2935
2965
  ] }) }) }),
2936
2966
  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: "Payment Details" }) }),
2967
+ /* @__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
2968
  /* @__PURE__ */ jsxRuntime.jsx("table", { className: "w-full text-sm", children: /* @__PURE__ */ jsxRuntime.jsxs("tbody", { children: [
2939
2969
  /* @__PURE__ */ jsxRuntime.jsxs("tr", { className: "border-b border-border", children: [
2940
- /* @__PURE__ */ jsxRuntime.jsxs("td", { className: "py-2.5 px-4 text-muted-foreground", children: [
2941
- "Deposit (",
2942
- depositInfo.depositPercent,
2943
- "%)"
2944
- ] }),
2970
+ /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-2.5 px-4 text-muted-foreground", children: l.depositLabel(depositInfo.depositPercent) }),
2945
2971
  /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-2.5 px-4 text-right font-medium text-foreground whitespace-nowrap", children: depositInfo.depositAmount })
2946
2972
  ] }),
2947
2973
  /* @__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: "Remaining balance" }),
2974
+ /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-2.5 px-4 text-muted-foreground", children: l.remainingBalanceLabel }),
2949
2975
  /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-2.5 px-4 text-right font-medium text-foreground whitespace-nowrap", children: depositInfo.remainingAmount })
2950
2976
  ] }),
2951
2977
  /* @__PURE__ */ jsxRuntime.jsxs(
@@ -2955,7 +2981,7 @@ function BookingConfirmation({
2955
2981
  depositInfo.isPaidInFull && "border-b border-border"
2956
2982
  ),
2957
2983
  children: [
2958
- /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-2.5 px-4 text-muted-foreground", children: "Balance due" }),
2984
+ /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-2.5 px-4 text-muted-foreground", children: l.balanceDueLabel }),
2959
2985
  /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-2.5 px-4 text-right font-medium text-foreground whitespace-nowrap", children: depositInfo.balanceDueDate })
2960
2986
  ]
2961
2987
  }
@@ -2965,7 +2991,7 @@ function BookingConfirmation({
2965
2991
  {
2966
2992
  colSpan: 2,
2967
2993
  className: "py-3 px-4 text-center font-semibold text-green-600 bg-green-50",
2968
- children: "\u2705 Paid in full"
2994
+ children: l.paidInFullLabel
2969
2995
  }
2970
2996
  ) })
2971
2997
  ] }) })
@@ -2973,18 +2999,29 @@ function BookingConfirmation({
2973
2999
  ] }),
2974
3000
  /* @__PURE__ */ jsxRuntime.jsx("hr", { className: "border-t border-border mx-8" }),
2975
3001
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-8 py-8 pb-10", children: [
2976
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-5 text-base", children: "All travellers have been registered for this booking. Each person will receive a separate email with their individual details and any pre-departure information." }),
2977
- /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-base", children: [
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
- ] })
3002
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-5 text-base", children: l.footerMessage }),
3003
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-base", children: l.footerContact(agent) })
2983
3004
  ] })
2984
3005
  ]
2985
3006
  }
2986
3007
  );
2987
3008
  }
3009
+ var DEFAULT_LABELS2 = {
3010
+ ctaButton: "Add travellers to your booking",
3011
+ logoAlt: "PlanetaEXO",
3012
+ greeting: (recipientName) => `Hi ${recipientName},`,
3013
+ thankYouMessage: "Thank you for booking your adventure with PlanetaEXO \u2014 we\u2019re really looking forward to your adventure.",
3014
+ 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.",
3015
+ summaryHeading: "\u{1F4DD} Here\u2019s a quick summary of your booking:",
3016
+ bookingNumberLabel: "Booking Number:",
3017
+ activityLabel: "Activity:",
3018
+ adventureLabel: "Adventure:",
3019
+ startingDateLabel: "Starting Date:",
3020
+ numberOfPeopleLabel: "Number of People:",
3021
+ hostLabel: "Host:",
3022
+ 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.",
3023
+ closingMessage: "If you have any questions, just reply to this email \u2014 happy to help."
3024
+ };
2988
3025
  var DEFAULT_LOGO2 = "/logo-planetaexo.png";
2989
3026
  function BookingConfirmationEmail({
2990
3027
  recipientName,
@@ -2996,21 +3033,23 @@ function BookingConfirmationEmail({
2996
3033
  startingDate,
2997
3034
  numberOfPeople,
2998
3035
  host,
3036
+ labels,
2999
3037
  className
3000
3038
  }) {
3039
+ const l = __spreadValues(__spreadValues({}, DEFAULT_LABELS2), labels);
3001
3040
  const AddTravellersCta = addTravellersUrl ? /* @__PURE__ */ jsxRuntime.jsx(
3002
3041
  "a",
3003
3042
  {
3004
3043
  href: addTravellersUrl,
3005
3044
  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: "Add travellers to your booking"
3045
+ children: l.ctaButton
3007
3046
  }
3008
3047
  ) : /* @__PURE__ */ jsxRuntime.jsx(
3009
3048
  "span",
3010
3049
  {
3011
3050
  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
3051
  role: "presentation",
3013
- children: "Add travellers to your booking"
3052
+ children: l.ctaButton
3014
3053
  }
3015
3054
  );
3016
3055
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -3025,49 +3064,45 @@ function BookingConfirmationEmail({
3025
3064
  "img",
3026
3065
  {
3027
3066
  src: logoUrl,
3028
- alt: "PlanetaEXO",
3067
+ alt: l.logoAlt,
3029
3068
  className: "h-[70px] w-auto object-contain"
3030
3069
  }
3031
3070
  ) }),
3032
- /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "mb-4", children: [
3033
- "Hi ",
3034
- recipientName,
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." }),
3071
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-4", children: l.greeting(recipientName) }),
3072
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-4", children: l.thankYouMessage }),
3073
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-4", children: l.addTravellersInstruction }),
3039
3074
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-8", children: AddTravellersCta }),
3040
3075
  /* @__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: "\u{1F4DD} Here's a quick summary of your booking:" }),
3076
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-4 font-heading font-bold text-foreground", children: l.summaryHeading }),
3042
3077
  /* @__PURE__ */ jsxRuntime.jsx("table", { className: "w-full text-sm mb-8", children: /* @__PURE__ */ jsxRuntime.jsxs("tbody", { className: "divide-y divide-border", children: [
3043
3078
  /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
3044
- /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 pr-4 text-muted-foreground font-ui", children: "Booking Number:" }),
3079
+ /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 pr-4 text-muted-foreground font-ui", children: l.bookingNumberLabel }),
3045
3080
  /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 font-medium text-foreground", children: bookingNumber })
3046
3081
  ] }),
3047
3082
  /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
3048
- /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 pr-4 text-muted-foreground font-ui", children: "Activity:" }),
3083
+ /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 pr-4 text-muted-foreground font-ui", children: l.activityLabel }),
3049
3084
  /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 font-medium text-foreground", children: activity })
3050
3085
  ] }),
3051
3086
  /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
3052
- /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 pr-4 text-muted-foreground font-ui", children: "Adventure:" }),
3087
+ /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 pr-4 text-muted-foreground font-ui", children: l.adventureLabel }),
3053
3088
  /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 font-medium text-foreground", children: adventure })
3054
3089
  ] }),
3055
3090
  /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
3056
- /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 pr-4 text-muted-foreground font-ui", children: "Starting Date:" }),
3091
+ /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 pr-4 text-muted-foreground font-ui", children: l.startingDateLabel }),
3057
3092
  /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 font-medium text-foreground", children: startingDate })
3058
3093
  ] }),
3059
3094
  /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
3060
- /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 pr-4 text-muted-foreground font-ui", children: "Number of People:" }),
3095
+ /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 pr-4 text-muted-foreground font-ui", children: l.numberOfPeopleLabel }),
3061
3096
  /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 font-medium text-foreground", children: numberOfPeople })
3062
3097
  ] }),
3063
3098
  /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
3064
- /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 pr-4 text-muted-foreground font-ui", children: "Host:" }),
3099
+ /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 pr-4 text-muted-foreground font-ui", children: l.hostLabel }),
3065
3100
  /* @__PURE__ */ jsxRuntime.jsx("td", { className: "py-1 font-medium text-foreground", children: host })
3066
3101
  ] })
3067
3102
  ] }) }),
3068
3103
  /* @__PURE__ */ jsxRuntime.jsx("hr", { className: "border-t border-border mb-8" }),
3069
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-4", children: "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." }),
3070
- /* @__PURE__ */ jsxRuntime.jsx("p", { children: "If you have any questions, just reply to this email \u2014 happy to help." })
3104
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-4", children: l.postCtaMessage }),
3105
+ /* @__PURE__ */ jsxRuntime.jsx("p", { children: l.closingMessage })
3071
3106
  ]
3072
3107
  }
3073
3108
  );