Skip to content
shadcn.io

shadcn.io is not affiliated with official shadcn/ui

Learning Path Task List Block for Radix UI

A course syllabus in module bands with prerequisites, Video, Quiz and Exercise badges, per-module progress, time to go, an Up next lesson and a Complete up next button that ends in a drawn certificate card.

Framework
UI library

Preview

Preview width

Installation

Part of Pro
Pro unlocks the code and one-line install of every Pro button and text effect, plus the MCP for your AI editor.
Have Pro already? Sign in to open it.Opens here as soon as you're Pro.

Overview

Show a learner exactly where they are, with this learning path block for React with Radix UI. Four module bands list their lessons, each a Checkbox with a type Badge (Video, Quiz or Exercise) and its minutes, under a Progress bar and the time to go in that module. Modules have prerequisites: Components and State and data open once Foundations is done, the Capstone once both are, and a locked module names what it needs and keeps its boxes disabled. The first open lesson that isn't done is marked Up next, and the Shine Button "Complete up next" ticks it and moves on. The summary works out the time to go ("3 h 57 min"), and at 100% a drawn Certificate ready card fills the space reserved for it. Nothing is issued. Guides rule the bands. For courses, onboarding tracks and any ordered syllabus.

FAQ

How do prerequisites work?

Each module lists the module ids it needs. A module is locked until every one of those is complete, meaning all its lessons are ticked. Locked modules show a lock, say what they need and disable their checkboxes. Change CHAPTERS to reshape the graph.

How is Up next chosen?

It is the first lesson, in syllabus order, that is not done and sits in an open module. The row carries aria-current="step" and a visible Up next badge. If you untick an earlier lesson, Up next moves back to it.

Does it issue a certificate?

No. At 100% a drawn card appears in space that was reserved from the start, so the page doesn't jump. In your app, call your own endpoint from completeNext when the last lesson is ticked.

What stays local, and how do I save for real?

Ticks live on the page and reset on reload, and the streak is a typed sample. In your app load the done lesson ids from your store and write from tick and completeNext.

How does it look on a phone?

The summary stacks above a full-width button, and each lesson's type and minutes move under its title.