用途
design-system 用于为 Windows 应用建立一套精简的设计系统:代码中的一组 Token,加上一页文档说明“何时用哪个 Token”。所有界面都使用 Token,而不是原始数值,这样改一处即可影响整个应用,智能体也能依据同一页规范审查界面。
主要能力
- 强调色:Theme.cs 定义强调色选项(Theme.All)、Theme.ApplyAccent(写入 WinUI 派生所有强调色画刷所需的七个 SystemAccentColor 色阶)、应用主题模式以及 Theme.Reapply(让新强调色立即生效)。
- 设置页:Pages/SettingsPage 的“设置 > 外观”中供用户选择应用主题与强调色,默认项为“使用系统设置”和“Windows 默认”。
- Token 文件:Space.xaml 与 Grid.cs(间距与布局探针)、Surfaces.xaml(浅色/深色/高对比主题下的自定义画刷)、Radius.xaml(仅当 WinUI 内置圆角不够时使用)、Layout.xaml(内容最大宽度、列表列宽、固定对话框宽度)、Motion.cs(时长与缓动,动画效果关闭时返回零)、Styles.xaml(命名样式)、Overlay.cs(无边框面板的尺寸、位置、进入与退出)。
- 强调色派生规则:浅色模式用 Dark1 填充、Dark2 写强调文字;深色模式用 Light2 填充、Light3 写文字;白色文字在基色上需可读,黄色、薄荷色、青色应选更深的基色。
- 品牌色克制使用:应用图标、空状态、内容中的一个主元素,避免用于大多数控件。
- 默认保持系统强调色:Theme.DefaultId = "system",除非所有者书面要求默认使用品牌色。
使用方式
- 从 windows-design 开始;WinUI 已有大量主题资源(如 TextFillColorPrimaryBrush、ControlCornerRadius),Token 只覆盖 WinUI 未提供的部分:强调色、自定义表面、间距、动效、浮层与自定义控件。
- 读取 docs/BRIEF.md 的 ## Look 一节;未指定颜色时保留系统强调色。
- 新应用尚无页面时可跳过收集步骤,先按默认值写 Token 文件;已有应用则逐页读取,列出十六进制颜色、透明度、圆角、边距、内边距、宽度、动画时长与缓动、自定义样式并归组。
- 按文件分组编写 Token,添加每个 Token 的时机是应用首次需要它时。
- 编写 design/DESIGN-SYSTEM.md,每个 Token 文件对应一节,控制在 100 行以内。
- 逐屏迁移,每屏一个提交,构建并截图验证(build-and-verify 技能),界面应保持不变或更好。
- 在应用的 CLAUDE.md 中加入一行:“Design rules: design/DESIGN-SYSTEM.md. Use its tokens; never raw colors, radii, or durations.”
关键规则
- 永不硬编码十六进制强调色,使用 AccentFillColorDefaultBrush 等。
- 每个自定义画刷都有 Light、Dark、HighContrast 三个主题值,高对比指向系统颜色。
- 不将语义画刷挪作他用(描边画刷当文字、文字画刷当填充)。
- 随主题变化的内容用 {ThemeResource};{StaticResource} 仅用于数字、粗细与样式。
- 强调文字用 AccentTextFillColorPrimaryBrush;强调填充上的文字用 TextOnAccentFillColorPrimaryBrush,而非固定白色。
- 用 Style 及 ControlTemplate 副本定制控件并保留全部视觉状态,不用图形重建控件,以免丢失键盘、焦点与讲述人支持。
- 内圆角同心:内半径 = 外半径 − 内缩。
- 所有动画经过 Motion;搜索结果与切换器不做动画;指针悬停不改变选择;单位(如 KB/s、%)不做动画,仅数字;页面首次布局不做动画;浮层等待一帧后在 167 ms 内淡入并缩放。
- 每页或每个对话框只有一个强调色按钮。
适用场景
需要为 WinUI/Windows 应用统一强调色、外观主题、间距、圆角与动效,并让智能体按统一规范审查界面的开发场景。
限制
资料未说明该技能支持的平台版本、依赖项与兼容性范围;未提供收费、价格信息;需结合 windows-design、build-and-verify 等技能使用。