# Content Section Three

> A structured feature grid with one dominant narrative and two focused supporting ideas.

A shadcn/ui block from the [@navui](https://ui.navdeepsingh.dev) registry, listed on [shadcn.exchange](https://shadcn.exchange/r/navui/content-section-three).

- Page, with a live preview: https://shadcn.exchange/r/navui/content-section-three
- Screenshot: https://abzjhwgwpdpz7ua5.public.blob.vercel-storage.com/shots/navui/content-section-three-light-4d4a47fc036d7b5a.png
- Registry item: https://ui.navdeepsingh.dev/r/content-section-three.json
- Listed: 2026-10-13, source last changed 2026-10-13

## Install

```bash
npx shadcn@latest add https://ui.navdeepsingh.dev/r/content-section-three.json
```

Run it in a project that has shadcn/ui set up. It adds the files below and installs what they depend on.

## Dependencies

- npm packages: `lucide-react`, `motion`
- Registry items: `https://ui.navdeepsingh.dev/r/release-workflow-illustration.json`

## Files

### `src/registry/blocks/content/content-section-three/content-section-three.tsx`

```tsx
'use client'

import type { ComponentProps } from 'react'
import { ArrowUpRight } from 'lucide-react'

import {
  defaultReleaseWorkflow,
  ReleaseWorkflowIllustration,
  type ContentSectionThreeWorkflow,
} from '@/components/illustrations/ReleaseWorkflowIllustration'
import { cn } from '@/lib/utils'

export type {
  ContentSectionThreeRelease,
  ContentSectionThreeWorkflow,
} from '@/components/illustrations/ReleaseWorkflowIllustration'

export type ContentSectionThreeContent = {
  eyebrow: string
  heading: string
  description: string
  link?: {
    label: string
    href: string
  }
}

export type ContentSectionThreeProps = Omit<ComponentProps<'section'>, 'children' | 'content'> & {
  content?: ContentSectionThreeContent
  workflow?: ContentSectionThreeWorkflow
  autoPlay?: boolean
  interval?: number
}

const defaultContent: ContentSectionThreeContent = {
  eyebrow: 'Release tracking',
  heading: 'Show exactly what shipped and where it landed.',
  description: 'Track every release with its status, environment, commit, and notes in one place.',
  link: {
    label: 'Browse release history',
    href: '#release-workflow',
  },
}

export function ContentSectionThree({
  className,
  content = defaultContent,
  workflow = defaultReleaseWorkflow,
  autoPlay = true,
  interval = 4000,
  ...props
}: ContentSectionThreeProps) {
  return (
    <section
      data-slot="content-section-three"
      className={cn(
        'relative overflow-hidden border-y bg-background py-20 text-foreground sm:py-28',
        className,
      )}
      {...props}
    >
      <div className="relative mx-auto grid w-full max-w-6xl items-center gap-12 px-5 sm:px-8 lg:grid-cols-[minmax(0,0.95fr)_minmax(22rem,0.75fr)] lg:gap-16">
        <div className="max-w-2xl">
          <p className="text-sm font-medium text-muted-foreground">{content.eyebrow}</p>

          <h2 className="mt-4 text-2xl font-semibold tracking-tight text-balance sm:text-3xl lg:text-4xl">
            {content.heading}
          </h2>

          <p className="mt-5 max-w-xl text-base leading-7 text-balance text-muted-foreground">
            {content.description}
          </p>

          {content.link ? (
            <a
              href={content.link.href}
              className={cn(
                'mt-12 inline-flex min-h-11 items-center gap-2 text-sm font-medium',
                'underline-offset-4 hover:underline',
                'focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-ring',
              )}
            >
              {content.link.label}

              <ArrowUpRight aria-hidden="true" className="size-4" />
            </a>
          ) : null}
        </div>

        <div className="w-full lg:justify-self-end">
          <ReleaseWorkflowIllustration
            workflow={workflow}
            autoPlay={autoPlay}
            interval={interval}
          />
        </div>
      </div>
    </section>
  )
}

export default ContentSectionThree
```
