@ixo/ui 0.0.13 → 0.0.14

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 (54) hide show
  1. package/dist/.vite/manifest.json +31 -31
  2. package/dist/components/AppShellNavigation/components/AsideResizable.d.ts +10 -0
  3. package/dist/components/AppShellNavigation/components/AsideResizable.d.ts.map +1 -0
  4. package/dist/components/AppShellNavigation/index.d.ts +4 -1
  5. package/dist/components/AppShellNavigation/index.d.ts.map +1 -1
  6. package/dist/{components-C4EqnIzL.js → components-BiD0_7V_.js} +99 -17
  7. package/dist/components-BiD0_7V_.js.map +1 -0
  8. package/dist/{components-CV2rKBYZ.cjs → components-vw6J_dpp.cjs} +98 -16
  9. package/dist/components-vw6J_dpp.cjs.map +1 -0
  10. package/dist/export/components.cjs +1 -1
  11. package/dist/export/components.mjs +1 -1
  12. package/dist/{index-C5CnSI8h.cjs → index-4sKOMBmk.cjs} +3 -3
  13. package/dist/{index-C5CnSI8h.cjs.map → index-4sKOMBmk.cjs.map} +1 -1
  14. package/dist/{index-C3_1bvTS.cjs → index-BG-QfJbv.cjs} +2 -2
  15. package/dist/{index-C3_1bvTS.cjs.map → index-BG-QfJbv.cjs.map} +1 -1
  16. package/dist/{index-Dj1BaWDs.cjs → index-BHcOFwds.cjs} +2 -2
  17. package/dist/{index-Dj1BaWDs.cjs.map → index-BHcOFwds.cjs.map} +1 -1
  18. package/dist/{index-C_T_TF7J.cjs → index-BuxCAg_1.cjs} +2 -2
  19. package/dist/{index-C_T_TF7J.cjs.map → index-BuxCAg_1.cjs.map} +1 -1
  20. package/dist/{index-CyWiU3i_.js → index-BvFDLUUX.js} +3 -3
  21. package/dist/{index-CyWiU3i_.js.map → index-BvFDLUUX.js.map} +1 -1
  22. package/dist/{index-Ckhzun7H.js → index-By0FBgRQ.js} +2 -2
  23. package/dist/{index-Ckhzun7H.js.map → index-By0FBgRQ.js.map} +1 -1
  24. package/dist/{index-CooLFL4R.js → index-CF2PVnSW.js} +2 -2
  25. package/dist/{index-CooLFL4R.js.map → index-CF2PVnSW.js.map} +1 -1
  26. package/dist/{index-D7EQ3eKf.js → index-CXrrJ_Le.js} +2 -2
  27. package/dist/{index-D7EQ3eKf.js.map → index-CXrrJ_Le.js.map} +1 -1
  28. package/dist/{index-Bg26rTdb.cjs → index-Coxm5WEM.cjs} +2 -2
  29. package/dist/{index-Bg26rTdb.cjs.map → index-Coxm5WEM.cjs.map} +1 -1
  30. package/dist/{index-CZbze3rk.js → index-CsIW1_OQ.js} +2 -2
  31. package/dist/{index-CZbze3rk.js.map → index-CsIW1_OQ.js.map} +1 -1
  32. package/dist/{index-mvsa-Ixl.cjs → index-CyysTrZP.cjs} +2 -2
  33. package/dist/{index-mvsa-Ixl.cjs.map → index-CyysTrZP.cjs.map} +1 -1
  34. package/dist/{index-CefO0Jav.cjs → index-DNqtJQVl.cjs} +2 -2
  35. package/dist/{index-CefO0Jav.cjs.map → index-DNqtJQVl.cjs.map} +1 -1
  36. package/dist/{index-BLat0Lyt.js → index-DVcSKgbJ.js} +2 -2
  37. package/dist/{index-BLat0Lyt.js.map → index-DVcSKgbJ.js.map} +1 -1
  38. package/dist/{index-X6VhYA9V.js → index-DqcjuULv.js} +3 -3
  39. package/dist/{index-X6VhYA9V.js.map → index-DqcjuULv.js.map} +1 -1
  40. package/dist/{index-CBpRYfw7.js → index-Dva9zr6w.js} +2 -2
  41. package/dist/{index-CBpRYfw7.js.map → index-Dva9zr6w.js.map} +1 -1
  42. package/dist/{index-CoOmnlIt.js → index-ErQUX7j7.js} +2 -2
  43. package/dist/{index-CoOmnlIt.js.map → index-ErQUX7j7.js.map} +1 -1
  44. package/dist/{index-BhVNm8RD.js → index-c39fFlNp.js} +2 -2
  45. package/dist/{index-BhVNm8RD.js.map → index-c39fFlNp.js.map} +1 -1
  46. package/dist/{index-Dkg-DJse.cjs → index-djRt821o.cjs} +2 -2
  47. package/dist/{index-Dkg-DJse.cjs.map → index-djRt821o.cjs.map} +1 -1
  48. package/dist/{index-Dw22tq1e.cjs → index-nhqvNIAj.cjs} +3 -3
  49. package/dist/{index-Dw22tq1e.cjs.map → index-nhqvNIAj.cjs.map} +1 -1
  50. package/dist/{index-4dRzDkrK.cjs → index-yjx-PRyb.cjs} +2 -2
  51. package/dist/{index-4dRzDkrK.cjs.map → index-yjx-PRyb.cjs.map} +1 -1
  52. package/package.json +1 -1
  53. package/dist/components-C4EqnIzL.js.map +0 -1
  54. package/dist/components-CV2rKBYZ.cjs.map +0 -1
@@ -797,8 +797,8 @@ function AccordionTable({
797
797
  }
798
798
  );
799
799
  }
800
- const Header$3 = react$1.lazy(() => Promise.resolve().then(() => require("./index-Dkg-DJse.cjs")));
801
- const Footer = react$1.lazy(() => Promise.resolve().then(() => require("./index-C5CnSI8h.cjs")));
800
+ const Header$3 = react$1.lazy(() => Promise.resolve().then(() => require("./index-djRt821o.cjs")));
801
+ const Footer = react$1.lazy(() => Promise.resolve().then(() => require("./index-4sKOMBmk.cjs")));
802
802
  function ActionCard({ header, content, footer, useHoverMode = false }) {
803
803
  const hasContent = !!content || !!footer;
804
804
  const initialVisibility = footer?.startHidden !== true;
@@ -882,7 +882,7 @@ function Loader({ size, color = "primary" }) {
882
882
  }
883
883
  const CARD_WIDTH$1 = 350;
884
884
  const CARD_HEADER_HEIGHT = 158;
885
- const Header$2 = react$1.lazy(() => Promise.resolve().then(() => require("./index-C3_1bvTS.cjs")));
885
+ const Header$2 = react$1.lazy(() => Promise.resolve().then(() => require("./index-BG-QfJbv.cjs")));
886
886
  function Card({ children, className, contentClassName, roundedBottom, noPadding = false, fullWidth = false, header, wrapperSx, onClick }) {
887
887
  const wrapperRef = react$1.useRef(null);
888
888
  const handleOnClick = react$1.useCallback(
@@ -1317,7 +1317,7 @@ function ModalSheet({ isOpen, children, hideHandler, zIndex, onRequestHide, onRe
1317
1317
  document.body
1318
1318
  );
1319
1319
  }
1320
- const Badge = react$1.lazy(() => Promise.resolve().then(() => require("./index-C_T_TF7J.cjs")));
1320
+ const Badge = react$1.lazy(() => Promise.resolve().then(() => require("./index-BuxCAg_1.cjs")));
1321
1321
  function ActionSheet({ children, isOpen, header, navMenu = void 0, onRequestHide, onRequestShow }) {
1322
1322
  const shadowScrollRef = react$1.useRef(null);
1323
1323
  const wrapperContentAreaRef = react$1.useRef(null);
@@ -2159,6 +2159,76 @@ function Avatar({ src, rounded = true, size = 62, did }) {
2159
2159
  }
2160
2160
  return /* @__PURE__ */ jsxRuntime.jsx(UsersSolid.User, { css: ({ text }) => ({ ...css2, backgroundColor: text.secondary }) });
2161
2161
  }
2162
+ const MIN_WIDTH = 200;
2163
+ const MAX_WIDTH = 600;
2164
+ function AsideResizable({ children, asideCollapsed = false, onAsideToggle, width = 300, onWidthChange }) {
2165
+ const [isResizing, setIsResizing] = react$1.useState(false);
2166
+ const [ref] = hooks.useResizeObserver();
2167
+ const isShowingRef = react$1.useRef(false);
2168
+ const theme = useUITheme.useUITheme();
2169
+ react$1.useEffect(() => {
2170
+ if (!asideCollapsed && width <= MIN_WIDTH) {
2171
+ isShowingRef.current = true;
2172
+ onWidthChange?.(300);
2173
+ setTimeout(() => {
2174
+ isShowingRef.current = false;
2175
+ }, 200);
2176
+ }
2177
+ }, [asideCollapsed]);
2178
+ function clearListeners() {
2179
+ document.removeEventListener("mousemove", handleMouseMove);
2180
+ document.removeEventListener("mouseup", handleMouseUp);
2181
+ document.body.style.cursor = "";
2182
+ document.body.style.userSelect = "";
2183
+ }
2184
+ react$1.useEffect(() => {
2185
+ if (isResizing) {
2186
+ document.addEventListener("mousemove", handleMouseMove);
2187
+ document.addEventListener("mouseup", handleMouseUp);
2188
+ document.body.style.cursor = "col-resize";
2189
+ document.body.style.userSelect = "none";
2190
+ } else {
2191
+ clearListeners();
2192
+ }
2193
+ return () => clearListeners();
2194
+ }, [isResizing]);
2195
+ const handleMouseMove = (e) => {
2196
+ if (!isResizing) return;
2197
+ const newWidth = window.innerWidth - e.clientX;
2198
+ onWidthChange?.(Math.min(Math.max(newWidth, MIN_WIDTH), MAX_WIDTH));
2199
+ };
2200
+ react$1.useEffect(() => {
2201
+ if (width === MIN_WIDTH && !asideCollapsed && onAsideToggle && !isShowingRef.current) {
2202
+ clearListeners();
2203
+ onAsideToggle();
2204
+ }
2205
+ }, [width, asideCollapsed, onAsideToggle]);
2206
+ const handleMouseUp = () => setIsResizing(false);
2207
+ const handleMouseDown = (e) => {
2208
+ e.preventDefault();
2209
+ setIsResizing(true);
2210
+ };
2211
+ if (asideCollapsed) return null;
2212
+ return /* @__PURE__ */ jsxRuntime.jsxs(core.AppShell.Aside, { w: width, miw: 200, maw: 600, ref, children: [
2213
+ /* @__PURE__ */ jsxRuntime.jsx(
2214
+ core.Box,
2215
+ {
2216
+ w: 4,
2217
+ top: 0,
2218
+ left: 0,
2219
+ h: "100%",
2220
+ pos: "absolute",
2221
+ bg: isResizing ? theme.colors.focus : "transparent",
2222
+ sx: {
2223
+ cursor: "col-resize",
2224
+ transition: "background-color 0.2s ease"
2225
+ },
2226
+ onMouseDown: handleMouseDown
2227
+ }
2228
+ ),
2229
+ children
2230
+ ] });
2231
+ }
2162
2232
  function SelectedIndicator() {
2163
2233
  const theme = useUITheme.useUITheme();
2164
2234
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -2356,9 +2426,13 @@ function AppShellNavigation({
2356
2426
  isBackButtonVisible,
2357
2427
  footerMenuItems,
2358
2428
  roomCategories,
2429
+ right,
2430
+ asideCollapsed = true,
2431
+ onAsideToggle,
2359
2432
  children
2360
2433
  }) {
2361
- const [desktopOpened, { toggle: toggleDesktop }] = hooks.useDisclosure(true);
2434
+ const [navbarCollapsed, { toggle: toggleNavbar }] = hooks.useDisclosure(true);
2435
+ const [asideWidth, setAsideWidth] = react$1.useState(300);
2362
2436
  const theme = useUITheme.useUITheme();
2363
2437
  return /* @__PURE__ */ jsxRuntime.jsxs(
2364
2438
  core.AppShell,
@@ -2367,11 +2441,18 @@ function AppShellNavigation({
2367
2441
  styles: {
2368
2442
  navbar: {
2369
2443
  background: theme.bg.navScaled
2444
+ },
2445
+ aside: {
2446
+ background: theme.bg.navScaled
2370
2447
  }
2371
2448
  },
2372
2449
  bg: theme.bg.navIconsBg,
2373
2450
  navbar: {
2374
- width: desktopOpened ? 300 : 56,
2451
+ width: navbarCollapsed ? 300 : 56,
2452
+ breakpoint: "sm"
2453
+ },
2454
+ aside: {
2455
+ width: asideCollapsed ? 0 : asideWidth,
2375
2456
  breakpoint: "sm"
2376
2457
  },
2377
2458
  children: [
@@ -2427,17 +2508,17 @@ function AppShellNavigation({
2427
2508
  /* @__PURE__ */ jsxRuntime.jsxs(core.Stack, { align: "center", gap: 8, children: [
2428
2509
  /* @__PURE__ */ jsxRuntime.jsx(core.Divider, { w: 40, mx: 10, color: theme.neutral.transparent10 }),
2429
2510
  /* @__PURE__ */ jsxRuntime.jsx(core.Center, { sx: { cursor: "pointer", borderRadius: 24 }, bg: theme.bg.navIconsBg, h: 40, w: 40, onClick: onSettingsIconClick, children: /* @__PURE__ */ jsxRuntime.jsx(UsersSolid.SettingsBarSolid, { size: 22, color: "secondary" }) }),
2430
- !desktopOpened && /* @__PURE__ */ jsxRuntime.jsx(core.Center, { sx: { cursor: "pointer", borderRadius: 24 }, bg: theme.bg.navIconsBg, h: 40, w: 40, onClick: toggleDesktop, children: /* @__PURE__ */ jsxRuntime.jsx(UsersSolid.AngleRightSolid, { color: "secondary" }) })
2511
+ !navbarCollapsed && /* @__PURE__ */ jsxRuntime.jsx(core.Center, { sx: { cursor: "pointer", borderRadius: 24 }, bg: theme.bg.navIconsBg, h: 40, w: 40, onClick: toggleNavbar, children: /* @__PURE__ */ jsxRuntime.jsx(UsersSolid.AngleRightSolid, { color: "secondary" }) })
2431
2512
  ] })
2432
2513
  ] }),
2433
- desktopOpened && /* @__PURE__ */ jsxRuntime.jsxs(core.Stack, { justify: "space-between", w: "100%", pt: 16, pb: 10, px: 12, children: [
2514
+ navbarCollapsed && /* @__PURE__ */ jsxRuntime.jsxs(core.Stack, { justify: "space-between", w: "100%", pt: 16, pb: 10, px: 12, children: [
2434
2515
  /* @__PURE__ */ jsxRuntime.jsxs(core.Stack, { gap: 5, children: [
2435
2516
  /* @__PURE__ */ jsxRuntime.jsxs(Flex, { mb: 24, style: { width: "100%" }, justify: "space-between", align: "center", children: [
2436
2517
  /* @__PURE__ */ jsxRuntime.jsxs(Flex, { align: "center", gap: "10px", children: [
2437
2518
  isBackButtonVisible ? /* @__PURE__ */ jsxRuntime.jsx(core.Center, { onClick: onBackClick, sx: { borderRadius: 4, cursor: "pointer", padding: 2, background: theme.bg.navIconsBg }, children: /* @__PURE__ */ jsxRuntime.jsx(UsersSolid.ArrowLeftSolid, { size: 18 }) }) : /* @__PURE__ */ jsxRuntime.jsx(core.Center, { sx: { borderRadius: 4, padding: 2, background: theme.bg.navIconsBg }, children: pageItem.pageIcon ? /* @__PURE__ */ jsxRuntime.jsx(pageItem.pageIcon, { size: 18 }) : /* @__PURE__ */ jsxRuntime.jsx(UsersSolid.Globe, { size: 18 }) }),
2438
2519
  /* @__PURE__ */ jsxRuntime.jsx(core.Text, { lh: 1, c: theme.text.overPicture, children: pageItem.pageTitle || "Unknown" })
2439
2520
  ] }),
2440
- /* @__PURE__ */ jsxRuntime.jsx(Flex, { gap: 12, align: "center", children: /* @__PURE__ */ jsxRuntime.jsx(core.Center, { sx: { cursor: "pointer" }, onClick: toggleDesktop, children: /* @__PURE__ */ jsxRuntime.jsx(UsersSolid.PanelLeftSolid, { size: 22, color: "secondary" }) }) })
2521
+ /* @__PURE__ */ jsxRuntime.jsx(Flex, { gap: 12, align: "center", children: /* @__PURE__ */ jsxRuntime.jsx(core.Center, { sx: { cursor: "pointer" }, onClick: toggleNavbar, children: /* @__PURE__ */ jsxRuntime.jsx(UsersSolid.PanelLeftSolid, { size: 22, color: "secondary" }) }) })
2441
2522
  ] }),
2442
2523
  menuItems?.map((item) => /* @__PURE__ */ jsxRuntime.jsx(MenuItem, { onMenuItemClick, item }, item.id)),
2443
2524
  roomCategories && roomCategories.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(core.Stack, { gap: 8, mt: 16, children: roomCategories.map((category) => /* @__PURE__ */ jsxRuntime.jsx(RoomCategory, { category }, category.id)) })
@@ -2445,7 +2526,8 @@ function AppShellNavigation({
2445
2526
  /* @__PURE__ */ jsxRuntime.jsx(core.Stack, { gap: 5, children: footerMenuItems?.map((item) => /* @__PURE__ */ jsxRuntime.jsx(MenuItem, { onMenuItemClick, item }, item.id)) })
2446
2527
  ] })
2447
2528
  ] }) }),
2448
- /* @__PURE__ */ jsxRuntime.jsx(core.AppShell.Main, { children })
2529
+ /* @__PURE__ */ jsxRuntime.jsx(core.AppShell.Main, { children }),
2530
+ /* @__PURE__ */ jsxRuntime.jsx(AsideResizable, { asideCollapsed, onAsideToggle, width: asideWidth, onWidthChange: setAsideWidth, children: right })
2449
2531
  ]
2450
2532
  }
2451
2533
  );
@@ -5423,13 +5505,13 @@ function ActionButton({ onClick, left, right }) {
5423
5505
  }
5424
5506
  );
5425
5507
  }
5426
- const MainAction = react$1.lazy(() => Promise.resolve().then(() => require("./index-CefO0Jav.cjs")));
5427
- const Header$1 = react$1.lazy(() => Promise.resolve().then(() => require("./index-4dRzDkrK.cjs")));
5428
- const Content = react$1.lazy(() => Promise.resolve().then(() => require("./index-Dj1BaWDs.cjs")));
5508
+ const MainAction = react$1.lazy(() => Promise.resolve().then(() => require("./index-DNqtJQVl.cjs")));
5509
+ const Header$1 = react$1.lazy(() => Promise.resolve().then(() => require("./index-yjx-PRyb.cjs")));
5510
+ const Content = react$1.lazy(() => Promise.resolve().then(() => require("./index-BHcOFwds.cjs")));
5429
5511
  const Map = react$1.lazy(() => Promise.resolve().then(() => require("./index-D4PsPquZ.cjs")));
5430
5512
  const CustomContent = react$1.lazy(() => Promise.resolve().then(() => require("./index-ByrCNpS2.cjs")));
5431
- const Assets = react$1.lazy(() => Promise.resolve().then(() => require("./index-mvsa-Ixl.cjs")));
5432
- const Actions = react$1.lazy(() => Promise.resolve().then(() => require("./index-Dw22tq1e.cjs")));
5513
+ const Assets = react$1.lazy(() => Promise.resolve().then(() => require("./index-CyysTrZP.cjs")));
5514
+ const Actions = react$1.lazy(() => Promise.resolve().then(() => require("./index-nhqvNIAj.cjs")));
5433
5515
  const HOVER_BORDER_WIDTH = 1;
5434
5516
  function SodaCardCmp({ numSelected = 0, expanded = true, mainAction, header, content, map, customContent, customFooter, actions, assets, onClick }, ref) {
5435
5517
  const wrapperRef = react$1.useRef(null);
@@ -10741,4 +10823,4 @@ exports.UserMessage = UserMessage;
10741
10823
  exports.WorkspaceModal = WorkspaceModal;
10742
10824
  exports.cutText = cutText;
10743
10825
  exports.isValidClick = isValidClick;
10744
- //# sourceMappingURL=components-CV2rKBYZ.cjs.map
10826
+ //# sourceMappingURL=components-vw6J_dpp.cjs.map