import React from "react";
/**
 * Layout orientation for the Timeline
 */
export type TimelineLayout = "vertical" | "horizontal";
/**
 * Alignment mode for vertical timeline items
 * - left: all items on the left side of the line
 * - right: all items on the right side of the line
 * - alternate: items alternate between left and right
 */
export type TimelineAlign = "left" | "right" | "alternate";
/**
 * Status of an individual timeline item
 * - completed: item is finished (success color)
 * - active: item is currently in progress (primary color)
 * - pending: item has not started yet (neutral/muted)
 */
export type TimelineItemStatus = "completed" | "active" | "pending";
/**
 * Theme overrides for Timeline
 */
export interface TimelineThemeOverrides {
    baseStyle?: string;
    baseStyleHorizontal?: string;
    itemStyle?: string;
    itemStyleHorizontal?: string;
    lineStyle?: string;
    lineStyleHorizontal?: string;
    markerStyle?: string;
    markerStatuses?: Partial<Record<TimelineItemStatus, string>>;
    contentStyle?: string;
    contentStyleHorizontal?: string;
}
/**
 * Timeline root component props
 */
export interface TimelineProps extends React.HTMLAttributes<HTMLDivElement> {
    /**
     * Layout orientation of the timeline
     * @default 'vertical'
     */
    layout?: TimelineLayout;
    /**
     * Alignment of items relative to the timeline line (vertical only)
     * @default 'left'
     */
    align?: TimelineAlign;
    /**
     * Theme overrides for customizing styles
     */
    theme?: TimelineThemeOverrides;
    /**
     * Children - should be Timeline.Item components
     */
    children: React.ReactNode;
}
/**
 * Context value shared between Timeline compound components
 */
export interface TimelineContextValue {
    layout: TimelineLayout;
    align: TimelineAlign;
    theme: TimelineThemeOverrides & {
        baseStyle: string;
        baseStyleHorizontal: string;
        itemStyle: string;
        itemStyleHorizontal: string;
        lineStyle: string;
        lineStyleHorizontal: string;
        markerStyle: string;
        markerStatuses: Record<TimelineItemStatus, string>;
        contentStyle: string;
        contentStyleHorizontal: string;
    };
    totalItems: number;
}
/**
 * Timeline.Item component props
 */
export interface TimelineItemProps extends React.HTMLAttributes<HTMLDivElement> {
    /**
     * Status of the timeline item
     * @default 'pending'
     */
    status?: TimelineItemStatus;
    /**
     * Optional className for styling
     */
    className?: string;
    /**
     * Item content - should include Timeline.Marker and Timeline.Content
     */
    children: React.ReactNode;
}
/**
 * Context value for individual Timeline items
 */
export interface TimelineItemContextValue {
    status: TimelineItemStatus;
    index: number;
    isFirst: boolean;
    isLast: boolean;
}
/**
 * Timeline.Marker component props
 */
export interface TimelineMarkerProps extends React.HTMLAttributes<HTMLDivElement> {
    /**
     * Optional custom icon to display inside the marker
     * Uses a dot by default, CheckIcon for completed status
     */
    icon?: React.ReactNode;
    /**
     * Optional className for styling
     */
    className?: string;
}
/**
 * Timeline.Content component props
 */
export interface TimelineContentProps extends React.HTMLAttributes<HTMLDivElement> {
    /**
     * Content to display
     */
    children: React.ReactNode;
    /**
     * Optional className for styling
     */
    className?: string;
}
