@planetaexo/design-system 0.14.0 → 0.14.2

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.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: (_f = adventure.itineraryLabel) != null ? _f : "Details" }),
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: "O que est\xE1 incluso" }),
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: "O que n\xE3o est\xE1 incluso" }),
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: "Pol\xEDtica de cancelamento" }),
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 WIZARD_STEPS = [
1929
- { id: "responsible", label: "Responsible party details" },
1930
- { id: "travellers", label: "Travellers" },
1931
- { id: "payment", label: "Payment and terms" }
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 _a, _b;
1953
- return s + ((_b = (_a = a.slots) == null ? void 0 : _a.adults) != null ? _b : 1);
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 _a, _b;
1957
- return s + ((_b = (_a = a.slots) == null ? void 0 : _a.children) != null ? _b : 0);
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 = WIZARD_STEPS.findIndex((s) => s.id === step);
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 depositLabel = depositInfo ? `Pay deposit (${depositInfo.depositPercent}%) \u2014 ${depositInfo.depositAmount}` : "Pay deposit";
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: WIZARD_STEPS.map((s) => s.label),
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 ? "Crian\xE7a" : "Adulto" })
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" },
@@ -2151,7 +2164,7 @@ function OfferAdventureCard({ adventure }) {
2151
2164
  }
2152
2165
  function Offer({
2153
2166
  logo = "/logo-planetaexo.png",
2154
- logoAlt = "PlanetaEXO",
2167
+ logoAlt = "Planeta EXO",
2155
2168
  title,
2156
2169
  subtitle,
2157
2170
  adventures,
@@ -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;
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: (_f = adventure.addTravellerLabel) != null ? _f : "More travellers" }),
2686
- /* @__PURE__ */ jsx("span", { className: "sm:hidden", children: (_h = (_g = adventure.addTravellerShortLabel) != null ? _g : adventure.addTravellerLabel) != null ? _h : "Add" })
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.travellers.length > 0 && totalSlots > 0 && (() => {
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) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
3189
- /* @__PURE__ */ jsx("p", { className: "text-base font-bold text-foreground font-heading", children: adventure.title }),
3190
- 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(
3191
- "div",
3192
- {
3193
- className: "flex items-start justify-between gap-3",
3194
- children: [
3195
- /* @__PURE__ */ jsx(
3196
- "span",
3197
- {
3198
- className: cn(
3199
- "text-sm font-sans leading-tight",
3200
- item.isBold ? "font-semibold text-foreground" : "text-muted-foreground"
3201
- ),
3202
- children: item.label
3203
- }
3204
- ),
3205
- /* @__PURE__ */ jsxs(
3206
- "span",
3207
- {
3208
- className: cn(
3209
- "text-sm font-sans shrink-0",
3210
- item.isDiscount ? "text-green-600 dark:text-green-400" : item.isBold ? "font-semibold text-foreground" : "text-foreground"
3211
- ),
3212
- children: [
3213
- item.isDiscount ? "\u2212" : "",
3214
- item.price
3215
- ]
3216
- }
3217
- )
3218
- ]
3219
- },
3220
- j
3221
- )) }),
3222
- adventure.subtotal && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between mt-1", children: [
3223
- /* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground font-sans", children: "Subtotal this adventure" }),
3224
- /* @__PURE__ */ jsx("span", { className: "text-sm font-semibold text-foreground font-sans", children: adventure.subtotal })
3225
- ] }),
3226
- i < adventures.length - 1 && /* @__PURE__ */ jsx(Separator, { className: "mt-2" })
3227
- ] }, adventure.id)),
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
- (_a = depositInfo.depositLabel) != null ? _a : "Deposit",
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__ */ jsxs("p", { className: "text-sm text-muted-foreground font-sans", children: [
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: (_a = agent == null ? void 0 : agent.name) != null ? _a : agentName,
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__ */ jsxs("span", { className: "font-semibold", children: [
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__ */ jsxs("h2", { className: "text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest", children: [
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: (_b = contact.email) != null ? _b : "\u2014" })
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: (_c = contact.phone) != null ? _c : "\u2014" })
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: (_d = contact.country) != null ? _d : "\u2014" })
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" }),
@@ -4850,9 +4865,7 @@ var DEFAULT_LABELS3 = {
4850
4865
  nationalityLabel: "Nationality",
4851
4866
  selectPlaceholder: "Select an option\u2026",
4852
4867
  optionalLabel: "(optional)",
4853
- requiredFieldError: "Required",
4854
- dateLabel: "Date",
4855
- datesLabel: "Dates"
4868
+ requiredFieldError: "Required"
4856
4869
  };
4857
4870
  var TERMS_ACCEPT_KEY = "__registrationTermsAccepted";
4858
4871
  function emptyName() {
@@ -5463,7 +5476,7 @@ function FieldRenderer({
5463
5476
  }
5464
5477
  function RegistrationForm({
5465
5478
  logo = "/logo-planetaexo.png",
5466
- logoAlt = "PlanetaEXO",
5479
+ logoAlt = "Planeta EXO",
5467
5480
  heroImage,
5468
5481
  heroImageAlt = "",
5469
5482
  title,
@@ -5633,7 +5646,7 @@ function RegistrationForm({
5633
5646
  /* @__PURE__ */ jsx("dd", { className: "text-foreground font-medium text-right min-w-0 break-words", children: adventure.name })
5634
5647
  ] }),
5635
5648
  dateRange && /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-x-4", children: [
5636
- /* @__PURE__ */ jsx("dt", { className: "text-muted-foreground", children: (adventure == null ? void 0 : adventure.startDate) && (adventure == null ? void 0 : adventure.endDate) ? L.datesLabel : L.dateLabel }),
5649
+ /* @__PURE__ */ jsx("dt", { className: "text-muted-foreground", children: (adventure == null ? void 0 : adventure.startDate) && (adventure == null ? void 0 : adventure.endDate) ? "Dates" : "Date" }),
5637
5650
  /* @__PURE__ */ jsx("dd", { className: "text-foreground text-right min-w-0", children: dateRange })
5638
5651
  ] }),
5639
5652
  (adventure == null ? void 0 : adventure.partnerName) && /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-x-4", children: [
@@ -5817,7 +5830,7 @@ function phoneCountryDial(code) {
5817
5830
  var _a, _b;
5818
5831
  return (_b = (_a = PHONE_COUNTRIES.find((c) => c.code === code)) == null ? void 0 : _a.dial) != null ? _b : code;
5819
5832
  }
5820
- function defaultFormatAnswer(field, value, fmtDate, booleanLabels = { yes: "Yes", no: "No" }) {
5833
+ function defaultFormatAnswer(field, value, fmtDate) {
5821
5834
  var _a, _b, _c, _d, _e, _f;
5822
5835
  if (value == null || value === "") return "\u2014";
5823
5836
  if (value instanceof Date) return fmtDate(value);
@@ -5827,7 +5840,7 @@ function defaultFormatAnswer(field, value, fmtDate, booleanLabels = { yes: "Yes"
5827
5840
  }
5828
5841
  return value.filter(Boolean).join(", ") || "\u2014";
5829
5842
  }
5830
- if (typeof value === "boolean") return value ? booleanLabels.yes : booleanLabels.no;
5843
+ if (typeof value === "boolean") return value ? "Yes" : "No";
5831
5844
  if (typeof value === "object") {
5832
5845
  if ("contactName" in value) {
5833
5846
  const ec = value;
@@ -5882,12 +5895,11 @@ function RegistrationSuccessCard({
5882
5895
  booking,
5883
5896
  traveller,
5884
5897
  tripInfoLabels,
5885
- booleanLabels,
5886
5898
  density = "comfortable",
5887
5899
  submissionTimestamps,
5888
5900
  submissionTimestampsLabels
5889
5901
  }) {
5890
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;
5902
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
5891
5903
  const isMinimal = variant === "minimal";
5892
5904
  const isCompact = density === "compact";
5893
5905
  const sorted = isMinimal ? [] : [...fields].sort((a, b) => {
@@ -5901,17 +5913,11 @@ function RegistrationSuccessCard({
5901
5913
  adventureLabel: (_b = tripInfoLabels == null ? void 0 : tripInfoLabels.adventureLabel) != null ? _b : "Adventure",
5902
5914
  bookingLabel: (_c = tripInfoLabels == null ? void 0 : tripInfoLabels.bookingLabel) != null ? _c : "Booking",
5903
5915
  partnerLabel: (_d = tripInfoLabels == null ? void 0 : tripInfoLabels.partnerLabel) != null ? _d : "Partner",
5904
- travellerLabel: (_e = tripInfoLabels == null ? void 0 : tripInfoLabels.travellerLabel) != null ? _e : "Traveller",
5905
- dateLabel: (_f = tripInfoLabels == null ? void 0 : tripInfoLabels.dateLabel) != null ? _f : "Date",
5906
- datesLabel: (_g = tripInfoLabels == null ? void 0 : tripInfoLabels.datesLabel) != null ? _g : "Dates"
5907
- };
5908
- const BL = {
5909
- yes: (_h = booleanLabels == null ? void 0 : booleanLabels.yes) != null ? _h : "Yes",
5910
- no: (_i = booleanLabels == null ? void 0 : booleanLabels.no) != null ? _i : "No"
5916
+ travellerLabel: (_e = tripInfoLabels == null ? void 0 : tripInfoLabels.travellerLabel) != null ? _e : "Traveller"
5911
5917
  };
5912
5918
  const STL = {
5913
- submittedAt: (_j = submissionTimestampsLabels == null ? void 0 : submissionTimestampsLabels.submittedAt) != null ? _j : "Submitted",
5914
- lastUpdatedAt: (_k = submissionTimestampsLabels == null ? void 0 : submissionTimestampsLabels.lastUpdatedAt) != null ? _k : "Last updated"
5919
+ submittedAt: (_f = submissionTimestampsLabels == null ? void 0 : submissionTimestampsLabels.submittedAt) != null ? _f : "Submitted",
5920
+ lastUpdatedAt: (_g = submissionTimestampsLabels == null ? void 0 : submissionTimestampsLabels.lastUpdatedAt) != null ? _g : "Last updated"
5915
5921
  };
5916
5922
  const hasTimestamps = !isMinimal && !!submissionTimestamps && (!!submissionTimestamps.submittedAt || !!submissionTimestamps.lastUpdatedAt);
5917
5923
  return /* @__PURE__ */ jsxs(
@@ -5962,7 +5968,7 @@ function RegistrationSuccessCard({
5962
5968
  /* @__PURE__ */ jsx("dd", { className: "w-1/2 text-foreground font-medium text-right min-w-0 break-words", children: adventure.name })
5963
5969
  ] }),
5964
5970
  dateRange && /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-x-4", children: [
5965
- /* @__PURE__ */ jsx("dt", { className: "w-1/2 text-muted-foreground break-words", children: (adventure == null ? void 0 : adventure.startDate) && (adventure == null ? void 0 : adventure.endDate) ? TL.datesLabel : TL.dateLabel }),
5971
+ /* @__PURE__ */ jsx("dt", { className: "w-1/2 text-muted-foreground break-words", children: (adventure == null ? void 0 : adventure.startDate) && (adventure == null ? void 0 : adventure.endDate) ? "Dates" : "Date" }),
5966
5972
  /* @__PURE__ */ jsx("dd", { className: "w-1/2 text-foreground text-right min-w-0 break-words", children: dateRange })
5967
5973
  ] }),
5968
5974
  (adventure == null ? void 0 : adventure.partnerName) && /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-x-4", children: [
@@ -5980,18 +5986,18 @@ function RegistrationSuccessCard({
5980
5986
  ] }) }),
5981
5987
  sorted.length > 0 && /* @__PURE__ */ jsx(FormSection2, { title: answersTitle, children: /* @__PURE__ */ jsx("dl", { className: "flex flex-col gap-y-3 text-sm font-ui", children: sorted.map((f) => /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-x-4", children: [
5982
5988
  /* @__PURE__ */ jsx("dt", { className: "w-1/2 text-muted-foreground break-words", children: f.label }),
5983
- /* @__PURE__ */ jsx("dd", { className: "w-1/2 text-foreground text-right min-w-0 break-words", children: (formatAnswer != null ? formatAnswer : ((field, v) => defaultFormatAnswer(field, v, dateFormatter, BL)))(
5989
+ /* @__PURE__ */ jsx("dd", { className: "w-1/2 text-foreground text-right min-w-0 break-words", children: (formatAnswer != null ? formatAnswer : ((field, v) => defaultFormatAnswer(field, v, dateFormatter)))(
5984
5990
  f,
5985
5991
  answers[f.id]
5986
5992
  ) })
5987
5993
  ] }, f.id)) }) }),
5988
- !isMinimal && terms && /* @__PURE__ */ jsx(FormSection2, { title: (_l = termsLabels == null ? void 0 : termsLabels.title) != null ? _l : "Terms & Conditions", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-3 text-sm font-ui", children: [
5994
+ !isMinimal && terms && /* @__PURE__ */ jsx(FormSection2, { title: (_h = termsLabels == null ? void 0 : termsLabels.title) != null ? _h : "Terms & Conditions", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-3 text-sm font-ui", children: [
5989
5995
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
5990
5996
  /* @__PURE__ */ jsx("div", { className: cn(
5991
5997
  "inline-flex h-5 w-5 items-center justify-center rounded-full text-white text-xs font-bold",
5992
5998
  terms.accepted ? "bg-primary" : "bg-destructive"
5993
5999
  ), children: terms.accepted ? "\u2713" : "\u2717" }),
5994
- /* @__PURE__ */ jsx("span", { className: terms.accepted ? "text-primary font-medium" : "text-destructive font-medium", children: terms.accepted ? (_m = termsLabels == null ? void 0 : termsLabels.accepted) != null ? _m : "Accepted" : (_n = termsLabels == null ? void 0 : termsLabels.notAccepted) != null ? _n : "Not accepted" })
6000
+ /* @__PURE__ */ jsx("span", { className: terms.accepted ? "text-primary font-medium" : "text-destructive font-medium", children: terms.accepted ? (_i = termsLabels == null ? void 0 : termsLabels.accepted) != null ? _i : "Accepted" : (_j = termsLabels == null ? void 0 : termsLabels.notAccepted) != null ? _j : "Not accepted" })
5995
6001
  ] }),
5996
6002
  termsLayout === "full" && terms.markdown.trim().length > 0 && /* @__PURE__ */ jsx(
5997
6003
  "div",
@@ -7588,7 +7594,7 @@ function SiteHeader({
7588
7594
  variant = "transparent",
7589
7595
  links = DEFAULT_HEADER_LINKS,
7590
7596
  logoSrc = "/logo-planetaexo.png",
7591
- logoAlt = "PlanetaEXO",
7597
+ logoAlt = "Planeta Exo",
7592
7598
  languages = DEFAULT_LANGUAGES,
7593
7599
  currentLanguage = "EN",
7594
7600
  onLanguageChange,