'use client'; import { forwardRef, HTMLAttributes } from 'react'; export interface DistortionTextProps extends HTMLAttributes { /** The text to display */ children: string; /** Distortion type */ type?: 'wave' | 'shake' | 'skew' | 'blur'; /** Animation speed: slow, normal, fast */ speed?: 'slow' | 'normal' | 'fast'; /** Distortion intensity */ intensity?: 'subtle' | 'medium' | 'intense'; /** Only animate on hover */ hoverOnly?: boolean; } const typeAnimations = { wave: { subtle: 'animate-[wave-subtle_4s_ease-in-out_infinite]', medium: 'animate-[wave-medium_2s_ease-in-out_infinite]', intense: 'animate-[wave-intense_0.8s_ease-in-out_infinite]', }, shake: { subtle: 'animate-[shake-subtle_1s_linear_infinite]', medium: 'animate-[shake-medium_0.5s_linear_infinite]', intense: 'animate-[shake-intense_0.2s_linear_infinite]', }, skew: { subtle: 'animate-[skew-subtle_4s_ease-in-out_infinite]', medium: 'animate-[skew-medium_3s_ease-in-out_infinite]', intense: 'animate-[skew-intense_2s_ease-in-out_infinite]', }, blur: { subtle: 'animate-[blur-subtle_4s_ease-in-out_infinite]', medium: 'animate-[blur-medium_2s_ease-in-out_infinite]', intense: 'animate-[blur-intense_0.8s_ease-in-out_infinite]', }, }; export const DistortionText = forwardRef( ( { children, type = 'wave', speed = 'normal', intensity = 'medium', hoverOnly = false, className = '', ...props }, ref ) => { const animationClass = typeAnimations[type][intensity]; return ( {children} ); } ); DistortionText.displayName = 'DistortionText'; export default DistortionText;