@planetaexo/design-system 0.64.0 → 0.66.0
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 +2175 -406
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +774 -13
- package/dist/index.d.ts +774 -13
- package/dist/index.js +2160 -408
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@ import { cva } from 'class-variance-authority';
|
|
|
4
4
|
import { clsx } from 'clsx';
|
|
5
5
|
import { twMerge } from 'tailwind-merge';
|
|
6
6
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
7
|
-
import { XIcon, ChevronDownIcon, CalendarIcon, SearchIcon, ChevronRightIcon, ArrowLeftIcon, CheckCircle2Icon, MapIcon, LogOutIcon, UsersIcon, CreditCardIcon, AlertCircleIcon, MinusIcon, PlusIcon, CircleCheckIcon, SlidersHorizontalIcon, ChevronLeftIcon, HomeIcon, SailboatIcon, CarIcon, WavesIcon, FootprintsIcon, InfoIcon, ClockIcon, CheckIcon, ChevronUpIcon, MenuIcon, UserIcon, SunIcon, MoonIcon, MapPinIcon, PackageIcon, BedDoubleIcon, UtensilsIcon, CompassIcon, BackpackIcon, CherryIcon, ReceiptIcon,
|
|
7
|
+
import { XIcon, ChevronDownIcon, CalendarIcon, SearchIcon, ChevronRightIcon, ArrowLeftIcon, CheckCircle2Icon, MapIcon, LogOutIcon, UsersIcon, CreditCardIcon, AlertCircleIcon, MinusIcon, PlusIcon, CircleCheckIcon, SlidersHorizontalIcon, ChevronLeftIcon, HomeIcon, SailboatIcon, CarIcon, WavesIcon, FootprintsIcon, InfoIcon, ClockIcon, CheckIcon, ChevronUpIcon, MenuIcon, UserIcon, SunIcon, MoonIcon, MapPinIcon, TwitterIcon, YoutubeIcon, LinkedinIcon, InstagramIcon, FacebookIcon, ArrowRightIcon, PackageIcon, BedDoubleIcon, UtensilsIcon, CompassIcon, BackpackIcon, CherryIcon, ReceiptIcon, Loader2Icon, SendIcon, CheckCircleIcon, ArrowDownIcon, SparkleIcon, Share2Icon, CopyIcon, Info, MailIcon, PhoneIcon, MessageCircleIcon, UserPlusIcon, ExternalLinkIcon, PencilIcon, Trash2Icon, UserMinusIcon, AlertTriangleIcon, ZoomInIcon, StarIcon, LayoutGridIcon } from 'lucide-react';
|
|
8
8
|
import { Separator as Separator$1 } from '@base-ui/react/separator';
|
|
9
9
|
import { Dialog as Dialog$1 } from '@base-ui/react/dialog';
|
|
10
10
|
import { Button as Button$1 } from '@base-ui/react/button';
|
|
@@ -617,7 +617,8 @@ function PhoneCountrySelect({
|
|
|
617
617
|
value,
|
|
618
618
|
onChange,
|
|
619
619
|
className,
|
|
620
|
-
disabled
|
|
620
|
+
disabled,
|
|
621
|
+
showDial = true
|
|
621
622
|
}) {
|
|
622
623
|
var _a;
|
|
623
624
|
const [open, setOpen] = React32.useState(false);
|
|
@@ -666,7 +667,7 @@ function PhoneCountrySelect({
|
|
|
666
667
|
),
|
|
667
668
|
children: [
|
|
668
669
|
/* @__PURE__ */ jsx("span", { className: "text-base leading-none", children: selected.flag }),
|
|
669
|
-
/* @__PURE__ */ jsx("span", { className: "tabular-nums", children: selected.dial }),
|
|
670
|
+
showDial && /* @__PURE__ */ jsx("span", { className: "tabular-nums", children: selected.dial }),
|
|
670
671
|
/* @__PURE__ */ jsx(
|
|
671
672
|
ChevronDownIcon,
|
|
672
673
|
{
|
|
@@ -1305,7 +1306,7 @@ function AdventureCard({
|
|
|
1305
1306
|
labels,
|
|
1306
1307
|
interactionsDisabled
|
|
1307
1308
|
}) {
|
|
1308
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r
|
|
1309
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r;
|
|
1309
1310
|
const isControlled = (_b = (_a = adventure.optionals) == null ? void 0 : _a.some((o) => o.onCheckedChange !== void 0)) != null ? _b : false;
|
|
1310
1311
|
const [checkedInternal, setCheckedInternal] = React32.useState(
|
|
1311
1312
|
new Set((_d = (_c = adventure.optionals) == null ? void 0 : _c.filter((o) => o.defaultChecked).map((o) => o.id)) != null ? _d : [])
|
|
@@ -1479,6 +1480,29 @@ function AdventureCard({
|
|
|
1479
1480
|
}
|
|
1480
1481
|
)
|
|
1481
1482
|
] }),
|
|
1483
|
+
adventure.rooms && adventure.rooms.length > 0 && /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-5 mt-1", children: adventure.rooms.map((room, i) => {
|
|
1484
|
+
var _a2, _b2;
|
|
1485
|
+
const bedLabel = (_b2 = (_a2 = adventure.bedArrangementLabels) == null ? void 0 : _a2[room.bedArrangement]) != null ? _b2 : room.bedArrangement === "DOUBLE" ? "Double" : room.bedArrangement === "TWIN" ? "Twin" : room.bedArrangement === "SINGLE" ? "Single" : "Triple";
|
|
1486
|
+
const heading = adventure.accommodationRoomHeading ? adventure.accommodationRoomHeading(room.roomName) : `Accommodation: ${room.roomName}`;
|
|
1487
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
1488
|
+
/* @__PURE__ */ jsx("h4", { className: "text-lg font-semibold text-foreground font-heading", children: heading }),
|
|
1489
|
+
room.imageUrl && // eslint-disable-next-line @next/next/no-img-element
|
|
1490
|
+
/* @__PURE__ */ jsx(
|
|
1491
|
+
"img",
|
|
1492
|
+
{
|
|
1493
|
+
src: room.imageUrl,
|
|
1494
|
+
alt: room.roomName,
|
|
1495
|
+
className: "w-full h-auto max-w-full rounded"
|
|
1496
|
+
}
|
|
1497
|
+
),
|
|
1498
|
+
/* @__PURE__ */ jsx("div", { className: "text-base font-semibold text-foreground", children: `${room.qty}\xD7 ${room.roomName}` }),
|
|
1499
|
+
/* @__PURE__ */ jsxs("div", { className: "text-sm text-foreground/70 flex items-center gap-2 flex-wrap", children: [
|
|
1500
|
+
/* @__PURE__ */ jsx("span", { children: room.accommodationName }),
|
|
1501
|
+
/* @__PURE__ */ jsx("span", { className: "inline-block px-2 py-0.5 text-xs font-semibold bg-primary/10 text-primary rounded uppercase tracking-wide", children: bedLabel })
|
|
1502
|
+
] }),
|
|
1503
|
+
room.description && /* @__PURE__ */ jsx("p", { className: "text-sm text-foreground/70 leading-snug", children: room.description })
|
|
1504
|
+
] }, i);
|
|
1505
|
+
}) }),
|
|
1482
1506
|
(adventure.description || adventure.detailsSlot) && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1483
1507
|
/* @__PURE__ */ jsx(Separator, { className: "my-1" }),
|
|
1484
1508
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
@@ -1507,48 +1531,22 @@ function AdventureCard({
|
|
|
1507
1531
|
), children: adventure.detailsSlot })
|
|
1508
1532
|
] })
|
|
1509
1533
|
] }),
|
|
1510
|
-
adventure.rooms && adventure.rooms.length > 0 && /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2.5 mt-1", children: [
|
|
1511
|
-
/* @__PURE__ */ jsx("h4", { className: "text-base font-bold text-foreground font-heading", children: (_p = adventure.accommodationsLabel) != null ? _p : "Accommodations" }),
|
|
1512
|
-
/* @__PURE__ */ jsx("ul", { className: "flex flex-col gap-3", children: adventure.rooms.map((room, i) => {
|
|
1513
|
-
var _a2, _b2;
|
|
1514
|
-
const bedLabel = (_b2 = (_a2 = adventure.bedArrangementLabels) == null ? void 0 : _a2[room.bedArrangement]) != null ? _b2 : room.bedArrangement === "DOUBLE" ? "Double" : room.bedArrangement === "TWIN" ? "Twin" : room.bedArrangement === "SINGLE" ? "Single" : "Triple";
|
|
1515
|
-
return /* @__PURE__ */ jsxs("li", { className: "flex items-start gap-3", children: [
|
|
1516
|
-
room.imageUrl && // eslint-disable-next-line @next/next/no-img-element
|
|
1517
|
-
/* @__PURE__ */ jsx(
|
|
1518
|
-
"img",
|
|
1519
|
-
{
|
|
1520
|
-
src: room.imageUrl,
|
|
1521
|
-
alt: room.roomName,
|
|
1522
|
-
className: "w-20 h-16 object-cover rounded shrink-0"
|
|
1523
|
-
}
|
|
1524
|
-
),
|
|
1525
|
-
/* @__PURE__ */ jsxs("div", { className: "flex-1", children: [
|
|
1526
|
-
/* @__PURE__ */ jsx("div", { className: "text-base font-semibold text-foreground", children: `${room.qty}\xD7 ${room.roomName}` }),
|
|
1527
|
-
/* @__PURE__ */ jsxs("div", { className: "text-sm text-foreground/70 flex items-center gap-2 flex-wrap", children: [
|
|
1528
|
-
/* @__PURE__ */ jsx("span", { children: room.accommodationName }),
|
|
1529
|
-
/* @__PURE__ */ jsx("span", { className: "inline-block px-2 py-0.5 text-xs font-semibold bg-primary/10 text-primary rounded uppercase tracking-wide", children: bedLabel })
|
|
1530
|
-
] }),
|
|
1531
|
-
room.description && /* @__PURE__ */ jsx("p", { className: "text-sm text-foreground/70 mt-1 leading-snug", children: room.description })
|
|
1532
|
-
] })
|
|
1533
|
-
] }, i);
|
|
1534
|
-
}) })
|
|
1535
|
-
] }),
|
|
1536
1534
|
adventure.included && adventure.included.length > 0 && /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2.5 mt-1", children: [
|
|
1537
|
-
/* @__PURE__ */ jsx("h4", { className: "text-base font-bold text-foreground font-heading", children: (
|
|
1535
|
+
/* @__PURE__ */ jsx("h4", { className: "text-base font-bold text-foreground font-heading", children: (_p = adventure.includedLabel) != null ? _p : "What's included" }),
|
|
1538
1536
|
/* @__PURE__ */ jsx("ul", { className: "flex flex-col gap-1.5", children: adventure.included.map((item, i) => /* @__PURE__ */ jsxs("li", { className: "flex items-start gap-2 text-base text-foreground/80 font-sans", children: [
|
|
1539
1537
|
/* @__PURE__ */ jsx(CheckIcon, { className: "w-4 h-4 text-primary shrink-0 mt-1" }),
|
|
1540
1538
|
item
|
|
1541
1539
|
] }, i)) })
|
|
1542
1540
|
] }),
|
|
1543
1541
|
adventure.notIncluded && adventure.notIncluded.length > 0 && /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2.5 mt-1", children: [
|
|
1544
|
-
/* @__PURE__ */ jsx("h4", { className: "text-base font-bold text-foreground font-heading", children: (
|
|
1542
|
+
/* @__PURE__ */ jsx("h4", { className: "text-base font-bold text-foreground font-heading", children: (_q = adventure.notIncludedLabel) != null ? _q : "What's not included" }),
|
|
1545
1543
|
/* @__PURE__ */ jsx("ul", { className: "flex flex-col gap-1.5", children: adventure.notIncluded.map((item, i) => /* @__PURE__ */ jsxs("li", { className: "flex items-start gap-2 text-base text-foreground/80 font-sans", children: [
|
|
1546
1544
|
/* @__PURE__ */ jsx(XIcon, { className: "w-4 h-4 text-destructive shrink-0 mt-1" }),
|
|
1547
1545
|
item
|
|
1548
1546
|
] }, i)) })
|
|
1549
1547
|
] }),
|
|
1550
1548
|
adventure.cancellationPolicy && adventure.cancellationPolicy.length > 0 && /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2.5 mt-1", children: [
|
|
1551
|
-
/* @__PURE__ */ jsx("h4", { className: "text-base font-bold text-foreground font-heading", children: (
|
|
1549
|
+
/* @__PURE__ */ jsx("h4", { className: "text-base font-bold text-foreground font-heading", children: (_r = adventure.cancellationPolicyLabel) != null ? _r : "Cancellation policy" }),
|
|
1552
1550
|
/* @__PURE__ */ jsx("ul", { className: "flex flex-col gap-1.5", children: adventure.cancellationPolicy.map((item, i) => /* @__PURE__ */ jsxs("li", { className: "flex items-start gap-2 text-base text-muted-foreground font-sans", children: [
|
|
1553
1551
|
/* @__PURE__ */ jsx("span", { className: "w-1.5 h-1.5 rounded-full bg-primary shrink-0 mt-2.5" }),
|
|
1554
1552
|
item
|
|
@@ -4125,6 +4123,7 @@ var DEFAULT_LABELS = {
|
|
|
4125
4123
|
adultsUnit: "adult(s)",
|
|
4126
4124
|
childrenUnit: "child(ren)",
|
|
4127
4125
|
accommodationsHeading: "ACCOMMODATIONS",
|
|
4126
|
+
accommodationRoomHeading: (name) => `Accommodation: ${name}`,
|
|
4128
4127
|
bedArrangementLabels: {
|
|
4129
4128
|
DOUBLE: "Double",
|
|
4130
4129
|
TWIN: "Twin",
|
|
@@ -4152,10 +4151,11 @@ function BookingAdventureCard({
|
|
|
4152
4151
|
lineItems,
|
|
4153
4152
|
subtotal,
|
|
4154
4153
|
rooms,
|
|
4154
|
+
roomLayout = "compact",
|
|
4155
4155
|
labels,
|
|
4156
4156
|
className
|
|
4157
4157
|
}) {
|
|
4158
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u;
|
|
4158
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v;
|
|
4159
4159
|
const l = {
|
|
4160
4160
|
travellersHeading: (_a = labels == null ? void 0 : labels.travellersHeading) != null ? _a : DEFAULT_LABELS.travellersHeading,
|
|
4161
4161
|
detailsHeading: (_b = labels == null ? void 0 : labels.detailsHeading) != null ? _b : DEFAULT_LABELS.detailsHeading,
|
|
@@ -4170,11 +4170,12 @@ function BookingAdventureCard({
|
|
|
4170
4170
|
adultsUnit: (_k = labels == null ? void 0 : labels.adultsUnit) != null ? _k : DEFAULT_LABELS.adultsUnit,
|
|
4171
4171
|
childrenUnit: (_l = labels == null ? void 0 : labels.childrenUnit) != null ? _l : DEFAULT_LABELS.childrenUnit,
|
|
4172
4172
|
accommodationsHeading: (_m = labels == null ? void 0 : labels.accommodationsHeading) != null ? _m : DEFAULT_LABELS.accommodationsHeading,
|
|
4173
|
+
accommodationRoomHeading: (_n = labels == null ? void 0 : labels.accommodationRoomHeading) != null ? _n : DEFAULT_LABELS.accommodationRoomHeading,
|
|
4173
4174
|
bedArrangementLabels: {
|
|
4174
|
-
DOUBLE: (
|
|
4175
|
-
TWIN: (
|
|
4176
|
-
SINGLE: (
|
|
4177
|
-
TRIPLE: (
|
|
4175
|
+
DOUBLE: (_p = (_o = labels == null ? void 0 : labels.bedArrangementLabels) == null ? void 0 : _o.DOUBLE) != null ? _p : DEFAULT_LABELS.bedArrangementLabels.DOUBLE,
|
|
4176
|
+
TWIN: (_r = (_q = labels == null ? void 0 : labels.bedArrangementLabels) == null ? void 0 : _q.TWIN) != null ? _r : DEFAULT_LABELS.bedArrangementLabels.TWIN,
|
|
4177
|
+
SINGLE: (_t = (_s = labels == null ? void 0 : labels.bedArrangementLabels) == null ? void 0 : _s.SINGLE) != null ? _t : DEFAULT_LABELS.bedArrangementLabels.SINGLE,
|
|
4178
|
+
TRIPLE: (_v = (_u = labels == null ? void 0 : labels.bedArrangementLabels) == null ? void 0 : _u.TRIPLE) != null ? _v : DEFAULT_LABELS.bedArrangementLabels.TRIPLE
|
|
4178
4179
|
}
|
|
4179
4180
|
};
|
|
4180
4181
|
const hasTravellers = !!travellers && travellers.length > 0;
|
|
@@ -4513,7 +4514,116 @@ function BookingAdventureCard({
|
|
|
4513
4514
|
);
|
|
4514
4515
|
})
|
|
4515
4516
|
] }),
|
|
4516
|
-
hasRooms && /* @__PURE__ */ jsxs("div", { style: { marginTop: "4px" }, children: [
|
|
4517
|
+
hasRooms && roomLayout === "feature" && /* @__PURE__ */ jsxs("div", { style: { marginTop: "4px" }, children: [
|
|
4518
|
+
/* @__PURE__ */ jsx(
|
|
4519
|
+
"hr",
|
|
4520
|
+
{
|
|
4521
|
+
style: {
|
|
4522
|
+
border: "none",
|
|
4523
|
+
borderTop: `1px solid ${emailTokens.border}`,
|
|
4524
|
+
marginBottom: "10px"
|
|
4525
|
+
}
|
|
4526
|
+
}
|
|
4527
|
+
),
|
|
4528
|
+
/* @__PURE__ */ jsx(
|
|
4529
|
+
"p",
|
|
4530
|
+
{
|
|
4531
|
+
style: {
|
|
4532
|
+
fontSize: "10px",
|
|
4533
|
+
fontWeight: 700,
|
|
4534
|
+
color: emailTokens.mutedForeground,
|
|
4535
|
+
textTransform: "uppercase",
|
|
4536
|
+
letterSpacing: "0.1em",
|
|
4537
|
+
margin: "0 0 10px 0"
|
|
4538
|
+
},
|
|
4539
|
+
children: l.accommodationsHeading
|
|
4540
|
+
}
|
|
4541
|
+
),
|
|
4542
|
+
rooms.map((room, i) => /* @__PURE__ */ jsxs(
|
|
4543
|
+
"div",
|
|
4544
|
+
{
|
|
4545
|
+
style: {
|
|
4546
|
+
marginBottom: i < rooms.length - 1 ? "16px" : "0"
|
|
4547
|
+
},
|
|
4548
|
+
children: [
|
|
4549
|
+
/* @__PURE__ */ jsx(
|
|
4550
|
+
"p",
|
|
4551
|
+
{
|
|
4552
|
+
style: {
|
|
4553
|
+
fontSize: "16px",
|
|
4554
|
+
fontWeight: 700,
|
|
4555
|
+
color: emailTokens.foreground,
|
|
4556
|
+
lineHeight: "1.3",
|
|
4557
|
+
margin: "0 0 8px 0"
|
|
4558
|
+
},
|
|
4559
|
+
children: l.accommodationRoomHeading(room.roomName)
|
|
4560
|
+
}
|
|
4561
|
+
),
|
|
4562
|
+
room.imageUrl && /* @__PURE__ */ jsx("div", { style: { marginBottom: "8px" }, children: /* @__PURE__ */ jsx(
|
|
4563
|
+
"img",
|
|
4564
|
+
{
|
|
4565
|
+
src: room.imageUrl,
|
|
4566
|
+
alt: room.roomName,
|
|
4567
|
+
style: {
|
|
4568
|
+
width: "100%",
|
|
4569
|
+
height: "auto",
|
|
4570
|
+
maxWidth: "100%",
|
|
4571
|
+
display: "block",
|
|
4572
|
+
borderRadius: "8px"
|
|
4573
|
+
}
|
|
4574
|
+
}
|
|
4575
|
+
) }),
|
|
4576
|
+
/* @__PURE__ */ jsx(
|
|
4577
|
+
"div",
|
|
4578
|
+
{
|
|
4579
|
+
style: {
|
|
4580
|
+
fontSize: "14px",
|
|
4581
|
+
fontWeight: 600,
|
|
4582
|
+
color: emailTokens.foreground,
|
|
4583
|
+
marginBottom: "2px"
|
|
4584
|
+
},
|
|
4585
|
+
children: `${room.qty}\xD7 ${room.roomName}`
|
|
4586
|
+
}
|
|
4587
|
+
),
|
|
4588
|
+
/* @__PURE__ */ jsxs("div", { style: { fontSize: "12px", color: emailTokens.mutedForeground }, children: [
|
|
4589
|
+
room.accommodationName,
|
|
4590
|
+
/* @__PURE__ */ jsx(
|
|
4591
|
+
"span",
|
|
4592
|
+
{
|
|
4593
|
+
style: {
|
|
4594
|
+
display: "inline-block",
|
|
4595
|
+
marginLeft: "8px",
|
|
4596
|
+
padding: "1px 6px",
|
|
4597
|
+
fontSize: "10px",
|
|
4598
|
+
fontWeight: 600,
|
|
4599
|
+
color: emailTokens.primary,
|
|
4600
|
+
backgroundColor: emailTokens.primaryLight,
|
|
4601
|
+
borderRadius: "4px",
|
|
4602
|
+
textTransform: "uppercase",
|
|
4603
|
+
letterSpacing: "0.05em"
|
|
4604
|
+
},
|
|
4605
|
+
children: l.bedArrangementLabels[room.bedArrangement]
|
|
4606
|
+
}
|
|
4607
|
+
)
|
|
4608
|
+
] }),
|
|
4609
|
+
room.description && /* @__PURE__ */ jsx(
|
|
4610
|
+
"div",
|
|
4611
|
+
{
|
|
4612
|
+
style: {
|
|
4613
|
+
fontSize: "12px",
|
|
4614
|
+
color: emailTokens.bodyText,
|
|
4615
|
+
marginTop: "4px",
|
|
4616
|
+
lineHeight: "1.4"
|
|
4617
|
+
},
|
|
4618
|
+
children: room.description
|
|
4619
|
+
}
|
|
4620
|
+
)
|
|
4621
|
+
]
|
|
4622
|
+
},
|
|
4623
|
+
i
|
|
4624
|
+
))
|
|
4625
|
+
] }),
|
|
4626
|
+
hasRooms && roomLayout === "compact" && /* @__PURE__ */ jsxs("div", { style: { marginTop: "4px" }, children: [
|
|
4517
4627
|
/* @__PURE__ */ jsx(
|
|
4518
4628
|
"hr",
|
|
4519
4629
|
{
|
|
@@ -5152,6 +5262,14 @@ var DEFAULT_LABELS3 = {
|
|
|
5152
5262
|
pricingLabel: "Pricing",
|
|
5153
5263
|
subtotalLabel: "Subtotal",
|
|
5154
5264
|
totalLabel: "Total",
|
|
5265
|
+
accommodationsLabel: "ACCOMMODATIONS",
|
|
5266
|
+
accommodationRoomHeading: (name) => `Accommodation: ${name}`,
|
|
5267
|
+
bedArrangementLabels: {
|
|
5268
|
+
DOUBLE: "Double",
|
|
5269
|
+
TWIN: "Twin",
|
|
5270
|
+
SINGLE: "Single",
|
|
5271
|
+
TRIPLE: "Triple"
|
|
5272
|
+
},
|
|
5155
5273
|
paymentSummaryHeading: "\u{1F4B0} Payment Summary",
|
|
5156
5274
|
paymentDetailsHeading: "Payment Details",
|
|
5157
5275
|
depositLabel: (percent) => `Deposit (${percent}%)`,
|
|
@@ -5320,6 +5438,7 @@ function BookingPaymentConfirmationEmail({
|
|
|
5320
5438
|
lineItems: lineItemsToPass,
|
|
5321
5439
|
subtotal: adventure.subtotal,
|
|
5322
5440
|
rooms: adventure.rooms,
|
|
5441
|
+
roomLayout: "feature",
|
|
5323
5442
|
labels: {
|
|
5324
5443
|
travellersHeading: l.travellersLabel,
|
|
5325
5444
|
detailsHeading: l.itineraryLabel,
|
|
@@ -5329,7 +5448,10 @@ function BookingPaymentConfirmationEmail({
|
|
|
5329
5448
|
notIncludedHeading: l.notIncludedLabel,
|
|
5330
5449
|
childBadge: l.childBadge,
|
|
5331
5450
|
adultsUnit: l.adultsUnit,
|
|
5332
|
-
childrenUnit: l.childrenUnit
|
|
5451
|
+
childrenUnit: l.childrenUnit,
|
|
5452
|
+
accommodationsHeading: l.accommodationsLabel,
|
|
5453
|
+
accommodationRoomHeading: l.accommodationRoomHeading,
|
|
5454
|
+
bedArrangementLabels: l.bedArrangementLabels
|
|
5333
5455
|
}
|
|
5334
5456
|
}
|
|
5335
5457
|
)
|
|
@@ -7909,7 +8031,8 @@ function DatePickerField({
|
|
|
7909
8031
|
placeholder = "Select a date",
|
|
7910
8032
|
disabled,
|
|
7911
8033
|
fromDate,
|
|
7912
|
-
className
|
|
8034
|
+
className,
|
|
8035
|
+
error
|
|
7913
8036
|
}) {
|
|
7914
8037
|
const [open, setOpen] = React32.useState(false);
|
|
7915
8038
|
const containerRef = React32.useRef(null);
|
|
@@ -7923,78 +8046,91 @@ function DatePickerField({
|
|
|
7923
8046
|
observer.observe(containerRef.current);
|
|
7924
8047
|
return () => observer.disconnect();
|
|
7925
8048
|
}, []);
|
|
7926
|
-
return /* @__PURE__ */
|
|
7927
|
-
/* @__PURE__ */ jsxs(
|
|
7928
|
-
|
|
7929
|
-
|
|
7930
|
-
|
|
7931
|
-
|
|
7932
|
-
|
|
7933
|
-
|
|
7934
|
-
|
|
7935
|
-
|
|
7936
|
-
|
|
7937
|
-
|
|
7938
|
-
|
|
7939
|
-
/* @__PURE__ */ jsxs(
|
|
7940
|
-
"span",
|
|
7941
|
-
{
|
|
7942
|
-
className: cn(
|
|
7943
|
-
"pointer-events-none absolute left-3 transition-all duration-150 font-ui",
|
|
7944
|
-
hasValue || open ? "top-2 text-xs text-primary" : "top-1/2 -translate-y-1/2 text-base text-muted-foreground"
|
|
7945
|
-
),
|
|
7946
|
-
children: [
|
|
7947
|
-
label,
|
|
7948
|
-
required && /* @__PURE__ */ jsx("span", { className: "text-primary ml-0.5", children: "*" })
|
|
7949
|
-
]
|
|
7950
|
-
}
|
|
8049
|
+
return /* @__PURE__ */ jsxs("div", { ref: containerRef, className: cn("w-full", className), children: [
|
|
8050
|
+
/* @__PURE__ */ jsxs(Popover, { open, onOpenChange: setOpen, children: [
|
|
8051
|
+
/* @__PURE__ */ jsxs(
|
|
8052
|
+
PopoverTrigger,
|
|
8053
|
+
{
|
|
8054
|
+
disabled,
|
|
8055
|
+
className: cn(
|
|
8056
|
+
"relative flex w-full items-center rounded-lg border border-border bg-background",
|
|
8057
|
+
"px-3 text-left text-base font-ui transition-colors h-14",
|
|
8058
|
+
"focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary",
|
|
8059
|
+
"disabled:pointer-events-none disabled:opacity-50",
|
|
8060
|
+
open && "border-primary ring-1 ring-primary",
|
|
8061
|
+
error && "border-destructive focus:border-destructive focus:ring-destructive"
|
|
7951
8062
|
),
|
|
7952
|
-
|
|
7953
|
-
|
|
8063
|
+
children: [
|
|
8064
|
+
/* @__PURE__ */ jsxs(
|
|
8065
|
+
"span",
|
|
8066
|
+
{
|
|
8067
|
+
className: cn(
|
|
8068
|
+
"pointer-events-none absolute left-3 transition-all duration-150 font-ui",
|
|
8069
|
+
hasValue || open ? "top-2 text-xs text-primary" : "top-1/2 -translate-y-1/2 text-base text-muted-foreground"
|
|
8070
|
+
),
|
|
8071
|
+
children: [
|
|
8072
|
+
label,
|
|
8073
|
+
required && /* @__PURE__ */ jsx("span", { className: "text-primary ml-0.5", children: "*" })
|
|
8074
|
+
]
|
|
8075
|
+
}
|
|
8076
|
+
),
|
|
8077
|
+
/* @__PURE__ */ jsx(
|
|
8078
|
+
"span",
|
|
8079
|
+
{
|
|
8080
|
+
className: cn(
|
|
8081
|
+
"flex-1 truncate mt-3",
|
|
8082
|
+
hasValue ? "text-foreground" : "invisible"
|
|
8083
|
+
),
|
|
8084
|
+
children: hasValue ? format(value, "dd MMM yyyy") : placeholder
|
|
8085
|
+
}
|
|
8086
|
+
),
|
|
8087
|
+
/* @__PURE__ */ jsx(CalendarIcon, { className: "ml-2 h-4 w-4 shrink-0 text-muted-foreground" })
|
|
8088
|
+
]
|
|
8089
|
+
}
|
|
8090
|
+
),
|
|
8091
|
+
/* @__PURE__ */ jsx(
|
|
8092
|
+
PopoverContent,
|
|
8093
|
+
{
|
|
8094
|
+
className: "p-0",
|
|
8095
|
+
align: "start",
|
|
8096
|
+
style: calendarWidth ? { width: calendarWidth } : void 0,
|
|
8097
|
+
children: /* @__PURE__ */ jsx(
|
|
8098
|
+
Calendar,
|
|
7954
8099
|
{
|
|
7955
|
-
|
|
7956
|
-
|
|
7957
|
-
|
|
7958
|
-
|
|
7959
|
-
|
|
8100
|
+
mode: "single",
|
|
8101
|
+
selected: value,
|
|
8102
|
+
onSelect: (date) => {
|
|
8103
|
+
onChange == null ? void 0 : onChange(date);
|
|
8104
|
+
setOpen(false);
|
|
8105
|
+
},
|
|
8106
|
+
fromDate: fromDate != null ? fromDate : /* @__PURE__ */ new Date(),
|
|
8107
|
+
className: "font-ui w-full",
|
|
8108
|
+
autoFocus: true
|
|
7960
8109
|
}
|
|
7961
|
-
)
|
|
7962
|
-
|
|
7963
|
-
|
|
7964
|
-
|
|
7965
|
-
)
|
|
7966
|
-
|
|
7967
|
-
PopoverContent,
|
|
7968
|
-
{
|
|
7969
|
-
className: "p-0",
|
|
7970
|
-
align: "start",
|
|
7971
|
-
style: calendarWidth ? { width: calendarWidth } : void 0,
|
|
7972
|
-
children: /* @__PURE__ */ jsx(
|
|
7973
|
-
Calendar,
|
|
7974
|
-
{
|
|
7975
|
-
mode: "single",
|
|
7976
|
-
selected: value,
|
|
7977
|
-
onSelect: (date) => {
|
|
7978
|
-
onChange == null ? void 0 : onChange(date);
|
|
7979
|
-
setOpen(false);
|
|
7980
|
-
},
|
|
7981
|
-
fromDate: fromDate != null ? fromDate : /* @__PURE__ */ new Date(),
|
|
7982
|
-
className: "font-ui w-full",
|
|
7983
|
-
autoFocus: true
|
|
7984
|
-
}
|
|
7985
|
-
)
|
|
7986
|
-
}
|
|
7987
|
-
)
|
|
7988
|
-
] }) });
|
|
8110
|
+
)
|
|
8111
|
+
}
|
|
8112
|
+
)
|
|
8113
|
+
] }),
|
|
8114
|
+
error && /* @__PURE__ */ jsx("p", { className: "mt-1 text-xs text-destructive font-ui", children: error })
|
|
8115
|
+
] });
|
|
7989
8116
|
}
|
|
8117
|
+
function dialFor(iso) {
|
|
8118
|
+
var _a, _b;
|
|
8119
|
+
return (_b = (_a = PHONE_COUNTRIES.find((c) => c.code === iso)) == null ? void 0 : _a.dial) != null ? _b : "";
|
|
8120
|
+
}
|
|
8121
|
+
var EMAIL_RE = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
7990
8122
|
function FormSection({
|
|
7991
8123
|
title,
|
|
8124
|
+
required,
|
|
7992
8125
|
children,
|
|
7993
8126
|
className
|
|
7994
8127
|
}) {
|
|
7995
8128
|
return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-5", className), children: [
|
|
7996
8129
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-4", children: [
|
|
7997
|
-
/* @__PURE__ */
|
|
8130
|
+
/* @__PURE__ */ jsxs("h3", { className: "text-base font-bold text-foreground whitespace-nowrap font-heading", children: [
|
|
8131
|
+
title,
|
|
8132
|
+
required && /* @__PURE__ */ jsx("span", { className: "text-primary ml-0.5", children: "*" })
|
|
8133
|
+
] }),
|
|
7998
8134
|
/* @__PURE__ */ jsx("div", { className: "h-px flex-1 bg-border" })
|
|
7999
8135
|
] }),
|
|
8000
8136
|
children
|
|
@@ -8010,24 +8146,67 @@ var defaultInitial = {
|
|
|
8010
8146
|
phoneCountry: "BR",
|
|
8011
8147
|
lastName: "",
|
|
8012
8148
|
firstName: "",
|
|
8013
|
-
country: "
|
|
8149
|
+
country: "",
|
|
8014
8150
|
phone: "",
|
|
8015
|
-
email: ""
|
|
8151
|
+
email: "",
|
|
8152
|
+
contactVia: "Email"
|
|
8016
8153
|
};
|
|
8017
8154
|
function BookingForm({
|
|
8018
8155
|
defaultValues,
|
|
8019
8156
|
onSubmit,
|
|
8020
|
-
submitLabel
|
|
8157
|
+
submitLabel,
|
|
8021
8158
|
loading = false,
|
|
8022
8159
|
showHeader = true,
|
|
8023
|
-
title
|
|
8024
|
-
subtitle
|
|
8160
|
+
title,
|
|
8161
|
+
subtitle,
|
|
8162
|
+
labels,
|
|
8025
8163
|
className
|
|
8026
8164
|
}) {
|
|
8165
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C;
|
|
8166
|
+
const L = labels != null ? labels : {};
|
|
8167
|
+
const titleText = (_a = title != null ? title : L.title) != null ? _a : "Check availability for your trip";
|
|
8168
|
+
const subtitleText = (_b = subtitle != null ? subtitle : L.subtitle) != null ? _b : "Free enquiry \u2013 no commitment";
|
|
8169
|
+
const submitText = (_c = submitLabel != null ? submitLabel : L.submit) != null ? _c : "Send my request";
|
|
8027
8170
|
const [values, setValues] = React32.useState(__spreadValues(__spreadValues({}, defaultInitial), defaultValues));
|
|
8028
|
-
const
|
|
8171
|
+
const [errors, setErrors] = React32.useState({});
|
|
8172
|
+
const set = (key, value) => {
|
|
8173
|
+
setValues((prev) => __spreadProps(__spreadValues({}, prev), { [key]: value }));
|
|
8174
|
+
setErrors(
|
|
8175
|
+
(prev) => prev[key] ? __spreadProps(__spreadValues({}, prev), { [key]: void 0 }) : prev
|
|
8176
|
+
);
|
|
8177
|
+
};
|
|
8178
|
+
React32.useEffect(() => {
|
|
8179
|
+
if (!defaultValues) return;
|
|
8180
|
+
setValues((prev) => {
|
|
8181
|
+
let changed = false;
|
|
8182
|
+
const next = __spreadValues({}, prev);
|
|
8183
|
+
Object.keys(defaultValues).forEach(
|
|
8184
|
+
(k) => {
|
|
8185
|
+
const incoming = defaultValues[k];
|
|
8186
|
+
if (incoming === void 0 || incoming === "") return;
|
|
8187
|
+
if (prev[k] === defaultInitial[k]) {
|
|
8188
|
+
next[k] = incoming;
|
|
8189
|
+
changed = true;
|
|
8190
|
+
}
|
|
8191
|
+
}
|
|
8192
|
+
);
|
|
8193
|
+
return changed ? next : prev;
|
|
8194
|
+
});
|
|
8195
|
+
}, [defaultValues]);
|
|
8196
|
+
const reqMsg = (_d = L.errorRequired) != null ? _d : "This field is required";
|
|
8197
|
+
const emailMsg = (_e = L.errorEmail) != null ? _e : "Enter a valid email address";
|
|
8029
8198
|
const handleSubmit = (e) => {
|
|
8030
8199
|
e.preventDefault();
|
|
8200
|
+
const next = {};
|
|
8201
|
+
if (!values.firstName.trim()) next.firstName = reqMsg;
|
|
8202
|
+
if (!values.lastName.trim()) next.lastName = reqMsg;
|
|
8203
|
+
if (!values.email.trim()) next.email = reqMsg;
|
|
8204
|
+
else if (!EMAIL_RE.test(values.email.trim())) next.email = emailMsg;
|
|
8205
|
+
if (!values.travelDate) next.travelDate = reqMsg;
|
|
8206
|
+
if (!values.phone.trim()) next.phone = reqMsg;
|
|
8207
|
+
if (!values.contactVia) next.contactVia = reqMsg;
|
|
8208
|
+
setErrors(next);
|
|
8209
|
+
if (Object.keys(next).length > 0) return;
|
|
8031
8210
|
onSubmit == null ? void 0 : onSubmit(values);
|
|
8032
8211
|
};
|
|
8033
8212
|
return /* @__PURE__ */ jsxs(
|
|
@@ -8038,15 +8217,14 @@ function BookingForm({
|
|
|
8038
8217
|
noValidate: true,
|
|
8039
8218
|
children: [
|
|
8040
8219
|
showHeader && /* @__PURE__ */ jsxs("div", { children: [
|
|
8041
|
-
/* @__PURE__ */ jsx("h2", { className: "text-2xl font-black uppercase tracking-wide text-foreground font-heading leading-tight", children:
|
|
8042
|
-
/* @__PURE__ */ jsx("p", { className: "mt-1.5 text-sm text-muted-foreground font-ui", children:
|
|
8220
|
+
/* @__PURE__ */ jsx("h2", { className: "text-2xl font-black uppercase tracking-wide text-foreground font-heading leading-tight", children: titleText }),
|
|
8221
|
+
/* @__PURE__ */ jsx("p", { className: "mt-1.5 text-sm text-muted-foreground font-ui", children: subtitleText })
|
|
8043
8222
|
] }),
|
|
8044
|
-
/* @__PURE__ */ jsx(FormSection, { title: "Who's joining the adventure?", children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: [
|
|
8223
|
+
/* @__PURE__ */ jsx(FormSection, { title: (_f = L.travelersSection) != null ? _f : "Who's joining the adventure?", children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: [
|
|
8045
8224
|
/* @__PURE__ */ jsx(
|
|
8046
8225
|
CounterField,
|
|
8047
8226
|
{
|
|
8048
|
-
label: "Adults",
|
|
8049
|
-
required: true,
|
|
8227
|
+
label: (_g = L.adults) != null ? _g : "Adults",
|
|
8050
8228
|
value: values.adults,
|
|
8051
8229
|
min: 1,
|
|
8052
8230
|
onChange: (v) => set("adults", v)
|
|
@@ -8055,30 +8233,30 @@ function BookingForm({
|
|
|
8055
8233
|
/* @__PURE__ */ jsx(
|
|
8056
8234
|
CounterField,
|
|
8057
8235
|
{
|
|
8058
|
-
label: "Children",
|
|
8059
|
-
sublabel: "(under 12)",
|
|
8236
|
+
label: (_h = L.children) != null ? _h : "Children",
|
|
8237
|
+
sublabel: (_i = L.childrenSublabel) != null ? _i : "(under 12)",
|
|
8060
8238
|
value: values.children,
|
|
8061
8239
|
min: 0,
|
|
8062
8240
|
onChange: (v) => set("children", v)
|
|
8063
8241
|
}
|
|
8064
8242
|
)
|
|
8065
8243
|
] }) }),
|
|
8066
|
-
/* @__PURE__ */ jsx(FormSection, { title: "Your next trip", children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: [
|
|
8244
|
+
/* @__PURE__ */ jsx(FormSection, { title: (_j = L.tripSection) != null ? _j : "Your next trip", children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: [
|
|
8067
8245
|
/* @__PURE__ */ jsx(
|
|
8068
8246
|
DatePickerField,
|
|
8069
8247
|
{
|
|
8070
|
-
label: "Travel date",
|
|
8248
|
+
label: (_k = L.travelDate) != null ? _k : "Travel date",
|
|
8071
8249
|
required: true,
|
|
8072
8250
|
value: values.travelDate,
|
|
8073
8251
|
onChange: (d) => set("travelDate", d),
|
|
8074
|
-
placeholder: "Pick a date"
|
|
8252
|
+
placeholder: (_l = L.pickDate) != null ? _l : "Pick a date",
|
|
8253
|
+
error: errors.travelDate
|
|
8075
8254
|
}
|
|
8076
8255
|
),
|
|
8077
8256
|
/* @__PURE__ */ jsx(
|
|
8078
8257
|
FloatingInput,
|
|
8079
8258
|
{
|
|
8080
|
-
label: "Budget (per person)",
|
|
8081
|
-
required: true,
|
|
8259
|
+
label: (_m = L.budget) != null ? _m : "Budget (per person)",
|
|
8082
8260
|
type: "number",
|
|
8083
8261
|
min: 0,
|
|
8084
8262
|
value: values.budget,
|
|
@@ -8086,7 +8264,7 @@ function BookingForm({
|
|
|
8086
8264
|
}
|
|
8087
8265
|
)
|
|
8088
8266
|
] }) }),
|
|
8089
|
-
/* @__PURE__ */ jsx(FormSection, { title: "Tell us about your trip", children: /* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
8267
|
+
/* @__PURE__ */ jsx(FormSection, { title: (_n = L.projectSection) != null ? _n : "Tell us about your trip", children: /* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
8090
8268
|
/* @__PURE__ */ jsx(
|
|
8091
8269
|
"textarea",
|
|
8092
8270
|
{
|
|
@@ -8114,140 +8292,184 @@ function BookingForm({
|
|
|
8114
8292
|
"peer-not-placeholder-shown:top-2 peer-not-placeholder-shown:text-xs peer-not-placeholder-shown:text-muted-foreground"
|
|
8115
8293
|
),
|
|
8116
8294
|
children: [
|
|
8117
|
-
"Your trip in a few words",
|
|
8295
|
+
(_o = L.projectLabel) != null ? _o : "Your trip in a few words",
|
|
8118
8296
|
" ",
|
|
8119
|
-
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground font-normal", children: "(optional)" })
|
|
8297
|
+
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground font-normal", children: (_p = L.optional) != null ? _p : "(optional)" })
|
|
8120
8298
|
]
|
|
8121
8299
|
}
|
|
8122
8300
|
)
|
|
8123
8301
|
] }) }),
|
|
8124
|
-
/* @__PURE__ */ jsxs(FormSection, { title: "Contact details", children: [
|
|
8302
|
+
/* @__PURE__ */ jsxs(FormSection, { title: (_q = L.contactSection) != null ? _q : "Contact details", children: [
|
|
8125
8303
|
/* @__PURE__ */ jsx(
|
|
8126
8304
|
"div",
|
|
8127
8305
|
{
|
|
8128
8306
|
role: "radiogroup",
|
|
8129
|
-
"aria-label": "Title",
|
|
8307
|
+
"aria-label": (_r = L.titleAria) != null ? _r : "Title",
|
|
8130
8308
|
className: "flex flex-wrap items-center gap-x-6 gap-y-3",
|
|
8131
|
-
children: ["ms", "mr"].map((c) =>
|
|
8132
|
-
|
|
8133
|
-
|
|
8134
|
-
|
|
8135
|
-
|
|
8136
|
-
|
|
8137
|
-
|
|
8138
|
-
|
|
8139
|
-
|
|
8140
|
-
|
|
8141
|
-
|
|
8142
|
-
|
|
8143
|
-
|
|
8144
|
-
|
|
8145
|
-
|
|
8146
|
-
|
|
8147
|
-
|
|
8148
|
-
|
|
8149
|
-
|
|
8150
|
-
|
|
8151
|
-
|
|
8309
|
+
children: ["ms", "mr"].map((c) => {
|
|
8310
|
+
var _a2, _b2;
|
|
8311
|
+
return /* @__PURE__ */ jsxs(
|
|
8312
|
+
"label",
|
|
8313
|
+
{
|
|
8314
|
+
className: "flex min-h-9 cursor-pointer items-center gap-2.5 font-ui text-sm text-foreground",
|
|
8315
|
+
children: [
|
|
8316
|
+
/* @__PURE__ */ jsx(
|
|
8317
|
+
"input",
|
|
8318
|
+
{
|
|
8319
|
+
type: "radio",
|
|
8320
|
+
name: "civility",
|
|
8321
|
+
value: c,
|
|
8322
|
+
checked: values.civility === c,
|
|
8323
|
+
onChange: () => set("civility", c),
|
|
8324
|
+
className: "h-4 w-4 shrink-0 accent-primary cursor-pointer"
|
|
8325
|
+
}
|
|
8326
|
+
),
|
|
8327
|
+
c === "ms" ? (_a2 = L.ms) != null ? _a2 : "Ms." : (_b2 = L.mr) != null ? _b2 : "Mr."
|
|
8328
|
+
]
|
|
8329
|
+
},
|
|
8330
|
+
c
|
|
8331
|
+
);
|
|
8332
|
+
})
|
|
8152
8333
|
}
|
|
8153
8334
|
),
|
|
8154
8335
|
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3 min-w-0", children: [
|
|
8155
8336
|
/* @__PURE__ */ jsx("div", { className: "min-w-0", children: /* @__PURE__ */ jsx(
|
|
8156
8337
|
FloatingInput,
|
|
8157
8338
|
{
|
|
8158
|
-
label: "Last name",
|
|
8339
|
+
label: (_s = L.lastName) != null ? _s : "Last name",
|
|
8159
8340
|
required: true,
|
|
8160
8341
|
value: values.lastName,
|
|
8161
|
-
onChange: (e) => set("lastName", e.target.value)
|
|
8342
|
+
onChange: (e) => set("lastName", e.target.value),
|
|
8343
|
+
error: errors.lastName
|
|
8162
8344
|
}
|
|
8163
8345
|
) }),
|
|
8164
8346
|
/* @__PURE__ */ jsx("div", { className: "min-w-0", children: /* @__PURE__ */ jsx(
|
|
8165
8347
|
FloatingInput,
|
|
8166
8348
|
{
|
|
8167
|
-
label: "First name",
|
|
8349
|
+
label: (_t = L.firstName) != null ? _t : "First name",
|
|
8168
8350
|
required: true,
|
|
8169
8351
|
value: values.firstName,
|
|
8170
|
-
onChange: (e) => set("firstName", e.target.value)
|
|
8352
|
+
onChange: (e) => set("firstName", e.target.value),
|
|
8353
|
+
error: errors.firstName
|
|
8171
8354
|
}
|
|
8172
8355
|
) }),
|
|
8173
|
-
/* @__PURE__ */ jsx("div", { className: "min-w-0 sm:col-span-2 lg:col-span-1", children: /* @__PURE__ */
|
|
8174
|
-
|
|
8356
|
+
/* @__PURE__ */ jsx("div", { className: "min-w-0 sm:col-span-2 lg:col-span-1", children: /* @__PURE__ */ jsx(
|
|
8357
|
+
CountrySearchField,
|
|
8175
8358
|
{
|
|
8176
|
-
label: "Country of residence",
|
|
8177
|
-
required: true,
|
|
8359
|
+
label: (_u = L.country) != null ? _u : "Country of residence",
|
|
8178
8360
|
value: values.country,
|
|
8179
|
-
onChange: (
|
|
8180
|
-
|
|
8181
|
-
/* @__PURE__ */ jsx("option", { value: "", disabled: true, hidden: true }),
|
|
8182
|
-
/* @__PURE__ */ jsx("option", { value: "France", children: "France" }),
|
|
8183
|
-
/* @__PURE__ */ jsx("option", { value: "Belgium", children: "Belgium" }),
|
|
8184
|
-
/* @__PURE__ */ jsx("option", { value: "Switzerland", children: "Switzerland" }),
|
|
8185
|
-
/* @__PURE__ */ jsx("option", { value: "Canada", children: "Canada" }),
|
|
8186
|
-
/* @__PURE__ */ jsx("option", { value: "Luxembourg", children: "Luxembourg" }),
|
|
8187
|
-
/* @__PURE__ */ jsx("option", { value: "United Kingdom", children: "United Kingdom" }),
|
|
8188
|
-
/* @__PURE__ */ jsx("option", { value: "United States", children: "United States" }),
|
|
8189
|
-
/* @__PURE__ */ jsx("option", { value: "Other", children: "Other" })
|
|
8190
|
-
]
|
|
8361
|
+
onChange: (code) => set("country", code),
|
|
8362
|
+
countries: COUNTRIES
|
|
8191
8363
|
}
|
|
8192
8364
|
) })
|
|
8193
8365
|
] }),
|
|
8194
8366
|
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 gap-4 lg:grid-cols-2", children: [
|
|
8195
|
-
/* @__PURE__ */ jsxs("div", { className: "
|
|
8196
|
-
/* @__PURE__ */
|
|
8197
|
-
PhoneCountrySelect,
|
|
8198
|
-
{
|
|
8199
|
-
value: values.phoneCountry,
|
|
8200
|
-
onChange: (code) => set("phoneCountry", code),
|
|
8201
|
-
className: "shrink-0"
|
|
8202
|
-
}
|
|
8203
|
-
),
|
|
8204
|
-
/* @__PURE__ */ jsxs("div", { className: "relative min-w-0 flex-1", children: [
|
|
8367
|
+
/* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
|
|
8368
|
+
/* @__PURE__ */ jsxs("div", { className: "flex w-full min-w-0", children: [
|
|
8205
8369
|
/* @__PURE__ */ jsx(
|
|
8206
|
-
|
|
8370
|
+
PhoneCountrySelect,
|
|
8207
8371
|
{
|
|
8208
|
-
|
|
8209
|
-
|
|
8210
|
-
|
|
8211
|
-
|
|
8212
|
-
onChange: (e) => set("phone", e.target.value),
|
|
8213
|
-
className: cn(
|
|
8214
|
-
"peer block h-14 w-full rounded-r-lg border border-border bg-background",
|
|
8215
|
-
"px-3 pt-5 pb-2 text-base text-foreground font-ui",
|
|
8216
|
-
"transition-colors placeholder-transparent",
|
|
8217
|
-
"focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary"
|
|
8218
|
-
)
|
|
8372
|
+
value: values.phoneCountry,
|
|
8373
|
+
onChange: (code) => set("phoneCountry", code),
|
|
8374
|
+
className: "shrink-0",
|
|
8375
|
+
showDial: false
|
|
8219
8376
|
}
|
|
8220
8377
|
),
|
|
8221
|
-
/* @__PURE__ */ jsxs(
|
|
8222
|
-
|
|
8223
|
-
|
|
8224
|
-
|
|
8225
|
-
|
|
8226
|
-
|
|
8227
|
-
"
|
|
8228
|
-
|
|
8229
|
-
|
|
8230
|
-
|
|
8231
|
-
|
|
8232
|
-
|
|
8233
|
-
|
|
8234
|
-
|
|
8235
|
-
|
|
8236
|
-
|
|
8237
|
-
|
|
8238
|
-
|
|
8239
|
-
|
|
8240
|
-
|
|
8241
|
-
|
|
8242
|
-
|
|
8243
|
-
|
|
8378
|
+
/* @__PURE__ */ jsxs("div", { className: "relative min-w-0 flex-1", children: [
|
|
8379
|
+
/* @__PURE__ */ jsx(
|
|
8380
|
+
"input",
|
|
8381
|
+
{
|
|
8382
|
+
id: "phone",
|
|
8383
|
+
type: "tel",
|
|
8384
|
+
placeholder: " ",
|
|
8385
|
+
value: `${dialFor(values.phoneCountry)} ${values.phone}`,
|
|
8386
|
+
onChange: (e) => {
|
|
8387
|
+
const dial = dialFor(values.phoneCountry);
|
|
8388
|
+
let national = e.target.value;
|
|
8389
|
+
if (national.startsWith(dial)) national = national.slice(dial.length);
|
|
8390
|
+
national = national.replace(/^\s+/, "");
|
|
8391
|
+
set("phone", national);
|
|
8392
|
+
},
|
|
8393
|
+
className: cn(
|
|
8394
|
+
"peer block h-14 w-full rounded-r-lg border border-border bg-background",
|
|
8395
|
+
"px-3 pt-5 pb-2 text-base text-foreground font-ui",
|
|
8396
|
+
"transition-colors placeholder-transparent",
|
|
8397
|
+
"focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary",
|
|
8398
|
+
errors.phone && "border-destructive focus:border-destructive focus:ring-destructive"
|
|
8399
|
+
)
|
|
8400
|
+
}
|
|
8401
|
+
),
|
|
8402
|
+
/* @__PURE__ */ jsxs(
|
|
8403
|
+
"label",
|
|
8404
|
+
{
|
|
8405
|
+
htmlFor: "phone",
|
|
8406
|
+
className: cn(
|
|
8407
|
+
"pointer-events-none absolute left-3 top-1/2 -translate-y-1/2",
|
|
8408
|
+
"text-base text-muted-foreground font-ui transition-all duration-150",
|
|
8409
|
+
"peer-focus:top-3 peer-focus:translate-y-0 peer-focus:text-xs peer-focus:text-primary",
|
|
8410
|
+
"peer-not-placeholder-shown:top-3 peer-not-placeholder-shown:translate-y-0 peer-not-placeholder-shown:text-xs peer-not-placeholder-shown:text-muted-foreground"
|
|
8411
|
+
),
|
|
8412
|
+
children: [
|
|
8413
|
+
(_v = L.phone) != null ? _v : "Phone",
|
|
8414
|
+
" ",
|
|
8415
|
+
/* @__PURE__ */ jsx("span", { className: "text-primary", children: "*" })
|
|
8416
|
+
]
|
|
8417
|
+
}
|
|
8418
|
+
)
|
|
8419
|
+
] })
|
|
8420
|
+
] }),
|
|
8421
|
+
errors.phone && /* @__PURE__ */ jsx("p", { className: "mt-1 text-xs text-destructive font-ui", children: errors.phone })
|
|
8422
|
+
] }),
|
|
8423
|
+
/* @__PURE__ */ jsx("div", { className: "min-w-0", children: /* @__PURE__ */ jsx(
|
|
8424
|
+
FloatingInput,
|
|
8425
|
+
{
|
|
8426
|
+
label: (_w = L.email) != null ? _w : "Email",
|
|
8427
|
+
required: true,
|
|
8244
8428
|
type: "email",
|
|
8245
8429
|
value: values.email,
|
|
8246
|
-
onChange: (e) => set("email", e.target.value)
|
|
8430
|
+
onChange: (e) => set("email", e.target.value),
|
|
8431
|
+
error: errors.email
|
|
8247
8432
|
}
|
|
8248
8433
|
) })
|
|
8249
8434
|
] })
|
|
8250
8435
|
] }),
|
|
8436
|
+
/* @__PURE__ */ jsxs(
|
|
8437
|
+
FormSection,
|
|
8438
|
+
{
|
|
8439
|
+
title: (_x = L.contactViaSection) != null ? _x : "How should we contact you?",
|
|
8440
|
+
required: true,
|
|
8441
|
+
children: [
|
|
8442
|
+
/* @__PURE__ */ jsx(
|
|
8443
|
+
"div",
|
|
8444
|
+
{
|
|
8445
|
+
role: "radiogroup",
|
|
8446
|
+
"aria-label": (_y = L.contactViaSection) != null ? _y : "How should we contact you?",
|
|
8447
|
+
className: "inline-flex flex-wrap rounded-full border border-border bg-background p-1",
|
|
8448
|
+
children: [
|
|
8449
|
+
["WhatsApp", (_z = L.contactViaWhatsApp) != null ? _z : "WhatsApp"],
|
|
8450
|
+
["Email", (_A = L.contactViaEmail) != null ? _A : "Email"],
|
|
8451
|
+
["Phone", (_B = L.contactViaPhone) != null ? _B : "Phone"]
|
|
8452
|
+
].map(([value, label]) => /* @__PURE__ */ jsx(
|
|
8453
|
+
"button",
|
|
8454
|
+
{
|
|
8455
|
+
type: "button",
|
|
8456
|
+
role: "radio",
|
|
8457
|
+
"aria-checked": values.contactVia === value,
|
|
8458
|
+
onClick: () => set("contactVia", value),
|
|
8459
|
+
className: cn(
|
|
8460
|
+
"whitespace-nowrap rounded-full px-5 py-2 font-heading text-[13px] font-semibold transition-colors",
|
|
8461
|
+
values.contactVia === value ? "bg-primary text-primary-foreground" : "text-muted-foreground hover:text-foreground"
|
|
8462
|
+
),
|
|
8463
|
+
children: label
|
|
8464
|
+
},
|
|
8465
|
+
value
|
|
8466
|
+
))
|
|
8467
|
+
}
|
|
8468
|
+
),
|
|
8469
|
+
errors.contactVia && /* @__PURE__ */ jsx("p", { className: "text-xs text-destructive font-ui", children: errors.contactVia })
|
|
8470
|
+
]
|
|
8471
|
+
}
|
|
8472
|
+
),
|
|
8251
8473
|
/* @__PURE__ */ jsx("div", { className: "flex justify-center pt-2", children: /* @__PURE__ */ jsx(
|
|
8252
8474
|
"button",
|
|
8253
8475
|
{
|
|
@@ -8282,8 +8504,8 @@ function BookingForm({
|
|
|
8282
8504
|
}
|
|
8283
8505
|
)
|
|
8284
8506
|
] }),
|
|
8285
|
-
"Sending\u2026"
|
|
8286
|
-
] }) :
|
|
8507
|
+
(_C = L.sending) != null ? _C : "Sending\u2026"
|
|
8508
|
+
] }) : submitText
|
|
8287
8509
|
}
|
|
8288
8510
|
) })
|
|
8289
8511
|
]
|
|
@@ -10032,56 +10254,66 @@ function AccordionItem(_a) {
|
|
|
10032
10254
|
function AccordionTrigger(_a) {
|
|
10033
10255
|
var _b = _a, {
|
|
10034
10256
|
className,
|
|
10035
|
-
children
|
|
10257
|
+
children,
|
|
10258
|
+
headingLevel
|
|
10036
10259
|
} = _b, props = __objRest(_b, [
|
|
10037
10260
|
"className",
|
|
10038
|
-
"children"
|
|
10261
|
+
"children",
|
|
10262
|
+
"headingLevel"
|
|
10039
10263
|
]);
|
|
10040
10264
|
const variant = React32.useContext(AccordionVariantContext);
|
|
10041
|
-
|
|
10042
|
-
|
|
10265
|
+
const headingRender = headingLevel === 2 ? /* @__PURE__ */ jsx("h2", {}) : headingLevel === 4 ? /* @__PURE__ */ jsx("h4", {}) : headingLevel === 5 ? /* @__PURE__ */ jsx("h5", {}) : headingLevel === 6 ? /* @__PURE__ */ jsx("h6", {}) : void 0;
|
|
10266
|
+
return /* @__PURE__ */ jsx(
|
|
10267
|
+
Accordion$1.Header,
|
|
10043
10268
|
__spreadProps(__spreadValues({
|
|
10044
|
-
|
|
10045
|
-
|
|
10046
|
-
|
|
10047
|
-
|
|
10048
|
-
|
|
10049
|
-
"
|
|
10050
|
-
|
|
10051
|
-
|
|
10052
|
-
|
|
10053
|
-
|
|
10054
|
-
|
|
10055
|
-
|
|
10056
|
-
|
|
10057
|
-
|
|
10058
|
-
|
|
10059
|
-
|
|
10060
|
-
|
|
10061
|
-
|
|
10062
|
-
|
|
10063
|
-
/* @__PURE__ */ jsx(
|
|
10064
|
-
ChevronDownIcon,
|
|
10065
|
-
{
|
|
10066
|
-
"data-slot": "accordion-trigger-icon",
|
|
10067
|
-
className: "pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden"
|
|
10068
|
-
}
|
|
10069
|
-
),
|
|
10070
|
-
/* @__PURE__ */ jsx(
|
|
10071
|
-
ChevronUpIcon,
|
|
10072
|
-
{
|
|
10073
|
-
"data-slot": "accordion-trigger-icon",
|
|
10074
|
-
className: "pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline"
|
|
10075
|
-
}
|
|
10269
|
+
className: "flex"
|
|
10270
|
+
}, headingRender ? { render: headingRender } : {}), {
|
|
10271
|
+
children: /* @__PURE__ */ jsxs(
|
|
10272
|
+
Accordion$1.Trigger,
|
|
10273
|
+
__spreadProps(__spreadValues({
|
|
10274
|
+
"data-slot": "accordion-trigger",
|
|
10275
|
+
className: cn(
|
|
10276
|
+
"group/accordion-trigger relative flex flex-1 items-center justify-between text-left transition-all outline-none",
|
|
10277
|
+
"focus-visible:ring-3 focus-visible:ring-ring/50 aria-disabled:pointer-events-none aria-disabled:opacity-50",
|
|
10278
|
+
variant === "default" && [
|
|
10279
|
+
"rounded-lg border border-transparent py-2.5 text-sm font-medium",
|
|
10280
|
+
"hover:underline focus-visible:border-ring",
|
|
10281
|
+
"**:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground"
|
|
10282
|
+
],
|
|
10283
|
+
variant === "faq" && [
|
|
10284
|
+
"px-5 py-4 text-base font-bold",
|
|
10285
|
+
"hover:bg-muted/30 rounded-lg"
|
|
10286
|
+
],
|
|
10287
|
+
className
|
|
10076
10288
|
)
|
|
10077
|
-
|
|
10078
|
-
|
|
10079
|
-
|
|
10080
|
-
|
|
10081
|
-
|
|
10082
|
-
|
|
10289
|
+
}, props), {
|
|
10290
|
+
children: [
|
|
10291
|
+
children,
|
|
10292
|
+
variant === "default" && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
10293
|
+
/* @__PURE__ */ jsx(
|
|
10294
|
+
ChevronDownIcon,
|
|
10295
|
+
{
|
|
10296
|
+
"data-slot": "accordion-trigger-icon",
|
|
10297
|
+
className: "pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden"
|
|
10298
|
+
}
|
|
10299
|
+
),
|
|
10300
|
+
/* @__PURE__ */ jsx(
|
|
10301
|
+
ChevronUpIcon,
|
|
10302
|
+
{
|
|
10303
|
+
"data-slot": "accordion-trigger-icon",
|
|
10304
|
+
className: "pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline"
|
|
10305
|
+
}
|
|
10306
|
+
)
|
|
10307
|
+
] }),
|
|
10308
|
+
variant === "faq" && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
10309
|
+
/* @__PURE__ */ jsx(PlusIcon, { className: "pointer-events-none shrink-0 size-5 text-foreground group-aria-expanded/accordion-trigger:hidden" }),
|
|
10310
|
+
/* @__PURE__ */ jsx(MinusIcon, { className: "pointer-events-none hidden shrink-0 size-5 text-foreground group-aria-expanded/accordion-trigger:inline" })
|
|
10311
|
+
] })
|
|
10312
|
+
]
|
|
10313
|
+
})
|
|
10314
|
+
)
|
|
10083
10315
|
})
|
|
10084
|
-
)
|
|
10316
|
+
);
|
|
10085
10317
|
}
|
|
10086
10318
|
function AccordionContent(_a) {
|
|
10087
10319
|
var _b = _a, {
|
|
@@ -10306,9 +10538,10 @@ function FilterPanel({
|
|
|
10306
10538
|
variant = "sidebar",
|
|
10307
10539
|
sortOptions,
|
|
10308
10540
|
sort,
|
|
10309
|
-
onSortChange
|
|
10541
|
+
onSortChange,
|
|
10542
|
+
labels
|
|
10310
10543
|
}) {
|
|
10311
|
-
var _a, _b;
|
|
10544
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
10312
10545
|
const resolvedGroups = React32.useMemo(() => resolveGroups(groups), [groups]);
|
|
10313
10546
|
const [internalValue, setInternalValue] = React32.useState(
|
|
10314
10547
|
() => Object.fromEntries(groups.map((g) => [g.id, []]))
|
|
@@ -10446,7 +10679,7 @@ function FilterPanel({
|
|
|
10446
10679
|
type: "button",
|
|
10447
10680
|
onClick: handleClearAll,
|
|
10448
10681
|
className: "text-sm font-ui font-semibold text-muted-foreground underline underline-offset-2 hover:text-foreground",
|
|
10449
|
-
children: "Clear all"
|
|
10682
|
+
children: (_b = labels == null ? void 0 : labels.clearAll) != null ? _b : "Clear all"
|
|
10450
10683
|
}
|
|
10451
10684
|
),
|
|
10452
10685
|
/* @__PURE__ */ jsxs(
|
|
@@ -10460,9 +10693,8 @@ function FilterPanel({
|
|
|
10460
10693
|
}
|
|
10461
10694
|
),
|
|
10462
10695
|
children: [
|
|
10463
|
-
"Show ",
|
|
10464
|
-
totalSelected > 0 ? `(${totalSelected})` : ""
|
|
10465
|
-
" results"
|
|
10696
|
+
(_c = labels == null ? void 0 : labels.showResults) != null ? _c : "Show results",
|
|
10697
|
+
totalSelected > 0 ? ` (${totalSelected})` : ""
|
|
10466
10698
|
]
|
|
10467
10699
|
}
|
|
10468
10700
|
)
|
|
@@ -10487,7 +10719,7 @@ function FilterPanel({
|
|
|
10487
10719
|
}
|
|
10488
10720
|
),
|
|
10489
10721
|
children: [
|
|
10490
|
-
"Sort",
|
|
10722
|
+
(_d = labels == null ? void 0 : labels.sortLabel) != null ? _d : "Sort",
|
|
10491
10723
|
/* @__PURE__ */ jsx(ChevronDownIcon, { className: "h-4 w-4 text-muted-foreground" })
|
|
10492
10724
|
]
|
|
10493
10725
|
}
|
|
@@ -10597,14 +10829,15 @@ function FilterPanel({
|
|
|
10597
10829
|
className: "inline-flex items-center gap-1 rounded-full px-3 py-1.5 text-xs font-ui font-semibold text-muted-foreground hover:text-foreground transition-colors",
|
|
10598
10830
|
children: [
|
|
10599
10831
|
/* @__PURE__ */ jsx(XIcon, { className: "h-3 w-3" }),
|
|
10600
|
-
"Clear all
|
|
10832
|
+
(_e = labels == null ? void 0 : labels.clearAll) != null ? _e : "Clear all",
|
|
10833
|
+
" (",
|
|
10601
10834
|
totalSelected,
|
|
10602
10835
|
")"
|
|
10603
10836
|
]
|
|
10604
10837
|
}
|
|
10605
10838
|
),
|
|
10606
10839
|
sortOptions && sortOptions.length > 0 && /* @__PURE__ */ jsxs("div", { className: "ml-auto flex items-center gap-2", children: [
|
|
10607
|
-
/* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground font-ui hidden sm:inline", children: "Sort by" }),
|
|
10840
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground font-ui hidden sm:inline", children: (_f = labels == null ? void 0 : labels.sortByLabel) != null ? _f : "Sort by" }),
|
|
10608
10841
|
/* @__PURE__ */ jsxs(Popover, { children: [
|
|
10609
10842
|
/* @__PURE__ */ jsxs(
|
|
10610
10843
|
PopoverTrigger,
|
|
@@ -10621,7 +10854,7 @@ function FilterPanel({
|
|
|
10621
10854
|
}
|
|
10622
10855
|
),
|
|
10623
10856
|
children: [
|
|
10624
|
-
(
|
|
10857
|
+
(_g = activeSort == null ? void 0 : activeSort.label) != null ? _g : "Default",
|
|
10625
10858
|
/* @__PURE__ */ jsx(ChevronDownIcon, { className: "h-3.5 w-3.5 text-muted-foreground" })
|
|
10626
10859
|
]
|
|
10627
10860
|
}
|
|
@@ -10693,7 +10926,7 @@ function FilterPanel({
|
|
|
10693
10926
|
{
|
|
10694
10927
|
onClick: handleClearAll,
|
|
10695
10928
|
className: "self-start text-sm text-muted-foreground underline underline-offset-2 transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring font-ui",
|
|
10696
|
-
children: "Remove all filters"
|
|
10929
|
+
children: (_h = labels == null ? void 0 : labels.removeAllFilters) != null ? _h : "Remove all filters"
|
|
10697
10930
|
}
|
|
10698
10931
|
)
|
|
10699
10932
|
] });
|
|
@@ -10962,7 +11195,7 @@ function Picture(_a) {
|
|
|
10962
11195
|
"onLoad",
|
|
10963
11196
|
"onError"
|
|
10964
11197
|
]);
|
|
10965
|
-
var _a2;
|
|
11198
|
+
var _a2, _b2;
|
|
10966
11199
|
const ref = React32.useRef(null);
|
|
10967
11200
|
const [visible, setVisible] = React32.useState(eager);
|
|
10968
11201
|
const [loaded, setLoaded] = React32.useState(false);
|
|
@@ -10990,8 +11223,9 @@ function Picture(_a) {
|
|
|
10990
11223
|
}, [src]);
|
|
10991
11224
|
const webp = webpVariantUrl(src);
|
|
10992
11225
|
const realSrc = visible ? src : PLACEHOLDER_SRC;
|
|
11226
|
+
const resolvedTitle = (_a2 = imgProps.title) != null ? _a2 : typeof imgProps.alt === "string" && imgProps.alt.trim() ? imgProps.alt : void 0;
|
|
10993
11227
|
const decodingResolved = decoding != null ? decoding : eager ? void 0 : "async";
|
|
10994
|
-
const fetchPriorityResolved = (
|
|
11228
|
+
const fetchPriorityResolved = (_b2 = imgProps.fetchPriority) != null ? _b2 : eager ? void 0 : "low";
|
|
10995
11229
|
const handleLoad = (e) => {
|
|
10996
11230
|
if (visible) setLoaded(true);
|
|
10997
11231
|
onLoad == null ? void 0 : onLoad(e);
|
|
@@ -11017,6 +11251,7 @@ function Picture(_a) {
|
|
|
11017
11251
|
onLoad: handleLoad,
|
|
11018
11252
|
onError: handleError
|
|
11019
11253
|
}, imgProps), {
|
|
11254
|
+
title: resolvedTitle,
|
|
11020
11255
|
fetchPriority: fetchPriorityResolved,
|
|
11021
11256
|
style: mergedStyle
|
|
11022
11257
|
})
|
|
@@ -11040,6 +11275,7 @@ function Picture(_a) {
|
|
|
11040
11275
|
onLoad: handleLoad,
|
|
11041
11276
|
onError: handleError
|
|
11042
11277
|
}, imgProps), {
|
|
11278
|
+
title: resolvedTitle,
|
|
11043
11279
|
fetchPriority: fetchPriorityResolved,
|
|
11044
11280
|
style: mergedStyle
|
|
11045
11281
|
})
|
|
@@ -11334,9 +11570,10 @@ function gridCols(total) {
|
|
|
11334
11570
|
function Lightbox({
|
|
11335
11571
|
photos,
|
|
11336
11572
|
initialIndex,
|
|
11337
|
-
onClose
|
|
11573
|
+
onClose,
|
|
11574
|
+
labels
|
|
11338
11575
|
}) {
|
|
11339
|
-
var _a;
|
|
11576
|
+
var _a, _b, _c, _d;
|
|
11340
11577
|
const [index, setIndex] = React32.useState(initialIndex);
|
|
11341
11578
|
const total = photos.length;
|
|
11342
11579
|
const photo = photos[index];
|
|
@@ -11369,7 +11606,7 @@ function Lightbox({
|
|
|
11369
11606
|
type: "button",
|
|
11370
11607
|
onClick: onClose,
|
|
11371
11608
|
className: "absolute top-5 right-5 flex h-10 w-10 items-center justify-center rounded-full bg-white/10 text-white hover:bg-white/20 transition-colors z-10",
|
|
11372
|
-
"aria-label": "Close lightbox",
|
|
11609
|
+
"aria-label": (_a = labels == null ? void 0 : labels.close) != null ? _a : "Close lightbox",
|
|
11373
11610
|
children: /* @__PURE__ */ jsx(XIcon, { className: "h-5 w-5" })
|
|
11374
11611
|
}
|
|
11375
11612
|
),
|
|
@@ -11382,7 +11619,7 @@ function Lightbox({
|
|
|
11382
11619
|
prev();
|
|
11383
11620
|
},
|
|
11384
11621
|
className: "absolute left-4 top-1/2 -translate-y-1/2 flex h-11 w-11 items-center justify-center rounded-full bg-white/10 text-white hover:bg-white/25 transition-colors z-10",
|
|
11385
|
-
"aria-label": "Previous photo",
|
|
11622
|
+
"aria-label": (_b = labels == null ? void 0 : labels.previous) != null ? _b : "Previous photo",
|
|
11386
11623
|
children: /* @__PURE__ */ jsx(ChevronLeftIcon, { className: "h-5 w-5" })
|
|
11387
11624
|
}
|
|
11388
11625
|
),
|
|
@@ -11395,7 +11632,7 @@ function Lightbox({
|
|
|
11395
11632
|
next();
|
|
11396
11633
|
},
|
|
11397
11634
|
className: "absolute right-4 top-1/2 -translate-y-1/2 flex h-11 w-11 items-center justify-center rounded-full bg-white/10 text-white hover:bg-white/25 transition-colors z-10",
|
|
11398
|
-
"aria-label": "Next photo",
|
|
11635
|
+
"aria-label": (_c = labels == null ? void 0 : labels.next) != null ? _c : "Next photo",
|
|
11399
11636
|
children: /* @__PURE__ */ jsx(ChevronRightIcon, { className: "h-5 w-5" })
|
|
11400
11637
|
}
|
|
11401
11638
|
),
|
|
@@ -11403,7 +11640,8 @@ function Lightbox({
|
|
|
11403
11640
|
Picture,
|
|
11404
11641
|
{
|
|
11405
11642
|
src: photo.src,
|
|
11406
|
-
alt: (
|
|
11643
|
+
alt: (_d = photo.alt) != null ? _d : `Photo ${index + 1}`,
|
|
11644
|
+
title: photo.caption,
|
|
11407
11645
|
className: "max-w-[calc(100%-6rem)] max-h-[calc(100vh-11rem)] object-contain rounded-lg shadow-2xl",
|
|
11408
11646
|
onClick: (e) => e.stopPropagation()
|
|
11409
11647
|
}
|
|
@@ -11473,6 +11711,7 @@ function PhotoTile({
|
|
|
11473
11711
|
{
|
|
11474
11712
|
src: photo.src,
|
|
11475
11713
|
alt: (_b = photo.alt) != null ? _b : `Photo ${index + 1}`,
|
|
11714
|
+
title: photo.caption,
|
|
11476
11715
|
className: "w-full h-full object-cover transition-transform duration-700 group-hover:scale-105",
|
|
11477
11716
|
loading: "lazy"
|
|
11478
11717
|
}
|
|
@@ -11486,8 +11725,10 @@ function PhotoTile({
|
|
|
11486
11725
|
function ShowMoreButton({
|
|
11487
11726
|
count,
|
|
11488
11727
|
expanded,
|
|
11489
|
-
onClick
|
|
11728
|
+
onClick,
|
|
11729
|
+
labels
|
|
11490
11730
|
}) {
|
|
11731
|
+
var _a, _b;
|
|
11491
11732
|
return /* @__PURE__ */ jsx("div", { className: "flex justify-center py-4", children: /* @__PURE__ */ jsx(
|
|
11492
11733
|
"button",
|
|
11493
11734
|
{
|
|
@@ -11501,10 +11742,11 @@ function ShowMoreButton({
|
|
|
11501
11742
|
),
|
|
11502
11743
|
children: expanded ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
11503
11744
|
/* @__PURE__ */ jsx(ChevronUpIcon, { className: "h-4 w-4 text-muted-foreground" }),
|
|
11504
|
-
"Show less"
|
|
11745
|
+
(_a = labels == null ? void 0 : labels.showLess) != null ? _a : "Show less"
|
|
11505
11746
|
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
11506
11747
|
/* @__PURE__ */ jsx(LayoutGridIcon, { className: "h-4 w-4 text-muted-foreground" }),
|
|
11507
|
-
"See more
|
|
11748
|
+
(_b = labels == null ? void 0 : labels.seeMore) != null ? _b : "See more",
|
|
11749
|
+
" (",
|
|
11508
11750
|
count,
|
|
11509
11751
|
")"
|
|
11510
11752
|
] })
|
|
@@ -11514,7 +11756,8 @@ function ShowMoreButton({
|
|
|
11514
11756
|
function GridGallery({
|
|
11515
11757
|
photos,
|
|
11516
11758
|
initialVisible,
|
|
11517
|
-
onOpen
|
|
11759
|
+
onOpen,
|
|
11760
|
+
labels
|
|
11518
11761
|
}) {
|
|
11519
11762
|
const [expanded, setExpanded] = React32.useState(false);
|
|
11520
11763
|
const cols = gridCols(photos.length);
|
|
@@ -11536,7 +11779,8 @@ function GridGallery({
|
|
|
11536
11779
|
{
|
|
11537
11780
|
count: photos.length - initialVisible,
|
|
11538
11781
|
expanded,
|
|
11539
|
-
onClick: () => setExpanded((v) => !v)
|
|
11782
|
+
onClick: () => setExpanded((v) => !v),
|
|
11783
|
+
labels
|
|
11540
11784
|
}
|
|
11541
11785
|
)
|
|
11542
11786
|
] });
|
|
@@ -11544,7 +11788,8 @@ function GridGallery({
|
|
|
11544
11788
|
function CompactGridGallery({
|
|
11545
11789
|
photos,
|
|
11546
11790
|
initialVisible,
|
|
11547
|
-
onOpen
|
|
11791
|
+
onOpen,
|
|
11792
|
+
labels
|
|
11548
11793
|
}) {
|
|
11549
11794
|
const [expanded, setExpanded] = React32.useState(false);
|
|
11550
11795
|
const hasMore = photos.length > initialVisible;
|
|
@@ -11565,7 +11810,8 @@ function CompactGridGallery({
|
|
|
11565
11810
|
{
|
|
11566
11811
|
count: photos.length - initialVisible,
|
|
11567
11812
|
expanded,
|
|
11568
|
-
onClick: () => setExpanded((v) => !v)
|
|
11813
|
+
onClick: () => setExpanded((v) => !v),
|
|
11814
|
+
labels
|
|
11569
11815
|
}
|
|
11570
11816
|
)
|
|
11571
11817
|
] });
|
|
@@ -11573,7 +11819,8 @@ function CompactGridGallery({
|
|
|
11573
11819
|
function MasonryGallery({
|
|
11574
11820
|
photos,
|
|
11575
11821
|
initialVisible,
|
|
11576
|
-
onOpen
|
|
11822
|
+
onOpen,
|
|
11823
|
+
labels
|
|
11577
11824
|
}) {
|
|
11578
11825
|
const [expanded, setExpanded] = React32.useState(false);
|
|
11579
11826
|
const hasMore = photos.length > initialVisible;
|
|
@@ -11594,6 +11841,7 @@ function MasonryGallery({
|
|
|
11594
11841
|
{
|
|
11595
11842
|
src: p.src,
|
|
11596
11843
|
alt: (_b = p.alt) != null ? _b : `Photo ${i + 1}`,
|
|
11844
|
+
title: p.caption,
|
|
11597
11845
|
className: "w-full h-auto object-cover transition-transform duration-700 group-hover:scale-105",
|
|
11598
11846
|
loading: "lazy"
|
|
11599
11847
|
}
|
|
@@ -11609,7 +11857,8 @@ function MasonryGallery({
|
|
|
11609
11857
|
{
|
|
11610
11858
|
count: photos.length - initialVisible,
|
|
11611
11859
|
expanded,
|
|
11612
|
-
onClick: () => setExpanded((v) => !v)
|
|
11860
|
+
onClick: () => setExpanded((v) => !v),
|
|
11861
|
+
labels
|
|
11613
11862
|
}
|
|
11614
11863
|
)
|
|
11615
11864
|
] });
|
|
@@ -11633,6 +11882,7 @@ function FilmstripGallery({
|
|
|
11633
11882
|
{
|
|
11634
11883
|
src: p.src,
|
|
11635
11884
|
alt: (_b = p.alt) != null ? _b : `Photo ${i + 1}`,
|
|
11885
|
+
title: p.caption,
|
|
11636
11886
|
className: "h-full w-full object-cover transition-transform duration-700 group-hover:scale-105",
|
|
11637
11887
|
loading: "lazy"
|
|
11638
11888
|
}
|
|
@@ -11646,7 +11896,8 @@ function FilmstripGallery({
|
|
|
11646
11896
|
}
|
|
11647
11897
|
function FeaturedGallery({
|
|
11648
11898
|
photos,
|
|
11649
|
-
onOpen
|
|
11899
|
+
onOpen,
|
|
11900
|
+
labels
|
|
11650
11901
|
}) {
|
|
11651
11902
|
const [expanded, setExpanded] = React32.useState(false);
|
|
11652
11903
|
const featured = photos.slice(0, 3);
|
|
@@ -11698,6 +11949,7 @@ function FeaturedGallery({
|
|
|
11698
11949
|
{
|
|
11699
11950
|
src: p.src,
|
|
11700
11951
|
alt: (_b = p.alt) != null ? _b : `Photo ${i + 4}`,
|
|
11952
|
+
title: p.caption,
|
|
11701
11953
|
className: "h-full w-full object-cover transition-transform duration-700 group-hover:scale-105",
|
|
11702
11954
|
loading: "lazy"
|
|
11703
11955
|
}
|
|
@@ -11713,7 +11965,8 @@ function FeaturedGallery({
|
|
|
11713
11965
|
{
|
|
11714
11966
|
count: extra.length,
|
|
11715
11967
|
expanded,
|
|
11716
|
-
onClick: () => setExpanded((v) => !v)
|
|
11968
|
+
onClick: () => setExpanded((v) => !v),
|
|
11969
|
+
labels
|
|
11717
11970
|
}
|
|
11718
11971
|
)
|
|
11719
11972
|
] });
|
|
@@ -11781,6 +12034,7 @@ function CarouselGallery({
|
|
|
11781
12034
|
{
|
|
11782
12035
|
src: photo.src,
|
|
11783
12036
|
alt: (_a = photo.alt) != null ? _a : `Photo ${index + 1}`,
|
|
12037
|
+
title: photo.caption,
|
|
11784
12038
|
className: "h-full w-full object-cover transition-transform duration-500 group-hover/photo:scale-[1.02]",
|
|
11785
12039
|
loading: "lazy"
|
|
11786
12040
|
},
|
|
@@ -11844,6 +12098,7 @@ function PhotoGallery({
|
|
|
11844
12098
|
variant = "grid",
|
|
11845
12099
|
initialVisible = 6,
|
|
11846
12100
|
onPhotoClick,
|
|
12101
|
+
labels,
|
|
11847
12102
|
className
|
|
11848
12103
|
}) {
|
|
11849
12104
|
const [lightboxIndex, setLightboxIndex] = React32.useState(null);
|
|
@@ -11859,7 +12114,8 @@ function PhotoGallery({
|
|
|
11859
12114
|
{
|
|
11860
12115
|
photos: normalised,
|
|
11861
12116
|
initialIndex: lightboxIndex,
|
|
11862
|
-
onClose: () => setLightboxIndex(null)
|
|
12117
|
+
onClose: () => setLightboxIndex(null),
|
|
12118
|
+
labels
|
|
11863
12119
|
}
|
|
11864
12120
|
);
|
|
11865
12121
|
if (variant === "carousel" || variant === "fullBleed") {
|
|
@@ -11887,7 +12143,8 @@ function PhotoGallery({
|
|
|
11887
12143
|
{
|
|
11888
12144
|
photos: normalised,
|
|
11889
12145
|
initialVisible,
|
|
11890
|
-
onOpen: handleOpen
|
|
12146
|
+
onOpen: handleOpen,
|
|
12147
|
+
labels
|
|
11891
12148
|
}
|
|
11892
12149
|
),
|
|
11893
12150
|
variant === "gridCompact" && /* @__PURE__ */ jsx(
|
|
@@ -11895,7 +12152,8 @@ function PhotoGallery({
|
|
|
11895
12152
|
{
|
|
11896
12153
|
photos: normalised,
|
|
11897
12154
|
initialVisible,
|
|
11898
|
-
onOpen: handleOpen
|
|
12155
|
+
onOpen: handleOpen,
|
|
12156
|
+
labels
|
|
11899
12157
|
}
|
|
11900
12158
|
),
|
|
11901
12159
|
variant === "masonry" && /* @__PURE__ */ jsx(
|
|
@@ -11903,11 +12161,12 @@ function PhotoGallery({
|
|
|
11903
12161
|
{
|
|
11904
12162
|
photos: normalised,
|
|
11905
12163
|
initialVisible,
|
|
11906
|
-
onOpen: handleOpen
|
|
12164
|
+
onOpen: handleOpen,
|
|
12165
|
+
labels
|
|
11907
12166
|
}
|
|
11908
12167
|
),
|
|
11909
12168
|
variant === "filmstrip" && /* @__PURE__ */ jsx(FilmstripGallery, { photos: normalised, onOpen: handleOpen }),
|
|
11910
|
-
variant === "featured" && /* @__PURE__ */ jsx(FeaturedGallery, { photos: normalised, onOpen: handleOpen }),
|
|
12169
|
+
variant === "featured" && /* @__PURE__ */ jsx(FeaturedGallery, { photos: normalised, onOpen: handleOpen, labels }),
|
|
11911
12170
|
variant === "collage" && /* @__PURE__ */ jsx(CollageGallery, { photos: normalised, onOpen: handleOpen }),
|
|
11912
12171
|
variant === "collageTight" && /* @__PURE__ */ jsx(CollageGallery, { photos: normalised, onOpen: handleOpen, seamless: true }),
|
|
11913
12172
|
lightbox
|
|
@@ -12177,6 +12436,8 @@ function PricingTrip({
|
|
|
12177
12436
|
departureTimes,
|
|
12178
12437
|
onBook,
|
|
12179
12438
|
bookLabel = "Check availability",
|
|
12439
|
+
fromLabel = "From",
|
|
12440
|
+
perPersonLabel = "per person",
|
|
12180
12441
|
variant = "card",
|
|
12181
12442
|
sharp = false,
|
|
12182
12443
|
belowPrice,
|
|
@@ -12203,13 +12464,16 @@ function PricingTrip({
|
|
|
12203
12464
|
),
|
|
12204
12465
|
/* @__PURE__ */ jsxs("div", { className: "relative flex items-center gap-3", children: [
|
|
12205
12466
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
12206
|
-
/* @__PURE__ */ jsx("p", { className: "text-[10px] uppercase tracking-wide text-muted-foreground font-ui leading-none mb-0.5", children:
|
|
12467
|
+
/* @__PURE__ */ jsx("p", { className: "text-[10px] uppercase tracking-wide text-muted-foreground font-ui leading-none mb-0.5", children: fromLabel }),
|
|
12207
12468
|
/* @__PURE__ */ jsxs("div", { className: "flex items-end gap-1.5 flex-wrap", children: [
|
|
12208
12469
|
/* @__PURE__ */ jsxs("p", { className: "text-lg font-bold text-foreground font-heading leading-none", children: [
|
|
12209
12470
|
currency,
|
|
12210
12471
|
" ",
|
|
12211
12472
|
priceFrom,
|
|
12212
|
-
/* @__PURE__ */
|
|
12473
|
+
/* @__PURE__ */ jsxs("span", { className: "text-[11px] font-normal text-muted-foreground font-ui ml-1", children: [
|
|
12474
|
+
"/ ",
|
|
12475
|
+
perPersonLabel
|
|
12476
|
+
] })
|
|
12213
12477
|
] }),
|
|
12214
12478
|
(priceInfo || currencyEstimates && currencyEstimates.length > 0) && /* @__PURE__ */ jsx(
|
|
12215
12479
|
"button",
|
|
@@ -12321,7 +12585,7 @@ function PricingTrip({
|
|
|
12321
12585
|
] }),
|
|
12322
12586
|
/* @__PURE__ */ jsx("div", { className: "flex-1" }),
|
|
12323
12587
|
/* @__PURE__ */ jsxs("div", { className: "shrink-0 text-right", children: [
|
|
12324
|
-
/* @__PURE__ */ jsx("span", { className: "block text-[10px] uppercase tracking-wide text-muted-foreground font-ui leading-none mb-0.5", children:
|
|
12588
|
+
/* @__PURE__ */ jsx("span", { className: "block text-[10px] uppercase tracking-wide text-muted-foreground font-ui leading-none mb-0.5", children: fromLabel }),
|
|
12325
12589
|
/* @__PURE__ */ jsxs("span", { className: "text-xl font-bold text-foreground font-heading leading-none", children: [
|
|
12326
12590
|
currency,
|
|
12327
12591
|
" ",
|
|
@@ -12350,13 +12614,16 @@ function PricingTrip({
|
|
|
12350
12614
|
}
|
|
12351
12615
|
return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-4", className), children: [
|
|
12352
12616
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
12353
|
-
/* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground font-ui uppercase tracking-wide", children:
|
|
12617
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground font-ui uppercase tracking-wide", children: fromLabel }),
|
|
12354
12618
|
/* @__PURE__ */ jsxs("p", { className: "text-2xl font-bold text-foreground font-heading flex items-center gap-2 flex-wrap", children: [
|
|
12355
12619
|
/* @__PURE__ */ jsxs("span", { children: [
|
|
12356
12620
|
currency,
|
|
12357
12621
|
" ",
|
|
12358
12622
|
priceFrom,
|
|
12359
|
-
/* @__PURE__ */
|
|
12623
|
+
/* @__PURE__ */ jsxs("span", { className: "text-sm font-normal text-muted-foreground font-ui", children: [
|
|
12624
|
+
" / ",
|
|
12625
|
+
perPersonLabel
|
|
12626
|
+
] })
|
|
12360
12627
|
] }),
|
|
12361
12628
|
priceInfo && /* @__PURE__ */ jsx(
|
|
12362
12629
|
"button",
|
|
@@ -12623,8 +12890,10 @@ function SiteHeader({
|
|
|
12623
12890
|
onSearch,
|
|
12624
12891
|
onAccount,
|
|
12625
12892
|
position = variant === "transparent" ? "overlay" : "fixed",
|
|
12893
|
+
labels,
|
|
12626
12894
|
className
|
|
12627
12895
|
}) {
|
|
12896
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
12628
12897
|
const t = VARIANT[variant];
|
|
12629
12898
|
const resolvedLogo = logoSrc != null ? logoSrc : variant === "white" ? logoSrcDark : logoSrcLight;
|
|
12630
12899
|
const [openMenu, setOpenMenu] = React32.useState(null);
|
|
@@ -12682,7 +12951,7 @@ function SiteHeader({
|
|
|
12682
12951
|
{
|
|
12683
12952
|
type: "button",
|
|
12684
12953
|
onClick: () => setMobileOpen(true),
|
|
12685
|
-
"aria-label": "Open menu",
|
|
12954
|
+
"aria-label": (_a = labels == null ? void 0 : labels.openMenu) != null ? _a : "Open menu",
|
|
12686
12955
|
className: cn(
|
|
12687
12956
|
"flex lg:hidden h-9 w-9 items-center justify-center rounded-full transition-colors -ml-1.5",
|
|
12688
12957
|
t.mobileTrigger
|
|
@@ -12711,8 +12980,8 @@ function SiteHeader({
|
|
|
12711
12980
|
}
|
|
12712
12981
|
),
|
|
12713
12982
|
/* @__PURE__ */ jsx("nav", { className: "hidden lg:flex items-center gap-0.5 mx-auto", children: links.map((link) => {
|
|
12714
|
-
var
|
|
12715
|
-
const hasDropdown = !!((
|
|
12983
|
+
var _a2, _b2;
|
|
12984
|
+
const hasDropdown = !!((_a2 = link.items) == null ? void 0 : _a2.length);
|
|
12716
12985
|
const isOpen = openMenu === link.label;
|
|
12717
12986
|
return /* @__PURE__ */ jsxs(
|
|
12718
12987
|
"div",
|
|
@@ -12724,7 +12993,7 @@ function SiteHeader({
|
|
|
12724
12993
|
/* @__PURE__ */ jsxs(
|
|
12725
12994
|
"a",
|
|
12726
12995
|
{
|
|
12727
|
-
href: (
|
|
12996
|
+
href: (_b2 = link.href) != null ? _b2 : "#",
|
|
12728
12997
|
onClick: hasDropdown ? (e) => e.preventDefault() : void 0,
|
|
12729
12998
|
className: cn(
|
|
12730
12999
|
"flex items-center gap-1 px-3.5 py-1.5 rounded-full",
|
|
@@ -12773,7 +13042,7 @@ function SiteHeader({
|
|
|
12773
13042
|
"button",
|
|
12774
13043
|
{
|
|
12775
13044
|
type: "button",
|
|
12776
|
-
"aria-label": "Language",
|
|
13045
|
+
"aria-label": (_b = labels == null ? void 0 : labels.language) != null ? _b : "Language",
|
|
12777
13046
|
className: cn(
|
|
12778
13047
|
"flex items-center gap-0.5 px-2.5 py-1.5 rounded-full",
|
|
12779
13048
|
"text-sm font-ui transition-colors",
|
|
@@ -12813,7 +13082,7 @@ function SiteHeader({
|
|
|
12813
13082
|
{
|
|
12814
13083
|
type: "button",
|
|
12815
13084
|
onClick: onSearch,
|
|
12816
|
-
"aria-label": "Search",
|
|
13085
|
+
"aria-label": (_c = labels == null ? void 0 : labels.search) != null ? _c : "Search",
|
|
12817
13086
|
className: cn(
|
|
12818
13087
|
"flex h-9 w-9 items-center justify-center rounded-full transition-colors",
|
|
12819
13088
|
t.icon
|
|
@@ -12826,7 +13095,7 @@ function SiteHeader({
|
|
|
12826
13095
|
{
|
|
12827
13096
|
type: "button",
|
|
12828
13097
|
onClick: onAccount,
|
|
12829
|
-
"aria-label": "Account",
|
|
13098
|
+
"aria-label": (_d = labels == null ? void 0 : labels.account) != null ? _d : "Account",
|
|
12830
13099
|
className: cn(
|
|
12831
13100
|
"flex h-9 w-9 items-center justify-center rounded-full transition-colors",
|
|
12832
13101
|
t.icon
|
|
@@ -12859,7 +13128,7 @@ function SiteHeader({
|
|
|
12859
13128
|
{
|
|
12860
13129
|
type: "button",
|
|
12861
13130
|
onClick: () => setMobileOpen(false),
|
|
12862
|
-
"aria-label": "Close menu",
|
|
13131
|
+
"aria-label": (_e = labels == null ? void 0 : labels.closeMenu) != null ? _e : "Close menu",
|
|
12863
13132
|
className: cn(
|
|
12864
13133
|
"flex h-9 w-9 items-center justify-center rounded-full transition-colors",
|
|
12865
13134
|
t.mobileTrigger
|
|
@@ -12869,8 +13138,8 @@ function SiteHeader({
|
|
|
12869
13138
|
)
|
|
12870
13139
|
] }),
|
|
12871
13140
|
/* @__PURE__ */ jsx("nav", { className: "flex-1 overflow-y-auto px-6 py-6 flex flex-col gap-1", children: links.map((link) => {
|
|
12872
|
-
var
|
|
12873
|
-
const hasDropdown = !!((
|
|
13141
|
+
var _a2, _b2;
|
|
13142
|
+
const hasDropdown = !!((_a2 = link.items) == null ? void 0 : _a2.length);
|
|
12874
13143
|
const isExpanded = openMobileSection === link.label;
|
|
12875
13144
|
return /* @__PURE__ */ jsxs("div", { children: [
|
|
12876
13145
|
hasDropdown ? /* @__PURE__ */ jsxs(
|
|
@@ -12898,7 +13167,7 @@ function SiteHeader({
|
|
|
12898
13167
|
) : /* @__PURE__ */ jsx(
|
|
12899
13168
|
"a",
|
|
12900
13169
|
{
|
|
12901
|
-
href: (
|
|
13170
|
+
href: (_b2 = link.href) != null ? _b2 : "#",
|
|
12902
13171
|
onClick: () => setMobileOpen(false),
|
|
12903
13172
|
className: cn(
|
|
12904
13173
|
"flex items-center py-4 text-xl font-ui font-black transition-colors border-b border-white/8",
|
|
@@ -12908,11 +13177,11 @@ function SiteHeader({
|
|
|
12908
13177
|
}
|
|
12909
13178
|
),
|
|
12910
13179
|
hasDropdown && isExpanded && /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-0 pl-4 pb-2", children: link.items.map((item) => {
|
|
12911
|
-
var
|
|
13180
|
+
var _a3;
|
|
12912
13181
|
return /* @__PURE__ */ jsx(
|
|
12913
13182
|
"a",
|
|
12914
13183
|
{
|
|
12915
|
-
href: (
|
|
13184
|
+
href: (_a3 = item.href) != null ? _a3 : "#",
|
|
12916
13185
|
onClick: () => setMobileOpen(false),
|
|
12917
13186
|
className: cn(
|
|
12918
13187
|
"py-3 text-base font-ui font-bold transition-colors border-b",
|
|
@@ -12965,7 +13234,7 @@ function SiteHeader({
|
|
|
12965
13234
|
onSearch == null ? void 0 : onSearch();
|
|
12966
13235
|
setMobileOpen(false);
|
|
12967
13236
|
},
|
|
12968
|
-
"aria-label": "Search",
|
|
13237
|
+
"aria-label": (_f = labels == null ? void 0 : labels.search) != null ? _f : "Search",
|
|
12969
13238
|
className: cn("flex h-9 w-9 items-center justify-center rounded-full transition-colors", t.icon),
|
|
12970
13239
|
children: /* @__PURE__ */ jsx(SearchIcon, { className: "h-[18px] w-[18px]" })
|
|
12971
13240
|
}
|
|
@@ -12978,7 +13247,7 @@ function SiteHeader({
|
|
|
12978
13247
|
onAccount == null ? void 0 : onAccount();
|
|
12979
13248
|
setMobileOpen(false);
|
|
12980
13249
|
},
|
|
12981
|
-
"aria-label": "Account",
|
|
13250
|
+
"aria-label": (_g = labels == null ? void 0 : labels.account) != null ? _g : "Account",
|
|
12982
13251
|
className: cn("flex h-9 w-9 items-center justify-center rounded-full transition-colors", t.icon),
|
|
12983
13252
|
children: /* @__PURE__ */ jsx(UserIcon, { className: "h-[18px] w-[18px]" })
|
|
12984
13253
|
}
|
|
@@ -13128,9 +13397,11 @@ function HeartIcon({ filled = false }) {
|
|
|
13128
13397
|
);
|
|
13129
13398
|
}
|
|
13130
13399
|
function TripCardEditorial(props) {
|
|
13400
|
+
var _a, _b, _c, _d;
|
|
13131
13401
|
const {
|
|
13132
13402
|
image,
|
|
13133
13403
|
imageAlt = "",
|
|
13404
|
+
labels,
|
|
13134
13405
|
title,
|
|
13135
13406
|
description,
|
|
13136
13407
|
nights,
|
|
@@ -13188,7 +13459,7 @@ function TripCardEditorial(props) {
|
|
|
13188
13459
|
"button",
|
|
13189
13460
|
{
|
|
13190
13461
|
type: "button",
|
|
13191
|
-
"aria-label": favorited ? "Remove from favorites" : "Add to favorites",
|
|
13462
|
+
"aria-label": favorited ? (_a = labels == null ? void 0 : labels.removeFromFavorites) != null ? _a : "Remove from favorites" : (_b = labels == null ? void 0 : labels.addToFavorites) != null ? _b : "Add to favorites",
|
|
13192
13463
|
"aria-pressed": favorited,
|
|
13193
13464
|
onClick: handleFav,
|
|
13194
13465
|
className: cn(
|
|
@@ -13232,7 +13503,7 @@ function TripCardEditorial(props) {
|
|
|
13232
13503
|
/* @__PURE__ */ jsxs("span", { className: "text-sm font-ui font-semibold", children: [
|
|
13233
13504
|
nights,
|
|
13234
13505
|
" ",
|
|
13235
|
-
nights === 1 ? "night" : "nights"
|
|
13506
|
+
nights === 1 ? (_c = labels == null ? void 0 : labels.night) != null ? _c : "night" : (_d = labels == null ? void 0 : labels.nights) != null ? _d : "nights"
|
|
13236
13507
|
] })
|
|
13237
13508
|
] }) : /* @__PURE__ */ jsx("span", {}),
|
|
13238
13509
|
price && /* @__PURE__ */ jsx("p", { className: "text-base font-bold text-foreground font-ui", children: price })
|
|
@@ -13257,12 +13528,14 @@ function TripCardEditorial(props) {
|
|
|
13257
13528
|
] });
|
|
13258
13529
|
}
|
|
13259
13530
|
function TripCard(props) {
|
|
13531
|
+
var _a, _b;
|
|
13260
13532
|
if (props.variant === "editorial") {
|
|
13261
13533
|
return /* @__PURE__ */ jsx(TripCardEditorial, __spreadValues({}, props));
|
|
13262
13534
|
}
|
|
13263
13535
|
const {
|
|
13264
13536
|
image,
|
|
13265
13537
|
imageAlt = "",
|
|
13538
|
+
labels,
|
|
13266
13539
|
status,
|
|
13267
13540
|
nights,
|
|
13268
13541
|
period,
|
|
@@ -13275,6 +13548,7 @@ function TripCard(props) {
|
|
|
13275
13548
|
} = props;
|
|
13276
13549
|
const s = sizeConfig[size];
|
|
13277
13550
|
const statusInfo = status ? statusConfig[status] : null;
|
|
13551
|
+
const statusLabel = statusInfo ? status === "sold-out" ? (_a = labels == null ? void 0 : labels.soldOut) != null ? _a : statusInfo.label : status === "trending" ? (_b = labels == null ? void 0 : labels.trending) != null ? _b : statusInfo.label : statusInfo.label : null;
|
|
13278
13552
|
const meta = [
|
|
13279
13553
|
nights ? `${nights} nights` : null,
|
|
13280
13554
|
period != null ? period : null
|
|
@@ -13300,7 +13574,7 @@ function TripCard(props) {
|
|
|
13300
13574
|
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-gradient-to-t from-black/80 via-black/30 to-transparent" }),
|
|
13301
13575
|
statusInfo && /* @__PURE__ */ jsx("div", { className: "relative z-10 p-3", children: /* @__PURE__ */ jsxs("div", { className: "inline-flex items-center gap-1.5 rounded-xl bg-card/90 px-3 py-1.5 backdrop-blur-sm shadow-sm", children: [
|
|
13302
13576
|
/* @__PURE__ */ jsx("span", { className: "text-primary", children: statusInfo.icon }),
|
|
13303
|
-
/* @__PURE__ */ jsx("span", { className: "text-xs font-semibold text-foreground font-ui", children:
|
|
13577
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs font-semibold text-foreground font-ui", children: statusLabel })
|
|
13304
13578
|
] }) }),
|
|
13305
13579
|
!statusInfo && /* @__PURE__ */ jsx("div", { className: "relative z-10" }),
|
|
13306
13580
|
/* @__PURE__ */ jsxs("div", { className: "relative z-10 flex flex-col gap-1.5 p-5", children: [
|
|
@@ -13394,6 +13668,7 @@ function BlogCard({
|
|
|
13394
13668
|
{
|
|
13395
13669
|
src: image,
|
|
13396
13670
|
alt: imageAlt,
|
|
13671
|
+
title: imageAlt || void 0,
|
|
13397
13672
|
loading: "lazy",
|
|
13398
13673
|
className: "absolute inset-0 h-full w-full object-cover transition-transform duration-500 group-hover:scale-105"
|
|
13399
13674
|
}
|
|
@@ -13747,6 +14022,8 @@ function TripHeader({
|
|
|
13747
14022
|
breadcrumb,
|
|
13748
14023
|
destination,
|
|
13749
14024
|
duration,
|
|
14025
|
+
groupSize,
|
|
14026
|
+
labels,
|
|
13750
14027
|
tagline,
|
|
13751
14028
|
chips,
|
|
13752
14029
|
belowMeta,
|
|
@@ -13754,7 +14031,7 @@ function TripHeader({
|
|
|
13754
14031
|
uiVariant = "v1",
|
|
13755
14032
|
className
|
|
13756
14033
|
}) {
|
|
13757
|
-
var _a;
|
|
14034
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
13758
14035
|
const [heroIndex, setHeroIndex] = React32.useState(0);
|
|
13759
14036
|
const [videoReady, setVideoReady] = React32.useState(false);
|
|
13760
14037
|
const videoRef = React32.useRef(null);
|
|
@@ -13772,7 +14049,7 @@ function TripHeader({
|
|
|
13772
14049
|
const currentSrc = heroSrc(safeIndex);
|
|
13773
14050
|
const showCarousel = !videoUrl && validImages.length > 1;
|
|
13774
14051
|
const nights = duration ? (_a = duration.nights) != null ? _a : Math.max(duration.days - 1, 1) : null;
|
|
13775
|
-
const hasMeta = !!(destination || duration);
|
|
14052
|
+
const hasMeta = !!(destination || duration || groupSize);
|
|
13776
14053
|
useHlsVideo(videoRef, isHls ? videoUrl : void 0);
|
|
13777
14054
|
React32.useEffect(() => {
|
|
13778
14055
|
if (!videoUrl) return;
|
|
@@ -13879,7 +14156,7 @@ function TripHeader({
|
|
|
13879
14156
|
(i) => (i - 1 + validImages.length) % validImages.length
|
|
13880
14157
|
),
|
|
13881
14158
|
className: "absolute left-4 top-1/2 -translate-y-1/2 flex h-10 w-10 items-center justify-center rounded-full bg-black/30 text-white backdrop-blur-sm hover:bg-black/50 transition-colors",
|
|
13882
|
-
"aria-label": "
|
|
14159
|
+
"aria-label": (_b = labels == null ? void 0 : labels.previousImage) != null ? _b : "Previous image",
|
|
13883
14160
|
children: /* @__PURE__ */ jsx(ChevronLeftIcon, { className: "h-5 w-5" })
|
|
13884
14161
|
}
|
|
13885
14162
|
),
|
|
@@ -13889,7 +14166,7 @@ function TripHeader({
|
|
|
13889
14166
|
type: "button",
|
|
13890
14167
|
onClick: () => setHeroIndex((i) => (i + 1) % validImages.length),
|
|
13891
14168
|
className: "absolute right-4 top-1/2 -translate-y-1/2 flex h-10 w-10 items-center justify-center rounded-full bg-black/30 text-white backdrop-blur-sm hover:bg-black/50 transition-colors",
|
|
13892
|
-
"aria-label": "
|
|
14169
|
+
"aria-label": (_c = labels == null ? void 0 : labels.nextImage) != null ? _c : "Next image",
|
|
13893
14170
|
children: /* @__PURE__ */ jsx(ChevronRightIcon, { className: "h-5 w-5" })
|
|
13894
14171
|
}
|
|
13895
14172
|
),
|
|
@@ -13932,15 +14209,19 @@ function TripHeader({
|
|
|
13932
14209
|
/* @__PURE__ */ jsxs("span", { className: "text-sm font-ui font-semibold", children: [
|
|
13933
14210
|
nights,
|
|
13934
14211
|
" ",
|
|
13935
|
-
nights === 1 ? "
|
|
14212
|
+
nights === 1 ? (_d = labels == null ? void 0 : labels.night) != null ? _d : "night" : (_e = labels == null ? void 0 : labels.nights) != null ? _e : "nights"
|
|
13936
14213
|
] }),
|
|
13937
14214
|
/* @__PURE__ */ jsx("span", { className: "text-white/40", children: "\xB7" }),
|
|
13938
14215
|
/* @__PURE__ */ jsx(SunIcon, { className: "h-4 w-4 shrink-0 text-primary-400" }),
|
|
13939
14216
|
/* @__PURE__ */ jsxs("span", { className: "text-sm font-ui font-semibold", children: [
|
|
13940
14217
|
duration.days,
|
|
13941
14218
|
" ",
|
|
13942
|
-
duration.days === 1 ? "
|
|
14219
|
+
duration.days === 1 ? (_f = labels == null ? void 0 : labels.day) != null ? _f : "day" : (_g = labels == null ? void 0 : labels.days) != null ? _g : "days"
|
|
13943
14220
|
] })
|
|
14221
|
+
] }),
|
|
14222
|
+
groupSize && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 text-white/85", children: [
|
|
14223
|
+
/* @__PURE__ */ jsx(UsersIcon, { className: "h-4 w-4 shrink-0 text-primary-400" }),
|
|
14224
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm font-ui font-semibold", children: groupSize })
|
|
13944
14225
|
] })
|
|
13945
14226
|
] }) : tagline ? /* @__PURE__ */ jsx("p", { className: "mt-2 text-sm sm:text-base text-white/80 font-ui", children: tagline }) : null,
|
|
13946
14227
|
chips && chips.length > 0 && /* @__PURE__ */ jsx("div", { className: "mt-3 flex flex-wrap items-center gap-1.5", children: chips.map((chip, i) => /* @__PURE__ */ jsx(Chip, { href: chip.href, children: chip.label }, i)) }),
|
|
@@ -14385,7 +14666,10 @@ function Stars({ count = 5 }) {
|
|
|
14385
14666
|
i
|
|
14386
14667
|
)) });
|
|
14387
14668
|
}
|
|
14388
|
-
function ItineraryTimeline({
|
|
14669
|
+
function ItineraryTimeline({
|
|
14670
|
+
steps,
|
|
14671
|
+
transferLabel
|
|
14672
|
+
}) {
|
|
14389
14673
|
return /* @__PURE__ */ jsx("ol", { className: "relative flex flex-col gap-0", children: steps.map((step, i) => /* @__PURE__ */ jsxs("li", { className: "relative flex gap-4 pb-8 last:pb-0", children: [
|
|
14390
14674
|
i < steps.length - 1 && /* @__PURE__ */ jsx("div", { className: "absolute left-3.5 top-7 bottom-0 w-px bg-border" }),
|
|
14391
14675
|
/* @__PURE__ */ jsx("div", { className: "relative z-10 mt-1 flex h-7 w-7 shrink-0 items-center justify-center rounded-full border-2 border-primary bg-background", children: /* @__PURE__ */ jsx("span", { className: "text-[10px] font-bold text-primary font-ui", children: i + 1 }) }),
|
|
@@ -14396,7 +14680,7 @@ function ItineraryTimeline({ steps }) {
|
|
|
14396
14680
|
/* @__PURE__ */ jsx(ClockIcon, { className: "h-3 w-3 mr-1" }),
|
|
14397
14681
|
step.duration
|
|
14398
14682
|
] }),
|
|
14399
|
-
step.isTransfer && /* @__PURE__ */ jsx(Badge, { variant: "secondary", className: "text-xs font-ui h-5 px-2", children: "Transfer" })
|
|
14683
|
+
step.isTransfer && /* @__PURE__ */ jsx(Badge, { variant: "secondary", className: "text-xs font-ui h-5 px-2", children: transferLabel != null ? transferLabel : "Transfer" })
|
|
14400
14684
|
] }),
|
|
14401
14685
|
/* @__PURE__ */ jsx("div", { className: "text-base text-muted-foreground leading-relaxed [&_p:not(:last-child)]:mb-2 [&_strong]:text-foreground [&_strong]:font-semibold", children: step.description })
|
|
14402
14686
|
] })
|
|
@@ -14413,6 +14697,7 @@ function TripPage({
|
|
|
14413
14697
|
tagline,
|
|
14414
14698
|
destination,
|
|
14415
14699
|
duration,
|
|
14700
|
+
groupSize,
|
|
14416
14701
|
images,
|
|
14417
14702
|
videoUrl,
|
|
14418
14703
|
breadcrumb,
|
|
@@ -14436,6 +14721,7 @@ function TripPage({
|
|
|
14436
14721
|
whenItOperates,
|
|
14437
14722
|
food,
|
|
14438
14723
|
foodGallery,
|
|
14724
|
+
foodGalleryVariant = "gridCompact",
|
|
14439
14725
|
termsAndConditions,
|
|
14440
14726
|
meetingPoints,
|
|
14441
14727
|
meetingPoint,
|
|
@@ -14455,7 +14741,13 @@ function TripPage({
|
|
|
14455
14741
|
currencyEstimates,
|
|
14456
14742
|
priceInfo,
|
|
14457
14743
|
onBook,
|
|
14744
|
+
onBookingSubmit,
|
|
14745
|
+
bookingLoading,
|
|
14746
|
+
bookingDefaults,
|
|
14747
|
+
bookingLabels,
|
|
14458
14748
|
bookLabel,
|
|
14749
|
+
fromLabel,
|
|
14750
|
+
perPersonLabel,
|
|
14459
14751
|
siteHeader,
|
|
14460
14752
|
uiVariant = "v1",
|
|
14461
14753
|
features,
|
|
@@ -14632,6 +14924,15 @@ function TripPage({
|
|
|
14632
14924
|
breadcrumb,
|
|
14633
14925
|
destination,
|
|
14634
14926
|
duration,
|
|
14927
|
+
groupSize,
|
|
14928
|
+
labels: {
|
|
14929
|
+
night: labels == null ? void 0 : labels.night,
|
|
14930
|
+
nights: labels == null ? void 0 : labels.nights,
|
|
14931
|
+
day: labels == null ? void 0 : labels.day,
|
|
14932
|
+
days: labels == null ? void 0 : labels.days,
|
|
14933
|
+
previousImage: labels == null ? void 0 : labels.previousImage,
|
|
14934
|
+
nextImage: labels == null ? void 0 : labels.nextImage
|
|
14935
|
+
},
|
|
14635
14936
|
tagline,
|
|
14636
14937
|
chips,
|
|
14637
14938
|
siteHeader,
|
|
@@ -14692,7 +14993,7 @@ function TripPage({
|
|
|
14692
14993
|
)) })
|
|
14693
14994
|
] }) : itinerary && itinerary.length > 0 && /* @__PURE__ */ jsxs("section", { id: "trip-section-itinerary", className: "scroll-mt-20", children: [
|
|
14694
14995
|
/* @__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" }),
|
|
14695
|
-
/* @__PURE__ */ jsx(ItineraryTimeline, { steps: itinerary })
|
|
14996
|
+
/* @__PURE__ */ jsx(ItineraryTimeline, { steps: itinerary, transferLabel: labels == null ? void 0 : labels.transfer })
|
|
14696
14997
|
] }),
|
|
14697
14998
|
included && included.length > 0 && /* @__PURE__ */ jsxs("section", { id: "trip-section-included", className: "scroll-mt-20", children: [
|
|
14698
14999
|
/* @__PURE__ */ jsxs("h2", { className: "text-xl font-bold text-foreground font-heading mb-4 flex items-center gap-2", children: [
|
|
@@ -14729,7 +15030,7 @@ function TripPage({
|
|
|
14729
15030
|
id: "trip-section-when-it-operates",
|
|
14730
15031
|
className: "scroll-mt-20 border-b border-border",
|
|
14731
15032
|
children: [
|
|
14732
|
-
/* @__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: [
|
|
15033
|
+
/* @__PURE__ */ jsx(AccordionTrigger, { headingLevel: 2, 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: [
|
|
14733
15034
|
(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" }),
|
|
14734
15035
|
(_f = labels == null ? void 0 : labels.whenItOperates) != null ? _f : "When this tour operates"
|
|
14735
15036
|
] }) }),
|
|
@@ -14744,7 +15045,7 @@ function TripPage({
|
|
|
14744
15045
|
id: "trip-section-accommodation",
|
|
14745
15046
|
className: "scroll-mt-20 border-b border-border",
|
|
14746
15047
|
children: [
|
|
14747
|
-
/* @__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: [
|
|
15048
|
+
/* @__PURE__ */ jsx(AccordionTrigger, { headingLevel: 2, 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: [
|
|
14748
15049
|
(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" }),
|
|
14749
15050
|
(_g = labels == null ? void 0 : labels.accommodation) != null ? _g : "Accommodation"
|
|
14750
15051
|
] }) }),
|
|
@@ -14753,6 +15054,13 @@ function TripPage({
|
|
|
14753
15054
|
accommodationGallery && accommodationGallery.length > 0 && /* @__PURE__ */ jsx("div", { className: cn(accommodation && "mt-6"), children: /* @__PURE__ */ jsx(
|
|
14754
15055
|
PhotoGallery,
|
|
14755
15056
|
{
|
|
15057
|
+
labels: {
|
|
15058
|
+
seeMore: labels == null ? void 0 : labels.seeMore,
|
|
15059
|
+
showLess: labels == null ? void 0 : labels.showLess,
|
|
15060
|
+
close: labels == null ? void 0 : labels.galleryClose,
|
|
15061
|
+
previous: labels == null ? void 0 : labels.galleryPrevious,
|
|
15062
|
+
next: labels == null ? void 0 : labels.galleryNext
|
|
15063
|
+
},
|
|
14756
15064
|
photos: accommodationGallery,
|
|
14757
15065
|
variant: accommodationGalleryVariant,
|
|
14758
15066
|
initialVisible: 6
|
|
@@ -14769,7 +15077,7 @@ function TripPage({
|
|
|
14769
15077
|
id: "trip-section-food",
|
|
14770
15078
|
className: "scroll-mt-20 border-b border-border",
|
|
14771
15079
|
children: [
|
|
14772
|
-
/* @__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: [
|
|
15080
|
+
/* @__PURE__ */ jsx(AccordionTrigger, { headingLevel: 2, 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: [
|
|
14773
15081
|
(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" }),
|
|
14774
15082
|
(_h = labels == null ? void 0 : labels.food) != null ? _h : "Food"
|
|
14775
15083
|
] }) }),
|
|
@@ -14778,8 +15086,15 @@ function TripPage({
|
|
|
14778
15086
|
foodGallery && foodGallery.length > 0 && /* @__PURE__ */ jsx("div", { className: cn(food && "mt-6"), children: /* @__PURE__ */ jsx(
|
|
14779
15087
|
PhotoGallery,
|
|
14780
15088
|
{
|
|
15089
|
+
labels: {
|
|
15090
|
+
seeMore: labels == null ? void 0 : labels.seeMore,
|
|
15091
|
+
showLess: labels == null ? void 0 : labels.showLess,
|
|
15092
|
+
close: labels == null ? void 0 : labels.galleryClose,
|
|
15093
|
+
previous: labels == null ? void 0 : labels.galleryPrevious,
|
|
15094
|
+
next: labels == null ? void 0 : labels.galleryNext
|
|
15095
|
+
},
|
|
14781
15096
|
photos: foodGallery,
|
|
14782
|
-
variant:
|
|
15097
|
+
variant: foodGalleryVariant,
|
|
14783
15098
|
initialVisible: 6
|
|
14784
15099
|
}
|
|
14785
15100
|
) })
|
|
@@ -14794,18 +15109,21 @@ function TripPage({
|
|
|
14794
15109
|
id: "trip-section-meeting",
|
|
14795
15110
|
className: "scroll-mt-20 border-b border-border",
|
|
14796
15111
|
children: [
|
|
14797
|
-
/* @__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: [
|
|
15112
|
+
/* @__PURE__ */ jsx(AccordionTrigger, { headingLevel: 2, 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: [
|
|
14798
15113
|
(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" }),
|
|
14799
15114
|
(_i = labels == null ? void 0 : labels.meetingPoint) != null ? _i : "Meeting point"
|
|
14800
15115
|
] }) }),
|
|
14801
|
-
/* @__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) =>
|
|
14802
|
-
|
|
14803
|
-
/* @__PURE__ */ jsxs("div", { children: [
|
|
14804
|
-
|
|
14805
|
-
/* @__PURE__ */
|
|
14806
|
-
|
|
14807
|
-
|
|
14808
|
-
|
|
15116
|
+
/* @__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) => {
|
|
15117
|
+
var _a2, _b2, _c2;
|
|
15118
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-3 rounded-xl border border-border p-4", children: [
|
|
15119
|
+
/* @__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" }) }),
|
|
15120
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
15121
|
+
mp.type && /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground font-ui uppercase tracking-wide mb-0.5", children: mp.type === "activity" ? (_a2 = labels == null ? void 0 : labels.meetingPointActivity) != null ? _a2 : "Activity location" : mp.type === "alternative" ? (_b2 = labels == null ? void 0 : labels.meetingPointAlternative) != null ? _b2 : "Alternative meeting point" : (_c2 = labels == null ? void 0 : labels.meetingPoint) != null ? _c2 : "Meeting point" }),
|
|
15122
|
+
/* @__PURE__ */ jsx("p", { className: "text-sm font-bold text-foreground font-heading", children: mp.name }),
|
|
15123
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground font-ui mt-0.5", children: mp.address })
|
|
15124
|
+
] })
|
|
15125
|
+
] }, i);
|
|
15126
|
+
}) }) })
|
|
14809
15127
|
]
|
|
14810
15128
|
}
|
|
14811
15129
|
),
|
|
@@ -14816,7 +15134,7 @@ function TripPage({
|
|
|
14816
15134
|
id: "trip-section-how-to-get-there",
|
|
14817
15135
|
className: "scroll-mt-20 border-b border-border",
|
|
14818
15136
|
children: [
|
|
14819
|
-
/* @__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: [
|
|
15137
|
+
/* @__PURE__ */ jsx(AccordionTrigger, { headingLevel: 2, 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: [
|
|
14820
15138
|
(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" }),
|
|
14821
15139
|
(_j = labels == null ? void 0 : labels.howToGetThere) != null ? _j : "How to get there"
|
|
14822
15140
|
] }) }),
|
|
@@ -14831,7 +15149,7 @@ function TripPage({
|
|
|
14831
15149
|
id: "trip-section-weather",
|
|
14832
15150
|
className: "scroll-mt-20 border-b border-border",
|
|
14833
15151
|
children: [
|
|
14834
|
-
/* @__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: [
|
|
15152
|
+
/* @__PURE__ */ jsx(AccordionTrigger, { headingLevel: 2, 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: [
|
|
14835
15153
|
(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" }),
|
|
14836
15154
|
(_k = labels == null ? void 0 : labels.weather) != null ? _k : "Weather"
|
|
14837
15155
|
] }) }),
|
|
@@ -14846,7 +15164,7 @@ function TripPage({
|
|
|
14846
15164
|
id: "trip-section-what-to-bring",
|
|
14847
15165
|
className: "scroll-mt-20 border-b border-border",
|
|
14848
15166
|
children: [
|
|
14849
|
-
/* @__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: [
|
|
15167
|
+
/* @__PURE__ */ jsx(AccordionTrigger, { headingLevel: 2, 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: [
|
|
14850
15168
|
(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" }),
|
|
14851
15169
|
(_l = labels == null ? void 0 : labels.whatToBring) != null ? _l : "What to bring"
|
|
14852
15170
|
] }) }),
|
|
@@ -14861,7 +15179,7 @@ function TripPage({
|
|
|
14861
15179
|
id: "trip-section-optional-extras",
|
|
14862
15180
|
className: "scroll-mt-20 border-b border-border",
|
|
14863
15181
|
children: [
|
|
14864
|
-
/* @__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: [
|
|
15182
|
+
/* @__PURE__ */ jsx(AccordionTrigger, { headingLevel: 2, 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: [
|
|
14865
15183
|
(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" }),
|
|
14866
15184
|
(_m = labels == null ? void 0 : labels.optionalExtras) != null ? _m : "Optional extras"
|
|
14867
15185
|
] }) }),
|
|
@@ -14876,7 +15194,7 @@ function TripPage({
|
|
|
14876
15194
|
id: "trip-section-terms",
|
|
14877
15195
|
className: "scroll-mt-20 border-b border-border",
|
|
14878
15196
|
children: [
|
|
14879
|
-
/* @__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: [
|
|
15197
|
+
/* @__PURE__ */ jsx(AccordionTrigger, { headingLevel: 2, 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: [
|
|
14880
15198
|
(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" }),
|
|
14881
15199
|
(_n = labels == null ? void 0 : labels.terms) != null ? _n : "Terms & conditions"
|
|
14882
15200
|
] }) }),
|
|
@@ -14888,7 +15206,7 @@ function TripPage({
|
|
|
14888
15206
|
}
|
|
14889
15207
|
),
|
|
14890
15208
|
faqs && faqs.length > 0 && (() => {
|
|
14891
|
-
var _a2;
|
|
15209
|
+
var _a2, _b2, _c2;
|
|
14892
15210
|
const visibleFaqs = faqsExpanded ? faqs : faqs.slice(0, faqInitialCount);
|
|
14893
15211
|
const hiddenCount = faqs.length - visibleFaqs.length;
|
|
14894
15212
|
return /* @__PURE__ */ jsxs("section", { id: "trip-section-faq", className: "scroll-mt-20", children: [
|
|
@@ -14910,10 +15228,11 @@ function TripPage({
|
|
|
14910
15228
|
),
|
|
14911
15229
|
children: faqsExpanded ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
14912
15230
|
/* @__PURE__ */ jsx(ChevronUpIcon, { className: "h-4 w-4 text-muted-foreground" }),
|
|
14913
|
-
"Show less"
|
|
15231
|
+
(_b2 = labels == null ? void 0 : labels.showLess) != null ? _b2 : "Show less"
|
|
14914
15232
|
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
14915
15233
|
/* @__PURE__ */ jsx(ChevronDownIcon, { className: "h-4 w-4 text-muted-foreground" }),
|
|
14916
|
-
"See more
|
|
15234
|
+
(_c2 = labels == null ? void 0 : labels.seeMore) != null ? _c2 : "See more",
|
|
15235
|
+
" (",
|
|
14917
15236
|
hiddenCount,
|
|
14918
15237
|
")"
|
|
14919
15238
|
] })
|
|
@@ -14954,6 +15273,8 @@ function TripPage({
|
|
|
14954
15273
|
departureTimes,
|
|
14955
15274
|
onBook: (gallery == null ? void 0 : gallery.length) ? scrollToBookingForm : onBook,
|
|
14956
15275
|
bookLabel: bookLabel != null ? bookLabel : "Check availability",
|
|
15276
|
+
fromLabel,
|
|
15277
|
+
perPersonLabel,
|
|
14957
15278
|
variant: "card",
|
|
14958
15279
|
belowPrice: trustpilotMini ? /* @__PURE__ */ jsx(TrustpilotEmbed, { config: trustpilotMini }) : void 0,
|
|
14959
15280
|
benefits,
|
|
@@ -14996,6 +15317,8 @@ function TripPage({
|
|
|
14996
15317
|
departureTimes,
|
|
14997
15318
|
onBook: (gallery == null ? void 0 : gallery.length) ? scrollToBookingForm : onBook,
|
|
14998
15319
|
bookLabel: bookLabel != null ? bookLabel : "Check availability",
|
|
15320
|
+
fromLabel,
|
|
15321
|
+
perPersonLabel,
|
|
14999
15322
|
variant: "card",
|
|
15000
15323
|
belowPrice: trustpilotMini ? /* @__PURE__ */ jsx(TrustpilotEmbed, { config: trustpilotMini }) : void 0,
|
|
15001
15324
|
benefits,
|
|
@@ -15008,12 +15331,27 @@ function TripPage({
|
|
|
15008
15331
|
gallery && gallery.length > 0 && /* @__PURE__ */ jsx("section", { ref: galleryRef, id: "trip-section-gallery", className: "scroll-mt-20", children: /* @__PURE__ */ jsx(
|
|
15009
15332
|
PhotoGallery,
|
|
15010
15333
|
{
|
|
15334
|
+
labels: {
|
|
15335
|
+
seeMore: labels == null ? void 0 : labels.seeMore,
|
|
15336
|
+
showLess: labels == null ? void 0 : labels.showLess,
|
|
15337
|
+
close: labels == null ? void 0 : labels.galleryClose,
|
|
15338
|
+
previous: labels == null ? void 0 : labels.galleryPrevious,
|
|
15339
|
+
next: labels == null ? void 0 : labels.galleryNext
|
|
15340
|
+
},
|
|
15011
15341
|
photos: gallery,
|
|
15012
15342
|
variant: "gridCompact",
|
|
15013
15343
|
initialVisible: 8
|
|
15014
15344
|
}
|
|
15015
15345
|
) }),
|
|
15016
|
-
gallery && gallery.length > 0 && /* @__PURE__ */ jsx("div", { ref: pricingBarRef, className: "mx-auto w-full max-w-6xl px-6 sm:px-8 py-12", children: /* @__PURE__ */ jsx("div", { id: "trip-booking-form", className: "rounded-2xl border border-border bg-card p-8 shadow-sm", children: /* @__PURE__ */ jsx(
|
|
15346
|
+
gallery && gallery.length > 0 && /* @__PURE__ */ jsx("div", { ref: pricingBarRef, className: "mx-auto w-full max-w-6xl px-6 sm:px-8 py-12", children: /* @__PURE__ */ jsx("div", { id: "trip-booking-form", className: "rounded-2xl border border-border bg-card p-8 shadow-sm", children: /* @__PURE__ */ jsx(
|
|
15347
|
+
BookingForm,
|
|
15348
|
+
{
|
|
15349
|
+
labels: bookingLabels,
|
|
15350
|
+
defaultValues: bookingDefaults,
|
|
15351
|
+
onSubmit: onBookingSubmit,
|
|
15352
|
+
loading: bookingLoading
|
|
15353
|
+
}
|
|
15354
|
+
) }) }),
|
|
15017
15355
|
/* @__PURE__ */ jsx("div", { className: "fixed bottom-0 inset-x-0 z-30 lg:hidden border-t border-border bg-background/95 backdrop-blur-sm px-4 py-3", children: /* @__PURE__ */ jsx(
|
|
15018
15356
|
PricingTrip,
|
|
15019
15357
|
{
|
|
@@ -15021,6 +15359,8 @@ function TripPage({
|
|
|
15021
15359
|
currency,
|
|
15022
15360
|
onBook: (gallery == null ? void 0 : gallery.length) ? scrollToBookingForm : onBook,
|
|
15023
15361
|
bookLabel: bookLabel != null ? bookLabel : "Book now",
|
|
15362
|
+
fromLabel,
|
|
15363
|
+
perPersonLabel,
|
|
15024
15364
|
variant: "compact",
|
|
15025
15365
|
sharp: true,
|
|
15026
15366
|
priceInfo,
|
|
@@ -15054,6 +15394,7 @@ function CategoryPage2({
|
|
|
15054
15394
|
trustpilotMini,
|
|
15055
15395
|
breadcrumb,
|
|
15056
15396
|
siteHeader,
|
|
15397
|
+
heroRightSlot,
|
|
15057
15398
|
popularTours,
|
|
15058
15399
|
popularToursTitle = "More adventures calling your name",
|
|
15059
15400
|
popularToursEyebrow = "Popular tours",
|
|
@@ -15064,6 +15405,7 @@ function CategoryPage2({
|
|
|
15064
15405
|
sortOptions,
|
|
15065
15406
|
defaultSort,
|
|
15066
15407
|
tripsInitialCount = 15,
|
|
15408
|
+
tripListingSlot,
|
|
15067
15409
|
trustpilot,
|
|
15068
15410
|
reviewsTitle = "Don't just take our word for it",
|
|
15069
15411
|
reviewsSubtitle,
|
|
@@ -15080,6 +15422,12 @@ function CategoryPage2({
|
|
|
15080
15422
|
faqInitialCount = 5,
|
|
15081
15423
|
gallery,
|
|
15082
15424
|
galleryTitle,
|
|
15425
|
+
loadMoreLabel,
|
|
15426
|
+
showLessLabel,
|
|
15427
|
+
seeMoreLabel,
|
|
15428
|
+
viewAllPostsLabel,
|
|
15429
|
+
cardLabels,
|
|
15430
|
+
filterLabels,
|
|
15083
15431
|
className
|
|
15084
15432
|
}) {
|
|
15085
15433
|
var _a;
|
|
@@ -15236,7 +15584,8 @@ function CategoryPage2({
|
|
|
15236
15584
|
/* @__PURE__ */ jsx("h1", { className: "text-3xl sm:text-5xl font-bold text-white font-heading leading-tight max-w-3xl", children: title }),
|
|
15237
15585
|
intro && /* @__PURE__ */ jsx("div", { className: "mt-4 text-base sm:text-lg text-white/90 leading-relaxed max-w-2xl [&_strong]:font-semibold [&_a]:underline", children: intro }),
|
|
15238
15586
|
trustpilotMini && /* @__PURE__ */ jsx("div", { className: "mt-5 max-w-sm", children: /* @__PURE__ */ jsx(TrustpilotEmbed, { config: trustpilotMini }) })
|
|
15239
|
-
] })
|
|
15587
|
+
] }),
|
|
15588
|
+
heroRightSlot && /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-x-0 bottom-5 z-20 sm:bottom-6", children: /* @__PURE__ */ jsx("div", { className: "mx-auto flex max-w-6xl justify-end px-6 sm:px-8", children: /* @__PURE__ */ jsx("div", { className: "pointer-events-auto", children: heroRightSlot }) }) })
|
|
15240
15589
|
]
|
|
15241
15590
|
}
|
|
15242
15591
|
),
|
|
@@ -15254,6 +15603,7 @@ function CategoryPage2({
|
|
|
15254
15603
|
return /* @__PURE__ */ jsx(
|
|
15255
15604
|
TripCard,
|
|
15256
15605
|
__spreadProps(__spreadValues({}, cardProps), {
|
|
15606
|
+
labels: cardLabels,
|
|
15257
15607
|
variant: "overlay",
|
|
15258
15608
|
size: (_b = cardProps.size) != null ? _b : "md"
|
|
15259
15609
|
}),
|
|
@@ -15263,63 +15613,68 @@ function CategoryPage2({
|
|
|
15263
15613
|
] }),
|
|
15264
15614
|
/* @__PURE__ */ jsxs("section", { className: "mx-auto w-full max-w-6xl px-6 sm:px-8 pt-6 sm:pt-8 pb-12", children: [
|
|
15265
15615
|
(tripsTitle || tripsEyebrow) && /* @__PURE__ */ jsx(SectionHeading2, { eyebrow: tripsEyebrow, title: tripsTitle != null ? tripsTitle : "" }),
|
|
15266
|
-
|
|
15267
|
-
|
|
15268
|
-
|
|
15269
|
-
|
|
15270
|
-
|
|
15271
|
-
|
|
15272
|
-
|
|
15273
|
-
|
|
15274
|
-
|
|
15275
|
-
|
|
15276
|
-
|
|
15277
|
-
|
|
15278
|
-
|
|
15279
|
-
|
|
15280
|
-
|
|
15281
|
-
" ",
|
|
15282
|
-
|
|
15283
|
-
|
|
15284
|
-
|
|
15285
|
-
|
|
15286
|
-
|
|
15287
|
-
|
|
15288
|
-
|
|
15289
|
-
|
|
15290
|
-
|
|
15291
|
-
|
|
15292
|
-
|
|
15293
|
-
|
|
15294
|
-
|
|
15295
|
-
|
|
15296
|
-
|
|
15297
|
-
|
|
15298
|
-
|
|
15299
|
-
|
|
15300
|
-
|
|
15301
|
-
|
|
15302
|
-
|
|
15303
|
-
|
|
15304
|
-
|
|
15305
|
-
|
|
15306
|
-
|
|
15307
|
-
|
|
15308
|
-
|
|
15309
|
-
|
|
15310
|
-
|
|
15311
|
-
|
|
15312
|
-
|
|
15313
|
-
|
|
15314
|
-
|
|
15315
|
-
|
|
15316
|
-
|
|
15317
|
-
|
|
15318
|
-
|
|
15319
|
-
|
|
15320
|
-
|
|
15321
|
-
|
|
15322
|
-
|
|
15616
|
+
tripListingSlot != null ? tripListingSlot : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
15617
|
+
filterGroups && filterGroups.length > 0 && /* @__PURE__ */ jsx("div", { className: "mb-6", children: /* @__PURE__ */ jsx(
|
|
15618
|
+
FilterPanel,
|
|
15619
|
+
{
|
|
15620
|
+
variant: "horizontal",
|
|
15621
|
+
labels: filterLabels,
|
|
15622
|
+
groups: filterGroups,
|
|
15623
|
+
value: filterValue,
|
|
15624
|
+
onChange: setFilterValue,
|
|
15625
|
+
onClearAll: () => setFilterValue({}),
|
|
15626
|
+
sortOptions,
|
|
15627
|
+
sort,
|
|
15628
|
+
onSortChange: setSort
|
|
15629
|
+
}
|
|
15630
|
+
) }),
|
|
15631
|
+
/* @__PURE__ */ jsxs("p", { className: "text-sm text-muted-foreground font-ui mb-5", children: [
|
|
15632
|
+
sortedTrips.length,
|
|
15633
|
+
" ",
|
|
15634
|
+
sortedTrips.length === 1 ? "trip" : "trips",
|
|
15635
|
+
" found"
|
|
15636
|
+
] }),
|
|
15637
|
+
(() => {
|
|
15638
|
+
const visibleTrips = tripsExpanded ? sortedTrips : sortedTrips.slice(0, tripsInitialCount);
|
|
15639
|
+
const hiddenCount = sortedTrips.length - visibleTrips.length;
|
|
15640
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
15641
|
+
/* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-x-6 gap-y-8 lg:gap-x-[35px] lg:gap-y-[38px]", children: visibleTrips.map((trip, i) => {
|
|
15642
|
+
const _a2 = trip, { featured: _featured, filterTags: _filterTags, priceValue: _priceValue } = _a2, cardProps = __objRest(_a2, ["featured", "filterTags", "priceValue"]);
|
|
15643
|
+
return /* @__PURE__ */ jsx(
|
|
15644
|
+
TripCard,
|
|
15645
|
+
__spreadProps(__spreadValues({}, cardProps), {
|
|
15646
|
+
labels: cardLabels,
|
|
15647
|
+
className: cn("w-full h-auto", cardProps.className)
|
|
15648
|
+
}),
|
|
15649
|
+
i
|
|
15650
|
+
);
|
|
15651
|
+
}) }),
|
|
15652
|
+
sortedTrips.length > tripsInitialCount && /* @__PURE__ */ jsx("div", { className: "mt-8 flex justify-center", children: /* @__PURE__ */ jsx(
|
|
15653
|
+
"button",
|
|
15654
|
+
{
|
|
15655
|
+
type: "button",
|
|
15656
|
+
onClick: () => setTripsExpanded((v) => !v),
|
|
15657
|
+
className: cn(
|
|
15658
|
+
"inline-flex items-center gap-2 rounded-full border border-border bg-background px-5 py-2.5",
|
|
15659
|
+
"text-sm font-semibold text-foreground shadow-sm",
|
|
15660
|
+
"hover:bg-muted transition-colors duration-150",
|
|
15661
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
|
|
15662
|
+
),
|
|
15663
|
+
children: tripsExpanded ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
15664
|
+
/* @__PURE__ */ jsx(ChevronUpIcon, { className: "h-4 w-4 text-muted-foreground" }),
|
|
15665
|
+
showLessLabel != null ? showLessLabel : "Show less"
|
|
15666
|
+
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
15667
|
+
/* @__PURE__ */ jsx(ChevronDownIcon, { className: "h-4 w-4 text-muted-foreground" }),
|
|
15668
|
+
loadMoreLabel != null ? loadMoreLabel : "Load more",
|
|
15669
|
+
" (",
|
|
15670
|
+
hiddenCount,
|
|
15671
|
+
")"
|
|
15672
|
+
] })
|
|
15673
|
+
}
|
|
15674
|
+
) })
|
|
15675
|
+
] });
|
|
15676
|
+
})()
|
|
15677
|
+
] })
|
|
15323
15678
|
] }),
|
|
15324
15679
|
trustpilot && /* @__PURE__ */ jsxs("section", { className: "mx-auto w-full max-w-6xl px-6 sm:px-8 py-12 border-t border-border", children: [
|
|
15325
15680
|
/* @__PURE__ */ jsx("h2", { className: "text-2xl sm:text-3xl font-bold text-foreground font-heading mb-2", children: reviewsTitle }),
|
|
@@ -15356,7 +15711,7 @@ function CategoryPage2({
|
|
|
15356
15711
|
href: travelGuideHref != null ? travelGuideHref : blogPostsViewAllHref,
|
|
15357
15712
|
className: "inline-flex items-center gap-1.5 text-sm font-semibold text-primary hover:underline",
|
|
15358
15713
|
children: [
|
|
15359
|
-
travelGuideHref ? travelGuideLabel : "View all posts",
|
|
15714
|
+
travelGuideHref ? travelGuideLabel : viewAllPostsLabel != null ? viewAllPostsLabel : "View all posts",
|
|
15360
15715
|
/* @__PURE__ */ jsx(ArrowRightIcon, { className: "h-4 w-4" })
|
|
15361
15716
|
]
|
|
15362
15717
|
}
|
|
@@ -15385,10 +15740,11 @@ function CategoryPage2({
|
|
|
15385
15740
|
),
|
|
15386
15741
|
children: faqsExpanded ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
15387
15742
|
/* @__PURE__ */ jsx(ChevronUpIcon, { className: "h-4 w-4 text-muted-foreground" }),
|
|
15388
|
-
"Show less"
|
|
15743
|
+
showLessLabel != null ? showLessLabel : "Show less"
|
|
15389
15744
|
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
15390
15745
|
/* @__PURE__ */ jsx(ChevronDownIcon, { className: "h-4 w-4 text-muted-foreground" }),
|
|
15391
|
-
"See more
|
|
15746
|
+
seeMoreLabel != null ? seeMoreLabel : "See more",
|
|
15747
|
+
" (",
|
|
15392
15748
|
hiddenCount,
|
|
15393
15749
|
")"
|
|
15394
15750
|
] })
|
|
@@ -15456,6 +15812,7 @@ function ActivityCard({
|
|
|
15456
15812
|
{
|
|
15457
15813
|
src: image,
|
|
15458
15814
|
alt: imageAlt,
|
|
15815
|
+
title: imageAlt || void 0,
|
|
15459
15816
|
className: "h-full w-full object-cover transition-transform duration-300 group-hover:scale-105"
|
|
15460
15817
|
}
|
|
15461
15818
|
),
|
|
@@ -17157,7 +17514,1402 @@ function StickyBookingCard({
|
|
|
17157
17514
|
}
|
|
17158
17515
|
);
|
|
17159
17516
|
}
|
|
17517
|
+
var DEFAULT_TRUSTPILOT = {
|
|
17518
|
+
businessUnitId: "6171e6a56fc555750dd81ae7",
|
|
17519
|
+
templateId: "5419b732fbfb950b10de65e5",
|
|
17520
|
+
locale: "en-US",
|
|
17521
|
+
styleHeight: "24px",
|
|
17522
|
+
styleWidth: "100%",
|
|
17523
|
+
token: "d3580e48-fedc-4b14-b705-172180cf241d",
|
|
17524
|
+
theme: "dark",
|
|
17525
|
+
fallbackHref: "https://www.trustpilot.com/review/planetaexo.com",
|
|
17526
|
+
fallbackLabel: "Excellent"
|
|
17527
|
+
};
|
|
17528
|
+
function RatingStars({ stars = 5 }) {
|
|
17529
|
+
return /* @__PURE__ */ jsx("div", { className: "flex items-center gap-0.5", "aria-hidden": true, children: Array.from({ length: 5 }).map((_, i) => {
|
|
17530
|
+
const filled = i + 1 <= Math.round(stars);
|
|
17531
|
+
return /* @__PURE__ */ jsx(
|
|
17532
|
+
"span",
|
|
17533
|
+
{
|
|
17534
|
+
className: cn(
|
|
17535
|
+
"flex h-5 w-5 items-center justify-center rounded-[3px]",
|
|
17536
|
+
filled ? "bg-primary" : "bg-white/30"
|
|
17537
|
+
),
|
|
17538
|
+
children: /* @__PURE__ */ jsx(StarIcon, { className: "h-3 w-3 fill-white text-white" })
|
|
17539
|
+
},
|
|
17540
|
+
i
|
|
17541
|
+
);
|
|
17542
|
+
}) });
|
|
17543
|
+
}
|
|
17544
|
+
function Rating({ label, stars = 5, provider, href }) {
|
|
17545
|
+
const content = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
17546
|
+
label && /* @__PURE__ */ jsx("span", { className: "text-sm font-ui font-bold text-white", children: label }),
|
|
17547
|
+
/* @__PURE__ */ jsx(RatingStars, { stars }),
|
|
17548
|
+
provider && /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1 text-sm font-ui font-bold text-white", children: [
|
|
17549
|
+
/* @__PURE__ */ jsx(StarIcon, { className: "h-4 w-4 fill-primary text-primary" }),
|
|
17550
|
+
provider
|
|
17551
|
+
] })
|
|
17552
|
+
] });
|
|
17553
|
+
if (href) {
|
|
17554
|
+
return /* @__PURE__ */ jsx(
|
|
17555
|
+
"a",
|
|
17556
|
+
{
|
|
17557
|
+
href,
|
|
17558
|
+
target: "_blank",
|
|
17559
|
+
rel: "noreferrer noopener",
|
|
17560
|
+
"aria-label": `${label != null ? label : ""} ${stars} out of 5 \u2014 ${provider != null ? provider : "reviews"}`.trim(),
|
|
17561
|
+
className: "inline-flex items-center gap-2.5 transition-opacity hover:opacity-90",
|
|
17562
|
+
children: content
|
|
17563
|
+
}
|
|
17564
|
+
);
|
|
17565
|
+
}
|
|
17566
|
+
return /* @__PURE__ */ jsx("div", { className: "inline-flex items-center gap-2.5", children: content });
|
|
17567
|
+
}
|
|
17568
|
+
function HomeHeader({
|
|
17569
|
+
images,
|
|
17570
|
+
videoUrl,
|
|
17571
|
+
eyebrow,
|
|
17572
|
+
title,
|
|
17573
|
+
subtitle,
|
|
17574
|
+
cta,
|
|
17575
|
+
trustpilot,
|
|
17576
|
+
rating,
|
|
17577
|
+
pressLogos,
|
|
17578
|
+
pressLabel = "In the press",
|
|
17579
|
+
pressLabelHref,
|
|
17580
|
+
siteHeader,
|
|
17581
|
+
align = "center",
|
|
17582
|
+
className
|
|
17583
|
+
}) {
|
|
17584
|
+
var _a;
|
|
17585
|
+
const [heroIndex, setHeroIndex] = React32.useState(0);
|
|
17586
|
+
const [videoReady, setVideoReady] = React32.useState(false);
|
|
17587
|
+
const videoRef = React32.useRef(null);
|
|
17588
|
+
const isHls = !!(videoUrl == null ? void 0 : videoUrl.includes(".m3u8"));
|
|
17589
|
+
const validImages = React32.useMemo(
|
|
17590
|
+
() => images.map((u) => u == null ? void 0 : u.trim()).filter(Boolean),
|
|
17591
|
+
[images]
|
|
17592
|
+
);
|
|
17593
|
+
const hasHeroImage = validImages.length > 0;
|
|
17594
|
+
const heroSrc = (i) => {
|
|
17595
|
+
var _a2;
|
|
17596
|
+
return (_a2 = validImages[i]) != null ? _a2 : "";
|
|
17597
|
+
};
|
|
17598
|
+
const safeIndex = Math.min(heroIndex, Math.max(0, validImages.length - 1));
|
|
17599
|
+
const currentSrc = heroSrc(safeIndex);
|
|
17600
|
+
const showCarousel = !videoUrl && validImages.length > 1;
|
|
17601
|
+
const tpConfig = trustpilot ? typeof trustpilot === "object" ? __spreadValues(__spreadValues({}, DEFAULT_TRUSTPILOT), trustpilot) : DEFAULT_TRUSTPILOT : null;
|
|
17602
|
+
useHlsVideo(videoRef, isHls ? videoUrl : void 0);
|
|
17603
|
+
React32.useEffect(() => {
|
|
17604
|
+
if (!videoUrl) return;
|
|
17605
|
+
const el = videoRef.current;
|
|
17606
|
+
if (!el) return;
|
|
17607
|
+
const observer = new IntersectionObserver(
|
|
17608
|
+
([entry]) => {
|
|
17609
|
+
if (entry.isIntersecting) {
|
|
17610
|
+
el.play().catch(() => {
|
|
17611
|
+
});
|
|
17612
|
+
} else {
|
|
17613
|
+
el.pause();
|
|
17614
|
+
}
|
|
17615
|
+
},
|
|
17616
|
+
{ threshold: 0.1 }
|
|
17617
|
+
);
|
|
17618
|
+
observer.observe(el);
|
|
17619
|
+
return () => observer.disconnect();
|
|
17620
|
+
}, [videoUrl]);
|
|
17621
|
+
const isCenter = align === "center";
|
|
17622
|
+
return /* @__PURE__ */ jsxs(
|
|
17623
|
+
"section",
|
|
17624
|
+
{
|
|
17625
|
+
className: cn(
|
|
17626
|
+
"relative w-full overflow-hidden",
|
|
17627
|
+
"h-screen min-h-[640px]",
|
|
17628
|
+
hasHeroImage ? "bg-muted" : "bg-zinc-900",
|
|
17629
|
+
className
|
|
17630
|
+
),
|
|
17631
|
+
"data-home-header-align": align,
|
|
17632
|
+
children: [
|
|
17633
|
+
!videoUrl && !hasHeroImage && /* @__PURE__ */ jsx(
|
|
17634
|
+
"div",
|
|
17635
|
+
{
|
|
17636
|
+
className: "absolute inset-0 bg-gradient-to-br from-zinc-900 via-zinc-800 to-zinc-950",
|
|
17637
|
+
"aria-hidden": true
|
|
17638
|
+
}
|
|
17639
|
+
),
|
|
17640
|
+
videoUrl ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
17641
|
+
hasHeroImage ? /* @__PURE__ */ jsx(
|
|
17642
|
+
Picture,
|
|
17643
|
+
{
|
|
17644
|
+
src: validImages[0],
|
|
17645
|
+
alt: "",
|
|
17646
|
+
"aria-hidden": true,
|
|
17647
|
+
fetchPriority: "high",
|
|
17648
|
+
eager: true,
|
|
17649
|
+
className: cn(
|
|
17650
|
+
"absolute inset-0 h-full w-full object-cover transition-opacity duration-700",
|
|
17651
|
+
videoReady ? "opacity-0 pointer-events-none" : "opacity-100"
|
|
17652
|
+
)
|
|
17653
|
+
}
|
|
17654
|
+
) : /* @__PURE__ */ jsx(
|
|
17655
|
+
"div",
|
|
17656
|
+
{
|
|
17657
|
+
className: "absolute inset-0 bg-gradient-to-br from-zinc-900 via-zinc-800 to-zinc-950 transition-opacity duration-700",
|
|
17658
|
+
"aria-hidden": true
|
|
17659
|
+
}
|
|
17660
|
+
),
|
|
17661
|
+
/* @__PURE__ */ jsx(
|
|
17662
|
+
"video",
|
|
17663
|
+
{
|
|
17664
|
+
ref: videoRef,
|
|
17665
|
+
src: isHls ? void 0 : videoUrl,
|
|
17666
|
+
autoPlay: true,
|
|
17667
|
+
muted: true,
|
|
17668
|
+
loop: true,
|
|
17669
|
+
playsInline: true,
|
|
17670
|
+
preload: "auto",
|
|
17671
|
+
poster: hasHeroImage ? validImages[0] : void 0,
|
|
17672
|
+
onCanPlay: () => setVideoReady(true),
|
|
17673
|
+
className: cn(
|
|
17674
|
+
"absolute inset-0 h-full w-full object-cover transition-opacity duration-700",
|
|
17675
|
+
videoReady ? "opacity-100" : "opacity-0"
|
|
17676
|
+
)
|
|
17677
|
+
}
|
|
17678
|
+
)
|
|
17679
|
+
] }) : hasHeroImage ? /* @__PURE__ */ jsx(
|
|
17680
|
+
Picture,
|
|
17681
|
+
{
|
|
17682
|
+
src: currentSrc,
|
|
17683
|
+
alt: title,
|
|
17684
|
+
fetchPriority: safeIndex === 0 ? "high" : "auto",
|
|
17685
|
+
eager: safeIndex === 0,
|
|
17686
|
+
className: "absolute inset-0 h-full w-full object-cover transition-opacity duration-700"
|
|
17687
|
+
}
|
|
17688
|
+
) : null,
|
|
17689
|
+
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-black/30", "aria-hidden": true }),
|
|
17690
|
+
/* @__PURE__ */ jsx(
|
|
17691
|
+
"div",
|
|
17692
|
+
{
|
|
17693
|
+
className: "absolute inset-0 bg-gradient-to-t from-black/70 via-black/10 to-black/30",
|
|
17694
|
+
"aria-hidden": true
|
|
17695
|
+
}
|
|
17696
|
+
),
|
|
17697
|
+
siteHeader && /* @__PURE__ */ jsx(
|
|
17698
|
+
SiteHeader,
|
|
17699
|
+
__spreadProps(__spreadValues({}, Array.isArray(siteHeader) ? { links: siteHeader } : typeof siteHeader === "object" ? siteHeader : {}), {
|
|
17700
|
+
position: "overlay"
|
|
17701
|
+
})
|
|
17702
|
+
),
|
|
17703
|
+
showCarousel && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
17704
|
+
/* @__PURE__ */ jsx(
|
|
17705
|
+
"button",
|
|
17706
|
+
{
|
|
17707
|
+
type: "button",
|
|
17708
|
+
onClick: () => setHeroIndex(
|
|
17709
|
+
(i) => (i - 1 + validImages.length) % validImages.length
|
|
17710
|
+
),
|
|
17711
|
+
className: "absolute left-4 top-1/2 z-20 -translate-y-1/2 flex h-10 w-10 items-center justify-center rounded-full bg-black/30 text-white backdrop-blur-sm hover:bg-black/50 transition-colors",
|
|
17712
|
+
"aria-label": "Previous image",
|
|
17713
|
+
children: /* @__PURE__ */ jsx(ChevronLeftIcon, { className: "h-5 w-5" })
|
|
17714
|
+
}
|
|
17715
|
+
),
|
|
17716
|
+
/* @__PURE__ */ jsx(
|
|
17717
|
+
"button",
|
|
17718
|
+
{
|
|
17719
|
+
type: "button",
|
|
17720
|
+
onClick: () => setHeroIndex((i) => (i + 1) % validImages.length),
|
|
17721
|
+
className: "absolute right-4 top-1/2 z-20 -translate-y-1/2 flex h-10 w-10 items-center justify-center rounded-full bg-black/30 text-white backdrop-blur-sm hover:bg-black/50 transition-colors",
|
|
17722
|
+
"aria-label": "Next image",
|
|
17723
|
+
children: /* @__PURE__ */ jsx(ChevronRightIcon, { className: "h-5 w-5" })
|
|
17724
|
+
}
|
|
17725
|
+
)
|
|
17726
|
+
] }),
|
|
17727
|
+
/* @__PURE__ */ jsxs(
|
|
17728
|
+
"div",
|
|
17729
|
+
{
|
|
17730
|
+
className: cn(
|
|
17731
|
+
"absolute inset-0 z-10 flex flex-col justify-center",
|
|
17732
|
+
"mx-auto w-full max-w-6xl px-6 sm:px-8",
|
|
17733
|
+
"pt-[72px]",
|
|
17734
|
+
// clear the overlay header
|
|
17735
|
+
pressLogos && pressLogos.length > 0 ? "pb-28" : "pb-16",
|
|
17736
|
+
isCenter ? "items-center text-center" : "items-start text-left"
|
|
17737
|
+
),
|
|
17738
|
+
children: [
|
|
17739
|
+
eyebrow && /* @__PURE__ */ jsx("p", { className: "mb-3 text-xs sm:text-sm font-ui font-bold uppercase tracking-[0.2em] text-primary-400", children: eyebrow }),
|
|
17740
|
+
/* @__PURE__ */ jsx(
|
|
17741
|
+
"h1",
|
|
17742
|
+
{
|
|
17743
|
+
className: cn(
|
|
17744
|
+
"font-heading font-black uppercase text-white leading-[0.95]",
|
|
17745
|
+
"text-5xl sm:text-6xl lg:text-7xl",
|
|
17746
|
+
isCenter ? "max-w-4xl" : "max-w-3xl"
|
|
17747
|
+
),
|
|
17748
|
+
children: title
|
|
17749
|
+
}
|
|
17750
|
+
),
|
|
17751
|
+
subtitle && /* @__PURE__ */ jsx(
|
|
17752
|
+
"p",
|
|
17753
|
+
{
|
|
17754
|
+
className: cn(
|
|
17755
|
+
"mt-5 text-lg sm:text-xl font-sans text-white/90",
|
|
17756
|
+
isCenter ? "max-w-2xl" : "max-w-xl"
|
|
17757
|
+
),
|
|
17758
|
+
children: subtitle
|
|
17759
|
+
}
|
|
17760
|
+
),
|
|
17761
|
+
cta && /* @__PURE__ */ jsx("div", { className: "mt-8", children: cta.href ? /* @__PURE__ */ jsx(
|
|
17762
|
+
"a",
|
|
17763
|
+
{
|
|
17764
|
+
href: cta.href,
|
|
17765
|
+
onClick: cta.onClick,
|
|
17766
|
+
className: buttonVariants({ size: "lg" }),
|
|
17767
|
+
children: cta.label
|
|
17768
|
+
}
|
|
17769
|
+
) : /* @__PURE__ */ jsx(Button, { size: "lg", onClick: cta.onClick, children: cta.label }) }),
|
|
17770
|
+
tpConfig ? /* @__PURE__ */ jsxs(
|
|
17771
|
+
"div",
|
|
17772
|
+
{
|
|
17773
|
+
className: cn(
|
|
17774
|
+
"home-trustpilot relative mt-8",
|
|
17775
|
+
// Wide enough for the Micro Star to show the full "Excellent
|
|
17776
|
+
// ★★★★★ Trustpilot" lockup — at 260px the Trustpilot wordmark
|
|
17777
|
+
// was clipped.
|
|
17778
|
+
isCenter && "w-full max-w-[340px]"
|
|
17779
|
+
),
|
|
17780
|
+
children: [
|
|
17781
|
+
/* @__PURE__ */ jsx(TrustpilotEmbed, { config: tpConfig }),
|
|
17782
|
+
/* @__PURE__ */ jsx(
|
|
17783
|
+
"a",
|
|
17784
|
+
{
|
|
17785
|
+
href: (_a = tpConfig.fallbackHref) != null ? _a : "https://www.trustpilot.com/review/planetaexo.com",
|
|
17786
|
+
target: "_blank",
|
|
17787
|
+
rel: "noopener noreferrer",
|
|
17788
|
+
"aria-label": "Read our reviews on Trustpilot",
|
|
17789
|
+
className: "absolute inset-0 z-10"
|
|
17790
|
+
}
|
|
17791
|
+
)
|
|
17792
|
+
]
|
|
17793
|
+
}
|
|
17794
|
+
) : rating ? /* @__PURE__ */ jsx("div", { className: "mt-8", children: /* @__PURE__ */ jsx(Rating, __spreadValues({}, rating)) }) : null
|
|
17795
|
+
]
|
|
17796
|
+
}
|
|
17797
|
+
),
|
|
17798
|
+
pressLogos && pressLogos.length > 0 && /* @__PURE__ */ jsx("div", { className: "absolute inset-x-0 bottom-0 z-10 pb-7", children: /* @__PURE__ */ jsxs("div", { className: "mx-auto flex w-full max-w-6xl flex-wrap items-center justify-center gap-x-7 gap-y-3 px-6 sm:px-8", children: [
|
|
17799
|
+
pressLabelHref ? /* @__PURE__ */ jsx(
|
|
17800
|
+
"a",
|
|
17801
|
+
{
|
|
17802
|
+
href: pressLabelHref,
|
|
17803
|
+
target: "_blank",
|
|
17804
|
+
rel: "noopener noreferrer",
|
|
17805
|
+
className: "text-[10px] font-ui font-bold uppercase tracking-[0.25em] leading-tight text-white/70 transition-colors hover:text-white",
|
|
17806
|
+
children: pressLabel
|
|
17807
|
+
}
|
|
17808
|
+
) : /* @__PURE__ */ jsx("span", { className: "text-[10px] font-ui font-bold uppercase tracking-[0.25em] leading-tight text-white/70", children: pressLabel }),
|
|
17809
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-nowrap items-center justify-center gap-x-7", children: [
|
|
17810
|
+
/* @__PURE__ */ jsx("span", { className: "hidden h-5 w-px bg-white/25 sm:block", "aria-hidden": true }),
|
|
17811
|
+
pressLogos.map((logo, i) => {
|
|
17812
|
+
var _a2, _b, _c, _d;
|
|
17813
|
+
const content = logo.src ? (
|
|
17814
|
+
// eslint-disable-next-line @next/next/no-img-element
|
|
17815
|
+
/* @__PURE__ */ jsx(
|
|
17816
|
+
"img",
|
|
17817
|
+
{
|
|
17818
|
+
src: logo.src,
|
|
17819
|
+
alt: (_b = (_a2 = logo.alt) != null ? _a2 : logo.label) != null ? _b : "Press logo",
|
|
17820
|
+
className: "h-12 w-12 shrink-0 select-none object-contain",
|
|
17821
|
+
draggable: false
|
|
17822
|
+
}
|
|
17823
|
+
)
|
|
17824
|
+
) : /* @__PURE__ */ jsx("span", { className: "font-heading text-base font-bold uppercase tracking-wide", children: logo.label });
|
|
17825
|
+
return logo.href ? /* @__PURE__ */ jsx(
|
|
17826
|
+
"a",
|
|
17827
|
+
{
|
|
17828
|
+
href: logo.href,
|
|
17829
|
+
target: "_blank",
|
|
17830
|
+
rel: "noopener noreferrer",
|
|
17831
|
+
"aria-label": (_d = (_c = logo.alt) != null ? _c : logo.label) != null ? _d : "Press article",
|
|
17832
|
+
className: "shrink-0 text-white/80 opacity-100 transition-opacity hover:opacity-100 hover:text-white focus-visible:opacity-100 [&>img]:opacity-80 [&>img]:hover:opacity-100 [&>img]:transition-opacity",
|
|
17833
|
+
children: content
|
|
17834
|
+
},
|
|
17835
|
+
i
|
|
17836
|
+
) : /* @__PURE__ */ jsx(
|
|
17837
|
+
"span",
|
|
17838
|
+
{
|
|
17839
|
+
className: "shrink-0 text-white/80 [&>img]:opacity-80",
|
|
17840
|
+
children: content
|
|
17841
|
+
},
|
|
17842
|
+
i
|
|
17843
|
+
);
|
|
17844
|
+
})
|
|
17845
|
+
] })
|
|
17846
|
+
] }) })
|
|
17847
|
+
]
|
|
17848
|
+
}
|
|
17849
|
+
);
|
|
17850
|
+
}
|
|
17851
|
+
var ACCENT_PILL = "bg-primary text-primary-foreground";
|
|
17852
|
+
var ACCENT_BUTTON = "bg-primary text-primary-foreground hover:bg-primary/90";
|
|
17853
|
+
var THEME = {
|
|
17854
|
+
dark: {
|
|
17855
|
+
section: "bg-neutral-950",
|
|
17856
|
+
heading: "text-white",
|
|
17857
|
+
body: "text-white/60",
|
|
17858
|
+
tabTrack: "bg-white/5 border-white/10",
|
|
17859
|
+
tabActive: ACCENT_PILL,
|
|
17860
|
+
tabIdle: "text-white/60 hover:text-white",
|
|
17861
|
+
cardRing: "focus-visible:ring-white/70 focus-visible:ring-offset-neutral-950",
|
|
17862
|
+
divider: "border-white/15"
|
|
17863
|
+
},
|
|
17864
|
+
light: {
|
|
17865
|
+
/* Explicit light colours (not mode-aware tokens) so this variant stays a
|
|
17866
|
+
light surface even when the app is in dark mode. */
|
|
17867
|
+
section: "bg-white",
|
|
17868
|
+
heading: "text-neutral-900",
|
|
17869
|
+
body: "text-neutral-500",
|
|
17870
|
+
tabTrack: "bg-neutral-100 border-black/10",
|
|
17871
|
+
tabActive: ACCENT_PILL,
|
|
17872
|
+
tabIdle: "text-neutral-500 hover:text-neutral-900",
|
|
17873
|
+
cardRing: "focus-visible:ring-neutral-900/40 focus-visible:ring-offset-white",
|
|
17874
|
+
divider: "border-black/10"
|
|
17875
|
+
}
|
|
17876
|
+
};
|
|
17877
|
+
var BENTO_SPAN = {
|
|
17878
|
+
featured: "col-span-2 row-span-2",
|
|
17879
|
+
tall: "col-span-2 sm:col-span-1 row-span-2",
|
|
17880
|
+
wide: "col-span-2",
|
|
17881
|
+
normal: "col-span-2 sm:col-span-1"
|
|
17882
|
+
};
|
|
17883
|
+
function BentoTile({
|
|
17884
|
+
card,
|
|
17885
|
+
ring
|
|
17886
|
+
}) {
|
|
17887
|
+
var _a, _b, _c;
|
|
17888
|
+
const isFeatured = card.size === "featured";
|
|
17889
|
+
const inner = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
17890
|
+
card.image ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
17891
|
+
/* @__PURE__ */ jsx(
|
|
17892
|
+
Picture,
|
|
17893
|
+
{
|
|
17894
|
+
src: card.image,
|
|
17895
|
+
alt: (_a = card.imageAlt) != null ? _a : card.label,
|
|
17896
|
+
loading: "lazy",
|
|
17897
|
+
className: "absolute inset-0 h-full w-full object-cover transition-transform duration-700 group-hover:scale-105"
|
|
17898
|
+
}
|
|
17899
|
+
),
|
|
17900
|
+
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-gradient-to-t from-black/85 via-black/15 to-transparent" })
|
|
17901
|
+
] }) : /* @__PURE__ */ jsx(
|
|
17902
|
+
"div",
|
|
17903
|
+
{
|
|
17904
|
+
className: cn(
|
|
17905
|
+
"absolute inset-0 bg-gradient-to-br",
|
|
17906
|
+
(_b = card.gradient) != null ? _b : "from-primary-800 to-primary-900"
|
|
17907
|
+
)
|
|
17908
|
+
}
|
|
17909
|
+
),
|
|
17910
|
+
card.tripCount && /* @__PURE__ */ jsx("span", { className: "absolute right-3 top-3 z-10 rounded-full bg-white/90 px-2.5 py-1 text-[11px] font-ui font-bold uppercase tracking-wide text-neutral-900", children: card.tripCount }),
|
|
17911
|
+
/* @__PURE__ */ jsxs("div", { className: "absolute inset-x-0 bottom-0 z-10 p-5", children: [
|
|
17912
|
+
/* @__PURE__ */ jsx(
|
|
17913
|
+
"h3",
|
|
17914
|
+
{
|
|
17915
|
+
className: cn(
|
|
17916
|
+
"font-heading font-bold uppercase leading-tight tracking-wide text-white",
|
|
17917
|
+
isFeatured ? "text-2xl sm:text-3xl" : "text-lg sm:text-xl"
|
|
17918
|
+
),
|
|
17919
|
+
children: card.label
|
|
17920
|
+
}
|
|
17921
|
+
),
|
|
17922
|
+
card.description && /* @__PURE__ */ jsx("p", { className: "mt-1 max-h-0 overflow-hidden text-sm leading-snug text-white/85 opacity-0 transition-all duration-300 group-hover:mt-2 group-hover:max-h-32 group-hover:opacity-100", children: card.description }),
|
|
17923
|
+
card.ctaLabel && /* @__PURE__ */ jsxs("span", { className: "mt-2 inline-flex items-center gap-1 text-sm font-ui font-bold text-primary-400", children: [
|
|
17924
|
+
card.ctaLabel,
|
|
17925
|
+
/* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "transition-transform group-hover:translate-x-1", children: "\u2192" })
|
|
17926
|
+
] })
|
|
17927
|
+
] })
|
|
17928
|
+
] });
|
|
17929
|
+
const tileClass = cn(
|
|
17930
|
+
"group relative overflow-hidden rounded-2xl bg-muted shadow-sm",
|
|
17931
|
+
BENTO_SPAN[(_c = card.size) != null ? _c : "normal"]
|
|
17932
|
+
);
|
|
17933
|
+
return card.href ? /* @__PURE__ */ jsx(
|
|
17934
|
+
"a",
|
|
17935
|
+
{
|
|
17936
|
+
href: card.href,
|
|
17937
|
+
className: cn(
|
|
17938
|
+
tileClass,
|
|
17939
|
+
"block focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2",
|
|
17940
|
+
ring
|
|
17941
|
+
),
|
|
17942
|
+
children: inner
|
|
17943
|
+
}
|
|
17944
|
+
) : /* @__PURE__ */ jsx("div", { className: tileClass, children: inner });
|
|
17945
|
+
}
|
|
17946
|
+
function AdventureExplorer({
|
|
17947
|
+
tabs,
|
|
17948
|
+
eyebrow,
|
|
17949
|
+
heading,
|
|
17950
|
+
subheading,
|
|
17951
|
+
defaultTabId,
|
|
17952
|
+
viewAllLabel = "View All Adventures",
|
|
17953
|
+
viewAllHref,
|
|
17954
|
+
theme = "dark",
|
|
17955
|
+
layout = "carousel",
|
|
17956
|
+
bentoLimit,
|
|
17957
|
+
moreLabel = "More wild places",
|
|
17958
|
+
className
|
|
17959
|
+
}) {
|
|
17960
|
+
var _a, _b, _c, _d, _e;
|
|
17961
|
+
const [activeId, setActiveId] = React32.useState(
|
|
17962
|
+
defaultTabId != null ? defaultTabId : (_a = tabs[0]) == null ? void 0 : _a.id
|
|
17963
|
+
);
|
|
17964
|
+
const active = (_b = tabs.find((t2) => t2.id === activeId)) != null ? _b : tabs[0];
|
|
17965
|
+
const t = THEME[theme];
|
|
17966
|
+
const ctaHref = (_d = (_c = active == null ? void 0 : active.viewAllHref) != null ? _c : viewAllHref) != null ? _d : "#";
|
|
17967
|
+
const showCta = viewAllLabel.length > 0;
|
|
17968
|
+
const hasHeading = !!(eyebrow || heading || subheading);
|
|
17969
|
+
const cards = (_e = active == null ? void 0 : active.cards) != null ? _e : [];
|
|
17970
|
+
const limited = layout === "bento" && bentoLimit != null && cards.length > bentoLimit;
|
|
17971
|
+
const gridCards = limited ? cards.slice(0, bentoLimit) : cards;
|
|
17972
|
+
const moreCards = limited ? cards.slice(bentoLimit) : [];
|
|
17973
|
+
const showHeadCta = showCta && !limited;
|
|
17974
|
+
return /* @__PURE__ */ jsx("section", { className: cn("w-full py-10 sm:py-16", t.section, className), children: /* @__PURE__ */ jsxs("div", { className: "mx-auto w-full max-w-6xl px-6 sm:px-8", children: [
|
|
17975
|
+
hasHeading && /* @__PURE__ */ jsxs("div", { className: "mb-8 flex flex-wrap items-end justify-between gap-6", children: [
|
|
17976
|
+
/* @__PURE__ */ jsxs("div", { className: "max-w-2xl", children: [
|
|
17977
|
+
eyebrow && /* @__PURE__ */ jsx("p", { className: "mb-3 text-xs font-ui font-bold uppercase tracking-[0.22em] text-primary", children: eyebrow }),
|
|
17978
|
+
heading && /* @__PURE__ */ jsx(
|
|
17979
|
+
"h2",
|
|
17980
|
+
{
|
|
17981
|
+
className: cn(
|
|
17982
|
+
"font-heading text-3xl font-black uppercase leading-[1.05] sm:text-4xl lg:text-5xl",
|
|
17983
|
+
t.heading
|
|
17984
|
+
),
|
|
17985
|
+
children: heading
|
|
17986
|
+
}
|
|
17987
|
+
),
|
|
17988
|
+
subheading && /* @__PURE__ */ jsx("p", { className: cn("mt-3 text-base", t.body), children: subheading })
|
|
17989
|
+
] }),
|
|
17990
|
+
showHeadCta && /* @__PURE__ */ jsxs(
|
|
17991
|
+
"a",
|
|
17992
|
+
{
|
|
17993
|
+
href: ctaHref,
|
|
17994
|
+
className: "group inline-flex shrink-0 items-center gap-1.5 font-ui text-sm font-bold text-primary transition-colors hover:text-primary-800",
|
|
17995
|
+
children: [
|
|
17996
|
+
viewAllLabel,
|
|
17997
|
+
/* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "transition-transform group-hover:translate-x-1", children: "\u2192" })
|
|
17998
|
+
]
|
|
17999
|
+
}
|
|
18000
|
+
)
|
|
18001
|
+
] }),
|
|
18002
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-between gap-4", children: [
|
|
18003
|
+
/* @__PURE__ */ jsx(
|
|
18004
|
+
"div",
|
|
18005
|
+
{
|
|
18006
|
+
role: "tablist",
|
|
18007
|
+
"aria-label": "Explore categories",
|
|
18008
|
+
className: cn(
|
|
18009
|
+
"inline-flex max-w-full items-center gap-1 overflow-x-auto rounded-full border p-1.5 scrollbar-none",
|
|
18010
|
+
t.tabTrack
|
|
18011
|
+
),
|
|
18012
|
+
children: tabs.map((tab) => {
|
|
18013
|
+
const isActive = tab.id === (active == null ? void 0 : active.id);
|
|
18014
|
+
return /* @__PURE__ */ jsx(
|
|
18015
|
+
"button",
|
|
18016
|
+
{
|
|
18017
|
+
type: "button",
|
|
18018
|
+
role: "tab",
|
|
18019
|
+
"aria-selected": isActive,
|
|
18020
|
+
onClick: () => setActiveId(tab.id),
|
|
18021
|
+
className: cn(
|
|
18022
|
+
"shrink-0 rounded-full px-5 py-2 text-sm font-ui font-bold transition-colors",
|
|
18023
|
+
isActive ? t.tabActive : t.tabIdle
|
|
18024
|
+
),
|
|
18025
|
+
children: tab.label
|
|
18026
|
+
},
|
|
18027
|
+
tab.id
|
|
18028
|
+
);
|
|
18029
|
+
})
|
|
18030
|
+
}
|
|
18031
|
+
),
|
|
18032
|
+
showCta && !hasHeading && /* @__PURE__ */ jsx(
|
|
18033
|
+
"a",
|
|
18034
|
+
{
|
|
18035
|
+
href: ctaHref,
|
|
18036
|
+
className: cn(
|
|
18037
|
+
"hidden shrink-0 items-center rounded-full px-6 py-2.5 text-sm font-heading font-bold transition-colors sm:inline-flex",
|
|
18038
|
+
ACCENT_BUTTON
|
|
18039
|
+
),
|
|
18040
|
+
children: viewAllLabel
|
|
18041
|
+
}
|
|
18042
|
+
)
|
|
18043
|
+
] }),
|
|
18044
|
+
layout === "bento" && /* @__PURE__ */ jsx("div", { className: "mt-6 grid auto-rows-[170px] grid-cols-2 gap-4 sm:mt-8 sm:auto-rows-[200px] lg:grid-cols-4", children: gridCards.map((card, i) => /* @__PURE__ */ jsx(BentoTile, { card, ring: t.cardRing }, i)) }),
|
|
18045
|
+
limited && /* @__PURE__ */ jsxs(
|
|
18046
|
+
"div",
|
|
18047
|
+
{
|
|
18048
|
+
className: cn(
|
|
18049
|
+
"mt-7 flex flex-wrap items-center justify-between gap-x-8 gap-y-3 border-t pt-6",
|
|
18050
|
+
t.divider
|
|
18051
|
+
),
|
|
18052
|
+
children: [
|
|
18053
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-x-6 gap-y-2", children: [
|
|
18054
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs font-ui font-bold uppercase tracking-[0.18em] text-primary", children: moreLabel }),
|
|
18055
|
+
moreCards.map((card, i) => {
|
|
18056
|
+
var _a2;
|
|
18057
|
+
return /* @__PURE__ */ jsxs(
|
|
18058
|
+
"a",
|
|
18059
|
+
{
|
|
18060
|
+
href: (_a2 = card.href) != null ? _a2 : "#",
|
|
18061
|
+
className: "group inline-flex items-baseline gap-2",
|
|
18062
|
+
children: [
|
|
18063
|
+
/* @__PURE__ */ jsx(
|
|
18064
|
+
"span",
|
|
18065
|
+
{
|
|
18066
|
+
className: cn(
|
|
18067
|
+
"font-heading text-base font-bold transition-colors group-hover:text-primary",
|
|
18068
|
+
t.heading
|
|
18069
|
+
),
|
|
18070
|
+
children: card.label
|
|
18071
|
+
}
|
|
18072
|
+
),
|
|
18073
|
+
card.tripCount && /* @__PURE__ */ jsx("span", { className: cn("text-sm", t.body), children: card.tripCount })
|
|
18074
|
+
]
|
|
18075
|
+
},
|
|
18076
|
+
i
|
|
18077
|
+
);
|
|
18078
|
+
})
|
|
18079
|
+
] }),
|
|
18080
|
+
showCta && /* @__PURE__ */ jsxs(
|
|
18081
|
+
"a",
|
|
18082
|
+
{
|
|
18083
|
+
href: ctaHref,
|
|
18084
|
+
className: "group inline-flex shrink-0 items-center gap-1.5 font-ui text-sm font-bold text-primary transition-colors hover:text-primary-800",
|
|
18085
|
+
children: [
|
|
18086
|
+
viewAllLabel,
|
|
18087
|
+
/* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "transition-transform group-hover:translate-x-1", children: "\u2192" })
|
|
18088
|
+
]
|
|
18089
|
+
}
|
|
18090
|
+
)
|
|
18091
|
+
]
|
|
18092
|
+
}
|
|
18093
|
+
),
|
|
18094
|
+
layout !== "bento" && /* @__PURE__ */ jsx("div", { className: "-mx-6 mt-6 flex gap-3 overflow-x-auto px-6 pb-2 snap-x snap-mandatory scroll-px-6 scroll-smooth scrollbar-none sm:mx-0 sm:mt-8 sm:gap-4 sm:px-0 sm:scroll-px-0", children: active == null ? void 0 : active.cards.map((card, i) => {
|
|
18095
|
+
var _a2, _b2;
|
|
18096
|
+
const inner = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
18097
|
+
/* @__PURE__ */ jsx(
|
|
18098
|
+
Picture,
|
|
18099
|
+
{
|
|
18100
|
+
src: (_a2 = card.image) != null ? _a2 : "",
|
|
18101
|
+
alt: (_b2 = card.imageAlt) != null ? _b2 : card.label,
|
|
18102
|
+
loading: "lazy",
|
|
18103
|
+
className: "absolute inset-0 h-full w-full object-cover transition-transform duration-500 group-hover:scale-105"
|
|
18104
|
+
}
|
|
18105
|
+
),
|
|
18106
|
+
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-gradient-to-t from-black/80 via-black/15 to-transparent" }),
|
|
18107
|
+
/* @__PURE__ */ jsx("span", { className: "absolute inset-x-0 bottom-0 p-4 font-heading text-sm font-bold uppercase leading-tight tracking-wide text-white", children: card.label })
|
|
18108
|
+
] });
|
|
18109
|
+
const cardClass = "group relative aspect-[9/16] w-40 shrink-0 snap-start overflow-hidden rounded-2xl bg-muted sm:w-44 lg:w-48";
|
|
18110
|
+
return card.href ? /* @__PURE__ */ jsx(
|
|
18111
|
+
"a",
|
|
18112
|
+
{
|
|
18113
|
+
href: card.href,
|
|
18114
|
+
className: cn(
|
|
18115
|
+
cardClass,
|
|
18116
|
+
"block focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2",
|
|
18117
|
+
t.cardRing
|
|
18118
|
+
),
|
|
18119
|
+
children: inner
|
|
18120
|
+
},
|
|
18121
|
+
i
|
|
18122
|
+
) : /* @__PURE__ */ jsx("div", { className: cardClass, children: inner }, i);
|
|
18123
|
+
}) }),
|
|
18124
|
+
showCta && /* @__PURE__ */ jsx("div", { className: "mt-6 sm:hidden", children: /* @__PURE__ */ jsx(
|
|
18125
|
+
"a",
|
|
18126
|
+
{
|
|
18127
|
+
href: ctaHref,
|
|
18128
|
+
className: cn(
|
|
18129
|
+
"inline-flex w-full items-center justify-center rounded-full px-6 py-3 text-sm font-heading font-bold transition-colors",
|
|
18130
|
+
ACCENT_BUTTON
|
|
18131
|
+
),
|
|
18132
|
+
children: viewAllLabel
|
|
18133
|
+
}
|
|
18134
|
+
) })
|
|
18135
|
+
] }) });
|
|
18136
|
+
}
|
|
18137
|
+
var THEME2 = {
|
|
18138
|
+
light: {
|
|
18139
|
+
section: "bg-neutral-100",
|
|
18140
|
+
heading: "text-neutral-900",
|
|
18141
|
+
title: "text-neutral-800",
|
|
18142
|
+
body: "text-neutral-500",
|
|
18143
|
+
icon: "text-primary",
|
|
18144
|
+
card: "bg-white border-black/10 shadow-sm",
|
|
18145
|
+
chip: "bg-primary/10 text-primary",
|
|
18146
|
+
number: "text-primary"
|
|
18147
|
+
},
|
|
18148
|
+
dark: {
|
|
18149
|
+
section: "bg-neutral-950",
|
|
18150
|
+
heading: "text-white",
|
|
18151
|
+
title: "text-white",
|
|
18152
|
+
body: "text-white/60",
|
|
18153
|
+
icon: "text-primary-400",
|
|
18154
|
+
card: "bg-white/5 border-white/10",
|
|
18155
|
+
chip: "bg-primary-400/15 text-primary-400",
|
|
18156
|
+
number: "text-primary-400"
|
|
18157
|
+
}
|
|
18158
|
+
};
|
|
18159
|
+
var COLS = {
|
|
18160
|
+
2: "sm:grid-cols-2",
|
|
18161
|
+
3: "sm:grid-cols-2 lg:grid-cols-3",
|
|
18162
|
+
4: "sm:grid-cols-2 lg:grid-cols-4"
|
|
18163
|
+
};
|
|
18164
|
+
function USP({
|
|
18165
|
+
items,
|
|
18166
|
+
heading,
|
|
18167
|
+
subheading,
|
|
18168
|
+
columns,
|
|
18169
|
+
variant = "minimal",
|
|
18170
|
+
theme = "light",
|
|
18171
|
+
className
|
|
18172
|
+
}) {
|
|
18173
|
+
const t = THEME2[theme];
|
|
18174
|
+
const cols = columns != null ? columns : Math.min(Math.max(items.length, 2), 4);
|
|
18175
|
+
const isInline = variant === "inline";
|
|
18176
|
+
const isCard = variant === "card";
|
|
18177
|
+
const isNumbered = variant === "numbered";
|
|
18178
|
+
const stacked = !isInline;
|
|
18179
|
+
return /* @__PURE__ */ jsx("section", { className: cn("w-full py-14 sm:py-20", t.section, className), children: /* @__PURE__ */ jsxs("div", { className: "mx-auto w-full max-w-6xl px-6 sm:px-8", children: [
|
|
18180
|
+
(heading || subheading) && /* @__PURE__ */ jsxs(
|
|
18181
|
+
"div",
|
|
18182
|
+
{
|
|
18183
|
+
className: cn(
|
|
18184
|
+
"mb-12 max-w-2xl",
|
|
18185
|
+
isNumbered ? "text-left" : "mx-auto text-center"
|
|
18186
|
+
),
|
|
18187
|
+
children: [
|
|
18188
|
+
heading && /* @__PURE__ */ jsx(
|
|
18189
|
+
"h2",
|
|
18190
|
+
{
|
|
18191
|
+
className: cn(
|
|
18192
|
+
"font-heading font-bold uppercase tracking-wide",
|
|
18193
|
+
isNumbered ? "text-3xl sm:text-4xl lg:text-5xl" : "text-2xl sm:text-3xl",
|
|
18194
|
+
t.heading
|
|
18195
|
+
),
|
|
18196
|
+
children: heading
|
|
18197
|
+
}
|
|
18198
|
+
),
|
|
18199
|
+
subheading && /* @__PURE__ */ jsx("p", { className: cn("mt-3 font-sans text-base", t.body), children: subheading })
|
|
18200
|
+
]
|
|
18201
|
+
}
|
|
18202
|
+
),
|
|
18203
|
+
/* @__PURE__ */ jsxs(
|
|
18204
|
+
"div",
|
|
18205
|
+
{
|
|
18206
|
+
className: cn(
|
|
18207
|
+
"grid grid-cols-1 gap-x-8 gap-y-10",
|
|
18208
|
+
COLS[cols]
|
|
18209
|
+
),
|
|
18210
|
+
children: [
|
|
18211
|
+
isNumbered && items.map((item, i) => /* @__PURE__ */ jsxs(
|
|
18212
|
+
"div",
|
|
18213
|
+
{
|
|
18214
|
+
className: cn(
|
|
18215
|
+
"flex flex-col rounded-2xl border p-6 text-left sm:p-7",
|
|
18216
|
+
t.card
|
|
18217
|
+
),
|
|
18218
|
+
children: [
|
|
18219
|
+
/* @__PURE__ */ jsx(
|
|
18220
|
+
"span",
|
|
18221
|
+
{
|
|
18222
|
+
className: cn(
|
|
18223
|
+
"mb-4 font-sans text-xl font-semibold italic",
|
|
18224
|
+
t.number
|
|
18225
|
+
),
|
|
18226
|
+
children: String(i + 1).padStart(2, "0")
|
|
18227
|
+
}
|
|
18228
|
+
),
|
|
18229
|
+
/* @__PURE__ */ jsx(
|
|
18230
|
+
"h3",
|
|
18231
|
+
{
|
|
18232
|
+
className: cn(
|
|
18233
|
+
"font-heading text-lg font-bold leading-snug",
|
|
18234
|
+
t.heading
|
|
18235
|
+
),
|
|
18236
|
+
children: item.title
|
|
18237
|
+
}
|
|
18238
|
+
),
|
|
18239
|
+
/* @__PURE__ */ jsx("p", { className: cn("mt-2 font-sans text-base leading-relaxed", t.body), children: item.description })
|
|
18240
|
+
]
|
|
18241
|
+
},
|
|
18242
|
+
i
|
|
18243
|
+
)),
|
|
18244
|
+
!isNumbered && items.map((item, i) => /* @__PURE__ */ jsxs(
|
|
18245
|
+
"div",
|
|
18246
|
+
{
|
|
18247
|
+
className: cn(
|
|
18248
|
+
isCard && cn("rounded-2xl border p-6 sm:p-7", t.card),
|
|
18249
|
+
stacked ? "flex flex-col items-center text-center" : "flex items-start gap-4 text-left"
|
|
18250
|
+
),
|
|
18251
|
+
children: [
|
|
18252
|
+
/* @__PURE__ */ jsx(
|
|
18253
|
+
"span",
|
|
18254
|
+
{
|
|
18255
|
+
className: cn(
|
|
18256
|
+
"flex shrink-0 items-center justify-center",
|
|
18257
|
+
isCard ? cn("h-14 w-14 rounded-full [&>svg]:size-7", t.chip) : cn("[&>svg]:size-8", t.icon),
|
|
18258
|
+
stacked && "mb-4"
|
|
18259
|
+
),
|
|
18260
|
+
children: item.icon
|
|
18261
|
+
}
|
|
18262
|
+
),
|
|
18263
|
+
/* @__PURE__ */ jsxs("div", { className: isInline ? "flex-1" : "contents", children: [
|
|
18264
|
+
/* @__PURE__ */ jsx(
|
|
18265
|
+
"h3",
|
|
18266
|
+
{
|
|
18267
|
+
className: cn(
|
|
18268
|
+
"font-heading text-sm font-bold uppercase leading-snug tracking-wide",
|
|
18269
|
+
t.title,
|
|
18270
|
+
stacked && "mb-3"
|
|
18271
|
+
),
|
|
18272
|
+
children: item.title
|
|
18273
|
+
}
|
|
18274
|
+
),
|
|
18275
|
+
/* @__PURE__ */ jsx(
|
|
18276
|
+
"p",
|
|
18277
|
+
{
|
|
18278
|
+
className: cn(
|
|
18279
|
+
"font-sans text-base leading-relaxed",
|
|
18280
|
+
t.body,
|
|
18281
|
+
isInline && "mt-1.5"
|
|
18282
|
+
),
|
|
18283
|
+
children: item.description
|
|
18284
|
+
}
|
|
18285
|
+
)
|
|
18286
|
+
] })
|
|
18287
|
+
]
|
|
18288
|
+
},
|
|
18289
|
+
i
|
|
18290
|
+
))
|
|
18291
|
+
]
|
|
18292
|
+
}
|
|
18293
|
+
)
|
|
18294
|
+
] }) });
|
|
18295
|
+
}
|
|
18296
|
+
function RotatingSubtitle({
|
|
18297
|
+
phrases,
|
|
18298
|
+
interval,
|
|
18299
|
+
className
|
|
18300
|
+
}) {
|
|
18301
|
+
const [index, setIndex] = React32.useState(0);
|
|
18302
|
+
React32.useEffect(() => {
|
|
18303
|
+
var _a;
|
|
18304
|
+
if (phrases.length < 2) return;
|
|
18305
|
+
const reduce = typeof window !== "undefined" && ((_a = window.matchMedia) == null ? void 0 : _a.call(window, "(prefers-reduced-motion: reduce)").matches);
|
|
18306
|
+
if (reduce) return;
|
|
18307
|
+
const id = setInterval(
|
|
18308
|
+
() => setIndex((i) => (i + 1) % phrases.length),
|
|
18309
|
+
interval
|
|
18310
|
+
);
|
|
18311
|
+
return () => clearInterval(id);
|
|
18312
|
+
}, [phrases.length, interval]);
|
|
18313
|
+
return (
|
|
18314
|
+
/* Grid-stacks all phrases so the box keeps the height of the tallest line
|
|
18315
|
+
and the crossfade has no layout shift. */
|
|
18316
|
+
/* @__PURE__ */ jsx("span", { className: cn("grid", className), children: phrases.map((phrase, i) => /* @__PURE__ */ jsx(
|
|
18317
|
+
"span",
|
|
18318
|
+
{
|
|
18319
|
+
"aria-hidden": i !== index,
|
|
18320
|
+
className: cn(
|
|
18321
|
+
"col-start-1 row-start-1 transition-opacity duration-700",
|
|
18322
|
+
i === index ? "opacity-100" : "opacity-0"
|
|
18323
|
+
),
|
|
18324
|
+
children: phrase
|
|
18325
|
+
},
|
|
18326
|
+
phrase + i
|
|
18327
|
+
)) })
|
|
18328
|
+
);
|
|
18329
|
+
}
|
|
18330
|
+
function CtaBanner({
|
|
18331
|
+
image,
|
|
18332
|
+
imageAlt = "",
|
|
18333
|
+
title,
|
|
18334
|
+
subtitle,
|
|
18335
|
+
cta,
|
|
18336
|
+
rotateInterval = 3e3,
|
|
18337
|
+
parallax = true,
|
|
18338
|
+
overlayOpacity = 35,
|
|
18339
|
+
className
|
|
18340
|
+
}) {
|
|
18341
|
+
const phrases = React32.useMemo(
|
|
18342
|
+
() => (Array.isArray(subtitle) ? subtitle : subtitle ? [subtitle] : []).map((s) => s.trim()).filter(Boolean),
|
|
18343
|
+
[subtitle]
|
|
18344
|
+
);
|
|
18345
|
+
return /* @__PURE__ */ jsxs(
|
|
18346
|
+
"section",
|
|
18347
|
+
{
|
|
18348
|
+
className: cn(
|
|
18349
|
+
"relative w-full overflow-hidden",
|
|
18350
|
+
"flex items-center justify-center",
|
|
18351
|
+
"min-h-[360px] py-24 sm:py-28 lg:py-32",
|
|
18352
|
+
"bg-muted",
|
|
18353
|
+
className
|
|
18354
|
+
),
|
|
18355
|
+
children: [
|
|
18356
|
+
parallax ? (
|
|
18357
|
+
/* Parallax: fixed-attachment CSS background (sm+). Uses a plain div so
|
|
18358
|
+
`bg-fixed` works; on mobile it falls back to a normal cover image. */
|
|
18359
|
+
/* @__PURE__ */ jsx(
|
|
18360
|
+
"div",
|
|
18361
|
+
{
|
|
18362
|
+
"aria-hidden": true,
|
|
18363
|
+
role: imageAlt ? "img" : void 0,
|
|
18364
|
+
"aria-label": imageAlt || void 0,
|
|
18365
|
+
className: "absolute inset-0 bg-cover bg-center sm:bg-fixed",
|
|
18366
|
+
style: { backgroundImage: `url("${image}")` }
|
|
18367
|
+
}
|
|
18368
|
+
)
|
|
18369
|
+
) : /* @__PURE__ */ jsx(
|
|
18370
|
+
Picture,
|
|
18371
|
+
{
|
|
18372
|
+
src: image,
|
|
18373
|
+
alt: imageAlt,
|
|
18374
|
+
eager: true,
|
|
18375
|
+
className: "absolute inset-0 h-full w-full object-cover"
|
|
18376
|
+
}
|
|
18377
|
+
),
|
|
18378
|
+
/* @__PURE__ */ jsx(
|
|
18379
|
+
"div",
|
|
18380
|
+
{
|
|
18381
|
+
className: "absolute inset-0 bg-black",
|
|
18382
|
+
style: { opacity: overlayOpacity / 100 },
|
|
18383
|
+
"aria-hidden": true
|
|
18384
|
+
}
|
|
18385
|
+
),
|
|
18386
|
+
/* @__PURE__ */ jsxs("div", { className: "relative z-10 mx-auto flex w-full max-w-4xl flex-col items-center px-6 text-center", children: [
|
|
18387
|
+
/* @__PURE__ */ jsx("h2", { className: "font-heading text-4xl font-black uppercase leading-none tracking-tight text-white sm:text-5xl lg:text-[3.25rem]", children: title }),
|
|
18388
|
+
phrases.length > 0 && /* @__PURE__ */ jsx("p", { className: "mt-4 font-sans text-xl font-semibold text-white sm:text-2xl lg:text-[1.7rem]", children: phrases.length > 1 ? /* @__PURE__ */ jsx(RotatingSubtitle, { phrases, interval: rotateInterval }) : phrases[0] }),
|
|
18389
|
+
cta && (cta.href ? /* @__PURE__ */ jsx(
|
|
18390
|
+
"a",
|
|
18391
|
+
{
|
|
18392
|
+
href: cta.href,
|
|
18393
|
+
onClick: cta.onClick,
|
|
18394
|
+
className: "mt-8 inline-block border-b border-white/70 pb-1.5 font-ui text-xs font-light uppercase tracking-[0.2em] text-white transition-colors hover:border-white hover:text-white/80",
|
|
18395
|
+
children: cta.label
|
|
18396
|
+
}
|
|
18397
|
+
) : /* @__PURE__ */ jsx(
|
|
18398
|
+
"button",
|
|
18399
|
+
{
|
|
18400
|
+
type: "button",
|
|
18401
|
+
onClick: cta.onClick,
|
|
18402
|
+
className: "mt-8 inline-block border-b border-white/70 pb-1.5 font-ui text-xs font-light uppercase tracking-[0.2em] text-white transition-colors hover:border-white hover:text-white/80",
|
|
18403
|
+
children: cta.label
|
|
18404
|
+
}
|
|
18405
|
+
))
|
|
18406
|
+
] })
|
|
18407
|
+
]
|
|
18408
|
+
}
|
|
18409
|
+
);
|
|
18410
|
+
}
|
|
18411
|
+
var THEME3 = {
|
|
18412
|
+
light: {
|
|
18413
|
+
section: "bg-background",
|
|
18414
|
+
heading: "text-foreground",
|
|
18415
|
+
sub: "text-muted-foreground",
|
|
18416
|
+
rowTitle: "text-foreground",
|
|
18417
|
+
rowBorder: "border-border",
|
|
18418
|
+
rowArrow: "text-primary"
|
|
18419
|
+
},
|
|
18420
|
+
dark: {
|
|
18421
|
+
section: "bg-neutral-950",
|
|
18422
|
+
heading: "text-white",
|
|
18423
|
+
sub: "text-white/60",
|
|
18424
|
+
rowTitle: "text-white",
|
|
18425
|
+
rowBorder: "border-white/10",
|
|
18426
|
+
rowArrow: "text-primary-400"
|
|
18427
|
+
}
|
|
18428
|
+
};
|
|
18429
|
+
function BlogJournal({
|
|
18430
|
+
eyebrow,
|
|
18431
|
+
title,
|
|
18432
|
+
subtitle,
|
|
18433
|
+
link,
|
|
18434
|
+
feature,
|
|
18435
|
+
posts,
|
|
18436
|
+
theme = "light",
|
|
18437
|
+
className
|
|
18438
|
+
}) {
|
|
18439
|
+
var _a, _b, _c, _d;
|
|
18440
|
+
const t = THEME3[theme];
|
|
18441
|
+
const featRel = feature.external ? "noopener noreferrer" : void 0;
|
|
18442
|
+
const featTarget = feature.external ? "_blank" : void 0;
|
|
18443
|
+
return /* @__PURE__ */ jsx("section", { className: cn("w-full py-20 sm:py-28", t.section, className), children: /* @__PURE__ */ jsxs("div", { className: "mx-auto w-full max-w-6xl px-6 sm:px-8", children: [
|
|
18444
|
+
(title || eyebrow || link) && /* @__PURE__ */ jsxs("div", { className: "mb-10 flex flex-wrap items-end justify-between gap-6", children: [
|
|
18445
|
+
/* @__PURE__ */ jsxs("div", { className: "max-w-2xl", children: [
|
|
18446
|
+
eyebrow && /* @__PURE__ */ jsx("p", { className: "mb-3 text-xs font-ui font-bold uppercase tracking-[0.22em] text-primary", children: eyebrow }),
|
|
18447
|
+
title && /* @__PURE__ */ jsx(
|
|
18448
|
+
"h2",
|
|
18449
|
+
{
|
|
18450
|
+
className: cn(
|
|
18451
|
+
"font-heading text-3xl font-black uppercase leading-[1.05] sm:text-4xl lg:text-5xl",
|
|
18452
|
+
t.heading
|
|
18453
|
+
),
|
|
18454
|
+
children: title
|
|
18455
|
+
}
|
|
18456
|
+
),
|
|
18457
|
+
subtitle && /* @__PURE__ */ jsx("p", { className: cn("mt-3 text-base", t.sub), children: subtitle })
|
|
18458
|
+
] }),
|
|
18459
|
+
link && /* @__PURE__ */ jsxs(
|
|
18460
|
+
"a",
|
|
18461
|
+
{
|
|
18462
|
+
href: (_a = link.href) != null ? _a : "#",
|
|
18463
|
+
className: "group inline-flex shrink-0 items-center gap-1.5 font-ui text-sm font-bold text-primary transition-colors hover:text-primary-800",
|
|
18464
|
+
children: [
|
|
18465
|
+
link.label,
|
|
18466
|
+
/* @__PURE__ */ jsx(ArrowRightIcon, { className: "h-4 w-4 transition-transform group-hover:translate-x-1" })
|
|
18467
|
+
]
|
|
18468
|
+
}
|
|
18469
|
+
)
|
|
18470
|
+
] }),
|
|
18471
|
+
/* @__PURE__ */ jsxs("div", { className: "grid items-stretch gap-7 lg:grid-cols-[1.12fr_0.88fr]", children: [
|
|
18472
|
+
/* @__PURE__ */ jsxs(
|
|
18473
|
+
"a",
|
|
18474
|
+
{
|
|
18475
|
+
href: (_b = feature.href) != null ? _b : "#",
|
|
18476
|
+
target: featTarget,
|
|
18477
|
+
rel: featRel,
|
|
18478
|
+
className: "group relative flex min-h-[420px] items-end overflow-hidden rounded-2xl text-white shadow-lg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 lg:min-h-[480px]",
|
|
18479
|
+
children: [
|
|
18480
|
+
/* @__PURE__ */ jsx(
|
|
18481
|
+
Picture,
|
|
18482
|
+
{
|
|
18483
|
+
src: feature.image,
|
|
18484
|
+
alt: (_c = feature.imageAlt) != null ? _c : feature.title,
|
|
18485
|
+
loading: "lazy",
|
|
18486
|
+
className: "absolute inset-0 h-full w-full object-cover transition-transform duration-700 group-hover:scale-105"
|
|
18487
|
+
}
|
|
18488
|
+
),
|
|
18489
|
+
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-gradient-to-t from-black/90 via-black/25 to-transparent" }),
|
|
18490
|
+
/* @__PURE__ */ jsxs("div", { className: "relative p-8 sm:p-9", children: [
|
|
18491
|
+
feature.tag && /* @__PURE__ */ jsx("span", { className: "mb-3.5 inline-block rounded-full bg-primary px-3 py-1 text-[11px] font-ui font-bold uppercase tracking-[0.12em] text-primary-foreground", children: feature.tag }),
|
|
18492
|
+
feature.date && /* @__PURE__ */ jsx("span", { className: "block text-xs font-ui font-bold uppercase tracking-[0.1em] text-primary-400", children: feature.date }),
|
|
18493
|
+
/* @__PURE__ */ jsx("h3", { className: "mt-2.5 max-w-[20ch] font-heading text-2xl font-bold leading-[1.08] sm:text-3xl lg:text-4xl", children: feature.title }),
|
|
18494
|
+
feature.excerpt && /* @__PURE__ */ jsx("p", { className: "mt-3 max-w-[46ch] text-sm leading-relaxed text-white/85", children: feature.excerpt }),
|
|
18495
|
+
/* @__PURE__ */ jsxs("span", { className: "mt-5 inline-flex items-center gap-1.5 font-ui text-sm font-bold", children: [
|
|
18496
|
+
(_d = feature.ctaLabel) != null ? _d : "Read the guide",
|
|
18497
|
+
/* @__PURE__ */ jsx(ArrowRightIcon, { className: "h-4 w-4 transition-transform group-hover:translate-x-1" })
|
|
18498
|
+
] })
|
|
18499
|
+
] })
|
|
18500
|
+
]
|
|
18501
|
+
}
|
|
18502
|
+
),
|
|
18503
|
+
/* @__PURE__ */ jsx("ul", { className: "flex flex-col justify-center", children: posts.map((post, i) => {
|
|
18504
|
+
var _a2, _b2;
|
|
18505
|
+
return /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs(
|
|
18506
|
+
"a",
|
|
18507
|
+
{
|
|
18508
|
+
href: (_a2 = post.href) != null ? _a2 : "#",
|
|
18509
|
+
target: post.external ? "_blank" : void 0,
|
|
18510
|
+
rel: post.external ? "noopener noreferrer" : void 0,
|
|
18511
|
+
className: cn(
|
|
18512
|
+
"group grid grid-cols-[64px_1fr_auto] items-center gap-4 border-t py-5 transition-[padding] duration-300 hover:pl-3 sm:grid-cols-[78px_1fr_auto]",
|
|
18513
|
+
t.rowBorder,
|
|
18514
|
+
i === 0 && "border-t-0 pt-0"
|
|
18515
|
+
),
|
|
18516
|
+
children: [
|
|
18517
|
+
/* @__PURE__ */ jsx(
|
|
18518
|
+
Picture,
|
|
18519
|
+
{
|
|
18520
|
+
src: post.image,
|
|
18521
|
+
alt: (_b2 = post.imageAlt) != null ? _b2 : post.title,
|
|
18522
|
+
loading: "lazy",
|
|
18523
|
+
className: "h-16 w-16 rounded-xl object-cover sm:h-[78px] sm:w-[78px]"
|
|
18524
|
+
}
|
|
18525
|
+
),
|
|
18526
|
+
/* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
|
|
18527
|
+
/* @__PURE__ */ jsxs("span", { className: "text-[11px] font-ui font-bold uppercase tracking-[0.1em] text-primary", children: [
|
|
18528
|
+
post.category,
|
|
18529
|
+
post.category && post.date && /* @__PURE__ */ jsx("span", { className: cn("ml-2 font-semibold", t.sub), children: post.date }),
|
|
18530
|
+
!post.category && post.date && /* @__PURE__ */ jsx("span", { className: cn("font-semibold", t.sub), children: post.date })
|
|
18531
|
+
] }),
|
|
18532
|
+
/* @__PURE__ */ jsx(
|
|
18533
|
+
"h4",
|
|
18534
|
+
{
|
|
18535
|
+
className: cn(
|
|
18536
|
+
"mt-1.5 font-heading text-base font-bold leading-snug sm:text-lg",
|
|
18537
|
+
t.rowTitle
|
|
18538
|
+
),
|
|
18539
|
+
children: post.title
|
|
18540
|
+
}
|
|
18541
|
+
)
|
|
18542
|
+
] }),
|
|
18543
|
+
/* @__PURE__ */ jsx(
|
|
18544
|
+
ArrowRightIcon,
|
|
18545
|
+
{
|
|
18546
|
+
className: cn(
|
|
18547
|
+
"h-5 w-5 shrink-0 transition-transform group-hover:translate-x-1",
|
|
18548
|
+
t.rowArrow
|
|
18549
|
+
)
|
|
18550
|
+
}
|
|
18551
|
+
)
|
|
18552
|
+
]
|
|
18553
|
+
}
|
|
18554
|
+
) }, i);
|
|
18555
|
+
}) })
|
|
18556
|
+
] })
|
|
18557
|
+
] }) });
|
|
18558
|
+
}
|
|
18559
|
+
var SURFACE_WHITE = "bg-white";
|
|
18560
|
+
var SURFACE_SAND = "bg-[oklch(0.94_0.016_86)]";
|
|
18561
|
+
var SURFACE_PRIMARY_700 = "bg-[oklch(0.52_0.082_179)]";
|
|
18562
|
+
var SURFACE_PRIMARY_800 = "bg-[oklch(0.39_0.062_179)]";
|
|
18563
|
+
var SURFACE_PRIMARY_900 = "bg-[oklch(0.27_0.040_179)]";
|
|
18564
|
+
function SectionHead({
|
|
18565
|
+
eyebrow,
|
|
18566
|
+
title,
|
|
18567
|
+
subtitle,
|
|
18568
|
+
link,
|
|
18569
|
+
align = "between",
|
|
18570
|
+
theme = "light"
|
|
18571
|
+
}) {
|
|
18572
|
+
var _a;
|
|
18573
|
+
const isCenter = align === "center";
|
|
18574
|
+
return /* @__PURE__ */ jsxs(
|
|
18575
|
+
"div",
|
|
18576
|
+
{
|
|
18577
|
+
className: cn(
|
|
18578
|
+
"mb-10 flex flex-wrap items-end gap-6",
|
|
18579
|
+
isCenter ? "flex-col items-center text-center" : "justify-between"
|
|
18580
|
+
),
|
|
18581
|
+
children: [
|
|
18582
|
+
/* @__PURE__ */ jsxs("div", { className: cn("max-w-2xl", isCenter && "mx-auto"), children: [
|
|
18583
|
+
eyebrow && /* @__PURE__ */ jsx("p", { className: "mb-3 text-xs font-ui font-bold uppercase tracking-[0.22em] text-primary", children: eyebrow }),
|
|
18584
|
+
/* @__PURE__ */ jsx(
|
|
18585
|
+
"h2",
|
|
18586
|
+
{
|
|
18587
|
+
className: cn(
|
|
18588
|
+
"font-heading text-3xl font-black uppercase leading-[1.05] sm:text-4xl lg:text-5xl",
|
|
18589
|
+
theme === "dark" ? "text-white" : "text-foreground"
|
|
18590
|
+
),
|
|
18591
|
+
children: title
|
|
18592
|
+
}
|
|
18593
|
+
),
|
|
18594
|
+
subtitle && /* @__PURE__ */ jsx(
|
|
18595
|
+
"p",
|
|
18596
|
+
{
|
|
18597
|
+
className: cn(
|
|
18598
|
+
"mt-3 text-base",
|
|
18599
|
+
theme === "dark" ? "text-white/70" : "text-muted-foreground"
|
|
18600
|
+
),
|
|
18601
|
+
children: subtitle
|
|
18602
|
+
}
|
|
18603
|
+
)
|
|
18604
|
+
] }),
|
|
18605
|
+
link && !isCenter && /* @__PURE__ */ jsxs(
|
|
18606
|
+
"a",
|
|
18607
|
+
{
|
|
18608
|
+
href: (_a = link.href) != null ? _a : "#",
|
|
18609
|
+
className: "group inline-flex shrink-0 items-center gap-1.5 font-ui text-sm font-bold text-primary transition-colors hover:text-primary-800",
|
|
18610
|
+
children: [
|
|
18611
|
+
link.label,
|
|
18612
|
+
/* @__PURE__ */ jsx(ArrowRightIcon, { className: "h-4 w-4 transition-transform group-hover:translate-x-1" })
|
|
18613
|
+
]
|
|
18614
|
+
}
|
|
18615
|
+
)
|
|
18616
|
+
]
|
|
18617
|
+
}
|
|
18618
|
+
);
|
|
18619
|
+
}
|
|
18620
|
+
function ExpeditionsRail({ eyebrow, title, subtitle, link, trips }) {
|
|
18621
|
+
var _a;
|
|
18622
|
+
const railRef = React32.useRef(null);
|
|
18623
|
+
const scrollByCard = (dir) => {
|
|
18624
|
+
const rail = railRef.current;
|
|
18625
|
+
if (!rail) return;
|
|
18626
|
+
const card = rail.querySelector("[data-rail-card]");
|
|
18627
|
+
const amount = card ? card.offsetWidth + 22 : rail.clientWidth * 0.8;
|
|
18628
|
+
rail.scrollBy({ left: dir * amount, behavior: "smooth" });
|
|
18629
|
+
};
|
|
18630
|
+
return /* @__PURE__ */ jsxs("section", { className: cn(SURFACE_SAND, "py-20 sm:py-28"), children: [
|
|
18631
|
+
/* @__PURE__ */ jsx("div", { className: "mx-auto w-full max-w-6xl px-6 sm:px-8", children: /* @__PURE__ */ jsxs("div", { className: "mb-10 flex flex-wrap items-end justify-between gap-6", children: [
|
|
18632
|
+
/* @__PURE__ */ jsxs("div", { className: "max-w-2xl", children: [
|
|
18633
|
+
eyebrow && /* @__PURE__ */ jsx("p", { className: "mb-3 text-xs font-ui font-bold uppercase tracking-[0.22em] text-primary", children: eyebrow }),
|
|
18634
|
+
/* @__PURE__ */ jsx("h2", { className: "font-heading text-3xl font-black uppercase leading-[1.05] text-foreground sm:text-4xl lg:text-5xl", children: title }),
|
|
18635
|
+
subtitle && /* @__PURE__ */ jsx("p", { className: "mt-3 text-base text-muted-foreground", children: subtitle })
|
|
18636
|
+
] }),
|
|
18637
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2.5", children: [
|
|
18638
|
+
link && /* @__PURE__ */ jsxs(
|
|
18639
|
+
"a",
|
|
18640
|
+
{
|
|
18641
|
+
href: (_a = link.href) != null ? _a : "#",
|
|
18642
|
+
className: "group mr-2 hidden items-center gap-1.5 font-ui text-sm font-bold text-primary transition-colors hover:text-primary-800 sm:inline-flex",
|
|
18643
|
+
children: [
|
|
18644
|
+
link.label,
|
|
18645
|
+
/* @__PURE__ */ jsx(ArrowRightIcon, { className: "h-4 w-4 transition-transform group-hover:translate-x-1" })
|
|
18646
|
+
]
|
|
18647
|
+
}
|
|
18648
|
+
),
|
|
18649
|
+
/* @__PURE__ */ jsx(
|
|
18650
|
+
"button",
|
|
18651
|
+
{
|
|
18652
|
+
type: "button",
|
|
18653
|
+
onClick: () => scrollByCard(-1),
|
|
18654
|
+
"aria-label": "Previous expeditions",
|
|
18655
|
+
className: "flex h-11 w-11 items-center justify-center rounded-full border border-border bg-background text-foreground transition-colors hover:border-primary hover:bg-primary hover:text-primary-foreground",
|
|
18656
|
+
children: /* @__PURE__ */ jsx(ChevronLeftIcon, { className: "h-5 w-5" })
|
|
18657
|
+
}
|
|
18658
|
+
),
|
|
18659
|
+
/* @__PURE__ */ jsx(
|
|
18660
|
+
"button",
|
|
18661
|
+
{
|
|
18662
|
+
type: "button",
|
|
18663
|
+
onClick: () => scrollByCard(1),
|
|
18664
|
+
"aria-label": "Next expeditions",
|
|
18665
|
+
className: "flex h-11 w-11 items-center justify-center rounded-full border border-border bg-background text-foreground transition-colors hover:border-primary hover:bg-primary hover:text-primary-foreground",
|
|
18666
|
+
children: /* @__PURE__ */ jsx(ChevronRightIcon, { className: "h-5 w-5" })
|
|
18667
|
+
}
|
|
18668
|
+
)
|
|
18669
|
+
] })
|
|
18670
|
+
] }) }),
|
|
18671
|
+
/* @__PURE__ */ jsx("div", { className: "mx-auto w-full max-w-6xl", children: /* @__PURE__ */ jsx(
|
|
18672
|
+
"div",
|
|
18673
|
+
{
|
|
18674
|
+
ref: railRef,
|
|
18675
|
+
className: "flex snap-x snap-mandatory gap-[22px] overflow-x-auto scroll-pl-6 px-6 pb-4 [scrollbar-width:none] sm:scroll-pl-8 sm:px-8 [&::-webkit-scrollbar]:hidden",
|
|
18676
|
+
children: trips.map((trip, i) => /* @__PURE__ */ jsx(
|
|
18677
|
+
"div",
|
|
18678
|
+
{
|
|
18679
|
+
"data-rail-card": true,
|
|
18680
|
+
className: "w-[320px] shrink-0 snap-start sm:w-[340px]",
|
|
18681
|
+
children: /* @__PURE__ */ jsx(TripCard, __spreadValues({ variant: "editorial" }, trip))
|
|
18682
|
+
},
|
|
18683
|
+
i
|
|
18684
|
+
))
|
|
18685
|
+
}
|
|
18686
|
+
) })
|
|
18687
|
+
] });
|
|
18688
|
+
}
|
|
18689
|
+
function PopularCloud({ eyebrow, title, subtitle, chips }) {
|
|
18690
|
+
return /* @__PURE__ */ jsx("section", { className: cn(SURFACE_WHITE, "py-20 sm:py-28"), children: /* @__PURE__ */ jsxs("div", { className: "mx-auto w-full max-w-6xl px-6 sm:px-8", children: [
|
|
18691
|
+
/* @__PURE__ */ jsx(
|
|
18692
|
+
SectionHead,
|
|
18693
|
+
{
|
|
18694
|
+
eyebrow,
|
|
18695
|
+
title,
|
|
18696
|
+
subtitle,
|
|
18697
|
+
align: "center"
|
|
18698
|
+
}
|
|
18699
|
+
),
|
|
18700
|
+
/* @__PURE__ */ jsx("div", { className: "mx-auto flex max-w-3xl flex-wrap items-center justify-center gap-3", children: chips.map((chip, i) => {
|
|
18701
|
+
var _a;
|
|
18702
|
+
return /* @__PURE__ */ jsx(
|
|
18703
|
+
Chip,
|
|
18704
|
+
{
|
|
18705
|
+
href: chip.href,
|
|
18706
|
+
variant: chip.featured ? "solid" : "outline",
|
|
18707
|
+
size: (_a = chip.size) != null ? _a : "md",
|
|
18708
|
+
className: "transition-transform hover:-translate-y-0.5",
|
|
18709
|
+
children: chip.label
|
|
18710
|
+
},
|
|
18711
|
+
i
|
|
18712
|
+
);
|
|
18713
|
+
}) })
|
|
18714
|
+
] }) });
|
|
18715
|
+
}
|
|
18716
|
+
function StatsBand({ items }) {
|
|
18717
|
+
return /* @__PURE__ */ jsx("section", { className: cn(SURFACE_PRIMARY_700, "py-16 text-white sm:py-20"), children: /* @__PURE__ */ jsx("div", { className: "mx-auto w-full max-w-6xl px-6 sm:px-8", children: /* @__PURE__ */ jsx("div", { className: "grid grid-cols-2 gap-x-6 gap-y-10 text-center lg:grid-cols-4", children: items.map((stat, i) => /* @__PURE__ */ jsxs("div", { children: [
|
|
18718
|
+
/* @__PURE__ */ jsx("div", { className: "font-heading text-4xl font-black leading-none text-[oklch(0.94_0.05_179)] sm:text-5xl lg:text-6xl", children: stat.value }),
|
|
18719
|
+
/* @__PURE__ */ jsx("div", { className: "mt-3 text-sm font-medium text-white/90", children: stat.label })
|
|
18720
|
+
] }, i)) }) }) });
|
|
18721
|
+
}
|
|
18722
|
+
function ReviewStars({ stars = 5 }) {
|
|
18723
|
+
return /* @__PURE__ */ jsx("div", { className: "mb-4 flex items-center gap-0.5", "aria-label": `${stars} out of 5 stars`, children: Array.from({ length: 5 }).map((_, i) => /* @__PURE__ */ jsx(
|
|
18724
|
+
StarIcon,
|
|
18725
|
+
{
|
|
18726
|
+
className: cn(
|
|
18727
|
+
"h-4 w-4",
|
|
18728
|
+
i + 1 <= Math.round(stars) ? "fill-amber-400 text-amber-400" : "fill-white/15 text-white/15"
|
|
18729
|
+
)
|
|
18730
|
+
},
|
|
18731
|
+
i
|
|
18732
|
+
)) });
|
|
18733
|
+
}
|
|
18734
|
+
function ReviewsBand({ eyebrow, title, subtitle, link, items, note }) {
|
|
18735
|
+
return /* @__PURE__ */ jsx("section", { className: cn(SURFACE_PRIMARY_900, "py-20 text-white sm:py-28"), children: /* @__PURE__ */ jsxs("div", { className: "mx-auto w-full max-w-6xl px-6 sm:px-8", children: [
|
|
18736
|
+
/* @__PURE__ */ jsx(
|
|
18737
|
+
SectionHead,
|
|
18738
|
+
{
|
|
18739
|
+
eyebrow,
|
|
18740
|
+
title,
|
|
18741
|
+
subtitle,
|
|
18742
|
+
link,
|
|
18743
|
+
theme: "dark"
|
|
18744
|
+
}
|
|
18745
|
+
),
|
|
18746
|
+
/* @__PURE__ */ jsx("div", { className: "grid gap-5 sm:grid-cols-2 lg:grid-cols-3", children: items.map((review, i) => /* @__PURE__ */ jsxs(
|
|
18747
|
+
"figure",
|
|
18748
|
+
{
|
|
18749
|
+
className: "rounded-2xl border border-white/10 bg-white/5 p-7 transition-colors hover:bg-white/10",
|
|
18750
|
+
children: [
|
|
18751
|
+
/* @__PURE__ */ jsx(ReviewStars, { stars: review.stars }),
|
|
18752
|
+
/* @__PURE__ */ jsxs("blockquote", { className: "font-sans text-lg italic leading-relaxed text-white/90", children: [
|
|
18753
|
+
"\u201C",
|
|
18754
|
+
review.quote,
|
|
18755
|
+
"\u201D"
|
|
18756
|
+
] }),
|
|
18757
|
+
/* @__PURE__ */ jsxs("figcaption", { className: "mt-5 text-sm font-medium text-white/60", children: [
|
|
18758
|
+
"\u2014 ",
|
|
18759
|
+
review.author
|
|
18760
|
+
] })
|
|
18761
|
+
]
|
|
18762
|
+
},
|
|
18763
|
+
i
|
|
18764
|
+
)) }),
|
|
18765
|
+
note && /* @__PURE__ */ jsx("p", { className: "mt-8 text-center text-xs text-white/40", children: note })
|
|
18766
|
+
] }) });
|
|
18767
|
+
}
|
|
18768
|
+
function NewHome({
|
|
18769
|
+
hero,
|
|
18770
|
+
explorer,
|
|
18771
|
+
expeditions,
|
|
18772
|
+
popular,
|
|
18773
|
+
stats,
|
|
18774
|
+
usp,
|
|
18775
|
+
reviews,
|
|
18776
|
+
journal,
|
|
18777
|
+
cta,
|
|
18778
|
+
footer,
|
|
18779
|
+
className
|
|
18780
|
+
}) {
|
|
18781
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("w-full bg-background", className), children: [
|
|
18782
|
+
/* @__PURE__ */ jsx(HomeHeader, __spreadValues({}, hero)),
|
|
18783
|
+
explorer && /* @__PURE__ */ jsx(
|
|
18784
|
+
AdventureExplorer,
|
|
18785
|
+
__spreadProps(__spreadValues({}, explorer), {
|
|
18786
|
+
className: cn(SURFACE_WHITE, explorer.className)
|
|
18787
|
+
})
|
|
18788
|
+
),
|
|
18789
|
+
expeditions && /* @__PURE__ */ jsx(ExpeditionsRail, __spreadValues({}, expeditions)),
|
|
18790
|
+
popular && /* @__PURE__ */ jsx(PopularCloud, __spreadValues({}, popular)),
|
|
18791
|
+
stats && /* @__PURE__ */ jsx(StatsBand, __spreadValues({}, stats)),
|
|
18792
|
+
usp && /* @__PURE__ */ jsx(USP, __spreadProps(__spreadValues({}, usp), { className: cn(SURFACE_PRIMARY_800, usp.className) })),
|
|
18793
|
+
reviews && /* @__PURE__ */ jsx(ReviewsBand, __spreadValues({}, reviews)),
|
|
18794
|
+
journal && /* @__PURE__ */ jsx(BlogJournal, __spreadProps(__spreadValues({}, journal), { className: cn(SURFACE_WHITE, journal.className) })),
|
|
18795
|
+
cta && /* @__PURE__ */ jsx(CtaBanner, __spreadValues({}, cta)),
|
|
18796
|
+
footer && /* @__PURE__ */ jsx(SiteFooter, __spreadValues({}, footer))
|
|
18797
|
+
] });
|
|
18798
|
+
}
|
|
18799
|
+
var ACTIVE_PILL = "bg-primary text-white shadow-sm";
|
|
18800
|
+
var VARIANT3 = {
|
|
18801
|
+
black: {
|
|
18802
|
+
track: "bg-white/5 border-white/10",
|
|
18803
|
+
idle: "text-white/55 hover:text-white",
|
|
18804
|
+
ring: "focus-visible:ring-white/70"
|
|
18805
|
+
},
|
|
18806
|
+
white: {
|
|
18807
|
+
track: "bg-neutral-100 border-black/10",
|
|
18808
|
+
idle: "text-neutral-500 hover:text-neutral-900",
|
|
18809
|
+
ring: "focus-visible:ring-neutral-900/40"
|
|
18810
|
+
}
|
|
18811
|
+
};
|
|
18812
|
+
var SIZE = {
|
|
18813
|
+
sm: "px-4 py-1.5 text-[13px]",
|
|
18814
|
+
md: "px-5 py-2 text-sm"
|
|
18815
|
+
};
|
|
18816
|
+
function SegmentedControl({
|
|
18817
|
+
items,
|
|
18818
|
+
value,
|
|
18819
|
+
defaultValue,
|
|
18820
|
+
onValueChange,
|
|
18821
|
+
variant = "black",
|
|
18822
|
+
size = "md",
|
|
18823
|
+
fullWidth = false,
|
|
18824
|
+
collapse = false,
|
|
18825
|
+
"aria-label": ariaLabel = "Options",
|
|
18826
|
+
className
|
|
18827
|
+
}) {
|
|
18828
|
+
var _a;
|
|
18829
|
+
const isControlled = value != null;
|
|
18830
|
+
const [internal, setInternal] = React32.useState(
|
|
18831
|
+
defaultValue != null ? defaultValue : (_a = items[0]) == null ? void 0 : _a.id
|
|
18832
|
+
);
|
|
18833
|
+
const active = isControlled ? value : internal;
|
|
18834
|
+
const select = (id) => {
|
|
18835
|
+
if (!isControlled) setInternal(id);
|
|
18836
|
+
onValueChange == null ? void 0 : onValueChange(id);
|
|
18837
|
+
};
|
|
18838
|
+
const onKeyDown = (e) => {
|
|
18839
|
+
if (e.key !== "ArrowLeft" && e.key !== "ArrowRight") return;
|
|
18840
|
+
e.preventDefault();
|
|
18841
|
+
const enabled = items.filter((i) => !i.disabled);
|
|
18842
|
+
const idx = enabled.findIndex((i) => i.id === active);
|
|
18843
|
+
if (idx === -1) return;
|
|
18844
|
+
const next = e.key === "ArrowRight" ? enabled[(idx + 1) % enabled.length] : enabled[(idx - 1 + enabled.length) % enabled.length];
|
|
18845
|
+
select(next.id);
|
|
18846
|
+
};
|
|
18847
|
+
const v = VARIANT3[variant];
|
|
18848
|
+
return /* @__PURE__ */ jsx(
|
|
18849
|
+
"div",
|
|
18850
|
+
{
|
|
18851
|
+
role: "radiogroup",
|
|
18852
|
+
"aria-label": ariaLabel,
|
|
18853
|
+
onKeyDown,
|
|
18854
|
+
className: cn(
|
|
18855
|
+
"inline-flex max-w-full items-center gap-1 overflow-x-auto rounded-full border p-1.5 scrollbar-none",
|
|
18856
|
+
fullWidth && "flex w-full",
|
|
18857
|
+
v.track,
|
|
18858
|
+
className
|
|
18859
|
+
),
|
|
18860
|
+
children: items.map((item) => {
|
|
18861
|
+
const isActive = item.id === active;
|
|
18862
|
+
const Icon = item.icon;
|
|
18863
|
+
const showLabel = collapse === "all" ? false : collapse ? isActive : true;
|
|
18864
|
+
return /* @__PURE__ */ jsxs(
|
|
18865
|
+
"button",
|
|
18866
|
+
{
|
|
18867
|
+
type: "button",
|
|
18868
|
+
role: "radio",
|
|
18869
|
+
"aria-checked": isActive,
|
|
18870
|
+
"aria-label": collapse && !showLabel ? item.label : void 0,
|
|
18871
|
+
title: collapse && !showLabel ? item.label : void 0,
|
|
18872
|
+
disabled: item.disabled,
|
|
18873
|
+
tabIndex: isActive ? 0 : -1,
|
|
18874
|
+
onClick: () => select(item.id),
|
|
18875
|
+
className: cn(
|
|
18876
|
+
"inline-flex shrink-0 items-center justify-center rounded-full font-ui font-bold transition-all duration-300 ease-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-40",
|
|
18877
|
+
showLabel && Icon ? "gap-2" : "gap-0",
|
|
18878
|
+
variant === "black" ? "focus-visible:ring-offset-neutral-950" : "focus-visible:ring-offset-white",
|
|
18879
|
+
fullWidth && "flex-1",
|
|
18880
|
+
SIZE[size],
|
|
18881
|
+
/* Icon-only segments are square-ish — drop the side padding so
|
|
18882
|
+
the icon centres in a circular pill. */
|
|
18883
|
+
collapse && !showLabel && (size === "sm" ? "!px-1.5" : "!px-2"),
|
|
18884
|
+
isActive ? ACTIVE_PILL : v.idle,
|
|
18885
|
+
v.ring
|
|
18886
|
+
),
|
|
18887
|
+
children: [
|
|
18888
|
+
Icon && /* @__PURE__ */ jsx(
|
|
18889
|
+
Icon,
|
|
18890
|
+
{
|
|
18891
|
+
className: cn("shrink-0", size === "sm" ? "size-4" : "size-[18px]")
|
|
18892
|
+
}
|
|
18893
|
+
),
|
|
18894
|
+
/* @__PURE__ */ jsx(
|
|
18895
|
+
"span",
|
|
18896
|
+
{
|
|
18897
|
+
className: cn(
|
|
18898
|
+
"overflow-hidden whitespace-nowrap transition-all duration-300 ease-out",
|
|
18899
|
+
showLabel ? "max-w-[12ch] opacity-100" : "max-w-0 opacity-0"
|
|
18900
|
+
),
|
|
18901
|
+
children: item.label
|
|
18902
|
+
}
|
|
18903
|
+
)
|
|
18904
|
+
]
|
|
18905
|
+
},
|
|
18906
|
+
item.id
|
|
18907
|
+
);
|
|
18908
|
+
})
|
|
18909
|
+
}
|
|
18910
|
+
);
|
|
18911
|
+
}
|
|
17160
18912
|
|
|
17161
|
-
export { ActivityCard, AgentContactCard, Alert, AskExo, BirthDateField, BlogCard, BlogPost, BookingAdventureCard, BookingCancellationEmail, BookingConfirmedCard, BookingCreatedEmail, BookingDetails, BookingForm, BookingOtpEmail, BookingPaymentConfirmationEmail, BookingShell, BookingSummary, Button, COUNTRIES, CancellationForm, CategoryPage2, CounterField, CountrySearchField, DEFAULT_HEADER_LINKS, DEFAULT_LANGUAGES, STATUS_MAP as DEPARTURE_STATUS_MAP, DatePickerField, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, ExoOrb, FilterPanel, FloatingInput, FloatingSelect, GroupProgressBar, GroupStatusBanner, Itinerary, ItineraryDay, LOGO_PLANETAEXO_DATA_URI, LeadCapturePopup, MenuTrip, NotificationEmail, OTPCodeInput, Offer, OfferAdventureCard, ParticipantCounter, ParticipantList, PartnerBookingCreatedEmail, PartnerRegistrationCompleteEmail, PaymentAmountSelector, PaymentDetailsBlock, PaymentMethodSelector, PaymentModalShell, PaymentReceiptEmail, PaymentReminderEmail, PhoneCountrySelect, PhotoGallery, Picture, PriceProgress, PricingMatrixCard, PricingTrip, RegistrationForm, RegistrationProgressBar, RegistrationReminderEmail, RegistrationReminderIndividualEmail, RegistrationSuccessCard, ShareWidget, SiteHeader, StatusBadge2 as StatusBadge, StickyBookingCard, TERMS_ACCEPT_KEY, TermsSection, ThemeToggle, Toast, TransferDetailsBlock, TravellerFormInviteEmail, TripCard, TripHeader, TripPage, TrustpilotEmbed, buttonVariants, cn, emailTokens, formatCpf, getStripeAppearance, itineraryDaySpecIcons, stripeAppearance, validateCpf, webpVariantUrl, wrapEmailHtml };
|
|
18913
|
+
export { ActivityCard, AdventureExplorer, AgentContactCard, Alert, AskExo, BirthDateField, BlogCard, BlogJournal, BlogPost, BookingAdventureCard, BookingCancellationEmail, BookingConfirmedCard, BookingCreatedEmail, BookingDetails, BookingForm, BookingOtpEmail, BookingPaymentConfirmationEmail, BookingShell, BookingSummary, Button, COUNTRIES, CancellationForm, CategoryPage2, Chip, CounterField, CountrySearchField, CtaBanner, DEFAULT_FOOTER_BADGES, DEFAULT_FOOTER_DESTINATIONS, DEFAULT_FOOTER_LANGUAGES, DEFAULT_FOOTER_LEGAL, DEFAULT_FOOTER_PAGES, DEFAULT_FOOTER_SOCIALS, DEFAULT_FOOTER_THEMES, DEFAULT_HEADER_LINKS, DEFAULT_LANGUAGES, STATUS_MAP as DEPARTURE_STATUS_MAP, DatePickerField, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, ExoOrb, FilterPanel, FloatingInput, FloatingSelect, GroupProgressBar, GroupStatusBanner, HomeHeader, Itinerary, ItineraryDay, LOGO_PLANETAEXO_DATA_URI, LeadCapturePopup, MenuTrip, NewHome, NotificationEmail, OTPCodeInput, Offer, OfferAdventureCard, ParticipantCounter, ParticipantList, PartnerBookingCreatedEmail, PartnerRegistrationCompleteEmail, PaymentAmountSelector, PaymentDetailsBlock, PaymentMethodSelector, PaymentModalShell, PaymentReceiptEmail, PaymentReminderEmail, PhoneCountrySelect, PhotoGallery, Picture, PriceProgress, PricingMatrixCard, PricingTrip, RegistrationForm, RegistrationProgressBar, RegistrationReminderEmail, RegistrationReminderIndividualEmail, RegistrationSuccessCard, SegmentedControl, ShareWidget, SiteFooter, SiteHeader, StatusBadge2 as StatusBadge, StickyBookingCard, TERMS_ACCEPT_KEY, TermsSection, ThemeToggle, Toast, TransferDetailsBlock, TravellerFormInviteEmail, TripCard, TripHeader, TripPage, TrustpilotEmbed, USP, buttonVariants, chipVariants, cn, emailTokens, formatCpf, getStripeAppearance, itineraryDaySpecIcons, stripeAppearance, validateCpf, webpVariantUrl, wrapEmailHtml };
|
|
17162
18914
|
//# sourceMappingURL=index.js.map
|
|
17163
18915
|
//# sourceMappingURL=index.js.map
|