@planetaexo/design-system 0.64.0 → 0.65.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 +2012 -364
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +737 -12
- package/dist/index.d.ts +737 -12
- package/dist/index.js +1997 -366
- 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
|
{
|
|
@@ -7909,7 +7910,8 @@ function DatePickerField({
|
|
|
7909
7910
|
placeholder = "Select a date",
|
|
7910
7911
|
disabled,
|
|
7911
7912
|
fromDate,
|
|
7912
|
-
className
|
|
7913
|
+
className,
|
|
7914
|
+
error
|
|
7913
7915
|
}) {
|
|
7914
7916
|
const [open, setOpen] = React32.useState(false);
|
|
7915
7917
|
const containerRef = React32.useRef(null);
|
|
@@ -7923,78 +7925,91 @@ function DatePickerField({
|
|
|
7923
7925
|
observer.observe(containerRef.current);
|
|
7924
7926
|
return () => observer.disconnect();
|
|
7925
7927
|
}, []);
|
|
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
|
-
}
|
|
7928
|
+
return /* @__PURE__ */ jsxs("div", { ref: containerRef, className: cn("w-full", className), children: [
|
|
7929
|
+
/* @__PURE__ */ jsxs(Popover, { open, onOpenChange: setOpen, children: [
|
|
7930
|
+
/* @__PURE__ */ jsxs(
|
|
7931
|
+
PopoverTrigger,
|
|
7932
|
+
{
|
|
7933
|
+
disabled,
|
|
7934
|
+
className: cn(
|
|
7935
|
+
"relative flex w-full items-center rounded-lg border border-border bg-background",
|
|
7936
|
+
"px-3 text-left text-base font-ui transition-colors h-14",
|
|
7937
|
+
"focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary",
|
|
7938
|
+
"disabled:pointer-events-none disabled:opacity-50",
|
|
7939
|
+
open && "border-primary ring-1 ring-primary",
|
|
7940
|
+
error && "border-destructive focus:border-destructive focus:ring-destructive"
|
|
7951
7941
|
),
|
|
7952
|
-
|
|
7953
|
-
|
|
7942
|
+
children: [
|
|
7943
|
+
/* @__PURE__ */ jsxs(
|
|
7944
|
+
"span",
|
|
7945
|
+
{
|
|
7946
|
+
className: cn(
|
|
7947
|
+
"pointer-events-none absolute left-3 transition-all duration-150 font-ui",
|
|
7948
|
+
hasValue || open ? "top-2 text-xs text-primary" : "top-1/2 -translate-y-1/2 text-base text-muted-foreground"
|
|
7949
|
+
),
|
|
7950
|
+
children: [
|
|
7951
|
+
label,
|
|
7952
|
+
required && /* @__PURE__ */ jsx("span", { className: "text-primary ml-0.5", children: "*" })
|
|
7953
|
+
]
|
|
7954
|
+
}
|
|
7955
|
+
),
|
|
7956
|
+
/* @__PURE__ */ jsx(
|
|
7957
|
+
"span",
|
|
7958
|
+
{
|
|
7959
|
+
className: cn(
|
|
7960
|
+
"flex-1 truncate mt-3",
|
|
7961
|
+
hasValue ? "text-foreground" : "invisible"
|
|
7962
|
+
),
|
|
7963
|
+
children: hasValue ? format(value, "dd MMM yyyy") : placeholder
|
|
7964
|
+
}
|
|
7965
|
+
),
|
|
7966
|
+
/* @__PURE__ */ jsx(CalendarIcon, { className: "ml-2 h-4 w-4 shrink-0 text-muted-foreground" })
|
|
7967
|
+
]
|
|
7968
|
+
}
|
|
7969
|
+
),
|
|
7970
|
+
/* @__PURE__ */ jsx(
|
|
7971
|
+
PopoverContent,
|
|
7972
|
+
{
|
|
7973
|
+
className: "p-0",
|
|
7974
|
+
align: "start",
|
|
7975
|
+
style: calendarWidth ? { width: calendarWidth } : void 0,
|
|
7976
|
+
children: /* @__PURE__ */ jsx(
|
|
7977
|
+
Calendar,
|
|
7954
7978
|
{
|
|
7955
|
-
|
|
7956
|
-
|
|
7957
|
-
|
|
7958
|
-
|
|
7959
|
-
|
|
7979
|
+
mode: "single",
|
|
7980
|
+
selected: value,
|
|
7981
|
+
onSelect: (date) => {
|
|
7982
|
+
onChange == null ? void 0 : onChange(date);
|
|
7983
|
+
setOpen(false);
|
|
7984
|
+
},
|
|
7985
|
+
fromDate: fromDate != null ? fromDate : /* @__PURE__ */ new Date(),
|
|
7986
|
+
className: "font-ui w-full",
|
|
7987
|
+
autoFocus: true
|
|
7960
7988
|
}
|
|
7961
|
-
)
|
|
7962
|
-
|
|
7963
|
-
|
|
7964
|
-
|
|
7965
|
-
)
|
|
7966
|
-
|
|
7967
|
-
|
|
7968
|
-
|
|
7969
|
-
|
|
7970
|
-
|
|
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
|
-
] }) });
|
|
7989
|
+
)
|
|
7990
|
+
}
|
|
7991
|
+
)
|
|
7992
|
+
] }),
|
|
7993
|
+
error && /* @__PURE__ */ jsx("p", { className: "mt-1 text-xs text-destructive font-ui", children: error })
|
|
7994
|
+
] });
|
|
7995
|
+
}
|
|
7996
|
+
function dialFor(iso) {
|
|
7997
|
+
var _a, _b;
|
|
7998
|
+
return (_b = (_a = PHONE_COUNTRIES.find((c) => c.code === iso)) == null ? void 0 : _a.dial) != null ? _b : "";
|
|
7989
7999
|
}
|
|
8000
|
+
var EMAIL_RE = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
7990
8001
|
function FormSection({
|
|
7991
8002
|
title,
|
|
8003
|
+
required,
|
|
7992
8004
|
children,
|
|
7993
8005
|
className
|
|
7994
8006
|
}) {
|
|
7995
8007
|
return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-5", className), children: [
|
|
7996
8008
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-4", children: [
|
|
7997
|
-
/* @__PURE__ */
|
|
8009
|
+
/* @__PURE__ */ jsxs("h3", { className: "text-base font-bold text-foreground whitespace-nowrap font-heading", children: [
|
|
8010
|
+
title,
|
|
8011
|
+
required && /* @__PURE__ */ jsx("span", { className: "text-primary ml-0.5", children: "*" })
|
|
8012
|
+
] }),
|
|
7998
8013
|
/* @__PURE__ */ jsx("div", { className: "h-px flex-1 bg-border" })
|
|
7999
8014
|
] }),
|
|
8000
8015
|
children
|
|
@@ -8010,24 +8025,67 @@ var defaultInitial = {
|
|
|
8010
8025
|
phoneCountry: "BR",
|
|
8011
8026
|
lastName: "",
|
|
8012
8027
|
firstName: "",
|
|
8013
|
-
country: "
|
|
8028
|
+
country: "",
|
|
8014
8029
|
phone: "",
|
|
8015
|
-
email: ""
|
|
8030
|
+
email: "",
|
|
8031
|
+
contactVia: "Email"
|
|
8016
8032
|
};
|
|
8017
8033
|
function BookingForm({
|
|
8018
8034
|
defaultValues,
|
|
8019
8035
|
onSubmit,
|
|
8020
|
-
submitLabel
|
|
8036
|
+
submitLabel,
|
|
8021
8037
|
loading = false,
|
|
8022
8038
|
showHeader = true,
|
|
8023
|
-
title
|
|
8024
|
-
subtitle
|
|
8039
|
+
title,
|
|
8040
|
+
subtitle,
|
|
8041
|
+
labels,
|
|
8025
8042
|
className
|
|
8026
8043
|
}) {
|
|
8044
|
+
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;
|
|
8045
|
+
const L = labels != null ? labels : {};
|
|
8046
|
+
const titleText = (_a = title != null ? title : L.title) != null ? _a : "Check availability for your trip";
|
|
8047
|
+
const subtitleText = (_b = subtitle != null ? subtitle : L.subtitle) != null ? _b : "Free enquiry \u2013 no commitment";
|
|
8048
|
+
const submitText = (_c = submitLabel != null ? submitLabel : L.submit) != null ? _c : "Send my request";
|
|
8027
8049
|
const [values, setValues] = React32.useState(__spreadValues(__spreadValues({}, defaultInitial), defaultValues));
|
|
8028
|
-
const
|
|
8050
|
+
const [errors, setErrors] = React32.useState({});
|
|
8051
|
+
const set = (key, value) => {
|
|
8052
|
+
setValues((prev) => __spreadProps(__spreadValues({}, prev), { [key]: value }));
|
|
8053
|
+
setErrors(
|
|
8054
|
+
(prev) => prev[key] ? __spreadProps(__spreadValues({}, prev), { [key]: void 0 }) : prev
|
|
8055
|
+
);
|
|
8056
|
+
};
|
|
8057
|
+
React32.useEffect(() => {
|
|
8058
|
+
if (!defaultValues) return;
|
|
8059
|
+
setValues((prev) => {
|
|
8060
|
+
let changed = false;
|
|
8061
|
+
const next = __spreadValues({}, prev);
|
|
8062
|
+
Object.keys(defaultValues).forEach(
|
|
8063
|
+
(k) => {
|
|
8064
|
+
const incoming = defaultValues[k];
|
|
8065
|
+
if (incoming === void 0 || incoming === "") return;
|
|
8066
|
+
if (prev[k] === defaultInitial[k]) {
|
|
8067
|
+
next[k] = incoming;
|
|
8068
|
+
changed = true;
|
|
8069
|
+
}
|
|
8070
|
+
}
|
|
8071
|
+
);
|
|
8072
|
+
return changed ? next : prev;
|
|
8073
|
+
});
|
|
8074
|
+
}, [defaultValues]);
|
|
8075
|
+
const reqMsg = (_d = L.errorRequired) != null ? _d : "This field is required";
|
|
8076
|
+
const emailMsg = (_e = L.errorEmail) != null ? _e : "Enter a valid email address";
|
|
8029
8077
|
const handleSubmit = (e) => {
|
|
8030
8078
|
e.preventDefault();
|
|
8079
|
+
const next = {};
|
|
8080
|
+
if (!values.firstName.trim()) next.firstName = reqMsg;
|
|
8081
|
+
if (!values.lastName.trim()) next.lastName = reqMsg;
|
|
8082
|
+
if (!values.email.trim()) next.email = reqMsg;
|
|
8083
|
+
else if (!EMAIL_RE.test(values.email.trim())) next.email = emailMsg;
|
|
8084
|
+
if (!values.travelDate) next.travelDate = reqMsg;
|
|
8085
|
+
if (!values.phone.trim()) next.phone = reqMsg;
|
|
8086
|
+
if (!values.contactVia) next.contactVia = reqMsg;
|
|
8087
|
+
setErrors(next);
|
|
8088
|
+
if (Object.keys(next).length > 0) return;
|
|
8031
8089
|
onSubmit == null ? void 0 : onSubmit(values);
|
|
8032
8090
|
};
|
|
8033
8091
|
return /* @__PURE__ */ jsxs(
|
|
@@ -8038,15 +8096,14 @@ function BookingForm({
|
|
|
8038
8096
|
noValidate: true,
|
|
8039
8097
|
children: [
|
|
8040
8098
|
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:
|
|
8099
|
+
/* @__PURE__ */ jsx("h2", { className: "text-2xl font-black uppercase tracking-wide text-foreground font-heading leading-tight", children: titleText }),
|
|
8100
|
+
/* @__PURE__ */ jsx("p", { className: "mt-1.5 text-sm text-muted-foreground font-ui", children: subtitleText })
|
|
8043
8101
|
] }),
|
|
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: [
|
|
8102
|
+
/* @__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
8103
|
/* @__PURE__ */ jsx(
|
|
8046
8104
|
CounterField,
|
|
8047
8105
|
{
|
|
8048
|
-
label: "Adults",
|
|
8049
|
-
required: true,
|
|
8106
|
+
label: (_g = L.adults) != null ? _g : "Adults",
|
|
8050
8107
|
value: values.adults,
|
|
8051
8108
|
min: 1,
|
|
8052
8109
|
onChange: (v) => set("adults", v)
|
|
@@ -8055,30 +8112,30 @@ function BookingForm({
|
|
|
8055
8112
|
/* @__PURE__ */ jsx(
|
|
8056
8113
|
CounterField,
|
|
8057
8114
|
{
|
|
8058
|
-
label: "Children",
|
|
8059
|
-
sublabel: "(under 12)",
|
|
8115
|
+
label: (_h = L.children) != null ? _h : "Children",
|
|
8116
|
+
sublabel: (_i = L.childrenSublabel) != null ? _i : "(under 12)",
|
|
8060
8117
|
value: values.children,
|
|
8061
8118
|
min: 0,
|
|
8062
8119
|
onChange: (v) => set("children", v)
|
|
8063
8120
|
}
|
|
8064
8121
|
)
|
|
8065
8122
|
] }) }),
|
|
8066
|
-
/* @__PURE__ */ jsx(FormSection, { title: "Your next trip", children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: [
|
|
8123
|
+
/* @__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
8124
|
/* @__PURE__ */ jsx(
|
|
8068
8125
|
DatePickerField,
|
|
8069
8126
|
{
|
|
8070
|
-
label: "Travel date",
|
|
8127
|
+
label: (_k = L.travelDate) != null ? _k : "Travel date",
|
|
8071
8128
|
required: true,
|
|
8072
8129
|
value: values.travelDate,
|
|
8073
8130
|
onChange: (d) => set("travelDate", d),
|
|
8074
|
-
placeholder: "Pick a date"
|
|
8131
|
+
placeholder: (_l = L.pickDate) != null ? _l : "Pick a date",
|
|
8132
|
+
error: errors.travelDate
|
|
8075
8133
|
}
|
|
8076
8134
|
),
|
|
8077
8135
|
/* @__PURE__ */ jsx(
|
|
8078
8136
|
FloatingInput,
|
|
8079
8137
|
{
|
|
8080
|
-
label: "Budget (per person)",
|
|
8081
|
-
required: true,
|
|
8138
|
+
label: (_m = L.budget) != null ? _m : "Budget (per person)",
|
|
8082
8139
|
type: "number",
|
|
8083
8140
|
min: 0,
|
|
8084
8141
|
value: values.budget,
|
|
@@ -8086,7 +8143,7 @@ function BookingForm({
|
|
|
8086
8143
|
}
|
|
8087
8144
|
)
|
|
8088
8145
|
] }) }),
|
|
8089
|
-
/* @__PURE__ */ jsx(FormSection, { title: "Tell us about your trip", children: /* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
8146
|
+
/* @__PURE__ */ jsx(FormSection, { title: (_n = L.projectSection) != null ? _n : "Tell us about your trip", children: /* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
8090
8147
|
/* @__PURE__ */ jsx(
|
|
8091
8148
|
"textarea",
|
|
8092
8149
|
{
|
|
@@ -8114,140 +8171,184 @@ function BookingForm({
|
|
|
8114
8171
|
"peer-not-placeholder-shown:top-2 peer-not-placeholder-shown:text-xs peer-not-placeholder-shown:text-muted-foreground"
|
|
8115
8172
|
),
|
|
8116
8173
|
children: [
|
|
8117
|
-
"Your trip in a few words",
|
|
8174
|
+
(_o = L.projectLabel) != null ? _o : "Your trip in a few words",
|
|
8118
8175
|
" ",
|
|
8119
|
-
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground font-normal", children: "(optional)" })
|
|
8176
|
+
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground font-normal", children: (_p = L.optional) != null ? _p : "(optional)" })
|
|
8120
8177
|
]
|
|
8121
8178
|
}
|
|
8122
8179
|
)
|
|
8123
8180
|
] }) }),
|
|
8124
|
-
/* @__PURE__ */ jsxs(FormSection, { title: "Contact details", children: [
|
|
8181
|
+
/* @__PURE__ */ jsxs(FormSection, { title: (_q = L.contactSection) != null ? _q : "Contact details", children: [
|
|
8125
8182
|
/* @__PURE__ */ jsx(
|
|
8126
8183
|
"div",
|
|
8127
8184
|
{
|
|
8128
8185
|
role: "radiogroup",
|
|
8129
|
-
"aria-label": "Title",
|
|
8186
|
+
"aria-label": (_r = L.titleAria) != null ? _r : "Title",
|
|
8130
8187
|
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
|
-
|
|
8188
|
+
children: ["ms", "mr"].map((c) => {
|
|
8189
|
+
var _a2, _b2;
|
|
8190
|
+
return /* @__PURE__ */ jsxs(
|
|
8191
|
+
"label",
|
|
8192
|
+
{
|
|
8193
|
+
className: "flex min-h-9 cursor-pointer items-center gap-2.5 font-ui text-sm text-foreground",
|
|
8194
|
+
children: [
|
|
8195
|
+
/* @__PURE__ */ jsx(
|
|
8196
|
+
"input",
|
|
8197
|
+
{
|
|
8198
|
+
type: "radio",
|
|
8199
|
+
name: "civility",
|
|
8200
|
+
value: c,
|
|
8201
|
+
checked: values.civility === c,
|
|
8202
|
+
onChange: () => set("civility", c),
|
|
8203
|
+
className: "h-4 w-4 shrink-0 accent-primary cursor-pointer"
|
|
8204
|
+
}
|
|
8205
|
+
),
|
|
8206
|
+
c === "ms" ? (_a2 = L.ms) != null ? _a2 : "Ms." : (_b2 = L.mr) != null ? _b2 : "Mr."
|
|
8207
|
+
]
|
|
8208
|
+
},
|
|
8209
|
+
c
|
|
8210
|
+
);
|
|
8211
|
+
})
|
|
8152
8212
|
}
|
|
8153
8213
|
),
|
|
8154
8214
|
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3 min-w-0", children: [
|
|
8155
8215
|
/* @__PURE__ */ jsx("div", { className: "min-w-0", children: /* @__PURE__ */ jsx(
|
|
8156
8216
|
FloatingInput,
|
|
8157
8217
|
{
|
|
8158
|
-
label: "Last name",
|
|
8218
|
+
label: (_s = L.lastName) != null ? _s : "Last name",
|
|
8159
8219
|
required: true,
|
|
8160
8220
|
value: values.lastName,
|
|
8161
|
-
onChange: (e) => set("lastName", e.target.value)
|
|
8221
|
+
onChange: (e) => set("lastName", e.target.value),
|
|
8222
|
+
error: errors.lastName
|
|
8162
8223
|
}
|
|
8163
8224
|
) }),
|
|
8164
8225
|
/* @__PURE__ */ jsx("div", { className: "min-w-0", children: /* @__PURE__ */ jsx(
|
|
8165
8226
|
FloatingInput,
|
|
8166
8227
|
{
|
|
8167
|
-
label: "First name",
|
|
8228
|
+
label: (_t = L.firstName) != null ? _t : "First name",
|
|
8168
8229
|
required: true,
|
|
8169
8230
|
value: values.firstName,
|
|
8170
|
-
onChange: (e) => set("firstName", e.target.value)
|
|
8231
|
+
onChange: (e) => set("firstName", e.target.value),
|
|
8232
|
+
error: errors.firstName
|
|
8171
8233
|
}
|
|
8172
8234
|
) }),
|
|
8173
|
-
/* @__PURE__ */ jsx("div", { className: "min-w-0 sm:col-span-2 lg:col-span-1", children: /* @__PURE__ */
|
|
8174
|
-
|
|
8235
|
+
/* @__PURE__ */ jsx("div", { className: "min-w-0 sm:col-span-2 lg:col-span-1", children: /* @__PURE__ */ jsx(
|
|
8236
|
+
CountrySearchField,
|
|
8175
8237
|
{
|
|
8176
|
-
label: "Country of residence",
|
|
8177
|
-
required: true,
|
|
8238
|
+
label: (_u = L.country) != null ? _u : "Country of residence",
|
|
8178
8239
|
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
|
-
]
|
|
8240
|
+
onChange: (code) => set("country", code),
|
|
8241
|
+
countries: COUNTRIES
|
|
8191
8242
|
}
|
|
8192
8243
|
) })
|
|
8193
8244
|
] }),
|
|
8194
8245
|
/* @__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: [
|
|
8246
|
+
/* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
|
|
8247
|
+
/* @__PURE__ */ jsxs("div", { className: "flex w-full min-w-0", children: [
|
|
8205
8248
|
/* @__PURE__ */ jsx(
|
|
8206
|
-
|
|
8249
|
+
PhoneCountrySelect,
|
|
8207
8250
|
{
|
|
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
|
-
)
|
|
8251
|
+
value: values.phoneCountry,
|
|
8252
|
+
onChange: (code) => set("phoneCountry", code),
|
|
8253
|
+
className: "shrink-0",
|
|
8254
|
+
showDial: false
|
|
8219
8255
|
}
|
|
8220
8256
|
),
|
|
8221
|
-
/* @__PURE__ */ jsxs(
|
|
8222
|
-
|
|
8223
|
-
|
|
8224
|
-
|
|
8225
|
-
|
|
8226
|
-
|
|
8227
|
-
"
|
|
8228
|
-
|
|
8229
|
-
|
|
8230
|
-
|
|
8231
|
-
|
|
8232
|
-
|
|
8233
|
-
|
|
8234
|
-
|
|
8235
|
-
|
|
8236
|
-
|
|
8237
|
-
|
|
8257
|
+
/* @__PURE__ */ jsxs("div", { className: "relative min-w-0 flex-1", children: [
|
|
8258
|
+
/* @__PURE__ */ jsx(
|
|
8259
|
+
"input",
|
|
8260
|
+
{
|
|
8261
|
+
id: "phone",
|
|
8262
|
+
type: "tel",
|
|
8263
|
+
placeholder: " ",
|
|
8264
|
+
value: `${dialFor(values.phoneCountry)} ${values.phone}`,
|
|
8265
|
+
onChange: (e) => {
|
|
8266
|
+
const dial = dialFor(values.phoneCountry);
|
|
8267
|
+
let national = e.target.value;
|
|
8268
|
+
if (national.startsWith(dial)) national = national.slice(dial.length);
|
|
8269
|
+
national = national.replace(/^\s+/, "");
|
|
8270
|
+
set("phone", national);
|
|
8271
|
+
},
|
|
8272
|
+
className: cn(
|
|
8273
|
+
"peer block h-14 w-full rounded-r-lg border border-border bg-background",
|
|
8274
|
+
"px-3 pt-5 pb-2 text-base text-foreground font-ui",
|
|
8275
|
+
"transition-colors placeholder-transparent",
|
|
8276
|
+
"focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary",
|
|
8277
|
+
errors.phone && "border-destructive focus:border-destructive focus:ring-destructive"
|
|
8278
|
+
)
|
|
8279
|
+
}
|
|
8280
|
+
),
|
|
8281
|
+
/* @__PURE__ */ jsxs(
|
|
8282
|
+
"label",
|
|
8283
|
+
{
|
|
8284
|
+
htmlFor: "phone",
|
|
8285
|
+
className: cn(
|
|
8286
|
+
"pointer-events-none absolute left-3 top-1/2 -translate-y-1/2",
|
|
8287
|
+
"text-base text-muted-foreground font-ui transition-all duration-150",
|
|
8288
|
+
"peer-focus:top-3 peer-focus:translate-y-0 peer-focus:text-xs peer-focus:text-primary",
|
|
8289
|
+
"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"
|
|
8290
|
+
),
|
|
8291
|
+
children: [
|
|
8292
|
+
(_v = L.phone) != null ? _v : "Phone",
|
|
8293
|
+
" ",
|
|
8294
|
+
/* @__PURE__ */ jsx("span", { className: "text-primary", children: "*" })
|
|
8295
|
+
]
|
|
8296
|
+
}
|
|
8297
|
+
)
|
|
8298
|
+
] })
|
|
8299
|
+
] }),
|
|
8300
|
+
errors.phone && /* @__PURE__ */ jsx("p", { className: "mt-1 text-xs text-destructive font-ui", children: errors.phone })
|
|
8238
8301
|
] }),
|
|
8239
8302
|
/* @__PURE__ */ jsx("div", { className: "min-w-0", children: /* @__PURE__ */ jsx(
|
|
8240
8303
|
FloatingInput,
|
|
8241
8304
|
{
|
|
8242
|
-
label: "Email",
|
|
8305
|
+
label: (_w = L.email) != null ? _w : "Email",
|
|
8243
8306
|
required: true,
|
|
8244
8307
|
type: "email",
|
|
8245
8308
|
value: values.email,
|
|
8246
|
-
onChange: (e) => set("email", e.target.value)
|
|
8309
|
+
onChange: (e) => set("email", e.target.value),
|
|
8310
|
+
error: errors.email
|
|
8247
8311
|
}
|
|
8248
8312
|
) })
|
|
8249
8313
|
] })
|
|
8250
8314
|
] }),
|
|
8315
|
+
/* @__PURE__ */ jsxs(
|
|
8316
|
+
FormSection,
|
|
8317
|
+
{
|
|
8318
|
+
title: (_x = L.contactViaSection) != null ? _x : "How should we contact you?",
|
|
8319
|
+
required: true,
|
|
8320
|
+
children: [
|
|
8321
|
+
/* @__PURE__ */ jsx(
|
|
8322
|
+
"div",
|
|
8323
|
+
{
|
|
8324
|
+
role: "radiogroup",
|
|
8325
|
+
"aria-label": (_y = L.contactViaSection) != null ? _y : "How should we contact you?",
|
|
8326
|
+
className: "inline-flex flex-wrap rounded-full border border-border bg-background p-1",
|
|
8327
|
+
children: [
|
|
8328
|
+
["WhatsApp", (_z = L.contactViaWhatsApp) != null ? _z : "WhatsApp"],
|
|
8329
|
+
["Email", (_A = L.contactViaEmail) != null ? _A : "Email"],
|
|
8330
|
+
["Phone", (_B = L.contactViaPhone) != null ? _B : "Phone"]
|
|
8331
|
+
].map(([value, label]) => /* @__PURE__ */ jsx(
|
|
8332
|
+
"button",
|
|
8333
|
+
{
|
|
8334
|
+
type: "button",
|
|
8335
|
+
role: "radio",
|
|
8336
|
+
"aria-checked": values.contactVia === value,
|
|
8337
|
+
onClick: () => set("contactVia", value),
|
|
8338
|
+
className: cn(
|
|
8339
|
+
"whitespace-nowrap rounded-full px-5 py-2 font-heading text-[13px] font-semibold transition-colors",
|
|
8340
|
+
values.contactVia === value ? "bg-primary text-primary-foreground" : "text-muted-foreground hover:text-foreground"
|
|
8341
|
+
),
|
|
8342
|
+
children: label
|
|
8343
|
+
},
|
|
8344
|
+
value
|
|
8345
|
+
))
|
|
8346
|
+
}
|
|
8347
|
+
),
|
|
8348
|
+
errors.contactVia && /* @__PURE__ */ jsx("p", { className: "text-xs text-destructive font-ui", children: errors.contactVia })
|
|
8349
|
+
]
|
|
8350
|
+
}
|
|
8351
|
+
),
|
|
8251
8352
|
/* @__PURE__ */ jsx("div", { className: "flex justify-center pt-2", children: /* @__PURE__ */ jsx(
|
|
8252
8353
|
"button",
|
|
8253
8354
|
{
|
|
@@ -8282,8 +8383,8 @@ function BookingForm({
|
|
|
8282
8383
|
}
|
|
8283
8384
|
)
|
|
8284
8385
|
] }),
|
|
8285
|
-
"Sending\u2026"
|
|
8286
|
-
] }) :
|
|
8386
|
+
(_C = L.sending) != null ? _C : "Sending\u2026"
|
|
8387
|
+
] }) : submitText
|
|
8287
8388
|
}
|
|
8288
8389
|
) })
|
|
8289
8390
|
]
|
|
@@ -10032,56 +10133,66 @@ function AccordionItem(_a) {
|
|
|
10032
10133
|
function AccordionTrigger(_a) {
|
|
10033
10134
|
var _b = _a, {
|
|
10034
10135
|
className,
|
|
10035
|
-
children
|
|
10136
|
+
children,
|
|
10137
|
+
headingLevel
|
|
10036
10138
|
} = _b, props = __objRest(_b, [
|
|
10037
10139
|
"className",
|
|
10038
|
-
"children"
|
|
10140
|
+
"children",
|
|
10141
|
+
"headingLevel"
|
|
10039
10142
|
]);
|
|
10040
10143
|
const variant = React32.useContext(AccordionVariantContext);
|
|
10041
|
-
|
|
10042
|
-
|
|
10144
|
+
const headingRender = headingLevel === 2 ? /* @__PURE__ */ jsx("h2", {}) : headingLevel === 4 ? /* @__PURE__ */ jsx("h4", {}) : headingLevel === 5 ? /* @__PURE__ */ jsx("h5", {}) : headingLevel === 6 ? /* @__PURE__ */ jsx("h6", {}) : void 0;
|
|
10145
|
+
return /* @__PURE__ */ jsx(
|
|
10146
|
+
Accordion$1.Header,
|
|
10043
10147
|
__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
|
-
}
|
|
10148
|
+
className: "flex"
|
|
10149
|
+
}, headingRender ? { render: headingRender } : {}), {
|
|
10150
|
+
children: /* @__PURE__ */ jsxs(
|
|
10151
|
+
Accordion$1.Trigger,
|
|
10152
|
+
__spreadProps(__spreadValues({
|
|
10153
|
+
"data-slot": "accordion-trigger",
|
|
10154
|
+
className: cn(
|
|
10155
|
+
"group/accordion-trigger relative flex flex-1 items-center justify-between text-left transition-all outline-none",
|
|
10156
|
+
"focus-visible:ring-3 focus-visible:ring-ring/50 aria-disabled:pointer-events-none aria-disabled:opacity-50",
|
|
10157
|
+
variant === "default" && [
|
|
10158
|
+
"rounded-lg border border-transparent py-2.5 text-sm font-medium",
|
|
10159
|
+
"hover:underline focus-visible:border-ring",
|
|
10160
|
+
"**:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground"
|
|
10161
|
+
],
|
|
10162
|
+
variant === "faq" && [
|
|
10163
|
+
"px-5 py-4 text-base font-bold",
|
|
10164
|
+
"hover:bg-muted/30 rounded-lg"
|
|
10165
|
+
],
|
|
10166
|
+
className
|
|
10076
10167
|
)
|
|
10077
|
-
|
|
10078
|
-
|
|
10079
|
-
|
|
10080
|
-
|
|
10081
|
-
|
|
10082
|
-
|
|
10168
|
+
}, props), {
|
|
10169
|
+
children: [
|
|
10170
|
+
children,
|
|
10171
|
+
variant === "default" && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
10172
|
+
/* @__PURE__ */ jsx(
|
|
10173
|
+
ChevronDownIcon,
|
|
10174
|
+
{
|
|
10175
|
+
"data-slot": "accordion-trigger-icon",
|
|
10176
|
+
className: "pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden"
|
|
10177
|
+
}
|
|
10178
|
+
),
|
|
10179
|
+
/* @__PURE__ */ jsx(
|
|
10180
|
+
ChevronUpIcon,
|
|
10181
|
+
{
|
|
10182
|
+
"data-slot": "accordion-trigger-icon",
|
|
10183
|
+
className: "pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline"
|
|
10184
|
+
}
|
|
10185
|
+
)
|
|
10186
|
+
] }),
|
|
10187
|
+
variant === "faq" && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
10188
|
+
/* @__PURE__ */ jsx(PlusIcon, { className: "pointer-events-none shrink-0 size-5 text-foreground group-aria-expanded/accordion-trigger:hidden" }),
|
|
10189
|
+
/* @__PURE__ */ jsx(MinusIcon, { className: "pointer-events-none hidden shrink-0 size-5 text-foreground group-aria-expanded/accordion-trigger:inline" })
|
|
10190
|
+
] })
|
|
10191
|
+
]
|
|
10192
|
+
})
|
|
10193
|
+
)
|
|
10083
10194
|
})
|
|
10084
|
-
)
|
|
10195
|
+
);
|
|
10085
10196
|
}
|
|
10086
10197
|
function AccordionContent(_a) {
|
|
10087
10198
|
var _b = _a, {
|
|
@@ -10306,9 +10417,10 @@ function FilterPanel({
|
|
|
10306
10417
|
variant = "sidebar",
|
|
10307
10418
|
sortOptions,
|
|
10308
10419
|
sort,
|
|
10309
|
-
onSortChange
|
|
10420
|
+
onSortChange,
|
|
10421
|
+
labels
|
|
10310
10422
|
}) {
|
|
10311
|
-
var _a, _b;
|
|
10423
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
10312
10424
|
const resolvedGroups = React32.useMemo(() => resolveGroups(groups), [groups]);
|
|
10313
10425
|
const [internalValue, setInternalValue] = React32.useState(
|
|
10314
10426
|
() => Object.fromEntries(groups.map((g) => [g.id, []]))
|
|
@@ -10446,7 +10558,7 @@ function FilterPanel({
|
|
|
10446
10558
|
type: "button",
|
|
10447
10559
|
onClick: handleClearAll,
|
|
10448
10560
|
className: "text-sm font-ui font-semibold text-muted-foreground underline underline-offset-2 hover:text-foreground",
|
|
10449
|
-
children: "Clear all"
|
|
10561
|
+
children: (_b = labels == null ? void 0 : labels.clearAll) != null ? _b : "Clear all"
|
|
10450
10562
|
}
|
|
10451
10563
|
),
|
|
10452
10564
|
/* @__PURE__ */ jsxs(
|
|
@@ -10460,9 +10572,8 @@ function FilterPanel({
|
|
|
10460
10572
|
}
|
|
10461
10573
|
),
|
|
10462
10574
|
children: [
|
|
10463
|
-
"Show ",
|
|
10464
|
-
totalSelected > 0 ? `(${totalSelected})` : ""
|
|
10465
|
-
" results"
|
|
10575
|
+
(_c = labels == null ? void 0 : labels.showResults) != null ? _c : "Show results",
|
|
10576
|
+
totalSelected > 0 ? ` (${totalSelected})` : ""
|
|
10466
10577
|
]
|
|
10467
10578
|
}
|
|
10468
10579
|
)
|
|
@@ -10487,7 +10598,7 @@ function FilterPanel({
|
|
|
10487
10598
|
}
|
|
10488
10599
|
),
|
|
10489
10600
|
children: [
|
|
10490
|
-
"Sort",
|
|
10601
|
+
(_d = labels == null ? void 0 : labels.sortLabel) != null ? _d : "Sort",
|
|
10491
10602
|
/* @__PURE__ */ jsx(ChevronDownIcon, { className: "h-4 w-4 text-muted-foreground" })
|
|
10492
10603
|
]
|
|
10493
10604
|
}
|
|
@@ -10597,14 +10708,15 @@ function FilterPanel({
|
|
|
10597
10708
|
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
10709
|
children: [
|
|
10599
10710
|
/* @__PURE__ */ jsx(XIcon, { className: "h-3 w-3" }),
|
|
10600
|
-
"Clear all
|
|
10711
|
+
(_e = labels == null ? void 0 : labels.clearAll) != null ? _e : "Clear all",
|
|
10712
|
+
" (",
|
|
10601
10713
|
totalSelected,
|
|
10602
10714
|
")"
|
|
10603
10715
|
]
|
|
10604
10716
|
}
|
|
10605
10717
|
),
|
|
10606
10718
|
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" }),
|
|
10719
|
+
/* @__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
10720
|
/* @__PURE__ */ jsxs(Popover, { children: [
|
|
10609
10721
|
/* @__PURE__ */ jsxs(
|
|
10610
10722
|
PopoverTrigger,
|
|
@@ -10621,7 +10733,7 @@ function FilterPanel({
|
|
|
10621
10733
|
}
|
|
10622
10734
|
),
|
|
10623
10735
|
children: [
|
|
10624
|
-
(
|
|
10736
|
+
(_g = activeSort == null ? void 0 : activeSort.label) != null ? _g : "Default",
|
|
10625
10737
|
/* @__PURE__ */ jsx(ChevronDownIcon, { className: "h-3.5 w-3.5 text-muted-foreground" })
|
|
10626
10738
|
]
|
|
10627
10739
|
}
|
|
@@ -10693,7 +10805,7 @@ function FilterPanel({
|
|
|
10693
10805
|
{
|
|
10694
10806
|
onClick: handleClearAll,
|
|
10695
10807
|
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"
|
|
10808
|
+
children: (_h = labels == null ? void 0 : labels.removeAllFilters) != null ? _h : "Remove all filters"
|
|
10697
10809
|
}
|
|
10698
10810
|
)
|
|
10699
10811
|
] });
|
|
@@ -10962,7 +11074,7 @@ function Picture(_a) {
|
|
|
10962
11074
|
"onLoad",
|
|
10963
11075
|
"onError"
|
|
10964
11076
|
]);
|
|
10965
|
-
var _a2;
|
|
11077
|
+
var _a2, _b2;
|
|
10966
11078
|
const ref = React32.useRef(null);
|
|
10967
11079
|
const [visible, setVisible] = React32.useState(eager);
|
|
10968
11080
|
const [loaded, setLoaded] = React32.useState(false);
|
|
@@ -10990,8 +11102,9 @@ function Picture(_a) {
|
|
|
10990
11102
|
}, [src]);
|
|
10991
11103
|
const webp = webpVariantUrl(src);
|
|
10992
11104
|
const realSrc = visible ? src : PLACEHOLDER_SRC;
|
|
11105
|
+
const resolvedTitle = (_a2 = imgProps.title) != null ? _a2 : typeof imgProps.alt === "string" && imgProps.alt.trim() ? imgProps.alt : void 0;
|
|
10993
11106
|
const decodingResolved = decoding != null ? decoding : eager ? void 0 : "async";
|
|
10994
|
-
const fetchPriorityResolved = (
|
|
11107
|
+
const fetchPriorityResolved = (_b2 = imgProps.fetchPriority) != null ? _b2 : eager ? void 0 : "low";
|
|
10995
11108
|
const handleLoad = (e) => {
|
|
10996
11109
|
if (visible) setLoaded(true);
|
|
10997
11110
|
onLoad == null ? void 0 : onLoad(e);
|
|
@@ -11017,6 +11130,7 @@ function Picture(_a) {
|
|
|
11017
11130
|
onLoad: handleLoad,
|
|
11018
11131
|
onError: handleError
|
|
11019
11132
|
}, imgProps), {
|
|
11133
|
+
title: resolvedTitle,
|
|
11020
11134
|
fetchPriority: fetchPriorityResolved,
|
|
11021
11135
|
style: mergedStyle
|
|
11022
11136
|
})
|
|
@@ -11040,6 +11154,7 @@ function Picture(_a) {
|
|
|
11040
11154
|
onLoad: handleLoad,
|
|
11041
11155
|
onError: handleError
|
|
11042
11156
|
}, imgProps), {
|
|
11157
|
+
title: resolvedTitle,
|
|
11043
11158
|
fetchPriority: fetchPriorityResolved,
|
|
11044
11159
|
style: mergedStyle
|
|
11045
11160
|
})
|
|
@@ -11334,9 +11449,10 @@ function gridCols(total) {
|
|
|
11334
11449
|
function Lightbox({
|
|
11335
11450
|
photos,
|
|
11336
11451
|
initialIndex,
|
|
11337
|
-
onClose
|
|
11452
|
+
onClose,
|
|
11453
|
+
labels
|
|
11338
11454
|
}) {
|
|
11339
|
-
var _a;
|
|
11455
|
+
var _a, _b, _c, _d;
|
|
11340
11456
|
const [index, setIndex] = React32.useState(initialIndex);
|
|
11341
11457
|
const total = photos.length;
|
|
11342
11458
|
const photo = photos[index];
|
|
@@ -11369,7 +11485,7 @@ function Lightbox({
|
|
|
11369
11485
|
type: "button",
|
|
11370
11486
|
onClick: onClose,
|
|
11371
11487
|
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",
|
|
11488
|
+
"aria-label": (_a = labels == null ? void 0 : labels.close) != null ? _a : "Close lightbox",
|
|
11373
11489
|
children: /* @__PURE__ */ jsx(XIcon, { className: "h-5 w-5" })
|
|
11374
11490
|
}
|
|
11375
11491
|
),
|
|
@@ -11382,7 +11498,7 @@ function Lightbox({
|
|
|
11382
11498
|
prev();
|
|
11383
11499
|
},
|
|
11384
11500
|
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",
|
|
11501
|
+
"aria-label": (_b = labels == null ? void 0 : labels.previous) != null ? _b : "Previous photo",
|
|
11386
11502
|
children: /* @__PURE__ */ jsx(ChevronLeftIcon, { className: "h-5 w-5" })
|
|
11387
11503
|
}
|
|
11388
11504
|
),
|
|
@@ -11395,7 +11511,7 @@ function Lightbox({
|
|
|
11395
11511
|
next();
|
|
11396
11512
|
},
|
|
11397
11513
|
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",
|
|
11514
|
+
"aria-label": (_c = labels == null ? void 0 : labels.next) != null ? _c : "Next photo",
|
|
11399
11515
|
children: /* @__PURE__ */ jsx(ChevronRightIcon, { className: "h-5 w-5" })
|
|
11400
11516
|
}
|
|
11401
11517
|
),
|
|
@@ -11403,7 +11519,8 @@ function Lightbox({
|
|
|
11403
11519
|
Picture,
|
|
11404
11520
|
{
|
|
11405
11521
|
src: photo.src,
|
|
11406
|
-
alt: (
|
|
11522
|
+
alt: (_d = photo.alt) != null ? _d : `Photo ${index + 1}`,
|
|
11523
|
+
title: photo.caption,
|
|
11407
11524
|
className: "max-w-[calc(100%-6rem)] max-h-[calc(100vh-11rem)] object-contain rounded-lg shadow-2xl",
|
|
11408
11525
|
onClick: (e) => e.stopPropagation()
|
|
11409
11526
|
}
|
|
@@ -11473,6 +11590,7 @@ function PhotoTile({
|
|
|
11473
11590
|
{
|
|
11474
11591
|
src: photo.src,
|
|
11475
11592
|
alt: (_b = photo.alt) != null ? _b : `Photo ${index + 1}`,
|
|
11593
|
+
title: photo.caption,
|
|
11476
11594
|
className: "w-full h-full object-cover transition-transform duration-700 group-hover:scale-105",
|
|
11477
11595
|
loading: "lazy"
|
|
11478
11596
|
}
|
|
@@ -11486,8 +11604,10 @@ function PhotoTile({
|
|
|
11486
11604
|
function ShowMoreButton({
|
|
11487
11605
|
count,
|
|
11488
11606
|
expanded,
|
|
11489
|
-
onClick
|
|
11607
|
+
onClick,
|
|
11608
|
+
labels
|
|
11490
11609
|
}) {
|
|
11610
|
+
var _a, _b;
|
|
11491
11611
|
return /* @__PURE__ */ jsx("div", { className: "flex justify-center py-4", children: /* @__PURE__ */ jsx(
|
|
11492
11612
|
"button",
|
|
11493
11613
|
{
|
|
@@ -11501,10 +11621,11 @@ function ShowMoreButton({
|
|
|
11501
11621
|
),
|
|
11502
11622
|
children: expanded ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
11503
11623
|
/* @__PURE__ */ jsx(ChevronUpIcon, { className: "h-4 w-4 text-muted-foreground" }),
|
|
11504
|
-
"Show less"
|
|
11624
|
+
(_a = labels == null ? void 0 : labels.showLess) != null ? _a : "Show less"
|
|
11505
11625
|
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
11506
11626
|
/* @__PURE__ */ jsx(LayoutGridIcon, { className: "h-4 w-4 text-muted-foreground" }),
|
|
11507
|
-
"See more
|
|
11627
|
+
(_b = labels == null ? void 0 : labels.seeMore) != null ? _b : "See more",
|
|
11628
|
+
" (",
|
|
11508
11629
|
count,
|
|
11509
11630
|
")"
|
|
11510
11631
|
] })
|
|
@@ -11514,7 +11635,8 @@ function ShowMoreButton({
|
|
|
11514
11635
|
function GridGallery({
|
|
11515
11636
|
photos,
|
|
11516
11637
|
initialVisible,
|
|
11517
|
-
onOpen
|
|
11638
|
+
onOpen,
|
|
11639
|
+
labels
|
|
11518
11640
|
}) {
|
|
11519
11641
|
const [expanded, setExpanded] = React32.useState(false);
|
|
11520
11642
|
const cols = gridCols(photos.length);
|
|
@@ -11536,7 +11658,8 @@ function GridGallery({
|
|
|
11536
11658
|
{
|
|
11537
11659
|
count: photos.length - initialVisible,
|
|
11538
11660
|
expanded,
|
|
11539
|
-
onClick: () => setExpanded((v) => !v)
|
|
11661
|
+
onClick: () => setExpanded((v) => !v),
|
|
11662
|
+
labels
|
|
11540
11663
|
}
|
|
11541
11664
|
)
|
|
11542
11665
|
] });
|
|
@@ -11544,7 +11667,8 @@ function GridGallery({
|
|
|
11544
11667
|
function CompactGridGallery({
|
|
11545
11668
|
photos,
|
|
11546
11669
|
initialVisible,
|
|
11547
|
-
onOpen
|
|
11670
|
+
onOpen,
|
|
11671
|
+
labels
|
|
11548
11672
|
}) {
|
|
11549
11673
|
const [expanded, setExpanded] = React32.useState(false);
|
|
11550
11674
|
const hasMore = photos.length > initialVisible;
|
|
@@ -11565,7 +11689,8 @@ function CompactGridGallery({
|
|
|
11565
11689
|
{
|
|
11566
11690
|
count: photos.length - initialVisible,
|
|
11567
11691
|
expanded,
|
|
11568
|
-
onClick: () => setExpanded((v) => !v)
|
|
11692
|
+
onClick: () => setExpanded((v) => !v),
|
|
11693
|
+
labels
|
|
11569
11694
|
}
|
|
11570
11695
|
)
|
|
11571
11696
|
] });
|
|
@@ -11573,7 +11698,8 @@ function CompactGridGallery({
|
|
|
11573
11698
|
function MasonryGallery({
|
|
11574
11699
|
photos,
|
|
11575
11700
|
initialVisible,
|
|
11576
|
-
onOpen
|
|
11701
|
+
onOpen,
|
|
11702
|
+
labels
|
|
11577
11703
|
}) {
|
|
11578
11704
|
const [expanded, setExpanded] = React32.useState(false);
|
|
11579
11705
|
const hasMore = photos.length > initialVisible;
|
|
@@ -11594,6 +11720,7 @@ function MasonryGallery({
|
|
|
11594
11720
|
{
|
|
11595
11721
|
src: p.src,
|
|
11596
11722
|
alt: (_b = p.alt) != null ? _b : `Photo ${i + 1}`,
|
|
11723
|
+
title: p.caption,
|
|
11597
11724
|
className: "w-full h-auto object-cover transition-transform duration-700 group-hover:scale-105",
|
|
11598
11725
|
loading: "lazy"
|
|
11599
11726
|
}
|
|
@@ -11609,7 +11736,8 @@ function MasonryGallery({
|
|
|
11609
11736
|
{
|
|
11610
11737
|
count: photos.length - initialVisible,
|
|
11611
11738
|
expanded,
|
|
11612
|
-
onClick: () => setExpanded((v) => !v)
|
|
11739
|
+
onClick: () => setExpanded((v) => !v),
|
|
11740
|
+
labels
|
|
11613
11741
|
}
|
|
11614
11742
|
)
|
|
11615
11743
|
] });
|
|
@@ -11633,6 +11761,7 @@ function FilmstripGallery({
|
|
|
11633
11761
|
{
|
|
11634
11762
|
src: p.src,
|
|
11635
11763
|
alt: (_b = p.alt) != null ? _b : `Photo ${i + 1}`,
|
|
11764
|
+
title: p.caption,
|
|
11636
11765
|
className: "h-full w-full object-cover transition-transform duration-700 group-hover:scale-105",
|
|
11637
11766
|
loading: "lazy"
|
|
11638
11767
|
}
|
|
@@ -11646,7 +11775,8 @@ function FilmstripGallery({
|
|
|
11646
11775
|
}
|
|
11647
11776
|
function FeaturedGallery({
|
|
11648
11777
|
photos,
|
|
11649
|
-
onOpen
|
|
11778
|
+
onOpen,
|
|
11779
|
+
labels
|
|
11650
11780
|
}) {
|
|
11651
11781
|
const [expanded, setExpanded] = React32.useState(false);
|
|
11652
11782
|
const featured = photos.slice(0, 3);
|
|
@@ -11698,6 +11828,7 @@ function FeaturedGallery({
|
|
|
11698
11828
|
{
|
|
11699
11829
|
src: p.src,
|
|
11700
11830
|
alt: (_b = p.alt) != null ? _b : `Photo ${i + 4}`,
|
|
11831
|
+
title: p.caption,
|
|
11701
11832
|
className: "h-full w-full object-cover transition-transform duration-700 group-hover:scale-105",
|
|
11702
11833
|
loading: "lazy"
|
|
11703
11834
|
}
|
|
@@ -11713,7 +11844,8 @@ function FeaturedGallery({
|
|
|
11713
11844
|
{
|
|
11714
11845
|
count: extra.length,
|
|
11715
11846
|
expanded,
|
|
11716
|
-
onClick: () => setExpanded((v) => !v)
|
|
11847
|
+
onClick: () => setExpanded((v) => !v),
|
|
11848
|
+
labels
|
|
11717
11849
|
}
|
|
11718
11850
|
)
|
|
11719
11851
|
] });
|
|
@@ -11781,6 +11913,7 @@ function CarouselGallery({
|
|
|
11781
11913
|
{
|
|
11782
11914
|
src: photo.src,
|
|
11783
11915
|
alt: (_a = photo.alt) != null ? _a : `Photo ${index + 1}`,
|
|
11916
|
+
title: photo.caption,
|
|
11784
11917
|
className: "h-full w-full object-cover transition-transform duration-500 group-hover/photo:scale-[1.02]",
|
|
11785
11918
|
loading: "lazy"
|
|
11786
11919
|
},
|
|
@@ -11844,6 +11977,7 @@ function PhotoGallery({
|
|
|
11844
11977
|
variant = "grid",
|
|
11845
11978
|
initialVisible = 6,
|
|
11846
11979
|
onPhotoClick,
|
|
11980
|
+
labels,
|
|
11847
11981
|
className
|
|
11848
11982
|
}) {
|
|
11849
11983
|
const [lightboxIndex, setLightboxIndex] = React32.useState(null);
|
|
@@ -11859,7 +11993,8 @@ function PhotoGallery({
|
|
|
11859
11993
|
{
|
|
11860
11994
|
photos: normalised,
|
|
11861
11995
|
initialIndex: lightboxIndex,
|
|
11862
|
-
onClose: () => setLightboxIndex(null)
|
|
11996
|
+
onClose: () => setLightboxIndex(null),
|
|
11997
|
+
labels
|
|
11863
11998
|
}
|
|
11864
11999
|
);
|
|
11865
12000
|
if (variant === "carousel" || variant === "fullBleed") {
|
|
@@ -11887,7 +12022,8 @@ function PhotoGallery({
|
|
|
11887
12022
|
{
|
|
11888
12023
|
photos: normalised,
|
|
11889
12024
|
initialVisible,
|
|
11890
|
-
onOpen: handleOpen
|
|
12025
|
+
onOpen: handleOpen,
|
|
12026
|
+
labels
|
|
11891
12027
|
}
|
|
11892
12028
|
),
|
|
11893
12029
|
variant === "gridCompact" && /* @__PURE__ */ jsx(
|
|
@@ -11895,7 +12031,8 @@ function PhotoGallery({
|
|
|
11895
12031
|
{
|
|
11896
12032
|
photos: normalised,
|
|
11897
12033
|
initialVisible,
|
|
11898
|
-
onOpen: handleOpen
|
|
12034
|
+
onOpen: handleOpen,
|
|
12035
|
+
labels
|
|
11899
12036
|
}
|
|
11900
12037
|
),
|
|
11901
12038
|
variant === "masonry" && /* @__PURE__ */ jsx(
|
|
@@ -11903,11 +12040,12 @@ function PhotoGallery({
|
|
|
11903
12040
|
{
|
|
11904
12041
|
photos: normalised,
|
|
11905
12042
|
initialVisible,
|
|
11906
|
-
onOpen: handleOpen
|
|
12043
|
+
onOpen: handleOpen,
|
|
12044
|
+
labels
|
|
11907
12045
|
}
|
|
11908
12046
|
),
|
|
11909
12047
|
variant === "filmstrip" && /* @__PURE__ */ jsx(FilmstripGallery, { photos: normalised, onOpen: handleOpen }),
|
|
11910
|
-
variant === "featured" && /* @__PURE__ */ jsx(FeaturedGallery, { photos: normalised, onOpen: handleOpen }),
|
|
12048
|
+
variant === "featured" && /* @__PURE__ */ jsx(FeaturedGallery, { photos: normalised, onOpen: handleOpen, labels }),
|
|
11911
12049
|
variant === "collage" && /* @__PURE__ */ jsx(CollageGallery, { photos: normalised, onOpen: handleOpen }),
|
|
11912
12050
|
variant === "collageTight" && /* @__PURE__ */ jsx(CollageGallery, { photos: normalised, onOpen: handleOpen, seamless: true }),
|
|
11913
12051
|
lightbox
|
|
@@ -12177,6 +12315,8 @@ function PricingTrip({
|
|
|
12177
12315
|
departureTimes,
|
|
12178
12316
|
onBook,
|
|
12179
12317
|
bookLabel = "Check availability",
|
|
12318
|
+
fromLabel = "From",
|
|
12319
|
+
perPersonLabel = "per person",
|
|
12180
12320
|
variant = "card",
|
|
12181
12321
|
sharp = false,
|
|
12182
12322
|
belowPrice,
|
|
@@ -12203,13 +12343,16 @@ function PricingTrip({
|
|
|
12203
12343
|
),
|
|
12204
12344
|
/* @__PURE__ */ jsxs("div", { className: "relative flex items-center gap-3", children: [
|
|
12205
12345
|
/* @__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:
|
|
12346
|
+
/* @__PURE__ */ jsx("p", { className: "text-[10px] uppercase tracking-wide text-muted-foreground font-ui leading-none mb-0.5", children: fromLabel }),
|
|
12207
12347
|
/* @__PURE__ */ jsxs("div", { className: "flex items-end gap-1.5 flex-wrap", children: [
|
|
12208
12348
|
/* @__PURE__ */ jsxs("p", { className: "text-lg font-bold text-foreground font-heading leading-none", children: [
|
|
12209
12349
|
currency,
|
|
12210
12350
|
" ",
|
|
12211
12351
|
priceFrom,
|
|
12212
|
-
/* @__PURE__ */
|
|
12352
|
+
/* @__PURE__ */ jsxs("span", { className: "text-[11px] font-normal text-muted-foreground font-ui ml-1", children: [
|
|
12353
|
+
"/ ",
|
|
12354
|
+
perPersonLabel
|
|
12355
|
+
] })
|
|
12213
12356
|
] }),
|
|
12214
12357
|
(priceInfo || currencyEstimates && currencyEstimates.length > 0) && /* @__PURE__ */ jsx(
|
|
12215
12358
|
"button",
|
|
@@ -12321,7 +12464,7 @@ function PricingTrip({
|
|
|
12321
12464
|
] }),
|
|
12322
12465
|
/* @__PURE__ */ jsx("div", { className: "flex-1" }),
|
|
12323
12466
|
/* @__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:
|
|
12467
|
+
/* @__PURE__ */ jsx("span", { className: "block text-[10px] uppercase tracking-wide text-muted-foreground font-ui leading-none mb-0.5", children: fromLabel }),
|
|
12325
12468
|
/* @__PURE__ */ jsxs("span", { className: "text-xl font-bold text-foreground font-heading leading-none", children: [
|
|
12326
12469
|
currency,
|
|
12327
12470
|
" ",
|
|
@@ -12350,13 +12493,16 @@ function PricingTrip({
|
|
|
12350
12493
|
}
|
|
12351
12494
|
return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-4", className), children: [
|
|
12352
12495
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
12353
|
-
/* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground font-ui uppercase tracking-wide", children:
|
|
12496
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground font-ui uppercase tracking-wide", children: fromLabel }),
|
|
12354
12497
|
/* @__PURE__ */ jsxs("p", { className: "text-2xl font-bold text-foreground font-heading flex items-center gap-2 flex-wrap", children: [
|
|
12355
12498
|
/* @__PURE__ */ jsxs("span", { children: [
|
|
12356
12499
|
currency,
|
|
12357
12500
|
" ",
|
|
12358
12501
|
priceFrom,
|
|
12359
|
-
/* @__PURE__ */
|
|
12502
|
+
/* @__PURE__ */ jsxs("span", { className: "text-sm font-normal text-muted-foreground font-ui", children: [
|
|
12503
|
+
" / ",
|
|
12504
|
+
perPersonLabel
|
|
12505
|
+
] })
|
|
12360
12506
|
] }),
|
|
12361
12507
|
priceInfo && /* @__PURE__ */ jsx(
|
|
12362
12508
|
"button",
|
|
@@ -12623,8 +12769,10 @@ function SiteHeader({
|
|
|
12623
12769
|
onSearch,
|
|
12624
12770
|
onAccount,
|
|
12625
12771
|
position = variant === "transparent" ? "overlay" : "fixed",
|
|
12772
|
+
labels,
|
|
12626
12773
|
className
|
|
12627
12774
|
}) {
|
|
12775
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
12628
12776
|
const t = VARIANT[variant];
|
|
12629
12777
|
const resolvedLogo = logoSrc != null ? logoSrc : variant === "white" ? logoSrcDark : logoSrcLight;
|
|
12630
12778
|
const [openMenu, setOpenMenu] = React32.useState(null);
|
|
@@ -12682,7 +12830,7 @@ function SiteHeader({
|
|
|
12682
12830
|
{
|
|
12683
12831
|
type: "button",
|
|
12684
12832
|
onClick: () => setMobileOpen(true),
|
|
12685
|
-
"aria-label": "Open menu",
|
|
12833
|
+
"aria-label": (_a = labels == null ? void 0 : labels.openMenu) != null ? _a : "Open menu",
|
|
12686
12834
|
className: cn(
|
|
12687
12835
|
"flex lg:hidden h-9 w-9 items-center justify-center rounded-full transition-colors -ml-1.5",
|
|
12688
12836
|
t.mobileTrigger
|
|
@@ -12711,8 +12859,8 @@ function SiteHeader({
|
|
|
12711
12859
|
}
|
|
12712
12860
|
),
|
|
12713
12861
|
/* @__PURE__ */ jsx("nav", { className: "hidden lg:flex items-center gap-0.5 mx-auto", children: links.map((link) => {
|
|
12714
|
-
var
|
|
12715
|
-
const hasDropdown = !!((
|
|
12862
|
+
var _a2, _b2;
|
|
12863
|
+
const hasDropdown = !!((_a2 = link.items) == null ? void 0 : _a2.length);
|
|
12716
12864
|
const isOpen = openMenu === link.label;
|
|
12717
12865
|
return /* @__PURE__ */ jsxs(
|
|
12718
12866
|
"div",
|
|
@@ -12724,7 +12872,7 @@ function SiteHeader({
|
|
|
12724
12872
|
/* @__PURE__ */ jsxs(
|
|
12725
12873
|
"a",
|
|
12726
12874
|
{
|
|
12727
|
-
href: (
|
|
12875
|
+
href: (_b2 = link.href) != null ? _b2 : "#",
|
|
12728
12876
|
onClick: hasDropdown ? (e) => e.preventDefault() : void 0,
|
|
12729
12877
|
className: cn(
|
|
12730
12878
|
"flex items-center gap-1 px-3.5 py-1.5 rounded-full",
|
|
@@ -12773,7 +12921,7 @@ function SiteHeader({
|
|
|
12773
12921
|
"button",
|
|
12774
12922
|
{
|
|
12775
12923
|
type: "button",
|
|
12776
|
-
"aria-label": "Language",
|
|
12924
|
+
"aria-label": (_b = labels == null ? void 0 : labels.language) != null ? _b : "Language",
|
|
12777
12925
|
className: cn(
|
|
12778
12926
|
"flex items-center gap-0.5 px-2.5 py-1.5 rounded-full",
|
|
12779
12927
|
"text-sm font-ui transition-colors",
|
|
@@ -12813,7 +12961,7 @@ function SiteHeader({
|
|
|
12813
12961
|
{
|
|
12814
12962
|
type: "button",
|
|
12815
12963
|
onClick: onSearch,
|
|
12816
|
-
"aria-label": "Search",
|
|
12964
|
+
"aria-label": (_c = labels == null ? void 0 : labels.search) != null ? _c : "Search",
|
|
12817
12965
|
className: cn(
|
|
12818
12966
|
"flex h-9 w-9 items-center justify-center rounded-full transition-colors",
|
|
12819
12967
|
t.icon
|
|
@@ -12826,7 +12974,7 @@ function SiteHeader({
|
|
|
12826
12974
|
{
|
|
12827
12975
|
type: "button",
|
|
12828
12976
|
onClick: onAccount,
|
|
12829
|
-
"aria-label": "Account",
|
|
12977
|
+
"aria-label": (_d = labels == null ? void 0 : labels.account) != null ? _d : "Account",
|
|
12830
12978
|
className: cn(
|
|
12831
12979
|
"flex h-9 w-9 items-center justify-center rounded-full transition-colors",
|
|
12832
12980
|
t.icon
|
|
@@ -12859,7 +13007,7 @@ function SiteHeader({
|
|
|
12859
13007
|
{
|
|
12860
13008
|
type: "button",
|
|
12861
13009
|
onClick: () => setMobileOpen(false),
|
|
12862
|
-
"aria-label": "Close menu",
|
|
13010
|
+
"aria-label": (_e = labels == null ? void 0 : labels.closeMenu) != null ? _e : "Close menu",
|
|
12863
13011
|
className: cn(
|
|
12864
13012
|
"flex h-9 w-9 items-center justify-center rounded-full transition-colors",
|
|
12865
13013
|
t.mobileTrigger
|
|
@@ -12869,8 +13017,8 @@ function SiteHeader({
|
|
|
12869
13017
|
)
|
|
12870
13018
|
] }),
|
|
12871
13019
|
/* @__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 = !!((
|
|
13020
|
+
var _a2, _b2;
|
|
13021
|
+
const hasDropdown = !!((_a2 = link.items) == null ? void 0 : _a2.length);
|
|
12874
13022
|
const isExpanded = openMobileSection === link.label;
|
|
12875
13023
|
return /* @__PURE__ */ jsxs("div", { children: [
|
|
12876
13024
|
hasDropdown ? /* @__PURE__ */ jsxs(
|
|
@@ -12898,7 +13046,7 @@ function SiteHeader({
|
|
|
12898
13046
|
) : /* @__PURE__ */ jsx(
|
|
12899
13047
|
"a",
|
|
12900
13048
|
{
|
|
12901
|
-
href: (
|
|
13049
|
+
href: (_b2 = link.href) != null ? _b2 : "#",
|
|
12902
13050
|
onClick: () => setMobileOpen(false),
|
|
12903
13051
|
className: cn(
|
|
12904
13052
|
"flex items-center py-4 text-xl font-ui font-black transition-colors border-b border-white/8",
|
|
@@ -12908,11 +13056,11 @@ function SiteHeader({
|
|
|
12908
13056
|
}
|
|
12909
13057
|
),
|
|
12910
13058
|
hasDropdown && isExpanded && /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-0 pl-4 pb-2", children: link.items.map((item) => {
|
|
12911
|
-
var
|
|
13059
|
+
var _a3;
|
|
12912
13060
|
return /* @__PURE__ */ jsx(
|
|
12913
13061
|
"a",
|
|
12914
13062
|
{
|
|
12915
|
-
href: (
|
|
13063
|
+
href: (_a3 = item.href) != null ? _a3 : "#",
|
|
12916
13064
|
onClick: () => setMobileOpen(false),
|
|
12917
13065
|
className: cn(
|
|
12918
13066
|
"py-3 text-base font-ui font-bold transition-colors border-b",
|
|
@@ -12965,7 +13113,7 @@ function SiteHeader({
|
|
|
12965
13113
|
onSearch == null ? void 0 : onSearch();
|
|
12966
13114
|
setMobileOpen(false);
|
|
12967
13115
|
},
|
|
12968
|
-
"aria-label": "Search",
|
|
13116
|
+
"aria-label": (_f = labels == null ? void 0 : labels.search) != null ? _f : "Search",
|
|
12969
13117
|
className: cn("flex h-9 w-9 items-center justify-center rounded-full transition-colors", t.icon),
|
|
12970
13118
|
children: /* @__PURE__ */ jsx(SearchIcon, { className: "h-[18px] w-[18px]" })
|
|
12971
13119
|
}
|
|
@@ -12978,7 +13126,7 @@ function SiteHeader({
|
|
|
12978
13126
|
onAccount == null ? void 0 : onAccount();
|
|
12979
13127
|
setMobileOpen(false);
|
|
12980
13128
|
},
|
|
12981
|
-
"aria-label": "Account",
|
|
13129
|
+
"aria-label": (_g = labels == null ? void 0 : labels.account) != null ? _g : "Account",
|
|
12982
13130
|
className: cn("flex h-9 w-9 items-center justify-center rounded-full transition-colors", t.icon),
|
|
12983
13131
|
children: /* @__PURE__ */ jsx(UserIcon, { className: "h-[18px] w-[18px]" })
|
|
12984
13132
|
}
|
|
@@ -13128,9 +13276,11 @@ function HeartIcon({ filled = false }) {
|
|
|
13128
13276
|
);
|
|
13129
13277
|
}
|
|
13130
13278
|
function TripCardEditorial(props) {
|
|
13279
|
+
var _a, _b, _c, _d;
|
|
13131
13280
|
const {
|
|
13132
13281
|
image,
|
|
13133
13282
|
imageAlt = "",
|
|
13283
|
+
labels,
|
|
13134
13284
|
title,
|
|
13135
13285
|
description,
|
|
13136
13286
|
nights,
|
|
@@ -13188,7 +13338,7 @@ function TripCardEditorial(props) {
|
|
|
13188
13338
|
"button",
|
|
13189
13339
|
{
|
|
13190
13340
|
type: "button",
|
|
13191
|
-
"aria-label": favorited ? "Remove from favorites" : "Add to favorites",
|
|
13341
|
+
"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
13342
|
"aria-pressed": favorited,
|
|
13193
13343
|
onClick: handleFav,
|
|
13194
13344
|
className: cn(
|
|
@@ -13232,7 +13382,7 @@ function TripCardEditorial(props) {
|
|
|
13232
13382
|
/* @__PURE__ */ jsxs("span", { className: "text-sm font-ui font-semibold", children: [
|
|
13233
13383
|
nights,
|
|
13234
13384
|
" ",
|
|
13235
|
-
nights === 1 ? "night" : "nights"
|
|
13385
|
+
nights === 1 ? (_c = labels == null ? void 0 : labels.night) != null ? _c : "night" : (_d = labels == null ? void 0 : labels.nights) != null ? _d : "nights"
|
|
13236
13386
|
] })
|
|
13237
13387
|
] }) : /* @__PURE__ */ jsx("span", {}),
|
|
13238
13388
|
price && /* @__PURE__ */ jsx("p", { className: "text-base font-bold text-foreground font-ui", children: price })
|
|
@@ -13257,12 +13407,14 @@ function TripCardEditorial(props) {
|
|
|
13257
13407
|
] });
|
|
13258
13408
|
}
|
|
13259
13409
|
function TripCard(props) {
|
|
13410
|
+
var _a, _b;
|
|
13260
13411
|
if (props.variant === "editorial") {
|
|
13261
13412
|
return /* @__PURE__ */ jsx(TripCardEditorial, __spreadValues({}, props));
|
|
13262
13413
|
}
|
|
13263
13414
|
const {
|
|
13264
13415
|
image,
|
|
13265
13416
|
imageAlt = "",
|
|
13417
|
+
labels,
|
|
13266
13418
|
status,
|
|
13267
13419
|
nights,
|
|
13268
13420
|
period,
|
|
@@ -13275,6 +13427,7 @@ function TripCard(props) {
|
|
|
13275
13427
|
} = props;
|
|
13276
13428
|
const s = sizeConfig[size];
|
|
13277
13429
|
const statusInfo = status ? statusConfig[status] : null;
|
|
13430
|
+
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
13431
|
const meta = [
|
|
13279
13432
|
nights ? `${nights} nights` : null,
|
|
13280
13433
|
period != null ? period : null
|
|
@@ -13300,7 +13453,7 @@ function TripCard(props) {
|
|
|
13300
13453
|
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-gradient-to-t from-black/80 via-black/30 to-transparent" }),
|
|
13301
13454
|
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
13455
|
/* @__PURE__ */ jsx("span", { className: "text-primary", children: statusInfo.icon }),
|
|
13303
|
-
/* @__PURE__ */ jsx("span", { className: "text-xs font-semibold text-foreground font-ui", children:
|
|
13456
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs font-semibold text-foreground font-ui", children: statusLabel })
|
|
13304
13457
|
] }) }),
|
|
13305
13458
|
!statusInfo && /* @__PURE__ */ jsx("div", { className: "relative z-10" }),
|
|
13306
13459
|
/* @__PURE__ */ jsxs("div", { className: "relative z-10 flex flex-col gap-1.5 p-5", children: [
|
|
@@ -13394,6 +13547,7 @@ function BlogCard({
|
|
|
13394
13547
|
{
|
|
13395
13548
|
src: image,
|
|
13396
13549
|
alt: imageAlt,
|
|
13550
|
+
title: imageAlt || void 0,
|
|
13397
13551
|
loading: "lazy",
|
|
13398
13552
|
className: "absolute inset-0 h-full w-full object-cover transition-transform duration-500 group-hover:scale-105"
|
|
13399
13553
|
}
|
|
@@ -13747,6 +13901,8 @@ function TripHeader({
|
|
|
13747
13901
|
breadcrumb,
|
|
13748
13902
|
destination,
|
|
13749
13903
|
duration,
|
|
13904
|
+
groupSize,
|
|
13905
|
+
labels,
|
|
13750
13906
|
tagline,
|
|
13751
13907
|
chips,
|
|
13752
13908
|
belowMeta,
|
|
@@ -13754,7 +13910,7 @@ function TripHeader({
|
|
|
13754
13910
|
uiVariant = "v1",
|
|
13755
13911
|
className
|
|
13756
13912
|
}) {
|
|
13757
|
-
var _a;
|
|
13913
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
13758
13914
|
const [heroIndex, setHeroIndex] = React32.useState(0);
|
|
13759
13915
|
const [videoReady, setVideoReady] = React32.useState(false);
|
|
13760
13916
|
const videoRef = React32.useRef(null);
|
|
@@ -13772,7 +13928,7 @@ function TripHeader({
|
|
|
13772
13928
|
const currentSrc = heroSrc(safeIndex);
|
|
13773
13929
|
const showCarousel = !videoUrl && validImages.length > 1;
|
|
13774
13930
|
const nights = duration ? (_a = duration.nights) != null ? _a : Math.max(duration.days - 1, 1) : null;
|
|
13775
|
-
const hasMeta = !!(destination || duration);
|
|
13931
|
+
const hasMeta = !!(destination || duration || groupSize);
|
|
13776
13932
|
useHlsVideo(videoRef, isHls ? videoUrl : void 0);
|
|
13777
13933
|
React32.useEffect(() => {
|
|
13778
13934
|
if (!videoUrl) return;
|
|
@@ -13879,7 +14035,7 @@ function TripHeader({
|
|
|
13879
14035
|
(i) => (i - 1 + validImages.length) % validImages.length
|
|
13880
14036
|
),
|
|
13881
14037
|
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": "
|
|
14038
|
+
"aria-label": (_b = labels == null ? void 0 : labels.previousImage) != null ? _b : "Previous image",
|
|
13883
14039
|
children: /* @__PURE__ */ jsx(ChevronLeftIcon, { className: "h-5 w-5" })
|
|
13884
14040
|
}
|
|
13885
14041
|
),
|
|
@@ -13889,7 +14045,7 @@ function TripHeader({
|
|
|
13889
14045
|
type: "button",
|
|
13890
14046
|
onClick: () => setHeroIndex((i) => (i + 1) % validImages.length),
|
|
13891
14047
|
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": "
|
|
14048
|
+
"aria-label": (_c = labels == null ? void 0 : labels.nextImage) != null ? _c : "Next image",
|
|
13893
14049
|
children: /* @__PURE__ */ jsx(ChevronRightIcon, { className: "h-5 w-5" })
|
|
13894
14050
|
}
|
|
13895
14051
|
),
|
|
@@ -13932,15 +14088,19 @@ function TripHeader({
|
|
|
13932
14088
|
/* @__PURE__ */ jsxs("span", { className: "text-sm font-ui font-semibold", children: [
|
|
13933
14089
|
nights,
|
|
13934
14090
|
" ",
|
|
13935
|
-
nights === 1 ? "
|
|
14091
|
+
nights === 1 ? (_d = labels == null ? void 0 : labels.night) != null ? _d : "night" : (_e = labels == null ? void 0 : labels.nights) != null ? _e : "nights"
|
|
13936
14092
|
] }),
|
|
13937
14093
|
/* @__PURE__ */ jsx("span", { className: "text-white/40", children: "\xB7" }),
|
|
13938
14094
|
/* @__PURE__ */ jsx(SunIcon, { className: "h-4 w-4 shrink-0 text-primary-400" }),
|
|
13939
14095
|
/* @__PURE__ */ jsxs("span", { className: "text-sm font-ui font-semibold", children: [
|
|
13940
14096
|
duration.days,
|
|
13941
14097
|
" ",
|
|
13942
|
-
duration.days === 1 ? "
|
|
14098
|
+
duration.days === 1 ? (_f = labels == null ? void 0 : labels.day) != null ? _f : "day" : (_g = labels == null ? void 0 : labels.days) != null ? _g : "days"
|
|
13943
14099
|
] })
|
|
14100
|
+
] }),
|
|
14101
|
+
groupSize && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 text-white/85", children: [
|
|
14102
|
+
/* @__PURE__ */ jsx(UsersIcon, { className: "h-4 w-4 shrink-0 text-primary-400" }),
|
|
14103
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm font-ui font-semibold", children: groupSize })
|
|
13944
14104
|
] })
|
|
13945
14105
|
] }) : tagline ? /* @__PURE__ */ jsx("p", { className: "mt-2 text-sm sm:text-base text-white/80 font-ui", children: tagline }) : null,
|
|
13946
14106
|
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 +14545,10 @@ function Stars({ count = 5 }) {
|
|
|
14385
14545
|
i
|
|
14386
14546
|
)) });
|
|
14387
14547
|
}
|
|
14388
|
-
function ItineraryTimeline({
|
|
14548
|
+
function ItineraryTimeline({
|
|
14549
|
+
steps,
|
|
14550
|
+
transferLabel
|
|
14551
|
+
}) {
|
|
14389
14552
|
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
14553
|
i < steps.length - 1 && /* @__PURE__ */ jsx("div", { className: "absolute left-3.5 top-7 bottom-0 w-px bg-border" }),
|
|
14391
14554
|
/* @__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 +14559,7 @@ function ItineraryTimeline({ steps }) {
|
|
|
14396
14559
|
/* @__PURE__ */ jsx(ClockIcon, { className: "h-3 w-3 mr-1" }),
|
|
14397
14560
|
step.duration
|
|
14398
14561
|
] }),
|
|
14399
|
-
step.isTransfer && /* @__PURE__ */ jsx(Badge, { variant: "secondary", className: "text-xs font-ui h-5 px-2", children: "Transfer" })
|
|
14562
|
+
step.isTransfer && /* @__PURE__ */ jsx(Badge, { variant: "secondary", className: "text-xs font-ui h-5 px-2", children: transferLabel != null ? transferLabel : "Transfer" })
|
|
14400
14563
|
] }),
|
|
14401
14564
|
/* @__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
14565
|
] })
|
|
@@ -14413,6 +14576,7 @@ function TripPage({
|
|
|
14413
14576
|
tagline,
|
|
14414
14577
|
destination,
|
|
14415
14578
|
duration,
|
|
14579
|
+
groupSize,
|
|
14416
14580
|
images,
|
|
14417
14581
|
videoUrl,
|
|
14418
14582
|
breadcrumb,
|
|
@@ -14436,6 +14600,7 @@ function TripPage({
|
|
|
14436
14600
|
whenItOperates,
|
|
14437
14601
|
food,
|
|
14438
14602
|
foodGallery,
|
|
14603
|
+
foodGalleryVariant = "gridCompact",
|
|
14439
14604
|
termsAndConditions,
|
|
14440
14605
|
meetingPoints,
|
|
14441
14606
|
meetingPoint,
|
|
@@ -14455,7 +14620,13 @@ function TripPage({
|
|
|
14455
14620
|
currencyEstimates,
|
|
14456
14621
|
priceInfo,
|
|
14457
14622
|
onBook,
|
|
14623
|
+
onBookingSubmit,
|
|
14624
|
+
bookingLoading,
|
|
14625
|
+
bookingDefaults,
|
|
14626
|
+
bookingLabels,
|
|
14458
14627
|
bookLabel,
|
|
14628
|
+
fromLabel,
|
|
14629
|
+
perPersonLabel,
|
|
14459
14630
|
siteHeader,
|
|
14460
14631
|
uiVariant = "v1",
|
|
14461
14632
|
features,
|
|
@@ -14632,6 +14803,15 @@ function TripPage({
|
|
|
14632
14803
|
breadcrumb,
|
|
14633
14804
|
destination,
|
|
14634
14805
|
duration,
|
|
14806
|
+
groupSize,
|
|
14807
|
+
labels: {
|
|
14808
|
+
night: labels == null ? void 0 : labels.night,
|
|
14809
|
+
nights: labels == null ? void 0 : labels.nights,
|
|
14810
|
+
day: labels == null ? void 0 : labels.day,
|
|
14811
|
+
days: labels == null ? void 0 : labels.days,
|
|
14812
|
+
previousImage: labels == null ? void 0 : labels.previousImage,
|
|
14813
|
+
nextImage: labels == null ? void 0 : labels.nextImage
|
|
14814
|
+
},
|
|
14635
14815
|
tagline,
|
|
14636
14816
|
chips,
|
|
14637
14817
|
siteHeader,
|
|
@@ -14692,7 +14872,7 @@ function TripPage({
|
|
|
14692
14872
|
)) })
|
|
14693
14873
|
] }) : itinerary && itinerary.length > 0 && /* @__PURE__ */ jsxs("section", { id: "trip-section-itinerary", className: "scroll-mt-20", children: [
|
|
14694
14874
|
/* @__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 })
|
|
14875
|
+
/* @__PURE__ */ jsx(ItineraryTimeline, { steps: itinerary, transferLabel: labels == null ? void 0 : labels.transfer })
|
|
14696
14876
|
] }),
|
|
14697
14877
|
included && included.length > 0 && /* @__PURE__ */ jsxs("section", { id: "trip-section-included", className: "scroll-mt-20", children: [
|
|
14698
14878
|
/* @__PURE__ */ jsxs("h2", { className: "text-xl font-bold text-foreground font-heading mb-4 flex items-center gap-2", children: [
|
|
@@ -14729,7 +14909,7 @@ function TripPage({
|
|
|
14729
14909
|
id: "trip-section-when-it-operates",
|
|
14730
14910
|
className: "scroll-mt-20 border-b border-border",
|
|
14731
14911
|
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: [
|
|
14912
|
+
/* @__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
14913
|
(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
14914
|
(_f = labels == null ? void 0 : labels.whenItOperates) != null ? _f : "When this tour operates"
|
|
14735
14915
|
] }) }),
|
|
@@ -14744,7 +14924,7 @@ function TripPage({
|
|
|
14744
14924
|
id: "trip-section-accommodation",
|
|
14745
14925
|
className: "scroll-mt-20 border-b border-border",
|
|
14746
14926
|
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: [
|
|
14927
|
+
/* @__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
14928
|
(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
14929
|
(_g = labels == null ? void 0 : labels.accommodation) != null ? _g : "Accommodation"
|
|
14750
14930
|
] }) }),
|
|
@@ -14753,6 +14933,13 @@ function TripPage({
|
|
|
14753
14933
|
accommodationGallery && accommodationGallery.length > 0 && /* @__PURE__ */ jsx("div", { className: cn(accommodation && "mt-6"), children: /* @__PURE__ */ jsx(
|
|
14754
14934
|
PhotoGallery,
|
|
14755
14935
|
{
|
|
14936
|
+
labels: {
|
|
14937
|
+
seeMore: labels == null ? void 0 : labels.seeMore,
|
|
14938
|
+
showLess: labels == null ? void 0 : labels.showLess,
|
|
14939
|
+
close: labels == null ? void 0 : labels.galleryClose,
|
|
14940
|
+
previous: labels == null ? void 0 : labels.galleryPrevious,
|
|
14941
|
+
next: labels == null ? void 0 : labels.galleryNext
|
|
14942
|
+
},
|
|
14756
14943
|
photos: accommodationGallery,
|
|
14757
14944
|
variant: accommodationGalleryVariant,
|
|
14758
14945
|
initialVisible: 6
|
|
@@ -14769,7 +14956,7 @@ function TripPage({
|
|
|
14769
14956
|
id: "trip-section-food",
|
|
14770
14957
|
className: "scroll-mt-20 border-b border-border",
|
|
14771
14958
|
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: [
|
|
14959
|
+
/* @__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
14960
|
(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
14961
|
(_h = labels == null ? void 0 : labels.food) != null ? _h : "Food"
|
|
14775
14962
|
] }) }),
|
|
@@ -14778,8 +14965,15 @@ function TripPage({
|
|
|
14778
14965
|
foodGallery && foodGallery.length > 0 && /* @__PURE__ */ jsx("div", { className: cn(food && "mt-6"), children: /* @__PURE__ */ jsx(
|
|
14779
14966
|
PhotoGallery,
|
|
14780
14967
|
{
|
|
14968
|
+
labels: {
|
|
14969
|
+
seeMore: labels == null ? void 0 : labels.seeMore,
|
|
14970
|
+
showLess: labels == null ? void 0 : labels.showLess,
|
|
14971
|
+
close: labels == null ? void 0 : labels.galleryClose,
|
|
14972
|
+
previous: labels == null ? void 0 : labels.galleryPrevious,
|
|
14973
|
+
next: labels == null ? void 0 : labels.galleryNext
|
|
14974
|
+
},
|
|
14781
14975
|
photos: foodGallery,
|
|
14782
|
-
variant:
|
|
14976
|
+
variant: foodGalleryVariant,
|
|
14783
14977
|
initialVisible: 6
|
|
14784
14978
|
}
|
|
14785
14979
|
) })
|
|
@@ -14794,18 +14988,21 @@ function TripPage({
|
|
|
14794
14988
|
id: "trip-section-meeting",
|
|
14795
14989
|
className: "scroll-mt-20 border-b border-border",
|
|
14796
14990
|
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: [
|
|
14991
|
+
/* @__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
14992
|
(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
14993
|
(_i = labels == null ? void 0 : labels.meetingPoint) != null ? _i : "Meeting point"
|
|
14800
14994
|
] }) }),
|
|
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
|
-
|
|
14995
|
+
/* @__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) => {
|
|
14996
|
+
var _a2, _b2, _c2;
|
|
14997
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-3 rounded-xl border border-border p-4", children: [
|
|
14998
|
+
/* @__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" }) }),
|
|
14999
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
15000
|
+
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" }),
|
|
15001
|
+
/* @__PURE__ */ jsx("p", { className: "text-sm font-bold text-foreground font-heading", children: mp.name }),
|
|
15002
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground font-ui mt-0.5", children: mp.address })
|
|
15003
|
+
] })
|
|
15004
|
+
] }, i);
|
|
15005
|
+
}) }) })
|
|
14809
15006
|
]
|
|
14810
15007
|
}
|
|
14811
15008
|
),
|
|
@@ -14816,7 +15013,7 @@ function TripPage({
|
|
|
14816
15013
|
id: "trip-section-how-to-get-there",
|
|
14817
15014
|
className: "scroll-mt-20 border-b border-border",
|
|
14818
15015
|
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: [
|
|
15016
|
+
/* @__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
15017
|
(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
15018
|
(_j = labels == null ? void 0 : labels.howToGetThere) != null ? _j : "How to get there"
|
|
14822
15019
|
] }) }),
|
|
@@ -14831,7 +15028,7 @@ function TripPage({
|
|
|
14831
15028
|
id: "trip-section-weather",
|
|
14832
15029
|
className: "scroll-mt-20 border-b border-border",
|
|
14833
15030
|
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: [
|
|
15031
|
+
/* @__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
15032
|
(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
15033
|
(_k = labels == null ? void 0 : labels.weather) != null ? _k : "Weather"
|
|
14837
15034
|
] }) }),
|
|
@@ -14846,7 +15043,7 @@ function TripPage({
|
|
|
14846
15043
|
id: "trip-section-what-to-bring",
|
|
14847
15044
|
className: "scroll-mt-20 border-b border-border",
|
|
14848
15045
|
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: [
|
|
15046
|
+
/* @__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
15047
|
(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
15048
|
(_l = labels == null ? void 0 : labels.whatToBring) != null ? _l : "What to bring"
|
|
14852
15049
|
] }) }),
|
|
@@ -14861,7 +15058,7 @@ function TripPage({
|
|
|
14861
15058
|
id: "trip-section-optional-extras",
|
|
14862
15059
|
className: "scroll-mt-20 border-b border-border",
|
|
14863
15060
|
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: [
|
|
15061
|
+
/* @__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
15062
|
(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
15063
|
(_m = labels == null ? void 0 : labels.optionalExtras) != null ? _m : "Optional extras"
|
|
14867
15064
|
] }) }),
|
|
@@ -14876,7 +15073,7 @@ function TripPage({
|
|
|
14876
15073
|
id: "trip-section-terms",
|
|
14877
15074
|
className: "scroll-mt-20 border-b border-border",
|
|
14878
15075
|
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: [
|
|
15076
|
+
/* @__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
15077
|
(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
15078
|
(_n = labels == null ? void 0 : labels.terms) != null ? _n : "Terms & conditions"
|
|
14882
15079
|
] }) }),
|
|
@@ -14888,7 +15085,7 @@ function TripPage({
|
|
|
14888
15085
|
}
|
|
14889
15086
|
),
|
|
14890
15087
|
faqs && faqs.length > 0 && (() => {
|
|
14891
|
-
var _a2;
|
|
15088
|
+
var _a2, _b2, _c2;
|
|
14892
15089
|
const visibleFaqs = faqsExpanded ? faqs : faqs.slice(0, faqInitialCount);
|
|
14893
15090
|
const hiddenCount = faqs.length - visibleFaqs.length;
|
|
14894
15091
|
return /* @__PURE__ */ jsxs("section", { id: "trip-section-faq", className: "scroll-mt-20", children: [
|
|
@@ -14910,10 +15107,11 @@ function TripPage({
|
|
|
14910
15107
|
),
|
|
14911
15108
|
children: faqsExpanded ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
14912
15109
|
/* @__PURE__ */ jsx(ChevronUpIcon, { className: "h-4 w-4 text-muted-foreground" }),
|
|
14913
|
-
"Show less"
|
|
15110
|
+
(_b2 = labels == null ? void 0 : labels.showLess) != null ? _b2 : "Show less"
|
|
14914
15111
|
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
14915
15112
|
/* @__PURE__ */ jsx(ChevronDownIcon, { className: "h-4 w-4 text-muted-foreground" }),
|
|
14916
|
-
"See more
|
|
15113
|
+
(_c2 = labels == null ? void 0 : labels.seeMore) != null ? _c2 : "See more",
|
|
15114
|
+
" (",
|
|
14917
15115
|
hiddenCount,
|
|
14918
15116
|
")"
|
|
14919
15117
|
] })
|
|
@@ -14954,6 +15152,8 @@ function TripPage({
|
|
|
14954
15152
|
departureTimes,
|
|
14955
15153
|
onBook: (gallery == null ? void 0 : gallery.length) ? scrollToBookingForm : onBook,
|
|
14956
15154
|
bookLabel: bookLabel != null ? bookLabel : "Check availability",
|
|
15155
|
+
fromLabel,
|
|
15156
|
+
perPersonLabel,
|
|
14957
15157
|
variant: "card",
|
|
14958
15158
|
belowPrice: trustpilotMini ? /* @__PURE__ */ jsx(TrustpilotEmbed, { config: trustpilotMini }) : void 0,
|
|
14959
15159
|
benefits,
|
|
@@ -14996,6 +15196,8 @@ function TripPage({
|
|
|
14996
15196
|
departureTimes,
|
|
14997
15197
|
onBook: (gallery == null ? void 0 : gallery.length) ? scrollToBookingForm : onBook,
|
|
14998
15198
|
bookLabel: bookLabel != null ? bookLabel : "Check availability",
|
|
15199
|
+
fromLabel,
|
|
15200
|
+
perPersonLabel,
|
|
14999
15201
|
variant: "card",
|
|
15000
15202
|
belowPrice: trustpilotMini ? /* @__PURE__ */ jsx(TrustpilotEmbed, { config: trustpilotMini }) : void 0,
|
|
15001
15203
|
benefits,
|
|
@@ -15008,12 +15210,27 @@ function TripPage({
|
|
|
15008
15210
|
gallery && gallery.length > 0 && /* @__PURE__ */ jsx("section", { ref: galleryRef, id: "trip-section-gallery", className: "scroll-mt-20", children: /* @__PURE__ */ jsx(
|
|
15009
15211
|
PhotoGallery,
|
|
15010
15212
|
{
|
|
15213
|
+
labels: {
|
|
15214
|
+
seeMore: labels == null ? void 0 : labels.seeMore,
|
|
15215
|
+
showLess: labels == null ? void 0 : labels.showLess,
|
|
15216
|
+
close: labels == null ? void 0 : labels.galleryClose,
|
|
15217
|
+
previous: labels == null ? void 0 : labels.galleryPrevious,
|
|
15218
|
+
next: labels == null ? void 0 : labels.galleryNext
|
|
15219
|
+
},
|
|
15011
15220
|
photos: gallery,
|
|
15012
15221
|
variant: "gridCompact",
|
|
15013
15222
|
initialVisible: 8
|
|
15014
15223
|
}
|
|
15015
15224
|
) }),
|
|
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(
|
|
15225
|
+
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(
|
|
15226
|
+
BookingForm,
|
|
15227
|
+
{
|
|
15228
|
+
labels: bookingLabels,
|
|
15229
|
+
defaultValues: bookingDefaults,
|
|
15230
|
+
onSubmit: onBookingSubmit,
|
|
15231
|
+
loading: bookingLoading
|
|
15232
|
+
}
|
|
15233
|
+
) }) }),
|
|
15017
15234
|
/* @__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
15235
|
PricingTrip,
|
|
15019
15236
|
{
|
|
@@ -15021,6 +15238,8 @@ function TripPage({
|
|
|
15021
15238
|
currency,
|
|
15022
15239
|
onBook: (gallery == null ? void 0 : gallery.length) ? scrollToBookingForm : onBook,
|
|
15023
15240
|
bookLabel: bookLabel != null ? bookLabel : "Book now",
|
|
15241
|
+
fromLabel,
|
|
15242
|
+
perPersonLabel,
|
|
15024
15243
|
variant: "compact",
|
|
15025
15244
|
sharp: true,
|
|
15026
15245
|
priceInfo,
|
|
@@ -15054,6 +15273,7 @@ function CategoryPage2({
|
|
|
15054
15273
|
trustpilotMini,
|
|
15055
15274
|
breadcrumb,
|
|
15056
15275
|
siteHeader,
|
|
15276
|
+
heroRightSlot,
|
|
15057
15277
|
popularTours,
|
|
15058
15278
|
popularToursTitle = "More adventures calling your name",
|
|
15059
15279
|
popularToursEyebrow = "Popular tours",
|
|
@@ -15064,6 +15284,7 @@ function CategoryPage2({
|
|
|
15064
15284
|
sortOptions,
|
|
15065
15285
|
defaultSort,
|
|
15066
15286
|
tripsInitialCount = 15,
|
|
15287
|
+
tripListingSlot,
|
|
15067
15288
|
trustpilot,
|
|
15068
15289
|
reviewsTitle = "Don't just take our word for it",
|
|
15069
15290
|
reviewsSubtitle,
|
|
@@ -15080,6 +15301,12 @@ function CategoryPage2({
|
|
|
15080
15301
|
faqInitialCount = 5,
|
|
15081
15302
|
gallery,
|
|
15082
15303
|
galleryTitle,
|
|
15304
|
+
loadMoreLabel,
|
|
15305
|
+
showLessLabel,
|
|
15306
|
+
seeMoreLabel,
|
|
15307
|
+
viewAllPostsLabel,
|
|
15308
|
+
cardLabels,
|
|
15309
|
+
filterLabels,
|
|
15083
15310
|
className
|
|
15084
15311
|
}) {
|
|
15085
15312
|
var _a;
|
|
@@ -15236,7 +15463,8 @@ function CategoryPage2({
|
|
|
15236
15463
|
/* @__PURE__ */ jsx("h1", { className: "text-3xl sm:text-5xl font-bold text-white font-heading leading-tight max-w-3xl", children: title }),
|
|
15237
15464
|
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
15465
|
trustpilotMini && /* @__PURE__ */ jsx("div", { className: "mt-5 max-w-sm", children: /* @__PURE__ */ jsx(TrustpilotEmbed, { config: trustpilotMini }) })
|
|
15239
|
-
] })
|
|
15466
|
+
] }),
|
|
15467
|
+
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
15468
|
]
|
|
15241
15469
|
}
|
|
15242
15470
|
),
|
|
@@ -15254,6 +15482,7 @@ function CategoryPage2({
|
|
|
15254
15482
|
return /* @__PURE__ */ jsx(
|
|
15255
15483
|
TripCard,
|
|
15256
15484
|
__spreadProps(__spreadValues({}, cardProps), {
|
|
15485
|
+
labels: cardLabels,
|
|
15257
15486
|
variant: "overlay",
|
|
15258
15487
|
size: (_b = cardProps.size) != null ? _b : "md"
|
|
15259
15488
|
}),
|
|
@@ -15263,63 +15492,68 @@ function CategoryPage2({
|
|
|
15263
15492
|
] }),
|
|
15264
15493
|
/* @__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
15494
|
(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
|
-
|
|
15495
|
+
tripListingSlot != null ? tripListingSlot : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
15496
|
+
filterGroups && filterGroups.length > 0 && /* @__PURE__ */ jsx("div", { className: "mb-6", children: /* @__PURE__ */ jsx(
|
|
15497
|
+
FilterPanel,
|
|
15498
|
+
{
|
|
15499
|
+
variant: "horizontal",
|
|
15500
|
+
labels: filterLabels,
|
|
15501
|
+
groups: filterGroups,
|
|
15502
|
+
value: filterValue,
|
|
15503
|
+
onChange: setFilterValue,
|
|
15504
|
+
onClearAll: () => setFilterValue({}),
|
|
15505
|
+
sortOptions,
|
|
15506
|
+
sort,
|
|
15507
|
+
onSortChange: setSort
|
|
15508
|
+
}
|
|
15509
|
+
) }),
|
|
15510
|
+
/* @__PURE__ */ jsxs("p", { className: "text-sm text-muted-foreground font-ui mb-5", children: [
|
|
15511
|
+
sortedTrips.length,
|
|
15512
|
+
" ",
|
|
15513
|
+
sortedTrips.length === 1 ? "trip" : "trips",
|
|
15514
|
+
" found"
|
|
15515
|
+
] }),
|
|
15516
|
+
(() => {
|
|
15517
|
+
const visibleTrips = tripsExpanded ? sortedTrips : sortedTrips.slice(0, tripsInitialCount);
|
|
15518
|
+
const hiddenCount = sortedTrips.length - visibleTrips.length;
|
|
15519
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
15520
|
+
/* @__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) => {
|
|
15521
|
+
const _a2 = trip, { featured: _featured, filterTags: _filterTags, priceValue: _priceValue } = _a2, cardProps = __objRest(_a2, ["featured", "filterTags", "priceValue"]);
|
|
15522
|
+
return /* @__PURE__ */ jsx(
|
|
15523
|
+
TripCard,
|
|
15524
|
+
__spreadProps(__spreadValues({}, cardProps), {
|
|
15525
|
+
labels: cardLabels,
|
|
15526
|
+
className: cn("w-full h-auto", cardProps.className)
|
|
15527
|
+
}),
|
|
15528
|
+
i
|
|
15529
|
+
);
|
|
15530
|
+
}) }),
|
|
15531
|
+
sortedTrips.length > tripsInitialCount && /* @__PURE__ */ jsx("div", { className: "mt-8 flex justify-center", children: /* @__PURE__ */ jsx(
|
|
15532
|
+
"button",
|
|
15533
|
+
{
|
|
15534
|
+
type: "button",
|
|
15535
|
+
onClick: () => setTripsExpanded((v) => !v),
|
|
15536
|
+
className: cn(
|
|
15537
|
+
"inline-flex items-center gap-2 rounded-full border border-border bg-background px-5 py-2.5",
|
|
15538
|
+
"text-sm font-semibold text-foreground shadow-sm",
|
|
15539
|
+
"hover:bg-muted transition-colors duration-150",
|
|
15540
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
|
|
15541
|
+
),
|
|
15542
|
+
children: tripsExpanded ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
15543
|
+
/* @__PURE__ */ jsx(ChevronUpIcon, { className: "h-4 w-4 text-muted-foreground" }),
|
|
15544
|
+
showLessLabel != null ? showLessLabel : "Show less"
|
|
15545
|
+
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
15546
|
+
/* @__PURE__ */ jsx(ChevronDownIcon, { className: "h-4 w-4 text-muted-foreground" }),
|
|
15547
|
+
loadMoreLabel != null ? loadMoreLabel : "Load more",
|
|
15548
|
+
" (",
|
|
15549
|
+
hiddenCount,
|
|
15550
|
+
")"
|
|
15551
|
+
] })
|
|
15552
|
+
}
|
|
15553
|
+
) })
|
|
15554
|
+
] });
|
|
15555
|
+
})()
|
|
15556
|
+
] })
|
|
15323
15557
|
] }),
|
|
15324
15558
|
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
15559
|
/* @__PURE__ */ jsx("h2", { className: "text-2xl sm:text-3xl font-bold text-foreground font-heading mb-2", children: reviewsTitle }),
|
|
@@ -15356,7 +15590,7 @@ function CategoryPage2({
|
|
|
15356
15590
|
href: travelGuideHref != null ? travelGuideHref : blogPostsViewAllHref,
|
|
15357
15591
|
className: "inline-flex items-center gap-1.5 text-sm font-semibold text-primary hover:underline",
|
|
15358
15592
|
children: [
|
|
15359
|
-
travelGuideHref ? travelGuideLabel : "View all posts",
|
|
15593
|
+
travelGuideHref ? travelGuideLabel : viewAllPostsLabel != null ? viewAllPostsLabel : "View all posts",
|
|
15360
15594
|
/* @__PURE__ */ jsx(ArrowRightIcon, { className: "h-4 w-4" })
|
|
15361
15595
|
]
|
|
15362
15596
|
}
|
|
@@ -15385,10 +15619,11 @@ function CategoryPage2({
|
|
|
15385
15619
|
),
|
|
15386
15620
|
children: faqsExpanded ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
15387
15621
|
/* @__PURE__ */ jsx(ChevronUpIcon, { className: "h-4 w-4 text-muted-foreground" }),
|
|
15388
|
-
"Show less"
|
|
15622
|
+
showLessLabel != null ? showLessLabel : "Show less"
|
|
15389
15623
|
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
15390
15624
|
/* @__PURE__ */ jsx(ChevronDownIcon, { className: "h-4 w-4 text-muted-foreground" }),
|
|
15391
|
-
"See more
|
|
15625
|
+
seeMoreLabel != null ? seeMoreLabel : "See more",
|
|
15626
|
+
" (",
|
|
15392
15627
|
hiddenCount,
|
|
15393
15628
|
")"
|
|
15394
15629
|
] })
|
|
@@ -15456,6 +15691,7 @@ function ActivityCard({
|
|
|
15456
15691
|
{
|
|
15457
15692
|
src: image,
|
|
15458
15693
|
alt: imageAlt,
|
|
15694
|
+
title: imageAlt || void 0,
|
|
15459
15695
|
className: "h-full w-full object-cover transition-transform duration-300 group-hover:scale-105"
|
|
15460
15696
|
}
|
|
15461
15697
|
),
|
|
@@ -17157,7 +17393,1402 @@ function StickyBookingCard({
|
|
|
17157
17393
|
}
|
|
17158
17394
|
);
|
|
17159
17395
|
}
|
|
17396
|
+
var DEFAULT_TRUSTPILOT = {
|
|
17397
|
+
businessUnitId: "6171e6a56fc555750dd81ae7",
|
|
17398
|
+
templateId: "5419b732fbfb950b10de65e5",
|
|
17399
|
+
locale: "en-US",
|
|
17400
|
+
styleHeight: "24px",
|
|
17401
|
+
styleWidth: "100%",
|
|
17402
|
+
token: "d3580e48-fedc-4b14-b705-172180cf241d",
|
|
17403
|
+
theme: "dark",
|
|
17404
|
+
fallbackHref: "https://www.trustpilot.com/review/planetaexo.com",
|
|
17405
|
+
fallbackLabel: "Excellent"
|
|
17406
|
+
};
|
|
17407
|
+
function RatingStars({ stars = 5 }) {
|
|
17408
|
+
return /* @__PURE__ */ jsx("div", { className: "flex items-center gap-0.5", "aria-hidden": true, children: Array.from({ length: 5 }).map((_, i) => {
|
|
17409
|
+
const filled = i + 1 <= Math.round(stars);
|
|
17410
|
+
return /* @__PURE__ */ jsx(
|
|
17411
|
+
"span",
|
|
17412
|
+
{
|
|
17413
|
+
className: cn(
|
|
17414
|
+
"flex h-5 w-5 items-center justify-center rounded-[3px]",
|
|
17415
|
+
filled ? "bg-primary" : "bg-white/30"
|
|
17416
|
+
),
|
|
17417
|
+
children: /* @__PURE__ */ jsx(StarIcon, { className: "h-3 w-3 fill-white text-white" })
|
|
17418
|
+
},
|
|
17419
|
+
i
|
|
17420
|
+
);
|
|
17421
|
+
}) });
|
|
17422
|
+
}
|
|
17423
|
+
function Rating({ label, stars = 5, provider, href }) {
|
|
17424
|
+
const content = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
17425
|
+
label && /* @__PURE__ */ jsx("span", { className: "text-sm font-ui font-bold text-white", children: label }),
|
|
17426
|
+
/* @__PURE__ */ jsx(RatingStars, { stars }),
|
|
17427
|
+
provider && /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1 text-sm font-ui font-bold text-white", children: [
|
|
17428
|
+
/* @__PURE__ */ jsx(StarIcon, { className: "h-4 w-4 fill-primary text-primary" }),
|
|
17429
|
+
provider
|
|
17430
|
+
] })
|
|
17431
|
+
] });
|
|
17432
|
+
if (href) {
|
|
17433
|
+
return /* @__PURE__ */ jsx(
|
|
17434
|
+
"a",
|
|
17435
|
+
{
|
|
17436
|
+
href,
|
|
17437
|
+
target: "_blank",
|
|
17438
|
+
rel: "noreferrer noopener",
|
|
17439
|
+
"aria-label": `${label != null ? label : ""} ${stars} out of 5 \u2014 ${provider != null ? provider : "reviews"}`.trim(),
|
|
17440
|
+
className: "inline-flex items-center gap-2.5 transition-opacity hover:opacity-90",
|
|
17441
|
+
children: content
|
|
17442
|
+
}
|
|
17443
|
+
);
|
|
17444
|
+
}
|
|
17445
|
+
return /* @__PURE__ */ jsx("div", { className: "inline-flex items-center gap-2.5", children: content });
|
|
17446
|
+
}
|
|
17447
|
+
function HomeHeader({
|
|
17448
|
+
images,
|
|
17449
|
+
videoUrl,
|
|
17450
|
+
eyebrow,
|
|
17451
|
+
title,
|
|
17452
|
+
subtitle,
|
|
17453
|
+
cta,
|
|
17454
|
+
trustpilot,
|
|
17455
|
+
rating,
|
|
17456
|
+
pressLogos,
|
|
17457
|
+
pressLabel = "In the press",
|
|
17458
|
+
pressLabelHref,
|
|
17459
|
+
siteHeader,
|
|
17460
|
+
align = "center",
|
|
17461
|
+
className
|
|
17462
|
+
}) {
|
|
17463
|
+
var _a;
|
|
17464
|
+
const [heroIndex, setHeroIndex] = React32.useState(0);
|
|
17465
|
+
const [videoReady, setVideoReady] = React32.useState(false);
|
|
17466
|
+
const videoRef = React32.useRef(null);
|
|
17467
|
+
const isHls = !!(videoUrl == null ? void 0 : videoUrl.includes(".m3u8"));
|
|
17468
|
+
const validImages = React32.useMemo(
|
|
17469
|
+
() => images.map((u) => u == null ? void 0 : u.trim()).filter(Boolean),
|
|
17470
|
+
[images]
|
|
17471
|
+
);
|
|
17472
|
+
const hasHeroImage = validImages.length > 0;
|
|
17473
|
+
const heroSrc = (i) => {
|
|
17474
|
+
var _a2;
|
|
17475
|
+
return (_a2 = validImages[i]) != null ? _a2 : "";
|
|
17476
|
+
};
|
|
17477
|
+
const safeIndex = Math.min(heroIndex, Math.max(0, validImages.length - 1));
|
|
17478
|
+
const currentSrc = heroSrc(safeIndex);
|
|
17479
|
+
const showCarousel = !videoUrl && validImages.length > 1;
|
|
17480
|
+
const tpConfig = trustpilot ? typeof trustpilot === "object" ? __spreadValues(__spreadValues({}, DEFAULT_TRUSTPILOT), trustpilot) : DEFAULT_TRUSTPILOT : null;
|
|
17481
|
+
useHlsVideo(videoRef, isHls ? videoUrl : void 0);
|
|
17482
|
+
React32.useEffect(() => {
|
|
17483
|
+
if (!videoUrl) return;
|
|
17484
|
+
const el = videoRef.current;
|
|
17485
|
+
if (!el) return;
|
|
17486
|
+
const observer = new IntersectionObserver(
|
|
17487
|
+
([entry]) => {
|
|
17488
|
+
if (entry.isIntersecting) {
|
|
17489
|
+
el.play().catch(() => {
|
|
17490
|
+
});
|
|
17491
|
+
} else {
|
|
17492
|
+
el.pause();
|
|
17493
|
+
}
|
|
17494
|
+
},
|
|
17495
|
+
{ threshold: 0.1 }
|
|
17496
|
+
);
|
|
17497
|
+
observer.observe(el);
|
|
17498
|
+
return () => observer.disconnect();
|
|
17499
|
+
}, [videoUrl]);
|
|
17500
|
+
const isCenter = align === "center";
|
|
17501
|
+
return /* @__PURE__ */ jsxs(
|
|
17502
|
+
"section",
|
|
17503
|
+
{
|
|
17504
|
+
className: cn(
|
|
17505
|
+
"relative w-full overflow-hidden",
|
|
17506
|
+
"h-screen min-h-[640px]",
|
|
17507
|
+
hasHeroImage ? "bg-muted" : "bg-zinc-900",
|
|
17508
|
+
className
|
|
17509
|
+
),
|
|
17510
|
+
"data-home-header-align": align,
|
|
17511
|
+
children: [
|
|
17512
|
+
!videoUrl && !hasHeroImage && /* @__PURE__ */ jsx(
|
|
17513
|
+
"div",
|
|
17514
|
+
{
|
|
17515
|
+
className: "absolute inset-0 bg-gradient-to-br from-zinc-900 via-zinc-800 to-zinc-950",
|
|
17516
|
+
"aria-hidden": true
|
|
17517
|
+
}
|
|
17518
|
+
),
|
|
17519
|
+
videoUrl ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
17520
|
+
hasHeroImage ? /* @__PURE__ */ jsx(
|
|
17521
|
+
Picture,
|
|
17522
|
+
{
|
|
17523
|
+
src: validImages[0],
|
|
17524
|
+
alt: "",
|
|
17525
|
+
"aria-hidden": true,
|
|
17526
|
+
fetchPriority: "high",
|
|
17527
|
+
eager: true,
|
|
17528
|
+
className: cn(
|
|
17529
|
+
"absolute inset-0 h-full w-full object-cover transition-opacity duration-700",
|
|
17530
|
+
videoReady ? "opacity-0 pointer-events-none" : "opacity-100"
|
|
17531
|
+
)
|
|
17532
|
+
}
|
|
17533
|
+
) : /* @__PURE__ */ jsx(
|
|
17534
|
+
"div",
|
|
17535
|
+
{
|
|
17536
|
+
className: "absolute inset-0 bg-gradient-to-br from-zinc-900 via-zinc-800 to-zinc-950 transition-opacity duration-700",
|
|
17537
|
+
"aria-hidden": true
|
|
17538
|
+
}
|
|
17539
|
+
),
|
|
17540
|
+
/* @__PURE__ */ jsx(
|
|
17541
|
+
"video",
|
|
17542
|
+
{
|
|
17543
|
+
ref: videoRef,
|
|
17544
|
+
src: isHls ? void 0 : videoUrl,
|
|
17545
|
+
autoPlay: true,
|
|
17546
|
+
muted: true,
|
|
17547
|
+
loop: true,
|
|
17548
|
+
playsInline: true,
|
|
17549
|
+
preload: "auto",
|
|
17550
|
+
poster: hasHeroImage ? validImages[0] : void 0,
|
|
17551
|
+
onCanPlay: () => setVideoReady(true),
|
|
17552
|
+
className: cn(
|
|
17553
|
+
"absolute inset-0 h-full w-full object-cover transition-opacity duration-700",
|
|
17554
|
+
videoReady ? "opacity-100" : "opacity-0"
|
|
17555
|
+
)
|
|
17556
|
+
}
|
|
17557
|
+
)
|
|
17558
|
+
] }) : hasHeroImage ? /* @__PURE__ */ jsx(
|
|
17559
|
+
Picture,
|
|
17560
|
+
{
|
|
17561
|
+
src: currentSrc,
|
|
17562
|
+
alt: title,
|
|
17563
|
+
fetchPriority: safeIndex === 0 ? "high" : "auto",
|
|
17564
|
+
eager: safeIndex === 0,
|
|
17565
|
+
className: "absolute inset-0 h-full w-full object-cover transition-opacity duration-700"
|
|
17566
|
+
}
|
|
17567
|
+
) : null,
|
|
17568
|
+
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-black/30", "aria-hidden": true }),
|
|
17569
|
+
/* @__PURE__ */ jsx(
|
|
17570
|
+
"div",
|
|
17571
|
+
{
|
|
17572
|
+
className: "absolute inset-0 bg-gradient-to-t from-black/70 via-black/10 to-black/30",
|
|
17573
|
+
"aria-hidden": true
|
|
17574
|
+
}
|
|
17575
|
+
),
|
|
17576
|
+
siteHeader && /* @__PURE__ */ jsx(
|
|
17577
|
+
SiteHeader,
|
|
17578
|
+
__spreadProps(__spreadValues({}, Array.isArray(siteHeader) ? { links: siteHeader } : typeof siteHeader === "object" ? siteHeader : {}), {
|
|
17579
|
+
position: "overlay"
|
|
17580
|
+
})
|
|
17581
|
+
),
|
|
17582
|
+
showCarousel && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
17583
|
+
/* @__PURE__ */ jsx(
|
|
17584
|
+
"button",
|
|
17585
|
+
{
|
|
17586
|
+
type: "button",
|
|
17587
|
+
onClick: () => setHeroIndex(
|
|
17588
|
+
(i) => (i - 1 + validImages.length) % validImages.length
|
|
17589
|
+
),
|
|
17590
|
+
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",
|
|
17591
|
+
"aria-label": "Previous image",
|
|
17592
|
+
children: /* @__PURE__ */ jsx(ChevronLeftIcon, { className: "h-5 w-5" })
|
|
17593
|
+
}
|
|
17594
|
+
),
|
|
17595
|
+
/* @__PURE__ */ jsx(
|
|
17596
|
+
"button",
|
|
17597
|
+
{
|
|
17598
|
+
type: "button",
|
|
17599
|
+
onClick: () => setHeroIndex((i) => (i + 1) % validImages.length),
|
|
17600
|
+
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",
|
|
17601
|
+
"aria-label": "Next image",
|
|
17602
|
+
children: /* @__PURE__ */ jsx(ChevronRightIcon, { className: "h-5 w-5" })
|
|
17603
|
+
}
|
|
17604
|
+
)
|
|
17605
|
+
] }),
|
|
17606
|
+
/* @__PURE__ */ jsxs(
|
|
17607
|
+
"div",
|
|
17608
|
+
{
|
|
17609
|
+
className: cn(
|
|
17610
|
+
"absolute inset-0 z-10 flex flex-col justify-center",
|
|
17611
|
+
"mx-auto w-full max-w-6xl px-6 sm:px-8",
|
|
17612
|
+
"pt-[72px]",
|
|
17613
|
+
// clear the overlay header
|
|
17614
|
+
pressLogos && pressLogos.length > 0 ? "pb-28" : "pb-16",
|
|
17615
|
+
isCenter ? "items-center text-center" : "items-start text-left"
|
|
17616
|
+
),
|
|
17617
|
+
children: [
|
|
17618
|
+
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 }),
|
|
17619
|
+
/* @__PURE__ */ jsx(
|
|
17620
|
+
"h1",
|
|
17621
|
+
{
|
|
17622
|
+
className: cn(
|
|
17623
|
+
"font-heading font-black uppercase text-white leading-[0.95]",
|
|
17624
|
+
"text-5xl sm:text-6xl lg:text-7xl",
|
|
17625
|
+
isCenter ? "max-w-4xl" : "max-w-3xl"
|
|
17626
|
+
),
|
|
17627
|
+
children: title
|
|
17628
|
+
}
|
|
17629
|
+
),
|
|
17630
|
+
subtitle && /* @__PURE__ */ jsx(
|
|
17631
|
+
"p",
|
|
17632
|
+
{
|
|
17633
|
+
className: cn(
|
|
17634
|
+
"mt-5 text-lg sm:text-xl font-sans text-white/90",
|
|
17635
|
+
isCenter ? "max-w-2xl" : "max-w-xl"
|
|
17636
|
+
),
|
|
17637
|
+
children: subtitle
|
|
17638
|
+
}
|
|
17639
|
+
),
|
|
17640
|
+
cta && /* @__PURE__ */ jsx("div", { className: "mt-8", children: cta.href ? /* @__PURE__ */ jsx(
|
|
17641
|
+
"a",
|
|
17642
|
+
{
|
|
17643
|
+
href: cta.href,
|
|
17644
|
+
onClick: cta.onClick,
|
|
17645
|
+
className: buttonVariants({ size: "lg" }),
|
|
17646
|
+
children: cta.label
|
|
17647
|
+
}
|
|
17648
|
+
) : /* @__PURE__ */ jsx(Button, { size: "lg", onClick: cta.onClick, children: cta.label }) }),
|
|
17649
|
+
tpConfig ? /* @__PURE__ */ jsxs(
|
|
17650
|
+
"div",
|
|
17651
|
+
{
|
|
17652
|
+
className: cn(
|
|
17653
|
+
"home-trustpilot relative mt-8",
|
|
17654
|
+
// Wide enough for the Micro Star to show the full "Excellent
|
|
17655
|
+
// ★★★★★ Trustpilot" lockup — at 260px the Trustpilot wordmark
|
|
17656
|
+
// was clipped.
|
|
17657
|
+
isCenter && "w-full max-w-[340px]"
|
|
17658
|
+
),
|
|
17659
|
+
children: [
|
|
17660
|
+
/* @__PURE__ */ jsx(TrustpilotEmbed, { config: tpConfig }),
|
|
17661
|
+
/* @__PURE__ */ jsx(
|
|
17662
|
+
"a",
|
|
17663
|
+
{
|
|
17664
|
+
href: (_a = tpConfig.fallbackHref) != null ? _a : "https://www.trustpilot.com/review/planetaexo.com",
|
|
17665
|
+
target: "_blank",
|
|
17666
|
+
rel: "noopener noreferrer",
|
|
17667
|
+
"aria-label": "Read our reviews on Trustpilot",
|
|
17668
|
+
className: "absolute inset-0 z-10"
|
|
17669
|
+
}
|
|
17670
|
+
)
|
|
17671
|
+
]
|
|
17672
|
+
}
|
|
17673
|
+
) : rating ? /* @__PURE__ */ jsx("div", { className: "mt-8", children: /* @__PURE__ */ jsx(Rating, __spreadValues({}, rating)) }) : null
|
|
17674
|
+
]
|
|
17675
|
+
}
|
|
17676
|
+
),
|
|
17677
|
+
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: [
|
|
17678
|
+
pressLabelHref ? /* @__PURE__ */ jsx(
|
|
17679
|
+
"a",
|
|
17680
|
+
{
|
|
17681
|
+
href: pressLabelHref,
|
|
17682
|
+
target: "_blank",
|
|
17683
|
+
rel: "noopener noreferrer",
|
|
17684
|
+
className: "text-[10px] font-ui font-bold uppercase tracking-[0.25em] leading-tight text-white/70 transition-colors hover:text-white",
|
|
17685
|
+
children: pressLabel
|
|
17686
|
+
}
|
|
17687
|
+
) : /* @__PURE__ */ jsx("span", { className: "text-[10px] font-ui font-bold uppercase tracking-[0.25em] leading-tight text-white/70", children: pressLabel }),
|
|
17688
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-nowrap items-center justify-center gap-x-7", children: [
|
|
17689
|
+
/* @__PURE__ */ jsx("span", { className: "hidden h-5 w-px bg-white/25 sm:block", "aria-hidden": true }),
|
|
17690
|
+
pressLogos.map((logo, i) => {
|
|
17691
|
+
var _a2, _b, _c, _d;
|
|
17692
|
+
const content = logo.src ? (
|
|
17693
|
+
// eslint-disable-next-line @next/next/no-img-element
|
|
17694
|
+
/* @__PURE__ */ jsx(
|
|
17695
|
+
"img",
|
|
17696
|
+
{
|
|
17697
|
+
src: logo.src,
|
|
17698
|
+
alt: (_b = (_a2 = logo.alt) != null ? _a2 : logo.label) != null ? _b : "Press logo",
|
|
17699
|
+
className: "h-12 w-12 shrink-0 select-none object-contain",
|
|
17700
|
+
draggable: false
|
|
17701
|
+
}
|
|
17702
|
+
)
|
|
17703
|
+
) : /* @__PURE__ */ jsx("span", { className: "font-heading text-base font-bold uppercase tracking-wide", children: logo.label });
|
|
17704
|
+
return logo.href ? /* @__PURE__ */ jsx(
|
|
17705
|
+
"a",
|
|
17706
|
+
{
|
|
17707
|
+
href: logo.href,
|
|
17708
|
+
target: "_blank",
|
|
17709
|
+
rel: "noopener noreferrer",
|
|
17710
|
+
"aria-label": (_d = (_c = logo.alt) != null ? _c : logo.label) != null ? _d : "Press article",
|
|
17711
|
+
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",
|
|
17712
|
+
children: content
|
|
17713
|
+
},
|
|
17714
|
+
i
|
|
17715
|
+
) : /* @__PURE__ */ jsx(
|
|
17716
|
+
"span",
|
|
17717
|
+
{
|
|
17718
|
+
className: "shrink-0 text-white/80 [&>img]:opacity-80",
|
|
17719
|
+
children: content
|
|
17720
|
+
},
|
|
17721
|
+
i
|
|
17722
|
+
);
|
|
17723
|
+
})
|
|
17724
|
+
] })
|
|
17725
|
+
] }) })
|
|
17726
|
+
]
|
|
17727
|
+
}
|
|
17728
|
+
);
|
|
17729
|
+
}
|
|
17730
|
+
var ACCENT_PILL = "bg-primary text-primary-foreground";
|
|
17731
|
+
var ACCENT_BUTTON = "bg-primary text-primary-foreground hover:bg-primary/90";
|
|
17732
|
+
var THEME = {
|
|
17733
|
+
dark: {
|
|
17734
|
+
section: "bg-neutral-950",
|
|
17735
|
+
heading: "text-white",
|
|
17736
|
+
body: "text-white/60",
|
|
17737
|
+
tabTrack: "bg-white/5 border-white/10",
|
|
17738
|
+
tabActive: ACCENT_PILL,
|
|
17739
|
+
tabIdle: "text-white/60 hover:text-white",
|
|
17740
|
+
cardRing: "focus-visible:ring-white/70 focus-visible:ring-offset-neutral-950",
|
|
17741
|
+
divider: "border-white/15"
|
|
17742
|
+
},
|
|
17743
|
+
light: {
|
|
17744
|
+
/* Explicit light colours (not mode-aware tokens) so this variant stays a
|
|
17745
|
+
light surface even when the app is in dark mode. */
|
|
17746
|
+
section: "bg-white",
|
|
17747
|
+
heading: "text-neutral-900",
|
|
17748
|
+
body: "text-neutral-500",
|
|
17749
|
+
tabTrack: "bg-neutral-100 border-black/10",
|
|
17750
|
+
tabActive: ACCENT_PILL,
|
|
17751
|
+
tabIdle: "text-neutral-500 hover:text-neutral-900",
|
|
17752
|
+
cardRing: "focus-visible:ring-neutral-900/40 focus-visible:ring-offset-white",
|
|
17753
|
+
divider: "border-black/10"
|
|
17754
|
+
}
|
|
17755
|
+
};
|
|
17756
|
+
var BENTO_SPAN = {
|
|
17757
|
+
featured: "col-span-2 row-span-2",
|
|
17758
|
+
tall: "col-span-2 sm:col-span-1 row-span-2",
|
|
17759
|
+
wide: "col-span-2",
|
|
17760
|
+
normal: "col-span-2 sm:col-span-1"
|
|
17761
|
+
};
|
|
17762
|
+
function BentoTile({
|
|
17763
|
+
card,
|
|
17764
|
+
ring
|
|
17765
|
+
}) {
|
|
17766
|
+
var _a, _b, _c;
|
|
17767
|
+
const isFeatured = card.size === "featured";
|
|
17768
|
+
const inner = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
17769
|
+
card.image ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
17770
|
+
/* @__PURE__ */ jsx(
|
|
17771
|
+
Picture,
|
|
17772
|
+
{
|
|
17773
|
+
src: card.image,
|
|
17774
|
+
alt: (_a = card.imageAlt) != null ? _a : card.label,
|
|
17775
|
+
loading: "lazy",
|
|
17776
|
+
className: "absolute inset-0 h-full w-full object-cover transition-transform duration-700 group-hover:scale-105"
|
|
17777
|
+
}
|
|
17778
|
+
),
|
|
17779
|
+
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-gradient-to-t from-black/85 via-black/15 to-transparent" })
|
|
17780
|
+
] }) : /* @__PURE__ */ jsx(
|
|
17781
|
+
"div",
|
|
17782
|
+
{
|
|
17783
|
+
className: cn(
|
|
17784
|
+
"absolute inset-0 bg-gradient-to-br",
|
|
17785
|
+
(_b = card.gradient) != null ? _b : "from-primary-800 to-primary-900"
|
|
17786
|
+
)
|
|
17787
|
+
}
|
|
17788
|
+
),
|
|
17789
|
+
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 }),
|
|
17790
|
+
/* @__PURE__ */ jsxs("div", { className: "absolute inset-x-0 bottom-0 z-10 p-5", children: [
|
|
17791
|
+
/* @__PURE__ */ jsx(
|
|
17792
|
+
"h3",
|
|
17793
|
+
{
|
|
17794
|
+
className: cn(
|
|
17795
|
+
"font-heading font-bold uppercase leading-tight tracking-wide text-white",
|
|
17796
|
+
isFeatured ? "text-2xl sm:text-3xl" : "text-lg sm:text-xl"
|
|
17797
|
+
),
|
|
17798
|
+
children: card.label
|
|
17799
|
+
}
|
|
17800
|
+
),
|
|
17801
|
+
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 }),
|
|
17802
|
+
card.ctaLabel && /* @__PURE__ */ jsxs("span", { className: "mt-2 inline-flex items-center gap-1 text-sm font-ui font-bold text-primary-400", children: [
|
|
17803
|
+
card.ctaLabel,
|
|
17804
|
+
/* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "transition-transform group-hover:translate-x-1", children: "\u2192" })
|
|
17805
|
+
] })
|
|
17806
|
+
] })
|
|
17807
|
+
] });
|
|
17808
|
+
const tileClass = cn(
|
|
17809
|
+
"group relative overflow-hidden rounded-2xl bg-muted shadow-sm",
|
|
17810
|
+
BENTO_SPAN[(_c = card.size) != null ? _c : "normal"]
|
|
17811
|
+
);
|
|
17812
|
+
return card.href ? /* @__PURE__ */ jsx(
|
|
17813
|
+
"a",
|
|
17814
|
+
{
|
|
17815
|
+
href: card.href,
|
|
17816
|
+
className: cn(
|
|
17817
|
+
tileClass,
|
|
17818
|
+
"block focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2",
|
|
17819
|
+
ring
|
|
17820
|
+
),
|
|
17821
|
+
children: inner
|
|
17822
|
+
}
|
|
17823
|
+
) : /* @__PURE__ */ jsx("div", { className: tileClass, children: inner });
|
|
17824
|
+
}
|
|
17825
|
+
function AdventureExplorer({
|
|
17826
|
+
tabs,
|
|
17827
|
+
eyebrow,
|
|
17828
|
+
heading,
|
|
17829
|
+
subheading,
|
|
17830
|
+
defaultTabId,
|
|
17831
|
+
viewAllLabel = "View All Adventures",
|
|
17832
|
+
viewAllHref,
|
|
17833
|
+
theme = "dark",
|
|
17834
|
+
layout = "carousel",
|
|
17835
|
+
bentoLimit,
|
|
17836
|
+
moreLabel = "More wild places",
|
|
17837
|
+
className
|
|
17838
|
+
}) {
|
|
17839
|
+
var _a, _b, _c, _d, _e;
|
|
17840
|
+
const [activeId, setActiveId] = React32.useState(
|
|
17841
|
+
defaultTabId != null ? defaultTabId : (_a = tabs[0]) == null ? void 0 : _a.id
|
|
17842
|
+
);
|
|
17843
|
+
const active = (_b = tabs.find((t2) => t2.id === activeId)) != null ? _b : tabs[0];
|
|
17844
|
+
const t = THEME[theme];
|
|
17845
|
+
const ctaHref = (_d = (_c = active == null ? void 0 : active.viewAllHref) != null ? _c : viewAllHref) != null ? _d : "#";
|
|
17846
|
+
const showCta = viewAllLabel.length > 0;
|
|
17847
|
+
const hasHeading = !!(eyebrow || heading || subheading);
|
|
17848
|
+
const cards = (_e = active == null ? void 0 : active.cards) != null ? _e : [];
|
|
17849
|
+
const limited = layout === "bento" && bentoLimit != null && cards.length > bentoLimit;
|
|
17850
|
+
const gridCards = limited ? cards.slice(0, bentoLimit) : cards;
|
|
17851
|
+
const moreCards = limited ? cards.slice(bentoLimit) : [];
|
|
17852
|
+
const showHeadCta = showCta && !limited;
|
|
17853
|
+
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: [
|
|
17854
|
+
hasHeading && /* @__PURE__ */ jsxs("div", { className: "mb-8 flex flex-wrap items-end justify-between gap-6", children: [
|
|
17855
|
+
/* @__PURE__ */ jsxs("div", { className: "max-w-2xl", children: [
|
|
17856
|
+
eyebrow && /* @__PURE__ */ jsx("p", { className: "mb-3 text-xs font-ui font-bold uppercase tracking-[0.22em] text-primary", children: eyebrow }),
|
|
17857
|
+
heading && /* @__PURE__ */ jsx(
|
|
17858
|
+
"h2",
|
|
17859
|
+
{
|
|
17860
|
+
className: cn(
|
|
17861
|
+
"font-heading text-3xl font-black uppercase leading-[1.05] sm:text-4xl lg:text-5xl",
|
|
17862
|
+
t.heading
|
|
17863
|
+
),
|
|
17864
|
+
children: heading
|
|
17865
|
+
}
|
|
17866
|
+
),
|
|
17867
|
+
subheading && /* @__PURE__ */ jsx("p", { className: cn("mt-3 text-base", t.body), children: subheading })
|
|
17868
|
+
] }),
|
|
17869
|
+
showHeadCta && /* @__PURE__ */ jsxs(
|
|
17870
|
+
"a",
|
|
17871
|
+
{
|
|
17872
|
+
href: ctaHref,
|
|
17873
|
+
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",
|
|
17874
|
+
children: [
|
|
17875
|
+
viewAllLabel,
|
|
17876
|
+
/* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "transition-transform group-hover:translate-x-1", children: "\u2192" })
|
|
17877
|
+
]
|
|
17878
|
+
}
|
|
17879
|
+
)
|
|
17880
|
+
] }),
|
|
17881
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-between gap-4", children: [
|
|
17882
|
+
/* @__PURE__ */ jsx(
|
|
17883
|
+
"div",
|
|
17884
|
+
{
|
|
17885
|
+
role: "tablist",
|
|
17886
|
+
"aria-label": "Explore categories",
|
|
17887
|
+
className: cn(
|
|
17888
|
+
"inline-flex max-w-full items-center gap-1 overflow-x-auto rounded-full border p-1.5 scrollbar-none",
|
|
17889
|
+
t.tabTrack
|
|
17890
|
+
),
|
|
17891
|
+
children: tabs.map((tab) => {
|
|
17892
|
+
const isActive = tab.id === (active == null ? void 0 : active.id);
|
|
17893
|
+
return /* @__PURE__ */ jsx(
|
|
17894
|
+
"button",
|
|
17895
|
+
{
|
|
17896
|
+
type: "button",
|
|
17897
|
+
role: "tab",
|
|
17898
|
+
"aria-selected": isActive,
|
|
17899
|
+
onClick: () => setActiveId(tab.id),
|
|
17900
|
+
className: cn(
|
|
17901
|
+
"shrink-0 rounded-full px-5 py-2 text-sm font-ui font-bold transition-colors",
|
|
17902
|
+
isActive ? t.tabActive : t.tabIdle
|
|
17903
|
+
),
|
|
17904
|
+
children: tab.label
|
|
17905
|
+
},
|
|
17906
|
+
tab.id
|
|
17907
|
+
);
|
|
17908
|
+
})
|
|
17909
|
+
}
|
|
17910
|
+
),
|
|
17911
|
+
showCta && !hasHeading && /* @__PURE__ */ jsx(
|
|
17912
|
+
"a",
|
|
17913
|
+
{
|
|
17914
|
+
href: ctaHref,
|
|
17915
|
+
className: cn(
|
|
17916
|
+
"hidden shrink-0 items-center rounded-full px-6 py-2.5 text-sm font-heading font-bold transition-colors sm:inline-flex",
|
|
17917
|
+
ACCENT_BUTTON
|
|
17918
|
+
),
|
|
17919
|
+
children: viewAllLabel
|
|
17920
|
+
}
|
|
17921
|
+
)
|
|
17922
|
+
] }),
|
|
17923
|
+
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)) }),
|
|
17924
|
+
limited && /* @__PURE__ */ jsxs(
|
|
17925
|
+
"div",
|
|
17926
|
+
{
|
|
17927
|
+
className: cn(
|
|
17928
|
+
"mt-7 flex flex-wrap items-center justify-between gap-x-8 gap-y-3 border-t pt-6",
|
|
17929
|
+
t.divider
|
|
17930
|
+
),
|
|
17931
|
+
children: [
|
|
17932
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-x-6 gap-y-2", children: [
|
|
17933
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs font-ui font-bold uppercase tracking-[0.18em] text-primary", children: moreLabel }),
|
|
17934
|
+
moreCards.map((card, i) => {
|
|
17935
|
+
var _a2;
|
|
17936
|
+
return /* @__PURE__ */ jsxs(
|
|
17937
|
+
"a",
|
|
17938
|
+
{
|
|
17939
|
+
href: (_a2 = card.href) != null ? _a2 : "#",
|
|
17940
|
+
className: "group inline-flex items-baseline gap-2",
|
|
17941
|
+
children: [
|
|
17942
|
+
/* @__PURE__ */ jsx(
|
|
17943
|
+
"span",
|
|
17944
|
+
{
|
|
17945
|
+
className: cn(
|
|
17946
|
+
"font-heading text-base font-bold transition-colors group-hover:text-primary",
|
|
17947
|
+
t.heading
|
|
17948
|
+
),
|
|
17949
|
+
children: card.label
|
|
17950
|
+
}
|
|
17951
|
+
),
|
|
17952
|
+
card.tripCount && /* @__PURE__ */ jsx("span", { className: cn("text-sm", t.body), children: card.tripCount })
|
|
17953
|
+
]
|
|
17954
|
+
},
|
|
17955
|
+
i
|
|
17956
|
+
);
|
|
17957
|
+
})
|
|
17958
|
+
] }),
|
|
17959
|
+
showCta && /* @__PURE__ */ jsxs(
|
|
17960
|
+
"a",
|
|
17961
|
+
{
|
|
17962
|
+
href: ctaHref,
|
|
17963
|
+
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",
|
|
17964
|
+
children: [
|
|
17965
|
+
viewAllLabel,
|
|
17966
|
+
/* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "transition-transform group-hover:translate-x-1", children: "\u2192" })
|
|
17967
|
+
]
|
|
17968
|
+
}
|
|
17969
|
+
)
|
|
17970
|
+
]
|
|
17971
|
+
}
|
|
17972
|
+
),
|
|
17973
|
+
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) => {
|
|
17974
|
+
var _a2, _b2;
|
|
17975
|
+
const inner = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
17976
|
+
/* @__PURE__ */ jsx(
|
|
17977
|
+
Picture,
|
|
17978
|
+
{
|
|
17979
|
+
src: (_a2 = card.image) != null ? _a2 : "",
|
|
17980
|
+
alt: (_b2 = card.imageAlt) != null ? _b2 : card.label,
|
|
17981
|
+
loading: "lazy",
|
|
17982
|
+
className: "absolute inset-0 h-full w-full object-cover transition-transform duration-500 group-hover:scale-105"
|
|
17983
|
+
}
|
|
17984
|
+
),
|
|
17985
|
+
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-gradient-to-t from-black/80 via-black/15 to-transparent" }),
|
|
17986
|
+
/* @__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 })
|
|
17987
|
+
] });
|
|
17988
|
+
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";
|
|
17989
|
+
return card.href ? /* @__PURE__ */ jsx(
|
|
17990
|
+
"a",
|
|
17991
|
+
{
|
|
17992
|
+
href: card.href,
|
|
17993
|
+
className: cn(
|
|
17994
|
+
cardClass,
|
|
17995
|
+
"block focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2",
|
|
17996
|
+
t.cardRing
|
|
17997
|
+
),
|
|
17998
|
+
children: inner
|
|
17999
|
+
},
|
|
18000
|
+
i
|
|
18001
|
+
) : /* @__PURE__ */ jsx("div", { className: cardClass, children: inner }, i);
|
|
18002
|
+
}) }),
|
|
18003
|
+
showCta && /* @__PURE__ */ jsx("div", { className: "mt-6 sm:hidden", children: /* @__PURE__ */ jsx(
|
|
18004
|
+
"a",
|
|
18005
|
+
{
|
|
18006
|
+
href: ctaHref,
|
|
18007
|
+
className: cn(
|
|
18008
|
+
"inline-flex w-full items-center justify-center rounded-full px-6 py-3 text-sm font-heading font-bold transition-colors",
|
|
18009
|
+
ACCENT_BUTTON
|
|
18010
|
+
),
|
|
18011
|
+
children: viewAllLabel
|
|
18012
|
+
}
|
|
18013
|
+
) })
|
|
18014
|
+
] }) });
|
|
18015
|
+
}
|
|
18016
|
+
var THEME2 = {
|
|
18017
|
+
light: {
|
|
18018
|
+
section: "bg-neutral-100",
|
|
18019
|
+
heading: "text-neutral-900",
|
|
18020
|
+
title: "text-neutral-800",
|
|
18021
|
+
body: "text-neutral-500",
|
|
18022
|
+
icon: "text-primary",
|
|
18023
|
+
card: "bg-white border-black/10 shadow-sm",
|
|
18024
|
+
chip: "bg-primary/10 text-primary",
|
|
18025
|
+
number: "text-primary"
|
|
18026
|
+
},
|
|
18027
|
+
dark: {
|
|
18028
|
+
section: "bg-neutral-950",
|
|
18029
|
+
heading: "text-white",
|
|
18030
|
+
title: "text-white",
|
|
18031
|
+
body: "text-white/60",
|
|
18032
|
+
icon: "text-primary-400",
|
|
18033
|
+
card: "bg-white/5 border-white/10",
|
|
18034
|
+
chip: "bg-primary-400/15 text-primary-400",
|
|
18035
|
+
number: "text-primary-400"
|
|
18036
|
+
}
|
|
18037
|
+
};
|
|
18038
|
+
var COLS = {
|
|
18039
|
+
2: "sm:grid-cols-2",
|
|
18040
|
+
3: "sm:grid-cols-2 lg:grid-cols-3",
|
|
18041
|
+
4: "sm:grid-cols-2 lg:grid-cols-4"
|
|
18042
|
+
};
|
|
18043
|
+
function USP({
|
|
18044
|
+
items,
|
|
18045
|
+
heading,
|
|
18046
|
+
subheading,
|
|
18047
|
+
columns,
|
|
18048
|
+
variant = "minimal",
|
|
18049
|
+
theme = "light",
|
|
18050
|
+
className
|
|
18051
|
+
}) {
|
|
18052
|
+
const t = THEME2[theme];
|
|
18053
|
+
const cols = columns != null ? columns : Math.min(Math.max(items.length, 2), 4);
|
|
18054
|
+
const isInline = variant === "inline";
|
|
18055
|
+
const isCard = variant === "card";
|
|
18056
|
+
const isNumbered = variant === "numbered";
|
|
18057
|
+
const stacked = !isInline;
|
|
18058
|
+
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: [
|
|
18059
|
+
(heading || subheading) && /* @__PURE__ */ jsxs(
|
|
18060
|
+
"div",
|
|
18061
|
+
{
|
|
18062
|
+
className: cn(
|
|
18063
|
+
"mb-12 max-w-2xl",
|
|
18064
|
+
isNumbered ? "text-left" : "mx-auto text-center"
|
|
18065
|
+
),
|
|
18066
|
+
children: [
|
|
18067
|
+
heading && /* @__PURE__ */ jsx(
|
|
18068
|
+
"h2",
|
|
18069
|
+
{
|
|
18070
|
+
className: cn(
|
|
18071
|
+
"font-heading font-bold uppercase tracking-wide",
|
|
18072
|
+
isNumbered ? "text-3xl sm:text-4xl lg:text-5xl" : "text-2xl sm:text-3xl",
|
|
18073
|
+
t.heading
|
|
18074
|
+
),
|
|
18075
|
+
children: heading
|
|
18076
|
+
}
|
|
18077
|
+
),
|
|
18078
|
+
subheading && /* @__PURE__ */ jsx("p", { className: cn("mt-3 font-sans text-base", t.body), children: subheading })
|
|
18079
|
+
]
|
|
18080
|
+
}
|
|
18081
|
+
),
|
|
18082
|
+
/* @__PURE__ */ jsxs(
|
|
18083
|
+
"div",
|
|
18084
|
+
{
|
|
18085
|
+
className: cn(
|
|
18086
|
+
"grid grid-cols-1 gap-x-8 gap-y-10",
|
|
18087
|
+
COLS[cols]
|
|
18088
|
+
),
|
|
18089
|
+
children: [
|
|
18090
|
+
isNumbered && items.map((item, i) => /* @__PURE__ */ jsxs(
|
|
18091
|
+
"div",
|
|
18092
|
+
{
|
|
18093
|
+
className: cn(
|
|
18094
|
+
"flex flex-col rounded-2xl border p-6 text-left sm:p-7",
|
|
18095
|
+
t.card
|
|
18096
|
+
),
|
|
18097
|
+
children: [
|
|
18098
|
+
/* @__PURE__ */ jsx(
|
|
18099
|
+
"span",
|
|
18100
|
+
{
|
|
18101
|
+
className: cn(
|
|
18102
|
+
"mb-4 font-sans text-xl font-semibold italic",
|
|
18103
|
+
t.number
|
|
18104
|
+
),
|
|
18105
|
+
children: String(i + 1).padStart(2, "0")
|
|
18106
|
+
}
|
|
18107
|
+
),
|
|
18108
|
+
/* @__PURE__ */ jsx(
|
|
18109
|
+
"h3",
|
|
18110
|
+
{
|
|
18111
|
+
className: cn(
|
|
18112
|
+
"font-heading text-lg font-bold leading-snug",
|
|
18113
|
+
t.heading
|
|
18114
|
+
),
|
|
18115
|
+
children: item.title
|
|
18116
|
+
}
|
|
18117
|
+
),
|
|
18118
|
+
/* @__PURE__ */ jsx("p", { className: cn("mt-2 font-sans text-base leading-relaxed", t.body), children: item.description })
|
|
18119
|
+
]
|
|
18120
|
+
},
|
|
18121
|
+
i
|
|
18122
|
+
)),
|
|
18123
|
+
!isNumbered && items.map((item, i) => /* @__PURE__ */ jsxs(
|
|
18124
|
+
"div",
|
|
18125
|
+
{
|
|
18126
|
+
className: cn(
|
|
18127
|
+
isCard && cn("rounded-2xl border p-6 sm:p-7", t.card),
|
|
18128
|
+
stacked ? "flex flex-col items-center text-center" : "flex items-start gap-4 text-left"
|
|
18129
|
+
),
|
|
18130
|
+
children: [
|
|
18131
|
+
/* @__PURE__ */ jsx(
|
|
18132
|
+
"span",
|
|
18133
|
+
{
|
|
18134
|
+
className: cn(
|
|
18135
|
+
"flex shrink-0 items-center justify-center",
|
|
18136
|
+
isCard ? cn("h-14 w-14 rounded-full [&>svg]:size-7", t.chip) : cn("[&>svg]:size-8", t.icon),
|
|
18137
|
+
stacked && "mb-4"
|
|
18138
|
+
),
|
|
18139
|
+
children: item.icon
|
|
18140
|
+
}
|
|
18141
|
+
),
|
|
18142
|
+
/* @__PURE__ */ jsxs("div", { className: isInline ? "flex-1" : "contents", children: [
|
|
18143
|
+
/* @__PURE__ */ jsx(
|
|
18144
|
+
"h3",
|
|
18145
|
+
{
|
|
18146
|
+
className: cn(
|
|
18147
|
+
"font-heading text-sm font-bold uppercase leading-snug tracking-wide",
|
|
18148
|
+
t.title,
|
|
18149
|
+
stacked && "mb-3"
|
|
18150
|
+
),
|
|
18151
|
+
children: item.title
|
|
18152
|
+
}
|
|
18153
|
+
),
|
|
18154
|
+
/* @__PURE__ */ jsx(
|
|
18155
|
+
"p",
|
|
18156
|
+
{
|
|
18157
|
+
className: cn(
|
|
18158
|
+
"font-sans text-base leading-relaxed",
|
|
18159
|
+
t.body,
|
|
18160
|
+
isInline && "mt-1.5"
|
|
18161
|
+
),
|
|
18162
|
+
children: item.description
|
|
18163
|
+
}
|
|
18164
|
+
)
|
|
18165
|
+
] })
|
|
18166
|
+
]
|
|
18167
|
+
},
|
|
18168
|
+
i
|
|
18169
|
+
))
|
|
18170
|
+
]
|
|
18171
|
+
}
|
|
18172
|
+
)
|
|
18173
|
+
] }) });
|
|
18174
|
+
}
|
|
18175
|
+
function RotatingSubtitle({
|
|
18176
|
+
phrases,
|
|
18177
|
+
interval,
|
|
18178
|
+
className
|
|
18179
|
+
}) {
|
|
18180
|
+
const [index, setIndex] = React32.useState(0);
|
|
18181
|
+
React32.useEffect(() => {
|
|
18182
|
+
var _a;
|
|
18183
|
+
if (phrases.length < 2) return;
|
|
18184
|
+
const reduce = typeof window !== "undefined" && ((_a = window.matchMedia) == null ? void 0 : _a.call(window, "(prefers-reduced-motion: reduce)").matches);
|
|
18185
|
+
if (reduce) return;
|
|
18186
|
+
const id = setInterval(
|
|
18187
|
+
() => setIndex((i) => (i + 1) % phrases.length),
|
|
18188
|
+
interval
|
|
18189
|
+
);
|
|
18190
|
+
return () => clearInterval(id);
|
|
18191
|
+
}, [phrases.length, interval]);
|
|
18192
|
+
return (
|
|
18193
|
+
/* Grid-stacks all phrases so the box keeps the height of the tallest line
|
|
18194
|
+
and the crossfade has no layout shift. */
|
|
18195
|
+
/* @__PURE__ */ jsx("span", { className: cn("grid", className), children: phrases.map((phrase, i) => /* @__PURE__ */ jsx(
|
|
18196
|
+
"span",
|
|
18197
|
+
{
|
|
18198
|
+
"aria-hidden": i !== index,
|
|
18199
|
+
className: cn(
|
|
18200
|
+
"col-start-1 row-start-1 transition-opacity duration-700",
|
|
18201
|
+
i === index ? "opacity-100" : "opacity-0"
|
|
18202
|
+
),
|
|
18203
|
+
children: phrase
|
|
18204
|
+
},
|
|
18205
|
+
phrase + i
|
|
18206
|
+
)) })
|
|
18207
|
+
);
|
|
18208
|
+
}
|
|
18209
|
+
function CtaBanner({
|
|
18210
|
+
image,
|
|
18211
|
+
imageAlt = "",
|
|
18212
|
+
title,
|
|
18213
|
+
subtitle,
|
|
18214
|
+
cta,
|
|
18215
|
+
rotateInterval = 3e3,
|
|
18216
|
+
parallax = true,
|
|
18217
|
+
overlayOpacity = 35,
|
|
18218
|
+
className
|
|
18219
|
+
}) {
|
|
18220
|
+
const phrases = React32.useMemo(
|
|
18221
|
+
() => (Array.isArray(subtitle) ? subtitle : subtitle ? [subtitle] : []).map((s) => s.trim()).filter(Boolean),
|
|
18222
|
+
[subtitle]
|
|
18223
|
+
);
|
|
18224
|
+
return /* @__PURE__ */ jsxs(
|
|
18225
|
+
"section",
|
|
18226
|
+
{
|
|
18227
|
+
className: cn(
|
|
18228
|
+
"relative w-full overflow-hidden",
|
|
18229
|
+
"flex items-center justify-center",
|
|
18230
|
+
"min-h-[360px] py-24 sm:py-28 lg:py-32",
|
|
18231
|
+
"bg-muted",
|
|
18232
|
+
className
|
|
18233
|
+
),
|
|
18234
|
+
children: [
|
|
18235
|
+
parallax ? (
|
|
18236
|
+
/* Parallax: fixed-attachment CSS background (sm+). Uses a plain div so
|
|
18237
|
+
`bg-fixed` works; on mobile it falls back to a normal cover image. */
|
|
18238
|
+
/* @__PURE__ */ jsx(
|
|
18239
|
+
"div",
|
|
18240
|
+
{
|
|
18241
|
+
"aria-hidden": true,
|
|
18242
|
+
role: imageAlt ? "img" : void 0,
|
|
18243
|
+
"aria-label": imageAlt || void 0,
|
|
18244
|
+
className: "absolute inset-0 bg-cover bg-center sm:bg-fixed",
|
|
18245
|
+
style: { backgroundImage: `url("${image}")` }
|
|
18246
|
+
}
|
|
18247
|
+
)
|
|
18248
|
+
) : /* @__PURE__ */ jsx(
|
|
18249
|
+
Picture,
|
|
18250
|
+
{
|
|
18251
|
+
src: image,
|
|
18252
|
+
alt: imageAlt,
|
|
18253
|
+
eager: true,
|
|
18254
|
+
className: "absolute inset-0 h-full w-full object-cover"
|
|
18255
|
+
}
|
|
18256
|
+
),
|
|
18257
|
+
/* @__PURE__ */ jsx(
|
|
18258
|
+
"div",
|
|
18259
|
+
{
|
|
18260
|
+
className: "absolute inset-0 bg-black",
|
|
18261
|
+
style: { opacity: overlayOpacity / 100 },
|
|
18262
|
+
"aria-hidden": true
|
|
18263
|
+
}
|
|
18264
|
+
),
|
|
18265
|
+
/* @__PURE__ */ jsxs("div", { className: "relative z-10 mx-auto flex w-full max-w-4xl flex-col items-center px-6 text-center", children: [
|
|
18266
|
+
/* @__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 }),
|
|
18267
|
+
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] }),
|
|
18268
|
+
cta && (cta.href ? /* @__PURE__ */ jsx(
|
|
18269
|
+
"a",
|
|
18270
|
+
{
|
|
18271
|
+
href: cta.href,
|
|
18272
|
+
onClick: cta.onClick,
|
|
18273
|
+
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",
|
|
18274
|
+
children: cta.label
|
|
18275
|
+
}
|
|
18276
|
+
) : /* @__PURE__ */ jsx(
|
|
18277
|
+
"button",
|
|
18278
|
+
{
|
|
18279
|
+
type: "button",
|
|
18280
|
+
onClick: cta.onClick,
|
|
18281
|
+
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",
|
|
18282
|
+
children: cta.label
|
|
18283
|
+
}
|
|
18284
|
+
))
|
|
18285
|
+
] })
|
|
18286
|
+
]
|
|
18287
|
+
}
|
|
18288
|
+
);
|
|
18289
|
+
}
|
|
18290
|
+
var THEME3 = {
|
|
18291
|
+
light: {
|
|
18292
|
+
section: "bg-background",
|
|
18293
|
+
heading: "text-foreground",
|
|
18294
|
+
sub: "text-muted-foreground",
|
|
18295
|
+
rowTitle: "text-foreground",
|
|
18296
|
+
rowBorder: "border-border",
|
|
18297
|
+
rowArrow: "text-primary"
|
|
18298
|
+
},
|
|
18299
|
+
dark: {
|
|
18300
|
+
section: "bg-neutral-950",
|
|
18301
|
+
heading: "text-white",
|
|
18302
|
+
sub: "text-white/60",
|
|
18303
|
+
rowTitle: "text-white",
|
|
18304
|
+
rowBorder: "border-white/10",
|
|
18305
|
+
rowArrow: "text-primary-400"
|
|
18306
|
+
}
|
|
18307
|
+
};
|
|
18308
|
+
function BlogJournal({
|
|
18309
|
+
eyebrow,
|
|
18310
|
+
title,
|
|
18311
|
+
subtitle,
|
|
18312
|
+
link,
|
|
18313
|
+
feature,
|
|
18314
|
+
posts,
|
|
18315
|
+
theme = "light",
|
|
18316
|
+
className
|
|
18317
|
+
}) {
|
|
18318
|
+
var _a, _b, _c, _d;
|
|
18319
|
+
const t = THEME3[theme];
|
|
18320
|
+
const featRel = feature.external ? "noopener noreferrer" : void 0;
|
|
18321
|
+
const featTarget = feature.external ? "_blank" : void 0;
|
|
18322
|
+
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: [
|
|
18323
|
+
(title || eyebrow || link) && /* @__PURE__ */ jsxs("div", { className: "mb-10 flex flex-wrap items-end justify-between gap-6", children: [
|
|
18324
|
+
/* @__PURE__ */ jsxs("div", { className: "max-w-2xl", children: [
|
|
18325
|
+
eyebrow && /* @__PURE__ */ jsx("p", { className: "mb-3 text-xs font-ui font-bold uppercase tracking-[0.22em] text-primary", children: eyebrow }),
|
|
18326
|
+
title && /* @__PURE__ */ jsx(
|
|
18327
|
+
"h2",
|
|
18328
|
+
{
|
|
18329
|
+
className: cn(
|
|
18330
|
+
"font-heading text-3xl font-black uppercase leading-[1.05] sm:text-4xl lg:text-5xl",
|
|
18331
|
+
t.heading
|
|
18332
|
+
),
|
|
18333
|
+
children: title
|
|
18334
|
+
}
|
|
18335
|
+
),
|
|
18336
|
+
subtitle && /* @__PURE__ */ jsx("p", { className: cn("mt-3 text-base", t.sub), children: subtitle })
|
|
18337
|
+
] }),
|
|
18338
|
+
link && /* @__PURE__ */ jsxs(
|
|
18339
|
+
"a",
|
|
18340
|
+
{
|
|
18341
|
+
href: (_a = link.href) != null ? _a : "#",
|
|
18342
|
+
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",
|
|
18343
|
+
children: [
|
|
18344
|
+
link.label,
|
|
18345
|
+
/* @__PURE__ */ jsx(ArrowRightIcon, { className: "h-4 w-4 transition-transform group-hover:translate-x-1" })
|
|
18346
|
+
]
|
|
18347
|
+
}
|
|
18348
|
+
)
|
|
18349
|
+
] }),
|
|
18350
|
+
/* @__PURE__ */ jsxs("div", { className: "grid items-stretch gap-7 lg:grid-cols-[1.12fr_0.88fr]", children: [
|
|
18351
|
+
/* @__PURE__ */ jsxs(
|
|
18352
|
+
"a",
|
|
18353
|
+
{
|
|
18354
|
+
href: (_b = feature.href) != null ? _b : "#",
|
|
18355
|
+
target: featTarget,
|
|
18356
|
+
rel: featRel,
|
|
18357
|
+
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]",
|
|
18358
|
+
children: [
|
|
18359
|
+
/* @__PURE__ */ jsx(
|
|
18360
|
+
Picture,
|
|
18361
|
+
{
|
|
18362
|
+
src: feature.image,
|
|
18363
|
+
alt: (_c = feature.imageAlt) != null ? _c : feature.title,
|
|
18364
|
+
loading: "lazy",
|
|
18365
|
+
className: "absolute inset-0 h-full w-full object-cover transition-transform duration-700 group-hover:scale-105"
|
|
18366
|
+
}
|
|
18367
|
+
),
|
|
18368
|
+
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-gradient-to-t from-black/90 via-black/25 to-transparent" }),
|
|
18369
|
+
/* @__PURE__ */ jsxs("div", { className: "relative p-8 sm:p-9", children: [
|
|
18370
|
+
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 }),
|
|
18371
|
+
feature.date && /* @__PURE__ */ jsx("span", { className: "block text-xs font-ui font-bold uppercase tracking-[0.1em] text-primary-400", children: feature.date }),
|
|
18372
|
+
/* @__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 }),
|
|
18373
|
+
feature.excerpt && /* @__PURE__ */ jsx("p", { className: "mt-3 max-w-[46ch] text-sm leading-relaxed text-white/85", children: feature.excerpt }),
|
|
18374
|
+
/* @__PURE__ */ jsxs("span", { className: "mt-5 inline-flex items-center gap-1.5 font-ui text-sm font-bold", children: [
|
|
18375
|
+
(_d = feature.ctaLabel) != null ? _d : "Read the guide",
|
|
18376
|
+
/* @__PURE__ */ jsx(ArrowRightIcon, { className: "h-4 w-4 transition-transform group-hover:translate-x-1" })
|
|
18377
|
+
] })
|
|
18378
|
+
] })
|
|
18379
|
+
]
|
|
18380
|
+
}
|
|
18381
|
+
),
|
|
18382
|
+
/* @__PURE__ */ jsx("ul", { className: "flex flex-col justify-center", children: posts.map((post, i) => {
|
|
18383
|
+
var _a2, _b2;
|
|
18384
|
+
return /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs(
|
|
18385
|
+
"a",
|
|
18386
|
+
{
|
|
18387
|
+
href: (_a2 = post.href) != null ? _a2 : "#",
|
|
18388
|
+
target: post.external ? "_blank" : void 0,
|
|
18389
|
+
rel: post.external ? "noopener noreferrer" : void 0,
|
|
18390
|
+
className: cn(
|
|
18391
|
+
"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]",
|
|
18392
|
+
t.rowBorder,
|
|
18393
|
+
i === 0 && "border-t-0 pt-0"
|
|
18394
|
+
),
|
|
18395
|
+
children: [
|
|
18396
|
+
/* @__PURE__ */ jsx(
|
|
18397
|
+
Picture,
|
|
18398
|
+
{
|
|
18399
|
+
src: post.image,
|
|
18400
|
+
alt: (_b2 = post.imageAlt) != null ? _b2 : post.title,
|
|
18401
|
+
loading: "lazy",
|
|
18402
|
+
className: "h-16 w-16 rounded-xl object-cover sm:h-[78px] sm:w-[78px]"
|
|
18403
|
+
}
|
|
18404
|
+
),
|
|
18405
|
+
/* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
|
|
18406
|
+
/* @__PURE__ */ jsxs("span", { className: "text-[11px] font-ui font-bold uppercase tracking-[0.1em] text-primary", children: [
|
|
18407
|
+
post.category,
|
|
18408
|
+
post.category && post.date && /* @__PURE__ */ jsx("span", { className: cn("ml-2 font-semibold", t.sub), children: post.date }),
|
|
18409
|
+
!post.category && post.date && /* @__PURE__ */ jsx("span", { className: cn("font-semibold", t.sub), children: post.date })
|
|
18410
|
+
] }),
|
|
18411
|
+
/* @__PURE__ */ jsx(
|
|
18412
|
+
"h4",
|
|
18413
|
+
{
|
|
18414
|
+
className: cn(
|
|
18415
|
+
"mt-1.5 font-heading text-base font-bold leading-snug sm:text-lg",
|
|
18416
|
+
t.rowTitle
|
|
18417
|
+
),
|
|
18418
|
+
children: post.title
|
|
18419
|
+
}
|
|
18420
|
+
)
|
|
18421
|
+
] }),
|
|
18422
|
+
/* @__PURE__ */ jsx(
|
|
18423
|
+
ArrowRightIcon,
|
|
18424
|
+
{
|
|
18425
|
+
className: cn(
|
|
18426
|
+
"h-5 w-5 shrink-0 transition-transform group-hover:translate-x-1",
|
|
18427
|
+
t.rowArrow
|
|
18428
|
+
)
|
|
18429
|
+
}
|
|
18430
|
+
)
|
|
18431
|
+
]
|
|
18432
|
+
}
|
|
18433
|
+
) }, i);
|
|
18434
|
+
}) })
|
|
18435
|
+
] })
|
|
18436
|
+
] }) });
|
|
18437
|
+
}
|
|
18438
|
+
var SURFACE_WHITE = "bg-white";
|
|
18439
|
+
var SURFACE_SAND = "bg-[oklch(0.94_0.016_86)]";
|
|
18440
|
+
var SURFACE_PRIMARY_700 = "bg-[oklch(0.52_0.082_179)]";
|
|
18441
|
+
var SURFACE_PRIMARY_800 = "bg-[oklch(0.39_0.062_179)]";
|
|
18442
|
+
var SURFACE_PRIMARY_900 = "bg-[oklch(0.27_0.040_179)]";
|
|
18443
|
+
function SectionHead({
|
|
18444
|
+
eyebrow,
|
|
18445
|
+
title,
|
|
18446
|
+
subtitle,
|
|
18447
|
+
link,
|
|
18448
|
+
align = "between",
|
|
18449
|
+
theme = "light"
|
|
18450
|
+
}) {
|
|
18451
|
+
var _a;
|
|
18452
|
+
const isCenter = align === "center";
|
|
18453
|
+
return /* @__PURE__ */ jsxs(
|
|
18454
|
+
"div",
|
|
18455
|
+
{
|
|
18456
|
+
className: cn(
|
|
18457
|
+
"mb-10 flex flex-wrap items-end gap-6",
|
|
18458
|
+
isCenter ? "flex-col items-center text-center" : "justify-between"
|
|
18459
|
+
),
|
|
18460
|
+
children: [
|
|
18461
|
+
/* @__PURE__ */ jsxs("div", { className: cn("max-w-2xl", isCenter && "mx-auto"), children: [
|
|
18462
|
+
eyebrow && /* @__PURE__ */ jsx("p", { className: "mb-3 text-xs font-ui font-bold uppercase tracking-[0.22em] text-primary", children: eyebrow }),
|
|
18463
|
+
/* @__PURE__ */ jsx(
|
|
18464
|
+
"h2",
|
|
18465
|
+
{
|
|
18466
|
+
className: cn(
|
|
18467
|
+
"font-heading text-3xl font-black uppercase leading-[1.05] sm:text-4xl lg:text-5xl",
|
|
18468
|
+
theme === "dark" ? "text-white" : "text-foreground"
|
|
18469
|
+
),
|
|
18470
|
+
children: title
|
|
18471
|
+
}
|
|
18472
|
+
),
|
|
18473
|
+
subtitle && /* @__PURE__ */ jsx(
|
|
18474
|
+
"p",
|
|
18475
|
+
{
|
|
18476
|
+
className: cn(
|
|
18477
|
+
"mt-3 text-base",
|
|
18478
|
+
theme === "dark" ? "text-white/70" : "text-muted-foreground"
|
|
18479
|
+
),
|
|
18480
|
+
children: subtitle
|
|
18481
|
+
}
|
|
18482
|
+
)
|
|
18483
|
+
] }),
|
|
18484
|
+
link && !isCenter && /* @__PURE__ */ jsxs(
|
|
18485
|
+
"a",
|
|
18486
|
+
{
|
|
18487
|
+
href: (_a = link.href) != null ? _a : "#",
|
|
18488
|
+
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",
|
|
18489
|
+
children: [
|
|
18490
|
+
link.label,
|
|
18491
|
+
/* @__PURE__ */ jsx(ArrowRightIcon, { className: "h-4 w-4 transition-transform group-hover:translate-x-1" })
|
|
18492
|
+
]
|
|
18493
|
+
}
|
|
18494
|
+
)
|
|
18495
|
+
]
|
|
18496
|
+
}
|
|
18497
|
+
);
|
|
18498
|
+
}
|
|
18499
|
+
function ExpeditionsRail({ eyebrow, title, subtitle, link, trips }) {
|
|
18500
|
+
var _a;
|
|
18501
|
+
const railRef = React32.useRef(null);
|
|
18502
|
+
const scrollByCard = (dir) => {
|
|
18503
|
+
const rail = railRef.current;
|
|
18504
|
+
if (!rail) return;
|
|
18505
|
+
const card = rail.querySelector("[data-rail-card]");
|
|
18506
|
+
const amount = card ? card.offsetWidth + 22 : rail.clientWidth * 0.8;
|
|
18507
|
+
rail.scrollBy({ left: dir * amount, behavior: "smooth" });
|
|
18508
|
+
};
|
|
18509
|
+
return /* @__PURE__ */ jsxs("section", { className: cn(SURFACE_SAND, "py-20 sm:py-28"), children: [
|
|
18510
|
+
/* @__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: [
|
|
18511
|
+
/* @__PURE__ */ jsxs("div", { className: "max-w-2xl", children: [
|
|
18512
|
+
eyebrow && /* @__PURE__ */ jsx("p", { className: "mb-3 text-xs font-ui font-bold uppercase tracking-[0.22em] text-primary", children: eyebrow }),
|
|
18513
|
+
/* @__PURE__ */ jsx("h2", { className: "font-heading text-3xl font-black uppercase leading-[1.05] text-foreground sm:text-4xl lg:text-5xl", children: title }),
|
|
18514
|
+
subtitle && /* @__PURE__ */ jsx("p", { className: "mt-3 text-base text-muted-foreground", children: subtitle })
|
|
18515
|
+
] }),
|
|
18516
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2.5", children: [
|
|
18517
|
+
link && /* @__PURE__ */ jsxs(
|
|
18518
|
+
"a",
|
|
18519
|
+
{
|
|
18520
|
+
href: (_a = link.href) != null ? _a : "#",
|
|
18521
|
+
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",
|
|
18522
|
+
children: [
|
|
18523
|
+
link.label,
|
|
18524
|
+
/* @__PURE__ */ jsx(ArrowRightIcon, { className: "h-4 w-4 transition-transform group-hover:translate-x-1" })
|
|
18525
|
+
]
|
|
18526
|
+
}
|
|
18527
|
+
),
|
|
18528
|
+
/* @__PURE__ */ jsx(
|
|
18529
|
+
"button",
|
|
18530
|
+
{
|
|
18531
|
+
type: "button",
|
|
18532
|
+
onClick: () => scrollByCard(-1),
|
|
18533
|
+
"aria-label": "Previous expeditions",
|
|
18534
|
+
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",
|
|
18535
|
+
children: /* @__PURE__ */ jsx(ChevronLeftIcon, { className: "h-5 w-5" })
|
|
18536
|
+
}
|
|
18537
|
+
),
|
|
18538
|
+
/* @__PURE__ */ jsx(
|
|
18539
|
+
"button",
|
|
18540
|
+
{
|
|
18541
|
+
type: "button",
|
|
18542
|
+
onClick: () => scrollByCard(1),
|
|
18543
|
+
"aria-label": "Next expeditions",
|
|
18544
|
+
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",
|
|
18545
|
+
children: /* @__PURE__ */ jsx(ChevronRightIcon, { className: "h-5 w-5" })
|
|
18546
|
+
}
|
|
18547
|
+
)
|
|
18548
|
+
] })
|
|
18549
|
+
] }) }),
|
|
18550
|
+
/* @__PURE__ */ jsx("div", { className: "mx-auto w-full max-w-6xl", children: /* @__PURE__ */ jsx(
|
|
18551
|
+
"div",
|
|
18552
|
+
{
|
|
18553
|
+
ref: railRef,
|
|
18554
|
+
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",
|
|
18555
|
+
children: trips.map((trip, i) => /* @__PURE__ */ jsx(
|
|
18556
|
+
"div",
|
|
18557
|
+
{
|
|
18558
|
+
"data-rail-card": true,
|
|
18559
|
+
className: "w-[320px] shrink-0 snap-start sm:w-[340px]",
|
|
18560
|
+
children: /* @__PURE__ */ jsx(TripCard, __spreadValues({ variant: "editorial" }, trip))
|
|
18561
|
+
},
|
|
18562
|
+
i
|
|
18563
|
+
))
|
|
18564
|
+
}
|
|
18565
|
+
) })
|
|
18566
|
+
] });
|
|
18567
|
+
}
|
|
18568
|
+
function PopularCloud({ eyebrow, title, subtitle, chips }) {
|
|
18569
|
+
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: [
|
|
18570
|
+
/* @__PURE__ */ jsx(
|
|
18571
|
+
SectionHead,
|
|
18572
|
+
{
|
|
18573
|
+
eyebrow,
|
|
18574
|
+
title,
|
|
18575
|
+
subtitle,
|
|
18576
|
+
align: "center"
|
|
18577
|
+
}
|
|
18578
|
+
),
|
|
18579
|
+
/* @__PURE__ */ jsx("div", { className: "mx-auto flex max-w-3xl flex-wrap items-center justify-center gap-3", children: chips.map((chip, i) => {
|
|
18580
|
+
var _a;
|
|
18581
|
+
return /* @__PURE__ */ jsx(
|
|
18582
|
+
Chip,
|
|
18583
|
+
{
|
|
18584
|
+
href: chip.href,
|
|
18585
|
+
variant: chip.featured ? "solid" : "outline",
|
|
18586
|
+
size: (_a = chip.size) != null ? _a : "md",
|
|
18587
|
+
className: "transition-transform hover:-translate-y-0.5",
|
|
18588
|
+
children: chip.label
|
|
18589
|
+
},
|
|
18590
|
+
i
|
|
18591
|
+
);
|
|
18592
|
+
}) })
|
|
18593
|
+
] }) });
|
|
18594
|
+
}
|
|
18595
|
+
function StatsBand({ items }) {
|
|
18596
|
+
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: [
|
|
18597
|
+
/* @__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 }),
|
|
18598
|
+
/* @__PURE__ */ jsx("div", { className: "mt-3 text-sm font-medium text-white/90", children: stat.label })
|
|
18599
|
+
] }, i)) }) }) });
|
|
18600
|
+
}
|
|
18601
|
+
function ReviewStars({ stars = 5 }) {
|
|
18602
|
+
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(
|
|
18603
|
+
StarIcon,
|
|
18604
|
+
{
|
|
18605
|
+
className: cn(
|
|
18606
|
+
"h-4 w-4",
|
|
18607
|
+
i + 1 <= Math.round(stars) ? "fill-amber-400 text-amber-400" : "fill-white/15 text-white/15"
|
|
18608
|
+
)
|
|
18609
|
+
},
|
|
18610
|
+
i
|
|
18611
|
+
)) });
|
|
18612
|
+
}
|
|
18613
|
+
function ReviewsBand({ eyebrow, title, subtitle, link, items, note }) {
|
|
18614
|
+
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: [
|
|
18615
|
+
/* @__PURE__ */ jsx(
|
|
18616
|
+
SectionHead,
|
|
18617
|
+
{
|
|
18618
|
+
eyebrow,
|
|
18619
|
+
title,
|
|
18620
|
+
subtitle,
|
|
18621
|
+
link,
|
|
18622
|
+
theme: "dark"
|
|
18623
|
+
}
|
|
18624
|
+
),
|
|
18625
|
+
/* @__PURE__ */ jsx("div", { className: "grid gap-5 sm:grid-cols-2 lg:grid-cols-3", children: items.map((review, i) => /* @__PURE__ */ jsxs(
|
|
18626
|
+
"figure",
|
|
18627
|
+
{
|
|
18628
|
+
className: "rounded-2xl border border-white/10 bg-white/5 p-7 transition-colors hover:bg-white/10",
|
|
18629
|
+
children: [
|
|
18630
|
+
/* @__PURE__ */ jsx(ReviewStars, { stars: review.stars }),
|
|
18631
|
+
/* @__PURE__ */ jsxs("blockquote", { className: "font-sans text-lg italic leading-relaxed text-white/90", children: [
|
|
18632
|
+
"\u201C",
|
|
18633
|
+
review.quote,
|
|
18634
|
+
"\u201D"
|
|
18635
|
+
] }),
|
|
18636
|
+
/* @__PURE__ */ jsxs("figcaption", { className: "mt-5 text-sm font-medium text-white/60", children: [
|
|
18637
|
+
"\u2014 ",
|
|
18638
|
+
review.author
|
|
18639
|
+
] })
|
|
18640
|
+
]
|
|
18641
|
+
},
|
|
18642
|
+
i
|
|
18643
|
+
)) }),
|
|
18644
|
+
note && /* @__PURE__ */ jsx("p", { className: "mt-8 text-center text-xs text-white/40", children: note })
|
|
18645
|
+
] }) });
|
|
18646
|
+
}
|
|
18647
|
+
function NewHome({
|
|
18648
|
+
hero,
|
|
18649
|
+
explorer,
|
|
18650
|
+
expeditions,
|
|
18651
|
+
popular,
|
|
18652
|
+
stats,
|
|
18653
|
+
usp,
|
|
18654
|
+
reviews,
|
|
18655
|
+
journal,
|
|
18656
|
+
cta,
|
|
18657
|
+
footer,
|
|
18658
|
+
className
|
|
18659
|
+
}) {
|
|
18660
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("w-full bg-background", className), children: [
|
|
18661
|
+
/* @__PURE__ */ jsx(HomeHeader, __spreadValues({}, hero)),
|
|
18662
|
+
explorer && /* @__PURE__ */ jsx(
|
|
18663
|
+
AdventureExplorer,
|
|
18664
|
+
__spreadProps(__spreadValues({}, explorer), {
|
|
18665
|
+
className: cn(SURFACE_WHITE, explorer.className)
|
|
18666
|
+
})
|
|
18667
|
+
),
|
|
18668
|
+
expeditions && /* @__PURE__ */ jsx(ExpeditionsRail, __spreadValues({}, expeditions)),
|
|
18669
|
+
popular && /* @__PURE__ */ jsx(PopularCloud, __spreadValues({}, popular)),
|
|
18670
|
+
stats && /* @__PURE__ */ jsx(StatsBand, __spreadValues({}, stats)),
|
|
18671
|
+
usp && /* @__PURE__ */ jsx(USP, __spreadProps(__spreadValues({}, usp), { className: cn(SURFACE_PRIMARY_800, usp.className) })),
|
|
18672
|
+
reviews && /* @__PURE__ */ jsx(ReviewsBand, __spreadValues({}, reviews)),
|
|
18673
|
+
journal && /* @__PURE__ */ jsx(BlogJournal, __spreadProps(__spreadValues({}, journal), { className: cn(SURFACE_WHITE, journal.className) })),
|
|
18674
|
+
cta && /* @__PURE__ */ jsx(CtaBanner, __spreadValues({}, cta)),
|
|
18675
|
+
footer && /* @__PURE__ */ jsx(SiteFooter, __spreadValues({}, footer))
|
|
18676
|
+
] });
|
|
18677
|
+
}
|
|
18678
|
+
var ACTIVE_PILL = "bg-primary text-white shadow-sm";
|
|
18679
|
+
var VARIANT3 = {
|
|
18680
|
+
black: {
|
|
18681
|
+
track: "bg-white/5 border-white/10",
|
|
18682
|
+
idle: "text-white/55 hover:text-white",
|
|
18683
|
+
ring: "focus-visible:ring-white/70"
|
|
18684
|
+
},
|
|
18685
|
+
white: {
|
|
18686
|
+
track: "bg-neutral-100 border-black/10",
|
|
18687
|
+
idle: "text-neutral-500 hover:text-neutral-900",
|
|
18688
|
+
ring: "focus-visible:ring-neutral-900/40"
|
|
18689
|
+
}
|
|
18690
|
+
};
|
|
18691
|
+
var SIZE = {
|
|
18692
|
+
sm: "px-4 py-1.5 text-[13px]",
|
|
18693
|
+
md: "px-5 py-2 text-sm"
|
|
18694
|
+
};
|
|
18695
|
+
function SegmentedControl({
|
|
18696
|
+
items,
|
|
18697
|
+
value,
|
|
18698
|
+
defaultValue,
|
|
18699
|
+
onValueChange,
|
|
18700
|
+
variant = "black",
|
|
18701
|
+
size = "md",
|
|
18702
|
+
fullWidth = false,
|
|
18703
|
+
collapse = false,
|
|
18704
|
+
"aria-label": ariaLabel = "Options",
|
|
18705
|
+
className
|
|
18706
|
+
}) {
|
|
18707
|
+
var _a;
|
|
18708
|
+
const isControlled = value != null;
|
|
18709
|
+
const [internal, setInternal] = React32.useState(
|
|
18710
|
+
defaultValue != null ? defaultValue : (_a = items[0]) == null ? void 0 : _a.id
|
|
18711
|
+
);
|
|
18712
|
+
const active = isControlled ? value : internal;
|
|
18713
|
+
const select = (id) => {
|
|
18714
|
+
if (!isControlled) setInternal(id);
|
|
18715
|
+
onValueChange == null ? void 0 : onValueChange(id);
|
|
18716
|
+
};
|
|
18717
|
+
const onKeyDown = (e) => {
|
|
18718
|
+
if (e.key !== "ArrowLeft" && e.key !== "ArrowRight") return;
|
|
18719
|
+
e.preventDefault();
|
|
18720
|
+
const enabled = items.filter((i) => !i.disabled);
|
|
18721
|
+
const idx = enabled.findIndex((i) => i.id === active);
|
|
18722
|
+
if (idx === -1) return;
|
|
18723
|
+
const next = e.key === "ArrowRight" ? enabled[(idx + 1) % enabled.length] : enabled[(idx - 1 + enabled.length) % enabled.length];
|
|
18724
|
+
select(next.id);
|
|
18725
|
+
};
|
|
18726
|
+
const v = VARIANT3[variant];
|
|
18727
|
+
return /* @__PURE__ */ jsx(
|
|
18728
|
+
"div",
|
|
18729
|
+
{
|
|
18730
|
+
role: "radiogroup",
|
|
18731
|
+
"aria-label": ariaLabel,
|
|
18732
|
+
onKeyDown,
|
|
18733
|
+
className: cn(
|
|
18734
|
+
"inline-flex max-w-full items-center gap-1 overflow-x-auto rounded-full border p-1.5 scrollbar-none",
|
|
18735
|
+
fullWidth && "flex w-full",
|
|
18736
|
+
v.track,
|
|
18737
|
+
className
|
|
18738
|
+
),
|
|
18739
|
+
children: items.map((item) => {
|
|
18740
|
+
const isActive = item.id === active;
|
|
18741
|
+
const Icon = item.icon;
|
|
18742
|
+
const showLabel = collapse === "all" ? false : collapse ? isActive : true;
|
|
18743
|
+
return /* @__PURE__ */ jsxs(
|
|
18744
|
+
"button",
|
|
18745
|
+
{
|
|
18746
|
+
type: "button",
|
|
18747
|
+
role: "radio",
|
|
18748
|
+
"aria-checked": isActive,
|
|
18749
|
+
"aria-label": collapse && !showLabel ? item.label : void 0,
|
|
18750
|
+
title: collapse && !showLabel ? item.label : void 0,
|
|
18751
|
+
disabled: item.disabled,
|
|
18752
|
+
tabIndex: isActive ? 0 : -1,
|
|
18753
|
+
onClick: () => select(item.id),
|
|
18754
|
+
className: cn(
|
|
18755
|
+
"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",
|
|
18756
|
+
showLabel && Icon ? "gap-2" : "gap-0",
|
|
18757
|
+
variant === "black" ? "focus-visible:ring-offset-neutral-950" : "focus-visible:ring-offset-white",
|
|
18758
|
+
fullWidth && "flex-1",
|
|
18759
|
+
SIZE[size],
|
|
18760
|
+
/* Icon-only segments are square-ish — drop the side padding so
|
|
18761
|
+
the icon centres in a circular pill. */
|
|
18762
|
+
collapse && !showLabel && (size === "sm" ? "!px-1.5" : "!px-2"),
|
|
18763
|
+
isActive ? ACTIVE_PILL : v.idle,
|
|
18764
|
+
v.ring
|
|
18765
|
+
),
|
|
18766
|
+
children: [
|
|
18767
|
+
Icon && /* @__PURE__ */ jsx(
|
|
18768
|
+
Icon,
|
|
18769
|
+
{
|
|
18770
|
+
className: cn("shrink-0", size === "sm" ? "size-4" : "size-[18px]")
|
|
18771
|
+
}
|
|
18772
|
+
),
|
|
18773
|
+
/* @__PURE__ */ jsx(
|
|
18774
|
+
"span",
|
|
18775
|
+
{
|
|
18776
|
+
className: cn(
|
|
18777
|
+
"overflow-hidden whitespace-nowrap transition-all duration-300 ease-out",
|
|
18778
|
+
showLabel ? "max-w-[12ch] opacity-100" : "max-w-0 opacity-0"
|
|
18779
|
+
),
|
|
18780
|
+
children: item.label
|
|
18781
|
+
}
|
|
18782
|
+
)
|
|
18783
|
+
]
|
|
18784
|
+
},
|
|
18785
|
+
item.id
|
|
18786
|
+
);
|
|
18787
|
+
})
|
|
18788
|
+
}
|
|
18789
|
+
);
|
|
18790
|
+
}
|
|
17160
18791
|
|
|
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 };
|
|
18792
|
+
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
18793
|
//# sourceMappingURL=index.js.map
|
|
17163
18794
|
//# sourceMappingURL=index.js.map
|