Transitions

Logo Wipe

A screen change where your logo covers, holds and leaves upwards.

Preview

Installation

Terminal
npx @usefluid/cli add logo-wipe

Usage

LogoWipe.tsx
import { LogoWipe } from "./LogoWipe";

<LogoWipe logo={logo} view={step}>
  {step === "plan" ? <Plan /> : <Checkout />}
</LogoWipe>

API reference

PropTypeDefaultDescription
LogoWipe logostring—Your logo path.
LogoWipe viewstring—Change it to play the wipe; the old children stay until covered.
LogoWipe fixedbooleanfalseCover the whole screen instead of the wrapped area.
LogoCurtain coveredboolean—Controlled curtain, for route changes.
useCurtain(){ covered, cover(), uncover() }—await cover() resolves once the screen is covered.

Keyboard and screen readers

Hidden from screen readers. Reduced motion skips it.

Notes

LogoWipe holds the old children, which works for screens inside one component. For routes in Next.js App Router use the curtain:

Example
const curtain = useCurtain();
const router = useRouter();
const pathname = usePathname();
useEffect(() => curtain.uncover(), [pathname]);

<a
  href="/projects"
  onClick={async (e) => {
    if (e.metaKey || e.ctrlKey || e.shiftKey || pathname === "/projects") return;
    e.preventDefault();
    await curtain.cover();
    router.push("/projects");
  }}
>
  Projects
</a>
<LogoCurtain logo={logo} covered={curtain.covered} />

Every colour comes from the --fluid-* variables, and the piece is yours to change.

How it is made

When the screen changes, a curtain in the brand colour grows in a circle from the centre, with the logo popping in the middle. The content swaps under the curtain, which then rises. With reduced motion the swap is direct.

For your agent

For your agent

Add Logo Wipe to my project with the Fluid library. Use LogoWipe on the important screen changes, with my logo. Read my project first. Use my logo, my colours and my font through the --fluid-* variables. Keep 44px touch targets, visible focus and reduced motion. If I have no SVG logo, ask before making one up.