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.
svelte-kit-vice/scripts/eidos-only-attrs.ts

62 lines
2.4 KiB

/**
* Cross-cutting attrs the EIDOS layer owns — stamped by wrappers or shared
* styling hooks, deliberately NOT part of any morfo contract (the signed
* "visual wrapper attrs do not enter the morfo" doctrine; `data-combobox-
* control` set the precedent for hooks that squat a component's namespace).
*
* Consumed by BOTH instruments so they cannot drift apart (P0 fase A, audit
* 2026-08-26): `eidos-lint-all` classifies CSS selectors with it, and
* `morfo-check` skips these names in its undeclared-attr sweep.
*/
export const EIDOS_ONLY_ATTRS = new Set([
'data-archetype',
// Aura's status part default rendering: two internal spans styled by
// aura.css. Structural hooks squatting the aura namespace, not parts —
// no registration, no id, no provider surface.
'data-aura-status-label',
'data-aura-status-detail',
'data-block',
// Shared calendar-surface sizing hook (`src/uix/eidos/lib/calendar-surface.css`):
// calendar / month-grid / year-grid / range-calendar wrappers stamp it.
// Squats the calendar namespace the way data-combobox-control squats combobox's.
'data-calendar-surface',
'data-collapsed',
'data-combobox-control',
'data-color',
'data-columns',
'data-dragging',
// The sema stamp (`src/uix/sema/stamp.ts`), not a morfo part. Allowlisted
// STRUCTURALLY only — the VALUE is validated against the morfo catalogue
// by `lintEventValues` in eidos-lint-all.
'data-event',
'data-event-direction',
'data-event-family',
'data-event-id',
'data-event-intent',
'data-event-phase',
// Fab's wrapper visual axis (`fab.svelte` stamps it next to data-extended;
// the recipe sizes off it). Wrapper attr, not contract.
'data-fab-size',
'data-fitted',
'data-icon-only',
'data-indicator-placement',
'data-motion',
'data-motion-disabled',
'data-position',
// `data-ready` left this list 2026-08-26: soma stamps it (MeasuredIndicator)
// and the tabs / radio-group morfos now DECLARE it (stateRef 'ready'), so it
// is contract, not an eidos-only hook.
'data-scrollable',
'data-sheet',
'data-size',
'data-floating-wrapper',
'data-svg',
'data-svg-direction',
'data-variant',
// Waveform's two path copies (remaining + played clipped to the playhead),
// signed in waveform-wave.svelte and waveform.css as "eidos-only visual
// hooks (F3)" — rendering structure, not contract parts.
'data-waveform-played',
'data-waveform-remaining'
]);

Powered by TurnKey Linux.