import { Ref, forwardRef, ReactNode, ComponentPropsWithoutRef } from 'react' const baseClass = 'rounded px-4 py-1.75 font-bold text-sm fit-content' type ButtonVariant = 'normal' | 'primary' const getClassName = (variant: ButtonVariant, danger: boolean, disabled: boolean) => { const borders = variant === 'normal' ? 'border-solid border-main border-1' : 'no-border' const cursor = disabled ? 'cursor-not-allowed' : 'cursor-pointer' let colors = variant === 'normal' ? 'bg-default color-text' : 'bg-info color-info-contrast' let focusHoverStates = variant === 'normal' ? 'focus:bg-contrast focus:outline-none hover:bg-contrast' : 'hover:brightness-130 focus:outline-none focus:brightness-130' if (danger) { colors = variant === 'normal' ? 'bg-default color-danger' : 'bg-danger color-info-contrast' } if (disabled) { colors = variant === 'normal' ? 'bg-default color-passive-2' : 'bg-passive-2 color-info-contrast' focusHoverStates = variant === 'normal' ? 'focus:bg-default focus:outline-none hover:bg-default' : 'focus:brightness-default focus:outline-none hover:brightness-default' } return `${baseClass} ${colors} ${borders} ${focusHoverStates} ${cursor}` } interface ButtonProps extends ComponentPropsWithoutRef<'button'> { children?: ReactNode className?: string variant?: ButtonVariant dangerStyle?: boolean label?: string } const Button = forwardRef( ( { variant = 'normal', label, className = '', dangerStyle: danger = false, disabled = false, children, ...props }: ButtonProps, ref: Ref, ) => { return ( ) }, ) export default Button