跳到主要内容

theme.css 与主题 token

使用方式

import '@patab/widget-sdk/theme.css'

样式表基于宿主注入的 --pt-* token 定义语义类,并内置 @media (prefers-reduced-motion: reduce) 全局降动效规则。不导入也可以——直接在自己的 CSS 中引用 var(--pt-*) 即可。

语义类

类名用途
.pt-surface常规容器背景与文字色
.pt-surface-strong强调容器(更高对比的表面)
.pt-text正文文字色
.pt-text-strong标题/强调文字色
.pt-text-muted次要/弱化文字色
.pt-button按钮(含 hover/active 态)
.pt-input输入框
.pt-focus-ring焦点环
.pt-danger危险/破坏性操作色
备注

以上是 theme.css 提供的全部契约类。官方示例中出现的 pt-cardpt-titlept-muted 类名不属于 SDK 契约(theme.css 中没有这些类),如需卡片样式请用 .pt-surface 等契约类或自行定义。

组件样式展示

下面的展示直接渲染 theme.css 的全部契约类与 20 个主题 token(演示取值取自宿主回退主题表,与组件实际运行环境一致),可交互体验 hover、active 与焦点环效果:

语义类

亮色主题
.pt-surface

正文 .pt-text

弱化文字 .pt-text-muted

.pt-surface-strong

标题文字 .pt-text-strong

.pt-text / .pt-text-strong / .pt-text-muted

标题文字 .pt-text-strong

正文文字 .pt-text

次要说明文字 .pt-text-muted

.pt-button(hover / active / focus-visible).pt-input.pt-focus-ring点击我,或用 Tab 聚焦查看焦点环.pt-danger危险操作文字
暗色主题
.pt-surface

正文 .pt-text

弱化文字 .pt-text-muted

.pt-surface-strong

标题文字 .pt-text-strong

.pt-text / .pt-text-strong / .pt-text-muted

标题文字 .pt-text-strong

正文文字 .pt-text

次要说明文字 .pt-text-muted

.pt-button(hover / active / focus-visible).pt-input.pt-focus-ring点击我,或用 Tab 聚焦查看焦点环.pt-danger危险操作文字

主题 token 取值

Token用途预览亮色取值暗色取值
--pt-surface常规表面背景 rgb(255 255 255 / 0.45)rgb(255 255 255 / 0.08)
--pt-surface-strong强调表面背景 rgb(255 255 255 / 0.8)rgb(24 24 27 / 0.88)
--pt-text正文文字 rgb(64 64 64)rgb(229 229 229)
--pt-text-strong强调文字 rgb(38 38 38)rgb(245 245 245)
--pt-text-muted弱化文字 rgb(115 115 115)rgb(161 161 170)
--pt-accent主题强调色 rgb(2 132 199)rgb(56 189 248)
--pt-accent-contrast强调色上的对比文字色 rgb(255 255 255)rgb(8 47 73)
--pt-accent-hover强调色 hover 态 rgb(3 105 161)rgb(125 211 252)
--pt-border边框 rgb(255 255 255 / 0.45)rgb(255 255 255 / 0.14)
--pt-input输入控件背景 rgb(255 255 255 / 0.7)rgb(255 255 255 / 0.14)
--pt-danger危险色 rgb(220 38 38)rgb(252 165 165)
--pt-focus-ring焦点环 rgb(2 132 199)rgb(125 211 252)
--pt-radius-sm圆角(小)0.75rem0.75rem
--pt-radius-md圆角(中)1rem1rem
--pt-radius-lg圆角(大)1.5rem1.5rem
--pt-shadow阴影0 10px 15px -3px rgb(0 0 0 / 0.1)0 10px 15px -3px rgb(0 0 0 / 0.32)
--pt-font-sans正文字体族字体示例 Aa 中文字体Inter, PingFang SC, Microsoft YaHei, system-ui, sans-serifInter, PingFang SC, Microsoft YaHei, system-ui, sans-serif
--pt-motion-duration动效时长150ms150ms
--pt-motion-easing动效缓动easeease
--pt-color-schemecolor-scheme 值lightdark
提示

展示内容与 SDK 源码保持同步:语义类规则镜像 packages/widget-sdk/src/theme.css,token 取值镜像宿主的 createFallbackTokens,由 pnpm --filter docs-site verify:theme-css 自动校验完整性。

主题 token(20 个)

token 名称属于 API v1 契约,由宿主注入到 sandbox 文档 :root,主题切换时同步更新:

token用途
--pt-surface常规表面背景
--pt-surface-strong强调表面背景
--pt-text正文文字
--pt-text-strong强调文字
--pt-text-muted弱化文字
--pt-accent主题强调色
--pt-accent-contrast强调色上的对比文字色
--pt-accent-hover强调色 hover 态
--pt-border边框
--pt-input输入控件背景
--pt-danger危险色
--pt-focus-ring焦点环
--pt-radius-sm / --pt-radius-md / --pt-radius-lg圆角
--pt-shadow阴影
--pt-font-sans正文字体族
--pt-motion-duration / --pt-motion-easing动效时长与缓动
--pt-color-schemecolor-scheme 值(light/dark)

对应的 TypeScript 联合类型为 WidgetThemeTokenNamethemeChanged 事件可携带 WidgetThemeTokens{ version: 1; values: Record<WidgetThemeTokenName, string> })快照。

警告

不要引用宿主内部的 --theme-* 变量或宿主 UI 框架的工具类——它们不是公开契约。宿主通过显式映射表把内部变量翻译成 --pt-*,未映射的内部变量永远不会暴露给组件。