@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.
- package/dist/.vite/manifest.json +31 -31
- package/dist/components/AppShellNavigation/components/AsideResizable.d.ts.map +1 -1
- package/dist/components/AppShellNavigation/components/MenuItem.d.ts +1 -0
- package/dist/components/AppShellNavigation/components/MenuItem.d.ts.map +1 -1
- package/dist/components/AppShellNavigation/index.d.ts.map +1 -1
- package/dist/{components-CR3XazP1.js → components-C94tOtsd.js} +239 -129
- package/dist/{components-CR3XazP1.js.map → components-C94tOtsd.js.map} +1 -1
- package/dist/{components-DTMttD70.cjs → components-DF2Bd0es.cjs} +238 -128
- package/dist/{components-DTMttD70.cjs.map → components-DF2Bd0es.cjs.map} +1 -1
- package/dist/export/components.cjs +1 -1
- package/dist/export/components.mjs +1 -1
- package/dist/{index-CQD9E1Y0.cjs → index-AIkST7gl.cjs} +2 -2
- package/dist/{index-CQD9E1Y0.cjs.map → index-AIkST7gl.cjs.map} +1 -1
- package/dist/{index-Dgo89leo.cjs → index-BQ1DH7WK.cjs} +2 -2
- package/dist/{index-Dgo89leo.cjs.map → index-BQ1DH7WK.cjs.map} +1 -1
- package/dist/{index-CJuGk9X4.js → index-BUhftlk7.js} +3 -3
- package/dist/{index-CJuGk9X4.js.map → index-BUhftlk7.js.map} +1 -1
- package/dist/{index-C5Vs6UTu.js → index-BUiJr7Uj.js} +3 -3
- package/dist/{index-C5Vs6UTu.js.map → index-BUiJr7Uj.js.map} +1 -1
- package/dist/{index-B1iDlIBb.js → index-BgMqOKWQ.js} +2 -2
- package/dist/{index-B1iDlIBb.js.map → index-BgMqOKWQ.js.map} +1 -1
- package/dist/{index-DFVmSv_s.js → index-BwGm7BDz.js} +2 -2
- package/dist/{index-DFVmSv_s.js.map → index-BwGm7BDz.js.map} +1 -1
- package/dist/{index-CAG6hgw7.js → index-CBHwvT9n.js} +2 -2
- package/dist/{index-CAG6hgw7.js.map → index-CBHwvT9n.js.map} +1 -1
- package/dist/{index-CXKd9L7W.cjs → index-CFWPityN.cjs} +3 -3
- package/dist/{index-CXKd9L7W.cjs.map → index-CFWPityN.cjs.map} +1 -1
- package/dist/{index-DlJaYoXJ.js → index-CJFj_oLr.js} +2 -2
- package/dist/{index-DlJaYoXJ.js.map → index-CJFj_oLr.js.map} +1 -1
- package/dist/{index-DLS4Rlpw.js → index-D--aZB3M.js} +2 -2
- package/dist/{index-DLS4Rlpw.js.map → index-D--aZB3M.js.map} +1 -1
- package/dist/{index-DRTHOayr.cjs → index-DF1KwyRS.cjs} +2 -2
- package/dist/{index-DRTHOayr.cjs.map → index-DF1KwyRS.cjs.map} +1 -1
- package/dist/{index-CenKQltX.js → index-DQ5_MRcm.js} +2 -2
- package/dist/{index-CenKQltX.js.map → index-DQ5_MRcm.js.map} +1 -1
- package/dist/{index-CcdRvpPG.cjs → index-DV9aLRa2.cjs} +2 -2
- package/dist/{index-CcdRvpPG.cjs.map → index-DV9aLRa2.cjs.map} +1 -1
- package/dist/{index-C-XqjvyN.js → index-D_XYIRB0.js} +2 -2
- package/dist/{index-C-XqjvyN.js.map → index-D_XYIRB0.js.map} +1 -1
- package/dist/{index-EDgDTxEE.cjs → index-Dpgn820L.cjs} +2 -2
- package/dist/{index-EDgDTxEE.cjs.map → index-Dpgn820L.cjs.map} +1 -1
- package/dist/{index-CrGDWCSQ.cjs → index-MFrpv1U1.cjs} +2 -2
- package/dist/{index-CrGDWCSQ.cjs.map → index-MFrpv1U1.cjs.map} +1 -1
- package/dist/{index-O9u1LytR.cjs → index-RTCppkPk.cjs} +3 -3
- package/dist/{index-O9u1LytR.cjs.map → index-RTCppkPk.cjs.map} +1 -1
- package/dist/{index-CP4dPoSE.cjs → index-lq6zoyTk.cjs} +2 -2
- package/dist/{index-CP4dPoSE.cjs.map → index-lq6zoyTk.cjs.map} +1 -1
- package/dist/{index-DCDIWKNW.cjs → index-pkTICWLF.cjs} +2 -2
- package/dist/{index-DCDIWKNW.cjs.map → index-pkTICWLF.cjs.map} +1 -1
- package/dist/{index-CmvbskDl.js → index-qLlUomkF.js} +2 -2
- package/dist/{index-CmvbskDl.js.map → index-qLlUomkF.js.map} +1 -1
- 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,
|
|
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-
|
|
778
|
-
const Footer = lazy(() => import("./index-
|
|
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-
|
|
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-
|
|
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:
|
|
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:
|
|
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
|
-
|
|
2444
|
-
/* @__PURE__ */ jsx(Text$1, { fz: 14, fw: 500, c:
|
|
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__ */
|
|
2448
|
-
|
|
2449
|
-
|
|
2450
|
-
{
|
|
2451
|
-
|
|
2452
|
-
|
|
2453
|
-
|
|
2454
|
-
|
|
2455
|
-
|
|
2456
|
-
|
|
2457
|
-
|
|
2458
|
-
|
|
2459
|
-
|
|
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 ?
|
|
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(
|
|
2580
|
-
/* @__PURE__ */
|
|
2581
|
-
|
|
2582
|
-
|
|
2583
|
-
|
|
2584
|
-
|
|
2585
|
-
|
|
2586
|
-
|
|
2587
|
-
|
|
2588
|
-
|
|
2589
|
-
|
|
2590
|
-
|
|
2591
|
-
|
|
2592
|
-
|
|
2593
|
-
|
|
2594
|
-
|
|
2595
|
-
|
|
2596
|
-
|
|
2597
|
-
|
|
2598
|
-
|
|
2599
|
-
|
|
2600
|
-
|
|
2601
|
-
|
|
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
|
-
|
|
2642
|
-
|
|
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
|
-
|
|
2646
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2660
|
-
|
|
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
|
-
|
|
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-
|
|
5688
|
-
const Header$1 = lazy(() => import("./index-
|
|
5689
|
-
const Content = lazy(() => import("./index-
|
|
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-
|
|
5693
|
-
const Actions = lazy(() => import("./index-
|
|
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-
|
|
11118
|
+
//# sourceMappingURL=components-C94tOtsd.js.map
|