Skip to main content
Clever Ops

Course Card Grid

Friendly course cards with level chips, duration and next-cohort lines, outcome checklists, and one warm enrol CTA per card, the encouraging way a training site earns sign-ups.

Preview & code

Loading Course Card Grid preview

Installation

pnpm dlx shadcn@latest add @cleverui/course-card-grid

Requires the @cleverui registry in your components.json, a one-off, two-line setup.

Usage

tsx
import { CourseCardGrid } from '@/components/blocks/course-card-grid'
Exampletsx
import { CourseCardGrid } from '@/components/blocks/course-card-grid'

export default function CourseCardGridDemo() {
  return (
    <div className="mx-auto w-full">
      <CourseCardGrid
        heading="Find your course"
        intro="Pick a path that matches where you are, each cohort ships a project you can show an employer."
        courses={[
          {
            title: 'Foundations of Data',
            level: 'Beginner',
            blurb:
              'Spreadsheets to first SQL queries. Build the habits that keep messy data from derailing your week.',
            duration: '6 weeks',
            nextCohort: 'Next cohort starts 4 Aug',
            outcomes: [
              'Clean and shape tables with confidence',
              'Write readable SQL for common reports',
              'Present findings in a short deck',
            ],
            enrolHref: '#foundations',
            enrolLabel: 'Enrol now',
          },
          {
            title: 'Product Analytics Lab',
            level: 'Intermediate',
            blurb:
              'Turn product events into decisions. Measure funnels, retention, and experiments without drowning in dashboards.',
            duration: '8 weeks',
            nextCohort: 'Next cohort starts 18 Aug',
            outcomes: [
              'Design event schemas teams will use',
              'Build a weekly metrics review ritual',
              'Ship a funnel teardown on real data',
            ],
            enrolHref: '#analytics',
          },
          {
            title: 'ML Engineering Studio',
            level: 'Advanced',
            blurb:
              'Take a trained model from notebook to reliable service, monitoring, rollbacks, and honest evaluation.',
            duration: '10 weeks',
            nextCohort: 'Next cohort starts 1 Sep',
            outcomes: [
              'Package models for production deploy',
              'Set drift and latency alerts',
              'Document trade-offs for stakeholders',
            ],
            enrolHref: '#ml-studio',
            enrolLabel: 'Join the waitlist',
          },
        ]}
      />
    </div>
  )
}

API reference

CourseCardGrid accepts the following props.

PropTypeDefaultDescription
headingstring'Find your course'
introstringone encouraging plain-language sentence under the heading
courses*CourseCard[]
enrolLabelstring'Enrol now'fallback CTA label when a course omits its own
outcomesLabelstring"What you'll learn"

…plus everything from React.HTMLAttributes<HTMLElement>: className, event handlers, aria attributes and the rest pass straight through.

Referenced types

Typestsx
export interface CourseCard {
  title: string
  /** short word: Beginner / Intermediate / Advanced */
  level: string
  blurb?: string
  /** preformatted, e.g. '6 weeks', never derived from Date */
  duration: string
  /** preformatted, e.g. 'Next cohort starts 4 Aug' */
  nextCohort?: string
  outcomes: string[]
  enrolHref?: string
  enrolLabel?: string
}

Frequently asked questions

How do I install the Course Card Grid component?

Register the @cleverui registry in your components.json ("@cleverui": "https://cleverops.com.au/r/{name}.json"), then run `npx shadcn@latest add @cleverui/course-card-grid`. The shadcn CLI copies the source into your project, you own the code from that point. You can also copy the source directly from this page.

What dependencies does Course Card Grid require?

Course Card Grid uses motion and lucide-react on top of React and Tailwind CSS. You don't need to install them manually, the shadcn CLI resolves and installs npm dependencies automatically when you add the component.

Can I theme Course Card Grid to match my brand?

Yes. The component is styled entirely with Tailwind utilities over standard design tokens (primary, background, muted, border), so it inherits your existing shadcn/ui theme automatically. Change your CSS variables and the component follows, no source edits needed for palette, radius, or fonts.

Want this built for you?

CleverUI is built by the Clever Ops web team. If you'd rather ship a hand-coded, fast, custom website than assemble one, we build them for Australian businesses every week.

Explore web development services