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 ProHow 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.