Measured across the practices that finished onboarding in 2025, compared against their own numbers from the quarter before.
31%
Fewer no-shows
Reminders go out on the member's own channel, and a cancelled slot reopens to the waitlist before anyone at the desk notices it.
up from 24% last year
6.5h
Given back to each clinician, weekly
Notes, plans, and coverage checks live on the same record, so the evening admin block quietly disappears.
up from 4h last year
4 days
Faster to get paid
Claims leave the same day the appointment closes and reconcile themselves against incoming payments.
96%
Of practices still here after a year
Teams stay because the workflow bends to how they already work, not the other way around.
up from 92% last year
Averages across 240 practices, measured over the first 90 days after go-live.
A results section that stacks each metric on its own hairline row, pairing an oversized figure with a short label, a sentence of context, and an optional year-over-year delta.
Results section that gives every metric a hairline row of its own: an oversized figure on the left, the label and a sentence of context in the middle, and an optional year-over-year delta with a trend icon pinned right.
Free block
This block is free. No license or account is required: install it with the CLI and use it in unlimited projects.
Radix flavor
npx shadcn add "https://ui.beste.co/r/stats66"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/stats66"This installs the block to components/beste/block/stats66.tsx plus the badge23 component it uses for the eyebrow.
The installed file exports stats66Demo alongside the block: the exact props behind the preview above. Spread it to get a working metrics section in one line.
import { Stats66, stats66Demo } from "@/components/beste/block/stats66";
export default function Page() {
return <Stats66 {...stats66Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { Stats66 } from "@/components/beste/block/stats66";
export default function Page() {
return (
<Stats66
badge={{ label: "Outcomes" }}
heading="What changes in the first quarter"
description="Measured against the same practices a quarter earlier."
items={[
{
value: "31%",
label: "Fewer no-shows",
description: "Reminders go out on the member's own channel.",
delta: "up from 24% last year",
},
{
value: "4 days",
label: "Faster to get paid",
description: "Claims leave the same day the appointment closes.",
},
]}
footnote="Averages across 240 practices, measured over the first 90 days."
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
badge | { label: string } | – | Monospace eyebrow above the hairline rule, rendered via Badge23 |
heading | string | – | Section heading in the left column |
description | string | – | Supporting paragraph, right-aligned from md up |
items | Metric[] | [] | One hairline row per metric |
footnote | string | – | Methodology line under the last row |
className | string | – | Extra classes for the outer <section> |
type Metric = {
value: string;
label: string;
description: string;
delta?: string;
};value is a string, not a number, so a row can read 31%, 6.5h, or 4 days without a separate unit prop and without any formatting logic in the block.delta is set, and the row's three-column grid is md:grid-cols-[minmax(0,14rem)_1fr_auto], so a missing delta leaves the middle column to take the space rather than a gap.md:items-baseline, which puts the oversized figure and the label on the same baseline instead of centring a tall figure against a short one.text-4xl rising to md:text-6xl in font-light) rather than a monospace face, so a page can carry this beside other Sirius sections without a second numeric voice appearing.TrendingUp icon regardless of direction, so a metric that fell should say so in the copy rather than expecting the block to flip the icon.stats67
A results section stacking each measure on its own hairline row, moving a muted starting figure to an accented result across an arrow, with a soft closing panel that floats a live comparison card.
stats69
A quarterly results matrix of hairline cells, each pairing a light figure with a signed change tinted by whether the movement is good or bad rather than by its direction, over a line of context.
stats68
A results section that leads on one oversized total, splits it across a segmented accent bar, then legends each segment on a hairline row aligning its value, share, and what it covers.