Flip Text

PreviousNext

Flipped text animation, flips the text

Docs
systaliko-uiui

Preview

Loading preview…
registry/text/text-flip/index.tsx
import { cn } from '@/lib/utils';
import * as React from 'react';

interface TextFlipProps extends React.HTMLAttributes<HTMLElement> {
  as?: React.ElementType;
}

export function TextFlip({
  as: Component = 'span',
  className,
  style,
  children,
  ...props
}: TextFlipProps) {
  return (
    <Component
      className={cn(
        'group hover:rotate-x-90 relative size-full py-0.5 px-1.5 text-nowrap inline-flex justify-center items-center transition-transform duration-700 ease-[cubic-bezier(0.75,0,0.24,1)] backface-hidden',
        className,
      )}
      style={{
        transformStyle: 'preserve-3d',
        ...style,
      }}
      {...props}
    >
      <span className="group-hover:-translate-y-full group-hover:opacity-0 transition-transform duration-700 ease-[cubic-bezier(0.75,0,0.24,1)]">
        {children}
      </span>
      <span
        className={cn(
          'absolute inset-0 -rotate-x-90 opacity-0',
          'group-hover:opacity-100 group-hover:translate-y-0',
          'transition-transform duration-700 ease-[cubic-bezier(0.75,0,0.24,1)]',
          'flex items-center justify-center',
          'transform-[rotateX(-90deg)_translateY(50%)] origin-[center_bottom]',
        )}
      >
        {children}
      </span>
    </Component>
  );
}

Installation

npx shadcn@latest add @systaliko-ui/text-flip

Usage

import { TextFlip } from "@/components/ui/text-flip"
<TextFlip />