/**
 * 메일 수신자 선택 컴포넌트 타입 정의
 */

// 수신자 정보
export interface Recipient {
  id: string;
  email: string;
  name?: string;
  type: "internal" | "external"; // 내부 사용자 또는 외부 이메일
  userId?: string; // 내부 사용자인 경우 사용자 ID
}

// 컴포넌트 설정
export interface MailRecipientSelectorConfig {
  // 기본 설정
  toFieldName?: string; // formData에 저장할 수신자 필드명 (기본: mailTo)
  ccFieldName?: string; // formData에 저장할 참조 필드명 (기본: mailCc)
  
  // 표시 옵션
  showCc?: boolean; // 참조(CC) 필드 표시 여부 (기본: true)
  showInternalSelector?: boolean; // 내부 인원 선택 표시 여부 (기본: true)
  showExternalInput?: boolean; // 외부 이메일 입력 표시 여부 (기본: true)
  
  // 라벨
  toLabel?: string; // 수신자 라벨 (기본: "수신자")
  ccLabel?: string; // 참조 라벨 (기본: "참조(CC)")
  
  // 제한
  maxRecipients?: number; // 최대 수신자 수 (기본: 무제한)
  maxCcRecipients?: number; // 최대 참조 수신자 수 (기본: 무제한)
  
  // 필수 여부
  required?: boolean; // 수신자 필수 입력 여부 (기본: true)
}

// 컴포넌트 Props
export interface MailRecipientSelectorProps {
  // 기본 Props
  id?: string;
  config?: MailRecipientSelectorConfig;
  
  // 폼 데이터 연동
  formData?: Record<string, any>;
  onFormDataChange?: (fieldName: string, value: any) => void;
  
  // 스타일
  className?: string;
  style?: React.CSSProperties;
  
  // 모드
  isPreviewMode?: boolean;
  isInteractive?: boolean;
}

// 내부 사용자 정보 (API 응답 - camelCase)
export interface InternalUser {
  userId: string;
  userName: string;
  email?: string;
  deptName?: string;
  positionName?: string;
}

