@harshit-wander/component-lib 1.1.14 → 1.1.16

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
@@ -154,6 +154,39 @@ interface GalleryPhotoProps extends HTMLAttributes<HTMLElement> {
154
154
 
155
155
  declare const GalleryPhoto: react.ForwardRefExoticComponent<GalleryPhotoProps & react.RefAttributes<HTMLDivElement>>;
156
156
 
157
+ interface MarqueeImage {
158
+ src: string;
159
+ alt?: string | undefined;
160
+ }
161
+ interface ImageMarqueeProps {
162
+ /** Images to scroll. */
163
+ images: MarqueeImage[];
164
+ /** One full loop duration in seconds. */
165
+ durationSec?: number | undefined;
166
+ /** Gap between items, in pixels. */
167
+ gap?: number | undefined;
168
+ /** Fixed item width (px), paired with `alternatingHeights`. */
169
+ fixedWidth?: number | undefined;
170
+ /** Heights (px) cycled per image when `fixedWidth` is set, e.g. [400, 250]. */
171
+ alternatingHeights?: number[] | undefined;
172
+ /** First N slides render immediately; the rest mount when scrolled into view. */
173
+ eagerImageCount?: number | undefined;
174
+ className?: string | undefined;
175
+ }
176
+
177
+ /**
178
+ * Infinite horizontal marquee of images. The track duplicates the strip and
179
+ * translates -50% for a seamless loop; `prefers-reduced-motion` disables the
180
+ * animation (the strip becomes horizontally scrollable instead).
181
+ *
182
+ * Sizing: pass `fixedWidth` + `alternatingHeights` for a fixed-width cadence,
183
+ * otherwise a built-in repeating size pattern is used.
184
+ */
185
+ declare const ImageMarquee: {
186
+ ({ images, durationSec, gap, fixedWidth, alternatingHeights, eagerImageCount, className }: ImageMarqueeProps): react_jsx_runtime.JSX.Element | null;
187
+ displayName: string;
188
+ };
189
+
157
190
  interface LocationItem {
158
191
  location: string;
159
192
  address: string;
@@ -164,6 +197,21 @@ interface LocationCardProps extends HTMLAttributes<HTMLElement>, LocationItem {
164
197
 
165
198
  declare const LocationCard: react.ForwardRefExoticComponent<LocationCardProps & react.RefAttributes<HTMLElement>>;
166
199
 
200
+ interface LuxuryTripCardProps extends HTMLAttributes<HTMLElement> {
201
+ /** Background image URL. */
202
+ image: string;
203
+ /** Accessible description of the image. */
204
+ alt: string;
205
+ /** Trip title (rendered in the serif display font). */
206
+ title: string;
207
+ /** Optional duration label, e.g. "12N/13D". Shows a clock icon when set. */
208
+ duration?: string | undefined;
209
+ /** Render as an anchor to this URL. Without it, renders a non-link container. */
210
+ href?: string | undefined;
211
+ }
212
+
213
+ declare const LuxuryTripCard: react.ForwardRefExoticComponent<LuxuryTripCardProps & react.RefAttributes<HTMLElement>>;
214
+
167
215
  interface MonthTab {
168
216
  id: string;
169
217
  label: string;
@@ -539,6 +587,146 @@ interface HomeHeroProps extends HTMLAttributes<HTMLElement> {
539
587
 
540
588
  declare const HomeHero: react.ForwardRefExoticComponent<HomeHeroProps & react.RefAttributes<HTMLElement>>;
541
589
 
590
+ interface LuxuryCategoryNavItem {
591
+ /** Unique identifier for the tab. */
592
+ id: string;
593
+ /** Visible label (rendered uppercase). */
594
+ label: string;
595
+ }
596
+ interface LuxuryCategoryNavProps extends HTMLAttributes<HTMLElement> {
597
+ /** Tabs to render in order. When empty, the component renders nothing. */
598
+ items: LuxuryCategoryNavItem[];
599
+ /** Id of the tab active on first render. */
600
+ defaultActiveId?: string | undefined;
601
+ /** Called with the tab id whenever the active tab changes. */
602
+ onActiveChange?: ((id: string) => void) | undefined;
603
+ }
604
+
605
+ declare const LuxuryCategoryNav: {
606
+ ({ items, defaultActiveId, onActiveChange, className, ...rest }: LuxuryCategoryNavProps): react_jsx_runtime.JSX.Element | null;
607
+ displayName: string;
608
+ };
609
+
610
+ interface LuxuryDestinationSectionProps extends HTMLAttributes<HTMLElement> {
611
+ /** Small uppercase eyebrow label above the title. */
612
+ badge: string;
613
+ /** Section title, rendered in the serif display font. */
614
+ title: string;
615
+ /** Body copy. Split on `\n` — each line renders as its own paragraph. */
616
+ description?: string | undefined;
617
+ /** Still image shown in the hero frame (and used as the video poster fallback). */
618
+ heroImage?: {
619
+ src: string;
620
+ alt?: string | undefined;
621
+ } | undefined;
622
+ /** Looping background video for the hero frame. */
623
+ heroVideo?: {
624
+ src: string;
625
+ poster?: string | undefined;
626
+ } | undefined;
627
+ /** Luxury trip cards rendered in the horizontally scrolling row. */
628
+ trips: LuxuryTripCardProps[];
629
+ }
630
+
631
+ declare const LuxuryDestinationSection: react.ForwardRefExoticComponent<LuxuryDestinationSectionProps & react.RefAttributes<HTMLElement>>;
632
+
633
+ interface LuxuryHeroProps extends HTMLAttributes<HTMLElement> {
634
+ /** Background video source URL. */
635
+ videoSrc: string;
636
+ /** Poster image shown before the video loads. */
637
+ videoPoster: string;
638
+ /** MIME type of the video source. Defaults to "video/mp4". */
639
+ videoType?: string | undefined;
640
+ /** Main heading, rendered in the serif display font. Defaults to "WanderOn Experiences". */
641
+ title?: string | undefined;
642
+ /** First subline beneath the gold rule. */
643
+ subline1?: string | undefined;
644
+ /** Second subline beneath the first. */
645
+ subline2?: string | undefined;
646
+ /** CTA button label. Defaults to "Connect with Concierge". */
647
+ ctaLabel?: string | undefined;
648
+ /** Fired when the CTA button is clicked. */
649
+ onCtaClick?: (() => void) | undefined;
650
+ /** Logo link target. Defaults to "/". */
651
+ homeHref?: string | undefined;
652
+ /** Logo image URL. */
653
+ logoSrc?: string | undefined;
654
+ /** Whether to render the top logo. Defaults to true. */
655
+ showLogo?: boolean | undefined;
656
+ }
657
+
658
+ declare const LuxuryHero: react.ForwardRefExoticComponent<LuxuryHeroProps & react.RefAttributes<HTMLElement>>;
659
+
660
+ /** A single dial-code option for the country select. */
661
+ interface DialCodeOption {
662
+ /** E.164 dial code, e.g. "+91". */
663
+ code: string;
664
+ /** Human-readable label, e.g. "India (+91)". */
665
+ label: string;
666
+ }
667
+ interface LuxuryInquiryFormProps extends Omit<HTMLAttributes<HTMLElement>, 'onSubmit'> {
668
+ /**
669
+ * Called with the collected lead. `mobile` is the dial code concatenated with
670
+ * the local digits (e.g. "+9198…"). May be async; rejection surfaces a form error.
671
+ */
672
+ onSubmit: (data: {
673
+ name: string;
674
+ mobile: string;
675
+ }) => void | Promise<void>;
676
+ /** Heading text (rendered in the serif display font). */
677
+ title?: string | undefined;
678
+ /** Supporting line shown under the heading. */
679
+ subheading?: string | undefined;
680
+ /** Placeholder for the name field. */
681
+ namePlaceholder?: string | undefined;
682
+ /** Placeholder for the phone field. */
683
+ phonePlaceholder?: string | undefined;
684
+ /** Selectable dial codes. Defaults to a small India/USA/UK/UAE set. */
685
+ dialCodes?: DialCodeOption[] | undefined;
686
+ }
687
+
688
+ declare const LuxuryInquiryForm: {
689
+ ({ onSubmit, title, subheading, namePlaceholder, phonePlaceholder, dialCodes, className, ...rest }: LuxuryInquiryFormProps): react_jsx_runtime.JSX.Element;
690
+ displayName: string;
691
+ };
692
+
693
+ interface LuxuryIntroProps extends HTMLAttributes<HTMLElement> {
694
+ /** Pill label above the heading (uppercase, gold outline). */
695
+ badge?: string | undefined;
696
+ /** Section heading, rendered as an `<h2>` in the serif display font. */
697
+ heading: string;
698
+ /** Body paragraph beneath the heading. */
699
+ body: string;
700
+ }
701
+
702
+ declare const LuxuryIntro: react.ForwardRefExoticComponent<LuxuryIntroProps & react.RefAttributes<HTMLElement>>;
703
+
704
+ /** A single review entry in the testimonials row. */
705
+ interface LuxuryReview {
706
+ /** First (portrait) photo URL. */
707
+ image1: string;
708
+ /** Second (landscape) photo URL. */
709
+ image2: string;
710
+ /** The quote text (rendered in quotation marks). */
711
+ content: string;
712
+ /** Customer name shown beneath the quote. */
713
+ name: string;
714
+ /** Optional "continue reading" link target. */
715
+ link?: string | undefined;
716
+ }
717
+ interface LuxuryTestimonialsProps extends HTMLAttributes<HTMLElement> {
718
+ /** Reviews rendered as horizontally-scrolling cards. */
719
+ reviews: LuxuryReview[];
720
+ /** Serif title beneath the badge. */
721
+ heading?: string | undefined;
722
+ /** Pill label above the heading (uppercase, gold). */
723
+ badge?: string | undefined;
724
+ /** Clamp the quote text to this many lines. */
725
+ lineClamp?: number | undefined;
726
+ }
727
+
728
+ declare const LuxuryTestimonials: react.ForwardRefExoticComponent<LuxuryTestimonialsProps & react.RefAttributes<HTMLElement>>;
729
+
542
730
  interface NavLink {
543
731
  label: string;
544
732
  href: string;
@@ -720,6 +908,20 @@ declare const theme: {
720
908
  readonly contentWidth: "760px";
721
909
  readonly mobileBreakpoint: "768px";
722
910
  };
911
+ readonly luxury: {
912
+ readonly colors: {
913
+ readonly gold: "#C5A059";
914
+ readonly goldStrong: "#A68411";
915
+ readonly goldLight: "#F3E5AB";
916
+ readonly goldSoft: "#E8D5B7";
917
+ readonly heading: "#9A7B4F";
918
+ readonly ink: "#0C060E";
919
+ readonly inkCard: "#1A1A1A";
920
+ readonly onDark: "#FFFDF9";
921
+ readonly text: "#2C2C2C";
922
+ };
923
+ readonly font: "var(--font-luxury-family, \"Playfair Display\"), Georgia, serif";
924
+ };
723
925
  readonly colors: {
724
926
  readonly primary: "#01AFD1";
725
927
  readonly primaryHover: "#0089A6";
@@ -768,4 +970,4 @@ declare const theme: {
768
970
  };
769
971
  type Theme = typeof theme;
770
972
 
771
- export { BottomNav, type BottomNavItem, type BottomNavProps, type Brand, BrandLogo, type BrandLogoProps, BrandsSection, type BrandsSectionProps, CategoryNavbar, type CategoryNavbarProps, ContactForm, type ContactFormCountryCode, type ContactFormDestination, type ContactFormProps, type ContactFormValues, ContactSection, type ContactSectionProps, CtaBanner, type CtaBannerCta, type CtaBannerProps, DestinationCard, type DestinationCardProps, type DestinationItem, DestinationsSection, type DestinationsSectionProps, EventBanner, type EventBannerProps, EventCarousel, type EventCarouselImageItem, type EventCarouselProps, type EventCarouselVideoItem, EventVideoBanner, type EventVideoBannerProps, ExpandableValueCard, type ExpandableValueCardProps, ExploreCard, type ExploreCardProps, type ExploreItem, ExploreSection, type ExploreSectionProps, FaqExpandable, type FaqExpandableProps, type FaqItem, FaqSection, type FaqSectionProps, FeatureCard, type FeatureCardProps, Footer, type FooterColumn, type FooterContact, type FooterLink, type FooterProps, type FooterSocialLink, GalleryPhoto, type GalleryPhotoData, type GalleryPhotoProps, GallerySection, type GallerySectionProps, Hero, type HeroProps, type HeroReview, type HeroVariant, HomeHero, type HomeHeroProps, type HomeHeroReview, type HomeHeroTypewriterOptions, LocationCard, type LocationCardProps, type LocationItem, type MonthTab, MonthTabs, type MonthTabsProps, type NavCategory, type NavCategoryItem, type NavLink, Navbar, type NavbarProps, OfficesSection, type OfficesSectionProps, PackageCard, type PackageCardProps, type PackageItem, PackagesCarousel, type PackagesCarouselProps, SectionHeader, type SectionHeaderAlign, type SectionHeaderProps, SiteHeader, type SiteHeaderProps, TeamInfoCard, type TeamInfoCardProps, type TeamMember, TeamSection, type TeamSectionProps, type TeamSocialLink, TestimonialCard, type TestimonialCardProps, type TestimonialItem, TestimonialsCarousel, type TestimonialsCarouselProps, TextSection, type TextSectionAlign, type TextSectionProps, type Theme, TripCategoryCard, type TripCategoryCardProps, type TripsCategoryItem, TripsCategorySection, type TripsCategorySectionCta, type TripsCategorySectionProps, UctMobileBanner, type UctMobileBannerProps, type ValueItem, ValuesSection, type ValuesSectionProps, type Warrior, WarriorCard, type WarriorCardProps, WarriorsSection, type WarriorsSectionProps, type WhyChooseFeature, WhyChooseSection, type WhyChooseSectionProps, theme };
973
+ export { BottomNav, type BottomNavItem, type BottomNavProps, type Brand, BrandLogo, type BrandLogoProps, BrandsSection, type BrandsSectionProps, CategoryNavbar, type CategoryNavbarProps, ContactForm, type ContactFormCountryCode, type ContactFormDestination, type ContactFormProps, type ContactFormValues, ContactSection, type ContactSectionProps, CtaBanner, type CtaBannerCta, type CtaBannerProps, DestinationCard, type DestinationCardProps, type DestinationItem, DestinationsSection, type DestinationsSectionProps, type DialCodeOption, EventBanner, type EventBannerProps, EventCarousel, type EventCarouselImageItem, type EventCarouselProps, type EventCarouselVideoItem, EventVideoBanner, type EventVideoBannerProps, ExpandableValueCard, type ExpandableValueCardProps, ExploreCard, type ExploreCardProps, type ExploreItem, ExploreSection, type ExploreSectionProps, FaqExpandable, type FaqExpandableProps, type FaqItem, FaqSection, type FaqSectionProps, FeatureCard, type FeatureCardProps, Footer, type FooterColumn, type FooterContact, type FooterLink, type FooterProps, type FooterSocialLink, GalleryPhoto, type GalleryPhotoData, type GalleryPhotoProps, GallerySection, type GallerySectionProps, Hero, type HeroProps, type HeroReview, type HeroVariant, HomeHero, type HomeHeroProps, type HomeHeroReview, type HomeHeroTypewriterOptions, ImageMarquee, type ImageMarqueeProps, LocationCard, type LocationCardProps, type LocationItem, LuxuryCategoryNav, type LuxuryCategoryNavItem, type LuxuryCategoryNavProps, LuxuryDestinationSection, type LuxuryDestinationSectionProps, LuxuryHero, type LuxuryHeroProps, LuxuryInquiryForm, type LuxuryInquiryFormProps, LuxuryIntro, type LuxuryIntroProps, type LuxuryReview, LuxuryTestimonials, type LuxuryTestimonialsProps, LuxuryTripCard, type LuxuryTripCardProps, type MarqueeImage, type MonthTab, MonthTabs, type MonthTabsProps, type NavCategory, type NavCategoryItem, type NavLink, Navbar, type NavbarProps, OfficesSection, type OfficesSectionProps, PackageCard, type PackageCardProps, type PackageItem, PackagesCarousel, type PackagesCarouselProps, SectionHeader, type SectionHeaderAlign, type SectionHeaderProps, SiteHeader, type SiteHeaderProps, TeamInfoCard, type TeamInfoCardProps, type TeamMember, TeamSection, type TeamSectionProps, type TeamSocialLink, TestimonialCard, type TestimonialCardProps, type TestimonialItem, TestimonialsCarousel, type TestimonialsCarouselProps, TextSection, type TextSectionAlign, type TextSectionProps, type Theme, TripCategoryCard, type TripCategoryCardProps, type TripsCategoryItem, TripsCategorySection, type TripsCategorySectionCta, type TripsCategorySectionProps, UctMobileBanner, type UctMobileBannerProps, type ValueItem, ValuesSection, type ValuesSectionProps, type Warrior, WarriorCard, type WarriorCardProps, WarriorsSection, type WarriorsSectionProps, type WhyChooseFeature, WhyChooseSection, type WhyChooseSectionProps, theme };
package/dist/index.d.ts CHANGED
@@ -154,6 +154,39 @@ interface GalleryPhotoProps extends HTMLAttributes<HTMLElement> {
154
154
 
155
155
  declare const GalleryPhoto: react.ForwardRefExoticComponent<GalleryPhotoProps & react.RefAttributes<HTMLDivElement>>;
156
156
 
157
+ interface MarqueeImage {
158
+ src: string;
159
+ alt?: string | undefined;
160
+ }
161
+ interface ImageMarqueeProps {
162
+ /** Images to scroll. */
163
+ images: MarqueeImage[];
164
+ /** One full loop duration in seconds. */
165
+ durationSec?: number | undefined;
166
+ /** Gap between items, in pixels. */
167
+ gap?: number | undefined;
168
+ /** Fixed item width (px), paired with `alternatingHeights`. */
169
+ fixedWidth?: number | undefined;
170
+ /** Heights (px) cycled per image when `fixedWidth` is set, e.g. [400, 250]. */
171
+ alternatingHeights?: number[] | undefined;
172
+ /** First N slides render immediately; the rest mount when scrolled into view. */
173
+ eagerImageCount?: number | undefined;
174
+ className?: string | undefined;
175
+ }
176
+
177
+ /**
178
+ * Infinite horizontal marquee of images. The track duplicates the strip and
179
+ * translates -50% for a seamless loop; `prefers-reduced-motion` disables the
180
+ * animation (the strip becomes horizontally scrollable instead).
181
+ *
182
+ * Sizing: pass `fixedWidth` + `alternatingHeights` for a fixed-width cadence,
183
+ * otherwise a built-in repeating size pattern is used.
184
+ */
185
+ declare const ImageMarquee: {
186
+ ({ images, durationSec, gap, fixedWidth, alternatingHeights, eagerImageCount, className }: ImageMarqueeProps): react_jsx_runtime.JSX.Element | null;
187
+ displayName: string;
188
+ };
189
+
157
190
  interface LocationItem {
158
191
  location: string;
159
192
  address: string;
@@ -164,6 +197,21 @@ interface LocationCardProps extends HTMLAttributes<HTMLElement>, LocationItem {
164
197
 
165
198
  declare const LocationCard: react.ForwardRefExoticComponent<LocationCardProps & react.RefAttributes<HTMLElement>>;
166
199
 
200
+ interface LuxuryTripCardProps extends HTMLAttributes<HTMLElement> {
201
+ /** Background image URL. */
202
+ image: string;
203
+ /** Accessible description of the image. */
204
+ alt: string;
205
+ /** Trip title (rendered in the serif display font). */
206
+ title: string;
207
+ /** Optional duration label, e.g. "12N/13D". Shows a clock icon when set. */
208
+ duration?: string | undefined;
209
+ /** Render as an anchor to this URL. Without it, renders a non-link container. */
210
+ href?: string | undefined;
211
+ }
212
+
213
+ declare const LuxuryTripCard: react.ForwardRefExoticComponent<LuxuryTripCardProps & react.RefAttributes<HTMLElement>>;
214
+
167
215
  interface MonthTab {
168
216
  id: string;
169
217
  label: string;
@@ -539,6 +587,146 @@ interface HomeHeroProps extends HTMLAttributes<HTMLElement> {
539
587
 
540
588
  declare const HomeHero: react.ForwardRefExoticComponent<HomeHeroProps & react.RefAttributes<HTMLElement>>;
541
589
 
590
+ interface LuxuryCategoryNavItem {
591
+ /** Unique identifier for the tab. */
592
+ id: string;
593
+ /** Visible label (rendered uppercase). */
594
+ label: string;
595
+ }
596
+ interface LuxuryCategoryNavProps extends HTMLAttributes<HTMLElement> {
597
+ /** Tabs to render in order. When empty, the component renders nothing. */
598
+ items: LuxuryCategoryNavItem[];
599
+ /** Id of the tab active on first render. */
600
+ defaultActiveId?: string | undefined;
601
+ /** Called with the tab id whenever the active tab changes. */
602
+ onActiveChange?: ((id: string) => void) | undefined;
603
+ }
604
+
605
+ declare const LuxuryCategoryNav: {
606
+ ({ items, defaultActiveId, onActiveChange, className, ...rest }: LuxuryCategoryNavProps): react_jsx_runtime.JSX.Element | null;
607
+ displayName: string;
608
+ };
609
+
610
+ interface LuxuryDestinationSectionProps extends HTMLAttributes<HTMLElement> {
611
+ /** Small uppercase eyebrow label above the title. */
612
+ badge: string;
613
+ /** Section title, rendered in the serif display font. */
614
+ title: string;
615
+ /** Body copy. Split on `\n` — each line renders as its own paragraph. */
616
+ description?: string | undefined;
617
+ /** Still image shown in the hero frame (and used as the video poster fallback). */
618
+ heroImage?: {
619
+ src: string;
620
+ alt?: string | undefined;
621
+ } | undefined;
622
+ /** Looping background video for the hero frame. */
623
+ heroVideo?: {
624
+ src: string;
625
+ poster?: string | undefined;
626
+ } | undefined;
627
+ /** Luxury trip cards rendered in the horizontally scrolling row. */
628
+ trips: LuxuryTripCardProps[];
629
+ }
630
+
631
+ declare const LuxuryDestinationSection: react.ForwardRefExoticComponent<LuxuryDestinationSectionProps & react.RefAttributes<HTMLElement>>;
632
+
633
+ interface LuxuryHeroProps extends HTMLAttributes<HTMLElement> {
634
+ /** Background video source URL. */
635
+ videoSrc: string;
636
+ /** Poster image shown before the video loads. */
637
+ videoPoster: string;
638
+ /** MIME type of the video source. Defaults to "video/mp4". */
639
+ videoType?: string | undefined;
640
+ /** Main heading, rendered in the serif display font. Defaults to "WanderOn Experiences". */
641
+ title?: string | undefined;
642
+ /** First subline beneath the gold rule. */
643
+ subline1?: string | undefined;
644
+ /** Second subline beneath the first. */
645
+ subline2?: string | undefined;
646
+ /** CTA button label. Defaults to "Connect with Concierge". */
647
+ ctaLabel?: string | undefined;
648
+ /** Fired when the CTA button is clicked. */
649
+ onCtaClick?: (() => void) | undefined;
650
+ /** Logo link target. Defaults to "/". */
651
+ homeHref?: string | undefined;
652
+ /** Logo image URL. */
653
+ logoSrc?: string | undefined;
654
+ /** Whether to render the top logo. Defaults to true. */
655
+ showLogo?: boolean | undefined;
656
+ }
657
+
658
+ declare const LuxuryHero: react.ForwardRefExoticComponent<LuxuryHeroProps & react.RefAttributes<HTMLElement>>;
659
+
660
+ /** A single dial-code option for the country select. */
661
+ interface DialCodeOption {
662
+ /** E.164 dial code, e.g. "+91". */
663
+ code: string;
664
+ /** Human-readable label, e.g. "India (+91)". */
665
+ label: string;
666
+ }
667
+ interface LuxuryInquiryFormProps extends Omit<HTMLAttributes<HTMLElement>, 'onSubmit'> {
668
+ /**
669
+ * Called with the collected lead. `mobile` is the dial code concatenated with
670
+ * the local digits (e.g. "+9198…"). May be async; rejection surfaces a form error.
671
+ */
672
+ onSubmit: (data: {
673
+ name: string;
674
+ mobile: string;
675
+ }) => void | Promise<void>;
676
+ /** Heading text (rendered in the serif display font). */
677
+ title?: string | undefined;
678
+ /** Supporting line shown under the heading. */
679
+ subheading?: string | undefined;
680
+ /** Placeholder for the name field. */
681
+ namePlaceholder?: string | undefined;
682
+ /** Placeholder for the phone field. */
683
+ phonePlaceholder?: string | undefined;
684
+ /** Selectable dial codes. Defaults to a small India/USA/UK/UAE set. */
685
+ dialCodes?: DialCodeOption[] | undefined;
686
+ }
687
+
688
+ declare const LuxuryInquiryForm: {
689
+ ({ onSubmit, title, subheading, namePlaceholder, phonePlaceholder, dialCodes, className, ...rest }: LuxuryInquiryFormProps): react_jsx_runtime.JSX.Element;
690
+ displayName: string;
691
+ };
692
+
693
+ interface LuxuryIntroProps extends HTMLAttributes<HTMLElement> {
694
+ /** Pill label above the heading (uppercase, gold outline). */
695
+ badge?: string | undefined;
696
+ /** Section heading, rendered as an `<h2>` in the serif display font. */
697
+ heading: string;
698
+ /** Body paragraph beneath the heading. */
699
+ body: string;
700
+ }
701
+
702
+ declare const LuxuryIntro: react.ForwardRefExoticComponent<LuxuryIntroProps & react.RefAttributes<HTMLElement>>;
703
+
704
+ /** A single review entry in the testimonials row. */
705
+ interface LuxuryReview {
706
+ /** First (portrait) photo URL. */
707
+ image1: string;
708
+ /** Second (landscape) photo URL. */
709
+ image2: string;
710
+ /** The quote text (rendered in quotation marks). */
711
+ content: string;
712
+ /** Customer name shown beneath the quote. */
713
+ name: string;
714
+ /** Optional "continue reading" link target. */
715
+ link?: string | undefined;
716
+ }
717
+ interface LuxuryTestimonialsProps extends HTMLAttributes<HTMLElement> {
718
+ /** Reviews rendered as horizontally-scrolling cards. */
719
+ reviews: LuxuryReview[];
720
+ /** Serif title beneath the badge. */
721
+ heading?: string | undefined;
722
+ /** Pill label above the heading (uppercase, gold). */
723
+ badge?: string | undefined;
724
+ /** Clamp the quote text to this many lines. */
725
+ lineClamp?: number | undefined;
726
+ }
727
+
728
+ declare const LuxuryTestimonials: react.ForwardRefExoticComponent<LuxuryTestimonialsProps & react.RefAttributes<HTMLElement>>;
729
+
542
730
  interface NavLink {
543
731
  label: string;
544
732
  href: string;
@@ -720,6 +908,20 @@ declare const theme: {
720
908
  readonly contentWidth: "760px";
721
909
  readonly mobileBreakpoint: "768px";
722
910
  };
911
+ readonly luxury: {
912
+ readonly colors: {
913
+ readonly gold: "#C5A059";
914
+ readonly goldStrong: "#A68411";
915
+ readonly goldLight: "#F3E5AB";
916
+ readonly goldSoft: "#E8D5B7";
917
+ readonly heading: "#9A7B4F";
918
+ readonly ink: "#0C060E";
919
+ readonly inkCard: "#1A1A1A";
920
+ readonly onDark: "#FFFDF9";
921
+ readonly text: "#2C2C2C";
922
+ };
923
+ readonly font: "var(--font-luxury-family, \"Playfair Display\"), Georgia, serif";
924
+ };
723
925
  readonly colors: {
724
926
  readonly primary: "#01AFD1";
725
927
  readonly primaryHover: "#0089A6";
@@ -768,4 +970,4 @@ declare const theme: {
768
970
  };
769
971
  type Theme = typeof theme;
770
972
 
771
- export { BottomNav, type BottomNavItem, type BottomNavProps, type Brand, BrandLogo, type BrandLogoProps, BrandsSection, type BrandsSectionProps, CategoryNavbar, type CategoryNavbarProps, ContactForm, type ContactFormCountryCode, type ContactFormDestination, type ContactFormProps, type ContactFormValues, ContactSection, type ContactSectionProps, CtaBanner, type CtaBannerCta, type CtaBannerProps, DestinationCard, type DestinationCardProps, type DestinationItem, DestinationsSection, type DestinationsSectionProps, EventBanner, type EventBannerProps, EventCarousel, type EventCarouselImageItem, type EventCarouselProps, type EventCarouselVideoItem, EventVideoBanner, type EventVideoBannerProps, ExpandableValueCard, type ExpandableValueCardProps, ExploreCard, type ExploreCardProps, type ExploreItem, ExploreSection, type ExploreSectionProps, FaqExpandable, type FaqExpandableProps, type FaqItem, FaqSection, type FaqSectionProps, FeatureCard, type FeatureCardProps, Footer, type FooterColumn, type FooterContact, type FooterLink, type FooterProps, type FooterSocialLink, GalleryPhoto, type GalleryPhotoData, type GalleryPhotoProps, GallerySection, type GallerySectionProps, Hero, type HeroProps, type HeroReview, type HeroVariant, HomeHero, type HomeHeroProps, type HomeHeroReview, type HomeHeroTypewriterOptions, LocationCard, type LocationCardProps, type LocationItem, type MonthTab, MonthTabs, type MonthTabsProps, type NavCategory, type NavCategoryItem, type NavLink, Navbar, type NavbarProps, OfficesSection, type OfficesSectionProps, PackageCard, type PackageCardProps, type PackageItem, PackagesCarousel, type PackagesCarouselProps, SectionHeader, type SectionHeaderAlign, type SectionHeaderProps, SiteHeader, type SiteHeaderProps, TeamInfoCard, type TeamInfoCardProps, type TeamMember, TeamSection, type TeamSectionProps, type TeamSocialLink, TestimonialCard, type TestimonialCardProps, type TestimonialItem, TestimonialsCarousel, type TestimonialsCarouselProps, TextSection, type TextSectionAlign, type TextSectionProps, type Theme, TripCategoryCard, type TripCategoryCardProps, type TripsCategoryItem, TripsCategorySection, type TripsCategorySectionCta, type TripsCategorySectionProps, UctMobileBanner, type UctMobileBannerProps, type ValueItem, ValuesSection, type ValuesSectionProps, type Warrior, WarriorCard, type WarriorCardProps, WarriorsSection, type WarriorsSectionProps, type WhyChooseFeature, WhyChooseSection, type WhyChooseSectionProps, theme };
973
+ export { BottomNav, type BottomNavItem, type BottomNavProps, type Brand, BrandLogo, type BrandLogoProps, BrandsSection, type BrandsSectionProps, CategoryNavbar, type CategoryNavbarProps, ContactForm, type ContactFormCountryCode, type ContactFormDestination, type ContactFormProps, type ContactFormValues, ContactSection, type ContactSectionProps, CtaBanner, type CtaBannerCta, type CtaBannerProps, DestinationCard, type DestinationCardProps, type DestinationItem, DestinationsSection, type DestinationsSectionProps, type DialCodeOption, EventBanner, type EventBannerProps, EventCarousel, type EventCarouselImageItem, type EventCarouselProps, type EventCarouselVideoItem, EventVideoBanner, type EventVideoBannerProps, ExpandableValueCard, type ExpandableValueCardProps, ExploreCard, type ExploreCardProps, type ExploreItem, ExploreSection, type ExploreSectionProps, FaqExpandable, type FaqExpandableProps, type FaqItem, FaqSection, type FaqSectionProps, FeatureCard, type FeatureCardProps, Footer, type FooterColumn, type FooterContact, type FooterLink, type FooterProps, type FooterSocialLink, GalleryPhoto, type GalleryPhotoData, type GalleryPhotoProps, GallerySection, type GallerySectionProps, Hero, type HeroProps, type HeroReview, type HeroVariant, HomeHero, type HomeHeroProps, type HomeHeroReview, type HomeHeroTypewriterOptions, ImageMarquee, type ImageMarqueeProps, LocationCard, type LocationCardProps, type LocationItem, LuxuryCategoryNav, type LuxuryCategoryNavItem, type LuxuryCategoryNavProps, LuxuryDestinationSection, type LuxuryDestinationSectionProps, LuxuryHero, type LuxuryHeroProps, LuxuryInquiryForm, type LuxuryInquiryFormProps, LuxuryIntro, type LuxuryIntroProps, type LuxuryReview, LuxuryTestimonials, type LuxuryTestimonialsProps, LuxuryTripCard, type LuxuryTripCardProps, type MarqueeImage, type MonthTab, MonthTabs, type MonthTabsProps, type NavCategory, type NavCategoryItem, type NavLink, Navbar, type NavbarProps, OfficesSection, type OfficesSectionProps, PackageCard, type PackageCardProps, type PackageItem, PackagesCarousel, type PackagesCarouselProps, SectionHeader, type SectionHeaderAlign, type SectionHeaderProps, SiteHeader, type SiteHeaderProps, TeamInfoCard, type TeamInfoCardProps, type TeamMember, TeamSection, type TeamSectionProps, type TeamSocialLink, TestimonialCard, type TestimonialCardProps, type TestimonialItem, TestimonialsCarousel, type TestimonialsCarouselProps, TextSection, type TextSectionAlign, type TextSectionProps, type Theme, TripCategoryCard, type TripCategoryCardProps, type TripsCategoryItem, TripsCategorySection, type TripsCategorySectionCta, type TripsCategorySectionProps, UctMobileBanner, type UctMobileBannerProps, type ValueItem, ValuesSection, type ValuesSectionProps, type Warrior, WarriorCard, type WarriorCardProps, WarriorsSection, type WarriorsSectionProps, type WhyChooseFeature, WhyChooseSection, type WhyChooseSectionProps, theme };