@planetaexo/design-system 0.22.2 → 0.23.1
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 +1132 -548
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +275 -18
- package/dist/index.d.ts +275 -18
- package/dist/index.js +1113 -533
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -345,6 +345,15 @@ interface BookingConfirmedCardProps {
|
|
|
345
345
|
viewBookingLabel?: string;
|
|
346
346
|
}
|
|
347
347
|
declare function BookingConfirmedCard({ title, email, message, onBack, backLabel, bookingNumber, bookingNumberLabel, viewBookingHref, viewBookingLabel, }: BookingConfirmedCardProps): react_jsx_runtime.JSX.Element;
|
|
348
|
+
interface TransferDetailsBlockProps {
|
|
349
|
+
/** Section label rendered as small caps subtitle. */
|
|
350
|
+
label: string;
|
|
351
|
+
/** Ordered list of `[term, value]` pairs to render. */
|
|
352
|
+
items: ReadonlyArray<readonly [string, React.ReactNode]>;
|
|
353
|
+
/** Optional className appended to the root container. */
|
|
354
|
+
className?: string;
|
|
355
|
+
}
|
|
356
|
+
declare function TransferDetailsBlock({ label, items, className, }: TransferDetailsBlockProps): react_jsx_runtime.JSX.Element | null;
|
|
348
357
|
/** Cartão de aventura isolado (mesmo layout que dentro de `Offer`). */
|
|
349
358
|
declare function OfferAdventureCard({ adventure }: {
|
|
350
359
|
adventure: OfferAdventureItem;
|
|
@@ -484,6 +493,18 @@ interface BookingDetailsLabels {
|
|
|
484
493
|
};
|
|
485
494
|
/** Botão "Request cancellation" no fim do card. Default EN. */
|
|
486
495
|
cancelRequestLabel?: string;
|
|
496
|
+
/** Texto de confirmação exibido via `window.confirm` quando o consumidor
|
|
497
|
+
* passa `adventure.allowEmptyAdventure === true` e o usuário clica em
|
|
498
|
+
* remover/desassociar o ÚLTIMO viajante da aventura.
|
|
499
|
+
* Default (apenas `message` é usado pelo `window.confirm`):
|
|
500
|
+
* "The adventure will be empty. Continue?". Os demais campos ficam
|
|
501
|
+
* reservados para uso futuro com modal interno. */
|
|
502
|
+
confirmRemoveLastTraveller?: {
|
|
503
|
+
title: string;
|
|
504
|
+
message: string;
|
|
505
|
+
confirm: string;
|
|
506
|
+
cancel: string;
|
|
507
|
+
};
|
|
487
508
|
}
|
|
488
509
|
interface SuggestedTraveller {
|
|
489
510
|
id: string;
|
|
@@ -543,6 +564,15 @@ interface BookingAdventure {
|
|
|
543
564
|
* Default: "No registration required". O consumidor passa label
|
|
544
565
|
* localizado (i18n) — espelha o padrão de `addTravellerLabel`. */
|
|
545
566
|
noRegistrationRequiredLabel?: string;
|
|
567
|
+
/** Quando `true`, permite que a aventura fique sem viajantes (botões de
|
|
568
|
+
* remover/desassociar ficam habilitados mesmo com apenas 1 traveller).
|
|
569
|
+
* Antes de remover o último, o DS dispara `window.confirm` usando
|
|
570
|
+
* `labels.confirmRemoveLastTraveller.message`.
|
|
571
|
+
*
|
|
572
|
+
* Default: `false` (preserva regra "min 1 traveller por aventura" do `/b`).
|
|
573
|
+
* Caso de uso: contexto admin onde o operador precisa esvaziar uma aventura
|
|
574
|
+
* para refazer assignments. */
|
|
575
|
+
allowEmptyAdventure?: boolean;
|
|
546
576
|
}
|
|
547
577
|
interface BookingContact {
|
|
548
578
|
name: string;
|
|
@@ -1369,6 +1399,54 @@ interface FilterPanelProps {
|
|
|
1369
1399
|
}
|
|
1370
1400
|
declare function FilterPanel({ groups, value, onChange, onClearAll, alwaysShowClear, title, className, }: FilterPanelProps): react_jsx_runtime.JSX.Element;
|
|
1371
1401
|
|
|
1402
|
+
/**
|
|
1403
|
+
* Configuration for any Trustpilot widget embedded in the design system.
|
|
1404
|
+
* Used by the reviews widget, the in-page product-mini widget, and the
|
|
1405
|
+
* hero / pricing-card slots.
|
|
1406
|
+
*/
|
|
1407
|
+
interface TrustpilotWidgetConfig {
|
|
1408
|
+
/** Trustpilot Business Unit ID. */
|
|
1409
|
+
businessUnitId: string;
|
|
1410
|
+
/** Trustpilot widget template ID. Different templates produce different layouts. */
|
|
1411
|
+
templateId?: string;
|
|
1412
|
+
/** Comma-separated SKU list (or array). Used by Trustpilot to scope reviews. */
|
|
1413
|
+
sku?: string | string[];
|
|
1414
|
+
/** Locale, e.g. "en-US". @default "en-US" */
|
|
1415
|
+
locale?: string;
|
|
1416
|
+
/** Widget container height (Trustpilot's data-style-height). @default "700px" */
|
|
1417
|
+
styleHeight?: string;
|
|
1418
|
+
/** Widget container width. @default "100%" */
|
|
1419
|
+
styleWidth?: string;
|
|
1420
|
+
/** When "hide", the widget is hidden if the business has no matching reviews. @default "hide" */
|
|
1421
|
+
noReviews?: "show" | "hide";
|
|
1422
|
+
/** "light" or "dark" — relevant for widgets that respect data-theme. */
|
|
1423
|
+
theme?: "light" | "dark";
|
|
1424
|
+
/** Product-widget token (data-token). Required by some Trustpilot templates. */
|
|
1425
|
+
token?: string;
|
|
1426
|
+
/** When true, clicking the widget scrolls the page to the reviews list. */
|
|
1427
|
+
scrollToList?: boolean;
|
|
1428
|
+
/** Horizontal alignment of the widget content (left | center | right). */
|
|
1429
|
+
styleAlignment?: "left" | "center" | "right";
|
|
1430
|
+
/**
|
|
1431
|
+
* Override the fill colour of the rating stars (Trustpilot's
|
|
1432
|
+
* data-star-color). Accepts any CSS colour — defaults to Trustpilot green.
|
|
1433
|
+
*/
|
|
1434
|
+
starColor?: string;
|
|
1435
|
+
/** Fallback link target (e.g. "https://www.trustpilot.com/review/yourdomain.com"). */
|
|
1436
|
+
fallbackHref?: string;
|
|
1437
|
+
}
|
|
1438
|
+
/**
|
|
1439
|
+
* Renders a Trustpilot widget div with the right data-* attributes and
|
|
1440
|
+
* lazily loads the bootstrap script if it isn't on the page already.
|
|
1441
|
+
*
|
|
1442
|
+
* Safe to render in any tree — the script is deduped across mounts and the
|
|
1443
|
+
* effect re-initializes the widget via `Trustpilot.loadFromElement` so the
|
|
1444
|
+
* widget renders correctly after SPA navigation or React re-mounts.
|
|
1445
|
+
*/
|
|
1446
|
+
declare function TrustpilotEmbed({ config }: {
|
|
1447
|
+
config: TrustpilotWidgetConfig;
|
|
1448
|
+
}): react_jsx_runtime.JSX.Element;
|
|
1449
|
+
|
|
1372
1450
|
interface ItineraryRoute {
|
|
1373
1451
|
distance: string;
|
|
1374
1452
|
duration: string;
|
|
@@ -1390,6 +1468,55 @@ interface ItineraryProps {
|
|
|
1390
1468
|
}
|
|
1391
1469
|
declare function Itinerary({ title, subtitle, stops, className }: ItineraryProps): react_jsx_runtime.JSX.Element;
|
|
1392
1470
|
|
|
1471
|
+
interface ItineraryDayPhoto {
|
|
1472
|
+
src: string;
|
|
1473
|
+
alt?: string;
|
|
1474
|
+
/** Caption shown in the lightbox bottom-left. */
|
|
1475
|
+
caption?: string;
|
|
1476
|
+
/** Photo credit shown in the lightbox bottom-right. */
|
|
1477
|
+
credit?: string;
|
|
1478
|
+
}
|
|
1479
|
+
interface ItineraryDaySpec {
|
|
1480
|
+
/** Icon shown to the left — pass any ReactNode (lucide icon, emoji, img). */
|
|
1481
|
+
icon: React.ReactNode;
|
|
1482
|
+
/** Bold leading label (e.g. "Hiking", "Driving"). */
|
|
1483
|
+
label: string;
|
|
1484
|
+
/** Inline detail rendered next to the label (e.g. "2hrs · 5km"). */
|
|
1485
|
+
detail?: React.ReactNode;
|
|
1486
|
+
/** Optional secondary line below the label (e.g. "Breakfast included"). */
|
|
1487
|
+
subdetail?: React.ReactNode;
|
|
1488
|
+
}
|
|
1489
|
+
type ItineraryDayPhotoLayout = "rounded" | "fullBleed" | "fullBleedBottom";
|
|
1490
|
+
interface ItineraryDayProps {
|
|
1491
|
+
dayNumber: number;
|
|
1492
|
+
/** Override the auto-generated "Day {n}" eyebrow text. */
|
|
1493
|
+
dayLabel?: string;
|
|
1494
|
+
title: string;
|
|
1495
|
+
/** Single URL, photo object, or array of either. */
|
|
1496
|
+
photos: string | ItineraryDayPhoto | (string | ItineraryDayPhoto)[];
|
|
1497
|
+
specs?: ItineraryDaySpec[];
|
|
1498
|
+
description?: React.ReactNode;
|
|
1499
|
+
/**
|
|
1500
|
+
* Photo frame layout.
|
|
1501
|
+
* - `"rounded"` (default): rounded photo frame above the text, aligned with the content.
|
|
1502
|
+
* - `"fullBleed"`: square corners, photo above the text; on phone/tablet the photo
|
|
1503
|
+
* extends to the viewport edges while the text/specs keep their horizontal margins.
|
|
1504
|
+
* Resets to contained at the `lg` breakpoint (1024px).
|
|
1505
|
+
* - `"fullBleedBottom"`: same bleed styling as `"fullBleed"`, but the photo renders
|
|
1506
|
+
* below the description instead of above the eyebrow.
|
|
1507
|
+
*/
|
|
1508
|
+
photoLayout?: ItineraryDayPhotoLayout;
|
|
1509
|
+
className?: string;
|
|
1510
|
+
}
|
|
1511
|
+
declare const itineraryDaySpecIcons: {
|
|
1512
|
+
readonly hiking: react_jsx_runtime.JSX.Element;
|
|
1513
|
+
readonly swimming: react_jsx_runtime.JSX.Element;
|
|
1514
|
+
readonly driving: react_jsx_runtime.JSX.Element;
|
|
1515
|
+
readonly boat: react_jsx_runtime.JSX.Element;
|
|
1516
|
+
readonly lodging: react_jsx_runtime.JSX.Element;
|
|
1517
|
+
};
|
|
1518
|
+
declare function ItineraryDay({ dayNumber, dayLabel, title, photos, specs, description, photoLayout, className, }: ItineraryDayProps): react_jsx_runtime.JSX.Element;
|
|
1519
|
+
|
|
1393
1520
|
interface MenuTripSection {
|
|
1394
1521
|
id: string;
|
|
1395
1522
|
label: string;
|
|
@@ -1406,7 +1533,7 @@ interface MenuTripProps {
|
|
|
1406
1533
|
}
|
|
1407
1534
|
declare function MenuTrip({ sections, activeSection, onSelect, variant, bold, className, }: MenuTripProps): react_jsx_runtime.JSX.Element;
|
|
1408
1535
|
|
|
1409
|
-
type PhotoGalleryVariant = "grid" | "masonry" | "filmstrip" | "featured";
|
|
1536
|
+
type PhotoGalleryVariant = "grid" | "masonry" | "filmstrip" | "featured" | "carousel" | "fullBleed";
|
|
1410
1537
|
interface PhotoGalleryPhoto {
|
|
1411
1538
|
src: string;
|
|
1412
1539
|
alt?: string;
|
|
@@ -1432,26 +1559,65 @@ interface PhotoGalleryProps {
|
|
|
1432
1559
|
}
|
|
1433
1560
|
declare function PhotoGallery({ photos, variant, initialVisible, onPhotoClick, className, }: PhotoGalleryProps): react_jsx_runtime.JSX.Element | null;
|
|
1434
1561
|
|
|
1435
|
-
|
|
1436
|
-
|
|
1562
|
+
type PricingTripVariant = "card" | "bar" | "compact";
|
|
1563
|
+
/**
|
|
1564
|
+
* Estimated price in another currency, calculated from the current
|
|
1565
|
+
* exchange rate. Rendered as a collapsible list inside the `card` variant
|
|
1566
|
+
* with a footnote disclaiming the estimate.
|
|
1567
|
+
*/
|
|
1568
|
+
interface CurrencyEstimate {
|
|
1569
|
+
/** Currency label — e.g. "EUR", "USD", "British Pounds". */
|
|
1570
|
+
currency: string;
|
|
1571
|
+
/** Pre-formatted price string. The component does NOT format numbers. */
|
|
1437
1572
|
price: string;
|
|
1438
|
-
|
|
1439
|
-
|
|
1573
|
+
/** Optional currency symbol shown before the price (defaults to currency). */
|
|
1574
|
+
symbol?: string;
|
|
1440
1575
|
}
|
|
1441
|
-
type PricingTripVariant = "card" | "bar" | "compact";
|
|
1442
1576
|
interface PricingTripProps {
|
|
1443
1577
|
priceFrom: string;
|
|
1444
1578
|
currency?: string;
|
|
1445
1579
|
/** e.g. "May – August · until mid-August with sufficient water levels" */
|
|
1446
1580
|
season?: string;
|
|
1447
1581
|
departureTimes?: string[];
|
|
1448
|
-
pricingOptions?: PricingOption[];
|
|
1449
1582
|
onBook?: () => void;
|
|
1450
1583
|
bookLabel?: string;
|
|
1451
1584
|
variant?: PricingTripVariant;
|
|
1585
|
+
/**
|
|
1586
|
+
* When true, removes rounded corners on the OUTER container that PricingTrip
|
|
1587
|
+
* owns (the `bar` variant's wrapper). Inner elements — CTA button, disclosure
|
|
1588
|
+
* panels — keep their rounded shape so the component still reads as a UI
|
|
1589
|
+
* widget. For variants without a built-in container (`compact`, `card`), the
|
|
1590
|
+
* consumer's wrapper controls the outer shape; pass `sharp` as a hint so
|
|
1591
|
+
* styleguide / demo wrappers can match.
|
|
1592
|
+
*/
|
|
1593
|
+
sharp?: boolean;
|
|
1594
|
+
/**
|
|
1595
|
+
* Optional content rendered directly below the price in the `card` variant.
|
|
1596
|
+
* Use it to slot in a small badge / Trustpilot mini widget / sponsor strip
|
|
1597
|
+
* without forking the component.
|
|
1598
|
+
*/
|
|
1599
|
+
belowPrice?: React.ReactNode;
|
|
1600
|
+
/**
|
|
1601
|
+
* Trust / value-prop checklist shown inside the `card` variant just before
|
|
1602
|
+
* the CTA button (e.g. "Hassle-Free Booking", "Sustainable Travel").
|
|
1603
|
+
*/
|
|
1604
|
+
benefits?: string[];
|
|
1605
|
+
/**
|
|
1606
|
+
* Estimated prices in other currencies, rendered as a collapsible
|
|
1607
|
+
* "Show estimates in other currencies" toggle inside the `card` variant.
|
|
1608
|
+
* Includes a footnote stating the values are based on the current
|
|
1609
|
+
* exchange rate.
|
|
1610
|
+
*/
|
|
1611
|
+
currencyEstimates?: CurrencyEstimate[];
|
|
1612
|
+
/**
|
|
1613
|
+
* Rich-text explanation shown in a popover triggered by a small (?) button
|
|
1614
|
+
* next to the price (card variant only). Use it to clarify how the price
|
|
1615
|
+
* is calculated, that final pricing depends on group size, etc.
|
|
1616
|
+
*/
|
|
1617
|
+
priceInfo?: React.ReactNode;
|
|
1452
1618
|
className?: string;
|
|
1453
1619
|
}
|
|
1454
|
-
declare function PricingTrip({ priceFrom, currency, season, departureTimes,
|
|
1620
|
+
declare function PricingTrip({ priceFrom, currency, season, departureTimes, onBook, bookLabel, variant, sharp, belowPrice, benefits, currencyEstimates, priceInfo, className, }: PricingTripProps): react_jsx_runtime.JSX.Element;
|
|
1455
1621
|
|
|
1456
1622
|
interface SiteHeaderSubItem {
|
|
1457
1623
|
label: string;
|
|
@@ -1544,18 +1710,30 @@ interface TripHeaderProps {
|
|
|
1544
1710
|
duration?: TripDuration;
|
|
1545
1711
|
/** Legacy tagline — shown only when destination/duration are not provided */
|
|
1546
1712
|
tagline?: string;
|
|
1713
|
+
/**
|
|
1714
|
+
* Optional content rendered directly below the destination/duration meta
|
|
1715
|
+
* row. Use it to slot in a small Trustpilot widget, sponsor badge, etc.
|
|
1716
|
+
*/
|
|
1717
|
+
belowMeta?: React.ReactNode;
|
|
1547
1718
|
/** Pass true (or a links array) to render the transparent SiteHeader over the hero */
|
|
1548
1719
|
siteHeader?: boolean | SiteHeaderLink[];
|
|
1549
1720
|
/** Alinhado ao TripPage — reservado para densidade / hero v2 */
|
|
1550
1721
|
uiVariant?: "v1" | "v2";
|
|
1551
1722
|
className?: string;
|
|
1552
1723
|
}
|
|
1553
|
-
declare function TripHeader({ images, videoUrl, title, breadcrumb, destination, duration, tagline, siteHeader, uiVariant, className, }: TripHeaderProps): react_jsx_runtime.JSX.Element;
|
|
1724
|
+
declare function TripHeader({ images, videoUrl, title, breadcrumb, destination, duration, tagline, belowMeta, siteHeader, uiVariant, className, }: TripHeaderProps): react_jsx_runtime.JSX.Element;
|
|
1554
1725
|
|
|
1555
1726
|
interface TripHighlight {
|
|
1556
1727
|
label: string;
|
|
1557
1728
|
icon?: React.ReactNode;
|
|
1558
1729
|
}
|
|
1730
|
+
/** Long-form highlight rendered as a row inside the Overview section. */
|
|
1731
|
+
interface TripOverviewHighlight {
|
|
1732
|
+
/** Leading icon (lucide, custom SVG, anything). */
|
|
1733
|
+
icon?: React.ReactNode;
|
|
1734
|
+
/** One- or two-sentence description. Accepts rich text. */
|
|
1735
|
+
description: React.ReactNode;
|
|
1736
|
+
}
|
|
1559
1737
|
interface TripInfoGroup {
|
|
1560
1738
|
title: string;
|
|
1561
1739
|
icon?: React.ReactNode;
|
|
@@ -1567,17 +1745,22 @@ interface TripItineraryStep {
|
|
|
1567
1745
|
description: React.ReactNode;
|
|
1568
1746
|
isTransfer?: boolean;
|
|
1569
1747
|
}
|
|
1748
|
+
/**
|
|
1749
|
+
* Day-by-day itinerary entry, rendered as a stacked full-bleed `<ItineraryDay>`.
|
|
1750
|
+
* Accepts the same shape as `ItineraryDayProps` minus the layout overrides
|
|
1751
|
+
* (the trip page controls those).
|
|
1752
|
+
*/
|
|
1753
|
+
type TripItineraryDay = Omit<ItineraryDayProps, "photoLayout" | "className">;
|
|
1570
1754
|
interface TripReview {
|
|
1571
1755
|
author: string;
|
|
1572
1756
|
text: string;
|
|
1573
1757
|
rating?: number;
|
|
1574
1758
|
}
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
}
|
|
1759
|
+
/**
|
|
1760
|
+
* @deprecated Use `TrustpilotWidgetConfig` instead. Re-export kept for
|
|
1761
|
+
* backwards compatibility with consumers that imported the old name.
|
|
1762
|
+
*/
|
|
1763
|
+
type TripTrustpilotWidget = TrustpilotWidgetConfig;
|
|
1581
1764
|
interface TripMeetingPoint {
|
|
1582
1765
|
name: string;
|
|
1583
1766
|
address: string;
|
|
@@ -1587,6 +1770,27 @@ interface TripFaq {
|
|
|
1587
1770
|
question: string;
|
|
1588
1771
|
answer: React.ReactNode;
|
|
1589
1772
|
}
|
|
1773
|
+
/**
|
|
1774
|
+
* Per-section icon overrides for the trip details accordion. Each value
|
|
1775
|
+
* replaces the default lucide icon for that accordion item (rendered in the
|
|
1776
|
+
* primary brand colour). Provide any ReactNode — a lucide icon, an inline SVG,
|
|
1777
|
+
* or an `<img>` for custom artwork.
|
|
1778
|
+
*/
|
|
1779
|
+
interface TripSectionIcons {
|
|
1780
|
+
/** Top-of-page sections */
|
|
1781
|
+
overview?: React.ReactNode;
|
|
1782
|
+
itinerary?: React.ReactNode;
|
|
1783
|
+
whatIsIncluded?: React.ReactNode;
|
|
1784
|
+
/** Accordion sections */
|
|
1785
|
+
keyInfo?: React.ReactNode;
|
|
1786
|
+
meetingPoint?: React.ReactNode;
|
|
1787
|
+
optionalExtras?: React.ReactNode;
|
|
1788
|
+
whatToBring?: React.ReactNode;
|
|
1789
|
+
accommodation?: React.ReactNode;
|
|
1790
|
+
food?: React.ReactNode;
|
|
1791
|
+
weather?: React.ReactNode;
|
|
1792
|
+
terms?: React.ReactNode;
|
|
1793
|
+
}
|
|
1590
1794
|
|
|
1591
1795
|
interface TripPageProps {
|
|
1592
1796
|
title: string;
|
|
@@ -1606,21 +1810,74 @@ interface TripPageProps {
|
|
|
1606
1810
|
}>;
|
|
1607
1811
|
highlights?: TripHighlight[];
|
|
1608
1812
|
infoGroups?: TripInfoGroup[];
|
|
1813
|
+
/**
|
|
1814
|
+
* Rich-text "Key info" content (WYSIWYG). When provided, replaces the
|
|
1815
|
+
* structured `infoGroups` render inside the accordion item — useful when
|
|
1816
|
+
* the source of truth is a free-form WP WYSIWYG field instead of
|
|
1817
|
+
* structured groups.
|
|
1818
|
+
*/
|
|
1819
|
+
keyInfo?: React.ReactNode;
|
|
1609
1820
|
recommendedFor?: string;
|
|
1610
1821
|
overview?: React.ReactNode;
|
|
1822
|
+
/** Optional list of long-form highlights rendered inside the Overview section. */
|
|
1823
|
+
overviewHighlights?: TripOverviewHighlight[];
|
|
1611
1824
|
itinerary?: TripItineraryStep[];
|
|
1825
|
+
/**
|
|
1826
|
+
* Day-by-day itinerary, rendered as stacked full-bleed `<ItineraryDay>` cards
|
|
1827
|
+
* (photo extends to the viewport edges on mobile). Takes precedence over
|
|
1828
|
+
* `itinerary` when both are provided.
|
|
1829
|
+
*/
|
|
1830
|
+
itineraryDays?: TripItineraryDay[];
|
|
1612
1831
|
gallery?: (string | PhotoGalleryPhoto)[];
|
|
1613
1832
|
included?: string[];
|
|
1833
|
+
notIncluded?: string[];
|
|
1614
1834
|
whatToBring?: string[];
|
|
1615
1835
|
weather?: React.ReactNode;
|
|
1836
|
+
optionalExtras?: React.ReactNode;
|
|
1837
|
+
accommodation?: React.ReactNode;
|
|
1838
|
+
food?: React.ReactNode;
|
|
1839
|
+
termsAndConditions?: React.ReactNode;
|
|
1616
1840
|
meetingPoints?: TripMeetingPoint[];
|
|
1841
|
+
/**
|
|
1842
|
+
* Rich-text "Meeting point" content (WYSIWYG). When provided, replaces
|
|
1843
|
+
* the structured `meetingPoints` render inside the accordion item.
|
|
1844
|
+
*/
|
|
1845
|
+
meetingPoint?: React.ReactNode;
|
|
1617
1846
|
faqs?: TripFaq[];
|
|
1847
|
+
/**
|
|
1848
|
+
* Per-section icon overrides for the trip details accordion. When a value
|
|
1849
|
+
* is supplied for a section, it replaces the hardcoded lucide icon next
|
|
1850
|
+
* to that section's heading. Use this to make the accordion icons
|
|
1851
|
+
* editor-driven (e.g. an ACF Select on each section group).
|
|
1852
|
+
*/
|
|
1853
|
+
sectionIcons?: TripSectionIcons;
|
|
1618
1854
|
reviews?: TripReview[];
|
|
1855
|
+
/** When provided, replaces the manual `reviews` block with a Trustpilot widget. */
|
|
1856
|
+
trustpilot?: TripTrustpilotWidget;
|
|
1857
|
+
/**
|
|
1858
|
+
* Small Trustpilot "Product Mini" widget rendered inside the pricing
|
|
1859
|
+
* sidebar (between the season line and the departure times). Independent
|
|
1860
|
+
* from `trustpilot`, since the two widgets typically use different
|
|
1861
|
+
* template-ids and visual styling.
|
|
1862
|
+
*/
|
|
1863
|
+
trustpilotMini?: TripTrustpilotWidget;
|
|
1864
|
+
/**
|
|
1865
|
+
* Small Trustpilot widget rendered inside the hero, directly below the
|
|
1866
|
+
* destination/duration row. Independent from `trustpilotMini` because the
|
|
1867
|
+
* hero usually needs a dark theme (white text on dark image) while the
|
|
1868
|
+
* pricing card sidebar usually doesn't.
|
|
1869
|
+
*/
|
|
1870
|
+
trustpilotHero?: TripTrustpilotWidget;
|
|
1619
1871
|
priceFrom: string;
|
|
1620
1872
|
currency?: string;
|
|
1621
1873
|
season?: string;
|
|
1622
1874
|
departureTimes?: string[];
|
|
1623
|
-
|
|
1875
|
+
/** Trust / value-prop checklist shown inside the booking sidebar card. */
|
|
1876
|
+
benefits?: string[];
|
|
1877
|
+
/** Estimated prices in other currencies (collapsible list in the sidebar card). */
|
|
1878
|
+
currencyEstimates?: CurrencyEstimate[];
|
|
1879
|
+
/** Rich text shown in a popover triggered by the (?) button next to the price. */
|
|
1880
|
+
priceInfo?: React.ReactNode;
|
|
1624
1881
|
onBook?: () => void;
|
|
1625
1882
|
bookLabel?: string;
|
|
1626
1883
|
/** Pass true (or a links array) to render the transparent SiteHeader over the hero */
|
|
@@ -1631,7 +1888,7 @@ interface TripPageProps {
|
|
|
1631
1888
|
features?: Record<string, boolean>;
|
|
1632
1889
|
className?: string;
|
|
1633
1890
|
}
|
|
1634
|
-
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,
|
|
1891
|
+
declare function TripPage({ title, tagline, destination, duration, images, videoUrl, breadcrumb, highlights, infoGroups, keyInfo, recommendedFor, overview, overviewHighlights, itinerary, itineraryDays, gallery, included, notIncluded, whatToBring, weather, optionalExtras, accommodation, food, termsAndConditions, meetingPoints, meetingPoint, faqs, sectionIcons, reviews, trustpilot, trustpilotMini, trustpilotHero, priceFrom, currency, season, departureTimes, benefits, currencyEstimates, priceInfo, onBook, bookLabel, siteHeader, uiVariant, features, className, }: TripPageProps): react_jsx_runtime.JSX.Element;
|
|
1635
1892
|
|
|
1636
1893
|
type ActivityCardSize = "sm" | "md" | "lg";
|
|
1637
1894
|
interface ActivityCardProps {
|
|
@@ -2104,4 +2361,4 @@ declare function LeadCapturePopup({ config: _config, }: {
|
|
|
2104
2361
|
config: LeadCapturePopupConfig;
|
|
2105
2362
|
}): react_jsx_runtime.JSX.Element | null;
|
|
2106
2363
|
|
|
2107
|
-
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 BookingDetailsLabels, 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 OfferConfirmedState, type OfferDepositInfo, type OfferLabels, type OfferOptionalItem, type OfferProps, type OfferSummaryLineItem, PaymentAmountSelector, type PaymentAmountSelectorProps, type PaymentMethodOption, PaymentMethodSelector, type PaymentMethodSelectorProps, PaymentModalShell, type PaymentModalShellProps, PaymentReceiptEmail, type PaymentReceiptEmailLabels, type PaymentReceiptEmailProps, PhoneCountrySelect, PhotoGallery, type PhotoGalleryPhoto, type PhotoGalleryProps, type PhotoGalleryVariant,
|
|
2364
|
+
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 BookingDetailsLabels, 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, type CurrencyEstimate, DEFAULT_HEADER_LINKS, DEFAULT_LANGUAGES, DatePickerField, type DatePickerFieldProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, type EmailTokens, type FilterGroup, type FilterItem, FilterPanel, type FilterPanelProps, FloatingInput, type FloatingInputProps, FloatingSelect, type FloatingSelectProps, Itinerary, ItineraryDay, type ItineraryDayPhoto, type ItineraryDayPhotoLayout, type ItineraryDayProps, type ItineraryDaySpec, type ItineraryProps, type ItineraryRoute, type ItineraryStop, LOGO_PLANETAEXO_DATA_URI, LeadCapturePopup, type LeadCapturePopupConfig, MenuTrip, type MenuTripProps, type MenuTripSection, type MenuTripVariant, OTPCodeInput, type OTPCodeInputProps, Offer, OfferAdventureCard, type OfferAdventureItem, type OfferAgentInfo, type OfferConfirmedState, type OfferDepositInfo, type OfferLabels, type OfferOptionalItem, type OfferProps, type OfferSummaryLineItem, PaymentAmountSelector, type PaymentAmountSelectorProps, type PaymentMethodOption, PaymentMethodSelector, type PaymentMethodSelectorProps, PaymentModalShell, type PaymentModalShellProps, PaymentReceiptEmail, type PaymentReceiptEmailLabels, type PaymentReceiptEmailProps, PhoneCountrySelect, PhotoGallery, type PhotoGalleryPhoto, type PhotoGalleryProps, type PhotoGalleryVariant, PricingTrip, type PricingTripProps, type PricingTripVariant, type RegistrationAdventure, type RegistrationBooking, type RegistrationEmergencyContactValue, type RegistrationField, type RegistrationFieldOption, type RegistrationFieldType, type RegistrationFieldValue, RegistrationForm, type RegistrationFormLabels, type RegistrationFormProps, type RegistrationFormValues, type RegistrationNameValue, type RegistrationPhoneValue, RegistrationSuccessCard, type RegistrationSuccessCardProps, type RegistrationTerms, type RegistrationTraveller, SiteHeader, type SiteHeaderLanguage, type SiteHeaderLink, type SiteHeaderProps, type SiteHeaderSubItem, type SiteHeaderVariant, type StripeAppearance, type SuggestedTraveller, TERMS_ACCEPT_KEY, TermsSection, type TermsSectionProps, ThemeToggle, Toast, type ToastProps, type ToastVariant, TransferDetailsBlock, type TransferDetailsBlockProps, type TravellerFormConfig, type TravellerFormData, TravellerFormInviteEmail, type TravellerFormInviteEmailLabels, type TravellerFormInviteEmailProps, type TravellerFormInviteLink, type TravellerFormLabels, TripCard, type TripCardCta, type TripCardProps, type TripCardSize, type TripCardStatus, type TripDuration, type TripFaq, TripHeader, type TripHeaderProps, type TripHighlight, type TripInfoGroup, type TripItineraryDay, type TripItineraryStep, type TripMeetingPoint, type TripOverviewHighlight, TripPage, type TripPageProps, type TripReview, type TripTrustpilotWidget, TrustpilotEmbed, type TrustpilotWidgetConfig, buttonVariants, cn, emailTokens, getStripeAppearance, itineraryDaySpecIcons, stripeAppearance, wrapEmailHtml };
|