Skip to content

shells — 主题外壳族 ​

内部件,不在包导出面。 package.json 的 exports 只开了 .(themePlugin + 类型) 与 ./assets/*——shell 不由下游直接 import,而是被 preset 引用、经 themePlugin 注册进 core bridge,由 AppLayout 按当前主题的 preset.layout.shell 渲染。

故本文件只写族级 API 与约束,[MUST NOT] 逐 shell 写文档(28 个 shell + 19 个 decor 逐件成文没人读,是为覆盖率而产的废纸)。真相源 = types.ts + 组件源码;文档与源码冲突 以源码为准。

包安装身份为 @done-coding/forge-plugin-theme,preset 子路径为 @done-coding/forge-plugin-theme/assets/*;目录改名不改变 shell/decor API。

族内构成 ​

子族成员职责
基类FrameShellBase / CockpitShellBase套框 / 座舱两种拓扑的公共骨架,具体 shell 在其上做视觉与编排
座舱系BrutalSteelCockpitShell / LiquidInkCockpitShell / MonoPaperCockpitShell / NeuralFieldCockpitShell + CockpitStatusBar底部状态条 + 中控式布局
套框系AppliedIntelligenceFrameShell / FilmGradeShell / PerspectiveDeckShellviewport 边框圈 + decor 装饰带
工坊系StudioStageShell(亮·端用)/ StudioInkShell / KitchenFoundryShell(暗·编排熔炉)+ KitchenPassRail姐妹旗舰,制版台 / 热压脊两种叙事
导航拓扑TopNavShell / TriColumnShell / IconRailShell + HeaderNavMenu顶导通栏 / 三栏 / 图标轨
其他视觉AuroraMeshShell / CosmosShell / CoilingDragonShell / NeonSetShell / QuantumOrbitShell / ScanlineShell / SignalTealShell / StageChatShell / SynapseGridShell / AppliedIntelligenceNebulaShell各自一套视觉语言
decor/19 件装饰层 + use-frame-geometry见 decor/README

写 / 改 shell 的硬约束 ​

① [MUST NOT] 感知路由(项目 CLAUDE.md 规则 16) 交付代码 [MUST NOT] import vue-router、[MUST NOT] 读 location / query / hash 做分支。 路由是消费方 app 的职责;主题包感知路由会强加依赖、污染下游。显隐与容器逻辑走 core 的 meta.layout + bridge inject。vue-router 只允许本包 demo 用,且 [MUST NOT] 进 dependencies / peerDependencies。

② 样式 [MUST] 内联,[MUST NOT] 依赖抽取的 scoped CSS plugin 的 <style scoped> 在消费应用不生效(scoped CSS 被抽到独立 style.css,而下游 不该 import 整包样式——那会一次性加载所有主题、破坏资产隔离)。故 shell / decor 的样式 一律走 :style 内联,@keyframes 类改 WAAPI 运行时驱动。样式随组件渲染而生: 主题未被选中时它的样式根本不存在。

③ CSS 变量只用两类来源(规则 14) --dc-core-*(core 主题系,随风格 + 亮暗自适配)优先,--el-* 兜底。 [MUST NOT] 写死色值、[MUST NOT] 自造 CSS 变量——自造的脱离主题两套注入,切主题不响应。

④ 能力守恒 主题可以改布局拓扑,但 [MUST NOT] 砍功能。不渲染的模块尺寸归 0,而非删掉挂载点。

⑤ 视觉决策 [MUST] 经 UI/UX(规则 18) token / persona 风格 / 视觉 [MUST] 先提炼取向再实现,并经 UI/UX 验收; [MUST NOT] 用 build / lint / 单测冒充视觉验收。

⑥ 注入 <style> 的 id [MUST] 带模块期随机后缀 纯固定全局 id 跨 module instance / 微前端会撞,dedup 静默跳过即断样式。 外部锚点走稳定 data-* 属性。

对外契约 ​

shell 不直接对外,它经 CoreThemeEntry.layout.shell 被引用。preset 的完整契约见 ../types.ts 与 core 的 bridge/theme/types.ts(CoreThemePresetLayout)。

C 依赖适配 ​

框架引用由旧admin-core改为@done-coding/forge聚合;只改入口与manifest依赖,组件/API/视觉不变。本包不加入聚合,不在此批改名或统一版本。