UNPKG

@nimbus-ds/stepper

Version:

Stepper component for guiding users through multi-step processes

49 lines (42 loc) 1.67 kB
import React, { ReactNode } from "react"; import { BoxProps } from "@nimbus-ds/box"; import { StepperItemProps } from "./components/StepperItem"; import { StepperCardProps } from "./components/StepperCard"; export interface StepperComponents { Item: React.FC<Omit<StepperItemProps, "step">>; Card: React.FC<StepperCardProps>; } export interface BaseStepperProperties { /** * The currently active step (0-based index). * Steps before this will be marked as completed. */ activeStep: number; /** * The content of the stepper (StepperItem components). * Total steps will be calculated automatically based on the number of children. * @TJS-type React.ReactNode */ children: ReactNode; } export interface ControlledStepperProperties extends BaseStepperProperties { /** * The currently selected step (0-based index). * This step will be visually highlighted to show user selection. */ selectedStep: number; /** * Callback called when a step is selected. * Receives the step number (0-based index) as parameter. */ onSelectStep: (step: number) => void; } /** * Props for the Stepper component, supporting both controlled and uncontrolled modes */ export type StepperProps = (BaseStepperProperties | ControlledStepperProperties) & Omit<BoxProps, "display" | "flexWrap" | "gap">; // For docs purposes, we need to merge the two types export type StepperProperties = BaseStepperProperties & ControlledStepperProperties; // Re-export types from components for convenience export type { StepperItemProps, StepState } from "./components/StepperItem"; export type { StepperCardProps } from "./components/StepperCard";