@likelion-design/ui 0.1.5 → 0.1.7

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 (48) hide show
  1. package/README.md +26 -20
  2. package/dist/Button.css +415 -0
  3. package/dist/Button.css.map +1 -0
  4. package/dist/Button.d.mts +63 -0
  5. package/dist/Button.d.ts +63 -0
  6. package/dist/Button.js +232 -0
  7. package/dist/Button.js.map +1 -0
  8. package/dist/Button.mjs +12 -0
  9. package/dist/Button.mjs.map +1 -0
  10. package/dist/Header.css +450 -0
  11. package/dist/Header.css.map +1 -0
  12. package/dist/Header.d.mts +14 -0
  13. package/dist/Header.d.ts +14 -0
  14. package/dist/Header.js +160 -0
  15. package/dist/Header.js.map +1 -0
  16. package/dist/Header.mjs +9 -0
  17. package/dist/Header.mjs.map +1 -0
  18. package/dist/Page.css +516 -0
  19. package/dist/Page.css.map +1 -0
  20. package/dist/Page.d.mts +5 -0
  21. package/dist/Page.d.ts +5 -0
  22. package/dist/Page.js +262 -0
  23. package/dist/Page.js.map +1 -0
  24. package/dist/Page.mjs +10 -0
  25. package/dist/Page.mjs.map +1 -0
  26. package/dist/chunk-22Q3FVTV.mjs +43 -0
  27. package/dist/chunk-22Q3FVTV.mjs.map +1 -0
  28. package/dist/chunk-4T4Z32IO.mjs +102 -0
  29. package/dist/chunk-4T4Z32IO.mjs.map +1 -0
  30. package/dist/chunk-6BR7YIWI.mjs +181 -0
  31. package/dist/chunk-6BR7YIWI.mjs.map +1 -0
  32. package/dist/chunk-DDHQ5ZFF.mjs +75 -0
  33. package/dist/chunk-DDHQ5ZFF.mjs.map +1 -0
  34. package/dist/index.css +516 -8
  35. package/dist/index.css.map +1 -1
  36. package/dist/index.d.mts +5 -76
  37. package/dist/index.d.ts +5 -76
  38. package/dist/index.js +42 -29
  39. package/dist/index.js.map +1 -1
  40. package/dist/index.mjs +12 -348
  41. package/dist/index.mjs.map +1 -1
  42. package/dist/tailwind-preset.d.mts +5 -0
  43. package/dist/tailwind-preset.d.ts +5 -0
  44. package/dist/tailwind-preset.js +58 -0
  45. package/dist/tailwind-preset.js.map +1 -0
  46. package/dist/tailwind-preset.mjs +65 -0
  47. package/dist/tailwind-preset.mjs.map +1 -0
  48. package/package.json +22 -11
package/README.md CHANGED
@@ -23,31 +23,37 @@ import "@likelion-design/ui/styles.css";
23
23
 
24
24
  ### 2. 컴포넌트 사용
25
25
 
26
+ #### 전체 가져오기
27
+
26
28
  ```tsx
27
29
  import { ActionButton, IconButton } from "@likelion-design/ui";
30
+ import "@likelion-design/ui/styles.css";
31
+ ```
32
+
33
+ #### 개별 컴포넌트 가져오기 (Tree-shaking 최적화)
34
+
35
+ 특정 컴포넌트와 그에 필요한 스타일만 선택적으로 불러올 수 있습니다:
36
+
37
+ ```tsx
38
+ import { ActionButton } from "@likelion-design/ui/Button";
39
+ import "@likelion-design/ui/dist/Button.css";
40
+ ```
41
+
42
+ ### 3. Tailwind CSS 통합 (선택 사항)
28
43
 
29
- function App() {
30
- return (
31
- <div>
32
- <ActionButton
33
- size="medium"
34
- variant="primary"
35
- onClick={() => console.log("clicked")}
36
- >
37
- Click me
38
- </ActionButton>
39
-
40
- <IconButton
41
- size="large"
42
- variant="primary"
43
- icon={<YourIcon />}
44
- aria-label="좋아요"
45
- />
46
- </div>
47
- );
48
- }
44
+ 라이브러리의 디자인 토큰(색상 등) 프로젝트의 Tailwind 설정에 통합하여 사용할 수 있습니다.
45
+
46
+ `tailwind.config.js`:
47
+
48
+ ```javascript
49
+ module.exports = {
50
+ presets: [require("@likelion-design/ui/tailwind-preset")],
51
+ // ...
52
+ };
49
53
  ```
50
54
 
55
+ 이제 `text-semantic-fg-primary` 또는 `bg-primary-500`과 같은 클래스를 프로젝트 어디에서나 사용할 수 있습니다.
56
+
51
57
  ## 컴포넌트
52
58
 
53
59
  ### ActionButton
@@ -0,0 +1,415 @@
1
+ /* src/stories/button.module.css */
2
+ .storybook-button {
3
+ display: inline-block;
4
+ cursor: pointer;
5
+ border: 0;
6
+ border-radius: 3em;
7
+ font-weight: 700;
8
+ line-height: 1;
9
+ font-family:
10
+ "Nunito Sans",
11
+ "Helvetica Neue",
12
+ Helvetica,
13
+ Arial,
14
+ sans-serif;
15
+ }
16
+ .storybook-button--primary {
17
+ background-color: #555ab9;
18
+ color: white;
19
+ }
20
+ .storybook-button--secondary {
21
+ box-shadow: rgba(0, 0, 0, 0.15) 0px 0px 0px 1px inset;
22
+ background-color: transparent;
23
+ color: #333;
24
+ }
25
+ .storybook-button--small {
26
+ padding: 10px 16px;
27
+ font-size: 12px;
28
+ }
29
+ .storybook-button--medium {
30
+ padding: 11px 20px;
31
+ font-size: 14px;
32
+ }
33
+ .storybook-button--large {
34
+ padding: 12px 24px;
35
+ font-size: 16px;
36
+ }
37
+ .action-button {
38
+ display: inline-flex;
39
+ align-items: center;
40
+ justify-content: center;
41
+ gap: 8px;
42
+ font-family:
43
+ "Pretendard",
44
+ -apple-system,
45
+ BlinkMacSystemFont,
46
+ system-ui,
47
+ sans-serif;
48
+ font-weight: 600;
49
+ border-radius: 8px;
50
+ border: none;
51
+ cursor: pointer;
52
+ transition: all 0.2s ease;
53
+ min-width: fit-content;
54
+ white-space: nowrap;
55
+ }
56
+ .action-button--xlarge {
57
+ height: 56px;
58
+ padding: 0 24px;
59
+ font-size: 17px;
60
+ min-width: 34px;
61
+ }
62
+ .action-button--large {
63
+ height: 48px;
64
+ padding: 0 24px;
65
+ font-size: 17px;
66
+ min-width: 34px;
67
+ }
68
+ .action-button--medium {
69
+ height: 36px;
70
+ padding: 0 20px;
71
+ font-size: 15px;
72
+ min-width: 34px;
73
+ }
74
+ .action-button--small {
75
+ height: 28px;
76
+ padding: 0 16px;
77
+ font-size: 13px;
78
+ min-width: 30px;
79
+ }
80
+ .action-button--primary.action-button--solid {
81
+ background-color: var(--color-semantic-bg-primary);
82
+ color: var(--color-semantic-fg-inverted);
83
+ }
84
+ .action-button--primary.action-button--solid:hover:not(:disabled),
85
+ .action-button--primary.action-button--solid.action-button--hovered:not(:disabled) {
86
+ background-color: var(--color-semantic-bg-primary-hovered);
87
+ }
88
+ .action-button--primary.action-button--solid:disabled,
89
+ .action-button--primary.action-button--solid.action-button--disabled {
90
+ background-color: var(--color-semantic-bg-normal-disabled);
91
+ color: var(--color-semantic-fg-disabled);
92
+ cursor: not-allowed;
93
+ }
94
+ .action-button--primary.action-button--outline {
95
+ background-color: transparent;
96
+ color: var(--color-semantic-fg-primary);
97
+ border: 1px solid var(--color-semantic-border-normal);
98
+ }
99
+ .action-button--primary.action-button--outline:hover:not(:disabled),
100
+ .action-button--primary.action-button--outline.action-button--hovered:not(:disabled) {
101
+ background-color: var(--color-semantic-bg-normal-hovered);
102
+ }
103
+ .action-button--primary.action-button--outline:disabled,
104
+ .action-button--primary.action-button--outline.action-button--disabled {
105
+ color: var(--color-semantic-fg-disabled);
106
+ border-color: var(--color-semantic-border-weak);
107
+ background-color: var(--color-semantic-bg-white);
108
+ cursor: not-allowed;
109
+ }
110
+ .action-button--primary.action-button--ghost {
111
+ background-color: transparent;
112
+ color: var(--color-semantic-fg-primary);
113
+ }
114
+ .action-button--primary.action-button--ghost:hover:not(:disabled),
115
+ .action-button--primary.action-button--ghost.action-button--hovered:not(:disabled) {
116
+ background-color: var(--color-semantic-bg-primary-weak);
117
+ }
118
+ .action-button--primary.action-button--ghost:disabled,
119
+ .action-button--primary.action-button--ghost.action-button--disabled {
120
+ color: var(--color-semantic-fg-disabled);
121
+ background-color: var(--color-semantic-bg-white);
122
+ cursor: not-allowed;
123
+ }
124
+ .action-button--neutral.action-button--solid {
125
+ background-color: var(--color-semantic-bg-inverted);
126
+ color: var(--color-semantic-fg-white);
127
+ }
128
+ .action-button--neutral.action-button--solid:hover:not(:disabled),
129
+ .action-button--neutral.action-button--solid.action-button--hovered:not(:disabled) {
130
+ background-color: var(--color-semantic-bg-inverted);
131
+ }
132
+ .action-button--neutral.action-button--solid:disabled,
133
+ .action-button--neutral.action-button--solid.action-button--disabled {
134
+ background-color: var(--color-semantic-bg-normal-disabled);
135
+ color: var(--color-semantic-fg-disabled);
136
+ cursor: not-allowed;
137
+ }
138
+ .action-button--neutral.action-button--outline {
139
+ background-color: transparent;
140
+ color: var(--color-semantic-fg-normal);
141
+ border: 1px solid var(--color-semantic-border-normal);
142
+ }
143
+ .action-button--neutral.action-button--outline:hover:not(:disabled),
144
+ .action-button--neutral.action-button--outline.action-button--hovered:not(:disabled) {
145
+ background-color: var(--color-semantic-bg-normal-hovered);
146
+ }
147
+ .action-button--neutral.action-button--outline:disabled,
148
+ .action-button--neutral.action-button--outline.action-button--disabled {
149
+ color: var(--color-semantic-fg-disabled);
150
+ border-color: var(--color-semantic-border-weak);
151
+ background-color: var(--color-semantic-bg-white);
152
+ cursor: not-allowed;
153
+ }
154
+ .action-button--neutral.action-button--ghost {
155
+ background-color: transparent;
156
+ color: var(--color-semantic-fg-normal);
157
+ }
158
+ .action-button--neutral.action-button--ghost:hover:not(:disabled),
159
+ .action-button--neutral.action-button--ghost.action-button--hovered:not(:disabled) {
160
+ background-color: var(--color-semantic-bg-normal-hovered);
161
+ }
162
+ .action-button--neutral.action-button--ghost:disabled,
163
+ .action-button--neutral.action-button--ghost.action-button--disabled {
164
+ color: var(--color-semantic-fg-disabled);
165
+ cursor: not-allowed;
166
+ }
167
+ .action-button--secondary.action-button--solid {
168
+ background-color: var(--color-semantic-bg-normal);
169
+ color: var(--color-semantic-fg-normal);
170
+ }
171
+ .action-button--secondary.action-button--solid:hover:not(:disabled),
172
+ .action-button--secondary.action-button--solid.action-button--hovered:not(:disabled) {
173
+ background-color: var(--color-semantic-bg-normal-hovered);
174
+ }
175
+ .action-button--secondary.action-button--solid:disabled,
176
+ .action-button--secondary.action-button--solid.action-button--disabled {
177
+ background-color: var(--color-semantic-bg-normal-disabled);
178
+ color: var(--color-semantic-fg-disabled);
179
+ cursor: not-allowed;
180
+ }
181
+ .action-button--loading {
182
+ position: relative;
183
+ pointer-events: none;
184
+ }
185
+ .action-button--loading .action-button__content {
186
+ opacity: 0;
187
+ }
188
+ .action-button__content {
189
+ display: inline-flex;
190
+ align-items: center;
191
+ gap: 8px;
192
+ }
193
+ .action-button__spinner {
194
+ position: absolute;
195
+ top: 50%;
196
+ left: 50%;
197
+ transform: translate(-50%, -50%);
198
+ display: inline-flex;
199
+ align-items: center;
200
+ justify-content: center;
201
+ }
202
+ .action-button__spinner-svg {
203
+ width: 20px;
204
+ height: 20px;
205
+ animation: spin 1s linear infinite;
206
+ }
207
+ @keyframes spin {
208
+ from {
209
+ transform: rotate(0deg);
210
+ }
211
+ to {
212
+ transform: rotate(360deg);
213
+ }
214
+ }
215
+ .action-button__spinner-circle {
216
+ opacity: 1;
217
+ }
218
+ .action-button--primary.action-button--solid.action-button--loading {
219
+ background-color: var(--color-semantic-bg-primary-hovered);
220
+ color: var(--color-semantic-fg-inverted);
221
+ }
222
+ .action-button--primary.action-button--outline.action-button--loading {
223
+ background-color: var(--color-semantic-bg-normal-hovered);
224
+ color: var(--color-semantic-fg-primary);
225
+ }
226
+ .action-button--primary.action-button--ghost.action-button--loading {
227
+ background-color: var(--color-semantic-bg-primary-weak);
228
+ color: var(--color-semantic-fg-primary);
229
+ }
230
+ .action-button--neutral.action-button--solid.action-button--loading {
231
+ background-color: var(--color-semantic-bg-inverted);
232
+ color: var(--color-semantic-fg-white);
233
+ }
234
+ .action-button--neutral.action-button--outline.action-button--loading {
235
+ background-color: var(--color-semantic-bg-normal-hovered);
236
+ color: var(--color-semantic-fg-normal);
237
+ }
238
+ .action-button--neutral.action-button--ghost.action-button--loading {
239
+ background-color: var(--color-semantic-bg-normal-hovered);
240
+ color: var(--color-semantic-fg-normal);
241
+ }
242
+ .action-button--secondary.action-button--solid.action-button--loading {
243
+ background-color: var(--color-semantic-bg-normal-hovered);
244
+ color: var(--color-semantic-fg-normal);
245
+ }
246
+ .action-button__prefix-icon,
247
+ .action-button__suffix-icon {
248
+ display: inline-flex;
249
+ align-items: center;
250
+ flex-shrink: 0;
251
+ }
252
+ .action-button--small .action-button__prefix-icon,
253
+ .action-button--small .action-button__suffix-icon {
254
+ width: 16px;
255
+ height: 16px;
256
+ }
257
+ .action-button--medium .action-button__prefix-icon,
258
+ .action-button--medium .action-button__suffix-icon {
259
+ width: 18px;
260
+ height: 18px;
261
+ }
262
+ .action-button--large .action-button__prefix-icon,
263
+ .action-button--large .action-button__suffix-icon {
264
+ width: 20px;
265
+ height: 20px;
266
+ }
267
+ .action-button--xlarge .action-button__prefix-icon,
268
+ .action-button--xlarge .action-button__suffix-icon {
269
+ width: 24px;
270
+ height: 24px;
271
+ }
272
+ .action-button__label {
273
+ display: inline-flex;
274
+ align-items: center;
275
+ }
276
+ .icon-button {
277
+ display: inline-flex;
278
+ align-items: center;
279
+ justify-content: center;
280
+ font-family:
281
+ "Pretendard",
282
+ -apple-system,
283
+ BlinkMacSystemFont,
284
+ system-ui,
285
+ sans-serif;
286
+ border: none;
287
+ cursor: pointer;
288
+ transition: all 0.2s ease;
289
+ padding: 0;
290
+ flex-shrink: 0;
291
+ }
292
+ .icon-button--xlarge {
293
+ width: 56px;
294
+ height: 56px;
295
+ border-radius: 8px;
296
+ }
297
+ .icon-button--large {
298
+ width: 48px;
299
+ height: 48px;
300
+ border-radius: 6px;
301
+ }
302
+ .icon-button--medium {
303
+ width: 36px;
304
+ height: 36px;
305
+ border-radius: 4px;
306
+ }
307
+ .icon-button--small {
308
+ width: 28px;
309
+ height: 28px;
310
+ border-radius: 4px;
311
+ }
312
+ .icon-button__icon {
313
+ display: inline-flex;
314
+ align-items: center;
315
+ justify-content: center;
316
+ width: 100%;
317
+ height: 100%;
318
+ }
319
+ .icon-button--xlarge .icon-button__icon,
320
+ .icon-button--large .icon-button__icon {
321
+ width: 24px;
322
+ height: 24px;
323
+ }
324
+ .icon-button--medium .icon-button__icon {
325
+ width: 20px;
326
+ height: 20px;
327
+ }
328
+ .icon-button--small .icon-button__icon {
329
+ width: 16px;
330
+ height: 16px;
331
+ }
332
+ .icon-button--primary.icon-button--solid {
333
+ background-color: var(--color-semantic-bg-primary);
334
+ color: var(--color-semantic-fg-inverted);
335
+ }
336
+ .icon-button--primary.icon-button--solid:hover:not(:disabled),
337
+ .icon-button--primary.icon-button--solid.icon-button--hovered:not(:disabled) {
338
+ background-color: var(--color-semantic-bg-primary-hovered);
339
+ }
340
+ .icon-button--primary.icon-button--solid:disabled,
341
+ .icon-button--primary.icon-button--solid.icon-button--disabled {
342
+ background-color: var(--color-semantic-bg-normal-disabled);
343
+ color: var(--color-semantic-fg-disabled);
344
+ cursor: not-allowed;
345
+ }
346
+ .icon-button--primary.icon-button--outline {
347
+ background-color: transparent;
348
+ color: var(--color-semantic-fg-primary);
349
+ border: 1px solid var(--color-semantic-border-normal);
350
+ }
351
+ .icon-button--primary.icon-button--outline:hover:not(:disabled),
352
+ .icon-button--primary.icon-button--outline.icon-button--hovered:not(:disabled) {
353
+ background-color: var(--color-semantic-bg-normal-hovered);
354
+ }
355
+ .icon-button--primary.icon-button--outline:disabled,
356
+ .icon-button--primary.icon-button--outline.icon-button--disabled {
357
+ color: var(--color-semantic-fg-disabled);
358
+ border-color: var(--color-semantic-border-weak);
359
+ background-color: var(--color-semantic-bg-white);
360
+ cursor: not-allowed;
361
+ }
362
+ .icon-button--primary.icon-button--weak {
363
+ background-color: var(--color-semantic-bg-week-primary);
364
+ color: var(--color-semantic-fg-primary);
365
+ }
366
+ .icon-button--primary.icon-button--weak:hover:not(:disabled),
367
+ .icon-button--primary.icon-button--weak.icon-button--hovered:not(:disabled) {
368
+ background-color: var(--color-semantic-bg-week-primary-hovered);
369
+ }
370
+ .icon-button--neutral.icon-button--solid {
371
+ background-color: var(--color-semantic-bg-inverted);
372
+ color: var(--color-semantic-fg-white);
373
+ }
374
+ .icon-button--neutral.icon-button--solid:hover:not(:disabled),
375
+ .icon-button--neutral.icon-button--solid.icon-button--hovered:not(:disabled) {
376
+ background-color: var(--color-semantic-bg-inverted);
377
+ }
378
+ .icon-button--neutral.icon-button--solid:disabled,
379
+ .icon-button--neutral.icon-button--solid.icon-button--disabled {
380
+ background-color: var(--color-semantic-bg-normal-disabled);
381
+ color: var(--color-semantic-fg-disabled);
382
+ cursor: not-allowed;
383
+ }
384
+ .icon-button--neutral.icon-button--outline {
385
+ background-color: transparent;
386
+ color: var(--color-semantic-fg-normal);
387
+ border: 1px solid var(--color-semantic-border-normal);
388
+ }
389
+ .icon-button--neutral.icon-button--outline:hover:not(:disabled),
390
+ .icon-button--neutral.icon-button--outline.icon-button--hovered:not(:disabled) {
391
+ background-color: var(--color-semantic-bg-normal-hovered);
392
+ }
393
+ .icon-button--neutral.icon-button--outline:disabled,
394
+ .icon-button--neutral.icon-button--outline.icon-button--disabled {
395
+ color: var(--color-semantic-fg-disabled);
396
+ border-color: var(--color-semantic-border-weak);
397
+ background-color: var(--color-semantic-bg-white);
398
+ cursor: not-allowed;
399
+ }
400
+ .icon-button--neutral.icon-button--weak {
401
+ background-color: var(--color-semantic-bg-week-neutral-dark);
402
+ color: var(--color-semantic-fg-normal);
403
+ }
404
+ .icon-button--neutral.icon-button--weak:hover:not(:disabled),
405
+ .icon-button--neutral.icon-button--weak.icon-button--hovered:not(:disabled) {
406
+ background-color: var(--color-semantic-bg-week-neutral-dark-hovered);
407
+ }
408
+ .icon-button--neutral.icon-button--weak.dark {
409
+ color: var(--color-semantic-fg-white);
410
+ }
411
+ .icon-button--neutral.icon-button--weak.dark:hover:not(:disabled),
412
+ .icon-button--neutral.icon-button--weak.dark.icon-button--hovered:not(:disabled) {
413
+ background-color: rgba(255, 255, 255, 0.1);
414
+ }
415
+ /*# sourceMappingURL=Button.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/stories/button.module.css"],"sourcesContent":["/* 기존 스타일 유지 */\n.storybook-button {\n display: inline-block;\n cursor: pointer;\n border: 0;\n border-radius: 3em;\n font-weight: 700;\n line-height: 1;\n font-family: \"Nunito Sans\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n}\n.storybook-button--primary {\n background-color: #555ab9;\n color: white;\n}\n.storybook-button--secondary {\n box-shadow: rgba(0, 0, 0, 0.15) 0px 0px 0px 1px inset;\n background-color: transparent;\n color: #333;\n}\n.storybook-button--small {\n padding: 10px 16px;\n font-size: 12px;\n}\n.storybook-button--medium {\n padding: 11px 20px;\n font-size: 14px;\n}\n.storybook-button--large {\n padding: 12px 24px;\n font-size: 16px;\n}\n\n/* ActionButton 스타일 */\n.action-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n font-family: \"Pretendard\", -apple-system, BlinkMacSystemFont, system-ui,\n sans-serif;\n font-weight: 600;\n border-radius: 8px;\n border: none;\n cursor: pointer;\n transition: all 0.2s ease;\n min-width: fit-content;\n white-space: nowrap;\n}\n\n/* Size 스타일 */\n.action-button--xlarge {\n height: 56px;\n padding: 0 24px;\n font-size: 17px;\n min-width: 34px;\n}\n\n.action-button--large {\n height: 48px;\n padding: 0 24px;\n font-size: 17px;\n min-width: 34px;\n}\n\n.action-button--medium {\n height: 36px;\n padding: 0 20px;\n font-size: 15px;\n min-width: 34px;\n}\n\n.action-button--small {\n height: 28px;\n padding: 0 16px;\n font-size: 13px;\n min-width: 30px;\n}\n\n/* Primary Solid 스타일 */\n.action-button--primary.action-button--solid {\n background-color: var(--color-semantic-bg-primary);\n color: var(--color-semantic-fg-inverted);\n}\n\n.action-button--primary.action-button--solid:hover:not(:disabled),\n.action-button--primary.action-button--solid.action-button--hovered:not(\n :disabled\n ) {\n background-color: var(--color-semantic-bg-primary-hovered);\n}\n\n.action-button--primary.action-button--solid:disabled,\n.action-button--primary.action-button--solid.action-button--disabled {\n background-color: var(--color-semantic-bg-normal-disabled);\n color: var(--color-semantic-fg-disabled);\n cursor: not-allowed;\n}\n\n/* Primary Outline 스타일 */\n.action-button--primary.action-button--outline {\n background-color: transparent;\n color: var(--color-semantic-fg-primary);\n border: 1px solid var(--color-semantic-border-normal);\n}\n\n.action-button--primary.action-button--outline:hover:not(:disabled),\n.action-button--primary.action-button--outline.action-button--hovered:not(\n :disabled\n ) {\n background-color: var(--color-semantic-bg-normal-hovered);\n}\n\n.action-button--primary.action-button--outline:disabled,\n.action-button--primary.action-button--outline.action-button--disabled {\n color: var(--color-semantic-fg-disabled);\n border-color: var(--color-semantic-border-weak);\n background-color: var(--color-semantic-bg-white);\n cursor: not-allowed;\n}\n\n/* Primary Ghost 스타일 */\n.action-button--primary.action-button--ghost {\n background-color: transparent;\n color: var(--color-semantic-fg-primary);\n}\n\n.action-button--primary.action-button--ghost:hover:not(:disabled),\n.action-button--primary.action-button--ghost.action-button--hovered:not(\n :disabled\n ) {\n background-color: var(--color-semantic-bg-primary-weak);\n}\n\n.action-button--primary.action-button--ghost:disabled,\n.action-button--primary.action-button--ghost.action-button--disabled {\n color: var(--color-semantic-fg-disabled);\n background-color: var(--color-semantic-bg-white);\n cursor: not-allowed;\n}\n\n/* Neutral Solid 스타일 */\n.action-button--neutral.action-button--solid {\n background-color: var(--color-semantic-bg-inverted);\n color: var(--color-semantic-fg-white);\n}\n\n.action-button--neutral.action-button--solid:hover:not(:disabled),\n.action-button--neutral.action-button--solid.action-button--hovered:not(\n :disabled\n ) {\n background-color: var(--color-semantic-bg-inverted);\n}\n\n.action-button--neutral.action-button--solid:disabled,\n.action-button--neutral.action-button--solid.action-button--disabled {\n background-color: var(--color-semantic-bg-normal-disabled);\n color: var(--color-semantic-fg-disabled);\n cursor: not-allowed;\n}\n\n/* Neutral Outline 스타일 */\n.action-button--neutral.action-button--outline {\n background-color: transparent;\n color: var(--color-semantic-fg-normal);\n border: 1px solid var(--color-semantic-border-normal);\n}\n\n.action-button--neutral.action-button--outline:hover:not(:disabled),\n.action-button--neutral.action-button--outline.action-button--hovered:not(\n :disabled\n ) {\n background-color: var(--color-semantic-bg-normal-hovered);\n}\n\n.action-button--neutral.action-button--outline:disabled,\n.action-button--neutral.action-button--outline.action-button--disabled {\n color: var(--color-semantic-fg-disabled);\n border-color: var(--color-semantic-border-weak);\n background-color: var(--color-semantic-bg-white);\n cursor: not-allowed;\n}\n\n/* Neutral Ghost 스타일 */\n.action-button--neutral.action-button--ghost {\n background-color: transparent;\n color: var(--color-semantic-fg-normal);\n}\n\n.action-button--neutral.action-button--ghost:hover:not(:disabled),\n.action-button--neutral.action-button--ghost.action-button--hovered:not(\n :disabled\n ) {\n background-color: var(--color-semantic-bg-normal-hovered);\n}\n\n.action-button--neutral.action-button--ghost:disabled,\n.action-button--neutral.action-button--ghost.action-button--disabled {\n color: var(--color-semantic-fg-disabled);\n cursor: not-allowed;\n}\n\n/* Secondary Solid 스타일 */\n.action-button--secondary.action-button--solid {\n background-color: var(--color-semantic-bg-normal);\n color: var(--color-semantic-fg-normal);\n}\n\n.action-button--secondary.action-button--solid:hover:not(:disabled),\n.action-button--secondary.action-button--solid.action-button--hovered:not(\n :disabled\n ) {\n background-color: var(--color-semantic-bg-normal-hovered);\n}\n\n.action-button--secondary.action-button--solid:disabled,\n.action-button--secondary.action-button--solid.action-button--disabled {\n background-color: var(--color-semantic-bg-normal-disabled);\n color: var(--color-semantic-fg-disabled);\n cursor: not-allowed;\n}\n\n/* Loading 상태 */\n.action-button--loading {\n position: relative;\n pointer-events: none;\n}\n\n.action-button--loading .action-button__content {\n opacity: 0;\n}\n\n.action-button__content {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n}\n\n.action-button__spinner {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.action-button__spinner-svg {\n width: 20px;\n height: 20px;\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n.action-button__spinner-circle {\n opacity: 1;\n}\n\n/* 로딩 상태일 때 hovered와 동일한 스타일 적용 */\n.action-button--primary.action-button--solid.action-button--loading {\n background-color: var(--color-semantic-bg-primary-hovered);\n color: var(--color-semantic-fg-inverted);\n}\n\n.action-button--primary.action-button--outline.action-button--loading {\n background-color: var(--color-semantic-bg-normal-hovered);\n color: var(--color-semantic-fg-primary);\n}\n\n.action-button--primary.action-button--ghost.action-button--loading {\n background-color: var(--color-semantic-bg-primary-weak);\n color: var(--color-semantic-fg-primary);\n}\n\n.action-button--neutral.action-button--solid.action-button--loading {\n background-color: var(--color-semantic-bg-inverted);\n color: var(--color-semantic-fg-white);\n}\n\n.action-button--neutral.action-button--outline.action-button--loading {\n background-color: var(--color-semantic-bg-normal-hovered);\n color: var(--color-semantic-fg-normal);\n}\n\n.action-button--neutral.action-button--ghost.action-button--loading {\n background-color: var(--color-semantic-bg-normal-hovered);\n color: var(--color-semantic-fg-normal);\n}\n\n.action-button--secondary.action-button--solid.action-button--loading {\n background-color: var(--color-semantic-bg-normal-hovered);\n color: var(--color-semantic-fg-normal);\n}\n\n/* 아이콘 스타일 */\n.action-button__prefix-icon,\n.action-button__suffix-icon {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n}\n\n.action-button--small .action-button__prefix-icon,\n.action-button--small .action-button__suffix-icon {\n width: 16px;\n height: 16px;\n}\n\n.action-button--medium .action-button__prefix-icon,\n.action-button--medium .action-button__suffix-icon {\n width: 18px;\n height: 18px;\n}\n\n.action-button--large .action-button__prefix-icon,\n.action-button--large .action-button__suffix-icon {\n width: 20px;\n height: 20px;\n}\n\n.action-button--xlarge .action-button__prefix-icon,\n.action-button--xlarge .action-button__suffix-icon {\n width: 24px;\n height: 24px;\n}\n\n.action-button__label {\n display: inline-flex;\n align-items: center;\n}\n\n/* IconButton 스타일 */\n.icon-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-family: \"Pretendard\", -apple-system, BlinkMacSystemFont, system-ui,\n sans-serif;\n border: none;\n cursor: pointer;\n transition: all 0.2s ease;\n padding: 0;\n flex-shrink: 0;\n}\n\n/* Size 스타일 */\n.icon-button--xlarge {\n width: 56px;\n height: 56px;\n border-radius: 8px;\n}\n\n.icon-button--large {\n width: 48px;\n height: 48px;\n border-radius: 6px;\n}\n\n.icon-button--medium {\n width: 36px;\n height: 36px;\n border-radius: 4px;\n}\n\n.icon-button--small {\n width: 28px;\n height: 28px;\n border-radius: 4px;\n}\n\n/* Icon 크기 */\n.icon-button__icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n}\n\n.icon-button--xlarge .icon-button__icon,\n.icon-button--large .icon-button__icon {\n width: 24px;\n height: 24px;\n}\n\n.icon-button--medium .icon-button__icon {\n width: 20px;\n height: 20px;\n}\n\n.icon-button--small .icon-button__icon {\n width: 16px;\n height: 16px;\n}\n\n/* Primary Solid 스타일 */\n.icon-button--primary.icon-button--solid {\n background-color: var(--color-semantic-bg-primary);\n color: var(--color-semantic-fg-inverted);\n}\n\n.icon-button--primary.icon-button--solid:hover:not(:disabled),\n.icon-button--primary.icon-button--solid.icon-button--hovered:not(:disabled) {\n background-color: var(--color-semantic-bg-primary-hovered);\n}\n\n.icon-button--primary.icon-button--solid:disabled,\n.icon-button--primary.icon-button--solid.icon-button--disabled {\n background-color: var(--color-semantic-bg-normal-disabled);\n color: var(--color-semantic-fg-disabled);\n cursor: not-allowed;\n}\n\n/* Primary Outline 스타일 */\n.icon-button--primary.icon-button--outline {\n background-color: transparent;\n color: var(--color-semantic-fg-primary);\n border: 1px solid var(--color-semantic-border-normal);\n}\n\n.icon-button--primary.icon-button--outline:hover:not(:disabled),\n.icon-button--primary.icon-button--outline.icon-button--hovered:not(:disabled) {\n background-color: var(--color-semantic-bg-normal-hovered);\n}\n\n.icon-button--primary.icon-button--outline:disabled,\n.icon-button--primary.icon-button--outline.icon-button--disabled {\n color: var(--color-semantic-fg-disabled);\n border-color: var(--color-semantic-border-weak);\n background-color: var(--color-semantic-bg-white);\n cursor: not-allowed;\n}\n\n/* Primary Weak 스타일 */\n.icon-button--primary.icon-button--weak {\n background-color: var(--color-semantic-bg-week-primary);\n color: var(--color-semantic-fg-primary);\n}\n\n.icon-button--primary.icon-button--weak:hover:not(:disabled),\n.icon-button--primary.icon-button--weak.icon-button--hovered:not(:disabled) {\n background-color: var(--color-semantic-bg-week-primary-hovered);\n}\n\n/* Neutral Solid 스타일 */\n.icon-button--neutral.icon-button--solid {\n background-color: var(--color-semantic-bg-inverted);\n color: var(--color-semantic-fg-white);\n}\n\n.icon-button--neutral.icon-button--solid:hover:not(:disabled),\n.icon-button--neutral.icon-button--solid.icon-button--hovered:not(:disabled) {\n background-color: var(--color-semantic-bg-inverted);\n}\n\n.icon-button--neutral.icon-button--solid:disabled,\n.icon-button--neutral.icon-button--solid.icon-button--disabled {\n background-color: var(--color-semantic-bg-normal-disabled);\n color: var(--color-semantic-fg-disabled);\n cursor: not-allowed;\n}\n\n/* Neutral Outline 스타일 */\n.icon-button--neutral.icon-button--outline {\n background-color: transparent;\n color: var(--color-semantic-fg-normal);\n border: 1px solid var(--color-semantic-border-normal);\n}\n\n.icon-button--neutral.icon-button--outline:hover:not(:disabled),\n.icon-button--neutral.icon-button--outline.icon-button--hovered:not(:disabled) {\n background-color: var(--color-semantic-bg-normal-hovered);\n}\n\n.icon-button--neutral.icon-button--outline:disabled,\n.icon-button--neutral.icon-button--outline.icon-button--disabled {\n color: var(--color-semantic-fg-disabled);\n border-color: var(--color-semantic-border-weak);\n background-color: var(--color-semantic-bg-white);\n cursor: not-allowed;\n}\n\n/* Neutral Weak 스타일 */\n.icon-button--neutral.icon-button--weak {\n background-color: var(--color-semantic-bg-week-neutral-dark);\n color: var(--color-semantic-fg-normal);\n}\n\n.icon-button--neutral.icon-button--weak:hover:not(:disabled),\n.icon-button--neutral.icon-button--weak.icon-button--hovered:not(:disabled) {\n background-color: var(--color-semantic-bg-week-neutral-dark-hovered);\n}\n\n/* Weak 타입은 disabled 상태를 가지지 않음 - 어두운 배경일 때 */\n.icon-button--neutral.icon-button--weak.dark {\n color: var(--color-semantic-fg-white);\n}\n\n.icon-button--neutral.icon-button--weak.dark:hover:not(:disabled),\n.icon-button--neutral.icon-button--weak.dark.icon-button--hovered:not(\n :disabled\n ) {\n background-color: rgba(255, 255, 255, 0.1);\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,63 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import React from 'react';
3
+
4
+ type ButtonSize = "xlarge" | "large" | "medium" | "small";
5
+ type ButtonVariant = "primary" | "neutral" | "secondary";
6
+ type ButtonShape = "solid" | "outline" | "ghost";
7
+ type ButtonState = "enabled" | "hovered" | "loading" | "disabled";
8
+ type IconButtonSize = "xlarge" | "large" | "medium" | "small";
9
+ type IconButtonVariant = "primary" | "neutral";
10
+ type IconButtonType = "solid" | "outline" | "weak";
11
+ type IconButtonState = "enabled" | "hovered" | "disabled";
12
+ interface ActionButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "type"> {
13
+ /** 버튼 크기 */
14
+ size?: ButtonSize;
15
+ /** 버튼 타입 (primary, neutral, secondary) */
16
+ variant?: ButtonVariant;
17
+ /** 버튼 모양 (solid, outline, ghost) */
18
+ shape?: ButtonShape;
19
+ /** 버튼 상태 */
20
+ state?: ButtonState;
21
+ /** 버튼 텍스트 */
22
+ children: React.ReactNode;
23
+ /** Prefix 아이콘 */
24
+ prefixIcon?: React.ReactNode;
25
+ /** Suffix 아이콘 */
26
+ suffixIcon?: React.ReactNode;
27
+ /** 로딩 상태일 때 표시할 스피너 */
28
+ loading?: boolean;
29
+ }
30
+ /** ActionButton 컴포넌트는 사용자가 어떠한 액션을 트리거하거나 이벤트를 실행할 때 사용한다. */
31
+ declare const ActionButton: ({ size, variant, shape, state, children, prefixIcon, suffixIcon, loading, className, disabled, ...props }: ActionButtonProps) => react_jsx_runtime.JSX.Element;
32
+ interface ButtonProps {
33
+ /** Is this the principal call to action on the page? */
34
+ primary?: boolean;
35
+ /** What background color to use */
36
+ backgroundColor?: string;
37
+ /** How large should the button be? */
38
+ size?: "small" | "medium" | "large";
39
+ /** Button contents */
40
+ label: string;
41
+ /** Optional click handler */
42
+ onClick?: () => void;
43
+ }
44
+ /** Primary UI component for user interaction */
45
+ declare const Button: ({ primary, size, backgroundColor, label, ...props }: ButtonProps) => react_jsx_runtime.JSX.Element;
46
+ interface IconButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
47
+ /** 버튼 크기 */
48
+ size?: IconButtonSize;
49
+ /** 버튼 타입 (primary 또는 neutral) */
50
+ variant?: IconButtonVariant;
51
+ /** 버튼 모양 (solid, outline, weak) */
52
+ iconType?: IconButtonType;
53
+ /** 버튼 상태 */
54
+ state?: IconButtonState;
55
+ /** 아이콘 (Heroicons 또는 React 컴포넌트) */
56
+ icon: React.ReactNode;
57
+ /** 아이콘에 대한 접근성 라벨 */
58
+ "aria-label": string;
59
+ }
60
+ /** IconButton 컴포넌트는 텍스트 레이블 없이 아이콘만으로 액션을 전달하는 버튼 컴포넌트이다. */
61
+ declare const IconButton: ({ size, variant, iconType, state, icon, className, disabled, type, ...props }: IconButtonProps) => react_jsx_runtime.JSX.Element;
62
+
63
+ export { ActionButton, type ActionButtonProps, Button, type ButtonProps, type ButtonShape, type ButtonSize, type ButtonState, type ButtonVariant, IconButton, type IconButtonProps, type IconButtonSize, type IconButtonState, type IconButtonType, type IconButtonVariant };
@@ -0,0 +1,63 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import React from 'react';
3
+
4
+ type ButtonSize = "xlarge" | "large" | "medium" | "small";
5
+ type ButtonVariant = "primary" | "neutral" | "secondary";
6
+ type ButtonShape = "solid" | "outline" | "ghost";
7
+ type ButtonState = "enabled" | "hovered" | "loading" | "disabled";
8
+ type IconButtonSize = "xlarge" | "large" | "medium" | "small";
9
+ type IconButtonVariant = "primary" | "neutral";
10
+ type IconButtonType = "solid" | "outline" | "weak";
11
+ type IconButtonState = "enabled" | "hovered" | "disabled";
12
+ interface ActionButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "type"> {
13
+ /** 버튼 크기 */
14
+ size?: ButtonSize;
15
+ /** 버튼 타입 (primary, neutral, secondary) */
16
+ variant?: ButtonVariant;
17
+ /** 버튼 모양 (solid, outline, ghost) */
18
+ shape?: ButtonShape;
19
+ /** 버튼 상태 */
20
+ state?: ButtonState;
21
+ /** 버튼 텍스트 */
22
+ children: React.ReactNode;
23
+ /** Prefix 아이콘 */
24
+ prefixIcon?: React.ReactNode;
25
+ /** Suffix 아이콘 */
26
+ suffixIcon?: React.ReactNode;
27
+ /** 로딩 상태일 때 표시할 스피너 */
28
+ loading?: boolean;
29
+ }
30
+ /** ActionButton 컴포넌트는 사용자가 어떠한 액션을 트리거하거나 이벤트를 실행할 때 사용한다. */
31
+ declare const ActionButton: ({ size, variant, shape, state, children, prefixIcon, suffixIcon, loading, className, disabled, ...props }: ActionButtonProps) => react_jsx_runtime.JSX.Element;
32
+ interface ButtonProps {
33
+ /** Is this the principal call to action on the page? */
34
+ primary?: boolean;
35
+ /** What background color to use */
36
+ backgroundColor?: string;
37
+ /** How large should the button be? */
38
+ size?: "small" | "medium" | "large";
39
+ /** Button contents */
40
+ label: string;
41
+ /** Optional click handler */
42
+ onClick?: () => void;
43
+ }
44
+ /** Primary UI component for user interaction */
45
+ declare const Button: ({ primary, size, backgroundColor, label, ...props }: ButtonProps) => react_jsx_runtime.JSX.Element;
46
+ interface IconButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
47
+ /** 버튼 크기 */
48
+ size?: IconButtonSize;
49
+ /** 버튼 타입 (primary 또는 neutral) */
50
+ variant?: IconButtonVariant;
51
+ /** 버튼 모양 (solid, outline, weak) */
52
+ iconType?: IconButtonType;
53
+ /** 버튼 상태 */
54
+ state?: IconButtonState;
55
+ /** 아이콘 (Heroicons 또는 React 컴포넌트) */
56
+ icon: React.ReactNode;
57
+ /** 아이콘에 대한 접근성 라벨 */
58
+ "aria-label": string;
59
+ }
60
+ /** IconButton 컴포넌트는 텍스트 레이블 없이 아이콘만으로 액션을 전달하는 버튼 컴포넌트이다. */
61
+ declare const IconButton: ({ size, variant, iconType, state, icon, className, disabled, type, ...props }: IconButtonProps) => react_jsx_runtime.JSX.Element;
62
+
63
+ export { ActionButton, type ActionButtonProps, Button, type ButtonProps, type ButtonShape, type ButtonSize, type ButtonState, type ButtonVariant, IconButton, type IconButtonProps, type IconButtonSize, type IconButtonState, type IconButtonType, type IconButtonVariant };