Skip to content

MindGuard UI组件文档

字数
2240 字
阅读时间
10 分钟

基于实际工程结构与业务需求的完整组件体系文档,确保设计一致性与开发效率。

📋 组件清单总览

组件分类与统计

组件类型数量用途包体归属
导航与头部2页面导航、用户信息展示主包
内容展示6帖子、报告、徽章等核心业务内容主包/分包
状态反馈4空/错误/风险/隐私等状态提示主包
交互组件2菜单、标签等交互元素主包
加载组件2骨架屏、加载效果主包
专业功能1REBT心理疗法组件主包

详细组件清单

1. 导航与头部组件

组件名中文名用途所属域依赖服务所在页面分包是否公共
custom-navbar自定义导航栏页面顶部导航,支持返回、标题、操作按钮通用所有页面主包✅ 公共
profile-header个人资料头部个人信息展示,包含头像、统计数据、操作按钮个人中心user.js我的Tab主包❌ 业务特定

2. 内容展示组件

组件名中文名用途所属域依赖服务所在页面分包是否公共
post-card帖子卡片树洞帖子完整展示,包含图片、互动、风险提示社区forum.js树洞Tab主包❌ 业务特定
report-card报告卡片护心周报展示,包含图表、统计数据个人中心reports.js我的Tab主包❌ 业务特定
badge-carousel徽章轮播用户获得的护心徽章展示,支持滑动查看个人中心badges.js我的Tab主包❌ 业务特定
rebt-inlineREBT内联理性情绪行为疗法内联编辑器心理随笔journals.js心情随笔主包❌ 业务特定
stats-row统计数据行健康摘要统计数据展示通用user.js今天Tab/我的Tab主包✅ 公共
topic-chip话题标签话题标签展示和选择社区forum.js树洞Tab主包✅ 公共

3. 状态反馈组件

组件名中文名用途所属域依赖服务所在页面分包是否公共
empty-state空状态各种场景的空状态展示通用所有页面主包✅ 公共
error-state错误状态错误状态展示,支持重试和刷新通用所有页面主包✅ 公共
risk-banner风险横幅风险等级提示横幅,支持自动跳转通用forum.js树洞Tab主包✅ 公共
privacy-banner隐私横幅隐私授权提醒横幅通用user.js所有页面主包✅ 公共

4. 交互组件

组件名中文名用途所属域依赖服务所在页面分包是否公共
menu-list菜单列表网格布局的菜单列表通用个人中心主包✅ 公共
topic-chip话题标签话题标签展示和选择社区forum.js树洞Tab主包✅ 公共

5. 加载组件

组件名中文名用途所属域依赖服务所在页面分包是否公共
skeleton-feed骨架屏信息流信息流的骨架屏加载效果通用树洞Tab主包✅ 公共
skeleton-profile骨架屏个人资料个人资料的骨架屏加载效果通用个人中心主包✅ 公共

6. 专业功能组件

组件名中文名用途所属域依赖服务所在页面分包是否公共
rebt-inlineREBT内联理性情绪行为疗法内联编辑器心理随笔journals.js心情随笔主包❌ 业务特定

📊 页面 × 组件覆盖矩阵

主包页面(Tab页面)

页面\组件custom-navbarprofile-headerpost-cardreport-cardbadge-carouselrebt-inlinestats-rowtopic-chipempty-stateerror-staterisk-bannerprivacy-bannermenu-listskeleton-feedskeleton-profile
今天
心情随笔
任务
树洞
我的

分包页面

页面\组件custom-navbarprofile-headerpost-cardreport-cardbadge-carouselrebt-inlinestats-rowtopic-chipempty-stateerror-staterisk-bannerprivacy-bannermenu-listskeleton-feedskeleton-profile
帖子详情
发布帖子
周报详情
徽章详情
隐私中心
资料编辑
SOS主页

关键链路标注

🚦 首屏关键路径(今天页)

  1. custom-navbar → 页面导航
  2. stats-row → 今日状态展示
  3. empty-state → 首次使用引导
  4. privacy-banner → 隐私授权提醒

🌳 树洞发帖关键路径

  1. post-card → 帖子展示
  2. topic-chip → 话题标签
  3. risk-banner → 风险提示
  4. skeleton-feed → 加载状态

📋 任务管理关键路径

  1. custom-navbar → 页面导航
  2. error-state → 错误处理
  3. empty-state → 空状态处理

🔍 差异与重构建议

发现的问题

1. 组件命名不一致

  • 问题: skeleton-feed vs skeleton-profile 命名风格不统一
  • 建议: 统一为 skeleton-{type} 格式,如 skeleton-post-list, skeleton-user-profile

2. 功能重叠组件

  • 问题: stats-row 在多个页面功能类似但实现略有差异
  • 建议: 提取为通用统计组件,通过配置实现不同展示

3. 缺失的组件

根据页面文档分析,以下组件需要开发:

组件名中文名用途优先级
mood-card情绪卡片情绪打卡展示和录入🔴 高
suggestion-card建议卡片微建议展示和操作🔴 高
task-card任务卡片任务展示和管理🔴 高
tool-grid工具网格工具箱网格布局🟡 中
resource-card资源卡片推荐资源展示🟡 中
community-highlight社区高亮社区动态展示🟡 中
emotion-thermometer情绪温度条情绪可视化🟢 低

4. API 一致化问题

组件当前问题建议方案
post-card事件命名不统一统一为 on{Action} 格式
topic-chip属性命名冗余简化属性名,增加类型检查
stats-row数据格式不统一统一数据结构,增加类型定义

5. 样式 Token 不合规点

组件问题修复建议
privacy-banner使用了硬编码颜色值替换为 --color-warning-500 Token
report-card部分颜色未使用Token替换为 --color-brand-500 系列Token
rebt-inlineCBT颜色未定义添加 --color-cbt-purple Token

重构建议

🎯 短期重构(高优先级)

  1. 统一组件命名规范
  2. 修复样式Token问题
  3. 补充缺失的核心组件
  4. API接口一致化

🔄 中期重构(中优先级)

  1. 组件类型定义完善
  2. 错误处理机制统一
  3. 无障碍支持增强
  4. 性能优化(懒加载等)

🚀 长期重构(低优先级)

  1. 组件库独立化
  2. 国际化支持
  3. 主题系统完善
  4. 单元测试覆盖

📄 组件规范条目

通用规范

命名规范

  • 组件文件名: kebab-case (如 post-card)
  • 组件类名: PascalCase (如 PostCard)
  • 事件名: camelCase (如 onItemTap)
  • 属性名: camelCase (如 isLoading)

样式规范

  • 颜色: 必须使用CSS Token,禁止硬编码颜色值
  • 间距: 使用 4/8/12/16/24/32rpx 系列
  • 圆角: 使用 8/12/16/24/32rpx 系列
  • 字体: 使用 24/28/32rpx 系列

数据规范

  • 属性类型: 明确类型定义,支持默认值
  • 事件参数: 统一事件对象结构
  • 数据流: 单向数据流,避免双向绑定

📝 校验报告

Token映射表

裸色值对应Token使用场景
#3A7BD5--color-brand-500品牌主色
#2C3640--color-ink-900主要文字
#5A6672--color-ink-600次要文字
#EEF5FF--color-brand-50主色背景
#F59E0B--color-warning-500警告色
#DC2626--color-danger-500危险色
#2AC28D--color-success-500成功色

对比度检查

所有组件文本对比度均满足 WCAG 2.1 AA 标准(≥ 4.5:1)。

埋点缺失检查

组件缺失埋点建议补充
menu-list菜单项点击事件添加 clk_menu_item 埋点
stats-row统计项点击事件添加 clk_stats_item 埋点
topic-chip标签选择事件添加 act_topic_select 埋点

📚 附录

相关文档

工具与资源


文档版本: v1.0.0 最后更新: 2025-09-22 维护者: MindGuard设计与前端团队

贡献者

The avatar of contributor named as Cai Hongyu Cai Hongyu

文件历史

撰写