shadcn.io is not affiliated with official shadcn/ui
Inventory Stocktake Task List Block for Radix UI
A stocktake sheet with expected and counted columns, a variance word per SKU, a Low badge and Reorder button under each reorder point, a To order line and Finish count that waits for every count.
Installation
Overview
Count the stockroom without a spreadsheet, with this stocktake block for React with Radix UI. A table lists ten SKUs with a mono code, the count the book expects and an Input for what is on the shelf. A variance word is worked out from the two: "Matches", "Short 4" or "Over 1", each with its own arrow or tick. A counted row at or under its reorder point gets a Low Badge and a Reorder button that adds it to the To order line. A Progress bar and "6 of 10 counted" follow your typing. The Shine Button "Finish count" stays inactive until every SKU has a count, and the status line says how many are missing. Guides rule the bands. For stockrooms, kitchens, shops and any count against a book.
FAQ
How are Low and the variance worked out?
The variance is the counted number minus the expected one: zero matches, below is short, above is over. A row is Low when it has a count and the count is at or under its reorderAt number. Both come from small helpers over the rows, so the text always agrees with the numbers.
Why does Finish count stay inactive?
A count isn't finished while a SKU is blank, so the button keeps aria-disabled and stays focusable. Pressing it says how many SKUs are not counted, and the same line is the status message. It never hides or removes the button.
What stays local, and how do I save for real?
Counts, the order list and the finished state live on the page and reset on reload; nothing is ordered or sent. In your app, save each count from count, write the order list from list, and send the finished sheet from finish.