diff --git a/design-refs/mockup/design-system.html b/design-refs/mockup/design-system.html index bb47dfc..f65a6fa 100644 --- a/design-refs/mockup/design-system.html +++ b/design-refs/mockup/design-system.html @@ -47,13 +47,18 @@ table.spec td.k { color: #1a1a1a; font-weight: 600; white-space: nowrap; } table.spec code { font-family: "DejaVu Sans Mono", monospace; font-size: 11.5px; background: #f4f2fa; color: #6d28d9; border-radius: 5px; padding: 1px 5px; } - /* ====== 系统元素 ====== */ - .pillar-label { font-size: 13.5px; font-weight: 700; color: #1a1a1a; margin-bottom: 8px; } - .pillar-label i { font-style: normal; font-weight: 400; font-size: 11.5px; color: #6b6b6b; margin-left: 8px; } + .sec-label { font-size: 13.5px; font-weight: 700; color: #1a1a1a; margin-bottom: 8px; } + .sec-label i { font-style: normal; font-weight: 400; font-size: 11.5px; color: #6b6b6b; margin-left: 8px; } + /* 颜色页 */ .pair { display: flex; border: 2px solid #111111; border-radius: 10px; overflow: hidden; } .pair div { width: 72px; height: 34px; } + .cchip { min-width: 0; } + .cchip .b { height: 44px; border-radius: 9px; border: 2px solid #111111; } + .cchip .n { font-size: 10.5px; font-weight: 700; margin-top: 5px; white-space: nowrap; } + .cchip .h { font-family: "DejaVu Sans Mono", monospace; font-size: 9px; color: #6b6b6b; white-space: nowrap; } + /* 形状页 */ .shapechip { text-align: center; } .shapechip .box { width: 44px; height: 44px; margin: 0 auto; border-radius: 10px; background: #ffffff; @@ -62,6 +67,7 @@ .shapechip .sn { font-size: 11px; font-weight: 700; margin-top: 5px; } .shapechip .sm { font-size: 9.5px; color: #6b6b6b; margin-top: 1px; line-height: 1.35; } + /* 组件页:孟菲斯 × 拟物卡 */ .mscard { background: #fff9f0; border: 2px solid #111111; border-radius: 14px; box-shadow: 0 3px 0 #ffffff, 0 5px 0 #eadfc4, 7px 8px 0 #111111; @@ -80,20 +86,35 @@ .mscard .dots { display: flex; gap: 4px; } .mscard .dots i { width: 7px; height: 7px; border-radius: 50%; border: 1.5px solid #111111; background: #fff; } .mscard .dots i.on { background: #111111; } - .entry-badge2 { position: absolute; top: -11px; left: -11px; width: 24px; height: 24px; border-radius: 50%; background: #111111; color: #ffd93d; font-size: 12px; font-weight: 800; display: flex; align-items: center; justify-content: center; border: 2px solid #fff9f0; } + /* 票券 */ .msticket { width: 216px; background: #fff9f0; border: 2px solid #111111; border-radius: 12px; - box-shadow: 5px 5px 0 #111111; position: absolute; padding: 10px 12px; + box-shadow: 5px 5px 0 #111111; position: absolute; display: flex; align-items: stretch; } - .msticket h4 { margin: 0 0 6px; font-size: 12px; font-weight: 800; letter-spacing: 1px; } - .msticket .row { display: flex; gap: 6px; font-size: 10.5px; color: #3d3d3d; margin-bottom: 4px; line-height: 1.45; } - .msticket .row b { flex: none; color: #111; } + .msticket .tl { + width: 56px; border: 2px solid #111111; border-left: none; border-radius: 10px 0 0 10px; + display: flex; align-items: center; justify-content: center; font-size: 22px; margin-left: -2px; + } + .msticket .tb { flex: 1; padding: 9px 10px; } + .msticket .tb b { font-size: 12.5px; } + .msticket .tb .no { font-family: "DejaVu Sans Mono", monospace; font-size: 8.5px; color: #8a7a5c; margin-top: 3px; } + .msticket .stub { + width: 42px; border-left: 1.5px dashed #111111; + display: flex; align-items: center; justify-content: center; + font-family: "DejaVu Sans Mono", monospace; font-size: 9.5px; color: #8a7a5c; + } + .msticket.pk::before, .msticket.pk::after { + content: ""; position: absolute; left: 162px; width: 13px; height: 13px; + border-radius: 50%; background: #fbfbfa; border: 2px solid #111111; + } + .msticket.pk::before { top: -9px; } + .msticket.pk::after { bottom: -9px; } .msline { stroke: #111111; stroke-width: 2.5; fill: none; } .msstation { stroke: #111111; stroke-width: 2; } @@ -101,36 +122,101 @@ - +
- <DesignSystem /> -

设计系统 · 孟菲斯 × 拟物卡 · v1.0

-
定稿:鲜艳碰撞的孟菲斯骨架,拟物纸质课程卡为入口载体;线条是关系;形状承载语义、散落空白。一切扩展围绕 ai-era-tutorial:卡头即靶子,票券即指派。
+ <DesignSystem /> 01 +

颜色 · 鲜艳与碰撞

+
三组撞色对轮转,黑描边收束一切鲜艳,大底永远是纸色。章节色只进相框,状态不用颜色表达——用形状。
-
支柱一 · 色彩 鲜艳、碰撞——三组撞色对,黑描边统一收束,大底永远是纸色
-
+
撞色对 相邻的鲜艳必须来自不同对;描边统一 ink
+
-
撞色对 1 · coral × teal
+
对 1 · coral × teal
-
撞色对 2 · mustard × violet
+
对 2 · mustard × violet
-
撞色对 3 · pink × blue
+
对 3 · pink × blue
- 规则:相邻色块必须来自不同撞色对;ink #111 描边收束一切鲜艳;大面积底色只有纸色 #FFF9F0 与白。 + 相邻色块必撞色(不同对取色);ink #111 描边收束一切;鲜艳总面积一屏 ≤ 10%。
-
支柱二 · 形状即语义 孟菲斯形状对内容下定义,散落于空白——装饰即语义
-
+
中性阶 纸的世界——字、边、投影、底
+
+
ink
#111111 · 描边/字/硬投影
+
paper
#FFF9F0 · 卡面/大底
+
stack-1
#FFFFFF · 纸叠亮边
+
stack-2
#EADFC4 · 纸叠暗层
+
+ +
章节色 六章六色,只进 16:9 相框与图标瓦
+
+
ch1 快速开始
#FF6B6B
+
ch2 React
#FF8FAB
+
ch3 更多示例
#FFD93D
+
ch4 更多
#4ECDC4
+
ch5 全栈基础
#5B8DEF
+
ch6 高级教程
#A78BFA
+
+ +
站点轮换色 只上先后线(实线),沿线路四色轮换
+
+ + + + + + + +
描边 2px ink;r=6;同色不相邻。虚线/点线(相关/同族)不带站点。
+
+ +
收束示例 鲜艳 × 黑描边 × 纸底的合作
+
+
🌐
+
⚛️
+
相框内的章节色相邻即撞色(ch1 × ch2);黑描边与内阴影把鲜艳压回纸面。禁色彩渐变——立体感只来自描边、硬投影与内阴影。
+
+
+ +
+

用色规则

+
1鲜艳预算:彩色只上形状、描边内与相框;一屏 ≤ 10%。
+
2相邻必撞色:相邻鲜艳取不同撞色对;同色不相邻。
+
3黑描边收束:一切鲜艳以 2px ink 描边为界。
+
4大底纸色:背景只有 paper;白只作纸叠亮边。
+
+
+

状态即形状,不是颜色

+
1完成=打孔:票券沿撕线打双孔;未开始无孔。
+
2进度=积木点:卡头点列,实心=已学。
+
3无锁:状态是推荐不是门槛,卡片永远可入(死原则)。
+
+ +
设计系统 · 01 颜色 · stack idealjs
+
01 / 04
+
+ + +
+
+ <DesignSystem /> 02 +

符号、形状 · 装饰即语义

+
孟菲斯形状对内容下定义、散落于空白;线条形式承载关系含义;站点与票券是关系上的铆钉。每个标记都有意思。
+
+ +
+
语义形状 ×7 取自 ai-era-tutorial 概念;散落只在空白,密度 ≤ 8/屏
+
▲ 靶子
目标,卡头打头
● 积木
清单点列,实=已学
○ 预期
可核对的结果
@@ -140,29 +226,8 @@
+ 指派
位置/预期/场景
-
支柱三 · 卡片 核心:教程的入口载体——孟菲斯骨架 + 拟物纸感,卡头三件套即靶子
-
-
-
- 🌐 - - 预期结果 · GIF -
-
- - 快速开始 - -
-
-
-
卡头三件套 = 靶子:▲ 目标(标题旁三角)+ ○ 预期结果(16:9 相框 GIF)+ ● 积木进度(四点,实心=已学)。
-
孟菲斯:2px 黑描边、7px 硬投影、章节撞色只进相框。
-
拟物:米白纸面 #FFF9F0、纸叠三层边、相框凹槽内阴影、标题压凹白影、完成=打孔票。
-
-
- -
支柱四 · 线条 关系,不可缺——形式即含义:四种形式各答一个问题;拓扑规则全形式通用
-
+
线条形式 ×4 形式即含义;拓扑规则(横平竖直+R8)全形式通用
+
@@ -197,42 +262,176 @@
agent 边界 · 区域标记,不连线
-
拓扑全形式通用:横平竖直+R8;站点只上先后线、半嵌卡边;并行不合并(4px);多线卡口→胶囊(端头半圆、距外侧线 ≥ 2 线宽、线止于胶囊边)。
+ +
站点与胶囊 关系上的铆钉——只上先后线
+
+
+ + + + + + + +
圆点 r6 半嵌卡边:左侧贴描边;右侧骑硬投影外缘(描边会被黑影吞没)。线从卡边/影缘出发。
+
+
+ + + + + + + +
多线卡口=胶囊:竖向 6×20 端头半圆;并行线间距 4px 不合并;线止于胶囊边界;端头距最外侧线 ≥ 2× 线宽。
+
+
+ +
票券 状态与指派的载体——完成即打孔
+
+
+
🌐
+
快速开始
No. 001 · 已完成(打孔)
+
№01
+
+
+
🔗
+
全栈基础
No. 005 · 未开始(无孔)
+
№05
+
+
撕线=4:2 点划(与虚线同节奏,语境不同:这是裁剪线不是关系线)。票号=章程序号。
+
-

决策记录

-
1为什么孟菲斯:教程漫长,鲜艳与碰撞给持续的情绪燃料;形状体系天然可承载语义。
-
2为什么拟物卡:卡是拥有物——纸叠、相框与打孔票给学习以实体感。
-
3分工:孟菲斯管背景与情绪,拟物管卡片与票券,黑描边统一两者。
+

形状 → 语义

+ + + + + + + + + +
形状语义出处
▲ 三角目标靶子先行
● 实心圆积木(已学)积木清单
○ 圆环预期结果可核对的样子
~ 横波代理区交给 agent
▬ 实心条价值区就地写过程
⌇ 竖抖脱靶警示重点关注
+ 十字指派学习位置/预期/场景
-
-

全局规则

-
1鲜艳预算:彩色只上形状、描边内与相框;大底纸色。
-
2装饰即语义:每个散落形状都必须有含义(见支柱二)。
-
3无锁:状态是推荐不是门槛——完成=打孔,未开始=无孔,卡片永远可入(死原则)。
-
4不用色彩渐变:立体感靠描边、硬投影与内阴影。
+
+

符号规则

+
1装饰即语义:散落形状必须有含义,无义不落。
+
2一横一竖对举:代理区横波(蓝)vs 脱靶竖抖(红)。
+
3形状不压内容:只在空白,永不压字与卡。
-
设计系统 · DesignSystem · stack idealjs
-
01 / 02
+
设计系统 · 02 符号形状 · stack idealjs
+
02 / 04
- +
- <DesignSystem /> -

系统 × ai-era-tutorial · 概念到组件的映射

-
教程结构的每个概念都有对应的视觉组件:靶子落在卡头三件套,代理区是波浪,脱靶是之字注,指派学习是三行票——组合样张见左。
+ <DesignSystem /> 03 +

组件 · 入口载体与关系

+
四个组件撑起教程:CourseCard(入口)、RouteLine(关系)、指派票(任务)、脱靶注(警示)。卡头三件套即靶子。
+
+ +
+
CourseCard 教程的入口载体——孟菲斯骨架 × 拟物纸感
+
+
+ ① +
+ 🌐 + + 预期结果 · GIF +
+
+ + 快速开始 + +
+
+
+
结构:2px ink 描边 · 硬投影 7px 8px 0 · 纸叠三层边(白 3px / 暗层 5px)· 相框 3px 黑边 + 内阴影 · 标题压凹白影。
+
卡头三件套=靶子:▲ 目标(三角+标题)+ ○ 预期结果(16:9 相框 GIF)+ ● 积木点列(实心=已学)。
+
交互:hover 拿起(translateY -3px+投影加深至 10px 11px)并播放 GIF;desc ⇄ GIF 每 8000ms 自动翻转,hover / Tab 聚焦锁定;触屏与 prefers-reduced-motion 不翻转。
+
+
+ +
RouteLine 关系——线形即含义,拓扑全形式通用
+
+ + + + + + + + + +
+ 拓扑:横平竖直 + R8 小圆角直角步进;并行不合并(4px);分流/并线=直角步进。线宽 2.5px ink。
+ 站点:只上先后线,r6 半嵌卡边(左贴描边、右骑影缘),四色轮换。胶囊:多线卡口专用(见 02 页)。 +
+
+ +
指派票 & 脱靶注 任务与警示——总在指派之后
+
+
+
+
+
+ 指派学习 · npm +
位置:包管理家族坐标
预期:说清 lockfile 锁什么
场景:加依赖 / 换源重装
+
+
+
+
+
+
+ + 脱靶提醒 · 跟在指派后 +
+
写两样:可能怎么脱靶(装了但没跑)+ 脱靶什么样子(命令成功、页面空白)——读者撞上时认得出缺哪块。
+
+
+
+ +
+

组件参数

+ + + + + + +
组件关键 prop
CourseCardgoal ▲ · gifUrl ○16:9 · dots ● · entry ①② · flipMs=8000
RouteLinepath 实线段 · rel 虚线 · family 点线 · stations · capsule
指派票pos 位置 · expect 预期 · scenes[] 场景
脱靶注how 怎么脱靶 · looks 什么样
+
入口徽章 ①②③=读者画像推荐起点(EntryGuide),非强制排序。
+
+
+

组件原则

+
1卡不可缺:入口与预期永远以卡呈现。
+
2线不可缺:章节之间必有关系可读。
+
3无锁:任何状态不阻断进入(死原则)。
+
+ +
设计系统 · 03 组件 · stack idealjs
+
03 / 04
+
+ + +
+
+ <DesignSystem /> 04 +

样例 · 组合场景与概念映射

+
全系统同台:拟物卡 + 三种关系线 + 指派票与脱靶注 + 散落语义形状。右侧是 ai-era-tutorial 概念到组件的完整映射。
- + - + @@ -241,6 +440,8 @@ + + @@ -262,30 +463,29 @@
-
🔗
+
🔗
全栈基础
-
-

+ 指派学习 · 认知基础

-
位置包管理家族:npm 的坐标与邻居
-
预期能说清 lockfile 锁住了什么
-
场景加一个依赖 / 换源重装
+
+
+
+
指派学习 · npm
位置 / 预期 / 场景
+
+
- + 脱靶提醒
常见脱靶:装了但没跑。脱靶的样子——命令成功、页面空白;此时缺的是"真机验收"这块积木。
-
+
代理区:安装交给 agent,只验收产物
-
+
价值区:过程就地写清
@@ -295,27 +495,28 @@

概念 → 组件映射

- +
- + - + - +
skill 概念组件
靶子先行卡头三件套:▲ 目标 + ○ 16:9 预期区 + ● 积木点列
靶子先行卡头三件套:▲+○16:9+●点列
步骤=目标+验收卡内验收行(○ 空环待勾)
代理区~ 波浪带,标注"交给 agent"
代理区~ 波浪带,"交给 agent"
价值区▬ 实心条,过程就地展开
指派学习+ 三行票:位置 / 预期 / 场景
指派学习+ 三行票:位置/预期/场景
脱靶提醒⌇ 竖抖注,跟在指派后
认知基础底座纹与"真机验收"章
死原则无锁:状态=推荐,卡永远可入
-
+

组合规则

-
1入口徽章 ①②③:读者画像的推荐起点,非强制。
-
2撞色在框内:章节撞色只进 16:9 相框,卡面纸色。
-
3形状不压内容:散落形状只在空白,密度 ≤ 每屏 8 个。
+
1撞色在框内:章节色只进 16:9 相框,卡面纸色。
+
2站点贴边:左贴描边、右骑硬投影外缘;虚线/点线无站点。
+
3入口徽章 ①②③:推荐起点,非强制。
+
4形状不压内容:只在空白,密度 ≤ 8/屏。
-
设计系统 · DesignSystem · stack idealjs
-
02 / 02
+
设计系统 · 04 样例 · stack idealjs
+
04 / 04
diff --git a/design-refs/mockup/design-system.pdf b/design-refs/mockup/design-system.pdf index 53369fe..b073715 100644 Binary files a/design-refs/mockup/design-system.pdf and b/design-refs/mockup/design-system.pdf differ