@ixo/ui 0.0.33 → 0.0.35

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 (52) hide show
  1. package/dist/.vite/manifest.json +31 -31
  2. package/dist/components/AppShellNavigation/components/AsideResizable.d.ts.map +1 -1
  3. package/dist/components/AppShellNavigation/components/MenuItem.d.ts +1 -0
  4. package/dist/components/AppShellNavigation/components/MenuItem.d.ts.map +1 -1
  5. package/dist/components/AppShellNavigation/index.d.ts.map +1 -1
  6. package/dist/{components-CR3XazP1.js → components-C94tOtsd.js} +239 -129
  7. package/dist/{components-CR3XazP1.js.map → components-C94tOtsd.js.map} +1 -1
  8. package/dist/{components-DTMttD70.cjs → components-DF2Bd0es.cjs} +238 -128
  9. package/dist/{components-DTMttD70.cjs.map → components-DF2Bd0es.cjs.map} +1 -1
  10. package/dist/export/components.cjs +1 -1
  11. package/dist/export/components.mjs +1 -1
  12. package/dist/{index-CQD9E1Y0.cjs → index-AIkST7gl.cjs} +2 -2
  13. package/dist/{index-CQD9E1Y0.cjs.map → index-AIkST7gl.cjs.map} +1 -1
  14. package/dist/{index-Dgo89leo.cjs → index-BQ1DH7WK.cjs} +2 -2
  15. package/dist/{index-Dgo89leo.cjs.map → index-BQ1DH7WK.cjs.map} +1 -1
  16. package/dist/{index-CJuGk9X4.js → index-BUhftlk7.js} +3 -3
  17. package/dist/{index-CJuGk9X4.js.map → index-BUhftlk7.js.map} +1 -1
  18. package/dist/{index-C5Vs6UTu.js → index-BUiJr7Uj.js} +3 -3
  19. package/dist/{index-C5Vs6UTu.js.map → index-BUiJr7Uj.js.map} +1 -1
  20. package/dist/{index-B1iDlIBb.js → index-BgMqOKWQ.js} +2 -2
  21. package/dist/{index-B1iDlIBb.js.map → index-BgMqOKWQ.js.map} +1 -1
  22. package/dist/{index-DFVmSv_s.js → index-BwGm7BDz.js} +2 -2
  23. package/dist/{index-DFVmSv_s.js.map → index-BwGm7BDz.js.map} +1 -1
  24. package/dist/{index-CAG6hgw7.js → index-CBHwvT9n.js} +2 -2
  25. package/dist/{index-CAG6hgw7.js.map → index-CBHwvT9n.js.map} +1 -1
  26. package/dist/{index-CXKd9L7W.cjs → index-CFWPityN.cjs} +3 -3
  27. package/dist/{index-CXKd9L7W.cjs.map → index-CFWPityN.cjs.map} +1 -1
  28. package/dist/{index-DlJaYoXJ.js → index-CJFj_oLr.js} +2 -2
  29. package/dist/{index-DlJaYoXJ.js.map → index-CJFj_oLr.js.map} +1 -1
  30. package/dist/{index-DLS4Rlpw.js → index-D--aZB3M.js} +2 -2
  31. package/dist/{index-DLS4Rlpw.js.map → index-D--aZB3M.js.map} +1 -1
  32. package/dist/{index-DRTHOayr.cjs → index-DF1KwyRS.cjs} +2 -2
  33. package/dist/{index-DRTHOayr.cjs.map → index-DF1KwyRS.cjs.map} +1 -1
  34. package/dist/{index-CenKQltX.js → index-DQ5_MRcm.js} +2 -2
  35. package/dist/{index-CenKQltX.js.map → index-DQ5_MRcm.js.map} +1 -1
  36. package/dist/{index-CcdRvpPG.cjs → index-DV9aLRa2.cjs} +2 -2
  37. package/dist/{index-CcdRvpPG.cjs.map → index-DV9aLRa2.cjs.map} +1 -1
  38. package/dist/{index-C-XqjvyN.js → index-D_XYIRB0.js} +2 -2
  39. package/dist/{index-C-XqjvyN.js.map → index-D_XYIRB0.js.map} +1 -1
  40. package/dist/{index-EDgDTxEE.cjs → index-Dpgn820L.cjs} +2 -2
  41. package/dist/{index-EDgDTxEE.cjs.map → index-Dpgn820L.cjs.map} +1 -1
  42. package/dist/{index-CrGDWCSQ.cjs → index-MFrpv1U1.cjs} +2 -2
  43. package/dist/{index-CrGDWCSQ.cjs.map → index-MFrpv1U1.cjs.map} +1 -1
  44. package/dist/{index-O9u1LytR.cjs → index-RTCppkPk.cjs} +3 -3
  45. package/dist/{index-O9u1LytR.cjs.map → index-RTCppkPk.cjs.map} +1 -1
  46. package/dist/{index-CP4dPoSE.cjs → index-lq6zoyTk.cjs} +2 -2
  47. package/dist/{index-CP4dPoSE.cjs.map → index-lq6zoyTk.cjs.map} +1 -1
  48. package/dist/{index-DCDIWKNW.cjs → index-pkTICWLF.cjs} +2 -2
  49. package/dist/{index-DCDIWKNW.cjs.map → index-pkTICWLF.cjs.map} +1 -1
  50. package/dist/{index-CmvbskDl.js → index-qLlUomkF.js} +2 -2
  51. package/dist/{index-CmvbskDl.js.map → index-qLlUomkF.js.map} +1 -1
  52. package/package.json +1 -1
@@ -2,7 +2,7 @@ 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
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";
5
- import { useState, useCallback, useRef, useEffect, Suspense, lazy, forwardRef, useId, useMemo, Fragment as Fragment$1, useLayoutEffect, useImperativeHandle, memo } from "react";
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
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 } from "@mantine/core";
8
8
  import { cx, css } from "@emotion/css";
@@ -774,8 +774,8 @@ function AccordionTable({
774
774
  }
775
775
  );
776
776
  }
777
- const Header$3 = lazy(() => import("./index-CenKQltX.js"));
778
- const Footer = lazy(() => import("./index-CJuGk9X4.js"));
777
+ const Header$3 = lazy(() => import("./index-DQ5_MRcm.js"));
778
+ const Footer = lazy(() => import("./index-BUhftlk7.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-C-XqjvyN.js"));
862
+ const Header$2 = lazy(() => import("./index-D_XYIRB0.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-CAG6hgw7.js"));
1297
+ const Badge = lazy(() => import("./index-CBHwvT9n.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);
@@ -2184,6 +2184,7 @@ function Avatar({ src, rounded = true, size = 62, did }) {
2184
2184
  return /* @__PURE__ */ jsx(User, { css: ({ text }) => ({ ...css2, backgroundColor: text.secondary }) });
2185
2185
  }
2186
2186
  const MIN_WIDTH = 200;
2187
+ const MAX_WIDTH = 700;
2187
2188
  function AsideResizable({ children, asideCollapsed = false, onAsideToggle, width = 450, onWidthChange, onMaxExpand }) {
2188
2189
  const [isResizing, setIsResizing] = useState(false);
2189
2190
  const [ref] = useResizeObserver();
@@ -2219,7 +2220,7 @@ function AsideResizable({ children, asideCollapsed = false, onAsideToggle, width
2219
2220
  const handleMouseMove = (e) => {
2220
2221
  if (!isResizing) return;
2221
2222
  const newWidth = window.innerWidth - e.clientX;
2222
- const maxWidth = window.innerWidth - 600;
2223
+ const maxWidth = Math.min(window.innerWidth - 600, MAX_WIDTH);
2223
2224
  const constrainedWidth = Math.min(Math.max(newWidth, MIN_WIDTH), maxWidth);
2224
2225
  onWidthChange?.(constrainedWidth);
2225
2226
  };
@@ -2230,7 +2231,7 @@ function AsideResizable({ children, asideCollapsed = false, onAsideToggle, width
2230
2231
  }
2231
2232
  }, [width, asideCollapsed, onAsideToggle]);
2232
2233
  useEffect(() => {
2233
- const maxWidth = window.innerWidth - 600;
2234
+ const maxWidth = Math.min(window.innerWidth - 600, MAX_WIDTH);
2234
2235
  if (width >= maxWidth && onMaxExpand && !hasFiredMaxExpand.current) {
2235
2236
  hasFiredMaxExpand.current = true;
2236
2237
  clearListeners();
@@ -2241,7 +2242,7 @@ function AsideResizable({ children, asideCollapsed = false, onAsideToggle, width
2241
2242
  }, [width, onMaxExpand]);
2242
2243
  useEffect(() => {
2243
2244
  const handleWindowResize = () => {
2244
- const newMaxWidth = window.innerWidth - 600;
2245
+ const newMaxWidth = Math.min(window.innerWidth - 600, MAX_WIDTH);
2245
2246
  const newMinWidth = MIN_WIDTH;
2246
2247
  if (width > newMaxWidth) {
2247
2248
  onWidthChange?.(newMaxWidth);
@@ -2263,7 +2264,7 @@ function AsideResizable({ children, asideCollapsed = false, onAsideToggle, width
2263
2264
  {
2264
2265
  w: width,
2265
2266
  miw: 200,
2266
- maw: window.innerWidth - 340,
2267
+ maw: MAX_WIDTH,
2267
2268
  ref,
2268
2269
  sx: {
2269
2270
  overflowY: "auto",
@@ -2406,19 +2407,70 @@ function RoomCategory({ category }) {
2406
2407
  !value && /* @__PURE__ */ jsx(Stack$1, { gap: 1, children: category.rooms.map((room) => /* @__PURE__ */ jsx(RoomItem, { room }, room.id)) })
2407
2408
  ] });
2408
2409
  }
2410
+ function hasActiveDescendant(children) {
2411
+ if (!children || children.length === 0) return false;
2412
+ return children.some((child) => child.isActive === true || hasActiveDescendant(child.children));
2413
+ }
2409
2414
  function MenuItem({ item, onMenuItemClick, depth = 0 }) {
2410
2415
  const { hovered, ref } = useHover();
2411
2416
  const theme = useUITheme();
2412
- const { value: isExpanded, toggle: toggle2 } = useToggle(false);
2413
2417
  const hasChildren = item.children && item.children.length > 0;
2418
+ const hasActiveChild = useMemo(() => hasActiveDescendant(item.children), [item.children]);
2419
+ const initialExpanded = item?.isActive === true || hasActiveChild;
2420
+ const { value: isExpanded, toggle: toggle2, set: setIsExpanded } = useToggle(initialExpanded);
2421
+ const prevHasActiveChildRef = useRef(hasActiveChild);
2422
+ const manuallyToggledRef = useRef(false);
2423
+ useEffect(() => {
2424
+ if (item?.isActive !== void 0) {
2425
+ setIsExpanded(item.isActive);
2426
+ manuallyToggledRef.current = false;
2427
+ }
2428
+ }, [item?.isActive, setIsExpanded]);
2429
+ useEffect(() => {
2430
+ if (hasActiveChild && !prevHasActiveChildRef.current) {
2431
+ if (!manuallyToggledRef.current || isExpanded) {
2432
+ setIsExpanded(true);
2433
+ }
2434
+ }
2435
+ prevHasActiveChildRef.current = hasActiveChild;
2436
+ }, [hasActiveChild, isExpanded, setIsExpanded]);
2414
2437
  const handleItemClick = () => {
2415
2438
  if (!!item?.disabled) return;
2416
2439
  onMenuItemClick(item);
2417
2440
  };
2418
2441
  const handleToggleClick = (e) => {
2419
2442
  e.stopPropagation();
2443
+ manuallyToggledRef.current = true;
2420
2444
  toggle2();
2421
2445
  };
2446
+ const shouldShowActiveStyle = item.isActive === true && !hasActiveChild;
2447
+ const renderIcon = () => {
2448
+ if (hasChildren && hovered) {
2449
+ return /* @__PURE__ */ jsx(
2450
+ Center,
2451
+ {
2452
+ onClick: handleToggleClick,
2453
+ p: 4,
2454
+ sx: {
2455
+ cursor: "pointer",
2456
+ borderRadius: 4,
2457
+ transform: isExpanded ? "rotate(-90deg)" : "rotate(0deg)",
2458
+ transition: "transform 0.2s ease",
2459
+ "&:hover": {
2460
+ backgroundColor: theme.neutral.transparent10
2461
+ }
2462
+ },
2463
+ children: /* @__PURE__ */ jsx(AngleLeftSolid, { size: 12, color: "secondary" })
2464
+ }
2465
+ );
2466
+ } else {
2467
+ if (typeof item.icon === "string") {
2468
+ return /* @__PURE__ */ jsx(Image, { w: 20, h: 20, src: item.icon, radius: "50%" });
2469
+ } else {
2470
+ return /* @__PURE__ */ jsx(item.icon, { size: 20, color: shouldShowActiveStyle ? "overPicture" : "secondary" });
2471
+ }
2472
+ }
2473
+ };
2422
2474
  return /* @__PURE__ */ jsxs(Stack$1, { gap: 1, children: [
2423
2475
  /* @__PURE__ */ jsxs(
2424
2476
  Flex,
@@ -2433,50 +2485,31 @@ function MenuItem({ item, onMenuItemClick, depth = 0 }) {
2433
2485
  style: {
2434
2486
  cursor: "pointer",
2435
2487
  borderRadius: 8,
2436
- backgroundColor: item.isActive ? theme.neutral.transparent10 : hovered ? theme.neutral.transparent10 : "transparent",
2488
+ backgroundColor: shouldShowActiveStyle ? theme.neutral.transparent10 : hovered ? theme.neutral.transparent10 : "transparent",
2437
2489
  transform: hovered ? "translateX(4px)" : "translateX(0px)",
2438
2490
  transition: "all 0.2s ease"
2439
2491
  },
2440
2492
  onClick: handleItemClick,
2441
2493
  children: [
2442
2494
  /* @__PURE__ */ jsxs(Flex, { align: "center", gap: 8, children: [
2443
- typeof item.icon === "string" ? /* @__PURE__ */ jsx(Image, { w: 20, h: 20, src: item.icon, radius: "50%" }) : /* @__PURE__ */ jsx(item.icon, { size: 20, color: item.isActive ? "overPicture" : "secondary" }),
2444
- /* @__PURE__ */ jsx(Text$1, { fz: 14, fw: 500, c: item.isActive ? theme.neutral.lightGray : theme.text.secondary, style: { flex: 1 }, children: item.name }),
2495
+ renderIcon(),
2496
+ /* @__PURE__ */ jsx(Text$1, { fz: 14, fw: 500, c: shouldShowActiveStyle ? theme.neutral.lightGray : theme.text.secondary, style: { flex: 1 }, children: item.name }),
2445
2497
  item.badgeCount ? /* @__PURE__ */ jsx(Badge$1, { size: "xs", variant: "filled", ml: 4, style: { minWidth: "16px", height: "15px", padding: "0 4px", fontSize: "8px" }, children: item.badgeCount }) : null
2446
2498
  ] }),
2447
- /* @__PURE__ */ jsxs(Flex, { children: [
2448
- hasChildren && /* @__PURE__ */ jsx(
2449
- Center,
2450
- {
2451
- onClick: handleToggleClick,
2452
- p: 4,
2453
- sx: {
2454
- cursor: "pointer",
2455
- borderRadius: 4,
2456
- transform: isExpanded ? "rotate(-90deg)" : "rotate(0deg)",
2457
- transition: "transform 0.2s ease",
2458
- "&:hover": {
2459
- backgroundColor: theme.neutral.transparent10
2460
- }
2461
- },
2462
- children: /* @__PURE__ */ jsx(AngleLeftSolid, { size: 12, color: "secondary" })
2463
- }
2464
- ),
2465
- item?.actions && item.actions.length > 0 && /* @__PURE__ */ jsx(
2466
- Center,
2467
- {
2468
- sx: {
2469
- cursor: "pointer",
2470
- borderRadius: 4,
2471
- transition: "transform 0.2s ease",
2472
- "&:hover": {
2473
- backgroundColor: theme.neutral.transparent10
2474
- }
2475
- },
2476
- children: /* @__PURE__ */ jsx(MoreMenu, { items: item.actions, controlColor: "secondary" })
2477
- }
2478
- )
2479
- ] })
2499
+ /* @__PURE__ */ jsx(Flex, { children: item?.actions && item.actions.length > 0 && /* @__PURE__ */ jsx(
2500
+ Center,
2501
+ {
2502
+ sx: {
2503
+ cursor: "pointer",
2504
+ borderRadius: 4,
2505
+ transition: "transform 0.2s ease",
2506
+ "&:hover": {
2507
+ backgroundColor: theme.neutral.transparent10
2508
+ }
2509
+ },
2510
+ children: /* @__PURE__ */ jsx(MoreMenu, { items: item.actions, controlColor: "secondary" })
2511
+ }
2512
+ ) })
2480
2513
  ]
2481
2514
  }
2482
2515
  ),
@@ -2553,6 +2586,64 @@ function AppShellNavigation({
2553
2586
  const [isNavbarNotCollapsed, { toggle: toggleNavbar }] = useDisclosure(true);
2554
2587
  const [asideWidth, setAsideWidth] = useState(450);
2555
2588
  const theme = useUITheme();
2589
+ const [navbarWidth, setNavbarWidth] = useState(isAiOpened ? 450 : 300);
2590
+ const [isNavbarResizing, setIsNavbarResizing] = useState(false);
2591
+ const isNavbarResizingRef = useRef(false);
2592
+ useEffect(() => {
2593
+ const minWidth = isAiOpened ? 450 : 300;
2594
+ if (navbarWidth < minWidth) {
2595
+ setNavbarWidth(minWidth);
2596
+ }
2597
+ }, [isAiOpened, navbarWidth]);
2598
+ function clearNavbarListeners() {
2599
+ document.removeEventListener("mousemove", handleNavbarMouseMove);
2600
+ document.removeEventListener("mouseup", handleNavbarMouseUp);
2601
+ document.body.style.cursor = "";
2602
+ document.body.style.userSelect = "";
2603
+ }
2604
+ const handleNavbarMouseMove = useCallback(
2605
+ (e) => {
2606
+ if (!isNavbarResizingRef.current) return;
2607
+ const minWidth = isAiOpened ? 450 : 300;
2608
+ const maxWidth = 700;
2609
+ const newWidth = Math.min(Math.max(e.clientX, minWidth), maxWidth);
2610
+ setNavbarWidth(newWidth);
2611
+ },
2612
+ [isAiOpened]
2613
+ );
2614
+ const handleNavbarMouseUp = useCallback(() => {
2615
+ setIsNavbarResizing(false);
2616
+ isNavbarResizingRef.current = false;
2617
+ }, []);
2618
+ const handleNavbarMouseDown = (e) => {
2619
+ e.preventDefault();
2620
+ setIsNavbarResizing(true);
2621
+ isNavbarResizingRef.current = true;
2622
+ };
2623
+ useEffect(() => {
2624
+ if (isNavbarResizing) {
2625
+ document.addEventListener("mousemove", handleNavbarMouseMove);
2626
+ document.addEventListener("mouseup", handleNavbarMouseUp);
2627
+ document.body.style.cursor = "col-resize";
2628
+ document.body.style.userSelect = "none";
2629
+ } else {
2630
+ clearNavbarListeners();
2631
+ }
2632
+ return () => clearNavbarListeners();
2633
+ }, [isNavbarResizing, handleNavbarMouseMove, handleNavbarMouseUp]);
2634
+ useEffect(() => {
2635
+ const handleWindowResize = () => {
2636
+ const maxWidth = 700;
2637
+ const minWidth = isAiOpened ? 450 : 300;
2638
+ if (navbarWidth > maxWidth) {
2639
+ setNavbarWidth(maxWidth);
2640
+ } else if (navbarWidth < minWidth) {
2641
+ setNavbarWidth(minWidth);
2642
+ }
2643
+ };
2644
+ window.addEventListener("resize", handleWindowResize);
2645
+ return () => window.removeEventListener("resize", handleWindowResize);
2646
+ }, [navbarWidth, isAiOpened]);
2556
2647
  return /* @__PURE__ */ jsxs(
2557
2648
  AppShell,
2558
2649
  {
@@ -2560,7 +2651,7 @@ function AppShellNavigation({
2560
2651
  styles: {
2561
2652
  navbar: {
2562
2653
  background: theme.bg.navIconsBg,
2563
- transition: "width 0.3s ease"
2654
+ transition: isNavbarResizing ? "none" : "width 0.3s ease"
2564
2655
  },
2565
2656
  aside: {
2566
2657
  background: theme.bg.navScaled
@@ -2568,7 +2659,7 @@ function AppShellNavigation({
2568
2659
  },
2569
2660
  bg: theme.bg.centralCanvasBg,
2570
2661
  navbar: {
2571
- width: isNavbarNotCollapsed ? isAiOpened ? 450 : 300 : 56,
2662
+ width: isNavbarNotCollapsed ? navbarWidth : 56,
2572
2663
  breakpoint: "sm"
2573
2664
  },
2574
2665
  aside: {
@@ -2576,90 +2667,109 @@ function AppShellNavigation({
2576
2667
  breakpoint: "sm"
2577
2668
  },
2578
2669
  children: [
2579
- /* @__PURE__ */ jsx(AppShell.Navbar, { children: /* @__PURE__ */ jsxs(Flex, { style: { height: "100%" }, children: [
2580
- /* @__PURE__ */ jsxs(Stack$1, { p: 8, w: 56, justify: "space-between", h: "100%", bg: theme.bg.navSpaces, children: [
2581
- /* @__PURE__ */ jsxs(Stack$1, { align: "center", style: { flex: 1 }, gap: 8, children: [
2582
- /* @__PURE__ */ jsxs(Center, { sx: { cursor: "pointer", borderRadius: 24 }, pos: "relative", h: 40, w: 40, onClick: companyIcon.onClick, children: [
2583
- typeof companyIcon.icon === "string" ? /* @__PURE__ */ jsx(Image, { radius: 24, src: companyIcon.icon, w: 32, h: 32 }) : companyIcon.icon,
2584
- companyIcon.isSelected && /* @__PURE__ */ jsx(SelectedIndicator, {})
2585
- ] }),
2586
- avatarIcon && /* @__PURE__ */ jsxs(Center, { sx: { cursor: "pointer", borderRadius: 24 }, pos: "relative", bg: theme.bg.navIconsBg, h: 40, w: 40, onClick: avatarIcon.onClick, children: [
2587
- /* @__PURE__ */ jsx(Tooltip$4, { label: "Home", position: "right", withArrow: true, ml: 5, fz: 12, children: typeof avatarIcon.icon === "string" ? /* @__PURE__ */ jsx(Image, { radius: 24, src: avatarIcon.icon, w: 32, h: 32 }) : avatarIcon.icon }),
2588
- avatarIcon.isSelected && /* @__PURE__ */ jsx(SelectedIndicator, {})
2589
- ] }),
2590
- /* @__PURE__ */ jsx(Divider, { w: 40, mx: 10, color: theme.neutral.transparent10 }),
2591
- temporarySpace && !spaces?.some((space) => space.id === temporarySpace.id) && /* @__PURE__ */ jsxs(Fragment, { children: [
2592
- /* @__PURE__ */ jsx(
2593
- SpaceItem,
2594
- {
2595
- selectedSpace,
2596
- icon: temporarySpace.icon,
2597
- name: temporarySpace.name,
2598
- id: temporarySpace.id,
2599
- onClick: temporarySpace.onClick
2600
- },
2601
- temporarySpace.id
2602
- ),
2603
- /* @__PURE__ */ jsx(Divider, { w: 40, mx: 10, color: theme.neutral.transparent10 })
2604
- ] }),
2605
- /* @__PURE__ */ jsx(
2606
- Stack$1,
2607
- {
2608
- align: "center",
2609
- gap: 8,
2610
- style: {
2611
- flex: 1,
2612
- overflowY: "auto",
2613
- maxHeight: "calc(100vh - 300px)",
2614
- scrollbarWidth: "none",
2615
- msOverflowStyle: "none"
2616
- },
2617
- sx: {
2618
- "&::-webkit-scrollbar": {
2619
- display: "none"
2620
- }
2621
- },
2622
- children: spaces.map(({ icon, id, name, onClick }) => /* @__PURE__ */ jsx(SpaceItem, { selectedSpace, icon, name, id, onClick }, id))
2623
- }
2624
- )
2625
- ] }),
2626
- onAddSpaceClick && /* @__PURE__ */ jsx(Center, { sx: { cursor: "pointer", borderRadius: 24 }, bg: theme.bg.navIconsBg, h: 40, w: 40, onClick: onAddSpaceClick, children: /* @__PURE__ */ jsx(PlusSolid, { color: "secondary" }) }),
2627
- onMinusSpaceClick && /* @__PURE__ */ jsx(Center, { sx: { cursor: "pointer", borderRadius: 24 }, bg: theme.bg.navIconsBg, h: 40, w: 40, onClick: onMinusSpaceClick, children: /* @__PURE__ */ jsx(MinusCircleSolid, { color: "secondary" }) }),
2628
- /* @__PURE__ */ jsxs(Stack$1, { align: "center", gap: 8, children: [
2629
- /* @__PURE__ */ jsx(Divider, { w: 40, mx: 10, color: theme.neutral.transparent10 }),
2630
- /* @__PURE__ */ jsx(Center, { sx: { cursor: "pointer", borderRadius: 24 }, bg: theme.bg.navIconsBg, h: 40, w: 40, onClick: onSettingsIconClick, children: /* @__PURE__ */ jsx(SettingsBarSolid, { size: 22, color: "secondary" }) })
2631
- ] })
2632
- ] }),
2633
- isAiOpened && isNavbarNotCollapsed && aiNavbarContent,
2634
- isNavbarNotCollapsed && !isAiOpened && /* @__PURE__ */ jsxs(Stack$1, { justify: "space-between", w: "100%", pt: 16, pb: 10, px: 12, children: [
2635
- /* @__PURE__ */ jsxs(Stack$1, { gap: 5, children: [
2636
- /* @__PURE__ */ jsxs(Flex, { mb: 24, style: { width: "100%" }, justify: "space-between", align: "center", children: [
2637
- /* @__PURE__ */ jsxs(Flex, { align: "center", gap: "10px", children: [
2638
- isBackButtonVisible ? /* @__PURE__ */ jsx(Center, { onClick: onBackClick, sx: { borderRadius: 4, cursor: "pointer", padding: 2, background: theme.bg.navIconsBg }, children: /* @__PURE__ */ jsx(ArrowLeftSolid, { size: 18 }) }) : /* @__PURE__ */ jsx(Center, { sx: { borderRadius: 4, padding: 2, background: theme.bg.navIconsBg }, children: pageItem.pageIcon ? /* @__PURE__ */ jsx(pageItem.pageIcon, { size: 18 }) : /* @__PURE__ */ jsx(Globe, { size: 18 }) }),
2639
- /* @__PURE__ */ jsx(Text$1, { lh: 1, c: theme.text.overPicture, children: pageItem.pageTitle || "Unknown" })
2670
+ /* @__PURE__ */ jsx(AppShell.Navbar, { children: /* @__PURE__ */ jsxs(Box, { sx: { position: "relative", height: "100%" }, children: [
2671
+ /* @__PURE__ */ jsx(
2672
+ Box,
2673
+ {
2674
+ w: 4,
2675
+ top: 0,
2676
+ right: 0,
2677
+ h: "100%",
2678
+ pos: "absolute",
2679
+ bg: isNavbarResizing ? theme.colors.focus : "transparent",
2680
+ sx: {
2681
+ zIndex: 2,
2682
+ cursor: "col-resize",
2683
+ transition: "background-color 0.2s ease"
2684
+ },
2685
+ onMouseDown: handleNavbarMouseDown
2686
+ }
2687
+ ),
2688
+ /* @__PURE__ */ jsxs(Flex, { style: { height: "100%" }, children: [
2689
+ /* @__PURE__ */ jsxs(Stack$1, { p: 8, w: 56, justify: "space-between", h: "100%", bg: theme.bg.navSpaces, children: [
2690
+ /* @__PURE__ */ jsxs(Stack$1, { align: "center", style: { flex: 1 }, gap: 8, children: [
2691
+ /* @__PURE__ */ jsxs(Center, { sx: { cursor: "pointer", borderRadius: 24 }, pos: "relative", h: 40, w: 40, onClick: companyIcon.onClick, children: [
2692
+ typeof companyIcon.icon === "string" ? /* @__PURE__ */ jsx(Image, { radius: 24, src: companyIcon.icon, w: 32, h: 32 }) : companyIcon.icon,
2693
+ companyIcon.isSelected && /* @__PURE__ */ jsx(SelectedIndicator, {})
2640
2694
  ] }),
2641
- isAiBtnVisible && !isAiOpened && /* @__PURE__ */ jsx(
2642
- Center,
2695
+ avatarIcon && /* @__PURE__ */ jsxs(Center, { sx: { cursor: "pointer", borderRadius: 24 }, pos: "relative", bg: theme.bg.navIconsBg, h: 40, w: 40, onClick: avatarIcon.onClick, children: [
2696
+ /* @__PURE__ */ jsx(Tooltip$4, { label: "Home", position: "right", withArrow: true, ml: 5, fz: 12, children: typeof avatarIcon.icon === "string" ? /* @__PURE__ */ jsx(Image, { radius: 24, src: avatarIcon.icon, w: 32, h: 32 }) : avatarIcon.icon }),
2697
+ avatarIcon.isSelected && /* @__PURE__ */ jsx(SelectedIndicator, {})
2698
+ ] }),
2699
+ /* @__PURE__ */ jsx(Divider, { w: 40, mx: 10, color: theme.neutral.transparent10 }),
2700
+ temporarySpace && !spaces?.some((space) => space.id === temporarySpace.id) && /* @__PURE__ */ jsxs(Fragment, { children: [
2701
+ /* @__PURE__ */ jsx(
2702
+ SpaceItem,
2703
+ {
2704
+ selectedSpace,
2705
+ icon: temporarySpace.icon,
2706
+ name: temporarySpace.name,
2707
+ id: temporarySpace.id,
2708
+ onClick: temporarySpace.onClick
2709
+ },
2710
+ temporarySpace.id
2711
+ ),
2712
+ /* @__PURE__ */ jsx(Divider, { w: 40, mx: 10, color: theme.neutral.transparent10 })
2713
+ ] }),
2714
+ /* @__PURE__ */ jsx(
2715
+ Stack$1,
2643
2716
  {
2717
+ align: "center",
2718
+ gap: 8,
2719
+ style: {
2720
+ flex: 1,
2721
+ overflowY: "auto",
2722
+ maxHeight: "calc(100vh - 300px)",
2723
+ scrollbarWidth: "none",
2724
+ msOverflowStyle: "none"
2725
+ },
2644
2726
  sx: {
2645
- cursor: "pointer",
2646
- borderRadius: 8,
2647
- transition: "background 0.15s",
2648
- background: theme.neutral.transparent10,
2649
- "&:hover": {
2650
- background: theme.neutral.transparent30
2727
+ "&::-webkit-scrollbar": {
2728
+ display: "none"
2651
2729
  }
2652
2730
  },
2653
- p: 4,
2654
- onClick: onAiOpen,
2655
- children: /* @__PURE__ */ jsx(Assistant, { size: 18, color: "primary" })
2731
+ children: spaces.map(({ icon, id, name, onClick }) => /* @__PURE__ */ jsx(SpaceItem, { selectedSpace, icon, name, id, onClick }, id))
2656
2732
  }
2657
2733
  )
2658
2734
  ] }),
2659
- 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)),
2660
- roomCategories && roomCategories.length > 0 && /* @__PURE__ */ jsx(Stack$1, { gap: 8, mt: 16, children: roomCategories.map((category) => /* @__PURE__ */ jsx(RoomCategory, { category }, category.id)) })
2735
+ onAddSpaceClick && /* @__PURE__ */ jsx(Center, { sx: { cursor: "pointer", borderRadius: 24 }, bg: theme.bg.navIconsBg, h: 40, w: 40, onClick: onAddSpaceClick, children: /* @__PURE__ */ jsx(PlusSolid, { color: "secondary" }) }),
2736
+ onMinusSpaceClick && /* @__PURE__ */ jsx(Center, { sx: { cursor: "pointer", borderRadius: 24 }, bg: theme.bg.navIconsBg, h: 40, w: 40, onClick: onMinusSpaceClick, children: /* @__PURE__ */ jsx(MinusCircleSolid, { color: "secondary" }) }),
2737
+ /* @__PURE__ */ jsxs(Stack$1, { align: "center", gap: 8, children: [
2738
+ /* @__PURE__ */ jsx(Divider, { w: 40, mx: 10, color: theme.neutral.transparent10 }),
2739
+ /* @__PURE__ */ jsx(Center, { sx: { cursor: "pointer", borderRadius: 24 }, bg: theme.bg.navIconsBg, h: 40, w: 40, onClick: onSettingsIconClick, children: /* @__PURE__ */ jsx(SettingsBarSolid, { size: 22, color: "secondary" }) })
2740
+ ] })
2661
2741
  ] }),
2662
- /* @__PURE__ */ jsx(Stack$1, { gap: 5, children: footerContent })
2742
+ isAiOpened && isNavbarNotCollapsed && aiNavbarContent,
2743
+ isNavbarNotCollapsed && !isAiOpened && /* @__PURE__ */ jsxs(Stack$1, { justify: "space-between", w: "100%", pt: 16, pb: 10, px: 12, children: [
2744
+ /* @__PURE__ */ jsxs(Stack$1, { gap: 5, children: [
2745
+ /* @__PURE__ */ jsxs(Flex, { mb: 24, style: { width: "100%" }, justify: "space-between", align: "center", children: [
2746
+ /* @__PURE__ */ jsxs(Flex, { align: "center", gap: "10px", children: [
2747
+ isBackButtonVisible ? /* @__PURE__ */ jsx(Center, { onClick: onBackClick, sx: { borderRadius: 4, cursor: "pointer", padding: 2, background: theme.bg.navIconsBg }, children: /* @__PURE__ */ jsx(ArrowLeftSolid, { size: 18 }) }) : /* @__PURE__ */ jsx(Center, { sx: { borderRadius: 4, padding: 2, background: theme.bg.navIconsBg }, children: pageItem.pageIcon ? /* @__PURE__ */ jsx(pageItem.pageIcon, { size: 18 }) : /* @__PURE__ */ jsx(Globe, { size: 18 }) }),
2748
+ /* @__PURE__ */ jsx(Text$1, { lh: 1, c: theme.text.overPicture, children: pageItem.pageTitle || "Unknown" })
2749
+ ] }),
2750
+ isAiBtnVisible && !isAiOpened && /* @__PURE__ */ jsx(
2751
+ Center,
2752
+ {
2753
+ sx: {
2754
+ cursor: "pointer",
2755
+ borderRadius: 8,
2756
+ transition: "background 0.15s",
2757
+ background: theme.neutral.transparent10,
2758
+ "&:hover": {
2759
+ background: theme.neutral.transparent30
2760
+ }
2761
+ },
2762
+ p: 4,
2763
+ onClick: onAiOpen,
2764
+ children: /* @__PURE__ */ jsx(Assistant, { size: 18, color: "primary" })
2765
+ }
2766
+ )
2767
+ ] }),
2768
+ 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)),
2769
+ roomCategories && roomCategories.length > 0 && /* @__PURE__ */ jsx(Stack$1, { gap: 8, mt: 16, children: roomCategories.map((category) => /* @__PURE__ */ jsx(RoomCategory, { category }, category.id)) })
2770
+ ] }),
2771
+ /* @__PURE__ */ jsx(Stack$1, { gap: 5, children: footerContent })
2772
+ ] })
2663
2773
  ] })
2664
2774
  ] }) }),
2665
2775
  /* @__PURE__ */ jsx(AppShell.Main, { children }),
@@ -5684,13 +5794,13 @@ function ActionButton({ onClick, left, right }) {
5684
5794
  }
5685
5795
  );
5686
5796
  }
5687
- const MainAction = lazy(() => import("./index-DFVmSv_s.js"));
5688
- const Header$1 = lazy(() => import("./index-DLS4Rlpw.js"));
5689
- const Content = lazy(() => import("./index-B1iDlIBb.js"));
5797
+ const MainAction = lazy(() => import("./index-BwGm7BDz.js"));
5798
+ const Header$1 = lazy(() => import("./index-D--aZB3M.js"));
5799
+ const Content = lazy(() => import("./index-BgMqOKWQ.js"));
5690
5800
  const Map = lazy(() => import("./index-D5Ufmf-s.js"));
5691
5801
  const CustomContent = lazy(() => import("./index-DsYjW_4y.js"));
5692
- const Assets = lazy(() => import("./index-DlJaYoXJ.js"));
5693
- const Actions = lazy(() => import("./index-C5Vs6UTu.js"));
5802
+ const Assets = lazy(() => import("./index-CJFj_oLr.js"));
5803
+ const Actions = lazy(() => import("./index-BUiJr7Uj.js"));
5694
5804
  const HOVER_BORDER_WIDTH = 1;
5695
5805
  function SodaCardCmp({ numSelected = 0, expanded = true, mainAction, header, content, map, customContent, customFooter, actions, assets, onClick }, ref) {
5696
5806
  const wrapperRef = useRef(null);
@@ -11005,4 +11115,4 @@ export {
11005
11115
  CardHero as y,
11006
11116
  CardSelector as z
11007
11117
  };
11008
- //# sourceMappingURL=components-CR3XazP1.js.map
11118
+ //# sourceMappingURL=components-C94tOtsd.js.map