Radarist project

Radarist / Design system

Documentation v0.1 · Product in progress

Design system contents

Components

Agenda timeline and time marker

Translate time into a shared spatial layout while keeping the current day and overlapping commitments readable.

On this page

Purpose and usage

Translate time into a shared spatial layout while keeping the current day and overlapping commitments readable.

Use for daily planning and schedule visualization, not a generic sortable list.

Anatomy

Anatomy
PartContract
Time axis7:00 to 20:00 by default.
Scale156px per hour.
Placed entryVertical start and height from time values.
Time markerCurrent time indicator and initial scroll target.

Variants and configuration

Variants and configuration
ConfigurationBehavior
Day typesCurrent, future planning, and locked history.
Entry groupsProjects, events, inbox blocks, time away.
OverlapPlacement permits at most two simultaneous blocks.

State coverage

State coverage
StateImplemented behavior
LoadingDay request pending.
PopulatedPositioned entries visible.
PastRead-only controls.
Moving/resizing15-minute snapping with minimum 15-minute duration.

Interaction and responsive behavior

  • Reuse the exported timeline constants so pointer math matches the display.
  • Start/end are fractional hours in UI models; server action data uses minutes.
  • The placement algorithm checks interval segments and rejects more than two overlapping blocks.
  • Do not infer project task persistence from visual completion within a local block.

Accessibility contract

  • Time must remain available as text, not only position.
  • A pointer-driven block manipulation needs an equivalent nonpointer path.
  • The source has polite announcements for changes, but a complete keyboard move/resize model is not established.

Known gaps and readiness

Error/loading/retry patterns are not fully standardized. End-to-end backend scheduling validation and nonpointer parity are outside the isolated capture verification.

Composition example

const top = (start - DEFAULT_AGENDA_START_HOUR)
  * DEFAULT_AGENDA_HOUR_HEIGHT;
const height = (end - start)
  * DEFAULT_AGENDA_HOUR_HEIGHT;

Source references

Source references
FileResponsibility
app/components/agenda-timeline.tsxTime grid and positions
app/components/radar-calendar.tsxDay orchestration, snapping, overlap rules
app/components/current-time-marker.tsxCurrent time and scroll targeting

Examples from the app

Actual Radarist components with fictional data. Captured at 2× resolution or higher. Select an image to inspect it full size.

Radar · Screen · Light · Desktop · 2880 × 2000 px
Radar · Screen · Light · Desktop · Full Page · 2880 × 5402 px
Radar · Screen · Light · Desktop · Read Only · 2320 × 2000 px

Source audit: 2026-10-07 · Revision 0103e2549959 · Documentation v0.1