源码 · page.tsx

// page.tsx
'use client'

import ShinyText from '../components/ShinyText'

const ShinyTextPage = () => {
  return (
    <div className="relative flex h-full flex-col gap-4">
      {}
      

      <div className="relative flex flex-1 flex-col justify-center rounded border border-gray-700 bg-gray-900/50 p-6">
        <h3 className="absolute top-10 left-10 mb-2 text-sm font-medium text-gray-300">CSS</h3>
        <ShinyText text="Just some shiny text!" disabled={false} speed={3} className="mx-auto text-center text-4xl" />
      </div>
    </div>
  )
}

export default ShinyTextPage

// ShinyText.tsx
import './ShinyText.css'

interface ShinyTextProps {
  text: string
  disabled?: boolean
  speed?: number
  className?: string
}

const ShinyText = ({ text, disabled = false, speed = 5, className = '' }: ShinyTextProps) => {
  const animationDuration = `${speed}s`

  return (
    <div className={`shiny-text w-fit ${disabled ? 'disabled' : ''} ${className}`} style={{ animationDuration }}>
      {text}
    </div>
  )
}

export default ShinyText

CSS

Just some shiny text!