mirror of
https://github.com/AtomUI/AtomUI.git
synced 2026-10-29 07:16:33 +08:00
156 lines
6.4 KiB
Markdown
156 lines
6.4 KiB
Markdown
# Notification Design Token
|
||
|
||
Notification 控件使用 `NotificationToken`(Token ID: `"Notification"`)作为组件级 Design Token,所有视觉属性均从全局 `SharedToken` 派生,不硬编码任何具体值。
|
||
|
||
---
|
||
|
||
## Token 资源访问方式
|
||
|
||
在 AXAML 中使用组件级 Token:
|
||
|
||
```xml
|
||
{atom:NotificationTokenResource NotificationBg}
|
||
{atom:NotificationTokenResource NotificationPadding}
|
||
{atom:NotificationTokenResource NotificationWidth}
|
||
```
|
||
|
||
在 AXAML 中使用全局共享 Token:
|
||
|
||
```xml
|
||
{atom:SharedTokenResource ColorPrimary}
|
||
{atom:SharedTokenResource ColorSuccess}
|
||
{atom:SharedTokenResource BorderRadiusLG}
|
||
```
|
||
|
||
---
|
||
|
||
## 组件级 Token 一览
|
||
|
||
以下是 `NotificationToken` 定义的全部组件级 Token,按功能分组说明。
|
||
|
||
### 背景与颜色 Token
|
||
|
||
| Token 名 | 类型 | 来源 | 说明 |
|
||
|---|---|---|---|
|
||
| `NotificationBg` | `Color` | `SharedToken.ColorBgElevated` | 通知卡片背景色 |
|
||
| `NotificationProgressBg` | `IImmutableBrush?` | 线性渐变(`ColorPrimaryHover` → `ColorPrimary`) | 进度条渐变背景色 |
|
||
|
||
### 尺寸 Token
|
||
|
||
| Token 名 | 类型 | 来源 | 说明 |
|
||
|---|---|---|---|
|
||
| `NotificationWidth` | `double` | 固定值 `384` | 通知卡片宽度 |
|
||
| `NotificationIconSize` | `double` | `SharedToken.FontSizeLG * SharedToken.RelativeLineHeightLG` | 类型图标尺寸 |
|
||
| `NotificationCloseButtonSize` | `double` | `SharedToken.ControlHeightLG * 0.55` | 关闭按钮尺寸 |
|
||
| `NotificationProgressHeight` | `double` | 固定值 `2` | 进度条高度 |
|
||
|
||
### 间距 Token
|
||
|
||
| Token 名 | 类型 | 来源 | 说明 |
|
||
|---|---|---|---|
|
||
| `NotificationPadding` | `Thickness` | `SharedToken.UniformlyPaddingLG` (左右), `SharedToken.UniformlyPaddingMD` (上), `0` (下) | 通知卡片内间距 |
|
||
| `NotificationIconMargin` | `Thickness` | `0, 0, SharedToken.UniformlyMarginSM, 0` | 类型图标右外边距 |
|
||
| `NotificationCloseButtonPadding` | `Thickness` | `SharedToken.PaddingXXS` | 关闭按钮内间距 |
|
||
| `NotificationMarginBottom` | `Thickness` | `0, 0, 0, SharedToken.UniformlyMargin` | 通知卡片之间的底部间距 |
|
||
| `NotificationTopMargin` | `Thickness` | `SharedToken.UniformlyMarginLG` (左、上、右), `0` (下) | 顶部位置时的卡片外边距 |
|
||
| `NotificationBottomMargin` | `Thickness` | `SharedToken.UniformlyMarginLG` (左、右、下), `0` (上) | 底部位置时的卡片外边距 |
|
||
| `NotificationProgressMargin` | `Thickness` | `0, 0, 0, 1` | 进度条外边距 |
|
||
| `NotificationContentMargin` | `Thickness` | `0, 0, 0, SharedToken.UniformlyPaddingMD` | 正文内容区域外边距 |
|
||
| `HeaderMargin` | `Thickness` | `0, 0, 0, SharedToken.UniformlyMarginXS` | 标题栏底部外边距 |
|
||
|
||
---
|
||
|
||
## 主题中使用的全局 SharedToken
|
||
|
||
除组件级 Token 外,Notification 的 ControlTheme 还直接引用了以下全局 `SharedToken`:
|
||
|
||
| Token 资源键 | 使用场景 |
|
||
|---|---|
|
||
| `EnableMotion` | 全局动画开关,控制 `IsMotionEnabled` 默认值 |
|
||
| `MotionDurationMid` | 出入动画时长 |
|
||
| `BoxShadows` | 通知卡片的阴影效果 |
|
||
| `BorderRadiusLG` | 通知卡片圆角半径 |
|
||
| `BorderRadiusSM` | 关闭按钮圆角半径 |
|
||
| `ColorPrimary` | Information 类型图标颜色 |
|
||
| `ColorSuccess` | Success 类型图标颜色 |
|
||
| `ColorWarning` | Warning 类型图标颜色 |
|
||
| `ColorError` | Error 类型图标颜色 |
|
||
| `ColorTextHeading` | 标题文本颜色 |
|
||
| `ColorText` | 正文文本颜色 |
|
||
| `FontSize` | 正文字体大小 |
|
||
| `FontSizeLG` | 标题字体大小 |
|
||
| `FontHeight` | 正文行高 |
|
||
| `FontHeightLG` | 标题行高 |
|
||
| `IconSizeSM` | 关闭按钮图标尺寸 |
|
||
|
||
---
|
||
|
||
## Token 对外观的具体影响
|
||
|
||
### 通知卡片布局
|
||
|
||
通知卡片的整体布局由以下 Token 控制:
|
||
|
||
| 区域 | Token | 说明 |
|
||
|---|---|---|
|
||
| 卡片宽度 | `NotificationWidth` | 固定 384px(与 Ant Design 对齐) |
|
||
| 卡片背景 | `NotificationBg` | 从 `ColorBgElevated` 派生,支持明暗主题切换 |
|
||
| 卡片圆角 | `BorderRadiusLG`(SharedToken) | 大圆角样式 |
|
||
| 卡片阴影 | `BoxShadows`(SharedToken) | 浮层阴影效果 |
|
||
| 卡片内间距 | `NotificationPadding` | 上:PaddingMD,左右:PaddingLG,下:0 |
|
||
|
||
### 图标区域
|
||
|
||
| 区域 | Token | 说明 |
|
||
|---|---|---|
|
||
| 图标尺寸 | `NotificationIconSize` | 基于 `FontSizeLG * RelativeLineHeightLG` 计算 |
|
||
| 图标间距 | `NotificationIconMargin` | 图标右侧留出 `UniformlyMarginSM` 间距 |
|
||
| 图标颜色 | `ColorPrimary` / `ColorSuccess` / `ColorWarning` / `ColorError` | 根据 `NotificationType` 选择 |
|
||
|
||
### 标题区域
|
||
|
||
| 区域 | Token | 说明 |
|
||
|---|---|---|
|
||
| 标题字号 | `FontSizeLG`(SharedToken) | 大号字体 |
|
||
| 标题行高 | `FontHeightLG`(SharedToken) | 大号行高 |
|
||
| 标题颜色 | `ColorTextHeading`(SharedToken) | 标题专用色 |
|
||
| 标题间距 | `HeaderMargin` | 标题栏底部留出 `UniformlyMarginXS` 间距 |
|
||
|
||
### 关闭按钮
|
||
|
||
| 区域 | Token | 说明 |
|
||
|---|---|---|
|
||
| 按钮圆角 | `BorderRadiusSM`(SharedToken) | 小圆角 |
|
||
| 按钮内间距 | `NotificationCloseButtonPadding` | 基于 `PaddingXXS` |
|
||
| 图标尺寸 | `IconSizeSM`(SharedToken) | 小号图标 |
|
||
|
||
### 正文区域
|
||
|
||
| 区域 | Token | 说明 |
|
||
|---|---|---|
|
||
| 正文字号 | `FontSize`(SharedToken) | 标准字体大小 |
|
||
| 正文行高 | `FontHeight`(SharedToken) | 标准行高 |
|
||
| 正文颜色 | `ColorText`(SharedToken) | 标准文本色 |
|
||
| 正文间距 | `NotificationContentMargin` | 正文底部留出 `UniformlyPaddingMD` 间距 |
|
||
|
||
### 进度条
|
||
|
||
| 区域 | Token | 说明 |
|
||
|---|---|---|
|
||
| 进度条高度 | `NotificationProgressHeight` | 固定 2px |
|
||
| 进度条颜色 | `NotificationProgressBg` | 线性渐变(`ColorPrimaryHover` → `ColorPrimary`) |
|
||
| 进度条间距 | `NotificationProgressMargin` | 底部 1px 间距 |
|
||
|
||
### 位置相关边距
|
||
|
||
| 位置 | Token | 说明 |
|
||
|---|---|---|
|
||
| Top 系列(TopLeft / TopRight / TopCenter) | `NotificationTopMargin` | 左、上、右边距为 `UniformlyMarginLG`,下为 0 |
|
||
| Bottom 系列(BottomLeft / BottomRight / BottomCenter) | `NotificationBottomMargin` | 左、右、下边距为 `UniformlyMarginLG`,上为 0 |
|
||
|
||
---
|
||
|
||
## 暗黑模式支持
|
||
|
||
`NotificationToken.CalculateTokenValues(bool isDarkMode)` 会在暗黑模式下根据 `SharedToken` 的变化自动重新计算所有 Token 值。由于所有颜色和尺寸均从 `SharedToken` 派生,切换主题时通知的背景色(`ColorBgElevated`)、文本色(`ColorText` / `ColorTextHeading`)、图标色(`ColorPrimary` 等)会自动适配暗黑模式,无需额外配置。
|