6.1 KiB
Card Token 设计
本文档定义 AtomUI.Desktop.Controls.CardToken 的专属语义、分类、使用范围和兼容边界。控件 Token 的通用分层、命名、计算、Theme Variables 边界和预设色规则见 AtomUI 控件 Token 设计规范。Card 整体架构见 Card 桌面版架构设计,内部实现原理见 Card 桌面版实现原理,设计和契约变化记录见 Card Changelog。
1. 定位
CardToken 是 Card 的控件级 Token scope,描述卡片 Header、Body、Actions、Tabs、Extra、阴影、Grid item 和 action icon 的组件语义值。
CardToken 不承载以下状态:
Content、Header、Extra、Cover、Actions等实际内容。ContentType、IsLoading、IsHoverable、IsInnerMode、StyleVariant等实例行为状态。HeaderBorderThickness、EffectiveBorderThickness、EffectiveCornerRadius、IsActionsPanelVisible等内部派生状态。CardGridItem.Row、Column、RowSpan、ColumnSpan等布局位置。TabControl的 selected item、current content 或 tab collection。
2. Token 分类
2.1 Header Token
HeaderBgHeaderFontSizeLGHeaderFontSizeHeaderFontSizeSMHeaderHeightLGHeaderHeightHeaderHeightSMHeaderPaddingLGHeaderPaddingHeaderPaddingSMCardHeadPadding
这些 Token 控制 Card Header 区域的背景、字体、最小高度、水平 padding 和含 tabs 场景的 header 内容 padding。SizeType 负责选择 Large、Middle 或 Small 分支。
2.2 Body padding Token
BodyPaddingLGBodyPaddingBodyPaddingSMCardPaddingBase
这些 Token 控制普通内容、Meta 内容、Tabs 内容和 Grid item 的内容 padding。Grid 内容本身不使用 Card body padding,padding 由 CardGridItem 消费。
2.3 Actions Token
ActionsBgActionsSpacingCardActionsIconSize
这些 Token 控制底部操作区背景、操作项间距语义和 action icon 尺寸。当前操作区分隔线颜色和粗细来自 SharedToken 的边框资源。
2.4 Tabs Token
TabsMarginBottom
TabsMarginBottom 用于 Card 内置 tabs 场景,协调 TabControl header 与 Card header/body 边界的垂直间距。
2.5 文本和阴影 Token
ExtraColorCardShadowsCardGridItemShadows
ExtraColor 控制 Header Extra 区域文字色。CardShadows 是 hoverable Card 和 hoverable grid item 的强化阴影。CardGridItemShadows 使用多层阴影表达 grid item 之间的边线。
3. 控件专项模型中的 Token 使用
CardToken 使用路径:
SharedToken
↓
CardToken
↓
CardTheme / CardActionPanelTheme / CardActionButtonTheme / CardGridItemTheme / CardTabsContentTheme / CardMetaContentTheme
↓
Header + Body + Cover + Actions + Grid + Tabs + Meta
重要映射:
| Token | 主要使用点 |
|---|---|
HeaderBg |
根 Card HeaderFrame 背景。 |
HeaderFontSizeLG / HeaderFontSize / HeaderFontSizeSM |
HeaderFrame 文本尺寸。 |
HeaderHeightLG / HeaderHeight / HeaderHeightSM |
HeaderFrame 最小高度。 |
HeaderPaddingLG / HeaderPadding / HeaderPaddingSM |
HeaderFrame 水平 padding。 |
BodyPaddingLG / BodyPadding / BodyPaddingSM |
Card body、CardGridItem 和 CardTabsContent content padding。 |
ActionsBg |
CardActionPanel Frame 背景。 |
TabsMarginBottom |
Card 内置 tabs 的下边距语义。 |
ExtraColor |
Extra 区域文字颜色。 |
CardShadows |
Card hover 和 grid item hover 阴影。 |
CardActionsIconSize |
CardActionButton icon 宽高。 |
CardGridItemShadows |
CardGridItem 默认边线阴影。 |
实例状态派生:
SizeType
-> choose Header / Body size branch
StyleVariant
-> choose bordered or borderless surface
ContentType
-> choose body padding and corner/border behavior
IsHoverable
-> choose normal or hover shadow state
这些实例状态本身不是 Token。
4. 控件家族影响
CardToken 直接影响 Card 家族控件:
CardCardActionPanelCardActionButtonCardGridContentCardGridItemCardTabsContentCardMetaContent- Card token.md 语义说明
CardToken 不应被其他 Data Display 控件直接复用。若多个控件需要共享同一语义值,应评估是否上升为 SharedToken,而不是跨控件引用 CardToken。
5. 兼容性要求
CardToken 属于 Card 主题契约。即使 CardToken 是 internal 类型,生成的 token kind、AXAML resource 使用点和 token.md 语义说明已经形成稳定依赖。
Token 变更要求:
- 不擅自重命名或删除现有 Token。
- 不改变 Header、Body、Actions、Tabs、Extra、Shadow 或 Grid item Token 的语义范围。
- 不把
ContentType、IsLoading、IsHoverable、StyleVariant或 Grid item 位置状态迁移为 Token。 - 不在 CardToken 中复制 SharedToken 已表达的根边框、圆角、基础背景或通用文字颜色语义。
- 修改 size 相关 Token 时必须同时验证 Large / Middle / Small 下 Header、Body、Grid item 和 Tabs 内容。
- 修改 shadow Token 时必须验证 Card hover、borderless 和 grid item hover。
- 需要破坏性变更时,必须先说明影响范围并获得授权。
6. 验证策略
| 改动类型 | 验证要求 |
|---|---|
| 修改 Header Token | 验证 Large / Middle / Small Card Header 高度、padding、字体和 Headerless 状态。 |
| 修改 Body padding Token | 验证普通内容、Meta 内容、Tabs 内容和 Grid item padding。 |
| 修改 Actions Token | 验证底部操作区背景、action icon 尺寸、分隔线对齐和 hover 颜色。 |
| 修改 Tabs Token | 验证 CardTabsContent 与 Header/Body 边界。 |
修改 ExtraColor |
验证 Header Extra 和 HyperLinkButton 等内容视觉。 |
| 修改 shadow Token | 验证 hoverable Card、borderless Card 和 hoverable CardGridItem。 |
| 删除或重命名 Token | 默认不允许;如获授权,需同步 AXAML 引用、生成文件、Token 类型、生成数据和 token.md和控件文档。 |
| 文档改动 | 运行 git diff --check,检查文档链接存在。 |