@ark-ui/solid 0.10.1 → 0.11.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 (59) hide show
  1. package/CHANGELOG.md +14 -2
  2. package/accordion/accordion-content.cjs +14 -3
  3. package/accordion/accordion-content.d.ts +2 -1
  4. package/accordion/accordion-content.mjs +15 -4
  5. package/combobox/combobox-content.cjs +14 -3
  6. package/combobox/combobox-content.d.ts +2 -1
  7. package/combobox/combobox-content.mjs +15 -4
  8. package/dialog/dialog-backdrop.cjs +14 -3
  9. package/dialog/dialog-backdrop.d.ts +2 -1
  10. package/dialog/dialog-backdrop.mjs +15 -4
  11. package/dialog/dialog-content.cjs +14 -3
  12. package/dialog/dialog-content.d.ts +2 -1
  13. package/dialog/dialog-content.mjs +15 -4
  14. package/factory.cjs +0 -1
  15. package/factory.d.ts +0 -1
  16. package/factory.mjs +1 -1
  17. package/hover-card/hover-card-content.cjs +14 -3
  18. package/hover-card/hover-card-content.d.ts +2 -1
  19. package/hover-card/hover-card-content.mjs +15 -4
  20. package/index.cjs +32 -26
  21. package/index.d.ts +2 -0
  22. package/index.mjs +3 -0
  23. package/menu/menu-content.cjs +14 -3
  24. package/menu/menu-content.d.ts +2 -1
  25. package/menu/menu-content.mjs +15 -4
  26. package/package.json +11 -4
  27. package/popover/popover-content.cjs +13 -2
  28. package/popover/popover-content.d.ts +2 -1
  29. package/popover/popover-content.mjs +14 -3
  30. package/presence/index.cjs +13 -0
  31. package/presence/index.d.ts +8 -0
  32. package/presence/index.mjs +8 -0
  33. package/presence/presence.cjs +33 -0
  34. package/presence/presence.d.ts +17 -0
  35. package/presence/presence.mjs +29 -0
  36. package/presence/presence.stories.d.ts +10 -0
  37. package/presence/presence.test.d.ts +1 -0
  38. package/presence/split-presence-props.cjs +16 -0
  39. package/presence/split-presence-props.d.ts +2 -0
  40. package/presence/split-presence-props.mjs +12 -0
  41. package/presence/use-presence.cjs +35 -0
  42. package/presence/use-presence.d.ts +5 -0
  43. package/presence/use-presence.mjs +12 -0
  44. package/select/select-content.cjs +13 -2
  45. package/select/select-content.d.ts +2 -1
  46. package/select/select-content.mjs +14 -3
  47. package/tabs/tab-content.cjs +11 -3
  48. package/tabs/tab-content.d.ts +3 -4
  49. package/tabs/tab-content.mjs +12 -4
  50. package/tabs/tab-presence.cjs +18 -0
  51. package/tabs/tab-presence.d.ts +5 -0
  52. package/tabs/tab-presence.mjs +14 -0
  53. package/tabs/tabs.test.d.ts +1 -0
  54. package/tags-input/index.d.ts +1 -1
  55. package/tooltip/tooltip-content.cjs +13 -2
  56. package/tooltip/tooltip-content.d.ts +2 -1
  57. package/tooltip/tooltip-content.mjs +14 -3
  58. package/tooltip/tooltip-positioner.cjs +1 -9
  59. package/tooltip/tooltip-positioner.mjs +1 -9
@@ -5,12 +5,23 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5
5
  const web = require('solid-js/web');
6
6
  const solid = require('@zag-js/solid');
7
7
  const factory = require('../factory.cjs');
8
+ const index = require('../presence/index.cjs');
8
9
  const popoverContext = require('./popover-context.cjs');
10
+ const splitPresenceProps = require('../presence/split-presence-props.cjs');
9
11
 
10
12
  const PopoverContent = props => {
13
+ const [presenceProps, localProps] = splitPresenceProps.splitPresenceProps(props);
11
14
  const api = popoverContext.usePopoverContext();
12
- const contentProps = solid.mergeProps(() => api().contentProps, props);
13
- return web.createComponent(factory.ark.div, contentProps);
15
+ const mergedProps = solid.mergeProps(() => api().contentProps, localProps);
16
+ return web.createComponent(index.Presence, web.mergeProps({
17
+ get present() {
18
+ return api().isOpen;
19
+ }
20
+ }, presenceProps, {
21
+ get children() {
22
+ return web.createComponent(factory.ark.div, mergedProps);
23
+ }
24
+ }));
14
25
  };
15
26
 
16
27
  exports.PopoverContent = PopoverContent;
@@ -1,4 +1,5 @@
1
1
  import { JSX } from 'solid-js';
2
2
  import { type HTMLArkProps } from '../factory';
3
- export type PopoverContentProps = HTMLArkProps<'div'>;
3
+ import { type PresenceProps } from '../presence';
4
+ export type PopoverContentProps = HTMLArkProps<'div'> & PresenceProps;
4
5
  export declare const PopoverContent: (props: PopoverContentProps) => JSX.Element;
@@ -1,12 +1,23 @@
1
- import { createComponent } from 'solid-js/web';
1
+ import { createComponent, mergeProps as mergeProps$1 } from 'solid-js/web';
2
2
  import { mergeProps } from '@zag-js/solid';
3
3
  import { ark } from '../factory.mjs';
4
+ import { Presence } from '../presence/index.mjs';
4
5
  import { usePopoverContext } from './popover-context.mjs';
6
+ import { splitPresenceProps } from '../presence/split-presence-props.mjs';
5
7
 
6
8
  const PopoverContent = props => {
9
+ const [presenceProps, localProps] = splitPresenceProps(props);
7
10
  const api = usePopoverContext();
8
- const contentProps = mergeProps(() => api().contentProps, props);
9
- return createComponent(ark.div, contentProps);
11
+ const mergedProps = mergeProps(() => api().contentProps, localProps);
12
+ return createComponent(Presence, mergeProps$1({
13
+ get present() {
14
+ return api().isOpen;
15
+ }
16
+ }, presenceProps, {
17
+ get children() {
18
+ return createComponent(ark.div, mergedProps);
19
+ }
20
+ }));
10
21
  };
11
22
 
12
23
  export { PopoverContent };
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+
5
+ const presence = require('./presence.cjs');
6
+ const splitPresenceProps = require('./split-presence-props.cjs');
7
+
8
+ const Presence = Object.assign(presence.Presence, {
9
+ Root: presence.Presence
10
+ });
11
+
12
+ exports.splitPresenceProps = splitPresenceProps.splitPresenceProps;
13
+ exports.Presence = Presence;
@@ -0,0 +1,8 @@
1
+ import { JSX } from 'solid-js';
2
+ import { type PresenceProps } from './presence';
3
+ import { splitPresenceProps } from './split-presence-props';
4
+ declare const Presence: ((props: PresenceProps) => JSX.Element) & {
5
+ Root: (props: PresenceProps) => JSX.Element;
6
+ };
7
+ export { Presence, splitPresenceProps };
8
+ export type { PresenceProps };
@@ -0,0 +1,8 @@
1
+ import { Presence as Presence$1 } from './presence.mjs';
2
+ export { splitPresenceProps } from './split-presence-props.mjs';
3
+
4
+ const Presence = Object.assign(Presence$1, {
5
+ Root: Presence$1
6
+ });
7
+
8
+ export { Presence };
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+
5
+ const web = require('solid-js/web');
6
+ const solidJs = require('solid-js');
7
+ const createSplitProps = require('../create-split-props.cjs');
8
+ const usePresence = require('./use-presence.cjs');
9
+
10
+ const Presence = props => {
11
+ const [presenceProps, localProps] = createSplitProps.createSplitProps()(props, ['onExitComplete', 'present']);
12
+ const api = usePresence.usePresence(presenceProps);
13
+ const [wasEverPresent, setWasEverPresent] = solidJs.createSignal(false);
14
+ const getChildren = solidJs.children(() => props.children);
15
+ solidJs.createEffect(() => {
16
+ const isPresent = api().isPresent;
17
+ if (isPresent) setWasEverPresent(true);
18
+ const children = getChildren();
19
+ if (children instanceof HTMLElement) {
20
+ api().setNode(children);
21
+ web.spread(children, {
22
+ ['data-state']: presenceProps.present ? 'open' : 'closed',
23
+ hidden: !api().isPresent
24
+ });
25
+ }
26
+ });
27
+ return web.memo((() => {
28
+ const _c$ = web.memo(() => !!(!api().isPresent && !wasEverPresent() && localProps.lazyMount || localProps.unmountOnExit && !api().isPresent && wasEverPresent()));
29
+ return () => _c$() ? null : getChildren();
30
+ })());
31
+ };
32
+
33
+ exports.Presence = Presence;
@@ -0,0 +1,17 @@
1
+ import { JSX, type JSXElement } from 'solid-js';
2
+ import { type UsePresenceProps } from './use-presence';
3
+ export type PresenceProps = UsePresenceProps & {
4
+ /**
5
+ * Whether to enable lazy mounting. Defaults to `false`.
6
+ */
7
+ lazyMount?: boolean;
8
+ /**
9
+ * Whether to unmount on exit. Defaults to `false`.
10
+ */
11
+ unmountOnExit?: boolean;
12
+ /**
13
+ * The children to render.
14
+ */
15
+ children?: JSXElement;
16
+ };
17
+ export declare const Presence: (props: PresenceProps) => JSX.Element;
@@ -0,0 +1,29 @@
1
+ import { spread, memo } from 'solid-js/web';
2
+ import { createSignal, children, createEffect } from 'solid-js';
3
+ import { createSplitProps } from '../create-split-props.mjs';
4
+ import { usePresence } from './use-presence.mjs';
5
+
6
+ const Presence = props => {
7
+ const [presenceProps, localProps] = createSplitProps()(props, ['onExitComplete', 'present']);
8
+ const api = usePresence(presenceProps);
9
+ const [wasEverPresent, setWasEverPresent] = createSignal(false);
10
+ const getChildren = children(() => props.children);
11
+ createEffect(() => {
12
+ const isPresent = api().isPresent;
13
+ if (isPresent) setWasEverPresent(true);
14
+ const children = getChildren();
15
+ if (children instanceof HTMLElement) {
16
+ api().setNode(children);
17
+ spread(children, {
18
+ ['data-state']: presenceProps.present ? 'open' : 'closed',
19
+ hidden: !api().isPresent
20
+ });
21
+ }
22
+ });
23
+ return memo((() => {
24
+ const _c$ = memo(() => !!(!api().isPresent && !wasEverPresent() && localProps.lazyMount || localProps.unmountOnExit && !api().isPresent && wasEverPresent()));
25
+ return () => _c$() ? null : getChildren();
26
+ })());
27
+ };
28
+
29
+ export { Presence };
@@ -0,0 +1,10 @@
1
+ import { JSX } from 'solid-js';
2
+ import type { Meta } from 'storybook-solidjs';
3
+ import { Presence } from './presence';
4
+ type PresenceType = typeof Presence;
5
+ declare const meta: Meta<PresenceType>;
6
+ export default meta;
7
+ export declare const Basic: () => JSX.Element;
8
+ export declare const LazyMount: () => JSX.Element;
9
+ export declare const UnmountOnExit: () => JSX.Element;
10
+ export declare const LazyMountAndUnmountOnExit: () => JSX.Element;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+
5
+ const createSplitProps = require('../create-split-props.cjs');
6
+
7
+ function splitPresenceProps(props) {
8
+ return createSplitProps.createSplitProps()(props, [
9
+ "lazyMount",
10
+ "onExitComplete",
11
+ "present",
12
+ "unmountOnExit"
13
+ ]);
14
+ }
15
+
16
+ exports.splitPresenceProps = splitPresenceProps;
@@ -0,0 +1,2 @@
1
+ import type { PresenceProps } from './presence';
2
+ export declare function splitPresenceProps<T>(props: T & Omit<PresenceProps, 'children'>): [Pick<T & Omit<PresenceProps, "children">, "present" | "onExitComplete" | "lazyMount" | "unmountOnExit">, Omit<T & Omit<PresenceProps, "children">, "present" | "onExitComplete" | "lazyMount" | "unmountOnExit">];
@@ -0,0 +1,12 @@
1
+ import { createSplitProps } from '../create-split-props.mjs';
2
+
3
+ function splitPresenceProps(props) {
4
+ return createSplitProps()(props, [
5
+ "lazyMount",
6
+ "onExitComplete",
7
+ "present",
8
+ "unmountOnExit"
9
+ ]);
10
+ }
11
+
12
+ export { splitPresenceProps };
@@ -0,0 +1,35 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+
5
+ const presence = require('@zag-js/presence');
6
+ const solid = require('@zag-js/solid');
7
+ const solidJs = require('solid-js');
8
+
9
+ function _interopNamespaceDefault(e) {
10
+ const n = Object.create(null, { [Symbol.toStringTag]: { value: 'Module' } });
11
+ if (e) {
12
+ for (const k in e) {
13
+ if (k !== 'default') {
14
+ const d = Object.getOwnPropertyDescriptor(e, k);
15
+ Object.defineProperty(n, k, d.get ? d : {
16
+ enumerable: true,
17
+ get: () => e[k]
18
+ });
19
+ }
20
+ }
21
+ }
22
+ n.default = e;
23
+ return Object.freeze(n);
24
+ }
25
+
26
+ const presence__namespace = /*#__PURE__*/_interopNamespaceDefault(presence);
27
+
28
+ const usePresence = (props) => {
29
+ const [state, send] = solid.useMachine(presence__namespace.machine(props), {
30
+ context: props
31
+ });
32
+ return solidJs.createMemo(() => presence__namespace.connect(state, send, solid.normalizeProps));
33
+ };
34
+
35
+ exports.usePresence = usePresence;
@@ -0,0 +1,5 @@
1
+ import { Accessor } from 'solid-js';
2
+ import * as presence from '@zag-js/presence';
3
+ import type { Optional } from '../types';
4
+ export type UsePresenceProps = Optional<presence.Context, 'present'>;
5
+ export declare const usePresence: (props: UsePresenceProps) => Accessor<presence.Api>;
@@ -0,0 +1,12 @@
1
+ import * as presence from '@zag-js/presence';
2
+ import { useMachine, normalizeProps } from '@zag-js/solid';
3
+ import { createMemo } from 'solid-js';
4
+
5
+ const usePresence = (props) => {
6
+ const [state, send] = useMachine(presence.machine(props), {
7
+ context: props
8
+ });
9
+ return createMemo(() => presence.connect(state, send, normalizeProps));
10
+ };
11
+
12
+ export { usePresence };
@@ -5,12 +5,23 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5
5
  const web = require('solid-js/web');
6
6
  const solid = require('@zag-js/solid');
7
7
  const factory = require('../factory.cjs');
8
+ const index = require('../presence/index.cjs');
8
9
  const selectContext = require('./select-context.cjs');
10
+ const splitPresenceProps = require('../presence/split-presence-props.cjs');
9
11
 
10
12
  const SelectContent = props => {
13
+ const [presenceProps, localProps] = splitPresenceProps.splitPresenceProps(props);
11
14
  const api = selectContext.useSelectContext();
12
- const contentProps = solid.mergeProps(() => api().contentProps, props);
13
- return web.createComponent(factory.ark.div, contentProps);
15
+ const mergedProps = solid.mergeProps(() => api().contentProps, localProps);
16
+ return web.createComponent(index.Presence, web.mergeProps({
17
+ get present() {
18
+ return api().isOpen;
19
+ }
20
+ }, presenceProps, {
21
+ get children() {
22
+ return web.createComponent(factory.ark.div, mergedProps);
23
+ }
24
+ }));
14
25
  };
15
26
 
16
27
  exports.SelectContent = SelectContent;
@@ -1,4 +1,5 @@
1
1
  import { JSX } from 'solid-js';
2
2
  import { type HTMLArkProps } from '../factory';
3
- export type SelectContentProps = HTMLArkProps<'div'>;
3
+ import { type PresenceProps } from '../presence';
4
+ export type SelectContentProps = HTMLArkProps<'div'> & PresenceProps;
4
5
  export declare const SelectContent: (props: SelectContentProps) => JSX.Element;
@@ -1,12 +1,23 @@
1
- import { createComponent } from 'solid-js/web';
1
+ import { createComponent, mergeProps as mergeProps$1 } from 'solid-js/web';
2
2
  import { mergeProps } from '@zag-js/solid';
3
3
  import { ark } from '../factory.mjs';
4
+ import { Presence } from '../presence/index.mjs';
4
5
  import { useSelectContext } from './select-context.mjs';
6
+ import { splitPresenceProps } from '../presence/split-presence-props.mjs';
5
7
 
6
8
  const SelectContent = props => {
9
+ const [presenceProps, localProps] = splitPresenceProps(props);
7
10
  const api = useSelectContext();
8
- const contentProps = mergeProps(() => api().contentProps, props);
9
- return createComponent(ark.div, contentProps);
11
+ const mergedProps = mergeProps(() => api().contentProps, localProps);
12
+ return createComponent(Presence, mergeProps$1({
13
+ get present() {
14
+ return api().isOpen;
15
+ }
16
+ }, presenceProps, {
17
+ get children() {
18
+ return createComponent(ark.div, mergedProps);
19
+ }
20
+ }));
10
21
  };
11
22
 
12
23
  export { SelectContent };
@@ -6,13 +6,21 @@ const web = require('solid-js/web');
6
6
  const solid = require('@zag-js/solid');
7
7
  const createSplitProps = require('../create-split-props.cjs');
8
8
  const factory = require('../factory.cjs');
9
+ require('../presence/index.cjs');
10
+ const tabPresence = require('./tab-presence.cjs');
9
11
  const tabsContext = require('./tabs-context.cjs');
12
+ const splitPresenceProps = require('../presence/split-presence-props.cjs');
10
13
 
11
14
  const TabContent = props => {
12
- const [tabParams, restProps] = createSplitProps.createSplitProps()(props, ['value']);
15
+ const [presenceProps, localProps] = splitPresenceProps.splitPresenceProps(props);
16
+ const [getContentProps, restProps] = createSplitProps.createSplitProps()(localProps, ['value']);
13
17
  const api = tabsContext.useTabsContext();
14
- const contentProps = solid.mergeProps(() => api().getContentProps(tabParams), restProps);
15
- return web.createComponent(factory.ark.div, contentProps);
18
+ const contentProps = solid.mergeProps(() => api().getContentProps(getContentProps), restProps);
19
+ return web.createComponent(tabPresence.TabPresence, web.mergeProps(presenceProps, getContentProps, {
20
+ get children() {
21
+ return web.createComponent(factory.ark.div, contentProps);
22
+ }
23
+ }));
16
24
  };
17
25
 
18
26
  exports.TabContent = TabContent;
@@ -1,8 +1,7 @@
1
1
  import { JSX } from 'solid-js';
2
- import { type connect } from '@zag-js/tabs';
2
+ import { type ContentProps } from '@zag-js/tabs';
3
3
  import { type HTMLArkProps } from '../factory';
4
4
  import type { Assign } from '../types';
5
- type TabContentParams = Parameters<ReturnType<typeof connect>['getContentProps']>[0];
6
- export type TabContentProps = Assign<HTMLArkProps<'div'>, TabContentParams>;
5
+ import { type TabPresenceProps } from './tab-presence';
6
+ export type TabContentProps = Assign<HTMLArkProps<'div'>, ContentProps> & TabPresenceProps;
7
7
  export declare const TabContent: (props: TabContentProps) => JSX.Element;
8
- export {};
@@ -1,14 +1,22 @@
1
- import { createComponent } from 'solid-js/web';
1
+ import { createComponent, mergeProps as mergeProps$1 } from 'solid-js/web';
2
2
  import { mergeProps } from '@zag-js/solid';
3
3
  import { createSplitProps } from '../create-split-props.mjs';
4
4
  import { ark } from '../factory.mjs';
5
+ import '../presence/index.mjs';
6
+ import { TabPresence } from './tab-presence.mjs';
5
7
  import { useTabsContext } from './tabs-context.mjs';
8
+ import { splitPresenceProps } from '../presence/split-presence-props.mjs';
6
9
 
7
10
  const TabContent = props => {
8
- const [tabParams, restProps] = createSplitProps()(props, ['value']);
11
+ const [presenceProps, localProps] = splitPresenceProps(props);
12
+ const [getContentProps, restProps] = createSplitProps()(localProps, ['value']);
9
13
  const api = useTabsContext();
10
- const contentProps = mergeProps(() => api().getContentProps(tabParams), restProps);
11
- return createComponent(ark.div, contentProps);
14
+ const contentProps = mergeProps(() => api().getContentProps(getContentProps), restProps);
15
+ return createComponent(TabPresence, mergeProps$1(presenceProps, getContentProps, {
16
+ get children() {
17
+ return createComponent(ark.div, contentProps);
18
+ }
19
+ }));
12
20
  };
13
21
 
14
22
  export { TabContent };
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+
5
+ const web = require('solid-js/web');
6
+ const index = require('../presence/index.cjs');
7
+ const tabsContext = require('./tabs-context.cjs');
8
+
9
+ const TabPresence = props => {
10
+ const api = tabsContext.useTabsContext();
11
+ return web.createComponent(index.Presence, web.mergeProps({
12
+ get present() {
13
+ return api().value === props.value;
14
+ }
15
+ }, props));
16
+ };
17
+
18
+ exports.TabPresence = TabPresence;
@@ -0,0 +1,5 @@
1
+ import { JSX } from 'solid-js';
2
+ import type { ContentProps } from '@zag-js/tabs';
3
+ import { type PresenceProps } from '../presence';
4
+ export type TabPresenceProps = PresenceProps & ContentProps;
5
+ export declare const TabPresence: (props: TabPresenceProps) => JSX.Element;
@@ -0,0 +1,14 @@
1
+ import { createComponent, mergeProps } from 'solid-js/web';
2
+ import { Presence } from '../presence/index.mjs';
3
+ import { useTabsContext } from './tabs-context.mjs';
4
+
5
+ const TabPresence = props => {
6
+ const api = useTabsContext();
7
+ return createComponent(Presence, mergeProps({
8
+ get present() {
9
+ return api().value === props.value;
10
+ }
11
+ }, props));
12
+ };
13
+
14
+ export { TabPresence };
@@ -0,0 +1 @@
1
+ export {};
@@ -1,4 +1,4 @@
1
- import { HTMLArkProps } from '../factory';
1
+ import { HTMLArkProps } from '..';
2
2
  import { Assign } from '../types';
3
3
  import { JSX } from 'solid-js';
4
4
  import { Tag, type TagProps } from './tag';
@@ -5,12 +5,23 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5
5
  const web = require('solid-js/web');
6
6
  const solid = require('@zag-js/solid');
7
7
  const factory = require('../factory.cjs');
8
+ const index = require('../presence/index.cjs');
8
9
  const tooltipContext = require('./tooltip-context.cjs');
10
+ const splitPresenceProps = require('../presence/split-presence-props.cjs');
9
11
 
10
12
  const TooltipContent = props => {
13
+ const [presenceProps, localProps] = splitPresenceProps.splitPresenceProps(props);
11
14
  const api = tooltipContext.useTooltipContext();
12
- const contentProps = solid.mergeProps(() => api().contentProps, props);
13
- return web.createComponent(factory.ark.div, contentProps);
15
+ const contentProps = solid.mergeProps(() => api().contentProps, localProps);
16
+ return web.createComponent(index.Presence, web.mergeProps({
17
+ get present() {
18
+ return api().isOpen;
19
+ }
20
+ }, presenceProps, {
21
+ get children() {
22
+ return web.createComponent(factory.ark.div, contentProps);
23
+ }
24
+ }));
14
25
  };
15
26
 
16
27
  exports.TooltipContent = TooltipContent;
@@ -1,4 +1,5 @@
1
1
  import { JSX } from 'solid-js';
2
2
  import { type HTMLArkProps } from '../factory';
3
- export type TooltipContentProps = HTMLArkProps<'div'>;
3
+ import { type PresenceProps } from '../presence';
4
+ export type TooltipContentProps = HTMLArkProps<'div'> & PresenceProps;
4
5
  export declare const TooltipContent: (props: TooltipContentProps) => JSX.Element;
@@ -1,12 +1,23 @@
1
- import { createComponent } from 'solid-js/web';
1
+ import { createComponent, mergeProps as mergeProps$1 } from 'solid-js/web';
2
2
  import { mergeProps } from '@zag-js/solid';
3
3
  import { ark } from '../factory.mjs';
4
+ import { Presence } from '../presence/index.mjs';
4
5
  import { useTooltipContext } from './tooltip-context.mjs';
6
+ import { splitPresenceProps } from '../presence/split-presence-props.mjs';
5
7
 
6
8
  const TooltipContent = props => {
9
+ const [presenceProps, localProps] = splitPresenceProps(props);
7
10
  const api = useTooltipContext();
8
- const contentProps = mergeProps(() => api().contentProps, props);
9
- return createComponent(ark.div, contentProps);
11
+ const contentProps = mergeProps(() => api().contentProps, localProps);
12
+ return createComponent(Presence, mergeProps$1({
13
+ get present() {
14
+ return api().isOpen;
15
+ }
16
+ }, presenceProps, {
17
+ get children() {
18
+ return createComponent(ark.div, contentProps);
19
+ }
20
+ }));
10
21
  };
11
22
 
12
23
  export { TooltipContent };
@@ -4,21 +4,13 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
5
  const web = require('solid-js/web');
6
6
  const solid = require('@zag-js/solid');
7
- const solidJs = require('solid-js');
8
7
  const factory = require('../factory.cjs');
9
8
  const tooltipContext = require('./tooltip-context.cjs');
10
9
 
11
10
  const TooltipPositioner = props => {
12
11
  const api = tooltipContext.useTooltipContext();
13
12
  const positionerProps = solid.mergeProps(() => api().positionerProps, props);
14
- return web.createComponent(solidJs.Show, {
15
- get when() {
16
- return api().isOpen;
17
- },
18
- get children() {
19
- return web.createComponent(factory.ark.div, positionerProps);
20
- }
21
- });
13
+ return web.createComponent(factory.ark.div, positionerProps);
22
14
  };
23
15
 
24
16
  exports.TooltipPositioner = TooltipPositioner;
@@ -1,20 +1,12 @@
1
1
  import { createComponent } from 'solid-js/web';
2
2
  import { mergeProps } from '@zag-js/solid';
3
- import { Show } from 'solid-js';
4
3
  import { ark } from '../factory.mjs';
5
4
  import { useTooltipContext } from './tooltip-context.mjs';
6
5
 
7
6
  const TooltipPositioner = props => {
8
7
  const api = useTooltipContext();
9
8
  const positionerProps = mergeProps(() => api().positionerProps, props);
10
- return createComponent(Show, {
11
- get when() {
12
- return api().isOpen;
13
- },
14
- get children() {
15
- return createComponent(ark.div, positionerProps);
16
- }
17
- });
9
+ return createComponent(ark.div, positionerProps);
18
10
  };
19
11
 
20
12
  export { TooltipPositioner };