import { clsx } from 'clsx'; import { type ReactNode, type ButtonHTMLAttributes } from 'react'; export type ButtonVariant = | 'primary' | 'secondary' | 'danger' | 'ghost' | 'icon'; export type ButtonSize = 'xs' | 'sm' | 'md' | 'lg'; export interface ButtonProps extends Omit, 'children'> { variant?: ButtonVariant; size?: ButtonSize; children?: ReactNode; leftIcon?: ReactNode; rightIcon?: ReactNode; } const variantStyles: Record = { primary: 'bg-indigo-600 hover:bg-indigo-700 text-white focus:ring-indigo-500', secondary: 'bg-yellow-400 hover:bg-yellow-500 text-black focus:ring-yellow-400', danger: 'bg-orange-500 hover:bg-orange-600 text-white focus:ring-orange-500', ghost: 'bg-transparent hover:bg-gray-100 text-gray-700 focus:ring-gray-300', icon: 'bg-indigo-600 hover:bg-indigo-700 text-white rounded-full p-3 focus:ring-indigo-500', }; const sizeStyles: Record = { xs: 'py-1 px-2 text-xs', sm: 'py-1.5 px-3 text-sm', md: 'py-2.5 px-5 text-base', lg: 'py-3 px-6 text-lg', }; export function Button({ variant = 'primary', size = 'md', children, leftIcon, rightIcon, className, disabled, ...props }: ButtonProps) { const isIconVariant = variant === 'icon'; return ( ); } export default Button;