Stats

Minimal Stat Cards

Plain stats: a heading above three large figures on filled panels, each with a label. Theme tokens only, light and dark.

Free, MIT licenseOpen in Browse
import { Heading } from "@/components/editorial/heading"
import {
  Section,
  SectionContent,
  SectionHeader,
  SectionTitleGroup,
} from "@/components/editorial/section"
import {
  Stat,
  StatGroup,
  StatLabel,
  StatValue,
} from "@/components/editorial/stats"

// The copy: change text here, not in the markup.
const COPY = {
  title: "Faster releases, fewer meetings",
} as const

const STATS = [
  { value: "38%", label: "Shorter time from plan to release" },
  { value: "10 min", label: "Average Monday meeting" },
  { value: "4.8 / 5", label: "Rating from 900 reviews" },
] as const

export default function MinimalStats02() {
  return (
    <Section>
      <SectionHeader>
        <SectionTitleGroup>
          <Heading>{COPY.title}</Heading>
        </SectionTitleGroup>
      </SectionHeader>
      <SectionContent>
        <StatGroup cols={3}>
          {STATS.map((stat) => (
            <Stat key={stat.label} variant="card">
              <StatValue className="text-5xl/none">{stat.value}</StatValue>
              <StatLabel className="text-muted-foreground">
                {stat.label}
              </StatLabel>
            </Stat>
          ))}
        </StatGroup>
      </SectionContent>
    </Section>
  )
}

Installation

pnpm dlx shadcn add @01orbital/minimal-stats-02
npx shadcn add @01orbital/minimal-stats-02
yarn shadcn add @01orbital/minimal-stats-02
bunx --bun shadcn add @01orbital/minimal-stats-02

Free under the MIT license. Add the @01orbital registry to components.json once (install guide), then run the command.

It lands at components/blocks/stats/minimal-stats-02/index.tsx, as source you own and edit.

Usage

import MinimalStats02 from "@/components/blocks/stats/minimal-stats-02"

export default function Example() {
  return <MinimalStats02 />
}

Dependencies

Registry pieces it installs with it: