@bundle-stats/ui 3.2.3 → 3.2.4-alpha.0

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 (72) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/lib/components/bundle-assets/bundle-assets.js +9 -7
  3. package/lib/components/bundle-assets/bundle-assets.module.css +5 -0
  4. package/lib/components/bundle-modules/bundle-modules.js +34 -63
  5. package/lib/components/bundle-modules/bundle-modules.module.css +0 -4
  6. package/lib/components/bundle-packages/bundle-packages.js +29 -24
  7. package/lib/components/bundle-packages/bundle-packages.module.css +37 -20
  8. package/lib/components/metrics-table-title/metrics-table-title.js +7 -3
  9. package/lib/components/summary-item/summary-item.js +16 -18
  10. package/lib/components/total-size-type-title/total-size-type-title.js +7 -3
  11. package/lib/ui/dropdown/dropdown.js +15 -19
  12. package/lib/ui/filters/filters.js +3 -5
  13. package/lib/ui/hover-card/hover-card.js +65 -0
  14. package/lib/ui/hover-card/hover-card.module.css +29 -0
  15. package/lib/ui/hover-card/hover-card.stories.js +26 -0
  16. package/lib/ui/{popover → hover-card}/index.js +4 -4
  17. package/lib/ui/icon/icon.module.css +1 -0
  18. package/lib/ui/index.js +8 -8
  19. package/lib/ui/sort-dropdown/sort-dropdown.js +2 -5
  20. package/lib/ui/tooltip/tooltip.js +22 -14
  21. package/lib/ui/tooltip/tooltip.module.css +5 -3
  22. package/lib-esm/components/bundle-assets/bundle-assets.js +9 -7
  23. package/lib-esm/components/bundle-assets/bundle-assets.module.css +5 -0
  24. package/lib-esm/components/bundle-modules/bundle-modules.js +17 -29
  25. package/lib-esm/components/bundle-modules/bundle-modules.module.css +0 -4
  26. package/lib-esm/components/bundle-packages/bundle-packages.js +28 -23
  27. package/lib-esm/components/bundle-packages/bundle-packages.module.css +37 -20
  28. package/lib-esm/components/metrics-table-title/metrics-table-title.js +6 -3
  29. package/lib-esm/components/summary-item/summary-item.js +15 -18
  30. package/lib-esm/components/total-size-type-title/total-size-type-title.js +6 -3
  31. package/lib-esm/ui/dropdown/dropdown.js +9 -19
  32. package/lib-esm/ui/filters/filters.js +3 -5
  33. package/lib-esm/ui/hover-card/hover-card.js +45 -0
  34. package/lib-esm/ui/hover-card/hover-card.module.css +29 -0
  35. package/lib-esm/ui/hover-card/hover-card.stories.js +9 -0
  36. package/lib-esm/ui/hover-card/index.js +1 -0
  37. package/lib-esm/ui/icon/icon.module.css +1 -0
  38. package/lib-esm/ui/index.js +1 -1
  39. package/lib-esm/ui/sort-dropdown/sort-dropdown.js +2 -5
  40. package/lib-esm/ui/tooltip/tooltip.js +15 -14
  41. package/lib-esm/ui/tooltip/tooltip.module.css +5 -3
  42. package/package.json +25 -22
  43. package/src/components/bundle-assets/bundle-assets.jsx +51 -42
  44. package/src/components/bundle-assets/bundle-assets.module.css +5 -0
  45. package/src/components/bundle-modules/bundle-modules.jsx +28 -31
  46. package/src/components/bundle-modules/bundle-modules.module.css +0 -4
  47. package/src/components/bundle-packages/bundle-packages.jsx +31 -25
  48. package/src/components/bundle-packages/bundle-packages.module.css +37 -20
  49. package/src/components/metrics-table-options/metrics-table-options.jsx +1 -1
  50. package/src/components/metrics-table-title/metrics-table-title.jsx +4 -3
  51. package/src/components/summary-item/summary-item.jsx +21 -26
  52. package/src/components/total-size-type-title/total-size-type-title.jsx +6 -9
  53. package/src/ui/dropdown/dropdown.jsx +14 -18
  54. package/src/ui/filters/filters.jsx +30 -39
  55. package/src/ui/hover-card/hover-card.jsx +42 -0
  56. package/src/ui/hover-card/hover-card.module.css +29 -0
  57. package/src/ui/hover-card/index.js +1 -0
  58. package/src/ui/icon/icon.module.css +1 -0
  59. package/src/ui/index.js +1 -1
  60. package/src/ui/sort-dropdown/sort-dropdown.jsx +9 -11
  61. package/src/ui/tooltip/tooltip.jsx +20 -27
  62. package/src/ui/tooltip/tooltip.module.css +5 -3
  63. package/lib/ui/popover/popover.js +0 -92
  64. package/lib/ui/popover/popover.module.css +0 -66
  65. package/lib/ui/popover/popover.stories.js +0 -26
  66. package/lib-esm/ui/popover/index.js +0 -1
  67. package/lib-esm/ui/popover/popover.js +0 -71
  68. package/lib-esm/ui/popover/popover.module.css +0 -66
  69. package/lib-esm/ui/popover/popover.stories.js +0 -14
  70. package/src/ui/popover/index.js +0 -1
  71. package/src/ui/popover/popover.jsx +0 -79
  72. package/src/ui/popover/popover.module.css +0 -66
@@ -142,7 +142,6 @@ var FilterGroup = function FilterGroup(props) {
142
142
  ariaLabel: "".concat(groupLabel, ": ").concat(filterSuffix)
143
143
  }, function (_ref7) {
144
144
  var MenuItem = _ref7.MenuItem,
145
- menu = _ref7.menu,
146
145
  menuItemClassName = _ref7.menuItemClassName;
147
146
  return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("div", {
148
147
  className: _filtersModule["default"].filterGroupItems
@@ -157,11 +156,10 @@ var FilterGroup = function FilterGroup(props) {
157
156
  return getOnGroupCheck(false, _defineProperty({}, id, true));
158
157
  };
159
158
 
160
- return /*#__PURE__*/_react["default"].createElement(MenuItem, _extends({
161
- key: id
162
- }, menu, {
159
+ return /*#__PURE__*/_react["default"].createElement(MenuItem, {
160
+ key: id,
163
161
  className: (0, _classnames["default"])(menuItemClassName, _filtersModule["default"].filterGroupItem)
164
- }), /*#__PURE__*/_react["default"].createElement(Filter, {
162
+ }, /*#__PURE__*/_react["default"].createElement(Filter, {
165
163
  name: id,
166
164
  label: itemData.label,
167
165
  onChange: onCheckboxChange,
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.HoverCard = void 0;
9
+
10
+ var _react = _interopRequireDefault(require("react"));
11
+
12
+ var _propTypes = _interopRequireDefault(require("prop-types"));
13
+
14
+ var _classnames = _interopRequireDefault(require("classnames"));
15
+
16
+ var BaseHoverCard = _interopRequireWildcard(require("@radix-ui/react-hover-card"));
17
+
18
+ var _hoverCardModule = _interopRequireDefault(require("./hover-card.module.css"));
19
+
20
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
+
22
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
+
24
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
25
+
26
+ var OFFSET = 8;
27
+ var DELAY = 300;
28
+ var propTypes = {
29
+ className: _propTypes["default"].string,
30
+ label: _propTypes["default"].element.isRequired,
31
+ side: _propTypes["default"].oneOf(['top', 'right', 'bottom', 'left']),
32
+ children: _propTypes["default"].element.isRequired
33
+ };
34
+ var defaultProps = {
35
+ className: '',
36
+ side: 'top'
37
+ };
38
+ /**
39
+ * @param {PropTypes.InferProps<typeof propTypes>} props
40
+ * @return {React.FunctionComponentElement}
41
+ */
42
+
43
+ var HoverCard = function HoverCard(props) {
44
+ var className = props.className,
45
+ label = props.label,
46
+ side = props.side,
47
+ children = props.children;
48
+ return /*#__PURE__*/_react["default"].createElement(BaseHoverCard.Root, {
49
+ openDelay: DELAY,
50
+ closeDelay: DELAY
51
+ }, /*#__PURE__*/_react["default"].createElement(BaseHoverCard.Trigger, {
52
+ className: (0, _classnames["default"])(_hoverCardModule["default"].label, className)
53
+ }, label), /*#__PURE__*/_react["default"].createElement(BaseHoverCard.Content, {
54
+ className: _hoverCardModule["default"].card,
55
+ sideOffset: OFFSET,
56
+ side: side
57
+ }, /*#__PURE__*/_react["default"].createElement(BaseHoverCard.Arrow, {
58
+ className: _hoverCardModule["default"].arrow,
59
+ offset: OFFSET
60
+ }), children));
61
+ };
62
+
63
+ exports.HoverCard = HoverCard;
64
+ HoverCard.propTypes = propTypes;
65
+ HoverCard.defaultProps = defaultProps;
@@ -0,0 +1,29 @@
1
+ .label {
2
+ color: inherit;
3
+ cursor: pointer;
4
+ }
5
+
6
+ .label:hover,
7
+ .label:focus,
8
+ .label:active {
9
+ color: var(--color-primary);
10
+ }
11
+
12
+ .label:hover {
13
+ text-decoration: underline;
14
+ }
15
+
16
+ .card {
17
+ padding: var(--space-small);
18
+ border-radius: var(--radius-small);
19
+ width: 320px;
20
+ outline: none;
21
+ filter: drop-shadow(0 0 var(--space-xxxsmall) var(--color-shadow));
22
+ background: var(--color-light);
23
+ font-size: var(--size-small);
24
+ line-height: 1.6;
25
+ }
26
+
27
+ .arrow {
28
+ fill: var(--color-light);
29
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = exports.Default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _ = require(".");
11
+
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
13
+
14
+ var _default = {
15
+ name: 'UI/HoverCard',
16
+ component: _.HoverCard
17
+ };
18
+ exports["default"] = _default;
19
+
20
+ var Default = function Default() {
21
+ return /*#__PURE__*/_react["default"].createElement(_.HoverCard, {
22
+ label: "Open popover"
23
+ }, "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua");
24
+ };
25
+
26
+ exports.Default = Default;
@@ -4,15 +4,15 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
 
7
- var _popover = require("./popover");
7
+ var _hoverCard = require("./hover-card");
8
8
 
9
- Object.keys(_popover).forEach(function (key) {
9
+ Object.keys(_hoverCard).forEach(function (key) {
10
10
  if (key === "default" || key === "__esModule") return;
11
- if (key in exports && exports[key] === _popover[key]) return;
11
+ if (key in exports && exports[key] === _hoverCard[key]) return;
12
12
  Object.defineProperty(exports, key, {
13
13
  enumerable: true,
14
14
  get: function get() {
15
- return _popover[key];
15
+ return _hoverCard[key];
16
16
  }
17
17
  });
18
18
  });
@@ -1,5 +1,6 @@
1
1
  .root {
2
2
  display: inline-block;
3
+ vertical-align: middle; /** center align when parent display is inline/inline-block **/
3
4
  }
4
5
 
5
6
  .icon {
package/lib/ui/index.js CHANGED
@@ -45,6 +45,12 @@ Object.defineProperty(exports, "HorizontalBarChart", {
45
45
  return _horizontalBarChart.HorizontalBarChart;
46
46
  }
47
47
  });
48
+ Object.defineProperty(exports, "HoverCard", {
49
+ enumerable: true,
50
+ get: function get() {
51
+ return _hoverCard.HoverCard;
52
+ }
53
+ });
48
54
  Object.defineProperty(exports, "Icon", {
49
55
  enumerable: true,
50
56
  get: function get() {
@@ -75,12 +81,6 @@ Object.defineProperty(exports, "Panels", {
75
81
  return _panels.Panels;
76
82
  }
77
83
  });
78
- Object.defineProperty(exports, "Popover", {
79
- enumerable: true,
80
- get: function get() {
81
- return _popover.Popover;
82
- }
83
- });
84
84
  Object.defineProperty(exports, "Skeleton", {
85
85
  enumerable: true,
86
86
  get: function get() {
@@ -130,14 +130,14 @@ var _icon = require("./icon");
130
130
 
131
131
  var _input = require("./input");
132
132
 
133
+ var _hoverCard = require("./hover-card");
134
+
133
135
  var _loader = require("./loader");
134
136
 
135
137
  var _logo = require("./logo");
136
138
 
137
139
  var _panels = require("./panels");
138
140
 
139
- var _popover = require("./popover");
140
-
141
141
  var _skeleton = require("./skeleton");
142
142
 
143
143
  var _sortDropdown = require("./sort-dropdown");
@@ -47,11 +47,9 @@ var SortDropdown = function SortDropdown(props) {
47
47
  return /*#__PURE__*/_react["default"].createElement(_dropdown.Dropdown, {
48
48
  className: rootClassName,
49
49
  label: customLabel,
50
- glyph: "sort",
51
- align: "right"
50
+ glyph: "sort"
52
51
  }, function (_ref) {
53
52
  var MenuItem = _ref.MenuItem,
54
- menu = _ref.menu,
55
53
  menuItemClassName = _ref.menuItemClassName,
56
54
  menuItemActiveClassName = _ref.menuItemActiveClassName;
57
55
 
@@ -61,7 +59,6 @@ var SortDropdown = function SortDropdown(props) {
61
59
  field: newField,
62
60
  direction: newDirection
63
61
  });
64
- menu.toggle();
65
62
  };
66
63
  };
67
64
 
@@ -83,7 +80,7 @@ var SortDropdown = function SortDropdown(props) {
83
80
  var isActive = field === key;
84
81
  return /*#__PURE__*/_react["default"].createElement(MenuItem, _extends({
85
82
  key: key
86
- }, menu, buttonProps, {
83
+ }, buttonProps, {
87
84
  className: (0, _classnames["default"])(buttonProps.className, menuItemClassName, _sortDropdownModule["default"].item, isActive && menuItemActiveClassName, isActive && _sortDropdownModule["default"].active)
88
85
  }), /*#__PURE__*/_react["default"].createElement("span", {
89
86
  className: _sortDropdownModule["default"].itemLabel
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
@@ -11,12 +13,16 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
11
13
 
12
14
  var _classnames = _interopRequireDefault(require("classnames"));
13
15
 
14
- var _Tooltip = require("reakit/Tooltip");
16
+ var BaseTooltip = _interopRequireWildcard(require("@radix-ui/react-tooltip"));
15
17
 
16
18
  var _tooltipModule = _interopRequireDefault(require("./tooltip.module.css"));
17
19
 
18
20
  var _excluded = ["className", "title", "children", "as", "containerRef", "darkMode"];
19
21
 
22
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
23
+
24
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
+
20
26
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
21
27
 
22
28
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
@@ -25,6 +31,9 @@ function _objectWithoutProperties(source, excluded) { if (source == null) return
25
31
 
26
32
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
27
33
 
34
+ var OFFSET = 9;
35
+ var DELAY = 200;
36
+
28
37
  var Tooltip = function Tooltip(props) {
29
38
  var className = props.className,
30
39
  title = props.title,
@@ -35,21 +44,20 @@ var Tooltip = function Tooltip(props) {
35
44
  restProps = _objectWithoutProperties(props, _excluded);
36
45
 
37
46
  var rootClassName = (0, _classnames["default"])(_tooltipModule["default"].root, className);
38
- var tooltipProps = (0, _Tooltip.useTooltipState)({
39
- baseId: process.env.NODE_ENV === 'test' && 'id-test',
40
- placement: 'top'
41
- });
42
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_Tooltip.TooltipReference, _extends({
43
- as: Component,
47
+ var tooltipClassName = (0, _classnames["default"])(_tooltipModule["default"].tooltip, darkMode && _tooltipModule["default"].tooltipDarkMode);
48
+ return /*#__PURE__*/_react["default"].createElement(BaseTooltip.Provider, null, /*#__PURE__*/_react["default"].createElement(BaseTooltip.Root, {
49
+ delayDuration: DELAY
50
+ }, /*#__PURE__*/_react["default"].createElement(BaseTooltip.Trigger, {
51
+ asChild: true
52
+ }, /*#__PURE__*/_react["default"].createElement(Component, _extends({
44
53
  className: rootClassName
45
- }, ref ? {
46
- ref: ref
47
- } : {}, restProps, tooltipProps), children), title && /*#__PURE__*/_react["default"].createElement(_Tooltip.Tooltip, _extends({}, tooltipProps, {
48
- className: (0, _classnames["default"])(_tooltipModule["default"].tooltip, darkMode && _tooltipModule["default"].tooltipDarkMode)
49
- }), /*#__PURE__*/_react["default"].createElement(_Tooltip.TooltipArrow, _extends({}, tooltipProps, {
54
+ }, restProps), children)), title && /*#__PURE__*/_react["default"].createElement(BaseTooltip.Content, {
55
+ className: tooltipClassName
56
+ }, /*#__PURE__*/_react["default"].createElement(BaseTooltip.Arrow, {
50
57
  className: _tooltipModule["default"].arrow,
51
- size: 12
52
- })), title));
58
+ startOffset: OFFSET,
59
+ offset: OFFSET
60
+ }), title)));
53
61
  };
54
62
 
55
63
  exports.Tooltip = Tooltip;
@@ -1,4 +1,7 @@
1
1
  .root {
2
+ appearance: none;
3
+ border: none;
4
+ background: none;
2
5
  position: relative;
3
6
  color: inherit;
4
7
  line-height: inherit;
@@ -20,8 +23,7 @@
20
23
  line-height: var(--space-small);
21
24
  }
22
25
 
23
- .arrow svg {
24
- display: block;
26
+ .arrow {
25
27
  fill: var(--color-light);
26
28
  }
27
29
 
@@ -30,6 +32,6 @@
30
32
  color: var(--color-light);
31
33
  }
32
34
 
33
- .tooltipDarkMode .arrow svg {
35
+ .tooltipDarkMode .arrow {
34
36
  fill: var(--color-text);
35
37
  }
@@ -12,7 +12,7 @@ import I18N from '../../i18n';
12
12
  import { FlexStack } from '../../layout/flex-stack';
13
13
  import { Icon } from '../../ui/icon';
14
14
  import { FileName } from '../../ui/file-name';
15
- import { Popover } from '../../ui/popover';
15
+ import { HoverCard } from '../../ui/hover-card';
16
16
  import { Tooltip } from '../../ui/tooltip';
17
17
  import { Filters } from '../../ui/filters';
18
18
  import { SortDropdown } from '../../ui/sort-dropdown';
@@ -86,11 +86,11 @@ const getRenderRowHeader = _ref4 => {
86
86
  isEntry,
87
87
  isInitial
88
88
  } = item;
89
- return /*#__PURE__*/React.createElement(Popover, {
90
- label: /*#__PURE__*/React.createElement(FileName, {
91
- name: label
92
- }),
93
- icon: /*#__PURE__*/React.createElement("div", {
89
+ return /*#__PURE__*/React.createElement(HoverCard, {
90
+ label: /*#__PURE__*/React.createElement(FlexStack, {
91
+ space: "xxxsmall",
92
+ className: css.assetName
93
+ }, /*#__PURE__*/React.createElement("div", {
94
94
  className: css.assetInfoFlags
95
95
  }, isNotPredictive && /*#__PURE__*/React.createElement(Tooltip, {
96
96
  className: css.notPredictive,
@@ -109,7 +109,9 @@ const getRenderRowHeader = _ref4 => {
109
109
  }, "e"), isInitial && /*#__PURE__*/React.createElement("span", {
110
110
  title: "Initial",
111
111
  className: css.flagInitial
112
- }, "i"))
112
+ }, "i")), /*#__PURE__*/React.createElement(FileName, {
113
+ name: label
114
+ }))
113
115
  }, /*#__PURE__*/React.createElement(AssetInfo, {
114
116
  className: css.assetInfo,
115
117
  item: item,
@@ -8,6 +8,11 @@
8
8
  margin-right: -1px; /** collapse border */
9
9
  }
10
10
 
11
+ .assetName {
12
+ display: inline-flex;
13
+ align-items: center;
14
+ }
15
+
11
16
  .notPredictive {
12
17
  margin-right: var(--space-xxsmall);
13
18
  display: inline-block;
@@ -4,7 +4,7 @@ import _get from "lodash/get";
4
4
 
5
5
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
6
6
 
7
- import React, { useCallback, useMemo, useState } from 'react';
7
+ import React, { useMemo } from 'react';
8
8
  import PropTypes from 'prop-types';
9
9
  import cx from 'classnames';
10
10
  import { FILE_TYPE_LABELS, MODULE_SOURCE_FILE_TYPES, MODULE_SOURCE_TYPE, MODULE_CHUNK, MODULE_FILTERS, MODULE_FILE_TYPE } from '@bundle-stats/utils';
@@ -15,7 +15,7 @@ import { FlexStack } from '../../layout/flex-stack';
15
15
  import { EmptySet } from '../../ui/empty-set';
16
16
  import { FileName } from '../../ui/file-name';
17
17
  import { Filters } from '../../ui/filters';
18
- import { Popover } from '../../ui/popover';
18
+ import { HoverCard } from '../../ui/hover-card';
19
19
  import { SortDropdown } from '../../ui/sort-dropdown';
20
20
  import { Toolbar } from '../../ui/toolbar';
21
21
  import { MetricsTable } from '../metrics-table';
@@ -35,29 +35,17 @@ const RowHeader = _ref => {
35
35
 
36
36
  const chunkIds = _map(chunks, 'id');
37
37
 
38
- const [showPopopver, setPopover] = useState(false);
39
- const handleOnMouseEnter = useCallback(() => setPopover(true), [showPopopver]);
40
38
  const content = /*#__PURE__*/React.createElement(FileName, {
41
39
  name: row.label
42
40
  });
43
- return /*#__PURE__*/React.createElement("div", {
44
- onMouseEnter: handleOnMouseEnter
45
- }, !showPopopver ? content : /*#__PURE__*/React.createElement(Popover, {
46
- ariaLabel: "View module info",
41
+ return /*#__PURE__*/React.createElement(HoverCard, {
47
42
  label: content
48
- }, _ref2 => {
49
- let {
50
- popoverToggle
51
- } = _ref2;
52
- return /*#__PURE__*/React.createElement(ModuleInfo, {
53
- className: css.namePopover,
54
- item: row,
55
- chunks: chunks,
56
- chunkIds: chunkIds,
57
- labels: labels,
58
- customComponentLink: CustomComponentLink,
59
- onClick: popoverToggle
60
- });
43
+ }, /*#__PURE__*/React.createElement(ModuleInfo, {
44
+ item: row,
45
+ chunks: chunks,
46
+ chunkIds: chunkIds,
47
+ labels: labels,
48
+ customComponentLink: CustomComponentLink
61
49
  }));
62
50
  };
63
51
 
@@ -76,12 +64,12 @@ RowHeader.defaultProps = {
76
64
  chunks: []
77
65
  };
78
66
 
79
- const getRenderRowHeader = _ref3 => {
67
+ const getRenderRowHeader = _ref2 => {
80
68
  let {
81
69
  labels,
82
70
  chunks,
83
71
  CustomComponentLink
84
- } = _ref3;
72
+ } = _ref2;
85
73
  return row => /*#__PURE__*/React.createElement(RowHeader, {
86
74
  row: row,
87
75
  chunks: chunks,
@@ -90,7 +78,7 @@ const getRenderRowHeader = _ref3 => {
90
78
  });
91
79
  };
92
80
 
93
- export const BundleModules = _ref4 => {
81
+ export const BundleModules = _ref3 => {
94
82
  let {
95
83
  className,
96
84
  jobs,
@@ -108,7 +96,7 @@ export const BundleModules = _ref4 => {
108
96
  updateSearch,
109
97
  hasActiveFilters,
110
98
  customComponentLink: CustomComponentLink
111
- } = _ref4;
99
+ } = _ref3;
112
100
  const rootClassName = cx(css.root, className);
113
101
  const labels = useMemo(() => _map(jobs, 'label'), [jobs]);
114
102
  const renderRowHeader = useMemo(() => getRenderRowHeader({
@@ -143,11 +131,11 @@ export const BundleModules = _ref4 => {
143
131
  ...(!_isEmpty(chunks) && {
144
132
  [MODULE_CHUNK]: {
145
133
  label: 'Chunk',
146
- ...chunks.reduce((chunkFilters, _ref5) => {
134
+ ...chunks.reduce((chunkFilters, _ref4) => {
147
135
  let {
148
136
  id,
149
137
  name
150
- } = _ref5;
138
+ } = _ref4;
151
139
  return { ...chunkFilters,
152
140
  [id]: {
153
141
  label: name,
@@ -172,10 +160,10 @@ export const BundleModules = _ref4 => {
172
160
  className: rootClassName
173
161
  }, /*#__PURE__*/React.createElement(Toolbar, {
174
162
  className: css.toolbar,
175
- renderActions: _ref6 => {
163
+ renderActions: _ref5 => {
176
164
  let {
177
165
  actionClassName
178
- } = _ref6;
166
+ } = _ref5;
179
167
  return /*#__PURE__*/React.createElement(FlexStack, {
180
168
  space: "xxsmall",
181
169
  className: cx(css.dropdown, actionClassName)
@@ -11,7 +11,3 @@
11
11
  max-width: 240px;
12
12
  margin-right: -1px; /** collapse border */
13
13
  }
14
-
15
- .namePopover {
16
- min-width: 280px;
17
- }
@@ -10,7 +10,7 @@ import { Stack } from '../../layout/stack';
10
10
  import { FlexStack } from '../../layout/flex-stack';
11
11
  import { EmptySet } from '../../ui/empty-set';
12
12
  import { Filters } from '../../ui/filters';
13
- import { Popover } from '../../ui/popover';
13
+ import { HoverCard } from '../../ui/hover-card';
14
14
  import { SortDropdown } from '../../ui/sort-dropdown';
15
15
  import { Toolbar } from '../../ui/toolbar';
16
16
  import { FileName } from '../../ui/file-name';
@@ -21,7 +21,7 @@ import { MetricsTableOptions } from '../metrics-table-options';
21
21
  import { MetricsTableTitle } from '../metrics-table-title';
22
22
  import css from './bundle-packages.module.css';
23
23
 
24
- const PackagePopoverContent = _ref => {
24
+ const PackageCard = _ref => {
25
25
  let {
26
26
  name,
27
27
  fullName,
@@ -33,46 +33,46 @@ const PackagePopoverContent = _ref => {
33
33
  const [normalizedName, packageId] = name.split(PACKAGE_ID_SEPARATOR);
34
34
  return /*#__PURE__*/React.createElement(Stack, {
35
35
  space: "xxsmall",
36
- className: css.packagePopover
36
+ className: css.packageCard
37
37
  }, /*#__PURE__*/React.createElement(Stack, {
38
38
  space: "xxxsmall"
39
39
  }, /*#__PURE__*/React.createElement("h3", {
40
- className: css.packagePopoverTitle
40
+ className: css.packageCardTitle
41
41
  }, normalizedName, packageId && /*#__PURE__*/React.createElement("span", {
42
- className: css.packagePopoverTitleIndex
42
+ className: css.packageCardTitleIndex
43
43
  }, `${PACKAGE_ID_SEPARATOR}${packageId}`)), /*#__PURE__*/React.createElement("p", {
44
- className: css.packagePopoverPath
44
+ className: css.packageCardPath
45
45
  }, /*#__PURE__*/React.createElement(FileName, {
46
- className: css.packagePopoverPathValue,
46
+ className: css.packageCardPathValue,
47
47
  name: normalizedPackagePath
48
48
  }))), /*#__PURE__*/React.createElement("ul", {
49
- className: css.packagePopoverList
49
+ className: css.packageCardList
50
50
  }, /*#__PURE__*/React.createElement("li", {
51
- className: css.packagePopoverItem
51
+ className: css.packageCardItem
52
52
  }, /*#__PURE__*/React.createElement("a", {
53
53
  href: `https://www.npmjs.com/package/${normalizedName}`,
54
54
  target: "_blank",
55
55
  rel: "noreferrer"
56
56
  }, "npmjs.com")), /*#__PURE__*/React.createElement("li", {
57
- className: css.packagePopoverItem
57
+ className: css.packageCardItem
58
58
  }, /*#__PURE__*/React.createElement("a", {
59
59
  href: `https://bundlephobia.com/result?p=${normalizedName}`,
60
60
  target: "_blank",
61
61
  rel: "noreferrer"
62
62
  }, "bundlephobia.com"))), /*#__PURE__*/React.createElement(Stack, {
63
63
  space: "xxxsmall",
64
- className: css.packagePopover.actions
64
+ className: css.packageCardActions
65
65
  }, duplicate && /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(CustomComponentLink, getBundlePackagesByNameComponentLink(normalizedName), "View all duplicate instances")), /*#__PURE__*/React.createElement(CustomComponentLink, getBundleModulesBySearch(normalizedPackagePath), "Search modules by package path")));
66
66
  };
67
67
 
68
- PackagePopoverContent.propTypes = {
68
+ PackageCard.propTypes = {
69
69
  name: PropTypes.string.isRequired,
70
70
  path: PropTypes.string,
71
71
  fullName: PropTypes.string.isRequired,
72
72
  duplicate: PropTypes.bool.isRequired,
73
73
  CustomComponentLink: PropTypes.elementType.isRequired
74
74
  };
75
- PackagePopoverContent.defaultProps = {
75
+ PackageCard.defaultProps = {
76
76
  path: ''
77
77
  };
78
78
 
@@ -85,19 +85,24 @@ const PackageRowHeader = _ref2 => {
85
85
  const {
86
86
  path
87
87
  } = item.runs[0] || {};
88
- return /*#__PURE__*/React.createElement("span", {
88
+ return /*#__PURE__*/React.createElement(FlexStack, {
89
+ space: "xxxsmall",
89
90
  className: css.packageNames
90
91
  }, packageNames.map((packageName, index) => {
91
- // Render duplicate flag only for the last entry
92
- const duplicateFlag = index === packageNames.length - 1 && item.duplicate && /*#__PURE__*/React.createElement("span", {
93
- className: css.duplicate,
92
+ const label = /*#__PURE__*/React.createElement(FlexStack, {
93
+ space: "xxxsmall",
94
+ className: css.packageNameLabel
95
+ }, index === packageNames.length - 1 && item.duplicate && /*#__PURE__*/React.createElement("span", {
96
+ className: css.packageNameDuplicate,
94
97
  title: "Duplicate package"
95
- }, "D");
96
- return /*#__PURE__*/React.createElement(Popover, {
97
- className: css.packageName,
98
- icon: duplicateFlag,
99
- label: packageName
100
- }, /*#__PURE__*/React.createElement(PackagePopoverContent, {
98
+ }, "D"), /*#__PURE__*/React.createElement("span", {
99
+ className: css.packageNameText
100
+ }, packageName));
101
+ return /*#__PURE__*/React.createElement(HoverCard, {
102
+ label: label,
103
+ key: packageName,
104
+ className: css.packageName
105
+ }, /*#__PURE__*/React.createElement(PackageCard, {
101
106
  name: packageName,
102
107
  path: path,
103
108
  fullName: item.label,