Command Palette

Search for a command to run...

Docs
Flip Card

Flip Card

3D flip card with login form, customizable fields, and success states

Loading...

Installation

Usage

import FlipCard from "@/components/ruixen/flip-card";
 
export default function App() {
  const handleLogin = async (data: Record<string, string>) => {
    console.log("Login data:", data);
    // Simulate API call
    await new Promise((resolve) => setTimeout(resolve, 1000));
    return true; // Return true for success, false for failure
  };
 
  return (
    <FlipCard
      frontTitle="Welcome Back 👋"
      frontDescription="Login to continue"
      backTitle="Login Form"
      fields={[
        {
          name: "email",
          type: "email",
          label: "Email",
          placeholder: "Enter your email",
        },
        {
          name: "password",
          type: "password",
          label: "Password",
          placeholder: "Enter your password",
        },
      ]}
      onLogin={handleLogin}
      cardWidth={320}
      cardHeight={420}
    />
  );
}

Props

PropTypeDefaultDescription
frontTitlestring"Welcome Back 👋"Title on front of card
frontDescriptionstring"Login to continue"Description on front
backTitlestring"Login Form"Title on back of card
successTitlestring"Login Successful 🎉"Title when login succeeds
fieldsFlipCardField[]Default email/password fieldsForm fields configuration
onLogin(data: Record<string, string>) => Promise<boolean>-Login handler function
cardWidthnumber320Width of the card
cardHeightnumber420Height of the card
showBackInitiallybooleanfalseStart with form side visible

Features

  • 3D Flip Animation: Smooth card flip transition
  • Three States: Front welcome, back form, success confirmation
  • Customizable Fields: Configure form inputs
  • Async Login: Support for API calls with loading states
  • Error Handling: Display login errors
  • Success Animation: Celebration state after login
  • Responsive Design: Adapts to different screen sizes

Field Type

export interface FlipCardField {
  name: string;
  type?: string;
  label: string;
  placeholder?: string;
}

States

  1. Front: Welcome message with login button
  2. Back: Form with input fields
  3. Success: Confirmation message after successful login