import React from 'react';
import { Button as AntBtn} from 'antd';
import { SearchOutlined } from '@ant-design/icons';

/**
 * Ant Design의 Button을 사용한 버튼 컴포넌트
 * @param {string} text - 버튼 텍스트
 * @param {string} type - 버튼 타입 (primary, default, dashed, link, text)
 * @param {function} onClick - 클릭 이벤트 핸들러
 * @param {string} theme - 커스텀 테마 (primary, line, disable, reset, gray, search, find)
 * @param {boolean} disabled - 비활성화 여부
 * @param {string} name - 버튼 이름
 * @param {string} width - 버튼 너비
 * @param {string} height - 버튼 높이
 */
const AntButton = ({
							   text,
							   type = 'button',
							   onClick,
							   theme,
							   disabled,
							   name,
							   width,
							   height,
							   ...props
						   }) => {
	// theme에 따른 Ant Design 버튼 타입 설정
	let buttonType = 'default';
	let shape = 'default';
	let icon = '';
	let color = 'default';
	let variant = 'outlined';
	let buttonProps = {
		disabled,
		onClick,
		name,
		style: {
			width: width || 'auto',
			height: height || '35px',
			minWidth: 'fit-content',
			fontSize: '15px',
		},
		...props
	};

	// 테마에 따른 스타일 설정
	switch (theme) {
		case 'primary':
		case 'submit':
		case 'line':
			buttonType = 'default';
			break;
		case 'disable':
			buttonProps.disabled = true;
			break;
		case 'gray':
			break;
		case 'search':
		case 'find':
			icon = <SearchOutlined />;
			break;
		case 'cancel':
			color = 'danger';
			break;
		default:
			break;
	}

	return (
		<AntBtn
			type={buttonType}
			shape={shape}
			icon={icon}
			variant={variant}
			color={color}
			htmlType={type === 'submit' ? 'submit' : 'button'}
			{...buttonProps}
		>
			{text}
		</AntBtn>
	);
};

export default AntButton;