@planetaexo/design-system 0.4.10 → 0.4.12
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 +162 -59
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +162 -60
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -589,6 +589,7 @@ interface RegistrationFormProps {
|
|
|
589
589
|
labels?: RegistrationFormLabels;
|
|
590
590
|
className?: string;
|
|
591
591
|
}
|
|
592
|
+
declare const TERMS_ACCEPT_KEY = "__registrationTermsAccepted";
|
|
592
593
|
declare function RegistrationForm({ logo, logoAlt, heroImage, heroImageAlt, title, subtitle, adventure, booking, traveller, fields, values, defaultValues, onChange, onSubmit, onValidate, externalErrors, terms, includeTerms, loading, error, defaultPhoneCountry, dateFormatter, labels, className, }: RegistrationFormProps): react_jsx_runtime.JSX.Element;
|
|
593
594
|
interface RegistrationSuccessCardProps {
|
|
594
595
|
title?: string;
|
|
@@ -1412,4 +1413,4 @@ declare function LeadCapturePopup({ config: _config, }: {
|
|
|
1412
1413
|
config: LeadCapturePopupConfig;
|
|
1413
1414
|
}): react_jsx_runtime.JSX.Element | null;
|
|
1414
1415
|
|
|
1415
|
-
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, 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, 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, TermsSection, type TermsSectionProps, ThemeToggle, TravellerFormInviteEmail, type TravellerFormInviteEmailLabels, type TravellerFormInviteEmailProps, type TravellerFormInviteLink, 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 };
|
|
1416
|
+
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, 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, 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, TravellerFormInviteEmail, type TravellerFormInviteEmailLabels, type TravellerFormInviteEmailProps, type TravellerFormInviteLink, 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
|
@@ -589,6 +589,7 @@ interface RegistrationFormProps {
|
|
|
589
589
|
labels?: RegistrationFormLabels;
|
|
590
590
|
className?: string;
|
|
591
591
|
}
|
|
592
|
+
declare const TERMS_ACCEPT_KEY = "__registrationTermsAccepted";
|
|
592
593
|
declare function RegistrationForm({ logo, logoAlt, heroImage, heroImageAlt, title, subtitle, adventure, booking, traveller, fields, values, defaultValues, onChange, onSubmit, onValidate, externalErrors, terms, includeTerms, loading, error, defaultPhoneCountry, dateFormatter, labels, className, }: RegistrationFormProps): react_jsx_runtime.JSX.Element;
|
|
593
594
|
interface RegistrationSuccessCardProps {
|
|
594
595
|
title?: string;
|
|
@@ -1412,4 +1413,4 @@ declare function LeadCapturePopup({ config: _config, }: {
|
|
|
1412
1413
|
config: LeadCapturePopupConfig;
|
|
1413
1414
|
}): react_jsx_runtime.JSX.Element | null;
|
|
1414
1415
|
|
|
1415
|
-
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, 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, 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, TermsSection, type TermsSectionProps, ThemeToggle, TravellerFormInviteEmail, type TravellerFormInviteEmailLabels, type TravellerFormInviteEmailProps, type TravellerFormInviteLink, 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 };
|
|
1416
|
+
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, 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, 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, TravellerFormInviteEmail, type TravellerFormInviteEmailLabels, type TravellerFormInviteEmailProps, type TravellerFormInviteLink, 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
|
@@ -1188,7 +1188,7 @@ function CountrySearchField({
|
|
|
1188
1188
|
type: "button",
|
|
1189
1189
|
onClick: () => handleSelect(c.code),
|
|
1190
1190
|
className: cn(
|
|
1191
|
-
"flex w-full items-center px-3 py-2 text-sm font-ui text-left transition-colors hover:bg-muted",
|
|
1191
|
+
"flex w-full items-center px-3 py-2 text-sm font-ui text-left text-foreground transition-colors hover:bg-muted",
|
|
1192
1192
|
c.code === value && "bg-primary/10 text-primary font-semibold"
|
|
1193
1193
|
),
|
|
1194
1194
|
children: c.name
|
|
@@ -4211,6 +4211,83 @@ function FloatingTextarea({
|
|
|
4211
4211
|
)
|
|
4212
4212
|
] });
|
|
4213
4213
|
}
|
|
4214
|
+
function SelectField({ field, value, onChange, error }) {
|
|
4215
|
+
var _a, _b, _c;
|
|
4216
|
+
const [open, setOpen] = React21.useState(false);
|
|
4217
|
+
const containerRef = React21.useRef(null);
|
|
4218
|
+
const options = (_a = field.options) != null ? _a : [];
|
|
4219
|
+
const selectedOpt = (_b = options.find((o) => o.value === value)) != null ? _b : null;
|
|
4220
|
+
React21.useEffect(() => {
|
|
4221
|
+
if (!open) return;
|
|
4222
|
+
const handleOutside = (e) => {
|
|
4223
|
+
if (containerRef.current && !containerRef.current.contains(e.target)) {
|
|
4224
|
+
setOpen(false);
|
|
4225
|
+
}
|
|
4226
|
+
};
|
|
4227
|
+
document.addEventListener("mousedown", handleOutside);
|
|
4228
|
+
return () => document.removeEventListener("mousedown", handleOutside);
|
|
4229
|
+
}, [open]);
|
|
4230
|
+
return /* @__PURE__ */ jsxs("div", { ref: containerRef, className: "relative w-full", children: [
|
|
4231
|
+
/* @__PURE__ */ jsxs(
|
|
4232
|
+
"button",
|
|
4233
|
+
{
|
|
4234
|
+
type: "button",
|
|
4235
|
+
onClick: () => setOpen((o) => !o),
|
|
4236
|
+
className: cn(
|
|
4237
|
+
"relative flex w-full items-center rounded-lg border border-border bg-background h-14 px-3 text-left transition-colors",
|
|
4238
|
+
open && "border-primary ring-1 ring-primary",
|
|
4239
|
+
error && !open && "border-destructive"
|
|
4240
|
+
),
|
|
4241
|
+
children: [
|
|
4242
|
+
/* @__PURE__ */ jsxs(
|
|
4243
|
+
"span",
|
|
4244
|
+
{
|
|
4245
|
+
className: cn(
|
|
4246
|
+
"pointer-events-none absolute left-3 transition-all duration-150 font-ui",
|
|
4247
|
+
selectedOpt || open ? cn("top-2 text-xs", open ? "text-primary" : "text-muted-foreground") : "top-1/2 -translate-y-1/2 text-base text-muted-foreground"
|
|
4248
|
+
),
|
|
4249
|
+
children: [
|
|
4250
|
+
field.label,
|
|
4251
|
+
field.required && /* @__PURE__ */ jsx("span", { className: "text-primary ml-0.5", children: "*" })
|
|
4252
|
+
]
|
|
4253
|
+
}
|
|
4254
|
+
),
|
|
4255
|
+
/* @__PURE__ */ jsx("span", { className: cn("flex-1 pt-3 text-base font-ui truncate", selectedOpt ? "text-foreground" : "invisible"), children: (_c = selectedOpt == null ? void 0 : selectedOpt.label) != null ? _c : "\u2014" }),
|
|
4256
|
+
/* @__PURE__ */ jsx(
|
|
4257
|
+
"svg",
|
|
4258
|
+
{
|
|
4259
|
+
className: cn("h-4 w-4 shrink-0 text-muted-foreground transition-transform", open && "rotate-180"),
|
|
4260
|
+
viewBox: "0 0 24 24",
|
|
4261
|
+
fill: "none",
|
|
4262
|
+
stroke: "currentColor",
|
|
4263
|
+
strokeWidth: "2",
|
|
4264
|
+
strokeLinecap: "round",
|
|
4265
|
+
strokeLinejoin: "round",
|
|
4266
|
+
children: /* @__PURE__ */ jsx("path", { d: "m6 9 6 6 6-6" })
|
|
4267
|
+
}
|
|
4268
|
+
)
|
|
4269
|
+
]
|
|
4270
|
+
}
|
|
4271
|
+
),
|
|
4272
|
+
open && /* @__PURE__ */ jsx("div", { className: "absolute top-[calc(100%+4px)] left-0 right-0 z-50 rounded-xl border border-border bg-background shadow-lg overflow-hidden", children: /* @__PURE__ */ jsx("div", { className: "max-h-52 overflow-y-auto py-1", children: options.map((opt) => /* @__PURE__ */ jsx(
|
|
4273
|
+
"button",
|
|
4274
|
+
{
|
|
4275
|
+
type: "button",
|
|
4276
|
+
onClick: () => {
|
|
4277
|
+
onChange(opt.value);
|
|
4278
|
+
setOpen(false);
|
|
4279
|
+
},
|
|
4280
|
+
className: cn(
|
|
4281
|
+
"flex w-full items-center px-3 py-2 text-sm font-ui text-left text-foreground transition-colors hover:bg-muted",
|
|
4282
|
+
opt.value === value && "bg-primary/10 text-primary font-semibold"
|
|
4283
|
+
),
|
|
4284
|
+
children: opt.label
|
|
4285
|
+
},
|
|
4286
|
+
opt.value
|
|
4287
|
+
)) }) }),
|
|
4288
|
+
error && /* @__PURE__ */ jsx("p", { className: "mt-1 text-xs text-destructive font-ui", children: error })
|
|
4289
|
+
] });
|
|
4290
|
+
}
|
|
4214
4291
|
function FieldRenderer({
|
|
4215
4292
|
field,
|
|
4216
4293
|
value,
|
|
@@ -4219,7 +4296,7 @@ function FieldRenderer({
|
|
|
4219
4296
|
labels,
|
|
4220
4297
|
error
|
|
4221
4298
|
}) {
|
|
4222
|
-
var _a, _b
|
|
4299
|
+
var _a, _b;
|
|
4223
4300
|
const fieldId = `rf-${field.id}`;
|
|
4224
4301
|
if (field.type === "name") {
|
|
4225
4302
|
const v = asName(value);
|
|
@@ -4333,24 +4410,18 @@ function FieldRenderer({
|
|
|
4333
4410
|
);
|
|
4334
4411
|
}
|
|
4335
4412
|
if (field.type === "select") {
|
|
4336
|
-
|
|
4337
|
-
|
|
4338
|
-
FloatingSelect,
|
|
4413
|
+
return /* @__PURE__ */ jsx(
|
|
4414
|
+
SelectField,
|
|
4339
4415
|
{
|
|
4340
|
-
|
|
4341
|
-
required: field.required,
|
|
4416
|
+
field,
|
|
4342
4417
|
value: typeof value === "string" ? value : "",
|
|
4343
|
-
onChange: (
|
|
4344
|
-
error
|
|
4345
|
-
children: [
|
|
4346
|
-
/* @__PURE__ */ jsx("option", { value: "", disabled: true, hidden: true }),
|
|
4347
|
-
options.map((opt) => /* @__PURE__ */ jsx("option", { value: opt.value, children: opt.label }, opt.value))
|
|
4348
|
-
]
|
|
4418
|
+
onChange: (v) => onChange(v),
|
|
4419
|
+
error
|
|
4349
4420
|
}
|
|
4350
4421
|
);
|
|
4351
4422
|
}
|
|
4352
4423
|
if (field.type === "radio") {
|
|
4353
|
-
const options = (
|
|
4424
|
+
const options = (_a = field.options) != null ? _a : [];
|
|
4354
4425
|
return /* @__PURE__ */ jsxs("div", { children: [
|
|
4355
4426
|
/* @__PURE__ */ jsxs("p", { className: "mb-3 text-sm font-ui font-medium text-foreground", children: [
|
|
4356
4427
|
field.label,
|
|
@@ -4385,11 +4456,12 @@ function FieldRenderer({
|
|
|
4385
4456
|
opt.value
|
|
4386
4457
|
))
|
|
4387
4458
|
}
|
|
4388
|
-
)
|
|
4459
|
+
),
|
|
4460
|
+
error && /* @__PURE__ */ jsx("p", { className: "mt-2 text-xs text-destructive font-ui", children: error })
|
|
4389
4461
|
] });
|
|
4390
4462
|
}
|
|
4391
4463
|
if (field.type === "checkbox") {
|
|
4392
|
-
const options = (
|
|
4464
|
+
const options = (_b = field.options) != null ? _b : [];
|
|
4393
4465
|
if (options.length === 0) {
|
|
4394
4466
|
return /* @__PURE__ */ jsxs("label", { className: "flex min-h-9 cursor-pointer items-center gap-2.5 font-ui text-sm text-foreground", children: [
|
|
4395
4467
|
/* @__PURE__ */ jsx(
|
|
@@ -4588,15 +4660,17 @@ function RegistrationForm({
|
|
|
4588
4660
|
}
|
|
4589
4661
|
}
|
|
4590
4662
|
}
|
|
4663
|
+
const termsError = submitAttempted && termsEnabled && !termsAccepted;
|
|
4591
4664
|
const firstErrorFieldId = Object.keys(fieldErrors)[0];
|
|
4665
|
+
const scrollTargetId = firstErrorFieldId ? `rf-${firstErrorFieldId}` : termsError ? "rf-terms" : null;
|
|
4592
4666
|
React21.useEffect(() => {
|
|
4593
|
-
if (!submitAttempted || !
|
|
4667
|
+
if (!submitAttempted || !scrollTargetId) return;
|
|
4594
4668
|
const timer = setTimeout(() => {
|
|
4595
|
-
const elem = document.getElementById(
|
|
4669
|
+
const elem = document.getElementById(scrollTargetId);
|
|
4596
4670
|
if (elem) elem.scrollIntoView({ behavior: "smooth", block: "center" });
|
|
4597
4671
|
}, 50);
|
|
4598
4672
|
return () => clearTimeout(timer);
|
|
4599
|
-
}, [submitAttempted,
|
|
4673
|
+
}, [submitAttempted, scrollTargetId]);
|
|
4600
4674
|
return /* @__PURE__ */ jsxs(
|
|
4601
4675
|
"form",
|
|
4602
4676
|
{
|
|
@@ -4687,58 +4761,86 @@ function RegistrationForm({
|
|
|
4687
4761
|
((_a2 = field.helpText) == null ? void 0 : _a2.trim()) && /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground font-ui leading-relaxed", children: field.helpText.trim() })
|
|
4688
4762
|
] }, field.id);
|
|
4689
4763
|
}) }),
|
|
4690
|
-
termsEnabled && terms && /* @__PURE__ */ jsxs(FormSection2, { title: L.termsSectionTitle, children: [
|
|
4764
|
+
termsEnabled && terms && /* @__PURE__ */ jsx("div", { id: "rf-terms", children: /* @__PURE__ */ jsxs(FormSection2, { title: L.termsSectionTitle, children: [
|
|
4691
4765
|
/* @__PURE__ */ jsx("div", { className: "max-h-72 overflow-y-auto rounded-lg border border-border bg-muted/30 p-4", children: /* @__PURE__ */ jsx("div", { className: "whitespace-pre-wrap text-sm leading-relaxed text-foreground font-ui", children: terms.markdown }) }),
|
|
4692
|
-
acceptControl === "checkbox" ? /* @__PURE__ */ jsxs("
|
|
4693
|
-
/* @__PURE__ */
|
|
4694
|
-
"
|
|
4766
|
+
acceptControl === "checkbox" ? /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1.5", children: [
|
|
4767
|
+
/* @__PURE__ */ jsxs(
|
|
4768
|
+
"label",
|
|
4695
4769
|
{
|
|
4696
|
-
|
|
4697
|
-
|
|
4698
|
-
|
|
4699
|
-
|
|
4700
|
-
|
|
4701
|
-
}
|
|
4702
|
-
),
|
|
4703
|
-
/* @__PURE__ */ jsx("span", { children: L.termsAccept })
|
|
4704
|
-
] }) : /* @__PURE__ */ jsxs(
|
|
4705
|
-
"div",
|
|
4706
|
-
{
|
|
4707
|
-
role: "radiogroup",
|
|
4708
|
-
"aria-label": L.termsSectionTitle,
|
|
4709
|
-
className: "flex flex-wrap items-center gap-x-6 gap-y-3",
|
|
4710
|
-
children: [
|
|
4711
|
-
/* @__PURE__ */ jsxs("label", { className: "flex min-h-9 cursor-pointer items-center gap-2.5 font-ui text-sm text-foreground", children: [
|
|
4770
|
+
className: cn(
|
|
4771
|
+
"flex cursor-pointer items-start gap-2.5 font-ui text-sm",
|
|
4772
|
+
termsError ? "text-destructive" : "text-foreground"
|
|
4773
|
+
),
|
|
4774
|
+
children: [
|
|
4712
4775
|
/* @__PURE__ */ jsx(
|
|
4713
4776
|
"input",
|
|
4714
4777
|
{
|
|
4715
|
-
type: "
|
|
4716
|
-
name: "registration-terms-accept",
|
|
4778
|
+
type: "checkbox",
|
|
4717
4779
|
checked: termsAccepted,
|
|
4718
4780
|
required: true,
|
|
4719
|
-
onChange: () => setField(TERMS_ACCEPT_KEY,
|
|
4720
|
-
className: "h-4 w-4 shrink-0 accent-primary cursor-pointer"
|
|
4781
|
+
onChange: (e) => setField(TERMS_ACCEPT_KEY, e.target.checked),
|
|
4782
|
+
className: "mt-0.5 h-4 w-4 shrink-0 accent-primary cursor-pointer"
|
|
4721
4783
|
}
|
|
4722
4784
|
),
|
|
4723
|
-
|
|
4724
|
-
|
|
4725
|
-
|
|
4726
|
-
|
|
4727
|
-
|
|
4785
|
+
/* @__PURE__ */ jsxs("span", { children: [
|
|
4786
|
+
L.termsAccept,
|
|
4787
|
+
/* @__PURE__ */ jsx("span", { className: "text-primary ml-0.5", children: "*" })
|
|
4788
|
+
] })
|
|
4789
|
+
]
|
|
4790
|
+
}
|
|
4791
|
+
),
|
|
4792
|
+
termsError && /* @__PURE__ */ jsx("p", { className: "text-xs text-destructive font-ui", children: L.requiredFieldError })
|
|
4793
|
+
] }) : /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1.5", children: [
|
|
4794
|
+
/* @__PURE__ */ jsxs(
|
|
4795
|
+
"div",
|
|
4796
|
+
{
|
|
4797
|
+
role: "radiogroup",
|
|
4798
|
+
"aria-label": L.termsSectionTitle,
|
|
4799
|
+
className: "flex flex-wrap items-center gap-x-6 gap-y-3",
|
|
4800
|
+
children: [
|
|
4801
|
+
/* @__PURE__ */ jsxs(
|
|
4802
|
+
"label",
|
|
4728
4803
|
{
|
|
4729
|
-
|
|
4730
|
-
|
|
4731
|
-
|
|
4732
|
-
|
|
4733
|
-
|
|
4804
|
+
className: cn(
|
|
4805
|
+
"flex min-h-9 cursor-pointer items-center gap-2.5 font-ui text-sm",
|
|
4806
|
+
termsError ? "text-destructive" : "text-foreground"
|
|
4807
|
+
),
|
|
4808
|
+
children: [
|
|
4809
|
+
/* @__PURE__ */ jsx(
|
|
4810
|
+
"input",
|
|
4811
|
+
{
|
|
4812
|
+
type: "radio",
|
|
4813
|
+
name: "registration-terms-accept",
|
|
4814
|
+
checked: termsAccepted,
|
|
4815
|
+
required: true,
|
|
4816
|
+
onChange: () => setField(TERMS_ACCEPT_KEY, true),
|
|
4817
|
+
className: "h-4 w-4 shrink-0 accent-primary cursor-pointer"
|
|
4818
|
+
}
|
|
4819
|
+
),
|
|
4820
|
+
L.termsAccept,
|
|
4821
|
+
/* @__PURE__ */ jsx("span", { className: "text-primary ml-0.5", children: "*" })
|
|
4822
|
+
]
|
|
4734
4823
|
}
|
|
4735
4824
|
),
|
|
4736
|
-
|
|
4737
|
-
|
|
4738
|
-
|
|
4739
|
-
|
|
4740
|
-
|
|
4741
|
-
|
|
4825
|
+
/* @__PURE__ */ jsxs("label", { className: "flex min-h-9 cursor-pointer items-center gap-2.5 font-ui text-sm text-muted-foreground", children: [
|
|
4826
|
+
/* @__PURE__ */ jsx(
|
|
4827
|
+
"input",
|
|
4828
|
+
{
|
|
4829
|
+
type: "radio",
|
|
4830
|
+
name: "registration-terms-accept",
|
|
4831
|
+
checked: current[TERMS_ACCEPT_KEY] === false,
|
|
4832
|
+
onChange: () => setField(TERMS_ACCEPT_KEY, false),
|
|
4833
|
+
className: "h-4 w-4 shrink-0 accent-primary cursor-pointer"
|
|
4834
|
+
}
|
|
4835
|
+
),
|
|
4836
|
+
L.termsDecline
|
|
4837
|
+
] })
|
|
4838
|
+
]
|
|
4839
|
+
}
|
|
4840
|
+
),
|
|
4841
|
+
termsError && /* @__PURE__ */ jsx("p", { className: "text-xs text-destructive font-ui", children: L.requiredFieldError })
|
|
4842
|
+
] })
|
|
4843
|
+
] }) }),
|
|
4742
4844
|
error && /* @__PURE__ */ jsx("p", { role: "alert", className: "text-sm text-destructive font-ui", children: error }),
|
|
4743
4845
|
/* @__PURE__ */ jsx("div", { className: "flex justify-center pt-2", children: /* @__PURE__ */ jsx(
|
|
4744
4846
|
"button",
|
|
@@ -8241,6 +8343,6 @@ function LeadCapturePopup({
|
|
|
8241
8343
|
);
|
|
8242
8344
|
}
|
|
8243
8345
|
|
|
8244
|
-
export { ActivityCard, Alert, BirthDateField, BookingConfirmation, BookingConfirmationEmail, BookingConfirmedCard, BookingDetails, BookingForm, BookingOtpEmail, BookingShell, Button, COUNTRIES, CounterField, CountrySearchField, DEFAULT_HEADER_LINKS, DEFAULT_LANGUAGES, DatePickerField, FilterPanel, FloatingInput, FloatingSelect, Itinerary, LOGO_PLANETAEXO_DATA_URI, LeadCapturePopup, MenuTrip, Offer, OfferAdventureCard, PaymentAmountSelector, PaymentMethodSelector, PaymentModalShell, PhoneCountrySelect, PhotoGallery, PricingTrip, RegistrationForm, RegistrationSuccessCard, SiteHeader, TermsSection, ThemeToggle, TravellerFormInviteEmail, TripCard, TripHeader, TripPage, buttonVariants, cn, emailTokens, getStripeAppearance, stripeAppearance, wrapEmailHtml };
|
|
8346
|
+
export { ActivityCard, Alert, BirthDateField, BookingConfirmation, BookingConfirmationEmail, BookingConfirmedCard, BookingDetails, BookingForm, BookingOtpEmail, BookingShell, Button, COUNTRIES, CounterField, CountrySearchField, DEFAULT_HEADER_LINKS, DEFAULT_LANGUAGES, DatePickerField, FilterPanel, FloatingInput, FloatingSelect, Itinerary, LOGO_PLANETAEXO_DATA_URI, LeadCapturePopup, MenuTrip, Offer, OfferAdventureCard, PaymentAmountSelector, PaymentMethodSelector, PaymentModalShell, PhoneCountrySelect, PhotoGallery, PricingTrip, RegistrationForm, RegistrationSuccessCard, SiteHeader, TERMS_ACCEPT_KEY, TermsSection, ThemeToggle, TravellerFormInviteEmail, TripCard, TripHeader, TripPage, buttonVariants, cn, emailTokens, getStripeAppearance, stripeAppearance, wrapEmailHtml };
|
|
8245
8347
|
//# sourceMappingURL=index.js.map
|
|
8246
8348
|
//# sourceMappingURL=index.js.map
|