// Authentication component prop types

export interface LoginFormProps {
  onSuccess?: () => void;
  onRegisterClick?: () => void;
  onForgotPasswordClick?: () => void;
  className?: string;
  autoFocus?: boolean;
}

export interface RegistrationContainerProps {
  onSuccess?: () => void;
  onLoginClick?: () => void;
  className?: string;
}

export interface PasswordResetFormProps {
  token?: string;
  onSuccess?: () => void;
  onBackClick?: () => void;
  className?: string;
  autoFocus?: boolean;
  mode?: 'request' | 'reset';
}

export interface ProfileSettingsProps {
  onSuccess?: () => void;
  className?: string;
  initialTab?: 'profile' | 'security' | 'preferences' | 'notifications';
}

export interface PrelaunchEmailFormProps {
  onLoginClick?: () => void;
  className?: string;
}

// Additional types for internal use
export type RegistrationStep = 'personal' | 'bakery' | 'security' | 'verification';

export interface ExtendedUserLogin {
  email: string;
  password: string;
  remember_me: boolean;
}

export interface ExtendedUserRegistration {
  // Personal Information
  full_name: string;
  email: string;
  phone: string;
  
  // Bakery Information  
  tenant_name: string;
  bakery_type: string;
  address: string;
  city: string;
  postal_code: string;
  country: string;
  
  // Security
  password: string;
  confirmPassword: string;
  
  // Terms
  acceptTerms: boolean;
  acceptPrivacy: boolean;
  acceptMarketing: boolean;
}

export interface ProfileFormData {
  full_name: string;
  email: string;
  phone: string;
  language: string;
  timezone: string;
  avatar?: string;
}

export interface BakeryFormData {
  bakery_name: string;
  bakery_type: string;
  address: string;
  city: string;
  postal_code: string;
  country: string;
  website?: string;
  description?: string;
}

export interface NotificationSettings {
  email_notifications: boolean;
  order_notifications: boolean;
  marketing_notifications: boolean;
  security_notifications: boolean;
  low_stock_alerts: boolean;
  production_reminders: boolean;
}

export interface PasswordChangeData {
  currentPassword: string;
  newPassword: string;
  confirmNewPassword: string;
}