@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.cjs
CHANGED
|
@@ -7381,6 +7381,37 @@ function BookingForm({
|
|
|
7381
7381
|
}
|
|
7382
7382
|
);
|
|
7383
7383
|
}
|
|
7384
|
+
|
|
7385
|
+
// src/lib/cpf.ts
|
|
7386
|
+
function formatCpf(value) {
|
|
7387
|
+
const digits = value.replace(/\D/g, "").slice(0, 11);
|
|
7388
|
+
if (digits.length <= 3) return digits;
|
|
7389
|
+
if (digits.length <= 6) return `${digits.slice(0, 3)}.${digits.slice(3)}`;
|
|
7390
|
+
if (digits.length <= 9) {
|
|
7391
|
+
return `${digits.slice(0, 3)}.${digits.slice(3, 6)}.${digits.slice(6)}`;
|
|
7392
|
+
}
|
|
7393
|
+
return `${digits.slice(0, 3)}.${digits.slice(3, 6)}.${digits.slice(6, 9)}-${digits.slice(9)}`;
|
|
7394
|
+
}
|
|
7395
|
+
function validateCpf(value) {
|
|
7396
|
+
const digits = value.replace(/\D/g, "");
|
|
7397
|
+
if (digits.length !== 11) return false;
|
|
7398
|
+
if (/^(\d)\1{10}$/.test(digits)) return false;
|
|
7399
|
+
let sum = 0;
|
|
7400
|
+
for (let i = 0; i < 9; i++) {
|
|
7401
|
+
sum += parseInt(digits[i], 10) * (10 - i);
|
|
7402
|
+
}
|
|
7403
|
+
let remainder = sum % 11;
|
|
7404
|
+
const firstDigit = remainder < 2 ? 0 : 11 - remainder;
|
|
7405
|
+
if (firstDigit !== parseInt(digits[9], 10)) return false;
|
|
7406
|
+
sum = 0;
|
|
7407
|
+
for (let i = 0; i < 10; i++) {
|
|
7408
|
+
sum += parseInt(digits[i], 10) * (11 - i);
|
|
7409
|
+
}
|
|
7410
|
+
remainder = sum % 11;
|
|
7411
|
+
const secondDigit = remainder < 2 ? 0 : 11 - remainder;
|
|
7412
|
+
if (secondDigit !== parseInt(digits[10], 10)) return false;
|
|
7413
|
+
return true;
|
|
7414
|
+
}
|
|
7384
7415
|
var DEFAULT_LABELS11 = {
|
|
7385
7416
|
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.",
|
|
7386
7417
|
detailsSectionTitle: "Your details",
|
|
@@ -8003,6 +8034,82 @@ function FieldRenderer({
|
|
|
8003
8034
|
}
|
|
8004
8035
|
);
|
|
8005
8036
|
}
|
|
8037
|
+
if (field.type === "address") {
|
|
8038
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
8039
|
+
FloatingInput,
|
|
8040
|
+
{
|
|
8041
|
+
label: field.label,
|
|
8042
|
+
required: field.required,
|
|
8043
|
+
disabled,
|
|
8044
|
+
autoComplete: "address-line1",
|
|
8045
|
+
value: typeof value === "string" ? value : "",
|
|
8046
|
+
onChange: (e) => onChange(e.target.value),
|
|
8047
|
+
error
|
|
8048
|
+
}
|
|
8049
|
+
);
|
|
8050
|
+
}
|
|
8051
|
+
if (field.type === "addressLine2") {
|
|
8052
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
8053
|
+
FloatingInput,
|
|
8054
|
+
{
|
|
8055
|
+
label: field.label,
|
|
8056
|
+
required: field.required,
|
|
8057
|
+
disabled,
|
|
8058
|
+
autoComplete: "address-line2",
|
|
8059
|
+
value: typeof value === "string" ? value : "",
|
|
8060
|
+
onChange: (e) => onChange(e.target.value),
|
|
8061
|
+
error
|
|
8062
|
+
}
|
|
8063
|
+
);
|
|
8064
|
+
}
|
|
8065
|
+
if (field.type === "city") {
|
|
8066
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
8067
|
+
FloatingInput,
|
|
8068
|
+
{
|
|
8069
|
+
label: field.label,
|
|
8070
|
+
required: field.required,
|
|
8071
|
+
disabled,
|
|
8072
|
+
autoComplete: "address-level2",
|
|
8073
|
+
value: typeof value === "string" ? value : "",
|
|
8074
|
+
onChange: (e) => onChange(e.target.value),
|
|
8075
|
+
error
|
|
8076
|
+
}
|
|
8077
|
+
);
|
|
8078
|
+
}
|
|
8079
|
+
if (field.type === "postalCode") {
|
|
8080
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
8081
|
+
FloatingInput,
|
|
8082
|
+
{
|
|
8083
|
+
label: field.label,
|
|
8084
|
+
required: field.required,
|
|
8085
|
+
disabled,
|
|
8086
|
+
autoComplete: "postal-code",
|
|
8087
|
+
value: typeof value === "string" ? value : "",
|
|
8088
|
+
onChange: (e) => onChange(e.target.value),
|
|
8089
|
+
error
|
|
8090
|
+
}
|
|
8091
|
+
);
|
|
8092
|
+
}
|
|
8093
|
+
if (field.type === "document") {
|
|
8094
|
+
const raw = typeof value === "string" ? value : "";
|
|
8095
|
+
const displayValue = validateCpf(raw) ? formatCpf(raw) : raw;
|
|
8096
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
8097
|
+
FloatingInput,
|
|
8098
|
+
{
|
|
8099
|
+
label: field.label,
|
|
8100
|
+
required: field.required,
|
|
8101
|
+
disabled,
|
|
8102
|
+
autoComplete: "off",
|
|
8103
|
+
value: displayValue,
|
|
8104
|
+
onChange: (e) => {
|
|
8105
|
+
const next = e.target.value;
|
|
8106
|
+
const hasLetters = /[a-zA-Z]/.test(next);
|
|
8107
|
+
onChange(hasLetters ? next : next.replace(/\D/g, ""));
|
|
8108
|
+
},
|
|
8109
|
+
error
|
|
8110
|
+
}
|
|
8111
|
+
);
|
|
8112
|
+
}
|
|
8006
8113
|
const htmlType = field.label.toLowerCase().includes("mail") ? "email" : "text";
|
|
8007
8114
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
8008
8115
|
FloatingInput,
|
|
@@ -12513,6 +12620,7 @@ function TripPage({
|
|
|
12513
12620
|
faqs,
|
|
12514
12621
|
faqInitialCount = 5,
|
|
12515
12622
|
sectionIcons,
|
|
12623
|
+
labels,
|
|
12516
12624
|
reviews,
|
|
12517
12625
|
trustpilot,
|
|
12518
12626
|
trustpilotMini,
|
|
@@ -12531,6 +12639,7 @@ function TripPage({
|
|
|
12531
12639
|
features,
|
|
12532
12640
|
className
|
|
12533
12641
|
}) {
|
|
12642
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p;
|
|
12534
12643
|
const [activeSection, setActiveSection] = React28__namespace.useState("");
|
|
12535
12644
|
const [accordionValue, setAccordionValue] = React28__namespace.useState([]);
|
|
12536
12645
|
const [faqsExpanded, setFaqsExpanded] = React28__namespace.useState(false);
|
|
@@ -12560,21 +12669,24 @@ function TripPage({
|
|
|
12560
12669
|
const pricingBarRef = React28__namespace.useRef(null);
|
|
12561
12670
|
const galleryRef = React28__namespace.useRef(null);
|
|
12562
12671
|
const sections = React28__namespace.useMemo(
|
|
12563
|
-
() =>
|
|
12564
|
-
|
|
12565
|
-
|
|
12566
|
-
id: "
|
|
12567
|
-
|
|
12568
|
-
|
|
12569
|
-
|
|
12570
|
-
|
|
12571
|
-
|
|
12572
|
-
|
|
12573
|
-
|
|
12574
|
-
|
|
12575
|
-
|
|
12576
|
-
|
|
12577
|
-
|
|
12672
|
+
() => {
|
|
12673
|
+
var _a2, _b2, _c2, _d2, _e2, _f2, _g2, _h2, _i2;
|
|
12674
|
+
return [
|
|
12675
|
+
{ id: "overview", label: (_a2 = labels == null ? void 0 : labels.overview) != null ? _a2 : "Overview", show: !!(overview || (overviewHighlights == null ? void 0 : overviewHighlights.length)) },
|
|
12676
|
+
{
|
|
12677
|
+
id: "itinerary",
|
|
12678
|
+
label: (_b2 = labels == null ? void 0 : labels.itinerary) != null ? _b2 : "Itinerary",
|
|
12679
|
+
show: !!((itineraryDays == null ? void 0 : itineraryDays.length) || (itinerary == null ? void 0 : itinerary.length))
|
|
12680
|
+
},
|
|
12681
|
+
{ id: "included", label: (_c2 = labels == null ? void 0 : labels.whatIsIncluded) != null ? _c2 : "What is Included", show: !!(included == null ? void 0 : included.length) },
|
|
12682
|
+
{ id: "what-to-bring", label: (_d2 = labels == null ? void 0 : labels.whatToBring) != null ? _d2 : "What to Bring", show: !!(whatToBring == null ? void 0 : whatToBring.length) },
|
|
12683
|
+
{ id: "when-it-operates", label: (_e2 = labels == null ? void 0 : labels.whenItOperates) != null ? _e2 : "When this tour operates", show: !!whenItOperates },
|
|
12684
|
+
{ id: "accommodation", label: (_f2 = labels == null ? void 0 : labels.accommodation) != null ? _f2 : "Accommodation", show: !!accommodation },
|
|
12685
|
+
{ id: "terms", label: (_g2 = labels == null ? void 0 : labels.terms) != null ? _g2 : "Terms", show: !!termsAndConditions },
|
|
12686
|
+
{ id: "faq", label: (_h2 = labels == null ? void 0 : labels.faq) != null ? _h2 : "FAQ", show: !!(faqs == null ? void 0 : faqs.length) },
|
|
12687
|
+
{ id: "reviews", label: (_i2 = labels == null ? void 0 : labels.reviews) != null ? _i2 : "Reviews", show: !!(trustpilot || (reviews == null ? void 0 : reviews.length)) }
|
|
12688
|
+
].filter((s) => s.show);
|
|
12689
|
+
},
|
|
12578
12690
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
12579
12691
|
[]
|
|
12580
12692
|
);
|
|
@@ -12606,8 +12718,8 @@ function TripPage({
|
|
|
12606
12718
|
}, [isFloating]);
|
|
12607
12719
|
React28__namespace.useEffect(() => {
|
|
12608
12720
|
const check = () => {
|
|
12609
|
-
var
|
|
12610
|
-
const target = (
|
|
12721
|
+
var _a2;
|
|
12722
|
+
const target = (_a2 = galleryRef.current) != null ? _a2 : pricingBarRef.current;
|
|
12611
12723
|
if (!target) return;
|
|
12612
12724
|
setPricingBarVisible(target.getBoundingClientRect().top < window.innerHeight * 0.75);
|
|
12613
12725
|
};
|
|
@@ -12628,8 +12740,8 @@ function TripPage({
|
|
|
12628
12740
|
if (sections.length === 0) return;
|
|
12629
12741
|
setActiveSection(sections[0].id);
|
|
12630
12742
|
const update = () => {
|
|
12631
|
-
var
|
|
12632
|
-
const navH = ((
|
|
12743
|
+
var _a2, _b2;
|
|
12744
|
+
const navH = ((_b2 = (_a2 = navRef.current) == null ? void 0 : _a2.offsetHeight) != null ? _b2 : 56) + 20;
|
|
12633
12745
|
for (const { id } of [...sections].reverse()) {
|
|
12634
12746
|
const el = document.getElementById(`trip-section-${id}`);
|
|
12635
12747
|
if (el && el.getBoundingClientRect().top <= navH) {
|
|
@@ -12643,11 +12755,11 @@ function TripPage({
|
|
|
12643
12755
|
return () => document.removeEventListener("scroll", update, { capture: true });
|
|
12644
12756
|
}, [sections]);
|
|
12645
12757
|
const scrollToBookingForm = () => {
|
|
12646
|
-
var
|
|
12758
|
+
var _a2, _b2, _c2;
|
|
12647
12759
|
const el = document.getElementById("trip-booking-form");
|
|
12648
12760
|
if (!el) return;
|
|
12649
|
-
const navHeight = ((
|
|
12650
|
-
const scrollEl = (
|
|
12761
|
+
const navHeight = ((_b2 = (_a2 = navRef.current) == null ? void 0 : _a2.offsetHeight) != null ? _b2 : 56) + 16;
|
|
12762
|
+
const scrollEl = (_c2 = navRef.current) == null ? void 0 : _c2.closest("main");
|
|
12651
12763
|
const elTop = el.getBoundingClientRect().top;
|
|
12652
12764
|
const containerTop = scrollEl ? scrollEl.getBoundingClientRect().top : 0;
|
|
12653
12765
|
const currentScroll = scrollEl ? scrollEl.scrollTop : window.scrollY;
|
|
@@ -12660,11 +12772,11 @@ function TripPage({
|
|
|
12660
12772
|
};
|
|
12661
12773
|
const scrollToSection = (id) => {
|
|
12662
12774
|
const performScroll = () => {
|
|
12663
|
-
var
|
|
12775
|
+
var _a2, _b2, _c2;
|
|
12664
12776
|
const el = document.getElementById(`trip-section-${id}`);
|
|
12665
12777
|
if (!el) return;
|
|
12666
|
-
const navHeight = (
|
|
12667
|
-
const scrollEl = (
|
|
12778
|
+
const navHeight = (_b2 = (_a2 = navRef.current) == null ? void 0 : _a2.offsetHeight) != null ? _b2 : 56;
|
|
12779
|
+
const scrollEl = (_c2 = navRef.current) == null ? void 0 : _c2.closest("main");
|
|
12668
12780
|
const currentScroll = scrollEl ? scrollEl.scrollTop : window.scrollY;
|
|
12669
12781
|
const elTop = el.getBoundingClientRect().top;
|
|
12670
12782
|
const containerTop = scrollEl ? scrollEl.getBoundingClientRect().top : 0;
|
|
@@ -12733,7 +12845,7 @@ function TripPage({
|
|
|
12733
12845
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col lg:flex-row gap-8 mt-4", children: [
|
|
12734
12846
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 min-w-0 space-y-12 pb-12", children: [
|
|
12735
12847
|
(overview || (overviewHighlights == null ? void 0 : overviewHighlights.length)) && /* @__PURE__ */ jsxRuntime.jsxs("section", { id: "trip-section-overview", className: "scroll-mt-20", children: [
|
|
12736
|
-
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-xl font-bold text-foreground font-heading mb-4", children: "Overview" }),
|
|
12848
|
+
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-xl font-bold text-foreground font-heading mb-4", children: (_a = labels == null ? void 0 : labels.overview) != null ? _a : "Overview" }),
|
|
12737
12849
|
overview && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-lg text-foreground leading-relaxed space-y-3 [&_strong]:font-semibold [&_a]:text-primary [&_a]:underline", children: overview }),
|
|
12738
12850
|
overviewHighlights && overviewHighlights.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("ul", { className: cn("flex flex-col gap-5", overview && "mt-8"), children: overviewHighlights.map((h, i) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-start gap-4", children: [
|
|
12739
12851
|
h.icon && /* @__PURE__ */ jsxRuntime.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 }),
|
|
@@ -12748,7 +12860,7 @@ function TripPage({
|
|
|
12748
12860
|
] })
|
|
12749
12861
|
] }),
|
|
12750
12862
|
itineraryDays && itineraryDays.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("section", { id: "trip-section-itinerary", className: "scroll-mt-20", children: [
|
|
12751
|
-
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-xl font-bold text-foreground font-heading mb-6", children: "Itinerary" }),
|
|
12863
|
+
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-xl font-bold text-foreground font-heading mb-6", children: (_b = labels == null ? void 0 : labels.itinerary) != null ? _b : "Itinerary" }),
|
|
12752
12864
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-12", children: itineraryDays.map((day) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
12753
12865
|
ItineraryDay,
|
|
12754
12866
|
__spreadProps(__spreadValues({}, day), {
|
|
@@ -12757,20 +12869,20 @@ function TripPage({
|
|
|
12757
12869
|
day.dayNumber
|
|
12758
12870
|
)) })
|
|
12759
12871
|
] }) : itinerary && itinerary.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("section", { id: "trip-section-itinerary", className: "scroll-mt-20", children: [
|
|
12760
|
-
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-xl font-bold text-foreground font-heading mb-6", children: "Itinerary" }),
|
|
12872
|
+
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-xl font-bold text-foreground font-heading mb-6", children: (_c = labels == null ? void 0 : labels.itinerary) != null ? _c : "Itinerary" }),
|
|
12761
12873
|
/* @__PURE__ */ jsxRuntime.jsx(ItineraryTimeline, { steps: itinerary })
|
|
12762
12874
|
] }),
|
|
12763
12875
|
included && included.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("section", { id: "trip-section-included", className: "scroll-mt-20", children: [
|
|
12764
12876
|
/* @__PURE__ */ jsxRuntime.jsxs("h2", { className: "text-xl font-bold text-foreground font-heading mb-4 flex items-center gap-2", children: [
|
|
12765
12877
|
(sectionIcons == null ? void 0 : sectionIcons.whatIsIncluded) ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-primary [&>svg]:h-5 [&>svg]:w-5", children: sectionIcons.whatIsIncluded }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.PackageIcon, { className: "h-5 w-5 text-primary" }),
|
|
12766
|
-
"Included"
|
|
12878
|
+
(_d = labels == null ? void 0 : labels.whatIsIncluded) != null ? _d : "Included"
|
|
12767
12879
|
] }),
|
|
12768
12880
|
/* @__PURE__ */ jsxRuntime.jsx(Checklist, { items: included })
|
|
12769
12881
|
] }),
|
|
12770
12882
|
notIncluded && notIncluded.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("section", { id: "trip-section-not-included", className: "scroll-mt-20", children: [
|
|
12771
12883
|
/* @__PURE__ */ jsxRuntime.jsxs("h2", { className: "text-xl font-bold text-foreground font-heading mb-4 flex items-center gap-2", children: [
|
|
12772
12884
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.XIcon, { className: "h-5 w-5 text-muted-foreground" }),
|
|
12773
|
-
"Not included"
|
|
12885
|
+
(_e = labels == null ? void 0 : labels.notIncluded) != null ? _e : "Not included"
|
|
12774
12886
|
] }),
|
|
12775
12887
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12776
12888
|
Checklist,
|
|
@@ -12797,7 +12909,7 @@ function TripPage({
|
|
|
12797
12909
|
children: [
|
|
12798
12910
|
/* @__PURE__ */ jsxRuntime.jsx(AccordionTrigger, { className: "py-5 text-xl font-bold text-foreground font-heading hover:no-underline", children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-2", children: [
|
|
12799
12911
|
(sectionIcons == null ? void 0 : sectionIcons.whenItOperates) ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-primary [&>svg]:h-5 [&>svg]:w-5", children: sectionIcons.whenItOperates }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CalendarIcon, { className: "h-5 w-5 text-primary" }),
|
|
12800
|
-
"When this tour operates"
|
|
12912
|
+
(_f = labels == null ? void 0 : labels.whenItOperates) != null ? _f : "When this tour operates"
|
|
12801
12913
|
] }) }),
|
|
12802
12914
|
/* @__PURE__ */ jsxRuntime.jsx(AccordionContent, { className: "pb-6", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-base text-foreground leading-relaxed space-y-3 [&_strong]:font-bold [&_a]:text-primary [&_a]:underline", children: whenItOperates }) })
|
|
12803
12915
|
]
|
|
@@ -12812,7 +12924,7 @@ function TripPage({
|
|
|
12812
12924
|
children: [
|
|
12813
12925
|
/* @__PURE__ */ jsxRuntime.jsx(AccordionTrigger, { className: "py-5 text-xl font-bold text-foreground font-heading hover:no-underline", children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-2", children: [
|
|
12814
12926
|
(sectionIcons == null ? void 0 : sectionIcons.accommodation) ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-primary [&>svg]:h-5 [&>svg]:w-5", children: sectionIcons.accommodation }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.BedDoubleIcon, { className: "h-5 w-5 text-primary" }),
|
|
12815
|
-
"Accommodation"
|
|
12927
|
+
(_g = labels == null ? void 0 : labels.accommodation) != null ? _g : "Accommodation"
|
|
12816
12928
|
] }) }),
|
|
12817
12929
|
/* @__PURE__ */ jsxRuntime.jsx(AccordionContent, { className: "pb-6", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-base text-foreground leading-relaxed space-y-3 [&_strong]:font-semibold [&_a]:text-primary [&_a]:underline", children: accommodation }) })
|
|
12818
12930
|
]
|
|
@@ -12827,7 +12939,7 @@ function TripPage({
|
|
|
12827
12939
|
children: [
|
|
12828
12940
|
/* @__PURE__ */ jsxRuntime.jsx(AccordionTrigger, { className: "py-5 text-xl font-bold text-foreground font-heading hover:no-underline", children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-2", children: [
|
|
12829
12941
|
(sectionIcons == null ? void 0 : sectionIcons.food) ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-primary [&>svg]:h-5 [&>svg]:w-5", children: sectionIcons.food }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.UtensilsIcon, { className: "h-5 w-5 text-primary" }),
|
|
12830
|
-
"Food"
|
|
12942
|
+
(_h = labels == null ? void 0 : labels.food) != null ? _h : "Food"
|
|
12831
12943
|
] }) }),
|
|
12832
12944
|
/* @__PURE__ */ jsxRuntime.jsx(AccordionContent, { className: "pb-6", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-base text-foreground leading-relaxed space-y-3 [&_strong]:font-semibold [&_a]:text-primary [&_a]:underline", children: food }) })
|
|
12833
12945
|
]
|
|
@@ -12842,7 +12954,7 @@ function TripPage({
|
|
|
12842
12954
|
children: [
|
|
12843
12955
|
/* @__PURE__ */ jsxRuntime.jsx(AccordionTrigger, { className: "py-5 text-xl font-bold text-foreground font-heading hover:no-underline", children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-2", children: [
|
|
12844
12956
|
(sectionIcons == null ? void 0 : sectionIcons.meetingPoint) ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-primary [&>svg]:h-5 [&>svg]:w-5", children: sectionIcons.meetingPoint }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MapPinIcon, { className: "h-5 w-5 text-primary" }),
|
|
12845
|
-
"Meeting point"
|
|
12957
|
+
(_i = labels == null ? void 0 : labels.meetingPoint) != null ? _i : "Meeting point"
|
|
12846
12958
|
] }) }),
|
|
12847
12959
|
/* @__PURE__ */ jsxRuntime.jsx(AccordionContent, { className: "pb-6", children: meetingPoint ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-base text-foreground leading-relaxed space-y-3 [&_strong]:font-semibold [&_a]:text-primary [&_a]:underline", children: meetingPoint }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-3", children: meetingPoints.map((mp, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3 rounded-xl border border-border p-4", children: [
|
|
12848
12960
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-0.5 flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-primary/10", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MapPinIcon, { className: "h-4 w-4 text-primary" }) }),
|
|
@@ -12864,7 +12976,7 @@ function TripPage({
|
|
|
12864
12976
|
children: [
|
|
12865
12977
|
/* @__PURE__ */ jsxRuntime.jsx(AccordionTrigger, { className: "py-5 text-xl font-bold text-foreground font-heading hover:no-underline", children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-2", children: [
|
|
12866
12978
|
(sectionIcons == null ? void 0 : sectionIcons.howToGetThere) ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-primary [&>svg]:h-5 [&>svg]:w-5", children: sectionIcons.howToGetThere }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CompassIcon, { className: "h-5 w-5 text-primary" }),
|
|
12867
|
-
"How to get there"
|
|
12979
|
+
(_j = labels == null ? void 0 : labels.howToGetThere) != null ? _j : "How to get there"
|
|
12868
12980
|
] }) }),
|
|
12869
12981
|
/* @__PURE__ */ jsxRuntime.jsx(AccordionContent, { className: "pb-6", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-base text-foreground leading-relaxed space-y-3 [&_strong]:font-semibold [&_a]:text-primary [&_a]:underline", children: howToGetThere }) })
|
|
12870
12982
|
]
|
|
@@ -12879,7 +12991,7 @@ function TripPage({
|
|
|
12879
12991
|
children: [
|
|
12880
12992
|
/* @__PURE__ */ jsxRuntime.jsx(AccordionTrigger, { className: "py-5 text-xl font-bold text-foreground font-heading hover:no-underline", children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-2", children: [
|
|
12881
12993
|
(sectionIcons == null ? void 0 : sectionIcons.weather) ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-primary [&>svg]:h-5 [&>svg]:w-5", children: sectionIcons.weather }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.SunIcon, { className: "h-5 w-5 text-primary" }),
|
|
12882
|
-
"Weather"
|
|
12994
|
+
(_k = labels == null ? void 0 : labels.weather) != null ? _k : "Weather"
|
|
12883
12995
|
] }) }),
|
|
12884
12996
|
/* @__PURE__ */ jsxRuntime.jsx(AccordionContent, { className: "pb-6", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-start gap-3 rounded-xl bg-muted/60 border border-border p-5", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-base text-foreground leading-relaxed space-y-2 [&_strong]:font-semibold", children: weather }) }) })
|
|
12885
12997
|
]
|
|
@@ -12894,7 +13006,7 @@ function TripPage({
|
|
|
12894
13006
|
children: [
|
|
12895
13007
|
/* @__PURE__ */ jsxRuntime.jsx(AccordionTrigger, { className: "py-5 text-xl font-bold text-foreground font-heading hover:no-underline", children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-2", children: [
|
|
12896
13008
|
(sectionIcons == null ? void 0 : sectionIcons.whatToBring) ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-primary [&>svg]:h-5 [&>svg]:w-5", children: sectionIcons.whatToBring }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.BackpackIcon, { className: "h-5 w-5 text-primary" }),
|
|
12897
|
-
"What to bring"
|
|
13009
|
+
(_l = labels == null ? void 0 : labels.whatToBring) != null ? _l : "What to bring"
|
|
12898
13010
|
] }) }),
|
|
12899
13011
|
/* @__PURE__ */ jsxRuntime.jsx(AccordionContent, { className: "pb-6", children: /* @__PURE__ */ jsxRuntime.jsx(Checklist, { items: whatToBring, icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.InfoIcon, { className: "h-4 w-4" }) }) })
|
|
12900
13012
|
]
|
|
@@ -12909,7 +13021,7 @@ function TripPage({
|
|
|
12909
13021
|
children: [
|
|
12910
13022
|
/* @__PURE__ */ jsxRuntime.jsx(AccordionTrigger, { className: "py-5 text-xl font-bold text-foreground font-heading hover:no-underline", children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-2", children: [
|
|
12911
13023
|
(sectionIcons == null ? void 0 : sectionIcons.optionalExtras) ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-primary [&>svg]:h-5 [&>svg]:w-5", children: sectionIcons.optionalExtras }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CherryIcon, { className: "h-5 w-5 text-primary" }),
|
|
12912
|
-
"Optional extras"
|
|
13024
|
+
(_m = labels == null ? void 0 : labels.optionalExtras) != null ? _m : "Optional extras"
|
|
12913
13025
|
] }) }),
|
|
12914
13026
|
/* @__PURE__ */ jsxRuntime.jsx(AccordionContent, { className: "pb-6", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-base text-foreground leading-relaxed space-y-3 [&_strong]:font-semibold [&_a]:text-primary [&_a]:underline", children: optionalExtras }) })
|
|
12915
13027
|
]
|
|
@@ -12924,7 +13036,7 @@ function TripPage({
|
|
|
12924
13036
|
children: [
|
|
12925
13037
|
/* @__PURE__ */ jsxRuntime.jsx(AccordionTrigger, { className: "py-5 text-xl font-bold text-foreground font-heading hover:no-underline", children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-2", children: [
|
|
12926
13038
|
(sectionIcons == null ? void 0 : sectionIcons.terms) ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-primary [&>svg]:h-5 [&>svg]:w-5", children: sectionIcons.terms }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ReceiptIcon, { className: "h-5 w-5 text-primary" }),
|
|
12927
|
-
"Terms & conditions"
|
|
13039
|
+
(_n = labels == null ? void 0 : labels.terms) != null ? _n : "Terms & conditions"
|
|
12928
13040
|
] }) }),
|
|
12929
13041
|
/* @__PURE__ */ jsxRuntime.jsx(AccordionContent, { className: "pb-6", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-base text-foreground leading-relaxed space-y-3 [&_strong]:font-semibold [&_a]:text-primary [&_a]:underline", children: termsAndConditions }) })
|
|
12930
13042
|
]
|
|
@@ -12934,10 +13046,11 @@ function TripPage({
|
|
|
12934
13046
|
}
|
|
12935
13047
|
),
|
|
12936
13048
|
faqs && faqs.length > 0 && (() => {
|
|
13049
|
+
var _a2;
|
|
12937
13050
|
const visibleFaqs = faqsExpanded ? faqs : faqs.slice(0, faqInitialCount);
|
|
12938
13051
|
const hiddenCount = faqs.length - visibleFaqs.length;
|
|
12939
13052
|
return /* @__PURE__ */ jsxRuntime.jsxs("section", { id: "trip-section-faq", className: "scroll-mt-20", children: [
|
|
12940
|
-
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-xl font-bold text-foreground font-heading mb-6", children: "FAQ" }),
|
|
13053
|
+
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-xl font-bold text-foreground font-heading mb-6", children: (_a2 = labels == null ? void 0 : labels.faq) != null ? _a2 : "FAQ" }),
|
|
12941
13054
|
/* @__PURE__ */ jsxRuntime.jsx(Accordion, { variant: "faq", children: visibleFaqs.map((faq, i) => /* @__PURE__ */ jsxRuntime.jsxs(AccordionItem, { value: `faq-${i}`, children: [
|
|
12942
13055
|
/* @__PURE__ */ jsxRuntime.jsx(AccordionTrigger, { children: faq.question }),
|
|
12943
13056
|
/* @__PURE__ */ jsxRuntime.jsx(AccordionContent, { children: faq.answer })
|
|
@@ -12968,15 +13081,15 @@ function TripPage({
|
|
|
12968
13081
|
})(),
|
|
12969
13082
|
trustpilot ? /* @__PURE__ */ jsxRuntime.jsxs("section", { id: "trip-section-reviews", className: "scroll-mt-20", children: [
|
|
12970
13083
|
/* @__PURE__ */ jsxRuntime.jsx(Separator, { className: "mb-10" }),
|
|
12971
|
-
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-xl font-bold text-foreground font-heading mb-5", children: "What our guests think" }),
|
|
13084
|
+
/* @__PURE__ */ jsxRuntime.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" }),
|
|
12972
13085
|
/* @__PURE__ */ jsxRuntime.jsx(TrustpilotEmbed, { config: trustpilot })
|
|
12973
13086
|
] }) : reviews && reviews.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("section", { id: "trip-section-reviews", className: "scroll-mt-20", children: [
|
|
12974
13087
|
/* @__PURE__ */ jsxRuntime.jsx(Separator, { className: "mb-10" }),
|
|
12975
|
-
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-xl font-bold text-foreground font-heading mb-5", children: "What our guests think" }),
|
|
13088
|
+
/* @__PURE__ */ jsxRuntime.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" }),
|
|
12976
13089
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-4", children: reviews.map((r, i) => {
|
|
12977
|
-
var
|
|
13090
|
+
var _a2;
|
|
12978
13091
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-3 rounded-xl border border-border p-5", children: [
|
|
12979
|
-
/* @__PURE__ */ jsxRuntime.jsx(Stars, { count: (
|
|
13092
|
+
/* @__PURE__ */ jsxRuntime.jsx(Stars, { count: (_a2 = r.rating) != null ? _a2 : 5 }),
|
|
12980
13093
|
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-base text-foreground leading-relaxed line-clamp-4", children: [
|
|
12981
13094
|
"\u201C",
|
|
12982
13095
|
r.text,
|
|
@@ -13956,9 +14069,11 @@ exports.TrustpilotEmbed = TrustpilotEmbed;
|
|
|
13956
14069
|
exports.buttonVariants = buttonVariants;
|
|
13957
14070
|
exports.cn = cn;
|
|
13958
14071
|
exports.emailTokens = emailTokens;
|
|
14072
|
+
exports.formatCpf = formatCpf;
|
|
13959
14073
|
exports.getStripeAppearance = getStripeAppearance;
|
|
13960
14074
|
exports.itineraryDaySpecIcons = itineraryDaySpecIcons;
|
|
13961
14075
|
exports.stripeAppearance = stripeAppearance;
|
|
14076
|
+
exports.validateCpf = validateCpf;
|
|
13962
14077
|
exports.wrapEmailHtml = wrapEmailHtml;
|
|
13963
14078
|
//# sourceMappingURL=index.cjs.map
|
|
13964
14079
|
//# sourceMappingURL=index.cjs.map
|