Staaarter

Academy Course Cards

Academy section with an eyebrow over a hairline rule, a two-column heading, and three course cards that each float a progress checklist above a category label, title, and lesson count. Perfect for online course catalogs and academy landing pages.

By Staaarter Team
Education
Docs
Live preview

Docs

Installation

A real shadcn registry command, not a copy-paste stand-in: it fetches this block plus its dependencies and any missing npm packages, and installs them straight into your project.

npx shadcn add https://staaarter.com/r/academy-course-cards.json

Prefer not to use the CLI? Copy the source from the Code toggle above into src/components/blocks/education/education1.tsx instead.

Usage

The file also exports education1Demo, the exact props behind the preview above. Spread it to get a working section in one line, then replace it with your own data.

import { Education1, education1Demo } from "@/components/blocks/education/education1";

export default function Page() {
  return <Education1 {...education1Demo} />;
}

Props

PropTypeDefaultDescription
eyebrowstringnoneSmall uppercase label above the hairline rule; only rendered when set.
headingReactNodenoneSection heading in the left column of the header row.
descriptionstringundefinedShort intro text in the right column of the header row.
coursesCourseCard[]noneCourse cards rendered in a fixed 3-column grid.
classNamestringnoneExtra classes for the outer section element.

Types

type LessonItem = { label: string; status: "complete" | "pending" };

type CourseCard = {
  category: string;
  title: string;
  lessonCount: string;
  checklist: LessonItem[];
};

Behavior notes

  • The checklist inside each card is static illustrative data, not a real progress tracker; "complete" items render a filled check icon and "pending" items render an outline circle, purely for visual variety.
  • courses always renders in a fixed 3-column grid on desktop regardless of item count; on mobile it stacks to a single column.
  • eyebrow and description are both optional and independent of each other; the header row still lays out cleanly with only a heading present.
  • Nothing in this block is interactive or clickable; it is a purely presentational catalog section.