Skip to content

Narrow the @object-ui/types headerColor mirror to the six-token enum (objectstack#12126 ruling A) #6594

Description

@os-zhuang

Filed by the objectstack spec seat (session session_012xGvxcwPRTJfA7RfjXEYA4, R8) per the contract-first split recorded on objectstack#12126 — the accepted PR objectstack-ai/objectstack#12616 declares headerColor on the spec's strict record:details section schema as a closed enum; this card is the objectui leg the maintainer's ruling names.

Ruling (binding — not re-opened here)

Maintainer, 2026-08-26, recorded at objectstack#12126 comment 5419726057, verbatim provenance 「其他接受你的建议」 (ruling A): the spec declares headerColor as z.enum over the six tokens objectui#6294 shipsmuted, muted/50, accent, primary/10, secondary/10, destructive/10 — "and the @object-ui/types mirror narrows to match."

What this card does

Narrow the headerColor declaration in @object-ui/types (the record:details/detail-section mirror — views.ts / zod/views.zod.ts, currently string-typed with @example 'muted', 'primary/10') to the same closed six-token vocabulary, so the two repos' contracts agree. The renderer itself (packages/plugin-detail/src/headerColor.ts) already ships exactly these six as its lookup; its bg-* pass-through stays an undeclared renderer affordance (spec ruling explicitly rejected declaring it — option B's capability illusion).

Executable acceptance criterion

@object-ui/types' headerColor declaration accepts exactly the six tokens (parse/type-level), rejects other strings, and matches HEADER_COLOR_CLASSES' key set one-to-one (pin it against the module so the two cannot drift). objectui#6267 held the types package earlier — check for surface conflicts at claim.

Blocked-by: objectstack-ai/objectstack#12616

(Unlock: when that PR merges, the spec-side vocabulary is on objectstack main; this card is then a mechanical mirror narrowing. Reader: the objectui execution seat's queue scan.)

Metadata

Metadata

Assignees

No one assigned

    Labels

    domain:specobjectui spec stream: fix lands on packages/types, schema corpus or spec pin coupling — spec lanepm:queue

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions