Staaarter

Filterable Day Agenda

Track filter pills derived from a sessions array (each pill's count is the number of sessions in that track, plus an All pill showing the total), with a real selected-track filter narrowing a hairline-divided list of session rows below. Each row aligns a time slot, the session title, and its speaker and room. Perfect for multi-track conference agendas.

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 button dependencies and any missing npm packages, and installs them straight into your project.

npx shadcn add https://staaarter.com/r/filterable-day-agenda.json

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

Usage

The file also exports event9Demo, 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 { Event9, event9Demo } from "@/components/blocks/event/event9";

export default function Page() {
  return <Event9 {...event9Demo} />;
}

Props

PropTypeDefaultDescription
eyebrowstring"Day one"Small label above the heading.
headingstring"Filterable Day Agenda"Section heading.
descriptionstring"Filter the schedule by track to see what's on next."Supporting copy under the heading.
sessionsAgendaSession[]noneAll sessions in the agenda, across every track.
classNamestringnoneExtra classes for the outer section element.

Types

interface AgendaSession {
  id: string;
  time: string;
  title: string;
  speaker: string;
  room: string;
  track: string;
}

Behavior notes

  • The track pills (including their live counts and the All pill's total) are derived from the sessions prop via useMemo, not stored as separate state.
  • The selected track filter is real client-side state (useState<string>) — clicking a pill narrows the session list below to that track.
  • The session list itself has no interactive elements beyond the filter; there is no registration or export action in this block.