atomsystem 0.4.3 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/css/atom-ui.css CHANGED
@@ -1,826 +1,51 @@
1
- /**
2
- * AtomSystem Universal Framework-Agnostic CSS
3
- * Compatible with React, Vue, Angular, Vanilla JS, and jQuery.
4
- */
5
-
6
1
  :root {
7
- --font-sans: "Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Roboto, sans-serif;
8
-
9
- /* Semantic Color Tokens */
2
+ --atom-color-primary: #3182f6;
3
+ --atom-color-primary-hover: #1b64da;
4
+ --atom-color-primary-subtle: #e8f3ff;
10
5
  --atom-bg-primary: #ffffff;
11
- --atom-bg-secondary: #f8f9fa;
12
- --atom-bg-surface: #ffffff;
6
+ --atom-bg-surface: #f8f9fa;
7
+ --atom-bg-muted: #f1f3f5;
13
8
  --atom-text-primary: #191f28;
14
9
  --atom-text-secondary: #8b95a1;
15
10
  --atom-text-muted: #b0b8c1;
16
11
  --atom-border-subtle: #f2f4f6;
17
12
  --atom-border-strong: #e5e8eb;
18
-
19
- /* Brand Accent Tokens */
20
- --atom-primary: #3182f6;
21
- --atom-primary-hover: #1b64da;
22
- --atom-primary-light: #e8f3ff;
23
- --atom-destructive: #f04452;
24
- --atom-destructive-hover: #dc2626;
25
- --atom-success: #10b981;
26
- --atom-warning: #f59e0b;
27
-
28
- /* Typography & Radius */
29
- --atom-radius-sm: 8px;
30
- --atom-radius-md: 12px;
13
+ --atom-status-success: #10b981;
14
+ --atom-status-danger: #f43f5e;
15
+ --atom-status-warning: #f59e0b;
16
+ --atom-font-display: [object Object];
17
+ --atom-font-title-1: [object Object];
18
+ --atom-font-title-2: [object Object];
19
+ --atom-font-title-3: [object Object];
20
+ --atom-font-body-1: [object Object];
21
+ --atom-font-body-2: [object Object];
22
+ --atom-font-mono: [object Object];
23
+ --atom-radius-none: 0px;
24
+ --atom-radius-sm: 6px;
25
+ --atom-radius-md: 10px;
31
26
  --atom-radius-lg: 16px;
27
+ --atom-radius-xl: 24px;
32
28
  --atom-radius-full: 9999px;
33
- --atom-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
34
- --atom-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
35
- --atom-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
36
- }
37
-
38
- @media (prefers-color-scheme: dark) {
39
- :root {
40
- --atom-bg-primary: #0f1115;
41
- --atom-bg-secondary: #171a21;
42
- --atom-bg-surface: #1e222d;
43
- --atom-text-primary: #f2f4f6;
44
- --atom-text-secondary: #8b95a1;
45
- --atom-text-muted: #4e5968;
46
- --atom-border-subtle: #222631;
47
- --atom-border-strong: #2c3240;
48
-
49
- --atom-primary: #3b82f6;
50
- --atom-primary-hover: #60a5fa;
51
- --atom-primary-light: #1e293b;
52
- --atom-destructive: #f87171;
53
- --atom-destructive-hover: #ef4444;
54
- }
55
- }
56
-
57
- /* === Universal Component Classes === */
58
-
59
- /* Buttons */
60
- .atom-btn {
61
- display: inline-flex;
62
- align-items: center;
63
- justify-content: center;
64
- gap: 0.5rem;
65
- font-family: var(--font-sans);
66
- font-size: 0.875rem;
67
- font-weight: 600;
68
- padding: 0.5rem 1rem;
69
- border-radius: var(--atom-radius-md);
70
- border: 1px solid transparent;
71
- cursor: pointer;
72
- transition: all 0.15s ease-in-out;
73
- text-decoration: none;
74
- user-select: none;
75
- }
76
- .atom-btn:focus-visible {
77
- outline: 2px solid var(--atom-primary);
78
- outline-offset: 2px;
79
- }
80
- .atom-btn:disabled, .atom-btn[aria-disabled="true"] {
81
- opacity: 0.5;
82
- cursor: not-allowed;
83
- pointer-events: none;
84
- }
85
-
86
- .atom-btn-primary {
87
- background-color: var(--atom-primary);
88
- color: #ffffff;
89
- }
90
- .atom-btn-primary:hover:not(:disabled) {
91
- background-color: var(--atom-primary-hover);
92
- }
93
-
94
- .atom-btn-secondary {
95
- background-color: var(--atom-bg-secondary);
96
- color: var(--atom-text-primary);
97
- border-color: var(--atom-border-strong);
98
- }
99
- .atom-btn-secondary:hover:not(:disabled) {
100
- background-color: var(--atom-border-subtle);
101
- }
102
-
103
- .atom-btn-outline {
104
- background-color: transparent;
105
- color: var(--atom-text-primary);
106
- border-color: var(--atom-border-strong);
107
- }
108
- .atom-btn-outline:hover:not(:disabled) {
109
- background-color: var(--atom-bg-secondary);
110
- }
111
-
112
- .atom-btn-destructive {
113
- background-color: var(--atom-destructive);
114
- color: #ffffff;
115
- }
116
- .atom-btn-destructive:hover:not(:disabled) {
117
- background-color: var(--atom-destructive-hover);
118
- }
119
-
120
- .atom-btn-sm {
121
- font-size: 0.75rem;
122
- padding: 0.25rem 0.625rem;
123
- border-radius: var(--atom-radius-sm);
124
- }
125
- .atom-btn-lg {
126
- font-size: 1rem;
127
- padding: 0.75rem 1.5rem;
128
- border-radius: var(--atom-radius-lg);
129
- }
130
-
131
- /* Cards */
132
- .atom-card {
133
- background-color: var(--atom-bg-surface);
134
- border: 1px solid var(--atom-border-subtle);
135
- border-radius: var(--atom-radius-lg);
136
- padding: 1.25rem;
137
- box-shadow: var(--atom-shadow-sm);
138
- transition: border-color 0.15s ease, box-shadow 0.15s ease;
139
- }
140
- .atom-card-interactive {
141
- cursor: pointer;
142
- }
143
- .atom-card-interactive:hover {
144
- border-color: var(--atom-primary);
145
- box-shadow: var(--atom-shadow-md);
146
- }
147
-
148
- /* Inputs */
149
- .atom-input {
150
- display: block;
151
- width: 100%;
152
- font-family: var(--font-sans);
153
- font-size: 0.875rem;
154
- padding: 0.5rem 0.75rem;
155
- border-radius: var(--atom-radius-md);
156
- border: 1px solid var(--atom-border-strong);
157
- background-color: var(--atom-bg-surface);
158
- color: var(--atom-text-primary);
159
- outline: none;
160
- transition: border-color 0.15s ease, box-shadow 0.15s ease;
161
- }
162
- .atom-input:focus {
163
- border-color: var(--atom-primary);
164
- box-shadow: 0 0 0 3px var(--atom-primary-light);
165
- }
166
- .atom-input::placeholder {
167
- color: var(--atom-text-muted);
168
- }
169
-
170
- /* Badges */
171
- .atom-badge {
172
- display: inline-flex;
173
- align-items: center;
174
- gap: 0.25rem;
175
- font-size: 0.75rem;
176
- font-weight: 600;
177
- padding: 0.2rem 0.5rem;
178
- border-radius: var(--atom-radius-full);
179
- background-color: var(--atom-bg-secondary);
180
- color: var(--atom-text-secondary);
181
- border: 1px solid var(--atom-border-subtle);
182
- }
183
- .atom-badge-primary {
184
- background-color: var(--atom-primary-light);
185
- color: var(--atom-primary);
186
- border-color: transparent;
187
- }
188
- .atom-badge-success {
189
- background-color: rgba(16, 185, 129, 0.15);
190
- color: #10b981;
191
- border-color: transparent;
192
- }
193
-
194
- /* Typography & Heading Scale */
195
- .atom-h1, .atom-title-1 {
196
- font-size: 1.625rem;
197
- font-weight: 700;
198
- line-height: 1.25;
199
- letter-spacing: -0.025em;
200
- color: var(--atom-text-primary);
201
- }
202
- .atom-h2, .atom-title-2 {
203
- font-size: 1.25rem;
204
- font-weight: 600;
205
- line-height: 1.3;
206
- letter-spacing: -0.02em;
207
- color: var(--atom-text-primary);
208
- }
209
- .atom-h3, .atom-title-3 {
210
- font-size: 1.0625rem;
211
- font-weight: 600;
212
- line-height: 1.35;
213
- letter-spacing: -0.015em;
214
- color: var(--atom-text-primary);
215
- }
216
- .atom-h4 {
217
- font-size: 0.9375rem;
218
- font-weight: 600;
219
- line-height: 1.4;
220
- color: var(--atom-text-primary);
221
- }
222
- .atom-h5 {
223
- font-size: 0.875rem;
224
- font-weight: 600;
225
- line-height: 1.45;
226
- color: var(--atom-text-primary);
227
- }
228
- .atom-h6 {
229
- font-size: 0.75rem;
230
- font-weight: 600;
231
- line-height: 1.5;
232
- color: var(--atom-text-secondary);
233
- }
234
- .atom-body-1 {
235
- font-size: 1rem;
236
- line-height: 1.5;
237
- color: var(--atom-text-primary);
238
- }
239
- .atom-body-2 {
240
- font-size: 0.875rem;
241
- line-height: 1.45;
242
- color: var(--atom-text-secondary);
243
- }
244
-
245
- /* Calendar */
246
- .atom-calendar {
247
- display: inline-block;
248
- padding: 1rem;
249
- background-color: var(--atom-bg-surface);
250
- border: 1px solid var(--atom-border-subtle);
251
- border-radius: var(--atom-radius-lg);
252
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
253
- user-select: none;
254
- }
255
- .atom-calendar-header {
256
- display: flex;
257
- align-items: center;
258
- justify-content: space-between;
259
- margin-bottom: 0.75rem;
260
- }
261
- .atom-calendar-title {
262
- font-size: 0.875rem;
263
- font-weight: 700;
264
- color: var(--atom-text-primary);
265
- }
266
- .atom-calendar-nav-btn {
267
- display: inline-flex;
268
- align-items: center;
269
- justify-content: center;
270
- width: 2rem;
271
- height: 2rem;
272
- border-radius: var(--atom-radius-md);
273
- border: 1px solid var(--atom-border-subtle);
274
- background: transparent;
275
- color: var(--atom-text-secondary);
276
- cursor: pointer;
277
- transition: all 0.15s ease;
278
- }
279
- .atom-calendar-nav-btn:hover {
280
- background-color: var(--atom-bg-secondary);
281
- color: var(--atom-text-primary);
282
- }
283
- .atom-calendar-grid {
284
- display: grid;
285
- grid-template-columns: repeat(7, 2.25rem);
286
- gap: 0.25rem;
287
- text-align: center;
288
- }
289
- .atom-calendar-weekday {
290
- font-size: 0.75rem;
291
- font-weight: 600;
292
- color: var(--atom-text-muted);
293
- padding: 0.25rem 0;
294
- }
295
- .atom-calendar-day {
296
- display: inline-flex;
297
- align-items: center;
298
- justify-content: center;
299
- width: 2.25rem;
300
- height: 2.25rem;
301
- border-radius: var(--atom-radius-md);
302
- border: none;
303
- background: transparent;
304
- font-size: 0.8125rem;
305
- font-weight: 500;
306
- color: var(--atom-text-primary);
307
- cursor: pointer;
308
- transition: all 0.15s ease;
309
- }
310
- .atom-calendar-day:hover:not(:disabled) {
311
- background-color: var(--atom-bg-secondary);
312
- }
313
- .atom-calendar-day-selected {
314
- background-color: var(--atom-primary) !important;
315
- color: #ffffff !important;
316
- font-weight: 700;
317
- }
318
- .atom-calendar-day:disabled {
319
- opacity: 0.3;
320
- cursor: not-allowed;
321
- }
322
-
323
- /* Custom Select */
324
- .atom-select {
325
- position: relative;
326
- width: 100%;
327
- }
328
- .atom-select-trigger {
329
- display: flex;
330
- align-items: center;
331
- justify-content: space-between;
332
- width: 100%;
333
- padding: 0.5rem 0.75rem;
334
- border-radius: var(--atom-radius-md);
335
- border: 1px solid var(--atom-border-strong);
336
- background-color: var(--atom-bg-surface);
337
- color: var(--atom-text-primary);
338
- font-size: 0.875rem;
339
- cursor: pointer;
340
- outline: none;
341
- transition: all 0.15s ease;
342
- }
343
- .atom-select-trigger:focus {
344
- border-color: var(--atom-primary);
345
- box-shadow: 0 0 0 3px var(--atom-primary-light);
346
- }
347
- .atom-select-arrow {
348
- font-size: 0.65rem;
349
- color: var(--atom-text-muted);
350
- transition: transform 0.2s ease;
351
- }
352
- .atom-select-menu {
353
- position: absolute;
354
- top: calc(100% + 4px);
355
- left: 0;
356
- right: 0;
357
- z-index: 50;
358
- margin: 0;
359
- padding: 0.25rem;
360
- list-style: none;
361
- background-color: var(--atom-bg-surface);
362
- border: 1px solid var(--atom-border-subtle);
363
- border-radius: var(--atom-radius-md);
364
- box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
365
- }
366
- .atom-select-option {
367
- padding: 0.5rem 0.75rem;
368
- border-radius: var(--atom-radius-sm);
369
- font-size: 0.875rem;
370
- color: var(--atom-text-primary);
371
- cursor: pointer;
372
- transition: background-color 0.1s ease;
373
- }
374
- .atom-select-option:hover {
375
- background-color: var(--atom-bg-secondary);
376
- }
377
-
378
- /* Accordion */
379
- .atom-accordion {
380
- width: 100%;
381
- border-radius: var(--atom-radius-lg);
382
- border: 1px solid var(--atom-border-subtle);
383
- overflow: hidden;
384
- }
385
- .atom-accordion-item {
386
- border-bottom: 1px solid var(--atom-border-subtle);
387
- }
388
- .atom-accordion-item:last-child {
389
- border-bottom: none;
390
- }
391
- .atom-accordion-trigger {
392
- display: flex;
393
- align-items: center;
394
- justify-content: space-between;
395
- width: 100%;
396
- padding: 1rem;
397
- background: transparent;
398
- border: none;
399
- font-size: 0.875rem;
400
- font-weight: 600;
401
- color: var(--atom-text-primary);
402
- cursor: pointer;
403
- text-align: left;
404
- transition: background-color 0.15s ease;
405
- }
406
- .atom-accordion-trigger:hover {
407
- background-color: var(--atom-bg-secondary);
408
- }
409
- .atom-accordion-icon {
410
- font-size: 0.75rem;
411
- transition: transform 0.2s ease;
412
- }
413
- .atom-accordion-content {
414
- padding: 0 1rem 1rem 1rem;
415
- font-size: 0.875rem;
416
- color: var(--atom-text-secondary);
417
- line-height: 1.5;
418
- }
419
-
420
- /* Tooltip */
421
- .atom-tooltip-wrapper {
422
- position: relative;
423
- display: inline-flex;
424
- }
425
- .atom-tooltip-bubble {
426
- position: absolute;
427
- z-index: 60;
428
- padding: 0.35rem 0.65rem;
429
- font-size: 0.75rem;
430
- font-weight: 500;
431
- line-height: 1.3;
432
- color: #ffffff;
433
- background-color: #1f2937;
434
- border-radius: var(--atom-radius-sm);
435
- white-space: nowrap;
436
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
437
- pointer-events: none;
438
- }
439
- .atom-tooltip-top {
440
- bottom: calc(100% + 6px);
441
- left: 50%;
442
- transform: translateX(-50%);
443
- }
444
-
445
- /* Toast */
446
- .atom-toast-container {
447
- position: fixed;
448
- bottom: 1.5rem;
449
- right: 1.5rem;
450
- z-index: 100;
451
- display: flex;
452
- flex-direction: column;
453
- gap: 0.5rem;
454
- max-width: 24rem;
455
- }
456
- .atom-toast {
457
- display: flex;
458
- align-items: center;
459
- gap: 0.75rem;
460
- padding: 0.75rem 1rem;
461
- border-radius: var(--atom-radius-lg);
462
- background-color: var(--atom-bg-surface);
463
- border: 1px solid var(--atom-border-subtle);
464
- box-shadow: 0 10px 30px rgba(0, 0, 0, 0.12);
465
- font-size: 0.875rem;
466
- color: var(--atom-text-primary);
467
- }
468
- .atom-toast-success {
469
- border-color: rgba(16, 185, 129, 0.35);
470
- box-shadow: 0 4px 20px rgba(16, 185, 129, 0.08);
471
- }
472
- .atom-toast-error {
473
- border-color: rgba(244, 63, 94, 0.35);
474
- box-shadow: 0 4px 20px rgba(244, 63, 94, 0.08);
475
- }
476
- .atom-toast-info {
477
- border-color: rgba(49, 130, 246, 0.35);
478
- box-shadow: 0 4px 20px rgba(49, 130, 246, 0.08);
479
- }
480
-
481
- /* Pagination */
482
- .atom-pagination {
483
- display: inline-flex;
484
- align-items: center;
485
- gap: 0.25rem;
486
- }
487
- .atom-pagination-btn {
488
- display: inline-flex;
489
- align-items: center;
490
- justify-content: center;
491
- min-width: 2rem;
492
- height: 2rem;
493
- padding: 0 0.5rem;
494
- border-radius: var(--atom-radius-md);
495
- border: 1px solid var(--atom-border-subtle);
496
- background-color: var(--atom-bg-surface);
497
- font-size: 0.75rem;
498
- font-weight: 600;
499
- color: var(--atom-text-secondary);
500
- cursor: pointer;
501
- transition: all 0.15s ease;
502
- }
503
- .atom-pagination-btn:hover:not(:disabled) {
504
- background-color: var(--atom-bg-secondary);
505
- color: var(--atom-text-primary);
506
- }
507
- .atom-pagination-active {
508
- background-color: var(--atom-primary) !important;
509
- color: #ffffff !important;
510
- border-color: var(--atom-primary) !important;
511
- }
512
- .atom-pagination-btn:disabled {
513
- opacity: 0.4;
514
- cursor: not-allowed;
515
- }
516
-
517
- /* Radio Group & Cards */
518
- .atom-radio-group {
519
- display: flex;
520
- flex-direction: column;
521
- gap: 0.5rem;
522
- }
523
- .atom-radio-label {
524
- display: inline-flex;
525
- align-items: center;
526
- gap: 0.5rem;
527
- font-size: 0.875rem;
528
- color: var(--atom-text-primary);
529
- cursor: pointer;
530
- user-select: none;
531
- }
532
- .atom-radio {
533
- appearance: none;
534
- width: 1.125rem;
535
- height: 1.125rem;
536
- border-radius: 50%;
537
- border: 2px solid var(--atom-border-strong);
538
- background-color: var(--atom-bg-surface);
539
- cursor: pointer;
540
- outline: none;
541
- transition: all 0.15s ease;
542
- position: relative;
543
- }
544
- .atom-radio:checked {
545
- border-color: var(--atom-primary);
546
- background-color: var(--atom-primary);
547
- box-shadow: inset 0 0 0 3px var(--atom-bg-surface);
548
- }
549
-
550
- /* Slider */
551
- .atom-slider {
552
- width: 100%;
553
- display: flex;
554
- align-items: center;
555
- }
556
- .atom-slider-input {
557
- width: 100%;
558
- accent-color: var(--atom-primary);
559
- cursor: pointer;
560
- }
561
-
562
- /* Avatar */
563
- .atom-avatar {
564
- position: relative;
565
- display: inline-flex;
566
- align-items: center;
567
- justify-content: center;
568
- border-radius: 50%;
569
- overflow: hidden;
570
- background-color: var(--atom-bg-secondary);
571
- color: var(--atom-text-primary);
572
- font-weight: 700;
573
- flex-shrink: 0;
574
- user-select: none;
575
- }
576
- .atom-avatar-sm { width: 2rem; height: 2rem; font-size: 0.75rem; }
577
- .atom-avatar-md { width: 2.5rem; height: 2.5rem; font-size: 0.875rem; }
578
- .atom-avatar-lg { width: 3.5rem; height: 3.5rem; font-size: 1.25rem; }
579
- .atom-avatar-img {
580
- width: 100%;
581
- height: 100%;
582
- object-fit: cover;
583
- }
584
- .atom-avatar-fallback {
585
- display: flex;
586
- align-items: center;
587
- justify-content: center;
588
- width: 100%;
589
- height: 100%;
590
- background-color: var(--atom-primary-light);
591
- color: var(--atom-primary);
592
- }
593
- .atom-avatar-status {
594
- position: absolute;
595
- bottom: 0;
596
- right: 0;
597
- width: 0.65rem;
598
- height: 0.65rem;
599
- border-radius: 50%;
600
- border: 2px solid var(--atom-bg-surface);
601
- }
602
- .atom-avatar-status-online { background-color: #10b981; }
603
- .atom-avatar-status-busy { background-color: #f43f5e; }
604
-
605
- /* Progress */
606
- .atom-progress {
607
- width: 100%;
608
- height: 0.5rem;
609
- background-color: var(--atom-bg-secondary);
610
- border-radius: var(--atom-radius-full);
611
- overflow: hidden;
612
- position: relative;
613
- }
614
- .atom-progress-bar {
615
- height: 100%;
616
- border-radius: var(--atom-radius-full);
617
- transition: width 0.3s ease;
618
- }
619
- .atom-progress-primary { background-color: var(--atom-primary); }
620
- .atom-progress-success { background-color: #10b981; }
621
-
622
- /* Skeleton */
623
- .atom-skeleton {
624
- background: linear-gradient(
625
- 90deg,
626
- var(--atom-bg-secondary) 25%,
627
- var(--atom-border-subtle) 50%,
628
- var(--atom-bg-secondary) 75%
629
- );
630
- background-size: 200% 100%;
631
- animation: atom-shimmer 1.5s infinite;
632
- border-radius: var(--atom-radius-md);
633
- }
634
- @keyframes atom-shimmer {
635
- 0% { background-position: 200% 0; }
636
- 100% { background-position: -200% 0; }
637
- }
638
-
639
- /* Breadcrumb */
640
- .atom-breadcrumb {
641
- display: flex;
642
- align-items: center;
643
- font-size: 0.8125rem;
644
- }
645
- .atom-breadcrumb-list {
646
- display: flex;
647
- align-items: center;
648
- gap: 0.5rem;
649
- list-style: none;
650
- padding: 0;
651
- margin: 0;
652
- }
653
- .atom-breadcrumb-item a {
654
- color: var(--atom-text-secondary);
655
- text-decoration: none;
656
- transition: color 0.15s ease;
657
- }
658
- .atom-breadcrumb-item a:hover {
659
- color: var(--atom-text-primary);
660
- }
661
- .atom-breadcrumb-separator {
662
- color: var(--atom-text-muted);
663
- }
664
- .atom-breadcrumb-current {
665
- color: var(--atom-text-primary);
666
- font-weight: 600;
667
- }
668
-
669
- /* Separator / Divider */
670
- .atom-separator {
671
- background-color: var(--atom-border-subtle);
672
- }
673
- .atom-separator-horizontal {
674
- width: 100%;
675
- height: 1px;
676
- margin: 1rem 0;
677
- }
678
- .atom-separator-vertical {
679
- width: 1px;
680
- height: 100%;
681
- margin: 0 0.5rem;
682
- }
683
- .atom-separator-with-label {
684
- display: flex;
685
- align-items: center;
686
- text-align: center;
687
- color: var(--atom-text-muted);
688
- font-size: 0.75rem;
689
- margin: 1rem 0;
690
- }
691
- .atom-separator-with-label::before,
692
- .atom-separator-with-label::after {
693
- content: '';
694
- flex: 1;
695
- border-bottom: 1px solid var(--atom-border-subtle);
696
- }
697
- .atom-separator-with-label span {
698
- padding: 0 0.75rem;
699
- }
700
-
701
- /* Textarea */
702
- .atom-textarea-group {
703
- display: flex;
704
- flex-direction: column;
705
- gap: 0.35rem;
706
- width: 100%;
707
- }
708
- .atom-textarea {
709
- width: 100%;
710
- padding: 0.65rem 0.75rem;
711
- border-radius: var(--atom-radius-md);
712
- border: 1px solid var(--atom-border-strong);
713
- background-color: var(--atom-bg-surface);
714
- color: var(--atom-text-primary);
715
- font-size: 0.875rem;
716
- line-height: 1.5;
717
- outline: none;
718
- resize: vertical;
719
- transition: border-color 0.15s ease, box-shadow 0.15s ease;
720
- }
721
- .atom-textarea:focus {
722
- border-color: var(--atom-primary);
723
- box-shadow: 0 0 0 3px var(--atom-primary-light);
724
- }
725
- .atom-textarea-counter {
726
- align-self: flex-end;
727
- font-size: 0.75rem;
728
- color: var(--atom-text-muted);
729
- }
730
-
731
- /* Tree Component */
732
- .atom-tree {
733
- list-style: none;
734
- padding: 0;
735
- margin: 0;
736
- font-size: 0.8125rem;
737
- color: var(--atom-text-primary);
738
- user-select: none;
739
- }
740
- .atom-tree-list {
741
- list-style: none;
742
- padding: 0;
743
- margin: 0;
744
- }
745
- .atom-tree-item {
746
- position: relative;
747
- }
748
- .atom-tree-node {
749
- display: flex;
750
- align-items: center;
751
- gap: 0.375rem;
752
- width: 100%;
753
- padding: 0.35rem 0.5rem;
754
- border-radius: var(--atom-radius-sm);
755
- border: 1px solid transparent;
756
- background: transparent;
757
- color: inherit;
758
- font-size: inherit;
759
- text-align: left;
760
- cursor: pointer;
761
- transition: background-color 0.15s ease, color 0.15s ease;
762
- }
763
- .atom-tree-node:hover {
764
- background-color: var(--atom-bg-secondary);
765
- }
766
- .atom-tree-node:focus-visible {
767
- outline: 2px solid var(--atom-primary);
768
- outline-offset: -1px;
769
- }
770
- .atom-tree-node.is-selected {
771
- background-color: var(--atom-primary-light);
772
- color: var(--atom-primary);
773
- font-weight: 600;
774
- }
775
- .atom-tree-node.is-disabled {
776
- opacity: 0.5;
777
- cursor: not-allowed;
778
- pointer-events: none;
779
- }
780
- .atom-tree-toggle {
781
- display: inline-flex;
782
- align-items: center;
783
- justify-content: center;
784
- width: 1rem;
785
- height: 1rem;
786
- padding: 0;
787
- border: none;
788
- background: transparent;
789
- color: var(--atom-text-muted);
790
- cursor: pointer;
791
- font-size: 0.75rem;
792
- transition: transform 0.2s cubic-bezier(0.16, 1, 0.3, 1), color 0.15s ease;
793
- shrink: 0;
794
- }
795
- .atom-tree-toggle:hover {
796
- color: var(--atom-text-primary);
797
- }
798
- .atom-tree-toggle.is-expanded {
799
- transform: rotate(90deg);
800
- }
801
- .atom-tree-toggle-spacer {
802
- width: 1rem;
803
- height: 1rem;
804
- shrink: 0;
805
- }
806
- .atom-tree-icon {
807
- display: inline-flex;
808
- align-items: center;
809
- justify-content: center;
810
- width: 1rem;
811
- height: 1rem;
812
- color: var(--atom-text-muted);
813
- shrink: 0;
814
- }
815
- .atom-tree-label {
816
- flex: 1;
817
- min-width: 0;
818
- overflow: hidden;
819
- text-overflow: ellipsis;
820
- white-space: nowrap;
821
- }
822
- .atom-tree-children {
823
- padding-left: 1.25rem;
824
- border-left: 1px dashed var(--atom-border-subtle);
825
- margin-left: 0.5rem;
29
+ --atom-space-1: 4px;
30
+ --atom-space-2: 8px;
31
+ --atom-space-3: 12px;
32
+ --atom-space-4: 16px;
33
+ --atom-space-5: 20px;
34
+ --atom-space-6: 24px;
35
+ --atom-space-8: 32px;
36
+ --atom-space-12: 48px;
37
+ --atom-space-16: 64px;
38
+ --atom-shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
39
+ --atom-shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);
40
+ --atom-shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);
41
+ --atom-shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.15);
42
+ --atom-container-sm: 640px;
43
+ --atom-container-md: 768px;
44
+ --atom-container-lg: 1024px;
45
+ --atom-container-xl: 1280px;
46
+ --atom-container-2xl: 1536px;
47
+ --atom-container-full: 100%;
48
+ --atom-layout-gutter: 16px;
49
+ --atom-layout-gutter-lg: 24px;
50
+ --atom-layout-gap: 32px;
826
51
  }