Introduction
Pixelore UI is a React design system for HTML / browser games. It ships accessible, animated, pixel-perfect components built on top of Radix UI primitives, Tailwind CSS v4, and Motion.
It works as a drop-in component library in any modern React framework: Next.js (App Router), Vite, Remix, Astro islands, and so on.
Who is this for?
If you're building a React app that needs personality + accessibility, you're the target audience. Specifically:
- HTML game developers — turn-based RPGs, roguelikes, idle games, jam projects. The signature
HeartBar,Progressbars,Dialogoverlays, andBadgetags are battle-tested in the live RPG demo atapps/rpg-demo. - Creative tool builders — pixel art editors, level editors, music trackers. Retro aesthetic, modern a11y.
- Side-project tinkerers — portfolios, jam tools, custom dashboards where "flat shadcn" feels wrong.
It is not the right pick for: enterprise SaaS, financial dashboards, or anywhere "professional and conservative" is the brief.
Install
pnpm add @pixelore/react motion
# or
npm install @pixelore/react motionreact, react-dom, and motion are peer dependencies — provide them yourself.
Quick start
Import the stylesheet once at the root of your app, then compose components freely.
Next.js (App Router)
// app/layout.tsx
import '@pixelore/react/styles.css'
export default function RootLayout({ children }) {
return (
<html lang="en">
<body>{children}</body>
</html>
)
}Vite + React
// src/main.tsx
import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import '@pixelore/react/styles.css'
import { App } from './App'
createRoot(document.getElementById('root')!).render(
<StrictMode>
<App />
</StrictMode>,
)Remix
// app/root.tsx
import styles from '@pixelore/react/styles.css?url'
export const links = () => [{ rel: 'stylesheet', href: styles }]Astro (with React island)
---
// src/pages/index.astro
import '@pixelore/react/styles.css'
import { Hud } from '../components/Hud'
---
<Hud client:visible />Then start composing
import { Button, Card, HeartBar } from '@pixelore/react'
export function Hud() {
return (
<Card>
<HeartBar value={2} max={3} />
<Button variant="primary">Start Game</Button>
</Card>
)
}Design principles
- Game-ready, not generic. HeartBar, HP/MP progress, badge tags, modal dialogs — the patterns a game UI actually needs.
- Pixel-perfect. No anti-aliased borders. No subpixel rendering tricks. Box-shadow borders keep edges crisp at any zoom.
- Accessible. Every interactive primitive is built on a Radix UI component — keyboard support, ARIA, focus management, screen-reader labels come for free.
- Motion-aware. Animations are powered by Motion, and every animated component checks
prefers-reduced-motionat the JS and CSS layer. Translates swap to opacity fades — no vestibular cue. - Themable. CSS variables drive every token. Override
--po-color-primaryonce and the whole system follows.
What's in the box?
- 18 components: Button, Card, Input, Textarea, Label, Badge, Alert, Avatar, Checkbox, Switch, RadioGroup, Progress, Skeleton, Separator, Tabs, Tooltip, Dialog, and the signature HeartBar for HP / lives.
- Design tokens exported as both CSS variables (
--po-*) and TypeScript exports (tokens.colors.primaryetc.). - A Tailwind preset (v3 + v4 compatible) for projects that want just the tokens.
- A live RPG demo at
apps/rpg-demo— a turn-based game built entirely with the library.
What's next?
- Read about accessibility for the patterns every component follows
- Read about motion for how reduced motion is handled
- Browse the design tokens to see every colour, font, shadow, and spacing value
- Jump to the Button component to see the full anatomy of a Pixelore UI component