A two-column ledger pairing the question a reader sent on the left with the thing that was built in response on the right, under column labels that only appear on desktop.
A two-column ledger pairing the question a reader sent on the left with the thing that was built in response on the right, under column labels that only appear on desktop.
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/feature273?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/feature273?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/feature273.tsx and the badge6 component it uses for the eyebrow (installed to components/beste/component/badge6.tsx).
The installed file exports feature273Demo alongside the block: the exact props behind the preview above. Spread it to get a working ledger in one line.
import { Feature273, feature273Demo } from "@/components/beste/block/feature273";
export default function AskedPage() {
return <Feature273 {...feature273Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { Feature273 } from "@/components/beste/block/feature273";
export default function AskedPage() {
return (
<Feature273
eyebrow="Asked and answered"
heading="Everything here started as a reader's question"
questionLabel="What we were asked"
answerLabel="What we made"
rows={[
{
question: "How do you price a project you have never done before?",
answer: "A chapter on estimating unfamiliar work, with the sheet we quote from.",
link: { label: "Read the chapter", href: "/guide/estimates" },
},
]}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
eyebrow | string | – | Badge6 label above the hairline rule |
heading | string | – | Section heading under the rule |
questionLabel | string | – | Head of the left column, desktop only |
answerLabel | string | – | Head of the right column, desktop only |
rows | LedgerRow[] | [] | One hairline row per question |
className | string | – | Extra classes for the outer section |
type LedgerRow = {
question: string;
answer: string;
link?: AnswerLink;
};
type AnswerLink = {
label: string;
href: string;
};hidden md:grid. On a phone the two halves stack, where a floating label above a stack would read as a heading for the whole list rather than for one column.link is optional per row, which lets an entry stand as an answer with nothing to click.bg-muted/40 band to separate it from ordinary prose.feature246
Capability section with a row of pill filters that swap the list below: each entry becomes a ruled three-column row holding the title, an explanation and the typical duration pinned right.
feature254
Timeline where every ruled row lines up a year, a photograph from that moment and the explanation of what forced the change, headed by a pill CTA on the heading line and stacking to a readable block on mobile.
feature200
Two-column feature section with badge, heading, description, a 2-column checklist of icon items (defaults to check icon), and CTA on one side, with a square image on the other. Image position is configurable.
feature202
Two-column feature section with badge, heading, and multi-paragraph copy on the left, plus a custom tab strip and panel on the right.