import type { ComponentProps, ComponentType, ReactElement, ReactNode } from 'react'; import React from 'react'; import type Label from '../Label/Label'; import type ButtonPrimary from '../ButtonPrimary/ButtonPrimary'; import type Button from '../Button/Button'; interface CommonImageProps { [key: string]: unknown; src: string; alt: string; } type HeroVariant = 'default' | 'centered' | 'centered-text-left'; type HeadingLevel = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'; type ImageComponent = ComponentType | 'img'; interface HeroProps { /** * Visual variant of the hero component * - default: Content aligned to left with offset * - centered: Content and text centered * - centered-text-left: Content centered but text left-aligned * * @default 'default' */ variant?: HeroVariant; /** * Image component to use for background - can be 'img' for plain HTML or a component like Next.js Image * @default 'img' */ Image?: ImageComponent; /** * Props to pass to the background Image component */ imageProps?: CommonImageProps; /** * Background color when no image is provided */ backgroundColor?: string; /** * Logo image component for logo-style heroes */ LogoImage?: ImageComponent; /** * Props to pass to the Logo image component */ logoImageProps?: CommonImageProps; /** * Label content (must use Label component) */ label?: ReactElement>; /** * Main heading content */ heading?: ReactNode; /** * Heading level for semantic HTML * * @default 'h1' */ headingLevel?: HeadingLevel; /** * Description text content */ description?: ReactNode; /** * Primary call-to-action button */ primaryCta?: ReactElement>; /** * Optional secondary call-to-action button */ secondaryCta?: ReactElement>; /** * Allows to pass a custom className */ className?: string; /** * Allows to pass testid string for testing purposes */ 'data-testid'?: string; } declare const Hero: ({ variant, headingLevel, Image, LogoImage, "data-testid": dataTestId, ...props }: HeroProps) => React.JSX.Element; /** @component */ export default Hero;