import { forwardRef, Fragment, type ComponentPropsWithoutRef, type ElementRef } from "react"; import Link from "next/link"; import { Button as WedgesButton } from "@lemonsqueezy/wedges"; import { cn } from "@/lib/utils"; type ButtonElement = ElementRef; type ButtonProps = Omit, "size"> & { size?: "lg" | "md" | "md-lg"; href?: string; target?: string; scroll?: boolean; hoverEffect?: boolean; }; function HoverComponent({ children }: { children: React.ReactNode }) { return {children}; } export const Button = forwardRef((props, ref) => { const { after, children, className, href, scroll, shape = "pill", size = "md", asChild = false, target, variant, disabled, hoverEffect = false, ...otherProps } = props; const buttonSizes = cn( size === "lg" && "px-10 py-4 text-base", size === "md" && "px-12px py-8px", size === "md-lg" && "text-[15px]" ); const hoverEffectArrow = after ?? ( ); const HoverEffectWrapper = hoverEffect ? HoverComponent : Fragment; return ( { // eslint-disable-next-line no-nested-ternary -- allow for cleaner code asChild ? ( children ) : href ? ( {children} ) : ( <>{children} ) } {hoverEffect ? ( ) : null} ); }); Button.displayName = "Button";