@ark-ui/solid 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 +50 -0
- package/cjs/index.js +254 -49
- package/cjs/index.js.map +1 -1
- package/esm/index.js +240 -50
- package/esm/index.js.map +1 -1
- package/package.json +53 -52
- package/source/accordion/accordion-item.jsx +4 -3
- package/source/accordion/accordion-root.jsx +4 -4
- package/source/clipboard/clipboard-context.js +5 -0
- package/source/clipboard/clipboard-control.jsx +8 -0
- package/source/clipboard/clipboard-indicator.jsx +16 -0
- package/source/clipboard/clipboard-input.jsx +8 -0
- package/source/clipboard/clipboard-label.jsx +8 -0
- package/source/clipboard/clipboard-root.jsx +22 -0
- package/source/clipboard/clipboard-trigger.jsx +8 -0
- package/source/clipboard/clipboard.jsx +7 -0
- package/source/clipboard/index.js +9 -0
- package/source/clipboard/use-clipboard.jsx +10 -0
- package/source/collapsible/collapsible-content.jsx +11 -0
- package/source/collapsible/collapsible-context.js +5 -0
- package/source/collapsible/collapsible-root.jsx +24 -0
- package/source/collapsible/collapsible-trigger.jsx +8 -0
- package/source/collapsible/collapsible.jsx +4 -0
- package/source/collapsible/index.js +6 -0
- package/source/collapsible/use-collapsible.js +23 -0
- package/source/color-picker/use-color-picker.js +0 -1
- package/source/date-picker/use-date-picker.js +0 -1
- package/source/dialog/dialog-backdrop.jsx +4 -3
- package/source/dialog/dialog-root.jsx +5 -3
- package/source/dialog/use-dialog.js +1 -1
- package/source/hover-card/use-hover-card.js +1 -1
- package/source/index.jsx +3 -0
- package/source/locale/index.js +2 -0
- package/source/locale/locale-context.jsx +7 -0
- package/source/locale/locale.jsx +24 -0
- package/source/menu/use-menu.js +1 -1
- package/source/popover/use-popover.js +1 -1
- package/source/presence/index.js +1 -2
- package/source/presence/split-presence-props.js +6 -8
- package/source/presence/use-presence.js +8 -7
- package/source/render-strategy.js +7 -0
- package/source/select/use-select.js +0 -1
- package/source/splitter/splitter-root.jsx +0 -1
- package/source/tabs/tab-content.jsx +4 -3
- package/source/tabs/tabs-root.jsx +4 -4
- package/source/tooltip/use-tooltip.js +1 -1
- package/source/tree-view/tree-view-branch-indicator.jsx +1 -4
- package/types/clipboard/clipboard-context.d.ts +4 -0
- package/types/clipboard/clipboard-control.d.ts +4 -0
- package/types/clipboard/clipboard-indicator.d.ts +10 -0
- package/types/clipboard/clipboard-input.d.ts +4 -0
- package/types/clipboard/clipboard-label.d.ts +4 -0
- package/types/clipboard/clipboard-root.d.ts +11 -0
- package/types/clipboard/clipboard-trigger.d.ts +4 -0
- package/types/clipboard/clipboard.d.ts +7 -0
- package/types/clipboard/index.d.ts +11 -0
- package/types/clipboard/use-clipboard.d.ts +9 -0
- package/types/collapsible/collapsible-content.d.ts +4 -0
- package/types/collapsible/collapsible-context.d.ts +4 -0
- package/types/collapsible/collapsible-root.d.ts +6 -0
- package/types/collapsible/collapsible-trigger.d.ts +4 -0
- package/types/collapsible/collapsible.d.ts +4 -0
- package/types/collapsible/index.d.ts +8 -0
- package/types/collapsible/use-collapsible.d.ts +15 -0
- package/types/index.d.ts +3 -0
- package/types/locale/index.d.ts +2 -0
- package/types/locale/locale-context.d.ts +5 -0
- package/types/locale/locale.d.ts +9 -0
- package/types/menu/menu-item-group.d.ts +3 -5
- package/types/presence/index.d.ts +2 -3
- package/types/presence/split-presence-props.d.ts +1 -1
- package/types/presence/use-presence.d.ts +2 -11
- package/types/render-strategy.d.ts +14 -0
- package/types/tabs/tabs-root.d.ts +2 -2
- package/source/presence/presence-props-context.js +0 -5
- package/types/presence/presence-props-context.d.ts +0 -4
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import * as presence from '@zag-js/presence';
|
|
2
2
|
import { normalizeProps, useMachine } from '@zag-js/solid';
|
|
3
|
-
import { createEffect, createMemo, createSignal
|
|
3
|
+
import { createEffect, createMemo, createSignal } from 'solid-js';
|
|
4
|
+
import { splitRenderStrategyProps } from '../render-strategy';
|
|
4
5
|
export const usePresence = (props) => {
|
|
5
|
-
const [
|
|
6
|
+
const [renderStrategyProps, context] = splitRenderStrategyProps(props);
|
|
6
7
|
const [wasEverPresent, setWasEverPresent] = createSignal(false);
|
|
7
|
-
const [state, send] = useMachine(presence.machine(
|
|
8
|
-
context
|
|
8
|
+
const [state, send] = useMachine(presence.machine(context), {
|
|
9
|
+
context,
|
|
9
10
|
});
|
|
10
11
|
const api = createMemo(() => presence.connect(state, send, normalizeProps));
|
|
11
12
|
createEffect(() => {
|
|
@@ -14,13 +15,13 @@ export const usePresence = (props) => {
|
|
|
14
15
|
setWasEverPresent(true);
|
|
15
16
|
});
|
|
16
17
|
return createMemo(() => ({
|
|
17
|
-
isUnmounted: (!api().isPresent && !wasEverPresent() &&
|
|
18
|
-
(
|
|
18
|
+
isUnmounted: (!api().isPresent && !wasEverPresent() && renderStrategyProps.lazyMount) ||
|
|
19
|
+
(renderStrategyProps.unmountOnExit && !api().isPresent && wasEverPresent()),
|
|
19
20
|
isPresent: api().isPresent,
|
|
20
21
|
presenceProps: {
|
|
21
22
|
ref: api().setNode,
|
|
22
23
|
hidden: !api().isPresent,
|
|
23
|
-
'data-state':
|
|
24
|
+
'data-state': context.present ? 'open' : 'closed',
|
|
24
25
|
},
|
|
25
26
|
}));
|
|
26
27
|
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createContext } from './create-context';
|
|
2
|
+
import { createSplitProps } from './create-split-props';
|
|
3
|
+
export const [RenderStrategyProvider, useRenderStrategyContext] = createContext({
|
|
4
|
+
hookName: 'useRenderStrategyContext',
|
|
5
|
+
providerName: '<RenderStrategyProvider />',
|
|
6
|
+
});
|
|
7
|
+
export const splitRenderStrategyProps = (props) => createSplitProps()(props, ['lazyMount', 'unmountOnExit']);
|
|
@@ -2,13 +2,14 @@ import { mergeProps } from '@zag-js/solid';
|
|
|
2
2
|
import { Show } from 'solid-js';
|
|
3
3
|
import { createSplitProps } from '../create-split-props';
|
|
4
4
|
import { ark } from '../factory';
|
|
5
|
-
import { PresenceProvider, usePresence
|
|
5
|
+
import { PresenceProvider, usePresence } from '../presence';
|
|
6
|
+
import { useRenderStrategyContext } from '../render-strategy';
|
|
6
7
|
import { useTabsContext } from './tabs-context';
|
|
7
8
|
export const TabContent = (props) => {
|
|
8
9
|
const [contentProps, localProps] = createSplitProps()(props, ['value']);
|
|
9
10
|
const api = useTabsContext();
|
|
10
|
-
const
|
|
11
|
-
const presenceApi = usePresence(mergeProps(
|
|
11
|
+
const renderStrategyProps = useRenderStrategyContext();
|
|
12
|
+
const presenceApi = usePresence(mergeProps(renderStrategyProps, () => ({ present: api().value === contentProps.value })));
|
|
12
13
|
const mergedProps = mergeProps(() => api().getContentProps(contentProps), () => presenceApi().presenceProps, localProps);
|
|
13
14
|
return (<PresenceProvider value={presenceApi}>
|
|
14
15
|
<Show when={!presenceApi().isUnmounted}>
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { mergeProps } from '@zag-js/solid';
|
|
2
2
|
import { createSplitProps } from '../create-split-props';
|
|
3
3
|
import { ark } from '../factory';
|
|
4
|
-
import {
|
|
4
|
+
import { RenderStrategyProvider, splitRenderStrategyProps, } from '../render-strategy';
|
|
5
5
|
import { TabsProvider } from './tabs-context';
|
|
6
6
|
import { useTabs } from './use-tabs';
|
|
7
7
|
export const TabsRoot = (props) => {
|
|
8
|
-
const [
|
|
8
|
+
const [renderStrategyProps, tabsProps] = splitRenderStrategyProps(props);
|
|
9
9
|
const [tabsParams, restProps] = createSplitProps()(tabsProps, [
|
|
10
10
|
'activationMode',
|
|
11
11
|
'dir',
|
|
@@ -22,8 +22,8 @@ export const TabsRoot = (props) => {
|
|
|
22
22
|
const api = useTabs(tabsParams);
|
|
23
23
|
const mergedProps = mergeProps(() => api().rootProps, restProps);
|
|
24
24
|
return (<TabsProvider value={api}>
|
|
25
|
-
<
|
|
25
|
+
<RenderStrategyProvider value={renderStrategyProps}>
|
|
26
26
|
<ark.div {...mergedProps}/>
|
|
27
|
-
</
|
|
27
|
+
</RenderStrategyProvider>
|
|
28
28
|
</TabsProvider>);
|
|
29
29
|
};
|
|
@@ -4,7 +4,7 @@ import { createMemo, createUniqueId } from 'solid-js';
|
|
|
4
4
|
import { useEnvironmentContext } from '../environment';
|
|
5
5
|
export const useTooltip = (props) => {
|
|
6
6
|
const getRootNode = useEnvironmentContext();
|
|
7
|
-
const context = mergeProps({ id: createUniqueId(), getRootNode
|
|
7
|
+
const context = mergeProps({ id: createUniqueId(), getRootNode }, props);
|
|
8
8
|
const [state, send] = useMachine(tooltip.machine(context), { context });
|
|
9
9
|
return createMemo(() => tooltip.connect(state, send, normalizeProps));
|
|
10
10
|
};
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { treeViewAnatomy } from '@ark-ui/anatomy';
|
|
2
1
|
import { mergeProps } from '@zag-js/solid';
|
|
3
2
|
import { ark } from '../factory';
|
|
4
3
|
import { useTreeViewBranchContext } from './tree-view-branch-context';
|
|
@@ -6,8 +5,6 @@ import { useTreeViewContext } from './tree-view-context';
|
|
|
6
5
|
export const TreeViewBranchIndicator = (props) => {
|
|
7
6
|
const api = useTreeViewContext();
|
|
8
7
|
const branchProps = useTreeViewBranchContext();
|
|
9
|
-
const mergedProps = mergeProps(() => api().
|
|
10
|
-
// TODO use api.getBranchIndicatorProps() when available
|
|
11
|
-
treeViewAnatomy.build().branchIndicator.attrs, props);
|
|
8
|
+
const mergedProps = mergeProps(() => api().getBranchIndicatorProps(branchProps), props);
|
|
12
9
|
return <ark.div {...mergedProps}/>;
|
|
13
10
|
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type UseClipboardReturn } from './use-clipboard';
|
|
2
|
+
export interface ClipboardContext extends UseClipboardReturn {
|
|
3
|
+
}
|
|
4
|
+
export declare const ClipboardProvider: import("solid-js").ContextProviderComponent<ClipboardContext>, useClipboardContext: () => ClipboardContext;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type JSX } from 'solid-js';
|
|
2
|
+
import { type ArkComponent, type HTMLArkProps } from '../factory';
|
|
3
|
+
import type { Assign } from '../types';
|
|
4
|
+
interface ElementProps {
|
|
5
|
+
copied?: JSX.Element;
|
|
6
|
+
}
|
|
7
|
+
export interface ClipboardIndicatorProps extends Assign<HTMLArkProps<'div'>, ElementProps> {
|
|
8
|
+
}
|
|
9
|
+
export declare const ClipboardIndicator: ArkComponent<'div', ElementProps>;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type JSX } from 'solid-js';
|
|
2
|
+
import { type ArkComponent, type HTMLArkProps } from '../factory';
|
|
3
|
+
import type { Assign } from '../types';
|
|
4
|
+
import { type UseClipboardProps, type UseClipboardReturn } from './use-clipboard';
|
|
5
|
+
interface ElementProps extends UseClipboardProps {
|
|
6
|
+
children?: JSX.Element | ((api: UseClipboardReturn) => JSX.Element);
|
|
7
|
+
}
|
|
8
|
+
export interface ClipboardRootProps extends Assign<HTMLArkProps<'div'>, ElementProps> {
|
|
9
|
+
}
|
|
10
|
+
export declare const ClipboardRoot: ArkComponent<'div', ElementProps>;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ClipboardControl as Control } from './clipboard-control';
|
|
2
|
+
import { ClipboardIndicator as Indicator } from './clipboard-indicator';
|
|
3
|
+
import { ClipboardInput as Input } from './clipboard-input';
|
|
4
|
+
import { ClipboardLabel as Label } from './clipboard-label';
|
|
5
|
+
import { ClipboardRoot as Root } from './clipboard-root';
|
|
6
|
+
import { ClipboardTrigger as Trigger } from './clipboard-trigger';
|
|
7
|
+
export { Control, Indicator, Input, Label, Root, Trigger };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type CopyStatusDetails as ClipboardCopyStatusDetails } from '@zag-js/clipboard';
|
|
2
|
+
import { useClipboardContext, type ClipboardContext } from './clipboard-context';
|
|
3
|
+
import { ClipboardControl, type ClipboardControlProps } from './clipboard-control';
|
|
4
|
+
import { ClipboardIndicator, type ClipboardIndicatorProps } from './clipboard-indicator';
|
|
5
|
+
import { ClipboardInput, type ClipboardInputProps } from './clipboard-input';
|
|
6
|
+
import { ClipboardLabel, type ClipboardLabelProps } from './clipboard-label';
|
|
7
|
+
import { ClipboardRoot, type ClipboardRootProps } from './clipboard-root';
|
|
8
|
+
import { ClipboardTrigger, type ClipboardTriggerProps } from './clipboard-trigger';
|
|
9
|
+
export * as Clipboard from './clipboard';
|
|
10
|
+
export { ClipboardControl, ClipboardIndicator, ClipboardInput, ClipboardLabel, ClipboardRoot, ClipboardTrigger, useClipboardContext, };
|
|
11
|
+
export type { ClipboardContext, ClipboardControlProps, ClipboardCopyStatusDetails, ClipboardIndicatorProps, ClipboardInputProps, ClipboardLabelProps, ClipboardRootProps, ClipboardTriggerProps, };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as clipboard from '@zag-js/clipboard';
|
|
2
|
+
import { type PropTypes } from '@zag-js/solid';
|
|
3
|
+
import { type Accessor } from 'solid-js';
|
|
4
|
+
import { type Optional } from '../types';
|
|
5
|
+
export interface UseClipboardProps extends Optional<clipboard.Context, 'id'> {
|
|
6
|
+
}
|
|
7
|
+
export interface UseClipboardReturn extends Accessor<clipboard.Api<PropTypes>> {
|
|
8
|
+
}
|
|
9
|
+
export declare const useClipboard: (props: UseClipboardProps) => UseClipboardReturn;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type UseCollapsibleReturn } from './use-collapsible';
|
|
2
|
+
export interface CollapsibleContext extends UseCollapsibleReturn {
|
|
3
|
+
}
|
|
4
|
+
export declare const CollapsibleProvider: import("solid-js").ContextProviderComponent<CollapsibleContext>, useCollapsibleContext: () => CollapsibleContext;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type ArkComponent, type HTMLArkProps } from '../factory';
|
|
2
|
+
import type { Assign } from '../types';
|
|
3
|
+
import { type UseCollapsibleProps } from './use-collapsible';
|
|
4
|
+
export interface CollapsibleRootProps extends Assign<HTMLArkProps<'div'>, UseCollapsibleProps> {
|
|
5
|
+
}
|
|
6
|
+
export declare const CollapsibleRoot: ArkComponent<'div', UseCollapsibleProps>;
|
|
@@ -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,15 @@
|
|
|
1
|
+
import * as collapsible from '@zag-js/collapsible';
|
|
2
|
+
import { type PropTypes } from '@zag-js/solid';
|
|
3
|
+
import { type Accessor } from 'solid-js';
|
|
4
|
+
import { type RenderStrategyProps } from '../render-strategy';
|
|
5
|
+
import { type Optional } from '../types';
|
|
6
|
+
export interface UseCollapsibleProps extends Optional<Omit<collapsible.Context, 'open.controlled'>, 'id'>, RenderStrategyProps {
|
|
7
|
+
}
|
|
8
|
+
export interface UseCollapsibleReturn extends Accessor<collapsible.Api<PropTypes> & {
|
|
9
|
+
/**
|
|
10
|
+
* Whether the content is unmounted
|
|
11
|
+
*/
|
|
12
|
+
isUnmounted?: boolean;
|
|
13
|
+
}> {
|
|
14
|
+
}
|
|
15
|
+
export declare const useCollapsible: (props: UseCollapsibleProps) => UseCollapsibleReturn;
|
package/types/index.d.ts
CHANGED
|
@@ -2,6 +2,8 @@ export * from './accordion';
|
|
|
2
2
|
export * from './avatar';
|
|
3
3
|
export * from './carousel';
|
|
4
4
|
export * from './checkbox';
|
|
5
|
+
export * from './clipboard';
|
|
6
|
+
export * from './collapsible';
|
|
5
7
|
export * from './color-picker';
|
|
6
8
|
export * from './combobox';
|
|
7
9
|
export * from './date-picker';
|
|
@@ -11,6 +13,7 @@ export * from './environment';
|
|
|
11
13
|
export * from './factory';
|
|
12
14
|
export * from './file-upload';
|
|
13
15
|
export * from './hover-card';
|
|
16
|
+
export * from './locale';
|
|
14
17
|
export * from './menu';
|
|
15
18
|
export * from './number-input';
|
|
16
19
|
export * from './pagination';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type Locale } from '@zag-js/i18n-utils';
|
|
2
|
+
import type { Accessor } from 'solid-js';
|
|
3
|
+
export interface LocaleContext extends Locale {
|
|
4
|
+
}
|
|
5
|
+
export declare const LocaleContextProvider: import("solid-js").ContextProviderComponent<Accessor<LocaleContext>>, useLocaleContext: () => Accessor<LocaleContext>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type LocaleOptions } from '@zag-js/i18n-utils';
|
|
2
|
+
import { type ParentProps } from 'solid-js';
|
|
3
|
+
export interface LocaleProviderProps extends LocaleOptions, ParentProps {
|
|
4
|
+
/**
|
|
5
|
+
* The default locale to use if no locale is provided via props.
|
|
6
|
+
*/
|
|
7
|
+
defaultLocale?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare const LocaleProvider: (props: LocaleProviderProps) => import("solid-js").JSX.Element;
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
+
import type { ItemGroupProps } from '@zag-js/menu';
|
|
1
2
|
import { type ArkComponent, type HTMLArkProps } from '../factory';
|
|
2
3
|
import type { Assign } from '../types';
|
|
3
|
-
|
|
4
|
-
type MenuItemGroupParams = Parameters<ReturnType<ReturnType<UseMenuReturn>['api']>['getItemGroupProps']>[0];
|
|
5
|
-
export interface MenuItemGroupProps extends Assign<HTMLArkProps<'div'>, MenuItemGroupParams> {
|
|
4
|
+
export interface MenuItemGroupProps extends Assign<HTMLArkProps<'div'>, ItemGroupProps> {
|
|
6
5
|
}
|
|
7
|
-
export declare const MenuItemGroup: ArkComponent<'div',
|
|
8
|
-
export {};
|
|
6
|
+
export declare const MenuItemGroup: ArkComponent<'div', ItemGroupProps>;
|
|
@@ -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,
|
|
7
|
-
export type { PresenceContext, PresenceProps,
|
|
5
|
+
export { Presence, PresenceProvider, splitPresenceProps, usePresence, usePresenceContext };
|
|
6
|
+
export type { PresenceContext, PresenceProps, UsePresenceProps, UsePresenceReturn };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { UsePresenceProps } from './use-presence';
|
|
2
|
-
export declare
|
|
2
|
+
export declare const splitPresenceProps: <T extends UsePresenceProps>(props: T) => [Pick<T, Extract<("present" | "onExitComplete" | "lazyMount" | "unmountOnExit")[], readonly (keyof T)[]>[number]>, { [P in keyof T as Exclude<P, "present" | "onExitComplete" | "lazyMount" | "unmountOnExit">]: T[P]; }];
|
|
@@ -1,16 +1,7 @@
|
|
|
1
1
|
import * as presence from '@zag-js/presence';
|
|
2
|
+
import { type RenderStrategyProps } from '../render-strategy';
|
|
2
3
|
import type { Optional } from '../types';
|
|
3
|
-
export interface UsePresenceProps extends Optional<presence.Context, 'present'
|
|
4
|
-
/**
|
|
5
|
-
* Whether to enable lazy mounting
|
|
6
|
-
* @default false
|
|
7
|
-
*/
|
|
8
|
-
lazyMount?: boolean;
|
|
9
|
-
/**
|
|
10
|
-
* Whether to unmount on exit.
|
|
11
|
-
* @default false
|
|
12
|
-
*/
|
|
13
|
-
unmountOnExit?: boolean;
|
|
4
|
+
export interface UsePresenceProps extends Optional<presence.Context, 'present'>, RenderStrategyProps {
|
|
14
5
|
}
|
|
15
6
|
export interface UsePresenceReturn extends ReturnType<typeof usePresence> {
|
|
16
7
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface RenderStrategyProps {
|
|
2
|
+
/**
|
|
3
|
+
* Whether to enable lazy mounting
|
|
4
|
+
* @default false
|
|
5
|
+
*/
|
|
6
|
+
lazyMount?: boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Whether to unmount on exit.
|
|
9
|
+
* @default false
|
|
10
|
+
*/
|
|
11
|
+
unmountOnExit?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare const RenderStrategyProvider: import("solid-js").ContextProviderComponent<RenderStrategyProps>, useRenderStrategyContext: () => RenderStrategyProps;
|
|
14
|
+
export declare const splitRenderStrategyProps: <T extends RenderStrategyProps>(props: T) => [Pick<T, Extract<("lazyMount" | "unmountOnExit")[], readonly (keyof T)[]>[number]>, { [P in keyof T as Exclude<P, "lazyMount" | "unmountOnExit">]: T[P]; }];
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { type ArkComponent, type HTMLArkProps } from '../factory';
|
|
2
|
-
import { type
|
|
2
|
+
import { type RenderStrategyProps } from '../render-strategy';
|
|
3
3
|
import type { Assign } from '../types';
|
|
4
4
|
import { type UseTabsProps } from './use-tabs';
|
|
5
|
-
interface ElementProps extends UseTabsProps,
|
|
5
|
+
interface ElementProps extends UseTabsProps, RenderStrategyProps {
|
|
6
6
|
}
|
|
7
7
|
export interface TabsRootProps extends Assign<HTMLArkProps<'div'>, ElementProps> {
|
|
8
8
|
}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { UsePresenceProps } from './use-presence';
|
|
2
|
-
export interface PresencePropsContext extends UsePresenceProps {
|
|
3
|
-
}
|
|
4
|
-
export declare const PresencePropsProvider: import("solid-js").ContextProviderComponent<PresencePropsContext>, usePresencePropsContext: () => PresencePropsContext;
|