@ark-ui/svelte 5.14.1 → 5.15.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 (63) hide show
  1. package/dist/components/anatomy.d.ts +1 -0
  2. package/dist/components/anatomy.js +1 -0
  3. package/dist/components/checkbox/use-checkbox-group.svelte.js +9 -5
  4. package/dist/components/date-picker/date-picker-root.svelte +3 -1
  5. package/dist/components/fieldset/fieldset-error-text.svelte +3 -1
  6. package/dist/components/fieldset/use-fieldset.svelte.d.ts +5 -0
  7. package/dist/components/fieldset/use-fieldset.svelte.js +5 -0
  8. package/dist/components/navigation-menu/index.d.ts +18 -0
  9. package/dist/components/navigation-menu/index.js +17 -0
  10. package/dist/components/navigation-menu/navigation-menu-arrow.svelte +19 -0
  11. package/dist/components/navigation-menu/navigation-menu-arrow.svelte.d.ts +8 -0
  12. package/dist/components/navigation-menu/navigation-menu-content.svelte +63 -0
  13. package/dist/components/navigation-menu/navigation-menu-content.svelte.d.ts +9 -0
  14. package/dist/components/navigation-menu/navigation-menu-context.svelte +18 -0
  15. package/dist/components/navigation-menu/navigation-menu-context.svelte.d.ts +8 -0
  16. package/dist/components/navigation-menu/navigation-menu-indicator.svelte +29 -0
  17. package/dist/components/navigation-menu/navigation-menu-indicator.svelte.d.ts +8 -0
  18. package/dist/components/navigation-menu/navigation-menu-item-indicator.svelte +22 -0
  19. package/dist/components/navigation-menu/navigation-menu-item-indicator.svelte.d.ts +8 -0
  20. package/dist/components/navigation-menu/navigation-menu-item.svelte +26 -0
  21. package/dist/components/navigation-menu/navigation-menu-item.svelte.d.ts +9 -0
  22. package/dist/components/navigation-menu/navigation-menu-link.svelte +32 -0
  23. package/dist/components/navigation-menu/navigation-menu-link.svelte.d.ts +9 -0
  24. package/dist/components/navigation-menu/navigation-menu-list.svelte +19 -0
  25. package/dist/components/navigation-menu/navigation-menu-list.svelte.d.ts +8 -0
  26. package/dist/components/navigation-menu/navigation-menu-root-provider.svelte +36 -0
  27. package/dist/components/navigation-menu/navigation-menu-root-provider.svelte.d.ts +13 -0
  28. package/dist/components/navigation-menu/navigation-menu-root.svelte +61 -0
  29. package/dist/components/navigation-menu/navigation-menu-root.svelte.d.ts +10 -0
  30. package/dist/components/navigation-menu/navigation-menu-trigger.svelte +36 -0
  31. package/dist/components/navigation-menu/navigation-menu-trigger.svelte.d.ts +9 -0
  32. package/dist/components/navigation-menu/navigation-menu-viewport-positioner.svelte +29 -0
  33. package/dist/components/navigation-menu/navigation-menu-viewport-positioner.svelte.d.ts +9 -0
  34. package/dist/components/navigation-menu/navigation-menu-viewport.svelte +36 -0
  35. package/dist/components/navigation-menu/navigation-menu-viewport.svelte.d.ts +9 -0
  36. package/dist/components/navigation-menu/navigation-menu.anatomy.d.ts +1 -0
  37. package/dist/components/navigation-menu/navigation-menu.anatomy.js +1 -0
  38. package/dist/components/navigation-menu/navigation-menu.d.ts +14 -0
  39. package/dist/components/navigation-menu/navigation-menu.js +13 -0
  40. package/dist/components/navigation-menu/use-navigation-menu-context.d.ts +4 -0
  41. package/dist/components/navigation-menu/use-navigation-menu-context.js +4 -0
  42. package/dist/components/navigation-menu/use-navigation-menu-item-props-context.d.ts +3 -0
  43. package/dist/components/navigation-menu/use-navigation-menu-item-props-context.js +5 -0
  44. package/dist/components/navigation-menu/use-navigation-menu.svelte.d.ts +9 -0
  45. package/dist/components/navigation-menu/use-navigation-menu.svelte.js +20 -0
  46. package/dist/components/number-input/split-number-input-props.svelte.d.ts +1 -1
  47. package/dist/components/number-input/split-number-input-props.svelte.js +1 -0
  48. package/dist/components/pagination/index.d.ts +2 -0
  49. package/dist/components/pagination/index.js +2 -0
  50. package/dist/components/pagination/pagination-first-trigger.svelte +18 -0
  51. package/dist/components/pagination/pagination-first-trigger.svelte.d.ts +8 -0
  52. package/dist/components/pagination/pagination-last-trigger.svelte +18 -0
  53. package/dist/components/pagination/pagination-last-trigger.svelte.d.ts +8 -0
  54. package/dist/components/pagination/pagination-root.svelte +1 -0
  55. package/dist/components/pagination/pagination.d.ts +2 -0
  56. package/dist/components/pagination/pagination.js +2 -0
  57. package/dist/components/radio-group/radio-group-root.svelte +2 -0
  58. package/dist/components/radio-group/use-radio-group.svelte.js +8 -0
  59. package/dist/components/segment-group/split-segment-group-props.svelte.d.ts +1 -1
  60. package/dist/components/segment-group/split-segment-group-props.svelte.js +2 -0
  61. package/dist/components/tree-view/tree-view-split-props.d.ts +1 -1
  62. package/dist/components/tree-view/tree-view-split-props.js +1 -0
  63. package/package.json +70 -69
@@ -21,6 +21,7 @@ export { imageCropperAnatomy } from './image-cropper/image-cropper.anatomy';
21
21
  export { listboxAnatomy } from './listbox/listbox.anatomy';
22
22
  export { marqueeAnatomy } from './marquee/marquee.anatomy';
23
23
  export { menuAnatomy } from './menu/menu.anatomy';
24
+ export { navigationMenuAnatomy } from './navigation-menu/navigation-menu.anatomy';
24
25
  export { numberInputAnatomy } from './number-input/number-input.anatomy';
25
26
  export { paginationAnatomy } from './pagination/pagination.anatomy';
26
27
  export { passwordInputAnatomy } from './password-input/password-input.anatomy';
@@ -21,6 +21,7 @@ export { imageCropperAnatomy } from './image-cropper/image-cropper.anatomy';
21
21
  export { listboxAnatomy } from './listbox/listbox.anatomy';
22
22
  export { marqueeAnatomy } from './marquee/marquee.anatomy';
23
23
  export { menuAnatomy } from './menu/menu.anatomy';
24
+ export { navigationMenuAnatomy } from './navigation-menu/navigation-menu.anatomy';
24
25
  export { numberInputAnatomy } from './number-input/number-input.anatomy';
25
26
  export { paginationAnatomy } from './pagination/pagination.anatomy';
26
27
  export { passwordInputAnatomy } from './password-input/password-input.anatomy';
@@ -1,10 +1,14 @@
1
1
  import { runIfFn } from '@zag-js/utils';
2
2
  import { untrack } from 'svelte';
3
+ import { useFieldsetContext } from '../fieldset';
3
4
  export const useCheckboxGroup = (props = {}) => {
5
+ const fieldset = useFieldsetContext();
4
6
  const resolvedProps = $derived(runIfFn(props) || {});
5
7
  let valueState = $state(untrack(() => resolvedProps.defaultValue) ?? []);
6
8
  const value = $derived(resolvedProps.value !== undefined ? resolvedProps.value : valueState);
7
- const interactive = $derived(!(resolvedProps.disabled || resolvedProps.readOnly));
9
+ const disabled = $derived(resolvedProps.disabled ?? fieldset?.()?.disabled);
10
+ const invalid = $derived(resolvedProps.invalid ?? fieldset?.()?.invalid);
11
+ const interactive = $derived(!(disabled || resolvedProps.readOnly));
8
12
  const setValue = (newValue) => {
9
13
  if (resolvedProps.value === undefined) {
10
14
  valueState = newValue;
@@ -38,18 +42,18 @@ export const useCheckboxGroup = (props = {}) => {
38
42
  }
39
43
  },
40
44
  name: resolvedProps.name,
41
- disabled: !!resolvedProps.disabled,
45
+ disabled: !!disabled,
42
46
  readOnly: !!resolvedProps.readOnly,
43
- invalid: !!resolvedProps.invalid,
47
+ invalid: !!invalid,
44
48
  };
45
49
  };
46
50
  const api = $derived({
47
51
  isChecked,
48
52
  value,
49
53
  name: resolvedProps.name,
50
- disabled: !!resolvedProps.disabled,
54
+ disabled: !!disabled,
51
55
  readOnly: !!resolvedProps.readOnly,
52
- invalid: !!resolvedProps.invalid,
56
+ invalid: !!invalid,
53
57
  setValue,
54
58
  addValue,
55
59
  toggleValue,
@@ -43,6 +43,8 @@
43
43
  'format',
44
44
  'id',
45
45
  'ids',
46
+ 'inline',
47
+ 'invalid',
46
48
  'isDateUnavailable',
47
49
  'locale',
48
50
  'max',
@@ -61,13 +63,13 @@
61
63
  'placeholder',
62
64
  'positioning',
63
65
  'readOnly',
66
+ 'required',
64
67
  'selectionMode',
65
68
  'startOfWeek',
66
69
  'timeZone',
67
70
  'translations',
68
71
  'value',
69
72
  'view',
70
- 'inline',
71
73
  ]),
72
74
  )
73
75
 
@@ -15,4 +15,6 @@
15
15
  const mergedProps = $derived(mergeProps(fieldset?.().getErrorTextProps(), props))
16
16
  </script>
17
17
 
18
- <Ark as="span" bind:ref {...mergedProps} />
18
+ {#if fieldset?.().invalid}
19
+ <Ark as="span" bind:ref {...mergedProps} />
20
+ {/if}
@@ -17,6 +17,11 @@ export interface UseFieldsetProps {
17
17
  export type UseFieldsetReturn = ReturnType<typeof useFieldset>;
18
18
  export declare const useFieldset: (inProps?: MaybeFunction<UseFieldsetProps>) => () => {
19
19
  setRootRef: (el: Element | null) => void;
20
+ ids: {
21
+ legend: string;
22
+ errorText: string;
23
+ helperText: string;
24
+ };
20
25
  disabled: boolean;
21
26
  invalid: boolean;
22
27
  getRootProps: () => HTMLProps<"fieldset">;
@@ -72,6 +72,11 @@ export const useFieldset = (inProps = {}) => {
72
72
  });
73
73
  const api = $derived({
74
74
  setRootRef,
75
+ ids: {
76
+ legend: legendId,
77
+ errorText: errorTextId,
78
+ helperText: helperTextId,
79
+ },
75
80
  disabled,
76
81
  invalid,
77
82
  getRootProps,
@@ -0,0 +1,18 @@
1
+ export type { ValueChangeDetails as NavigationMenuValueChangeDetails } from '@zag-js/navigation-menu';
2
+ export { default as NavigationMenuArrow, type NavigationMenuArrowBaseProps, type NavigationMenuArrowProps, } from './navigation-menu-arrow.svelte';
3
+ export { default as NavigationMenuContent, type NavigationMenuContentBaseProps, type NavigationMenuContentProps, } from './navigation-menu-content.svelte';
4
+ export { default as NavigationMenuContext, type NavigationMenuContextProps } from './navigation-menu-context.svelte';
5
+ export { default as NavigationMenuIndicator, type NavigationMenuIndicatorBaseProps, type NavigationMenuIndicatorProps, } from './navigation-menu-indicator.svelte';
6
+ export { default as NavigationMenuItem, type NavigationMenuItemBaseProps, type NavigationMenuItemProps, } from './navigation-menu-item.svelte';
7
+ export { default as NavigationMenuItemIndicator, type NavigationMenuItemIndicatorBaseProps, type NavigationMenuItemIndicatorProps, } from './navigation-menu-item-indicator.svelte';
8
+ export { default as NavigationMenuLink, type NavigationMenuLinkBaseProps, type NavigationMenuLinkProps, } from './navigation-menu-link.svelte';
9
+ export { default as NavigationMenuList, type NavigationMenuListBaseProps, type NavigationMenuListProps, } from './navigation-menu-list.svelte';
10
+ export { default as NavigationMenuRoot, type NavigationMenuRootBaseProps, type NavigationMenuRootProps, } from './navigation-menu-root.svelte';
11
+ export { default as NavigationMenuRootProvider, type NavigationMenuRootProviderBaseProps, type NavigationMenuRootProviderProps, } from './navigation-menu-root-provider.svelte';
12
+ export { default as NavigationMenuTrigger, type NavigationMenuTriggerBaseProps, type NavigationMenuTriggerProps, } from './navigation-menu-trigger.svelte';
13
+ export { default as NavigationMenuViewport, type NavigationMenuViewportBaseProps, type NavigationMenuViewportProps, } from './navigation-menu-viewport.svelte';
14
+ export { default as NavigationMenuViewportPositioner, type NavigationMenuViewportPositionerBaseProps, type NavigationMenuViewportPositionerProps, } from './navigation-menu-viewport-positioner.svelte';
15
+ export { navigationMenuAnatomy } from './navigation-menu.anatomy';
16
+ export { useNavigationMenu, type UseNavigationMenuProps, type UseNavigationMenuReturn, } from './use-navigation-menu.svelte';
17
+ export { useNavigationMenuContext, type UseNavigationMenuContext } from './use-navigation-menu-context';
18
+ export * as NavigationMenu from './navigation-menu';
@@ -0,0 +1,17 @@
1
+ export { default as NavigationMenuArrow, } from './navigation-menu-arrow.svelte';
2
+ export { default as NavigationMenuContent, } from './navigation-menu-content.svelte';
3
+ export { default as NavigationMenuContext } from './navigation-menu-context.svelte';
4
+ export { default as NavigationMenuIndicator, } from './navigation-menu-indicator.svelte';
5
+ export { default as NavigationMenuItem, } from './navigation-menu-item.svelte';
6
+ export { default as NavigationMenuItemIndicator, } from './navigation-menu-item-indicator.svelte';
7
+ export { default as NavigationMenuLink, } from './navigation-menu-link.svelte';
8
+ export { default as NavigationMenuList, } from './navigation-menu-list.svelte';
9
+ export { default as NavigationMenuRoot, } from './navigation-menu-root.svelte';
10
+ export { default as NavigationMenuRootProvider, } from './navigation-menu-root-provider.svelte';
11
+ export { default as NavigationMenuTrigger, } from './navigation-menu-trigger.svelte';
12
+ export { default as NavigationMenuViewport, } from './navigation-menu-viewport.svelte';
13
+ export { default as NavigationMenuViewportPositioner, } from './navigation-menu-viewport-positioner.svelte';
14
+ export { navigationMenuAnatomy } from './navigation-menu.anatomy';
15
+ export { useNavigationMenu, } from './use-navigation-menu.svelte';
16
+ export { useNavigationMenuContext } from './use-navigation-menu-context';
17
+ export * as NavigationMenu from './navigation-menu';
@@ -0,0 +1,19 @@
1
+ <script module lang="ts">
2
+ import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types'
3
+
4
+ export interface NavigationMenuArrowBaseProps extends PolymorphicProps<'div'>, RefAttribute {}
5
+ export interface NavigationMenuArrowProps extends Assign<HTMLProps<'div'>, NavigationMenuArrowBaseProps> {}
6
+ </script>
7
+
8
+ <script lang="ts">
9
+ import { mergeProps } from '@zag-js/svelte'
10
+ import { Ark } from '../factory'
11
+ import { useNavigationMenuContext } from './use-navigation-menu-context'
12
+
13
+ let { ref = $bindable(null), ...props }: NavigationMenuArrowProps = $props()
14
+
15
+ const navigationMenu = useNavigationMenuContext()
16
+ const mergedProps = $derived(mergeProps(navigationMenu().getArrowProps(), props))
17
+ </script>
18
+
19
+ <Ark as="div" bind:ref {...mergedProps} />
@@ -0,0 +1,8 @@
1
+ import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types';
2
+ export interface NavigationMenuArrowBaseProps extends PolymorphicProps<'div'>, RefAttribute {
3
+ }
4
+ export interface NavigationMenuArrowProps extends Assign<HTMLProps<'div'>, NavigationMenuArrowBaseProps> {
5
+ }
6
+ declare const NavigationMenuArrow: import("svelte").Component<NavigationMenuArrowProps, {}, "ref">;
7
+ type NavigationMenuArrow = ReturnType<typeof NavigationMenuArrow>;
8
+ export default NavigationMenuArrow;
@@ -0,0 +1,63 @@
1
+ <script module lang="ts">
2
+ import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types'
3
+ import type { ContentProps } from '@zag-js/navigation-menu'
4
+
5
+ export interface NavigationMenuContentBaseProps
6
+ extends Partial<ContentProps>,
7
+ PolymorphicProps<'div'>,
8
+ RefAttribute {}
9
+ export interface NavigationMenuContentProps extends Assign<HTMLProps<'div'>, NavigationMenuContentBaseProps> {}
10
+ </script>
11
+
12
+ <script lang="ts">
13
+ import { createSplitProps } from '../../utils/create-split-props'
14
+ import { useRenderStrategyPropsContext } from '../../utils/render-strategy'
15
+ import { mergeProps } from '@zag-js/svelte'
16
+ import type { RequiredBy } from '@zag-js/types'
17
+ import { Ark } from '../factory'
18
+ import { Portal } from '../portal'
19
+ import { usePresence } from '../presence'
20
+ import { useNavigationMenuContext } from './use-navigation-menu-context'
21
+ import { useNavigationMenuItemPropsContext } from './use-navigation-menu-item-props-context'
22
+
23
+ let { ref = $bindable(null), ...props }: NavigationMenuContentProps = $props()
24
+
25
+ const splitContentProps = createSplitProps<ContentProps>()
26
+
27
+ const navigationMenu = useNavigationMenuContext()
28
+ const itemContext = useNavigationMenuItemPropsContext()
29
+
30
+ const value = $derived(props.value ?? itemContext()?.value)
31
+
32
+ const combinedProps = $derived(mergeProps(props, { value }) as RequiredBy<NavigationMenuContentProps, 'value'>)
33
+ const [contentProps, localProps] = $derived(splitContentProps(combinedProps, ['value']))
34
+
35
+ const renderStrategyProps = useRenderStrategyPropsContext()
36
+
37
+ const presence = usePresence(() => ({
38
+ ...renderStrategyProps,
39
+ present: navigationMenu().value === value,
40
+ }))
41
+
42
+ const mergedProps = $derived(
43
+ mergeProps(navigationMenu().getContentProps(contentProps), presence().getPresenceProps(), localProps),
44
+ )
45
+
46
+ const viewportNode = $derived(navigationMenu().getViewportNode())
47
+
48
+ function setNode(node: Element | null) {
49
+ presence().setNode(node)
50
+ }
51
+ </script>
52
+
53
+ {#if navigationMenu().isViewportRendered && viewportNode}
54
+ <div {...navigationMenu().getViewportProxyProps(contentProps)}></div>
55
+ <div {...navigationMenu().getTriggerProxyProps(contentProps)}></div>
56
+ <Portal container={viewportNode}>
57
+ {#if !presence().unmounted}
58
+ <Ark as="div" bind:ref {...mergedProps} {@attach setNode} />
59
+ {/if}
60
+ </Portal>
61
+ {:else if !presence().unmounted}
62
+ <Ark as="div" bind:ref {...mergedProps} {@attach setNode} />
63
+ {/if}
@@ -0,0 +1,9 @@
1
+ import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types';
2
+ import type { ContentProps } from '@zag-js/navigation-menu';
3
+ export interface NavigationMenuContentBaseProps extends Partial<ContentProps>, PolymorphicProps<'div'>, RefAttribute {
4
+ }
5
+ export interface NavigationMenuContentProps extends Assign<HTMLProps<'div'>, NavigationMenuContentBaseProps> {
6
+ }
7
+ declare const NavigationMenuContent: import("svelte").Component<NavigationMenuContentProps, {}, "ref">;
8
+ type NavigationMenuContent = ReturnType<typeof NavigationMenuContent>;
9
+ export default NavigationMenuContent;
@@ -0,0 +1,18 @@
1
+ <script module lang="ts">
2
+ import type { Snippet } from 'svelte'
3
+ import type { UseNavigationMenuContext } from './use-navigation-menu-context'
4
+
5
+ export interface NavigationMenuContextProps {
6
+ render?: Snippet<[UseNavigationMenuContext]>
7
+ }
8
+ </script>
9
+
10
+ <script lang="ts">
11
+ import { useNavigationMenuContext } from './use-navigation-menu-context'
12
+
13
+ const { render }: NavigationMenuContextProps = $props()
14
+
15
+ const context = useNavigationMenuContext()
16
+ </script>
17
+
18
+ {@render render?.(context)}
@@ -0,0 +1,8 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { UseNavigationMenuContext } from './use-navigation-menu-context';
3
+ export interface NavigationMenuContextProps {
4
+ render?: Snippet<[UseNavigationMenuContext]>;
5
+ }
6
+ declare const NavigationMenuContext: import("svelte").Component<NavigationMenuContextProps, {}, "">;
7
+ type NavigationMenuContext = ReturnType<typeof NavigationMenuContext>;
8
+ export default NavigationMenuContext;
@@ -0,0 +1,29 @@
1
+ <script module lang="ts">
2
+ import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types'
3
+
4
+ export interface NavigationMenuIndicatorBaseProps extends PolymorphicProps<'div'>, RefAttribute {}
5
+ export interface NavigationMenuIndicatorProps extends Assign<HTMLProps<'div'>, NavigationMenuIndicatorBaseProps> {}
6
+ </script>
7
+
8
+ <script lang="ts">
9
+ import { mergeProps } from '@zag-js/svelte'
10
+ import { Ark } from '../factory'
11
+ import { usePresence } from '../presence'
12
+ import { useNavigationMenuContext } from './use-navigation-menu-context'
13
+ import { useRenderStrategyPropsContext } from '../../utils/render-strategy'
14
+
15
+ let { ref = $bindable(null), ...props }: NavigationMenuIndicatorProps = $props()
16
+
17
+ const navigationMenu = useNavigationMenuContext()
18
+ const renderStrategyProps = useRenderStrategyPropsContext()
19
+ const presence = usePresence(() => ({ ...renderStrategyProps, present: navigationMenu().open }))
20
+ const mergedProps = $derived(mergeProps(navigationMenu().getIndicatorProps(), presence().getPresenceProps(), props))
21
+
22
+ function setNode(node: Element | null) {
23
+ presence().setNode(node)
24
+ }
25
+ </script>
26
+
27
+ {#if !presence().unmounted}
28
+ <Ark as="div" bind:ref {...mergedProps} {@attach setNode} />
29
+ {/if}
@@ -0,0 +1,8 @@
1
+ import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types';
2
+ export interface NavigationMenuIndicatorBaseProps extends PolymorphicProps<'div'>, RefAttribute {
3
+ }
4
+ export interface NavigationMenuIndicatorProps extends Assign<HTMLProps<'div'>, NavigationMenuIndicatorBaseProps> {
5
+ }
6
+ declare const NavigationMenuIndicator: import("svelte").Component<NavigationMenuIndicatorProps, {}, "ref">;
7
+ type NavigationMenuIndicator = ReturnType<typeof NavigationMenuIndicator>;
8
+ export default NavigationMenuIndicator;
@@ -0,0 +1,22 @@
1
+ <script module lang="ts">
2
+ import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types'
3
+
4
+ export interface NavigationMenuItemIndicatorBaseProps extends PolymorphicProps<'div'>, RefAttribute {}
5
+ export interface NavigationMenuItemIndicatorProps extends Assign<HTMLProps<'div'>, NavigationMenuItemIndicatorBaseProps> {}
6
+ </script>
7
+
8
+ <script lang="ts">
9
+ import { mergeProps } from '@zag-js/svelte'
10
+ import { Ark } from '../factory'
11
+ import { useNavigationMenuContext } from './use-navigation-menu-context'
12
+ import { useNavigationMenuItemPropsContext } from './use-navigation-menu-item-props-context'
13
+
14
+ let { ref = $bindable(null), ...props }: NavigationMenuItemIndicatorProps = $props()
15
+
16
+ const navigationMenu = useNavigationMenuContext()
17
+ const itemProps = useNavigationMenuItemPropsContext()
18
+
19
+ const mergedProps = $derived(mergeProps(navigationMenu().getItemIndicatorProps(itemProps()), props))
20
+ </script>
21
+
22
+ <Ark as="div" bind:ref {...mergedProps} />
@@ -0,0 +1,8 @@
1
+ import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types';
2
+ export interface NavigationMenuItemIndicatorBaseProps extends PolymorphicProps<'div'>, RefAttribute {
3
+ }
4
+ export interface NavigationMenuItemIndicatorProps extends Assign<HTMLProps<'div'>, NavigationMenuItemIndicatorBaseProps> {
5
+ }
6
+ declare const NavigationMenuItemIndicator: import("svelte").Component<NavigationMenuItemIndicatorProps, {}, "ref">;
7
+ type NavigationMenuItemIndicator = ReturnType<typeof NavigationMenuItemIndicator>;
8
+ export default NavigationMenuItemIndicator;
@@ -0,0 +1,26 @@
1
+ <script module lang="ts">
2
+ import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types'
3
+ import type { ItemProps } from '@zag-js/navigation-menu'
4
+
5
+ export interface NavigationMenuItemBaseProps extends ItemProps, PolymorphicProps<'div'>, RefAttribute {}
6
+ export interface NavigationMenuItemProps extends Assign<HTMLProps<'div'>, NavigationMenuItemBaseProps> {}
7
+ </script>
8
+
9
+ <script lang="ts">
10
+ import { mergeProps } from '@zag-js/svelte'
11
+ import { Ark } from '../factory'
12
+ import { useNavigationMenuContext } from './use-navigation-menu-context'
13
+ import { NavigationMenuItemPropsProvider } from './use-navigation-menu-item-props-context'
14
+ import { createSplitProps } from '../../utils/create-split-props'
15
+
16
+ let { ref = $bindable(null), ...props }: NavigationMenuItemProps = $props()
17
+ const splitItemProps = createSplitProps<ItemProps>()
18
+ const [itemProps, localProps] = $derived(splitItemProps(props, ['disabled', 'value']))
19
+
20
+ const navigationMenu = useNavigationMenuContext()
21
+ const mergedProps = $derived(mergeProps(navigationMenu().getItemProps(itemProps), localProps))
22
+
23
+ NavigationMenuItemPropsProvider(() => itemProps)
24
+ </script>
25
+
26
+ <Ark as="div" bind:ref {...mergedProps} />
@@ -0,0 +1,9 @@
1
+ import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types';
2
+ import type { ItemProps } from '@zag-js/navigation-menu';
3
+ export interface NavigationMenuItemBaseProps extends ItemProps, PolymorphicProps<'div'>, RefAttribute {
4
+ }
5
+ export interface NavigationMenuItemProps extends Assign<HTMLProps<'div'>, NavigationMenuItemBaseProps> {
6
+ }
7
+ declare const NavigationMenuItem: import("svelte").Component<NavigationMenuItemProps, {}, "ref">;
8
+ type NavigationMenuItem = ReturnType<typeof NavigationMenuItem>;
9
+ export default NavigationMenuItem;
@@ -0,0 +1,32 @@
1
+ <script module lang="ts">
2
+ import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types'
3
+ import type { LinkProps } from '@zag-js/navigation-menu'
4
+
5
+ export interface NavigationMenuLinkBaseProps extends Partial<LinkProps>, PolymorphicProps<'a'>, RefAttribute {}
6
+ export interface NavigationMenuLinkProps extends Assign<HTMLProps<'a'>, NavigationMenuLinkBaseProps> {}
7
+ </script>
8
+
9
+ <script lang="ts">
10
+ import { mergeProps } from '@zag-js/svelte'
11
+ import { Ark } from '../factory'
12
+ import { useNavigationMenuContext } from './use-navigation-menu-context'
13
+ import { useNavigationMenuItemPropsContext } from './use-navigation-menu-item-props-context'
14
+ import { createSplitProps } from '../../utils/create-split-props'
15
+ import type { RequiredBy } from '@zag-js/types'
16
+
17
+ let { ref = $bindable(null), ...props }: NavigationMenuLinkProps = $props()
18
+
19
+ const itemContext = useNavigationMenuItemPropsContext()
20
+ const value = $derived(props.value ?? itemContext?.()?.value)
21
+ const combinedProps = $derived(mergeProps(props, { value }) as RequiredBy<NavigationMenuLinkProps, 'value'>)
22
+
23
+ const splitLinkProps = createSplitProps<LinkProps>()
24
+ const [linkProps, localProps] = $derived(
25
+ splitLinkProps(combinedProps, ['current', 'onSelect', 'value', 'closeOnClick']),
26
+ )
27
+
28
+ const navigationMenu = useNavigationMenuContext()
29
+ const mergedProps = $derived(mergeProps(navigationMenu().getLinkProps(linkProps), localProps))
30
+ </script>
31
+
32
+ <Ark as="a" bind:ref {...mergedProps} />
@@ -0,0 +1,9 @@
1
+ import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types';
2
+ import type { LinkProps } from '@zag-js/navigation-menu';
3
+ export interface NavigationMenuLinkBaseProps extends Partial<LinkProps>, PolymorphicProps<'a'>, RefAttribute {
4
+ }
5
+ export interface NavigationMenuLinkProps extends Assign<HTMLProps<'a'>, NavigationMenuLinkBaseProps> {
6
+ }
7
+ declare const NavigationMenuLink: import("svelte").Component<NavigationMenuLinkProps, {}, "ref">;
8
+ type NavigationMenuLink = ReturnType<typeof NavigationMenuLink>;
9
+ export default NavigationMenuLink;
@@ -0,0 +1,19 @@
1
+ <script module lang="ts">
2
+ import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types'
3
+
4
+ export interface NavigationMenuListBaseProps extends PolymorphicProps<'div'>, RefAttribute {}
5
+ export interface NavigationMenuListProps extends Assign<HTMLProps<'div'>, NavigationMenuListBaseProps> {}
6
+ </script>
7
+
8
+ <script lang="ts">
9
+ import { mergeProps } from '@zag-js/svelte'
10
+ import { Ark } from '../factory'
11
+ import { useNavigationMenuContext } from './use-navigation-menu-context'
12
+
13
+ let { ref = $bindable(null), ...props }: NavigationMenuListProps = $props()
14
+
15
+ const navigationMenu = useNavigationMenuContext()
16
+ const mergedProps = $derived(mergeProps(navigationMenu().getListProps(), props))
17
+ </script>
18
+
19
+ <Ark as="div" bind:ref {...mergedProps} />
@@ -0,0 +1,8 @@
1
+ import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types';
2
+ export interface NavigationMenuListBaseProps extends PolymorphicProps<'div'>, RefAttribute {
3
+ }
4
+ export interface NavigationMenuListProps extends Assign<HTMLProps<'div'>, NavigationMenuListBaseProps> {
5
+ }
6
+ declare const NavigationMenuList: import("svelte").Component<NavigationMenuListProps, {}, "ref">;
7
+ type NavigationMenuList = ReturnType<typeof NavigationMenuList>;
8
+ export default NavigationMenuList;
@@ -0,0 +1,36 @@
1
+ <script module lang="ts">
2
+ import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types'
3
+ import type { UsePresenceProps } from '../presence'
4
+ import type { UseNavigationMenuReturn } from './use-navigation-menu.svelte'
5
+
6
+ interface RootProviderProps {
7
+ value: UseNavigationMenuReturn
8
+ }
9
+
10
+ export interface NavigationMenuRootProviderBaseProps
11
+ extends RootProviderProps,
12
+ PolymorphicProps<'nav'>,
13
+ UsePresenceProps,
14
+ RefAttribute {}
15
+
16
+ export interface NavigationMenuRootProviderProps
17
+ extends Assign<HTMLProps<'nav'>, NavigationMenuRootProviderBaseProps> {}
18
+ </script>
19
+
20
+ <script lang="ts">
21
+ import { mergeProps } from '@zag-js/svelte'
22
+ import { Ark } from '../factory'
23
+ import { NavigationMenuProvider } from './use-navigation-menu-context'
24
+ import { RenderStrategyPropsProvider, splitRenderStrategyProps } from '../../utils/render-strategy'
25
+
26
+ let { ref = $bindable(null), ...props }: NavigationMenuRootProviderProps = $props()
27
+
28
+ const [renderStrategyProps, localProps] = $derived(splitRenderStrategyProps(props))
29
+
30
+ const mergedProps = $derived(mergeProps(props.value().getRootProps(), localProps))
31
+
32
+ NavigationMenuProvider(() => props.value())
33
+ RenderStrategyPropsProvider(() => renderStrategyProps)
34
+ </script>
35
+
36
+ <Ark as="nav" bind:ref {...mergedProps} />
@@ -0,0 +1,13 @@
1
+ import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types';
2
+ import type { UsePresenceProps } from '../presence';
3
+ import type { UseNavigationMenuReturn } from './use-navigation-menu.svelte';
4
+ interface RootProviderProps {
5
+ value: UseNavigationMenuReturn;
6
+ }
7
+ export interface NavigationMenuRootProviderBaseProps extends RootProviderProps, PolymorphicProps<'nav'>, UsePresenceProps, RefAttribute {
8
+ }
9
+ export interface NavigationMenuRootProviderProps extends Assign<HTMLProps<'nav'>, NavigationMenuRootProviderBaseProps> {
10
+ }
11
+ declare const NavigationMenuRootProvider: import("svelte").Component<NavigationMenuRootProviderProps, {}, "ref">;
12
+ type NavigationMenuRootProvider = ReturnType<typeof NavigationMenuRootProvider>;
13
+ export default NavigationMenuRootProvider;
@@ -0,0 +1,61 @@
1
+ <script module lang="ts">
2
+ import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types'
3
+ import type { UsePresenceProps } from '../presence'
4
+ import type { UseNavigationMenuProps } from './use-navigation-menu.svelte'
5
+
6
+ export interface NavigationMenuRootBaseProps
7
+ extends UseNavigationMenuProps,
8
+ UsePresenceProps,
9
+ PolymorphicProps<'nav'>,
10
+ RefAttribute {}
11
+ export interface NavigationMenuRootProps extends Assign<HTMLProps<'nav'>, NavigationMenuRootBaseProps> {}
12
+ </script>
13
+
14
+ <script lang="ts">
15
+ import { mergeProps } from '@zag-js/svelte'
16
+ import { Ark } from '../factory'
17
+ import { NavigationMenuProvider } from './use-navigation-menu-context'
18
+ import { useNavigationMenu } from './use-navigation-menu.svelte'
19
+ import { RenderStrategyPropsProvider, splitRenderStrategyProps } from '../../utils/render-strategy'
20
+ import { createSplitProps } from '../../utils/create-split-props'
21
+
22
+ let { ref = $bindable(null), value = $bindable(), ...props }: NavigationMenuRootProps = $props()
23
+
24
+ const providedId = $props.id()
25
+ const splitRootProps = createSplitProps<UseNavigationMenuProps>()
26
+
27
+ const [renderStrategyProps, navigationMenuProps] = $derived(splitRenderStrategyProps(props))
28
+ const [useNavigationMenuProps, localProps] = $derived(
29
+ splitRootProps(navigationMenuProps, [
30
+ 'closeDelay',
31
+ 'defaultValue',
32
+ 'disableClickTrigger',
33
+ 'disableHoverTrigger',
34
+ 'disablePointerLeaveClose',
35
+ 'id',
36
+ 'ids',
37
+ 'onValueChange',
38
+ 'openDelay',
39
+ 'orientation',
40
+ 'value',
41
+ ]),
42
+ )
43
+
44
+ const machineProps = $derived<UseNavigationMenuProps>({
45
+ ...useNavigationMenuProps,
46
+ id: useNavigationMenuProps.id ?? providedId,
47
+ value,
48
+ onValueChange(details) {
49
+ useNavigationMenuProps.onValueChange?.(details)
50
+ if (value !== undefined) value = details.value
51
+ },
52
+ })
53
+
54
+ const navigationMenu = useNavigationMenu(() => machineProps)
55
+ const mergedProps = $derived(mergeProps(navigationMenu().getRootProps(), localProps))
56
+
57
+ RenderStrategyPropsProvider(() => renderStrategyProps)
58
+ NavigationMenuProvider(navigationMenu)
59
+ </script>
60
+
61
+ <Ark as="nav" bind:ref {...mergedProps} />
@@ -0,0 +1,10 @@
1
+ import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types';
2
+ import type { UsePresenceProps } from '../presence';
3
+ import type { UseNavigationMenuProps } from './use-navigation-menu.svelte';
4
+ export interface NavigationMenuRootBaseProps extends UseNavigationMenuProps, UsePresenceProps, PolymorphicProps<'nav'>, RefAttribute {
5
+ }
6
+ export interface NavigationMenuRootProps extends Assign<HTMLProps<'nav'>, NavigationMenuRootBaseProps> {
7
+ }
8
+ declare const NavigationMenuRoot: import("svelte").Component<NavigationMenuRootProps, {}, "ref" | "value">;
9
+ type NavigationMenuRoot = ReturnType<typeof NavigationMenuRoot>;
10
+ export default NavigationMenuRoot;
@@ -0,0 +1,36 @@
1
+ <script module lang="ts">
2
+ import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types'
3
+ import type { ItemProps } from '@zag-js/navigation-menu'
4
+
5
+ export interface NavigationMenuTriggerBaseProps
6
+ extends Omit<ItemProps, 'value'>,
7
+ PolymorphicProps<'button'>,
8
+ RefAttribute {}
9
+ export interface NavigationMenuTriggerProps extends Assign<HTMLProps<'button'>, NavigationMenuTriggerBaseProps> {}
10
+ </script>
11
+
12
+ <script lang="ts">
13
+ import { createSplitProps } from '../../utils/create-split-props'
14
+ import { mergeProps } from '@zag-js/svelte'
15
+ import { ensure } from '@zag-js/utils'
16
+ import { Ark } from '../factory'
17
+ import { useNavigationMenuContext } from './use-navigation-menu-context'
18
+ import { useNavigationMenuItemPropsContext } from './use-navigation-menu-item-props-context'
19
+
20
+ let { ref = $bindable(null), ...props }: NavigationMenuTriggerProps = $props()
21
+ const splitItemProps = createSplitProps<ItemProps>()
22
+
23
+ const itemContext = useNavigationMenuItemPropsContext()
24
+ ensure(itemContext, () => 'NavigationMenu.Trigger must be used within NavigationMenu.Item')
25
+
26
+ const value = $derived(itemContext().value)
27
+ const disabled = $derived(props.disabled ?? itemContext().disabled)
28
+
29
+ const combinedProps = $derived({ ...props, value, disabled })
30
+ const [triggerProps, localProps] = $derived(splitItemProps(combinedProps, ['value', 'disabled']))
31
+
32
+ const navigationMenu = useNavigationMenuContext()
33
+ const mergedProps = $derived(mergeProps(navigationMenu().getTriggerProps(triggerProps), localProps))
34
+ </script>
35
+
36
+ <Ark as="button" bind:ref {...mergedProps} />