atelier-ui-react 1.0.2

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 (72) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +101 -0
  3. package/dist/index.cjs +909 -0
  4. package/dist/index.css +962 -0
  5. package/dist/index.mjs +876 -0
  6. package/package.json +52 -0
  7. package/src/Button/Button.css +169 -0
  8. package/src/Button/Button.tsx +57 -0
  9. package/src/Button/Button.types.ts +19 -0
  10. package/src/Button/index.ts +2 -0
  11. package/src/Card/Card.css +73 -0
  12. package/src/Card/Card.tsx +79 -0
  13. package/src/Card/Card.types.ts +25 -0
  14. package/src/Card/index.ts +2 -0
  15. package/src/Checkbox/Checkbox.css +101 -0
  16. package/src/Checkbox/Checkbox.tsx +85 -0
  17. package/src/Checkbox/Checkbox.types.ts +9 -0
  18. package/src/Checkbox/index.ts +2 -0
  19. package/src/Divider/Divider.css +47 -0
  20. package/src/Divider/Divider.tsx +53 -0
  21. package/src/Divider/Divider.types.ts +12 -0
  22. package/src/Divider/index.ts +2 -0
  23. package/src/Heading/Heading.css +30 -0
  24. package/src/Heading/Heading.tsx +50 -0
  25. package/src/Heading/Heading.types.ts +16 -0
  26. package/src/Heading/index.ts +2 -0
  27. package/src/Icon/Icon.css +26 -0
  28. package/src/Icon/Icon.tsx +79 -0
  29. package/src/Icon/Icon.types.ts +13 -0
  30. package/src/Icon/index.ts +2 -0
  31. package/src/Input/Input.css +145 -0
  32. package/src/Input/Input.tsx +86 -0
  33. package/src/Input/Input.types.ts +15 -0
  34. package/src/Input/index.ts +2 -0
  35. package/src/Link/Link.css +50 -0
  36. package/src/Link/Link.tsx +64 -0
  37. package/src/Link/Link.types.ts +13 -0
  38. package/src/Link/index.ts +2 -0
  39. package/src/Select/Select.css +115 -0
  40. package/src/Select/Select.tsx +109 -0
  41. package/src/Select/Select.types.ts +19 -0
  42. package/src/Select/index.ts +2 -0
  43. package/src/Text/Text.css +49 -0
  44. package/src/Text/Text.tsx +46 -0
  45. package/src/Text/Text.types.ts +19 -0
  46. package/src/Text/index.ts +2 -0
  47. package/src/index.ts +34 -0
  48. package/src/layout/Container/Container.css +16 -0
  49. package/src/layout/Container/Container.tsx +51 -0
  50. package/src/layout/Container/Container.types.ts +12 -0
  51. package/src/layout/Container/index.ts +2 -0
  52. package/src/layout/Flex/Flex.css +34 -0
  53. package/src/layout/Flex/Flex.tsx +56 -0
  54. package/src/layout/Flex/Flex.types.ts +18 -0
  55. package/src/layout/Flex/index.ts +2 -0
  56. package/src/layout/Grid/Grid.css +18 -0
  57. package/src/layout/Grid/Grid.tsx +61 -0
  58. package/src/layout/Grid/Grid.types.ts +17 -0
  59. package/src/layout/Grid/index.ts +2 -0
  60. package/src/layout/Stack/Stack.css +50 -0
  61. package/src/layout/Stack/Stack.tsx +70 -0
  62. package/src/layout/Stack/Stack.types.ts +17 -0
  63. package/src/layout/Stack/index.ts +2 -0
  64. package/src/styles/globals.css +28 -0
  65. package/src/styles/reset.css +44 -0
  66. package/src/theme/ThemeProvider.tsx +83 -0
  67. package/src/theme/dark.css +62 -0
  68. package/src/theme/index.ts +2 -0
  69. package/src/theme/light.css +62 -0
  70. package/src/theme/theme.types.ts +19 -0
  71. package/src/theme/tokens.css +61 -0
  72. package/src/utils/index.ts +44 -0
package/dist/index.css ADDED
@@ -0,0 +1,962 @@
1
+ /* src/Text/Text.css */
2
+ .ui-text {
3
+ margin: 0;
4
+ padding: 0;
5
+ font-family: var(--ui-font-sans);
6
+ line-height: var(--ui-line-height-normal);
7
+ color: var(--ui-color-foreground);
8
+ transition: color var(--ui-transition-fast);
9
+ }
10
+ .ui-text--size-xs {
11
+ font-size: var(--ui-font-size-xs);
12
+ }
13
+ .ui-text--size-sm {
14
+ font-size: var(--ui-font-size-sm);
15
+ }
16
+ .ui-text--size-md {
17
+ font-size: var(--ui-font-size-md);
18
+ }
19
+ .ui-text--size-lg {
20
+ font-size: var(--ui-font-size-lg);
21
+ }
22
+ .ui-text--size-xl {
23
+ font-size: var(--ui-font-size-xl);
24
+ }
25
+ .ui-text--size-2xl {
26
+ font-size: var(--ui-font-size-2xl);
27
+ }
28
+ .ui-text--weight-normal {
29
+ font-weight: var(--ui-font-weight-normal);
30
+ }
31
+ .ui-text--weight-medium {
32
+ font-weight: var(--ui-font-weight-medium);
33
+ }
34
+ .ui-text--weight-semibold {
35
+ font-weight: var(--ui-font-weight-semibold);
36
+ }
37
+ .ui-text--weight-bold {
38
+ font-weight: var(--ui-font-weight-bold);
39
+ }
40
+ .ui-text--color-default {
41
+ color: var(--ui-color-foreground);
42
+ }
43
+ .ui-text--color-muted {
44
+ color: var(--ui-color-foreground-muted);
45
+ }
46
+ .ui-text--color-subtle {
47
+ color: var(--ui-color-foreground-subtle);
48
+ }
49
+ .ui-text--color-primary {
50
+ color: var(--ui-color-primary);
51
+ }
52
+ .ui-text--color-success {
53
+ color: var(--ui-color-success);
54
+ }
55
+ .ui-text--color-warning {
56
+ color: var(--ui-color-warning);
57
+ }
58
+ .ui-text--color-danger {
59
+ color: var(--ui-color-danger);
60
+ }
61
+ .ui-text--color-inherit {
62
+ color: inherit;
63
+ }
64
+ .ui-text--align-left {
65
+ text-align: left;
66
+ }
67
+ .ui-text--align-center {
68
+ text-align: center;
69
+ }
70
+ .ui-text--align-right {
71
+ text-align: right;
72
+ }
73
+ .ui-text--align-justify {
74
+ text-align: justify;
75
+ }
76
+ .ui-text--truncate {
77
+ overflow: hidden;
78
+ text-overflow: ellipsis;
79
+ white-space: nowrap;
80
+ }
81
+ .ui-text--mono {
82
+ font-family: var(--ui-font-mono);
83
+ }
84
+
85
+ /* src/Heading/Heading.css */
86
+ .ui-heading {
87
+ margin: 0;
88
+ padding: 0;
89
+ font-family: var(--ui-font-sans);
90
+ color: var(--ui-color-foreground);
91
+ line-height: var(--ui-line-height-tight);
92
+ letter-spacing: -0.02em;
93
+ font-feature-settings:
94
+ "cv02",
95
+ "cv03",
96
+ "cv04",
97
+ "cv11";
98
+ }
99
+ .ui-heading--size-xs {
100
+ font-size: var(--ui-font-size-sm);
101
+ }
102
+ .ui-heading--size-sm {
103
+ font-size: var(--ui-font-size-md);
104
+ }
105
+ .ui-heading--size-md {
106
+ font-size: var(--ui-font-size-lg);
107
+ }
108
+ .ui-heading--size-lg {
109
+ font-size: var(--ui-font-size-xl);
110
+ }
111
+ .ui-heading--size-xl {
112
+ font-size: var(--ui-font-size-2xl);
113
+ }
114
+ .ui-heading--size-2xl {
115
+ font-size: var(--ui-font-size-3xl);
116
+ }
117
+ .ui-heading--size-3xl {
118
+ font-size: var(--ui-font-size-4xl);
119
+ }
120
+ .ui-heading--size-4xl {
121
+ font-size: 2.75rem;
122
+ letter-spacing: -0.03em;
123
+ }
124
+ .ui-heading--weight-normal {
125
+ font-weight: var(--ui-font-weight-normal);
126
+ }
127
+ .ui-heading--weight-medium {
128
+ font-weight: var(--ui-font-weight-medium);
129
+ }
130
+ .ui-heading--weight-semibold {
131
+ font-weight: var(--ui-font-weight-semibold);
132
+ }
133
+ .ui-heading--weight-bold {
134
+ font-weight: var(--ui-font-weight-bold);
135
+ }
136
+ .ui-heading--align-left {
137
+ text-align: left;
138
+ }
139
+ .ui-heading--align-center {
140
+ text-align: center;
141
+ }
142
+ .ui-heading--align-right {
143
+ text-align: right;
144
+ }
145
+
146
+ /* src/Icon/Icon.css */
147
+ .ui-icon {
148
+ display: inline-flex;
149
+ align-items: center;
150
+ justify-content: center;
151
+ vertical-align: middle;
152
+ flex-shrink: 0;
153
+ line-height: 1;
154
+ }
155
+ .ui-icon svg {
156
+ width: 100%;
157
+ height: 100%;
158
+ }
159
+ .ui-icon--spin {
160
+ animation: ui-spin 1s linear infinite;
161
+ }
162
+ @keyframes ui-spin {
163
+ from {
164
+ transform: rotate(0deg);
165
+ }
166
+ to {
167
+ transform: rotate(360deg);
168
+ }
169
+ }
170
+
171
+ /* src/Divider/Divider.css */
172
+ .ui-divider {
173
+ display: flex;
174
+ align-items: center;
175
+ box-sizing: border-box;
176
+ }
177
+ .ui-divider--horizontal {
178
+ width: 100%;
179
+ flex-direction: row;
180
+ }
181
+ .ui-divider--vertical {
182
+ height: 100%;
183
+ min-height: 1em;
184
+ flex-direction: column;
185
+ }
186
+ .ui-divider__line {
187
+ flex-grow: 1;
188
+ background-color: var(--ui-color-border);
189
+ }
190
+ .ui-divider--horizontal .ui-divider__line {
191
+ height: 1px;
192
+ }
193
+ .ui-divider--vertical .ui-divider__line {
194
+ width: 1px;
195
+ }
196
+ .ui-divider__content {
197
+ padding: 0 var(--ui-space-sm);
198
+ font-size: var(--ui-font-size-xs);
199
+ color: var(--ui-color-foreground-muted);
200
+ font-weight: var(--ui-font-weight-medium);
201
+ white-space: nowrap;
202
+ }
203
+ .ui-divider--align-left .ui-divider__line:first-child {
204
+ flex-grow: 0;
205
+ width: var(--ui-space-lg);
206
+ }
207
+ .ui-divider--align-right .ui-divider__line:last-child {
208
+ flex-grow: 0;
209
+ width: var(--ui-space-lg);
210
+ }
211
+
212
+ /* src/Button/Button.css */
213
+ .ui-btn {
214
+ display: inline-flex;
215
+ align-items: center;
216
+ justify-content: center;
217
+ gap: var(--ui-space-xs);
218
+ font-family: var(--ui-font-sans);
219
+ font-weight: var(--ui-font-weight-medium);
220
+ line-height: var(--ui-line-height-none);
221
+ white-space: nowrap;
222
+ border-radius: var(--ui-radius-md);
223
+ border: 1px solid transparent;
224
+ cursor: pointer;
225
+ user-select: none;
226
+ text-decoration: none;
227
+ position: relative;
228
+ transition:
229
+ background-color var(--ui-transition-fast),
230
+ border-color var(--ui-transition-fast),
231
+ color var(--ui-transition-fast),
232
+ box-shadow var(--ui-transition-fast),
233
+ transform 100ms ease;
234
+ }
235
+ .ui-btn:focus-visible {
236
+ outline: var(--ui-focus-ring-width) solid var(--ui-color-focus-ring);
237
+ outline-offset: var(--ui-focus-ring-offset);
238
+ }
239
+ .ui-btn:active:not(:disabled):not([aria-disabled=true]) {
240
+ transform: scale(0.98);
241
+ }
242
+ .ui-btn--size-sm {
243
+ height: 32px;
244
+ padding: 0 12px;
245
+ font-size: var(--ui-font-size-xs);
246
+ gap: 6px;
247
+ border-radius: var(--ui-radius-sm);
248
+ }
249
+ .ui-btn--size-md {
250
+ height: 40px;
251
+ padding: 0 16px;
252
+ font-size: var(--ui-font-size-sm);
253
+ gap: 8px;
254
+ border-radius: var(--ui-radius-md);
255
+ }
256
+ .ui-btn--size-lg {
257
+ height: 48px;
258
+ padding: 0 24px;
259
+ font-size: var(--ui-font-size-md);
260
+ gap: 10px;
261
+ border-radius: var(--ui-radius-md);
262
+ }
263
+ .ui-btn--variant-primary {
264
+ background-color: var(--ui-color-primary);
265
+ color: var(--ui-color-primary-fg);
266
+ box-shadow: var(--ui-shadow-xs);
267
+ }
268
+ .ui-btn--variant-primary:hover:not(:disabled):not([aria-disabled=true]) {
269
+ background-color: var(--ui-color-primary-hover);
270
+ }
271
+ .ui-btn--variant-primary:active:not(:disabled):not([aria-disabled=true]) {
272
+ background-color: var(--ui-color-primary-active);
273
+ }
274
+ .ui-btn--variant-secondary {
275
+ background-color: var(--ui-color-secondary);
276
+ color: var(--ui-color-secondary-fg);
277
+ border-color: var(--ui-color-border);
278
+ }
279
+ .ui-btn--variant-secondary:hover:not(:disabled):not([aria-disabled=true]) {
280
+ background-color: var(--ui-color-secondary-hover);
281
+ border-color: var(--ui-color-border-hover);
282
+ }
283
+ .ui-btn--variant-secondary:active:not(:disabled):not([aria-disabled=true]) {
284
+ background-color: var(--ui-color-secondary-active);
285
+ }
286
+ .ui-btn--variant-outline {
287
+ background-color: transparent;
288
+ color: var(--ui-color-foreground);
289
+ border-color: var(--ui-color-border);
290
+ }
291
+ .ui-btn--variant-outline:hover:not(:disabled):not([aria-disabled=true]) {
292
+ background-color: var(--ui-color-surface-hover);
293
+ border-color: var(--ui-color-border-strong);
294
+ }
295
+ .ui-btn--variant-outline:active:not(:disabled):not([aria-disabled=true]) {
296
+ background-color: var(--ui-color-secondary);
297
+ }
298
+ .ui-btn--variant-ghost {
299
+ background-color: transparent;
300
+ color: var(--ui-color-foreground);
301
+ border-color: transparent;
302
+ }
303
+ .ui-btn--variant-ghost:hover:not(:disabled):not([aria-disabled=true]) {
304
+ background-color: var(--ui-color-surface-hover);
305
+ }
306
+ .ui-btn--variant-ghost:active:not(:disabled):not([aria-disabled=true]) {
307
+ background-color: var(--ui-color-secondary);
308
+ }
309
+ .ui-btn--variant-danger {
310
+ background-color: var(--ui-color-danger);
311
+ color: var(--ui-color-danger-fg);
312
+ box-shadow: var(--ui-shadow-xs);
313
+ }
314
+ .ui-btn--variant-danger:hover:not(:disabled):not([aria-disabled=true]) {
315
+ background-color: var(--ui-color-danger-hover);
316
+ }
317
+ .ui-btn--variant-danger:active:not(:disabled):not([aria-disabled=true]) {
318
+ background-color: var(--ui-color-danger-active);
319
+ }
320
+ .ui-btn--full-width {
321
+ width: 100%;
322
+ }
323
+ .ui-btn--disabled,
324
+ .ui-btn:disabled {
325
+ opacity: 0.5;
326
+ cursor: not-allowed;
327
+ pointer-events: none;
328
+ box-shadow: none;
329
+ }
330
+ .ui-btn--loading {
331
+ cursor: wait;
332
+ pointer-events: none;
333
+ }
334
+ .ui-btn__spinner {
335
+ width: 1em;
336
+ height: 1em;
337
+ border: 2px solid currentColor;
338
+ border-right-color: transparent;
339
+ border-radius: 50%;
340
+ animation: ui-btn-spin 0.65s linear infinite;
341
+ display: inline-block;
342
+ flex-shrink: 0;
343
+ }
344
+ @keyframes ui-btn-spin {
345
+ to {
346
+ transform: rotate(360deg);
347
+ }
348
+ }
349
+
350
+ /* src/Link/Link.css */
351
+ .ui-link {
352
+ display: inline-flex;
353
+ align-items: center;
354
+ gap: 4px;
355
+ font-family: var(--ui-font-sans);
356
+ font-weight: var(--ui-font-weight-medium);
357
+ cursor: pointer;
358
+ text-decoration: none;
359
+ transition: color var(--ui-transition-fast), text-decoration-color var(--ui-transition-fast);
360
+ border-radius: var(--ui-radius-sm);
361
+ }
362
+ .ui-link:focus-visible {
363
+ outline: var(--ui-focus-ring-width) solid var(--ui-color-focus-ring);
364
+ outline-offset: var(--ui-focus-ring-offset);
365
+ }
366
+ .ui-link--size-sm {
367
+ font-size: var(--ui-font-size-xs);
368
+ }
369
+ .ui-link--size-md {
370
+ font-size: var(--ui-font-size-sm);
371
+ }
372
+ .ui-link--size-lg {
373
+ font-size: var(--ui-font-size-md);
374
+ }
375
+ .ui-link--variant-default {
376
+ color: var(--ui-color-accent);
377
+ }
378
+ .ui-link--variant-default:hover {
379
+ color: var(--ui-color-accent-hover);
380
+ text-decoration: underline;
381
+ text-underline-offset: 3px;
382
+ }
383
+ .ui-link--variant-subtle {
384
+ color: var(--ui-color-foreground-muted);
385
+ }
386
+ .ui-link--variant-subtle:hover {
387
+ color: var(--ui-color-foreground);
388
+ }
389
+ .ui-link--variant-underline {
390
+ color: var(--ui-color-foreground);
391
+ text-decoration: underline;
392
+ text-underline-offset: 3px;
393
+ }
394
+ .ui-link--variant-underline:hover {
395
+ color: var(--ui-color-accent);
396
+ }
397
+
398
+ /* src/Input/Input.css */
399
+ .ui-input-wrapper {
400
+ display: inline-flex;
401
+ flex-direction: column;
402
+ gap: var(--ui-space-2xs);
403
+ box-sizing: border-box;
404
+ font-family: var(--ui-font-sans);
405
+ }
406
+ .ui-input-wrapper--full-width {
407
+ width: 100%;
408
+ }
409
+ .ui-input-label {
410
+ font-size: var(--ui-font-size-xs);
411
+ font-weight: var(--ui-font-weight-medium);
412
+ color: var(--ui-color-foreground);
413
+ user-select: none;
414
+ }
415
+ .ui-input-label--disabled {
416
+ color: var(--ui-color-foreground-muted);
417
+ }
418
+ .ui-input-container {
419
+ position: relative;
420
+ display: flex;
421
+ align-items: center;
422
+ width: 100%;
423
+ border-radius: var(--ui-radius-md);
424
+ transition: border-color var(--ui-transition-fast), box-shadow var(--ui-transition-fast);
425
+ }
426
+ .ui-input {
427
+ width: 100%;
428
+ font-family: var(--ui-font-sans);
429
+ color: var(--ui-color-foreground);
430
+ background-color: var(--ui-color-surface);
431
+ border: 1px solid var(--ui-color-border);
432
+ border-radius: var(--ui-radius-md);
433
+ outline: none;
434
+ transition:
435
+ border-color var(--ui-transition-fast),
436
+ box-shadow var(--ui-transition-fast),
437
+ background-color var(--ui-transition-fast);
438
+ }
439
+ .ui-input::placeholder {
440
+ color: var(--ui-color-foreground-subtle);
441
+ }
442
+ .ui-input:focus {
443
+ border-color: var(--ui-color-focus-border);
444
+ box-shadow: 0 0 0 var(--ui-focus-ring-width) var(--ui-color-focus-ring);
445
+ }
446
+ .ui-input--size-sm {
447
+ height: 32px;
448
+ padding: 0 10px;
449
+ font-size: var(--ui-font-size-xs);
450
+ border-radius: var(--ui-radius-sm);
451
+ }
452
+ .ui-input--size-md {
453
+ height: 40px;
454
+ padding: 0 12px;
455
+ font-size: var(--ui-font-size-sm);
456
+ border-radius: var(--ui-radius-md);
457
+ }
458
+ .ui-input--size-lg {
459
+ height: 48px;
460
+ padding: 0 16px;
461
+ font-size: var(--ui-font-size-md);
462
+ border-radius: var(--ui-radius-md);
463
+ }
464
+ .ui-input--variant-filled {
465
+ background-color: var(--ui-color-surface-inset);
466
+ border-color: transparent;
467
+ }
468
+ .ui-input--variant-filled:focus {
469
+ background-color: var(--ui-color-surface);
470
+ border-color: var(--ui-color-focus-border);
471
+ }
472
+ .ui-input--has-left-icon.ui-input--size-sm {
473
+ padding-left: 30px;
474
+ }
475
+ .ui-input--has-left-icon.ui-input--size-md {
476
+ padding-left: 36px;
477
+ }
478
+ .ui-input--has-left-icon.ui-input--size-lg {
479
+ padding-left: 42px;
480
+ }
481
+ .ui-input--has-right-icon.ui-input--size-sm {
482
+ padding-right: 30px;
483
+ }
484
+ .ui-input--has-right-icon.ui-input--size-md {
485
+ padding-right: 36px;
486
+ }
487
+ .ui-input--has-right-icon.ui-input--size-lg {
488
+ padding-right: 42px;
489
+ }
490
+ .ui-input__icon {
491
+ position: absolute;
492
+ display: flex;
493
+ align-items: center;
494
+ justify-content: center;
495
+ color: var(--ui-color-foreground-muted);
496
+ pointer-events: none;
497
+ }
498
+ .ui-input__icon--left {
499
+ left: 10px;
500
+ }
501
+ .ui-input__icon--right {
502
+ right: 10px;
503
+ }
504
+ .ui-input:disabled {
505
+ background-color: var(--ui-color-surface-inset);
506
+ color: var(--ui-color-foreground-muted);
507
+ border-color: var(--ui-color-border-subtle);
508
+ cursor: not-allowed;
509
+ opacity: 0.7;
510
+ }
511
+ .ui-input--error,
512
+ .ui-input--error:focus {
513
+ border-color: var(--ui-color-danger);
514
+ box-shadow: 0 0 0 var(--ui-focus-ring-width) rgba(220, 38, 38, 0.2);
515
+ }
516
+ .ui-input-helper {
517
+ font-size: var(--ui-font-size-xs);
518
+ color: var(--ui-color-foreground-muted);
519
+ line-height: 1.4;
520
+ }
521
+ .ui-input-helper--error {
522
+ color: var(--ui-color-danger);
523
+ font-weight: var(--ui-font-weight-medium);
524
+ }
525
+
526
+ /* src/Checkbox/Checkbox.css */
527
+ .ui-checkbox-wrapper {
528
+ display: inline-flex;
529
+ align-items: flex-start;
530
+ gap: var(--ui-space-xs);
531
+ cursor: pointer;
532
+ user-select: none;
533
+ font-family: var(--ui-font-sans);
534
+ position: relative;
535
+ }
536
+ .ui-checkbox-wrapper--disabled {
537
+ cursor: not-allowed;
538
+ opacity: 0.6;
539
+ }
540
+ .ui-checkbox-input {
541
+ position: absolute;
542
+ opacity: 0;
543
+ width: 0;
544
+ height: 0;
545
+ margin: 0;
546
+ pointer-events: none;
547
+ }
548
+ .ui-checkbox-box {
549
+ display: flex;
550
+ align-items: center;
551
+ justify-content: center;
552
+ flex-shrink: 0;
553
+ border: 1px solid var(--ui-color-border-strong);
554
+ background-color: var(--ui-color-surface);
555
+ border-radius: var(--ui-radius-sm);
556
+ color: var(--ui-color-primary-fg);
557
+ transition:
558
+ background-color var(--ui-transition-fast),
559
+ border-color var(--ui-transition-fast),
560
+ box-shadow var(--ui-transition-fast);
561
+ }
562
+ .ui-checkbox-box--sm {
563
+ width: 16px;
564
+ height: 16px;
565
+ margin-top: 2px;
566
+ }
567
+ .ui-checkbox-box--md {
568
+ width: 18px;
569
+ height: 18px;
570
+ margin-top: 2px;
571
+ }
572
+ .ui-checkbox-box--checked,
573
+ .ui-checkbox-box--indeterminate {
574
+ background-color: var(--ui-color-primary);
575
+ border-color: var(--ui-color-primary);
576
+ }
577
+ .ui-checkbox-input:focus-visible + .ui-checkbox-box {
578
+ outline: var(--ui-focus-ring-width) solid var(--ui-color-focus-ring);
579
+ outline-offset: var(--ui-focus-ring-offset);
580
+ }
581
+ .ui-checkbox-box--error {
582
+ border-color: var(--ui-color-danger);
583
+ }
584
+ .ui-checkbox-icon {
585
+ width: 12px;
586
+ height: 12px;
587
+ stroke: currentColor;
588
+ stroke-width: 2.5;
589
+ stroke-linecap: round;
590
+ stroke-linejoin: round;
591
+ fill: none;
592
+ }
593
+ .ui-checkbox-content {
594
+ display: flex;
595
+ flex-direction: column;
596
+ gap: 2px;
597
+ line-height: 1.4;
598
+ }
599
+ .ui-checkbox-label {
600
+ font-size: var(--ui-font-size-sm);
601
+ font-weight: var(--ui-font-weight-medium);
602
+ color: var(--ui-color-foreground);
603
+ }
604
+ .ui-checkbox-desc {
605
+ font-size: var(--ui-font-size-xs);
606
+ color: var(--ui-color-foreground-muted);
607
+ }
608
+
609
+ /* src/Select/Select.css */
610
+ .ui-select-wrapper {
611
+ display: inline-flex;
612
+ flex-direction: column;
613
+ gap: var(--ui-space-2xs);
614
+ box-sizing: border-box;
615
+ font-family: var(--ui-font-sans);
616
+ }
617
+ .ui-select-wrapper--full-width {
618
+ width: 100%;
619
+ }
620
+ .ui-select-label {
621
+ font-size: var(--ui-font-size-xs);
622
+ font-weight: var(--ui-font-weight-medium);
623
+ color: var(--ui-color-foreground);
624
+ user-select: none;
625
+ }
626
+ .ui-select-label--disabled {
627
+ color: var(--ui-color-foreground-muted);
628
+ }
629
+ .ui-select-container {
630
+ position: relative;
631
+ display: flex;
632
+ align-items: center;
633
+ width: 100%;
634
+ }
635
+ .ui-select {
636
+ width: 100%;
637
+ font-family: var(--ui-font-sans);
638
+ color: var(--ui-color-foreground);
639
+ background-color: var(--ui-color-surface);
640
+ border: 1px solid var(--ui-color-border);
641
+ border-radius: var(--ui-radius-md);
642
+ appearance: none;
643
+ -webkit-appearance: none;
644
+ padding-right: 36px;
645
+ cursor: pointer;
646
+ outline: none;
647
+ transition:
648
+ border-color var(--ui-transition-fast),
649
+ box-shadow var(--ui-transition-fast),
650
+ background-color var(--ui-transition-fast);
651
+ }
652
+ .ui-select:focus {
653
+ border-color: var(--ui-color-focus-border);
654
+ box-shadow: 0 0 0 var(--ui-focus-ring-width) var(--ui-color-focus-ring);
655
+ }
656
+ .ui-select--size-sm {
657
+ height: 32px;
658
+ padding-left: 10px;
659
+ font-size: var(--ui-font-size-xs);
660
+ border-radius: var(--ui-radius-sm);
661
+ }
662
+ .ui-select--size-md {
663
+ height: 40px;
664
+ padding-left: 12px;
665
+ font-size: var(--ui-font-size-sm);
666
+ border-radius: var(--ui-radius-md);
667
+ }
668
+ .ui-select--size-lg {
669
+ height: 48px;
670
+ padding-left: 16px;
671
+ font-size: var(--ui-font-size-md);
672
+ border-radius: var(--ui-radius-md);
673
+ }
674
+ .ui-select:disabled {
675
+ background-color: var(--ui-color-surface-inset);
676
+ color: var(--ui-color-foreground-muted);
677
+ border-color: var(--ui-color-border-subtle);
678
+ cursor: not-allowed;
679
+ opacity: 0.7;
680
+ }
681
+ .ui-select--error,
682
+ .ui-select--error:focus {
683
+ border-color: var(--ui-color-danger);
684
+ box-shadow: 0 0 0 var(--ui-focus-ring-width) rgba(220, 38, 38, 0.2);
685
+ }
686
+ .ui-select-icon {
687
+ position: absolute;
688
+ right: 12px;
689
+ pointer-events: none;
690
+ color: var(--ui-color-foreground-muted);
691
+ display: flex;
692
+ align-items: center;
693
+ justify-content: center;
694
+ }
695
+ .ui-select-helper {
696
+ font-size: var(--ui-font-size-xs);
697
+ color: var(--ui-color-foreground-muted);
698
+ line-height: 1.4;
699
+ }
700
+ .ui-select-helper--error {
701
+ color: var(--ui-color-danger);
702
+ font-weight: var(--ui-font-weight-medium);
703
+ }
704
+
705
+ /* src/Card/Card.css */
706
+ .ui-card {
707
+ box-sizing: border-box;
708
+ background-color: var(--ui-color-surface);
709
+ border-radius: var(--ui-radius-lg);
710
+ color: var(--ui-color-foreground);
711
+ position: relative;
712
+ transition:
713
+ background-color var(--ui-transition-fast),
714
+ border-color var(--ui-transition-fast),
715
+ box-shadow var(--ui-transition-fast),
716
+ transform var(--ui-transition-fast);
717
+ }
718
+ .ui-card--variant-outlined {
719
+ border: 1px solid var(--ui-color-border);
720
+ box-shadow: none;
721
+ }
722
+ .ui-card--variant-elevated {
723
+ border: 1px solid var(--ui-color-border-subtle);
724
+ box-shadow: var(--ui-shadow-sm);
725
+ }
726
+ .ui-card--variant-flat {
727
+ background-color: var(--ui-color-surface-inset);
728
+ border: 1px solid transparent;
729
+ box-shadow: none;
730
+ }
731
+ .ui-card--padding-none {
732
+ padding: 0;
733
+ }
734
+ .ui-card--padding-xs {
735
+ padding: var(--ui-space-xs);
736
+ }
737
+ .ui-card--padding-sm {
738
+ padding: var(--ui-space-sm);
739
+ }
740
+ .ui-card--padding-md {
741
+ padding: var(--ui-space-md);
742
+ }
743
+ .ui-card--padding-lg {
744
+ padding: var(--ui-space-lg);
745
+ }
746
+ .ui-card--padding-xl {
747
+ padding: var(--ui-space-xl);
748
+ }
749
+ .ui-card--interactive {
750
+ cursor: pointer;
751
+ }
752
+ .ui-card--interactive:hover {
753
+ border-color: var(--ui-color-border-strong);
754
+ box-shadow: var(--ui-shadow-md);
755
+ transform: translateY(-1px);
756
+ }
757
+ .ui-card--interactive:active {
758
+ transform: translateY(0);
759
+ }
760
+ .ui-card__header {
761
+ padding-bottom: var(--ui-space-sm);
762
+ border-bottom: 1px solid var(--ui-color-border-subtle);
763
+ margin-bottom: var(--ui-space-md);
764
+ }
765
+ .ui-card__body {
766
+ flex: 1 1 auto;
767
+ }
768
+ .ui-card__footer {
769
+ padding-top: var(--ui-space-sm);
770
+ border-top: 1px solid var(--ui-color-border-subtle);
771
+ margin-top: var(--ui-space-md);
772
+ display: flex;
773
+ align-items: center;
774
+ justify-content: flex-end;
775
+ gap: var(--ui-space-sm);
776
+ }
777
+
778
+ /* src/layout/Stack/Stack.css */
779
+ .ui-stack {
780
+ display: flex;
781
+ box-sizing: border-box;
782
+ }
783
+ .ui-stack--vertical {
784
+ flex-direction: column;
785
+ }
786
+ .ui-stack--horizontal {
787
+ flex-direction: row;
788
+ }
789
+ .ui-stack--align-start {
790
+ align-items: flex-start;
791
+ }
792
+ .ui-stack--align-center {
793
+ align-items: center;
794
+ }
795
+ .ui-stack--align-end {
796
+ align-items: flex-end;
797
+ }
798
+ .ui-stack--align-stretch {
799
+ align-items: stretch;
800
+ }
801
+ .ui-stack--align-baseline {
802
+ align-items: baseline;
803
+ }
804
+ .ui-stack--justify-start {
805
+ justify-content: flex-start;
806
+ }
807
+ .ui-stack--justify-center {
808
+ justify-content: center;
809
+ }
810
+ .ui-stack--justify-end {
811
+ justify-content: flex-end;
812
+ }
813
+ .ui-stack--justify-between {
814
+ justify-content: space-between;
815
+ }
816
+ .ui-stack--justify-around {
817
+ justify-content: space-around;
818
+ }
819
+ .ui-stack--justify-evenly {
820
+ justify-content: space-evenly;
821
+ }
822
+ .ui-stack--wrap {
823
+ flex-wrap: wrap;
824
+ }
825
+ .ui-stack-divider {
826
+ align-self: stretch;
827
+ background-color: var(--ui-color-border);
828
+ border: none;
829
+ margin: 0;
830
+ }
831
+ .ui-stack--vertical > .ui-stack-divider {
832
+ height: 1px;
833
+ width: 100%;
834
+ }
835
+ .ui-stack--horizontal > .ui-stack-divider {
836
+ width: 1px;
837
+ height: 100%;
838
+ }
839
+
840
+ /* src/layout/Flex/Flex.css */
841
+ .ui-flex {
842
+ display: flex;
843
+ box-sizing: border-box;
844
+ }
845
+ .ui-flex--inline {
846
+ display: inline-flex;
847
+ }
848
+ .ui-flex--direction-row {
849
+ flex-direction: row;
850
+ }
851
+ .ui-flex--direction-row-reverse {
852
+ flex-direction: row-reverse;
853
+ }
854
+ .ui-flex--direction-col {
855
+ flex-direction: column;
856
+ }
857
+ .ui-flex--direction-col-reverse {
858
+ flex-direction: column-reverse;
859
+ }
860
+ .ui-flex--align-start {
861
+ align-items: flex-start;
862
+ }
863
+ .ui-flex--align-center {
864
+ align-items: center;
865
+ }
866
+ .ui-flex--align-end {
867
+ align-items: flex-end;
868
+ }
869
+ .ui-flex--align-stretch {
870
+ align-items: stretch;
871
+ }
872
+ .ui-flex--align-baseline {
873
+ align-items: baseline;
874
+ }
875
+ .ui-flex--justify-start {
876
+ justify-content: flex-start;
877
+ }
878
+ .ui-flex--justify-center {
879
+ justify-content: center;
880
+ }
881
+ .ui-flex--justify-end {
882
+ justify-content: flex-end;
883
+ }
884
+ .ui-flex--justify-between {
885
+ justify-content: space-between;
886
+ }
887
+ .ui-flex--justify-around {
888
+ justify-content: space-around;
889
+ }
890
+ .ui-flex--justify-evenly {
891
+ justify-content: space-evenly;
892
+ }
893
+ .ui-flex--wrap {
894
+ flex-wrap: wrap;
895
+ }
896
+ .ui-flex--wrap-nowrap {
897
+ flex-wrap: nowrap;
898
+ }
899
+ .ui-flex--wrap-reverse {
900
+ flex-wrap: wrap-reverse;
901
+ }
902
+
903
+ /* src/layout/Grid/Grid.css */
904
+ .ui-grid {
905
+ display: grid;
906
+ box-sizing: border-box;
907
+ }
908
+ .ui-grid--align-start {
909
+ align-items: start;
910
+ }
911
+ .ui-grid--align-center {
912
+ align-items: center;
913
+ }
914
+ .ui-grid--align-end {
915
+ align-items: end;
916
+ }
917
+ .ui-grid--align-stretch {
918
+ align-items: stretch;
919
+ }
920
+ .ui-grid--justify-start {
921
+ justify-content: start;
922
+ }
923
+ .ui-grid--justify-center {
924
+ justify-content: center;
925
+ }
926
+ .ui-grid--justify-end {
927
+ justify-content: end;
928
+ }
929
+ .ui-grid--justify-between {
930
+ justify-content: space-between;
931
+ }
932
+ .ui-grid--justify-around {
933
+ justify-content: space-around;
934
+ }
935
+ .ui-grid--justify-evenly {
936
+ justify-content: space-evenly;
937
+ }
938
+
939
+ /* src/layout/Container/Container.css */
940
+ .ui-container {
941
+ width: 100%;
942
+ box-sizing: border-box;
943
+ }
944
+ .ui-container--centered {
945
+ margin-left: auto;
946
+ margin-right: auto;
947
+ }
948
+ .ui-container--size-sm {
949
+ max-width: 640px;
950
+ }
951
+ .ui-container--size-md {
952
+ max-width: 768px;
953
+ }
954
+ .ui-container--size-lg {
955
+ max-width: 1024px;
956
+ }
957
+ .ui-container--size-xl {
958
+ max-width: 1280px;
959
+ }
960
+ .ui-container--size-full {
961
+ max-width: 100%;
962
+ }