Skip to content
shadcn.io

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.

Framework
UI library

Preview

Preview width

Installation

Part of Pro
Pro unlocks the code and one-line install of every Pro button and text effect, plus the MCP for your AI editor.
Have Pro already? Sign in to open it.Opens here as soon as you're Pro.

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.

How does it fit on a phone?

The header stacks and the progress bar takes the full width. The wall is two badges across and four rows tall, with each cell a comfortable press target. Nothing scrolls sideways at 320 pixels.

What moves, and what happens with reduced motion?

The header and the wall fade up once when the page loads, with a CSS transition, and the tooltip fades in. With reduced motion the entrance is off and the tooltip appears without animation. Nothing loops.

  • Pro

    Badge Counter Wall Features

    Metrics and charts

    A 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.

  • Pro

    A 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

    A 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

    Six 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

    Six 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

    A 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.