Elements

Section title

View in Figma

An optional eyebrow (tagline or breadcrumbs), title, and description, stacked with size-aware spacing.

Install

npx shadcn@latest add @alix/sectionTitle

Preview

Pricing

Plans for every team

Usage

<SectionTitle
  tagline={{ text: "Pricing" }}
  title="Plans for every team"
  description="Start free, upgrade when you grow."
/>
<ButtonGroup
  primaryAction={<Button>Get started</Button>}
  secondaryAction={<Button variant="outline">Contact sales</Button>}
/>

Examples

01

Size scale

Choose the heading size by section prominence while keeping the same data contract.

Enterprise transformation

Performance improvement

Transaction services

Risk review

<div className="grid w-full max-w-4xl gap-8 md:grid-cols-2">
  <SectionTitle
    headingSize="xl"
    title="Enterprise transformation"
    description="Large section leads for major page moments."
    align="start"
  />
  <SectionTitle
    headingSize="lg"
    title="Performance improvement"
    description="Default section leads for most content bands."
    align="start"
  />
  <SectionTitle
    headingSize="md"
    title="Transaction services"
    description="Medium section leads for tighter page groups."
    align="start"
  />
  <SectionTitle
    headingSize="sm"
    title="Risk review"
    description="Small section leads for compact supporting content."
    align="start"
  />
</div>
02

Rich description

Pass block content when a CMS renderer returns multiple paragraphs instead of one string; actions compose below via ButtonGroup.

Work with senior operators

<SectionTitle
  title="Work with senior operators"
  description={
    <>
      <p>
        Our teams join clients when the choices are urgent and the
        operating facts are still moving.
      </p>
      <p>
        The model keeps leadership close to the work from diagnosis
        through delivery.
      </p>
    </>
  }
  align="start"
/>
<ButtonGroup
  primaryAction={<Button>Meet our people</Button>}
  secondaryAction={<Button variant="outline">View open roles</Button>}
/>
03

Insight row recipe

Lead a card row with SectionTitle and a ButtonGroup when the section needs one action pair above repeated content.

Latest insights

<div className="w-full max-w-5xl space-y-8">
  <div className="flex flex-col items-start gap-6">
    <SectionTitle
      title="Latest insights"
      description="Briefings for leaders working through liquidity, diligence, and operational change."
      align="start"
    />
    <ButtonGroup
      primaryAction={<Button rightIcon={<ArrowRight />}>View all insights</Button>}
      secondaryAction={<Button variant="outline">Subscribe</Button>}
    />
  </div>
  <Grid columns={3} gap="lg">
    <ContentCard
      alignment="vertical"
      media={{
        type: "image",
        src: "/brand/editorial-1.jpg",
        alt: "Consultants reviewing project notes at a table",
      }}
      title="Liquidity decisions need one operating rhythm"
      excerpt="How leadership teams connect cash, margin, and working capital in the same cadence."
      href="/insights/liquidity-rhythm"
    />
    <ContentCard
      alignment="vertical"
      media={{
        type: "image",
        src: "/brand/editorial-2.jpg",
        alt: "Printed materials arranged for a project review",
      }}
      title="Diligence that survives day one"
      excerpt="What deal teams can carry from findings into action without losing momentum."
      href="/insights/diligence-day-one"
    />
    <ContentCard
      alignment="vertical"
      media={{
        type: "image",
        src: "/brand/ship.webp",
        alt: "Container ship underway",
      }}
      title="Supply shocks are finance events"
      excerpt="A practical view of translating disruption into inventory and cash decisions."
      href="/insights/supply-shocks-finance"
    />
  </Grid>
</div>

When to use it

Use it for

  • Major page sections where the heading and description should share one spacing system.
  • CMS rich text descriptions that may render multiple paragraphs beneath a heading.
  • Pairing with ButtonGroup (or TextTile, which does it for you) when a section lead needs actions. SectionTitle owns the text stack, not the buttons.

Reach for something else

  • Compact dashboard card headings. Use Panel instead.
  • Text inside interactive controls. Use Button, Tabs, or the owning control's typography instead.
  • A standalone label or chip above unrelated content. Use Tagline instead.
  • Fully locked CMS section templates. Use the TextAndText or TextAndMedia blocks instead.

Props

PropTypeDefaultDescription
variant"default" | "largeText""default"largeText drops the eyebrow and title and renders the description as one large statement.
taglineTaglinePropsEyebrow chip data: `{ text, variant }` rendered as the default Tagline.
eyebrowVariant"tagline" | "breadcrumbs""tagline"Swaps the eyebrow between the tagline chip and a breadcrumb trail (pass `breadcrumbs` crumbs).
titleReactNodeThe heading.
descriptionReactNodeBody copy. A string renders one paragraph; rich/block content renders spaced paragraphs.
headingSize"xl" | "lg" | "md" | "sm""lg"Drives the title's heading variant and spacing.
headingTag"h1"…"h6" | "p" | "div" | "label" | "span""h1"Semantic tag for the title. Set per page hierarchy.
align"start" | "center" | "end" | "stretch""center"Cross-axis alignment of the stack.

See also