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 presentation hint carried verbatim from the authored config;
normalized by the render engine (legacy parity): hero (image → hero),
title (text → title emphasis), multiline (text → longtext).
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.