"use client";

import { ComponentConfig } from "@/types/component";

/**
 * Button 컴포넌트 통합 설정 타입
 *
 * v2-button-primary + button-primary(legacy) + related-data-buttons(legacy) 흡수.
 * 단일 버튼 + 12종 액션 타입 + 5종 스타일 variant 지원.
 */

export type ButtonVariant =
  | "primary"
  | "secondary"
  | "default"
  | "destructive"
  | "outline"
  | "ghost";

export type ButtonSize = "sm" | "md" | "lg";

export type ButtonActionType =
  | "save"
  | "edit"
  | "delete"
  | "add"
  | "cancel"
  | "close"
  | "navigate"
  | "popup"
  | "search"
  | "reset"
  | "submit"
  | "approval"
  | "custom";

export interface ButtonConfig extends ComponentConfig {
  /** 버튼 라벨 텍스트. 기본 '버튼'. */
  text?: string;
  /** 버튼 스타일 variant. 기본 'primary'. */
  variant?: ButtonVariant;
  /** 크기. 기본 'md'. */
  size?: ButtonSize;
  /** 액션 종류 (12종 + custom). 기본 'save'. */
  actionType?: ButtonActionType;
  /** 확인 메시지 (있으면 실행 전 confirm 팝업). */
  confirm?: string;
  /** 비활성 여부. 기본 false. */
  disabled?: boolean;
  /** 커스텀 아이콘 이름 (lucide). 선택. */
  icon?: string;
  /** 아이콘 위치. 기본 'left'. */
  iconPosition?: "left" | "right";
  /** 배경 색. variant 보다 우선. */
  backgroundColor?: string;
  /** 텍스트 색. variant 보다 우선. */
  textColor?: string;
  /** 모서리 반경. 기본 '6px'. */
  borderRadius?: string;
}
