You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
1020 B
30 lines
1020 B
/**
|
|
* UIX — cross-layer primitives.
|
|
*
|
|
* Shared types between UIX layers (morfo, sema, eidos, soma). They live
|
|
* here so that no layer "owns" a cross-layer primitive: each layer imports
|
|
* from `$uix` (or `'../types'`) independently, without creating dependencies
|
|
* between layers.
|
|
*
|
|
* No runtime, no framework, no reactivity. Just the minimum shape contracts
|
|
* the layers must share.
|
|
*/
|
|
|
|
/**
|
|
* UIX layer identifiers. A component declaration can participate in more
|
|
* than one (`scope: ['soma', 'sema']`, etc.).
|
|
*/
|
|
export type Layer = 'soma' | 'sema' | 'eidos';
|
|
|
|
/**
|
|
* Reference to a component part by its `kebab`.
|
|
*
|
|
* Produced by morfo's `v.partRef()` builder and consumed by any layer that
|
|
* needs to point at "a specific part of a component" — sema action targets,
|
|
* eidos selectors, the `MorfoAriaValue` union.
|
|
*
|
|
* The `kind: 'partRef'` tag lets `MorfoAriaValue` include the shape directly
|
|
* as a case of the discriminated union.
|
|
*/
|
|
export type PartRef = { kind: 'partRef'; target: string };
|