@mzc-fe/design-system 0.0.1 → 0.0.2-rc.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.
Files changed (219) hide show
  1. package/dist/components/accordion.d.ts +7 -0
  2. package/dist/components/alert-dialog.d.ts +14 -0
  3. package/dist/components/alert.d.ts +9 -0
  4. package/dist/components/aspect-ratio.d.ts +3 -0
  5. package/dist/components/avatar.d.ts +6 -0
  6. package/dist/components/badge.d.ts +9 -0
  7. package/dist/components/breadcrumb.d.ts +11 -0
  8. package/dist/components/button-group.d.ts +11 -0
  9. package/dist/components/button.d.ts +10 -0
  10. package/dist/components/calendar.d.ts +8 -0
  11. package/dist/components/card.d.ts +9 -0
  12. package/dist/components/carousel.d.ts +19 -0
  13. package/dist/components/chart.d.ts +40 -0
  14. package/dist/components/checkbox.d.ts +4 -0
  15. package/dist/components/collapsible.d.ts +5 -0
  16. package/dist/components/command.d.ts +18 -0
  17. package/dist/components/context-menu.d.ts +25 -0
  18. package/dist/components/dialog.d.ts +15 -0
  19. package/dist/components/drawer.d.ts +13 -0
  20. package/dist/components/dropdown-menu.d.ts +25 -0
  21. package/dist/components/empty.d.ts +11 -0
  22. package/dist/components/field.d.ts +24 -0
  23. package/dist/components/form.d.ts +24 -0
  24. package/dist/components/hover-card.d.ts +6 -0
  25. package/dist/components/input-group.d.ts +16 -0
  26. package/dist/components/input-otp.d.ts +11 -0
  27. package/dist/components/input.d.ts +3 -0
  28. package/dist/components/item.d.ts +23 -0
  29. package/dist/components/kbd.d.ts +3 -0
  30. package/dist/components/label.d.ts +4 -0
  31. package/dist/components/menubar.d.ts +26 -0
  32. package/dist/components/navigation-menu.d.ts +14 -0
  33. package/dist/components/pagination.d.ts +13 -0
  34. package/dist/components/popover.d.ts +7 -0
  35. package/dist/components/progress.d.ts +4 -0
  36. package/dist/components/radio-group.d.ts +5 -0
  37. package/dist/components/resizable.d.ts +8 -0
  38. package/dist/components/scroll-area.d.ts +5 -0
  39. package/dist/components/select.d.ts +15 -0
  40. package/dist/components/separator.d.ts +4 -0
  41. package/dist/components/sheet.d.ts +13 -0
  42. package/dist/components/sidebar.d.ts +69 -0
  43. package/dist/components/skeleton.d.ts +2 -0
  44. package/dist/components/slider.d.ts +4 -0
  45. package/dist/components/sonner.d.ts +3 -0
  46. package/dist/components/spinner.d.ts +2 -0
  47. package/dist/components/switch.d.ts +4 -0
  48. package/dist/components/table.d.ts +10 -0
  49. package/dist/components/tabs.d.ts +7 -0
  50. package/dist/components/textarea.d.ts +3 -0
  51. package/dist/components/toggle-group.d.ts +9 -0
  52. package/dist/components/toggle.d.ts +9 -0
  53. package/dist/components/tooltip.d.ts +7 -0
  54. package/dist/design-system.css +1 -0
  55. package/dist/design-system.es.js +30200 -0
  56. package/dist/design-system.umd.js +260 -0
  57. package/dist/foundations/ThemeProvider.d.ts +13 -0
  58. package/dist/hooks/use-mobile.d.ts +1 -0
  59. package/dist/index.d.ts +54 -0
  60. package/dist/lib/utils.d.ts +2 -0
  61. package/package.json +14 -1
  62. package/.husky/pre-push +0 -21
  63. package/.storybook/main.ts +0 -11
  64. package/.storybook/preview.tsx +0 -30
  65. package/.vscode/settings.json +0 -12
  66. package/.vscode/tailwind.json +0 -105
  67. package/bitbucket-pipelines.yml +0 -50
  68. package/components.json +0 -21
  69. package/eslint.config.js +0 -38
  70. package/src/components/accordion.stories.tsx +0 -258
  71. package/src/components/accordion.test.tsx +0 -390
  72. package/src/components/accordion.tsx +0 -64
  73. package/src/components/alert-dialog.stories.tsx +0 -213
  74. package/src/components/alert-dialog.test.tsx +0 -80
  75. package/src/components/alert-dialog.tsx +0 -155
  76. package/src/components/alert.stories.tsx +0 -84
  77. package/src/components/alert.test.tsx +0 -35
  78. package/src/components/alert.tsx +0 -66
  79. package/src/components/aspect-ratio.stories.tsx +0 -97
  80. package/src/components/aspect-ratio.test.tsx +0 -47
  81. package/src/components/aspect-ratio.tsx +0 -11
  82. package/src/components/avatar.stories.tsx +0 -76
  83. package/src/components/avatar.test.tsx +0 -50
  84. package/src/components/avatar.tsx +0 -51
  85. package/src/components/badge.stories.tsx +0 -64
  86. package/src/components/badge.test.tsx +0 -34
  87. package/src/components/badge.tsx +0 -46
  88. package/src/components/breadcrumb.stories.tsx +0 -86
  89. package/src/components/breadcrumb.test.tsx +0 -74
  90. package/src/components/breadcrumb.tsx +0 -109
  91. package/src/components/button-group.stories.tsx +0 -62
  92. package/src/components/button-group.tsx +0 -83
  93. package/src/components/button.stories.tsx +0 -118
  94. package/src/components/button.test.tsx +0 -64
  95. package/src/components/button.tsx +0 -62
  96. package/src/components/calendar.stories.tsx +0 -81
  97. package/src/components/calendar.tsx +0 -220
  98. package/src/components/card.stories.tsx +0 -110
  99. package/src/components/card.test.tsx +0 -56
  100. package/src/components/card.tsx +0 -92
  101. package/src/components/carousel.stories.tsx +0 -90
  102. package/src/components/carousel.tsx +0 -239
  103. package/src/components/chart.tsx +0 -357
  104. package/src/components/checkbox.stories.tsx +0 -108
  105. package/src/components/checkbox.test.tsx +0 -67
  106. package/src/components/checkbox.tsx +0 -32
  107. package/src/components/collapsible.stories.tsx +0 -106
  108. package/src/components/collapsible.test.tsx +0 -92
  109. package/src/components/collapsible.tsx +0 -31
  110. package/src/components/command.stories.tsx +0 -90
  111. package/src/components/command.tsx +0 -182
  112. package/src/components/context-menu.stories.tsx +0 -63
  113. package/src/components/context-menu.tsx +0 -252
  114. package/src/components/dialog.stories.tsx +0 -128
  115. package/src/components/dialog.tsx +0 -141
  116. package/src/components/drawer.stories.tsx +0 -104
  117. package/src/components/drawer.tsx +0 -135
  118. package/src/components/dropdown-menu.stories.tsx +0 -97
  119. package/src/components/dropdown-menu.tsx +0 -255
  120. package/src/components/empty.stories.tsx +0 -90
  121. package/src/components/empty.test.tsx +0 -55
  122. package/src/components/empty.tsx +0 -104
  123. package/src/components/field.tsx +0 -246
  124. package/src/components/form.tsx +0 -168
  125. package/src/components/hover-card.stories.tsx +0 -66
  126. package/src/components/hover-card.tsx +0 -44
  127. package/src/components/input-group.stories.tsx +0 -57
  128. package/src/components/input-group.test.tsx +0 -40
  129. package/src/components/input-group.tsx +0 -170
  130. package/src/components/input-otp.stories.tsx +0 -94
  131. package/src/components/input-otp.test.tsx +0 -60
  132. package/src/components/input-otp.tsx +0 -75
  133. package/src/components/input.stories.tsx +0 -94
  134. package/src/components/input.test.tsx +0 -53
  135. package/src/components/input.tsx +0 -21
  136. package/src/components/item.tsx +0 -193
  137. package/src/components/kbd.stories.tsx +0 -100
  138. package/src/components/kbd.test.tsx +0 -28
  139. package/src/components/kbd.tsx +0 -28
  140. package/src/components/label.stories.tsx +0 -48
  141. package/src/components/label.test.tsx +0 -28
  142. package/src/components/label.tsx +0 -24
  143. package/src/components/menubar.tsx +0 -274
  144. package/src/components/navigation-menu.tsx +0 -168
  145. package/src/components/pagination.stories.tsx +0 -107
  146. package/src/components/pagination.tsx +0 -127
  147. package/src/components/popover.stories.tsx +0 -102
  148. package/src/components/popover.tsx +0 -48
  149. package/src/components/progress.stories.tsx +0 -76
  150. package/src/components/progress.test.tsx +0 -36
  151. package/src/components/progress.tsx +0 -29
  152. package/src/components/radio-group.stories.tsx +0 -73
  153. package/src/components/radio-group.test.tsx +0 -74
  154. package/src/components/radio-group.tsx +0 -45
  155. package/src/components/resizable.stories.tsx +0 -120
  156. package/src/components/resizable.tsx +0 -54
  157. package/src/components/scroll-area.stories.tsx +0 -64
  158. package/src/components/scroll-area.test.tsx +0 -46
  159. package/src/components/scroll-area.tsx +0 -58
  160. package/src/components/select.stories.tsx +0 -111
  161. package/src/components/select.test.tsx +0 -90
  162. package/src/components/select.tsx +0 -188
  163. package/src/components/separator.stories.tsx +0 -76
  164. package/src/components/separator.test.tsx +0 -24
  165. package/src/components/separator.tsx +0 -28
  166. package/src/components/sheet.stories.tsx +0 -122
  167. package/src/components/sheet.tsx +0 -137
  168. package/src/components/sidebar.tsx +0 -726
  169. package/src/components/skeleton.stories.tsx +0 -53
  170. package/src/components/skeleton.test.tsx +0 -24
  171. package/src/components/skeleton.tsx +0 -13
  172. package/src/components/slider.stories.tsx +0 -97
  173. package/src/components/slider.test.tsx +0 -49
  174. package/src/components/slider.tsx +0 -63
  175. package/src/components/sonner.stories.tsx +0 -96
  176. package/src/components/sonner.tsx +0 -38
  177. package/src/components/spinner.stories.tsx +0 -54
  178. package/src/components/spinner.test.tsx +0 -30
  179. package/src/components/spinner.tsx +0 -16
  180. package/src/components/switch.stories.tsx +0 -108
  181. package/src/components/switch.test.tsx +0 -62
  182. package/src/components/switch.tsx +0 -31
  183. package/src/components/table.stories.tsx +0 -139
  184. package/src/components/table.test.tsx +0 -85
  185. package/src/components/table.tsx +0 -114
  186. package/src/components/tabs.stories.tsx +0 -99
  187. package/src/components/tabs.test.tsx +0 -64
  188. package/src/components/tabs.tsx +0 -66
  189. package/src/components/textarea.stories.tsx +0 -89
  190. package/src/components/textarea.test.tsx +0 -53
  191. package/src/components/textarea.tsx +0 -18
  192. package/src/components/toggle-group.stories.tsx +0 -108
  193. package/src/components/toggle-group.test.tsx +0 -66
  194. package/src/components/toggle-group.tsx +0 -81
  195. package/src/components/toggle.stories.tsx +0 -98
  196. package/src/components/toggle.test.tsx +0 -42
  197. package/src/components/toggle.tsx +0 -45
  198. package/src/components/tooltip.stories.tsx +0 -111
  199. package/src/components/tooltip.tsx +0 -61
  200. package/src/foundations/README.md +0 -141
  201. package/src/foundations/ThemeProvider.tsx +0 -77
  202. package/src/foundations/color.css +0 -232
  203. package/src/foundations/color.stories.tsx +0 -719
  204. package/src/foundations/palette.css +0 -249
  205. package/src/foundations/spacing.css +0 -8
  206. package/src/foundations/typography.css +0 -143
  207. package/src/foundations/typography.stories.tsx +0 -17
  208. package/src/hooks/use-mobile.ts +0 -19
  209. package/src/index.css +0 -176
  210. package/src/index.ts +0 -336
  211. package/src/lib/utils.ts +0 -6
  212. package/src/test/setup.ts +0 -8
  213. package/src/vite-env.d.ts +0 -1
  214. package/tsconfig.app.json +0 -33
  215. package/tsconfig.json +0 -13
  216. package/tsconfig.node.json +0 -25
  217. package/vite.config.ts +0 -30
  218. package/vitest.config.ts +0 -25
  219. /package/{public → dist}/vite.svg +0 -0
@@ -1,719 +0,0 @@
1
- import type { Meta, StoryObj } from '@storybook/react-vite';
2
-
3
- const meta = {
4
- title: 'Foundations',
5
- parameters: {
6
- layout: 'padded',
7
- },
8
- } satisfies Meta;
9
-
10
- export default meta;
11
- type Story = StoryObj<typeof meta>;
12
-
13
- const PaletteColor = ({ bgColor }: { bgColor: string }) => {
14
- // 빈 색상인 경우 빈 div 반환
15
- if (!bgColor) {
16
- return <div className='w-full h-16' />;
17
- }
18
-
19
- // 실제 색상 값이 정의되어 있는지 확인
20
- const actualColorValue = getComputedStyle(document.documentElement).getPropertyValue(bgColor).trim();
21
- if (!actualColorValue) {
22
- return <div className='w-full h-16' />;
23
- }
24
-
25
- const opacity = Number(bgColor.split('-').reverse()[0]);
26
- let fontColorClassName = 'text-static-black';
27
- switch (bgColor) {
28
- case '--white-100':
29
- fontColorClassName = 'text-static-black';
30
- break;
31
- case '--black-100':
32
- fontColorClassName = 'text-static-white';
33
- break;
34
- default:
35
- fontColorClassName = opacity >= 50 ? 'text-static-white' : 'text-static-black';
36
- break;
37
- }
38
-
39
- return (
40
- <div
41
- className={`px-2 py-1.5 text-xs w-full h-16 ${fontColorClassName}`}
42
- style={{
43
- backgroundColor: `var(${bgColor})`,
44
- }}
45
- >
46
- <p>{opacity}</p>
47
- <p>{actualColorValue}</p>
48
- </div>
49
- );
50
- };
51
-
52
- // Palette section component
53
- const PaletteSection = ({ title, colors }: { title: string; colors: string[] }) => (
54
- <div>
55
- <p className='font-semibold mb-6'>{title}</p>
56
- <div className='flex w-full'>
57
- {colors.map((color, index) => (
58
- <PaletteColor key={index} bgColor={color} />
59
- ))}
60
- </div>
61
- </div>
62
- );
63
-
64
- export const Palette: Story = {
65
- render: () => {
66
- const colorNames = [
67
- 'neutral',
68
- 'cool-neutral',
69
- 'navy',
70
- 'blue',
71
- 'red',
72
- 'orange',
73
- 'yellow',
74
- 'lime',
75
- 'green',
76
- 'teal',
77
- 'cyan',
78
- 'sky',
79
- 'indigo',
80
- 'violet',
81
- 'purple',
82
- 'pink',
83
- ];
84
-
85
- const shades = [0, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 95];
86
-
87
- const generateColors = (colorName: string) => {
88
- return shades.map((shade) => `--${colorName}-${shade}`);
89
- };
90
-
91
- const getTitle = (colorName: string) => {
92
- return colorName
93
- .split('-')
94
- .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
95
- .join(' ');
96
- };
97
-
98
- return (
99
- <div className='w-full gap-12 grid'>
100
- <div className='flex w-full'>
101
- <div className='w-full'>
102
- <p className='font-semibold mb-6'> White</p>
103
- <div className='border border-border-main box-border'>
104
- <PaletteColor bgColor='--white-100' />
105
- </div>
106
- </div>
107
- <div className='w-full'>
108
- <p className='font-semibold mb-6'>Black</p>
109
- <div className='border border-static-black box-border'>
110
- <PaletteColor bgColor='--black-100' />
111
- </div>
112
- </div>
113
- </div>
114
- {colorNames.map((colorName, index) => (
115
- <PaletteSection key={index} title={getTitle(colorName)} colors={generateColors(colorName)} />
116
- ))}
117
- </div>
118
- );
119
- },
120
- };
121
-
122
- interface ColorItem {
123
- token: string;
124
- role: string;
125
- value: string;
126
- preview: string;
127
- }
128
-
129
- const ColorTable = ({ title, description, colors }: { title: string; description?: string; colors: ColorItem[] }) => (
130
- <div>
131
- <h2 className='text-lg font-bold '>{title}</h2>
132
- {description && <p className='mb-4 text-sm' dangerouslySetInnerHTML={{ __html: description }} />}
133
- <table className='w-full border-collapse text-sm bg-background-alternative rounded-md '>
134
- <colgroup>
135
- <col className='w-1/3' />
136
- <col className='w-1/3' />
137
- <col className='w-1/3' />
138
- </colgroup>
139
- <thead className='shadow shadow-sm'>
140
- <tr>
141
- <th className=' p-3 text-left'>Token</th>
142
- <th className=' p-3 text-left'>Role</th>
143
- <th className=' p-3 text-left'>Value</th>
144
- </tr>
145
- </thead>
146
- <tbody>
147
- {colors.map((color, colorIndex) => (
148
- <tr key={colorIndex}>
149
- <td className='p-3 font-medium'>{color.token}</td>
150
- <td className='p-3 text-sm'>{color.role}</td>
151
- <td className='p-3 text-sm '>
152
- <div className='flex justify-between items-center'>
153
- {color.value}
154
- <div className={`w-12 h-12 border border-gray-200 rounded-full ${color.preview}`} />
155
- </div>
156
- </td>
157
- </tr>
158
- ))}
159
- </tbody>
160
- </table>
161
- </div>
162
- );
163
-
164
- export const Color: Story = {
165
- render: () => {
166
- const data = [
167
- {
168
- title: 'Static',
169
- description: '테마에 상관없이 변하지 않는 고정 색상을 정의합니다.',
170
- data: [
171
- {
172
- token: 'static-white',
173
- role: '배경 및 밝은 요소에 사용되는 고정 색상',
174
- value: 'white-100',
175
- preview: 'bg-static-white',
176
- },
177
- {
178
- token: 'static-black',
179
- role: '어두운 요소에 사용되는 고정 색상',
180
- value: 'black-100',
181
- preview: 'bg-static-black',
182
- },
183
- ],
184
- },
185
- {
186
- title: 'Primary',
187
- description:
188
- '각 제품의 주요 행동과 브랜드 아이덴티티를 나타내는 핵심 컬러입니다. (ex. 로고, Accent 컬러, Button, Active 상태의 Border 등)<br/>각 제품별로 정의할 수 있습니다.',
189
- data: [
190
- {
191
- token: 'primary-main',
192
- role: '메인 컬러',
193
- value: 'violet-60',
194
- preview: 'bg-primary-main',
195
- },
196
- {
197
- token: 'primary-alternative',
198
- role: '어두운 톤의 보조 컬러 (Main 배경위에 겹쳐지는 더 깊은 위계를 가짐)',
199
- value: 'violet-80',
200
- preview: 'bg-primary-alternative',
201
- },
202
- {
203
- token: 'primary-subtle',
204
- role: '밝은 톤의 보조 컬러 (Main 배경 위에 겹쳐지는 더 깊은 위계를 가짐)',
205
- value: 'violet-40',
206
- preview: 'bg-primary-subtle',
207
- },
208
- ],
209
- },
210
- {
211
- title: 'Secondary',
212
- description:
213
- 'Primary 컬러를 보조하거나 다른 중요한 요소를 강조하는 데 사용되는 컬러입니다. Primary 색상과 조화로운 색상을 적용합니다.<br/>각 제품별로 정의할 수 있습니다.',
214
- data: [
215
- {
216
- token: 'secondary-main',
217
- role: 'Secondary의 메인 컬러',
218
- value: 'indigo-60',
219
- preview: 'bg-secondary-main',
220
- },
221
- {
222
- token: 'secondary-alternative',
223
- role: '어두운 톤의 보조 컬러 (Main 배경위에 겹쳐지는 더 깊은 위계를 가짐)',
224
- value: 'indigo-80',
225
- preview: 'bg-secondary-alternative',
226
- },
227
- {
228
- token: 'secondary-subtle',
229
- role: '밝은 톤의 보조 컬러 (Main 배경 위에 겹쳐지는 더 깊은 위계를 가짐)',
230
- value: 'indigo-40',
231
- preview: 'bg-secondary-subtle',
232
- },
233
- ],
234
- },
235
- {
236
- title: 'Tertiary',
237
- description:
238
- '가장 낮은 위계의 요소에 사용되며, 시각적 노이즈를 줄이는 역할을 합니다.<br/>각 제품별로 정의할 수 있습니다.',
239
- data: [
240
- {
241
- token: 'tertiary-main',
242
- role: 'Tertiary의 메인 컬러',
243
- value: 'navy-60',
244
- preview: 'bg-tertiary-main',
245
- },
246
- {
247
- token: 'tertiary-alternative',
248
- role: '어두운 톤의 보조 컬러 (Main 배경위에 겹쳐지는 더 깊은 위계를 가짐)',
249
- value: 'navy-80',
250
- preview: 'bg-tertiary-alternative',
251
- },
252
- {
253
- token: 'tertiary-subtle',
254
- role: '밝은 톤의 보조 컬러 (Main 배경 위에 겹쳐지는 더 깊은 위계를 가짐)',
255
- value: 'navy-40',
256
- preview: 'bg-tertiary-subtle',
257
- },
258
- ],
259
- },
260
- {
261
- title: 'Background',
262
- description: '애플리케이션의 배경에 사용되는 색상으로, 콘텐츠를 돋보이게 하고 시각적 위계를 형성합니다.',
263
- data: [
264
- {
265
- token: 'background-main',
266
- role: '서비스의 주요 배경색',
267
- value: 'white-100',
268
- preview: 'bg-background-main',
269
- },
270
- {
271
- token: 'background-alternative',
272
- role: '사이드 패널이나 특정 섹션의 배경색(primary 배경과 시각적 위계를 구분됨)',
273
- value: 'cool-neutral-5',
274
- preview: 'bg-background-alternative',
275
- },
276
- {
277
- token: 'background-subtle',
278
- role: '사이드 패널이나 특정 섹션의 배경색(alternative 배경과 시각적 위계를 구분됨)',
279
- value: 'cool-neutral-0',
280
- preview: 'bg-background-subtle',
281
- },
282
- {
283
- token: 'background-elevated-main',
284
- role: '배경 위에 겹쳐지는 더 깊은 위계를 가진 영역에 사용(Component의 배경색)',
285
- value: 'cool-neutral-10',
286
- preview: 'bg-background-elevated-main',
287
- },
288
- {
289
- token: 'background-elevated-alternative',
290
- role: '배경 위에 겹쳐지는 더 깊은 위계를 가진 영역에 사용(Component의 배경색)',
291
- value: 'cool-neutral-20',
292
- preview: 'bg-background-elevated-alternative',
293
- },
294
- {
295
- token: 'background-emphize',
296
- role: 'UI의 기본 배경과 대비되는 색상 (깊이감이나 강조 효과)',
297
- value: 'cool-neutral-90',
298
- preview: 'bg-background-emphize',
299
- },
300
- {
301
- token: 'background-quiet',
302
- role: '비활성화된 Component의 배경색',
303
- value: 'cool-neutral-90 / 5%',
304
- preview: 'bg-background-quiet',
305
- },
306
- {
307
- token: 'background-success',
308
- role: '성공 상태를 나타내는 배경 색상',
309
- value: 'green-50',
310
- preview: 'bg-background-success',
311
- },
312
- {
313
- token: 'background-error',
314
- role: '에러 상태를 나타내는 배경 색상',
315
- value: 'red-50',
316
- preview: 'bg-background-error',
317
- },
318
- {
319
- token: 'background-info-subtle',
320
- role: '정보 혹은 팁을 나타내는 보조 배경색',
321
- value: 'blue-50 / 5%',
322
- preview: 'bg-background-info-subtle',
323
- },
324
- {
325
- token: 'background-success-subtle',
326
- role: '성공 상황를 나타내는 보조 배경색',
327
- value: 'green-50 / 5%',
328
- preview: 'bg-background-success-subtle',
329
- },
330
- {
331
- token: 'background-warning-subtle',
332
- role: '주의 사항을 나타내는 보조 배경색',
333
- value: 'yellow-50 / 5%',
334
- preview: 'bg-background-warning-subtle',
335
- },
336
- {
337
- token: 'background-error-subtle',
338
- role: '위험 상황를 나타내는 보조 배경색',
339
- value: 'red-50 / 5%',
340
- preview: 'bg-background-error-subtle',
341
- },
342
- ],
343
- },
344
- {
345
- title: 'Text',
346
- description: '애플리케이션의 텍스트에 사용되는 색상으로, 가독성과 시각적 위계를 제공합니다.',
347
- data: [
348
- {
349
- token: 'text-main',
350
- role: '본문, 제목 등 가장 중요한 텍스트 색상',
351
- value: 'cool-neutral-90',
352
- preview: 'bg-text-main',
353
- },
354
- {
355
- token: 'text-alternative',
356
- role: '보조 정보, 캡션, 부제목 등 상대적으로 덜 중요한 텍스트 색상 1',
357
- value: 'cool-neutral-80',
358
- preview: 'bg-text-alternative',
359
- },
360
- {
361
- token: 'text-subtle',
362
- role: '보조 정보, 캡션, 부제목 등 상대적으로 덜 중요한 텍스트 색상 2',
363
- value: 'cool-neutral-60',
364
- preview: 'bg-text-subtle',
365
- },
366
- {
367
- token: 'text-ghost',
368
- role: '보조 정보, 캡션, 부제목 등 상대적으로 덜 중요한 텍스트 색상 3',
369
- value: 'cool-neutral-30',
370
- preview: 'bg-text-ghost',
371
- },
372
- {
373
- token: 'text-quiet',
374
- role: '비활성화된 텍스트 색상',
375
- value: 'cool-neutral-25',
376
- preview: 'bg-text-quiet',
377
- },
378
- {
379
- token: 'text-emphize',
380
- role: '기본 텍스트 컬러와 대비되는 색상 (깊이감이나 강조 효과)',
381
- value: 'cool-neutral-10',
382
- preview: 'bg-text-emphize',
383
- },
384
- {
385
- token: 'text-interactive',
386
- role: '클릭 가능한 링크의 텍스트 색상',
387
- value: 'violet-60',
388
- preview: 'bg-text-interactive',
389
- },
390
- {
391
- token: 'text-info',
392
- role: '정보 혹은 팁을 나타내는 텍스트 색상',
393
- value: 'blue-70',
394
- preview: 'bg-text-info',
395
- },
396
- {
397
- token: 'text-success',
398
- role: '성공의 상황를 나타내는 텍스트 색상',
399
- value: 'green-70',
400
- preview: 'bg-text-success',
401
- },
402
- {
403
- token: 'text-warning',
404
- role: '주의의 상황를 나타내는 텍스트 색상',
405
- value: 'yellow-70',
406
- preview: 'bg-text-warning',
407
- },
408
- {
409
- token: 'text-error',
410
- role: '위험의 상황를 나타내는텍스트 색상',
411
- value: 'red-70',
412
- preview: 'bg-text-error',
413
- },
414
- ],
415
- },
416
- {
417
- title: 'Border',
418
- description: '컴포넌트와 레이아웃을 구분하는 경계선에 사용되는 색상입니다.',
419
- data: [
420
- {
421
- token: 'border-main',
422
- role: '기본 테두리 색상',
423
- value: 'cool-neutral-10',
424
- preview: 'bg-border-main',
425
- },
426
- {
427
- token: 'border-alternative',
428
- role: '대체 테두리 색상 (더 진한 톤)',
429
- value: 'cool-neutral-30',
430
- preview: 'bg-border-alternative',
431
- },
432
- {
433
- token: 'border-subtle',
434
- role: '미묘한 테두리 색상 (더 연한 톤)',
435
- value: 'cool-neutral-0',
436
- preview: 'bg-border-subtle',
437
- },
438
- {
439
- token: 'border-emphize',
440
- role: '강조된 테두리 색상',
441
- value: 'cool-neutral-90',
442
- preview: 'bg-border-emphize',
443
- },
444
- {
445
- token: 'border-quiet',
446
- role: '비활성화된 테두리 색상',
447
- value: 'cool-neutral-5',
448
- preview: 'bg-border-quiet',
449
- },
450
- {
451
- token: 'border-main-focusRing',
452
- role: '기본 포커스 링 색상',
453
- value: 'cool-neutral-10 / 50%',
454
- preview: 'bg-border-main-focusRing',
455
- },
456
- {
457
- token: 'border-emphize--focusRing',
458
- role: '강조된 포커스 링 색상',
459
- value: 'cool-neutral-90 / 50%',
460
- preview: 'bg-border-emphize--focusRing',
461
- },
462
- {
463
- token: 'border-control-default-focusRing',
464
- role: '컨트롤 요소의 기본 포커스 링 색상',
465
- value: 'cool-neutral-20 / 50%',
466
- preview: 'bg-border-control-default-focusRing',
467
- },
468
- {
469
- token: 'border-info',
470
- role: '정보를 전달하는 테두리 색상',
471
- value: 'blue-50',
472
- preview: 'bg-border-info',
473
- },
474
- {
475
- token: 'border-success',
476
- role: '성공 상태를 나타내는 테두리 색상',
477
- value: 'green-50',
478
- preview: 'bg-border-success',
479
- },
480
- {
481
- token: 'border-warning',
482
- role: '경고를 나타내는 테두리 색상',
483
- value: 'orange-50',
484
- preview: 'bg-border-warning',
485
- },
486
- {
487
- token: 'border-error',
488
- role: '에러를 나타내는 테두리 색상',
489
- value: 'red-50',
490
- preview: 'bg-border-error',
491
- },
492
- {
493
- token: 'border-success-focusRing',
494
- role: '성공 상태의 포커스 링 색상',
495
- value: 'green-50 / 50%',
496
- preview: 'bg-border-success-focusRing',
497
- },
498
- {
499
- token: 'border-warning-focusRing',
500
- role: '경고 상태의 포커스 링 색상',
501
- value: 'orange-50 / 50%',
502
- preview: 'bg-border-warning-focusRing',
503
- },
504
- {
505
- token: 'border-error-focusRing',
506
- role: '에러 상태의 포커스 링 색상',
507
- value: 'red-50 / 50%',
508
- preview: 'bg-border-error-focusRing',
509
- },
510
- ],
511
- },
512
- {
513
- title: 'Icon',
514
- description: '아이콘에 사용되는 색상으로, 시각적 위계와 상태를 나타냅니다.',
515
- data: [
516
- {
517
- token: 'icon-main',
518
- role: '기본 아이콘 색상',
519
- value: 'cool-neutral-90',
520
- preview: 'bg-icon-main',
521
- },
522
- {
523
- token: 'icon-alternative',
524
- role: '대체 아이콘 색상',
525
- value: 'cool-neutral-70',
526
- preview: 'bg-icon-alternative',
527
- },
528
- {
529
- token: 'icon-quiet',
530
- role: '비활성화된 아이콘 색상',
531
- value: 'cool-neutral-20',
532
- preview: 'bg-icon-quiet',
533
- },
534
- {
535
- token: 'icon-emphize',
536
- role: '강조된 아이콘 색상 (어두운 배경 위)',
537
- value: 'cool-neutral-0',
538
- preview: 'bg-icon-emphize',
539
- },
540
- {
541
- token: 'icon-disable',
542
- role: '비활성 상태 아이콘 색상',
543
- value: 'cool-neutral-30',
544
- preview: 'bg-icon-disable',
545
- },
546
- {
547
- token: 'icon-info',
548
- role: '정보를 전달하는 아이콘 색상',
549
- value: 'blue-50',
550
- preview: 'bg-icon-info',
551
- },
552
- {
553
- token: 'icon-success',
554
- role: '성공 상태를 나타내는 아이콘 색상',
555
- value: 'green-50',
556
- preview: 'bg-icon-success',
557
- },
558
- {
559
- token: 'icon-warning',
560
- role: '경고를 나타내는 아이콘 색상',
561
- value: 'orange-50',
562
- preview: 'bg-icon-warning',
563
- },
564
- {
565
- token: 'icon-error',
566
- role: '에러를 나타내는 아이콘 색상',
567
- value: 'red-50',
568
- preview: 'bg-icon-error',
569
- },
570
- ],
571
- },
572
- {
573
- title: 'State',
574
- description: '인터랙티브 요소의 상태를 나타내는 색상입니다.',
575
- data: [
576
- {
577
- token: 'state-default',
578
- role: '기본 상태 색상',
579
- value: 'cool-neutral-0 / 100%',
580
- preview: 'bg-state-default',
581
- },
582
- {
583
- token: 'state-hovered',
584
- role: '호버 상태 색상',
585
- value: 'cool-neutral-5 / 100%',
586
- preview: 'bg-state-hovered',
587
- },
588
- {
589
- token: 'state-focused',
590
- role: '포커스 상태 색상',
591
- value: 'cool-neutral-10 / 100%',
592
- preview: 'bg-state-focused',
593
- },
594
- {
595
- token: 'state-pressed',
596
- role: '눌림 상태 색상',
597
- value: 'cool-neutral-15 / 100%',
598
- preview: 'bg-state-pressed',
599
- },
600
- {
601
- token: 'state-disabled',
602
- role: '비활성화 상태 색상',
603
- value: 'static-white / 50%',
604
- preview: 'bg-state-disabled',
605
- },
606
- ],
607
- },
608
- {
609
- title: 'Status',
610
- description: '상태 메시지와 알림에 사용되는 색상입니다.',
611
- data: [
612
- {
613
- token: 'status-info-main',
614
- role: '정보 상태의 메인 색상',
615
- value: 'blue-50',
616
- preview: 'bg-status-info-main',
617
- },
618
- {
619
- token: 'status-info-alternative',
620
- role: '정보 상태의 대체 색상',
621
- value: 'blue-70',
622
- preview: 'bg-status-info-alternative',
623
- },
624
- {
625
- token: 'status-info-ghost',
626
- role: '정보 상태의 미묘한 색상',
627
- value: 'blue-10',
628
- preview: 'bg-status-info-ghost',
629
- },
630
- {
631
- token: 'status-success-main',
632
- role: '성공 상태의 메인 색상',
633
- value: 'green-50',
634
- preview: 'bg-status-success-main',
635
- },
636
- {
637
- token: 'status-success-alternative',
638
- role: '성공 상태의 대체 색상',
639
- value: 'green-70',
640
- preview: 'bg-status-success-alternative',
641
- },
642
- {
643
- token: 'status-success-ghost',
644
- role: '성공 상태의 미묘한 색상',
645
- value: 'green-10',
646
- preview: 'bg-status-success-ghost',
647
- },
648
- {
649
- token: 'status-warning-main',
650
- role: '경고 상태의 메인 색상',
651
- value: 'orange-50',
652
- preview: 'bg-status-warning-main',
653
- },
654
- {
655
- token: 'status-warning-alternative',
656
- role: '경고 상태의 대체 색상',
657
- value: 'orange-70',
658
- preview: 'bg-status-warning-alternative',
659
- },
660
- {
661
- token: 'status-warning-ghost',
662
- role: '경고 상태의 미묘한 색상',
663
- value: 'orange-10',
664
- preview: 'bg-status-warning-ghost',
665
- },
666
- {
667
- token: 'status-error-main',
668
- role: '에러 상태의 메인 색상',
669
- value: 'red-50',
670
- preview: 'bg-status-error-main',
671
- },
672
- {
673
- token: 'status-error-alternative',
674
- role: '에러 상태의 대체 색상',
675
- value: 'red-70',
676
- preview: 'bg-status-error-alternative',
677
- },
678
- {
679
- token: 'status-error-ghost',
680
- role: '에러 상태의 미묘한 색상',
681
- value: 'red-10',
682
- preview: 'bg-status-error-ghost',
683
- },
684
- ],
685
- },
686
- {
687
- title: 'Overlay',
688
- description: '모달, 팝업 등에 사용되는 오버레이 색상입니다.',
689
- data: [
690
- {
691
- token: 'overlay-main',
692
- role: '메인 오버레이 색상',
693
- value: 'cool-neutral-90 / 40%',
694
- preview: 'bg-overlay-main',
695
- },
696
- {
697
- token: 'overlay-alternative',
698
- role: '대체 오버레이 색상 (더 연한 톤)',
699
- value: 'cool-neutral-90 / 20%',
700
- preview: 'bg-overlay-alternative',
701
- },
702
- ],
703
- },
704
- ];
705
-
706
- return (
707
- <div className='space-y-6'>
708
- {data.map((colorGroup, groupIndex) => (
709
- <ColorTable
710
- key={groupIndex}
711
- title={colorGroup.title}
712
- description={colorGroup.description}
713
- colors={colorGroup.data}
714
- />
715
- ))}
716
- </div>
717
- );
718
- },
719
- };