shadcn.io is not affiliated with official shadcn/ui
Achievement Trophy Wall Features Block for React Aria
A wall of eight milestone badges for a language-learning app: unlocked ones solid, locked ones muted with a lock and a progress bar, a header count, and a tooltip with each unlock rule.
Installation
Overview
An achievement wall for React with React Aria. A compact header says "Small wins, kept on the wall" and carries a progress bar with its count, "6 of 8 unlocked". Under it, eight milestone badges share hairlines in a 4 by 2 wall, two across on a phone, inside one rounded outline. An unlocked badge is a solid foreground medallion; a locked one is muted, wears a small lock, and says how far along you are in words and a thin bar ("Locked · 9 of 14 days"). Press, click or tap a badge and a tooltip opens with the rule that unlocks it. It's built from Progress and Toggle Tooltip, with CSS transitions for the entrance and your theme's tokens for every colour. For learning apps, fitness trackers and any product with milestones worth showing off.
FAQ
How do I change the milestones?
Edit MILESTONES at the top of the file: each entry is an icon, a name, the rule that unlocks it and, for a locked one, a progress with have, need and unit. Leave progress out and the milestone is unlocked. The header's count, the percent and the bar are all counted from that list, so they never disagree with the wall. Keep the total at a multiple of four so the wall fills its rows at every width.
How does the tooltip open?
Each badge has a press target laid over its cell. Clicking, tapping, or pressing Enter or Space opens the tooltip; Escape closes it. It doesn't open on hover alone, because a hover card can't be reached by keyboard, and the same tooltip works on every target. The rule is also what the tooltip says to assistive technology, and the badge's name and standing are always in the page as text.
Does it rely on colour to say locked or unlocked?
No. Unlocked is a filled medallion and locked is an outlined, muted one with a lock, and the words "Unlocked" or "Locked" sit under every name. The block is greyscale and follows your theme in light and dark, so nothing is tied to a palette.
Is the progress bar read out?
The bar is decoration; its meaning is the sentence beside it, "6 of 8 unlocked", which is real text. That keeps one clear announcement instead of a bar and a sentence saying the same thing.
Related
- Badge Counter Wall FeaturesMetrics and charts
- AABAABScorecard Letter Grade Grid FeaturesMetrics and charts
- Passport Stamp Collection FeaturesDocuments and objects
- Compliance Badge Grid FeaturesMetrics and charts
- Stamped Number Card Grid FeaturesCard grids
- Ring Progress Metric Split FeaturesMetrics and charts