labsense-ui-kit 1.2.73 → 1.2.75

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
@@ -7973,12 +7973,12 @@ var SelectOption = function SelectOption(_ref36) {
7973
7973
  "$size": size
7974
7974
  }, label) : React__default.createElement(LabelText$1, {
7975
7975
  "$fontStyle": fontStyle ? fontStyle : 'italic',
7976
- "$color": themeColors.vms.text.light,
7976
+ "$color": color || themeColors.vms.text.medium,
7977
7977
  "$size": size
7978
7978
  }, labelText), React__default.createElement(Icon, {
7979
7979
  icon: isOpen ? 'UpArrow' : 'DownArrow',
7980
7980
  size: 7,
7981
- color: themeColors.vms.text.medium
7981
+ color: color || themeColors.vms.text.medium
7982
7982
  })), isOpen && React__default.createElement(DropdownMenu$1, {
7983
7983
  "$width": width,
7984
7984
  "$menuBackground": menuBackground,
@@ -9242,8 +9242,8 @@ var ProgressBar = function ProgressBar(_ref3) {
9242
9242
  }));
9243
9243
  };
9244
9244
 
9245
- var _templateObject$n, _templateObject2$j, _templateObject3$c, _templateObject4$9, _templateObject5$8, _templateObject6$7;
9246
- var SidebarContainer = styled__default.div(_templateObject$n || (_templateObject$n = _taggedTemplateLiteralLoose(["\n width: ", ";\n max-width: ", ";\n height: 100vh;\n background: ", ";\n transition: all 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: 10;\n justify-content: space-between;\n"])), function (_ref) {
9245
+ var _templateObject$n, _templateObject2$j, _templateObject3$c, _templateObject4$9, _templateObject5$8, _templateObject6$7, _templateObject7$5;
9246
+ var SidebarContainer = styled__default.div(_templateObject$n || (_templateObject$n = _taggedTemplateLiteralLoose(["\n width: ", ";\n max-width: ", ";\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: 10;\n justify-content: space-between;\n"])), function (_ref) {
9247
9247
  var $isExpanded = _ref.$isExpanded;
9248
9248
  return $isExpanded ? 'max-content' : '68px';
9249
9249
  }, function (_ref2) {
@@ -9254,7 +9254,7 @@ var SidebarContainer = styled__default.div(_templateObject$n || (_templateObject
9254
9254
  theme = _ref3.theme;
9255
9255
  return $background || theme.vms.accent.softBlue;
9256
9256
  });
9257
- 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: all 0.1s cubic-bezier(0.4, 0, 0.2, 1);\n padding: ", ";\n color: ", ";\n\n /* Hover state */\n &:hover {\n color: ", ";\n background: ", ";\n }\n\n /* Active link state */\n &.active {\n color: ", ";\n background: ", ";\n }\n"])), function (_ref4) {
9257
+ 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 (_ref4) {
9258
9258
  var $padding = _ref4.$padding;
9259
9259
  return $padding;
9260
9260
  }, function (_ref5) {
@@ -9271,50 +9271,65 @@ var SidebarLink = styled__default(reactRouterDom.NavLink)(_templateObject2$j ||
9271
9271
  return theme.vms.text.white;
9272
9272
  }, function (_ref9) {
9273
9273
  var theme = _ref9.theme;
9274
+ return theme.vms.text.white;
9275
+ }, function (_ref10) {
9276
+ var theme = _ref10.theme;
9274
9277
  return theme.vms["default"].primary;
9278
+ }, function (_ref11) {
9279
+ var theme = _ref11.theme;
9280
+ return theme.vms.text.white;
9275
9281
  });
9276
- var IconWrapper$2 = styled__default.div(_templateObject3$c || (_templateObject3$c = _taggedTemplateLiteralLoose(["\n background: ", ";\n transition: all 0.1s cubic-bezier(0.4, 0, 0.2, 1);\n padding: 4px;\n border-radius: 4px;\n width: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n"])), function (_ref10) {
9277
- var $selected = _ref10.$selected,
9278
- theme = _ref10.theme;
9282
+ 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 (_ref12) {
9283
+ var $selected = _ref12.$selected,
9284
+ theme = _ref12.theme;
9279
9285
  return $selected ? theme.vms["default"].primary : theme.vms["default"].tertiary;
9280
9286
  });
9281
- var Logo = styled__default.div(_templateObject4$9 || (_templateObject4$9 = _taggedTemplateLiteralLoose(["\n transition: all 0.1s cubic-bezier(0.4, 0, 0.2, 1);\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"])));
9282
- var TextContainer = styled__default.span(_templateObject5$8 || (_templateObject5$8 = _taggedTemplateLiteralLoose(["\n white-space: nowrap;\n padding: ", ";\n font-size: ", ";\n font-weight: ", ";\n opacity: ", ";\n visibility: ", ";\n transition: opacity 0.3s ease-in-out, visibility 0.3s ease-in-out;\n transform: ", ";\n"])), function (_ref11) {
9283
- var $padding = _ref11.$padding;
9287
+ var StyledContainer = styled__default(Container)(_templateObject4$9 || (_templateObject4$9 = _taggedTemplateLiteralLoose(["\n transition: none;\n \n &:hover {\n svg {\n color: ", " !important;\n transition: none;\n }\n }\n \n &.active {\n svg {\n color: ", " !important;\n transition: none;\n }\n }\n"])), function (_ref13) {
9288
+ var theme = _ref13.theme;
9289
+ return theme.vms.text.white;
9290
+ }, function (_ref14) {
9291
+ var theme = _ref14.theme;
9292
+ return theme.vms.text.white;
9293
+ });
9294
+ 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"])));
9295
+ var TextContainer = styled__default.span(_templateObject6$7 || (_templateObject6$7 = _taggedTemplateLiteralLoose(["\n white-space: nowrap;\n padding: ", ";\n font-size: ", ";\n font-weight: ", ";\n opacity: ", ";\n visibility: ", ";\n transition: none;\n transform: ", ";\n"])), function (_ref15) {
9296
+ var $padding = _ref15.$padding;
9284
9297
  return $padding;
9285
- }, function (_ref12) {
9286
- var $fontSize = _ref12.$fontSize;
9298
+ }, function (_ref16) {
9299
+ var $fontSize = _ref16.$fontSize;
9287
9300
  return $fontSize || '20px';
9288
- }, function (_ref13) {
9289
- var $fontWeight = _ref13.$fontWeight;
9301
+ }, function (_ref17) {
9302
+ var $fontWeight = _ref17.$fontWeight;
9290
9303
  return $fontWeight || '500';
9291
- }, function (_ref14) {
9292
- var $isExpanded = _ref14.$isExpanded;
9304
+ }, function (_ref18) {
9305
+ var $isExpanded = _ref18.$isExpanded;
9293
9306
  return $isExpanded ? 1 : 0;
9294
- }, function (_ref15) {
9295
- var $isExpanded = _ref15.$isExpanded;
9307
+ }, function (_ref19) {
9308
+ var $isExpanded = _ref19.$isExpanded;
9296
9309
  return $isExpanded ? 'visible' : 'hidden';
9297
- }, function (_ref16) {
9298
- var $isExpanded = _ref16.$isExpanded;
9310
+ }, function (_ref20) {
9311
+ var $isExpanded = _ref20.$isExpanded;
9299
9312
  return $isExpanded ? 'translateX(0)' : 'translateX(-10px)';
9300
9313
  });
9301
- var NotificationBadge = styled__default.div(_templateObject6$7 || (_templateObject6$7 = _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"])), function (_ref17) {
9302
- var $position = _ref17.$position;
9314
+ var NotificationBadge = styled__default.div(_templateObject7$5 || (_templateObject7$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"])), function (_ref21) {
9315
+ var $position = _ref21.$position;
9303
9316
  return $position || 'absolute';
9304
9317
  });
9305
- var Sidebar = function Sidebar(_ref18) {
9306
- var logo = _ref18.logo,
9307
- content = _ref18.content,
9308
- background = _ref18.background,
9309
- ProfileContent = _ref18.ProfileContent,
9310
- _ref18$isExpanded = _ref18.isExpanded,
9311
- isExpanded = _ref18$isExpanded === void 0 ? false : _ref18$isExpanded,
9312
- setIsExpanded = _ref18.setIsExpanded;
9318
+ var Sidebar = function Sidebar(_ref22) {
9319
+ var logo = _ref22.logo,
9320
+ content = _ref22.content,
9321
+ background = _ref22.background,
9322
+ ProfileContent = _ref22.ProfileContent,
9323
+ _ref22$isExpanded = _ref22.isExpanded,
9324
+ isExpanded = _ref22$isExpanded === void 0 ? false : _ref22$isExpanded,
9325
+ setIsExpanded = _ref22.setIsExpanded;
9313
9326
  var location = reactRouterDom.useLocation();
9314
9327
  var _useState = React.useState({}),
9315
9328
  openMenus = _useState[0],
9316
9329
  setOpenMenus = _useState[1];
9330
+ var isExpandedRef = React__default.useRef(isExpanded);
9317
9331
  React.useEffect(function () {
9332
+ isExpandedRef.current = isExpanded;
9318
9333
  if (!isExpanded) setOpenMenus({});
9319
9334
  }, [isExpanded]);
9320
9335
  var toggleMenu = function toggleMenu(id) {
@@ -9345,37 +9360,30 @@ var Sidebar = function Sidebar(_ref18) {
9345
9360
  return currentBase === getBasePath(child.activeUrl) || currentBase === getBasePath(child.url);
9346
9361
  }));
9347
9362
  };
9348
- var ChildLink = React__default.memo(function (_ref19) {
9349
- var child = _ref19.child,
9350
- isExpanded = _ref19.isExpanded;
9363
+ var ChildLink = React__default.memo(function (_ref23) {
9364
+ var child = _ref23.child,
9365
+ isExpanded = _ref23.isExpanded;
9351
9366
  var themeColors = styled.useTheme();
9352
9367
  var location = reactRouterDom.useLocation();
9353
9368
  var active = getBasePath(location.pathname) === getBasePath(child.activeUrl) || getBasePath(location.pathname) === getBasePath(child.url);
9354
- var _useState2 = React.useState(false),
9355
- isHovered = _useState2[0],
9356
- setIsHovered = _useState2[1];
9369
+ var handleClick = React__default.useCallback(function (e) {
9370
+ if (child.url && child.url === location.pathname) {
9371
+ e.preventDefault();
9372
+ }
9373
+ }, [child.url, location.pathname]);
9357
9374
  return React__default.createElement(SidebarLink, {
9358
9375
  to: child.url || '#',
9359
9376
  key: child.id,
9360
9377
  "$padding": '0px 10px 0px 0px',
9361
- onClick: function onClick(e) {
9362
- if (child.url && child.url === location.pathname) {
9363
- e.preventDefault();
9364
- }
9365
- },
9366
- onMouseEnter: function onMouseEnter() {
9367
- return setIsHovered(true);
9368
- },
9369
- onMouseLeave: function onMouseLeave() {
9370
- return setIsHovered(false);
9371
- }
9378
+ onClick: handleClick,
9379
+ className: active ? 'active' : ''
9372
9380
  }, React__default.createElement(IconWrapper$2, {
9373
9381
  "$selected": active
9374
9382
  }, React__default.createElement(Icon, {
9375
9383
  icon: child.icon,
9376
9384
  size: 18,
9377
9385
  weight: child.iconWeight,
9378
- color: active || isHovered ? themeColors.vms.text.white : themeColors.vms.text.medium
9386
+ color: active ? themeColors.vms.text.white : themeColors.vms.text.medium
9379
9387
  })), React__default.createElement(Container, {
9380
9388
  "$width": '100%',
9381
9389
  "$justifyContent": 'space-between',
@@ -9400,25 +9408,23 @@ var Sidebar = function Sidebar(_ref18) {
9400
9408
  });
9401
9409
  }));
9402
9410
  };
9403
- var SidebarItem = function SidebarItem(_ref20) {
9404
- var item = _ref20.item,
9405
- isActive = _ref20.isActive,
9406
- isOpen = _ref20.isOpen,
9407
- hasChildren = _ref20.hasChildren,
9408
- isExpanded = _ref20.isExpanded,
9409
- onToggle = _ref20.onToggle,
9410
- renderChildLinks = _ref20.renderChildLinks;
9411
+ var SidebarItem = React__default.memo(function (_ref24) {
9412
+ var item = _ref24.item,
9413
+ isActive = _ref24.isActive,
9414
+ isOpen = _ref24.isOpen,
9415
+ hasChildren = _ref24.hasChildren,
9416
+ isExpanded = _ref24.isExpanded,
9417
+ onToggle = _ref24.onToggle,
9418
+ renderChildLinks = _ref24.renderChildLinks;
9411
9419
  var themeColors = styled.useTheme();
9412
- var _useState3 = React.useState(false),
9413
- isHovered = _useState3[0],
9414
- setIsHovered = _useState3[1];
9415
- var ContentLayout = React__default.createElement(Container, {
9416
- onMouseEnter: function onMouseEnter() {
9417
- return setIsHovered(true);
9418
- },
9419
- onMouseLeave: function onMouseLeave() {
9420
- return setIsHovered(false);
9421
- },
9420
+ var activeClass = isActive ? 'active' : '';
9421
+ var handleClick = React__default.useCallback(function () {
9422
+ if (hasChildren) {
9423
+ onToggle();
9424
+ }
9425
+ }, [hasChildren, onToggle]);
9426
+ var ContentLayout = React__default.createElement(StyledContainer, {
9427
+ className: activeClass,
9422
9428
  "$alignItems": 'center',
9423
9429
  "$gap": '8px',
9424
9430
  "$width": '100%',
@@ -9426,9 +9432,7 @@ var Sidebar = function Sidebar(_ref18) {
9426
9432
  "$borderRadius": '4px',
9427
9433
  "$justifyContent": 'space-between',
9428
9434
  "$hoverBackground": themeColors.vms["default"].primary,
9429
- onClick: function onClick() {
9430
- return hasChildren && onToggle();
9431
- }
9435
+ onClick: handleClick
9432
9436
  }, React__default.createElement(Container, {
9433
9437
  "$alignItems": 'center',
9434
9438
  "$gap": '8px',
@@ -9443,7 +9447,7 @@ var Sidebar = function Sidebar(_ref18) {
9443
9447
  icon: item.icon,
9444
9448
  size: 20,
9445
9449
  weight: item.iconWeight,
9446
- color: isHovered || isActive ? themeColors.vms.text.white : themeColors.vms.text.medium
9450
+ color: isActive ? themeColors.vms.text.white : themeColors.vms.text.medium
9447
9451
  })), _getTotalNotifications(item) > 0 && React__default.createElement(NotificationBadge, null, _getTotalNotifications(item) > 99 ? '99+' : _getTotalNotifications(item))), React__default.createElement(TextContainer, {
9448
9452
  "$isExpanded": isExpanded,
9449
9453
  "$fontSize": '14px'
@@ -9453,38 +9457,41 @@ var Sidebar = function Sidebar(_ref18) {
9453
9457
  }, React__default.createElement(Icon, {
9454
9458
  icon: isOpen ? 'UpArrow' : 'DownArrow',
9455
9459
  size: 10,
9456
- color: isHovered ? themeColors.vms.text.white : themeColors.vms.text.medium,
9460
+ color: isActive ? themeColors.vms.text.white : themeColors.vms.text.medium,
9457
9461
  cursor: 'pointer'
9458
9462
  })));
9463
+ var handleNavClick = React__default.useCallback(function (e) {
9464
+ if (item.url === location.pathname) {
9465
+ e.preventDefault();
9466
+ }
9467
+ }, [item.url, location.pathname]);
9459
9468
  return item.url ? React__default.createElement(SidebarLink, {
9460
9469
  to: item.url,
9461
- onClick: function onClick(e) {
9462
- if (item.url === location.pathname) {
9463
- e.preventDefault();
9464
- }
9465
- }
9470
+ onClick: handleNavClick
9466
9471
  }, ContentLayout) : React__default.createElement(Container, {
9467
9472
  "$flexDirection": 'column',
9468
9473
  "$alignItems": 'start',
9469
9474
  "$gap": '8px',
9470
9475
  "$width": '100%'
9471
- }, React__default.createElement(Container, {
9476
+ }, React__default.createElement(StyledContainer, {
9472
9477
  "$color": themeColors.vms.text.medium,
9473
9478
  "$hoverColor": themeColors.vms.text.white,
9474
9479
  "$width": '100%'
9475
9480
  }, ContentLayout), hasChildren && isExpanded && isOpen && renderChildLinks && React__default.createElement(Container, null, renderChildLinks(item.children)));
9476
- };
9481
+ });
9482
+ var handleSidebarExpansion = React__default.useCallback(function (expanded) {
9483
+ if (isExpandedRef.current !== expanded) {
9484
+ setIsExpanded(expanded);
9485
+ }
9486
+ }, [setIsExpanded]);
9477
9487
  return React__default.createElement(SidebarContainer, {
9478
9488
  "$background": background,
9479
9489
  "$isExpanded": isExpanded,
9480
9490
  onMouseEnter: function onMouseEnter() {
9481
- return setIsExpanded(true);
9491
+ return handleSidebarExpansion(true);
9482
9492
  },
9483
9493
  onMouseLeave: function onMouseLeave() {
9484
- return setIsExpanded(false);
9485
- },
9486
- onPointerLeave: function onPointerLeave() {
9487
- return setIsExpanded(false);
9494
+ return handleSidebarExpansion(false);
9488
9495
  }
9489
9496
  }, React__default.createElement(Container, {
9490
9497
  "$flexDirection": 'column',