byre
Repository
https://bitbucket.org/byredev/camber
Package
@byre/camber
Relationships
Depends on: draft, form
draft 1.0.0
  status draft
  title camber — component contract
  date 2026-05-24
  license Open

---

spec camber

  section purpose
    title Purpose
    level 1

    prose
      value
        camber declares the contract between a component and the
        host that mounts it. Variants, slots, the host boundary —
        all named. No prescription about implementation.

  section variants-vs-tokens
    title Variants vs tokens
    level 1

    prose
      value
        One test distinguishes a variant from a theme token: is it a
        CSS custom property? If yes, it's a theme token. If no, it's
        a variant — a structural choice the consumer makes at
        author time.

    requirement C-001
      level MUST
      value
        A camber component MUST declare its variants as an
        enumerated set. Consumers select a variant via a discrete
        attribute or property; not via a CSS custom property.

    requirement C-002
      level MUST
      value
        A camber component MUST declare its slots by name. The host
        binds content into named slots; the component does not
        inspect what flows through them.

    requirement C-003
      level MUST NOT
      value
        A camber component MUST NOT auto-register itself with
        customElements. Registration is the host's responsibility,
        so that hosts can choose element names and scope.
About

Est. 2026

Standards for interoperable systems

Readable by humans, lossless to machines