@planetaexo/design-system 0.46.2 → 0.48.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.js CHANGED
@@ -7360,6 +7360,37 @@ function BookingForm({
7360
7360
  }
7361
7361
  );
7362
7362
  }
7363
+
7364
+ // src/lib/cpf.ts
7365
+ function formatCpf(value) {
7366
+ const digits = value.replace(/\D/g, "").slice(0, 11);
7367
+ if (digits.length <= 3) return digits;
7368
+ if (digits.length <= 6) return `${digits.slice(0, 3)}.${digits.slice(3)}`;
7369
+ if (digits.length <= 9) {
7370
+ return `${digits.slice(0, 3)}.${digits.slice(3, 6)}.${digits.slice(6)}`;
7371
+ }
7372
+ return `${digits.slice(0, 3)}.${digits.slice(3, 6)}.${digits.slice(6, 9)}-${digits.slice(9)}`;
7373
+ }
7374
+ function validateCpf(value) {
7375
+ const digits = value.replace(/\D/g, "");
7376
+ if (digits.length !== 11) return false;
7377
+ if (/^(\d)\1{10}$/.test(digits)) return false;
7378
+ let sum = 0;
7379
+ for (let i = 0; i < 9; i++) {
7380
+ sum += parseInt(digits[i], 10) * (10 - i);
7381
+ }
7382
+ let remainder = sum % 11;
7383
+ const firstDigit = remainder < 2 ? 0 : 11 - remainder;
7384
+ if (firstDigit !== parseInt(digits[9], 10)) return false;
7385
+ sum = 0;
7386
+ for (let i = 0; i < 10; i++) {
7387
+ sum += parseInt(digits[i], 10) * (11 - i);
7388
+ }
7389
+ remainder = sum % 11;
7390
+ const secondDigit = remainder < 2 ? 0 : 11 - remainder;
7391
+ if (secondDigit !== parseInt(digits[10], 10)) return false;
7392
+ return true;
7393
+ }
7363
7394
  var DEFAULT_LABELS11 = {
7364
7395
  formSubtitle: "To confirm your participation, please complete this short form. It's required for all travellers and helps us coordinate logistics with our local partners and tailor the experience to you.",
7365
7396
  detailsSectionTitle: "Your details",
@@ -7982,6 +8013,82 @@ function FieldRenderer({
7982
8013
  }
7983
8014
  );
7984
8015
  }
8016
+ if (field.type === "address") {
8017
+ return /* @__PURE__ */ jsx(
8018
+ FloatingInput,
8019
+ {
8020
+ label: field.label,
8021
+ required: field.required,
8022
+ disabled,
8023
+ autoComplete: "address-line1",
8024
+ value: typeof value === "string" ? value : "",
8025
+ onChange: (e) => onChange(e.target.value),
8026
+ error
8027
+ }
8028
+ );
8029
+ }
8030
+ if (field.type === "addressLine2") {
8031
+ return /* @__PURE__ */ jsx(
8032
+ FloatingInput,
8033
+ {
8034
+ label: field.label,
8035
+ required: field.required,
8036
+ disabled,
8037
+ autoComplete: "address-line2",
8038
+ value: typeof value === "string" ? value : "",
8039
+ onChange: (e) => onChange(e.target.value),
8040
+ error
8041
+ }
8042
+ );
8043
+ }
8044
+ if (field.type === "city") {
8045
+ return /* @__PURE__ */ jsx(
8046
+ FloatingInput,
8047
+ {
8048
+ label: field.label,
8049
+ required: field.required,
8050
+ disabled,
8051
+ autoComplete: "address-level2",
8052
+ value: typeof value === "string" ? value : "",
8053
+ onChange: (e) => onChange(e.target.value),
8054
+ error
8055
+ }
8056
+ );
8057
+ }
8058
+ if (field.type === "postalCode") {
8059
+ return /* @__PURE__ */ jsx(
8060
+ FloatingInput,
8061
+ {
8062
+ label: field.label,
8063
+ required: field.required,
8064
+ disabled,
8065
+ autoComplete: "postal-code",
8066
+ value: typeof value === "string" ? value : "",
8067
+ onChange: (e) => onChange(e.target.value),
8068
+ error
8069
+ }
8070
+ );
8071
+ }
8072
+ if (field.type === "document") {
8073
+ const raw = typeof value === "string" ? value : "";
8074
+ const displayValue = validateCpf(raw) ? formatCpf(raw) : raw;
8075
+ return /* @__PURE__ */ jsx(
8076
+ FloatingInput,
8077
+ {
8078
+ label: field.label,
8079
+ required: field.required,
8080
+ disabled,
8081
+ autoComplete: "off",
8082
+ value: displayValue,
8083
+ onChange: (e) => {
8084
+ const next = e.target.value;
8085
+ const hasLetters = /[a-zA-Z]/.test(next);
8086
+ onChange(hasLetters ? next : next.replace(/\D/g, ""));
8087
+ },
8088
+ error
8089
+ }
8090
+ );
8091
+ }
7985
8092
  const htmlType = field.label.toLowerCase().includes("mail") ? "email" : "text";
7986
8093
  return /* @__PURE__ */ jsx(
7987
8094
  FloatingInput,
@@ -12492,6 +12599,7 @@ function TripPage({
12492
12599
  faqs,
12493
12600
  faqInitialCount = 5,
12494
12601
  sectionIcons,
12602
+ labels,
12495
12603
  reviews,
12496
12604
  trustpilot,
12497
12605
  trustpilotMini,
@@ -12510,6 +12618,7 @@ function TripPage({
12510
12618
  features,
12511
12619
  className
12512
12620
  }) {
12621
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p;
12513
12622
  const [activeSection, setActiveSection] = React28.useState("");
12514
12623
  const [accordionValue, setAccordionValue] = React28.useState([]);
12515
12624
  const [faqsExpanded, setFaqsExpanded] = React28.useState(false);
@@ -12539,21 +12648,24 @@ function TripPage({
12539
12648
  const pricingBarRef = React28.useRef(null);
12540
12649
  const galleryRef = React28.useRef(null);
12541
12650
  const sections = React28.useMemo(
12542
- () => [
12543
- { id: "overview", label: "Overview", show: !!(overview || (overviewHighlights == null ? void 0 : overviewHighlights.length)) },
12544
- {
12545
- id: "itinerary",
12546
- label: "Itinerary",
12547
- show: !!((itineraryDays == null ? void 0 : itineraryDays.length) || (itinerary == null ? void 0 : itinerary.length))
12548
- },
12549
- { id: "included", label: "What is Included", show: !!(included == null ? void 0 : included.length) },
12550
- { id: "what-to-bring", label: "What to Bring", show: !!(whatToBring == null ? void 0 : whatToBring.length) },
12551
- { id: "when-it-operates", label: "When this tour operates", show: !!whenItOperates },
12552
- { id: "accommodation", label: "Accommodation", show: !!accommodation },
12553
- { id: "terms", label: "Terms", show: !!termsAndConditions },
12554
- { id: "faq", label: "FAQ", show: !!(faqs == null ? void 0 : faqs.length) },
12555
- { id: "reviews", label: "Reviews", show: !!(trustpilot || (reviews == null ? void 0 : reviews.length)) }
12556
- ].filter((s) => s.show),
12651
+ () => {
12652
+ var _a2, _b2, _c2, _d2, _e2, _f2, _g2, _h2, _i2;
12653
+ return [
12654
+ { id: "overview", label: (_a2 = labels == null ? void 0 : labels.overview) != null ? _a2 : "Overview", show: !!(overview || (overviewHighlights == null ? void 0 : overviewHighlights.length)) },
12655
+ {
12656
+ id: "itinerary",
12657
+ label: (_b2 = labels == null ? void 0 : labels.itinerary) != null ? _b2 : "Itinerary",
12658
+ show: !!((itineraryDays == null ? void 0 : itineraryDays.length) || (itinerary == null ? void 0 : itinerary.length))
12659
+ },
12660
+ { id: "included", label: (_c2 = labels == null ? void 0 : labels.whatIsIncluded) != null ? _c2 : "What is Included", show: !!(included == null ? void 0 : included.length) },
12661
+ { id: "what-to-bring", label: (_d2 = labels == null ? void 0 : labels.whatToBring) != null ? _d2 : "What to Bring", show: !!(whatToBring == null ? void 0 : whatToBring.length) },
12662
+ { id: "when-it-operates", label: (_e2 = labels == null ? void 0 : labels.whenItOperates) != null ? _e2 : "When this tour operates", show: !!whenItOperates },
12663
+ { id: "accommodation", label: (_f2 = labels == null ? void 0 : labels.accommodation) != null ? _f2 : "Accommodation", show: !!accommodation },
12664
+ { id: "terms", label: (_g2 = labels == null ? void 0 : labels.terms) != null ? _g2 : "Terms", show: !!termsAndConditions },
12665
+ { id: "faq", label: (_h2 = labels == null ? void 0 : labels.faq) != null ? _h2 : "FAQ", show: !!(faqs == null ? void 0 : faqs.length) },
12666
+ { id: "reviews", label: (_i2 = labels == null ? void 0 : labels.reviews) != null ? _i2 : "Reviews", show: !!(trustpilot || (reviews == null ? void 0 : reviews.length)) }
12667
+ ].filter((s) => s.show);
12668
+ },
12557
12669
  // eslint-disable-next-line react-hooks/exhaustive-deps
12558
12670
  []
12559
12671
  );
@@ -12585,8 +12697,8 @@ function TripPage({
12585
12697
  }, [isFloating]);
12586
12698
  React28.useEffect(() => {
12587
12699
  const check = () => {
12588
- var _a;
12589
- const target = (_a = galleryRef.current) != null ? _a : pricingBarRef.current;
12700
+ var _a2;
12701
+ const target = (_a2 = galleryRef.current) != null ? _a2 : pricingBarRef.current;
12590
12702
  if (!target) return;
12591
12703
  setPricingBarVisible(target.getBoundingClientRect().top < window.innerHeight * 0.75);
12592
12704
  };
@@ -12607,8 +12719,8 @@ function TripPage({
12607
12719
  if (sections.length === 0) return;
12608
12720
  setActiveSection(sections[0].id);
12609
12721
  const update = () => {
12610
- var _a, _b;
12611
- const navH = ((_b = (_a = navRef.current) == null ? void 0 : _a.offsetHeight) != null ? _b : 56) + 20;
12722
+ var _a2, _b2;
12723
+ const navH = ((_b2 = (_a2 = navRef.current) == null ? void 0 : _a2.offsetHeight) != null ? _b2 : 56) + 20;
12612
12724
  for (const { id } of [...sections].reverse()) {
12613
12725
  const el = document.getElementById(`trip-section-${id}`);
12614
12726
  if (el && el.getBoundingClientRect().top <= navH) {
@@ -12622,11 +12734,11 @@ function TripPage({
12622
12734
  return () => document.removeEventListener("scroll", update, { capture: true });
12623
12735
  }, [sections]);
12624
12736
  const scrollToBookingForm = () => {
12625
- var _a, _b, _c;
12737
+ var _a2, _b2, _c2;
12626
12738
  const el = document.getElementById("trip-booking-form");
12627
12739
  if (!el) return;
12628
- const navHeight = ((_b = (_a = navRef.current) == null ? void 0 : _a.offsetHeight) != null ? _b : 56) + 16;
12629
- const scrollEl = (_c = navRef.current) == null ? void 0 : _c.closest("main");
12740
+ const navHeight = ((_b2 = (_a2 = navRef.current) == null ? void 0 : _a2.offsetHeight) != null ? _b2 : 56) + 16;
12741
+ const scrollEl = (_c2 = navRef.current) == null ? void 0 : _c2.closest("main");
12630
12742
  const elTop = el.getBoundingClientRect().top;
12631
12743
  const containerTop = scrollEl ? scrollEl.getBoundingClientRect().top : 0;
12632
12744
  const currentScroll = scrollEl ? scrollEl.scrollTop : window.scrollY;
@@ -12639,11 +12751,11 @@ function TripPage({
12639
12751
  };
12640
12752
  const scrollToSection = (id) => {
12641
12753
  const performScroll = () => {
12642
- var _a, _b, _c;
12754
+ var _a2, _b2, _c2;
12643
12755
  const el = document.getElementById(`trip-section-${id}`);
12644
12756
  if (!el) return;
12645
- const navHeight = (_b = (_a = navRef.current) == null ? void 0 : _a.offsetHeight) != null ? _b : 56;
12646
- const scrollEl = (_c = navRef.current) == null ? void 0 : _c.closest("main");
12757
+ const navHeight = (_b2 = (_a2 = navRef.current) == null ? void 0 : _a2.offsetHeight) != null ? _b2 : 56;
12758
+ const scrollEl = (_c2 = navRef.current) == null ? void 0 : _c2.closest("main");
12647
12759
  const currentScroll = scrollEl ? scrollEl.scrollTop : window.scrollY;
12648
12760
  const elTop = el.getBoundingClientRect().top;
12649
12761
  const containerTop = scrollEl ? scrollEl.getBoundingClientRect().top : 0;
@@ -12712,7 +12824,7 @@ function TripPage({
12712
12824
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col lg:flex-row gap-8 mt-4", children: [
12713
12825
  /* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0 space-y-12 pb-12", children: [
12714
12826
  (overview || (overviewHighlights == null ? void 0 : overviewHighlights.length)) && /* @__PURE__ */ jsxs("section", { id: "trip-section-overview", className: "scroll-mt-20", children: [
12715
- /* @__PURE__ */ jsx("h2", { className: "text-xl font-bold text-foreground font-heading mb-4", children: "Overview" }),
12827
+ /* @__PURE__ */ jsx("h2", { className: "text-xl font-bold text-foreground font-heading mb-4", children: (_a = labels == null ? void 0 : labels.overview) != null ? _a : "Overview" }),
12716
12828
  overview && /* @__PURE__ */ jsx("div", { className: "text-lg text-foreground leading-relaxed space-y-3 [&_strong]:font-semibold [&_a]:text-primary [&_a]:underline", children: overview }),
12717
12829
  overviewHighlights && overviewHighlights.length > 0 && /* @__PURE__ */ jsx("ul", { className: cn("flex flex-col gap-5", overview && "mt-8"), children: overviewHighlights.map((h, i) => /* @__PURE__ */ jsxs("li", { className: "flex items-start gap-4", children: [
12718
12830
  h.icon && /* @__PURE__ */ jsx("span", { className: "flex h-10 w-10 shrink-0 items-center justify-center text-foreground [&_svg]:h-8 [&_svg]:w-8", children: h.icon }),
@@ -12727,7 +12839,7 @@ function TripPage({
12727
12839
  ] })
12728
12840
  ] }),
12729
12841
  itineraryDays && itineraryDays.length > 0 ? /* @__PURE__ */ jsxs("section", { id: "trip-section-itinerary", className: "scroll-mt-20", children: [
12730
- /* @__PURE__ */ jsx("h2", { className: "text-xl font-bold text-foreground font-heading mb-6", children: "Itinerary" }),
12842
+ /* @__PURE__ */ jsx("h2", { className: "text-xl font-bold text-foreground font-heading mb-6", children: (_b = labels == null ? void 0 : labels.itinerary) != null ? _b : "Itinerary" }),
12731
12843
  /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-12", children: itineraryDays.map((day) => /* @__PURE__ */ jsx(
12732
12844
  ItineraryDay,
12733
12845
  __spreadProps(__spreadValues({}, day), {
@@ -12736,20 +12848,20 @@ function TripPage({
12736
12848
  day.dayNumber
12737
12849
  )) })
12738
12850
  ] }) : itinerary && itinerary.length > 0 && /* @__PURE__ */ jsxs("section", { id: "trip-section-itinerary", className: "scroll-mt-20", children: [
12739
- /* @__PURE__ */ jsx("h2", { className: "text-xl font-bold text-foreground font-heading mb-6", children: "Itinerary" }),
12851
+ /* @__PURE__ */ jsx("h2", { className: "text-xl font-bold text-foreground font-heading mb-6", children: (_c = labels == null ? void 0 : labels.itinerary) != null ? _c : "Itinerary" }),
12740
12852
  /* @__PURE__ */ jsx(ItineraryTimeline, { steps: itinerary })
12741
12853
  ] }),
12742
12854
  included && included.length > 0 && /* @__PURE__ */ jsxs("section", { id: "trip-section-included", className: "scroll-mt-20", children: [
12743
12855
  /* @__PURE__ */ jsxs("h2", { className: "text-xl font-bold text-foreground font-heading mb-4 flex items-center gap-2", children: [
12744
12856
  (sectionIcons == null ? void 0 : sectionIcons.whatIsIncluded) ? /* @__PURE__ */ jsx("span", { className: "text-primary [&>svg]:h-5 [&>svg]:w-5", children: sectionIcons.whatIsIncluded }) : /* @__PURE__ */ jsx(PackageIcon, { className: "h-5 w-5 text-primary" }),
12745
- "Included"
12857
+ (_d = labels == null ? void 0 : labels.whatIsIncluded) != null ? _d : "Included"
12746
12858
  ] }),
12747
12859
  /* @__PURE__ */ jsx(Checklist, { items: included })
12748
12860
  ] }),
12749
12861
  notIncluded && notIncluded.length > 0 && /* @__PURE__ */ jsxs("section", { id: "trip-section-not-included", className: "scroll-mt-20", children: [
12750
12862
  /* @__PURE__ */ jsxs("h2", { className: "text-xl font-bold text-foreground font-heading mb-4 flex items-center gap-2", children: [
12751
12863
  /* @__PURE__ */ jsx(XIcon, { className: "h-5 w-5 text-muted-foreground" }),
12752
- "Not included"
12864
+ (_e = labels == null ? void 0 : labels.notIncluded) != null ? _e : "Not included"
12753
12865
  ] }),
12754
12866
  /* @__PURE__ */ jsx(
12755
12867
  Checklist,
@@ -12776,7 +12888,7 @@ function TripPage({
12776
12888
  children: [
12777
12889
  /* @__PURE__ */ jsx(AccordionTrigger, { className: "py-5 text-xl font-bold text-foreground font-heading hover:no-underline", children: /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2", children: [
12778
12890
  (sectionIcons == null ? void 0 : sectionIcons.whenItOperates) ? /* @__PURE__ */ jsx("span", { className: "text-primary [&>svg]:h-5 [&>svg]:w-5", children: sectionIcons.whenItOperates }) : /* @__PURE__ */ jsx(CalendarIcon, { className: "h-5 w-5 text-primary" }),
12779
- "When this tour operates"
12891
+ (_f = labels == null ? void 0 : labels.whenItOperates) != null ? _f : "When this tour operates"
12780
12892
  ] }) }),
12781
12893
  /* @__PURE__ */ jsx(AccordionContent, { className: "pb-6", children: /* @__PURE__ */ jsx("div", { className: "text-base text-foreground leading-relaxed space-y-3 [&_strong]:font-bold [&_a]:text-primary [&_a]:underline", children: whenItOperates }) })
12782
12894
  ]
@@ -12791,7 +12903,7 @@ function TripPage({
12791
12903
  children: [
12792
12904
  /* @__PURE__ */ jsx(AccordionTrigger, { className: "py-5 text-xl font-bold text-foreground font-heading hover:no-underline", children: /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2", children: [
12793
12905
  (sectionIcons == null ? void 0 : sectionIcons.accommodation) ? /* @__PURE__ */ jsx("span", { className: "text-primary [&>svg]:h-5 [&>svg]:w-5", children: sectionIcons.accommodation }) : /* @__PURE__ */ jsx(BedDoubleIcon, { className: "h-5 w-5 text-primary" }),
12794
- "Accommodation"
12906
+ (_g = labels == null ? void 0 : labels.accommodation) != null ? _g : "Accommodation"
12795
12907
  ] }) }),
12796
12908
  /* @__PURE__ */ jsx(AccordionContent, { className: "pb-6", children: /* @__PURE__ */ jsx("div", { className: "text-base text-foreground leading-relaxed space-y-3 [&_strong]:font-semibold [&_a]:text-primary [&_a]:underline", children: accommodation }) })
12797
12909
  ]
@@ -12806,7 +12918,7 @@ function TripPage({
12806
12918
  children: [
12807
12919
  /* @__PURE__ */ jsx(AccordionTrigger, { className: "py-5 text-xl font-bold text-foreground font-heading hover:no-underline", children: /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2", children: [
12808
12920
  (sectionIcons == null ? void 0 : sectionIcons.food) ? /* @__PURE__ */ jsx("span", { className: "text-primary [&>svg]:h-5 [&>svg]:w-5", children: sectionIcons.food }) : /* @__PURE__ */ jsx(UtensilsIcon, { className: "h-5 w-5 text-primary" }),
12809
- "Food"
12921
+ (_h = labels == null ? void 0 : labels.food) != null ? _h : "Food"
12810
12922
  ] }) }),
12811
12923
  /* @__PURE__ */ jsx(AccordionContent, { className: "pb-6", children: /* @__PURE__ */ jsx("div", { className: "text-base text-foreground leading-relaxed space-y-3 [&_strong]:font-semibold [&_a]:text-primary [&_a]:underline", children: food }) })
12812
12924
  ]
@@ -12821,7 +12933,7 @@ function TripPage({
12821
12933
  children: [
12822
12934
  /* @__PURE__ */ jsx(AccordionTrigger, { className: "py-5 text-xl font-bold text-foreground font-heading hover:no-underline", children: /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2", children: [
12823
12935
  (sectionIcons == null ? void 0 : sectionIcons.meetingPoint) ? /* @__PURE__ */ jsx("span", { className: "text-primary [&>svg]:h-5 [&>svg]:w-5", children: sectionIcons.meetingPoint }) : /* @__PURE__ */ jsx(MapPinIcon, { className: "h-5 w-5 text-primary" }),
12824
- "Meeting point"
12936
+ (_i = labels == null ? void 0 : labels.meetingPoint) != null ? _i : "Meeting point"
12825
12937
  ] }) }),
12826
12938
  /* @__PURE__ */ jsx(AccordionContent, { className: "pb-6", children: meetingPoint ? /* @__PURE__ */ jsx("div", { className: "text-base text-foreground leading-relaxed space-y-3 [&_strong]:font-semibold [&_a]:text-primary [&_a]:underline", children: meetingPoint }) : /* @__PURE__ */ jsx("div", { className: "space-y-3", children: meetingPoints.map((mp, i) => /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-3 rounded-xl border border-border p-4", children: [
12827
12939
  /* @__PURE__ */ jsx("div", { className: "mt-0.5 flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-primary/10", children: /* @__PURE__ */ jsx(MapPinIcon, { className: "h-4 w-4 text-primary" }) }),
@@ -12843,7 +12955,7 @@ function TripPage({
12843
12955
  children: [
12844
12956
  /* @__PURE__ */ jsx(AccordionTrigger, { className: "py-5 text-xl font-bold text-foreground font-heading hover:no-underline", children: /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2", children: [
12845
12957
  (sectionIcons == null ? void 0 : sectionIcons.howToGetThere) ? /* @__PURE__ */ jsx("span", { className: "text-primary [&>svg]:h-5 [&>svg]:w-5", children: sectionIcons.howToGetThere }) : /* @__PURE__ */ jsx(CompassIcon, { className: "h-5 w-5 text-primary" }),
12846
- "How to get there"
12958
+ (_j = labels == null ? void 0 : labels.howToGetThere) != null ? _j : "How to get there"
12847
12959
  ] }) }),
12848
12960
  /* @__PURE__ */ jsx(AccordionContent, { className: "pb-6", children: /* @__PURE__ */ jsx("div", { className: "text-base text-foreground leading-relaxed space-y-3 [&_strong]:font-semibold [&_a]:text-primary [&_a]:underline", children: howToGetThere }) })
12849
12961
  ]
@@ -12858,7 +12970,7 @@ function TripPage({
12858
12970
  children: [
12859
12971
  /* @__PURE__ */ jsx(AccordionTrigger, { className: "py-5 text-xl font-bold text-foreground font-heading hover:no-underline", children: /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2", children: [
12860
12972
  (sectionIcons == null ? void 0 : sectionIcons.weather) ? /* @__PURE__ */ jsx("span", { className: "text-primary [&>svg]:h-5 [&>svg]:w-5", children: sectionIcons.weather }) : /* @__PURE__ */ jsx(SunIcon, { className: "h-5 w-5 text-primary" }),
12861
- "Weather"
12973
+ (_k = labels == null ? void 0 : labels.weather) != null ? _k : "Weather"
12862
12974
  ] }) }),
12863
12975
  /* @__PURE__ */ jsx(AccordionContent, { className: "pb-6", children: /* @__PURE__ */ jsx("div", { className: "flex items-start gap-3 rounded-xl bg-muted/60 border border-border p-5", children: /* @__PURE__ */ jsx("div", { className: "text-base text-foreground leading-relaxed space-y-2 [&_strong]:font-semibold", children: weather }) }) })
12864
12976
  ]
@@ -12873,7 +12985,7 @@ function TripPage({
12873
12985
  children: [
12874
12986
  /* @__PURE__ */ jsx(AccordionTrigger, { className: "py-5 text-xl font-bold text-foreground font-heading hover:no-underline", children: /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2", children: [
12875
12987
  (sectionIcons == null ? void 0 : sectionIcons.whatToBring) ? /* @__PURE__ */ jsx("span", { className: "text-primary [&>svg]:h-5 [&>svg]:w-5", children: sectionIcons.whatToBring }) : /* @__PURE__ */ jsx(BackpackIcon, { className: "h-5 w-5 text-primary" }),
12876
- "What to bring"
12988
+ (_l = labels == null ? void 0 : labels.whatToBring) != null ? _l : "What to bring"
12877
12989
  ] }) }),
12878
12990
  /* @__PURE__ */ jsx(AccordionContent, { className: "pb-6", children: /* @__PURE__ */ jsx(Checklist, { items: whatToBring, icon: /* @__PURE__ */ jsx(InfoIcon, { className: "h-4 w-4" }) }) })
12879
12991
  ]
@@ -12888,7 +13000,7 @@ function TripPage({
12888
13000
  children: [
12889
13001
  /* @__PURE__ */ jsx(AccordionTrigger, { className: "py-5 text-xl font-bold text-foreground font-heading hover:no-underline", children: /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2", children: [
12890
13002
  (sectionIcons == null ? void 0 : sectionIcons.optionalExtras) ? /* @__PURE__ */ jsx("span", { className: "text-primary [&>svg]:h-5 [&>svg]:w-5", children: sectionIcons.optionalExtras }) : /* @__PURE__ */ jsx(CherryIcon, { className: "h-5 w-5 text-primary" }),
12891
- "Optional extras"
13003
+ (_m = labels == null ? void 0 : labels.optionalExtras) != null ? _m : "Optional extras"
12892
13004
  ] }) }),
12893
13005
  /* @__PURE__ */ jsx(AccordionContent, { className: "pb-6", children: /* @__PURE__ */ jsx("div", { className: "text-base text-foreground leading-relaxed space-y-3 [&_strong]:font-semibold [&_a]:text-primary [&_a]:underline", children: optionalExtras }) })
12894
13006
  ]
@@ -12903,7 +13015,7 @@ function TripPage({
12903
13015
  children: [
12904
13016
  /* @__PURE__ */ jsx(AccordionTrigger, { className: "py-5 text-xl font-bold text-foreground font-heading hover:no-underline", children: /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2", children: [
12905
13017
  (sectionIcons == null ? void 0 : sectionIcons.terms) ? /* @__PURE__ */ jsx("span", { className: "text-primary [&>svg]:h-5 [&>svg]:w-5", children: sectionIcons.terms }) : /* @__PURE__ */ jsx(ReceiptIcon, { className: "h-5 w-5 text-primary" }),
12906
- "Terms & conditions"
13018
+ (_n = labels == null ? void 0 : labels.terms) != null ? _n : "Terms & conditions"
12907
13019
  ] }) }),
12908
13020
  /* @__PURE__ */ jsx(AccordionContent, { className: "pb-6", children: /* @__PURE__ */ jsx("div", { className: "text-base text-foreground leading-relaxed space-y-3 [&_strong]:font-semibold [&_a]:text-primary [&_a]:underline", children: termsAndConditions }) })
12909
13021
  ]
@@ -12913,10 +13025,11 @@ function TripPage({
12913
13025
  }
12914
13026
  ),
12915
13027
  faqs && faqs.length > 0 && (() => {
13028
+ var _a2;
12916
13029
  const visibleFaqs = faqsExpanded ? faqs : faqs.slice(0, faqInitialCount);
12917
13030
  const hiddenCount = faqs.length - visibleFaqs.length;
12918
13031
  return /* @__PURE__ */ jsxs("section", { id: "trip-section-faq", className: "scroll-mt-20", children: [
12919
- /* @__PURE__ */ jsx("h2", { className: "text-xl font-bold text-foreground font-heading mb-6", children: "FAQ" }),
13032
+ /* @__PURE__ */ jsx("h2", { className: "text-xl font-bold text-foreground font-heading mb-6", children: (_a2 = labels == null ? void 0 : labels.faq) != null ? _a2 : "FAQ" }),
12920
13033
  /* @__PURE__ */ jsx(Accordion, { variant: "faq", children: visibleFaqs.map((faq, i) => /* @__PURE__ */ jsxs(AccordionItem, { value: `faq-${i}`, children: [
12921
13034
  /* @__PURE__ */ jsx(AccordionTrigger, { children: faq.question }),
12922
13035
  /* @__PURE__ */ jsx(AccordionContent, { children: faq.answer })
@@ -12947,15 +13060,15 @@ function TripPage({
12947
13060
  })(),
12948
13061
  trustpilot ? /* @__PURE__ */ jsxs("section", { id: "trip-section-reviews", className: "scroll-mt-20", children: [
12949
13062
  /* @__PURE__ */ jsx(Separator, { className: "mb-10" }),
12950
- /* @__PURE__ */ jsx("h2", { className: "text-xl font-bold text-foreground font-heading mb-5", children: "What our guests think" }),
13063
+ /* @__PURE__ */ jsx("h2", { className: "text-xl font-bold text-foreground font-heading mb-5", children: (_o = labels == null ? void 0 : labels.reviews) != null ? _o : "What our guests think" }),
12951
13064
  /* @__PURE__ */ jsx(TrustpilotEmbed, { config: trustpilot })
12952
13065
  ] }) : reviews && reviews.length > 0 && /* @__PURE__ */ jsxs("section", { id: "trip-section-reviews", className: "scroll-mt-20", children: [
12953
13066
  /* @__PURE__ */ jsx(Separator, { className: "mb-10" }),
12954
- /* @__PURE__ */ jsx("h2", { className: "text-xl font-bold text-foreground font-heading mb-5", children: "What our guests think" }),
13067
+ /* @__PURE__ */ jsx("h2", { className: "text-xl font-bold text-foreground font-heading mb-5", children: (_p = labels == null ? void 0 : labels.reviews) != null ? _p : "What our guests think" }),
12955
13068
  /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-4", children: reviews.map((r, i) => {
12956
- var _a;
13069
+ var _a2;
12957
13070
  return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-3 rounded-xl border border-border p-5", children: [
12958
- /* @__PURE__ */ jsx(Stars, { count: (_a = r.rating) != null ? _a : 5 }),
13071
+ /* @__PURE__ */ jsx(Stars, { count: (_a2 = r.rating) != null ? _a2 : 5 }),
12959
13072
  /* @__PURE__ */ jsxs("p", { className: "text-base text-foreground leading-relaxed line-clamp-4", children: [
12960
13073
  "\u201C",
12961
13074
  r.text,
@@ -13867,6 +13980,6 @@ function LeadCapturePopup({
13867
13980
  );
13868
13981
  }
13869
13982
 
13870
- export { ActivityCard, AgentContactCard, Alert, BirthDateField, BookingAdventureCard, BookingConfirmedCard, BookingCreatedEmail, BookingDetails, BookingForm, BookingOtpEmail, BookingPaymentConfirmationEmail, BookingShell, BookingSummary, Button, COUNTRIES, CounterField, CountrySearchField, DEFAULT_HEADER_LINKS, DEFAULT_LANGUAGES, DatePickerField, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, FilterPanel, FloatingInput, FloatingSelect, Itinerary, ItineraryDay, LOGO_PLANETAEXO_DATA_URI, LeadCapturePopup, MenuTrip, OTPCodeInput, Offer, OfferAdventureCard, PartnerBookingCreatedEmail, PartnerConfirmationEmail, PaymentAmountSelector, PaymentDetailsBlock, PaymentMethodSelector, PaymentModalShell, PaymentReceiptEmail, PaymentReminderEmail, PhoneCountrySelect, PhotoGallery, PricingTrip, RegistrationForm, RegistrationProgressBar, RegistrationReminderEmail, RegistrationReminderIndividualEmail, RegistrationSuccessCard, SiteHeader, TERMS_ACCEPT_KEY, TermsSection, ThemeToggle, Toast, TransferDetailsBlock, TravellerFormInviteEmail, TripCard, TripHeader, TripPage, TrustpilotEmbed, buttonVariants, cn, emailTokens, getStripeAppearance, itineraryDaySpecIcons, stripeAppearance, wrapEmailHtml };
13983
+ export { ActivityCard, AgentContactCard, Alert, BirthDateField, BookingAdventureCard, BookingConfirmedCard, BookingCreatedEmail, BookingDetails, BookingForm, BookingOtpEmail, BookingPaymentConfirmationEmail, BookingShell, BookingSummary, Button, COUNTRIES, CounterField, CountrySearchField, DEFAULT_HEADER_LINKS, DEFAULT_LANGUAGES, DatePickerField, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, FilterPanel, FloatingInput, FloatingSelect, Itinerary, ItineraryDay, LOGO_PLANETAEXO_DATA_URI, LeadCapturePopup, MenuTrip, OTPCodeInput, Offer, OfferAdventureCard, PartnerBookingCreatedEmail, PartnerConfirmationEmail, PaymentAmountSelector, PaymentDetailsBlock, PaymentMethodSelector, PaymentModalShell, PaymentReceiptEmail, PaymentReminderEmail, PhoneCountrySelect, PhotoGallery, PricingTrip, RegistrationForm, RegistrationProgressBar, RegistrationReminderEmail, RegistrationReminderIndividualEmail, RegistrationSuccessCard, SiteHeader, TERMS_ACCEPT_KEY, TermsSection, ThemeToggle, Toast, TransferDetailsBlock, TravellerFormInviteEmail, TripCard, TripHeader, TripPage, TrustpilotEmbed, buttonVariants, cn, emailTokens, formatCpf, getStripeAppearance, itineraryDaySpecIcons, stripeAppearance, validateCpf, wrapEmailHtml };
13871
13984
  //# sourceMappingURL=index.js.map
13872
13985
  //# sourceMappingURL=index.js.map