/** * 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): * * generated/ foundation CSS generated from EidosConfig * contracts/ archived public token interfaces (not imported at runtime) * 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 `--*` 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 `--*` * deliberately, for two reasons: * * 1. **Authorship clarity at debug time.** Inspecting an element in * DevTools and seeing `--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 `--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(--*)`. 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: legacy static fallback ──────────────────────────────────── * * ActiveEidos is the canonical source for generated foundation CSS, but this * entrypoint is still used by SSR/static docs with `ActiveEidos.create({ * applyDom: false })`. `contracts/` is intentionally not imported: those * files are archived empty declarations, not runtime values. */ /* ── Foundation: per-component token values / legacy recipe aliases ─────── */ @import './tokens/motion.css'; @import './tokens/components/index.css'; /* ── Theme assets: font faces used by the base static theme tokens ───────── */ @import './themes/fonts.css'; /* ── Theme: actual values filling the contract slots (default = base) ───── */ @import './themes/base/index.css'; /* ── Generated foundation: ActiveEidos base config static export ────────── */ @import './generated/base.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/icon/icon.css'; @import './components/avatar/avatar.css'; @import './components/toast/toast.css'; @import './components/dialog/dialog.css'; @import './components/drawer/drawer.css'; @import './components/popover/popover.css'; @import './components/tooltip/tooltip.css'; @import './components/toggle/toggle.css'; @import './components/switch/switch.css'; @import './components/collapsible/collapsible.css'; @import './components/accordion/accordion.css'; @import './components/tabs/tabs.css'; @import './components/checkbox/checkbox.css'; @import './components/radio-group/radio-group.css';