Files
chinboy 8692d4be21 docs: add comprehensive Space control design documentation
- Space.md: detailed design doc with philosophy, layout algorithm, CompactSpace mechanics, and Ant Design alignment
- SpaceAPI.md: complete API reference for Space, CompactSpace, CompactSpaceAddOn, CompactSpaceSize
- SpaceStyling.md: styling guide with property control, Style overrides, ControlTheme, and selector reference
- SpaceToken.md: full token reference with gap tokens, AddOn tokens, SharedToken usage, and visual impact mapping
- SpaceUsage.md: extensive usage examples covering all features from Gallery showcase
2026-04-13 22:11:22 +08:00

120 lines
5.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Space Design Token
Space 控件使用 `SpaceToken`(Token ID: `"Space"`)作为组件级 Design Token,所有视觉属性均从全局 `SharedToken` 派生,不硬编码任何具体值。
---
## Token 资源访问方式
在 AXAML 中使用组件级 Token:
```xml
{atom:SpaceTokenResource GapSmallSize}
{atom:SpaceTokenResource GapMiddleSize}
{atom:SpaceTokenResource GapLargeSize}
{atom:SpaceTokenResource AddonBg}
{atom:SpaceTokenResource AddOnPadding}
```
在 AXAML 中使用全局共享 Token:
```xml
{atom:SharedTokenResource SpacingXS}
{atom:SharedTokenResource Spacing}
{atom:SharedTokenResource SpacingLG}
{atom:SharedTokenResource ColorFillAlter}
```
---
## 组件级 Token 一览
以下是 `SpaceToken` 定义的全部组件级 Token,按功能分组说明。
### 间距 Token
| Token 名 | 类型 | 来源 | 说明 |
|---|---|---|---|
| `GapSmallSize` | `double` | `SharedToken.SpacingXS` | 小间距尺寸(对应 `SizeType.Small`,默认 8) |
| `GapMiddleSize` | `double` | `SharedToken.Spacing` | 中间距尺寸(对应 `SizeType.Middle`,默认 16) |
| `GapLargeSize` | `double` | `SharedToken.SpacingLG` | 大间距尺寸(对应 `SizeType.Large`,默认 24) |
### CompactSpaceAddOn Token
| Token 名 | 类型 | 来源 | 说明 |
|---|---|---|---|
| `AddonBg` | `Color` | `SharedToken.ColorFillAlter` | AddOn 区域背景色(Outline / Filled 样式变体使用) |
| `AddOnPadding` | `Thickness` | `SharedToken.UniformlyPaddingSM` | AddOn 默认内边距(对应 `SizeType.Middle`) |
| `AddOnPaddingSM` | `Thickness` | `SharedToken.ControlPaddingHorizontalSM` | AddOn 小号内边距(对应 `SizeType.Small`) |
| `AddOnPaddingLG` | `Thickness` | `SharedToken.ControlPaddingHorizontal` | AddOn 大号内边距(对应 `SizeType.Large`) |
---
## 主题中使用的全局 SharedToken
除组件级 Token 外,Space 相关组件的 ControlTheme 还直接引用了以下全局 `SharedToken`:
### CompactSpaceAddOn 使用的 SharedToken
| Token 资源键 | 使用场景 |
|---|---|
| `BorderThickness` | AddOn 默认边框厚度 |
| `FontSize` / `FontSizeSM` / `FontSizeLG` | AddOn 字体大小(中/小/大) |
| `BorderRadius` / `BorderRadiusSM` / `BorderRadiusLG` | AddOn 圆角半径(中/小/大) |
| `ControlHeight` / `ControlHeightSM` / `ControlHeightLG` | AddOn 最小高度(中/小/大) |
| `ColorBorder` | 边框颜色(Outline 样式变体 + 禁用态) |
| `ColorError` / `ColorErrorBg` / `ColorErrorText` | 错误状态颜色系列 |
| `ColorWarning` / `ColorWarningBg` / `ColorWarningText` | 警告状态颜色系列 |
| `ColorTextDisabled` | 禁用态文字颜色 |
| `ColorBgContainerDisabled` | 禁用态背景颜色 |
### Space 间距值对应的 SharedToken
| Token 资源键 | 使用场景 |
|---|---|
| `SpacingXS` | Small 间距值来源(默认 8) |
| `Spacing` | Middle 间距值来源(默认 16) |
| `SpacingLG` | Large 间距值来源(默认 24) |
---
## Token 对外观的具体影响
### Space 间距与 Token 映射
Space 的间距值完全由 Token 驱动,通过实例级样式根据 `SizeType` 属性自动切换:
| SizeType | `ItemSpacing` | `LineSpacing` | Token 来源 |
|---|---|---|---|
| `Small`(默认) | `GapSmallSize` | `GapSmallSize` | `SharedToken.SpacingXS`(默认 8) |
| `Middle` | `GapMiddleSize` | `GapMiddleSize` | `SharedToken.Spacing`(默认 16) |
| `Large` | `GapLargeSize` | `GapLargeSize` | `SharedToken.SpacingLG`(默认 24) |
| `Custom` | 用户设置 | 用户设置 | 不使用 Token |
### CompactSpaceAddOn 尺寸与 Token 映射
| SizeType | 字号 | 圆角 | 内间距 | 最小高度 |
|---|---|---|---|---|
| `Large` | `FontSizeLG` | `BorderRadiusLG` | `AddOnPaddingLG` | `ControlHeightLG` |
| `Middle` | `FontSize` | `BorderRadius` | `AddOnPadding` | `ControlHeight` |
| `Small` | `FontSizeSM` | `BorderRadiusSM` | `AddOnPaddingSM` | `ControlHeightSM` |
### CompactSpaceAddOn 样式变体与 Token 映射
| 样式变体 | 正常态 | Error 状态 | Warning 状态 | 禁用态 |
|---|---|---|---|---|
| **Outline** | `AddonBg` 背景 + `ColorBorder` 边框 | `ColorError` 边框 + `ColorErrorText` 文字 | `ColorWarning` 边框 + `ColorWarningText` 文字 | `ColorBgContainerDisabled` 背景 + `ColorBorder` 边框 + `ColorTextDisabled` 文字 |
| **Filled** | `AddonBg` 背景 | `ColorErrorBg` 背景 + `ColorErrorText` 文字 | `ColorWarningBg` 背景 + `ColorWarningText` 文字 | `ColorBgContainerDisabled` 背景 + `ColorTextDisabled` 文字 |
| **Underlined** | 透明背景 | `ColorErrorText` 文字 | `ColorWarningText` 文字 | `ColorTextDisabled` 文字 |
### 紧凑空间圆角裁剪规则
CompactSpace 中子项的圆角根据位置自动裁剪,以消除组合控件之间的圆角间隙:
| 位置 | 水平方向 | 垂直方向 |
|---|---|---|
| **First**(首项) | 保留左侧圆角,右侧为 0 | 保留顶部圆角,底部为 0 |
| **Middle**(中间项) | 四角均为 0 | 四角均为 0 |
| **Last**(末项) | 左侧为 0,保留右侧圆角 | 顶部为 0,保留底部圆角 |
| **First + Last**(唯一项) | 保留全部圆角 | 保留全部圆角 |