Measured entry
8bitcn-retro-mode-switcher
A client-side light and dark theme toggle rendered as pixel-art sun and moon icons. It ships through a shadcn registry with a theme provider, an 8bit button wrapper, and retro CSS, and relies on next-themes, Tailwind utilities, shadcn path aliases, Radix, class variance authority, and the shared cn helper.



Measured
Every value below was written by the harness on the run that produced the frames above. None of it is derived from the prose.
| Build | OK |
|---|---|
| Mount | OK |
| Console errors | 0 |
| Uncaught page errors | 0 |
| Horizontal overflow | clean at 375, 768, 1440 |
| Axe critical | 0 |
| Axe serious | 0 |
| Axe moderate | 0 |
| Axe minor | 0 |
| Gzip marginal | 33.3 KB (98.8 KB build, 65.5 KB baseline) |
| Bare mode | FAIL |
| Provider required | NO |
| Demo used | written from the component source API |
What the harness recorded
BARE BUILD
✗ Build failed in 1.76s error during build: [vite]: Rollup failed to resolve import "class-variance-authority" from "<sandbox>re-54dd67e1f5aa/src/components/ui/8bit/button.tsx".
Verdict
A focused, working theme toggle with a distinctive retro fit, but it needs a shadcn-style setup and is not drop-in for a bare React app. Choose it when the bundled button and theme conventions match your stack; otherwise a simpler native toggle will be easier to own.
Use it if
- Your interface already uses next-themes and the shadcn component structure.
- You want a compact icon-only theme control that fits a retro or pixel-art visual system.
- You are comfortable adopting the bundled 8bit button and its styling conventions.
Skip it if
- Your app has no light and dark theme state managed by next-themes.
- You need a standalone switch without shadcn aliases, Tailwind utilities, or shared button primitives.
- A pixel-art control would conflict with an otherwise conventional design system.
- You do not want the bundled provider to register a global keyboard shortcut for theme changes.
Install
| Declared dependencies | next-themes, radix-ui, clsx, tailwind-merge |
|---|---|
| Missing on install | none |
| Bare install | fails once the shadcn-style helpers are removed, so it needs that setup |
| Provider | no provider required in the harness |
For a non-shadcn project, add next-themes and its provider, Tailwind with class-based dark-mode selectors, the shadcn Button primitive, Radix, class variance authority, clsx, tailwind-merge, the cn helper, path aliases, and the bundled retro stylesheet. Review or remove the provider's global theme hotkey if it conflicts with app shortcuts.
Source and credit
This page is a review, not a copy. The component source lives with its author and this site does not republish it. Read the license before you use anything.
Author repository
github.com/TheOrcDev/8bitcn-uiAlternatives
Other published entries for the switch pattern, ordered by what they measured: mounts first, then clean axe scans, then bare-mode passes, then the smaller bundle.
- neu-toggleneumorphism
- Renders
- YES
- A11y
- 0
- Gzip
- 17.8KB
- Bare
- pass
- Prov
- NO
- clay-toggleclaymorphism
- Renders
- YES
- A11y
- 0
- Gzip
- 18.2KB
- Bare
- pass
- Prov
- NO
- ruixen-scrub-datetimeunclassified
- Renders
- YES
- A11y
- 0
- Gzip
- 22.2KB
- Bare
- pass
- Prov
- NO
- shadcn-switchunclassified
- Renders
- YES
- A11y
- 0
- Gzip
- 34.4KB
- Bare
- pass
- Prov
- NO
- hextaui-switchminimal-flat
- Renders
- YES
- A11y
- 0
- Gzip
- 34.5KB
- Bare
- pass
- Prov
- NO
- hextaui-tabsminimal-flat
- Renders
- YES
- A11y
- 0
- Gzip
- 39.0KB
- Bare
- pass
- Prov
- NO