@ark-ui/react 1.0.0-beta.4 → 1.0.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 (157) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/accordion/accordion-context.d.ts +2 -1
  3. package/accordion/accordion-item-content.cjs +14 -21
  4. package/accordion/accordion-item-content.d.ts +1 -3
  5. package/accordion/accordion-item-content.mjs +14 -21
  6. package/accordion/accordion-item-context.d.ts +2 -2
  7. package/accordion/accordion-item-trigger.cjs +11 -1
  8. package/accordion/accordion-item-trigger.mjs +11 -1
  9. package/accordion/accordion-item.cjs +7 -1
  10. package/accordion/accordion-item.d.ts +4 -5
  11. package/accordion/accordion-item.mjs +7 -1
  12. package/accordion/accordion.cjs +7 -3
  13. package/accordion/accordion.d.ts +2 -1
  14. package/accordion/accordion.mjs +7 -3
  15. package/carousel/carousel.d.ts +4 -5
  16. package/checkbox/checkbox.cjs +2 -2
  17. package/checkbox/checkbox.d.ts +4 -5
  18. package/checkbox/checkbox.mjs +2 -2
  19. package/color-picker/color-picker-content.cjs +8 -11
  20. package/color-picker/color-picker-content.d.ts +1 -3
  21. package/color-picker/color-picker-content.mjs +8 -11
  22. package/color-picker/color-picker-positioner.cjs +6 -0
  23. package/color-picker/color-picker-positioner.mjs +6 -0
  24. package/color-picker/color-picker-view.cjs +29 -0
  25. package/color-picker/color-picker-view.d.ts +8 -0
  26. package/color-picker/color-picker-view.mjs +25 -0
  27. package/color-picker/color-picker.cjs +31 -28
  28. package/color-picker/color-picker.d.ts +6 -5
  29. package/color-picker/color-picker.mjs +32 -29
  30. package/color-picker/index.cjs +3 -1
  31. package/color-picker/index.d.ts +3 -1
  32. package/color-picker/index.mjs +3 -1
  33. package/combobox/combobox-content.cjs +8 -11
  34. package/combobox/combobox-content.d.ts +1 -3
  35. package/combobox/combobox-content.mjs +8 -11
  36. package/combobox/combobox-item.d.ts +6 -4
  37. package/combobox/combobox-positioner.cjs +6 -0
  38. package/combobox/combobox-positioner.mjs +6 -0
  39. package/combobox/combobox.cjs +8 -2
  40. package/combobox/combobox.d.ts +4 -3
  41. package/combobox/combobox.mjs +8 -2
  42. package/date-picker/date-picker-content.cjs +8 -11
  43. package/date-picker/date-picker-content.d.ts +1 -3
  44. package/date-picker/date-picker-content.mjs +8 -11
  45. package/date-picker/date-picker-positioner.cjs +6 -0
  46. package/date-picker/date-picker-positioner.mjs +6 -0
  47. package/date-picker/date-picker-view.d.ts +3 -3
  48. package/date-picker/date-picker.cjs +10 -4
  49. package/date-picker/date-picker.d.ts +6 -5
  50. package/date-picker/date-picker.mjs +10 -4
  51. package/dialog/dialog-backdrop.cjs +8 -11
  52. package/dialog/dialog-backdrop.d.ts +1 -3
  53. package/dialog/dialog-backdrop.mjs +8 -11
  54. package/dialog/dialog-content.cjs +8 -11
  55. package/dialog/dialog-content.d.ts +1 -3
  56. package/dialog/dialog-content.mjs +8 -11
  57. package/dialog/dialog-positioner.cjs +6 -0
  58. package/dialog/dialog-positioner.mjs +6 -0
  59. package/dialog/dialog-trigger.cjs +10 -1
  60. package/dialog/dialog-trigger.mjs +10 -1
  61. package/dialog/dialog.cjs +8 -3
  62. package/dialog/dialog.d.ts +4 -6
  63. package/dialog/dialog.mjs +8 -3
  64. package/editable/editable.d.ts +4 -5
  65. package/environment/environment-context.d.ts +1 -1
  66. package/hover-card/hover-card-content.cjs +8 -11
  67. package/hover-card/hover-card-content.d.ts +1 -3
  68. package/hover-card/hover-card-content.mjs +8 -11
  69. package/hover-card/hover-card-positioner.cjs +6 -0
  70. package/hover-card/hover-card-positioner.mjs +6 -0
  71. package/hover-card/hover-card.cjs +8 -3
  72. package/hover-card/hover-card.d.ts +4 -6
  73. package/hover-card/hover-card.mjs +8 -3
  74. package/index.cjs +8 -0
  75. package/index.mjs +3 -0
  76. package/menu/menu-content.cjs +8 -11
  77. package/menu/menu-content.d.ts +1 -3
  78. package/menu/menu-content.mjs +8 -11
  79. package/menu/menu-option-item.d.ts +2 -2
  80. package/menu/menu.cjs +11 -12
  81. package/menu/menu.d.ts +4 -11
  82. package/menu/menu.mjs +12 -13
  83. package/package.json +49 -50
  84. package/pagination/pagination.d.ts +3 -3
  85. package/popover/popover-content.cjs +8 -11
  86. package/popover/popover-content.d.ts +1 -3
  87. package/popover/popover-content.mjs +8 -11
  88. package/popover/popover-positioner.cjs +6 -0
  89. package/popover/popover-positioner.mjs +6 -0
  90. package/popover/popover-trigger.cjs +10 -1
  91. package/popover/popover-trigger.mjs +10 -1
  92. package/popover/popover.cjs +8 -3
  93. package/popover/popover.d.ts +4 -6
  94. package/popover/popover.mjs +8 -3
  95. package/presence/index.cjs +8 -0
  96. package/presence/index.d.ts +8 -5
  97. package/presence/index.mjs +3 -0
  98. package/presence/presence-context.cjs +15 -0
  99. package/presence/presence-context.d.ts +6 -0
  100. package/presence/presence-context.mjs +10 -0
  101. package/presence/presence-props-context.cjs +17 -0
  102. package/presence/presence-props-context.d.ts +6 -0
  103. package/presence/presence-props-context.mjs +12 -0
  104. package/presence/presence.cjs +18 -19
  105. package/presence/presence.d.ts +6 -21
  106. package/presence/presence.mjs +19 -20
  107. package/presence/split-presence-props.d.ts +2 -2
  108. package/presence/use-presence.cjs +22 -4
  109. package/presence/use-presence.d.ts +21 -1
  110. package/presence/use-presence.mjs +20 -2
  111. package/radio-group/radio-group-item.d.ts +2 -3
  112. package/rating-group/rating-group-control.d.ts +5 -3
  113. package/rating-group/rating-group-item.d.ts +4 -5
  114. package/segment-group/segment-group-item.d.ts +2 -3
  115. package/segment-group/segment-group.anatomy.d.ts +2 -0
  116. package/select/select-content.cjs +8 -11
  117. package/select/select-content.d.ts +1 -3
  118. package/select/select-content.mjs +8 -11
  119. package/select/select-item.d.ts +2 -3
  120. package/select/select-positioner.cjs +6 -0
  121. package/select/select-positioner.mjs +6 -0
  122. package/select/select.cjs +8 -2
  123. package/select/select.d.ts +4 -3
  124. package/select/select.mjs +8 -2
  125. package/slider/slider-value-text.cjs +1 -3
  126. package/slider/slider-value-text.d.ts +3 -6
  127. package/slider/slider-value-text.mjs +1 -3
  128. package/slider/slider.d.ts +3 -3
  129. package/splitter/splitter.d.ts +3 -3
  130. package/switch/switch.d.ts +3 -3
  131. package/switch/switch.stories.d.ts +1 -0
  132. package/tabs/tab-content.cjs +13 -12
  133. package/tabs/tab-content.d.ts +2 -4
  134. package/tabs/tab-content.mjs +13 -12
  135. package/tabs/tabs.cjs +7 -3
  136. package/tabs/tabs.d.ts +2 -1
  137. package/tabs/tabs.mjs +7 -3
  138. package/tags-input/tags-input-item.d.ts +4 -5
  139. package/tags-input/tags-input.d.ts +3 -3
  140. package/toast/toast.stories.d.ts +3 -1
  141. package/tooltip/tooltip-content.cjs +8 -11
  142. package/tooltip/tooltip-content.d.ts +1 -3
  143. package/tooltip/tooltip-content.mjs +8 -11
  144. package/tooltip/tooltip-positioner.cjs +6 -0
  145. package/tooltip/tooltip-positioner.mjs +6 -0
  146. package/tooltip/tooltip.cjs +8 -3
  147. package/tooltip/tooltip.d.ts +4 -4
  148. package/tooltip/tooltip.mjs +8 -3
  149. package/types.d.ts +1 -3
  150. package/use-event.cjs +6 -2
  151. package/use-event.mjs +6 -2
  152. package/tabs/tab-presence.cjs +0 -17
  153. package/tabs/tab-presence.d.ts +0 -6
  154. package/tabs/tab-presence.mjs +0 -13
  155. package/use-latest-ref.cjs +0 -14
  156. package/use-latest-ref.d.ts +0 -3
  157. package/use-latest-ref.mjs +0 -10
@@ -2,8 +2,8 @@ import { ForwardRefExoticComponent, RefAttributes, ReactNode } from 'react';
2
2
  import { type HTMLArkProps } from '../factory';
3
3
  import type { Assign } from '../types';
4
4
  import { type UseSplitterProps, type UseSplitterReturn } from './use-splitter';
5
- export interface SplitterProps extends Assign<HTMLArkProps<'div'>, UseSplitterProps & {
6
- children?: ReactNode | ((state: UseSplitterReturn) => ReactNode);
7
- }> {
5
+ export interface SplitterProps extends Assign<Assign<HTMLArkProps<'div'>, {
6
+ children?: ReactNode | ((api: UseSplitterReturn) => ReactNode);
7
+ }>, UseSplitterProps> {
8
8
  }
9
9
  export declare const Splitter: ForwardRefExoticComponent<SplitterProps & RefAttributes<HTMLDivElement>>;
@@ -2,8 +2,8 @@ import { ForwardRefExoticComponent, RefAttributes, ReactNode } from 'react';
2
2
  import { type HTMLArkProps } from '../factory';
3
3
  import type { Assign } from '../types';
4
4
  import { type UseSwitchProps, type UseSwitchReturn } from './use-switch';
5
- export interface SwitchProps extends Assign<Assign<HTMLArkProps<'label'>, UseSwitchProps>, {
6
- children?: ReactNode | ((pages: UseSwitchReturn) => ReactNode);
7
- }> {
5
+ export interface SwitchProps extends Assign<Assign<HTMLArkProps<'label'>, {
6
+ children?: ReactNode | ((api: UseSwitchReturn) => ReactNode);
7
+ }>, UseSwitchProps> {
8
8
  }
9
9
  export declare const Switch: ForwardRefExoticComponent<SwitchProps & RefAttributes<HTMLLabelElement>>;
@@ -5,6 +5,7 @@ type SwitchType = typeof Switch;
5
5
  declare const meta: Meta<SwitchType>;
6
6
  export default meta;
7
7
  export declare const Basic: () => JSX.Element;
8
+ export declare const InitialValue: () => JSX.Element;
8
9
  export declare const Controlled: () => JSX.Element;
9
10
  export declare const Disabled: () => JSX.Element;
10
11
  export declare const RenderProp: () => JSX.Element;
@@ -10,22 +10,23 @@ const react = require('react');
10
10
  const createSplitProps = require('../create-split-props.cjs');
11
11
  const factory = require('../factory.cjs');
12
12
  require('../presence/index.cjs');
13
- const tabPresence = require('./tab-presence.cjs');
14
13
  const tabsContext = require('./tabs-context.cjs');
15
- const splitPresenceProps = require('../presence/split-presence-props.cjs');
14
+ const presencePropsContext = require('../presence/presence-props-context.cjs');
15
+ const usePresence = require('../presence/use-presence.cjs');
16
+ const presenceContext = require('../presence/presence-context.cjs');
16
17
 
17
18
  const TabContent = react.forwardRef((props, ref) => {
18
- const [presenceProps, tabContentProps] = splitPresenceProps.splitPresenceProps(props);
19
- const [contentProps, localProps] = createSplitProps.createSplitProps()(tabContentProps, ["value"]);
20
- return /* @__PURE__ */ jsxRuntime.jsx(tabPresence.TabPresence, { ...presenceProps, ...contentProps, children: /* @__PURE__ */ jsxRuntime.jsx(InnerTabContent, { ref, ...contentProps, ...localProps }) });
21
- });
22
- TabContent.displayName = "TabContent";
23
- const InnerTabContent = react.forwardRef((props, ref) => {
24
- const [tabContentProps, divProps] = createSplitProps.createSplitProps()(props, ["value"]);
19
+ const [contentProps, localProps] = createSplitProps.createSplitProps()(props, ["value"]);
25
20
  const api = tabsContext.useTabsContext();
26
- const mergedProps = react$1.mergeProps(api.getContentProps(tabContentProps), divProps);
27
- return /* @__PURE__ */ jsxRuntime.jsx(factory.ark.div, { ...mergedProps, ref });
21
+ const presenceProps = presencePropsContext.usePresencePropsContext();
22
+ const presenceApi = usePresence.usePresence({ ...presenceProps, present: api.value === props.value });
23
+ const mergedProps = react$1.mergeProps(
24
+ api.getContentProps(contentProps),
25
+ presenceApi.getPresenceProps(ref),
26
+ localProps
27
+ );
28
+ return /* @__PURE__ */ jsxRuntime.jsx(presenceContext.PresenceProvider, { value: presenceApi, children: presenceApi.isUnmounted ? null : /* @__PURE__ */ jsxRuntime.jsx(factory.ark.div, { ...mergedProps }) });
28
29
  });
29
- InnerTabContent.displayName = "InnerTabContent";
30
+ TabContent.displayName = "TabContent";
30
31
 
31
32
  exports.TabContent = TabContent;
@@ -2,9 +2,7 @@ import { ForwardRefExoticComponent, RefAttributes } from 'react';
2
2
  /// <reference types="react" />
3
3
  import { type ContentProps } from '@zag-js/tabs';
4
4
  import { type HTMLArkProps } from '../factory';
5
- import { type TabPresenceProps } from './tab-presence';
6
- export interface TabContentProps extends InnerTabContentProps, Omit<TabPresenceProps, 'children' | 'fallback'> {
5
+ import type { Assign } from '../types';
6
+ export interface TabContentProps extends Assign<HTMLArkProps<'div'>, ContentProps> {
7
7
  }
8
8
  export declare const TabContent: ForwardRefExoticComponent<TabContentProps & RefAttributes<HTMLDivElement>>;
9
- type InnerTabContentProps = HTMLArkProps<'div'> & ContentProps;
10
- export {};
@@ -6,22 +6,23 @@ import { forwardRef } from 'react';
6
6
  import { createSplitProps } from '../create-split-props.mjs';
7
7
  import { ark } from '../factory.mjs';
8
8
  import '../presence/index.mjs';
9
- import { TabPresence } from './tab-presence.mjs';
10
9
  import { useTabsContext } from './tabs-context.mjs';
11
- import { splitPresenceProps } from '../presence/split-presence-props.mjs';
10
+ import { usePresencePropsContext } from '../presence/presence-props-context.mjs';
11
+ import { usePresence } from '../presence/use-presence.mjs';
12
+ import { PresenceProvider } from '../presence/presence-context.mjs';
12
13
 
13
14
  const TabContent = forwardRef((props, ref) => {
14
- const [presenceProps, tabContentProps] = splitPresenceProps(props);
15
- const [contentProps, localProps] = createSplitProps()(tabContentProps, ["value"]);
16
- return /* @__PURE__ */ jsx(TabPresence, { ...presenceProps, ...contentProps, children: /* @__PURE__ */ jsx(InnerTabContent, { ref, ...contentProps, ...localProps }) });
17
- });
18
- TabContent.displayName = "TabContent";
19
- const InnerTabContent = forwardRef((props, ref) => {
20
- const [tabContentProps, divProps] = createSplitProps()(props, ["value"]);
15
+ const [contentProps, localProps] = createSplitProps()(props, ["value"]);
21
16
  const api = useTabsContext();
22
- const mergedProps = mergeProps(api.getContentProps(tabContentProps), divProps);
23
- return /* @__PURE__ */ jsx(ark.div, { ...mergedProps, ref });
17
+ const presenceProps = usePresencePropsContext();
18
+ const presenceApi = usePresence({ ...presenceProps, present: api.value === props.value });
19
+ const mergedProps = mergeProps(
20
+ api.getContentProps(contentProps),
21
+ presenceApi.getPresenceProps(ref),
22
+ localProps
23
+ );
24
+ return /* @__PURE__ */ jsx(PresenceProvider, { value: presenceApi, children: presenceApi.isUnmounted ? null : /* @__PURE__ */ jsx(ark.div, { ...mergedProps }) });
24
25
  });
25
- InnerTabContent.displayName = "InnerTabContent";
26
+ TabContent.displayName = "TabContent";
26
27
 
27
28
  export { TabContent };
package/tabs/tabs.cjs CHANGED
@@ -8,11 +8,15 @@ const react$1 = require('@zag-js/react');
8
8
  const react = require('react');
9
9
  const createSplitProps = require('../create-split-props.cjs');
10
10
  const factory = require('../factory.cjs');
11
+ require('../presence/index.cjs');
11
12
  const tabsContext = require('./tabs-context.cjs');
12
13
  const useTabs = require('./use-tabs.cjs');
14
+ const splitPresenceProps = require('../presence/split-presence-props.cjs');
15
+ const presencePropsContext = require('../presence/presence-props-context.cjs');
13
16
 
14
17
  const Tabs = react.forwardRef((props, ref) => {
15
- const [useTabsProps, divProps] = createSplitProps.createSplitProps()(props, [
18
+ const [presenceProps, tabsProps] = splitPresenceProps.splitPresenceProps(props);
19
+ const [useTabsProps, localprops] = createSplitProps.createSplitProps()(tabsProps, [
16
20
  "activationMode",
17
21
  "defaultValue",
18
22
  "dir",
@@ -27,8 +31,8 @@ const Tabs = react.forwardRef((props, ref) => {
27
31
  "value"
28
32
  ]);
29
33
  const api = useTabs.useTabs(useTabsProps);
30
- const mergedProps = react$1.mergeProps(api.rootProps, divProps);
31
- return /* @__PURE__ */ jsxRuntime.jsx(tabsContext.TabsProvider, { value: api, children: /* @__PURE__ */ jsxRuntime.jsx(factory.ark.div, { ...mergedProps, ref }) });
34
+ const mergedProps = react$1.mergeProps(api.rootProps, localprops);
35
+ return /* @__PURE__ */ jsxRuntime.jsx(tabsContext.TabsProvider, { value: api, children: /* @__PURE__ */ jsxRuntime.jsx(presencePropsContext.PresencePropsProvider, { value: presenceProps, children: /* @__PURE__ */ jsxRuntime.jsx(factory.ark.div, { ...mergedProps, ref }) }) });
32
36
  });
33
37
  Tabs.displayName = "Tabs";
34
38
 
package/tabs/tabs.d.ts CHANGED
@@ -1,8 +1,9 @@
1
1
  import { ForwardRefExoticComponent, RefAttributes } from 'react';
2
2
  /// <reference types="react" />
3
3
  import { type HTMLArkProps } from '../factory';
4
+ import { type UsePresenceProps } from '../presence';
4
5
  import { type Assign } from '../types';
5
6
  import { type UseTabsProps } from './use-tabs';
6
- export interface TabsProps extends Assign<HTMLArkProps<'div'>, UseTabsProps> {
7
+ export interface TabsProps extends Assign<HTMLArkProps<'div'>, UseTabsProps>, UsePresenceProps {
7
8
  }
8
9
  export declare const Tabs: ForwardRefExoticComponent<TabsProps & RefAttributes<HTMLDivElement>>;
package/tabs/tabs.mjs CHANGED
@@ -4,11 +4,15 @@ import { mergeProps } from '@zag-js/react';
4
4
  import { forwardRef } from 'react';
5
5
  import { createSplitProps } from '../create-split-props.mjs';
6
6
  import { ark } from '../factory.mjs';
7
+ import '../presence/index.mjs';
7
8
  import { TabsProvider } from './tabs-context.mjs';
8
9
  import { useTabs } from './use-tabs.mjs';
10
+ import { splitPresenceProps } from '../presence/split-presence-props.mjs';
11
+ import { PresencePropsProvider } from '../presence/presence-props-context.mjs';
9
12
 
10
13
  const Tabs = forwardRef((props, ref) => {
11
- const [useTabsProps, divProps] = createSplitProps()(props, [
14
+ const [presenceProps, tabsProps] = splitPresenceProps(props);
15
+ const [useTabsProps, localprops] = createSplitProps()(tabsProps, [
12
16
  "activationMode",
13
17
  "defaultValue",
14
18
  "dir",
@@ -23,8 +27,8 @@ const Tabs = forwardRef((props, ref) => {
23
27
  "value"
24
28
  ]);
25
29
  const api = useTabs(useTabsProps);
26
- const mergedProps = mergeProps(api.rootProps, divProps);
27
- return /* @__PURE__ */ jsx(TabsProvider, { value: api, children: /* @__PURE__ */ jsx(ark.div, { ...mergedProps, ref }) });
30
+ const mergedProps = mergeProps(api.rootProps, localprops);
31
+ return /* @__PURE__ */ jsx(TabsProvider, { value: api, children: /* @__PURE__ */ jsx(PresencePropsProvider, { value: presenceProps, children: /* @__PURE__ */ jsx(ark.div, { ...mergedProps, ref }) }) });
28
32
  });
29
33
  Tabs.displayName = "Tabs";
30
34
 
@@ -1,10 +1,9 @@
1
- import { ForwardRefExoticComponent, RefAttributes } from 'react';
2
- /// <reference types="react" />
3
1
  import type { ItemProps, ItemState } from '@zag-js/tags-input';
2
+ import { ForwardRefExoticComponent, RefAttributes, type ReactNode } from 'react';
4
3
  import { type HTMLArkProps } from '../factory';
5
4
  import { type Assign } from '../types';
6
- export interface TagsInputItemProps extends ItemProps, Assign<HTMLArkProps<'div'>, {
7
- children?: React.ReactNode | ((props: ItemState) => React.ReactNode);
8
- }> {
5
+ export interface TagsInputItemProps extends Assign<HTMLArkProps<'div'>, {
6
+ children?: ReactNode | ((state: ItemState) => ReactNode);
7
+ }>, ItemProps {
9
8
  }
10
9
  export declare const TagsInputItem: ForwardRefExoticComponent<TagsInputItemProps & RefAttributes<HTMLDivElement>>;
@@ -2,8 +2,8 @@ import { ForwardRefExoticComponent, RefAttributes, type ReactNode } from 'react'
2
2
  import { type HTMLArkProps } from '../factory';
3
3
  import { type Assign } from '../types';
4
4
  import { type UseTagsInputProps, type UseTagsInputReturn } from './use-tags-input';
5
- export interface TagsInputProps extends Assign<Assign<HTMLArkProps<'input'>, UseTagsInputProps>, {
6
- children?: ReactNode | ((pages: UseTagsInputReturn) => ReactNode);
7
- }> {
5
+ export interface TagsInputProps extends Assign<Assign<HTMLArkProps<'div'>, {
6
+ children?: ReactNode | ((api: UseTagsInputReturn) => ReactNode);
7
+ }>, UseTagsInputProps> {
8
8
  }
9
9
  export declare const TagsInput: ForwardRefExoticComponent<TagsInputProps & RefAttributes<HTMLInputElement>>;
@@ -1,6 +1,8 @@
1
1
  import { JSX } from 'react/jsx-runtime';
2
2
  import type { Meta } from '@storybook/react';
3
- declare const meta: Meta;
3
+ import { Toast } from './';
4
+ type ToastType = typeof Toast;
5
+ declare const meta: Meta<ToastType>;
4
6
  export default meta;
5
7
  export declare const Basic: () => JSX.Element;
6
8
  export declare const Customized: () => JSX.Element;
@@ -7,22 +7,19 @@ const jsxRuntime = require('react/jsx-runtime');
7
7
  const react$1 = require('@zag-js/react');
8
8
  const react = require('react');
9
9
  const factory = require('../factory.cjs');
10
- const index = require('../presence/index.cjs');
10
+ require('../presence/index.cjs');
11
11
  const tooltipContext = require('./tooltip-context.cjs');
12
- const splitPresenceProps = require('../presence/split-presence-props.cjs');
12
+ const presenceContext = require('../presence/presence-context.cjs');
13
13
 
14
14
  const TooltipContent = react.forwardRef((props, ref) => {
15
- const [presenceProps, tooltipContentProps] = splitPresenceProps.splitPresenceProps(props);
16
15
  const api = tooltipContext.useTooltipContext();
17
- return /* @__PURE__ */ jsxRuntime.jsx(index.Presence, { present: api.isOpen, ...presenceProps, fallback: /* @__PURE__ */ jsxRuntime.jsx("div", { ...api.contentProps }), children: /* @__PURE__ */ jsxRuntime.jsx(TooltipInnerContent, { ref, ...tooltipContentProps }) });
16
+ const presenceApi = presenceContext.usePresenceContext();
17
+ const mergedProps = react$1.mergeProps(api.contentProps, presenceApi.getPresenceProps(ref), props);
18
+ if (presenceApi.isUnmounted) {
19
+ return null;
20
+ }
21
+ return /* @__PURE__ */ jsxRuntime.jsx(factory.ark.div, { ...mergedProps });
18
22
  });
19
23
  TooltipContent.displayName = "TooltipContent";
20
- const TooltipInnerContent = react.forwardRef(
21
- function TooltipInnerContent2(props, ref) {
22
- const api = tooltipContext.useTooltipContext();
23
- const mergedProps = react$1.mergeProps(api.contentProps, props);
24
- return /* @__PURE__ */ jsxRuntime.jsx(factory.ark.div, { ...mergedProps, ref });
25
- }
26
- );
27
24
 
28
25
  exports.TooltipContent = TooltipContent;
@@ -1,8 +1,6 @@
1
1
  import { ForwardRefExoticComponent, RefAttributes } from 'react';
2
2
  /// <reference types="react" />
3
3
  import { type HTMLArkProps } from '../factory';
4
- import { type PresenceProps } from '../presence';
5
- import type { Assign } from '../types';
6
- export interface TooltipContentProps extends Assign<HTMLArkProps<'div'>, Omit<PresenceProps, 'children' | 'fallback'>> {
4
+ export interface TooltipContentProps extends HTMLArkProps<'div'> {
7
5
  }
8
6
  export declare const TooltipContent: ForwardRefExoticComponent<TooltipContentProps & RefAttributes<HTMLDivElement>>;
@@ -3,22 +3,19 @@ import { jsx } from 'react/jsx-runtime';
3
3
  import { mergeProps } from '@zag-js/react';
4
4
  import { forwardRef } from 'react';
5
5
  import { ark } from '../factory.mjs';
6
- import { Presence } from '../presence/index.mjs';
6
+ import '../presence/index.mjs';
7
7
  import { useTooltipContext } from './tooltip-context.mjs';
8
- import { splitPresenceProps } from '../presence/split-presence-props.mjs';
8
+ import { usePresenceContext } from '../presence/presence-context.mjs';
9
9
 
10
10
  const TooltipContent = forwardRef((props, ref) => {
11
- const [presenceProps, tooltipContentProps] = splitPresenceProps(props);
12
11
  const api = useTooltipContext();
13
- return /* @__PURE__ */ jsx(Presence, { present: api.isOpen, ...presenceProps, fallback: /* @__PURE__ */ jsx("div", { ...api.contentProps }), children: /* @__PURE__ */ jsx(TooltipInnerContent, { ref, ...tooltipContentProps }) });
12
+ const presenceApi = usePresenceContext();
13
+ const mergedProps = mergeProps(api.contentProps, presenceApi.getPresenceProps(ref), props);
14
+ if (presenceApi.isUnmounted) {
15
+ return null;
16
+ }
17
+ return /* @__PURE__ */ jsx(ark.div, { ...mergedProps });
14
18
  });
15
19
  TooltipContent.displayName = "TooltipContent";
16
- const TooltipInnerContent = forwardRef(
17
- function TooltipInnerContent2(props, ref) {
18
- const api = useTooltipContext();
19
- const mergedProps = mergeProps(api.contentProps, props);
20
- return /* @__PURE__ */ jsx(ark.div, { ...mergedProps, ref });
21
- }
22
- );
23
20
 
24
21
  export { TooltipContent };
@@ -7,12 +7,18 @@ const jsxRuntime = require('react/jsx-runtime');
7
7
  const react$1 = require('@zag-js/react');
8
8
  const react = require('react');
9
9
  const factory = require('../factory.cjs');
10
+ require('../presence/index.cjs');
10
11
  const tooltipContext = require('./tooltip-context.cjs');
12
+ const presenceContext = require('../presence/presence-context.cjs');
11
13
 
12
14
  const TooltipPositioner = react.forwardRef(
13
15
  (props, ref) => {
14
16
  const api = tooltipContext.useTooltipContext();
15
17
  const mergedProps = react$1.mergeProps(api.positionerProps, props);
18
+ const presenceApi = presenceContext.usePresenceContext();
19
+ if (presenceApi.isUnmounted) {
20
+ return null;
21
+ }
16
22
  return /* @__PURE__ */ jsxRuntime.jsx(factory.ark.div, { ...mergedProps, ref });
17
23
  }
18
24
  );
@@ -3,12 +3,18 @@ import { jsx } from 'react/jsx-runtime';
3
3
  import { mergeProps } from '@zag-js/react';
4
4
  import { forwardRef } from 'react';
5
5
  import { ark } from '../factory.mjs';
6
+ import '../presence/index.mjs';
6
7
  import { useTooltipContext } from './tooltip-context.mjs';
8
+ import { usePresenceContext } from '../presence/presence-context.mjs';
7
9
 
8
10
  const TooltipPositioner = forwardRef(
9
11
  (props, ref) => {
10
12
  const api = useTooltipContext();
11
13
  const mergedProps = mergeProps(api.positionerProps, props);
14
+ const presenceApi = usePresenceContext();
15
+ if (presenceApi.isUnmounted) {
16
+ return null;
17
+ }
12
18
  return /* @__PURE__ */ jsx(ark.div, { ...mergedProps, ref });
13
19
  }
14
20
  );
@@ -5,15 +5,20 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5
5
 
6
6
  const jsxRuntime = require('react/jsx-runtime');
7
7
  require('react');
8
+ require('../presence/index.cjs');
9
+ const splitPresenceProps = require('../presence/split-presence-props.cjs');
8
10
  const runIfFn = require('../run-if-fn.cjs');
9
11
  const tooltipContext = require('./tooltip-context.cjs');
10
12
  const useTooltip = require('./use-tooltip.cjs');
13
+ const usePresence = require('../presence/use-presence.cjs');
14
+ const presenceContext = require('../presence/presence-context.cjs');
11
15
 
12
16
  const Tooltip = (props) => {
13
- const { children, ...useTooltipProps } = props;
14
- const api = useTooltip.useTooltip(useTooltipProps);
17
+ const [presenceProps, { children, ...localProps }] = splitPresenceProps.splitPresenceProps(props);
18
+ const api = useTooltip.useTooltip(localProps);
19
+ const presenceApi = usePresence.usePresence({ ...presenceProps, present: api.isOpen });
15
20
  const view = runIfFn.runIfFn(children, api);
16
- return /* @__PURE__ */ jsxRuntime.jsx(tooltipContext.TooltipProvider, { value: api, children: view });
21
+ return /* @__PURE__ */ jsxRuntime.jsx(tooltipContext.TooltipProvider, { value: api, children: /* @__PURE__ */ jsxRuntime.jsx(presenceContext.PresenceProvider, { value: presenceApi, children: view }) });
17
22
  };
18
23
 
19
24
  exports.Tooltip = Tooltip;
@@ -1,8 +1,8 @@
1
1
  import { JSX } from 'react/jsx-runtime';
2
2
  import { type ReactNode } from 'react';
3
- import { type TooltipContext } from './tooltip-context';
4
- import { type UseTooltipProps } from './use-tooltip';
5
- export interface TooltipProps extends UseTooltipProps {
6
- children?: ReactNode | ((props: TooltipContext) => ReactNode);
3
+ import type { UsePresenceProps } from '../presence';
4
+ import { type UseTooltipProps, type UseTooltipReturn } from './use-tooltip';
5
+ export interface TooltipProps extends UseTooltipProps, UsePresenceProps {
6
+ children?: ReactNode | ((api: UseTooltipReturn) => ReactNode);
7
7
  }
8
8
  export declare const Tooltip: (props: TooltipProps) => JSX.Element;
@@ -1,15 +1,20 @@
1
1
  'use client';
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import 'react';
4
+ import '../presence/index.mjs';
5
+ import { splitPresenceProps } from '../presence/split-presence-props.mjs';
4
6
  import { runIfFn } from '../run-if-fn.mjs';
5
7
  import { TooltipProvider } from './tooltip-context.mjs';
6
8
  import { useTooltip } from './use-tooltip.mjs';
9
+ import { usePresence } from '../presence/use-presence.mjs';
10
+ import { PresenceProvider } from '../presence/presence-context.mjs';
7
11
 
8
12
  const Tooltip = (props) => {
9
- const { children, ...useTooltipProps } = props;
10
- const api = useTooltip(useTooltipProps);
13
+ const [presenceProps, { children, ...localProps }] = splitPresenceProps(props);
14
+ const api = useTooltip(localProps);
15
+ const presenceApi = usePresence({ ...presenceProps, present: api.isOpen });
11
16
  const view = runIfFn(children, api);
12
- return /* @__PURE__ */ jsx(TooltipProvider, { value: api, children: view });
17
+ return /* @__PURE__ */ jsx(TooltipProvider, { value: api, children: /* @__PURE__ */ jsx(PresenceProvider, { value: presenceApi, children: view }) });
13
18
  };
14
19
 
15
20
  export { Tooltip };
package/types.d.ts CHANGED
@@ -1,5 +1,3 @@
1
- type DistributiveOmit<T, K extends keyof any> = T extends any ? Omit<T, K> : never;
2
- export type Assign<T, U> = DistributiveOmit<T, keyof U> & U;
1
+ export type Assign<T, U> = Omit<T, keyof U> & U;
3
2
  export type Optional<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;
4
3
  export type CollectionItem = string | object;
5
- export {};
package/use-event.cjs CHANGED
@@ -4,11 +4,10 @@
4
4
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5
5
 
6
6
  const react = require('react');
7
- const useLatestRef = require('./use-latest-ref.cjs');
8
7
 
9
8
  function useEvent(callback, opts = {}) {
10
9
  const { sync = false } = opts;
11
- const callbackRef = useLatestRef.useLatestRef(callback);
10
+ const callbackRef = useLatestRef(callback);
12
11
  return react.useCallback(
13
12
  (...args) => {
14
13
  if (sync)
@@ -18,5 +17,10 @@ function useEvent(callback, opts = {}) {
18
17
  [sync, callbackRef]
19
18
  );
20
19
  }
20
+ function useLatestRef(value) {
21
+ const ref = react.useRef(value);
22
+ ref.current = value;
23
+ return ref;
24
+ }
21
25
 
22
26
  exports.useEvent = useEvent;
package/use-event.mjs CHANGED
@@ -1,6 +1,5 @@
1
1
  'use client';
2
- import { useCallback } from 'react';
3
- import { useLatestRef } from './use-latest-ref.mjs';
2
+ import { useCallback, useRef } from 'react';
4
3
 
5
4
  function useEvent(callback, opts = {}) {
6
5
  const { sync = false } = opts;
@@ -14,5 +13,10 @@ function useEvent(callback, opts = {}) {
14
13
  [sync, callbackRef]
15
14
  );
16
15
  }
16
+ function useLatestRef(value) {
17
+ const ref = useRef(value);
18
+ ref.current = value;
19
+ return ref;
20
+ }
17
21
 
18
22
  export { useEvent };
@@ -1,17 +0,0 @@
1
- 'use client';
2
- 'use strict';
3
-
4
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5
-
6
- const jsxRuntime = require('react/jsx-runtime');
7
- require('@zag-js/tabs');
8
- const index = require('../presence/index.cjs');
9
- const tabsContext = require('./tabs-context.cjs');
10
-
11
- const TabPresence = (props) => {
12
- const { present, ...rest } = props;
13
- const api = tabsContext.useTabsContext();
14
- return /* @__PURE__ */ jsxRuntime.jsx(index.Presence, { present: present !== void 0 ? present : api.value === props.value, ...rest });
15
- };
16
-
17
- exports.TabPresence = TabPresence;
@@ -1,6 +0,0 @@
1
- import { JSX } from 'react/jsx-runtime';
2
- import { type ContentProps } from '@zag-js/tabs';
3
- import { type PresenceProps } from '../presence';
4
- export interface TabPresenceProps extends PresenceProps, ContentProps {
5
- }
6
- export declare const TabPresence: (props: TabPresenceProps) => JSX.Element;
@@ -1,13 +0,0 @@
1
- 'use client';
2
- import { jsx } from 'react/jsx-runtime';
3
- import '@zag-js/tabs';
4
- import { Presence } from '../presence/index.mjs';
5
- import { useTabsContext } from './tabs-context.mjs';
6
-
7
- const TabPresence = (props) => {
8
- const { present, ...rest } = props;
9
- const api = useTabsContext();
10
- return /* @__PURE__ */ jsx(Presence, { present: present !== void 0 ? present : api.value === props.value, ...rest });
11
- };
12
-
13
- export { TabPresence };
@@ -1,14 +0,0 @@
1
- 'use client';
2
- 'use strict';
3
-
4
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5
-
6
- const react = require('react');
7
-
8
- function useLatestRef(value) {
9
- const ref = react.useRef(value);
10
- ref.current = value;
11
- return ref;
12
- }
13
-
14
- exports.useLatestRef = useLatestRef;
@@ -1,3 +0,0 @@
1
- import { MutableRefObject } from 'react';
2
- /// <reference types="react" />
3
- export declare function useLatestRef<T>(value: T): MutableRefObject<T>;
@@ -1,10 +0,0 @@
1
- 'use client';
2
- import { useRef } from 'react';
3
-
4
- function useLatestRef(value) {
5
- const ref = useRef(value);
6
- ref.current = value;
7
- return ref;
8
- }
9
-
10
- export { useLatestRef };