import type { CSSProperties, ImgHTMLAttributes } from 'react'; import type { CssLength } from '../../../utils/css'; export type WalkOfLifeImage = { src: string; alt?: string; srcSet?: string; sizes?: string; objectPosition?: string; loading?: ImgHTMLAttributes['loading']; fetchPriority?: ImgHTMLAttributes['fetchPriority']; }; export type WalkOfLifePeriod = { id: string; label: string; dateLabel?: string; position: number; }; export type WalkOfLifeMilestone = { id: string; label: string; dateLabel?: string; position: number; }; export type WalkOfLifeMediaItem = { id: string; label: string; dateLabel?: string; image: WalkOfLifeImage; position: number; side?: 'right' | 'back'; }; export type WalkOfLifeEndpoint = { label: string; dateLabel?: string; image?: WalkOfLifeImage; }; export type WalkOfLifeTimeline = { periods: WalkOfLifePeriod[]; milestones: WalkOfLifeMilestone[]; mediaItems: WalkOfLifeMediaItem[]; endpoint: WalkOfLifeEndpoint; startLabel?: string; startDateLabel?: string; }; export type WalkOfLifeEvent = { id: string; kind: 'chapter' | 'milestone'; title: string; sortDate: string; dateLabel?: string; } | { id: string; kind: 'photo'; title: string; sortDate: string; dateLabel?: string; image: WalkOfLifeImage; side?: 'right' | 'back'; } | { id: string; kind: 'endpoint'; title: string; sortDate: string; dateLabel?: string; image?: WalkOfLifeImage; }; export type WalkOfLifePageProps = Partial & { events?: readonly WalkOfLifeEvent[]; className?: string; style?: CSSProperties; minHeight?: CssLength; width?: number; height?: number; length?: number; maxDepth?: number; defaultProgress?: number; progress?: number; onProgressChange?: (progress: number) => void; wheelSensitivity?: number; showControls?: boolean; showStartHint?: boolean; ariaLabel?: string; };