@planetaexo/design-system 0.10.1 → 0.12.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.d.cts CHANGED
@@ -623,6 +623,57 @@ interface TravellerFormInviteEmailProps {
623
623
  }
624
624
  declare function TravellerFormInviteEmail({ greeting, bodyIntro, bodyInstruction, links, ignoreNote, teamSignature, logoUrl, buttonLabel, className, tripDetails, tripDetailsLabels, bodyFooter, }: TravellerFormInviteEmailProps): react_jsx_runtime.JSX.Element;
625
625
 
626
+ type BookingWelcomeNewSystemFormsStatus = "COMPLETO" | "INCOMPLETO" | "ZERADO" | "SEM_FORM";
627
+ interface BookingWelcomeNewSystemBookingItem {
628
+ /** ID interno da reserva (ex.: 1234) — exibido como #1234. */
629
+ bookingId: number;
630
+ /** Referência pública estável (ex.: "EXO-R-MS-1234"). Opcional. */
631
+ publicRef?: string | null;
632
+ /** Nome da aventura principal ou rótulo agregado (ex.: "+ 2 aventuras"). */
633
+ adventureName: string;
634
+ /** Data de início formatada na locale do contato. */
635
+ startDate: string;
636
+ /** Status de progresso dos formulários (computed via computeBookingFormsSummary). */
637
+ formsStatus: BookingWelcomeNewSystemFormsStatus;
638
+ /** Quantidade de formulários já completos. */
639
+ formsCompleted: number;
640
+ /** Total de formulários requeridos para a reserva. */
641
+ formsRequired: number;
642
+ /** URL pública para a página da reserva (ex.: /pt/b?bookingId=1234). */
643
+ bookingPublicUrl: string;
644
+ }
645
+ interface BookingWelcomeNewSystemEmailProps {
646
+ /** "all" (todas reservas com forms ok) ou "formsPending" (alguma reserva tem pendência). */
647
+ variant: "all" | "formsPending";
648
+ /** Saudação completa (ex.: "Olá Maria,"). */
649
+ greeting: string;
650
+ /** Parágrafo de abertura — varia conforme variant. */
651
+ introParagraph: string;
652
+ /** Cabeçalho da seção de reservas (ex.: "Suas reservas:"). */
653
+ bookingsHeading: string;
654
+ /** Lista de reservas do contato (1 ou mais). */
655
+ bookings: BookingWelcomeNewSystemBookingItem[];
656
+ /** Label "Formulários completos" (status COMPLETO). */
657
+ bookingFormsCompleteLabel: string;
658
+ /** Label callback "N de M formulários pendentes" (status INCOMPLETO/ZERADO). */
659
+ bookingFormsPendingLabel: (done: number, total: number) => string;
660
+ /** Label "Sem formulário necessário" (status SEM_FORM). */
661
+ bookingFormsNoneLabel?: string;
662
+ /** Texto do botão CTA por reserva (ex.: "Ver reserva"). */
663
+ ctaLabel: string;
664
+ /** Label "Código da reserva:" — exibido antes do #ID. */
665
+ bookingCodeLabel: string;
666
+ /** Linha de assinatura (ex.: "Equipa PlanetaEXO"). */
667
+ signatureLine: string;
668
+ /** Texto do rodapé (ex.: convite a responder ao e-mail). */
669
+ footerText?: string;
670
+ /** URL da logo. Default: data URI embutido. */
671
+ logoUrl?: string;
672
+ /** className extra no container (uso no styleguide). */
673
+ className?: string;
674
+ }
675
+ declare function BookingWelcomeNewSystemEmail({ greeting, introParagraph, bookingsHeading, bookings, bookingFormsCompleteLabel, bookingFormsPendingLabel, bookingFormsNoneLabel, ctaLabel, bookingCodeLabel, signatureLine, footerText, logoUrl, className, }: BookingWelcomeNewSystemEmailProps): react_jsx_runtime.JSX.Element;
676
+
626
677
  interface BookingFormValues {
627
678
  adults: number;
628
679
  children: number;
@@ -813,8 +864,28 @@ interface RegistrationSuccessCardProps {
813
864
  partnerLabel?: string;
814
865
  travellerLabel?: string;
815
866
  };
867
+ /**
868
+ * Visual density of the card.
869
+ * - `"comfortable"` (default): standard spacing — used by the post-submit web flow.
870
+ * - `"compact"`: tighter gaps and smaller terms typography, optimized for A4 PDF export.
871
+ */
872
+ density?: "compact" | "comfortable";
873
+ /**
874
+ * Optional submission timestamp block, rendered after the header.
875
+ * Both fields are pre-formatted strings (e.g. `"27/04/2026 14:32 (UTC-3)"`).
876
+ * `lastUpdatedAt` should be omitted by the caller when it equals `submittedAt`.
877
+ */
878
+ submissionTimestamps?: {
879
+ submittedAt?: string;
880
+ lastUpdatedAt?: string;
881
+ };
882
+ /** i18n-friendly labels for the timestamp block. Defaults to English. */
883
+ submissionTimestampsLabels?: {
884
+ submittedAt?: string;
885
+ lastUpdatedAt?: string;
886
+ };
816
887
  }
817
- declare function RegistrationSuccessCard({ variant, title, message, answersTitle, fields, answers, dateFormatter, formatAnswer, className, actions, logo, logoAlt, terms, termsLayout, termsLabels, adventure, booking, traveller, tripInfoLabels, }: RegistrationSuccessCardProps): react_jsx_runtime.JSX.Element;
888
+ declare function RegistrationSuccessCard({ variant, title, message, answersTitle, fields, answers, dateFormatter, formatAnswer, className, actions, logo, logoAlt, terms, termsLayout, termsLabels, adventure, booking, traveller, tripInfoLabels, density, submissionTimestamps, submissionTimestampsLabels, }: RegistrationSuccessCardProps): react_jsx_runtime.JSX.Element;
818
889
 
819
890
  interface FloatingInputProps extends React.InputHTMLAttributes<HTMLInputElement> {
820
891
  label: string;
@@ -1664,4 +1735,4 @@ declare function LeadCapturePopup({ config: _config, }: {
1664
1735
  config: LeadCapturePopupConfig;
1665
1736
  }): react_jsx_runtime.JSX.Element | null;
1666
1737
 
1667
- export { ActivityCard, type ActivityCardProps, type ActivityCardSize, AgentContactCard, type AgentContactCardProps, Alert, type AlertProps, type AlertVariant, BirthDateField, type BirthDateFieldProps, type BookingAdventure, BookingConfirmation, BookingConfirmationEmail, type BookingConfirmationEmailLabels, type BookingConfirmationEmailProps, type BookingConfirmationLabels, type BookingConfirmationProps, BookingConfirmedCard, type BookingConfirmedCardProps, type BookingContact, type BookingDepositInfo, BookingDetails, type BookingDetailsProps, BookingForm, type BookingFormProps, type BookingFormValues, BookingOtpEmail, type BookingOtpEmailProps, BookingShell, type BookingShellProps, type BookingStatus, type BookingSummaryLineItem, type BookingTraveller, Button, type ButtonProps, COUNTRIES, type ConfirmationAdventure, type ConfirmationDepositInfo, type ConfirmationLineItem, type ConfirmationTraveller, CounterField, type CounterFieldProps, type CountryOption, CountrySearchField, type CountrySearchFieldProps, 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, 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 OfferDepositInfo, type OfferOptionalItem, type OfferProps, type OfferSummaryLineItem, PaymentAmountSelector, type PaymentAmountSelectorProps, type PaymentMethodOption, PaymentMethodSelector, type PaymentMethodSelectorProps, PaymentModalShell, type PaymentModalShellProps, PhoneCountrySelect, PhotoGallery, type PhotoGalleryPhoto, type PhotoGalleryProps, type PhotoGalleryVariant, type PricingOption, 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, 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, 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 TripItineraryStep, type TripMeetingPoint, TripPage, type TripPageProps, type TripPricingOption, type TripReview, buttonVariants, cn, emailTokens, getStripeAppearance, stripeAppearance, wrapEmailHtml };
1738
+ export { ActivityCard, type ActivityCardProps, type ActivityCardSize, AgentContactCard, type AgentContactCardProps, Alert, type AlertProps, type AlertVariant, BirthDateField, type BirthDateFieldProps, type BookingAdventure, BookingConfirmation, BookingConfirmationEmail, type BookingConfirmationEmailLabels, type BookingConfirmationEmailProps, type BookingConfirmationLabels, type BookingConfirmationProps, BookingConfirmedCard, type BookingConfirmedCardProps, type BookingContact, type BookingDepositInfo, BookingDetails, type BookingDetailsProps, BookingForm, type BookingFormProps, type BookingFormValues, BookingOtpEmail, type BookingOtpEmailProps, BookingShell, type BookingShellProps, type BookingStatus, type BookingSummaryLineItem, type BookingTraveller, type BookingWelcomeNewSystemBookingItem, BookingWelcomeNewSystemEmail, type BookingWelcomeNewSystemEmailProps, type BookingWelcomeNewSystemFormsStatus, Button, type ButtonProps, COUNTRIES, type ConfirmationAdventure, type ConfirmationDepositInfo, type ConfirmationLineItem, type ConfirmationTraveller, CounterField, type CounterFieldProps, type CountryOption, CountrySearchField, type CountrySearchFieldProps, 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, 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 OfferDepositInfo, type OfferOptionalItem, type OfferProps, type OfferSummaryLineItem, PaymentAmountSelector, type PaymentAmountSelectorProps, type PaymentMethodOption, PaymentMethodSelector, type PaymentMethodSelectorProps, PaymentModalShell, type PaymentModalShellProps, PhoneCountrySelect, PhotoGallery, type PhotoGalleryPhoto, type PhotoGalleryProps, type PhotoGalleryVariant, type PricingOption, 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, 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, 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 TripItineraryStep, type TripMeetingPoint, TripPage, type TripPageProps, type TripPricingOption, type TripReview, buttonVariants, cn, emailTokens, getStripeAppearance, stripeAppearance, wrapEmailHtml };
package/dist/index.d.ts CHANGED
@@ -623,6 +623,57 @@ interface TravellerFormInviteEmailProps {
623
623
  }
624
624
  declare function TravellerFormInviteEmail({ greeting, bodyIntro, bodyInstruction, links, ignoreNote, teamSignature, logoUrl, buttonLabel, className, tripDetails, tripDetailsLabels, bodyFooter, }: TravellerFormInviteEmailProps): react_jsx_runtime.JSX.Element;
625
625
 
626
+ type BookingWelcomeNewSystemFormsStatus = "COMPLETO" | "INCOMPLETO" | "ZERADO" | "SEM_FORM";
627
+ interface BookingWelcomeNewSystemBookingItem {
628
+ /** ID interno da reserva (ex.: 1234) — exibido como #1234. */
629
+ bookingId: number;
630
+ /** Referência pública estável (ex.: "EXO-R-MS-1234"). Opcional. */
631
+ publicRef?: string | null;
632
+ /** Nome da aventura principal ou rótulo agregado (ex.: "+ 2 aventuras"). */
633
+ adventureName: string;
634
+ /** Data de início formatada na locale do contato. */
635
+ startDate: string;
636
+ /** Status de progresso dos formulários (computed via computeBookingFormsSummary). */
637
+ formsStatus: BookingWelcomeNewSystemFormsStatus;
638
+ /** Quantidade de formulários já completos. */
639
+ formsCompleted: number;
640
+ /** Total de formulários requeridos para a reserva. */
641
+ formsRequired: number;
642
+ /** URL pública para a página da reserva (ex.: /pt/b?bookingId=1234). */
643
+ bookingPublicUrl: string;
644
+ }
645
+ interface BookingWelcomeNewSystemEmailProps {
646
+ /** "all" (todas reservas com forms ok) ou "formsPending" (alguma reserva tem pendência). */
647
+ variant: "all" | "formsPending";
648
+ /** Saudação completa (ex.: "Olá Maria,"). */
649
+ greeting: string;
650
+ /** Parágrafo de abertura — varia conforme variant. */
651
+ introParagraph: string;
652
+ /** Cabeçalho da seção de reservas (ex.: "Suas reservas:"). */
653
+ bookingsHeading: string;
654
+ /** Lista de reservas do contato (1 ou mais). */
655
+ bookings: BookingWelcomeNewSystemBookingItem[];
656
+ /** Label "Formulários completos" (status COMPLETO). */
657
+ bookingFormsCompleteLabel: string;
658
+ /** Label callback "N de M formulários pendentes" (status INCOMPLETO/ZERADO). */
659
+ bookingFormsPendingLabel: (done: number, total: number) => string;
660
+ /** Label "Sem formulário necessário" (status SEM_FORM). */
661
+ bookingFormsNoneLabel?: string;
662
+ /** Texto do botão CTA por reserva (ex.: "Ver reserva"). */
663
+ ctaLabel: string;
664
+ /** Label "Código da reserva:" — exibido antes do #ID. */
665
+ bookingCodeLabel: string;
666
+ /** Linha de assinatura (ex.: "Equipa PlanetaEXO"). */
667
+ signatureLine: string;
668
+ /** Texto do rodapé (ex.: convite a responder ao e-mail). */
669
+ footerText?: string;
670
+ /** URL da logo. Default: data URI embutido. */
671
+ logoUrl?: string;
672
+ /** className extra no container (uso no styleguide). */
673
+ className?: string;
674
+ }
675
+ declare function BookingWelcomeNewSystemEmail({ greeting, introParagraph, bookingsHeading, bookings, bookingFormsCompleteLabel, bookingFormsPendingLabel, bookingFormsNoneLabel, ctaLabel, bookingCodeLabel, signatureLine, footerText, logoUrl, className, }: BookingWelcomeNewSystemEmailProps): react_jsx_runtime.JSX.Element;
676
+
626
677
  interface BookingFormValues {
627
678
  adults: number;
628
679
  children: number;
@@ -813,8 +864,28 @@ interface RegistrationSuccessCardProps {
813
864
  partnerLabel?: string;
814
865
  travellerLabel?: string;
815
866
  };
867
+ /**
868
+ * Visual density of the card.
869
+ * - `"comfortable"` (default): standard spacing — used by the post-submit web flow.
870
+ * - `"compact"`: tighter gaps and smaller terms typography, optimized for A4 PDF export.
871
+ */
872
+ density?: "compact" | "comfortable";
873
+ /**
874
+ * Optional submission timestamp block, rendered after the header.
875
+ * Both fields are pre-formatted strings (e.g. `"27/04/2026 14:32 (UTC-3)"`).
876
+ * `lastUpdatedAt` should be omitted by the caller when it equals `submittedAt`.
877
+ */
878
+ submissionTimestamps?: {
879
+ submittedAt?: string;
880
+ lastUpdatedAt?: string;
881
+ };
882
+ /** i18n-friendly labels for the timestamp block. Defaults to English. */
883
+ submissionTimestampsLabels?: {
884
+ submittedAt?: string;
885
+ lastUpdatedAt?: string;
886
+ };
816
887
  }
817
- declare function RegistrationSuccessCard({ variant, title, message, answersTitle, fields, answers, dateFormatter, formatAnswer, className, actions, logo, logoAlt, terms, termsLayout, termsLabels, adventure, booking, traveller, tripInfoLabels, }: RegistrationSuccessCardProps): react_jsx_runtime.JSX.Element;
888
+ declare function RegistrationSuccessCard({ variant, title, message, answersTitle, fields, answers, dateFormatter, formatAnswer, className, actions, logo, logoAlt, terms, termsLayout, termsLabels, adventure, booking, traveller, tripInfoLabels, density, submissionTimestamps, submissionTimestampsLabels, }: RegistrationSuccessCardProps): react_jsx_runtime.JSX.Element;
818
889
 
819
890
  interface FloatingInputProps extends React.InputHTMLAttributes<HTMLInputElement> {
820
891
  label: string;
@@ -1664,4 +1735,4 @@ declare function LeadCapturePopup({ config: _config, }: {
1664
1735
  config: LeadCapturePopupConfig;
1665
1736
  }): react_jsx_runtime.JSX.Element | null;
1666
1737
 
1667
- export { ActivityCard, type ActivityCardProps, type ActivityCardSize, AgentContactCard, type AgentContactCardProps, Alert, type AlertProps, type AlertVariant, BirthDateField, type BirthDateFieldProps, type BookingAdventure, BookingConfirmation, BookingConfirmationEmail, type BookingConfirmationEmailLabels, type BookingConfirmationEmailProps, type BookingConfirmationLabels, type BookingConfirmationProps, BookingConfirmedCard, type BookingConfirmedCardProps, type BookingContact, type BookingDepositInfo, BookingDetails, type BookingDetailsProps, BookingForm, type BookingFormProps, type BookingFormValues, BookingOtpEmail, type BookingOtpEmailProps, BookingShell, type BookingShellProps, type BookingStatus, type BookingSummaryLineItem, type BookingTraveller, Button, type ButtonProps, COUNTRIES, type ConfirmationAdventure, type ConfirmationDepositInfo, type ConfirmationLineItem, type ConfirmationTraveller, CounterField, type CounterFieldProps, type CountryOption, CountrySearchField, type CountrySearchFieldProps, 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, 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 OfferDepositInfo, type OfferOptionalItem, type OfferProps, type OfferSummaryLineItem, PaymentAmountSelector, type PaymentAmountSelectorProps, type PaymentMethodOption, PaymentMethodSelector, type PaymentMethodSelectorProps, PaymentModalShell, type PaymentModalShellProps, PhoneCountrySelect, PhotoGallery, type PhotoGalleryPhoto, type PhotoGalleryProps, type PhotoGalleryVariant, type PricingOption, 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, 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, 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 TripItineraryStep, type TripMeetingPoint, TripPage, type TripPageProps, type TripPricingOption, type TripReview, buttonVariants, cn, emailTokens, getStripeAppearance, stripeAppearance, wrapEmailHtml };
1738
+ export { ActivityCard, type ActivityCardProps, type ActivityCardSize, AgentContactCard, type AgentContactCardProps, Alert, type AlertProps, type AlertVariant, BirthDateField, type BirthDateFieldProps, type BookingAdventure, BookingConfirmation, BookingConfirmationEmail, type BookingConfirmationEmailLabels, type BookingConfirmationEmailProps, type BookingConfirmationLabels, type BookingConfirmationProps, BookingConfirmedCard, type BookingConfirmedCardProps, type BookingContact, type BookingDepositInfo, BookingDetails, type BookingDetailsProps, BookingForm, type BookingFormProps, type BookingFormValues, BookingOtpEmail, type BookingOtpEmailProps, BookingShell, type BookingShellProps, type BookingStatus, type BookingSummaryLineItem, type BookingTraveller, type BookingWelcomeNewSystemBookingItem, BookingWelcomeNewSystemEmail, type BookingWelcomeNewSystemEmailProps, type BookingWelcomeNewSystemFormsStatus, Button, type ButtonProps, COUNTRIES, type ConfirmationAdventure, type ConfirmationDepositInfo, type ConfirmationLineItem, type ConfirmationTraveller, CounterField, type CounterFieldProps, type CountryOption, CountrySearchField, type CountrySearchFieldProps, 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, 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 OfferDepositInfo, type OfferOptionalItem, type OfferProps, type OfferSummaryLineItem, PaymentAmountSelector, type PaymentAmountSelectorProps, type PaymentMethodOption, PaymentMethodSelector, type PaymentMethodSelectorProps, PaymentModalShell, type PaymentModalShellProps, PhoneCountrySelect, PhotoGallery, type PhotoGalleryPhoto, type PhotoGalleryProps, type PhotoGalleryVariant, type PricingOption, 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, 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, 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 TripItineraryStep, type TripMeetingPoint, TripPage, type TripPageProps, type TripPricingOption, type TripReview, buttonVariants, cn, emailTokens, getStripeAppearance, stripeAppearance, wrapEmailHtml };
package/dist/index.js CHANGED
@@ -4244,6 +4244,176 @@ function TravellerFormInviteEmail({
4244
4244
  }
4245
4245
  );
4246
4246
  }
4247
+ function BookingWelcomeNewSystemEmail({
4248
+ greeting,
4249
+ introParagraph,
4250
+ bookingsHeading,
4251
+ bookings,
4252
+ bookingFormsCompleteLabel,
4253
+ bookingFormsPendingLabel,
4254
+ bookingFormsNoneLabel,
4255
+ ctaLabel,
4256
+ bookingCodeLabel,
4257
+ signatureLine,
4258
+ footerText,
4259
+ logoUrl,
4260
+ className
4261
+ }) {
4262
+ const ctaStyle = {
4263
+ display: "inline-block",
4264
+ backgroundColor: emailTokens.primary,
4265
+ color: emailTokens.primaryForeground,
4266
+ padding: "10px 20px",
4267
+ borderRadius: "6px",
4268
+ fontSize: "14px",
4269
+ fontWeight: 600,
4270
+ textDecoration: "none",
4271
+ fontFamily: emailTokens.fontFamily
4272
+ };
4273
+ return /* @__PURE__ */ jsxs(
4274
+ "div",
4275
+ {
4276
+ style: {
4277
+ fontFamily: emailTokens.fontFamily,
4278
+ color: emailTokens.foreground,
4279
+ maxWidth: "600px",
4280
+ margin: "0 auto",
4281
+ padding: "32px",
4282
+ border: `1px solid ${emailTokens.border}`,
4283
+ borderRadius: "12px",
4284
+ backgroundColor: emailTokens.white
4285
+ },
4286
+ className,
4287
+ children: [
4288
+ /* @__PURE__ */ jsx(EmailLogo, { src: logoUrl }),
4289
+ /* @__PURE__ */ jsx("p", { style: { fontSize: "16px", lineHeight: "1.5", margin: "0 0 12px" }, children: greeting }),
4290
+ /* @__PURE__ */ jsx("p", { style: { fontSize: "15px", lineHeight: "1.5", margin: "0 0 24px" }, children: introParagraph }),
4291
+ /* @__PURE__ */ jsx(
4292
+ "hr",
4293
+ {
4294
+ style: {
4295
+ border: "none",
4296
+ borderTop: `1px solid ${emailTokens.border}`,
4297
+ margin: "0 0 24px"
4298
+ }
4299
+ }
4300
+ ),
4301
+ /* @__PURE__ */ jsx(
4302
+ "p",
4303
+ {
4304
+ style: {
4305
+ fontSize: "15px",
4306
+ fontWeight: 700,
4307
+ margin: "0 0 16px",
4308
+ color: emailTokens.foreground
4309
+ },
4310
+ children: bookingsHeading
4311
+ }
4312
+ ),
4313
+ /* @__PURE__ */ jsx("ul", { style: { listStyle: "none", padding: 0, margin: "0 0 24px" }, children: bookings.map((b) => {
4314
+ const statusLine = b.formsStatus === "COMPLETO" ? bookingFormsCompleteLabel : b.formsStatus === "SEM_FORM" ? bookingFormsNoneLabel != null ? bookingFormsNoneLabel : "" : bookingFormsPendingLabel(b.formsCompleted, b.formsRequired);
4315
+ const statusIcon = b.formsStatus === "COMPLETO" ? "\u2713" : b.formsStatus === "SEM_FORM" ? "" : "\u26A0";
4316
+ const statusColor = b.formsStatus === "COMPLETO" ? emailTokens.green : b.formsStatus === "SEM_FORM" ? emailTokens.mutedForeground : emailTokens.destructive;
4317
+ return /* @__PURE__ */ jsxs(
4318
+ "li",
4319
+ {
4320
+ style: {
4321
+ marginBottom: "16px",
4322
+ padding: "16px",
4323
+ backgroundColor: emailTokens.muted,
4324
+ border: `1px solid ${emailTokens.border}`,
4325
+ borderRadius: "8px"
4326
+ },
4327
+ children: [
4328
+ /* @__PURE__ */ jsx(
4329
+ "p",
4330
+ {
4331
+ style: {
4332
+ fontSize: "15px",
4333
+ fontWeight: 600,
4334
+ margin: "0 0 6px",
4335
+ color: emailTokens.foreground
4336
+ },
4337
+ children: b.adventureName
4338
+ }
4339
+ ),
4340
+ /* @__PURE__ */ jsx(
4341
+ "p",
4342
+ {
4343
+ style: {
4344
+ fontSize: "13px",
4345
+ color: emailTokens.mutedForeground,
4346
+ margin: "0 0 4px"
4347
+ },
4348
+ children: b.startDate
4349
+ }
4350
+ ),
4351
+ /* @__PURE__ */ jsxs(
4352
+ "p",
4353
+ {
4354
+ style: {
4355
+ fontSize: "13px",
4356
+ color: emailTokens.mutedForeground,
4357
+ margin: "0 0 8px"
4358
+ },
4359
+ children: [
4360
+ /* @__PURE__ */ jsx("span", { style: { fontWeight: 600 }, children: bookingCodeLabel }),
4361
+ " ",
4362
+ /* @__PURE__ */ jsxs(
4363
+ "span",
4364
+ {
4365
+ style: {
4366
+ fontFamily: emailTokens.fontFamily,
4367
+ color: emailTokens.foreground,
4368
+ fontWeight: 600
4369
+ },
4370
+ children: [
4371
+ "#",
4372
+ b.bookingId
4373
+ ]
4374
+ }
4375
+ )
4376
+ ]
4377
+ }
4378
+ ),
4379
+ statusLine && /* @__PURE__ */ jsxs(
4380
+ "p",
4381
+ {
4382
+ style: {
4383
+ fontSize: "13px",
4384
+ color: statusColor,
4385
+ margin: "0 0 12px",
4386
+ fontWeight: 500
4387
+ },
4388
+ children: [
4389
+ statusIcon ? `${statusIcon} ` : "",
4390
+ statusLine
4391
+ ]
4392
+ }
4393
+ ),
4394
+ /* @__PURE__ */ jsx("a", { href: b.bookingPublicUrl, style: ctaStyle, children: ctaLabel })
4395
+ ]
4396
+ },
4397
+ b.bookingId
4398
+ );
4399
+ }) }),
4400
+ footerText && /* @__PURE__ */ jsx(
4401
+ "p",
4402
+ {
4403
+ style: {
4404
+ color: emailTokens.mutedForeground,
4405
+ fontSize: "13px",
4406
+ lineHeight: "1.5",
4407
+ margin: "0 0 16px"
4408
+ },
4409
+ children: footerText
4410
+ }
4411
+ ),
4412
+ /* @__PURE__ */ jsx("p", { style: { fontSize: "14px", lineHeight: "1.5", margin: "0" }, children: signatureLine })
4413
+ ]
4414
+ }
4415
+ );
4416
+ }
4247
4417
  function CounterField({
4248
4418
  label,
4249
4419
  sublabel,
@@ -4854,13 +5024,27 @@ function FormSection2({
4854
5024
  children,
4855
5025
  className
4856
5026
  }) {
4857
- return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-5", className), children: [
4858
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-4", children: [
4859
- /* @__PURE__ */ jsx("h3", { className: "text-base font-bold text-foreground whitespace-nowrap font-heading", children: title }),
4860
- /* @__PURE__ */ jsx("div", { className: "h-px flex-1 bg-border" })
4861
- ] }),
4862
- children
4863
- ] });
5027
+ return /* @__PURE__ */ jsxs(
5028
+ "div",
5029
+ {
5030
+ className: cn("flex flex-col gap-5", className),
5031
+ style: { breakInside: "avoid" },
5032
+ children: [
5033
+ /* @__PURE__ */ jsxs(
5034
+ "div",
5035
+ {
5036
+ className: "flex items-center gap-4",
5037
+ style: { breakAfter: "avoid-page" },
5038
+ children: [
5039
+ /* @__PURE__ */ jsx("h3", { className: "text-base font-bold text-foreground whitespace-nowrap font-heading", children: title }),
5040
+ /* @__PURE__ */ jsx("div", { className: "h-px flex-1 bg-border" })
5041
+ ]
5042
+ }
5043
+ ),
5044
+ children
5045
+ ]
5046
+ }
5047
+ );
4864
5048
  }
4865
5049
  function isFieldEmpty(field, value) {
4866
5050
  var _a, _b, _c, _d, _e, _f, _g, _h, _i;
@@ -5774,10 +5958,14 @@ function RegistrationSuccessCard({
5774
5958
  adventure,
5775
5959
  booking,
5776
5960
  traveller,
5777
- tripInfoLabels
5961
+ tripInfoLabels,
5962
+ density = "comfortable",
5963
+ submissionTimestamps,
5964
+ submissionTimestampsLabels
5778
5965
  }) {
5779
- var _a, _b, _c, _d, _e, _f, _g, _h;
5966
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
5780
5967
  const isMinimal = variant === "minimal";
5968
+ const isCompact = density === "compact";
5781
5969
  const sorted = isMinimal ? [] : [...fields].sort((a, b) => {
5782
5970
  var _a2, _b2;
5783
5971
  return ((_a2 = a.order) != null ? _a2 : 0) - ((_b2 = b.order) != null ? _b2 : 0);
@@ -5791,62 +5979,114 @@ function RegistrationSuccessCard({
5791
5979
  partnerLabel: (_d = tripInfoLabels == null ? void 0 : tripInfoLabels.partnerLabel) != null ? _d : "Partner",
5792
5980
  travellerLabel: (_e = tripInfoLabels == null ? void 0 : tripInfoLabels.travellerLabel) != null ? _e : "Traveller"
5793
5981
  };
5794
- return /* @__PURE__ */ jsxs("div", { className: cn("rounded-xl border border-border bg-card p-6 sm:p-8 flex flex-col gap-10", className), children: [
5795
- actions && /* @__PURE__ */ jsx("div", { className: "flex gap-3 justify-end", children: actions }),
5796
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-3 text-center", children: [
5797
- logo !== null && /* eslint-disable-next-line @next/next/no-img-element */
5798
- /* @__PURE__ */ jsx(
5799
- "img",
5800
- {
5801
- src: logo != null ? logo : "/logo-planetaexo.png",
5802
- alt: logoAlt,
5803
- className: "h-10 w-auto object-contain"
5804
- }
5982
+ const STL = {
5983
+ submittedAt: (_f = submissionTimestampsLabels == null ? void 0 : submissionTimestampsLabels.submittedAt) != null ? _f : "Submitted",
5984
+ lastUpdatedAt: (_g = submissionTimestampsLabels == null ? void 0 : submissionTimestampsLabels.lastUpdatedAt) != null ? _g : "Last updated"
5985
+ };
5986
+ const hasTimestamps = !isMinimal && !!submissionTimestamps && (!!submissionTimestamps.submittedAt || !!submissionTimestamps.lastUpdatedAt);
5987
+ return /* @__PURE__ */ jsxs(
5988
+ "div",
5989
+ {
5990
+ className: cn(
5991
+ "rounded-xl border border-border bg-card p-6 sm:p-8 flex flex-col",
5992
+ isCompact ? "gap-6" : "gap-10",
5993
+ className
5805
5994
  ),
5806
- logo === void 0 && /* @__PURE__ */ jsx("div", { className: "inline-flex h-14 w-14 items-center justify-center rounded-full bg-primary/10 text-primary", children: /* @__PURE__ */ jsx(CircleCheckIcon, { size: 28 }) }),
5807
- /* @__PURE__ */ jsx("h2", { className: "text-2xl font-black uppercase tracking-wide text-foreground font-heading leading-tight", children: title }),
5808
- message && /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground font-ui", children: message })
5809
- ] }),
5810
- hasTripInfo && /* @__PURE__ */ jsx(FormSection2, { title: TL.sectionTitle, children: /* @__PURE__ */ jsxs("dl", { className: "flex flex-col gap-y-3 text-sm font-ui", children: [
5811
- adventure && /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-x-4", children: [
5812
- /* @__PURE__ */ jsx("dt", { className: "w-1/2 text-muted-foreground break-words", children: TL.adventureLabel }),
5813
- /* @__PURE__ */ jsx("dd", { className: "w-1/2 text-foreground font-medium text-right min-w-0 break-words", children: adventure.name })
5814
- ] }),
5815
- dateRange && /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-x-4", children: [
5816
- /* @__PURE__ */ jsx("dt", { className: "w-1/2 text-muted-foreground break-words", children: (adventure == null ? void 0 : adventure.startDate) && (adventure == null ? void 0 : adventure.endDate) ? "Dates" : "Date" }),
5817
- /* @__PURE__ */ jsx("dd", { className: "w-1/2 text-foreground text-right min-w-0 break-words", children: dateRange })
5818
- ] }),
5819
- (adventure == null ? void 0 : adventure.partnerName) && /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-x-4", children: [
5820
- /* @__PURE__ */ jsx("dt", { className: "w-1/2 text-muted-foreground break-words", children: TL.partnerLabel }),
5821
- /* @__PURE__ */ jsx("dd", { className: "w-1/2 text-foreground text-right min-w-0 break-words", children: adventure.partnerName })
5822
- ] }),
5823
- booking && /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-x-4", children: [
5824
- /* @__PURE__ */ jsx("dt", { className: "w-1/2 text-muted-foreground break-words", children: TL.bookingLabel }),
5825
- /* @__PURE__ */ jsx("dd", { className: "w-1/2 text-foreground font-mono tabular-nums text-right min-w-0 break-words", children: booking.id })
5826
- ] }),
5827
- traveller && /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-x-4", children: [
5828
- /* @__PURE__ */ jsx("dt", { className: "w-1/2 text-muted-foreground break-words", children: TL.travellerLabel }),
5829
- /* @__PURE__ */ jsx("dd", { className: "w-1/2 text-foreground font-medium text-right min-w-0 break-words", children: traveller.fullName })
5830
- ] })
5831
- ] }) }),
5832
- sorted.length > 0 && /* @__PURE__ */ jsx(FormSection2, { title: answersTitle, children: /* @__PURE__ */ jsx("dl", { className: "flex flex-col gap-y-3 text-sm font-ui", children: sorted.map((f) => /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-x-4", children: [
5833
- /* @__PURE__ */ jsx("dt", { className: "w-1/2 text-muted-foreground break-words", children: f.label }),
5834
- /* @__PURE__ */ jsx("dd", { className: "w-1/2 text-foreground text-right min-w-0 break-words", children: (formatAnswer != null ? formatAnswer : ((field, v) => defaultFormatAnswer(field, v, dateFormatter)))(
5835
- f,
5836
- answers[f.id]
5837
- ) })
5838
- ] }, f.id)) }) }),
5839
- !isMinimal && terms && /* @__PURE__ */ jsx(FormSection2, { title: (_f = termsLabels == null ? void 0 : termsLabels.title) != null ? _f : "Terms & Conditions", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-3 text-sm font-ui", children: [
5840
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
5841
- /* @__PURE__ */ jsx("div", { className: cn(
5842
- "inline-flex h-5 w-5 items-center justify-center rounded-full text-white text-xs font-bold",
5843
- terms.accepted ? "bg-primary" : "bg-destructive"
5844
- ), children: terms.accepted ? "\u2713" : "\u2717" }),
5845
- /* @__PURE__ */ jsx("span", { className: terms.accepted ? "text-primary font-medium" : "text-destructive font-medium", children: terms.accepted ? (_g = termsLabels == null ? void 0 : termsLabels.accepted) != null ? _g : "Accepted" : (_h = termsLabels == null ? void 0 : termsLabels.notAccepted) != null ? _h : "Not accepted" })
5846
- ] }),
5847
- termsLayout === "full" && terms.markdown.trim().length > 0 && /* @__PURE__ */ jsx("div", { className: "rounded-lg border border-border bg-muted/30 p-4", children: /* @__PURE__ */ jsx("p", { className: "whitespace-pre-wrap break-words text-sm leading-relaxed text-foreground font-ui", children: terms.markdown }) })
5848
- ] }) })
5849
- ] });
5995
+ children: [
5996
+ actions && /* @__PURE__ */ jsx("div", { className: "flex gap-3 justify-end", children: actions }),
5997
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-3 text-center", children: [
5998
+ logo !== null && /* eslint-disable-next-line @next/next/no-img-element */
5999
+ /* @__PURE__ */ jsx(
6000
+ "img",
6001
+ {
6002
+ src: logo != null ? logo : "/logo-planetaexo.png",
6003
+ alt: logoAlt,
6004
+ className: "h-10 w-auto object-contain"
6005
+ }
6006
+ ),
6007
+ logo === void 0 && /* @__PURE__ */ jsx("div", { className: "inline-flex h-14 w-14 items-center justify-center rounded-full bg-primary/10 text-primary", children: /* @__PURE__ */ jsx(CircleCheckIcon, { size: 28 }) }),
6008
+ /* @__PURE__ */ jsx("h2", { className: "text-2xl font-black uppercase tracking-wide text-foreground font-heading leading-tight", children: title }),
6009
+ message && /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground font-ui", children: message })
6010
+ ] }),
6011
+ hasTimestamps && /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-end gap-0.5 text-xs text-muted-foreground font-ui", children: [
6012
+ (submissionTimestamps == null ? void 0 : submissionTimestamps.submittedAt) && /* @__PURE__ */ jsxs("div", { children: [
6013
+ /* @__PURE__ */ jsxs("span", { className: "font-medium", children: [
6014
+ STL.submittedAt,
6015
+ ":"
6016
+ ] }),
6017
+ " ",
6018
+ /* @__PURE__ */ jsx("span", { className: "tabular-nums", children: submissionTimestamps.submittedAt })
6019
+ ] }),
6020
+ (submissionTimestamps == null ? void 0 : submissionTimestamps.lastUpdatedAt) && /* @__PURE__ */ jsxs("div", { children: [
6021
+ /* @__PURE__ */ jsxs("span", { className: "font-medium", children: [
6022
+ STL.lastUpdatedAt,
6023
+ ":"
6024
+ ] }),
6025
+ " ",
6026
+ /* @__PURE__ */ jsx("span", { className: "tabular-nums", children: submissionTimestamps.lastUpdatedAt })
6027
+ ] })
6028
+ ] }),
6029
+ hasTripInfo && /* @__PURE__ */ jsx(FormSection2, { title: TL.sectionTitle, children: /* @__PURE__ */ jsxs("dl", { className: "flex flex-col gap-y-3 text-sm font-ui", children: [
6030
+ adventure && /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-x-4", children: [
6031
+ /* @__PURE__ */ jsx("dt", { className: "w-1/2 text-muted-foreground break-words", children: TL.adventureLabel }),
6032
+ /* @__PURE__ */ jsx("dd", { className: "w-1/2 text-foreground font-medium text-right min-w-0 break-words", children: adventure.name })
6033
+ ] }),
6034
+ dateRange && /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-x-4", children: [
6035
+ /* @__PURE__ */ jsx("dt", { className: "w-1/2 text-muted-foreground break-words", children: (adventure == null ? void 0 : adventure.startDate) && (adventure == null ? void 0 : adventure.endDate) ? "Dates" : "Date" }),
6036
+ /* @__PURE__ */ jsx("dd", { className: "w-1/2 text-foreground text-right min-w-0 break-words", children: dateRange })
6037
+ ] }),
6038
+ (adventure == null ? void 0 : adventure.partnerName) && /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-x-4", children: [
6039
+ /* @__PURE__ */ jsx("dt", { className: "w-1/2 text-muted-foreground break-words", children: TL.partnerLabel }),
6040
+ /* @__PURE__ */ jsx("dd", { className: "w-1/2 text-foreground text-right min-w-0 break-words", children: adventure.partnerName })
6041
+ ] }),
6042
+ booking && /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-x-4", children: [
6043
+ /* @__PURE__ */ jsx("dt", { className: "w-1/2 text-muted-foreground break-words", children: TL.bookingLabel }),
6044
+ /* @__PURE__ */ jsx("dd", { className: "w-1/2 text-foreground font-mono tabular-nums text-right min-w-0 break-words", children: booking.id })
6045
+ ] }),
6046
+ traveller && /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-x-4", children: [
6047
+ /* @__PURE__ */ jsx("dt", { className: "w-1/2 text-muted-foreground break-words", children: TL.travellerLabel }),
6048
+ /* @__PURE__ */ jsx("dd", { className: "w-1/2 text-foreground font-medium text-right min-w-0 break-words", children: traveller.fullName })
6049
+ ] })
6050
+ ] }) }),
6051
+ sorted.length > 0 && /* @__PURE__ */ jsx(FormSection2, { title: answersTitle, children: /* @__PURE__ */ jsx("dl", { className: "flex flex-col gap-y-3 text-sm font-ui", children: sorted.map((f) => /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-x-4", children: [
6052
+ /* @__PURE__ */ jsx("dt", { className: "w-1/2 text-muted-foreground break-words", children: f.label }),
6053
+ /* @__PURE__ */ jsx("dd", { className: "w-1/2 text-foreground text-right min-w-0 break-words", children: (formatAnswer != null ? formatAnswer : ((field, v) => defaultFormatAnswer(field, v, dateFormatter)))(
6054
+ f,
6055
+ answers[f.id]
6056
+ ) })
6057
+ ] }, f.id)) }) }),
6058
+ !isMinimal && terms && /* @__PURE__ */ jsx(FormSection2, { title: (_h = termsLabels == null ? void 0 : termsLabels.title) != null ? _h : "Terms & Conditions", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-3 text-sm font-ui", children: [
6059
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
6060
+ /* @__PURE__ */ jsx("div", { className: cn(
6061
+ "inline-flex h-5 w-5 items-center justify-center rounded-full text-white text-xs font-bold",
6062
+ terms.accepted ? "bg-primary" : "bg-destructive"
6063
+ ), children: terms.accepted ? "\u2713" : "\u2717" }),
6064
+ /* @__PURE__ */ jsx("span", { className: terms.accepted ? "text-primary font-medium" : "text-destructive font-medium", children: terms.accepted ? (_i = termsLabels == null ? void 0 : termsLabels.accepted) != null ? _i : "Accepted" : (_j = termsLabels == null ? void 0 : termsLabels.notAccepted) != null ? _j : "Not accepted" })
6065
+ ] }),
6066
+ termsLayout === "full" && terms.markdown.trim().length > 0 && /* @__PURE__ */ jsx(
6067
+ "div",
6068
+ {
6069
+ className: cn(
6070
+ "rounded-lg border border-border bg-muted/30",
6071
+ isCompact ? "p-3" : "p-4"
6072
+ ),
6073
+ style: { breakInside: "auto" },
6074
+ children: /* @__PURE__ */ jsx(
6075
+ "p",
6076
+ {
6077
+ className: cn(
6078
+ "whitespace-pre-wrap break-words text-foreground font-ui",
6079
+ isCompact ? "text-xs leading-snug" : "text-sm leading-relaxed"
6080
+ ),
6081
+ children: terms.markdown
6082
+ }
6083
+ )
6084
+ }
6085
+ )
6086
+ ] }) })
6087
+ ]
6088
+ }
6089
+ );
5850
6090
  }
5851
6091
  var OTPCodeInput = ({
5852
6092
  value,
@@ -9385,6 +9625,6 @@ function LeadCapturePopup({
9385
9625
  );
9386
9626
  }
9387
9627
 
9388
- export { ActivityCard, AgentContactCard, Alert, BirthDateField, BookingConfirmation, BookingConfirmationEmail, BookingConfirmedCard, BookingDetails, BookingForm, BookingOtpEmail, BookingShell, Button, COUNTRIES, CounterField, CountrySearchField, DEFAULT_HEADER_LINKS, DEFAULT_LANGUAGES, DatePickerField, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, FilterPanel, FloatingInput, FloatingSelect, Itinerary, LOGO_PLANETAEXO_DATA_URI, LeadCapturePopup, MenuTrip, OTPCodeInput, Offer, OfferAdventureCard, PaymentAmountSelector, PaymentMethodSelector, PaymentModalShell, PhoneCountrySelect, PhotoGallery, PricingTrip, RegistrationForm, RegistrationSuccessCard, SiteHeader, TERMS_ACCEPT_KEY, TermsSection, ThemeToggle, Toast, TravellerFormInviteEmail, TripCard, TripHeader, TripPage, buttonVariants, cn, emailTokens, getStripeAppearance, stripeAppearance, wrapEmailHtml };
9628
+ export { ActivityCard, AgentContactCard, Alert, BirthDateField, BookingConfirmation, BookingConfirmationEmail, BookingConfirmedCard, BookingDetails, BookingForm, BookingOtpEmail, BookingShell, BookingWelcomeNewSystemEmail, Button, COUNTRIES, CounterField, CountrySearchField, DEFAULT_HEADER_LINKS, DEFAULT_LANGUAGES, DatePickerField, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, FilterPanel, FloatingInput, FloatingSelect, Itinerary, LOGO_PLANETAEXO_DATA_URI, LeadCapturePopup, MenuTrip, OTPCodeInput, Offer, OfferAdventureCard, PaymentAmountSelector, PaymentMethodSelector, PaymentModalShell, PhoneCountrySelect, PhotoGallery, PricingTrip, RegistrationForm, RegistrationSuccessCard, SiteHeader, TERMS_ACCEPT_KEY, TermsSection, ThemeToggle, Toast, TravellerFormInviteEmail, TripCard, TripHeader, TripPage, buttonVariants, cn, emailTokens, getStripeAppearance, stripeAppearance, wrapEmailHtml };
9389
9629
  //# sourceMappingURL=index.js.map
9390
9630
  //# sourceMappingURL=index.js.map