'use client';
"use strict";
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
  for (var name in all)
    __defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
  if (from && typeof from === "object" || typeof from === "function") {
    for (let key of __getOwnPropNames(from))
      if (!__hasOwnProp.call(to, key) && key !== except)
        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  }
  return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
  // If the importer is in node compatibility mode or this is not an ESM
  // file that has been converted to a CommonJS file using a Babel-
  // compatible transform (i.e. "__esModule" has not been set), then set
  // "default" to the CommonJS "module.exports" for node compatibility.
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
  mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);

// src/components/Toast/Toast.tsx
var Toast_exports = {};
__export(Toast_exports, {
  Toast: () => Toast
});
module.exports = __toCommonJS(Toast_exports);
var import_react3 = __toESM(require("react"), 1);
var import_lib15 = require("@paalan/react-shared/lib");

// src/base/Box/Box.tsx
var import_system = require("@paalan/react-shared/system");
var import_utils = require("@paalan/react-shared/utils");
var import_jsx_runtime = require("react/jsx-runtime");
var Box = (0, import_utils.forwardRef)((props, ref) => {
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_system.StyledComponent, { ...props, ref });
});
Box.withComponent = import_system.WithStyledComponent;

// src/base/Center/Center.tsx
var import_lib = require("@paalan/react-shared/lib");
var import_utils2 = require("@paalan/react-shared/utils");
var import_jsx_runtime2 = require("react/jsx-runtime");
var Center = (0, import_utils2.forwardRef)((props, ref) => {
  const { children, className, ...restProps } = props;
  return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Box, { className: (0, import_lib.cn)("flex items-center justify-center", className), ...restProps, ref, children });
});

// src/base/Container/Container.tsx
var import_lib2 = require("@paalan/react-shared/lib");
var import_utils3 = require("@paalan/react-shared/utils");
var import_jsx_runtime3 = require("react/jsx-runtime");
var Container = (0, import_utils3.forwardRef)((props, ref) => {
  const { children, className, ...restProps } = props;
  return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Box, { className: (0, import_lib2.cn)("container", className), ...restProps, ref, children });
});

// src/base/Flex/Flex.tsx
var import_lib3 = require("@paalan/react-shared/lib");
var import_utils4 = require("@paalan/react-shared/utils");
var import_jsx_runtime4 = require("react/jsx-runtime");
var Flex = (0, import_utils4.forwardRef)((props, ref) => {
  const { children, className, ...restProps } = props;
  return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Box, { className: (0, import_lib3.cn)("flex", className), ...restProps, ref, children });
});

// src/base/Grid/Grid.tsx
var import_lib4 = require("@paalan/react-shared/lib");
var import_utils5 = require("@paalan/react-shared/utils");
var import_jsx_runtime5 = require("react/jsx-runtime");
var Grid = (0, import_utils5.forwardRef)((props, ref) => {
  const { children, className, ...restProps } = props;
  return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Box, { className: (0, import_lib4.cn)("grid", className), ...restProps, ref, children });
});
var GridItem = (0, import_utils5.forwardRef)((props, ref) => {
  const { children, ...restProps } = props;
  return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Box, { ...restProps, ref, children });
});

// src/base/HStack/HStack.tsx
var import_lib5 = require("@paalan/react-shared/lib");
var import_utils6 = require("@paalan/react-shared/utils");
var import_jsx_runtime6 = require("react/jsx-runtime");
var HStack = (0, import_utils6.forwardRef)((props, ref) => {
  const { children, className, ...restProps } = props;
  return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Box, { className: (0, import_lib5.cn)("flex flex-row items-center gap-2", className), ...restProps, ref, children });
});

// src/base/Heading/Heading.tsx
var import_lib6 = require("@paalan/react-shared/lib");
var import_utils7 = require("@paalan/react-shared/utils");
var import_jsx_runtime7 = require("react/jsx-runtime");
var headingSizes = {
  h1: "text-3xl font-bold",
  h2: "text-2xl font-bold",
  h3: "text-xl font-semibold",
  h4: "text-lg font-semibold",
  h5: "text-base font-semibold",
  h6: "text-sm font-semibold"
};
var Heading = (0, import_utils7.forwardRef)((props, ref) => {
  const { children, as: headTag = "h1", className, ...restProps } = props;
  const size = headingSizes[headTag];
  return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Box, { as: headTag, ...restProps, ref, className: (0, import_lib6.cn)(size, className), children });
});

// src/base/Paper/Paper.tsx
var import_lib7 = require("@paalan/react-shared/lib");
var import_utils8 = require("@paalan/react-shared/utils");
var import_class_variance_authority = require("class-variance-authority");
var import_jsx_runtime8 = require("react/jsx-runtime");
var paperVariants = (0, import_class_variance_authority.cva)("bg-background text-foreground", {
  variants: {
    shadow: {
      default: "shadow",
      sm: "shadow-sm",
      md: "shadow-md",
      lg: "shadow-lg",
      xl: "shadow-xl",
      "2xl": "shadow-2xl",
      inner: "shadow-inner",
      none: "shadow-none"
    }
  },
  defaultVariants: {
    shadow: "default"
  }
});
var Paper = (0, import_utils8.forwardRef)(
  ({ withBorder, shadow, className, ...props }, ref) => {
    return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
      Box,
      {
        ref,
        className: (0, import_lib7.cn)(paperVariants({ shadow }), withBorder ? "border border-border" : "", className),
        ...props
      }
    );
  }
);

// src/base/Portal/Portal.tsx
var import_react = require("react");
var import_react_hooks = require("@paalan/react-hooks");
var import_utils9 = require("@paalan/react-shared/utils");
var import_react_dom = require("react-dom");
var import_jsx_runtime9 = require("react/jsx-runtime");
var createPortalNode = (props) => {
  const node = document.createElement("div");
  node.setAttribute("data-portal", "true");
  if (typeof props.className === "string") {
    node.classList.add(...props.className.split(" "));
  }
  if (typeof props.style === "object") {
    Object.assign(node.style, props.style);
  }
  if (typeof props.id === "string") {
    node.setAttribute("id", props.id);
  }
  return node;
};
var defaultProps = {};
var Portal = (0, import_react.forwardRef)((props, ref) => {
  const { children, target, ...others } = { ...defaultProps, ...props };
  const [mounted, setMounted] = (0, import_react.useState)(false);
  const nodeRef = (0, import_react.useRef)(null);
  (0, import_react_hooks.useIsomorphicEffect)(() => {
    setMounted(true);
    nodeRef.current = !target ? createPortalNode(others) : typeof target === "string" ? document.querySelector(target) : target;
    if (!nodeRef.current) return;
    (0, import_utils9.assignRef)(ref, nodeRef.current);
    if (!target && nodeRef.current) {
      document.body.appendChild(nodeRef.current);
    }
    return () => {
      if (!target && nodeRef.current) {
        document.body.removeChild(nodeRef.current);
      }
    };
  }, [target]);
  if (!mounted || !nodeRef.current) {
    return null;
  }
  return (0, import_react_dom.createPortal)(/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_jsx_runtime9.Fragment, { children }), nodeRef.current);
});
Portal.displayName = "Portal";

// src/base/Stack/Stack.tsx
var import_lib8 = require("@paalan/react-shared/lib");
var import_utils10 = require("@paalan/react-shared/utils");
var import_jsx_runtime10 = require("react/jsx-runtime");
var Stack = (0, import_utils10.forwardRef)((props, ref) => {
  const { children, className, direction, ...restProps } = props;
  return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Box, { className: (0, import_lib8.cn)("flex flex-col gap-2", className), flexDirection: direction, ...restProps, ref, children });
});

// src/base/Text/Text.tsx
var import_lib9 = require("@paalan/react-shared/lib");
var import_utils11 = require("@paalan/react-shared/utils");
var import_jsx_runtime11 = require("react/jsx-runtime");
var Text = (0, import_utils11.forwardRef)((props, ref) => {
  const { children, className, as = "p", ...restProps } = props;
  return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Box, { as, ref, className: (0, import_lib9.cn)("", className), ...restProps, children });
});

// src/base/Typography/Typography.tsx
var import_lib10 = require("@paalan/react-shared/lib");
var import_utils12 = require("@paalan/react-shared/utils");
var import_jsx_runtime12 = require("react/jsx-runtime");
var H1 = (0, import_utils12.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
  Box,
  {
    as: "h1",
    ref,
    className: (0, import_lib10.cn)("scroll-m-20 text-4xl font-extrabold tracking-tight lg:text-5xl", className),
    ...props
  }
));
H1.displayName = "H1";
var H2 = (0, import_utils12.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
  Box,
  {
    as: "h2",
    ref,
    className: (0, import_lib10.cn)(
      "mt-10 scroll-m-20 border-b pb-2 text-3xl font-semibold tracking-tight transition-colors first:mt-0",
      className
    ),
    ...props
  }
));
H2.displayName = "H2";
var H3 = (0, import_utils12.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
  Box,
  {
    as: "h3",
    ref,
    className: (0, import_lib10.cn)("mt-8 scroll-m-20 text-2xl font-semibold tracking-tight", className),
    ...props
  }
));
H3.displayName = "H3";
var H4 = (0, import_utils12.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Box, { as: "h4", ref, className: (0, import_lib10.cn)("scroll-m-20 text-xl font-semibold tracking-tight", className), ...props }));
H4.displayName = "H4";
var H5 = (0, import_utils12.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Box, { as: "h5", ref, className: (0, import_lib10.cn)("scroll-m-20 text-lg font-semibold tracking-tight", className), ...props }));
H5.displayName = "H5";
var H6 = (0, import_utils12.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Box, { as: "h6", ref, className: (0, import_lib10.cn)("scroll-m-20 text-base font-semibold tracking-tight", className), ...props }));
H6.displayName = "H6";
var P = (0, import_utils12.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Box, { as: "p", ref, className: (0, import_lib10.cn)("leading-7 [&:not(:first-child)]:mt-4", className), ...props }));
P.displayName = "P";
var BlockQuote = (0, import_utils12.forwardRef)(
  ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
    Box,
    {
      as: "blockquote",
      ref,
      className: (0, import_lib10.cn)(
        "mt-6 border-l-2 border-slate-300 pl-6 italic text-slate-800 dark:border-slate-600 dark:text-slate-200",
        className
      ),
      ...props
    }
  )
);
BlockQuote.displayName = "BlockQuote";
var TableLayout = (0, import_utils12.forwardRef)(
  ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Box, { as: "table", ref, className: (0, import_lib10.cn)("w-full", className), ...props })
);
TableLayout.displayName = "Table";
var THead = (0, import_utils12.forwardRef)(
  ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Box, { as: "thead", ref, className: (0, import_lib10.cn)("", className), ...props })
);
THead.displayName = "THead";
var TBody = (0, import_utils12.forwardRef)(
  ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Box, { as: "tbody", ref, className: (0, import_lib10.cn)("", className), ...props })
);
TBody.displayName = "TBody";
var TR = (0, import_utils12.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
  Box,
  {
    as: "tr",
    ref,
    className: (0, import_lib10.cn)(
      "m-0 border-t border-slate-300 p-0 even:bg-slate-100 dark:border-slate-700 dark:even:bg-slate-800",
      className
    ),
    ...props
  }
));
TR.displayName = "TR";
var TD = (0, import_utils12.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
  Box,
  {
    as: "td",
    ref,
    className: (0, import_lib10.cn)(
      "border border-slate-200 px-4 py-2 text-left dark:border-slate-700 [&[align=center]]:text-center [&[align=right]]:text-right",
      className
    ),
    ...props
  }
));
TD.displayName = "TD";
var TH = (0, import_utils12.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
  Box,
  {
    as: "th",
    ref,
    className: (0, import_lib10.cn)(
      "border border-slate-200 px-4 py-2 text-left font-bold dark:border-slate-700 [&[align=center]]:text-center [&[align=right]]:text-right",
      className
    ),
    ...props
  }
));
TH.displayName = "TH";
var UL = (0, import_utils12.forwardRef)(({ className, unstyled = false, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
  Box,
  {
    as: "ul",
    ref,
    className: (0, import_lib10.cn)(
      {
        "m-4 list-disc [&>li]:mt-2": !unstyled
      },
      className
    ),
    ...props
  }
));
UL.displayName = "UL";
var OL = (0, import_utils12.forwardRef)(({ className, unstyled = false, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
  Box,
  {
    as: "ol",
    ref,
    className: (0, import_lib10.cn)(
      {
        "m-4 list-decimal [&>li]:mt-2": !unstyled
      },
      className
    ),
    ...props
  }
));
OL.displayName = "OL";
var LI = (0, import_utils12.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Box, { as: "li", ref, className: (0, import_lib10.cn)("", className), ...props }));
LI.displayName = "LI";
var Code = (0, import_utils12.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
  Box,
  {
    as: "code",
    ref,
    className: (0, import_lib10.cn)("relative rounded bg-muted px-[0.3rem] py-[0.2rem] font-mono text-sm font-normal", className),
    ...props
  }
));
Code.displayName = "Code";
var Lead = (0, import_utils12.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Box, { as: "p", ref, className: (0, import_lib10.cn)("text-xl text-muted-foreground", className), ...props }));
Lead.displayName = "Lead";
var Large = (0, import_utils12.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Box, { as: "div", ref, className: (0, import_lib10.cn)("text-lg font-semibold", className), ...props }));
Large.displayName = "Large";
var Small = (0, import_utils12.forwardRef)(
  ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Box, { as: "small", ref, className: (0, import_lib10.cn)("text-sm font-medium leading-none", className), ...props })
);
Small.displayName = "Small";
var Subtle = (0, import_utils12.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Box, { as: "p", ref, className: (0, import_lib10.cn)("text-sm text-muted-foreground", className), ...props }));
Subtle.displayName = "Subtle";
var Strong = (0, import_utils12.forwardRef)(
  ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Box, { as: "strong", ref, className: (0, import_lib10.cn)("font-semibold", className), ...props })
);
Strong.displayName = "Strong";

// src/base/VStack/VStack.tsx
var import_lib11 = require("@paalan/react-shared/lib");
var import_utils13 = require("@paalan/react-shared/utils");
var import_jsx_runtime13 = require("react/jsx-runtime");
var VStack = (0, import_utils13.forwardRef)((props, ref) => {
  const { children, className, ...restProps } = props;
  return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Box, { className: (0, import_lib11.cn)("flex flex-col items-stretch gap-2", className), ...restProps, ref, children });
});

// src/base/Wrap/Wrap.tsx
var import_lib12 = require("@paalan/react-shared/lib");
var import_utils14 = require("@paalan/react-shared/utils");
var import_jsx_runtime14 = require("react/jsx-runtime");
var Wrap = (0, import_utils14.forwardRef)((props, ref) => {
  const { children, className, ...restProps } = props;
  return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Box, { className: (0, import_lib12.cn)("flex flex-wrap gap-2", className), ...restProps, ref, children });
});
var WrapItem = (0, import_utils14.forwardRef)((props, ref) => {
  const { children, className, ...restProps } = props;
  return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Box, { className: (0, import_lib12.cn)("flex flex-none items-start", className), ...restProps, ref, children });
});

// src/components/Toast/assets.tsx
var import_react_icons = require("@paalan/react-icons");
var import_jsx_runtime15 = require("react/jsx-runtime");
var bars = Array(12).fill(0);
var Loader = ({ visible }) => {
  return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "toast-loading-wrapper", "data-visible": visible, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "toast-spinner", children: bars.map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "toast-loading-bar" }, `spinner-bar-${i}`)) }) });
};
var getAsset = (type) => {
  switch (type) {
    case "success":
      return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_react_icons.SuccessIcon, {});
    case "error":
      return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_react_icons.ErrorIcon, {});
    case "warning":
      return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_react_icons.WarningIcon1, {});
    case "info":
      return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_react_icons.InfoIcon1, {});
    default:
      return null;
  }
};

// src/components/Toast/components/ActionButton.tsx
var import_lib13 = require("@paalan/react-shared/lib");

// src/components/Toast/helper.ts
var import_react2 = __toESM(require("react"), 1);
var isValidReactNode = (value) => {
  return typeof value === "string" || import_react2.default.isValidElement(value);
};

// src/components/Toast/components/ActionButton.tsx
var import_jsx_runtime16 = require("react/jsx-runtime");
var ActionButton = ({ toast, deleteToast, className }) => {
  if (isValidReactNode(toast.action)) return toast.action;
  const onClick = toast.action.onClick;
  return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
    "button",
    {
      "data-button": true,
      onClick: (event) => {
        onClick?.(event);
        if (event.defaultPrevented) return;
        deleteToast();
      },
      className: (0, import_lib13.cn)(className, toast.action.className),
      children: toast.action.label
    }
  );
};

// src/components/Toast/components/CancelButton.tsx
var import_lib14 = require("@paalan/react-shared/lib");
var import_jsx_runtime17 = require("react/jsx-runtime");
var CancelButton = ({ toast, dismissible, deleteToast, className }) => {
  if (isValidReactNode(toast.cancel)) return toast.cancel;
  const onClick = toast.cancel.onClick;
  return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
    "button",
    {
      "data-button": true,
      "data-cancel": true,
      onClick: () => {
        if (!dismissible) return;
        deleteToast();
        onClick?.();
      },
      className: (0, import_lib14.cn)(className, toast.cancel.className),
      children: toast.cancel.label
    }
  );
};

// src/components/Toast/constant.ts
var TOAST_LIFETIME = 5e3;
var GAP = 14;
var SWIPE_THRESHOLD = 20;
var TIME_BEFORE_UNMOUNT = 200;

// src/components/Toast/Toast.tsx
var import_jsx_runtime18 = require("react/jsx-runtime");
var Toast = (props) => {
  const {
    invert: ToasterInvert,
    toast,
    interacting,
    setHeights,
    visibleToasts,
    heights,
    index,
    toasts,
    expanded,
    removeToast,
    closeButton,
    style,
    cancelButtonClassName,
    actionButtonClassName,
    className = "",
    descriptionClassName = "",
    duration: durationFromToaster,
    position,
    loadingIcon: loadingIconProp,
    expandByDefault
  } = props;
  const [mounted, setMounted] = import_react3.default.useState(false);
  const [removed, setRemoved] = import_react3.default.useState(false);
  const [swiping, setSwiping] = import_react3.default.useState(false);
  const [swipeOut, setSwipeOut] = import_react3.default.useState(false);
  const [offsetBeforeRemove, setOffsetBeforeRemove] = import_react3.default.useState(0);
  const [initialHeight, setInitialHeight] = import_react3.default.useState(0);
  const dragStartTime = import_react3.default.useRef(null);
  const toastRef = import_react3.default.useRef(null);
  const isFront = index === 0;
  const isVisible = index + 1 <= visibleToasts;
  const toastType = toast.type;
  const dismissible = toast.dismissible !== false;
  const toastClassname = toast.className || "";
  const toastDescriptionClassname = toast.descriptionClassName || "";
  const heightIndex = import_react3.default.useMemo(
    () => heights.findIndex((height) => height.toastId === toast.id) || 0,
    [heights, toast.id]
  );
  const duration = import_react3.default.useMemo(
    () => toast.duration || durationFromToaster || TOAST_LIFETIME,
    [toast.duration, durationFromToaster]
  );
  const closeTimerStartTimeRef = import_react3.default.useRef(0);
  const offset = import_react3.default.useRef(0);
  const lastCloseTimerStartTimeRef = import_react3.default.useRef(0);
  const pointerStartRef = import_react3.default.useRef(null);
  const [y, x] = position.split("-");
  const toastsHeightBefore = import_react3.default.useMemo(() => {
    return heights.reduce((prev, curr, reducerIndex) => {
      if (reducerIndex >= heightIndex) {
        return prev;
      }
      return prev + curr.height;
    }, 0);
  }, [heights, heightIndex]);
  const invert = toast.invert || ToasterInvert;
  const disabled = toastType === "loading";
  offset.current = import_react3.default.useMemo(() => heightIndex * GAP + toastsHeightBefore, [heightIndex, toastsHeightBefore]);
  import_react3.default.useEffect(() => {
    setMounted(true);
  }, []);
  import_react3.default.useLayoutEffect(() => {
    if (!mounted) return;
    const toastNode = toastRef.current;
    if (!toastNode) return;
    const originalHeight = toastNode.style.height;
    toastNode.style.height = "auto";
    const newHeight = toastNode.getBoundingClientRect().height;
    toastNode.style.height = originalHeight;
    setInitialHeight(newHeight);
    setHeights((heights2) => {
      const alreadyExists = heights2.find((height) => height.toastId === toast.id);
      if (!alreadyExists) {
        return [{ toastId: toast.id, height: newHeight }, ...heights2];
      } else {
        return heights2.map((height) => height.toastId === toast.id ? { ...height, height: newHeight } : height);
      }
    });
  }, [mounted, toast.title, toast.description, setHeights, toast.id]);
  const deleteToast = import_react3.default.useCallback(() => {
    setRemoved(true);
    setOffsetBeforeRemove(offset.current);
    setHeights((h) => h.filter((height) => height.toastId !== toast.id));
    setTimeout(() => {
      removeToast(toast);
    }, TIME_BEFORE_UNMOUNT);
  }, [toast, removeToast, setHeights, offset]);
  import_react3.default.useEffect(() => {
    if (toast.promise && toastType === "loading" || toast.duration === Infinity) return;
    let timeoutId;
    let remainingTime = duration;
    const pauseTimer = () => {
      if (lastCloseTimerStartTimeRef.current < closeTimerStartTimeRef.current) {
        const elapsedTime = (/* @__PURE__ */ new Date()).getTime() - closeTimerStartTimeRef.current;
        remainingTime = remainingTime - elapsedTime;
      }
      lastCloseTimerStartTimeRef.current = (/* @__PURE__ */ new Date()).getTime();
    };
    const startTimer = () => {
      closeTimerStartTimeRef.current = (/* @__PURE__ */ new Date()).getTime();
      timeoutId = setTimeout(() => {
        toast.onAutoClose?.(toast);
        deleteToast();
      }, remainingTime);
    };
    if (expanded || interacting) {
      pauseTimer();
    } else {
      startTimer();
    }
    return () => clearTimeout(timeoutId);
  }, [expanded, interacting, expandByDefault, toast, duration, deleteToast, toast.promise, toastType]);
  import_react3.default.useEffect(() => {
    const toastNode = toastRef.current;
    if (toastNode) {
      const height = toastNode.getBoundingClientRect().height;
      setInitialHeight(height);
      setHeights((h) => [{ toastId: toast.id, height }, ...h]);
      return () => setHeights((h) => h.filter((height2) => height2.toastId !== toast.id));
    }
  }, [setHeights, toast.id]);
  import_react3.default.useEffect(() => {
    if (toast.delete) {
      deleteToast();
    }
  }, [deleteToast, toast.delete]);
  function getLoadingIcon() {
    if (loadingIconProp) {
      return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Box, { className: "toast-loader", "data-visible": toastType === "loading", children: loadingIconProp });
    }
    return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Loader, { visible: toastType === "loading" });
  }
  return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
    "li",
    {
      "aria-live": toast.important ? "assertive" : "polite",
      "aria-atomic": "true",
      role: "status",
      tabIndex: 0,
      ref: toastRef,
      className: (0, import_lib15.cn)(className, toastClassname),
      "data-toast-toast": "",
      "data-styled": !(toast.jsx || toast.unstyled),
      "data-mounted": mounted,
      "data-promise": Boolean(toast.promise),
      "data-removed": removed,
      "data-visible": isVisible,
      "data-y-position": y,
      "data-x-position": x,
      "data-index": index,
      "data-front": isFront,
      "data-swiping": swiping,
      "data-dismissible": dismissible,
      "data-type": toastType,
      "data-invert": invert,
      "data-swipe-out": swipeOut,
      "data-expanded": Boolean(expanded || expandByDefault && mounted),
      style: {
        "--index": index,
        "--toasts-before": index,
        "--z-index": toasts.length - index,
        "--offset": `${removed ? offsetBeforeRemove : offset.current}px`,
        "--initial-height": expandByDefault ? "auto" : `${initialHeight}px`,
        ...style,
        ...toast.style
      },
      onPointerDown: (event) => {
        if (disabled || !dismissible) return;
        dragStartTime.current = /* @__PURE__ */ new Date();
        setOffsetBeforeRemove(offset.current);
        event.target.setPointerCapture(event.pointerId);
        if (event.target.tagName === "BUTTON") return;
        setSwiping(true);
        pointerStartRef.current = { x: event.clientX, y: event.clientY };
      },
      onPointerUp: () => {
        if (swipeOut || !dismissible) return;
        pointerStartRef.current = null;
        const swipeAmount = Number(toastRef.current?.style.getPropertyValue("--swipe-amount").replace("px", "") || 0);
        const timeTaken = dragStartTime.current ? (/* @__PURE__ */ new Date()).getTime() - dragStartTime.current.getTime() : 0;
        const velocity = Math.abs(swipeAmount) / timeTaken;
        if (Math.abs(swipeAmount) >= SWIPE_THRESHOLD || velocity > 0.11) {
          setOffsetBeforeRemove(offset.current);
          toast.onDismiss?.(toast);
          deleteToast();
          setSwipeOut(true);
          return;
        }
        toastRef.current?.style.setProperty("--swipe-amount", "0px");
        setSwiping(false);
      },
      onPointerMove: (event) => {
        if (!pointerStartRef.current || !dismissible) return;
        const yPosition = event.clientY - pointerStartRef.current.y;
        const xPosition = event.clientX - pointerStartRef.current.x;
        const clamp = y === "top" ? Math.min : Math.max;
        const clampedY = clamp(0, yPosition);
        const swipeStartThreshold = event.pointerType === "touch" ? 10 : 2;
        const isAllowedToSwipe = Math.abs(clampedY) > swipeStartThreshold;
        if (isAllowedToSwipe) {
          toastRef.current?.style.setProperty("--swipe-amount", `${yPosition}px`);
        } else if (Math.abs(xPosition) > swipeStartThreshold) {
          pointerStartRef.current = null;
        }
      },
      children: [
        closeButton && dismissible && !toast.jsx && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
          "button",
          {
            "aria-label": "Close toast",
            "data-disabled": disabled,
            "data-close-button": true,
            onClick: () => {
              if (disabled) return;
              deleteToast();
              toast.onDismiss?.(toast);
            },
            children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
              "svg",
              {
                xmlns: "http://www.w3.org/2000/svg",
                width: "16",
                height: "16",
                viewBox: "0 0 24 24",
                fill: "none",
                stroke: "currentColor",
                strokeWidth: "1.5",
                strokeLinecap: "round",
                strokeLinejoin: "round",
                children: [
                  /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
                  /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
                ]
              }
            )
          }
        ),
        toast.jsx || import_react3.default.isValidElement(toast.title) ? toast.jsx || toast.title : /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_jsx_runtime18.Fragment, { children: [
          toastType || toast.icon || toast.promise ? /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { "data-icon": "", children: [
            (toast.promise || toast.type === "loading") && !toast.icon ? getLoadingIcon() : null,
            toast.icon || toastType && getAsset(toastType)
          ] }) : null,
          /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { "data-content": "", children: [
            /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { "data-title": "", children: toast.title }),
            !!toast.description && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { "data-description": "", className: (0, import_lib15.cn)(descriptionClassName, toastDescriptionClassname), children: toast.description })
          ] }),
          (!!toast.cancel || !!toast.action) && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "flex items-center space-x-2", children: [
            toast.cancel && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
              CancelButton,
              {
                toast,
                dismissible,
                deleteToast,
                className: cancelButtonClassName
              }
            ),
            toast.action && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ActionButton, { toast, deleteToast, className: actionButtonClassName })
          ] })
        ] })
      ]
    }
  );
};
