Semantic Variants
Default, secondary, outline, and destructive badge variants.
Atoms
Small status indicator for tags, counters, and state metadata.
pnpm add @quinkit/uiimport { Badge } from "@quinkit/ui";Live previews · code · themes · viewport · dark mode
Default, secondary, outline, and destructive badge variants.
Pair a status indicator dot with a label.
Leading Lucide icons inside badges.
Interactive tag badges with dismiss buttons.
Badge overlays for unread counts and notifications.
Truncated long text badge with flexible width.
Badge is a Week 3 atom in @quinkit/ui. It is implemented with strict TypeScript, design-token classes, dark-mode compatible colors, Storybook coverage, and unit tests.
aria-label for icon-only/unlabelled controls.focus-visible and the shared ring token.The component uses semantic tokens such as bg-background, text-foreground, border-input, bg-primary, and text-primary-foreground, so it adapts to .dark and theme palettes. Motion-sensitive styling uses motion-reduce:* or avoids required animation.
Public props are documented with JSDoc in packages/ui/src/components/atoms/badge/badge.tsx.
Badge adheres to WAI-ARIA design patterns for accessible web components.
Keyboard Navigation
Tab / Shift + Tab — Focuses control and moves between interactive elements.Space / Enter — Triggers action or toggles selection.Escape — Closes open popovers, overlays, or dropdown menus.ARIA Standards
aria-* attributes.ring-ring) visible in both light & dark mode.Add a shadcn-compatible bridge file to your project that re-exports from @quinkit/ui.
npx shadcn@latest add https://quinkit-ui.vercel.app/r/badge.json