Files
Arkie-Library-Frontend/.unipi/docs/specs/2026-05-28-browse-figma-redesign-design.md
2026-05-28 10:41:53 +08:00

8.1 KiB
Raw Blame History

title, type, date
title type date
Browse 页全部资料Figma 1:1 视觉对齐 brainstorm 2026-05-28

Browse 页全部资料Figma 1:1 视觉对齐

Problem Statement

/browse 路由(「全部资料」页)的视觉与 Figma 设计稿node 4206-6051)有两处显著落差,需要对齐:

  1. 筛选条 (FilterChips) 当前是椭圆 pill chip + 边框 + 溢出折叠按钮Figma 是下划线 tab 风格(文字 + 橘色底线,无边框、无背景)。
  2. mobile 底部导航第三格目前是「官方推荐」(连到 /browse?sort=recommendedFigma 是「我的收藏」。

页面标题、Header、讯息流 bubble 已对齐,不需要再动。

Context

  • 当前 FilterChips 实现:src/components/messageStream/FilterChips.tsx,含 9 种 typeall/image/video/music/ppt/pdf/text/link/archiveSlidersHorizontal overflow expand 按钮。
  • Figma 只展示 mobile viewport且只露 6 种 type全部/图片/视频/音乐/PPT/PDF
  • 现有 mobile 底部 navsrc/layouts/PublicLayout.tsx 内的 BottomNavIcon4 格home / document / heart / update。
  • 资产已经存在 heart-active.svg / heart-inactive.svg,不需要新增图示档。
  • 「我的收藏」功能本身不实作,只做 stub「即将推出」页。等用户系统建立后再做真功能。
  • text / link / archive 三种 type 现在确实有资料可筛,不能直接砍掉。

Chosen Approach

Approach A + 全 viewport responsive

  • 筛选条改成下划线 tab 风格,所有 viewport 统一使用mobile / tablet / desktop
  • 9 种 type 全部保留,溢出改成「水平横向滚动」(无 expand 按钮,自由滑),符合 Telegram 风格 + Figma 风格。
  • mobile 底部 nav 第 3 格:图示沿用 heartlabel 改 t("favorites"),连结改 /favorites
  • 新增 /favorites routestub 页内容为「我的收藏 — 即将推出」+ 返回首页 CTA。
  • 桌机顶部 nav 不动(「官方推荐」入口保留在 desktop top nav

Why This Approach

  • 为什么所有 viewport 统一筛选条样式Terry 明确要求 responsive across screen sizes同一组件维护两套样式是不必要的复杂度下划线 tab 在桌机宽度下也清爽(更胜 pill chip
  • 为什么水平滚动而非「⋯」展开Figma 没画出展开行为标准的「Telegram filter bar」模式就是横滑少一个状态机本专案的 MessageStream 已经是无限滚动列表,再加一个 expand 反而割裂体验。
  • 为什么不砍掉 text/link/archive:这些是真有资料的 type砍掉会让桌机用户失去筛选能力横滑设计已经能容纳全部 9 种。
  • 为什么 favorites 做 stub 不做完整功能Terry 选 Q2 选项 3等用户系统再做明确不留 localStorage 技术债。
  • 为什么沿用 heart 图示资产已经存在Figma 视觉风格与现有 heart 相容;不增加设计审查负担。

已拒绝的替代方案

  • B桌机也加「我的收藏」顶部 nav 入口):会让桌机 nav 多一个空壳连结,不必要。
  • C移除 text/link/archive type 入口):损失既有功能,不符合「视觉对齐 ≠ 砍功能」原则。
  • localStorage 收藏功能Terry 选 Q2 选项 3明确不做。
  • 「⋯」expand 按钮Figma-faithfulFigma 没明确画出展开行为,是我推测的;横滑更直接。

Design

1. FilterChips 重做

文件src/components/messageStream/FilterChips.tsx(改写,非新增)

新视觉规范

  • 容器:水平横向滚动 (overflow-x-auto),隐藏 scrollbarsticky top 保留
  • 每个 tab纯文字按钮无 border、无 background、无 rounded
  • inactivetext-neutral-400hover text-ark-gold/80
  • activetext-ark-gold + 底部 2px 橘色下划线(border-b-2 border-ark-goldinactive 底部 2px 透明 border占位防跳动
  • 间距tab 之间 gap-5(或 gap-6,实作时微调)
  • padding每个 tab 上下 py-3,左右无(让 text 自然贴齐 underline
  • 字号:text-smtext-[15px],依照 Figma 比例
  • 移除 SlidersHorizontal expand 按钮与 expanded state
  • 移除 measure 隐藏元素 + ResizeObserver(不再需要侦测溢出)

type 顺序保持不变all / image / video / music / ppt / pdf / text / link / archive

响应性

  • 因为是水平滚动所有宽度都能容纳mobile 极窄屏自然横滑,桌机宽屏会自然撑开置左

2. 新增 /favorites Stub 页

文件src/pages/Favorites/index.tsx(新增)

结构

  • 居中容器(flex items-center justify-center min-h-[60vh]
  • 心形 icon用 lucide Heartsize 48pxtext-ark-gold/70
  • 标题:t("favorites") → 「我的收藏」
  • 副标:t("favoritesComingSoon") → 「功能即将推出」
  • 描述:t("favoritesComingSoonDesc") → 简短说明(一行)
  • CTA「返回首页」按钮 → Link to="/",使用既有 ark-gold 风格

响应性

  • 单栏居中,所有 viewport 都用同一份 layout
  • 文字 text-base 起跳md 以上放大

3. App.tsx 加 route

文件src/App.tsx

  • 在公开 routes 区段加入 <Route path="/favorites" element={<Favorites />} />
  • 透过 PublicLayout Outlet 渲染(继承 Header + 底部 nav

4. PublicLayout 底部 nav 第 3 格改写

文件src/layouts/PublicLayout.tsx

  • 第 3 个 BottomNavIcon
    • to="/browse?sort=recommended"to="/favorites"
    • label={t("official")}label={t("favorites")}
    • active={...recommended}active={pathname === "/favorites"}
    • icon 保持 heart(资产已存在)

5. i18n 增加 key

文件src/i18n.tsx

  • 三语言zh-TW / zh-CN / en各加
    • favorites:「我的收藏」/「My Favorites」
    • favoritesComingSoon:「即将推出」/「Coming Soon」
    • favoritesComingSoonDesc:一行说明
    • backToHome:「返回首页」/「Back to Home」如不存在

Data Flow

  • FilterChips 的 prop APItype / onTypeChange不变,纯视觉重做,使用方(MessageStream 等)无需调整。
  • /favorites stub 无任何资料请求,纯静态页。

Error Handling

  • /favorites 是纯静态,无错误状态。
  • FilterChips 横滑容器:测试在 overflow-x: hidden 的 ancestor 中是否仍可滚动;既有 global_overflow_x_hidden_mobile_2026_05_27 的全域规则需要确认不会卡住此处的 horizontal scroll可能需要 overflow-x-auto 强制覆盖)。

Testing

  • 既有 npm test 应该全过API 没变)
  • 视觉测试需要mobile (375px) / tablet (768px) / desktop (1280px) 三档手测
  • TypeScript: npx tsc --noEmit
  • Format: npm run format:check

Implementation Checklist

  • FilterChips.tsx 重写:移除 pill 样式与 expand 按钮,改为下划线 tab + 水平滚动
  • 新增 src/pages/Favorites/index.tsx stub 页(含 Heart icon、标题、副标、返回首页 CTA
  • src/App.tsx 加入 /favorites route 与 import
  • src/layouts/PublicLayout.tsx 底部 nav 第 3 格改 label / route / active 判断
  • src/i18n.tsx 三语加入 favorites / favoritesComingSoon / favoritesComingSoonDesc / backToHome
  • 验证 FilterChips 横滑在 global overflow-x-hidden mobile 规则下仍正常
  • npx tsc --noEmit + npm run format:check + npm test
  • mobile / tablet / desktop 三档视觉手测

Open Questions

  • 「我的收藏」stub 页的副标描述文字具体怎么写?(建议:「登入功能开发中,敬请期待」之类,可在实作时定)
  • FilterChips 的字号要 text-sm 还是 text-[15px]?需要量一下 Figma 才能 1:1实作时对图调整
  • 桌机顶部 nav 的「官方推荐」是否要在未来 phase 一起处理?(本 spec 暂不动)

Out of Scope

  • 真正的「我的收藏」功能(依赖未来用户系统,独立 spec
  • 桌机顶部 nav 调整(包括「官方推荐」入口存废)
  • 讯息流 bubble 本身的视觉调整(既有已对齐)
  • 移除 text / link / archive 三种 type
  • 任何后端改动