@planetaexo/design-system 0.13.3 → 0.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1282,8 +1282,8 @@ function Alert({ variant = "info", children, className }) {
1282
1282
  }
1283
1283
  );
1284
1284
  }
1285
- function AdventureCard({ adventure }) {
1286
- var _a, _b, _c, _d, _e, _f;
1285
+ function AdventureCard({ adventure, labels }) {
1286
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
1287
1287
  const isControlled = (_b = (_a = adventure.optionals) == null ? void 0 : _a.some((o) => o.onCheckedChange !== void 0)) != null ? _b : false;
1288
1288
  const [checkedInternal, setCheckedInternal] = React23__namespace.useState(
1289
1289
  new Set((_d = (_c = adventure.optionals) == null ? void 0 : _c.filter((o) => o.defaultChecked).map((o) => o.id)) != null ? _d : [])
@@ -1324,7 +1324,7 @@ function AdventureCard({ adventure }) {
1324
1324
  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",
1325
1325
  children: [
1326
1326
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.XIcon, { className: "w-3 h-3" }),
1327
- "Remove"
1327
+ (_f = labels == null ? void 0 : labels.remove) != null ? _f : "Remove"
1328
1328
  ]
1329
1329
  }
1330
1330
  )
@@ -1341,7 +1341,7 @@ function AdventureCard({ adventure }) {
1341
1341
  adventure.location
1342
1342
  ] }),
1343
1343
  adventure.optionals && adventure.optionals.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 rounded-xl border border-border bg-muted/30 p-4 flex flex-col gap-3", children: [
1344
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[10px] font-bold text-muted-foreground font-heading uppercase tracking-widest", children: "Available optionals" }),
1344
+ /* @__PURE__ */ jsxRuntime.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" }),
1345
1345
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-2", children: adventure.optionals.map((opt) => {
1346
1346
  var _a2, _b2, _c2, _d2, _e2;
1347
1347
  const checked = isChecked(opt);
@@ -1421,7 +1421,7 @@ function AdventureCard({ adventure }) {
1421
1421
  (adventure.description || adventure.detailsSlot) && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1422
1422
  /* @__PURE__ */ jsxRuntime.jsx(Separator, { className: "my-1" }),
1423
1423
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1424
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[10px] font-bold text-muted-foreground font-heading uppercase tracking-widest mb-3", children: (_f = adventure.itineraryLabel) != null ? _f : "Details" }),
1424
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[10px] font-bold text-muted-foreground font-heading uppercase tracking-widest mb-3", children: (_h = adventure.itineraryLabel) != null ? _h : "Details" }),
1425
1425
  adventure.description && !adventure.detailsSlot && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-base text-foreground/80 leading-snug font-sans", children: adventure.description }),
1426
1426
  adventure.detailsSlot && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn(
1427
1427
  "text-foreground",
@@ -1447,21 +1447,21 @@ function AdventureCard({ adventure }) {
1447
1447
  ] })
1448
1448
  ] }),
1449
1449
  adventure.included && adventure.included.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2.5 mt-1", children: [
1450
- /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-base font-bold text-foreground font-heading", children: "O que est\xE1 incluso" }),
1450
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-base font-bold text-foreground font-heading", children: (_i = adventure.includedLabel) != null ? _i : "What's included" }),
1451
1451
  /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex flex-col gap-1.5", children: adventure.included.map((item, i) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-start gap-2 text-base text-foreground/80 font-sans", children: [
1452
1452
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckIcon, { className: "w-4 h-4 text-primary shrink-0 mt-1" }),
1453
1453
  item
1454
1454
  ] }, i)) })
1455
1455
  ] }),
1456
1456
  adventure.notIncluded && adventure.notIncluded.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2.5 mt-1", children: [
1457
- /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-base font-bold text-foreground font-heading", children: "O que n\xE3o est\xE1 incluso" }),
1457
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-base font-bold text-foreground font-heading", children: (_j = adventure.notIncludedLabel) != null ? _j : "What's not included" }),
1458
1458
  /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex flex-col gap-1.5", children: adventure.notIncluded.map((item, i) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-start gap-2 text-base text-foreground/80 font-sans", children: [
1459
1459
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.XIcon, { className: "w-4 h-4 text-destructive shrink-0 mt-1" }),
1460
1460
  item
1461
1461
  ] }, i)) })
1462
1462
  ] }),
1463
1463
  adventure.cancellationPolicy && adventure.cancellationPolicy.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2.5 mt-1", children: [
1464
- /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-base font-bold text-foreground font-heading", children: "Pol\xEDtica de cancelamento" }),
1464
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-base font-bold text-foreground font-heading", children: (_k = adventure.cancellationPolicyLabel) != null ? _k : "Cancellation policy" }),
1465
1465
  /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex flex-col gap-1.5", children: adventure.cancellationPolicy.map((item, i) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-start gap-2 text-base text-muted-foreground font-sans", children: [
1466
1466
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-1.5 h-1.5 rounded-full bg-primary shrink-0 mt-2.5" }),
1467
1467
  item
@@ -1475,12 +1475,14 @@ function OfferSidebar({
1475
1475
  agent,
1476
1476
  onBook,
1477
1477
  bookLabel,
1478
- bookDisabled
1478
+ bookDisabled,
1479
+ labels
1479
1480
  }) {
1481
+ var _a, _b;
1480
1482
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-4", children: [
1481
1483
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "hidden lg:flex rounded-2xl border border-border bg-card p-5 flex-col gap-4", children: [
1482
1484
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1483
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs uppercase tracking-widest text-muted-foreground font-heading mb-1", children: "Booking Total" }),
1485
+ /* @__PURE__ */ jsxRuntime.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" }),
1484
1486
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-3xl font-black text-primary font-heading leading-none", children: total })
1485
1487
  ] }),
1486
1488
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -1513,7 +1515,7 @@ function OfferSidebar({
1513
1515
  )
1514
1516
  ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-16 h-16 rounded-full bg-primary/10 flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xl font-bold text-primary font-heading", children: agent.name.charAt(0) }) }),
1515
1517
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1516
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-foreground font-sans", children: "Need help with your offer?" }),
1518
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-foreground font-sans", children: (_b = labels == null ? void 0 : labels.needHelp) != null ? _b : "Need help with your offer?" }),
1517
1519
  /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm font-sans text-foreground mt-0.5", children: [
1518
1520
  "Contact",
1519
1521
  " ",
@@ -1580,10 +1582,12 @@ function OfferSummarySection({
1580
1582
  continueLabel,
1581
1583
  summaryNotesSlot,
1582
1584
  summaryDiscountLine,
1583
- continueDisabled
1585
+ continueDisabled,
1586
+ labels
1584
1587
  }) {
1588
+ var _a, _b, _c, _d, _e;
1585
1589
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-2xl border border-border bg-card p-5 flex flex-col gap-4", children: [
1586
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "font-bold text-foreground font-heading text-base", children: "Summary" }),
1590
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "font-bold text-foreground font-heading text-base", children: (_a = labels == null ? void 0 : labels.summary) != null ? _a : "Summary" }),
1587
1591
  /* @__PURE__ */ jsxRuntime.jsx(Separator, {}),
1588
1592
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-4", children: adventures.map((adventure, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1589
1593
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start justify-between gap-3", children: [
@@ -1602,7 +1606,7 @@ function OfferSummarySection({
1602
1606
  summaryNotesSlot,
1603
1607
  /* @__PURE__ */ jsxRuntime.jsx(Separator, {}),
1604
1608
  subtotal && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
1605
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-muted-foreground font-sans", children: "Subtotal" }),
1609
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-muted-foreground font-sans", children: (_b = labels == null ? void 0 : labels.subtotal) != null ? _b : "Subtotal" }),
1606
1610
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-semibold text-foreground font-sans", children: subtotal })
1607
1611
  ] }),
1608
1612
  summaryDiscountLine && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between text-success", children: [
@@ -1622,16 +1626,16 @@ function OfferSummarySection({
1622
1626
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-semibold text-foreground font-sans", children: depositInfo.depositAmount })
1623
1627
  ] }),
1624
1628
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
1625
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-muted-foreground font-sans", children: "Remaining balance" }),
1629
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-muted-foreground font-sans", children: (_c = labels == null ? void 0 : labels.remainingBalance) != null ? _c : "Remaining balance" }),
1626
1630
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-semibold text-foreground font-sans", children: depositInfo.remainingAmount })
1627
1631
  ] }),
1628
1632
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
1629
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-muted-foreground font-sans", children: "Balance due" }),
1633
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-muted-foreground font-sans", children: (_d = labels == null ? void 0 : labels.balanceDue) != null ? _d : "Balance due" }),
1630
1634
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-semibold text-foreground font-sans", children: depositInfo.balanceDueDate })
1631
1635
  ] })
1632
1636
  ] }),
1633
1637
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between pt-1", children: [
1634
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-base font-bold text-foreground font-heading", children: "Total" }),
1638
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-base font-bold text-foreground font-heading", children: (_e = labels == null ? void 0 : labels.total) != null ? _e : "Total" }),
1635
1639
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-2xl font-black text-primary font-heading", children: total })
1636
1640
  ] }),
1637
1641
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -1946,17 +1950,23 @@ function BookingConfirmedCard({
1946
1950
  )
1947
1951
  ] });
1948
1952
  }
1949
- var WIZARD_STEPS = [
1950
- { id: "responsible", label: "Responsible party details" },
1951
- { id: "travellers", label: "Travellers" },
1952
- { id: "payment", label: "Payment and terms" }
1953
- ];
1953
+ var WIZARD_STEPS_FN = (l) => {
1954
+ var _a, _b, _c, _d, _e, _f;
1955
+ return [
1956
+ { id: "responsible", label: (_b = (_a = l == null ? void 0 : l.wizardSteps) == null ? void 0 : _a.responsible) != null ? _b : "Responsible party details" },
1957
+ { id: "travellers", label: (_d = (_c = l == null ? void 0 : l.wizardSteps) == null ? void 0 : _c.travellers) != null ? _d : "Travellers" },
1958
+ { id: "payment", label: (_f = (_e = l == null ? void 0 : l.wizardSteps) == null ? void 0 : _e.paymentAndTerms) != null ? _f : "Payment and terms" }
1959
+ ];
1960
+ };
1954
1961
  function BookingWizard({
1955
1962
  adventures,
1956
1963
  total,
1957
1964
  depositInfo,
1958
- onCancel
1965
+ onCancel,
1966
+ labels
1959
1967
  }) {
1968
+ var _a;
1969
+ const wizardSteps = WIZARD_STEPS_FN(labels);
1960
1970
  const [step, setStep] = React23__namespace.useState("responsible");
1961
1971
  const [error, setError] = React23__namespace.useState(null);
1962
1972
  const [responsible, setResponsible] = React23__namespace.useState({
@@ -1970,12 +1980,12 @@ function BookingWizard({
1970
1980
  notes: ""
1971
1981
  });
1972
1982
  const totalAdults = adventures.reduce((s, a) => {
1973
- var _a, _b;
1974
- return s + ((_b = (_a = a.slots) == null ? void 0 : _a.adults) != null ? _b : 1);
1983
+ var _a2, _b;
1984
+ return s + ((_b = (_a2 = a.slots) == null ? void 0 : _a2.adults) != null ? _b : 1);
1975
1985
  }, 0);
1976
1986
  const totalChildren = adventures.reduce((s, a) => {
1977
- var _a, _b;
1978
- return s + ((_b = (_a = a.slots) == null ? void 0 : _a.children) != null ? _b : 0);
1987
+ var _a2, _b;
1988
+ return s + ((_b = (_a2 = a.slots) == null ? void 0 : _a2.children) != null ? _b : 0);
1979
1989
  }, 0);
1980
1990
  const totalPax = totalAdults + totalChildren;
1981
1991
  const [travellers, setTravellers] = React23__namespace.useState(
@@ -1992,7 +2002,7 @@ function BookingWizard({
1992
2002
  const setR = (k, v) => setResponsible((p) => __spreadProps(__spreadValues({}, p), { [k]: v }));
1993
2003
  const setT = (i, k, v) => setTravellers((prev) => prev.map((t, idx) => idx === i ? __spreadProps(__spreadValues({}, t), { [k]: v }) : t));
1994
2004
  const setTDob = (i, v) => setTravellers((prev) => prev.map((t, idx) => idx === i ? __spreadProps(__spreadValues({}, t), { dateOfBirth: v }) : t));
1995
- const stepIndex = WIZARD_STEPS.findIndex((s) => s.id === step);
2005
+ const stepIndex = wizardSteps.findIndex((s) => s.id === step);
1996
2006
  const goNext = () => {
1997
2007
  setError(null);
1998
2008
  if (step === "responsible") {
@@ -2025,15 +2035,16 @@ function BookingWizard({
2025
2035
  if (step === "travellers") setStep("responsible");
2026
2036
  else if (step === "payment") setStep("travellers");
2027
2037
  };
2028
- const depositLabel = depositInfo ? `Pay deposit (${depositInfo.depositPercent}%) \u2014 ${depositInfo.depositAmount}` : "Pay deposit";
2038
+ const payDepositLabel = (_a = labels == null ? void 0 : labels.payDeposit) != null ? _a : "Pay deposit";
2039
+ const depositLabel = depositInfo ? `${payDepositLabel} (${depositInfo.depositPercent}%) \u2014 ${depositInfo.depositAmount}` : payDepositLabel;
2029
2040
  const fullLabel = `Pay full amount \u2014 ${total}`;
2030
2041
  if (step === "confirmed") {
2031
- return /* @__PURE__ */ jsxRuntime.jsx(BookingConfirmedCard, { email: responsible.email, onBack: onCancel });
2042
+ return /* @__PURE__ */ jsxRuntime.jsx(BookingConfirmedCard, { title: labels == null ? void 0 : labels.bookingConfirmed, email: responsible.email, onBack: onCancel });
2032
2043
  }
2033
2044
  return /* @__PURE__ */ jsxRuntime.jsx(
2034
2045
  BookingShell,
2035
2046
  {
2036
- steps: WIZARD_STEPS.map((s) => s.label),
2047
+ steps: wizardSteps.map((s) => s.label),
2037
2048
  currentStep: stepIndex,
2038
2049
  title: "Booking details",
2039
2050
  onNext: goNext,
@@ -2093,6 +2104,7 @@ function BookingWizard({
2093
2104
  /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "font-bold text-foreground font-heading text-base", children: "Traveller details" })
2094
2105
  ] }),
2095
2106
  travellers.map((t, i) => {
2107
+ var _a2, _b;
2096
2108
  const isChild = i >= totalAdults;
2097
2109
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-xl border border-border p-4 flex flex-col gap-3", children: [
2098
2110
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
@@ -2103,7 +2115,7 @@ function BookingWizard({
2103
2115
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn(
2104
2116
  "text-xs font-semibold font-heading rounded-full px-2.5 py-0.5",
2105
2117
  isChild ? "bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-400" : "bg-primary/10 text-primary"
2106
- ), children: isChild ? "Crian\xE7a" : "Adulto" })
2118
+ ), children: isChild ? (_a2 = labels == null ? void 0 : labels.childLabel) != null ? _a2 : "Child" : (_b = labels == null ? void 0 : labels.adultLabel) != null ? _b : "Adult" })
2107
2119
  ] }),
2108
2120
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [
2109
2121
  /* @__PURE__ */ jsxRuntime.jsx(FloatingInput, { label: "First name", required: true, value: t.firstName, onChange: (e) => setT(i, "firstName", e.target.value) }),
@@ -2146,6 +2158,7 @@ function BookingWizard({
2146
2158
  /* @__PURE__ */ jsxRuntime.jsx(
2147
2159
  PaymentMethodSelector,
2148
2160
  {
2161
+ title: labels == null ? void 0 : labels.paymentMethod,
2149
2162
  methods: [
2150
2163
  { id: "stripe", label: "Credit / Debit card", description: "Secure payment via Stripe" },
2151
2164
  { id: "pix", label: "PIX", description: "Instant transfer \u2014 Brazil only" },
@@ -2187,8 +2200,10 @@ function Offer({
2187
2200
  summaryNotesSlot,
2188
2201
  summaryDiscountLine,
2189
2202
  continueDisabled,
2203
+ labels,
2190
2204
  className
2191
2205
  }) {
2206
+ var _a, _b;
2192
2207
  const [showBooking, setShowBooking] = React23__namespace.useState(false);
2193
2208
  const isShowingCheckout = !!checkoutSlot || showBooking;
2194
2209
  const handleBook = () => {
@@ -2204,9 +2219,9 @@ function Offer({
2204
2219
  /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "flex flex-col gap-5", children: [
2205
2220
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
2206
2221
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MapIcon, { className: "w-5 h-5 text-primary shrink-0" }),
2207
- /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "font-bold text-foreground font-heading text-base", children: "Included Adventures" })
2222
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "font-bold text-foreground font-heading text-base", children: (_a = labels == null ? void 0 : labels.includedAdventures) != null ? _a : "Included Adventures" })
2208
2223
  ] }),
2209
- adventures.map((adventure) => /* @__PURE__ */ jsxRuntime.jsx(AdventureCard, { adventure }, adventure.id))
2224
+ adventures.map((adventure) => /* @__PURE__ */ jsxRuntime.jsx(AdventureCard, { adventure, labels }, adventure.id))
2210
2225
  ] }),
2211
2226
  !isShowingCheckout && /* @__PURE__ */ jsxRuntime.jsx(
2212
2227
  OfferSummarySection,
@@ -2219,7 +2234,8 @@ function Offer({
2219
2234
  continueLabel,
2220
2235
  summaryNotesSlot,
2221
2236
  summaryDiscountLine,
2222
- continueDisabled
2237
+ continueDisabled,
2238
+ labels
2223
2239
  }
2224
2240
  ),
2225
2241
  isShowingCheckout && (checkoutSlot != null ? checkoutSlot : /* @__PURE__ */ jsxRuntime.jsx(
@@ -2228,7 +2244,8 @@ function Offer({
2228
2244
  adventures,
2229
2245
  total,
2230
2246
  depositInfo,
2231
- onCancel: () => setShowBooking(false)
2247
+ onCancel: () => setShowBooking(false),
2248
+ labels
2232
2249
  }
2233
2250
  ))
2234
2251
  ] }),
@@ -2239,13 +2256,14 @@ function Offer({
2239
2256
  agent,
2240
2257
  onBook: handleBook,
2241
2258
  bookLabel: continueLabel,
2242
- bookDisabled: continueDisabled
2259
+ bookDisabled: continueDisabled,
2260
+ labels
2243
2261
  }
2244
2262
  ) })
2245
2263
  ] }),
2246
2264
  !isShowingCheckout && /* @__PURE__ */ jsxRuntime.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__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-4 max-w-5xl mx-auto", children: [
2247
2265
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col", children: [
2248
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] uppercase tracking-widest text-muted-foreground font-heading", children: "Total" }),
2266
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] uppercase tracking-widest text-muted-foreground font-heading", children: (_b = labels == null ? void 0 : labels.total) != null ? _b : "Total" }),
2249
2267
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xl font-black text-primary font-heading leading-tight", children: total })
2250
2268
  ] }),
2251
2269
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -2524,9 +2542,10 @@ function AdventureSection({
2524
2542
  onRequestOpenAddModal,
2525
2543
  onRequestOpenEditModal,
2526
2544
  onRequestOpenDeleteModal,
2527
- cannotRemoveLastTravellerLabel
2545
+ cannotRemoveLastTravellerLabel,
2546
+ labels
2528
2547
  }) {
2529
- var _a, _b, _c, _d, _e, _f, _g, _h, _i;
2548
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
2530
2549
  const [detailsOpen, setDetailsOpen] = React23__namespace.useState(false);
2531
2550
  const handleCopyUrl = (url) => {
2532
2551
  if (onCopyFormLink) {
@@ -2664,7 +2683,7 @@ function AdventureSection({
2664
2683
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-t border-border px-5 lg:px-6 py-5 flex flex-col gap-4", children: [
2665
2684
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-3 flex-wrap", children: [
2666
2685
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
2667
- /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest", children: "Travellers" }),
2686
+ /* @__PURE__ */ jsxRuntime.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" }),
2668
2687
  adventure.formName && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-xs font-semibold text-muted-foreground/50 font-heading tracking-wide", children: [
2669
2688
  "\xB7 ",
2670
2689
  adventure.formName
@@ -2684,8 +2703,8 @@ function AdventureSection({
2684
2703
  ),
2685
2704
  children: [
2686
2705
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.UserPlusIcon, { className: "w-3 h-3" }),
2687
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "hidden sm:inline", children: "Add contact as traveller" }),
2688
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sm:hidden", children: "Add contact" })
2706
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "hidden sm:inline", children: (_g = labels == null ? void 0 : labels.addContactAsTraveller) != null ? _g : "Add contact as traveller" }),
2707
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sm:hidden", children: (_h = labels == null ? void 0 : labels.addContactAsTravellerShort) != null ? _h : "Add contact" })
2689
2708
  ]
2690
2709
  }
2691
2710
  ),
@@ -2703,14 +2722,15 @@ function AdventureSection({
2703
2722
  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",
2704
2723
  children: [
2705
2724
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.PlusIcon, { className: "w-3 h-3" }),
2706
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "hidden sm:inline", children: (_f = adventure.addTravellerLabel) != null ? _f : "More travellers" }),
2707
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sm:hidden", children: (_h = (_g = adventure.addTravellerShortLabel) != null ? _g : adventure.addTravellerLabel) != null ? _h : "Add" })
2725
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "hidden sm:inline", children: (_i = adventure.addTravellerLabel) != null ? _i : "More travellers" }),
2726
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sm:hidden", children: (_k = (_j = adventure.addTravellerShortLabel) != null ? _j : adventure.addTravellerLabel) != null ? _k : "Add" })
2708
2727
  ]
2709
2728
  }
2710
2729
  )
2711
2730
  ] })
2712
2731
  ] }),
2713
2732
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col divide-y divide-border", children: adventure.travellers.map((t) => {
2733
+ var _a2, _b2, _c2, _d2, _e2, _f2, _g2, _h2, _i2, _j2, _k2;
2714
2734
  const canRemoveTraveller = adventure.travellers.length > 1;
2715
2735
  const disabledRemoveTitle = canRemoveTraveller ? void 0 : cannotRemoveLastTravellerLabel != null ? cannotRemoveLastTravellerLabel : "Cannot remove last traveller";
2716
2736
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -2725,7 +2745,7 @@ function AdventureSection({
2725
2745
  " ",
2726
2746
  t.lastName
2727
2747
  ] }),
2728
- t.isChild && /* @__PURE__ */ jsxRuntime.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" })
2748
+ t.isChild && /* @__PURE__ */ jsxRuntime.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" })
2729
2749
  ] }),
2730
2750
  t.formUrl && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
2731
2751
  /* @__PURE__ */ jsxRuntime.jsxs(
@@ -2737,7 +2757,7 @@ function AdventureSection({
2737
2757
  className: "flex items-center gap-1 text-xs text-primary hover:text-primary/80 transition-colors font-ui",
2738
2758
  children: [
2739
2759
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ExternalLinkIcon, { className: "w-3 h-3" }),
2740
- "Open"
2760
+ (_b2 = labels == null ? void 0 : labels.openFormLink) != null ? _b2 : "Open"
2741
2761
  ]
2742
2762
  }
2743
2763
  ),
@@ -2747,7 +2767,7 @@ function AdventureSection({
2747
2767
  type: "button",
2748
2768
  onClick: () => handleCopyUrl(t.formUrl),
2749
2769
  className: "flex items-center text-xs text-muted-foreground hover:text-primary transition-colors font-ui",
2750
- "aria-label": "Copy form URL",
2770
+ "aria-label": (_c2 = labels == null ? void 0 : labels.copyFormUrlAria) != null ? _c2 : "Copy form URL",
2751
2771
  children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CopyIcon, { className: "w-3 h-3" })
2752
2772
  }
2753
2773
  )
@@ -2761,7 +2781,7 @@ function AdventureSection({
2761
2781
  "inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-bold font-heading uppercase tracking-wider shrink-0",
2762
2782
  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"
2763
2783
  ),
2764
- children: t.status
2784
+ 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
2765
2785
  }
2766
2786
  ),
2767
2787
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-0.5 shrink-0", children: [
@@ -2777,7 +2797,7 @@ function AdventureSection({
2777
2797
  }
2778
2798
  },
2779
2799
  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",
2780
- "aria-label": `Edit ${t.firstName}`,
2800
+ "aria-label": (_g2 = (_f2 = labels == null ? void 0 : labels.editTravellerAria) == null ? void 0 : _f2.call(labels, t.firstName)) != null ? _g2 : `Edit ${t.firstName}`,
2781
2801
  children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.PencilIcon, { className: "w-3.5 h-3.5" })
2782
2802
  }
2783
2803
  ),
@@ -2800,7 +2820,7 @@ function AdventureSection({
2800
2820
  "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",
2801
2821
  "disabled:opacity-40 disabled:cursor-not-allowed disabled:pointer-events-none disabled:hover:text-muted-foreground disabled:hover:bg-transparent"
2802
2822
  ),
2803
- "aria-label": `Delete ${t.firstName}`,
2823
+ "aria-label": (_i2 = (_h2 = labels == null ? void 0 : labels.deleteTravellerAria) == null ? void 0 : _h2.call(labels, t.firstName)) != null ? _i2 : `Delete ${t.firstName}`,
2804
2824
  children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Trash2Icon, { className: "w-3.5 h-3.5" })
2805
2825
  }
2806
2826
  ),
@@ -2825,7 +2845,7 @@ function AdventureSection({
2825
2845
  "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",
2826
2846
  "disabled:opacity-40 disabled:cursor-not-allowed disabled:pointer-events-none disabled:hover:text-muted-foreground disabled:hover:bg-transparent"
2827
2847
  ),
2828
- "aria-label": `Remove ${t.firstName} from adventure`,
2848
+ "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`,
2829
2849
  children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.UserMinusIcon, { className: "w-3.5 h-3.5" })
2830
2850
  }
2831
2851
  )
@@ -2837,11 +2857,11 @@ function AdventureSection({
2837
2857
  );
2838
2858
  }) }),
2839
2859
  adventure.suggestedTravellers && adventure.suggestedTravellers.length > 0 && (() => {
2840
- var _a2;
2860
+ var _a2, _b2;
2841
2861
  const atCapacity = totalSlots > 0 && adventure.travellers.length >= totalSlots;
2842
2862
  const atCapacityTooltip = atCapacity ? (_a2 = adventure.atCapacityLabel) != null ? _a2 : "Adventure full" : void 0;
2843
2863
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2 pt-2", children: [
2844
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground font-ui", children: "Add to this adventure" }),
2864
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground font-ui", children: (_b2 = labels == null ? void 0 : labels.addToThisAdventure) != null ? _b2 : "Add to this adventure" }),
2845
2865
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2", children: adventure.suggestedTravellers.map((st) => /* @__PURE__ */ jsxRuntime.jsxs(
2846
2866
  "button",
2847
2867
  {
@@ -2868,7 +2888,8 @@ function AdventureSection({
2868
2888
  )) })
2869
2889
  ] });
2870
2890
  })(),
2871
- adventure.registrationNotRequired ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-2 mt-1", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-ui text-muted-foreground", children: (_i = adventure.noRegistrationRequiredLabel) != null ? _i : "No registration required" }) }) : adventure.travellers.length > 0 && totalSlots > 0 && (() => {
2891
+ adventure.registrationNotRequired ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-2 mt-1", children: /* @__PURE__ */ jsxRuntime.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 && (() => {
2892
+ var _a2, _b2;
2872
2893
  const completed = adventure.travellers.filter((t) => t.status === "completed").length;
2873
2894
  const percent = Math.round(completed / totalSlots * 100);
2874
2895
  const isComplete = completed >= totalSlots;
@@ -2887,10 +2908,7 @@ function AdventureSection({
2887
2908
  "text-xs font-semibold font-ui shrink-0 flex items-center gap-1",
2888
2909
  textColor
2889
2910
  ), children: [
2890
- completed,
2891
- " of ",
2892
- totalSlots,
2893
- " travellers registered",
2911
+ (_b2 = (_a2 = labels == null ? void 0 : labels.travellersRegistered) == null ? void 0 : _a2.call(labels, { completed, total: totalSlots })) != null ? _b2 : `${completed} of ${totalSlots} travellers registered`,
2894
2912
  isComplete ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckIcon, { className: "w-3 h-3" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertTriangleIcon, { className: "w-3 h-3" })
2895
2913
  ] })
2896
2914
  ] });
@@ -3200,52 +3218,56 @@ function OrderSummary({
3200
3218
  total,
3201
3219
  depositInfo,
3202
3220
  balanceDueLabel,
3203
- totalPaidLabel
3221
+ totalPaidLabel,
3222
+ labels
3204
3223
  }) {
3205
- var _a;
3224
+ var _a, _b, _c, _d, _e;
3206
3225
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-2xl border border-border bg-card p-5 lg:p-6 flex flex-col gap-4", children: [
3207
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest", children: "Order Summary" }),
3226
+ /* @__PURE__ */ jsxRuntime.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" }),
3208
3227
  /* @__PURE__ */ jsxRuntime.jsx(Separator, {}),
3209
- adventures.map((adventure, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
3210
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-base font-bold text-foreground font-heading", children: adventure.title }),
3211
- adventure.lineItems && adventure.lineItems.length > 0 && /* @__PURE__ */ jsxRuntime.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__ */ jsxRuntime.jsxs(
3212
- "div",
3213
- {
3214
- className: "flex items-start justify-between gap-3",
3215
- children: [
3216
- /* @__PURE__ */ jsxRuntime.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__ */ jsxRuntime.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__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mt-1", children: [
3244
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-muted-foreground font-sans", children: "Subtotal this adventure" }),
3245
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-semibold text-foreground font-sans", children: adventure.subtotal })
3246
- ] }),
3247
- i < adventures.length - 1 && /* @__PURE__ */ jsxRuntime.jsx(Separator, { className: "mt-2" })
3248
- ] }, adventure.id)),
3228
+ adventures.map((adventure, i) => {
3229
+ var _a2;
3230
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
3231
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-base font-bold text-foreground font-heading", children: adventure.title }),
3232
+ adventure.lineItems && adventure.lineItems.length > 0 && /* @__PURE__ */ jsxRuntime.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__ */ jsxRuntime.jsxs(
3233
+ "div",
3234
+ {
3235
+ className: "flex items-start justify-between gap-3",
3236
+ children: [
3237
+ /* @__PURE__ */ jsxRuntime.jsx(
3238
+ "span",
3239
+ {
3240
+ className: cn(
3241
+ "text-sm font-sans leading-tight",
3242
+ item.isBold ? "font-semibold text-foreground" : "text-muted-foreground"
3243
+ ),
3244
+ children: item.label
3245
+ }
3246
+ ),
3247
+ /* @__PURE__ */ jsxRuntime.jsxs(
3248
+ "span",
3249
+ {
3250
+ className: cn(
3251
+ "text-sm font-sans shrink-0",
3252
+ item.isDiscount ? "text-green-600 dark:text-green-400" : item.isBold ? "font-semibold text-foreground" : "text-foreground"
3253
+ ),
3254
+ children: [
3255
+ item.isDiscount ? "\u2212" : "",
3256
+ item.price
3257
+ ]
3258
+ }
3259
+ )
3260
+ ]
3261
+ },
3262
+ j
3263
+ )) }),
3264
+ adventure.subtotal && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mt-1", children: [
3265
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-muted-foreground font-sans", children: (_a2 = labels == null ? void 0 : labels.subtotalThisAdventure) != null ? _a2 : "Subtotal this adventure" }),
3266
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-semibold text-foreground font-sans", children: adventure.subtotal })
3267
+ ] }),
3268
+ i < adventures.length - 1 && /* @__PURE__ */ jsxRuntime.jsx(Separator, { className: "mt-2" })
3269
+ ] }, adventure.id);
3270
+ }),
3249
3271
  /* @__PURE__ */ jsxRuntime.jsx(Separator, {}),
3250
3272
  summaryLineItems && summaryLineItems.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
3251
3273
  summaryLineItems.map((item, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
@@ -3276,11 +3298,11 @@ function OrderSummary({
3276
3298
  /* @__PURE__ */ jsxRuntime.jsx(Separator, {})
3277
3299
  ] }),
3278
3300
  subtotal && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
3279
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-muted-foreground font-sans", children: "Subtotal" }),
3301
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-muted-foreground font-sans", children: (_b = labels == null ? void 0 : labels.subtotal) != null ? _b : "Subtotal" }),
3280
3302
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-semibold text-foreground font-sans", children: subtotal })
3281
3303
  ] }),
3282
3304
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between pt-1", children: [
3283
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-base font-bold text-foreground font-heading", children: "Total" }),
3305
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-base font-bold text-foreground font-heading", children: (_c = labels == null ? void 0 : labels.total) != null ? _c : "Total" }),
3284
3306
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-2xl font-black text-primary font-heading", children: total })
3285
3307
  ] }),
3286
3308
  (depositInfo == null ? void 0 : depositInfo.totalPaid) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
@@ -3290,7 +3312,7 @@ function OrderSummary({
3290
3312
  depositInfo && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2 rounded-lg bg-muted/50 border border-border p-4", children: [
3291
3313
  !depositInfo.hideDepositLine && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
3292
3314
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-sm text-muted-foreground font-sans", children: [
3293
- (_a = depositInfo.depositLabel) != null ? _a : "Deposit",
3315
+ (_d = depositInfo.depositLabel) != null ? _d : "Deposit",
3294
3316
  " (",
3295
3317
  depositInfo.depositPercent,
3296
3318
  "%)"
@@ -3298,7 +3320,7 @@ function OrderSummary({
3298
3320
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-semibold text-foreground font-sans", children: depositInfo.depositAmount })
3299
3321
  ] }),
3300
3322
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
3301
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-muted-foreground font-sans", children: "Remaining balance" }),
3323
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-muted-foreground font-sans", children: (_e = labels == null ? void 0 : labels.remainingBalance) != null ? _e : "Remaining balance" }),
3302
3324
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-semibold text-foreground font-sans", children: depositInfo.remainingAmount })
3303
3325
  ] }),
3304
3326
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
@@ -3351,9 +3373,10 @@ function BookingDetails({
3351
3373
  logoAlt,
3352
3374
  onSignOut,
3353
3375
  signOutLabel,
3376
+ labels,
3354
3377
  className
3355
3378
  }) {
3356
- var _a, _b, _c, _d;
3379
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u;
3357
3380
  const people = totalPeople(adventures);
3358
3381
  const hasSubmitAddTraveller = !!onSubmitAddTraveller;
3359
3382
  const hasSubmitEditTraveller = !!onSubmitEditTraveller;
@@ -3463,15 +3486,12 @@ function BookingDetails({
3463
3486
  bookingId
3464
3487
  ] })
3465
3488
  ] }),
3466
- /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm text-muted-foreground font-sans", children: [
3467
- "Created on ",
3468
- createdAt
3469
- ] })
3489
+ /* @__PURE__ */ jsxRuntime.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}` })
3470
3490
  ] }),
3471
3491
  /* @__PURE__ */ jsxRuntime.jsx(StatusBadge, { status, label: statusLabel })
3472
3492
  ] }),
3473
3493
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-3 gap-3", children: [
3474
- /* @__PURE__ */ jsxRuntime.jsxs(InfoCard, { label: "Contact", children: [
3494
+ /* @__PURE__ */ jsxRuntime.jsxs(InfoCard, { label: (_c = labels == null ? void 0 : labels.contactInfo) != null ? _c : "Contact", children: [
3475
3495
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-semibold", children: contact.name }),
3476
3496
  contact.email && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground font-sans truncate", children: contact.email })
3477
3497
  ] }),
@@ -3479,7 +3499,7 @@ function BookingDetails({
3479
3499
  AgentContactCard,
3480
3500
  {
3481
3501
  layout: "compact",
3482
- name: (_a = agent == null ? void 0 : agent.name) != null ? _a : agentName,
3502
+ name: (_d = agent == null ? void 0 : agent.name) != null ? _d : agentName,
3483
3503
  avatar: agent == null ? void 0 : agent.avatar,
3484
3504
  email: agent == null ? void 0 : agent.email,
3485
3505
  whatsappUrl: agent == null ? void 0 : agent.whatsappUrl,
@@ -3489,27 +3509,20 @@ function BookingDetails({
3489
3509
  legacyContactLabel: agentContactLabel
3490
3510
  }
3491
3511
  ),
3492
- /* @__PURE__ */ jsxRuntime.jsxs(InfoCard, { label: "Total People", children: [
3512
+ /* @__PURE__ */ jsxRuntime.jsxs(InfoCard, { label: (_e = labels == null ? void 0 : labels.totalPeople) != null ? _e : "Total People", children: [
3493
3513
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
3494
3514
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.UsersIcon, { className: "w-4 h-4 text-primary shrink-0" }),
3495
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-semibold", children: [
3496
- people.total,
3497
- " person(s)"
3498
- ] })
3515
+ /* @__PURE__ */ jsxRuntime.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)` })
3499
3516
  ] }),
3500
3517
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground font-sans", children: [
3501
- people.adults > 0 ? `Adults: ${people.adults}` : null,
3502
- people.children > 0 ? `Children: ${people.children}` : null,
3503
- people.seniors > 0 ? `Seniors: ${people.seniors}` : null
3518
+ 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,
3519
+ 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,
3520
+ 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
3504
3521
  ].filter(Boolean).join(" \xB7 ") })
3505
3522
  ] })
3506
3523
  ] }),
3507
3524
  /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "flex flex-col gap-4", children: [
3508
- /* @__PURE__ */ jsxRuntime.jsxs("h2", { className: "text-xs font-bold text-muted-foreground font-heading uppercase tracking-widest", children: [
3509
- "Adventures (",
3510
- adventures.length,
3511
- ")"
3512
- ] }),
3525
+ /* @__PURE__ */ jsxRuntime.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})` }),
3513
3526
  adventures.map((adventure) => /* @__PURE__ */ jsxRuntime.jsx(
3514
3527
  AdventureSection,
3515
3528
  {
@@ -3527,7 +3540,8 @@ function BookingDetails({
3527
3540
  onRequestOpenAddModal: handleRequestOpenAddModal,
3528
3541
  onRequestOpenEditModal: handleRequestOpenEditModal,
3529
3542
  onRequestOpenDeleteModal: handleRequestOpenDeleteModal,
3530
- cannotRemoveLastTravellerLabel
3543
+ cannotRemoveLastTravellerLabel,
3544
+ labels
3531
3545
  },
3532
3546
  adventure.id
3533
3547
  ))
@@ -3541,7 +3555,8 @@ function BookingDetails({
3541
3555
  total,
3542
3556
  depositInfo,
3543
3557
  balanceDueLabel,
3544
- totalPaidLabel
3558
+ totalPaidLabel,
3559
+ labels
3545
3560
  }
3546
3561
  ),
3547
3562
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-2xl border border-border bg-card p-5 lg:p-6 flex flex-col gap-4", children: [
@@ -3553,15 +3568,15 @@ function BookingDetails({
3553
3568
  ] }),
3554
3569
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
3555
3570
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-bold text-muted-foreground/60 font-heading uppercase tracking-widest mb-0.5", children: "Email" }),
3556
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-foreground font-sans truncate", children: (_b = contact.email) != null ? _b : "\u2014" })
3571
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-foreground font-sans truncate", children: (_s = contact.email) != null ? _s : "\u2014" })
3557
3572
  ] }),
3558
3573
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
3559
3574
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-bold text-muted-foreground/60 font-heading uppercase tracking-widest mb-0.5", children: "Phone" }),
3560
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-foreground font-sans", children: (_c = contact.phone) != null ? _c : "\u2014" })
3575
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-foreground font-sans", children: (_t = contact.phone) != null ? _t : "\u2014" })
3561
3576
  ] }),
3562
3577
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
3563
3578
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-bold text-muted-foreground/60 font-heading uppercase tracking-widest mb-0.5", children: "Country" }),
3564
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-foreground font-sans", children: (_d = contact.country) != null ? _d : "\u2014" })
3579
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-foreground font-sans", children: (_u = contact.country) != null ? _u : "\u2014" })
3565
3580
  ] }),
3566
3581
  contact.passport && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
3567
3582
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-bold text-muted-foreground/60 font-heading uppercase tracking-widest mb-0.5", children: "Passport / CPF" }),