shadcn.io is not affiliated with official shadcn/ui
Progress Tracker Table Block for React
An initiative tracker whose progress bars show tasks done, in review and not started, with a line for last week and a diamond for the plan, a change in points, a Behind plan flag, and sortable Progress and Change heads.
Installation
Overview
Show how far work has come and whether it is where it should be, with this progress tracker table for React with Base UI. A compact header names the table. Inside a hairline frame with a plus mark on each corner, a band says how the rows are ordered, over a native table of six Milestride initiatives with an owner, a progress bar, the change since last week and a due date. Each bar has three parts worked out from the task counts: done (solid), in review (half strength) and not started (the empty track). A line stands where the initiative was a week ago and a diamond where the plan says it should be today. The change column says "+11 pts" with a trend icon and a word, and "Behind plan" with a warning glyph appears when an initiative is more than ten points under the plan, with no colour thresholds anywhere. The Progress and Change heads sort. A legend closes the panel. It is built from Guides and plain CSS bars, with a CSS entrance only. For initiative trackers, roadmaps, onboarding checklists and any table where progress needs a baseline.
FAQ
How is each bar drawn?
From the task counts: the done share is done / (done + review + todo) rounded to a whole percent, the review share likewise, and the rest of the track is empty. The three parts are widths set from CSS variables on the bar, so the bar is plain CSS with no chart code. The last-week line and the plan diamond use the same scale, so they sit exactly where their percentages say.
When does Behind plan show, and why no colours?
When the plan's percentage minus the done percentage is more than BEHIND (ten points). The flag is a warning glyph and two words, and the line it sits on is always there, hidden when not needed, so rows never change height. Status carried by colour alone fails for many readers and for greyscale printing; here the words, a sign and an icon carry it and the whole table works in one tone.
How do I use my own initiatives?
Edit INITIATIVES: a name, an owner, the tasks done, in review and not started, the percent done a week ago, the percent the plan wants today and the due date. Progress, change and the flag are derived from those numbers. The array is in due-date order, which is also what a third press on a head returns to.
How do the sortable heads behave?
Progress and Change start with the most first, the second press reverses and the third restores due-date order. The sorted head has aria-sort, the others say none, ties fall to the name and a polite line reads out the order. The rows are rebuilt for each order, so nothing animates under the pointer.
What stays local, and how do I wire real data?
The counts are constants and the sort is one useState; nothing is requested or saved. To use real data, map your tracker's tasks to the three counts and store the previous week's percentage in a weekly snapshot, then pass INITIATIVES in. Nothing else in the table needs to change.
Related
- Pro
A team resourcing table with a utilisation bar on a 150 percent scale, a line at 100 percent, hatched overflow that says Over by 6 h, a week menu that swaps the hours, sortable heads and a team total in the footer.
- Pro
An email campaigns table with a data bar under every result sized to the column maximum, a Counts and Rates toggle that changes the numbers and bars together, status words with dots, sortable heads and a line naming each bar scale.
- Pro
A KPI table of five metrics, each with a 30-day sparkline in its row, and one range slider under the table that moves a cursor across every line and updates the value and change for the chosen day, with a 14 or 30 day window.
- Pro
Target Ratio Progress Stats
Goals and progressFive team rows led by a booked-over-quota ratio at display size, each with a bar along the row's floor and the share and the gap written at the end.
- Pro
Sortable Members Table
Sort and searchA members table whose column heads are buttons: press one to sort, again to reverse, a third time for the original order, with aria-sort on the active head, ties settled by name and a spoken line for each result.
- Pro
Effective Priority Table
Rich cellsA ticket queue where a switch raises any ticket due within two days by one level, shown as drawn bars, a word and a raised-from note, and the Priority head sorts by that effective rank.