import { type ReactNode, type HTMLAttributes } from 'react' import { clsx } from 'clsx' interface GlassCardProps extends HTMLAttributes { children: ReactNode variant?: 'default' | 'dark' | 'neon' | 'gradient' hover?: boolean glow?: boolean className?: string } export function GlassCard({ children, variant = 'default', hover = false, glow = false, className, ...props }: GlassCardProps) { const variantClasses = { default: 'glass', dark: 'glass-dark', neon: 'glass-neon', gradient: 'gradient-border', } return (
{children}
) } // Stats card variant interface StatsCardProps { label: string value: string | number icon?: ReactNode trend?: { value: number isPositive: boolean } color?: 'neon' | 'purple' | 'pink' | 'default' className?: string } export function StatsCard({ label, value, icon, trend, color = 'default', className, }: StatsCardProps) { const colorClasses = { neon: 'border-neon-500/30 hover:border-neon-500/50', purple: 'border-accent-500/30 hover:border-accent-500/50', pink: 'border-pink-500/30 hover:border-pink-500/50', default: 'border-dark-600 hover:border-dark-500', } const iconColorClasses = { neon: 'text-neon-500 bg-neon-500/10', purple: 'text-accent-500 bg-accent-500/10', pink: 'text-pink-500 bg-pink-500/10', default: 'text-gray-400 bg-dark-700', } const valueColorClasses = { neon: 'text-neon-400', purple: 'text-accent-400', pink: 'text-pink-400', default: 'text-white', } return (

{label}

{value}

{trend && (

{trend.isPositive ? '+' : ''}{trend.value}%

)}
{icon && (
{icon}
)}
) } // Feature card variant interface FeatureCardProps { title: string description: string icon: ReactNode color?: 'neon' | 'purple' | 'pink' className?: string } export function FeatureCard({ title, description, icon, color = 'neon', className, }: FeatureCardProps) { const colorClasses = { neon: { icon: 'text-neon-500 bg-neon-500/10 group-hover:bg-neon-500/20', border: 'group-hover:border-neon-500/50', glow: 'group-hover:shadow-[0_0_20px_rgba(34,211,238,0.12)]', }, purple: { icon: 'text-accent-500 bg-accent-500/10 group-hover:bg-accent-500/20', border: 'group-hover:border-accent-500/50', glow: 'group-hover:shadow-[0_0_20px_rgba(139,92,246,0.12)]', }, pink: { icon: 'text-pink-500 bg-pink-500/10 group-hover:bg-pink-500/20', border: 'group-hover:border-pink-500/50', glow: 'group-hover:shadow-[0_0_20px_rgba(244,114,182,0.12)]', }, } const colors = colorClasses[color] return (
{icon}

{title}

{description}

) } // Interactive card with animated border interface AnimatedBorderCardProps extends HTMLAttributes { children: ReactNode className?: string } export function AnimatedBorderCard({ children, className, ...props }: AnimatedBorderCardProps) { return (
{/* Animated gradient border */}
{/* Card content */}
{children}
) }