import type { ButtonHTMLAttributes, ReactNode } from 'react'
type ButtonVariant = 'primary' | 'secondary' | 'danger' | 'ghost'
type ButtonProps = ButtonHTMLAttributes & {
variant?: ButtonVariant
size?: 'sm' | 'md' | 'lg'
loading?: boolean
icon?: ReactNode
}
const variantStyles: Record = {
primary:
'bg-[var(--color-btn-primary-bg)] text-[var(--color-btn-primary-fg)] hover:bg-[var(--color-btn-primary-bg-hover)] active:bg-[var(--color-btn-primary-bg-active)]',
secondary:
'bg-[var(--color-surface)] text-[var(--color-text-primary)] border border-[var(--color-border)] hover:bg-[var(--color-surface-hover)]',
danger:
'bg-[var(--color-error)] text-white hover:opacity-90',
ghost:
'bg-transparent text-[var(--color-text-secondary)] hover:bg-[var(--color-surface-hover)] hover:text-[var(--color-text-primary)]',
}
const sizeStyles = {
sm: 'px-2 py-1 text-xs',
md: 'px-4 py-2 text-sm',
lg: 'px-5 py-2.5 text-sm',
}
export function Button({
variant = 'primary',
size = 'md',
loading = false,
icon,
disabled,
children,
className = '',
...props
}: ButtonProps) {
return (
)
}
function Spinner() {
return (
)
}