Staaarter

Workshop Registration List

A grid of workshop cards, each with an instructor profile blurb (name, small avatar), a skill-level badge ('Beginner'/'Intermediate'/'Advanced'), a short list of prerequisites, and a capacity indicator (a small progress bar plus '32/40 seats filled' text). Perfect for hands-on conference workshops and training sessions.

By Staaarter Team
Event
Docs
Live preview

Docs

Installation

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

npx shadcn add https://staaarter.com/r/workshop-registration-list.json

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

Usage

The file also exports event19Demo, 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 { Event19, event19Demo } from "@/components/blocks/event/event19";

export default function Page() {
  return <Event19 {...event19Demo} />;
}

Props

PropTypeDefaultDescription
headingstring"Hands-on workshops"Section heading.
descriptionstringundefinedSupporting paragraph under the heading.
workshopsEvent19Workshop[]noneList of workshop cards to render.
classNamestringnoneExtra classes for the outer section element.

Types

type Event19Level = "Beginner" | "Intermediate" | "Advanced";

interface Event19Workshop {
  title: string;
  level: Event19Level;
  instructorName: string;
  instructorBlurb: string;
  instructorAvatar?: { src: string; alt: string };
  prerequisites: string[];
  seatsFilled: number;
  seatsTotal: number;
}

Behavior notes

  • The capacity bar's fill width is computed once from the static seatsFilled/seatsTotal props at render time; it is a plain styled div, not an interactive or animated control.
  • seatsFilled/seatsTotal are static demo numbers, not a live registration count.
  • Instructor avatars fall back to initials (via AvatarFallback/initialsFromName) when no avatar image is supplied or the image fails to load.