"use client"; import React from "react"; import { cn } from "@/utils/cn"; import { LucideIcon } from "lucide-react"; interface SlateButtonProps extends React.ButtonHTMLAttributes { icon?: | LucideIcon | React.ComponentType<{ className?: string; isHovered?: boolean; isOpen?: boolean; }> | React.ReactNode; iconPosition?: "left" | "right"; children: React.ReactNode; size?: "sm" | "md" | "lg"; fullWidth?: boolean; isLoading?: boolean; isOpen?: boolean; } export const SlateButton = React.forwardRef< HTMLButtonElement, SlateButtonProps >( ( { icon: Icon, iconPosition = "left", children, className, size = "md", fullWidth = false, isLoading = false, isOpen = false, disabled, ...props }, ref, ) => { const [isHovered, setIsHovered] = React.useState(false); const sizeClasses = { sm: "h-32 px-12 text-body-small gap-6", md: "h-40 px-16 text-body-medium gap-8", lg: "h-48 px-24 text-body-large gap-10", }; const iconSizes = { sm: "w-14 h-14", md: "w-16 h-16", lg: "w-20 h-20", }; return ( ); }, ); SlateButton.displayName = "SlateButton";