import { Dialog as BaseDialog } from "@base-ui/react/dialog"; import { cva, type VariantProps } from "class-variance-authority"; import { AlertTriangle, Inbox, LoaderCircle, RefreshCw, X, type LucideIcon, } from "lucide-react"; import { forwardRef, type ButtonHTMLAttributes, type HTMLAttributes, type InputHTMLAttributes, type ReactNode, } from "react"; import { cn } from "../lib/utils"; const buttonVariants = cva( "inline-flex min-h-10 items-center justify-center gap-2 rounded-xl px-4 text-sm font-semibold transition-all duration-200 focus-visible:outline-none focus-visible:ring-4 focus-visible:ring-primary/15 disabled:pointer-events-none disabled:opacity-50 active:scale-[0.98]", { variants: { variant: { primary: "bg-primary text-primary-foreground shadow-[0_8px_24px_-10px_var(--primary)] hover:-translate-y-0.5 hover:bg-primary/90", secondary: "border border-border bg-surface text-foreground shadow-sm hover:border-border-strong hover:bg-surface-muted", ghost: "text-muted hover:bg-surface-muted hover:text-foreground", danger: "bg-danger text-white shadow-[0_8px_24px_-10px_var(--danger)] hover:-translate-y-0.5 hover:bg-danger/90", }, size: { sm: "min-h-8 rounded-lg px-3 text-xs", md: "min-h-10 px-4", lg: "min-h-12 px-5", icon: "size-10 px-0", }, }, defaultVariants: { variant: "primary", size: "md", }, }, ); type ButtonProps = ButtonHTMLAttributes & VariantProps & { loading?: boolean; }; export const Button = forwardRef( ({ className, variant, size, loading, children, disabled, ...props }, ref) => ( ), ); Button.displayName = "Button"; export const Input = forwardRef>( ({ className, ...props }, ref) => ( ), ); Input.displayName = "Input"; export const Textarea = forwardRef< HTMLTextAreaElement, React.TextareaHTMLAttributes >(({ className, ...props }, ref) => (