VibeUI
ComponentsDocs
VibeUI

Components with taste, that you own. Copy the source, retint the tokens, keep every line.

Library

  • All components
  • Signature pieces
  • Text effects
  • Footers

Docs

  • Introduction
  • Installation
  • Theming
  • CLI

Project

  • GitHub
  • Agents and MCP
  • Issues
  • MIT license
© 2026 VibeUI · MIT licensed
  1. Components
  2. Text effects
  3. Letter Hover

Letter Hover

Each letter lifts and tints as the cursor passes over it.

Text effectsServer-safe
Letter by letter

Install

bash
npx @agents-npm-packages/vibeui add letter-hover --dir ./src/components/ui

Import

tsx
import { LetterHover } from "@/components/ui/letter-hover"

API

Generated from the component's TypeScript types, so it always matches the source. * marks a required prop.

<LetterHover>

PropTypeDefaultDescription
text*string—The text to render.
classNamestring—Extra classes, merged with the component's own.

Source

src/components/ui/letter-hover.tsx
import { cn } from "@/lib/utils";

/** Each letter lifts and tints as the cursor passes over it. */
export function LetterHover({
  text,
  className,
}: {
  text: string;
  className?: string;
}) {
  return (
    <span
      className={cn("inline-flex font-medium tracking-[-0.02em] text-ink", className)}
      aria-label={text}
    >
      {text.split("").map((char, i) => (
        <span
          key={i}
          aria-hidden
          className="inline-block transition-[transform,color] duration-300 ease-spring hover:-translate-y-1.5 hover:text-accent"
        >
          {char === " " ? " " : char}
        </span>
      ))}
    </span>
  );
}

Exports LetterHover. Peer dependencies: clsx, tailwind-merge.

PreviousHighlight TextNextNeon Text