@ixo/ui 0.1.6 → 0.1.8

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 (68) hide show
  1. package/dist/.vite/manifest.json +31 -31
  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 +10 -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.map +1 -1
  16. package/dist/components/MoreMenu/types.d.ts +2 -2
  17. package/dist/components/MoreMenu/types.d.ts.map +1 -1
  18. package/dist/{components-Bhg-kj6Z.js → components-BTh3OZP_.js} +182 -124
  19. package/dist/components-BTh3OZP_.js.map +1 -0
  20. package/dist/{components-YkshqT-o.cjs → components-t3g1EGWM.cjs} +181 -123
  21. package/dist/components-t3g1EGWM.cjs.map +1 -0
  22. package/dist/export/components.cjs +1 -1
  23. package/dist/export/components.mjs +1 -1
  24. package/dist/{index-Bgi4k5s-.cjs → index-B54JveXj.cjs} +2 -2
  25. package/dist/{index-Bgi4k5s-.cjs.map → index-B54JveXj.cjs.map} +1 -1
  26. package/dist/{index-P3KEgBhv.cjs → index-BJPFbQjO.cjs} +2 -2
  27. package/dist/{index-P3KEgBhv.cjs.map → index-BJPFbQjO.cjs.map} +1 -1
  28. package/dist/{index-CHOB1QkU.cjs → index-BQg7t5mI.cjs} +2 -2
  29. package/dist/{index-CHOB1QkU.cjs.map → index-BQg7t5mI.cjs.map} +1 -1
  30. package/dist/{index-CskX6vn2.js → index-BVV0ucIw.js} +2 -2
  31. package/dist/{index-CskX6vn2.js.map → index-BVV0ucIw.js.map} +1 -1
  32. package/dist/{index-CR8fPC2b.cjs → index-B_aWrB-9.cjs} +2 -2
  33. package/dist/{index-CR8fPC2b.cjs.map → index-B_aWrB-9.cjs.map} +1 -1
  34. package/dist/{index-BXOFC_0d.js → index-C7OE98In.js} +2 -2
  35. package/dist/{index-BXOFC_0d.js.map → index-C7OE98In.js.map} +1 -1
  36. package/dist/{index-C6pNvdxk.cjs → index-C92QAG32.cjs} +3 -3
  37. package/dist/{index-C6pNvdxk.cjs.map → index-C92QAG32.cjs.map} +1 -1
  38. package/dist/{index-DCooV8oV.js → index-CDydqopl.js} +2 -2
  39. package/dist/{index-DCooV8oV.js.map → index-CDydqopl.js.map} +1 -1
  40. package/dist/{index-Bgc3QI4b.cjs → index-CTQ4QmT2.cjs} +2 -2
  41. package/dist/{index-Bgc3QI4b.cjs.map → index-CTQ4QmT2.cjs.map} +1 -1
  42. package/dist/{index-Btt6Tm5Q.js → index-CV9BPzXp.js} +2 -2
  43. package/dist/{index-Btt6Tm5Q.js.map → index-CV9BPzXp.js.map} +1 -1
  44. package/dist/{index-C11vdiDH.cjs → index-D3OehMGn.cjs} +2 -2
  45. package/dist/{index-C11vdiDH.cjs.map → index-D3OehMGn.cjs.map} +1 -1
  46. package/dist/{index-BrbjrA78.cjs → index-DDlFsxQE.cjs} +2 -2
  47. package/dist/{index-BrbjrA78.cjs.map → index-DDlFsxQE.cjs.map} +1 -1
  48. package/dist/{index-BtjEYmib.cjs → index-DKn0Km5O.cjs} +2 -2
  49. package/dist/{index-BtjEYmib.cjs.map → index-DKn0Km5O.cjs.map} +1 -1
  50. package/dist/{index-C_IALXNA.js → index-DPUnEcWL.js} +2 -2
  51. package/dist/{index-C_IALXNA.js.map → index-DPUnEcWL.js.map} +1 -1
  52. package/dist/{index-BtyXrnNq.js → index-DSJ4ojXM.js} +2 -2
  53. package/dist/{index-BtyXrnNq.js.map → index-DSJ4ojXM.js.map} +1 -1
  54. package/dist/{index-lvV5wzhg.js → index-DTtlPPm6.js} +2 -2
  55. package/dist/{index-lvV5wzhg.js.map → index-DTtlPPm6.js.map} +1 -1
  56. package/dist/{index-CANUhwDW.cjs → index-DYL9lt-F.cjs} +3 -3
  57. package/dist/{index-CANUhwDW.cjs.map → index-DYL9lt-F.cjs.map} +1 -1
  58. package/dist/{index-mrxwm6Xs.js → index-Dl7hhKbt.js} +3 -3
  59. package/dist/{index-mrxwm6Xs.js.map → index-Dl7hhKbt.js.map} +1 -1
  60. package/dist/{index-B5ijF3Tp.js → index-DywPfyqK.js} +3 -3
  61. package/dist/{index-B5ijF3Tp.js.map → index-DywPfyqK.js.map} +1 -1
  62. package/dist/{index-Chn5-4lW.js → index-QUkZftBS.js} +2 -2
  63. package/dist/{index-Chn5-4lW.js.map → index-QUkZftBS.js.map} +1 -1
  64. package/dist/utils/formatters.d.ts +1 -0
  65. package/dist/utils/formatters.d.ts.map +1 -1
  66. package/package.json +2 -1
  67. package/dist/components-Bhg-kj6Z.js.map +0 -1
  68. package/dist/components-YkshqT-o.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, Stack as Stack$1, Badge as Badge$1, Center, 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-DCooV8oV.js"));
826
- const Footer = lazy(() => import("./index-B5ijF3Tp.js"));
826
+ const Header$3 = lazy(() => import("./index-CDydqopl.js"));
827
+ const Footer = lazy(() => import("./index-DywPfyqK.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-C_IALXNA.js"));
911
+ const Header$2 = lazy(() => import("./index-DPUnEcWL.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-BXOFC_0d.js"));
1346
+ const Badge = lazy(() => import("./index-C7OE98In.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,7 @@ function ActionSheet({ children, isOpen, header, navMenu = void 0, onRequestHide
1460
1461
  }
1461
1462
  ) });
1462
1463
  }
1464
+ const icon = (Icon, size, color) => /* @__PURE__ */ jsx(Icon, { size: 18, color });
1463
1465
  function IconButton({
1464
1466
  icon: Icon,
1465
1467
  onClick,
@@ -1921,8 +1923,8 @@ function HtmlRender({ content, className }) {
1921
1923
  const safeHTML = DOMPurify.sanitize(content, { FORBID_ATTR: ["style"] });
1922
1924
  return /* @__PURE__ */ jsx(StyleDOMApplier, { children: /* @__PURE__ */ jsx("div", { className, dangerouslySetInnerHTML: { __html: safeHTML } }) });
1923
1925
  }
1924
- function Item({ icon, label, disabled, active, onClick }) {
1925
- const IconComponent = icon;
1926
+ function Item({ icon: icon2, label, disabled, onClick }) {
1927
+ const IconComponent = icon2;
1926
1928
  return /* @__PURE__ */ jsx(
1927
1929
  "button",
1928
1930
  {
@@ -1930,9 +1932,9 @@ function Item({ icon, label, disabled, active, onClick }) {
1930
1932
  width: "100%",
1931
1933
  borderRadius: 4,
1932
1934
  padding: "4px 12px",
1933
- background: "var(--mantine-color-neutralColor-5)",
1935
+ background: "transparent",
1934
1936
  border: "none",
1935
- cursor: disabled ? "not-allowed" : "pointer",
1937
+ cursor: disabled ? "default" : "pointer",
1936
1938
  textAlign: "left",
1937
1939
  "&:hover": {
1938
1940
  backgroundColor: disabled ? void 0 : "var(--mantine-color-neutralColor-6)"
@@ -1941,17 +1943,8 @@ function Item({ icon, label, disabled, active, onClick }) {
1941
1943
  disabled,
1942
1944
  onClick,
1943
1945
  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
- )
1946
+ IconComponent && /* @__PURE__ */ jsx(IconComponent, { size: 18, color: disabled ? "var(--mantine-color-neutralColor-7)" : "var(--mantine-color-neutralColor-8)" }),
1947
+ /* @__PURE__ */ jsx(Text$1, { c: disabled ? "var(--mantine-color-neutralColor-7)" : void 0, fz: 14, children: label })
1955
1948
  ] })
1956
1949
  }
1957
1950
  );
@@ -1967,11 +1960,12 @@ function MoreMenu({ items, controlColor = "primary" }) {
1967
1960
  styles: {
1968
1961
  dropdown: {
1969
1962
  background: "var(--mantine-color-neutralColor-4)",
1970
- border: "none",
1971
1963
  padding: "12px 4px",
1964
+ borderColor: "var(--mantine-color-neutralColor-6)",
1972
1965
  marginLeft: 10
1973
1966
  }
1974
1967
  },
1968
+ radius: 16,
1975
1969
  trapFocus: true,
1976
1970
  width: 200,
1977
1971
  position: "right-start",
@@ -1995,8 +1989,8 @@ function MoreMenu({ items, controlColor = "primary" }) {
1995
1989
  }
1996
1990
  ) }),
1997
1991
  /* @__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(
1992
+ /* @__PURE__ */ jsx(Text$1, { ml: 12, mb: 10, fz: 14, c: "neutralColor.7", children: "Page" }),
1993
+ /* @__PURE__ */ jsx(Stack$1, { gap: "4px", children: items.map((item) => /* @__PURE__ */ jsx(
2000
1994
  Item,
2001
1995
  {
2002
1996
  icon: item.icon,
@@ -2009,7 +2003,7 @@ function MoreMenu({ items, controlColor = "primary" }) {
2009
2003
  }
2010
2004
  },
2011
2005
  item.label
2012
- ))
2006
+ )) })
2013
2007
  ] })
2014
2008
  ]
2015
2009
  }
@@ -2045,7 +2039,7 @@ function AIResponse({ content, agentName, menu }) {
2045
2039
  }
2046
2040
  );
2047
2041
  }
2048
- function AIInputBar({ placeholder, icon, disabledInput, disabledButton, valueInput, inInputChange, onButtonClick }) {
2042
+ function AIInputBar({ placeholder, icon: icon2, disabledInput, disabledButton, valueInput, inInputChange, onButtonClick }) {
2049
2043
  return /* @__PURE__ */ jsx(
2050
2044
  "div",
2051
2045
  {
@@ -2087,7 +2081,7 @@ function AIInputBar({ placeholder, icon, disabledInput, disabledButton, valueInp
2087
2081
  })
2088
2082
  }
2089
2083
  ),
2090
- /* @__PURE__ */ jsx(RoundedButton, { icon: icon ?? Assistant, label: "Ask", active: true, disabled: disabledButton, onClick: onButtonClick })
2084
+ /* @__PURE__ */ jsx(RoundedButton, { icon: icon2 ?? Assistant, label: "Ask", active: true, disabled: disabledButton, onClick: onButtonClick })
2091
2085
  ] })
2092
2086
  }
2093
2087
  );
@@ -2167,8 +2161,8 @@ function Avatar({ src, rounded = true, size = 62, did }) {
2167
2161
  if (jazzRef.current) {
2168
2162
  jazzRef.current.innerHTML = "";
2169
2163
  const seed = Array.from(did).reduce((acc, char) => acc + char.charCodeAt(0), 0);
2170
- const icon = jazzicon(size, seed);
2171
- jazzRef.current.appendChild(icon);
2164
+ const icon2 = jazzicon(size, seed);
2165
+ jazzRef.current.appendChild(icon2);
2172
2166
  }
2173
2167
  } catch (error) {
2174
2168
  console.error("Failed to load jazzicon:", error);
@@ -2343,33 +2337,92 @@ function NavigationItemSkeleton() {
2343
2337
  }
2344
2338
  );
2345
2339
  }
2340
+ function cutText(text, length, ending = "…") {
2341
+ if (!length || text.length <= length) {
2342
+ return text;
2343
+ }
2344
+ const words = text.split(" ");
2345
+ const endingSize = ending.length;
2346
+ let result = "";
2347
+ for (const word of words) {
2348
+ const newValue = result + word + " ";
2349
+ if (newValue.length + endingSize - 1 > length) {
2350
+ break;
2351
+ }
2352
+ result = newValue;
2353
+ }
2354
+ return result.trim() + ending;
2355
+ }
2356
+ function shortStr(str, threshold = 30, saveSymbolsAtTheEnd = 10, insert = "...") {
2357
+ if (!str) return str;
2358
+ const len = str.length;
2359
+ if (len <= threshold) return str;
2360
+ const ending = saveSymbolsAtTheEnd ? str.slice(-1 * saveSymbolsAtTheEnd) : "";
2361
+ const beginning = str.substring(0, threshold - saveSymbolsAtTheEnd - insert.length);
2362
+ return `${beginning}${insert}${ending}`;
2363
+ }
2364
+ function carbonToUSD(carbon) {
2365
+ return (carbon * 0.03).toLocaleString(void 0, {
2366
+ minimumFractionDigits: 0,
2367
+ maximumFractionDigits: 6
2368
+ });
2369
+ }
2346
2370
  function RoomItem({ room }) {
2347
2371
  const { hovered, ref } = useHover();
2348
- return /* @__PURE__ */ jsxs(
2372
+ const renderIcon = () => {
2373
+ if (!room.icon) return null;
2374
+ if (typeof room.icon === "string") {
2375
+ return /* @__PURE__ */ jsx(Image, { w: 20, h: 20, src: room.icon, radius: "50%" });
2376
+ } else if (typeof room.icon === "function") {
2377
+ const IconComponent = room.icon;
2378
+ return /* @__PURE__ */ jsx(IconComponent, { size: 20, color: "secondary" });
2379
+ } else {
2380
+ return room.icon;
2381
+ }
2382
+ };
2383
+ const displayName = shortStr(room.name, 19, 0) || room.name;
2384
+ const shouldShowTooltip = room.name.length > 19;
2385
+ const content = /* @__PURE__ */ jsxs(
2349
2386
  Flex,
2350
2387
  {
2351
2388
  ref,
2352
2389
  align: "center",
2390
+ justify: "space-between",
2353
2391
  gap: 8,
2354
2392
  px: 12,
2355
- py: 4,
2356
- ml: 16,
2393
+ py: 6,
2357
2394
  style: {
2358
2395
  cursor: "pointer",
2359
2396
  borderRadius: 6,
2360
- backgroundColor: room.isActive || hovered ? "var(--mantine-color-neutralColor-5)" : "transparent",
2361
- transform: hovered ? "translateX(2px)" : "translateX(0px)",
2397
+ backgroundColor: room.isActive || hovered ? "var(--mantine-color-neutralColor-6)" : "transparent",
2362
2398
  transition: "all 0.15s ease"
2363
2399
  },
2364
2400
  onClick: () => room.onClick(room.id),
2365
2401
  children: [
2366
- /* @__PURE__ */ jsx(room.icon, { size: 16, color: "secondary" }),
2367
- /* @__PURE__ */ jsx(Text$1, { fz: 13, c: "neutralColor.8", children: room.name })
2402
+ /* @__PURE__ */ jsxs(Flex, { align: "center", gap: 8, children: [
2403
+ renderIcon(),
2404
+ /* @__PURE__ */ jsx(Text$1, { c: room.isActive ? "neutralColor.8" : "neutralColor.7", fz: 14, children: displayName })
2405
+ ] }),
2406
+ hovered && /* @__PURE__ */ jsxs(Flex, { align: "center", gap: 4, children: [
2407
+ room.onActionClick && /* @__PURE__ */ jsx(Tooltip$4, { label: room.onActionClick.label, children: /* @__PURE__ */ jsx(
2408
+ Center,
2409
+ {
2410
+ onClick: (e) => {
2411
+ e.stopPropagation();
2412
+ room.onActionClick?.onClick();
2413
+ },
2414
+ style: { cursor: "pointer" },
2415
+ children: icon(room.onActionClick.icon, void 0, "var(--mantine-color-neutralColor-7)")
2416
+ }
2417
+ ) }),
2418
+ room.tag && room.tagIcon && /* @__PURE__ */ jsx(Tooltip$4, { label: room.tag, children: icon(room.tagIcon, void 0, "var(--mantine-color-neutralColor-7)") })
2419
+ ] })
2368
2420
  ]
2369
2421
  }
2370
2422
  );
2423
+ return shouldShowTooltip ? /* @__PURE__ */ jsx(Tooltip$4, { label: room.name, children: /* @__PURE__ */ jsx("span", { children: content }) }) : content;
2371
2424
  }
2372
- function RoomCategory({ category }) {
2425
+ function RoomCategory({ name, rooms, actions, onAddClick }) {
2373
2426
  const { hovered, ref } = useHover();
2374
2427
  const { value, toggle: toggle2 } = useToggle(false);
2375
2428
  return /* @__PURE__ */ jsxs(Stack$1, { gap: 2, children: [
@@ -2380,7 +2433,7 @@ function RoomCategory({ category }) {
2380
2433
  align: "center",
2381
2434
  justify: "space-between",
2382
2435
  px: 12,
2383
- py: 4,
2436
+ py: 6,
2384
2437
  style: {
2385
2438
  cursor: "pointer",
2386
2439
  borderRadius: 6,
@@ -2389,21 +2442,49 @@ function RoomCategory({ category }) {
2389
2442
  },
2390
2443
  onClick: toggle2,
2391
2444
  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
- )
2445
+ /* @__PURE__ */ jsx(Text$1, { fz: 12, tt: "capitalize", children: name }),
2446
+ /* @__PURE__ */ jsxs(Flex, { align: "center", gap: 8, children: [
2447
+ onAddClick && /* @__PURE__ */ jsx(
2448
+ Center,
2449
+ {
2450
+ onClick: (e) => {
2451
+ e.stopPropagation();
2452
+ onAddClick();
2453
+ },
2454
+ sx: { cursor: "pointer", borderRadius: 4, transition: "transform 0.2s ease", "&:hover": { background: "var(--mantine-color-neutralColor-5)" } },
2455
+ children: icon(IconPlus, void 0, "var(--mantine-color-neutralColor-7)")
2456
+ }
2457
+ ),
2458
+ actions && actions.length > 0 && /* @__PURE__ */ jsx(
2459
+ Center,
2460
+ {
2461
+ onClick: (e) => e.stopPropagation(),
2462
+ sx: {
2463
+ cursor: "pointer",
2464
+ borderRadius: 4,
2465
+ transition: "transform 0.2s ease",
2466
+ "&:hover": {
2467
+ background: "var(--mantine-color-neutralColor-5)"
2468
+ }
2469
+ },
2470
+ children: /* @__PURE__ */ jsx(MoreMenu, { items: actions, controlColor: "secondary" })
2471
+ }
2472
+ ),
2473
+ /* @__PURE__ */ jsx(
2474
+ Center,
2475
+ {
2476
+ sx: {
2477
+ transform: value ? "rotate(-90deg)" : "rotate(0deg)",
2478
+ transition: "transform 0.2s ease"
2479
+ },
2480
+ children: /* @__PURE__ */ jsx(AngleLeftSolid, { size: 12, color: "secondary" })
2481
+ }
2482
+ )
2483
+ ] })
2403
2484
  ]
2404
2485
  }
2405
2486
  ),
2406
- !value && /* @__PURE__ */ jsx(Stack$1, { gap: 1, children: category.rooms.map((room) => /* @__PURE__ */ jsx(RoomItem, { room }, room.id)) })
2487
+ !value && /* @__PURE__ */ jsx(Stack$1, { gap: 5, children: rooms?.map((room) => /* @__PURE__ */ jsx(RoomItem, { room }, room.id)) })
2407
2488
  ] });
2408
2489
  }
2409
2490
  function hasActiveDescendant(children) {
@@ -2484,7 +2565,6 @@ function MenuItem({ item, onMenuItemClick, depth = 0 }) {
2484
2565
  cursor: "pointer",
2485
2566
  borderRadius: 8,
2486
2567
  backgroundColor: shouldShowActiveStyle ? "var(--mantine-color-neutralColor-6)" : hovered ? "var(--mantine-color-neutralColor-6)" : "transparent",
2487
- transform: hovered ? "translateX(4px)" : "translateX(0px)",
2488
2568
  transition: "all 0.2s ease"
2489
2569
  },
2490
2570
  onClick: handleItemClick,
@@ -2529,7 +2609,7 @@ function SelectedIndicator() {
2529
2609
  }
2530
2610
  );
2531
2611
  }
2532
- function SpaceItem({ icon, id, name, selectedSpace, onClick }) {
2612
+ function SpaceItem({ icon: icon2, id, name, selectedSpace, onClick }) {
2533
2613
  const { hovered, ref } = useHover();
2534
2614
  const isSelected = selectedSpace === id;
2535
2615
  return /* @__PURE__ */ jsxs(
@@ -2546,34 +2626,12 @@ function SpaceItem({ icon, id, name, selectedSpace, onClick }) {
2546
2626
  w: 40,
2547
2627
  onClick: () => onClick(id),
2548
2628
  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 }),
2629
+ /* @__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
2630
  isSelected && /* @__PURE__ */ jsx(SelectedIndicator, {})
2551
2631
  ]
2552
2632
  }
2553
2633
  );
2554
2634
  }
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 carbonToUSD(carbon) {
2572
- return (carbon * 0.03).toLocaleString(void 0, {
2573
- minimumFractionDigits: 0,
2574
- maximumFractionDigits: 6
2575
- });
2576
- }
2577
2635
  function MobileBurger({ avatarIcon, isOpened, onClick }) {
2578
2636
  if (isOpened) {
2579
2637
  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" });
@@ -2619,7 +2677,7 @@ function AppShellNavigation({
2619
2677
  const [asideWidth, setAsideWidth] = useState(450);
2620
2678
  const isMobile = useMediaQuery("(max-width: 48em)");
2621
2679
  const [mobileOpened, { toggle: toggleMobile }] = useDisclosure();
2622
- const [desktopOpened, { toggle: toggleDesktop }] = useDisclosure(true);
2680
+ const [desktopOpened] = useDisclosure(true);
2623
2681
  const [isSplitResizing, setIsSplitResizing] = useState(false);
2624
2682
  const isSplitResizingRef = useRef(false);
2625
2683
  const mainContainerRef = useRef(null);
@@ -2693,7 +2751,7 @@ function AppShellNavigation({
2693
2751
  const handleNavbarMouseMove = useCallback(
2694
2752
  (e) => {
2695
2753
  if (!isNavbarResizingRef.current) return;
2696
- const minWidth = isAiOpened ? 450 : 300;
2754
+ const minWidth = isAiOpened ? 450 : 330;
2697
2755
  const maxWidth = 700;
2698
2756
  const newWidth = Math.min(Math.max(e.clientX, minWidth), maxWidth);
2699
2757
  if (isAiOpened) {
@@ -2727,7 +2785,7 @@ function AppShellNavigation({
2727
2785
  useEffect(() => {
2728
2786
  const handleWindowResize = () => {
2729
2787
  const maxWidth = 700;
2730
- const minWidth = isAiOpened ? 450 : 300;
2788
+ const minWidth = isAiOpened ? 450 : 330;
2731
2789
  const currentWidth = isAiOpened ? navbarWidthAiOpen : navbarWidthAiClosed;
2732
2790
  const setter = isAiOpened ? setNavbarWidthAiOpen : setNavbarWidthAiClosed;
2733
2791
  if (currentWidth > maxWidth) {
@@ -2822,7 +2880,7 @@ function AppShellNavigation({
2822
2880
  paddingRight: 8
2823
2881
  }
2824
2882
  },
2825
- 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)) })
2883
+ 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)) })
2826
2884
  }
2827
2885
  )
2828
2886
  ] }),
@@ -2834,30 +2892,30 @@ function AppShellNavigation({
2834
2892
  ] })
2835
2893
  ] }),
2836
2894
  isAiOpened && !isMobile && aiNavbarContent,
2837
- !isAiOpened && /* @__PURE__ */ jsxs(Stack$1, { justify: "space-between", w: "100%", pt: 16, pb: 10, px: 12, children: [
2838
- /* @__PURE__ */ jsxs(Stack$1, { gap: 5, children: [
2839
- /* @__PURE__ */ jsxs(Flex, { mb: 24, style: { width: "100%" }, justify: "space-between", align: "center", children: [
2840
- /* @__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: cutText(pageItem.pageTitle, 19) || "Unknown" }) }) }),
2841
- isAiBtnVisible && !isAiOpened && !isMobile && /* @__PURE__ */ jsx(
2842
- Center,
2843
- {
2844
- sx: {
2845
- cursor: "pointer",
2846
- borderRadius: 8,
2847
- transition: "background 0.15s",
2848
- background: "var(--mantine-color-neutralColor-5)",
2849
- "&:hover": {
2850
- background: "var(--mantine-color-neutralColor-6)"
2851
- }
2852
- },
2853
- p: 4,
2854
- onClick: onAiOpen,
2855
- children: /* @__PURE__ */ jsx(Assistant, { size: 18, color: "primary" })
2856
- }
2857
- )
2858
- ] }),
2895
+ !isAiOpened && /* @__PURE__ */ jsxs(Box, { w: "100%", style: { height: "100%", display: "flex", flexDirection: "column" }, children: [
2896
+ /* @__PURE__ */ jsx(AppShell.Section, { px: 12, pt: 16, children: /* @__PURE__ */ jsxs(Flex, { mb: 24, style: { width: "100%" }, justify: "space-between", align: "center", children: [
2897
+ /* @__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" }) }) }),
2898
+ isAiBtnVisible && !isAiOpened && !isMobile && /* @__PURE__ */ jsx(
2899
+ Center,
2900
+ {
2901
+ sx: {
2902
+ cursor: "pointer",
2903
+ borderRadius: 8,
2904
+ transition: "background 0.15s",
2905
+ background: "var(--mantine-color-neutralColor-5)",
2906
+ "&:hover": {
2907
+ background: "var(--mantine-color-neutralColor-6)"
2908
+ }
2909
+ },
2910
+ p: 4,
2911
+ onClick: onAiOpen,
2912
+ children: /* @__PURE__ */ jsx(Assistant, { size: 18, color: "primary" })
2913
+ }
2914
+ )
2915
+ ] }) }),
2916
+ /* @__PURE__ */ jsx(AppShell.Section, { grow: true, component: ScrollArea, scrollbarSize: 5, sx: { overflowX: "hidden" }, px: 12, children: /* @__PURE__ */ jsxs(Stack$1, { gap: 5, children: [
2859
2917
  loading ? /* @__PURE__ */ jsx(Stack$1, { gap: 5, children: Array.from({ length: 6 }).map((_, idx) => /* @__PURE__ */ jsx(NavigationItemSkeleton, {}, idx)) }) : menuItems?.map((item, index) => {
2860
- if (index === separator) {
2918
+ if (index !== 0 && index === separator) {
2861
2919
  return /* @__PURE__ */ jsxs(Fragment, { children: [
2862
2920
  /* @__PURE__ */ jsx(Space, { h: 16 }),
2863
2921
  /* @__PURE__ */ jsx(MenuItem, { onMenuItemClick, item }, item.id)
@@ -2865,9 +2923,9 @@ function AppShellNavigation({
2865
2923
  }
2866
2924
  return /* @__PURE__ */ jsx(MenuItem, { onMenuItemClick, item }, item.id);
2867
2925
  }),
2868
- roomCategories && roomCategories.length > 0 && /* @__PURE__ */ jsx(Stack$1, { gap: 8, mt: 16, children: roomCategories.map((category) => /* @__PURE__ */ jsx(RoomCategory, { category }, category.id)) })
2869
- ] }),
2870
- /* @__PURE__ */ jsx(Stack$1, { gap: 5, children: footerContent })
2926
+ roomCategories && roomCategories.length > 0 && /* @__PURE__ */ jsx(Stack$1, { gap: 8, mt: 16, children: roomCategories.map(({ id, name, actions, rooms, onAddClick }) => /* @__PURE__ */ jsx(RoomCategory, { id, name, actions, rooms, onAddClick }, id)) })
2927
+ ] }) }),
2928
+ footerContent && /* @__PURE__ */ jsx(AppShell.Section, { px: 12, py: 10, children: /* @__PURE__ */ jsx(Stack$1, { gap: 5, children: footerContent }) })
2871
2929
  ] })
2872
2930
  ] })
2873
2931
  ] }) }),
@@ -5346,7 +5404,7 @@ function ImageIcon({ source: Source, fallback: Fallback, size = 32, iconColor =
5346
5404
  }
5347
5405
  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 });
5348
5406
  }
5349
- function Value({ icon, label, value }) {
5407
+ function Value({ icon: icon2, label, value }) {
5350
5408
  return /* @__PURE__ */ jsxs(
5351
5409
  "div",
5352
5410
  {
@@ -5360,7 +5418,7 @@ function Value({ icon, label, value }) {
5360
5418
  alignItems: "center"
5361
5419
  }),
5362
5420
  children: [
5363
- /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(ImageIcon, { source: icon, size: 32, iconColor: "primary" }) }),
5421
+ /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(ImageIcon, { source: icon2, size: 32, iconColor: "primary" }) }),
5364
5422
  /* @__PURE__ */ jsxs(Spacer, { vertical: true, distance: 0, alignItems: "start", children: [
5365
5423
  /* @__PURE__ */ jsx(Typography.Text, { color: "text", size: "s", children: label }),
5366
5424
  /* @__PURE__ */ jsx(Typography.Text, { color: "secondary", size: "xs", children: value })
@@ -6001,13 +6059,13 @@ function ActionButton({ onClick, left, right }) {
6001
6059
  }
6002
6060
  );
6003
6061
  }
6004
- const MainAction = lazy(() => import("./index-BtyXrnNq.js"));
6005
- const Header$1 = lazy(() => import("./index-lvV5wzhg.js"));
6006
- const Content = lazy(() => import("./index-Chn5-4lW.js"));
6062
+ const MainAction = lazy(() => import("./index-DSJ4ojXM.js"));
6063
+ const Header$1 = lazy(() => import("./index-DTtlPPm6.js"));
6064
+ const Content = lazy(() => import("./index-QUkZftBS.js"));
6007
6065
  const Map = lazy(() => import("./index-D5Ufmf-s.js"));
6008
6066
  const CustomContent = lazy(() => import("./index-DsYjW_4y.js"));
6009
- const Assets = lazy(() => import("./index-CskX6vn2.js"));
6010
- const Actions = lazy(() => import("./index-mrxwm6Xs.js"));
6067
+ const Assets = lazy(() => import("./index-BVV0ucIw.js"));
6068
+ const Actions = lazy(() => import("./index-Dl7hhKbt.js"));
6011
6069
  const HOVER_BORDER_WIDTH = 1;
6012
6070
  function SodaCardCmp({ numSelected = 0, expanded = true, mainAction, header, content, map, customContent, customFooter, actions, assets, onClick }, ref) {
6013
6071
  const wrapperRef = useRef(null);
@@ -6307,7 +6365,7 @@ function AssetInfo({
6307
6365
  rightTitleColor = "text",
6308
6366
  rightSubtitle,
6309
6367
  rightSubtitleColor = "focusSecondary",
6310
- icon
6368
+ icon: icon2
6311
6369
  }) {
6312
6370
  const theme = useTheme();
6313
6371
  return /* @__PURE__ */ jsxs(
@@ -6322,19 +6380,19 @@ function AssetInfo({
6322
6380
  justifyContent: "space-between",
6323
6381
  children: [
6324
6382
  /* @__PURE__ */ jsxs(Spacer, { children: [
6325
- icon && /* @__PURE__ */ jsx(
6383
+ icon2 && /* @__PURE__ */ jsx(
6326
6384
  "div",
6327
6385
  {
6328
6386
  css: ({ radius }) => ({
6329
6387
  width: 32,
6330
6388
  height: 32,
6331
6389
  borderRadius: radius.small / 2,
6332
- backgroundColor: getElementColor(theme, icon.bg),
6390
+ backgroundColor: getElementColor(theme, icon2.bg),
6333
6391
  display: "flex",
6334
6392
  alignItems: "center",
6335
6393
  justifyContent: "center"
6336
6394
  }),
6337
- children: /* @__PURE__ */ jsx(icon.icon, { color: "overPicture" })
6395
+ children: /* @__PURE__ */ jsx(icon2.icon, { color: "overPicture" })
6338
6396
  }
6339
6397
  ),
6340
6398
  /* @__PURE__ */ jsx(Info, { align: "start", title: leftTitle, subtitle: leftSubtitle, titleColor: leftTitleColor, subtitleColor: leftSubtitleColor })
@@ -7040,7 +7098,7 @@ function ModalSearch({
7040
7098
  )
7041
7099
  ] }) });
7042
7100
  }
7043
- function Protocol({ icon, name, category, selected, onClick }) {
7101
+ function Protocol({ icon: icon2, name, category, selected, onClick }) {
7044
7102
  return /* @__PURE__ */ jsxs(
7045
7103
  "button",
7046
7104
  {
@@ -7090,7 +7148,7 @@ function Protocol({ icon, name, category, selected, onClick }) {
7090
7148
  /* @__PURE__ */ jsx(Typography.Paragraph, { size: "regular", children: name }),
7091
7149
  /* @__PURE__ */ jsx(Typography.Paragraph, { color: "focusSecondary", size: "xs", children: category })
7092
7150
  ] }),
7093
- /* @__PURE__ */ jsx(ImageIcon, { source: icon, size: 32, iconColor: "secondary" })
7151
+ /* @__PURE__ */ jsx(ImageIcon, { source: icon2, size: 32, iconColor: "secondary" })
7094
7152
  ]
7095
7153
  }
7096
7154
  )
@@ -7118,7 +7176,7 @@ function OracleProtocolsSelection({ items }) {
7118
7176
  items.find((item) => item.selected) ? /* @__PURE__ */ jsx(Typography.Text, { color: "focusSecondary", children: "Protocol Selected" }) : null
7119
7177
  ] });
7120
7178
  }
7121
- function TagButton({ value, icon, onClick }) {
7179
+ function TagButton({ value, icon: icon2, onClick }) {
7122
7180
  return /* @__PURE__ */ jsx(
7123
7181
  "button",
7124
7182
  {
@@ -7134,7 +7192,7 @@ function TagButton({ value, icon, onClick }) {
7134
7192
  backgroundColor: colors.focusTransparent10
7135
7193
  }
7136
7194
  }),
7137
- children: /* @__PURE__ */ jsx(Tag, { value, icon, textColor: "focusSecondary" })
7195
+ children: /* @__PURE__ */ jsx(Tag, { value, icon: icon2, textColor: "focusSecondary" })
7138
7196
  }
7139
7197
  );
7140
7198
  }
@@ -7324,7 +7382,7 @@ function humanizeNumber(value) {
7324
7382
  function humanizeTimestamp(timestamp) {
7325
7383
  return dayjs(timestamp).fromNow();
7326
7384
  }
7327
- function InteractionButton({ icon, active, total, onClick }) {
7385
+ function InteractionButton({ icon: icon2, active, total, onClick }) {
7328
7386
  return /* @__PURE__ */ jsx(
7329
7387
  "button",
7330
7388
  {
@@ -7340,7 +7398,7 @@ function InteractionButton({ icon, active, total, onClick }) {
7340
7398
  {
7341
7399
  value: humanizeNumber(total),
7342
7400
  textColor: active ? "primary" : "secondary",
7343
- icon,
7401
+ icon: icon2,
7344
7402
  css: ({ transition, colors }) => ({
7345
7403
  transition: transition.duration,
7346
7404
  "&:hover": {
@@ -7778,7 +7836,7 @@ function ColumnText({ title, subtitle, align = "left" }) {
7778
7836
  }
7779
7837
  );
7780
7838
  }
7781
- function ServiceOffering({ icon, leftText, leftDescription, centerText, centerDescription, rightText, rightDescription, onClick }) {
7839
+ function ServiceOffering({ icon: icon2, leftText, leftDescription, centerText, centerDescription, rightText, rightDescription, onClick }) {
7782
7840
  return /* @__PURE__ */ jsxs(
7783
7841
  "div",
7784
7842
  {
@@ -7844,7 +7902,7 @@ function ServiceOffering({ icon, leftText, leftDescription, centerText, centerDe
7844
7902
  alignItems: "center"
7845
7903
  }),
7846
7904
  children: [
7847
- /* @__PURE__ */ jsx(ImageIcon, { size: 32, source: icon }),
7905
+ /* @__PURE__ */ jsx(ImageIcon, { size: 32, source: icon2 }),
7848
7906
  /* @__PURE__ */ jsx(ColumnText, { title: leftText, subtitle: leftDescription })
7849
7907
  ]
7850
7908
  }
@@ -11284,4 +11342,4 @@ export {
11284
11342
  CardHero as y,
11285
11343
  CardSelector as z
11286
11344
  };
11287
- //# sourceMappingURL=components-Bhg-kj6Z.js.map
11345
+ //# sourceMappingURL=components-BTh3OZP_.js.map