Contributing
ARC UI is open source, and contributions are welcome.
Getting Started
Prerequisites:
- Node.js 24+ (LTS)
- pnpm 10+
- Git
git clone https://github.com/Arclight-Digital/arc-ui.git
cd arc-ui
pnpm install
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:
pnpm dev
After editing Web Component source in packages/web-components/src/ or tokens inshared/tokens.js, regenerate everything (framework wrappers, HTML examples, and CSS):
pnpm generate
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 editpackage.json versions by hand:
pnpm bump-versions <version>
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 onGitHubwith:
- 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