"use client";

import { ComponentConfig } from "@/types/component";
import { ButtonActionConfig } from "@/lib/utils/buttonActions";

/**
 * ButtonPrimary 컴포넌트 설정 타입
 */
export interface ButtonPrimaryConfig extends ComponentConfig {
  // 버튼 관련 설정
  text?: string;
  actionType?: "button" | "submit" | "reset";
  variant?: "primary" | "secondary" | "danger";

  // 버튼 액션 설정
  action?: ButtonActionConfig;

  // 공통 설정
  disabled?: boolean;
  required?: boolean;
  readonly?: boolean;
  placeholder?: string;
  helperText?: string;

  // 스타일 관련
  size?: "sm" | "md" | "lg";

  // 이벤트 관련
  onChange?: (value: any) => void;
  onFocus?: () => void;
  onBlur?: () => void;
  onClick?: () => void;
}

/**
 * ButtonPrimary 컴포넌트 Props 타입
 */
export interface ButtonPrimaryProps {
  id?: string;
  name?: string;
  value?: any;
  config?: ButtonPrimaryConfig;
  className?: string;
  style?: React.CSSProperties;

  // 이벤트 핸들러
  onChange?: (value: any) => void;
  onFocus?: () => void;
  onBlur?: () => void;
  onClick?: () => void;
}
