comins-table 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/styles.css ADDED
@@ -0,0 +1,1059 @@
1
+ .comins-table {
2
+ --comins-table-accent: #10b981;
3
+ --comins-table-accent-foreground: #ffffff;
4
+ --comins-table-accent-strong: #047857;
5
+ --comins-table-accent-soft: #d1fae5;
6
+ --comins-table-background: #ffffff;
7
+ --comins-table-border: rgba(57, 99, 88, 0.18);
8
+ --comins-table-cell-background: transparent;
9
+ --comins-table-cell-border: #a7dbc8;
10
+ --comins-table-cell-color: #111827;
11
+ --comins-table-cell-height: 36px;
12
+ --comins-table-cell-padding-x: 12px;
13
+ --comins-table-cell-padding-y: 8px;
14
+ --comins-table-drop-marker: #064e3b;
15
+ --comins-table-focus: rgba(16, 185, 129, 0.28);
16
+ --comins-table-foreground: #111827;
17
+ --comins-table-header-background: var(--comins-table-accent);
18
+ --comins-table-header-border: var(--comins-table-accent-strong);
19
+ --comins-table-header-color: var(--comins-table-accent-foreground);
20
+ --comins-table-header-height: 36px;
21
+ --comins-table-header-split-border: var(--comins-table-accent-strong);
22
+ --comins-table-muted: #64748b;
23
+ --comins-table-range-background: #f1fcf8;
24
+ --comins-table-resize-handle: color-mix(in srgb, var(--comins-table-header-color) 70%, transparent);
25
+ --comins-table-row-border: #bbe7d6;
26
+ --comins-table-row-disabled-background: #f1f5f9;
27
+ --comins-table-row-disabled-color: #64748b;
28
+ --comins-table-row-height: 36px;
29
+ --comins-table-row-even-background: #ecfdf5;
30
+ --comins-table-row-odd-background: #ffffff;
31
+ --comins-table-row-selected-background: #d1fae5;
32
+ --comins-table-skeleton-background: color-mix(in srgb, var(--comins-table-accent-soft) 72%, #ffffff);
33
+ --comins-table-skeleton-highlight: color-mix(in srgb, var(--comins-table-accent-soft) 42%, #ffffff);
34
+ --comins-table-scrollbar-corner: var(--comins-table-scrollbar-track);
35
+ --comins-table-scrollbar-thumb: color-mix(
36
+ in srgb,
37
+ var(--comins-table-accent-strong) 46%,
38
+ var(--comins-table-surface-muted)
39
+ );
40
+ --comins-table-scrollbar-track: var(--comins-table-surface-muted);
41
+ --comins-table-surface: #ffffff;
42
+ --comins-table-surface-muted: #f6fcfa;
43
+ --comins-table-component-accent: var(--comins-table-accent);
44
+ --comins-table-component-accent-foreground: var(--comins-table-accent-foreground);
45
+ --comins-table-component-accent-strong: var(--comins-table-accent-strong);
46
+ --comins-table-component-accent-soft: var(--comins-table-accent-soft);
47
+ --comins-table-component-border: var(--comins-table-border);
48
+ --comins-table-component-button-foreground: var(--comins-table-accent-strong);
49
+ --comins-table-component-focus: var(--comins-table-focus);
50
+ --comins-table-component-foreground: var(--comins-table-foreground);
51
+ --comins-table-component-muted: var(--comins-table-muted);
52
+ --comins-table-component-surface: var(--comins-table-surface);
53
+ --comins-table-component-surface-muted: var(--comins-table-surface-muted);
54
+ --comins-table-component-virtual-list-height: calc(var(--comins-table-virtual-list-item-height, 28px) * 5);
55
+ background: var(--comins-table-background);
56
+ border-bottom: 1px solid var(--comins-table-border);
57
+ border-left: 1px solid var(--comins-table-border);
58
+ border-radius: 2px;
59
+ border-right: 1px solid var(--comins-table-border);
60
+ color: var(--comins-table-foreground);
61
+ display: flex;
62
+ flex-direction: column;
63
+ min-height: 0;
64
+ position: relative;
65
+ }
66
+
67
+ @keyframes comins-table-skeleton-shimmer {
68
+ 0% {
69
+ background-position: 120% 0;
70
+ }
71
+
72
+ 100% {
73
+ background-position: -120% 0;
74
+ }
75
+ }
76
+
77
+ @keyframes comins-table-spin {
78
+ to {
79
+ transform: rotate(360deg);
80
+ }
81
+ }
82
+
83
+ .comins-table-theme--basic {
84
+ --comins-table-accent: #10b981;
85
+ --comins-table-accent-strong: #047857;
86
+ --comins-table-accent-soft: #d1fae5;
87
+ --comins-table-cell-border: #a7dbc8;
88
+ --comins-table-header-background: #10b981;
89
+ --comins-table-header-border: #047857;
90
+ --comins-table-header-split-border: #047857;
91
+ --comins-table-row-border: #bbe7d6;
92
+ --comins-table-row-disabled-background: #f1f5f9;
93
+ --comins-table-row-disabled-color: #64748b;
94
+ --comins-table-row-even-background: #ecfdf5;
95
+ --comins-table-row-odd-background: #ffffff;
96
+ --comins-table-row-selected-background: #d1fae5;
97
+ }
98
+
99
+ .comins-table-theme--dark {
100
+ --comins-table-accent: #10b981;
101
+ --comins-table-accent-foreground: #ecfdf5;
102
+ --comins-table-accent-strong: #10b981;
103
+ --comins-table-accent-soft: #1f3530;
104
+ --comins-table-background: #0f1715;
105
+ --comins-table-border: rgba(127, 203, 180, 0.22);
106
+ --comins-table-cell-border: #3a6356;
107
+ --comins-table-cell-color: #effcf7;
108
+ --comins-table-drop-marker: #34d399;
109
+ --comins-table-focus: rgba(45, 212, 191, 0.26);
110
+ --comins-table-foreground: #effcf7;
111
+ --comins-table-header-background: #064e3b;
112
+ --comins-table-header-border: #0f766e;
113
+ --comins-table-header-color: #ecfdf5;
114
+ --comins-table-header-split-border: #10b981;
115
+ --comins-table-muted: #9ad8c4;
116
+ --comins-table-range-background: #1f3530;
117
+ --comins-table-row-border: #2c4c42;
118
+ --comins-table-row-disabled-background: #23312e;
119
+ --comins-table-row-disabled-color: #9ad8c4;
120
+ --comins-table-row-even-background: #16211f;
121
+ --comins-table-row-odd-background: #0f1715;
122
+ --comins-table-row-selected-background: #1f3530;
123
+ --comins-table-surface: #0f1715;
124
+ --comins-table-surface-muted: #16211f;
125
+ }
126
+
127
+ .comins-table-theme--skyblue {
128
+ --comins-table-accent: #87ceeb;
129
+ --comins-table-accent-foreground: #07364a;
130
+ --comins-table-accent-strong: #278aa7;
131
+ --comins-table-accent-soft: #dff6ff;
132
+ --comins-table-background: #f6fcff;
133
+ --comins-table-border: rgba(39, 138, 167, 0.24);
134
+ --comins-table-cell-border: #7dbbd0;
135
+ --comins-table-drop-marker: #278aa7;
136
+ --comins-table-focus: rgba(39, 138, 167, 0.24);
137
+ --comins-table-header-background: #87ceeb;
138
+ --comins-table-header-border: #278aa7;
139
+ --comins-table-header-color: #07364a;
140
+ --comins-table-header-split-border: #278aa7;
141
+ --comins-table-range-background: #cdeeff;
142
+ --comins-table-row-border: #a6dbed;
143
+ --comins-table-row-disabled-background: #dbeff7;
144
+ --comins-table-row-disabled-color: #4f7890;
145
+ --comins-table-row-even-background: #dff6ff;
146
+ --comins-table-row-odd-background: #f6fcff;
147
+ --comins-table-row-selected-background: #bae6fd;
148
+ --comins-table-surface: #f6fcff;
149
+ --comins-table-surface-muted: #dff6ff;
150
+ }
151
+
152
+ .comins-table-theme--mint {
153
+ --comins-table-accent: #98ff98;
154
+ --comins-table-accent-foreground: #053f1c;
155
+ --comins-table-accent-strong: #22c55e;
156
+ --comins-table-accent-soft: #dfffe0;
157
+ --comins-table-background: #f8fff8;
158
+ --comins-table-border: rgba(34, 197, 94, 0.24);
159
+ --comins-table-cell-border: #74d684;
160
+ --comins-table-drop-marker: #22c55e;
161
+ --comins-table-focus: rgba(34, 197, 94, 0.24);
162
+ --comins-table-header-background: #98ff98;
163
+ --comins-table-header-border: #22c55e;
164
+ --comins-table-header-color: #053f1c;
165
+ --comins-table-header-split-border: #22c55e;
166
+ --comins-table-range-background: #dfffe0;
167
+ --comins-table-row-border: #9feaab;
168
+ --comins-table-row-disabled-background: #e5f7e5;
169
+ --comins-table-row-disabled-color: #4b7c4b;
170
+ --comins-table-row-even-background: #dfffe0;
171
+ --comins-table-row-odd-background: #f8fff8;
172
+ --comins-table-row-selected-background: #99f6e4;
173
+ --comins-table-surface: #f8fff8;
174
+ --comins-table-surface-muted: #dfffe0;
175
+ }
176
+
177
+ .comins-table-theme--gray {
178
+ --comins-table-accent: #bcbcbc;
179
+ --comins-table-accent-foreground: #1f2937;
180
+ --comins-table-accent-strong: #7e7e7e;
181
+ --comins-table-accent-soft: #e5e5e5;
182
+ --comins-table-background: #fafafa;
183
+ --comins-table-border: rgba(126, 126, 126, 0.28);
184
+ --comins-table-cell-border: #9d9d9d;
185
+ --comins-table-drop-marker: #7e7e7e;
186
+ --comins-table-focus: rgba(126, 126, 126, 0.24);
187
+ --comins-table-header-background: #bcbcbc;
188
+ --comins-table-header-border: #7e7e7e;
189
+ --comins-table-header-color: #1f2937;
190
+ --comins-table-header-split-border: #7e7e7e;
191
+ --comins-table-range-background: #e5e5e5;
192
+ --comins-table-row-border: #c7c7c7;
193
+ --comins-table-row-disabled-background: #e7e7e7;
194
+ --comins-table-row-disabled-color: #666666;
195
+ --comins-table-row-even-background: #f1f1f1;
196
+ --comins-table-row-odd-background: #fafafa;
197
+ --comins-table-row-selected-background: #e5e5e5;
198
+ --comins-table-surface: #fafafa;
199
+ --comins-table-surface-muted: #f1f1f1;
200
+ }
201
+
202
+ .comins-table-theme--orange {
203
+ --comins-table-accent: #ffa500;
204
+ --comins-table-accent-foreground: #2f1600;
205
+ --comins-table-accent-strong: #d97706;
206
+ --comins-table-accent-soft: #fff3e0;
207
+ --comins-table-background: #fffaf2;
208
+ --comins-table-border: rgba(217, 119, 6, 0.26);
209
+ --comins-table-cell-border: #f59e0b;
210
+ --comins-table-drop-marker: #d97706;
211
+ --comins-table-focus: rgba(245, 158, 11, 0.24);
212
+ --comins-table-header-background: #ffa500;
213
+ --comins-table-header-border: #d97706;
214
+ --comins-table-header-color: #2f1600;
215
+ --comins-table-header-split-border: #d97706;
216
+ --comins-table-range-background: #ffedd5;
217
+ --comins-table-row-border: #fbbf24;
218
+ --comins-table-row-disabled-background: #f7ead6;
219
+ --comins-table-row-disabled-color: #8a5b22;
220
+ --comins-table-row-even-background: #fff3e0;
221
+ --comins-table-row-odd-background: #fffaf2;
222
+ --comins-table-row-selected-background: #ffedd5;
223
+ --comins-table-surface: #fffaf2;
224
+ --comins-table-surface-muted: #fff3e0;
225
+ }
226
+
227
+ .comins-table__header {
228
+ flex: 0 0 auto;
229
+ overflow-x: hidden;
230
+ overflow-y: hidden;
231
+ }
232
+
233
+ .comins-table__summary {
234
+ flex: 0 0 auto;
235
+ overflow: hidden;
236
+ }
237
+
238
+ .comins-table__summary-cell {
239
+ background: var(--comins-table-surface-muted);
240
+ border-right: 1px solid var(--comins-table-cell-border);
241
+ border-top: 1px solid var(--comins-table-header-border);
242
+ color: var(--comins-table-foreground);
243
+ font-weight: 700;
244
+ }
245
+
246
+ .comins-tree-cell-content {
247
+ align-items: center;
248
+ display: inline-flex;
249
+ gap: 4px;
250
+ min-width: 0;
251
+ padding-left: calc(var(--comins-tree-depth) * 16px);
252
+ }
253
+
254
+ .comins-tree-expander,
255
+ .comins-tree-expander-spacer {
256
+ flex: 0 0 18px;
257
+ height: 18px;
258
+ width: 18px;
259
+ }
260
+
261
+ .comins-tree-expander {
262
+ align-items: center;
263
+ background: transparent;
264
+ border: 0;
265
+ color: var(--comins-table-accent-strong);
266
+ cursor: pointer;
267
+ display: inline-flex;
268
+ font: inherit;
269
+ justify-content: center;
270
+ padding: 0;
271
+ }
272
+
273
+ .comins-tree-expander:focus-visible {
274
+ box-shadow: 0 0 0 3px var(--comins-table-focus);
275
+ outline: none;
276
+ }
277
+
278
+ .comins-tree-cell-value {
279
+ min-width: 0;
280
+ }
281
+
282
+ .comins-table__body-viewport {
283
+ box-sizing: border-box;
284
+ flex: 1 1 auto;
285
+ min-height: 0;
286
+ overscroll-behavior: none;
287
+ overflow-x: hidden;
288
+ overflow-y: auto;
289
+ scrollbar-color: var(--comins-table-scrollbar-thumb) var(--comins-table-scrollbar-track);
290
+ }
291
+
292
+ .comins-table__body-viewport[data-virtualized="true"] {
293
+ contain: layout paint;
294
+ position: relative;
295
+ scroll-behavior: auto;
296
+ }
297
+
298
+ .comins-table__body-viewport[data-horizontal-overflow="true"] {
299
+ overflow-x: scroll;
300
+ overflow-y: scroll;
301
+ scrollbar-gutter: stable;
302
+ }
303
+
304
+ .comins-table__body-viewport::-webkit-scrollbar {
305
+ height: 12px;
306
+ width: 12px;
307
+ }
308
+
309
+ .comins-table__body-viewport::-webkit-scrollbar-track {
310
+ background: var(--comins-table-scrollbar-track);
311
+ }
312
+
313
+ .comins-table__body-viewport::-webkit-scrollbar-thumb {
314
+ background: var(--comins-table-scrollbar-thumb);
315
+ border: 3px solid var(--comins-table-scrollbar-track);
316
+ border-radius: 999px;
317
+ }
318
+
319
+ .comins-table__body-viewport::-webkit-scrollbar-thumb:hover {
320
+ background: var(--comins-table-accent-strong);
321
+ }
322
+
323
+ .comins-table__body-viewport::-webkit-scrollbar-corner {
324
+ background: var(--comins-table-scrollbar-corner);
325
+ }
326
+
327
+ .comins-table__empty-state-cell {
328
+ color: var(--comins-table-muted);
329
+ text-align: center;
330
+ }
331
+
332
+ .comins-table__empty-state {
333
+ align-items: center;
334
+ display: flex;
335
+ height: 100%;
336
+ justify-content: center;
337
+ min-height: var(--comins-table-row-height);
338
+ padding: 0 var(--comins-table-cell-padding-x);
339
+ }
340
+
341
+ .comins-table__loading-overlay {
342
+ align-items: center;
343
+ background: color-mix(in srgb, var(--comins-table-background) 84%, transparent);
344
+ color: var(--comins-table-accent-strong);
345
+ display: flex;
346
+ font-weight: 600;
347
+ gap: 8px;
348
+ inset: 0;
349
+ justify-content: center;
350
+ pointer-events: none;
351
+ position: absolute;
352
+ z-index: 5;
353
+ }
354
+
355
+ .comins-table__loading-spinner {
356
+ animation: comins-table-spin 0.8s linear infinite;
357
+ border: 2px solid color-mix(in srgb, var(--comins-table-accent-strong) 20%, transparent);
358
+ border-radius: 999px;
359
+ border-top-color: var(--comins-table-accent-strong);
360
+ display: inline-block;
361
+ flex: 0 0 auto;
362
+ height: 16px;
363
+ width: 16px;
364
+ }
365
+
366
+ .comins-table__skeleton-cell {
367
+ background: var(--comins-table-skeleton-background);
368
+ }
369
+
370
+ .comins-table__skeleton-block {
371
+ animation: comins-table-skeleton-shimmer 1.35s ease-in-out infinite;
372
+ background: linear-gradient(
373
+ 90deg,
374
+ var(--comins-table-skeleton-background),
375
+ var(--comins-table-skeleton-highlight),
376
+ var(--comins-table-skeleton-background)
377
+ );
378
+ background-size: 220% 100%;
379
+ display: block;
380
+ height: 12px;
381
+ max-width: 180px;
382
+ width: 72%;
383
+ }
384
+
385
+ .comins-table__td.comins-table__infinite-loading-cell {
386
+ align-items: center;
387
+ background-color: color-mix(
388
+ in srgb,
389
+ var(--comins-table-background) 92%,
390
+ var(--comins-table-surface-muted)
391
+ );
392
+ color: var(--comins-table-accent-strong);
393
+ display: flex;
394
+ font-weight: 600;
395
+ gap: 8px;
396
+ justify-content: flex-start;
397
+ padding-left: 10px;
398
+ text-align: left;
399
+ }
400
+
401
+ @media (prefers-reduced-motion: reduce) {
402
+ .comins-table__loading-spinner,
403
+ .comins-table__skeleton-block {
404
+ animation: none;
405
+ }
406
+ }
407
+
408
+ .comins-table__table {
409
+ border-collapse: separate;
410
+ border-spacing: 0;
411
+ }
412
+
413
+ .comins-table__body-virtual-sizer {
414
+ contain: strict;
415
+ pointer-events: none;
416
+ position: relative;
417
+ }
418
+
419
+ .comins-table__body-table--virtualized {
420
+ background: var(--comins-table-surface);
421
+ contain: layout paint style;
422
+ left: 0;
423
+ position: absolute;
424
+ top: 0;
425
+ transition: none;
426
+ will-change: transform;
427
+ z-index: 1;
428
+ }
429
+
430
+ .comins-table:not([data-show-header="true"]) .comins-table__body-table {
431
+ border-top: 1px solid var(--comins-table-border);
432
+ }
433
+
434
+ .comins-table__thead .comins-table__th {
435
+ background: var(--comins-table-header-background);
436
+ border-bottom: 1px solid var(--comins-table-header-border);
437
+ border-right: 1px solid var(--comins-table-header-split-border);
438
+ color: var(--comins-table-header-color);
439
+ z-index: 3;
440
+ }
441
+
442
+ .comins-table__th,
443
+ .comins-table__td {
444
+ border: 0;
445
+ height: var(--comins-table-cell-height);
446
+ min-width: 0;
447
+ }
448
+
449
+ .comins-table__td {
450
+ background: var(--comins-table-cell-background);
451
+ border-bottom: 1px solid var(--comins-table-row-border);
452
+ border-right: 1px solid var(--comins-table-cell-border);
453
+ color: var(--comins-table-cell-color);
454
+ overflow: hidden;
455
+ }
456
+
457
+ .comins-table__th {
458
+ border-top: 1px solid var(--comins-table-header-border);
459
+ cursor: grab;
460
+ height: var(--comins-table-header-height);
461
+ position: relative;
462
+ user-select: none;
463
+ }
464
+
465
+ .comins-table__thead .comins-table__group-th {
466
+ border-bottom: 0;
467
+ }
468
+
469
+ .comins-table__tr {
470
+ height: var(--comins-table-row-height);
471
+ }
472
+
473
+ .comins-table__tr[data-comins-row-parity="even"] > .comins-table__td {
474
+ background: var(--comins-table-row-even-background);
475
+ }
476
+
477
+ .comins-table__tr[data-comins-row-parity="odd"] > .comins-table__td {
478
+ background: var(--comins-table-row-odd-background);
479
+ }
480
+
481
+ .comins-table__tr[data-comins-row-custom-background="true"] > .comins-table__td {
482
+ background: var(--comins-table-row-custom-background);
483
+ }
484
+
485
+ .comins-table__tr[data-disabled="true"] {
486
+ background: var(--comins-table-row-disabled-background);
487
+ color: var(--comins-table-row-disabled-color);
488
+ cursor: not-allowed;
489
+ }
490
+
491
+ .comins-table__tr[data-disabled="true"] > .comins-table__td {
492
+ background: transparent;
493
+ color: inherit;
494
+ }
495
+
496
+ .comins-table__th[data-column-moving="true"] {
497
+ cursor: grabbing;
498
+ }
499
+
500
+ .comins-table__header-content {
501
+ align-items: center;
502
+ column-gap: 0;
503
+ display: grid;
504
+ grid-template-columns: minmax(0, auto) minmax(0, 1fr) auto minmax(0, auto);
505
+ justify-content: center;
506
+ min-width: 0;
507
+ overflow: hidden;
508
+ padding-right: 8px;
509
+ }
510
+
511
+ .comins-table__header-content[data-comins-header-components="true"] {
512
+ grid-template-columns: minmax(0, auto) minmax(0, 1fr) auto minmax(0, auto);
513
+ }
514
+
515
+ .comins-table__header-label,
516
+ .comins-table__header-label > * {
517
+ display: block;
518
+ max-width: 100%;
519
+ min-width: 0;
520
+ overflow: hidden;
521
+ text-align: center;
522
+ text-overflow: ellipsis;
523
+ white-space: nowrap;
524
+ }
525
+
526
+ .comins-table__header-slot {
527
+ align-items: center;
528
+ display: inline-flex;
529
+ min-width: 0;
530
+ overflow: hidden;
531
+ }
532
+
533
+ .comins-table__header-slot[data-comins-header-slot="left"] {
534
+ justify-content: flex-start;
535
+ }
536
+
537
+ .comins-table__header-slot[data-comins-header-slot="right"] {
538
+ justify-content: flex-end;
539
+ margin-left: 6px;
540
+ }
541
+
542
+ .comins-table__header-components {
543
+ align-items: center;
544
+ display: inline-flex;
545
+ justify-content: center;
546
+ max-width: 100%;
547
+ min-width: 0;
548
+ overflow: hidden;
549
+ }
550
+
551
+ .comins-table__th[data-sortable="true"] .comins-table__header-label {
552
+ transform: none;
553
+ }
554
+
555
+ .comins-table__th[data-sortable="false"] .comins-table__header-content {
556
+ padding-right: 0;
557
+ }
558
+
559
+ .comins-table__th[data-sortable="false"] .comins-table__header-content[data-comins-header-components="true"] {
560
+ grid-template-columns: minmax(0, auto) minmax(0, 1fr) auto minmax(0, auto);
561
+ }
562
+
563
+ .comins-table__th[data-sortable="false"] .comins-sort-indicator {
564
+ display: none;
565
+ }
566
+
567
+ .comins-table__resize {
568
+ bottom: 0;
569
+ cursor: col-resize;
570
+ display: block;
571
+ position: absolute;
572
+ right: -3px;
573
+ top: 0;
574
+ width: 7px;
575
+ z-index: 4;
576
+ }
577
+
578
+ .comins-table__resize-line {
579
+ background: var(--comins-table-resize-handle);
580
+ border-radius: 999px;
581
+ bottom: 8px;
582
+ opacity: 0;
583
+ position: absolute;
584
+ right: 3px;
585
+ top: 8px;
586
+ transition: opacity 140ms ease;
587
+ width: 1px;
588
+ }
589
+
590
+ .comins-table__resize:hover .comins-table__resize-line,
591
+ .comins-table__resize:focus .comins-table__resize-line,
592
+ .comins-table__resize[data-resizing="true"] .comins-table__resize-line {
593
+ opacity: 1;
594
+ }
595
+
596
+ .comins-column-drop-marker {
597
+ background: var(--comins-table-drop-marker);
598
+ border-radius: 999px;
599
+ bottom: 4px;
600
+ display: none;
601
+ left: -1px;
602
+ position: absolute;
603
+ top: 4px;
604
+ width: 2px;
605
+ z-index: 5;
606
+ }
607
+
608
+ .comins-table__th[data-column-drop-target="true"] .comins-column-drop-marker {
609
+ display: block;
610
+ }
611
+
612
+ .comins-table__th[data-column-drop-target="true"] {
613
+ background: var(--comins-table-accent-strong);
614
+ }
615
+
616
+ .comins-column-move-ghost {
617
+ background: var(--comins-table-drop-marker);
618
+ border: 1px solid rgba(255, 255, 255, 0.58);
619
+ border-radius: 6px;
620
+ box-shadow: 0 10px 28px rgba(15, 23, 42, 0.22);
621
+ color: #ffffff;
622
+ font-size: 13px;
623
+ font-weight: 800;
624
+ max-width: 220px;
625
+ overflow: hidden;
626
+ padding: 7px 10px;
627
+ pointer-events: none;
628
+ position: fixed;
629
+ text-overflow: ellipsis;
630
+ top: 0;
631
+ white-space: nowrap;
632
+ z-index: 60;
633
+ }
634
+
635
+ .comins-sort-indicator {
636
+ display: none;
637
+ justify-content: center;
638
+ margin-left: 10px;
639
+ opacity: 0;
640
+ transform: scale(0.78) rotate(0deg);
641
+ transition:
642
+ opacity 180ms ease,
643
+ transform 180ms ease;
644
+ }
645
+
646
+ .comins-sort-indicator[data-sort-state="asc"] {
647
+ display: inline-flex;
648
+ opacity: 1;
649
+ transform: scale(1) rotate(0deg);
650
+ }
651
+
652
+ .comins-sort-indicator[data-sort-state="desc"] {
653
+ display: inline-flex;
654
+ opacity: 1;
655
+ transform: scale(1) rotate(180deg);
656
+ }
657
+
658
+ .comins-row-selected {
659
+ background: var(--comins-table-row-selected-background);
660
+ }
661
+
662
+ .comins-table__tr.comins-row-selected > .comins-table__td {
663
+ background: transparent;
664
+ }
665
+
666
+ .comins-table__td[data-selected="true"] {
667
+ box-shadow: inset 0 0 0 2px var(--comins-table-accent);
668
+ position: relative;
669
+ z-index: 1;
670
+ }
671
+
672
+ .comins-table__td--with-row-handle {
673
+ padding-left: 30px;
674
+ position: relative;
675
+ }
676
+
677
+ .comins-row-drag-handle {
678
+ background:
679
+ radial-gradient(circle, var(--comins-table-accent-strong) 1px, transparent 1.5px) 0 0 / 4px 4px;
680
+ cursor: grab;
681
+ display: block;
682
+ height: 14px;
683
+ left: 10px;
684
+ opacity: 0.55;
685
+ position: absolute;
686
+ top: 50%;
687
+ transform: translateY(-50%);
688
+ width: 10px;
689
+ }
690
+
691
+ .comins-row-drag-handle:active {
692
+ cursor: grabbing;
693
+ }
694
+
695
+ .comins-row-move-placeholder td {
696
+ background: var(--comins-table-row-selected-background);
697
+ border-bottom: 1px solid var(--comins-table-row-border);
698
+ border-right: 1px solid var(--comins-table-cell-border);
699
+ color: var(--comins-table-accent-strong);
700
+ font-weight: 700;
701
+ height: 32px;
702
+ text-align: center;
703
+ }
704
+
705
+ .comins-table-empty-filler td {
706
+ border-bottom: 0;
707
+ border-right: 1px solid var(--comins-table-cell-border);
708
+ min-height: 1px;
709
+ }
710
+
711
+ .comins-table__tr--viewport-end > .comins-table__td {
712
+ border-bottom: 0;
713
+ }
714
+
715
+ .comins-table__tr > .comins-table__td.comins-cell-range-selected,
716
+ .comins-table__tr.comins-row-selected > .comins-table__td.comins-cell-range-selected {
717
+ background: var(--comins-table-range-background);
718
+ }
719
+
720
+ .comins-table__component-layout {
721
+ align-items: center;
722
+ display: inline-flex;
723
+ gap: 6px;
724
+ height: 100%;
725
+ justify-content: center;
726
+ min-width: 0;
727
+ overflow: hidden;
728
+ width: 100%;
729
+ }
730
+
731
+ .comins-table__component-group {
732
+ align-items: center;
733
+ display: inline-flex;
734
+ flex: 1 1 0;
735
+ gap: 4px;
736
+ justify-content: center;
737
+ min-width: 0;
738
+ }
739
+
740
+ .comins-table__component-content {
741
+ min-width: 0;
742
+ }
743
+
744
+ .comins-table__component-slot {
745
+ align-items: center;
746
+ display: inline-flex;
747
+ height: 100%;
748
+ justify-content: center;
749
+ line-height: 1;
750
+ max-width: 100%;
751
+ min-width: 0;
752
+ width: 100%;
753
+ }
754
+
755
+ .comins-table__component-slot[data-comins-component-align="start"] {
756
+ justify-content: flex-start;
757
+ }
758
+
759
+ .comins-table__component-slot[data-comins-component-align="end"] {
760
+ justify-content: flex-end;
761
+ }
762
+
763
+ .comins-table__component button,
764
+ .comins-table__component input,
765
+ .comins-table__component select {
766
+ font: inherit;
767
+ }
768
+
769
+ .comins-table__component-button,
770
+ .comins-table__component-toggle,
771
+ .comins-table__component-menu-trigger,
772
+ .comins-table__component-virtual-list-more {
773
+ align-items: center;
774
+ background: var(--comins-table-component-accent-soft);
775
+ border: 1px solid var(--comins-table-component-border);
776
+ border-radius: 6px;
777
+ color: var(--comins-table-component-button-foreground);
778
+ cursor: pointer;
779
+ display: inline-flex;
780
+ font-size: 11px;
781
+ font-weight: 800;
782
+ gap: 4px;
783
+ min-height: 24px;
784
+ padding: 3px 8px;
785
+ }
786
+
787
+ .comins-table__component-button:hover,
788
+ .comins-table__component-toggle:hover,
789
+ .comins-table__component-menu-trigger:hover,
790
+ .comins-table__component-virtual-list-more:hover {
791
+ background: var(--comins-table-component-accent-soft);
792
+ border-color: var(--comins-table-component-accent-strong);
793
+ }
794
+
795
+ .comins-table__component-button:focus-visible,
796
+ .comins-table__component-toggle:focus-visible,
797
+ .comins-table__component-menu-trigger:focus-visible,
798
+ .comins-table__component-input:focus-visible,
799
+ .comins-table__component-select:focus-visible,
800
+ .comins-table__component-virtual-list-search:focus-visible,
801
+ .comins-table__component-virtual-list-more:focus-visible {
802
+ box-shadow: 0 0 0 3px var(--comins-table-component-focus);
803
+ outline: none;
804
+ }
805
+
806
+ .comins-table__component-input,
807
+ .comins-table__component-select,
808
+ .comins-table__component-virtual-list-search {
809
+ background: var(--comins-table-component-surface);
810
+ border: 1px solid var(--comins-table-component-border);
811
+ border-radius: 0;
812
+ box-sizing: border-box;
813
+ color: var(--comins-table-component-foreground);
814
+ height: 100%;
815
+ min-height: 24px;
816
+ min-width: 0;
817
+ padding: 2px 5px 2px 2px;
818
+ text-overflow: ellipsis;
819
+ width: 100%;
820
+ }
821
+
822
+ .comins-table__component-checkbox,
823
+ .comins-table__component-radio {
824
+ accent-color: var(--comins-table-component-accent);
825
+ }
826
+
827
+ .comins-table__component-checkbox {
828
+ appearance: none;
829
+ background: var(--comins-table-component-surface);
830
+ border: 1px solid var(--comins-table-component-border);
831
+ box-sizing: border-box;
832
+ flex: 0 0 20px;
833
+ height: 20px;
834
+ margin: 0;
835
+ max-width: 20px;
836
+ min-width: 20px;
837
+ width: 20px;
838
+ }
839
+
840
+ .comins-table__component-checkbox:checked {
841
+ background-color: var(--comins-table-component-accent);
842
+ background-image: url("data:image/svg+xml,%3Csvg width='14' height='14' viewBox='0 0 14 14' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M3 7L6 10L11 4' stroke='white' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
843
+ background-position: center;
844
+ background-repeat: no-repeat;
845
+ background-size: 14px 14px;
846
+ border-color: var(--comins-table-component-accent-strong);
847
+ }
848
+
849
+ .comins-table__component-radio {
850
+ align-items: center;
851
+ display: inline-flex;
852
+ gap: 8px;
853
+ }
854
+
855
+ .comins-table__component-radio label {
856
+ align-items: center;
857
+ display: inline-flex;
858
+ gap: 5px;
859
+ }
860
+
861
+ .comins-table__component-radio input {
862
+ appearance: none;
863
+ background: var(--comins-table-component-surface);
864
+ border: 1px solid var(--comins-table-component-border);
865
+ border-radius: 999px;
866
+ box-sizing: border-box;
867
+ flex: 0 0 20px;
868
+ height: 20px;
869
+ margin: 0;
870
+ max-width: 20px;
871
+ min-width: 20px;
872
+ width: 20px;
873
+ }
874
+
875
+ .comins-table__component-radio input:checked {
876
+ background: radial-gradient(circle, var(--comins-table-component-accent) 0 45%, transparent 48%);
877
+ border-color: var(--comins-table-component-accent-strong);
878
+ }
879
+
880
+ .comins-table__component-toggle[aria-pressed="true"],
881
+ .comins-table__component-toggle[data-state="checked"],
882
+ .comins-table__component-toggle[data-checked="true"] {
883
+ background: var(--comins-table-component-accent);
884
+ border-color: var(--comins-table-component-accent-strong);
885
+ color: var(--comins-table-component-accent-foreground);
886
+ }
887
+
888
+ .comins-table__component-progress {
889
+ background: var(--comins-table-component-surface-muted);
890
+ border-radius: 999px;
891
+ display: inline-flex;
892
+ height: 8px;
893
+ min-width: 74px;
894
+ overflow: hidden;
895
+ }
896
+
897
+ .comins-table__component-progress > span {
898
+ background: var(--comins-table-component-accent);
899
+ display: block;
900
+ }
901
+
902
+ .comins-table__component-menu {
903
+ display: inline-flex;
904
+ position: relative;
905
+ }
906
+
907
+ .comins-table__component-menu-popover {
908
+ background: var(--comins-table-component-surface);
909
+ border: 1px solid var(--comins-table-component-border);
910
+ border-radius: 6px;
911
+ box-shadow: 0 12px 28px rgba(15, 23, 42, 0.14);
912
+ display: grid;
913
+ gap: 2px;
914
+ left: 0;
915
+ min-width: 136px;
916
+ padding: 6px;
917
+ position: fixed;
918
+ top: calc(100% + 4px);
919
+ z-index: 9999;
920
+ }
921
+
922
+ .comins-table__component-menu-item {
923
+ background: transparent;
924
+ border: 0;
925
+ border-radius: 4px;
926
+ color: var(--comins-table-component-foreground);
927
+ cursor: pointer;
928
+ font-size: 12px;
929
+ padding: 6px 8px;
930
+ text-align: left;
931
+ white-space: nowrap;
932
+ }
933
+
934
+ .comins-table__component-menu-item:hover,
935
+ .comins-table__component-menu-item:focus {
936
+ background: var(--comins-table-component-accent-soft);
937
+ outline: none;
938
+ }
939
+
940
+ .comins-table__component-menu-item:disabled {
941
+ color: #94a3b8;
942
+ cursor: not-allowed;
943
+ }
944
+
945
+ .comins-table__component-menu-label {
946
+ color: var(--comins-table-component-muted);
947
+ font-size: 11px;
948
+ font-weight: 800;
949
+ padding: 4px 8px;
950
+ }
951
+
952
+ .comins-table__component-menu-divider {
953
+ background: var(--comins-table-component-border);
954
+ height: 1px;
955
+ margin: 4px 2px;
956
+ }
957
+
958
+ .comins-table__component-virtual-list {
959
+ background: var(--comins-table-component-surface);
960
+ border: 1px solid var(--comins-table-component-border);
961
+ border-radius: 6px;
962
+ box-sizing: border-box;
963
+ display: grid;
964
+ gap: 2px;
965
+ grid-template-rows: minmax(0, 1fr) auto;
966
+ height: 100%;
967
+ max-height: 100%;
968
+ min-width: 0;
969
+ overflow: hidden;
970
+ padding: 2px;
971
+ width: 100%;
972
+ }
973
+
974
+ .comins-table__component-virtual-list-items {
975
+ display: grid;
976
+ gap: 2px;
977
+ min-height: 0;
978
+ overflow: auto;
979
+ }
980
+
981
+ .comins-table__component-virtual-list-item {
982
+ align-items: center;
983
+ background: var(--comins-table-component-surface-muted);
984
+ border: 1px solid rgba(57, 99, 88, 0.18);
985
+ border-radius: 4px;
986
+ box-sizing: border-box;
987
+ color: var(--comins-table-component-foreground);
988
+ cursor: pointer;
989
+ display: flex;
990
+ font: inherit;
991
+ height: var(--comins-table-virtual-list-item-height, 28px);
992
+ min-height: 0;
993
+ min-width: 0;
994
+ padding: 3px 7px;
995
+ text-align: left;
996
+ width: 100%;
997
+ }
998
+
999
+ .comins-table__component-virtual-list-item-label {
1000
+ display: block;
1001
+ min-width: 0;
1002
+ overflow: hidden;
1003
+ text-overflow: ellipsis;
1004
+ white-space: nowrap;
1005
+ }
1006
+
1007
+ .comins-table__component-virtual-list-spacer {
1008
+ display: block;
1009
+ }
1010
+
1011
+ .comins-table__component-virtual-list-item:hover,
1012
+ .comins-table__component-virtual-list-item:focus {
1013
+ background: var(--comins-table-component-accent-soft);
1014
+ outline: none;
1015
+ }
1016
+
1017
+ .comins-table__component-virtual-list-item[aria-selected="true"] {
1018
+ background: var(--comins-table-component-accent-soft);
1019
+ border-color: var(--comins-table-component-accent-strong);
1020
+ color: var(--comins-table-component-button-foreground);
1021
+ font-weight: 800;
1022
+ }
1023
+
1024
+ .comins-table__component-virtual-list-item:disabled,
1025
+ .comins-table__component-virtual-list-more:disabled,
1026
+ .comins-table__component-virtual-list-search:disabled {
1027
+ color: #94a3b8;
1028
+ cursor: not-allowed;
1029
+ opacity: 0.72;
1030
+ }
1031
+
1032
+ .comins-table__component-virtual-list-controls {
1033
+ display: grid;
1034
+ gap: 4px;
1035
+ }
1036
+
1037
+ .comins-table__component-virtual-list-search {
1038
+ height: 28px;
1039
+ min-height: 26px;
1040
+ padding: 3px 7px;
1041
+ }
1042
+
1043
+ .comins-table__component-virtual-list-more {
1044
+ font: inherit;
1045
+ font-size: 11px;
1046
+ min-height: 26px;
1047
+ }
1048
+
1049
+ .comins-table__td[data-comins-component-cell="true"] {
1050
+ padding: 2px;
1051
+ }
1052
+
1053
+ .comins-table__cell-value {
1054
+ display: block;
1055
+ min-width: 0;
1056
+ overflow: hidden;
1057
+ text-overflow: ellipsis;
1058
+ white-space: nowrap;
1059
+ }