shadcn.io is not affiliated with official shadcn/ui
Multi-Track Timeline Block for Vue
A studio production tracker with six weeks as rows and four team lanes as columns, entries with a state and the work they wait on, and a toggle per lane that hides its column while the weeks stay.
Installation
Overview
Show several teams against one calendar with this multi-track timeline for Vue with Ark UI. It is written for Laneworks, a fictional studio production tracker. A hairline frame with a plus mark on each corner holds a table: the six weeks of a site build run down the first column, with the week of 12 October marked Now, and four lanes (Design, Frontend, Backend, QA) run across. Each cell holds up to two entries with a glyph and a word for their state (done, in progress, not started), and an entry that depends on another lane says so in words, such as "needs Backend: Orders export". A button for each lane in a band above the table hides its column and the others reflow to fill the width while the week column stays, and the band counts, from the same data, how many entries wait on work that is not finished. The rows keep their height whichever lanes are shown, and at least one lane always stays. It is built from Guides and lucide icons, with native buttons and a native table, a CSS entrance and your theme's tokens for every colour. For studio and agency planning, release trains and any plan where several teams overlap. The entries are example data.
FAQ
How do I change the lanes and entries?
Edit LANES at the top of the file. Each lane has an id, a name and its entries; each entry has an id, a week from 1 to 6, a title, a state of done, doing or next and, when it waits on work in another lane, needs with that entry's id. The weeks come from WEEK_ONE, a Monday, so the dates and the Now mark are worked out for you, and the count of waiting entries is derived from the needs links and the states, so nothing is typed twice.
What happens when I hide a lane?
Its column leaves the table and the remaining columns share the width, while the week column and every row height stay as they were. The lane buttons are toggles that are pressed while their lane is shown. The last lane cannot be hidden: pressing it says so in the status line instead. Hiding is local state; reload and all four come back.
What does
An entry counts as waiting when its needs points at an entry that is not done yet. In the example three entries wait: Order history on the Orders export, Regression pass on the account pages and Launch check on Order history. The count follows the data if you change a state.
Is it accessible?
The grid is a real table with a caption, column headers and a row header for each week, and every entry is a list item whose state is written as a word beside its glyph, never colour alone. The lane buttons are named by their lane and report their pressed state, and a polite status line says which lane was hidden or shown and how many are visible.