@human-kit/svelte-components 1.0.0-alpha.5 → 1.0.0-alpha.7

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/dist/button/README.md +48 -0
  2. package/dist/button/TODO.md +13 -0
  3. package/dist/button/index.d.ts +5 -0
  4. package/dist/button/index.js +4 -0
  5. package/dist/button/index.parts.d.ts +1 -0
  6. package/dist/button/index.parts.js +1 -0
  7. package/dist/button/root/README.md +43 -0
  8. package/dist/button/root/button-root.svelte +362 -0
  9. package/dist/button/root/button-root.svelte.d.ts +21 -0
  10. package/dist/button/root/button-test.svelte +76 -0
  11. package/dist/button/root/button-test.svelte.d.ts +11 -0
  12. package/dist/calendar/index.d.ts +3 -3
  13. package/dist/calendar/index.js +3 -3
  14. package/dist/calendar/trigger-next/calendar-trigger-next.svelte +9 -4
  15. package/dist/calendar/trigger-next/calendar-trigger-next.svelte.d.ts +2 -1
  16. package/dist/calendar/trigger-previous/calendar-trigger-previous.svelte +9 -4
  17. package/dist/calendar/trigger-previous/calendar-trigger-previous.svelte.d.ts +2 -1
  18. package/dist/checkbox/index.d.ts +3 -3
  19. package/dist/checkbox/index.js +3 -3
  20. package/dist/clock/index.d.ts +5 -5
  21. package/dist/clock/index.js +5 -5
  22. package/dist/combobox/button/combobox-button.svelte +5 -4
  23. package/dist/combobox/index.d.ts +3 -3
  24. package/dist/combobox/index.js +3 -3
  25. package/dist/combobox/input/combobox-input.svelte +17 -2
  26. package/dist/combobox/list/combobox-listbox.svelte.d.ts +1 -1
  27. package/dist/combobox/popover/combobox-popover.svelte +47 -1
  28. package/dist/combobox/root/combobox.svelte +13 -0
  29. package/dist/combobox/root/context.d.ts +2 -0
  30. package/dist/combobox/tag-remove/combobox-tag-remove.svelte +3 -2
  31. package/dist/datepicker/index.d.ts +3 -3
  32. package/dist/datepicker/index.js +3 -3
  33. package/dist/datepicker/trigger/date-picker-trigger.svelte +5 -5
  34. package/dist/dialog/index.d.ts +3 -3
  35. package/dist/dialog/index.js +2 -2
  36. package/dist/index.d.ts +31 -29
  37. package/dist/index.js +31 -29
  38. package/dist/listbox/index.d.ts +3 -3
  39. package/dist/listbox/index.js +3 -3
  40. package/dist/listbox/item/README.md +2 -1
  41. package/dist/listbox/item/listbox-item.svelte +129 -1
  42. package/dist/listbox/item/listbox-item.svelte.d.ts +2 -0
  43. package/dist/listbox/root/listbox-test.svelte +14 -2
  44. package/dist/listbox/root/listbox-test.svelte.d.ts +1 -0
  45. package/dist/listbox/root/listbox.svelte.d.ts +2 -2
  46. package/dist/popover/index.d.ts +3 -3
  47. package/dist/popover/index.js +3 -3
  48. package/dist/popover/trigger/popover-trigger-button.svelte +4 -3
  49. package/dist/table/index.d.ts +3 -3
  50. package/dist/table/index.js +3 -3
  51. package/dist/table/root/table-root.svelte.d.ts +1 -1
  52. package/dist/timepicker/index.d.ts +5 -5
  53. package/dist/timepicker/index.js +5 -5
  54. package/dist/timepicker/trigger/time-picker-trigger.svelte +5 -5
  55. package/package.json +6 -1
@@ -5,7 +5,7 @@
5
5
  ### ListBox.Item
6
6
 
7
7
  Name: `ListBox.Item`
8
- Description: Selectable option element with built-in selected, focused, hovered, and disabled states.
8
+ Description: Selectable option element with built-in selected, focused, hovered, pressed, and disabled states.
9
9
 
10
10
  | Prop | Type | Default | Description |
11
11
  | ---------------------- | -------------------------------- | -------------------- | -------------------------------------------------------- |
@@ -21,4 +21,5 @@ Description: Selectable option element with built-in selected, focused, hovered,
21
21
  | `onResolvedTextValue` | `(label: string) => void` | `undefined` | Called when item text value is resolved. |
22
22
  | `scrollOnFocus` | `boolean` | `false` | Scrolls item into view when focused. |
23
23
  | `isParentDisabled` | `boolean` | `false` | Additional disabled state inherited from parent wrapper. |
24
+ | `pressed` | `boolean` | `undefined` | Forces the visual pressed state from parent composition. |
24
25
  | `...restProps` | `HTMLAttributes<HTMLDivElement>` | `-` | Additional option attributes. |
@@ -34,6 +34,8 @@
34
34
  scrollOnFocus?: boolean;
35
35
  /** Additional disabled state from parent. */
36
36
  isParentDisabled?: boolean;
37
+ /** Override the visual pressed state. When provided, this value is used instead of internal press tracking. */
38
+ pressed?: boolean;
37
39
  };
38
40
 
39
41
  let {
@@ -50,6 +52,7 @@
50
52
  onResolvedTextValue,
51
53
  scrollOnFocus = false,
52
54
  isParentDisabled = false,
55
+ pressed: pressedOverride,
53
56
  ...restProps
54
57
  }: ListBoxItemProps = $props();
55
58
 
@@ -59,6 +62,8 @@
59
62
  let isSelected = $state(false);
60
63
  let isFocused = $state(false);
61
64
  let isHovered = $state(false);
65
+ let isPressed = $state(false);
66
+ let pressedKey: 'Enter' | 'Space' | null = $state(null);
62
67
 
63
68
  // Focus: use override if provided, otherwise use internal state
64
69
  const isFocusedComputed = $derived(
@@ -67,6 +72,11 @@
67
72
  const isDisabledComputed = $derived(
68
73
  disabled || listboxCtx.disabledIds.has(id) || isParentDisabled
69
74
  );
75
+ const isPressedComputed = $derived(
76
+ pressedOverride !== undefined
77
+ ? Boolean(pressedOverride) && !isDisabledComputed
78
+ : isPressed && !isDisabledComputed
79
+ );
70
80
 
71
81
  // ID: use custom if provided, otherwise generate
72
82
  const uniqueId = $derived(customId ?? `listbox-item-${id}`);
@@ -113,6 +123,17 @@
113
123
  }
114
124
  });
115
125
 
126
+ $effect(() => {
127
+ if (!isDisabledComputed) return;
128
+ clearPressedState();
129
+ isHovered = false;
130
+ });
131
+
132
+ function clearPressedState() {
133
+ isPressed = false;
134
+ pressedKey = null;
135
+ }
136
+
116
137
  function handleClick() {
117
138
  if (isDisabledComputed) return;
118
139
 
@@ -135,6 +156,42 @@
135
156
 
136
157
  function handleBlur() {}
137
158
 
159
+ function handlePointerDown(event: PointerEvent) {
160
+ if (isDisabledComputed) {
161
+ event.preventDefault();
162
+ clearPressedState();
163
+ return;
164
+ }
165
+
166
+ if (event.button !== 0) return;
167
+ isPressed = true;
168
+ pressedKey = null;
169
+ }
170
+
171
+ function handlePointerUp(event: PointerEvent) {
172
+ if (event.button !== 0) return;
173
+ isPressed = false;
174
+ pressedKey = null;
175
+ }
176
+
177
+ function handlePointerCancel() {
178
+ clearPressedState();
179
+ }
180
+
181
+ function handlePointerEnter(event: PointerEvent) {
182
+ if (isDisabledComputed) return;
183
+
184
+ if ((event.buttons & 1) === 1 && pressedKey === null) {
185
+ isPressed = true;
186
+ }
187
+ }
188
+
189
+ function handlePointerLeave() {
190
+ if (pressedKey === null) {
191
+ isPressed = false;
192
+ }
193
+ }
194
+
138
195
  function handleMouseEnter() {
139
196
  if (!isDisabledComputed) {
140
197
  isHovered = true;
@@ -143,17 +200,80 @@
143
200
 
144
201
  function handleMouseLeave() {
145
202
  isHovered = false;
203
+ if (pressedKey === null) {
204
+ isPressed = false;
205
+ }
146
206
  }
147
207
 
148
208
  // Keyboard is handled by parent container
149
- function handleKeydown() {}
209
+ function handleKeydown(event: KeyboardEvent) {
210
+ const key =
211
+ event.key === 'Enter'
212
+ ? 'Enter'
213
+ : event.key === ' ' || event.key === 'Spacebar'
214
+ ? 'Space'
215
+ : null;
216
+
217
+ if (!key) return;
218
+
219
+ if (isDisabledComputed) {
220
+ event.preventDefault();
221
+ clearPressedState();
222
+ return;
223
+ }
224
+
225
+ if (event.repeat && isPressed && pressedKey === key) return;
226
+
227
+ isPressed = true;
228
+ pressedKey = key;
229
+ }
230
+
231
+ function handleKeyup(event: KeyboardEvent) {
232
+ const key =
233
+ event.key === 'Enter'
234
+ ? 'Enter'
235
+ : event.key === ' ' || event.key === 'Spacebar'
236
+ ? 'Space'
237
+ : null;
238
+
239
+ if (!key) return;
240
+
241
+ if (isDisabledComputed) {
242
+ event.preventDefault();
243
+ clearPressedState();
244
+ return;
245
+ }
246
+
247
+ if (pressedKey === key) {
248
+ clearPressedState();
249
+ }
250
+ }
251
+
150
252
  function handleMouseDown(event: MouseEvent) {
151
253
  // Prevent focus stealing when used in ComboBox (disableFocusHandling=true)
152
254
  // This keeps the focus on the input while allowing click selection
255
+ if (isDisabledComputed) {
256
+ event.preventDefault();
257
+ clearPressedState();
258
+ return;
259
+ }
260
+
261
+ if (event.button === 0) {
262
+ isPressed = true;
263
+ pressedKey = null;
264
+ }
265
+
153
266
  if (disableFocusHandling) {
154
267
  event.preventDefault();
155
268
  }
156
269
  }
270
+
271
+ function handleMouseUp(event: MouseEvent) {
272
+ if (event.button !== 0) return;
273
+ if (pressedKey === null) {
274
+ clearPressedState();
275
+ }
276
+ }
157
277
  </script>
158
278
 
159
279
  <div
@@ -171,9 +291,17 @@
171
291
  data-disabled={isDisabledComputed || undefined}
172
292
  data-focused={isFocusedComputed || undefined}
173
293
  data-hovered={isHovered || undefined}
294
+ data-pressed={isPressedComputed || undefined}
295
+ onpointerdown={handlePointerDown}
296
+ onpointerup={handlePointerUp}
297
+ onpointercancel={handlePointerCancel}
298
+ onpointerenter={handlePointerEnter}
299
+ onpointerleave={handlePointerLeave}
174
300
  onmousedown={handleMouseDown}
301
+ onmouseup={handleMouseUp}
175
302
  onclick={handleClick}
176
303
  onkeydown={handleKeydown}
304
+ onkeyup={handleKeyup}
177
305
  onfocus={handleFocus}
178
306
  onblur={handleBlur}
179
307
  onmouseenter={handleMouseEnter}
@@ -28,6 +28,8 @@ type ListBoxItemProps = Omit<HTMLAttributes<HTMLDivElement>, 'id' | 'children'>
28
28
  scrollOnFocus?: boolean;
29
29
  /** Additional disabled state from parent. */
30
30
  isParentDisabled?: boolean;
31
+ /** Override the visual pressed state. When provided, this value is used instead of internal press tracking. */
32
+ pressed?: boolean;
31
33
  };
32
34
  declare const ListboxItem: import("svelte").Component<ListBoxItemProps, {}, "">;
33
35
  type ListboxItem = ReturnType<typeof ListboxItem>;
@@ -5,9 +5,17 @@
5
5
  selectionMode?: 'single' | 'multiple';
6
6
  selectionBehavior?: 'toggle' | 'replace';
7
7
  disabledIds?: Iterable<string | number>;
8
+ pressedIds?: Iterable<string | number>;
8
9
  };
9
10
 
10
- let { selectionMode = 'single', selectionBehavior = 'toggle', disabledIds }: Props = $props();
11
+ let {
12
+ selectionMode = 'single',
13
+ selectionBehavior = 'toggle',
14
+ disabledIds,
15
+ pressedIds
16
+ }: Props = $props();
17
+
18
+ const pressedIdSet = $derived(new Set(pressedIds ?? []));
11
19
 
12
20
  const fruits = [
13
21
  { id: 'apple', name: 'Apple' },
@@ -20,7 +28,11 @@
20
28
 
21
29
  <ListBox.Root {selectionMode} {selectionBehavior} {disabledIds} aria-label="Fruits list">
22
30
  {#each fruits as fruit (fruit.id)}
23
- <ListBox.Item id={fruit.id} textValue={fruit.name}>
31
+ <ListBox.Item
32
+ id={fruit.id}
33
+ textValue={fruit.name}
34
+ pressed={pressedIdSet.has(fruit.id) ? true : undefined}
35
+ >
24
36
  {fruit.name}
25
37
  </ListBox.Item>
26
38
  {/each}
@@ -2,6 +2,7 @@ type Props = {
2
2
  selectionMode?: 'single' | 'multiple';
3
3
  selectionBehavior?: 'toggle' | 'replace';
4
4
  disabledIds?: Iterable<string | number>;
5
+ pressedIds?: Iterable<string | number>;
5
6
  };
6
7
  declare const ListboxTest: import("svelte").Component<Props, {}, "">;
7
8
  type ListboxTest = ReturnType<typeof ListboxTest>;
@@ -31,7 +31,7 @@ declare function $$render<T extends object = object>(): {
31
31
  element?: HTMLElement;
32
32
  };
33
33
  exports: {};
34
- bindings: "value" | "context" | "element";
34
+ bindings: "value" | "element" | "context";
35
35
  slots: {};
36
36
  events: {};
37
37
  };
@@ -39,7 +39,7 @@ declare class __sveltets_Render<T extends object = object> {
39
39
  props(): ReturnType<typeof $$render<T>>['props'];
40
40
  events(): ReturnType<typeof $$render<T>>['events'];
41
41
  slots(): ReturnType<typeof $$render<T>>['slots'];
42
- bindings(): "value" | "context" | "element";
42
+ bindings(): "value" | "element" | "context";
43
43
  exports(): {};
44
44
  }
45
45
  interface $$IsomorphicComponent {
@@ -1,8 +1,8 @@
1
- export * as Popover from './index.parts.ts';
1
+ export * as Popover from './index.parts.js';
2
2
  export { default as PopoverRoot } from './root/popover-root.svelte';
3
3
  export { default as PopoverContent } from './content/popover-content.svelte';
4
4
  export { default as PopoverTrigger } from './trigger/popover-trigger.svelte';
5
5
  export { default as PopoverTriggerButton } from './trigger/popover-trigger-button.svelte';
6
- export { getPopoverContext, setPopoverContext, type PopoverContext, type PopoverCanonicalCloseReason, type PopoverCloseReason, type PopoverOpenReason, type PopoverChangeReason, type PopoverOpenChangeDetails } from './root/context.ts';
7
- import * as PopoverParts from './index.parts.ts';
6
+ export { getPopoverContext, setPopoverContext, type PopoverContext, type PopoverCanonicalCloseReason, type PopoverCloseReason, type PopoverOpenReason, type PopoverChangeReason, type PopoverOpenChangeDetails } from './root/context.js';
7
+ import * as PopoverParts from './index.parts.js';
8
8
  export default PopoverParts;
@@ -1,12 +1,12 @@
1
1
  // Namespace export for component composition: <Popover.Root>, <Popover.Trigger>, etc.
2
- export * as Popover from './index.parts.ts';
2
+ export * as Popover from './index.parts.js';
3
3
  // Direct named exports for individual imports
4
4
  export { default as PopoverRoot } from './root/popover-root.svelte';
5
5
  export { default as PopoverContent } from './content/popover-content.svelte';
6
6
  export { default as PopoverTrigger } from './trigger/popover-trigger.svelte';
7
7
  export { default as PopoverTriggerButton } from './trigger/popover-trigger-button.svelte';
8
8
  // Context and types
9
- export { getPopoverContext, setPopoverContext } from './root/context.ts';
9
+ export { getPopoverContext, setPopoverContext } from './root/context.js';
10
10
  // Default export as namespace object
11
- import * as PopoverParts from './index.parts.ts';
11
+ import * as PopoverParts from './index.parts.js';
12
12
  export default PopoverParts;
@@ -1,6 +1,7 @@
1
1
  <script lang="ts">
2
2
  import type { Snippet } from 'svelte';
3
3
  import type { HTMLButtonAttributes } from 'svelte/elements';
4
+ import { ButtonRoot } from '../../button/index.js';
4
5
  import { getPopoverContext } from '../root/context';
5
6
 
6
7
  type PopoverTriggerButtonProps = Omit<
@@ -30,8 +31,8 @@
30
31
  }
31
32
  </script>
32
33
 
33
- <button
34
- bind:this={buttonRef}
34
+ <ButtonRoot
35
+ bind:element={buttonRef}
35
36
  class={className}
36
37
  type="button"
37
38
  aria-expanded={ctx?.isOpen ?? false}
@@ -42,4 +43,4 @@
42
43
  {#if children}
43
44
  {@render children()}
44
45
  {/if}
45
- </button>
46
+ </ButtonRoot>
@@ -1,4 +1,4 @@
1
- export * as Table from './index.parts.ts';
1
+ export * as Table from './index.parts.js';
2
2
  export { default as TableRoot } from './root/table-root.svelte';
3
3
  export { default as TableColumn } from './column/table-column.svelte';
4
4
  export { default as TableHeader } from './header/table-header.svelte';
@@ -11,6 +11,6 @@ export { default as TableColumnResizer } from './column-resizer/table-column-res
11
11
  export { default as TableCheckbox } from './checkbox/table-checkbox.svelte';
12
12
  export { default as TableCheckboxIndicator } from './checkbox-indicator/table-checkbox-indicator.svelte';
13
13
  export { default as TableCell } from './cell/table-cell.svelte';
14
- export { createTableContext, getTableContext, setTableContext, useTableContext, getTableSectionContext, setTableSectionContext, useTableSectionContext, getTableRowContext, setTableRowContext, useTableRowContext, getTableColumnContext, setTableColumnContext, useTableColumnContext, type TableContext, type TableSelectionBehavior, type TableSelectionCheckboxState, type TableSelectionKey, type TableSelectionMode, type TableSortDirection, type TableSortDescriptor, type TableColumnWidth, type TableGridCoord, type TableColumnRegistration, type TableSectionKind, type TableSectionContext, type TableRowContext, type TableColumnContext, type CreateTableContextOptions } from './root/context';
15
- import * as TableParts from './index.parts.ts';
14
+ export { createTableContext, getTableContext, setTableContext, useTableContext, getTableSectionContext, setTableSectionContext, useTableSectionContext, getTableRowContext, setTableRowContext, useTableRowContext, getTableColumnContext, setTableColumnContext, useTableColumnContext, type TableContext, type TableSelectionBehavior, type TableSelectionCheckboxState, type TableSelectionKey, type TableSelectionMode, type TableSortDirection, type TableSortDescriptor, type TableColumnWidth, type TableGridCoord, type TableColumnRegistration, type TableSectionKind, type TableSectionContext, type TableRowContext, type TableColumnContext, type CreateTableContextOptions } from './root/context.js';
15
+ import * as TableParts from './index.parts.js';
16
16
  export default TableParts;
@@ -1,4 +1,4 @@
1
- export * as Table from './index.parts.ts';
1
+ export * as Table from './index.parts.js';
2
2
  export { default as TableRoot } from './root/table-root.svelte';
3
3
  export { default as TableColumn } from './column/table-column.svelte';
4
4
  export { default as TableHeader } from './header/table-header.svelte';
@@ -11,6 +11,6 @@ export { default as TableColumnResizer } from './column-resizer/table-column-res
11
11
  export { default as TableCheckbox } from './checkbox/table-checkbox.svelte';
12
12
  export { default as TableCheckboxIndicator } from './checkbox-indicator/table-checkbox-indicator.svelte';
13
13
  export { default as TableCell } from './cell/table-cell.svelte';
14
- export { createTableContext, getTableContext, setTableContext, useTableContext, getTableSectionContext, setTableSectionContext, useTableSectionContext, getTableRowContext, setTableRowContext, useTableRowContext, getTableColumnContext, setTableColumnContext, useTableColumnContext } from './root/context';
15
- import * as TableParts from './index.parts.ts';
14
+ export { createTableContext, getTableContext, setTableContext, useTableContext, getTableSectionContext, setTableSectionContext, useTableSectionContext, getTableRowContext, setTableRowContext, useTableRowContext, getTableColumnContext, setTableColumnContext, useTableColumnContext } from './root/context.js';
15
+ import * as TableParts from './index.parts.js';
16
16
  export default TableParts;
@@ -24,6 +24,6 @@ type TableRootProps = Omit<HTMLAttributes<HTMLTableElement>, 'children'> & {
24
24
  context?: TableContext;
25
25
  element?: HTMLTableElement;
26
26
  };
27
- declare const TableRoot: import("svelte").Component<TableRootProps, {}, "context" | "element" | "hiddenColumns" | "selectedKeys" | "sortDescriptor" | "columnWidths">;
27
+ declare const TableRoot: import("svelte").Component<TableRootProps, {}, "element" | "context" | "hiddenColumns" | "selectedKeys" | "sortDescriptor" | "columnWidths">;
28
28
  type TableRoot = ReturnType<typeof TableRoot>;
29
29
  export default TableRoot;
@@ -1,4 +1,4 @@
1
- export * as TimePicker from './index.parts.ts';
1
+ export * as TimePicker from './index.parts.js';
2
2
  export { default as TimePickerRoot } from './root/time-picker-root.svelte';
3
3
  export { default as TimePickerInput } from './input/time-picker-input.svelte';
4
4
  export { default as TimePickerSegment } from './segment/time-picker-segment.svelte';
@@ -7,8 +7,8 @@ export { default as TimePickerPopover } from './popover/time-picker-popover.svel
7
7
  export { default as TimePickerClock } from './clock/time-picker-clock.svelte';
8
8
  export { default as TimePickerWheelColumn } from '../clock/wheel-column/clock-wheel-column.svelte';
9
9
  export { default as TimePickerWheelItem } from '../clock/wheel-item/clock-wheel-item.svelte';
10
- export { getTimePickerContext, setTimePickerContext, useTimePickerContext, type TimePickerContext, type TimePickerOpenChangeDetails, type TimePickerOpenChangeReason, type TimePickerSegmentPart, type TimePickerSegmentType, type TimePickerEditableSegmentType } from './root/context.ts';
11
- export { type TimePickerGranularity, type TimePickerHourCycle, type TimePickerTimeValue } from './root/time-utils';
12
- export { type ClockColumnInfo } from '../clock/root/resolve-visible-columns';
13
- import * as TimePickerParts from './index.parts.ts';
10
+ export { getTimePickerContext, setTimePickerContext, useTimePickerContext, type TimePickerContext, type TimePickerOpenChangeDetails, type TimePickerOpenChangeReason, type TimePickerSegmentPart, type TimePickerSegmentType, type TimePickerEditableSegmentType } from './root/context.js';
11
+ export { type TimePickerGranularity, type TimePickerHourCycle, type TimePickerTimeValue } from './root/time-utils.js';
12
+ export { type ClockColumnInfo } from '../clock/root/resolve-visible-columns.js';
13
+ import * as TimePickerParts from './index.parts.js';
14
14
  export default TimePickerParts;
@@ -1,4 +1,4 @@
1
- export * as TimePicker from './index.parts.ts';
1
+ export * as TimePicker from './index.parts.js';
2
2
  export { default as TimePickerRoot } from './root/time-picker-root.svelte';
3
3
  export { default as TimePickerInput } from './input/time-picker-input.svelte';
4
4
  export { default as TimePickerSegment } from './segment/time-picker-segment.svelte';
@@ -7,8 +7,8 @@ export { default as TimePickerPopover } from './popover/time-picker-popover.svel
7
7
  export { default as TimePickerClock } from './clock/time-picker-clock.svelte';
8
8
  export { default as TimePickerWheelColumn } from '../clock/wheel-column/clock-wheel-column.svelte';
9
9
  export { default as TimePickerWheelItem } from '../clock/wheel-item/clock-wheel-item.svelte';
10
- export { getTimePickerContext, setTimePickerContext, useTimePickerContext } from './root/context.ts';
11
- export {} from './root/time-utils';
12
- export {} from '../clock/root/resolve-visible-columns';
13
- import * as TimePickerParts from './index.parts.ts';
10
+ export { getTimePickerContext, setTimePickerContext, useTimePickerContext } from './root/context.js';
11
+ export {} from './root/time-utils.js';
12
+ export {} from '../clock/root/resolve-visible-columns.js';
13
+ import * as TimePickerParts from './index.parts.js';
14
14
  export default TimePickerParts;
@@ -1,6 +1,7 @@
1
1
  <script lang="ts">
2
2
  import type { Snippet } from 'svelte';
3
3
  import type { HTMLButtonAttributes } from 'svelte/elements';
4
+ import { ButtonRoot } from '../../button/index.js';
4
5
  import { useTimePickerContext } from '../root/context';
5
6
  import {
6
7
  shouldShowFocusVisible,
@@ -94,14 +95,13 @@
94
95
  </script>
95
96
 
96
97
  {#if !timePicker.isReadOnly}
97
- <button
98
- bind:this={buttonRef}
98
+ <ButtonRoot
99
+ bind:element={buttonRef}
99
100
  type="button"
100
- disabled={timePicker.isDisabled}
101
+ isDisabled={timePicker.isDisabled}
101
102
  class={className}
102
103
  aria-haspopup="dialog"
103
104
  aria-expanded={timePicker.open}
104
- data-disabled={timePicker.isDisabled || undefined}
105
105
  data-focused={isFocused || undefined}
106
106
  data-focus-visible={isFocused && timePicker.focusVisible ? 'true' : undefined}
107
107
  {...restProps}
@@ -118,5 +118,5 @@
118
118
  {#if children}
119
119
  {@render children()}
120
120
  {/if}
121
- </button>
121
+ </ButtonRoot>
122
122
  {/if}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@human-kit/svelte-components",
3
- "version": "1.0.0-alpha.5",
3
+ "version": "1.0.0-alpha.7",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "svelte": "./dist/index.js",
@@ -11,6 +11,11 @@
11
11
  "svelte": "./dist/index.js",
12
12
  "default": "./dist/index.js"
13
13
  },
14
+ "./button": {
15
+ "types": "./dist/button/index.d.ts",
16
+ "svelte": "./dist/button/index.js",
17
+ "default": "./dist/button/index.js"
18
+ },
14
19
  "./checkbox": {
15
20
  "types": "./dist/checkbox/index.d.ts",
16
21
  "svelte": "./dist/checkbox/index.js",