Contributing
ARC UI is open source, and contributions are welcome.
Getting Started
Prerequisites:
- Node.js 24+ (LTS)
- pnpm 10+
- Git
The repo pins its package manager via the packageManager field —
use pnpm for all repository commands.
Development
The docs site is the primary development environment:
After editing Web Component source in packages/web-components/src/ or tokens in
shared/tokens.js, regenerate everything — framework wrappers, HTML examples, and CSS:
packages/react/, packages/vue/,
packages/html/css/, or shared/base.css. These are generated
by Prism and will be overwritten.
Version bumps go through a script that updates every package at once — never edit
package.json versions by hand:
Architecture
ARC UI is a monorepo with Lit Web Components as the single source of truth. Prism, a custom code generator, reads the Web Component source and produces idiomatic wrappers for each framework.
Components are organized into seven tiers:
- Layout — Page scaffolding (AppShell, Container, PageLayout)
- Navigation — Menus, links, tabs, breadcrumbs
- Content — Cards, avatars, icons, carousels
- Data — Tables, lists, badges, meters, stats, timelines
- Typography — Code blocks, markdown, text, kbd
- Input — Buttons, forms, selects, sliders
- Feedback — Modals, dialogs, toasts, tooltips
Design tokens live in shared/tokens.js — the single source of truth.
shared/base.css is generated from it by pnpm generate.
Compound tokens must use var() references so consumers can override
just the base tokens.
Pull Requests
- Fork the repository and create a feature branch from
main - Make your changes to the Web Component source
- Run
pnpm generateto regenerate wrappers and CSS - Run
pnpm lintandpnpm format:check - Test your changes in the docs site (
pnpm dev) - Open a pull request describing the change
Reporting Issues
Open an issue on GitHub with:
- Steps to reproduce (for bugs)
- Expected vs. actual behavior
- Browser and OS version
- A minimal reproduction if possible
Code Style
- Web Components are plain JavaScript (no TypeScript build step)
- Use
static propertiesinstead of decorators - Follow existing naming:
arc-component-namefor tags,ArcComponentNamefor classes - All components import
tokenStylesfrom../shared-styles.js - Use
var(--token-name)for all colors, spacing, and typography - Clean up event listeners in
disconnectedCallback() - Support keyboard navigation and ARIA attributes for interactive components
- Run
pnpm formatbefore committing
See Also
- Getting Started — installation and setup
- Accessibility — accessibility principles and support
- Tokens — design token reference