@ark-ui/solid 2.1.0 → 2.2.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 (76) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/cjs/index.js +254 -49
  3. package/cjs/index.js.map +1 -1
  4. package/esm/index.js +240 -50
  5. package/esm/index.js.map +1 -1
  6. package/package.json +53 -52
  7. package/source/accordion/accordion-item.jsx +4 -3
  8. package/source/accordion/accordion-root.jsx +4 -4
  9. package/source/clipboard/clipboard-context.js +5 -0
  10. package/source/clipboard/clipboard-control.jsx +8 -0
  11. package/source/clipboard/clipboard-indicator.jsx +16 -0
  12. package/source/clipboard/clipboard-input.jsx +8 -0
  13. package/source/clipboard/clipboard-label.jsx +8 -0
  14. package/source/clipboard/clipboard-root.jsx +22 -0
  15. package/source/clipboard/clipboard-trigger.jsx +8 -0
  16. package/source/clipboard/clipboard.jsx +7 -0
  17. package/source/clipboard/index.js +9 -0
  18. package/source/clipboard/use-clipboard.jsx +10 -0
  19. package/source/collapsible/collapsible-content.jsx +11 -0
  20. package/source/collapsible/collapsible-context.js +5 -0
  21. package/source/collapsible/collapsible-root.jsx +24 -0
  22. package/source/collapsible/collapsible-trigger.jsx +8 -0
  23. package/source/collapsible/collapsible.jsx +4 -0
  24. package/source/collapsible/index.js +6 -0
  25. package/source/collapsible/use-collapsible.js +23 -0
  26. package/source/color-picker/use-color-picker.js +0 -1
  27. package/source/date-picker/use-date-picker.js +0 -1
  28. package/source/dialog/dialog-backdrop.jsx +4 -3
  29. package/source/dialog/dialog-root.jsx +5 -3
  30. package/source/dialog/use-dialog.js +1 -1
  31. package/source/hover-card/use-hover-card.js +1 -1
  32. package/source/index.jsx +3 -0
  33. package/source/locale/index.js +2 -0
  34. package/source/locale/locale-context.jsx +7 -0
  35. package/source/locale/locale.jsx +24 -0
  36. package/source/menu/use-menu.js +1 -1
  37. package/source/popover/use-popover.js +1 -1
  38. package/source/presence/index.js +1 -2
  39. package/source/presence/split-presence-props.js +6 -8
  40. package/source/presence/use-presence.js +8 -7
  41. package/source/render-strategy.js +7 -0
  42. package/source/select/use-select.js +0 -1
  43. package/source/splitter/splitter-root.jsx +0 -1
  44. package/source/tabs/tab-content.jsx +4 -3
  45. package/source/tabs/tabs-root.jsx +4 -4
  46. package/source/tooltip/use-tooltip.js +1 -1
  47. package/source/tree-view/tree-view-branch-indicator.jsx +1 -4
  48. package/types/clipboard/clipboard-context.d.ts +4 -0
  49. package/types/clipboard/clipboard-control.d.ts +4 -0
  50. package/types/clipboard/clipboard-indicator.d.ts +10 -0
  51. package/types/clipboard/clipboard-input.d.ts +4 -0
  52. package/types/clipboard/clipboard-label.d.ts +4 -0
  53. package/types/clipboard/clipboard-root.d.ts +11 -0
  54. package/types/clipboard/clipboard-trigger.d.ts +4 -0
  55. package/types/clipboard/clipboard.d.ts +7 -0
  56. package/types/clipboard/index.d.ts +11 -0
  57. package/types/clipboard/use-clipboard.d.ts +9 -0
  58. package/types/collapsible/collapsible-content.d.ts +4 -0
  59. package/types/collapsible/collapsible-context.d.ts +4 -0
  60. package/types/collapsible/collapsible-root.d.ts +6 -0
  61. package/types/collapsible/collapsible-trigger.d.ts +4 -0
  62. package/types/collapsible/collapsible.d.ts +4 -0
  63. package/types/collapsible/index.d.ts +8 -0
  64. package/types/collapsible/use-collapsible.d.ts +15 -0
  65. package/types/index.d.ts +3 -0
  66. package/types/locale/index.d.ts +2 -0
  67. package/types/locale/locale-context.d.ts +5 -0
  68. package/types/locale/locale.d.ts +9 -0
  69. package/types/menu/menu-item-group.d.ts +3 -5
  70. package/types/presence/index.d.ts +2 -3
  71. package/types/presence/split-presence-props.d.ts +1 -1
  72. package/types/presence/use-presence.d.ts +2 -11
  73. package/types/render-strategy.d.ts +14 -0
  74. package/types/tabs/tabs-root.d.ts +2 -2
  75. package/source/presence/presence-props-context.js +0 -5
  76. package/types/presence/presence-props-context.d.ts +0 -4
@@ -1,11 +1,12 @@
1
1
  import * as presence from '@zag-js/presence';
2
2
  import { normalizeProps, useMachine } from '@zag-js/solid';
3
- import { createEffect, createMemo, createSignal, splitProps } from 'solid-js';
3
+ import { createEffect, createMemo, createSignal } from 'solid-js';
4
+ import { splitRenderStrategyProps } from '../render-strategy';
4
5
  export const usePresence = (props) => {
5
- const [localProps, machineProps] = splitProps(props, ['lazyMount', 'unmountOnExit']);
6
+ const [renderStrategyProps, context] = splitRenderStrategyProps(props);
6
7
  const [wasEverPresent, setWasEverPresent] = createSignal(false);
7
- const [state, send] = useMachine(presence.machine(machineProps), {
8
- context: machineProps,
8
+ const [state, send] = useMachine(presence.machine(context), {
9
+ context,
9
10
  });
10
11
  const api = createMemo(() => presence.connect(state, send, normalizeProps));
11
12
  createEffect(() => {
@@ -14,13 +15,13 @@ export const usePresence = (props) => {
14
15
  setWasEverPresent(true);
15
16
  });
16
17
  return createMemo(() => ({
17
- isUnmounted: (!api().isPresent && !wasEverPresent() && localProps.lazyMount) ||
18
- (localProps.unmountOnExit && !api().isPresent && wasEverPresent()),
18
+ isUnmounted: (!api().isPresent && !wasEverPresent() && renderStrategyProps.lazyMount) ||
19
+ (renderStrategyProps.unmountOnExit && !api().isPresent && wasEverPresent()),
19
20
  isPresent: api().isPresent,
20
21
  presenceProps: {
21
22
  ref: api().setNode,
22
23
  hidden: !api().isPresent,
23
- 'data-state': machineProps.present ? 'open' : 'closed',
24
+ 'data-state': context.present ? 'open' : 'closed',
24
25
  },
25
26
  }));
26
27
  };
@@ -0,0 +1,7 @@
1
+ import { createContext } from './create-context';
2
+ import { createSplitProps } from './create-split-props';
3
+ export const [RenderStrategyProvider, useRenderStrategyContext] = createContext({
4
+ hookName: 'useRenderStrategyContext',
5
+ providerName: '<RenderStrategyProvider />',
6
+ });
7
+ export const splitRenderStrategyProps = (props) => createSplitProps()(props, ['lazyMount', 'unmountOnExit']);
@@ -16,7 +16,6 @@ export const useSelect = (props) => {
16
16
  id: createUniqueId(),
17
17
  getRootNode,
18
18
  collection: collection(),
19
- 'open.controlled': props.open !== undefined,
20
19
  }, rest);
21
20
  const [state, send] = useMachine(select.machine(context()), {
22
21
  context,
@@ -12,7 +12,6 @@ export const SplitterRoot = (props) => {
12
12
  'ids',
13
13
  'onSizeChange',
14
14
  'onSizeChangeEnd',
15
- 'onSizeChangeStart',
16
15
  'orientation',
17
16
  'size',
18
17
  ]);
@@ -2,13 +2,14 @@ import { mergeProps } from '@zag-js/solid';
2
2
  import { Show } from 'solid-js';
3
3
  import { createSplitProps } from '../create-split-props';
4
4
  import { ark } from '../factory';
5
- import { PresenceProvider, usePresence, usePresencePropsContext } from '../presence';
5
+ import { PresenceProvider, usePresence } from '../presence';
6
+ import { useRenderStrategyContext } from '../render-strategy';
6
7
  import { useTabsContext } from './tabs-context';
7
8
  export const TabContent = (props) => {
8
9
  const [contentProps, localProps] = createSplitProps()(props, ['value']);
9
10
  const api = useTabsContext();
10
- const presenceProps = usePresencePropsContext();
11
- const presenceApi = usePresence(mergeProps(presenceProps, () => ({ present: api().value === contentProps.value })));
11
+ const renderStrategyProps = useRenderStrategyContext();
12
+ const presenceApi = usePresence(mergeProps(renderStrategyProps, () => ({ present: api().value === contentProps.value })));
12
13
  const mergedProps = mergeProps(() => api().getContentProps(contentProps), () => presenceApi().presenceProps, localProps);
13
14
  return (<PresenceProvider value={presenceApi}>
14
15
  <Show when={!presenceApi().isUnmounted}>
@@ -1,11 +1,11 @@
1
1
  import { mergeProps } from '@zag-js/solid';
2
2
  import { createSplitProps } from '../create-split-props';
3
3
  import { ark } from '../factory';
4
- import { PresencePropsProvider, splitPresenceProps } from '../presence';
4
+ import { RenderStrategyProvider, splitRenderStrategyProps, } from '../render-strategy';
5
5
  import { TabsProvider } from './tabs-context';
6
6
  import { useTabs } from './use-tabs';
7
7
  export const TabsRoot = (props) => {
8
- const [presenceProps, tabsProps] = splitPresenceProps(props);
8
+ const [renderStrategyProps, tabsProps] = splitRenderStrategyProps(props);
9
9
  const [tabsParams, restProps] = createSplitProps()(tabsProps, [
10
10
  'activationMode',
11
11
  'dir',
@@ -22,8 +22,8 @@ export const TabsRoot = (props) => {
22
22
  const api = useTabs(tabsParams);
23
23
  const mergedProps = mergeProps(() => api().rootProps, restProps);
24
24
  return (<TabsProvider value={api}>
25
- <PresencePropsProvider value={presenceProps}>
25
+ <RenderStrategyProvider value={renderStrategyProps}>
26
26
  <ark.div {...mergedProps}/>
27
- </PresencePropsProvider>
27
+ </RenderStrategyProvider>
28
28
  </TabsProvider>);
29
29
  };
@@ -4,7 +4,7 @@ import { createMemo, createUniqueId } from 'solid-js';
4
4
  import { useEnvironmentContext } from '../environment';
5
5
  export const useTooltip = (props) => {
6
6
  const getRootNode = useEnvironmentContext();
7
- const context = mergeProps({ id: createUniqueId(), getRootNode, 'open.controlled': props.open !== undefined }, props);
7
+ const context = mergeProps({ id: createUniqueId(), getRootNode }, props);
8
8
  const [state, send] = useMachine(tooltip.machine(context), { context });
9
9
  return createMemo(() => tooltip.connect(state, send, normalizeProps));
10
10
  };
@@ -1,4 +1,3 @@
1
- import { treeViewAnatomy } from '@ark-ui/anatomy';
2
1
  import { mergeProps } from '@zag-js/solid';
3
2
  import { ark } from '../factory';
4
3
  import { useTreeViewBranchContext } from './tree-view-branch-context';
@@ -6,8 +5,6 @@ import { useTreeViewContext } from './tree-view-context';
6
5
  export const TreeViewBranchIndicator = (props) => {
7
6
  const api = useTreeViewContext();
8
7
  const branchProps = useTreeViewBranchContext();
9
- const mergedProps = mergeProps(() => api().getBranchProps(branchProps),
10
- // TODO use api.getBranchIndicatorProps() when available
11
- treeViewAnatomy.build().branchIndicator.attrs, props);
8
+ const mergedProps = mergeProps(() => api().getBranchIndicatorProps(branchProps), props);
12
9
  return <ark.div {...mergedProps}/>;
13
10
  };
@@ -0,0 +1,4 @@
1
+ import { type UseClipboardReturn } from './use-clipboard';
2
+ export interface ClipboardContext extends UseClipboardReturn {
3
+ }
4
+ export declare const ClipboardProvider: import("solid-js").ContextProviderComponent<ClipboardContext>, useClipboardContext: () => ClipboardContext;
@@ -0,0 +1,4 @@
1
+ import { type ArkComponent, type HTMLArkProps } from '../factory';
2
+ export interface ClipboardControlProps extends HTMLArkProps<'div'> {
3
+ }
4
+ export declare const ClipboardControl: ArkComponent<'div'>;
@@ -0,0 +1,10 @@
1
+ import { type JSX } from 'solid-js';
2
+ import { type ArkComponent, type HTMLArkProps } from '../factory';
3
+ import type { Assign } from '../types';
4
+ interface ElementProps {
5
+ copied?: JSX.Element;
6
+ }
7
+ export interface ClipboardIndicatorProps extends Assign<HTMLArkProps<'div'>, ElementProps> {
8
+ }
9
+ export declare const ClipboardIndicator: ArkComponent<'div', ElementProps>;
10
+ export {};
@@ -0,0 +1,4 @@
1
+ import { type ArkComponent, type HTMLArkProps } from '../factory';
2
+ export interface ClipboardInputProps extends HTMLArkProps<'input'> {
3
+ }
4
+ export declare const ClipboardInput: ArkComponent<'input'>;
@@ -0,0 +1,4 @@
1
+ import { type ArkComponent, type HTMLArkProps } from '../factory';
2
+ export interface ClipboardLabelProps extends HTMLArkProps<'label'> {
3
+ }
4
+ export declare const ClipboardLabel: ArkComponent<'label'>;
@@ -0,0 +1,11 @@
1
+ import { type JSX } from 'solid-js';
2
+ import { type ArkComponent, type HTMLArkProps } from '../factory';
3
+ import type { Assign } from '../types';
4
+ import { type UseClipboardProps, type UseClipboardReturn } from './use-clipboard';
5
+ interface ElementProps extends UseClipboardProps {
6
+ children?: JSX.Element | ((api: UseClipboardReturn) => JSX.Element);
7
+ }
8
+ export interface ClipboardRootProps extends Assign<HTMLArkProps<'div'>, ElementProps> {
9
+ }
10
+ export declare const ClipboardRoot: ArkComponent<'div', ElementProps>;
11
+ export {};
@@ -0,0 +1,4 @@
1
+ import { type ArkComponent, type HTMLArkProps } from '../factory';
2
+ export interface ClipboardTriggerProps extends HTMLArkProps<'button'> {
3
+ }
4
+ export declare const ClipboardTrigger: ArkComponent<'button'>;
@@ -0,0 +1,7 @@
1
+ import { ClipboardControl as Control } from './clipboard-control';
2
+ import { ClipboardIndicator as Indicator } from './clipboard-indicator';
3
+ import { ClipboardInput as Input } from './clipboard-input';
4
+ import { ClipboardLabel as Label } from './clipboard-label';
5
+ import { ClipboardRoot as Root } from './clipboard-root';
6
+ import { ClipboardTrigger as Trigger } from './clipboard-trigger';
7
+ export { Control, Indicator, Input, Label, Root, Trigger };
@@ -0,0 +1,11 @@
1
+ import { type CopyStatusDetails as ClipboardCopyStatusDetails } from '@zag-js/clipboard';
2
+ import { useClipboardContext, type ClipboardContext } from './clipboard-context';
3
+ import { ClipboardControl, type ClipboardControlProps } from './clipboard-control';
4
+ import { ClipboardIndicator, type ClipboardIndicatorProps } from './clipboard-indicator';
5
+ import { ClipboardInput, type ClipboardInputProps } from './clipboard-input';
6
+ import { ClipboardLabel, type ClipboardLabelProps } from './clipboard-label';
7
+ import { ClipboardRoot, type ClipboardRootProps } from './clipboard-root';
8
+ import { ClipboardTrigger, type ClipboardTriggerProps } from './clipboard-trigger';
9
+ export * as Clipboard from './clipboard';
10
+ export { ClipboardControl, ClipboardIndicator, ClipboardInput, ClipboardLabel, ClipboardRoot, ClipboardTrigger, useClipboardContext, };
11
+ export type { ClipboardContext, ClipboardControlProps, ClipboardCopyStatusDetails, ClipboardIndicatorProps, ClipboardInputProps, ClipboardLabelProps, ClipboardRootProps, ClipboardTriggerProps, };
@@ -0,0 +1,9 @@
1
+ import * as clipboard from '@zag-js/clipboard';
2
+ import { type PropTypes } from '@zag-js/solid';
3
+ import { type Accessor } from 'solid-js';
4
+ import { type Optional } from '../types';
5
+ export interface UseClipboardProps extends Optional<clipboard.Context, 'id'> {
6
+ }
7
+ export interface UseClipboardReturn extends Accessor<clipboard.Api<PropTypes>> {
8
+ }
9
+ export declare const useClipboard: (props: UseClipboardProps) => UseClipboardReturn;
@@ -0,0 +1,4 @@
1
+ import { type ArkComponent, type HTMLArkProps } from '../factory';
2
+ export interface CollapsibleContentProps extends HTMLArkProps<'div'> {
3
+ }
4
+ export declare const CollapsibleContent: ArkComponent<'div'>;
@@ -0,0 +1,4 @@
1
+ import { type UseCollapsibleReturn } from './use-collapsible';
2
+ export interface CollapsibleContext extends UseCollapsibleReturn {
3
+ }
4
+ export declare const CollapsibleProvider: import("solid-js").ContextProviderComponent<CollapsibleContext>, useCollapsibleContext: () => CollapsibleContext;
@@ -0,0 +1,6 @@
1
+ import { type ArkComponent, type HTMLArkProps } from '../factory';
2
+ import type { Assign } from '../types';
3
+ import { type UseCollapsibleProps } from './use-collapsible';
4
+ export interface CollapsibleRootProps extends Assign<HTMLArkProps<'div'>, UseCollapsibleProps> {
5
+ }
6
+ export declare const CollapsibleRoot: ArkComponent<'div', UseCollapsibleProps>;
@@ -0,0 +1,4 @@
1
+ import { type ArkComponent, type HTMLArkProps } from '../factory';
2
+ export interface CollapsibleTriggerProps extends HTMLArkProps<'button'> {
3
+ }
4
+ export declare const CollapsibleTrigger: ArkComponent<'button'>;
@@ -0,0 +1,4 @@
1
+ import { CollapsibleContent as Content } from './collapsible-content';
2
+ import { CollapsibleRoot as Root } from './collapsible-root';
3
+ import { CollapsibleTrigger as Trigger } from './collapsible-trigger';
4
+ export { Content, Root, Trigger };
@@ -0,0 +1,8 @@
1
+ import type { OpenChangeDetails as CollapsibleOpenChangeDetails } from '@zag-js/collapsible';
2
+ import { CollapsibleContent, type CollapsibleContentProps } from './collapsible-content';
3
+ import { useCollapsibleContext, type CollapsibleContext } from './collapsible-context';
4
+ import { CollapsibleRoot, type CollapsibleRootProps } from './collapsible-root';
5
+ import { CollapsibleTrigger, type CollapsibleTriggerProps } from './collapsible-trigger';
6
+ export * as Collapsible from './collapsible';
7
+ export { CollapsibleContent, CollapsibleRoot, CollapsibleTrigger, useCollapsibleContext };
8
+ export type { CollapsibleContentProps, CollapsibleContext, CollapsibleOpenChangeDetails, CollapsibleRootProps, CollapsibleTriggerProps, };
@@ -0,0 +1,15 @@
1
+ import * as collapsible from '@zag-js/collapsible';
2
+ import { type PropTypes } from '@zag-js/solid';
3
+ import { type Accessor } from 'solid-js';
4
+ import { type RenderStrategyProps } from '../render-strategy';
5
+ import { type Optional } from '../types';
6
+ export interface UseCollapsibleProps extends Optional<Omit<collapsible.Context, 'open.controlled'>, 'id'>, RenderStrategyProps {
7
+ }
8
+ export interface UseCollapsibleReturn extends Accessor<collapsible.Api<PropTypes> & {
9
+ /**
10
+ * Whether the content is unmounted
11
+ */
12
+ isUnmounted?: boolean;
13
+ }> {
14
+ }
15
+ export declare const useCollapsible: (props: UseCollapsibleProps) => UseCollapsibleReturn;
package/types/index.d.ts CHANGED
@@ -2,6 +2,8 @@ export * from './accordion';
2
2
  export * from './avatar';
3
3
  export * from './carousel';
4
4
  export * from './checkbox';
5
+ export * from './clipboard';
6
+ export * from './collapsible';
5
7
  export * from './color-picker';
6
8
  export * from './combobox';
7
9
  export * from './date-picker';
@@ -11,6 +13,7 @@ export * from './environment';
11
13
  export * from './factory';
12
14
  export * from './file-upload';
13
15
  export * from './hover-card';
16
+ export * from './locale';
14
17
  export * from './menu';
15
18
  export * from './number-input';
16
19
  export * from './pagination';
@@ -0,0 +1,2 @@
1
+ export { LocaleProvider, type LocaleProviderProps } from './locale';
2
+ export { useLocaleContext, type LocaleContext } from './locale-context';
@@ -0,0 +1,5 @@
1
+ import { type Locale } from '@zag-js/i18n-utils';
2
+ import type { Accessor } from 'solid-js';
3
+ export interface LocaleContext extends Locale {
4
+ }
5
+ export declare const LocaleContextProvider: import("solid-js").ContextProviderComponent<Accessor<LocaleContext>>, useLocaleContext: () => Accessor<LocaleContext>;
@@ -0,0 +1,9 @@
1
+ import { type LocaleOptions } from '@zag-js/i18n-utils';
2
+ import { type ParentProps } from 'solid-js';
3
+ export interface LocaleProviderProps extends LocaleOptions, ParentProps {
4
+ /**
5
+ * The default locale to use if no locale is provided via props.
6
+ */
7
+ defaultLocale?: string;
8
+ }
9
+ export declare const LocaleProvider: (props: LocaleProviderProps) => import("solid-js").JSX.Element;
@@ -1,8 +1,6 @@
1
+ import type { ItemGroupProps } from '@zag-js/menu';
1
2
  import { type ArkComponent, type HTMLArkProps } from '../factory';
2
3
  import type { Assign } from '../types';
3
- import { type UseMenuReturn } from './use-menu';
4
- type MenuItemGroupParams = Parameters<ReturnType<ReturnType<UseMenuReturn>['api']>['getItemGroupProps']>[0];
5
- export interface MenuItemGroupProps extends Assign<HTMLArkProps<'div'>, MenuItemGroupParams> {
4
+ export interface MenuItemGroupProps extends Assign<HTMLArkProps<'div'>, ItemGroupProps> {
6
5
  }
7
- export declare const MenuItemGroup: ArkComponent<'div', MenuItemGroupParams>;
8
- export {};
6
+ export declare const MenuItemGroup: ArkComponent<'div', ItemGroupProps>;
@@ -1,7 +1,6 @@
1
1
  import { Presence, type PresenceProps } from './presence';
2
2
  import { PresenceProvider, usePresenceContext, type PresenceContext } from './presence-context';
3
- import { PresencePropsProvider, usePresencePropsContext, type PresencePropsContext } from './presence-props-context';
4
3
  import { splitPresenceProps } from './split-presence-props';
5
4
  import { usePresence, type UsePresenceProps, type UsePresenceReturn } from './use-presence';
6
- export { Presence, PresencePropsProvider, PresenceProvider, splitPresenceProps, usePresence, usePresenceContext, usePresencePropsContext, };
7
- export type { PresenceContext, PresenceProps, PresencePropsContext, UsePresenceProps, UsePresenceReturn, };
5
+ export { Presence, PresenceProvider, splitPresenceProps, usePresence, usePresenceContext };
6
+ export type { PresenceContext, PresenceProps, UsePresenceProps, UsePresenceReturn };
@@ -1,2 +1,2 @@
1
1
  import type { UsePresenceProps } from './use-presence';
2
- export declare function splitPresenceProps<T>(props: T & UsePresenceProps): [Pick<T & UsePresenceProps, "present" | "onExitComplete" | "lazyMount" | "unmountOnExit">, T & UsePresenceProps extends infer T_1 ? { [P in keyof T_1 as Exclude<P, "present" | "onExitComplete" | "lazyMount" | "unmountOnExit">]: (T & UsePresenceProps)[P]; } : never];
2
+ export declare const splitPresenceProps: <T extends UsePresenceProps>(props: T) => [Pick<T, Extract<("present" | "onExitComplete" | "lazyMount" | "unmountOnExit")[], readonly (keyof T)[]>[number]>, { [P in keyof T as Exclude<P, "present" | "onExitComplete" | "lazyMount" | "unmountOnExit">]: T[P]; }];
@@ -1,16 +1,7 @@
1
1
  import * as presence from '@zag-js/presence';
2
+ import { type RenderStrategyProps } from '../render-strategy';
2
3
  import type { Optional } from '../types';
3
- export interface UsePresenceProps extends Optional<presence.Context, 'present'> {
4
- /**
5
- * Whether to enable lazy mounting
6
- * @default false
7
- */
8
- lazyMount?: boolean;
9
- /**
10
- * Whether to unmount on exit.
11
- * @default false
12
- */
13
- unmountOnExit?: boolean;
4
+ export interface UsePresenceProps extends Optional<presence.Context, 'present'>, RenderStrategyProps {
14
5
  }
15
6
  export interface UsePresenceReturn extends ReturnType<typeof usePresence> {
16
7
  }
@@ -0,0 +1,14 @@
1
+ export interface RenderStrategyProps {
2
+ /**
3
+ * Whether to enable lazy mounting
4
+ * @default false
5
+ */
6
+ lazyMount?: boolean;
7
+ /**
8
+ * Whether to unmount on exit.
9
+ * @default false
10
+ */
11
+ unmountOnExit?: boolean;
12
+ }
13
+ export declare const RenderStrategyProvider: import("solid-js").ContextProviderComponent<RenderStrategyProps>, useRenderStrategyContext: () => RenderStrategyProps;
14
+ export declare const splitRenderStrategyProps: <T extends RenderStrategyProps>(props: T) => [Pick<T, Extract<("lazyMount" | "unmountOnExit")[], readonly (keyof T)[]>[number]>, { [P in keyof T as Exclude<P, "lazyMount" | "unmountOnExit">]: T[P]; }];
@@ -1,8 +1,8 @@
1
1
  import { type ArkComponent, type HTMLArkProps } from '../factory';
2
- import { type UsePresenceProps } from '../presence';
2
+ import { type RenderStrategyProps } from '../render-strategy';
3
3
  import type { Assign } from '../types';
4
4
  import { type UseTabsProps } from './use-tabs';
5
- interface ElementProps extends UseTabsProps, UsePresenceProps {
5
+ interface ElementProps extends UseTabsProps, RenderStrategyProps {
6
6
  }
7
7
  export interface TabsRootProps extends Assign<HTMLArkProps<'div'>, ElementProps> {
8
8
  }
@@ -1,5 +0,0 @@
1
- import { createContext } from '../create-context';
2
- export const [PresencePropsProvider, usePresencePropsContext] = createContext({
3
- hookName: 'usePresencePropsContext',
4
- providerName: '<PresencePropsProvider />',
5
- });
@@ -1,4 +0,0 @@
1
- import type { UsePresenceProps } from './use-presence';
2
- export interface PresencePropsContext extends UsePresenceProps {
3
- }
4
- export declare const PresencePropsProvider: import("solid-js").ContextProviderComponent<PresencePropsContext>, usePresencePropsContext: () => PresencePropsContext;