@planetaexo/design-system 0.64.0 → 0.66.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +2175 -406
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +774 -13
- package/dist/index.d.ts +774 -13
- package/dist/index.js +2160 -408
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -89,6 +89,13 @@ interface BookingAdventureCardLabels {
|
|
|
89
89
|
childrenUnit?: string;
|
|
90
90
|
/** Heading da seção ACCOMMODATIONS. Default "ACCOMMODATIONS". */
|
|
91
91
|
accommodationsHeading?: string;
|
|
92
|
+
/**
|
|
93
|
+
* Heading por quarto no layout `feature` (ex.: "Accommodation: Suíte Master").
|
|
94
|
+
* Interpolado pelo DS via `accommodationRoomHeading(room.roomName)`.
|
|
95
|
+
* Default EN `(n) => \`Accommodation: ${n}\``. Usado só quando
|
|
96
|
+
* `roomLayout==="feature"`.
|
|
97
|
+
*/
|
|
98
|
+
accommodationRoomHeading?: (name: string) => string;
|
|
92
99
|
/** Labels localizados para o chip de bedArrangement. */
|
|
93
100
|
bedArrangementLabels?: {
|
|
94
101
|
DOUBLE?: string;
|
|
@@ -159,12 +166,21 @@ interface BookingAdventureCardProps {
|
|
|
159
166
|
* quartos selecionados (renderiza bloco "ACCOMMODATIONS"). Vazio = bloco oculto.
|
|
160
167
|
*/
|
|
161
168
|
rooms?: AccommodationRoomItem[];
|
|
169
|
+
/**
|
|
170
|
+
* Layout do bloco ACCOMMODATIONS:
|
|
171
|
+
* - `"compact"` (default) — card compacto atual (img 80×60 + chip + qty +
|
|
172
|
+
* roomType). Usado por PaymentReminderEmail e qualquer caller sem a prop.
|
|
173
|
+
* - `"feature"` — padrão manual da equipe: heading "Accommodation: {nome}"
|
|
174
|
+
* por quarto + imagem larga (full-width) + chip/qty/roomType/description
|
|
175
|
+
* mantidos abaixo. Ativado só pelo BookingPaymentConfirmationEmail.
|
|
176
|
+
*/
|
|
177
|
+
roomLayout?: "compact" | "feature";
|
|
162
178
|
/** Labels para i18n / customização. */
|
|
163
179
|
labels?: BookingAdventureCardLabels;
|
|
164
180
|
/** className extra no container. */
|
|
165
181
|
className?: string;
|
|
166
182
|
}
|
|
167
|
-
declare function BookingAdventureCard({ tag, name, startDate, endDate, travellerCount, slots, travellers, itinerary, description, image, imageAlt, location, destination, partner, included, notIncluded, lineItems, subtotal, rooms, labels, className, }: BookingAdventureCardProps): react_jsx_runtime.JSX.Element;
|
|
183
|
+
declare function BookingAdventureCard({ tag, name, startDate, endDate, travellerCount, slots, travellers, itinerary, description, image, imageAlt, location, destination, partner, included, notIncluded, lineItems, subtotal, rooms, roomLayout, labels, className, }: BookingAdventureCardProps): react_jsx_runtime.JSX.Element;
|
|
168
184
|
|
|
169
185
|
interface OfferSummaryLineItem {
|
|
170
186
|
label: string;
|
|
@@ -253,6 +269,12 @@ interface OfferAdventureItem {
|
|
|
253
269
|
rooms?: AccommodationRoomItem[];
|
|
254
270
|
/** Heading do bloco Accommodations. Default: "Accommodations". */
|
|
255
271
|
accommodationsLabel?: string;
|
|
272
|
+
/**
|
|
273
|
+
* Heading por quarto no padrão manual ("Accommodation: {name}").
|
|
274
|
+
* Interpolado pelo componente via `accommodationRoomHeading(room.roomName)`.
|
|
275
|
+
* Default EN `(n) => \`Accommodation: ${n}\``.
|
|
276
|
+
*/
|
|
277
|
+
accommodationRoomHeading?: (name: string) => string;
|
|
256
278
|
/** Labels localizados para o chip de bedArrangement. */
|
|
257
279
|
bedArrangementLabels?: {
|
|
258
280
|
DOUBLE?: string;
|
|
@@ -996,6 +1018,20 @@ interface BookingPaymentConfirmationEmailLabels {
|
|
|
996
1018
|
pricingLabel?: string;
|
|
997
1019
|
subtotalLabel?: string;
|
|
998
1020
|
totalLabel?: string;
|
|
1021
|
+
/** Heading da seção ACCOMMODATIONS no card. Default EN "ACCOMMODATIONS". */
|
|
1022
|
+
accommodationsLabel?: string;
|
|
1023
|
+
/**
|
|
1024
|
+
* Heading por quarto no layout feature ("Accommodation: {name}").
|
|
1025
|
+
* Default EN `(n) => \`Accommodation: ${n}\``.
|
|
1026
|
+
*/
|
|
1027
|
+
accommodationRoomHeading?: (name: string) => string;
|
|
1028
|
+
/** Labels localizados para o chip de bedArrangement. */
|
|
1029
|
+
bedArrangementLabels?: {
|
|
1030
|
+
DOUBLE?: string;
|
|
1031
|
+
TWIN?: string;
|
|
1032
|
+
SINGLE?: string;
|
|
1033
|
+
TRIPLE?: string;
|
|
1034
|
+
};
|
|
999
1035
|
paymentSummaryHeading?: string;
|
|
1000
1036
|
paymentDetailsHeading?: string;
|
|
1001
1037
|
depositLabel?: (percent: number) => string;
|
|
@@ -2155,6 +2191,54 @@ interface BookingFormValues {
|
|
|
2155
2191
|
phoneCountry: string;
|
|
2156
2192
|
phone: string;
|
|
2157
2193
|
email: string;
|
|
2194
|
+
/** Preferred contact channel. Values are stable (used by the CRM); only the
|
|
2195
|
+
* labels are localizable. Empty until the visitor picks one. */
|
|
2196
|
+
contactVia: "WhatsApp" | "Email" | "Phone" | "";
|
|
2197
|
+
}
|
|
2198
|
+
/**
|
|
2199
|
+
* i18n overrides for every visible string in the form. Any key left undefined
|
|
2200
|
+
* falls back to the built-in English string, so existing callers keep working.
|
|
2201
|
+
* `countries` overrides the residence dropdown (value stays stable for the
|
|
2202
|
+
* submitted payload; only the label is localized).
|
|
2203
|
+
*/
|
|
2204
|
+
interface BookingFormLabels {
|
|
2205
|
+
title?: string;
|
|
2206
|
+
subtitle?: string;
|
|
2207
|
+
submit?: string;
|
|
2208
|
+
sending?: string;
|
|
2209
|
+
travelersSection?: string;
|
|
2210
|
+
adults?: string;
|
|
2211
|
+
children?: string;
|
|
2212
|
+
childrenSublabel?: string;
|
|
2213
|
+
tripSection?: string;
|
|
2214
|
+
travelDate?: string;
|
|
2215
|
+
pickDate?: string;
|
|
2216
|
+
budget?: string;
|
|
2217
|
+
projectSection?: string;
|
|
2218
|
+
projectLabel?: string;
|
|
2219
|
+
optional?: string;
|
|
2220
|
+
contactSection?: string;
|
|
2221
|
+
titleAria?: string;
|
|
2222
|
+
ms?: string;
|
|
2223
|
+
mr?: string;
|
|
2224
|
+
lastName?: string;
|
|
2225
|
+
firstName?: string;
|
|
2226
|
+
country?: string;
|
|
2227
|
+
phone?: string;
|
|
2228
|
+
email?: string;
|
|
2229
|
+
countries?: Array<{
|
|
2230
|
+
value: string;
|
|
2231
|
+
label: string;
|
|
2232
|
+
}>;
|
|
2233
|
+
/** Heading for the "preferred contact channel" radio section. */
|
|
2234
|
+
contactViaSection?: string;
|
|
2235
|
+
/** Localized labels for the contact-channel options (values stay stable). */
|
|
2236
|
+
contactViaWhatsApp?: string;
|
|
2237
|
+
contactViaEmail?: string;
|
|
2238
|
+
contactViaPhone?: string;
|
|
2239
|
+
/** Inline validation messages. */
|
|
2240
|
+
errorRequired?: string;
|
|
2241
|
+
errorEmail?: string;
|
|
2158
2242
|
}
|
|
2159
2243
|
interface BookingFormProps {
|
|
2160
2244
|
/** Initial values */
|
|
@@ -2171,9 +2255,11 @@ interface BookingFormProps {
|
|
|
2171
2255
|
title?: string;
|
|
2172
2256
|
/** Override the header subtitle */
|
|
2173
2257
|
subtitle?: string;
|
|
2258
|
+
/** i18n overrides for the form's built-in strings (English defaults). */
|
|
2259
|
+
labels?: BookingFormLabels;
|
|
2174
2260
|
className?: string;
|
|
2175
2261
|
}
|
|
2176
|
-
declare function BookingForm({ defaultValues, onSubmit, submitLabel, loading, showHeader, title, subtitle, className, }: BookingFormProps): react_jsx_runtime.JSX.Element;
|
|
2262
|
+
declare function BookingForm({ defaultValues, onSubmit, submitLabel, loading, showHeader, title, subtitle, labels, className, }: BookingFormProps): react_jsx_runtime.JSX.Element;
|
|
2177
2263
|
|
|
2178
2264
|
interface CountryOption {
|
|
2179
2265
|
code: string;
|
|
@@ -2549,8 +2635,14 @@ interface PhoneCountrySelectProps {
|
|
|
2549
2635
|
onChange: (code: string) => void;
|
|
2550
2636
|
className?: string;
|
|
2551
2637
|
disabled?: boolean;
|
|
2638
|
+
/**
|
|
2639
|
+
* Show the dial code (e.g. "+55") in the trigger next to the flag.
|
|
2640
|
+
* Defaults to `true`. Set to `false` when the adjacent phone input already
|
|
2641
|
+
* displays the dial code as a prefix (avoids showing "+55" twice).
|
|
2642
|
+
*/
|
|
2643
|
+
showDial?: boolean;
|
|
2552
2644
|
}
|
|
2553
|
-
declare function PhoneCountrySelect({ value, onChange, className, disabled, }: PhoneCountrySelectProps): react_jsx_runtime.JSX.Element;
|
|
2645
|
+
declare function PhoneCountrySelect({ value, onChange, className, disabled, showDial, }: PhoneCountrySelectProps): react_jsx_runtime.JSX.Element;
|
|
2554
2646
|
|
|
2555
2647
|
interface CounterFieldProps {
|
|
2556
2648
|
label: string;
|
|
@@ -2573,8 +2665,10 @@ interface DatePickerFieldProps {
|
|
|
2573
2665
|
disabled?: boolean;
|
|
2574
2666
|
fromDate?: Date;
|
|
2575
2667
|
className?: string;
|
|
2668
|
+
/** Inline validation message; renders below + reddens the trigger border. */
|
|
2669
|
+
error?: string;
|
|
2576
2670
|
}
|
|
2577
|
-
declare function DatePickerField({ label, required, value, onChange, placeholder, disabled, fromDate, className, }: DatePickerFieldProps): react_jsx_runtime.JSX.Element;
|
|
2671
|
+
declare function DatePickerField({ label, required, value, onChange, placeholder, disabled, fromDate, className, error, }: DatePickerFieldProps): react_jsx_runtime.JSX.Element;
|
|
2578
2672
|
|
|
2579
2673
|
interface BirthDateFieldProps {
|
|
2580
2674
|
label: string;
|
|
@@ -2652,8 +2746,23 @@ interface FilterPanelProps {
|
|
|
2652
2746
|
sortOptions?: FilterSortOption[];
|
|
2653
2747
|
sort?: string;
|
|
2654
2748
|
onSortChange?: (id: string) => void;
|
|
2655
|
-
|
|
2656
|
-
|
|
2749
|
+
/** i18n overrides for the panel's built-in control labels (English defaults). */
|
|
2750
|
+
labels?: FilterPanelLabels;
|
|
2751
|
+
}
|
|
2752
|
+
/** i18n overrides for FilterPanel's built-in English control strings. */
|
|
2753
|
+
interface FilterPanelLabels {
|
|
2754
|
+
/** "Clear all" reset link/button. */
|
|
2755
|
+
clearAll?: string;
|
|
2756
|
+
/** Mobile drawer apply button: "Show results" (count appended). */
|
|
2757
|
+
showResults?: string;
|
|
2758
|
+
/** Mobile "Sort" trigger. */
|
|
2759
|
+
sortLabel?: string;
|
|
2760
|
+
/** "Sort by" popover heading. */
|
|
2761
|
+
sortByLabel?: string;
|
|
2762
|
+
/** "Remove all filters" link shown under the groups. */
|
|
2763
|
+
removeAllFilters?: string;
|
|
2764
|
+
}
|
|
2765
|
+
declare function FilterPanel({ groups, value, onChange, onClearAll, alwaysShowClear, title, className, variant, sortOptions, sort, onSortChange, labels, }: FilterPanelProps): react_jsx_runtime.JSX.Element | null;
|
|
2657
2766
|
|
|
2658
2767
|
/**
|
|
2659
2768
|
* Configuration for any Trustpilot widget embedded in the design system.
|
|
@@ -2896,6 +3005,19 @@ interface PhotoGalleryPhoto {
|
|
|
2896
3005
|
/** Photo credit / author displayed in the lightbox bottom-right */
|
|
2897
3006
|
credit?: string;
|
|
2898
3007
|
}
|
|
3008
|
+
/** i18n overrides for the gallery's expand/collapse control + lightbox a11y. */
|
|
3009
|
+
interface PhotoGalleryLabels {
|
|
3010
|
+
/** "See more" — rendered with the hidden count: `See more (12)`. */
|
|
3011
|
+
seeMore?: string;
|
|
3012
|
+
/** "Show less". */
|
|
3013
|
+
showLess?: string;
|
|
3014
|
+
/** aria-label for the lightbox close button. @default "Close lightbox" */
|
|
3015
|
+
close?: string;
|
|
3016
|
+
/** aria-label for the lightbox previous-photo button. @default "Previous photo" */
|
|
3017
|
+
previous?: string;
|
|
3018
|
+
/** aria-label for the lightbox next-photo button. @default "Next photo" */
|
|
3019
|
+
next?: string;
|
|
3020
|
+
}
|
|
2899
3021
|
interface PhotoGalleryProps {
|
|
2900
3022
|
/** Array of photo URLs or photo objects */
|
|
2901
3023
|
photos: (string | PhotoGalleryPhoto)[];
|
|
@@ -2909,9 +3031,11 @@ interface PhotoGalleryProps {
|
|
|
2909
3031
|
initialVisible?: number;
|
|
2910
3032
|
/** Called when a photo is clicked (in addition to opening the lightbox) */
|
|
2911
3033
|
onPhotoClick?: (src: string, index: number) => void;
|
|
3034
|
+
/** i18n overrides for the "See more (N)" / "Show less" toggle. */
|
|
3035
|
+
labels?: PhotoGalleryLabels;
|
|
2912
3036
|
className?: string;
|
|
2913
3037
|
}
|
|
2914
|
-
declare function PhotoGallery({ photos, variant, initialVisible, onPhotoClick, className, }: PhotoGalleryProps): react_jsx_runtime.JSX.Element | null;
|
|
3038
|
+
declare function PhotoGallery({ photos, variant, initialVisible, onPhotoClick, labels, className, }: PhotoGalleryProps): react_jsx_runtime.JSX.Element | null;
|
|
2915
3039
|
|
|
2916
3040
|
type PricingTripVariant = "card" | "bar" | "compact";
|
|
2917
3041
|
/**
|
|
@@ -2935,6 +3059,16 @@ interface PricingTripProps {
|
|
|
2935
3059
|
departureTimes?: string[];
|
|
2936
3060
|
onBook?: () => void;
|
|
2937
3061
|
bookLabel?: string;
|
|
3062
|
+
/**
|
|
3063
|
+
* i18n override for the "From" price eyebrow. Rendered uppercased via CSS,
|
|
3064
|
+
* so pass natural case (e.g. "A partir de"). @default "From"
|
|
3065
|
+
*/
|
|
3066
|
+
fromLabel?: string;
|
|
3067
|
+
/**
|
|
3068
|
+
* i18n override for the "per person" price suffix, rendered after the
|
|
3069
|
+
* built-in "/ " separator (e.g. "por pessoa"). @default "per person"
|
|
3070
|
+
*/
|
|
3071
|
+
perPersonLabel?: string;
|
|
2938
3072
|
variant?: PricingTripVariant;
|
|
2939
3073
|
/**
|
|
2940
3074
|
* When true, removes rounded corners on the OUTER container that PricingTrip
|
|
@@ -2971,7 +3105,7 @@ interface PricingTripProps {
|
|
|
2971
3105
|
priceInfo?: React.ReactNode;
|
|
2972
3106
|
className?: string;
|
|
2973
3107
|
}
|
|
2974
|
-
declare function PricingTrip({ priceFrom, currency, season, departureTimes, onBook, bookLabel, variant, sharp, belowPrice, benefits, currencyEstimates, priceInfo, className, }: PricingTripProps): react_jsx_runtime.JSX.Element;
|
|
3108
|
+
declare function PricingTrip({ priceFrom, currency, season, departureTimes, onBook, bookLabel, fromLabel, perPersonLabel, variant, sharp, belowPrice, benefits, currencyEstimates, priceInfo, className, }: PricingTripProps): react_jsx_runtime.JSX.Element;
|
|
2975
3109
|
|
|
2976
3110
|
interface SiteHeaderSubItem {
|
|
2977
3111
|
label: string;
|
|
@@ -3004,11 +3138,26 @@ interface SiteHeaderProps {
|
|
|
3004
3138
|
onAccount?: () => void;
|
|
3005
3139
|
/** "overlay" = absolute (inside a relative parent); "fixed" = fixed to viewport */
|
|
3006
3140
|
position?: "overlay" | "fixed" | "static";
|
|
3141
|
+
/** i18n overrides for the header's icon-button aria-labels (English defaults). */
|
|
3142
|
+
labels?: SiteHeaderLabels;
|
|
3007
3143
|
className?: string;
|
|
3008
3144
|
}
|
|
3145
|
+
/** i18n overrides for SiteHeader's icon-button aria-labels. */
|
|
3146
|
+
interface SiteHeaderLabels {
|
|
3147
|
+
/** @default "Open menu" */
|
|
3148
|
+
openMenu?: string;
|
|
3149
|
+
/** @default "Close menu" */
|
|
3150
|
+
closeMenu?: string;
|
|
3151
|
+
/** @default "Language" */
|
|
3152
|
+
language?: string;
|
|
3153
|
+
/** @default "Search" */
|
|
3154
|
+
search?: string;
|
|
3155
|
+
/** @default "Account" */
|
|
3156
|
+
account?: string;
|
|
3157
|
+
}
|
|
3009
3158
|
declare const DEFAULT_HEADER_LINKS: SiteHeaderLink[];
|
|
3010
3159
|
declare const DEFAULT_LANGUAGES: SiteHeaderLanguage[];
|
|
3011
|
-
declare function SiteHeader({ variant, links, logoSrcLight, logoSrcDark, logoSrc, logoAlt, languages, currentLanguage, onLanguageChange, onSearch, onAccount, position, className, }: SiteHeaderProps): react_jsx_runtime.JSX.Element;
|
|
3160
|
+
declare function SiteHeader({ variant, links, logoSrcLight, logoSrcDark, logoSrc, logoAlt, languages, currentLanguage, onLanguageChange, onSearch, onAccount, position, labels, className, }: SiteHeaderProps): react_jsx_runtime.JSX.Element;
|
|
3012
3161
|
|
|
3013
3162
|
declare function ThemeToggle({ className }: {
|
|
3014
3163
|
className?: string;
|
|
@@ -3029,10 +3178,27 @@ interface TripCardCta {
|
|
|
3029
3178
|
onClick?: () => void;
|
|
3030
3179
|
href?: string;
|
|
3031
3180
|
}
|
|
3181
|
+
/** i18n overrides for TripCard's built-in English strings. */
|
|
3182
|
+
interface TripCardLabels {
|
|
3183
|
+
/** Singular night ("1 night"). @default "night" */
|
|
3184
|
+
night?: string;
|
|
3185
|
+
/** Plural nights ("3 nights"). @default "nights" */
|
|
3186
|
+
nights?: string;
|
|
3187
|
+
/** "sold-out" status badge. @default "All seats taken" */
|
|
3188
|
+
soldOut?: string;
|
|
3189
|
+
/** "trending" status badge. @default "Trending" */
|
|
3190
|
+
trending?: string;
|
|
3191
|
+
/** Favorite button aria-label when not favorited. @default "Add to favorites" */
|
|
3192
|
+
addToFavorites?: string;
|
|
3193
|
+
/** Favorite button aria-label when favorited. @default "Remove from favorites" */
|
|
3194
|
+
removeFromFavorites?: string;
|
|
3195
|
+
}
|
|
3032
3196
|
interface TripCardProps {
|
|
3033
3197
|
/** URL da imagem de capa */
|
|
3034
3198
|
image: string;
|
|
3035
3199
|
imageAlt?: string;
|
|
3200
|
+
/** i18n overrides for the card's built-in strings (night/nights, badges, fav aria). */
|
|
3201
|
+
labels?: TripCardLabels;
|
|
3036
3202
|
/** Badge de status (ex.: trending) — usado pelo variant="overlay". */
|
|
3037
3203
|
status?: TripCardStatus;
|
|
3038
3204
|
/** Número de noites */
|
|
@@ -3258,6 +3424,21 @@ interface TripDuration {
|
|
|
3258
3424
|
/** Number of nights — defaults to days - 1 */
|
|
3259
3425
|
nights?: number;
|
|
3260
3426
|
}
|
|
3427
|
+
/** i18n overrides for the hero meta row + image-carousel controls. */
|
|
3428
|
+
interface TripHeaderLabels {
|
|
3429
|
+
/** Singular night ("1 night"). @default "night" */
|
|
3430
|
+
night?: string;
|
|
3431
|
+
/** Plural nights ("3 nights"). @default "nights" */
|
|
3432
|
+
nights?: string;
|
|
3433
|
+
/** Singular day ("1 day"). @default "day" */
|
|
3434
|
+
day?: string;
|
|
3435
|
+
/** Plural days ("4 days"). @default "days" */
|
|
3436
|
+
days?: string;
|
|
3437
|
+
/** aria-label for the previous hero image arrow. @default "Previous image" */
|
|
3438
|
+
previousImage?: string;
|
|
3439
|
+
/** aria-label for the next hero image arrow. @default "Next image" */
|
|
3440
|
+
nextImage?: string;
|
|
3441
|
+
}
|
|
3261
3442
|
interface TripHeaderChip {
|
|
3262
3443
|
label: string;
|
|
3263
3444
|
href?: string;
|
|
@@ -3278,6 +3459,10 @@ interface TripHeaderProps {
|
|
|
3278
3459
|
destination?: string;
|
|
3279
3460
|
/** Duration shown with a moon/sun icon */
|
|
3280
3461
|
duration?: TripDuration;
|
|
3462
|
+
/** Group size shown with a people icon (e.g. "Private · up to ~8–10 per guide") */
|
|
3463
|
+
groupSize?: string;
|
|
3464
|
+
/** i18n overrides for the duration words + image-carousel aria labels. */
|
|
3465
|
+
labels?: TripHeaderLabels;
|
|
3281
3466
|
/** Legacy tagline — shown only when destination/duration are not provided */
|
|
3282
3467
|
tagline?: string;
|
|
3283
3468
|
/** Pill-shaped category chips rendered under the meta row (e.g. related tour categories). */
|
|
@@ -3300,7 +3485,7 @@ interface TripHeaderProps {
|
|
|
3300
3485
|
uiVariant?: "v1" | "v2";
|
|
3301
3486
|
className?: string;
|
|
3302
3487
|
}
|
|
3303
|
-
declare function TripHeader({ images, videoUrl, title, breadcrumb, destination, duration, tagline, chips, belowMeta, siteHeader, uiVariant, className, }: TripHeaderProps): react_jsx_runtime.JSX.Element;
|
|
3488
|
+
declare function TripHeader({ images, videoUrl, title, breadcrumb, destination, duration, groupSize, labels, tagline, chips, belowMeta, siteHeader, uiVariant, className, }: TripHeaderProps): react_jsx_runtime.JSX.Element;
|
|
3304
3489
|
|
|
3305
3490
|
interface TripHighlight {
|
|
3306
3491
|
label: string;
|
|
@@ -3412,6 +3597,34 @@ interface TripPageLabels {
|
|
|
3412
3597
|
faq?: string;
|
|
3413
3598
|
/** Section nav + section heading: "What our guests think" */
|
|
3414
3599
|
reviews?: string;
|
|
3600
|
+
/** Expand control on the FAQ list + photo galleries: "See more" (count appended). */
|
|
3601
|
+
seeMore?: string;
|
|
3602
|
+
/** Collapse control on the FAQ list + photo galleries: "Show less". */
|
|
3603
|
+
showLess?: string;
|
|
3604
|
+
/** Singular night ("1 night"). */
|
|
3605
|
+
night?: string;
|
|
3606
|
+
/** Plural nights ("3 nights"). */
|
|
3607
|
+
nights?: string;
|
|
3608
|
+
/** Singular day ("1 day"). */
|
|
3609
|
+
day?: string;
|
|
3610
|
+
/** Plural days ("4 days"). */
|
|
3611
|
+
days?: string;
|
|
3612
|
+
/** aria-label for the previous hero image arrow. */
|
|
3613
|
+
previousImage?: string;
|
|
3614
|
+
/** aria-label for the next hero image arrow. */
|
|
3615
|
+
nextImage?: string;
|
|
3616
|
+
/** Badge on a transfer itinerary step: "Transfer". */
|
|
3617
|
+
transfer?: string;
|
|
3618
|
+
/** Meeting-point type eyebrow when type = "activity": "Activity location". */
|
|
3619
|
+
meetingPointActivity?: string;
|
|
3620
|
+
/** Meeting-point type eyebrow when type = "alternative": "Alternative meeting point". */
|
|
3621
|
+
meetingPointAlternative?: string;
|
|
3622
|
+
/** aria-label for the lightbox close button. */
|
|
3623
|
+
galleryClose?: string;
|
|
3624
|
+
/** aria-label for the lightbox previous-photo button. */
|
|
3625
|
+
galleryPrevious?: string;
|
|
3626
|
+
/** aria-label for the lightbox next-photo button. */
|
|
3627
|
+
galleryNext?: string;
|
|
3415
3628
|
}
|
|
3416
3629
|
|
|
3417
3630
|
interface TripPageProps {
|
|
@@ -3422,6 +3635,8 @@ interface TripPageProps {
|
|
|
3422
3635
|
destination?: string;
|
|
3423
3636
|
/** Duration shown with moon/sun icons in the hero */
|
|
3424
3637
|
duration?: TripDuration;
|
|
3638
|
+
/** Group size shown with a people icon in the hero meta row */
|
|
3639
|
+
groupSize?: string;
|
|
3425
3640
|
images: string[];
|
|
3426
3641
|
/** Optional video URL — plays as background instead of the image carousel */
|
|
3427
3642
|
videoUrl?: string;
|
|
@@ -3475,6 +3690,12 @@ interface TripPageProps {
|
|
|
3475
3690
|
* `food` omitted, the accordion still opens to show just the photos.
|
|
3476
3691
|
*/
|
|
3477
3692
|
foodGallery?: PhotoGalleryPhoto[];
|
|
3693
|
+
/**
|
|
3694
|
+
* Visual layout for the food gallery — the food equivalent of
|
|
3695
|
+
* {@link accommodationGalleryVariant}. Independent of the accommodation
|
|
3696
|
+
* gallery so the two sections never share a layout by accident. @default "gridCompact"
|
|
3697
|
+
*/
|
|
3698
|
+
foodGalleryVariant?: PhotoGalleryVariant;
|
|
3478
3699
|
termsAndConditions?: React.ReactNode;
|
|
3479
3700
|
meetingPoints?: TripMeetingPoint[];
|
|
3480
3701
|
/**
|
|
@@ -3527,6 +3748,24 @@ interface TripPageProps {
|
|
|
3527
3748
|
priceInfo?: React.ReactNode;
|
|
3528
3749
|
onBook?: () => void;
|
|
3529
3750
|
bookLabel?: string;
|
|
3751
|
+
/**
|
|
3752
|
+
* Fired when the trip-page inquiry form (BookingForm) is submitted, with the
|
|
3753
|
+
* full set of entered values. Distinct from `onBook` (the pricing card's
|
|
3754
|
+
* "Check availability" CTA): on trips that render the form, the CTA scrolls
|
|
3755
|
+
* to the form and only this callback carries the lead's details.
|
|
3756
|
+
*/
|
|
3757
|
+
onBookingSubmit?: (values: BookingFormValues) => void;
|
|
3758
|
+
/** Disables the inquiry form's submit button and shows its "Sending…" state. */
|
|
3759
|
+
bookingLoading?: boolean;
|
|
3760
|
+
/** Initial values for the inquiry form — used to geo-default the country and
|
|
3761
|
+
* to prefill the visitor's remembered details from a previous enquiry. */
|
|
3762
|
+
bookingDefaults?: Partial<BookingFormValues>;
|
|
3763
|
+
/** i18n overrides for the trip-page inquiry form (BookingForm). */
|
|
3764
|
+
bookingLabels?: BookingFormLabels;
|
|
3765
|
+
/** i18n override for the PricingTrip "From" price eyebrow. @default "From" */
|
|
3766
|
+
fromLabel?: string;
|
|
3767
|
+
/** i18n override for the PricingTrip "per person" price suffix. @default "per person" */
|
|
3768
|
+
perPersonLabel?: string;
|
|
3530
3769
|
/**
|
|
3531
3770
|
* Render an overlay SiteHeader inside the hero. Accepts:
|
|
3532
3771
|
* - `boolean` — minimal: default link list (styleguide usage).
|
|
@@ -3543,7 +3782,7 @@ interface TripPageProps {
|
|
|
3543
3782
|
features?: Record<string, boolean>;
|
|
3544
3783
|
className?: string;
|
|
3545
3784
|
}
|
|
3546
|
-
declare function TripPage({ title, tagline, destination, duration, images, videoUrl, breadcrumb, chips, highlights, howToGetThere, recommendedFor, overview, overviewHighlights, itinerary, itineraryDays, gallery, included, notIncluded, whatToBring, weather, optionalExtras, accommodation, accommodationGallery, accommodationGalleryVariant, whenItOperates, food, foodGallery, termsAndConditions, meetingPoints, meetingPoint, faqs, faqInitialCount, sectionIcons, labels, reviews, trustpilot, trustpilotMini, trustpilotHero, priceFrom, currency, season, departureTimes, benefits, currencyEstimates, priceInfo, onBook, bookLabel, siteHeader, uiVariant, features, className, }: TripPageProps): react_jsx_runtime.JSX.Element;
|
|
3785
|
+
declare function TripPage({ title, tagline, destination, duration, groupSize, images, videoUrl, breadcrumb, chips, highlights, howToGetThere, recommendedFor, overview, overviewHighlights, itinerary, itineraryDays, gallery, included, notIncluded, whatToBring, weather, optionalExtras, accommodation, accommodationGallery, accommodationGalleryVariant, whenItOperates, food, foodGallery, foodGalleryVariant, termsAndConditions, meetingPoints, meetingPoint, faqs, faqInitialCount, sectionIcons, labels, reviews, trustpilot, trustpilotMini, trustpilotHero, priceFrom, currency, season, departureTimes, benefits, currencyEstimates, priceInfo, onBook, onBookingSubmit, bookingLoading, bookingDefaults, bookingLabels, bookLabel, fromLabel, perPersonLabel, siteHeader, uiVariant, features, className, }: TripPageProps): react_jsx_runtime.JSX.Element;
|
|
3547
3786
|
|
|
3548
3787
|
interface Category2Trip extends TripCardProps {
|
|
3549
3788
|
/** Marca a trip como featured — sobe para o topo do grid principal. */
|
|
@@ -3603,6 +3842,12 @@ interface CategoryPage2Props {
|
|
|
3603
3842
|
* {@link TripSiteHeaderConfig} to wire languages + onLanguageChange.
|
|
3604
3843
|
*/
|
|
3605
3844
|
siteHeader?: boolean | SiteHeaderLink[] | TripSiteHeaderConfig;
|
|
3845
|
+
/**
|
|
3846
|
+
* Optional node pinned to the top-right of the hero content (below the
|
|
3847
|
+
* overlay header, aligned with the breadcrumb/title). Used e.g. for a
|
|
3848
|
+
* Browse/Compare/Enquire mode switcher.
|
|
3849
|
+
*/
|
|
3850
|
+
heroRightSlot?: React.ReactNode;
|
|
3606
3851
|
popularTours?: Category2Trip[];
|
|
3607
3852
|
popularToursTitle?: string;
|
|
3608
3853
|
popularToursEyebrow?: string;
|
|
@@ -3614,6 +3859,13 @@ interface CategoryPage2Props {
|
|
|
3614
3859
|
defaultSort?: string;
|
|
3615
3860
|
/** Number of trips shown before the "Load more" button appears. @default 15 */
|
|
3616
3861
|
tripsInitialCount?: number;
|
|
3862
|
+
/**
|
|
3863
|
+
* When provided, replaces the default filter-sidebar + trip-grid + sort
|
|
3864
|
+
* section entirely (the section heading still renders). Used to swap in an
|
|
3865
|
+
* external selectable grid (e.g. the favourites compare/enquire surface)
|
|
3866
|
+
* without touching the rest of the page.
|
|
3867
|
+
*/
|
|
3868
|
+
tripListingSlot?: React.ReactNode;
|
|
3617
3869
|
trustpilot?: TrustpilotWidgetConfig;
|
|
3618
3870
|
reviewsTitle?: string;
|
|
3619
3871
|
/** Optional subtitle/intro paragraph below the reviews H2. */
|
|
@@ -3638,9 +3890,21 @@ interface CategoryPage2Props {
|
|
|
3638
3890
|
faqInitialCount?: number;
|
|
3639
3891
|
gallery?: (string | PhotoGalleryPhoto)[];
|
|
3640
3892
|
galleryTitle?: string;
|
|
3893
|
+
/** Trips-list expand button: "Load more" (count appended). */
|
|
3894
|
+
loadMoreLabel?: string;
|
|
3895
|
+
/** Expand/collapse collapse button: "Show less". */
|
|
3896
|
+
showLessLabel?: string;
|
|
3897
|
+
/** FAQ expand button: "See more" (count appended). */
|
|
3898
|
+
seeMoreLabel?: string;
|
|
3899
|
+
/** Blog "View all posts" link (when no travel-guide href). */
|
|
3900
|
+
viewAllPostsLabel?: string;
|
|
3901
|
+
/** i18n overrides for the trip cards (night/nights, badges, fav aria). */
|
|
3902
|
+
cardLabels?: TripCardLabels;
|
|
3903
|
+
/** i18n overrides for the filter/sort panel controls. */
|
|
3904
|
+
filterLabels?: FilterPanelLabels;
|
|
3641
3905
|
className?: string;
|
|
3642
3906
|
}
|
|
3643
|
-
declare function CategoryPage2({ title, intro, heroImage, videoUrl, trustpilotMini, breadcrumb, siteHeader, popularTours, popularToursTitle, popularToursEyebrow, trips, tripsTitle, tripsEyebrow, filterGroups, sortOptions, defaultSort, tripsInitialCount, trustpilot, reviewsTitle, reviewsSubtitle, blogPosts, aboutTitle, aboutContent, blogIntro, travelGuideHref, travelGuideLabel, blogPostsTitle, blogPostsViewAllHref, faqs, faqsTitle, faqInitialCount, gallery, galleryTitle, className, }: CategoryPage2Props): react_jsx_runtime.JSX.Element;
|
|
3907
|
+
declare function CategoryPage2({ title, intro, heroImage, videoUrl, trustpilotMini, breadcrumb, siteHeader, heroRightSlot, popularTours, popularToursTitle, popularToursEyebrow, trips, tripsTitle, tripsEyebrow, filterGroups, sortOptions, defaultSort, tripsInitialCount, tripListingSlot, trustpilot, reviewsTitle, reviewsSubtitle, blogPosts, aboutTitle, aboutContent, blogIntro, travelGuideHref, travelGuideLabel, blogPostsTitle, blogPostsViewAllHref, faqs, faqsTitle, faqInitialCount, gallery, galleryTitle, loadMoreLabel, showLessLabel, seeMoreLabel, viewAllPostsLabel, cardLabels, filterLabels, className, }: CategoryPage2Props): react_jsx_runtime.JSX.Element;
|
|
3644
3908
|
|
|
3645
3909
|
type ActivityCardSize = "sm" | "md" | "lg";
|
|
3646
3910
|
interface ActivityCardProps {
|
|
@@ -4339,4 +4603,501 @@ interface StickyBookingCardProps {
|
|
|
4339
4603
|
}
|
|
4340
4604
|
declare function StickyBookingCard({ currentPrice, deposit, spotsRemaining, mode, onPrimary, note, className, }: StickyBookingCardProps): react_jsx_runtime.JSX.Element;
|
|
4341
4605
|
|
|
4342
|
-
|
|
4606
|
+
declare const chipVariants: (props?: ({
|
|
4607
|
+
variant?: "outline" | "solid" | "glass" | null | undefined;
|
|
4608
|
+
size?: "sm" | "md" | "lg" | null | undefined;
|
|
4609
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
4610
|
+
interface ChipProps extends Omit<React.HTMLAttributes<HTMLElement>, "color">, VariantProps<typeof chipVariants> {
|
|
4611
|
+
/** When provided, renders an `<a>` tag instead of a `<span>`. */
|
|
4612
|
+
href?: string;
|
|
4613
|
+
}
|
|
4614
|
+
declare const Chip: React.ForwardRefExoticComponent<ChipProps & React.RefAttributes<HTMLElement>>;
|
|
4615
|
+
|
|
4616
|
+
/**
|
|
4617
|
+
* Rich configuration for the overlay `<SiteHeader>` rendered inside the
|
|
4618
|
+
* hero. Accepts everything `<SiteHeader>` accepts EXCEPT `position` and
|
|
4619
|
+
* `className`: position is hardcoded to `"overlay"` so the header scrolls
|
|
4620
|
+
* away with the hero, and the hero composes its own layout around it.
|
|
4621
|
+
*/
|
|
4622
|
+
type HomeSiteHeaderConfig = Omit<SiteHeaderProps, "position" | "className">;
|
|
4623
|
+
interface HomeHeaderCta {
|
|
4624
|
+
label: string;
|
|
4625
|
+
href?: string;
|
|
4626
|
+
onClick?: () => void;
|
|
4627
|
+
}
|
|
4628
|
+
interface HomeHeaderRating {
|
|
4629
|
+
/** Qualifier shown before the stars — e.g. "Excellent". */
|
|
4630
|
+
label?: string;
|
|
4631
|
+
/** Filled stars out of 5. Supports halves (e.g. 4.5). @default 5 */
|
|
4632
|
+
stars?: number;
|
|
4633
|
+
/** Provider name shown after the stars — e.g. "Trustpilot". */
|
|
4634
|
+
provider?: string;
|
|
4635
|
+
/** Makes the whole widget a link. */
|
|
4636
|
+
href?: string;
|
|
4637
|
+
}
|
|
4638
|
+
interface HomeHeaderPressLogo {
|
|
4639
|
+
/** Logo image URL. When omitted, `label` renders as styled text. */
|
|
4640
|
+
src?: string;
|
|
4641
|
+
/** Text fallback / accessible label. */
|
|
4642
|
+
label?: string;
|
|
4643
|
+
alt?: string;
|
|
4644
|
+
/** When provided, the logo becomes a link (e.g. to the press article). */
|
|
4645
|
+
href?: string;
|
|
4646
|
+
}
|
|
4647
|
+
interface HomeHeaderProps {
|
|
4648
|
+
/** Hero image array — shows a slow crossfade carousel when more than one. */
|
|
4649
|
+
images: string[];
|
|
4650
|
+
/** Optional video URL — plays as background instead of the image carousel. */
|
|
4651
|
+
videoUrl?: string;
|
|
4652
|
+
/** Small eyebrow line rendered above the title. */
|
|
4653
|
+
eyebrow?: string;
|
|
4654
|
+
/** Main hero headline. */
|
|
4655
|
+
title: string;
|
|
4656
|
+
/** Subtitle rendered below the title. */
|
|
4657
|
+
subtitle?: string;
|
|
4658
|
+
/** Primary call-to-action button below the subtitle. */
|
|
4659
|
+
cta?: HomeHeaderCta;
|
|
4660
|
+
/**
|
|
4661
|
+
* Live Trustpilot TrustBox shown under the CTA. Pass `true` for the
|
|
4662
|
+
* PlanetaEXO defaults, or a {@link TrustpilotWidgetConfig} to override the
|
|
4663
|
+
* business unit / template / theme. Takes precedence over `rating`.
|
|
4664
|
+
*/
|
|
4665
|
+
trustpilot?: boolean | TrustpilotWidgetConfig;
|
|
4666
|
+
/** Static, mock rating widget — fallback when `trustpilot` is not set. */
|
|
4667
|
+
rating?: HomeHeaderRating;
|
|
4668
|
+
/** "In the press" logo strip pinned to the bottom of the hero. */
|
|
4669
|
+
pressLogos?: HomeHeaderPressLogo[];
|
|
4670
|
+
/** Label shown beside the press logos. @default "In the press" */
|
|
4671
|
+
pressLabel?: string;
|
|
4672
|
+
/** When provided, the press label becomes a link (e.g. to a press page). */
|
|
4673
|
+
pressLabelHref?: string;
|
|
4674
|
+
/**
|
|
4675
|
+
* Render an overlay `<SiteHeader>` inside the hero. Accepts:
|
|
4676
|
+
* - `boolean` — minimal: renders the header with the default link list.
|
|
4677
|
+
* - `SiteHeaderLink[]` — a custom links array.
|
|
4678
|
+
* - {@link HomeSiteHeaderConfig} — full SiteHeaderProps minus
|
|
4679
|
+
* `position`/`className` (e.g. to wire languages + onLanguageChange).
|
|
4680
|
+
*/
|
|
4681
|
+
siteHeader?: boolean | SiteHeaderLink[] | HomeSiteHeaderConfig;
|
|
4682
|
+
/**
|
|
4683
|
+
* Content alignment variant.
|
|
4684
|
+
* - `"center"` — hero copy centered (homepage default).
|
|
4685
|
+
* - `"left"` — hero copy aligned to the left edge.
|
|
4686
|
+
* @default "center"
|
|
4687
|
+
*/
|
|
4688
|
+
align?: "center" | "left";
|
|
4689
|
+
className?: string;
|
|
4690
|
+
}
|
|
4691
|
+
declare function HomeHeader({ images, videoUrl, eyebrow, title, subtitle, cta, trustpilot, rating, pressLogos, pressLabel, pressLabelHref, siteHeader, align, className, }: HomeHeaderProps): react_jsx_runtime.JSX.Element;
|
|
4692
|
+
|
|
4693
|
+
interface ExploreCard {
|
|
4694
|
+
/** Label overlaid at the bottom of the card (e.g. "Europe"). */
|
|
4695
|
+
label: string;
|
|
4696
|
+
/** Card background image URL. Optional in the bento layout — omit it and
|
|
4697
|
+
* pass `gradient` for a textless gradient tile (e.g. lesser destinations). */
|
|
4698
|
+
image?: string;
|
|
4699
|
+
/** Optional link — makes the whole card clickable. */
|
|
4700
|
+
href?: string;
|
|
4701
|
+
/** Accessible alt text — defaults to `label`. */
|
|
4702
|
+
imageAlt?: string;
|
|
4703
|
+
/** Pill badge in the top-right corner — e.g. "22 trips", "Safaris". */
|
|
4704
|
+
tripCount?: string;
|
|
4705
|
+
/** Short blurb revealed on hover under the title. */
|
|
4706
|
+
description?: string;
|
|
4707
|
+
/** Accent "go" link under the description — e.g. "Explore Amazon". */
|
|
4708
|
+
ctaLabel?: string;
|
|
4709
|
+
/** Tile footprint in the bento grid. @default "normal" */
|
|
4710
|
+
size?: "featured" | "tall" | "wide" | "normal";
|
|
4711
|
+
/** Tailwind gradient classes for an image-less tile — e.g.
|
|
4712
|
+
* "from-amber-600 to-amber-950". Used only when `image` is omitted. */
|
|
4713
|
+
gradient?: string;
|
|
4714
|
+
}
|
|
4715
|
+
interface ExploreTab {
|
|
4716
|
+
/** Stable id used to track the active tab. */
|
|
4717
|
+
id: string;
|
|
4718
|
+
/** Tab label (e.g. "Destinations"). */
|
|
4719
|
+
label: string;
|
|
4720
|
+
/** Cards shown when this tab is active. */
|
|
4721
|
+
cards: ExploreCard[];
|
|
4722
|
+
/** Optional per-tab "View All" link — overrides the component-level one. */
|
|
4723
|
+
viewAllHref?: string;
|
|
4724
|
+
}
|
|
4725
|
+
interface AdventureExplorerProps {
|
|
4726
|
+
/** Tabs, each with its own set of cards. */
|
|
4727
|
+
tabs: ExploreTab[];
|
|
4728
|
+
/** Small accent eyebrow above the heading (e.g. "Start exploring"). */
|
|
4729
|
+
eyebrow?: string;
|
|
4730
|
+
/** Serif section heading rendered above the filter (e.g. "Find your wilderness"). */
|
|
4731
|
+
heading?: string;
|
|
4732
|
+
/** Supporting line under the heading. */
|
|
4733
|
+
subheading?: string;
|
|
4734
|
+
/** Initially active tab id — defaults to the first tab. */
|
|
4735
|
+
defaultTabId?: string;
|
|
4736
|
+
/** Label for the "View All" CTA. Pass "" to hide it. @default "View All Adventures" */
|
|
4737
|
+
viewAllLabel?: string;
|
|
4738
|
+
/** Href for the "View All" CTA (per-tab `viewAllHref` takes precedence). */
|
|
4739
|
+
viewAllHref?: string;
|
|
4740
|
+
/**
|
|
4741
|
+
* Surface the explorer sits on.
|
|
4742
|
+
* - `"dark"` — dark section, white tab labels (homepage look).
|
|
4743
|
+
* - `"light"` — light surface, dark tab labels.
|
|
4744
|
+
* @default "dark"
|
|
4745
|
+
*/
|
|
4746
|
+
theme?: "dark" | "light";
|
|
4747
|
+
/**
|
|
4748
|
+
* Card arrangement.
|
|
4749
|
+
* - `"carousel"` — horizontal rail of portrait tiles (default).
|
|
4750
|
+
* - `"bento"` — masonry-style grid with variable-span tiles, trip-count
|
|
4751
|
+
* badges and hover-revealed descriptions.
|
|
4752
|
+
* @default "carousel"
|
|
4753
|
+
*/
|
|
4754
|
+
layout?: "carousel" | "bento";
|
|
4755
|
+
/**
|
|
4756
|
+
* Bento layout only — cap how many cards render as tiles. Any cards beyond
|
|
4757
|
+
* the limit collapse into a minimal "more" links row below the grid
|
|
4758
|
+
* (label + trip count). Omit to show every card as a tile.
|
|
4759
|
+
*/
|
|
4760
|
+
bentoLimit?: number;
|
|
4761
|
+
/**
|
|
4762
|
+
* Eyebrow label for the overflow "more" row (bento + `bentoLimit`).
|
|
4763
|
+
* @default "More wild places"
|
|
4764
|
+
*/
|
|
4765
|
+
moreLabel?: string;
|
|
4766
|
+
className?: string;
|
|
4767
|
+
}
|
|
4768
|
+
declare function AdventureExplorer({ tabs, eyebrow, heading, subheading, defaultTabId, viewAllLabel, viewAllHref, theme, layout, bentoLimit, moreLabel, className, }: AdventureExplorerProps): react_jsx_runtime.JSX.Element;
|
|
4769
|
+
|
|
4770
|
+
interface USPItem {
|
|
4771
|
+
/** Icon element — any SVG-based icon (e.g. a lucide `<HeartIcon />`).
|
|
4772
|
+
* It inherits the accent colour and is sized by the component.
|
|
4773
|
+
* Ignored by the `"numbered"` variant, which shows an index instead. */
|
|
4774
|
+
icon?: React.ReactNode;
|
|
4775
|
+
/** Short, bold heading (rendered uppercase). */
|
|
4776
|
+
title: string;
|
|
4777
|
+
/** Supporting copy. */
|
|
4778
|
+
description: string;
|
|
4779
|
+
}
|
|
4780
|
+
interface USPProps {
|
|
4781
|
+
/** The value props / selling points. */
|
|
4782
|
+
items: USPItem[];
|
|
4783
|
+
/** Optional section heading above the grid. */
|
|
4784
|
+
heading?: string;
|
|
4785
|
+
/** Optional supporting line under the heading. */
|
|
4786
|
+
subheading?: string;
|
|
4787
|
+
/** Columns on large screens. Defaults to the item count (clamped 2–4). */
|
|
4788
|
+
columns?: 2 | 3 | 4;
|
|
4789
|
+
/**
|
|
4790
|
+
* Layout variant.
|
|
4791
|
+
* - `"minimal"` — centered icon + text, no container (the default look).
|
|
4792
|
+
* - `"card"` — each item boxed in a card with an icon chip.
|
|
4793
|
+
* - `"inline"` — icon on the left, text on the right, left-aligned.
|
|
4794
|
+
* - `"numbered"` — boxed cards with an italic index (01, 02…) instead of an
|
|
4795
|
+
* icon; left-aligned, title-case headings. No `icon` needed.
|
|
4796
|
+
* @default "minimal"
|
|
4797
|
+
*/
|
|
4798
|
+
variant?: "minimal" | "card" | "inline" | "numbered";
|
|
4799
|
+
/**
|
|
4800
|
+
* Surface the section sits on.
|
|
4801
|
+
* - `"light"` — light grey surface, dark text (the screenshot look).
|
|
4802
|
+
* - `"dark"` — dark surface, light text.
|
|
4803
|
+
* @default "light"
|
|
4804
|
+
*/
|
|
4805
|
+
theme?: "light" | "dark";
|
|
4806
|
+
className?: string;
|
|
4807
|
+
}
|
|
4808
|
+
declare function USP({ items, heading, subheading, columns, variant, theme, className, }: USPProps): react_jsx_runtime.JSX.Element;
|
|
4809
|
+
|
|
4810
|
+
interface SiteFooterChip {
|
|
4811
|
+
label: string;
|
|
4812
|
+
href: string;
|
|
4813
|
+
}
|
|
4814
|
+
interface SiteFooterLink {
|
|
4815
|
+
label: string;
|
|
4816
|
+
href: string;
|
|
4817
|
+
}
|
|
4818
|
+
interface SiteFooterLanguage {
|
|
4819
|
+
/** Locale code shown as the trigger label — e.g. "EN", "NL". */
|
|
4820
|
+
code: string;
|
|
4821
|
+
/** Human-friendly name shown next to the code in the dropdown. */
|
|
4822
|
+
label: string;
|
|
4823
|
+
}
|
|
4824
|
+
interface SiteFooterBadge {
|
|
4825
|
+
/** Image src. Optional when `node` is provided. */
|
|
4826
|
+
src?: string;
|
|
4827
|
+
alt: string;
|
|
4828
|
+
href?: string;
|
|
4829
|
+
/** Image height in px. Defaults to 56. Ignored when `node` is provided. */
|
|
4830
|
+
height?: number;
|
|
4831
|
+
/** Override with a custom React node (e.g. inline SVG). */
|
|
4832
|
+
node?: React.ReactNode;
|
|
4833
|
+
}
|
|
4834
|
+
interface SiteFooterSocial {
|
|
4835
|
+
network: "facebook" | "instagram" | "linkedin" | "youtube" | "twitter";
|
|
4836
|
+
href: string;
|
|
4837
|
+
label?: string;
|
|
4838
|
+
}
|
|
4839
|
+
interface SiteFooterAddress {
|
|
4840
|
+
title: string;
|
|
4841
|
+
lines: string[];
|
|
4842
|
+
}
|
|
4843
|
+
type SiteFooterVariant = "light" | "dark";
|
|
4844
|
+
interface SiteFooterProps {
|
|
4845
|
+
variant?: SiteFooterVariant;
|
|
4846
|
+
/** Brand name shown when no logo is rendered, used in copyright fallback. */
|
|
4847
|
+
brandTitle?: string;
|
|
4848
|
+
/** Logo used on the dark variant. Defaults to the white PlanetaEXO mark. */
|
|
4849
|
+
logoSrcLight?: string;
|
|
4850
|
+
/** Logo used on the light variant. Defaults to the green PlanetaEXO mark. */
|
|
4851
|
+
logoSrcDark?: string;
|
|
4852
|
+
/** Single-logo override — applies to both variants when set. */
|
|
4853
|
+
logoSrc?: string;
|
|
4854
|
+
logoAlt?: string;
|
|
4855
|
+
/** Optional href wrapping the logo. */
|
|
4856
|
+
logoHref?: string;
|
|
4857
|
+
/** Longer disclaimer / legal copy under the logo. */
|
|
4858
|
+
brandDescription?: React.ReactNode;
|
|
4859
|
+
/** Member / association badges rendered under the description. */
|
|
4860
|
+
badges?: SiteFooterBadge[];
|
|
4861
|
+
languages?: SiteFooterLanguage[];
|
|
4862
|
+
currentLanguage?: string;
|
|
4863
|
+
onLanguageChange?: (code: string) => void;
|
|
4864
|
+
address?: SiteFooterAddress;
|
|
4865
|
+
phone?: string;
|
|
4866
|
+
email?: string;
|
|
4867
|
+
socials?: SiteFooterSocial[];
|
|
4868
|
+
themesTitle?: string;
|
|
4869
|
+
themes?: SiteFooterChip[];
|
|
4870
|
+
destinationsTitle?: string;
|
|
4871
|
+
destinations?: SiteFooterChip[];
|
|
4872
|
+
destinationsMore?: {
|
|
4873
|
+
label: string;
|
|
4874
|
+
href: string;
|
|
4875
|
+
};
|
|
4876
|
+
pagesTitle?: string;
|
|
4877
|
+
pages?: SiteFooterLink[];
|
|
4878
|
+
/** Highlighted CTA under the Pages column — e.g. partnerships email. */
|
|
4879
|
+
cta?: {
|
|
4880
|
+
title: string;
|
|
4881
|
+
label: string;
|
|
4882
|
+
href: string;
|
|
4883
|
+
};
|
|
4884
|
+
copyright?: string;
|
|
4885
|
+
legalLinks?: SiteFooterLink[];
|
|
4886
|
+
className?: string;
|
|
4887
|
+
}
|
|
4888
|
+
declare const DEFAULT_FOOTER_THEMES: SiteFooterChip[];
|
|
4889
|
+
declare const DEFAULT_FOOTER_DESTINATIONS: SiteFooterChip[];
|
|
4890
|
+
declare const DEFAULT_FOOTER_PAGES: SiteFooterLink[];
|
|
4891
|
+
declare const DEFAULT_FOOTER_LEGAL: SiteFooterLink[];
|
|
4892
|
+
declare const DEFAULT_FOOTER_LANGUAGES: SiteFooterLanguage[];
|
|
4893
|
+
declare const DEFAULT_FOOTER_SOCIALS: SiteFooterSocial[];
|
|
4894
|
+
declare const DEFAULT_FOOTER_BADGES: SiteFooterBadge[];
|
|
4895
|
+
declare function SiteFooter({ variant, brandTitle, logoSrcLight, logoSrcDark, logoSrc, logoAlt, logoHref, brandDescription, badges, languages, currentLanguage, onLanguageChange, address, phone, email, socials, themesTitle, themes, destinationsTitle, destinations, destinationsMore, pagesTitle, pages, cta, copyright, legalLinks, className, }: SiteFooterProps): react_jsx_runtime.JSX.Element;
|
|
4896
|
+
|
|
4897
|
+
interface CtaBannerCta {
|
|
4898
|
+
label: string;
|
|
4899
|
+
href?: string;
|
|
4900
|
+
onClick?: () => void;
|
|
4901
|
+
}
|
|
4902
|
+
interface CtaBannerProps {
|
|
4903
|
+
/** Full-bleed background image URL. */
|
|
4904
|
+
image: string;
|
|
4905
|
+
/** Accessible alt text for the background image. @default "" (decorative) */
|
|
4906
|
+
imageAlt?: string;
|
|
4907
|
+
/** Main headline — rendered uppercase in the heading font. */
|
|
4908
|
+
title: string;
|
|
4909
|
+
/**
|
|
4910
|
+
* Subtitle below the title. Pass a single string for a static line, or an
|
|
4911
|
+
* array to cycle through phrases with a slow crossfade (homepage behaviour:
|
|
4912
|
+
* "make a positive impact" → "travel sustainably" → "support local communities").
|
|
4913
|
+
*/
|
|
4914
|
+
subtitle?: string | string[];
|
|
4915
|
+
/** Underlined call-to-action link below the subtitle. */
|
|
4916
|
+
cta?: CtaBannerCta;
|
|
4917
|
+
/** Milliseconds each rotating subtitle stays visible. @default 3000 */
|
|
4918
|
+
rotateInterval?: number;
|
|
4919
|
+
/**
|
|
4920
|
+
* Pin the background while scrolling (parallax). Applied from `sm` up only —
|
|
4921
|
+
* `background-attachment: fixed` is unreliable on mobile. @default true
|
|
4922
|
+
*/
|
|
4923
|
+
parallax?: boolean;
|
|
4924
|
+
/** Dark overlay opacity over the image, 0–100. @default 35 */
|
|
4925
|
+
overlayOpacity?: number;
|
|
4926
|
+
className?: string;
|
|
4927
|
+
}
|
|
4928
|
+
declare function CtaBanner({ image, imageAlt, title, subtitle, cta, rotateInterval, parallax, overlayOpacity, className, }: CtaBannerProps): react_jsx_runtime.JSX.Element;
|
|
4929
|
+
|
|
4930
|
+
interface BlogJournalFeature {
|
|
4931
|
+
image: string;
|
|
4932
|
+
imageAlt?: string;
|
|
4933
|
+
/** Category pill over the image — e.g. "Destinations". */
|
|
4934
|
+
tag?: string;
|
|
4935
|
+
/** Publish date — e.g. "May 22, 2026". */
|
|
4936
|
+
date?: string;
|
|
4937
|
+
title: string;
|
|
4938
|
+
excerpt?: string;
|
|
4939
|
+
href?: string;
|
|
4940
|
+
/** Whether the link opens in a new tab. */
|
|
4941
|
+
external?: boolean;
|
|
4942
|
+
/** Read-link label. @default "Read the guide" */
|
|
4943
|
+
ctaLabel?: string;
|
|
4944
|
+
}
|
|
4945
|
+
interface BlogJournalPost {
|
|
4946
|
+
image: string;
|
|
4947
|
+
imageAlt?: string;
|
|
4948
|
+
/** Category / kicker — e.g. "Travel guide". */
|
|
4949
|
+
category?: string;
|
|
4950
|
+
date?: string;
|
|
4951
|
+
title: string;
|
|
4952
|
+
href?: string;
|
|
4953
|
+
external?: boolean;
|
|
4954
|
+
}
|
|
4955
|
+
interface BlogJournalProps {
|
|
4956
|
+
/** Eyebrow above the heading — e.g. "The journal". */
|
|
4957
|
+
eyebrow?: string;
|
|
4958
|
+
/** Section heading. */
|
|
4959
|
+
title?: string;
|
|
4960
|
+
/** Supporting line under the heading. */
|
|
4961
|
+
subtitle?: string;
|
|
4962
|
+
/** Right-aligned "view all" link. */
|
|
4963
|
+
link?: {
|
|
4964
|
+
label: string;
|
|
4965
|
+
href?: string;
|
|
4966
|
+
};
|
|
4967
|
+
/** Large featured post (left column). */
|
|
4968
|
+
feature: BlogJournalFeature;
|
|
4969
|
+
/** Compact list of posts (right column). */
|
|
4970
|
+
posts: BlogJournalPost[];
|
|
4971
|
+
/**
|
|
4972
|
+
* Surface the block sits on.
|
|
4973
|
+
* - `"light"` — light surface, dark text (default).
|
|
4974
|
+
* - `"dark"` — dark surface, light text.
|
|
4975
|
+
* @default "light"
|
|
4976
|
+
*/
|
|
4977
|
+
theme?: "light" | "dark";
|
|
4978
|
+
className?: string;
|
|
4979
|
+
}
|
|
4980
|
+
declare function BlogJournal({ eyebrow, title, subtitle, link, feature, posts, theme, className, }: BlogJournalProps): react_jsx_runtime.JSX.Element;
|
|
4981
|
+
|
|
4982
|
+
interface NewHomeSectionLink {
|
|
4983
|
+
label: string;
|
|
4984
|
+
href?: string;
|
|
4985
|
+
}
|
|
4986
|
+
/** A section heading block — eyebrow + title + supporting copy + optional link. */
|
|
4987
|
+
interface NewHomeSectionHead {
|
|
4988
|
+
eyebrow?: string;
|
|
4989
|
+
title: string;
|
|
4990
|
+
subtitle?: string;
|
|
4991
|
+
/** Right-aligned "view all" style link (desktop). */
|
|
4992
|
+
link?: NewHomeSectionLink;
|
|
4993
|
+
}
|
|
4994
|
+
interface NewHomeExpeditions extends NewHomeSectionHead {
|
|
4995
|
+
/** Editorial TripCards shown in a draggable / button-scrolled rail. */
|
|
4996
|
+
trips: TripCardProps[];
|
|
4997
|
+
}
|
|
4998
|
+
interface NewHomePopularChip {
|
|
4999
|
+
label: string;
|
|
5000
|
+
href?: string;
|
|
5001
|
+
/** Visually promotes the chip (solid teal). */
|
|
5002
|
+
featured?: boolean;
|
|
5003
|
+
size?: "sm" | "md" | "lg";
|
|
5004
|
+
}
|
|
5005
|
+
interface NewHomePopular extends NewHomeSectionHead {
|
|
5006
|
+
chips: NewHomePopularChip[];
|
|
5007
|
+
}
|
|
5008
|
+
interface NewHomeStat {
|
|
5009
|
+
/** Headline figure — e.g. "8", "50+", "100%", "★★★★★". */
|
|
5010
|
+
value: string;
|
|
5011
|
+
label: string;
|
|
5012
|
+
}
|
|
5013
|
+
interface NewHomeStats {
|
|
5014
|
+
items: NewHomeStat[];
|
|
5015
|
+
}
|
|
5016
|
+
interface NewHomeReview {
|
|
5017
|
+
quote: string;
|
|
5018
|
+
author: string;
|
|
5019
|
+
/** Filled stars out of 5. @default 5 */
|
|
5020
|
+
stars?: number;
|
|
5021
|
+
}
|
|
5022
|
+
interface NewHomeReviews extends NewHomeSectionHead {
|
|
5023
|
+
items: NewHomeReview[];
|
|
5024
|
+
/** Small disclaimer under the grid (e.g. "Live Trustpilot reviews load here"). */
|
|
5025
|
+
note?: string;
|
|
5026
|
+
}
|
|
5027
|
+
interface NewHomeProps {
|
|
5028
|
+
/** Hero — passed straight through to {@link HomeHeader}. Required. */
|
|
5029
|
+
hero: HomeHeaderProps;
|
|
5030
|
+
/** "Find your wilderness" tabbed explorer — passed to {@link AdventureExplorer}. */
|
|
5031
|
+
explorer?: AdventureExplorerProps;
|
|
5032
|
+
/** Signature-trips rail of editorial {@link TripCard}s. */
|
|
5033
|
+
expeditions?: NewHomeExpeditions;
|
|
5034
|
+
/** "Popular right now" chip cloud. */
|
|
5035
|
+
popular?: NewHomePopular;
|
|
5036
|
+
/** Teal stats band. */
|
|
5037
|
+
stats?: NewHomeStats;
|
|
5038
|
+
/** "Why us" differentiators — passed to {@link USP}. */
|
|
5039
|
+
usp?: USPProps;
|
|
5040
|
+
/** Dark reviews band. */
|
|
5041
|
+
reviews?: NewHomeReviews;
|
|
5042
|
+
/** "The journal" — feature + list block, passed to {@link BlogJournal}. */
|
|
5043
|
+
journal?: BlogJournalProps;
|
|
5044
|
+
/** Full-bleed call-to-action — passed to {@link CtaBanner}. */
|
|
5045
|
+
cta?: CtaBannerProps;
|
|
5046
|
+
/** Site footer — passed to {@link SiteFooter}. */
|
|
5047
|
+
footer?: SiteFooterProps;
|
|
5048
|
+
className?: string;
|
|
5049
|
+
}
|
|
5050
|
+
declare function NewHome({ hero, explorer, expeditions, popular, stats, usp, reviews, journal, cta, footer, className, }: NewHomeProps): react_jsx_runtime.JSX.Element;
|
|
5051
|
+
|
|
5052
|
+
interface SegmentItem {
|
|
5053
|
+
/** Stable id returned by `onValueChange`. */
|
|
5054
|
+
id: string;
|
|
5055
|
+
/** Visible label. */
|
|
5056
|
+
label: string;
|
|
5057
|
+
/**
|
|
5058
|
+
* Optional leading icon — pass a component, e.g. a lucide `CompassIcon`
|
|
5059
|
+
* (not an element). The component sizes and colours it to match the label.
|
|
5060
|
+
*/
|
|
5061
|
+
icon?: React.ComponentType<{
|
|
5062
|
+
className?: string;
|
|
5063
|
+
}>;
|
|
5064
|
+
/** Disable this single segment. */
|
|
5065
|
+
disabled?: boolean;
|
|
5066
|
+
}
|
|
5067
|
+
interface SegmentedControlProps {
|
|
5068
|
+
/** Options rendered as pills, left to right. */
|
|
5069
|
+
items: SegmentItem[];
|
|
5070
|
+
/** Controlled active id. Pair with `onValueChange`. */
|
|
5071
|
+
value?: string;
|
|
5072
|
+
/** Uncontrolled initial active id — defaults to the first item. */
|
|
5073
|
+
defaultValue?: string;
|
|
5074
|
+
/** Fired with the new id when a segment is selected. */
|
|
5075
|
+
onValueChange?: (id: string) => void;
|
|
5076
|
+
/**
|
|
5077
|
+
* Surface the control sits on.
|
|
5078
|
+
* - `"black"` — dark track, light labels (for dark surfaces).
|
|
5079
|
+
* - `"white"` — light track, dark labels (for light surfaces).
|
|
5080
|
+
* @default "black"
|
|
5081
|
+
*/
|
|
5082
|
+
variant?: "black" | "white";
|
|
5083
|
+
/** Pill density. @default "md" */
|
|
5084
|
+
size?: "sm" | "md";
|
|
5085
|
+
/** Stretch the track to fill its container, distributing pills evenly. */
|
|
5086
|
+
fullWidth?: boolean;
|
|
5087
|
+
/**
|
|
5088
|
+
* Icon-collapse mode. Requires each item to have an `icon`.
|
|
5089
|
+
* - `true` — only the active segment shows its label; the others collapse to
|
|
5090
|
+
* icon-only, with a smooth width transition on selection.
|
|
5091
|
+
* - `"all"` — every segment collapses to icon-only, including the active one
|
|
5092
|
+
* (which keeps its highlighted pill, so it stays visible + clickable).
|
|
5093
|
+
* Useful for a compact floating/stuck state.
|
|
5094
|
+
* @default false
|
|
5095
|
+
*/
|
|
5096
|
+
collapse?: boolean | "all";
|
|
5097
|
+
/** Accessible label for the group. @default "Options" */
|
|
5098
|
+
"aria-label"?: string;
|
|
5099
|
+
className?: string;
|
|
5100
|
+
}
|
|
5101
|
+
declare function SegmentedControl({ items, value, defaultValue, onValueChange, variant, size, fullWidth, collapse, "aria-label": ariaLabel, className, }: SegmentedControlProps): react_jsx_runtime.JSX.Element;
|
|
5102
|
+
|
|
5103
|
+
export { type AccommodationRoomItem, ActivityCard, type ActivityCardProps, type ActivityCardSize, AdventureExplorer, type AdventureExplorerProps, AgentContactCard, type AgentContactCardProps, Alert, type AlertProps, type AlertVariant, AskExo, type AskExoProps, type AskExoSuggestion, BirthDateField, type BirthDateFieldProps, type BlogAuthor, type BlogBlock, type BlogCalloutBlock, BlogCard, type BlogCardCta, type BlogCardProps, type BlogCardSize, type BlogCollageBlock, type BlogHeadingBlock, type BlogImageBlock, BlogJournal, type BlogJournalFeature, type BlogJournalPost, type BlogJournalProps, type BlogListBlock, type BlogParagraphBlock, BlogPost, type BlogPostProps, type BlogQuoteBlock, type BlogTableBlock, type BlogTableColumn, type BookingAdventure, BookingAdventureCard, type BookingAdventureCardLabels, type BookingAdventureCardLineItem, type BookingAdventureCardProps, type BookingAdventureCardSlots, type BookingAdventureCardTraveller, type BookingCancellationAdventure, type BookingCancellationAgentContactLinks, BookingCancellationEmail, type BookingCancellationEmailLabels, type BookingCancellationEmailProps, BookingConfirmedCard, type BookingConfirmedCardProps, type BookingContact, BookingCreatedEmail, type BookingCreatedEmailLabels, type BookingCreatedEmailProps, type BookingDepositInfo, BookingDetails, type BookingDetailsLabels, type BookingDetailsProps, BookingForm, type BookingFormProps, type BookingFormValues, BookingOtpEmail, type BookingOtpEmailProps, BookingPaymentConfirmationEmail, type BookingPaymentConfirmationEmailLabels, type BookingPaymentConfirmationEmailProps, BookingShell, type BookingShellProps, type BookingStatus, BookingSummary, type BookingSummaryLineItem, type BookingSummaryProps, type BookingSummaryRoomItem, type BookingSummaryRow, type BookingTraveller, Button, type ButtonProps, COUNTRIES, CancellationForm, type CancellationFormAdventure, type CancellationFormLabels, type CancellationFormOption, type CancellationFormParticipant, type CancellationFormProps, type CancellationFormValues, type Category2BlogPost, type Category2Faq, type Category2SortOption, type Category2Trip, CategoryPage2, type CategoryPage2Props, Chip, type ChipProps, type ConfirmationAdventure, type ConfirmationDepositInfo, type ConfirmationLineItem, type ConfirmationTraveller, CounterField, type CounterFieldProps, type CountryOption, CountrySearchField, type CountrySearchFieldProps, CtaBanner, type CtaBannerCta, type CtaBannerProps, type CurrencyEstimate, 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, type DatePickerFieldProps, type DepartureStatus, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, type EmailTokens, ExoOrb, type ExoOrbProps, type ExploreCard, type ExploreTab, type FilterGroup, type FilterItem, FilterPanel, type FilterPanelProps, FloatingInput, type FloatingInputProps, FloatingSelect, type FloatingSelectProps, GroupProgressBar, type GroupProgressBarProps, GroupStatusBanner, type GroupStatusBannerProps, HomeHeader, type HomeHeaderCta, type HomeHeaderPressLogo, type HomeHeaderProps, type HomeHeaderRating, type HomeSiteHeaderConfig, Itinerary, ItineraryDay, type ItineraryDayPhoto, type ItineraryDayPhotoLayout, type ItineraryDayProps, type ItineraryDaySpec, type ItineraryProps, type ItineraryRoute, type ItineraryStop, LOGO_PLANETAEXO_DATA_URI, LeadCapturePopup, type LeadCapturePopupConfig, MenuTrip, type MenuTripProps, type MenuTripSection, type MenuTripVariant, NewHome, type NewHomeExpeditions, type NewHomePopular, type NewHomePopularChip, type NewHomeProps, type NewHomeReview, type NewHomeReviews, type NewHomeSectionHead, type NewHomeSectionLink, type NewHomeStat, type NewHomeStats, NotificationEmail, type NotificationEmailCta, type NotificationEmailDetailItem, type NotificationEmailProps, type NotificationEmailRoster, type NotificationEmailRosterPerson, type NotificationEmailSummary, type NotificationEmailSummaryRow, OTPCodeInput, type OTPCodeInputProps, Offer, OfferAdventureCard, type OfferAdventureItem, type OfferAgentInfo, type OfferConfirmedState, type OfferDepositInfo, type OfferLabels, type OfferOptionalItem, type OfferProps, type OfferSummaryLineItem, type Participant, ParticipantCounter, type ParticipantCounterProps, ParticipantList, type ParticipantListProps, type PartnerBookingCreatedAgentContactLinks, PartnerBookingCreatedEmail, type PartnerBookingCreatedEmailLabels, type PartnerBookingCreatedEmailProps, type PartnerRegistrationCompleteAgentContactLinks, PartnerRegistrationCompleteEmail, type PartnerRegistrationCompleteEmailExpectationRow, type PartnerRegistrationCompleteEmailLabels, type PartnerRegistrationCompleteEmailProps, PaymentAmountSelector, type PaymentAmountSelectorProps, PaymentDetailsBlock, type PaymentDetailsBlockFooterBanner, type PaymentDetailsBlockLabels, type PaymentDetailsBlockProps, type PaymentDetailsBlockRow, type PaymentMethodOption, PaymentMethodSelector, type PaymentMethodSelectorProps, PaymentModalShell, type PaymentModalShellProps, type PaymentReceiptAdventure, type PaymentReceiptAdventureLineItem, PaymentReceiptEmail, type PaymentReceiptEmailLabels, type PaymentReceiptEmailProps, type PaymentReminderAgentContactLinks, PaymentReminderEmail, type PaymentReminderEmailAdventure, type PaymentReminderEmailLabels, type PaymentReminderEmailLineItem, type PaymentReminderEmailProps, type PaymentReminderEmailVariantLabels, type PaymentReminderVariant, PhoneCountrySelect, PhotoGallery, type PhotoGalleryPhoto, type PhotoGalleryProps, type PhotoGalleryVariant, Picture, type PictureProps, PriceProgress, type PriceProgressProps, PricingMatrixCard, type PricingMatrixCardProps, type PricingTier, PricingTrip, type PricingTripProps, type PricingTripVariant, type RegistrationAdventure, type RegistrationBooking, type RegistrationEmergencyContactValue, type RegistrationField, type RegistrationFieldOption, type RegistrationFieldType, type RegistrationFieldValue, RegistrationForm, type RegistrationFormLabels, type RegistrationFormProps, type RegistrationFormValues, type RegistrationNameValue, type RegistrationPhoneValue, RegistrationProgressBar, type RegistrationProgressBarProps, type RegistrationProgressTone, type RegistrationReminderAdventureBlock, type RegistrationReminderAgentContactLinks, RegistrationReminderEmail, type RegistrationReminderEmailLabels, type RegistrationReminderEmailProps, type RegistrationReminderEmailVariantLabels, type RegistrationReminderIndividualAgentContactLinks, RegistrationReminderIndividualEmail, type RegistrationReminderIndividualEmailLabels, type RegistrationReminderIndividualEmailProps, type RegistrationReminderIndividualRoute, type RegistrationReminderIndividualSlug, type RegistrationReminderIndividualVariantLabels, type RegistrationReminderSlug, RegistrationSuccessCard, type RegistrationSuccessCardProps, type RegistrationTerms, type RegistrationTraveller, type SegmentItem, SegmentedControl, type SegmentedControlProps, ShareWidget, type ShareWidgetProps, SiteFooter, type SiteFooterAddress, type SiteFooterBadge, type SiteFooterChip, type SiteFooterLanguage, type SiteFooterLink, type SiteFooterProps, type SiteFooterSocial, type SiteFooterVariant, SiteHeader, type SiteHeaderLanguage, type SiteHeaderLink, type SiteHeaderProps, type SiteHeaderSubItem, type SiteHeaderVariant, StatusBadge, type StatusBadgeProps, StickyBookingCard, type StickyBookingCardProps, type StripeAppearance, type SuggestedTraveller, TERMS_ACCEPT_KEY, TermsSection, type TermsSectionProps, ThemeToggle, Toast, type ToastProps, type ToastVariant, TransferDetailsBlock, type TransferDetailsBlockProps, type TravellerFormConfig, type TravellerFormData, TravellerFormInviteEmail, type TravellerFormInviteEmailLabels, type TravellerFormInviteEmailProps, type TravellerFormInviteLink, type TravellerFormLabels, TripCard, type TripCardCta, type TripCardProps, type TripCardSize, type TripCardStatus, type TripDuration, type TripFaq, TripHeader, type TripHeaderProps, type TripHighlight, type TripInfoGroup, type TripItineraryDay, type TripItineraryStep, type TripMeetingPoint, type TripOverviewHighlight, TripPage, type TripPageLabels, type TripPageProps, type TripReview, type TripSectionIcons, type TripSiteHeaderConfig, type TripTrustpilotWidget, TrustpilotEmbed, type TrustpilotWidgetConfig, USP, type USPItem, type USPProps, buttonVariants, chipVariants, cn, emailTokens, formatCpf, getStripeAppearance, itineraryDaySpecIcons, stripeAppearance, validateCpf, webpVariantUrl, wrapEmailHtml };
|