@ark-ui/solid 2.1.0 → 2.1.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.
- package/CHANGELOG.md +6 -0
- package/cjs/index.js +141 -0
- package/cjs/index.js.map +1 -1
- package/esm/index.js +132 -2
- package/esm/index.js.map +1 -1
- package/package.json +1 -1
- 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/index.jsx +2 -0
- package/source/locale/index.js +2 -0
- package/source/locale/locale-context.jsx +7 -0
- package/source/locale/locale.jsx +24 -0
- 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/index.d.ts +2 -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/package.json
CHANGED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { mergeProps } from '@zag-js/solid';
|
|
2
|
+
import { ark } from '../factory';
|
|
3
|
+
import { useClipboardContext } from './clipboard-context';
|
|
4
|
+
export const ClipboardControl = (props) => {
|
|
5
|
+
const api = useClipboardContext();
|
|
6
|
+
const mergedProps = mergeProps(() => api().controlProps, props);
|
|
7
|
+
return <ark.div {...mergedProps}/>;
|
|
8
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { mergeProps } from '@zag-js/solid';
|
|
2
|
+
import { Show, children } from 'solid-js';
|
|
3
|
+
import { createSplitProps } from '../create-split-props';
|
|
4
|
+
import { ark } from '../factory';
|
|
5
|
+
import { useClipboardContext } from './clipboard-context';
|
|
6
|
+
export const ClipboardIndicator = (props) => {
|
|
7
|
+
const [indicatorProps, localProps] = createSplitProps()(props, ['copied']);
|
|
8
|
+
const api = useClipboardContext();
|
|
9
|
+
const mergedProps = mergeProps(api().getIndicatorProps({ copied: api().isCopied }), localProps);
|
|
10
|
+
const getChildren = children(() => localProps.children);
|
|
11
|
+
return (<ark.div {...mergedProps}>
|
|
12
|
+
<Show when={api().isCopied} fallback={getChildren()}>
|
|
13
|
+
{indicatorProps.copied}
|
|
14
|
+
</Show>
|
|
15
|
+
</ark.div>);
|
|
16
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { mergeProps } from '@zag-js/solid';
|
|
2
|
+
import { ark } from '../factory';
|
|
3
|
+
import { useClipboardContext } from './clipboard-context';
|
|
4
|
+
export const ClipboardInput = (props) => {
|
|
5
|
+
const api = useClipboardContext();
|
|
6
|
+
const mergedProps = mergeProps(() => api().inputProps, props);
|
|
7
|
+
return <ark.input {...mergedProps}/>;
|
|
8
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { mergeProps } from '@zag-js/solid';
|
|
2
|
+
import { ark } from '../factory';
|
|
3
|
+
import { useClipboardContext } from './clipboard-context';
|
|
4
|
+
export const ClipboardLabel = (props) => {
|
|
5
|
+
const api = useClipboardContext();
|
|
6
|
+
const mergedProps = mergeProps(() => api().labelProps, props);
|
|
7
|
+
return <ark.label {...mergedProps}/>;
|
|
8
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { mergeProps } from '@zag-js/solid';
|
|
2
|
+
import { createSplitProps } from '../create-split-props';
|
|
3
|
+
import { ark } from '../factory';
|
|
4
|
+
import { runIfFn } from '../run-if-fn';
|
|
5
|
+
import { ClipboardProvider } from './clipboard-context';
|
|
6
|
+
import { useClipboard } from './use-clipboard';
|
|
7
|
+
export const ClipboardRoot = (props) => {
|
|
8
|
+
const [useClipboardProps, localProps] = createSplitProps()(props, [
|
|
9
|
+
'getRootNode',
|
|
10
|
+
'id',
|
|
11
|
+
'ids',
|
|
12
|
+
'value',
|
|
13
|
+
'timeout',
|
|
14
|
+
'onCopyStatusChange',
|
|
15
|
+
]);
|
|
16
|
+
const api = useClipboard(useClipboardProps);
|
|
17
|
+
const mergedProps = mergeProps(() => api().rootProps, localProps);
|
|
18
|
+
const getChildren = () => runIfFn(localProps.children, api);
|
|
19
|
+
return (<ClipboardProvider value={api}>
|
|
20
|
+
<ark.div {...mergedProps}>{getChildren()}</ark.div>
|
|
21
|
+
</ClipboardProvider>);
|
|
22
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { mergeProps } from '@zag-js/solid';
|
|
2
|
+
import { ark } from '../factory';
|
|
3
|
+
import { useClipboardContext } from './clipboard-context';
|
|
4
|
+
export const ClipboardTrigger = (props) => {
|
|
5
|
+
const api = useClipboardContext();
|
|
6
|
+
const mergedProps = mergeProps(() => api().triggerProps, props);
|
|
7
|
+
return <ark.button {...mergedProps}/>;
|
|
8
|
+
};
|
|
@@ -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,9 @@
|
|
|
1
|
+
import { useClipboardContext } from './clipboard-context';
|
|
2
|
+
import { ClipboardControl } from './clipboard-control';
|
|
3
|
+
import { ClipboardIndicator } from './clipboard-indicator';
|
|
4
|
+
import { ClipboardInput } from './clipboard-input';
|
|
5
|
+
import { ClipboardLabel } from './clipboard-label';
|
|
6
|
+
import { ClipboardRoot } from './clipboard-root';
|
|
7
|
+
import { ClipboardTrigger } from './clipboard-trigger';
|
|
8
|
+
export * as Clipboard from './clipboard';
|
|
9
|
+
export { ClipboardControl, ClipboardIndicator, ClipboardInput, ClipboardLabel, ClipboardRoot, ClipboardTrigger, useClipboardContext, };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as clipboard from '@zag-js/clipboard';
|
|
2
|
+
import { mergeProps, normalizeProps, useMachine } from '@zag-js/solid';
|
|
3
|
+
import { createMemo, createUniqueId } from 'solid-js';
|
|
4
|
+
import { useEnvironmentContext } from '../environment';
|
|
5
|
+
export const useClipboard = (props) => {
|
|
6
|
+
const getRootNode = useEnvironmentContext();
|
|
7
|
+
const context = mergeProps({ id: createUniqueId(), getRootNode }, props);
|
|
8
|
+
const [state, send] = useMachine(clipboard.machine(context), { context });
|
|
9
|
+
return createMemo(() => clipboard.connect(state, send, normalizeProps));
|
|
10
|
+
};
|
package/source/index.jsx
CHANGED
|
@@ -2,6 +2,7 @@ export * from './accordion';
|
|
|
2
2
|
export * from './avatar';
|
|
3
3
|
export * from './carousel';
|
|
4
4
|
export * from './checkbox';
|
|
5
|
+
export * from './clipboard';
|
|
5
6
|
export * from './color-picker';
|
|
6
7
|
export * from './combobox';
|
|
7
8
|
export * from './date-picker';
|
|
@@ -11,6 +12,7 @@ export * from './environment';
|
|
|
11
12
|
export * from './factory';
|
|
12
13
|
export * from './file-upload';
|
|
13
14
|
export * from './hover-card';
|
|
15
|
+
export * from './locale';
|
|
14
16
|
export * from './menu';
|
|
15
17
|
export * from './number-input';
|
|
16
18
|
export * from './pagination';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createContext } from '../create-context';
|
|
2
|
+
export const [LocaleContextProvider, useLocaleContext] = createContext({
|
|
3
|
+
hookName: 'useEnvironmentContext',
|
|
4
|
+
providerName: '<EnvironmentProvider />',
|
|
5
|
+
strict: false,
|
|
6
|
+
defaultValue: () => ({ dir: 'ltr', locale: 'en-US' }),
|
|
7
|
+
});
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { isRTL, trackLocale } from '@zag-js/i18n-utils';
|
|
2
|
+
import { createEffect, createMemo, createSignal, onCleanup, splitProps, } from 'solid-js';
|
|
3
|
+
import { useEnvironmentContext } from '../environment';
|
|
4
|
+
import { LocaleContextProvider } from './locale-context';
|
|
5
|
+
export const LocaleProvider = (props) => {
|
|
6
|
+
const [localeProps, restProps] = splitProps(props, ['locale', 'defaultLocale']);
|
|
7
|
+
const [locale, setLocale] = createSignal(localeProps.defaultLocale || localeProps.locale || 'en-US');
|
|
8
|
+
const getRootNode = useEnvironmentContext();
|
|
9
|
+
createEffect(() => {
|
|
10
|
+
const cleanup = trackLocale({
|
|
11
|
+
locale: localeProps.locale,
|
|
12
|
+
getRootNode,
|
|
13
|
+
onLocaleChange(locale) {
|
|
14
|
+
setLocale(locale.locale);
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
onCleanup(cleanup);
|
|
18
|
+
});
|
|
19
|
+
const context = createMemo(() => ({
|
|
20
|
+
locale: locale(),
|
|
21
|
+
dir: isRTL(locale()) ? 'rtl' : 'ltr',
|
|
22
|
+
}));
|
|
23
|
+
return <LocaleContextProvider value={context}>{restProps.children}</LocaleContextProvider>;
|
|
24
|
+
};
|
|
@@ -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;
|
package/types/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export * from './accordion';
|
|
|
2
2
|
export * from './avatar';
|
|
3
3
|
export * from './carousel';
|
|
4
4
|
export * from './checkbox';
|
|
5
|
+
export * from './clipboard';
|
|
5
6
|
export * from './color-picker';
|
|
6
7
|
export * from './combobox';
|
|
7
8
|
export * from './date-picker';
|
|
@@ -11,6 +12,7 @@ export * from './environment';
|
|
|
11
12
|
export * from './factory';
|
|
12
13
|
export * from './file-upload';
|
|
13
14
|
export * from './hover-card';
|
|
15
|
+
export * from './locale';
|
|
14
16
|
export * from './menu';
|
|
15
17
|
export * from './number-input';
|
|
16
18
|
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;
|