diff --git a/src/components/ui/button.tsx b/src/components/ui/button.tsx index 9d33a781..5ae7a8d7 100644 --- a/src/components/ui/button.tsx +++ b/src/components/ui/button.tsx @@ -9,27 +9,27 @@ export interface ButtonProps size?: "default" | "sm" | "lg" | "icon" } +// Minimal standard variants hoisted for referential stability +const variants = { + default: "bg-primary text-primary-foreground hover:bg-primary/90", + destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90", + outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground", + secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80", + ghost: "hover:bg-accent hover:text-accent-foreground", + link: "text-primary underline-offset-4 hover:underline", +} + +const sizes = { + default: "h-10 px-4 py-2", + sm: "h-9 rounded-md px-3", + lg: "h-11 rounded-md px-8", + icon: "h-10 w-10", +} + const Button = React.forwardRef( ({ className, variant = "default", size = "default", asChild = false, ...props }, ref) => { const Comp = asChild ? Slot : "button" - // Minimal standard variants - const variants = { - default: "bg-primary text-primary-foreground hover:bg-primary/90", - destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90", - outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground", - secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80", - ghost: "hover:bg-accent hover:text-accent-foreground", - link: "text-primary underline-offset-4 hover:underline", - } - - const sizes = { - default: "h-10 px-4 py-2", - sm: "h-9 rounded-md px-3", - lg: "h-11 rounded-md px-8", - icon: "h-10 w-10", - } - return (