import * as react from 'react'; /** * Theming props for the Campaigns Carousel Widget. * Unlike other widgets, the carousel uses camelCase query parameters * rather than kebab-case CSS variable parameters. */ interface CampaignsCarouselThemingProps { /** Panel gradient start color, e.g. "#1a1b5e" */ panelStart?: string; /** Panel gradient mid color */ panelMid?: string; /** Panel gradient end color */ panelEnd?: string; /** Panel box shadow */ panelShadow?: string; /** Title font size, e.g. "1.5rem" */ titleSize?: string; /** Description font size, e.g. "0.9rem" */ descriptionSize?: string; /** Title text shadow */ titleShadow?: string; /** Description text shadow */ descriptionShadow?: string; } /** * Core configuration props for the Campaigns Carousel Widget. */ interface CampaignsCarouselWidgetProps extends CampaignsCarouselThemingProps { /** Base URL of the Legion application (required) */ baseUrl: string; /** API key for authorization */ apiKey?: string; /** Maximum number of campaigns to show (default: 5) */ maxCampaigns?: number; /** Whether to show expiration dates (default: true) */ showExpiration?: boolean; /** Theme preset. Default: "light" */ theme?: "light" | "dark"; /** Widget height in pixels. Default: 280 */ height?: number; /** Widget width CSS value. Default: "100%" */ width?: string; /** Additional CSS class name for the container */ className?: string; /** Additional inline styles for the container */ style?: React.CSSProperties; /** Callback when the widget iframe has loaded */ onLoad?: (detail: { widget: string; maxCampaigns: number; theme: string; }) => void; /** Callback when the widget iframe fails to load */ onError?: (message: string) => void; } /** * Mapping from camelCase theming prop names to the camelCase query * parameter names used by the campaigns carousel widget iframe URL. * * NOTE: Unlike other widgets, this uses camelCase params (not kebab-case). */ declare const CAROUSEL_THEMING_PROP_TO_PARAM: Record; /** * Ref handle exposed by LegionCampaignsCarousel for imperative control. */ interface LegionCampaignsCarouselHandle { /** Reload the widget iframe */ refresh: () => void; } /** * Build the iframe src URL from widget props. */ declare function buildCampaignsCarouselWidgetUrl(props: CampaignsCarouselWidgetProps): string; /** * LegionCampaignsCarousel – a React component that embeds the Legion * Campaigns Carousel widget via an iframe. * * @example * ```tsx * import { LegionCampaignsCarousel } from '@legionhandtech/lht-react-widgets'; * * function App() { * return ( * * ); * } * ``` */ declare const LegionCampaignsCarousel: react.ForwardRefExoticComponent>; export { CAROUSEL_THEMING_PROP_TO_PARAM, type CampaignsCarouselThemingProps, type CampaignsCarouselWidgetProps, LegionCampaignsCarousel, type LegionCampaignsCarouselHandle, buildCampaignsCarouselWidgetUrl };