@planetaexo/design-system 0.46.1 → 0.46.3
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 +67 -43
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +52 -2
- package/dist/index.d.ts +52 -2
- package/dist/index.js +67 -43
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -2667,6 +2667,7 @@ interface TripSectionIcons {
|
|
|
2667
2667
|
itinerary?: React.ReactNode;
|
|
2668
2668
|
whatIsIncluded?: React.ReactNode;
|
|
2669
2669
|
/** Accordion sections */
|
|
2670
|
+
whenItOperates?: React.ReactNode;
|
|
2670
2671
|
howToGetThere?: React.ReactNode;
|
|
2671
2672
|
meetingPoint?: React.ReactNode;
|
|
2672
2673
|
optionalExtras?: React.ReactNode;
|
|
@@ -2676,6 +2677,48 @@ interface TripSectionIcons {
|
|
|
2676
2677
|
weather?: React.ReactNode;
|
|
2677
2678
|
terms?: React.ReactNode;
|
|
2678
2679
|
}
|
|
2680
|
+
/**
|
|
2681
|
+
* i18n overrides for every section / accordion heading and floating-menu
|
|
2682
|
+
* entry rendered by `<TripPage>`. Any key left undefined falls back to the
|
|
2683
|
+
* built-in English string used today, so existing consumers don't need to
|
|
2684
|
+
* pass anything to keep working.
|
|
2685
|
+
*
|
|
2686
|
+
* The same key drives both the floating menu entry and the section/accordion
|
|
2687
|
+
* heading for that concept — they always match in the design, and giving
|
|
2688
|
+
* editors two slots to keep in sync would be a footgun.
|
|
2689
|
+
*/
|
|
2690
|
+
interface TripPageLabels {
|
|
2691
|
+
/** Section nav + section heading: "Overview" */
|
|
2692
|
+
overview?: string;
|
|
2693
|
+
/** Section nav + section heading: "Itinerary" */
|
|
2694
|
+
itinerary?: string;
|
|
2695
|
+
/** Section nav + section heading: "What is Included" */
|
|
2696
|
+
whatIsIncluded?: string;
|
|
2697
|
+
/** Section heading: "Not included" */
|
|
2698
|
+
notIncluded?: string;
|
|
2699
|
+
/** Section nav + accordion heading: "What to bring" */
|
|
2700
|
+
whatToBring?: string;
|
|
2701
|
+
/** Section nav + accordion heading: "When this tour operates" */
|
|
2702
|
+
whenItOperates?: string;
|
|
2703
|
+
/** Section nav + accordion heading: "Accommodation" */
|
|
2704
|
+
accommodation?: string;
|
|
2705
|
+
/** Accordion heading: "Food" */
|
|
2706
|
+
food?: string;
|
|
2707
|
+
/** Accordion heading: "Meeting point" */
|
|
2708
|
+
meetingPoint?: string;
|
|
2709
|
+
/** Accordion heading: "How to get there" */
|
|
2710
|
+
howToGetThere?: string;
|
|
2711
|
+
/** Accordion heading: "Weather" */
|
|
2712
|
+
weather?: string;
|
|
2713
|
+
/** Accordion heading: "Optional extras" */
|
|
2714
|
+
optionalExtras?: string;
|
|
2715
|
+
/** Section nav + accordion heading: "Terms & conditions" */
|
|
2716
|
+
terms?: string;
|
|
2717
|
+
/** Section nav + section heading: "FAQ" */
|
|
2718
|
+
faq?: string;
|
|
2719
|
+
/** Section nav + section heading: "What our guests think" */
|
|
2720
|
+
reviews?: string;
|
|
2721
|
+
}
|
|
2679
2722
|
|
|
2680
2723
|
interface TripPageProps {
|
|
2681
2724
|
title: string;
|
|
@@ -2718,6 +2761,7 @@ interface TripPageProps {
|
|
|
2718
2761
|
weather?: React.ReactNode;
|
|
2719
2762
|
optionalExtras?: React.ReactNode;
|
|
2720
2763
|
accommodation?: React.ReactNode;
|
|
2764
|
+
whenItOperates?: React.ReactNode;
|
|
2721
2765
|
food?: React.ReactNode;
|
|
2722
2766
|
termsAndConditions?: React.ReactNode;
|
|
2723
2767
|
meetingPoints?: TripMeetingPoint[];
|
|
@@ -2736,6 +2780,12 @@ interface TripPageProps {
|
|
|
2736
2780
|
* editor-driven (e.g. an ACF Select on each section group).
|
|
2737
2781
|
*/
|
|
2738
2782
|
sectionIcons?: TripSectionIcons;
|
|
2783
|
+
/**
|
|
2784
|
+
* i18n overrides for every section/accordion heading and floating-menu
|
|
2785
|
+
* entry. Any key left undefined falls back to the built-in English
|
|
2786
|
+
* string, so existing callers don't need to pass anything.
|
|
2787
|
+
*/
|
|
2788
|
+
labels?: TripPageLabels;
|
|
2739
2789
|
reviews?: TripReview[];
|
|
2740
2790
|
/** When provided, replaces the manual `reviews` block with a Trustpilot widget. */
|
|
2741
2791
|
trustpilot?: TripTrustpilotWidget;
|
|
@@ -2773,7 +2823,7 @@ interface TripPageProps {
|
|
|
2773
2823
|
features?: Record<string, boolean>;
|
|
2774
2824
|
className?: string;
|
|
2775
2825
|
}
|
|
2776
|
-
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, food, termsAndConditions, meetingPoints, meetingPoint, faqs, faqInitialCount, sectionIcons, reviews, trustpilot, trustpilotMini, trustpilotHero, priceFrom, currency, season, departureTimes, benefits, currencyEstimates, priceInfo, onBook, bookLabel, siteHeader, uiVariant, features, className, }: TripPageProps): react_jsx_runtime.JSX.Element;
|
|
2826
|
+
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, whenItOperates, food, 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;
|
|
2777
2827
|
|
|
2778
2828
|
type ActivityCardSize = "sm" | "md" | "lg";
|
|
2779
2829
|
interface ActivityCardProps {
|
|
@@ -3246,4 +3296,4 @@ declare function LeadCapturePopup({ config: _config, }: {
|
|
|
3246
3296
|
config: LeadCapturePopupConfig;
|
|
3247
3297
|
}): react_jsx_runtime.JSX.Element | null;
|
|
3248
3298
|
|
|
3249
|
-
export { ActivityCard, type ActivityCardProps, type ActivityCardSize, AgentContactCard, type AgentContactCardProps, Alert, type AlertProps, type AlertVariant, BirthDateField, type BirthDateFieldProps, type BookingAdventure, BookingAdventureCard, type BookingAdventureCardLabels, type BookingAdventureCardLineItem, type BookingAdventureCardProps, type BookingAdventureCardSlots, type BookingAdventureCardTraveller, 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 ConfirmationAdventure, type ConfirmationDepositInfo, type ConfirmationLineItem, type ConfirmationTraveller, CounterField, type CounterFieldProps, type CountryOption, CountrySearchField, type CountrySearchFieldProps, type CurrencyEstimate, DEFAULT_HEADER_LINKS, DEFAULT_LANGUAGES, DatePickerField, type DatePickerFieldProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, type EmailTokens, type FilterGroup, type FilterItem, FilterPanel, type FilterPanelProps, FloatingInput, type FloatingInputProps, FloatingSelect, type FloatingSelectProps, 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 PartnerBookingCreatedAgentContactLinks, PartnerBookingCreatedEmail, type PartnerBookingCreatedEmailLabels, type PartnerBookingCreatedEmailProps, type PartnerConfirmationAgentContactLinks, PartnerConfirmationEmail, type PartnerConfirmationEmailExpectationRow, type PartnerConfirmationEmailLabels, type PartnerConfirmationEmailProps, 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, 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, SiteHeader, type SiteHeaderLanguage, type SiteHeaderLink, type SiteHeaderProps, type SiteHeaderSubItem, type SiteHeaderVariant, 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 TripPageProps, type TripReview, type TripTrustpilotWidget, TrustpilotEmbed, type TrustpilotWidgetConfig, buttonVariants, cn, emailTokens, getStripeAppearance, itineraryDaySpecIcons, stripeAppearance, wrapEmailHtml };
|
|
3299
|
+
export { ActivityCard, type ActivityCardProps, type ActivityCardSize, AgentContactCard, type AgentContactCardProps, Alert, type AlertProps, type AlertVariant, BirthDateField, type BirthDateFieldProps, type BookingAdventure, BookingAdventureCard, type BookingAdventureCardLabels, type BookingAdventureCardLineItem, type BookingAdventureCardProps, type BookingAdventureCardSlots, type BookingAdventureCardTraveller, 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 ConfirmationAdventure, type ConfirmationDepositInfo, type ConfirmationLineItem, type ConfirmationTraveller, CounterField, type CounterFieldProps, type CountryOption, CountrySearchField, type CountrySearchFieldProps, type CurrencyEstimate, DEFAULT_HEADER_LINKS, DEFAULT_LANGUAGES, DatePickerField, type DatePickerFieldProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, type EmailTokens, type FilterGroup, type FilterItem, FilterPanel, type FilterPanelProps, FloatingInput, type FloatingInputProps, FloatingSelect, type FloatingSelectProps, 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 PartnerBookingCreatedAgentContactLinks, PartnerBookingCreatedEmail, type PartnerBookingCreatedEmailLabels, type PartnerBookingCreatedEmailProps, type PartnerConfirmationAgentContactLinks, PartnerConfirmationEmail, type PartnerConfirmationEmailExpectationRow, type PartnerConfirmationEmailLabels, type PartnerConfirmationEmailProps, 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, 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, SiteHeader, type SiteHeaderLanguage, type SiteHeaderLink, type SiteHeaderProps, type SiteHeaderSubItem, type SiteHeaderVariant, 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 TripTrustpilotWidget, TrustpilotEmbed, type TrustpilotWidgetConfig, buttonVariants, cn, emailTokens, getStripeAppearance, itineraryDaySpecIcons, stripeAppearance, wrapEmailHtml };
|
package/dist/index.d.ts
CHANGED
|
@@ -2667,6 +2667,7 @@ interface TripSectionIcons {
|
|
|
2667
2667
|
itinerary?: React.ReactNode;
|
|
2668
2668
|
whatIsIncluded?: React.ReactNode;
|
|
2669
2669
|
/** Accordion sections */
|
|
2670
|
+
whenItOperates?: React.ReactNode;
|
|
2670
2671
|
howToGetThere?: React.ReactNode;
|
|
2671
2672
|
meetingPoint?: React.ReactNode;
|
|
2672
2673
|
optionalExtras?: React.ReactNode;
|
|
@@ -2676,6 +2677,48 @@ interface TripSectionIcons {
|
|
|
2676
2677
|
weather?: React.ReactNode;
|
|
2677
2678
|
terms?: React.ReactNode;
|
|
2678
2679
|
}
|
|
2680
|
+
/**
|
|
2681
|
+
* i18n overrides for every section / accordion heading and floating-menu
|
|
2682
|
+
* entry rendered by `<TripPage>`. Any key left undefined falls back to the
|
|
2683
|
+
* built-in English string used today, so existing consumers don't need to
|
|
2684
|
+
* pass anything to keep working.
|
|
2685
|
+
*
|
|
2686
|
+
* The same key drives both the floating menu entry and the section/accordion
|
|
2687
|
+
* heading for that concept — they always match in the design, and giving
|
|
2688
|
+
* editors two slots to keep in sync would be a footgun.
|
|
2689
|
+
*/
|
|
2690
|
+
interface TripPageLabels {
|
|
2691
|
+
/** Section nav + section heading: "Overview" */
|
|
2692
|
+
overview?: string;
|
|
2693
|
+
/** Section nav + section heading: "Itinerary" */
|
|
2694
|
+
itinerary?: string;
|
|
2695
|
+
/** Section nav + section heading: "What is Included" */
|
|
2696
|
+
whatIsIncluded?: string;
|
|
2697
|
+
/** Section heading: "Not included" */
|
|
2698
|
+
notIncluded?: string;
|
|
2699
|
+
/** Section nav + accordion heading: "What to bring" */
|
|
2700
|
+
whatToBring?: string;
|
|
2701
|
+
/** Section nav + accordion heading: "When this tour operates" */
|
|
2702
|
+
whenItOperates?: string;
|
|
2703
|
+
/** Section nav + accordion heading: "Accommodation" */
|
|
2704
|
+
accommodation?: string;
|
|
2705
|
+
/** Accordion heading: "Food" */
|
|
2706
|
+
food?: string;
|
|
2707
|
+
/** Accordion heading: "Meeting point" */
|
|
2708
|
+
meetingPoint?: string;
|
|
2709
|
+
/** Accordion heading: "How to get there" */
|
|
2710
|
+
howToGetThere?: string;
|
|
2711
|
+
/** Accordion heading: "Weather" */
|
|
2712
|
+
weather?: string;
|
|
2713
|
+
/** Accordion heading: "Optional extras" */
|
|
2714
|
+
optionalExtras?: string;
|
|
2715
|
+
/** Section nav + accordion heading: "Terms & conditions" */
|
|
2716
|
+
terms?: string;
|
|
2717
|
+
/** Section nav + section heading: "FAQ" */
|
|
2718
|
+
faq?: string;
|
|
2719
|
+
/** Section nav + section heading: "What our guests think" */
|
|
2720
|
+
reviews?: string;
|
|
2721
|
+
}
|
|
2679
2722
|
|
|
2680
2723
|
interface TripPageProps {
|
|
2681
2724
|
title: string;
|
|
@@ -2718,6 +2761,7 @@ interface TripPageProps {
|
|
|
2718
2761
|
weather?: React.ReactNode;
|
|
2719
2762
|
optionalExtras?: React.ReactNode;
|
|
2720
2763
|
accommodation?: React.ReactNode;
|
|
2764
|
+
whenItOperates?: React.ReactNode;
|
|
2721
2765
|
food?: React.ReactNode;
|
|
2722
2766
|
termsAndConditions?: React.ReactNode;
|
|
2723
2767
|
meetingPoints?: TripMeetingPoint[];
|
|
@@ -2736,6 +2780,12 @@ interface TripPageProps {
|
|
|
2736
2780
|
* editor-driven (e.g. an ACF Select on each section group).
|
|
2737
2781
|
*/
|
|
2738
2782
|
sectionIcons?: TripSectionIcons;
|
|
2783
|
+
/**
|
|
2784
|
+
* i18n overrides for every section/accordion heading and floating-menu
|
|
2785
|
+
* entry. Any key left undefined falls back to the built-in English
|
|
2786
|
+
* string, so existing callers don't need to pass anything.
|
|
2787
|
+
*/
|
|
2788
|
+
labels?: TripPageLabels;
|
|
2739
2789
|
reviews?: TripReview[];
|
|
2740
2790
|
/** When provided, replaces the manual `reviews` block with a Trustpilot widget. */
|
|
2741
2791
|
trustpilot?: TripTrustpilotWidget;
|
|
@@ -2773,7 +2823,7 @@ interface TripPageProps {
|
|
|
2773
2823
|
features?: Record<string, boolean>;
|
|
2774
2824
|
className?: string;
|
|
2775
2825
|
}
|
|
2776
|
-
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, food, termsAndConditions, meetingPoints, meetingPoint, faqs, faqInitialCount, sectionIcons, reviews, trustpilot, trustpilotMini, trustpilotHero, priceFrom, currency, season, departureTimes, benefits, currencyEstimates, priceInfo, onBook, bookLabel, siteHeader, uiVariant, features, className, }: TripPageProps): react_jsx_runtime.JSX.Element;
|
|
2826
|
+
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, whenItOperates, food, 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;
|
|
2777
2827
|
|
|
2778
2828
|
type ActivityCardSize = "sm" | "md" | "lg";
|
|
2779
2829
|
interface ActivityCardProps {
|
|
@@ -3246,4 +3296,4 @@ declare function LeadCapturePopup({ config: _config, }: {
|
|
|
3246
3296
|
config: LeadCapturePopupConfig;
|
|
3247
3297
|
}): react_jsx_runtime.JSX.Element | null;
|
|
3248
3298
|
|
|
3249
|
-
export { ActivityCard, type ActivityCardProps, type ActivityCardSize, AgentContactCard, type AgentContactCardProps, Alert, type AlertProps, type AlertVariant, BirthDateField, type BirthDateFieldProps, type BookingAdventure, BookingAdventureCard, type BookingAdventureCardLabels, type BookingAdventureCardLineItem, type BookingAdventureCardProps, type BookingAdventureCardSlots, type BookingAdventureCardTraveller, 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 ConfirmationAdventure, type ConfirmationDepositInfo, type ConfirmationLineItem, type ConfirmationTraveller, CounterField, type CounterFieldProps, type CountryOption, CountrySearchField, type CountrySearchFieldProps, type CurrencyEstimate, DEFAULT_HEADER_LINKS, DEFAULT_LANGUAGES, DatePickerField, type DatePickerFieldProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, type EmailTokens, type FilterGroup, type FilterItem, FilterPanel, type FilterPanelProps, FloatingInput, type FloatingInputProps, FloatingSelect, type FloatingSelectProps, 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 PartnerBookingCreatedAgentContactLinks, PartnerBookingCreatedEmail, type PartnerBookingCreatedEmailLabels, type PartnerBookingCreatedEmailProps, type PartnerConfirmationAgentContactLinks, PartnerConfirmationEmail, type PartnerConfirmationEmailExpectationRow, type PartnerConfirmationEmailLabels, type PartnerConfirmationEmailProps, 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, 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, SiteHeader, type SiteHeaderLanguage, type SiteHeaderLink, type SiteHeaderProps, type SiteHeaderSubItem, type SiteHeaderVariant, 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 TripPageProps, type TripReview, type TripTrustpilotWidget, TrustpilotEmbed, type TrustpilotWidgetConfig, buttonVariants, cn, emailTokens, getStripeAppearance, itineraryDaySpecIcons, stripeAppearance, wrapEmailHtml };
|
|
3299
|
+
export { ActivityCard, type ActivityCardProps, type ActivityCardSize, AgentContactCard, type AgentContactCardProps, Alert, type AlertProps, type AlertVariant, BirthDateField, type BirthDateFieldProps, type BookingAdventure, BookingAdventureCard, type BookingAdventureCardLabels, type BookingAdventureCardLineItem, type BookingAdventureCardProps, type BookingAdventureCardSlots, type BookingAdventureCardTraveller, 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 ConfirmationAdventure, type ConfirmationDepositInfo, type ConfirmationLineItem, type ConfirmationTraveller, CounterField, type CounterFieldProps, type CountryOption, CountrySearchField, type CountrySearchFieldProps, type CurrencyEstimate, DEFAULT_HEADER_LINKS, DEFAULT_LANGUAGES, DatePickerField, type DatePickerFieldProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, type EmailTokens, type FilterGroup, type FilterItem, FilterPanel, type FilterPanelProps, FloatingInput, type FloatingInputProps, FloatingSelect, type FloatingSelectProps, 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 PartnerBookingCreatedAgentContactLinks, PartnerBookingCreatedEmail, type PartnerBookingCreatedEmailLabels, type PartnerBookingCreatedEmailProps, type PartnerConfirmationAgentContactLinks, PartnerConfirmationEmail, type PartnerConfirmationEmailExpectationRow, type PartnerConfirmationEmailLabels, type PartnerConfirmationEmailProps, 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, 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, SiteHeader, type SiteHeaderLanguage, type SiteHeaderLink, type SiteHeaderProps, type SiteHeaderSubItem, type SiteHeaderVariant, 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 TripTrustpilotWidget, TrustpilotEmbed, type TrustpilotWidgetConfig, buttonVariants, cn, emailTokens, getStripeAppearance, itineraryDaySpecIcons, stripeAppearance, wrapEmailHtml };
|
package/dist/index.js
CHANGED
|
@@ -12484,6 +12484,7 @@ function TripPage({
|
|
|
12484
12484
|
weather,
|
|
12485
12485
|
optionalExtras,
|
|
12486
12486
|
accommodation,
|
|
12487
|
+
whenItOperates,
|
|
12487
12488
|
food,
|
|
12488
12489
|
termsAndConditions,
|
|
12489
12490
|
meetingPoints,
|
|
@@ -12491,6 +12492,7 @@ function TripPage({
|
|
|
12491
12492
|
faqs,
|
|
12492
12493
|
faqInitialCount = 5,
|
|
12493
12494
|
sectionIcons,
|
|
12495
|
+
labels,
|
|
12494
12496
|
reviews,
|
|
12495
12497
|
trustpilot,
|
|
12496
12498
|
trustpilotMini,
|
|
@@ -12509,11 +12511,13 @@ function TripPage({
|
|
|
12509
12511
|
features,
|
|
12510
12512
|
className
|
|
12511
12513
|
}) {
|
|
12514
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p;
|
|
12512
12515
|
const [activeSection, setActiveSection] = React28.useState("");
|
|
12513
12516
|
const [accordionValue, setAccordionValue] = React28.useState([]);
|
|
12514
12517
|
const [faqsExpanded, setFaqsExpanded] = React28.useState(false);
|
|
12515
12518
|
const accordionSectionIds = React28.useMemo(
|
|
12516
12519
|
() => /* @__PURE__ */ new Set([
|
|
12520
|
+
"when-it-operates",
|
|
12517
12521
|
"how-to-get-there",
|
|
12518
12522
|
"what-to-bring",
|
|
12519
12523
|
"weather",
|
|
@@ -12537,20 +12541,24 @@ function TripPage({
|
|
|
12537
12541
|
const pricingBarRef = React28.useRef(null);
|
|
12538
12542
|
const galleryRef = React28.useRef(null);
|
|
12539
12543
|
const sections = React28.useMemo(
|
|
12540
|
-
() =>
|
|
12541
|
-
|
|
12542
|
-
|
|
12543
|
-
id: "
|
|
12544
|
-
|
|
12545
|
-
|
|
12546
|
-
|
|
12547
|
-
|
|
12548
|
-
|
|
12549
|
-
|
|
12550
|
-
|
|
12551
|
-
|
|
12552
|
-
|
|
12553
|
-
|
|
12544
|
+
() => {
|
|
12545
|
+
var _a2, _b2, _c2, _d2, _e2, _f2, _g2, _h2, _i2;
|
|
12546
|
+
return [
|
|
12547
|
+
{ id: "overview", label: (_a2 = labels == null ? void 0 : labels.overview) != null ? _a2 : "Overview", show: !!(overview || (overviewHighlights == null ? void 0 : overviewHighlights.length)) },
|
|
12548
|
+
{
|
|
12549
|
+
id: "itinerary",
|
|
12550
|
+
label: (_b2 = labels == null ? void 0 : labels.itinerary) != null ? _b2 : "Itinerary",
|
|
12551
|
+
show: !!((itineraryDays == null ? void 0 : itineraryDays.length) || (itinerary == null ? void 0 : itinerary.length))
|
|
12552
|
+
},
|
|
12553
|
+
{ id: "included", label: (_c2 = labels == null ? void 0 : labels.whatIsIncluded) != null ? _c2 : "What is Included", show: !!(included == null ? void 0 : included.length) },
|
|
12554
|
+
{ id: "what-to-bring", label: (_d2 = labels == null ? void 0 : labels.whatToBring) != null ? _d2 : "What to Bring", show: !!(whatToBring == null ? void 0 : whatToBring.length) },
|
|
12555
|
+
{ id: "when-it-operates", label: (_e2 = labels == null ? void 0 : labels.whenItOperates) != null ? _e2 : "When this tour operates", show: !!whenItOperates },
|
|
12556
|
+
{ id: "accommodation", label: (_f2 = labels == null ? void 0 : labels.accommodation) != null ? _f2 : "Accommodation", show: !!accommodation },
|
|
12557
|
+
{ id: "terms", label: (_g2 = labels == null ? void 0 : labels.terms) != null ? _g2 : "Terms", show: !!termsAndConditions },
|
|
12558
|
+
{ id: "faq", label: (_h2 = labels == null ? void 0 : labels.faq) != null ? _h2 : "FAQ", show: !!(faqs == null ? void 0 : faqs.length) },
|
|
12559
|
+
{ id: "reviews", label: (_i2 = labels == null ? void 0 : labels.reviews) != null ? _i2 : "Reviews", show: !!(trustpilot || (reviews == null ? void 0 : reviews.length)) }
|
|
12560
|
+
].filter((s) => s.show);
|
|
12561
|
+
},
|
|
12554
12562
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
12555
12563
|
[]
|
|
12556
12564
|
);
|
|
@@ -12582,8 +12590,8 @@ function TripPage({
|
|
|
12582
12590
|
}, [isFloating]);
|
|
12583
12591
|
React28.useEffect(() => {
|
|
12584
12592
|
const check = () => {
|
|
12585
|
-
var
|
|
12586
|
-
const target = (
|
|
12593
|
+
var _a2;
|
|
12594
|
+
const target = (_a2 = galleryRef.current) != null ? _a2 : pricingBarRef.current;
|
|
12587
12595
|
if (!target) return;
|
|
12588
12596
|
setPricingBarVisible(target.getBoundingClientRect().top < window.innerHeight * 0.75);
|
|
12589
12597
|
};
|
|
@@ -12604,8 +12612,8 @@ function TripPage({
|
|
|
12604
12612
|
if (sections.length === 0) return;
|
|
12605
12613
|
setActiveSection(sections[0].id);
|
|
12606
12614
|
const update = () => {
|
|
12607
|
-
var
|
|
12608
|
-
const navH = ((
|
|
12615
|
+
var _a2, _b2;
|
|
12616
|
+
const navH = ((_b2 = (_a2 = navRef.current) == null ? void 0 : _a2.offsetHeight) != null ? _b2 : 56) + 20;
|
|
12609
12617
|
for (const { id } of [...sections].reverse()) {
|
|
12610
12618
|
const el = document.getElementById(`trip-section-${id}`);
|
|
12611
12619
|
if (el && el.getBoundingClientRect().top <= navH) {
|
|
@@ -12619,11 +12627,11 @@ function TripPage({
|
|
|
12619
12627
|
return () => document.removeEventListener("scroll", update, { capture: true });
|
|
12620
12628
|
}, [sections]);
|
|
12621
12629
|
const scrollToBookingForm = () => {
|
|
12622
|
-
var
|
|
12630
|
+
var _a2, _b2, _c2;
|
|
12623
12631
|
const el = document.getElementById("trip-booking-form");
|
|
12624
12632
|
if (!el) return;
|
|
12625
|
-
const navHeight = ((
|
|
12626
|
-
const scrollEl = (
|
|
12633
|
+
const navHeight = ((_b2 = (_a2 = navRef.current) == null ? void 0 : _a2.offsetHeight) != null ? _b2 : 56) + 16;
|
|
12634
|
+
const scrollEl = (_c2 = navRef.current) == null ? void 0 : _c2.closest("main");
|
|
12627
12635
|
const elTop = el.getBoundingClientRect().top;
|
|
12628
12636
|
const containerTop = scrollEl ? scrollEl.getBoundingClientRect().top : 0;
|
|
12629
12637
|
const currentScroll = scrollEl ? scrollEl.scrollTop : window.scrollY;
|
|
@@ -12636,11 +12644,11 @@ function TripPage({
|
|
|
12636
12644
|
};
|
|
12637
12645
|
const scrollToSection = (id) => {
|
|
12638
12646
|
const performScroll = () => {
|
|
12639
|
-
var
|
|
12647
|
+
var _a2, _b2, _c2;
|
|
12640
12648
|
const el = document.getElementById(`trip-section-${id}`);
|
|
12641
12649
|
if (!el) return;
|
|
12642
|
-
const navHeight = (
|
|
12643
|
-
const scrollEl = (
|
|
12650
|
+
const navHeight = (_b2 = (_a2 = navRef.current) == null ? void 0 : _a2.offsetHeight) != null ? _b2 : 56;
|
|
12651
|
+
const scrollEl = (_c2 = navRef.current) == null ? void 0 : _c2.closest("main");
|
|
12644
12652
|
const currentScroll = scrollEl ? scrollEl.scrollTop : window.scrollY;
|
|
12645
12653
|
const elTop = el.getBoundingClientRect().top;
|
|
12646
12654
|
const containerTop = scrollEl ? scrollEl.getBoundingClientRect().top : 0;
|
|
@@ -12709,7 +12717,7 @@ function TripPage({
|
|
|
12709
12717
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-col lg:flex-row gap-8 mt-4", children: [
|
|
12710
12718
|
/* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0 space-y-12 pb-12", children: [
|
|
12711
12719
|
(overview || (overviewHighlights == null ? void 0 : overviewHighlights.length)) && /* @__PURE__ */ jsxs("section", { id: "trip-section-overview", className: "scroll-mt-20", children: [
|
|
12712
|
-
/* @__PURE__ */ jsx("h2", { className: "text-xl font-bold text-foreground font-heading mb-4", children: "Overview" }),
|
|
12720
|
+
/* @__PURE__ */ jsx("h2", { className: "text-xl font-bold text-foreground font-heading mb-4", children: (_a = labels == null ? void 0 : labels.overview) != null ? _a : "Overview" }),
|
|
12713
12721
|
overview && /* @__PURE__ */ jsx("div", { className: "text-lg text-foreground leading-relaxed space-y-3 [&_strong]:font-semibold [&_a]:text-primary [&_a]:underline", children: overview }),
|
|
12714
12722
|
overviewHighlights && overviewHighlights.length > 0 && /* @__PURE__ */ jsx("ul", { className: cn("flex flex-col gap-5", overview && "mt-8"), children: overviewHighlights.map((h, i) => /* @__PURE__ */ jsxs("li", { className: "flex items-start gap-4", children: [
|
|
12715
12723
|
h.icon && /* @__PURE__ */ jsx("span", { className: "flex h-10 w-10 shrink-0 items-center justify-center text-foreground [&_svg]:h-8 [&_svg]:w-8", children: h.icon }),
|
|
@@ -12724,7 +12732,7 @@ function TripPage({
|
|
|
12724
12732
|
] })
|
|
12725
12733
|
] }),
|
|
12726
12734
|
itineraryDays && itineraryDays.length > 0 ? /* @__PURE__ */ jsxs("section", { id: "trip-section-itinerary", className: "scroll-mt-20", children: [
|
|
12727
|
-
/* @__PURE__ */ jsx("h2", { className: "text-xl font-bold text-foreground font-heading mb-6", children: "Itinerary" }),
|
|
12735
|
+
/* @__PURE__ */ jsx("h2", { className: "text-xl font-bold text-foreground font-heading mb-6", children: (_b = labels == null ? void 0 : labels.itinerary) != null ? _b : "Itinerary" }),
|
|
12728
12736
|
/* @__PURE__ */ jsx("div", { className: "flex flex-col gap-12", children: itineraryDays.map((day) => /* @__PURE__ */ jsx(
|
|
12729
12737
|
ItineraryDay,
|
|
12730
12738
|
__spreadProps(__spreadValues({}, day), {
|
|
@@ -12733,20 +12741,20 @@ function TripPage({
|
|
|
12733
12741
|
day.dayNumber
|
|
12734
12742
|
)) })
|
|
12735
12743
|
] }) : itinerary && itinerary.length > 0 && /* @__PURE__ */ jsxs("section", { id: "trip-section-itinerary", className: "scroll-mt-20", children: [
|
|
12736
|
-
/* @__PURE__ */ jsx("h2", { className: "text-xl font-bold text-foreground font-heading mb-6", children: "Itinerary" }),
|
|
12744
|
+
/* @__PURE__ */ jsx("h2", { className: "text-xl font-bold text-foreground font-heading mb-6", children: (_c = labels == null ? void 0 : labels.itinerary) != null ? _c : "Itinerary" }),
|
|
12737
12745
|
/* @__PURE__ */ jsx(ItineraryTimeline, { steps: itinerary })
|
|
12738
12746
|
] }),
|
|
12739
12747
|
included && included.length > 0 && /* @__PURE__ */ jsxs("section", { id: "trip-section-included", className: "scroll-mt-20", children: [
|
|
12740
12748
|
/* @__PURE__ */ jsxs("h2", { className: "text-xl font-bold text-foreground font-heading mb-4 flex items-center gap-2", children: [
|
|
12741
12749
|
(sectionIcons == null ? void 0 : sectionIcons.whatIsIncluded) ? /* @__PURE__ */ jsx("span", { className: "text-primary [&>svg]:h-5 [&>svg]:w-5", children: sectionIcons.whatIsIncluded }) : /* @__PURE__ */ jsx(PackageIcon, { className: "h-5 w-5 text-primary" }),
|
|
12742
|
-
"Included"
|
|
12750
|
+
(_d = labels == null ? void 0 : labels.whatIsIncluded) != null ? _d : "Included"
|
|
12743
12751
|
] }),
|
|
12744
12752
|
/* @__PURE__ */ jsx(Checklist, { items: included })
|
|
12745
12753
|
] }),
|
|
12746
12754
|
notIncluded && notIncluded.length > 0 && /* @__PURE__ */ jsxs("section", { id: "trip-section-not-included", className: "scroll-mt-20", children: [
|
|
12747
12755
|
/* @__PURE__ */ jsxs("h2", { className: "text-xl font-bold text-foreground font-heading mb-4 flex items-center gap-2", children: [
|
|
12748
12756
|
/* @__PURE__ */ jsx(XIcon, { className: "h-5 w-5 text-muted-foreground" }),
|
|
12749
|
-
"Not included"
|
|
12757
|
+
(_e = labels == null ? void 0 : labels.notIncluded) != null ? _e : "Not included"
|
|
12750
12758
|
] }),
|
|
12751
12759
|
/* @__PURE__ */ jsx(
|
|
12752
12760
|
Checklist,
|
|
@@ -12756,7 +12764,7 @@ function TripPage({
|
|
|
12756
12764
|
}
|
|
12757
12765
|
)
|
|
12758
12766
|
] }),
|
|
12759
|
-
(howToGetThere || (whatToBring == null ? void 0 : whatToBring.length) || weather || optionalExtras || accommodation || food || (meetingPoints == null ? void 0 : meetingPoints.length) || meetingPoint || termsAndConditions) && /* @__PURE__ */ jsxs(
|
|
12767
|
+
(howToGetThere || (whatToBring == null ? void 0 : whatToBring.length) || weather || optionalExtras || accommodation || food || (meetingPoints == null ? void 0 : meetingPoints.length) || meetingPoint || termsAndConditions || whenItOperates) && /* @__PURE__ */ jsxs(
|
|
12760
12768
|
Accordion,
|
|
12761
12769
|
{
|
|
12762
12770
|
multiple: false,
|
|
@@ -12764,6 +12772,21 @@ function TripPage({
|
|
|
12764
12772
|
onValueChange: setAccordionValue,
|
|
12765
12773
|
className: "border-t border-border",
|
|
12766
12774
|
children: [
|
|
12775
|
+
whenItOperates && /* @__PURE__ */ jsxs(
|
|
12776
|
+
AccordionItem,
|
|
12777
|
+
{
|
|
12778
|
+
value: "when-it-operates",
|
|
12779
|
+
id: "trip-section-when-it-operates",
|
|
12780
|
+
className: "scroll-mt-20 border-b border-border",
|
|
12781
|
+
children: [
|
|
12782
|
+
/* @__PURE__ */ jsx(AccordionTrigger, { className: "py-5 text-xl font-bold text-foreground font-heading hover:no-underline", children: /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2", children: [
|
|
12783
|
+
(sectionIcons == null ? void 0 : sectionIcons.whenItOperates) ? /* @__PURE__ */ jsx("span", { className: "text-primary [&>svg]:h-5 [&>svg]:w-5", children: sectionIcons.whenItOperates }) : /* @__PURE__ */ jsx(CalendarIcon, { className: "h-5 w-5 text-primary" }),
|
|
12784
|
+
(_f = labels == null ? void 0 : labels.whenItOperates) != null ? _f : "When this tour operates"
|
|
12785
|
+
] }) }),
|
|
12786
|
+
/* @__PURE__ */ jsx(AccordionContent, { className: "pb-6", children: /* @__PURE__ */ jsx("div", { className: "text-base text-foreground leading-relaxed space-y-3 [&_strong]:font-bold [&_a]:text-primary [&_a]:underline", children: whenItOperates }) })
|
|
12787
|
+
]
|
|
12788
|
+
}
|
|
12789
|
+
),
|
|
12767
12790
|
accommodation && /* @__PURE__ */ jsxs(
|
|
12768
12791
|
AccordionItem,
|
|
12769
12792
|
{
|
|
@@ -12773,7 +12796,7 @@ function TripPage({
|
|
|
12773
12796
|
children: [
|
|
12774
12797
|
/* @__PURE__ */ jsx(AccordionTrigger, { className: "py-5 text-xl font-bold text-foreground font-heading hover:no-underline", children: /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2", children: [
|
|
12775
12798
|
(sectionIcons == null ? void 0 : sectionIcons.accommodation) ? /* @__PURE__ */ jsx("span", { className: "text-primary [&>svg]:h-5 [&>svg]:w-5", children: sectionIcons.accommodation }) : /* @__PURE__ */ jsx(BedDoubleIcon, { className: "h-5 w-5 text-primary" }),
|
|
12776
|
-
"Accommodation"
|
|
12799
|
+
(_g = labels == null ? void 0 : labels.accommodation) != null ? _g : "Accommodation"
|
|
12777
12800
|
] }) }),
|
|
12778
12801
|
/* @__PURE__ */ jsx(AccordionContent, { className: "pb-6", children: /* @__PURE__ */ jsx("div", { className: "text-base text-foreground leading-relaxed space-y-3 [&_strong]:font-semibold [&_a]:text-primary [&_a]:underline", children: accommodation }) })
|
|
12779
12802
|
]
|
|
@@ -12788,7 +12811,7 @@ function TripPage({
|
|
|
12788
12811
|
children: [
|
|
12789
12812
|
/* @__PURE__ */ jsx(AccordionTrigger, { className: "py-5 text-xl font-bold text-foreground font-heading hover:no-underline", children: /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2", children: [
|
|
12790
12813
|
(sectionIcons == null ? void 0 : sectionIcons.food) ? /* @__PURE__ */ jsx("span", { className: "text-primary [&>svg]:h-5 [&>svg]:w-5", children: sectionIcons.food }) : /* @__PURE__ */ jsx(UtensilsIcon, { className: "h-5 w-5 text-primary" }),
|
|
12791
|
-
"Food"
|
|
12814
|
+
(_h = labels == null ? void 0 : labels.food) != null ? _h : "Food"
|
|
12792
12815
|
] }) }),
|
|
12793
12816
|
/* @__PURE__ */ jsx(AccordionContent, { className: "pb-6", children: /* @__PURE__ */ jsx("div", { className: "text-base text-foreground leading-relaxed space-y-3 [&_strong]:font-semibold [&_a]:text-primary [&_a]:underline", children: food }) })
|
|
12794
12817
|
]
|
|
@@ -12803,7 +12826,7 @@ function TripPage({
|
|
|
12803
12826
|
children: [
|
|
12804
12827
|
/* @__PURE__ */ jsx(AccordionTrigger, { className: "py-5 text-xl font-bold text-foreground font-heading hover:no-underline", children: /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2", children: [
|
|
12805
12828
|
(sectionIcons == null ? void 0 : sectionIcons.meetingPoint) ? /* @__PURE__ */ jsx("span", { className: "text-primary [&>svg]:h-5 [&>svg]:w-5", children: sectionIcons.meetingPoint }) : /* @__PURE__ */ jsx(MapPinIcon, { className: "h-5 w-5 text-primary" }),
|
|
12806
|
-
"Meeting point"
|
|
12829
|
+
(_i = labels == null ? void 0 : labels.meetingPoint) != null ? _i : "Meeting point"
|
|
12807
12830
|
] }) }),
|
|
12808
12831
|
/* @__PURE__ */ jsx(AccordionContent, { className: "pb-6", children: meetingPoint ? /* @__PURE__ */ jsx("div", { className: "text-base text-foreground leading-relaxed space-y-3 [&_strong]:font-semibold [&_a]:text-primary [&_a]:underline", children: meetingPoint }) : /* @__PURE__ */ jsx("div", { className: "space-y-3", children: meetingPoints.map((mp, i) => /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-3 rounded-xl border border-border p-4", children: [
|
|
12809
12832
|
/* @__PURE__ */ jsx("div", { className: "mt-0.5 flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-primary/10", children: /* @__PURE__ */ jsx(MapPinIcon, { className: "h-4 w-4 text-primary" }) }),
|
|
@@ -12825,7 +12848,7 @@ function TripPage({
|
|
|
12825
12848
|
children: [
|
|
12826
12849
|
/* @__PURE__ */ jsx(AccordionTrigger, { className: "py-5 text-xl font-bold text-foreground font-heading hover:no-underline", children: /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2", children: [
|
|
12827
12850
|
(sectionIcons == null ? void 0 : sectionIcons.howToGetThere) ? /* @__PURE__ */ jsx("span", { className: "text-primary [&>svg]:h-5 [&>svg]:w-5", children: sectionIcons.howToGetThere }) : /* @__PURE__ */ jsx(CompassIcon, { className: "h-5 w-5 text-primary" }),
|
|
12828
|
-
"How to get there"
|
|
12851
|
+
(_j = labels == null ? void 0 : labels.howToGetThere) != null ? _j : "How to get there"
|
|
12829
12852
|
] }) }),
|
|
12830
12853
|
/* @__PURE__ */ jsx(AccordionContent, { className: "pb-6", children: /* @__PURE__ */ jsx("div", { className: "text-base text-foreground leading-relaxed space-y-3 [&_strong]:font-semibold [&_a]:text-primary [&_a]:underline", children: howToGetThere }) })
|
|
12831
12854
|
]
|
|
@@ -12840,7 +12863,7 @@ function TripPage({
|
|
|
12840
12863
|
children: [
|
|
12841
12864
|
/* @__PURE__ */ jsx(AccordionTrigger, { className: "py-5 text-xl font-bold text-foreground font-heading hover:no-underline", children: /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2", children: [
|
|
12842
12865
|
(sectionIcons == null ? void 0 : sectionIcons.weather) ? /* @__PURE__ */ jsx("span", { className: "text-primary [&>svg]:h-5 [&>svg]:w-5", children: sectionIcons.weather }) : /* @__PURE__ */ jsx(SunIcon, { className: "h-5 w-5 text-primary" }),
|
|
12843
|
-
"Weather"
|
|
12866
|
+
(_k = labels == null ? void 0 : labels.weather) != null ? _k : "Weather"
|
|
12844
12867
|
] }) }),
|
|
12845
12868
|
/* @__PURE__ */ jsx(AccordionContent, { className: "pb-6", children: /* @__PURE__ */ jsx("div", { className: "flex items-start gap-3 rounded-xl bg-muted/60 border border-border p-5", children: /* @__PURE__ */ jsx("div", { className: "text-base text-foreground leading-relaxed space-y-2 [&_strong]:font-semibold", children: weather }) }) })
|
|
12846
12869
|
]
|
|
@@ -12855,7 +12878,7 @@ function TripPage({
|
|
|
12855
12878
|
children: [
|
|
12856
12879
|
/* @__PURE__ */ jsx(AccordionTrigger, { className: "py-5 text-xl font-bold text-foreground font-heading hover:no-underline", children: /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2", children: [
|
|
12857
12880
|
(sectionIcons == null ? void 0 : sectionIcons.whatToBring) ? /* @__PURE__ */ jsx("span", { className: "text-primary [&>svg]:h-5 [&>svg]:w-5", children: sectionIcons.whatToBring }) : /* @__PURE__ */ jsx(BackpackIcon, { className: "h-5 w-5 text-primary" }),
|
|
12858
|
-
"What to bring"
|
|
12881
|
+
(_l = labels == null ? void 0 : labels.whatToBring) != null ? _l : "What to bring"
|
|
12859
12882
|
] }) }),
|
|
12860
12883
|
/* @__PURE__ */ jsx(AccordionContent, { className: "pb-6", children: /* @__PURE__ */ jsx(Checklist, { items: whatToBring, icon: /* @__PURE__ */ jsx(InfoIcon, { className: "h-4 w-4" }) }) })
|
|
12861
12884
|
]
|
|
@@ -12870,7 +12893,7 @@ function TripPage({
|
|
|
12870
12893
|
children: [
|
|
12871
12894
|
/* @__PURE__ */ jsx(AccordionTrigger, { className: "py-5 text-xl font-bold text-foreground font-heading hover:no-underline", children: /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2", children: [
|
|
12872
12895
|
(sectionIcons == null ? void 0 : sectionIcons.optionalExtras) ? /* @__PURE__ */ jsx("span", { className: "text-primary [&>svg]:h-5 [&>svg]:w-5", children: sectionIcons.optionalExtras }) : /* @__PURE__ */ jsx(CherryIcon, { className: "h-5 w-5 text-primary" }),
|
|
12873
|
-
"Optional extras"
|
|
12896
|
+
(_m = labels == null ? void 0 : labels.optionalExtras) != null ? _m : "Optional extras"
|
|
12874
12897
|
] }) }),
|
|
12875
12898
|
/* @__PURE__ */ jsx(AccordionContent, { className: "pb-6", children: /* @__PURE__ */ jsx("div", { className: "text-base text-foreground leading-relaxed space-y-3 [&_strong]:font-semibold [&_a]:text-primary [&_a]:underline", children: optionalExtras }) })
|
|
12876
12899
|
]
|
|
@@ -12885,7 +12908,7 @@ function TripPage({
|
|
|
12885
12908
|
children: [
|
|
12886
12909
|
/* @__PURE__ */ jsx(AccordionTrigger, { className: "py-5 text-xl font-bold text-foreground font-heading hover:no-underline", children: /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2", children: [
|
|
12887
12910
|
(sectionIcons == null ? void 0 : sectionIcons.terms) ? /* @__PURE__ */ jsx("span", { className: "text-primary [&>svg]:h-5 [&>svg]:w-5", children: sectionIcons.terms }) : /* @__PURE__ */ jsx(ReceiptIcon, { className: "h-5 w-5 text-primary" }),
|
|
12888
|
-
"Terms & conditions"
|
|
12911
|
+
(_n = labels == null ? void 0 : labels.terms) != null ? _n : "Terms & conditions"
|
|
12889
12912
|
] }) }),
|
|
12890
12913
|
/* @__PURE__ */ jsx(AccordionContent, { className: "pb-6", children: /* @__PURE__ */ jsx("div", { className: "text-base text-foreground leading-relaxed space-y-3 [&_strong]:font-semibold [&_a]:text-primary [&_a]:underline", children: termsAndConditions }) })
|
|
12891
12914
|
]
|
|
@@ -12895,10 +12918,11 @@ function TripPage({
|
|
|
12895
12918
|
}
|
|
12896
12919
|
),
|
|
12897
12920
|
faqs && faqs.length > 0 && (() => {
|
|
12921
|
+
var _a2;
|
|
12898
12922
|
const visibleFaqs = faqsExpanded ? faqs : faqs.slice(0, faqInitialCount);
|
|
12899
12923
|
const hiddenCount = faqs.length - visibleFaqs.length;
|
|
12900
12924
|
return /* @__PURE__ */ jsxs("section", { id: "trip-section-faq", className: "scroll-mt-20", children: [
|
|
12901
|
-
/* @__PURE__ */ jsx("h2", { className: "text-xl font-bold text-foreground font-heading mb-6", children: "FAQ" }),
|
|
12925
|
+
/* @__PURE__ */ jsx("h2", { className: "text-xl font-bold text-foreground font-heading mb-6", children: (_a2 = labels == null ? void 0 : labels.faq) != null ? _a2 : "FAQ" }),
|
|
12902
12926
|
/* @__PURE__ */ jsx(Accordion, { variant: "faq", children: visibleFaqs.map((faq, i) => /* @__PURE__ */ jsxs(AccordionItem, { value: `faq-${i}`, children: [
|
|
12903
12927
|
/* @__PURE__ */ jsx(AccordionTrigger, { children: faq.question }),
|
|
12904
12928
|
/* @__PURE__ */ jsx(AccordionContent, { children: faq.answer })
|
|
@@ -12929,15 +12953,15 @@ function TripPage({
|
|
|
12929
12953
|
})(),
|
|
12930
12954
|
trustpilot ? /* @__PURE__ */ jsxs("section", { id: "trip-section-reviews", className: "scroll-mt-20", children: [
|
|
12931
12955
|
/* @__PURE__ */ jsx(Separator, { className: "mb-10" }),
|
|
12932
|
-
/* @__PURE__ */ jsx("h2", { className: "text-xl font-bold text-foreground font-heading mb-5", children: "What our guests think" }),
|
|
12956
|
+
/* @__PURE__ */ jsx("h2", { className: "text-xl font-bold text-foreground font-heading mb-5", children: (_o = labels == null ? void 0 : labels.reviews) != null ? _o : "What our guests think" }),
|
|
12933
12957
|
/* @__PURE__ */ jsx(TrustpilotEmbed, { config: trustpilot })
|
|
12934
12958
|
] }) : reviews && reviews.length > 0 && /* @__PURE__ */ jsxs("section", { id: "trip-section-reviews", className: "scroll-mt-20", children: [
|
|
12935
12959
|
/* @__PURE__ */ jsx(Separator, { className: "mb-10" }),
|
|
12936
|
-
/* @__PURE__ */ jsx("h2", { className: "text-xl font-bold text-foreground font-heading mb-5", children: "What our guests think" }),
|
|
12960
|
+
/* @__PURE__ */ jsx("h2", { className: "text-xl font-bold text-foreground font-heading mb-5", children: (_p = labels == null ? void 0 : labels.reviews) != null ? _p : "What our guests think" }),
|
|
12937
12961
|
/* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-4", children: reviews.map((r, i) => {
|
|
12938
|
-
var
|
|
12962
|
+
var _a2;
|
|
12939
12963
|
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-3 rounded-xl border border-border p-5", children: [
|
|
12940
|
-
/* @__PURE__ */ jsx(Stars, { count: (
|
|
12964
|
+
/* @__PURE__ */ jsx(Stars, { count: (_a2 = r.rating) != null ? _a2 : 5 }),
|
|
12941
12965
|
/* @__PURE__ */ jsxs("p", { className: "text-base text-foreground leading-relaxed line-clamp-4", children: [
|
|
12942
12966
|
"\u201C",
|
|
12943
12967
|
r.text,
|