@human-kit/svelte-components 1.0.0-alpha.13 → 1.0.0-alpha.15

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 (57) hide show
  1. package/dist/checkbox/root/checkbox-root.svelte +22 -2
  2. package/dist/checkbox/root/checkbox-root.svelte.d.ts +4 -1
  3. package/dist/combobox/root/combobox.svelte +1 -0
  4. package/dist/listbox/item/listbox-item.svelte +13 -0
  5. package/dist/listbox/root/listbox.svelte +7 -1
  6. package/dist/table/IMPLEMENTATION_NOTES.md +2 -1
  7. package/dist/table/PLAN.md +445 -33
  8. package/dist/table/README.md +11 -0
  9. package/dist/table/TODO.md +40 -2
  10. package/dist/table/body/README.md +2 -0
  11. package/dist/table/body/table-body.svelte +1 -7
  12. package/dist/table/body/table-body.svelte.d.ts +1 -6
  13. package/dist/table/cell/README.md +2 -0
  14. package/dist/table/cell/table-cell.svelte +87 -86
  15. package/dist/table/cell/table-cell.svelte.d.ts +1 -6
  16. package/dist/table/checkbox/README.md +2 -0
  17. package/dist/table/checkbox/table-checkbox-test.svelte +7 -0
  18. package/dist/table/checkbox/table-checkbox-test.svelte.d.ts +3 -1
  19. package/dist/table/checkbox/table-checkbox.svelte +56 -52
  20. package/dist/table/checkbox/table-checkbox.svelte.d.ts +1 -10
  21. package/dist/table/checkbox-indicator/README.md +2 -0
  22. package/dist/table/checkbox-indicator/table-checkbox-indicator.svelte +1 -8
  23. package/dist/table/checkbox-indicator/table-checkbox-indicator.svelte.d.ts +1 -7
  24. package/dist/table/column/README.md +17 -14
  25. package/dist/table/column/table-column.svelte +2 -26
  26. package/dist/table/column/table-column.svelte.d.ts +1 -15
  27. package/dist/table/column-header-cell/README.md +2 -0
  28. package/dist/table/column-header-cell/table-column-header-cell.svelte +1 -7
  29. package/dist/table/column-header-cell/table-column-header-cell.svelte.d.ts +1 -6
  30. package/dist/table/column-resizer/README.md +2 -1
  31. package/dist/table/column-resizer/table-column-resizer.svelte +1 -9
  32. package/dist/table/column-resizer/table-column-resizer.svelte.d.ts +1 -8
  33. package/dist/table/empty-state/README.md +2 -0
  34. package/dist/table/empty-state/table-empty-state.svelte +1 -6
  35. package/dist/table/empty-state/table-empty-state.svelte.d.ts +1 -5
  36. package/dist/table/footer/README.md +2 -0
  37. package/dist/table/footer/table-footer.svelte +1 -7
  38. package/dist/table/footer/table-footer.svelte.d.ts +1 -6
  39. package/dist/table/header/README.md +2 -0
  40. package/dist/table/header/table-header.svelte +1 -7
  41. package/dist/table/header/table-header.svelte.d.ts +1 -6
  42. package/dist/table/index.d.ts +2 -1
  43. package/dist/table/root/README.md +31 -21
  44. package/dist/table/root/context.d.ts +19 -6
  45. package/dist/table/root/context.js +203 -29
  46. package/dist/table/root/table-root.svelte +30 -33
  47. package/dist/table/root/table-root.svelte.d.ts +1 -26
  48. package/dist/table/root/table-test.svelte +29 -0
  49. package/dist/table/root/table-test.svelte.d.ts +5 -1
  50. package/dist/table/row/README.md +2 -0
  51. package/dist/table/row/table-row.svelte +46 -83
  52. package/dist/table/row/table-row.svelte.d.ts +1 -10
  53. package/dist/table/types.d.ts +90 -0
  54. package/dist/table/types.js +1 -0
  55. package/dist/table/utils/handle-body-keydown.d.ts +13 -0
  56. package/dist/table/utils/handle-body-keydown.js +67 -0
  57. package/package.json +1 -1
@@ -1,6 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { Table } from '../index';
3
3
  import type {
4
+ TableDisabledBehavior,
4
5
  TableSelectionBehavior,
5
6
  TableSelectionKey,
6
7
  TableSelectionMode,
@@ -25,11 +26,15 @@
25
26
  ariaLabelledby?: string;
26
27
  selectionMode?: TableSelectionMode;
27
28
  selectionBehavior?: TableSelectionBehavior;
29
+ disabledBehavior?: TableDisabledBehavior;
30
+ disallowEmptySelection?: boolean;
28
31
  hiddenColumns?: string[];
29
32
  defaultHiddenColumns?: string[];
30
33
  disabledKeys?: Iterable<TableSelectionKey>;
31
34
  initialSelectedKeys?: Iterable<TableSelectionKey>;
32
35
  initialSortDescriptor?: TableSortDescriptor;
36
+ onRowAction?: (id: TableSelectionKey) => void;
37
+ onSelectionChange?: (keys: Set<TableSelectionKey>) => void;
33
38
  showSelectionModeToggle?: boolean;
34
39
  showSingleSelectionModeToggle?: boolean;
35
40
  showSortClearButton?: boolean;
@@ -42,11 +47,15 @@
42
47
  ariaLabelledby,
43
48
  selectionMode = $bindable<TableSelectionMode>('multiple'),
44
49
  selectionBehavior = 'toggle',
50
+ disabledBehavior = 'all',
51
+ disallowEmptySelection = false,
45
52
  hiddenColumns = $bindable<string[] | undefined>(),
46
53
  defaultHiddenColumns,
47
54
  disabledKeys,
48
55
  initialSelectedKeys,
49
56
  initialSortDescriptor,
57
+ onRowAction,
58
+ onSelectionChange,
50
59
  showSelectionModeToggle = false,
51
60
  showSingleSelectionModeToggle = false,
52
61
  showSortClearButton = false,
@@ -59,6 +68,8 @@
59
68
  let currentSortDescriptor = $state<TableSortDescriptor | undefined>(
60
69
  (() => initialSortDescriptor)()
61
70
  );
71
+ let rowActionLog = $state<string[]>([]);
72
+ let eventLog = $state<string[]>([]);
62
73
 
63
74
  const renderedRows = $derived.by(() => {
64
75
  const nextRows = [...rows];
@@ -71,6 +82,18 @@
71
82
  return String(left).localeCompare(String(right)) * direction;
72
83
  });
73
84
  });
85
+
86
+ function handleSelectionChange(keys: Set<TableSelectionKey>) {
87
+ currentSelectedKeys = new Set(keys);
88
+ eventLog = [...eventLog, `selection:${JSON.stringify([...keys])}`];
89
+ onSelectionChange?.(new Set(keys));
90
+ }
91
+
92
+ function handleRowAction(id: TableSelectionKey) {
93
+ rowActionLog = [...rowActionLog, String(id)];
94
+ eventLog = [...eventLog, `action:${String(id)}`];
95
+ onRowAction?.(id);
96
+ }
74
97
  </script>
75
98
 
76
99
  <Table.Root
@@ -78,11 +101,15 @@
78
101
  aria-labelledby={ariaLabelledby}
79
102
  {selectionMode}
80
103
  {selectionBehavior}
104
+ {disabledBehavior}
105
+ {disallowEmptySelection}
81
106
  bind:hiddenColumns
82
107
  {defaultHiddenColumns}
83
108
  bind:selectedKeys={currentSelectedKeys}
84
109
  bind:sortDescriptor={currentSortDescriptor}
85
110
  {disabledKeys}
111
+ onRowAction={handleRowAction}
112
+ onSelectionChange={handleSelectionChange}
86
113
  class="table-root"
87
114
  >
88
115
  <Table.Header>
@@ -157,6 +184,8 @@
157
184
  {/if}
158
185
 
159
186
  <output data-testid="selected-keys">{JSON.stringify([...currentSelectedKeys])}</output>
187
+ <output data-testid="row-action-log">{JSON.stringify(rowActionLog)}</output>
188
+ <output data-testid="event-log">{JSON.stringify(eventLog)}</output>
160
189
  <output data-testid="sort-descriptor"
161
190
  >{currentSortDescriptor
162
191
  ? `${currentSortDescriptor.column}:${currentSortDescriptor.direction}`
@@ -1,4 +1,4 @@
1
- import type { TableSelectionBehavior, TableSelectionKey, TableSelectionMode, TableSortDescriptor } from './context';
1
+ import type { TableDisabledBehavior, TableSelectionBehavior, TableSelectionKey, TableSelectionMode, TableSortDescriptor } from './context';
2
2
  type DemoRow = {
3
3
  id: string;
4
4
  email: string;
@@ -10,11 +10,15 @@ type TableTestProps = {
10
10
  ariaLabelledby?: string;
11
11
  selectionMode?: TableSelectionMode;
12
12
  selectionBehavior?: TableSelectionBehavior;
13
+ disabledBehavior?: TableDisabledBehavior;
14
+ disallowEmptySelection?: boolean;
13
15
  hiddenColumns?: string[];
14
16
  defaultHiddenColumns?: string[];
15
17
  disabledKeys?: Iterable<TableSelectionKey>;
16
18
  initialSelectedKeys?: Iterable<TableSelectionKey>;
17
19
  initialSortDescriptor?: TableSortDescriptor;
20
+ onRowAction?: (id: TableSelectionKey) => void;
21
+ onSelectionChange?: (keys: Set<TableSelectionKey>) => void;
18
22
  showSelectionModeToggle?: boolean;
19
23
  showSingleSelectionModeToggle?: boolean;
20
24
  showSortClearButton?: boolean;
@@ -9,6 +9,8 @@
9
9
  Name: `Table.Row`
10
10
  Description: Semantic table row part used in the header, body, or footer. In body scope it reflects row focus, selection, and disabled state.
11
11
 
12
+ Public prop type: `TableRowProps`
13
+
12
14
  | Prop | Type | Default | Description |
13
15
  | ------------ | ------------------ | ----------- | --------------------------------------------------------------- |
14
16
  | `id` | `string \| number` | `undefined` | Stable row identifier used for selection state in `Table.Body`. |
@@ -2,26 +2,13 @@
2
2
  import { onDestroy } from 'svelte';
3
3
  import { SvelteMap } from 'svelte/reactivity';
4
4
  import { writable } from 'svelte/store';
5
- import type { Snippet } from 'svelte';
6
- import type { HTMLAttributes } from 'svelte/elements';
7
- import {
8
- setTableRowContext,
9
- useTableContext,
10
- useTableSectionContext,
11
- type TableSelectionKey
12
- } from '../root/context';
5
+ import { setTableRowContext, useTableContext, useTableSectionContext } from '../root/context';
6
+ import type { TableRowProps } from '../types.js';
13
7
  import {
14
8
  shouldShowFocusVisible,
15
9
  trackInteractionModality
16
10
  } from '../../primitives/input-modality';
17
-
18
- type TableRowProps = Omit<HTMLAttributes<HTMLTableRowElement>, 'children' | 'id'> & {
19
- id?: TableSelectionKey;
20
- isDisabled?: boolean;
21
- textValue?: string;
22
- children?: Snippet;
23
- class?: string;
24
- };
11
+ import { handleTableBodyKeydown } from '../utils/handle-body-keydown';
25
12
 
26
13
  let {
27
14
  id,
@@ -199,6 +186,14 @@
199
186
  void $selectionVersion;
200
187
  return section.section === 'body' ? table.isRowDisabled(id, isDisabled) : isDisabled;
201
188
  });
189
+ const isSelectionDisabled = $derived.by(() => {
190
+ void $selectionVersion;
191
+ return section.section === 'body' ? table.isRowSelectionDisabled(id, isDisabled) : isDisabled;
192
+ });
193
+ const isActionable = $derived.by(() => {
194
+ void $selectionVersion;
195
+ return section.section === 'body' ? table.isRowActionable(id, isDisabled) : false;
196
+ });
202
197
 
203
198
  function handleFocus() {
204
199
  if (section.section !== 'body') return;
@@ -216,77 +211,38 @@
216
211
  function handleKeyDown(event: KeyboardEvent) {
217
212
  if (section.section !== 'body') return;
218
213
  if (event.target !== rowElement) return;
219
- trackInteractionModality(event, rowElement ?? null);
220
-
221
- if ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === 'a') {
222
- if (table.selectionMode === 'multiple') {
223
- event.preventDefault();
224
- table.selectAllRows();
225
- }
226
- return;
227
- }
228
-
229
- if ((event.ctrlKey || event.metaKey) && event.key === 'Home') {
230
- event.preventDefault();
231
- table.moveToGridStart();
232
- return;
233
- }
234
-
235
- if ((event.ctrlKey || event.metaKey) && event.key === 'End') {
236
- event.preventDefault();
237
- table.moveToGridEnd();
238
- return;
239
- }
240
-
241
- switch (event.key) {
242
- case 'ArrowUp':
243
- event.preventDefault();
244
- table.moveFocus('up', {
245
- shiftKey: event.shiftKey,
246
- ctrlKey: event.ctrlKey,
247
- metaKey: event.metaKey,
248
- altKey: event.altKey
249
- });
250
- return;
251
- case 'ArrowDown':
252
- event.preventDefault();
253
- table.moveFocus('down', {
254
- shiftKey: event.shiftKey,
255
- ctrlKey: event.ctrlKey,
256
- metaKey: event.metaKey,
257
- altKey: event.altKey
258
- });
259
- return;
260
- case 'ArrowLeft':
261
- event.preventDefault();
262
- table.moveFocus('left');
263
- return;
264
- case 'ArrowRight':
265
- event.preventDefault();
266
- table.moveFocus('right');
267
- return;
268
- case 'Home':
269
- event.preventDefault();
270
- table.moveToBodyRowStart();
271
- return;
272
- case 'End':
273
- event.preventDefault();
274
- table.moveToBodyRowEnd();
275
- return;
276
- case 'Enter':
277
- case ' ':
278
- event.preventDefault();
279
- if (event.repeat) return;
280
- if (!isAriaDisabled) {
281
- table.pressRow(id, {
214
+ handleTableBodyKeydown({
215
+ event,
216
+ table,
217
+ focusTarget: rowElement,
218
+ isDisabled: isAriaDisabled,
219
+ onHome: () => table.moveToBodyRowStart(),
220
+ onEnd: () => table.moveToBodyRowEnd(),
221
+ onEnter: () =>
222
+ table.pressRow(
223
+ id,
224
+ 'keyboard-enter',
225
+ {
282
226
  shiftKey: event.shiftKey,
283
227
  ctrlKey: event.ctrlKey,
284
228
  metaKey: event.metaKey,
285
229
  altKey: event.altKey
286
- });
287
- }
288
- return;
289
- }
230
+ },
231
+ isDisabled
232
+ ),
233
+ onSpace: () =>
234
+ table.pressRow(
235
+ id,
236
+ 'keyboard-space',
237
+ {
238
+ shiftKey: event.shiftKey,
239
+ ctrlKey: event.ctrlKey,
240
+ metaKey: event.metaKey,
241
+ altKey: event.altKey
242
+ },
243
+ isDisabled
244
+ )
245
+ });
290
246
  }
291
247
  </script>
292
248
 
@@ -304,7 +260,14 @@
304
260
  data-focus-visible={isFocusVisible ? 'true' : undefined}
305
261
  data-focus-within={isFocusWithin ? 'true' : undefined}
306
262
  data-focus-visible-within={isFocusVisibleWithin ? 'true' : undefined}
263
+ data-actionable={isActionable ? 'true' : undefined}
307
264
  data-selected={isSelected ? 'true' : undefined}
265
+ data-selection-disabled={section.section === 'body' &&
266
+ table.selectionMode !== 'none' &&
267
+ !isAriaDisabled &&
268
+ isSelectionDisabled
269
+ ? 'true'
270
+ : undefined}
308
271
  data-disabled={isAriaDisabled || undefined}
309
272
  aria-selected={section.section === 'body' && table.selectionMode !== 'none'
310
273
  ? isSelected
@@ -1,13 +1,4 @@
1
- import type { Snippet } from 'svelte';
2
- import type { HTMLAttributes } from 'svelte/elements';
3
- import { type TableSelectionKey } from '../root/context';
4
- type TableRowProps = Omit<HTMLAttributes<HTMLTableRowElement>, 'children' | 'id'> & {
5
- id?: TableSelectionKey;
6
- isDisabled?: boolean;
7
- textValue?: string;
8
- children?: Snippet;
9
- class?: string;
10
- };
1
+ import type { TableRowProps } from '../types.js';
11
2
  declare const TableRow: import("svelte").Component<TableRowProps, {}, "">;
12
3
  type TableRow = ReturnType<typeof TableRow>;
13
4
  export default TableRow;
@@ -0,0 +1,90 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { HTMLAttributes } from 'svelte/elements';
3
+ import type { TableColumnWidth, TableContext, TableDisabledBehavior, TableRowActionHandler, TableSelectionBehavior, TableSelectionKey, TableSelectionMode, TableSortDescriptor } from './root/context.js';
4
+ export type TableColumnProps = {
5
+ id: string;
6
+ allowsSorting?: boolean;
7
+ isRowHeader?: boolean;
8
+ textValue?: string;
9
+ width?: TableColumnWidth;
10
+ defaultWidth?: TableColumnWidth;
11
+ minWidth?: number;
12
+ maxWidth?: number;
13
+ children?: Snippet;
14
+ };
15
+ export type TableHeaderProps = Omit<HTMLAttributes<HTMLTableSectionElement>, 'children'> & {
16
+ children?: Snippet;
17
+ class?: string;
18
+ };
19
+ export type TableBodyProps = Omit<HTMLAttributes<HTMLTableSectionElement>, 'children'> & {
20
+ children?: Snippet;
21
+ class?: string;
22
+ };
23
+ export type TableFooterProps = Omit<HTMLAttributes<HTMLTableSectionElement>, 'children'> & {
24
+ children?: Snippet;
25
+ class?: string;
26
+ };
27
+ export type TableRootProps = Omit<HTMLAttributes<HTMLTableElement>, 'children'> & {
28
+ selectionMode?: TableSelectionMode;
29
+ selectionBehavior?: TableSelectionBehavior;
30
+ disabledBehavior?: TableDisabledBehavior;
31
+ disallowEmptySelection?: boolean;
32
+ hiddenColumns?: Iterable<string>;
33
+ defaultHiddenColumns?: Iterable<string>;
34
+ selectedKeys?: Iterable<TableSelectionKey>;
35
+ defaultSelectedKeys?: Iterable<TableSelectionKey>;
36
+ sortDescriptor?: TableSortDescriptor;
37
+ defaultSortDescriptor?: TableSortDescriptor;
38
+ columnWidths?: Map<string, number>;
39
+ defaultColumnWidths?: Iterable<readonly [string, number]>;
40
+ disabledKeys?: Iterable<TableSelectionKey>;
41
+ onRowAction?: TableRowActionHandler;
42
+ onSelectionChange?: (keys: Set<TableSelectionKey>) => void;
43
+ onSortChange?: (descriptor: TableSortDescriptor | undefined) => void;
44
+ onColumnWidthsChange?: (widths: Map<string, number>) => void;
45
+ onHiddenColumnsChange?: (columnIds: string[]) => void;
46
+ onColumnResizeStart?: (columnId: string) => void;
47
+ onColumnResizeEnd?: (widths: Map<string, number>) => void;
48
+ children?: Snippet;
49
+ class?: string;
50
+ context?: TableContext;
51
+ element?: HTMLTableElement;
52
+ };
53
+ export type TableRowProps = Omit<HTMLAttributes<HTMLTableRowElement>, 'children' | 'id'> & {
54
+ id?: TableSelectionKey;
55
+ isDisabled?: boolean;
56
+ textValue?: string;
57
+ children?: Snippet;
58
+ class?: string;
59
+ };
60
+ export type TableColumnHeaderCellProps = Omit<HTMLAttributes<HTMLTableCellElement>, 'children'> & {
61
+ children?: Snippet;
62
+ class?: string;
63
+ };
64
+ export type TableColumnResizerProps = Omit<HTMLAttributes<HTMLDivElement>, 'children'> & {
65
+ step?: number;
66
+ shiftStep?: number;
67
+ children?: Snippet;
68
+ class?: string;
69
+ };
70
+ export type TableCellProps = Omit<HTMLAttributes<HTMLTableCellElement>, 'children'> & {
71
+ children?: Snippet;
72
+ class?: string;
73
+ };
74
+ export type TableEmptyStateProps = {
75
+ children?: Snippet;
76
+ class?: string;
77
+ };
78
+ export type TableCheckboxProps = Omit<HTMLAttributes<HTMLSpanElement>, 'children' | 'class' | 'id' | 'role' | 'tabindex' | 'aria-checked' | 'aria-disabled' | 'onclick' | 'onkeydown'> & {
79
+ id?: string;
80
+ title?: string;
81
+ children?: Snippet;
82
+ class?: string;
83
+ 'aria-label'?: string;
84
+ 'aria-labelledby'?: string;
85
+ };
86
+ export type TableCheckboxIndicatorProps = Omit<HTMLAttributes<HTMLSpanElement>, 'children' | 'class'> & {
87
+ keepMounted?: boolean;
88
+ children?: Snippet;
89
+ class?: string;
90
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,13 @@
1
+ import type { TableContext } from '../root/context';
2
+ type TableBodyKeydownOptions = {
3
+ event: KeyboardEvent;
4
+ table: Pick<TableContext, 'selectionMode' | 'selectAllRows' | 'moveToGridStart' | 'moveToGridEnd' | 'moveFocus'>;
5
+ focusTarget: HTMLElement | null | undefined;
6
+ isDisabled: boolean;
7
+ onHome: () => void;
8
+ onEnd: () => void;
9
+ onEnter: () => void;
10
+ onSpace: () => void;
11
+ };
12
+ export declare function handleTableBodyKeydown({ event, table, focusTarget, isDisabled, onHome, onEnd, onEnter, onSpace }: TableBodyKeydownOptions): void;
13
+ export {};
@@ -0,0 +1,67 @@
1
+ import { trackInteractionModality } from '../../primitives/input-modality';
2
+ function getInteraction(event) {
3
+ return {
4
+ shiftKey: event.shiftKey,
5
+ ctrlKey: event.ctrlKey,
6
+ metaKey: event.metaKey,
7
+ altKey: event.altKey
8
+ };
9
+ }
10
+ export function handleTableBodyKeydown({ event, table, focusTarget, isDisabled, onHome, onEnd, onEnter, onSpace }) {
11
+ trackInteractionModality(event, focusTarget ?? null);
12
+ if ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === 'a') {
13
+ if (table.selectionMode === 'multiple') {
14
+ event.preventDefault();
15
+ table.selectAllRows();
16
+ }
17
+ return;
18
+ }
19
+ if ((event.ctrlKey || event.metaKey) && event.key === 'Home') {
20
+ event.preventDefault();
21
+ table.moveToGridStart();
22
+ return;
23
+ }
24
+ if ((event.ctrlKey || event.metaKey) && event.key === 'End') {
25
+ event.preventDefault();
26
+ table.moveToGridEnd();
27
+ return;
28
+ }
29
+ switch (event.key) {
30
+ case 'ArrowUp':
31
+ event.preventDefault();
32
+ table.moveFocus('up', getInteraction(event));
33
+ return;
34
+ case 'ArrowDown':
35
+ event.preventDefault();
36
+ table.moveFocus('down', getInteraction(event));
37
+ return;
38
+ case 'ArrowLeft':
39
+ event.preventDefault();
40
+ table.moveFocus('left');
41
+ return;
42
+ case 'ArrowRight':
43
+ event.preventDefault();
44
+ table.moveFocus('right');
45
+ return;
46
+ case 'Home':
47
+ event.preventDefault();
48
+ onHome();
49
+ return;
50
+ case 'End':
51
+ event.preventDefault();
52
+ onEnd();
53
+ return;
54
+ case 'Enter':
55
+ event.preventDefault();
56
+ if (event.repeat || isDisabled)
57
+ return;
58
+ onEnter();
59
+ return;
60
+ case ' ':
61
+ event.preventDefault();
62
+ if (event.repeat || isDisabled)
63
+ return;
64
+ onSpace();
65
+ return;
66
+ }
67
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@human-kit/svelte-components",
3
- "version": "1.0.0-alpha.13",
3
+ "version": "1.0.0-alpha.15",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "svelte": "./dist/index.js",