mirror of
https://github.com/AtomUI/AtomUI.git
synced 2026-10-20 07:39:09 +08:00
209 lines
9.9 KiB
Markdown
209 lines
9.9 KiB
Markdown
# NavMenu Design Token
|
||
|
||
NavMenu 控件使用 `NavMenuToken`(Token ID: `"NavMenu"`)作为组件级 Design Token,所有视觉属性均从全局 `SharedToken` 派生,不硬编码任何具体值。
|
||
|
||
---
|
||
|
||
## Token 资源访问方式
|
||
|
||
在 AXAML 中使用组件级 Token:
|
||
|
||
```xml
|
||
{atom:NavMenuTokenResource ItemColor}
|
||
{atom:NavMenuTokenResource ItemSelectedBg}
|
||
{atom:NavMenuTokenResource DarkMenuBg}
|
||
```
|
||
|
||
在 AXAML 中使用全局共享 Token:
|
||
|
||
```xml
|
||
{atom:SharedTokenResource ColorPrimary}
|
||
{atom:SharedTokenResource ControlHeight}
|
||
{atom:SharedTokenResource ColorText}
|
||
```
|
||
|
||
---
|
||
|
||
## 组件级 Token 一览
|
||
|
||
以下是 `NavMenuToken` 定义的全部组件级 Token,按功能分组说明。
|
||
|
||
### 菜单项颜色 Token
|
||
|
||
| Token 名 | 类型 | 来源 | 说明 |
|
||
|---|---|---|---|
|
||
| `ItemColor` | `Color` | `SharedToken.ColorText` | 菜单项文字颜色 |
|
||
| `ItemHoverColor` | `Color` | `SharedToken.ColorText` | 菜单项悬浮文字颜色 |
|
||
| `ItemSelectedColor` | `Color` | `SharedToken.ColorPrimary` | 菜单项选中文字颜色 |
|
||
| `ItemDisabledColor` | `Color` | `SharedToken.ColorTextDisabled` | 菜单项禁用文字颜色 |
|
||
| `HorizontalItemHoverColor` | `Color` | `SharedToken.ColorPrimary` | 水平菜单项悬浮文字颜色 |
|
||
| `HorizontalItemSelectedColor` | `Color` | `SharedToken.ColorPrimary` | 水平菜单项选中文字颜色 |
|
||
| `GroupTitleColor` | `Color` | `SharedToken.ColorTextDescription` | 分组标题文字颜色 |
|
||
| `KeyGestureColor` | `Color` | `SharedToken.ColorTextSecondary` | 快捷键文字颜色 |
|
||
|
||
### 菜单项背景 Token
|
||
|
||
| Token 名 | 类型 | 来源 | 说明 |
|
||
|---|---|---|---|
|
||
| `ItemBg` | `Color` | `SharedToken.ColorTransparent` | 菜单项默认背景色(透明) |
|
||
| `ItemHoverBg` | `Color` | `SharedToken.ColorBgTextHover` | 菜单项悬浮背景色 |
|
||
| `ItemActiveBg` | `Color` | `SharedToken.ColorFillContent` | 菜单项激活背景色 |
|
||
| `ItemSelectedBg` | `Color` | `SharedToken.ControlItemBgActive` | 菜单项选中背景色 |
|
||
| `SubMenuItemBg` | `Color` | `SharedToken.ColorFillAlter` | 子菜单项背景色 |
|
||
| `HorizontalItemSelectedBg` | `Color` | `Colors.Transparent` | 水平菜单项选中背景色 |
|
||
| `HorizontalItemHoverBg` | `Color` | `Colors.Transparent` | 水平菜单项悬浮背景色 |
|
||
|
||
### 危险菜单项 Token
|
||
|
||
| Token 名 | 类型 | 来源 | 说明 |
|
||
|---|---|---|---|
|
||
| `DangerItemColor` | `Color` | `SharedToken.ColorError` | 危险菜单项文字颜色 |
|
||
| `DangerItemHoverColor` | `Color` | `SharedToken.ColorError` | 危险菜单项悬浮文字颜色 |
|
||
| `DangerItemSelectedColor` | `Color` | `SharedToken.ColorError` | 危险菜单项选中文字颜色 |
|
||
| `DangerItemActiveBg` | `Color` | `SharedToken.ColorError` | 危险菜单项激活背景色 |
|
||
| `DangerItemSelectedBg` | `Color` | `SharedToken.ColorError` | 危险菜单项选中背景色 |
|
||
|
||
### 圆角 Token
|
||
|
||
| Token 名 | 类型 | 来源 | 说明 |
|
||
|---|---|---|---|
|
||
| `ItemBorderRadius` | `CornerRadius` | `SharedToken.BorderRadiusLG` | 菜单项圆角 |
|
||
| `SubMenuItemBorderRadius` | `CornerRadius` | `SharedToken.BorderRadiusSM` | 子菜单项圆角 |
|
||
| `HorizontalItemBorderRadius` | `CornerRadius` | `new CornerRadius(0)` | 水平菜单项圆角(无圆角) |
|
||
|
||
### 尺寸与间距 Token
|
||
|
||
| Token 名 | 类型 | 来源 | 说明 |
|
||
|---|---|---|---|
|
||
| `ItemHeight` | `double` | `SharedToken.ControlHeight` | 菜单项高度 |
|
||
| `ItemContentMargin` | `Thickness` | `SharedToken.UniformlyMarginXXS` | 菜单项内容外间距 |
|
||
| `ItemContentPadding` | `Thickness` | 基于 `SharedToken.UniformlyPadding` | 菜单项内容内间距 |
|
||
| `ItemMargin` | `Thickness` | `(0, 0, SharedToken.UniformlyMarginXS, 0)` | 菜单项内部元素边距 |
|
||
| `HorizontalItemMargin` | `Thickness` | `(SharedToken.UniformlyPadding, 0)` | 水平菜单项外间距 |
|
||
| `InlineItemIndentUnit` | `double` | `ItemHeight / 2` | 内联菜单项缩进单位 |
|
||
| `VerticalItemsPanelSpacing` | `double` | `SharedToken.UniformlyMarginXXS` | 垂直面板元素间距 |
|
||
| `VerticalChildItemsMargin` | `Thickness` | `(0, SharedToken.UniformlyMarginXXS, 0, 0)` | 垂直面板子项外间距 |
|
||
| `VerticalMenuContentPadding` | `Thickness` | `SharedToken.PaddingXXS` | 垂直面板内容内间距 |
|
||
|
||
### 图标 Token
|
||
|
||
| Token 名 | 类型 | 来源 | 说明 |
|
||
|---|---|---|---|
|
||
| `IconSize` | `double` | `SharedToken.FontSize` | 菜单项图标尺寸 |
|
||
| `IconMargin` | `Thickness` | 基于 `SharedToken.ControlHeightSM - FontSize` | 图标与文字间距 |
|
||
| `ItemIconSize` | `double` | `SharedToken.IconSize` | 菜单项图标展示尺寸 |
|
||
| `CollapsedIconSize` | `double` | `SharedToken.FontSizeLG` | 收起时图标尺寸 |
|
||
|
||
### 字体 Token
|
||
|
||
| Token 名 | 类型 | 来源 | 说明 |
|
||
|---|---|---|---|
|
||
| `GroupTitleFontSize` | `double` | `SharedToken.FontSize` | 分组标题字体大小 |
|
||
| `GroupTitleLineHeight` | `double` | `SharedToken.ControlHeight` | 分组标题行高 |
|
||
|
||
### 水平菜单 Token
|
||
|
||
| Token 名 | 类型 | 来源 | 说明 |
|
||
|---|---|---|---|
|
||
| `MenuHorizontalHeight` | `double` | `SharedToken.ControlHeightLG * 1.15` | 水平菜单整体高度 |
|
||
| `HorizontalLineHeight` | `double` | `SharedToken.ControlHeightLG * 1.15` | 水平菜单行高 |
|
||
| `ActiveBarScaleX` | `double` | `1.0` | 选中指示条宽度比例 |
|
||
| `ActiveBarHeight` | `double` | `SharedToken.LineWidthBold` | 选中指示条高度 |
|
||
|
||
### Popup Token
|
||
|
||
| Token 名 | 类型 | 来源 | 说明 |
|
||
|---|---|---|---|
|
||
| `MenuPopupBg` | `Color` | `SharedToken.ColorBgElevated` | Popup 背景色 |
|
||
| `MenuPopupContentPadding` | `Thickness` | 基于 `SharedToken.UniformlyPaddingXXS` | Popup 内容内间距 |
|
||
| `MenuPopupMinWidth` | `double` | `160` | Popup 最小宽度 |
|
||
| `MenuPopupMaxWidth` | `double` | `800` | Popup 最大宽度 |
|
||
| `MenuPopupMaxHeight` | `double` | `ItemHeight * 30` | Popup 最大高度 |
|
||
| `TopLevelItemPopupMarginToAnchor` | `double` | `SharedToken.UniformlyMarginXS` | 顶层菜单项 Popup 边距 |
|
||
| `MenuSubMenuBg` | `Color` | `SharedToken.ColorBgElevated` | 子菜单背景色 |
|
||
| `MenuArrowSize` | `double` | `SharedToken.FontSize / 7 * 5` | 菜单箭头尺寸 |
|
||
|
||
### 其他 Token
|
||
|
||
| Token 名 | 类型 | 来源 | 说明 |
|
||
|---|---|---|---|
|
||
| `CollapsedWidth` | `double` | `SharedToken.ControlHeight * 2` | 收起后菜单宽度 |
|
||
|
||
---
|
||
|
||
## 暗色主题 Token
|
||
|
||
暗色主题使用一套完全独立的 Token,当 `IsDarkStyle=True` 时生效:
|
||
|
||
| Token 名 | 类型 | 来源 | 说明 |
|
||
|---|---|---|---|
|
||
| `DarkMenuBg` | `Color` | `#001529` | 暗色菜单背景色 |
|
||
| `DarkMenuPopupBg` | `Color` | `#001529` | 暗色 Popup 背景色 |
|
||
| `DarkItemColor` | `Color` | 基于 `ColorTextLightSolid` 65% 透明度 | 暗色菜单项文字颜色 |
|
||
| `DarkItemBg` | `Color` | `Colors.Transparent` | 暗色菜单项背景色 |
|
||
| `DarkSubMenuItemBg` | `Color` | `#000c17` | 暗色子菜单项背景色 |
|
||
| `DarkItemSelectedColor` | `Color` | `SharedToken.ColorTextLightSolid` | 暗色选中文字颜色 |
|
||
| `DarkItemSelectedBg` | `Color` | `SharedToken.ColorPrimary` | 暗色选中背景色 |
|
||
| `DarkItemHoverBg` | `Color` | `Colors.Transparent` | 暗色悬浮背景色 |
|
||
| `DarkItemHoverColor` | `Color` | `SharedToken.ColorTextLightSolid` | 暗色悬浮文字颜色 |
|
||
| `DarkItemDisabledColor` | `Color` | 基于 `ColorTextLightSolid` 25% 透明度 | 暗色禁用文字颜色 |
|
||
| `DarkGroupTitleColor` | `Color` | 基于 `ColorTextLightSolid` 65% 透明度 | 暗色分组标题颜色 |
|
||
| `DarkDangerItemColor` | `Color` | `SharedToken.ColorError` | 暗色危险菜单项文字颜色 |
|
||
| `DarkDangerItemHoverColor` | `Color` | `SharedToken.ColorErrorHover` | 暗色危险菜单项悬浮颜色 |
|
||
| `DarkDangerItemSelectedColor` | `Color` | `SharedToken.ColorTextLightSolid` | 暗色危险菜单项选中颜色 |
|
||
| `DarkDangerItemSelectedBg` | `Color` | `SharedToken.ColorError` | 暗色危险菜单项选中背景 |
|
||
| `DarkDangerItemActiveBg` | `Color` | `SharedToken.ColorError` | 暗色危险菜单项激活背景 |
|
||
|
||
---
|
||
|
||
## 主题中使用的全局 SharedToken
|
||
|
||
除组件级 Token 外,NavMenu 的 ControlTheme 还直接引用了以下全局 `SharedToken`:
|
||
|
||
| Token 资源键 | 使用场景 |
|
||
|---|---|
|
||
| `ColorPrimary` / `ColorPrimaryHover` / `ColorPrimaryActive` | 选中项、悬浮项主色调 |
|
||
| `ColorText` / `ColorTextDescription` / `ColorTextDisabled` | 文字颜色系列 |
|
||
| `ColorTextLightSolid` | 亮色文字(用于暗色主题推导) |
|
||
| `ColorTextSecondary` | 次要文字(快捷键颜色) |
|
||
| `ColorBgTextHover` | 文本悬浮背景色 |
|
||
| `ColorBgElevated` | 弹出层背景色 |
|
||
| `ColorBgContainer` | 容器背景色 |
|
||
| `ColorFillContent` / `ColorFillAlter` | 填充颜色 |
|
||
| `ColorTransparent` | 透明色 |
|
||
| `ColorError` / `ColorErrorHover` | 错误/危险色系 |
|
||
| `ControlHeight` / `ControlHeightSM` / `ControlHeightLG` | 控件高度 |
|
||
| `ControlItemBgActive` | 活跃项背景色 |
|
||
| `BorderRadius` / `BorderRadiusSM` / `BorderRadiusLG` | 圆角系列 |
|
||
| `FontSize` / `FontSizeLG` | 字体大小 |
|
||
| `IconSize` / `IconSizeSM` | 全局图标尺寸 |
|
||
| `LineWidthBold` | 粗线宽度(指示条高度) |
|
||
| `EnableMotion` | 全局动画开关 |
|
||
|
||
---
|
||
|
||
## Token 对外观的具体影响
|
||
|
||
### 亮色主题下菜单项状态与 Token 映射
|
||
|
||
| 状态 | 文字色 | 背景色 |
|
||
|---|---|---|
|
||
| **正常** | `ItemColor` | `ItemBg`(透明) |
|
||
| **悬浮** | `ItemHoverColor` | `ItemHoverBg` |
|
||
| **激活** | — | `ItemActiveBg` |
|
||
| **选中** | `ItemSelectedColor` | `ItemSelectedBg` |
|
||
| **禁用** | `ItemDisabledColor` | — |
|
||
|
||
### 暗色主题下菜单项状态与 Token 映射
|
||
|
||
| 状态 | 文字色 | 背景色 |
|
||
|---|---|---|
|
||
| **正常** | `DarkItemColor` | `DarkItemBg`(透明) |
|
||
| **悬浮** | `DarkItemHoverColor` | `DarkItemHoverBg` |
|
||
| **选中** | `DarkItemSelectedColor` | `DarkItemSelectedBg` |
|
||
| **禁用** | `DarkItemDisabledColor` | — |
|
||
|
||
### 水平模式特殊 Token
|
||
|
||
水平模式下,选中项不使用背景色高亮,而是通过底部指示条(`ActiveBarHeight` × `ActiveBarScaleX`)标识选中状态。选中文字使用 `HorizontalItemSelectedColor`,悬浮文字使用 `HorizontalItemHoverColor`。
|