--- title: Canonical vocabularies (generated) type: canon audience: human + agent authority: canonical — the closed sets, generated from the code consts status: current generated: npm run docs:vocabularies (do NOT edit by hand) --- # Canonical vocabularies > **Generated from the code — do not edit.** Run `npm run docs:vocabularies` > to regenerate; `npm run docs:check` fails if this file drifts from the > consts. This is the ONE place the closed sets are spelled out (the reason > every other doc links here instead of copying a list that would go stale). > When building a component you draw part archetypes, event families/verbs, > intents and holds from exactly these sets (STUMBLES #1). ## Part archetypes (26) The cross-component classification a `part` may declare (`ARCHETYPE_VOCABULARY`, `src/uix/morfo/types.ts`). Omit it for a plain display part that pulls no shared styling. | Archetype | Role | | --- | --- | | `provider` | root context provider | | `trigger` | activates an action or opens an overlay (button-like) | | `field-trigger` | a field/input/select/combo trigger — NOT a button; owns the flush field-control treatment, never the generic button/popover chrome | | `content` | primary content panel of an overlay or section | | `overlay` | modal/dim backdrop behind content | | `viewport` | scrollable / focusable container | | `item` | list / tree / menu item | | `option` | selectable option in a select-like list | | `indicator` | visual progress / decorative state | | `thumb` | draggable handle (slider, scroll, switch) | | `track` | background of slider / scroll / progress | | `label` | text label associated with a control | | `title` | overlay or section title | | `description` | secondary descriptive text | | `close` | dismiss / close button | | `action` | call-to-action button | | `header` | section header (often above content) | | `footer` | section footer (often below content) | | `image` | ``-based content | | `fallback` | shown when primary content unavailable | | `arrow` | pointer arrow (tooltip / popover) | | `separator` | visual divider | | `group` | grouping container for related items | | `input` | form input element | | `segment` | discrete sub-input (pin-input segment, OTP digit) | | `preview` | file / link / data preview | ## Sema families (8) — default hold + persistence Each event declares a `semantic.family`; the default perceptual hold and persistence come from `SEMA_HOLDS_BY_INTENT` (`src/uix/sema/holds.ts`), overridable per event. Named holds map to `SEMA_DURATIONS`. | Family | Default hold | Persistence | Per-intent overrides | | --- | --- | --- | --- | | `contact` | 120ms (`glimpse`) | transient | — | | `emerge` | 240ms (`brief`) | transient | — | | `shift` | 600ms (`noticed`) | transient | — | | `commit` | 240ms (`brief`) | transient | fulfill: 600ms/transient | | `signal` | 240ms (`brief`) | transient | risk: 240ms/untilFix; threat: 240ms/untilAction; loss: 600ms/transient | | `handle` | 240ms (`brief`) | transient | — | | `sustain` | 600ms (`noticed`) | stateBound | — | | `delegate` | 600ms (`noticed`) | transient | — | ## Sema verbs, by family The canonical verb set an event may use for each family (`SEMA_VERBS`, `src/uix/sema/verbs.ts`). A `family.verb` pairing outside this is drift. | Family | Verbs | | --- | --- | | `contact` | `press` · `tap` · `activate` · `focus` · `trigger` · `release` | | `commit` | `select` · `unselect` · `toggle` · `save` · `submit` · `confirm` · `complete` · `fail` · `cancel` · `reset` · `discard` · `delete` · `restore` · `expire` · `acknowledge` · `apply` · `partial` · `block` · `move` · `set` · `remove` · `reorder` · `upload` | | `signal` | `announce` · `notify` · `warn` · `alert` · `inform` · `emphasize` · `remind` | | `handle` | `pick` · `carry` · `drop` · `drag` · `resize` · `reorder` · `rotate` · `scroll` · `zoom` | | `emerge` | `present` · `dismiss` · `open` · `close` · `expand` · `collapse` · `reveal` · `hide` | | `shift` | `enter-mode` · `exit-mode` · `navigate` · `route` · `step` · `return` · `context` | | `sustain` | `start` · `progress` · `loading` · `waiting` · `syncing` · `processing` · `streaming` · `pending` · `retrying` · `upload` · `end` | | `delegate` | `offer` · `plan` · `authorize` · `act` · `review` · `escalate` · `return` | ## Intents (6) The evaluative axis (`INTENTS`, `src/uix/intent.ts`). `commit` and `signal` require one; the intent policy per family is `SEMA_FAMILY_POLICY`. `neutral` · `affirm` · `fulfill` · `risk` · `threat` · `loss` ## Hold / perceptual durations The named perceptual scale (`SEMA_DURATIONS`, `src/uix/sema/durations.ts`); an event `hold` is a label from here or a raw ms number. | Label | ms | | --- | --- | | `subliminal` | 50 | | `glimpse` | 120 | | `brief` | 240 | | `noticed` | 600 | | `insistent` | 1200 | | `persistent` | 3000 | ## Haptic kinds (7) The `kind` a `haptic` channel signature may use (`HapticSignature`, `src/uix/sema/channels.ts`). Haptic is opt-in (`new EngineSemantic({ haptic: true })`). `tick` · `tap` · `pulse` · `thud` · `success` · `warning` · `error` ## Palette scales (33) The donor scales a component `color` prop accepts under `intent="neutral"` (`PALETTE_SCALES`, `src/uix/eidos/lib/types.ts`) — the per-instance override (``). NEVER hand-count this list. `gray` · `slate` · `blue` · `cyan` · `teal` · `green` · `yellow` · `amber` · `orange` · `red` · `pink` · `purple` · `mauve` · `sage` · `olive` · `sand` · `tomato` · `ruby` · `crimson` · `plum` · `fuchsia` · `violet` · `iris` · `indigo` · `jade` · `grass` · `brown` · `sky` · `mint` · `lime` · `gold` · `bronze` · `steel` ## Sizes (8) The size scale (`SIZES`; the physical primitives are `SIZE_PRIMITIVE_KEYS`, `src/uix/eidos/lib/types.ts`). `full` is a layout semantic, not a physical tier. Each component exposes the subset its recipe supports. Physical: `xxs` · `xs` · `sm` · `md` · `lg` · `xl` · `xxl` · layout: `full` ## Variant archetypes The canonical variant sets per archetype (`EIDOS_VARIANTS`, `src/uix/eidos/lib/types.ts`). A component narrows to one set; component-only values live in its own `types.ts`. | Archetype | Variants | | --- | --- | | `control` | `surface` · `outline` · `ghost` | | `selection` | `solid` · `outline` · `ghost` | | `chip` | `soft` · `solid` · `outline` · `ghost` | | `marker` | `solid` · `soft` · `outline` | | `tabs` | `line` · `surface` · `pills` · `segmented` | ## Shared strings (`common.*`, 38) The shared idlangref leaves (`commonLangs`, `src/uix/langs/common.ts`), reachable via `v.commonRef(...)` or `#?common.{path}|Fallback` — reuse these instead of re-declaring a close/cancel/clear label per component. `buttons.cancel` · `buttons.clear` · `buttons.close` · `buttons.decrement` · `buttons.dismiss` · `buttons.edit` · `buttons.increment` · `buttons.next` · `buttons.prev` · `buttons.remove` · `buttons.reset` · `buttons.save` · `buttons.submit` · `calendar.prev-month` · `calendar.next-month` · `calendar.month-select` · `calendar.year-select` · `month-grid.prev-year` · `month-grid.next-year` · `year-grid.prev-page` · `year-grid.next-page` · `date.year` · `date.month` · `date.day` · `time.hour` · `time.minute` · `time.second` · `time.day-period` · `time.time-zone` · `time.am` · `time.pm` · `time.period.dawn` · `time.period.morning` · `time.period.afternoon` · `time.period.dusk` · `time.period.night` · `time.period.late-night` · `field.empty`