App Shells & Panels

Calendar Agenda View

A calendar panel where a month grid and the day's agenda move together, with colored event tags.

This is a WebberUI Pro component

The install command below needs a licence to run; without one it returns 401.

How to install Pro components →See the plans →

On the left, a month grid shows every day of the month with colored dots marking days that have events, and the selected circle moves smoothly between dates via layoutId; on the right, an agenda timeline switches the day's event cards with AnimatePresence — a good fit for a schedule overview inside a dashboard or an app panel.

Bring this into your project

Run this command in your project folder. The CLI adds the source and dependencies; then follow the usage example below.

npx webberui@latest add "https://webberui.com/r/calendar-agenda-view.en.json?t=<install token>"

New project or installation trouble? Start here →

Playground

Tune the props live — the code snippet updates as you go, so you can dial in the look you want before copying it.

2026
7
15
Active edited usageDefault props
<CalendarAgendaView/>

The complete example includes the preview layout and data. Install the component first, then paste this file into your project.

Installation

npx webberui@latest add "https://webberui.com/r/calendar-agenda-view.en.json?t=<install token>"

Or, once registries are configured in components.json, install it as @webberui/calendar-agenda-view.

Usage

import {
  CalendarAgendaView,
  type AgendaEvent,
} from "@/components/ui/calendar-agenda-view";

const events: AgendaEvent[] = [
  {
    id: "e1",
    day: 16,
    start: "09:30",
    end: "10:30",
    title: "Product weekly",
    location: "Meeting room A",
    attendees: 8,
    color: "sky",
  },
];

<CalendarAgendaView
  year={2026}
  month={7}
  events={events}
  defaultSelectedDay={16}
/>

Props

PropTypeDefaultDescription
yearnumber2026The year shown (a fixed value, so SSR and the client agree)
monthnumber7The month shown, 1–12
eventsAgendaEvent[][]Event list; grouped by day and then sorted by start time automatically
defaultSelectedDaynumber1Initially selected day (1-based)
classNamestring—Forwarded to the outermost card container

AgendaEvent

FieldTypeDefaultDescription
idstring—Unique event identifier
daynumber—Which day of the month the event falls on (1-based)
startstring—Start time as a 24-hour string, for example "09:30"
endstring—End time as a 24-hour string, for example "10:30"
titlestring—Event title
locationstring—Location or supporting note (optional)
attendeesnumber—Number of attendees (optional); when set, a count badge is shown
color"sky" | "violet" | "emerald" | "amber" | "rose""sky"Color tag, which sets the color of the calendar dot and the agenda card's color bar

Accessibility

  • Every day cell is a native button marked with aria-pressed for the selected state, and its aria-label reads out the full date and how many events that day has
  • Day cells support Tab navigation and a focus-visible focus ring
  • When the user has "reduce motion" enabled at the system level, the selected circle's movement and the agenda switch animations complete instantly
  • The event color tags are only a supporting marker — time, title, and location are all presented as text, so no information depends on color