@planetaexo/design-system 0.52.3 → 0.54.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 +941 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +220 -3
- package/dist/index.d.ts +220 -3
- package/dist/index.js +932 -8
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -3037,6 +3037,81 @@ interface TripPageProps {
|
|
|
3037
3037
|
}
|
|
3038
3038
|
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
3039
|
|
|
3040
|
+
interface Category2Trip extends TripCardProps {
|
|
3041
|
+
/** Marca a trip como featured — sobe para o topo do grid principal. */
|
|
3042
|
+
featured?: boolean;
|
|
3043
|
+
}
|
|
3044
|
+
interface Category2BlogPost {
|
|
3045
|
+
title: string;
|
|
3046
|
+
href: string;
|
|
3047
|
+
image: string;
|
|
3048
|
+
imageAlt?: string;
|
|
3049
|
+
excerpt?: string;
|
|
3050
|
+
category?: string;
|
|
3051
|
+
readingTime?: string;
|
|
3052
|
+
}
|
|
3053
|
+
interface Category2Faq {
|
|
3054
|
+
question: string;
|
|
3055
|
+
answer: React.ReactNode;
|
|
3056
|
+
}
|
|
3057
|
+
interface Category2SortOption {
|
|
3058
|
+
id: string;
|
|
3059
|
+
label: string;
|
|
3060
|
+
}
|
|
3061
|
+
interface CategoryPage2Props {
|
|
3062
|
+
title: string;
|
|
3063
|
+
intro?: React.ReactNode;
|
|
3064
|
+
heroImage?: string;
|
|
3065
|
+
/**
|
|
3066
|
+
* Trustpilot Mini widget rendered above the title in the hero —
|
|
3067
|
+
* same configuration shape used in the TripPage pricing sidebar.
|
|
3068
|
+
*/
|
|
3069
|
+
trustpilotMini?: TrustpilotWidgetConfig;
|
|
3070
|
+
breadcrumb?: Array<{
|
|
3071
|
+
label: string;
|
|
3072
|
+
href?: string;
|
|
3073
|
+
}>;
|
|
3074
|
+
/** Pass true (or a links array) to render the transparent SiteHeader over the hero. */
|
|
3075
|
+
siteHeader?: boolean | SiteHeaderLink[];
|
|
3076
|
+
popularTours?: Category2Trip[];
|
|
3077
|
+
popularToursTitle?: string;
|
|
3078
|
+
popularToursEyebrow?: string;
|
|
3079
|
+
trips: Category2Trip[];
|
|
3080
|
+
tripsTitle?: string;
|
|
3081
|
+
tripsEyebrow?: string;
|
|
3082
|
+
filterGroups?: FilterGroup[];
|
|
3083
|
+
sortOptions?: Category2SortOption[];
|
|
3084
|
+
defaultSort?: string;
|
|
3085
|
+
/** Number of trips shown before the "Load more" button appears. @default 15 */
|
|
3086
|
+
tripsInitialCount?: number;
|
|
3087
|
+
trustpilot?: TrustpilotWidgetConfig;
|
|
3088
|
+
reviewsTitle?: string;
|
|
3089
|
+
/** Optional subtitle/intro paragraph below the reviews H2. */
|
|
3090
|
+
reviewsSubtitle?: React.ReactNode;
|
|
3091
|
+
/** Section H2 (e.g. "About Pantanal"). */
|
|
3092
|
+
aboutTitle?: string;
|
|
3093
|
+
/** Rich-text intro paragraphs about the destination. */
|
|
3094
|
+
aboutContent?: React.ReactNode;
|
|
3095
|
+
/** Lead-in line above the blog cards (e.g. "Read stories about Pantanal in our blog"). */
|
|
3096
|
+
blogIntro?: React.ReactNode;
|
|
3097
|
+
/** Optional right-aligned link next to the blog intro (e.g. travel guide). */
|
|
3098
|
+
travelGuideHref?: string;
|
|
3099
|
+
travelGuideLabel?: string;
|
|
3100
|
+
blogPosts?: Category2BlogPost[];
|
|
3101
|
+
/** @deprecated use `aboutTitle` */
|
|
3102
|
+
blogPostsTitle?: string;
|
|
3103
|
+
/** @deprecated use `travelGuideHref` */
|
|
3104
|
+
blogPostsViewAllHref?: string;
|
|
3105
|
+
faqs?: Category2Faq[];
|
|
3106
|
+
faqsTitle?: string;
|
|
3107
|
+
/** Number of FAQs shown before the "See more" button appears. @default 5 */
|
|
3108
|
+
faqInitialCount?: number;
|
|
3109
|
+
gallery?: (string | PhotoGalleryPhoto)[];
|
|
3110
|
+
galleryTitle?: string;
|
|
3111
|
+
className?: string;
|
|
3112
|
+
}
|
|
3113
|
+
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;
|
|
3114
|
+
|
|
3040
3115
|
type ActivityCardSize = "sm" | "md" | "lg";
|
|
3041
3116
|
interface ActivityCardProps {
|
|
3042
3117
|
/** URL da imagem de capa */
|
|
@@ -3063,10 +3138,18 @@ declare function ActivityCard({ image, imageAlt, badge, icon, title, description
|
|
|
3063
3138
|
type AlertVariant = "error" | "warning" | "success" | "info";
|
|
3064
3139
|
interface AlertProps {
|
|
3065
3140
|
variant?: AlertVariant;
|
|
3066
|
-
|
|
3141
|
+
/** Título em negrito (font-ui). Quando presente, vira layout de banner. */
|
|
3142
|
+
title?: React.ReactNode;
|
|
3143
|
+
/** Ícone à esquerda (ex.: lucide). Tamanho recomendado 16–20px. */
|
|
3144
|
+
icon?: React.ReactNode;
|
|
3145
|
+
/** Slot de ação à direita (ex.: <Button> ou link). */
|
|
3146
|
+
action?: React.ReactNode;
|
|
3147
|
+
/** Override do papel ARIA. Default: "status" (use "alert" p/ urgência). */
|
|
3148
|
+
role?: "status" | "alert";
|
|
3149
|
+
children?: React.ReactNode;
|
|
3067
3150
|
className?: string;
|
|
3068
3151
|
}
|
|
3069
|
-
declare function Alert({ variant, children, className }: AlertProps): react_jsx_runtime.JSX.Element;
|
|
3152
|
+
declare function Alert({ variant, title, icon, action, role, children, className, }: AlertProps): react_jsx_runtime.JSX.Element;
|
|
3070
3153
|
|
|
3071
3154
|
type ToastVariant = "info" | "success" | "warning" | "error";
|
|
3072
3155
|
interface ToastProps {
|
|
@@ -3592,4 +3675,138 @@ interface AskExoProps {
|
|
|
3592
3675
|
}
|
|
3593
3676
|
declare function AskExo({ baseUrl, variant, eyebrow, title, subtitle, suggestions, inputPlaceholder, submitLabel, logoSrc, className, teaser, teaserDelayMs, teaserDurationMs, }: AskExoProps): react_jsx_runtime.JSX.Element;
|
|
3594
3677
|
|
|
3595
|
-
|
|
3678
|
+
type DepartureStatus = "draft" | "pending-approval" | "pending-group" | "confirmed" | "payment-pending" | "payment-reconciliation" | "fully-paid" | "full" | "waiting-list" | "operating" | "cancelled";
|
|
3679
|
+
type BadgeVariant = "default" | "secondary" | "destructive" | "outline" | "success" | "warning" | "info" | "neutral";
|
|
3680
|
+
interface StatusConfig {
|
|
3681
|
+
label: string;
|
|
3682
|
+
variant: BadgeVariant;
|
|
3683
|
+
dot: string;
|
|
3684
|
+
}
|
|
3685
|
+
declare const STATUS_MAP: Record<DepartureStatus, StatusConfig>;
|
|
3686
|
+
interface StatusBadgeProps {
|
|
3687
|
+
status: DepartureStatus;
|
|
3688
|
+
/** Mostra um ponto colorido antes do label. Default: true. */
|
|
3689
|
+
dot?: boolean;
|
|
3690
|
+
/** Sobrescreve o label padrão (ex.: i18n). */
|
|
3691
|
+
label?: string;
|
|
3692
|
+
className?: string;
|
|
3693
|
+
}
|
|
3694
|
+
declare function StatusBadge({ status, dot, label, className }: StatusBadgeProps): react_jsx_runtime.JSX.Element;
|
|
3695
|
+
|
|
3696
|
+
interface GroupStatusBannerProps {
|
|
3697
|
+
variant?: AlertVariant;
|
|
3698
|
+
title?: React.ReactNode;
|
|
3699
|
+
icon?: React.ReactNode;
|
|
3700
|
+
action?: React.ReactNode;
|
|
3701
|
+
/** Urgência: usa role="alert" (anuncia imediatamente). Default: false. */
|
|
3702
|
+
urgent?: boolean;
|
|
3703
|
+
children?: React.ReactNode;
|
|
3704
|
+
className?: string;
|
|
3705
|
+
}
|
|
3706
|
+
declare function GroupStatusBanner({ variant, title, icon, action, urgent, children, className, }: GroupStatusBannerProps): react_jsx_runtime.JSX.Element;
|
|
3707
|
+
|
|
3708
|
+
interface ParticipantCounterProps {
|
|
3709
|
+
current: number;
|
|
3710
|
+
max: number;
|
|
3711
|
+
/** Label do sufixo. Default: "Travelers". */
|
|
3712
|
+
label?: string;
|
|
3713
|
+
/** Esconde o ícone. */
|
|
3714
|
+
hideIcon?: boolean;
|
|
3715
|
+
className?: string;
|
|
3716
|
+
}
|
|
3717
|
+
declare function ParticipantCounter({ current, max, label, hideIcon, className, }: ParticipantCounterProps): react_jsx_runtime.JSX.Element;
|
|
3718
|
+
|
|
3719
|
+
interface GroupProgressBarProps {
|
|
3720
|
+
/** Participantes confirmados no momento. */
|
|
3721
|
+
current: number;
|
|
3722
|
+
/** Quórum mínimo para a partida acontecer. */
|
|
3723
|
+
min: number;
|
|
3724
|
+
/** Capacidade máxima. */
|
|
3725
|
+
max: number;
|
|
3726
|
+
/** Esconde os rótulos numéricos abaixo da barra. */
|
|
3727
|
+
hideLabels?: boolean;
|
|
3728
|
+
className?: string;
|
|
3729
|
+
}
|
|
3730
|
+
declare function GroupProgressBar({ current, min, max, hideLabels, className, }: GroupProgressBarProps): react_jsx_runtime.JSX.Element;
|
|
3731
|
+
|
|
3732
|
+
interface PricingTier {
|
|
3733
|
+
/** Rótulo do tier, ex.: "1", "2", "4+". */
|
|
3734
|
+
travelers: string;
|
|
3735
|
+
/** Número mínimo de participantes que ativa o tier (p/ detectar o atual). */
|
|
3736
|
+
threshold: number;
|
|
3737
|
+
/** Preço por pessoa já formatado, ex.: "R$ 2.300". */
|
|
3738
|
+
price: string;
|
|
3739
|
+
}
|
|
3740
|
+
interface PricingMatrixCardProps {
|
|
3741
|
+
tiers: PricingTier[];
|
|
3742
|
+
/** Participantes atuais — destaca o tier ativo. */
|
|
3743
|
+
currentTravelers: number;
|
|
3744
|
+
title?: string;
|
|
3745
|
+
/** Trava visual pós-cutoff (cinza, sem destaque). */
|
|
3746
|
+
locked?: boolean;
|
|
3747
|
+
className?: string;
|
|
3748
|
+
}
|
|
3749
|
+
declare function PricingMatrixCard({ tiers, currentTravelers, title, locked, className, }: PricingMatrixCardProps): react_jsx_runtime.JSX.Element;
|
|
3750
|
+
|
|
3751
|
+
interface PriceProgressProps {
|
|
3752
|
+
/** Preço atual formatado, ex.: "R$ 2.700". */
|
|
3753
|
+
currentPrice: string;
|
|
3754
|
+
/** Menor preço possível formatado, ex.: "R$ 2.300". */
|
|
3755
|
+
lowestPrice: string;
|
|
3756
|
+
/** Participantes que faltam para o menor preço. */
|
|
3757
|
+
travelersToLowest: number;
|
|
3758
|
+
/** % de progresso até o menor preço (0–100). */
|
|
3759
|
+
pct: number;
|
|
3760
|
+
className?: string;
|
|
3761
|
+
}
|
|
3762
|
+
declare function PriceProgress({ currentPrice, lowestPrice, travelersToLowest, pct, className, }: PriceProgressProps): react_jsx_runtime.JSX.Element;
|
|
3763
|
+
|
|
3764
|
+
interface Participant {
|
|
3765
|
+
firstName: string;
|
|
3766
|
+
/** Emoji da bandeira, ex.: "🇧🇷". Decorativo. */
|
|
3767
|
+
flag?: string;
|
|
3768
|
+
/** Nome do país (para aria-label). */
|
|
3769
|
+
country?: string;
|
|
3770
|
+
/** URL do avatar (opcional — senão usa iniciais). */
|
|
3771
|
+
avatarUrl?: string;
|
|
3772
|
+
isLeader?: boolean;
|
|
3773
|
+
}
|
|
3774
|
+
interface ParticipantListProps {
|
|
3775
|
+
participants: Participant[];
|
|
3776
|
+
/** Slots vazios a renderizar (placeholders "aguardando viajantes"). */
|
|
3777
|
+
emptySlots?: number;
|
|
3778
|
+
title?: string;
|
|
3779
|
+
leaderLabel?: string;
|
|
3780
|
+
/** Texto do estado vazio total. */
|
|
3781
|
+
emptyMessage?: string;
|
|
3782
|
+
className?: string;
|
|
3783
|
+
}
|
|
3784
|
+
declare function ParticipantList({ participants, emptySlots, title, leaderLabel, emptyMessage, className, }: ParticipantListProps): react_jsx_runtime.JSX.Element;
|
|
3785
|
+
|
|
3786
|
+
interface ShareWidgetProps {
|
|
3787
|
+
/** URL pública da partida. */
|
|
3788
|
+
url: string;
|
|
3789
|
+
/** Texto pré-preenchido para os canais. */
|
|
3790
|
+
message?: string;
|
|
3791
|
+
/** Layout: "row" (desktop, com labels) | "icons" (mobile, só ícones). */
|
|
3792
|
+
layout?: "row" | "icons";
|
|
3793
|
+
title?: string;
|
|
3794
|
+
className?: string;
|
|
3795
|
+
}
|
|
3796
|
+
declare function ShareWidget({ url, message, layout, title, className, }: ShareWidgetProps): react_jsx_runtime.JSX.Element;
|
|
3797
|
+
|
|
3798
|
+
interface StickyBookingCardProps {
|
|
3799
|
+
currentPrice: string;
|
|
3800
|
+
/** Depósito (20% do menor preço) já formatado. */
|
|
3801
|
+
deposit: string;
|
|
3802
|
+
spotsRemaining: number;
|
|
3803
|
+
/** Estado: joinable | full | closed | owner. */
|
|
3804
|
+
mode?: "joinable" | "full" | "closed" | "owner";
|
|
3805
|
+
onPrimary?: () => void;
|
|
3806
|
+
/** Mensagem auxiliar abaixo do CTA (ex.: cutoff). */
|
|
3807
|
+
note?: string;
|
|
3808
|
+
className?: string;
|
|
3809
|
+
}
|
|
3810
|
+
declare function StickyBookingCard({ currentPrice, deposit, spotsRemaining, mode, onPrimary, note, className, }: StickyBookingCardProps): react_jsx_runtime.JSX.Element;
|
|
3811
|
+
|
|
3812
|
+
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
|
@@ -3037,6 +3037,81 @@ interface TripPageProps {
|
|
|
3037
3037
|
}
|
|
3038
3038
|
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
3039
|
|
|
3040
|
+
interface Category2Trip extends TripCardProps {
|
|
3041
|
+
/** Marca a trip como featured — sobe para o topo do grid principal. */
|
|
3042
|
+
featured?: boolean;
|
|
3043
|
+
}
|
|
3044
|
+
interface Category2BlogPost {
|
|
3045
|
+
title: string;
|
|
3046
|
+
href: string;
|
|
3047
|
+
image: string;
|
|
3048
|
+
imageAlt?: string;
|
|
3049
|
+
excerpt?: string;
|
|
3050
|
+
category?: string;
|
|
3051
|
+
readingTime?: string;
|
|
3052
|
+
}
|
|
3053
|
+
interface Category2Faq {
|
|
3054
|
+
question: string;
|
|
3055
|
+
answer: React.ReactNode;
|
|
3056
|
+
}
|
|
3057
|
+
interface Category2SortOption {
|
|
3058
|
+
id: string;
|
|
3059
|
+
label: string;
|
|
3060
|
+
}
|
|
3061
|
+
interface CategoryPage2Props {
|
|
3062
|
+
title: string;
|
|
3063
|
+
intro?: React.ReactNode;
|
|
3064
|
+
heroImage?: string;
|
|
3065
|
+
/**
|
|
3066
|
+
* Trustpilot Mini widget rendered above the title in the hero —
|
|
3067
|
+
* same configuration shape used in the TripPage pricing sidebar.
|
|
3068
|
+
*/
|
|
3069
|
+
trustpilotMini?: TrustpilotWidgetConfig;
|
|
3070
|
+
breadcrumb?: Array<{
|
|
3071
|
+
label: string;
|
|
3072
|
+
href?: string;
|
|
3073
|
+
}>;
|
|
3074
|
+
/** Pass true (or a links array) to render the transparent SiteHeader over the hero. */
|
|
3075
|
+
siteHeader?: boolean | SiteHeaderLink[];
|
|
3076
|
+
popularTours?: Category2Trip[];
|
|
3077
|
+
popularToursTitle?: string;
|
|
3078
|
+
popularToursEyebrow?: string;
|
|
3079
|
+
trips: Category2Trip[];
|
|
3080
|
+
tripsTitle?: string;
|
|
3081
|
+
tripsEyebrow?: string;
|
|
3082
|
+
filterGroups?: FilterGroup[];
|
|
3083
|
+
sortOptions?: Category2SortOption[];
|
|
3084
|
+
defaultSort?: string;
|
|
3085
|
+
/** Number of trips shown before the "Load more" button appears. @default 15 */
|
|
3086
|
+
tripsInitialCount?: number;
|
|
3087
|
+
trustpilot?: TrustpilotWidgetConfig;
|
|
3088
|
+
reviewsTitle?: string;
|
|
3089
|
+
/** Optional subtitle/intro paragraph below the reviews H2. */
|
|
3090
|
+
reviewsSubtitle?: React.ReactNode;
|
|
3091
|
+
/** Section H2 (e.g. "About Pantanal"). */
|
|
3092
|
+
aboutTitle?: string;
|
|
3093
|
+
/** Rich-text intro paragraphs about the destination. */
|
|
3094
|
+
aboutContent?: React.ReactNode;
|
|
3095
|
+
/** Lead-in line above the blog cards (e.g. "Read stories about Pantanal in our blog"). */
|
|
3096
|
+
blogIntro?: React.ReactNode;
|
|
3097
|
+
/** Optional right-aligned link next to the blog intro (e.g. travel guide). */
|
|
3098
|
+
travelGuideHref?: string;
|
|
3099
|
+
travelGuideLabel?: string;
|
|
3100
|
+
blogPosts?: Category2BlogPost[];
|
|
3101
|
+
/** @deprecated use `aboutTitle` */
|
|
3102
|
+
blogPostsTitle?: string;
|
|
3103
|
+
/** @deprecated use `travelGuideHref` */
|
|
3104
|
+
blogPostsViewAllHref?: string;
|
|
3105
|
+
faqs?: Category2Faq[];
|
|
3106
|
+
faqsTitle?: string;
|
|
3107
|
+
/** Number of FAQs shown before the "See more" button appears. @default 5 */
|
|
3108
|
+
faqInitialCount?: number;
|
|
3109
|
+
gallery?: (string | PhotoGalleryPhoto)[];
|
|
3110
|
+
galleryTitle?: string;
|
|
3111
|
+
className?: string;
|
|
3112
|
+
}
|
|
3113
|
+
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;
|
|
3114
|
+
|
|
3040
3115
|
type ActivityCardSize = "sm" | "md" | "lg";
|
|
3041
3116
|
interface ActivityCardProps {
|
|
3042
3117
|
/** URL da imagem de capa */
|
|
@@ -3063,10 +3138,18 @@ declare function ActivityCard({ image, imageAlt, badge, icon, title, description
|
|
|
3063
3138
|
type AlertVariant = "error" | "warning" | "success" | "info";
|
|
3064
3139
|
interface AlertProps {
|
|
3065
3140
|
variant?: AlertVariant;
|
|
3066
|
-
|
|
3141
|
+
/** Título em negrito (font-ui). Quando presente, vira layout de banner. */
|
|
3142
|
+
title?: React.ReactNode;
|
|
3143
|
+
/** Ícone à esquerda (ex.: lucide). Tamanho recomendado 16–20px. */
|
|
3144
|
+
icon?: React.ReactNode;
|
|
3145
|
+
/** Slot de ação à direita (ex.: <Button> ou link). */
|
|
3146
|
+
action?: React.ReactNode;
|
|
3147
|
+
/** Override do papel ARIA. Default: "status" (use "alert" p/ urgência). */
|
|
3148
|
+
role?: "status" | "alert";
|
|
3149
|
+
children?: React.ReactNode;
|
|
3067
3150
|
className?: string;
|
|
3068
3151
|
}
|
|
3069
|
-
declare function Alert({ variant, children, className }: AlertProps): react_jsx_runtime.JSX.Element;
|
|
3152
|
+
declare function Alert({ variant, title, icon, action, role, children, className, }: AlertProps): react_jsx_runtime.JSX.Element;
|
|
3070
3153
|
|
|
3071
3154
|
type ToastVariant = "info" | "success" | "warning" | "error";
|
|
3072
3155
|
interface ToastProps {
|
|
@@ -3592,4 +3675,138 @@ interface AskExoProps {
|
|
|
3592
3675
|
}
|
|
3593
3676
|
declare function AskExo({ baseUrl, variant, eyebrow, title, subtitle, suggestions, inputPlaceholder, submitLabel, logoSrc, className, teaser, teaserDelayMs, teaserDurationMs, }: AskExoProps): react_jsx_runtime.JSX.Element;
|
|
3594
3677
|
|
|
3595
|
-
|
|
3678
|
+
type DepartureStatus = "draft" | "pending-approval" | "pending-group" | "confirmed" | "payment-pending" | "payment-reconciliation" | "fully-paid" | "full" | "waiting-list" | "operating" | "cancelled";
|
|
3679
|
+
type BadgeVariant = "default" | "secondary" | "destructive" | "outline" | "success" | "warning" | "info" | "neutral";
|
|
3680
|
+
interface StatusConfig {
|
|
3681
|
+
label: string;
|
|
3682
|
+
variant: BadgeVariant;
|
|
3683
|
+
dot: string;
|
|
3684
|
+
}
|
|
3685
|
+
declare const STATUS_MAP: Record<DepartureStatus, StatusConfig>;
|
|
3686
|
+
interface StatusBadgeProps {
|
|
3687
|
+
status: DepartureStatus;
|
|
3688
|
+
/** Mostra um ponto colorido antes do label. Default: true. */
|
|
3689
|
+
dot?: boolean;
|
|
3690
|
+
/** Sobrescreve o label padrão (ex.: i18n). */
|
|
3691
|
+
label?: string;
|
|
3692
|
+
className?: string;
|
|
3693
|
+
}
|
|
3694
|
+
declare function StatusBadge({ status, dot, label, className }: StatusBadgeProps): react_jsx_runtime.JSX.Element;
|
|
3695
|
+
|
|
3696
|
+
interface GroupStatusBannerProps {
|
|
3697
|
+
variant?: AlertVariant;
|
|
3698
|
+
title?: React.ReactNode;
|
|
3699
|
+
icon?: React.ReactNode;
|
|
3700
|
+
action?: React.ReactNode;
|
|
3701
|
+
/** Urgência: usa role="alert" (anuncia imediatamente). Default: false. */
|
|
3702
|
+
urgent?: boolean;
|
|
3703
|
+
children?: React.ReactNode;
|
|
3704
|
+
className?: string;
|
|
3705
|
+
}
|
|
3706
|
+
declare function GroupStatusBanner({ variant, title, icon, action, urgent, children, className, }: GroupStatusBannerProps): react_jsx_runtime.JSX.Element;
|
|
3707
|
+
|
|
3708
|
+
interface ParticipantCounterProps {
|
|
3709
|
+
current: number;
|
|
3710
|
+
max: number;
|
|
3711
|
+
/** Label do sufixo. Default: "Travelers". */
|
|
3712
|
+
label?: string;
|
|
3713
|
+
/** Esconde o ícone. */
|
|
3714
|
+
hideIcon?: boolean;
|
|
3715
|
+
className?: string;
|
|
3716
|
+
}
|
|
3717
|
+
declare function ParticipantCounter({ current, max, label, hideIcon, className, }: ParticipantCounterProps): react_jsx_runtime.JSX.Element;
|
|
3718
|
+
|
|
3719
|
+
interface GroupProgressBarProps {
|
|
3720
|
+
/** Participantes confirmados no momento. */
|
|
3721
|
+
current: number;
|
|
3722
|
+
/** Quórum mínimo para a partida acontecer. */
|
|
3723
|
+
min: number;
|
|
3724
|
+
/** Capacidade máxima. */
|
|
3725
|
+
max: number;
|
|
3726
|
+
/** Esconde os rótulos numéricos abaixo da barra. */
|
|
3727
|
+
hideLabels?: boolean;
|
|
3728
|
+
className?: string;
|
|
3729
|
+
}
|
|
3730
|
+
declare function GroupProgressBar({ current, min, max, hideLabels, className, }: GroupProgressBarProps): react_jsx_runtime.JSX.Element;
|
|
3731
|
+
|
|
3732
|
+
interface PricingTier {
|
|
3733
|
+
/** Rótulo do tier, ex.: "1", "2", "4+". */
|
|
3734
|
+
travelers: string;
|
|
3735
|
+
/** Número mínimo de participantes que ativa o tier (p/ detectar o atual). */
|
|
3736
|
+
threshold: number;
|
|
3737
|
+
/** Preço por pessoa já formatado, ex.: "R$ 2.300". */
|
|
3738
|
+
price: string;
|
|
3739
|
+
}
|
|
3740
|
+
interface PricingMatrixCardProps {
|
|
3741
|
+
tiers: PricingTier[];
|
|
3742
|
+
/** Participantes atuais — destaca o tier ativo. */
|
|
3743
|
+
currentTravelers: number;
|
|
3744
|
+
title?: string;
|
|
3745
|
+
/** Trava visual pós-cutoff (cinza, sem destaque). */
|
|
3746
|
+
locked?: boolean;
|
|
3747
|
+
className?: string;
|
|
3748
|
+
}
|
|
3749
|
+
declare function PricingMatrixCard({ tiers, currentTravelers, title, locked, className, }: PricingMatrixCardProps): react_jsx_runtime.JSX.Element;
|
|
3750
|
+
|
|
3751
|
+
interface PriceProgressProps {
|
|
3752
|
+
/** Preço atual formatado, ex.: "R$ 2.700". */
|
|
3753
|
+
currentPrice: string;
|
|
3754
|
+
/** Menor preço possível formatado, ex.: "R$ 2.300". */
|
|
3755
|
+
lowestPrice: string;
|
|
3756
|
+
/** Participantes que faltam para o menor preço. */
|
|
3757
|
+
travelersToLowest: number;
|
|
3758
|
+
/** % de progresso até o menor preço (0–100). */
|
|
3759
|
+
pct: number;
|
|
3760
|
+
className?: string;
|
|
3761
|
+
}
|
|
3762
|
+
declare function PriceProgress({ currentPrice, lowestPrice, travelersToLowest, pct, className, }: PriceProgressProps): react_jsx_runtime.JSX.Element;
|
|
3763
|
+
|
|
3764
|
+
interface Participant {
|
|
3765
|
+
firstName: string;
|
|
3766
|
+
/** Emoji da bandeira, ex.: "🇧🇷". Decorativo. */
|
|
3767
|
+
flag?: string;
|
|
3768
|
+
/** Nome do país (para aria-label). */
|
|
3769
|
+
country?: string;
|
|
3770
|
+
/** URL do avatar (opcional — senão usa iniciais). */
|
|
3771
|
+
avatarUrl?: string;
|
|
3772
|
+
isLeader?: boolean;
|
|
3773
|
+
}
|
|
3774
|
+
interface ParticipantListProps {
|
|
3775
|
+
participants: Participant[];
|
|
3776
|
+
/** Slots vazios a renderizar (placeholders "aguardando viajantes"). */
|
|
3777
|
+
emptySlots?: number;
|
|
3778
|
+
title?: string;
|
|
3779
|
+
leaderLabel?: string;
|
|
3780
|
+
/** Texto do estado vazio total. */
|
|
3781
|
+
emptyMessage?: string;
|
|
3782
|
+
className?: string;
|
|
3783
|
+
}
|
|
3784
|
+
declare function ParticipantList({ participants, emptySlots, title, leaderLabel, emptyMessage, className, }: ParticipantListProps): react_jsx_runtime.JSX.Element;
|
|
3785
|
+
|
|
3786
|
+
interface ShareWidgetProps {
|
|
3787
|
+
/** URL pública da partida. */
|
|
3788
|
+
url: string;
|
|
3789
|
+
/** Texto pré-preenchido para os canais. */
|
|
3790
|
+
message?: string;
|
|
3791
|
+
/** Layout: "row" (desktop, com labels) | "icons" (mobile, só ícones). */
|
|
3792
|
+
layout?: "row" | "icons";
|
|
3793
|
+
title?: string;
|
|
3794
|
+
className?: string;
|
|
3795
|
+
}
|
|
3796
|
+
declare function ShareWidget({ url, message, layout, title, className, }: ShareWidgetProps): react_jsx_runtime.JSX.Element;
|
|
3797
|
+
|
|
3798
|
+
interface StickyBookingCardProps {
|
|
3799
|
+
currentPrice: string;
|
|
3800
|
+
/** Depósito (20% do menor preço) já formatado. */
|
|
3801
|
+
deposit: string;
|
|
3802
|
+
spotsRemaining: number;
|
|
3803
|
+
/** Estado: joinable | full | closed | owner. */
|
|
3804
|
+
mode?: "joinable" | "full" | "closed" | "owner";
|
|
3805
|
+
onPrimary?: () => void;
|
|
3806
|
+
/** Mensagem auxiliar abaixo do CTA (ex.: cutoff). */
|
|
3807
|
+
note?: string;
|
|
3808
|
+
className?: string;
|
|
3809
|
+
}
|
|
3810
|
+
declare function StickyBookingCard({ currentPrice, deposit, spotsRemaining, mode, onPrimary, note, className, }: StickyBookingCardProps): react_jsx_runtime.JSX.Element;
|
|
3811
|
+
|
|
3812
|
+
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 };
|