@planetaexo/design-system 0.2.13 → 0.2.15
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 +3934 -321
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +470 -25
- package/dist/index.d.ts +470 -25
- package/dist/index.js +3916 -322
- package/dist/index.js.map +1 -1
- package/package.json +3 -1
package/dist/index.d.ts
CHANGED
|
@@ -174,30 +174,6 @@ interface BookingDetailsProps {
|
|
|
174
174
|
}
|
|
175
175
|
declare function BookingDetails({ bookingId, status, createdAt, contact, agentName, agentContactUrl, adventures, summaryLineItems, subtotal, total, depositInfo, onAddContactAsTraveller, onEditTraveller, onRemoveTraveller, onAddSuggestedTraveller, onPayBalance, onCancelRequest, className, }: BookingDetailsProps): react_jsx_runtime.JSX.Element;
|
|
176
176
|
|
|
177
|
-
interface BookingConfirmationEmailProps {
|
|
178
|
-
/** Nome do destinatário (ex: "Maria") */
|
|
179
|
-
recipientName: string;
|
|
180
|
-
/** URL do link para adicionar viajantes. Se omitido, o botão é renderizado sem link. */
|
|
181
|
-
addTravellersUrl?: string;
|
|
182
|
-
/** URL da logo PlanetaEXO. Para e-mails reais, use URL absoluta. Default: /logo-planetaexo.png */
|
|
183
|
-
logoUrl?: string;
|
|
184
|
-
/** Número da reserva */
|
|
185
|
-
bookingNumber: string;
|
|
186
|
-
/** Nome da atividade */
|
|
187
|
-
activity: string;
|
|
188
|
-
/** Nome da aventura */
|
|
189
|
-
adventure: string;
|
|
190
|
-
/** Data de início (formatada) */
|
|
191
|
-
startingDate: string;
|
|
192
|
-
/** Número de pessoas */
|
|
193
|
-
numberOfPeople: number;
|
|
194
|
-
/** Nome do host/anfitrião */
|
|
195
|
-
host: string;
|
|
196
|
-
/** className adicional no container */
|
|
197
|
-
className?: string;
|
|
198
|
-
}
|
|
199
|
-
declare function BookingConfirmationEmail({ recipientName, addTravellersUrl, logoUrl, bookingNumber, activity, adventure, startingDate, numberOfPeople, host, className, }: BookingConfirmationEmailProps): react_jsx_runtime.JSX.Element;
|
|
200
|
-
|
|
201
177
|
interface ConfirmationLineItem {
|
|
202
178
|
label: string;
|
|
203
179
|
price: string;
|
|
@@ -260,6 +236,63 @@ interface BookingConfirmationProps {
|
|
|
260
236
|
}
|
|
261
237
|
declare function BookingConfirmation({ recipientName, logoUrl, bookingReference, adventures, summaryLineItems, subtotal, total, depositInfo, agent, viewBookingUrl, className, }: BookingConfirmationProps): react_jsx_runtime.JSX.Element;
|
|
262
238
|
|
|
239
|
+
interface BookingConfirmationEmailProps {
|
|
240
|
+
/** Nome do destinatário (ex: "Maria") */
|
|
241
|
+
recipientName: string;
|
|
242
|
+
/** URL do link para adicionar viajantes. Se omitido, o botão é renderizado sem link. */
|
|
243
|
+
addTravellersUrl?: string;
|
|
244
|
+
/** URL da logo PlanetaEXO. Para e-mails reais, use URL absoluta. Default: /logo-planetaexo.png */
|
|
245
|
+
logoUrl?: string;
|
|
246
|
+
/** Número da reserva */
|
|
247
|
+
bookingNumber: string;
|
|
248
|
+
/** Nome da atividade */
|
|
249
|
+
activity: string;
|
|
250
|
+
/** Nome da aventura */
|
|
251
|
+
adventure: string;
|
|
252
|
+
/** Data de início (formatada) */
|
|
253
|
+
startingDate: string;
|
|
254
|
+
/** Número de pessoas */
|
|
255
|
+
numberOfPeople: number;
|
|
256
|
+
/** Nome do host/anfitrião */
|
|
257
|
+
host: string;
|
|
258
|
+
/** className adicional no container */
|
|
259
|
+
className?: string;
|
|
260
|
+
}
|
|
261
|
+
declare function BookingConfirmationEmail({ recipientName, addTravellersUrl, logoUrl, bookingNumber, activity, adventure, startingDate, numberOfPeople, host, className, }: BookingConfirmationEmailProps): react_jsx_runtime.JSX.Element;
|
|
262
|
+
|
|
263
|
+
interface BookingFormValues {
|
|
264
|
+
adults: number;
|
|
265
|
+
children: number;
|
|
266
|
+
travelDate: Date | undefined;
|
|
267
|
+
budget: string;
|
|
268
|
+
project: string;
|
|
269
|
+
civility: "ms" | "mr" | "";
|
|
270
|
+
lastName: string;
|
|
271
|
+
firstName: string;
|
|
272
|
+
country: string;
|
|
273
|
+
phoneCountry: string;
|
|
274
|
+
phone: string;
|
|
275
|
+
email: string;
|
|
276
|
+
}
|
|
277
|
+
interface BookingFormProps {
|
|
278
|
+
/** Initial values */
|
|
279
|
+
defaultValues?: Partial<BookingFormValues>;
|
|
280
|
+
/** Called with form values on submit */
|
|
281
|
+
onSubmit?: (values: BookingFormValues) => void;
|
|
282
|
+
/** Submit button label */
|
|
283
|
+
submitLabel?: string;
|
|
284
|
+
/** Loading state */
|
|
285
|
+
loading?: boolean;
|
|
286
|
+
/** Show the header with title and subtitle. @default true */
|
|
287
|
+
showHeader?: boolean;
|
|
288
|
+
/** Override the header title */
|
|
289
|
+
title?: string;
|
|
290
|
+
/** Override the header subtitle */
|
|
291
|
+
subtitle?: string;
|
|
292
|
+
className?: string;
|
|
293
|
+
}
|
|
294
|
+
declare function BookingForm({ defaultValues, onSubmit, submitLabel, loading, showHeader, title, subtitle, className, }: BookingFormProps): react_jsx_runtime.JSX.Element;
|
|
295
|
+
|
|
263
296
|
interface FloatingInputProps extends React.InputHTMLAttributes<HTMLInputElement> {
|
|
264
297
|
label: string;
|
|
265
298
|
error?: string;
|
|
@@ -272,6 +305,418 @@ interface FloatingSelectProps extends React.SelectHTMLAttributes<HTMLSelectEleme
|
|
|
272
305
|
}
|
|
273
306
|
declare const FloatingSelect: React.ForwardRefExoticComponent<FloatingSelectProps & React.RefAttributes<HTMLSelectElement>>;
|
|
274
307
|
|
|
308
|
+
interface CountryOption {
|
|
309
|
+
code: string;
|
|
310
|
+
name: string;
|
|
311
|
+
}
|
|
312
|
+
interface CountrySearchFieldProps {
|
|
313
|
+
value: string;
|
|
314
|
+
onChange: (code: string) => void;
|
|
315
|
+
required?: boolean;
|
|
316
|
+
label?: string;
|
|
317
|
+
countries?: CountryOption[];
|
|
318
|
+
placeholder?: string;
|
|
319
|
+
className?: string;
|
|
320
|
+
}
|
|
321
|
+
declare const COUNTRIES: CountryOption[];
|
|
322
|
+
declare function CountrySearchField({ value, onChange, required, label, countries, placeholder, className, }: CountrySearchFieldProps): react_jsx_runtime.JSX.Element;
|
|
323
|
+
|
|
324
|
+
interface PhoneCountrySelectProps {
|
|
325
|
+
value: string;
|
|
326
|
+
onChange: (code: string) => void;
|
|
327
|
+
className?: string;
|
|
328
|
+
}
|
|
329
|
+
declare function PhoneCountrySelect({ value, onChange, className, }: PhoneCountrySelectProps): react_jsx_runtime.JSX.Element;
|
|
330
|
+
|
|
331
|
+
interface CounterFieldProps {
|
|
332
|
+
label: string;
|
|
333
|
+
sublabel?: string;
|
|
334
|
+
required?: boolean;
|
|
335
|
+
value: number;
|
|
336
|
+
min?: number;
|
|
337
|
+
max?: number;
|
|
338
|
+
onChange: (value: number) => void;
|
|
339
|
+
className?: string;
|
|
340
|
+
}
|
|
341
|
+
declare function CounterField({ label, sublabel, required, value, min, max, onChange, className, }: CounterFieldProps): react_jsx_runtime.JSX.Element;
|
|
342
|
+
|
|
343
|
+
interface DatePickerFieldProps {
|
|
344
|
+
label: string;
|
|
345
|
+
required?: boolean;
|
|
346
|
+
value?: Date;
|
|
347
|
+
onChange?: (date: Date | undefined) => void;
|
|
348
|
+
placeholder?: string;
|
|
349
|
+
disabled?: boolean;
|
|
350
|
+
fromDate?: Date;
|
|
351
|
+
className?: string;
|
|
352
|
+
}
|
|
353
|
+
declare function DatePickerField({ label, required, value, onChange, placeholder, disabled, fromDate, className, }: DatePickerFieldProps): react_jsx_runtime.JSX.Element;
|
|
354
|
+
|
|
355
|
+
interface FilterItem {
|
|
356
|
+
id: string;
|
|
357
|
+
label: string;
|
|
358
|
+
/** Contagem de resultados disponíveis */
|
|
359
|
+
count?: number;
|
|
360
|
+
}
|
|
361
|
+
interface FilterGroup {
|
|
362
|
+
id: string;
|
|
363
|
+
label: string;
|
|
364
|
+
/** Ícone SVG exibido ao lado do título */
|
|
365
|
+
icon?: React.ReactNode;
|
|
366
|
+
items: FilterItem[];
|
|
367
|
+
/** Abre este grupo por padrão */
|
|
368
|
+
defaultOpen?: boolean;
|
|
369
|
+
}
|
|
370
|
+
interface FilterPanelProps {
|
|
371
|
+
groups: FilterGroup[];
|
|
372
|
+
/** Estado controlado: { groupId: string[] } */
|
|
373
|
+
value?: Record<string, string[]>;
|
|
374
|
+
onChange?: (value: Record<string, string[]>) => void;
|
|
375
|
+
onClearAll?: () => void;
|
|
376
|
+
/** Exibe o link "Remove all filters" mesmo sem seleção */
|
|
377
|
+
alwaysShowClear?: boolean;
|
|
378
|
+
title?: string;
|
|
379
|
+
className?: string;
|
|
380
|
+
}
|
|
381
|
+
declare function FilterPanel({ groups, value, onChange, onClearAll, alwaysShowClear, title, className, }: FilterPanelProps): react_jsx_runtime.JSX.Element;
|
|
382
|
+
|
|
383
|
+
interface ItineraryRoute {
|
|
384
|
+
distance: string;
|
|
385
|
+
duration: string;
|
|
386
|
+
}
|
|
387
|
+
interface ItineraryStop {
|
|
388
|
+
dayNumber: number;
|
|
389
|
+
title: string;
|
|
390
|
+
location?: string;
|
|
391
|
+
coverImage: string;
|
|
392
|
+
images?: string[];
|
|
393
|
+
description?: React.ReactNode;
|
|
394
|
+
route?: ItineraryRoute;
|
|
395
|
+
}
|
|
396
|
+
interface ItineraryProps {
|
|
397
|
+
title?: string;
|
|
398
|
+
subtitle?: string;
|
|
399
|
+
stops: ItineraryStop[];
|
|
400
|
+
className?: string;
|
|
401
|
+
}
|
|
402
|
+
declare function Itinerary({ title, subtitle, stops, className }: ItineraryProps): react_jsx_runtime.JSX.Element;
|
|
403
|
+
|
|
404
|
+
interface MenuTripSection {
|
|
405
|
+
id: string;
|
|
406
|
+
label: string;
|
|
407
|
+
}
|
|
408
|
+
type MenuTripVariant = "pill" | "underline" | "outlined" | "floating";
|
|
409
|
+
interface MenuTripProps {
|
|
410
|
+
sections: MenuTripSection[];
|
|
411
|
+
activeSection?: string;
|
|
412
|
+
onSelect?: (id: string) => void;
|
|
413
|
+
variant?: MenuTripVariant;
|
|
414
|
+
/** Whether labels use bold font weight. @default true */
|
|
415
|
+
bold?: boolean;
|
|
416
|
+
className?: string;
|
|
417
|
+
}
|
|
418
|
+
declare function MenuTrip({ sections, activeSection, onSelect, variant, bold, className, }: MenuTripProps): react_jsx_runtime.JSX.Element;
|
|
419
|
+
|
|
420
|
+
type PhotoGalleryVariant = "grid" | "masonry" | "filmstrip" | "featured";
|
|
421
|
+
interface PhotoGalleryPhoto {
|
|
422
|
+
src: string;
|
|
423
|
+
alt?: string;
|
|
424
|
+
/** Caption displayed in the lightbox bottom-left */
|
|
425
|
+
caption?: string;
|
|
426
|
+
/** Photo credit / author displayed in the lightbox bottom-right */
|
|
427
|
+
credit?: string;
|
|
428
|
+
}
|
|
429
|
+
interface PhotoGalleryProps {
|
|
430
|
+
/** Array of photo URLs or photo objects */
|
|
431
|
+
photos: (string | PhotoGalleryPhoto)[];
|
|
432
|
+
/** Visual layout variant */
|
|
433
|
+
variant?: PhotoGalleryVariant;
|
|
434
|
+
/**
|
|
435
|
+
* How many photos to show before the "See more" button.
|
|
436
|
+
* Pass `Infinity` to always show all (no toggle).
|
|
437
|
+
* @default 6
|
|
438
|
+
*/
|
|
439
|
+
initialVisible?: number;
|
|
440
|
+
/** Called when a photo is clicked (in addition to opening the lightbox) */
|
|
441
|
+
onPhotoClick?: (src: string, index: number) => void;
|
|
442
|
+
className?: string;
|
|
443
|
+
}
|
|
444
|
+
declare function PhotoGallery({ photos, variant, initialVisible, onPhotoClick, className, }: PhotoGalleryProps): react_jsx_runtime.JSX.Element | null;
|
|
445
|
+
|
|
446
|
+
interface PricingOption {
|
|
447
|
+
label: string;
|
|
448
|
+
price: string;
|
|
449
|
+
originalPrice?: string;
|
|
450
|
+
unit?: string;
|
|
451
|
+
}
|
|
452
|
+
type PricingTripVariant = "card" | "bar" | "compact";
|
|
453
|
+
interface PricingTripProps {
|
|
454
|
+
priceFrom: string;
|
|
455
|
+
currency?: string;
|
|
456
|
+
/** e.g. "May – August · until mid-August with sufficient water levels" */
|
|
457
|
+
season?: string;
|
|
458
|
+
departureTimes?: string[];
|
|
459
|
+
pricingOptions?: PricingOption[];
|
|
460
|
+
onBook?: () => void;
|
|
461
|
+
bookLabel?: string;
|
|
462
|
+
variant?: PricingTripVariant;
|
|
463
|
+
className?: string;
|
|
464
|
+
}
|
|
465
|
+
declare function PricingTrip({ priceFrom, currency, season, departureTimes, pricingOptions, onBook, bookLabel, variant, className, }: PricingTripProps): react_jsx_runtime.JSX.Element;
|
|
466
|
+
|
|
467
|
+
interface SiteHeaderSubItem {
|
|
468
|
+
label: string;
|
|
469
|
+
href?: string;
|
|
470
|
+
}
|
|
471
|
+
interface SiteHeaderLink {
|
|
472
|
+
label: string;
|
|
473
|
+
href?: string;
|
|
474
|
+
items?: SiteHeaderSubItem[];
|
|
475
|
+
}
|
|
476
|
+
interface SiteHeaderLanguage {
|
|
477
|
+
code: string;
|
|
478
|
+
label: string;
|
|
479
|
+
}
|
|
480
|
+
type SiteHeaderVariant = "transparent" | "white" | "dark";
|
|
481
|
+
interface SiteHeaderProps {
|
|
482
|
+
variant?: SiteHeaderVariant;
|
|
483
|
+
links?: SiteHeaderLink[];
|
|
484
|
+
logoSrc?: string;
|
|
485
|
+
logoAlt?: string;
|
|
486
|
+
languages?: SiteHeaderLanguage[];
|
|
487
|
+
currentLanguage?: string;
|
|
488
|
+
onLanguageChange?: (code: string) => void;
|
|
489
|
+
onSearch?: () => void;
|
|
490
|
+
onAccount?: () => void;
|
|
491
|
+
/** "overlay" = absolute (inside a relative parent); "fixed" = fixed to viewport */
|
|
492
|
+
position?: "overlay" | "fixed" | "static";
|
|
493
|
+
className?: string;
|
|
494
|
+
}
|
|
495
|
+
declare const DEFAULT_HEADER_LINKS: SiteHeaderLink[];
|
|
496
|
+
declare const DEFAULT_LANGUAGES: SiteHeaderLanguage[];
|
|
497
|
+
declare function SiteHeader({ variant, links, logoSrc, logoAlt, languages, currentLanguage, onLanguageChange, onSearch, onAccount, position, className, }: SiteHeaderProps): react_jsx_runtime.JSX.Element;
|
|
498
|
+
|
|
499
|
+
declare function ThemeToggle({ className }: {
|
|
500
|
+
className?: string;
|
|
501
|
+
}): react_jsx_runtime.JSX.Element;
|
|
502
|
+
|
|
503
|
+
type TripCardStatus = "sold-out" | "trending";
|
|
504
|
+
type TripCardSize = "sm" | "md" | "lg";
|
|
505
|
+
interface TripCardCta {
|
|
506
|
+
/** Texto do link (ex: "Discover this trip" ou "5 dates available") */
|
|
507
|
+
label: string;
|
|
508
|
+
onClick?: () => void;
|
|
509
|
+
href?: string;
|
|
510
|
+
}
|
|
511
|
+
interface TripCardProps {
|
|
512
|
+
/** URL da imagem de capa */
|
|
513
|
+
image: string;
|
|
514
|
+
imageAlt?: string;
|
|
515
|
+
/** Badge de status exibido no topo esquerdo */
|
|
516
|
+
status?: TripCardStatus;
|
|
517
|
+
/** Número de noites */
|
|
518
|
+
nights?: number;
|
|
519
|
+
/** Período (ex: "Feb - Mar") */
|
|
520
|
+
period?: string;
|
|
521
|
+
/** Título da viagem */
|
|
522
|
+
title: string;
|
|
523
|
+
/** Descrição curta */
|
|
524
|
+
description?: string;
|
|
525
|
+
/** Link/CTA de ação */
|
|
526
|
+
cta?: TripCardCta;
|
|
527
|
+
/** Preço exibido ao lado do CTA (ex: "from € 769") */
|
|
528
|
+
price?: string;
|
|
529
|
+
size?: TripCardSize;
|
|
530
|
+
className?: string;
|
|
531
|
+
}
|
|
532
|
+
declare function TripCard({ image, imageAlt, status, nights, period, title, description, cta, price, size, className, }: TripCardProps): react_jsx_runtime.JSX.Element;
|
|
533
|
+
|
|
534
|
+
interface TripDuration {
|
|
535
|
+
/** Total number of days */
|
|
536
|
+
days: number;
|
|
537
|
+
/** Number of nights — defaults to days - 1 */
|
|
538
|
+
nights?: number;
|
|
539
|
+
}
|
|
540
|
+
interface TripHeaderProps {
|
|
541
|
+
/** Hero image array — shows a carousel when more than one image */
|
|
542
|
+
images: string[];
|
|
543
|
+
/** Optional video URL — plays as background instead of the image carousel */
|
|
544
|
+
videoUrl?: string;
|
|
545
|
+
/** Main trip title */
|
|
546
|
+
title: string;
|
|
547
|
+
/** Breadcrumb trail displayed above the title */
|
|
548
|
+
breadcrumb?: Array<{
|
|
549
|
+
label: string;
|
|
550
|
+
href?: string;
|
|
551
|
+
}>;
|
|
552
|
+
/** Destination name shown with a map pin icon */
|
|
553
|
+
destination?: string;
|
|
554
|
+
/** Duration shown with a moon/sun icon */
|
|
555
|
+
duration?: TripDuration;
|
|
556
|
+
/** Legacy tagline — shown only when destination/duration are not provided */
|
|
557
|
+
tagline?: string;
|
|
558
|
+
/** Pass true (or a links array) to render the transparent SiteHeader over the hero */
|
|
559
|
+
siteHeader?: boolean | SiteHeaderLink[];
|
|
560
|
+
/** Alinhado ao TripPage — reservado para densidade / hero v2 */
|
|
561
|
+
uiVariant?: "v1" | "v2";
|
|
562
|
+
className?: string;
|
|
563
|
+
}
|
|
564
|
+
declare function TripHeader({ images, videoUrl, title, breadcrumb, destination, duration, tagline, siteHeader, uiVariant, className, }: TripHeaderProps): react_jsx_runtime.JSX.Element;
|
|
565
|
+
|
|
566
|
+
interface TripHighlight {
|
|
567
|
+
label: string;
|
|
568
|
+
icon?: React.ReactNode;
|
|
569
|
+
}
|
|
570
|
+
interface TripInfoGroup {
|
|
571
|
+
title: string;
|
|
572
|
+
icon?: React.ReactNode;
|
|
573
|
+
items: string[];
|
|
574
|
+
}
|
|
575
|
+
interface TripItineraryStep {
|
|
576
|
+
label: string;
|
|
577
|
+
duration?: string;
|
|
578
|
+
description: React.ReactNode;
|
|
579
|
+
isTransfer?: boolean;
|
|
580
|
+
}
|
|
581
|
+
interface TripReview {
|
|
582
|
+
author: string;
|
|
583
|
+
text: string;
|
|
584
|
+
rating?: number;
|
|
585
|
+
}
|
|
586
|
+
interface TripPricingOption {
|
|
587
|
+
label: string;
|
|
588
|
+
originalPrice?: string;
|
|
589
|
+
price: string;
|
|
590
|
+
unit?: string;
|
|
591
|
+
}
|
|
592
|
+
interface TripMeetingPoint {
|
|
593
|
+
name: string;
|
|
594
|
+
address: string;
|
|
595
|
+
type?: "start" | "alternative" | "activity";
|
|
596
|
+
}
|
|
597
|
+
interface TripFaq {
|
|
598
|
+
question: string;
|
|
599
|
+
answer: React.ReactNode;
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
interface TripPageProps {
|
|
603
|
+
title: string;
|
|
604
|
+
/** Legacy tagline — shown only when destination/duration are not provided */
|
|
605
|
+
tagline?: string;
|
|
606
|
+
/** Destination name shown with a map-pin icon in the hero */
|
|
607
|
+
destination?: string;
|
|
608
|
+
/** Duration shown with moon/sun icons in the hero */
|
|
609
|
+
duration?: TripDuration;
|
|
610
|
+
images: string[];
|
|
611
|
+
/** Optional video URL — plays as background instead of the image carousel */
|
|
612
|
+
videoUrl?: string;
|
|
613
|
+
/** Breadcrumb trail displayed above the title */
|
|
614
|
+
breadcrumb?: Array<{
|
|
615
|
+
label: string;
|
|
616
|
+
href?: string;
|
|
617
|
+
}>;
|
|
618
|
+
highlights?: TripHighlight[];
|
|
619
|
+
infoGroups?: TripInfoGroup[];
|
|
620
|
+
recommendedFor?: string;
|
|
621
|
+
overview?: React.ReactNode;
|
|
622
|
+
itinerary?: TripItineraryStep[];
|
|
623
|
+
gallery?: (string | PhotoGalleryPhoto)[];
|
|
624
|
+
included?: string[];
|
|
625
|
+
whatToBring?: string[];
|
|
626
|
+
weather?: React.ReactNode;
|
|
627
|
+
meetingPoints?: TripMeetingPoint[];
|
|
628
|
+
faqs?: TripFaq[];
|
|
629
|
+
reviews?: TripReview[];
|
|
630
|
+
priceFrom: string;
|
|
631
|
+
currency?: string;
|
|
632
|
+
season?: string;
|
|
633
|
+
departureTimes?: string[];
|
|
634
|
+
pricingOptions?: TripPricingOption[];
|
|
635
|
+
onBook?: () => void;
|
|
636
|
+
bookLabel?: string;
|
|
637
|
+
/** Pass true (or a links array) to render the transparent SiteHeader over the hero */
|
|
638
|
+
siteHeader?: boolean | SiteHeaderLink[];
|
|
639
|
+
/** Preset de layout (ilha WP / styleguide). @default v1 */
|
|
640
|
+
uiVariant?: "v1" | "v2";
|
|
641
|
+
/** Feature flags para ramos de UI sem duplicar componentes. */
|
|
642
|
+
features?: Record<string, boolean>;
|
|
643
|
+
className?: string;
|
|
644
|
+
}
|
|
645
|
+
declare function TripPage({ title, tagline, destination, duration, images, videoUrl, breadcrumb, highlights, infoGroups, recommendedFor, overview, itinerary, gallery, included, whatToBring, weather, meetingPoints, faqs, reviews, priceFrom, currency, season, departureTimes, pricingOptions, onBook, bookLabel, siteHeader, uiVariant, features, className, }: TripPageProps): react_jsx_runtime.JSX.Element;
|
|
646
|
+
|
|
647
|
+
type ActivityCardSize = "sm" | "md" | "lg";
|
|
648
|
+
interface ActivityCardProps {
|
|
649
|
+
/** URL da imagem de capa */
|
|
650
|
+
image: string;
|
|
651
|
+
imageAlt?: string;
|
|
652
|
+
/** Texto do badge sobreposto na imagem (ex: "Activity", "Tour") */
|
|
653
|
+
badge?: string;
|
|
654
|
+
/** Ícone sobreposto no canto superior esquerdo da imagem */
|
|
655
|
+
icon?: React.ReactNode;
|
|
656
|
+
/** Título principal do card */
|
|
657
|
+
title: string;
|
|
658
|
+
/** Descrição curta */
|
|
659
|
+
description?: string;
|
|
660
|
+
/** Texto do botão de preço (ex: "From CHF 63 .-") */
|
|
661
|
+
price?: string;
|
|
662
|
+
/** Callback ao clicar no card */
|
|
663
|
+
onClick?: () => void;
|
|
664
|
+
/** Tamanho do card */
|
|
665
|
+
size?: ActivityCardSize;
|
|
666
|
+
className?: string;
|
|
667
|
+
}
|
|
668
|
+
declare function ActivityCard({ image, imageAlt, badge, icon, title, description, price, onClick, size, className, }: ActivityCardProps): react_jsx_runtime.JSX.Element;
|
|
669
|
+
|
|
275
670
|
declare function cn(...inputs: ClassValue[]): string;
|
|
276
671
|
|
|
277
|
-
|
|
672
|
+
interface LeadCapturePopupConfig {
|
|
673
|
+
/** Hero image URL displayed at the top of the popup */
|
|
674
|
+
imageUrl?: string;
|
|
675
|
+
/** Main heading text */
|
|
676
|
+
heading?: string;
|
|
677
|
+
/** Subtitle / supporting text below the heading */
|
|
678
|
+
subtitle?: string;
|
|
679
|
+
/** Label for the name field */
|
|
680
|
+
nameLabel?: string;
|
|
681
|
+
/** Placeholder for the name field */
|
|
682
|
+
namePlaceholder?: string;
|
|
683
|
+
/** Label for the email field */
|
|
684
|
+
emailLabel?: string;
|
|
685
|
+
/** Placeholder for the email field */
|
|
686
|
+
emailPlaceholder?: string;
|
|
687
|
+
/** Label for the travel date question */
|
|
688
|
+
travelDateLabel?: string;
|
|
689
|
+
/** Options for the travel date dropdown */
|
|
690
|
+
travelDateOptions?: string[];
|
|
691
|
+
/** Submit button text */
|
|
692
|
+
submitLabel?: string;
|
|
693
|
+
/** Success heading after submission */
|
|
694
|
+
successHeading?: string;
|
|
695
|
+
/** Success message after submission */
|
|
696
|
+
successMessage?: string;
|
|
697
|
+
/** Privacy disclaimer text (supports basic HTML) */
|
|
698
|
+
privacyText?: string;
|
|
699
|
+
/** Trigger type: "delay" | "exit_intent" | "scroll" */
|
|
700
|
+
trigger?: "delay" | "exit_intent" | "scroll";
|
|
701
|
+
/** Delay in seconds before showing (for "delay" trigger) */
|
|
702
|
+
delaySeconds?: number;
|
|
703
|
+
/** Scroll percentage to trigger (for "scroll" trigger) */
|
|
704
|
+
scrollPercent?: number;
|
|
705
|
+
/** Days to suppress popup after dismissal (cookie) */
|
|
706
|
+
dismissDays?: number;
|
|
707
|
+
/** Accent color override (hex or CSS color) */
|
|
708
|
+
accentColor?: string;
|
|
709
|
+
/** Overlay opacity 0-100 */
|
|
710
|
+
overlayOpacity?: number;
|
|
711
|
+
/** Position: "center" | "bottom-right" */
|
|
712
|
+
position?: "center" | "bottom-right";
|
|
713
|
+
/** REST endpoint to POST form data to */
|
|
714
|
+
ajaxUrl?: string;
|
|
715
|
+
/** WordPress nonce for the AJAX request */
|
|
716
|
+
nonce?: string;
|
|
717
|
+
}
|
|
718
|
+
declare function LeadCapturePopup({ config: _config, }: {
|
|
719
|
+
config: LeadCapturePopupConfig;
|
|
720
|
+
}): react_jsx_runtime.JSX.Element | null;
|
|
721
|
+
|
|
722
|
+
export { ActivityCard, type ActivityCardProps, type ActivityCardSize, type BookingAdventure, BookingConfirmation, BookingConfirmationEmail, type BookingConfirmationEmailProps, type BookingConfirmationProps, type BookingContact, type BookingDepositInfo, BookingDetails, type BookingDetailsProps, BookingForm, type BookingFormProps, type BookingFormValues, type BookingStatus, type BookingSummaryLineItem, type BookingTraveller, 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 FilterGroup, type FilterItem, FilterPanel, type FilterPanelProps, FloatingInput, type FloatingInputProps, FloatingSelect, type FloatingSelectProps, Itinerary, type ItineraryProps, type ItineraryRoute, type ItineraryStop, LeadCapturePopup, type LeadCapturePopupConfig, MenuTrip, type MenuTripProps, type MenuTripSection, type MenuTripVariant, Offer, OfferAdventureCard, type OfferAdventureItem, type OfferAgentInfo, type OfferDepositInfo, type OfferOptionalItem, type OfferProps, type OfferSummaryLineItem, PhoneCountrySelect, PhotoGallery, type PhotoGalleryPhoto, type PhotoGalleryProps, type PhotoGalleryVariant, type PricingOption, PricingTrip, type PricingTripProps, type PricingTripVariant, SiteHeader, type SiteHeaderLanguage, type SiteHeaderLink, type SiteHeaderProps, type SiteHeaderSubItem, type SiteHeaderVariant, type SuggestedTraveller, ThemeToggle, 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, cn };
|