<DesignSystem /> 01

颜色 · 鲜艳与碰撞

三组撞色对轮转,黑描边收束一切鲜艳,大底永远是纸色。章节色只进相框,状态不用颜色表达——用形状。
撞色对 相邻的鲜艳必须来自不同对;描边统一 ink
对 1 · coral × teal
对 2 · mustard × violet
对 3 · pink × blue
相邻色块必撞色(不同对取色);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/屏
▲ 靶子
目标,卡头打头
● 积木
清单点列,实=已学
○ 预期
可核对的结果
~ 代理区
交给 agent
▬ 价值区
就地写过程
⌇ 脱靶
可能脱靶,重点关注
+ 指派
位置/预期/场景
线条形式 ×4 形式即含义;拓扑规则(横平竖直+R8)全形式通用
实线 = 先后
推荐顺序 · 主线,唯一带站点
虚线 = 相关
内容互参 · 无顺序,无站点
点线 = 同族
同一积木家族(教一块带一族)
波浪带 = 代理交接
agent 边界 · 区域标记,不连线
站点与胶囊 关系上的铆钉——只上先后线
圆点 r6 半嵌卡边:左侧贴描边;右侧骑硬投影外缘(描边会被黑影吞没)。线从卡边/影缘出发。
多线卡口=胶囊:竖向 6×20 端头半圆;并行线间距 4px 不合并;线止于胶囊边界;端头距最外侧线 ≥ 2× 线宽。
票券 状态与指派的载体——完成即打孔
🌐
快速开始
No. 001 · 已完成(打孔)
№01
🔗
全栈基础
No. 005 · 未开始(无孔)
№05
撕线=4:2 点划(与虚线同节奏,语境不同:这是裁剪线不是关系线)。票号=章程序号。

形状 → 语义

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

符号规则

1装饰即语义:散落形状必须有含义,无义不落。
2一横一竖对举:代理区横波(蓝)vs 脱靶竖抖(红)。
3形状不压内容:只在空白,永不压字与卡。
设计系统 · 02 符号形状 · stack idealjs
02 / 04
<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 概念到组件的完整映射。
①
🌐 预期结果 · GIF
快速开始
②
⚛️
React
🔗
全栈基础
+
指派学习 · npm
位置 / 预期 / 场景
+
脱靶提醒
常见脱靶:装了但没跑。脱靶的样子——命令成功、页面空白;此时缺的是"真机验收"这块积木。
代理区:安装交给 agent,只验收产物
价值区:过程就地写清
形状散落于空白,每个都有含义:▲ 靶子 · ● 积木 · ○ 预期 · ~ 代理区 · ▬ 价值区 · ⌇ 脱靶 · + 指派;线:实=先后 · 虚=相关 · 点=同族

概念 → 组件映射

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

组合规则

1撞色在框内:章节色只进 16:9 相框,卡面纸色。
2站点贴边:左贴描边、右骑硬投影外缘;虚线/点线无站点。
3入口徽章 ①②③:推荐起点,非强制。
4形状不压内容:只在空白,密度 ≤ 8/屏。
设计系统 · 04 样例 · stack idealjs
04 / 04