'use client'; import { forwardRef, HTMLAttributes } from 'react'; import styles from './falling-text.module.css'; export interface FallingTextProps extends HTMLAttributes { /** Text to display falling */ children: string; /** Fall duration in seconds */ duration?: number; /** Stagger delay between letters in ms */ stagger?: number; /** Loop the animation */ loop?: boolean; /** Fall direction */ direction?: 'down' | 'up'; } export const FallingText = forwardRef( ( { children, duration = 2, stagger = 100, loop = true, direction = 'down', className, style, ...props }, ref ) => { const letters = children.split(''); return (
{letters.map((letter, i) => ( {letter === ' ' ? '\u00A0' : letter} ))}
); } ); FallingText.displayName = 'FallingText'; export default FallingText;