@ixo/ui 0.0.7 → 0.0.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 (59) hide show
  1. package/dist/.vite/manifest.json +34 -34
  2. package/dist/{UsersSolid-CCU2B_Nz.js → UsersSolid-DNy80FwB.js} +22 -22
  3. package/dist/{UsersSolid-CCU2B_Nz.js.map → UsersSolid-DNy80FwB.js.map} +1 -1
  4. package/dist/components/AppShellNavigation/index.d.ts +9 -2
  5. package/dist/components/AppShellNavigation/index.d.ts.map +1 -1
  6. package/dist/components/MoreMenu/components/Item/index.d.ts +1 -1
  7. package/dist/components/MoreMenu/components/Item/index.d.ts.map +1 -1
  8. package/dist/components/MoreMenu/components/Item/types.d.ts +2 -0
  9. package/dist/components/MoreMenu/components/Item/types.d.ts.map +1 -1
  10. package/dist/components/MoreMenu/index.d.ts +1 -1
  11. package/dist/components/MoreMenu/index.d.ts.map +1 -1
  12. package/dist/{components-BXmsMIj2.cjs → components-DZWScQb-.cjs} +262 -138
  13. package/dist/{components-BXmsMIj2.cjs.map → components-DZWScQb-.cjs.map} +1 -1
  14. package/dist/{components-BpZDHiID.js → components-DzTVsvZR.js} +266 -142
  15. package/dist/{components-BpZDHiID.js.map → components-DzTVsvZR.js.map} +1 -1
  16. package/dist/export/components.cjs +1 -1
  17. package/dist/export/components.mjs +1 -1
  18. package/dist/export/icons/index.mjs +23 -23
  19. package/dist/{index-PWSVsc4o.cjs → index-BC_7C1s0.cjs} +3 -3
  20. package/dist/{index-PWSVsc4o.cjs.map → index-BC_7C1s0.cjs.map} +1 -1
  21. package/dist/{index-BT8oG8gb.cjs → index-BRK_Dgig.cjs} +2 -2
  22. package/dist/{index-BT8oG8gb.cjs.map → index-BRK_Dgig.cjs.map} +1 -1
  23. package/dist/{index-BjIDCEma.js → index-BVNTRXVA.js} +2 -2
  24. package/dist/{index-BjIDCEma.js.map → index-BVNTRXVA.js.map} +1 -1
  25. package/dist/{index-CzX54ash.cjs → index-BmWX35JS.cjs} +2 -2
  26. package/dist/{index-CzX54ash.cjs.map → index-BmWX35JS.cjs.map} +1 -1
  27. package/dist/{index-D9LgjgB7.cjs → index-CGhflycE.cjs} +2 -2
  28. package/dist/{index-D9LgjgB7.cjs.map → index-CGhflycE.cjs.map} +1 -1
  29. package/dist/{index-BgZ9Odny.js → index-CJGghPVZ.js} +3 -3
  30. package/dist/{index-BgZ9Odny.js.map → index-CJGghPVZ.js.map} +1 -1
  31. package/dist/{index-ClHcM2hN.cjs → index-CXEK4K6T.cjs} +2 -2
  32. package/dist/{index-ClHcM2hN.cjs.map → index-CXEK4K6T.cjs.map} +1 -1
  33. package/dist/{index-BPWOdUVc.cjs → index-Cug-jyVN.cjs} +3 -3
  34. package/dist/{index-BPWOdUVc.cjs.map → index-Cug-jyVN.cjs.map} +1 -1
  35. package/dist/{index-COR4dGTK.js → index-D53wpwI2.js} +2 -2
  36. package/dist/{index-COR4dGTK.js.map → index-D53wpwI2.js.map} +1 -1
  37. package/dist/{index-B99v2MeE.js → index-DIPzU6oa.js} +2 -2
  38. package/dist/{index-B99v2MeE.js.map → index-DIPzU6oa.js.map} +1 -1
  39. package/dist/{index-CShQJ1Tu.js → index-DKXweZ7H.js} +3 -3
  40. package/dist/{index-CShQJ1Tu.js.map → index-DKXweZ7H.js.map} +1 -1
  41. package/dist/{index-DjAL33eG.js → index-DWEzVsG1.js} +2 -2
  42. package/dist/{index-DjAL33eG.js.map → index-DWEzVsG1.js.map} +1 -1
  43. package/dist/{index-bDjw-Rwj.js → index-DYbt2pjm.js} +3 -3
  44. package/dist/{index-bDjw-Rwj.js.map → index-DYbt2pjm.js.map} +1 -1
  45. package/dist/{index-w6bUS_-b.js → index-G8i06g3O.js} +2 -2
  46. package/dist/{index-w6bUS_-b.js.map → index-G8i06g3O.js.map} +1 -1
  47. package/dist/{index-BVBsdahb.cjs → index-H6le64x9.cjs} +2 -2
  48. package/dist/{index-BVBsdahb.cjs.map → index-H6le64x9.cjs.map} +1 -1
  49. package/dist/{index-BW9S8i4L.cjs → index-JnZlYiYC.cjs} +2 -2
  50. package/dist/{index-BW9S8i4L.cjs.map → index-JnZlYiYC.cjs.map} +1 -1
  51. package/dist/{index-De8-ozZj.js → index-QdzH132w.js} +2 -2
  52. package/dist/{index-De8-ozZj.js.map → index-QdzH132w.js.map} +1 -1
  53. package/dist/{index-DCp6OZLU.js → index-p092jpgE.js} +2 -2
  54. package/dist/{index-DCp6OZLU.js.map → index-p092jpgE.js.map} +1 -1
  55. package/dist/{index-RzNv9QED.cjs → index-ssANWiHO.cjs} +2 -2
  56. package/dist/{index-RzNv9QED.cjs.map → index-ssANWiHO.cjs.map} +1 -1
  57. package/dist/{index-DeJvbb_S.cjs → index-tddGE9xT.cjs} +2 -2
  58. package/dist/{index-DeJvbb_S.cjs.map → index-tddGE9xT.cjs.map} +1 -1
  59. package/package.json +1 -1
@@ -31,12 +31,12 @@ const core = require("@mantine/core");
31
31
  const css = require("@emotion/css");
32
32
  const reactDom = require("react-dom");
33
33
  const DOMPurify = require("dompurify");
34
- const reactTinyPopover = require("react-tiny-popover");
35
- const hooks = require("@mantine/hooks");
36
34
  const useUITheme = require("./useUITheme-DqgAb7n1.cjs");
35
+ const hooks = require("@mantine/hooks");
37
36
  const Markdown = require("react-markdown");
38
37
  const remarkGfm = require("remark-gfm");
39
38
  const downshift = require("downshift");
39
+ const reactTinyPopover = require("react-tiny-popover");
40
40
  const dayjs = require("dayjs");
41
41
  const Blank = require("./Blank-DapEucFF.cjs");
42
42
  const useEventSubscribe = require("./useEventSubscribe-BTFTMdWH.cjs");
@@ -797,8 +797,8 @@ function AccordionTable({
797
797
  }
798
798
  );
799
799
  }
800
- const Header$3 = react$1.lazy(() => Promise.resolve().then(() => require("./index-BT8oG8gb.cjs")));
801
- const Footer = react$1.lazy(() => Promise.resolve().then(() => require("./index-BPWOdUVc.cjs")));
800
+ const Header$3 = react$1.lazy(() => Promise.resolve().then(() => require("./index-BRK_Dgig.cjs")));
801
+ const Footer = react$1.lazy(() => Promise.resolve().then(() => require("./index-Cug-jyVN.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-ClHcM2hN.cjs")));
885
+ const Header$2 = react$1.lazy(() => Promise.resolve().then(() => require("./index-CXEK4K6T.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-BVBsdahb.cjs")));
1320
+ const Badge = react$1.lazy(() => Promise.resolve().then(() => require("./index-H6le64x9.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);
@@ -1896,90 +1896,154 @@ function HtmlRender({ content, className }) {
1896
1896
  const safeHTML = DOMPurify.sanitize(content, { FORBID_ATTR: ["style"] });
1897
1897
  return /* @__PURE__ */ jsxRuntime.jsx(StyleDOMApplier, { children: /* @__PURE__ */ jsxRuntime.jsx("div", { className, dangerouslySetInnerHTML: { __html: safeHTML } }) });
1898
1898
  }
1899
- function Item({ label, disabled, active, onClick }) {
1900
- return /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
1899
+ const Flex = react$1.forwardRef(
1900
+ ({
1901
+ direction = "row",
1902
+ align = "stretch",
1903
+ justify = "flex-start",
1904
+ gap = 0,
1905
+ m = 0,
1906
+ mt = 0,
1907
+ mb = 0,
1908
+ ml = 0,
1909
+ mr = 0,
1910
+ mx = 0,
1911
+ my = 0,
1912
+ p = 0,
1913
+ pt = 0,
1914
+ pb = 0,
1915
+ pl = 0,
1916
+ pr = 0,
1917
+ px = 0,
1918
+ py = 0,
1919
+ bg,
1920
+ radius = 0,
1921
+ children,
1922
+ ...props
1923
+ }, ref) => {
1924
+ return /* @__PURE__ */ jsxRuntime.jsx(
1925
+ "div",
1926
+ {
1927
+ ref,
1928
+ ...props,
1929
+ style: {
1930
+ display: "flex",
1931
+ flexDirection: direction,
1932
+ alignItems: align,
1933
+ justifyContent: justify,
1934
+ gap,
1935
+ margin: m,
1936
+ marginTop: mt || my,
1937
+ marginBottom: mb || my,
1938
+ marginLeft: ml || mx,
1939
+ marginRight: mr || mx,
1940
+ padding: p,
1941
+ paddingTop: pt || py,
1942
+ paddingBottom: pb || py,
1943
+ paddingLeft: pl || px,
1944
+ paddingRight: pr || px,
1945
+ backgroundColor: bg,
1946
+ borderRadius: radius,
1947
+ ...props.style
1948
+ },
1949
+ children
1950
+ }
1951
+ );
1952
+ }
1953
+ );
1954
+ Flex.displayName = "Flex";
1955
+ function Item({ icon, label, disabled, active, onClick }) {
1956
+ const IconComponent = icon;
1957
+ return /* @__PURE__ */ jsxRuntime.jsx(
1901
1958
  "button",
1902
1959
  {
1903
- css: ({ spacing, bg }) => ({
1960
+ css: ({ bg, colors }) => ({
1904
1961
  width: "100%",
1905
- background: active ? bg.actionPanel : "none",
1962
+ borderRadius: 4,
1963
+ padding: "4px 12px",
1964
+ background: bg.navIconsBg,
1906
1965
  border: "none",
1907
- padding: spacing,
1908
1966
  cursor: disabled ? "not-allowed" : "pointer",
1909
1967
  textAlign: "left",
1910
1968
  "&:hover": {
1911
- backgroundColor: disabled ? void 0 : bg.cardHighlight
1969
+ backgroundColor: disabled ? void 0 : colors.whiteTransparent10
1912
1970
  }
1913
1971
  }),
1914
1972
  disabled,
1915
1973
  onClick,
1916
- children: /* @__PURE__ */ jsxRuntime.jsx(
1917
- Typography.Text,
1918
- {
1919
- css: ({ fontSize, text, colors }) => ({
1920
- fontSize: fontSize.s,
1921
- color: disabled ? text.secondary : active ? colors.focus : text.main
1922
- }),
1923
- children: label
1924
- }
1925
- )
1974
+ children: /* @__PURE__ */ jsxRuntime.jsxs(Flex, { align: "center", gap: 8, children: [
1975
+ IconComponent && /* @__PURE__ */ jsxRuntime.jsx(IconComponent, { size: 16 }),
1976
+ /* @__PURE__ */ jsxRuntime.jsx(
1977
+ Typography.Text,
1978
+ {
1979
+ css: ({ fontSize, text, colors }) => ({
1980
+ fontSize: fontSize.xs,
1981
+ color: disabled ? text.secondary : active ? colors.focus : text.overPicture
1982
+ }),
1983
+ children: label
1984
+ }
1985
+ )
1986
+ ] })
1926
1987
  }
1927
- ) });
1988
+ );
1928
1989
  }
1929
- function MoreMenu({ items, controlColor = "primary", positions = ["bottom", "right", "left", "top"] }) {
1930
- const { value: isVisible, toggle: toggleMenu, off: hideMenu } = useToggle(false);
1931
- return /* @__PURE__ */ jsxRuntime.jsx(
1932
- reactTinyPopover.Popover,
1990
+ function MoreMenu({ items, controlColor = "primary" }) {
1991
+ const theme = useUITheme.useUITheme();
1992
+ const [opened, setOpened] = react$1.useState(false);
1993
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1994
+ core.Popover,
1933
1995
  {
1934
- isOpen: isVisible,
1935
- positions,
1936
- align: "start",
1937
- onClickOutside: hideMenu,
1938
- content: /* @__PURE__ */ jsxRuntime.jsx(
1939
- "ul",
1940
- {
1941
- css: ({ bg, neutral }) => ({
1942
- padding: 0,
1943
- margin: 0,
1944
- listStyle: "none",
1945
- whiteSpace: "nowrap",
1946
- borderWidth: 1,
1947
- borderStyle: "solid",
1948
- borderColor: bg.actionPanel,
1949
- backgroundColor: neutral.whiteFull
1950
- }),
1951
- children: items.map((item) => /* @__PURE__ */ jsxRuntime.jsx(
1996
+ opened,
1997
+ onChange: setOpened,
1998
+ closeOnClickOutside: true,
1999
+ styles: {
2000
+ dropdown: {
2001
+ background: theme.bg.navIconsBg,
2002
+ border: "none",
2003
+ padding: "12px 4px",
2004
+ marginLeft: 10
2005
+ }
2006
+ },
2007
+ trapFocus: true,
2008
+ width: 200,
2009
+ position: "right-start",
2010
+ shadow: "md",
2011
+ children: [
2012
+ /* @__PURE__ */ jsxRuntime.jsx(core.Popover.Target, { children: /* @__PURE__ */ jsxRuntime.jsx(
2013
+ "button",
2014
+ {
2015
+ css: {
2016
+ background: "none",
2017
+ border: "none",
2018
+ padding: 0,
2019
+ cursor: "pointer",
2020
+ position: "relative",
2021
+ display: "flex",
2022
+ alignItems: "center",
2023
+ justifyContent: "center"
2024
+ },
2025
+ onClick: () => setOpened((o) => !o),
2026
+ children: /* @__PURE__ */ jsxRuntime.jsx(UsersSolid.EllipsisVSolid, { size: 20, color: controlColor })
2027
+ }
2028
+ ) }),
2029
+ /* @__PURE__ */ jsxRuntime.jsxs(core.Popover.Dropdown, { children: [
2030
+ /* @__PURE__ */ jsxRuntime.jsx(core.Text, { ml: 12, mb: 10, fz: 12, c: theme.text.secondary, children: "Page" }),
2031
+ items.map((item) => /* @__PURE__ */ jsxRuntime.jsx(
1952
2032
  Item,
1953
2033
  {
2034
+ icon: item.icon,
1954
2035
  label: item.label,
1955
2036
  disabled: item.disabled,
1956
2037
  active: item.active,
1957
2038
  onClick: () => {
1958
2039
  item.onClick();
1959
- hideMenu();
2040
+ setOpened(false);
1960
2041
  }
1961
2042
  },
1962
2043
  item.label
1963
2044
  ))
1964
- }
1965
- ),
1966
- children: /* @__PURE__ */ jsxRuntime.jsx(
1967
- "button",
1968
- {
1969
- css: {
1970
- background: "none",
1971
- border: "none",
1972
- padding: 0,
1973
- cursor: "pointer",
1974
- position: "relative",
1975
- display: "flex",
1976
- alignItems: "center",
1977
- justifyContent: "center"
1978
- },
1979
- onClick: toggleMenu,
1980
- children: /* @__PURE__ */ jsxRuntime.jsx(UsersSolid.EllipsisVSolid, { color: controlColor })
1981
- }
1982
- )
2045
+ ] })
2046
+ ]
1983
2047
  }
1984
2048
  );
1985
2049
  }
@@ -2095,62 +2159,6 @@ function Avatar({ src, rounded = true, size = 62, did }) {
2095
2159
  }
2096
2160
  return /* @__PURE__ */ jsxRuntime.jsx(UsersSolid.User, { css: ({ text }) => ({ ...css2, backgroundColor: text.secondary }) });
2097
2161
  }
2098
- const Flex = react$1.forwardRef(
2099
- ({
2100
- direction = "row",
2101
- align = "stretch",
2102
- justify = "flex-start",
2103
- gap = 0,
2104
- m = 0,
2105
- mt = 0,
2106
- mb = 0,
2107
- ml = 0,
2108
- mr = 0,
2109
- mx = 0,
2110
- my = 0,
2111
- p = 0,
2112
- pt = 0,
2113
- pb = 0,
2114
- pl = 0,
2115
- pr = 0,
2116
- px = 0,
2117
- py = 0,
2118
- bg,
2119
- radius = 0,
2120
- children,
2121
- ...props
2122
- }, ref) => {
2123
- return /* @__PURE__ */ jsxRuntime.jsx(
2124
- "div",
2125
- {
2126
- ref,
2127
- ...props,
2128
- style: {
2129
- display: "flex",
2130
- flexDirection: direction,
2131
- alignItems: align,
2132
- justifyContent: justify,
2133
- gap,
2134
- margin: m,
2135
- marginTop: mt || my,
2136
- marginBottom: mb || my,
2137
- marginLeft: ml || mx,
2138
- marginRight: mr || mx,
2139
- padding: p,
2140
- paddingTop: pt || py,
2141
- paddingBottom: pb || py,
2142
- paddingLeft: pl || px,
2143
- paddingRight: pr || px,
2144
- backgroundColor: bg,
2145
- borderRadius: radius,
2146
- ...props.style
2147
- },
2148
- children
2149
- }
2150
- );
2151
- }
2152
- );
2153
- Flex.displayName = "Flex";
2154
2162
  function SpaceItem({ icon, id, onClick }) {
2155
2163
  const { hovered, ref } = hooks.useHover();
2156
2164
  const theme = useUITheme.useUITheme();
@@ -2173,7 +2181,82 @@ function SpaceItem({ icon, id, onClick }) {
2173
2181
  }
2174
2182
  );
2175
2183
  }
2176
- function MenuItem({ item, onMenuItemClick }) {
2184
+ function MenuItem({ item, onMenuItemClick, depth = 0 }) {
2185
+ const { hovered, ref } = hooks.useHover();
2186
+ const theme = useUITheme.useUITheme();
2187
+ const { value: isExpanded, toggle } = useToggle(false);
2188
+ const hasChildren = item.children && item.children.length > 0;
2189
+ const handleItemClick = () => {
2190
+ onMenuItemClick(item);
2191
+ };
2192
+ const handleToggleClick = (e) => {
2193
+ e.stopPropagation();
2194
+ toggle();
2195
+ };
2196
+ return /* @__PURE__ */ jsxRuntime.jsxs(core.Stack, { gap: 1, children: [
2197
+ /* @__PURE__ */ jsxRuntime.jsxs(
2198
+ Flex,
2199
+ {
2200
+ ref,
2201
+ align: "center",
2202
+ gap: 8,
2203
+ justify: "space-between",
2204
+ pl: 12 + depth * 16,
2205
+ pr: 12,
2206
+ py: 6,
2207
+ style: {
2208
+ cursor: "pointer",
2209
+ borderRadius: 8,
2210
+ backgroundColor: item.isActive ? theme.bg.navIconsBg : hovered ? theme.bg.navIconsBg : "transparent",
2211
+ transform: hovered ? "translateX(4px)" : "translateX(0px)",
2212
+ transition: "all 0.2s ease"
2213
+ },
2214
+ onClick: handleItemClick,
2215
+ children: [
2216
+ /* @__PURE__ */ jsxRuntime.jsxs(Flex, { align: "center", gap: 4, children: [
2217
+ /* @__PURE__ */ jsxRuntime.jsx(item.icon, { size: 20, color: item.isActive ? "overPicture" : "secondary" }),
2218
+ /* @__PURE__ */ jsxRuntime.jsx(core.Text, { fz: 14, fw: 500, c: item.isActive ? theme.neutral.lightGray : theme.text.secondary, style: { flex: 1 }, children: item.name })
2219
+ ] }),
2220
+ /* @__PURE__ */ jsxRuntime.jsxs(Flex, { children: [
2221
+ hasChildren && /* @__PURE__ */ jsxRuntime.jsx(
2222
+ core.Center,
2223
+ {
2224
+ onClick: handleToggleClick,
2225
+ p: 4,
2226
+ sx: {
2227
+ cursor: "pointer",
2228
+ borderRadius: 4,
2229
+ transform: isExpanded ? "rotate(-90deg)" : "rotate(0deg)",
2230
+ transition: "transform 0.2s ease",
2231
+ "&:hover": {
2232
+ backgroundColor: theme.neutral.transparent10
2233
+ }
2234
+ },
2235
+ children: /* @__PURE__ */ jsxRuntime.jsx(UsersSolid.AngleLeftSolid, { size: 12, color: "secondary" })
2236
+ }
2237
+ ),
2238
+ item?.actions && item.actions.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
2239
+ core.Center,
2240
+ {
2241
+ sx: {
2242
+ cursor: "pointer",
2243
+ borderRadius: 4,
2244
+ transition: "transform 0.2s ease",
2245
+ "&:hover": {
2246
+ backgroundColor: theme.neutral.transparent10
2247
+ }
2248
+ },
2249
+ children: /* @__PURE__ */ jsxRuntime.jsx(MoreMenu, { items: item.actions, controlColor: "secondary" })
2250
+ }
2251
+ )
2252
+ ] })
2253
+ ]
2254
+ }
2255
+ ),
2256
+ hasChildren && isExpanded && /* @__PURE__ */ jsxRuntime.jsx(core.Stack, { gap: 1, children: item.children?.map((childItem) => /* @__PURE__ */ jsxRuntime.jsx(MenuItem, { item: childItem, onMenuItemClick, depth: depth + 1 }, childItem.id)) })
2257
+ ] });
2258
+ }
2259
+ function RoomItem({ room }) {
2177
2260
  const { hovered, ref } = hooks.useHover();
2178
2261
  const theme = useUITheme.useUITheme();
2179
2262
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -2183,22 +2266,61 @@ function MenuItem({ item, onMenuItemClick }) {
2183
2266
  align: "center",
2184
2267
  gap: 8,
2185
2268
  px: 12,
2186
- py: 6,
2269
+ py: 4,
2270
+ ml: 16,
2187
2271
  style: {
2188
2272
  cursor: "pointer",
2189
- borderRadius: 8,
2190
- backgroundColor: item.isActive ? theme.bg.navIconsBg : hovered ? theme.bg.navIconsBg : "transparent",
2191
- transform: hovered ? "translateX(4px)" : "translateX(0px)",
2192
- transition: "all 0.2s ease"
2273
+ borderRadius: 6,
2274
+ backgroundColor: room.isActive || hovered ? theme.neutral.transparent10 : "transparent",
2275
+ transform: hovered ? "translateX(2px)" : "translateX(0px)",
2276
+ transition: "all 0.15s ease"
2193
2277
  },
2194
- onClick: () => onMenuItemClick(item),
2278
+ onClick: () => room.onClick(room.id),
2195
2279
  children: [
2196
- /* @__PURE__ */ jsxRuntime.jsx(item.icon, { size: 20, color: item.isActive ? "overPicture" : "secondary" }),
2197
- /* @__PURE__ */ jsxRuntime.jsx(core.Text, { fz: 14, fw: 500, c: item.isActive ? theme.neutral.lightGray : theme.text.secondary, children: item.name })
2280
+ /* @__PURE__ */ jsxRuntime.jsx(room.icon, { size: 16, color: "secondary" }),
2281
+ /* @__PURE__ */ jsxRuntime.jsx(core.Text, { fz: 13, c: theme.text.secondary, children: room.name })
2198
2282
  ]
2199
2283
  }
2200
2284
  );
2201
2285
  }
2286
+ function RoomCategory({ category }) {
2287
+ const { hovered, ref } = hooks.useHover();
2288
+ const theme = useUITheme.useUITheme();
2289
+ const { value, toggle } = useToggle(false);
2290
+ return /* @__PURE__ */ jsxRuntime.jsxs(core.Stack, { gap: 2, children: [
2291
+ /* @__PURE__ */ jsxRuntime.jsxs(
2292
+ Flex,
2293
+ {
2294
+ ref,
2295
+ align: "center",
2296
+ justify: "space-between",
2297
+ px: 12,
2298
+ py: 4,
2299
+ style: {
2300
+ cursor: "pointer",
2301
+ borderRadius: 6,
2302
+ backgroundColor: hovered ? theme.neutral.transparent50 : "transparent",
2303
+ transition: "all 0.15s ease"
2304
+ },
2305
+ onClick: toggle,
2306
+ children: [
2307
+ /* @__PURE__ */ jsxRuntime.jsx(core.Text, { fz: 12, c: theme.neutral.lightGray, children: category.name }),
2308
+ /* @__PURE__ */ jsxRuntime.jsx(
2309
+ core.Center,
2310
+ {
2311
+ sx: {
2312
+ transform: value ? "rotate(-90deg)" : "rotate(0deg)",
2313
+ transition: "transform 0.2s ease"
2314
+ },
2315
+ children: /* @__PURE__ */ jsxRuntime.jsx(UsersSolid.AngleLeftSolid, { size: 12, color: "secondary" })
2316
+ }
2317
+ )
2318
+ ]
2319
+ }
2320
+ ),
2321
+ !value && /* @__PURE__ */ jsxRuntime.jsx(core.Stack, { gap: 1, children: category.rooms.map((room) => /* @__PURE__ */ jsxRuntime.jsx(RoomItem, { room }, room.id)) })
2322
+ ] });
2323
+ }
2202
2324
  function AppShellNavigation({
2203
2325
  spaces,
2204
2326
  pageItem,
@@ -2212,6 +2334,7 @@ function AppShellNavigation({
2212
2334
  onBackClick,
2213
2335
  isBackButtonVisible,
2214
2336
  footerMenuItems,
2337
+ roomCategories,
2215
2338
  children
2216
2339
  }) {
2217
2340
  const [desktopOpened, { toggle: toggleDesktop }] = hooks.useDisclosure(true);
@@ -2235,7 +2358,7 @@ function AppShellNavigation({
2235
2358
  /* @__PURE__ */ jsxRuntime.jsxs(core.Stack, { p: 8, w: 56, justify: "space-between", h: "100%", bg: theme.bg.navSpaces, children: [
2236
2359
  /* @__PURE__ */ jsxRuntime.jsxs(core.Stack, { align: "center", style: { flex: 1, overflowY: "auto", overflowX: "hidden" }, gap: 8, children: [
2237
2360
  /* @__PURE__ */ jsxRuntime.jsx(core.Center, { sx: { cursor: "pointer", borderRadius: 24 }, h: 40, w: 40, onClick: companyIcon.onClick, children: typeof companyIcon.icon === "string" ? /* @__PURE__ */ jsxRuntime.jsx(core.Image, { radius: 24, src: companyIcon.icon, w: 32, h: 32 }) : companyIcon.icon }),
2238
- /* @__PURE__ */ jsxRuntime.jsx(core.Center, { sx: { cursor: "pointer", borderRadius: 24 }, bg: theme.bg.navIconsBg, h: 40, w: 40, onClick: avatarIcon.onClick, children: typeof avatarIcon.icon === "string" ? /* @__PURE__ */ jsxRuntime.jsx(core.Image, { radius: 24, src: avatarIcon.icon, w: 32, h: 32 }) : avatarIcon.icon }),
2361
+ avatarIcon && /* @__PURE__ */ jsxRuntime.jsx(core.Center, { sx: { cursor: "pointer", borderRadius: 24 }, bg: theme.bg.navIconsBg, h: 40, w: 40, onClick: avatarIcon.onClick, children: typeof avatarIcon.icon === "string" ? /* @__PURE__ */ jsxRuntime.jsx(core.Image, { radius: 24, src: avatarIcon.icon, w: 32, h: 32 }) : avatarIcon.icon }),
2239
2362
  /* @__PURE__ */ jsxRuntime.jsx(core.Divider, { w: 40, mx: 10, color: theme.neutral.transparent10 }),
2240
2363
  /* @__PURE__ */ jsxRuntime.jsx(
2241
2364
  core.Stack,
@@ -2277,7 +2400,8 @@ function AppShellNavigation({
2277
2400
  ] }),
2278
2401
  /* @__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" }) }) })
2279
2402
  ] }),
2280
- menuItems?.map((item) => /* @__PURE__ */ jsxRuntime.jsx(MenuItem, { onMenuItemClick, item }, item.id))
2403
+ menuItems?.map((item) => /* @__PURE__ */ jsxRuntime.jsx(MenuItem, { onMenuItemClick, item }, item.id)),
2404
+ roomCategories && roomCategories.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(core.Stack, { gap: 8, mt: 16, children: roomCategories.map((category) => /* @__PURE__ */ jsxRuntime.jsx(RoomCategory, { category }, category.id)) })
2281
2405
  ] }),
2282
2406
  /* @__PURE__ */ jsxRuntime.jsx(core.Stack, { gap: 5, children: footerMenuItems?.map((item) => /* @__PURE__ */ jsxRuntime.jsx(MenuItem, { onMenuItemClick, item }, item.id)) })
2283
2407
  ] })
@@ -5214,13 +5338,13 @@ function ActionButton({ onClick, left, right }) {
5214
5338
  }
5215
5339
  );
5216
5340
  }
5217
- const MainAction = react$1.lazy(() => Promise.resolve().then(() => require("./index-CzX54ash.cjs")));
5218
- const Header$1 = react$1.lazy(() => Promise.resolve().then(() => require("./index-D9LgjgB7.cjs")));
5219
- const Content = react$1.lazy(() => Promise.resolve().then(() => require("./index-BW9S8i4L.cjs")));
5341
+ const MainAction = react$1.lazy(() => Promise.resolve().then(() => require("./index-BmWX35JS.cjs")));
5342
+ const Header$1 = react$1.lazy(() => Promise.resolve().then(() => require("./index-CGhflycE.cjs")));
5343
+ const Content = react$1.lazy(() => Promise.resolve().then(() => require("./index-JnZlYiYC.cjs")));
5220
5344
  const Map = react$1.lazy(() => Promise.resolve().then(() => require("./index-D4PsPquZ.cjs")));
5221
5345
  const CustomContent = react$1.lazy(() => Promise.resolve().then(() => require("./index-ByrCNpS2.cjs")));
5222
- const Assets = react$1.lazy(() => Promise.resolve().then(() => require("./index-RzNv9QED.cjs")));
5223
- const Actions = react$1.lazy(() => Promise.resolve().then(() => require("./index-PWSVsc4o.cjs")));
5346
+ const Assets = react$1.lazy(() => Promise.resolve().then(() => require("./index-ssANWiHO.cjs")));
5347
+ const Actions = react$1.lazy(() => Promise.resolve().then(() => require("./index-BC_7C1s0.cjs")));
5224
5348
  const HOVER_BORDER_WIDTH = 1;
5225
5349
  function SodaCardCmp({ numSelected = 0, expanded = true, mainAction, header, content, map, customContent, customFooter, actions, assets, onClick }, ref) {
5226
5350
  const wrapperRef = react$1.useRef(null);
@@ -10532,4 +10656,4 @@ exports.UserMessage = UserMessage;
10532
10656
  exports.WorkspaceModal = WorkspaceModal;
10533
10657
  exports.cutText = cutText;
10534
10658
  exports.isValidClick = isValidClick;
10535
- //# sourceMappingURL=components-BXmsMIj2.cjs.map
10659
+ //# sourceMappingURL=components-DZWScQb-.cjs.map