shadcn.io is not affiliated with official shadcn/ui
Achievement Trophy Wall Features Block for React
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 Base UI. 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
- Pro
Badge Counter Wall Features
Metrics and chartsA wall of eight channel counters for a unified inbox, with a two-button toggle that switches between every channel and only those with unread messages.
- AABAABPro
Scorecard Letter Grade Grid Features
Metrics and chartsA site-audit report card: six areas in a hairline grid, each with a display letter grade, a sentence and five proficiency dots, and a foot band with the overall grade counted from the scores.
- Pro
Passport Stamp Collection Features
Documents and objectsA customs declaration drawn as a page with four round stamps inked across it, over a band of four cells that say what earns each stamp and lift it on the page.
- Pro
Compliance Badge Grid Features
Metrics and chartsSix control cards for a privacy-operations tool, each with a coverage ring counted from the data, a sentence of counts and a Passing or open-items badge.
- Pro
Stamped Number Card Grid Features
Card gridsSix pillars for an infrastructure kit as a grid of cards with large outlined numerals stamped behind the title, each with its owner and its check in a description list.
- Pro
Ring Progress Metric Split Features
Metrics and chartsA split for a platform SLA monitor: copy, four ticks and a button at the start, and at the end one chart of three concentric rings with a legend, whose values a 7, 30 or 90 day toggle swaps.