'use client'; import { forwardRef, ButtonHTMLAttributes } from 'react'; import styles from './glass-button.module.css'; export interface GlassButtonProps extends ButtonHTMLAttributes { children: React.ReactNode; /** Backdrop blur amount (default: '10px') */ blur?: string; /** Background opacity 0-1 (default: 0.1) */ bgOpacity?: number; /** Border opacity 0-1 (default: 0.2) */ borderOpacity?: number; /** Hover background opacity 0-1 (default: 0.2) */ hoverOpacity?: number; /** Glow intensity 0-1 (default: 0) */ glowAmount?: number; /** Custom glass color (rgba or hex with alpha) */ glassColor?: string; /** Custom border color */ borderColor?: string; } export const GlassButton = forwardRef( ( { children, blur = '10px', bgOpacity = 0.1, borderOpacity = 0.2, hoverOpacity = 0.2, glowAmount = 0, glassColor, borderColor, className, style, ...props }, ref ) => { const customStyle: React.CSSProperties = { '--glass-blur': blur, '--glass-bg-opacity': bgOpacity, '--glass-border-opacity': borderOpacity, '--glass-hover-opacity': hoverOpacity, '--glass-glow': glowAmount, ...(glassColor && { '--glass-color': glassColor }), ...(borderColor && { '--glass-border': borderColor }), ...style, } as React.CSSProperties; return ( ); } ); GlassButton.displayName = 'GlassButton'; export default GlassButton;