import * as Headless from '@headlessui/react' import { clsx } from 'clsx' import { Link } from './link' const variants = { primary: clsx( 'inline-flex items-center justify-center px-4 py-[calc(--spacing(2)-1px)]', 'rounded-full border border-transparent bg-indigo-500 shadow-md', 'text-base font-medium whitespace-nowrap text-white', 'data-disabled:bg-indigo-500 data-disabled:opacity-40 data-hover:bg-indigo-400', ), secondary: clsx( 'relative inline-flex items-center justify-center px-4 py-[calc(--spacing(2)-1px)]', 'rounded-full border border-transparent bg-indigo-200/70 shadow-md ring-1 ring-[#D15052]/15', 'after:absolute after:inset-0 after:rounded-full after:shadow-[inset_0_0_2px_1px_#ffffff4d]', 'text-base font-medium whitespace-nowrap text-indigo-900', 'data-disabled:bg-indigo-200/70 data-disabled:opacity-40 data-hover:bg-indigo-100/70', ), outline: clsx( 'inline-flex items-center justify-center px-2 py-[calc(--spacing(1.5)-1px)]', 'rounded-lg border border-transparent shadow-sm ring-1 ring-black/10', 'text-sm font-medium whitespace-nowrap text-gray-950', 'data-disabled:bg-transparent data-disabled:opacity-40 data-hover:bg-gray-50', ), } type ButtonProps = { variant?: keyof typeof variants } & ( | React.ComponentPropsWithoutRef | (Headless.ButtonProps & { href?: undefined }) ) export function Button({ variant = 'primary', className, ...props }: ButtonProps) { className = clsx(className, variants[variant]) if (typeof props.href === 'undefined') { return } return }