Viora LogoViora UI
Login

Morphing Modal

A fluid morphing dialog with popLayout animation transitions.

demo-morphing-modal-demo.tsx
Loading source code...

Installation

pnpm dlx viora-ui add morphing-modal
npx viora-ui add morphing-modal
yarn viora-ui add morphing-modal
bunx --bun viora-ui add morphing-modal

Usage

"use client";

import { useState } from "react";
import { MorphingModal } from "@/components/motion/morphing-modal";

export default function Demo() {
  const [view, setView] = useState<string | null>(null);

  return (
    <div>
      <button onClick={() => setView("options")}>Open wallet options</button>
      <MorphingModal viewId={view} onClose={() => setView(null)}>
        {view === "options" && (
          <div>
            <h3>Options</h3>
            <button onClick={() => setView("details")}>View Details</button>
          </div>
        )}
        {view === "details" && (
          <div>
            <h3>Details</h3>
            <button onClick={() => setView("options")}>Back</button>
          </div>
        )}
      </MorphingModal>
    </div>
  );
}

Built by Otis

Last updated: 9/13/2026