import type { ReactElement, ReactNode } from "react"; import type { ProgressTrackerProps } from "../ProgressTracker"; export interface DialogStep { content: ReactNode; progressTracker?: ReactElement; /** When provided, overrides the dialog-level sidePanel for this step. */ sidePanel?: ReactElement; onBeforeNext?: () => boolean | Promise; onBeforeBack?: () => boolean | Promise; onEnter?: () => void | Promise; } export interface MultiStepDialogOptions { steps: DialogStep[]; onComplete?: () => void; completeButtonLabel?: string; backButtonDisabled?: boolean; nextButtonDisabled?: boolean; } export type DialogStepWithoutSidePanel = Omit & { sidePanel?: never; }; export interface MultiStepDialogOptionsWithoutSidePanel extends Omit { steps: DialogStepWithoutSidePanel[]; } export interface SingleStepNeverProps { primaryAction?: never; secondaryAction?: never; children?: never; progressTracker?: never; } export interface MultiStepNeverProps { steps?: never; onComplete?: never; completeButtonLabel?: never; backButtonDisabled?: never; nextButtonDisabled?: never; }