/** * Eidos — visual layer entrypoint. * * Eidos is CSS that reads `data-*` attrs emitted by the morfo-runtime * (via soma) and the visual channel (via sema) and applies styling. * It does not act, it does not own state, it does not decide events. * * Layout (translated from the legacy `air/` layer with the architectural * adjustments below — air targeted terra and was class-gated; eidos * targets soma+morfo and applies universally to the data-attrs the * morfo declares): * * contracts/ public token interfaces (empty declarations — themes fill) * tokens/ per-component internal values that reference contracts * themes/ implementations: light / dark / brand * components/ recipes per component (compose tokens + selectors) * archetypes transversal selectors keyed by `data-archetype` * events reactions to `data-event-*` signals (sema visual channel) * * --- The `--eidos-*` token prefix --- * * In an app with a single owned design system there's no strict need for a * prefix on custom properties: nothing else collides. We keep `--eidos-*` * deliberately, for two reasons: * * 1. **Authorship clarity at debug time.** Inspecting an element in * DevTools and seeing `--eidos-toggle-bg` immediately answers "this * came from the visual layer of UIX". A bare `--toggle-bg` could * come from anywhere — a third-party widget, a route-scoped style, * an experiment. * * 2. **Override discipline.** A consumer overriding `--eidos-color- * primary-element` knows they are overriding the visual layer * contract, not just naming-colliding with some local variable. * The prefix makes the public API surface explicit. * * Tokens are owned by eidos; recipes inside eidos consume them via * `var(--eidos-*)`. Higher layers (sema, soma, morfo) do NOT consume * these tokens and do NOT use the prefix — those layers carry their own * concerns (perceptual durations, behavior, contract DNA) that are * independent of visual rendering. */ /* ── Foundation: contracts (declarative API surfaces) ───────────────────── */ @import './contracts/contract-all.css'; @import './contracts/components/index.css'; /* ── Foundation: per-component token values referencing contracts ───────── */ @import './tokens/motion.css'; @import './tokens/components/index.css'; /* ── Theme: actual values filling the contract slots (default = base) ───── */ @import './themes/base/index.css'; /* ── Eidos-specific layers (no equivalent in air) ───────────────────────── */ @import './archetypes.css'; @import './events.css'; /* ── Component recipes (V1.5 hand-rolled; phase 2 replaces with air-translated) ── */ @import './components/toast.css'; @import './components/dialog.css'; @import './components/toggle.css'; @import './components/switch.css'; @import './components/collapsible.css';