GeoLeaf Core API - v3.0.0
    Preparing search index...
    AttributeWidget:
        | "action"
        | "badge"
        | "checkbox"
        | "coordinates"
        | "date"
        | "dropdown"
        | "email"
        | "gallery"
        | "hours"
        | "image"
        | "link"
        | "list"
        | "longtext"
        | "metric"
        | "number"
        | "phone"
        | "price"
        | "radio"
        | "rating"
        | "reviews"
        | "table"
        | "tags"
        | "text"
        | "url"

    How an attribute value is presented (reading) or captured (edition).

    23 of these identifiers are the components registered by field-renderer. They are the reference vocabulary: the core render tables and the profile schema align on this list, not the reverse.

    ⚠️ action is the exception, added 02/08/2026, and it is NOT a field-renderer component — the package has none. It is a core-only reading widget: a button that emits geoleaf:popup:action, live since 29/07/2026. It was missing from the first cut of this contract, which would have made an action field undeclarable on a migrated layer while the event stayed typed, emitted and taught in three published places. Nothing would have reddened: no profile declares one today.