@ui-organized/angular-table 0.0.0-stage → 6.0.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/styles.css ADDED
@@ -0,0 +1,895 @@
1
+ /* src/styles/table.css */
2
+ .data-table {
3
+ display: flex;
4
+ flex-direction: column;
5
+ gap: var(--spacing-space-03);
6
+ width: 100%;
7
+ min-width: 0;
8
+ font-family: var(--type-font-body);
9
+ color: var(--color-content-primary);
10
+ --data-table-max-height: none;
11
+ --data-table-cell-bg: var(--color-surface-primary);
12
+ }
13
+ .data-table--sm {
14
+ --data-table-control-height: var(--control-height-sm);
15
+ --data-table-move-size: var(--spacing-space-06);
16
+ --data-table-row-height: calc(var(--control-height-sm) + 2 * var(--spacing-space-01));
17
+ --data-table-header-height: calc(var(--control-height-sm) + 2 * var(--spacing-space-01));
18
+ --data-table-cell-padding-y: var(--spacing-space-01);
19
+ --data-table-cell-padding-x: var(--spacing-space-02);
20
+ --data-table-text-size: var(--type-size-body-small);
21
+ --data-table-line-height: var(--type-leading-body-small);
22
+ }
23
+ .data-table--md {
24
+ --data-table-control-height: var(--control-height-md);
25
+ --data-table-move-size: var(--spacing-space-07);
26
+ --data-table-row-height: calc(var(--control-height-md) + 2 * var(--spacing-space-02));
27
+ --data-table-header-height: calc(var(--control-height-md) + 2 * var(--spacing-space-015));
28
+ --data-table-cell-padding-y: var(--spacing-space-02);
29
+ --data-table-cell-padding-x: var(--spacing-space-03);
30
+ --data-table-text-size: var(--type-size-body-medium);
31
+ --data-table-line-height: var(--type-leading-body-medium);
32
+ }
33
+ .data-table--lg {
34
+ --data-table-control-height: var(--control-height-lg);
35
+ --data-table-move-size: var(--spacing-space-08);
36
+ --data-table-row-height: calc(var(--control-height-lg) + 2 * var(--spacing-space-02));
37
+ --data-table-header-height: calc(var(--control-height-lg) + 2 * var(--spacing-space-015));
38
+ --data-table-cell-padding-y: var(--spacing-space-02);
39
+ --data-table-cell-padding-x: var(--spacing-space-04);
40
+ --data-table-text-size: var(--type-size-body-large);
41
+ --data-table-line-height: var(--type-leading-body-large);
42
+ }
43
+ .data-table__viewport {
44
+ position: relative;
45
+ overflow: auto;
46
+ overscroll-behavior: contain;
47
+ max-height: var(--data-table-max-height, none);
48
+ background-color: var(--color-surface-primary);
49
+ scrollbar-width: thin;
50
+ scrollbar-color: var(--color-content-tertiary) transparent;
51
+ }
52
+ .data-table--default .data-table__viewport,
53
+ .data-table--bordered .data-table__viewport {
54
+ border: 1px solid var(--color-border-primary);
55
+ border-radius: var(--border-radius-05);
56
+ }
57
+ .data-table__viewport:focus-visible {
58
+ outline: 2px solid var(--color-interactive-focus);
59
+ outline-offset: -2px;
60
+ }
61
+ .data-table__viewport:has(.data-table__head-cell):not(:has(.data-table__caption:not(.data-table__caption--hidden))) {
62
+ background:
63
+ linear-gradient(var(--color-border-primary), var(--color-border-primary)) 0 var(--data-table-header-height) / 100% 1px no-repeat border-box,
64
+ linear-gradient(var(--color-surface-secondary), var(--color-surface-secondary)) 0 0 / 100% var(--data-table-header-height) no-repeat border-box,
65
+ var(--color-surface-primary);
66
+ }
67
+ .data-table__viewport::-webkit-scrollbar {
68
+ width: 10px;
69
+ height: 10px;
70
+ }
71
+ .data-table__viewport::-webkit-scrollbar-thumb {
72
+ background-color: var(--color-content-tertiary);
73
+ border-radius: var(--border-radius-full);
74
+ background-clip: padding-box;
75
+ border: 2px solid transparent;
76
+ }
77
+ .data-table__viewport::-webkit-scrollbar-track {
78
+ background-color: transparent;
79
+ }
80
+ .data-table__table {
81
+ border-collapse: separate;
82
+ border-spacing: 0;
83
+ font-size: var(--data-table-text-size);
84
+ line-height: var(--data-table-line-height);
85
+ }
86
+ .data-table__caption {
87
+ caption-side: top;
88
+ padding: 0 0 var(--spacing-space-02);
89
+ text-align: left;
90
+ font-size: var(--type-size-body-medium);
91
+ font-weight: var(--type-weight-body-strong);
92
+ color: var(--color-content-primary);
93
+ }
94
+ .data-table__sr-only,
95
+ .data-table__caption--hidden {
96
+ position: absolute;
97
+ width: 1px;
98
+ height: 1px;
99
+ padding: 0;
100
+ margin: -1px;
101
+ overflow: hidden;
102
+ clip-path: inset(50%);
103
+ white-space: nowrap;
104
+ border: 0;
105
+ }
106
+ .data-table__row:hover {
107
+ --data-table-cell-bg: var(--color-interactive-ui-hover);
108
+ }
109
+ .data-table__row--selected {
110
+ --data-table-cell-bg: var(--color-interactive-ui-selected);
111
+ }
112
+ .data-table__row--selected:hover {
113
+ --data-table-cell-bg: var(--color-interactive-ui-active);
114
+ }
115
+ .data-table__row--clickable {
116
+ cursor: pointer;
117
+ }
118
+ .data-table__row--editing {
119
+ --data-table-cell-bg: var(--color-surface-secondary);
120
+ }
121
+ .data-table__cell {
122
+ box-sizing: border-box;
123
+ height: var(--data-table-row-height);
124
+ padding: var(--data-table-cell-padding-y) var(--data-table-cell-padding-x);
125
+ background-color: var(--data-table-cell-bg);
126
+ border-bottom: 1px solid var(--color-border-secondary);
127
+ color: var(--color-content-primary);
128
+ font-weight: var(--type-weight-body-default);
129
+ text-align: left;
130
+ vertical-align: middle;
131
+ overflow: hidden;
132
+ text-overflow: ellipsis;
133
+ white-space: nowrap;
134
+ }
135
+ .data-table__cell--start {
136
+ text-align: left;
137
+ }
138
+ .data-table__cell--center {
139
+ text-align: center;
140
+ }
141
+ .data-table__cell--end {
142
+ text-align: right;
143
+ }
144
+ .data-table__cell--primary {
145
+ font-weight: var(--type-weight-body-strong);
146
+ color: var(--color-content-primary);
147
+ }
148
+ .data-table__cell:focus-visible {
149
+ outline: 2px solid var(--color-interactive-focus);
150
+ outline-offset: -2px;
151
+ }
152
+ .data-table__cell--invalid {
153
+ box-shadow: inset 0 0 0 1px var(--color-status-error);
154
+ }
155
+ .data-table__cell--sticky {
156
+ position: sticky;
157
+ z-index: 1;
158
+ }
159
+ .data-table__cell--sticky:not(.data-table__head-cell) {
160
+ background-color: var(--color-surface-primary);
161
+ background-image: linear-gradient(var(--data-table-cell-bg), var(--data-table-cell-bg));
162
+ }
163
+ .data-table__head-cell.data-table__cell--sticky {
164
+ z-index: 3;
165
+ }
166
+ .data-table__cell--sticky-left-edge {
167
+ box-shadow:
168
+ 1px 0 0 rgba(0, 0, 0, 0.08),
169
+ 2px 0 0 rgba(0, 0, 0, 0.06),
170
+ 4px 0 0 rgba(0, 0, 0, 0.04),
171
+ 6px 0 0 rgba(0, 0, 0, 0.03);
172
+ border-right: 1px solid var(--color-border-primary);
173
+ }
174
+ .data-table__cell--sticky-right-edge {
175
+ box-shadow:
176
+ -1px 0 0 rgba(0, 0, 0, 0.08),
177
+ -2px 0 0 rgba(0, 0, 0, 0.06),
178
+ -4px 0 0 rgba(0, 0, 0, 0.04),
179
+ -6px 0 0 rgba(0, 0, 0, 0.03);
180
+ border-left: 1px solid var(--color-border-primary);
181
+ }
182
+ .data-table--bordered .data-table__cell {
183
+ border-right: 1px solid var(--color-border-secondary);
184
+ }
185
+ .data-table--bordered .data-table__cell:last-child {
186
+ border-right: 0;
187
+ }
188
+ .data-table__spacer-cell {
189
+ box-sizing: border-box;
190
+ padding: 0;
191
+ border: 0;
192
+ background-color: transparent;
193
+ }
194
+
195
+ /* src/styles/header.css */
196
+ .data-table__head-cell {
197
+ box-sizing: border-box;
198
+ position: sticky;
199
+ top: 0;
200
+ z-index: 2;
201
+ height: var(--data-table-header-height);
202
+ padding: 0 var(--data-table-cell-padding-x);
203
+ background-color: var(--color-surface-secondary);
204
+ border-bottom: 1px solid var(--color-border-primary);
205
+ color: var(--color-content-secondary);
206
+ font-size: var(--type-size-body-small);
207
+ font-weight: var(--type-weight-body-strong);
208
+ text-align: left;
209
+ white-space: nowrap;
210
+ }
211
+ .data-table__head-cell--start {
212
+ text-align: left;
213
+ }
214
+ .data-table__head-cell--center {
215
+ text-align: center;
216
+ }
217
+ .data-table__head-cell--end {
218
+ text-align: right;
219
+ }
220
+ .data-table__head-cell:focus-visible {
221
+ outline: 2px solid var(--color-interactive-focus);
222
+ outline-offset: -2px;
223
+ }
224
+ .data-table__head-inner {
225
+ display: flex;
226
+ align-items: center;
227
+ gap: var(--spacing-space-01);
228
+ min-width: 0;
229
+ }
230
+ .data-table__head-cell--center .data-table__head-inner {
231
+ justify-content: center;
232
+ }
233
+ .data-table__head-cell--end .data-table__head-inner {
234
+ justify-content: flex-end;
235
+ }
236
+ .data-table__head-label {
237
+ overflow: hidden;
238
+ text-overflow: ellipsis;
239
+ white-space: nowrap;
240
+ }
241
+ .data-table__sort-button {
242
+ display: inline-flex;
243
+ align-items: center;
244
+ gap: var(--spacing-space-01);
245
+ min-width: 0;
246
+ height: 100%;
247
+ padding: 0;
248
+ background: none;
249
+ border: 0;
250
+ color: inherit;
251
+ font: inherit;
252
+ cursor: pointer;
253
+ }
254
+ .data-table__sort-button:hover {
255
+ color: var(--color-content-primary);
256
+ }
257
+ .data-table__sort-button:focus-visible {
258
+ outline: 2px solid var(--color-interactive-focus);
259
+ outline-offset: 2px;
260
+ border-radius: var(--border-radius-01);
261
+ }
262
+ .data-table__sort-icon {
263
+ display: inline-flex;
264
+ flex: none;
265
+ color: var(--color-content-tertiary);
266
+ opacity: 0;
267
+ }
268
+ .data-table__sort-button:hover .data-table__sort-icon,
269
+ .data-table__head-cell[aria-sort=ascending] .data-table__sort-icon,
270
+ .data-table__head-cell[aria-sort=descending] .data-table__sort-icon {
271
+ opacity: 1;
272
+ }
273
+ .data-table__head-cell[aria-sort=ascending] .data-table__sort-icon,
274
+ .data-table__head-cell[aria-sort=descending] .data-table__sort-icon {
275
+ color: var(--color-interactive-primary-default);
276
+ }
277
+ .data-table__resize-handle {
278
+ position: absolute;
279
+ top: 0;
280
+ right: 0;
281
+ width: var(--spacing-space-02);
282
+ height: 100%;
283
+ padding: 0;
284
+ background: none;
285
+ border: 0;
286
+ cursor: col-resize;
287
+ touch-action: none;
288
+ user-select: none;
289
+ }
290
+ .data-table__resize-handle::after {
291
+ content: "";
292
+ position: absolute;
293
+ top: 25%;
294
+ right: calc(var(--spacing-space-02) / 2);
295
+ width: 1px;
296
+ height: 50%;
297
+ background-color: var(--color-border-primary);
298
+ }
299
+ .data-table__resize-handle:hover::after,
300
+ .data-table__resize-handle--active::after {
301
+ top: 0;
302
+ height: 100%;
303
+ width: 2px;
304
+ background-color: var(--color-interactive-primary-default);
305
+ }
306
+ .data-table__resize-handle:focus-visible {
307
+ outline: 2px solid var(--color-interactive-focus);
308
+ outline-offset: -2px;
309
+ }
310
+ .data-table__head-inner[draggable=true] {
311
+ cursor: grab;
312
+ }
313
+ .data-table__head-cell[data-dragging] {
314
+ opacity: 0.5;
315
+ }
316
+ .data-table__head-cell[data-drop=before] {
317
+ box-shadow: inset 2px 0 0 var(--color-interactive-primary-default);
318
+ }
319
+ .data-table__head-cell[data-drop=after] {
320
+ box-shadow: inset -2px 0 0 var(--color-interactive-primary-default);
321
+ }
322
+ .data-table__move {
323
+ position: absolute;
324
+ top: 50%;
325
+ right: calc(var(--spacing-space-02) + var(--spacing-space-01));
326
+ display: inline-flex;
327
+ gap: var(--spacing-space-005);
328
+ padding-inline-start: var(--spacing-space-01);
329
+ background-color: var(--color-surface-secondary);
330
+ transform: translateY(-50%);
331
+ }
332
+ .data-table__head-cell--end .data-table__move {
333
+ right: auto;
334
+ left: var(--spacing-space-02);
335
+ padding-inline: 0 var(--spacing-space-01);
336
+ }
337
+ .data-table__move[data-mode=toggle] {
338
+ position: static;
339
+ flex: none;
340
+ margin-inline-start: auto;
341
+ padding-inline: 0;
342
+ background: none;
343
+ transform: none;
344
+ }
345
+ .data-table__head-cell--end .data-table__move[data-mode=toggle] {
346
+ order: -1;
347
+ margin-inline: 0 auto;
348
+ }
349
+ .data-table__move[data-mode=always] {
350
+ opacity: 0;
351
+ pointer-events: none;
352
+ }
353
+ .data-table__head-cell:hover .data-table__move[data-mode=always],
354
+ .data-table__head-cell:focus-within .data-table__move[data-mode=always] {
355
+ opacity: 1;
356
+ pointer-events: auto;
357
+ }
358
+ @media (hover: none) {
359
+ .data-table__move[data-mode=always] {
360
+ opacity: 1;
361
+ pointer-events: auto;
362
+ }
363
+ }
364
+ .data-table__move-button {
365
+ display: inline-flex;
366
+ align-items: center;
367
+ justify-content: center;
368
+ width: var(--data-table-move-size, var(--spacing-space-07));
369
+ height: var(--data-table-move-size, var(--spacing-space-07));
370
+ padding: 0;
371
+ background: none;
372
+ border: 0;
373
+ border-radius: var(--radius-interactive);
374
+ color: var(--color-content-secondary);
375
+ cursor: pointer;
376
+ }
377
+ .data-table__move-button:hover:not(:disabled) {
378
+ background-color: var(--color-interactive-ui-hover);
379
+ color: var(--color-content-primary);
380
+ }
381
+ .data-table__move-button:disabled {
382
+ opacity: 0.4;
383
+ cursor: default;
384
+ }
385
+ .data-table__move-button:focus-visible {
386
+ outline: 2px solid var(--color-interactive-focus);
387
+ outline-offset: 0;
388
+ }
389
+
390
+ /* src/styles/states.css */
391
+ .data-table__state-cell {
392
+ padding: var(--spacing-space-08) var(--spacing-space-04);
393
+ background-color: var(--data-table-cell-bg);
394
+ border-bottom: 1px solid var(--color-border-secondary);
395
+ text-align: center;
396
+ white-space: normal;
397
+ }
398
+ .data-table__state {
399
+ display: flex;
400
+ flex-direction: column;
401
+ align-items: center;
402
+ gap: var(--spacing-space-02);
403
+ color: var(--color-content-secondary);
404
+ }
405
+ .data-table__state-title {
406
+ font-size: var(--type-size-body-large);
407
+ font-weight: var(--type-weight-body-strong);
408
+ color: var(--color-content-primary);
409
+ }
410
+ .data-table__state-description {
411
+ max-width: var(--dimension-08);
412
+ font-size: var(--type-size-body-medium);
413
+ color: var(--color-content-secondary);
414
+ }
415
+ .data-table__state-actions {
416
+ display: flex;
417
+ gap: var(--spacing-space-02);
418
+ margin-top: var(--spacing-space-02);
419
+ }
420
+ .data-table__state--error .data-table__state-title {
421
+ color: var(--color-status-error-content);
422
+ }
423
+ .data-table__skeleton-cell {
424
+ height: var(--data-table-row-height);
425
+ padding: var(--data-table-cell-padding-y) var(--data-table-cell-padding-x);
426
+ background-color: var(--data-table-cell-bg);
427
+ border-bottom: 1px solid var(--color-border-secondary);
428
+ }
429
+ .data-table__row--placeholder {
430
+ --data-table-cell-bg: var(--color-surface-primary);
431
+ }
432
+
433
+ /* src/styles/toolbar.css */
434
+ .data-table__toolbar {
435
+ display: flex;
436
+ align-items: center;
437
+ gap: var(--spacing-space-02);
438
+ flex-wrap: wrap;
439
+ }
440
+ .data-table__toolbar-spacer {
441
+ flex: 1 1 auto;
442
+ min-width: var(--spacing-space-04);
443
+ }
444
+ .data-table__toolbar-actions {
445
+ display: flex;
446
+ align-items: center;
447
+ gap: var(--spacing-space-02);
448
+ flex-wrap: wrap;
449
+ }
450
+ .data-table__toolbar-divider {
451
+ height: var(--control-height-md);
452
+ margin-inline: var(--spacing-space-01);
453
+ }
454
+ .data-table__search {
455
+ flex: 0 1 var(--dimension-07);
456
+ min-width: var(--dimension-05);
457
+ }
458
+ .data-table:has(.data-table__cards) .data-table__search {
459
+ flex: 1 0 100%;
460
+ }
461
+ .data-table:has(.data-table__cards) .data-table__toolbar-spacer {
462
+ display: none;
463
+ }
464
+ .data-table__scroll-buttons {
465
+ display: flex;
466
+ align-items: center;
467
+ gap: var(--spacing-space-01);
468
+ }
469
+ .data-table__pagination {
470
+ display: grid;
471
+ grid-template-columns: 1fr auto 1fr;
472
+ align-items: center;
473
+ gap: var(--spacing-space-03);
474
+ }
475
+ .data-table__pagination-status {
476
+ justify-self: start;
477
+ color: var(--color-content-secondary);
478
+ font-size: var(--type-size-body-small);
479
+ font-variant-numeric: tabular-nums;
480
+ }
481
+ .data-table__pagination > .data-table__page-size {
482
+ justify-self: end;
483
+ }
484
+ @media (max-width: 640px) {
485
+ .data-table__pagination {
486
+ display: flex;
487
+ flex-wrap: wrap;
488
+ justify-content: space-between;
489
+ }
490
+ }
491
+ .data-table__page-size {
492
+ display: flex;
493
+ align-items: center;
494
+ gap: var(--spacing-space-02);
495
+ color: var(--color-content-secondary);
496
+ font-size: var(--type-size-body-small);
497
+ }
498
+ .data-table__subbar {
499
+ display: flex;
500
+ align-items: center;
501
+ gap: var(--spacing-space-03);
502
+ flex-wrap: wrap;
503
+ animation: data-table-row-in 200ms cubic-bezier(0.16, 1, 0.3, 1);
504
+ }
505
+ @keyframes data-table-row-in {
506
+ from {
507
+ max-height: 0;
508
+ margin-block-start: calc(-1 * var(--spacing-space-03));
509
+ opacity: 0;
510
+ clip-path: inset(0);
511
+ }
512
+ to {
513
+ max-height: var(--control-height-md);
514
+ margin-block-start: 0;
515
+ opacity: 1;
516
+ clip-path: inset(0);
517
+ }
518
+ }
519
+ .data-table__subbar .data-table__filters {
520
+ flex: 1 1 auto;
521
+ }
522
+ .data-table__selection-bar {
523
+ display: flex;
524
+ align-items: center;
525
+ gap: var(--spacing-space-02);
526
+ flex-wrap: wrap;
527
+ min-width: 0;
528
+ animation: data-table-actions-in 180ms cubic-bezier(0.16, 1, 0.3, 1);
529
+ }
530
+ @keyframes data-table-actions-in {
531
+ from {
532
+ opacity: 0;
533
+ transform: translateX(var(--spacing-space-03));
534
+ }
535
+ }
536
+ @keyframes data-table-fade-in {
537
+ from {
538
+ opacity: 0;
539
+ }
540
+ }
541
+ @media (prefers-reduced-motion: reduce) {
542
+ .data-table__subbar,
543
+ .data-table__selection-bar,
544
+ .data-table__selection-footer {
545
+ animation: data-table-fade-in 120ms ease-out;
546
+ }
547
+ }
548
+ .data-table__selection-count {
549
+ color: var(--color-content-primary);
550
+ font-size: var(--type-size-body-small);
551
+ font-weight: var(--type-weight-body-strong);
552
+ white-space: nowrap;
553
+ }
554
+ .data-table__selection-footer {
555
+ position: sticky;
556
+ bottom: 0;
557
+ left: 0;
558
+ z-index: 4;
559
+ display: flex;
560
+ align-items: center;
561
+ gap: var(--spacing-space-03);
562
+ flex-wrap: wrap;
563
+ --data-table-footer-height: calc( var(--data-table-control-height, var(--control-height-md)) + 2 * var(--spacing-space-03) + 1px );
564
+ box-sizing: border-box;
565
+ min-height: var(--data-table-footer-height);
566
+ padding: var(--spacing-space-03);
567
+ background-color: var(--color-surface-primary);
568
+ border-top: 1px solid var(--color-border-secondary);
569
+ animation: data-table-footer-in 200ms cubic-bezier(0.16, 1, 0.3, 1);
570
+ }
571
+ .data-table > .data-table__selection-footer {
572
+ --data-table-footer-height: var(--data-table-control-height, var(--control-height-md));
573
+ position: static;
574
+ padding: 0;
575
+ background: none;
576
+ border-top: 0;
577
+ }
578
+ @keyframes data-table-footer-in {
579
+ from {
580
+ min-height: 0;
581
+ max-height: 0;
582
+ opacity: 0;
583
+ clip-path: inset(0);
584
+ }
585
+ to {
586
+ min-height: var(--data-table-footer-height);
587
+ max-height: var(--data-table-footer-height);
588
+ opacity: 1;
589
+ clip-path: inset(0);
590
+ }
591
+ }
592
+ .data-table__select-cell,
593
+ .data-table__actions-cell {
594
+ overflow: visible;
595
+ text-overflow: clip;
596
+ }
597
+ .data-table__select-hit {
598
+ display: flex;
599
+ align-items: center;
600
+ }
601
+ .data-table__cell--center .data-table__select-hit {
602
+ justify-content: center;
603
+ }
604
+
605
+ /* src/styles/filters.css */
606
+ .data-table__filters {
607
+ display: flex;
608
+ align-items: center;
609
+ gap: var(--spacing-space-02);
610
+ flex-wrap: wrap;
611
+ min-width: 0;
612
+ }
613
+ .data-table__filters-label {
614
+ color: var(--color-content-primary);
615
+ font-size: var(--type-size-caption);
616
+ line-height: var(--type-leading-caption);
617
+ font-weight: var(--type-weight-body-emphasis);
618
+ white-space: nowrap;
619
+ }
620
+ .data-table__filter-chip .chip__segment--value {
621
+ max-width: var(--dimension-05);
622
+ }
623
+ .data-table__filter-editor-popup.popover__popup {
624
+ padding: var(--spacing-space-01);
625
+ }
626
+ .data-table__filter-editor .data-table__filter-editor-title {
627
+ margin: 0;
628
+ padding: var(--spacing-space-02) var(--spacing-space-03);
629
+ color: var(--color-content-primary);
630
+ font-size: var(--type-size-body-small);
631
+ line-height: var(--type-leading-body-small);
632
+ font-weight: var(--type-weight-body-strong);
633
+ }
634
+ .data-table__filter-editor-rule {
635
+ margin: var(--spacing-space-01) 0;
636
+ }
637
+ .data-table__filter-editor-remove.btn {
638
+ width: 100%;
639
+ justify-content: flex-start;
640
+ gap: var(--spacing-space-02);
641
+ font-size: var(--type-size-body-medium);
642
+ line-height: var(--type-leading-body-medium);
643
+ }
644
+ .data-table__filter-field {
645
+ width: 100%;
646
+ }
647
+ .data-table__filter-field--unlabelled .field__label,
648
+ .data-table__filter-field--unlabelled.listbox .listbox__label {
649
+ position: absolute;
650
+ width: 1px;
651
+ height: 1px;
652
+ margin: -1px;
653
+ padding: 0;
654
+ overflow: hidden;
655
+ clip-path: inset(50%);
656
+ white-space: nowrap;
657
+ border: 0;
658
+ }
659
+ .data-table__filter-editor {
660
+ display: flex;
661
+ flex-direction: column;
662
+ gap: var(--spacing-space-01);
663
+ min-width: var(--dimension-06);
664
+ max-width: var(--dimension-08);
665
+ }
666
+ .data-table__filter-editor-value {
667
+ display: flex;
668
+ align-items: center;
669
+ gap: var(--spacing-space-02);
670
+ }
671
+ .data-table__filter-editor-value > * {
672
+ min-width: 0;
673
+ flex: 1 1 0;
674
+ }
675
+ .data-table__filter-editor-footer {
676
+ display: flex;
677
+ justify-content: flex-end;
678
+ padding-top: var(--spacing-space-01);
679
+ border-top: 1px solid var(--color-border-secondary);
680
+ }
681
+ .data-table__filter-picker {
682
+ min-width: var(--dimension-05);
683
+ max-height: var(--dimension-09);
684
+ overflow-y: auto;
685
+ }
686
+ .data-table__filter-option-count {
687
+ margin-left: var(--spacing-space-01);
688
+ color: var(--color-content-tertiary);
689
+ font-variant-numeric: tabular-nums;
690
+ }
691
+
692
+ /* src/styles/cards.css */
693
+ .data-table__cards {
694
+ display: flex;
695
+ flex-direction: column;
696
+ margin: 0;
697
+ padding: 0;
698
+ list-style: none;
699
+ gap: var(--spacing-space-02);
700
+ position: relative;
701
+ overflow: auto;
702
+ max-height: var(--data-table-max-height, none);
703
+ overscroll-behavior: contain;
704
+ }
705
+ .data-table__card {
706
+ display: flex;
707
+ flex-direction: column;
708
+ gap: var(--spacing-space-02);
709
+ padding: var(--spacing-space-03);
710
+ background-color: var(--color-surface-primary);
711
+ border: 1px solid var(--color-border-primary);
712
+ border-radius: var(--border-radius-05);
713
+ }
714
+ .data-table__card--selected {
715
+ border-color: var(--color-interactive-primary-default);
716
+ background-color: var(--color-interactive-ui-selected);
717
+ }
718
+ .data-table__card:focus-visible {
719
+ outline: 2px solid var(--color-interactive-focus);
720
+ outline-offset: 2px;
721
+ }
722
+ .data-table__card-header {
723
+ display: flex;
724
+ align-items: flex-start;
725
+ gap: var(--spacing-space-02);
726
+ }
727
+ .data-table__card-controls {
728
+ display: flex;
729
+ flex: none;
730
+ align-items: center;
731
+ gap: var(--spacing-space-02);
732
+ margin-inline-start: auto;
733
+ }
734
+ .data-table__card-title {
735
+ flex: 1 1 auto;
736
+ min-width: 0;
737
+ font-size: var(--type-size-heading-small);
738
+ font-weight: var(--type-weight-body-strong);
739
+ color: var(--color-content-primary);
740
+ overflow-wrap: anywhere;
741
+ }
742
+ .data-table__card-fields {
743
+ display: grid;
744
+ align-items: baseline;
745
+ grid-template-columns: minmax(0, auto) minmax(0, 1fr);
746
+ gap: var(--spacing-space-01) var(--spacing-space-03);
747
+ margin: 0;
748
+ }
749
+ .data-table__card-label {
750
+ color: var(--color-content-secondary);
751
+ font-size: var(--type-size-body-medium);
752
+ }
753
+ .data-table__card-value {
754
+ margin: 0;
755
+ color: var(--color-content-primary);
756
+ font-size: var(--type-size-body-large);
757
+ overflow-wrap: anywhere;
758
+ }
759
+ .data-table__card-spacer {
760
+ flex: none;
761
+ }
762
+ .data-table__badge {
763
+ display: inline-flex;
764
+ align-items: center;
765
+ justify-content: center;
766
+ min-width: var(--spacing-space-05, 20px);
767
+ height: var(--spacing-space-05, 20px);
768
+ padding: 0 var(--spacing-space-01);
769
+ box-sizing: border-box;
770
+ border-radius: var(--border-radius-full);
771
+ background-color: var(--color-interactive-primary-default);
772
+ color: var(--color-interactive-contents);
773
+ font-size: var(--type-size-caption);
774
+ font-weight: var(--type-weight-body-strong);
775
+ line-height: 1;
776
+ font-variant-numeric: tabular-nums;
777
+ }
778
+ .data-table__sheet {
779
+ font-family: var(--type-font-body);
780
+ }
781
+ .sheet__popup--bottom.data-table__sheet {
782
+ height: auto;
783
+ max-height: 85dvh;
784
+ }
785
+ .data-table__sheet .sheet__footer > * {
786
+ flex: 1 1 0;
787
+ min-width: 0;
788
+ }
789
+ .data-table__sheet-body {
790
+ display: flex;
791
+ flex: 1 1 auto;
792
+ flex-direction: column;
793
+ gap: var(--spacing-space-05);
794
+ min-height: 0;
795
+ overflow-y: auto;
796
+ }
797
+ .data-table__sheet-section-title {
798
+ display: flex;
799
+ flex-direction: column;
800
+ gap: var(--spacing-space-005);
801
+ min-width: 0;
802
+ text-align: start;
803
+ }
804
+ .data-table__sheet-section-summary {
805
+ color: var(--color-content-secondary);
806
+ font-size: var(--type-size-body-small);
807
+ font-weight: var(--type-weight-body-default);
808
+ overflow: hidden;
809
+ text-overflow: ellipsis;
810
+ white-space: nowrap;
811
+ }
812
+ .data-table__sheet-section {
813
+ display: flex;
814
+ flex-direction: column;
815
+ gap: var(--spacing-space-04);
816
+ }
817
+ .data-table__sheet-filter {
818
+ display: flex;
819
+ flex-direction: column;
820
+ gap: var(--spacing-space-03);
821
+ }
822
+ .data-table__sheet-filter + .data-table__sheet-filter {
823
+ padding-top: var(--spacing-space-04);
824
+ border-top: 1px solid var(--color-border-secondary);
825
+ }
826
+ .data-table__sheet-filter-value {
827
+ display: flex;
828
+ flex-direction: column;
829
+ gap: var(--spacing-space-02);
830
+ }
831
+ .data-table__sheet-filter-value:empty {
832
+ display: none;
833
+ }
834
+ .data-table__sheet-remove.btn {
835
+ align-self: flex-start;
836
+ }
837
+
838
+ /* src/styles/detail.css */
839
+ .data-table__detail-header {
840
+ display: flex;
841
+ flex-direction: column;
842
+ gap: var(--spacing-space-01);
843
+ padding-right: var(--spacing-space-08);
844
+ }
845
+ .data-table__detail-nav {
846
+ display: flex;
847
+ align-items: center;
848
+ justify-content: flex-end;
849
+ gap: var(--spacing-space-01);
850
+ }
851
+ .data-table__detail-position {
852
+ color: var(--color-content-secondary);
853
+ font-size: var(--type-size-body-small);
854
+ white-space: nowrap;
855
+ font-variant-numeric: tabular-nums;
856
+ }
857
+ .data-table__detail-body {
858
+ display: flex;
859
+ flex-direction: column;
860
+ gap: var(--spacing-space-04);
861
+ }
862
+ .data-table__edit-icon {
863
+ display: inline-flex;
864
+ flex: none;
865
+ color: var(--color-content-tertiary);
866
+ }
867
+ .data-table__cell--editable {
868
+ cursor: text;
869
+ }
870
+ .data-table__cell--editable:not(.data-table__cell--editing, :focus-visible):hover {
871
+ outline: 1px solid var(--color-border-data-entry);
872
+ outline-offset: -1px;
873
+ }
874
+ .data-table__cell--editing {
875
+ padding-top: 0;
876
+ padding-bottom: 0;
877
+ overflow: visible;
878
+ }
879
+ .data-table__editor {
880
+ display: flex;
881
+ align-items: center;
882
+ width: 100%;
883
+ min-width: 0;
884
+ }
885
+ .data-table__editor-message {
886
+ position: absolute;
887
+ z-index: var(--z-index-popover);
888
+ margin-top: var(--spacing-space-01);
889
+ padding: var(--spacing-space-01) var(--spacing-space-02);
890
+ background-color: var(--color-status-error-bg);
891
+ border-radius: var(--border-radius-02);
892
+ color: var(--color-status-error-content);
893
+ font-size: var(--type-size-caption);
894
+ white-space: nowrap;
895
+ }