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;
};