"use client"; import React from "react"; export interface GradientButtonProps extends React.ButtonHTMLAttributes { children: React.ReactNode; size?: "sm" | "md" | "lg" | "xl"; className?: string; gradientColors?: string[]; animationSpeed?: number; glowEffect?: boolean; glowSize?: number; variant?: "default" | "outline" | "ghost"; } export function GradientButton({ children, size = "md", className = "", gradientColors = [ "#ff6d1b", "#ffee55", "#5bff89", "#4d8aff", "#6b5fff", "#ff64f9", "#ff6565", ], animationSpeed = 2, glowEffect = true, glowSize = 4, variant = "default", ...props }: GradientButtonProps) { // Generate gradient string from colors const gradientString = gradientColors.join(", "); // Size classes mapping const sizeClasses = { sm: "text-sm px-4 py-2 rounded-lg", md: "text-base px-6 py-2 rounded-lg", lg: "text-lg px-8 py-3 rounded-lg", xl: "text-2xl px-10 py-4 rounded-lg", }; // Border styles based on variant const borderStyles = { default: "border-transparent", outline: "border-current", ghost: "border-transparent bg-opacity-10", }; // Define the button's background, including the inner fill and the border gradient const buttonBackground = variant === "ghost" ? `linear-gradient(90deg, ${gradientString})` // Ghost variant uses only the gradient : `linear-gradient(#121213, #121213), linear-gradient(#121213 50%, rgba(18, 18, 19, 0.6) 80%, rgba(18, 18, 19, 0)), linear-gradient(90deg, ${gradientString})`; return ( <>