Files
sionrui/design-system.md
sion123 36195ea55a feat: 重构 IdentifyFace.vue 为 Hooks 架构
- 新增 hooks/ 目录,包含三个专用 Hook:
  * useVoiceGeneration - 语音生成和校验逻辑
  * useDigitalHumanGeneration - 数字人视频生成逻辑
  * useIdentifyFaceController - 协调两个子 Hook 的控制器

- 新增 types/identify-face.ts 完整类型定义

- 重构 IdentifyFace.vue 使用 hooks 架构:
  * 视图层与业务逻辑分离
  * 状态管理清晰化
  * 模块解耦,逻辑清晰

- 遵循单一职责原则,每个 Hook 只负责一个领域
- 提升代码可测试性和可维护性
- 支持两种视频素材来源:素材库选择和直接上传
- 实现语音生成优先校验的业务规则

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-28 00:19:17 +08:00

12 KiB
Raw Permalink Blame History

金牌文案大师 - 设计系统文档

设计概述

产品定位AI 驱动的文案分析与管理平台 设计风格:现代简约、专业高效、数据驱动 目标用户内容创作者、数字营销人员、VIP 会员用户


1. 色彩系统

1.1 主色调 - Slate石板色

/* 背景色系 */
--slate-50: #f8fafc   /* 页面背景 */
--slate-100: #f1f5f9  /* 表格头部、分割区域 */
--slate-200: #e2e8f0  /* 边框、分割线 */
--slate-300: #cbd5e1  /* 输入框边框 */
--slate-400: #94a3b8  /* 次要文本 */
--slate-500: #64748b  /* 辅助文本 */
--slate-600: #475569  /* 主要文本 */
--slate-700: #334155  /* 强调文本 */
--slate-800: #1e293b  /* 深色文本 */
--slate-900: #0f172a  /* 头部背景 */

/* 应用场景 */
- 页面背景slate-50
- 卡片背景white
- 头部导航slate-900
- 分割线slate-100 / slate-200
- 次要文本slate-500
- 主要文本slate-700 / slate-800

1.2 强调色 - Blue蓝色

--blue-400: #60a5fa  /* 链接、导航激活态 */
--blue-500: #3b82f6  /* 主按钮、焦点态 */
--blue-600: #2563eb  /* 滑块、强调元素 */
--blue-700: #1d4ed8  /* 深色按钮 */

/* 应用场景 */
- 导航激活状态text-blue-400 + border-blue-400
- 滑块控件accent-blue-600
- 焦点状态ring-2 ring-blue-500

1.3 辅助色 - Indigo靛蓝

--indigo-50: #eef2ff   /* 选中状态背景 */
--indigo-100: #e0e7ff  /* 卡片边框 */
--indigo-500: #6366f1  /* 选中态边框 */
--indigo-600: #4f46e5  /* 主渐变色 */
--indigo-700: #4338ca  /* 悬停态 */
--indigo-800: #3730a3  /* 选中文字 */
--indigo-900: #312e81  /* 标题文字 */

/* 应用场景 */
- 选中态卡片border-indigo-500 + bg-indigo-50
- Pro 标签推荐bg-red-500 + text-white
- 渐变按钮from-indigo-600 to-purple-600

1.4 功能色

/* 成功/警告 */
--green-500: #10b981   /* 成功状态 */
--yellow-400: #facc15  /* 积分显示 */
--yellow-500: #eab308  /* 会员标识 */

/* 错误/危险 */
--red-500: #ef4444     /* 错误提示 */
--red-800: #991b1b     /* 置顶标签 */

/* 中性色 */
--gray-100: #f3f4f6    /* 头像背景 */
--gray-300: #d1d5db    /* 按钮边框 */
--gray-400: #9ca3af    /* 禁用状态 */
--gray-700: #374151    /* 用户名 */

2. 排版系统

2.1 字体族

font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif

2.2 字号层级

/* 标题层级 */
text-xs: 12px    /* 标签、徽章、小提示 */
text-sm: 14px    /* 次要文本、按钮文字 */
text-base: 16px  /* 正文、标准文本 */
text-lg: 18px    /* 卡片标题 */
text-xl: 20px    /* Logo、页面标题 */

/* 数字强调 */
text-2xl: 24px   /* 大数字展示(积分) */

2.3 字重

font-normal: 400   /* 普通文本 */
font-medium: 500   /* 强调文本、标签 */
font-bold: 700     /* 标题、重要数字 */

2.4 行高

leading-relaxed: 1.625  /* 长文本阅读 */
leading-normal: 1.5     /* 标准行高 */

3. 间距系统

3.1 间距变量

space-1: 4px    /* 极小间距 */
space-2: 8px    /* 小间距 */
space-3: 12px   /* 标签间距 */
space-4: 16px   /* 组件内间距 */
space-5: 20px   /* 卡片内边距 */
space-6: 24px   /* 卡片外边距 */
space-8: 32px   /* 区块间距 */

3.2 内边距

/* 组件内边距 */
p-1: 4px   /* 徽章 */
p-2: 8px   /* 标签 */
p-3: 12px  /* 输入框 */
p-4: 16px  /* 表格单元格 */
p-5: 20px  /* 卡片内容区 */
p-6: 24px  /* 卡片整体 */

/* 按钮内边距 */
py-1: 4px   /* 小按钮 */
py-2: 8px   /* 标准按钮 */
py-3: 12px  /* 大按钮 */
px-4: 16px  /* 水平内边距 */
px-6: 24px  /* 按钮水平间距 */

4. 圆角系统

4.1 圆角规范

rounded: 4px    /* 小元素 */
rounded-lg: 8px /* 按钮、输入框 */
rounded-xl: 12px/* 卡片 */
rounded-full: 9999px /* 头像、徽章 */

5. 阴影系统

5.1 阴影层级

shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05)  /* 卡片默认 */
shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1) /* 悬停态 */
shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1) /* 重要元素 */
shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1) /* 强调阴影 */

/* 彩色阴影 */
shadow-blue-500/20: 0 10px 15px -3px rgb(59 130 246 / 0.2)
shadow-indigo-500/30: 0 10px 15px -3px rgb(99 102 241 / 0.3)

6. 布局规范

6.1 栅格系统

/* 容器最大宽度 */
container: 1200px

/* 网格比例 */
lg:w-2/3: 66.666667%  /* 主内容区 */
lg:w-1/3: 33.333333%  /* 侧边栏 */

/* 响应式断点 */
sm: 640px   /* 手机横屏 */
md: 768px   /* 平板 */
lg: 1024px  /* 笔记本 */
xl: 1280px  /* 桌面 */

6.2 页面布局

/* 头部导航 */
height: 64px (h-16)
- 固定定位fixed top-0
- 背景slate-900
- 阴影shadow-md

/* 主内容区 */
padding-top: 96px (pt-24)  /* 头部高度 + 间距 */
padding-bottom: 48px (pb-12)
- 横向间距24px (px-6)
- 垂直间距24px (space-y-6)

/* 侧边栏 */
sticky top-24  /* 粘性定位,距离顶部 96px */

7. 组件设计规范

7.1 按钮系统

主按钮Primary

样式bg-slate-900 hover:bg-slate-800
内边距px-6 py-2
圆角rounded-lg
字体font-medium
阴影shadow-lg
颜色text-white
图标mr-2

次按钮Secondary

样式bg-white border border-slate-300
悬停态hover:bg-slate-50
内边距px-4 py-1.5
圆角rounded-lg
字体text-sm

渐变按钮Gradient

渐变bg-gradient-to-r from-indigo-600 to-purple-600
悬停hover:from-indigo-700 hover:to-purple-700
阴影shadow-lg shadow-indigo-500/30
图标group-hover:rotate-12 transition

文字按钮Text

样式border border-slate-300
悬停态hover:bg-white
内边距py-2

7.2 输入框Input

边框border border-slate-300
聚焦态focus:ring-2 focus:ring-blue-500 focus:outline-none
圆角rounded-lg
内边距px-4 py-2
过渡transition
占位符placeholder:text-slate-400

7.3 滑块Range

轨道bg-slate-200
滑块accent-blue-600
高度h-2
圆角rounded-lg

7.4 卡片Card

背景bg-white
边框border border-slate-200
圆角rounded-xl
阴影shadow-sm
内边距p-6 / p-5

7.5 表格Table

头部text-xs text-slate-500 uppercase bg-slate-50
悬停态hover:bg-slate-50
分割线divide-y divide-slate-100
粘性头部sticky top-0

8. 状态系统

8.1 状态颜色

/* 选中状态 */
bg-blue-50 + border-indigo-500

/* 悬停状态 */
hover:bg-slate-50
hover:bg-slate-100
hover:border-blue-400

/* 禁用状态 */
opacity-50 + cursor-not-allowed
text-slate-400

/* 激活状态 */
text-blue-400 + border-blue-400

8.2 标签系统

/* 普通标签 */
bg-gray-100 text-gray-800 text-xs font-medium px-2.5 py-0.5 rounded

/* 置顶标签 */
bg-red-100 text-red-800

/* 推荐标签 */
bg-red-500 text-white text-[10px] px-2 py-0.5 rounded-full font-bold

/* VIP 标签 */
text-yellow-500 border border-yellow-500 rounded px-1 inline-block

9. 图标系统

9.1 图标库

/* 使用 Font Awesome 6.0.0 */
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">

9.2 常用图标

/* 功能图标 */
fa-magic        /* Logo */
fa-tiktok       /* 平台标识 */
fa-magnifying-glass  /* 搜索 */
fa-download     /* 下载 */
fa-copy         /* 复制 */
fa-floppy-disk  /* 保存 */
fa-wand-magic-sparkles  /* AI 生成 */
fa-coins        /* 积分 */
fa-heart        /* 点赞 */
fa-comment      /* 评论 */
fa-share        /* 转发 */

/* 尺寸规范 */
text-sm: 14px   /* 小图标 */
text-base: 16px /* 标准图标 */
text-lg: 18px   /* 大图标 */

10. 交互规范

10.1 过渡动画

/* 标准过渡 */
transition: all 150ms cubic-bezier(0.4, 0, 0.2, 1)

/* 悬停旋转 */
group-hover:rotate-12 transition

/* 颜色过渡 */
hover:text-white transition

10.2 焦点状态

focus:ring-2 focus:ring-blue-500 focus:outline-none

11. 响应式设计

11.1 断点策略

/* 手机 */
默认堆叠布局
- 头部堆叠用户信息和积分
- 主内容全宽

/* 平板 (md: 768px+) */
- 头部横向布局
- 输入框和按钮横向排列

/* 桌面 (lg: 1024px+) */
- 主体两栏布局 (2/3 + 1/3)
- 侧边栏sticky 定位
- 用户信息完整展示

12. 设计令牌Design Tokens

12.1 颜色令牌

{
  "color": {
    "background": {
      "page": "#f8fafc",
      "card": "#ffffff",
      "header": "#0f172a",
      "sidebar": "#ffffff"
    },
    "text": {
      "primary": "#334155",
      "secondary": "#64748b",
      "inverse": "#ffffff"
    },
    "border": {
      "default": "#e2e8f0",
      "focus": "#3b82f6",
      "selected": "#6366f1"
    }
  }
}

12.2 间距令牌

{
  "spacing": {
    "xs": "4px",
    "sm": "8px",
    "md": "16px",
    "lg": "24px",
    "xl": "32px"
  }
}

12.3 圆角令牌

{
  "radius": {
    "sm": "4px",
    "md": "8px",
    "lg": "12px",
    "full": "9999px"
  }
}

13. 可访问性a11y

13.1 对比度要求

- 普通文本至少 4.5:1
- 大文本18px+至少 3:1
- 交互元素至少 3:1

13.2 焦点可见性

/* 必须包含焦点指示器 */
focus:ring-2 focus:ring-blue-500 focus:outline-none

13.3 语义化 HTML

- 使用 proper heading hierarchy (h1-h6)
- 表单元素关联 label
- 按钮使用 button 元素
- 链接使用 a 元素

14. 实现建议

14.1 CSS 框架

<!-- 推荐使用 Tailwind CSS -->
<script src="https://cdn.tailwindcss.com"></script>

14.2 组件库建议

// 推荐组件库
- Ant Design Vue完整的企业级组件
- Element PlusVue 3 生态
- Headless UI无样式组件库

14.3 状态管理

// 推荐 Pinia
- 用户信息useUserStore
- 积分系统useCreditsStore
- 文案列表useContentStore
- 分析结果useAnalysisStore

15. 设计检查清单

15.1 视觉一致性

  • 所有按钮使用统一的圆角半径8px
  • 所有输入框使用统一的边框和聚焦样式
  • 颜色使用预定义的设计令牌
  • 间距使用 8px 网格系统

15.2 交互体验

  • 所有交互元素有明确的悬停状态
  • 所有表单元素有明确的焦点状态
  • 加载状态有明确的视觉反馈
  • 错误状态有明确的错误提示

15.3 响应式设计

  • 在移动端(< 768px正确堆叠
  • 在平板端768px-1024px合理调整
  • 在桌面端(> 1024px使用多栏布局

15.4 可访问性

  • 所有交互元素可通过键盘访问
  • 焦点状态清晰可见
  • 文本对比度符合 WCAG 2.1 AA 标准
  • 图片有 alt 属性

16. 后续优化建议

16.1 短期优化

  1. 暗色模式支持:增加 dark: 前缀的样式
  2. 加载骨架屏:为表格和卡片添加加载状态
  3. 空状态设计:完善空数据时的提示页面
  4. 微动画:增加页面切换和组件交互动画

16.2 中期优化

  1. 主题定制:允许用户自定义主题色
  2. 布局切换:支持紧凑和宽松两种密度
  3. 国际化:支持多语言切换
  4. 深色模式:完整的暗色主题

16.3 长期优化

  1. 组件库抽象:将样式抽象为独立的组件库
  2. 设计令牌管理:使用 CSS 变量统一管理
  3. Storybook 文档:为组件编写使用文档
  4. 自动化测试:添加视觉回归测试

设计原则总结

  1. 简洁高效:去除不必要的装饰,专注内容本身
  2. 清晰层次:通过颜色、大小、间距建立清晰的信息层级
  3. 一致统一:统一的设计语言贯穿整个产品
  4. 响应灵活:适配多种设备和屏幕尺寸
  5. 无障碍友好:确保所有用户都能正常使用
  6. 性能优先:优化资源加载和渲染性能
  7. 可扩展性:为未来功能扩展预留空间

本文档基于 Tailwind CSS 框架整理,建议在实际开发中使用设计令牌和组件库来保证设计的一致性。