/**
 * 바코드 라벨 관리 시스템 타입 정의
 * ZD421 등 바코드 프린터 연동용 라벨 템플릿/출력 관리
 */

// 캔버스 요소 (디자이너용)
export interface BarcodeLabelComponent {
  id: string;
  type: "text" | "barcode" | "image" | "line" | "rectangle";
  x: number;
  y: number;
  width: number;
  height: number;
  zIndex: number;
  content?: string;
  fontSize?: number;
  fontColor?: string;
  fontWeight?: string;
  barcodeType?: string;
  barcodeValue?: string;
  showBarcodeText?: boolean;
  imageUrl?: string;
  objectFit?: string;
  lineColor?: string;
  lineWidth?: number;
  backgroundColor?: string;
}

export interface BarcodeLabelLayout {
  width_mm: number;
  height_mm: number;
  components: BarcodeLabelComponent[];
}

// 바코드 라벨 마스터 (목록/카드용)
export interface BarcodeLabelMaster {
  label_id: string;
  label_name_kor: string;
  label_name_eng: string | null;
  description: string | null;
  width_mm?: number;
  height_mm?: number;
  layout_json?: string | null;
  template_type?: string;
  use_yn: string;
  created_at: string;
  created_by: string | null;
  updated_at: string | null;
  updated_by: string | null;
}

// 목록 조회 응답
export interface GetBarcodeLabelsResponse {
  items: BarcodeLabelMaster[];
  total: number;
  page: number;
  limit: number;
}

// 목록 조회 파라미터
export interface GetBarcodeLabelsParams {
  page?: number;
  limit?: number;
  searchText?: string;
  useYn?: string;
  sortBy?: string;
  sortOrder?: "ASC" | "DESC";
}

// 생성 요청
export interface CreateBarcodeLabelRequest {
  labelNameKor: string;
  labelNameEng?: string;
  description?: string;
  templateType?: string;
  templateId?: string; // 선택 시 해당 템플릿 레이아웃 적용
}

// 수정 요청
export interface UpdateBarcodeLabelRequest {
  labelNameKor?: string;
  labelNameEng?: string;
  description?: string;
  templateType?: string;
  useYn?: string;
}
