design-director
npx skills add https://github.com/sweetretry/skills --skill design-director
Agent 安装分布
Skill 文档
å¿«éåè (Quick Reference)
| è¦ç´ | è§è |
|---|---|
| æ ¸å¿èè´£ | è¯æé¡¹ç®ç±»å â æ¨è飿 ¼é æ¯ â åºåæ å° â å²çªä»²è£ â æ¥ç¼è®¾è®¡ â 忍¡å¼æ£æµ |
| åç½®ä¾èµ | expressive-style-guide, minimal-style-guide, swiss-style-guide |
| ä¸ frontend-design çå ³ç³» | Director å³å®”ç¨ä»ä¹é£æ ¼”ï¼ä¸æ¸¸ï¼ï¼frontend-design 审楔æ¯å¦æ£ç¡®æ§è¡”ï¼ä¸æ¸¸ï¼ |
| èåä¸é | åä¸é¡¹ç®æå¤ä½¿ç¨ 2 ç§é£æ ¼ï¼1 主 + 1 è¾ ï¼ï¼æç«¯æ åµå¯ 3 ç§ï¼éæç¡®çä¸åºåçç¥ï¼ |
| ä¸»è¾ æ¯ä¾ | 䏻飿 ¼ 70-80% / è¾ é£æ ¼ 20-30% |
| å²çªä»²è£æé | å style guide ç硬约æä¸å¯è¦çï¼è½¯çº¦æå¯å¨å£°ææ¡ä»¶èå´å è°æ´ |
| è²å½©ç©ºé´ | æ··å项ç®ç»ä¸ä½¿ç¨ oklch |
| è·¨åºåéç¨è¿æ¸¡ | duration: 0.3, ease: [0.16, 1, 0.3, 1] (Expo Out) |
深度åèèµæ
卿§è¡è¯æã仲è£åå®¡æ¥æ¶ï¼åè以䏿·±åº¦ææ¡£è·åçè®ºæ¯æå宿½ç»èï¼
- èåç论ä¸å²çªè§£å³ â references/blending-theory.md â 设计æ¹è¨ä¸è¯ç³»ã认ç¥ä¸è´æ§ç论ï¼5 ç§å¿æºæ¨¡å / è®¤ç¥æè£ï¼ãè§è§éé平衡ã屿§åç±»å¦ï¼ç¡¬/软/䏿§çº¦æï¼ãä¼å çº§ä»²è£ 5 æ¡è§åãoklch è²å½©ç©ºé´ç»ä¸çæ°å¦åçä¸ HSL 转æ¢è¡¨
- æ¥ç¼è®¾è®¡ç论 â references/seam-design.md â 建çéé空é´ç论ãäºç§æ¥ç¼çç¥ç设计åç䏿§è½èéä¸å¤±è´¥æ¨¡å¼ãå¼ å-éæ¾æ¨¡åä¸åºååºåç¼æ
- æ¡ä¾åæ â references/case-studies.md â Spotifyï¼Expressive+Swissï¼ãLinearï¼Minimal+Swissï¼ãAppleï¼Expressive+Minimalï¼ä¸ä¸ªçå®äº§åç飿 ¼é æ¯ãåºåçç¥åæ¥ç¼å¤çæè§£
- 宿½æå â references/implementation-guide.md â 项ç®å¯å¨ 6 æ¥æ¸ åãTailwind v4 CSS-First åºåä½ç¨åé ç½®ï¼@theme + @custom-variant + CSS Variablesï¼ãFramer Motion ZoneProvider é ç½®ï¼React Context + 卿忰ï¼ãåèæç®
æ ¸å¿æä»¤ (Core Mandate)
æ¬æè½æ¯ææ¥å®¶ (Conductor)ï¼èéæ¼å¥è ã
è责边çï¼
- Director åä»ä¹ï¼ è¯æé¡¹ç®éæ± â æ¨è飿 ¼é æ¯ â ç»å¶åºåå°å¾ â è£å³å±æ§å²çª â 设计æ¥ç¼è¿æ¸¡ â çæè½¯çº¦æè¦çåæ°
- Director ä¸åä»ä¹ï¼ ä¸çæç»ä»¶ä»£ç ãä¸å®ä¹è§è§è§èã䏿¿ä»£ä¸ä¸ªå ·ä½ style guide çèè´£
æéå±çº§ï¼
WCAG AA æ éç¢è¦æ±ï¼æé«ä¼å
级ï¼
â
å style guide ç硬约æï¼ä¸å¯è¦çï¼
â
Director çå²çªä»²è£è§åï¼è¦ç软约æï¼
â
å style guide ç软约æé»è®¤å¼ï¼æä½ä¼å
级ï¼
ä¸ frontend-design çå
³ç³»ï¼
- Director æ¯ä¸æ¸¸ï¼å³å®æ¯ä¸ªåºååºè¯¥ä½¿ç¨åªç§é£æ ¼ãåªäºè½¯çº¦æéè¦è°æ´
frontend-designæ¯ä¸æ¸¸ï¼å®¡æ¥å®ç°ä»£ç æ¯å¦ç¬¦å Token åè§ãç»ä»¶åºä½¿ç¨ãå¨æè´¨éçææ¯æ å- 两è
ä¸å²çªï¼Director çè¾åºæ¯çç¥ææ¡£ï¼Zone Map + Override Parametersï¼ï¼
frontend-designçè¾å ¥æ¯å®ç°ä»£ç - æ¨è工使µï¼Director å®¡æ¥ â åºåå®ç° â frontend-design 审æ¥
æ ¸å¿ååï¼
- æä¸»å¯¼é£æ ¼ï¼æ¯ä¸ªé¡¹ç®å¿ é¡»ææç¡®ç䏻飿 ¼ï¼70-80%ï¼ï¼è¾ å©é£æ ¼ï¼20-30%ï¼æå¡äºç¹å®åºå/æ 绪
- åºå纯度ï¼å个ç»ä»¶å é¨åªéµå¾ªä¸ç§é£æ ¼ï¼ç»ä¸å¨ç»ä»¶å±é¢æ··å
- ææè¯çåç¨ï¼æ¯ä¸ª”å¼è´¨å ç´ “çå¼å ¥é½å¿ é¡»ææç¡®ççç±ï¼ç¨æ·ä½éªæå / åçè°æ§è¡¨è¾¾ / åè½éæ±ï¼
- ä¸è´çåºç¡è®¾æ½ï¼æ 论使ç¨å ç§é£æ ¼ï¼
oklchè²å½©ç©ºé´ãè¯ä¹ Token åãshadcn/uiç»ä»¶åºæ¯ææåºåå ±äº«çåºåº
ä¸ã项ç®è¯æç©éµ (Project Diagnosis Matrix)
è¯æè¾å ¥ç»´åº¦
åæé¡¹ç®æ¶ï¼ä»ä»¥ä¸äºä¸ªç»´åº¦æ¶éä¿¡æ¯ï¼
| 维度 | é®é¢ | å ¸åé项 |
|---|---|---|
| 项ç®ç±»å | è¿æ¯ä»ä¹äº§åï¼ | SaaS åºç¨ / åçå®ç½ / å å®¹å¹³å° / çµå / ä½åé / æ··åå |
| ç®æ åä¼ | ç¨æ·æ¯è°ï¼ | å¼åè / ä¼ä¸ç¨æ· / æ¶è´¹è / åæäººç¾¤ / æ··å |
| åçè°æ§ | åçæ³ä¼ è¾¾ä»ä¹æè§ï¼ | é«çº§/çµå½±æ / å å¶/ä¸ä¸ / 精确/ç³»ç» / 温æ/亲å / åå«/å®éª |
| ä¿¡æ¯å¯åº¦ | åå±éè¦å±ç¤ºå¤å°ä¿¡æ¯ï¼ | ä½ï¼å 容è±éï¼å¤§å¾å¤§åï¼ / ä¸ï¼å¾ææ··æï¼ / é«ï¼ä»ªè¡¨çï¼è¡¨æ ¼ï¼KPIï¼ |
| 主è¦äº¤äºæ¨¡å¼ | ç¨æ·ä¸»è¦å¨åä»ä¹ï¼ | é 读/æµè§ / æ¢ç´¢/åç° / æä½æ°æ®/å®æä»»å¡ / åä½/ç¼è¾ |
è¯æè¾åºï¼é£æ ¼é æ¯æ¨è
| 项ç®ç±»å | åä¼ | è°æ§ | 䏻飿 ¼ | è¾ é£æ ¼ | é æ¯ | çç± |
|---|---|---|---|---|---|---|
| åæä½åé / åçå®ç½ | æ¶è´¹è ãåæäººç¾¤ | é«çº§/çµå½±æ | Expressive | Minimal | 80/20 | å½±é¢çº§ Hero å¸å¼æ³¨æå + å¹²åçå 容é è¯»åº |
| å å®¹ç« / å客 / ç¼è¾å¹³å° | éç¨è¯»è | å å¶/ä¸ä¸ | Minimal | Expressive | 80/20 | æçä¼å çé 读ä½éª + ç¹è²æç« çå½±é¢çº§ Hero |
| SaaS 仪表ç / æ°æ®åæ | ä¼ä¸ç¨æ·ãå¼åè | 精确/ç³»ç» | Swiss | Minimal | 80/20 | ç½æ ¼ç²¾åº¦å¤çæ°æ®å¯éçé¢ + 设置/ææ¡£åºçå¯è¯»æ§ |
| SaaS è¥éç« | æ··å | å å¶/ä¸ä¸ | Minimal | Expressive | 70/30 | æ¸ æ°çè½¬åæµç¨ + å½±é¢çº§ Hero ä¼ è¾¾åçä»·å¼ |
| çµåå¹³å° | æ¶è´¹è | 温æ/亲å | Minimal | Swiss | 70/30 | å¹²åçæµè§ä½éª + 产å对æ¯/è´ç©è½¦çæ°æ®ç²¾åº¦ |
| å ¨æ SaaSï¼è¥é + åºç¨ï¼ | æ··å | æ··å | Swiss 60% (App) | Minimal 30% (Marketing) + Expressive 10% (Hero) | 60/30/10 | ä¸åºåçç¥ï¼æ°æ®åºç¨ + è¥é转å + åçé¦å± |
| é³ä¹ / åªä½åºç¨ | æ¶è´¹è ãåæäººç¾¤ | é«çº§/çµå½±æ | Expressive | Swiss | 80/20 | å½±é¢çº§ææ¾ä½éª + ç»æåçæ²åº/åªä½åº |
| 个人ç½ç« / Landing Page | éç¨ | å å¶/ä¸ä¸ | Minimal | â | 100/0 | 纯æç®å³å¯ï¼æ éæ··å |
| ä¼ä¸ç®¡çç³»ç» | ä¼ä¸ç¨æ· | 精确/ç³»ç» | Swiss | â | 100/0 | 纯ç士飿 ¼å³å¯ï¼æ°æ®å¯éçé¢ä¸éè¦æ··å |
è¯ææé®æ¨¡æ¿
å½ç¨æ·éæ±ä¸æç¡®æ¶ï¼Director åºä¾æ¬¡ç¡®è®¤ï¼
- “è¿ä¸ªé¡¹ç®çæ ¸å¿ç¨éæ¯ä»ä¹ï¼ï¼å±ç¤ºåç / é 读å 容 / æä½æ°æ® / æ··ååè½ï¼”
- “ç®æ ç¨æ·æ´ååæ¶è´¹è è¿æ¯ä¸ä¸ç¨æ·/ä¼ä¸ç¨æ·ï¼”
- “ä½ å¸ææ´ä½æè§æ¯æ²æµ¸/çµå½±æãå¹²å/å å¶ãè¿æ¯ç²¾ç¡®/é«æï¼”
- “项ç®ä¸æ¯å¦åå¨ä¿¡æ¯å¯åº¦å·®å¼å¾å¤§çä¸ååºåï¼ï¼å¦è¥éé¦é¡µ vs. æ°æ®ä»ªè¡¨çï¼”
äºãåºåçç¥ (Zone Strategy)
åºåç²åº¦åå
æ ¸å¿è®¤ç¥ï¼é£æ ¼çåç线åºè¯¥å¯¹é½ç¨æ·å¿æºçä¸ä¸æåæ¢ã ç¨æ·å¨ç¹å»å¯¼èªã忢 Tabãéè¿ç»å½å¢æ¶ï¼èªç¶é¢æç¯å¢ååãå¨å䏿»å¨æµä¸çªç¶åæ¢è§è§è¯è¨åä¼é æè®¤ç¥æè£ã
åºå (Zone) çé»è®¤ç²åº¦æ¯è·¯ç± / é¡µé¢ / ç¬ç«è§å¾ï¼èéåä¸é¡µé¢å ç Sectionã
| ç²åº¦å±çº§ | 说æ | å ¸ååºæ¯ | é¢ç |
|---|---|---|---|
| è·¯ç±çº§ï¼é»è®¤ï¼ | ä¸å URL / è·¯ç±ä½¿ç¨ä¸å飿 ¼ | è¥éç« (Minimal) vs. åºç¨ Dashboard (Swiss) | æå¸¸è§ |
| è§å¾çº§ | åä¸è·¯ç±å éè¿ Tab / ä¾§è¾¹æ 忢ä¸åè§å¾ | Spotify: Now Playing (Expressive) â Library (Swiss) | å¸¸è§ |
| å¸å±çº§ | åä¸è§å¾å çæä¹ ååºï¼å¦ Sidebar + Mainï¼ | åºç¨ Shell: Swiss Sidebar + Minimal Content Area | å¶å° |
| Section 级 | åä¸é¡µé¢æ»å¨æµä¸çä¸å Section | å页 Landing: Expressive Hero â Minimal Features | ç½è§ï¼éè¦å åçç± |
Section 级混åçä½¿ç¨æ¡ä»¶ï¼å¿ é¡»åæ¶æ»¡è¶³ï¼ï¼
- 项ç®ç¡®å®åªæä¸ä¸ªé¡µé¢ï¼å¦ Single-Page Landingï¼
- è¾ é£æ ¼ Section æç¬ç«çåè½ç®æ ï¼å¦ Hero éè¦å½±é¢å²å»åï¼Feature åºéè¦æ¸ æ°é 读ï¼
- è¾ é£æ ¼ Section ä¸è¶ è¿ 2 个ï¼ä¸ææç¡®çæ¥ç¼è®¾è®¡
åºååç±»æ³
| åºåç±»å | æè¿° | æ¨è飿 ¼ | å ¸åç²åº¦ |
|---|---|---|---|
| è¥éç« / Landing Page | åçä¼ è¾¾ã转åå¼å¯¼ | Minimal æ Expressive | è·¯ç±çº§ |
| åºç¨ Dashboard | KPIãè¡¨æ ¼ãå¾è¡¨ãæ°æ®æä½ | Swiss | è·¯ç±çº§ï¼ç»å½å¢åéï¼ |
| ææ¡£ / å客 / æç« | é¿æé 读ãç¥è¯åº | Minimal | è·¯ç±çº§ |
| åªä½ææ¾ / æ²æµ¸ä½éª | å ¨å±ææ¾å¨ãèæå±è§ | Expressive | è§å¾çº§ï¼Tab åæ¢ï¼ |
| 设置 / 表å | é ç½®é¢æ¿ãè´¦æ·ç®¡ç | Swiss æ Minimal | è·¯ç±çº§ |
| Navigation / Header | æä¹ æ§å ¨å±å¯¼èª | è·é项ç®ä¸»é£æ ¼ | å ¨å± |
| Footer | 页èä¿¡æ¯ | è·é项ç®ä¸»é£æ ¼ | å ¨å± |
| Modal / Dialog | æµ®å±è¦ç | è·é触ååºåç飿 ¼ | ç»§æ¿ |
| Sidebar / Tool Panel | ä¾§è¾¹å·¥å ·æ | Swiss | å¸å±çº§ |
åºåæ å°è§å
è§å 1ï¼åç»ä»¶å飿 ¼
ä¸ä¸ªç»ä»¶ï¼CardãButtonãInput çï¼å é¨åªéµå¾ªä¸ç§é£æ ¼ãç¦æ¢å¨åä¸ä¸ª Card 䏿··ç¨ Expressive çåè§ + Swiss ç Mono å¤§åæ ç¾ã
è§å 2ï¼åç»ä»¶ç»§æ¿
åç»ä»¶é»è®¤ç»§æ¿ç¶åºåç飿 ¼ã妿éè¦å¨æä¸ªåºåå åµå ¥ä¸å飿 ¼ç忍¡åï¼å¦ Minimal æç« 页ä¸åµå ¥ä¸ä¸ª Swiss æ°æ®å¯¹æ¯è¡¨ï¼ï¼å¿ 须使ç¨å å®¹æ¢æ¡ (Content Wrapper) æ¥ç¼çç¥ï¼è¯¦è§ç¬¬åç« ï¼ã
è§å 3ï¼å ¨å±å ç´ è·é䏻飿 ¼
å ¨å±å¯¼èªãå ¨å± Toastãå ¨å± Modal è·é项ç®ä¸»é£æ ¼ï¼ä¸å å½åè·¯ç±çåºå飿 ¼èæ¹åã
è§å 4ï¼ä¼å ç¨å¯¼èªåé飿 ¼
ä¸å飿 ¼çåºåä¼å éè¿è·¯ç±åæ¢ãTab 忢ãç»å½å¢ç导èªç»æåéãå䏿»å¨æµå ç飿 ¼åæ¢æ¯æåææ®µï¼ä¸å¿ é¡»æå åçæ¥ç¼è®¾è®¡ã
åºåå°å¾æ¨¡æ¿ (Zone Map Template)
Zone Map åºä»¥é¡¹ç®æ¶æä¸ºç²åº¦ï¼èéå页å¸å±ï¼
项ç®: [项ç®å]
飿 ¼é
æ¯: [䏻飿 ¼] XX% + [è¾
飿 ¼] YY%
è·¯ç±ç»æ:
âââ / (Marketing Landing) â Minimal
â âââ Nav â Minimal
â âââ Hero â Minimal (æçæ¯ä¾æ¨¡å¼)
â âââ Features â Minimal
â âââ Footer â Minimal
â
âââ /app (ç»å½å¢åé) â Swiss
â âââ Sidebar â Swiss
â âââ Dashboard â Swiss
â âââ Settings â Minimal (å
å®¹æ¢æ¡)
â âââ Docs â Minimal (å
å®¹æ¢æ¡)
â
âââ å
±äº«åºç¡:
âââ oklch è²å½©ç©ºé´
âââ ç»ä¸ --primary åçè²
âââ 8pt åºçº¿ç½æ ¼
åºåé´è¿æ¸¡:
- Marketing â App: ç»å½å¢ï¼å¤©ç¶ä¸ä¸æåæ¢ï¼
- Dashboard â Settings: è·¯ç±åæ¢ï¼åä¸ Shell å
ï¼
- Dashboard â Docs: è·¯ç±åæ¢ + å
å®¹æ¢æ¡ï¼Swiss Shell å
裹 Minimal å
容ï¼
ä¸ãèåè§å (Blending Rules)
约æ ID 鿥 (Constraint ID Quick Reference)
æ¯ä¸ª style guide ç Composition Notes ä¸ç约æåæå¯ä¸ IDï¼æ ¼å¼ä¸º [飿 ¼åç¼].[ç±»å][åºå·]ãDirector å¨å²çªä»²è£åå§æ´¾æä»¤ä¸å¼ç¨è¿äº IDã
| åç¼ | 飿 ¼ | 硬约æ (H) | 软约æ (S) |
|---|---|---|---|
| E | Expressive | E.H1 卿弿 · E.H2 æè²ç»å¸ · E.H3 Token å · E.H4 å 容å³è±é · E.H5 对æ¯åº¦ | E.S1 åè§ Â· E.S2 卿æ¶é¿ · E.S3 è²å½©ç©ºé´ · E.S4 æè²èæ¯æåº¦ · E.S5 Bento ç½æ ¼ · E.S6 Stagger · E.S7 è§å·®å¼ºåº¦ |
| M | Minimal | M.H1 Token å · M.H2 oklch · M.H3 åè²ä¸»å¯¼ · M.H4 ä½ç§»â¤10px · M.H5 对æ¯åº¦ · M.H6 OLED å®å ¨æè² | M.S1 åè§ Â· M.S2 çç½ç · M.S3 卿æ¶é¿ · M.S4 åæ³è¡¨é¢ Â· M.S5 Bento ç½æ ¼ · M.S6 Stagger |
| S | Swiss | S.H1 8pt Grid · S.H2 Token å · S.H3 oklch · S.H4 ç¦ç¨æå½± · S.H5 卿<300ms · S.H6 对æ¯åº¦ · S.H7 åè½æ§è²å½© | S.S1 åè§ Â· S.S2 å¤§åæ ç¾ Â· S.S3 ç½æ ¼åæ° Â· S.S4 æè²èæ¯ Â· S.S5 ä¿¡æ¯å¯åº¦ · S.S6 è¾¹æ¡å度 |
H = 硬约æï¼ä¸å¯è¦çï¼èº«ä»½åºçº¿ï¼| S = 软约æï¼å¯ç± Director å¨å£°æèå´å è¦çï¼ å®æ´çº¦æå®ä¹è§å style guide SKILL.md æ«å°¾
## åæç¬è®°ç« è
3.1 屿§å²çªè§£å³ç©éµ (Property Conflict Resolution Matrix)
å½ä¸¤ç§é£æ ¼å¨åä¸é¡¹ç®ä¸å ±åæ¶ï¼ä»¥ä¸å±æ§å¯è½äº§çå²çªãDirector æä»¥ä¸è§åè£å³ï¼
| å²çªå±æ§ | Expressive å¼ | Minimal å¼ | Swiss å¼ | Director è£å³è§å | å ³è约æ |
|---|---|---|---|---|---|
| åè§ | rounded-lg (8px) / rounded-xl (12px) |
rounded-md (6px) / rounded-lg (8px) |
rounded-none (0px)ï¼äº¤äºçåº rounded-sm (2px) |
ååºå使ç¨åèªé£æ ¼çåè§å¼ã åä¸åºåå åè§ç»ä¸ãå ¨å±å ±äº«å ç´ ï¼NavãToastï¼è·é䏻飿 ¼ã | E.S1, M.S1, S.S1 |
| 卿æ¶é¿ | 0.3â1.5sï¼å½±é¢æï¼ | <400msï¼å å¶ï¼ | <300msï¼åè½æ§ï¼ | ååºåéµå¾ªåèªé£æ ¼çæ¶é¿è§èã è·¨åºåè¿æ¸¡å¨ç»ä½¿ç¨ Expo Out éç¨æ²çº¿ï¼æ¶é¿å两侧è¾çè çä¸éã | E.S2, M.S3, S.H5 |
| 卿å²å¦ | Spring Physics + å½±é¢è¿é | Spring Physics + æå å¶ä½ç§» | Expo Out + æ å¼¹æ§ | ååºåéµå¾ªåèªé£æ ¼ç卿å²å¦ã è·¨åºåå¯ä¸å
±äº«æ²çº¿ï¼ease: [0.16, 1, 0.3, 1] (Expo Out)ã |
E.H1, M.H4, S.H5 |
| è²å½©ç©ºé´ | HSL | oklch | oklch | æ··å项ç®ç»ä¸ä½¿ç¨ oklchã Expressive ç HSL å¼å¿ 须转æ¢ä¸º oklch çä»·å¼ï¼è§ 3.2ï¼ã | E.S3, M.H2, S.H3 |
| æè²æ¨¡å¼èæ¯ | hsl(0 0% 2%) è¿çº¯é» |
oklch(0.145 0 0) â #1A1A1A |
oklch(0.145 0 0) â #1A1A1A |
å
¨å±åºåä½¿ç¨ oklch(0.145 0 0)ã Expressive åºå坿åè³ oklch(0.08 0 0) ä½ä¸ºå½±é¢ç»å¸ã |
E.S4, M.H6, S.S4 |
| çç½çç¥ | å 容è±éå¼ï¼ç´§åå´ç»å å®¹ï¼ | æ¡é¢ 40%+ï¼å¼å¸ç©ºé´ï¼ | ç½æ ¼é©±å¨ï¼8pt ç²¾ç¡®ï¼ | ååºåéµå¾ªåèªé£æ ¼ççç½è§èã æ¥ç¼åºåççç½ä½¿ç¨ä¸¤ä¾§ä¸è¾å¤§è ã | M.S2, S.H1 |
| ç½æ ¼ç³»ç» | é对称 Bento | çµæ´» 4-6 å | ä¸¥æ ¼ 12 å 8pt Grid | 妿项ç®ä¸æ Swiss åºåï¼å ¨å±åºçº¿å¯¹é½å° 8ptã Minimal/Expressive åºåå¯ä½¿ç¨èªå·±çç½æ ¼ï¼ä½å宽åé´è·å¿ é¡»æ¯ 8px çåæ°ã | E.S5, M.S5, S.H1, S.S3 |
| æçç³»ç» | Display 5xl-9xl, tracking-tighter | extralight/bold æç«¯åéå¯¹æ¯ | clamp() æµä½, Mono æ°æ®, å¤§åæ ç¾ | ååºå使ç¨åèªé£æ ¼çæçç³»ç»ã å ¨å±å ±äº«çå使ï¼Inter/Geistï¼ä¿æä¸è´ï¼Mono åä½ä» å¨ Swiss åºå使ç¨ã | S.S2 |
| æå½± (Shadow) | éæ©æ§ä½¿ç¨ï¼åå°å æ³½ï¼ | ç¦ç¨ï¼åæ³è¡¨é¢ï¼ | ç¦æ¢ï¼è¾¹æ¡å±çº§ï¼ | å ¨å±é»è®¤æ æå½±ã ä» Expressive åºåå å è®¸ä½¿ç¨æå½±ï¼ä¸å¿ é¡»æå¡äºå å½±åäºã | S.H4, M.S4 |
| ä¿¡æ¯å¯åº¦ | ä½ï¼å 容èç¦ï¼ | ä½-ä¸ï¼æ¸ æ°åº¦ä¼å ï¼ | é«ï¼æ°æ®å¯éï¼ | ä¸¥æ ¼æåºåã Dashboard åºåéµå¾ª Swiss å¯åº¦ï¼Content åºåéµå¾ª Minimal å¯åº¦ï¼Media åºåéµå¾ª Expressive å¯åº¦ã | S.S5 |
| 深度表达 | å å½± + æ¨¡ç³ + éæ©æ§æå½± | æ ï¼å¹³é¢ï¼ | è¾¹æ¡å±çº§ï¼Level 0/1/2ï¼ | ååºåéµå¾ªåèªé£æ ¼ç深度模åã æ¥ç¼å¤ä½¿ç¨æç®åçæ·±åº¦ææ³ï¼é常æ¯çç½æåå²çº¿ï¼ã | S.H4 |
| 强è°è²æ°é | åä¸åçè² | åä¸åçè² | ååè½è²ï¼Action è + Destructive çº¢ï¼ | å
¨å±ç»ä¸ --primary 为åçè²ã Swiss åºåå¯é¢å¤ä½¿ç¨ --destructive 红è²ãå
¶ä»åºåç强è°è²ä¸¥æ ¼éå¶ä¸º --primaryã |
M.H3, S.H7 |
3.2 Token ç»ä¸çç¥ (Token Unification Strategy)
æ··å项ç®ä¸ï¼ææè²å½©å¿ é¡»å¨ CSS Variables å±ä½¿ç¨ oklch è²å½©ç©ºé´å®ä¹ã
æ ¸å¿è§å
- Token æ¯é¡¹ç®åºç¡è®¾æ½ï¼ææ CSS Variablesï¼è®¾è®¡ Tokenï¼å¿
é¡»å®ä¹å¨é¡¹ç®çå
¨å± CSS æä»¶ï¼
app.css/globals.cssï¼ä¸ãç¦æ¢å¨ç»ä»¶çº§ã页é¢çº§æå±é¨ CSS æä»¶ä¸å®ä¹ Tokenï¼åæ¨¡å¼ #12 Token Isolationï¼ - å
¨å±å
±äº« Tokenï¼
--primaryã--destructiveã--foregroundã--muted-foregroundçåç/è¯ä¹ Token 卿æåºåä¸ä¿æåä¸å¼ - åºåå¯å Tokenï¼
--backgroundã--cardã--borderçè¡¨é¢ Token éè¿[data-zone="..."]éæ©å¨å¨å ¨å± CSS æä»¶ä¸å®ç°åºå级è¦ç - è²å½©ç©ºé´ç»ä¸ï¼Expressive 飿 ¼åå§ä½¿ç¨ HSLï¼æ··å项ç®ä¸å¿ 须转æ¢ä¸º oklch
Expressive HSL â oklch 转æ¢åè
| åå§ HSL | oklch çä»·å¼ | ç¨é |
|---|---|---|
hsl(0 0% 2%) |
oklch(0.08 0 0) |
Expressive å½±é¢ç»å¸ |
hsl(0 0% 5%) |
oklch(0.145 0 0) |
éç¨æè²èæ¯ï¼Minimal/Swiss æè²åºåï¼ |
hsl(0 0% 8%) |
oklch(0.205 0 0) |
å¡ç/è¡¨é¢æäº® |
hsl(0 0% 98%) |
oklch(0.985 0 0) |
è¿ç½åæ¯ |
åºåä½ç¨åæºå¶
- 使ç¨
data-zone="expressive"/data-zone="minimal"/data-zone="swiss"HTML 屿§æ è®°åºå - å¨ CSS å±éè¿å±æ§éæ©å¨
[data-zone="..."]è¦çåºåå çè¡¨é¢ Token - Tailwind v4 ä¸éè¿
@themeå@custom-variantå¨ CSS æä»¶ä¸ç´æ¥å®ä¹åºååä½ï¼æ é JS é ç½®æä»¶
å ·ä½ç CSS Variables å®ä¹ãTailwind v4 é ç½®å代ç å®ç°æ¨¡å¼åè§ references/implementation-guide.md
3.3 卿ç»ä¸çç¥ (Motion Unification Strategy)
åºåå 卿ï¼åéµå ¶æ³
æ¯ä¸ªåºåå é¨å®å ¨éµå¾ªæå±é£æ ¼çå¨æç³»ç»ï¼
| 维度 | Expressive åºå | Minimal åºå | Swiss åºå |
|---|---|---|---|
| 交äºå¨æ | Spring Physics (stiffness 280, damping 28) | Spring Physics (stiffness 260, damping 20) | Expo Out, æ å¼¹æ§ |
| æç¤ºæ¶é¿ | å¯è¾¾ 0.8sï¼Director å¯ä» 1.5s éä½ï¼ | <400ms | <300ms |
| å ¥åºä½ç§» | å¯è¾¾ 40px | ä¸¥æ ¼ â¤10px | å 乿 ä½ç§»ï¼â¤4pxï¼ |
| Stagger é´é | 0.08sï¼å¯ç¼©çè³ 0.04-0.06sï¼ | 0.06sï¼å¯ç¼©çè³ 0.03-0.04sï¼ | 0.03s |
| ç¼å¨æ²çº¿ | Spring Physics + Expo Out | Spring Physics + Expo Out | ä» Expo Out |
è·¨åºåè¿æ¸¡ï¼ç»ä¸ Expo Out
å½ç¨æ·ä»ä¸ä¸ªé£æ ¼åºåæ»å¨/导èªå°å¦ä¸ä¸ªé£æ ¼åºåæ¶ï¼è¿æ¸¡å¨ç»ä½¿ç¨ææé£æ ¼å ±äº«çéç¨æ²çº¿ï¼
- æ²çº¿ï¼
ease: [0.16, 1, 0.3, 1](Expo Out) - æ¶é¿ï¼
0.3s - è¿æ¯ä¸ç§é£æ ¼çå¯ä¸å ¬å ±åéââExpo Out å¨ä¸ä¸ª style guide ä¸é½åºç°
å ¨å±å¨æå®å ¨
æ 论使ç¨å ç§é£æ ¼ï¼prefers-reduced-motion å¿
须卿顶å±ç»ä¸å¤ç䏿¬¡ï¼ææåºåç卿忶é级为é¶å¨ç»ãä¸å
许æäºåºåå°éè¿å¨å®å
¨èå
¶ä»åºå忽ç¥ã
å ·ä½ç卿é 置对象ãReact Context æ³¨å ¥æ¨¡å¼å reduced motion å®ç°åè§ references/implementation-guide.md
åãè¿æ¸¡æ¥ç¼ (Transition Seams)
æ¥ç¼å®ä¹
æ¥ç¼ (Seam) æ¯ä¸¤ä¸ªä¸å飿 ¼åºåä¹é´çè¿æ¸¡è®¾è®¡ãæå¥½çæ¥ç¼æ¯ç¨æ·èªå·±é¢æçä¸ä¸æåæ¢ââç¹å»å¯¼èªã忢 Tabãéè¿ç»å½å¢ã
æ¥ç¼çç¥åå±
ååï¼ä¼å 使ç¨ç»ææ§æ¥ç¼ï¼å¯¼èª / è·¯ç±ï¼ï¼å ¶æ¬¡ææ¯è§è§æ§æ¥ç¼ï¼æ¸å / çç½ï¼ã å¦æä½ åç°èªå·±å¨ä¸ä¸ªé¡µé¢ééè¦å¤æçæ¸åå¸å¹è¿æ¸¡ï¼è¿é常æå³çä½ åºè¯¥æä¸¤ä¸ªåºåæå°ä¸åçè·¯ç±ä¸ã
| å±çº§ | æ¥ç¼ç±»å | 说æ | éç¨ç²åº¦ |
|---|---|---|---|
| L1 ç»ææ§ | å¯¼èª / è·¯ç±åæ¢ | ç¹å»é¾æ¥è¿å ¥ä¸å页é¢ï¼æµè§å¨å®æä¸ä¸æåæ¢ | è·¯ç±çº§ï¼æå¸¸ç¨ï¼ |
| L1 ç»ææ§ | Tab / è§å¾åæ¢ | åä¸ Shell å Tab æä¾§è¾¹æ 忢ä¸åå 容颿¿ | è§å¾çº§ |
| L1 ç»ææ§ | ç»å½å¢ / æéå¢ | å ¬å¼é¡µé¢ä¸ææåºç¨ä¹é´ç天ç¶åé | è·¯ç±çº§ |
| L2 å¸å±æ§ | å å®¹æ¢æ¡ (Content Wrapper) | 䏻飿 ¼ Shell å è£¹è¾ é£æ ¼å 容颿¿ | å¸å±çº§ |
| L2 å¸å±æ§ | 硬边ç (Hard Boundary) | 1px åå²çº¿ï¼æ¸ æ°çç»ææ§ååº | å¸å±çº§ / Section 级 |
| L3 è§è§æ§ | çç½ç¼å² (Whitespace Buffer) | 128px+ 空ç½åºåæä¾å¿çæ¢æ¡ç©ºé´ | Section 级ï¼ç½è§ï¼ |
| L3 è§è§æ§ | æ¸åè¿æ¸¡ (Gradient Fade) | 200-400px èæ¯è²æ¸å | Section 级ï¼ç½è§ï¼ |
| L3 è§è§æ§ | å ¨å±æªæ (Full-Screen Break) | 100vw à â¥100vh å®å ¨ç¯å¢åæ¢ | Section çº§ï¼æç½è§ï¼ |
æ¥ç¼æ¨èç©éµ
| 飿 ¼ç»å | æ¨èæ¥ç¼ï¼æä¼å çº§ï¼ | 说æ |
|---|---|---|
| Minimal â Swiss | è·¯ç±åæ¢ > å å®¹æ¢æ¡ > 硬边ç | 两è è§è§å·®å¼å°ï¼è½»éåéå³å¯ |
| Minimal â Expressive | è·¯ç±åæ¢ > Tab 忢 > å ¨å±æªæ | æåº¦å·®å¼å¤§ï¼å°½éç¨å¯¼èªç»æåé |
| Swiss â Expressive | è·¯ç±åæ¢ > Tab 忢 | è§è§å¯¹æ¯æå¤§ï¼å¼ºç建议ç¨å¯¼èªç»æåé |
| åä¸é¡µé¢å åµå ¥è¾ 飿 ¼æ¨¡å | å å®¹æ¢æ¡ | å¦ Minimal æç« 页å åµ Swiss æ°æ®å¯¹æ¯è¡¨ |
æ¥ç¼å¤ç卿è§å
è·¨åºåçè¿æ¸¡å¨æä½¿ç¨éç¨æ²çº¿ï¼duration: 0.3s, ease: [0.16, 1, 0.3, 1] (Expo Out)ã
æ¥ç¼ç建çééç论ä¸è§è§æ§æ¥ç¼ç详ç»è®¾è®¡åæ°åè§ references/seam-design.md
äºã忍¡å¼æ£æµ (Anti-Pattern Detection)
ç¦æ¢æ¨¡å¼æ¸ å
| # | 忍¡å¼åç§° | æè¿° | 为ä»ä¹ç¦æ¢ | ä¿®å¤æ¹æ¡ |
|---|---|---|---|---|
| 1 | Frankenstein Card | å个 Card ç»ä»¶æ··ç¨ 2+ ç§é£æ ¼ç屿§ï¼å¦ rounded-xl + border-2 + font-mono uppercaseï¼ |
åç»ä»¶å çè§è§è¯è¨åè£ï¼ç¨æ·æ æ³å»ºç«ä¸è´çå¿æºæ¨¡å | æ¯ä¸ªç»ä»¶åªéµå¾ªä¸ç§é£æ ¼ï¼å±äºåªä¸ªåºåå°±ç¨åªä¸ªé£æ ¼çå ¨é¨å±æ§ |
| 2 | Motion Clash | Swiss åºåå åºç° Spring Physics å¼¹æ§å¨ç»ï¼æ Expressive åºåå åºç°æ å¼¹æ§ Expo Out å¾®äº¤äº | åä¸åºåå çäº¤äºæåä¸ä¸è´ | åºåå çå¨æä¸¥æ ¼éµå¾ªè¯¥åºå飿 ¼çå¨æç³»ç» |
| 3 | Radius Soup | åä¸ä¸ªåºå/Section å åºç°å¤ç§åè§å¼ï¼0pxã6pxã12px åæ¶åå¨ï¼ | è§è§ç§©åºæ··ä¹± | åä¸åºåå åè§ç»ä¸ä¸ºè¯¥é£æ ¼çè§èå¼ |
| 4 | Color Space Split | é¨å CSS Variables ä½¿ç¨ HSLï¼å¦ä¸é¨åä½¿ç¨ oklch | è²å½©è®¡ç®ä¸ä¸è´ï¼æ··å/æå¼ç»æä¸å¯é¢æµ | å ¨é¨ç»ä¸ä¸º oklch |
| 5 | Shadow Leak | æå½± (box-shadow) åºç°å¨ Swiss æ Minimal åºåå | è¿å Swiss çè¾¹æ¡æ·±åº¦æ¨¡åå Minimal çåæ³è¡¨é¢åå | ç§»é¤æå½±ï¼Swiss ç¨è¾¹æ¡å±çº§è¡¨è¾¾æ·±åº¦ï¼Minimal ç¨çç½ |
| 6 | Typography Contamination | Swiss ç Mono å¤§åæ ç¾åºç°å¨ Minimal å 容åºåï¼æ Expressive çè¶ å¤§åå·åºç°å¨ Swiss 仪表ç | ç ´åé 读æµç¨ææ°æ®å¯åº¦ | æçä¸¥æ ¼è·éåºå飿 ¼ |
| 7 | Density Mismatch | Swiss 级å«çä¿¡æ¯å¯åº¦ï¼4 å KPI ç½æ ¼ï¼åºç°å¨ Expressive åºåå | Expressive è¦æ±ä½å¯åº¦åå½±é¢ç©ºé´æï¼é«å¯åº¦æ°æ®ç ´ååäº | é«å¯åº¦å å®¹ç§»å ¥ Swiss åºå |
| 8 | Three-Style Chaos | 䏤飿 ¼é¡¹ç®ä¸ç¬¬ä¸ç§é£æ ¼çå æ¯è¶ è¿ 10% | ç¨éä¸»æ¬¡é£æ ¼èº«ä»½ï¼è§è§è¯è¨ç¢çå | ä¸¥æ ¼æ§å¶ç¬¬ä¸é£æ ¼ç¨éï¼å¦æç¡®å®éè¦ä¸ç§ï¼ä½¿ç¨æç¡®çä¸åºåçç¥ |
| 9 | No Primary | 两ç§é£æ ¼ 50/50 å¹³åï¼æ²¡ææç¡®ç主次 | ç¨æ·æ æ³å»ºç«ç»ä¸çåç/产åè®¤ç¥ | å¿ é¡»å»ºç« 70/30 æ 80/20 ç主次å±çº§ |
| 10 | Seam-less Transition | 两ç§é£æ ¼çåºåç´æ¥ç¸é»ï¼æ²¡æä»»ä½æ¥ç¼è®¾è®¡ | çªå çè§è§æè£ï¼è®¤ç¥å²å» | 使ç¨ç¬¬åç« å®ä¹çæ¥ç¼çç¥ |
| 11 | Token Drift | ä¸ååºåç --primary åçè²å¼ä¸ä¸è´ |
åçè¯å«ç¢çå | --primary å
¨å±å¯ä¸ä¸è´ |
| 12 | Token Isolation | CSS Variablesï¼è®¾è®¡ Tokenï¼å®ä¹å¨ç»ä»¶çº§ã页é¢çº§æå±é¨ CSS æä»¶ä¸ï¼èé项ç®å ¨å± CSS | Token ç³»ç»æ¯é¡¹ç®åºç¡è®¾æ½ï¼ä¸æ¯é¡µé¢çç§æç¶æãå±é¨å®ä¹å¯¼è´ Token ç¢çåãè¦çå²çªãæ æ³å ¨å±åæ¢æè²æ¨¡å¼ | ææ Token å®ä¹å¿
é¡»å¨é¡¹ç®å
¨å± CSS æä»¶ï¼app.css / globals.cssï¼ä¸ï¼éè¿ @theme + :root + [data-zone] ç»ä¸ç®¡ç |
| 13 | Single-Page Patchwork | å¨åä¸é¡µé¢çæ»å¨æµä¸å å 3+ ç§ä¸å飿 ¼ç Sectionï¼ç¨å¤æçè§è§æ¥ç¼ï¼æ¸åå¸å¹ãsticky è¿æ¸¡ï¼æ¼æ¥ | çå®äº§åå ä¹ä¸ä¼å¨å䏿»å¨æµä¸æ··åå¤ç§é£æ ¼ãç¨æ·å¨æ»å¨ä¸ä¸é¢æè§è§è¯è¨çªåï¼å¤æçå页æ¥ç¼å®ç°å®¹æåæ hack | å°ä¸å飿 ¼çåºåæå°ä¸åè·¯ç±/è§å¾ä¸ï¼ç¨å¯¼èªç»æï¼è·¯ç±åæ¢ãTabãç»å½å¢ï¼å¤©ç¶åé |
æ£æµæ¹æ³
Director å¯éè¿ä»¥ä¸æ¹å¼æ£æµå模å¼ï¼
1. Radius Soup â æç´¢åä¸ Section å
çææ rounded-* ç±»ï¼æ£æ¥æ¯å¦å¤äºä¸ç§
2. Color Space Split â æç´¢ CSS æä»¶ä¸ç hsl() å oklch() å
±å
3. Shadow Leak â æç´¢ data-zone="swiss" æ data-zone="minimal" åºåå
ç shadow-* ç±»
4. Typography Contamination â æç´¢ data-zone="minimal" å
ç font-mono å uppercase
5. Token Drift â æ¯è¾ä¸ååºåç --primary 弿¯å¦ä¸è´
6. Token Isolation â æç´¢ç»ä»¶/页é¢ç®å½ä¸ç .css æä»¶æ¯å¦å
å« --background / --foreground ç Token å®ä¹
7. Single-Page Patchwork â æ£æ¥å个 page.tsx æ¯å¦å
å« 3+ 个ä¸å data-zone ç ZoneProvider
å ãåæé æ¹ (Composition Templates)
以ä¸é æ¹å以路ç±/è§å¾ä¸ºåºåç²åº¦ãæ³¨ææ¯ä¸ªé æ¹ä¸é£æ ¼åæ¢æ¯éè¿å¯¼èªç»æï¼è·¯ç±ãTabãç»å½å¢ï¼å®ç°çï¼èéåä¸é¡µé¢å çæ»å¨æµæ¥ç¼ã
é æ¹ 1ï¼SaaS å ¨æ ï¼è¥é + åºç¨ï¼â æå¸¸è§
飿 ¼é
æ¯: Swiss 60% (App) + Minimal 30% (Marketing) + Expressive 10% (Hero)
åéæ¹å¼: ç»å½å¢ï¼Marketing â Appï¼
è·¯ç±ç»æ:
âââ / (Marketing) â Minimal
â âââ Nav, Features, Pricing, Footer â Minimal
â âââ Hero Section â Expressive (å¯ä¸ç Section 级混åï¼å
¨å±å½±é¢é¦å±)
â
âââ /app (ç»å½å¢åé) â Swiss
â âââ App Shell (Sidebar + Header) â Swiss
â âââ /app/dashboard â Swiss
â âââ /app/analytics â Swiss
â âââ /app/settings â Minimal (å
å®¹æ¢æ¡: Swiss Shell å
裹 Minimal å
容颿¿)
â âââ /app/docs â Minimal (å
å®¹æ¢æ¡: Swiss Shell å
裹 Minimal å
容颿¿)
â
âââ å
±äº«åºç¡: oklch · --primary åçè² Â· 8pt åºçº¿ · Inter å使
åºåé´è¿æ¸¡:
- Marketing â App: ç»å½å¢ï¼å¤©ç¶ä¸ä¸æåæ¢ï¼æ éè§è§æ¥ç¼ï¼
- Dashboard â Settings: è·¯ç±åæ¢ï¼Shell ä¸åï¼å
容颿¿åæ¢é£æ ¼ï¼
- Marketing Hero â Features: å页å¯ä¸çè§è§æ¥ç¼ï¼æ¸åè¿æ¸¡ 200pxï¼
é æ¹ 2ï¼åæä½åé
飿 ¼é
æ¯: Expressive 80% + Minimal 20%
åéæ¹å¼: è·¯ç±åæ¢
è·¯ç±ç»æ:
âââ / (Home) â Expressive
â âââ Nav â Expressive (éæè¦ç)
â âââ Hero Reel â Expressive (å
¨å±å½±é¢)
â âââ Project Gallery â Expressive (Bento)
â
âââ /about â Minimal
â âââ Bio, Philosophy, Contact â Minimal (æçæ¯ä¾æ¨¡å¼)
â
âââ /project/:id â Expressive
â âââ 项ç®è¯¦æ
â Expressive (å½±é¢çº§æ¡ä¾å±ç¤º)
â
âââ å
±äº«åºç¡: oklch · --primary · Expressive åè§ 8-12px / Minimal 8px
åºåé´è¿æ¸¡:
- Home â About: è·¯ç±åæ¢ï¼æâ亮çä¸ä¸æåæ¢èªç¶åçï¼
- Home â Project: è·¯ç±åæ¢ï¼æâæï¼å飿 ¼æ 鿥ç¼ï¼
Director è¦ç:
- E.S3 è²å½©ç©ºé´ â oklchï¼ä» HSL 转æ¢ï¼
- M.S2 çç½çç»´æ 40%+
é æ¹ 3ï¼ç¼è¾ / å客平å°
飿 ¼é
æ¯: Minimal 80% + Expressive 20%
åéæ¹å¼: è·¯ç±åæ¢
è·¯ç±ç»æ:
âââ / (Home) â Minimal
â âââ Nav â Minimal
â âââ Featured Article Banner â Expressive (å¯ä¸ç Section 级混å)
â âââ Article Grid â Minimal (Bento ç½æ ¼)
â
âââ /article/:id â Minimal
â âââ Article Body â Minimal (æçæ¯ä¾ + åå²çº¿)
â
âââ /featured/:id â Expressive (ç¹è²é¿æçå½±é¢çº§é
读ä½éª)
â âââ å
¨å±å°é¢ + æ²æµ¸é
读 â Expressive
â
âââ å
±äº«åºç¡: oklch · --primary · Inter
åºåé´è¿æ¸¡:
- Home â Article: è·¯ç±åæ¢ï¼å飿 ¼ Minimalï¼
- Home â Featured: è·¯ç±åæ¢ï¼Minimal â Expressiveï¼äº®âæåæ¢èªç¶åçï¼
Director è¦ç:
- E.S2 卿æ¶é¿ä¸ééè³ 0.8sï¼å¹é
Minimal æ´ä½èå¥ï¼
- E.S4 æè²èæ¯ oklch(0.08 0 0)
é æ¹ 4ï¼çµåå¹³å°
飿 ¼é
æ¯: Minimal 70% + Swiss 30%
åéæ¹å¼: è·¯ç±åæ¢ + å
å®¹æ¢æ¡
è·¯ç±ç»æ:
âââ / (Home) â Minimal
â âââ Nav (å«æç´¢) â Minimal
â âââ Hero Banner â Minimal
â âââ Product Grid â Minimal (Bento)
â
âââ /product/:id â Minimal
â âââ 产åä»ç»ãå¾ç â Minimal
â âââ Specs / Compare è¡¨æ ¼ â Swiss (å
å®¹æ¢æ¡: Minimal 页é¢å
åµ Swiss å¯¹æ¯æ¨¡å)
â
âââ /cart â Swiss
â âââ è´ç©è½¦ãç»ç®æµç¨ â Swiss (æ°æ®ç²¾åº¦ + åè½æ§æä½)
â
âââ å
±äº«åºç¡: oklch · --primary · 8pt åºçº¿
åºåé´è¿æ¸¡:
- Product â Cart: è·¯ç±åæ¢
- Product ä»ç» â Specs è¡¨æ ¼: å
å®¹æ¢æ¡ï¼Swiss è¡¨æ ¼ææç¡®è¾¹æ¡å®¹å¨ï¼
Director è¦ç:
- S.S1 åè§æ¾å®½è³ 6pxï¼å¹é
Minimal æ´ä½æåæï¼
- S.S6 è¾¹æ¡å度ç»ä¸ä¸º 1px
- M.S5 Bento ç½æ ¼å¯¹é½å° 8pt åºçº¿
é æ¹ 5ï¼é³ä¹ / åªä½åºç¨
飿 ¼é
æ¯: Expressive 80% + Swiss 20%
åéæ¹å¼: Tab / è§å¾åæ¢ï¼åä¸ Shell å
ï¼
è·¯ç±ç»æ:
âââ App Shell â Expressive (æè²å
¨å± Shell + Mini Sidebar)
â âââ Now Playing (è§å¾) â Expressive (å
¨å±å½±é¢, Spotlight + æ°å´æ¸å)
â âââ Library (è§å¾) â Swiss (Data Grid + é«å¯åº¦æ²ç®å表)
â âââ Search (è§å¾) â Swiss (æç´¢ç»æè¡¨æ ¼)
â âââ Playlist (è§å¾) â Expressive (ææ¾å表æ°å´)
â
âââ å
±äº«åºç¡: oklch · --primary · æè²ç»ä¸åºè°
åºåé´è¿æ¸¡:
- Now Playing â Library: Tab/ä¾§è¾¹æ 忢ï¼ä¸å¨å䏿»å¨æµä¸ï¼
- Library â Search: Tab 忢ï¼å飿 ¼ Swissï¼
- ææè§å¾åæ¢ä½¿ç¨ Expo Out éç¨è¿æ¸¡å¨ç»
Director è¦ç:
- S.S4 Swiss æè²èæ¯æåè³ oklch(0.12 0 0)ï¼ä¸ Expressive æè²è°åè°ï¼
- S.S1 Swiss åè§ç»´æ 0pxï¼æè²ç¯å¢ä¸ç´è§æ´æ¾ç²¾å¯ï¼
ä¸ãDirector å®¡æ¥æ¸ å (The Director Audit)
飿 ¼é æ¯
- 主次æç¡® â é¡¹ç®æ¯å¦å®ä¹äºä¸»é£æ ¼ï¼70-80%ï¼åè¾ é£æ ¼ï¼20-30%ï¼ï¼æ¯å¦åå¨ 50/50 æ 主次æ åµï¼
- é æ¯åç â 飿 ¼éæ©æ¯å¦ä¸é¡¹ç®ç±»åãåä¼ãåçè°æ§å¹é ï¼åç §ç¬¬ä¸ç« è¯æç©éµï¼ï¼
- 飿 ¼æ°é â æ¯å¦è¶ è¿ 2 ç§é£æ ¼ï¼é¤éä½¿ç¨æç¡®çä¸åºåçç¥ï¼ï¼
åºå纯度
- Zone Map åå¨ â æ¯å¦ä¸ºé¡¹ç®ç»å¶äºåºåå°å¾ï¼æç¡®æ¯ä¸ªåºåç飿 ¼å½å±ï¼
- åç»ä»¶å飿 ¼ â æ¯å¦æç»ä»¶å 鍿··ç¨ä¸¤ç§é£æ ¼å±æ§ï¼Frankenstein Cardï¼ï¼
- åè§ä¸è´ â åä¸åºåå
ç
rounded-*弿¯å¦ç»ä¸ï¼ - 卿ä¸è´ â åä¸åºåå ç卿æ¯å¦éµå¾ªè¯¥åºå飿 ¼çç³»ç»ï¼
- æçä¸è´ â åä¸åºåå çæçç³»ç»æ¯å¦éµå¾ªè¯¥åºå飿 ¼ï¼å¦ Mono 䏿³æ¼å° Minimal åºåï¼ï¼
Token ç»ä¸
- è²å½©ç©ºé´ç»ä¸ â ææ CSS Variables æ¯å¦ç»ä¸ä½¿ç¨ oklchï¼æ¯å¦åå¨ HSL/oklch æ··ç¨ï¼
- åçè²ä¸è´ â
--primaryåçè²æ¯å¦å ¨å±ä¸è´ï¼ - æè²æ¨¡å¼ç»ä¸ â å
¨å±æè²åºåæ¯å¦ä¸º
oklch(0.145 0 0)ï¼Expressive åºåçæå弿¯å¦å¨åè§èå´å ï¼ - Token ä½¿ç¨ â ç»ä»¶å±æ¯å¦å
¨é¨ä½¿ç¨è¯ä¹ Tokenï¼
bg-backgroundçï¼ï¼ç¦æ¢ç¡¬ç¼ç Hexï¼
æ¥ç¼è´¨é
- æ¥ç¼åå¨ â ææä¸å飿 ¼åºåä¹é´æ¯å¦ææç¡®çæ¥ç¼è®¾è®¡ï¼
- æ¥ç¼ç±»ååé â 使ç¨çæ¥ç¼çç¥æ¯å¦ä¸é£æ ¼ç»åå¹é ï¼åç §ç¬¬åç« æ¨èç©éµï¼ï¼
- æ¥ç¼å¨æ â è·¨åºåè¿æ¸¡å¨ææ¯å¦ä½¿ç¨ Expo Out éç¨æ²çº¿ï¼
- æ¥ç¼çç½ â æ¥ç¼ä¸¤ä¾§ççç½æ¯å¦å¤§äºåºåå 鍿 åçç½ï¼
忍¡å¼æ«æ
- æ Frankenstein Card â åç»ä»¶ä¸æ··ç¨å¤é£æ ¼å±æ§
- æ Motion Clash â åºåå å¨æç³»ç»ä¸è´
- æ Radius Soup â åºåå åè§ç»ä¸
- æ Color Space Split â å ¨å± oklch ç»ä¸
- æ Shadow Leak â æå½±ä» é Expressive åºå
- æ Typography Contamination â æçä¸è·¨åºå污æ
- æ Density Mismatch â ä¿¡æ¯å¯åº¦å¹é åºå飿 ¼
- æ Token Drift â
--primaryå ¨å±ä¸è´
æ éç¢
- 对æ¯åº¦ â ææææ¬ WCAG AA (â¥4.5:1)ï¼å°¤å ¶æ¯ Expressive æè²åºåçæµ è²æå
- è¿å¨å®å
¨ â
prefers-reduced-motionæ¯å¦å¨å ¨å±é¡¶å±ç»ä¸å¤çï¼ - OLED å®å ¨ â æè²æ¨¡å¼æ¯å¦é¿å 纯é»ï¼ä½¿ç¨ oklch(0.145 0 0) ææ´äº®ï¼ï¼
å «ãSkill å ³èä¸å§æ´¾æ¨¡å (Skill Delegation Model)
å ³èç Style Guide Skills
æ¬æè½å¨çç¥å±ç¼æä»¥ä¸ä¸ä¸ªå®ç°å± skillãå½éè¦ä¸ºæä¸ªåºåçæå ·ä½çç»ä»¶ä»£ç æå®¡æ¥å®ç°æ¶ï¼å¿ 须姿´¾ç»å¯¹åºç style guide skillï¼
| åºå飿 ¼ | å§æ´¾ç®æ Skill | 该 Skill çèè´£ | 约æ ID åç¼ | Composition Notes ä½ç½® |
|---|---|---|---|---|
| Expressive åºå | expressive-style-guide |
å½±é¢çº§è´¨æ UI çç»ä»¶å®ç°ãè§è§æ¨¡å¼éæ©ãå¨æç¼æ | E.H* / E.S* |
该 SKILL.md æ«å°¾ ## åæç¬è®° ç« è |
| Minimal åºå | minimal-style-guide |
æç®ä¸»ä¹ UI çç»ä»¶å®ç°ãåæ³è¡¨é¢ãæçç³»ç» | M.H* / M.S* |
该 SKILL.md æ«å°¾ ## åæç¬è®° ç« è |
| Swiss åºå | swiss-style-guide |
Neo-Swiss UI çç»ä»¶å®ç°ãç½æ ¼ç³»ç»ãæ°æ®å¯éå¸å± | S.H* / S.S* |
该 SKILL.md æ«å°¾ ## åæç¬è®° ç« è |
审æ¥é
åï¼ å®ç°å®æåï¼å¯ä½¿ç¨ frontend-design skill 审æ¥ä»£ç å±é¢ç Token åè§ãç»ä»¶åºä½¿ç¨åå¨æè´¨éã
Director 工使µ
强å¶è§åï¼å¨å®æé¶æ®µ [1]â[3] å¹¶è¾åºå®æ´çç¥ææ¡£ä¹åï¼ç¦æ¢ç¼åä»»ä½ç»ä»¶ä»£ç æé¡µé¢å¸å±ä»£ç ã è·³è¿è¯æç´æ¥å代ç ä¼å¯¼è´ä¿¡æ¯æ¶ææ··ä¹±ãæ¥ç¼ hackãToken ç¢çåçé®é¢ã
ç¨æ·æè¿°é¡¹ç®éæ±
â
[1] è¯æé¶æ®µ â è¿è¡é¡¹ç®è¯æç©éµï¼ç¬¬ä¸ç« ï¼
â å¿
é¡»è¾åºï¼æ¨è主è¾
飿 ¼ + é
æ¯ + ç®è¦çç±
â
[2] åºåæ å°é¶æ®µ â å®ä¹åºåçç¥ï¼ç¬¬äºç« ï¼
â å¿
é¡»è¾åºï¼Zone Mapï¼ASCII å¾ï¼ï¼æ 注æ¯ä¸ªåºåç飿 ¼å½å±åæ¥ç¼ç±»å
â
[3] å§æ´¾æä»¤é¶æ®µ â 为æ¯ä¸ªåºåçæå®æ´çå§æ´¾æä»¤
â å¿
é¡»è¾åºï¼æ¯ä¸ªåºåç软约æè¦çåæ°ï¼å¼ç¨çº¦æ IDï¼+ æ¥ç¼çç¥
â
ââ CHECKPOINT ââââââââââââââââââââââââââââââââââââââââââ
以ä¸ä¸ä¸ªé¶æ®µçè¾åºææãçç¥ææ¡£ãã
å¨çç¥ææ¡£å®æä¹åï¼ä¸å¾è¿å
¥ä¸ä¸é¶æ®µã
çç¥ææ¡£å¿
é¡»å
å«ï¼
â 飿 ¼é
æ¯ï¼å«ç¾åæ¯ï¼
â 宿´ Zone Mapï¼è·¯ç±ç»æå¾ï¼æ 注æ¯ä¸ªè·¯ç±/è§å¾ç飿 ¼å½å±ï¼
â åéæ¹å¼ï¼è·¯ç±åæ¢ / Tab 忢 / ç»å½å¢ï¼èéå页æ»å¨æµæ¥ç¼ï¼
â æ¯ä¸ªåºåçå§æ´¾æä»¤ï¼å«çº¦æ ID å¼ç¨ï¼
â æ¯æ¡è¿æ¸¡çç±»åï¼ä¼å
ç»ææ§æ¥ç¼ï¼å¿
è¦æ¶æç¨è§è§æ§æ¥ç¼ï¼
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â
[4] åºç¡è®¾æ½é¶æ®µ â é
置项ç®çº§ Token ååºååä½
â å¨é¡¹ç®å
¨å± CSS æä»¶ï¼app.css / globals.cssï¼ä¸å®ä¹ï¼
· @theme 注åè¯ä¹è²å½© Token
· @custom-variant 注ååºååä½
· :root å [data-zone="..."] ç CSS Variables
â ç¦æ¢å¨ç»ä»¶çº§æé¡µé¢çº§æä»¶ä¸å®ä¹ Tokenï¼åæ¨¡å¼ #12 Token Isolationï¼
â
[5] åºåå®ç°é¶æ®µ â æåºåéä¸å§æ´¾ç»å
·ä½ style guide skill
â æ¯ä¸ªåºåä¸¥æ ¼éµå¾ªé¶æ®µ [3] çå§æ´¾æä»¤
â æ¥ç¼ç»ä»¶æé¶æ®µ [2] çæ æ³¨å®ç°
â
[6] 审æ¥é¶æ®µ â è¿è¡ Director å®¡æ¥æ¸
åï¼ç¬¬ä¸ç« ï¼
â éåå¯è¿è¡ frontend-design è¿è¡ææ¯åè§å®¡æ¥
å§æ´¾æä»¤æ ¼å¼
å½ Director å§æ´¾ç»å ·ä½ style guide skill æ¶ï¼ä½¿ç¨ä»¥ä¸æ ¼å¼ä¼ éä¸ä¸æï¼
åºå: [åºååç§°ï¼å¦ Hero / Dashboard / Content Body]
å§æ´¾ Skill: [expressive-style-guide / minimal-style-guide / swiss-style-guide]
软约æè¦çï¼å¼ç¨çº¦æ IDï¼å¨å£°æçå¯è°èå´å
ï¼:
- [ID] [屿§]: [è°æ´åçå¼] â åå : [为ä»ä¹è°æ´]
- [ID] [屿§]: [è°æ´åçå¼] â åå : [为ä»ä¹è°æ´]
ç¸é»åºåçæ¥ç¼:
- 䏿¹æ¥ç¼: [æ¥ç¼ç±»å]ï¼è¿æ¥ [䏿¹åºå飿 ¼]
- 䏿¹æ¥ç¼: [æ¥ç¼ç±»å]ï¼è¿æ¥ [䏿¹åºå飿 ¼]
ç¤ºä¾ â çå±å¹³å° Exhibition è·¯ç±çå§æ´¾æä»¤ï¼
åºå: /exhibition/:id (èæå±è§æ²æµ¸ä½éª)
å§æ´¾ Skill: expressive-style-guide
软约æè¦ç:
- E.S3 è²å½©ç©ºé´: oklch â åå : æ··å项ç®ç»ä¸è²å½©ç©ºé´
- E.S4 æè²èæ¯: oklch(0.08 0 0) â åå : å½±é¢ç»å¸
- E.S2 卿æ¶é¿ä¸é: 0.8s â åå : å¹é
é¡¹ç®æ´ä½èå¥
- E.S5 Bento ç½æ ¼: å¯¹é½ 8pt åºçº¿ â åå : 项ç®ä¸å
å« Swiss åºå
ç¸é»åºåçæ¥ç¼:
- ä¸ Bidding 页é¢éè¿è·¯ç±åæ¢åéï¼æ éè§è§æ¥ç¼ï¼
ç¤ºä¾ â 宿´ Zone Map è¾åºï¼çå±å¹³å°ï¼ï¼
项ç®: Galerie â 线ä¸çå±å¹³å°
飿 ¼é
æ¯: Expressive 70% + Swiss 30%
åéæ¹å¼: è·¯ç±åæ¢ + Tab 忢
è·¯ç±ç»æ:
âââ / (Home) â Expressive
â âââ Nav â Expressive (éæè¦ç)
â âââ Hero â Expressive (å
¨å±å½±é¢)
â âââ Exhibition Grid â Expressive (Bento ç»å»)
â
âââ /exhibition/:id â Expressive
â âââ èæå±è§æ²æµ¸æµè§ â Expressive (å
¨å±æè², ä½å大å¾)
â
âââ /auction (Tab: Live Bidding) â Swiss
â âââ Bidding Panel â Swiss (ç«ææ°æ®è¡¨, 宿¶åºä»·)
â âââ Lot Detail â Swiss (è§æ ¼, åºä»·åå²)
â
âââ /collection (Tab: My Collection) â Swiss
â âââ èå管ç â Swiss (æ°æ®è¡¨æ ¼, ç©æµç¶æ)
â
âââ /about â Expressive
â âââ çå±äººä»ç» â Expressive (æç + å½±é¢çº§äººå)
â
âââ å
±äº«åºç¡: oklch · --primary · æè²å
¨å±åºè°
åºåé´è¿æ¸¡:
- Exhibition â Auction: Tab 忢ï¼Expressive æ â Swiss æ, Expo Out è¿æ¸¡ï¼
- Home â Exhibition: è·¯ç±åæ¢ï¼å飿 ¼ Expressiveï¼
- ææ Swiss åºåæè²èæ¯ç»ä¸ä¸º oklch(0.12 0 0)
è责边ç
- Director åä»ä¹ï¼ è¯æéæ± â æ¨èé æ¯ â ç»å¶ Zone Map â è£å³å±æ§å²çª â 设计æ¥ç¼ â çæè¦çåæ° â 审æ¥åºå纯度
- Director ä¸åä»ä¹ï¼ ä¸çæç»ä»¶ä»£ç ãä¸å®ä¹è§è§è§èç»èã䏿¿ä»£ä¸ä¸ª style guide skill çèè´£
- Director ä¸ç¥éçï¼ å ·ä½ç»ä»¶æä¹åãshadcn/ui ç»ä»¶çå ·ä½æ¹é æ¹å¼ãFramer Motion çå ·ä½å¨ç»ä»£ç ââè¿äºé½ç±è¢«å§æ´¾ç style guide skill è´è´£
- ä¸åå¨å¾ªç¯ä¾èµï¼ Director æ¯ååè°åº¦ä¸æ¸¸ï¼ä¸è¢«å ¶ä» skill ååè°ç¨