@planetaexo/design-system 0.52.3 → 0.54.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1193 -199
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +261 -10
- package/dist/index.d.ts +261 -10
- package/dist/index.js +1154 -171
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -2428,18 +2428,52 @@ interface PictureProps extends React.ImgHTMLAttributes<HTMLImageElement> {
|
|
|
2428
2428
|
* AVIF, art-direction, etc. Render order = priority.
|
|
2429
2429
|
*/
|
|
2430
2430
|
extraSources?: React.ReactNode;
|
|
2431
|
+
/**
|
|
2432
|
+
* Disable lazy loading. Use for LCP (hero, first card above the fold)
|
|
2433
|
+
* so the browser starts the request immediately instead of waiting for
|
|
2434
|
+
* the IntersectionObserver to fire.
|
|
2435
|
+
* @default false
|
|
2436
|
+
*/
|
|
2437
|
+
eager?: boolean;
|
|
2438
|
+
/**
|
|
2439
|
+
* How far before the image enters the viewport to start loading.
|
|
2440
|
+
* Matches WP-Rocket's "Load images on visible viewport" — anything
|
|
2441
|
+
* within `rootMargin` triggers the swap. @default "200px"
|
|
2442
|
+
*/
|
|
2443
|
+
rootMargin?: string;
|
|
2431
2444
|
}
|
|
2432
2445
|
/**
|
|
2433
|
-
* `<img>` with a transparent WebP `<source>` wrapper
|
|
2446
|
+
* `<img>` with a transparent WebP `<source>` wrapper AND
|
|
2447
|
+
* IntersectionObserver-based lazy load (WP-Rocket style).
|
|
2434
2448
|
*
|
|
2435
|
-
*
|
|
2436
|
-
*
|
|
2437
|
-
* the
|
|
2449
|
+
* Behavior:
|
|
2450
|
+
* - SSR / first paint: the `<img>` renders a 1×1 transparent placeholder
|
|
2451
|
+
* in `src`; the real URL lives in `data-src`. The `<source srcset>` is
|
|
2452
|
+
* only emitted once the image enters the viewport — so no network
|
|
2453
|
+
* request fires for off-screen images, period.
|
|
2454
|
+
* - On mount: an `IntersectionObserver` watches with
|
|
2455
|
+
* `rootMargin: 200px` (configurable). When the placeholder gets within
|
|
2456
|
+
* 200px of the viewport, state flips and the component re-renders
|
|
2457
|
+
* with the real `src` (+ WebP `<source>` if eligible). The browser
|
|
2458
|
+
* decodes asynchronously thanks to `decoding="async"`.
|
|
2459
|
+
* - Pass `eager` to skip the observer entirely — required for LCP
|
|
2460
|
+
* images (hero, above-the-fold cards). Eager renders the real URL
|
|
2461
|
+
* synchronously.
|
|
2438
2462
|
*
|
|
2439
|
-
*
|
|
2440
|
-
*
|
|
2463
|
+
* Why not just `loading="lazy"`?
|
|
2464
|
+
* Native `loading="lazy"` is honored by modern browsers but the
|
|
2465
|
+
* threshold isn't tunable (Chromium loads at ~3 viewports out, Firefox
|
|
2466
|
+
* at the next page). WP-Rocket's appeal is the predictable, small
|
|
2467
|
+
* `rootMargin` — 200px feels much more "just in time", saves more
|
|
2468
|
+
* bandwidth on long pages, and tests cleanly via DevTools network throttling.
|
|
2469
|
+
*
|
|
2470
|
+
* SSR safety:
|
|
2471
|
+
* Marked `"use client"` because of the observer. The first render
|
|
2472
|
+
* (server + client hydration) emits the placeholder; the swap happens
|
|
2473
|
+
* one effect tick later. Hydration mismatch is impossible because both
|
|
2474
|
+
* sides start from `visible = eager`.
|
|
2441
2475
|
*/
|
|
2442
|
-
declare function Picture({ src, extraSources, ...imgProps }: PictureProps): react_jsx_runtime.JSX.Element;
|
|
2476
|
+
declare function Picture({ src, extraSources, eager, rootMargin, decoding, loading, ...imgProps }: PictureProps): react_jsx_runtime.JSX.Element;
|
|
2443
2477
|
|
|
2444
2478
|
/**
|
|
2445
2479
|
* WebP-fallback helpers for components that render content-image URLs.
|
|
@@ -3037,6 +3071,81 @@ interface TripPageProps {
|
|
|
3037
3071
|
}
|
|
3038
3072
|
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;
|
|
3039
3073
|
|
|
3074
|
+
interface Category2Trip extends TripCardProps {
|
|
3075
|
+
/** Marca a trip como featured — sobe para o topo do grid principal. */
|
|
3076
|
+
featured?: boolean;
|
|
3077
|
+
}
|
|
3078
|
+
interface Category2BlogPost {
|
|
3079
|
+
title: string;
|
|
3080
|
+
href: string;
|
|
3081
|
+
image: string;
|
|
3082
|
+
imageAlt?: string;
|
|
3083
|
+
excerpt?: string;
|
|
3084
|
+
category?: string;
|
|
3085
|
+
readingTime?: string;
|
|
3086
|
+
}
|
|
3087
|
+
interface Category2Faq {
|
|
3088
|
+
question: string;
|
|
3089
|
+
answer: React.ReactNode;
|
|
3090
|
+
}
|
|
3091
|
+
interface Category2SortOption {
|
|
3092
|
+
id: string;
|
|
3093
|
+
label: string;
|
|
3094
|
+
}
|
|
3095
|
+
interface CategoryPage2Props {
|
|
3096
|
+
title: string;
|
|
3097
|
+
intro?: React.ReactNode;
|
|
3098
|
+
heroImage?: string;
|
|
3099
|
+
/**
|
|
3100
|
+
* Trustpilot Mini widget rendered above the title in the hero —
|
|
3101
|
+
* same configuration shape used in the TripPage pricing sidebar.
|
|
3102
|
+
*/
|
|
3103
|
+
trustpilotMini?: TrustpilotWidgetConfig;
|
|
3104
|
+
breadcrumb?: Array<{
|
|
3105
|
+
label: string;
|
|
3106
|
+
href?: string;
|
|
3107
|
+
}>;
|
|
3108
|
+
/** Pass true (or a links array) to render the transparent SiteHeader over the hero. */
|
|
3109
|
+
siteHeader?: boolean | SiteHeaderLink[];
|
|
3110
|
+
popularTours?: Category2Trip[];
|
|
3111
|
+
popularToursTitle?: string;
|
|
3112
|
+
popularToursEyebrow?: string;
|
|
3113
|
+
trips: Category2Trip[];
|
|
3114
|
+
tripsTitle?: string;
|
|
3115
|
+
tripsEyebrow?: string;
|
|
3116
|
+
filterGroups?: FilterGroup[];
|
|
3117
|
+
sortOptions?: Category2SortOption[];
|
|
3118
|
+
defaultSort?: string;
|
|
3119
|
+
/** Number of trips shown before the "Load more" button appears. @default 15 */
|
|
3120
|
+
tripsInitialCount?: number;
|
|
3121
|
+
trustpilot?: TrustpilotWidgetConfig;
|
|
3122
|
+
reviewsTitle?: string;
|
|
3123
|
+
/** Optional subtitle/intro paragraph below the reviews H2. */
|
|
3124
|
+
reviewsSubtitle?: React.ReactNode;
|
|
3125
|
+
/** Section H2 (e.g. "About Pantanal"). */
|
|
3126
|
+
aboutTitle?: string;
|
|
3127
|
+
/** Rich-text intro paragraphs about the destination. */
|
|
3128
|
+
aboutContent?: React.ReactNode;
|
|
3129
|
+
/** Lead-in line above the blog cards (e.g. "Read stories about Pantanal in our blog"). */
|
|
3130
|
+
blogIntro?: React.ReactNode;
|
|
3131
|
+
/** Optional right-aligned link next to the blog intro (e.g. travel guide). */
|
|
3132
|
+
travelGuideHref?: string;
|
|
3133
|
+
travelGuideLabel?: string;
|
|
3134
|
+
blogPosts?: Category2BlogPost[];
|
|
3135
|
+
/** @deprecated use `aboutTitle` */
|
|
3136
|
+
blogPostsTitle?: string;
|
|
3137
|
+
/** @deprecated use `travelGuideHref` */
|
|
3138
|
+
blogPostsViewAllHref?: string;
|
|
3139
|
+
faqs?: Category2Faq[];
|
|
3140
|
+
faqsTitle?: string;
|
|
3141
|
+
/** Number of FAQs shown before the "See more" button appears. @default 5 */
|
|
3142
|
+
faqInitialCount?: number;
|
|
3143
|
+
gallery?: (string | PhotoGalleryPhoto)[];
|
|
3144
|
+
galleryTitle?: string;
|
|
3145
|
+
className?: string;
|
|
3146
|
+
}
|
|
3147
|
+
declare function CategoryPage2({ title, intro, heroImage, 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;
|
|
3148
|
+
|
|
3040
3149
|
type ActivityCardSize = "sm" | "md" | "lg";
|
|
3041
3150
|
interface ActivityCardProps {
|
|
3042
3151
|
/** URL da imagem de capa */
|
|
@@ -3063,10 +3172,18 @@ declare function ActivityCard({ image, imageAlt, badge, icon, title, description
|
|
|
3063
3172
|
type AlertVariant = "error" | "warning" | "success" | "info";
|
|
3064
3173
|
interface AlertProps {
|
|
3065
3174
|
variant?: AlertVariant;
|
|
3066
|
-
|
|
3175
|
+
/** Título em negrito (font-ui). Quando presente, vira layout de banner. */
|
|
3176
|
+
title?: React.ReactNode;
|
|
3177
|
+
/** Ícone à esquerda (ex.: lucide). Tamanho recomendado 16–20px. */
|
|
3178
|
+
icon?: React.ReactNode;
|
|
3179
|
+
/** Slot de ação à direita (ex.: <Button> ou link). */
|
|
3180
|
+
action?: React.ReactNode;
|
|
3181
|
+
/** Override do papel ARIA. Default: "status" (use "alert" p/ urgência). */
|
|
3182
|
+
role?: "status" | "alert";
|
|
3183
|
+
children?: React.ReactNode;
|
|
3067
3184
|
className?: string;
|
|
3068
3185
|
}
|
|
3069
|
-
declare function Alert({ variant, children, className }: AlertProps): react_jsx_runtime.JSX.Element;
|
|
3186
|
+
declare function Alert({ variant, title, icon, action, role, children, className, }: AlertProps): react_jsx_runtime.JSX.Element;
|
|
3070
3187
|
|
|
3071
3188
|
type ToastVariant = "info" | "success" | "warning" | "error";
|
|
3072
3189
|
interface ToastProps {
|
|
@@ -3592,4 +3709,138 @@ interface AskExoProps {
|
|
|
3592
3709
|
}
|
|
3593
3710
|
declare function AskExo({ baseUrl, variant, eyebrow, title, subtitle, suggestions, inputPlaceholder, submitLabel, logoSrc, className, teaser, teaserDelayMs, teaserDurationMs, }: AskExoProps): react_jsx_runtime.JSX.Element;
|
|
3594
3711
|
|
|
3595
|
-
|
|
3712
|
+
type DepartureStatus = "draft" | "pending-approval" | "pending-group" | "confirmed" | "payment-pending" | "payment-reconciliation" | "fully-paid" | "full" | "waiting-list" | "operating" | "cancelled";
|
|
3713
|
+
type BadgeVariant = "default" | "secondary" | "destructive" | "outline" | "success" | "warning" | "info" | "neutral";
|
|
3714
|
+
interface StatusConfig {
|
|
3715
|
+
label: string;
|
|
3716
|
+
variant: BadgeVariant;
|
|
3717
|
+
dot: string;
|
|
3718
|
+
}
|
|
3719
|
+
declare const STATUS_MAP: Record<DepartureStatus, StatusConfig>;
|
|
3720
|
+
interface StatusBadgeProps {
|
|
3721
|
+
status: DepartureStatus;
|
|
3722
|
+
/** Mostra um ponto colorido antes do label. Default: true. */
|
|
3723
|
+
dot?: boolean;
|
|
3724
|
+
/** Sobrescreve o label padrão (ex.: i18n). */
|
|
3725
|
+
label?: string;
|
|
3726
|
+
className?: string;
|
|
3727
|
+
}
|
|
3728
|
+
declare function StatusBadge({ status, dot, label, className }: StatusBadgeProps): react_jsx_runtime.JSX.Element;
|
|
3729
|
+
|
|
3730
|
+
interface GroupStatusBannerProps {
|
|
3731
|
+
variant?: AlertVariant;
|
|
3732
|
+
title?: React.ReactNode;
|
|
3733
|
+
icon?: React.ReactNode;
|
|
3734
|
+
action?: React.ReactNode;
|
|
3735
|
+
/** Urgência: usa role="alert" (anuncia imediatamente). Default: false. */
|
|
3736
|
+
urgent?: boolean;
|
|
3737
|
+
children?: React.ReactNode;
|
|
3738
|
+
className?: string;
|
|
3739
|
+
}
|
|
3740
|
+
declare function GroupStatusBanner({ variant, title, icon, action, urgent, children, className, }: GroupStatusBannerProps): react_jsx_runtime.JSX.Element;
|
|
3741
|
+
|
|
3742
|
+
interface ParticipantCounterProps {
|
|
3743
|
+
current: number;
|
|
3744
|
+
max: number;
|
|
3745
|
+
/** Label do sufixo. Default: "Travelers". */
|
|
3746
|
+
label?: string;
|
|
3747
|
+
/** Esconde o ícone. */
|
|
3748
|
+
hideIcon?: boolean;
|
|
3749
|
+
className?: string;
|
|
3750
|
+
}
|
|
3751
|
+
declare function ParticipantCounter({ current, max, label, hideIcon, className, }: ParticipantCounterProps): react_jsx_runtime.JSX.Element;
|
|
3752
|
+
|
|
3753
|
+
interface GroupProgressBarProps {
|
|
3754
|
+
/** Participantes confirmados no momento. */
|
|
3755
|
+
current: number;
|
|
3756
|
+
/** Quórum mínimo para a partida acontecer. */
|
|
3757
|
+
min: number;
|
|
3758
|
+
/** Capacidade máxima. */
|
|
3759
|
+
max: number;
|
|
3760
|
+
/** Esconde os rótulos numéricos abaixo da barra. */
|
|
3761
|
+
hideLabels?: boolean;
|
|
3762
|
+
className?: string;
|
|
3763
|
+
}
|
|
3764
|
+
declare function GroupProgressBar({ current, min, max, hideLabels, className, }: GroupProgressBarProps): react_jsx_runtime.JSX.Element;
|
|
3765
|
+
|
|
3766
|
+
interface PricingTier {
|
|
3767
|
+
/** Rótulo do tier, ex.: "1", "2", "4+". */
|
|
3768
|
+
travelers: string;
|
|
3769
|
+
/** Número mínimo de participantes que ativa o tier (p/ detectar o atual). */
|
|
3770
|
+
threshold: number;
|
|
3771
|
+
/** Preço por pessoa já formatado, ex.: "R$ 2.300". */
|
|
3772
|
+
price: string;
|
|
3773
|
+
}
|
|
3774
|
+
interface PricingMatrixCardProps {
|
|
3775
|
+
tiers: PricingTier[];
|
|
3776
|
+
/** Participantes atuais — destaca o tier ativo. */
|
|
3777
|
+
currentTravelers: number;
|
|
3778
|
+
title?: string;
|
|
3779
|
+
/** Trava visual pós-cutoff (cinza, sem destaque). */
|
|
3780
|
+
locked?: boolean;
|
|
3781
|
+
className?: string;
|
|
3782
|
+
}
|
|
3783
|
+
declare function PricingMatrixCard({ tiers, currentTravelers, title, locked, className, }: PricingMatrixCardProps): react_jsx_runtime.JSX.Element;
|
|
3784
|
+
|
|
3785
|
+
interface PriceProgressProps {
|
|
3786
|
+
/** Preço atual formatado, ex.: "R$ 2.700". */
|
|
3787
|
+
currentPrice: string;
|
|
3788
|
+
/** Menor preço possível formatado, ex.: "R$ 2.300". */
|
|
3789
|
+
lowestPrice: string;
|
|
3790
|
+
/** Participantes que faltam para o menor preço. */
|
|
3791
|
+
travelersToLowest: number;
|
|
3792
|
+
/** % de progresso até o menor preço (0–100). */
|
|
3793
|
+
pct: number;
|
|
3794
|
+
className?: string;
|
|
3795
|
+
}
|
|
3796
|
+
declare function PriceProgress({ currentPrice, lowestPrice, travelersToLowest, pct, className, }: PriceProgressProps): react_jsx_runtime.JSX.Element;
|
|
3797
|
+
|
|
3798
|
+
interface Participant {
|
|
3799
|
+
firstName: string;
|
|
3800
|
+
/** Emoji da bandeira, ex.: "🇧🇷". Decorativo. */
|
|
3801
|
+
flag?: string;
|
|
3802
|
+
/** Nome do país (para aria-label). */
|
|
3803
|
+
country?: string;
|
|
3804
|
+
/** URL do avatar (opcional — senão usa iniciais). */
|
|
3805
|
+
avatarUrl?: string;
|
|
3806
|
+
isLeader?: boolean;
|
|
3807
|
+
}
|
|
3808
|
+
interface ParticipantListProps {
|
|
3809
|
+
participants: Participant[];
|
|
3810
|
+
/** Slots vazios a renderizar (placeholders "aguardando viajantes"). */
|
|
3811
|
+
emptySlots?: number;
|
|
3812
|
+
title?: string;
|
|
3813
|
+
leaderLabel?: string;
|
|
3814
|
+
/** Texto do estado vazio total. */
|
|
3815
|
+
emptyMessage?: string;
|
|
3816
|
+
className?: string;
|
|
3817
|
+
}
|
|
3818
|
+
declare function ParticipantList({ participants, emptySlots, title, leaderLabel, emptyMessage, className, }: ParticipantListProps): react_jsx_runtime.JSX.Element;
|
|
3819
|
+
|
|
3820
|
+
interface ShareWidgetProps {
|
|
3821
|
+
/** URL pública da partida. */
|
|
3822
|
+
url: string;
|
|
3823
|
+
/** Texto pré-preenchido para os canais. */
|
|
3824
|
+
message?: string;
|
|
3825
|
+
/** Layout: "row" (desktop, com labels) | "icons" (mobile, só ícones). */
|
|
3826
|
+
layout?: "row" | "icons";
|
|
3827
|
+
title?: string;
|
|
3828
|
+
className?: string;
|
|
3829
|
+
}
|
|
3830
|
+
declare function ShareWidget({ url, message, layout, title, className, }: ShareWidgetProps): react_jsx_runtime.JSX.Element;
|
|
3831
|
+
|
|
3832
|
+
interface StickyBookingCardProps {
|
|
3833
|
+
currentPrice: string;
|
|
3834
|
+
/** Depósito (20% do menor preço) já formatado. */
|
|
3835
|
+
deposit: string;
|
|
3836
|
+
spotsRemaining: number;
|
|
3837
|
+
/** Estado: joinable | full | closed | owner. */
|
|
3838
|
+
mode?: "joinable" | "full" | "closed" | "owner";
|
|
3839
|
+
onPrimary?: () => void;
|
|
3840
|
+
/** Mensagem auxiliar abaixo do CTA (ex.: cutoff). */
|
|
3841
|
+
note?: string;
|
|
3842
|
+
className?: string;
|
|
3843
|
+
}
|
|
3844
|
+
declare function StickyBookingCard({ currentPrice, deposit, spotsRemaining, mode, onPrimary, note, className, }: StickyBookingCardProps): react_jsx_runtime.JSX.Element;
|
|
3845
|
+
|
|
3846
|
+
export { ActivityCard, type ActivityCardProps, type ActivityCardSize, AgentContactCard, type AgentContactCardProps, Alert, type AlertProps, type AlertVariant, AskExo, type AskExoProps, type AskExoSuggestion, BirthDateField, type BirthDateFieldProps, 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 BookingSummaryRow, type BookingTraveller, Button, type ButtonProps, COUNTRIES, type Category2BlogPost, type Category2Faq, type Category2SortOption, type Category2Trip, CategoryPage2, type CategoryPage2Props, type ConfirmationAdventure, type ConfirmationDepositInfo, type ConfirmationLineItem, type ConfirmationTraveller, CounterField, type CounterFieldProps, type CountryOption, CountrySearchField, type CountrySearchFieldProps, type CurrencyEstimate, 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 FilterGroup, type FilterItem, FilterPanel, type FilterPanelProps, FloatingInput, type FloatingInputProps, FloatingSelect, type FloatingSelectProps, GroupProgressBar, type GroupProgressBarProps, GroupStatusBanner, type GroupStatusBannerProps, 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, 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, ShareWidget, type ShareWidgetProps, 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, buttonVariants, cn, emailTokens, formatCpf, getStripeAppearance, itineraryDaySpecIcons, stripeAppearance, validateCpf, webpVariantUrl, wrapEmailHtml };
|
package/dist/index.d.ts
CHANGED
|
@@ -2428,18 +2428,52 @@ interface PictureProps extends React.ImgHTMLAttributes<HTMLImageElement> {
|
|
|
2428
2428
|
* AVIF, art-direction, etc. Render order = priority.
|
|
2429
2429
|
*/
|
|
2430
2430
|
extraSources?: React.ReactNode;
|
|
2431
|
+
/**
|
|
2432
|
+
* Disable lazy loading. Use for LCP (hero, first card above the fold)
|
|
2433
|
+
* so the browser starts the request immediately instead of waiting for
|
|
2434
|
+
* the IntersectionObserver to fire.
|
|
2435
|
+
* @default false
|
|
2436
|
+
*/
|
|
2437
|
+
eager?: boolean;
|
|
2438
|
+
/**
|
|
2439
|
+
* How far before the image enters the viewport to start loading.
|
|
2440
|
+
* Matches WP-Rocket's "Load images on visible viewport" — anything
|
|
2441
|
+
* within `rootMargin` triggers the swap. @default "200px"
|
|
2442
|
+
*/
|
|
2443
|
+
rootMargin?: string;
|
|
2431
2444
|
}
|
|
2432
2445
|
/**
|
|
2433
|
-
* `<img>` with a transparent WebP `<source>` wrapper
|
|
2446
|
+
* `<img>` with a transparent WebP `<source>` wrapper AND
|
|
2447
|
+
* IntersectionObserver-based lazy load (WP-Rocket style).
|
|
2434
2448
|
*
|
|
2435
|
-
*
|
|
2436
|
-
*
|
|
2437
|
-
* the
|
|
2449
|
+
* Behavior:
|
|
2450
|
+
* - SSR / first paint: the `<img>` renders a 1×1 transparent placeholder
|
|
2451
|
+
* in `src`; the real URL lives in `data-src`. The `<source srcset>` is
|
|
2452
|
+
* only emitted once the image enters the viewport — so no network
|
|
2453
|
+
* request fires for off-screen images, period.
|
|
2454
|
+
* - On mount: an `IntersectionObserver` watches with
|
|
2455
|
+
* `rootMargin: 200px` (configurable). When the placeholder gets within
|
|
2456
|
+
* 200px of the viewport, state flips and the component re-renders
|
|
2457
|
+
* with the real `src` (+ WebP `<source>` if eligible). The browser
|
|
2458
|
+
* decodes asynchronously thanks to `decoding="async"`.
|
|
2459
|
+
* - Pass `eager` to skip the observer entirely — required for LCP
|
|
2460
|
+
* images (hero, above-the-fold cards). Eager renders the real URL
|
|
2461
|
+
* synchronously.
|
|
2438
2462
|
*
|
|
2439
|
-
*
|
|
2440
|
-
*
|
|
2463
|
+
* Why not just `loading="lazy"`?
|
|
2464
|
+
* Native `loading="lazy"` is honored by modern browsers but the
|
|
2465
|
+
* threshold isn't tunable (Chromium loads at ~3 viewports out, Firefox
|
|
2466
|
+
* at the next page). WP-Rocket's appeal is the predictable, small
|
|
2467
|
+
* `rootMargin` — 200px feels much more "just in time", saves more
|
|
2468
|
+
* bandwidth on long pages, and tests cleanly via DevTools network throttling.
|
|
2469
|
+
*
|
|
2470
|
+
* SSR safety:
|
|
2471
|
+
* Marked `"use client"` because of the observer. The first render
|
|
2472
|
+
* (server + client hydration) emits the placeholder; the swap happens
|
|
2473
|
+
* one effect tick later. Hydration mismatch is impossible because both
|
|
2474
|
+
* sides start from `visible = eager`.
|
|
2441
2475
|
*/
|
|
2442
|
-
declare function Picture({ src, extraSources, ...imgProps }: PictureProps): react_jsx_runtime.JSX.Element;
|
|
2476
|
+
declare function Picture({ src, extraSources, eager, rootMargin, decoding, loading, ...imgProps }: PictureProps): react_jsx_runtime.JSX.Element;
|
|
2443
2477
|
|
|
2444
2478
|
/**
|
|
2445
2479
|
* WebP-fallback helpers for components that render content-image URLs.
|
|
@@ -3037,6 +3071,81 @@ interface TripPageProps {
|
|
|
3037
3071
|
}
|
|
3038
3072
|
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;
|
|
3039
3073
|
|
|
3074
|
+
interface Category2Trip extends TripCardProps {
|
|
3075
|
+
/** Marca a trip como featured — sobe para o topo do grid principal. */
|
|
3076
|
+
featured?: boolean;
|
|
3077
|
+
}
|
|
3078
|
+
interface Category2BlogPost {
|
|
3079
|
+
title: string;
|
|
3080
|
+
href: string;
|
|
3081
|
+
image: string;
|
|
3082
|
+
imageAlt?: string;
|
|
3083
|
+
excerpt?: string;
|
|
3084
|
+
category?: string;
|
|
3085
|
+
readingTime?: string;
|
|
3086
|
+
}
|
|
3087
|
+
interface Category2Faq {
|
|
3088
|
+
question: string;
|
|
3089
|
+
answer: React.ReactNode;
|
|
3090
|
+
}
|
|
3091
|
+
interface Category2SortOption {
|
|
3092
|
+
id: string;
|
|
3093
|
+
label: string;
|
|
3094
|
+
}
|
|
3095
|
+
interface CategoryPage2Props {
|
|
3096
|
+
title: string;
|
|
3097
|
+
intro?: React.ReactNode;
|
|
3098
|
+
heroImage?: string;
|
|
3099
|
+
/**
|
|
3100
|
+
* Trustpilot Mini widget rendered above the title in the hero —
|
|
3101
|
+
* same configuration shape used in the TripPage pricing sidebar.
|
|
3102
|
+
*/
|
|
3103
|
+
trustpilotMini?: TrustpilotWidgetConfig;
|
|
3104
|
+
breadcrumb?: Array<{
|
|
3105
|
+
label: string;
|
|
3106
|
+
href?: string;
|
|
3107
|
+
}>;
|
|
3108
|
+
/** Pass true (or a links array) to render the transparent SiteHeader over the hero. */
|
|
3109
|
+
siteHeader?: boolean | SiteHeaderLink[];
|
|
3110
|
+
popularTours?: Category2Trip[];
|
|
3111
|
+
popularToursTitle?: string;
|
|
3112
|
+
popularToursEyebrow?: string;
|
|
3113
|
+
trips: Category2Trip[];
|
|
3114
|
+
tripsTitle?: string;
|
|
3115
|
+
tripsEyebrow?: string;
|
|
3116
|
+
filterGroups?: FilterGroup[];
|
|
3117
|
+
sortOptions?: Category2SortOption[];
|
|
3118
|
+
defaultSort?: string;
|
|
3119
|
+
/** Number of trips shown before the "Load more" button appears. @default 15 */
|
|
3120
|
+
tripsInitialCount?: number;
|
|
3121
|
+
trustpilot?: TrustpilotWidgetConfig;
|
|
3122
|
+
reviewsTitle?: string;
|
|
3123
|
+
/** Optional subtitle/intro paragraph below the reviews H2. */
|
|
3124
|
+
reviewsSubtitle?: React.ReactNode;
|
|
3125
|
+
/** Section H2 (e.g. "About Pantanal"). */
|
|
3126
|
+
aboutTitle?: string;
|
|
3127
|
+
/** Rich-text intro paragraphs about the destination. */
|
|
3128
|
+
aboutContent?: React.ReactNode;
|
|
3129
|
+
/** Lead-in line above the blog cards (e.g. "Read stories about Pantanal in our blog"). */
|
|
3130
|
+
blogIntro?: React.ReactNode;
|
|
3131
|
+
/** Optional right-aligned link next to the blog intro (e.g. travel guide). */
|
|
3132
|
+
travelGuideHref?: string;
|
|
3133
|
+
travelGuideLabel?: string;
|
|
3134
|
+
blogPosts?: Category2BlogPost[];
|
|
3135
|
+
/** @deprecated use `aboutTitle` */
|
|
3136
|
+
blogPostsTitle?: string;
|
|
3137
|
+
/** @deprecated use `travelGuideHref` */
|
|
3138
|
+
blogPostsViewAllHref?: string;
|
|
3139
|
+
faqs?: Category2Faq[];
|
|
3140
|
+
faqsTitle?: string;
|
|
3141
|
+
/** Number of FAQs shown before the "See more" button appears. @default 5 */
|
|
3142
|
+
faqInitialCount?: number;
|
|
3143
|
+
gallery?: (string | PhotoGalleryPhoto)[];
|
|
3144
|
+
galleryTitle?: string;
|
|
3145
|
+
className?: string;
|
|
3146
|
+
}
|
|
3147
|
+
declare function CategoryPage2({ title, intro, heroImage, 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;
|
|
3148
|
+
|
|
3040
3149
|
type ActivityCardSize = "sm" | "md" | "lg";
|
|
3041
3150
|
interface ActivityCardProps {
|
|
3042
3151
|
/** URL da imagem de capa */
|
|
@@ -3063,10 +3172,18 @@ declare function ActivityCard({ image, imageAlt, badge, icon, title, description
|
|
|
3063
3172
|
type AlertVariant = "error" | "warning" | "success" | "info";
|
|
3064
3173
|
interface AlertProps {
|
|
3065
3174
|
variant?: AlertVariant;
|
|
3066
|
-
|
|
3175
|
+
/** Título em negrito (font-ui). Quando presente, vira layout de banner. */
|
|
3176
|
+
title?: React.ReactNode;
|
|
3177
|
+
/** Ícone à esquerda (ex.: lucide). Tamanho recomendado 16–20px. */
|
|
3178
|
+
icon?: React.ReactNode;
|
|
3179
|
+
/** Slot de ação à direita (ex.: <Button> ou link). */
|
|
3180
|
+
action?: React.ReactNode;
|
|
3181
|
+
/** Override do papel ARIA. Default: "status" (use "alert" p/ urgência). */
|
|
3182
|
+
role?: "status" | "alert";
|
|
3183
|
+
children?: React.ReactNode;
|
|
3067
3184
|
className?: string;
|
|
3068
3185
|
}
|
|
3069
|
-
declare function Alert({ variant, children, className }: AlertProps): react_jsx_runtime.JSX.Element;
|
|
3186
|
+
declare function Alert({ variant, title, icon, action, role, children, className, }: AlertProps): react_jsx_runtime.JSX.Element;
|
|
3070
3187
|
|
|
3071
3188
|
type ToastVariant = "info" | "success" | "warning" | "error";
|
|
3072
3189
|
interface ToastProps {
|
|
@@ -3592,4 +3709,138 @@ interface AskExoProps {
|
|
|
3592
3709
|
}
|
|
3593
3710
|
declare function AskExo({ baseUrl, variant, eyebrow, title, subtitle, suggestions, inputPlaceholder, submitLabel, logoSrc, className, teaser, teaserDelayMs, teaserDurationMs, }: AskExoProps): react_jsx_runtime.JSX.Element;
|
|
3594
3711
|
|
|
3595
|
-
|
|
3712
|
+
type DepartureStatus = "draft" | "pending-approval" | "pending-group" | "confirmed" | "payment-pending" | "payment-reconciliation" | "fully-paid" | "full" | "waiting-list" | "operating" | "cancelled";
|
|
3713
|
+
type BadgeVariant = "default" | "secondary" | "destructive" | "outline" | "success" | "warning" | "info" | "neutral";
|
|
3714
|
+
interface StatusConfig {
|
|
3715
|
+
label: string;
|
|
3716
|
+
variant: BadgeVariant;
|
|
3717
|
+
dot: string;
|
|
3718
|
+
}
|
|
3719
|
+
declare const STATUS_MAP: Record<DepartureStatus, StatusConfig>;
|
|
3720
|
+
interface StatusBadgeProps {
|
|
3721
|
+
status: DepartureStatus;
|
|
3722
|
+
/** Mostra um ponto colorido antes do label. Default: true. */
|
|
3723
|
+
dot?: boolean;
|
|
3724
|
+
/** Sobrescreve o label padrão (ex.: i18n). */
|
|
3725
|
+
label?: string;
|
|
3726
|
+
className?: string;
|
|
3727
|
+
}
|
|
3728
|
+
declare function StatusBadge({ status, dot, label, className }: StatusBadgeProps): react_jsx_runtime.JSX.Element;
|
|
3729
|
+
|
|
3730
|
+
interface GroupStatusBannerProps {
|
|
3731
|
+
variant?: AlertVariant;
|
|
3732
|
+
title?: React.ReactNode;
|
|
3733
|
+
icon?: React.ReactNode;
|
|
3734
|
+
action?: React.ReactNode;
|
|
3735
|
+
/** Urgência: usa role="alert" (anuncia imediatamente). Default: false. */
|
|
3736
|
+
urgent?: boolean;
|
|
3737
|
+
children?: React.ReactNode;
|
|
3738
|
+
className?: string;
|
|
3739
|
+
}
|
|
3740
|
+
declare function GroupStatusBanner({ variant, title, icon, action, urgent, children, className, }: GroupStatusBannerProps): react_jsx_runtime.JSX.Element;
|
|
3741
|
+
|
|
3742
|
+
interface ParticipantCounterProps {
|
|
3743
|
+
current: number;
|
|
3744
|
+
max: number;
|
|
3745
|
+
/** Label do sufixo. Default: "Travelers". */
|
|
3746
|
+
label?: string;
|
|
3747
|
+
/** Esconde o ícone. */
|
|
3748
|
+
hideIcon?: boolean;
|
|
3749
|
+
className?: string;
|
|
3750
|
+
}
|
|
3751
|
+
declare function ParticipantCounter({ current, max, label, hideIcon, className, }: ParticipantCounterProps): react_jsx_runtime.JSX.Element;
|
|
3752
|
+
|
|
3753
|
+
interface GroupProgressBarProps {
|
|
3754
|
+
/** Participantes confirmados no momento. */
|
|
3755
|
+
current: number;
|
|
3756
|
+
/** Quórum mínimo para a partida acontecer. */
|
|
3757
|
+
min: number;
|
|
3758
|
+
/** Capacidade máxima. */
|
|
3759
|
+
max: number;
|
|
3760
|
+
/** Esconde os rótulos numéricos abaixo da barra. */
|
|
3761
|
+
hideLabels?: boolean;
|
|
3762
|
+
className?: string;
|
|
3763
|
+
}
|
|
3764
|
+
declare function GroupProgressBar({ current, min, max, hideLabels, className, }: GroupProgressBarProps): react_jsx_runtime.JSX.Element;
|
|
3765
|
+
|
|
3766
|
+
interface PricingTier {
|
|
3767
|
+
/** Rótulo do tier, ex.: "1", "2", "4+". */
|
|
3768
|
+
travelers: string;
|
|
3769
|
+
/** Número mínimo de participantes que ativa o tier (p/ detectar o atual). */
|
|
3770
|
+
threshold: number;
|
|
3771
|
+
/** Preço por pessoa já formatado, ex.: "R$ 2.300". */
|
|
3772
|
+
price: string;
|
|
3773
|
+
}
|
|
3774
|
+
interface PricingMatrixCardProps {
|
|
3775
|
+
tiers: PricingTier[];
|
|
3776
|
+
/** Participantes atuais — destaca o tier ativo. */
|
|
3777
|
+
currentTravelers: number;
|
|
3778
|
+
title?: string;
|
|
3779
|
+
/** Trava visual pós-cutoff (cinza, sem destaque). */
|
|
3780
|
+
locked?: boolean;
|
|
3781
|
+
className?: string;
|
|
3782
|
+
}
|
|
3783
|
+
declare function PricingMatrixCard({ tiers, currentTravelers, title, locked, className, }: PricingMatrixCardProps): react_jsx_runtime.JSX.Element;
|
|
3784
|
+
|
|
3785
|
+
interface PriceProgressProps {
|
|
3786
|
+
/** Preço atual formatado, ex.: "R$ 2.700". */
|
|
3787
|
+
currentPrice: string;
|
|
3788
|
+
/** Menor preço possível formatado, ex.: "R$ 2.300". */
|
|
3789
|
+
lowestPrice: string;
|
|
3790
|
+
/** Participantes que faltam para o menor preço. */
|
|
3791
|
+
travelersToLowest: number;
|
|
3792
|
+
/** % de progresso até o menor preço (0–100). */
|
|
3793
|
+
pct: number;
|
|
3794
|
+
className?: string;
|
|
3795
|
+
}
|
|
3796
|
+
declare function PriceProgress({ currentPrice, lowestPrice, travelersToLowest, pct, className, }: PriceProgressProps): react_jsx_runtime.JSX.Element;
|
|
3797
|
+
|
|
3798
|
+
interface Participant {
|
|
3799
|
+
firstName: string;
|
|
3800
|
+
/** Emoji da bandeira, ex.: "🇧🇷". Decorativo. */
|
|
3801
|
+
flag?: string;
|
|
3802
|
+
/** Nome do país (para aria-label). */
|
|
3803
|
+
country?: string;
|
|
3804
|
+
/** URL do avatar (opcional — senão usa iniciais). */
|
|
3805
|
+
avatarUrl?: string;
|
|
3806
|
+
isLeader?: boolean;
|
|
3807
|
+
}
|
|
3808
|
+
interface ParticipantListProps {
|
|
3809
|
+
participants: Participant[];
|
|
3810
|
+
/** Slots vazios a renderizar (placeholders "aguardando viajantes"). */
|
|
3811
|
+
emptySlots?: number;
|
|
3812
|
+
title?: string;
|
|
3813
|
+
leaderLabel?: string;
|
|
3814
|
+
/** Texto do estado vazio total. */
|
|
3815
|
+
emptyMessage?: string;
|
|
3816
|
+
className?: string;
|
|
3817
|
+
}
|
|
3818
|
+
declare function ParticipantList({ participants, emptySlots, title, leaderLabel, emptyMessage, className, }: ParticipantListProps): react_jsx_runtime.JSX.Element;
|
|
3819
|
+
|
|
3820
|
+
interface ShareWidgetProps {
|
|
3821
|
+
/** URL pública da partida. */
|
|
3822
|
+
url: string;
|
|
3823
|
+
/** Texto pré-preenchido para os canais. */
|
|
3824
|
+
message?: string;
|
|
3825
|
+
/** Layout: "row" (desktop, com labels) | "icons" (mobile, só ícones). */
|
|
3826
|
+
layout?: "row" | "icons";
|
|
3827
|
+
title?: string;
|
|
3828
|
+
className?: string;
|
|
3829
|
+
}
|
|
3830
|
+
declare function ShareWidget({ url, message, layout, title, className, }: ShareWidgetProps): react_jsx_runtime.JSX.Element;
|
|
3831
|
+
|
|
3832
|
+
interface StickyBookingCardProps {
|
|
3833
|
+
currentPrice: string;
|
|
3834
|
+
/** Depósito (20% do menor preço) já formatado. */
|
|
3835
|
+
deposit: string;
|
|
3836
|
+
spotsRemaining: number;
|
|
3837
|
+
/** Estado: joinable | full | closed | owner. */
|
|
3838
|
+
mode?: "joinable" | "full" | "closed" | "owner";
|
|
3839
|
+
onPrimary?: () => void;
|
|
3840
|
+
/** Mensagem auxiliar abaixo do CTA (ex.: cutoff). */
|
|
3841
|
+
note?: string;
|
|
3842
|
+
className?: string;
|
|
3843
|
+
}
|
|
3844
|
+
declare function StickyBookingCard({ currentPrice, deposit, spotsRemaining, mode, onPrimary, note, className, }: StickyBookingCardProps): react_jsx_runtime.JSX.Element;
|
|
3845
|
+
|
|
3846
|
+
export { ActivityCard, type ActivityCardProps, type ActivityCardSize, AgentContactCard, type AgentContactCardProps, Alert, type AlertProps, type AlertVariant, AskExo, type AskExoProps, type AskExoSuggestion, BirthDateField, type BirthDateFieldProps, 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 BookingSummaryRow, type BookingTraveller, Button, type ButtonProps, COUNTRIES, type Category2BlogPost, type Category2Faq, type Category2SortOption, type Category2Trip, CategoryPage2, type CategoryPage2Props, type ConfirmationAdventure, type ConfirmationDepositInfo, type ConfirmationLineItem, type ConfirmationTraveller, CounterField, type CounterFieldProps, type CountryOption, CountrySearchField, type CountrySearchFieldProps, type CurrencyEstimate, 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 FilterGroup, type FilterItem, FilterPanel, type FilterPanelProps, FloatingInput, type FloatingInputProps, FloatingSelect, type FloatingSelectProps, GroupProgressBar, type GroupProgressBarProps, GroupStatusBanner, type GroupStatusBannerProps, 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, 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, ShareWidget, type ShareWidgetProps, 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, buttonVariants, cn, emailTokens, formatCpf, getStripeAppearance, itineraryDaySpecIcons, stripeAppearance, validateCpf, webpVariantUrl, wrapEmailHtml };
|