atomsystem 0.4.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/README.md +112 -52
  2. package/atom.design.md +17 -0
  3. package/components/blocks/BlockDetailPageContent.tsx +337 -0
  4. package/components/blocks/BlockViewerCard.tsx +229 -0
  5. package/components/blocks/BlocksSidebar.tsx +93 -0
  6. package/components/blocks/CardListBlock.tsx +214 -0
  7. package/components/blocks/FileExplorerBlock.tsx +203 -0
  8. package/components/blocks/InteractiveChatBlock.tsx +217 -0
  9. package/components/blocks/MetricStatsBlock.tsx +150 -0
  10. package/components/blocks/PricingPlanBlock.tsx +175 -0
  11. package/components/blocks/RealtimeChartBlock.tsx +242 -0
  12. package/components/blocks/SliderShowcaseBlock.tsx +136 -0
  13. package/components/blocks/index.ts +8 -0
  14. package/components/ui/Container.tsx +45 -0
  15. package/components/ui/Layout.tsx +220 -0
  16. package/components/ui/Switch.tsx +39 -0
  17. package/components/ui/Table.tsx +88 -0
  18. package/components/ui/Tabs.tsx +58 -0
  19. package/components/ui/Tree.tsx +121 -0
  20. package/components/ui/index.ts +6 -0
  21. package/css/atom-ui.css +41 -716
  22. package/dist/cli.cjs +633 -41
  23. package/dist/cli.cjs.map +1 -1
  24. package/dist/cli.js +630 -39
  25. package/dist/cli.js.map +1 -1
  26. package/dist/index.cjs +265 -2
  27. package/dist/index.cjs.map +1 -1
  28. package/dist/index.d.cts +13 -4
  29. package/dist/index.d.ts +13 -4
  30. package/dist/index.js +265 -3
  31. package/dist/index.js.map +1 -1
  32. package/package.json +7 -1
  33. package/presets/agents.guide.md +49 -0
  34. package/presets/blocks.md +101 -0
  35. package/presets/components.md +142 -0
  36. package/presets/default.design.md +17 -0
  37. package/tokens/token.json +63 -1
  38. package/tokens/tokens.json +63 -1
package/css/atom-ui.css CHANGED
@@ -1,726 +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-left: 4px solid #10b981;
470
- }
471
- .atom-toast-error {
472
- border-left: 4px solid #f43f5e;
473
- }
474
- .atom-toast-info {
475
- border-left: 4px solid var(--atom-primary);
476
- }
477
-
478
- /* Pagination */
479
- .atom-pagination {
480
- display: inline-flex;
481
- align-items: center;
482
- gap: 0.25rem;
483
- }
484
- .atom-pagination-btn {
485
- display: inline-flex;
486
- align-items: center;
487
- justify-content: center;
488
- min-width: 2rem;
489
- height: 2rem;
490
- padding: 0 0.5rem;
491
- border-radius: var(--atom-radius-md);
492
- border: 1px solid var(--atom-border-subtle);
493
- background-color: var(--atom-bg-surface);
494
- font-size: 0.75rem;
495
- font-weight: 600;
496
- color: var(--atom-text-secondary);
497
- cursor: pointer;
498
- transition: all 0.15s ease;
499
- }
500
- .atom-pagination-btn:hover:not(:disabled) {
501
- background-color: var(--atom-bg-secondary);
502
- color: var(--atom-text-primary);
503
- }
504
- .atom-pagination-active {
505
- background-color: var(--atom-primary) !important;
506
- color: #ffffff !important;
507
- border-color: var(--atom-primary) !important;
508
- }
509
- .atom-pagination-btn:disabled {
510
- opacity: 0.4;
511
- cursor: not-allowed;
512
- }
513
-
514
- /* Radio Group & Cards */
515
- .atom-radio-group {
516
- display: flex;
517
- flex-direction: column;
518
- gap: 0.5rem;
519
- }
520
- .atom-radio-label {
521
- display: inline-flex;
522
- align-items: center;
523
- gap: 0.5rem;
524
- font-size: 0.875rem;
525
- color: var(--atom-text-primary);
526
- cursor: pointer;
527
- user-select: none;
528
- }
529
- .atom-radio {
530
- appearance: none;
531
- width: 1.125rem;
532
- height: 1.125rem;
533
- border-radius: 50%;
534
- border: 2px solid var(--atom-border-strong);
535
- background-color: var(--atom-bg-surface);
536
- cursor: pointer;
537
- outline: none;
538
- transition: all 0.15s ease;
539
- position: relative;
540
- }
541
- .atom-radio:checked {
542
- border-color: var(--atom-primary);
543
- background-color: var(--atom-primary);
544
- box-shadow: inset 0 0 0 3px var(--atom-bg-surface);
545
- }
546
-
547
- /* Slider */
548
- .atom-slider {
549
- width: 100%;
550
- display: flex;
551
- align-items: center;
552
- }
553
- .atom-slider-input {
554
- width: 100%;
555
- accent-color: var(--atom-primary);
556
- cursor: pointer;
557
- }
558
-
559
- /* Avatar */
560
- .atom-avatar {
561
- position: relative;
562
- display: inline-flex;
563
- align-items: center;
564
- justify-content: center;
565
- border-radius: 50%;
566
- overflow: hidden;
567
- background-color: var(--atom-bg-secondary);
568
- color: var(--atom-text-primary);
569
- font-weight: 700;
570
- flex-shrink: 0;
571
- user-select: none;
572
- }
573
- .atom-avatar-sm { width: 2rem; height: 2rem; font-size: 0.75rem; }
574
- .atom-avatar-md { width: 2.5rem; height: 2.5rem; font-size: 0.875rem; }
575
- .atom-avatar-lg { width: 3.5rem; height: 3.5rem; font-size: 1.25rem; }
576
- .atom-avatar-img {
577
- width: 100%;
578
- height: 100%;
579
- object-fit: cover;
580
- }
581
- .atom-avatar-fallback {
582
- display: flex;
583
- align-items: center;
584
- justify-content: center;
585
- width: 100%;
586
- height: 100%;
587
- background-color: var(--atom-primary-light);
588
- color: var(--atom-primary);
589
- }
590
- .atom-avatar-status {
591
- position: absolute;
592
- bottom: 0;
593
- right: 0;
594
- width: 0.65rem;
595
- height: 0.65rem;
596
- border-radius: 50%;
597
- border: 2px solid var(--atom-bg-surface);
598
- }
599
- .atom-avatar-status-online { background-color: #10b981; }
600
- .atom-avatar-status-busy { background-color: #f43f5e; }
601
-
602
- /* Progress */
603
- .atom-progress {
604
- width: 100%;
605
- height: 0.5rem;
606
- background-color: var(--atom-bg-secondary);
607
- border-radius: var(--atom-radius-full);
608
- overflow: hidden;
609
- position: relative;
610
- }
611
- .atom-progress-bar {
612
- height: 100%;
613
- border-radius: var(--atom-radius-full);
614
- transition: width 0.3s ease;
615
- }
616
- .atom-progress-primary { background-color: var(--atom-primary); }
617
- .atom-progress-success { background-color: #10b981; }
618
-
619
- /* Skeleton */
620
- .atom-skeleton {
621
- background: linear-gradient(
622
- 90deg,
623
- var(--atom-bg-secondary) 25%,
624
- var(--atom-border-subtle) 50%,
625
- var(--atom-bg-secondary) 75%
626
- );
627
- background-size: 200% 100%;
628
- animation: atom-shimmer 1.5s infinite;
629
- border-radius: var(--atom-radius-md);
630
- }
631
- @keyframes atom-shimmer {
632
- 0% { background-position: 200% 0; }
633
- 100% { background-position: -200% 0; }
634
- }
635
-
636
- /* Breadcrumb */
637
- .atom-breadcrumb {
638
- display: flex;
639
- align-items: center;
640
- font-size: 0.8125rem;
641
- }
642
- .atom-breadcrumb-list {
643
- display: flex;
644
- align-items: center;
645
- gap: 0.5rem;
646
- list-style: none;
647
- padding: 0;
648
- margin: 0;
649
- }
650
- .atom-breadcrumb-item a {
651
- color: var(--atom-text-secondary);
652
- text-decoration: none;
653
- transition: color 0.15s ease;
654
- }
655
- .atom-breadcrumb-item a:hover {
656
- color: var(--atom-text-primary);
657
- }
658
- .atom-breadcrumb-separator {
659
- color: var(--atom-text-muted);
660
- }
661
- .atom-breadcrumb-current {
662
- color: var(--atom-text-primary);
663
- font-weight: 600;
664
- }
665
-
666
- /* Separator / Divider */
667
- .atom-separator {
668
- background-color: var(--atom-border-subtle);
669
- }
670
- .atom-separator-horizontal {
671
- width: 100%;
672
- height: 1px;
673
- margin: 1rem 0;
674
- }
675
- .atom-separator-vertical {
676
- width: 1px;
677
- height: 100%;
678
- margin: 0 0.5rem;
679
- }
680
- .atom-separator-with-label {
681
- display: flex;
682
- align-items: center;
683
- text-align: center;
684
- color: var(--atom-text-muted);
685
- font-size: 0.75rem;
686
- margin: 1rem 0;
687
- }
688
- .atom-separator-with-label::before,
689
- .atom-separator-with-label::after {
690
- content: '';
691
- flex: 1;
692
- border-bottom: 1px solid var(--atom-border-subtle);
693
- }
694
- .atom-separator-with-label span {
695
- padding: 0 0.75rem;
696
- }
697
-
698
- /* Textarea */
699
- .atom-textarea-group {
700
- display: flex;
701
- flex-direction: column;
702
- gap: 0.35rem;
703
- width: 100%;
704
- }
705
- .atom-textarea {
706
- width: 100%;
707
- padding: 0.65rem 0.75rem;
708
- border-radius: var(--atom-radius-md);
709
- border: 1px solid var(--atom-border-strong);
710
- background-color: var(--atom-bg-surface);
711
- color: var(--atom-text-primary);
712
- font-size: 0.875rem;
713
- line-height: 1.5;
714
- outline: none;
715
- resize: vertical;
716
- transition: border-color 0.15s ease, box-shadow 0.15s ease;
717
- }
718
- .atom-textarea:focus {
719
- border-color: var(--atom-primary);
720
- box-shadow: 0 0 0 3px var(--atom-primary-light);
721
- }
722
- .atom-textarea-counter {
723
- align-self: flex-end;
724
- font-size: 0.75rem;
725
- color: var(--atom-text-muted);
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;
726
51
  }