Badge
Neon-glow badge with magenta, cyan, yellow, and green color variants. Used for category tags and status labels in the arcade aesthetic.
<Badge variant="magenta">BOSS LEVEL</Badge><Badge variant="green">ACTIVE</Badge>
<Badge variant="magenta">BOSS LEVEL</Badge>
<Badge variant="cyan">NEW STAGE</Badge>
<Badge variant="yellow">BONUS</Badge>
import { cn } from '@/lib/utils'
interface BadgeProps {
children: React.ReactNode
variant?: 'magenta' | 'cyan' | 'yellow' | 'green'
className?: string
}
const BADGE_VARIANTS: Record<NonNullable<BadgeProps['variant']>, string> = {
green: 'badge-green',
magenta: 'badge-magenta',
cyan: 'badge-cyan',
yellow: 'badge-yellow',
}
export function Badge({ children, variant = 'green', className }: BadgeProps): React.JSX.Element {
return (
<span className={cn('badge', BADGE_VARIANTS[variant], className)}>
{children}
</span>
)
}
Button
Arcade-styled button with neon green, magenta, cyan, and yellow variants in three sizes. Renders as a Next.js Link when an href is provided.
Card
Game-card component with neon-colored icon, tag, title, description, and a five-star rating display. Supports a "coming soon" locked overlay state.
PixelCharacter
SVG pixel-art sprite with three variants: hero (neon green), ghost (magenta), and coin (yellow). Supports a CSS float animation and configurable size.
ScoreBoard
High-scores leaderboard that renders as a table on desktop and as stacked cards on mobile. Highlights ranks 1-3 with distinct neon color classes.
SectionHeader
Section heading block with a numbered label, a two-part heading where the last word is accented in neon, and an optional subtitle. Supports left or center alignment.
StatBlock
Single-stat display with a large pixel-font value in neon cyan and a label below. Wrapped in a pixel-border container for the arcade aesthetic.
Text
Polymorphic text primitive with body, caption, label, and code variants styled for the RETRO dark arcade palette.