---
title: "Timeline component | zenit Zig UI"
description: "Vertical events by time or status. completed / current / pending, time, title and description align on one rail."
url: https://ui.surf/zenit/components/timeline
language: en
alternate_zh: https://ui.surf/zenit/zh/components/timeline.md
alternate_es: https://ui.surf/zenit/es/components/timeline.md
alternate_ja: https://ui.surf/zenit/ja/components/timeline.md
alternate_ko: https://ui.surf/zenit/ko/components/timeline.md
alternate_fr: https://ui.surf/zenit/fr/components/timeline.md
alternate_de: https://ui.surf/zenit/de/components/timeline.md
project: zenit v0.1.0-alpha (Zig 0.15.2, macOS)
source: https://github.com/version-next/zenit
---

# Timeline

`ui.widgets.Timeline`

Vertical events by time or status.

[Video](https://ui.surf/zenit/media/stories/timeline.mp4?v=c760ea6e95)

**BEHAVIOR CONTRACT**

completed / current / pending, time, title and description align on one rail.

**RECORDED INTERACTION**

Shows an order lifecycle.

`examples/storybook/stories.zig:681`

```zig
// ── Timeline ──
pub fn buildTimeline(scope: *ui.Scope, cx: *ui.Cx) anyerror!*ui.Node {
    const items = [_]W.TimelineItem{
        .{ .title = "Created", .description = "Order placed", .time = "09:00", .status = .completed },
        .{ .title = "Shipped", .description = "In transit", .time = "12:30", .status = .active },
        .{ .title = "Delivered", .description = "Pending", .status = .pending },
    };
    return W.Timeline(.{ .items = &items }).mount(scope, cx);
}
```

[View source on GitHubexamples/storybook/stories.zig:681](https://github.com/version-next/zenit/blob/HEAD/examples/storybook/stories.zig#L681)

The story's verbatim source from the Storybook (zenit 4c50245 2026-10-01). `W` is `ui.widgets`; `col` / `row` / `label` are small Storybook layout helpers.

### TimelineProps

`ui.widgets.Timeline`

[src/ui/components/timeline/mod.zig:52](https://github.com/version-next/zenit/blob/HEAD/src/ui/components/timeline/mod.zig#L52)

```zig
fn Timeline(props: TimelineProps) TimelineBuilder
```

| Field | Type | Default | Description |
| --- | --- | --- | --- |
| `items` | `[]const TimelineItem` | `&.{}` | — |

### \*Node

`ui.widgets.Timeline`

mount returns `*Node` directly. Append it to a parent.
