@ark-ui/react 2.1.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +53 -0
- package/accordion/accordion-context.d.ts +1 -2
- package/accordion/accordion-item-content.cjs +4 -12
- package/accordion/accordion-item-content.mjs +4 -12
- package/accordion/accordion-item-trigger.cjs +3 -3
- package/accordion/accordion-item-trigger.mjs +3 -3
- package/accordion/accordion-item.cjs +21 -13
- package/accordion/accordion-item.d.ts +4 -3
- package/accordion/accordion-item.mjs +21 -13
- package/accordion/accordion-root.cjs +3 -4
- package/accordion/accordion-root.d.ts +2 -2
- package/accordion/accordion-root.mjs +3 -4
- package/clipboard/clipboard-indicator.cjs +1 -1
- package/clipboard/clipboard-indicator.mjs +1 -1
- package/clipboard/index.cjs +24 -0
- package/clipboard/index.mjs +10 -0
- package/collapsible/collapsible-content.cjs +24 -0
- package/collapsible/collapsible-content.d.ts +6 -0
- package/collapsible/collapsible-content.mjs +20 -0
- package/collapsible/collapsible-context.cjs +15 -0
- package/collapsible/collapsible-context.d.ts +6 -0
- package/collapsible/collapsible-context.mjs +10 -0
- package/collapsible/collapsible-root.cjs +22 -0
- package/collapsible/collapsible-root.d.ts +8 -0
- package/collapsible/collapsible-root.mjs +18 -0
- package/collapsible/collapsible-trigger.cjs +21 -0
- package/collapsible/collapsible-trigger.d.ts +6 -0
- package/collapsible/collapsible-trigger.mjs +17 -0
- package/collapsible/collapsible.cjs +13 -0
- package/collapsible/collapsible.d.ts +4 -0
- package/collapsible/collapsible.mjs +3 -0
- package/collapsible/index.cjs +17 -0
- package/collapsible/index.d.ts +8 -0
- package/collapsible/index.mjs +6 -0
- package/collapsible/split-collapsible-props.cjs +22 -0
- package/collapsible/split-collapsible-props.d.ts +2 -0
- package/collapsible/split-collapsible-props.mjs +18 -0
- package/collapsible/use-collapsible.cjs +55 -0
- package/collapsible/use-collapsible.d.ts +17 -0
- package/collapsible/use-collapsible.mjs +32 -0
- package/dialog/dialog-backdrop.cjs +3 -3
- package/dialog/dialog-backdrop.mjs +3 -3
- package/dialog/dialog-root.cjs +3 -2
- package/dialog/dialog-root.mjs +3 -2
- package/factory.cjs +16 -12
- package/factory.mjs +17 -13
- package/index.cjs +27 -19
- package/index.d.ts +1 -0
- package/index.mjs +16 -10
- package/menu/menu-item-group.d.ts +2 -2
- package/package.json +56 -224
- package/presence/index.cjs +0 -3
- package/presence/index.d.ts +2 -3
- package/presence/index.mjs +0 -1
- package/presence/split-presence-props.cjs +6 -8
- package/presence/split-presence-props.d.ts +1 -1
- package/presence/split-presence-props.mjs +6 -8
- package/presence/use-presence.d.ts +2 -11
- package/render-strategy.cjs +18 -0
- package/render-strategy.d.ts +16 -0
- package/render-strategy.mjs +12 -0
- package/splitter/splitter-root.cjs +0 -1
- package/splitter/splitter-root.mjs +0 -1
- package/splitter/use-splitter.cjs +1 -2
- package/splitter/use-splitter.mjs +1 -2
- package/tabs/tab-content.cjs +3 -3
- package/tabs/tab-content.mjs +3 -3
- package/tabs/tabs-root.cjs +3 -4
- package/tabs/tabs-root.d.ts +2 -2
- package/tabs/tabs-root.mjs +3 -4
- package/toast/create-toaster.d.ts +2 -1
- package/tree-view/tree-view-branch-indicator.cjs +1 -7
- package/tree-view/tree-view-branch-indicator.mjs +1 -7
- package/tree-view/tree-view-root.cjs +2 -1
- package/tree-view/tree-view-root.mjs +2 -1
- package/tree-view/use-tree-view.cjs +2 -2
- package/tree-view/use-tree-view.d.ts +6 -2
- package/tree-view/use-tree-view.mjs +2 -2
- package/presence/presence-props-context.cjs +0 -17
- package/presence/presence-props-context.d.ts +0 -6
- package/presence/presence-props-context.mjs +0 -12
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
+
|
|
5
|
+
const collapsibleContent = require('./collapsible-content.cjs');
|
|
6
|
+
const collapsibleContext = require('./collapsible-context.cjs');
|
|
7
|
+
const collapsibleRoot = require('./collapsible-root.cjs');
|
|
8
|
+
const collapsibleTrigger = require('./collapsible-trigger.cjs');
|
|
9
|
+
const collapsible = require('./collapsible.cjs');
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
exports.CollapsibleContent = collapsibleContent.CollapsibleContent;
|
|
14
|
+
exports.useCollapsibleContext = collapsibleContext.useCollapsibleContext;
|
|
15
|
+
exports.CollapsibleRoot = collapsibleRoot.CollapsibleRoot;
|
|
16
|
+
exports.CollapsibleTrigger = collapsibleTrigger.CollapsibleTrigger;
|
|
17
|
+
exports.Collapsible = collapsible;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { OpenChangeDetails as CollapsibleOpenChangeDetails } from '@zag-js/collapsible';
|
|
2
|
+
import { CollapsibleContent, type CollapsibleContentProps } from './collapsible-content';
|
|
3
|
+
import { useCollapsibleContext, type CollapsibleContext } from './collapsible-context';
|
|
4
|
+
import { CollapsibleRoot, type CollapsibleRootProps } from './collapsible-root';
|
|
5
|
+
import { CollapsibleTrigger, type CollapsibleTriggerProps } from './collapsible-trigger';
|
|
6
|
+
export * as Collapsible from './collapsible';
|
|
7
|
+
export { CollapsibleContent, CollapsibleRoot, CollapsibleTrigger, useCollapsibleContext };
|
|
8
|
+
export type { CollapsibleContentProps, CollapsibleContext, CollapsibleOpenChangeDetails, CollapsibleRootProps, CollapsibleTriggerProps, };
|
|
@@ -0,0 +1,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
|
|
17
|
-
const presenceApi = usePresence.usePresence(
|
|
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
|
|
13
|
-
const presenceApi = usePresence(
|
|
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;
|
package/dialog/dialog-root.cjs
CHANGED
|
@@ -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(
|
|
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;
|
package/dialog/dialog-root.mjs
CHANGED
|
@@ -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(
|
|
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
|
|
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.
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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/
|
|
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 =
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
@@ -32,6 +32,20 @@ const checkboxIndicator = require('./checkbox/checkbox-indicator.cjs');
|
|
|
32
32
|
const checkboxLabel = require('./checkbox/checkbox-label.cjs');
|
|
33
33
|
const checkboxRoot = require('./checkbox/checkbox-root.cjs');
|
|
34
34
|
const checkbox = require('./checkbox/checkbox.cjs');
|
|
35
|
+
require('@zag-js/clipboard');
|
|
36
|
+
const clipboardContext = require('./clipboard/clipboard-context.cjs');
|
|
37
|
+
const clipboardControl = require('./clipboard/clipboard-control.cjs');
|
|
38
|
+
const clipboardIndicator = require('./clipboard/clipboard-indicator.cjs');
|
|
39
|
+
const clipboardInput = require('./clipboard/clipboard-input.cjs');
|
|
40
|
+
const clipboardLabel = require('./clipboard/clipboard-label.cjs');
|
|
41
|
+
const clipboardRoot = require('./clipboard/clipboard-root.cjs');
|
|
42
|
+
const clipboardTrigger = require('./clipboard/clipboard-trigger.cjs');
|
|
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');
|
|
35
49
|
const colorPickerArea = require('./color-picker/color-picker-area.cjs');
|
|
36
50
|
const colorPickerAreaBackground = require('./color-picker/color-picker-area-background.cjs');
|
|
37
51
|
const colorPickerAreaContext = require('./color-picker/color-picker-area-context.cjs');
|
|
@@ -203,7 +217,6 @@ const popover = require('./popover/popover.cjs');
|
|
|
203
217
|
const portal = require('./portal.cjs');
|
|
204
218
|
const presence = require('./presence/presence.cjs');
|
|
205
219
|
const presenceContext = require('./presence/presence-context.cjs');
|
|
206
|
-
const presencePropsContext = require('./presence/presence-props-context.cjs');
|
|
207
220
|
const splitPresenceProps = require('./presence/split-presence-props.cjs');
|
|
208
221
|
const usePresence = require('./presence/use-presence.cjs');
|
|
209
222
|
const progressCircle = require('./progress/progress-circle.cjs');
|
|
@@ -334,14 +347,6 @@ const treeViewLabel = require('./tree-view/tree-view-label.cjs');
|
|
|
334
347
|
const treeViewRoot = require('./tree-view/tree-view-root.cjs');
|
|
335
348
|
const treeViewTree = require('./tree-view/tree-view-tree.cjs');
|
|
336
349
|
const treeView = require('./tree-view/tree-view.cjs');
|
|
337
|
-
const clipboard = require('./clipboard/clipboard.cjs');
|
|
338
|
-
const clipboardControl = require('./clipboard/clipboard-control.cjs');
|
|
339
|
-
const clipboardIndicator = require('./clipboard/clipboard-indicator.cjs');
|
|
340
|
-
const clipboardInput = require('./clipboard/clipboard-input.cjs');
|
|
341
|
-
const clipboardLabel = require('./clipboard/clipboard-label.cjs');
|
|
342
|
-
const clipboardRoot = require('./clipboard/clipboard-root.cjs');
|
|
343
|
-
const clipboardTrigger = require('./clipboard/clipboard-trigger.cjs');
|
|
344
|
-
const clipboardContext = require('./clipboard/clipboard-context.cjs');
|
|
345
350
|
|
|
346
351
|
|
|
347
352
|
|
|
@@ -375,6 +380,19 @@ exports.CheckboxIndicator = checkboxIndicator.CheckboxIndicator;
|
|
|
375
380
|
exports.CheckboxLabel = checkboxLabel.CheckboxLabel;
|
|
376
381
|
exports.CheckboxRoot = checkboxRoot.CheckboxRoot;
|
|
377
382
|
exports.Checkbox = checkbox;
|
|
383
|
+
exports.useClipboardContext = clipboardContext.useClipboardContext;
|
|
384
|
+
exports.ClipboardControl = clipboardControl.ClipboardControl;
|
|
385
|
+
exports.ClipboardIndicator = clipboardIndicator.ClipboardIndicator;
|
|
386
|
+
exports.ClipboardInput = clipboardInput.ClipboardInput;
|
|
387
|
+
exports.ClipboardLabel = clipboardLabel.ClipboardLabel;
|
|
388
|
+
exports.ClipboardRoot = clipboardRoot.ClipboardRoot;
|
|
389
|
+
exports.ClipboardTrigger = clipboardTrigger.ClipboardTrigger;
|
|
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;
|
|
378
396
|
exports.ColorPickerArea = colorPickerArea.ColorPickerArea;
|
|
379
397
|
exports.ColorPickerAreaBackground = colorPickerAreaBackground.ColorPickerAreaBackground;
|
|
380
398
|
exports.useColorPickerAreaContext = colorPickerAreaContext.useColorPickerAreaContext;
|
|
@@ -548,8 +566,6 @@ exports.Portal = portal.Portal;
|
|
|
548
566
|
exports.Presence = presence.Presence;
|
|
549
567
|
exports.PresenceProvider = presenceContext.PresenceProvider;
|
|
550
568
|
exports.usePresenceContext = presenceContext.usePresenceContext;
|
|
551
|
-
exports.PresencePropsProvider = presencePropsContext.PresencePropsProvider;
|
|
552
|
-
exports.usePresencePropsContext = presencePropsContext.usePresencePropsContext;
|
|
553
569
|
exports.splitPresenceProps = splitPresenceProps.splitPresenceProps;
|
|
554
570
|
exports.usePresence = usePresence.usePresence;
|
|
555
571
|
exports.ProgressCircle = progressCircle.ProgressCircle;
|
|
@@ -680,11 +696,3 @@ exports.TreeViewLabel = treeViewLabel.TreeViewLabel;
|
|
|
680
696
|
exports.TreeViewRoot = treeViewRoot.TreeViewRoot;
|
|
681
697
|
exports.TreeViewTree = treeViewTree.TreeViewTree;
|
|
682
698
|
exports.TreeView = treeView;
|
|
683
|
-
exports.Clipboard = clipboard;
|
|
684
|
-
exports.ClipboardControl = clipboardControl.ClipboardControl;
|
|
685
|
-
exports.ClipboardIndicator = clipboardIndicator.ClipboardIndicator;
|
|
686
|
-
exports.ClipboardInput = clipboardInput.ClipboardInput;
|
|
687
|
-
exports.ClipboardLabel = clipboardLabel.ClipboardLabel;
|
|
688
|
-
exports.ClipboardRoot = clipboardRoot.ClipboardRoot;
|
|
689
|
-
exports.ClipboardTrigger = clipboardTrigger.ClipboardTrigger;
|
|
690
|
-
exports.useClipboardContext = clipboardContext.useClipboardContext;
|
package/index.d.ts
CHANGED
package/index.mjs
CHANGED
|
@@ -32,6 +32,22 @@ export { CheckboxLabel } from './checkbox/checkbox-label.mjs';
|
|
|
32
32
|
export { CheckboxRoot } from './checkbox/checkbox-root.mjs';
|
|
33
33
|
import * as checkbox from './checkbox/checkbox.mjs';
|
|
34
34
|
export { checkbox as Checkbox };
|
|
35
|
+
import '@zag-js/clipboard';
|
|
36
|
+
export { useClipboardContext } from './clipboard/clipboard-context.mjs';
|
|
37
|
+
export { ClipboardControl } from './clipboard/clipboard-control.mjs';
|
|
38
|
+
export { ClipboardIndicator } from './clipboard/clipboard-indicator.mjs';
|
|
39
|
+
export { ClipboardInput } from './clipboard/clipboard-input.mjs';
|
|
40
|
+
export { ClipboardLabel } from './clipboard/clipboard-label.mjs';
|
|
41
|
+
export { ClipboardRoot } from './clipboard/clipboard-root.mjs';
|
|
42
|
+
export { ClipboardTrigger } from './clipboard/clipboard-trigger.mjs';
|
|
43
|
+
import * as clipboard from './clipboard/clipboard.mjs';
|
|
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 };
|
|
35
51
|
export { ColorPickerArea } from './color-picker/color-picker-area.mjs';
|
|
36
52
|
export { ColorPickerAreaBackground } from './color-picker/color-picker-area-background.mjs';
|
|
37
53
|
export { useColorPickerAreaContext } from './color-picker/color-picker-area-context.mjs';
|
|
@@ -215,7 +231,6 @@ export { popover as Popover };
|
|
|
215
231
|
export { Portal } from './portal.mjs';
|
|
216
232
|
export { Presence } from './presence/presence.mjs';
|
|
217
233
|
export { PresenceProvider, usePresenceContext } from './presence/presence-context.mjs';
|
|
218
|
-
export { PresencePropsProvider, usePresencePropsContext } from './presence/presence-props-context.mjs';
|
|
219
234
|
export { splitPresenceProps } from './presence/split-presence-props.mjs';
|
|
220
235
|
export { usePresence } from './presence/use-presence.mjs';
|
|
221
236
|
export { ProgressCircle } from './progress/progress-circle.mjs';
|
|
@@ -360,12 +375,3 @@ export { TreeViewRoot } from './tree-view/tree-view-root.mjs';
|
|
|
360
375
|
export { TreeViewTree } from './tree-view/tree-view-tree.mjs';
|
|
361
376
|
import * as treeView from './tree-view/tree-view.mjs';
|
|
362
377
|
export { treeView as TreeView };
|
|
363
|
-
import * as clipboard from './clipboard/clipboard.mjs';
|
|
364
|
-
export { clipboard as Clipboard };
|
|
365
|
-
export { ClipboardControl } from './clipboard/clipboard-control.mjs';
|
|
366
|
-
export { ClipboardIndicator } from './clipboard/clipboard-indicator.mjs';
|
|
367
|
-
export { ClipboardInput } from './clipboard/clipboard-input.mjs';
|
|
368
|
-
export { ClipboardLabel } from './clipboard/clipboard-label.mjs';
|
|
369
|
-
export { ClipboardRoot } from './clipboard/clipboard-root.mjs';
|
|
370
|
-
export { ClipboardTrigger } from './clipboard/clipboard-trigger.mjs';
|
|
371
|
-
export { useClipboardContext } from './clipboard/clipboard-context.mjs';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { ForwardRefExoticComponent, RefAttributes } from 'react';
|
|
2
2
|
/// <reference types="react" />
|
|
3
|
-
import type {
|
|
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'>,
|
|
6
|
+
export interface MenuItemGroupProps extends Assign<HTMLArkProps<'div'>, ItemGroupProps> {
|
|
7
7
|
}
|
|
8
8
|
export declare const MenuItemGroup: ForwardRefExoticComponent<MenuItemGroupProps & RefAttributes<HTMLDivElement>>;
|