labsense-ui-kit 1.3.74 → 1.3.76

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/index.js CHANGED
@@ -9,6 +9,28 @@ var reactHotToast = require('react-hot-toast');
9
9
  var reactRouterDom = require('react-router-dom');
10
10
  var reactI18next = require('react-i18next');
11
11
 
12
+ function _arrayLikeToArray(r, a) {
13
+ (null == a || a > r.length) && (a = r.length);
14
+ for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
15
+ return n;
16
+ }
17
+ function _createForOfIteratorHelperLoose(r, e) {
18
+ var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
19
+ if (t) return (t = t.call(r)).next.bind(t);
20
+ if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) {
21
+ t && (r = t);
22
+ var o = 0;
23
+ return function () {
24
+ return o >= r.length ? {
25
+ done: !0
26
+ } : {
27
+ done: !1,
28
+ value: r[o++]
29
+ };
30
+ };
31
+ }
32
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
33
+ }
12
34
  function _extends() {
13
35
  return _extends = Object.assign ? Object.assign.bind() : function (n) {
14
36
  for (var e = 1; e < arguments.length; e++) {
@@ -21,6 +43,13 @@ function _extends() {
21
43
  function _taggedTemplateLiteralLoose(e, t) {
22
44
  return t || (t = e.slice(0)), e.raw = t, e;
23
45
  }
46
+ function _unsupportedIterableToArray(r, a) {
47
+ if (r) {
48
+ if ("string" == typeof r) return _arrayLikeToArray(r, a);
49
+ var t = {}.toString.call(r).slice(8, -1);
50
+ return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
51
+ }
52
+ }
24
53
 
25
54
  var Action = function Action(_ref) {
26
55
  var size = _ref.size,
@@ -10739,48 +10768,49 @@ var ProgressBar = function ProgressBar(_ref3) {
10739
10768
  }));
10740
10769
  };
10741
10770
 
10742
- var _templateObject$n, _templateObject2$j, _templateObject3$c, _templateObject4$9, _templateObject5$8, _templateObject6$8, _templateObject7$6;
10743
- var SidebarContainer = styled__default.div(_templateObject$n || (_templateObject$n = _taggedTemplateLiteralLoose(["\n width: 68px;\n max-width: 68px;\n height: 100vh;\n background: ", ";\n transition: width 0.5s cubic-bezier(0.4, 0, 0.2, 1), max-width 0.5s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n flex-direction: column;\n align-items: start;\n padding: 20px;\n position: fixed;\n left: 0;\n top: 0;\n overflow: hidden;\n z-index: 998;\n justify-content: space-between;\n\n /* Expand on hover */\n &:hover {\n width: max-content;\n max-width: 400px;\n\n /* You can also add a class for children */\n span, .expandable {\n opacity: 1;\n visibility: visible;\n transform: translateX(0);\n }\n }\n"])), function (_ref) {
10744
- var $background = _ref.$background,
10745
- theme = _ref.theme;
10771
+ var _templateObject$n, _templateObject2$j, _templateObject3$c, _templateObject4$9, _templateObject5$8, _templateObject6$8, _templateObject7$6, _templateObject8$5, _templateObject9$5;
10772
+ var MOBILE_BREAKPOINT = '768px';
10773
+ var Overlay = styled__default.div(_templateObject$n || (_templateObject$n = _taggedTemplateLiteralLoose(["\n display: none;\n \n @media (max-width: ", ") {\n display: block;\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n z-index: 997;\n opacity: ", ";\n visibility: ", ";\n transition: opacity 0.3s ease, visibility 0.3s ease;\n }\n"])), MOBILE_BREAKPOINT, function (_ref) {
10774
+ var $isOpen = _ref.$isOpen;
10775
+ return $isOpen ? 1 : 0;
10776
+ }, function (_ref2) {
10777
+ var $isOpen = _ref2.$isOpen;
10778
+ return $isOpen ? 'visible' : 'hidden';
10779
+ });
10780
+ var HamburgerButton = styled__default.button(_templateObject2$j || (_templateObject2$j = _taggedTemplateLiteralLoose(["\n display: none;\n \n @media (max-width: ", ") {\n display: flex;\n position: fixed;\n top: 20px;\n left: 20px;\n z-index: 999;\n background: ", ";\n border: none;\n border-radius: 8px;\n padding: 12px;\n cursor: pointer;\n align-items: center;\n justify-content: center;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n transition: transform 0.2s ease;\n\n &:active {\n transform: scale(0.95);\n }\n }\n"])), MOBILE_BREAKPOINT, function (_ref3) {
10781
+ var $background = _ref3.$background,
10782
+ theme = _ref3.theme;
10746
10783
  return $background || theme.vms.accent.softBlue;
10747
10784
  });
10748
- var SidebarLink = styled__default(reactRouterDom.NavLink)(_templateObject2$j || (_templateObject2$j = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: center;\n height: 28px;\n width: 100%;\n gap: 10px;\n cursor: pointer;\n border-radius: 4px;\n text-decoration: none;\n transition: none;\n padding: ", ";\n color: ", ";\n\n /* Hover state */\n &:hover {\n color: ", ";\n background: ", ";\n \n /* Make icons white on hover */\n svg {\n color: ", " !important;\n transition: none;\n }\n }\n\n /* Active link state */\n &.active {\n color: ", ";\n background: ", ";\n \n /* Make icons white when active */\n svg {\n color: ", " !important;\n transition: none;\n }\n }\n"])), function (_ref2) {
10749
- var $padding = _ref2.$padding;
10750
- return $padding;
10751
- }, function (_ref3) {
10752
- var theme = _ref3.theme;
10753
- return theme.vms.text.medium;
10754
- }, function (_ref4) {
10755
- var theme = _ref4.theme;
10756
- return theme.vms.text.white;
10757
- }, function (_ref5) {
10758
- var theme = _ref5.theme;
10759
- return theme.vms["default"].primary;
10785
+ var SidebarContainer = styled__default.div(_templateObject3$c || (_templateObject3$c = _taggedTemplateLiteralLoose(["\n width: 68px;\n max-width: 68px;\n height: 100vh;\n background: ", ";\n transition: width 0.5s cubic-bezier(0.4, 0, 0.2, 1), max-width 0.5s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n flex-direction: column;\n align-items: start;\n padding: 20px;\n position: fixed;\n left: 0;\n top: 0;\n overflow: hidden;\n z-index: 998;\n justify-content: space-between;\n gap: 24px;\n\n /* Expand on hover */\n &:hover {\n width: max-content;\n max-width: 400px;\n\n /* You can also add a class for children */\n span, .expandable {\n opacity: 1;\n visibility: visible;\n transform: translateX(0);\n }\n }\n\n /* Mobile styles */\n @media (max-width: ", ") {\n transform: translateX(", ");\n transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n width: 280px;\n max-width: 280px;\n box-shadow: ", ";\n\n /* Always show text on mobile when open */\n span, .expandable {\n opacity: ", ";\n visibility: ", ";\n transform: translateX(0);\n }\n\n /* Disable hover expansion on mobile */\n &:hover {\n width: 280px;\n max-width: 280px;\n }\n }\n"])), function (_ref4) {
10786
+ var $background = _ref4.$background,
10787
+ theme = _ref4.theme;
10788
+ return $background || theme.vms.accent.softBlue;
10789
+ }, MOBILE_BREAKPOINT, function (_ref5) {
10790
+ var $isMobileOpen = _ref5.$isMobileOpen;
10791
+ return $isMobileOpen ? '0' : '-100%';
10760
10792
  }, function (_ref6) {
10761
- var theme = _ref6.theme;
10762
- return theme.vms.text.white;
10793
+ var $isMobileOpen = _ref6.$isMobileOpen;
10794
+ return $isMobileOpen ? '2px 0 8px rgba(0, 0, 0, 0.15)' : 'none';
10763
10795
  }, function (_ref7) {
10764
- var theme = _ref7.theme;
10765
- return theme.vms.text.white;
10796
+ var $isMobileOpen = _ref7.$isMobileOpen;
10797
+ return $isMobileOpen ? 1 : 0;
10766
10798
  }, function (_ref8) {
10767
- var theme = _ref8.theme;
10768
- return theme.vms["default"].primary;
10769
- }, function (_ref9) {
10770
- var theme = _ref9.theme;
10771
- return theme.vms.text.white;
10772
- });
10773
- var IconWrapper$2 = styled__default.div(_templateObject3$c || (_templateObject3$c = _taggedTemplateLiteralLoose(["\n background: ", ";\n transition: none;\n padding: 4px;\n border-radius: 4px;\n width: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n"])), function (_ref10) {
10774
- var $selected = _ref10.$selected,
10775
- theme = _ref10.theme;
10776
- return $selected ? theme.vms["default"].primary : theme.vms["default"].tertiary;
10799
+ var $isMobileOpen = _ref8.$isMobileOpen;
10800
+ return $isMobileOpen ? 'visible' : 'hidden';
10777
10801
  });
10778
- var StyledContainer = styled__default(Container)(_templateObject4$9 || (_templateObject4$9 = _taggedTemplateLiteralLoose(["\n transition: none;\n\n svg {\n transition: none;\n }\n\n /* Parent hover / active */\n &:hover,\n &.active {\n svg {\n color: ", " !important;\n }\n }\n\n /* 2nd child reacts ONLY when parent is hovered */\n &:hover > div:nth-child(2) {\n svg {\n color: ", " !important;\n\n path {\n stroke: ", " !important;\n }\n }\n }\n\n /* Default state for 2nd child */\n > div:nth-child(2) {\n svg {\n color: ", " !important;\n\n path {\n stroke: ", " !important;\n }\n }\n }\n"])), function (_ref11) {
10802
+ var SidebarLink = styled__default(reactRouterDom.NavLink)(_templateObject4$9 || (_templateObject4$9 = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: center;\n height: 28px;\n width: 100%;\n gap: 10px;\n cursor: pointer;\n border-radius: 4px;\n text-decoration: none;\n transition: none;\n padding: ", ";\n color: ", ";\n\n /* Hover state */\n &:hover {\n color: ", ";\n background: ", ";\n \n /* Make icons white on hover */\n svg {\n color: ", " !important;\n transition: none;\n }\n }\n\n /* Active link state */\n &.active {\n color: ", ";\n background: ", ";\n \n /* Make icons white when active */\n svg {\n color: ", " !important;\n transition: none;\n }\n }\n"])), function (_ref9) {
10803
+ var $padding = _ref9.$padding;
10804
+ return $padding;
10805
+ }, function (_ref10) {
10806
+ var theme = _ref10.theme;
10807
+ return theme.vms.text.medium;
10808
+ }, function (_ref11) {
10779
10809
  var theme = _ref11.theme;
10780
10810
  return theme.vms.text.white;
10781
10811
  }, function (_ref12) {
10782
10812
  var theme = _ref12.theme;
10783
- return theme.vms.text.white;
10813
+ return theme.vms["default"].primary;
10784
10814
  }, function (_ref13) {
10785
10815
  var theme = _ref13.theme;
10786
10816
  return theme.vms.text.white;
@@ -10789,37 +10819,68 @@ var StyledContainer = styled__default(Container)(_templateObject4$9 || (_templat
10789
10819
  return theme.vms.text.white;
10790
10820
  }, function (_ref15) {
10791
10821
  var theme = _ref15.theme;
10822
+ return theme.vms["default"].primary;
10823
+ }, function (_ref16) {
10824
+ var theme = _ref16.theme;
10825
+ return theme.vms.text.white;
10826
+ });
10827
+ var IconWrapper$2 = styled__default.div(_templateObject5$8 || (_templateObject5$8 = _taggedTemplateLiteralLoose(["\n background: ", ";\n transition: none;\n padding: 4px;\n border-radius: 4px;\n width: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n"])), function (_ref17) {
10828
+ var $selected = _ref17.$selected,
10829
+ theme = _ref17.theme;
10830
+ return $selected ? theme.vms["default"].primary : theme.vms["default"].tertiary;
10831
+ });
10832
+ var StyledContainer = styled__default(Container)(_templateObject6$8 || (_templateObject6$8 = _taggedTemplateLiteralLoose(["\n transition: none;\n\n svg {\n transition: none;\n }\n\n /* Parent hover / active */\n &:hover,\n &.active {\n svg {\n color: ", " !important;\n }\n }\n\n /* 2nd child reacts ONLY when parent is hovered */\n &:hover > div:nth-child(2) {\n svg {\n color: ", " !important;\n\n path {\n stroke: ", " !important;\n }\n }\n }\n\n /* Default state for 2nd child */\n > div:nth-child(2) {\n svg {\n color: ", " !important;\n\n path {\n stroke: ", " !important;\n }\n }\n }\n"])), function (_ref18) {
10833
+ var theme = _ref18.theme;
10834
+ return theme.vms.text.white;
10835
+ }, function (_ref19) {
10836
+ var theme = _ref19.theme;
10837
+ return theme.vms.text.white;
10838
+ }, function (_ref20) {
10839
+ var theme = _ref20.theme;
10840
+ return theme.vms.text.white;
10841
+ }, function (_ref21) {
10842
+ var theme = _ref21.theme;
10843
+ return theme.vms.text.white;
10844
+ }, function (_ref22) {
10845
+ var theme = _ref22.theme;
10792
10846
  return theme.vms.text.medium;
10793
10847
  });
10794
- var Logo = styled__default.div(_templateObject5$8 || (_templateObject5$8 = _taggedTemplateLiteralLoose(["\n transition: none;\n display: flex;\n width: 100%;\n min-width: max-content;\n height: 32px;\n align-items: center;\n justify-content: center;\n gap: 10px;\n"])));
10795
- var TextContainer = styled__default.span(_templateObject6$8 || (_templateObject6$8 = _taggedTemplateLiteralLoose(["\n white-space: nowrap;\n opacity: 0;\n visibility: hidden;\n transform: translateX(-10px);\n transition: all 0.3s ease;\n padding: ", ";\n font-size: ", ";\n font-weight: ", ";\n\n ", ":hover & {\n opacity: 1;\n visibility: visible;\n transform: translateX(0);\n }\n"])), function (_ref16) {
10796
- var $padding = _ref16.$padding;
10848
+ var Logo = styled__default.div(_templateObject7$6 || (_templateObject7$6 = _taggedTemplateLiteralLoose(["\n transition: none;\n display: flex;\n width: 100%;\n min-width: max-content;\n height: 32px;\n align-items: center;\n justify-content: center;\n gap: 10px;\n"])));
10849
+ var TextContainer = styled__default.span(_templateObject8$5 || (_templateObject8$5 = _taggedTemplateLiteralLoose(["\n white-space: nowrap;\n opacity: 0;\n visibility: hidden;\n transform: translateX(-10px);\n transition: all 0.3s ease;\n padding: ", ";\n font-size: ", ";\n font-weight: ", ";\n\n ", ":hover & {\n opacity: 1;\n visibility: visible;\n transform: translateX(0);\n }\n\n /* Mobile: Always visible when sidebar is open */\n @media (max-width: ", ") {\n opacity: 1;\n visibility: visible;\n transform: translateX(0);\n }\n"])), function (_ref23) {
10850
+ var $padding = _ref23.$padding;
10797
10851
  return $padding;
10798
- }, function (_ref17) {
10799
- var $fontSize = _ref17.$fontSize;
10852
+ }, function (_ref24) {
10853
+ var $fontSize = _ref24.$fontSize;
10800
10854
  return $fontSize || '20px';
10801
- }, function (_ref18) {
10802
- var $fontWeight = _ref18.$fontWeight;
10855
+ }, function (_ref25) {
10856
+ var $fontWeight = _ref25.$fontWeight;
10803
10857
  return $fontWeight || '500';
10804
- }, SidebarContainer);
10805
- var NotificationBadge = styled__default.div(_templateObject7$6 || (_templateObject7$6 = _taggedTemplateLiteralLoose(["\n position: ", ";\n // top: -4px;\n // right: 4px;\n background: red;\n color: white;\n font-size: 10px;\n font-weight: bold;\n border-radius: 50%;\n padding: 2px 5px;\n min-width: 16px;\n height: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 100;\n width: max-content;\n"])), function (_ref19) {
10806
- var $position = _ref19.$position;
10858
+ }, SidebarContainer, MOBILE_BREAKPOINT);
10859
+ var NotificationBadge = styled__default.div(_templateObject9$5 || (_templateObject9$5 = _taggedTemplateLiteralLoose(["\n position: ", ";\n // top: -4px;\n // right: 4px;\n background: red;\n color: white;\n font-size: 10px;\n font-weight: bold;\n border-radius: 50%;\n padding: 2px 5px;\n min-width: 16px;\n height: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 100;\n width: max-content;\n"])), function (_ref26) {
10860
+ var $position = _ref26.$position;
10807
10861
  return $position || 'absolute';
10808
10862
  });
10809
- var Sidebar = function Sidebar(_ref20) {
10810
- var logo = _ref20.logo,
10811
- content = _ref20.content,
10812
- background = _ref20.background,
10813
- ProfileContent = _ref20.ProfileContent,
10814
- _ref20$isExpanded = _ref20.isExpanded,
10815
- isExpanded = _ref20$isExpanded === void 0 ? false : _ref20$isExpanded,
10816
- setIsExpanded = _ref20.setIsExpanded;
10863
+ var Sidebar = function Sidebar(_ref27) {
10864
+ var logo = _ref27.logo,
10865
+ content = _ref27.content,
10866
+ background = _ref27.background,
10867
+ ProfileContent = _ref27.ProfileContent,
10868
+ _ref27$isExpanded = _ref27.isExpanded,
10869
+ isExpanded = _ref27$isExpanded === void 0 ? false : _ref27$isExpanded,
10870
+ setIsExpanded = _ref27.setIsExpanded;
10817
10871
  var location = reactRouterDom.useLocation();
10818
10872
  var _useState = React.useState({}),
10819
10873
  openMenus = _useState[0],
10820
10874
  setOpenMenus = _useState[1];
10875
+ var _useState2 = React.useState(false),
10876
+ isMobileOpen = _useState2[0],
10877
+ setIsMobileOpen = _useState2[1];
10878
+ var _useState3 = React.useState(false),
10879
+ isMobile = _useState3[0],
10880
+ setIsMobile = _useState3[1];
10821
10881
  var isExpandedRef = React.useRef(isExpanded);
10822
- var _useState2 = React.useState(function () {
10882
+ var sidebarRef = React.useRef(null);
10883
+ var _useState4 = React.useState(function () {
10823
10884
  var container = document.getElementById('badge-portal-container');
10824
10885
  if (!container) {
10825
10886
  container = document.createElement('div');
@@ -10831,16 +10892,39 @@ var Sidebar = function Sidebar(_ref20) {
10831
10892
  }
10832
10893
  return container;
10833
10894
  }),
10834
- badgePortalContainer = _useState2[0];
10895
+ badgePortalContainer = _useState4[0];
10896
+ React.useEffect(function () {
10897
+ var checkMobile = function checkMobile() {
10898
+ setIsMobile(window.innerWidth <= 768);
10899
+ };
10900
+ checkMobile();
10901
+ window.addEventListener('resize', checkMobile);
10902
+ return function () {
10903
+ window.removeEventListener('resize', checkMobile);
10904
+ };
10905
+ }, []);
10835
10906
  React.useEffect(function () {
10836
10907
  isExpandedRef.current = isExpanded;
10837
10908
  if (!isExpanded) setOpenMenus({});
10838
10909
  }, [isExpanded]);
10910
+ var toggleMobileMenu = React.useCallback(function () {
10911
+ setIsMobileOpen(function (prev) {
10912
+ return !prev;
10913
+ });
10914
+ }, []);
10915
+ var closeMobileMenu = React.useCallback(function () {
10916
+ if (isMobile) {
10917
+ setIsMobileOpen(false);
10918
+ }
10919
+ }, [isMobile]);
10920
+ var handleOverlayClick = React.useCallback(function () {
10921
+ setIsMobileOpen(false);
10922
+ }, []);
10839
10923
  var toggleMenu = function toggleMenu(id) {
10840
10924
  setOpenMenus(function (prev) {
10841
- var _ref21;
10925
+ var _ref28;
10842
10926
  var isCurrentlyOpen = !!prev[id];
10843
- return isCurrentlyOpen ? {} : (_ref21 = {}, _ref21[id] = true, _ref21);
10927
+ return isCurrentlyOpen ? {} : (_ref28 = {}, _ref28[id] = true, _ref28);
10844
10928
  });
10845
10929
  };
10846
10930
  var getTotalNotifications = React.useCallback(function (item) {
@@ -10865,8 +10949,8 @@ var Sidebar = function Sidebar(_ref20) {
10865
10949
  return currentBase === getBasePath(child.activeUrl) || currentBase === getBasePath(child.url);
10866
10950
  }));
10867
10951
  };
10868
- var ChildLink = function ChildLink(_ref22) {
10869
- var child = _ref22.child;
10952
+ var ChildLink = function ChildLink(_ref29) {
10953
+ var child = _ref29.child;
10870
10954
  var themeColors = styled.useTheme();
10871
10955
  var location = reactRouterDom.useLocation();
10872
10956
  var active = getBasePath(location.pathname) === getBasePath(child.activeUrl) || getBasePath(location.pathname) === getBasePath(child.url);
@@ -10874,6 +10958,7 @@ var Sidebar = function Sidebar(_ref20) {
10874
10958
  if (child.url && child.url === location.pathname) {
10875
10959
  e.preventDefault();
10876
10960
  }
10961
+ closeMobileMenu();
10877
10962
  }, [child.url, location.pathname]);
10878
10963
  return React__default.createElement(SidebarLink, {
10879
10964
  to: child.url || '#',
@@ -10912,14 +10997,14 @@ var Sidebar = function Sidebar(_ref20) {
10912
10997
  });
10913
10998
  }));
10914
10999
  };
10915
- var SidebarItem = function SidebarItem(_ref23) {
10916
- var item = _ref23.item,
10917
- isActive = _ref23.isActive,
10918
- isOpen = _ref23.isOpen,
10919
- hasChildren = _ref23.hasChildren,
10920
- isExpanded = _ref23.isExpanded,
10921
- onToggle = _ref23.onToggle,
10922
- renderChildLinks = _ref23.renderChildLinks;
11000
+ var SidebarItem = function SidebarItem(_ref30) {
11001
+ var item = _ref30.item,
11002
+ isActive = _ref30.isActive,
11003
+ isOpen = _ref30.isOpen,
11004
+ hasChildren = _ref30.hasChildren,
11005
+ isExpanded = _ref30.isExpanded,
11006
+ onToggle = _ref30.onToggle,
11007
+ renderChildLinks = _ref30.renderChildLinks;
10923
11008
  var themeColors = styled.useTheme();
10924
11009
  var activeClass = isActive ? 'active' : '';
10925
11010
  var handleClick = React.useCallback(function () {
@@ -10984,6 +11069,7 @@ var Sidebar = function Sidebar(_ref20) {
10984
11069
  if (item.url === location.pathname) {
10985
11070
  e.preventDefault();
10986
11071
  }
11072
+ closeMobileMenu();
10987
11073
  }, [item.url]);
10988
11074
  return item.url ? React__default.createElement(SidebarLink, {
10989
11075
  to: item.url,
@@ -11009,8 +11095,30 @@ var Sidebar = function Sidebar(_ref20) {
11009
11095
  var handleSidebarExpansion = React.useCallback(function (expanded) {
11010
11096
  if (isExpandedRef.current !== expanded) {
11011
11097
  setIsExpanded(expanded);
11098
+ isExpandedRef.current = expanded;
11012
11099
  }
11013
11100
  }, [setIsExpanded]);
11101
+ React.useEffect(function () {
11102
+ var sidebar = sidebarRef.current;
11103
+ if (!sidebar) return;
11104
+ if (typeof ResizeObserver === 'undefined') return;
11105
+ if (isMobile) return;
11106
+ var resizeObserver = new ResizeObserver(function (entries) {
11107
+ for (var _iterator = _createForOfIteratorHelperLoose(entries), _step; !(_step = _iterator()).done;) {
11108
+ var entry = _step.value;
11109
+ var width = entry.contentRect.width;
11110
+ if (width > 70) {
11111
+ handleSidebarExpansion(true);
11112
+ } else {
11113
+ handleSidebarExpansion(false);
11114
+ }
11115
+ }
11116
+ });
11117
+ resizeObserver.observe(sidebar);
11118
+ return function () {
11119
+ resizeObserver.disconnect();
11120
+ };
11121
+ }, [handleSidebarExpansion, isMobile]);
11014
11122
  React.useEffect(function () {
11015
11123
  var updateBadgePositions = function updateBadgePositions() {
11016
11124
  content.forEach(function (item) {
@@ -11031,14 +11139,22 @@ var Sidebar = function Sidebar(_ref20) {
11031
11139
  window.removeEventListener('resize', updateBadgePositions);
11032
11140
  };
11033
11141
  }, [content, isExpanded, getTotalNotifications]);
11034
- return React__default.createElement(SidebarContainer, {
11142
+ var themeColors = styled.useTheme();
11143
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement(HamburgerButton, {
11035
11144
  "$background": background,
11036
- onMouseEnter: function onMouseEnter() {
11037
- return handleSidebarExpansion(true);
11038
- },
11039
- onMouseLeave: function onMouseLeave() {
11040
- return handleSidebarExpansion(false);
11041
- }
11145
+ onClick: toggleMobileMenu,
11146
+ "aria-label": "Toggle menu"
11147
+ }, React__default.createElement(Icon, {
11148
+ icon: isMobileOpen ? 'X' : 'Hamburger',
11149
+ size: 24,
11150
+ color: themeColors.vms.text.white
11151
+ })), React__default.createElement(Overlay, {
11152
+ "$isOpen": isMobileOpen,
11153
+ onClick: handleOverlayClick
11154
+ }), React__default.createElement(SidebarContainer, {
11155
+ ref: sidebarRef,
11156
+ "$background": background,
11157
+ "$isMobileOpen": isMobileOpen
11042
11158
  }, React__default.createElement(Container, {
11043
11159
  "$flexDirection": 'column',
11044
11160
  "$gap": '28px',
@@ -11055,7 +11171,9 @@ var Sidebar = function Sidebar(_ref20) {
11055
11171
  }))), React__default.createElement(Container, {
11056
11172
  "$flexDirection": 'column',
11057
11173
  "$gap": '16px',
11058
- "$width": '100%'
11174
+ "$width": '100%',
11175
+ "$overflow": 'auto',
11176
+ "$scrollbarWidth": 'none'
11059
11177
  }, content.map(function (item) {
11060
11178
  var _item$children3;
11061
11179
  var active = isRouteActive(item) || false;
@@ -11067,13 +11185,13 @@ var Sidebar = function Sidebar(_ref20) {
11067
11185
  isActive: active,
11068
11186
  isOpen: isOpen,
11069
11187
  hasChildren: hasChildren,
11070
- isExpanded: isExpanded,
11188
+ isExpanded: isMobile ? isMobileOpen : isExpanded,
11071
11189
  onToggle: function onToggle() {
11072
11190
  return toggleMenu(item.id);
11073
11191
  },
11074
11192
  renderChildLinks: renderChildLinks
11075
11193
  });
11076
- }))), ProfileContent);
11194
+ }))), ProfileContent));
11077
11195
  };
11078
11196
 
11079
11197
  var _templateObject$o, _templateObject2$k, _templateObject3$d, _templateObject4$a;