@copart/ops-tool-kit 1.13.0-beta.13 → 1.13.0-beta.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.
@@ -48,7 +48,7 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
48
48
  var ReactDOM__default = /*#__PURE__*/_interopDefaultLegacy(ReactDOM);
49
49
 
50
50
  const name$1 = "@copart/ops-tool-kit";
51
- const version$3 = "1.13.0-beta.13";
51
+ const version$3 = "1.13.0-beta.14";
52
52
  const main$1 = "dist/ops-tool-kit.js";
53
53
  const style = "dist/ops-tool-kit.css";
54
54
  const files = [
@@ -63583,6 +63583,47 @@ var formatNumber = function formatNumber(number) {
63583
63583
  return sign * Math.abs(number) + unitlist[unit];
63584
63584
  };
63585
63585
 
63586
+ /**
63587
+ * Default badge color thresholds used by many portal apps (e.g. MiOrg open tasks).
63588
+ * Matches legacy getStatus(count) logic: >1000 → 1, >500 → 2, >0 → 3.
63589
+ */
63590
+ var STANDARD_NAV_COUNT_THRESHOLDS = [{
63591
+ above: 1000,
63592
+ status: 1
63593
+ }, {
63594
+ above: 500,
63595
+ status: 2
63596
+ }, {
63597
+ above: 0,
63598
+ status: 3
63599
+ }];
63600
+
63601
+ /**
63602
+ * Resolve badge status from a count using getStatus (in-app) or countStatusThresholds (iframe shell).
63603
+ *
63604
+ * @param {number|string|null|undefined} count
63605
+ * @param {{ getStatus?: (n: number) => number, countStatusThresholds?: Array<{ above?: number, min?: number, status: number }> }} navItem
63606
+ * @returns {number|undefined}
63607
+ */
63608
+ function resolveCountStatus(count) {
63609
+ var navItem = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
63610
+ if (count == null || count === '') return undefined;
63611
+ var num = Number(count);
63612
+ if (Number.isNaN(num)) return undefined;
63613
+ if (typeof navItem.getStatus === 'function') {
63614
+ return navItem.getStatus(num);
63615
+ }
63616
+ var thresholds = navItem.countStatusThresholds;
63617
+ if (!Array.isArray(thresholds) || thresholds.length === 0) return undefined;
63618
+ for (var i = 0; i < thresholds.length; i += 1) {
63619
+ var threshold = thresholds[i];
63620
+ if (!threshold || threshold.status == null) continue;
63621
+ if (threshold.above != null && num > threshold.above) return threshold.status;
63622
+ if (threshold.min != null && num >= threshold.min) return threshold.status;
63623
+ }
63624
+ return undefined;
63625
+ }
63626
+
63586
63627
  var css_248z$2 = ".utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer {\r\n display: flex;\r\n flex-direction: column;\r\n position: absolute;\r\n background: #3A4454;\r\n min-width: 50px;\r\n max-width: 50px;\r\n height: 100%;\r\n color: #ffffff;\r\n font-size: 14px;\r\n z-index: 101;\r\n transition: all 0.5s ease-in-out;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--level3Menu {\r\n min-width: 70px;\r\n max-width: 70px;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--withCounts {\r\n min-width: 100px;\r\n max-width: 100px;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--showNavIconInHeader {\r\n min-width: 0px;\r\n max-width: 0px;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer:not(.utilities_ops-app-frame_NavigationBar_NavigationBar--showNavIconInHeader):hover, .utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--navBarOpen {\r\n max-width: 500px;\r\n transition-delay: 0.25s;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton {\r\n min-width: none;\r\n transition: all 0.5s ease-in-out;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton.utilities_ops-app-frame_NavigationBar_NavigationBar--showExpandIcons{\r\n min-width: auto;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer:not(.utilities_ops-app-frame_NavigationBar_NavigationBar--showNavIconInHeader):hover .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton, .utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--navBarOpen .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton{\r\n min-width: auto;\r\n transition-delay: 0.25s;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenu {\r\n flex: 1;\r\n overflow-y: auto;\r\n -ms-overflow-style: none;\r\n scrollbar-width: none;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenu::-webkit-scrollbar { \r\n display: none;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem {\r\n display: flex;\r\n width: 100%;\r\n padding: 6px 12px 6px 12px;\r\n border-radius: 5px;\r\n cursor: pointer;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem.utilities_ops-app-frame_NavigationBar_NavigationBar--disabled {\r\n cursor: default;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemSelected {\r\n color: #323130;\r\n background-color: #fff;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemSelectedStatus {\r\n color: #fff;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton {\r\n margin-left: auto;\r\n margin-right: 10px;\r\n min-width: none;\r\n transition: all 0.5s ease-in-out;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--withCounts:not(.utilities_ops-app-frame_NavigationBar_NavigationBar--showNavIconInHeader):hover .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton, .utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--countsAvailable .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton {\r\n min-width: 70px;\r\n text-align: right;\r\n transition-delay: 0.25s;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--countsAvailable:not(:hover) .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton {\r\n min-width: auto;\r\n text-align: auto;\r\n transition-delay: 0.25s;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--navBarOpen .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton {\r\n min-width: 70px !important;\r\n text-align: right !important;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem.utilities_ops-app-frame_NavigationBar_NavigationBar--expandedMenu {\r\n background-color: #73A6FF;\r\n transition: background-color 0.5s ease-in-out;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton i {\r\n margin-left: auto;\r\n font-size: 12px;\r\n color: #fff;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem.utilities_ops-app-frame_NavigationBar_NavigationBar--selected .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton i{\r\n color: #323130;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemCount {\r\n margin: 0 10px 0 auto;\r\n transition: all 0.5s ease-in-out;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemIcon {\r\n min-width: 20px;\r\n display: flex;\r\n justify-content: center;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemIcon i {\r\n font-size: 14px;\r\n /* width: 20px; */\r\n color: #fff;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem.utilities_ops-app-frame_NavigationBar_NavigationBar--disabled .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemIcon i {\r\n color: #A19F9D;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemSelected .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemIcon i{\r\n color: #323130;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemSelectedStatus .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemIcon i{\r\n color: #fff;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemSelected .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton i{\r\n color: #323130;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemSelectedStatus .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton i{\r\n color: #fff;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--level3Menu .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1NoHover .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton {\r\n margin-right: 6px !important;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem.utilities_ops-app-frame_NavigationBar_NavigationBar--disabled .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton i {\r\n color: #A19F9D;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton i{\r\n font-size: 0px;\r\n transition: all 0.5s ease-in-out;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton.utilities_ops-app-frame_NavigationBar_NavigationBar--showExpandIcons i, .utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--level3Menu .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton i{\r\n font-size: 12px;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer:not(.utilities_ops-app-frame_NavigationBar_NavigationBar--showNavIconInHeader):hover .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton i, .utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--navBarOpen .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton i{\r\n font-size: 12px;\r\n transition-delay: 0.25s;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemName {\r\n max-width: 0;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n margin-top: 2px;\r\n font-weight: 100;\r\n transition: all 0.5s ease-in-out;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer:not(.utilities_ops-app-frame_NavigationBar_NavigationBar--showNavIconInHeader):hover .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemName, .utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--navBarOpen .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemName {\r\n max-width: 100%;\r\n margin: 2px 10px 0 10px;\r\n transition-delay: 0.25s;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem.utilities_ops-app-frame_NavigationBar_NavigationBar--disabled .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemName {\r\n color: #A19F9D;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 > .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemName {\r\n max-width: 100%;\r\n margin: 0 5px 0 0;\r\n font-weight: 600;\r\n margin-left: 0px;\r\n cursor: auto;\r\n cursor: initial;\r\n transition: all 0.5s ease-in-out;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--level3Menu .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 > .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemName {\r\n cursor: pointer;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer:not(.utilities_ops-app-frame_NavigationBar_NavigationBar--showNavIconInHeader):hover .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 > .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemName, .utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--navBarOpen .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 > .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemName {\r\n margin: 0;\r\n transition-delay: 0.25s;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 > .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemIcon {\r\n margin-right: 0px;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 > .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem {\r\n padding-left: 12px;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 > .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemName > span {\r\n display: inline;\r\n display: initial;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--level3Menu .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 > .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton {\r\n margin-left: auto;\r\n margin-right: 10px;\r\n min-width: none;\r\n transition: all 0.5s ease-in-out;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--level3Menu.utilities_ops-app-frame_NavigationBar_NavigationBar--withCounts:not(.utilities_ops-app-frame_NavigationBar_NavigationBar--showNavIconInHeader):hover .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 > .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton, .utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--level3Menu.utilities_ops-app-frame_NavigationBar_NavigationBar--countsAvailable .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 > .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton {\r\n min-width: 70px;\r\n text-align: right;\r\n transition-delay: 0.25s;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--level3Menu.utilities_ops-app-frame_NavigationBar_NavigationBar--countsAvailable:not(:hover) .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 > .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton {\r\n min-width: auto;\r\n text-align: auto;\r\n transition-delay: 0.25s;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--level3Menu.utilities_ops-app-frame_NavigationBar_NavigationBar--navBarOpen .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 > .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton {\r\n min-width: 70px !important;\r\n text-align: right !important;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--level3Menu .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 > .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton i {\r\n margin-left: auto;\r\n font-size: 12px;\r\n color: #fff;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--level3Menu .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 > .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem.utilities_ops-app-frame_NavigationBar_NavigationBar--selected .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton i{\r\n color: #323130;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--level3Menu .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 > .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton.utilities_ops-app-frame_NavigationBar_NavigationBar--showExpandIcons i{\r\n font-size: 12px;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--level3Menu:not(.utilities_ops-app-frame_NavigationBar_NavigationBar--showNavIconInHeader):hover .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 > .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton i, .utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--level3Menu.utilities_ops-app-frame_NavigationBar_NavigationBar--navBarOpen .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 > .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--expandButton i{\r\n font-size: 12px;\r\n transition-delay: 0.25s;\r\n}\r\n\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--level3Menu .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel2 .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItemIcon {\r\n margin-right: 6px;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel3 {\r\n display: flex;\r\n position: relative;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel3 .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem {\r\n padding: 6px;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--statusColor {\r\n position: absolute;\r\n width: 10px;\r\n height: 95%;\r\n left: -13px;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--level1NavItem {\r\n width: 13px;\r\n margin-left: 1px;\r\n transition: all 0.5s ease-in-out;\r\n}\r\n\r\n.utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer:not(.utilities_ops-app-frame_NavigationBar_NavigationBar--showNavIconInHeader):hover .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--level1NavItem, .utilities_ops-app-frame_NavigationBar_NavigationBar--NavBarContainer.utilities_ops-app-frame_NavigationBar_NavigationBar--navBarOpen .utilities_ops-app-frame_NavigationBar_NavigationBar--NavMenuLevel1 .utilities_ops-app-frame_NavigationBar_NavigationBar--NavItem .utilities_ops-app-frame_NavigationBar_NavigationBar--level1NavItem {\r\n width: 100%;\r\n margin-left: 1px;\r\n transition-delay: 0.25s;\r\n}";
63587
63628
  styleInject(css_248z$2);
63588
63629
 
@@ -64329,9 +64370,9 @@ var NavigationMenuLevel3 = function NavigationMenuLevel3(_ref6) {
64329
64370
  var isHoverEnabled = showNavIconInHeader || isHover;
64330
64371
  var countText = !isHoverEnabled ? formatNumber(count) : count;
64331
64372
  var status, statusColor;
64332
- if (countText && navItem.getStatus && navItem.getStatus) {
64333
- status = navItem.getStatus(count);
64334
- statusColor = statusColors[status];
64373
+ if (countText != null && countText !== '') {
64374
+ status = resolveCountStatus(count, navItem);
64375
+ if (status != null) statusColor = statusColors[status];
64335
64376
  }
64336
64377
  var position = (navItem === null || navItem === void 0 ? void 0 : navItem.statusColorPosition) || '';
64337
64378
  var isDisabled = typeof navItem.disabled === 'function' ? navItem.disabled() : navItem.disabled;
@@ -68335,6 +68376,19 @@ function postNavConfig(navItems) {
68335
68376
  navItems: navItems
68336
68377
  });
68337
68378
  }
68379
+
68380
+ /**
68381
+ * Push nav badge counts to the shell.
68382
+ * @param {Record<string, Record<string, number>>} countsByMenu
68383
+ * Top-level menu route/name → sub-route counts, e.g.
68384
+ * { tasks: { 'open-tasks': 5 }, admin: { 'staged-users': 2 } }
68385
+ */
68386
+ function postNavCounts(countsByMenu) {
68387
+ if (!countsByMenu || _typeof$1(countsByMenu) !== 'object') return;
68388
+ post('UPDATE_NAV_COUNTS', {
68389
+ countsByMenu: countsByMenu
68390
+ });
68391
+ }
68338
68392
  function postAppEnv(toolkitEnv, mihelpAgentProps) {
68339
68393
  post('SET_APP_ENV', {
68340
68394
  toolkitEnv: toolkitEnv,
@@ -69600,6 +69654,7 @@ var iframeFacade = {
69600
69654
  postUpdateUri: postUpdateUri,
69601
69655
  postUpdateCrumbs: postUpdateCrumbs,
69602
69656
  postNavConfig: postNavConfig,
69657
+ postNavCounts: postNavCounts,
69603
69658
  postAppEnv: postAppEnv,
69604
69659
  addMessageListener: addMessageListener,
69605
69660
  getInitData: getInitData,
@@ -69617,6 +69672,20 @@ function normalizeIframePath(uri) {
69617
69672
  return uri.startsWith('/') ? uri : "/".concat(uri);
69618
69673
  }
69619
69674
 
69675
+ function serializeCountStatusThresholds(thresholds) {
69676
+ if (!Array.isArray(thresholds)) return undefined;
69677
+ var serialized = thresholds.filter(function (t) {
69678
+ return t && t.status != null && (t.above != null || t.min != null);
69679
+ }).map(function (t) {
69680
+ var entry = {
69681
+ status: t.status
69682
+ };
69683
+ if (t.above != null) entry.above = t.above;
69684
+ if (t.min != null) entry.min = t.min;
69685
+ return entry;
69686
+ });
69687
+ return serialized.length > 0 ? serialized : undefined;
69688
+ }
69620
69689
  function serializeNavItems(items) {
69621
69690
  if (!Array.isArray(items)) return [];
69622
69691
  return items.map(function (item) {
@@ -69644,6 +69713,11 @@ function serializeNavItems(items) {
69644
69713
  serialized.hidden = item.hidden;
69645
69714
  }
69646
69715
  if (item.isLandingPage) serialized.isLandingPage = true;
69716
+ if (typeof item.statusColorPosition === 'string') {
69717
+ serialized.statusColorPosition = item.statusColorPosition;
69718
+ }
69719
+ var thresholds = serializeCountStatusThresholds(item.countStatusThresholds);
69720
+ if (thresholds) serialized.countStatusThresholds = thresholds;
69647
69721
  if (item.subMenuItems && item.subMenuItems.length > 0) {
69648
69722
  serialized.subMenuItems = serializeNavItems(item.subMenuItems);
69649
69723
  }
@@ -69727,6 +69801,70 @@ function NavConfigSender(_ref) {
69727
69801
  return null;
69728
69802
  }
69729
69803
 
69804
+ var DEFAULT_POLL_INTERVAL_MS = 60000;
69805
+ function resolveCountsLoader(mod) {
69806
+ if (!mod) return null;
69807
+ if (typeof mod === 'function') return mod;
69808
+ if (typeof mod.default === 'function') return mod.default;
69809
+ if (typeof mod.getNavCounts === 'function') return mod.getNavCounts;
69810
+ return null;
69811
+ }
69812
+
69813
+ /**
69814
+ * Polls nav badge counts inside the iframe and pushes them to the shell via UPDATE_NAV_COUNTS.
69815
+ *
69816
+ * @param {Object} props
69817
+ * @param {() => Promise<{ default?: Function, getNavCounts?: Function } | Function>} props.countsLoader
69818
+ * Dynamic import returning a function that resolves to countsByMenu, e.g.
69819
+ * { tasks: { 'open-tasks': 5 }, admin: { 'staged-users': 2 } }
69820
+ * @param {number} [props.pollIntervalMs=60000] Set to 0 to post once on mount only.
69821
+ * @param {(err: Error) => void} [props.onError]
69822
+ */
69823
+ function NavCountsSender(_ref) {
69824
+ var countsLoader = _ref.countsLoader,
69825
+ _ref$pollIntervalMs = _ref.pollIntervalMs,
69826
+ pollIntervalMs = _ref$pollIntervalMs === void 0 ? DEFAULT_POLL_INTERVAL_MS : _ref$pollIntervalMs,
69827
+ onError = _ref.onError;
69828
+ var mountedRef = React.useRef(true);
69829
+ React.useEffect(function () {
69830
+ mountedRef.current = true;
69831
+ if (!countsLoader) return undefined;
69832
+ var intervalId;
69833
+ var fetchAndPost = function fetchAndPost() {
69834
+ Promise.resolve().then(function () {
69835
+ return countsLoader();
69836
+ }).then(function (mod) {
69837
+ var loader = resolveCountsLoader(mod);
69838
+ if (!loader) {
69839
+ throw new Error('[NavCountsSender] countsLoader must export a function');
69840
+ }
69841
+ return loader();
69842
+ }).then(function (countsByMenu) {
69843
+ if (!mountedRef.current) return;
69844
+ if (countsByMenu && _typeof$1(countsByMenu) === 'object') {
69845
+ postNavCounts(countsByMenu);
69846
+ }
69847
+ }).catch(function (err) {
69848
+ if (!mountedRef.current) return;
69849
+ if (onError) {
69850
+ onError(err);
69851
+ } else {
69852
+ console.warn('[NavCountsSender] Failed to load/post nav counts:', err);
69853
+ }
69854
+ });
69855
+ };
69856
+ fetchAndPost();
69857
+ if (pollIntervalMs > 0) {
69858
+ intervalId = setInterval(fetchAndPost, pollIntervalMs);
69859
+ }
69860
+ return function () {
69861
+ mountedRef.current = false;
69862
+ if (intervalId) clearInterval(intervalId);
69863
+ };
69864
+ }, [countsLoader, pollIntervalMs, onError]);
69865
+ return null;
69866
+ }
69867
+
69730
69868
  var defaultContentStyle = {
69731
69869
  height: '100%',
69732
69870
  display: 'flex',
@@ -69740,6 +69878,9 @@ function IframeAppRootInner(_ref) {
69740
69878
  mihelpAgentProps = _ref.mihelpAgentProps,
69741
69879
  navItemsLoader = _ref.navItemsLoader,
69742
69880
  navConfigOnError = _ref.navConfigOnError,
69881
+ navCountsLoader = _ref.navCountsLoader,
69882
+ navCountsPollIntervalMs = _ref.navCountsPollIntervalMs,
69883
+ navCountsOnError = _ref.navCountsOnError,
69743
69884
  updateUriIsPath = _ref.updateUriIsPath,
69744
69885
  suppressRouteSyncEcho = _ref.suppressRouteSyncEcho;
69745
69886
  var history = reactRouterDom.useHistory();
@@ -69756,6 +69897,10 @@ function IframeAppRootInner(_ref) {
69756
69897
  }), navItemsLoader ? /*#__PURE__*/React__default["default"].createElement(NavConfigSender, {
69757
69898
  navItemsLoader: navItemsLoader,
69758
69899
  onError: navConfigOnError
69900
+ }) : null, navCountsLoader ? /*#__PURE__*/React__default["default"].createElement(NavCountsSender, {
69901
+ countsLoader: navCountsLoader,
69902
+ pollIntervalMs: navCountsPollIntervalMs,
69903
+ onError: navCountsOnError
69759
69904
  }) : null, /*#__PURE__*/React__default["default"].createElement("div", {
69760
69905
  style: contentStyle || defaultContentStyle
69761
69906
  }, children));
@@ -69770,6 +69915,9 @@ function IframeAppRoot(_ref2) {
69770
69915
  mihelpAgentProps = _ref2$mihelpAgentProp === void 0 ? null : _ref2$mihelpAgentProp,
69771
69916
  navItemsLoader = _ref2.navItemsLoader,
69772
69917
  navConfigOnError = _ref2.navConfigOnError,
69918
+ navCountsLoader = _ref2.navCountsLoader,
69919
+ navCountsPollIntervalMs = _ref2.navCountsPollIntervalMs,
69920
+ navCountsOnError = _ref2.navCountsOnError,
69773
69921
  _ref2$updateUriIsPath = _ref2.updateUriIsPath,
69774
69922
  updateUriIsPath = _ref2$updateUriIsPath === void 0 ? false : _ref2$updateUriIsPath,
69775
69923
  _ref2$suppressRouteSy = _ref2.suppressRouteSyncEcho,
@@ -69784,6 +69932,9 @@ function IframeAppRoot(_ref2) {
69784
69932
  mihelpAgentProps: mihelpAgentProps,
69785
69933
  navItemsLoader: navItemsLoader,
69786
69934
  navConfigOnError: navConfigOnError,
69935
+ navCountsLoader: navCountsLoader,
69936
+ navCountsPollIntervalMs: navCountsPollIntervalMs,
69937
+ navCountsOnError: navCountsOnError,
69787
69938
  updateUriIsPath: updateUriIsPath,
69788
69939
  suppressRouteSyncEcho: suppressRouteSyncEcho
69789
69940
  }, children));
@@ -81631,12 +81782,15 @@ exports.Crumb = Crumb$1;
81631
81782
  exports.IframeAppRoot = IframeAppRoot;
81632
81783
  exports.IframeRouteSync = IframeRouteSync;
81633
81784
  exports.NavConfigSender = NavConfigSender;
81785
+ exports.NavCountsSender = NavCountsSender;
81786
+ exports.STANDARD_NAV_COUNT_THRESHOLDS = STANDARD_NAV_COUNT_THRESHOLDS;
81634
81787
  exports.accessHelpers = accessHelpers$1;
81635
81788
  exports.bootstrapIframeApp = bootstrapIframeApp;
81636
81789
  exports.fetcher = fetcher$1;
81637
81790
  exports.iframeFacade = iframeFacade;
81638
81791
  exports.normalizeIframePath = normalizeIframePath;
81639
81792
  exports.registerEarlyLoadUriListener = registerEarlyLoadUriListener;
81793
+ exports.resolveCountStatus = resolveCountStatus;
81640
81794
  exports.serializeNavItems = serializeNavItems;
81641
81795
  exports.storage = storage$2;
81642
81796
  //# sourceMappingURL=ops-tool-kit.js.map