Skip to content
shadcn.io

shadcn.io is not affiliated with official shadcn/ui

Split Panel Terminal Cursor CTA Block for React

A split call to action for a web app starter: the pitch and a Shine Button at the start, a dark terminal pane filling the end column that waits at a prompt until you press Enter.

Framework
UI library

Preview

Preview width

Installation

Part of Pro
Pro unlocks the code and one-line install of every Pro button and text effect, plus the MCP for your AI editor.
Have Pro already? Sign in to open it.Opens here as soon as you're Pro.

Overview

A split call to action where the visitor runs the install themselves, for React with Base UI, between solid rails. At the start sit a headline, a short pitch, the Shine Button (the only primary control) reading Get started, an outline docs button and a one-line note. Past a solid divider, a terminal pane, dark in every theme as terminals are, fills the whole second column edge to edge: a title bar, an earlier command and its answer, then the prompt with the command npx create-kiln, a resting cursor and the hint "Press Enter to run". Press Enter, or click the prompt, and the output prints line by line and ends on "Ready on http://localhost:3000", while focus moves to Get started. The block follows your theme; only the terminal is dark. On phones the copy and its buttons come first, and the pane follows under a ruled line. It's built from Terminal Text, Shine Button, Button, Kbd and Guides, with CSS transitions and keyframes only. For CLIs, scaffolders and developer tools whose first run is the sell.

FAQ

How does the terminal run?

The prompt is a real button, so Enter and Space work when it's focused, and a click or tap works anywhere on it. Pressing it swaps the resting prompt for our Terminal Text, which prints the lines of OUTPUT a line at a time, STAGGER milliseconds apart, and ends on a new prompt. Nothing is executed: the output is typed text, and it plays once. Reload the page to see it again.

How do I change the command and its output?

Edit COMMAND and OUTPUT at the top of the file. A line that starts with a tick is drawn in the success colour, an error or warning line in its own colour, and any other line is muted. The pane reserves the height of the whole session before you press anything, so running the command never moves the page.

Why does focus move to Get started?

Once the command has run, the next step is the button beside it, so focus goes there and a keyboard user can press Enter again to follow it. It only happens after the visitor's own action, never on load. A polite status also announces that the command ran and the server is ready.

What does reduced motion change?

The resting cursor stops pulsing and the output appears all at once when the command runs. The pitch no longer fades up on load. The prompt itself still waits for the visitor, because the press is their choice, not an animation.

What does a screen reader hear?

The pane is a figure named "Terminal", and its earlier command is hidden as decoration. Before the run, the prompt reads as a button, "Run npx create-kiln, Press Enter to run". After it, the session is plain text, the command first and the output below, and the title bar's three dots are hidden. The $ prompt signs are decoration and are left out of what is read and what is selected.

How does it look on a phone?

The pane goes under the copy and takes the full width. Output lines wrap rather than scroll, and the terminal keeps the same fonts as on a wide screen, so the whole session reads at 320 pixels with no sideways scrolling. The terminal's text always runs left to right, on right-to-left pages too.

  • Pro

    A card-in-card call to action for a data SDK, split by a hairline: the headline, one sentence and a Shine Button at the start, and a three-line quickstart snippet with a copy button on every line and a Copy all button at the end.

  • Pro

    A split call to action between solid rails that shows the install as a diff: a headline, a sentence and two actions at the start, and at the end a tinted half with a package.json window where a placeholder dependency is struck out and the real one added.

  • Pro

    A split CTA for a habit app between solid rails: copy and a Shine Button that emails the link beside a phone, in a hairline frame, whose screen is a scannable QR code.

  • Pro

    A split hero for a project scaffolder: text with a Shine Button and three stats on a ruled row, and a terminal in a hairline frame that shows the install command with a copy button and what it set up.

  • Pro

    A compact reverse split hero for an SDK: a dark code window with a deploy call and its JSON response beside the headline, a copyable install command and a Shine Button, over a closing band of three ruled feature cells.

  • Pro

    A split hero for an API: the headline, a Shine Button and three ticks beside a dark terminal with a request, a status and a JSON response that writes itself out, above a band of three figures.