import type { ButtonHTMLAttributes, InputHTMLAttributes, ReactNode } from "react"; export function cx(...classes: Array): string { return classes.filter(Boolean).join(" "); } /* -------------------------------------------------------------------- Card */ export function Card({ children, className, }: { children: ReactNode; className?: string; }) { return (
{children}
); } export function CardTitle({ children, hint, }: { children: ReactNode; hint?: ReactNode; }) { return (

{children}

{hint ?

{hint}

: null}
); } /* ------------------------------------------------------------------ Button */ type ButtonProps = ButtonHTMLAttributes & { variant?: "primary" | "secondary" | "ghost" | "danger"; size?: "md" | "sm"; }; const BUTTON_VARIANTS: Record, string> = { primary: "bg-indigo-600 text-white hover:bg-indigo-700 disabled:hover:bg-indigo-600", secondary: "border border-slate-300 bg-white text-slate-700 hover:bg-slate-50 disabled:hover:bg-white", ghost: "text-slate-600 hover:bg-slate-100 disabled:hover:bg-transparent", danger: "bg-red-600 text-white hover:bg-red-700 disabled:hover:bg-red-600", }; export function Button({ variant = "primary", size = "md", className, ...props }: ButtonProps) { return (