EtThemeBridge · 主题 → 画布桥
把主题令牌解析成画布调色板的零 DOM 桥接件:不占布局、不吃事件、无色值。
最近一次刷新 — · canvas-bg = —
API
Props
| 名称 | 类型 | 默认 | 说明 |
|---|---|---|---|
| palette | Object | () => CANVAS_PALETTE | 画布角色 → 主题侧令牌名登记表(默认 CANVAS_PALETTE;产品可整体替换以追加角色) |
| target | String | Object | 'html' | 写入与订阅目标:'html'(默认)/ CSS 选择器 / Element 实例 |
Emits
| 事件 | 载荷 | 说明 |
|---|---|---|
| change | resolved | 画布调色板已刷新(挂载即发一次首值,之后随主题/密度变化再发);载荷 = 解析后的 { 角色: { token, value } } |
Slots
零 DOM:只做主题 → 画布调色板的令牌桥,不渲染任何节点
键盘 · 可访问名 · 密度
| 键盘 | 不接管按键 |
|---|---|
| 可访问名 | 无 ARIA 属性(原生语义) |
| 密度 | 件内无令牌引用 |
行为
- 按登记表把每个画布角色对到主题侧已有令牌名,运行期读实际值写成
--ot-<role>;本件与契约同源,一个颜色字面量都没有(G1 红线)。 - 联动:
observeThemeChanges盯:root的class/style/data-theme/data-density,变化即重跑解析与落值;写值自身触发订阅,按签名去重,不会自激。 @change是给引擎类消费方的订阅面:画布产品(canvas 取值后还要setTheme)据此重读自己的--ot-*换主题,不必再自写MutationObserver;挂载即发首值,值没变不重复发。target/palette变更重建订阅(旧订阅先退,不叠观察器);解析不到目标静默不桥接。- 空值角色不写
--ot-*(不静默注入错色),由画布侧自己兜底。 - 画布侧消费方 = 产品层 CSS(网格线 / 选区 / 表头 / 活动格规则引用
--ot-*);--ot-*的语义权威在产品层,本件只保证"主题令牌变了,画布令牌跟着变"。
令牌与门禁
- 登记表
CANVAS_PALETTE与落值前缀--ot-见主题与画布桥。 - G1:框架层不认识色值,只认识令牌名;换品牌色/暗色都不用改本件。
- 订阅必须可退订,禁观察器泄漏(卸载时
unsubscribe)。