@ark-ui/svelte 5.7.0 → 5.9.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 (44) hide show
  1. package/dist/components/anatomy.d.ts +45 -0
  2. package/dist/components/anatomy.js +45 -0
  3. package/dist/components/combobox/combobox-root-provider.svelte +4 -0
  4. package/dist/components/combobox/combobox-root-provider.svelte.d.ts +1 -0
  5. package/dist/components/combobox/combobox-root.svelte +6 -0
  6. package/dist/components/combobox/combobox-root.svelte.d.ts +2 -0
  7. package/dist/components/combobox/combobox.d.ts +2 -2
  8. package/dist/components/combobox/index.d.ts +2 -2
  9. package/dist/components/combobox/index.js +1 -1
  10. package/dist/components/field/use-field.svelte.js +1 -0
  11. package/dist/components/fieldset/fieldset-legend.svelte +3 -3
  12. package/dist/components/fieldset/fieldset-legend.svelte.d.ts +2 -2
  13. package/dist/components/file-upload/file-upload-item-group.svelte +9 -2
  14. package/dist/components/file-upload/file-upload-item-group.svelte.d.ts +2 -1
  15. package/dist/components/file-upload/file-upload-item.svelte +10 -4
  16. package/dist/components/file-upload/file-upload-item.svelte.d.ts +2 -1
  17. package/dist/components/file-upload/use-file-upload-item-group-props-context.d.ts +5 -0
  18. package/dist/components/file-upload/use-file-upload-item-group-props-context.js +6 -0
  19. package/dist/components/frame/frame.svelte +8 -6
  20. package/dist/components/listbox/index.d.ts +2 -2
  21. package/dist/components/listbox/index.js +1 -1
  22. package/dist/components/listbox/listbox-root-provider.svelte +6 -0
  23. package/dist/components/listbox/listbox-root-provider.svelte.d.ts +2 -0
  24. package/dist/components/listbox/listbox-root.svelte +16 -6
  25. package/dist/components/listbox/listbox-root.svelte.d.ts +3 -1
  26. package/dist/components/listbox/listbox.d.ts +2 -2
  27. package/dist/components/menu/menu-trigger-item.svelte +3 -0
  28. package/dist/components/select/index.d.ts +2 -2
  29. package/dist/components/select/index.js +1 -1
  30. package/dist/components/select/select-root-provider.svelte +5 -0
  31. package/dist/components/select/select-root-provider.svelte.d.ts +2 -0
  32. package/dist/components/select/select-root.svelte +3 -0
  33. package/dist/components/select/select-root.svelte.d.ts +2 -0
  34. package/dist/components/select/select.d.ts +2 -2
  35. package/dist/components/tree-view/index.d.ts +2 -2
  36. package/dist/components/tree-view/index.js +1 -1
  37. package/dist/components/tree-view/tree-view-root-provider.svelte +5 -0
  38. package/dist/components/tree-view/tree-view-root-provider.svelte.d.ts +2 -0
  39. package/dist/components/tree-view/tree-view-root.svelte +3 -0
  40. package/dist/components/tree-view/tree-view-root.svelte.d.ts +2 -0
  41. package/dist/components/tree-view/tree-view.d.ts +2 -2
  42. package/dist/lucide-optimize.d.ts +34 -0
  43. package/dist/lucide-optimize.js +90 -0
  44. package/package.json +74 -72
@@ -1 +1,46 @@
1
1
  export * from '@zag-js/anatomy';
2
+ export { accordionAnatomy } from './accordion/accordion.anatomy';
3
+ export { angleSliderAnatomy } from './angle-slider/angle-slider.anatomy';
4
+ export { avatarAnatomy } from './avatar/avatar.anatomy';
5
+ export { carouselAnatomy } from './carousel/carousel.anatomy';
6
+ export { checkboxAnatomy } from './checkbox/checkbox.anatomy';
7
+ export { clipboardAnatomy } from './clipboard/clipboard.anatomy';
8
+ export { collapsibleAnatomy } from './collapsible/collapsible.anatomy';
9
+ export { colorPickerAnatomy } from './color-picker/color-picker.anatomy';
10
+ export { comboboxAnatomy } from './combobox/combobox.anatomy';
11
+ export { datePickerAnatomy } from './date-picker/date-picker.anatomy';
12
+ export { dialogAnatomy } from './dialog/dialog.anatomy';
13
+ export { editableAnatomy } from './editable/editable.anatomy';
14
+ export { fieldAnatomy } from './field/field.anatomy';
15
+ export { fieldsetAnatomy } from './fieldset/fieldset.anatomy';
16
+ export { fileUploadAnatomy } from './file-upload/file-upload.anatomy';
17
+ export { floatingPanelAnatomy } from './floating-panel/floating-panel.anatomy';
18
+ export { hoverCardAnatomy } from './hover-card/hover-card.anatomy';
19
+ export { listboxAnatomy } from './listbox/listbox.anatomy';
20
+ export { menuAnatomy } from './menu/menu.anatomy';
21
+ export { numberInputAnatomy } from './number-input/number-input.anatomy';
22
+ export { paginationAnatomy } from './pagination/pagination.anatomy';
23
+ export { passwordInputAnatomy } from './password-input/password-input.anatomy';
24
+ export { pinInputAnatomy } from './pin-input/pin-input.anatomy';
25
+ export { popoverAnatomy } from './popover/popover.anatomy';
26
+ export { progressAnatomy } from './progress/progress.anatomy';
27
+ export { qrCodeAnatomy } from './qr-code/qr-code.anatomy';
28
+ export { radioGroupAnatomy } from './radio-group/radio-group.anatomy';
29
+ export { ratingGroupAnatomy } from './rating-group/rating-group.anatomy';
30
+ export { scrollAreaAnatomy } from './scroll-area/scroll-area.anatomy';
31
+ export { segmentGroupAnatomy } from './segment-group/segment-group.anatomy';
32
+ export { selectAnatomy } from './select/select.anatomy';
33
+ export { signaturePadAnatomy } from './signature-pad/signature-pad.anatomy';
34
+ export { sliderAnatomy } from './slider/slider.anatomy';
35
+ export { splitterAnatomy } from './splitter/splitter.anatomy';
36
+ export { stepsAnatomy } from './steps/steps.anatomy';
37
+ export { switchAnatomy } from './switch/switch.anatomy';
38
+ export { tabsAnatomy } from './tabs/tabs.anatomy';
39
+ export { tagsInputAnatomy } from './tags-input/tags-input.anatomy';
40
+ export { timerAnatomy } from './timer/timer.anatomy';
41
+ export { toastAnatomy } from './toast/toast.anatomy';
42
+ export { toggleAnatomy } from './toggle/toggle.anatomy';
43
+ export { toggleGroupAnatomy } from './toggle-group/toggle-group.anatomy';
44
+ export { tooltipAnatomy } from './tooltip/tooltip.anatomy';
45
+ export { tourAnatomy } from './tour/tour.anatomy';
46
+ export { treeViewAnatomy } from './tree-view/tree-view.anatomy';
@@ -1 +1,46 @@
1
1
  export * from '@zag-js/anatomy';
2
+ export { accordionAnatomy } from './accordion/accordion.anatomy';
3
+ export { angleSliderAnatomy } from './angle-slider/angle-slider.anatomy';
4
+ export { avatarAnatomy } from './avatar/avatar.anatomy';
5
+ export { carouselAnatomy } from './carousel/carousel.anatomy';
6
+ export { checkboxAnatomy } from './checkbox/checkbox.anatomy';
7
+ export { clipboardAnatomy } from './clipboard/clipboard.anatomy';
8
+ export { collapsibleAnatomy } from './collapsible/collapsible.anatomy';
9
+ export { colorPickerAnatomy } from './color-picker/color-picker.anatomy';
10
+ export { comboboxAnatomy } from './combobox/combobox.anatomy';
11
+ export { datePickerAnatomy } from './date-picker/date-picker.anatomy';
12
+ export { dialogAnatomy } from './dialog/dialog.anatomy';
13
+ export { editableAnatomy } from './editable/editable.anatomy';
14
+ export { fieldAnatomy } from './field/field.anatomy';
15
+ export { fieldsetAnatomy } from './fieldset/fieldset.anatomy';
16
+ export { fileUploadAnatomy } from './file-upload/file-upload.anatomy';
17
+ export { floatingPanelAnatomy } from './floating-panel/floating-panel.anatomy';
18
+ export { hoverCardAnatomy } from './hover-card/hover-card.anatomy';
19
+ export { listboxAnatomy } from './listbox/listbox.anatomy';
20
+ export { menuAnatomy } from './menu/menu.anatomy';
21
+ export { numberInputAnatomy } from './number-input/number-input.anatomy';
22
+ export { paginationAnatomy } from './pagination/pagination.anatomy';
23
+ export { passwordInputAnatomy } from './password-input/password-input.anatomy';
24
+ export { pinInputAnatomy } from './pin-input/pin-input.anatomy';
25
+ export { popoverAnatomy } from './popover/popover.anatomy';
26
+ export { progressAnatomy } from './progress/progress.anatomy';
27
+ export { qrCodeAnatomy } from './qr-code/qr-code.anatomy';
28
+ export { radioGroupAnatomy } from './radio-group/radio-group.anatomy';
29
+ export { ratingGroupAnatomy } from './rating-group/rating-group.anatomy';
30
+ export { scrollAreaAnatomy } from './scroll-area/scroll-area.anatomy';
31
+ export { segmentGroupAnatomy } from './segment-group/segment-group.anatomy';
32
+ export { selectAnatomy } from './select/select.anatomy';
33
+ export { signaturePadAnatomy } from './signature-pad/signature-pad.anatomy';
34
+ export { sliderAnatomy } from './slider/slider.anatomy';
35
+ export { splitterAnatomy } from './splitter/splitter.anatomy';
36
+ export { stepsAnatomy } from './steps/steps.anatomy';
37
+ export { switchAnatomy } from './switch/switch.anatomy';
38
+ export { tabsAnatomy } from './tabs/tabs.anatomy';
39
+ export { tagsInputAnatomy } from './tags-input/tags-input.anatomy';
40
+ export { timerAnatomy } from './timer/timer.anatomy';
41
+ export { toastAnatomy } from './toast/toast.anatomy';
42
+ export { toggleAnatomy } from './toggle/toggle.anatomy';
43
+ export { toggleGroupAnatomy } from './toggle-group/toggle-group.anatomy';
44
+ export { tooltipAnatomy } from './tooltip/tooltip.anatomy';
45
+ export { tourAnatomy } from './tour/tour.anatomy';
46
+ export { treeViewAnatomy } from './tree-view/tree-view.anatomy';
@@ -18,6 +18,10 @@
18
18
  }
19
19
  export interface ComboboxRootProviderProps<T extends CollectionItem>
20
20
  extends Assign<HTMLProps<'div'>, ComboboxRootProviderBaseProps<T>> {}
21
+
22
+ export type ComboboxRootProviderComponent<P = {}> = <T extends CollectionItem>(
23
+ props: Assign<ComboboxRootProviderProps<T>, P>,
24
+ ) => Snippet
21
25
  </script>
22
26
 
23
27
  <script lang="ts" generics="T extends CollectionItem">
@@ -11,6 +11,7 @@ export interface ComboboxRootProviderBaseProps<T extends CollectionItem> extends
11
11
  }
12
12
  export interface ComboboxRootProviderProps<T extends CollectionItem> extends Assign<HTMLProps<'div'>, ComboboxRootProviderBaseProps<T>> {
13
13
  }
14
+ export type ComboboxRootProviderComponent<P = {}> = <T extends CollectionItem>(props: Assign<ComboboxRootProviderProps<T>, P>) => Snippet;
14
15
  declare function $$render<T extends CollectionItem>(): {
15
16
  props: ComboboxRootProviderProps<T>;
16
17
  exports: {};
@@ -1,5 +1,6 @@
1
1
  <script module lang="ts">
2
2
  import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types'
3
+ import type { Snippet } from 'svelte'
3
4
  import type { CollectionItem } from '../collection'
4
5
  import type { UsePresenceProps } from '../presence'
5
6
  import type { UseComboboxProps } from './use-combobox.svelte'
@@ -12,6 +13,10 @@
12
13
 
13
14
  export interface ComboboxRootProps<T extends CollectionItem>
14
15
  extends Assign<HTMLProps<'div'>, ComboboxRootBaseProps<T>> {}
16
+
17
+ export type ComboboxRootComponent<P = {}> = <T extends CollectionItem>(
18
+ props: Assign<ComboboxRootProps<T>, P>,
19
+ ) => Snippet
15
20
  </script>
16
21
 
17
22
  <script lang="ts" generics="T extends CollectionItem">
@@ -34,6 +39,7 @@
34
39
  const [useComboboxProps, localProps] = $derived(
35
40
  createSplitProps<UseComboboxProps<T>>()(comboboxProps, [
36
41
  'allowCustomValue',
42
+ 'alwaysSubmitOnEnter',
37
43
  'autoFocus',
38
44
  'closeOnSelect',
39
45
  'collection',
@@ -1,4 +1,5 @@
1
1
  import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types';
2
+ import type { Snippet } from 'svelte';
2
3
  import type { CollectionItem } from '../collection';
3
4
  import type { UsePresenceProps } from '../presence';
4
5
  import type { UseComboboxProps } from './use-combobox.svelte';
@@ -6,6 +7,7 @@ export interface ComboboxRootBaseProps<T extends CollectionItem> extends UseComb
6
7
  }
7
8
  export interface ComboboxRootProps<T extends CollectionItem> extends Assign<HTMLProps<'div'>, ComboboxRootBaseProps<T>> {
8
9
  }
10
+ export type ComboboxRootComponent<P = {}> = <T extends CollectionItem>(props: Assign<ComboboxRootProps<T>, P>) => Snippet;
9
11
  declare function $$render<T extends CollectionItem>(): {
10
12
  props: ComboboxRootProps<T>;
11
13
  exports: {};
@@ -14,6 +14,6 @@ export { default as ItemText, type ComboboxItemTextProps as ItemTextProps, type
14
14
  export { default as Label, type ComboboxLabelProps as LabelProps, type ComboboxLabelBaseProps as LabelBaseProps, } from './combobox-label.svelte';
15
15
  export { default as List, type ComboboxListProps as ListProps, type ComboboxListBaseProps as ListBaseProps, } from './combobox-list.svelte';
16
16
  export { default as Positioner, type ComboboxPositionerProps, type ComboboxPositionerBaseProps, } from './combobox-positioner.svelte';
17
- export { default as Root, type ComboboxRootBaseProps as RootBaseProps, type ComboboxRootProps as RootProps, } from './combobox-root.svelte';
18
- export { default as RootProvider, type ComboboxRootProviderBaseProps as RootProviderBaseProps, type ComboboxRootProviderProps as RootProviderProps, } from './combobox-root-provider.svelte';
17
+ export { default as Root, type ComboboxRootBaseProps as RootBaseProps, type ComboboxRootProps as RootProps, type ComboboxRootComponent as RootComponent, } from './combobox-root.svelte';
18
+ export { default as RootProvider, type ComboboxRootProviderBaseProps as RootProviderBaseProps, type ComboboxRootProviderProps as RootProviderProps, type ComboboxRootProviderComponent as RootProviderComponent, } from './combobox-root-provider.svelte';
19
19
  export { default as Trigger, type ComboboxTriggerProps as TriggerProps, type ComboboxTriggerBaseProps as TriggerBaseProps, } from './combobox-trigger.svelte';
@@ -15,8 +15,8 @@ export { default as ComboboxItemText, type ComboboxItemTextProps, type ComboboxI
15
15
  export { default as ComboboxLabel, type ComboboxLabelProps, type ComboboxLabelBaseProps } from './combobox-label.svelte';
16
16
  export { default as ComboboxList, type ComboboxListProps, type ComboboxListBaseProps } from './combobox-list.svelte';
17
17
  export { default as ComboboxPositioner, type ComboboxPositionerProps, type ComboboxPositionerBaseProps, } from './combobox-positioner.svelte';
18
- export { default as ComboboxRoot, type ComboboxRootBaseProps, type ComboboxRootProps } from './combobox-root.svelte';
19
- export { default as ComboboxRootProvider, type ComboboxRootProviderBaseProps, type ComboboxRootProviderProps, } from './combobox-root-provider.svelte';
18
+ export { default as ComboboxRoot, type ComboboxRootBaseProps, type ComboboxRootProps, type ComboboxRootComponent, } from './combobox-root.svelte';
19
+ export { default as ComboboxRootProvider, type ComboboxRootProviderBaseProps, type ComboboxRootProviderProps, type ComboboxRootProviderComponent, } from './combobox-root-provider.svelte';
20
20
  export { default as ComboboxTrigger, type ComboboxTriggerProps, type ComboboxTriggerBaseProps, } from './combobox-trigger.svelte';
21
21
  export { comboboxAnatomy } from './combobox.anatomy';
22
22
  export { useCombobox, type UseComboboxProps, type UseComboboxReturn } from './use-combobox.svelte';
@@ -14,7 +14,7 @@ export { default as ComboboxItemText, } from './combobox-item-text.svelte';
14
14
  export { default as ComboboxLabel } from './combobox-label.svelte';
15
15
  export { default as ComboboxList } from './combobox-list.svelte';
16
16
  export { default as ComboboxPositioner, } from './combobox-positioner.svelte';
17
- export { default as ComboboxRoot } from './combobox-root.svelte';
17
+ export { default as ComboboxRoot, } from './combobox-root.svelte';
18
18
  export { default as ComboboxRootProvider, } from './combobox-root-provider.svelte';
19
19
  export { default as ComboboxTrigger, } from './combobox-trigger.svelte';
20
20
  export { comboboxAnatomy } from './combobox.anatomy';
@@ -67,6 +67,7 @@ export const useField = (inProps = {}) => {
67
67
  'data-disabled': dataAttr(disabled),
68
68
  'data-invalid': dataAttr(invalid),
69
69
  'data-readonly': dataAttr(readOnly),
70
+ 'data-required': dataAttr(required),
70
71
  for: controlId,
71
72
  });
72
73
  const getControlProps = () => ({
@@ -1,8 +1,8 @@
1
1
  <script module lang="ts">
2
2
  import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types'
3
3
 
4
- export interface FieldsetLegendBaseProps extends PolymorphicProps<'div'>, RefAttribute {}
5
- export interface FieldsetLegendProps extends Assign<HTMLProps<'div'>, FieldsetLegendBaseProps> {}
4
+ export interface FieldsetLegendBaseProps extends PolymorphicProps<'legend'>, RefAttribute {}
5
+ export interface FieldsetLegendProps extends Assign<HTMLProps<'legend'>, FieldsetLegendBaseProps> {}
6
6
  </script>
7
7
 
8
8
  <script lang="ts">
@@ -15,4 +15,4 @@
15
15
  const mergedProps = $derived(mergeProps(fieldset?.().getLegendProps(), props))
16
16
  </script>
17
17
 
18
- <Ark as="div" bind:ref {...mergedProps} />
18
+ <Ark as="legend" bind:ref {...mergedProps} />
@@ -1,7 +1,7 @@
1
1
  import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types';
2
- export interface FieldsetLegendBaseProps extends PolymorphicProps<'div'>, RefAttribute {
2
+ export interface FieldsetLegendBaseProps extends PolymorphicProps<'legend'>, RefAttribute {
3
3
  }
4
- export interface FieldsetLegendProps extends Assign<HTMLProps<'div'>, FieldsetLegendBaseProps> {
4
+ export interface FieldsetLegendProps extends Assign<HTMLProps<'legend'>, FieldsetLegendBaseProps> {
5
5
  }
6
6
  declare const FieldsetLegend: import("svelte").Component<FieldsetLegendProps, {}, "ref">;
7
7
  type FieldsetLegend = ReturnType<typeof FieldsetLegend>;
@@ -1,7 +1,8 @@
1
1
  <script module lang="ts">
2
+ import type { ItemGroupProps } from '@zag-js/file-upload'
2
3
  import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types'
3
4
 
4
- export interface FileUploadItemGroupBaseProps extends PolymorphicProps<'div'>, RefAttribute {}
5
+ export interface FileUploadItemGroupBaseProps extends PolymorphicProps<'div'>, RefAttribute, ItemGroupProps {}
5
6
  export interface FileUploadItemGroupProps extends Assign<HTMLProps<'div'>, FileUploadItemGroupBaseProps> {}
6
7
  </script>
7
8
 
@@ -9,10 +10,16 @@
9
10
  import { mergeProps } from '@zag-js/svelte'
10
11
  import { Ark } from '../factory'
11
12
  import { useFileUploadContext } from './use-file-upload-context'
13
+ import { FileUploadItemGroupPropsProvider } from './use-file-upload-item-group-props-context'
14
+ import { createSplitProps } from '../../utils/create-split-props'
12
15
 
13
16
  let { ref = $bindable(null), ...props }: FileUploadItemGroupProps = $props()
14
17
  const fileUpload = useFileUploadContext()
15
- const mergedProps = $derived(mergeProps(fileUpload().getItemGroupProps(), props))
18
+
19
+ const [itemGroupProps, localProps] = $derived(createSplitProps<ItemGroupProps>()(props, ['type']))
20
+ const mergedProps = $derived(mergeProps(fileUpload().getItemGroupProps(itemGroupProps), localProps))
21
+
22
+ FileUploadItemGroupPropsProvider(() => itemGroupProps)
16
23
  </script>
17
24
 
18
25
  <Ark as="div" bind:ref {...mergedProps} />
@@ -1,5 +1,6 @@
1
+ import type { ItemGroupProps } from '@zag-js/file-upload';
1
2
  import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types';
2
- export interface FileUploadItemGroupBaseProps extends PolymorphicProps<'div'>, RefAttribute {
3
+ export interface FileUploadItemGroupBaseProps extends PolymorphicProps<'div'>, RefAttribute, ItemGroupProps {
3
4
  }
4
5
  export interface FileUploadItemGroupProps extends Assign<HTMLProps<'div'>, FileUploadItemGroupBaseProps> {
5
6
  }
@@ -2,7 +2,9 @@
2
2
  import type { ItemProps } from '@zag-js/file-upload'
3
3
  import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types'
4
4
 
5
- export interface FileUploadItemBaseProps extends ItemProps, PolymorphicProps<'li'>, RefAttribute {}
5
+ type ItemBaseProps = Omit<ItemProps, 'type'>
6
+
7
+ export interface FileUploadItemBaseProps extends ItemBaseProps, PolymorphicProps<'li'>, RefAttribute {}
6
8
  export interface FileUploadItemProps extends Assign<HTMLProps<'li'>, FileUploadItemBaseProps> {}
7
9
  </script>
8
10
 
@@ -12,15 +14,19 @@
12
14
  import { Ark } from '../factory'
13
15
  import { useFileUploadContext } from './use-file-upload-context'
14
16
  import { FileUploadItemPropsProvider } from './use-file-upload-item-props-context'
17
+ import { useFileUploadItemGroupPropsContext } from './use-file-upload-item-group-props-context'
15
18
 
16
19
  let { ref = $bindable(null), ...props }: FileUploadItemProps = $props()
17
20
  const fileUpload = useFileUploadContext()
18
21
 
19
- const [itemProps, localProps] = $derived(createSplitProps<ItemProps>()(props, ['file']))
22
+ const [itemProps, localProps] = $derived(createSplitProps<ItemBaseProps>()(props, ['file']))
23
+
24
+ const itemGroupProps = useFileUploadItemGroupPropsContext()
25
+ const itemPropsWithType = $derived({ ...itemProps, type: itemGroupProps().type })
20
26
 
21
- const mergedProps = $derived(mergeProps(fileUpload().getItemProps(itemProps), localProps))
27
+ const mergedProps = $derived(mergeProps(fileUpload().getItemProps(itemPropsWithType), localProps))
22
28
 
23
- FileUploadItemPropsProvider(() => itemProps)
29
+ FileUploadItemPropsProvider(() => itemPropsWithType)
24
30
  </script>
25
31
 
26
32
  <Ark as="li" bind:ref {...mergedProps} />
@@ -1,6 +1,7 @@
1
1
  import type { ItemProps } from '@zag-js/file-upload';
2
2
  import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types';
3
- export interface FileUploadItemBaseProps extends ItemProps, PolymorphicProps<'li'>, RefAttribute {
3
+ type ItemBaseProps = Omit<ItemProps, 'type'>;
4
+ export interface FileUploadItemBaseProps extends ItemBaseProps, PolymorphicProps<'li'>, RefAttribute {
4
5
  }
5
6
  export interface FileUploadItemProps extends Assign<HTMLProps<'li'>, FileUploadItemBaseProps> {
6
7
  }
@@ -0,0 +1,5 @@
1
+ import type { ItemGroupProps } from '@zag-js/file-upload';
2
+ import type { Accessor } from '../../types';
3
+ export interface UseFileUploadItemGroupPropsContext extends Accessor<ItemGroupProps> {
4
+ }
5
+ export declare const FileUploadItemGroupPropsProvider: (opts: UseFileUploadItemGroupPropsContext) => void, useFileUploadItemGroupPropsContext: (fallback?: UseFileUploadItemGroupPropsContext | undefined) => UseFileUploadItemGroupPropsContext;
@@ -0,0 +1,6 @@
1
+ import { createContext } from '../../utils/create-context';
2
+ export const [FileUploadItemGroupPropsProvider, useFileUploadItemGroupPropsContext] = createContext({
3
+ name: 'FileUploadItemGroupPropsContext',
4
+ hookName: 'useFileUploadItemGroupPropsContext',
5
+ providerName: '<FileUploadItemGroupPropsProvider />',
6
+ });
@@ -60,12 +60,14 @@
60
60
  if (!win || !mountNode) return
61
61
 
62
62
  const exec = () => {
63
- if (!(mountNode && frameRef && frameRef.contentDocument)) return
64
-
65
- const rootEl = frameRef.contentDocument?.documentElement
66
- if (!rootEl) return
67
- frameRef.style.setProperty('--width', `${mountNode.scrollWidth}px`)
68
- frameRef.style.setProperty('--height', `${mountNode.scrollHeight}px`)
63
+ win.requestAnimationFrame(() => {
64
+ if (!(mountNode && frameRef && frameRef.contentDocument)) return
65
+
66
+ const rootEl = frameRef.contentDocument?.documentElement
67
+ if (!rootEl) return
68
+ frameRef.style.setProperty('--width', `${mountNode.scrollWidth}px`)
69
+ frameRef.style.setProperty('--height', `${mountNode.scrollHeight}px`)
70
+ })
69
71
  }
70
72
 
71
73
  const resizeObserver = new win.ResizeObserver(exec)
@@ -11,8 +11,8 @@ export { default as ListboxItemGroupLabel, type ListboxItemGroupLabelBaseProps,
11
11
  export { default as ListboxItemIndicator, type ListboxItemIndicatorBaseProps, type ListboxItemIndicatorProps, } from './listbox-item-indicator.svelte';
12
12
  export { default as ListboxItemText, type ListboxItemTextBaseProps, type ListboxItemTextProps, } from './listbox-item-text.svelte';
13
13
  export { default as ListboxLabel, type ListboxLabelBaseProps, type ListboxLabelProps } from './listbox-label.svelte';
14
- export { default as ListboxRoot, type ListboxRootBaseProps, type ListboxRootProps } from './listbox-root.svelte';
15
- export { default as ListboxRootProvider, type ListboxRootProviderBaseProps, type ListboxRootProviderProps, } from './listbox-root-provider.svelte';
14
+ export { default as ListboxRoot, type ListboxRootBaseProps, type ListboxRootProps, type ListboxRootComponent, } from './listbox-root.svelte';
15
+ export { default as ListboxRootProvider, type ListboxRootProviderBaseProps, type ListboxRootProviderProps, type ListboxRootProviderComponent, } from './listbox-root-provider.svelte';
16
16
  export { default as ListboxValueText, type ListboxValueTextBaseProps, type ListboxValueTextProps, } from './listbox-value-text.svelte';
17
17
  export { listboxAnatomy } from './listbox.anatomy.js';
18
18
  export { useListbox, type UseListboxProps, type UseListboxReturn } from './use-listbox.svelte.js';
@@ -10,7 +10,7 @@ export { default as ListboxItemGroupLabel, } from './listbox-item-group-label.sv
10
10
  export { default as ListboxItemIndicator, } from './listbox-item-indicator.svelte';
11
11
  export { default as ListboxItemText, } from './listbox-item-text.svelte';
12
12
  export { default as ListboxLabel } from './listbox-label.svelte';
13
- export { default as ListboxRoot } from './listbox-root.svelte';
13
+ export { default as ListboxRoot, } from './listbox-root.svelte';
14
14
  export { default as ListboxRootProvider, } from './listbox-root-provider.svelte';
15
15
  export { default as ListboxValueText, } from './listbox-value-text.svelte';
16
16
  export { listboxAnatomy } from './listbox.anatomy.js';
@@ -1,4 +1,6 @@
1
1
  <script lang="ts" module>
2
+ import type { Snippet } from 'svelte'
3
+
2
4
  interface RootProviderProps<T extends CollectionItem> {
3
5
  value: UseListboxReturn<T>
4
6
  }
@@ -8,6 +10,10 @@
8
10
  RootProviderProps<T> {}
9
11
  export interface ListboxRootProviderProps<T extends CollectionItem>
10
12
  extends Assign<HTMLProps<'div'>, ListboxRootProviderBaseProps<T>> {}
13
+
14
+ export type ListboxRootProviderComponent<P = {}> = <T extends CollectionItem>(
15
+ props: Assign<ListboxRootProviderProps<T>, P>,
16
+ ) => Snippet
11
17
  </script>
12
18
 
13
19
  <script lang="ts" generics="T extends CollectionItem">
@@ -1,3 +1,4 @@
1
+ import type { Snippet } from 'svelte';
1
2
  interface RootProviderProps<T extends CollectionItem> {
2
3
  value: UseListboxReturn<T>;
3
4
  }
@@ -5,6 +6,7 @@ export interface ListboxRootProviderBaseProps<T extends CollectionItem> extends
5
6
  }
6
7
  export interface ListboxRootProviderProps<T extends CollectionItem> extends Assign<HTMLProps<'div'>, ListboxRootProviderBaseProps<T>> {
7
8
  }
9
+ export type ListboxRootProviderComponent<P = {}> = <T extends CollectionItem>(props: Assign<ListboxRootProviderProps<T>, P>) => Snippet;
8
10
  import type { Assign, HTMLProps, PolymorphicProps } from '../../types.js';
9
11
  import type { CollectionItem } from '../collection/index.js';
10
12
  import type { UseListboxReturn } from './use-listbox.svelte.js';
@@ -1,16 +1,26 @@
1
- <script lang="ts" generics="T extends CollectionItem">
1
+ <script lang="ts" module>
2
+ import type { Snippet } from 'svelte'
3
+
2
4
  import type { Assign, HTMLProps, PolymorphicProps } from '../../types.js'
3
- import { mergeProps } from '@zag-js/svelte'
4
5
  import type { CollectionItem } from '../collection/index.js'
5
- import { Ark } from '../factory/index.js'
6
- import { ListboxProvider } from './use-listbox-context.js'
7
- import { type UseListboxProps, useListbox } from './use-listbox.svelte.js'
8
- import { createSplitProps } from '../../utils/create-split-props.js'
6
+ import type { UseListboxProps } from './use-listbox.svelte.js'
9
7
 
10
8
  export interface ListboxRootBaseProps<T extends CollectionItem> extends UseListboxProps<T>, PolymorphicProps<'div'> {}
11
9
  export interface ListboxRootProps<T extends CollectionItem>
12
10
  extends Assign<HTMLProps<'div'>, ListboxRootBaseProps<T>> {}
13
11
 
12
+ export type ListboxRootComponent<P = {}> = <T extends CollectionItem>(
13
+ props: Assign<ListboxRootProps<T>, P>,
14
+ ) => Snippet
15
+ </script>
16
+
17
+ <script lang="ts" generics="T extends CollectionItem">
18
+ import { mergeProps } from '@zag-js/svelte'
19
+ import { Ark } from '../factory/index.js'
20
+ import { ListboxProvider } from './use-listbox-context.js'
21
+ import { useListbox } from './use-listbox.svelte.js'
22
+ import { createSplitProps } from '../../utils/create-split-props.js'
23
+
14
24
  let { highlightedValue = $bindable(), value = $bindable(), ...props }: ListboxRootProps<T> = $props()
15
25
  const providedId = $props.id()
16
26
 
@@ -1,10 +1,12 @@
1
+ import type { Snippet } from 'svelte';
1
2
  import type { Assign, HTMLProps, PolymorphicProps } from '../../types.js';
2
3
  import type { CollectionItem } from '../collection/index.js';
3
- import { type UseListboxProps } from './use-listbox.svelte.js';
4
+ import type { UseListboxProps } from './use-listbox.svelte.js';
4
5
  export interface ListboxRootBaseProps<T extends CollectionItem> extends UseListboxProps<T>, PolymorphicProps<'div'> {
5
6
  }
6
7
  export interface ListboxRootProps<T extends CollectionItem> extends Assign<HTMLProps<'div'>, ListboxRootBaseProps<T>> {
7
8
  }
9
+ export type ListboxRootComponent<P = {}> = <T extends CollectionItem>(props: Assign<ListboxRootProps<T>, P>) => Snippet;
8
10
  declare function $$render<T extends CollectionItem>(): {
9
11
  props: ListboxRootProps<T>;
10
12
  exports: {};
@@ -9,6 +9,6 @@ export { default as ItemGroupLabel, type ListboxItemGroupLabelBaseProps as ItemG
9
9
  export { default as ItemIndicator, type ListboxItemIndicatorBaseProps as ItemIndicatorBaseProps, type ListboxItemIndicatorProps as ItemIndicatorProps, } from './listbox-item-indicator.svelte';
10
10
  export { default as ItemText, type ListboxItemTextBaseProps as ItemTextBaseProps, type ListboxItemTextProps as ItemTextProps, } from './listbox-item-text.svelte';
11
11
  export { default as Label, type ListboxLabelBaseProps as LabelBaseProps, type ListboxLabelProps as LabelProps, } from './listbox-label.svelte';
12
- export { default as Root, type ListboxRootBaseProps as RootBaseProps, type ListboxRootProps as RootProps, } from './listbox-root.svelte';
13
- export { default as RootProvider, type ListboxRootProviderBaseProps as RootProviderBaseProps, type ListboxRootProviderProps as RootProviderProps, } from './listbox-root-provider.svelte';
12
+ export { default as Root, type ListboxRootBaseProps as RootBaseProps, type ListboxRootProps as RootProps, type ListboxRootComponent as RootComponent, } from './listbox-root.svelte';
13
+ export { default as RootProvider, type ListboxRootProviderBaseProps as RootProviderBaseProps, type ListboxRootProviderProps as RootProviderProps, type ListboxRootProviderComponent as RootProviderComponent, } from './listbox-root-provider.svelte';
14
14
  export { default as ValueText, type ListboxValueTextBaseProps as ValueTextBaseProps, type ListboxValueTextProps as ValueTextProps, } from './listbox-value-text.svelte';
@@ -9,11 +9,14 @@
9
9
  import { mergeProps } from '@zag-js/svelte'
10
10
  import { Ark } from '../factory'
11
11
  import { useMenuTriggerItemContext } from './use-menu-trigger-item-context'
12
+ import { MenuItemPropsProvider } from './use-menu-option-item-props-context'
12
13
 
13
14
  let { ref = $bindable(null), ...props }: MenuTriggerItemProps = $props()
14
15
 
15
16
  const getTriggerItemProps = useMenuTriggerItemContext()
16
17
  const mergedProps = $derived(mergeProps(getTriggerItemProps?.() ?? {}, props))
18
+
19
+ MenuItemPropsProvider(() => ({ value: mergedProps['data-value'] }))
17
20
  </script>
18
21
 
19
22
  <Ark as="div" bind:ref {...mergedProps} />
@@ -15,8 +15,8 @@ export { default as SelectItemText, type SelectItemTextBaseProps, type SelectIte
15
15
  export { default as SelectLabel, type SelectLabelBaseProps, type SelectLabelProps } from './select-label.svelte';
16
16
  export { default as SelectList, type SelectListBaseProps, type SelectListProps } from './select-list.svelte';
17
17
  export { default as SelectPositioner, type SelectPositionerBaseProps, type SelectPositionerProps, } from './select-positioner.svelte';
18
- export { default as SelectRoot, type SelectRootBaseProps, type SelectRootProps } from './select-root.svelte';
19
- export { default as SelectRootProvider, type SelectRootProviderBaseProps, type SelectRootProviderProps, } from './select-root-provider.svelte';
18
+ export { default as SelectRoot, type SelectRootBaseProps, type SelectRootProps, type SelectRootComponent, } from './select-root.svelte';
19
+ export { default as SelectRootProvider, type SelectRootProviderBaseProps, type SelectRootProviderProps, type SelectRootProviderComponent, } from './select-root-provider.svelte';
20
20
  export { default as SelectTrigger, type SelectTriggerBaseProps, type SelectTriggerProps } from './select-trigger.svelte';
21
21
  export { default as SelectValueText, type SelectValueTextBaseProps, type SelectValueTextProps, } from './select-value-text.svelte';
22
22
  export { selectAnatomy } from './select.anatomy';
@@ -14,7 +14,7 @@ export { default as SelectItemText, } from './select-item-text.svelte';
14
14
  export { default as SelectLabel } from './select-label.svelte';
15
15
  export { default as SelectList } from './select-list.svelte';
16
16
  export { default as SelectPositioner, } from './select-positioner.svelte';
17
- export { default as SelectRoot } from './select-root.svelte';
17
+ export { default as SelectRoot, } from './select-root.svelte';
18
18
  export { default as SelectRootProvider, } from './select-root-provider.svelte';
19
19
  export { default as SelectTrigger } from './select-trigger.svelte';
20
20
  export { default as SelectValueText, } from './select-value-text.svelte';
@@ -12,6 +12,10 @@
12
12
 
13
13
  export interface SelectRootProviderProps<T extends CollectionItem = CollectionItem>
14
14
  extends Assign<HTMLProps<'div'>, SelectRootProviderBaseProps<T>> {}
15
+
16
+ export type SelectRootProviderComponent<P = {}> = <T extends CollectionItem>(
17
+ props: Assign<SelectRootProviderProps<T>, P>,
18
+ ) => Snippet
15
19
  </script>
16
20
 
17
21
  <script lang="ts" generics="T extends CollectionItem = CollectionItem">
@@ -19,6 +23,7 @@
19
23
  import { Ark } from '../factory'
20
24
  import { SelectProvider } from './use-select-context'
21
25
  import { PresenceProvider, splitPresenceProps, usePresence, type UsePresenceProps } from '../presence'
26
+ import type { Snippet } from 'svelte'
22
27
 
23
28
  let { ref = $bindable(null), ...props }: SelectRootProviderProps<T> = $props()
24
29
 
@@ -6,7 +6,9 @@ export interface SelectRootProviderBaseProps<T extends CollectionItem = Collecti
6
6
  }
7
7
  export interface SelectRootProviderProps<T extends CollectionItem = CollectionItem> extends Assign<HTMLProps<'div'>, SelectRootProviderBaseProps<T>> {
8
8
  }
9
+ export type SelectRootProviderComponent<P = {}> = <T extends CollectionItem>(props: Assign<SelectRootProviderProps<T>, P>) => Snippet;
9
10
  import { type UsePresenceProps } from '../presence';
11
+ import type { Snippet } from 'svelte';
10
12
  declare function $$render<T extends CollectionItem = CollectionItem>(): {
11
13
  props: SelectRootProviderProps<T>;
12
14
  exports: {};
@@ -1,5 +1,6 @@
1
1
  <script module lang="ts">
2
2
  import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types'
3
+ import type { Snippet } from 'svelte'
3
4
  import type { CollectionItem } from '../collection'
4
5
  import type { UseSelectProps } from './use-select.svelte'
5
6
 
@@ -11,6 +12,8 @@
11
12
 
12
13
  export interface SelectRootProps<T extends CollectionItem = CollectionItem>
13
14
  extends Assign<HTMLProps<'div'>, SelectRootBaseProps<T>> {}
15
+
16
+ export type SelectRootComponent<P = {}> = <T extends CollectionItem>(props: Assign<SelectRootProps<T>, P>) => Snippet
14
17
  </script>
15
18
 
16
19
  <script lang="ts" generics="T extends CollectionItem = CollectionItem">
@@ -1,10 +1,12 @@
1
1
  import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types';
2
+ import type { Snippet } from 'svelte';
2
3
  import type { CollectionItem } from '../collection';
3
4
  import type { UseSelectProps } from './use-select.svelte';
4
5
  export interface SelectRootBaseProps<T extends CollectionItem = CollectionItem> extends UseSelectProps<T>, UsePresenceProps, PolymorphicProps<'div'>, RefAttribute {
5
6
  }
6
7
  export interface SelectRootProps<T extends CollectionItem = CollectionItem> extends Assign<HTMLProps<'div'>, SelectRootBaseProps<T>> {
7
8
  }
9
+ export type SelectRootComponent<P = {}> = <T extends CollectionItem>(props: Assign<SelectRootProps<T>, P>) => Snippet;
8
10
  import { type UsePresenceProps } from '../presence';
9
11
  declare function $$render<T extends CollectionItem = CollectionItem>(): {
10
12
  props: SelectRootProps<T>;
@@ -15,7 +15,7 @@ export { default as Item, type SelectItemProps as ItemProps } from './select-ite
15
15
  export { default as Label, type SelectLabelProps as LabelProps } from './select-label.svelte';
16
16
  export { default as List, type SelectListProps as ListProps } from './select-list.svelte';
17
17
  export { default as Positioner, type SelectPositionerProps as PositionerProps } from './select-positioner.svelte';
18
- export { default as RootProvider, type SelectRootProviderBaseProps as RootProviderBaseProps, type SelectRootProviderProps as RootProviderProps, } from './select-root-provider.svelte';
19
- export { default as Root, type SelectRootBaseProps as RootBaseProps, type SelectRootProps as RootProps, } from './select-root.svelte';
18
+ export { default as RootProvider, type SelectRootProviderBaseProps as RootProviderBaseProps, type SelectRootProviderProps as RootProviderProps, type SelectRootProviderComponent as RootProviderComponent, } from './select-root-provider.svelte';
19
+ export { default as Root, type SelectRootBaseProps as RootBaseProps, type SelectRootProps as RootProps, type SelectRootComponent as RootComponent, } from './select-root.svelte';
20
20
  export { default as Trigger, type SelectTriggerProps as TriggerProps } from './select-trigger.svelte';
21
21
  export { default as ValueText, type SelectValueTextProps as ValueTextProps } from './select-value-text.svelte';
@@ -16,8 +16,8 @@ export { default as TreeViewNodeContext, type TreeViewNodeContextProps } from '.
16
16
  export { default as TreeViewNodeCheckbox, type TreeViewNodeCheckboxBaseProps, type TreeViewNodeCheckboxProps, } from './tree-view-node-checkbox.svelte';
17
17
  export { default as TreeViewNodeCheckboxIndicator, type TreeViewNodeCheckboxIndicatorBaseProps, type TreeViewNodeCheckboxIndicatorProps, } from './tree-view-node-checkbox-indicator.svelte';
18
18
  export { default as TreeViewNodeProvider, type TreeViewNodeProviderBaseProps, type TreeViewNodeProviderProps, } from './tree-view-node-provider.svelte';
19
- export { default as TreeViewRoot, type TreeViewRootBaseProps, type TreeViewRootProps } from './tree-view-root.svelte';
20
- export { default as TreeViewRootProvider, type TreeViewRootProviderBaseProps, type TreeViewRootProviderProps, } from './tree-view-root-provider.svelte';
19
+ export { default as TreeViewRoot, type TreeViewRootBaseProps, type TreeViewRootComponent, type TreeViewRootProps, } from './tree-view-root.svelte';
20
+ export { default as TreeViewRootProvider, type TreeViewRootProviderBaseProps, type TreeViewRootProviderComponent, type TreeViewRootProviderProps, } from './tree-view-root-provider.svelte';
21
21
  export { default as TreeViewTree, type TreeViewTreeBaseProps, type TreeViewTreeProps } from './tree-view-tree.svelte';
22
22
  export { treeViewAnatomy } from './tree-view.anatomy';
23
23
  export { useTreeViewContext } from './use-tree-view-context';
@@ -15,7 +15,7 @@ export { default as TreeViewNodeContext } from './tree-view-node-context.svelte'
15
15
  export { default as TreeViewNodeCheckbox, } from './tree-view-node-checkbox.svelte';
16
16
  export { default as TreeViewNodeCheckboxIndicator, } from './tree-view-node-checkbox-indicator.svelte';
17
17
  export { default as TreeViewNodeProvider, } from './tree-view-node-provider.svelte';
18
- export { default as TreeViewRoot } from './tree-view-root.svelte';
18
+ export { default as TreeViewRoot, } from './tree-view-root.svelte';
19
19
  export { default as TreeViewRootProvider, } from './tree-view-root-provider.svelte';
20
20
  export { default as TreeViewTree } from './tree-view-tree.svelte';
21
21
  export { treeViewAnatomy } from './tree-view.anatomy';
@@ -1,5 +1,6 @@
1
1
  <script module lang="ts">
2
2
  import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types'
3
+ import type { Snippet } from 'svelte'
3
4
  import type { TreeNode } from '../collection'
4
5
  import type { UseTreeViewReturn } from './use-tree-view.svelte'
5
6
 
@@ -11,6 +12,10 @@
11
12
  }
12
13
  export interface TreeViewRootProviderProps<T extends TreeNode>
13
14
  extends Assign<HTMLProps<'div'>, TreeViewRootProviderBaseProps<T>> {}
15
+
16
+ export type TreeViewRootProviderComponent<P = {}> = <T extends TreeNode>(
17
+ props: Assign<TreeViewRootProviderProps<T>, P>,
18
+ ) => Snippet
14
19
  </script>
15
20
 
16
21
  <script lang="ts" generics="T extends TreeNode">
@@ -1,4 +1,5 @@
1
1
  import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types';
2
+ import type { Snippet } from 'svelte';
2
3
  import type { TreeNode } from '../collection';
3
4
  import type { UseTreeViewReturn } from './use-tree-view.svelte';
4
5
  export interface TreeViewRootProviderBaseProps<T extends TreeNode> extends RenderStrategyProps, PolymorphicProps<'div'>, RefAttribute {
@@ -6,6 +7,7 @@ export interface TreeViewRootProviderBaseProps<T extends TreeNode> extends Rende
6
7
  }
7
8
  export interface TreeViewRootProviderProps<T extends TreeNode> extends Assign<HTMLProps<'div'>, TreeViewRootProviderBaseProps<T>> {
8
9
  }
10
+ export type TreeViewRootProviderComponent<P = {}> = <T extends TreeNode>(props: Assign<TreeViewRootProviderProps<T>, P>) => Snippet;
9
11
  import { type RenderStrategyProps } from '../../utils/render-strategy';
10
12
  declare function $$render<T extends TreeNode>(): {
11
13
  props: TreeViewRootProviderProps<T>;
@@ -1,5 +1,6 @@
1
1
  <script module lang="ts">
2
2
  import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types'
3
+ import type { Snippet } from 'svelte'
3
4
  import type { TreeNode } from '../collection'
4
5
  import type { UseTreeViewProps } from './use-tree-view.svelte'
5
6
 
@@ -10,6 +11,8 @@
10
11
  RefAttribute {}
11
12
 
12
13
  export interface TreeViewRootProps<T extends TreeNode> extends Assign<HTMLProps<'div'>, TreeViewRootBaseProps<T>> {}
14
+
15
+ export type TreeViewRootComponent<P = {}> = <T extends TreeNode>(props: Assign<TreeViewRootProps<T>, P>) => Snippet
13
16
  </script>
14
17
 
15
18
  <script lang="ts" generics="T extends TreeNode">
@@ -1,10 +1,12 @@
1
1
  import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types';
2
+ import type { Snippet } from 'svelte';
2
3
  import type { TreeNode } from '../collection';
3
4
  import type { UseTreeViewProps } from './use-tree-view.svelte';
4
5
  export interface TreeViewRootBaseProps<T extends TreeNode> extends UseTreeViewProps<T>, RenderStrategyProps, PolymorphicProps<'div'>, RefAttribute {
5
6
  }
6
7
  export interface TreeViewRootProps<T extends TreeNode> extends Assign<HTMLProps<'div'>, TreeViewRootBaseProps<T>> {
7
8
  }
9
+ export type TreeViewRootComponent<P = {}> = <T extends TreeNode>(props: Assign<TreeViewRootProps<T>, P>) => Snippet;
8
10
  import { type RenderStrategyProps } from '../../utils/render-strategy';
9
11
  declare function $$render<T extends TreeNode>(): {
10
12
  props: TreeViewRootProps<T>;
@@ -15,6 +15,6 @@ export { default as NodeCheckbox, type TreeViewNodeCheckboxBaseProps as NodeChec
15
15
  export { default as NodeCheckboxIndicator, type TreeViewNodeCheckboxIndicatorBaseProps as NodeCheckboxIndicatorBaseProps, type TreeViewNodeCheckboxIndicatorProps as NodeCheckboxIndicatorProps, } from './tree-view-node-checkbox-indicator.svelte';
16
16
  export { default as NodeContext, type TreeViewNodeContextProps as NodeContextProps, } from './tree-view-node-context.svelte';
17
17
  export { default as NodeProvider, type TreeViewNodeProviderBaseProps as NodeProviderBaseProps, type TreeViewNodeProviderProps as NodeProviderProps, } from './tree-view-node-provider.svelte';
18
- export { default as Root, type TreeViewRootBaseProps as RootBaseProps, type TreeViewRootProps as RootProps, } from './tree-view-root.svelte';
19
- export { default as RootProvider, type TreeViewRootProviderBaseProps as RootProviderBaseProps, type TreeViewRootProviderProps as RootProviderProps, } from './tree-view-root-provider.svelte';
18
+ export { default as Root, type TreeViewRootBaseProps as RootBaseProps, type TreeViewRootComponent as RootComponent, type TreeViewRootProps as RootProps, } from './tree-view-root.svelte';
19
+ export { default as RootProvider, type TreeViewRootProviderBaseProps as RootProviderBaseProps, type TreeViewRootProviderComponent as RootProviderComponent, type TreeViewRootProviderProps as RootProviderProps, } from './tree-view-root-provider.svelte';
20
20
  export { default as Tree, type TreeViewTreeBaseProps as TreeBaseProps, type TreeViewTreeProps as TreeProps, } from './tree-view-tree.svelte';
@@ -0,0 +1,34 @@
1
+ /**
2
+ * SourceMap interface for transformation output
3
+ */
4
+ interface SourceMap {
5
+ version: number;
6
+ sources: string[];
7
+ names: string[];
8
+ sourceRoot?: string;
9
+ sourcesContent?: string[];
10
+ mappings: string;
11
+ file: string;
12
+ }
13
+ /**
14
+ * Plugin interface matching Vite/Rollup plugin structure
15
+ */
16
+ interface SveltePlugin {
17
+ name: string;
18
+ transform: (code: string, id: string) => TransformResult | null | undefined;
19
+ }
20
+ /**
21
+ * Result of the transform operation
22
+ */
23
+ interface TransformResult {
24
+ code: string;
25
+ map?: SourceMap | null;
26
+ }
27
+ /**
28
+ * Creates a Vite/Svelte plugin that optimizes lucide-svelte imports by converting
29
+ * destructured imports to direct imports for better tree-shaking
30
+ *
31
+ * @returns A Svelte plugin that transforms lucide-svelte imports
32
+ */
33
+ export declare function lucideOptimizeImports(): SveltePlugin;
34
+ export {};
@@ -0,0 +1,90 @@
1
+ // Pre-compile regex for better performance
2
+ const LUCIDE_IMPORT_PATTERN = /([ \t]*)import\s+\{\s*([^}]+)\s*\}\s+from\s+['"]lucide-svelte['"]/g;
3
+ /**
4
+ * Creates a Vite/Svelte plugin that optimizes lucide-svelte imports by converting
5
+ * destructured imports to direct imports for better tree-shaking
6
+ *
7
+ * @returns A Svelte plugin that transforms lucide-svelte imports
8
+ */
9
+ export function lucideOptimizeImports() {
10
+ return {
11
+ name: 'lucide-svelte-optimizer',
12
+ transform(sourceCode, filePath) {
13
+ if (!isValidInput(sourceCode, filePath))
14
+ return null;
15
+ try {
16
+ // Quick check if the file contains lucide-svelte imports
17
+ if (!sourceCode.includes('lucide-svelte'))
18
+ return null;
19
+ const { transformedCode, hasChanges } = transformLucideImports(sourceCode);
20
+ if (hasChanges) {
21
+ return {
22
+ code: transformedCode,
23
+ map: null, // No source maps in this implementation
24
+ };
25
+ }
26
+ return null;
27
+ }
28
+ catch (error) {
29
+ handleTransformError(error);
30
+ return null;
31
+ }
32
+ },
33
+ };
34
+ }
35
+ /**
36
+ * Validates the input parameters for processing
37
+ */
38
+ function isValidInput(code, id) {
39
+ return Boolean(code && id);
40
+ }
41
+ /**
42
+ * Transforms lucide-svelte imports from destructured to individual imports
43
+ */
44
+ function transformLucideImports(sourceCode) {
45
+ let hasChanges = false;
46
+ const transformedCode = sourceCode.replace(LUCIDE_IMPORT_PATTERN, (match, indentation, importNames) => {
47
+ if (!importNames.trim())
48
+ return match;
49
+ const semicolonAtEnd = match.endsWith(';');
50
+ const individualImports = convertToIndividualImports(importNames, indentation, semicolonAtEnd);
51
+ if (individualImports) {
52
+ hasChanges = true;
53
+ return individualImports;
54
+ }
55
+ return match;
56
+ });
57
+ return { transformedCode, hasChanges };
58
+ }
59
+ /**
60
+ * Converts a comma-separated list of imports to individual import statements
61
+ */
62
+ function convertToIndividualImports(importNames, indentation, withSemicolon) {
63
+ return importNames
64
+ .split(',')
65
+ .map((name) => name.trim())
66
+ .filter(Boolean)
67
+ .map((name) => {
68
+ const kebabCasePath = convertToKebabCase(name);
69
+ const semicolon = withSemicolon ? ';' : '';
70
+ return `${indentation}import ${name} from 'lucide-svelte/icons/${kebabCasePath}'${semicolon}`;
71
+ })
72
+ .join('\n');
73
+ }
74
+ /**
75
+ * Converts a camelCase or PascalCase string to kebab-case
76
+ */
77
+ function convertToKebabCase(str) {
78
+ return str
79
+ .replace(/Icon$/, '') // Remove 'Icon' suffix
80
+ .replace(/([a-z])([A-Z])/g, '$1-$2') // Add hyphen between lowercase and uppercase letters
81
+ .replace(/([a-zA-Z])(\d)/g, '$1-$2') // Add hyphen before numbers
82
+ .toLowerCase();
83
+ }
84
+ /**
85
+ * Handles and logs transformation errors
86
+ */
87
+ function handleTransformError(error) {
88
+ const typedError = error instanceof Error ? error : new Error(String(error));
89
+ console.error('Error in lucide-svelte-optimizer plugin:', typedError);
90
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ark-ui/svelte",
3
3
  "type": "module",
4
- "version": "5.7.0",
4
+ "version": "5.9.0",
5
5
  "description": "A collection of unstyled, accessible UI components for Svelte",
6
6
  "keywords": [
7
7
  "accordion",
@@ -119,90 +119,92 @@
119
119
  },
120
120
  "sideEffects": false,
121
121
  "dependencies": {
122
- "@internationalized/date": "3.8.2",
123
- "@zag-js/accordion": "1.22.1",
124
- "@zag-js/anatomy": "1.22.1",
125
- "@zag-js/angle-slider": "1.22.1",
126
- "@zag-js/async-list": "1.22.1",
127
- "@zag-js/auto-resize": "1.22.1",
128
- "@zag-js/avatar": "1.22.1",
129
- "@zag-js/carousel": "1.22.1",
130
- "@zag-js/checkbox": "1.22.1",
131
- "@zag-js/clipboard": "1.22.1",
132
- "@zag-js/collapsible": "1.22.1",
133
- "@zag-js/collection": "1.22.1",
134
- "@zag-js/color-picker": "1.22.1",
135
- "@zag-js/color-utils": "1.22.1",
136
- "@zag-js/combobox": "1.22.1",
137
- "@zag-js/core": "1.22.1",
138
- "@zag-js/date-picker": "1.22.1",
139
- "@zag-js/date-utils": "1.22.1",
140
- "@zag-js/dialog": "1.22.1",
141
- "@zag-js/dom-query": "1.22.1",
142
- "@zag-js/editable": "1.22.1",
143
- "@zag-js/file-upload": "1.22.1",
144
- "@zag-js/file-utils": "1.22.1",
145
- "@zag-js/floating-panel": "1.22.1",
146
- "@zag-js/focus-trap": "1.22.1",
147
- "@zag-js/highlight-word": "1.22.1",
148
- "@zag-js/hover-card": "1.22.1",
149
- "@zag-js/i18n-utils": "1.22.1",
150
- "@zag-js/json-tree-utils": "1.22.1",
151
- "@zag-js/listbox": "1.22.1",
152
- "@zag-js/menu": "1.22.1",
153
- "@zag-js/number-input": "1.22.1",
154
- "@zag-js/pagination": "1.22.1",
155
- "@zag-js/password-input": "1.22.1",
156
- "@zag-js/pin-input": "1.22.1",
157
- "@zag-js/popover": "1.22.1",
158
- "@zag-js/presence": "1.22.1",
159
- "@zag-js/progress": "1.22.1",
160
- "@zag-js/qr-code": "1.22.1",
161
- "@zag-js/radio-group": "1.22.1",
162
- "@zag-js/rating-group": "1.22.1",
163
- "@zag-js/scroll-area": "1.22.1",
164
- "@zag-js/select": "1.22.1",
165
- "@zag-js/signature-pad": "1.22.1",
166
- "@zag-js/slider": "1.22.1",
167
- "@zag-js/splitter": "1.22.1",
168
- "@zag-js/steps": "1.22.1",
169
- "@zag-js/svelte": "1.22.1",
170
- "@zag-js/switch": "1.22.1",
171
- "@zag-js/tabs": "1.22.1",
172
- "@zag-js/tags-input": "1.22.1",
173
- "@zag-js/time-picker": "1.22.1",
174
- "@zag-js/timer": "1.22.1",
175
- "@zag-js/toast": "1.22.1",
176
- "@zag-js/toggle": "1.22.1",
177
- "@zag-js/toggle-group": "1.22.1",
178
- "@zag-js/tooltip": "1.22.1",
179
- "@zag-js/tour": "1.22.1",
180
- "@zag-js/tree-view": "1.22.1",
181
- "@zag-js/types": "1.22.1",
182
- "@zag-js/utils": "1.22.1"
122
+ "@internationalized/date": "3.9.0",
123
+ "@zag-js/accordion": "1.24.0",
124
+ "@zag-js/anatomy": "1.24.0",
125
+ "@zag-js/angle-slider": "1.24.0",
126
+ "@zag-js/async-list": "1.24.0",
127
+ "@zag-js/auto-resize": "1.24.0",
128
+ "@zag-js/avatar": "1.24.0",
129
+ "@zag-js/carousel": "1.24.0",
130
+ "@zag-js/checkbox": "1.24.0",
131
+ "@zag-js/clipboard": "1.24.0",
132
+ "@zag-js/collapsible": "1.24.0",
133
+ "@zag-js/collection": "1.24.0",
134
+ "@zag-js/color-picker": "1.24.0",
135
+ "@zag-js/color-utils": "1.24.0",
136
+ "@zag-js/combobox": "1.24.0",
137
+ "@zag-js/core": "1.24.0",
138
+ "@zag-js/date-picker": "1.24.0",
139
+ "@zag-js/date-utils": "1.24.0",
140
+ "@zag-js/dialog": "1.24.0",
141
+ "@zag-js/dom-query": "1.24.0",
142
+ "@zag-js/editable": "1.24.0",
143
+ "@zag-js/file-upload": "1.24.0",
144
+ "@zag-js/file-utils": "1.24.0",
145
+ "@zag-js/floating-panel": "1.24.0",
146
+ "@zag-js/focus-trap": "1.24.0",
147
+ "@zag-js/highlight-word": "1.24.0",
148
+ "@zag-js/hover-card": "1.24.0",
149
+ "@zag-js/i18n-utils": "1.24.0",
150
+ "@zag-js/json-tree-utils": "1.24.0",
151
+ "@zag-js/listbox": "1.24.0",
152
+ "@zag-js/menu": "1.24.0",
153
+ "@zag-js/number-input": "1.24.0",
154
+ "@zag-js/pagination": "1.24.0",
155
+ "@zag-js/password-input": "1.24.0",
156
+ "@zag-js/pin-input": "1.24.0",
157
+ "@zag-js/popover": "1.24.0",
158
+ "@zag-js/presence": "1.24.0",
159
+ "@zag-js/progress": "1.24.0",
160
+ "@zag-js/qr-code": "1.24.0",
161
+ "@zag-js/radio-group": "1.24.0",
162
+ "@zag-js/rating-group": "1.24.0",
163
+ "@zag-js/scroll-area": "1.24.0",
164
+ "@zag-js/select": "1.24.0",
165
+ "@zag-js/signature-pad": "1.24.0",
166
+ "@zag-js/slider": "1.24.0",
167
+ "@zag-js/splitter": "1.24.0",
168
+ "@zag-js/steps": "1.24.0",
169
+ "@zag-js/svelte": "1.24.0",
170
+ "@zag-js/switch": "1.24.0",
171
+ "@zag-js/tabs": "1.24.0",
172
+ "@zag-js/tags-input": "1.24.0",
173
+ "@zag-js/timer": "1.24.0",
174
+ "@zag-js/toast": "1.24.0",
175
+ "@zag-js/toggle": "1.24.0",
176
+ "@zag-js/toggle-group": "1.24.0",
177
+ "@zag-js/tooltip": "1.24.0",
178
+ "@zag-js/tour": "1.24.0",
179
+ "@zag-js/tree-view": "1.24.0",
180
+ "@zag-js/types": "1.24.0",
181
+ "@zag-js/utils": "1.24.0"
183
182
  },
184
183
  "devDependencies": {
185
- "@storybook/addon-a11y": "9.1.3",
186
- "@storybook/sveltekit": "9.1.3",
184
+ "@storybook/addon-a11y": "9.1.5",
185
+ "@storybook/sveltekit": "9.1.5",
187
186
  "@sveltejs/adapter-auto": "6.1.0",
188
- "@sveltejs/kit": "2.36.2",
187
+ "@sveltejs/kit": "2.39.0",
189
188
  "@sveltejs/package": "2.5.0",
190
- "@sveltejs/vite-plugin-svelte": "6.1.3",
191
- "@tanstack/svelte-form": "1.19.2",
189
+ "@sveltejs/vite-plugin-svelte": "6.2.0",
190
+ "@tanstack/svelte-form": "1.19.5",
191
+ "@testing-library/dom": "10.4.1",
192
192
  "@testing-library/jest-dom": "6.8.0",
193
193
  "@testing-library/svelte": "5.2.8",
194
194
  "@testing-library/user-event": "14.6.1",
195
195
  "@vitest/coverage-v8": "3.2.4",
196
196
  "clean-package": "2.2.0",
197
197
  "image-conversion": "2.1.1",
198
- "lucide-svelte": "0.541.0",
199
- "storybook": "9.1.3",
200
- "svelte": "5.38.3",
198
+ "jsdom": "26.1.0",
199
+ "lucide-svelte": "0.544.0",
200
+ "storybook": "9.1.5",
201
+ "svelte": "5.38.10",
201
202
  "svelte-check": "4.3.1",
202
203
  "tslib": "2.8.1",
203
204
  "typescript": "5.9.2",
204
- "vite": "7.1.3",
205
- "vitest": "3.2.4"
205
+ "vite": "7.1.5",
206
+ "vitest": "3.2.4",
207
+ "vitest-axe": "1.0.0-pre.5"
206
208
  },
207
209
  "peerDependencies": {
208
210
  "svelte": ">=5.20.0"