@liiift-studio/mac-os9-ui 0.1.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.
package/dist/index.css ADDED
@@ -0,0 +1,1703 @@
1
+ /* src/components/Button/Button.module.css */
2
+ .button {
3
+ position: relative;
4
+ display: inline-flex;
5
+ align-items: center;
6
+ justify-content: center;
7
+ gap: var(--spacing-1);
8
+ font-family: var(--font-system);
9
+ font-weight: var(--font-weight-normal);
10
+ text-align: center;
11
+ text-decoration: none;
12
+ white-space: nowrap;
13
+ user-select: none;
14
+ cursor: pointer;
15
+ transition: none;
16
+ background-color: var(--color-surface);
17
+ border: var(--border-width-thin) solid var(--color-border);
18
+ border-radius: var(--border-radius-none);
19
+ box-shadow: var(--shadow-bevel);
20
+ color: var(--color-text);
21
+ clip-path: polygon(2px 0, calc(100% - 2px) 0, 100% 2px, 100% calc(100% - 2px), calc(100% - 2px) 100%, 2px 100%, 0 calc(100% - 2px), 0 2px);
22
+ -webkit-appearance: none;
23
+ -moz-appearance: none;
24
+ appearance: none;
25
+ }
26
+ .button[href] {
27
+ text-decoration: none;
28
+ }
29
+ .button[href]:visited {
30
+ color: var(--color-text);
31
+ }
32
+ .button--sm {
33
+ min-height: 20px;
34
+ padding: var(--spacing-0_5) var(--spacing-2);
35
+ font-size: var(--font-size-xs);
36
+ line-height: var(--line-height-tight);
37
+ }
38
+ .button--md {
39
+ min-height: 24px;
40
+ padding: var(--spacing-1) var(--spacing-3);
41
+ font-size: var(--font-size-md);
42
+ line-height: var(--line-height-snug);
43
+ }
44
+ .button--lg {
45
+ min-height: 32px;
46
+ padding: var(--spacing-2) var(--spacing-4);
47
+ font-size: var(--font-size-lg);
48
+ line-height: var(--line-height-normal);
49
+ }
50
+ .button--default {
51
+ }
52
+ .button--primary {
53
+ background-color: var(--color-gray-300);
54
+ font-weight: var(--font-weight-bold);
55
+ }
56
+ .button--danger {
57
+ color: var(--color-error);
58
+ border-color: var(--color-error);
59
+ }
60
+ .button:hover:not(:disabled) {
61
+ background-color: var(--color-gray-100);
62
+ }
63
+ .button:active:not(:disabled) {
64
+ box-shadow: var(--shadow-inset);
65
+ background-color: var(--color-gray-300);
66
+ transform: translate(1px, 1px);
67
+ }
68
+ .button:focus-visible {
69
+ outline: 1px dotted var(--color-focus);
70
+ outline-offset: 2px;
71
+ }
72
+ .button--disabled,
73
+ .button:disabled {
74
+ opacity: 0.5;
75
+ cursor: not-allowed;
76
+ pointer-events: none;
77
+ }
78
+ .button--full-width {
79
+ width: 100%;
80
+ }
81
+ .button--loading {
82
+ position: relative;
83
+ pointer-events: none;
84
+ }
85
+ .button--loading:not(.button--cursor-loading) {
86
+ cursor: wait;
87
+ }
88
+ .button--cursor-loading {
89
+ cursor: wait;
90
+ }
91
+ .button__loading-spinner {
92
+ display: inline-flex;
93
+ align-items: center;
94
+ justify-content: center;
95
+ font-size: var(--font-size-md);
96
+ }
97
+ .button__text {
98
+ display: inline-flex;
99
+ align-items: center;
100
+ }
101
+ .button__icon-left,
102
+ .button__icon-right {
103
+ display: inline-flex;
104
+ align-items: center;
105
+ justify-content: center;
106
+ flex-shrink: 0;
107
+ }
108
+ .button__icon-only {
109
+ display: inline-flex;
110
+ align-items: center;
111
+ justify-content: center;
112
+ }
113
+ .button--icon-only {
114
+ padding: var(--spacing-1);
115
+ aspect-ratio: 1;
116
+ }
117
+ .button--icon-only.button--sm {
118
+ padding: var(--spacing-0_5);
119
+ }
120
+ .button--icon-only.button--lg {
121
+ padding: var(--spacing-2);
122
+ }
123
+ @media (prefers-contrast: high) {
124
+ .button {
125
+ border-width: var(--border-width-medium);
126
+ }
127
+ }
128
+ @media (prefers-reduced-motion: reduce) {
129
+ .button {
130
+ transition: none;
131
+ }
132
+ }
133
+
134
+ /* src/components/Icon/Icon.module.css */
135
+ .icon {
136
+ display: inline-block;
137
+ flex-shrink: 0;
138
+ line-height: 1;
139
+ color: currentColor;
140
+ vertical-align: middle;
141
+ }
142
+ .icon--xs {
143
+ width: 12px;
144
+ height: 12px;
145
+ }
146
+ .icon--sm {
147
+ width: 14px;
148
+ height: 14px;
149
+ }
150
+ .icon--md {
151
+ width: 16px;
152
+ height: 16px;
153
+ }
154
+ .icon--lg {
155
+ width: 20px;
156
+ height: 20px;
157
+ }
158
+ .icon--xl {
159
+ width: 24px;
160
+ height: 24px;
161
+ }
162
+
163
+ /* src/components/IconButton/IconButton.module.css */
164
+ .iconButton {
165
+ font-family: var(--font-system);
166
+ font-weight: var(--font-weight-bold);
167
+ color: var(--color-text);
168
+ background: var(--color-gray-400);
169
+ border: var(--border-width-thin) solid var(--color-border);
170
+ border-radius: var(--border-radius-none);
171
+ box-shadow: var(--shadow-raised);
172
+ display: inline-flex;
173
+ align-items: center;
174
+ justify-content: center;
175
+ gap: var(--spacing-2);
176
+ cursor: pointer;
177
+ -webkit-appearance: none;
178
+ -moz-appearance: none;
179
+ appearance: none;
180
+ transition: none;
181
+ white-space: nowrap;
182
+ user-select: none;
183
+ clip-path: polygon(4px 0, 3px 1px, 2px 2px, 1px 3px, 0 4px, 0 calc(100% - 4px), 1px calc(100% - 3px), 2px calc(100% - 2px), 3px calc(100% - 1px), 4px 100%, calc(100% - 4px) 100%, calc(100% - 3px) calc(100% - 1px), calc(100% - 2px) calc(100% - 2px), calc(100% - 1px) calc(100% - 3px), 100% calc(100% - 4px), 100% 4px, calc(100% - 1px) 3px, calc(100% - 2px) 2px, calc(100% - 3px) 1px, calc(100% - 4px) 0);
184
+ }
185
+ .icon {
186
+ display: inline-flex;
187
+ align-items: center;
188
+ justify-content: center;
189
+ flex-shrink: 0;
190
+ }
191
+ .label {
192
+ display: inline-flex;
193
+ align-items: center;
194
+ }
195
+ .iconButton--label-top,
196
+ .iconButton--label-bottom {
197
+ flex-direction: column;
198
+ }
199
+ .iconButton--label-left {
200
+ flex-direction: row-reverse;
201
+ }
202
+ .iconButton--label-right {
203
+ flex-direction: row;
204
+ }
205
+ .iconButton--sm {
206
+ padding: var(--spacing-1);
207
+ font-size: var(--font-size-xs);
208
+ line-height: var(--line-height-tight);
209
+ min-width: 24px;
210
+ min-height: 24px;
211
+ }
212
+ .iconButton--sm.iconButton--with-label {
213
+ padding: var(--spacing-1) var(--spacing-2);
214
+ }
215
+ .iconButton--md {
216
+ padding: var(--spacing-1_5);
217
+ font-size: var(--font-size-md);
218
+ line-height: var(--line-height-snug);
219
+ min-width: 32px;
220
+ min-height: 32px;
221
+ }
222
+ .iconButton--md.iconButton--with-label {
223
+ padding: var(--spacing-1_5) var(--spacing-3);
224
+ }
225
+ .iconButton--lg {
226
+ padding: var(--spacing-2);
227
+ font-size: var(--font-size-lg);
228
+ line-height: var(--line-height-normal);
229
+ min-width: 40px;
230
+ min-height: 40px;
231
+ }
232
+ .iconButton--lg.iconButton--with-label {
233
+ padding: var(--spacing-2) var(--spacing-4);
234
+ }
235
+ .iconButton--default {
236
+ background: var(--color-gray-400);
237
+ }
238
+ .iconButton--primary {
239
+ background: var(--color-gray-300);
240
+ }
241
+ .iconButton--danger {
242
+ background: var(--color-gray-400);
243
+ color: var(--color-text);
244
+ }
245
+ .iconButton:hover:not(:disabled) {
246
+ background: var(--color-gray-300);
247
+ }
248
+ .iconButton:active:not(:disabled) {
249
+ box-shadow: var(--shadow-inset);
250
+ background: var(--color-gray-500);
251
+ }
252
+ .iconButton:focus-visible {
253
+ outline: 1px dotted var(--color-focus);
254
+ outline-offset: -3px;
255
+ }
256
+ .iconButton--disabled,
257
+ .iconButton:disabled {
258
+ opacity: 0.5;
259
+ cursor: not-allowed;
260
+ pointer-events: none;
261
+ }
262
+ @media (prefers-reduced-motion: reduce) {
263
+ .iconButton {
264
+ transition: none;
265
+ }
266
+ }
267
+ @media (prefers-contrast: high) {
268
+ .iconButton {
269
+ border-width: 2px;
270
+ }
271
+ }
272
+
273
+ /* src/components/Checkbox/Checkbox.module.css */
274
+ .wrapper {
275
+ display: inline-flex;
276
+ align-items: center;
277
+ gap: var(--spacing-2);
278
+ position: relative;
279
+ cursor: pointer;
280
+ }
281
+ .wrapper--disabled {
282
+ opacity: 0.5;
283
+ cursor: not-allowed;
284
+ }
285
+ .wrapper--error {
286
+ }
287
+ .wrapper--label-left {
288
+ flex-direction: row-reverse;
289
+ }
290
+ .wrapper--label-right {
291
+ flex-direction: row;
292
+ }
293
+ .checkbox {
294
+ appearance: none;
295
+ -webkit-appearance: none;
296
+ -moz-appearance: none;
297
+ position: relative;
298
+ display: inline-block;
299
+ flex-shrink: 0;
300
+ margin: 0;
301
+ cursor: pointer;
302
+ background-color: var(--color-surface);
303
+ border: var(--border-width-thin) solid var(--color-border);
304
+ border-radius: var(--border-radius-none);
305
+ box-shadow: var(--shadow-inset);
306
+ transition: none;
307
+ }
308
+ .checkbox:disabled {
309
+ cursor: not-allowed;
310
+ }
311
+ .checkbox--sm {
312
+ width: 14px;
313
+ height: 14px;
314
+ }
315
+ .checkbox--md {
316
+ width: 16px;
317
+ height: 16px;
318
+ }
319
+ .checkbox--lg {
320
+ width: 20px;
321
+ height: 20px;
322
+ }
323
+ .checkbox:checked {
324
+ background-color: var(--color-surface);
325
+ }
326
+ .checkbox:checked::after {
327
+ content: "";
328
+ position: absolute;
329
+ display: block;
330
+ left: 50%;
331
+ top: 50%;
332
+ transform: translate(-50%, -50%) rotate(45deg);
333
+ width: 4px;
334
+ height: 8px;
335
+ border: solid var(--color-text);
336
+ border-width: 0 2px 2px 0;
337
+ }
338
+ .checkbox--sm:checked::after {
339
+ width: 3px;
340
+ height: 6px;
341
+ border-width: 0 1.5px 1.5px 0;
342
+ }
343
+ .checkbox--lg:checked::after {
344
+ width: 5px;
345
+ height: 10px;
346
+ border-width: 0 2.5px 2.5px 0;
347
+ }
348
+ .checkbox--indeterminate::after {
349
+ content: "";
350
+ position: absolute;
351
+ display: block;
352
+ left: 50%;
353
+ top: 50%;
354
+ transform: translate(-50%, -50%);
355
+ background-color: var(--color-text);
356
+ width: 8px;
357
+ height: 2px;
358
+ }
359
+ .checkbox--sm.checkbox--indeterminate::after {
360
+ width: 6px;
361
+ height: 1.5px;
362
+ }
363
+ .checkbox--lg.checkbox--indeterminate::after {
364
+ width: 10px;
365
+ height: 2.5px;
366
+ }
367
+ .checkbox:focus-visible {
368
+ outline: 1px dotted var(--color-focus);
369
+ outline-offset: 2px;
370
+ }
371
+ .checkbox--error {
372
+ border-color: var(--color-error);
373
+ }
374
+ .label {
375
+ font-family: var(--font-system);
376
+ font-weight: var(--font-weight-normal);
377
+ color: var(--color-text);
378
+ cursor: pointer;
379
+ user-select: none;
380
+ }
381
+ .wrapper--disabled .label {
382
+ cursor: not-allowed;
383
+ }
384
+ .label--sm {
385
+ font-size: var(--font-size-xs);
386
+ line-height: var(--line-height-tight);
387
+ }
388
+ .label--md {
389
+ font-size: var(--font-size-md);
390
+ line-height: var(--line-height-snug);
391
+ }
392
+ .label--lg {
393
+ font-size: var(--font-size-lg);
394
+ line-height: var(--line-height-normal);
395
+ }
396
+ .wrapper--sm {
397
+ gap: var(--spacing-1);
398
+ }
399
+ .wrapper--md {
400
+ gap: var(--spacing-2);
401
+ }
402
+ .wrapper--lg {
403
+ gap: var(--spacing-2);
404
+ }
405
+ @media (prefers-contrast: high) {
406
+ .checkbox {
407
+ border-width: var(--border-width-medium);
408
+ }
409
+ .checkbox:checked::after,
410
+ .checkbox--indeterminate::after {
411
+ border-width: 0 3px 3px 0;
412
+ }
413
+ }
414
+ @media (prefers-reduced-motion: reduce) {
415
+ .checkbox {
416
+ transition: none;
417
+ }
418
+ }
419
+
420
+ /* src/components/Radio/Radio.module.css */
421
+ .wrapper {
422
+ display: inline-flex;
423
+ align-items: center;
424
+ gap: var(--spacing-2);
425
+ position: relative;
426
+ cursor: pointer;
427
+ }
428
+ .wrapper--disabled {
429
+ opacity: 0.5;
430
+ cursor: not-allowed;
431
+ }
432
+ .wrapper--error {
433
+ }
434
+ .wrapper--label-left {
435
+ flex-direction: row-reverse;
436
+ }
437
+ .wrapper--label-right {
438
+ flex-direction: row;
439
+ }
440
+ .radio {
441
+ appearance: none;
442
+ -webkit-appearance: none;
443
+ -moz-appearance: none;
444
+ position: relative;
445
+ display: inline-block;
446
+ flex-shrink: 0;
447
+ margin: 0;
448
+ cursor: pointer;
449
+ background-color: var(--color-surface);
450
+ border: var(--border-width-thin) solid var(--color-border);
451
+ border-radius: 50%;
452
+ box-shadow: var(--shadow-inset);
453
+ transition: none;
454
+ }
455
+ .radio:disabled {
456
+ cursor: not-allowed;
457
+ }
458
+ .radio--sm {
459
+ width: 14px;
460
+ height: 14px;
461
+ }
462
+ .radio--md {
463
+ width: 16px;
464
+ height: 16px;
465
+ }
466
+ .radio--lg {
467
+ width: 20px;
468
+ height: 20px;
469
+ }
470
+ .radio:checked {
471
+ background-color: var(--color-surface);
472
+ }
473
+ .radio:checked::after {
474
+ content: "";
475
+ position: absolute;
476
+ display: block;
477
+ left: 50%;
478
+ top: 50%;
479
+ transform: translate(-50%, -50%);
480
+ background-color: var(--color-text);
481
+ border-radius: 50%;
482
+ width: 8px;
483
+ height: 8px;
484
+ }
485
+ .radio--sm:checked::after {
486
+ width: 6px;
487
+ height: 6px;
488
+ }
489
+ .radio--lg:checked::after {
490
+ width: 10px;
491
+ height: 10px;
492
+ }
493
+ .radio:focus-visible {
494
+ outline: 1px dotted var(--color-focus);
495
+ outline-offset: 2px;
496
+ }
497
+ .radio--error {
498
+ border-color: var(--color-error);
499
+ }
500
+ .label {
501
+ font-family: var(--font-system);
502
+ font-weight: var(--font-weight-normal);
503
+ color: var(--color-text);
504
+ cursor: pointer;
505
+ user-select: none;
506
+ }
507
+ .wrapper--disabled .label {
508
+ cursor: not-allowed;
509
+ }
510
+ .label--sm {
511
+ font-size: var(--font-size-xs);
512
+ line-height: var(--line-height-tight);
513
+ }
514
+ .label--md {
515
+ font-size: var(--font-size-md);
516
+ line-height: var(--line-height-snug);
517
+ }
518
+ .label--lg {
519
+ font-size: var(--font-size-lg);
520
+ line-height: var(--line-height-normal);
521
+ }
522
+ .wrapper--sm {
523
+ gap: var(--spacing-1);
524
+ }
525
+ .wrapper--md {
526
+ gap: var(--spacing-2);
527
+ }
528
+ .wrapper--lg {
529
+ gap: var(--spacing-2);
530
+ }
531
+ @media (prefers-contrast: high) {
532
+ .radio {
533
+ border-width: var(--border-width-medium);
534
+ }
535
+ .radio:checked::after {
536
+ width: 10px;
537
+ height: 10px;
538
+ }
539
+ .radio--sm:checked::after {
540
+ width: 8px;
541
+ height: 8px;
542
+ }
543
+ .radio--lg:checked::after {
544
+ width: 12px;
545
+ height: 12px;
546
+ }
547
+ }
548
+ @media (prefers-reduced-motion: reduce) {
549
+ .radio {
550
+ transition: none;
551
+ }
552
+ }
553
+
554
+ /* src/components/TextField/TextField.module.css */
555
+ .wrapper {
556
+ display: inline-flex;
557
+ flex-direction: column;
558
+ gap: var(--spacing-1);
559
+ position: relative;
560
+ }
561
+ .wrapper--full-width {
562
+ width: 100%;
563
+ }
564
+ .wrapper--disabled {
565
+ opacity: 0.5;
566
+ cursor: not-allowed;
567
+ }
568
+ .wrapper--label-top {
569
+ flex-direction: column;
570
+ }
571
+ .wrapper--label-left {
572
+ flex-direction: row;
573
+ align-items: center;
574
+ gap: var(--spacing-2);
575
+ }
576
+ .wrapper--label-right {
577
+ flex-direction: row-reverse;
578
+ align-items: center;
579
+ gap: var(--spacing-2);
580
+ }
581
+ .label {
582
+ font-family: var(--font-system);
583
+ font-weight: var(--font-weight-normal);
584
+ color: var(--color-text);
585
+ user-select: none;
586
+ }
587
+ .wrapper--disabled .label {
588
+ cursor: not-allowed;
589
+ }
590
+ .label--sm {
591
+ font-size: var(--font-size-xs);
592
+ line-height: var(--line-height-tight);
593
+ }
594
+ .label--md {
595
+ font-size: var(--font-size-md);
596
+ line-height: var(--line-height-snug);
597
+ }
598
+ .label--lg {
599
+ font-size: var(--font-size-lg);
600
+ line-height: var(--line-height-normal);
601
+ }
602
+ .input-wrapper {
603
+ position: relative;
604
+ display: flex;
605
+ align-items: center;
606
+ }
607
+ .wrapper--full-width .input-wrapper {
608
+ width: 100%;
609
+ }
610
+ .input {
611
+ font-family: var(--font-system);
612
+ font-weight: var(--font-weight-normal);
613
+ color: var(--color-text);
614
+ background-color: var(--color-surface);
615
+ border: var(--border-width-thin) solid var(--color-border);
616
+ border-radius: var(--border-radius-none);
617
+ box-shadow: var(--shadow-inset);
618
+ -webkit-appearance: none;
619
+ -moz-appearance: none;
620
+ appearance: none;
621
+ transition: none;
622
+ }
623
+ .input::placeholder {
624
+ color: var(--color-gray-600);
625
+ opacity: 1;
626
+ }
627
+ .input:disabled {
628
+ cursor: not-allowed;
629
+ background-color: var(--color-gray-200);
630
+ }
631
+ .input--sm {
632
+ min-height: 20px;
633
+ padding: var(--spacing-0_5) var(--spacing-2);
634
+ font-size: var(--font-size-xs);
635
+ line-height: var(--line-height-tight);
636
+ }
637
+ .input--md {
638
+ min-height: 24px;
639
+ padding: var(--spacing-1) var(--spacing-2);
640
+ font-size: var(--font-size-md);
641
+ line-height: var(--line-height-snug);
642
+ }
643
+ .input--lg {
644
+ min-height: 32px;
645
+ padding: var(--spacing-2) var(--spacing-3);
646
+ font-size: var(--font-size-lg);
647
+ line-height: var(--line-height-normal);
648
+ }
649
+ .input--full-width {
650
+ width: 100%;
651
+ }
652
+ .input-icon-left,
653
+ .input-icon-right {
654
+ position: absolute;
655
+ display: flex;
656
+ align-items: center;
657
+ justify-content: center;
658
+ pointer-events: none;
659
+ color: var(--color-gray-700);
660
+ }
661
+ .input-icon-left {
662
+ left: var(--spacing-2);
663
+ }
664
+ .input-icon-right {
665
+ right: var(--spacing-2);
666
+ }
667
+ .input-wrapper--with-left-icon .input {
668
+ padding-left: calc(var(--spacing-6) + var(--spacing-2));
669
+ }
670
+ .input-wrapper--with-right-icon .input {
671
+ padding-right: calc(var(--spacing-6) + var(--spacing-2));
672
+ }
673
+ .input:focus {
674
+ outline: 1px dotted var(--color-focus);
675
+ outline-offset: 2px;
676
+ }
677
+ .input--error {
678
+ border-color: var(--color-error);
679
+ }
680
+ .input--error:focus {
681
+ outline-color: var(--color-error);
682
+ }
683
+ .helper-text,
684
+ .error-message {
685
+ margin: 0;
686
+ font-family: var(--font-system);
687
+ font-size: var(--font-size-xs);
688
+ line-height: var(--line-height-tight);
689
+ }
690
+ .helper-text {
691
+ color: var(--color-gray-700);
692
+ }
693
+ .error-message {
694
+ color: var(--color-error);
695
+ }
696
+ .wrapper--sm {
697
+ gap: var(--spacing-0_5);
698
+ }
699
+ .wrapper--md {
700
+ gap: var(--spacing-1);
701
+ }
702
+ .wrapper--lg {
703
+ gap: var(--spacing-1);
704
+ }
705
+ .input[type=number]::-webkit-inner-spin-button,
706
+ .input[type=number]::-webkit-outer-spin-button {
707
+ -webkit-appearance: none;
708
+ margin: 0;
709
+ }
710
+ .input[type=number] {
711
+ -moz-appearance: textfield;
712
+ }
713
+ .input[type=search]::-webkit-search-decoration,
714
+ .input[type=search]::-webkit-search-cancel-button,
715
+ .input[type=search]::-webkit-search-results-button,
716
+ .input[type=search]::-webkit-search-results-decoration {
717
+ -webkit-appearance: none;
718
+ }
719
+ .input[type=password] {
720
+ font-family: monospace;
721
+ }
722
+ @media (prefers-contrast: high) {
723
+ .input {
724
+ border-width: var(--border-width-medium);
725
+ }
726
+ }
727
+ @media (prefers-reduced-motion: reduce) {
728
+ .input {
729
+ transition: none;
730
+ }
731
+ }
732
+
733
+ /* src/components/Select/Select.module.css */
734
+ .wrapper {
735
+ display: inline-flex;
736
+ flex-direction: column;
737
+ gap: var(--spacing-1);
738
+ position: relative;
739
+ }
740
+ .wrapper--full-width {
741
+ width: 100%;
742
+ }
743
+ .wrapper--disabled {
744
+ opacity: 0.5;
745
+ cursor: not-allowed;
746
+ }
747
+ .wrapper--label-top {
748
+ flex-direction: column;
749
+ }
750
+ .wrapper--label-left {
751
+ flex-direction: row;
752
+ align-items: center;
753
+ gap: var(--spacing-2);
754
+ }
755
+ .wrapper--label-right {
756
+ flex-direction: row-reverse;
757
+ align-items: center;
758
+ gap: var(--spacing-2);
759
+ }
760
+ .label {
761
+ font-family: var(--font-system);
762
+ font-weight: var(--font-weight-normal);
763
+ color: var(--color-text);
764
+ user-select: none;
765
+ }
766
+ .wrapper--disabled .label {
767
+ cursor: not-allowed;
768
+ }
769
+ .label--sm {
770
+ font-size: var(--font-size-xs);
771
+ line-height: var(--line-height-tight);
772
+ }
773
+ .label--md {
774
+ font-size: var(--font-size-md);
775
+ line-height: var(--line-height-snug);
776
+ }
777
+ .label--lg {
778
+ font-size: var(--font-size-lg);
779
+ line-height: var(--line-height-normal);
780
+ }
781
+ .select {
782
+ font-family: var(--font-system);
783
+ font-weight: var(--font-weight-normal);
784
+ color: var(--color-text);
785
+ background-color: var(--color-surface);
786
+ border: var(--border-width-thin) solid var(--color-border);
787
+ border-radius: var(--border-radius-none);
788
+ box-shadow: var(--shadow-bevel);
789
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23000000' d='M2 4l4 4 4-4z'/%3E%3C/svg%3E");
790
+ background-repeat: no-repeat;
791
+ background-position: right var(--spacing-1) center;
792
+ -webkit-appearance: none;
793
+ -moz-appearance: none;
794
+ appearance: none;
795
+ cursor: pointer;
796
+ transition: none;
797
+ }
798
+ .select:disabled {
799
+ cursor: not-allowed;
800
+ background-color: var(--color-gray-200);
801
+ }
802
+ .select--sm {
803
+ min-height: 20px;
804
+ padding: var(--spacing-0_5) var(--spacing-6) var(--spacing-0_5) var(--spacing-2);
805
+ font-size: var(--font-size-xs);
806
+ line-height: var(--line-height-tight);
807
+ }
808
+ .select--md {
809
+ min-height: 24px;
810
+ padding: var(--spacing-1) var(--spacing-6) var(--spacing-1) var(--spacing-2);
811
+ font-size: var(--font-size-md);
812
+ line-height: var(--line-height-snug);
813
+ }
814
+ .select--lg {
815
+ min-height: 32px;
816
+ padding: var(--spacing-2) var(--spacing-8) var(--spacing-2) var(--spacing-3);
817
+ font-size: var(--font-size-lg);
818
+ line-height: var(--line-height-normal);
819
+ }
820
+ .select--full-width {
821
+ width: 100%;
822
+ }
823
+ .select:focus {
824
+ outline: 1px dotted var(--color-focus);
825
+ outline-offset: 2px;
826
+ }
827
+ .select--error {
828
+ border-color: var(--color-error);
829
+ }
830
+ .select--error:focus {
831
+ outline-color: var(--color-error);
832
+ }
833
+ .helper-text,
834
+ .error-message {
835
+ margin: 0;
836
+ font-family: var(--font-system);
837
+ font-size: var(--font-size-xs);
838
+ line-height: var(--line-height-tight);
839
+ }
840
+ .helper-text {
841
+ color: var(--color-gray-700);
842
+ }
843
+ .error-message {
844
+ color: var(--color-error);
845
+ }
846
+ .wrapper--sm {
847
+ gap: var(--spacing-0_5);
848
+ }
849
+ .wrapper--md {
850
+ gap: var(--spacing-1);
851
+ }
852
+ .wrapper--lg {
853
+ gap: var(--spacing-1);
854
+ }
855
+ .select option {
856
+ font-family: var(--font-system);
857
+ padding: var(--spacing-1);
858
+ background-color: var(--color-surface);
859
+ color: var(--color-text);
860
+ }
861
+ .select option:disabled {
862
+ color: var(--color-gray-600);
863
+ }
864
+ @media (prefers-contrast: high) {
865
+ .select {
866
+ border-width: var(--border-width-medium);
867
+ }
868
+ }
869
+ @media (prefers-reduced-motion: reduce) {
870
+ .select {
871
+ transition: none;
872
+ }
873
+ }
874
+
875
+ /* src/components/Tabs/Tabs.module.css */
876
+ .container {
877
+ display: flex;
878
+ flex-direction: column;
879
+ width: 100%;
880
+ }
881
+ .tabList {
882
+ display: flex;
883
+ gap: var(--spacing-1);
884
+ margin: 0;
885
+ padding: 0;
886
+ list-style: none;
887
+ margin-bottom: -1px;
888
+ }
889
+ .tabList--full-width {
890
+ width: 100%;
891
+ }
892
+ .tab {
893
+ font-family: var(--font-system);
894
+ font-weight: var(--font-weight-normal);
895
+ color: var(--color-text);
896
+ background: var(--color-gray-400);
897
+ border: var(--border-width-thin) solid var(--color-border);
898
+ border-radius: var(--border-radius-none);
899
+ box-shadow: var(--shadow-raised);
900
+ padding: var(--spacing-1_5) var(--spacing-4);
901
+ position: relative;
902
+ cursor: pointer;
903
+ -webkit-appearance: none;
904
+ -moz-appearance: none;
905
+ appearance: none;
906
+ transition: none;
907
+ white-space: nowrap;
908
+ user-select: none;
909
+ clip-path: polygon(3px 0, 2px 1px, 1px 2px, 0 3px, 0 100%, 100% 100%, 100% 3px, calc(100% - 1px) 2px, calc(100% - 2px) 1px, calc(100% - 3px) 0);
910
+ }
911
+ .tab--active {
912
+ background: var(--color-surface);
913
+ z-index: 1;
914
+ border-bottom-color: var(--color-surface);
915
+ }
916
+ .tab--disabled {
917
+ opacity: 0.5;
918
+ cursor: not-allowed;
919
+ pointer-events: none;
920
+ }
921
+ .tab--sm {
922
+ padding: var(--spacing-1) var(--spacing-3);
923
+ font-size: var(--font-size-xs);
924
+ line-height: var(--line-height-tight);
925
+ }
926
+ .tab--md {
927
+ padding: var(--spacing-1_5) var(--spacing-4);
928
+ font-size: var(--font-size-md);
929
+ line-height: var(--line-height-snug);
930
+ }
931
+ .tab--lg {
932
+ padding: var(--spacing-2) var(--spacing-5);
933
+ font-size: var(--font-size-lg);
934
+ line-height: var(--line-height-normal);
935
+ }
936
+ .tab--full-width {
937
+ flex: 1;
938
+ }
939
+ .tabIcon {
940
+ display: inline-flex;
941
+ align-items: center;
942
+ justify-content: center;
943
+ margin-right: var(--spacing-1);
944
+ }
945
+ .tab:focus-visible {
946
+ outline: 1px dotted var(--color-focus);
947
+ outline-offset: -3px;
948
+ }
949
+ .tab:not(.tab--active):not(.tab--disabled):hover {
950
+ background: var(--color-gray-300);
951
+ }
952
+ .panelContainer {
953
+ background-color: var(--color-surface);
954
+ border: var(--border-width-thin) solid var(--color-border);
955
+ box-shadow: var(--shadow-inset);
956
+ position: relative;
957
+ width: 100%;
958
+ }
959
+ .panelContainer--sm {
960
+ padding: var(--spacing-3);
961
+ }
962
+ .panelContainer--md {
963
+ padding: var(--spacing-4);
964
+ }
965
+ .panelContainer--lg {
966
+ padding: var(--spacing-5);
967
+ }
968
+ @media (prefers-reduced-motion: reduce) {
969
+ .tab {
970
+ transition: none;
971
+ }
972
+ }
973
+
974
+ /* src/styles/pixelated-corners.css */
975
+ .pixelated-corner-sm {
976
+ clip-path: polygon(2px 0, 0 2px, 0 100%, 0 100%, 100% 100%, 100% 100%, 100% 2px, calc(100% - 2px) 0);
977
+ }
978
+ .pixelated-corner-md {
979
+ clip-path: polygon(4px 0, 3px 1px, 2px 2px, 1px 3px, 0 4px, 0 calc(100% - 4px), 1px calc(100% - 3px), 2px calc(100% - 2px), 3px calc(100% - 1px), 4px 100%, calc(100% - 4px) 100%, calc(100% - 3px) calc(100% - 1px), calc(100% - 2px) calc(100% - 2px), calc(100% - 1px) calc(100% - 3px), 100% calc(100% - 4px), 100% 4px, calc(100% - 1px) 3px, calc(100% - 2px) 2px, calc(100% - 3px) 1px, calc(100% - 4px) 0);
980
+ }
981
+ .pixelated-corner-pseudo::before,
982
+ .pixelated-corner-pseudo::after {
983
+ content: "";
984
+ position: absolute;
985
+ background-color: inherit;
986
+ }
987
+ .pixelated-corner-pseudo::before {
988
+ top: 0;
989
+ left: 2px;
990
+ right: 2px;
991
+ height: 1px;
992
+ box-shadow: -1px 1px 0 0 currentColor, calc(100% + 1px) 1px 0 0 currentColor;
993
+ }
994
+ .pixelated-corner-pseudo::after {
995
+ bottom: 0;
996
+ left: 2px;
997
+ right: 2px;
998
+ height: 1px;
999
+ box-shadow: -1px -1px 0 0 currentColor, calc(100% + 1px) -1px 0 0 currentColor;
1000
+ }
1001
+ .mac-corner {
1002
+ position: relative;
1003
+ background-clip: padding-box;
1004
+ }
1005
+ .mac-corner::before {
1006
+ content: "";
1007
+ position: absolute;
1008
+ top: 0;
1009
+ left: 0;
1010
+ width: 2px;
1011
+ height: 2px;
1012
+ background: transparent;
1013
+ box-shadow: 0 0 0 1px var(--color-background, #eeeeee), 1px 1px 0 0 var(--color-border, #262626);
1014
+ }
1015
+ .mac-corner::after {
1016
+ content: "";
1017
+ position: absolute;
1018
+ top: 0;
1019
+ right: 0;
1020
+ width: 2px;
1021
+ height: 2px;
1022
+ background: transparent;
1023
+ box-shadow: 0 0 0 1px var(--color-background, #eeeeee), -1px 1px 0 0 var(--color-border, #262626);
1024
+ }
1025
+ .chamfered-sm {
1026
+ clip-path: polygon(2px 0, calc(100% - 2px) 0, 100% 2px, 100% calc(100% - 2px), calc(100% - 2px) 100%, 2px 100%, 0 calc(100% - 2px), 0 2px);
1027
+ }
1028
+ .chamfered-md {
1029
+ clip-path: polygon(3px 0, calc(100% - 3px) 0, 100% 3px, 100% calc(100% - 3px), calc(100% - 3px) 100%, 3px 100%, 0 calc(100% - 3px), 0 3px);
1030
+ }
1031
+ .tab-corner {
1032
+ position: relative;
1033
+ clip-path: polygon(3px 0, 2px 1px, 1px 2px, 0 3px, 0 100%, 100% 100%, 100% 3px, calc(100% - 1px) 2px, calc(100% - 2px) 1px, calc(100% - 3px) 0);
1034
+ }
1035
+ .button-corner {
1036
+ clip-path: polygon(2px 0, calc(100% - 2px) 0, 100% 2px, 100% calc(100% - 2px), calc(100% - 2px) 100%, 2px 100%, 0 calc(100% - 2px), 0 2px);
1037
+ }
1038
+ .window-corner {
1039
+ clip-path: polygon(4px 0, 3px 1px, 2px 2px, 1px 3px, 0 4px, 0 calc(100% - 4px), 1px calc(100% - 3px), 2px calc(100% - 2px), 3px calc(100% - 1px), 4px 100%, calc(100% - 4px) 100%, calc(100% - 3px) calc(100% - 1px), calc(100% - 2px) calc(100% - 2px), calc(100% - 1px) calc(100% - 3px), 100% calc(100% - 4px), 100% 4px, calc(100% - 1px) 3px, calc(100% - 2px) 2px, calc(100% - 3px) 1px, calc(100% - 4px) 0);
1040
+ }
1041
+
1042
+ /* src/components/Window/Window.module.css */
1043
+ .window {
1044
+ display: flex;
1045
+ flex-direction: column;
1046
+ background-color: var(--color-gray-300);
1047
+ border: var(--border-width-thin) solid var(--color-black);
1048
+ filter: drop-shadow(2px 2px 0px rgba(0, 0, 0, 0.5));
1049
+ position: relative;
1050
+ overflow: hidden;
1051
+ width: auto;
1052
+ height: auto;
1053
+ min-width: 200px;
1054
+ min-height: 100px;
1055
+ }
1056
+ .window--active {
1057
+ z-index: 10;
1058
+ }
1059
+ .window--inactive {
1060
+ opacity: 0.92;
1061
+ z-index: 1;
1062
+ }
1063
+ .titleBar {
1064
+ display: flex;
1065
+ align-items: center;
1066
+ background-color: #CBCBCB;
1067
+ border-bottom: var(--border-width-thin) solid var(--color-black);
1068
+ padding: var(--spacing-1_5) var(--spacing-2);
1069
+ min-height: 22px;
1070
+ user-select: none;
1071
+ position: relative;
1072
+ }
1073
+ .titleBar[data-numControls="3"] .titleCenter > :first-child {
1074
+ width: calc(100% - (48px + var(--spacing-2)));
1075
+ margin-left: calc(48px + var(--spacing-2));
1076
+ }
1077
+ .titleBar[data-numControls="2"] .titleCenter > :first-child {
1078
+ width: calc(100% - (36px + var(--spacing-2)));
1079
+ margin-left: calc(36px + var(--spacing-2));
1080
+ }
1081
+ .titleBar[data-numControls="1"] .titleCenter > :first-child {
1082
+ width: calc(100% - (24px));
1083
+ margin-left: calc(24px);
1084
+ }
1085
+ .titleCenter {
1086
+ display: grid;
1087
+ align-items: center;
1088
+ width: 100%;
1089
+ grid-template-columns: 1fr max-content 1fr;
1090
+ }
1091
+ .titleCenter svg {
1092
+ width: 100%;
1093
+ }
1094
+ .titleBar::before {
1095
+ content: "";
1096
+ left: 60px;
1097
+ top: 50%;
1098
+ flex-grow: 1;
1099
+ height: 12px;
1100
+ pointer-events: none;
1101
+ }
1102
+ .titleBar::after {
1103
+ content: "";
1104
+ right: 8px;
1105
+ top: 50%;
1106
+ flex-grow: 1;
1107
+ flex: 1;
1108
+ height: 12px;
1109
+ pointer-events: none;
1110
+ }
1111
+ .controls {
1112
+ display: flex;
1113
+ gap: var(--spacing-1);
1114
+ align-items: center;
1115
+ position: absolute;
1116
+ left: 12px;
1117
+ z-index: 1;
1118
+ }
1119
+ .controlButton {
1120
+ width: 12px;
1121
+ height: 12px;
1122
+ padding: 0;
1123
+ margin: 0;
1124
+ background: transparent;
1125
+ border: var(--border-width-thin) solid var(--color-border);
1126
+ cursor: pointer;
1127
+ box-shadow: var(--shadow-inset);
1128
+ transition: none;
1129
+ position: relative;
1130
+ z-index: 2;
1131
+ }
1132
+ .controlButton:hover {
1133
+ background-color: var(--color-gray-300);
1134
+ }
1135
+ .controlButton:active {
1136
+ box-shadow: var(--shadow-pressed);
1137
+ }
1138
+ .controlButton:focus-visible {
1139
+ outline: 1px dotted var(--color-focus);
1140
+ outline-offset: 1px;
1141
+ }
1142
+ .closeBox,
1143
+ .minimizeBox,
1144
+ .maximizeBox {
1145
+ width: 100%;
1146
+ height: 100%;
1147
+ position: relative;
1148
+ }
1149
+ .closeBox::before,
1150
+ .closeBox::after {
1151
+ content: "";
1152
+ position: absolute;
1153
+ top: 50%;
1154
+ left: 50%;
1155
+ width: 6px;
1156
+ }
1157
+ .minimizeBox::before {
1158
+ content: "";
1159
+ position: absolute;
1160
+ top: 50%;
1161
+ left: 50%;
1162
+ transform: translate(-50%, -50%);
1163
+ width: 6px;
1164
+ height: 1px;
1165
+ background-color: var(--color-border);
1166
+ }
1167
+ .maximizeBox::before {
1168
+ content: "";
1169
+ position: absolute;
1170
+ top: 50%;
1171
+ left: 50%;
1172
+ transform: translate(-50%, -50%);
1173
+ width: 4px;
1174
+ height: 4px;
1175
+ border: 1px solid var(--color-border);
1176
+ }
1177
+ .titleText {
1178
+ font-family: var(--font-system);
1179
+ font-size: var(--font-size-md);
1180
+ font-weight: var(--font-weight-bold);
1181
+ line-height: var(--line-height-snug);
1182
+ color: var(--color-text);
1183
+ padding: 0 var(--spacing-2);
1184
+ overflow: hidden;
1185
+ text-overflow: ellipsis;
1186
+ white-space: nowrap;
1187
+ z-index: 1;
1188
+ }
1189
+ .content {
1190
+ flex: 1;
1191
+ overflow: auto;
1192
+ background-color: var(--color-gray-100);
1193
+ padding: var(--spacing-4);
1194
+ position: relative;
1195
+ margin: var(--spacing-2);
1196
+ border: var(--border-width-thin) solid #555555;
1197
+ }
1198
+ .resizeHandle {
1199
+ position: absolute;
1200
+ bottom: 0;
1201
+ right: 0;
1202
+ width: 12px;
1203
+ height: 12px;
1204
+ background-image:
1205
+ linear-gradient(
1206
+ 135deg,
1207
+ transparent 0%,
1208
+ transparent 40%,
1209
+ var(--color-border) 40%,
1210
+ var(--color-border) 45%,
1211
+ transparent 45%,
1212
+ transparent 55%,
1213
+ var(--color-border) 55%,
1214
+ var(--color-border) 60%,
1215
+ transparent 60%);
1216
+ cursor: nwse-resize;
1217
+ z-index: 5;
1218
+ }
1219
+ @media (prefers-contrast: high) {
1220
+ .window {
1221
+ border-width: 2px;
1222
+ }
1223
+ .controlButton {
1224
+ border-width: 2px;
1225
+ }
1226
+ }
1227
+ @media (prefers-reduced-motion: reduce) {
1228
+ .controlButton {
1229
+ transition: none;
1230
+ }
1231
+ }
1232
+
1233
+ /* src/components/Dialog/Dialog.module.css */
1234
+ .backdrop {
1235
+ position: fixed;
1236
+ top: 0;
1237
+ left: 0;
1238
+ right: 0;
1239
+ bottom: 0;
1240
+ z-index: 1000;
1241
+ background-color: rgba(0, 0, 0, 0.3);
1242
+ display: flex;
1243
+ align-items: center;
1244
+ justify-content: center;
1245
+ backdrop-filter: none;
1246
+ }
1247
+ .dialogContainer {
1248
+ position: relative;
1249
+ pointer-events: auto;
1250
+ animation: dialogFadeIn 0.15s ease-out;
1251
+ }
1252
+ @keyframes dialogFadeIn {
1253
+ from {
1254
+ opacity: 0;
1255
+ transform: scale(0.95);
1256
+ }
1257
+ to {
1258
+ opacity: 1;
1259
+ transform: scale(1);
1260
+ }
1261
+ }
1262
+ @media (prefers-reduced-motion: reduce) {
1263
+ .dialogContainer {
1264
+ animation: none;
1265
+ }
1266
+ }
1267
+
1268
+ /* src/components/MenuBar/MenuBar.module.css */
1269
+ .menuBar {
1270
+ display: flex;
1271
+ align-items: stretch;
1272
+ background-color: var(--color-gray-100);
1273
+ border-bottom: var(--border-width-thin) solid var(--color-black);
1274
+ width: 100%;
1275
+ min-height: 24px;
1276
+ position: relative;
1277
+ user-select: none;
1278
+ }
1279
+ .menuContainer {
1280
+ position: relative;
1281
+ display: flex;
1282
+ align-items: stretch;
1283
+ }
1284
+ .menuButton {
1285
+ padding: var(--spacing-1) var(--spacing-3);
1286
+ font-family: var(--font-system);
1287
+ font-size: var(--font-size-md);
1288
+ font-weight: var(--font-weight-bold);
1289
+ line-height: var(--line-height-snug);
1290
+ color: var(--color-text);
1291
+ text-align: center;
1292
+ white-space: nowrap;
1293
+ background-color: transparent;
1294
+ border: none;
1295
+ cursor: pointer;
1296
+ transition: background-color 50ms ease;
1297
+ user-select: none;
1298
+ }
1299
+ .menuButton:hover:not(.menuButton--disabled) {
1300
+ background-color: #0000BB;
1301
+ color: var(--color-white);
1302
+ }
1303
+ .menuButton:focus-visible {
1304
+ outline: 1px dotted var(--color-focus);
1305
+ outline-offset: -1px;
1306
+ }
1307
+ .menuButton--open {
1308
+ background-color: #0000BB;
1309
+ color: var(--color-white);
1310
+ }
1311
+ .menuButton--disabled {
1312
+ color: var(--color-gray-500);
1313
+ cursor: not-allowed;
1314
+ }
1315
+ .dropdown {
1316
+ position: absolute;
1317
+ top: 100%;
1318
+ left: 0;
1319
+ z-index: 1000;
1320
+ background-color: var(--color-gray-100);
1321
+ border: var(--border-width-thin) solid var(--color-black);
1322
+ box-shadow: 2px 2px 0px rgba(0, 0, 0, 0.5);
1323
+ min-width: 200px;
1324
+ padding: var(--spacing-1) 0;
1325
+ animation: menuFadeIn 100ms ease-out;
1326
+ }
1327
+ @keyframes menuFadeIn {
1328
+ from {
1329
+ opacity: 0;
1330
+ transform: translateY(-4px);
1331
+ }
1332
+ to {
1333
+ opacity: 1;
1334
+ transform: translateY(0);
1335
+ }
1336
+ }
1337
+ @media (prefers-contrast: high) {
1338
+ .menuBar {
1339
+ border-width: 2px;
1340
+ }
1341
+ .menuButton:hover:not(.menuButton--disabled),
1342
+ .menuButton--open {
1343
+ outline: 2px solid currentColor;
1344
+ outline-offset: -2px;
1345
+ }
1346
+ .dropdown {
1347
+ border-width: 2px;
1348
+ }
1349
+ }
1350
+ @media (prefers-reduced-motion: reduce) {
1351
+ .menuButton {
1352
+ transition: none;
1353
+ }
1354
+ .dropdown {
1355
+ animation: none;
1356
+ }
1357
+ }
1358
+
1359
+ /* src/components/MenuBar/MenuItem.module.css */
1360
+ .menuItem {
1361
+ display: flex;
1362
+ align-items: center;
1363
+ gap: var(--spacing-2);
1364
+ width: 100%;
1365
+ padding: var(--spacing-1) var(--spacing-3);
1366
+ min-height: 20px;
1367
+ font-family: var(--font-system);
1368
+ font-size: var(--font-size-md);
1369
+ font-weight: var(--font-weight-bold);
1370
+ line-height: var(--line-height-snug);
1371
+ text-align: left;
1372
+ color: var(--color-text);
1373
+ background-color: transparent;
1374
+ border: none;
1375
+ cursor: pointer;
1376
+ transition: background-color 50ms ease;
1377
+ user-select: none;
1378
+ }
1379
+ .menuItem:hover:not(.menuItem--disabled) {
1380
+ background-color: #0000BB;
1381
+ color: var(--color-white);
1382
+ }
1383
+ .menuItem:focus-visible {
1384
+ outline: 1px dotted var(--color-focus);
1385
+ outline-offset: -1px;
1386
+ }
1387
+ .menuItem--selected {
1388
+ background-color: #0000BB;
1389
+ color: var(--color-white);
1390
+ }
1391
+ .menuItem--disabled {
1392
+ color: var(--color-gray-500);
1393
+ cursor: not-allowed;
1394
+ }
1395
+ .menuItem--separator {
1396
+ }
1397
+ .checkmark {
1398
+ width: 16px;
1399
+ min-width: 16px;
1400
+ text-align: center;
1401
+ font-size: var(--font-size-md);
1402
+ }
1403
+ .icon {
1404
+ display: flex;
1405
+ align-items: center;
1406
+ justify-content: center;
1407
+ width: 16px;
1408
+ min-width: 16px;
1409
+ height: 16px;
1410
+ }
1411
+ .label {
1412
+ flex: 1;
1413
+ overflow: hidden;
1414
+ text-overflow: ellipsis;
1415
+ white-space: nowrap;
1416
+ }
1417
+ .shortcut {
1418
+ margin-left: auto;
1419
+ font-size: var(--font-size-sm);
1420
+ opacity: 0.8;
1421
+ white-space: nowrap;
1422
+ }
1423
+ .submenuArrow {
1424
+ font-size: 8px;
1425
+ margin-left: var(--spacing-1);
1426
+ }
1427
+ .separatorLine {
1428
+ height: 1px;
1429
+ background-color: var(--color-gray-500);
1430
+ margin: var(--spacing-1) var(--spacing-2);
1431
+ }
1432
+ .menuItem:hover:not(.menuItem--disabled) .checkmark,
1433
+ .menuItem:hover:not(.menuItem--disabled) .icon,
1434
+ .menuItem:hover:not(.menuItem--disabled) .label,
1435
+ .menuItem:hover:not(.menuItem--disabled) .shortcut,
1436
+ .menuItem:hover:not(.menuItem--disabled) .submenuArrow {
1437
+ color: var(--color-white);
1438
+ }
1439
+ .menuItem--selected .checkmark,
1440
+ .menuItem--selected .icon,
1441
+ .menuItem--selected .label,
1442
+ .menuItem--selected .shortcut,
1443
+ .menuItem--selected .submenuArrow {
1444
+ color: var(--color-white);
1445
+ }
1446
+ @media (prefers-contrast: high) {
1447
+ .menuItem:hover:not(.menuItem--disabled) {
1448
+ outline: 2px solid currentColor;
1449
+ outline-offset: -2px;
1450
+ }
1451
+ }
1452
+ @media (prefers-reduced-motion: reduce) {
1453
+ .menuItem {
1454
+ transition: none;
1455
+ }
1456
+ }
1457
+
1458
+ /* src/components/Scrollbar/Scrollbar.module.css */
1459
+ .scrollbar {
1460
+ display: flex;
1461
+ background: var(--color-surface);
1462
+ border: var(--border-width-thin) solid var(--color-border);
1463
+ position: relative;
1464
+ user-select: none;
1465
+ }
1466
+ .scrollbar--vertical {
1467
+ flex-direction: column;
1468
+ width: 16px;
1469
+ min-height: 60px;
1470
+ }
1471
+ .scrollbar--horizontal {
1472
+ flex-direction: row;
1473
+ height: 16px;
1474
+ min-width: 60px;
1475
+ }
1476
+ .scrollbar--disabled {
1477
+ opacity: 0.5;
1478
+ cursor: not-allowed;
1479
+ }
1480
+ .arrow {
1481
+ background: var(--color-gray-400);
1482
+ border: none;
1483
+ box-shadow: var(--shadow-raised);
1484
+ flex-shrink: 0;
1485
+ width: 16px;
1486
+ height: 16px;
1487
+ display: flex;
1488
+ align-items: center;
1489
+ justify-content: center;
1490
+ cursor: pointer;
1491
+ -webkit-appearance: none;
1492
+ -moz-appearance: none;
1493
+ appearance: none;
1494
+ transition: none;
1495
+ position: relative;
1496
+ }
1497
+ .arrow:hover:not(:disabled) {
1498
+ background: var(--color-gray-300);
1499
+ }
1500
+ .arrow:active:not(:disabled) {
1501
+ box-shadow: var(--shadow-inset);
1502
+ background: var(--color-gray-500);
1503
+ }
1504
+ .arrow:disabled {
1505
+ opacity: 0.5;
1506
+ cursor: not-allowed;
1507
+ }
1508
+ .arrowIcon {
1509
+ width: 0;
1510
+ height: 0;
1511
+ border-style: solid;
1512
+ }
1513
+ .scrollbar--vertical .arrow--start .arrowIcon {
1514
+ border-width: 0 3px 4px 3px;
1515
+ border-color: transparent transparent var(--color-text) transparent;
1516
+ }
1517
+ .scrollbar--vertical .arrow--end .arrowIcon {
1518
+ border-width: 4px 3px 0 3px;
1519
+ border-color: var(--color-text) transparent transparent transparent;
1520
+ }
1521
+ .scrollbar--horizontal .arrow--start .arrowIcon {
1522
+ border-width: 3px 4px 3px 0;
1523
+ border-color: transparent var(--color-text) transparent transparent;
1524
+ }
1525
+ .scrollbar--horizontal .arrow--end .arrowIcon {
1526
+ border-width: 3px 0 3px 4px;
1527
+ border-color: transparent transparent transparent var(--color-text);
1528
+ }
1529
+ .track {
1530
+ background: var(--color-gray-200);
1531
+ flex: 1;
1532
+ position: relative;
1533
+ cursor: pointer;
1534
+ background-image:
1535
+ repeating-linear-gradient(
1536
+ 0deg,
1537
+ transparent,
1538
+ transparent 1px,
1539
+ rgba(0, 0, 0, 0.03) 1px,
1540
+ rgba(0, 0, 0, 0.03) 2px);
1541
+ }
1542
+ .thumb {
1543
+ background: var(--color-gray-400);
1544
+ border: var(--border-width-thin) solid var(--color-border);
1545
+ box-shadow: var(--shadow-raised);
1546
+ position: absolute;
1547
+ cursor: grab;
1548
+ transition: none;
1549
+ }
1550
+ .thumb:active {
1551
+ cursor: grabbing;
1552
+ background: var(--color-gray-300);
1553
+ }
1554
+ .scrollbar--vertical .thumb {
1555
+ left: 0;
1556
+ right: 0;
1557
+ min-height: 16px;
1558
+ }
1559
+ .scrollbar--horizontal .thumb {
1560
+ top: 0;
1561
+ bottom: 0;
1562
+ min-width: 16px;
1563
+ }
1564
+ .arrow:focus-visible {
1565
+ outline: 1px dotted var(--color-focus);
1566
+ outline-offset: -2px;
1567
+ }
1568
+ @media (prefers-reduced-motion: reduce) {
1569
+ .thumb {
1570
+ transition: none;
1571
+ }
1572
+ }
1573
+ @media (prefers-contrast: high) {
1574
+ .scrollbar {
1575
+ border-width: 2px;
1576
+ }
1577
+ .thumb {
1578
+ border-width: 2px;
1579
+ }
1580
+ }
1581
+
1582
+ /* src/components/ListView/ListView.module.css */
1583
+ .listView {
1584
+ display: flex;
1585
+ flex-direction: column;
1586
+ background: var(--color-surface);
1587
+ border: var(--border-width-thin) solid var(--color-border);
1588
+ box-shadow: var(--shadow-inset);
1589
+ font-family: var(--font-system);
1590
+ font-size: var(--font-size-md);
1591
+ user-select: none;
1592
+ overflow: auto;
1593
+ }
1594
+ .header {
1595
+ display: flex;
1596
+ flex-shrink: 0;
1597
+ background: var(--color-gray-400);
1598
+ border-bottom: var(--border-width-thin) solid var(--color-border);
1599
+ box-shadow: var(--shadow-raised);
1600
+ position: sticky;
1601
+ top: 0;
1602
+ z-index: 1;
1603
+ }
1604
+ .headerCell {
1605
+ padding: var(--spacing-1) var(--spacing-2);
1606
+ font-weight: var(--font-weight-bold);
1607
+ color: var(--color-text);
1608
+ display: flex;
1609
+ align-items: center;
1610
+ gap: var(--spacing-1);
1611
+ border-right: var(--border-width-thin) solid var(--color-border);
1612
+ white-space: nowrap;
1613
+ overflow: hidden;
1614
+ text-overflow: ellipsis;
1615
+ }
1616
+ .headerCell:last-child {
1617
+ border-right: none;
1618
+ flex: 1;
1619
+ }
1620
+ .headerCell.sortable {
1621
+ cursor: pointer;
1622
+ }
1623
+ .headerCell.sortable:hover {
1624
+ background: var(--color-gray-300);
1625
+ }
1626
+ .sortIndicator {
1627
+ font-size: var(--font-size-xs);
1628
+ color: var(--color-text);
1629
+ }
1630
+ .body {
1631
+ flex: 1;
1632
+ overflow-y: auto;
1633
+ background: var(--color-surface);
1634
+ }
1635
+ .row {
1636
+ display: flex;
1637
+ border-bottom: var(--border-width-thin) solid var(--color-border);
1638
+ cursor: pointer;
1639
+ transition: none;
1640
+ }
1641
+ .row:hover {
1642
+ background: var(--color-gray-300);
1643
+ }
1644
+ .row.selected {
1645
+ background: var(--color-gray-400);
1646
+ color: var(--color-text);
1647
+ }
1648
+ .row.selected:hover {
1649
+ background: var(--color-gray-500);
1650
+ }
1651
+ .cell {
1652
+ padding: var(--spacing-1) var(--spacing-2);
1653
+ display: flex;
1654
+ align-items: center;
1655
+ gap: var(--spacing-1);
1656
+ border-right: var(--border-width-thin) solid var(--color-border);
1657
+ white-space: nowrap;
1658
+ overflow: hidden;
1659
+ text-overflow: ellipsis;
1660
+ }
1661
+ .cell:last-child {
1662
+ border-right: none;
1663
+ flex: 1;
1664
+ }
1665
+ .icon {
1666
+ display: inline-flex;
1667
+ align-items: center;
1668
+ justify-content: center;
1669
+ flex-shrink: 0;
1670
+ width: 16px;
1671
+ height: 16px;
1672
+ }
1673
+ .row:focus-visible {
1674
+ outline: 1px dotted var(--color-focus);
1675
+ outline-offset: -1px;
1676
+ }
1677
+ @media (prefers-reduced-motion: reduce) {
1678
+ .row {
1679
+ transition: none;
1680
+ }
1681
+ }
1682
+ @media (prefers-contrast: high) {
1683
+ .listView {
1684
+ border-width: 2px;
1685
+ }
1686
+ .row.selected {
1687
+ outline: 2px solid var(--color-text);
1688
+ }
1689
+ }
1690
+
1691
+ /* src/components/FolderList/FolderList.module.css */
1692
+ .folderListContent {
1693
+ padding: 0;
1694
+ display: flex;
1695
+ flex-direction: column;
1696
+ overflow: hidden;
1697
+ }
1698
+ .listView {
1699
+ flex: 1;
1700
+ border: none;
1701
+ box-shadow: none;
1702
+ }
1703
+ /*# sourceMappingURL=index.css.map */