chore: initial commit - maqt-desktop v0.2
- Phase 1-5: UI framework, auth, weapon schemes, color filters, system optimization - Industrial/tech design style with Chinese localization - Points to gch3n.online/delta backend API - Hardware monitor, filter editor, and all module pages
This commit is contained in:
244
WAVE2_UI_SPEC.md
Normal file
244
WAVE2_UI_SPEC.md
Normal file
@@ -0,0 +1,244 @@
|
||||
# maqt-desktop 相2:UI 组件系统 & 样式
|
||||
|
||||
## 任务
|
||||
在已搭建好的 maqt-desktop 项目中,创建完整的 UI 组件系统。
|
||||
|
||||
## 路径
|
||||
/Users/guchen/.openclaw/workspace/maqt-desktop/
|
||||
|
||||
## Tailwind 主题色 (tailwind.config.ts)
|
||||
|
||||
```javascript
|
||||
colors: {
|
||||
tactical: {
|
||||
black: '#0A0E17', // 主背景
|
||||
dark: '#1A1F2E', // 卡片/面板
|
||||
gray: '#2D3349', // 边框/分隔
|
||||
green: '#3B4A3B', // 强调色/按钮
|
||||
olive: '#5C7A3E', // 次要强调
|
||||
army: '#3A6B35', // 激活态
|
||||
brown: '#4A3B22', // 装饰/辅助
|
||||
gold: '#7A6B4A', // VIP/高级
|
||||
goldLight: '#C8A95B', // VIP 高亮
|
||||
text: '#E8E0D0', // 主文字
|
||||
textMuted: '#A09888', // 次要文字
|
||||
textDim: '#5A5248', // 禁用文字
|
||||
warn: '#3B2B1A', // 警告/危险
|
||||
}
|
||||
}
|
||||
fontFamily: {
|
||||
mono: ['JetBrains Mono', 'Cascadia Code', 'Fira Code', 'monospace'],
|
||||
}
|
||||
```
|
||||
|
||||
## 需要创建的组件
|
||||
|
||||
### UI 基础组件 (src/components/ui/)
|
||||
|
||||
**Button.tsx** - 直角切角按钮
|
||||
- variants: primary (军绿), secondary (铁灰), ghost (透明), danger (暗琥珀)
|
||||
- sizes: sm, md, lg
|
||||
- clip-path 切角效果 (4px)
|
||||
- 悬停边框微光动画
|
||||
- 加载状态 (spinner + disabled)
|
||||
- VIP 专用样式 (暗金边框)
|
||||
|
||||
**Card.tsx** - 模块化卡片
|
||||
- 半透明悬浮背景 (backdrop-blur)
|
||||
- 军绿色细边框
|
||||
- variants: default, highlighted (VIP), hoverable
|
||||
|
||||
**Panel.tsx** - 半透明悬浮面板
|
||||
- backdrop-filter: blur(12px)
|
||||
- 机械扫描线纹理 (repeating-linear-gradient)
|
||||
- 可折叠/展开
|
||||
|
||||
**ProgressBar.tsx** - 机械进度条
|
||||
- 双层结构:背景槽 + 填充条
|
||||
- 填充条梯度 (军绿→橄榄绿→暗金)
|
||||
- 扫描线纹理叠加
|
||||
- 进度数字标注
|
||||
|
||||
**Modal.tsx** - 弹窗
|
||||
- 背景毛玻璃遮罩
|
||||
- 居中卡片
|
||||
- 关闭动画 (十字准星收缩)
|
||||
- 各种尺寸
|
||||
|
||||
**Toast.tsx** - 消息提示
|
||||
- 位置: 右下角
|
||||
- types: success, error, warning, info
|
||||
- 自动消失 (3s)
|
||||
- 军武风格图标
|
||||
|
||||
**Badge.tsx** - 角标
|
||||
- VIP 暗金角标
|
||||
- HOT/NEW 标签
|
||||
- 数字角标
|
||||
|
||||
**Input.tsx** - 输入框
|
||||
- 磨砂暗色背景
|
||||
- 军绿色 focus 边框
|
||||
- 切角效果
|
||||
- 错误状态
|
||||
|
||||
**Skeleton.tsx** - 加载骨架屏
|
||||
- 脉冲动画
|
||||
- 暗色闪烁
|
||||
|
||||
**Compass.tsx** - 罗盘刻度装饰组件
|
||||
- SVG 罗盘刻度环
|
||||
- 用于顶部 HUD 条两端装饰
|
||||
|
||||
### 布局组件 (src/components/layout/)
|
||||
|
||||
**TopBar.tsx** - 顶部 HUD 状态栏
|
||||
- 左侧: 时间 + 罗盘刻度装饰
|
||||
- 中间: 硬件状态 (CPU温度/GPU温度/FPS)
|
||||
- 右侧: VIP 标识 + 网络状态
|
||||
- 窗口控制按钮 (最小化/最大化/关闭)
|
||||
- 半透明背景,底部渐变消失
|
||||
- 自定义拖拽区域 (-webkit-app-region: drag)
|
||||
|
||||
```
|
||||
[≡ 10:45 ───◆───] [CPU 52° ● GPU 68° ● FPS 144] [⋆VIP ✓ ⋆⚡100ms] [━ ☐ ✕]
|
||||
```
|
||||
|
||||
**BottomDock.tsx** - 底部导航 Dock
|
||||
- 固定到底部
|
||||
- 磨砂玻璃背景
|
||||
- 图标+文字按钮
|
||||
- 当前页高亮 (底部小三角)
|
||||
- 按钮: 快速优化 | 画面滤镜 | 滤镜社区 | 改枪方案 | 设置
|
||||
- 首页不显示 (页面状态为 home 时隐藏)
|
||||
|
||||
**DesktopGrid.tsx** - 桌面图标网格
|
||||
- 2x3 网格布局
|
||||
- 居中排列
|
||||
- 响应式间距
|
||||
|
||||
**DesktopIcon.tsx** - 桌面图标
|
||||
- 圆形/圆角图标
|
||||
- 下方文字标签
|
||||
- 悬停光晕效果
|
||||
- 点击导航
|
||||
- 尺寸: icon 64x64, 文字 12px
|
||||
|
||||
**PageContainer.tsx** - 页面容器
|
||||
- 内容区域包装器
|
||||
- 滚动容器 (隐藏滚动条)
|
||||
- 顶部 padding 避开 TopBar
|
||||
- 底部 padding 避开 Dock
|
||||
|
||||
### 样式文件
|
||||
|
||||
**src/styles/globals.css**
|
||||
```css
|
||||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
|
||||
@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@300;400;500;600;700&display=swap');
|
||||
|
||||
@layer base {
|
||||
:root {
|
||||
--color-black: #0A0E17;
|
||||
--color-dark: #1A1F2E;
|
||||
--color-gray: #2D3349;
|
||||
--color-green: #3B4A3B;
|
||||
--color-olive: #5C7A3E;
|
||||
--color-army: #3A6B35;
|
||||
--color-brown: #4A3B22;
|
||||
--color-gold: #7A6B4A;
|
||||
--color-gold-light: #C8A95B;
|
||||
--color-text: #E8E0D0;
|
||||
--color-text-muted: #A09888;
|
||||
--color-text-dim: #5A5248;
|
||||
--color-warn: #3B2B1A;
|
||||
}
|
||||
|
||||
* { scrollbar-width: none; }
|
||||
body {
|
||||
font-family: 'JetBrains Mono', monospace;
|
||||
background: var(--color-black);
|
||||
color: var(--color-text);
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
@layer components {
|
||||
/* 切角按钮 */
|
||||
.btn-clip {
|
||||
clip-path: polygon(
|
||||
4px 0, calc(100% - 4px) 0,
|
||||
100% 4px, 100% calc(100% - 4px),
|
||||
calc(100% - 4px) 100%, 4px 100%,
|
||||
0 calc(100% - 4px), 0 4px
|
||||
);
|
||||
}
|
||||
|
||||
/* 扫描线纹理 */
|
||||
.scanlines {
|
||||
background-image: repeating-linear-gradient(
|
||||
0deg,
|
||||
transparent 0px,
|
||||
rgba(0,0,0,0.03) 1px,
|
||||
transparent 2px
|
||||
);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**src/styles/animations.css**
|
||||
```css
|
||||
/* 边框流光 */
|
||||
@keyframes border-glow {
|
||||
0%, 100% { border-color: rgba(59, 74, 59, 0.6); }
|
||||
50% { border-color: rgba(92, 122, 62, 0.8); }
|
||||
}
|
||||
|
||||
/* 扫描线展开 */
|
||||
@keyframes scan-reveal {
|
||||
0% { clip-path: inset(0 100% 0 0); }
|
||||
100% { clip-path: inset(0 0 0 0); }
|
||||
}
|
||||
|
||||
/* 十字准星展开 */
|
||||
@keyframes crosshair-expand {
|
||||
0% { transform: scale(0); opacity: 0; }
|
||||
50% { transform: scale(1.1); opacity: 0.5; }
|
||||
100% { transform: scale(1); opacity: 1; }
|
||||
}
|
||||
|
||||
/* 数字滚动跳变 */
|
||||
@keyframes digit-roll {
|
||||
0% { transform: translateY(100%); }
|
||||
100% { transform: translateY(0); }
|
||||
}
|
||||
|
||||
/* VIP 暗金流光 */
|
||||
@keyframes gold-shimmer {
|
||||
0% { background-position: -200% center; }
|
||||
100% { background-position: 200% center; }
|
||||
}
|
||||
|
||||
/* 脉冲扫描 */
|
||||
@keyframes radar-scan {
|
||||
0% { transform: rotate(0deg); }
|
||||
100% { transform: rotate(360deg); }
|
||||
}
|
||||
|
||||
/* 抖动警告 */
|
||||
@keyframes shake {
|
||||
0%, 100% { transform: translateX(0); }
|
||||
25% { transform: translateX(-4px); }
|
||||
75% { transform: translateX(4px); }
|
||||
}
|
||||
```
|
||||
|
||||
### 注意事项
|
||||
- 所有组件用 TypeScript + React 函数组件
|
||||
- 使用 Tailwind className,适当用 clsx 库处理条件样式
|
||||
- 组件支持 className prop 以扩展样式
|
||||
- 动画使用 CSS 动画 + Framer Motion (framer-motion)
|
||||
- 主题色用 Tailwind 类: bg-tactical-xxx, text-tactical-xxx
|
||||
Reference in New Issue
Block a user