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