@ixo/ui 0.0.36 → 0.0.38

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 (84) hide show
  1. package/dist/.vite/manifest.json +46 -46
  2. package/dist/{UsersSolid-BAU7PbE4.js → UsersSolid-C6NkfomI.js} +62 -43
  3. package/dist/UsersSolid-C6NkfomI.js.map +1 -0
  4. package/dist/{UsersSolid-D60imcQv.cjs → UsersSolid-DjJvkV7c.cjs} +20 -1
  5. package/dist/UsersSolid-DjJvkV7c.cjs.map +1 -0
  6. package/dist/components/AIChatToolbar/index.d.ts +4 -1
  7. package/dist/components/AIChatToolbar/index.d.ts.map +1 -1
  8. package/dist/components/AppShellNavigation/index.d.ts +7 -1
  9. package/dist/components/AppShellNavigation/index.d.ts.map +1 -1
  10. package/dist/{components-B1a2iVqu.js → components-BCUQC5jC.js} +189 -30
  11. package/dist/{components-B1a2iVqu.js.map → components-BCUQC5jC.js.map} +1 -1
  12. package/dist/{components-DClyFU-M.cjs → components-BrO36-8M.cjs} +188 -29
  13. package/dist/{components-DClyFU-M.cjs.map → components-BrO36-8M.cjs.map} +1 -1
  14. package/dist/export/components.cjs +1 -1
  15. package/dist/export/components.mjs +1 -1
  16. package/dist/export/hooks.cjs +5 -1
  17. package/dist/export/hooks.cjs.map +1 -1
  18. package/dist/export/hooks.d.ts +1 -0
  19. package/dist/export/hooks.d.ts.map +1 -1
  20. package/dist/export/hooks.mjs +5 -1
  21. package/dist/export/icons/index.cjs +2 -1
  22. package/dist/export/icons/index.cjs.map +1 -1
  23. package/dist/export/icons/index.mjs +45 -44
  24. package/dist/export/types.d.ts +1 -0
  25. package/dist/export/types.d.ts.map +1 -1
  26. package/dist/hooks/useLocalStorage.d.ts +20 -0
  27. package/dist/hooks/useLocalStorage.d.ts.map +1 -0
  28. package/dist/icons/Canvas.d.ts +4 -0
  29. package/dist/icons/Canvas.d.ts.map +1 -0
  30. package/dist/icons/index.d.ts +1 -0
  31. package/dist/icons/index.d.ts.map +1 -1
  32. package/dist/{index-CHaUG4pj.js → index-9bgxOn0r.js} +3 -3
  33. package/dist/{index-CHaUG4pj.js.map → index-9bgxOn0r.js.map} +1 -1
  34. package/dist/{index-BSG0zFC9.cjs → index-Al96GH1N.cjs} +2 -2
  35. package/dist/{index-BSG0zFC9.cjs.map → index-Al96GH1N.cjs.map} +1 -1
  36. package/dist/{index-CgY82myI.js → index-B5f_G827.js} +2 -2
  37. package/dist/{index-CgY82myI.js.map → index-B5f_G827.js.map} +1 -1
  38. package/dist/{index-BCq1MsXT.cjs → index-BIogUZHA.cjs} +2 -2
  39. package/dist/{index-BCq1MsXT.cjs.map → index-BIogUZHA.cjs.map} +1 -1
  40. package/dist/{index-cb7wQOdp.cjs → index-BJWkWwf4.cjs} +2 -2
  41. package/dist/{index-cb7wQOdp.cjs.map → index-BJWkWwf4.cjs.map} +1 -1
  42. package/dist/{index-BPMwSQiu.cjs → index-BMqjLaFq.cjs} +2 -2
  43. package/dist/{index-BPMwSQiu.cjs.map → index-BMqjLaFq.cjs.map} +1 -1
  44. package/dist/{index-D0Hsuk8i.js → index-BY1AiOdr.js} +2 -2
  45. package/dist/{index-D0Hsuk8i.js.map → index-BY1AiOdr.js.map} +1 -1
  46. package/dist/{index-CrLkPKdH.js → index-BveTsSM4.js} +2 -2
  47. package/dist/{index-CrLkPKdH.js.map → index-BveTsSM4.js.map} +1 -1
  48. package/dist/{index-BBHzZvIm.js → index-CSflwNp9.js} +2 -2
  49. package/dist/{index-BBHzZvIm.js.map → index-CSflwNp9.js.map} +1 -1
  50. package/dist/{index-B9pVBHoG.cjs → index-CY_rB8AB.cjs} +3 -3
  51. package/dist/{index-B9pVBHoG.cjs.map → index-CY_rB8AB.cjs.map} +1 -1
  52. package/dist/{index-CfGbTIXG.cjs → index-Cp-qZhjG.cjs} +3 -3
  53. package/dist/{index-CfGbTIXG.cjs.map → index-Cp-qZhjG.cjs.map} +1 -1
  54. package/dist/{index-D2vpQrea.js → index-D2yQxkIj.js} +2 -2
  55. package/dist/{index-D2vpQrea.js.map → index-D2yQxkIj.js.map} +1 -1
  56. package/dist/{index-NInTEDOl.js → index-D2yc0dXn.js} +2 -2
  57. package/dist/{index-NInTEDOl.js.map → index-D2yc0dXn.js.map} +1 -1
  58. package/dist/{index-eldkvceu.cjs → index-DE5ijph0.cjs} +2 -2
  59. package/dist/{index-eldkvceu.cjs.map → index-DE5ijph0.cjs.map} +1 -1
  60. package/dist/{index-BnNEw5sb.cjs → index-DKd-qpnW.cjs} +3 -3
  61. package/dist/{index-BnNEw5sb.cjs.map → index-DKd-qpnW.cjs.map} +1 -1
  62. package/dist/{index-DAeeijml.cjs → index-DUJe5Ai1.cjs} +2 -2
  63. package/dist/{index-DAeeijml.cjs.map → index-DUJe5Ai1.cjs.map} +1 -1
  64. package/dist/{index-DIjbP65y.cjs → index-DYeDZpgO.cjs} +2 -2
  65. package/dist/{index-DIjbP65y.cjs.map → index-DYeDZpgO.cjs.map} +1 -1
  66. package/dist/{index-Dzht1xdr.js → index-DnbJxS8B.js} +2 -2
  67. package/dist/{index-Dzht1xdr.js.map → index-DnbJxS8B.js.map} +1 -1
  68. package/dist/{index-BUOaLr6a.js → index-IuW_YBAi.js} +3 -3
  69. package/dist/{index-BUOaLr6a.js.map → index-IuW_YBAi.js.map} +1 -1
  70. package/dist/{index-CkY33lka.js → index-RJQrCYn7.js} +3 -3
  71. package/dist/{index-CkY33lka.js.map → index-RJQrCYn7.js.map} +1 -1
  72. package/dist/types/canvas.d.ts +22 -0
  73. package/dist/types/canvas.d.ts.map +1 -0
  74. package/dist/useEventSubscribe-B019T27n.cjs +95 -0
  75. package/dist/useEventSubscribe-B019T27n.cjs.map +1 -0
  76. package/dist/useEventSubscribe-BuXZL79s.js +96 -0
  77. package/dist/useEventSubscribe-BuXZL79s.js.map +1 -0
  78. package/package.json +5 -2
  79. package/dist/UsersSolid-BAU7PbE4.js.map +0 -1
  80. package/dist/UsersSolid-D60imcQv.cjs.map +0 -1
  81. package/dist/useEventSubscribe-16wxaghO.js +0 -43
  82. package/dist/useEventSubscribe-16wxaghO.js.map +0 -1
  83. package/dist/useEventSubscribe-BTFTMdWH.cjs +0 -42
  84. package/dist/useEventSubscribe-BTFTMdWH.cjs.map +0 -1
@@ -1,22 +1,22 @@
1
1
  import { jsx, Fragment, jsxs } from "@emotion/react/jsx-runtime";
2
2
  import { isString, toggle, get, isFunction, assign } from "radash";
3
3
  import { useTheme, jsx as jsx$1, keyframes, ThemeProvider } from "@emotion/react";
4
- import { g as getElementColor, A as AngleDownSolid, a as CheckSolid, C as Close, L as Loading, P as PlusSolid, S as SearchSolid, b as Assistant, c as ArrowUpSolid, E as EllipsisVSolid, d as ArrowLeftSolid, H as HistorySolid, U as User, e as AngleLeftSolid, M as MinusCircleSolid, f as SettingsBarSolid, G as Globe, D as Dashboard, h as Groups, i as UserCircleSolid, j as Assets$1, k as Claims, l as Accounts, m as LinkedResources, n as Proposals, I as ImpactCredits, o as GoTo, p as Share, q as PiePiece, r as ImpactCertificates, s as CommentDotsSolid, t as CommentAltSolid, u as MicrophoneSolid, v as Command, w as ArrowCircleRightSolid, x as Protocols, y as Investments, O as Oracles, z as Projects, B as Daos, F as Star, J as AngleRightSolid, K as Expand, N as LeafSolid, Q as ArrowDownSolid, R as ArrowRightSolid, T as Play, V as CheckCircle, W as Events, X as ThumbsUpSolid, Y as CommentsSolid, Z as CopySolid, _ as Hourglass, $ as Act, a0 as Info$1, a1 as ClaimsW, a2 as TachometerAltSolid, a3 as UserCogSolid, a4 as UsersSolid, a5 as EllipsisHSolid } from "./UsersSolid-BAU7PbE4.js";
4
+ import { g as getElementColor, A as AngleDownSolid, a as CheckSolid, C as Close, L as Loading, P as PlusSolid, S as SearchSolid, b as Assistant, c as ArrowUpSolid, E as EllipsisVSolid, d as ArrowLeftSolid, e as Canvas, H as HistorySolid, U as User, f as AngleLeftSolid, M as MinusCircleSolid, h as SettingsBarSolid, G as Globe, D as Dashboard, i as Groups, j as UserCircleSolid, k as Assets$1, l as Claims, m as Accounts, n as LinkedResources, o as Proposals, I as ImpactCredits, p as GoTo, q as Share, r as PiePiece, s as ImpactCertificates, t as CommentDotsSolid, u as CommentAltSolid, v as MicrophoneSolid, w as Command, x as ArrowCircleRightSolid, y as Protocols, z as Investments, O as Oracles, B as Projects, F as Daos, J as Star, K as AngleRightSolid, N as Expand, Q as LeafSolid, R as ArrowDownSolid, T as ArrowRightSolid, V as Play, W as CheckCircle, X as Events, Y as ThumbsUpSolid, Z as CommentsSolid, _ as CopySolid, $ as Hourglass, a0 as Act, a1 as Info$1, a2 as ClaimsW, a3 as TachometerAltSolid, a4 as UserCogSolid, a5 as UsersSolid, a6 as EllipsisHSolid } from "./UsersSolid-C6NkfomI.js";
5
5
  import { useState, useCallback, useRef, useEffect, Suspense, lazy, forwardRef, useMemo, useId, Fragment as Fragment$1, useLayoutEffect, useImperativeHandle, memo } from "react";
6
6
  import { T as TAG_SMALL_HEIGHT, D as DEFAULT_ICON_SIZE } from "./constants-B7xlU8b8.js";
7
- import { Accordion as Accordion$1, Box, Image, Popover, Text as Text$1, Badge as Badge$1, Center, AppShell, Skeleton, Stack as Stack$1, Tooltip as Tooltip$4, Divider, ScrollArea } from "@mantine/core";
7
+ import { Accordion as Accordion$1, Box, Image, Popover, Text as Text$1, Badge as Badge$1, Center, AppShell, Skeleton, Stack as Stack$1, Tooltip as Tooltip$4, Divider, ScrollArea, Space } from "@mantine/core";
8
8
  import { cx, css } from "@emotion/css";
9
9
  import { createPortal } from "react-dom";
10
10
  import DOMPurify from "dompurify";
11
11
  import { u as useUITheme } from "./useUITheme-7i8NJ2FG.js";
12
12
  import { useResizeObserver, useHover, useDisclosure } from "@mantine/hooks";
13
+ import { a as useLocalStorage, E as EventEmitter, u as useEventSubscribe } from "./useEventSubscribe-BuXZL79s.js";
13
14
  import Markdown from "react-markdown";
14
15
  import remarkGfm from "remark-gfm";
15
16
  import { useCombobox, useSelect } from "downshift";
16
17
  import { Popover as Popover$1 } from "react-tiny-popover";
17
18
  import dayjs from "dayjs";
18
19
  import { B as Blank } from "./Blank-CElsicB7.js";
19
- import { E as EventEmitter, u as useEventSubscribe } from "./useEventSubscribe-16wxaghO.js";
20
20
  import { d as dark, l as light } from "./themes-ZDjULHjG.js";
21
21
  function SlideUpArea({ children, isVisible }) {
22
22
  return /* @__PURE__ */ jsx(
@@ -774,8 +774,8 @@ function AccordionTable({
774
774
  }
775
775
  );
776
776
  }
777
- const Header$3 = lazy(() => import("./index-CHaUG4pj.js"));
778
- const Footer = lazy(() => import("./index-CkY33lka.js"));
777
+ const Header$3 = lazy(() => import("./index-9bgxOn0r.js"));
778
+ const Footer = lazy(() => import("./index-RJQrCYn7.js"));
779
779
  function ActionCard({ header, content, footer, useHoverMode = false }) {
780
780
  const hasContent = !!content || !!footer;
781
781
  const initialVisibility = footer?.startHidden !== true;
@@ -859,7 +859,7 @@ function Loader({ size, color = "primary" }) {
859
859
  }
860
860
  const CARD_WIDTH$1 = 350;
861
861
  const CARD_HEADER_HEIGHT = 158;
862
- const Header$2 = lazy(() => import("./index-D0Hsuk8i.js"));
862
+ const Header$2 = lazy(() => import("./index-BY1AiOdr.js"));
863
863
  function Card({ children, className, contentClassName, roundedBottom, noPadding = false, fullWidth = false, header, wrapperSx, onClick }) {
864
864
  const wrapperRef = useRef(null);
865
865
  const handleOnClick = useCallback(
@@ -1294,7 +1294,7 @@ function ModalSheet({ isOpen, children, hideHandler, zIndex, onRequestHide, onRe
1294
1294
  document.body
1295
1295
  );
1296
1296
  }
1297
- const Badge = lazy(() => import("./index-NInTEDOl.js"));
1297
+ const Badge = lazy(() => import("./index-D2yc0dXn.js"));
1298
1298
  function ActionSheet({ children, isOpen, header, navMenu = void 0, onRequestHide, onRequestShow }) {
1299
1299
  const shadowScrollRef = useRef(null);
1300
1300
  const wrapperContentAreaRef = useRef(null);
@@ -2102,8 +2102,9 @@ function AIInputBar({ placeholder, icon, disabledInput, disabledButton, valueInp
2102
2102
  }
2103
2103
  );
2104
2104
  }
2105
- function AIChatToolbar({ onClose, onHistoryClick, onPlusClick, onHistoryClose, isHistoryOpened, oracleModel, sessionTitle }) {
2105
+ function AIChatToolbar({ onClose, onHistoryClick, onPlusClick, onHistoryClose, onCanvasCycle, isHistoryOpened, canvasMode = "hidden", oracleModel, sessionTitle }) {
2106
2106
  const theme = useUITheme();
2107
+ const canvasActive = canvasMode !== "hidden";
2107
2108
  return /* @__PURE__ */ jsxs(Flex, { bg: theme.bg.navIconsBg, py: 16, justify: "space-between", align: "center", children: [
2108
2109
  /* @__PURE__ */ jsxs(Flex, { gap: 6, align: "center", children: [
2109
2110
  sessionTitle && /* @__PURE__ */ jsx(Typography.Text, { color: "overPicture", size: "s", children: sessionTitle }),
@@ -2127,6 +2128,17 @@ function AIChatToolbar({ onClose, onHistoryClick, onPlusClick, onHistoryClose, i
2127
2128
  }
2128
2129
  ) : /* @__PURE__ */ jsxs(Fragment, { children: [
2129
2130
  /* @__PURE__ */ jsx(Center, { sx: { cursor: "pointer", borderRadius: 24 }, onClick: onPlusClick, children: /* @__PURE__ */ jsx(PlusSolid, { size: 18 }) }),
2131
+ /* @__PURE__ */ jsx(
2132
+ Center,
2133
+ {
2134
+ sx: {
2135
+ cursor: "pointer",
2136
+ borderRadius: 24
2137
+ },
2138
+ onClick: onCanvasCycle,
2139
+ children: /* @__PURE__ */ jsx(Canvas, { size: 18, color: canvasActive ? "primary" : void 0 })
2140
+ }
2141
+ ),
2130
2142
  /* @__PURE__ */ jsx(Center, { sx: { cursor: "pointer", borderRadius: 24 }, onClick: onHistoryClick, children: /* @__PURE__ */ jsx(HistorySolid, { size: 18 }) }),
2131
2143
  /* @__PURE__ */ jsx(
2132
2144
  Center,
@@ -2556,6 +2568,8 @@ function SpaceItem({ icon, id, name, selectedSpace, onClick }) {
2556
2568
  }
2557
2569
  );
2558
2570
  }
2571
+ const CANVAS_MIN_WIDTH = 350;
2572
+ const CONTENT_MIN_WIDTH = 350;
2559
2573
  function AppShellNavigation({
2560
2574
  spaces,
2561
2575
  pageItem,
@@ -2581,20 +2595,79 @@ function AppShellNavigation({
2581
2595
  isAiBtnVisible,
2582
2596
  loading,
2583
2597
  children,
2584
- aiNavbarContent
2598
+ separator,
2599
+ aiNavbarContent,
2600
+ canvasContent,
2601
+ canvasMode = "hidden",
2602
+ splitRatio = 0.4,
2603
+ onSplitRatioChange
2585
2604
  }) {
2586
2605
  const [isNavbarNotCollapsed, { toggle: toggleNavbar }] = useDisclosure(true);
2587
2606
  const [asideWidth, setAsideWidth] = useState(450);
2588
2607
  const theme = useUITheme();
2589
- const [navbarWidth, setNavbarWidth] = useState(isAiOpened ? 450 : 300);
2590
- const [isNavbarResizing, setIsNavbarResizing] = useState(false);
2591
- const isNavbarResizingRef = useRef(false);
2608
+ const [isSplitResizing, setIsSplitResizing] = useState(false);
2609
+ const isSplitResizingRef = useRef(false);
2610
+ const mainContainerRef = useRef(null);
2611
+ const isRightPanelOpen = !asideCollapsed && !!right;
2612
+ const shouldShowCanvas = canvasMode !== "hidden" && !isRightPanelOpen;
2613
+ const shouldShowContent = (canvasMode === "hidden" || canvasMode === "split") && !isRightPanelOpen || isRightPanelOpen;
2614
+ const getCanvasWidth = () => {
2615
+ if (!shouldShowCanvas) return "0%";
2616
+ if (canvasMode === "full") return "100%";
2617
+ return `${splitRatio * 100}%`;
2618
+ };
2619
+ const getContentWidth = () => {
2620
+ if (!shouldShowContent) return "0%";
2621
+ if (canvasMode === "hidden" || isRightPanelOpen) return "100%";
2622
+ if (canvasMode === "full") return "0%";
2623
+ return `${(1 - splitRatio) * 100}%`;
2624
+ };
2625
+ const handleSplitMouseMove = useCallback(
2626
+ (e) => {
2627
+ if (!isSplitResizingRef.current || !mainContainerRef.current) return;
2628
+ const containerRect = mainContainerRef.current.getBoundingClientRect();
2629
+ const containerWidth = containerRect.width;
2630
+ const relativeX = e.clientX - containerRect.left;
2631
+ const minRatio = CANVAS_MIN_WIDTH / containerWidth;
2632
+ const maxRatio = 1 - CONTENT_MIN_WIDTH / containerWidth;
2633
+ const newRatio = Math.min(Math.max(relativeX / containerWidth, minRatio), maxRatio);
2634
+ onSplitRatioChange?.(newRatio);
2635
+ },
2636
+ [onSplitRatioChange]
2637
+ );
2638
+ const handleSplitMouseUp = useCallback(() => {
2639
+ setIsSplitResizing(false);
2640
+ isSplitResizingRef.current = false;
2641
+ }, []);
2642
+ const handleSplitMouseDown = (e) => {
2643
+ e.preventDefault();
2644
+ setIsSplitResizing(true);
2645
+ isSplitResizingRef.current = true;
2646
+ };
2592
2647
  useEffect(() => {
2593
- const minWidth = isAiOpened ? 450 : 300;
2594
- if (navbarWidth < minWidth) {
2595
- setNavbarWidth(minWidth);
2648
+ if (isSplitResizing) {
2649
+ document.addEventListener("mousemove", handleSplitMouseMove);
2650
+ document.addEventListener("mouseup", handleSplitMouseUp);
2651
+ document.body.style.cursor = "col-resize";
2652
+ document.body.style.userSelect = "none";
2653
+ } else {
2654
+ document.removeEventListener("mousemove", handleSplitMouseMove);
2655
+ document.removeEventListener("mouseup", handleSplitMouseUp);
2656
+ document.body.style.cursor = "";
2657
+ document.body.style.userSelect = "";
2596
2658
  }
2597
- }, [isAiOpened, navbarWidth]);
2659
+ return () => {
2660
+ document.removeEventListener("mousemove", handleSplitMouseMove);
2661
+ document.removeEventListener("mouseup", handleSplitMouseUp);
2662
+ document.body.style.cursor = "";
2663
+ document.body.style.userSelect = "";
2664
+ };
2665
+ }, [isSplitResizing, handleSplitMouseMove, handleSplitMouseUp]);
2666
+ const [navbarWidthAiOpen, setNavbarWidthAiOpen] = useLocalStorage("navbar-width-ai-open", 450);
2667
+ const [navbarWidthAiClosed, setNavbarWidthAiClosed] = useLocalStorage("navbar-width-ai-closed", 300);
2668
+ const navbarWidth = isAiOpened ? navbarWidthAiOpen : navbarWidthAiClosed;
2669
+ const [isNavbarResizing, setIsNavbarResizing] = useState(false);
2670
+ const isNavbarResizingRef = useRef(false);
2598
2671
  function clearNavbarListeners() {
2599
2672
  document.removeEventListener("mousemove", handleNavbarMouseMove);
2600
2673
  document.removeEventListener("mouseup", handleNavbarMouseUp);
@@ -2607,7 +2680,11 @@ function AppShellNavigation({
2607
2680
  const minWidth = isAiOpened ? 450 : 300;
2608
2681
  const maxWidth = 700;
2609
2682
  const newWidth = Math.min(Math.max(e.clientX, minWidth), maxWidth);
2610
- setNavbarWidth(newWidth);
2683
+ if (isAiOpened) {
2684
+ setNavbarWidthAiOpen(newWidth);
2685
+ } else {
2686
+ setNavbarWidthAiClosed(newWidth);
2687
+ }
2611
2688
  },
2612
2689
  [isAiOpened]
2613
2690
  );
@@ -2635,15 +2712,17 @@ function AppShellNavigation({
2635
2712
  const handleWindowResize = () => {
2636
2713
  const maxWidth = 700;
2637
2714
  const minWidth = isAiOpened ? 450 : 300;
2638
- if (navbarWidth > maxWidth) {
2639
- setNavbarWidth(maxWidth);
2640
- } else if (navbarWidth < minWidth) {
2641
- setNavbarWidth(minWidth);
2715
+ const currentWidth = isAiOpened ? navbarWidthAiOpen : navbarWidthAiClosed;
2716
+ const setter = isAiOpened ? setNavbarWidthAiOpen : setNavbarWidthAiClosed;
2717
+ if (currentWidth > maxWidth) {
2718
+ setter(maxWidth);
2719
+ } else if (currentWidth < minWidth) {
2720
+ setter(minWidth);
2642
2721
  }
2643
2722
  };
2644
2723
  window.addEventListener("resize", handleWindowResize);
2645
2724
  return () => window.removeEventListener("resize", handleWindowResize);
2646
- }, [navbarWidth, isAiOpened]);
2725
+ }, [navbarWidthAiOpen, navbarWidthAiClosed, isAiOpened]);
2647
2726
  return /* @__PURE__ */ jsxs(
2648
2727
  AppShell,
2649
2728
  {
@@ -2762,14 +2841,94 @@ function AppShellNavigation({
2762
2841
  }
2763
2842
  )
2764
2843
  ] }),
2765
- loading ? /* @__PURE__ */ jsx(Stack$1, { gap: 5, children: Array.from({ length: 6 }).map((_, idx) => /* @__PURE__ */ jsx(NavigationItemSkeleton, {}, idx)) }) : menuItems?.map((item) => /* @__PURE__ */ jsx(MenuItem, { onMenuItemClick, item }, item.id)),
2844
+ loading ? /* @__PURE__ */ jsx(Stack$1, { gap: 5, children: Array.from({ length: 6 }).map((_, idx) => /* @__PURE__ */ jsx(NavigationItemSkeleton, {}, idx)) }) : menuItems?.map((item, index) => {
2845
+ if (index === separator) {
2846
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
2847
+ /* @__PURE__ */ jsx(Space, { h: 16 }),
2848
+ /* @__PURE__ */ jsx(MenuItem, { onMenuItemClick, item }, item.id)
2849
+ ] });
2850
+ }
2851
+ return /* @__PURE__ */ jsx(MenuItem, { onMenuItemClick, item }, item.id);
2852
+ }),
2766
2853
  roomCategories && roomCategories.length > 0 && /* @__PURE__ */ jsx(Stack$1, { gap: 8, mt: 16, children: roomCategories.map((category) => /* @__PURE__ */ jsx(RoomCategory, { category }, category.id)) })
2767
2854
  ] }),
2768
2855
  /* @__PURE__ */ jsx(Stack$1, { gap: 5, children: footerContent })
2769
2856
  ] })
2770
2857
  ] })
2771
2858
  ] }) }),
2772
- /* @__PURE__ */ jsx(AppShell.Main, { children }),
2859
+ /* @__PURE__ */ jsx(
2860
+ AppShell.Main,
2861
+ {
2862
+ style: {
2863
+ display: "flex",
2864
+ flexDirection: "column",
2865
+ height: "100vh",
2866
+ overflow: "hidden"
2867
+ },
2868
+ children: /* @__PURE__ */ jsxs(
2869
+ Flex,
2870
+ {
2871
+ ref: mainContainerRef,
2872
+ style: {
2873
+ flex: 1,
2874
+ height: "100%",
2875
+ overflow: "hidden",
2876
+ position: "relative"
2877
+ },
2878
+ children: [
2879
+ /* @__PURE__ */ jsx(
2880
+ Box,
2881
+ {
2882
+ bg: theme.bg.navIconsBg,
2883
+ style: {
2884
+ width: getCanvasWidth(),
2885
+ minWidth: shouldShowCanvas && canvasMode === "split" ? CANVAS_MIN_WIDTH : void 0,
2886
+ display: shouldShowCanvas ? "flex" : "none",
2887
+ flexDirection: "column",
2888
+ overflow: "hidden",
2889
+ height: "100%",
2890
+ transition: isSplitResizing ? "none" : "width 0.3s ease, opacity 0.2s ease",
2891
+ opacity: shouldShowCanvas ? 1 : 0,
2892
+ borderLeft: `1px solid ${theme.neutral.transparent10}`
2893
+ },
2894
+ children: canvasContent
2895
+ }
2896
+ ),
2897
+ canvasMode === "split" && !isRightPanelOpen && /* @__PURE__ */ jsx(
2898
+ Box,
2899
+ {
2900
+ w: 4,
2901
+ h: "100%",
2902
+ bg: isSplitResizing ? theme.colors.focus : "transparent",
2903
+ sx: {
2904
+ cursor: "col-resize",
2905
+ flexShrink: 0,
2906
+ transition: "background-color 0.2s ease"
2907
+ },
2908
+ onMouseDown: handleSplitMouseDown
2909
+ }
2910
+ ),
2911
+ /* @__PURE__ */ jsx(
2912
+ Box,
2913
+ {
2914
+ style: {
2915
+ width: getContentWidth(),
2916
+ minWidth: shouldShowContent && canvasMode === "split" ? CONTENT_MIN_WIDTH : void 0,
2917
+ display: shouldShowContent ? "flex" : "none",
2918
+ flexDirection: "column",
2919
+ overflow: "auto",
2920
+ height: "100%",
2921
+ transition: isSplitResizing ? "none" : "width 0.3s ease, opacity 0.2s ease",
2922
+ opacity: shouldShowContent ? 1 : 0
2923
+ },
2924
+ children
2925
+ }
2926
+ )
2927
+ ]
2928
+ }
2929
+ )
2930
+ }
2931
+ ),
2773
2932
  /* @__PURE__ */ jsx(AsideResizable, { asideCollapsed, onAsideToggle, onMaxExpand, width: asideWidth, onWidthChange: setAsideWidth, children: right })
2774
2933
  ]
2775
2934
  }
@@ -5791,13 +5950,13 @@ function ActionButton({ onClick, left, right }) {
5791
5950
  }
5792
5951
  );
5793
5952
  }
5794
- const MainAction = lazy(() => import("./index-D2vpQrea.js"));
5795
- const Header$1 = lazy(() => import("./index-CrLkPKdH.js"));
5796
- const Content = lazy(() => import("./index-CgY82myI.js"));
5953
+ const MainAction = lazy(() => import("./index-D2yQxkIj.js"));
5954
+ const Header$1 = lazy(() => import("./index-BveTsSM4.js"));
5955
+ const Content = lazy(() => import("./index-B5f_G827.js"));
5797
5956
  const Map = lazy(() => import("./index-D5Ufmf-s.js"));
5798
5957
  const CustomContent = lazy(() => import("./index-DsYjW_4y.js"));
5799
- const Assets = lazy(() => import("./index-Dzht1xdr.js"));
5800
- const Actions = lazy(() => import("./index-BUOaLr6a.js"));
5958
+ const Assets = lazy(() => import("./index-DnbJxS8B.js"));
5959
+ const Actions = lazy(() => import("./index-IuW_YBAi.js"));
5801
5960
  const HOVER_BORDER_WIDTH = 1;
5802
5961
  function SodaCardCmp({ numSelected = 0, expanded = true, mainAction, header, content, map, customContent, customFooter, actions, assets, onClick }, ref) {
5803
5962
  const wrapperRef = useRef(null);
@@ -11112,4 +11271,4 @@ export {
11112
11271
  CardHero as y,
11113
11272
  CardSelector as z
11114
11273
  };
11115
- //# sourceMappingURL=components-B1a2iVqu.js.map
11274
+ //# sourceMappingURL=components-BCUQC5jC.js.map