Files

6.4 KiB
Raw Permalink Blame History

Notification Design Token

Notification 控件使用 NotificationToken(Token ID: "Notification")作为组件级 Design Token,所有视觉属性均从全局 SharedToken 派生,不硬编码任何具体值。


Token 资源访问方式

在 AXAML 中使用组件级 Token:

{atom:NotificationTokenResource NotificationBg}
{atom:NotificationTokenResource NotificationPadding}
{atom:NotificationTokenResource NotificationWidth}

在 AXAML 中使用全局共享 Token:

{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 等)会自动适配暗黑模式,无需额外配置。