Volume II — Interface
camber
The component contract.
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.