Newer
Older
Claude_Test / components / GlitchText.tsx
'use client'

import React from 'react'

interface GlitchTextProps {
  text: string
  as?: 'h1' | 'h2' | 'h3' | 'span'
  className?: string
  intensity?: 'subtle' | 'normal' | 'aggressive'
}

const intensityMap = {
  subtle: 3, // 3s interval
  normal: 2.5, // 2.5s interval
  aggressive: 1.5, // 1.5s interval
}

const ComponentWrapper = React.forwardRef<HTMLElement, GlitchTextProps>(
  ({ text, as: Component = 'h1', className, intensity = 'normal' }, ref) => {
    const duration = intensityMap[intensity]

    return (
      <Component
        ref={ref}
        className={`glitch ${className ?? ''}`}
        data-text={text}
        style={{
          '--glitch-duration': `${duration}s`,
        } as React.CSSProperties}
      >
        {text}
      </Component>
    )
  }
)

ComponentWrapper.displayName = 'GlitchText'

export default ComponentWrapper