asharyu-design-token 2.1.0 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.ko.md CHANGED
@@ -194,14 +194,16 @@ const AsharyuCard = styled.div`
194
194
 
195
195
  **Antigravity**, **Cursor**, **Claude Code**, **GitHub Copilot** 등의 AI 에이전트와 페어 프로그래밍 시 Asharyu 디자인 시스템의 규칙을 자동으로 학습시킬 수 있습니다.
196
196
 
197
- ### 1) Antigravity 사용 시
198
- 프로젝트의 `.agents/skills/asharyu-design-system/` 또는 패키지의 [SKILL.md](file:///e:/withc/Documents/coding/asharyu-design/packages/design-token/SKILL.md)를 통해 에이전트가 오행 원칙과 토큰을 준수하여 코드를 생성합니다.
199
-
200
- ### 2) 프롬프트 가이드 파일 참조
201
- 패키지 내에 내장된 프롬프트 가이드를 직접 참조할 수 있습니다:
202
- ```
203
- node_modules/asharyu-design-token/SKILL.md
204
- ```
197
+ ### 1) Antigravity 스킬 및 규칙 연동
198
+ 패키지에 동봉된 에이전트 스킬과 룰을 프로젝트의 `.agents/` 디렉터리에 복사하거나 직접 참조할 수 있습니다:
199
+ - **포터블 스킬 번들**: `node_modules/asharyu-design-token/asharyu-design-system.skill` (IDE 스킬 임포트용)
200
+ - **에이전트 스킬 디렉터리**: `node_modules/asharyu-design-token/skills/asharyu-design-system/`
201
+ - **에이전트 룰**: `node_modules/asharyu-design-token/rules/asharyu-design-system.md`
202
+
203
+ ### 2) 프롬프트 가이드 및 참조 문서 직접 참조
204
+ - 메인 스킬: `node_modules/asharyu-design-token/SKILL.md`
205
+ - 토큰 사전: `node_modules/asharyu-design-token/references/tokens.md`
206
+ - 컴포넌트 템플릿: `node_modules/asharyu-design-token/references/components.md`
205
207
 
206
208
  ---
207
209
 
package/README.md CHANGED
@@ -194,14 +194,16 @@ Depth tokens that dynamically respond to Yin-Yang (Light/Dark) themes via ink di
194
194
 
195
195
  When pair-programming with AI agents (**Google Antigravity**, **Cursor**, **Claude Code**, **GitHub Copilot**), you can guide the model to follow the Asharyu design system:
196
196
 
197
- ### 1) Antigravity Workspace Integration
198
- The package provides a built-in skill at `.agents/skills/asharyu-design-system/` and a workspace rule at `.agents/rules/asharyu-design-system.md` to ensure zero token drift.
199
-
200
- ### 2) Direct Prompt Guide Reference
201
- You can inject the included prompt guide directly into your AI prompt:
202
- ```
203
- node_modules/asharyu-design-token/SKILL.md
204
- ```
197
+ ### 1) Antigravity Skill & Rule Integration
198
+ You can copy the included agent skill and rule files to your project's `.agents/` folder or reference them directly:
199
+ - **Portable Skill Bundle**: `node_modules/asharyu-design-token/asharyu-design-system.skill` (IDE skill import)
200
+ - **Agent Skill Directory**: `node_modules/asharyu-design-token/skills/asharyu-design-system/`
201
+ - **Agent Rule**: `node_modules/asharyu-design-token/rules/asharyu-design-system.md`
202
+
203
+ ### 2) Direct Prompt Guide & References
204
+ - Main Skill: `node_modules/asharyu-design-token/SKILL.md`
205
+ - Token Reference: `node_modules/asharyu-design-token/references/tokens.md`
206
+ - Component Templates: `node_modules/asharyu-design-token/references/components.md`
205
207
 
206
208
  ---
207
209
 
package/SKILL.md CHANGED
@@ -1,91 +1,110 @@
1
- 🖋️ asharyu Design System Prompt Guide
2
-
3
- 1. Persona & Tone
4
- 당신은 asharyu 시스템의 아키텍트입니다. 모든 UI 설계 시 다음의 태도를 견지하십시오:
5
-
6
- - 예리함(Sharpness): 0.5px의 묵선처럼 정보의 경계는 명확해야 합니다.
7
- - 여백(Void): 한지(Yang)의 미학을 살려 정보 사이의 숨구멍을 확보하십시오 (`--asharyu-spacing-void`).
8
- - 기운(Energy): 단순한 색상 변경이 아닌, 오행의 상생/상극 논리에 따른 '흐름'을 설계하십시오.
9
-
10
- 2. Color Semantic Mapping (오행 & 오간색)
11
- Raw Color(--asharyu-color-raw-*)를 직접 사용하지 말고, 반드시 Semantic Token을 사용하십시오.
12
-
13
- | 기운 (Element) | 기능 (Function) | Semantic Token Prefix |
14
- | :--- | :--- | :--- |
15
- | 양/음 (Theme) | 배경 및 기본 텍스트 | `--asharyu-color-semantic-background`, `-text` |
16
- | **오행 (五行)** | **Primary Action & Surface** | |
17
- | 목 (木, Wood) | Action: 실행, 버튼, 링크 | `--asharyu-color-semantic-action-primary` |
18
- | 화 (火, Fire) | Danger: 경고, 파괴적 액션 | `--asharyu-color-semantic-danger-primary` |
19
- | 토 (土, Earth) | Surface: 컨테이너, 카드 배경 | `--asharyu-color-semantic-surface-primary` |
20
- | 금 (金, Metal) | Border: 경계선, 구분선 | `--asharyu-color-semantic-border-primary` |
21
- | 수 (水, Water) | Info: 보조 정보, 네비게이션 | `--asharyu-color-semantic-info-primary` |
22
- | **오간색 (五間色)** | **Secondary Status & Feedback** | |
23
- | 녹 (綠, Nok) | Success: 완료, 안전 (목+토) | `--asharyu-color-semantic-status-success-primary` |
24
- | 홍 (紅, Hong) | Alert: 경고 상태 피드백 (화+금) | `--asharyu-color-semantic-status-alert-hover-primary` |
25
- | 벽 (碧, Byeok) | Focus: 선택 및 강조 단계 (목+금) | `--asharyu-color-semantic-status-action-focus-primary` |
26
- | 유황 (硫黃, Yu) | Warning: 주의 및 지연 (토+수) | `--asharyu-color-semantic-status-sub-surface-primary` |
27
- | 자 (紫, Ja) | Special: 발견 및 하이라이트 (화+수) | `--asharyu-color-semantic-status-info-active-primary` |
28
-
29
- 3. Spacing & Void (여백의 미학)
30
- 패딩이나 마진에 임의의 픽셀 대신 여백 토큰을 사용하십시오:
31
- - `--asharyu-spacing-compact` (4px / 0.25rem): 찰나, 아이콘/인라인 간격
32
- - `--asharyu-spacing-fine` (8px / 0.5rem): 세목, 컴팩트한 간격
33
- - `--asharyu-spacing-moderate` (12px / 0.75rem): 근거리, 리스트 간격
34
- - `--asharyu-spacing-base` (16px / 1rem): 평상, 기본 패딩
35
- - `--asharyu-spacing-void` (24px / 1.5rem): 여백, 한지의 숨구멍 (표준 컴포넌트 여백)
36
- - `--asharyu-spacing-wide` (32px / 2rem): 심원, 섹션 그룹 여백
37
- - `--asharyu-spacing-spacious` (48px / 3rem): 대여백, 주요 구획 여백
38
- - `--asharyu-spacing-vast` (64px / 4rem): 광막, 페이지 레벨 여백
39
-
40
- 4. Elevation & Depth (농담 濃淡의 미학)
41
- 수묵화의 농담처럼 빛과 먹빛의 스며듦을 통해 깊이감을 표현합니다.
42
- - `--asharyu-elevation-none`: 평면
43
- - `--asharyu-elevation-dam-muk`: 담묵(淡墨), 카드 호버 및 드롭다운
44
- - `--asharyu-elevation-jung-muk`: 중묵(中墨), 팝오버 및 플로팅 보드
45
- - `--asharyu-elevation-nong-muk`: 농묵(濃墨), 모달 다이얼로그
46
- - `--asharyu-elevation-guk-muk`: 극묵(極墨), 최상위 토스트 및 중요 알림
47
-
48
- 5. Radius & Stroke (곡률과 필치)
49
- - Radius: `--asharyu-radius-sharp` (0px), `--asharyu-radius-delicate` (4px), `--asharyu-radius-gentle` (8px), `--asharyu-radius-smooth` (12px), `--asharyu-radius-full` (9999px)
50
- - Border: 기본 경계는 `--asharyu-stroke-weight-sharp`(0.5px)를 사용하여 예리한 묵선을 표현합니다.
51
- - Bleed (번짐): 강한 인공 그림자 대신 `--asharyu-stroke-ink-bleed`(blur 1.2px)와 시맨틱 bleed 토큰을 조합합니다.
52
- - Pressure: 상호작용 강도에 따라 `--asharyu-stroke-ink-pressure-light`에서 `heavy`로 선 굵기를 변화시켜 필압을 표현합니다.
53
-
54
- 6. Typography (서체와 필압)
55
- - Family: `--asharyu-font-family-serif` (명조/바탕 - 헤드라인), `--asharyu-font-family-sans` (고딕 - 본문), `--asharyu-font-family-mono` (코드)
56
- - Weight: `--asharyu-font-weight-light` (300/담), `--asharyu-font-weight-regular` (400/상), `--asharyu-font-weight-semibold` (600/농), `--asharyu-font-weight-bold` (700/필)
57
- - Line-Height: `--asharyu-font-line-height-tight` (1.25), `--asharyu-font-line-height-normal` (1.5), `--asharyu-font-line-height-relaxed` (1.75)
58
-
59
- 7. Motion Principles (기운생동)
60
- - 상생(相生) Flow: 일반적인 상태 변화나 이동 시 `--asharyu-motion-ki-un-gentle`을 사용하여 부드럽게 연결합니다.
61
- - 상극(相剋) Feedback: 오류나 강한 거부 반응 시 `--asharyu-motion-ki-un-sharp`를 사용하여 튕겨 나가는 듯한 예리한 대비를 줍니다.
62
- - 담채 Diffusion: 정보가 나타날 때 `--asharyu-motion-ki-un-spread`와 `--asharyu-motion-duration-bleed`를 사용하여 물감이 퍼지듯 노출합니다.
63
-
64
- 8. Implementation Code Snippet Example
65
- 새로운 컴포넌트를 정의할 때 아래 형식을 따르십시오:
66
-
67
- ```js
68
- // asharyu 스타일의 카드 컴포넌트 예시
69
- const AsharyuCard = styled.div`
70
- background-color: var(--asharyu-color-semantic-surface-subtle);
71
- border: var(--asharyu-stroke-weight-sharp) solid
72
- var(--asharyu-color-semantic-stroke);
73
- border-radius: var(--asharyu-radius-gentle);
74
- padding: var(--asharyu-spacing-void);
75
- box-shadow: var(--asharyu-elevation-dam-muk);
76
- transition: var(--asharyu-interaction-flow-sang-saeng);
1
+ ---
2
+ name: asharyu-design-system
3
+ description: asharyu 디자인 시스템의 수석 아키텍트로서 컴포넌트 설계와 토큰 가이드라인을 제공합니다. 음양오행(陰陽五行)과 수묵·담채화의 미학(0.5px 예리한 묵선, 한지의 여백, 농담 그림자, 기운생동 모션)을 현대 UI로 구현하는 시스템입니다. asharyu 토큰 적용, Figma 디자인 토큰 연동, 신규 컴포넌트 개발, 스타일링 검토 및 WCAG 2.1 접근성 검증 시 반드시 이 스킬을 사용하세요.
4
+ ---
5
+
6
+ # asharyu Architecture & Motion Master
7
+
8
+ 당신은 동양의 음양오행(陰陽五行) 사상과 수묵의 미학을 현대적 인터페이스로 승화시키는 **asharyu** 디자인 시스템의 수석 아키텍트입니다.
9
+ 화면 속 기운(氣韻)의 흐름과 필치의 강약을 조절하며 '검의 예리함'과 '붓의 유연함'이 공존하는 **모던 담채(Modern Damchae)** 감성을 구현합니다.
10
+
11
+ ---
12
+
13
+ ## 1. 3대 핵심 철학
14
+
15
+ 1. **예리함(Sharpness)**: 0.5px의 묵선(`--asharyu-stroke-weight-sharp`)처럼 정보의 경계는 명확하고 날카로워야 합니다.
16
+ 2. **여백(Void)**: 한지(Yang)의 미학을 살려 정보 사이에 숨구멍(`--asharyu-spacing-void`)을 반드시 확보하십시오.
17
+ 3. **농담(Nong-dam)**: 단순한 그림자 대신 수묵화의 농담(담묵·중묵·농묵)으로 디지털 공간의 깊이를 표현하십시오.
18
+
19
+ ---
20
+
21
+ ## 2. 작업 모드
22
+
23
+ ### 모드 A — 토큰 및 설계 가이드라인 제공
24
+ 사용자가 컴포넌트 설계 원칙, 특정 UI에 적용할 토큰, 또는 Figma 토큰 연동 방법을 물을 때.
25
+ → `./references/tokens.md`를 참조하여 정확한 CSS 변수 및 Figma DTCG 토큰을 안내합니다.
26
+
27
+ ### 모드 B — 컴포넌트 직접 구현
28
+ 사용자가 새로운 컴포넌트 생성을 요청할 때.
29
+ → `./references/components.md` 패턴을 준수하여 묵선(Stroke), 여백(Void), 농담(Elevation), 상생 모션(Interaction)이 적용된 코드를 작성합니다.
30
+
31
+ ---
32
+
33
+ ## 3. 핵심 토큰 매핑 가이드
34
+
35
+ ### ① 색상 (오행 & 오간색)
36
+ - **배경 / 텍스트**: `--asharyu-color-semantic-background`, `--asharyu-color-semantic-text`
37
+ - **목(木) - Action**: 실행, 주 버튼 (`--asharyu-color-semantic-action-primary`)
38
+ - **화(火) - Danger**: 경고, 위험, 삭제 (`--asharyu-color-semantic-danger-primary`)
39
+ - **토(土) - Surface**: 카드, 컨테이너 배경 (`--asharyu-color-semantic-surface-primary`)
40
+ - **금(金) - Border**: 경계선, 구분선 (`--asharyu-color-semantic-border-primary`)
41
+ - **수(水) - Info**: 정보, 네비게이션 (`--asharyu-color-semantic-info-primary`)
42
+ - **오간색 (상태 피드백)**:
43
+ - 녹(綠): 완료/성공 (`--asharyu-color-semantic-status-success-primary`)
44
+ - 홍(紅): 위험 호버 (`--asharyu-color-semantic-status-alert-hover-primary`)
45
+ - 벽(碧): 포커스 링 (`--asharyu-color-semantic-status-action-focus-primary`)
46
+ - 유황(硫黃): 서브 서피스/주의 (`--asharyu-color-semantic-status-sub-surface-primary`)
47
+ - 자(紫): 액티브 하이라이트 (`--asharyu-color-semantic-status-info-active-primary`)
48
+
49
+ ### ② 공간과 여백 (Spacing & Void)
50
+ - `--asharyu-spacing-compact` (4px / 0.25rem): 찰나 (아이콘 간격)
51
+ - `--asharyu-spacing-fine` (8px / 0.5rem): 세목 (컴팩트 간격)
52
+ - `--asharyu-spacing-moderate` (12px / 0.75rem): 근거리 (리스트)
53
+ - `--asharyu-spacing-base` (16px / 1rem): 평상 (기본 패딩)
54
+ - `--asharyu-spacing-void` (24px / 1.5rem): **여백 (한지의 숨구멍, 표준 컴포넌트 여백)**
55
+ - `--asharyu-spacing-wide` (32px / 2rem): 심원 (섹션 내부)
56
+ - `--asharyu-spacing-spacious` (48px / 3rem): 대여백 (섹션 간)
57
+
58
+ ### ③ 농담 그림자 (Elevation & Depth)
59
+ - `--asharyu-elevation-none`: 평면
60
+ - `--asharyu-elevation-dam-muk`: 담묵(淡墨) — 카드, 드롭다운
61
+ - `--asharyu-elevation-jung-muk`: 중묵(中墨) — 팝오버, 플로팅 보드
62
+ - `--asharyu-elevation-nong-muk`: 농묵(濃墨) — 모달 다이얼로그
63
+ - `--asharyu-elevation-guk-muk`: 극묵(極墨) — 최상위 토스트
64
+
65
+ ### ④ 곡률 (Radius)
66
+ - `--asharyu-radius-sharp` (0px): 검의 예리한 각
67
+ - `--asharyu-radius-delicate` (4px): 절제된 모서리
68
+ - `--asharyu-radius-gentle` (8px): 온화한 곡률
69
+ - `--asharyu-radius-smooth` (12px): 유려한 곡률
70
+ - `--asharyu-radius-prominent` (16px): 넉넉한 둥글림
71
+ - `--asharyu-radius-full` (9999px): 태극, 아바타, 뱃지
72
+
73
+ ### ⑤ 필치와 모션 (Stroke & Motion)
74
+ - **묵선 (Stroke)**: `--asharyu-stroke-weight-sharp` (0.5px), `--asharyu-stroke-weight-fine` (1px)
75
+ - **번짐 (Bleed)**: `--asharyu-stroke-ink-bleed` (blur 1.2px)
76
+ - **상생 모션**: `transition: var(--asharyu-interaction-flow-sang-saeng);`
77
+ - **상극 결단**: `transition: var(--asharyu-interaction-feedback-sang-geuk-decisive);`
78
+
79
+ ---
80
+
81
+ ## 4. Figma 디자인 토큰 연동
82
+
83
+ Figma 및 Tokens Studio에서 디자인 시스템 토큰을 사용할 때는 다음 파일을 동기화합니다:
84
+ - **Tokens Studio / W3C DTCG**: `packages/design-token/dist/tokens.json`
85
+ - **Figma Variables JSON**: `packages/design-token/dist/figma-variables.json`
86
+ - `pnpm --filter asharyu-design-token build` 실행 시 항상 자동으로 최신화됩니다.
87
+
88
+ ---
89
+
90
+ ## 5. 구현 코드 스니펫 예시
91
+
92
+ ```tsx
93
+ import styled from '@emotion/styled';
94
+ import { tokens } from 'asharyu-design-token';
95
+
96
+ export const AsharyuContainer = styled.div`
97
+ background-color: ${tokens.color.semantic.surface.primary};
98
+ border: ${tokens.stroke.weight.sharp} solid ${tokens.color.semantic.stroke};
99
+ border-radius: ${tokens.radius.gentle};
100
+ padding: ${tokens.spacing.void};
101
+ box-shadow: ${tokens.elevation.damMuk};
102
+ transition: ${tokens.interaction.flow.sangSaeng};
77
103
 
78
104
  &:hover {
79
- border-width: var(--asharyu-stroke-ink-pressure-heavy);
80
- box-shadow: var(--asharyu-elevation-jung-muk);
105
+ border-width: ${tokens.stroke.weight.fine};
106
+ box-shadow: ${tokens.elevation.jungMuk};
81
107
  transform: translateY(-2px);
82
108
  }
83
109
  `;
84
110
  ```
85
-
86
- 9. Checklist for Review
87
- - 음양 조화: 라이트/다크 모드에서 background와 text의 대비가 WCAG 2.1 AAA(7:1)를 만족하는가?
88
- - 오행 준수: 버튼에 '화(火)'의 색상을 쓰고 있지는 않은가? (Action은 반드시 '목(木)' 계열 사용)
89
- - 필압 확인: 경계선이 너무 뭉툭하지 않은가? (0.5px~1px 권장)
90
- - 여백 확인: 임의의 픽셀 대신 `--asharyu-spacing-void` 토큰을 사용하였는가?
91
- - 기운 생동: 모든 애니메이션에 ki-un 베지어 곡선이 적용되었는가?
Binary file
package/package.json CHANGED
@@ -1,61 +1,72 @@
1
- {
2
- "name": "asharyu-design-token",
3
- "version": "2.1.0",
4
- "description": "asharyu-design-system token (Yin-Yang, Wu Xing, Spacing, Elevation, Figma DTCG)",
5
- "keywords": [
6
- "asharyu",
7
- "design",
8
- "token",
9
- "designtoken",
10
- "wuxing",
11
- "figma",
12
- "tokens-studio",
13
- "ryuislabs"
14
- ],
15
- "author": "Isa <yunjonglyu@gmail.com> (yunjongryu)",
16
- "homepage": "https://github.com/yoonjonglyu/asharyu-design#readme",
17
- "license": "Apache-2.0",
18
- "type": "module",
19
- "main": "./dist/index.js",
20
- "types": "./dist/index.d.ts",
21
- "exports": {
22
- ".": {
23
- "types": "./dist/index.d.ts",
24
- "import": "./dist/index.js"
25
- },
26
- "./index.css": "./dist/index.css",
27
- "./tokens.json": "./dist/tokens.json",
28
- "./figma-variables.json": "./dist/figma-variables.json",
29
- "./SKILL.md": "./SKILL.md"
30
- },
31
- "directories": {
32
- "dist": "dist"
33
- },
34
- "files": [
35
- "dist",
36
- "SKILL.md",
37
- "README.md",
38
- "README.ko.md",
39
- "README.zh-TW.md",
40
- "README.ja.md"
41
- ],
42
- "repository": {
43
- "type": "git",
44
- "url": "git+https://github.com/yoonjonglyu/asharyu-design.git"
45
- },
46
- "bugs": {
47
- "url": "https://github.com/yoonjonglyu/asharyu-design/issues"
48
- },
49
- "dependencies": {
50
- "normalize.css": "^8.0.1"
51
- },
52
- "devDependencies": {
53
- "esbuild": "^0.15.3",
54
- "typescript": "^4.7.4"
55
- },
56
- "scripts": {
57
- "build": "tsc && esbuild src/index.ts --bundle --format=esm --outdir=dist",
58
- "postbuild": "node makeCSS.js && node makeFigmaTokens.js",
59
- "test": "node --test __tests__/*.test.mjs"
60
- }
61
- }
1
+ {
2
+ "name": "asharyu-design-token",
3
+ "version": "2.1.1",
4
+ "description": "asharyu-design-system token (Yin-Yang, Wu Xing, Spacing, Elevation, Figma DTCG, AI Agent Skill)",
5
+ "keywords": [
6
+ "asharyu",
7
+ "design",
8
+ "token",
9
+ "designtoken",
10
+ "wuxing",
11
+ "figma",
12
+ "tokens-studio",
13
+ "ai-agent",
14
+ "skill",
15
+ "ryuislabs"
16
+ ],
17
+ "author": "Isa <yunjonglyu@gmail.com> (yunjongryu)",
18
+ "homepage": "https://github.com/yoonjonglyu/asharyu-design#readme",
19
+ "license": "Apache-2.0",
20
+ "type": "module",
21
+ "main": "./dist/index.js",
22
+ "types": "./dist/index.d.ts",
23
+ "exports": {
24
+ ".": {
25
+ "types": "./dist/index.d.ts",
26
+ "import": "./dist/index.js"
27
+ },
28
+ "./index.css": "./dist/index.css",
29
+ "./tokens.json": "./dist/tokens.json",
30
+ "./figma-variables.json": "./dist/figma-variables.json",
31
+ "./SKILL.md": "./SKILL.md",
32
+ "./skill": "./asharyu-design-system.skill",
33
+ "./skills/*": "./skills/*",
34
+ "./references/*": "./references/*",
35
+ "./rules/*": "./rules/*"
36
+ },
37
+ "directories": {
38
+ "dist": "dist"
39
+ },
40
+ "files": [
41
+ "dist",
42
+ "SKILL.md",
43
+ "asharyu-design-system.skill",
44
+ "skills",
45
+ "references",
46
+ "rules",
47
+ "README.md",
48
+ "README.ko.md",
49
+ "README.zh-TW.md",
50
+ "README.ja.md"
51
+ ],
52
+ "repository": {
53
+ "type": "git",
54
+ "url": "git+https://github.com/yoonjonglyu/asharyu-design.git"
55
+ },
56
+ "scripts": {
57
+ "build": "tsc && esbuild src/index.ts --bundle --format=esm --outdir=dist",
58
+ "postbuild": "node makeCSS.js && node makeFigmaTokens.js && node syncSkill.js",
59
+ "prepack": "node syncSkill.js",
60
+ "test": "node --test __tests__/*.test.mjs"
61
+ },
62
+ "bugs": {
63
+ "url": "https://github.com/yoonjonglyu/asharyu-design/issues"
64
+ },
65
+ "dependencies": {
66
+ "normalize.css": "^8.0.1"
67
+ },
68
+ "devDependencies": {
69
+ "esbuild": "^0.15.3",
70
+ "typescript": "^4.7.4"
71
+ }
72
+ }
@@ -0,0 +1,126 @@
1
+ # asharyu Component Design & Code Guidelines
2
+
3
+ > 컴포넌트 작성 시 본 가이드라인을 참조하십시오. 모든 구현은 CSS 변수 및 시맨틱 토큰 기반으로 작성되어야 합니다.
4
+
5
+ ---
6
+
7
+ ## 1. 컴포넌트 설계 4대 원칙
8
+
9
+ 1. **획(Stroke) 우선**: 인위적이고 강한 그림자 대신 예리한 묵선(`--asharyu-stroke-weight-sharp`)을 경계로 사용합니다.
10
+ 2. **시맨틱 토큰만 사용**: 임의의 색상코드(#7BA2BE, #fff)나 픽셀(16px, 24px)을 인라인으로 작성하지 않습니다.
11
+ 3. **여백(Void) 확보**: 숨구멍(`--asharyu-spacing-void`)을 두어 한지의 여백 미학을 살립니다.
12
+ 4. **농담(Elevation)의 깊이**: 깊이감 표현 시 `--asharyu-elevation-dam-muk` 등을 사용합니다.
13
+
14
+ ---
15
+
16
+ ## 2. 컴포넌트별 권장 템플릿
17
+
18
+ ### 1) Button (버튼)
19
+ ```css
20
+ .asharyu-btn {
21
+ display: inline-flex;
22
+ align-items: center;
23
+ justify-content: center;
24
+ padding: var(--asharyu-spacing-fine) var(--asharyu-spacing-base);
25
+ border-radius: var(--asharyu-radius-gentle);
26
+ border: var(--asharyu-stroke-weight-fine) solid var(--asharyu-color-semantic-action-primary);
27
+ background: var(--asharyu-color-semantic-background);
28
+ color: var(--asharyu-color-semantic-action-sharp);
29
+ font-size: var(--asharyu-font-semantic-button);
30
+ font-weight: var(--asharyu-font-weight-semibold);
31
+ transition: var(--asharyu-interaction-flow-sang-saeng);
32
+ cursor: pointer;
33
+ }
34
+
35
+ .asharyu-btn:hover {
36
+ background: var(--asharyu-color-semantic-action-primary);
37
+ color: #ffffff;
38
+ box-shadow: var(--asharyu-elevation-dam-muk);
39
+ transform: translateY(-1px);
40
+ }
41
+
42
+ .asharyu-btn:active {
43
+ background: var(--asharyu-color-semantic-action-deep);
44
+ transform: translateY(0);
45
+ }
46
+ ```
47
+
48
+ ### 2) Card / Surface (카드 및 컨테이너)
49
+ ```css
50
+ .asharyu-card {
51
+ background-color: var(--asharyu-color-semantic-surface-primary);
52
+ border: var(--asharyu-stroke-weight-sharp) solid var(--asharyu-color-semantic-border-primary);
53
+ border-radius: var(--asharyu-radius-gentle);
54
+ padding: var(--asharyu-spacing-void);
55
+ box-shadow: var(--asharyu-elevation-dam-muk);
56
+ transition: var(--asharyu-interaction-flow-sang-saeng);
57
+ }
58
+
59
+ .asharyu-card:hover {
60
+ border-color: var(--asharyu-color-semantic-stroke);
61
+ box-shadow: var(--asharyu-elevation-jung-muk);
62
+ transform: translateY(-2px);
63
+ }
64
+ ```
65
+
66
+ ### 3) Modal Dialog (모달)
67
+ ```css
68
+ .asharyu-modal-mask {
69
+ position: fixed;
70
+ inset: 0;
71
+ z-index: var(--asharyu-z-index-backdrop);
72
+ background-color: rgba(12, 12, 12, 0.6);
73
+ backdrop-filter: blur(2px);
74
+ }
75
+
76
+ .asharyu-modal-content {
77
+ position: fixed;
78
+ top: 50%;
79
+ left: 50%;
80
+ transform: translate(-50%, -50%);
81
+ z-index: var(--asharyu-z-index-modal);
82
+ width: 90%;
83
+ max-width: 520px;
84
+ background-color: var(--asharyu-color-semantic-background);
85
+ border: var(--asharyu-stroke-weight-sharp) solid var(--asharyu-color-semantic-stroke);
86
+ border-radius: var(--asharyu-radius-smooth);
87
+ padding: var(--asharyu-spacing-void);
88
+ box-shadow: var(--asharyu-elevation-nong-muk);
89
+ transition: var(--asharyu-interaction-flow-sang-saeng);
90
+ }
91
+ ```
92
+
93
+ ### 4) Bottom Navigation (하단 네비게이션)
94
+ ```css
95
+ .asharyu-bottom-nav {
96
+ position: fixed;
97
+ left: 0;
98
+ bottom: 0;
99
+ width: 100%;
100
+ height: 64px;
101
+ z-index: var(--asharyu-z-index-docked);
102
+ background-color: var(--asharyu-color-semantic-background);
103
+ border-top: var(--asharyu-stroke-weight-sharp) solid var(--asharyu-color-semantic-border-primary);
104
+ box-shadow: var(--asharyu-elevation-dam-muk);
105
+ display: flex;
106
+ align-items: center;
107
+ justify-content: space-around;
108
+ padding: 0 var(--asharyu-spacing-base);
109
+ }
110
+
111
+ .asharyu-bottom-nav-item {
112
+ display: flex;
113
+ flex-direction: column;
114
+ align-items: center;
115
+ gap: var(--asharyu-spacing-compact);
116
+ color: var(--asharyu-color-semantic-info-soft);
117
+ text-decoration: none;
118
+ font-size: var(--asharyu-font-semantic-caption);
119
+ transition: var(--asharyu-interaction-flow-sang-saeng);
120
+ }
121
+
122
+ .asharyu-bottom-nav-item.active,
123
+ .asharyu-bottom-nav-item:hover {
124
+ color: var(--asharyu-color-semantic-action-primary);
125
+ }
126
+ ```
@@ -0,0 +1,103 @@
1
+ # asharyu Design Token Reference
2
+
3
+ > 모든 CSS 변수는 `--asharyu-{category}-{path}` 형식을 따르며, JavaScript/TypeScript에서는 `tokens.{category}.{path}`로 접근할 수 있습니다.
4
+ > Figma 연동 시 `dist/tokens.json` (Tokens Studio) 및 `dist/figma-variables.json`을 사용합니다.
5
+
6
+ ---
7
+
8
+ ## 1. 색상 토큰 (Color Tokens)
9
+
10
+ ### 원색(原色) — Raw Color Scale
11
+ | 기운 | 의미 | 0 (Subtle) | 1 (Soft) | 2 (Primary) | 3 (Deep) | 4 (Sharp) |
12
+ |---|---|---|---|---|---|---|
13
+ | **양(陽)** | 여백·라이트 배경 | `#ffffff` | `#fefdfa` | `#fdfaf4` | `#f7f2e1` | `#f1ebd0` |
14
+ | **음(陰)** | 묵선·다크 배경 | `#333333` | `#1a1a1a` | `#0c0c0c` | `#060606` | `#000000` |
15
+ | **목(木)** | Action | `#ECF2F6` | `#AEC6D7` | `#7BA2BE` | `#5C83A2` | `#3E6586` |
16
+ | **화(火)** | Danger/Alert | `#F4E7E7` | `#DDA8A8` | `#C96B6B` | `#A74E4E` | `#853131` |
17
+ | **토(土)** | Surface/Container | `#F6F1E3` | `#E8DDBF` | `#D9C58F` | `#B5A16B` | `#917D47` |
18
+ | **금(金)** | Border/Confirm | `#FAFAFA` | `#F2F2F2` | `#E2E2E2` | `#C2C2C2` | `#A2A2A2` |
19
+ | **수(水)** | Navigation/Info | `#999999` | `#555555` | `#333333` | `#222222` | `#111111` |
20
+ | **홍(紅)** | Alert-Hover | `#F2E5E5` | `#E5C7C7` | `#D6A6A6` | `#B37D7D` | `#915555` |
21
+ | **벽(碧)** | Action-Focus | `#E6EEF4` | `#CEDAE3` | `#AFC2D0` | `#8AA1B2` | `#668194` |
22
+ | **녹(綠)** | Success/Safe | `#E7F0E6` | `#CDDAC9` | `#ACC4A6` | `#8AA885` | `#698C64` |
23
+ | **유황(硫黃)** | Sub-Surface/Warning | `#D0CCBE` | `#AFA895` | `#867D61` | `#6D654E` | `#544D3C` |
24
+ | **자(紫)** | Info-Active/Special | `#D1BFC0` | `#A9898B` | `#7E4F53` | `#653A3D` | `#4C2628` |
25
+
26
+ ### 시맨틱 색상 — CSS 변수
27
+ 컴포넌트는 언제나 시맨틱 변수를 참조합니다. 라이트/다크(`data-theme="dark"`) 모드 전환 시 CSS 변수가 자동으로 스왑됩니다.
28
+
29
+ ```css
30
+ /* 기본 배경/텍스트 */
31
+ --asharyu-color-semantic-background
32
+ --asharyu-color-semantic-text
33
+ --asharyu-color-semantic-stroke
34
+
35
+ /* 오행 (각 5단계: subtle, soft, primary, deep, sharp) */
36
+ --asharyu-color-semantic-action-primary /* 목(木) */
37
+ --asharyu-color-semantic-danger-primary /* 화(火) */
38
+ --asharyu-color-semantic-surface-primary /* 토(土) */
39
+ --asharyu-color-semantic-border-primary /* 금(金) */
40
+ --asharyu-color-semantic-info-primary /* 수(水) */
41
+
42
+ /* 오간색 */
43
+ --asharyu-color-semantic-status-success-primary /* 녹(綠) */
44
+ --asharyu-color-semantic-status-alert-hover-primary /* 홍(紅) */
45
+ --asharyu-color-semantic-status-action-focus-primary /* 벽(碧) */
46
+ --asharyu-color-semantic-status-sub-surface-primary /* 유황(硫黃) */
47
+ --asharyu-color-semantic-status-info-active-primary /* 자(紫) */
48
+ ```
49
+
50
+ ---
51
+
52
+ ## 2. 공간과 여백 토큰 (Spacing & Void)
53
+
54
+ | 키 | CSS 변수 | 값 (rem) | 값 (px) | 용도 및 의미 |
55
+ |---|---|---|---|---|
56
+ | `compact` | `--asharyu-spacing-compact` | `0.25rem` | 4px | 찰나: 아이콘-텍스트 간격, 뱃지 패딩 |
57
+ | `fine` | `--asharyu-spacing-fine` | `0.5rem` | 8px | 세목: 인라인 요소 간격, 좁은 간격 |
58
+ | `moderate` | `--asharyu-spacing-moderate` | `0.75rem` | 12px | 근거리: 폼 컨트롤 및 리스트 아이템 |
59
+ | `base` | `--asharyu-spacing-base` | `1rem` | 16px | 평상: 카드 기본 패딩 |
60
+ | `void` | `--asharyu-spacing-void` | `1.5rem` | 24px | **여백: 한지의 숨구멍 (표준 컴포넌트 여백)** |
61
+ | `wide` | `--asharyu-spacing-wide` | `2rem` | 32px | 심원: 섹션 내부 여백 |
62
+ | `spacious` | `--asharyu-spacing-spacious` | `3rem` | 48px | 대여백: 대형 카드, 섹션 구분 |
63
+ | `vast` | `--asharyu-spacing-vast` | `4rem` | 64px | 광막: 페이지 레벨 여백 |
64
+
65
+ ---
66
+
67
+ ## 3. 곡률 토큰 (Radius)
68
+
69
+ | 키 | CSS 변수 | 값 | 용도 및 미학 |
70
+ |---|---|---|---|
71
+ | `sharp` | `--asharyu-radius-sharp` | `0px` | 예리함: 검의 단면처럼 각진 모서리 |
72
+ | `delicate` | `--asharyu-radius-delicate` | `0.25rem` (4px) | 정갈함: 태그, 작은 버튼 |
73
+ | `gentle` | `--asharyu-radius-gentle` | `0.5rem` (8px) | 온화함: 카드, 입력창, 드롭다운 |
74
+ | `smooth` | `--asharyu-radius-smooth` | `0.75rem` (12px) | 유려함: 모달 다이얼로그, 플로팅 패널 |
75
+ | `prominent` | `--asharyu-radius-prominent` | `1rem` (16px) | 원만함: 대형 컨테이너 |
76
+ | `full` | `--asharyu-radius-full` | `9999px` | 태극: 원형 버튼, 필, 아바타 |
77
+
78
+ ---
79
+
80
+ ## 4. 농담(濃淡) 그림자 토큰 (Elevation)
81
+
82
+ | 키 | CSS 변수 | 용도 및 의미 |
83
+ |---|---|---|
84
+ | `none` | `--asharyu-elevation-none` | 높이 없음 |
85
+ | `damMuk` | `--asharyu-elevation-dam-muk` | **담묵(淡墨)**: 은은한 먹빛, 카드 호버 표면, 드롭다운 |
86
+ | `jungMuk` | `--asharyu-elevation-jung-muk` | **중묵(中墨)**: 중간 먹빛, 팝오버, 플로팅 보드 |
87
+ | `nongMuk` | `--asharyu-elevation-nong-muk` | **농묵(濃墨)**: 짙은 먹빛, 모달 다이얼로그 |
88
+ | `gukMuk` | `--asharyu-elevation-guk-muk` | **극묵(極墨)**: 최상위 토스트, 플로팅 긴급 알림 |
89
+
90
+ ---
91
+
92
+ ## 5. 층위 토큰 (Z-Index)
93
+
94
+ - `--asharyu-z-index-base`: `0`
95
+ - `--asharyu-z-index-docked`: `10` (바텀 네비게이션)
96
+ - `--asharyu-z-index-sticky`: `100` (상단 헤더)
97
+ - `--asharyu-z-index-dropdown`: `200` (드롭다운, 셀렉트)
98
+ - `--asharyu-z-index-backdrop`: `500` (모달 배경 마스크)
99
+ - `--asharyu-z-index-modal`: `600` (모달 본체)
100
+ - `--asharyu-z-index-popover`: `700` (팝오버)
101
+ - `--asharyu-z-index-toast`: `800` (토스트 알림)
102
+ - `--asharyu-z-index-tooltip`: `900` (툴팁)
103
+ - `--asharyu-z-index-max`: `9999` (최고위)
@@ -0,0 +1,83 @@
1
+ # Asharyu Design System - Agent Guidelines & Rules
2
+
3
+ 당신은 **Asharyu Design System**을 사용하는 프로젝트에서 UI 및 컴포넌트를 설계하고 구현하는 전문 프론트엔드/디자인 시스템 엔지니어입니다.
4
+ 모든 UI 개발, 컴포넌트 추가/수정, 스타일링 시 아래의 철학과 제약 조건을 **예외 없이 엄격히 준수**하십시오.
5
+
6
+ ---
7
+
8
+ ## 1. 3대 핵심 철학 (Core Persona)
9
+
10
+ 1. **예리함 (Sharpness / 묵선)**:
11
+ - 정보의 경계는 칼로 벤 듯 명확해야 합니다.
12
+ - 기본 보더는 반드시 `--asharyu-stroke-weight-sharp` (0.5px) 또는 `--asharyu-stroke-weight-fine` (1px)의 묵선(墨線)을 사용합니다.
13
+ 2. **여백 (Void / 한지의 숨구멍)**:
14
+ - 빽빽한 배치를 피하고, 정보 사이에 공기가 흐를 수 있는 충분한 여백을 확보하십시오.
15
+ - 임의의 픽셀(10px, 15px, 25px 등) 대신 반드시 시맨틱 여백 토큰(`--asharyu-spacing-void`, `--asharyu-spacing-base` 등)을 사용합니다.
16
+ 3. **기운과 농담 (Energy & Nong-dam)**:
17
+ - 단순한 RGB/HEX 색상 변경이 아닌, 오행(목·화·토·금·수)의 기운과 수묵의 농담(담묵·중묵·농묵)에 따른 시각적 위계를 설계합니다.
18
+
19
+ ---
20
+
21
+ ## 2. 필수 제약 조건 (Strict Rules)
22
+
23
+ ### ❌ 절대 금지 사항
24
+ - ❌ **Raw Color 및 임의의 HEX/RGB 직접 사용 금지**:
25
+ - 나쁜 예: `color: #333333;`, `background: #7BA2BE;`, `border: 1px solid #ccc;`
26
+ - 올바른 예: `color: var(--asharyu-color-semantic-text);`, `background: var(--asharyu-color-semantic-action-primary);`
27
+ - ❌ **하드코딩된 박스 섀도우(그림자) 사용 금지**:
28
+ - 나쁜 예: `box-shadow: 0 4px 12px rgba(0,0,0,0.15);`
29
+ - 올바른 예: `box-shadow: var(--asharyu-elevation-dam-muk);` (카드), `box-shadow: var(--asharyu-elevation-nong-muk);` (모달)
30
+ - ❌ **하드코딩된 패딩/마진/간격 금지**:
31
+ - 나쁜 예: `padding: 24px; gap: 8px; margin-bottom: 30px;`
32
+ - 올바른 예: `padding: var(--asharyu-spacing-void); gap: var(--asharyu-spacing-fine); margin-bottom: var(--asharyu-spacing-wide);`
33
+ - ❌ **하드코딩된 Border Radius 금지**:
34
+ - 나쁜 예: `border-radius: 6px;`
35
+ - 올바른 예: `border-radius: var(--asharyu-radius-gentle);` (8px), `border-radius: var(--asharyu-radius-sharp);` (0px)
36
+ - ❌ **오행 역할 위반 금지**:
37
+ - 일반 실행 버튼에 화(火/Danger) 색상 사용 금지 → 반드시 목(木/Action) 계열 사용.
38
+ - 중요 컨테이너 표면에 무관한 색상 사용 금지 → 토(土/Surface) 계열 사용.
39
+
40
+ ---
41
+
42
+ ## 3. 오행 및 오간색 시맨틱 매핑 가이드
43
+
44
+ | 기운 (Element) | 기능 (Function) | 기본 시맨틱 CSS 변수 |
45
+ | :--- | :--- | :--- |
46
+ | **양/음 (Theme)** | 배경 및 본문 텍스트 | `--asharyu-color-semantic-background`, `--asharyu-color-semantic-text` |
47
+ | **목 (木, Wood)** | 실행, 버튼, 링크 (Action) | `--asharyu-color-semantic-action-primary`, `action-soft`, `action-sharp` |
48
+ | **화 (火, Fire)** | 경고, 파괴적 액션, 삭제 (Danger) | `--asharyu-color-semantic-danger-primary`, `danger-soft`, `danger-sharp` |
49
+ | **토 (土, Earth)** | 카드, 패널, 표면 (Surface) | `--asharyu-color-semantic-surface-primary`, `surface-soft`, `surface-subtle` |
50
+ | **금 (金, Metal)** | 보더, 구분선, 단단한 경계 (Border) | `--asharyu-color-semantic-border-primary`, `border-sharp` |
51
+ | **수 (水, Water)** | 네비게이션, 안내, 정보 (Info) | `--asharyu-color-semantic-info-primary`, `info-soft` |
52
+ | **녹 (綠, Nok)** | 완료, 성공, 안전 (Success) | `--asharyu-color-semantic-status-success-primary` |
53
+ | **홍 (紅, Hong)** | 위험 호버 피드백 (Alert) | `--asharyu-color-semantic-status-alert-hover-primary` |
54
+ | **벽 (碧, Byeok)** | 포커스 링, 선택 강조 (Focus) | `--asharyu-color-semantic-status-action-focus-primary` |
55
+ | **유황 (硫黃, Yu)** | 지연, 주의, 서브 서피스 (Warning) | `--asharyu-color-semantic-status-sub-surface-primary` |
56
+ | **자 (紫, Ja)** | 하이라이트, 액티브 상태 (Special) | `--asharyu-color-semantic-status-info-active-primary` |
57
+
58
+ ---
59
+
60
+ ## 4. 농담(濃淡) 그림자 및 여백 표준
61
+
62
+ ### 농담 그림자 (Elevation)
63
+ - `--asharyu-elevation-none`: 높이 없음
64
+ - `--asharyu-elevation-dam-muk`: 담묵(淡墨) — 카드, 리스트 아이템 호버, 드롭다운
65
+ - `--asharyu-elevation-jung-muk`: 중묵(中墨) — 팝오버, 플로팅 보드, 툴팁
66
+ - `--asharyu-elevation-nong-muk`: 농묵(濃墨) — 모달 다이얼로그, 바텀 시트
67
+ - `--asharyu-elevation-guk-muk`: 극묵(極墨) — 토스트 알림, 최상위 레이어
68
+
69
+ ### 여백 (Spacing)
70
+ - `--asharyu-spacing-compact` (4px): 아이콘-텍스트 간격
71
+ - `--asharyu-spacing-fine` (8px): 컴팩트 패딩, 태그 내부
72
+ - `--asharyu-spacing-moderate` (12px): 폼 컨트롤 내부 패딩
73
+ - `--asharyu-spacing-base` (16px): 표준 카드 패딩
74
+ - `--asharyu-spacing-void` (24px): 한지의 숨구멍 (표준 컴포넌트 여백)
75
+ - `--asharyu-spacing-wide` (32px): 그룹핑 여백
76
+ - `--asharyu-spacing-spacious` (48px): 섹션 간 여백
77
+
78
+ ---
79
+
80
+ ## 5. 기운생동 (Motion) 인터랙션 규칙
81
+ - **부드러운 전환 (상생 Flow)**: `transition: var(--asharyu-interaction-flow-sang-saeng);`
82
+ - **예리한 결단 피드백 (상극 Decisive)**: `transition: var(--asharyu-interaction-feedback-sang-geuk-decisive);`
83
+ - **담채 번짐 (Bleed Diffusion)**: `transition: var(--asharyu-interaction-theme-bleed);`
@@ -0,0 +1,110 @@
1
+ ---
2
+ name: asharyu-design-system
3
+ description: asharyu 디자인 시스템의 수석 아키텍트로서 컴포넌트 설계와 토큰 가이드라인을 제공합니다. 음양오행(陰陽五行)과 수묵·담채화의 미학(0.5px 예리한 묵선, 한지의 여백, 농담 그림자, 기운생동 모션)을 현대 UI로 구현하는 시스템입니다. asharyu 토큰 적용, Figma 디자인 토큰 연동, 신규 컴포넌트 개발, 스타일링 검토 및 WCAG 2.1 접근성 검증 시 반드시 이 스킬을 사용하세요.
4
+ ---
5
+
6
+ # asharyu Architecture & Motion Master
7
+
8
+ 당신은 동양의 음양오행(陰陽五行) 사상과 수묵의 미학을 현대적 인터페이스로 승화시키는 **asharyu** 디자인 시스템의 수석 아키텍트입니다.
9
+ 화면 속 기운(氣韻)의 흐름과 필치의 강약을 조절하며 '검의 예리함'과 '붓의 유연함'이 공존하는 **모던 담채(Modern Damchae)** 감성을 구현합니다.
10
+
11
+ ---
12
+
13
+ ## 1. 3대 핵심 철학
14
+
15
+ 1. **예리함(Sharpness)**: 0.5px의 묵선(`--asharyu-stroke-weight-sharp`)처럼 정보의 경계는 명확하고 날카로워야 합니다.
16
+ 2. **여백(Void)**: 한지(Yang)의 미학을 살려 정보 사이에 숨구멍(`--asharyu-spacing-void`)을 반드시 확보하십시오.
17
+ 3. **농담(Nong-dam)**: 단순한 그림자 대신 수묵화의 농담(담묵·중묵·농묵)으로 디지털 공간의 깊이를 표현하십시오.
18
+
19
+ ---
20
+
21
+ ## 2. 작업 모드
22
+
23
+ ### 모드 A — 토큰 및 설계 가이드라인 제공
24
+ 사용자가 컴포넌트 설계 원칙, 특정 UI에 적용할 토큰, 또는 Figma 토큰 연동 방법을 물을 때.
25
+ → `./references/tokens.md`를 참조하여 정확한 CSS 변수 및 Figma DTCG 토큰을 안내합니다.
26
+
27
+ ### 모드 B — 컴포넌트 직접 구현
28
+ 사용자가 새로운 컴포넌트 생성을 요청할 때.
29
+ → `./references/components.md` 패턴을 준수하여 묵선(Stroke), 여백(Void), 농담(Elevation), 상생 모션(Interaction)이 적용된 코드를 작성합니다.
30
+
31
+ ---
32
+
33
+ ## 3. 핵심 토큰 매핑 가이드
34
+
35
+ ### ① 색상 (오행 & 오간색)
36
+ - **배경 / 텍스트**: `--asharyu-color-semantic-background`, `--asharyu-color-semantic-text`
37
+ - **목(木) - Action**: 실행, 주 버튼 (`--asharyu-color-semantic-action-primary`)
38
+ - **화(火) - Danger**: 경고, 위험, 삭제 (`--asharyu-color-semantic-danger-primary`)
39
+ - **토(土) - Surface**: 카드, 컨테이너 배경 (`--asharyu-color-semantic-surface-primary`)
40
+ - **금(金) - Border**: 경계선, 구분선 (`--asharyu-color-semantic-border-primary`)
41
+ - **수(水) - Info**: 정보, 네비게이션 (`--asharyu-color-semantic-info-primary`)
42
+ - **오간색 (상태 피드백)**:
43
+ - 녹(綠): 완료/성공 (`--asharyu-color-semantic-status-success-primary`)
44
+ - 홍(紅): 위험 호버 (`--asharyu-color-semantic-status-alert-hover-primary`)
45
+ - 벽(碧): 포커스 링 (`--asharyu-color-semantic-status-action-focus-primary`)
46
+ - 유황(硫黃): 서브 서피스/주의 (`--asharyu-color-semantic-status-sub-surface-primary`)
47
+ - 자(紫): 액티브 하이라이트 (`--asharyu-color-semantic-status-info-active-primary`)
48
+
49
+ ### ② 공간과 여백 (Spacing & Void)
50
+ - `--asharyu-spacing-compact` (4px / 0.25rem): 찰나 (아이콘 간격)
51
+ - `--asharyu-spacing-fine` (8px / 0.5rem): 세목 (컴팩트 간격)
52
+ - `--asharyu-spacing-moderate` (12px / 0.75rem): 근거리 (리스트)
53
+ - `--asharyu-spacing-base` (16px / 1rem): 평상 (기본 패딩)
54
+ - `--asharyu-spacing-void` (24px / 1.5rem): **여백 (한지의 숨구멍, 표준 컴포넌트 여백)**
55
+ - `--asharyu-spacing-wide` (32px / 2rem): 심원 (섹션 내부)
56
+ - `--asharyu-spacing-spacious` (48px / 3rem): 대여백 (섹션 간)
57
+
58
+ ### ③ 농담 그림자 (Elevation & Depth)
59
+ - `--asharyu-elevation-none`: 평면
60
+ - `--asharyu-elevation-dam-muk`: 담묵(淡墨) — 카드, 드롭다운
61
+ - `--asharyu-elevation-jung-muk`: 중묵(中墨) — 팝오버, 플로팅 보드
62
+ - `--asharyu-elevation-nong-muk`: 농묵(濃墨) — 모달 다이얼로그
63
+ - `--asharyu-elevation-guk-muk`: 극묵(極墨) — 최상위 토스트
64
+
65
+ ### ④ 곡률 (Radius)
66
+ - `--asharyu-radius-sharp` (0px): 검의 예리한 각
67
+ - `--asharyu-radius-delicate` (4px): 절제된 모서리
68
+ - `--asharyu-radius-gentle` (8px): 온화한 곡률
69
+ - `--asharyu-radius-smooth` (12px): 유려한 곡률
70
+ - `--asharyu-radius-prominent` (16px): 넉넉한 둥글림
71
+ - `--asharyu-radius-full` (9999px): 태극, 아바타, 뱃지
72
+
73
+ ### ⑤ 필치와 모션 (Stroke & Motion)
74
+ - **묵선 (Stroke)**: `--asharyu-stroke-weight-sharp` (0.5px), `--asharyu-stroke-weight-fine` (1px)
75
+ - **번짐 (Bleed)**: `--asharyu-stroke-ink-bleed` (blur 1.2px)
76
+ - **상생 모션**: `transition: var(--asharyu-interaction-flow-sang-saeng);`
77
+ - **상극 결단**: `transition: var(--asharyu-interaction-feedback-sang-geuk-decisive);`
78
+
79
+ ---
80
+
81
+ ## 4. Figma 디자인 토큰 연동
82
+
83
+ Figma 및 Tokens Studio에서 디자인 시스템 토큰을 사용할 때는 다음 파일을 동기화합니다:
84
+ - **Tokens Studio / W3C DTCG**: `packages/design-token/dist/tokens.json`
85
+ - **Figma Variables JSON**: `packages/design-token/dist/figma-variables.json`
86
+ - `pnpm --filter asharyu-design-token build` 실행 시 항상 자동으로 최신화됩니다.
87
+
88
+ ---
89
+
90
+ ## 5. 구현 코드 스니펫 예시
91
+
92
+ ```tsx
93
+ import styled from '@emotion/styled';
94
+ import { tokens } from 'asharyu-design-token';
95
+
96
+ export const AsharyuContainer = styled.div`
97
+ background-color: ${tokens.color.semantic.surface.primary};
98
+ border: ${tokens.stroke.weight.sharp} solid ${tokens.color.semantic.stroke};
99
+ border-radius: ${tokens.radius.gentle};
100
+ padding: ${tokens.spacing.void};
101
+ box-shadow: ${tokens.elevation.damMuk};
102
+ transition: ${tokens.interaction.flow.sangSaeng};
103
+
104
+ &:hover {
105
+ border-width: ${tokens.stroke.weight.fine};
106
+ box-shadow: ${tokens.elevation.jungMuk};
107
+ transform: translateY(-2px);
108
+ }
109
+ `;
110
+ ```
@@ -0,0 +1,126 @@
1
+ # asharyu Component Design & Code Guidelines
2
+
3
+ > 컴포넌트 작성 시 본 가이드라인을 참조하십시오. 모든 구현은 CSS 변수 및 시맨틱 토큰 기반으로 작성되어야 합니다.
4
+
5
+ ---
6
+
7
+ ## 1. 컴포넌트 설계 4대 원칙
8
+
9
+ 1. **획(Stroke) 우선**: 인위적이고 강한 그림자 대신 예리한 묵선(`--asharyu-stroke-weight-sharp`)을 경계로 사용합니다.
10
+ 2. **시맨틱 토큰만 사용**: 임의의 색상코드(#7BA2BE, #fff)나 픽셀(16px, 24px)을 인라인으로 작성하지 않습니다.
11
+ 3. **여백(Void) 확보**: 숨구멍(`--asharyu-spacing-void`)을 두어 한지의 여백 미학을 살립니다.
12
+ 4. **농담(Elevation)의 깊이**: 깊이감 표현 시 `--asharyu-elevation-dam-muk` 등을 사용합니다.
13
+
14
+ ---
15
+
16
+ ## 2. 컴포넌트별 권장 템플릿
17
+
18
+ ### 1) Button (버튼)
19
+ ```css
20
+ .asharyu-btn {
21
+ display: inline-flex;
22
+ align-items: center;
23
+ justify-content: center;
24
+ padding: var(--asharyu-spacing-fine) var(--asharyu-spacing-base);
25
+ border-radius: var(--asharyu-radius-gentle);
26
+ border: var(--asharyu-stroke-weight-fine) solid var(--asharyu-color-semantic-action-primary);
27
+ background: var(--asharyu-color-semantic-background);
28
+ color: var(--asharyu-color-semantic-action-sharp);
29
+ font-size: var(--asharyu-font-semantic-button);
30
+ font-weight: var(--asharyu-font-weight-semibold);
31
+ transition: var(--asharyu-interaction-flow-sang-saeng);
32
+ cursor: pointer;
33
+ }
34
+
35
+ .asharyu-btn:hover {
36
+ background: var(--asharyu-color-semantic-action-primary);
37
+ color: #ffffff;
38
+ box-shadow: var(--asharyu-elevation-dam-muk);
39
+ transform: translateY(-1px);
40
+ }
41
+
42
+ .asharyu-btn:active {
43
+ background: var(--asharyu-color-semantic-action-deep);
44
+ transform: translateY(0);
45
+ }
46
+ ```
47
+
48
+ ### 2) Card / Surface (카드 및 컨테이너)
49
+ ```css
50
+ .asharyu-card {
51
+ background-color: var(--asharyu-color-semantic-surface-primary);
52
+ border: var(--asharyu-stroke-weight-sharp) solid var(--asharyu-color-semantic-border-primary);
53
+ border-radius: var(--asharyu-radius-gentle);
54
+ padding: var(--asharyu-spacing-void);
55
+ box-shadow: var(--asharyu-elevation-dam-muk);
56
+ transition: var(--asharyu-interaction-flow-sang-saeng);
57
+ }
58
+
59
+ .asharyu-card:hover {
60
+ border-color: var(--asharyu-color-semantic-stroke);
61
+ box-shadow: var(--asharyu-elevation-jung-muk);
62
+ transform: translateY(-2px);
63
+ }
64
+ ```
65
+
66
+ ### 3) Modal Dialog (모달)
67
+ ```css
68
+ .asharyu-modal-mask {
69
+ position: fixed;
70
+ inset: 0;
71
+ z-index: var(--asharyu-z-index-backdrop);
72
+ background-color: rgba(12, 12, 12, 0.6);
73
+ backdrop-filter: blur(2px);
74
+ }
75
+
76
+ .asharyu-modal-content {
77
+ position: fixed;
78
+ top: 50%;
79
+ left: 50%;
80
+ transform: translate(-50%, -50%);
81
+ z-index: var(--asharyu-z-index-modal);
82
+ width: 90%;
83
+ max-width: 520px;
84
+ background-color: var(--asharyu-color-semantic-background);
85
+ border: var(--asharyu-stroke-weight-sharp) solid var(--asharyu-color-semantic-stroke);
86
+ border-radius: var(--asharyu-radius-smooth);
87
+ padding: var(--asharyu-spacing-void);
88
+ box-shadow: var(--asharyu-elevation-nong-muk);
89
+ transition: var(--asharyu-interaction-flow-sang-saeng);
90
+ }
91
+ ```
92
+
93
+ ### 4) Bottom Navigation (하단 네비게이션)
94
+ ```css
95
+ .asharyu-bottom-nav {
96
+ position: fixed;
97
+ left: 0;
98
+ bottom: 0;
99
+ width: 100%;
100
+ height: 64px;
101
+ z-index: var(--asharyu-z-index-docked);
102
+ background-color: var(--asharyu-color-semantic-background);
103
+ border-top: var(--asharyu-stroke-weight-sharp) solid var(--asharyu-color-semantic-border-primary);
104
+ box-shadow: var(--asharyu-elevation-dam-muk);
105
+ display: flex;
106
+ align-items: center;
107
+ justify-content: space-around;
108
+ padding: 0 var(--asharyu-spacing-base);
109
+ }
110
+
111
+ .asharyu-bottom-nav-item {
112
+ display: flex;
113
+ flex-direction: column;
114
+ align-items: center;
115
+ gap: var(--asharyu-spacing-compact);
116
+ color: var(--asharyu-color-semantic-info-soft);
117
+ text-decoration: none;
118
+ font-size: var(--asharyu-font-semantic-caption);
119
+ transition: var(--asharyu-interaction-flow-sang-saeng);
120
+ }
121
+
122
+ .asharyu-bottom-nav-item.active,
123
+ .asharyu-bottom-nav-item:hover {
124
+ color: var(--asharyu-color-semantic-action-primary);
125
+ }
126
+ ```
@@ -0,0 +1,103 @@
1
+ # asharyu Design Token Reference
2
+
3
+ > 모든 CSS 변수는 `--asharyu-{category}-{path}` 형식을 따르며, JavaScript/TypeScript에서는 `tokens.{category}.{path}`로 접근할 수 있습니다.
4
+ > Figma 연동 시 `dist/tokens.json` (Tokens Studio) 및 `dist/figma-variables.json`을 사용합니다.
5
+
6
+ ---
7
+
8
+ ## 1. 색상 토큰 (Color Tokens)
9
+
10
+ ### 원색(原色) — Raw Color Scale
11
+ | 기운 | 의미 | 0 (Subtle) | 1 (Soft) | 2 (Primary) | 3 (Deep) | 4 (Sharp) |
12
+ |---|---|---|---|---|---|---|
13
+ | **양(陽)** | 여백·라이트 배경 | `#ffffff` | `#fefdfa` | `#fdfaf4` | `#f7f2e1` | `#f1ebd0` |
14
+ | **음(陰)** | 묵선·다크 배경 | `#333333` | `#1a1a1a` | `#0c0c0c` | `#060606` | `#000000` |
15
+ | **목(木)** | Action | `#ECF2F6` | `#AEC6D7` | `#7BA2BE` | `#5C83A2` | `#3E6586` |
16
+ | **화(火)** | Danger/Alert | `#F4E7E7` | `#DDA8A8` | `#C96B6B` | `#A74E4E` | `#853131` |
17
+ | **토(土)** | Surface/Container | `#F6F1E3` | `#E8DDBF` | `#D9C58F` | `#B5A16B` | `#917D47` |
18
+ | **금(金)** | Border/Confirm | `#FAFAFA` | `#F2F2F2` | `#E2E2E2` | `#C2C2C2` | `#A2A2A2` |
19
+ | **수(水)** | Navigation/Info | `#999999` | `#555555` | `#333333` | `#222222` | `#111111` |
20
+ | **홍(紅)** | Alert-Hover | `#F2E5E5` | `#E5C7C7` | `#D6A6A6` | `#B37D7D` | `#915555` |
21
+ | **벽(碧)** | Action-Focus | `#E6EEF4` | `#CEDAE3` | `#AFC2D0` | `#8AA1B2` | `#668194` |
22
+ | **녹(綠)** | Success/Safe | `#E7F0E6` | `#CDDAC9` | `#ACC4A6` | `#8AA885` | `#698C64` |
23
+ | **유황(硫黃)** | Sub-Surface/Warning | `#D0CCBE` | `#AFA895` | `#867D61` | `#6D654E` | `#544D3C` |
24
+ | **자(紫)** | Info-Active/Special | `#D1BFC0` | `#A9898B` | `#7E4F53` | `#653A3D` | `#4C2628` |
25
+
26
+ ### 시맨틱 색상 — CSS 변수
27
+ 컴포넌트는 언제나 시맨틱 변수를 참조합니다. 라이트/다크(`data-theme="dark"`) 모드 전환 시 CSS 변수가 자동으로 스왑됩니다.
28
+
29
+ ```css
30
+ /* 기본 배경/텍스트 */
31
+ --asharyu-color-semantic-background
32
+ --asharyu-color-semantic-text
33
+ --asharyu-color-semantic-stroke
34
+
35
+ /* 오행 (각 5단계: subtle, soft, primary, deep, sharp) */
36
+ --asharyu-color-semantic-action-primary /* 목(木) */
37
+ --asharyu-color-semantic-danger-primary /* 화(火) */
38
+ --asharyu-color-semantic-surface-primary /* 토(土) */
39
+ --asharyu-color-semantic-border-primary /* 금(金) */
40
+ --asharyu-color-semantic-info-primary /* 수(水) */
41
+
42
+ /* 오간색 */
43
+ --asharyu-color-semantic-status-success-primary /* 녹(綠) */
44
+ --asharyu-color-semantic-status-alert-hover-primary /* 홍(紅) */
45
+ --asharyu-color-semantic-status-action-focus-primary /* 벽(碧) */
46
+ --asharyu-color-semantic-status-sub-surface-primary /* 유황(硫黃) */
47
+ --asharyu-color-semantic-status-info-active-primary /* 자(紫) */
48
+ ```
49
+
50
+ ---
51
+
52
+ ## 2. 공간과 여백 토큰 (Spacing & Void)
53
+
54
+ | 키 | CSS 변수 | 값 (rem) | 값 (px) | 용도 및 의미 |
55
+ |---|---|---|---|---|
56
+ | `compact` | `--asharyu-spacing-compact` | `0.25rem` | 4px | 찰나: 아이콘-텍스트 간격, 뱃지 패딩 |
57
+ | `fine` | `--asharyu-spacing-fine` | `0.5rem` | 8px | 세목: 인라인 요소 간격, 좁은 간격 |
58
+ | `moderate` | `--asharyu-spacing-moderate` | `0.75rem` | 12px | 근거리: 폼 컨트롤 및 리스트 아이템 |
59
+ | `base` | `--asharyu-spacing-base` | `1rem` | 16px | 평상: 카드 기본 패딩 |
60
+ | `void` | `--asharyu-spacing-void` | `1.5rem` | 24px | **여백: 한지의 숨구멍 (표준 컴포넌트 여백)** |
61
+ | `wide` | `--asharyu-spacing-wide` | `2rem` | 32px | 심원: 섹션 내부 여백 |
62
+ | `spacious` | `--asharyu-spacing-spacious` | `3rem` | 48px | 대여백: 대형 카드, 섹션 구분 |
63
+ | `vast` | `--asharyu-spacing-vast` | `4rem` | 64px | 광막: 페이지 레벨 여백 |
64
+
65
+ ---
66
+
67
+ ## 3. 곡률 토큰 (Radius)
68
+
69
+ | 키 | CSS 변수 | 값 | 용도 및 미학 |
70
+ |---|---|---|---|
71
+ | `sharp` | `--asharyu-radius-sharp` | `0px` | 예리함: 검의 단면처럼 각진 모서리 |
72
+ | `delicate` | `--asharyu-radius-delicate` | `0.25rem` (4px) | 정갈함: 태그, 작은 버튼 |
73
+ | `gentle` | `--asharyu-radius-gentle` | `0.5rem` (8px) | 온화함: 카드, 입력창, 드롭다운 |
74
+ | `smooth` | `--asharyu-radius-smooth` | `0.75rem` (12px) | 유려함: 모달 다이얼로그, 플로팅 패널 |
75
+ | `prominent` | `--asharyu-radius-prominent` | `1rem` (16px) | 원만함: 대형 컨테이너 |
76
+ | `full` | `--asharyu-radius-full` | `9999px` | 태극: 원형 버튼, 필, 아바타 |
77
+
78
+ ---
79
+
80
+ ## 4. 농담(濃淡) 그림자 토큰 (Elevation)
81
+
82
+ | 키 | CSS 변수 | 용도 및 의미 |
83
+ |---|---|---|
84
+ | `none` | `--asharyu-elevation-none` | 높이 없음 |
85
+ | `damMuk` | `--asharyu-elevation-dam-muk` | **담묵(淡墨)**: 은은한 먹빛, 카드 호버 표면, 드롭다운 |
86
+ | `jungMuk` | `--asharyu-elevation-jung-muk` | **중묵(中墨)**: 중간 먹빛, 팝오버, 플로팅 보드 |
87
+ | `nongMuk` | `--asharyu-elevation-nong-muk` | **농묵(濃墨)**: 짙은 먹빛, 모달 다이얼로그 |
88
+ | `gukMuk` | `--asharyu-elevation-guk-muk` | **극묵(極墨)**: 최상위 토스트, 플로팅 긴급 알림 |
89
+
90
+ ---
91
+
92
+ ## 5. 층위 토큰 (Z-Index)
93
+
94
+ - `--asharyu-z-index-base`: `0`
95
+ - `--asharyu-z-index-docked`: `10` (바텀 네비게이션)
96
+ - `--asharyu-z-index-sticky`: `100` (상단 헤더)
97
+ - `--asharyu-z-index-dropdown`: `200` (드롭다운, 셀렉트)
98
+ - `--asharyu-z-index-backdrop`: `500` (모달 배경 마스크)
99
+ - `--asharyu-z-index-modal`: `600` (모달 본체)
100
+ - `--asharyu-z-index-popover`: `700` (팝오버)
101
+ - `--asharyu-z-index-toast`: `800` (토스트 알림)
102
+ - `--asharyu-z-index-tooltip`: `900` (툴팁)
103
+ - `--asharyu-z-index-max`: `9999` (최고위)