@galyan/ui 0.0.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.
Files changed (95) hide show
  1. package/.turbo/turbo-build.log +20 -0
  2. package/dist/index.cjs +2291 -0
  3. package/dist/index.css +2558 -0
  4. package/dist/index.d.cts +498 -0
  5. package/dist/index.d.ts +498 -0
  6. package/dist/index.js +2235 -0
  7. package/eslint.config.mjs +4 -0
  8. package/package.json +43 -0
  9. package/src/accordion/Accordion.tsx +88 -0
  10. package/src/accordion/accordion.css +78 -0
  11. package/src/accordion/index.ts +2 -0
  12. package/src/animatednumber/AnimatedNumber.tsx +71 -0
  13. package/src/animatednumber/index.ts +2 -0
  14. package/src/banner/Banner.tsx +84 -0
  15. package/src/banner/banner.css +56 -0
  16. package/src/banner/index.ts +2 -0
  17. package/src/breadcrumb/Breadcrumb.tsx +94 -0
  18. package/src/breadcrumb/breadcrumb.css +58 -0
  19. package/src/breadcrumb/index.ts +2 -0
  20. package/src/button/Button.tsx +98 -0
  21. package/src/button/button.css +190 -0
  22. package/src/button/index.ts +2 -0
  23. package/src/button.tsx +20 -0
  24. package/src/calendar/Calendar.tsx +190 -0
  25. package/src/calendar/calendar.css +142 -0
  26. package/src/calendar/index.ts +2 -0
  27. package/src/card/Card.tsx +88 -0
  28. package/src/card/card.css +115 -0
  29. package/src/card/index.ts +2 -0
  30. package/src/card.tsx +27 -0
  31. package/src/chart/Chart.tsx +186 -0
  32. package/src/chart/index.ts +2 -0
  33. package/src/checkbox/Checkbox.tsx +101 -0
  34. package/src/checkbox/checkbox.css +76 -0
  35. package/src/checkbox/index.ts +2 -0
  36. package/src/chips/Chips.tsx +146 -0
  37. package/src/chips/chips.css +90 -0
  38. package/src/chips/index.ts +2 -0
  39. package/src/code.tsx +11 -0
  40. package/src/datepicker/DatePicker.tsx +104 -0
  41. package/src/datepicker/datepicker.css +22 -0
  42. package/src/datepicker/index.ts +2 -0
  43. package/src/dragdrop/DragDrop.tsx +168 -0
  44. package/src/dragdrop/dragdrop.css +122 -0
  45. package/src/dragdrop/index.ts +2 -0
  46. package/src/dropdown/Dropdown.tsx +176 -0
  47. package/src/dropdown/dropdown.css +118 -0
  48. package/src/dropdown/index.ts +2 -0
  49. package/src/fileupload/FileUpload.tsx +144 -0
  50. package/src/fileupload/fileupload.css +118 -0
  51. package/src/fileupload/index.ts +2 -0
  52. package/src/index.ts +28 -0
  53. package/src/input/Input.tsx +121 -0
  54. package/src/input/index.ts +2 -0
  55. package/src/input/input.css +120 -0
  56. package/src/menu/Menu.tsx +118 -0
  57. package/src/menu/index.ts +2 -0
  58. package/src/menu/menu.css +117 -0
  59. package/src/modal/Modal.tsx +103 -0
  60. package/src/modal/index.ts +2 -0
  61. package/src/modal/modal.css +79 -0
  62. package/src/progressbar/ProgressBar.tsx +68 -0
  63. package/src/progressbar/index.ts +2 -0
  64. package/src/progressbar/progressbar.css +73 -0
  65. package/src/radiogroup/RadioGroup.tsx +73 -0
  66. package/src/radiogroup/index.ts +2 -0
  67. package/src/radiogroup/radiogroup.css +80 -0
  68. package/src/skeleton/Skeleton.tsx +61 -0
  69. package/src/skeleton/index.ts +2 -0
  70. package/src/skeleton/skeleton.css +46 -0
  71. package/src/spinner/Spinner.tsx +29 -0
  72. package/src/spinner/index.ts +2 -0
  73. package/src/spinner/spinner.css +39 -0
  74. package/src/stepper/Stepper.tsx +127 -0
  75. package/src/stepper/index.ts +2 -0
  76. package/src/stepper/stepper.css +141 -0
  77. package/src/tab/Tabs.tsx +71 -0
  78. package/src/tab/index.ts +2 -0
  79. package/src/tab/tab.css +92 -0
  80. package/src/table/Table.tsx +205 -0
  81. package/src/table/index.ts +2 -0
  82. package/src/table/table.css +119 -0
  83. package/src/textarea/Textarea.tsx +102 -0
  84. package/src/textarea/index.ts +2 -0
  85. package/src/textarea/textarea.css +85 -0
  86. package/src/toaster/Toaster.tsx +108 -0
  87. package/src/toaster/index.ts +2 -0
  88. package/src/toaster/toaster.css +113 -0
  89. package/src/toggle/Toggle.tsx +88 -0
  90. package/src/toggle/index.ts +2 -0
  91. package/src/toggle/toggle.css +63 -0
  92. package/src/typography/Typography.tsx +58 -0
  93. package/src/typography/index.ts +2 -0
  94. package/src/typography/typography.css +102 -0
  95. package/tsconfig.json +13 -0
package/dist/index.css ADDED
@@ -0,0 +1,2558 @@
1
+ /* src/button/button.css */
2
+ .gy-btn {
3
+ display: inline-flex;
4
+ align-items: center;
5
+ justify-content: center;
6
+ gap: var(--gy-spacing-2);
7
+ font-family: var(--gy-font-sans);
8
+ font-weight: var(--gy-font-weight-medium);
9
+ letter-spacing: var(--gy-letter-spacing-wide);
10
+ border-radius: var(--gy-radius-lg);
11
+ border: 1.5px solid transparent;
12
+ cursor: pointer;
13
+ transition:
14
+ background-color var(--gy-duration-fast) var(--gy-ease-in-out),
15
+ border-color var(--gy-duration-fast) var(--gy-ease-in-out),
16
+ color var(--gy-duration-fast) var(--gy-ease-in-out),
17
+ box-shadow var(--gy-duration-fast) var(--gy-ease-in-out),
18
+ transform var(--gy-duration-fast) var(--gy-ease-out);
19
+ user-select: none;
20
+ white-space: nowrap;
21
+ text-decoration: none;
22
+ position: relative;
23
+ overflow: hidden;
24
+ -webkit-tap-highlight-color: transparent;
25
+ }
26
+ .gy-btn:focus-visible {
27
+ outline: none;
28
+ box-shadow: 0 0 0 3px var(--gy-focus-ring);
29
+ }
30
+ .gy-btn:active:not(:disabled) {
31
+ transform: scale(0.97);
32
+ }
33
+ .gy-btn--xs {
34
+ height: 1.75rem;
35
+ padding: 0 var(--gy-spacing-2);
36
+ font-size: var(--gy-font-size-xs);
37
+ border-radius: var(--gy-radius-md);
38
+ }
39
+ .gy-btn--sm {
40
+ height: 2rem;
41
+ padding: 0 var(--gy-spacing-3);
42
+ font-size: var(--gy-font-size-sm);
43
+ }
44
+ .gy-btn--md {
45
+ height: 2.5rem;
46
+ padding: 0 var(--gy-spacing-4);
47
+ font-size: var(--gy-font-size-sm);
48
+ }
49
+ .gy-btn--lg {
50
+ height: 2.75rem;
51
+ padding: 0 var(--gy-spacing-5);
52
+ font-size: var(--gy-font-size-md);
53
+ }
54
+ .gy-btn--xl {
55
+ height: 3.25rem;
56
+ padding: 0 var(--gy-spacing-6);
57
+ font-size: var(--gy-font-size-lg);
58
+ }
59
+ .gy-btn--solid {
60
+ background-color: var(--gy-primary);
61
+ border-color: var(--gy-primary);
62
+ color: var(--gy-primary-fg);
63
+ }
64
+ .gy-btn--solid:hover:not(:disabled) {
65
+ background-color: var(--gy-primary-hover);
66
+ border-color: var(--gy-primary-hover);
67
+ }
68
+ .gy-btn--solid:active:not(:disabled) {
69
+ background-color: var(--gy-primary-active);
70
+ }
71
+ .gy-btn--outline {
72
+ background-color: transparent;
73
+ border-color: var(--gy-primary);
74
+ color: var(--gy-primary);
75
+ }
76
+ .gy-btn--outline:hover:not(:disabled) {
77
+ background-color: var(--gy-primary-subtle);
78
+ }
79
+ .gy-btn--ghost {
80
+ background-color: transparent;
81
+ border-color: transparent;
82
+ color: var(--gy-primary);
83
+ }
84
+ .gy-btn--ghost:hover:not(:disabled) {
85
+ background-color: var(--gy-primary-subtle);
86
+ }
87
+ .gy-btn--soft {
88
+ background-color: var(--gy-primary-subtle);
89
+ border-color: transparent;
90
+ color: var(--gy-primary-hover);
91
+ }
92
+ .gy-btn--soft:hover:not(:disabled) {
93
+ background-color: var(--gy-primary-muted);
94
+ }
95
+ .gy-btn--link {
96
+ background-color: transparent;
97
+ border-color: transparent;
98
+ color: var(--gy-text-link);
99
+ text-decoration: underline;
100
+ text-underline-offset: 2px;
101
+ height: auto;
102
+ padding: 0;
103
+ }
104
+ .gy-btn--link:hover:not(:disabled) {
105
+ color: var(--gy-text-link-hover);
106
+ }
107
+ .gy-btn--danger {
108
+ background-color: var(--gy-danger);
109
+ border-color: var(--gy-danger);
110
+ color: var(--gy-danger-fg);
111
+ }
112
+ .gy-btn--danger:hover:not(:disabled) {
113
+ background-color: var(--gy-danger-emphasis);
114
+ border-color: var(--gy-danger-emphasis);
115
+ }
116
+ .gy-btn--full {
117
+ width: 100%;
118
+ }
119
+ .gy-btn:disabled,
120
+ .gy-btn--disabled {
121
+ cursor: not-allowed;
122
+ opacity: 0.5;
123
+ transform: none !important;
124
+ }
125
+ .gy-btn--loading {
126
+ cursor: wait;
127
+ pointer-events: none;
128
+ }
129
+ .gy-btn__spinner {
130
+ width: 1em;
131
+ height: 1em;
132
+ border: 2px solid currentColor;
133
+ border-top-color: transparent;
134
+ border-radius: 50%;
135
+ animation: gy-spin var(--gy-duration-slower) linear infinite;
136
+ flex-shrink: 0;
137
+ }
138
+ .gy-btn--icon-only.gy-btn--xs {
139
+ width: 1.75rem;
140
+ padding: 0;
141
+ }
142
+ .gy-btn--icon-only.gy-btn--sm {
143
+ width: 2rem;
144
+ padding: 0;
145
+ }
146
+ .gy-btn--icon-only.gy-btn--md {
147
+ width: 2.5rem;
148
+ padding: 0;
149
+ }
150
+ .gy-btn--icon-only.gy-btn--lg {
151
+ width: 2.75rem;
152
+ padding: 0;
153
+ }
154
+ .gy-btn--icon-only.gy-btn--xl {
155
+ width: 3.25rem;
156
+ padding: 0;
157
+ }
158
+ .gy-btn__ripple {
159
+ position: absolute;
160
+ border-radius: 50%;
161
+ background: rgba(255, 255, 255, 0.3);
162
+ transform: scale(0);
163
+ animation: gy-ripple 0.6s linear;
164
+ pointer-events: none;
165
+ }
166
+
167
+ /* src/typography/typography.css */
168
+ .gy-text {
169
+ font-family: var(--gy-font-sans);
170
+ color: var(--gy-text);
171
+ }
172
+ .gy-text--h1 {
173
+ font-size: var(--gy-font-size-5xl);
174
+ font-weight: var(--gy-font-weight-bold);
175
+ line-height: var(--gy-line-height-tight);
176
+ letter-spacing: var(--gy-letter-spacing-tight);
177
+ }
178
+ .gy-text--h2 {
179
+ font-size: var(--gy-font-size-4xl);
180
+ font-weight: var(--gy-font-weight-bold);
181
+ line-height: var(--gy-line-height-tight);
182
+ letter-spacing: var(--gy-letter-spacing-tight);
183
+ }
184
+ .gy-text--h3 {
185
+ font-size: var(--gy-font-size-3xl);
186
+ font-weight: var(--gy-font-weight-semibold);
187
+ line-height: var(--gy-line-height-snug);
188
+ }
189
+ .gy-text--h4 {
190
+ font-size: var(--gy-font-size-2xl);
191
+ font-weight: var(--gy-font-weight-semibold);
192
+ line-height: var(--gy-line-height-snug);
193
+ }
194
+ .gy-text--h5 {
195
+ font-size: var(--gy-font-size-xl);
196
+ font-weight: var(--gy-font-weight-semibold);
197
+ line-height: var(--gy-line-height-normal);
198
+ }
199
+ .gy-text--h6 {
200
+ font-size: var(--gy-font-size-lg);
201
+ font-weight: var(--gy-font-weight-semibold);
202
+ line-height: var(--gy-line-height-normal);
203
+ }
204
+ .gy-text--body-xl {
205
+ font-size: var(--gy-font-size-xl);
206
+ line-height: var(--gy-line-height-relaxed);
207
+ }
208
+ .gy-text--body-lg {
209
+ font-size: var(--gy-font-size-lg);
210
+ line-height: var(--gy-line-height-relaxed);
211
+ }
212
+ .gy-text--body-md {
213
+ font-size: var(--gy-font-size-md);
214
+ line-height: var(--gy-line-height-normal);
215
+ }
216
+ .gy-text--body-sm {
217
+ font-size: var(--gy-font-size-sm);
218
+ line-height: var(--gy-line-height-normal);
219
+ }
220
+ .gy-text--body-xs {
221
+ font-size: var(--gy-font-size-xs);
222
+ line-height: var(--gy-line-height-normal);
223
+ }
224
+ .gy-text--caption-lg {
225
+ font-size: var(--gy-font-size-xs);
226
+ font-weight: var(--gy-font-weight-medium);
227
+ letter-spacing: var(--gy-letter-spacing-wide);
228
+ line-height: var(--gy-line-height-normal);
229
+ }
230
+ .gy-text--caption-md {
231
+ font-size: var(--gy-font-size-2xs);
232
+ font-weight: var(--gy-font-weight-medium);
233
+ letter-spacing: var(--gy-letter-spacing-wider);
234
+ text-transform: uppercase;
235
+ }
236
+ .gy-text--label {
237
+ font-size: var(--gy-font-size-sm);
238
+ font-weight: var(--gy-font-weight-medium);
239
+ letter-spacing: var(--gy-letter-spacing-wide);
240
+ }
241
+ .gy-text--code {
242
+ font-family: var(--gy-font-mono);
243
+ font-size: 0.9em;
244
+ background: var(--gy-background-muted);
245
+ padding: 0.1em 0.35em;
246
+ border-radius: var(--gy-radius-sm);
247
+ border: 1px solid var(--gy-border);
248
+ }
249
+ .gy-text--color-default {
250
+ color: var(--gy-text);
251
+ }
252
+ .gy-text--color-muted {
253
+ color: var(--gy-text-muted);
254
+ }
255
+ .gy-text--color-subtle {
256
+ color: var(--gy-text-subtle);
257
+ }
258
+ .gy-text--color-disabled {
259
+ color: var(--gy-text-disabled);
260
+ }
261
+ .gy-text--color-inverse {
262
+ color: var(--gy-text-inverse);
263
+ }
264
+ .gy-text--color-primary {
265
+ color: var(--gy-primary);
266
+ }
267
+ .gy-text--color-success {
268
+ color: var(--gy-success);
269
+ }
270
+ .gy-text--color-warning {
271
+ color: var(--gy-warning);
272
+ }
273
+ .gy-text--color-danger {
274
+ color: var(--gy-danger);
275
+ }
276
+ .gy-text--color-info {
277
+ color: var(--gy-info);
278
+ }
279
+ .gy-text--truncate {
280
+ overflow: hidden;
281
+ text-overflow: ellipsis;
282
+ white-space: nowrap;
283
+ }
284
+
285
+ /* src/input/input.css */
286
+ .gy-input-root {
287
+ display: flex;
288
+ flex-direction: column;
289
+ gap: var(--gy-spacing-1-5);
290
+ width: 100%;
291
+ }
292
+ .gy-input-label {
293
+ font-size: var(--gy-font-size-sm);
294
+ font-weight: var(--gy-font-weight-medium);
295
+ color: var(--gy-text);
296
+ display: flex;
297
+ align-items: center;
298
+ gap: var(--gy-spacing-1);
299
+ }
300
+ .gy-input-label--required::after {
301
+ content: "*";
302
+ color: var(--gy-danger);
303
+ margin-left: 2px;
304
+ }
305
+ .gy-input-wrapper {
306
+ position: relative;
307
+ display: flex;
308
+ align-items: center;
309
+ background: var(--gy-surface);
310
+ border: 1.5px solid var(--gy-border);
311
+ border-radius: var(--gy-radius-lg);
312
+ transition: border-color var(--gy-duration-fast) var(--gy-ease-in-out), box-shadow var(--gy-duration-fast) var(--gy-ease-in-out);
313
+ }
314
+ .gy-input-wrapper:focus-within {
315
+ border-color: var(--gy-border-focus);
316
+ box-shadow: 0 0 0 3px var(--gy-focus-ring);
317
+ }
318
+ .gy-input-wrapper--error {
319
+ border-color: var(--gy-danger) !important;
320
+ box-shadow: none !important;
321
+ }
322
+ .gy-input-wrapper--error:focus-within {
323
+ box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.2) !important;
324
+ }
325
+ .gy-input-wrapper--disabled {
326
+ background: var(--gy-disabled-bg);
327
+ border-color: var(--gy-disabled-border);
328
+ cursor: not-allowed;
329
+ }
330
+ .gy-input-addon {
331
+ display: flex;
332
+ align-items: center;
333
+ justify-content: center;
334
+ color: var(--gy-text-subtle);
335
+ flex-shrink: 0;
336
+ }
337
+ .gy-input-addon--left {
338
+ padding-left: var(--gy-spacing-3);
339
+ }
340
+ .gy-input-addon--right {
341
+ padding-right: var(--gy-spacing-3);
342
+ }
343
+ .gy-input {
344
+ flex: 1;
345
+ border: none;
346
+ outline: none;
347
+ background: transparent;
348
+ color: var(--gy-text);
349
+ font-family: var(--gy-font-sans);
350
+ width: 100%;
351
+ min-width: 0;
352
+ }
353
+ .gy-input::placeholder {
354
+ color: var(--gy-text-subtle);
355
+ }
356
+ .gy-input:disabled {
357
+ cursor: not-allowed;
358
+ color: var(--gy-text-disabled);
359
+ }
360
+ .gy-input-wrapper--sm .gy-input {
361
+ padding: var(--gy-spacing-1-5) var(--gy-spacing-3);
362
+ font-size: var(--gy-font-size-sm);
363
+ }
364
+ .gy-input-wrapper--md .gy-input {
365
+ padding: var(--gy-spacing-2-5) var(--gy-spacing-3);
366
+ font-size: var(--gy-font-size-sm);
367
+ }
368
+ .gy-input-wrapper--lg .gy-input {
369
+ padding: var(--gy-spacing-3) var(--gy-spacing-4);
370
+ font-size: var(--gy-font-size-md);
371
+ }
372
+ .gy-input-wrapper--sm {
373
+ min-height: 2rem;
374
+ }
375
+ .gy-input-wrapper--md {
376
+ min-height: 2.5rem;
377
+ }
378
+ .gy-input-wrapper--lg {
379
+ min-height: 3rem;
380
+ }
381
+ .gy-input-wrapper .gy-input-addon--left + .gy-input {
382
+ padding-left: var(--gy-spacing-2);
383
+ }
384
+ .gy-input-wrapper .gy-input:has(+ .gy-input-addon--right) {
385
+ padding-right: var(--gy-spacing-2);
386
+ }
387
+ .gy-input-clear {
388
+ display: flex;
389
+ align-items: center;
390
+ justify-content: center;
391
+ padding: var(--gy-spacing-1);
392
+ margin-right: var(--gy-spacing-1);
393
+ color: var(--gy-text-subtle);
394
+ border-radius: var(--gy-radius-full);
395
+ cursor: pointer;
396
+ transition: color var(--gy-duration-fast), background var(--gy-duration-fast);
397
+ }
398
+ .gy-input-clear:hover {
399
+ color: var(--gy-text);
400
+ background: var(--gy-background-muted);
401
+ }
402
+ .gy-input-helper {
403
+ font-size: var(--gy-font-size-xs);
404
+ color: var(--gy-text-subtle);
405
+ margin-top: var(--gy-spacing-0-5);
406
+ }
407
+ .gy-input-helper--error {
408
+ color: var(--gy-danger);
409
+ }
410
+
411
+ /* src/textarea/textarea.css */
412
+ .gy-textarea-root {
413
+ display: flex;
414
+ flex-direction: column;
415
+ gap: var(--gy-spacing-1-5);
416
+ width: 100%;
417
+ }
418
+ .gy-textarea-label {
419
+ font-size: var(--gy-font-size-sm);
420
+ font-weight: var(--gy-font-weight-medium);
421
+ color: var(--gy-text);
422
+ }
423
+ .gy-textarea-label--required::after {
424
+ content: "*";
425
+ color: var(--gy-danger);
426
+ margin-left: 2px;
427
+ }
428
+ .gy-textarea {
429
+ width: 100%;
430
+ min-height: 80px;
431
+ padding: var(--gy-spacing-2-5) var(--gy-spacing-3);
432
+ font-family: var(--gy-font-sans);
433
+ font-size: var(--gy-font-size-sm);
434
+ line-height: var(--gy-line-height-relaxed);
435
+ color: var(--gy-text);
436
+ background: var(--gy-surface);
437
+ border: 1.5px solid var(--gy-border);
438
+ border-radius: var(--gy-radius-lg);
439
+ resize: vertical;
440
+ transition: border-color var(--gy-duration-fast) var(--gy-ease-in-out), box-shadow var(--gy-duration-fast) var(--gy-ease-in-out);
441
+ outline: none;
442
+ }
443
+ .gy-textarea::placeholder {
444
+ color: var(--gy-text-subtle);
445
+ }
446
+ .gy-textarea:focus {
447
+ border-color: var(--gy-border-focus);
448
+ box-shadow: 0 0 0 3px var(--gy-focus-ring);
449
+ }
450
+ .gy-textarea--error {
451
+ border-color: var(--gy-danger);
452
+ }
453
+ .gy-textarea--error:focus {
454
+ box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.2);
455
+ }
456
+ .gy-textarea:disabled {
457
+ background: var(--gy-disabled-bg);
458
+ color: var(--gy-text-disabled);
459
+ cursor: not-allowed;
460
+ resize: none;
461
+ }
462
+ .gy-textarea--auto-resize {
463
+ resize: none;
464
+ overflow: hidden;
465
+ }
466
+ .gy-textarea-footer {
467
+ display: flex;
468
+ justify-content: space-between;
469
+ align-items: center;
470
+ }
471
+ .gy-textarea-helper {
472
+ font-size: var(--gy-font-size-xs);
473
+ color: var(--gy-text-subtle);
474
+ }
475
+ .gy-textarea-helper--error {
476
+ color: var(--gy-danger);
477
+ }
478
+ .gy-textarea-count {
479
+ font-size: var(--gy-font-size-xs);
480
+ color: var(--gy-text-subtle);
481
+ margin-left: auto;
482
+ }
483
+ .gy-textarea-count--over {
484
+ color: var(--gy-danger);
485
+ }
486
+
487
+ /* src/checkbox/checkbox.css */
488
+ .gy-checkbox-root {
489
+ display: inline-flex;
490
+ align-items: flex-start;
491
+ gap: var(--gy-spacing-2);
492
+ cursor: pointer;
493
+ }
494
+ .gy-checkbox-root--disabled {
495
+ cursor: not-allowed;
496
+ opacity: 0.5;
497
+ }
498
+ .gy-checkbox-input {
499
+ position: absolute;
500
+ opacity: 0;
501
+ width: 0;
502
+ height: 0;
503
+ pointer-events: none;
504
+ }
505
+ .gy-checkbox-box {
506
+ display: flex;
507
+ align-items: center;
508
+ justify-content: center;
509
+ flex-shrink: 0;
510
+ border: 2px solid var(--gy-border-strong);
511
+ border-radius: var(--gy-radius-sm);
512
+ background: var(--gy-surface);
513
+ transition:
514
+ background-color var(--gy-duration-fast) var(--gy-ease-in-out),
515
+ border-color var(--gy-duration-fast) var(--gy-ease-in-out),
516
+ box-shadow var(--gy-duration-fast) var(--gy-ease-in-out);
517
+ }
518
+ .gy-checkbox-box--sm {
519
+ width: 1rem;
520
+ height: 1rem;
521
+ }
522
+ .gy-checkbox-box--md {
523
+ width: 1.125rem;
524
+ height: 1.125rem;
525
+ }
526
+ .gy-checkbox-box--lg {
527
+ width: 1.25rem;
528
+ height: 1.25rem;
529
+ }
530
+ .gy-checkbox-root:not(.gy-checkbox-root--disabled):hover .gy-checkbox-box {
531
+ border-color: var(--gy-primary);
532
+ }
533
+ .gy-checkbox-input:focus-visible + .gy-checkbox-box {
534
+ box-shadow: 0 0 0 3px var(--gy-focus-ring);
535
+ border-color: var(--gy-primary);
536
+ }
537
+ .gy-checkbox-box--checked,
538
+ .gy-checkbox-box--indeterminate {
539
+ background: var(--gy-primary);
540
+ border-color: var(--gy-primary);
541
+ }
542
+ .gy-checkbox-icon {
543
+ color: var(--gy-primary-fg);
544
+ animation: gy-zoom-in var(--gy-duration-fast) var(--gy-ease-spring);
545
+ }
546
+ .gy-checkbox-content {
547
+ display: flex;
548
+ flex-direction: column;
549
+ gap: 2px;
550
+ }
551
+ .gy-checkbox-label {
552
+ font-size: var(--gy-font-size-sm);
553
+ font-weight: var(--gy-font-weight-medium);
554
+ color: var(--gy-text);
555
+ line-height: 1.4;
556
+ }
557
+ .gy-checkbox-description {
558
+ font-size: var(--gy-font-size-xs);
559
+ color: var(--gy-text-subtle);
560
+ }
561
+
562
+ /* src/radiogroup/radiogroup.css */
563
+ .gy-radio-group {
564
+ display: flex;
565
+ flex-direction: column;
566
+ gap: var(--gy-spacing-2);
567
+ }
568
+ .gy-radio-group--horizontal {
569
+ flex-direction: row;
570
+ flex-wrap: wrap;
571
+ }
572
+ .gy-radio-group-label {
573
+ font-size: var(--gy-font-size-sm);
574
+ font-weight: var(--gy-font-weight-semibold);
575
+ color: var(--gy-text);
576
+ margin-bottom: var(--gy-spacing-1);
577
+ }
578
+ .gy-radio {
579
+ display: inline-flex;
580
+ align-items: center;
581
+ gap: var(--gy-spacing-2);
582
+ cursor: pointer;
583
+ }
584
+ .gy-radio--disabled {
585
+ cursor: not-allowed;
586
+ opacity: 0.5;
587
+ }
588
+ .gy-radio-input {
589
+ position: absolute;
590
+ opacity: 0;
591
+ width: 0;
592
+ height: 0;
593
+ }
594
+ .gy-radio-circle {
595
+ display: flex;
596
+ align-items: center;
597
+ justify-content: center;
598
+ width: 1.125rem;
599
+ height: 1.125rem;
600
+ border-radius: 50%;
601
+ border: 2px solid var(--gy-border-strong);
602
+ background: var(--gy-surface);
603
+ flex-shrink: 0;
604
+ transition: border-color var(--gy-duration-fast) var(--gy-ease-in-out), box-shadow var(--gy-duration-fast) var(--gy-ease-in-out);
605
+ }
606
+ .gy-radio:not(.gy-radio--disabled):hover .gy-radio-circle {
607
+ border-color: var(--gy-primary);
608
+ }
609
+ .gy-radio-input:focus-visible + .gy-radio-circle {
610
+ box-shadow: 0 0 0 3px var(--gy-focus-ring);
611
+ border-color: var(--gy-primary);
612
+ }
613
+ .gy-radio-circle--checked {
614
+ border-color: var(--gy-primary);
615
+ }
616
+ .gy-radio-dot {
617
+ width: 0.5rem;
618
+ height: 0.5rem;
619
+ border-radius: 50%;
620
+ background: var(--gy-primary);
621
+ animation: gy-zoom-in var(--gy-duration-fast) var(--gy-ease-spring);
622
+ }
623
+ .gy-radio-label {
624
+ font-size: var(--gy-font-size-sm);
625
+ font-weight: var(--gy-font-weight-medium);
626
+ color: var(--gy-text);
627
+ line-height: 1.4;
628
+ }
629
+
630
+ /* src/toggle/toggle.css */
631
+ .gy-toggle-root {
632
+ display: inline-flex;
633
+ align-items: center;
634
+ gap: var(--gy-spacing-2-5);
635
+ cursor: pointer;
636
+ }
637
+ .gy-toggle-root--disabled {
638
+ cursor: not-allowed;
639
+ opacity: 0.5;
640
+ }
641
+ .gy-toggle-input {
642
+ position: absolute;
643
+ opacity: 0;
644
+ width: 0;
645
+ height: 0;
646
+ }
647
+ .gy-toggle-track {
648
+ position: relative;
649
+ background: var(--gy-border-strong);
650
+ border-radius: var(--gy-radius-full);
651
+ transition: background-color var(--gy-duration-fast) var(--gy-ease-in-out), box-shadow var(--gy-duration-fast) var(--gy-ease-in-out);
652
+ }
653
+ .gy-toggle-track--sm {
654
+ width: 2rem;
655
+ height: 1.125rem;
656
+ }
657
+ .gy-toggle-track--md {
658
+ width: 2.5rem;
659
+ height: 1.375rem;
660
+ }
661
+ .gy-toggle-track--lg {
662
+ width: 3rem;
663
+ height: 1.625rem;
664
+ }
665
+ .gy-toggle-track--checked {
666
+ background: var(--gy-primary);
667
+ }
668
+ .gy-toggle-input:focus-visible ~ .gy-toggle-label,
669
+ .gy-toggle-root:has(.gy-toggle-input:focus-visible) .gy-toggle-track {
670
+ box-shadow: 0 0 0 3px var(--gy-focus-ring);
671
+ }
672
+ .gy-toggle-thumb {
673
+ position: absolute;
674
+ top: 50%;
675
+ transform: translateY(-50%) translateX(2px);
676
+ background: white;
677
+ border-radius: 50%;
678
+ box-shadow: var(--gy-shadow-sm);
679
+ transition: transform var(--gy-duration-normal) var(--gy-ease-spring);
680
+ }
681
+ .gy-toggle-track--sm .gy-toggle-thumb {
682
+ width: 0.875rem;
683
+ height: 0.875rem;
684
+ }
685
+ .gy-toggle-track--md .gy-toggle-thumb {
686
+ width: 1.0625rem;
687
+ height: 1.0625rem;
688
+ }
689
+ .gy-toggle-track--lg .gy-toggle-thumb {
690
+ width: 1.25rem;
691
+ height: 1.25rem;
692
+ }
693
+ .gy-toggle-track--sm.gy-toggle-track--checked .gy-toggle-thumb {
694
+ transform: translateY(-50%) translateX(calc(2rem - 0.875rem - 2px));
695
+ }
696
+ .gy-toggle-track--md.gy-toggle-track--checked .gy-toggle-thumb {
697
+ transform: translateY(-50%) translateX(calc(2.5rem - 1.0625rem - 2px));
698
+ }
699
+ .gy-toggle-track--lg.gy-toggle-track--checked .gy-toggle-thumb {
700
+ transform: translateY(-50%) translateX(calc(3rem - 1.25rem - 2px));
701
+ }
702
+ .gy-toggle-label {
703
+ font-size: var(--gy-font-size-sm);
704
+ font-weight: var(--gy-font-weight-medium);
705
+ color: var(--gy-text);
706
+ }
707
+
708
+ /* src/chips/chips.css */
709
+ .gy-chip {
710
+ display: inline-flex;
711
+ align-items: center;
712
+ gap: var(--gy-spacing-1-5);
713
+ padding: var(--gy-spacing-1) var(--gy-spacing-2-5);
714
+ font-size: var(--gy-font-size-xs);
715
+ font-weight: var(--gy-font-weight-medium);
716
+ border-radius: var(--gy-radius-full);
717
+ border: 1.5px solid transparent;
718
+ cursor: default;
719
+ transition: background-color var(--gy-duration-fast), border-color var(--gy-duration-fast);
720
+ white-space: nowrap;
721
+ user-select: none;
722
+ }
723
+ .gy-chip--sm {
724
+ font-size: 0.65rem;
725
+ padding: 2px var(--gy-spacing-2);
726
+ }
727
+ .gy-chip--md {
728
+ font-size: var(--gy-font-size-xs);
729
+ padding: var(--gy-spacing-1) var(--gy-spacing-2-5);
730
+ }
731
+ .gy-chip--lg {
732
+ font-size: var(--gy-font-size-sm);
733
+ padding: var(--gy-spacing-1-5) var(--gy-spacing-3);
734
+ }
735
+ .gy-chip--solid {
736
+ background: var(--gy-primary);
737
+ color: var(--gy-primary-fg);
738
+ }
739
+ .gy-chip--soft {
740
+ background: var(--gy-primary-subtle);
741
+ color: var(--gy-primary-hover);
742
+ border-color: var(--gy-primary-muted);
743
+ }
744
+ .gy-chip--outline {
745
+ background: transparent;
746
+ color: var(--gy-primary);
747
+ border-color: var(--gy-primary-muted);
748
+ }
749
+ .gy-chip--success {
750
+ background: var(--gy-success-subtle);
751
+ color: var(--gy-success-emphasis);
752
+ border-color: var(--gy-success-muted);
753
+ }
754
+ .gy-chip--warning {
755
+ background: var(--gy-warning-subtle);
756
+ color: var(--gy-warning-emphasis);
757
+ border-color: var(--gy-warning-muted);
758
+ }
759
+ .gy-chip--danger {
760
+ background: var(--gy-danger-subtle);
761
+ color: var(--gy-danger);
762
+ border-color: var(--gy-danger-muted);
763
+ }
764
+ .gy-chip--neutral {
765
+ background: var(--gy-background-muted);
766
+ color: var(--gy-text-muted);
767
+ border-color: var(--gy-border);
768
+ }
769
+ .gy-chip--clickable {
770
+ cursor: pointer;
771
+ }
772
+ .gy-chip--clickable:hover {
773
+ filter: brightness(0.95);
774
+ }
775
+ .gy-chip--clickable:focus-visible {
776
+ outline: 2px solid var(--gy-focus-outline);
777
+ outline-offset: 2px;
778
+ }
779
+ .gy-chip--selected.gy-chip--soft {
780
+ background: var(--gy-primary-muted);
781
+ }
782
+ .gy-chip__remove {
783
+ display: flex;
784
+ align-items: center;
785
+ justify-content: center;
786
+ width: 14px;
787
+ height: 14px;
788
+ border-radius: 50%;
789
+ cursor: pointer;
790
+ opacity: 0.7;
791
+ transition: opacity var(--gy-duration-fast), background var(--gy-duration-fast);
792
+ flex-shrink: 0;
793
+ color: inherit;
794
+ background: none;
795
+ border: none;
796
+ padding: 0;
797
+ }
798
+ .gy-chip__remove:hover {
799
+ opacity: 1;
800
+ background: rgba(0, 0, 0, 0.1);
801
+ }
802
+ .gy-chips-input {
803
+ display: flex;
804
+ flex-wrap: wrap;
805
+ gap: var(--gy-spacing-1-5);
806
+ padding: var(--gy-spacing-2) var(--gy-spacing-3);
807
+ background: var(--gy-surface);
808
+ border: 1.5px solid var(--gy-border);
809
+ border-radius: var(--gy-radius-lg);
810
+ min-height: 2.5rem;
811
+ cursor: text;
812
+ transition: border-color var(--gy-duration-fast), box-shadow var(--gy-duration-fast);
813
+ }
814
+ .gy-chips-input:focus-within {
815
+ border-color: var(--gy-border-focus);
816
+ box-shadow: 0 0 0 3px var(--gy-focus-ring);
817
+ }
818
+ .gy-chips-input__field {
819
+ flex: 1;
820
+ min-width: 80px;
821
+ border: none;
822
+ outline: none;
823
+ background: transparent;
824
+ font-size: var(--gy-font-size-sm);
825
+ color: var(--gy-text);
826
+ font-family: var(--gy-font-sans);
827
+ padding: 2px 0;
828
+ }
829
+ .gy-chips-input__field::placeholder {
830
+ color: var(--gy-text-subtle);
831
+ }
832
+
833
+ /* src/card/card.css */
834
+ .gy-card {
835
+ background: var(--gy-surface);
836
+ border-radius: var(--gy-radius-xl);
837
+ border: 1px solid var(--gy-border);
838
+ overflow: hidden;
839
+ transition: box-shadow var(--gy-duration-normal) var(--gy-ease-in-out);
840
+ }
841
+ .gy-card--elevated {
842
+ border-color: transparent;
843
+ box-shadow: var(--gy-shadow-md);
844
+ }
845
+ .gy-card--elevated:hover {
846
+ box-shadow: var(--gy-shadow-lg);
847
+ }
848
+ .gy-card--outlined {
849
+ border-color: var(--gy-border-strong);
850
+ box-shadow: none;
851
+ }
852
+ .gy-card--filled {
853
+ background: var(--gy-background-subtle);
854
+ border-color: transparent;
855
+ }
856
+ .gy-card--hoverable {
857
+ cursor: pointer;
858
+ }
859
+ .gy-card--hoverable:hover {
860
+ box-shadow: var(--gy-shadow-lg);
861
+ transform: translateY(-1px);
862
+ }
863
+ .gy-card--sm {
864
+ border-radius: var(--gy-radius-lg);
865
+ }
866
+ .gy-card--lg {
867
+ border-radius: var(--gy-radius-2xl);
868
+ }
869
+ .gy-card-header {
870
+ padding: var(--gy-spacing-4) var(--gy-spacing-5);
871
+ border-bottom: 1px solid var(--gy-border);
872
+ }
873
+ .gy-card-body {
874
+ padding: var(--gy-spacing-5);
875
+ }
876
+ .gy-card-body--sm {
877
+ padding: var(--gy-spacing-3);
878
+ }
879
+ .gy-card-body--lg {
880
+ padding: var(--gy-spacing-6);
881
+ }
882
+ .gy-card-footer {
883
+ padding: var(--gy-spacing-4) var(--gy-spacing-5);
884
+ border-top: 1px solid var(--gy-border);
885
+ background: var(--gy-background-subtle);
886
+ }
887
+ .gy-card-info {
888
+ display: flex;
889
+ flex-direction: column;
890
+ gap: var(--gy-spacing-3);
891
+ padding: var(--gy-spacing-5);
892
+ background: var(--gy-surface);
893
+ border-radius: var(--gy-radius-xl);
894
+ border: 1px solid var(--gy-border);
895
+ transition: box-shadow var(--gy-duration-normal);
896
+ }
897
+ .gy-card-info:hover {
898
+ box-shadow: var(--gy-shadow-md);
899
+ }
900
+ .gy-card-info__header {
901
+ display: flex;
902
+ align-items: center;
903
+ justify-content: space-between;
904
+ }
905
+ .gy-card-info__title {
906
+ font-size: var(--gy-font-size-sm);
907
+ font-weight: var(--gy-font-weight-medium);
908
+ color: var(--gy-text-muted);
909
+ }
910
+ .gy-card-info__icon {
911
+ display: flex;
912
+ align-items: center;
913
+ justify-content: center;
914
+ width: 2.5rem;
915
+ height: 2.5rem;
916
+ border-radius: var(--gy-radius-lg);
917
+ background: var(--gy-primary-subtle);
918
+ color: var(--gy-primary);
919
+ }
920
+ .gy-card-info__value {
921
+ font-size: var(--gy-font-size-3xl);
922
+ font-weight: var(--gy-font-weight-bold);
923
+ color: var(--gy-text);
924
+ line-height: 1;
925
+ }
926
+ .gy-card-info__trend {
927
+ display: inline-flex;
928
+ align-items: center;
929
+ gap: var(--gy-spacing-1);
930
+ font-size: var(--gy-font-size-xs);
931
+ font-weight: var(--gy-font-weight-medium);
932
+ padding: 2px var(--gy-spacing-1-5);
933
+ border-radius: var(--gy-radius-full);
934
+ }
935
+ .gy-card-info__trend--up {
936
+ color: var(--gy-success-emphasis);
937
+ background: var(--gy-success-subtle);
938
+ }
939
+ .gy-card-info__trend--down {
940
+ color: var(--gy-danger);
941
+ background: var(--gy-danger-subtle);
942
+ }
943
+ .gy-card-info__footer {
944
+ font-size: var(--gy-font-size-xs);
945
+ color: var(--gy-text-subtle);
946
+ }
947
+
948
+ /* src/spinner/spinner.css */
949
+ .gy-spinner {
950
+ display: inline-flex;
951
+ align-items: center;
952
+ justify-content: center;
953
+ flex-shrink: 0;
954
+ }
955
+ .gy-spinner__circle {
956
+ border-radius: 50%;
957
+ border-style: solid;
958
+ border-color: var(--gy-primary-muted);
959
+ border-top-color: var(--gy-primary);
960
+ animation: gy-spin var(--gy-duration-slower) linear infinite;
961
+ }
962
+ .gy-spinner--xs .gy-spinner__circle {
963
+ width: 1rem;
964
+ height: 1rem;
965
+ border-width: 2px;
966
+ }
967
+ .gy-spinner--sm .gy-spinner__circle {
968
+ width: 1.25rem;
969
+ height: 1.25rem;
970
+ border-width: 2px;
971
+ }
972
+ .gy-spinner--md .gy-spinner__circle {
973
+ width: 1.5rem;
974
+ height: 1.5rem;
975
+ border-width: 2.5px;
976
+ }
977
+ .gy-spinner--lg .gy-spinner__circle {
978
+ width: 2rem;
979
+ height: 2rem;
980
+ border-width: 3px;
981
+ }
982
+ .gy-spinner--xl .gy-spinner__circle {
983
+ width: 3rem;
984
+ height: 3rem;
985
+ border-width: 4px;
986
+ }
987
+ .gy-spinner--primary .gy-spinner__circle {
988
+ border-color: var(--gy-primary-muted);
989
+ border-top-color: var(--gy-primary);
990
+ }
991
+ .gy-spinner--white .gy-spinner__circle {
992
+ border-color: rgba(255, 255, 255, 0.3);
993
+ border-top-color: #ffffff;
994
+ }
995
+ .gy-spinner--neutral .gy-spinner__circle {
996
+ border-color: var(--gy-border);
997
+ border-top-color: var(--gy-text-muted);
998
+ }
999
+ .gy-spinner__label {
1000
+ margin-top: var(--gy-spacing-2);
1001
+ font-size: var(--gy-font-size-xs);
1002
+ color: var(--gy-text-subtle);
1003
+ text-align: center;
1004
+ }
1005
+ .gy-spinner-container {
1006
+ display: inline-flex;
1007
+ flex-direction: column;
1008
+ align-items: center;
1009
+ }
1010
+
1011
+ /* src/progressbar/progressbar.css */
1012
+ .gy-progress {
1013
+ display: flex;
1014
+ flex-direction: column;
1015
+ gap: var(--gy-spacing-1-5);
1016
+ width: 100%;
1017
+ }
1018
+ .gy-progress-header {
1019
+ display: flex;
1020
+ justify-content: space-between;
1021
+ align-items: center;
1022
+ }
1023
+ .gy-progress-label {
1024
+ font-size: var(--gy-font-size-sm);
1025
+ font-weight: var(--gy-font-weight-medium);
1026
+ color: var(--gy-text);
1027
+ }
1028
+ .gy-progress-value {
1029
+ font-size: var(--gy-font-size-sm);
1030
+ color: var(--gy-text-muted);
1031
+ font-weight: var(--gy-font-weight-medium);
1032
+ }
1033
+ .gy-progress-track {
1034
+ background: var(--gy-background-muted);
1035
+ border-radius: var(--gy-radius-full);
1036
+ overflow: hidden;
1037
+ }
1038
+ .gy-progress-track--xs {
1039
+ height: 0.25rem;
1040
+ }
1041
+ .gy-progress-track--sm {
1042
+ height: 0.375rem;
1043
+ }
1044
+ .gy-progress-track--md {
1045
+ height: 0.5rem;
1046
+ }
1047
+ .gy-progress-track--lg {
1048
+ height: 0.75rem;
1049
+ }
1050
+ .gy-progress-track--xl {
1051
+ height: 1rem;
1052
+ }
1053
+ .gy-progress-fill {
1054
+ height: 100%;
1055
+ border-radius: var(--gy-radius-full);
1056
+ background: var(--gy-primary);
1057
+ transition: width var(--gy-duration-slow) var(--gy-ease-out);
1058
+ }
1059
+ .gy-progress-fill--success {
1060
+ background: var(--gy-success);
1061
+ }
1062
+ .gy-progress-fill--warning {
1063
+ background: var(--gy-warning);
1064
+ }
1065
+ .gy-progress-fill--danger {
1066
+ background: var(--gy-danger);
1067
+ }
1068
+ .gy-progress-fill--gradient {
1069
+ background: var(--gy-gradient-primary);
1070
+ }
1071
+ .gy-progress-fill--striped {
1072
+ background-image:
1073
+ repeating-linear-gradient(
1074
+ -45deg,
1075
+ transparent,
1076
+ transparent 8px,
1077
+ rgba(255, 255, 255, 0.2) 8px,
1078
+ rgba(255, 255, 255, 0.2) 16px);
1079
+ background-size: 32px 32px;
1080
+ }
1081
+ .gy-progress-fill--indeterminate {
1082
+ width: 40% !important;
1083
+ animation: gy-progress-indeterminate 1.5s var(--gy-ease-in-out) infinite;
1084
+ }
1085
+ @keyframes gy-progress-indeterminate {
1086
+ 0% {
1087
+ transform: translateX(-100%);
1088
+ }
1089
+ 100% {
1090
+ transform: translateX(250%);
1091
+ }
1092
+ }
1093
+
1094
+ /* src/skeleton/skeleton.css */
1095
+ .gy-skeleton {
1096
+ background: var(--gy-skeleton-base);
1097
+ border-radius: var(--gy-radius-md);
1098
+ overflow: hidden;
1099
+ position: relative;
1100
+ }
1101
+ .gy-skeleton--wave::after {
1102
+ content: "";
1103
+ position: absolute;
1104
+ inset: 0;
1105
+ background:
1106
+ linear-gradient(
1107
+ 90deg,
1108
+ transparent 25%,
1109
+ var(--gy-border) 50%,
1110
+ transparent 75%);
1111
+ background-size: 200% 100%;
1112
+ animation: gy-wave 1.5s var(--gy-ease) infinite;
1113
+ }
1114
+ .gy-skeleton--pulse {
1115
+ animation: gy-pulse 1.5s var(--gy-ease-in-out) infinite;
1116
+ }
1117
+ .gy-skeleton--text {
1118
+ height: 1em;
1119
+ border-radius: var(--gy-radius-sm);
1120
+ }
1121
+ .gy-skeleton--circle {
1122
+ border-radius: 50%;
1123
+ }
1124
+ .gy-skeleton--rect {
1125
+ border-radius: var(--gy-radius-md);
1126
+ }
1127
+ .gy-skeleton--card {
1128
+ border-radius: var(--gy-radius-xl);
1129
+ }
1130
+ .gy-skeleton--w-full {
1131
+ width: 100%;
1132
+ }
1133
+ .gy-skeleton--w-3-4 {
1134
+ width: 75%;
1135
+ }
1136
+ .gy-skeleton--w-1-2 {
1137
+ width: 50%;
1138
+ }
1139
+ .gy-skeleton--w-1-4 {
1140
+ width: 25%;
1141
+ }
1142
+
1143
+ /* src/banner/banner.css */
1144
+ .gy-banner {
1145
+ display: flex;
1146
+ align-items: flex-start;
1147
+ gap: var(--gy-spacing-3);
1148
+ padding: var(--gy-spacing-3) var(--gy-spacing-4);
1149
+ border-radius: var(--gy-radius-lg);
1150
+ border: 1px solid transparent;
1151
+ position: relative;
1152
+ }
1153
+ .gy-banner--inline {
1154
+ border-radius: var(--gy-radius-lg);
1155
+ }
1156
+ .gy-banner--full {
1157
+ border-radius: 0;
1158
+ }
1159
+ .gy-banner--info {
1160
+ background: var(--gy-info-subtle);
1161
+ border-color: var(--gy-info-muted);
1162
+ color: var(--gy-info-emphasis);
1163
+ }
1164
+ .gy-banner--success {
1165
+ background: var(--gy-success-subtle);
1166
+ border-color: var(--gy-success-muted);
1167
+ color: var(--gy-success-emphasis);
1168
+ }
1169
+ .gy-banner--warning {
1170
+ background: var(--gy-warning-subtle);
1171
+ border-color: var(--gy-warning-muted);
1172
+ color: var(--gy-warning-emphasis);
1173
+ }
1174
+ .gy-banner--danger {
1175
+ background: var(--gy-danger-subtle);
1176
+ border-color: var(--gy-danger-muted);
1177
+ color: var(--gy-danger-emphasis);
1178
+ }
1179
+ .gy-banner--neutral {
1180
+ background: var(--gy-background-muted);
1181
+ border-color: var(--gy-border);
1182
+ color: var(--gy-text-muted);
1183
+ }
1184
+ .gy-banner__icon {
1185
+ flex-shrink: 0;
1186
+ margin-top: 1px;
1187
+ }
1188
+ .gy-banner__content {
1189
+ flex: 1;
1190
+ }
1191
+ .gy-banner__title {
1192
+ font-size: var(--gy-font-size-sm);
1193
+ font-weight: var(--gy-font-weight-semibold);
1194
+ line-height: 1.4;
1195
+ }
1196
+ .gy-banner__description {
1197
+ font-size: var(--gy-font-size-sm);
1198
+ line-height: 1.5;
1199
+ opacity: 0.9;
1200
+ margin-top: 2px;
1201
+ }
1202
+ .gy-banner__close {
1203
+ flex-shrink: 0;
1204
+ display: flex;
1205
+ align-items: center;
1206
+ justify-content: center;
1207
+ width: 1.5rem;
1208
+ height: 1.5rem;
1209
+ border-radius: var(--gy-radius-md);
1210
+ cursor: pointer;
1211
+ opacity: 0.7;
1212
+ transition: opacity var(--gy-duration-fast), background var(--gy-duration-fast);
1213
+ color: inherit;
1214
+ }
1215
+ .gy-banner__close:hover {
1216
+ opacity: 1;
1217
+ background: rgba(0, 0, 0, 0.08);
1218
+ }
1219
+
1220
+ /* src/breadcrumb/breadcrumb.css */
1221
+ .gy-breadcrumb {
1222
+ display: flex;
1223
+ align-items: center;
1224
+ flex-wrap: wrap;
1225
+ gap: 0;
1226
+ list-style: none;
1227
+ padding: 0;
1228
+ margin: 0;
1229
+ font-size: var(--gy-font-size-sm);
1230
+ }
1231
+ .gy-breadcrumb-item {
1232
+ display: inline-flex;
1233
+ align-items: center;
1234
+ gap: var(--gy-spacing-1-5);
1235
+ }
1236
+ .gy-breadcrumb-link {
1237
+ color: var(--gy-text-muted);
1238
+ text-decoration: none;
1239
+ transition: color var(--gy-duration-fast);
1240
+ border-radius: var(--gy-radius-sm);
1241
+ padding: 1px 2px;
1242
+ }
1243
+ .gy-breadcrumb-link:hover {
1244
+ color: var(--gy-primary);
1245
+ }
1246
+ .gy-breadcrumb-link:focus-visible {
1247
+ outline: 2px solid var(--gy-focus-outline);
1248
+ outline-offset: 2px;
1249
+ }
1250
+ .gy-breadcrumb-current {
1251
+ color: var(--gy-text);
1252
+ font-weight: var(--gy-font-weight-medium);
1253
+ }
1254
+ .gy-breadcrumb-separator {
1255
+ color: var(--gy-text-subtle);
1256
+ display: flex;
1257
+ align-items: center;
1258
+ user-select: none;
1259
+ margin: 0 var(--gy-spacing-1);
1260
+ }
1261
+ .gy-breadcrumb-ellipsis {
1262
+ color: var(--gy-text-subtle);
1263
+ cursor: pointer;
1264
+ padding: 1px var(--gy-spacing-1);
1265
+ border-radius: var(--gy-radius-sm);
1266
+ transition: color var(--gy-duration-fast), background var(--gy-duration-fast);
1267
+ }
1268
+ .gy-breadcrumb-ellipsis:hover {
1269
+ color: var(--gy-text);
1270
+ background: var(--gy-background-muted);
1271
+ }
1272
+
1273
+ /* src/accordion/accordion.css */
1274
+ .gy-accordion {
1275
+ display: flex;
1276
+ flex-direction: column;
1277
+ gap: var(--gy-spacing-1);
1278
+ width: 100%;
1279
+ }
1280
+ .gy-accordion-item {
1281
+ border: 1px solid var(--gy-border);
1282
+ border-radius: var(--gy-radius-lg);
1283
+ overflow: hidden;
1284
+ }
1285
+ .gy-accordion-item--flush {
1286
+ border-radius: 0;
1287
+ border-left: none;
1288
+ border-right: none;
1289
+ border-top: none;
1290
+ }
1291
+ .gy-accordion-trigger {
1292
+ display: flex;
1293
+ align-items: center;
1294
+ justify-content: space-between;
1295
+ width: 100%;
1296
+ padding: var(--gy-spacing-4) var(--gy-spacing-4);
1297
+ background: var(--gy-surface);
1298
+ border: none;
1299
+ cursor: pointer;
1300
+ text-align: left;
1301
+ gap: var(--gy-spacing-3);
1302
+ transition: background-color var(--gy-duration-fast);
1303
+ }
1304
+ .gy-accordion-trigger:hover {
1305
+ background: var(--gy-background-subtle);
1306
+ }
1307
+ .gy-accordion-trigger:focus-visible {
1308
+ outline: 2px solid var(--gy-focus-outline);
1309
+ outline-offset: -2px;
1310
+ }
1311
+ .gy-accordion-trigger--open {
1312
+ background: var(--gy-background-subtle);
1313
+ }
1314
+ .gy-accordion-title {
1315
+ font-size: var(--gy-font-size-sm);
1316
+ font-weight: var(--gy-font-weight-semibold);
1317
+ color: var(--gy-text);
1318
+ flex: 1;
1319
+ }
1320
+ .gy-accordion-icon {
1321
+ flex-shrink: 0;
1322
+ color: var(--gy-text-subtle);
1323
+ transition: transform var(--gy-duration-normal) var(--gy-ease-spring);
1324
+ }
1325
+ .gy-accordion-icon--open {
1326
+ transform: rotate(180deg);
1327
+ }
1328
+ .gy-accordion-panel {
1329
+ overflow: hidden;
1330
+ background: var(--gy-surface);
1331
+ }
1332
+ .gy-accordion-panel-inner {
1333
+ padding: 0 var(--gy-spacing-4) var(--gy-spacing-4);
1334
+ font-size: var(--gy-font-size-sm);
1335
+ color: var(--gy-text-muted);
1336
+ line-height: var(--gy-line-height-relaxed);
1337
+ border-top: 1px solid var(--gy-border);
1338
+ padding-top: var(--gy-spacing-3);
1339
+ }
1340
+
1341
+ /* src/tab/tab.css */
1342
+ .gy-tabs {
1343
+ display: flex;
1344
+ flex-direction: column;
1345
+ }
1346
+ .gy-tabs--vertical {
1347
+ flex-direction: row;
1348
+ gap: var(--gy-spacing-4);
1349
+ }
1350
+ .gy-tabs-list {
1351
+ position: relative;
1352
+ display: flex;
1353
+ align-items: center;
1354
+ border-bottom: 2px solid var(--gy-border);
1355
+ overflow-x: auto;
1356
+ scrollbar-width: none;
1357
+ }
1358
+ .gy-tabs-list::-webkit-scrollbar {
1359
+ display: none;
1360
+ }
1361
+ .gy-tabs--vertical .gy-tabs-list {
1362
+ flex-direction: column;
1363
+ border-bottom: none;
1364
+ border-right: 2px solid var(--gy-border);
1365
+ min-width: 160px;
1366
+ align-items: stretch;
1367
+ }
1368
+ .gy-tabs-trigger {
1369
+ display: inline-flex;
1370
+ align-items: center;
1371
+ gap: var(--gy-spacing-2);
1372
+ padding: var(--gy-spacing-2-5) var(--gy-spacing-4);
1373
+ font-size: var(--gy-font-size-sm);
1374
+ font-weight: var(--gy-font-weight-medium);
1375
+ color: var(--gy-text-muted);
1376
+ white-space: nowrap;
1377
+ cursor: pointer;
1378
+ background: none;
1379
+ border: none;
1380
+ position: relative;
1381
+ transition: color var(--gy-duration-fast);
1382
+ border-bottom: 2px solid transparent;
1383
+ margin-bottom: -2px;
1384
+ }
1385
+ .gy-tabs--vertical .gy-tabs-trigger {
1386
+ border-bottom: none;
1387
+ border-right: 2px solid transparent;
1388
+ margin-bottom: 0;
1389
+ margin-right: -2px;
1390
+ border-radius: var(--gy-radius-md) 0 0 var(--gy-radius-md);
1391
+ }
1392
+ .gy-tabs-trigger:hover {
1393
+ color: var(--gy-text);
1394
+ }
1395
+ .gy-tabs-trigger:focus-visible {
1396
+ outline: none;
1397
+ color: var(--gy-primary);
1398
+ }
1399
+ .gy-tabs-trigger--active {
1400
+ color: var(--gy-primary) !important;
1401
+ border-color: var(--gy-primary);
1402
+ }
1403
+ .gy-tabs-trigger:disabled {
1404
+ opacity: 0.4;
1405
+ cursor: not-allowed;
1406
+ }
1407
+ .gy-tabs-trigger-badge {
1408
+ display: inline-flex;
1409
+ align-items: center;
1410
+ justify-content: center;
1411
+ min-width: 18px;
1412
+ height: 18px;
1413
+ padding: 0 5px;
1414
+ font-size: 0.65rem;
1415
+ font-weight: var(--gy-font-weight-semibold);
1416
+ background: var(--gy-primary-muted);
1417
+ color: var(--gy-primary-hover);
1418
+ border-radius: var(--gy-radius-full);
1419
+ }
1420
+ .gy-tabs-panel {
1421
+ padding: var(--gy-spacing-4) 0;
1422
+ animation: gy-fade-in var(--gy-duration-normal) var(--gy-ease-out);
1423
+ }
1424
+ .gy-tabs--vertical .gy-tabs-panel {
1425
+ flex: 1;
1426
+ padding: 0 var(--gy-spacing-4);
1427
+ }
1428
+
1429
+ /* src/modal/modal.css */
1430
+ .gy-modal-backdrop {
1431
+ position: fixed;
1432
+ inset: 0;
1433
+ background: var(--gy-overlay);
1434
+ backdrop-filter: blur(4px);
1435
+ z-index: var(--gy-z-modal);
1436
+ display: flex;
1437
+ align-items: center;
1438
+ justify-content: center;
1439
+ padding: var(--gy-spacing-4);
1440
+ animation: gy-fade-in var(--gy-duration-normal) var(--gy-ease-out);
1441
+ }
1442
+ .gy-modal {
1443
+ background: var(--gy-surface);
1444
+ border-radius: var(--gy-radius-2xl);
1445
+ box-shadow: var(--gy-shadow-modal);
1446
+ display: flex;
1447
+ flex-direction: column;
1448
+ max-height: calc(100vh - 2rem);
1449
+ width: 100%;
1450
+ animation: gy-zoom-in var(--gy-duration-normal) var(--gy-ease-spring);
1451
+ outline: none;
1452
+ }
1453
+ .gy-modal--xs {
1454
+ max-width: 20rem;
1455
+ }
1456
+ .gy-modal--sm {
1457
+ max-width: 28rem;
1458
+ }
1459
+ .gy-modal--md {
1460
+ max-width: 36rem;
1461
+ }
1462
+ .gy-modal--lg {
1463
+ max-width: 48rem;
1464
+ }
1465
+ .gy-modal--xl {
1466
+ max-width: 64rem;
1467
+ }
1468
+ .gy-modal--full {
1469
+ max-width: calc(100vw - 2rem);
1470
+ max-height: calc(100vh - 2rem);
1471
+ }
1472
+ .gy-modal-header {
1473
+ display: flex;
1474
+ align-items: center;
1475
+ justify-content: space-between;
1476
+ padding: var(--gy-spacing-5) var(--gy-spacing-6);
1477
+ border-bottom: 1px solid var(--gy-border);
1478
+ flex-shrink: 0;
1479
+ }
1480
+ .gy-modal-title {
1481
+ font-size: var(--gy-font-size-lg);
1482
+ font-weight: var(--gy-font-weight-semibold);
1483
+ color: var(--gy-text);
1484
+ }
1485
+ .gy-modal-close {
1486
+ display: flex;
1487
+ align-items: center;
1488
+ justify-content: center;
1489
+ width: 2rem;
1490
+ height: 2rem;
1491
+ border-radius: var(--gy-radius-md);
1492
+ color: var(--gy-text-subtle);
1493
+ cursor: pointer;
1494
+ background: none;
1495
+ border: none;
1496
+ transition: color var(--gy-duration-fast), background var(--gy-duration-fast);
1497
+ }
1498
+ .gy-modal-close:hover {
1499
+ color: var(--gy-text);
1500
+ background: var(--gy-background-muted);
1501
+ }
1502
+ .gy-modal-body {
1503
+ flex: 1;
1504
+ overflow-y: auto;
1505
+ padding: var(--gy-spacing-6);
1506
+ }
1507
+ .gy-modal-footer {
1508
+ display: flex;
1509
+ align-items: center;
1510
+ justify-content: flex-end;
1511
+ gap: var(--gy-spacing-3);
1512
+ padding: var(--gy-spacing-4) var(--gy-spacing-6);
1513
+ border-top: 1px solid var(--gy-border);
1514
+ flex-shrink: 0;
1515
+ }
1516
+
1517
+ /* src/dropdown/dropdown.css */
1518
+ .gy-dropdown-root {
1519
+ position: relative;
1520
+ display: flex;
1521
+ flex-direction: column;
1522
+ gap: var(--gy-spacing-1-5);
1523
+ width: 100%;
1524
+ }
1525
+ .gy-dropdown-trigger {
1526
+ display: flex;
1527
+ align-items: center;
1528
+ justify-content: space-between;
1529
+ gap: var(--gy-spacing-2);
1530
+ padding: var(--gy-spacing-2-5) var(--gy-spacing-3);
1531
+ background: var(--gy-surface);
1532
+ border: 1.5px solid var(--gy-border);
1533
+ border-radius: var(--gy-radius-lg);
1534
+ cursor: pointer;
1535
+ transition: border-color var(--gy-duration-fast), box-shadow var(--gy-duration-fast);
1536
+ font-size: var(--gy-font-size-sm);
1537
+ color: var(--gy-text);
1538
+ min-height: 2.5rem;
1539
+ text-align: left;
1540
+ }
1541
+ .gy-dropdown-trigger:focus,
1542
+ .gy-dropdown-trigger--open {
1543
+ border-color: var(--gy-border-focus);
1544
+ box-shadow: 0 0 0 3px var(--gy-focus-ring);
1545
+ outline: none;
1546
+ }
1547
+ .gy-dropdown-trigger--disabled {
1548
+ opacity: 0.5;
1549
+ cursor: not-allowed;
1550
+ }
1551
+ .gy-dropdown-trigger--placeholder {
1552
+ color: var(--gy-text-subtle);
1553
+ }
1554
+ .gy-dropdown-chevron {
1555
+ flex-shrink: 0;
1556
+ color: var(--gy-text-subtle);
1557
+ transition: transform var(--gy-duration-normal) var(--gy-ease-spring);
1558
+ }
1559
+ .gy-dropdown-chevron--open {
1560
+ transform: rotate(180deg);
1561
+ }
1562
+ .gy-dropdown-menu {
1563
+ position: absolute;
1564
+ top: calc(100% + 4px);
1565
+ left: 0;
1566
+ right: 0;
1567
+ background: var(--gy-surface);
1568
+ border: 1px solid var(--gy-border);
1569
+ border-radius: var(--gy-radius-xl);
1570
+ box-shadow: var(--gy-shadow-dropdown);
1571
+ z-index: var(--gy-z-dropdown);
1572
+ overflow: hidden;
1573
+ animation: gy-slide-in-up var(--gy-duration-fast) var(--gy-ease-out);
1574
+ }
1575
+ .gy-dropdown-search {
1576
+ padding: var(--gy-spacing-2) var(--gy-spacing-3);
1577
+ border-bottom: 1px solid var(--gy-border);
1578
+ }
1579
+ .gy-dropdown-search-input {
1580
+ width: 100%;
1581
+ padding: var(--gy-spacing-1-5) var(--gy-spacing-2);
1582
+ font-size: var(--gy-font-size-sm);
1583
+ border: 1px solid var(--gy-border);
1584
+ border-radius: var(--gy-radius-md);
1585
+ background: var(--gy-background-subtle);
1586
+ color: var(--gy-text);
1587
+ outline: none;
1588
+ font-family: var(--gy-font-sans);
1589
+ }
1590
+ .gy-dropdown-search-input:focus {
1591
+ border-color: var(--gy-border-focus);
1592
+ }
1593
+ .gy-dropdown-options {
1594
+ max-height: 200px;
1595
+ overflow-y: auto;
1596
+ padding: var(--gy-spacing-1) 0;
1597
+ }
1598
+ .gy-dropdown-group-label {
1599
+ padding: var(--gy-spacing-2) var(--gy-spacing-3) var(--gy-spacing-1);
1600
+ font-size: var(--gy-font-size-xs);
1601
+ font-weight: var(--gy-font-weight-semibold);
1602
+ color: var(--gy-text-subtle);
1603
+ letter-spacing: var(--gy-letter-spacing-wider);
1604
+ text-transform: uppercase;
1605
+ }
1606
+ .gy-dropdown-option {
1607
+ display: flex;
1608
+ align-items: center;
1609
+ gap: var(--gy-spacing-2);
1610
+ padding: var(--gy-spacing-2) var(--gy-spacing-3);
1611
+ font-size: var(--gy-font-size-sm);
1612
+ color: var(--gy-text);
1613
+ cursor: pointer;
1614
+ transition: background-color var(--gy-duration-fast);
1615
+ }
1616
+ .gy-dropdown-option:hover {
1617
+ background: var(--gy-background-subtle);
1618
+ }
1619
+ .gy-dropdown-option--selected {
1620
+ color: var(--gy-primary);
1621
+ font-weight: var(--gy-font-weight-medium);
1622
+ background: var(--gy-primary-subtle);
1623
+ }
1624
+ .gy-dropdown-option--focused {
1625
+ background: var(--gy-background-muted);
1626
+ }
1627
+ .gy-dropdown-option--disabled {
1628
+ opacity: 0.4;
1629
+ cursor: not-allowed;
1630
+ pointer-events: none;
1631
+ }
1632
+ .gy-dropdown-check {
1633
+ margin-left: auto;
1634
+ color: var(--gy-primary);
1635
+ }
1636
+ .gy-dropdown-empty {
1637
+ padding: var(--gy-spacing-3);
1638
+ text-align: center;
1639
+ font-size: var(--gy-font-size-sm);
1640
+ color: var(--gy-text-subtle);
1641
+ }
1642
+
1643
+ /* src/menu/menu.css */
1644
+ .gy-tooltip-wrapper {
1645
+ position: relative;
1646
+ display: inline-flex;
1647
+ }
1648
+ .gy-tooltip {
1649
+ position: absolute;
1650
+ z-index: var(--gy-z-tooltip);
1651
+ background: var(--gy-text);
1652
+ color: var(--gy-text-inverse);
1653
+ font-size: var(--gy-font-size-xs);
1654
+ font-weight: var(--gy-font-weight-medium);
1655
+ padding: var(--gy-spacing-1-5) var(--gy-spacing-2-5);
1656
+ border-radius: var(--gy-radius-md);
1657
+ white-space: nowrap;
1658
+ pointer-events: none;
1659
+ box-shadow: var(--gy-shadow-sm);
1660
+ animation: gy-fade-in var(--gy-duration-fast) var(--gy-ease-out);
1661
+ max-width: 240px;
1662
+ word-wrap: break-word;
1663
+ white-space: normal;
1664
+ text-align: center;
1665
+ line-height: 1.4;
1666
+ }
1667
+ .gy-tooltip::after {
1668
+ content: "";
1669
+ position: absolute;
1670
+ border: 5px solid transparent;
1671
+ }
1672
+ .gy-tooltip--top {
1673
+ bottom: calc(100% + 8px);
1674
+ left: 50%;
1675
+ transform: translateX(-50%);
1676
+ }
1677
+ .gy-tooltip--top::after {
1678
+ top: 100%;
1679
+ left: 50%;
1680
+ transform: translateX(-50%);
1681
+ border-top-color: var(--gy-text);
1682
+ }
1683
+ .gy-tooltip--bottom {
1684
+ top: calc(100% + 8px);
1685
+ left: 50%;
1686
+ transform: translateX(-50%);
1687
+ }
1688
+ .gy-tooltip--bottom::after {
1689
+ bottom: 100%;
1690
+ left: 50%;
1691
+ transform: translateX(-50%);
1692
+ border-bottom-color: var(--gy-text);
1693
+ }
1694
+ .gy-tooltip--left {
1695
+ right: calc(100% + 8px);
1696
+ top: 50%;
1697
+ transform: translateY(-50%);
1698
+ }
1699
+ .gy-tooltip--left::after {
1700
+ left: 100%;
1701
+ top: 50%;
1702
+ transform: translateY(-50%);
1703
+ border-left-color: var(--gy-text);
1704
+ }
1705
+ .gy-tooltip--right {
1706
+ left: calc(100% + 8px);
1707
+ top: 50%;
1708
+ transform: translateY(-50%);
1709
+ }
1710
+ .gy-tooltip--right::after {
1711
+ right: 100%;
1712
+ top: 50%;
1713
+ transform: translateY(-50%);
1714
+ border-right-color: var(--gy-text);
1715
+ }
1716
+ .gy-menu {
1717
+ background: var(--gy-surface);
1718
+ border: 1px solid var(--gy-border);
1719
+ border-radius: var(--gy-radius-xl);
1720
+ box-shadow: var(--gy-shadow-dropdown);
1721
+ padding: var(--gy-spacing-1) 0;
1722
+ min-width: 180px;
1723
+ z-index: var(--gy-z-dropdown);
1724
+ animation: gy-slide-in-up var(--gy-duration-fast) var(--gy-ease-out);
1725
+ }
1726
+ .gy-menu--absolute {
1727
+ position: absolute;
1728
+ }
1729
+ .gy-menu-item {
1730
+ display: flex;
1731
+ align-items: center;
1732
+ gap: var(--gy-spacing-2-5);
1733
+ padding: var(--gy-spacing-2) var(--gy-spacing-4);
1734
+ font-size: var(--gy-font-size-sm);
1735
+ color: var(--gy-text);
1736
+ cursor: pointer;
1737
+ transition: background-color var(--gy-duration-fast);
1738
+ border: none;
1739
+ background: none;
1740
+ width: 100%;
1741
+ text-align: left;
1742
+ border-radius: 0;
1743
+ }
1744
+ .gy-menu-item:hover {
1745
+ background: var(--gy-background-subtle);
1746
+ }
1747
+ .gy-menu-item:focus-visible {
1748
+ outline: none;
1749
+ background: var(--gy-background-muted);
1750
+ }
1751
+ .gy-menu-item--danger {
1752
+ color: var(--gy-danger);
1753
+ }
1754
+ .gy-menu-item--danger:hover {
1755
+ background: var(--gy-danger-subtle);
1756
+ }
1757
+ .gy-menu-item--disabled {
1758
+ opacity: 0.4;
1759
+ cursor: not-allowed;
1760
+ pointer-events: none;
1761
+ }
1762
+ .gy-menu-item__icon {
1763
+ display: flex;
1764
+ align-items: center;
1765
+ flex-shrink: 0;
1766
+ color: var(--gy-text-subtle);
1767
+ }
1768
+ .gy-menu-item--danger .gy-menu-item__icon {
1769
+ color: var(--gy-danger);
1770
+ }
1771
+ .gy-menu-item__badge {
1772
+ margin-left: auto;
1773
+ font-size: var(--gy-font-size-xs);
1774
+ color: var(--gy-text-subtle);
1775
+ }
1776
+ .gy-menu-separator {
1777
+ height: 1px;
1778
+ background: var(--gy-divider);
1779
+ margin: var(--gy-spacing-1) 0;
1780
+ }
1781
+ .gy-menu-group-label {
1782
+ padding: var(--gy-spacing-2) var(--gy-spacing-4) var(--gy-spacing-1);
1783
+ font-size: var(--gy-font-size-xs);
1784
+ font-weight: var(--gy-font-weight-semibold);
1785
+ color: var(--gy-text-subtle);
1786
+ letter-spacing: var(--gy-letter-spacing-wider);
1787
+ text-transform: uppercase;
1788
+ }
1789
+ .gy-menu-trigger {
1790
+ position: relative;
1791
+ display: inline-flex;
1792
+ }
1793
+
1794
+ /* src/toaster/toaster.css */
1795
+ .gy-toaster {
1796
+ position: fixed;
1797
+ z-index: var(--gy-z-toast);
1798
+ display: flex;
1799
+ flex-direction: column;
1800
+ gap: var(--gy-spacing-2);
1801
+ pointer-events: none;
1802
+ padding: var(--gy-spacing-4);
1803
+ }
1804
+ .gy-toaster--top-right {
1805
+ top: 0;
1806
+ right: 0;
1807
+ align-items: flex-end;
1808
+ }
1809
+ .gy-toaster--top-left {
1810
+ top: 0;
1811
+ left: 0;
1812
+ align-items: flex-start;
1813
+ }
1814
+ .gy-toaster--top-center {
1815
+ top: 0;
1816
+ left: 50%;
1817
+ transform: translateX(-50%);
1818
+ align-items: center;
1819
+ }
1820
+ .gy-toaster--bottom-right {
1821
+ bottom: 0;
1822
+ right: 0;
1823
+ align-items: flex-end;
1824
+ flex-direction: column-reverse;
1825
+ }
1826
+ .gy-toaster--bottom-left {
1827
+ bottom: 0;
1828
+ left: 0;
1829
+ align-items: flex-start;
1830
+ flex-direction: column-reverse;
1831
+ }
1832
+ .gy-toaster--bottom-center {
1833
+ bottom: 0;
1834
+ left: 50%;
1835
+ transform: translateX(-50%);
1836
+ align-items: center;
1837
+ flex-direction: column-reverse;
1838
+ }
1839
+ .gy-toast {
1840
+ display: flex;
1841
+ align-items: flex-start;
1842
+ gap: var(--gy-spacing-3);
1843
+ padding: var(--gy-spacing-3) var(--gy-spacing-4);
1844
+ background: var(--gy-surface);
1845
+ border-radius: var(--gy-radius-xl);
1846
+ box-shadow: var(--gy-shadow-lg);
1847
+ border: 1px solid var(--gy-border);
1848
+ min-width: 280px;
1849
+ max-width: 380px;
1850
+ pointer-events: all;
1851
+ animation: gy-slide-toast-in-right var(--gy-duration-normal) var(--gy-ease-spring);
1852
+ position: relative;
1853
+ overflow: hidden;
1854
+ }
1855
+ .gy-toast--left {
1856
+ animation: gy-slide-in-left var(--gy-duration-normal) var(--gy-ease-spring);
1857
+ }
1858
+ .gy-toast-accent {
1859
+ position: absolute;
1860
+ left: 0;
1861
+ top: 0;
1862
+ bottom: 0;
1863
+ width: 4px;
1864
+ border-radius: var(--gy-radius-lg) 0 0 var(--gy-radius-lg);
1865
+ }
1866
+ .gy-toast--success .gy-toast-accent {
1867
+ background: var(--gy-success);
1868
+ }
1869
+ .gy-toast--error .gy-toast-accent {
1870
+ background: var(--gy-danger);
1871
+ }
1872
+ .gy-toast--warning .gy-toast-accent {
1873
+ background: var(--gy-warning);
1874
+ }
1875
+ .gy-toast--info .gy-toast-accent {
1876
+ background: var(--gy-info);
1877
+ }
1878
+ .gy-toast--loading .gy-toast-accent {
1879
+ background: var(--gy-primary);
1880
+ }
1881
+ .gy-toast-icon {
1882
+ flex-shrink: 0;
1883
+ margin-left: var(--gy-spacing-1);
1884
+ }
1885
+ .gy-toast-content {
1886
+ flex: 1;
1887
+ }
1888
+ .gy-toast-title {
1889
+ font-size: var(--gy-font-size-sm);
1890
+ font-weight: var(--gy-font-weight-semibold);
1891
+ color: var(--gy-text);
1892
+ line-height: 1.4;
1893
+ }
1894
+ .gy-toast-description {
1895
+ font-size: var(--gy-font-size-xs);
1896
+ color: var(--gy-text-muted);
1897
+ margin-top: 2px;
1898
+ line-height: 1.5;
1899
+ }
1900
+ .gy-toast-close {
1901
+ display: flex;
1902
+ align-items: center;
1903
+ justify-content: center;
1904
+ width: 1.5rem;
1905
+ height: 1.5rem;
1906
+ border-radius: var(--gy-radius-md);
1907
+ flex-shrink: 0;
1908
+ color: var(--gy-text-subtle);
1909
+ cursor: pointer;
1910
+ background: none;
1911
+ border: none;
1912
+ transition: color var(--gy-duration-fast), background var(--gy-duration-fast);
1913
+ margin-top: -2px;
1914
+ }
1915
+ .gy-toast-close:hover {
1916
+ color: var(--gy-text);
1917
+ background: var(--gy-background-muted);
1918
+ }
1919
+ .gy-toast-progress {
1920
+ position: absolute;
1921
+ bottom: 0;
1922
+ left: 0;
1923
+ right: 0;
1924
+ height: 3px;
1925
+ background: var(--gy-primary-muted);
1926
+ border-radius: 0 0 var(--gy-radius-xl) var(--gy-radius-xl);
1927
+ }
1928
+ .gy-toast-progress-bar {
1929
+ height: 100%;
1930
+ background: var(--gy-primary);
1931
+ border-radius: inherit;
1932
+ transform-origin: left;
1933
+ animation: gy-toast-progress linear forwards;
1934
+ }
1935
+ @keyframes gy-toast-progress {
1936
+ from {
1937
+ width: 100%;
1938
+ }
1939
+ to {
1940
+ width: 0%;
1941
+ }
1942
+ }
1943
+
1944
+ /* src/stepper/stepper.css */
1945
+ .gy-stepper {
1946
+ display: flex;
1947
+ align-items: flex-start;
1948
+ width: 100%;
1949
+ }
1950
+ .gy-stepper--vertical {
1951
+ flex-direction: column;
1952
+ }
1953
+ .gy-stepper-step {
1954
+ display: flex;
1955
+ align-items: center;
1956
+ flex: 1;
1957
+ position: relative;
1958
+ }
1959
+ .gy-stepper--vertical .gy-stepper-step {
1960
+ flex-direction: column;
1961
+ align-items: flex-start;
1962
+ flex: none;
1963
+ width: 100%;
1964
+ }
1965
+ .gy-stepper-connector {
1966
+ flex: 1;
1967
+ height: 2px;
1968
+ background: var(--gy-border);
1969
+ margin: 0 var(--gy-spacing-2);
1970
+ transition: background-color var(--gy-duration-slow);
1971
+ }
1972
+ .gy-stepper-connector--completed {
1973
+ background: var(--gy-primary);
1974
+ }
1975
+ .gy-stepper--vertical .gy-stepper-connector {
1976
+ width: 2px;
1977
+ height: 2.5rem;
1978
+ flex: none;
1979
+ margin: var(--gy-spacing-1) 0;
1980
+ margin-left: 19px;
1981
+ }
1982
+ .gy-stepper-indicator {
1983
+ display: flex;
1984
+ align-items: center;
1985
+ justify-content: center;
1986
+ width: 2.25rem;
1987
+ height: 2.25rem;
1988
+ border-radius: 50%;
1989
+ border: 2px solid var(--gy-border-strong);
1990
+ background: var(--gy-surface);
1991
+ font-size: var(--gy-font-size-sm);
1992
+ font-weight: var(--gy-font-weight-semibold);
1993
+ color: var(--gy-text-muted);
1994
+ flex-shrink: 0;
1995
+ transition:
1996
+ background-color var(--gy-duration-normal),
1997
+ border-color var(--gy-duration-normal),
1998
+ color var(--gy-duration-normal);
1999
+ cursor: default;
2000
+ position: relative;
2001
+ z-index: 1;
2002
+ }
2003
+ .gy-stepper-indicator--active {
2004
+ border-color: var(--gy-primary);
2005
+ color: var(--gy-primary);
2006
+ background: var(--gy-primary-subtle);
2007
+ box-shadow: 0 0 0 4px var(--gy-focus-ring);
2008
+ }
2009
+ .gy-stepper-indicator--completed {
2010
+ border-color: var(--gy-primary);
2011
+ background: var(--gy-primary);
2012
+ color: var(--gy-primary-fg);
2013
+ }
2014
+ .gy-stepper-indicator--error {
2015
+ border-color: var(--gy-danger);
2016
+ background: var(--gy-danger);
2017
+ color: white;
2018
+ }
2019
+ .gy-stepper-indicator--clickable {
2020
+ cursor: pointer;
2021
+ }
2022
+ .gy-stepper-indicator--clickable:hover {
2023
+ border-color: var(--gy-primary);
2024
+ color: var(--gy-primary);
2025
+ }
2026
+ .gy-stepper-item {
2027
+ display: flex;
2028
+ flex-direction: column;
2029
+ align-items: center;
2030
+ text-align: center;
2031
+ }
2032
+ .gy-stepper--vertical .gy-stepper-item {
2033
+ flex-direction: row;
2034
+ align-items: center;
2035
+ gap: var(--gy-spacing-3);
2036
+ text-align: left;
2037
+ }
2038
+ .gy-stepper-label {
2039
+ font-size: var(--gy-font-size-xs);
2040
+ font-weight: var(--gy-font-weight-semibold);
2041
+ color: var(--gy-text-muted);
2042
+ margin-top: var(--gy-spacing-2);
2043
+ white-space: nowrap;
2044
+ }
2045
+ .gy-stepper--vertical .gy-stepper-label {
2046
+ margin-top: 0;
2047
+ }
2048
+ .gy-stepper-label--active {
2049
+ color: var(--gy-primary);
2050
+ }
2051
+ .gy-stepper-label--completed {
2052
+ color: var(--gy-text);
2053
+ }
2054
+ .gy-stepper-description {
2055
+ font-size: var(--gy-font-size-xs);
2056
+ color: var(--gy-text-subtle);
2057
+ margin-top: 2px;
2058
+ }
2059
+ .gy-stepper-panel {
2060
+ margin-top: var(--gy-spacing-6);
2061
+ animation: gy-fade-in var(--gy-duration-normal) var(--gy-ease-out);
2062
+ }
2063
+ .gy-stepper-actions {
2064
+ display: flex;
2065
+ gap: var(--gy-spacing-3);
2066
+ margin-top: var(--gy-spacing-4);
2067
+ flex-wrap: wrap;
2068
+ }
2069
+
2070
+ /* src/table/table.css */
2071
+ .gy-table-wrapper {
2072
+ width: 100%;
2073
+ overflow-x: auto;
2074
+ border-radius: var(--gy-radius-xl);
2075
+ border: 1px solid var(--gy-border);
2076
+ }
2077
+ .gy-table {
2078
+ width: 100%;
2079
+ border-collapse: collapse;
2080
+ font-size: var(--gy-font-size-sm);
2081
+ }
2082
+ .gy-table-header {
2083
+ background: var(--gy-background-subtle);
2084
+ }
2085
+ .gy-table-th {
2086
+ padding: var(--gy-spacing-3) var(--gy-spacing-4);
2087
+ text-align: left;
2088
+ font-weight: var(--gy-font-weight-semibold);
2089
+ color: var(--gy-text-muted);
2090
+ white-space: nowrap;
2091
+ letter-spacing: var(--gy-letter-spacing-wide);
2092
+ font-size: var(--gy-font-size-xs);
2093
+ text-transform: uppercase;
2094
+ border-bottom: 1px solid var(--gy-border);
2095
+ user-select: none;
2096
+ position: relative;
2097
+ }
2098
+ .gy-table-th--sortable {
2099
+ cursor: pointer;
2100
+ }
2101
+ .gy-table-th--sortable:hover {
2102
+ color: var(--gy-text);
2103
+ background: var(--gy-background-muted);
2104
+ }
2105
+ .gy-table-th-inner {
2106
+ display: inline-flex;
2107
+ align-items: center;
2108
+ gap: var(--gy-spacing-1-5);
2109
+ }
2110
+ .gy-table-sort-icon {
2111
+ color: var(--gy-text-subtle);
2112
+ }
2113
+ .gy-table-sort-icon--active {
2114
+ color: var(--gy-primary);
2115
+ }
2116
+ .gy-table-td {
2117
+ padding: var(--gy-spacing-3) var(--gy-spacing-4);
2118
+ color: var(--gy-text);
2119
+ border-bottom: 1px solid var(--gy-border);
2120
+ vertical-align: middle;
2121
+ }
2122
+ .gy-table-tr:last-child .gy-table-td {
2123
+ border-bottom: none;
2124
+ }
2125
+ .gy-table-tr {
2126
+ transition: background-color var(--gy-duration-fast);
2127
+ }
2128
+ .gy-table-tr:hover {
2129
+ background: var(--gy-background-subtle);
2130
+ }
2131
+ .gy-table-tr--selected {
2132
+ background: var(--gy-primary-subtle);
2133
+ }
2134
+ .gy-table-th--checkbox,
2135
+ .gy-table-td--checkbox {
2136
+ width: 40px;
2137
+ padding-right: var(--gy-spacing-2);
2138
+ }
2139
+ .gy-table-empty {
2140
+ text-align: center;
2141
+ padding: var(--gy-spacing-12) var(--gy-spacing-4);
2142
+ color: var(--gy-text-subtle);
2143
+ }
2144
+ .gy-table-pagination {
2145
+ display: flex;
2146
+ align-items: center;
2147
+ justify-content: space-between;
2148
+ padding: var(--gy-spacing-3) var(--gy-spacing-4);
2149
+ border-top: 1px solid var(--gy-border);
2150
+ background: var(--gy-background-subtle);
2151
+ font-size: var(--gy-font-size-sm);
2152
+ }
2153
+ .gy-table-pagination-info {
2154
+ color: var(--gy-text-muted);
2155
+ }
2156
+ .gy-table-pagination-controls {
2157
+ display: flex;
2158
+ align-items: center;
2159
+ gap: var(--gy-spacing-1);
2160
+ }
2161
+ .gy-table-pagination-btn {
2162
+ display: flex;
2163
+ align-items: center;
2164
+ justify-content: center;
2165
+ width: 2rem;
2166
+ height: 2rem;
2167
+ border-radius: var(--gy-radius-md);
2168
+ font-size: var(--gy-font-size-sm);
2169
+ font-weight: var(--gy-font-weight-medium);
2170
+ color: var(--gy-text-muted);
2171
+ border: 1px solid transparent;
2172
+ cursor: pointer;
2173
+ background: none;
2174
+ transition: background var(--gy-duration-fast), color var(--gy-duration-fast);
2175
+ }
2176
+ .gy-table-pagination-btn:hover:not(:disabled) {
2177
+ background: var(--gy-background-muted);
2178
+ color: var(--gy-text);
2179
+ }
2180
+ .gy-table-pagination-btn--active {
2181
+ background: var(--gy-primary);
2182
+ color: var(--gy-primary-fg);
2183
+ border-color: var(--gy-primary);
2184
+ }
2185
+ .gy-table-pagination-btn:disabled {
2186
+ opacity: 0.4;
2187
+ cursor: not-allowed;
2188
+ }
2189
+
2190
+ /* src/dragdrop/dragdrop.css */
2191
+ .gy-dnd-list {
2192
+ display: flex;
2193
+ flex-direction: column;
2194
+ gap: var(--gy-spacing-2);
2195
+ width: 100%;
2196
+ }
2197
+ .gy-dnd-item {
2198
+ display: flex;
2199
+ align-items: center;
2200
+ gap: var(--gy-spacing-3);
2201
+ padding: var(--gy-spacing-3) var(--gy-spacing-4);
2202
+ background: var(--gy-surface);
2203
+ border: 1.5px solid var(--gy-border);
2204
+ border-radius: var(--gy-radius-lg);
2205
+ transition:
2206
+ box-shadow var(--gy-duration-fast),
2207
+ border-color var(--gy-duration-fast),
2208
+ opacity var(--gy-duration-fast);
2209
+ cursor: default;
2210
+ user-select: none;
2211
+ }
2212
+ .gy-dnd-item--dragging {
2213
+ opacity: 0.4;
2214
+ border-color: var(--gy-primary);
2215
+ border-style: dashed;
2216
+ }
2217
+ .gy-dnd-item--drag-over {
2218
+ border-color: var(--gy-primary);
2219
+ background: var(--gy-primary-subtle);
2220
+ box-shadow: 0 0 0 3px var(--gy-focus-ring);
2221
+ }
2222
+ .gy-dnd-handle {
2223
+ display: flex;
2224
+ align-items: center;
2225
+ justify-content: center;
2226
+ color: var(--gy-text-subtle);
2227
+ cursor: grab;
2228
+ flex-shrink: 0;
2229
+ padding: 2px;
2230
+ border-radius: var(--gy-radius-sm);
2231
+ transition: color var(--gy-duration-fast);
2232
+ }
2233
+ .gy-dnd-handle:hover {
2234
+ color: var(--gy-text-muted);
2235
+ }
2236
+ .gy-dnd-handle:active {
2237
+ cursor: grabbing;
2238
+ }
2239
+ .gy-dnd-item-content {
2240
+ flex: 1;
2241
+ min-width: 0;
2242
+ }
2243
+ .gy-kanban {
2244
+ display: flex;
2245
+ gap: var(--gy-spacing-4);
2246
+ overflow-x: auto;
2247
+ padding-bottom: var(--gy-spacing-4);
2248
+ align-items: flex-start;
2249
+ min-height: 200px;
2250
+ }
2251
+ .gy-kanban-column {
2252
+ flex-shrink: 0;
2253
+ width: 280px;
2254
+ display: flex;
2255
+ flex-direction: column;
2256
+ gap: var(--gy-spacing-3);
2257
+ }
2258
+ .gy-kanban-column-header {
2259
+ display: flex;
2260
+ align-items: center;
2261
+ justify-content: space-between;
2262
+ padding: var(--gy-spacing-2) var(--gy-spacing-3);
2263
+ background: var(--gy-background-muted);
2264
+ border-radius: var(--gy-radius-lg);
2265
+ }
2266
+ .gy-kanban-column-title {
2267
+ font-size: var(--gy-font-size-sm);
2268
+ font-weight: var(--gy-font-weight-semibold);
2269
+ color: var(--gy-text);
2270
+ }
2271
+ .gy-kanban-column-count {
2272
+ font-size: var(--gy-font-size-xs);
2273
+ font-weight: var(--gy-font-weight-semibold);
2274
+ color: var(--gy-text-subtle);
2275
+ background: var(--gy-surface);
2276
+ padding: 1px var(--gy-spacing-2);
2277
+ border-radius: var(--gy-radius-full);
2278
+ }
2279
+ .gy-kanban-drop-zone {
2280
+ flex: 1;
2281
+ display: flex;
2282
+ flex-direction: column;
2283
+ gap: var(--gy-spacing-2);
2284
+ min-height: 80px;
2285
+ border-radius: var(--gy-radius-lg);
2286
+ padding: var(--gy-spacing-1);
2287
+ transition: background-color var(--gy-duration-fast), border-color var(--gy-duration-fast);
2288
+ }
2289
+ .gy-kanban-drop-zone--over {
2290
+ background: var(--gy-primary-subtle);
2291
+ border: 2px dashed var(--gy-primary);
2292
+ }
2293
+ .gy-kanban-card {
2294
+ background: var(--gy-surface);
2295
+ border: 1px solid var(--gy-border);
2296
+ border-radius: var(--gy-radius-lg);
2297
+ padding: var(--gy-spacing-3);
2298
+ cursor: grab;
2299
+ transition: box-shadow var(--gy-duration-fast), opacity var(--gy-duration-fast);
2300
+ user-select: none;
2301
+ }
2302
+ .gy-kanban-card:hover {
2303
+ box-shadow: var(--gy-shadow-md);
2304
+ }
2305
+ .gy-kanban-card--dragging {
2306
+ opacity: 0.4;
2307
+ cursor: grabbing;
2308
+ }
2309
+
2310
+ /* src/fileupload/fileupload.css */
2311
+ .gy-fileupload {
2312
+ display: flex;
2313
+ flex-direction: column;
2314
+ gap: var(--gy-spacing-2);
2315
+ width: 100%;
2316
+ }
2317
+ .gy-fileupload-zone {
2318
+ display: flex;
2319
+ flex-direction: column;
2320
+ align-items: center;
2321
+ justify-content: center;
2322
+ gap: var(--gy-spacing-2);
2323
+ padding: var(--gy-spacing-8) var(--gy-spacing-4);
2324
+ background: var(--gy-surface);
2325
+ border: 2px dashed var(--gy-border-strong);
2326
+ border-radius: var(--gy-radius-xl);
2327
+ cursor: pointer;
2328
+ transition: all var(--gy-duration-normal) var(--gy-ease-out);
2329
+ text-align: center;
2330
+ }
2331
+ .gy-fileupload-zone:hover,
2332
+ .gy-fileupload-zone--drag-active {
2333
+ background: var(--gy-primary-subtle);
2334
+ border-color: var(--gy-primary);
2335
+ }
2336
+ .gy-fileupload-zone--disabled {
2337
+ opacity: 0.5;
2338
+ cursor: not-allowed;
2339
+ pointer-events: none;
2340
+ }
2341
+ .gy-fileupload-icon {
2342
+ color: var(--gy-primary);
2343
+ opacity: 0.8;
2344
+ margin-bottom: var(--gy-spacing-2);
2345
+ }
2346
+ .gy-fileupload-text {
2347
+ font-size: var(--gy-font-size-sm);
2348
+ color: var(--gy-text);
2349
+ font-weight: var(--gy-font-weight-medium);
2350
+ }
2351
+ .gy-fileupload-subtext {
2352
+ font-size: var(--gy-font-size-xs);
2353
+ color: var(--gy-text-subtle);
2354
+ }
2355
+ .gy-fileupload-input {
2356
+ display: none;
2357
+ }
2358
+ .gy-fileupload-list {
2359
+ display: flex;
2360
+ flex-direction: column;
2361
+ gap: var(--gy-spacing-2);
2362
+ margin-top: var(--gy-spacing-2);
2363
+ }
2364
+ .gy-fileupload-item {
2365
+ display: flex;
2366
+ align-items: center;
2367
+ gap: var(--gy-spacing-3);
2368
+ padding: var(--gy-spacing-2) var(--gy-spacing-3);
2369
+ background: var(--gy-surface);
2370
+ border: 1px solid var(--gy-border);
2371
+ border-radius: var(--gy-radius-lg);
2372
+ }
2373
+ .gy-fileupload-item-icon {
2374
+ color: var(--gy-text-subtle);
2375
+ display: flex;
2376
+ align-items: center;
2377
+ }
2378
+ .gy-fileupload-item-info {
2379
+ flex: 1;
2380
+ min-width: 0;
2381
+ display: flex;
2382
+ flex-direction: column;
2383
+ }
2384
+ .gy-fileupload-item-name {
2385
+ font-size: var(--gy-font-size-sm);
2386
+ color: var(--gy-text);
2387
+ font-weight: var(--gy-font-weight-medium);
2388
+ white-space: nowrap;
2389
+ overflow: hidden;
2390
+ text-overflow: ellipsis;
2391
+ }
2392
+ .gy-fileupload-item-size {
2393
+ font-size: var(--gy-font-size-xs);
2394
+ color: var(--gy-text-subtle);
2395
+ }
2396
+ .gy-fileupload-item-remove {
2397
+ display: flex;
2398
+ align-items: center;
2399
+ justify-content: center;
2400
+ width: 1.5rem;
2401
+ height: 1.5rem;
2402
+ border-radius: var(--gy-radius-md);
2403
+ color: var(--gy-text-subtle);
2404
+ background: none;
2405
+ border: none;
2406
+ cursor: pointer;
2407
+ transition: color var(--gy-duration-fast), background var(--gy-duration-fast);
2408
+ }
2409
+ .gy-fileupload-item-remove:hover {
2410
+ color: var(--gy-danger);
2411
+ background: var(--gy-danger-subtle);
2412
+ }
2413
+
2414
+ /* src/calendar/calendar.css */
2415
+ .gy-calendar {
2416
+ display: inline-flex;
2417
+ flex-direction: column;
2418
+ background: var(--gy-surface);
2419
+ border: 1px solid var(--gy-border);
2420
+ border-radius: var(--gy-radius-xl);
2421
+ padding: var(--gy-spacing-4);
2422
+ width: 320px;
2423
+ }
2424
+ .gy-calendar-header {
2425
+ display: flex;
2426
+ align-items: center;
2427
+ justify-content: space-between;
2428
+ margin-bottom: var(--gy-spacing-4);
2429
+ }
2430
+ .gy-calendar-title {
2431
+ font-size: var(--gy-font-size-sm);
2432
+ font-weight: var(--gy-font-weight-semibold);
2433
+ color: var(--gy-text);
2434
+ cursor: pointer;
2435
+ padding: var(--gy-spacing-1) var(--gy-spacing-2);
2436
+ border-radius: var(--gy-radius-md);
2437
+ transition: background var(--gy-duration-fast);
2438
+ }
2439
+ .gy-calendar-title:hover {
2440
+ background: var(--gy-background-muted);
2441
+ }
2442
+ .gy-calendar-nav {
2443
+ display: flex;
2444
+ align-items: center;
2445
+ justify-content: center;
2446
+ width: 1.75rem;
2447
+ height: 1.75rem;
2448
+ border-radius: var(--gy-radius-md);
2449
+ background: none;
2450
+ border: 1px solid transparent;
2451
+ color: var(--gy-text-muted);
2452
+ cursor: pointer;
2453
+ transition: background var(--gy-duration-fast), color var(--gy-duration-fast);
2454
+ }
2455
+ .gy-calendar-nav:hover {
2456
+ background: var(--gy-background-muted);
2457
+ color: var(--gy-text);
2458
+ }
2459
+ .gy-calendar-grid {
2460
+ display: grid;
2461
+ grid-template-columns: repeat(7, 1fr);
2462
+ gap: 2px;
2463
+ text-align: center;
2464
+ }
2465
+ .gy-calendar-weekday {
2466
+ font-size: var(--gy-font-size-xs);
2467
+ font-weight: var(--gy-font-weight-medium);
2468
+ color: var(--gy-text-subtle);
2469
+ padding-bottom: var(--gy-spacing-2);
2470
+ }
2471
+ .gy-calendar-day {
2472
+ display: flex;
2473
+ align-items: center;
2474
+ justify-content: center;
2475
+ aspect-ratio: 1;
2476
+ font-size: var(--gy-font-size-sm);
2477
+ color: var(--gy-text);
2478
+ background: none;
2479
+ border: none;
2480
+ border-radius: var(--gy-radius-full);
2481
+ cursor: pointer;
2482
+ transition: background var(--gy-duration-fast), color var(--gy-duration-fast);
2483
+ }
2484
+ .gy-calendar-day:hover:not(.gy-calendar-day--disabled):not(.gy-calendar-day--selected) {
2485
+ background: var(--gy-background-muted);
2486
+ }
2487
+ .gy-calendar-day--outside {
2488
+ color: var(--gy-text-subtle);
2489
+ opacity: 0.5;
2490
+ }
2491
+ .gy-calendar-day--today {
2492
+ color: var(--gy-primary);
2493
+ font-weight: var(--gy-font-weight-bold);
2494
+ }
2495
+ .gy-calendar-day--selected {
2496
+ background: var(--gy-primary);
2497
+ color: var(--gy-primary-fg);
2498
+ font-weight: var(--gy-font-weight-semibold);
2499
+ }
2500
+ .gy-calendar-day--range-in {
2501
+ background: var(--gy-primary-subtle);
2502
+ border-radius: 0;
2503
+ color: var(--gy-text);
2504
+ }
2505
+ .gy-calendar-day--range-start {
2506
+ border-radius: var(--gy-radius-full) 0 0 var(--gy-radius-full);
2507
+ }
2508
+ .gy-calendar-day--range-end {
2509
+ border-radius: 0 var(--gy-radius-full) var(--gy-radius-full) 0;
2510
+ }
2511
+ .gy-calendar-day--disabled {
2512
+ opacity: 0.3;
2513
+ cursor: not-allowed;
2514
+ }
2515
+ .gy-calendar-picker-grid {
2516
+ display: grid;
2517
+ grid-template-columns: repeat(3, 1fr);
2518
+ gap: var(--gy-spacing-2);
2519
+ }
2520
+ .gy-calendar-picker-item {
2521
+ padding: var(--gy-spacing-2) 0;
2522
+ font-size: var(--gy-font-size-sm);
2523
+ color: var(--gy-text);
2524
+ background: none;
2525
+ border: none;
2526
+ border-radius: var(--gy-radius-lg);
2527
+ cursor: pointer;
2528
+ transition: background var(--gy-duration-fast);
2529
+ }
2530
+ .gy-calendar-picker-item:hover {
2531
+ background: var(--gy-background-muted);
2532
+ }
2533
+ .gy-calendar-picker-item--selected {
2534
+ background: var(--gy-primary);
2535
+ color: var(--gy-primary-fg);
2536
+ }
2537
+
2538
+ /* src/datepicker/datepicker.css */
2539
+ .gy-datepicker {
2540
+ position: relative;
2541
+ display: flex;
2542
+ flex-direction: column;
2543
+ gap: var(--gy-spacing-1-5);
2544
+ width: 100%;
2545
+ }
2546
+ .gy-datepicker-popover {
2547
+ position: absolute;
2548
+ top: calc(100% + 4px);
2549
+ left: 0;
2550
+ z-index: var(--gy-z-dropdown);
2551
+ background: var(--gy-surface);
2552
+ border: 1px solid var(--gy-border);
2553
+ border-radius: var(--gy-radius-xl);
2554
+ box-shadow: var(--gy-shadow-dropdown);
2555
+ padding: 0;
2556
+ overflow: hidden;
2557
+ animation: gy-slide-in-up var(--gy-duration-fast) var(--gy-ease-out);
2558
+ }