主题
@astryxdesign/core v0.7.1 · Theme
属性
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
theme | ThemeDefinition | — | defineTheme() 返回的主题。 |
mode | 'light' | 'dark' | 'system' | 'system' | 颜色模式。system 跟随页面和系统。 |
插槽
| 名称 | 说明 |
|---|---|
default | 继承这套主题的内容。 |
defineTheme
| 字段 | 说明 |
|---|---|
name | 主题名,写到 data-astryx-theme。 |
tokens | 语义 token。二元组先写浅色,再写深色。同名时盖过生成结果。 |
localTokens | 只有这一套主题用的值,键是完整的 CSS 变量名,原样保存。不能用共享 token 的名字。 |
color | 用强调色生成调色板。accent 可省略,只改中性色。 |
typography | 字体,以及从 base、ratio 生成的字号。 |
radius | 从 base 和 multiplier 生成圆角。 |
motion | 从 fast、medium、slow 和 ratio 生成时长。 |
components | 按换肤挂点覆盖样式,挂点写成 组件名-部位。编译结果在主题对象的 css 上。 |
adaptations | 按屏幕宽度、指针、对比度或减弱动效生效的规则,按顺序排,后面满足的赢。 |
extends | 另一份 defineTheme() 主题。它算好的东西全部带过来,当前这份的值优先。 |
syntax | 子树里代码的语法色。更近的 SyntaxTheme 优先。 |
onDark | 深色 MediaTheme 表面上的额外 token 和组件样式。 |
onLight | 浅色 MediaTheme 表面上的额外 token 和组件样式。 |
icons | 语义图标名到 Iconify id。按名字覆盖,和被扩展的主题浅合并。 |
indicators | 指示器图形,按 check、checkbox、radio 替换。一处替换,所有使用处一起变。 |
useTheme
useTheme() 读取最近的主题。不在 Theme 里时,名字是 neutral,token() 读文档上的 CSS 变量。读到的是主题本身的值,环境规则只在 CSS 里生效。返回的对象和 token 函数只创建一次,tokens 只在主题或明暗模式变了的时候才变。
| 字段 | 说明 |
|---|---|
name | 最近的主题名。 |
mode | 解析后的 light 或 dark。system 会被解析掉。 |
token(name) | 当前模式下的一个 token。局部 token 按原名读。没人设置过的图表颜色返回默认值。 |
tokens | 最近这份主题声明过的 token 和局部 token,按当前模式解析。 |
模板引用
组件暴露 element,类型是 HTMLElement | null。
原生属性
根节点是 display: contents 的 div。class 和 style 会写到它上面。其他属性不转发。