# Timeline card

> Canonical HTML: https://screenrig.ai/docs/cards/timeline/

Dated milestones on a line: a roadmap with a Today marker and the next one called out, a history by year, or project phases to scale with how far along they are.

Category: Events. Tags: Schedules, Countdowns and timers, Offices and workplaces, Lobbies and reception.

## Previews

![Timeline](/cards/timeline/v1/screenshots/canvas-bloom.webp?sha=7c29a46861db2112fe63034a9faebd979f255dba4f2038e45f4f955ad74b532c)

Canvas

![Timeline](/cards/timeline/v1/screenshots/corner-bloom.webp?sha=c9fed66156e0e437a0b61beec531bf01f641e814fe9c96e13b9fd795a7e39003)

Corner

![Timeline](/cards/timeline/v1/screenshots/chip-bloom.webp?sha=5b9410be284a213f6529129bc3990c413e829e680ef219f265969002b08166c3)

Chip

## Views and forms

Views: canvas, corner, chip. Canvas forms: landscape, portrait, square, strip.

[Card views, themes and publishing](/docs/cards/). [Browse the gallery](/apps/#cards).

## Data and privacy

This card uses its configured properties and live card data.

## Properties

For theme, background, accent and position, see [Common properties](/docs/cards/#common-properties).

Set static properties in `params`. Bind `data` to a project card data key for live values; that document holds only dynamic properties. Without a data key, put the complete configuration in `params`. Nested rows describe the contents of their parent property.

### Static properties

| Name | Type | Default | Values and limits | Description |
| --- | --- | --- | --- | --- |
| `title` | string | `""` | maxLength: `40` | A heading. |
| `mode` | string | `"roadmap"` | `"roadmap"`, `"history"`, `"phases"` | roadmap: done, today and next. history: the years, big. phases: bars to scale with how far the project is. |
| `showNow` | boolean | `true` |  | A Today marker on a roadmap. |
| `pageSeconds` | integer | `12` | minimum: `4`; maximum: `60` | How long each page of milestones shows when there are more than fit. |
| `timeZone` | string, null | `null` |  |  |

### Dynamic properties

| Name | Type | Default | Values and limits | Description |
| --- | --- | --- | --- | --- |
| `items` | array | `[{"date":"2026-03-02","title":"Kickoff","detail":"Team, scope and budget agreed."},{"date":"2026-05-18","title":"Design complete","detail":"Screens signed off by operations."},{"date":"2026-07-27","title":"Alpha","detail":"Internal pilot on two floors."},{"date":"2026-09-14","title":"Pilot opens","detail":"Three sites go live."},{"date":"2026-11-06","title":"Beta launch","detail":"Every site, with the new dashboard."},{"date":"2027-01-18","title":"General availability","detail":"Open to all customers."},{"date":"2027-03-29","title":"Integrations","detail":"Calendar and payroll connect."},{"date":"2027-06-14","title":"Version 2","detail":"Mobile and an open API."}]` | minItems: `0`; maxItems: `24` | Milestones (or, in phases mode, phases with an end). A date is YYYY, YYYY-MM or YYYY-MM-DD. |
| `items[].date` | string |  | maxLength: `10`; Required |  |
| `items[].end` | string, null | `null` | maxLength: `10` | Phases mode: the last day of the phase. |
| `items[].title` | string |  | minLength: `1`; maxLength: `48`; Required |  |
| `items[].detail` | string | `""` | maxLength: `120` |  |
| `items[].icon` | null, string | `null` | `null`, `"activity-01"`, `"air-vent"`, `"airplane-01"`, `"alert-01"`, `"alert-02"`, `"american-football"`, `"analytics-up"`, `"apple"`, `"arrow-down-01"`, `"arrow-down-right-01"`, `"arrow-up-01"`, `"arrow-up-right-01"`, `"award-01"`, `"baseball"`, `"basketball-01"`, `"battery-full"`, `"bell-ring"`, `"bicycle"`, `"birthday-cake"`, `"bitcoin"`, `"bus-01"`, `"calendar-03"`, `"calendar-04"`, `"calendar-add-01"`, `"calendar-check"`, `"call-02"`, `"camera-01"`, `"cancel-circle"`, `"car-01"`, `"champion"`, `"chart-decrease"`, `"chart-increase"`, `"checkmark-circle-02"`, `"clock-01"`, `"clock-02"`, `"cloud"`, `"cloud-angled-rain"`, `"cloud-angled-zap"`, `"cloud-big-rain"`, `"cloud-drizzle"`, `"cloud-fog"`, `"cloud-hailstone"`, `"cloud-snow"`, `"coffee-01"`, `"coffee-02"`, `"contact-01"`, `"container-truck-01"`, `"cricket-bat"`, `"crown"`, `"delivery-truck-01"`, `"dices"`, `"discord"`, `"discount-tag-01"`, `"dollar-02"`, `"door-closed-locked"`, `"door-open"`, `"drink"`, `"droplet"`, `"ethereum"`, `"euro"`, `"exchange-01"`, `"facebook-01"`, `"factory"`, `"fast-wind"`, `"favourite"`, `"ferry-boat"`, `"fire"`, `"fire-02"`, `"first-aid-kit"`, `"flag-01"`, `"flag-02"`, `"flash"`, `"flower-01"`, `"football"`, `"gauge"`, `"gift"`, `"git-branch"`, `"globe-02"`, `"google"`, `"hand-prayer"`, `"heart"`, `"help-circle"`, `"home-01"`, `"hourglass"`, `"humidity"`, `"ice-hockey"`, `"information-circle"`, `"instagram"`, `"lamp-01"`, `"lantern"`, `"leaf-01"`, `"leaf-02"`, `"lightbulb"`, `"link-01"`, `"linkedin-01"`, `"litecoin"`, `"location-01"`, `"location-04"`, `"mail-01"`, `"medal-first-place"`, `"medical-mask"`, `"meeting-room"`, `"megaphone-01"`, `"message-01"`, `"money-exchange-02"`, `"moon-02"`, `"moon-cloud"`, `"moon-star"`, `"music-note-01"`, `"navigation-03"`, `"new-releases"`, `"new-twitter"`, `"news"`, `"news-01"`, `"noodles"`, `"package-delivered"`, `"parking-area-square"`, `"party"`, `"party-popper"`, `"pause-circle"`, `"percent-circle"`, `"pinterest"`, `"pizza-01"`, `"play-circle"`, `"play-store"`, `"podium"`, `"pound"`, `"pumpkin"`, `"qr-code"`, `"qr-code-01"`, `"queue-01"`, `"quote-down"`, `"quote-up"`, `"ranking"`, `"restaurant-01"`, `"rocket-01"`, `"rss"`, `"running-shoes"`, `"sale-tag-01"`, `"security-check"`, `"shop-sign"`, `"shopping-bag-01"`, `"siren"`, `"smart-phone-01"`, `"snapchat"`, `"snowflake"`, `"sparkles"`, `"spotify"`, `"star"`, `"star-half"`, `"star-off"`, `"stop-circle"`, `"store-01"`, `"sun-03"`, `"sun-cloud-02"`, `"sunrise"`, `"sunset"`, `"swimming"`, `"tag-01"`, `"target-02"`, `"temperature"`, `"tennis-ball"`, `"thermometer"`, `"thermometer-cold"`, `"thermometer-warm"`, `"threads"`, `"ticket-01"`, `"tiktok"`, `"time-quarter-pass"`, `"timer-01"`, `"tornado-02"`, `"train-01"`, `"tram"`, `"trophy"`, `"tropical-storm"`, `"tsunami"`, `"user-02"`, `"user-group"`, `"user-love-01"`, `"vegetarian-food"`, `"volleyball"`, `"volume-high"`, `"vote"`, `"walking"`, `"warehouse"`, `"waves"`, `"whatsapp"`, `"wheat-off"`, `"wifi-01"`, `"wifi-full-signal"`, `"wifi-lock"`, `"wrench-01"`, `"yen"`, `"youtube"` |  |
| `items[].done` | boolean | `false` |  | Marks a milestone done whatever its date. |

## Canvas example

Add this item to a playlist page’s `primitives`. [Publish the playlist and assign a screen](/docs/cards/#publish-a-card-canvas).

```json
{
  "id": "timeline",
  "primitive": "card",
  "card": "timeline",
  "major": 1,
  "params": {
    "theme": "neomustard"
  },
  "rect": {
    "x": 0,
    "y": 0,
    "width": 1920,
    "height": 1080
  },
  "layer": 0,
  "content_fit": "fill",
  "data": "timeline-main"
}
```

## Write live data

Create this document before showing the card, then replace it to update the screen without republishing. Use the same project as the playlist. Supply your API authorization through the environment; see [API authentication](/docs/authentication/).

```console
curl --request PUT "https://api.screenrig.ai/api/card-data/timeline-main" \
  --header "Authorization: Bearer $SCREENRIG_TOKEN" \
  --header "ScreenRig-Project: $SCREENRIG_PROJECT" \
  --header "Content-Type: application/json" \
  --data '{"document":{"items":[{"date":"2026-03-02","title":"Kickoff","detail":"Team, scope and budget agreed."},{"date":"2026-05-18","title":"Design complete","detail":"Screens signed off by operations."},{"date":"2026-07-27","title":"Alpha","detail":"Internal pilot on two floors."},{"date":"2026-09-14","title":"Pilot opens","detail":"Three sites go live."},{"date":"2026-11-06","title":"Beta launch","detail":"Every site, with the new dashboard."},{"date":"2027-01-18","title":"General availability","detail":"Open to all customers."},{"date":"2027-03-29","title":"Integrations","detail":"Calendar and payroll connect."},{"date":"2027-06-14","title":"Version 2","detail":"Mobile and an open API."}]}}'
```
