stackable-components 1.0.0
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/README.md +295 -0
- package/dist/components/ArticleDetailsPage/ArticleDetails.d.ts +10 -0
- package/dist/components/ArticleDetailsPage/index.d.ts +1 -0
- package/dist/components/ArticleListingPage/ArticleListing.d.ts +26 -0
- package/dist/components/ArticleListingPage/index.d.ts +1 -0
- package/dist/components/Auth/AuthSplitScreen.d.ts +73 -0
- package/dist/components/Auth/index.d.ts +2 -0
- package/dist/components/Awards/AwardsSection.d.ts +53 -0
- package/dist/components/Awards/index.d.ts +2 -0
- package/dist/components/Banner/Banner.d.ts +32 -0
- package/dist/components/Banner/BannerCallout.d.ts +19 -0
- package/dist/components/Banner/BannerFullWidth.d.ts +22 -0
- package/dist/components/Banner/BannerLight.d.ts +31 -0
- package/dist/components/Banner/CommunityBanner.d.ts +33 -0
- package/dist/components/Banner/CookieConsentBanner.d.ts +40 -0
- package/dist/components/Banner/CountdownBanner.d.ts +27 -0
- package/dist/components/Banner/PromoBanner.d.ts +50 -0
- package/dist/components/Banner/index.d.ts +14 -0
- package/dist/components/Button/PrimaryButton.d.ts +32 -0
- package/dist/components/Button/ToggleSwitch.d.ts +24 -0
- package/dist/components/Button/index.d.ts +3 -0
- package/dist/components/Cards/CardAccordion.d.ts +38 -0
- package/dist/components/Cards/FeatureCard.d.ts +11 -0
- package/dist/components/Cards/FlipCard.d.ts +37 -0
- package/dist/components/Cards/ProfileCard.d.ts +39 -0
- package/dist/components/Cards/ResourceCard.d.ts +29 -0
- package/dist/components/Cards/index.d.ts +9 -0
- package/dist/components/Carousels/CircleImageCarousel.d.ts +19 -0
- package/dist/components/Carousels/GalleryCarousel.d.ts +75 -0
- package/dist/components/Carousels/ImageVideoCarousel.d.ts +24 -0
- package/dist/components/Carousels/VerticalProductCarousel.d.ts +40 -0
- package/dist/components/Carousels/index.d.ts +7 -0
- package/dist/components/EmptyState/EmptyState.d.ts +21 -0
- package/dist/components/EmptyState/index.d.ts +2 -0
- package/dist/components/FAQ/FAQ.d.ts +23 -0
- package/dist/components/FAQ/FaqCategorized.d.ts +35 -0
- package/dist/components/FAQ/index.d.ts +4 -0
- package/dist/components/FeatureBenefit/FeatureBenefit.d.ts +20 -0
- package/dist/components/FeatureBenefit/FeatureBenefitDark.d.ts +18 -0
- package/dist/components/FeatureBenefit/FeatureBenefitRenderer.d.ts +26 -0
- package/dist/components/FeatureBenefit/FeatureBenefitStrip.d.ts +15 -0
- package/dist/components/FeatureBenefit/FeatureBenefitWithImage.d.ts +27 -0
- package/dist/components/FeatureBenefit/StandardBenefit.d.ts +29 -0
- package/dist/components/FeatureBenefit/index.d.ts +12 -0
- package/dist/components/FeatureComparison/FeatureComparisonCards.d.ts +27 -0
- package/dist/components/FeatureComparison/FeatureComparisonTable.d.ts +35 -0
- package/dist/components/FeatureComparison/FeatureComparisonVs.d.ts +35 -0
- package/dist/components/FeatureComparison/index.d.ts +6 -0
- package/dist/components/FeatureShowcase/StickyCardStack.d.ts +36 -0
- package/dist/components/FeatureShowcase/StickyScrollFeature.d.ts +27 -0
- package/dist/components/FeatureShowcase/index.d.ts +2 -0
- package/dist/components/Footers/FooterMultiColumn.d.ts +23 -0
- package/dist/components/Footers/FooterSimple.d.ts +18 -0
- package/dist/components/Footers/index.d.ts +2 -0
- package/dist/components/Forms/ContactForm.d.ts +8 -0
- package/dist/components/Forms/ContactFormSplit.d.ts +53 -0
- package/dist/components/Forms/NewsletterSignup.d.ts +35 -0
- package/dist/components/Forms/index.d.ts +4 -0
- package/dist/components/Grids/BentoGrid.d.ts +34 -0
- package/dist/components/Grids/CategoryGrid.d.ts +53 -0
- package/dist/components/Grids/FlipCardGrid.d.ts +64 -0
- package/dist/components/Grids/HexTileGrid.d.ts +39 -0
- package/dist/components/Grids/IndexSection.d.ts +37 -0
- package/dist/components/Grids/index.d.ts +10 -0
- package/dist/components/HeroBanners/HeroBanner.d.ts +35 -0
- package/dist/components/HeroBanners/HeroBannerClassic.d.ts +79 -0
- package/dist/components/HeroBanners/SplitHeroBanner.d.ts +29 -0
- package/dist/components/HeroBanners/SpotlightHero.d.ts +30 -0
- package/dist/components/HeroBanners/VideoDemoHero.d.ts +33 -0
- package/dist/components/HeroBanners/index.d.ts +8 -0
- package/dist/components/ImageGrid/ImageGrid.d.ts +25 -0
- package/dist/components/ImageGrid/ImageGridDynamic.d.ts +18 -0
- package/dist/components/ImageGrid/index.d.ts +2 -0
- package/dist/components/LogoCloud/LogoCloud.d.ts +33 -0
- package/dist/components/LogoCloud/index.d.ts +2 -0
- package/dist/components/Navigation/BreadcrumbNavigation.d.ts +34 -0
- package/dist/components/Navigation/ExtendedNavigation.d.ts +31 -0
- package/dist/components/Navigation/FloatingDock.d.ts +45 -0
- package/dist/components/Navigation/NavigationBar.d.ts +13 -0
- package/dist/components/Navigation/Sidebar.d.ts +29 -0
- package/dist/components/Navigation/index.d.ts +8 -0
- package/dist/components/PDP/ProductDetails.d.ts +43 -0
- package/dist/components/PDP/index.d.ts +1 -0
- package/dist/components/PLP/ProductListing.d.ts +15 -0
- package/dist/components/PLP/index.d.ts +1 -0
- package/dist/components/Pricing/Pricing.d.ts +48 -0
- package/dist/components/Pricing/PricingSpreadCard.d.ts +32 -0
- package/dist/components/Pricing/index.d.ts +4 -0
- package/dist/components/Process/ProcessStep.d.ts +51 -0
- package/dist/components/Process/index.d.ts +2 -0
- package/dist/components/ProductCard/DarkCard.d.ts +31 -0
- package/dist/components/ProductCard/LargeCard.d.ts +11 -0
- package/dist/components/ProductCard/ProductBanner.d.ts +28 -0
- package/dist/components/ProductCard/index.d.ts +61 -0
- package/dist/components/SectionIntroduction/SectionIntroduction.d.ts +27 -0
- package/dist/components/SectionIntroduction/SectionIntroductionTwoColumn.d.ts +18 -0
- package/dist/components/SectionIntroduction/index.d.ts +4 -0
- package/dist/components/Sidebar/Sidebar.d.ts +26 -0
- package/dist/components/Sidebar/index.d.ts +2 -0
- package/dist/components/Sliders/ProductSlider.d.ts +23 -0
- package/dist/components/Sliders/index.d.ts +2 -0
- package/dist/components/Social/SocialLinks.d.ts +36 -0
- package/dist/components/Social/SocialPostEmbed.d.ts +34 -0
- package/dist/components/Social/index.d.ts +4 -0
- package/dist/components/Statistics/StatCounterRow.d.ts +34 -0
- package/dist/components/Statistics/index.d.ts +2 -0
- package/dist/components/Tabs/Tabs.d.ts +35 -0
- package/dist/components/Tabs/index.d.ts +2 -0
- package/dist/components/Team/TeamBanner.d.ts +32 -0
- package/dist/components/Team/index.d.ts +2 -0
- package/dist/components/Testimonial/CardStack.d.ts +31 -0
- package/dist/components/Testimonial/RatingSummary.d.ts +20 -0
- package/dist/components/Testimonial/Reviews.d.ts +55 -0
- package/dist/components/Testimonial/Testimonial.d.ts +29 -0
- package/dist/components/Testimonial/index.d.ts +8 -0
- package/dist/components/TextCTASection/JustifiedTextCTA.d.ts +11 -0
- package/dist/components/TextCTASection/TextCTA.d.ts +25 -0
- package/dist/components/TextCTASection/index.d.ts +1 -0
- package/dist/components/Timeline/TimelineColumn.d.ts +23 -0
- package/dist/components/Timeline/TimelineHorizontal.d.ts +28 -0
- package/dist/components/Timeline/TimelineYearBlocks.d.ts +55 -0
- package/dist/components/Timeline/VerticalTimeline.d.ts +21 -0
- package/dist/components/Timeline/index.d.ts +8 -0
- package/dist/components/Typography/Typography.d.ts +14 -0
- package/dist/components/Typography/index.d.ts +2 -0
- package/dist/components/VideoSection/VideoSection.d.ts +38 -0
- package/dist/components/VideoSection/index.d.ts +2 -0
- package/dist/index.d.ts +153 -0
- package/dist/index.esm.js +14074 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/index.js +14168 -0
- package/dist/index.js.map +1 -0
- package/dist/styles.css +5901 -0
- package/dist/theme/ThemeProvider.d.ts +13 -0
- package/dist/theme/index.d.ts +2 -0
- package/dist/theme/themeConfig.d.ts +8 -0
- package/dist/types.d.ts +60 -0
- package/dist/utils/index.d.ts +10 -0
- package/package.json +62 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { StackableColorValue } from '../../types';
|
|
3
|
+
export interface CountdownBannerCtaButton {
|
|
4
|
+
title?: string;
|
|
5
|
+
href?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface CountdownBannerProps {
|
|
8
|
+
heading?: string;
|
|
9
|
+
description?: string;
|
|
10
|
+
/** ISO datetime the countdown ticks down to. */
|
|
11
|
+
target_date_time?: string;
|
|
12
|
+
cta_button?: CountdownBannerCtaButton;
|
|
13
|
+
expiry_behavior?: 'hide' | 'show_message' | string;
|
|
14
|
+
/** Shown in place of `description` once `target_date_time` has passed, when `expiry_behavior` is `show_message`. */
|
|
15
|
+
expiry_message?: string;
|
|
16
|
+
/** Shows a manual close (X) button that hides the banner for the rest of the session. */
|
|
17
|
+
dismissible?: boolean;
|
|
18
|
+
/** Flips each number tile when its value ticks over. Off for anyone with `prefers-reduced-motion`. */
|
|
19
|
+
animate_flip?: boolean;
|
|
20
|
+
background_color?: StackableColorValue;
|
|
21
|
+
text_color?: StackableColorValue;
|
|
22
|
+
button_color?: StackableColorValue;
|
|
23
|
+
button_text_color?: StackableColorValue;
|
|
24
|
+
className?: string;
|
|
25
|
+
}
|
|
26
|
+
export declare function CountdownBanner({ heading, description, target_date_time, cta_button, expiry_behavior, expiry_message, dismissible, animate_flip, background_color, text_color, button_color, button_text_color, className, }: CountdownBannerProps): React.JSX.Element | null;
|
|
27
|
+
export default CountdownBanner;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { StackableColorValue } from '../../types';
|
|
3
|
+
/** Native Contentstack link field: `{ title, href }`. */
|
|
4
|
+
export interface PromoBannerLink {
|
|
5
|
+
title?: string;
|
|
6
|
+
href?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface PromoBannerSlide {
|
|
9
|
+
/** Small uppercase line above the heading, e.g. `NEW ARRIVAL`. */
|
|
10
|
+
eyebrow_text?: string;
|
|
11
|
+
heading?: string;
|
|
12
|
+
/** Supporting copy. Line breaks are kept. */
|
|
13
|
+
description?: string;
|
|
14
|
+
/** Text for the arrow link. Falls back to the link's own title. */
|
|
15
|
+
cta_label?: string;
|
|
16
|
+
cta_link?: PromoBannerLink;
|
|
17
|
+
/**
|
|
18
|
+
* Asset URL or a Contentstack asset object — both are accepted, since a file
|
|
19
|
+
* field arrives as a URL from the catalog but as `{ url, … }` from the
|
|
20
|
+
* Delivery API.
|
|
21
|
+
*/
|
|
22
|
+
image?: string | {
|
|
23
|
+
url?: string;
|
|
24
|
+
};
|
|
25
|
+
image_alt?: string;
|
|
26
|
+
/** Panel colour for this slide. Empty falls back to the rotating palette. */
|
|
27
|
+
background_color?: StackableColorValue;
|
|
28
|
+
}
|
|
29
|
+
export interface PromoBannerProps {
|
|
30
|
+
slides?: PromoBannerSlide[];
|
|
31
|
+
/** Small glyph before the eyebrow text. */
|
|
32
|
+
show_eyebrow_icon?: boolean;
|
|
33
|
+
/** Which side the image panel sits on. */
|
|
34
|
+
media_position?: 'Right' | 'Left' | string;
|
|
35
|
+
/** Strip height. These are deliberately short — this is a banner, not a hero. */
|
|
36
|
+
banner_height?: 'Short' | 'Medium' | 'Tall' | string;
|
|
37
|
+
corner_style?: 'Rounded' | 'Square' | string;
|
|
38
|
+
show_arrows?: boolean;
|
|
39
|
+
show_dots?: boolean;
|
|
40
|
+
/** Advances on a timer. Ignored when the visitor prefers reduced motion. */
|
|
41
|
+
autoplay?: boolean;
|
|
42
|
+
autoplay_seconds?: number;
|
|
43
|
+
/** The area behind the card. */
|
|
44
|
+
background_color?: StackableColorValue;
|
|
45
|
+
/** Copy on the panel, and the arrow controls. */
|
|
46
|
+
text_color?: StackableColorValue;
|
|
47
|
+
className?: string;
|
|
48
|
+
}
|
|
49
|
+
export declare function PromoBanner({ slides, show_eyebrow_icon, media_position, banner_height, corner_style, show_arrows, show_dots, autoplay, autoplay_seconds, background_color, text_color, className, }: PromoBannerProps): React.JSX.Element;
|
|
50
|
+
export default PromoBanner;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export { Banner } from './Banner';
|
|
2
|
+
export type { BannerProps, BannerCtaButton, BannerReference } from './Banner';
|
|
3
|
+
export { BannerLight } from './BannerLight';
|
|
4
|
+
export type { BannerLightProps, BannerLightCtaButton, BannerLightReference } from './BannerLight';
|
|
5
|
+
export { BannerCallout } from './BannerCallout';
|
|
6
|
+
export type { BannerCalloutProps, BannerCalloutCtaButton } from './BannerCallout';
|
|
7
|
+
export { CommunityBanner } from './CommunityBanner';
|
|
8
|
+
export type { CommunityBannerProps, CommunityBannerAvatar, CommunityBannerCtaButton } from './CommunityBanner';
|
|
9
|
+
export { CountdownBanner } from './CountdownBanner';
|
|
10
|
+
export type { CountdownBannerProps, CountdownBannerCtaButton } from './CountdownBanner';
|
|
11
|
+
export { CookieConsentBanner } from './CookieConsentBanner';
|
|
12
|
+
export type { CookieConsentBannerProps, CookieConsentBannerLink } from './CookieConsentBanner';
|
|
13
|
+
export { PromoBanner } from './PromoBanner';
|
|
14
|
+
export type { PromoBannerProps, PromoBannerSlide, PromoBannerLink } from './PromoBanner';
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { StackableColorValue } from '../../types';
|
|
3
|
+
export interface PrimaryButtonProps {
|
|
4
|
+
title?: string;
|
|
5
|
+
url?: string;
|
|
6
|
+
open_in_new_tab?: boolean;
|
|
7
|
+
disable_?: boolean;
|
|
8
|
+
/**
|
|
9
|
+
* `Rounded` is a filled pill, `Box` an outlined rectangle, `Link` plain text.
|
|
10
|
+
* All three take their colour from the same two fields, so a brand only has
|
|
11
|
+
* to be set once.
|
|
12
|
+
*/
|
|
13
|
+
variant?: 'Rounded' | 'Box' | 'Link' | string;
|
|
14
|
+
enable_icon_?: boolean;
|
|
15
|
+
icon_alignment?: 'left' | 'right' | string;
|
|
16
|
+
/**
|
|
17
|
+
* The brand colour: the fill on `Rounded`, the border and text on `Box`, the
|
|
18
|
+
* text on `Link`. Defaults to `DEFAULT_BRAND` so the button is never unstyled.
|
|
19
|
+
*/
|
|
20
|
+
background_color?: StackableColorValue;
|
|
21
|
+
/** Label colour on `Rounded`. Ignored by `Box` and `Link`, which use the brand. */
|
|
22
|
+
text_color?: StackableColorValue;
|
|
23
|
+
className?: string;
|
|
24
|
+
/**
|
|
25
|
+
* @deprecated Accepted and ignored. There is one button size now; this only
|
|
26
|
+
* remains so existing call sites keep compiling. It is not in the content
|
|
27
|
+
* model, so no editor can reach it.
|
|
28
|
+
*/
|
|
29
|
+
size?: string;
|
|
30
|
+
}
|
|
31
|
+
export declare function PrimaryButton({ title, url, open_in_new_tab, disable_, variant, enable_icon_, icon_alignment, background_color, text_color, className, }: PrimaryButtonProps): React.JSX.Element;
|
|
32
|
+
export default PrimaryButton;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { StackableColorValue } from '../../types';
|
|
3
|
+
export interface ToggleSwitchProps {
|
|
4
|
+
on_label?: string;
|
|
5
|
+
off_label?: string;
|
|
6
|
+
/** Initial state; editors can preview either side from the controls panel. */
|
|
7
|
+
default_on?: boolean;
|
|
8
|
+
/**
|
|
9
|
+
* `Knob` slides a pill-shaped handle between the two labels.
|
|
10
|
+
* `Label` keeps a plain pill that just shows the current state.
|
|
11
|
+
*/
|
|
12
|
+
variant?: 'Knob' | 'Label' | string;
|
|
13
|
+
/** Accessible name, since the visible labels are the two states. */
|
|
14
|
+
aria_label?: string;
|
|
15
|
+
/** Track fill. Defaults to `DEFAULT_TRACK` so the switch is never unstyled. */
|
|
16
|
+
background_color?: StackableColorValue;
|
|
17
|
+
/** Colour of the label sitting on the track. */
|
|
18
|
+
text_color?: StackableColorValue;
|
|
19
|
+
/** Knob fill. The knob's own label is derived from this, so it stays legible. */
|
|
20
|
+
accent_color?: StackableColorValue;
|
|
21
|
+
className?: string;
|
|
22
|
+
}
|
|
23
|
+
export declare function ToggleSwitch({ on_label, off_label, default_on, variant, aria_label, background_color, text_color, accent_color, className, }: ToggleSwitchProps): React.JSX.Element;
|
|
24
|
+
export default ToggleSwitch;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { StackableColorValue } from '../../types';
|
|
3
|
+
export interface CardAccordionLink {
|
|
4
|
+
title?: string;
|
|
5
|
+
href?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface CardAccordionItem {
|
|
8
|
+
/** Top-left pill, e.g. "Skincare". */
|
|
9
|
+
tag?: string;
|
|
10
|
+
/** Shown only while this card is the expanded one. */
|
|
11
|
+
image?: string | {
|
|
12
|
+
url?: string;
|
|
13
|
+
};
|
|
14
|
+
image_alt?: string;
|
|
15
|
+
/** Body copy, shown only while this card is the expanded one. */
|
|
16
|
+
heading?: string;
|
|
17
|
+
/** Bottom-left label — always visible, expanded or collapsed. */
|
|
18
|
+
caption?: string;
|
|
19
|
+
/** The arrow button's destination; `title` becomes its accessible label. */
|
|
20
|
+
link?: CardAccordionLink;
|
|
21
|
+
/** Collapsed-state surface colour for this card. Ignored while expanded, where
|
|
22
|
+
* the image takes over (or, with no image, this colour shows through instead). */
|
|
23
|
+
card_color?: StackableColorValue;
|
|
24
|
+
text_color?: StackableColorValue;
|
|
25
|
+
}
|
|
26
|
+
export interface CardAccordionProps {
|
|
27
|
+
heading?: string;
|
|
28
|
+
description?: string;
|
|
29
|
+
/** Up to three — a fourth would leave collapsed panels too narrow to read. */
|
|
30
|
+
items?: CardAccordionItem[];
|
|
31
|
+
background_color?: StackableColorValue;
|
|
32
|
+
text_color?: StackableColorValue;
|
|
33
|
+
/** The arrow button's icon and background tint. */
|
|
34
|
+
accent_color?: StackableColorValue;
|
|
35
|
+
className?: string;
|
|
36
|
+
}
|
|
37
|
+
export declare function CardAccordion({ heading, description, items, background_color, text_color, accent_color, className, }: CardAccordionProps): React.JSX.Element | null;
|
|
38
|
+
export default CardAccordion;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface FeatureCardProps {
|
|
3
|
+
title?: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
icon?: string;
|
|
6
|
+
image_aspect_ratio?: '1:1' | '4:3' | '16:9' | '3:2' | '21:9' | string;
|
|
7
|
+
text_alignment?: 'left' | 'center' | 'right' | string;
|
|
8
|
+
className?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function FeatureCard({ title, description, icon, image_aspect_ratio, text_alignment, className, }: FeatureCardProps): React.JSX.Element;
|
|
11
|
+
export default FeatureCard;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { StackableColorValue } from '../../types';
|
|
3
|
+
export interface FlipCardLink {
|
|
4
|
+
title?: string;
|
|
5
|
+
href?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface FlipCardImage {
|
|
8
|
+
file?: string | {
|
|
9
|
+
url?: string;
|
|
10
|
+
};
|
|
11
|
+
alt_text?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface FlipCardProps {
|
|
14
|
+
/** Shown on the front. */
|
|
15
|
+
image?: FlipCardImage;
|
|
16
|
+
/** Shown on both the front and the back — a name, a feature title, a plan name,
|
|
17
|
+
* whatever this card is actually about. */
|
|
18
|
+
heading?: string;
|
|
19
|
+
/** Shown on the front only, under Heading — a role, a tag, a short label. */
|
|
20
|
+
subheading?: string;
|
|
21
|
+
/** Shown on the back only, once flipped — a bio, an explanation, more detail. */
|
|
22
|
+
description?: string;
|
|
23
|
+
/** Shown on the back only, once flipped. */
|
|
24
|
+
link?: FlipCardLink;
|
|
25
|
+
/** `hover` flips on mouse-over (click/keyboard still work as a touch fallback);
|
|
26
|
+
* `click` only flips on click/Enter/Space. */
|
|
27
|
+
flip_trigger?: 'hover' | 'click' | string;
|
|
28
|
+
/** Used on both the front and the back, so the flip reads as one object turning
|
|
29
|
+
* over rather than two differently-coloured cards. */
|
|
30
|
+
background_color?: StackableColorValue;
|
|
31
|
+
text_color?: StackableColorValue;
|
|
32
|
+
/** The flip icon and the back-card link. */
|
|
33
|
+
accent_color?: StackableColorValue;
|
|
34
|
+
className?: string;
|
|
35
|
+
}
|
|
36
|
+
export declare function FlipCard({ image, heading, subheading, description, link, flip_trigger, background_color, text_color, accent_color, className, }: FlipCardProps): React.JSX.Element | null;
|
|
37
|
+
export default FlipCard;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { StackableColorValue } from '../../types';
|
|
3
|
+
/** Curated icon set — keeps stats consistent without editors uploading SVGs. */
|
|
4
|
+
declare const STAT_ICONS: Record<string, React.ComponentType<{
|
|
5
|
+
className?: string;
|
|
6
|
+
}>>;
|
|
7
|
+
export interface ProfileCardStat {
|
|
8
|
+
icon?: keyof typeof STAT_ICONS | string;
|
|
9
|
+
value?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface ProfileCardProps {
|
|
12
|
+
name?: string;
|
|
13
|
+
verified?: boolean;
|
|
14
|
+
bio?: string;
|
|
15
|
+
/** Asset URL, or a Contentstack asset object — both are accepted. */
|
|
16
|
+
profile_image?: string | {
|
|
17
|
+
url?: string;
|
|
18
|
+
};
|
|
19
|
+
image_alt?: string;
|
|
20
|
+
image_aspect_ratio?: 'Square' | 'Portrait' | 'Landscape' | string;
|
|
21
|
+
image_fit?: 'Cover' | 'Contain' | string;
|
|
22
|
+
/** Fades the photo into the card body instead of a hard edge. */
|
|
23
|
+
image_fade?: boolean;
|
|
24
|
+
/** Where the name links to. */
|
|
25
|
+
href?: string;
|
|
26
|
+
stats?: ProfileCardStat[];
|
|
27
|
+
cta_label?: string;
|
|
28
|
+
/** Label once the follow button is toggled on. */
|
|
29
|
+
cta_label_active?: string;
|
|
30
|
+
cta_url?: string;
|
|
31
|
+
button_style?: 'Light' | 'Dark' | string;
|
|
32
|
+
background_color?: StackableColorValue;
|
|
33
|
+
text_color?: StackableColorValue;
|
|
34
|
+
/** Verified badge fill. */
|
|
35
|
+
accent_color?: StackableColorValue;
|
|
36
|
+
className?: string;
|
|
37
|
+
}
|
|
38
|
+
export declare function ProfileCard({ name, verified, bio, profile_image, image_alt, image_aspect_ratio, image_fit, image_fade, href, stats, cta_label, cta_label_active, cta_url, button_style, background_color, text_color, accent_color, className, }: ProfileCardProps): React.JSX.Element;
|
|
39
|
+
export default ProfileCard;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { StackableColorValue } from '../../types';
|
|
3
|
+
export interface ResourceCardItem {
|
|
4
|
+
/** Asset URL, or a Contentstack asset object — both are accepted. */
|
|
5
|
+
image?: string | {
|
|
6
|
+
url?: string;
|
|
7
|
+
};
|
|
8
|
+
tag?: string;
|
|
9
|
+
title?: string;
|
|
10
|
+
description?: string;
|
|
11
|
+
url?: string;
|
|
12
|
+
card_background_color?: StackableColorValue;
|
|
13
|
+
card_text_color?: StackableColorValue;
|
|
14
|
+
}
|
|
15
|
+
export interface ResourceCardSectionProps {
|
|
16
|
+
heading?: string;
|
|
17
|
+
subheading?: string;
|
|
18
|
+
heading_alignment?: 'left' | 'center' | 'right' | string;
|
|
19
|
+
item_alignment?: 'left' | 'center' | 'right' | string;
|
|
20
|
+
cards_per_row?: 1 | 2 | 3 | number | string;
|
|
21
|
+
view_all_label?: string;
|
|
22
|
+
view_all_url?: string;
|
|
23
|
+
background_color?: StackableColorValue;
|
|
24
|
+
heading_text_color?: StackableColorValue;
|
|
25
|
+
items?: ResourceCardItem[];
|
|
26
|
+
className?: string;
|
|
27
|
+
}
|
|
28
|
+
export declare function ResourceCard({ heading, subheading, heading_alignment, item_alignment, cards_per_row, view_all_label, view_all_url, background_color, heading_text_color, items: itemsProp, className, }: ResourceCardSectionProps): React.JSX.Element;
|
|
29
|
+
export default ResourceCard;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { FeatureCard } from './FeatureCard';
|
|
2
|
+
export { ResourceCard } from './ResourceCard';
|
|
3
|
+
export type { ResourceCardSectionProps, ResourceCardItem } from './ResourceCard';
|
|
4
|
+
export { ProfileCard } from './ProfileCard';
|
|
5
|
+
export type { ProfileCardProps, ProfileCardStat } from './ProfileCard';
|
|
6
|
+
export { FlipCard } from './FlipCard';
|
|
7
|
+
export type { FlipCardProps, FlipCardLink, FlipCardImage } from './FlipCard';
|
|
8
|
+
export { CardAccordion } from './CardAccordion';
|
|
9
|
+
export type { CardAccordionProps, CardAccordionItem, CardAccordionLink } from './CardAccordion';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface CircleCarouselItem {
|
|
3
|
+
image?: {
|
|
4
|
+
url?: string;
|
|
5
|
+
title?: string;
|
|
6
|
+
} | string;
|
|
7
|
+
title?: string;
|
|
8
|
+
link?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface CircleImageCarouselProps {
|
|
11
|
+
className?: string;
|
|
12
|
+
heading?: string;
|
|
13
|
+
subheading?: string;
|
|
14
|
+
heading_alignment?: 'left' | 'center' | 'right';
|
|
15
|
+
navigation?: 'arrows' | 'scrollbar' | 'dots';
|
|
16
|
+
items?: CircleCarouselItem[];
|
|
17
|
+
}
|
|
18
|
+
export declare function CircleImageCarousel({ className, heading, subheading, heading_alignment, navigation, items, }: CircleImageCarouselProps): React.JSX.Element;
|
|
19
|
+
export default CircleImageCarousel;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { StackableColorValue } from '../../types';
|
|
3
|
+
/** Native Contentstack link field: `{ title, href }`. */
|
|
4
|
+
export interface GalleryCarouselLink {
|
|
5
|
+
title?: string;
|
|
6
|
+
href?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface GalleryCarouselSlide {
|
|
9
|
+
/** Asset URL, or a Contentstack asset object — both are accepted. */
|
|
10
|
+
image?: string | {
|
|
11
|
+
url?: string;
|
|
12
|
+
};
|
|
13
|
+
image_alt?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Headline over the slide. Named `slide_title` rather than `title` because a
|
|
16
|
+
* group subfield with that uid collides with the content type's mandatory
|
|
17
|
+
* Title field on import; props map 1:1 onto field uids.
|
|
18
|
+
*/
|
|
19
|
+
slide_title?: string;
|
|
20
|
+
/** Supporting line under the title. */
|
|
21
|
+
caption?: string;
|
|
22
|
+
/** Small line under the caption — a place, a date, a credit. */
|
|
23
|
+
meta?: string;
|
|
24
|
+
/**
|
|
25
|
+
* Groups the slide under a filter chip. Chips are built from the distinct
|
|
26
|
+
* values found here, so a chip can never point at an empty set.
|
|
27
|
+
*/
|
|
28
|
+
category?: string;
|
|
29
|
+
/** Present means the slide is a video: it shows a play badge and plays in place.
|
|
30
|
+
* Asset URL, or a Contentstack asset object — both are accepted. */
|
|
31
|
+
video_url?: string | {
|
|
32
|
+
url?: string;
|
|
33
|
+
};
|
|
34
|
+
link?: GalleryCarouselLink;
|
|
35
|
+
}
|
|
36
|
+
export interface GalleryCarouselProps {
|
|
37
|
+
eyebrow_text?: string;
|
|
38
|
+
heading?: string;
|
|
39
|
+
subheading?: string;
|
|
40
|
+
heading_alignment?: 'left' | 'center' | 'right' | string;
|
|
41
|
+
heading_font?: 'Sans' | 'Serif' | 'Display' | string;
|
|
42
|
+
/** Face for the text overlaid on each slide. */
|
|
43
|
+
caption_font?: 'Sans' | 'Serif' | 'Display' | string;
|
|
44
|
+
/** Shows each slide's category as a pill in its top corner. */
|
|
45
|
+
show_category_badge?: boolean;
|
|
46
|
+
slides?: GalleryCarouselSlide[];
|
|
47
|
+
/** Slides either side of the focused one. 2 gives the five-across look. */
|
|
48
|
+
visible_neighbours?: number;
|
|
49
|
+
/** How much each step away from centre shrinks a slide, as a percentage. */
|
|
50
|
+
scale_falloff?: number;
|
|
51
|
+
slide_aspect_ratio?: 'Portrait' | 'Square' | 'Landscape' | string;
|
|
52
|
+
show_filters?: boolean;
|
|
53
|
+
/** Chip shown first, before the derived category chips. */
|
|
54
|
+
all_filter_label?: string;
|
|
55
|
+
/** Optional link at the end of the chip row. */
|
|
56
|
+
view_more?: GalleryCarouselLink;
|
|
57
|
+
/**
|
|
58
|
+
* `Continuous` drifts without stopping. `Stepped` advances a slide at a time
|
|
59
|
+
* on a timer. `Manual` moves only when a visitor asks.
|
|
60
|
+
*/
|
|
61
|
+
motion?: 'Continuous' | 'Stepped' | 'Manual' | string;
|
|
62
|
+
/** Seconds per slide of travel. Lower is faster. */
|
|
63
|
+
pace_seconds?: number;
|
|
64
|
+
pause_on_hover?: boolean;
|
|
65
|
+
/** Prev/next controls. Hidden while drifting, since they would fight it. */
|
|
66
|
+
show_arrows?: boolean;
|
|
67
|
+
video_muted?: boolean;
|
|
68
|
+
background_color?: StackableColorValue;
|
|
69
|
+
text_color?: StackableColorValue;
|
|
70
|
+
/** Active chip fill, and the play badge. */
|
|
71
|
+
accent_color?: StackableColorValue;
|
|
72
|
+
className?: string;
|
|
73
|
+
}
|
|
74
|
+
export declare function GalleryCarousel({ eyebrow_text, heading, subheading, heading_alignment, heading_font, caption_font, show_category_badge, slides, visible_neighbours, scale_falloff, slide_aspect_ratio, show_filters, all_filter_label, view_more, motion, pace_seconds, pause_on_hover, show_arrows, video_muted, background_color, text_color, accent_color, className, }: GalleryCarouselProps): React.JSX.Element;
|
|
75
|
+
export default GalleryCarousel;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface CarouselSlideImage {
|
|
3
|
+
url?: string;
|
|
4
|
+
title?: string;
|
|
5
|
+
}
|
|
6
|
+
export interface CarouselSlideVideo {
|
|
7
|
+
url?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface CarouselSlide {
|
|
10
|
+
image?: CarouselSlideImage;
|
|
11
|
+
video?: CarouselSlideVideo;
|
|
12
|
+
caption?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface ImageVideoCarouselProps {
|
|
15
|
+
className?: string;
|
|
16
|
+
title?: string;
|
|
17
|
+
slides?: CarouselSlide[];
|
|
18
|
+
autoplay?: boolean;
|
|
19
|
+
interval?: number;
|
|
20
|
+
muted?: boolean;
|
|
21
|
+
loop?: boolean;
|
|
22
|
+
}
|
|
23
|
+
export declare function ImageVideoCarousel({ className, title, slides, autoplay, interval, muted, loop, }: ImageVideoCarouselProps): React.JSX.Element;
|
|
24
|
+
export default ImageVideoCarousel;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { StackableColorValue } from '../../types';
|
|
3
|
+
export interface VerticalCarouselProductColor {
|
|
4
|
+
label?: string;
|
|
5
|
+
hex?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface VerticalCarouselProductItem {
|
|
8
|
+
product_name?: string;
|
|
9
|
+
/** Asset URL, or a Contentstack asset object — both are accepted. */
|
|
10
|
+
product_image?: string | {
|
|
11
|
+
url?: string;
|
|
12
|
+
};
|
|
13
|
+
price?: number;
|
|
14
|
+
colors?: VerticalCarouselProductColor[];
|
|
15
|
+
href?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface VerticalProductCarouselCtaButton {
|
|
18
|
+
text?: string;
|
|
19
|
+
link?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface VerticalProductCarouselProps {
|
|
22
|
+
eyebrow?: string;
|
|
23
|
+
heading?: string;
|
|
24
|
+
description?: string;
|
|
25
|
+
cta_button?: VerticalProductCarouselCtaButton;
|
|
26
|
+
text_alignment?: 'Left' | 'Center' | 'Right' | string;
|
|
27
|
+
text_color?: StackableColorValue;
|
|
28
|
+
/** Asset URL, or a Contentstack asset object — both are accepted. */
|
|
29
|
+
background_image?: string | {
|
|
30
|
+
url?: string;
|
|
31
|
+
};
|
|
32
|
+
background_color?: StackableColorValue;
|
|
33
|
+
carousel_position?: 'Left' | 'Right' | string;
|
|
34
|
+
item_shape?: 'Rectangle' | 'Square' | 'Circle' | string;
|
|
35
|
+
visible_items?: number;
|
|
36
|
+
products?: VerticalCarouselProductItem[];
|
|
37
|
+
className?: string;
|
|
38
|
+
}
|
|
39
|
+
export declare function VerticalProductCarousel({ eyebrow, heading, description, cta_button, text_alignment, text_color, background_image, background_color, carousel_position, item_shape, visible_items, products, className, }: VerticalProductCarouselProps): React.JSX.Element;
|
|
40
|
+
export default VerticalProductCarousel;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { ImageVideoCarousel } from './ImageVideoCarousel';
|
|
2
|
+
export { CircleImageCarousel } from './CircleImageCarousel';
|
|
3
|
+
export type { CircleImageCarouselProps, CircleCarouselItem } from './CircleImageCarousel';
|
|
4
|
+
export { VerticalProductCarousel } from './VerticalProductCarousel';
|
|
5
|
+
export type { VerticalProductCarouselProps, VerticalProductCarouselCtaButton, VerticalCarouselProductItem, VerticalCarouselProductColor, } from './VerticalProductCarousel';
|
|
6
|
+
export { GalleryCarousel } from './GalleryCarousel';
|
|
7
|
+
export type { GalleryCarouselProps, GalleryCarouselSlide, GalleryCarouselLink } from './GalleryCarousel';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { StackableColorValue } from '../../types';
|
|
3
|
+
export interface EmptyStateLink {
|
|
4
|
+
title?: string;
|
|
5
|
+
href?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface EmptyStateProps {
|
|
8
|
+
state_type?: '404' | 'no_results' | 'empty_cart' | 'generic' | string;
|
|
9
|
+
heading?: string;
|
|
10
|
+
description?: string;
|
|
11
|
+
illustration?: string;
|
|
12
|
+
primary_cta?: EmptyStateLink;
|
|
13
|
+
secondary_cta?: EmptyStateLink;
|
|
14
|
+
suggested_links?: EmptyStateLink[];
|
|
15
|
+
alignment?: 'left' | 'center' | 'right' | string;
|
|
16
|
+
background_color?: StackableColorValue;
|
|
17
|
+
text_color?: StackableColorValue;
|
|
18
|
+
className?: string;
|
|
19
|
+
}
|
|
20
|
+
export declare function EmptyState({ state_type, heading, description, illustration, primary_cta, secondary_cta, suggested_links, alignment, background_color, text_color, className, }: EmptyStateProps): React.JSX.Element;
|
|
21
|
+
export default EmptyState;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { StackableColorValue } from '../../types';
|
|
3
|
+
export interface FaqItem {
|
|
4
|
+
question?: string;
|
|
5
|
+
answer?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface FaqProps {
|
|
8
|
+
heading?: string;
|
|
9
|
+
subheading?: string;
|
|
10
|
+
heading_alignment?: 'left' | 'center' | string;
|
|
11
|
+
background_color?: StackableColorValue;
|
|
12
|
+
text_color?: StackableColorValue;
|
|
13
|
+
layout?: 'offset' | 'list' | 'grid' | string;
|
|
14
|
+
style?: 'plain' | 'accordion' | string;
|
|
15
|
+
columns?: number;
|
|
16
|
+
support_text?: string;
|
|
17
|
+
support_link_label?: string;
|
|
18
|
+
support_link_url?: string;
|
|
19
|
+
faqs?: FaqItem[];
|
|
20
|
+
className?: string;
|
|
21
|
+
}
|
|
22
|
+
export declare function FAQ({ heading, subheading, heading_alignment, background_color, text_color, layout, style, columns, support_text, support_link_label, support_link_url, faqs, className, }: FaqProps): React.JSX.Element;
|
|
23
|
+
export default FAQ;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { StackableColorValue } from '../../types';
|
|
3
|
+
export interface FaqCategorizedItem {
|
|
4
|
+
question?: string;
|
|
5
|
+
answer?: string;
|
|
6
|
+
/** Rendered as a link inside the answer — inline if this exact text appears in `answer`, appended after it otherwise. */
|
|
7
|
+
link_label?: string;
|
|
8
|
+
link_url?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface FaqCategorizedCategory {
|
|
11
|
+
name?: string;
|
|
12
|
+
/** Uploaded asset URL, or a Contentstack asset object. Shown beside every question in this
|
|
13
|
+
* category, and on the category's own filter pill. Nothing renders when it's empty.
|
|
14
|
+
* Alt text comes from `name` — no separate field for editors to fill. */
|
|
15
|
+
icon?: string | {
|
|
16
|
+
url?: string;
|
|
17
|
+
};
|
|
18
|
+
items?: FaqCategorizedItem[];
|
|
19
|
+
}
|
|
20
|
+
export interface FaqCategorizedProps {
|
|
21
|
+
heading?: string;
|
|
22
|
+
subheading?: string;
|
|
23
|
+
/** Rendered as a link inside the subheading, same inline-or-appended behavior as an item's link. */
|
|
24
|
+
support_link_label?: string;
|
|
25
|
+
support_link_url?: string;
|
|
26
|
+
theme?: 'light' | 'dark' | 'auto' | string;
|
|
27
|
+
background_color?: StackableColorValue;
|
|
28
|
+
text_color?: StackableColorValue;
|
|
29
|
+
/** Active category pill, item icon borders, and inline links. */
|
|
30
|
+
accent_color?: StackableColorValue;
|
|
31
|
+
categories?: FaqCategorizedCategory[];
|
|
32
|
+
className?: string;
|
|
33
|
+
}
|
|
34
|
+
export declare function FaqCategorized({ heading, subheading, support_link_label, support_link_url, theme, background_color, text_color, accent_color, categories, className, }: FaqCategorizedProps): React.JSX.Element | null;
|
|
35
|
+
export default FaqCategorized;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface FeatureBenefitItem {
|
|
3
|
+
title?: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
icon?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface FeatureBenefitProps {
|
|
8
|
+
eyebrow?: string;
|
|
9
|
+
heading?: string;
|
|
10
|
+
subheading?: string;
|
|
11
|
+
items?: FeatureBenefitItem[];
|
|
12
|
+
columns?: 2 | 3 | 4 | string | number;
|
|
13
|
+
icon_style?: 'plain' | 'circle' | 'square' | string;
|
|
14
|
+
icon_color?: string;
|
|
15
|
+
card_style?: 'none' | 'bordered' | 'elevated' | string;
|
|
16
|
+
background_color?: string;
|
|
17
|
+
className?: string;
|
|
18
|
+
}
|
|
19
|
+
export declare function FeatureBenefit({ eyebrow, heading, subheading, items, columns, icon_style, icon_color, card_style, background_color, className, }: FeatureBenefitProps): React.JSX.Element;
|
|
20
|
+
export default FeatureBenefit;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface FeatureBenefitDarkItem {
|
|
3
|
+
title?: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
icon?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface FeatureBenefitDarkProps {
|
|
8
|
+
heading?: string;
|
|
9
|
+
subheading?: string;
|
|
10
|
+
items?: FeatureBenefitDarkItem[];
|
|
11
|
+
columns?: 2 | 3 | 4 | string | number;
|
|
12
|
+
background_color?: string;
|
|
13
|
+
icon_color?: string;
|
|
14
|
+
icon_style?: 'plain' | 'circle' | 'square' | string;
|
|
15
|
+
className?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function FeatureBenefitDark({ heading, subheading, items, columns, background_color, icon_color, icon_style, className, }: FeatureBenefitDarkProps): React.JSX.Element;
|
|
18
|
+
export default FeatureBenefitDark;
|