@ixo/ui 0.1.7 → 0.1.9

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 (67) hide show
  1. package/dist/.vite/manifest.json +43 -43
  2. package/dist/components/AppShellNavigation/components/MenuItem.d.ts +2 -1
  3. package/dist/components/AppShellNavigation/components/MenuItem.d.ts.map +1 -1
  4. package/dist/components/AppShellNavigation/components/RoomCategory.d.ts +15 -4
  5. package/dist/components/AppShellNavigation/components/RoomCategory.d.ts.map +1 -1
  6. package/dist/components/AppShellNavigation/components/RoomItem.d.ts +10 -1
  7. package/dist/components/AppShellNavigation/components/RoomItem.d.ts.map +1 -1
  8. package/dist/components/AppShellNavigation/index.d.ts.map +1 -1
  9. package/dist/components/IconButton/index.d.ts +2 -0
  10. package/dist/components/IconButton/index.d.ts.map +1 -1
  11. package/dist/components/MoreMenu/components/Item/index.d.ts +1 -1
  12. package/dist/components/MoreMenu/components/Item/index.d.ts.map +1 -1
  13. package/dist/components/MoreMenu/components/Item/types.d.ts +8 -2
  14. package/dist/components/MoreMenu/components/Item/types.d.ts.map +1 -1
  15. package/dist/components/MoreMenu/index.d.ts +1 -1
  16. package/dist/components/MoreMenu/index.d.ts.map +1 -1
  17. package/dist/components/MoreMenu/types.d.ts +4 -2
  18. package/dist/components/MoreMenu/types.d.ts.map +1 -1
  19. package/dist/{components-BgEk60Ob.cjs → components-BDiiWelU.cjs} +188 -148
  20. package/dist/components-BDiiWelU.cjs.map +1 -0
  21. package/dist/{components-B_rD80NH.js → components-EXB_BUs5.js} +189 -149
  22. package/dist/components-EXB_BUs5.js.map +1 -0
  23. package/dist/export/components.cjs +1 -1
  24. package/dist/export/components.mjs +1 -1
  25. package/dist/{index-DOhTTpb1.js → index-2Qg0wBFO.js} +2 -2
  26. package/dist/{index-DOhTTpb1.js.map → index-2Qg0wBFO.js.map} +1 -1
  27. package/dist/{index-DiaMcybu.js → index-BHuoPnj7.js} +2 -2
  28. package/dist/{index-DiaMcybu.js.map → index-BHuoPnj7.js.map} +1 -1
  29. package/dist/{index-CTEU3j15.js → index-BKru_TQX.js} +3 -3
  30. package/dist/{index-CTEU3j15.js.map → index-BKru_TQX.js.map} +1 -1
  31. package/dist/{index-Bb5oD5S0.js → index-Be7UORTt.js} +2 -2
  32. package/dist/{index-Bb5oD5S0.js.map → index-Be7UORTt.js.map} +1 -1
  33. package/dist/{index-CJRQEBo0.cjs → index-BzEXuxSc.cjs} +3 -3
  34. package/dist/{index-CJRQEBo0.cjs.map → index-BzEXuxSc.cjs.map} +1 -1
  35. package/dist/{index-YQJXRZBs.js → index-CEb94eQ3.js} +2 -2
  36. package/dist/{index-YQJXRZBs.js.map → index-CEb94eQ3.js.map} +1 -1
  37. package/dist/{index-C8qu1Nag.js → index-CGLxKSPk.js} +2 -2
  38. package/dist/{index-C8qu1Nag.js.map → index-CGLxKSPk.js.map} +1 -1
  39. package/dist/{index-dGNR0pvK.cjs → index-CO6Ygcv-.cjs} +2 -2
  40. package/dist/{index-dGNR0pvK.cjs.map → index-CO6Ygcv-.cjs.map} +1 -1
  41. package/dist/{index-Bfq_mrjY.cjs → index-CTZnqmGU.cjs} +2 -2
  42. package/dist/{index-Bfq_mrjY.cjs.map → index-CTZnqmGU.cjs.map} +1 -1
  43. package/dist/{index-CcjXZeyr.cjs → index-Ch90kRkK.cjs} +2 -2
  44. package/dist/{index-CcjXZeyr.cjs.map → index-Ch90kRkK.cjs.map} +1 -1
  45. package/dist/{index-Iosewtvm.cjs → index-D1bGiH9L.cjs} +2 -2
  46. package/dist/{index-Iosewtvm.cjs.map → index-D1bGiH9L.cjs.map} +1 -1
  47. package/dist/{index-D3rssdnu.cjs → index-D771i3jp.cjs} +2 -2
  48. package/dist/{index-D3rssdnu.cjs.map → index-D771i3jp.cjs.map} +1 -1
  49. package/dist/{index-kV2fm9R3.cjs → index-DWUKXIMe.cjs} +2 -2
  50. package/dist/{index-kV2fm9R3.cjs.map → index-DWUKXIMe.cjs.map} +1 -1
  51. package/dist/{index-Yq2DRnv3.js → index-DccAmgX1.js} +2 -2
  52. package/dist/{index-Yq2DRnv3.js.map → index-DccAmgX1.js.map} +1 -1
  53. package/dist/{index-K66R2MRS.js → index-Dm6B7Yv-.js} +2 -2
  54. package/dist/{index-K66R2MRS.js.map → index-Dm6B7Yv-.js.map} +1 -1
  55. package/dist/{index-qjIpKWBJ.js → index-Dv_e6z8D.js} +2 -2
  56. package/dist/{index-qjIpKWBJ.js.map → index-Dv_e6z8D.js.map} +1 -1
  57. package/dist/{index-DFw-YGRB.cjs → index-ImM8dR3W.cjs} +3 -3
  58. package/dist/{index-DFw-YGRB.cjs.map → index-ImM8dR3W.cjs.map} +1 -1
  59. package/dist/{index-BJXmGwAC.cjs → index-LERt98FZ.cjs} +2 -2
  60. package/dist/{index-BJXmGwAC.cjs.map → index-LERt98FZ.cjs.map} +1 -1
  61. package/dist/{index-CYsfssFh.js → index-Lu5gXTPs.js} +3 -3
  62. package/dist/{index-CYsfssFh.js.map → index-Lu5gXTPs.js.map} +1 -1
  63. package/dist/{index-BO3dBb76.cjs → index-qHCPELWv.cjs} +2 -2
  64. package/dist/{index-BO3dBb76.cjs.map → index-qHCPELWv.cjs.map} +1 -1
  65. package/package.json +2 -1
  66. package/dist/components-B_rD80NH.js.map +0 -1
  67. package/dist/components-BgEk60Ob.cjs.map +0 -1
@@ -4,13 +4,14 @@ 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, b as getTransparentColor, L as Loading, P as PlusSolid, S as SearchSolid, c as Assistant, d as ArrowUpSolid, E as EllipsisVSolid, e as ArrowLeftSolid, f as Canvas, H as HistorySolid, U as User, h as AngleLeftSolid, M as MinusCircleSolid, i as SettingsBarSolid, G as Globe, D as Dashboard, j as Groups, k as UserCircleSolid, l as Assets$1, m as Claims, n as Accounts, o as LinkedResources, p as Proposals, I as ImpactCredits, q as GoTo, r as Share, s as PiePiece, t as ImpactCertificates, u as CommentDotsSolid, v as CommentAltSolid, w as MicrophoneSolid, x as Command, y as ArrowCircleRightSolid, z as Protocols, B as Investments, O as Oracles, F as Projects, J as Daos, K as Star, N as AngleRightSolid, Q as Expand, R as LeafSolid, T as ArrowDownSolid, V as ArrowRightSolid, W as Play, X as CheckCircle, Y as Events, Z as ThumbsUpSolid, _ as CommentsSolid, $ as CopySolid, a0 as Hourglass, a1 as Act, a2 as Info$1, a3 as ClaimsW, a4 as TachometerAltSolid, a5 as UserCogSolid, a6 as UsersSolid, a7 as EllipsisHSolid } from "./UsersSolid-BAHkDzh8.js";
5
5
  import { useState, useCallback, useRef, forwardRef, useEffect, Suspense, lazy, 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, Text as Text$1, Popover, Badge as Badge$1, Center, AppShell, Skeleton, Stack as Stack$1, Tooltip as Tooltip$4, CloseButton, Group, Burger, Divider, ScrollArea, Space, Overlay } from "@mantine/core";
7
+ import { Accordion as Accordion$1, Box, Image, Text as Text$1, Popover, Center, FocusTrap, Stack as Stack$1, Badge as Badge$1, AppShell, Skeleton, Tooltip as Tooltip$4, CloseButton, Group, Burger, Divider, ScrollArea, Space, Overlay } 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 { useMediaQuery, useResizeObserver, useHover, useDisclosure } from "@mantine/hooks";
12
12
  import { a as useLocalStorage, E as EventEmitter, u as useEventSubscribe } from "./useEventSubscribe-BuXZL79s.js";
13
13
  import { u as useUITheme } from "./useUITheme-7i8NJ2FG.js";
14
+ import { IconPlus } from "@tabler/icons-react";
14
15
  import Markdown from "react-markdown";
15
16
  import remarkGfm from "remark-gfm";
16
17
  import { useCombobox, useSelect } from "downshift";
@@ -822,8 +823,8 @@ function AccordionTable({
822
823
  }
823
824
  );
824
825
  }
825
- const Header$3 = lazy(() => import("./index-DOhTTpb1.js"));
826
- const Footer = lazy(() => import("./index-CTEU3j15.js"));
826
+ const Header$3 = lazy(() => import("./index-2Qg0wBFO.js"));
827
+ const Footer = lazy(() => import("./index-BKru_TQX.js"));
827
828
  function ActionCard({ header, content, footer, useHoverMode = false }) {
828
829
  const hasContent = !!content || !!footer;
829
830
  const initialVisibility = footer?.startHidden !== true;
@@ -907,7 +908,7 @@ function Loader({ size, color = "primary" }) {
907
908
  }
908
909
  const CARD_WIDTH$1 = 350;
909
910
  const CARD_HEADER_HEIGHT = 158;
910
- const Header$2 = lazy(() => import("./index-Bb5oD5S0.js"));
911
+ const Header$2 = lazy(() => import("./index-Be7UORTt.js"));
911
912
  function Card({ children, className, contentClassName, roundedBottom, noPadding = false, fullWidth = false, header, wrapperSx, onClick }) {
912
913
  const wrapperRef = useRef(null);
913
914
  const handleOnClick = useCallback(
@@ -1342,7 +1343,7 @@ function ModalSheet({ isOpen, children, hideHandler, zIndex, onRequestHide, onRe
1342
1343
  document.body
1343
1344
  );
1344
1345
  }
1345
- const Badge = lazy(() => import("./index-qjIpKWBJ.js"));
1346
+ const Badge = lazy(() => import("./index-Dv_e6z8D.js"));
1346
1347
  function ActionSheet({ children, isOpen, header, navMenu = void 0, onRequestHide, onRequestShow }) {
1347
1348
  const shadowScrollRef = useRef(null);
1348
1349
  const wrapperContentAreaRef = useRef(null);
@@ -1460,6 +1461,8 @@ function ActionSheet({ children, isOpen, header, navMenu = void 0, onRequestHide
1460
1461
  }
1461
1462
  ) });
1462
1463
  }
1464
+ const ICON_COLOR = "var(--mantine-color-neutralColor-8)";
1465
+ const icon = (Icon, size, color) => /* @__PURE__ */ jsx(Icon, { size: 18, color: color || ICON_COLOR });
1463
1466
  function IconButton({
1464
1467
  icon: Icon,
1465
1468
  onClick,
@@ -1921,8 +1924,8 @@ function HtmlRender({ content, className }) {
1921
1924
  const safeHTML = DOMPurify.sanitize(content, { FORBID_ATTR: ["style"] });
1922
1925
  return /* @__PURE__ */ jsx(StyleDOMApplier, { children: /* @__PURE__ */ jsx("div", { className, dangerouslySetInnerHTML: { __html: safeHTML } }) });
1923
1926
  }
1924
- function Item({ icon, label, disabled, active, onClick }) {
1925
- const IconComponent = icon;
1927
+ function Item({ icon: icon2, label, disabled, onClick }) {
1928
+ const IconComponent = icon2;
1926
1929
  return /* @__PURE__ */ jsx(
1927
1930
  "button",
1928
1931
  {
@@ -1930,9 +1933,9 @@ function Item({ icon, label, disabled, active, onClick }) {
1930
1933
  width: "100%",
1931
1934
  borderRadius: 4,
1932
1935
  padding: "4px 12px",
1933
- background: "var(--mantine-color-neutralColor-5)",
1936
+ background: "transparent",
1934
1937
  border: "none",
1935
- cursor: disabled ? "not-allowed" : "pointer",
1938
+ cursor: disabled ? "default" : "pointer",
1936
1939
  textAlign: "left",
1937
1940
  "&:hover": {
1938
1941
  backgroundColor: disabled ? void 0 : "var(--mantine-color-neutralColor-6)"
@@ -1941,22 +1944,13 @@ function Item({ icon, label, disabled, active, onClick }) {
1941
1944
  disabled,
1942
1945
  onClick,
1943
1946
  children: /* @__PURE__ */ jsxs(Flex, { align: "center", gap: 8, children: [
1944
- IconComponent && /* @__PURE__ */ jsx(IconComponent, { size: 16, color: "overPicture" }),
1945
- /* @__PURE__ */ jsx(
1946
- Typography.Text,
1947
- {
1948
- css: ({ fontSize }) => ({
1949
- fontSize: fontSize.xs,
1950
- color: disabled ? "var(--mantine-color-neutralColor-8)" : active ? "var(--mantine-color-neutralColor-8)" : "var(--mantine-color-neutralColor-8)"
1951
- }),
1952
- children: label
1953
- }
1954
- )
1947
+ IconComponent && /* @__PURE__ */ jsx(IconComponent, { size: 18, color: disabled ? "var(--mantine-color-neutralColor-7)" : "var(--mantine-color-neutralColor-8)" }),
1948
+ /* @__PURE__ */ jsx(Text$1, { c: disabled ? "var(--mantine-color-neutralColor-7)" : void 0, fz: 14, children: label })
1955
1949
  ] })
1956
1950
  }
1957
1951
  );
1958
1952
  }
1959
- function MoreMenu({ items, controlColor = "primary" }) {
1953
+ function MoreMenu({ items, controlColor = "primary", Icon }) {
1960
1954
  const [opened, setOpened] = useState(false);
1961
1955
  return /* @__PURE__ */ jsxs(
1962
1956
  Popover,
@@ -1967,36 +1961,22 @@ function MoreMenu({ items, controlColor = "primary" }) {
1967
1961
  styles: {
1968
1962
  dropdown: {
1969
1963
  background: "var(--mantine-color-neutralColor-4)",
1970
- border: "none",
1971
1964
  padding: "12px 4px",
1965
+ borderColor: "var(--mantine-color-neutralColor-6)",
1972
1966
  marginLeft: 10
1973
1967
  }
1974
1968
  },
1969
+ radius: 16,
1975
1970
  trapFocus: true,
1976
1971
  width: 200,
1977
1972
  position: "right-start",
1978
1973
  shadow: "md",
1979
1974
  children: [
1980
- /* @__PURE__ */ jsx(Popover.Target, { children: /* @__PURE__ */ jsx(
1981
- "button",
1982
- {
1983
- css: {
1984
- background: "none",
1985
- border: "none",
1986
- padding: 0,
1987
- cursor: "pointer",
1988
- position: "relative",
1989
- display: "flex",
1990
- alignItems: "center",
1991
- justifyContent: "center"
1992
- },
1993
- onClick: () => setOpened((o) => !o),
1994
- children: /* @__PURE__ */ jsx(EllipsisVSolid, { size: 20, color: controlColor })
1995
- }
1996
- ) }),
1975
+ /* @__PURE__ */ jsx(Popover.Target, { children: /* @__PURE__ */ jsx(Center, { onClick: () => setOpened((o) => !o), children: Icon || /* @__PURE__ */ jsx(EllipsisVSolid, { size: 20, color: controlColor }) }) }),
1997
1976
  /* @__PURE__ */ jsxs(Popover.Dropdown, { children: [
1998
- /* @__PURE__ */ jsx(Text$1, { ml: 12, mb: 10, fz: 12, c: "neutralColor.8", children: "Page" }),
1999
- items.map((item) => /* @__PURE__ */ jsx(
1977
+ /* @__PURE__ */ jsx(FocusTrap.InitialFocus, {}),
1978
+ /* @__PURE__ */ jsx(Text$1, { ml: 12, mb: 10, fz: 14, c: "neutralColor.7", children: "Actions" }),
1979
+ /* @__PURE__ */ jsx(Stack$1, { gap: "4px", children: items.map((item) => /* @__PURE__ */ jsx(
2000
1980
  Item,
2001
1981
  {
2002
1982
  icon: item.icon,
@@ -2009,7 +1989,7 @@ function MoreMenu({ items, controlColor = "primary" }) {
2009
1989
  }
2010
1990
  },
2011
1991
  item.label
2012
- ))
1992
+ )) })
2013
1993
  ] })
2014
1994
  ]
2015
1995
  }
@@ -2045,7 +2025,7 @@ function AIResponse({ content, agentName, menu }) {
2045
2025
  }
2046
2026
  );
2047
2027
  }
2048
- function AIInputBar({ placeholder, icon, disabledInput, disabledButton, valueInput, inInputChange, onButtonClick }) {
2028
+ function AIInputBar({ placeholder, icon: icon2, disabledInput, disabledButton, valueInput, inInputChange, onButtonClick }) {
2049
2029
  return /* @__PURE__ */ jsx(
2050
2030
  "div",
2051
2031
  {
@@ -2087,7 +2067,7 @@ function AIInputBar({ placeholder, icon, disabledInput, disabledButton, valueInp
2087
2067
  })
2088
2068
  }
2089
2069
  ),
2090
- /* @__PURE__ */ jsx(RoundedButton, { icon: icon ?? Assistant, label: "Ask", active: true, disabled: disabledButton, onClick: onButtonClick })
2070
+ /* @__PURE__ */ jsx(RoundedButton, { icon: icon2 ?? Assistant, label: "Ask", active: true, disabled: disabledButton, onClick: onButtonClick })
2091
2071
  ] })
2092
2072
  }
2093
2073
  );
@@ -2167,8 +2147,8 @@ function Avatar({ src, rounded = true, size = 62, did }) {
2167
2147
  if (jazzRef.current) {
2168
2148
  jazzRef.current.innerHTML = "";
2169
2149
  const seed = Array.from(did).reduce((acc, char) => acc + char.charCodeAt(0), 0);
2170
- const icon = jazzicon(size, seed);
2171
- jazzRef.current.appendChild(icon);
2150
+ const icon2 = jazzicon(size, seed);
2151
+ jazzRef.current.appendChild(icon2);
2172
2152
  }
2173
2153
  } catch (error) {
2174
2154
  console.error("Failed to load jazzicon:", error);
@@ -2343,33 +2323,92 @@ function NavigationItemSkeleton() {
2343
2323
  }
2344
2324
  );
2345
2325
  }
2326
+ function cutText(text, length, ending = "…") {
2327
+ if (!length || text.length <= length) {
2328
+ return text;
2329
+ }
2330
+ const words = text.split(" ");
2331
+ const endingSize = ending.length;
2332
+ let result = "";
2333
+ for (const word of words) {
2334
+ const newValue = result + word + " ";
2335
+ if (newValue.length + endingSize - 1 > length) {
2336
+ break;
2337
+ }
2338
+ result = newValue;
2339
+ }
2340
+ return result.trim() + ending;
2341
+ }
2342
+ function shortStr(str, threshold = 30, saveSymbolsAtTheEnd = 10, insert = "...") {
2343
+ if (!str) return str;
2344
+ const len = str.length;
2345
+ if (len <= threshold) return str;
2346
+ const ending = saveSymbolsAtTheEnd ? str.slice(-1 * saveSymbolsAtTheEnd) : "";
2347
+ const beginning = str.substring(0, threshold - saveSymbolsAtTheEnd - insert.length);
2348
+ return `${beginning}${insert}${ending}`;
2349
+ }
2350
+ function carbonToUSD(carbon) {
2351
+ return (carbon * 0.03).toLocaleString(void 0, {
2352
+ minimumFractionDigits: 0,
2353
+ maximumFractionDigits: 6
2354
+ });
2355
+ }
2346
2356
  function RoomItem({ room }) {
2347
2357
  const { hovered, ref } = useHover();
2348
- return /* @__PURE__ */ jsxs(
2358
+ const renderIcon = () => {
2359
+ if (!room.icon) return null;
2360
+ if (typeof room.icon === "string") {
2361
+ return /* @__PURE__ */ jsx(Image, { w: 20, h: 20, src: room.icon, radius: "50%" });
2362
+ } else if (typeof room.icon === "function") {
2363
+ const IconComponent = room.icon;
2364
+ return /* @__PURE__ */ jsx(IconComponent, { size: 20, color: "secondary" });
2365
+ } else {
2366
+ return room.icon;
2367
+ }
2368
+ };
2369
+ const displayName = shortStr(room.name, 19, 0) || room.name;
2370
+ const shouldShowTooltip = room.name.length > 19;
2371
+ const content = /* @__PURE__ */ jsxs(
2349
2372
  Flex,
2350
2373
  {
2351
2374
  ref,
2352
2375
  align: "center",
2376
+ justify: "space-between",
2353
2377
  gap: 8,
2354
2378
  px: 12,
2355
- py: 4,
2356
- ml: 16,
2379
+ py: 6,
2357
2380
  style: {
2358
2381
  cursor: "pointer",
2359
2382
  borderRadius: 6,
2360
- backgroundColor: room.isActive || hovered ? "var(--mantine-color-neutralColor-5)" : "transparent",
2361
- transform: hovered ? "translateX(2px)" : "translateX(0px)",
2383
+ backgroundColor: room.isActive || hovered ? "var(--mantine-color-neutralColor-6)" : "transparent",
2362
2384
  transition: "all 0.15s ease"
2363
2385
  },
2364
2386
  onClick: () => room.onClick(room.id),
2365
2387
  children: [
2366
- /* @__PURE__ */ jsx(room.icon, { size: 16, color: "secondary" }),
2367
- /* @__PURE__ */ jsx(Text$1, { fz: 13, c: "neutralColor.8", children: room.name })
2388
+ /* @__PURE__ */ jsxs(Flex, { align: "center", gap: 8, children: [
2389
+ renderIcon(),
2390
+ /* @__PURE__ */ jsx(Text$1, { c: room.isActive ? "neutralColor.8" : "neutralColor.7", fz: 14, children: displayName })
2391
+ ] }),
2392
+ hovered && /* @__PURE__ */ jsxs(Flex, { align: "center", gap: 4, children: [
2393
+ room.onActionClick && /* @__PURE__ */ jsx(Tooltip$4, { label: room.onActionClick.label, children: /* @__PURE__ */ jsx(
2394
+ Center,
2395
+ {
2396
+ onClick: (e) => {
2397
+ e.stopPropagation();
2398
+ room.onActionClick?.onClick();
2399
+ },
2400
+ style: { cursor: "pointer" },
2401
+ children: icon(room.onActionClick.icon, void 0, "var(--mantine-color-neutralColor-7)")
2402
+ }
2403
+ ) }),
2404
+ room.tag && room.tagIcon && /* @__PURE__ */ jsx(Tooltip$4, { label: room.tag, children: icon(room.tagIcon, void 0, "var(--mantine-color-neutralColor-7)") })
2405
+ ] })
2368
2406
  ]
2369
2407
  }
2370
2408
  );
2409
+ return shouldShowTooltip ? /* @__PURE__ */ jsx(Tooltip$4, { label: room.name, children: /* @__PURE__ */ jsx("span", { children: content }) }) : content;
2371
2410
  }
2372
- function RoomCategory({ category }) {
2411
+ function RoomCategory({ name, rooms, actions, primaryActions }) {
2373
2412
  const { hovered, ref } = useHover();
2374
2413
  const { value, toggle: toggle2 } = useToggle(false);
2375
2414
  return /* @__PURE__ */ jsxs(Stack$1, { gap: 2, children: [
@@ -2380,7 +2419,7 @@ function RoomCategory({ category }) {
2380
2419
  align: "center",
2381
2420
  justify: "space-between",
2382
2421
  px: 12,
2383
- py: 4,
2422
+ py: 6,
2384
2423
  style: {
2385
2424
  cursor: "pointer",
2386
2425
  borderRadius: 6,
@@ -2389,21 +2428,53 @@ function RoomCategory({ category }) {
2389
2428
  },
2390
2429
  onClick: toggle2,
2391
2430
  children: [
2392
- /* @__PURE__ */ jsx(Text$1, { fz: 12, c: "neutralColor.7", children: category.name }),
2393
- /* @__PURE__ */ jsx(
2394
- Center,
2395
- {
2396
- sx: {
2397
- transform: value ? "rotate(-90deg)" : "rotate(0deg)",
2398
- transition: "transform 0.2s ease"
2399
- },
2400
- children: /* @__PURE__ */ jsx(AngleLeftSolid, { size: 12, color: "secondary" })
2401
- }
2402
- )
2431
+ /* @__PURE__ */ jsx(Text$1, { fz: 12, tt: "capitalize", children: name }),
2432
+ /* @__PURE__ */ jsxs(Flex, { align: "center", gap: 8, children: [
2433
+ primaryActions && primaryActions.length > 0 && /* @__PURE__ */ jsx(
2434
+ Center,
2435
+ {
2436
+ onClick: (e) => e.stopPropagation(),
2437
+ sx: {
2438
+ cursor: "pointer",
2439
+ borderRadius: 4,
2440
+ transition: "transform 0.2s ease",
2441
+ "&:hover": {
2442
+ background: "var(--mantine-color-neutralColor-5)"
2443
+ }
2444
+ },
2445
+ children: /* @__PURE__ */ jsx(MoreMenu, { Icon: icon(IconPlus), items: primaryActions })
2446
+ }
2447
+ ),
2448
+ actions && actions.length > 0 && /* @__PURE__ */ jsx(
2449
+ Center,
2450
+ {
2451
+ onClick: (e) => e.stopPropagation(),
2452
+ sx: {
2453
+ cursor: "pointer",
2454
+ borderRadius: 4,
2455
+ transition: "transform 0.2s ease",
2456
+ "&:hover": {
2457
+ background: "var(--mantine-color-neutralColor-5)"
2458
+ }
2459
+ },
2460
+ children: /* @__PURE__ */ jsx(MoreMenu, { items: actions, controlColor: "secondary" })
2461
+ }
2462
+ ),
2463
+ /* @__PURE__ */ jsx(
2464
+ Center,
2465
+ {
2466
+ sx: {
2467
+ transform: value ? "rotate(-90deg)" : "rotate(0deg)",
2468
+ transition: "transform 0.2s ease"
2469
+ },
2470
+ children: /* @__PURE__ */ jsx(AngleLeftSolid, { size: 12, color: "secondary" })
2471
+ }
2472
+ )
2473
+ ] })
2403
2474
  ]
2404
2475
  }
2405
2476
  ),
2406
- !value && /* @__PURE__ */ jsx(Stack$1, { gap: 1, children: category.rooms.map((room) => /* @__PURE__ */ jsx(RoomItem, { room }, room.id)) })
2477
+ !value && /* @__PURE__ */ jsx(Stack$1, { gap: 5, children: rooms?.map((room) => /* @__PURE__ */ jsx(RoomItem, { room }, room.id)) })
2407
2478
  ] });
2408
2479
  }
2409
2480
  function hasActiveDescendant(children) {
@@ -2484,7 +2555,6 @@ function MenuItem({ item, onMenuItemClick, depth = 0 }) {
2484
2555
  cursor: "pointer",
2485
2556
  borderRadius: 8,
2486
2557
  backgroundColor: shouldShowActiveStyle ? "var(--mantine-color-neutralColor-6)" : hovered ? "var(--mantine-color-neutralColor-6)" : "transparent",
2487
- transform: hovered ? "translateX(4px)" : "translateX(0px)",
2488
2558
  transition: "all 0.2s ease"
2489
2559
  },
2490
2560
  onClick: handleItemClick,
@@ -2529,7 +2599,7 @@ function SelectedIndicator() {
2529
2599
  }
2530
2600
  );
2531
2601
  }
2532
- function SpaceItem({ icon, id, name, selectedSpace, onClick }) {
2602
+ function SpaceItem({ icon: icon2, id, name, selectedSpace, onClick }) {
2533
2603
  const { hovered, ref } = useHover();
2534
2604
  const isSelected = selectedSpace === id;
2535
2605
  return /* @__PURE__ */ jsxs(
@@ -2546,42 +2616,12 @@ function SpaceItem({ icon, id, name, selectedSpace, onClick }) {
2546
2616
  w: 40,
2547
2617
  onClick: () => onClick(id),
2548
2618
  children: [
2549
- /* @__PURE__ */ jsx(Tooltip$4, { label: name, ml: 5, fz: 12, position: "right", withArrow: true, children: typeof icon === "string" ? /* @__PURE__ */ jsx(Image, { radius: 24, src: icon, w: 32, h: 32 }) : icon }),
2619
+ /* @__PURE__ */ jsx(Tooltip$4, { label: name, ml: 5, fz: 12, position: "right", withArrow: true, children: typeof icon2 === "string" ? /* @__PURE__ */ jsx(Image, { radius: 24, src: icon2, w: 32, h: 32 }) : icon2 }),
2550
2620
  isSelected && /* @__PURE__ */ jsx(SelectedIndicator, {})
2551
2621
  ]
2552
2622
  }
2553
2623
  );
2554
2624
  }
2555
- function cutText(text, length, ending = "…") {
2556
- if (!length || text.length <= length) {
2557
- return text;
2558
- }
2559
- const words = text.split(" ");
2560
- const endingSize = ending.length;
2561
- let result = "";
2562
- for (const word of words) {
2563
- const newValue = result + word + " ";
2564
- if (newValue.length + endingSize - 1 > length) {
2565
- break;
2566
- }
2567
- result = newValue;
2568
- }
2569
- return result.trim() + ending;
2570
- }
2571
- function shortStr(str, threshold = 30, saveSymbolsAtTheEnd = 10, insert = "...") {
2572
- if (!str) return str;
2573
- const len = str.length;
2574
- if (len <= threshold) return str;
2575
- const ending = saveSymbolsAtTheEnd ? str.slice(-1 * saveSymbolsAtTheEnd) : "";
2576
- const beginning = str.substring(0, threshold - saveSymbolsAtTheEnd - insert.length);
2577
- return `${beginning}${insert}${ending}`;
2578
- }
2579
- function carbonToUSD(carbon) {
2580
- return (carbon * 0.03).toLocaleString(void 0, {
2581
- minimumFractionDigits: 0,
2582
- maximumFractionDigits: 6
2583
- });
2584
- }
2585
2625
  function MobileBurger({ avatarIcon, isOpened, onClick }) {
2586
2626
  if (isOpened) {
2587
2627
  return /* @__PURE__ */ jsx(CloseButton, { hiddenFrom: "sm", pos: "absolute", w: 28, sx: { borderRadius: 8, zIndex: 100 }, h: 28, onClick, right: 12, top: 12, bg: "neutralColor.4" });
@@ -2627,7 +2667,7 @@ function AppShellNavigation({
2627
2667
  const [asideWidth, setAsideWidth] = useState(450);
2628
2668
  const isMobile = useMediaQuery("(max-width: 48em)");
2629
2669
  const [mobileOpened, { toggle: toggleMobile }] = useDisclosure();
2630
- const [desktopOpened, { toggle: toggleDesktop }] = useDisclosure(true);
2670
+ const [desktopOpened] = useDisclosure(true);
2631
2671
  const [isSplitResizing, setIsSplitResizing] = useState(false);
2632
2672
  const isSplitResizingRef = useRef(false);
2633
2673
  const mainContainerRef = useRef(null);
@@ -2701,7 +2741,7 @@ function AppShellNavigation({
2701
2741
  const handleNavbarMouseMove = useCallback(
2702
2742
  (e) => {
2703
2743
  if (!isNavbarResizingRef.current) return;
2704
- const minWidth = isAiOpened ? 450 : 300;
2744
+ const minWidth = isAiOpened ? 450 : 330;
2705
2745
  const maxWidth = 700;
2706
2746
  const newWidth = Math.min(Math.max(e.clientX, minWidth), maxWidth);
2707
2747
  if (isAiOpened) {
@@ -2735,7 +2775,7 @@ function AppShellNavigation({
2735
2775
  useEffect(() => {
2736
2776
  const handleWindowResize = () => {
2737
2777
  const maxWidth = 700;
2738
- const minWidth = isAiOpened ? 450 : 300;
2778
+ const minWidth = isAiOpened ? 450 : 330;
2739
2779
  const currentWidth = isAiOpened ? navbarWidthAiOpen : navbarWidthAiClosed;
2740
2780
  const setter = isAiOpened ? setNavbarWidthAiOpen : setNavbarWidthAiClosed;
2741
2781
  if (currentWidth > maxWidth) {
@@ -2830,7 +2870,7 @@ function AppShellNavigation({
2830
2870
  paddingRight: 8
2831
2871
  }
2832
2872
  },
2833
- children: /* @__PURE__ */ jsx(Stack$1, { align: "center", gap: 8, children: spaces.map(({ icon, id, name, onClick }) => /* @__PURE__ */ jsx(SpaceItem, { selectedSpace, icon, name, id, onClick }, id)) })
2873
+ children: /* @__PURE__ */ jsx(Stack$1, { align: "center", gap: 8, children: spaces.map(({ icon: icon2, id, name, onClick }) => /* @__PURE__ */ jsx(SpaceItem, { selectedSpace, icon: icon2, name, id, onClick }, id)) })
2834
2874
  }
2835
2875
  )
2836
2876
  ] }),
@@ -2842,28 +2882,28 @@ function AppShellNavigation({
2842
2882
  ] })
2843
2883
  ] }),
2844
2884
  isAiOpened && !isMobile && aiNavbarContent,
2845
- !isAiOpened && /* @__PURE__ */ jsxs(Stack$1, { justify: "space-between", w: "100%", pt: 16, pb: 10, px: 12, children: [
2846
- /* @__PURE__ */ jsxs(Stack$1, { gap: 5, children: [
2847
- /* @__PURE__ */ jsxs(Flex, { mb: 24, style: { width: "100%" }, justify: "space-between", align: "center", children: [
2848
- /* @__PURE__ */ jsx(Flex, { align: "center", gap: "10px", children: /* @__PURE__ */ jsx(Tooltip$4, { label: pageItem.pageTitle || "Unknown", disabled: !isTitleOverflowing, position: "bottom", withArrow: true, children: /* @__PURE__ */ jsx(Text$1, { lh: 1, c: "neutralColor.8", children: isTitleOverflowing ? shortStr(pageItem.pageTitle, 21, 0) : pageItem.pageTitle || "Unknown" }) }) }),
2849
- isAiBtnVisible && !isAiOpened && !isMobile && /* @__PURE__ */ jsx(
2850
- Center,
2851
- {
2852
- sx: {
2853
- cursor: "pointer",
2854
- borderRadius: 8,
2855
- transition: "background 0.15s",
2856
- background: "var(--mantine-color-neutralColor-5)",
2857
- "&:hover": {
2858
- background: "var(--mantine-color-neutralColor-6)"
2859
- }
2860
- },
2861
- p: 4,
2862
- onClick: onAiOpen,
2863
- children: /* @__PURE__ */ jsx(Assistant, { size: 18, color: "primary" })
2864
- }
2865
- )
2866
- ] }),
2885
+ !isAiOpened && /* @__PURE__ */ jsxs(Box, { w: "100%", style: { height: "100%", display: "flex", flexDirection: "column" }, children: [
2886
+ /* @__PURE__ */ jsx(AppShell.Section, { px: 12, pt: 16, children: /* @__PURE__ */ jsxs(Flex, { mb: 24, style: { width: "100%" }, justify: "space-between", align: "center", children: [
2887
+ /* @__PURE__ */ jsx(Flex, { align: "center", gap: "10px", children: /* @__PURE__ */ jsx(Tooltip$4, { label: pageItem.pageTitle || "Unknown", disabled: !isTitleOverflowing, position: "bottom", withArrow: true, children: /* @__PURE__ */ jsx(Text$1, { lh: 1, c: "neutralColor.8", children: isTitleOverflowing ? shortStr(pageItem.pageTitle, 21, 0) : pageItem.pageTitle || "Unknown" }) }) }),
2888
+ isAiBtnVisible && !isAiOpened && !isMobile && /* @__PURE__ */ jsx(
2889
+ Center,
2890
+ {
2891
+ sx: {
2892
+ cursor: "pointer",
2893
+ borderRadius: 8,
2894
+ transition: "background 0.15s",
2895
+ background: "var(--mantine-color-neutralColor-5)",
2896
+ "&:hover": {
2897
+ background: "var(--mantine-color-neutralColor-6)"
2898
+ }
2899
+ },
2900
+ p: 4,
2901
+ onClick: onAiOpen,
2902
+ children: /* @__PURE__ */ jsx(Assistant, { size: 18, color: "primary" })
2903
+ }
2904
+ )
2905
+ ] }) }),
2906
+ /* @__PURE__ */ jsx(AppShell.Section, { grow: true, component: ScrollArea, scrollbarSize: 5, sx: { overflowX: "hidden" }, px: 12, children: /* @__PURE__ */ jsxs(Stack$1, { gap: 5, children: [
2867
2907
  loading ? /* @__PURE__ */ jsx(Stack$1, { gap: 5, children: Array.from({ length: 6 }).map((_, idx) => /* @__PURE__ */ jsx(NavigationItemSkeleton, {}, idx)) }) : menuItems?.map((item, index) => {
2868
2908
  if (index !== 0 && index === separator) {
2869
2909
  return /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -2873,9 +2913,9 @@ function AppShellNavigation({
2873
2913
  }
2874
2914
  return /* @__PURE__ */ jsx(MenuItem, { onMenuItemClick, item }, item.id);
2875
2915
  }),
2876
- roomCategories && roomCategories.length > 0 && /* @__PURE__ */ jsx(Stack$1, { gap: 8, mt: 16, children: roomCategories.map((category) => /* @__PURE__ */ jsx(RoomCategory, { category }, category.id)) })
2877
- ] }),
2878
- /* @__PURE__ */ jsx(Stack$1, { gap: 5, children: footerContent })
2916
+ roomCategories && roomCategories.length > 0 && /* @__PURE__ */ jsx(Stack$1, { gap: 8, mt: 16, children: roomCategories.map(({ id, name, actions, rooms, primaryActions: onAddClick }) => /* @__PURE__ */ jsx(RoomCategory, { id, name, actions, rooms, primaryActions: onAddClick }, id)) })
2917
+ ] }) }),
2918
+ footerContent && /* @__PURE__ */ jsx(AppShell.Section, { px: 12, py: 10, children: /* @__PURE__ */ jsx(Stack$1, { gap: 5, children: footerContent }) })
2879
2919
  ] })
2880
2920
  ] })
2881
2921
  ] }) }),
@@ -5354,7 +5394,7 @@ function ImageIcon({ source: Source, fallback: Fallback, size = 32, iconColor =
5354
5394
  }
5355
5395
  return isString(Source) ? /* @__PURE__ */ jsx("img", { src: Source, draggable: false, width: size, height: size, css: { borderRadius: size, objectFit: "cover" } }) : /* @__PURE__ */ jsx(Source, { size, color: iconColor });
5356
5396
  }
5357
- function Value({ icon, label, value }) {
5397
+ function Value({ icon: icon2, label, value }) {
5358
5398
  return /* @__PURE__ */ jsxs(
5359
5399
  "div",
5360
5400
  {
@@ -5368,7 +5408,7 @@ function Value({ icon, label, value }) {
5368
5408
  alignItems: "center"
5369
5409
  }),
5370
5410
  children: [
5371
- /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(ImageIcon, { source: icon, size: 32, iconColor: "primary" }) }),
5411
+ /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(ImageIcon, { source: icon2, size: 32, iconColor: "primary" }) }),
5372
5412
  /* @__PURE__ */ jsxs(Spacer, { vertical: true, distance: 0, alignItems: "start", children: [
5373
5413
  /* @__PURE__ */ jsx(Typography.Text, { color: "text", size: "s", children: label }),
5374
5414
  /* @__PURE__ */ jsx(Typography.Text, { color: "secondary", size: "xs", children: value })
@@ -6009,13 +6049,13 @@ function ActionButton({ onClick, left, right }) {
6009
6049
  }
6010
6050
  );
6011
6051
  }
6012
- const MainAction = lazy(() => import("./index-Yq2DRnv3.js"));
6013
- const Header$1 = lazy(() => import("./index-YQJXRZBs.js"));
6014
- const Content = lazy(() => import("./index-K66R2MRS.js"));
6052
+ const MainAction = lazy(() => import("./index-DccAmgX1.js"));
6053
+ const Header$1 = lazy(() => import("./index-CEb94eQ3.js"));
6054
+ const Content = lazy(() => import("./index-Dm6B7Yv-.js"));
6015
6055
  const Map = lazy(() => import("./index-D5Ufmf-s.js"));
6016
6056
  const CustomContent = lazy(() => import("./index-DsYjW_4y.js"));
6017
- const Assets = lazy(() => import("./index-DiaMcybu.js"));
6018
- const Actions = lazy(() => import("./index-CYsfssFh.js"));
6057
+ const Assets = lazy(() => import("./index-BHuoPnj7.js"));
6058
+ const Actions = lazy(() => import("./index-Lu5gXTPs.js"));
6019
6059
  const HOVER_BORDER_WIDTH = 1;
6020
6060
  function SodaCardCmp({ numSelected = 0, expanded = true, mainAction, header, content, map, customContent, customFooter, actions, assets, onClick }, ref) {
6021
6061
  const wrapperRef = useRef(null);
@@ -6315,7 +6355,7 @@ function AssetInfo({
6315
6355
  rightTitleColor = "text",
6316
6356
  rightSubtitle,
6317
6357
  rightSubtitleColor = "focusSecondary",
6318
- icon
6358
+ icon: icon2
6319
6359
  }) {
6320
6360
  const theme = useTheme();
6321
6361
  return /* @__PURE__ */ jsxs(
@@ -6330,19 +6370,19 @@ function AssetInfo({
6330
6370
  justifyContent: "space-between",
6331
6371
  children: [
6332
6372
  /* @__PURE__ */ jsxs(Spacer, { children: [
6333
- icon && /* @__PURE__ */ jsx(
6373
+ icon2 && /* @__PURE__ */ jsx(
6334
6374
  "div",
6335
6375
  {
6336
6376
  css: ({ radius }) => ({
6337
6377
  width: 32,
6338
6378
  height: 32,
6339
6379
  borderRadius: radius.small / 2,
6340
- backgroundColor: getElementColor(theme, icon.bg),
6380
+ backgroundColor: getElementColor(theme, icon2.bg),
6341
6381
  display: "flex",
6342
6382
  alignItems: "center",
6343
6383
  justifyContent: "center"
6344
6384
  }),
6345
- children: /* @__PURE__ */ jsx(icon.icon, { color: "overPicture" })
6385
+ children: /* @__PURE__ */ jsx(icon2.icon, { color: "overPicture" })
6346
6386
  }
6347
6387
  ),
6348
6388
  /* @__PURE__ */ jsx(Info, { align: "start", title: leftTitle, subtitle: leftSubtitle, titleColor: leftTitleColor, subtitleColor: leftSubtitleColor })
@@ -7048,7 +7088,7 @@ function ModalSearch({
7048
7088
  )
7049
7089
  ] }) });
7050
7090
  }
7051
- function Protocol({ icon, name, category, selected, onClick }) {
7091
+ function Protocol({ icon: icon2, name, category, selected, onClick }) {
7052
7092
  return /* @__PURE__ */ jsxs(
7053
7093
  "button",
7054
7094
  {
@@ -7098,7 +7138,7 @@ function Protocol({ icon, name, category, selected, onClick }) {
7098
7138
  /* @__PURE__ */ jsx(Typography.Paragraph, { size: "regular", children: name }),
7099
7139
  /* @__PURE__ */ jsx(Typography.Paragraph, { color: "focusSecondary", size: "xs", children: category })
7100
7140
  ] }),
7101
- /* @__PURE__ */ jsx(ImageIcon, { source: icon, size: 32, iconColor: "secondary" })
7141
+ /* @__PURE__ */ jsx(ImageIcon, { source: icon2, size: 32, iconColor: "secondary" })
7102
7142
  ]
7103
7143
  }
7104
7144
  )
@@ -7126,7 +7166,7 @@ function OracleProtocolsSelection({ items }) {
7126
7166
  items.find((item) => item.selected) ? /* @__PURE__ */ jsx(Typography.Text, { color: "focusSecondary", children: "Protocol Selected" }) : null
7127
7167
  ] });
7128
7168
  }
7129
- function TagButton({ value, icon, onClick }) {
7169
+ function TagButton({ value, icon: icon2, onClick }) {
7130
7170
  return /* @__PURE__ */ jsx(
7131
7171
  "button",
7132
7172
  {
@@ -7142,7 +7182,7 @@ function TagButton({ value, icon, onClick }) {
7142
7182
  backgroundColor: colors.focusTransparent10
7143
7183
  }
7144
7184
  }),
7145
- children: /* @__PURE__ */ jsx(Tag, { value, icon, textColor: "focusSecondary" })
7185
+ children: /* @__PURE__ */ jsx(Tag, { value, icon: icon2, textColor: "focusSecondary" })
7146
7186
  }
7147
7187
  );
7148
7188
  }
@@ -7332,7 +7372,7 @@ function humanizeNumber(value) {
7332
7372
  function humanizeTimestamp(timestamp) {
7333
7373
  return dayjs(timestamp).fromNow();
7334
7374
  }
7335
- function InteractionButton({ icon, active, total, onClick }) {
7375
+ function InteractionButton({ icon: icon2, active, total, onClick }) {
7336
7376
  return /* @__PURE__ */ jsx(
7337
7377
  "button",
7338
7378
  {
@@ -7348,7 +7388,7 @@ function InteractionButton({ icon, active, total, onClick }) {
7348
7388
  {
7349
7389
  value: humanizeNumber(total),
7350
7390
  textColor: active ? "primary" : "secondary",
7351
- icon,
7391
+ icon: icon2,
7352
7392
  css: ({ transition, colors }) => ({
7353
7393
  transition: transition.duration,
7354
7394
  "&:hover": {
@@ -7786,7 +7826,7 @@ function ColumnText({ title, subtitle, align = "left" }) {
7786
7826
  }
7787
7827
  );
7788
7828
  }
7789
- function ServiceOffering({ icon, leftText, leftDescription, centerText, centerDescription, rightText, rightDescription, onClick }) {
7829
+ function ServiceOffering({ icon: icon2, leftText, leftDescription, centerText, centerDescription, rightText, rightDescription, onClick }) {
7790
7830
  return /* @__PURE__ */ jsxs(
7791
7831
  "div",
7792
7832
  {
@@ -7852,7 +7892,7 @@ function ServiceOffering({ icon, leftText, leftDescription, centerText, centerDe
7852
7892
  alignItems: "center"
7853
7893
  }),
7854
7894
  children: [
7855
- /* @__PURE__ */ jsx(ImageIcon, { size: 32, source: icon }),
7895
+ /* @__PURE__ */ jsx(ImageIcon, { size: 32, source: icon2 }),
7856
7896
  /* @__PURE__ */ jsx(ColumnText, { title: leftText, subtitle: leftDescription })
7857
7897
  ]
7858
7898
  }
@@ -11292,4 +11332,4 @@ export {
11292
11332
  CardHero as y,
11293
11333
  CardSelector as z
11294
11334
  };
11295
- //# sourceMappingURL=components-B_rD80NH.js.map
11335
+ //# sourceMappingURL=components-EXB_BUs5.js.map