import { EventEmitter } from '../../stencil-public-runtime';
import type { ProgressTrackerOrientation, ProgressTrackerStep, ProgressTrackerStepClickDetail } from './mud-progress-tracker.types';
/**
* Progress Tracker (Stepper) — visualises a user's position in a multi-step process.
*
* Two flavours:
*
* - **Display tracker** (`interactive=false`, default) — read-only. Each step is a
* `
` carrying ARIA semantics. Use for sign-up wizards, KYC flows, document
* submissions where the parent app drives navigation.
* - **Interactive tracker** (`interactive=true`) — each completed (and the current)
* step renders as a `` and emits `mudStepClick`. Pending steps remain
* non-actionable per the WAI-ARIA stepper pattern.
*
* State legend (Figma node 634:10573):
* - `pending` — neutral grey ring + faded number, non-navigable
* - `current` — brand ring + brand number, neutral label
* - `completed` — brand filled circle + white checkmark (brand underlined link label when interactive)
* - `available` — brand outline ring + brand number, navigable forward (brand underlined link label when interactive)
* - `error` — danger ring + danger cross, neutral label
*
* The component renders an ordered list with `role="list"` for AT compatibility
* (Safari + VoiceOver strip implicit list roles when `list-style: none` is set).
*
* @element mud-progress-tracker
*
* @slot - (default) Reserved for future slot-mode authoring. Currently unused —
* consumers should pass the `steps` prop.
*/
export declare class MudProgressTracker {
/**
* Layout orientation.
* - `horizontal` (default): steps flow left to right; labels render under indicators.
* - `vertical`: steps stack top to bottom; labels render to the right of indicators.
*/
orientation: ProgressTrackerOrientation;
/**
* When true, completed, current, and available steps render as `` elements
* and emit `mudStepClick`. Pending and error steps remain non-actionable in this mode.
* @default false
*/
interactive: boolean;
/**
* Compact "dot rail" rendering — the mobile breakpoint from Figma. Hides the
* step numbers and labels, leaving a rail of dots; per-status fills convey
* progress (filled brand + checkmark = completed, hollow ring = current /
* available / pending, danger ring + cross = error). Status icons are kept;
* only the numeric indicators and text labels are hidden. Works in both
* orientations.
* @default false
*/
compact: boolean;
/**
* Declarative step list. Each item: `{ id?, label, supportingText?, status, iconName?, disabled? }`.
* `status` drives the visual state and ARIA semantics — see {@link ProgressTrackerStepStatus}.
*/
steps?: ProgressTrackerStep[];
/**
* Optional zero-based index of the current step. When set, it overrides the
* `status: 'current'` value in `steps`. Mostly useful for parent-driven flows
* that mutate a single number rather than the whole array.
*/
currentStep?: number;
/**
* Accessible name for the surrounding list landmark. Falls back to
* `'Progress tracker'` (English) — Romanian consumers can pass `'Pași'`.
*/
ariaLabel?: string;
/** True when the container is narrower than the auto-compact breakpoint. */
private isNarrow;
host: HTMLElement;
/**
* Emitted when an interactive step is activated via mouse, keyboard, or AT.
* Detail carries the `index` and the full `step` object that was clicked.
* Only fires when `interactive=true` and the step is not disabled.
*/
mudStepClick: EventEmitter;
private resizeObserver?;
connectedCallback(): void;
componentWillLoad(): void;
disconnectedCallback(): void;
/**
* Returns the effective status for a step, honouring `currentStep` override.
* When `currentStep` is provided, the step at that index is promoted to
* `'current'` regardless of its declared status (unless it is `'error'`,
* which we never silently overwrite).
*/
private effectiveStatus;
/** Whether the step is activatable in interactive mode. */
private isActionable;
/** Pick the right inline indicator (icon name, number, or null for raw text). */
private resolveIconName;
private readonly handleStepClick;
private readonly handleKeyDown;
private renderIndicator;
private renderLabelBlock;
private renderStepBody;
private renderStep;
render(): any;
}