Learning Roadmap Accordion

Curriculum

The design system learning path

Four stages, from the first colour token to a library that other teams trust. Each stage opens into the lessons behind it, so you can start where your team already is.

Decide what the system is made of before drawing a single component. Tokens, spacing, type scale and colour roles are the layer everything else inherits, and they are the hardest layer to change later.

You are here

About this block

Learning Roadmap AccordionPRO

A learning roadmap laid out as a numbered vertical rail, where each stage is an accordion row that opens into its summary and a grid of linked lessons, with one stage able to carry a position badge.

Education103: Learning Roadmap Accordion

A learning roadmap laid out as a numbered vertical rail, where each stage is an accordion row that opens into its summary and a grid of linked lessons, with one stage able to carry a position badge.

Upgrade to Pro

Pro blocks install through the shadcn CLI with your license key and ship their full source. Docs and live previews stay open to everyone, so you can read every block's details first.

Upgrade Now

Installation

Swap YOUR_EMAIL and YOUR_KEY for the email and license key on your account. Find your license key on your account page.

Radix flavor

bash
npx shadcn add "https://ui.beste.co/r/education103?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

bash
npx shadcn add "https://ui.beste.co/r-base/education103?email=YOUR_EMAIL&license_key=YOUR_KEY"

This installs the block to components/beste/block/education103.tsx, the shadcn/ui accordion primitive that drives the stages, and the badge6 component used for the intro eyebrow and the position marker (installed to components/beste/component/badge6.tsx).

Quick start

The installed file exports education103Demo alongside the block: the exact props behind the preview above. Spread it to get a working roadmap in one line.

tsx
import { Education103, education103Demo } from "@/components/beste/block/education103";

export default function RoadmapPage() {
  return <Education103 {...education103Demo} />;
}

Then replace the demo with your own props. Written out, a trimmed setup looks like this:

tsx
import { Education103 } from "@/components/beste/block/education103";

export default function RoadmapPage() {
  return (
    <Education103
      eyebrow="Curriculum"
      heading="The design system learning path"
      description="Four stages, from the first colour token to a library that other teams trust."
      stages={[
        {
          title: "Foundations",
          description: "Tokens, spacing, type scale and colour roles.",
          links: [
            { label: "Naming design tokens", href: "/learn/tokens" },
            { label: "Building a type scale", href: "/learn/type-scale" },
          ],
        },
        {
          title: "Build the component library",
          badge: "You are here",
          description: "Turn the foundations into components people can install.",
          links: [{ label: "Variants and sizes", href: "/learn/variants" }],
        },
      ]}
    />
  );
}

Props

PropTypeDefaultDescription
eyebrowstringBadge6 label above the roadmap title
headingstringRoadmap title in the panel above the stages
descriptionstringIntro paragraph under the title, capped at max-w-2xl
stagesStage[][]Roadmap stages, numbered in array order
classNamestringExtra classes for the outer section
ts
type Stage = {
  title: string;
  badge?: string;
  description?: string;
  links?: StageLink[];
};

type StageLink = {
  label: string;
  href: string;
};

Behavior notes

  • The stages are a shadcn/ui Accordion in type="single" collapsible mode with defaultValue="stage-0", so the first stage is open on load and opening another closes it. Closed stages render their content in the DOM only while open, which is Radix's default for this primitive.
  • Stage numbers come from the array index, not from data. Reordering stages renumbers the rail.
  • The rail, its diamond cap, and the numbered circles are absolutely positioned inside the block's left padding, so the cards keep a normal document flow and the rail never affects their height.
  • The number circles are always solid. Only the row itself reacts to state, moving from bg-muted/60 to bg-card through the item's data-state on a named group/stage, so a closed stage never reads as disabled.
  • The trigger hides the accordion's built-in chevron and renders a plus/minus pair instead, swapped by the same data-state group. Only the chevron is a direct svg child of the trigger, which is what the hiding selector keys on.
  • badge is per stage and free-form, so the "you are here" marker can be moved by changing which stage carries it. Nothing in the block infers progress on its own. It renders as a Badge6 on its own line above the stage title rather than inside the trigger, because the trigger is a button and Badge6 renders a div. The trigger's top padding tightens when a badge is present so the row keeps its rhythm.
  • Lesson links are a one-column grid on mobile, two at sm, three at lg, and they flow in reading order rather than down each column.

More Education blocks

View all Education
PRO

education25

Learner Leaderboard

A gamified leaderboard displaying top learners with rankings, scores, and badges across weekly, monthly, and all-time periods. Perfect for competitive learning platforms and student engagement.

PRO

education13

Lesson Content Reader

A rich text lesson reader with structured content blocks including headings, paragraphs, lists, quotes, and code snippets. Perfect for text-based courses and educational documentation.

PRO

education12

Video Lesson Hero

A video lesson hero section with course info, thumbnail with play button, and lesson navigation. Perfect for online courses and video-based learning platforms.

PRO

education101

Academy Course Cards

An academy section with an eyebrow over a hairline rule, a two-column heading, and three course cards that each float a live progress checklist above a category, title, and lesson count.

PRO

education104

Long Guide Chapter Index

A pillar guide hub whose sticky left column carries the pitch, three facts on hairlines and a seal button, while the right column lists every chapter in numbered rows grouped by part.

PRO

education26

Study Streak Tracker

A gamified streak tracker showing current and longest streaks with a visual weekly activity calendar. Perfect for habit-forming learning apps and student motivation.