Before and After Columns

One line changes the workflow

Thesamerequest,beforeandafter.

Nothing about the way you talk to the agent changes. What changes is where the answer comes from.

Before

The agent improvises

  • Guesses a layout from memory
  • Invents spacing, type and colours each time
  • Forgets the phone view
  • Every page looks like a different site
  • You spend the evening fixing it

After

The agent chooses

  • Searches a library of finished sections
  • Drops one in with your theme applied
  • Responsive and accessible from the first render
  • Every page speaks the same language
  • You spend the evening elsewhere
About this block

Before and After ColumnsPRO

A centred serif headline that settles in word by word, then two columns: a muted panel listing how an agent improvises today and an ink panel listing what it does once the library is installed. Between them, on a hairline, sits the pill that copies the install command on click.

Feature295: Before and After Columns

Two columns that make the same argument twice: what an agent does today in muted paper, what it does after the install in ink, with the command sitting on the hairline between them.

Upgrade to Pro

Pro blocks install through the shadcn CLI with your license key and ship their full source. Docs and live previews stay open to everyone, so you can read every block's details first.

Upgrade Now

Installation

Swap YOUR_EMAIL and YOUR_KEY for the email and license key on your account. Find your license key on your account page.

Radix flavor

bash
npx shadcn add "https://ui.beste.co/r/feature295?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

bash
npx shadcn add "https://ui.beste.co/r-base/feature295?email=YOUR_EMAIL&license_key=YOUR_KEY"

This installs the block to components/beste/block/feature295.tsx plus the text1 word stagger it uses.

Quick start

The installed file exports feature295Demo alongside the block: the exact props behind the preview above. Spread it to get a working section in one line.

tsx
import { Feature295, feature295Demo } from "@/components/beste/block/feature295";

export default function Page() {
  return <Feature295 {...feature295Demo} />;
}

Then replace the demo with your own props. Written out, a trimmed setup looks like this:

tsx
import { Feature295 } from "@/components/beste/block/feature295";

export default function Page() {
  return (
    <Feature295
      eyebrow="One line changes the workflow"
      heading="The same request, before and after."
      description="What changes is where the answer comes from."
      before={{
        label: "Before",
        title: "The agent improvises",
        items: ["Guesses a layout from memory", "Forgets the phone view"],
      }}
      after={{
        label: "After",
        title: "The agent chooses",
        items: ["Searches a library of finished sections", "Responsive from the first render"],
      }}
      command="npx your-cli@latest"
      copyLabel="Copy command"
      copiedLabel="Copied"
    />
  );
}

Props

PropTypeDefaultDescription
eyebrowstringSmall-caps line above the heading
headingstringSection heading, through Text1
descriptionstringParagraph under the heading
beforeColumnThe muted column, listed with minus markers
afterColumnThe ink column, listed with plus markers
commandstringThe install command; clicking the pill copies it
copyLabelstringAccessible name for the pill in its resting state
copiedLabelstringAccessible name and live-region text once copied
classNamestringExtra classes for the outer <section>
ts
type Column = {
  label: string;
  title: string;
  items: string[];
};

Behavior notes

  • The two columns are the same component shape but deliberately not the same surface: paper against ink is what carries the argument before anyone reads a word of it.
  • Minus and plus icons stand in for the usual cross and tick, which keeps the before column from reading as an error state.
  • The plus markers use text-current rather than the accent, because the accent disappears against the ink panel. This is the same trap that hides a coloured icon on any dark surface in the set.
  • The middle column collapses to just the pill below the large breakpoint, where the vertical hairlines above and below it are hidden.
  • The command pill is filled ink so it reads as the hinge between the two columns rather than as part of either one.
  • Columns arrive 0.2 seconds apart with the pill between them, so the eye lands on the problem, then the command, then the outcome.
  • Both columns are optional. Passing only one gives a single list with the pill beside it.

More Feature blocks

View all Feature
PRO

feature281

Three Icon Columns

The classic three-column feature: a centred serif heading that settles in word by word and an intro, three columns with a round muted icon, a serif title and a description that arrive in turn, and a sliding-marker pill beneath.

PRO

feature292

Install Ask Ship Steps

Three numbered columns under rules that draw in from the left as they scroll into view: the first carries a rounded pill that copies the install command on click, the next two show a sample prompt and a resulting file path in muted mono panels. Serif headline settles in word by word, a sliding-marker pill sits at the right end of the header.

PRO

feature288

Honest Comparison

An us-and-them comparison under a centred serif heading that settles in word by word: an ink column and a muted column list the same points with ringed checks and dashes that arrive one by one, and a sliding-marker pill closes it.

PRO

feature296

Sticky Command List

A sticky left column holds the eyebrow, a serif headline that settles in word by word, an intro, a rounded pill that copies the install command on click and a sliding-marker pill; on the right a long ruled list of numbered points settles in row by row as the page scrolls past.

PRO

feature293

Agent Transcript

A split feature: on the left a serif headline that settles in word by word, an intro, a rounded pill that copies the install command on click and a sliding-marker pill; on the right a muted transcript panel where a short exchange with the agent appears message by message, one reply carrying a page preview that blurs in and drifts on scroll.

PRO

feature299

Turning Requests Panel

A centred serif headline that settles in word by word, then an ink panel that cycles through short request and reply pairs: the request in serif, the reply in mono a beat later, with thin progress bars to jump between them and a pause on hover. A pill that copies the install command on click and a sliding-marker pill close the section.