Canvas Design System
Main Site Tokens

Agenda

A read-only running order: each activity's start time, title, type and duration, in order.

When to Use

Use when: Someone needs to read a workshop's running order rather than edit it: on a workshop or library page, in a briefing, beside an AI proposal, in a summary or report. Pass start and the times follow from each duration.
Don't use when: The agenda is being edited. Inside the Planner the activities are ws_planner_card, which drag, swap and open the inspector. For a list that is not an agenda, use a stack.

Variants

With start times

The first activity starts at start and each later time adds the duration before it. An item with its own start resets the clock; a duration written as text stops it, so no later time is invented.

  1. Welcome and goals Activity 10 min
  2. Two truths and a lie Icebreaker 15 min
  3. Dot voting on the roadmap Exercise Everyone gets three dots. Silent first, then discuss the top five. 30 min
  4. Coffee Break 15 min
  5. Owners and first steps Exercise 20 min
<?= ws_agenda([
    ['title' => 'Welcome and goals', 'duration' => 10, 'type' => 'custom'],
    ['title' => 'Two truths and a lie', 'duration' => 15, 'type' => 'icebreaker'],
    ['title' => 'Dot voting on the roadmap', 'duration' => 30, 'type' => 'exercise',
     'description' => 'Everyone gets three dots. Silent first, then discuss the top five.'],
    ['title' => 'Coffee', 'duration' => 15, 'type' => 'break'],
    ['title' => 'Owners and first steps', 'duration' => 20, 'type' => 'exercise'],
], ['start' => '09:30', 'label' => 'Morning agenda']) ?>

Without times

With no start anywhere the time column goes, and the order and durations carry the plan.

  1. Welcome and goals Activity 10 min
  2. Two truths and a lie Icebreaker 15 min
  3. Dot voting on the roadmap Exercise Everyone gets three dots. Silent first, then discuss the top five. 30 min

Over several days

Items with a day are grouped under Day labels, each list named by its label.

Day 1

  1. Kickoff and context Activity 45 min
  2. Lightning demos Exercise 1 hr

Day 2

  1. Decide and storyboard Exercise 1 hr 30 min
  2. Lunch Break 1 hr

Options

OptionTypeDefaultPurpose
$itemsarray—Positional. The activities in order; see the item fields below
startstringnull'HH:MM' the first activity starts
labelstring''Accessible name for the list, such as 'Morning agenda'
id, class, attrs——On the wrapper
Item fieldTypePurpose
titlestringRequired. The activity's name
durationint or stringMinutes as an int (shown as "15 min" or "1 hr 15 min"), or text shown as written
typestringexercise, icebreaker, break or custom, written out under the title; a break is muted
startstring'HH:MM'; resets the clock from this item on
descriptionstringOne line under the title
dayintGroups items under Day labels when more than one day appears

Accessibility

ConcernBehavior
StructureAn ordered list with role="list" kept explicitly, named by label, so a screen reader announces how many activities there are and reads each row as time, title, type, duration. Over several days each list is named by its Day label.
TimesEach time is a <time datetime> in 24-hour HH:MM.
ColourThe type is written out, never shown by colour alone, and breaks are muted with full-contrast text. Activity-type colours stay on the Planner's canvas (Red Unification).
KeyboardNothing in it is interactive, so it adds no Tab stops.

Tokens

TokenUsed for
--text-dark / --text-defaultTitle; time, type, duration and description
--gray-200The rule between rows
--space-12The time column

CSS Classes

ClassPurpose
.ws-agenda, .ws-agenda--no-timesWrapper; without a time column
.ws-agenda__list, .ws-agenda__item, .ws-agenda__item--{type}The list and each row
.ws-agenda__time, __title, __type, __description, __duration, __dayRow parts and the Day label

Files

FilePurpose
includes/components/helpers.phpws_agenda()
includes/components/agenda.phpTemplate: the clock, the rows, the day groups
includes/components/components.cssStyles, the AGENDA (ws_agenda) block