@planetaexo/design-system 0.63.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 +2545 -621
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +822 -12
- package/dist/index.d.ts +822 -12
- package/dist/index.js +2499 -593
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -2155,6 +2155,54 @@ interface BookingFormValues {
|
|
|
2155
2155
|
phoneCountry: string;
|
|
2156
2156
|
phone: string;
|
|
2157
2157
|
email: string;
|
|
2158
|
+
/** Preferred contact channel. Values are stable (used by the CRM); only the
|
|
2159
|
+
* labels are localizable. Empty until the visitor picks one. */
|
|
2160
|
+
contactVia: "WhatsApp" | "Email" | "Phone" | "";
|
|
2161
|
+
}
|
|
2162
|
+
/**
|
|
2163
|
+
* i18n overrides for every visible string in the form. Any key left undefined
|
|
2164
|
+
* falls back to the built-in English string, so existing callers keep working.
|
|
2165
|
+
* `countries` overrides the residence dropdown (value stays stable for the
|
|
2166
|
+
* submitted payload; only the label is localized).
|
|
2167
|
+
*/
|
|
2168
|
+
interface BookingFormLabels {
|
|
2169
|
+
title?: string;
|
|
2170
|
+
subtitle?: string;
|
|
2171
|
+
submit?: string;
|
|
2172
|
+
sending?: string;
|
|
2173
|
+
travelersSection?: string;
|
|
2174
|
+
adults?: string;
|
|
2175
|
+
children?: string;
|
|
2176
|
+
childrenSublabel?: string;
|
|
2177
|
+
tripSection?: string;
|
|
2178
|
+
travelDate?: string;
|
|
2179
|
+
pickDate?: string;
|
|
2180
|
+
budget?: string;
|
|
2181
|
+
projectSection?: string;
|
|
2182
|
+
projectLabel?: string;
|
|
2183
|
+
optional?: string;
|
|
2184
|
+
contactSection?: string;
|
|
2185
|
+
titleAria?: string;
|
|
2186
|
+
ms?: string;
|
|
2187
|
+
mr?: string;
|
|
2188
|
+
lastName?: string;
|
|
2189
|
+
firstName?: string;
|
|
2190
|
+
country?: string;
|
|
2191
|
+
phone?: string;
|
|
2192
|
+
email?: string;
|
|
2193
|
+
countries?: Array<{
|
|
2194
|
+
value: string;
|
|
2195
|
+
label: string;
|
|
2196
|
+
}>;
|
|
2197
|
+
/** Heading for the "preferred contact channel" radio section. */
|
|
2198
|
+
contactViaSection?: string;
|
|
2199
|
+
/** Localized labels for the contact-channel options (values stay stable). */
|
|
2200
|
+
contactViaWhatsApp?: string;
|
|
2201
|
+
contactViaEmail?: string;
|
|
2202
|
+
contactViaPhone?: string;
|
|
2203
|
+
/** Inline validation messages. */
|
|
2204
|
+
errorRequired?: string;
|
|
2205
|
+
errorEmail?: string;
|
|
2158
2206
|
}
|
|
2159
2207
|
interface BookingFormProps {
|
|
2160
2208
|
/** Initial values */
|
|
@@ -2171,9 +2219,11 @@ interface BookingFormProps {
|
|
|
2171
2219
|
title?: string;
|
|
2172
2220
|
/** Override the header subtitle */
|
|
2173
2221
|
subtitle?: string;
|
|
2222
|
+
/** i18n overrides for the form's built-in strings (English defaults). */
|
|
2223
|
+
labels?: BookingFormLabels;
|
|
2174
2224
|
className?: string;
|
|
2175
2225
|
}
|
|
2176
|
-
declare function BookingForm({ defaultValues, onSubmit, submitLabel, loading, showHeader, title, subtitle, className, }: BookingFormProps): react_jsx_runtime.JSX.Element;
|
|
2226
|
+
declare function BookingForm({ defaultValues, onSubmit, submitLabel, loading, showHeader, title, subtitle, labels, className, }: BookingFormProps): react_jsx_runtime.JSX.Element;
|
|
2177
2227
|
|
|
2178
2228
|
interface CountryOption {
|
|
2179
2229
|
code: string;
|
|
@@ -2434,6 +2484,91 @@ interface RegistrationSuccessCardProps {
|
|
|
2434
2484
|
}
|
|
2435
2485
|
declare function RegistrationSuccessCard({ variant, title, message, answersTitle, fields, answers, dateFormatter, formatAnswer, countries, className, actions, logo, logoAlt, showSuccessIcon, terms, termsLayout, termsLabels, adventure, booking, traveller, tripInfoLabels, density, submissionTimestamps, submissionTimestampsLabels, labels: scLabels, sectionsBreakInside, termsTypography, }: RegistrationSuccessCardProps): react_jsx_runtime.JSX.Element;
|
|
2436
2486
|
|
|
2487
|
+
interface CancellationFormParticipant {
|
|
2488
|
+
/** Traveller.id */
|
|
2489
|
+
id: number;
|
|
2490
|
+
name: string;
|
|
2491
|
+
}
|
|
2492
|
+
interface CancellationFormAdventure {
|
|
2493
|
+
/** BookingAdventure.id — a unidade de cancelamento. */
|
|
2494
|
+
id: number;
|
|
2495
|
+
name: string;
|
|
2496
|
+
/** Intervalo de datas já formatado pelo consumidor (locale). */
|
|
2497
|
+
dateRange?: string | null;
|
|
2498
|
+
/** Política de cancelamento já resolvida pela locale da reserva. */
|
|
2499
|
+
cancellationPolicy?: string | null;
|
|
2500
|
+
/** Participantes (roster) desta aventura. */
|
|
2501
|
+
participants: CancellationFormParticipant[];
|
|
2502
|
+
}
|
|
2503
|
+
interface CancellationFormOption {
|
|
2504
|
+
/** Código persistido (ex.: CHANGE_OF_PLANS / REFUND). */
|
|
2505
|
+
value: string;
|
|
2506
|
+
label: string;
|
|
2507
|
+
}
|
|
2508
|
+
interface CancellationFormValues {
|
|
2509
|
+
selectedBookingAdventureIds: number[];
|
|
2510
|
+
selectedTravellerIds: number[];
|
|
2511
|
+
reasonCode: string;
|
|
2512
|
+
reasonOther: string;
|
|
2513
|
+
refundPreference: string;
|
|
2514
|
+
refundOther: string;
|
|
2515
|
+
agreedToPolicy: boolean;
|
|
2516
|
+
contact: {
|
|
2517
|
+
name: string;
|
|
2518
|
+
email: string;
|
|
2519
|
+
phone: string;
|
|
2520
|
+
};
|
|
2521
|
+
}
|
|
2522
|
+
interface CancellationFormLabels {
|
|
2523
|
+
/** Identidade (prefill editável). */
|
|
2524
|
+
identityHeading: string;
|
|
2525
|
+
contactNameLabel: string;
|
|
2526
|
+
contactEmailLabel: string;
|
|
2527
|
+
contactPhoneLabel: string;
|
|
2528
|
+
/** Seleção de aventuras. */
|
|
2529
|
+
adventuresHeading: string;
|
|
2530
|
+
adventuresHint?: string;
|
|
2531
|
+
selectAllLabel: string;
|
|
2532
|
+
policyHeading: string;
|
|
2533
|
+
participantsHeading: string;
|
|
2534
|
+
/** Motivo. */
|
|
2535
|
+
reasonHeading: string;
|
|
2536
|
+
reasonOptions: CancellationFormOption[];
|
|
2537
|
+
reasonOtherLabel: string;
|
|
2538
|
+
/** Reembolso / crédito. */
|
|
2539
|
+
refundHeading: string;
|
|
2540
|
+
refundOptions: CancellationFormOption[];
|
|
2541
|
+
refundOtherLabel: string;
|
|
2542
|
+
/** Aceite + submit. */
|
|
2543
|
+
agreementLabel: string;
|
|
2544
|
+
submitLabel: string;
|
|
2545
|
+
submittingLabel: string;
|
|
2546
|
+
/** Mensagens de validação. */
|
|
2547
|
+
errorSelectAdventure: string;
|
|
2548
|
+
errorSelectParticipants: string;
|
|
2549
|
+
errorReasonRequired: string;
|
|
2550
|
+
errorReasonOtherRequired: string;
|
|
2551
|
+
errorRefundRequired: string;
|
|
2552
|
+
errorRefundOtherRequired: string;
|
|
2553
|
+
errorAgreementRequired: string;
|
|
2554
|
+
}
|
|
2555
|
+
interface CancellationFormProps {
|
|
2556
|
+
adventures: CancellationFormAdventure[];
|
|
2557
|
+
/** Prefill de identidade (editável). */
|
|
2558
|
+
identity?: {
|
|
2559
|
+
name?: string;
|
|
2560
|
+
email?: string;
|
|
2561
|
+
phone?: string;
|
|
2562
|
+
};
|
|
2563
|
+
labels: CancellationFormLabels;
|
|
2564
|
+
onSubmit: (values: CancellationFormValues) => void | Promise<void>;
|
|
2565
|
+
submitting?: boolean;
|
|
2566
|
+
/** Erro de topo vindo do consumidor (ex.: 409 do backend). */
|
|
2567
|
+
error?: string | null;
|
|
2568
|
+
className?: string;
|
|
2569
|
+
}
|
|
2570
|
+
declare function CancellationForm({ adventures, identity, labels, onSubmit, submitting, error, className, }: CancellationFormProps): react_jsx_runtime.JSX.Element;
|
|
2571
|
+
|
|
2437
2572
|
interface FloatingInputProps extends React.InputHTMLAttributes<HTMLInputElement> {
|
|
2438
2573
|
label: string;
|
|
2439
2574
|
error?: string;
|
|
@@ -2464,8 +2599,14 @@ interface PhoneCountrySelectProps {
|
|
|
2464
2599
|
onChange: (code: string) => void;
|
|
2465
2600
|
className?: string;
|
|
2466
2601
|
disabled?: boolean;
|
|
2602
|
+
/**
|
|
2603
|
+
* Show the dial code (e.g. "+55") in the trigger next to the flag.
|
|
2604
|
+
* Defaults to `true`. Set to `false` when the adjacent phone input already
|
|
2605
|
+
* displays the dial code as a prefix (avoids showing "+55" twice).
|
|
2606
|
+
*/
|
|
2607
|
+
showDial?: boolean;
|
|
2467
2608
|
}
|
|
2468
|
-
declare function PhoneCountrySelect({ value, onChange, className, disabled, }: PhoneCountrySelectProps): react_jsx_runtime.JSX.Element;
|
|
2609
|
+
declare function PhoneCountrySelect({ value, onChange, className, disabled, showDial, }: PhoneCountrySelectProps): react_jsx_runtime.JSX.Element;
|
|
2469
2610
|
|
|
2470
2611
|
interface CounterFieldProps {
|
|
2471
2612
|
label: string;
|
|
@@ -2488,8 +2629,10 @@ interface DatePickerFieldProps {
|
|
|
2488
2629
|
disabled?: boolean;
|
|
2489
2630
|
fromDate?: Date;
|
|
2490
2631
|
className?: string;
|
|
2632
|
+
/** Inline validation message; renders below + reddens the trigger border. */
|
|
2633
|
+
error?: string;
|
|
2491
2634
|
}
|
|
2492
|
-
declare function DatePickerField({ label, required, value, onChange, placeholder, disabled, fromDate, className, }: DatePickerFieldProps): react_jsx_runtime.JSX.Element;
|
|
2635
|
+
declare function DatePickerField({ label, required, value, onChange, placeholder, disabled, fromDate, className, error, }: DatePickerFieldProps): react_jsx_runtime.JSX.Element;
|
|
2493
2636
|
|
|
2494
2637
|
interface BirthDateFieldProps {
|
|
2495
2638
|
label: string;
|
|
@@ -2567,8 +2710,23 @@ interface FilterPanelProps {
|
|
|
2567
2710
|
sortOptions?: FilterSortOption[];
|
|
2568
2711
|
sort?: string;
|
|
2569
2712
|
onSortChange?: (id: string) => void;
|
|
2570
|
-
|
|
2571
|
-
|
|
2713
|
+
/** i18n overrides for the panel's built-in control labels (English defaults). */
|
|
2714
|
+
labels?: FilterPanelLabels;
|
|
2715
|
+
}
|
|
2716
|
+
/** i18n overrides for FilterPanel's built-in English control strings. */
|
|
2717
|
+
interface FilterPanelLabels {
|
|
2718
|
+
/** "Clear all" reset link/button. */
|
|
2719
|
+
clearAll?: string;
|
|
2720
|
+
/** Mobile drawer apply button: "Show results" (count appended). */
|
|
2721
|
+
showResults?: string;
|
|
2722
|
+
/** Mobile "Sort" trigger. */
|
|
2723
|
+
sortLabel?: string;
|
|
2724
|
+
/** "Sort by" popover heading. */
|
|
2725
|
+
sortByLabel?: string;
|
|
2726
|
+
/** "Remove all filters" link shown under the groups. */
|
|
2727
|
+
removeAllFilters?: string;
|
|
2728
|
+
}
|
|
2729
|
+
declare function FilterPanel({ groups, value, onChange, onClearAll, alwaysShowClear, title, className, variant, sortOptions, sort, onSortChange, labels, }: FilterPanelProps): react_jsx_runtime.JSX.Element | null;
|
|
2572
2730
|
|
|
2573
2731
|
/**
|
|
2574
2732
|
* Configuration for any Trustpilot widget embedded in the design system.
|
|
@@ -2811,6 +2969,19 @@ interface PhotoGalleryPhoto {
|
|
|
2811
2969
|
/** Photo credit / author displayed in the lightbox bottom-right */
|
|
2812
2970
|
credit?: string;
|
|
2813
2971
|
}
|
|
2972
|
+
/** i18n overrides for the gallery's expand/collapse control + lightbox a11y. */
|
|
2973
|
+
interface PhotoGalleryLabels {
|
|
2974
|
+
/** "See more" — rendered with the hidden count: `See more (12)`. */
|
|
2975
|
+
seeMore?: string;
|
|
2976
|
+
/** "Show less". */
|
|
2977
|
+
showLess?: string;
|
|
2978
|
+
/** aria-label for the lightbox close button. @default "Close lightbox" */
|
|
2979
|
+
close?: string;
|
|
2980
|
+
/** aria-label for the lightbox previous-photo button. @default "Previous photo" */
|
|
2981
|
+
previous?: string;
|
|
2982
|
+
/** aria-label for the lightbox next-photo button. @default "Next photo" */
|
|
2983
|
+
next?: string;
|
|
2984
|
+
}
|
|
2814
2985
|
interface PhotoGalleryProps {
|
|
2815
2986
|
/** Array of photo URLs or photo objects */
|
|
2816
2987
|
photos: (string | PhotoGalleryPhoto)[];
|
|
@@ -2824,9 +2995,11 @@ interface PhotoGalleryProps {
|
|
|
2824
2995
|
initialVisible?: number;
|
|
2825
2996
|
/** Called when a photo is clicked (in addition to opening the lightbox) */
|
|
2826
2997
|
onPhotoClick?: (src: string, index: number) => void;
|
|
2998
|
+
/** i18n overrides for the "See more (N)" / "Show less" toggle. */
|
|
2999
|
+
labels?: PhotoGalleryLabels;
|
|
2827
3000
|
className?: string;
|
|
2828
3001
|
}
|
|
2829
|
-
declare function PhotoGallery({ photos, variant, initialVisible, onPhotoClick, className, }: PhotoGalleryProps): react_jsx_runtime.JSX.Element | null;
|
|
3002
|
+
declare function PhotoGallery({ photos, variant, initialVisible, onPhotoClick, labels, className, }: PhotoGalleryProps): react_jsx_runtime.JSX.Element | null;
|
|
2830
3003
|
|
|
2831
3004
|
type PricingTripVariant = "card" | "bar" | "compact";
|
|
2832
3005
|
/**
|
|
@@ -2850,6 +3023,16 @@ interface PricingTripProps {
|
|
|
2850
3023
|
departureTimes?: string[];
|
|
2851
3024
|
onBook?: () => void;
|
|
2852
3025
|
bookLabel?: string;
|
|
3026
|
+
/**
|
|
3027
|
+
* i18n override for the "From" price eyebrow. Rendered uppercased via CSS,
|
|
3028
|
+
* so pass natural case (e.g. "A partir de"). @default "From"
|
|
3029
|
+
*/
|
|
3030
|
+
fromLabel?: string;
|
|
3031
|
+
/**
|
|
3032
|
+
* i18n override for the "per person" price suffix, rendered after the
|
|
3033
|
+
* built-in "/ " separator (e.g. "por pessoa"). @default "per person"
|
|
3034
|
+
*/
|
|
3035
|
+
perPersonLabel?: string;
|
|
2853
3036
|
variant?: PricingTripVariant;
|
|
2854
3037
|
/**
|
|
2855
3038
|
* When true, removes rounded corners on the OUTER container that PricingTrip
|
|
@@ -2886,7 +3069,7 @@ interface PricingTripProps {
|
|
|
2886
3069
|
priceInfo?: React.ReactNode;
|
|
2887
3070
|
className?: string;
|
|
2888
3071
|
}
|
|
2889
|
-
declare function PricingTrip({ priceFrom, currency, season, departureTimes, onBook, bookLabel, variant, sharp, belowPrice, benefits, currencyEstimates, priceInfo, className, }: PricingTripProps): react_jsx_runtime.JSX.Element;
|
|
3072
|
+
declare function PricingTrip({ priceFrom, currency, season, departureTimes, onBook, bookLabel, fromLabel, perPersonLabel, variant, sharp, belowPrice, benefits, currencyEstimates, priceInfo, className, }: PricingTripProps): react_jsx_runtime.JSX.Element;
|
|
2890
3073
|
|
|
2891
3074
|
interface SiteHeaderSubItem {
|
|
2892
3075
|
label: string;
|
|
@@ -2919,11 +3102,26 @@ interface SiteHeaderProps {
|
|
|
2919
3102
|
onAccount?: () => void;
|
|
2920
3103
|
/** "overlay" = absolute (inside a relative parent); "fixed" = fixed to viewport */
|
|
2921
3104
|
position?: "overlay" | "fixed" | "static";
|
|
3105
|
+
/** i18n overrides for the header's icon-button aria-labels (English defaults). */
|
|
3106
|
+
labels?: SiteHeaderLabels;
|
|
2922
3107
|
className?: string;
|
|
2923
3108
|
}
|
|
3109
|
+
/** i18n overrides for SiteHeader's icon-button aria-labels. */
|
|
3110
|
+
interface SiteHeaderLabels {
|
|
3111
|
+
/** @default "Open menu" */
|
|
3112
|
+
openMenu?: string;
|
|
3113
|
+
/** @default "Close menu" */
|
|
3114
|
+
closeMenu?: string;
|
|
3115
|
+
/** @default "Language" */
|
|
3116
|
+
language?: string;
|
|
3117
|
+
/** @default "Search" */
|
|
3118
|
+
search?: string;
|
|
3119
|
+
/** @default "Account" */
|
|
3120
|
+
account?: string;
|
|
3121
|
+
}
|
|
2924
3122
|
declare const DEFAULT_HEADER_LINKS: SiteHeaderLink[];
|
|
2925
3123
|
declare const DEFAULT_LANGUAGES: SiteHeaderLanguage[];
|
|
2926
|
-
declare function SiteHeader({ variant, links, logoSrcLight, logoSrcDark, logoSrc, logoAlt, languages, currentLanguage, onLanguageChange, onSearch, onAccount, position, className, }: SiteHeaderProps): react_jsx_runtime.JSX.Element;
|
|
3124
|
+
declare function SiteHeader({ variant, links, logoSrcLight, logoSrcDark, logoSrc, logoAlt, languages, currentLanguage, onLanguageChange, onSearch, onAccount, position, labels, className, }: SiteHeaderProps): react_jsx_runtime.JSX.Element;
|
|
2927
3125
|
|
|
2928
3126
|
declare function ThemeToggle({ className }: {
|
|
2929
3127
|
className?: string;
|
|
@@ -2944,10 +3142,27 @@ interface TripCardCta {
|
|
|
2944
3142
|
onClick?: () => void;
|
|
2945
3143
|
href?: string;
|
|
2946
3144
|
}
|
|
3145
|
+
/** i18n overrides for TripCard's built-in English strings. */
|
|
3146
|
+
interface TripCardLabels {
|
|
3147
|
+
/** Singular night ("1 night"). @default "night" */
|
|
3148
|
+
night?: string;
|
|
3149
|
+
/** Plural nights ("3 nights"). @default "nights" */
|
|
3150
|
+
nights?: string;
|
|
3151
|
+
/** "sold-out" status badge. @default "All seats taken" */
|
|
3152
|
+
soldOut?: string;
|
|
3153
|
+
/** "trending" status badge. @default "Trending" */
|
|
3154
|
+
trending?: string;
|
|
3155
|
+
/** Favorite button aria-label when not favorited. @default "Add to favorites" */
|
|
3156
|
+
addToFavorites?: string;
|
|
3157
|
+
/** Favorite button aria-label when favorited. @default "Remove from favorites" */
|
|
3158
|
+
removeFromFavorites?: string;
|
|
3159
|
+
}
|
|
2947
3160
|
interface TripCardProps {
|
|
2948
3161
|
/** URL da imagem de capa */
|
|
2949
3162
|
image: string;
|
|
2950
3163
|
imageAlt?: string;
|
|
3164
|
+
/** i18n overrides for the card's built-in strings (night/nights, badges, fav aria). */
|
|
3165
|
+
labels?: TripCardLabels;
|
|
2951
3166
|
/** Badge de status (ex.: trending) — usado pelo variant="overlay". */
|
|
2952
3167
|
status?: TripCardStatus;
|
|
2953
3168
|
/** Número de noites */
|
|
@@ -3173,6 +3388,21 @@ interface TripDuration {
|
|
|
3173
3388
|
/** Number of nights — defaults to days - 1 */
|
|
3174
3389
|
nights?: number;
|
|
3175
3390
|
}
|
|
3391
|
+
/** i18n overrides for the hero meta row + image-carousel controls. */
|
|
3392
|
+
interface TripHeaderLabels {
|
|
3393
|
+
/** Singular night ("1 night"). @default "night" */
|
|
3394
|
+
night?: string;
|
|
3395
|
+
/** Plural nights ("3 nights"). @default "nights" */
|
|
3396
|
+
nights?: string;
|
|
3397
|
+
/** Singular day ("1 day"). @default "day" */
|
|
3398
|
+
day?: string;
|
|
3399
|
+
/** Plural days ("4 days"). @default "days" */
|
|
3400
|
+
days?: string;
|
|
3401
|
+
/** aria-label for the previous hero image arrow. @default "Previous image" */
|
|
3402
|
+
previousImage?: string;
|
|
3403
|
+
/** aria-label for the next hero image arrow. @default "Next image" */
|
|
3404
|
+
nextImage?: string;
|
|
3405
|
+
}
|
|
3176
3406
|
interface TripHeaderChip {
|
|
3177
3407
|
label: string;
|
|
3178
3408
|
href?: string;
|
|
@@ -3193,6 +3423,10 @@ interface TripHeaderProps {
|
|
|
3193
3423
|
destination?: string;
|
|
3194
3424
|
/** Duration shown with a moon/sun icon */
|
|
3195
3425
|
duration?: TripDuration;
|
|
3426
|
+
/** Group size shown with a people icon (e.g. "Private · up to ~8–10 per guide") */
|
|
3427
|
+
groupSize?: string;
|
|
3428
|
+
/** i18n overrides for the duration words + image-carousel aria labels. */
|
|
3429
|
+
labels?: TripHeaderLabels;
|
|
3196
3430
|
/** Legacy tagline — shown only when destination/duration are not provided */
|
|
3197
3431
|
tagline?: string;
|
|
3198
3432
|
/** Pill-shaped category chips rendered under the meta row (e.g. related tour categories). */
|
|
@@ -3215,7 +3449,7 @@ interface TripHeaderProps {
|
|
|
3215
3449
|
uiVariant?: "v1" | "v2";
|
|
3216
3450
|
className?: string;
|
|
3217
3451
|
}
|
|
3218
|
-
declare function TripHeader({ images, videoUrl, title, breadcrumb, destination, duration, tagline, chips, belowMeta, siteHeader, uiVariant, className, }: TripHeaderProps): react_jsx_runtime.JSX.Element;
|
|
3452
|
+
declare function TripHeader({ images, videoUrl, title, breadcrumb, destination, duration, groupSize, labels, tagline, chips, belowMeta, siteHeader, uiVariant, className, }: TripHeaderProps): react_jsx_runtime.JSX.Element;
|
|
3219
3453
|
|
|
3220
3454
|
interface TripHighlight {
|
|
3221
3455
|
label: string;
|
|
@@ -3327,6 +3561,34 @@ interface TripPageLabels {
|
|
|
3327
3561
|
faq?: string;
|
|
3328
3562
|
/** Section nav + section heading: "What our guests think" */
|
|
3329
3563
|
reviews?: string;
|
|
3564
|
+
/** Expand control on the FAQ list + photo galleries: "See more" (count appended). */
|
|
3565
|
+
seeMore?: string;
|
|
3566
|
+
/** Collapse control on the FAQ list + photo galleries: "Show less". */
|
|
3567
|
+
showLess?: string;
|
|
3568
|
+
/** Singular night ("1 night"). */
|
|
3569
|
+
night?: string;
|
|
3570
|
+
/** Plural nights ("3 nights"). */
|
|
3571
|
+
nights?: string;
|
|
3572
|
+
/** Singular day ("1 day"). */
|
|
3573
|
+
day?: string;
|
|
3574
|
+
/** Plural days ("4 days"). */
|
|
3575
|
+
days?: string;
|
|
3576
|
+
/** aria-label for the previous hero image arrow. */
|
|
3577
|
+
previousImage?: string;
|
|
3578
|
+
/** aria-label for the next hero image arrow. */
|
|
3579
|
+
nextImage?: string;
|
|
3580
|
+
/** Badge on a transfer itinerary step: "Transfer". */
|
|
3581
|
+
transfer?: string;
|
|
3582
|
+
/** Meeting-point type eyebrow when type = "activity": "Activity location". */
|
|
3583
|
+
meetingPointActivity?: string;
|
|
3584
|
+
/** Meeting-point type eyebrow when type = "alternative": "Alternative meeting point". */
|
|
3585
|
+
meetingPointAlternative?: string;
|
|
3586
|
+
/** aria-label for the lightbox close button. */
|
|
3587
|
+
galleryClose?: string;
|
|
3588
|
+
/** aria-label for the lightbox previous-photo button. */
|
|
3589
|
+
galleryPrevious?: string;
|
|
3590
|
+
/** aria-label for the lightbox next-photo button. */
|
|
3591
|
+
galleryNext?: string;
|
|
3330
3592
|
}
|
|
3331
3593
|
|
|
3332
3594
|
interface TripPageProps {
|
|
@@ -3337,6 +3599,8 @@ interface TripPageProps {
|
|
|
3337
3599
|
destination?: string;
|
|
3338
3600
|
/** Duration shown with moon/sun icons in the hero */
|
|
3339
3601
|
duration?: TripDuration;
|
|
3602
|
+
/** Group size shown with a people icon in the hero meta row */
|
|
3603
|
+
groupSize?: string;
|
|
3340
3604
|
images: string[];
|
|
3341
3605
|
/** Optional video URL — plays as background instead of the image carousel */
|
|
3342
3606
|
videoUrl?: string;
|
|
@@ -3390,6 +3654,12 @@ interface TripPageProps {
|
|
|
3390
3654
|
* `food` omitted, the accordion still opens to show just the photos.
|
|
3391
3655
|
*/
|
|
3392
3656
|
foodGallery?: PhotoGalleryPhoto[];
|
|
3657
|
+
/**
|
|
3658
|
+
* Visual layout for the food gallery — the food equivalent of
|
|
3659
|
+
* {@link accommodationGalleryVariant}. Independent of the accommodation
|
|
3660
|
+
* gallery so the two sections never share a layout by accident. @default "gridCompact"
|
|
3661
|
+
*/
|
|
3662
|
+
foodGalleryVariant?: PhotoGalleryVariant;
|
|
3393
3663
|
termsAndConditions?: React.ReactNode;
|
|
3394
3664
|
meetingPoints?: TripMeetingPoint[];
|
|
3395
3665
|
/**
|
|
@@ -3442,6 +3712,24 @@ interface TripPageProps {
|
|
|
3442
3712
|
priceInfo?: React.ReactNode;
|
|
3443
3713
|
onBook?: () => void;
|
|
3444
3714
|
bookLabel?: string;
|
|
3715
|
+
/**
|
|
3716
|
+
* Fired when the trip-page inquiry form (BookingForm) is submitted, with the
|
|
3717
|
+
* full set of entered values. Distinct from `onBook` (the pricing card's
|
|
3718
|
+
* "Check availability" CTA): on trips that render the form, the CTA scrolls
|
|
3719
|
+
* to the form and only this callback carries the lead's details.
|
|
3720
|
+
*/
|
|
3721
|
+
onBookingSubmit?: (values: BookingFormValues) => void;
|
|
3722
|
+
/** Disables the inquiry form's submit button and shows its "Sending…" state. */
|
|
3723
|
+
bookingLoading?: boolean;
|
|
3724
|
+
/** Initial values for the inquiry form — used to geo-default the country and
|
|
3725
|
+
* to prefill the visitor's remembered details from a previous enquiry. */
|
|
3726
|
+
bookingDefaults?: Partial<BookingFormValues>;
|
|
3727
|
+
/** i18n overrides for the trip-page inquiry form (BookingForm). */
|
|
3728
|
+
bookingLabels?: BookingFormLabels;
|
|
3729
|
+
/** i18n override for the PricingTrip "From" price eyebrow. @default "From" */
|
|
3730
|
+
fromLabel?: string;
|
|
3731
|
+
/** i18n override for the PricingTrip "per person" price suffix. @default "per person" */
|
|
3732
|
+
perPersonLabel?: string;
|
|
3445
3733
|
/**
|
|
3446
3734
|
* Render an overlay SiteHeader inside the hero. Accepts:
|
|
3447
3735
|
* - `boolean` — minimal: default link list (styleguide usage).
|
|
@@ -3458,7 +3746,7 @@ interface TripPageProps {
|
|
|
3458
3746
|
features?: Record<string, boolean>;
|
|
3459
3747
|
className?: string;
|
|
3460
3748
|
}
|
|
3461
|
-
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;
|
|
3749
|
+
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;
|
|
3462
3750
|
|
|
3463
3751
|
interface Category2Trip extends TripCardProps {
|
|
3464
3752
|
/** Marca a trip como featured — sobe para o topo do grid principal. */
|
|
@@ -3518,6 +3806,12 @@ interface CategoryPage2Props {
|
|
|
3518
3806
|
* {@link TripSiteHeaderConfig} to wire languages + onLanguageChange.
|
|
3519
3807
|
*/
|
|
3520
3808
|
siteHeader?: boolean | SiteHeaderLink[] | TripSiteHeaderConfig;
|
|
3809
|
+
/**
|
|
3810
|
+
* Optional node pinned to the top-right of the hero content (below the
|
|
3811
|
+
* overlay header, aligned with the breadcrumb/title). Used e.g. for a
|
|
3812
|
+
* Browse/Compare/Enquire mode switcher.
|
|
3813
|
+
*/
|
|
3814
|
+
heroRightSlot?: React.ReactNode;
|
|
3521
3815
|
popularTours?: Category2Trip[];
|
|
3522
3816
|
popularToursTitle?: string;
|
|
3523
3817
|
popularToursEyebrow?: string;
|
|
@@ -3529,6 +3823,13 @@ interface CategoryPage2Props {
|
|
|
3529
3823
|
defaultSort?: string;
|
|
3530
3824
|
/** Number of trips shown before the "Load more" button appears. @default 15 */
|
|
3531
3825
|
tripsInitialCount?: number;
|
|
3826
|
+
/**
|
|
3827
|
+
* When provided, replaces the default filter-sidebar + trip-grid + sort
|
|
3828
|
+
* section entirely (the section heading still renders). Used to swap in an
|
|
3829
|
+
* external selectable grid (e.g. the favourites compare/enquire surface)
|
|
3830
|
+
* without touching the rest of the page.
|
|
3831
|
+
*/
|
|
3832
|
+
tripListingSlot?: React.ReactNode;
|
|
3532
3833
|
trustpilot?: TrustpilotWidgetConfig;
|
|
3533
3834
|
reviewsTitle?: string;
|
|
3534
3835
|
/** Optional subtitle/intro paragraph below the reviews H2. */
|
|
@@ -3553,9 +3854,21 @@ interface CategoryPage2Props {
|
|
|
3553
3854
|
faqInitialCount?: number;
|
|
3554
3855
|
gallery?: (string | PhotoGalleryPhoto)[];
|
|
3555
3856
|
galleryTitle?: string;
|
|
3857
|
+
/** Trips-list expand button: "Load more" (count appended). */
|
|
3858
|
+
loadMoreLabel?: string;
|
|
3859
|
+
/** Expand/collapse collapse button: "Show less". */
|
|
3860
|
+
showLessLabel?: string;
|
|
3861
|
+
/** FAQ expand button: "See more" (count appended). */
|
|
3862
|
+
seeMoreLabel?: string;
|
|
3863
|
+
/** Blog "View all posts" link (when no travel-guide href). */
|
|
3864
|
+
viewAllPostsLabel?: string;
|
|
3865
|
+
/** i18n overrides for the trip cards (night/nights, badges, fav aria). */
|
|
3866
|
+
cardLabels?: TripCardLabels;
|
|
3867
|
+
/** i18n overrides for the filter/sort panel controls. */
|
|
3868
|
+
filterLabels?: FilterPanelLabels;
|
|
3556
3869
|
className?: string;
|
|
3557
3870
|
}
|
|
3558
|
-
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;
|
|
3871
|
+
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;
|
|
3559
3872
|
|
|
3560
3873
|
type ActivityCardSize = "sm" | "md" | "lg";
|
|
3561
3874
|
interface ActivityCardProps {
|
|
@@ -4254,4 +4567,501 @@ interface StickyBookingCardProps {
|
|
|
4254
4567
|
}
|
|
4255
4568
|
declare function StickyBookingCard({ currentPrice, deposit, spotsRemaining, mode, onPrimary, note, className, }: StickyBookingCardProps): react_jsx_runtime.JSX.Element;
|
|
4256
4569
|
|
|
4257
|
-
|
|
4570
|
+
declare const chipVariants: (props?: ({
|
|
4571
|
+
variant?: "outline" | "solid" | "glass" | null | undefined;
|
|
4572
|
+
size?: "sm" | "md" | "lg" | null | undefined;
|
|
4573
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
4574
|
+
interface ChipProps extends Omit<React.HTMLAttributes<HTMLElement>, "color">, VariantProps<typeof chipVariants> {
|
|
4575
|
+
/** When provided, renders an `<a>` tag instead of a `<span>`. */
|
|
4576
|
+
href?: string;
|
|
4577
|
+
}
|
|
4578
|
+
declare const Chip: React.ForwardRefExoticComponent<ChipProps & React.RefAttributes<HTMLElement>>;
|
|
4579
|
+
|
|
4580
|
+
/**
|
|
4581
|
+
* Rich configuration for the overlay `<SiteHeader>` rendered inside the
|
|
4582
|
+
* hero. Accepts everything `<SiteHeader>` accepts EXCEPT `position` and
|
|
4583
|
+
* `className`: position is hardcoded to `"overlay"` so the header scrolls
|
|
4584
|
+
* away with the hero, and the hero composes its own layout around it.
|
|
4585
|
+
*/
|
|
4586
|
+
type HomeSiteHeaderConfig = Omit<SiteHeaderProps, "position" | "className">;
|
|
4587
|
+
interface HomeHeaderCta {
|
|
4588
|
+
label: string;
|
|
4589
|
+
href?: string;
|
|
4590
|
+
onClick?: () => void;
|
|
4591
|
+
}
|
|
4592
|
+
interface HomeHeaderRating {
|
|
4593
|
+
/** Qualifier shown before the stars — e.g. "Excellent". */
|
|
4594
|
+
label?: string;
|
|
4595
|
+
/** Filled stars out of 5. Supports halves (e.g. 4.5). @default 5 */
|
|
4596
|
+
stars?: number;
|
|
4597
|
+
/** Provider name shown after the stars — e.g. "Trustpilot". */
|
|
4598
|
+
provider?: string;
|
|
4599
|
+
/** Makes the whole widget a link. */
|
|
4600
|
+
href?: string;
|
|
4601
|
+
}
|
|
4602
|
+
interface HomeHeaderPressLogo {
|
|
4603
|
+
/** Logo image URL. When omitted, `label` renders as styled text. */
|
|
4604
|
+
src?: string;
|
|
4605
|
+
/** Text fallback / accessible label. */
|
|
4606
|
+
label?: string;
|
|
4607
|
+
alt?: string;
|
|
4608
|
+
/** When provided, the logo becomes a link (e.g. to the press article). */
|
|
4609
|
+
href?: string;
|
|
4610
|
+
}
|
|
4611
|
+
interface HomeHeaderProps {
|
|
4612
|
+
/** Hero image array — shows a slow crossfade carousel when more than one. */
|
|
4613
|
+
images: string[];
|
|
4614
|
+
/** Optional video URL — plays as background instead of the image carousel. */
|
|
4615
|
+
videoUrl?: string;
|
|
4616
|
+
/** Small eyebrow line rendered above the title. */
|
|
4617
|
+
eyebrow?: string;
|
|
4618
|
+
/** Main hero headline. */
|
|
4619
|
+
title: string;
|
|
4620
|
+
/** Subtitle rendered below the title. */
|
|
4621
|
+
subtitle?: string;
|
|
4622
|
+
/** Primary call-to-action button below the subtitle. */
|
|
4623
|
+
cta?: HomeHeaderCta;
|
|
4624
|
+
/**
|
|
4625
|
+
* Live Trustpilot TrustBox shown under the CTA. Pass `true` for the
|
|
4626
|
+
* PlanetaEXO defaults, or a {@link TrustpilotWidgetConfig} to override the
|
|
4627
|
+
* business unit / template / theme. Takes precedence over `rating`.
|
|
4628
|
+
*/
|
|
4629
|
+
trustpilot?: boolean | TrustpilotWidgetConfig;
|
|
4630
|
+
/** Static, mock rating widget — fallback when `trustpilot` is not set. */
|
|
4631
|
+
rating?: HomeHeaderRating;
|
|
4632
|
+
/** "In the press" logo strip pinned to the bottom of the hero. */
|
|
4633
|
+
pressLogos?: HomeHeaderPressLogo[];
|
|
4634
|
+
/** Label shown beside the press logos. @default "In the press" */
|
|
4635
|
+
pressLabel?: string;
|
|
4636
|
+
/** When provided, the press label becomes a link (e.g. to a press page). */
|
|
4637
|
+
pressLabelHref?: string;
|
|
4638
|
+
/**
|
|
4639
|
+
* Render an overlay `<SiteHeader>` inside the hero. Accepts:
|
|
4640
|
+
* - `boolean` — minimal: renders the header with the default link list.
|
|
4641
|
+
* - `SiteHeaderLink[]` — a custom links array.
|
|
4642
|
+
* - {@link HomeSiteHeaderConfig} — full SiteHeaderProps minus
|
|
4643
|
+
* `position`/`className` (e.g. to wire languages + onLanguageChange).
|
|
4644
|
+
*/
|
|
4645
|
+
siteHeader?: boolean | SiteHeaderLink[] | HomeSiteHeaderConfig;
|
|
4646
|
+
/**
|
|
4647
|
+
* Content alignment variant.
|
|
4648
|
+
* - `"center"` — hero copy centered (homepage default).
|
|
4649
|
+
* - `"left"` — hero copy aligned to the left edge.
|
|
4650
|
+
* @default "center"
|
|
4651
|
+
*/
|
|
4652
|
+
align?: "center" | "left";
|
|
4653
|
+
className?: string;
|
|
4654
|
+
}
|
|
4655
|
+
declare function HomeHeader({ images, videoUrl, eyebrow, title, subtitle, cta, trustpilot, rating, pressLogos, pressLabel, pressLabelHref, siteHeader, align, className, }: HomeHeaderProps): react_jsx_runtime.JSX.Element;
|
|
4656
|
+
|
|
4657
|
+
interface ExploreCard {
|
|
4658
|
+
/** Label overlaid at the bottom of the card (e.g. "Europe"). */
|
|
4659
|
+
label: string;
|
|
4660
|
+
/** Card background image URL. Optional in the bento layout — omit it and
|
|
4661
|
+
* pass `gradient` for a textless gradient tile (e.g. lesser destinations). */
|
|
4662
|
+
image?: string;
|
|
4663
|
+
/** Optional link — makes the whole card clickable. */
|
|
4664
|
+
href?: string;
|
|
4665
|
+
/** Accessible alt text — defaults to `label`. */
|
|
4666
|
+
imageAlt?: string;
|
|
4667
|
+
/** Pill badge in the top-right corner — e.g. "22 trips", "Safaris". */
|
|
4668
|
+
tripCount?: string;
|
|
4669
|
+
/** Short blurb revealed on hover under the title. */
|
|
4670
|
+
description?: string;
|
|
4671
|
+
/** Accent "go" link under the description — e.g. "Explore Amazon". */
|
|
4672
|
+
ctaLabel?: string;
|
|
4673
|
+
/** Tile footprint in the bento grid. @default "normal" */
|
|
4674
|
+
size?: "featured" | "tall" | "wide" | "normal";
|
|
4675
|
+
/** Tailwind gradient classes for an image-less tile — e.g.
|
|
4676
|
+
* "from-amber-600 to-amber-950". Used only when `image` is omitted. */
|
|
4677
|
+
gradient?: string;
|
|
4678
|
+
}
|
|
4679
|
+
interface ExploreTab {
|
|
4680
|
+
/** Stable id used to track the active tab. */
|
|
4681
|
+
id: string;
|
|
4682
|
+
/** Tab label (e.g. "Destinations"). */
|
|
4683
|
+
label: string;
|
|
4684
|
+
/** Cards shown when this tab is active. */
|
|
4685
|
+
cards: ExploreCard[];
|
|
4686
|
+
/** Optional per-tab "View All" link — overrides the component-level one. */
|
|
4687
|
+
viewAllHref?: string;
|
|
4688
|
+
}
|
|
4689
|
+
interface AdventureExplorerProps {
|
|
4690
|
+
/** Tabs, each with its own set of cards. */
|
|
4691
|
+
tabs: ExploreTab[];
|
|
4692
|
+
/** Small accent eyebrow above the heading (e.g. "Start exploring"). */
|
|
4693
|
+
eyebrow?: string;
|
|
4694
|
+
/** Serif section heading rendered above the filter (e.g. "Find your wilderness"). */
|
|
4695
|
+
heading?: string;
|
|
4696
|
+
/** Supporting line under the heading. */
|
|
4697
|
+
subheading?: string;
|
|
4698
|
+
/** Initially active tab id — defaults to the first tab. */
|
|
4699
|
+
defaultTabId?: string;
|
|
4700
|
+
/** Label for the "View All" CTA. Pass "" to hide it. @default "View All Adventures" */
|
|
4701
|
+
viewAllLabel?: string;
|
|
4702
|
+
/** Href for the "View All" CTA (per-tab `viewAllHref` takes precedence). */
|
|
4703
|
+
viewAllHref?: string;
|
|
4704
|
+
/**
|
|
4705
|
+
* Surface the explorer sits on.
|
|
4706
|
+
* - `"dark"` — dark section, white tab labels (homepage look).
|
|
4707
|
+
* - `"light"` — light surface, dark tab labels.
|
|
4708
|
+
* @default "dark"
|
|
4709
|
+
*/
|
|
4710
|
+
theme?: "dark" | "light";
|
|
4711
|
+
/**
|
|
4712
|
+
* Card arrangement.
|
|
4713
|
+
* - `"carousel"` — horizontal rail of portrait tiles (default).
|
|
4714
|
+
* - `"bento"` — masonry-style grid with variable-span tiles, trip-count
|
|
4715
|
+
* badges and hover-revealed descriptions.
|
|
4716
|
+
* @default "carousel"
|
|
4717
|
+
*/
|
|
4718
|
+
layout?: "carousel" | "bento";
|
|
4719
|
+
/**
|
|
4720
|
+
* Bento layout only — cap how many cards render as tiles. Any cards beyond
|
|
4721
|
+
* the limit collapse into a minimal "more" links row below the grid
|
|
4722
|
+
* (label + trip count). Omit to show every card as a tile.
|
|
4723
|
+
*/
|
|
4724
|
+
bentoLimit?: number;
|
|
4725
|
+
/**
|
|
4726
|
+
* Eyebrow label for the overflow "more" row (bento + `bentoLimit`).
|
|
4727
|
+
* @default "More wild places"
|
|
4728
|
+
*/
|
|
4729
|
+
moreLabel?: string;
|
|
4730
|
+
className?: string;
|
|
4731
|
+
}
|
|
4732
|
+
declare function AdventureExplorer({ tabs, eyebrow, heading, subheading, defaultTabId, viewAllLabel, viewAllHref, theme, layout, bentoLimit, moreLabel, className, }: AdventureExplorerProps): react_jsx_runtime.JSX.Element;
|
|
4733
|
+
|
|
4734
|
+
interface USPItem {
|
|
4735
|
+
/** Icon element — any SVG-based icon (e.g. a lucide `<HeartIcon />`).
|
|
4736
|
+
* It inherits the accent colour and is sized by the component.
|
|
4737
|
+
* Ignored by the `"numbered"` variant, which shows an index instead. */
|
|
4738
|
+
icon?: React.ReactNode;
|
|
4739
|
+
/** Short, bold heading (rendered uppercase). */
|
|
4740
|
+
title: string;
|
|
4741
|
+
/** Supporting copy. */
|
|
4742
|
+
description: string;
|
|
4743
|
+
}
|
|
4744
|
+
interface USPProps {
|
|
4745
|
+
/** The value props / selling points. */
|
|
4746
|
+
items: USPItem[];
|
|
4747
|
+
/** Optional section heading above the grid. */
|
|
4748
|
+
heading?: string;
|
|
4749
|
+
/** Optional supporting line under the heading. */
|
|
4750
|
+
subheading?: string;
|
|
4751
|
+
/** Columns on large screens. Defaults to the item count (clamped 2–4). */
|
|
4752
|
+
columns?: 2 | 3 | 4;
|
|
4753
|
+
/**
|
|
4754
|
+
* Layout variant.
|
|
4755
|
+
* - `"minimal"` — centered icon + text, no container (the default look).
|
|
4756
|
+
* - `"card"` — each item boxed in a card with an icon chip.
|
|
4757
|
+
* - `"inline"` — icon on the left, text on the right, left-aligned.
|
|
4758
|
+
* - `"numbered"` — boxed cards with an italic index (01, 02…) instead of an
|
|
4759
|
+
* icon; left-aligned, title-case headings. No `icon` needed.
|
|
4760
|
+
* @default "minimal"
|
|
4761
|
+
*/
|
|
4762
|
+
variant?: "minimal" | "card" | "inline" | "numbered";
|
|
4763
|
+
/**
|
|
4764
|
+
* Surface the section sits on.
|
|
4765
|
+
* - `"light"` — light grey surface, dark text (the screenshot look).
|
|
4766
|
+
* - `"dark"` — dark surface, light text.
|
|
4767
|
+
* @default "light"
|
|
4768
|
+
*/
|
|
4769
|
+
theme?: "light" | "dark";
|
|
4770
|
+
className?: string;
|
|
4771
|
+
}
|
|
4772
|
+
declare function USP({ items, heading, subheading, columns, variant, theme, className, }: USPProps): react_jsx_runtime.JSX.Element;
|
|
4773
|
+
|
|
4774
|
+
interface SiteFooterChip {
|
|
4775
|
+
label: string;
|
|
4776
|
+
href: string;
|
|
4777
|
+
}
|
|
4778
|
+
interface SiteFooterLink {
|
|
4779
|
+
label: string;
|
|
4780
|
+
href: string;
|
|
4781
|
+
}
|
|
4782
|
+
interface SiteFooterLanguage {
|
|
4783
|
+
/** Locale code shown as the trigger label — e.g. "EN", "NL". */
|
|
4784
|
+
code: string;
|
|
4785
|
+
/** Human-friendly name shown next to the code in the dropdown. */
|
|
4786
|
+
label: string;
|
|
4787
|
+
}
|
|
4788
|
+
interface SiteFooterBadge {
|
|
4789
|
+
/** Image src. Optional when `node` is provided. */
|
|
4790
|
+
src?: string;
|
|
4791
|
+
alt: string;
|
|
4792
|
+
href?: string;
|
|
4793
|
+
/** Image height in px. Defaults to 56. Ignored when `node` is provided. */
|
|
4794
|
+
height?: number;
|
|
4795
|
+
/** Override with a custom React node (e.g. inline SVG). */
|
|
4796
|
+
node?: React.ReactNode;
|
|
4797
|
+
}
|
|
4798
|
+
interface SiteFooterSocial {
|
|
4799
|
+
network: "facebook" | "instagram" | "linkedin" | "youtube" | "twitter";
|
|
4800
|
+
href: string;
|
|
4801
|
+
label?: string;
|
|
4802
|
+
}
|
|
4803
|
+
interface SiteFooterAddress {
|
|
4804
|
+
title: string;
|
|
4805
|
+
lines: string[];
|
|
4806
|
+
}
|
|
4807
|
+
type SiteFooterVariant = "light" | "dark";
|
|
4808
|
+
interface SiteFooterProps {
|
|
4809
|
+
variant?: SiteFooterVariant;
|
|
4810
|
+
/** Brand name shown when no logo is rendered, used in copyright fallback. */
|
|
4811
|
+
brandTitle?: string;
|
|
4812
|
+
/** Logo used on the dark variant. Defaults to the white PlanetaEXO mark. */
|
|
4813
|
+
logoSrcLight?: string;
|
|
4814
|
+
/** Logo used on the light variant. Defaults to the green PlanetaEXO mark. */
|
|
4815
|
+
logoSrcDark?: string;
|
|
4816
|
+
/** Single-logo override — applies to both variants when set. */
|
|
4817
|
+
logoSrc?: string;
|
|
4818
|
+
logoAlt?: string;
|
|
4819
|
+
/** Optional href wrapping the logo. */
|
|
4820
|
+
logoHref?: string;
|
|
4821
|
+
/** Longer disclaimer / legal copy under the logo. */
|
|
4822
|
+
brandDescription?: React.ReactNode;
|
|
4823
|
+
/** Member / association badges rendered under the description. */
|
|
4824
|
+
badges?: SiteFooterBadge[];
|
|
4825
|
+
languages?: SiteFooterLanguage[];
|
|
4826
|
+
currentLanguage?: string;
|
|
4827
|
+
onLanguageChange?: (code: string) => void;
|
|
4828
|
+
address?: SiteFooterAddress;
|
|
4829
|
+
phone?: string;
|
|
4830
|
+
email?: string;
|
|
4831
|
+
socials?: SiteFooterSocial[];
|
|
4832
|
+
themesTitle?: string;
|
|
4833
|
+
themes?: SiteFooterChip[];
|
|
4834
|
+
destinationsTitle?: string;
|
|
4835
|
+
destinations?: SiteFooterChip[];
|
|
4836
|
+
destinationsMore?: {
|
|
4837
|
+
label: string;
|
|
4838
|
+
href: string;
|
|
4839
|
+
};
|
|
4840
|
+
pagesTitle?: string;
|
|
4841
|
+
pages?: SiteFooterLink[];
|
|
4842
|
+
/** Highlighted CTA under the Pages column — e.g. partnerships email. */
|
|
4843
|
+
cta?: {
|
|
4844
|
+
title: string;
|
|
4845
|
+
label: string;
|
|
4846
|
+
href: string;
|
|
4847
|
+
};
|
|
4848
|
+
copyright?: string;
|
|
4849
|
+
legalLinks?: SiteFooterLink[];
|
|
4850
|
+
className?: string;
|
|
4851
|
+
}
|
|
4852
|
+
declare const DEFAULT_FOOTER_THEMES: SiteFooterChip[];
|
|
4853
|
+
declare const DEFAULT_FOOTER_DESTINATIONS: SiteFooterChip[];
|
|
4854
|
+
declare const DEFAULT_FOOTER_PAGES: SiteFooterLink[];
|
|
4855
|
+
declare const DEFAULT_FOOTER_LEGAL: SiteFooterLink[];
|
|
4856
|
+
declare const DEFAULT_FOOTER_LANGUAGES: SiteFooterLanguage[];
|
|
4857
|
+
declare const DEFAULT_FOOTER_SOCIALS: SiteFooterSocial[];
|
|
4858
|
+
declare const DEFAULT_FOOTER_BADGES: SiteFooterBadge[];
|
|
4859
|
+
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;
|
|
4860
|
+
|
|
4861
|
+
interface CtaBannerCta {
|
|
4862
|
+
label: string;
|
|
4863
|
+
href?: string;
|
|
4864
|
+
onClick?: () => void;
|
|
4865
|
+
}
|
|
4866
|
+
interface CtaBannerProps {
|
|
4867
|
+
/** Full-bleed background image URL. */
|
|
4868
|
+
image: string;
|
|
4869
|
+
/** Accessible alt text for the background image. @default "" (decorative) */
|
|
4870
|
+
imageAlt?: string;
|
|
4871
|
+
/** Main headline — rendered uppercase in the heading font. */
|
|
4872
|
+
title: string;
|
|
4873
|
+
/**
|
|
4874
|
+
* Subtitle below the title. Pass a single string for a static line, or an
|
|
4875
|
+
* array to cycle through phrases with a slow crossfade (homepage behaviour:
|
|
4876
|
+
* "make a positive impact" → "travel sustainably" → "support local communities").
|
|
4877
|
+
*/
|
|
4878
|
+
subtitle?: string | string[];
|
|
4879
|
+
/** Underlined call-to-action link below the subtitle. */
|
|
4880
|
+
cta?: CtaBannerCta;
|
|
4881
|
+
/** Milliseconds each rotating subtitle stays visible. @default 3000 */
|
|
4882
|
+
rotateInterval?: number;
|
|
4883
|
+
/**
|
|
4884
|
+
* Pin the background while scrolling (parallax). Applied from `sm` up only —
|
|
4885
|
+
* `background-attachment: fixed` is unreliable on mobile. @default true
|
|
4886
|
+
*/
|
|
4887
|
+
parallax?: boolean;
|
|
4888
|
+
/** Dark overlay opacity over the image, 0–100. @default 35 */
|
|
4889
|
+
overlayOpacity?: number;
|
|
4890
|
+
className?: string;
|
|
4891
|
+
}
|
|
4892
|
+
declare function CtaBanner({ image, imageAlt, title, subtitle, cta, rotateInterval, parallax, overlayOpacity, className, }: CtaBannerProps): react_jsx_runtime.JSX.Element;
|
|
4893
|
+
|
|
4894
|
+
interface BlogJournalFeature {
|
|
4895
|
+
image: string;
|
|
4896
|
+
imageAlt?: string;
|
|
4897
|
+
/** Category pill over the image — e.g. "Destinations". */
|
|
4898
|
+
tag?: string;
|
|
4899
|
+
/** Publish date — e.g. "May 22, 2026". */
|
|
4900
|
+
date?: string;
|
|
4901
|
+
title: string;
|
|
4902
|
+
excerpt?: string;
|
|
4903
|
+
href?: string;
|
|
4904
|
+
/** Whether the link opens in a new tab. */
|
|
4905
|
+
external?: boolean;
|
|
4906
|
+
/** Read-link label. @default "Read the guide" */
|
|
4907
|
+
ctaLabel?: string;
|
|
4908
|
+
}
|
|
4909
|
+
interface BlogJournalPost {
|
|
4910
|
+
image: string;
|
|
4911
|
+
imageAlt?: string;
|
|
4912
|
+
/** Category / kicker — e.g. "Travel guide". */
|
|
4913
|
+
category?: string;
|
|
4914
|
+
date?: string;
|
|
4915
|
+
title: string;
|
|
4916
|
+
href?: string;
|
|
4917
|
+
external?: boolean;
|
|
4918
|
+
}
|
|
4919
|
+
interface BlogJournalProps {
|
|
4920
|
+
/** Eyebrow above the heading — e.g. "The journal". */
|
|
4921
|
+
eyebrow?: string;
|
|
4922
|
+
/** Section heading. */
|
|
4923
|
+
title?: string;
|
|
4924
|
+
/** Supporting line under the heading. */
|
|
4925
|
+
subtitle?: string;
|
|
4926
|
+
/** Right-aligned "view all" link. */
|
|
4927
|
+
link?: {
|
|
4928
|
+
label: string;
|
|
4929
|
+
href?: string;
|
|
4930
|
+
};
|
|
4931
|
+
/** Large featured post (left column). */
|
|
4932
|
+
feature: BlogJournalFeature;
|
|
4933
|
+
/** Compact list of posts (right column). */
|
|
4934
|
+
posts: BlogJournalPost[];
|
|
4935
|
+
/**
|
|
4936
|
+
* Surface the block sits on.
|
|
4937
|
+
* - `"light"` — light surface, dark text (default).
|
|
4938
|
+
* - `"dark"` — dark surface, light text.
|
|
4939
|
+
* @default "light"
|
|
4940
|
+
*/
|
|
4941
|
+
theme?: "light" | "dark";
|
|
4942
|
+
className?: string;
|
|
4943
|
+
}
|
|
4944
|
+
declare function BlogJournal({ eyebrow, title, subtitle, link, feature, posts, theme, className, }: BlogJournalProps): react_jsx_runtime.JSX.Element;
|
|
4945
|
+
|
|
4946
|
+
interface NewHomeSectionLink {
|
|
4947
|
+
label: string;
|
|
4948
|
+
href?: string;
|
|
4949
|
+
}
|
|
4950
|
+
/** A section heading block — eyebrow + title + supporting copy + optional link. */
|
|
4951
|
+
interface NewHomeSectionHead {
|
|
4952
|
+
eyebrow?: string;
|
|
4953
|
+
title: string;
|
|
4954
|
+
subtitle?: string;
|
|
4955
|
+
/** Right-aligned "view all" style link (desktop). */
|
|
4956
|
+
link?: NewHomeSectionLink;
|
|
4957
|
+
}
|
|
4958
|
+
interface NewHomeExpeditions extends NewHomeSectionHead {
|
|
4959
|
+
/** Editorial TripCards shown in a draggable / button-scrolled rail. */
|
|
4960
|
+
trips: TripCardProps[];
|
|
4961
|
+
}
|
|
4962
|
+
interface NewHomePopularChip {
|
|
4963
|
+
label: string;
|
|
4964
|
+
href?: string;
|
|
4965
|
+
/** Visually promotes the chip (solid teal). */
|
|
4966
|
+
featured?: boolean;
|
|
4967
|
+
size?: "sm" | "md" | "lg";
|
|
4968
|
+
}
|
|
4969
|
+
interface NewHomePopular extends NewHomeSectionHead {
|
|
4970
|
+
chips: NewHomePopularChip[];
|
|
4971
|
+
}
|
|
4972
|
+
interface NewHomeStat {
|
|
4973
|
+
/** Headline figure — e.g. "8", "50+", "100%", "★★★★★". */
|
|
4974
|
+
value: string;
|
|
4975
|
+
label: string;
|
|
4976
|
+
}
|
|
4977
|
+
interface NewHomeStats {
|
|
4978
|
+
items: NewHomeStat[];
|
|
4979
|
+
}
|
|
4980
|
+
interface NewHomeReview {
|
|
4981
|
+
quote: string;
|
|
4982
|
+
author: string;
|
|
4983
|
+
/** Filled stars out of 5. @default 5 */
|
|
4984
|
+
stars?: number;
|
|
4985
|
+
}
|
|
4986
|
+
interface NewHomeReviews extends NewHomeSectionHead {
|
|
4987
|
+
items: NewHomeReview[];
|
|
4988
|
+
/** Small disclaimer under the grid (e.g. "Live Trustpilot reviews load here"). */
|
|
4989
|
+
note?: string;
|
|
4990
|
+
}
|
|
4991
|
+
interface NewHomeProps {
|
|
4992
|
+
/** Hero — passed straight through to {@link HomeHeader}. Required. */
|
|
4993
|
+
hero: HomeHeaderProps;
|
|
4994
|
+
/** "Find your wilderness" tabbed explorer — passed to {@link AdventureExplorer}. */
|
|
4995
|
+
explorer?: AdventureExplorerProps;
|
|
4996
|
+
/** Signature-trips rail of editorial {@link TripCard}s. */
|
|
4997
|
+
expeditions?: NewHomeExpeditions;
|
|
4998
|
+
/** "Popular right now" chip cloud. */
|
|
4999
|
+
popular?: NewHomePopular;
|
|
5000
|
+
/** Teal stats band. */
|
|
5001
|
+
stats?: NewHomeStats;
|
|
5002
|
+
/** "Why us" differentiators — passed to {@link USP}. */
|
|
5003
|
+
usp?: USPProps;
|
|
5004
|
+
/** Dark reviews band. */
|
|
5005
|
+
reviews?: NewHomeReviews;
|
|
5006
|
+
/** "The journal" — feature + list block, passed to {@link BlogJournal}. */
|
|
5007
|
+
journal?: BlogJournalProps;
|
|
5008
|
+
/** Full-bleed call-to-action — passed to {@link CtaBanner}. */
|
|
5009
|
+
cta?: CtaBannerProps;
|
|
5010
|
+
/** Site footer — passed to {@link SiteFooter}. */
|
|
5011
|
+
footer?: SiteFooterProps;
|
|
5012
|
+
className?: string;
|
|
5013
|
+
}
|
|
5014
|
+
declare function NewHome({ hero, explorer, expeditions, popular, stats, usp, reviews, journal, cta, footer, className, }: NewHomeProps): react_jsx_runtime.JSX.Element;
|
|
5015
|
+
|
|
5016
|
+
interface SegmentItem {
|
|
5017
|
+
/** Stable id returned by `onValueChange`. */
|
|
5018
|
+
id: string;
|
|
5019
|
+
/** Visible label. */
|
|
5020
|
+
label: string;
|
|
5021
|
+
/**
|
|
5022
|
+
* Optional leading icon — pass a component, e.g. a lucide `CompassIcon`
|
|
5023
|
+
* (not an element). The component sizes and colours it to match the label.
|
|
5024
|
+
*/
|
|
5025
|
+
icon?: React.ComponentType<{
|
|
5026
|
+
className?: string;
|
|
5027
|
+
}>;
|
|
5028
|
+
/** Disable this single segment. */
|
|
5029
|
+
disabled?: boolean;
|
|
5030
|
+
}
|
|
5031
|
+
interface SegmentedControlProps {
|
|
5032
|
+
/** Options rendered as pills, left to right. */
|
|
5033
|
+
items: SegmentItem[];
|
|
5034
|
+
/** Controlled active id. Pair with `onValueChange`. */
|
|
5035
|
+
value?: string;
|
|
5036
|
+
/** Uncontrolled initial active id — defaults to the first item. */
|
|
5037
|
+
defaultValue?: string;
|
|
5038
|
+
/** Fired with the new id when a segment is selected. */
|
|
5039
|
+
onValueChange?: (id: string) => void;
|
|
5040
|
+
/**
|
|
5041
|
+
* Surface the control sits on.
|
|
5042
|
+
* - `"black"` — dark track, light labels (for dark surfaces).
|
|
5043
|
+
* - `"white"` — light track, dark labels (for light surfaces).
|
|
5044
|
+
* @default "black"
|
|
5045
|
+
*/
|
|
5046
|
+
variant?: "black" | "white";
|
|
5047
|
+
/** Pill density. @default "md" */
|
|
5048
|
+
size?: "sm" | "md";
|
|
5049
|
+
/** Stretch the track to fill its container, distributing pills evenly. */
|
|
5050
|
+
fullWidth?: boolean;
|
|
5051
|
+
/**
|
|
5052
|
+
* Icon-collapse mode. Requires each item to have an `icon`.
|
|
5053
|
+
* - `true` — only the active segment shows its label; the others collapse to
|
|
5054
|
+
* icon-only, with a smooth width transition on selection.
|
|
5055
|
+
* - `"all"` — every segment collapses to icon-only, including the active one
|
|
5056
|
+
* (which keeps its highlighted pill, so it stays visible + clickable).
|
|
5057
|
+
* Useful for a compact floating/stuck state.
|
|
5058
|
+
* @default false
|
|
5059
|
+
*/
|
|
5060
|
+
collapse?: boolean | "all";
|
|
5061
|
+
/** Accessible label for the group. @default "Options" */
|
|
5062
|
+
"aria-label"?: string;
|
|
5063
|
+
className?: string;
|
|
5064
|
+
}
|
|
5065
|
+
declare function SegmentedControl({ items, value, defaultValue, onValueChange, variant, size, fullWidth, collapse, "aria-label": ariaLabel, className, }: SegmentedControlProps): react_jsx_runtime.JSX.Element;
|
|
5066
|
+
|
|
5067
|
+
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 };
|