UI 设计规范
Hackathon Weekly 社区的 Modern Editorial 风格指南
Modern Editorial UI 风格指南
我们的设计语言被称为 "High-Density Neo-Swiss" (高密度新瑞士风格)。它专为开发者打造,致力于在兼具杂志般排版美感的同时,提供专业工具级别的信息密度。
核心理念
- High Density (高密度): 我们服务于不需要过多留白来“呼吸”的专家用户。信息密度就是生产力。
- Editorial Typography (编辑排版): 使用
Space Grotesk作为标题字体,传达科技感与前卫感;Inter作为正文,保证极致的可读性。 - Swiss Layout (瑞士布局): 严格的网格系统,清晰的层级,强调左对齐和客观性。
如果进行 UI 开发
所有最新的 UI 原型文件都已经部署在 public/ui-design 目录下。你可以直接点击下方的链接查看交互式原型。
交互式原型预览 (Live Preview)
Fumadocs 支持直接嵌入 HTML。你可以在下方直接与原型进行交互,或者点击链接全屏查看。
1. Design System (设计规范)
包含色彩、字体、按钮、圆角等基础 Token。
2. Events List (活动列表)
响应式的活动列表页,展示了 Sidebar 和 Card Grid 的用法。
3. Event Detail (活动详情)
展示了 Sticky Sidebar 和复杂的正文排版。
响应式适配(桌面端 + 手机端)
本项目采用同一套代码实现桌面端和手机端的响应式适配,不存在独立的移动端应用或代码分支。核心策略是通过 Tailwind 断点 + 条件渲染来区分不同设备的 UI 表现。
关键组件
- TabBar (
src/modules/public/shared/components/TabBar.tsx):手机端底部导航栏,通过lg:hidden仅在小屏幕显示。包含首页、文档、创建、通知、个人中心等入口。内置了软键盘弹出检测(useKeyboardDetection)和visualViewport监听,键盘弹出时自动隐藏,避免遮挡输入区域。同时兼容微信浏览器的 safe-area 适配。 - MobileCategoryNav (
src/modules/public/shared/components/MobileCategoryNav.tsx):手机端顶部分类横向滚动导航,同样通过lg:hidden仅在小屏幕显示。在活动、项目、组织等列表页提供快速切换,使用sticky top-0固定在顶部。
适配原则
- 断点统一:以
lg(1024px)为分界,lg:hidden隐藏移动端专属组件,hidden lg:block隐藏桌面端专属组件。 - 同一套代码:不做平台判断分支,所有页面和组件都通过 Tailwind 响应式类名适配不同屏幕。
- 移动端特殊处理:软键盘检测、
safe-area-inset-bottom适配、微信浏览器兼容等通过 hooks 和 CSS 环境变量处理。
关键设计 Token (速查)
Typography
- Headings:
Space Grotesk(font-brand) - Body:
Inter(font-sans) - Code:
JetBrains Mono(font-mono)
Spacing
- Card Padding:
p-3(12px) - Compact! - Grid Gap:
gap-4(16px)
Radius
- Card:
rounded-2xl(16px) - Inner Element:
rounded-lg(8px) - Button:
rounded-full(Pill shape)