import type { HTMLAttributes, ReactNode } from "react";
/**
* Stepper — multi-step pipeline progress, promoted from the theo-cloud
* dashboard build-timeline (production). Read-only by design: steps are NOT
* clickable (pipeline visualization, not a wizard). 100% controlled — live
* updates (SSE/polling) belong to the consumer.
*
* Contract: step `id`s MUST be unique (React keys); at most ONE step should
* be `active` (`aria-current="step"` is emitted per active step as-is).
* A `label` is required — it names the pipeline for screen readers.
*
*
*
* For the simple "wizard position" case, derive the array from an index:
*
*/
export type StepStatus = "pending" | "active" | "done" | "failed";
export interface StepperStepData {
/** Unique key for the step (consumer contract: no duplicates). */
id: string;
label: string;
/** For failed steps, pass the failure cause here — it is read by screen readers inside the same item (F-dom-3). */
description?: string;
status: StepStatus;
/** Optional slot — prefer `` from this library. */
timestamp?: ReactNode;
/** Optional slot rendered ONLY when status === "failed" (the action belongs to the consumer). */
retry?: ReactNode;
}
export interface StepperProps extends HTMLAttributes {
/** Accessible name for the pipeline (aria-label of the list). */
label: string;
steps: StepperStepData[];
/** @default "vertical" — both production cases (build/ingest) are vertical. */
orientation?: "vertical" | "horizontal";
}
/**
* Pure helper for the simple index-driven case: steps before `activeIndex`
* are done, the step at it is active, later ones are pending. Out-of-range
* indexes are safe: past the end → all done; negative → all pending.
*/
export declare function deriveSteps(defs: Array>, activeIndex: number): StepperStepData[];
declare const Stepper: import("react").ForwardRefExoticComponent>;
export { Stepper };