Camber
Framework-agnostic web components built on Shadow DOM.
Specification
draft 1.0.0
status stable
title Camber Specification
date 2026-03-20
license All Rights Reserved
---
spec camber
section purpose
title Purpose
level 1
prose
value
Camber is a library of framework-agnostic UI primitives
implemented as standards-track custom elements. Each
component is self-contained: it uses Shadow DOM for style
isolation, accepts data through attributes and properties,
and emits state changes through DOM events.
section primitives
title Primitives
level 2
prose
value
Camber ships a fixed set of low-level UI primitives that
compose into application-level interfaces. The initial set
includes button, badge, card, code-input, divider, input,
select, and spinner. Application-specific components
compose Camber primitives in their own Shadow DOM.
requirement C-001
level MUST
value
Every Camber component MUST use Shadow DOM for its
internal markup. The component MUST NOT publish internal
DOM into the light tree.
requirement C-002
level MUST
value
Every Camber component MUST consume styling via CSS
custom properties drawn from the @byre/brocade token set.
Hardcoded colors, spacing, or typography are a defect.
section composition
title Composition discipline
level 3
prose
value
Components are designed to compose laterally, not nest
deeply. A card containing buttons is normal; a button
containing a card is not. Composition is by slot, not by
wrapper inheritance.
requirement C-010
level MUST
value
Components MUST NOT subclass each other. Reuse is by
composition (one component renders another in its slots),
not by inheritance.