Variable: ENTITY_EVALUATION
constENTITY_EVALUATION:object
Defined in: semantics/taxonomy.ts:366
Which evaluations are legal for each entity.
Design note — Input and Selection carry no evaluations. Form
controls are data-entry surfaces, not decision hierarchies: there is no
authorial choice between primary/secondary/muted for a text field or
a checkbox, and validation outcome is not authorial either — it is a
runtime fact emitted by a form library or a validate() callback.
The vocabulary distinction:
Evaluation(this matrix) is authorial emphasis/valence.State.invalid(seeSTATES) is the runtime validation outcome.
This mirrors the Lexicon §10.5 distinction negative ≠ destructive:
evaluation lives in the author's pen, state lives in the user's data. By
keeping the two separate the system avoids the shape where a developer is
tempted to write <TextField evaluation="negative"> to express a
validation error — that is a category mistake. The correct expression is
<TextField isInvalid />, which flips the invalid state and lets the
single neutral chrome become the canonical validation surface.
Adjacent slots (description, icon, validationMessage) may still consume
vars.colors.input.{positive|caution|negative} directly when they need
valence — those are display of validation context, not the control
itself.
Consensus pattern across React Aria (isInvalid), Adobe Spectrum
(validationState), Material UI (error), Ant Design (status), and
shadcn/ui (aria-invalid): validation is exposed as boolean state on the
control, not as a coloring variant.
Type Declaration
Action
readonlyAction: readonly ["primary","secondary","accent","muted","negative"]
Collection
readonlyCollection: readonly ["primary","muted"]
Disclosure
readonlyDisclosure: readonly ["primary","muted"]
Feedback
readonlyFeedback: readonly ["primary","positive","caution","negative"]
Input
readonlyInput: readonly [] =[]
Navigation
readonlyNavigation: readonly ["primary","secondary","accent","muted"]
Overlay
readonlyOverlay: readonly ["primary","secondary","accent","muted","negative"]
Selection
readonlySelection: readonly [] =[]
Structure
readonlyStructure: readonly ["primary","muted"]