@lapis-notes/csv 0.0.0-stage → 0.2.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 (105) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/LICENSE.md +4 -0
  3. package/README.md +19 -2
  4. package/dist/app.css +210 -0
  5. package/dist/csv-settings.d.ts +13 -0
  6. package/dist/csv-settings.js +28 -0
  7. package/dist/index.d.ts +7 -0
  8. package/dist/index.js +7 -0
  9. package/dist/lib/CsvSheet.svelte +58 -0
  10. package/dist/lib/CsvSheet.svelte.d.ts +11 -0
  11. package/dist/lib/CsvTable.svelte +58 -0
  12. package/dist/lib/CsvTable.svelte.d.ts +11 -0
  13. package/dist/lib/codemirror/csv-language-extensions.d.ts +3 -0
  14. package/dist/lib/codemirror/csv-language-extensions.js +11 -0
  15. package/dist/lib/codemirror/csv-language.d.ts +3 -0
  16. package/dist/lib/codemirror/csv-language.js +24 -0
  17. package/dist/lib/codemirror/csv-rainbow-theme.d.ts +3 -0
  18. package/dist/lib/codemirror/csv-rainbow-theme.js +15 -0
  19. package/dist/lib/codemirror/csv-source-extensions.d.ts +7 -0
  20. package/dist/lib/codemirror/csv-source-extensions.js +9 -0
  21. package/dist/lib/codemirror/csv.parser.d.ts +2 -0
  22. package/dist/lib/codemirror/csv.parser.js +16 -0
  23. package/dist/lib/codemirror/csv.parser.terms.d.ts +1 -0
  24. package/dist/lib/codemirror/csv.parser.terms.js +2 -0
  25. package/dist/lib/codemirror/syntax.grammar +36 -0
  26. package/dist/lib/components/csv-cell.svelte +137 -0
  27. package/dist/lib/components/csv-cell.svelte.d.ts +11 -0
  28. package/dist/lib/components/csv-data-table-column-head.svelte +76 -0
  29. package/dist/lib/components/csv-data-table-column-head.svelte.d.ts +17 -0
  30. package/dist/lib/components/csv-data-table-column-header.svelte +159 -0
  31. package/dist/lib/components/csv-data-table-column-header.svelte.d.ts +23 -0
  32. package/dist/lib/components/csv-data-table-data-cell.svelte +72 -0
  33. package/dist/lib/components/csv-data-table-data-cell.svelte.d.ts +18 -0
  34. package/dist/lib/components/csv-data-table-drag-overlay.svelte +119 -0
  35. package/dist/lib/components/csv-data-table-drag-overlay.svelte.d.ts +13 -0
  36. package/dist/lib/components/csv-data-table-row-actions.svelte +47 -0
  37. package/dist/lib/components/csv-data-table-row-actions.svelte.d.ts +8 -0
  38. package/dist/lib/components/csv-data-table-row-grip-cell.svelte +102 -0
  39. package/dist/lib/components/csv-data-table-row-grip-cell.svelte.d.ts +19 -0
  40. package/dist/lib/components/csv-data-table-row.svelte +38 -0
  41. package/dist/lib/components/csv-data-table-row.svelte.d.ts +11 -0
  42. package/dist/lib/components/csv-data-table.svelte +903 -0
  43. package/dist/lib/components/csv-data-table.svelte.d.ts +21 -0
  44. package/dist/lib/components/csv-find.svelte +382 -0
  45. package/dist/lib/components/csv-find.svelte.d.ts +24 -0
  46. package/dist/lib/components/csv-row-virtualizer.svelte.d.ts +9 -0
  47. package/dist/lib/components/csv-row-virtualizer.svelte.js +59 -0
  48. package/dist/lib/components/csv-source-view.svelte +127 -0
  49. package/dist/lib/components/csv-source-view.svelte.d.ts +10 -0
  50. package/dist/lib/components/csv-status-bar.svelte +101 -0
  51. package/dist/lib/components/csv-status-bar.svelte.d.ts +14 -0
  52. package/dist/lib/components/csv-table-dnd.d.ts +9 -0
  53. package/dist/lib/components/csv-table-dnd.js +12 -0
  54. package/dist/lib/components/csv-table-drag-measure.d.ts +7 -0
  55. package/dist/lib/components/csv-table-drag-measure.js +38 -0
  56. package/dist/lib/components/csv-table-selection.d.ts +28 -0
  57. package/dist/lib/components/csv-table-selection.js +178 -0
  58. package/dist/lib/components/csv-table-view.svelte +265 -0
  59. package/dist/lib/components/csv-table-view.svelte.d.ts +16 -0
  60. package/dist/lib/csv-plugin.d.ts +9 -0
  61. package/dist/lib/csv-plugin.js +107 -0
  62. package/dist/lib/csv-view-settings.d.ts +43 -0
  63. package/dist/lib/csv-view-settings.js +86 -0
  64. package/dist/lib/ids.d.ts +8 -0
  65. package/dist/lib/ids.js +19 -0
  66. package/dist/lib/model/csv-column-sort.d.ts +16 -0
  67. package/dist/lib/model/csv-column-sort.js +81 -0
  68. package/dist/lib/model/csv-grid.d.ts +31 -0
  69. package/dist/lib/model/csv-grid.js +161 -0
  70. package/dist/lib/model/csv-search.d.ts +38 -0
  71. package/dist/lib/model/csv-search.js +101 -0
  72. package/dist/lib/model/csv-table-model.d.ts +10 -0
  73. package/dist/lib/model/csv-table-model.js +18 -0
  74. package/dist/lib/model/parse-csv.d.ts +10 -0
  75. package/dist/lib/model/parse-csv.js +13 -0
  76. package/dist/lib/model/serialize-csv.d.ts +5 -0
  77. package/dist/lib/model/serialize-csv.js +10 -0
  78. package/dist/lib/sheet/csv-sheet-toolbar.svelte +244 -0
  79. package/dist/lib/sheet/csv-sheet-toolbar.svelte.d.ts +20 -0
  80. package/dist/lib/sheet/csv-sheet-view.svelte +444 -0
  81. package/dist/lib/sheet/csv-sheet-view.svelte.d.ts +18 -0
  82. package/dist/lib/sheet/csv-sheet.svelte +1121 -0
  83. package/dist/lib/sheet/csv-sheet.svelte.d.ts +37 -0
  84. package/dist/lib/sheet/sheet-glyph.svelte +57 -0
  85. package/dist/lib/sheet/sheet-glyph.svelte.d.ts +7 -0
  86. package/dist/lib/sheet/sheet-history.d.ts +14 -0
  87. package/dist/lib/sheet/sheet-history.js +33 -0
  88. package/dist/lib/sheet/sheet-layout.d.ts +121 -0
  89. package/dist/lib/sheet/sheet-layout.js +336 -0
  90. package/dist/lib/sheet/sheet-paint.d.ts +45 -0
  91. package/dist/lib/sheet/sheet-paint.js +274 -0
  92. package/dist/lib/sheet/sheet-theme.d.ts +2 -0
  93. package/dist/lib/sheet/sheet-theme.js +26 -0
  94. package/dist/lib/views/csv-view-mode.d.ts +3 -0
  95. package/dist/lib/views/csv-view-mode.js +6 -0
  96. package/dist/lib/views/csv-view.d.ts +24 -0
  97. package/dist/lib/views/csv-view.js +125 -0
  98. package/dist/styles/csv-find.css +313 -0
  99. package/dist/styles/csv-table.css +882 -0
  100. package/dist/styles.css +37 -0
  101. package/manifest.json +45 -0
  102. package/package.json +86 -3
  103. package/registry-content/overview.md +3 -0
  104. package/registry.json +322 -0
  105. package/styles.css +1 -0
@@ -0,0 +1,882 @@
1
+ .csv-data-table__shell {
2
+ width: 100%;
3
+ min-height: 0;
4
+ font-family: var(--csv-font-mono);
5
+ padding-top: 0;
6
+ padding-bottom: 1rem;
7
+ padding-left: 0;
8
+ padding-right: 0.5rem;
9
+ }
10
+
11
+ .csv-data-table {
12
+ width: max-content;
13
+ min-width: 100%;
14
+ border-collapse: separate;
15
+ border-spacing: 0;
16
+ font-family: var(--csv-font-mono);
17
+ font-size: 0.875rem;
18
+ overflow: visible;
19
+ --table-border-width: 1px;
20
+ --table-selection-border-width: 2px;
21
+ --table-selection-border-radius: 4px;
22
+ }
23
+
24
+ .csv-data-table__shell [data-ui-component="table"][data-ui-part="table-container"] {
25
+ overflow: visible;
26
+ }
27
+
28
+ .csv-data-table__shell thead .csv-data-table__head--actions {
29
+ background-color: var(--csv-header-background);
30
+ }
31
+
32
+ .csv-data-table__header-row {
33
+ background: var(--csv-header-background);
34
+ }
35
+
36
+ .csv-data-table__head {
37
+ --csv-head-fill: var(--csv-header-background);
38
+ position: sticky;
39
+ top: 0;
40
+ z-index: 3;
41
+ border-bottom: 1px solid var(--csv-surface-border);
42
+ background: var(--csv-head-fill);
43
+ font-weight: 600;
44
+ white-space: nowrap;
45
+ vertical-align: middle;
46
+ }
47
+
48
+ .csv-data-table__head--label {
49
+ padding: 0;
50
+ border-right: 1px solid var(--csv-surface-border);
51
+ }
52
+
53
+ .csv-data-table :is(th).csv-data-table__head--gutter {
54
+ --csv-head-fill: var(--csv-index-background);
55
+ }
56
+
57
+ .csv-data-table :is(th, td).csv-data-table__head--gutter,
58
+ .csv-data-table :is(th, td).csv-data-table__cell--gutter {
59
+ border-right: 0;
60
+ min-width: 2rem;
61
+ width: 2rem;
62
+ max-width: 2rem;
63
+ padding: 0;
64
+ text-align: center;
65
+ vertical-align: middle;
66
+ background: var(--csv-index-background);
67
+ }
68
+
69
+ .csv-data-table__actions-label {
70
+ position: absolute;
71
+ width: 1px;
72
+ height: 1px;
73
+ padding: 0;
74
+ margin: -1px;
75
+ overflow: hidden;
76
+ clip: rect(0, 0, 0, 0);
77
+ white-space: nowrap;
78
+ border: 0;
79
+ }
80
+
81
+ .csv-data-table__head--actions,
82
+ .csv-data-table__cell--actions {
83
+ border-right: 0;
84
+ border-left: 0;
85
+ min-width: 2rem;
86
+ width: 2rem;
87
+ padding: 0;
88
+ vertical-align: middle;
89
+ text-align: center;
90
+ }
91
+
92
+ .csv-data-table.csv-data-table :is(th, td).csv-data-table__head--actions,
93
+ .csv-data-table.csv-data-table :is(th, td).csv-data-table__cell--actions {
94
+ position: sticky;
95
+ inset-inline-end: 0;
96
+ z-index: 2;
97
+ background: var(--csv-shell-background);
98
+ }
99
+
100
+ .csv-data-table.csv-data-table th.csv-data-table__head--actions {
101
+ z-index: 4;
102
+ background: var(--csv-header-background);
103
+ }
104
+
105
+ .csv-data-table__row:hover > .csv-data-table__cell--actions {
106
+ background: color-mix(
107
+ in oklab,
108
+ var(--csv-header-background) 70%,
109
+ var(--csv-shell-background)
110
+ );
111
+ }
112
+
113
+ .csv-data-table__row:hover .csv-data-table__row-actions,
114
+ .csv-data-table__row:focus-within .csv-data-table__row-actions,
115
+ .csv-data-table__row[data-csv-hover="true"] .csv-data-table__row-actions {
116
+ opacity: 1;
117
+ }
118
+
119
+ .csv-data-table__header {
120
+ position: relative;
121
+ display: flex;
122
+ align-items: center;
123
+ gap: 0.125rem;
124
+ min-width: 6rem;
125
+ min-height: 2.5rem;
126
+ padding-inline-end: 3.625rem;
127
+ }
128
+
129
+ .csv-data-table__header-label {
130
+ flex: 1;
131
+ min-width: 0;
132
+ }
133
+
134
+ .csv-data-table__header-actions {
135
+ position: absolute;
136
+ inset-inline-end: 0.125rem;
137
+ top: 50%;
138
+ transform: translateY(-50%);
139
+ z-index: 3;
140
+ display: flex;
141
+ align-items: center;
142
+ }
143
+
144
+ .csv-data-table__header-menu,
145
+ .csv-data-table__header-sort {
146
+ width: 1.75rem;
147
+ height: 1.75rem;
148
+ flex-shrink: 0;
149
+ }
150
+
151
+ .csv-data-table__header-cell-editor.csv-cell__display:focus,
152
+ .csv-data-table__header-cell-editor.csv-cell__display:focus-visible,
153
+ .csv-data-table__header-cell-editor.csv-cell__input:focus,
154
+ .csv-data-table__header-cell-editor.csv-cell__input:focus-visible {
155
+ outline: none;
156
+ box-shadow: none;
157
+ }
158
+
159
+ .csv-data-table__header-icon {
160
+ width: 0.875rem;
161
+ height: 0.875rem;
162
+ flex-shrink: 0;
163
+ }
164
+
165
+ .csv-data-table__menu[data-ui-part="dropdown-menu-content"],
166
+ .csv-data-table__menu[data-ui-part="context-menu-content"] {
167
+ width: max-content;
168
+ min-width: 13.5rem;
169
+ }
170
+
171
+ .csv-data-table__menu [data-slot="dropdown-menu-item"],
172
+ .csv-data-table__menu [data-ui-part="item-row"] {
173
+ white-space: nowrap;
174
+ }
175
+
176
+ [data-ui-component="menu"][data-ui-part="sub-content"][data-ui-part="sub-content"] {
177
+ width: max-content;
178
+ min-width: 13.5rem;
179
+ }
180
+
181
+ [data-ui-component="menu"][data-ui-part="sub-content"] [data-ui-part="item-row"] {
182
+ white-space: nowrap;
183
+ }
184
+
185
+ .csv-data-table__header-cell-editor.csv-cell__display,
186
+ .csv-data-table__header-cell-editor.csv-cell__input {
187
+ font-weight: 600;
188
+ padding-inline: 0.5rem;
189
+ }
190
+
191
+ .csv-data-table__col-grip,
192
+ .csv-data-table__row-grip {
193
+ opacity: 0;
194
+ cursor: grab;
195
+ color: var(--table-drag-handle-color);
196
+ background: var(--table-drag-handle-background);
197
+ padding: 0;
198
+ }
199
+
200
+ .csv-data-table__col-grip:hover,
201
+ .csv-data-table__row-grip:hover,
202
+ .csv-data-table__col-grip:focus-visible,
203
+ .csv-data-table__row-grip:focus-visible {
204
+ background: var(--table-drag-handle-background);
205
+ }
206
+
207
+ .group\/trigger:hover .csv-data-table__col-grip,
208
+ .csv-data-table__row:hover .csv-data-table__row-grip {
209
+ opacity: 1;
210
+ }
211
+
212
+ .csv-data-table__col-grip {
213
+ position: absolute;
214
+ top: -0.5rem;
215
+ left: calc(50% - 0.75rem / 2);
216
+ z-index: 4;
217
+ width: 1.25rem;
218
+ height: 1.25rem;
219
+ }
220
+
221
+ .csv-data-table__row-grip {
222
+ position: absolute;
223
+ left: -0.25rem;
224
+ top: 50%;
225
+ transform: translateY(-50%);
226
+ z-index: 4;
227
+ width: 0.375rem;
228
+ min-width: 0.375rem;
229
+ height: 1.25rem;
230
+ }
231
+
232
+ .csv-data-table__row:hover {
233
+ background: color-mix(
234
+ in oklab,
235
+ var(--csv-header-background) 70%,
236
+ transparent
237
+ );
238
+ }
239
+
240
+ .csv-data-table.csv-data-table :is(th, td).csv-data-table__cell,
241
+ .csv-data-table.csv-data-table :is(th, td).csv-data-table__head {
242
+ padding: 0;
243
+ }
244
+
245
+ .csv-data-table__cell {
246
+ position: relative;
247
+ vertical-align: middle;
248
+ border-right: 1px solid var(--csv-surface-border);
249
+ border-bottom: 1px solid var(--csv-surface-border);
250
+ padding: 0;
251
+ min-width: 6rem;
252
+ max-width: 24rem;
253
+ }
254
+
255
+ .csv-data-table__cell--gutter {
256
+ position: relative;
257
+ }
258
+
259
+ .csv-data-table__col-1 {
260
+ color: var(--csv-col-1);
261
+ }
262
+
263
+ .csv-data-table__col-2 {
264
+ color: var(--csv-col-2);
265
+ }
266
+
267
+ .csv-data-table__col-3 {
268
+ color: var(--csv-col-3);
269
+ }
270
+
271
+ .csv-data-table__col-4 {
272
+ color: var(--csv-col-4);
273
+ }
274
+
275
+ .csv-data-table__col-5 {
276
+ color: var(--csv-col-5);
277
+ }
278
+
279
+ .csv-data-table__head.csv-data-table__col-1 {
280
+ --csv-head-fill: color-mix(
281
+ in oklab,
282
+ var(--csv-col-1) 8%,
283
+ var(--csv-header-background)
284
+ );
285
+ background: var(--csv-head-fill);
286
+ }
287
+
288
+ .csv-data-table__head.csv-data-table__col-2 {
289
+ --csv-head-fill: color-mix(
290
+ in oklab,
291
+ var(--csv-col-2) 8%,
292
+ var(--csv-header-background)
293
+ );
294
+ background: var(--csv-head-fill);
295
+ }
296
+
297
+ .csv-data-table__head.csv-data-table__col-3 {
298
+ --csv-head-fill: color-mix(
299
+ in oklab,
300
+ var(--csv-col-3) 8%,
301
+ var(--csv-header-background)
302
+ );
303
+ background: var(--csv-head-fill);
304
+ }
305
+
306
+ .csv-data-table__head.csv-data-table__col-4 {
307
+ --csv-head-fill: color-mix(
308
+ in oklab,
309
+ var(--csv-col-4) 8%,
310
+ var(--csv-header-background)
311
+ );
312
+ background: var(--csv-head-fill);
313
+ }
314
+
315
+ .csv-data-table__head.csv-data-table__col-5 {
316
+ --csv-head-fill: color-mix(
317
+ in oklab,
318
+ var(--csv-col-5) 8%,
319
+ var(--csv-header-background)
320
+ );
321
+ background: var(--csv-head-fill);
322
+ }
323
+
324
+ .csv-data-table__rownum {
325
+ display: block;
326
+ padding: 0;
327
+ text-align: center;
328
+ color: var(--csv-muted-color);
329
+ }
330
+
331
+ .csv-data-table tbody > tr.csv-data-table__row {
332
+ height: 2rem;
333
+ }
334
+
335
+ .csv-data-table__cell-shell {
336
+ display: flex;
337
+ min-height: 2rem;
338
+ height: 100%;
339
+ }
340
+
341
+ .csv-data-table__cell-shell[data-csv-search="active"] {
342
+ box-shadow: inset 0 0 0 2px var(--csv-col-3);
343
+ }
344
+
345
+ .csv-data-table__row-actions {
346
+ width: 2rem;
347
+ height: 2rem;
348
+ opacity: 0;
349
+ }
350
+
351
+ .csv-data-table__empty {
352
+ padding: 1rem;
353
+ text-align: center;
354
+ color: var(--csv-muted-color);
355
+ }
356
+
357
+ .csv-data-table__cell-editor,
358
+ .csv-cell__display,
359
+ .csv-cell__input {
360
+ box-sizing: border-box;
361
+ display: block;
362
+ flex: 1 1 auto;
363
+ align-self: stretch;
364
+ width: 100%;
365
+ height: 100%;
366
+ min-height: 2rem;
367
+ margin: 0;
368
+ padding: 0 0.5rem;
369
+ border: 0;
370
+ border-radius: 0;
371
+ background: transparent;
372
+ color: inherit;
373
+ text-align: left;
374
+ font: inherit;
375
+ line-height: 2rem;
376
+ }
377
+
378
+ .csv-cell__display {
379
+ cursor: text;
380
+ overflow: hidden;
381
+ text-overflow: ellipsis;
382
+ white-space: nowrap;
383
+ }
384
+
385
+ .csv-cell__display--multiline {
386
+ overflow: visible;
387
+ text-overflow: unset;
388
+ white-space: pre-wrap;
389
+ word-break: break-word;
390
+ min-height: 4rem;
391
+ height: auto;
392
+ padding: 0.375rem 0.5rem;
393
+ line-height: 1.25rem;
394
+ }
395
+
396
+ .csv-cell__input--multiline {
397
+ min-height: 4rem;
398
+ height: auto;
399
+ padding: 0.375rem 0.5rem;
400
+ line-height: 1.25rem;
401
+ resize: vertical;
402
+ white-space: pre-wrap;
403
+ word-break: break-word;
404
+ }
405
+
406
+ .csv-cell__display:focus-visible,
407
+ .csv-cell__input:focus,
408
+ .csv-cell__input:focus-visible {
409
+ position: relative;
410
+ z-index: 1;
411
+ outline: 2px solid color-mix(in oklab, var(--csv-col-3) 45%, transparent);
412
+ outline-offset: -1px;
413
+ }
414
+
415
+ .csv-data-table th.is-selected,
416
+ .csv-data-table td.is-selected {
417
+ position: relative;
418
+ }
419
+
420
+ .csv-data-table th.is-selected.end,
421
+ .csv-data-table td.is-selected.end {
422
+ border-inline-end-color: transparent;
423
+ }
424
+
425
+ .csv-data-table th.is-selected.start,
426
+ .csv-data-table td.is-selected.start {
427
+ border-inline-start-color: transparent;
428
+ }
429
+
430
+ .csv-data-table th.is-selected.top,
431
+ .csv-data-table td.is-selected.top {
432
+ border-top-color: transparent;
433
+ }
434
+
435
+ .csv-data-table th.is-selected.bottom,
436
+ .csv-data-table td.is-selected.bottom {
437
+ border-bottom-color: transparent;
438
+ }
439
+
440
+ .csv-data-table th.is-selected::after,
441
+ .csv-data-table td.is-selected::after {
442
+ pointer-events: none;
443
+ content: "";
444
+ display: block;
445
+ position: absolute;
446
+ top: calc(-1 * var(--table-border-width, 1px));
447
+ inset-inline-end: calc(-1 * var(--table-border-width, 1px));
448
+ bottom: calc(-1 * var(--table-border-width, 1px));
449
+ inset-inline-start: calc(-1 * var(--table-border-width, 1px));
450
+ background-color: var(--table-selection);
451
+ border: 0 solid var(--table-selection-border-color);
452
+ mix-blend-mode: normal;
453
+ z-index: 1;
454
+ }
455
+
456
+ .csv-data-table th.start::after,
457
+ .csv-data-table td.start::after,
458
+ .csv-data-table th.is-selected.start::after,
459
+ .csv-data-table td.is-selected.start::after {
460
+ border-inline-start-width: var(--table-selection-border-width);
461
+ inset-inline-start: calc(-1 * var(--table-selection-border-width));
462
+ }
463
+
464
+ .csv-data-table th.end::after,
465
+ .csv-data-table td.end::after,
466
+ .csv-data-table th.is-selected.end::after,
467
+ .csv-data-table td.is-selected.end::after {
468
+ border-inline-end-width: var(--table-selection-border-width);
469
+ inset-inline-end: calc(-1 * var(--table-selection-border-width));
470
+ }
471
+
472
+ .csv-data-table th.top::after,
473
+ .csv-data-table td.top::after,
474
+ .csv-data-table th.is-selected.top::after,
475
+ .csv-data-table td.is-selected.top::after {
476
+ border-top-width: var(--table-selection-border-width);
477
+ top: calc(-1 * var(--table-selection-border-width));
478
+ }
479
+
480
+ .csv-data-table th.bottom::after,
481
+ .csv-data-table td.bottom::after,
482
+ .csv-data-table th.is-selected.bottom::after,
483
+ .csv-data-table td.is-selected.bottom::after {
484
+ border-bottom-width: var(--table-selection-border-width);
485
+ bottom: calc(-1 * var(--table-selection-border-width));
486
+ }
487
+
488
+ .csv-data-table th.top.end::after,
489
+ .csv-data-table td.top.end::after,
490
+ .csv-data-table th.is-selected.top.end::after,
491
+ .csv-data-table td.is-selected.top.end::after {
492
+ border-start-end-radius: var(--table-selection-border-radius);
493
+ }
494
+
495
+ .csv-data-table th.bottom.end::after,
496
+ .csv-data-table td.bottom.end::after,
497
+ .csv-data-table th.is-selected.bottom.end::after,
498
+ .csv-data-table td.is-selected.bottom.end::after {
499
+ border-end-end-radius: var(--table-selection-border-radius);
500
+ }
501
+
502
+ .csv-data-table th.top.start::after,
503
+ .csv-data-table td.top.start::after,
504
+ .csv-data-table th.is-selected.top.start::after,
505
+ .csv-data-table td.is-selected.top.start::after {
506
+ border-start-start-radius: var(--table-selection-border-radius);
507
+ }
508
+
509
+ /* First body row sits under the sticky header; negative top pulls the overlay
510
+ under that header and clips the accent border. */
511
+ .csv-data-table
512
+ tbody
513
+ > .csv-data-table__row:first-child
514
+ > :is(td, th).is-selected.top::after {
515
+ top: 0;
516
+ }
517
+
518
+ .csv-data-table th.bottom.start::after,
519
+ .csv-data-table td.bottom.start::after,
520
+ .csv-data-table th.is-selected.bottom.start::after,
521
+ .csv-data-table td.is-selected.bottom.start::after {
522
+ border-end-start-radius: var(--table-selection-border-radius);
523
+ }
524
+
525
+ .csv-data-table td.is-selected .csv-data-table__cell-shell {
526
+ -webkit-user-select: none;
527
+ user-select: none;
528
+ }
529
+
530
+ .csv-data-table th.is-dragging-right,
531
+ .csv-data-table td.is-dragging-right {
532
+ border-right: 3px solid var(--table-selection-border-color);
533
+ }
534
+
535
+ .csv-data-table th.is-dragging-left,
536
+ .csv-data-table td.is-dragging-left {
537
+ border-left: 3px solid var(--table-selection-border-color);
538
+ }
539
+
540
+ .csv-data-table td.is-dragging-top {
541
+ border-top: 3px solid var(--table-selection-border-color);
542
+ }
543
+
544
+ .csv-data-table td.is-dragging-bottom {
545
+ border-bottom: 3px solid var(--table-selection-border-color);
546
+ }
547
+
548
+ .csv-data-table__row.is-row-drag-source > :is(td, th),
549
+ .csv-data-table th.is-col-drag-source,
550
+ .csv-data-table td.is-col-drag-source {
551
+ opacity: 0.4;
552
+ }
553
+
554
+ .csv-data-table__row.is-row-drag-source > :is(td, th).is-selected::after,
555
+ .csv-data-table th.is-col-drag-source.is-selected::after,
556
+ .csv-data-table td.is-col-drag-source.is-selected::after {
557
+ opacity: 1;
558
+ }
559
+
560
+ [data-dnd-overlay] {
561
+ pointer-events: none;
562
+ z-index: 20;
563
+ }
564
+
565
+ .csv-data-table__shell [data-dnd-overlay][data-dnd-dragging] {
566
+ width: auto !important;
567
+ max-width: none !important;
568
+ height: auto !important;
569
+ max-height: none !important;
570
+ overflow: visible !important;
571
+ }
572
+
573
+ .csv-data-table__drag-overlay {
574
+ box-sizing: border-box;
575
+ overflow: hidden;
576
+ border: var(--table-selection-border-width) solid
577
+ var(--table-selection-border-color);
578
+ border-radius: var(--table-selection-border-radius);
579
+ background: var(--csv-header-background);
580
+ box-shadow:
581
+ 0 12px 28px rgb(15 23 42 / 0.18),
582
+ 0 0 0 1px rgb(15 23 42 / 0.04);
583
+ font-family: var(
584
+ --csv-font-mono,
585
+ var(
586
+ --studio-font-mono,
587
+ "Source Code Pro Variable",
588
+ "Source Code Pro",
589
+ ui-monospace,
590
+ monospace
591
+ )
592
+ );
593
+ font-size: 0.875rem;
594
+ }
595
+
596
+ .csv-data-table__drag-overlay--row {
597
+ display: table;
598
+ table-layout: fixed;
599
+ }
600
+
601
+ .csv-data-table__drag-overlay--col {
602
+ display: flex;
603
+ flex-direction: column;
604
+ }
605
+
606
+ .csv-data-table__drag-overlay-cell {
607
+ box-sizing: border-box;
608
+ padding: 0.375rem 0.5rem;
609
+ border-right: 1px solid var(--csv-surface-border);
610
+ border-bottom: 1px solid var(--csv-surface-border);
611
+ background: var(--table-selection);
612
+ color: inherit;
613
+ white-space: nowrap;
614
+ overflow: hidden;
615
+ text-overflow: ellipsis;
616
+ }
617
+
618
+ .csv-data-table__drag-overlay--row .csv-data-table__drag-overlay-cell {
619
+ display: table-cell;
620
+ vertical-align: top;
621
+ }
622
+
623
+ .csv-data-table__drag-overlay--row
624
+ .csv-data-table__drag-overlay-cell:last-child {
625
+ border-right: 0;
626
+ }
627
+
628
+ .csv-data-table__drag-overlay--col
629
+ .csv-data-table__drag-overlay-cell:last-child {
630
+ border-bottom: 0;
631
+ }
632
+
633
+ .csv-data-table__drag-overlay-cell--head {
634
+ font-weight: 600;
635
+ background: var(--csv-header-background);
636
+ }
637
+
638
+ .csv-data-table__drag-overlay-cell--gutter {
639
+ min-width: 2rem;
640
+ max-width: 2rem;
641
+ padding: 0;
642
+ text-align: center;
643
+ color: var(--csv-muted-color);
644
+ background: var(--csv-index-background);
645
+ }
646
+
647
+ .csv-table-view__scroll [data-slot="scroll-area-viewport"] {
648
+ position: relative;
649
+ }
650
+
651
+ .markdown-preview-surface--reading:not(.markdown-preview-surface--embedded)
652
+ .markdown
653
+ table.csv-data-table:not(.cm-table-widget),
654
+ .markdown-rendered table.csv-data-table {
655
+ margin-block: 0;
656
+ }
657
+
658
+ .markdown-preview-surface .markdown .csv-data-table,
659
+ .markdown-rendered .csv-data-table {
660
+ border-collapse: separate;
661
+ border-spacing: 0;
662
+ width: max-content;
663
+ min-width: 100%;
664
+ font-size: 0.875rem;
665
+ line-height: normal;
666
+ }
667
+
668
+ .markdown-preview-surface .markdown .csv-data-table :is(th, td),
669
+ .markdown-rendered .csv-data-table :is(th, td) {
670
+ border-style: solid;
671
+ border-color: var(--csv-surface-border);
672
+ border-width: 0 1px 1px 0;
673
+ padding: 0;
674
+ background: transparent;
675
+ color: var(--csv-column-color, var(--csv-text-color));
676
+ text-align: left;
677
+ vertical-align: middle;
678
+ white-space: nowrap;
679
+ font: inherit;
680
+ height: auto;
681
+ min-width: 6rem;
682
+ }
683
+
684
+ .markdown-preview-surface .markdown .csv-data-table th.csv-data-table__head,
685
+ .markdown-rendered .csv-data-table th.csv-data-table__head {
686
+ position: sticky;
687
+ top: 0;
688
+ z-index: 3;
689
+ background: var(--csv-header-background);
690
+ font-weight: 600;
691
+ }
692
+
693
+ .markdown-preview-surface .markdown .csv-data-table :is(th, td).csv-data-table__col-1,
694
+ .markdown-rendered .csv-data-table :is(th, td).csv-data-table__col-1,
695
+ .markdown-preview-surface .markdown .csv-data-table tr:hover > :is(th, td).csv-data-table__col-1,
696
+ .markdown-rendered .csv-data-table tr:hover > :is(th, td).csv-data-table__col-1 {
697
+ color: var(--csv-col-1);
698
+ }
699
+
700
+ .markdown-preview-surface .markdown .csv-data-table :is(th, td).csv-data-table__col-2,
701
+ .markdown-rendered .csv-data-table :is(th, td).csv-data-table__col-2,
702
+ .markdown-preview-surface .markdown .csv-data-table tr:hover > :is(th, td).csv-data-table__col-2,
703
+ .markdown-rendered .csv-data-table tr:hover > :is(th, td).csv-data-table__col-2 {
704
+ color: var(--csv-col-2);
705
+ }
706
+
707
+ .markdown-preview-surface .markdown .csv-data-table :is(th, td).csv-data-table__col-3,
708
+ .markdown-rendered .csv-data-table :is(th, td).csv-data-table__col-3,
709
+ .markdown-preview-surface .markdown .csv-data-table tr:hover > :is(th, td).csv-data-table__col-3,
710
+ .markdown-rendered .csv-data-table tr:hover > :is(th, td).csv-data-table__col-3 {
711
+ color: var(--csv-col-3);
712
+ }
713
+
714
+ .markdown-preview-surface .markdown .csv-data-table :is(th, td).csv-data-table__col-4,
715
+ .markdown-rendered .csv-data-table :is(th, td).csv-data-table__col-4,
716
+ .markdown-preview-surface .markdown .csv-data-table tr:hover > :is(th, td).csv-data-table__col-4,
717
+ .markdown-rendered .csv-data-table tr:hover > :is(th, td).csv-data-table__col-4 {
718
+ color: var(--csv-col-4);
719
+ }
720
+
721
+ .markdown-preview-surface .markdown .csv-data-table :is(th, td).csv-data-table__col-5,
722
+ .markdown-rendered .csv-data-table :is(th, td).csv-data-table__col-5,
723
+ .markdown-preview-surface .markdown .csv-data-table tr:hover > :is(th, td).csv-data-table__col-5,
724
+ .markdown-rendered .csv-data-table tr:hover > :is(th, td).csv-data-table__col-5 {
725
+ color: var(--csv-col-5);
726
+ }
727
+
728
+ .markdown-preview-surface .markdown .csv-data-table th.csv-data-table__col-1,
729
+ .markdown-rendered .csv-data-table th.csv-data-table__col-1,
730
+ .markdown-preview-surface .markdown .csv-data-table tr:hover > th.csv-data-table__col-1,
731
+ .markdown-rendered .csv-data-table tr:hover > th.csv-data-table__col-1 {
732
+ background: color-mix(
733
+ in oklab,
734
+ var(--csv-col-1) 8%,
735
+ var(--csv-header-background)
736
+ );
737
+ }
738
+
739
+ .markdown-preview-surface .markdown .csv-data-table th.csv-data-table__col-2,
740
+ .markdown-rendered .csv-data-table th.csv-data-table__col-2,
741
+ .markdown-preview-surface .markdown .csv-data-table tr:hover > th.csv-data-table__col-2,
742
+ .markdown-rendered .csv-data-table tr:hover > th.csv-data-table__col-2 {
743
+ background: color-mix(
744
+ in oklab,
745
+ var(--csv-col-2) 8%,
746
+ var(--csv-header-background)
747
+ );
748
+ }
749
+
750
+ .markdown-preview-surface .markdown .csv-data-table th.csv-data-table__col-3,
751
+ .markdown-rendered .csv-data-table th.csv-data-table__col-3,
752
+ .markdown-preview-surface .markdown .csv-data-table tr:hover > th.csv-data-table__col-3,
753
+ .markdown-rendered .csv-data-table tr:hover > th.csv-data-table__col-3 {
754
+ background: color-mix(
755
+ in oklab,
756
+ var(--csv-col-3) 8%,
757
+ var(--csv-header-background)
758
+ );
759
+ }
760
+
761
+ .markdown-preview-surface .markdown .csv-data-table th.csv-data-table__col-4,
762
+ .markdown-rendered .csv-data-table th.csv-data-table__col-4,
763
+ .markdown-preview-surface .markdown .csv-data-table tr:hover > th.csv-data-table__col-4,
764
+ .markdown-rendered .csv-data-table tr:hover > th.csv-data-table__col-4 {
765
+ background: color-mix(
766
+ in oklab,
767
+ var(--csv-col-4) 8%,
768
+ var(--csv-header-background)
769
+ );
770
+ }
771
+
772
+ .markdown-preview-surface .markdown .csv-data-table th.csv-data-table__col-5,
773
+ .markdown-rendered .csv-data-table th.csv-data-table__col-5,
774
+ .markdown-preview-surface .markdown .csv-data-table tr:hover > th.csv-data-table__col-5,
775
+ .markdown-rendered .csv-data-table tr:hover > th.csv-data-table__col-5 {
776
+ background: color-mix(
777
+ in oklab,
778
+ var(--csv-col-5) 8%,
779
+ var(--csv-header-background)
780
+ );
781
+ }
782
+
783
+ .markdown-preview-surface .markdown .csv-data-table :is(th, td).csv-data-table__head--gutter,
784
+ .markdown-preview-surface .markdown .csv-data-table :is(th, td).csv-data-table__cell--gutter,
785
+ .markdown-rendered .csv-data-table :is(th, td).csv-data-table__head--gutter,
786
+ .markdown-rendered .csv-data-table :is(th, td).csv-data-table__cell--gutter {
787
+ border-right-width: 0;
788
+ min-width: 2rem;
789
+ width: 2rem;
790
+ max-width: 2rem;
791
+ padding: 0;
792
+ text-align: center;
793
+ color: var(--csv-muted-color);
794
+ background: var(--csv-index-background);
795
+ }
796
+
797
+ .markdown-preview-surface .markdown .csv-data-table :is(th, td),
798
+ .markdown-rendered .csv-data-table :is(th, td) {
799
+ font-family: var(--csv-font-mono);
800
+ }
801
+
802
+ .markdown-preview-surface .markdown .csv-data-table :is(th, td).csv-data-table__head--actions,
803
+ .markdown-preview-surface .markdown .csv-data-table :is(th, td).csv-data-table__cell--actions,
804
+ .markdown-rendered .csv-data-table :is(th, td).csv-data-table__head--actions,
805
+ .markdown-rendered .csv-data-table :is(th, td).csv-data-table__cell--actions {
806
+ border-width: 0 0 1px;
807
+ border-inline-start: 1px solid var(--csv-surface-border);
808
+ min-width: 2rem;
809
+ width: 2rem;
810
+ max-width: 2rem;
811
+ padding: 0;
812
+ color: inherit;
813
+ }
814
+
815
+ .markdown-preview-surface .markdown .csv-data-table th.csv-data-table__head--actions,
816
+ .markdown-rendered .csv-data-table th.csv-data-table__head--actions {
817
+ background: var(--csv-header-background);
818
+ }
819
+
820
+ .markdown-preview-surface .markdown .csv-data-table td.csv-data-table__cell--actions,
821
+ .markdown-rendered .csv-data-table td.csv-data-table__cell--actions {
822
+ background: var(--csv-shell-background);
823
+ }
824
+
825
+ .markdown-preview-surface .markdown .csv-data-table tr.csv-data-table__row:hover > td.csv-data-table__cell--actions,
826
+ .markdown-rendered .csv-data-table tr.csv-data-table__row:hover > td.csv-data-table__cell--actions {
827
+ background: color-mix(
828
+ in oklab,
829
+ var(--csv-header-background) 70%,
830
+ var(--csv-shell-background)
831
+ );
832
+ }
833
+
834
+ .markdown-preview-surface .markdown .csv-data-table :is(.csv-cell__display, .csv-cell__input),
835
+ .markdown-rendered .csv-data-table :is(.csv-cell__display, .csv-cell__input) {
836
+ box-sizing: border-box;
837
+ width: 100%;
838
+ height: 100%;
839
+ margin: 0;
840
+ padding: 0 0.5rem;
841
+ border: 0;
842
+ line-height: 2rem;
843
+ text-align: left;
844
+ color: inherit;
845
+ }
846
+
847
+ .csv-data-table.csv-data-table tr.csv-data-table__header-row:hover > th.csv-data-table__head,
848
+ .markdown-preview-surface .markdown .csv-data-table tr.csv-data-table__header-row:hover > th.csv-data-table__head,
849
+ .markdown-rendered .csv-data-table tr.csv-data-table__header-row:hover > th.csv-data-table__head {
850
+ background: var(--csv-head-fill, var(--csv-header-background));
851
+ }
852
+
853
+ .csv-data-table.csv-data-table tr.csv-data-table__header-row > th.csv-data-table__head:hover,
854
+ .markdown-preview-surface .markdown .csv-data-table tr.csv-data-table__header-row > th.csv-data-table__head:hover,
855
+ .markdown-rendered .csv-data-table tr.csv-data-table__header-row > th.csv-data-table__head:hover {
856
+ background: color-mix(in oklab, var(--csv-head-fill, var(--csv-header-background)) 86%, black);
857
+ }
858
+
859
+ .csv-data-table.csv-data-table tr.csv-data-table__header-row > th.csv-data-table__head--label:is(:hover, :focus-within),
860
+ .markdown-preview-surface .markdown .csv-data-table tr.csv-data-table__header-row > th.csv-data-table__head--label:is(:hover, :focus-within),
861
+ .markdown-rendered .csv-data-table tr.csv-data-table__header-row > th.csv-data-table__head--label:is(:hover, :focus-within) {
862
+ z-index: 4;
863
+ outline: 2px solid color-mix(in oklab, var(--csv-col-3) 45%, transparent);
864
+ outline-offset: -1px;
865
+ }
866
+
867
+ .csv-data-table th.csv-data-table__head.csv-data-table__head--actions {
868
+ padding: 0;
869
+ text-align: center;
870
+ }
871
+
872
+ .csv-data-table th.csv-data-table__head--actions .csv-data-table__source-toggle {
873
+ width: 1.5rem;
874
+ height: 1.5rem;
875
+ vertical-align: middle;
876
+ color: var(--csv-muted-color);
877
+ }
878
+
879
+ .csv-data-table__source-toggle svg {
880
+ width: 0.875rem;
881
+ height: 0.875rem;
882
+ }