import type { HTMLAttributes, ReactNode } from 'react'; import type { CssLength } from '../../../utils/css'; export type VisionProNewsCategory = string | { id?: string | number; label: ReactNode; href?: string; target?: string; rel?: string; }; export type VisionProNewsCategoryObject = Exclude; export type VisionProNewsArticle = { id?: string | number; title: ReactNode; author?: ReactNode; description?: ReactNode; publishedAt?: Date | string; href?: string; target?: string; rel?: string; imageSrc?: string; imageAlt?: string; thumbnailSrc?: string; categories?: readonly VisionProNewsCategory[]; onSelect?: (article: VisionProNewsArticle, feed: VisionProNewsFeed) => void; }; export type VisionProNewsFeed = { id: string; label: ReactNode; icon?: ReactNode; articles: readonly VisionProNewsArticle[]; }; export type VisionProNewsSelectionReason = 'click' | 'focus' | 'hover' | 'pagination' | 'scroll'; export type VisionProNewsArticleChangeDetails = { articleIndex: number; feedIndex: number; reason: VisionProNewsSelectionReason; }; export type VisionProNewsFeedChangeDetails = { feedIndex: number; reason: VisionProNewsSelectionReason; }; export type VisionProNewsPageProps = Omit, 'children' | 'onChange' | 'onSelect'> & { ariaLabel?: string; feeds?: readonly VisionProNewsFeed[]; feedHeight?: CssLength; initialArticleId?: string | number; initialFeedId?: string; maxArticlesPerFeed?: number; paginationLabel?: string; scrollDistance?: number; disableFeedLinksOnTouch?: boolean; onArticleChange?: (article: VisionProNewsArticle, feed: VisionProNewsFeed, details: VisionProNewsArticleChangeDetails) => void; onFeedChange?: (feed: VisionProNewsFeed, details: VisionProNewsFeedChangeDetails) => void; };