import type { ReactNode } from "react";

export type StepStatus = "pending" | "active" | "completed" | "disabled";

export interface StepValidation {
  isValid: boolean;
  errors?: string[] | undefined;
  warnings?: string[] | undefined;
}

export interface StepIndicatorProps {
  stepNumber: number;
  status: StepStatus;
}

export interface ValidationStatusProps {
  errors?: string[] | undefined;
  warnings?: string[] | undefined;
  showSuccess?: boolean | undefined;
}

export interface StepHeaderProps {
  stepNumber: number;
  title: string;
  description?: string | undefined;
  status: StepStatus;
  validation?: StepValidation | undefined;
  showStepIndicator?: boolean | undefined;
  headerContent?: ReactNode | undefined;
}

export interface StepActionsProps {
  onNext?: (() => void) | undefined;
  onPrevious?: (() => void) | undefined;
  onSkip?: (() => void) | undefined;
  nextLabel?: string | undefined;
  previousLabel?: string | undefined;
  skipLabel?: string | undefined;
  loading?: boolean | undefined;
  disabled?: boolean | undefined;
  hasErrors?: boolean | undefined;
}

export type CardVariant = "default" | "highlighted" | "compact";
