Six Promises

What you can count on

Sixpromiseswemakebeforeyousayaword.

They are simple, and we keep them. If we ever break one, tell us, and we will make it right without a conversation about why.

Read our full commitments
  1. 01

    You will not be rushed

    Sessions end when the hour ends, never because the next person is waiting.

  2. 02

    Nothing is recorded

    No notes leave the room, and the ones we keep are yours to read at any time.

  3. 03

    You can change your mind

    Switch practitioner, pause, or stop. There is no penalty and no persuasion.

  4. 04

    We say what we think

    Gently, and only when you ask, but we will not hide behind neutral nodding.

  5. 05

    The price stays the price

    What you agree at the start is what you pay until you decide otherwise.

  6. 06

    The door stays open

    Ending well means you can come back, months or years later, without explaining.

About this block

Six PromisesPRO

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.

Feature277: Six Promises

Six promises in a numbered grid, each one under a hairline rule that draws itself in from the left as the item arrives.

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

Base UI flavor

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

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

Quick start

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

tsx
import { Feature277, feature277Demo } from "@/components/beste/block/feature277";

export default function Page() {
  return <Feature277 {...feature277Demo} />;
}

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

tsx
import { Feature277 } from "@/components/beste/block/feature277";

export default function Page() {
  return (
    <Feature277
      eyebrow="What you can count on"
      heading="Six promises we make before you say a word."
      description="They are simple, and we keep them."
      button={{ label: "Read our full commitments", href: "/commitments", tone: "outline" }}
      values={[
        { title: "You will not be rushed", description: "Sessions end when the hour ends, never because the next person is waiting." },
        { title: "Nothing is recorded", description: "No notes leave the room, and the ones we keep are yours to read." },
      ]}
    />
  );
}

Props

PropTypeDefaultDescription
eyebrowstringSmall-caps line above the heading
headingstringSection heading, rendered as an h2 through Text1
descriptionstringShort intro in the narrow right column
buttonActionButtonPill action under the intro
valuesValue[][]Promises, numbered and up to three across
classNamestringExtra classes for the outer <section>
ts
type Value = {
  title: string;
  description: string;
};

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

Behavior notes

  • Each rule is its own element scaled on scaleX from a left origin, so it draws itself in rather than fading; a border-t could not be animated this way.
  • The rules run on a slightly longer delay than the text they sit above (0.15 + index * 0.12 against index * 0.1), so a line arrives just behind its item and the grid resolves as a set of drawn rules rather than a flash.
  • Numbers come from the index, padded to two digits and set in tabular-nums, so a column of them stays aligned and nothing has to be kept in sync when a promise is added.
  • The list is an ol, so the numbering is real rather than decorative, and the titles inside it are h3 under the section h2.
  • The grid steps from one column to two at sm and three at md, and the numbering follows the source order in every arrangement.
  • The header row puts the intro at md:col-start-9 and aligns it on md:justify-end, so it sits beside the foot of the heading instead of drifting under it.
  • Nothing here is interactive: the promises are copy, and button is the only link in the section.

More Feature blocks

View all Feature
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

feature294

Six Gains Ruled Grid

A header with a serif headline that settles in word by word and, at its right end, a rounded pill that copies the install command on click; below it a ruled two by three grid of thin icons, serif titles and short paragraphs that settle in one after another as they scroll into view.

PRO

feature275

Drifting Services Grid

A services section with a serif heading that settles in word by word beside its intro and pill button, then four staggered portrait cards whose photographs drift inside their frames as the page scrolls.

PRO

feature162

Numbered Steps Grid

3-column grid of numbered steps with titles and descriptions. Ideal for onboarding flows, process overviews, and how-it-works sections.

PRO

feature284

Statement and Four

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.

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.