@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.
Files changed (34) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/cjs/index.js +141 -0
  3. package/cjs/index.js.map +1 -1
  4. package/esm/index.js +132 -2
  5. package/esm/index.js.map +1 -1
  6. package/package.json +1 -1
  7. package/source/clipboard/clipboard-context.js +5 -0
  8. package/source/clipboard/clipboard-control.jsx +8 -0
  9. package/source/clipboard/clipboard-indicator.jsx +16 -0
  10. package/source/clipboard/clipboard-input.jsx +8 -0
  11. package/source/clipboard/clipboard-label.jsx +8 -0
  12. package/source/clipboard/clipboard-root.jsx +22 -0
  13. package/source/clipboard/clipboard-trigger.jsx +8 -0
  14. package/source/clipboard/clipboard.jsx +7 -0
  15. package/source/clipboard/index.js +9 -0
  16. package/source/clipboard/use-clipboard.jsx +10 -0
  17. package/source/index.jsx +2 -0
  18. package/source/locale/index.js +2 -0
  19. package/source/locale/locale-context.jsx +7 -0
  20. package/source/locale/locale.jsx +24 -0
  21. package/types/clipboard/clipboard-context.d.ts +4 -0
  22. package/types/clipboard/clipboard-control.d.ts +4 -0
  23. package/types/clipboard/clipboard-indicator.d.ts +10 -0
  24. package/types/clipboard/clipboard-input.d.ts +4 -0
  25. package/types/clipboard/clipboard-label.d.ts +4 -0
  26. package/types/clipboard/clipboard-root.d.ts +11 -0
  27. package/types/clipboard/clipboard-trigger.d.ts +4 -0
  28. package/types/clipboard/clipboard.d.ts +7 -0
  29. package/types/clipboard/index.d.ts +11 -0
  30. package/types/clipboard/use-clipboard.d.ts +9 -0
  31. package/types/index.d.ts +2 -0
  32. package/types/locale/index.d.ts +2 -0
  33. package/types/locale/locale-context.d.ts +5 -0
  34. package/types/locale/locale.d.ts +9 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ark-ui/solid",
3
- "version": "2.1.0",
3
+ "version": "2.1.1",
4
4
  "description": "A collection of unstyled, accessible UI components for Solid, utilizing state machines for seamless interaction.",
5
5
  "keywords": [
6
6
  "accordion",
@@ -0,0 +1,5 @@
1
+ import { createContext } from '../create-context';
2
+ export const [ClipboardProvider, useClipboardContext] = createContext({
3
+ hookName: 'useClipboardContext',
4
+ providerName: '<ClipboardProvider />',
5
+ });
@@ -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,2 @@
1
+ export { LocaleProvider } from './locale';
2
+ export { useLocaleContext } from './locale-context';
@@ -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,4 @@
1
+ import { type ArkComponent, type HTMLArkProps } from '../factory';
2
+ export interface ClipboardControlProps extends HTMLArkProps<'div'> {
3
+ }
4
+ export declare const ClipboardControl: ArkComponent<'div'>;
@@ -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,4 @@
1
+ import { type ArkComponent, type HTMLArkProps } from '../factory';
2
+ export interface ClipboardInputProps extends HTMLArkProps<'input'> {
3
+ }
4
+ export declare const ClipboardInput: ArkComponent<'input'>;
@@ -0,0 +1,4 @@
1
+ import { type ArkComponent, type HTMLArkProps } from '../factory';
2
+ export interface ClipboardLabelProps extends HTMLArkProps<'label'> {
3
+ }
4
+ export declare const ClipboardLabel: ArkComponent<'label'>;
@@ -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,4 @@
1
+ import { type ArkComponent, type HTMLArkProps } from '../factory';
2
+ export interface ClipboardTriggerProps extends HTMLArkProps<'button'> {
3
+ }
4
+ export declare const ClipboardTrigger: ArkComponent<'button'>;
@@ -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,2 @@
1
+ export { LocaleProvider, type LocaleProviderProps } from './locale';
2
+ export { useLocaleContext, type LocaleContext } from './locale-context';
@@ -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;