UNPKG

@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
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 };