@typlog/ui 0.10.1 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/addons.css +113 -0
  2. package/dist/addons.d.ts +48 -0
  3. package/dist/addons.js +442 -0
  4. package/dist/components/accordion.css +149 -0
  5. package/dist/components/avatar.css +131 -0
  6. package/dist/components/badge.css +75 -0
  7. package/dist/{base.css → components/base.css} +726 -832
  8. package/dist/components/button.css +317 -0
  9. package/dist/components/card.css +86 -0
  10. package/dist/components/checkbox.css +90 -0
  11. package/dist/components/collapsible.css +27 -0
  12. package/dist/components/combobox.css +388 -0
  13. package/dist/components/dialog.css +488 -0
  14. package/dist/components/dropdown.css +204 -0
  15. package/dist/components/editable.css +34 -0
  16. package/dist/components/icon.css +109 -0
  17. package/dist/components/inputs.css +570 -0
  18. package/dist/components/inset.css +73 -0
  19. package/dist/components/pagination.css +299 -0
  20. package/dist/components/popover.css +69 -0
  21. package/dist/components/quota.css +14 -0
  22. package/dist/components/radio.css +211 -0
  23. package/dist/components/scrollarea.css +107 -0
  24. package/dist/components/select.css +308 -0
  25. package/dist/components/separator.css +26 -0
  26. package/dist/components/spinner.css +36 -0
  27. package/dist/components/switch.css +176 -0
  28. package/dist/components/table.css +198 -0
  29. package/dist/components/tabs.css +122 -0
  30. package/dist/components/toggle.css +188 -0
  31. package/dist/components/tooltip.css +37 -0
  32. package/dist/components.css +3548 -0
  33. package/dist/{index.d.ts → components.d.ts} +131 -107
  34. package/dist/{index.js → components.js} +323 -681
  35. package/package.json +28 -14
  36. package/dist/style.css +0 -10467
@@ -0,0 +1,488 @@
1
+
2
+ .ui-DialogOverlay {
3
+ position: fixed;
4
+ inset: 0;
5
+ }
6
+ .ui-DialogOverlay::before {
7
+ position: fixed;
8
+ content: '';
9
+ inset: 0;
10
+ background-color: var(--color-overlay);
11
+ }
12
+ .ui-DialogScroll {
13
+ display: flex;
14
+ overflow: auto;
15
+ position: absolute;
16
+ inset: 0;
17
+ }
18
+ .ui-DialogScrollPadding {
19
+ flex-grow: 1;
20
+ margin: auto;
21
+ padding-top: var(--space-6);
22
+ padding-bottom: max(var(--space-6), 6vh);
23
+ padding-left: var(--space-4);
24
+ padding-right: var(--space-4);
25
+ }
26
+ .ui-DialogScrollPadding[data-align="start"] {
27
+ margin-top: 0;
28
+ }
29
+ .ui-DialogScrollPadding[data-align="center"] {
30
+ margin-top: auto;
31
+ }
32
+ .ui-DialogContent {
33
+ margin: auto;
34
+ width: 100%;
35
+ max-height: calc(100vh - var(--space-6) * 2);
36
+ position: relative;
37
+ box-sizing: border-box;
38
+ overflow: auto;
39
+ text-align: left;
40
+
41
+ --inset-padding-top: var(--dialog-content-padding);
42
+ --inset-padding-right: var(--dialog-content-padding);
43
+ --inset-padding-bottom: var(--dialog-content-padding);
44
+ --inset-padding-left: var(--dialog-content-padding);
45
+ padding: var(--dialog-content-padding);
46
+ box-sizing: border-box;
47
+
48
+ background-color: var(--color-panel-solid);
49
+ box-shadow: var(--shadow-6);
50
+ outline: none;
51
+ }
52
+ .ui-DialogContent[data-size="1"] {
53
+ --dialog-content-padding: var(--space-3);
54
+ border-radius: var(--radius-4);
55
+ }
56
+ .ui-DialogContent[data-size="2"] {
57
+ --dialog-content-padding: var(--space-4);
58
+ border-radius: var(--radius-4);
59
+ }
60
+ .ui-DialogContent[data-size="3"] {
61
+ --dialog-content-padding: var(--space-5);
62
+ border-radius: var(--radius-5);
63
+ }
64
+ .ui-DialogContent[data-size="4"] {
65
+ --dialog-content-padding: var(--space-6);
66
+ border-radius: var(--radius-5);
67
+ }
68
+ @media (prefers-reduced-motion: no-preference) {
69
+ @keyframes ui-dialog-overlay-no-op {
70
+ from {
71
+ opacity: 1;
72
+ }
73
+ to {
74
+ opacity: 1;
75
+ }
76
+ }
77
+ @keyframes ui-dialog-content-show {
78
+ from {
79
+ opacity: 0;
80
+ transform: translateY(5px) scale(0.97);
81
+ }
82
+ to {
83
+ opacity: 1;
84
+ transform: translateY(0px) scale(1);
85
+ }
86
+ }
87
+ @keyframes ui-dialog-content-hide {
88
+ from {
89
+ opacity: 1;
90
+ transform: translateY(0px) scale(1);
91
+ }
92
+ to {
93
+ opacity: 0;
94
+ transform: translateY(5px) scale(0.99);
95
+ }
96
+ }
97
+ .ui-DialogOverlay[data-state='closed'] {
98
+ animation: ui-dialog-overlay-no-op 160ms cubic-bezier(0.16, 1, 0.3, 1);
99
+ }
100
+ .ui-DialogOverlay[data-state='open']::before {
101
+ animation: ui-fade-in 200ms cubic-bezier(0.16, 1, 0.3, 1);
102
+ }
103
+ .ui-DialogOverlay[data-state='closed']::before {
104
+ animation: ui-fade-out 160ms cubic-bezier(0.16, 1, 0.3, 1);
105
+ }
106
+ .ui-DialogContent[data-state='open'] {
107
+ animation: ui-dialog-content-show 200ms cubic-bezier(0.16, 1, 0.3, 1);
108
+ }
109
+ .ui-DialogContent[data-state='closed'] {
110
+ animation: ui-dialog-content-hide 100ms cubic-bezier(0.16, 1, 0.3, 1);
111
+ }
112
+ }
113
+ .ui-DialogContent > h2[id^="reka-dialog-title"] {
114
+ font-size: var(--font-size-5);
115
+ font-weight: var(--font-weight-bold);
116
+ line-height: var(--line-height-4);
117
+ margin-bottom: var(--space-3);
118
+ }
119
+ .ui-DialogContent > p[id^="reka-dialog-description"] {
120
+ font-size: var(--font-size-2);
121
+ line-height: var(--line-height-2);
122
+ letter-spacing: var(--letter-spacing-2);
123
+ }
124
+
125
+ .ui-Button {
126
+ display: inline-flex;
127
+ align-items: center;
128
+ justify-content: center;
129
+ flex-shrink: 0;
130
+ -webkit-user-select: none;
131
+ -moz-user-select: none;
132
+ user-select: none;
133
+ vertical-align: top;
134
+ font-style: normal;
135
+ font-weight: var(--button-font-weight);
136
+ text-align: center;
137
+ white-space: nowrap;
138
+ height: var(--button-height);
139
+ padding-left: var(--button-padding-x);
140
+ padding-right: var(--button-padding-x);
141
+ }
142
+ .ui-Button:where(.r-variant-ghost) {
143
+ --button-font-weight: var(--font-weight-regular);
144
+ }
145
+ .ui-Button:where(:not(.r-variant-ghost)) {
146
+ --button-font-weight: var(--font-weight-medium);
147
+ }
148
+ .ui-Button:where([data-disabled]) {
149
+ cursor: not-allowed;
150
+ }
151
+ .ui-Button:where(.r-size-1) {
152
+ gap: var(--space-1);
153
+ font-size: var(--font-size-1);
154
+ line-height: var(--line-height-1);
155
+ letter-spacing: var(--letter-spacing-1);
156
+ border-radius: max(var(--radius-1), var(--radius-full));
157
+ --button-height: var(--space-5);
158
+ --button-padding-x: var(--space-2);
159
+ }
160
+ .ui-Button:where(.r-size-1):where(.r-variant-ghost) {
161
+ --button-ghost-padding-y: var(--space-1);
162
+ }
163
+ .ui-Button:where(.r-size-2) {
164
+ gap: var(--space-2);
165
+ font-size: var(--font-size-2);
166
+ line-height: var(--line-height-2);
167
+ letter-spacing: var(--letter-spacing-2);
168
+ border-radius: max(var(--radius-2), var(--radius-full));
169
+ --button-height: var(--space-6);
170
+ --button-padding-x: var(--space-3);
171
+ }
172
+ .ui-Button:where(.r-size-2):where(.r-variant-ghost) {
173
+ gap: var(--space-1);
174
+ --button-padding-x: var(--space-2);
175
+ --button-ghost-padding-y: var(--space-1);
176
+ }
177
+ .ui-Button:where(.r-size-3) {
178
+ gap: var(--space-3);
179
+ font-size: var(--font-size-3);
180
+ line-height: var(--line-height-3);
181
+ letter-spacing: var(--letter-spacing-3);
182
+ border-radius: max(var(--radius-3), var(--radius-full));
183
+ --button-height: var(--space-7);
184
+ --button-padding-x: var(--space-4);
185
+ }
186
+ .ui-Button:where(.r-size-3):where(.r-variant-ghost) {
187
+ gap: var(--space-2);
188
+ --button-padding-x: var(--space-3);
189
+ --button-ghost-padding-y: calc(var(--space-1) * 1.5);
190
+ }
191
+ .ui-Button:where(.r-size-4) {
192
+ gap: var(--space-3);
193
+ font-size: var(--font-size-4);
194
+ line-height: var(--line-height-4);
195
+ letter-spacing: var(--letter-spacing-4);
196
+ border-radius: max(var(--radius-4), var(--radius-full));
197
+ --button-height: var(--space-8);
198
+ --button-padding-x: var(--space-5);
199
+ }
200
+ .ui-Button:where(.r-size-4):where(.r-variant-ghost) {
201
+ gap: var(--space-2);
202
+ --button-padding-x: var(--space-4);
203
+ --button-ghost-padding-y: var(--space-2);
204
+ }
205
+
206
+ /* solid */
207
+ .ui-root {
208
+ --button-solid-active-filter: brightness(0.92) saturate(1.1);
209
+ --button-solid-high-contrast-hover-filter: contrast(0.88) saturate(1.1) brightness(1.1);
210
+ }
211
+ :is(.dark, .dark-theme) .ui-root {
212
+ --button-solid-active-filter: brightness(1.08);
213
+ --button-solid-high-contrast-hover-filter: contrast(0.88) saturate(1.3) brightness(1.18);
214
+ }
215
+ .ui-Button:where(.r-variant-solid) {
216
+ background-color: var(--accent-9);
217
+ color: var(--accent-contrast);
218
+ }
219
+ @media (hover: hover) {
220
+ .ui-Button:where(.r-variant-solid):where(:hover) {
221
+ background-color: var(--accent-10);
222
+ }
223
+ }
224
+ .ui-Button:where(.r-variant-solid):where(:focus-visible) {
225
+ outline: 2px solid var(--focus-8);
226
+ outline-offset: 2px;
227
+ }
228
+ .ui-Button:where(.r-variant-solid):where(:active) {
229
+ background-color: var(--accent-10);
230
+ filter: var(--button-solid-active-filter);
231
+ }
232
+ .ui-Button:where(.r-variant-solid):where(.r-high-contrast) {
233
+ background-color: var(--accent-12);
234
+ color: var(--gray-1);
235
+ }
236
+ @media (hover: hover) {
237
+ .ui-Button:where(.r-variant-solid):where(.r-high-contrast:hover) {
238
+ background-color: var(--accent-12);
239
+ filter: var(--button-solid-high-contrast-hover-filter);
240
+ }
241
+ }
242
+ .ui-Button:where(.r-variant-solid):where([data-disabled]) {
243
+ color: var(--gray-a8);
244
+ background-color: var(--gray-a3);
245
+ outline: none;
246
+ filter: none;
247
+ }
248
+
249
+ /* soft / ghost */
250
+ .ui-Button:where(.r-variant-soft, .r-variant-ghost) {
251
+ color: var(--accent-a11);
252
+ }
253
+ .ui-Button:where(.r-variant-soft, .r-variant-ghost):where(.r-high-contrast) {
254
+ color: var(--accent-12);
255
+ }
256
+ .ui-Button:where(.r-variant-soft):where([data-disabled]) {
257
+ color: var(--gray-a8);
258
+ background-color: var(--gray-a3);
259
+ }
260
+ .ui-Button:where(.r-variant-soft) {
261
+ background-color: var(--accent-a3);
262
+ }
263
+ @media (hover: hover) {
264
+ .ui-Button:where(.r-variant-soft):where(:hover) {
265
+ background-color: var(--accent-a4);
266
+ }
267
+ }
268
+ .ui-Button:where(.r-variant-soft):where(:focus-visible) {
269
+ outline: 2px solid var(--accent-8);
270
+ outline-offset: -1px;
271
+ }
272
+ .ui-Button:where(.r-variant-soft):where(:active) {
273
+ background-color: var(--accent-a5);
274
+ }
275
+ .ui-Button:where(.r-variant-soft):where([data-disabled]) {
276
+ color: var(--gray-a8);
277
+ background-color: var(--gray-a3);
278
+ }
279
+ .ui-Button:where(.r-variant-ghost) {
280
+ padding: var(--button-ghost-padding-y) var(--button-ghost-padding-x);
281
+ }
282
+ @media (hover: hover) {
283
+ .ui-Button:where(.r-variant-ghost):where(:hover) {
284
+ background-color: var(--accent-a3);
285
+ }
286
+ }
287
+ .ui-Button:where(.r-variant-ghost):where(:focus-visible) {
288
+ outline: 2px solid var(--focus-8);
289
+ outline-offset: -1px;
290
+ }
291
+ .ui-Button:where(.r-variant-ghost):where(:active) {
292
+ background-color: var(--accent-a4);
293
+ }
294
+ .ui-Button:where(.r-variant-ghost):where([data-disabled]) {
295
+ color: var(--gray-a8);
296
+ background-color: transparent;
297
+ }
298
+
299
+ /* classic */
300
+ .ui-Button:where(.r-variant-classic) {
301
+ box-shadow: var(--shadow-2);
302
+ background-color: var(--color-background);
303
+ }
304
+ .ui-Button:where(.r-variant-classic):where(.r-high-contrast) {
305
+ color: var(--gray-12);
306
+ box-shadow: 0 0 0 1px var(--gray-a6), 0 1px 1px 0 var(--black-a4), 0 2px 1px -1px var(--black-a2), 0 1px 3px 0 var(--black-a1);
307
+ }
308
+ @media (hover: hover) {
309
+ .ui-Button:where(.r-variant-classic):where(:hover) {
310
+ color: var(--accent-a11);
311
+ background-color: var(--gray-a2);
312
+ }
313
+ .ui-Button:where(.r-variant-classic):where(.r-high-contrast):where(:hover) {
314
+ color: var(--accent-12);
315
+ }
316
+ }
317
+ .ui-Button:where(.r-variant-classic):where(:focus-visible) {
318
+ outline: 2px solid var(--focus-8);
319
+ outline-offset: 2px;
320
+ }
321
+ .ui-Button:where(.r-variant-classic):where(:active:not([data-disabled])) {
322
+ box-shadow: var(--shadow-1);
323
+ }
324
+ .ui-Button:where(.r-variant-classic):where([data-disabled]) {
325
+ color: var(--gray-a10);
326
+ background-color: var(--gray-a2);
327
+ }
328
+
329
+ /* outline */
330
+ .ui-Button:where(.r-variant-outline) {
331
+ box-shadow: inset 0 0 0 1px var(--accent-a8);
332
+ color: var(--accent-a11);
333
+ }
334
+ @media (hover: hover) {
335
+ .ui-Button:where(.r-variant-outline):where(:hover) {
336
+ background-color: var(--accent-a2);
337
+ }
338
+ }
339
+ .ui-Button:where(.r-variant-outline):where(:focus-visible) {
340
+ outline: 2px solid var(--focus-8);
341
+ outline-offset: -1px;
342
+ }
343
+ .ui-Button:where(.r-variant-outline):where(.r-high-contrast) {
344
+ box-shadow: inset 0 0 0 1px var(--accent-a7), inset 0 0 0 1px var(--gray-a11);
345
+ color: var(--accent-12);
346
+ }
347
+ .ui-Button:where(.r-variant-outline):where(:active) {
348
+ background-color: var(--accent-a4);
349
+ }
350
+ .ui-Button:where(.r-variant-outline):where([data-disabled]) {
351
+ color: var(--gray-a8);
352
+ box-shadow: inset 0 0 0 1px var(--gray-a7);
353
+ background-color: transparent;
354
+ }
355
+
356
+ /* surface */
357
+ .ui-Button:where(.r-variant-surface) {
358
+ background-color: var(--accent-surface);
359
+ box-shadow: inset 0 0 0 1px var(--accent-a7);
360
+ color: var(--accent-a11);
361
+ }
362
+ @media (hover: hover) {
363
+ .ui-Button:where(.r-variant-surface):where(:hover) {
364
+ box-shadow: inset 0 0 0 1px var(--accent-a8);
365
+ }
366
+ }
367
+ .ui-Button:where(.r-variant-surface):where(:focus-visible) {
368
+ outline: 2px solid var(--focus-8);
369
+ outline-offset: -1px;
370
+ }
371
+ .ui-Button:where(.r-variant-surface):where(.r-high-contrast) {
372
+ color: var(--accent-12);
373
+ }
374
+ .ui-Button:where(.r-variant-surface):where(:active) {
375
+ background-color: var(--accent-a4);
376
+ }
377
+ .ui-Button:where(.r-variant-surface):where([data-disabled]) {
378
+ color: var(--gray-a8);
379
+ box-shadow: inset 0 0 0 1px var(--gray-a6);
380
+ background-color: var(--gray-a2);
381
+ }
382
+
383
+ .ui-Button.ui-IconButton:where(:not(.r-variant-ghost)) {
384
+ height: var(--button-height);
385
+ width: var(--button-height);
386
+ padding: 0;
387
+ }
388
+ .ui-IconButton:where(.r-variant-ghost) {
389
+ padding: var(--icon-button-ghost-padding);
390
+ }
391
+ .ui-IconButton:where(.r-size-1) {
392
+ --icon-button-ghost-padding: var(--space-1);
393
+ }
394
+ .ui-IconButton:where(.r-size-2) {
395
+ --icon-button-ghost-padding: calc(var(--space-1) * 1.5);
396
+ }
397
+ .ui-IconButton:where(.r-size-3) {
398
+ --icon-button-ghost-padding: var(--space-2);
399
+ }
400
+ .ui-IconButton:where(.r-size-4) {
401
+ --icon-button-ghost-padding: var(--space-3);
402
+ }
403
+
404
+ .ui-Inset {
405
+ box-sizing: border-box;
406
+ --margin-top: 0px;
407
+ --margin-right: 0px;
408
+ --margin-bottom: 0px;
409
+ --margin-left: 0px;
410
+ overflow: hidden;
411
+ margin-top: var(--margin-top-override);
412
+ margin-right: var(--margin-right-override);
413
+ margin-bottom: var(--margin-bottom-override);
414
+ margin-left: var(--margin-left-override);
415
+ }
416
+ .ui-Inset > * {
417
+ --margin-top-override: initial;
418
+ --margin-right-override: initial;
419
+ --margin-bottom-override: initial;
420
+ --margin-left-override: initial;
421
+ }
422
+ .ui-Inset:where(.r-clip-border-box) {
423
+ --inset-border-radius-calc: calc(var(--inset-border-radius, 0px) - var(--inset-border-width, 0px));
424
+ --inset-padding-top-calc: var(--inset-padding-top, 0px);
425
+ --inset-padding-right-calc: var(--inset-padding-right, 0px);
426
+ --inset-padding-bottom-calc: var(--inset-padding-bottom, 0px);
427
+ --inset-padding-left-calc: var(--inset-padding-left, 0px);
428
+ }
429
+ .ui-Inset:where(.r-clip-padding-box) {
430
+ --inset-border-radius-calc: var(--inset-border-radius, 0px);
431
+ --inset-padding-top-calc: calc(var(--inset-padding-top, 0px) + var(--inset-border-width, 0px));
432
+ --inset-padding-right-calc: calc(var(--inset-padding-right, 0px) + var(--inset-border-width, 0px));
433
+ --inset-padding-bottom-calc: calc(var(--inset-padding-bottom, 0px) + var(--inset-border-width, 0px));
434
+ --inset-padding-left-calc: calc(var(--inset-padding-left, 0px) + var(--inset-border-width, 0px));
435
+ }
436
+ .ui-Inset:where(.inset-top) {
437
+ --margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));
438
+ --margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));
439
+ --margin-bottom-override: var(--margin-bottom);
440
+ --margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));
441
+ border-top-left-radius: var(--inset-border-radius-calc);
442
+ border-top-right-radius: var(--inset-border-radius-calc);
443
+ border-bottom-left-radius: 0px;
444
+ border-bottom-right-radius: 0px;
445
+ }
446
+ .ui-Inset:where(.inset-bottom) {
447
+ --margin-top-override: var(--margin-top);
448
+ --margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));
449
+ --margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));
450
+ --margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));
451
+ border-top-left-radius: 0px;
452
+ border-top-right-radius: 0px;
453
+ border-bottom-left-radius: var(--inset-border-radius-calc);
454
+ border-bottom-right-radius: var(--inset-border-radius-calc);
455
+ }
456
+ .ui-Inset:where(.inset-left) {
457
+ --margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));
458
+ --margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));
459
+ --margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));
460
+ --margin-right-override: var(--margin-right);
461
+ border-top-left-radius: var(--inset-border-radius-calc);
462
+ border-top-right-radius: 0px;
463
+ border-bottom-left-radius: var(--inset-border-radius-calc);
464
+ border-bottom-right-radius: 0px;
465
+ }
466
+ .ui-Inset:where(.inset-right) {
467
+ --margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));
468
+ --margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));
469
+ --margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));
470
+ --margin-left-override: var(--margin-left);
471
+ border-top-left-radius: 0px;
472
+ border-top-right-radius: var(--inset-border-radius-calc);
473
+ border-bottom-left-radius: 0px;
474
+ border-bottom-right-radius: var(--inset-border-radius-calc);
475
+ }
476
+
477
+ .ui-DialogHead {
478
+ position: sticky;
479
+ top: calc(0px - var(--inset-padding-top-calc));
480
+ display: flex;
481
+ justify-content: space-between;
482
+ align-items: center;
483
+ margin-top: calc(0px - var(--inset-padding-top-calc));
484
+ padding: calc(var(--dialog-content-padding) / 2) var(--dialog-content-padding);
485
+ border-bottom: 1px solid var(--gray-a4);
486
+ background-color: var(--color-background);
487
+ z-index: 1;
488
+ }
@@ -0,0 +1,204 @@
1
+
2
+ .ui-root {
3
+ --scrollarea-scrollbar-horizontal-margin-top: var(--space-1);
4
+ --scrollarea-scrollbar-horizontal-margin-bottom: var(--space-1);
5
+ --scrollarea-scrollbar-horizontal-margin-left: var(--space-1);
6
+ --scrollarea-scrollbar-horizontal-margin-right: var(--space-1);
7
+ --scrollarea-scrollbar-vertical-margin-top: var(--space-1);
8
+ --scrollarea-scrollbar-vertical-margin-bottom: var(--space-1);
9
+ --scrollarea-scrollbar-vertical-margin-left: var(--space-1);
10
+ --scrollarea-scrollbar-vertical-margin-right: var(--space-1);
11
+ }
12
+ .ui-ScrollArea {
13
+ display: flex;
14
+ flex-direction: column;
15
+ overflow: hidden;
16
+ width: 100%;
17
+ height: 100%;
18
+ }
19
+ .ui-ScrollAreaViewport {
20
+ display: flex;
21
+ flex-direction: column;
22
+ width: 100%;
23
+ height: 100%;
24
+ }
25
+ .ui-ScrollAreaViewport:where(:focus-visible) + :where(.ui-ScrollAreaViewportFocusRing) {
26
+ position: absolute;
27
+ inset: 0;
28
+ pointer-events: none;
29
+ outline: 2px solid var(--focus-8);
30
+ outline-offset: -2px;
31
+ }
32
+ .ui-ScrollAreaViewport:where(:has(.ui-ScrollAreaScrollbar[data-orientation='horizontal'])) {
33
+ overscroll-behavior-x: contain;
34
+ }
35
+ .ui-ScrollAreaScrollbar {
36
+ display: flex;
37
+ -webkit-user-select: none;
38
+ -moz-user-select: none;
39
+ user-select: none;
40
+ touch-action: none;
41
+ }
42
+ .ui-ScrollAreaScrollbar:where([data-orientation='vertical']) {
43
+ flex-direction: column;
44
+ width: var(--scrollarea-scrollbar-size);
45
+ }
46
+ .ui-ScrollAreaScrollbar:where([data-orientation='horizontal']) {
47
+ flex-direction: row;
48
+ height: var(--scrollarea-scrollbar-size);
49
+ }
50
+ .ui-ScrollAreaThumb {
51
+ position: relative;
52
+ }
53
+ .ui-ScrollAreaThumb::before {
54
+ content: '';
55
+ position: absolute;
56
+ top: 50%;
57
+ left: 50%;
58
+ transform: translate(-50%, -50%);
59
+ width: 100%;
60
+ height: 100%;
61
+ min-width: var(--space-4);
62
+ min-height: var(--space-4);
63
+ }
64
+ .ui-ScrollAreaScrollbar:where([data-size="1"]) {
65
+ --scrollarea-scrollbar-size: var(--space-1);
66
+ --scrollarea-scrollbar-border-radius: max(var(--radius-1), var(--radius-full));
67
+ }
68
+ .ui-ScrollAreaScrollbar:where([data-size="2"]) {
69
+ --scrollarea-scrollbar-size: var(--space-2);
70
+ --scrollarea-scrollbar-border-radius: max(var(--radius-1), var(--radius-full));
71
+ }
72
+ .ui-ScrollAreaScrollbar:where([data-size="3"]) {
73
+ --scrollarea-scrollbar-size: var(--space-3);
74
+ --scrollarea-scrollbar-border-radius: max(var(--radius-1), var(--radius-full));
75
+ }
76
+ .ui-ScrollAreaScrollbar {
77
+ background-color: var(--gray-a3);
78
+ border-radius: var(--scrollarea-scrollbar-border-radius);
79
+ animation-duration: 120ms;
80
+ animation-timing-function: ease-out;
81
+ }
82
+ .ui-ScrollAreaScrollbar:where([data-state='visible']) {
83
+ animation-name: ui-fade-in;
84
+ }
85
+ .ui-ScrollAreaScrollbar:where([data-state='hidden']) {
86
+ animation-name: ui-fade-out;
87
+ }
88
+ .ui-ScrollAreaScrollbar:where([data-orientation='horizontal']) {
89
+ margin-top: var(--scrollarea-scrollbar-horizontal-margin-top);
90
+ margin-bottom: var(--scrollarea-scrollbar-horizontal-margin-bottom);
91
+ margin-left: var(--scrollarea-scrollbar-horizontal-margin-left);
92
+ margin-right: var(--scrollarea-scrollbar-horizontal-margin-right);
93
+ }
94
+ .ui-ScrollAreaScrollbar:where([data-orientation='vertical']) {
95
+ margin-top: var(--scrollarea-scrollbar-vertical-margin-top);
96
+ margin-bottom: var(--scrollarea-scrollbar-vertical-margin-bottom);
97
+ margin-left: var(--scrollarea-scrollbar-vertical-margin-left);
98
+ margin-right: var(--scrollarea-scrollbar-vertical-margin-right);
99
+ }
100
+ .ui-ScrollAreaThumb {
101
+ background-color: var(--gray-a8);
102
+ border-radius: inherit;
103
+ transition: background-color 100ms;
104
+ }
105
+ .ui-ScrollAreaThumb:hover {
106
+ background-color: var(--gray-a9);
107
+ }
108
+
109
+ .ui-MenuContent {
110
+ --scrollarea-scrollbar-vertical-margin-top: var(--menu-content-padding);
111
+ --scrollarea-scrollbar-vertical-margin-bottom: var(--menu-content-padding);
112
+ --scrollarea-scrollbar-horizontal-margin-left: var(--menu-content-padding);
113
+ --scrollarea-scrollbar-horizontal-margin-right: var(--menu-content-padding);
114
+
115
+ display: flex;
116
+ flex-direction: column;
117
+ box-sizing: border-box;
118
+ overflow: hidden;
119
+
120
+ --menu-bg: var(--color-panel-solid);
121
+ box-shadow: var(--shadow-5);
122
+ background-color: var(--menu-bg);
123
+ }
124
+ .ui-MenuViewport {
125
+ flex: 1 1 0%;
126
+ display: flex;
127
+ flex-direction: column;
128
+ overflow: auto;
129
+ padding: var(--menu-content-padding);
130
+ box-sizing: border-box;
131
+ }
132
+ :where(.ui-MenuContent:has(.rt-ScrollAreaScrollbar[data-orientation='vertical'])) .ui-MenuViewport {
133
+ padding-right: var(--space-3);
134
+ }
135
+ .ui-MenuContent:where([data-size="1"]) {
136
+ --menu-content-padding: var(--space-1);
137
+ --menu-item-padding-left: calc(var(--space-5) / 1.2);
138
+ --menu-item-padding-right: var(--space-2);
139
+ --menu-item-height: var(--space-5);
140
+ border-radius: var(--radius-3);
141
+ }
142
+ .ui-MenuContent:where([data-size="2"]) {
143
+ --menu-content-padding: var(--space-2);
144
+ --menu-item-padding-left: var(--space-3);
145
+ --menu-item-padding-right: var(--space-3);
146
+ --menu-item-height: var(--space-6);
147
+ border-radius: var(--radius-4);
148
+ }
149
+
150
+ .ui-MenuItem {
151
+ display: flex;
152
+ align-items: center;
153
+ gap: var(--space-2);
154
+ height: var(--menu-item-height);
155
+ padding-left: var(--menu-item-padding-left);
156
+ padding-right: var(--menu-item-padding-right);
157
+ box-sizing: border-box;
158
+ position: relative;
159
+ outline: none;
160
+ scroll-margin: var(--menu-content-padding) 0;
161
+ -webkit-user-select: none;
162
+ -moz-user-select: none;
163
+ user-select: none;
164
+ cursor: default;
165
+ color: var(--gray-a11);
166
+ }
167
+ .ui-MenuShortcut {
168
+ display: flex;
169
+ align-items: center;
170
+ margin-left: auto;
171
+ padding-left: var(--space-4);
172
+ }
173
+ .ui-MenuItem:where([data-accent-color]) {
174
+ color: var(--accent-a11);
175
+ }
176
+ .ui-MenuItem:where([data-disabled]) {
177
+ color: var(--gray-a8);
178
+ }
179
+ .ui-MenuItem:where([data-disabled], [data-highlighted]) :where(.ui-MenuShortcut) {
180
+ color: inherit;
181
+ }
182
+ .ui-MenuItem:where([data-size="1"]) {
183
+ font-size: var(--font-size-1);
184
+ line-height: var(--line-height-1);
185
+ letter-spacing: var(--letter-spacing-1);
186
+ border-radius: var(--radius-1);
187
+ }
188
+ .ui-MenuItem:where([data-size="2"]) {
189
+ font-size: var(--font-size-2);
190
+ line-height: var(--line-height-2);
191
+ letter-spacing: var(--letter-spacing-2);
192
+ border-radius: var(--radius-2);
193
+ }
194
+ .ui-MenuItem:where([data-variant="solid"]):where([data-highlighted]) {
195
+ background-color: var(--accent-9);
196
+ color: var(--accent-contrast);
197
+ }
198
+ .ui-MenuItem:where([data-variant="solid"]):where([data-high-contrast]):where([data-highlighted]) {
199
+ background-color: var(--accent-12);
200
+ color: var(--accent-1);
201
+ }
202
+ .ui-MenuItem:where([data-variant="soft"]):where([data-highlighted]) {
203
+ background-color: var(--accent-a4);
204
+ }