@ark-ui/react 2.1.1 → 2.2.1

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 (79) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/accordion/accordion-context.d.ts +1 -2
  3. package/accordion/accordion-item-content.cjs +4 -12
  4. package/accordion/accordion-item-content.mjs +4 -12
  5. package/accordion/accordion-item-trigger.cjs +3 -3
  6. package/accordion/accordion-item-trigger.mjs +3 -3
  7. package/accordion/accordion-item.cjs +21 -13
  8. package/accordion/accordion-item.d.ts +4 -3
  9. package/accordion/accordion-item.mjs +21 -13
  10. package/accordion/accordion-root.cjs +3 -4
  11. package/accordion/accordion-root.d.ts +2 -2
  12. package/accordion/accordion-root.mjs +3 -4
  13. package/clipboard/clipboard-indicator.cjs +1 -1
  14. package/clipboard/clipboard-indicator.mjs +1 -1
  15. package/collapsible/collapsible-content.cjs +24 -0
  16. package/collapsible/collapsible-content.d.ts +6 -0
  17. package/collapsible/collapsible-content.mjs +20 -0
  18. package/collapsible/collapsible-context.cjs +15 -0
  19. package/collapsible/collapsible-context.d.ts +6 -0
  20. package/collapsible/collapsible-context.mjs +10 -0
  21. package/collapsible/collapsible-root.cjs +22 -0
  22. package/collapsible/collapsible-root.d.ts +8 -0
  23. package/collapsible/collapsible-root.mjs +18 -0
  24. package/collapsible/collapsible-trigger.cjs +21 -0
  25. package/collapsible/collapsible-trigger.d.ts +6 -0
  26. package/collapsible/collapsible-trigger.mjs +17 -0
  27. package/collapsible/collapsible.cjs +13 -0
  28. package/collapsible/collapsible.d.ts +4 -0
  29. package/collapsible/collapsible.mjs +3 -0
  30. package/collapsible/index.cjs +17 -0
  31. package/collapsible/index.d.ts +8 -0
  32. package/collapsible/index.mjs +6 -0
  33. package/collapsible/split-collapsible-props.cjs +22 -0
  34. package/collapsible/split-collapsible-props.d.ts +2 -0
  35. package/collapsible/split-collapsible-props.mjs +18 -0
  36. package/collapsible/use-collapsible.cjs +55 -0
  37. package/collapsible/use-collapsible.d.ts +17 -0
  38. package/collapsible/use-collapsible.mjs +32 -0
  39. package/dialog/dialog-backdrop.cjs +3 -3
  40. package/dialog/dialog-backdrop.mjs +3 -3
  41. package/dialog/dialog-root.cjs +3 -2
  42. package/dialog/dialog-root.mjs +3 -2
  43. package/factory.cjs +16 -12
  44. package/factory.mjs +17 -13
  45. package/index.cjs +10 -3
  46. package/index.d.ts +1 -0
  47. package/index.mjs +6 -1
  48. package/menu/menu-item-group.d.ts +2 -2
  49. package/package.json +61 -54
  50. package/presence/index.cjs +0 -3
  51. package/presence/index.d.ts +2 -3
  52. package/presence/index.mjs +0 -1
  53. package/presence/split-presence-props.cjs +6 -8
  54. package/presence/split-presence-props.d.ts +1 -1
  55. package/presence/split-presence-props.mjs +6 -8
  56. package/presence/use-presence.d.ts +2 -11
  57. package/render-strategy.cjs +18 -0
  58. package/render-strategy.d.ts +16 -0
  59. package/render-strategy.mjs +12 -0
  60. package/splitter/splitter-root.cjs +0 -1
  61. package/splitter/splitter-root.mjs +0 -1
  62. package/splitter/use-splitter.cjs +1 -2
  63. package/splitter/use-splitter.mjs +1 -2
  64. package/tabs/tab-content.cjs +3 -3
  65. package/tabs/tab-content.mjs +3 -3
  66. package/tabs/tabs-root.cjs +3 -4
  67. package/tabs/tabs-root.d.ts +2 -2
  68. package/tabs/tabs-root.mjs +3 -4
  69. package/toast/create-toaster.d.ts +2 -1
  70. package/tree-view/tree-view-branch-indicator.cjs +1 -7
  71. package/tree-view/tree-view-branch-indicator.mjs +1 -7
  72. package/tree-view/tree-view-root.cjs +2 -1
  73. package/tree-view/tree-view-root.mjs +2 -1
  74. package/tree-view/use-tree-view.cjs +2 -2
  75. package/tree-view/use-tree-view.d.ts +6 -2
  76. package/tree-view/use-tree-view.mjs +2 -2
  77. package/presence/presence-props-context.cjs +0 -17
  78. package/presence/presence-props-context.d.ts +0 -6
  79. package/presence/presence-props-context.mjs +0 -12
@@ -0,0 +1,6 @@
1
+ export { CollapsibleContent } from './collapsible-content.mjs';
2
+ export { useCollapsibleContext } from './collapsible-context.mjs';
3
+ export { CollapsibleRoot } from './collapsible-root.mjs';
4
+ export { CollapsibleTrigger } from './collapsible-trigger.mjs';
5
+ import * as collapsible from './collapsible.mjs';
6
+ export { collapsible as Collapsible };
@@ -0,0 +1,22 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5
+
6
+ const createSplitProps = require('../create-split-props.cjs');
7
+
8
+ const splitCollapsibleProps = (props) => createSplitProps.createSplitProps()(props, [
9
+ "defaultOpen",
10
+ "dir",
11
+ "disabled",
12
+ "getRootNode",
13
+ "id",
14
+ "ids",
15
+ "lazyMount",
16
+ "onExitComplete",
17
+ "onOpenChange",
18
+ "open",
19
+ "unmountOnExit"
20
+ ]);
21
+
22
+ exports.splitCollapsibleProps = splitCollapsibleProps;
@@ -0,0 +1,2 @@
1
+ import type { UseCollapsibleProps } from './use-collapsible';
2
+ export declare const splitCollapsibleProps: <T extends UseCollapsibleProps>(props: T) => [UseCollapsibleProps, Omit<T, "id" | "dir" | "disabled" | "open" | "getRootNode" | "ids" | "lazyMount" | "unmountOnExit" | "onExitComplete" | "onOpenChange" | "defaultOpen">];
@@ -0,0 +1,18 @@
1
+ 'use client';
2
+ import { createSplitProps } from '../create-split-props.mjs';
3
+
4
+ const splitCollapsibleProps = (props) => createSplitProps()(props, [
5
+ "defaultOpen",
6
+ "dir",
7
+ "disabled",
8
+ "getRootNode",
9
+ "id",
10
+ "ids",
11
+ "lazyMount",
12
+ "onExitComplete",
13
+ "onOpenChange",
14
+ "open",
15
+ "unmountOnExit"
16
+ ]);
17
+
18
+ export { splitCollapsibleProps };
@@ -0,0 +1,55 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5
+
6
+ const collapsible = require('@zag-js/collapsible');
7
+ const react$1 = require('@zag-js/react');
8
+ const react = require('react');
9
+ const environmentContext = require('../environment/environment-context.cjs');
10
+ const useEvent = require('../use-event.cjs');
11
+
12
+ function _interopNamespaceDefault(e) {
13
+ const n = Object.create(null, { [Symbol.toStringTag]: { value: 'Module' } });
14
+ if (e) {
15
+ for (const k in e) {
16
+ if (k !== 'default') {
17
+ const d = Object.getOwnPropertyDescriptor(e, k);
18
+ Object.defineProperty(n, k, d.get ? d : {
19
+ enumerable: true,
20
+ get: () => e[k]
21
+ });
22
+ }
23
+ }
24
+ }
25
+ n.default = e;
26
+ return Object.freeze(n);
27
+ }
28
+
29
+ const collapsible__namespace = /*#__PURE__*/_interopNamespaceDefault(collapsible);
30
+
31
+ const useCollapsible = (props = {}) => {
32
+ const { lazyMount, unmountOnExit } = props;
33
+ const wasVisible = react.useRef(false);
34
+ const initialContext = {
35
+ id: react.useId(),
36
+ getRootNode: environmentContext.useEnvironmentContext(),
37
+ ...props,
38
+ open: props.defaultOpen ?? props.open,
39
+ "open.controlled": props.open !== void 0
40
+ };
41
+ const context = {
42
+ ...initialContext,
43
+ open: props.open,
44
+ onOpenChange: useEvent.useEvent(props.onOpenChange, { sync: true })
45
+ };
46
+ const [state, send] = react$1.useMachine(collapsible__namespace.machine(initialContext), { context });
47
+ const api = collapsible__namespace.connect(state, send, react$1.normalizeProps);
48
+ if (api.isVisible) {
49
+ wasVisible.current = true;
50
+ }
51
+ const isUnmounted = !api.isVisible && !wasVisible.current && lazyMount || unmountOnExit && !api.isVisible && wasVisible.current;
52
+ return { ...api, isUnmounted };
53
+ };
54
+
55
+ exports.useCollapsible = useCollapsible;
@@ -0,0 +1,17 @@
1
+ import * as collapsible from '@zag-js/collapsible';
2
+ import { type PropTypes } from '@zag-js/react';
3
+ import type { RenderStrategyProps } from '../render-strategy';
4
+ import { type Optional } from '../types';
5
+ export interface UseCollapsibleProps extends Optional<Omit<collapsible.Context, 'open.controlled'>, 'id'>, RenderStrategyProps {
6
+ /**
7
+ * The initial open state of the collpasible.
8
+ */
9
+ defaultOpen?: collapsible.Context['open'];
10
+ }
11
+ export interface UseCollapsibleReturn extends collapsible.Api<PropTypes> {
12
+ /**
13
+ * Whether the content is unmounted
14
+ */
15
+ isUnmounted?: boolean;
16
+ }
17
+ export declare const useCollapsible: (props?: UseCollapsibleProps) => UseCollapsibleReturn;
@@ -0,0 +1,32 @@
1
+ 'use client';
2
+ import * as collapsible from '@zag-js/collapsible';
3
+ import { useMachine, normalizeProps } from '@zag-js/react';
4
+ import { useRef, useId } from 'react';
5
+ import { useEnvironmentContext } from '../environment/environment-context.mjs';
6
+ import { useEvent } from '../use-event.mjs';
7
+
8
+ const useCollapsible = (props = {}) => {
9
+ const { lazyMount, unmountOnExit } = props;
10
+ const wasVisible = useRef(false);
11
+ const initialContext = {
12
+ id: useId(),
13
+ getRootNode: useEnvironmentContext(),
14
+ ...props,
15
+ open: props.defaultOpen ?? props.open,
16
+ "open.controlled": props.open !== void 0
17
+ };
18
+ const context = {
19
+ ...initialContext,
20
+ open: props.open,
21
+ onOpenChange: useEvent(props.onOpenChange, { sync: true })
22
+ };
23
+ const [state, send] = useMachine(collapsible.machine(initialContext), { context });
24
+ const api = collapsible.connect(state, send, normalizeProps);
25
+ if (api.isVisible) {
26
+ wasVisible.current = true;
27
+ }
28
+ const isUnmounted = !api.isVisible && !wasVisible.current && lazyMount || unmountOnExit && !api.isVisible && wasVisible.current;
29
+ return { ...api, isUnmounted };
30
+ };
31
+
32
+ export { useCollapsible };
@@ -7,14 +7,14 @@ 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 presencePropsContext = require('../presence/presence-props-context.cjs');
11
10
  const usePresence = require('../presence/use-presence.cjs');
11
+ const renderStrategy = require('../render-strategy.cjs');
12
12
  const dialogContext = require('./dialog-context.cjs');
13
13
 
14
14
  const DialogBackdrop = react.forwardRef((props, ref) => {
15
15
  const api = dialogContext.useDialogContext();
16
- const presenceProps = presencePropsContext.usePresencePropsContext();
17
- const presenceApi = usePresence.usePresence(react$1.mergeProps({ present: api.isOpen }, presenceProps));
16
+ const renderStrategyProps = renderStrategy.useRenderStrategyContext();
17
+ const presenceApi = usePresence.usePresence({ ...renderStrategyProps, present: api.isOpen });
18
18
  const mergedProps = react$1.mergeProps(api.backdropProps, presenceApi.getPresenceProps(ref), props);
19
19
  if (presenceApi.isUnmounted) {
20
20
  return null;
@@ -3,14 +3,14 @@ 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 { usePresencePropsContext } from '../presence/presence-props-context.mjs';
7
6
  import { usePresence } from '../presence/use-presence.mjs';
7
+ import { useRenderStrategyContext } from '../render-strategy.mjs';
8
8
  import { useDialogContext } from './dialog-context.mjs';
9
9
 
10
10
  const DialogBackdrop = forwardRef((props, ref) => {
11
11
  const api = useDialogContext();
12
- const presenceProps = usePresencePropsContext();
13
- const presenceApi = usePresence(mergeProps({ present: api.isOpen }, presenceProps));
12
+ const renderStrategyProps = useRenderStrategyContext();
13
+ const presenceApi = usePresence({ ...renderStrategyProps, present: api.isOpen });
14
14
  const mergedProps = mergeProps(api.backdropProps, presenceApi.getPresenceProps(ref), props);
15
15
  if (presenceApi.isUnmounted) {
16
16
  return null;
@@ -7,19 +7,20 @@ const jsxRuntime = require('react/jsx-runtime');
7
7
  const react = require('@zag-js/react');
8
8
  require('react');
9
9
  const presenceContext = require('../presence/presence-context.cjs');
10
- const presencePropsContext = require('../presence/presence-props-context.cjs');
11
10
  const splitPresenceProps = require('../presence/split-presence-props.cjs');
12
11
  const usePresence = require('../presence/use-presence.cjs');
12
+ const renderStrategy = require('../render-strategy.cjs');
13
13
  const runIfFn = require('../run-if-fn.cjs');
14
14
  const dialogContext = require('./dialog-context.cjs');
15
15
  const useDialog = require('./use-dialog.cjs');
16
16
 
17
17
  const DialogRoot = (props) => {
18
18
  const [presenceProps, { children, ...localProps }] = splitPresenceProps.splitPresenceProps(props);
19
+ const [renderStrategyProps] = renderStrategy.splitRenderStrategyProps(presenceProps);
19
20
  const api = useDialog.useDialog(localProps);
20
21
  const presenceApi = usePresence.usePresence(react.mergeProps({ present: api.isOpen }, presenceProps));
21
22
  const view = runIfFn.runIfFn(children, api);
22
- return /* @__PURE__ */ jsxRuntime.jsx(dialogContext.DialogProvider, { value: api, children: /* @__PURE__ */ jsxRuntime.jsx(presencePropsContext.PresencePropsProvider, { value: presenceProps, children: /* @__PURE__ */ jsxRuntime.jsx(presenceContext.PresenceProvider, { value: presenceApi, children: view }) }) });
23
+ return /* @__PURE__ */ jsxRuntime.jsx(dialogContext.DialogProvider, { value: api, children: /* @__PURE__ */ jsxRuntime.jsx(renderStrategy.RenderStrategyProvider, { value: renderStrategyProps, children: /* @__PURE__ */ jsxRuntime.jsx(presenceContext.PresenceProvider, { value: presenceApi, children: view }) }) });
23
24
  };
24
25
 
25
26
  exports.DialogRoot = DialogRoot;
@@ -3,19 +3,20 @@ import { jsx } from 'react/jsx-runtime';
3
3
  import { mergeProps } from '@zag-js/react';
4
4
  import 'react';
5
5
  import { PresenceProvider } from '../presence/presence-context.mjs';
6
- import { PresencePropsProvider } from '../presence/presence-props-context.mjs';
7
6
  import { splitPresenceProps } from '../presence/split-presence-props.mjs';
8
7
  import { usePresence } from '../presence/use-presence.mjs';
8
+ import { splitRenderStrategyProps, RenderStrategyProvider } from '../render-strategy.mjs';
9
9
  import { runIfFn } from '../run-if-fn.mjs';
10
10
  import { DialogProvider } from './dialog-context.mjs';
11
11
  import { useDialog } from './use-dialog.mjs';
12
12
 
13
13
  const DialogRoot = (props) => {
14
14
  const [presenceProps, { children, ...localProps }] = splitPresenceProps(props);
15
+ const [renderStrategyProps] = splitRenderStrategyProps(presenceProps);
15
16
  const api = useDialog(localProps);
16
17
  const presenceApi = usePresence(mergeProps({ present: api.isOpen }, presenceProps));
17
18
  const view = runIfFn(children, api);
18
- return /* @__PURE__ */ jsx(DialogProvider, { value: api, children: /* @__PURE__ */ jsx(PresencePropsProvider, { value: presenceProps, children: /* @__PURE__ */ jsx(PresenceProvider, { value: presenceApi, children: view }) }) });
19
+ return /* @__PURE__ */ jsx(DialogProvider, { value: api, children: /* @__PURE__ */ jsx(RenderStrategyProvider, { value: renderStrategyProps, children: /* @__PURE__ */ jsx(PresenceProvider, { value: presenceApi, children: view }) }) });
19
20
  };
20
21
 
21
22
  export { DialogRoot };
package/factory.cjs CHANGED
@@ -2,22 +2,26 @@
2
2
 
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
- const react$1 = require('@zag-js/react');
5
+ const core = require('@zag-js/core');
6
6
  const react = require('react');
7
7
  const composeRefs = require('./compose-refs.cjs');
8
8
 
9
9
  const withAsChild = (Component) => {
10
- const Comp = react.forwardRef((props, ref) => {
11
- const { asChild, children, ...restProps } = props;
12
- if (!asChild) {
13
- return react.createElement(Component, { ...restProps, ref }, children);
14
- }
15
- const onlyChild = react.Children.only(children);
16
- return react.isValidElement(onlyChild) ? react.cloneElement(onlyChild, {
17
- ...react$1.mergeProps(restProps, onlyChild.props),
18
- ref: ref ? composeRefs.composeRefs(ref, onlyChild.ref) : onlyChild.ref
19
- }) : null;
20
- });
10
+ const Comp = react.memo(
11
+ react.forwardRef((props, ref) => {
12
+ const { asChild, children, ...restProps } = props;
13
+ if (!asChild) {
14
+ return react.createElement(Component, { ...restProps, ref }, children);
15
+ }
16
+ const onlyChild = react.Children.only(children);
17
+ return react.isValidElement(onlyChild) ? react.cloneElement(onlyChild, {
18
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
19
+ ...core.mergeProps(restProps, onlyChild.props),
20
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
21
+ ref: ref ? composeRefs.composeRefs(ref, onlyChild.ref) : onlyChild.ref
22
+ }) : null;
23
+ })
24
+ );
21
25
  Comp.displayName = Component.displayName || Component.name;
22
26
  return Comp;
23
27
  };
package/factory.mjs CHANGED
@@ -1,19 +1,23 @@
1
- import { mergeProps } from '@zag-js/react';
2
- import { forwardRef, createElement, Children, isValidElement, cloneElement } from 'react';
1
+ import { mergeProps } from '@zag-js/core';
2
+ import { memo, forwardRef, createElement, Children, isValidElement, cloneElement } from 'react';
3
3
  import { composeRefs } from './compose-refs.mjs';
4
4
 
5
5
  const withAsChild = (Component) => {
6
- const Comp = forwardRef((props, ref) => {
7
- const { asChild, children, ...restProps } = props;
8
- if (!asChild) {
9
- return createElement(Component, { ...restProps, ref }, children);
10
- }
11
- const onlyChild = Children.only(children);
12
- return isValidElement(onlyChild) ? cloneElement(onlyChild, {
13
- ...mergeProps(restProps, onlyChild.props),
14
- ref: ref ? composeRefs(ref, onlyChild.ref) : onlyChild.ref
15
- }) : null;
16
- });
6
+ const Comp = memo(
7
+ forwardRef((props, ref) => {
8
+ const { asChild, children, ...restProps } = props;
9
+ if (!asChild) {
10
+ return createElement(Component, { ...restProps, ref }, children);
11
+ }
12
+ const onlyChild = Children.only(children);
13
+ return isValidElement(onlyChild) ? cloneElement(onlyChild, {
14
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
+ ...mergeProps(restProps, onlyChild.props),
16
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
+ ref: ref ? composeRefs(ref, onlyChild.ref) : onlyChild.ref
18
+ }) : null;
19
+ })
20
+ );
17
21
  Comp.displayName = Component.displayName || Component.name;
18
22
  return Comp;
19
23
  };
package/index.cjs CHANGED
@@ -41,6 +41,11 @@ const clipboardLabel = require('./clipboard/clipboard-label.cjs');
41
41
  const clipboardRoot = require('./clipboard/clipboard-root.cjs');
42
42
  const clipboardTrigger = require('./clipboard/clipboard-trigger.cjs');
43
43
  const clipboard = require('./clipboard/clipboard.cjs');
44
+ const collapsibleContent = require('./collapsible/collapsible-content.cjs');
45
+ const collapsibleContext = require('./collapsible/collapsible-context.cjs');
46
+ const collapsibleRoot = require('./collapsible/collapsible-root.cjs');
47
+ const collapsibleTrigger = require('./collapsible/collapsible-trigger.cjs');
48
+ const collapsible = require('./collapsible/collapsible.cjs');
44
49
  const colorPickerArea = require('./color-picker/color-picker-area.cjs');
45
50
  const colorPickerAreaBackground = require('./color-picker/color-picker-area-background.cjs');
46
51
  const colorPickerAreaContext = require('./color-picker/color-picker-area-context.cjs');
@@ -212,7 +217,6 @@ const popover = require('./popover/popover.cjs');
212
217
  const portal = require('./portal.cjs');
213
218
  const presence = require('./presence/presence.cjs');
214
219
  const presenceContext = require('./presence/presence-context.cjs');
215
- const presencePropsContext = require('./presence/presence-props-context.cjs');
216
220
  const splitPresenceProps = require('./presence/split-presence-props.cjs');
217
221
  const usePresence = require('./presence/use-presence.cjs');
218
222
  const progressCircle = require('./progress/progress-circle.cjs');
@@ -384,6 +388,11 @@ exports.ClipboardLabel = clipboardLabel.ClipboardLabel;
384
388
  exports.ClipboardRoot = clipboardRoot.ClipboardRoot;
385
389
  exports.ClipboardTrigger = clipboardTrigger.ClipboardTrigger;
386
390
  exports.Clipboard = clipboard;
391
+ exports.CollapsibleContent = collapsibleContent.CollapsibleContent;
392
+ exports.useCollapsibleContext = collapsibleContext.useCollapsibleContext;
393
+ exports.CollapsibleRoot = collapsibleRoot.CollapsibleRoot;
394
+ exports.CollapsibleTrigger = collapsibleTrigger.CollapsibleTrigger;
395
+ exports.Collapsible = collapsible;
387
396
  exports.ColorPickerArea = colorPickerArea.ColorPickerArea;
388
397
  exports.ColorPickerAreaBackground = colorPickerAreaBackground.ColorPickerAreaBackground;
389
398
  exports.useColorPickerAreaContext = colorPickerAreaContext.useColorPickerAreaContext;
@@ -557,8 +566,6 @@ exports.Portal = portal.Portal;
557
566
  exports.Presence = presence.Presence;
558
567
  exports.PresenceProvider = presenceContext.PresenceProvider;
559
568
  exports.usePresenceContext = presenceContext.usePresenceContext;
560
- exports.PresencePropsProvider = presencePropsContext.PresencePropsProvider;
561
- exports.usePresencePropsContext = presencePropsContext.usePresencePropsContext;
562
569
  exports.splitPresenceProps = splitPresenceProps.splitPresenceProps;
563
570
  exports.usePresence = usePresence.usePresence;
564
571
  exports.ProgressCircle = progressCircle.ProgressCircle;
package/index.d.ts CHANGED
@@ -3,6 +3,7 @@ export * from './avatar';
3
3
  export * from './carousel';
4
4
  export * from './checkbox';
5
5
  export * from './clipboard';
6
+ export * from './collapsible';
6
7
  export * from './color-picker';
7
8
  export * from './combobox';
8
9
  export * from './date-picker';
package/index.mjs CHANGED
@@ -42,6 +42,12 @@ export { ClipboardRoot } from './clipboard/clipboard-root.mjs';
42
42
  export { ClipboardTrigger } from './clipboard/clipboard-trigger.mjs';
43
43
  import * as clipboard from './clipboard/clipboard.mjs';
44
44
  export { clipboard as Clipboard };
45
+ export { CollapsibleContent } from './collapsible/collapsible-content.mjs';
46
+ export { useCollapsibleContext } from './collapsible/collapsible-context.mjs';
47
+ export { CollapsibleRoot } from './collapsible/collapsible-root.mjs';
48
+ export { CollapsibleTrigger } from './collapsible/collapsible-trigger.mjs';
49
+ import * as collapsible from './collapsible/collapsible.mjs';
50
+ export { collapsible as Collapsible };
45
51
  export { ColorPickerArea } from './color-picker/color-picker-area.mjs';
46
52
  export { ColorPickerAreaBackground } from './color-picker/color-picker-area-background.mjs';
47
53
  export { useColorPickerAreaContext } from './color-picker/color-picker-area-context.mjs';
@@ -225,7 +231,6 @@ export { popover as Popover };
225
231
  export { Portal } from './portal.mjs';
226
232
  export { Presence } from './presence/presence.mjs';
227
233
  export { PresenceProvider, usePresenceContext } from './presence/presence-context.mjs';
228
- export { PresencePropsProvider, usePresencePropsContext } from './presence/presence-props-context.mjs';
229
234
  export { splitPresenceProps } from './presence/split-presence-props.mjs';
230
235
  export { usePresence } from './presence/use-presence.mjs';
231
236
  export { ProgressCircle } from './progress/progress-circle.mjs';
@@ -1,8 +1,8 @@
1
1
  import { ForwardRefExoticComponent, RefAttributes } from 'react';
2
2
  /// <reference types="react" />
3
- import type { GroupProps } from '@zag-js/menu';
3
+ import type { ItemGroupProps } from '@zag-js/menu';
4
4
  import { type HTMLArkProps } from '../factory';
5
5
  import { type Assign } from '../types';
6
- export interface MenuItemGroupProps extends Assign<HTMLArkProps<'div'>, GroupProps> {
6
+ export interface MenuItemGroupProps extends Assign<HTMLArkProps<'div'>, ItemGroupProps> {
7
7
  }
8
8
  export declare const MenuItemGroup: ForwardRefExoticComponent<MenuItemGroupProps & RefAttributes<HTMLDivElement>>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ark-ui/react",
3
- "version": "2.1.1",
3
+ "version": "2.2.1",
4
4
  "description": "A collection of unstyled, accessible UI components for React, utilizing state machines for seamless interaction.",
5
5
  "keywords": [
6
6
  "accordion",
@@ -8,6 +8,7 @@
8
8
  "carousel",
9
9
  "checkbox",
10
10
  "clipboard",
11
+ "collapsible",
11
12
  "color picker",
12
13
  "combobox",
13
14
  "date picker",
@@ -64,65 +65,66 @@
64
65
  "release-it": "release-it --config ../../../release-it.json"
65
66
  },
66
67
  "dependencies": {
67
- "@ark-ui/anatomy": "2.2.0",
68
- "@zag-js/accordion": "0.36.2",
69
- "@zag-js/avatar": "0.36.2",
70
- "@zag-js/carousel": "0.36.2",
71
- "@zag-js/checkbox": "0.36.2",
72
- "@zag-js/clipboard": "0.36.2",
73
- "@zag-js/collapsible": "0.36.2",
74
- "@zag-js/color-picker": "0.36.2",
75
- "@zag-js/color-utils": "0.36.2",
76
- "@zag-js/combobox": "0.36.2",
77
- "@zag-js/date-picker": "0.36.2",
78
- "@zag-js/date-utils": "0.36.2",
79
- "@zag-js/dialog": "0.36.2",
80
- "@zag-js/editable": "0.36.2",
81
- "@zag-js/file-upload": "0.36.2",
82
- "@zag-js/hover-card": "0.36.2",
83
- "@zag-js/i18n-utils": "0.36.2",
84
- "@zag-js/menu": "0.36.2",
85
- "@zag-js/number-input": "0.36.2",
86
- "@zag-js/pagination": "0.36.2",
87
- "@zag-js/pin-input": "0.36.2",
88
- "@zag-js/popover": "0.36.2",
89
- "@zag-js/presence": "0.36.2",
90
- "@zag-js/progress": "0.36.2",
91
- "@zag-js/radio-group": "0.36.2",
92
- "@zag-js/rating-group": "0.36.2",
93
- "@zag-js/react": "0.36.2",
94
- "@zag-js/select": "0.36.2",
95
- "@zag-js/slider": "0.36.2",
96
- "@zag-js/splitter": "0.36.2",
97
- "@zag-js/switch": "0.36.2",
98
- "@zag-js/tabs": "0.36.2",
99
- "@zag-js/tags-input": "0.36.2",
100
- "@zag-js/toast": "0.36.2",
101
- "@zag-js/toggle-group": "0.36.2",
102
- "@zag-js/tooltip": "0.36.2",
103
- "@zag-js/tree-view": "0.36.2",
104
- "@zag-js/types": "0.36.2"
68
+ "@ark-ui/anatomy": "2.3.1",
69
+ "@zag-js/accordion": "0.38.0",
70
+ "@zag-js/avatar": "0.38.0",
71
+ "@zag-js/carousel": "0.38.0",
72
+ "@zag-js/checkbox": "0.38.0",
73
+ "@zag-js/clipboard": "0.38.0",
74
+ "@zag-js/collapsible": "0.38.0",
75
+ "@zag-js/color-picker": "0.38.0",
76
+ "@zag-js/color-utils": "0.38.0",
77
+ "@zag-js/combobox": "0.38.0",
78
+ "@zag-js/core": "0.38.0",
79
+ "@zag-js/date-picker": "0.38.0",
80
+ "@zag-js/date-utils": "0.38.0",
81
+ "@zag-js/dialog": "0.38.0",
82
+ "@zag-js/editable": "0.38.0",
83
+ "@zag-js/file-upload": "0.38.0",
84
+ "@zag-js/hover-card": "0.38.0",
85
+ "@zag-js/i18n-utils": "0.38.0",
86
+ "@zag-js/menu": "0.38.0",
87
+ "@zag-js/number-input": "0.38.0",
88
+ "@zag-js/pagination": "0.38.0",
89
+ "@zag-js/pin-input": "0.38.0",
90
+ "@zag-js/popover": "0.38.0",
91
+ "@zag-js/presence": "0.38.0",
92
+ "@zag-js/progress": "0.38.0",
93
+ "@zag-js/radio-group": "0.38.0",
94
+ "@zag-js/rating-group": "0.38.0",
95
+ "@zag-js/react": "0.38.0",
96
+ "@zag-js/select": "0.38.0",
97
+ "@zag-js/slider": "0.38.0",
98
+ "@zag-js/splitter": "0.38.0",
99
+ "@zag-js/switch": "0.38.0",
100
+ "@zag-js/tabs": "0.38.0",
101
+ "@zag-js/tags-input": "0.38.0",
102
+ "@zag-js/toast": "0.38.0",
103
+ "@zag-js/toggle-group": "0.38.0",
104
+ "@zag-js/tooltip": "0.38.0",
105
+ "@zag-js/tree-view": "0.38.0",
106
+ "@zag-js/types": "0.38.0"
105
107
  },
106
108
  "devDependencies": {
107
109
  "@release-it/keep-a-changelog": "5.0.0",
108
- "@storybook/addon-a11y": "7.6.14",
109
- "@storybook/addon-essentials": "7.6.14",
110
- "@storybook/addons": "7.6.14",
111
- "@storybook/react": "7.6.14",
112
- "@storybook/react-vite": "7.6.14",
110
+ "@storybook/addon-a11y": "7.6.17",
111
+ "@storybook/addon-essentials": "7.6.17",
112
+ "@storybook/addons": "7.6.17",
113
+ "@storybook/react": "7.6.17",
114
+ "@storybook/react-vite": "7.6.17",
113
115
  "@testing-library/dom": "9.3.4",
114
116
  "@testing-library/jest-dom": "6.4.2",
115
117
  "@testing-library/react": "14.2.1",
116
118
  "@testing-library/user-event": "14.5.2",
117
119
  "@types/jsdom": "21.1.6",
118
- "@types/react": "18.2.55",
120
+ "@types/react": "18.2.58",
119
121
  "@types/react-dom": "18.2.19",
120
122
  "@types/testing-library__jest-dom": "5.14.9",
121
- "@typescript-eslint/eslint-plugin": "6.21.0",
122
- "@typescript-eslint/parser": "6.21.0",
123
+ "@typescript-eslint/eslint-plugin": "7.0.2",
124
+ "@typescript-eslint/parser": "7.0.2",
123
125
  "@vitejs/plugin-react": "4.2.1",
124
- "@vitest/coverage-v8": "1.2.2",
125
- "eslint": "8.56.0",
126
+ "@vitest/coverage-v8": "1.3.1",
127
+ "eslint": "8.57.0",
126
128
  "eslint-plugin-jest-dom": "5.1.0",
127
129
  "eslint-plugin-react": "7.33.2",
128
130
  "eslint-plugin-react-hooks": "4.6.0",
@@ -133,13 +135,13 @@
133
135
  "react-dom": "18.2.0",
134
136
  "react-frame-component": "5.2.6",
135
137
  "react-hook-form": "7.50.1",
136
- "release-it": "17.0.3",
138
+ "release-it": "17.1.1",
137
139
  "resize-observer-polyfill": "1.5.1",
138
- "storybook": "7.6.14",
140
+ "storybook": "7.6.17",
139
141
  "typescript": "5.3.3",
140
- "vite": "5.1.1",
141
- "vite-plugin-dts": "3.7.2",
142
- "vitest": "1.2.2"
142
+ "vite": "5.1.4",
143
+ "vite-plugin-dts": "3.7.3",
144
+ "vitest": "1.3.1"
143
145
  },
144
146
  "peerDependencies": {
145
147
  "react": ">=18.0.0",
@@ -182,6 +184,11 @@
182
184
  "import": "./clipboard/index.mjs",
183
185
  "require": "./clipboard/index.cjs"
184
186
  },
187
+ "./collapsible": {
188
+ "types": "./collapsible/index.d.ts",
189
+ "import": "./collapsible/index.mjs",
190
+ "require": "./collapsible/index.cjs"
191
+ },
185
192
  "./color-picker": {
186
193
  "types": "./color-picker/index.d.ts",
187
194
  "import": "./color-picker/index.mjs",
@@ -4,7 +4,6 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
5
  const presence = require('./presence.cjs');
6
6
  const presenceContext = require('./presence-context.cjs');
7
- const presencePropsContext = require('./presence-props-context.cjs');
8
7
  const splitPresenceProps = require('./split-presence-props.cjs');
9
8
  const usePresence = require('./use-presence.cjs');
10
9
 
@@ -13,7 +12,5 @@ const usePresence = require('./use-presence.cjs');
13
12
  exports.Presence = presence.Presence;
14
13
  exports.PresenceProvider = presenceContext.PresenceProvider;
15
14
  exports.usePresenceContext = presenceContext.usePresenceContext;
16
- exports.PresencePropsProvider = presencePropsContext.PresencePropsProvider;
17
- exports.usePresencePropsContext = presencePropsContext.usePresencePropsContext;
18
15
  exports.splitPresenceProps = splitPresenceProps.splitPresenceProps;
19
16
  exports.usePresence = usePresence.usePresence;
@@ -1,7 +1,6 @@
1
1
  import { Presence, type PresenceProps } from './presence';
2
2
  import { PresenceProvider, usePresenceContext, type PresenceContext } from './presence-context';
3
- import { PresencePropsProvider, usePresencePropsContext, type PresencePropsContext } from './presence-props-context';
4
3
  import { splitPresenceProps } from './split-presence-props';
5
4
  import { usePresence, type UsePresenceProps, type UsePresenceReturn } from './use-presence';
6
- export { Presence, PresencePropsProvider, PresenceProvider, splitPresenceProps, usePresence, usePresenceContext, usePresencePropsContext, };
7
- export type { PresenceContext, PresenceProps, PresencePropsContext, UsePresenceProps, UsePresenceReturn, };
5
+ export { Presence, PresenceProvider, splitPresenceProps, usePresence, usePresenceContext };
6
+ export type { PresenceContext, PresenceProps, UsePresenceProps, UsePresenceReturn };
@@ -1,5 +1,4 @@
1
1
  export { Presence } from './presence.mjs';
2
2
  export { PresenceProvider, usePresenceContext } from './presence-context.mjs';
3
- export { PresencePropsProvider, usePresencePropsContext } from './presence-props-context.mjs';
4
3
  export { splitPresenceProps } from './split-presence-props.mjs';
5
4
  export { usePresence } from './use-presence.mjs';
@@ -5,13 +5,11 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5
5
 
6
6
  const createSplitProps = require('../create-split-props.cjs');
7
7
 
8
- function splitPresenceProps(props) {
9
- return createSplitProps.createSplitProps()(props, [
10
- "lazyMount",
11
- "onExitComplete",
12
- "present",
13
- "unmountOnExit"
14
- ]);
15
- }
8
+ const splitPresenceProps = (props) => createSplitProps.createSplitProps()(props, [
9
+ "lazyMount",
10
+ "onExitComplete",
11
+ "present",
12
+ "unmountOnExit"
13
+ ]);
16
14
 
17
15
  exports.splitPresenceProps = splitPresenceProps;