ReadonlyfieldProperty key to read. Accepts a dotted path resolved against the
normalized { properties, attributes } feature model — e.g.
"properties.Name", "attributes.photo" (see resolve.ts).
Optional ReadonlylabelHuman-readable label. Defaults to the raw field key when omitted.
Optional ReadonlytypeWhich widget renders the value. Defaults to "text".
⚠️ Typed by the CONTRACT rather than by a local union. FieldType lived here
and declared 17 members against the 24 the engine renders — one of the five
parallel type vocabularies the pre-flight found, and the one that made date,
url and email "declared but rendered nowhere". A single list cannot
diverge from itself.
Optional ReadonlystyleVisual emphasis.
⚠️ Typed by the CONTRACT. The local FieldStyle declared 29 values of
which 3 were branched, and the other 26 produced neither a branch nor a
CSS class — measured, twice, a week apart.
Optional ReadonlyvariantPre-type hint carried verbatim from the authored config, read according to the
field's type:
hero
(image → hero), title (text → title emphasis), multiline (text → longtext);action — the button's visual weight, ActionVariant (primary, secondary,
danger).⚠️ One flat key for two meanings, because this legacy descriptor is flat by
construction. The attributes block types the second meaning per widget, as
ActionOptions.variant.
Optional ReadonlyhiddenWhen true, the field is never rendered.
Optional ReadonlyactionIdentifier dispatched with geoleaf:popup:action for type: "action".
Optional ReadonlyaccordionSide-panel only: wrap this field in a collapsible <details> section.
Optional ReadonlydefaultSide-panel only: when accordion, render the section expanded initially.
Descriptor for a single field to display in tooltip / popup / side-panel.