rtc_prd/design_system.md
2026-02-04 15:33:02 +08:00

4.5 KiB

Airhub 设计规范 (视觉标准) 🎨

Important

本文档严格区分 App 全局规范产品专属规范。 开发人员 必须 在应用样式前确认当前页面所属的上下文。


1. App 全局规范 (科技主题) 🌐

适用范围: index.html (首页), bluetooth.html (蓝牙搜索), wifi-config.html (配网) 核心风格: 未来感、洁净、科技、蓝紫色调。

首要行动点 (Global Primary Action)

用途:主连接按钮、配网流程的“下一步”。

  • 渐变色: linear-gradient(90deg, #22D3EE 0%, #3B82F6 35%, #6366F1 65%, #8B5CF6 100%) (青 -> 蓝 -> 靛 -> 紫)
  • 阴影: box-shadow: 0 0 15px rgba(34, 211, 238, 0.35)

导航与头部

  • 背景: 透明或深度磨砂玻璃 (Glassmorphism)。
  • 图标: 细描边风格,冷灰色 #6B7280

2. 产品专属规范:毛绒机芯 (Capybara) 🐹

适用范围: device-control.html (设备控), products.html (卡片), 故事生成弹窗。 核心风格: 温暖、毛绒感、舒适、杏褐色调。

Note

所有与控制“毛绒机芯”设备相关的页面/弹窗,必须强制遵循此主题。

首要行动点 (Capybara Context)

用途:“创作新故事”、“开始生成”、设备页内的主要交互。

  • 渐变色: linear-gradient(135deg, #ECCFA8 0%, #C99672 100%) (浅杏色 -> 暖褐色)
  • 阴影: box-shadow: 0 0 15px rgba(201, 150, 114, 0.35), 0 0 30px rgba(201, 150, 114, 0.25) (复合光晕)
  • 边框: 无 (依靠阴影和光感定义边界)

背景色系统

  • 设备页底色: #FDF9F3 (暖沙色 Warm Sand) - 禁止使用纯白或渐变
  • 卡片背景: #FFFFFF (奶白色) 配柔和阴影。
  • 选中高亮: #FFF7ED (极淡的橙色叠底)。

字体颜色 (Capybara Context)

  • 标题: #4B2404 (黑巧棕)。
  • 正文: #4B5563 (暖灰)。

选中交互模式 (Apple Style) 🍏

  • 操作方式: 直接点击卡片。
  • 指示器: 右上角复选徽章 (Checkmark Badge)
    • 样式:杏褐色渐变实心圆 + 白色对钩。
  • 状态: 摒弃“已选列表栏”,视觉反馈完全集中在卡片本体上。

3. 开发执行规则 📏

  1. 确认上下文: 拿到设计稿先判断:这是 App 公共页面(用科技蓝)还是某个具体产品的页面(用产品色)?
  2. 按钮混用禁令:
    • 公共页 -> 必须用科技渐变 (Tech Gradient)。
    • 卡皮巴拉页 -> 必须用毛绒渐变 (Plush Gradient)。
    • 一致性: 严禁混搭。卡皮巴拉页面里绝不应该出现“科技蓝”的按钮,除非是系统级的报错弹窗。

2.1 设置页规范 (Settings Page - Overlay) ⚙️

交互模式: 全屏覆盖层 (Full-screen Overlay),从底部滑入。

核心布局 (Layout & Metrics)

  • 容器层级: z-index: 2000 (覆盖此时的主页)。
  • 背景: 暖色渐变 linear-gradient(135deg, #FEF5EC 0%, #FDF2F8 100%)
  • 进出动画: slideUp 0.3s cubic-bezier(0.2, 0.8, 0.2, 1)

头部规范 (Header)

为了与主页保持视觉一致性,头部必须遵循以下严格计算:

  • 定位: position: absolute (悬浮于内容之上)。
  • 高度: 自然高度 (Auto),不固定。
  • 上边距 (Padding-Top): calc(env(safe-area-inset-top, 20px) + 48px) —— 严格对齐首页
  • 底边距 (Padding-Bottom): 16px
  • 左右边距: 20px

内容区域 (Content)

  • 遮罩效果: 顶部使用渐变遮罩 (Gradient Mask) 实现内容在头部下方平滑消失,而非简单的背景色遮挡。
    • mask-image: linear-gradient(to bottom, transparent 0, transparent 80px, black 110px, ...)
  • 上边距: calc(env(safe-area-inset-top) + 100px) (确保内容不被头部遮挡)。

弹窗规范 (Modals) 🚨

设置页内的二级操作(改名、解绑)必须使用以下弹窗样式:

  • 层级: z-index: 2200 (必须高于设置页)。
  • 背景: rgba(255, 255, 255, 0.95) (高透明度)。
  • 动画: 必须添加 forwards 属性防止闪退。
    • animation: popIn 0.3s ... forwards
  • 交互:
    • 必须设置 pointer-events: auto
    • 必须设置 position: relative 和独立 z-index 给内容元素。
  • 点击阻断: item 点击事件必须加 event.stopPropagation() 防止冒泡。

组件样式

  • 开关 (Toggle): 激活色 #FFB088 (暖橙)。
  • 滑动条 (Slider): 纯白滑块 + 投影,轨道背景 #E5E5EA