Content
The content registry externalizes strings and sample data so a spec can be localized or repointed without touching the layout.
Content: $c() and $f()
The content registry externalizes strings and sample data so a spec can be localized, or repointed at different demo data, without touching the layout.
Examples
A registry with a label and a fixture, referenced from text props:
A screen whose visible copy all comes from the registry:
Anatomy
Reference entries from any text prop:
$c(id)— a label: one localized string."content": "$c(nav.home)"$f(id)— a fixture: arbitrary JSON for repeating or data-shaped content. A container repeats over it with"forEach": "$f(menu.items) as item", and each child reads a field with$item.name.
The split is the useful part: labels are what a translator touches, fixtures are what a demo dataset swaps. namespace groups entries by dot-notation (nav, screens.login) for organizing large registries. type is "label" or "fixture"; values maps locale → value.
Stability
The registry shape (defaultLocale, locales, entries[]) and the $c() / $f() call forms are part of the format contract. Adding an entry type is additive; changing how an existing call resolves is breaking.
Components and slots
Components are named reusable subtrees declared once and referenced anywhere; slots project layout content into them, and states (some entered by hover or press) name sets of their values.
The document
A Framewerk spec is one JSON document whose optional top-level fields hold screens, components, styles, flows and content.