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/drawer/drawer-backdrop.tsx
import { mergeProps } from "@zag-js/solid";
import { Show } from "solid-js";

// src/components/drawer/use-drawer-context.ts
var [DrawerProvider, useDrawerContext] = createContext({
  hookName: "useDrawerContext",
  providerName: "<DrawerProvider />"
});

// src/components/drawer/drawer-backdrop.tsx
var DrawerBackdrop = (props) => {
  const drawer3 = useDrawerContext();
  const renderStrategyProps = useRenderStrategyContext();
  const presence = usePresence(mergeProps(renderStrategyProps, () => ({ present: drawer3().open })));
  const mergedProps = mergeProps(
    () => drawer3().getBackdropProps(),
    () => presence().presenceProps,
    props
  );
  return <Show when={!presence().unmounted}>
      <ark.div {...mergedProps} ref={composeRefs(presence().ref, props.ref)} />
    </Show>;
};

// src/components/drawer/drawer-close-trigger.tsx
import { mergeProps as mergeProps2 } from "@zag-js/solid";
var DrawerCloseTrigger = (props) => {
  const context = useDrawerContext();
  const mergedProps = mergeProps2(() => context().getCloseTriggerProps(), props);
  return <ark.button {...mergedProps} />;
};

// src/components/drawer/drawer-content.tsx
import { mergeProps as mergeProps3 } from "@zag-js/solid";
import { Show as Show2 } from "solid-js";
var DrawerContent = (props) => {
  const [contentProps, localProps] = createSplitProps()(props, ["draggable"]);
  const drawer3 = useDrawerContext();
  const presence = usePresenceContext();
  const mergedProps = mergeProps3(
    () => drawer3().getContentProps({ draggable: true, ...contentProps }),
    () => presence().presenceProps,
    localProps
  );
  return <Show2 when={!presence().unmounted}>
      <ark.div {...mergedProps} ref={composeRefs(presence().ref, localProps.ref)} />
    </Show2>;
};

// src/components/drawer/drawer-description.tsx
import { mergeProps as mergeProps4 } from "@zag-js/solid";
var DrawerDescription = (props) => {
  const drawer3 = useDrawerContext();
  const mergedProps = mergeProps4(() => drawer3().getDescriptionProps(), props);
  return <ark.div {...mergedProps} />;
};

// src/components/drawer/drawer-context.tsx
var DrawerContext = (props) => props.children(useDrawerContext());

// src/components/drawer/drawer-positioner.tsx
import { mergeProps as mergeProps5 } from "@zag-js/solid";
import { Show as Show3 } from "solid-js";
var DrawerPositioner = (props) => {
  const drawer3 = useDrawerContext();
  const presence = usePresenceContext();
  const mergedProps = mergeProps5(() => drawer3().getPositionerProps(), props);
  return <Show3 when={!presence().unmounted}>
      <ark.div {...mergedProps} />
    </Show3>;
};

// src/components/drawer/drawer-grabber.tsx
import { mergeProps as mergeProps6 } from "@zag-js/solid";
var DrawerGrabber = (props) => {
  const drawer3 = useDrawerContext();
  const mergedProps = mergeProps6(() => drawer3().getGrabberProps(), props);
  return <ark.div {...mergedProps} />;
};

// src/components/drawer/drawer-grabber-indicator.tsx
import { mergeProps as mergeProps7 } from "@zag-js/solid";
var DrawerGrabberIndicator = (props) => {
  const drawer3 = useDrawerContext();
  const mergedProps = mergeProps7(() => drawer3().getGrabberIndicatorProps(), props);
  return <ark.div {...mergedProps} />;
};

// src/components/drawer/drawer-root.tsx
import { mergeProps as mergeProps8 } from "@zag-js/solid";

// src/components/drawer/use-drawer.ts
import * as drawer from "@zag-js/drawer";
import { normalizeProps, useMachine } from "@zag-js/solid";
import { createMemo, createUniqueId } from "solid-js";

// src/components/drawer/use-drawer-stack-store.ts
import { createContext as createSolidContext, useContext } from "solid-js";
var DrawerStackStoreContext = createSolidContext();
var DrawerStackStoreProvider = DrawerStackStoreContext.Provider;
var useDrawerStackStore = () => useContext(DrawerStackStoreContext);

// src/components/drawer/use-drawer.ts
var useDrawer = (props) => {
  const locale = useLocaleContext();
  const environment = useEnvironmentContext();
  const id = createUniqueId();
  const stack = useDrawerStackStore();
  const machineProps = createMemo(() => ({
    id,
    dir: locale().dir,
    getRootNode: environment().getRootNode,
    stack,
    ...runIfFn(props)
  }));
  const service = useMachine(drawer.machine, machineProps);
  return createMemo(() => drawer.connect(service, normalizeProps));
};

// src/components/drawer/drawer-root.tsx
var DrawerRoot = (props) => {
  const [presenceProps, drawerProps] = splitPresenceProps(props);
  const [renderStrategyProps] = splitRenderStrategyProps(presenceProps);
  const [useDrawerProps, localProps] = createSplitProps()(drawerProps, [
    "id",
    "ids",
    "open",
    "defaultOpen",
    "onOpenChange",
    "closeOnInteractOutside",
    "closeOnEscape",
    "snapPoints",
    "swipeDirection",
    "snapToSequentialPoints",
    "swipeVelocityThreshold",
    "closeThreshold",
    "preventDragOnScroll",
    "stack",
    "snapPoint",
    "defaultSnapPoint",
    "onSnapPointChange",
    "modal",
    "trapFocus",
    "restoreFocus",
    "preventScroll",
    "initialFocusEl",
    "finalFocusEl",
    "role",
    "onInteractOutside",
    "onEscapeKeyDown",
    "onPointerDownOutside",
    "onFocusOutside",
    "onRequestDismiss",
    "triggerValue",
    "defaultTriggerValue",
    "onTriggerValueChange"
  ]);
  const drawer3 = useDrawer(useDrawerProps);
  const presence = usePresence(mergeProps8(presenceProps, () => ({ present: drawer3().open })));
  return <DrawerProvider value={drawer3}>
      <RenderStrategyProvider value={renderStrategyProps}>
        <PresenceProvider value={presence}>{localProps.children}</PresenceProvider>
      </RenderStrategyProvider>
    </DrawerProvider>;
};

// src/components/drawer/drawer-root-provider.tsx
import { mergeProps as mergeProps9 } from "@zag-js/solid";
var DrawerRootProvider = (props) => {
  const [presenceProps, drawerProps] = splitPresenceProps(props);
  const [renderStrategyProps] = splitRenderStrategyProps(presenceProps);
  const presence = usePresence(mergeProps9(() => ({ present: drawerProps.value().open }), presenceProps));
  return <DrawerProvider value={drawerProps.value}>
      <RenderStrategyProvider value={renderStrategyProps}>
        <PresenceProvider value={presence}>{drawerProps.children}</PresenceProvider>
      </RenderStrategyProvider>
    </DrawerProvider>;
};

// src/components/drawer/drawer-title.tsx
import { mergeProps as mergeProps10 } from "@zag-js/solid";
var DrawerTitle = (props) => {
  const drawer3 = useDrawerContext();
  const mergedProps = mergeProps10(() => drawer3().getTitleProps(), props);
  return <ark.h2 {...mergedProps} />;
};

// src/components/drawer/drawer-trigger.tsx
import { mergeProps as mergeProps11 } from "@zag-js/solid";
var DrawerTrigger = (props) => {
  const [triggerProps, localProps] = createSplitProps()(props, ["value"]);
  const drawer3 = useDrawerContext();
  const presence = usePresenceContext();
  const mergedProps = mergeProps11(
    () => drawer3().getTriggerProps(triggerProps),
    () => ({ "aria-controls": presence().unmounted && null }),
    localProps
  );
  return <ark.button {...mergedProps} />;
};

// src/components/drawer/drawer-indent.tsx
import { mergeProps as mergeProps12 } from "@zag-js/solid";

// src/components/drawer/use-drawer-stack-context.ts
var [DrawerStackProvider, useDrawerStackContext] = createContext({
  hookName: "useDrawerStackContext",
  providerName: "<DrawerStackProvider />"
});

// src/components/drawer/drawer-indent.tsx
var DrawerIndent = (props) => {
  const stackApi = useDrawerStackContext();
  const mergedProps = mergeProps12(() => stackApi().getIndentProps(), props);
  return <ark.div {...mergedProps} />;
};

// src/components/drawer/drawer-indent-background.tsx
import { mergeProps as mergeProps13 } from "@zag-js/solid";
var DrawerIndentBackground = (props) => {
  const stackApi = useDrawerStackContext();
  const mergedProps = mergeProps13(() => stackApi().getIndentBackgroundProps(), props);
  return <ark.div {...mergedProps} />;
};

// src/components/drawer/drawer-stack.tsx
import * as drawer2 from "@zag-js/drawer";
import { normalizeProps as normalizeProps2 } from "@zag-js/solid";
import { createMemo as createMemo2 } from "solid-js";
import { createStore, reconcile } from "solid-js/store";
var DrawerStack = (props) => {
  const stack = drawer2.createStack();
  const [snapshot, setSnapshot] = createStore(stack.getSnapshot());
  stack.subscribe(() => setSnapshot(reconcile(stack.getSnapshot())));
  const stackApi = createMemo2(() => drawer2.connectStack(snapshot, normalizeProps2));
  return <DrawerStackStoreProvider value={stack}>
      <DrawerStackProvider value={stackApi}>{props.children}</DrawerStackProvider>
    </DrawerStackStoreProvider>;
};

// src/components/drawer/drawer-swipe-area.tsx
import { mergeProps as mergeProps14 } from "@zag-js/solid";
var DrawerSwipeArea = (props) => {
  const drawer3 = useDrawerContext();
  const mergedProps = mergeProps14(() => drawer3().getSwipeAreaProps(), props);
  return <ark.div {...mergedProps} />;
};

// src/components/drawer/drawer.ts
var drawer_exports = {};
__export(drawer_exports, {
  Backdrop: () => DrawerBackdrop,
  CloseTrigger: () => DrawerCloseTrigger,
  Content: () => DrawerContent,
  Context: () => DrawerContext,
  Description: () => DrawerDescription,
  Grabber: () => DrawerGrabber,
  GrabberIndicator: () => DrawerGrabberIndicator,
  Indent: () => DrawerIndent,
  IndentBackground: () => DrawerIndentBackground,
  Positioner: () => DrawerPositioner,
  Root: () => DrawerRoot,
  RootProvider: () => DrawerRootProvider,
  Stack: () => DrawerStack,
  SwipeArea: () => DrawerSwipeArea,
  Title: () => DrawerTitle,
  Trigger: () => DrawerTrigger
});

export {
  useDrawerContext,
  DrawerBackdrop,
  DrawerCloseTrigger,
  DrawerContent,
  DrawerDescription,
  DrawerContext,
  DrawerPositioner,
  DrawerGrabber,
  DrawerGrabberIndicator,
  useDrawer,
  DrawerRoot,
  DrawerRootProvider,
  DrawerTitle,
  DrawerTrigger,
  useDrawerStackContext,
  DrawerIndent,
  DrawerIndentBackground,
  DrawerStack,
  DrawerSwipeArea,
  drawer_exports
};
