import type { ButtonHTMLAttributes } from 'react'; import { cn } from '@/lib/utils'; const VARIANT = { DEFAULT: 'default', OUTLINE: 'outline', GHOST: 'ghost', } as const; type Variant = (typeof VARIANT)[keyof typeof VARIANT]; const SIZE = { DEFAULT: 'default', SM: 'sm', LG: 'lg', } as const; type Size = (typeof SIZE)[keyof typeof SIZE]; const variantStyles: Record = { default: 'bg-primary text-primary-foreground shadow-sm hover:bg-primary/90', outline: 'border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground', ghost: 'hover:bg-accent hover:text-accent-foreground', }; const sizeStyles: Record = { default: 'h-9 px-4 py-2', sm: 'h-8 px-3 text-xs', lg: 'h-10 px-6', }; interface ButtonProps extends ButtonHTMLAttributes { variant?: Variant; size?: Size; } export function Button({ className, variant = VARIANT.DEFAULT, size = SIZE.DEFAULT, ...props }: ButtonProps) { return (