import { default as React } from 'react'; import { IconContent } from '../types/icon.types.js'; import { SlotClassNames, SlotStyles, HtmlProps } from '../types/slots.types.js'; import { ColorValue } from '../themeProvider/color.types.js'; /** Direction the steps run in. */ export declare enum StepperOrientation { Horizontal = "horizontal", Vertical = "vertical" } /** How the step markers are drawn. */ export declare enum StepperStyleType { /** Numbered markers, filled solid on completion. The default. */ Filled = "filled", /** Numbered markers that stay ringed when completed, with a check in the colour. */ Outlined = "outlined", /** Minimal dots without numbers, for a compact onboarding or carousel style. */ Dots = "dots" } /** * Which step bodies (`step.content`) are expanded. Only affects vertical * steppers with per-step `content`; ignored otherwise. */ export declare enum StepperCollapse { /** Every step body stays expanded. */ None = "none", /** Only the current step's body is expanded (classic vertical wizard). */ ActiveOnly = "activeOnly", /** Completed (past) step bodies collapse; current and upcoming stay expanded. */ Completed = "completed" } /** * Where the label block sits relative to the marker. Horizontal steppers use * `Top`/`Bottom`; vertical steppers use `Left`/`Right`. An out-of-orientation * value falls back to that orientation's default. */ export declare enum StepperLabelPlacement { Top = "top", Bottom = "bottom", Left = "left", Right = "right" } export type StepperSlots = 'root' | 'entry' | 'entryNumber' | 'entryLabel' | 'connector' | 'description' | 'content' | 'optional' | 'icon'; export interface StepperLabels { /** Hint under the label of a step with `optional: true`. */ optional?: string; /** Status of a completed step, read out by screen readers. */ completed?: string; /** Status of a step not reached yet, read out by screen readers. */ notCompleted?: string; /** Status of a step with `error`, read out by screen readers. */ error?: string; } export interface StepperStep { /** Primary label for the step. */ label: React.ReactNode; /** Secondary line shown under the label. */ description?: React.ReactNode; /** Collapsible body content, rendered under the label (vertical only). */ content?: React.ReactNode; /** Icon shown in the marker instead of the step number — a FontAwesome icon or any node. */ icon?: IconContent; /** Marks the step as errored, drawing its marker in the theme's `--error-color`. */ error?: boolean; /** `true` renders the `optional` label as a hint; a node renders custom hint text. */ optional?: boolean | React.ReactNode; /** Disables this step: never clickable, dimmed. */ disabled?: boolean; } export interface StepperProps extends HtmlProps { steps?: StepperStep[]; /** Zero-based index of the current step. `steps.length` marks every step completed. */ currentStep?: number; /** Direction the steps run in (default `Horizontal`). */ orientation?: StepperOrientation; onStepClicked?: ((index: number) => void) | null; /** Allow clicking any step, not just completed ones. */ nonLinear?: boolean; /** Hide each step's label, description and hint visually. Screen readers still read them. */ hideLabels?: boolean; /** How the markers are drawn (default `Filled`). */ styleType?: StepperStyleType; /** A `ThemeColor` (default `Primary`) or any CSS colour, such as `'var(--brand)'`. */ color?: ColorValue; /** Which step bodies are expanded. Vertical `content` only (default `None`). */ collapse?: StepperCollapse; /** Label position relative to the marker (default: horizontal `Bottom`, vertical `Right`). */ labelPlacement?: StepperLabelPlacement; labels?: StepperLabels; className?: string; style?: React.CSSProperties; classNames?: SlotClassNames; styles?: SlotStyles; }