RFC-007 — Atlas UI primitives seam
Summary
Section titled “Summary”Atlas keeps src/primitives/ as the only place that may import @radix-ui/* and @base-ui/*. @alexbayerl/djed-ui-primitives may be imported only from files under src/primitives/ — including src/primitives/index.ts (barrel re-export) and thin adapters (Form, Tooltip, Tabs, etc.).
All feature code (surfaces/, shell/, components/, entities/) imports @/primitives only, never the Djéd package path directly. This is enforced by lint:import-boundary in the UI package.json.
Rationale
Section titled “Rationale”- One Radix/Base seam preserves WAI-ARIA and focus behaviour without scattering headless imports.
- Djéd
ui-primitivesis the source for Dialog, Form, and shared layout/widgets; Atlas adds Combobox (Base UI) and Overlay (modal/drawer/bottom-sheet) where the product needs cell-specific behaviour. - Token bridge:
global.cssmaps Djéd semantic colours (--color-surface, etc.) to Atlas tier-2 tokens so Djéd components match the celestial theme.
Migration notes
Section titled “Migration notes”- Legacy compound
Dialog.Content/Dialog.Footer(Atlas-only) was replaced by DjédDialog+DialogHeader+DialogTitle+DialogDescription+DialogFooter. components/brand/Tooltipwas removed;Tooltip/TooltipProviderare re-exported fromprimitives(wrapper + Djéd).
Compliance
Section titled “Compliance”npm run lint:import-boundary— must pass in CI.- RFC supersedes ad-hoc decisions documented only in inline comments.
Convergence (v0.6.1)
Section titled “Convergence (v0.6.1)”lib/djedUiPrimitives.tsremoved — the former side-door re-export is folded intosrc/primitives/(index.ts, adapters,NativeSelect).- Workbench shell — direct
@alexbayerl/djed-workbench-shellimports are forbidden outsidelib/djedWorkbenchShell.ts(ESLintno-restricted-imports). - Command palette “Recent” — Atlas uses
RegisterCommandPaletteRecentsandpushRecentStringToLocalStoragefrom@alexbayerl/djed-app-shellwith a cell-specific storage key.