$129 intro price

Components

Terminal Login

Pro
planes 1.0 tty1

any email · password is planes · anything else tears the screen

Installation

ProRequires a Planes Pro license.
npx shadcn add @useplanes/terminal-login

Works once the @useplanes registry is set up in your project (one-time). After that, copy and run commands directly.

Unlock with Planes Pro

$129 once · 159 Pro components · lifetime updates.

import { TerminalLogin } from "@/components/ui/TerminalLogin";

<TerminalLogin
  banner="acme 2.4 tty1"
  onSubmit={async (email, password) => signIn(email, password)}
  onSuccess={() => router.push("/app")}
/>

Examples

Paper white phosphor

A cooler tube with a custom banner and a longer message of the day.

<TerminalLogin
  phosphor="#c8d8e0"
  banner="northwind 3.1 ttyS0"
  motd={["Last login: Mon Oct  5 22:41:07 on ttyS0", "You have mail."]}
/>

Reject on the server

Resolve false and the screen tears, prints the error, and asks again. Nothing navigates until onSuccess.

<TerminalLogin
  onSubmit={async (email, password) => {
    const res = await fetch("/api/login", { method: "POST", body: JSON.stringify({ email, password }) });
    return res.ok;
  }}
  onSuccess={() => router.replace("/dashboard")}
/>

Use cases

  • Developer tool sign-in

    A CLI, infra, or terminal product whose login should feel like the product.

  • Admin and staff portals

    An internal console that doesn't need marketing chrome, only a prompt.

  • Launch and waitlist gates

    An invite-only beta where typing a code into a tube is the whole point.

  • Themed events

    Hackathon, CTF, or retro computing pages where the login is part of the set.