@ark-ui/react 1.0.0-beta.3 → 1.0.0-beta.5

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 (181) hide show
  1. package/CHANGELOG.md +11 -1
  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/carousel/carousel.stories.d.ts +2 -0
  17. package/checkbox/checkbox.cjs +2 -2
  18. package/checkbox/checkbox.d.ts +4 -5
  19. package/checkbox/checkbox.mjs +2 -2
  20. package/color-picker/color-picker-content.cjs +8 -11
  21. package/color-picker/color-picker-content.d.ts +1 -3
  22. package/color-picker/color-picker-content.mjs +8 -11
  23. package/color-picker/color-picker-positioner.cjs +6 -0
  24. package/color-picker/color-picker-positioner.mjs +6 -0
  25. package/color-picker/color-picker-view.cjs +15 -0
  26. package/color-picker/color-picker-view.d.ts +7 -0
  27. package/color-picker/color-picker-view.mjs +11 -0
  28. package/color-picker/color-picker.cjs +31 -28
  29. package/color-picker/color-picker.d.ts +6 -5
  30. package/color-picker/color-picker.mjs +32 -29
  31. package/color-picker/color-picker.stories.d.ts +1 -0
  32. package/color-picker/index.cjs +3 -1
  33. package/color-picker/index.d.ts +4 -1
  34. package/color-picker/index.mjs +3 -1
  35. package/combobox/combobox-content.cjs +8 -11
  36. package/combobox/combobox-content.d.ts +1 -3
  37. package/combobox/combobox-content.mjs +8 -11
  38. package/combobox/combobox-item.d.ts +6 -4
  39. package/combobox/combobox-positioner.cjs +6 -0
  40. package/combobox/combobox-positioner.mjs +6 -0
  41. package/combobox/combobox.cjs +8 -2
  42. package/combobox/combobox.d.ts +4 -3
  43. package/combobox/combobox.mjs +8 -2
  44. package/date-picker/date-picker-content.cjs +8 -11
  45. package/date-picker/date-picker-content.d.ts +1 -3
  46. package/date-picker/date-picker-content.mjs +8 -11
  47. package/date-picker/date-picker-positioner.cjs +6 -0
  48. package/date-picker/date-picker-positioner.mjs +6 -0
  49. package/date-picker/date-picker-view.d.ts +3 -3
  50. package/date-picker/date-picker.cjs +11 -5
  51. package/date-picker/date-picker.d.ts +6 -5
  52. package/date-picker/date-picker.mjs +11 -5
  53. package/date-picker/date-picker.stories.d.ts +1 -0
  54. package/dialog/dialog-backdrop.cjs +8 -11
  55. package/dialog/dialog-backdrop.d.ts +1 -3
  56. package/dialog/dialog-backdrop.mjs +8 -11
  57. package/dialog/dialog-content.cjs +8 -11
  58. package/dialog/dialog-content.d.ts +1 -3
  59. package/dialog/dialog-content.mjs +8 -11
  60. package/dialog/dialog-positioner.cjs +6 -0
  61. package/dialog/dialog-positioner.mjs +6 -0
  62. package/dialog/dialog-trigger.cjs +10 -1
  63. package/dialog/dialog-trigger.mjs +10 -1
  64. package/dialog/dialog.cjs +8 -3
  65. package/dialog/dialog.d.ts +4 -6
  66. package/dialog/dialog.mjs +8 -3
  67. package/editable/editable.d.ts +4 -5
  68. package/environment/environment-context.d.ts +1 -1
  69. package/hover-card/hover-card-content.cjs +8 -11
  70. package/hover-card/hover-card-content.d.ts +1 -3
  71. package/hover-card/hover-card-content.mjs +8 -11
  72. package/hover-card/hover-card-positioner.cjs +6 -0
  73. package/hover-card/hover-card-positioner.mjs +6 -0
  74. package/hover-card/hover-card.cjs +8 -3
  75. package/hover-card/hover-card.d.ts +4 -6
  76. package/hover-card/hover-card.mjs +8 -3
  77. package/index.cjs +10 -2
  78. package/index.mjs +4 -1
  79. package/menu/index.d.ts +1 -1
  80. package/menu/menu-content.cjs +8 -11
  81. package/menu/menu-content.d.ts +1 -3
  82. package/menu/menu-content.mjs +8 -11
  83. package/menu/menu-item-group-label.cjs +1 -1
  84. package/menu/menu-item-group-label.d.ts +3 -3
  85. package/menu/menu-item-group-label.mjs +1 -1
  86. package/menu/menu-option-item.d.ts +2 -2
  87. package/menu/menu.cjs +11 -12
  88. package/menu/menu.d.ts +4 -11
  89. package/menu/menu.mjs +12 -13
  90. package/menu/menu.stories.d.ts +4 -1
  91. package/number-input/number-input.stories.d.ts +6 -1
  92. package/package.json +50 -50
  93. package/pagination/pagination.d.ts +3 -3
  94. package/pin-input/pin-input.stories.d.ts +5 -0
  95. package/popover/popover-content.cjs +8 -11
  96. package/popover/popover-content.d.ts +1 -3
  97. package/popover/popover-content.mjs +8 -11
  98. package/popover/popover-positioner.cjs +6 -0
  99. package/popover/popover-positioner.mjs +6 -0
  100. package/popover/popover-trigger.cjs +10 -1
  101. package/popover/popover-trigger.mjs +10 -1
  102. package/popover/popover.cjs +8 -3
  103. package/popover/popover.d.ts +4 -6
  104. package/popover/popover.mjs +8 -3
  105. package/popover/popover.stories.d.ts +4 -1
  106. package/presence/index.cjs +8 -0
  107. package/presence/index.d.ts +8 -5
  108. package/presence/index.mjs +3 -0
  109. package/presence/presence-context.cjs +15 -0
  110. package/presence/presence-context.d.ts +6 -0
  111. package/presence/presence-context.mjs +10 -0
  112. package/presence/presence-props-context.cjs +17 -0
  113. package/presence/presence-props-context.d.ts +6 -0
  114. package/presence/presence-props-context.mjs +12 -0
  115. package/presence/presence.cjs +18 -19
  116. package/presence/presence.d.ts +6 -21
  117. package/presence/presence.mjs +19 -20
  118. package/presence/split-presence-props.d.ts +2 -2
  119. package/presence/use-presence.cjs +22 -4
  120. package/presence/use-presence.d.ts +21 -1
  121. package/presence/use-presence.mjs +20 -2
  122. package/radio-group/radio-group-item.d.ts +2 -3
  123. package/radio-group/radio-group.stories.d.ts +3 -0
  124. package/rating-group/rating-group-control.d.ts +5 -3
  125. package/rating-group/rating-group-item.d.ts +4 -5
  126. package/rating-group/rating-group.stories.d.ts +6 -0
  127. package/segment-group/segment-group-item.d.ts +2 -3
  128. package/segment-group/segment-group.stories.d.ts +3 -0
  129. package/select/select-content.cjs +8 -11
  130. package/select/select-content.d.ts +1 -3
  131. package/select/select-content.mjs +8 -11
  132. package/select/select-control.cjs +4 -1
  133. package/select/select-control.mjs +5 -2
  134. package/select/select-item.d.ts +2 -3
  135. package/select/select-positioner.cjs +6 -0
  136. package/select/select-positioner.mjs +6 -0
  137. package/select/select.cjs +8 -2
  138. package/select/select.d.ts +4 -3
  139. package/select/select.mjs +8 -2
  140. package/select/select.stories.d.ts +1 -1
  141. package/slider/index.cjs +4 -4
  142. package/slider/index.d.ts +4 -4
  143. package/slider/index.mjs +4 -4
  144. package/slider/{slider-output.cjs → slider-value-text.cjs} +5 -7
  145. package/slider/slider-value-text.d.ts +6 -0
  146. package/slider/slider-value-text.mjs +16 -0
  147. package/slider/slider.d.ts +3 -3
  148. package/slider/slider.stories.d.ts +9 -2
  149. package/splitter/splitter.d.ts +3 -3
  150. package/switch/switch.d.ts +3 -3
  151. package/switch/switch.stories.d.ts +1 -0
  152. package/tabs/tab-content.cjs +13 -12
  153. package/tabs/tab-content.d.ts +2 -4
  154. package/tabs/tab-content.mjs +13 -12
  155. package/tabs/tabs.cjs +7 -3
  156. package/tabs/tabs.d.ts +2 -1
  157. package/tabs/tabs.mjs +7 -3
  158. package/tags-input/tags-input-item.d.ts +4 -5
  159. package/tags-input/tags-input.d.ts +3 -3
  160. package/tags-input/tags-input.stories.d.ts +6 -0
  161. package/toast/toast.stories.d.ts +5 -1
  162. package/toggle-group/toggle-group.stories.d.ts +1 -1
  163. package/tooltip/tooltip-content.cjs +8 -11
  164. package/tooltip/tooltip-content.d.ts +1 -3
  165. package/tooltip/tooltip-content.mjs +8 -11
  166. package/tooltip/tooltip-positioner.cjs +6 -0
  167. package/tooltip/tooltip-positioner.mjs +6 -0
  168. package/tooltip/tooltip.cjs +8 -3
  169. package/tooltip/tooltip.d.ts +4 -4
  170. package/tooltip/tooltip.mjs +8 -3
  171. package/types.d.ts +1 -3
  172. package/use-event.cjs +6 -2
  173. package/use-event.mjs +6 -2
  174. package/slider/slider-output.d.ts +0 -9
  175. package/slider/slider-output.mjs +0 -18
  176. package/tabs/tab-presence.cjs +0 -17
  177. package/tabs/tab-presence.d.ts +0 -6
  178. package/tabs/tab-presence.mjs +0 -13
  179. package/use-latest-ref.cjs +0 -14
  180. package/use-latest-ref.d.ts +0 -3
  181. package/use-latest-ref.mjs +0 -10
@@ -1,9 +1,10 @@
1
1
  import { ForwardRefExoticComponent, RefAttributes, type ReactNode } from 'react';
2
+ import { type HTMLArkProps } from '../factory';
3
+ import { type UsePresenceProps } from '../presence';
2
4
  import { type Assign } from '../types';
3
- import { type DatePickerContext } from './date-picker-context';
4
- import { type UseDatePickerProps } from './use-date-picker';
5
- export interface DatePickerProps extends Assign<UseDatePickerProps, {
6
- children?: ReactNode | ((props: DatePickerContext) => ReactNode);
7
- }> {
5
+ import { type UseDatePickerProps, type UseDatePickerReturn } from './use-date-picker';
6
+ export interface DatePickerProps extends Assign<Assign<HTMLArkProps<'div'>, {
7
+ children?: ReactNode | ((api: UseDatePickerReturn) => ReactNode);
8
+ }>, UseDatePickerProps>, UsePresenceProps {
8
9
  }
9
10
  export declare const DatePicker: ForwardRefExoticComponent<DatePickerProps & RefAttributes<HTMLDivElement>>;
@@ -4,14 +4,20 @@ 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 { runIfFn } from '../run-if-fn.mjs';
8
9
  import { DatePickerProvider } from './date-picker-context.mjs';
9
10
  import { useDatePicker } from './use-date-picker.mjs';
11
+ import { splitPresenceProps } from '../presence/split-presence-props.mjs';
12
+ import { usePresence } from '../presence/use-presence.mjs';
13
+ import { PresenceProvider } from '../presence/presence-context.mjs';
10
14
 
11
15
  const DatePicker = forwardRef((props, ref) => {
12
- const [datePickerProps, { children, ...localProps }] = createSplitProps()(
13
- props,
16
+ const [presenceProps, datePickerProps] = splitPresenceProps(props);
17
+ const [useDatePickerProps, { children, ...localProps }] = createSplitProps()(
18
+ datePickerProps,
14
19
  [
20
+ "closeOnSelect",
15
21
  "defaultValue",
16
22
  "dir",
17
23
  "disabled",
@@ -21,7 +27,6 @@ const DatePicker = forwardRef((props, ref) => {
21
27
  "getRootNode",
22
28
  "id",
23
29
  "ids",
24
- "inline",
25
30
  "isDateUnavailable",
26
31
  "isDateUnavailable",
27
32
  "locale",
@@ -46,10 +51,11 @@ const DatePicker = forwardRef((props, ref) => {
46
51
  "view"
47
52
  ]
48
53
  );
49
- const api = useDatePicker(datePickerProps);
54
+ const api = useDatePicker(useDatePickerProps);
55
+ const presenceApi = usePresence({ ...presenceProps, present: api.isOpen });
50
56
  const view = runIfFn(children, api);
51
57
  const mergedProps = mergeProps(api.rootProps, localProps);
52
- return /* @__PURE__ */ jsx(DatePickerProvider, { value: api, children: /* @__PURE__ */ jsx(ark.div, { ...mergedProps, ref, children: view }) });
58
+ return /* @__PURE__ */ jsx(DatePickerProvider, { value: api, children: /* @__PURE__ */ jsx(PresenceProvider, { value: presenceApi, children: /* @__PURE__ */ jsx(ark.div, { ...mergedProps, ref, children: view }) }) });
53
59
  });
54
60
  DatePicker.displayName = "DatePicker";
55
61
 
@@ -5,3 +5,4 @@ type DatePickerType = typeof DatePicker;
5
5
  declare const meta: Meta<DatePickerType>;
6
6
  export default meta;
7
7
  export declare const Basic: () => JSX.Element;
8
+ export declare const RangeWithSingleGrid: () => 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 dialogContext = require('./dialog-context.cjs');
12
- const splitPresenceProps = require('../presence/split-presence-props.cjs');
12
+ const presenceContext = require('../presence/presence-context.cjs');
13
13
 
14
14
  const DialogBackdrop = react.forwardRef((props, ref) => {
15
- const [presenceProps, localProps] = splitPresenceProps.splitPresenceProps(props);
16
15
  const api = dialogContext.useDialogContext();
17
- return /* @__PURE__ */ jsxRuntime.jsx(index.Presence, { present: api.isOpen, ...presenceProps, fallback: /* @__PURE__ */ jsxRuntime.jsx("div", { ...api.backdropProps }), children: /* @__PURE__ */ jsxRuntime.jsx(DialogInnerBackdrop, { ref, ...localProps }) });
16
+ const presenceApi = presenceContext.usePresenceContext();
17
+ const mergedProps = react$1.mergeProps(api.backdropProps, props);
18
+ if (presenceApi.isUnmounted) {
19
+ return null;
20
+ }
21
+ return /* @__PURE__ */ jsxRuntime.jsx(factory.ark.div, { ref, ...mergedProps });
18
22
  });
19
23
  DialogBackdrop.displayName = "DialogBackdrop";
20
- const DialogInnerBackdrop = react.forwardRef(
21
- function DialogInnerBackdrop2(props, ref) {
22
- const api = dialogContext.useDialogContext();
23
- const mergedProps = react$1.mergeProps(api.backdropProps, props);
24
- return /* @__PURE__ */ jsxRuntime.jsx(factory.ark.div, { ...mergedProps, ref });
25
- }
26
- );
27
24
 
28
25
  exports.DialogBackdrop = DialogBackdrop;
@@ -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 DialogBackdropProps extends Assign<HTMLArkProps<'div'>, Omit<PresenceProps, 'children' | 'fallback'>> {
4
+ export interface DialogBackdropProps extends HTMLArkProps<'div'> {
7
5
  }
8
6
  export declare const DialogBackdrop: ForwardRefExoticComponent<DialogBackdropProps & 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 { useDialogContext } from './dialog-context.mjs';
8
- import { splitPresenceProps } from '../presence/split-presence-props.mjs';
8
+ import { usePresenceContext } from '../presence/presence-context.mjs';
9
9
 
10
10
  const DialogBackdrop = forwardRef((props, ref) => {
11
- const [presenceProps, localProps] = splitPresenceProps(props);
12
11
  const api = useDialogContext();
13
- return /* @__PURE__ */ jsx(Presence, { present: api.isOpen, ...presenceProps, fallback: /* @__PURE__ */ jsx("div", { ...api.backdropProps }), children: /* @__PURE__ */ jsx(DialogInnerBackdrop, { ref, ...localProps }) });
12
+ const presenceApi = usePresenceContext();
13
+ const mergedProps = mergeProps(api.backdropProps, props);
14
+ if (presenceApi.isUnmounted) {
15
+ return null;
16
+ }
17
+ return /* @__PURE__ */ jsx(ark.div, { ref, ...mergedProps });
14
18
  });
15
19
  DialogBackdrop.displayName = "DialogBackdrop";
16
- const DialogInnerBackdrop = forwardRef(
17
- function DialogInnerBackdrop2(props, ref) {
18
- const api = useDialogContext();
19
- const mergedProps = mergeProps(api.backdropProps, props);
20
- return /* @__PURE__ */ jsx(ark.div, { ...mergedProps, ref });
21
- }
22
- );
23
20
 
24
21
  export { DialogBackdrop };
@@ -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 dialogContext = require('./dialog-context.cjs');
12
- const splitPresenceProps = require('../presence/split-presence-props.cjs');
12
+ const presenceContext = require('../presence/presence-context.cjs');
13
13
 
14
14
  const DialogContent = react.forwardRef((props, ref) => {
15
- const [presenceProps, localProps] = splitPresenceProps.splitPresenceProps(props);
16
15
  const api = dialogContext.useDialogContext();
17
- return /* @__PURE__ */ jsxRuntime.jsx(index.Presence, { present: api.isOpen, ...presenceProps, fallback: /* @__PURE__ */ jsxRuntime.jsx("div", { ...api.contentProps }), children: /* @__PURE__ */ jsxRuntime.jsx(DialogInnerContent, { ref, ...localProps }) });
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
  DialogContent.displayName = "DialogContent";
20
- const DialogInnerContent = react.forwardRef(
21
- function DialogInnerContent2(props, ref) {
22
- const api = dialogContext.useDialogContext();
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.DialogContent = DialogContent;
@@ -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 DialogContentProps extends Assign<HTMLArkProps<'div'>, Omit<PresenceProps, 'children' | 'fallback'>> {
4
+ export interface DialogContentProps extends HTMLArkProps<'div'> {
7
5
  }
8
6
  export declare const DialogContent: ForwardRefExoticComponent<DialogContentProps & 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 { useDialogContext } from './dialog-context.mjs';
8
- import { splitPresenceProps } from '../presence/split-presence-props.mjs';
8
+ import { usePresenceContext } from '../presence/presence-context.mjs';
9
9
 
10
10
  const DialogContent = forwardRef((props, ref) => {
11
- const [presenceProps, localProps] = splitPresenceProps(props);
12
11
  const api = useDialogContext();
13
- return /* @__PURE__ */ jsx(Presence, { present: api.isOpen, ...presenceProps, fallback: /* @__PURE__ */ jsx("div", { ...api.contentProps }), children: /* @__PURE__ */ jsx(DialogInnerContent, { ref, ...localProps }) });
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
  DialogContent.displayName = "DialogContent";
16
- const DialogInnerContent = forwardRef(
17
- function DialogInnerContent2(props, ref) {
18
- const api = useDialogContext();
19
- const mergedProps = mergeProps(api.contentProps, props);
20
- return /* @__PURE__ */ jsx(ark.div, { ...mergedProps, ref });
21
- }
22
- );
23
20
 
24
21
  export { DialogContent };
@@ -7,11 +7,17 @@ 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 dialogContext = require('./dialog-context.cjs');
12
+ const presenceContext = require('../presence/presence-context.cjs');
11
13
 
12
14
  const DialogPositioner = react.forwardRef((props, ref) => {
13
15
  const api = dialogContext.useDialogContext();
14
16
  const mergedProps = react$1.mergeProps(api.positionerProps, props);
17
+ const presenceApi = presenceContext.usePresenceContext();
18
+ if (presenceApi.isUnmounted) {
19
+ return null;
20
+ }
15
21
  return /* @__PURE__ */ jsxRuntime.jsx(factory.ark.div, { ...mergedProps, ref });
16
22
  });
17
23
  DialogPositioner.displayName = "DialogPositioner";
@@ -3,11 +3,17 @@ 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 { useDialogContext } from './dialog-context.mjs';
8
+ import { usePresenceContext } from '../presence/presence-context.mjs';
7
9
 
8
10
  const DialogPositioner = forwardRef((props, ref) => {
9
11
  const api = useDialogContext();
10
12
  const mergedProps = mergeProps(api.positionerProps, props);
13
+ const presenceApi = usePresenceContext();
14
+ if (presenceApi.isUnmounted) {
15
+ return null;
16
+ }
11
17
  return /* @__PURE__ */ jsx(ark.div, { ...mergedProps, ref });
12
18
  });
13
19
  DialogPositioner.displayName = "DialogPositioner";
@@ -7,11 +7,20 @@ 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 dialogContext = require('./dialog-context.cjs');
12
+ const presenceContext = require('../presence/presence-context.cjs');
11
13
 
12
14
  const DialogTrigger = react.forwardRef((props, ref) => {
13
15
  const api = dialogContext.useDialogContext();
14
- const mergedProps = react$1.mergeProps(api.triggerProps, props);
16
+ const presence = presenceContext.usePresenceContext();
17
+ const mergedProps = react$1.mergeProps(
18
+ {
19
+ ...api.triggerProps,
20
+ "aria-controls": presence.isUnmounted ? void 0 : api.triggerProps["aria-controls"]
21
+ },
22
+ props
23
+ );
15
24
  return /* @__PURE__ */ jsxRuntime.jsx(factory.ark.button, { ...mergedProps, ref });
16
25
  });
17
26
  DialogTrigger.displayName = "DialogTrigger";
@@ -3,11 +3,20 @@ 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 { useDialogContext } from './dialog-context.mjs';
8
+ import { usePresenceContext } from '../presence/presence-context.mjs';
7
9
 
8
10
  const DialogTrigger = forwardRef((props, ref) => {
9
11
  const api = useDialogContext();
10
- const mergedProps = mergeProps(api.triggerProps, props);
12
+ const presence = usePresenceContext();
13
+ const mergedProps = mergeProps(
14
+ {
15
+ ...api.triggerProps,
16
+ "aria-controls": presence.isUnmounted ? void 0 : api.triggerProps["aria-controls"]
17
+ },
18
+ props
19
+ );
11
20
  return /* @__PURE__ */ jsx(ark.button, { ...mergedProps, ref });
12
21
  });
13
22
  DialogTrigger.displayName = "DialogTrigger";
package/dialog/dialog.cjs CHANGED
@@ -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 dialogContext = require('./dialog-context.cjs');
10
12
  const useDialog = require('./use-dialog.cjs');
13
+ const usePresence = require('../presence/use-presence.cjs');
14
+ const presenceContext = require('../presence/presence-context.cjs');
11
15
 
12
16
  const Dialog = (props) => {
13
- const { children, ...useDialogProps } = props;
14
- const api = useDialog.useDialog(useDialogProps);
17
+ const [presenceProps, { children, ...localProps }] = splitPresenceProps.splitPresenceProps(props);
18
+ const api = useDialog.useDialog(localProps);
19
+ const presenceApi = usePresence.usePresence({ ...presenceProps, present: api.isOpen });
15
20
  const view = runIfFn.runIfFn(children, api);
16
- return /* @__PURE__ */ jsxRuntime.jsx(dialogContext.DialogProvider, { value: api, children: view });
21
+ return /* @__PURE__ */ jsxRuntime.jsx(dialogContext.DialogProvider, { value: api, children: /* @__PURE__ */ jsxRuntime.jsx(presenceContext.PresenceProvider, { value: presenceApi, children: view }) });
17
22
  };
18
23
 
19
24
  exports.Dialog = Dialog;
@@ -1,10 +1,8 @@
1
1
  import { JSX } from 'react/jsx-runtime';
2
2
  import { type ReactNode } from 'react';
3
- import { type Assign } from '../types';
4
- import { type DialogContext } from './dialog-context';
5
- import { type UseDialogProps } from './use-dialog';
6
- export interface DialogProps extends Assign<UseDialogProps, {
7
- children?: ReactNode | ((props: DialogContext) => ReactNode);
8
- }> {
3
+ import type { UsePresenceProps } from '../presence';
4
+ import { type UseDialogProps, type UseDialogReturn } from './use-dialog';
5
+ export interface DialogProps extends UseDialogProps, UsePresenceProps {
6
+ children?: ReactNode | ((api: UseDialogReturn) => ReactNode);
9
7
  }
10
8
  export declare const Dialog: (props: DialogProps) => JSX.Element;
package/dialog/dialog.mjs CHANGED
@@ -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 { DialogProvider } from './dialog-context.mjs';
6
8
  import { useDialog } from './use-dialog.mjs';
9
+ import { usePresence } from '../presence/use-presence.mjs';
10
+ import { PresenceProvider } from '../presence/presence-context.mjs';
7
11
 
8
12
  const Dialog = (props) => {
9
- const { children, ...useDialogProps } = props;
10
- const api = useDialog(useDialogProps);
13
+ const [presenceProps, { children, ...localProps }] = splitPresenceProps(props);
14
+ const api = useDialog(localProps);
15
+ const presenceApi = usePresence({ ...presenceProps, present: api.isOpen });
11
16
  const view = runIfFn(children, api);
12
- return /* @__PURE__ */ jsx(DialogProvider, { value: api, children: view });
17
+ return /* @__PURE__ */ jsx(DialogProvider, { value: api, children: /* @__PURE__ */ jsx(PresenceProvider, { value: presenceApi, children: view }) });
13
18
  };
14
19
 
15
20
  export { Dialog };
@@ -1,10 +1,9 @@
1
1
  import { ForwardRefExoticComponent, RefAttributes, type ReactNode } from 'react';
2
2
  import { type HTMLArkProps } from '../factory';
3
3
  import { type Assign } from '../types';
4
- import { type EditableContext } from './editable-context';
5
- import { type UseEditableProps } from './use-editable';
6
- export interface EditableProps extends Assign<Omit<HTMLArkProps<'div'>, 'children'> & {
7
- children?: ReactNode | ((pages: EditableContext) => ReactNode);
8
- }, UseEditableProps> {
4
+ import { type UseEditableProps, type UseEditableReturn } from './use-editable';
5
+ export interface EditableProps extends Assign<Assign<HTMLArkProps<'div'>, {
6
+ children?: ReactNode | ((api: UseEditableReturn) => ReactNode);
7
+ }>, UseEditableProps> {
9
8
  }
10
9
  export declare const Editable: ForwardRefExoticComponent<EditableProps & RefAttributes<HTMLDivElement>>;
@@ -2,4 +2,4 @@ import { Provider } from 'react';
2
2
  /// <reference types="react" />
3
3
  import { type CommonProperties } from '@zag-js/types';
4
4
  export type EnvironmentContext = CommonProperties['getRootNode'];
5
- export declare const EnvironmentProvider: Provider<(() => ShadowRoot | Node | Document) | undefined>, useEnvironmentContext: () => (() => ShadowRoot | Node | Document) | undefined;
5
+ export declare const EnvironmentProvider: Provider<(() => Node | ShadowRoot | Document) | undefined>, useEnvironmentContext: () => (() => Node | ShadowRoot | Document) | undefined;
@@ -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 hoverCardContext = require('./hover-card-context.cjs');
12
- const splitPresenceProps = require('../presence/split-presence-props.cjs');
12
+ const presenceContext = require('../presence/presence-context.cjs');
13
13
 
14
14
  const HoverCardContent = react.forwardRef((props, ref) => {
15
- const [presenceProps, localProps] = splitPresenceProps.splitPresenceProps(props);
16
15
  const api = hoverCardContext.useHoverCardContext();
17
- return /* @__PURE__ */ jsxRuntime.jsx(index.Presence, { present: api.isOpen, ...presenceProps, fallback: /* @__PURE__ */ jsxRuntime.jsx("div", { ...api.contentProps }), children: /* @__PURE__ */ jsxRuntime.jsx(HoverCardInnerContent, { ref, ...localProps }) });
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
  HoverCardContent.displayName = "HoverCardContent";
20
- const HoverCardInnerContent = react.forwardRef(
21
- function HoverCardInnerContent2(props, ref) {
22
- const api = hoverCardContext.useHoverCardContext();
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.HoverCardContent = HoverCardContent;
@@ -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 HoverCardContentProps extends Assign<HTMLArkProps<'div'>, Omit<PresenceProps, 'children' | 'fallback'>> {
4
+ export interface HoverCardContentProps extends HTMLArkProps<'div'> {
7
5
  }
8
6
  export declare const HoverCardContent: ForwardRefExoticComponent<HoverCardContentProps & 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 { useHoverCardContext } from './hover-card-context.mjs';
8
- import { splitPresenceProps } from '../presence/split-presence-props.mjs';
8
+ import { usePresenceContext } from '../presence/presence-context.mjs';
9
9
 
10
10
  const HoverCardContent = forwardRef((props, ref) => {
11
- const [presenceProps, localProps] = splitPresenceProps(props);
12
11
  const api = useHoverCardContext();
13
- return /* @__PURE__ */ jsx(Presence, { present: api.isOpen, ...presenceProps, fallback: /* @__PURE__ */ jsx("div", { ...api.contentProps }), children: /* @__PURE__ */ jsx(HoverCardInnerContent, { ref, ...localProps }) });
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
  HoverCardContent.displayName = "HoverCardContent";
16
- const HoverCardInnerContent = forwardRef(
17
- function HoverCardInnerContent2(props, ref) {
18
- const api = useHoverCardContext();
19
- const mergedProps = mergeProps(api.contentProps, props);
20
- return /* @__PURE__ */ jsx(ark.div, { ...mergedProps, ref });
21
- }
22
- );
23
20
 
24
21
  export { HoverCardContent };
@@ -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 hoverCardContext = require('./hover-card-context.cjs');
12
+ const presenceContext = require('../presence/presence-context.cjs');
11
13
 
12
14
  const HoverCardPositioner = react.forwardRef(
13
15
  (props, ref) => {
14
16
  const api = hoverCardContext.useHoverCardContext();
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 { useHoverCardContext } from './hover-card-context.mjs';
8
+ import { usePresenceContext } from '../presence/presence-context.mjs';
7
9
 
8
10
  const HoverCardPositioner = forwardRef(
9
11
  (props, ref) => {
10
12
  const api = useHoverCardContext();
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 hoverCardContext = require('./hover-card-context.cjs');
10
12
  const useHoverCard = require('./use-hover-card.cjs');
13
+ const usePresence = require('../presence/use-presence.cjs');
14
+ const presenceContext = require('../presence/presence-context.cjs');
11
15
 
12
16
  const HoverCard = (props) => {
13
- const { children, ...useHoverCardProps } = props;
14
- const api = useHoverCard.useHoverCard(useHoverCardProps);
17
+ const [presenceProps, { children, ...localProps }] = splitPresenceProps.splitPresenceProps(props);
18
+ const api = useHoverCard.useHoverCard(localProps);
19
+ const presenceApi = usePresence.usePresence({ ...presenceProps, present: api.isOpen });
15
20
  const view = runIfFn.runIfFn(children, api);
16
- return /* @__PURE__ */ jsxRuntime.jsx(hoverCardContext.HoverCardProvider, { value: api, children: view });
21
+ return /* @__PURE__ */ jsxRuntime.jsx(hoverCardContext.HoverCardProvider, { value: api, children: /* @__PURE__ */ jsxRuntime.jsx(presenceContext.PresenceProvider, { value: presenceApi, children: view }) });
17
22
  };
18
23
 
19
24
  exports.HoverCard = HoverCard;
@@ -1,10 +1,8 @@
1
1
  import { JSX } from 'react/jsx-runtime';
2
2
  import { type ReactNode } from 'react';
3
- import type { Assign } from '../types';
4
- import { type HoverCardContext } from './hover-card-context';
5
- import { type UseHoverCardProps } from './use-hover-card';
6
- export interface HoverCardProps extends Assign<UseHoverCardProps, {
7
- children?: ReactNode | ((props: HoverCardContext) => ReactNode);
8
- }> {
3
+ import type { UsePresenceProps } from '../presence';
4
+ import { type UseHoverCardProps, type UseHoverCardReturn } from './use-hover-card';
5
+ export interface HoverCardProps extends UseHoverCardProps, UsePresenceProps {
6
+ children?: ReactNode | ((api: UseHoverCardReturn) => ReactNode);
9
7
  }
10
8
  export declare const HoverCard: (props: HoverCardProps) => 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 { HoverCardProvider } from './hover-card-context.mjs';
6
8
  import { useHoverCard } from './use-hover-card.mjs';
9
+ import { usePresence } from '../presence/use-presence.mjs';
10
+ import { PresenceProvider } from '../presence/presence-context.mjs';
7
11
 
8
12
  const HoverCard = (props) => {
9
- const { children, ...useHoverCardProps } = props;
10
- const api = useHoverCard(useHoverCardProps);
13
+ const [presenceProps, { children, ...localProps }] = splitPresenceProps(props);
14
+ const api = useHoverCard(localProps);
15
+ const presenceApi = usePresence({ ...presenceProps, present: api.isOpen });
11
16
  const view = runIfFn(children, api);
12
- return /* @__PURE__ */ jsx(HoverCardProvider, { value: api, children: view });
17
+ return /* @__PURE__ */ jsx(HoverCardProvider, { value: api, children: /* @__PURE__ */ jsx(PresenceProvider, { value: presenceApi, children: view }) });
13
18
  };
14
19
 
15
20
  export { HoverCard };
package/index.cjs CHANGED
@@ -179,7 +179,10 @@ const popoverPositioner = require('./popover/popover-positioner.cjs');
179
179
  const popoverTitle = require('./popover/popover-title.cjs');
180
180
  const popoverTrigger = require('./popover/popover-trigger.cjs');
181
181
  const popoverContext = require('./popover/popover-context.cjs');
182
+ const presencePropsContext = require('./presence/presence-props-context.cjs');
183
+ const presenceContext = require('./presence/presence-context.cjs');
182
184
  const splitPresenceProps = require('./presence/split-presence-props.cjs');
185
+ const usePresence = require('./presence/use-presence.cjs');
183
186
  const radioGroupItem = require('./radio-group/radio-group-item.cjs');
184
187
  const radioGroupItemControl = require('./radio-group/radio-group-item-control.cjs');
185
188
  const radioGroupItemText = require('./radio-group/radio-group-item-text.cjs');
@@ -217,10 +220,10 @@ const sliderControl = require('./slider/slider-control.cjs');
217
220
  const sliderLabel = require('./slider/slider-label.cjs');
218
221
  const sliderMarker = require('./slider/slider-marker.cjs');
219
222
  const sliderMarkerGroup = require('./slider/slider-marker-group.cjs');
220
- const sliderOutput = require('./slider/slider-output.cjs');
221
223
  const sliderRange = require('./slider/slider-range.cjs');
222
224
  const sliderThumb = require('./slider/slider-thumb.cjs');
223
225
  const sliderTrack = require('./slider/slider-track.cjs');
226
+ const sliderValueText = require('./slider/slider-value-text.cjs');
224
227
  const sliderContext = require('./slider/slider-context.cjs');
225
228
  const splitterPanel = require('./splitter/splitter-panel.cjs');
226
229
  const splitterResizeTrigger = require('./splitter/splitter-resize-trigger.cjs');
@@ -437,7 +440,12 @@ exports.PopoverPositioner = popoverPositioner.PopoverPositioner;
437
440
  exports.PopoverTitle = popoverTitle.PopoverTitle;
438
441
  exports.PopoverTrigger = popoverTrigger.PopoverTrigger;
439
442
  exports.usePopoverContext = popoverContext.usePopoverContext;
443
+ exports.PresencePropsProvider = presencePropsContext.PresencePropsProvider;
444
+ exports.usePresencePropsContext = presencePropsContext.usePresencePropsContext;
445
+ exports.PresenceProvider = presenceContext.PresenceProvider;
446
+ exports.usePresenceContext = presenceContext.usePresenceContext;
440
447
  exports.splitPresenceProps = splitPresenceProps.splitPresenceProps;
448
+ exports.usePresence = usePresence.usePresence;
441
449
  exports.RadioGroupItem = radioGroupItem.RadioGroupItem;
442
450
  exports.RadioGroupItemControl = radioGroupItemControl.RadioGroupItemControl;
443
451
  exports.RadioGroupItemText = radioGroupItemText.RadioGroupItemText;
@@ -475,10 +483,10 @@ exports.SliderControl = sliderControl.SliderControl;
475
483
  exports.SliderLabel = sliderLabel.SliderLabel;
476
484
  exports.SliderMarker = sliderMarker.SliderMarker;
477
485
  exports.SliderMarkerGroup = sliderMarkerGroup.SliderMarkerGroup;
478
- exports.SliderOutput = sliderOutput.SliderOutput;
479
486
  exports.SliderRange = sliderRange.SliderRange;
480
487
  exports.SliderThumb = sliderThumb.SliderThumb;
481
488
  exports.SliderTrack = sliderTrack.SliderTrack;
489
+ exports.SliderValueText = sliderValueText.SliderValueText;
482
490
  exports.useSliderContext = sliderContext.useSliderContext;
483
491
  exports.SplitterPanel = splitterPanel.SplitterPanel;
484
492
  exports.SplitterResizeTrigger = splitterResizeTrigger.SplitterResizeTrigger;