@planetaexo/design-system 0.9.2 → 0.9.4

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
@@ -515,24 +515,23 @@ interface BookingConfirmationEmailProps {
515
515
  }
516
516
  declare function BookingConfirmationEmail({ recipientName, addTravellersUrl, logoUrl, bookingNumber, activity, adventure, startingDate, numberOfPeople, host, labels, className, }: BookingConfirmationEmailProps): react_jsx_runtime.JSX.Element;
517
517
 
518
- interface BookingOtpEmailLabels {
519
- bodyMessage: string;
520
- expiryMessage: string;
521
- logoAlt?: string;
522
- }
523
518
  interface BookingOtpEmailProps {
524
- /** Mensagem principal com código incluído (ex: "Seu código para reserva #42 é: 123456") */
525
- bodyMessage: string;
526
- /** Mensagem de expiração (ex: "Este código expira em breve.") */
519
+ /** Saudação (ex.: "Hello!" / "Olá!"). */
520
+ greeting: string;
521
+ /** Intro curta com bookingId embutido (ex.: "Here is your verification code for booking #42."). */
522
+ intro: string;
523
+ /** Código OTP renderizado em destaque. Não é sanitizado — passe só dígitos. */
524
+ code: string;
525
+ /** Mensagem de expiração (ex.: "This code expires shortly."). */
527
526
  expiryMessage: string;
528
- /** URL da logo. Default: data URI embutido no pacote. */
527
+ /** Assinatura do time (ex.: "PlanetaEXO Team"). */
528
+ teamSignature: string;
529
+ /** URL da logo. Default: data URI embutido. */
529
530
  logoUrl?: string;
530
- /** Labels opcionais para i18n (não usado diretamente — bodyMessage já é traduzida) */
531
- labels?: Partial<BookingOtpEmailLabels>;
532
- /** className extra no container (para uso no styleguide) */
531
+ /** className extra no container (uso no styleguide). */
533
532
  className?: string;
534
533
  }
535
- declare function BookingOtpEmail({ bodyMessage, expiryMessage, logoUrl, className, }: BookingOtpEmailProps): react_jsx_runtime.JSX.Element;
534
+ declare function BookingOtpEmail({ greeting, intro, code, expiryMessage, teamSignature, logoUrl, className, }: BookingOtpEmailProps): react_jsx_runtime.JSX.Element;
536
535
 
537
536
  interface TravellerFormInviteLink {
538
537
  adventureName?: string;
@@ -749,6 +748,19 @@ interface RegistrationSuccessCardProps {
749
748
  markdown: string;
750
749
  accepted: boolean;
751
750
  } | null;
751
+ /**
752
+ * Layout of the "Terms & Conditions" section.
753
+ * - `"summary"` (default): shows only the accepted/not-accepted indicator.
754
+ * - `"full"`: shows the indicator **and** the full `terms.markdown` content
755
+ * (plain text, preserving line breaks). Used by the PDF export.
756
+ */
757
+ termsLayout?: "summary" | "full";
758
+ /** i18n-friendly labels for the Terms section. Defaults to English. */
759
+ termsLabels?: {
760
+ title?: string;
761
+ accepted?: string;
762
+ notAccepted?: string;
763
+ };
752
764
  adventure?: RegistrationAdventure | null;
753
765
  booking?: RegistrationBooking | null;
754
766
  traveller?: RegistrationTraveller | null;
@@ -760,7 +772,7 @@ interface RegistrationSuccessCardProps {
760
772
  travellerLabel?: string;
761
773
  };
762
774
  }
763
- declare function RegistrationSuccessCard({ variant, title, message, answersTitle, fields, answers, dateFormatter, formatAnswer, className, actions, logo, logoAlt, terms, adventure, booking, traveller, tripInfoLabels, }: RegistrationSuccessCardProps): react_jsx_runtime.JSX.Element;
775
+ 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;
764
776
 
765
777
  interface FloatingInputProps extends React.InputHTMLAttributes<HTMLInputElement> {
766
778
  label: string;
@@ -1610,4 +1622,4 @@ declare function LeadCapturePopup({ config: _config, }: {
1610
1622
  config: LeadCapturePopupConfig;
1611
1623
  }): react_jsx_runtime.JSX.Element | null;
1612
1624
 
1613
- export { ActivityCard, type ActivityCardProps, type ActivityCardSize, 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 BookingOtpEmailLabels, 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 };
1625
+ export { ActivityCard, type ActivityCardProps, type ActivityCardSize, 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 };
package/dist/index.d.ts CHANGED
@@ -515,24 +515,23 @@ interface BookingConfirmationEmailProps {
515
515
  }
516
516
  declare function BookingConfirmationEmail({ recipientName, addTravellersUrl, logoUrl, bookingNumber, activity, adventure, startingDate, numberOfPeople, host, labels, className, }: BookingConfirmationEmailProps): react_jsx_runtime.JSX.Element;
517
517
 
518
- interface BookingOtpEmailLabels {
519
- bodyMessage: string;
520
- expiryMessage: string;
521
- logoAlt?: string;
522
- }
523
518
  interface BookingOtpEmailProps {
524
- /** Mensagem principal com código incluído (ex: "Seu código para reserva #42 é: 123456") */
525
- bodyMessage: string;
526
- /** Mensagem de expiração (ex: "Este código expira em breve.") */
519
+ /** Saudação (ex.: "Hello!" / "Olá!"). */
520
+ greeting: string;
521
+ /** Intro curta com bookingId embutido (ex.: "Here is your verification code for booking #42."). */
522
+ intro: string;
523
+ /** Código OTP renderizado em destaque. Não é sanitizado — passe só dígitos. */
524
+ code: string;
525
+ /** Mensagem de expiração (ex.: "This code expires shortly."). */
527
526
  expiryMessage: string;
528
- /** URL da logo. Default: data URI embutido no pacote. */
527
+ /** Assinatura do time (ex.: "PlanetaEXO Team"). */
528
+ teamSignature: string;
529
+ /** URL da logo. Default: data URI embutido. */
529
530
  logoUrl?: string;
530
- /** Labels opcionais para i18n (não usado diretamente — bodyMessage já é traduzida) */
531
- labels?: Partial<BookingOtpEmailLabels>;
532
- /** className extra no container (para uso no styleguide) */
531
+ /** className extra no container (uso no styleguide). */
533
532
  className?: string;
534
533
  }
535
- declare function BookingOtpEmail({ bodyMessage, expiryMessage, logoUrl, className, }: BookingOtpEmailProps): react_jsx_runtime.JSX.Element;
534
+ declare function BookingOtpEmail({ greeting, intro, code, expiryMessage, teamSignature, logoUrl, className, }: BookingOtpEmailProps): react_jsx_runtime.JSX.Element;
536
535
 
537
536
  interface TravellerFormInviteLink {
538
537
  adventureName?: string;
@@ -749,6 +748,19 @@ interface RegistrationSuccessCardProps {
749
748
  markdown: string;
750
749
  accepted: boolean;
751
750
  } | null;
751
+ /**
752
+ * Layout of the "Terms & Conditions" section.
753
+ * - `"summary"` (default): shows only the accepted/not-accepted indicator.
754
+ * - `"full"`: shows the indicator **and** the full `terms.markdown` content
755
+ * (plain text, preserving line breaks). Used by the PDF export.
756
+ */
757
+ termsLayout?: "summary" | "full";
758
+ /** i18n-friendly labels for the Terms section. Defaults to English. */
759
+ termsLabels?: {
760
+ title?: string;
761
+ accepted?: string;
762
+ notAccepted?: string;
763
+ };
752
764
  adventure?: RegistrationAdventure | null;
753
765
  booking?: RegistrationBooking | null;
754
766
  traveller?: RegistrationTraveller | null;
@@ -760,7 +772,7 @@ interface RegistrationSuccessCardProps {
760
772
  travellerLabel?: string;
761
773
  };
762
774
  }
763
- declare function RegistrationSuccessCard({ variant, title, message, answersTitle, fields, answers, dateFormatter, formatAnswer, className, actions, logo, logoAlt, terms, adventure, booking, traveller, tripInfoLabels, }: RegistrationSuccessCardProps): react_jsx_runtime.JSX.Element;
775
+ 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;
764
776
 
765
777
  interface FloatingInputProps extends React.InputHTMLAttributes<HTMLInputElement> {
766
778
  label: string;
@@ -1610,4 +1622,4 @@ declare function LeadCapturePopup({ config: _config, }: {
1610
1622
  config: LeadCapturePopupConfig;
1611
1623
  }): react_jsx_runtime.JSX.Element | null;
1612
1624
 
1613
- export { ActivityCard, type ActivityCardProps, type ActivityCardSize, 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 BookingOtpEmailLabels, 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 };
1625
+ export { ActivityCard, type ActivityCardProps, type ActivityCardSize, 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 };
package/dist/index.js CHANGED
@@ -3873,8 +3873,11 @@ function BookingConfirmationEmail({
3873
3873
  );
3874
3874
  }
3875
3875
  function BookingOtpEmail({
3876
- bodyMessage,
3876
+ greeting,
3877
+ intro,
3878
+ code,
3877
3879
  expiryMessage,
3880
+ teamSignature,
3878
3881
  logoUrl,
3879
3882
  className
3880
3883
  }) {
@@ -3894,15 +3897,44 @@ function BookingOtpEmail({
3894
3897
  className,
3895
3898
  children: [
3896
3899
  /* @__PURE__ */ jsx(EmailLogo, { src: logoUrl }),
3900
+ /* @__PURE__ */ jsx("p", { style: { fontSize: "16px", lineHeight: "1.5", margin: "0 0 12px" }, children: greeting }),
3901
+ /* @__PURE__ */ jsx("p", { style: { fontSize: "15px", lineHeight: "1.5", margin: "0 0 24px" }, children: intro }),
3897
3902
  /* @__PURE__ */ jsx(
3898
- "p",
3903
+ "table",
3899
3904
  {
3900
- style: {
3901
- fontSize: "16px",
3902
- lineHeight: "1.6",
3903
- margin: "0 0 16px"
3904
- },
3905
- children: bodyMessage
3905
+ role: "presentation",
3906
+ cellPadding: 0,
3907
+ cellSpacing: 0,
3908
+ border: 0,
3909
+ style: { width: "100%", borderCollapse: "collapse", margin: "0 0 24px" },
3910
+ children: /* @__PURE__ */ jsx("tbody", { children: /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx(
3911
+ "td",
3912
+ {
3913
+ align: "center",
3914
+ style: {
3915
+ backgroundColor: emailTokens.primaryLight,
3916
+ border: `1px solid ${emailTokens.border}`,
3917
+ borderRadius: "12px",
3918
+ padding: "24px 16px"
3919
+ },
3920
+ children: /* @__PURE__ */ jsx(
3921
+ "div",
3922
+ {
3923
+ style: {
3924
+ fontFamily: emailTokens.fontFamily,
3925
+ fontSize: "36px",
3926
+ fontWeight: 700,
3927
+ letterSpacing: "0.3em",
3928
+ color: emailTokens.foreground,
3929
+ lineHeight: 1,
3930
+ // Padding esquerdo compensa letter-spacing final, mantendo visualmente centralizado.
3931
+ paddingLeft: "0.3em"
3932
+ },
3933
+ children: code
3934
+ }
3935
+ )
3936
+ }
3937
+ ) }) })
3906
3938
  }
3907
3939
  ),
3908
3940
  /* @__PURE__ */ jsx(
@@ -3912,11 +3944,12 @@ function BookingOtpEmail({
3912
3944
  color: emailTokens.mutedForeground,
3913
3945
  fontSize: "14px",
3914
3946
  lineHeight: "1.5",
3915
- margin: "0"
3947
+ margin: "0 0 24px"
3916
3948
  },
3917
3949
  children: expiryMessage
3918
3950
  }
3919
- )
3951
+ ),
3952
+ /* @__PURE__ */ jsx("p", { style: { fontSize: "14px", lineHeight: "1.5", margin: "0" }, children: teamSignature })
3920
3953
  ]
3921
3954
  }
3922
3955
  );
@@ -5551,12 +5584,14 @@ function RegistrationSuccessCard({
5551
5584
  logo,
5552
5585
  logoAlt = "PlanetaEXO",
5553
5586
  terms,
5587
+ termsLayout = "summary",
5588
+ termsLabels,
5554
5589
  adventure,
5555
5590
  booking,
5556
5591
  traveller,
5557
5592
  tripInfoLabels
5558
5593
  }) {
5559
- var _a, _b, _c, _d, _e;
5594
+ var _a, _b, _c, _d, _e, _f, _g, _h;
5560
5595
  const isMinimal = variant === "minimal";
5561
5596
  const sorted = isMinimal ? [] : [...fields].sort((a, b) => {
5562
5597
  var _a2, _b2;
@@ -5588,40 +5623,43 @@ function RegistrationSuccessCard({
5588
5623
  message && /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground font-ui", children: message })
5589
5624
  ] }),
5590
5625
  hasTripInfo && /* @__PURE__ */ jsx(FormSection2, { title: TL.sectionTitle, children: /* @__PURE__ */ jsxs("dl", { className: "flex flex-col gap-y-3 text-sm font-ui", children: [
5591
- adventure && /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-x-4", children: [
5592
- /* @__PURE__ */ jsx("dt", { className: "text-muted-foreground", children: TL.adventureLabel }),
5593
- /* @__PURE__ */ jsx("dd", { className: "text-foreground font-medium text-right min-w-0 break-words", children: adventure.name })
5626
+ adventure && /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-x-4", children: [
5627
+ /* @__PURE__ */ jsx("dt", { className: "w-1/2 text-muted-foreground break-words", children: TL.adventureLabel }),
5628
+ /* @__PURE__ */ jsx("dd", { className: "w-1/2 text-foreground font-medium text-right min-w-0 break-words", children: adventure.name })
5594
5629
  ] }),
5595
- dateRange && /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-x-4", children: [
5596
- /* @__PURE__ */ jsx("dt", { className: "text-muted-foreground", children: (adventure == null ? void 0 : adventure.startDate) && (adventure == null ? void 0 : adventure.endDate) ? "Dates" : "Date" }),
5597
- /* @__PURE__ */ jsx("dd", { className: "text-foreground text-right min-w-0", children: dateRange })
5630
+ dateRange && /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-x-4", children: [
5631
+ /* @__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" }),
5632
+ /* @__PURE__ */ jsx("dd", { className: "w-1/2 text-foreground text-right min-w-0 break-words", children: dateRange })
5598
5633
  ] }),
5599
- (adventure == null ? void 0 : adventure.partnerName) && /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-x-4", children: [
5600
- /* @__PURE__ */ jsx("dt", { className: "text-muted-foreground", children: TL.partnerLabel }),
5601
- /* @__PURE__ */ jsx("dd", { className: "text-foreground text-right min-w-0", children: adventure.partnerName })
5634
+ (adventure == null ? void 0 : adventure.partnerName) && /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-x-4", children: [
5635
+ /* @__PURE__ */ jsx("dt", { className: "w-1/2 text-muted-foreground break-words", children: TL.partnerLabel }),
5636
+ /* @__PURE__ */ jsx("dd", { className: "w-1/2 text-foreground text-right min-w-0 break-words", children: adventure.partnerName })
5602
5637
  ] }),
5603
- booking && /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-x-4", children: [
5604
- /* @__PURE__ */ jsx("dt", { className: "text-muted-foreground", children: TL.bookingLabel }),
5605
- /* @__PURE__ */ jsx("dd", { className: "text-foreground font-mono tabular-nums text-right min-w-0", children: booking.id })
5638
+ booking && /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-x-4", children: [
5639
+ /* @__PURE__ */ jsx("dt", { className: "w-1/2 text-muted-foreground break-words", children: TL.bookingLabel }),
5640
+ /* @__PURE__ */ jsx("dd", { className: "w-1/2 text-foreground font-mono tabular-nums text-right min-w-0 break-words", children: booking.id })
5606
5641
  ] }),
5607
- traveller && /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-x-4", children: [
5608
- /* @__PURE__ */ jsx("dt", { className: "text-muted-foreground", children: TL.travellerLabel }),
5609
- /* @__PURE__ */ jsx("dd", { className: "text-foreground font-medium text-right min-w-0 break-words", children: traveller.fullName })
5642
+ traveller && /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-x-4", children: [
5643
+ /* @__PURE__ */ jsx("dt", { className: "w-1/2 text-muted-foreground break-words", children: TL.travellerLabel }),
5644
+ /* @__PURE__ */ jsx("dd", { className: "w-1/2 text-foreground font-medium text-right min-w-0 break-words", children: traveller.fullName })
5610
5645
  ] })
5611
5646
  ] }) }),
5612
- 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 justify-between gap-x-4", children: [
5613
- /* @__PURE__ */ jsx("dt", { className: "text-muted-foreground", children: f.label }),
5614
- /* @__PURE__ */ jsx("dd", { className: "text-foreground text-right min-w-0 break-words", children: (formatAnswer != null ? formatAnswer : ((field, v) => defaultFormatAnswer(field, v, dateFormatter)))(
5647
+ 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: [
5648
+ /* @__PURE__ */ jsx("dt", { className: "w-1/2 text-muted-foreground break-words", children: f.label }),
5649
+ /* @__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)))(
5615
5650
  f,
5616
5651
  answers[f.id]
5617
5652
  ) })
5618
5653
  ] }, f.id)) }) }),
5619
- !isMinimal && terms && /* @__PURE__ */ jsx(FormSection2, { title: "Terms & Conditions", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-sm font-ui", children: [
5620
- /* @__PURE__ */ jsx("div", { className: cn(
5621
- "inline-flex h-5 w-5 items-center justify-center rounded-full text-white text-xs font-bold",
5622
- terms.accepted ? "bg-primary" : "bg-destructive"
5623
- ), children: terms.accepted ? "\u2713" : "\u2717" }),
5624
- /* @__PURE__ */ jsx("span", { className: terms.accepted ? "text-primary font-medium" : "text-destructive font-medium", children: terms.accepted ? "Accepted" : "Not accepted" })
5654
+ !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: [
5655
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
5656
+ /* @__PURE__ */ jsx("div", { className: cn(
5657
+ "inline-flex h-5 w-5 items-center justify-center rounded-full text-white text-xs font-bold",
5658
+ terms.accepted ? "bg-primary" : "bg-destructive"
5659
+ ), children: terms.accepted ? "\u2713" : "\u2717" }),
5660
+ /* @__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" })
5661
+ ] }),
5662
+ 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 }) })
5625
5663
  ] }) })
5626
5664
  ] });
5627
5665
  }
@@ -5657,11 +5695,19 @@ var OTPCodeInput = ({
5657
5695
  const numeric = raw.replace(/\D/g, "");
5658
5696
  if (!numeric) return;
5659
5697
  const newDigits = [...digits];
5660
- newDigits[index] = numeric[numeric.length - 1];
5661
- updateValue(newDigits);
5662
- if (index < length - 1) {
5663
- focusSlot(index + 1);
5698
+ if (numeric.length === 1) {
5699
+ newDigits[index] = numeric;
5700
+ updateValue(newDigits);
5701
+ if (index < length - 1) focusSlot(index + 1);
5702
+ return;
5664
5703
  }
5704
+ const toPaste = numeric.slice(0, length - index);
5705
+ for (let i = 0; i < toPaste.length; i++) {
5706
+ newDigits[index + i] = toPaste[i];
5707
+ }
5708
+ updateValue(newDigits);
5709
+ const lastFilled = Math.min(index + toPaste.length, length) - 1;
5710
+ focusSlot(lastFilled < length - 1 ? lastFilled + 1 : lastFilled);
5665
5711
  };
5666
5712
  const handleKeyDown = (index, e) => {
5667
5713
  if (e.key === "Backspace") {