Skip to content
BigBang

Popular

    ↑↓Navigate↵OpenEscClose
    TR

    Components

    Timeline

    Events in order along a rail: a marker, a title, a time and optional detail.

    Storybook
    Storybook
    Source
    Source

    The example below loads live from Storybook; open it there to use the controls.

    Live example, StorybookOpen in Storybook

    dateTime is written in the Provider language; time gives ready text. Tone sets the marker colour, icon replaces the dot.

    1. Release stoppedNow

      A check failed.

    2. Review requested
    3. Two people invited to the team

      Invitations were sent by email.

    4. Project created
    import { Timeline, type TimelineItem, Provider } from '@bigbang/ui';
    const items: TimelineItem[] = [
    { id: 'blocked', title: 'Release stopped', description: 'A check failed.', time: 'Now', tone: 'danger', icon: 'circle-alert' },
    { id: 'review', title: 'Review requested', dateTime: '2026-10-27T16:05:00', tone: 'info' },
    { id: 'invited', title: 'Two people invited to the team', description: 'Invitations were sent by email.', dateTime: '2026-10-26T11:20:00' },
    { id: 'created', title: 'Project created', dateTime: '2026-10-24', tone: 'success', icon: 'check' },
    ];
    export default function Default() {
    return (
    <Provider locale="en-GB">
    <Timeline items={items} aria-label="History" className="max-w-lg" />
    </Provider>
    );
    }

    An event’s children go under the description: a link, tags.

    1. Two people invited to the team
    2. Project created
    import { Link, Timeline, type TimelineItem, Provider } from '@bigbang/ui';
    const items: TimelineItem[] = [
    {
    id: 'invited',
    title: 'Two people invited to the team',
    dateTime: '2026-10-26T11:20:00',
    children: <Link href="#">Open details</Link>,
    },
    { id: 'created', title: 'Project created', dateTime: '2026-10-24' },
    ];
    export default function Extra() {
    return (
    <Provider locale="en-GB">
    <Timeline items={items} aria-label="History" className="max-w-lg" />
    </Provider>
    );
    }

    Markers use the status backgrounds.

    1. Release stoppedNow

      A check failed.

    2. Review requested
    3. Two people invited to the team

      Invitations were sent by email.

    4. Project created
    1. Release stoppedNow

      A check failed.

    2. Review requested
    3. Two people invited to the team

      Invitations were sent by email.

    4. Project created
    import { Timeline, type TimelineItem, Provider } from '@bigbang/ui';
    const items: TimelineItem[] = [
    { id: 'blocked', title: 'Release stopped', description: 'A check failed.', time: 'Now', tone: 'danger', icon: 'circle-alert' },
    { id: 'review', title: 'Review requested', dateTime: '2026-10-27T16:05:00', tone: 'info' },
    { id: 'invited', title: 'Two people invited to the team', description: 'Invitations were sent by email.', dateTime: '2026-10-26T11:20:00' },
    { id: 'created', title: 'Project created', dateTime: '2026-10-24', tone: 'success', icon: 'check' },
    ];
    export default function Default() {
    return (
    <Provider locale="en-GB">
    <Timeline items={items} aria-label="History" className="max-w-lg" />
    </Provider>
    );
    }