import { default as React } from 'react';
import { IStepperStepExternalProps } from './interfaces';
import { StepperMode } from './types';
/**
* 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?: 'horizontal' | 'vertical' | 'large';
/**
* 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
* @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
* @example completedSteps={[0, 1]} -> First and second steps are completed
*/
completedSteps?: 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[];
}