Castra Labs Design System

v4 · the ui lane, rendered from the registry's own source

Theme

Unstyled — 0 live gaps

Emitted by a component, declared nowhere. Each renders correctly and is wrong. Read straight out of tools/cn-contract.json, so this page cannot drift from the gate.

None. The thirteen that were here were written in #30. The list is empty and the gate is what keeps it that way — an emitted class with no rule fails the build.

    Structural — 11 by declaration

    Hooks that carry no appearance by design. Not bugs.

    • cn-card-action grid placement only -- col-start-2 row-span-2 row-start-1 self-start justify-self-end is the whole behaviour.
    • cn-dropdown-menu-content-logical logical-property hook paired with cn-dropdown-menu-content, which carries the paint.
    • cn-menu-target shared anchor across the menu surfaces; cn-dropdown-menu-content and -sub-content carry the appearance.
    • cn-menu-translucent carries no appearance because the appearance it names is forbidden. A translucent ground is an alpha, and the hover and scrim windows both rule one out -- an alpha lands on a different colour in each theme. The menu surfaces take the solved --ui-surface-overlay from cn-dropdown-menu-content instead, and this stays as the hook upstream emits.
    • cn-navigation-menu root wrapper -- relative flex max-w-max flex-1 items-center justify-center is the whole behaviour.
    • cn-navigation-menu-content motion wrapper. The transitions and the direction-aware translate are on the element; the popup underneath carries the ground.
    • cn-navigation-menu-item position anchor for the popup. `relative` is the whole behaviour.
    • cn-navigation-menu-positioner portal positioner. Base UI supplies the geometry through --positioner-*; the element adds isolate and z-50.
    • cn-table-body tbody carries no paint in this system by design -- cn-table-row and cn-table-cell do, and a rule here would fight them.
    • cn-tabs-content panel. flex-1 and outline-none is the whole behaviour -- the focus ring is lane-wide, not per-panel.
    • cn-tabs-list-variant-default the default variant IS the base appearance, and cn-tabs-list carries it. The hook exists so the line variant has something to differ from.