atomsystem 0.4.1 โ 0.5.0
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.md +112 -52
- package/atom.design.md +17 -0
- package/components/blocks/BlockDetailPageContent.tsx +337 -0
- package/components/blocks/BlockViewerCard.tsx +229 -0
- package/components/blocks/BlocksSidebar.tsx +93 -0
- package/components/blocks/CardListBlock.tsx +214 -0
- package/components/blocks/FileExplorerBlock.tsx +203 -0
- package/components/blocks/InteractiveChatBlock.tsx +217 -0
- package/components/blocks/MetricStatsBlock.tsx +150 -0
- package/components/blocks/PricingPlanBlock.tsx +175 -0
- package/components/blocks/RealtimeChartBlock.tsx +242 -0
- package/components/blocks/SliderShowcaseBlock.tsx +136 -0
- package/components/blocks/index.ts +8 -0
- package/components/ui/Container.tsx +45 -0
- package/components/ui/Layout.tsx +220 -0
- package/components/ui/Switch.tsx +39 -0
- package/components/ui/Table.tsx +88 -0
- package/components/ui/Tabs.tsx +58 -0
- package/components/ui/Tree.tsx +121 -0
- package/components/ui/index.ts +6 -0
- package/css/atom-ui.css +41 -716
- package/dist/cli.cjs +633 -41
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +630 -39
- package/dist/cli.js.map +1 -1
- package/dist/index.cjs +265 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +13 -4
- package/dist/index.d.ts +13 -4
- package/dist/index.js +265 -3
- package/dist/index.js.map +1 -1
- package/package.json +7 -1
- package/presets/agents.guide.md +49 -0
- package/presets/blocks.md +101 -0
- package/presets/components.md +142 -0
- package/presets/default.design.md +17 -0
- package/tokens/token.json +63 -1
- package/tokens/tokens.json +63 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "atomsystem",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"homepage": "https://system.atomground.com",
|
|
6
6
|
"repository": {
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
"./uxPattern.md": "./presets/uxPattern.md",
|
|
29
29
|
"./skill": "./skills/atomsystem.skill.md",
|
|
30
30
|
"./components/*": "./components/ui/*.tsx",
|
|
31
|
+
"./blocks/*": "./components/blocks/*.tsx",
|
|
31
32
|
"./css/atom-ui.css": "./css/atom-ui.css",
|
|
32
33
|
"./package.json": "./package.json"
|
|
33
34
|
},
|
|
@@ -37,6 +38,7 @@
|
|
|
37
38
|
"presets",
|
|
38
39
|
"skills",
|
|
39
40
|
"components/ui",
|
|
41
|
+
"components/blocks",
|
|
40
42
|
"css",
|
|
41
43
|
"atom.design.md",
|
|
42
44
|
"atom.uxPattern.md",
|
|
@@ -55,6 +57,8 @@
|
|
|
55
57
|
"example:mib:test": "npm --prefix examples/mib-browser run test:e2e",
|
|
56
58
|
"start": "next start",
|
|
57
59
|
"lint": "next lint",
|
|
60
|
+
"lint:design": "impeccable detect app components css presets",
|
|
61
|
+
"audit:recursive": "tsx scripts/audit-recursive.ts",
|
|
58
62
|
"test:e2e": "playwright test",
|
|
59
63
|
"test:e2e:ui": "playwright test --ui",
|
|
60
64
|
"test:e2e:report": "playwright show-report"
|
|
@@ -90,6 +94,7 @@
|
|
|
90
94
|
"ora": "^9.3.0",
|
|
91
95
|
"prompts": "^2.4.2",
|
|
92
96
|
"react": "^19.2.5",
|
|
97
|
+
"react-arborist": "^4.0.1",
|
|
93
98
|
"react-dom": "^19.2.5",
|
|
94
99
|
"react-modal": "^3.16.3",
|
|
95
100
|
"react-responsive": "^10.0.1",
|
|
@@ -111,6 +116,7 @@
|
|
|
111
116
|
"@vitest/coverage-v8": "^3.1.1",
|
|
112
117
|
"eslint": "^8",
|
|
113
118
|
"eslint-config-next": "15.0.3",
|
|
119
|
+
"impeccable": "^4.8.1",
|
|
114
120
|
"playwright": "^1.51.1",
|
|
115
121
|
"postcss": "^8.5.10",
|
|
116
122
|
"tailwindcss": "^4.2.2",
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# ๐๏ธ AtomSystem Universal AI Coding Guidelines
|
|
2
|
+
|
|
3
|
+
> ์ด ํ๋ก์ ํธ๋ **AtomSystem (Universal Design Token & Agentic UI System)**์ ๊ณต์ ๋์์ธ ์์คํ
์ผ๋ก ์ฑํํ๊ณ ์์ต๋๋ค.
|
|
4
|
+
> ๋ชจ๋ AI ์ด์์คํดํธ(Cursor, Claude, Copilot, Antigravity, Windsurf ๋ฑ)๋ ์๋ก์ด UI๋ฅผ ๊ตฌํํ๊ฑฐ๋ ๊ธฐ์กด ์ฝ๋๋ฅผ ๋ฆฌํฉํ ๋งํ ๋ ์๋ ์์น์ **์ ๋์ ์ผ๋ก ์ค์**ํด์ผ ํฉ๋๋ค.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## ๐ 1. ํต์ฌ ์ํคํ
์ฒ: 4๋จ๊ณ ๋ ๊ณ ์กฐ๋ฆฝ ํ์ดํ๋ผ์ธ
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
[1. W3C DTCG Tokens] โโ> [2. UI Components] โโ> [3. Content Blocks] โโ> [4. UX Patterns / Templates]
|
|
12
|
+
(CSS ๋ณ์: ์์/๊ฐ๊ฒฉ) (Button, Card, Badge) (RealtimeChart, Chat) (Dashboard, Checkout)
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
1. **Tokens (`atom.design.md`, `tokens/token.json`)**:
|
|
16
|
+
- ๋ชจ๋ ์์, ๊ฐ๊ฒฉ, ๋ณด๋, ํฐํธ ํฌ๊ธฐ๋ ๋ฐ๋์ CSS ๋ณ์(`var(--text-primary)`, `var(--bg-primary)`, `var(--border-subtle)` ๋ฑ)๋ฅผ ์ฌ์ฉํฉ๋๋ค.
|
|
17
|
+
- **ํ๋์ฝ๋ฉ ์ ๋ ๊ธ์ง**: `text-blue-500`, `bg-[#123456]`, `p-[13px]`, `border-gray-200` ๋ฑ ์์์ ์ธ๋ผ์ธ ๊ฐ ์ฌ์ฉ์ ์๊ฒฉํ ๊ธ์งํฉ๋๋ค.
|
|
18
|
+
2. **Components (`atom.components.md`, `components/ui/`)**:
|
|
19
|
+
- ํ๋ฉด์ ๊ตฌ์ฑํ๋ ๊ธฐ์ด ์์์
๋๋ค (`Button`, `Card`, `Badge`, `Input`, `Table`, `Tabs`, `Switch`, `Modal` ๋ฑ).
|
|
20
|
+
- ๋ ๋ฆผ ์์ ํ๊ทธ(`<button>`, `<div class="rounded-lg ...">`)๋ฅผ ์์ฑํ์ง ์๊ณ , ๊ฒ์ฆ๋ `components/ui/` ์ปดํฌ๋ํธ๋ฅผ importํ์ฌ ์ฌ์ฉํฉ๋๋ค.
|
|
21
|
+
3. **Blocks (`atom.blocks.md`, `components/blocks/`)**:
|
|
22
|
+
- ์ปดํฌ๋ํธ๋ค์ ์กฐ๋ฆฝํ์ฌ ์์ฑํ ๋
๋ฆฝ ๊ธฐ๋ฅํ ์ฝํ
์ธ ๋ธ๋ก์
๋๋ค (`realtime-chart`, `interactive-chat`, `pricing-table`, `card-list`, `file-explorer` ๋ฑ).
|
|
23
|
+
- ๋ธ๋ก์ ํ์ํ ์ ์ปดํฌ๋ํธ๊ฐ ์๋ค๋ฉด, ์ปดํฌ๋ํธ๋ฅผ ๋จผ์ `components/ui/`์ ์ ์คํ๊ณ ๋ธ๋ก์ ์กฐ๋ฆฝํฉ๋๋ค (**Component-First ์์น**).
|
|
24
|
+
4. **UX Patterns & Templates (`atom.uxPattern.md`)**:
|
|
25
|
+
- ์์ฑ๋ ๋ธ๋ก๊ณผ ๋ ์ด์์์ ์กฐ๋ฆฝํ์ฌ ์์ฑํ ์ฌ์ฉ์ ๊ฒฝํ(๋์๋ณด๋, ํผ ์ ํจ์ฑ, ๊ฒฐ์ ํ๋ก์ฐ ๋ฑ)์ ๊ตฌ์ถํฉ๋๋ค.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## ๐จ 2. ํ์ค ์๋งจํฑ CSS ๋ณ์ ๊ท๊ฒฉ
|
|
30
|
+
|
|
31
|
+
| ์ฉ๋ | ๋ผ์ดํธ ๋ชจ๋ | ๋คํฌ ๋ชจ๋ | CSS ๋ณ์ ํ๊ธฐ |
|
|
32
|
+
|---|---|---|---|
|
|
33
|
+
| ๊ธฐ๋ณธ ๋ฐฐ๊ฒฝ | `#ffffff` | `#0a0a0a` | `var(--bg-primary)` ๋๋ `bg-(--bg-primary)` |
|
|
34
|
+
| ๋ณด์กฐ ํ๋ฉด | `#f9f9fb` | `#141414` | `var(--bg-secondary)` ๋๋ `bg-(--bg-secondary)` |
|
|
35
|
+
| ๋ณธ๋ฌธ ํ
์คํธ | `#111111` | `#ededed` | `var(--text-primary)` ๋๋ `text-(--text-primary)` |
|
|
36
|
+
| ๋ณด์กฐ ํ
์คํธ | `#666666` | `#a0a0a0` | `var(--text-secondary)` ๋๋ `text-(--text-secondary)` |
|
|
37
|
+
| ์
์ ๋ณด๋ | `#eaeaea` | `#222222` | `var(--border-subtle)` ๋๋ `border-(--border-subtle)` |
|
|
38
|
+
| ๊ฐ์กฐ ๋ณด๋ | `#d4d4d8` | `#333333` | `var(--border-strong)` ๋๋ `border-(--border-strong)` |
|
|
39
|
+
| ๊ธฐ๋ณธ ๊ณก๋ฅ | `6px` | `6px` | `var(--radius)` ๋๋ `rounded-(--radius)` |
|
|
40
|
+
| ์์ ๊ณก๋ฅ | `4px` | `4px` | `var(--radius-sm)` ๋๋ `rounded-(--radius-sm)` |
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## ๐ก 3. AI ์์
์ ํ์ ์ฒดํฌ๋ฆฌ์คํธ
|
|
45
|
+
- [ ] Tailwind ์์์ ์ปฌ๋ฌ(`blue-500`, `gray-100`)๋ฅผ ํ๋์ฝ๋ฉํ์ง ์๊ณ ์๋งจํฑ ํ ํฐ ๋ณ์๋ฅผ ์ฌ์ฉํ๋๊ฐ?
|
|
46
|
+
- [ ] ๋ฒํผ, ์นด๋, ๋ฑ์ง ๋ฑ UI๋ฅผ ๋ ๋ฆผ ํ๊ทธ ๋์ `components/ui/`์์ importํ์ฌ ์กฐ๋ฆฝํ๋๊ฐ?
|
|
47
|
+
- [ ] ๋ณต์กํ ํ๋ฉด์ ๋ง๋ค ๋ `atom.blocks.md` ๋ฐ `atom.uxPattern.md`์ ๊ฒ์ฆ๋ ํจํด์ ๋ฐ๋๋๊ฐ?
|
|
48
|
+
- [ ] ๋น ๋ฐ์ดํฐ ์ํ(Empty State), ๋ก๋ฉ ์ํ(Loading/Skeleton), ํค๋ณด๋ ํฌ์ปค์ค๋ง(A11y)์ ๋ณด์ฅํ๋๊ฐ?
|
|
49
|
+
- [ ] 10px ๊ทน์ ํฐํธ๋ ๊ณผ๋ํ ๊ทธ๋ผ๋์ธํธ, ํ๊ด์ ๋ฑ AI ์ฌ๋กญ(Visual Noise)์ ๋ฐฐ์ ํ๋๊ฐ?
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# ๐งฑ AtomSystem Design Blocks Guide (atom.blocks.md)
|
|
2
|
+
|
|
3
|
+
> ํ์ด์ง ์ ์ฒด๊ฐ ์๋, ํ์ด์ง ๋ด๋ถ์ ๊ฒฐํฉ(Composition)๋๋ ์ค๋ฌด ์์ฑํ ๋
๋ฆฝ ์ฝํ
์ธ ๋ธ๋ก ๋ช
์ธ์์
๋๋ค.
|
|
4
|
+
> **Component-First ์์น**: ๋ธ๋ก์ ๋ ๋ฆผ HTML ํ๊ทธ๊ฐ ์๋๋ผ, ๋ฐ๋์ ๊ฒ์ฆ๋ ์์ ์ปดํฌ๋ํธ(`Button`, `Card`, `Badge`, `Input`, `Table` ๋ฑ)๋ฅผ ๋ ๊ณ ์กฐ๊ฐ ์ผ์ ์กฐ๋ฆฝํฉ๋๋ค.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## ๐งฑ 4๋ ๋ ๊ณ ์กฐ๋ฆฝ ํ์ดํ๋ผ์ธ (Lego Assembly Pipeline)
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
[1. W3C DTCG Tokens] โโ> [2. UI Components] โโ> [3. Content Blocks] โโ> [4. Templates / Screens]
|
|
12
|
+
(CSS ๋ณ์: ์์/๊ฐ๊ฒฉ) (Button, Card, Badge) (RealtimeChart, Chat) (Dashboard, Checkout)
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
1. **Tokens**: ๋ธ๋ก์ ๋ชจ๋ ๊ณก๋ฅ , ๊ฐ๊ฒฉ, ๋ณด๋, ์ปฌ๋ฌ๋ CSS ๋ณ์(`var(--atom-*)`, `var(--bg-primary)` ๋ฑ)๋ก ์ฃผ์
๋ฉ๋๋ค.
|
|
16
|
+
2. **Components**: ๋ธ๋ก์ ๋ฐ๋์ `components/ui/`์ ์์ ์ํฐ ์ปดํฌ๋ํธ๋ฅผ ์ํฌํธํ์ฌ ์กฐ๋ฆฝํฉ๋๋ค.
|
|
17
|
+
3. **Blocks**: ํน์ ๊ธฐ๋ฅ/์ฝํ
์ธ (์ฐจํธ, ์ฑ, ์๊ธ์ ๋ฑ)๋ฅผ ์๊ฒฐ์ฑ ์๊ฒ ์ํํ๋ ๋
๋ฆฝ ๋ชจ๋์
๋๋ค.
|
|
18
|
+
4. **Templates**: 1๊ฐ ์ด์์ ๋ธ๋ก๊ณผ ๋ ์ด์์์ด ๊ฒฐํฉ๋์ด ์ต์ข
ํ๋ฉด(๋์๋ณด๋, ๋๋ฉ ๋ฑ)์ ๊ตฌ์ฑํฉ๋๋ค.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## ๐ฆ 7๋ ํต์ฌ ๋์์ธ ๋ธ๋ก ์นดํ๋ก๊ทธ
|
|
23
|
+
|
|
24
|
+
### 1. ์ค์๊ฐ ์ฐจํธ & ํฑ ์๊ณ์ด ๋ธ๋ก (`realtime-chart`)
|
|
25
|
+
- **๋ถ๋ฅ**: `chart` (Analytics & FinTech)
|
|
26
|
+
- **์กฐ๋ฆฝ ์ปดํฌ๋ํธ**: `Card`, `Button`, `Badge`
|
|
27
|
+
- **์ฃผ์
ํ ํฐ**: `--text-primary`, `--bg-primary`, `--border-subtle`, `--radius`
|
|
28
|
+
- **ํต์ฌ ๊ธฐ๋ฅ**:
|
|
29
|
+
- 1์ด ๋จ์ ์ค์๊ฐ ํฑ ๋ฐ์ดํฐ ์คํธ๋ฆฌ๋ฐ ์๋ฎฌ๋ ์ด์
(์ฌ์/์ผ์์ ์ง ํ ๊ธ)
|
|
30
|
+
- 0KB ์์ SVG ๊ธฐ๋ฐ ๋ผ์ธ ์ฐจํธ ๋ฐ ์บ๋ค์คํฑ(Candle) ๋ชจ๋ ์ ํ
|
|
31
|
+
- ์๊ฐ ๋ฒ์ ํํฐ (1m, 5m, 1h, 1d) ๋ฐ 24h High/Low/Volume ์์ฝ ์คํฏ
|
|
32
|
+
- **๊ฒฐํฉ ํ
ํ๋ฆฟ**: SaaS ์ฑ๊ณผ ๋ถ์ ๋์๋ณด๋ ๋ฉ์ธ ์บ๋ฒ์ค, ๊ธ์ต ์์ฐ ๋ชจ๋ํฐ๋ง ํ๋ฉด
|
|
33
|
+
|
|
34
|
+
### 2. ์ธํฐ๋ํฐ๋ธ AI ์ฑ & ๋ฉ์ ์ ๋ธ๋ก (`interactive-chat`)
|
|
35
|
+
- **๋ถ๋ฅ**: `chat` (AI Assistant & Messenger)
|
|
36
|
+
- **์กฐ๋ฆฝ ์ปดํฌ๋ํธ**: `Card`, `Input`, `Button`, `Badge`
|
|
37
|
+
- **์ฃผ์
ํ ํฐ**: `--text-primary`, `--bg-primary`, `--border-subtle`, `--radius`
|
|
38
|
+
- **ํต์ฌ ๊ธฐ๋ฅ**:
|
|
39
|
+
- ๋ฐ์ /์์ ๋งํ์ ์ ๋ ฌ (์ก์ ์: ์ฐ์ธก ๊ณ ๋๋น, ์์ ์: ์ข์ธก ์ํผ์ค)
|
|
40
|
+
- ์์ฃผ ๋ฌป๋ ์ง๋ฌธ(FAQ) ์ํด๋ฆญ ๋น ๋ฅธ ์ ์ก ์ ์ ์นฉ (๊ฐ๋ก ์คํฌ๋กค)
|
|
41
|
+
- ํ์ดํ ์ค ์ ๋๋ฉ์ด์
์ธ๋์ผ์ดํฐ ๋ฐ ์๋ ์คํฌ๋กค(Auto-scroll)
|
|
42
|
+
- **๊ฒฐํฉ ํ
ํ๋ฆฟ**: ์จ๋๋งจ๋ AI ์ฝํ์ผ๋ฟ ๋๋ก์ด, 1:1 ๊ณ ๊ฐ ์๋ด ์ผํฐ ํ๋ฉด
|
|
43
|
+
|
|
44
|
+
### 3. ํ๋ ๋น๊ต & ๊ฐ๊ฒฉ ์ ์ฑ
๋ธ๋ก (`pricing-table`)
|
|
45
|
+
- **๋ถ๋ฅ**: `pricing` (Conversion & Subscriptions)
|
|
46
|
+
- **์กฐ๋ฆฝ ์ปดํฌ๋ํธ**: `Card`, `Button`, `Badge`
|
|
47
|
+
- **์ฃผ์
ํ ํฐ**: `--text-primary`, `--bg-primary`, `--border-subtle`, `--border-strong`
|
|
48
|
+
- **ํต์ฌ ๊ธฐ๋ฅ**:
|
|
49
|
+
- ์๊ฐ / ์ฐ๊ฐ(20% ํ ์ธ) ๊ฒฐ์ ์ฃผ๊ธฐ ์ํด๋ฆญ ํ ๊ธ ์ค์์น ๋ฐ ๊ธ์ก ์ค์๊ฐ ์ฌ๊ณ์ฐ
|
|
50
|
+
- 3๋จ๊ณ ํฐ์ด(Starter, Pro, Enterprise) ๋น๊ต ๊ตฌ์กฐ
|
|
51
|
+
- ์ถ์ฒ ํ๋(Pro) 1px ๋ณผ๋ ๋ณด๋ ํ์ด๋ผ์ดํธ ๋ฐ ์ํด๋ฆญ CTA
|
|
52
|
+
- ํฐ์ด๋ณ ํฌํจ/๋ฏธํฌํจ ๊ธฐ๋ฅ ์ฒดํฌ๋ฆฌ์คํธ
|
|
53
|
+
- **๊ฒฐํฉ ํ
ํ๋ฆฟ**: SaaS ๊ตฌ๋
๋๋ฉ ํ์ด์ง ์๊ธํ, ์
๊ทธ๋ ์ด๋ ๋ชจ๋ฌ
|
|
54
|
+
|
|
55
|
+
### 4. ๋ฐ์ํ ํํฐ ์นด๋ ์ปฌ๋ ์
๋ธ๋ก (`card-list`)
|
|
56
|
+
- **๋ถ๋ฅ**: `card` (Showcase & Directory)
|
|
57
|
+
- **์กฐ๋ฆฝ ์ปดํฌ๋ํธ**: `Card`, `Button`, `Badge`, `Input`
|
|
58
|
+
- **์ฃผ์
ํ ํฐ**: `--text-primary`, `--bg-primary`, `--border-subtle`
|
|
59
|
+
- **ํต์ฌ ๊ธฐ๋ฅ**:
|
|
60
|
+
- ์ค์๊ฐ ๊ฒ์ ์ธํ ๋ฐ ์นดํ
๊ณ ๋ฆฌ ํํฐ ํญ
|
|
61
|
+
- ๊ทธ๋ฆฌ๋(3์ด) โ ๋ฆฌ์คํธ(1์ด) ๋ทฐํฌํธ ์ํด๋ฆญ ํ ๊ธ
|
|
62
|
+
- ๋ถ๋งํฌ ํ ๊ธ ๋ฐ ํธ๋ฒ ํผ๋๋ฐฑ
|
|
63
|
+
- **๊ฒฐํฉ ํ
ํ๋ฆฟ**: ๋ฆฌ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ์ปดํฌ๋ํธ ์นดํ๋ก๊ทธ, ์ฑ์คํ ์ด ํ์๊ธฐ
|
|
64
|
+
|
|
65
|
+
### 5. ๋น์ฉ ์๋ฎฌ๋ ์ดํฐ & ์บ๋ฌ์
์ฌ๋ผ์ด๋ ๋ธ๋ก (`interactive-slider`)
|
|
66
|
+
- **๋ถ๋ฅ**: `slider` (Simulation & Control)
|
|
67
|
+
- **์กฐ๋ฆฝ ์ปดํฌ๋ํธ**: `Card`, `Slider`, `Button`, `Badge`
|
|
68
|
+
- **์ฃผ์
ํ ํฐ**: `--text-primary`, `--bg-primary`, `--border-subtle`
|
|
69
|
+
- **ํต์ฌ ๊ธฐ๋ฅ**:
|
|
70
|
+
- ์ฌ์ฉ์ ์/์คํ ๋ฆฌ์ง ์ฉ๋ ์ฌ๋ผ์ด๋ ์กฐ์ ์ ๋ฐ๋ฅธ ์ค์๊ฐ ๊ฒฌ์ ๋์ ๊ณ์ฐ๊ธฐ
|
|
71
|
+
- ์ค์์ดํ ๊ฐ๋ฅํ ์ฌ๋ผ์ด๋ ์บ๋ฌ์
์ผ์ผ์ด์ค ํญ
|
|
72
|
+
- **๊ฒฐํฉ ํ
ํ๋ฆฟ**: ํด๋ผ์ฐ๋ ์ธํ๋ผ ๊ฒฌ์ ๊ณ์ฐ๊ธฐ, ์จ๋ณด๋ฉ ์ธํฐ๋ํฐ๋ธ ๊ฐ์ด๋
|
|
73
|
+
|
|
74
|
+
### 6. ๋น์ฆ๋์ค ๋ฉํธ๋ฆญ & 4๋ KPI ์คํฏ ๋ธ๋ก (`metric-stats`)
|
|
75
|
+
- **๋ถ๋ฅ**: `stats` (Executive Dashboard)
|
|
76
|
+
- **์กฐ๋ฆฝ ์ปดํฌ๋ํธ**: `Card`, `Badge`
|
|
77
|
+
- **์ฃผ์
ํ ํฐ**: `--text-primary`, `--bg-primary`, `--border-subtle`
|
|
78
|
+
- **ํต์ฌ ๊ธฐ๋ฅ**:
|
|
79
|
+
- ๋งค์ถ, ํ์ฑ ์ ์ , ๊ฐ๋๋ฅ , ์ ํ์จ 4๋ ํต์ฌ ์งํ ์์ฝ
|
|
80
|
+
- ์ ์ฃผ ๋๋น ์ฆ๊ฐ ๋ฐฐ์ง (+14.8%) ๋ฐ ๋ฏธ๋ ์ธ๋ผ์ธ ์คํํฌ๋ผ์ธ ํธ๋ ๋
|
|
81
|
+
- **๊ฒฐํฉ ํ
ํ๋ฆฟ**: ๊ด๋ฆฌ์ ๋์๋ณด๋ ์๋จ ์๋จธ๋ฆฌ, ํ๋ก์ ํธ ์ค๋ฒ๋ทฐ
|
|
82
|
+
|
|
83
|
+
### 7. ํ๋ก๋์
ํ์ผ ํ์๊ธฐ & ๊ณ์ธต ํธ๋ฆฌ ๋ธ๋ก (`file-explorer`)
|
|
84
|
+
- **๋ถ๋ฅ**: `files` (Developer Tools)
|
|
85
|
+
- **์กฐ๋ฆฝ ์ปดํฌ๋ํธ**: `Card`, `Button`, `Badge`
|
|
86
|
+
- **์ฃผ์
ํ ํฐ**: `--text-primary`, `--bg-primary`, `--border-subtle`
|
|
87
|
+
- **ํต์ฌ ๊ธฐ๋ฅ**:
|
|
88
|
+
- ํด๋ ๊ณ์ธต ํธ๋ฆฌ ์ฌ์ด๋๋ฐ (ํ์ฅ/์ถ์ ์์ฝ๋์ธ)
|
|
89
|
+
- ๋๋ ํ ๋ฆฌ ๊ฒฝ๋ก ๋ธ๋ ๋ํฌ๋ผ ๋ฐ ๊ทธ๋ฆฌ๋/๋ฆฌ์คํธ ํ ๊ธ
|
|
90
|
+
- ํ์ผ ํ์ฅ์๋ณ ์์ด์ฝ ๋งคํ ๋ฐ ์ค์๊ฐ ํ์ผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํจ๋
|
|
91
|
+
- **๊ฒฐํฉ ํ
ํ๋ฆฟ**: ์น IDE ์ฝ๋ ํธ์ง๊ธฐ, ํด๋ผ์ฐ๋ ์คํ ๋ฆฌ์ง ๋งค๋์
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## ๐ AI Agent๋ฅผ ์ํ ๋ธ๋ก ์์ฑ ์ง์นจ
|
|
96
|
+
1. **์์์ Tailwind ์์ ํ๋์ฝ๋ฉ ์๊ฒฉ ๊ธ์ง**:
|
|
97
|
+
- `text-blue-500`, `bg-gray-100` ๋์ ์๋งจํฑ ํ ํฐ `text-(--text-primary)`, `bg-(--bg-primary)`, `border-(--border-subtle)`์ ์ฌ์ฉํฉ๋๋ค.
|
|
98
|
+
2. **์์ `<button>` ๋ ๋ฆผ ํ๊ทธ ๊ธ์ง**:
|
|
99
|
+
- ๋ธ๋ก ๋ด๋ถ์ ๋ชจ๋ ์ก์
๋ฒํผ์ `components/ui/Button.tsx`์ `<Button variant="primary|secondary|outline|ghost">` ์ปดํฌ๋ํธ๋ก ์กฐ๋ฆฝํฉ๋๋ค.
|
|
100
|
+
3. **์ํ ํผ๋๋ฐฑ ๋ณด์ฅ**:
|
|
101
|
+
- ๋ก๋ฉ, ๋น ๋ฐ์ดํฐ(Empty State), ํ์ฑ/๋นํ์ฑ ์ํ๋ฅผ ๋ฐ๋์ ๋ช
์ํฉ๋๋ค.
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
# ๐งฑ AtomSystem UI Components Guide (atom.components.md)
|
|
2
|
+
|
|
3
|
+
> W3C DTCG ํ์ค ํ ํฐ๊ณผ ๊ฒฐํฉ๋ ๊ณ ์ ๊ทผ์ฑ 0KB ๋ฐํ์ UI ์์/๋ถ์ ์ปดํฌ๋ํธ ๊ท๊ฒฉ์์
๋๋ค.
|
|
4
|
+
> ๋ชจ๋ ์ปดํฌ๋ํธ๋ `components/ui/`์์ importํ์ฌ ์ฌ์ฉํฉ๋๋ค.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## ๐ฆ ์ปดํฌ๋ํธ ๋ชฉ๋ก ๋ฐ ์ฌ์ฉ๋ฒ
|
|
9
|
+
|
|
10
|
+
### 1. Button (`components/ui/Button.tsx`)
|
|
11
|
+
```tsx
|
|
12
|
+
import { Button } from '@/components/ui';
|
|
13
|
+
|
|
14
|
+
<Button variant="primary" size="md">ํ์ธ</Button>
|
|
15
|
+
<Button variant="secondary">๋ณด์กฐ ์ก์
</Button>
|
|
16
|
+
<Button variant="outline">ํ
๋๋ฆฌ ๋ฒํผ</Button>
|
|
17
|
+
<Button variant="ghost">๊ณ ์คํธ ๋ฒํผ</Button>
|
|
18
|
+
<Button variant="destructive">์ญ์ </Button>
|
|
19
|
+
<Button loading>์ฒ๋ฆฌ ์ค...</Button>
|
|
20
|
+
```
|
|
21
|
+
- **Variants**: `primary`, `secondary`, `outline`, `ghost`, `destructive`
|
|
22
|
+
- **Sizes**: `sm`, `md`, `lg`
|
|
23
|
+
- **A11y**: `aria-disabled`, ํค๋ณด๋ ์ํฐ/์คํ์ด์ค ํฌ์ปค์ค ๋ง ๋ณด์ฅ
|
|
24
|
+
|
|
25
|
+
### 2. Card (`components/ui/Card.tsx`)
|
|
26
|
+
```tsx
|
|
27
|
+
import { Card } from '@/components/ui';
|
|
28
|
+
|
|
29
|
+
<Card className="p-5 border border-(--border-subtle) bg-(--bg-primary)">
|
|
30
|
+
<h3>์นด๋ ์ ๋ชฉ</h3>
|
|
31
|
+
<p>์นด๋ ๋ณธ๋ฌธ</p>
|
|
32
|
+
</Card>
|
|
33
|
+
```
|
|
34
|
+
- 1px ์๋งจํฑ ๋ณด๋์ ํ ํฐ ๊ธฐ๋ฐ ๊ณก๋ฅ (`--radius`) ์ ์ฉ
|
|
35
|
+
|
|
36
|
+
### 3. Badge (`components/ui/Badge.tsx`)
|
|
37
|
+
```tsx
|
|
38
|
+
import { Badge } from '@/components/ui';
|
|
39
|
+
|
|
40
|
+
<Badge variant="primary">์ถ์ฒ</Badge>
|
|
41
|
+
<Badge variant="secondary">์ผ๋ฐ</Badge>
|
|
42
|
+
<Badge variant="success">+14.8%</Badge>
|
|
43
|
+
<Badge variant="warning">์ ๊ฒ ์์ </Badge>
|
|
44
|
+
<Badge variant="destructive">์คํจ</Badge>
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### 4. Input (`components/ui/Input.tsx`)
|
|
48
|
+
```tsx
|
|
49
|
+
import { Input } from '@/components/ui';
|
|
50
|
+
|
|
51
|
+
<Input
|
|
52
|
+
placeholder="์ด๋ฉ์ผ ์ฃผ์ ์
๋ ฅ"
|
|
53
|
+
status="default" // "error" | "success"
|
|
54
|
+
errorMessage="์ฌ๋ฐ๋ฅธ ์ด๋ฉ์ผ ํ์์ด ์๋๋๋ค."
|
|
55
|
+
/>
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### 5. Table (`components/ui/Table.tsx`)
|
|
59
|
+
```tsx
|
|
60
|
+
import { Table, TableHeader, TableBody, TableRow, TableHead, TableCell } from '@/components/ui';
|
|
61
|
+
|
|
62
|
+
<Table>
|
|
63
|
+
<TableHeader>
|
|
64
|
+
<TableRow>
|
|
65
|
+
<TableHead>์ฌ์ฉ์</TableHead>
|
|
66
|
+
<TableHead>ํ๋</TableHead>
|
|
67
|
+
<TableHead>์ํ</TableHead>
|
|
68
|
+
</TableRow>
|
|
69
|
+
</TableHeader>
|
|
70
|
+
<TableBody>
|
|
71
|
+
<TableRow>
|
|
72
|
+
<TableCell>ํ๊ธธ๋</TableCell>
|
|
73
|
+
<TableCell>Pro</TableCell>
|
|
74
|
+
<TableCell><Badge variant="success">ํ์ฑ</Badge></TableCell>
|
|
75
|
+
</TableRow>
|
|
76
|
+
</TableBody>
|
|
77
|
+
</Table>
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### 6. Tabs (`components/ui/Tabs.tsx`)
|
|
81
|
+
```tsx
|
|
82
|
+
import { TabsList, TabsTrigger } from '@/components/ui';
|
|
83
|
+
|
|
84
|
+
<TabsList>
|
|
85
|
+
<TabsTrigger active={tab === '1'} onClick={() => setTab('1')}>์๊ฐ</TabsTrigger>
|
|
86
|
+
<TabsTrigger active={tab === '2'} onClick={() => setTab('2')}>์ฐ๊ฐ</TabsTrigger>
|
|
87
|
+
</TabsList>
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### 7. Switch (`components/ui/Switch.tsx`)
|
|
91
|
+
```tsx
|
|
92
|
+
import { Switch } from '@/components/ui';
|
|
93
|
+
|
|
94
|
+
<Switch checked={enabled} onChange={setEnabled} label="์๋ฆผ ๋ฐ๊ธฐ" />
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### 8. Modal (`components/ui/Modal.tsx`)
|
|
98
|
+
```tsx
|
|
99
|
+
import { Modal } from '@/components/ui';
|
|
100
|
+
|
|
101
|
+
<Modal isOpen={isOpen} onClose={() => setIsOpen(false)} title="ํ์ธ">
|
|
102
|
+
<p>์ ๋ง ์ญ์ ํ์๊ฒ ์ต๋๊น?</p>
|
|
103
|
+
</Modal>
|
|
104
|
+
```
|
|
105
|
+
- **A11y**: `role="dialog"`, `aria-modal="true"`, ESC ํค ๋๋ฆ ์ ์๋ ๋ซ๊ธฐ
|
|
106
|
+
|
|
107
|
+
### 9. Container (`components/ui/Container.tsx`)
|
|
108
|
+
```tsx
|
|
109
|
+
import { Container } from '@/components/ui';
|
|
110
|
+
|
|
111
|
+
<Container size="xl" gutters center>
|
|
112
|
+
<h1>๋์๋ณด๋</h1>
|
|
113
|
+
</Container>
|
|
114
|
+
```
|
|
115
|
+
- **์ฐ๋ ํ ํฐ**: `--atom-container-sm` (640px), `--atom-container-md` (768px), `--atom-container-lg` (1024px), `--atom-container-xl` (1280px), `--atom-container-2xl` (1536px), `--atom-layout-gutter` (16px/24px)
|
|
116
|
+
- **์ฉ๋**: ๋ชจ๋ ํ์ด์ง์ ํ์ค ๊ฐ๋กํญ ๋ฐ ์์ ์ฌ๋ฐฑ ํต์ผ (ํ๋์ฝ๋ฉ ๊ธ์ง)
|
|
117
|
+
|
|
118
|
+
### 10. Layout (`components/ui/Layout.tsx`)
|
|
119
|
+
```tsx
|
|
120
|
+
import { Layout, Container, Stack, Grid, Section } from '@/components/ui';
|
|
121
|
+
|
|
122
|
+
<Layout>
|
|
123
|
+
<Layout.Header sticky>ํค๋ ๋ค๋น๋ฐ</Layout.Header>
|
|
124
|
+
<Layout.Content>
|
|
125
|
+
<Container size="xl">
|
|
126
|
+
<Section spacing="md">
|
|
127
|
+
<Stack gap="6">
|
|
128
|
+
<Grid cols={3} gap="4">
|
|
129
|
+
<Card>1</Card>
|
|
130
|
+
<Card>2</Card>
|
|
131
|
+
<Card>3</Card>
|
|
132
|
+
</Grid>
|
|
133
|
+
</Stack>
|
|
134
|
+
</Section>
|
|
135
|
+
</Container>
|
|
136
|
+
</Layout.Content>
|
|
137
|
+
<Layout.Footer>ํธํฐ</Layout.Footer>
|
|
138
|
+
</Layout>
|
|
139
|
+
```
|
|
140
|
+
- **์ฐ๋ ํ ํฐ**: `--atom-space-*` (4px, 8px, 12px, 16px, 24px, 32px), `Section` spacing ํ ํฐ
|
|
141
|
+
- **์ฉ๋**: ์ ์ญ ํ์ด์ง ์ ๊ตฌ์กฐํ ๋ฐ ์คํ/๊ทธ๋ฆฌ๋ ๊ธฐ๋ฐ์ ์ ๋ก ํ๋์ฝ๋ฉ ์ฌ๋ฐฑ ๋ฐฐ์น
|
|
142
|
+
|
|
@@ -95,6 +95,23 @@ CSS-in-JS์ ๋ฐํ์ ํ์ฑ ๋น์ฉ, ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ๋ค ํฝ์ฐฝ์ ๋ฐฉ์ง
|
|
|
95
95
|
|
|
96
96
|
---
|
|
97
97
|
|
|
98
|
+
### 07. ์ ๊ฐํ AI ์ํฐํจํด ๋ฐฉ์ด (Anti-Pattern Prevention & Polish)
|
|
99
|
+
> **AI ์ฌ๋กญ(AI Slop)์ ์์ฒ ์ฐจ๋จํ๊ณ ๋ถํ์ํ ์ฅ์์ ๋์ด๋ธ ์ ๊ฐํ ๋ณธ์ง์ ์ถ๊ตฌํฉ๋๋ค.**
|
|
100
|
+
|
|
101
|
+
Impeccable ๋์์ธ ์ฒ ํ์ ๊ธฐ๋ฐํ์ฌ LLM์ด ์์ฐํ๋ ํด๋ฆฌ์
ฐ์ ๋์์ธ ์๊ณก์ ์๊ฒฉํ ๋ฐฉ์ดํฉ๋๋ค. ๊ณผ๋ํ ๋ค์จ ๊ทธ๋ผ๋์ธํธ, ์ด์ค๋ฌ์ด ๋จ๋ฉด ํ
๋๋ฆฌ, ๋ถํ์ํ ๋ฐ์ด์ค ๋ชจ์
์ ์ง์ํ๊ณ ๋ด๋ฐฑํ๋ฉฐ ์ ๋๋ ๋ชจ๋ ์ธํฐํ์ด์ค๋ฅผ ์์ฑํฉ๋๋ค.
|
|
102
|
+
|
|
103
|
+
* **๊ถ์ฅ ์ค์ฒ (DO)**:
|
|
104
|
+
- โ
์ํ ํ์๋ ๊ตต์ ๋จ๋ฉด ํ
๋๋ฆฌ ๋์ ์์ํ 1px ๋ณด๋, ์ํ ๋ํธ/์์ด์ฝ, ๋ถ๋๋ฌ์ด ํดํธ ๋ฐฐ๊ฒฝ์ ํ์ฉํฉ๋๋ค.
|
|
105
|
+
- โ
๋ชจ์
์ ํ๋ ๋ฐ์ด์ค(bounce) ๋์ ์์ฐ์ค๋ฌ์ด ๊ฐ์ ์ด์ง(ease-out, 200~300ms)๊ณผ ๋ฏธ์ธํ ํ์ด๋/์ค์ผ์ผ์ ์ ์ฉํฉ๋๋ค.
|
|
106
|
+
- โ
์ฝ๋ ์ปค๋ฐ ์ `npm run lint:design` (impeccable detect)์ ํตํด ๋์์ธ ๊ฒฐํจ์ ๋ฌด๋น์ฉ(0-Token)์ผ๋ก ์ ์ ๊ฒ์ฆํฉ๋๋ค.
|
|
107
|
+
* **์ง์ ์ํฐํจํด (DON'T)**:
|
|
108
|
+
- โ ์นด๋๋ ์ฝ์์, ์ฌ์ด๋๋ฐ์ ๊ตต์ ์ข์ธก ํ
๋๋ฆฌ(border-l-4 ๋ฑ Side-tab tell)๋ฅผ ๋จ๋ฐํ์ง ์์ต๋๋ค.
|
|
109
|
+
- โ ์๊ฐ์ ํผ๋ก๊ฐ์ ์ ๋ฐํ๋ ๋ฌด์๋ฏธํ ๋ณด๋ผ์ ๊ทธ๋ผ๋์ธํธ๋ ๊ณผ๋ํ ๋๋กญ ์๋๋ฅผ ์ธ๋ผ์ธ ํ๋์ฝ๋ฉํ์ง ์์ต๋๋ค.
|
|
110
|
+
- โ ์๊ฐ์ ์๊ณ์ ๋ฌด๊ดํ๊ฒ ๋ชจ๋ ์์๋ฅผ ๋ฅ๊ทผ ํ๋กํ
์นด๋๋ก ๊ฐ์ธ๋ ๋ ์ด์์ ๋จ์ฉ์ ํผํฉ๋๋ค.
|
|
111
|
+
* **ํ์ค ์ฐธ์กฐ**: `Impeccable Design Quality Standards & Zero-Slop Heuristics`
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
98
115
|
## 2. ๋์์ธ ํ ํฐ ์ฌ์ (Design Token Specifications)
|
|
99
116
|
|
|
100
117
|
### ๐จ ์๋งจํฑ ์ปฌ๋ฌ ํ ํฐ
|
package/tokens/token.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://design-tokens.github.io/community-group/format/",
|
|
3
3
|
"name": "AtomDesignToken System",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.5.0",
|
|
5
5
|
"color": {
|
|
6
6
|
"brand": {
|
|
7
7
|
"color-primary": {
|
|
@@ -290,6 +290,68 @@
|
|
|
290
290
|
"variable": "--atom-shadow-xl"
|
|
291
291
|
}
|
|
292
292
|
},
|
|
293
|
+
"layout": {
|
|
294
|
+
"container": {
|
|
295
|
+
"sm": {
|
|
296
|
+
"$value": "640px",
|
|
297
|
+
"$type": "dimension",
|
|
298
|
+
"$description": "์ธ์ฆ ํผ, ๊ฒฐ์ ๋ชจ๋ฌ, ๋จ์ผ ์ปฌ๋ผ ์ฝํ
์ธ ",
|
|
299
|
+
"variable": "--atom-container-sm"
|
|
300
|
+
},
|
|
301
|
+
"md": {
|
|
302
|
+
"$value": "768px",
|
|
303
|
+
"$type": "dimension",
|
|
304
|
+
"$description": "๋ธ๋ก๊ทธ ์ํฐํด, ํ๋กํ ๋ทฐ์ด, ์ค์ ํผ",
|
|
305
|
+
"variable": "--atom-container-md"
|
|
306
|
+
},
|
|
307
|
+
"lg": {
|
|
308
|
+
"$value": "1024px",
|
|
309
|
+
"$type": "dimension",
|
|
310
|
+
"$description": "ํ์ค ๋ฉํ ๋ทฐ, ์นดํ๋ก๊ทธ ์นด๋ ๊ทธ๋ฆฌ๋",
|
|
311
|
+
"variable": "--atom-container-lg"
|
|
312
|
+
},
|
|
313
|
+
"xl": {
|
|
314
|
+
"$value": "1280px",
|
|
315
|
+
"$type": "dimension",
|
|
316
|
+
"$description": "๊ธฐ๋ณธ ๋ฐ์คํฌํฑ ์์ด๋ ๋ ์ด์์ ๋ฐ ๋์๋ณด๋ ํ๋ธ",
|
|
317
|
+
"variable": "--atom-container-xl"
|
|
318
|
+
},
|
|
319
|
+
"2xl": {
|
|
320
|
+
"$value": "1536px",
|
|
321
|
+
"$type": "dimension",
|
|
322
|
+
"$description": "์ด๊ดํญ ๊ณ ๋ฐ๋ ๋ฐ์ดํฐ ๊ทธ๋ฆฌ๋, ํํ
ํฌ ์ฐจํธ ์ํฌ์คํ์ด์ค",
|
|
323
|
+
"variable": "--atom-container-2xl"
|
|
324
|
+
},
|
|
325
|
+
"full": {
|
|
326
|
+
"$value": "100%",
|
|
327
|
+
"$type": "dimension",
|
|
328
|
+
"$description": "์ ์ฒด ํ๋ฉด ํ๋ฃจ์ด๋ ์ ์ฐ ๋ทฐ์ด",
|
|
329
|
+
"variable": "--atom-container-full"
|
|
330
|
+
}
|
|
331
|
+
},
|
|
332
|
+
"gutter": {
|
|
333
|
+
"gutter": {
|
|
334
|
+
"$value": "16px",
|
|
335
|
+
"$type": "dimension",
|
|
336
|
+
"$description": "ํ๋ฉด ์ข์ฐ ๊ธฐ๋ณธ ์์ ์ฌ๋ฐฑ (Safe Padding)",
|
|
337
|
+
"variable": "--atom-layout-gutter"
|
|
338
|
+
},
|
|
339
|
+
"gutter-lg": {
|
|
340
|
+
"$value": "24px",
|
|
341
|
+
"$type": "dimension",
|
|
342
|
+
"$description": "๋ฐ์คํฌํฑ ํ๋ฉด ์ข์ฐ ์์ ์ฌ๋ฐฑ",
|
|
343
|
+
"variable": "--atom-layout-gutter-lg"
|
|
344
|
+
}
|
|
345
|
+
},
|
|
346
|
+
"gap": {
|
|
347
|
+
"gap": {
|
|
348
|
+
"$value": "32px",
|
|
349
|
+
"$type": "dimension",
|
|
350
|
+
"$description": "์น์
๊ณผ ์น์
๊ฐ์ ๊ธฐ๋ณธ ๋ ์ด์์ ๊ฐ๊ฒฉ",
|
|
351
|
+
"variable": "--atom-layout-gap"
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
},
|
|
293
355
|
"presets": {
|
|
294
356
|
"toss": {
|
|
295
357
|
"name": "ํ ์ค ์คํ์ผ (Toss)",
|
package/tokens/tokens.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://design-tokens.github.io/community-group/format/",
|
|
3
3
|
"name": "AtomDesignToken System",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.5.0",
|
|
5
5
|
"color": {
|
|
6
6
|
"brand": {
|
|
7
7
|
"color-primary": {
|
|
@@ -290,6 +290,68 @@
|
|
|
290
290
|
"variable": "--atom-shadow-xl"
|
|
291
291
|
}
|
|
292
292
|
},
|
|
293
|
+
"layout": {
|
|
294
|
+
"container": {
|
|
295
|
+
"sm": {
|
|
296
|
+
"$value": "640px",
|
|
297
|
+
"$type": "dimension",
|
|
298
|
+
"$description": "์ธ์ฆ ํผ, ๊ฒฐ์ ๋ชจ๋ฌ, ๋จ์ผ ์ปฌ๋ผ ์ฝํ
์ธ ",
|
|
299
|
+
"variable": "--atom-container-sm"
|
|
300
|
+
},
|
|
301
|
+
"md": {
|
|
302
|
+
"$value": "768px",
|
|
303
|
+
"$type": "dimension",
|
|
304
|
+
"$description": "๋ธ๋ก๊ทธ ์ํฐํด, ํ๋กํ ๋ทฐ์ด, ์ค์ ํผ",
|
|
305
|
+
"variable": "--atom-container-md"
|
|
306
|
+
},
|
|
307
|
+
"lg": {
|
|
308
|
+
"$value": "1024px",
|
|
309
|
+
"$type": "dimension",
|
|
310
|
+
"$description": "ํ์ค ๋ฉํ ๋ทฐ, ์นดํ๋ก๊ทธ ์นด๋ ๊ทธ๋ฆฌ๋",
|
|
311
|
+
"variable": "--atom-container-lg"
|
|
312
|
+
},
|
|
313
|
+
"xl": {
|
|
314
|
+
"$value": "1280px",
|
|
315
|
+
"$type": "dimension",
|
|
316
|
+
"$description": "๊ธฐ๋ณธ ๋ฐ์คํฌํฑ ์์ด๋ ๋ ์ด์์ ๋ฐ ๋์๋ณด๋ ํ๋ธ",
|
|
317
|
+
"variable": "--atom-container-xl"
|
|
318
|
+
},
|
|
319
|
+
"2xl": {
|
|
320
|
+
"$value": "1536px",
|
|
321
|
+
"$type": "dimension",
|
|
322
|
+
"$description": "์ด๊ดํญ ๊ณ ๋ฐ๋ ๋ฐ์ดํฐ ๊ทธ๋ฆฌ๋, ํํ
ํฌ ์ฐจํธ ์ํฌ์คํ์ด์ค",
|
|
323
|
+
"variable": "--atom-container-2xl"
|
|
324
|
+
},
|
|
325
|
+
"full": {
|
|
326
|
+
"$value": "100%",
|
|
327
|
+
"$type": "dimension",
|
|
328
|
+
"$description": "์ ์ฒด ํ๋ฉด ํ๋ฃจ์ด๋ ์ ์ฐ ๋ทฐ์ด",
|
|
329
|
+
"variable": "--atom-container-full"
|
|
330
|
+
}
|
|
331
|
+
},
|
|
332
|
+
"gutter": {
|
|
333
|
+
"gutter": {
|
|
334
|
+
"$value": "16px",
|
|
335
|
+
"$type": "dimension",
|
|
336
|
+
"$description": "ํ๋ฉด ์ข์ฐ ๊ธฐ๋ณธ ์์ ์ฌ๋ฐฑ (Safe Padding)",
|
|
337
|
+
"variable": "--atom-layout-gutter"
|
|
338
|
+
},
|
|
339
|
+
"gutter-lg": {
|
|
340
|
+
"$value": "24px",
|
|
341
|
+
"$type": "dimension",
|
|
342
|
+
"$description": "๋ฐ์คํฌํฑ ํ๋ฉด ์ข์ฐ ์์ ์ฌ๋ฐฑ",
|
|
343
|
+
"variable": "--atom-layout-gutter-lg"
|
|
344
|
+
}
|
|
345
|
+
},
|
|
346
|
+
"gap": {
|
|
347
|
+
"gap": {
|
|
348
|
+
"$value": "32px",
|
|
349
|
+
"$type": "dimension",
|
|
350
|
+
"$description": "์น์
๊ณผ ์น์
๊ฐ์ ๊ธฐ๋ณธ ๋ ์ด์์ ๊ฐ๊ฒฉ",
|
|
351
|
+
"variable": "--atom-layout-gap"
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
},
|
|
293
355
|
"presets": {
|
|
294
356
|
"toss": {
|
|
295
357
|
"name": "ํ ์ค ์คํ์ผ (Toss)",
|