shadcn.io is not affiliated with official shadcn/ui
Task Analytics Task List Block for React Aria
Task stats worked out from a typed list and its completion dates: total, done, in progress and overdue counts, a completion rate, this week against last week, and six weekly bars above the list.
Installation
Overview
Show what a to-do list says about its owner, with this task analytics block for React with React Aria. Cells on shared hairlines hold four counts, Total, Done, In progress and Overdue, each rolled with a Sliding Number, then a completion rate with a bar, and a cell for the week: tasks finished this week, how many last week, the difference in words ("2 more than last week") and six weekly bars. Every figure is worked out from the list below the cells and from the typed dates of earlier completions, against a fixed "today", so ticking a Checkbox moves the counts, the rate and the current bar at once. There is no score or grade, only counts. The bars are drawn with CSS in foreground tones and each has a hidden sentence. Guides rule the bands. For personal task apps, team pages and any product that wants numbers beside the work.
FAQ
Where does each number come from?
Total is the length of the list; Done counts tasks with a doneOn date; In progress counts open tasks marked doing; Overdue counts open tasks due before AS_OF. The completion rate is done over total, and the weekly bars count every finish date, the list's and the earlier ones in HISTORY, by the Monday of its week.
What happens when I tick a task?
It gets today's date as its finish date, so Done goes up, the rate rises, the current week's count and bar grow, and "Overdue" falls if it was late. Unticking reverses all of it. The status line says the new done and weekly counts.
What stays local, and how do I save for real?
Ticks live in the page and reset on reload, and the earlier completions are typed. In your app write the finish date from tick and read counts from your store; keep AS_OF as the current date.
Why no productivity score?
A single score would need an invented formula. This block only counts what the list shows, so every number can be checked against the rows.