Files
fitness-coach/design-system/design-tokens.json
wm b94eb706ff feat: Kinetic Dark 设计语言 + Lucide 图标迁移 + 首页轻量个性化
- 建立 Lucide 子集 iconfont(49 字形),全站 emoji 替换为 fc-icon 组件
- 重塑 Design Token(冷中性近黑底 + Volt 荧光绿 #B6F24E),消除硬编码颜色
- 首页登录后个性化:我的计划 / 我的收藏 / 今日推荐(纯前端复用现有 API)
- 后端 DEFAULT_EMOJI→Lucide 名,PALETTE 对齐 Kinetic Dark 语义色板
- 修复 person-standing 缺失字形;14 个官方组合 seed emoji 全部映射到现有字形
2026-07-22 21:38:56 +08:00

136 lines
7.2 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"$meta": {
"product": "FITCOACH",
"version": "2026-design-language-v2-draft",
"register": "product",
"platform": "wechat-miniprogram",
"designer": "颜好看",
"note": "小程序使用 rpx750rpx=375pt 逻辑像素)。颜色给 hex/rgba 真值,尺寸给 rpx 真值 + px 等价注释。前端把本文件编译进 app.wxss 的 :rootpage 选择器)变量与 JS 常量。",
"three_axis": { "DESIGN_VARIANCE": 5, "MOTION_INTENSITY": 4, "VISUAL_DENSITY": 4 },
"icon_set": "lucide (MIT) — 编译为 iconfont 子集,详情见 DESIGN 提案 §3"
},
"color": {
"bg": { "value": "#0B0F0E", "type": "color", "role": "A1 页面背景(近黑,中性偏冷,非纯黑)" },
"bg_gradient": { "value": "radial-gradient(120% 80% at 50% 0%, #11171400 0%, #0B0F0E 60%)", "type": "gradient", "role": "A1 hero 背景微光(极弱,不喧宾夺主)" },
"surface": { "value": "#141A18", "type": "color", "role": "A1 卡片/容器背景" },
"surface_2": { "value": "#1C2421", "type": "color", "role": "A1 次级表面chip/输入/选中)" },
"surface_warm":{ "value": "#1A211E", "type": "color", "role": "B-slot 悬浮/高亮表面" },
"fg": { "value": "#ECF1EF", "type": "color", "role": "A1 主文本" },
"fg_2": { "value": "#9BA7A1", "type": "color", "role": "B-slot 次级文本" },
"fg_3": { "value": "#6B7670", "type": "color", "role": "B-slot 三级/元数据文本" },
"border": { "value": "rgba(255,255,255,0.08)", "type": "color", "role": "A1 默认边框/分隔线" },
"border_strong":{ "value": "rgba(255,255,255,0.14)", "type": "color", "role": "B-slot 强调边框(选中态)" },
"border_soft": { "value": "rgba(255,255,255,0.05)", "type": "color", "role": "B-slot 内部行分隔" },
"accent": { "value": "#FF6A3D", "type": "color", "role": "A1 品牌强调色 Pulse 珊瑚橙CTA/激活导航/关键数据)" },
"accent_hover":{ "value": "#FF8263", "type": "color", "role": "A2 悬浮" },
"accent_active":{ "value": "#E8562B", "type": "color", "role": "A2 按下" },
"accent_on": { "value": "#20100A", "type": "color", "role": "A2 accent 背景上的前景(深暖色,对比 >7:1" },
"accent_soft": { "value": "rgba(255,106,61,0.12)", "type": "color", "role": "C 强调色淡底(标签/选中底)" },
"accent_ring": { "value": "rgba(255,106,61,0.38)", "type": "color", "role": "C 聚焦光环/进度环发光" },
"success": { "value": "#2BD9A6", "type": "color", "role": "A2 正向/进度完成/连续天数(语义绿,非第二品牌色)" },
"success_on": { "value": "#04201A", "type": "color", "role": "A2 success 背景前景" },
"success_soft":{ "value": "rgba(43,217,166,0.12)", "type": "color", "role": "C 正向淡底" },
"warn": { "value": "#F2B53D", "type": "color", "role": "A2 警告" },
"danger": { "value": "#FF5C5C", "type": "color", "role": "A2 错误/删除(替代旧 #E5544B" },
"danger_soft": { "value": "rgba(255,92,92,0.12)", "type": "color", "role": "C 错误淡底" },
"info": { "value": "#4FA8FF", "type": "color", "role": "A2 信息" },
"focus_ring": { "value": "0 0 0 3px rgba(255,106,61,0.45)", "type": "shadow", "role": "A2 键盘焦点环" }
},
"font": {
"display": { "value": "'Manrope', 'PingFang SC', 'HarmonyOS Sans SC', 'Source Han Sans SC', 'Noto Sans CJK SC', sans-serif", "type": "fontFamily", "role": "A1 标题/数字(拉丁用 Manrope中文回落系统黑体" },
"body": { "value": "'PingFang SC', 'HarmonyOS Sans SC', 'Source Han Sans SC', 'Noto Sans CJK SC', -apple-system, sans-serif", "type": "fontFamily", "role": "A1 正文(中文系统字体优先,避免打包 10MB+ CJK 字体)" },
"mono": { "value": "'JetBrains Mono', ui-monospace, 'SFMono-Regular', monospace", "type": "fontFamily", "role": "A2 数据/统计数字等宽tabular" }
},
"fontSize": {
"xs": { "value": "22rpx", "px": 11, "role": "eyebrow 全大写标签" },
"sm": { "value": "24rpx", "px": 12, "role": "caption/辅助" },
"base":{ "value": "28rpx", "px": 14, "role": "正文基准" },
"md": { "value": "30rpx", "px": 15, "role": "正文略大" },
"lg": { "value": "32rpx", "px": 16, "role": "三级标题/h3" },
"xl": { "value": "36rpx", "px": 18, "role": "二级标题/h2" },
"2xl": { "value": "44rpx", "px": 22, "role": "一级标题/h1" },
"3xl": { "value": "56rpx", "px": 28, "role": "Hero 主标题" },
"4xl": { "value": "72rpx", "px": 36, "role": "巨型统计数字(偶尔)" }
},
"fontWeight": {
"regular": { "value": 400, "role": "正文" },
"medium": { "value": 510, "role": "按钮/小标题(注意:小程序需字体含此字重,或回落 500" },
"semibold": { "value": 590, "role": "大标题/强调(或 600" }
},
"letterSpacing": {
"eyebrow": { "value": "0.08em", "role": "ALL CAPS 标签" },
"title": { "value": "-0.02em", "role": "大标题负字距" },
"body": { "value": "0", "role": "正文" }
},
"spacing": {
"1": { "value": "8rpx", "px": 4 },
"2": { "value": "16rpx", "px": 8 },
"3": { "value": "24rpx", "px": 12 },
"4": { "value": "32rpx", "px": 16 },
"5": { "value": "40rpx", "px": 20 },
"6": { "value": "48rpx", "px": 24 },
"8": { "value": "64rpx", "px": 32 },
"10": { "value": "80rpx", "px": 40 },
"12": { "value": "96rpx", "px": 48 },
"16": { "value": "128rpx","px": 64, "role": "仅 Hero/大区块" }
},
"radius": {
"sm": { "value": "16rpx", "px": 8 },
"md": { "value": "24rpx", "px": 12 },
"lg": { "value": "32rpx", "px": 16 },
"xl": { "value": "40rpx", "px": 20 },
"pill": { "value": "9999rpx", "px": 9999 }
},
"shadow": {
"flat": { "value": "none", "role": "默认(用 hairline 边框代替阴影)" },
"ring": { "value": "0 0 0 1rpx rgba(255,255,255,0.08)", "role": "卡片默认1px 发丝边框" },
"raised": { "value": "0 8rpx 24rpx rgba(0,0,0,0.32)", "role": "悬浮/选中抬升" },
"float": { "value": "0 12rpx 40rpx rgba(0,0,0,0.45)", "role": "底部导航/吸顶" },
"glow": { "value": "0 8rpx 24rpx rgba(255,106,61,0.28)", "role": "CTA 主按钮光晕(唯一允许的彩色阴影)" }
},
"motion": {
"fast": { "value": "150ms", "role": "即时反馈/hover" },
"base": { "value": "200ms", "role": "状态切换收敛值" },
"slow": { "value": "300ms", "role": "进入/布局变化" },
"ease": { "value": "cubic-bezier(0.2, 0, 0, 1)", "role": "标准缓动(无 bounce/elastic" }
},
"z": {
"base": 0,
"sticky": 100,
"nav": 60,
"dropdown":1000,
"modal": 1200,
"toast": 1300
},
"icon": {
"set": "lucide",
"license": "MIT",
"sizes": { "inline": "16rpx", "button": "20rpx", "standalone": "24rpx" },
"stroke": "2px (编译为 iconfont 后对应字重)",
"delivery": "编译 Lucide 子集为 iconfont(.ttf/.woff2),小程序用 <text class='fc-icon'> 引用;或用 base64 SVG <image>。禁止 emoji。"
},
"density": {
"register": "product",
"accent_per_screen": 2,
"touch_target_min": "44px (88rpx)",
"safe_area": "env(safe-area-inset-bottom)"
}
}