@ark-ui/solid
Version:
A collection of unstyled, accessible UI components for Solid, utilizing state machines for seamless interaction.
233 lines (215 loc) • 7.07 kB
JSX
import {
PresenceProvider,
splitPresenceProps,
usePresence,
usePresenceContext
} from "./IG7INNI2.jsx";
import {
composeRefs
} from "./PT2CJE3O.jsx";
import {
RenderStrategyProvider,
splitRenderStrategyProps,
useRenderStrategyContext
} from "./NEBB7COJ.jsx";
import {
createSplitProps
} from "./6WEDGJKQ.jsx";
import {
ark
} from "./UFYZ7HLU.jsx";
import {
useLocaleContext
} from "./YUC6JE7K.jsx";
import {
useEnvironmentContext
} from "./E2L62MKC.jsx";
import {
createContext
} from "./TVCIHLER.jsx";
import {
runIfFn
} from "./KGOB2IMX.jsx";
import {
__export
} from "./7IUG3E2V.jsx";
// src/components/dialog/dialog-backdrop.tsx
import { mergeProps } from "@zag-js/solid";
import { Show } from "solid-js";
// src/components/dialog/use-dialog-context.ts
var [DialogProvider, useDialogContext] = createContext({
hookName: "useDialogContext",
providerName: "<DialogProvider />"
});
// src/components/dialog/dialog-backdrop.tsx
var DialogBackdrop = (props) => {
const api = useDialogContext();
const renderStrategyProps = useRenderStrategyContext();
const presenceApi = usePresence(mergeProps(renderStrategyProps, () => ({ present: api().open })));
const mergedProps = mergeProps(
() => api().getBackdropProps(),
() => presenceApi().presenceProps,
props
);
return <Show when={!presenceApi().unmounted}>
<ark.div {...mergedProps} ref={composeRefs(presenceApi().ref, props.ref)} />
</Show>;
};
// src/components/dialog/dialog-close-trigger.tsx
import { mergeProps as mergeProps2 } from "@zag-js/solid";
var DialogCloseTrigger = (props) => {
const dialog2 = useDialogContext();
const mergedProps = mergeProps2(() => dialog2().getCloseTriggerProps(), props);
return <ark.button {...mergedProps} />;
};
// src/components/dialog/dialog-content.tsx
import { mergeProps as mergeProps3 } from "@zag-js/solid";
import { Show as Show2 } from "solid-js";
var DialogContent = (props) => {
const api = useDialogContext();
const presenceApi = usePresenceContext();
const mergedProps = mergeProps3(
() => api().getContentProps(),
() => presenceApi().presenceProps,
props
);
return <Show2 when={!presenceApi().unmounted}>
<ark.div {...mergedProps} ref={composeRefs(presenceApi().ref, props.ref)} />
</Show2>;
};
// src/components/dialog/dialog-context.tsx
var DialogContext = (props) => props.children(useDialogContext());
// src/components/dialog/dialog-description.tsx
import { mergeProps as mergeProps4 } from "@zag-js/solid";
var DialogDescription = (props) => {
const dialog2 = useDialogContext();
const mergedProps = mergeProps4(() => dialog2().getDescriptionProps(), props);
return <ark.div {...mergedProps} />;
};
// src/components/dialog/dialog-positioner.tsx
import { mergeProps as mergeProps5 } from "@zag-js/solid";
import { Show as Show3 } from "solid-js";
var DialogPositioner = (props) => {
const api = useDialogContext();
const presenceApi = usePresenceContext();
const mergedProps = mergeProps5(() => api().getPositionerProps(), props);
return <Show3 when={!presenceApi().unmounted}>
<ark.div {...mergedProps} />
</Show3>;
};
// src/components/dialog/dialog-root.tsx
import { mergeProps as mergeProps6 } from "@zag-js/solid";
// src/components/dialog/use-dialog.ts
import * as dialog from "@zag-js/dialog";
import { normalizeProps, useMachine } from "@zag-js/solid";
import { createMemo, createUniqueId } from "solid-js";
var useDialog = (props) => {
const id = createUniqueId();
const locale = useLocaleContext();
const environment = useEnvironmentContext();
const machineProps = createMemo(() => ({
id,
dir: locale().dir,
getRootNode: environment().getRootNode,
...runIfFn(props)
}));
const service = useMachine(dialog.machine, machineProps);
return createMemo(() => dialog.connect(service, normalizeProps));
};
// src/components/dialog/dialog-root.tsx
var DialogRoot = (props) => {
const [presenceProps, dialogProps] = splitPresenceProps(props);
const [renderStrategyProps] = splitRenderStrategyProps(presenceProps);
const [useDialogProps, localProps] = createSplitProps()(dialogProps, [
"aria-label",
"closeOnEscape",
"closeOnInteractOutside",
"defaultOpen",
"finalFocusEl",
"id",
"ids",
"initialFocusEl",
"modal",
"onEscapeKeyDown",
"onFocusOutside",
"onInteractOutside",
"onOpenChange",
"onPointerDownOutside",
"open",
"persistentElements",
"preventScroll",
"restoreFocus",
"role",
"trapFocus"
]);
const api = useDialog(useDialogProps);
const apiPresence = usePresence(mergeProps6(presenceProps, () => ({ present: api().open })));
return <DialogProvider value={api}>
<RenderStrategyProvider value={renderStrategyProps}>
<PresenceProvider value={apiPresence}>{localProps.children}</PresenceProvider>
</RenderStrategyProvider>
</DialogProvider>;
};
// src/components/dialog/dialog-root-provider.tsx
import { mergeProps as mergeProps7 } from "@zag-js/solid";
var DialogRootProvider = (props) => {
const [presenceProps, dialogProps] = splitPresenceProps(props);
const [renderStrategyProps] = splitRenderStrategyProps(presenceProps);
const apiPresence = usePresence(mergeProps7(presenceProps, () => ({ present: dialogProps.value().open })));
return <DialogProvider value={dialogProps.value}>
<RenderStrategyProvider value={renderStrategyProps}>
<PresenceProvider value={apiPresence}>{dialogProps.children}</PresenceProvider>
</RenderStrategyProvider>
</DialogProvider>;
};
// src/components/dialog/dialog-title.tsx
import { mergeProps as mergeProps8 } from "@zag-js/solid";
var DialogTitle = (props) => {
const dialog2 = useDialogContext();
const mergedProps = mergeProps8(() => dialog2().getTitleProps(), props);
return <ark.h2 {...mergedProps} />;
};
// src/components/dialog/dialog-trigger.tsx
import { mergeProps as mergeProps9 } from "@zag-js/solid";
var DialogTrigger = (props) => {
const api = useDialogContext();
const presenceApi = usePresenceContext();
const mergedProps = mergeProps9(
() => api().getTriggerProps(),
() => ({ "aria-controls": presenceApi().unmounted && null }),
props
);
return <ark.button {...mergedProps} />;
};
// src/components/dialog/dialog.anatomy.ts
import { anatomy } from "@zag-js/dialog";
// src/components/dialog/dialog.ts
var dialog_exports = {};
__export(dialog_exports, {
Backdrop: () => DialogBackdrop,
CloseTrigger: () => DialogCloseTrigger,
Content: () => DialogContent,
Context: () => DialogContext,
Description: () => DialogDescription,
Positioner: () => DialogPositioner,
Root: () => DialogRoot,
RootProvider: () => DialogRootProvider,
Title: () => DialogTitle,
Trigger: () => DialogTrigger
});
export {
useDialogContext,
DialogBackdrop,
DialogCloseTrigger,
DialogContent,
DialogContext,
DialogDescription,
DialogPositioner,
useDialog,
DialogRoot,
DialogRootProvider,
DialogTitle,
DialogTrigger,
anatomy,
dialog_exports
};