@streamscloud/kit 0.17.0 → 0.19.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.
Files changed (91) hide show
  1. package/dist/ui/badge/cmp.badge.svelte +4 -0
  2. package/dist/ui/badge/cmp.badge.svelte.d.ts +1 -0
  3. package/dist/ui/page-toolbar/cmp.reorderable-checkbox-list.svelte +131 -0
  4. package/dist/ui/page-toolbar/cmp.reorderable-checkbox-list.svelte.d.ts +31 -0
  5. package/dist/ui/page-toolbar/cmp.toolbar-checkbox.svelte +14 -0
  6. package/dist/ui/page-toolbar/cmp.toolbar-checkbox.svelte.d.ts +19 -0
  7. package/dist/ui/page-toolbar/cmp.toolbar-divider.svelte +19 -0
  8. package/dist/ui/page-toolbar/cmp.toolbar-divider.svelte.d.ts +35 -0
  9. package/dist/ui/page-toolbar/cmp.toolbar-filter-select.svelte +143 -0
  10. package/dist/ui/page-toolbar/cmp.toolbar-filter-select.svelte.d.ts +68 -0
  11. package/dist/ui/page-toolbar/cmp.toolbar-icon-button.svelte +71 -0
  12. package/dist/ui/page-toolbar/cmp.toolbar-icon-button.svelte.d.ts +32 -0
  13. package/dist/ui/page-toolbar/cmp.toolbar-option.svelte +189 -0
  14. package/dist/ui/page-toolbar/cmp.toolbar-option.svelte.d.ts +47 -0
  15. package/dist/ui/page-toolbar/cmp.toolbar-popover.svelte +23 -8
  16. package/dist/ui/page-toolbar/cmp.toolbar-popover.svelte.d.ts +14 -6
  17. package/dist/ui/page-toolbar/cmp.toolbar-section-title.svelte +46 -0
  18. package/dist/ui/page-toolbar/cmp.toolbar-section-title.svelte.d.ts +24 -0
  19. package/dist/ui/page-toolbar/cmp.toolbar-sort-select.svelte +31 -0
  20. package/dist/ui/page-toolbar/cmp.toolbar-sort-select.svelte.d.ts +44 -0
  21. package/dist/ui/page-toolbar/{cmp.toolbar-switch-item.svelte → cmp.toolbar-switch.svelte} +10 -10
  22. package/dist/ui/page-toolbar/{cmp.toolbar-switch-item.svelte.d.ts → cmp.toolbar-switch.svelte.d.ts} +2 -2
  23. package/dist/ui/page-toolbar/cmp.toolbar-toggle.svelte +14 -0
  24. package/dist/ui/page-toolbar/cmp.toolbar-toggle.svelte.d.ts +19 -0
  25. package/dist/ui/page-toolbar/cmp.toolbar-view-controls.svelte +51 -0
  26. package/dist/ui/page-toolbar/cmp.toolbar-view-controls.svelte.d.ts +27 -0
  27. package/dist/ui/page-toolbar/index.d.ts +12 -7
  28. package/dist/ui/page-toolbar/index.js +11 -6
  29. package/dist/ui/page-toolbar/reorderable-checkbox-list-localization.d.ts +5 -0
  30. package/dist/ui/page-toolbar/reorderable-checkbox-list-localization.js +17 -0
  31. package/dist/ui/page-toolbar/toolbar-filter-select-localization.d.ts +5 -0
  32. package/dist/ui/page-toolbar/toolbar-filter-select-localization.js +20 -0
  33. package/dist/ui/page-toolbar/toolbar-sort-select-localization.d.ts +3 -0
  34. package/dist/ui/page-toolbar/toolbar-sort-select-localization.js +9 -0
  35. package/dist/ui/page-toolbar/toolbar-view-controls-localization.d.ts +5 -0
  36. package/dist/ui/page-toolbar/toolbar-view-controls-localization.js +17 -0
  37. package/dist/ui/page-toolbar/types.d.ts +1 -1
  38. package/dist/ui/select/index.d.ts +1 -0
  39. package/dist/ui/select/index.js +1 -0
  40. package/dist/ui/select/select-listbox.svelte +11 -5
  41. package/dist/ui/select/select-listbox.svelte.d.ts +1 -1
  42. package/dist/ui/table/_table-styles.scss +156 -0
  43. package/dist/ui/table/cmp.table-draggable.svelte +338 -0
  44. package/dist/ui/table/cmp.table-draggable.svelte.d.ts +79 -0
  45. package/dist/ui/table/cmp.table.svelte +96 -265
  46. package/dist/ui/table/cmp.table.svelte.d.ts +16 -8
  47. package/dist/ui/table/index.d.ts +1 -0
  48. package/dist/ui/table/index.js +1 -0
  49. package/dist/ui/table/table-cells/index.d.ts +1 -12
  50. package/dist/ui/table/table-cells/index.js +1 -12
  51. package/dist/ui/table/table-cells/table-cell.svelte +77 -0
  52. package/dist/ui/table/table-cells/{table-select-cell.svelte.d.ts → table-cell.svelte.d.ts} +12 -6
  53. package/dist/ui/table/table-column-models.svelte.d.ts +1 -2
  54. package/dist/ui/table/table-column-models.svelte.js +0 -1
  55. package/dist/ui/table/table-columns-manager/cmp.table-columns-manager.svelte +20 -47
  56. package/dist/ui/table/table-columns-manager/cmp.table-columns-manager.svelte.d.ts +3 -7
  57. package/dist/ui/table/table-columns-manager/table-columns-manager-localization.d.ts +1 -1
  58. package/dist/ui/table/table-columns-manager/table-columns-manager-localization.js +7 -7
  59. package/dist/ui/table/table-localization.d.ts +0 -2
  60. package/dist/ui/table/table-localization.js +0 -14
  61. package/dist/ui/table/table-model.svelte.d.ts +2 -3
  62. package/dist/ui/table/table-model.svelte.js +5 -35
  63. package/dist/ui/table/table-view.svelte.d.ts +14 -0
  64. package/dist/ui/table/table-view.svelte.js +32 -0
  65. package/dist/ui/table/types.d.ts +5 -28
  66. package/dist/ui/toggle/cmp.toggle.svelte +32 -26
  67. package/dist/ui/toggle/cmp.toggle.svelte.d.ts +2 -0
  68. package/dist/ui/tree/cmp.tree-node-view.svelte +16 -10
  69. package/dist/ui/tree/cmp.tree-node-view.svelte.d.ts +2 -2
  70. package/dist/ui/tree/cmp.tree.svelte +14 -30
  71. package/dist/ui/tree/cmp.tree.svelte.d.ts +5 -5
  72. package/dist/ui/tree/tree-keyboard.svelte.d.ts +9 -0
  73. package/dist/ui/tree/tree-keyboard.svelte.js +107 -0
  74. package/dist/ui/tree/tree-node.svelte.d.ts +7 -3
  75. package/dist/ui/tree/tree-node.svelte.js +32 -16
  76. package/package.json +1 -1
  77. package/dist/ui/page-toolbar/cmp.reorderable-toggle-list.svelte +0 -153
  78. package/dist/ui/page-toolbar/cmp.reorderable-toggle-list.svelte.d.ts +0 -20
  79. package/dist/ui/page-toolbar/cmp.toolbar-checkbox-item.svelte +0 -19
  80. package/dist/ui/page-toolbar/cmp.toolbar-checkbox-item.svelte.d.ts +0 -12
  81. package/dist/ui/page-toolbar/cmp.toolbar-panel-button.svelte +0 -42
  82. package/dist/ui/page-toolbar/cmp.toolbar-panel-button.svelte.d.ts +0 -20
  83. package/dist/ui/page-toolbar/cmp.toolbar-panel.svelte +0 -57
  84. package/dist/ui/page-toolbar/cmp.toolbar-panel.svelte.d.ts +0 -19
  85. package/dist/ui/page-toolbar/cmp.toolbar-toggle-item.svelte +0 -16
  86. package/dist/ui/page-toolbar/cmp.toolbar-toggle-item.svelte.d.ts +0 -12
  87. package/dist/ui/table/table-cells/table-select-cell.svelte +0 -28
  88. package/dist/ui/table/table-cells/table-text-input-cell.svelte +0 -69
  89. package/dist/ui/table/table-cells/table-text-input-cell.svelte.d.ts +0 -38
  90. package/dist/ui/tree/tree-navigation.svelte.d.ts +0 -14
  91. package/dist/ui/tree/tree-navigation.svelte.js +0 -99
@@ -0,0 +1,338 @@
1
+ <script lang="ts" generics="T extends {id: string}">import { DynamicComponent } from '../dynamic-component';
2
+ import { EmptyState } from '../empty-state';
3
+ import { Icon } from '../icon';
4
+ import { TableCell, TableHideableCell } from './table-cells';
5
+ import { TableLocalization } from './table-localization';
6
+ import { createTableView, cssWidth } from './table-view.svelte';
7
+ import IconReorderDotsHorizontal from '@fluentui/svg-icons/icons/re_order_dots_horizontal_20_regular.svg?raw';
8
+ import { flip } from 'svelte/animate';
9
+ import { dndzone } from 'svelte-dnd-action';
10
+ let { model, showPlaceholder = false, showAlternativeView = false, on, alternativeView, placeholderRow, customNoItemsPlaceholder } = $props();
11
+ const localization = new TableLocalization();
12
+ const view = createTableView(() => model, () => on);
13
+ const flipDurationMs = 200;
14
+ let tableRef = $state.raw(null);
15
+ let dndItems = $state.raw(null);
16
+ const rows = $derived(dndItems ?? model.items);
17
+ const visibleColspan = $derived(model.columns.filter((column) => !column.hidden).length + 1);
18
+ const handleConsider = (e) => {
19
+ dndItems = e.detail.items;
20
+ };
21
+ const handleFinalize = (e) => {
22
+ model.reorderItems(e.detail.items);
23
+ on?.itemsReordered?.(e.detail.items);
24
+ dndItems = null;
25
+ };
26
+ const startDrag = (e) => {
27
+ // preventing default to prevent lag on touch devices (because of the browser checking for screen scrolling)
28
+ e.preventDefault();
29
+ };
30
+ const transformDraggedElement = (draggedRow) => {
31
+ if (!draggedRow) {
32
+ return;
33
+ }
34
+ const referenceRow = tableRef.querySelector('tbody tr:not([data-is-dnd-shadow-item-internal])') ?? tableRef.querySelector('tbody tr');
35
+ const referenceColumns = referenceRow?.querySelectorAll('td') ?? [];
36
+ const draggedColumns = draggedRow.querySelectorAll('td');
37
+ if (!referenceRow || referenceColumns.length !== draggedColumns.length) {
38
+ console.error('DraggableTable: dragged row column count does not match the reference row');
39
+ return;
40
+ }
41
+ for (let i = 0, length = referenceColumns.length; i < length; i++) {
42
+ draggedColumns[i].style.width = `${referenceColumns[i].clientWidth}px`;
43
+ draggedColumns[i].style.height = `${referenceColumns[i].clientHeight}px`;
44
+ }
45
+ // Clone is reparented to <body>, losing the .table-container --_table--* vars; cells collapse without this.
46
+ const cellStyle = window.getComputedStyle(referenceColumns[0]);
47
+ draggedRow.style.setProperty('--_table--cell--font-size', cellStyle.fontSize);
48
+ draggedRow.style.setProperty('--_table--cell--horizontal-padding', cellStyle.paddingInlineStart);
49
+ // Without a value the var resolves to currentColor (dark) on the reparented clone — drop the row border while dragging.
50
+ draggedRow.style.setProperty('--_table--border-color', 'transparent');
51
+ };
52
+ </script>
53
+
54
+ <div
55
+ class="table-container table-container--{model.styles?.size ?? 'md'} table-container--{model.styles?.variant ?? 'plain'}"
56
+ class:table-container--zebra={model.styles?.zebra === true}>
57
+ {#if alternativeView && showAlternativeView}
58
+ {#if showPlaceholder || view.showNoItemsPlaceholder}
59
+ <div class="alternative-view__placeholder">
60
+ {#if showPlaceholder}
61
+ {@render placeholderRow?.()}
62
+ {:else if customNoItemsPlaceholder}
63
+ {@render customNoItemsPlaceholder()}
64
+ {/if}
65
+ </div>
66
+ {:else}
67
+ {@render alternativeView()}
68
+ {/if}
69
+ {:else}
70
+ <table class="table" class:table--sticky-header={model.styles?.stickyHeader === true} bind:this={tableRef}>
71
+ <thead class="table__head">
72
+ <tr>
73
+ <th class="table__th table__drag-handle">&nbsp;</th>
74
+ {#each model.columns as column (column)}
75
+ <TableHideableCell column={column}>
76
+ <th class="table__th" class:table__th--centered={column.centered} style={cssWidth(column)} title={column.title}>
77
+ <DynamicComponent model={column.headerView} />
78
+ </th>
79
+ </TableHideableCell>
80
+ {/each}
81
+ </tr>
82
+ </thead>
83
+ <tbody
84
+ use:dndzone={{
85
+ items: rows,
86
+ dropFromOthersDisabled: true,
87
+ flipDurationMs,
88
+ dropTargetStyle: {},
89
+ transformDraggedElement,
90
+ type: 'table'
91
+ }}
92
+ onconsider={handleConsider}
93
+ onfinalize={handleFinalize}>
94
+ {#if showPlaceholder || view.showNoItemsPlaceholder}
95
+ <tr class="table__tr table__tr--placeholder">
96
+ <td colspan={visibleColspan}>
97
+ <div class="table__placeholder">
98
+ {#if showPlaceholder}
99
+ {@render placeholderRow?.()}
100
+ {:else if customNoItemsPlaceholder}
101
+ {@render customNoItemsPlaceholder()}
102
+ {:else}
103
+ <EmptyState graphic="zero-content" title={localization.noItemsFoundTitle} description={localization.noItemsFoundBody} />
104
+ {/if}
105
+ </div>
106
+ </td>
107
+ </tr>
108
+ {:else}
109
+ {#each rows as item, itemIndex (item)}
110
+ {@const isSelected = model.selection.has(item.id)}
111
+ {@const isHighlighted = model.highlightedItemIds.includes(item.id)}
112
+ {@const flushBottom = model.styles?.variant === 'card' && itemIndex === rows.length - 1}
113
+ {@const zebra = model.styles?.zebra === true && itemIndex % 2 === 1 && !isSelected && !isHighlighted}
114
+ <tr
115
+ animate:flip={{ duration: flipDurationMs }}
116
+ class="table__tr"
117
+ id={item.id}
118
+ class:table__tr--selected={isSelected}
119
+ class:table__tr--highlighted={isHighlighted}
120
+ class:table__tr--zebra={zebra}>
121
+ <td
122
+ class="table__td table__drag-handle table__drag-handle--dragging"
123
+ class:table__td--flush={flushBottom}
124
+ onmousedown={startDrag}
125
+ ontouchstart={startDrag}>
126
+ <Icon src={IconReorderDotsHorizontal} />
127
+ </td>
128
+ {#each model.columns as column (column)}
129
+ <TableHideableCell column={column}>
130
+ <td
131
+ class="table__td"
132
+ class:table__td--centered={column.centered}
133
+ class:table__td--clickable={!!column.onClick}
134
+ class:table__td--flush={flushBottom}
135
+ style={cssWidth(column)}
136
+ onclick={() => column.onClick && column.onClick(item)}>
137
+ <TableCell model={model} item={item} column={column} itemIndex={itemIndex} on={{ itemsReordered: on?.itemsReordered }} />
138
+ </td>
139
+ </TableHideableCell>
140
+ {/each}
141
+ </tr>
142
+ {/each}
143
+ {/if}
144
+ </tbody>
145
+ </table>
146
+ {/if}
147
+ </div>
148
+
149
+ <!--
150
+ @component
151
+ Data table with drag-and-drop row reordering, plus everything `Table` offers (sorting, selection, column
152
+ visibility, group actions). A leading drag-handle column is rendered; reorders fire `on.itemsReordered` and
153
+ preserve the current selection. For non-reorderable tables use `Table` (it ships no dnd code).
154
+
155
+ ### TableStyles (via `model.styles`)
156
+ | Field | Type | Effect |
157
+ |---|---|---|
158
+ | `size` | `'sm' \| 'md'` | Row height + cell padding + font-size preset (default `'md'`) |
159
+ | `variant` | `'plain' \| 'card'` | `'card'` wraps the table in a bordered rounded panel (default `'plain'`) |
160
+ | `zebra` | `boolean` | Alternates row backgrounds with `--sc-kit--color--bg--field-alt` |
161
+ | `stickyHeader` | `boolean` | Sticks `thead` to the scrolling ancestor |
162
+ | `actionsPopoverTopDirection` | `boolean` | Forces the per-row actions popover above instead of below |
163
+
164
+ ### CSS Custom Properties
165
+ | Property | Description | Default |
166
+ |---|---|---|
167
+ | `--sc-kit--table--row--height` | Row height | per size (32 / 50 px) |
168
+ | `--sc-kit--table--cell--horizontal-padding` | Cell horizontal padding | per size (8 / 12 px) |
169
+ | `--sc-kit--table--cell--font-size` | Cell font size | per size (`--font-size--sm` / `--md`) |
170
+ | `--sc-kit--table--head--background-color` | Header background | `--sc-kit--color--bg--field-alt` |
171
+ | `--sc-kit--table--head--color` | Header text color | `--sc-kit--color--text--secondary` |
172
+ | `--sc-kit--table--border-color` | Border color between rows | `--sc-kit--color--border` |
173
+ | `--sc-kit--table--row--color` | Row background | `transparent` |
174
+ | `--sc-kit--table--row--alternative-color` | Hover / highlighted row background | `--sc-kit--color--bg--hover` |
175
+ | `--sc-kit--table--zebra--color` | Zebra-row background (when `zebra` on) | `light-dark(#fcfcfd, #232323)` |
176
+ | `--sc-kit--table--card--background` | Card variant background | `--sc-kit--color--bg--panel` |
177
+ | `--sc-kit--table--card--border-color` | Card variant border | `--sc-kit--color--border` |
178
+ | `--sc-kit--table--card--border-radius` | Card variant radius | `--sc-kit--radius--lg` |
179
+ -->
180
+
181
+ <style>.alternative-view__placeholder {
182
+ width: 100%;
183
+ display: flex;
184
+ align-items: center;
185
+ justify-content: center;
186
+ font-size: 80%;
187
+ user-select: none;
188
+ }
189
+
190
+ .table-container {
191
+ --_table--row--height: var(--sc-kit--table--row--height, var(--_table--size-row-height));
192
+ --_table--cell--font-size: var(--sc-kit--table--cell--font-size, var(--_table--size-cell-font-size));
193
+ --_table--cell--horizontal-padding: var(--sc-kit--table--cell--horizontal-padding, var(--_table--size-cell-padding));
194
+ --_table--head--height: var(--sc-kit--table--head--height, var(--_table--size-head-height, var(--_table--row--height)));
195
+ --_table--head--background-color: var(--sc-kit--table--head--background-color, var(--sc-kit--color--bg--field-alt));
196
+ --_table--head--color: var(--sc-kit--table--head--color, var(--sc-kit--color--text--secondary));
197
+ --_table--border-color: var(--sc-kit--table--border-color, var(--sc-kit--color--border));
198
+ --_table--row--color: var(--sc-kit--table--row--color, transparent);
199
+ --_table--row--alternative-color: var(--sc-kit--table--row--alternative-color, var(--sc-kit--color--bg--hover));
200
+ --_table--zebra--color: var(--sc-kit--table--zebra--color, light-dark(#fcfcfd, #232323));
201
+ --_table--selected--color: var(--sc-kit--table--selected--color, var(--sc-kit--color--accent--softer));
202
+ --_table--selected--color-hover: var(--sc-kit--table--selected--color--hover, var(--sc-kit--color--accent--soft));
203
+ --_table--card--background: var(--sc-kit--table--card--background, var(--sc-kit--color--bg--panel));
204
+ --_table--card--border-color: var(--sc-kit--table--card--border-color, var(--sc-kit--color--border));
205
+ --_table--card--border-radius: var(--sc-kit--table--card--border-radius, var(--sc-kit--radius--lg));
206
+ display: flex;
207
+ overflow-x: auto;
208
+ height: 100%;
209
+ --_cross-browser-scrollbar--thumb-color: var(--scrollbar--thumb-color, light-dark(#d1d5db, #4b5563));
210
+ --_cross-browser-scrollbar--track-color: var(--scrollbar--track-color, transparent);
211
+ }
212
+ .table-container::-webkit-scrollbar {
213
+ width: 6px;
214
+ height: 6px;
215
+ }
216
+ .table-container::-webkit-scrollbar-track {
217
+ background: var(--_cross-browser-scrollbar--track-color);
218
+ border-radius: 100vw;
219
+ }
220
+ .table-container::-webkit-scrollbar-thumb {
221
+ background: var(--_cross-browser-scrollbar--thumb-color);
222
+ border-radius: 100vw;
223
+ }
224
+ @supports (scrollbar-color: transparent transparent) {
225
+ .table-container {
226
+ scrollbar-color: var(--_cross-browser-scrollbar--thumb-color) var(--_cross-browser-scrollbar--track-color);
227
+ scrollbar-width: thin;
228
+ }
229
+ }
230
+ .table-container--md {
231
+ --_table--size-row-height: 2.75rem;
232
+ --_table--size-head-height: 2.5rem;
233
+ --_table--size-cell-font-size: var(--sc-kit--font-size--md);
234
+ --_table--size-cell-padding: var(--sc-kit--space--4);
235
+ }
236
+ .table-container--sm {
237
+ --_table--size-row-height: 2.25rem;
238
+ --_table--size-head-height: 2rem;
239
+ --_table--size-cell-font-size: var(--sc-kit--font-size--sm);
240
+ --_table--size-cell-padding: var(--sc-kit--space--3);
241
+ }
242
+ .table-container--card {
243
+ background: var(--_table--card--background);
244
+ border: 1px solid var(--_table--card--border-color);
245
+ border-radius: var(--_table--card--border-radius);
246
+ overflow: hidden;
247
+ }
248
+
249
+ .table {
250
+ width: 100%;
251
+ table-layout: auto;
252
+ height: fit-content;
253
+ border-collapse: separate;
254
+ border-spacing: 0;
255
+ }
256
+ .table__head {
257
+ height: var(--_table--head--height);
258
+ max-height: var(--_table--head--height);
259
+ background: var(--_table--head--background-color);
260
+ color: var(--_table--head--color);
261
+ font-size: var(--sc-kit--table--head--font-size, var(--sc-kit--font-size--sm));
262
+ font-weight: var(--sc-kit--font-weight--semibold);
263
+ }
264
+ .table__th {
265
+ padding: 0 var(--_table--cell--horizontal-padding);
266
+ text-align: left;
267
+ vertical-align: middle;
268
+ border-bottom: 1px solid var(--_table--border-color);
269
+ -webkit-user-drag: none;
270
+ user-select: none;
271
+ }
272
+ .table__th :global([contenteditable]) {
273
+ user-select: text;
274
+ }
275
+ .table__th--centered {
276
+ text-align: center;
277
+ --_table-header--justify-content: center;
278
+ }
279
+ .table__tr {
280
+ height: var(--_table--row--height);
281
+ max-height: var(--_table--row--height);
282
+ background: var(--_table--row--color);
283
+ }
284
+ .table__tr--zebra {
285
+ background: var(--_table--zebra--color);
286
+ }
287
+ .table__tr:hover, .table__tr--highlighted {
288
+ background: var(--_table--row--alternative-color);
289
+ --_table--move-row-cell-opacity: 1;
290
+ }
291
+ .table__tr--selected {
292
+ background: var(--_table--selected--color);
293
+ }
294
+ .table__tr--selected:hover {
295
+ background: var(--_table--selected--color-hover);
296
+ }
297
+ .table__tr--placeholder {
298
+ background: var(--_table--row--color) !important;
299
+ }
300
+ .table__td {
301
+ padding: 0 var(--_table--cell--horizontal-padding);
302
+ border-bottom: 1px solid var(--_table--border-color);
303
+ font-size: var(--_table--cell--font-size);
304
+ color: var(--sc-kit--color--text--primary);
305
+ vertical-align: middle;
306
+ }
307
+ .table__td--centered {
308
+ text-align: center;
309
+ }
310
+ .table__td--clickable {
311
+ cursor: pointer;
312
+ }
313
+ .table__td--flush {
314
+ border-bottom: none;
315
+ }
316
+ .table__placeholder {
317
+ display: flex;
318
+ align-items: center;
319
+ justify-content: center;
320
+ font-size: 80%;
321
+ user-select: none;
322
+ }
323
+ .table--sticky-header thead {
324
+ position: sticky;
325
+ top: 0;
326
+ z-index: 1;
327
+ }
328
+
329
+ .table__drag-handle {
330
+ width: 2.25rem;
331
+ cursor: grab;
332
+ text-align: center;
333
+ --sc-kit--icon--size: 1.25rem;
334
+ --sc-kit--icon--color: var(--sc-kit--color--text--muted);
335
+ }
336
+ .table__drag-handle--dragging {
337
+ cursor: grabbing;
338
+ }</style>
@@ -0,0 +1,79 @@
1
+ import type { TableModel } from './table-model.svelte';
2
+ import type { Snippet } from 'svelte';
3
+ declare function $$render<T extends {
4
+ id: string;
5
+ }>(): {
6
+ props: {
7
+ model: TableModel<T>;
8
+ showPlaceholder?: boolean;
9
+ showAlternativeView?: boolean;
10
+ on?: {
11
+ selectionChanged?: (e: T[]) => void;
12
+ itemsSelected?: (e: T[]) => void;
13
+ itemsDeselected?: (e: T[]) => void;
14
+ itemsReordered?: (e: T[]) => void;
15
+ };
16
+ alternativeView?: Snippet;
17
+ placeholderRow?: Snippet;
18
+ customNoItemsPlaceholder?: Snippet;
19
+ };
20
+ exports: {};
21
+ bindings: "";
22
+ slots: {};
23
+ events: {};
24
+ };
25
+ declare class __sveltets_Render<T extends {
26
+ id: string;
27
+ }> {
28
+ props(): ReturnType<typeof $$render<T>>['props'];
29
+ events(): ReturnType<typeof $$render<T>>['events'];
30
+ slots(): ReturnType<typeof $$render<T>>['slots'];
31
+ bindings(): "";
32
+ exports(): {};
33
+ }
34
+ interface $$IsomorphicComponent {
35
+ new <T extends {
36
+ id: string;
37
+ }>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
38
+ $$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
39
+ } & ReturnType<__sveltets_Render<T>['exports']>;
40
+ <T extends {
41
+ id: string;
42
+ }>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
43
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
44
+ }
45
+ /**
46
+ * Data table with drag-and-drop row reordering, plus everything `Table` offers (sorting, selection, column
47
+ * visibility, group actions). A leading drag-handle column is rendered; reorders fire `on.itemsReordered` and
48
+ * preserve the current selection. For non-reorderable tables use `Table` (it ships no dnd code).
49
+ *
50
+ * ### TableStyles (via `model.styles`)
51
+ * | Field | Type | Effect |
52
+ * |---|---|---|
53
+ * | `size` | `'sm' \| 'md'` | Row height + cell padding + font-size preset (default `'md'`) |
54
+ * | `variant` | `'plain' \| 'card'` | `'card'` wraps the table in a bordered rounded panel (default `'plain'`) |
55
+ * | `zebra` | `boolean` | Alternates row backgrounds with `--sc-kit--color--bg--field-alt` |
56
+ * | `stickyHeader` | `boolean` | Sticks `thead` to the scrolling ancestor |
57
+ * | `actionsPopoverTopDirection` | `boolean` | Forces the per-row actions popover above instead of below |
58
+ *
59
+ * ### CSS Custom Properties
60
+ * | Property | Description | Default |
61
+ * |---|---|---|
62
+ * | `--sc-kit--table--row--height` | Row height | per size (32 / 50 px) |
63
+ * | `--sc-kit--table--cell--horizontal-padding` | Cell horizontal padding | per size (8 / 12 px) |
64
+ * | `--sc-kit--table--cell--font-size` | Cell font size | per size (`--font-size--sm` / `--md`) |
65
+ * | `--sc-kit--table--head--background-color` | Header background | `--sc-kit--color--bg--field-alt` |
66
+ * | `--sc-kit--table--head--color` | Header text color | `--sc-kit--color--text--secondary` |
67
+ * | `--sc-kit--table--border-color` | Border color between rows | `--sc-kit--color--border` |
68
+ * | `--sc-kit--table--row--color` | Row background | `transparent` |
69
+ * | `--sc-kit--table--row--alternative-color` | Hover / highlighted row background | `--sc-kit--color--bg--hover` |
70
+ * | `--sc-kit--table--zebra--color` | Zebra-row background (when `zebra` on) | `light-dark(#fcfcfd, #232323)` |
71
+ * | `--sc-kit--table--card--background` | Card variant background | `--sc-kit--color--bg--panel` |
72
+ * | `--sc-kit--table--card--border-color` | Card variant border | `--sc-kit--color--border` |
73
+ * | `--sc-kit--table--card--border-radius` | Card variant radius | `--sc-kit--radius--lg` |
74
+ */
75
+ declare const Cmp: $$IsomorphicComponent;
76
+ type Cmp<T extends {
77
+ id: string;
78
+ }> = InstanceType<typeof Cmp<T>>;
79
+ export default Cmp;