Arena by Dravensoft
One design system, in React and in Angular, from one contract.
Every value traces to a design token, every component's API and every accessibility pattern it binds is a contract file rather than a paragraph, and a gate holds the code, the documentation and the published packages to those contracts. An agent handed this system does not guess at it: it reads the contract that governs what it is about to write, and the gate tells it when it got it wrong.
Arena carries the language and not the skin. The same
73 components ship under both framework names, rendering the same pixels, and your palettes
and fonts arrive in an arena.config.json your project writes.
bun add @dravensoft/arena-react # or @dravensoft/arena-angular
bun add @phosphor-icons/web
See it
- Overview
- Identity
- Guidelines
- Kitchen sink, react
- Kitchen sink, angular
- Playgrounds, react
- Playgrounds, angular
Benches
Products drawn twice, once under React and once under Angular, each pair
from one arena.config.json and one style plugin of its own. What a pair shows is that
project's appearance rather than Arena's, and both halves are applications you can use rather than
pictures of them.
- Calendly: react, angular
- ClickUp: react, angular
- Duolingo: react, angular
- Etsy: react, angular
- Grafana: react, angular
- Instagram: react, angular
- Notion: react, angular
- Superhuman: react, angular
Every half installs Arena 11.0.0 from the registry rather than reading the repository that publishes this page, so a pair draws a released Arena and a fix made after that release reaches it at the next one.
Opening both halves of a pair at once is the comparison, and that is a local act: clone them and run one command.