import type { ReactNode } from "react"; import { type LucideIcon } from "lucide-react"; /** * `done` / `current` / `pending` are a PROCESS: steps behind, the one you are on, steps ahead. * `log` is not a step at all — it is an entry in an activity log or history (antd's * ``, GitHub's conversation rail): a neutral dot, a hairline rail and * NO screen-reader status prefix, because a thing that merely happened is neither "completed" nor * "upcoming" (gh#1092). */ export type TimelineStatus = "done" | "current" | "pending" | "log"; export type TimelineVariant = "icon" | "ordinal" | "status"; /** * A Timeline-local subset of the density vocabulary — it has no `comfortable` step, the same shape * as `ListRowDensity`. */ export type TimelineDensity = "default" | "compact"; export type TimelineItem = { title: ReactNode; location?: ReactNode; time?: ReactNode; note?: ReactNode; /** Shorthand for `status: "current"`. `status` wins when both are set. */ current?: boolean; /** * Explicit status. Resolves as `status ?? (current ? "current" : "done")`. Use `log` for an * activity-log / history row: neutral look, no "Completed:"/"Upcoming:" prefix. */ status?: TimelineStatus; /** Per-item glyph override; wins over the variant/status auto-glyph. */ icon?: LucideIcon; }; export type TimelineProps = { items: TimelineItem[]; /** * Rail glyph strategy. `icon` (default) keeps the legacy look (Plane for the current step, * CheckCircle2 otherwise). */ variant?: TimelineVariant; /** * Space between items (and between the rail and the body): `--timeline-item-gap`. `default` is * `--space-stack-md` (16px, today's look); `compact` is `--space-stack-sm` (8px) for a dense * activity log or issue history. antd's Timeline has no density/size prop — its item spacing is * one fixed token (`itemPaddingBottom`, 20px) — so this is a godx extension, not an antd port. */ density?: TimelineDensity; }; export declare function Timeline({ items, variant, density }: TimelineProps): import("react").JSX.Element;