Skip to content

No.228 · Time· New

Activity Timeline

Time laid out three ways: a live activity feed grouped by day with filters, status chips and expandable details; a changelog of releases with tagged notes; and a horizontal plan of milestones with its line filled up to today.

The prompt

Copy this text

Automatic copying is unavailable. Copy the selected text using your device’s copy command.

Written for the variant you picked above: Activity

Build a timeline component in the single layout selected below, for a fictional product team. Inter 14.5px/1.5. Palette (light / dark): ink #18181b / #ececef, muted #6b6b73 / #a1a1aa, faint #a1a1aa / #6b6b73, card #ffffff / #111113, hairline #e6e6ea / #26262b, chip #f3f3f5 / #1c1c20, accent #2563eb / #6ea8fe, ok #15803d / #3fb950, failed #c81e1e / #ff6369, building #b45309 / #f5b14c. Dates: take a 'now' and a time zone (UTC by default) as props and read every date with Intl in that zone, so the server and the browser print the same words. Day labels are 'Today', 'Yesterday' or 'Sun 4 Oct'; relative times are 'just now', '4m ago', '3h ago', then the clock time. Every date is a <time datetime>. Show it on a #fafafa panel and a #0b0b0c panel. Selected variant — Activity (activity): Activity: a header with 'Activity', a green 'Live' dot that pings, and a segmented filter row (All, Deploys, Comments, Code, Alerts, Team) on a chip background where the pressed one is a raised card. Below, day groups ('TODAY' in small caps, muted) each holding an ordered list hung on a 1px rail: a 28px round node per event (a filled triangle for deploys, a branch for merges, initials for comments, a solid red circle with '!' for alerts, a person-plus for team, a tag for releases), then '<strong>Layla Haddad</strong> deployed <mono>main</mono> to Production' with an optional status chip (Ready green, Failed red, Building amber with a blinking dot) and the relative time on the right. Some events have 'Show details' revealing a mono block on the chip colour. A new event arrives every 7s in the demo and drops in at the top. This selection takes precedence over references to other themes or options in the general brief. Implement this selected appearance; do not add a variant picker or alternative appearances unless requested. Implementation requirements: Use React and TypeScript. Keep the component self-contained, with uniquely scoped CSS and no animation libraries. Include required imports, styles and font setup in the result. Interaction: Filter buttons (aria-pressed) narrow the feed; 'Show details' buttons expand log excerpts and comments (aria-expanded, aria-controls); the milestone row scrolls sideways with snap points and is focusable. Motion: New feed items drop in over 0.35s; the live dot pings; a building status blinks; the milestone line grows in on load. Reduced motion removes all of it. Accessibility: A labelled section with real headings and ordered lists. The feed is a polite live region for additions; statuses are words, not only colours; milestones mark the current one with aria-current=step and say Done / In progress / Upcoming. Responsive behavior: On narrow screens the filters wrap under the title, feed times drop under the sentence, the changelog puts the version above each entry, and the milestones scroll sideways. Touch: Every control is a tap target; the milestone row swipes. Preserve keyboard access, visible focus and reduced-motion behavior. Keep fictional demo data and simulated service calls in a separate usage example; expose callbacks for real actions and recover from rejected requests. Keep usage-example links inside the demo: use local buttons or prevent navigation. Demonstration links must not navigate to Vitrine routes or open other pages; preserve real URL support in the reusable component itself. Verify the result at narrow and wide viewport sizes, with keyboard input and reduced motion enabled.

Notes

Interaction
Filter buttons (aria-pressed) narrow the feed; 'Show details' buttons expand log excerpts and comments (aria-expanded, aria-controls); the milestone row scrolls sideways with snap points and is focusable.
Motion
New feed items drop in over 0.35s; the live dot pings; a building status blinks; the milestone line grows in on load. Reduced motion removes all of it.
Accessibility
A labelled section with real headings and ordered lists. The feed is a polite live region for additions; statuses are words, not only colours; milestones mark the current one with aria-current=step and say Done / In progress / Upcoming.
Responsive
On narrow screens the filters wrap under the title, feed times drop under the sentence, the changelog puts the version above each entry, and the milestones scroll sideways.
On touch
Every control is a tap target; the milestone row swipes.

Featured

402 components