@inf-monkeys-tech/monkeys-design 0.4.49 → 0.4.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/components/base/index.d.mts +2 -2
  2. package/dist/components/base/index.d.ts +2 -2
  3. package/dist/components/base/index.js +79 -13
  4. package/dist/components/base/index.js.map +1 -1
  5. package/dist/components/base/index.mjs +80 -14
  6. package/dist/components/base/index.mjs.map +1 -1
  7. package/dist/components/layout/index.d.mts +1 -1
  8. package/dist/components/layout/index.d.ts +1 -1
  9. package/dist/components/layout/index.js +82 -13
  10. package/dist/components/layout/index.js.map +1 -1
  11. package/dist/components/layout/index.mjs +83 -14
  12. package/dist/components/layout/index.mjs.map +1 -1
  13. package/dist/components/workbench/index.d.mts +1 -1
  14. package/dist/components/workbench/index.d.ts +1 -1
  15. package/dist/components/workbench/index.js +1 -0
  16. package/dist/components/workbench/index.js.map +1 -1
  17. package/dist/components/workbench/index.mjs +1 -0
  18. package/dist/components/workbench/index.mjs.map +1 -1
  19. package/dist/index.d.mts +2 -2
  20. package/dist/index.d.ts +2 -2
  21. package/dist/index.js +82 -14
  22. package/dist/index.js.map +1 -1
  23. package/dist/index.mjs +82 -14
  24. package/dist/index.mjs.map +1 -1
  25. package/dist/{theme-Clm5dVb0.d.mts → theme-CSDlBl7e.d.ts} +2 -2
  26. package/dist/{theme-sIoU5-YC.d.ts → theme-K9M_pIiz.d.mts} +2 -2
  27. package/dist/theme-system/index.d.mts +1 -1
  28. package/dist/theme-system/index.d.ts +1 -1
  29. package/dist/theme-system/index.js +1 -1
  30. package/dist/theme-system/index.mjs +1 -1
  31. package/dist/{types-Bn6PEDsX.d.mts → types-5cYLLXs8.d.mts} +1 -0
  32. package/dist/{types-Bn6PEDsX.d.ts → types-5cYLLXs8.d.ts} +1 -0
  33. package/package.json +1 -1
package/dist/index.mjs CHANGED
@@ -1,11 +1,11 @@
1
1
  import React, { forwardRef, useRef, useState, useEffect, useId, useMemo, createContext, useContext, useLayoutEffect, Children, isValidElement, useCallback, Fragment as Fragment$1 } from 'react';
2
2
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
3
3
  import * as ContextMenu from '@radix-ui/react-context-menu';
4
+ import { createPortal } from 'react-dom';
4
5
  import * as DropdownMenu5 from '@radix-ui/react-dropdown-menu';
5
6
  import { useSensors, useSensor, PointerSensor, DndContext, DragOverlay, useDroppable, useDraggable } from '@dnd-kit/core';
6
7
  import '@dnd-kit/sortable';
7
8
  import '@dnd-kit/utilities';
8
- import 'react-dom';
9
9
  import { toast as toast$1, Toaster } from 'sonner';
10
10
  import * as Tooltip from '@radix-ui/react-tooltip';
11
11
 
@@ -13931,6 +13931,45 @@ function getTooltipPlacementClassName(placement) {
13931
13931
  return "bottom-[calc(100%+0.5rem)] left-1/2 -translate-x-1/2";
13932
13932
  }
13933
13933
  }
13934
+ function getPortalTooltipStyle(placement, rect, themeStyle) {
13935
+ if (!rect) return themeStyle;
13936
+ const offset = 8;
13937
+ const baseStyle = {
13938
+ ...themeStyle,
13939
+ position: "fixed"
13940
+ };
13941
+ switch (placement) {
13942
+ case "bottom":
13943
+ return {
13944
+ ...baseStyle,
13945
+ left: rect.left + rect.width / 2,
13946
+ top: rect.bottom + offset,
13947
+ transform: "translateX(-50%)"
13948
+ };
13949
+ case "left":
13950
+ return {
13951
+ ...baseStyle,
13952
+ right: window.innerWidth - rect.left + offset,
13953
+ top: rect.top + rect.height / 2,
13954
+ transform: "translateY(-50%)"
13955
+ };
13956
+ case "right":
13957
+ return {
13958
+ ...baseStyle,
13959
+ left: rect.right + offset,
13960
+ top: rect.top + rect.height / 2,
13961
+ transform: "translateY(-50%)"
13962
+ };
13963
+ case "top":
13964
+ default:
13965
+ return {
13966
+ ...baseStyle,
13967
+ bottom: window.innerHeight - rect.top + offset,
13968
+ left: rect.left + rect.width / 2,
13969
+ transform: "translateX(-50%)"
13970
+ };
13971
+ }
13972
+ }
13934
13973
  function BaseTooltip({
13935
13974
  content,
13936
13975
  children,
@@ -13938,6 +13977,7 @@ function BaseTooltip({
13938
13977
  defaultOpen = false,
13939
13978
  placement = "top",
13940
13979
  disabled = false,
13980
+ portal = false,
13941
13981
  appearance,
13942
13982
  className,
13943
13983
  classNames,
@@ -13946,21 +13986,58 @@ function BaseTooltip({
13946
13986
  ...tooltipProps
13947
13987
  }) {
13948
13988
  const theme = resolveBaseAppearance(appearance);
13989
+ const rootRef = useRef(null);
13990
+ const [triggerRect, setTriggerRect] = useState(null);
13949
13991
  const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);
13950
13992
  const isControlled = open !== void 0;
13951
13993
  const isOpen = isControlled ? open : uncontrolledOpen;
13952
13994
  const canShow = !disabled && hasRenderableNode(content);
13995
+ const shouldPortal = portal && typeof document !== "undefined";
13996
+ const tooltipStyle = useMemo(
13997
+ () => shouldPortal ? getPortalTooltipStyle(placement, triggerRect, theme.styles.tooltip) : theme.styles.tooltip,
13998
+ [placement, shouldPortal, theme.styles.tooltip, triggerRect]
13999
+ );
13953
14000
  const setOpen = (nextOpen) => {
13954
14001
  if (!canShow && nextOpen) return;
14002
+ if (shouldPortal) {
14003
+ setTriggerRect(nextOpen ? rootRef.current?.getBoundingClientRect() ?? null : null);
14004
+ }
13955
14005
  if (!isControlled) {
13956
14006
  setUncontrolledOpen(nextOpen);
13957
14007
  }
13958
14008
  onOpenChange?.(nextOpen);
13959
14009
  };
14010
+ useLayoutEffect(() => {
14011
+ if (!shouldPortal || !canShow || !isOpen) return;
14012
+ const updateTriggerRect = () => {
14013
+ setTriggerRect(rootRef.current?.getBoundingClientRect() ?? null);
14014
+ };
14015
+ updateTriggerRect();
14016
+ window.addEventListener("resize", updateTriggerRect);
14017
+ window.addEventListener("scroll", updateTriggerRect, true);
14018
+ return () => {
14019
+ window.removeEventListener("resize", updateTriggerRect);
14020
+ window.removeEventListener("scroll", updateTriggerRect, true);
14021
+ };
14022
+ }, [canShow, isOpen, shouldPortal]);
14023
+ const tooltipContent = canShow && isOpen && (!shouldPortal || triggerRect) ? /* @__PURE__ */ jsx(
14024
+ "span",
14025
+ {
14026
+ role: "tooltip",
14027
+ className: cn(
14028
+ theme.slots.tooltipContent,
14029
+ shouldPortal ? void 0 : getTooltipPlacementClassName(placement),
14030
+ classNames?.content
14031
+ ),
14032
+ style: tooltipStyle,
14033
+ children: content
14034
+ }
14035
+ ) : null;
13960
14036
  return /* @__PURE__ */ jsxs(
13961
14037
  "span",
13962
14038
  {
13963
14039
  ...tooltipProps,
14040
+ ref: rootRef,
13964
14041
  className: cn(theme.slots.tooltipRoot, classNames?.root, className),
13965
14042
  style,
13966
14043
  onMouseEnter: () => setOpen(true),
@@ -13969,19 +14046,7 @@ function BaseTooltip({
13969
14046
  onBlur: () => setOpen(false),
13970
14047
  children: [
13971
14048
  /* @__PURE__ */ jsx("span", { className: cn(theme.slots.tooltipTrigger, classNames?.trigger), children }),
13972
- canShow && isOpen ? /* @__PURE__ */ jsx(
13973
- "span",
13974
- {
13975
- role: "tooltip",
13976
- className: cn(
13977
- theme.slots.tooltipContent,
13978
- getTooltipPlacementClassName(placement),
13979
- classNames?.content
13980
- ),
13981
- style: theme.styles.tooltip,
13982
- children: content
13983
- }
13984
- ) : null
14049
+ shouldPortal && tooltipContent ? createPortal(tooltipContent, document.body) : tooltipContent
13985
14050
  ]
13986
14051
  }
13987
14052
  );
@@ -21445,6 +21510,7 @@ function NavigationLayoutActionButtons({
21445
21510
  appearance: NAVIGATION_LAYOUT_DEFAULT_APPEARANCE,
21446
21511
  content: action.label,
21447
21512
  placement: "right",
21513
+ portal: true,
21448
21514
  children: /* @__PURE__ */ jsx(
21449
21515
  BaseButton,
21450
21516
  {
@@ -21594,6 +21660,7 @@ function SidebarBrand({
21594
21660
  appearance: NAVIGATION_LAYOUT_DEFAULT_APPEARANCE,
21595
21661
  content: brandTitle,
21596
21662
  placement: "right",
21663
+ portal: true,
21597
21664
  children: /* @__PURE__ */ jsx(
21598
21665
  BaseButton,
21599
21666
  {
@@ -21658,6 +21725,7 @@ function Sidebar({
21658
21725
  appearance: NAVIGATION_LAYOUT_DEFAULT_APPEARANCE,
21659
21726
  content: item.label,
21660
21727
  placement: "right",
21728
+ portal: true,
21661
21729
  children: /* @__PURE__ */ jsx(
21662
21730
  BaseButton,
21663
21731
  {