@neo-ui-kit/react 1.0.0 → 1.0.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.
Files changed (55) hide show
  1. package/README.md +12 -2
  2. package/dist/components/artwork/DatabaseArt/styles.css +58 -58
  3. package/dist/components/artwork/Landscape/styles.css +79 -79
  4. package/dist/components/artwork/Planet/styles.css +52 -52
  5. package/dist/components/artwork/QuantumField/UPSTREAM-LICENSE.txt +21 -21
  6. package/dist/components/artwork/ServerArt/styles.css +43 -43
  7. package/dist/components/artwork/Spectrum/styles.css +35 -35
  8. package/dist/components/controls/Autocomplete/styles.css +1 -1
  9. package/dist/components/controls/Checkbox/styles.css +58 -58
  10. package/dist/components/controls/InputBase/styles.css +374 -374
  11. package/dist/components/controls/Link/styles.css +50 -50
  12. package/dist/components/controls/SegmentedControl/styles.css +9 -9
  13. package/dist/components/controls/Switch/styles.css +54 -54
  14. package/dist/components/controls/Tabs/styles.css +239 -239
  15. package/dist/components/controls/ToggleButton/styles.css +49 -49
  16. package/dist/components/controls/shared.css +694 -694
  17. package/dist/components/editor/shared.css +1 -1
  18. package/dist/components/effects/Beacon/styles.css +38 -38
  19. package/dist/components/effects/Equalizer/styles.css +34 -34
  20. package/dist/components/effects/GlowText/styles.css +56 -56
  21. package/dist/components/effects/Marquee/styles.css +46 -46
  22. package/dist/components/effects/Reveal/styles.css +25 -25
  23. package/dist/components/effects/Shimmer/styles.css +48 -48
  24. package/dist/components/effects/Sparkles/styles.css +28 -28
  25. package/dist/components/effects/Spotlight/styles.css +45 -45
  26. package/dist/components/effects/Tilt/styles.css +67 -67
  27. package/dist/components/feedback/CollapsibleSection/styles.css +76 -76
  28. package/dist/components/feedback/DataTable/styles.css +522 -522
  29. package/dist/components/feedback/EmptyState/styles.css +80 -80
  30. package/dist/components/feedback/KeyValueList/styles.css +51 -51
  31. package/dist/components/feedback/MenuItem/styles.css +71 -71
  32. package/dist/components/feedback/Popover/styles.css +44 -44
  33. package/dist/components/feedback/Steps/styles.css +152 -152
  34. package/dist/components/feedback/Toast/styles.css +89 -89
  35. package/dist/components/forms/FormFields/styles.css +21 -21
  36. package/dist/components/foundation/ThemeProvider/styles.css +31 -31
  37. package/dist/components/layout/Avatar/styles.css +151 -151
  38. package/dist/components/layout/Card/styles.css +37 -37
  39. package/dist/components/layout/DialogActions/styles.css +31 -31
  40. package/dist/components/layout/DialogBody/styles.css +17 -17
  41. package/dist/components/layout/Illustration/styles.css +104 -104
  42. package/dist/components/layout/ScrollArea/styles.css +61 -61
  43. package/dist/components/layout/TabPanel/styles.css +16 -16
  44. package/dist/components/layout/shared.css +65 -65
  45. package/dist/components/media/AudioPlayer/styles.css +86 -86
  46. package/dist/components/media/LevelMeter/styles.css +30 -30
  47. package/dist/components/media/MelodyRoll/styles.css +196 -196
  48. package/dist/components/media/RotaryKnob/styles.css +319 -319
  49. package/dist/components/media/Sparkline/styles.css +69 -69
  50. package/dist/components/media/WaveDecoration/styles.css +1 -1
  51. package/dist/components/media/shared.css +7 -7
  52. package/dist/fonts/melodix.css +123 -123
  53. package/dist/index.js +2101 -2101
  54. package/dist/theme/base.css +210 -210
  55. package/package.json +1 -1
@@ -1,522 +1,522 @@
1
- /* A quiet framed data surface; light accents stay on controls rather than filling cells. */
2
- .ad-data-table {
3
- display: grid;
4
- gap: var(--ad-space-3);
5
- min-width: 0;
6
- container: ad-data-table / inline-size;
7
- font-size: 0.8125rem;
8
- font-variant-numeric: tabular-nums;
9
- }
10
- .ad-data-table-bar {
11
- display: flex;
12
- flex-wrap: wrap;
13
- align-items: center;
14
- justify-content: space-between;
15
- gap: var(--ad-space-3);
16
- color: var(--ad-text);
17
- }
18
- .ad-data-table-bar > .ad-field {
19
- flex: 0 1 16rem;
20
- }
21
- .ad-data-table-bar > strong {
22
- margin-inline-end: auto;
23
- font-size: 0.875rem;
24
- letter-spacing: 0.01em;
25
- }
26
- .ad-data-table-tools {
27
- display: inline-flex;
28
- align-items: center;
29
- gap: 0.25rem;
30
- padding: 0.15rem;
31
- border: 0.0625rem solid rgb(from var(--ad-primary) r g b / 0.22);
32
- border-radius: var(--ad-radius-pill);
33
- background: rgb(from var(--ad-neutral-850) r g b / 0.7);
34
- }
35
- .ad-data-table-columns {
36
- display: grid;
37
- gap: 0.5rem;
38
- min-width: 12rem;
39
- }
40
- .ad-data-table-scroll {
41
- overflow: auto;
42
- border: 0.0625rem solid rgb(from var(--ad-primary) r g b / 0.35);
43
- border-radius: var(--ad-radius);
44
- background: linear-gradient(155deg, rgb(from var(--ad-primary) r g b / 0.035), transparent 45%), var(--ad-neutral-900);
45
- box-shadow: 0 0.75rem 2rem rgb(0 0 0 / 0.12), inset 0 0.0625rem 0 rgb(255 255 255 / 0.05);
46
- scrollbar-width: thin;
47
- scrollbar-color: var(--ad-primary-700) transparent;
48
- }
49
- .ad-data-table table {
50
- width: 100%;
51
- table-layout: fixed;
52
- border-collapse: separate;
53
- border-spacing: 0;
54
- text-align: left;
55
- }
56
- .ad-data-table thead { position: relative; z-index: 3; }
57
- .ad-data-table th {
58
- position: sticky;
59
- top: 0;
60
- z-index: 1;
61
- font-weight: 600;
62
- color: var(--ad-text);
63
- white-space: nowrap;
64
- background: linear-gradient(180deg, var(--ad-neutral-850), var(--ad-neutral-900));
65
- box-shadow: inset 0 -0.0625rem 0 rgb(from var(--ad-primary) r g b / 0.3);
66
- }
67
- .ad-data-table th,
68
- .ad-data-table td {
69
- padding: 0.7rem 0.85rem;
70
- border-bottom: 0.0625rem solid rgb(from var(--ad-primary) r g b / 0.13);
71
- }
72
- .ad-data-table[data-dense] :is(th, td) {
73
- padding: 0.35rem 0.6rem;
74
- }
75
- .ad-data-table :is(th, td)[data-align="center"] {
76
- text-align: center;
77
- }
78
- .ad-data-table :is(th, td)[data-align="end"] {
79
- text-align: end;
80
- }
81
- .ad-data-table td {
82
- padding-block: 0.55rem;
83
- overflow: hidden;
84
- color: var(--ad-text);
85
- text-overflow: ellipsis;
86
- white-space: nowrap;
87
- transition:
88
- background 0.25s,
89
- color 0.25s,
90
- box-shadow 0.25s;
91
- }
92
- .ad-data-table[data-striped] tbody tr:nth-child(even) td {
93
- background: rgb(from var(--ad-neutral-850) r g b / 0.24);
94
- }
95
- .ad-data-table tbody tr:hover td,
96
- .ad-data-table tbody tr[data-selected] td {
97
- background: rgb(from var(--ad-primary) r g b / 0.07);
98
- color: var(--ad-text);
99
- }
100
- .ad-data-table tbody tr td:first-child {
101
- box-shadow: inset 0 0 0 var(--ad-primary);
102
- }
103
- .ad-data-table tbody tr:hover td:first-child,
104
- .ad-data-table tbody tr[data-selected] td:first-child {
105
- box-shadow: inset 0.1875rem 0 0 var(--ad-primary);
106
- }
107
- .ad-data-table tbody tr[data-clickable] {
108
- cursor: pointer;
109
- }
110
- .ad-data-table-check {
111
- width: 40px;
112
- }
113
- .ad-data-table-select-all-label { display: none; }
114
- .ad-data-table-column-option { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
115
- .ad-data-table-column-actions { display: inline-flex; gap: 0.1rem; }
116
- .ad-data-table :is(th, td)[data-pinned] { position: sticky; z-index: 2; background: var(--ad-neutral-900); }
117
- .ad-data-table th[data-pinned] { z-index: 3; background: var(--ad-neutral-850); }
118
- .ad-data-table [data-pinned="left"] { box-shadow: inset -0.0625rem 0 rgb(from var(--ad-primary) r g b / 0.2); }
119
- .ad-data-table [data-pinned="right"] { box-shadow: inset 0.0625rem 0 rgb(from var(--ad-primary) r g b / 0.2); }
120
- .ad-data-table :is(td.ad-data-table-check, td.ad-data-table-expand, td.ad-data-table-row-number, td.ad-data-table-actions) { background: var(--ad-neutral-900); }
121
- .ad-data-table tbody tr:is(:hover, [data-selected]) td:is([data-pinned], .ad-data-table-check, .ad-data-table-expand, .ad-data-table-row-number, .ad-data-table-actions) {
122
- background: linear-gradient(rgb(from var(--ad-primary) r g b / 0.07), rgb(from var(--ad-primary) r g b / 0.07)), var(--ad-neutral-900);
123
- }
124
- .ad-data-table :is(.ad-data-table-check, .ad-data-table-expand, .ad-data-table-row-number, .ad-data-table-actions) { padding-inline: 0.3rem; text-align: center; }
125
- .ad-data-table-row-number { overflow: visible; font-size: 0.7rem; }
126
- .ad-data-table-expand [data-expanded] .ad-icon { rotate: 180deg; }
127
- .ad-data-table-sort-priority { display: grid; place-items: center; min-width: 1rem; height: 1rem; border-radius: 50%; background: rgb(from var(--ad-primary) r g b / 0.14); font-size: 0.65rem; color: var(--ad-muted); }
128
- .ad-data-table tr.ad-data-table-details td { padding: 1rem; white-space: normal; background: rgb(from var(--ad-primary) r g b / 0.035); }
129
- .ad-data-table tr.ad-data-table-spacer td { padding: 0; border: 0; pointer-events: none; background: none; box-shadow: none; }
130
- .ad-data-table[data-virtual] .ad-data-table-scroll { overflow-anchor: none; }
131
- /* Sortable headers: a soft arrow that lights and turns with the direction. */
132
- .ad-data-table-sort {
133
- display: inline-flex;
134
- align-items: center;
135
- gap: 0.35em;
136
- padding: 0;
137
- border: 0;
138
- background: none;
139
- color: inherit;
140
- font: inherit;
141
- cursor: pointer;
142
- min-width: 0;
143
- line-height: 1.35;
144
- white-space: normal;
145
- overflow-wrap: anywhere;
146
- text-align: inherit;
147
- }
148
- .ad-data-table-sort > .ad-icon {
149
- flex: none;
150
- --ad-icon-size: 0.75rem;
151
- opacity: 0;
152
- transition:
153
- opacity 0.2s,
154
- rotate 0.3s cubic-bezier(0.34, 1.56, 0.5, 1),
155
- color 0.2s;
156
- }
157
- .ad-data-table-sort:hover > .ad-icon {
158
- opacity: 0.5;
159
- }
160
- .ad-data-table-sort[data-direction] {
161
- color: var(--ad-text);
162
- }
163
- .ad-data-table-sort[data-direction] > .ad-icon {
164
- opacity: 1;
165
- color: var(--ad-secondary);
166
- }
167
- .ad-data-table-sort[data-direction="asc"] > .ad-icon {
168
- rotate: 180deg;
169
- }
170
- .ad-data-table-empty {
171
- padding: 2rem 0.8rem !important;
172
- text-align: center;
173
- color: var(--ad-muted) !important;
174
- }
175
- /* Loading: shimmering bars in place of cells. */
176
- .ad-data-table-loading td > i {
177
- position: relative;
178
- display: block;
179
- height: 0.6rem;
180
- overflow: hidden;
181
- border-radius: 999rem;
182
- background: rgb(from var(--ad-neutral-700) r g b / 0.5);
183
- }
184
- /* The sweep: two periods of the light side by side, slid one period on its own layer. */
185
- .ad-data-table-loading td > i::after {
186
- content: "";
187
- position: absolute;
188
- top: 0;
189
- bottom: 0;
190
- left: 0;
191
- width: 400%;
192
- background: linear-gradient(
193
- 90deg,
194
- transparent,
195
- rgb(from var(--ad-secondary) r g b / 0.18),
196
- transparent
197
- )
198
- 0 0 / 50% 100%;
199
- transform: translateX(-50%);
200
- animation: ad-table-shimmer 1.4s linear infinite;
201
- will-change: transform;
202
- }
203
- .ad-data-table-foot {
204
- display: flex;
205
- flex-wrap: wrap;
206
- align-items: center;
207
- justify-content: space-between;
208
- gap: var(--ad-space-3);
209
- color: var(--ad-muted);
210
- }
211
- .ad-data-table-page-controls {
212
- display: inline-flex;
213
- align-items: center;
214
- gap: var(--ad-space-3);
215
- margin-inline-start: auto;
216
- }
217
- .ad-data-table-page-controls > .ad-field {
218
- display: inline-flex;
219
- align-items: center;
220
- gap: 0.5rem;
221
- }
222
- .ad-data-table-page-controls .ad-field-label {
223
- white-space: nowrap;
224
- color: var(--ad-muted);
225
- }
226
- .ad-data-table-page-controls .ad-input-base {
227
- min-width: 4.5rem;
228
- }
229
- .ad-data-table-pages {
230
- display: inline-flex;
231
- align-items: center;
232
- gap: var(--ad-space-2);
233
- font-variant-numeric: tabular-nums;
234
- }
235
- .ad-data-table-next .ad-icon {
236
- rotate: 180deg;
237
- }
238
- @keyframes ad-table-shimmer {
239
- to {
240
- transform: translateX(0);
241
- }
242
- }
243
- /* Header cell: the sort button and the filter funnel side by side. */
244
- .ad-data-table-head {
245
- display: flex;
246
- align-items: center;
247
- justify-content: space-between;
248
- gap: 0.25rem;
249
- min-width: 0;
250
- width: 100%;
251
- }
252
- .ad-data-table-resize {
253
- position: absolute;
254
- inset-block: 0;
255
- inset-inline-end: 0;
256
- z-index: 2;
257
- width: 0.55rem;
258
- cursor: col-resize;
259
- touch-action: none;
260
- }
261
- .ad-data-table-resize::after {
262
- position: absolute;
263
- inset-block: 25%;
264
- inset-inline-end: 0.2rem;
265
- width: 0.1rem;
266
- border-radius: 99rem;
267
- background: var(--ad-secondary);
268
- opacity: 0;
269
- transition: opacity var(--ad-duration-fast);
270
- content: "";
271
- }
272
- .ad-data-table th:hover .ad-data-table-resize::after,
273
- .ad-data-table-resize:focus-visible::after {
274
- opacity: 0.9;
275
- }
276
- .ad-data-table-resize:focus-visible {
277
- outline: 0.125rem solid var(--ad-secondary);
278
- outline-offset: -0.125rem;
279
- }
280
- .ad-data-table th[data-align="end"] > .ad-data-table-head {
281
- justify-content: flex-end;
282
- }
283
- .ad-data-table th[data-align="end"] .ad-data-table-filter { order: -1; }
284
- .ad-data-table th[data-align="end"] .ad-data-table-sort { flex-direction: row-reverse; }
285
- .ad-data-table th[data-align="center"] > .ad-data-table-head { justify-content: center; }
286
- .ad-data-table-filter.ad-icon-button {
287
- opacity: 0.45;
288
- transition: opacity var(--ad-duration-fast);
289
- }
290
- .ad-data-table th:hover .ad-data-table-filter.ad-icon-button,
291
- .ad-data-table-filter.ad-icon-button[data-active],
292
- .ad-data-table-filter.ad-icon-button[aria-expanded="true"] {
293
- opacity: 1;
294
- }
295
- .ad-data-table-filter.ad-icon-button[data-active] {
296
- color: var(--ad-secondary-100);
297
- filter: drop-shadow(0 0 0.35rem var(--ad-primary));
298
- }
299
- .ad-data-table-filter-popover {
300
- min-width: 14rem;
301
- }
302
- .ad-data-table-values,
303
- .ad-data-table-values-list {
304
- display: grid;
305
- gap: 0.35rem;
306
- }
307
- .ad-data-table-values-list {
308
- display: flex;
309
- flex-wrap: wrap;
310
- gap: 0.35rem;
311
- max-width: 20rem;
312
- }
313
- .ad-data-table-range {
314
- display: grid;
315
- grid-template-columns: 1fr 1fr;
316
- gap: var(--ad-space-2);
317
- }
318
- /* Active filters as chips above the table. */
319
- .ad-data-table-chips {
320
- display: flex;
321
- flex-wrap: wrap;
322
- align-items: center;
323
- gap: var(--ad-space-2);
324
- }
325
- .ad-data-table-chip {
326
- display: inline-flex;
327
- align-items: center;
328
- gap: 0.35rem;
329
- padding: 0.2rem 0.3rem 0.2rem 0.65rem;
330
- border: 0.0625rem solid rgb(from var(--ad-primary) r g b / 0.45);
331
- border-radius: var(--ad-radius-pill);
332
- background: rgb(from var(--ad-primary) r g b / 0.12);
333
- color: var(--ad-neutral-200);
334
- }
335
- .ad-data-table-chip > strong {
336
- color: var(--ad-secondary-100);
337
- }
338
- .ad-data-table-chip > button {
339
- display: grid;
340
- place-items: center;
341
- padding: 0.15rem;
342
- border: 0;
343
- border-radius: 50%;
344
- background: none;
345
- color: inherit;
346
- cursor: pointer;
347
- --ad-icon-size: 0.7rem;
348
- }
349
- .ad-data-table-chip > button:hover {
350
- background: rgb(from var(--ad-primary) r g b / 0.3);
351
- }
352
- /* Group header rows: a lit band with the group's value, its count and summaries. */
353
- .ad-data-table-group-by {
354
- flex: 0 1 13rem;
355
- }
356
- .ad-data-table tr.ad-data-table-group td {
357
- padding-block: 0.45rem;
358
- background: linear-gradient(90deg, rgb(from var(--ad-primary) r g b / 0.12), rgb(from var(--ad-neutral-850) r g b / 0.46));
359
- color: var(--ad-text);
360
- font-weight: 600;
361
- white-space: normal;
362
- }
363
- .ad-data-table-group-content {
364
- display: flex;
365
- align-items: center;
366
- flex-wrap: wrap;
367
- gap: 0.5rem 1.25rem;
368
- }
369
- .ad-data-table-group-summaries {
370
- display: flex;
371
- align-items: center;
372
- flex-wrap: wrap;
373
- justify-content: flex-end;
374
- gap: 0.5rem 1.25rem;
375
- margin-inline-start: auto;
376
- }
377
- .ad-data-table-group-summary {
378
- display: inline-flex;
379
- align-items: center;
380
- gap: 0.45rem;
381
- color: var(--ad-muted);
382
- font-size: 0.75rem;
383
- font-weight: 400;
384
- }
385
- .ad-data-table-group-summary > strong {
386
- color: var(--ad-text);
387
- font-weight: 600;
388
- }
389
- .ad-data-table-group-toggle {
390
- display: inline-flex;
391
- align-items: center;
392
- gap: 0.5rem;
393
- padding: 0;
394
- border: 0;
395
- background: none;
396
- color: inherit;
397
- font: inherit;
398
- cursor: pointer;
399
- --ad-icon-size: 0.85rem;
400
- min-width: 0;
401
- text-align: start;
402
- overflow-wrap: anywhere;
403
- }
404
- .ad-data-table-group-toggle > :is(.ad-icon, .ad-data-table-group-count) { flex: none; }
405
- .ad-data-table-group-toggle > .ad-icon {
406
- transition: rotate var(--ad-duration-normal) var(--ad-ease-spring);
407
- }
408
- .ad-data-table-group[data-collapsed] .ad-data-table-group-toggle > .ad-icon {
409
- rotate: -90deg;
410
- }
411
- .ad-data-table-group-count {
412
- min-width: 1.4rem;
413
- padding: 0 0.4rem;
414
- border-radius: var(--ad-radius-pill);
415
- background: rgb(from var(--ad-primary) r g b / 0.35);
416
- font-size: var(--ad-font-size-caption);
417
- text-align: center;
418
- }
419
- @container ad-data-table (max-width: 48rem) {
420
- /* Keep horizontally scrolling pinned tables usable when their fixed sides would overlap. */
421
- .ad-data-table-scroll {
422
- --ad-table-pin-left: auto;
423
- --ad-table-pin-right: auto;
424
- }
425
- .ad-data-table:not([data-virtual]):not([data-pinned]) table,
426
- .ad-data-table:not([data-virtual]):not([data-pinned]) tbody {
427
- display: block;
428
- width: 100%;
429
- }
430
- .ad-data-table:not([data-virtual]):not([data-pinned]) thead {
431
- display: block;
432
- position: static;
433
- padding: 0.5rem;
434
- border-bottom: 0.0625rem solid rgb(from var(--ad-primary) r g b / 0.2);
435
- }
436
- .ad-data-table:not([data-virtual]):not([data-pinned]) thead tr {
437
- display: grid;
438
- gap: 0.25rem;
439
- }
440
- .ad-data-table:not([data-virtual]):not([data-pinned]) th {
441
- position: relative;
442
- display: block;
443
- padding: 0.35rem 0.6rem;
444
- min-width: 0;
445
- border: 0;
446
- border-radius: 0.25rem;
447
- box-shadow: none;
448
- text-align: start;
449
- background: rgb(from var(--ad-primary) r g b / 0.035);
450
- }
451
- .ad-data-table:not([data-virtual]):not([data-pinned]) th:is(.ad-data-table-expand, .ad-data-table-row-number, .ad-data-table-actions) {
452
- display: none;
453
- }
454
- .ad-data-table:not([data-virtual]):not([data-pinned]) th.ad-data-table-check {
455
- width: auto;
456
- }
457
- .ad-data-table:not([data-virtual]):not([data-pinned]) .ad-data-table-select-all-label {
458
- display: inline;
459
- }
460
- .ad-data-table:not([data-virtual]):not([data-pinned]) .ad-data-table-head {
461
- justify-content: space-between;
462
- }
463
- .ad-data-table:not([data-virtual]):not([data-pinned]) .ad-data-table-sort {
464
- flex-direction: row;
465
- }
466
- .ad-data-table:not([data-virtual]):not([data-pinned]) .ad-data-table-filter {
467
- order: 0;
468
- }
469
- .ad-data-table:not([data-virtual]):not([data-pinned]) .ad-data-table-page-controls {
470
- width: 100%;
471
- justify-content: space-between;
472
- }
473
- .ad-data-table:not([data-virtual]):not([data-pinned]) tbody tr:not(.ad-data-table-group):not(.ad-data-table-details) {
474
- display: grid;
475
- grid-template-columns: minmax(0, 1fr);
476
- margin: 0.55rem;
477
- overflow: hidden;
478
- border: 0.0625rem solid rgb(from var(--ad-primary) r g b / 0.22);
479
- border-radius: calc(var(--ad-radius) * 0.75);
480
- background: rgb(from var(--ad-neutral-850) r g b / 0.34);
481
- }
482
- .ad-data-table:not([data-virtual]):not([data-pinned])[data-selectable] tbody tr:not(.ad-data-table-group):not(.ad-data-table-details) {
483
- grid-template-columns: 2.4rem minmax(0, 1fr);
484
- }
485
- .ad-data-table:not([data-virtual]):not([data-pinned]) tbody tr:not(.ad-data-table-group):not(.ad-data-table-details) td {
486
- display: flex;
487
- grid-column: -2 / -1;
488
- align-items: center;
489
- justify-content: space-between;
490
- gap: 0.75rem;
491
- min-width: 0;
492
- padding: 0.45rem 0.75rem;
493
- border-bottom: 0.0625rem solid rgb(from var(--ad-primary) r g b / 0.1);
494
- text-align: end;
495
- white-space: normal;
496
- }
497
- .ad-data-table:not([data-virtual]):not([data-pinned]) tbody tr:not(.ad-data-table-group):not(.ad-data-table-details) td[data-primary] {
498
- grid-row: 1;
499
- justify-content: flex-start;
500
- font-weight: 700;
501
- text-align: start;
502
- }
503
- .ad-data-table:not([data-virtual]):not([data-pinned]) tbody tr:not(.ad-data-table-group):not(.ad-data-table-details) td:not([data-primary]):not(.ad-data-table-check)::before {
504
- content: attr(data-label);
505
- flex: none;
506
- color: var(--ad-muted);
507
- font-size: 0.72rem;
508
- text-align: start;
509
- }
510
- .ad-data-table:not([data-virtual]):not([data-pinned])[data-selectable] tbody tr:not(.ad-data-table-group):not(.ad-data-table-details) td.ad-data-table-check {
511
- display: grid;
512
- grid-column: 1;
513
- grid-row: 1;
514
- place-items: center;
515
- padding: 0.4rem;
516
- }
517
- .ad-data-table:not([data-virtual]):not([data-pinned]) tbody tr.ad-data-table-group,
518
- .ad-data-table:not([data-virtual]):not([data-pinned]) tbody tr.ad-data-table-group td {
519
- display: block;
520
- width: 100%;
521
- }
522
- }
1
+ /* A quiet framed data surface; light accents stay on controls rather than filling cells. */
2
+ .ad-data-table {
3
+ display: grid;
4
+ gap: var(--ad-space-3);
5
+ min-width: 0;
6
+ container: ad-data-table / inline-size;
7
+ font-size: 0.8125rem;
8
+ font-variant-numeric: tabular-nums;
9
+ }
10
+ .ad-data-table-bar {
11
+ display: flex;
12
+ flex-wrap: wrap;
13
+ align-items: center;
14
+ justify-content: space-between;
15
+ gap: var(--ad-space-3);
16
+ color: var(--ad-text);
17
+ }
18
+ .ad-data-table-bar > .ad-field {
19
+ flex: 0 1 16rem;
20
+ }
21
+ .ad-data-table-bar > strong {
22
+ margin-inline-end: auto;
23
+ font-size: 0.875rem;
24
+ letter-spacing: 0.01em;
25
+ }
26
+ .ad-data-table-tools {
27
+ display: inline-flex;
28
+ align-items: center;
29
+ gap: 0.25rem;
30
+ padding: 0.15rem;
31
+ border: 0.0625rem solid rgb(from var(--ad-primary) r g b / 0.22);
32
+ border-radius: var(--ad-radius-pill);
33
+ background: rgb(from var(--ad-neutral-850) r g b / 0.7);
34
+ }
35
+ .ad-data-table-columns {
36
+ display: grid;
37
+ gap: 0.5rem;
38
+ min-width: 12rem;
39
+ }
40
+ .ad-data-table-scroll {
41
+ overflow: auto;
42
+ border: 0.0625rem solid rgb(from var(--ad-primary) r g b / 0.35);
43
+ border-radius: var(--ad-radius);
44
+ background: linear-gradient(155deg, rgb(from var(--ad-primary) r g b / 0.035), transparent 45%), var(--ad-neutral-900);
45
+ box-shadow: 0 0.75rem 2rem rgb(0 0 0 / 0.12), inset 0 0.0625rem 0 rgb(255 255 255 / 0.05);
46
+ scrollbar-width: thin;
47
+ scrollbar-color: var(--ad-primary-700) transparent;
48
+ }
49
+ .ad-data-table table {
50
+ width: 100%;
51
+ table-layout: fixed;
52
+ border-collapse: separate;
53
+ border-spacing: 0;
54
+ text-align: left;
55
+ }
56
+ .ad-data-table thead { position: relative; z-index: 3; }
57
+ .ad-data-table th {
58
+ position: sticky;
59
+ top: 0;
60
+ z-index: 1;
61
+ font-weight: 600;
62
+ color: var(--ad-text);
63
+ white-space: nowrap;
64
+ background: linear-gradient(180deg, var(--ad-neutral-850), var(--ad-neutral-900));
65
+ box-shadow: inset 0 -0.0625rem 0 rgb(from var(--ad-primary) r g b / 0.3);
66
+ }
67
+ .ad-data-table th,
68
+ .ad-data-table td {
69
+ padding: 0.7rem 0.85rem;
70
+ border-bottom: 0.0625rem solid rgb(from var(--ad-primary) r g b / 0.13);
71
+ }
72
+ .ad-data-table[data-dense] :is(th, td) {
73
+ padding: 0.35rem 0.6rem;
74
+ }
75
+ .ad-data-table :is(th, td)[data-align="center"] {
76
+ text-align: center;
77
+ }
78
+ .ad-data-table :is(th, td)[data-align="end"] {
79
+ text-align: end;
80
+ }
81
+ .ad-data-table td {
82
+ padding-block: 0.55rem;
83
+ overflow: hidden;
84
+ color: var(--ad-text);
85
+ text-overflow: ellipsis;
86
+ white-space: nowrap;
87
+ transition:
88
+ background 0.25s,
89
+ color 0.25s,
90
+ box-shadow 0.25s;
91
+ }
92
+ .ad-data-table[data-striped] tbody tr:nth-child(even) td {
93
+ background: rgb(from var(--ad-neutral-850) r g b / 0.24);
94
+ }
95
+ .ad-data-table tbody tr:hover td,
96
+ .ad-data-table tbody tr[data-selected] td {
97
+ background: rgb(from var(--ad-primary) r g b / 0.07);
98
+ color: var(--ad-text);
99
+ }
100
+ .ad-data-table tbody tr td:first-child {
101
+ box-shadow: inset 0 0 0 var(--ad-primary);
102
+ }
103
+ .ad-data-table tbody tr:hover td:first-child,
104
+ .ad-data-table tbody tr[data-selected] td:first-child {
105
+ box-shadow: inset 0.1875rem 0 0 var(--ad-primary);
106
+ }
107
+ .ad-data-table tbody tr[data-clickable] {
108
+ cursor: pointer;
109
+ }
110
+ .ad-data-table-check {
111
+ width: 40px;
112
+ }
113
+ .ad-data-table-select-all-label { display: none; }
114
+ .ad-data-table-column-option { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
115
+ .ad-data-table-column-actions { display: inline-flex; gap: 0.1rem; }
116
+ .ad-data-table :is(th, td)[data-pinned] { position: sticky; z-index: 2; background: var(--ad-neutral-900); }
117
+ .ad-data-table th[data-pinned] { z-index: 3; background: var(--ad-neutral-850); }
118
+ .ad-data-table [data-pinned="left"] { box-shadow: inset -0.0625rem 0 rgb(from var(--ad-primary) r g b / 0.2); }
119
+ .ad-data-table [data-pinned="right"] { box-shadow: inset 0.0625rem 0 rgb(from var(--ad-primary) r g b / 0.2); }
120
+ .ad-data-table :is(td.ad-data-table-check, td.ad-data-table-expand, td.ad-data-table-row-number, td.ad-data-table-actions) { background: var(--ad-neutral-900); }
121
+ .ad-data-table tbody tr:is(:hover, [data-selected]) td:is([data-pinned], .ad-data-table-check, .ad-data-table-expand, .ad-data-table-row-number, .ad-data-table-actions) {
122
+ background: linear-gradient(rgb(from var(--ad-primary) r g b / 0.07), rgb(from var(--ad-primary) r g b / 0.07)), var(--ad-neutral-900);
123
+ }
124
+ .ad-data-table :is(.ad-data-table-check, .ad-data-table-expand, .ad-data-table-row-number, .ad-data-table-actions) { padding-inline: 0.3rem; text-align: center; }
125
+ .ad-data-table-row-number { overflow: visible; font-size: 0.7rem; }
126
+ .ad-data-table-expand [data-expanded] .ad-icon { rotate: 180deg; }
127
+ .ad-data-table-sort-priority { display: grid; place-items: center; min-width: 1rem; height: 1rem; border-radius: 50%; background: rgb(from var(--ad-primary) r g b / 0.14); font-size: 0.65rem; color: var(--ad-muted); }
128
+ .ad-data-table tr.ad-data-table-details td { padding: 1rem; white-space: normal; background: rgb(from var(--ad-primary) r g b / 0.035); }
129
+ .ad-data-table tr.ad-data-table-spacer td { padding: 0; border: 0; pointer-events: none; background: none; box-shadow: none; }
130
+ .ad-data-table[data-virtual] .ad-data-table-scroll { overflow-anchor: none; }
131
+ /* Sortable headers: a soft arrow that lights and turns with the direction. */
132
+ .ad-data-table-sort {
133
+ display: inline-flex;
134
+ align-items: center;
135
+ gap: 0.35em;
136
+ padding: 0;
137
+ border: 0;
138
+ background: none;
139
+ color: inherit;
140
+ font: inherit;
141
+ cursor: pointer;
142
+ min-width: 0;
143
+ line-height: 1.35;
144
+ white-space: normal;
145
+ overflow-wrap: anywhere;
146
+ text-align: inherit;
147
+ }
148
+ .ad-data-table-sort > .ad-icon {
149
+ flex: none;
150
+ --ad-icon-size: 0.75rem;
151
+ opacity: 0;
152
+ transition:
153
+ opacity 0.2s,
154
+ rotate 0.3s cubic-bezier(0.34, 1.56, 0.5, 1),
155
+ color 0.2s;
156
+ }
157
+ .ad-data-table-sort:hover > .ad-icon {
158
+ opacity: 0.5;
159
+ }
160
+ .ad-data-table-sort[data-direction] {
161
+ color: var(--ad-text);
162
+ }
163
+ .ad-data-table-sort[data-direction] > .ad-icon {
164
+ opacity: 1;
165
+ color: var(--ad-secondary);
166
+ }
167
+ .ad-data-table-sort[data-direction="asc"] > .ad-icon {
168
+ rotate: 180deg;
169
+ }
170
+ .ad-data-table-empty {
171
+ padding: 2rem 0.8rem !important;
172
+ text-align: center;
173
+ color: var(--ad-muted) !important;
174
+ }
175
+ /* Loading: shimmering bars in place of cells. */
176
+ .ad-data-table-loading td > i {
177
+ position: relative;
178
+ display: block;
179
+ height: 0.6rem;
180
+ overflow: hidden;
181
+ border-radius: 999rem;
182
+ background: rgb(from var(--ad-neutral-700) r g b / 0.5);
183
+ }
184
+ /* The sweep: two periods of the light side by side, slid one period on its own layer. */
185
+ .ad-data-table-loading td > i::after {
186
+ content: "";
187
+ position: absolute;
188
+ top: 0;
189
+ bottom: 0;
190
+ left: 0;
191
+ width: 400%;
192
+ background: linear-gradient(
193
+ 90deg,
194
+ transparent,
195
+ rgb(from var(--ad-secondary) r g b / 0.18),
196
+ transparent
197
+ )
198
+ 0 0 / 50% 100%;
199
+ transform: translateX(-50%);
200
+ animation: ad-table-shimmer 1.4s linear infinite;
201
+ will-change: transform;
202
+ }
203
+ .ad-data-table-foot {
204
+ display: flex;
205
+ flex-wrap: wrap;
206
+ align-items: center;
207
+ justify-content: space-between;
208
+ gap: var(--ad-space-3);
209
+ color: var(--ad-muted);
210
+ }
211
+ .ad-data-table-page-controls {
212
+ display: inline-flex;
213
+ align-items: center;
214
+ gap: var(--ad-space-3);
215
+ margin-inline-start: auto;
216
+ }
217
+ .ad-data-table-page-controls > .ad-field {
218
+ display: inline-flex;
219
+ align-items: center;
220
+ gap: 0.5rem;
221
+ }
222
+ .ad-data-table-page-controls .ad-field-label {
223
+ white-space: nowrap;
224
+ color: var(--ad-muted);
225
+ }
226
+ .ad-data-table-page-controls .ad-input-base {
227
+ min-width: 4.5rem;
228
+ }
229
+ .ad-data-table-pages {
230
+ display: inline-flex;
231
+ align-items: center;
232
+ gap: var(--ad-space-2);
233
+ font-variant-numeric: tabular-nums;
234
+ }
235
+ .ad-data-table-next .ad-icon {
236
+ rotate: 180deg;
237
+ }
238
+ @keyframes ad-table-shimmer {
239
+ to {
240
+ transform: translateX(0);
241
+ }
242
+ }
243
+ /* Header cell: the sort button and the filter funnel side by side. */
244
+ .ad-data-table-head {
245
+ display: flex;
246
+ align-items: center;
247
+ justify-content: space-between;
248
+ gap: 0.25rem;
249
+ min-width: 0;
250
+ width: 100%;
251
+ }
252
+ .ad-data-table-resize {
253
+ position: absolute;
254
+ inset-block: 0;
255
+ inset-inline-end: 0;
256
+ z-index: 2;
257
+ width: 0.55rem;
258
+ cursor: col-resize;
259
+ touch-action: none;
260
+ }
261
+ .ad-data-table-resize::after {
262
+ position: absolute;
263
+ inset-block: 25%;
264
+ inset-inline-end: 0.2rem;
265
+ width: 0.1rem;
266
+ border-radius: 99rem;
267
+ background: var(--ad-secondary);
268
+ opacity: 0;
269
+ transition: opacity var(--ad-duration-fast);
270
+ content: "";
271
+ }
272
+ .ad-data-table th:hover .ad-data-table-resize::after,
273
+ .ad-data-table-resize:focus-visible::after {
274
+ opacity: 0.9;
275
+ }
276
+ .ad-data-table-resize:focus-visible {
277
+ outline: 0.125rem solid var(--ad-secondary);
278
+ outline-offset: -0.125rem;
279
+ }
280
+ .ad-data-table th[data-align="end"] > .ad-data-table-head {
281
+ justify-content: flex-end;
282
+ }
283
+ .ad-data-table th[data-align="end"] .ad-data-table-filter { order: -1; }
284
+ .ad-data-table th[data-align="end"] .ad-data-table-sort { flex-direction: row-reverse; }
285
+ .ad-data-table th[data-align="center"] > .ad-data-table-head { justify-content: center; }
286
+ .ad-data-table-filter.ad-icon-button {
287
+ opacity: 0.45;
288
+ transition: opacity var(--ad-duration-fast);
289
+ }
290
+ .ad-data-table th:hover .ad-data-table-filter.ad-icon-button,
291
+ .ad-data-table-filter.ad-icon-button[data-active],
292
+ .ad-data-table-filter.ad-icon-button[aria-expanded="true"] {
293
+ opacity: 1;
294
+ }
295
+ .ad-data-table-filter.ad-icon-button[data-active] {
296
+ color: var(--ad-secondary-100);
297
+ filter: drop-shadow(0 0 0.35rem var(--ad-primary));
298
+ }
299
+ .ad-data-table-filter-popover {
300
+ min-width: 14rem;
301
+ }
302
+ .ad-data-table-values,
303
+ .ad-data-table-values-list {
304
+ display: grid;
305
+ gap: 0.35rem;
306
+ }
307
+ .ad-data-table-values-list {
308
+ display: flex;
309
+ flex-wrap: wrap;
310
+ gap: 0.35rem;
311
+ max-width: 20rem;
312
+ }
313
+ .ad-data-table-range {
314
+ display: grid;
315
+ grid-template-columns: 1fr 1fr;
316
+ gap: var(--ad-space-2);
317
+ }
318
+ /* Active filters as chips above the table. */
319
+ .ad-data-table-chips {
320
+ display: flex;
321
+ flex-wrap: wrap;
322
+ align-items: center;
323
+ gap: var(--ad-space-2);
324
+ }
325
+ .ad-data-table-chip {
326
+ display: inline-flex;
327
+ align-items: center;
328
+ gap: 0.35rem;
329
+ padding: 0.2rem 0.3rem 0.2rem 0.65rem;
330
+ border: 0.0625rem solid rgb(from var(--ad-primary) r g b / 0.45);
331
+ border-radius: var(--ad-radius-pill);
332
+ background: rgb(from var(--ad-primary) r g b / 0.12);
333
+ color: var(--ad-neutral-200);
334
+ }
335
+ .ad-data-table-chip > strong {
336
+ color: var(--ad-secondary-100);
337
+ }
338
+ .ad-data-table-chip > button {
339
+ display: grid;
340
+ place-items: center;
341
+ padding: 0.15rem;
342
+ border: 0;
343
+ border-radius: 50%;
344
+ background: none;
345
+ color: inherit;
346
+ cursor: pointer;
347
+ --ad-icon-size: 0.7rem;
348
+ }
349
+ .ad-data-table-chip > button:hover {
350
+ background: rgb(from var(--ad-primary) r g b / 0.3);
351
+ }
352
+ /* Group header rows: a lit band with the group's value, its count and summaries. */
353
+ .ad-data-table-group-by {
354
+ flex: 0 1 13rem;
355
+ }
356
+ .ad-data-table tr.ad-data-table-group td {
357
+ padding-block: 0.45rem;
358
+ background: linear-gradient(90deg, rgb(from var(--ad-primary) r g b / 0.12), rgb(from var(--ad-neutral-850) r g b / 0.46));
359
+ color: var(--ad-text);
360
+ font-weight: 600;
361
+ white-space: normal;
362
+ }
363
+ .ad-data-table-group-content {
364
+ display: flex;
365
+ align-items: center;
366
+ flex-wrap: wrap;
367
+ gap: 0.5rem 1.25rem;
368
+ }
369
+ .ad-data-table-group-summaries {
370
+ display: flex;
371
+ align-items: center;
372
+ flex-wrap: wrap;
373
+ justify-content: flex-end;
374
+ gap: 0.5rem 1.25rem;
375
+ margin-inline-start: auto;
376
+ }
377
+ .ad-data-table-group-summary {
378
+ display: inline-flex;
379
+ align-items: center;
380
+ gap: 0.45rem;
381
+ color: var(--ad-muted);
382
+ font-size: 0.75rem;
383
+ font-weight: 400;
384
+ }
385
+ .ad-data-table-group-summary > strong {
386
+ color: var(--ad-text);
387
+ font-weight: 600;
388
+ }
389
+ .ad-data-table-group-toggle {
390
+ display: inline-flex;
391
+ align-items: center;
392
+ gap: 0.5rem;
393
+ padding: 0;
394
+ border: 0;
395
+ background: none;
396
+ color: inherit;
397
+ font: inherit;
398
+ cursor: pointer;
399
+ --ad-icon-size: 0.85rem;
400
+ min-width: 0;
401
+ text-align: start;
402
+ overflow-wrap: anywhere;
403
+ }
404
+ .ad-data-table-group-toggle > :is(.ad-icon, .ad-data-table-group-count) { flex: none; }
405
+ .ad-data-table-group-toggle > .ad-icon {
406
+ transition: rotate var(--ad-duration-normal) var(--ad-ease-spring);
407
+ }
408
+ .ad-data-table-group[data-collapsed] .ad-data-table-group-toggle > .ad-icon {
409
+ rotate: -90deg;
410
+ }
411
+ .ad-data-table-group-count {
412
+ min-width: 1.4rem;
413
+ padding: 0 0.4rem;
414
+ border-radius: var(--ad-radius-pill);
415
+ background: rgb(from var(--ad-primary) r g b / 0.35);
416
+ font-size: var(--ad-font-size-caption);
417
+ text-align: center;
418
+ }
419
+ @container ad-data-table (max-width: 48rem) {
420
+ /* Keep horizontally scrolling pinned tables usable when their fixed sides would overlap. */
421
+ .ad-data-table-scroll {
422
+ --ad-table-pin-left: auto;
423
+ --ad-table-pin-right: auto;
424
+ }
425
+ .ad-data-table:not([data-virtual]):not([data-pinned]) table,
426
+ .ad-data-table:not([data-virtual]):not([data-pinned]) tbody {
427
+ display: block;
428
+ width: 100%;
429
+ }
430
+ .ad-data-table:not([data-virtual]):not([data-pinned]) thead {
431
+ display: block;
432
+ position: static;
433
+ padding: 0.5rem;
434
+ border-bottom: 0.0625rem solid rgb(from var(--ad-primary) r g b / 0.2);
435
+ }
436
+ .ad-data-table:not([data-virtual]):not([data-pinned]) thead tr {
437
+ display: grid;
438
+ gap: 0.25rem;
439
+ }
440
+ .ad-data-table:not([data-virtual]):not([data-pinned]) th {
441
+ position: relative;
442
+ display: block;
443
+ padding: 0.35rem 0.6rem;
444
+ min-width: 0;
445
+ border: 0;
446
+ border-radius: 0.25rem;
447
+ box-shadow: none;
448
+ text-align: start;
449
+ background: rgb(from var(--ad-primary) r g b / 0.035);
450
+ }
451
+ .ad-data-table:not([data-virtual]):not([data-pinned]) th:is(.ad-data-table-expand, .ad-data-table-row-number, .ad-data-table-actions) {
452
+ display: none;
453
+ }
454
+ .ad-data-table:not([data-virtual]):not([data-pinned]) th.ad-data-table-check {
455
+ width: auto;
456
+ }
457
+ .ad-data-table:not([data-virtual]):not([data-pinned]) .ad-data-table-select-all-label {
458
+ display: inline;
459
+ }
460
+ .ad-data-table:not([data-virtual]):not([data-pinned]) .ad-data-table-head {
461
+ justify-content: space-between;
462
+ }
463
+ .ad-data-table:not([data-virtual]):not([data-pinned]) .ad-data-table-sort {
464
+ flex-direction: row;
465
+ }
466
+ .ad-data-table:not([data-virtual]):not([data-pinned]) .ad-data-table-filter {
467
+ order: 0;
468
+ }
469
+ .ad-data-table:not([data-virtual]):not([data-pinned]) .ad-data-table-page-controls {
470
+ width: 100%;
471
+ justify-content: space-between;
472
+ }
473
+ .ad-data-table:not([data-virtual]):not([data-pinned]) tbody tr:not(.ad-data-table-group):not(.ad-data-table-details) {
474
+ display: grid;
475
+ grid-template-columns: minmax(0, 1fr);
476
+ margin: 0.55rem;
477
+ overflow: hidden;
478
+ border: 0.0625rem solid rgb(from var(--ad-primary) r g b / 0.22);
479
+ border-radius: calc(var(--ad-radius) * 0.75);
480
+ background: rgb(from var(--ad-neutral-850) r g b / 0.34);
481
+ }
482
+ .ad-data-table:not([data-virtual]):not([data-pinned])[data-selectable] tbody tr:not(.ad-data-table-group):not(.ad-data-table-details) {
483
+ grid-template-columns: 2.4rem minmax(0, 1fr);
484
+ }
485
+ .ad-data-table:not([data-virtual]):not([data-pinned]) tbody tr:not(.ad-data-table-group):not(.ad-data-table-details) td {
486
+ display: flex;
487
+ grid-column: -2 / -1;
488
+ align-items: center;
489
+ justify-content: space-between;
490
+ gap: 0.75rem;
491
+ min-width: 0;
492
+ padding: 0.45rem 0.75rem;
493
+ border-bottom: 0.0625rem solid rgb(from var(--ad-primary) r g b / 0.1);
494
+ text-align: end;
495
+ white-space: normal;
496
+ }
497
+ .ad-data-table:not([data-virtual]):not([data-pinned]) tbody tr:not(.ad-data-table-group):not(.ad-data-table-details) td[data-primary] {
498
+ grid-row: 1;
499
+ justify-content: flex-start;
500
+ font-weight: 700;
501
+ text-align: start;
502
+ }
503
+ .ad-data-table:not([data-virtual]):not([data-pinned]) tbody tr:not(.ad-data-table-group):not(.ad-data-table-details) td:not([data-primary]):not(.ad-data-table-check)::before {
504
+ content: attr(data-label);
505
+ flex: none;
506
+ color: var(--ad-muted);
507
+ font-size: 0.72rem;
508
+ text-align: start;
509
+ }
510
+ .ad-data-table:not([data-virtual]):not([data-pinned])[data-selectable] tbody tr:not(.ad-data-table-group):not(.ad-data-table-details) td.ad-data-table-check {
511
+ display: grid;
512
+ grid-column: 1;
513
+ grid-row: 1;
514
+ place-items: center;
515
+ padding: 0.4rem;
516
+ }
517
+ .ad-data-table:not([data-virtual]):not([data-pinned]) tbody tr.ad-data-table-group,
518
+ .ad-data-table:not([data-virtual]):not([data-pinned]) tbody tr.ad-data-table-group td {
519
+ display: block;
520
+ width: 100%;
521
+ }
522
+ }