Statement and Four

The short version

Weareasmallpracticethatwouldratherdofourthingswellthanfortythingsquickly.

01
Long-term therapy
For what has been heavy for a while. Weekly, with one steady person.
02
Structured coaching
For a decision or a change. Twelve weeks, a written plan, a proper ending.
03
Evening and online hours
For the people whose only free hour comes after everyone else has gone home.
04
Walking sessions and quiet days
For the things that are easier to say outdoors, side by side.
About this block

Statement and FourPRO

A long serif statement that settles in word by word with a pill action on the left, and on the right four numbered, ruled points with serif titles and short descriptions that arrive in turn.

Feature284: Statement and Four

A statement beside four numbered facts: the heading is set slightly smaller and staggered faster than usual so a long sentence reads as one thought, with the points ruled down the narrow column next to it.

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/feature284?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

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

This installs the block to components/beste/block/feature284.tsx plus the button22 sliding-marker pill and the text1 word stagger it uses.

Quick start

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

tsx
import { Feature284, feature284Demo } from "@/components/beste/block/feature284";

export default function Page() {
  return <Feature284 {...feature284Demo} />;
}

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

tsx
import { Feature284 } from "@/components/beste/block/feature284";

export default function Page() {
  return (
    <Feature284
      eyebrow="The short version"
      heading="We are a small practice that would rather do four things well than forty things quickly."
      button={{ label: "Read the long version", href: "/about", tone: "outline" }}
      points={[
        { title: "Long-term therapy", description: "For what has been heavy for a while." },
        { title: "Structured coaching", description: "Twelve weeks, a written plan, a proper ending." },
      ]}
    />
  );
}

Props

PropTypeDefaultDescription
eyebrowstringSmall-caps line above the statement
headingstringThe statement, rendered as an h2 through Text1
buttonActionButtonPill action under the statement
pointsPoint[][]Numbered facts in the narrow column
classNamestringExtra classes for the outer <section>
ts
type Point = {
  title: string;
  description: string;
};

type ActionButton = {
  label: string;
  href: string;
  tone?: "primary" | "light" | "dark" | "outline";
};

Behavior notes

  • The heading takes a tightened stagger={0.04} and is set at text-3xl rising to text-5xl, one step below the display size used elsewhere in the family, because it carries a full sentence rather than a phrase.
  • The button waits on 0.3 + heading.split(" ").length * 0.04, the same arithmetic as the stagger, so it appears exactly as the statement finishes settling however long that sentence runs.
  • The points grid is two columns at sm and drops back to one at md, which looks backwards but is not: at md the list moves into a narrow side column where two columns would be unreadable.
  • At md the row gap is set to zero and the spacing comes from each item's own py, so the border-t rules stack into one continuous ruled list instead of floating with gaps between them.
  • Numbers come from the index, padded to two digits and set in tabular-nums, so nothing has to be kept in sync when a point is added.
  • The points are a dl with dt/dd pairs, so each title stays bound to its description for a screen reader.
  • Nothing here loads or listens to scroll: no photograph, no grain, no parallax, which makes it a cheap section to place between two heavier ones.

More Feature blocks

View all Feature
PRO

feature277

Six Promises

A values grid: a serif heading settling in word by word beside the intro and a pill action, then six numbered promises in three columns whose top rules draw themselves in one after another, over a slowly drifting soft light.

PRO

feature290

Six Cell Grid

A ruled two-by-three grid of features, each cell with a bare icon, a serif title and a description, arriving row by row under a serif heading that settles in word by word and a sliding-marker pill.

PRO

feature289

Quote Inset Feature

A single feature explained beside proof: a serif heading that settles in word by word, an intro and a pill action on the left, a soft muted quote card with a portrait on the right, and three ruled points beneath.

PRO

feature278

Two Doors Tabs

A tabbed comparison under a centred serif heading that settles in word by word: pill tabs switch between approaches, each blurring in a drifting portrait photograph beside a serif title, a description, a ruled fact list and a sliding-marker pill.

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

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.