新增 useThemePreference hook 和纯工具函数,支持系统/明亮/黑暗三态主题选择、 matchMedia 系统主题跟随、localStorage 持久化和启动期主题预应用,通过 <html theme-mode> 驱动 TDesign 主题变量切换。 Header 右侧控件重新组织为 .dashboard-header-controls 单行桌面布局,主题 RadioGroup 位于刷新频率 RadioGroup 前。 附带:build.ts import specifier 改为跨平台 sep 转换;config-loader 测试适配 Windows PATH 和 YAML 路径转义;test-utils 类型窄化修复。
37 lines
1.8 KiB
Markdown
37 lines
1.8 KiB
Markdown
## Purpose
|
||
|
||
定义 Dashboard 页面骨架布局:顶部导航栏(含品牌标识、主题模式选择器、刷新频率选择器和倒计时控件)、内容区域居中与最大宽度、页面背景色。
|
||
|
||
## Requirements
|
||
|
||
### Requirement: 页面骨架布局
|
||
Dashboard SHALL 使用 TDesign Layout 组件体系构建页面骨架,包含顶部导航栏和内容区域。
|
||
|
||
#### Scenario: Layout 结构
|
||
- **WHEN** Dashboard 页面渲染
|
||
- **THEN** 页面 SHALL 使用 TDesign `Layout` 组件包裹 `Layout.Header` 和 `Layout.Content`
|
||
|
||
#### Scenario: 顶部导航栏
|
||
- **WHEN** Dashboard 页面渲染
|
||
- **THEN** `Layout.Header` SHALL 内嵌 TDesign `HeadMenu` 组件,`logo` prop 渲染品牌名 "DiAL" 和副标题 "统一拨测平台"(水平排列),`operations` prop 渲染主题模式选择器、刷新频率选择器和倒计时/刷新按钮组合控件
|
||
|
||
#### Scenario: Header 右侧操作区
|
||
- **WHEN** Dashboard 页面渲染
|
||
- **THEN** HeadMenu operations 区域 SHALL 包含主题模式 RadioGroup、刷新频率 RadioGroup 和倒计时文本(或手动刷新按钮),三者水平排列并垂直居中
|
||
|
||
#### Scenario: 主题选择器位置
|
||
- **WHEN** HeadMenu operations 区域渲染
|
||
- **THEN** 主题模式 RadioGroup SHALL 位于刷新频率 RadioGroup 前面
|
||
|
||
#### Scenario: Header 右侧操作区位置
|
||
- **WHEN** HeadMenu 渲染
|
||
- **THEN** operations 区域 SHALL 使用右侧 margin 向内收缩,避免紧贴浏览器右边缘
|
||
|
||
#### Scenario: 内容区域居中
|
||
- **WHEN** Dashboard 内容区渲染
|
||
- **THEN** `Layout.Content` 内部 SHALL 使用 CSS 类限制最大宽度(max-width: 1400px)并水平居中
|
||
|
||
#### Scenario: 页面背景色
|
||
- **WHEN** Dashboard 页面渲染
|
||
- **THEN** 页面背景色 SHALL 使用 `var(--td-bg-color-page)`,内容卡片浮于当前 TDesign 主题背景之上
|