import {
  PresenceProvider,
  splitPresenceProps,
  usePresenceContext
} from "./NEU4F4NG.jsx";
import {
  usePresence
} from "./OEGORBLT.jsx";
import {
  composeRefs
} from "./PT2CJE3O.jsx";
import {
  RenderStrategyProvider,
  splitRenderStrategyProps,
  useRenderStrategyContext
} from "./VNMGX67M.jsx";
import {
  createSplitProps
} from "./6WEDGJKQ.jsx";
import {
  useEnvironmentContext
} from "./HDGILMRT.jsx";
import {
  useLocaleContext
} from "./HOPBYFHD.jsx";
import {
  runIfFn
} from "./KGOB2IMX.jsx";
import {
  ark
} from "./UFYZ7HLU.jsx";
import {
  createContext
} from "./UZJJWJQM.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",
    "onRequestDismiss",
    "open",
    "persistentElements",
    "preventScroll",
    "restoreFocus",
    "role",
    "trapFocus",
    "triggerValue",
    "defaultTriggerValue",
    "onTriggerValueChange"
  ]);
  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 [triggerProps, localProps] = createSplitProps()(props, ["value"]);
  const api = useDialogContext();
  const presenceApi = usePresenceContext();
  const mergedProps = mergeProps9(
    () => api().getTriggerProps(triggerProps),
    () => ({ "aria-controls": presenceApi().unmounted && null }),
    localProps
  );
  return <ark.button {...mergedProps} />;
};

// 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,
  dialog_exports
};
