Skip to content
Black FridayBlack Friday launch price: Lifetime $149 until 30 Nov. Regular price $299 from 1 Dec.ends in 15d 03:13:37Get Lifetime →
loopkit
proNew199 lines · framer-motion

Hero Terminal Typing

A terminal that types its own pitch. A split hero: copy and two CTAs on the left, a terminal window on the right that types out a small command-and-output script character by character and loops.

Use it for
Developer tools, CLIs and infra products that want their hero to feel like a real session instead of a static screenshot.
Themes
Light + dark
License
Commercial use
Live
CLI · One command

Ship from the terminal you already live in

A typing terminal built for developer tools, CLIs and anything that lives one command away.

zsh — loopkit
❯
tsx
"use client";

import * as React from "react";
import { motion, useReducedMotion } from "framer-motion";
import { cn } from "@/lib/utils";

function useReducedMotionSafe() {
  const prefersReduced = useReducedMotion();
  const [mounted, setMounted] = React.useState(false);
  React.useEffect(() => setMounted(true), []);
  return mounted ? !!prefersReduced : false;
}

/**
 * Split hero: copy on the left, a terminal window on the right that types out
 * a small command/output script character by character and loops. Pure
 * framer-motion + a timer, no canvas or WebGL.
 */

export interface HeroTerminalTypingProps {
  eyebrow?: string;
  headline?: string;

The rest is in Pro.

Full source, the rebuild prompt and registry install unlock with Pro or Lifetime.

Get Pro

How it behaves

  • →A small state machine (lineIndex/charIndex) reveals one script (commandSet: deploy, install or test) character by character using setTimeout, with a faster per-character delay for command lines and a slower one for output lines.
  • →speed scales every delay in the script; loop restarts the script from the top 1.8s after the last line finishes, or leaves it finished if off.
  • →A blinking block cursor renders after the line currently being typed; the last line of every script is styled as a success line in the signal colour.
  • →prefers-reduced-motion jumps straight to the fully-typed final state instead of animating.
  • →Terminal colours are plain design tokens (bg-foreground/text-background) so the window reads as a dark terminal in light mode and a light one in dark mode — always maximum contrast, no raw hex.

Accessibility

  • ✓The terminal is a labelled group (`role=group`, `aria-label`); its content is live text, not canvas, so it's selectable and readable by assistive tech as it appears.
  • ✓Headline is a single <h1>; layout stacks to a single column under 1024px with the terminal below the copy.
  • ✓CTAs keep the design system's visible focus ring.
  • ✓Honours prefers-reduced-motion.