atomsystem 0.1.47 โ 0.1.49
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 +153 -55
- package/atom.design.md +155 -0
- package/atom.uxPattern.md +431 -0
- package/components/ui/Badge.tsx +20 -0
- package/components/ui/Button.tsx +33 -0
- package/components/ui/Card.tsx +20 -0
- package/components/ui/Input.tsx +35 -0
- package/components/ui/Modal.tsx +54 -0
- package/components/ui/index.ts +5 -0
- package/css/atom-ui.css +216 -0
- package/dist/cli.cjs +105 -0
- package/dist/cli.cjs.map +1 -0
- package/dist/cli.d.cts +1 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +97 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.cjs +7897 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +218 -0
- package/dist/index.d.ts +218 -0
- package/dist/index.js +7845 -447
- package/dist/index.js.map +1 -0
- package/package.json +120 -81
- package/presets/default.design.md +155 -0
- package/presets/uxPattern.md +431 -0
- package/skills/atomsystem.skill.md +104 -0
- package/tokens/token.json +319 -0
- package/tokens/tokens.json +318 -976
- package/app/templates/Animations/Animation.tsx +0 -282
- package/app/templates/Badge/Badge.tsx +0 -28
- package/app/templates/Badge/badge.css +0 -28
- package/app/templates/Button/Button.tsx +0 -31
- package/app/templates/Button/button.css +0 -135
- package/app/templates/Card/Card.tsx +0 -50
- package/app/templates/Card/card.css +0 -17
- package/app/templates/CodeBlock/CodeBlock.tsx +0 -68
- package/app/templates/Collapse/Collapse.tsx +0 -207
- package/app/templates/Collapse/collapse.css +0 -24
- package/app/templates/Dropdown/Dropdown.css +0 -112
- package/app/templates/Dropdown/Dropdown.tsx +0 -103
- package/app/templates/Form/Form.tsx +0 -289
- package/app/templates/Form/form.css +0 -115
- package/app/templates/Modal/Modal.tsx +0 -71
- package/app/templates/Modal/modal.css +0 -98
- package/app/templates/Navigation/Navigation.tsx +0 -169
- package/app/templates/Navigation/navigation.css +0 -59
- package/app/templates/Pagination/Pagination.tsx +0 -104
- package/app/templates/Pagination/pagination.css +0 -66
- package/app/templates/Sidebar/Sidebar.tsx +0 -139
- package/app/templates/Sidebar/sidebar.css +0 -4
- package/app/templates/TOC/TOC.tsx +0 -165
- package/app/templates/Tab/Tab.tsx +0 -117
- package/app/templates/Tab/tab.css +0 -56
- package/app/templates/Table/Table.tsx +0 -54
- package/app/templates/Table/table.css +0 -58
- package/app/templates/Theme/Theme.tsx +0 -121
- package/app/templates/Toast/Toast.tsx +0 -106
- package/app/templates/Toast/toast.css +0 -69
- package/build/build-tokens.js +0 -223
- package/build/css/_variables.css +0 -251
- package/build/typescript/theme.ts +0 -6
- package/css/text.css +0 -18
package/package.json
CHANGED
|
@@ -1,81 +1,120 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "atomsystem",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"type": "module",
|
|
5
|
-
"homepage": "https://system.atomground.com",
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
"
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
"
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
"
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
"
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
"@
|
|
67
|
-
"@
|
|
68
|
-
"@
|
|
69
|
-
"@
|
|
70
|
-
"@
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
"
|
|
75
|
-
"
|
|
76
|
-
"
|
|
77
|
-
"
|
|
78
|
-
"
|
|
79
|
-
"
|
|
80
|
-
|
|
81
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "atomsystem",
|
|
3
|
+
"version": "0.1.49",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"homepage": "https://system.atomground.com",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/jsy1023/AtomDesignToken.git"
|
|
9
|
+
},
|
|
10
|
+
"publishConfig": {
|
|
11
|
+
"access": "public"
|
|
12
|
+
},
|
|
13
|
+
"bin": {
|
|
14
|
+
"atomsystem": "dist/cli.js"
|
|
15
|
+
},
|
|
16
|
+
"main": "./dist/index.cjs",
|
|
17
|
+
"module": "./dist/index.js",
|
|
18
|
+
"types": "./dist/index.d.ts",
|
|
19
|
+
"exports": {
|
|
20
|
+
".": {
|
|
21
|
+
"types": "./dist/index.d.ts",
|
|
22
|
+
"import": "./dist/index.js",
|
|
23
|
+
"require": "./dist/index.cjs"
|
|
24
|
+
},
|
|
25
|
+
"./token.json": "./tokens/token.json",
|
|
26
|
+
"./tokens": "./tokens/tokens.json",
|
|
27
|
+
"./design.md": "./presets/default.design.md",
|
|
28
|
+
"./uxPattern.md": "./presets/uxPattern.md",
|
|
29
|
+
"./skill": "./skills/atomsystem.skill.md",
|
|
30
|
+
"./components/*": "./components/ui/*.tsx",
|
|
31
|
+
"./css/atom-ui.css": "./css/atom-ui.css",
|
|
32
|
+
"./package.json": "./package.json"
|
|
33
|
+
},
|
|
34
|
+
"files": [
|
|
35
|
+
"dist",
|
|
36
|
+
"tokens",
|
|
37
|
+
"presets",
|
|
38
|
+
"skills",
|
|
39
|
+
"components/ui",
|
|
40
|
+
"css",
|
|
41
|
+
"atom.design.md",
|
|
42
|
+
"atom.uxPattern.md",
|
|
43
|
+
"tailwind.config.ts"
|
|
44
|
+
],
|
|
45
|
+
"scripts": {
|
|
46
|
+
"dev": "next dev",
|
|
47
|
+
"build": "next build",
|
|
48
|
+
"prepublishOnly": "npm run build:lib",
|
|
49
|
+
"generate:dist": "tsx scripts/generate-package-distribution.ts",
|
|
50
|
+
"build:lib": "npm run generate:dist && tsup",
|
|
51
|
+
"pack:lib": "npm run build:lib && npm pack",
|
|
52
|
+
"example:mib": "npm --prefix examples/mib-browser run dev",
|
|
53
|
+
"example:mib:build": "npm --prefix examples/mib-browser run build",
|
|
54
|
+
"example:mib:test": "npm --prefix examples/mib-browser run test:e2e",
|
|
55
|
+
"start": "next start",
|
|
56
|
+
"lint": "next lint",
|
|
57
|
+
"test:e2e": "playwright test",
|
|
58
|
+
"test:e2e:ui": "playwright test --ui",
|
|
59
|
+
"test:e2e:report": "playwright show-report"
|
|
60
|
+
},
|
|
61
|
+
"peerDependencies": {
|
|
62
|
+
"sd-tailwindcss-transformer": "^2.0.0",
|
|
63
|
+
"style-dictionary": "^4.2.0"
|
|
64
|
+
},
|
|
65
|
+
"dependencies": {
|
|
66
|
+
"@codemirror/lang-json": "^6.0.2",
|
|
67
|
+
"@emotion/react": "^11.14.0",
|
|
68
|
+
"@emotion/styled": "^11.14.1",
|
|
69
|
+
"@gsap/react": "^2.1.2",
|
|
70
|
+
"@mdx-js/loader": "^3.1.0",
|
|
71
|
+
"@mdx-js/react": "^3.1.0",
|
|
72
|
+
"@mui/icons-material": "^7.3.9",
|
|
73
|
+
"@mui/material": "^7.3.9",
|
|
74
|
+
"@next/mdx": "^15.4.6",
|
|
75
|
+
"@next/third-parties": "^15.0.3",
|
|
76
|
+
"@tailwindcss/postcss": "^4.2.2",
|
|
77
|
+
"@tokens-studio/sd-transforms": "^1.3.0",
|
|
78
|
+
"@types/mdx": "^2.0.13",
|
|
79
|
+
"@uiw/codemirror-theme-vscode": "^4.25.9",
|
|
80
|
+
"@uiw/react-codemirror": "^4.25.9",
|
|
81
|
+
"chalk": "^5.6.2",
|
|
82
|
+
"clsx": "^2.1.1",
|
|
83
|
+
"commander": "^14.0.3",
|
|
84
|
+
"gsap": "^3.12.7",
|
|
85
|
+
"highlight.js": "^11.11.1",
|
|
86
|
+
"inquirer": "^12.4.2",
|
|
87
|
+
"lucide-react": "^1.7.0",
|
|
88
|
+
"next": "^15.0.3",
|
|
89
|
+
"ora": "^9.3.0",
|
|
90
|
+
"prompts": "^2.4.2",
|
|
91
|
+
"react": "^19.2.5",
|
|
92
|
+
"react-dom": "^19.2.5",
|
|
93
|
+
"react-modal": "^3.16.3",
|
|
94
|
+
"react-responsive": "^10.0.1",
|
|
95
|
+
"remark-gfm": "^4.0.1",
|
|
96
|
+
"sd-tailwindcss-transformer": "^2.0.0",
|
|
97
|
+
"style-dictionary": "^4.2.0",
|
|
98
|
+
"tailwind-merge": "^3.5.0",
|
|
99
|
+
"zod": "^4.3.6"
|
|
100
|
+
},
|
|
101
|
+
"devDependencies": {
|
|
102
|
+
"@playwright/test": "^1.64.0",
|
|
103
|
+
"@types/node": "^20.19.39",
|
|
104
|
+
"@types/prompts": "^2.4.9",
|
|
105
|
+
"@types/react": "^18.3.28",
|
|
106
|
+
"@types/react-dom": "^18.3.7",
|
|
107
|
+
"@types/react-modal": "^3.16.3",
|
|
108
|
+
"@vitest/browser": "^3.1.1",
|
|
109
|
+
"@vitest/coverage-v8": "^3.1.1",
|
|
110
|
+
"eslint": "^8",
|
|
111
|
+
"eslint-config-next": "15.0.3",
|
|
112
|
+
"playwright": "^1.51.1",
|
|
113
|
+
"postcss": "^8.5.10",
|
|
114
|
+
"tailwindcss": "^4.2.2",
|
|
115
|
+
"tsup": "^8.5.1",
|
|
116
|
+
"tsx": "^4.21.0",
|
|
117
|
+
"typescript": "^5.9.3",
|
|
118
|
+
"vitest": "^3.1.1"
|
|
119
|
+
}
|
|
120
|
+
}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# ๐๏ธ AtomSystem Universal Design Guide (atom.design.md)
|
|
2
|
+
|
|
3
|
+
> **Universal Design Token & Framework-Agnostic Design System**
|
|
4
|
+
> ๋จ์ผ ์ง์ค ๊ณต๊ธ์(SSOT)๊ณผ ์ ๋ก ๋ฐํ์ ์ค๋ฒํค๋๋ฅผ ์ถ๊ตฌํ๋ ๋ชจ๋ UI ๋์์ธ ์ง์นจ์์
๋๋ค.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 1. ํต์ฌ ๋์์ธ ์ฒ ํ (Design Principles)
|
|
9
|
+
|
|
10
|
+
### 01. ๋จ์ผ ์ง์ค ๊ณต๊ธ์ (Single Source of Truth)
|
|
11
|
+
> **๋ชจ๋ ๋์์ธ ๊ฒฐ์ ์ ๋จ ํ๋์ ๋ฐ์ดํฐ ๊ท๊ฒฉ์์ ํ์๋ฉ๋๋ค.**
|
|
12
|
+
|
|
13
|
+
Figma, ๋งํฌ๋ค์ด ๊ฐ์ด๋, JSON ํ ํฐ ํ์ผ ์ค ์ด๋ ํ๋๊ฐ ๊ธฐ์ค์ด ๋๋ฉด ์์คํ
์ ์ฒด์ ์ฝ๋๊ฐ ์๋ ์์ฑ๋์ด์ผ ํฉ๋๋ค. ๊ฐ๋ฐ์๊ฐ ์์๋ก HEX ์ฝ๋๋ ๋งค์ง ๋๋ฒ๋ฅผ ์ปดํฌ๋ํธ ๋ด๋ถ์ ํ๋์ฝ๋ฉํ๋ ๊ฒ์ ์๊ฒฉํ ๊ธ์งํฉ๋๋ค.
|
|
14
|
+
|
|
15
|
+
* **๊ถ์ฅ ์ค์ฒ (DO)**:
|
|
16
|
+
- โ
๋ชจ๋ ์์, ์ฌ๋ฐฑ, ๊ณก๋ฅ ์ ๋ฐ๋์ var(--atom-*) ์๋งจํฑ ํ ํฐ์ ์ฐธ์กฐํฉ๋๋ค.
|
|
17
|
+
- โ
์ ๊ท ์คํ์ผ์ด ํ์ํ ๊ฒฝ์ฐ ํ ํฐ ๋ช
์ธ์(tokens.json)์ ๋จผ์ ์ถ๊ฐํฉ๋๋ค.
|
|
18
|
+
* **์ง์ ์ํฐํจํด (DON'T)**:
|
|
19
|
+
- โ ์ปดํฌ๋ํธ CSS/Tailwind์ #3182F6, 16px ๋ฑ์ ์์ฒ ๊ฐ์ ์ธ๋ผ์ธ์ผ๋ก ์ง์ ์์ฑํ์ง ์์ต๋๋ค.
|
|
20
|
+
- โ ํ์ด์ง๋ณ๋ก ์ ์ฌํ ์ญํ ์ ํ๋ ๋
๋ฆฝ์ ์ธ ํ
๋ง ๋ณ์๋ฅผ ์ค๋ณต ์ ์ธํ์ง ์์ต๋๋ค.
|
|
21
|
+
* **ํ์ค ์ฐธ์กฐ**: `W3C DTCG Format Specification ยง1.1`
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
### 02. ์ ๋ก ๋ฐํ์ ์ค๋ฒํค๋ (Zero Runtime Overhead)
|
|
26
|
+
> **๋ธ๋ผ์ฐ์ ๋ฐํ์ ๊ณ์ฐ์ ์ต์ํํ๊ณ ๋ธ๋ผ์ฐ์ ๋ค์ดํฐ๋ธ ๊ธฐ๋ฅ์ ํ์ฉํฉ๋๋ค.**
|
|
27
|
+
|
|
28
|
+
CSS-in-JS์ ๋ฐํ์ ํ์ฑ ๋น์ฉ, ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ๋ค ํฝ์ฐฝ์ ๋ฐฉ์งํฉ๋๋ค. ๋ค์ดํฐ๋ธ CSS Custom Properties(--*)์ ์ ์ ์ ํธ๋ฆฌํฐ ํด๋์ค๋ก ์ฌ์ ์ปดํ์ผํ์ฌ 0ms์ ์คํ์ผ ์ฃผ์
์๋๋ฅผ ๋ณด์ฅํฉ๋๋ค.
|
|
29
|
+
|
|
30
|
+
* **๊ถ์ฅ ์ค์ฒ (DO)**:
|
|
31
|
+
- โ
CSS ํ์ค ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ธ๋ผ์ฐ์ ์์ง ๋ ๋ฒจ์์ ์ฆ๊ฐ์ ์ธ ํ
๋ง ์ ํ์ ์ํํฉ๋๋ค.
|
|
32
|
+
- โ
์ ์ CSS ํ์ผ๋ก ๋ฒ๋ค๋งํ์ฌ ์ด๊ธฐ ํ์ธํธ(FCP) ์ฑ๋ฅ์ ๊ทน๋ํํฉ๋๋ค.
|
|
33
|
+
* **์ง์ ์ํฐํจํด (DON'T)**:
|
|
34
|
+
- โ ๋ฐํ์์ ์คํ์ผ ๊ฐ์ฒด๋ฅผ ๋งค๋ฒ ์ฐ์ฐํ์ฌ ์ฃผ์
ํ๋ ๋ฌด๊ฑฐ์ด ๋์ CSS ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์กดํ์ง ์์ต๋๋ค.
|
|
35
|
+
- โ ํ
๋ง ๋ณ๊ฒฝ ์ ์ปดํฌ๋ํธ ์ ์ฒด๋ฅผ ๋ฆฌ๋ ๋๋งํ๋ ์ ์ญ ์ํ ๊ตฌ๋
์ ๋จ์ฉํ์ง ์์ต๋๋ค.
|
|
36
|
+
* **ํ์ค ์ฐธ์กฐ**: `Performance Budget & Core Web Vitals Standard`
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
### 03. 3๊ณ์ธต ํ ํฐ ์ํคํ
์ฒ (3-Tier Token Hierarchy)
|
|
41
|
+
> **์์ฒ ํ ํฐ(Global) -> ์๋ ํ ํฐ(Semantic) -> ์ปดํฌ๋ํธ ํ ํฐ(Component)**
|
|
42
|
+
|
|
43
|
+
์์ฒ ๊ฐ๊ณผ ์ปดํฌ๋ํธ ์คํ์ผ ์ฌ์ด์ ๋ฐ๋์ "์๋(Semantic)" ๊ณ์ธต์ ๋ก๋๋ค. ์๋งจํฑ ๊ณ์ธต์ด ์กด์ฌํด์ผ๋ง ๋คํฌ ๋ชจ๋, ๊ณ ๋๋น ๋ชจ๋, ๋ฉํฐ ๋ธ๋๋ ํ
๋ง ๋ณ๊ฒฝ ์ ์ปดํฌ๋ํธ ์ฝ๋๋ฅผ ํ ์ค๋ ์์ ํ์ง ์๊ณ ์คํ์ผ์ ์ผ๊ด ์ ํํ ์ ์์ต๋๋ค.
|
|
44
|
+
|
|
45
|
+
* **๊ถ์ฅ ์ค์ฒ (DO)**:
|
|
46
|
+
- โ
UI ์คํ์ผ๋ง ์ ํญ์ Tier 2(Semantic: --atom-bg-surface, --atom-color-primary)๋ฅผ ์ต์ฐ์ ์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
|
|
47
|
+
- โ
๋คํฌ ํ
๋ง์์๋ Tier 1(ํ๋ ํธ)์ ๋ฐ๊พธ๋ ๊ฒ์ด ์๋๋ผ Tier 2์ ์ฐธ์กฐ ๋งํฌ๋ง ์ค์์นญํฉ๋๋ค.
|
|
48
|
+
* **์ง์ ์ํฐํจํด (DON'T)**:
|
|
49
|
+
- โ ์ปดํฌ๋ํธ์์ Tier 1 ์์ฒ ํ ํฐ(var(--blue-500))์ ์ง์ ์ฐธ์กฐํ์ง ์์ต๋๋ค.
|
|
50
|
+
- โ ์ปดํฌ๋ํธ ํ ํฐ(Tier 3)์ ๋ฒ์ฉ ๋ ์ด์์ ์คํ์ผ์ ๋ฌด๋ถ๋ณํ๊ฒ ํผ์ฉํ์ง ์์ต๋๋ค.
|
|
51
|
+
* **ํ์ค ์ฐธ์กฐ**: `W3C DTCG 2025.10 ยง3 Alias & Inheritance`
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
### 04. ํ๋ ์์ํฌ ๋ถ๊ฐ์ง๋ก (Framework-Agnostic)
|
|
56
|
+
> **React, Vue, Svelte, Angular, Vanilla HTML ์ด๋์๋ 100% ๋์ผํ๊ฒ ๋์ํฉ๋๋ค.**
|
|
57
|
+
|
|
58
|
+
๋์์ธ ์์คํ
์ ํน์ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ์ ์ข
์๋์ด์๋ ์ ๋ฉ๋๋ค. CSS ํ์ค๊ณผ ์น ํ์ค์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋์ด ๋ชจ๋
ธ๋ ํฌ ๋ด ์ฌ๋ฌ ๊ธฐ์ ์คํ์ด ํผ์ฌํ๋๋ผ๋ ์๋ฒฝํ ๋์์ธ ์ผ๊ด์ฑ์ ์ ์งํฉ๋๋ค.
|
|
59
|
+
|
|
60
|
+
* **๊ถ์ฅ ์ค์ฒ (DO)**:
|
|
61
|
+
- โ
์น ํ์ค CSS ๋ณ์์ ํ์ค HTML5 ์๋งจํฑ ์๋ฆฌ๋จผํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๊ณํฉ๋๋ค.
|
|
62
|
+
- โ
๋ฐ๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ ๊ฑฐ์ jQuery ํ๊ฒฝ์์๋ ํด๋์ค๋ช
๋ง์ผ๋ก ๋์ผ ์คํ์ผ์ ์ฌํํ ์ ์๊ฒ ํฉ๋๋ค.
|
|
63
|
+
* **์ง์ ์ํฐํจํด (DON'T)**:
|
|
64
|
+
- โ ํน์ ํ๋ ์์ํฌ(React hook ๋ฑ)๊ฐ ์์ผ๋ฉด ์คํ์ผ์ด ๊นจ์ง๋ ๋นํ์ค ์์กด์ฑ์ ์์ฑํ์ง ์์ต๋๋ค.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
### 05. ์์ธก ๊ฐ๋ฅํ ๋ช
๋ช
๊ท๊ฒฉ (Predictable Naming Convention)
|
|
69
|
+
> **์นดํ
๊ณ ๋ฆฌ-๊ฐ๋
-๋ณํ-์ํ ์์ผ๋ก ๋ช
ํํ๊ฒ ๊ณ์ธตํ๋ ๋ค์ด๋ฐ์ ์ค์ํฉ๋๋ค.**
|
|
70
|
+
|
|
71
|
+
ํ ํฐ์ ์ด๋ฆ์ ๋ณด๋ฉด ์ด๋ค ์ ํ์ด๋ฉฐ ์ด๋์ ์ฐ์ด๋์ง ๊ฐ๋ฐ์์ ๋์์ด๋๊ฐ ์ง๊ด์ ์ผ๋ก ์ ์ ์์ด์ผ ํฉ๋๋ค. W3C DTCG์ ๋ค์ด๋ฐ ๊ถ๊ณ ์ ๋ฐ๋ผ [namespace]-[category]-[concept]-[variant]-[state] ํํ๋ฅผ ํ์ค์ผ๋ก ์ผ์ต๋๋ค.
|
|
72
|
+
|
|
73
|
+
* **๊ถ์ฅ ์ค์ฒ (DO)**:
|
|
74
|
+
- โ
๊ท๊ฒฉ์ ๋ง์ถ ๋ช
ํํ ๋ค์ด๋ฐ(์: --atom-color-primary-hover, --atom-space-4)์ ์ฌ์ฉํฉ๋๋ค.
|
|
75
|
+
- โ
๋จ์ถ์ด ์ถ์ฝ๋ณด๋ค ๋ช
ํํ ์๋ฏธ ์ ๋ฌ์ ์ฐ์ ํฉ๋๋ค.
|
|
76
|
+
* **์ง์ ์ํฐํจํด (DON'T)**:
|
|
77
|
+
- โ ๊ฐ์ธ์ ์ธ ์ ํธ์ ๋ฐ๋ฅธ ์์์ ์ถ์ฝ(์: --at-clr-pr-h)์ ์ฌ์ฉํ์ง ์์ต๋๋ค.
|
|
78
|
+
- โ ๋ฌธ๋งฅ์ด ์๋ ๋ชจํธํ ์ด๋ฆ(์: --atom-color-1, --atom-size-box)์ ์ ์ธํ์ง ์์ต๋๋ค.
|
|
79
|
+
* **ํ์ค ์ฐธ์กฐ**: `W3C DTCG Specification ยง2 Token Names`
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
### 06. ์ ๊ทผ์ฑ ๋ณด์ฅ (Accessibility by Default)
|
|
84
|
+
> **๋ชจ๋ ์๋งจํฑ ์์ ์์ WCAG 2.1 AA ๊ธฐ์ค 4.5:1 ์ด์์ ๋ช
๋ ๋๋น๋ฅผ ๋ง์กฑํฉ๋๋ค.**
|
|
85
|
+
|
|
86
|
+
์ ๊ทผ์ฑ์ ๋์ค์ ์ถ๊ฐํ๋ ๊ธฐ๋ฅ์ด ์๋๋ผ ๋์์ธ ํ ํฐ ์์ฑ ์์ ์ ์๋์ผ๋ก ๊ฒ์ฆ๋์ด์ผ ํ๋ ๊ธฐ๋ณธ ์์น์
๋๋ค. ๋ฐฐ๊ฒฝ์๊ณผ ์ ๊ฒฝ ํ
์คํธ ์์์ ํ ํฐ ํ์ด๋ง์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋์ ๊ฐ๋
์ฑ์ ๋ณด์ฅํฉ๋๋ค.
|
|
87
|
+
|
|
88
|
+
* **๊ถ์ฅ ์ค์ฒ (DO)**:
|
|
89
|
+
- โ
ํ
์คํธ์ ๋ฐฐ๊ฒฝ ํ ํฐ ๊ฒฐํฉ ์ 4.5:1(์ผ๋ฐ ํ
์คํธ) ๋๋ 3:1(๋ํ ํ
์คํธ) ๋ช
๋ ๋๋น๋ฅผ ํ์ธํฉ๋๋ค.
|
|
90
|
+
- โ
์์ ๊ตฌ๋ถ์๋ง ์์กดํ์ง ์๊ณ ์๊ฐ์ ํํธ(์์ด์ฝ, ๋ฐ์ค, ๋ช
๋ ์ฐจ์ด)๋ฅผ ๋ณํํฉ๋๋ค.
|
|
91
|
+
* **์ง์ ์ํฐํจํด (DON'T)**:
|
|
92
|
+
- โ ํฌ์ปค์ค ๋ง(Focus Ring) ๋ฐ ์์๋ผ์ธ์ ์์๋ก ์ ๊ฑฐ(outline: none)ํ์ง ์์ต๋๋ค.
|
|
93
|
+
- โ ํ๋ฆฐ ํ์ ํ
์คํธ ํ ํฐ์ ๋ณธ๋ฌธ ํ์ ์ ๋ณด ํ์์ ๋จ์ฉํ์ง ์์ต๋๋ค.
|
|
94
|
+
* **ํ์ค ์ฐธ์กฐ**: `W3C Web Content Accessibility Guidelines (WCAG 2.1 AA)`
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## 2. ๋์์ธ ํ ํฐ ์ฌ์ (Design Token Specifications)
|
|
99
|
+
|
|
100
|
+
### ๐จ ์๋งจํฑ ์ปฌ๋ฌ ํ ํฐ
|
|
101
|
+
| ๋ถ๋ฅ | ํ ํฐ ๋ณ์๋ช
| ๊ธฐ๋ณธ๊ฐ | ์ฉ๋ ๋ฐ ์ค๋ช
|
|
|
102
|
+
| :--- | :--- | :--- | :--- |
|
|
103
|
+
| brand | `--atom-color-primary` | `#3182f6` | ์ฃผ์ ์ก์
๋ฒํผ, ํ์ฑ ํญ, ๋ธ๋๋ ๊ฐ์กฐ ์์ญ์ ํต์ฌ ์์ |
|
|
104
|
+
| brand | `--atom-color-primary-hover` | `#1b64da` | Primary ์ปดํฌ๋ํธ์ ๋ง์ฐ์ค๋ฅผ ์ฌ๋ ธ์ ๋ ์ ์ฉ๋๋ ๋ฅ ํค |
|
|
105
|
+
| brand | `--atom-color-primary-subtle` | `#e8f3ff` | ๋ฐฐ์ง ๋ฐฐ๊ฒฝ, ํ์ฑ ๋ฆฌ์คํธ ์์ดํ
, ์ ํ ํ์ด๋ผ์ดํธ ๋ฐฐ๊ฒฝ |
|
|
106
|
+
| surface | `--atom-bg-primary` | `#ffffff` | ์น ์ ์ฒด ํ์ด์ง์ ๊ธฐ๋ณธ ์บ๋ฒ์ค ๋ฐฐ๊ฒฝ (๋คํฌ๋ชจ๋: #090a0f) |
|
|
107
|
+
| surface | `--atom-bg-surface` | `#f8f9fa` | ์นด๋, ๋ชจ๋ฌ ๋ค์ด์ผ๋ก๊ทธ, ํจ๋, ๋๋กญ๋ค์ด ๋ฉ๋ด์ ๋ฐํ์ |
|
|
108
|
+
| surface | `--atom-bg-muted` | `#f1f3f5` | ๋นํ์ฑํ๋ ํผ ํ๋, ํ๊ทธ ์นฉ, ๋ณด์กฐ ์์ญ ๋ฐฐ๊ฒฝ |
|
|
109
|
+
| text | `--atom-text-primary` | `#191f28` | ๊ฐ์ฅ ๋์ ๋ช
๋ ๋๋น๋ฅผ ๊ฐ๋ ํต์ฌ ๋ณธ๋ฌธ ๋ฐ ํค๋๋ผ์ธ ํ
์คํธ |
|
|
110
|
+
| text | `--atom-text-secondary` | `#8b95a1` | ์ค๋ช
๋ฌธ, ๋ถ๊ฐ ๋ผ๋ฒจ, ํ๋ ์ด์คํ๋, ์๋ธ ํ
์คํธ |
|
|
111
|
+
| text | `--atom-text-muted` | `#b0b8c1` | ํ์์คํฌํ, ๋นํ์ฑํ๋ ๋ผ๋ฒจ, ์ฅ์์ฑ ํํธ ํ
์คํธ |
|
|
112
|
+
| border | `--atom-border-subtle` | `#f2f4f6` | ์นด๋ ๊ตฌ๋ถ์ , ๋ฆฌ์คํธ ๊ฒฝ๊ณ์ ๋ฑ ๋ถ๋๋ฌ์ด ๋ถ๋ฆฌ์ |
|
|
113
|
+
| border | `--atom-border-strong` | `#e5e8eb` | ์ธํ ํ๋ ์ธ๊ณฝ์ , ๋ช
ํํ ์์๋ผ์ธ ๋ฒํผ, ๋ชจ๋ฌ ๊ฒฝ๊ณ์ |
|
|
114
|
+
| status | `--atom-status-success` | `#10b981` | ์ฑ๊ณต ์๋ฃ ์๋ฆผ, ์จ๋ผ์ธ ์ํ, ์ก๊ธ ์๋ฃ ์ํ |
|
|
115
|
+
| status | `--atom-status-danger` | `#f43f5e` | ํผ ์ ํจ์ฑ ์๋ฌ, ๊ฒฝ๊ณ ๋ฉ์์ง, ์ญ์ ๋ฑ ํ๊ดด์ ์ก์
|
|
|
116
|
+
| status | `--atom-status-warning` | `#f59e0b` | ์ฃผ์ ์๋ฆผ, ๋๊ธฐ ์ค์ธ ์ํ, ๊ฒฐ์ ๋ณด๋ฅ |
|
|
117
|
+
|
|
118
|
+
### ๐ ๋ผ์ด๋ฉ (Border Radius)
|
|
119
|
+
| ํ ํฐ ๋ณ์๋ช
| ๊ฐ | ์ค๋ช
|
|
|
120
|
+
| :--- | :--- | :--- |
|
|
121
|
+
| `--atom-radius-none` | `0px` | ๋จ๋จํ ํ
ํฌ๋์ปฌ ๋์๋ณด๋ ๋ฐ ํ๋ซ ๋์์ธ |
|
|
122
|
+
| `--atom-radius-sm` | `6px` | ํ๊ทธ ๋ฐฐ์ง, ๋ฏธ๋ ์ธํ, ์ ๋ฐ ๋ฐ์ดํฐ ํ
์ด๋ธ ์ปจํธ๋กค |
|
|
123
|
+
| `--atom-radius-md` | `10px` | ์ผ๋ฐ์ ์ธ ๋ฒํผ, ์ธํ ํ๋, ํดํ |
|
|
124
|
+
| `--atom-radius-lg` | `16px` | ์นด๋, ๋ํ์์ ๋ชจ๋ฌ, ์ฃผ์ ๋ชจ๋ฐ์ผ ์ํธ |
|
|
125
|
+
| `--atom-radius-xl` | `24px` | ๋ฐํ
์ํธ ์ต์๋จ ๋ชจ์๋ฆฌ, ํ์ด๋ก ๋ฐฐ๋ ์นด๋ |
|
|
126
|
+
| `--atom-radius-full` | `9999px` | ํํฐ ์นฉ, ํ๋กํ
์ก์
๋ฒํผ(FAB), ์ํ ์๋ฐํ |
|
|
127
|
+
|
|
128
|
+
### ๐ฒ ๊ทธ๋ฆผ์ (Elevation Shadows)
|
|
129
|
+
| ํ ํฐ ๋ณ์๋ช
| ๊ฐ | ์ค๋ช
|
|
|
130
|
+
| :--- | :--- | :--- |
|
|
131
|
+
| `--atom-shadow-sm` | `0 1px 2px 0 rgb(0 0 0 / 0.05)` | ๊ธฐ๋ณธ ์นด๋, ์ธํ ํฌ์ปค์ค ์ํ, ๋ฏธ์ธํ ๊ตฌ๋ถ |
|
|
132
|
+
| `--atom-shadow-md` | `0 4px 6px -1px rgb(0 0 0 / 0.1)` | ํธ๋ฒ๋ ์นด๋, ๋๋กญ๋ค์ด ๋ฉ๋ด, ํ์ค๋ฒ ํดํ |
|
|
133
|
+
| `--atom-shadow-lg` | `0 10px 15px -3px rgb(0 0 0 / 0.1)` | ํ๋กํ
๋ด๋น๊ฒ์ด์
๋ฐ, ํ ์คํธ ์๋ฆผ ๋ฉ์์ง |
|
|
134
|
+
| `--atom-shadow-xl` | `0 20px 25px -5px rgb(0 0 0 / 0.15)` | ํ๋ฉด ์ต์๋จ ๋ ์ด์ด์ ๋ชจ๋ฌ ๋ค์ด์ผ๋ก๊ทธ, ๋ฐํ
์ํธ |
|
|
135
|
+
|
|
136
|
+
### ๐ ์ฌ๋ฐฑ ์ฒ๋ (Spacing Scale)
|
|
137
|
+
| ํ ํฐ ๋ณ์๋ช
| ํฝ์
| REM |
|
|
138
|
+
| :--- | :--- | :--- |
|
|
139
|
+
| `--atom-space-1` | 4px | 4px |
|
|
140
|
+
| `--atom-space-2` | 8px | 8px |
|
|
141
|
+
| `--atom-space-3` | 12px | 12px |
|
|
142
|
+
| `--atom-space-4` | 16px | 16px |
|
|
143
|
+
| `--atom-space-5` | 20px | 20px |
|
|
144
|
+
| `--atom-space-6` | 24px | 24px |
|
|
145
|
+
| `--atom-space-8` | 32px | 32px |
|
|
146
|
+
| `--atom-space-12` | 48px | 48px |
|
|
147
|
+
| `--atom-space-16` | 64px | 64px |
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## 3. ๋ธ๋๋ ํ๋ฆฌ์
(Presets)
|
|
152
|
+
- **ํ ์ค ์คํ์ผ (Toss) (`toss`)**: ๋ฉ์ธ ์์ `#3182f6`, ๊ธฐ๋ณธ ๊ณก๋ฅ `16px` โ Vivid Blue, 16px ๋ณผ๋ ๋ผ์ด๋ฉ, ์์ํ ์ฌ๋ฐฑ๊ณผ ๊ทน๋์ ๋ฏธ๋๋ฉ๋ฆฌ์ฆ
|
|
153
|
+
- **๋น๊ทผ ์คํ์ผ (Daangn) (`daangn`)**: ๋ฉ์ธ ์์ `#ff6f0f`, ๊ธฐ๋ณธ ๊ณก๋ฅ `12px` โ Warm Orange, 12px ์ํํธ ๋ผ์ด๋ฉ, ์น๊ทผํ๊ณ ๋ฐ๋ปํ ์ปค๋ฎค๋ํฐ ๊ฐ์ฑ
|
|
154
|
+
- **๋ชจ๋ ๋ฐ์ด์ฌ๋ (Violet Tech) (`hyper-violet`)**: ๋ฉ์ธ ์์ `#7c3aed`, ๊ธฐ๋ณธ ๊ณก๋ฅ `8px` โ ์ธ๋ จ๋ ๋ณด๋ผ์ ํ
ํฌ ๊ฐ์ฑ, 8px ์คํ ๋ผ์ด๋ฉ, ๊ฐ๋ฐ์/B2B ์ต์ ํ
|
|
155
|
+
- **์์ฝ ์๋ฉ๋๋ (Emerald) (`forest-emerald`)**: ๋ฉ์ธ ์์ `#10b981`, ๊ธฐ๋ณธ ๊ณก๋ฅ `14px` โ ์์ฐ์ค๋ฝ๊ณ ํธ์ํ ๋ฅ ๊ทธ๋ฆฐ, ํํ
ํฌ ์์ฐ ๋ฐ ์ฐ๋์ค ์๋น์ค์ฉ
|