A letter from the founder
IstartedthispracticebecauseIcouldnotfindoneIwantedtositin.
Every room I visited was either a clinic or a sales pitch. The clinics were kind but had the warmth of a corridor. The others promised transformation in six sessions and had a payment plan for it.
I wanted something in between: a room that felt like someone's home, run by people who had done the long training, where the only promise was that you would be listened to all the way through.
Seven years on, that is still the whole plan. We have added two chairs, an evening practice and a Friday walk. We have not added a slogan.
An about section written as a letter: a portrait drifting inside its frame on the left, and on the right a serif opening line that settles in word by word, three paragraphs, a ruled signature with the founder's name and role, and a sliding-marker pill.
A founder letter: an opening line that settles in word by word above the body paragraphs, a portrait drifting inside its frame beside it, and a ruled foot carrying the signature on one side and a pill action on the other.
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.
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
npx shadcn add "https://ui.beste.co/r/about79?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/about79?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/about79.tsx plus the button22 sliding-marker pill and the text1 word stagger it uses.
The installed file exports about79Demo alongside the block: the exact props behind the preview above. Spread it to get a working founder letter in one line.
import { About79, about79Demo } from "@/components/beste/block/about79";
export default function Page() {
return <About79 {...about79Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { About79 } from "@/components/beste/block/about79";
export default function Page() {
return (
<About79
eyebrow="A letter from the founder"
lead="I started this practice because I could not find one I wanted to sit in."
paragraphs={[
"Every room I visited was either a clinic or a sales pitch.",
"I wanted something in between, run by people who had done the long training.",
]}
signature={{ name: "Julia Jacklin", role: "Founder" }}
button={{ label: "Come and sit in it", href: "/visit", tone: "dark" }}
image={{ src: "/team/julia.jpg", alt: "Portrait of the founder" }}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
eyebrow | string | – | Small-caps line above the letter |
lead | string | – | Opening line, set larger and rendered through Text1 |
paragraphs | string[] | [] | Body copy, one <p> per entry |
signature | { name: string; role: string } | – | Name and role in the ruled foot |
button | ActionButton | – | Pill action opposite the signature |
image | { src: string; alt: string } | – | Portrait in the left column |
className | string | – | Extra classes for the outer <section> |
type ActionButton = {
label: string;
href: string;
tone?: "primary" | "light" | "dark" | "outline";
};Text1 with a tightened stagger of 0.04s, faster than the component's own default, because a sentence this long would otherwise still be assembling itself by the time the reader has moved on.0.3 + lead.split(" ").length * 0.04, the same arithmetic the stagger uses, so the body arrives exactly as the last word of the lead lands however long that sentence is.p, not a heading. It is the opening sentence of a letter, and promoting it to an h2 would put a full sentence into the page outline.-8% to 8% against a 1.18 scale. A face reads as unstable when it travels as far as a landscape band does.blur(24px) and clears on decode, with a complete check on mount so a cached image is not left blurred waiting for an event that already fired.border-t row that stacks below sm and splits to justify-between above it, so the signature and the action never crowd each other on a phone.signature nor button is given, so the letter ends on its last paragraph without a stray rule.about71
A long-form company letter set in a wide reading column with an accent-ruled pull quote and signed off by avatar bylines, beside a narrower column of captioned portraits.
about67
Founder statement with a large blockquote followed by an avatar, name, role, and a monospace signature line.
about15
Editorial-style open letter with paragraphs, a personal signature with avatar, and a call-to-action. Great for founder stories.
about78
A manifesto set as numbered serif lines that each blur in as they reach the viewport, ruled from one another, beside a sticky photograph that drifts inside its frame as the page scrolls, closed by a sliding-marker pill.