About

About Section with Process Steps

Process section in Instrument Serif: an eyebrow beside a long statement heading, a rule, then three numbered steps (Install, Compose, Deploy), each with a short list.

Free, MIT licenseOpen in Browse
import { Eyebrow } from "@/components/editorial/eyebrow"
import {
  Feature,
  FeatureDescription,
  FeatureGroup,
  FeatureTitle,
} from "@/components/editorial/features"
import { Heading } from "@/components/editorial/heading"
import {
  Section,
  SectionColumns,
  SectionContent,
  SectionHeader,
  SectionTitleGroup,
} from "@/components/editorial/section"
import { Separator } from "@/components/ui/separator"

// The copy: change text here, not in the markup.
const COPY = {
  eyebrow: "Process",
  title:
    "As guiding partners for the unknown, we focus not only on perfecting what’s been made before, but on unlocking what comes next. Through the registry’s release programme, builders get proven, considered pieces, each reviewed against the same tokens and the same rules, so they can change the game at speed.",
} as const

const STEPS = [
  { name: "Install", items: ["One command", "Your tokens", "Plain files"] },
  { name: "Compose", items: ["Blocks & legos", "Scenes & orbs", "Your copy"] },
  { name: "Deploy", items: ["Both modes", "Every size", "One system"] },
]

// The eyebrow keeps the narrow column, the statement the wide one; the
// steps count themselves.
export default function About01() {
  return (
    <Section
      className="[--font-display:var(--font-instrument)]"
      aria-labelledby="process-title"
    >
      <SectionContent>
        <SectionColumns variant="intro">
          <Eyebrow>{COPY.eyebrow}</Eyebrow>
          <SectionHeader size="lg">
            <SectionTitleGroup>
              <Heading id="process-title">{COPY.title}</Heading>
            </SectionTitleGroup>
          </SectionHeader>
        </SectionColumns>
        <Separator />
        <FeatureGroup render={<ol />} cols={3}>
          {STEPS.map((step, i) => (
            <Feature key={step.name}>
              <span
                aria-hidden="true"
                className="flex shrink-0 font-sans text-2xl/8 tracking-tight text-muted-foreground tabular-nums"
              >
                {String(i + 1).padStart(2, "0")}
              </span>
              <FeatureTitle>{step.name}</FeatureTitle>
              <FeatureDescription render={<ul role="list" />}>
                {step.items.map((item) => (
                  <li key={item}>{item}</li>
                ))}
              </FeatureDescription>
            </Feature>
          ))}
        </FeatureGroup>
      </SectionContent>
    </Section>
  )
}

Installation

pnpm dlx shadcn add @01orbital/about-01
npx shadcn add @01orbital/about-01
yarn shadcn add @01orbital/about-01
bunx --bun shadcn add @01orbital/about-01

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

It lands at components/blocks/about/about-01/index.tsx, as source you own and edit.

Usage

import About01 from "@/components/blocks/about/about-01"

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

Dependencies

Registry pieces it installs with it: