shadcn.io is not affiliated with official shadcn/ui
Planning Poker Estimation Task List Block for Radix UI
A planning poker list: pick 1 to 13 or ? for each story, see the team's votes after you pick, read consensus or the median, and watch the total against the sprint's 26-point capacity.
Installation
Overview
Size a sprint's stories together, with this planning poker to-do list block for React with Radix UI. Each story has a row of estimate pills built on Toggle Group, ?, 1, 2, 3, 5, 8 and 13, where ? means you haven't voted. After you pick, the team's three typed votes show: equal votes read "The team agrees on 3", unequal ones list the votes and the median that counts, and a story that counts as 13 adds "Consider splitting this story." The band above totals those medians against the sprint's capacity with a Sliding Number ("21 of 26 points"), says "Over by 3 points" or how much room is left, and counts the stories still on ?. "Sort by points" is an outline button that orders the rows once and leaves them alone while you vote. Guides rule the bands. For backlog grooming and sprint planning.
FAQ
What counts toward the total?
Each story counts as the upper median of the four votes: yours and the team's three. A story you haven't voted on counts as zero and is listed under "to estimate". Change a pill and the total, the room left and the over-capacity line all recompute.
What counts as consensus?
All four votes are the same. Otherwise the row lists the votes in order and says the median is worth a word, which is the nudge to talk before committing. The size of a gap is left to the team; the block only shows it.
How do I change the capacity or the scale?
Change CAPACITY for the sprint's points and PILLS for the scale, for example a t-shirt scale or a Fibonacci scale that stops at 8. The 13 rule is the constant in splitHint.
What stays local, and how do I save for real?
Your picks and the team's votes live in the page, and the team's are typed here, so nothing is shared and it resets on reload. In your app send your pick from pick, hide everyone's votes until all have voted, and reveal them together.