import React$1, { ReactNode, FC } from 'react'; import { NavigationHeaderActionProps } from '@arc-ui/components/NavigationHeader'; import { HeadingLevel, HeadingProps } from '@arc-ui/components/Heading'; import { ImageProps, ImageSourceProps } from '@arc-ui/components/Image'; import { DisclosureProps } from '@arc-ui/components/Disclosure'; import { MediaCardProps } from '@arc-ui/components/MediaCard'; import { AvatarProps } from '@arc-ui/components/Avatar'; import { VideoPlayerProps } from '@arc-ui/components/VideoPlayer'; import { ButtonProps } from '@arc-ui/components/Button'; import { DownloadProps } from '@arc-ui/components/Download'; import { AppButtonProps } from '@arc-ui/components/AppButton'; import { ButtonV2Props } from '@arc-ui/components/ButtonV2'; import { ImpactCardProps } from '@arc-ui/components/ImpactCard'; import { InformationCardProps } from '@arc-ui/components/InformationCard'; import { TypographyCardProps } from '@arc-ui/components/TypographyCard'; import { TemplateBannerProps } from '@arc-ui/components/TemplateBanner'; import { TagProps } from '@arc-ui/components/Tag'; import { ReactPlayerProps } from 'react-player/types'; import { VerticalSpaceProps } from '@arc-ui/components/VerticalSpace'; declare const HeaderBarNotification: React$1.FC; interface HeaderBarNotificationProps { /** * Header Element to attach the notifcation too. */ headerActionProps: NavigationHeaderActionProps; /** * Nofication ID used to store dismissal in users session */ notificationId: string; /** * Always show on every reload, ignore saving dismissal to users session */ isPersistant?: boolean; /** * Notification Icon */ icon?: string; /** * Notification Image */ image?: string; /** * Notification Heading */ heading: string; /** * Notification tagline */ tagline?: string; /** * Notification content */ children?: React$1.ReactNode; /** * Data for the button, click events and text */ button?: { handleClick: () => void; text: string; }; /** * Specify a size or mutliple sizes where the notification only appears. */ showAtSize?: ("s" | "m" | "l" | "xl")[]; } interface AccordionHeadingProps { /** * heading for `AccordionHeading`. */ heading: string; /** * Adds padding to `AccordionHeading`. */ isPadded?: boolean; /** * Determine a heading level for `AccordionHeading`. */ headingLevel?: HeadingLevel; /** * Text content for `AccordionHeading`. */ content?: string; /** * Id content for `AccordionHeading`. */ id?: string; /** * Header image for the `AccordionHeading`. */ image?: ImageProps; /** * Header size for the `AccordionHeading`. */ headingSize?: "xl" | "m"; } interface AccordionDisclosureListProps { /** * Array of `Disclosure` components. Maximum 10 in one `Accordion`. */ disclosureList: (DisclosureProps & { id: string; })[]; } /** * Use the `Accordion` component to package together a title, content and a number of disclosure components into one section (maximum 10). */ declare const Accordion: React$1.FC; interface AccordionProps extends Omit, AccordionDisclosureListProps { } declare const SectionHeading: React$1.FC; interface SectionHeadingProps { /** * heading for `SectionHeading`. */ heading: string; /** * Adds padding to `SectionHeading`. */ isPadded?: boolean; /** * Determine a heading level for `SectionHeading`. */ headingLevel?: HeadingLevel; /** * Word wrap behavior for the heading */ isHeadingWordWrap?: boolean; /** * Text content for `SectionHeading`. */ content?: string | ReactNode; /** * Id content for `SectionHeading`. */ id?: string; /** * Header image for the `SectionHeading`. */ image?: ImageProps; /** * Is Heading centered. Only intended to be used when no content is provided and the heading is alone. */ isCentered?: boolean; } /** * Use `ArticleCarousel` to give supporting information about a page or proposition in the form of the `Carousel` containing only `MediaCard` components. */ declare const ArticleCarousel: React$1.FC; interface ArticleCarouselProps extends SectionHeadingProps { /** * Cards object of MediaCards for Carousel to display. */ cards: MediaCardProps[]; /** * Determine if MediaCards are displayed in their contained or uncontained styles. */ cardsContained?: boolean; /** * Determine minimum height of cards per breakpoint. */ minHeights?: { xxl?: number; xl?: number; l?: number; m?: number; s?: number; xs?: number; }; } declare const Author: React$1.FC; interface AuthorProps { /** * Name of the Author. */ name: string; /** * Job title of the Author. */ title: string; /** * Optional Avatar for the Author. */ avatar?: AvatarProps; } interface CopyLeadImage extends Pick { sources?: Pick[]; } interface CopyLeadListItem { icon: string; heading: string; text?: string; } type CopyLeadButton = Pick; /** * Use `CopyLead` to give supporting information about a page or proposition. It can be used to call out key benefits in bullet points, or link to a supporting explanatory video. An optional CTA can be used to link to further information or trigger a sales or enquiry journey. */ declare const CopyLead: React$1.FC; interface CopyLeadProps { /** * heading for `CopyLead`. */ heading: string; /** * Determine a heading level for `` and `` */ headingLevel?: HeadingLevel; /** * id for the heading of `` and `` */ id?: string; /** * Word wrap behavior for the heading */ isHeadingWordWrap?: boolean; /** * Reverse the columns so the image / video appears on the left. Doesn't affect mobile layouts, and is only applied if there is a video or an image. */ isReverseOrder?: boolean; /** * Text content for `CopyLead`. */ content?: string; /** * Button for `CopyLead`. */ button?: CopyLeadButton; /** * Image for `CopyLead`. */ image?: CopyLeadImage; /** * Video embed. Supported platforms are YouTube and Vimeo. */ video?: VideoPlayerProps; /** * List items for `CopyLead` */ listItems: CopyLeadListItem[]; } declare const DownloadList: React$1.FC; interface DownloadListProps extends Omit { /** * Set the list of `Download` components. */ downloads: DownloadProps[]; /** * Align the `Download` list below or to the right of the `SectionHeading`. */ alignment?: "below" | "right"; } declare const FAQs: React$1.FC; interface ExtendedAccordionProps extends AccordionProps { altLinkTitle?: string; } interface FAQsProps extends SectionHeadingProps { type: "list" | "listWithLinks" | "tabs"; linkListHeading?: string; accordionData: ExtendedAccordionProps[]; } interface FeaturePostAppButtonFooter { type: "appButton"; googlePlay?: Omit; appStore?: Omit; } interface FeaturePostCtaFooter { type: "cta"; button: Pick; author?: AuthorProps; } interface FeaturePostImage extends Pick { sources?: Pick[]; title?: string; description?: string; } /** * Use `FeaturePost` to direct traffic towards an article, case study, or product information page, or to a 3rd part App Store provider. Where the component links to an article page, the author attribution can be given here. The `FeaturePost` must be supported by an image, and in future, the component will support embedded video as well. * */ declare const FeaturePost: React$1.FC; interface FeaturePostProps { /** * heading for `FeaturePost`. */ heading: string; /** * id for `FeaturePost`. */ id?: string; /** * Determine a heading level for `` */ headingLevel?: HeadingLevel; /** * Word wrap behavior for the heading */ isHeadingWordWrap?: boolean; /** * Text content for `FeaturePost`. */ content: ReactNode; /** * Reverse the columns so the image / video appears on the left. Doesn't affect mobile layouts, and is only applied if there is a video or an image. */ isReverseOrder?: boolean; /** * Image for `FeaturePost`. */ image?: FeaturePostImage; /** * Footer for `FeaturePost`. Types included are `cta` or `appButton`. */ footer?: FeaturePostCtaFooter | FeaturePostAppButtonFooter; /** * Label for `FeaturePost`. */ label?: { text: string; date: string | Date; }; /** * Video embed. Supported platforms are YouTube and Vimeo. */ video?: VideoPlayerProps; } interface HighlightLink { url: string; textLink: string; ariaLabel?: string; onClick?: (e: React.MouseEvent) => void; } interface HighlightListItem { icon?: string; heading: string; text?: string | React.ReactNode; link?: HighlightLink; } /** * Use `Highlights` to give supporting information about a page or proposition. I * t can be used to call out key benefits in bullet points, or link. * Both two and three column options are available. */ declare const Highlights: React$1.FC; interface HighlightsProps extends Omit { /** * List items for `Highlights`. * List length should be a minimum of 2 and a maximum of 6. */ listItems: HighlightListItem[]; /** * Number of columns for option desktop & tablet breakpoints only. */ columns?: "2" | "3"; /** * Optional CTA rendered at the end of Highlights. * Only ONE CTA is allowed. */ cta?: HighlightsCTAProps; } /** * CTA configuration for Highlights */ type HighlightsCTAProps = Pick & { /** * Allowed button styles only. * Primary is intentionally NOT supported. */ buttonStyle: "secondary" | "compact"; /** * Icon override & Active icon override * - undefined → uses default BtIconArrowRightFill for compact style * - null → icon disabled * - string → custom icon */ icon?: string | null; iconActive?: string | null; }; /** * Use `PromoListing` to give supporting information about a page or proposition in the form of the card components (`ImpactCard`, `InformationCard`, `MediaCard` and `TypographyCard`). */ declare const PromoListing: React$1.FC; interface PromoListMediaCard extends MediaCardProps { type: "media-card"; } interface PromoListImpactCard extends ImpactCardProps { type: "impact-card"; } interface PromoListInformationCard extends InformationCardProps { type: "information-card"; } interface PromoListTypographyCard extends TypographyCardProps { type: "typography-card"; } type PromoListCard = PromoListMediaCard | PromoListInformationCard | PromoListTypographyCard | PromoListImpactCard; interface PromoListingProps extends Omit { /** * Cards for the PromoListing. */ cards: PromoListCard[]; /** * Shows cards in a carousel on devices below 1024px (m breakpoint) if true. */ isCarousel?: boolean; /** * Number of columns for desktop breakpoints. "2" and "3" column options available. */ columns?: "2" | "3"; /** * Optional button configuration displayed above the cards. */ button?: PromoListingButton; /** * Text label displayed above the main heading in overline style */ overlineLabel?: string; /** * Heading level for the overline label */ overlineHeadingLevel?: HeadingLevel; } /** * Button configuration for PromoListing component. */ interface PromoListingButton extends Omit { /** * Style variant for the button. Defaults to "secondary". */ buttonStyle?: "secondary" | "compact"; } /** * Use `Quote` where a quote or testimonial from an existing customer or stakeholder would help build trust and credibility with potential new customers. It's commonly used on product pages where customers would learn about a product or service that we offer.*/ declare const Quote: React$1.FC; interface QuoteProps { styling?: "Default" | "Secondary"; content: string; author?: AuthorProps; citeUrl?: string; } declare const Summary: React$1.FC; interface SummaryContent { heading: string; text: string; } interface SummaryProps { /** * Content for */ content: [SummaryContent, SummaryContent, SummaryContent]; /** * Determine a heading level for each column. */ headingLevel?: HeadingLevel; noBorder?: boolean; } interface StatisticlLink { text: string; href: string; openInNewTab?: boolean; ariaLabel?: string; } interface Statistic { stat: string; copy: string; link?: StatisticlLink; source?: string; sourceUrl?: string; } declare const Statistics: React$1.FC; interface StatisticsProps extends Omit { statistics: Statistic[]; } declare const BannerWithTabs: FC; interface BannerWithTabsProps extends Omit { /** * Align `SectionHeading` component. */ alignTypography?: "left" | "center"; /** * Default to an inital value of a tab. If this is left blank it will default to first tab. */ defaultValue?: string; /** * Determine what tabs to render. They need both a `value` and `label` prop */ tabs: { value: string; label: string; content: TemplateBannerProps; }[]; /** * Set the minimum height of the all banners M and above. */ minHeight?: number; /** * Set the minimum height all of the banner for the M breakpoint. This will be active when the TabbedBanner switches to the mobile layout at the medium breakpoint. */ minHeightM?: number; /** * heading for `SectionHeading`. */ heading: string; /** * Heading level for `SectionHeading`. */ headingLevel?: HeadingLevel; /** * Text content for `SectionHeading`. */ content?: string; } interface TextSection { heading: string; content: string | ReactNode; headingLevel?: HeadingLevel; } interface Link { text: string; url: string; ariaLabel?: string; } interface LinkSection { heading: string; links: Link[]; headingLevel?: HeadingLevel; } interface Topic { heading: string; tags: TagProps[]; headingLevel?: HeadingLevel; } interface Share { heading: string; articleTitle: string; x?: boolean; headingLevel?: HeadingLevel; linkedin?: boolean; linkedInAriaLabel?: string; xAriaLabel?: string; clipboardAriaLabel?: string; emailAriaLabel?: string; } interface SidebarAuthor extends AuthorProps { avatar?: Omit, "size">; } /** * Use `ArticleSidebar` to provide additional information about the article. */ declare const ArticleSidebar: React$1.FC; interface ArticleSidebarProps { /** * Props for Author component. */ author?: SidebarAuthor; /** * Content for the about section. */ aboutSection?: TextSection; /** * Array of headings and text for additional text sections. */ additionalContent?: TextSection[]; /** * Links that are relevant to the article. */ linkSection?: LinkSection; /** * Topics rendered as tags that are relevant to the article. */ topics?: Topic; /** * Sharing options for the article. */ share?: Share; /** * The article URL used by the share buttons. * If it is not provided, the component uses the current browser URL. */ url?: string; } type ListProps = InformationCardProps; /** * Use `ProductNavigation` to give a collection of product information cards collected within a grid that has optional show/hide capability */ declare const ProductNavigation: React$1.FC; interface ProductNavigationProps extends Omit { /** * List items for `ProductNavigation`. */ productList: ListProps[]; /** * Hide "show more" or "show less" button controls. */ hideButton?: boolean; /** * Prevent "show less" button from appearing after full productList is displayed. */ hideShowLess?: boolean; /** * Set default expand or collapse view of product on page load. */ defaultExpanded?: boolean; /** * Set number of products to hide or show. */ listIncrement?: number; /** * Set number of products to show by default. */ cardsToDisplay?: number; /** * Custom onClick handler called everytime "show more" is pressed */ onClickMore?: () => void; /** * Custom onClick handler called everytime "show less" is pressed */ onClickLess?: () => void; /** * Set a loading state for the "show more" and "show less" buttons */ isLoading?: boolean; /** * Set minHeight for all products. */ minHeight?: number; } declare const ContentInfoWidget: React$1.FC; interface ContentInfoWidgetProps { icon: string; text: string; } declare const ActionTile: React$1.FC; interface ActionTileProps { /** * Icon to display in default state */ icon?: string; /** * Filled icon variant to display when tile is active. Falls back to icon if not provided */ activeIcon?: string; /** * Heading text (required) */ heading: string; /** * Whether to use the compact tile variant */ isCompact?: boolean; /** * Whether the tile is in active/selected state */ isActive?: boolean; /** * Click handler */ onClick?: React$1.MouseEventHandler; } declare const LinkTile: React$1.FC; interface LinkTileProps extends React$1.HTMLAttributes { /** Display text for the tile */ text?: string; /** URL the tile navigates to. Renders as an anchor tag when provided */ href?: string; /** Whether to show the arrow icon. Defaults to true */ showIcon?: boolean; /** Visual tone variant. Defaults to brand */ tone?: "brand" | "neutral"; } declare const InlineLinkGroup: React$1.FC; interface InlineLinkGroupProps { /** Optional overline label displayed above the link group */ label?: string; /** Heading level for the label, defaults to "2" for proper heading hierarchy */ headingLevel?: "1" | "2" | "3" | "4" | "5" | "6"; /** Array of link items to display */ links: InlineLinkGroupItem[]; } interface InlineLinkGroupItem { /** Display text for the link */ label: string; /** URL the link navigates to */ href: string; /** Optional click handler for the link */ onClick?: () => void; /** Optional accessible label for screen readers */ ariaLabel?: string; } /** Use `ThumbnailSignpost` to highlight key information or navigation points with an accompanying thumbnail image or icon. */ declare const ThumbnailSignpost: ({ text, title, img, onClick, buttonLabel, ...props }: ThumbnailSignpostProps) => JSX.Element; interface ThumbnailSignpostProps { /** * Title for the ThumbnailSignpost. */ title: string; /** * Text content for the ThumbnailSignpost. */ text: string; /** * Label for the button in the ThumbnailSignpost. */ buttonLabel?: string; /** * Image properties for the ThumbnailSignpost. */ img?: Pick; /** * Optional click handler for the ThumbnailSignpost. */ onClick?: () => void; } /** * Use `PromoListingThumbnailSignpost` to give supporting information about a page or proposition in the form of the ThumbnailSignposts components. */ declare const PromoListingThumbnailSignpost: React$1.FC; interface PromoListingThumbnailSignpostProps extends SectionHeadingProps { thumbnailList: ThumbnailSignpostProps[]; } type PlayerProps = Pick; interface VideoCardPlayerProps { player: PlayerProps; orientation: "portrait" | "landscape"; playIconSize: "s" | "l"; thumbnail?: ReactPlayerProps["light"]; children?: React$1.ReactNode; } interface VideoHeroCardContentProps { title: string; label: string; description: string | ReactNode; background: "dark" | "light"; videoDate?: string; duration?: string; subtitleAvailabilityText?: string; } declare const VideoHeroCard: ({ content, thumbnailImg, player, ...props }: VideoHeroCardProps) => JSX.Element; interface VideoHeroCardProps { /** * Content for the video card. */ content: Omit; /** * Thumbnail for the video hero card. */ thumbnailImg: string; /** * Configuration for the video player. */ player: VideoCardPlayerProps["player"]; } declare const VideoPortraitCard: ({ thumbnail, player, ...props }: VideoPortraitCardProps) => JSX.Element; interface VideoPortraitCardProps { /** * Thumbnail content, video will autoplay if omitted. */ thumbnail?: { title: string; label: string; img: string; }; /** * Configuration for the video player. */ player: VideoCardPlayerProps["player"]; } /** * Information card configuration for bento grid positions. Extends InformationCard with required cardUrl. */ interface BentoInformationCard extends Omit { type: "information"; cardUrl: NonNullable; } /** * Media card configuration for bento grid positions. Extends MediaCard with required url and image-only media. */ interface BentoMediaCard extends Omit { type: "media"; url: NonNullable; media: Extract; } /** * Content structure for the bento grid layout within each tab. * - card1 & card2: Can be either information or media cards * - card3: Optional information card * - card4: Typography card with label, heading and url */ type BentoGridContent = { card1: BentoInformationCard | BentoMediaCard; card2: BentoInformationCard | BentoMediaCard; card3?: BentoInformationCard; card4: { url: TypographyCardProps["url"]; label?: TypographyCardProps["label"]; /** Overrides the default heading if provided and is not falsey. */ heading?: string; text?: TypographyCardProps["text"]; onClick?: TypographyCardProps["onClick"]; }; }; /** * BusinessSegmentSwitcher displays tabbed content with a bento grid layout made up of 3 - 4 cards. * Renders as tabs on desktop and a dropdown with carousel on mobile (below 1024px). */ declare const BusinessSegmentSwitcher: ({ tabs, defaultValue, ...props }: BusinessSegmentSwitcherProps) => JSX.Element; interface BusinessSegmentSwitcherProps { /** * Default to an initial value of a tab. If this is left blank it will default to first tab. */ defaultValue?: string; /** * Array of tabs to render. Each tab requires a unique `value`, a `label` for display, and `content` containing card configurations for the bento grid layout. */ tabs: { value: string; label: string; content: BentoGridContent; }[]; } /** * Logo image source and alt text for screen reader accessibility. */ interface LogoTileItem { /** Image source URL for the logo (e.g. an SVG or PNG path). */ src: string; /** Alt text label to announce the logo to screen reader users. */ alt: string; } /** * Subgroup data passed via the parent `subgroups` array. */ interface PartnerLogosSubgroup { /** Optional subheading displayed above the logo grid. Fixed Size S Heading. */ subheading?: string; /** * Semantic heading level for the subheading. If omitted, it is automatically * derived as one level below the parent headingLevel. */ subheadingLevel?: HeadingLevel; /** Optional supporting description text. Size M, tone "supporting". */ text?: string; /** Array of logo images to display in the grid. */ logos: LogoTileItem[]; /** * Height of each logo tile in pixels. * @default 72 */ tileHeight?: number; } declare const PartnerBrandLogos: React$1.FC; /** * Props for the `PartnerBrandLogos` page section component. Renders a heading, * optional content, a padded ruler, and a list of partner logo subgroups. */ interface PartnerBrandLogosProps { /** Main section heading text. */ heading: string; /** * Additional Arc Heading properties (e.g. `size`, `fontStyle`, `color`, * `isWordWrap`, `casing`, `isResponsive`). Defaults to size "l", responsive. */ headingProps?: Omit; /** * Semantic heading level for the main heading. Subgroup headings are * automatically derived relative to this value. * @default "2" */ headingLevel?: HeadingLevel; /** Supporting content text below the heading. Supports paragraph breaks via `\n`. */ content?: string; /** HTML `id` attribute applied to the main heading element. */ id?: string; /** * Vertical padding above the ruler. Accepts all VerticalSpace props. * @default { size: "32" } */ rulerTopPadding?: VerticalSpaceProps; /** * Vertical padding below the ruler. Accepts all VerticalSpace props. * @default { size: "32" } */ rulerBottomPadding?: VerticalSpaceProps; /** Array of partner logo subgroups. */ subgroups: PartnerLogosSubgroup[]; } export { Accordion, ActionTile, ArticleCarousel, ArticleSidebar, Author, BannerWithTabs, BusinessSegmentSwitcher, ContentInfoWidget, CopyLead, DownloadList, FAQs, FeaturePost, HeaderBarNotification, Highlights, InlineLinkGroup, LinkTile, PartnerBrandLogos, ProductNavigation, PromoListing, PromoListingThumbnailSignpost, Quote, SectionHeading, Statistics, Summary, ThumbnailSignpost, VideoHeroCard, VideoPortraitCard }; export type { AccordionProps, ActionTileProps, ArticleCarouselProps, ArticleSidebarProps, AuthorProps, BannerWithTabsProps, BentoGridContent, BentoInformationCard, BentoMediaCard, BusinessSegmentSwitcherProps, ContentInfoWidgetProps, CopyLeadProps, DownloadListProps, FAQsProps, FeaturePostProps, HeaderBarNotificationProps, HighlightsProps, InlineLinkGroupItem, InlineLinkGroupProps, LinkTileProps, ListProps, LogoTileItem, PartnerBrandLogosProps, PartnerLogosSubgroup, ProductNavigationProps, PromoListingProps, PromoListingThumbnailSignpostProps, QuoteProps, SectionHeadingProps, StatisticsProps, SummaryProps, ThumbnailSignpostProps, VideoHeroCardProps, VideoPortraitCardProps };