import { default as React } from 'react';
import { IStepperStepExternalProps } from './interfaces';
import { StepperLabelPlacement, StepperMode } from './types';
/** @deprecated The "large" type is deprecated and will be removed in future versions. */
type DeprecatedLargeStepperVariant = 'large';
type StepperVariant = 'horizontal' | 'vertical' | DeprecatedLargeStepperVariant;
/**
* Props for the Stepper component
*
* The Stepper component uses centralized state management where the parent
* controls all step states and passes them down to StepperStep children.
* This approach ensures consistent state across all steps and simplifies navigation logic.
*/
export default interface IStepperProps {
/**
* The type of stepper layout to display
* - "horizontal": Steps arranged in a horizontal row
* - "vertical": Steps arranged vertically
* - "large": Large format with expanded content areas
* @default "horizontal"
*/
type?: StepperVariant;
/**
* The size variant of the stepper — only applies to horizontal type
* - "sm": Compact indicator (28px), normal icon (16px)
* - "lg": Larger indicator (40px), larger icon (24px)
* @default "sm"
*/
size?: 'sm' | 'lg';
/**
* Where a step's label sits relative to its marker — only applies to horizontal type
* - "side": Label beside the marker; each step is only as wide as its own content
* - "bottom": Label centered below the marker; every step takes an equal share of the row, so
* labels of different lengths do not change how the steps and connectors are spaced
* @default "side"
*/
labelPlacement?: StepperLabelPlacement;
/**
* The index of the currently active step (0-based)
* This step will be highlighted and marked as the current step
* If display, then we use the array index
* Priority order: active > error > warning > completed > default
* @example activeSteps={1} -> Second step is active
*/
activeSteps?: number | number[];
/**
* Array of indices for steps that have been completed (0-based)
* Completed steps will show completion styling and badges
* Priority order: active > error > warning > completed > default
* @example completedSteps={[0, 1]} -> First and second steps are completed
*/
completedSteps?: number[];
/**
* Array of indices for steps that are in error state (0-based)
* Error steps will show a red CircleAlert icon with danger background
* Priority order: active > error > warning > completed > default
* @example errorSteps={[2, 3]} -> Third and fourth steps show error state
*/
errorSteps?: number[];
/**
* Array of indices for steps that are in warning state (0-based)
* Warning steps will show an amber CircleAlert icon with warning background
* Priority order: active > error > warning > completed > default
* @example warningSteps={[4]} -> Fifth step shows warning state
*/
warningSteps?: number[];
/**
* The mode of the Stepper, to determine if it is for navigation or display only
* - "navigation": Steps are clickable and has a hover effect
* - "display": Steps are static and not clickable
* @default "display"
*/
mode?: StepperMode;
/**
* Optional click handler for step navigation
* When provided, steps become clickable and will call this function with the step index
* Only provide this if you want to enable step navigation
* @param stepIndex - The 0-based index of the clicked step
* @example
* ```tsx
* const handleStepClick = (stepIndex: number) => {
* setActiveStep(stepIndex);
* // Additional navigation logic
* };
* ```
*/
onClick?: (stepIndex: number) => void;
/**
* The children of the stepper (should be StepperStep components)
* Users should only pass props from StepperStepUserProps interface,
* internal props like status and count are managed by the parent Stepper
* @example
* ```tsx
*
*
*
*
* ```
*/
children?: React.ReactElement[];
}
export {};