@open-grid/vue-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,1132 @@
1
+ .og-grid {
2
+ position: relative;
3
+ display: flex;
4
+ flex-direction: column;
5
+ width: 100%;
6
+ min-height: 180px;
7
+ overflow: hidden;
8
+ border: 1px solid var(--og-border-color);
9
+ border-radius: var(--og-radius-lg, var(--og-radius));
10
+ background: var(--og-surface);
11
+ box-shadow: var(--og-shadow-sm, 0 1px 2px rgb(16 24 40 / 6%));
12
+ }
13
+
14
+ .og-grid[data-density="compact"],
15
+ [data-open-grid][data-density="compact"] {
16
+ --og-row-height: 32px;
17
+ --og-header-height: 36px;
18
+ }
19
+
20
+ .og-grid[data-density="standard"],
21
+ [data-open-grid][data-density="standard"] {
22
+ --og-row-height: 40px;
23
+ --og-header-height: 42px;
24
+ }
25
+
26
+ .og-grid[data-density="comfortable"],
27
+ [data-open-grid][data-density="comfortable"] {
28
+ --og-row-height: 48px;
29
+ --og-header-height: 48px;
30
+ }
31
+
32
+ .og-grid__status-overlay {
33
+ position: absolute;
34
+ inset: 0;
35
+ z-index: 12;
36
+ display: flex;
37
+ align-items: center;
38
+ justify-content: center;
39
+ gap: 10px;
40
+ border-radius: inherit;
41
+ backdrop-filter: blur(3px);
42
+ background: color-mix(in srgb, var(--og-surface) 88%, transparent);
43
+ color: var(--og-text);
44
+ }
45
+
46
+ .og-grid__error-overlay {
47
+ flex-direction: column;
48
+ background: color-mix(in srgb, var(--og-surface) 90%, var(--og-danger, #c4322b) 10%);
49
+ }
50
+
51
+ .og-grid__loading-spinner {
52
+ box-sizing: border-box;
53
+ width: 22px;
54
+ height: 22px;
55
+ border: 2px solid var(--og-border-color);
56
+ border-top-color: var(--og-focus);
57
+ border-radius: 50%;
58
+ animation: og-grid-loading-spin 700ms linear infinite;
59
+ }
60
+
61
+ .og-grid__status-text {
62
+ max-width: min(320px, 70%);
63
+ overflow-wrap: anywhere;
64
+ font-size: 13px;
65
+ font-weight: 600;
66
+ }
67
+
68
+ .og-grid__retry-button {
69
+ min-width: 72px;
70
+ min-height: 32px;
71
+ padding: 5px 12px;
72
+ border: 1px solid var(--og-border-color);
73
+ border-radius: var(--og-radius, 6px);
74
+ background: var(--og-surface);
75
+ color: var(--og-text);
76
+ cursor: pointer;
77
+ font: inherit;
78
+ font-size: 13px;
79
+ font-weight: var(--og-font-weight-semibold, 600);
80
+ transition: background-color var(--og-transition, 140ms ease), border-color var(--og-transition, 140ms ease);
81
+ }
82
+
83
+ .og-grid__retry-button:hover {
84
+ background: var(--og-surface-muted);
85
+ }
86
+
87
+ .og-grid__retry-button:focus,
88
+ .og-grid__retry-button:focus-visible {
89
+ outline: 2px solid var(--og-focus, #0f766e);
90
+ outline-offset: 2px;
91
+ }
92
+
93
+ @keyframes og-grid-loading-spin {
94
+ to {
95
+ transform: rotate(360deg);
96
+ }
97
+ }
98
+
99
+ @media (prefers-reduced-motion: reduce) {
100
+ .og-grid__loading-spinner {
101
+ animation: none;
102
+ }
103
+ }
104
+
105
+ .og-grid__scroller {
106
+ flex: 1 1 auto;
107
+ min-height: 0;
108
+ width: 100%;
109
+ height: 100%;
110
+ overflow: auto;
111
+ }
112
+
113
+ .og-grid__scroller:focus-visible {
114
+ outline: 2px solid var(--og-focus);
115
+ outline-offset: -2px;
116
+ }
117
+
118
+ .og-grid__controls {
119
+ display: flex;
120
+ align-items: center;
121
+ justify-content: space-between;
122
+ flex-wrap: wrap;
123
+ gap: 8px 12px;
124
+ width: 100%;
125
+ margin-bottom: 8px;
126
+ padding: 2px;
127
+ }
128
+
129
+ .og-grid__quick-filter {
130
+ display: flex;
131
+ align-items: center;
132
+ gap: 6px;
133
+ margin-left: auto;
134
+ }
135
+
136
+ .og-grid__column-visibility {
137
+ position: relative;
138
+ color: var(--og-text, #172033);
139
+ font-size: 12px;
140
+ }
141
+
142
+ .og-grid__column-visibility-summary {
143
+ box-sizing: border-box;
144
+ display: flex;
145
+ align-items: center;
146
+ min-width: 112px;
147
+ height: var(--og-control-height, 34px);
148
+ padding: 0 10px;
149
+ border: 1px solid var(--og-border-color, #d8dee8);
150
+ border-radius: var(--og-radius, 6px);
151
+ background: var(--og-surface, #ffffff);
152
+ cursor: pointer;
153
+ box-shadow: var(--og-shadow-sm, none);
154
+ font-weight: var(--og-font-weight-semibold, 600);
155
+ list-style-position: inside;
156
+ white-space: nowrap;
157
+ }
158
+
159
+ .og-grid__column-visibility[open] .og-grid__column-visibility-summary {
160
+ border-color: var(--og-focus, #0f766e);
161
+ }
162
+
163
+ .og-grid__column-visibility-panel {
164
+ position: absolute;
165
+ z-index: 30;
166
+ top: calc(100% + 6px);
167
+ left: 0;
168
+ box-sizing: border-box;
169
+ display: grid;
170
+ gap: 8px;
171
+ width: min(280px, calc(100vw - 32px));
172
+ padding: 10px;
173
+ border: 1px solid var(--og-border-color, #d8dee8);
174
+ border-radius: var(--og-radius-lg, 8px);
175
+ background: var(--og-surface-raised, var(--og-surface, #ffffff));
176
+ box-shadow: var(--og-shadow-md, 0 10px 24px rgb(15 23 42 / 16%));
177
+ }
178
+
179
+ .og-grid__column-visibility-search {
180
+ box-sizing: border-box;
181
+ width: 100%;
182
+ height: var(--og-control-height, 34px);
183
+ padding: 5px 8px;
184
+ border: 1px solid var(--og-border-color, #d8dee8);
185
+ border-radius: var(--og-radius, 6px);
186
+ background: var(--og-surface, #ffffff);
187
+ color: var(--og-text, #172033);
188
+ font: inherit;
189
+ }
190
+
191
+ .og-grid__column-visibility-status {
192
+ color: var(--og-text-muted, #5f6b7f);
193
+ }
194
+
195
+ .og-grid__column-visibility-list {
196
+ display: grid;
197
+ gap: 2px;
198
+ max-height: 240px;
199
+ overflow-y: auto;
200
+ }
201
+
202
+ .og-grid__column-visibility-item {
203
+ display: flex;
204
+ align-items: center;
205
+ gap: 8px;
206
+ min-height: 30px;
207
+ padding: 0 4px;
208
+ border-radius: var(--og-radius-sm, 4px);
209
+ cursor: pointer;
210
+ }
211
+
212
+ .og-grid__column-visibility-item:hover {
213
+ background: var(--og-surface-hover, #edf3ff);
214
+ }
215
+
216
+ .og-grid__column-visibility-item:has(input:disabled) {
217
+ cursor: not-allowed;
218
+ opacity: 0.6;
219
+ }
220
+
221
+ .og-grid__column-visibility-item input {
222
+ width: 16px;
223
+ height: 16px;
224
+ margin: 0;
225
+ accent-color: var(--og-accent, #2563eb);
226
+ }
227
+
228
+ .og-grid__column-visibility-empty {
229
+ min-height: 44px;
230
+ padding: 12px 4px;
231
+ color: var(--og-text-muted, #5f6b7f);
232
+ text-align: center;
233
+ }
234
+
235
+ .og-grid__column-visibility-reset {
236
+ justify-self: end;
237
+ height: 30px;
238
+ padding: 0 9px;
239
+ border: 1px solid var(--og-border-color, #d8dee8);
240
+ border-radius: var(--og-radius, 6px);
241
+ background: var(--og-surface, #ffffff);
242
+ color: var(--og-text, #172033);
243
+ cursor: pointer;
244
+ font: inherit;
245
+ }
246
+
247
+ .og-grid__column-visibility-reset:hover:not(:disabled) {
248
+ background: var(--og-surface-muted, #f6f8fb);
249
+ }
250
+
251
+ .og-grid__column-visibility-reset:disabled {
252
+ color: var(--og-text-muted, #5f6b7f);
253
+ cursor: not-allowed;
254
+ opacity: 0.55;
255
+ }
256
+
257
+ .og-grid__selection-controls {
258
+ display: flex;
259
+ align-items: center;
260
+ flex-wrap: wrap;
261
+ gap: 6px 10px;
262
+ min-height: 34px;
263
+ color: var(--og-text, #172033);
264
+ font-size: 12px;
265
+ }
266
+
267
+ .og-grid__density-controls {
268
+ display: inline-flex;
269
+ align-items: center;
270
+ min-height: 34px;
271
+ padding: 2px;
272
+ border: 1px solid var(--og-border-color, #d8dee8);
273
+ border-radius: var(--og-radius, 6px);
274
+ background: var(--og-surface-muted, #f6f8fb);
275
+ }
276
+
277
+ .og-grid__density-button {
278
+ height: 28px;
279
+ padding: 0 9px;
280
+ border: 0;
281
+ border-radius: var(--og-radius-sm, 4px);
282
+ background: transparent;
283
+ color: var(--og-text-muted, #5f6b7f);
284
+ cursor: pointer;
285
+ font: inherit;
286
+ font-size: 12px;
287
+ white-space: nowrap;
288
+ }
289
+
290
+ .og-grid__density-button:hover {
291
+ color: var(--og-text, #172033);
292
+ }
293
+
294
+ .og-grid__density-button[aria-pressed="true"] {
295
+ background: var(--og-surface, #ffffff);
296
+ box-shadow: var(--og-shadow-sm, 0 1px 2px rgb(16 24 40 / 12%));
297
+ color: var(--og-text, #172033);
298
+ font-weight: 600;
299
+ }
300
+
301
+ .og-grid__selection-toggle {
302
+ display: inline-flex;
303
+ align-items: center;
304
+ gap: 6px;
305
+ font-weight: 600;
306
+ cursor: pointer;
307
+ }
308
+
309
+ .og-grid__selection-toggle input {
310
+ width: 16px;
311
+ height: 16px;
312
+ margin: 0;
313
+ accent-color: var(--og-accent, #2563eb);
314
+ }
315
+
316
+ .og-grid__selection-status {
317
+ min-width: 96px;
318
+ color: var(--og-text-muted, #5f6b7f);
319
+ }
320
+
321
+ .og-grid__selection-clear {
322
+ height: 30px;
323
+ padding: 0 9px;
324
+ border: 1px solid var(--og-border-color, #d8dee8);
325
+ border-radius: var(--og-radius, 6px);
326
+ background: var(--og-surface, #ffffff);
327
+ color: var(--og-text, #172033);
328
+ cursor: pointer;
329
+ font: inherit;
330
+ font-size: 12px;
331
+ }
332
+
333
+ .og-grid__selection-clear:hover:not(:disabled) {
334
+ background: var(--og-surface-muted, #f6f8fb);
335
+ }
336
+
337
+ .og-grid__selection-clear:disabled {
338
+ color: var(--og-text-muted, #5f6b7f);
339
+ cursor: not-allowed;
340
+ opacity: 0.55;
341
+ }
342
+
343
+ .og-grid__quick-filter-input {
344
+ box-sizing: border-box;
345
+ width: min(320px, 100%);
346
+ min-width: 0;
347
+ height: var(--og-control-height, 34px);
348
+ padding: 6px 10px;
349
+ border: 1px solid var(--og-border-color, #d8dee8);
350
+ border-radius: var(--og-radius, 6px);
351
+ background: var(--og-surface, #ffffff);
352
+ color: var(--og-text, #172033);
353
+ font: inherit;
354
+ font-size: 13px;
355
+ }
356
+
357
+ .og-grid__quick-filter-clear {
358
+ min-width: 58px;
359
+ height: var(--og-control-height, 34px);
360
+ padding: 0 10px;
361
+ border: 1px solid var(--og-border-color, #d8dee8);
362
+ border-radius: var(--og-radius, 6px);
363
+ background: var(--og-surface, #ffffff);
364
+ color: var(--og-text, #172033);
365
+ cursor: pointer;
366
+ font: inherit;
367
+ font-size: 12px;
368
+ }
369
+
370
+ .og-grid__quick-filter-input:focus-visible,
371
+ .og-grid__quick-filter-clear:focus-visible,
372
+ .og-grid__selection-clear:focus-visible,
373
+ .og-grid__selection-toggle input:focus-visible,
374
+ .og-grid__column-visibility-summary:focus-visible,
375
+ .og-grid__column-visibility-search:focus-visible,
376
+ .og-grid__column-visibility-item input:focus-visible,
377
+ .og-grid__column-visibility-reset:focus-visible {
378
+ outline: 2px solid var(--og-focus, #0f766e);
379
+ outline-offset: 1px;
380
+ }
381
+
382
+ .og-grid__density-button:focus-visible {
383
+ outline: 2px solid var(--og-focus, #0f766e);
384
+ outline-offset: 1px;
385
+ }
386
+
387
+ .og-grid__quick-filter-clear:hover:not(:disabled) {
388
+ background: var(--og-surface-muted, #f6f8fb);
389
+ }
390
+
391
+ .og-grid__quick-filter-clear:disabled {
392
+ color: var(--og-text-muted, #5f6b7f);
393
+ cursor: not-allowed;
394
+ opacity: 0.55;
395
+ }
396
+
397
+ @media (max-width: 640px) {
398
+ .og-grid__column-visibility {
399
+ order: 2;
400
+ }
401
+
402
+ .og-grid__density-controls {
403
+ order: 2;
404
+ }
405
+
406
+ .og-grid__quick-filter {
407
+ order: 3;
408
+ width: 100%;
409
+ margin-left: 0;
410
+ }
411
+
412
+ .og-grid__quick-filter-input {
413
+ flex: 1 1 auto;
414
+ }
415
+ }
416
+
417
+ .og-grid__pagination {
418
+ display: flex;
419
+ align-items: center;
420
+ justify-content: space-between;
421
+ gap: 12px;
422
+ box-sizing: border-box;
423
+ width: 100%;
424
+ min-height: 42px;
425
+ margin-top: 6px;
426
+ padding: 6px 8px;
427
+ border: 1px solid var(--og-border-color);
428
+ border-radius: var(--og-radius-lg, var(--og-radius));
429
+ background: var(--og-surface);
430
+ }
431
+
432
+ .og-grid__pagination-buttons {
433
+ display: flex;
434
+ align-items: center;
435
+ gap: 4px;
436
+ }
437
+
438
+ .og-grid__pagination-button {
439
+ display: inline-flex;
440
+ align-items: center;
441
+ justify-content: center;
442
+ box-sizing: border-box;
443
+ width: 30px;
444
+ height: 30px;
445
+ padding: 0;
446
+ border: 1px solid var(--og-border-color);
447
+ border-radius: var(--og-radius, 6px);
448
+ background: var(--og-surface);
449
+ color: var(--og-text);
450
+ cursor: pointer;
451
+ font: inherit;
452
+ line-height: 1;
453
+ }
454
+
455
+ .og-grid__pagination-button:hover:not(:disabled) {
456
+ background: var(--og-surface-muted);
457
+ }
458
+
459
+ .og-grid__pagination-button:focus-visible,
460
+ .og-grid__pagination-size:focus-visible {
461
+ outline: 2px solid var(--og-focus);
462
+ outline-offset: 1px;
463
+ }
464
+
465
+ .og-grid__pagination-button:disabled {
466
+ color: var(--og-text-muted);
467
+ cursor: not-allowed;
468
+ opacity: 0.55;
469
+ }
470
+
471
+ .og-grid__pagination-status {
472
+ min-width: 88px;
473
+ color: var(--og-text);
474
+ font-size: 12px;
475
+ font-weight: 600;
476
+ text-align: center;
477
+ white-space: nowrap;
478
+ }
479
+
480
+ .og-grid__pagination-size {
481
+ box-sizing: border-box;
482
+ min-width: 104px;
483
+ height: 30px;
484
+ border: 1px solid var(--og-border-color);
485
+ border-radius: var(--og-radius, 6px);
486
+ padding: 0 26px 0 8px;
487
+ background: var(--og-surface);
488
+ color: var(--og-text);
489
+ font: inherit;
490
+ font-size: 12px;
491
+ }
492
+
493
+ @media (max-width: 480px) {
494
+ .og-grid__pagination {
495
+ align-items: stretch;
496
+ flex-direction: column;
497
+ }
498
+
499
+ .og-grid__pagination-buttons {
500
+ justify-content: space-between;
501
+ }
502
+
503
+ .og-grid__pagination-size {
504
+ width: 100%;
505
+ }
506
+ }
507
+
508
+ .og-grid__grouping-panel {
509
+ display: flex;
510
+ flex: 0 0 auto;
511
+ align-items: center;
512
+ gap: 6px;
513
+ min-height: 40px;
514
+ padding: 6px 8px;
515
+ border-bottom: 1px solid var(--og-border-color);
516
+ background: color-mix(in srgb, var(--og-surface-muted) 72%, var(--og-surface));
517
+ overflow: auto hidden;
518
+ }
519
+
520
+ .og-grid__grouping-panel[data-empty="true"] {
521
+ color: var(--og-text-muted);
522
+ }
523
+
524
+ .og-grid__grouping-placeholder {
525
+ font-size: 12px;
526
+ font-weight: 600;
527
+ white-space: nowrap;
528
+ }
529
+
530
+ .og-grid__grouping-chip {
531
+ display: inline-flex;
532
+ align-items: center;
533
+ gap: 6px;
534
+ max-width: 180px;
535
+ min-height: 26px;
536
+ border: 1px solid var(--og-border-color);
537
+ border-radius: 6px;
538
+ padding: 0 4px 0 8px;
539
+ background: var(--og-surface-raised, var(--og-surface));
540
+ color: var(--og-text);
541
+ font-size: 12px;
542
+ font-weight: 600;
543
+ }
544
+
545
+ .og-grid__grouping-chip-label {
546
+ min-width: 32px;
547
+ overflow: hidden;
548
+ text-overflow: ellipsis;
549
+ white-space: nowrap;
550
+ }
551
+
552
+ .og-grid__grouping-move,
553
+ .og-grid__grouping-remove {
554
+ display: inline-flex;
555
+ align-items: center;
556
+ justify-content: center;
557
+ flex: 0 0 auto;
558
+ width: 24px;
559
+ height: 24px;
560
+ border: 0;
561
+ border-radius: 4px;
562
+ padding: 0;
563
+ background: transparent;
564
+ color: var(--og-text-muted);
565
+ cursor: pointer;
566
+ font: inherit;
567
+ line-height: 1;
568
+ }
569
+
570
+ .og-grid__grouping-move:disabled {
571
+ opacity: 0.35;
572
+ cursor: default;
573
+ }
574
+
575
+ .og-grid__grouping-move:not(:disabled):hover,
576
+ .og-grid__grouping-remove:hover {
577
+ background: color-mix(in srgb, var(--og-border-color) 55%, transparent);
578
+ color: var(--og-text);
579
+ }
580
+
581
+ .og-grid__canvas {
582
+ min-width: 100%;
583
+ }
584
+
585
+ .og-grid__header {
586
+ position: sticky;
587
+ top: 0;
588
+ z-index: 4;
589
+ background: var(--og-surface-muted);
590
+ }
591
+
592
+ .og-grid__row {
593
+ display: flex;
594
+ min-width: 100%;
595
+ }
596
+
597
+ .og-grid__row[data-column-virtualized="true"] {
598
+ position: relative;
599
+ }
600
+
601
+ .og-grid__column-spacer {
602
+ flex: 0 0 auto;
603
+ min-height: 1px;
604
+ }
605
+
606
+ .og-grid__body[data-virtualized="true"] {
607
+ position: relative;
608
+ }
609
+
610
+ .og-grid__row[data-selected="true"] .og-grid__cell {
611
+ background: var(--og-surface-selected, color-mix(in srgb, var(--og-accent) 8%, var(--og-surface)));
612
+ }
613
+
614
+ .og-grid__body .og-grid__row:not([data-selected="true"]):not([data-grouped-row="true"]):not([data-group-footer-row="true"]):hover .og-grid__cell {
615
+ background: var(--og-surface-subtle, var(--og-surface));
616
+ }
617
+
618
+ .og-grid__row[data-grouped-row="true"] .og-grid__cell {
619
+ background: color-mix(in srgb, var(--og-surface-muted) 70%, var(--og-surface));
620
+ font-weight: 600;
621
+ }
622
+
623
+ .og-grid__row[data-group-footer-row="true"] .og-grid__cell {
624
+ background: color-mix(in srgb, var(--og-surface-muted) 82%, var(--og-surface));
625
+ border-top-color: color-mix(in srgb, var(--og-border-color) 80%, var(--og-text-muted));
626
+ font-weight: 600;
627
+ }
628
+
629
+ .og-grid__header-cell,
630
+ .og-grid__cell {
631
+ position: relative;
632
+ display: flex;
633
+ align-items: center;
634
+ box-sizing: border-box;
635
+ overflow: hidden;
636
+ padding: 0 12px;
637
+ }
638
+
639
+ .og-grid__header-cell {
640
+ min-height: var(--og-header-height);
641
+ background: var(--og-surface-muted);
642
+ }
643
+
644
+ .og-grid__header-cell[data-grouped="true"] {
645
+ justify-content: center;
646
+ border-right: 1px solid var(--og-border-color);
647
+ }
648
+
649
+ .og-grid__header-cell[data-placeholder="true"] {
650
+ visibility: hidden;
651
+ }
652
+
653
+ .og-grid__header-cell[data-pinned] {
654
+ z-index: 6;
655
+ background: var(--og-surface-muted) !important;
656
+ }
657
+
658
+ .og-grid__cell[data-pinned] {
659
+ z-index: 3;
660
+ background: var(--og-surface);
661
+ }
662
+
663
+ .og-grid__header-cell[data-pinned-edge="right"],
664
+ .og-grid__filter-cell[data-pinned-edge="right"],
665
+ .og-grid__cell[data-pinned-edge="right"] {
666
+ box-shadow: var(--og-shadow-pinned-right, -8px 0 12px -12px rgb(16 24 40 / 45%));
667
+ }
668
+
669
+ .og-grid__header-cell[data-pinned-edge="left"],
670
+ .og-grid__filter-cell[data-pinned-edge="left"],
671
+ .og-grid__cell[data-pinned-edge="left"] {
672
+ box-shadow: var(--og-shadow-pinned-left, 8px 0 12px -12px rgb(16 24 40 / 45%));
673
+ }
674
+
675
+ .og-grid__row--filter {
676
+ min-height: 38px;
677
+ }
678
+
679
+ .og-grid__filter-cell {
680
+ position: relative;
681
+ display: flex;
682
+ align-items: center;
683
+ box-sizing: border-box;
684
+ min-height: 38px;
685
+ padding: 5px 8px;
686
+ border-bottom: 1px solid var(--og-border-color);
687
+ background: var(--og-surface-muted);
688
+ }
689
+
690
+ .og-grid__filter-cell[data-pinned] {
691
+ z-index: 6;
692
+ background: var(--og-surface-muted) !important;
693
+ }
694
+
695
+ .og-grid__filter-input {
696
+ box-sizing: border-box;
697
+ width: 100%;
698
+ min-width: 0;
699
+ height: 28px;
700
+ padding: 0 8px;
701
+ border: 1px solid var(--og-border-color);
702
+ border-radius: var(--og-radius-sm, 4px);
703
+ color: var(--og-text);
704
+ background: var(--og-surface);
705
+ font: inherit;
706
+ }
707
+
708
+ .og-grid__filter-input::placeholder {
709
+ color: var(--og-text-muted);
710
+ }
711
+
712
+ .og-grid__filter-input:focus {
713
+ border-color: var(--og-focus);
714
+ outline: 2px solid color-mix(in srgb, var(--og-focus) 24%, transparent);
715
+ outline-offset: 0;
716
+ }
717
+
718
+ .og-grid__cell {
719
+ position: relative;
720
+ min-height: var(--og-row-height);
721
+ background: var(--og-surface);
722
+ white-space: nowrap;
723
+ text-overflow: ellipsis;
724
+ }
725
+
726
+ .og-grid__cell[data-focused="true"] {
727
+ outline: 2px solid var(--og-focus);
728
+ outline-offset: -2px;
729
+ }
730
+
731
+ .og-grid__cell[data-range-selected="true"] {
732
+ background: var(--og-surface-selected, color-mix(in srgb, var(--og-accent) 10%, var(--og-surface)));
733
+ }
734
+
735
+ .og-grid__fill-handle {
736
+ position: absolute;
737
+ right: 1px;
738
+ bottom: 1px;
739
+ width: 7px;
740
+ height: 7px;
741
+ border: 1px solid var(--og-surface);
742
+ background: var(--og-accent);
743
+ cursor: crosshair;
744
+ z-index: 3;
745
+ }
746
+
747
+ .og-grid__group-cell {
748
+ display: inline-flex;
749
+ align-items: center;
750
+ gap: 6px;
751
+ min-width: 0;
752
+ }
753
+
754
+ .og-grid__group-toggle,
755
+ .og-grid__group-toggle-spacer {
756
+ flex: 0 0 auto;
757
+ width: 24px;
758
+ height: 24px;
759
+ }
760
+
761
+ .og-grid__group-toggle {
762
+ display: inline-flex;
763
+ align-items: center;
764
+ justify-content: center;
765
+ border: 1px solid var(--og-border-color);
766
+ border-radius: var(--og-radius-sm, 4px);
767
+ padding: 0;
768
+ color: var(--og-text);
769
+ background: var(--og-surface);
770
+ font: inherit;
771
+ line-height: 1;
772
+ cursor: pointer;
773
+ }
774
+
775
+ .og-grid__group-toggle:focus-visible {
776
+ outline: 2px solid var(--og-focus);
777
+ outline-offset: 1px;
778
+ }
779
+
780
+ .og-grid__group-label {
781
+ min-width: 0;
782
+ overflow: hidden;
783
+ text-overflow: ellipsis;
784
+ }
785
+
786
+ .og-grid__group-count {
787
+ flex: 0 0 auto;
788
+ color: var(--og-text-muted);
789
+ font-size: 0.875em;
790
+ }
791
+
792
+ .og-grid__cell[data-editing="true"] {
793
+ padding: 2px;
794
+ outline: 2px solid var(--og-focus);
795
+ outline-offset: -2px;
796
+ }
797
+
798
+ .og-grid__cell[data-validation-invalid="true"] {
799
+ outline-color: var(--og-danger, #c4322b);
800
+ }
801
+
802
+ .og-grid__cell-editor {
803
+ width: 100%;
804
+ min-width: 0;
805
+ height: calc(var(--og-row-height) - 6px);
806
+ box-sizing: border-box;
807
+ border: 1px solid var(--og-border-color);
808
+ border-radius: var(--og-radius-sm, 4px);
809
+ padding: 0 9px;
810
+ color: var(--og-text);
811
+ background: var(--og-surface);
812
+ font: inherit;
813
+ outline: none;
814
+ }
815
+
816
+ .og-grid__cell-editor:focus {
817
+ border-color: var(--og-focus);
818
+ }
819
+
820
+ .og-grid__cell-editor[aria-invalid="true"] {
821
+ border-color: var(--og-danger, #c4322b);
822
+ }
823
+
824
+ .og-grid__cell-validation {
825
+ position: absolute;
826
+ right: 6px;
827
+ bottom: 1px;
828
+ left: 6px;
829
+ z-index: 4;
830
+ overflow: hidden;
831
+ color: var(--og-danger, #c4322b);
832
+ font-size: 10px;
833
+ font-weight: 700;
834
+ line-height: 1.2;
835
+ text-overflow: ellipsis;
836
+ white-space: nowrap;
837
+ pointer-events: none;
838
+ }
839
+
840
+ .og-grid__header-button {
841
+ display: inline-flex;
842
+ flex: 1 1 auto;
843
+ align-items: center;
844
+ justify-content: space-between;
845
+ width: auto;
846
+ min-width: 24px;
847
+ height: 100%;
848
+ border: 0;
849
+ padding: 0;
850
+ color: inherit;
851
+ background: transparent;
852
+ font: inherit;
853
+ text-align: left;
854
+ }
855
+
856
+ .og-grid__header-cell[data-column-draggable="true"] .og-grid__header-button {
857
+ cursor: grab;
858
+ }
859
+
860
+ .og-grid__header-cell[data-column-draggable="true"] .og-grid__header-button:active {
861
+ cursor: grabbing;
862
+ }
863
+
864
+ .og-grid__header-button:disabled {
865
+ cursor: default;
866
+ }
867
+
868
+ .og-grid--virtual .og-grid__header-button {
869
+ display: block;
870
+ overflow: hidden;
871
+ text-overflow: ellipsis;
872
+ white-space: nowrap;
873
+ }
874
+
875
+ .og-grid__header-label {
876
+ min-width: 0;
877
+ overflow: hidden;
878
+ text-overflow: ellipsis;
879
+ white-space: nowrap;
880
+ }
881
+
882
+ .og-grid__sort-indicator {
883
+ flex: 0 0 auto;
884
+ width: 18px;
885
+ color: var(--og-accent);
886
+ font-size: 10px;
887
+ text-align: right;
888
+ }
889
+
890
+ .og-grid__pinning-controls {
891
+ display: inline-flex;
892
+ flex: 0 0 auto;
893
+ align-items: center;
894
+ gap: 2px;
895
+ margin-left: 4px;
896
+ }
897
+
898
+ .og-grid__pinning-button {
899
+ display: inline-flex;
900
+ box-sizing: border-box;
901
+ flex: 0 0 24px;
902
+ width: 24px;
903
+ height: 24px;
904
+ align-items: center;
905
+ justify-content: center;
906
+ border: 1px solid var(--og-border);
907
+ border-radius: var(--og-radius-sm, 4px);
908
+ padding: 0;
909
+ background: var(--og-surface);
910
+ color: var(--og-text-muted);
911
+ font: inherit;
912
+ font-size: 10px;
913
+ line-height: 1;
914
+ cursor: pointer;
915
+ }
916
+
917
+ .og-grid__pinning-button:hover:not(:disabled),
918
+ .og-grid__pinning-button[aria-pressed="true"] {
919
+ border-color: color-mix(in srgb, var(--og-accent) 48%, var(--og-border));
920
+ color: var(--og-accent);
921
+ }
922
+
923
+ .og-grid__pinning-button:disabled {
924
+ cursor: default;
925
+ opacity: 0.62;
926
+ }
927
+
928
+ .og-grid__header-menu {
929
+ position: relative;
930
+ display: inline-flex;
931
+ flex: 0 0 auto;
932
+ width: 24px;
933
+ margin-left: 4px;
934
+ }
935
+
936
+ .og-grid__header-menu-trigger {
937
+ display: inline-flex;
938
+ box-sizing: border-box;
939
+ flex: 0 0 24px;
940
+ width: 24px;
941
+ height: 24px;
942
+ align-items: center;
943
+ justify-content: center;
944
+ border: 1px solid var(--og-border);
945
+ border-radius: var(--og-radius-sm, 4px);
946
+ padding: 0;
947
+ background: var(--og-surface);
948
+ color: var(--og-text-muted);
949
+ font: inherit;
950
+ font-size: 10px;
951
+ line-height: 1;
952
+ cursor: pointer;
953
+ }
954
+
955
+ .og-grid__header-menu-trigger:hover,
956
+ .og-grid__header-menu-trigger[aria-expanded="true"] {
957
+ border-color: color-mix(in srgb, var(--og-accent) 48%, var(--og-border));
958
+ color: var(--og-accent);
959
+ }
960
+
961
+ .og-grid__header-menu-trigger:focus-visible {
962
+ outline: 2px solid var(--og-focus);
963
+ outline-offset: 1px;
964
+ }
965
+
966
+ .og-grid__header-menu-popover {
967
+ position: absolute;
968
+ top: calc(100% + 4px);
969
+ right: 0;
970
+ z-index: 20;
971
+ display: grid;
972
+ min-width: 148px;
973
+ overflow: hidden;
974
+ border: 1px solid var(--og-border);
975
+ border-radius: var(--og-radius-lg, 8px);
976
+ background: var(--og-surface-raised, var(--og-surface));
977
+ box-shadow: var(--og-shadow-md, 0 12px 30px rgb(16 24 40 / 16%));
978
+ }
979
+
980
+ .og-grid__header-menu-popover button {
981
+ border: 0;
982
+ border-bottom: 1px solid var(--og-border);
983
+ padding: 7px 10px;
984
+ background: transparent;
985
+ color: var(--og-text);
986
+ font: inherit;
987
+ font-size: 12px;
988
+ text-align: left;
989
+ cursor: pointer;
990
+ }
991
+
992
+ .og-grid__header-menu-popover button:last-child {
993
+ border-bottom: 0;
994
+ }
995
+
996
+ .og-grid__header-menu-popover button:hover:not(:disabled),
997
+ .og-grid__header-menu-popover button:focus-visible {
998
+ background: color-mix(in srgb, var(--og-accent) 8%, var(--og-surface));
999
+ outline: 2px solid var(--og-focus);
1000
+ outline-offset: -2px;
1001
+ }
1002
+
1003
+ .og-grid__header-menu-popover button:disabled {
1004
+ cursor: default;
1005
+ opacity: 0.5;
1006
+ }
1007
+
1008
+ .og-grid__header-menu-label {
1009
+ border-bottom: 1px solid var(--og-border);
1010
+ padding: 7px 10px 4px;
1011
+ color: var(--og-text-muted);
1012
+ font-size: 11px;
1013
+ font-weight: 700;
1014
+ line-height: 1.2;
1015
+ text-transform: uppercase;
1016
+ }
1017
+
1018
+ .og-grid__header-menu-separator {
1019
+ height: 1px;
1020
+ margin: 4px 0;
1021
+ background: var(--og-border);
1022
+ }
1023
+
1024
+ @media (forced-colors: active) {
1025
+ .og-grid__cell[data-focused="true"],
1026
+ .og-grid__cell[data-editing="true"],
1027
+ .og-grid__scroller:focus-visible,
1028
+ .og-grid__retry-button:focus,
1029
+ .og-grid__retry-button:focus-visible,
1030
+ .og-grid__quick-filter-input:focus-visible,
1031
+ .og-grid__quick-filter-clear:focus-visible,
1032
+ .og-grid__selection-clear:focus-visible,
1033
+ .og-grid__selection-toggle input:focus-visible,
1034
+ .og-grid__column-visibility-summary:focus-visible,
1035
+ .og-grid__column-visibility-search:focus-visible,
1036
+ .og-grid__column-visibility-item input:focus-visible,
1037
+ .og-grid__column-visibility-reset:focus-visible,
1038
+ .og-grid__density-button:focus-visible,
1039
+ .og-grid__pagination-button:focus-visible,
1040
+ .og-grid__pagination-size:focus-visible,
1041
+ .og-grid__group-toggle:focus-visible,
1042
+ .og-grid__header-menu-trigger:focus-visible,
1043
+ .og-grid__header-menu-popover button:focus-visible {
1044
+ outline-color: Highlight;
1045
+ }
1046
+
1047
+ .og-grid__row[data-selected="true"] .og-grid__cell,
1048
+ .og-grid__cell[data-range-selected="true"] {
1049
+ background: Canvas;
1050
+ outline: 1px solid Highlight;
1051
+ outline-offset: -1px;
1052
+ }
1053
+
1054
+ .og-grid__cell[data-focused="true"],
1055
+ .og-grid__cell[data-editing="true"] {
1056
+ outline: 2px solid Highlight;
1057
+ outline-offset: -2px;
1058
+ }
1059
+
1060
+ .og-grid button:disabled,
1061
+ .og-grid input:disabled,
1062
+ .og-grid select:disabled,
1063
+ .og-grid__pagination button:disabled,
1064
+ .og-grid__pagination select:disabled {
1065
+ border-color: GrayText;
1066
+ color: GrayText;
1067
+ opacity: 1;
1068
+ outline: 1px solid GrayText;
1069
+ outline-offset: -1px;
1070
+ }
1071
+
1072
+ .og-grid__status-overlay {
1073
+ border: 1px solid CanvasText;
1074
+ background: Canvas;
1075
+ }
1076
+
1077
+ .og-grid__loading-overlay {
1078
+ border-color: Highlight;
1079
+ }
1080
+
1081
+ .og-grid__error-overlay {
1082
+ border-width: 2px;
1083
+ border-color: Mark;
1084
+ }
1085
+
1086
+ .og-grid__loading-spinner {
1087
+ border-color: CanvasText;
1088
+ border-top-color: Highlight;
1089
+ }
1090
+
1091
+ .og-grid__cell[data-validation-invalid="true"] {
1092
+ outline: 2px solid Mark;
1093
+ outline-offset: -2px;
1094
+ }
1095
+
1096
+ .og-grid__cell-validation {
1097
+ background: Mark;
1098
+ color: MarkText;
1099
+ }
1100
+ }
1101
+
1102
+ .og-grid__header-menu-custom {
1103
+ display: block;
1104
+ border-bottom: 1px solid var(--og-border);
1105
+ padding: 8px 10px;
1106
+ color: var(--og-text);
1107
+ font-size: 12px;
1108
+ line-height: 1.3;
1109
+ }
1110
+
1111
+ .og-grid__resize-handle {
1112
+ position: absolute;
1113
+ top: 0;
1114
+ right: -3px;
1115
+ bottom: 0;
1116
+ width: 6px;
1117
+ cursor: col-resize;
1118
+ touch-action: none;
1119
+ }
1120
+
1121
+ .og-grid__resize-handle:hover {
1122
+ background: color-mix(in srgb, var(--og-accent) 28%, transparent);
1123
+ }
1124
+
1125
+ .og-grid__empty-cell {
1126
+ display: flex;
1127
+ align-items: center;
1128
+ min-height: 96px;
1129
+ box-sizing: border-box;
1130
+ padding: 0 16px;
1131
+ color: var(--og-text-muted);
1132
+ }