โ† All specifications

Camber

Framework-agnostic web components built on Shadow DOM.

Identifier
camber
Repository
https://bitbucket.org/byredev/camber
NPM
@byre/camber
Latest version
1.0.0
Audiences
human, agent, cli

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.