@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.cjs +159 -44
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +80 -3
- package/dist/index.d.ts +80 -3
- package/dist/index.js +158 -45
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
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
|
-
|
|
12544
|
-
|
|
12545
|
-
id: "
|
|
12546
|
-
|
|
12547
|
-
|
|
12548
|
-
|
|
12549
|
-
|
|
12550
|
-
|
|
12551
|
-
|
|
12552
|
-
|
|
12553
|
-
|
|
12554
|
-
|
|
12555
|
-
|
|
12556
|
-
|
|
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
|
|
12589
|
-
const target = (
|
|
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
|
|
12611
|
-
const navH = ((
|
|
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
|
|
12737
|
+
var _a2, _b2, _c2;
|
|
12626
12738
|
const el = document.getElementById("trip-booking-form");
|
|
12627
12739
|
if (!el) return;
|
|
12628
|
-
const navHeight = ((
|
|
12629
|
-
const scrollEl = (
|
|
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
|
|
12754
|
+
var _a2, _b2, _c2;
|
|
12643
12755
|
const el = document.getElementById(`trip-section-${id}`);
|
|
12644
12756
|
if (!el) return;
|
|
12645
|
-
const navHeight = (
|
|
12646
|
-
const scrollEl = (
|
|
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
|
|
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: (
|
|
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
|