@bundle-stats/ui 3.3.0-alpha.0 → 3.3.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 (237) hide show
  1. package/CHANGELOG.md +74 -11
  2. package/lib/app/app.js +124 -104
  3. package/lib/app/app.module.css +11 -4
  4. package/lib/app/app.stories.js +1 -22
  5. package/lib/app/header/header.js +1 -10
  6. package/lib/assets/icons.svg +0 -8
  7. package/lib/components/asset-info/asset-info.module.css +1 -0
  8. package/lib/components/bundle-assets/bundle-assets.js +104 -52
  9. package/lib/components/bundle-assets/bundle-assets.module.css +24 -26
  10. package/lib/components/bundle-assets-totals-table/bundle-assets-totals-table.js +16 -43
  11. package/lib/components/bundle-assets-totals-table/bundle-assets-totals-table.module.css +2 -2
  12. package/lib/components/bundle-assets-totals-table/bundle-assets-totals-table.stories.js +1 -20
  13. package/lib/components/bundle-modules/bundle-modules.js +68 -68
  14. package/lib/components/bundle-modules/bundle-modules.module.css +11 -2
  15. package/lib/components/bundle-modules/bundle-modules.utils.js +14 -10
  16. package/lib/components/bundle-modules/index.js +4 -4
  17. package/lib/components/bundle-packages/bundle-packages.js +100 -44
  18. package/lib/components/bundle-packages/bundle-packages.module.css +17 -21
  19. package/lib/components/delta/delta.module.css +1 -0
  20. package/lib/components/job-header/job-header.js +3 -1
  21. package/lib/components/job-header/job-header.module.css +6 -8
  22. package/lib/components/jobs-header/jobs-header.module.css +5 -0
  23. package/lib/components/metrics-table/metrics-table.js +72 -59
  24. package/lib/components/metrics-table/metrics-table.module.css +18 -7
  25. package/lib/components/metrics-table-search/metrics-table-search.module.css +5 -4
  26. package/lib/components/metrics-table-title/metrics-table-title.js +9 -7
  27. package/lib/components/metrics-table-title/metrics-table-title.module.css +2 -0
  28. package/lib/components/module-info/module-info.js +2 -2
  29. package/lib/components/module-info/module-info.module.css +1 -0
  30. package/lib/components/summary/summary.js +7 -12
  31. package/lib/components/summary/summary.module.css +1 -1
  32. package/lib/components/summary/summary.stories.js +0 -29
  33. package/lib/components/summary-item/summary-item.js +18 -38
  34. package/lib/components/summary-item/summary-item.module.css +1 -34
  35. package/lib/components/summary-item/summary-item.stories.js +53 -51
  36. package/lib/components/total-size-type-title/total-size-type-title.js +7 -3
  37. package/lib/constants.js +4 -4
  38. package/lib/css/default.css +14 -3
  39. package/lib/css/variables.css +17 -17
  40. package/lib/hooks/search-params.js +31 -31
  41. package/lib/layout/box/box.module.css +9 -0
  42. package/lib/layout/footer/footer.module.css +1 -1
  43. package/lib/layout/index.js +8 -0
  44. package/lib/layout/separator.js +48 -0
  45. package/lib/layout/separator.module.css +5 -0
  46. package/lib/ui/alert/alert.js +3 -13
  47. package/lib/ui/dropdown/dropdown.js +21 -26
  48. package/lib/ui/dropdown/dropdown.module.css +11 -12
  49. package/lib/ui/dropdown/dropdown.stories.js +2 -9
  50. package/lib/ui/empty-set/empty-set.js +5 -4
  51. package/lib/ui/empty-set/empty-set.module.css +2 -2
  52. package/lib/ui/filters/filters.container.js +1 -1
  53. package/lib/ui/filters/filters.js +22 -7
  54. package/lib/ui/filters/filters.module.css +3 -3
  55. package/lib/ui/horizontal-bar-chart/horizontal-bar-chart.js +1 -1
  56. package/lib/ui/hover-card/hover-card.js +102 -0
  57. package/lib/ui/hover-card/hover-card.module.css +29 -0
  58. package/lib/ui/hover-card/hover-card.stories.js +56 -0
  59. package/lib/{components/budget-info → ui/hover-card}/index.js +4 -4
  60. package/lib/ui/icon/icon.js +6 -8
  61. package/lib/ui/icon/icon.module.css +1 -0
  62. package/lib/ui/index.js +8 -8
  63. package/lib/ui/table/table.js +5 -74
  64. package/lib/ui/table/table.module.css +41 -25
  65. package/lib/ui/table/table.stories.js +1 -1
  66. package/lib/ui/{popover → tag}/index.js +4 -4
  67. package/lib/ui/tag/tag.js +72 -0
  68. package/lib/ui/tag/tag.module.css +55 -0
  69. package/lib/ui/tag/tag.stories.js +38 -0
  70. package/lib/ui/tooltip/tooltip.js +10 -9
  71. package/lib/ui/tooltip/tooltip.module.css +2 -1
  72. package/lib-esm/app/app.js +119 -103
  73. package/lib-esm/app/app.module.css +11 -4
  74. package/lib-esm/app/app.stories.js +1 -22
  75. package/lib-esm/app/header/header.js +1 -9
  76. package/lib-esm/assets/icons.svg +0 -8
  77. package/lib-esm/components/asset-info/asset-info.module.css +1 -0
  78. package/lib-esm/components/bundle-assets/bundle-assets.js +97 -56
  79. package/lib-esm/components/bundle-assets/bundle-assets.module.css +24 -26
  80. package/lib-esm/components/bundle-assets-totals-table/bundle-assets-totals-table.js +13 -27
  81. package/lib-esm/components/bundle-assets-totals-table/bundle-assets-totals-table.module.css +2 -2
  82. package/lib-esm/components/bundle-assets-totals-table/bundle-assets-totals-table.stories.js +0 -18
  83. package/lib-esm/components/bundle-modules/bundle-modules.js +50 -51
  84. package/lib-esm/components/bundle-modules/bundle-modules.module.css +11 -2
  85. package/lib-esm/components/bundle-modules/bundle-modules.utils.js +14 -6
  86. package/lib-esm/components/bundle-modules/index.js +5 -3
  87. package/lib-esm/components/bundle-packages/bundle-packages.js +88 -41
  88. package/lib-esm/components/bundle-packages/bundle-packages.module.css +17 -21
  89. package/lib-esm/components/delta/delta.module.css +1 -0
  90. package/lib-esm/components/job-header/job-header.js +2 -1
  91. package/lib-esm/components/job-header/job-header.module.css +6 -8
  92. package/lib-esm/components/jobs-header/jobs-header.module.css +5 -0
  93. package/lib-esm/components/metrics-table/metrics-table.js +61 -53
  94. package/lib-esm/components/metrics-table/metrics-table.module.css +18 -7
  95. package/lib-esm/components/metrics-table-search/metrics-table-search.module.css +5 -4
  96. package/lib-esm/components/metrics-table-title/metrics-table-title.js +8 -7
  97. package/lib-esm/components/metrics-table-title/metrics-table-title.module.css +2 -0
  98. package/lib-esm/components/module-info/module-info.js +2 -2
  99. package/lib-esm/components/module-info/module-info.module.css +1 -0
  100. package/lib-esm/components/summary/summary.js +7 -11
  101. package/lib-esm/components/summary/summary.module.css +1 -1
  102. package/lib-esm/components/summary/summary.stories.js +0 -27
  103. package/lib-esm/components/summary-item/summary-item.js +16 -36
  104. package/lib-esm/components/summary-item/summary-item.module.css +1 -34
  105. package/lib-esm/components/summary-item/summary-item.stories.js +38 -50
  106. package/lib-esm/components/total-size-type-title/total-size-type-title.js +6 -3
  107. package/lib-esm/constants.js +4 -4
  108. package/lib-esm/css/default.css +14 -3
  109. package/lib-esm/css/variables.css +17 -17
  110. package/lib-esm/hooks/search-params.js +27 -28
  111. package/lib-esm/layout/box/box.module.css +9 -0
  112. package/lib-esm/layout/footer/footer.module.css +1 -1
  113. package/lib-esm/layout/index.js +1 -0
  114. package/lib-esm/layout/separator.js +28 -0
  115. package/lib-esm/layout/separator.module.css +5 -0
  116. package/lib-esm/ui/alert/alert.js +3 -6
  117. package/lib-esm/ui/dropdown/dropdown.js +20 -25
  118. package/lib-esm/ui/dropdown/dropdown.module.css +11 -12
  119. package/lib-esm/ui/dropdown/dropdown.stories.js +2 -7
  120. package/lib-esm/ui/empty-set/empty-set.js +4 -4
  121. package/lib-esm/ui/empty-set/empty-set.module.css +2 -2
  122. package/lib-esm/ui/filters/filters.js +20 -5
  123. package/lib-esm/ui/filters/filters.module.css +3 -3
  124. package/lib-esm/ui/hover-card/hover-card.js +83 -0
  125. package/lib-esm/ui/hover-card/hover-card.module.css +29 -0
  126. package/lib-esm/ui/hover-card/hover-card.stories.js +35 -0
  127. package/lib-esm/ui/hover-card/index.js +1 -0
  128. package/lib-esm/ui/icon/icon.js +3 -5
  129. package/lib-esm/ui/icon/icon.module.css +1 -0
  130. package/lib-esm/ui/index.js +1 -1
  131. package/lib-esm/ui/table/table.js +5 -65
  132. package/lib-esm/ui/table/table.module.css +41 -25
  133. package/lib-esm/ui/table/table.stories.js +1 -1
  134. package/lib-esm/ui/tag/index.js +1 -0
  135. package/lib-esm/ui/tag/tag.js +45 -0
  136. package/lib-esm/ui/tag/tag.module.css +55 -0
  137. package/lib-esm/ui/tag/tag.stories.js +23 -0
  138. package/lib-esm/ui/tooltip/tooltip.js +10 -9
  139. package/lib-esm/ui/tooltip/tooltip.module.css +2 -1
  140. package/package.json +33 -31
  141. package/src/app/app.jsx +135 -145
  142. package/src/app/app.module.css +11 -4
  143. package/src/app/header/header.jsx +0 -10
  144. package/src/assets/icons.svg +0 -8
  145. package/src/components/asset-info/asset-info.module.css +1 -0
  146. package/src/components/bundle-assets/bundle-assets.jsx +85 -31
  147. package/src/components/bundle-assets/bundle-assets.module.css +24 -26
  148. package/src/components/bundle-assets-totals-table/bundle-assets-totals-table.jsx +13 -26
  149. package/src/components/bundle-assets-totals-table/bundle-assets-totals-table.module.css +2 -2
  150. package/src/components/bundle-modules/bundle-modules.jsx +53 -36
  151. package/src/components/bundle-modules/bundle-modules.module.css +11 -2
  152. package/src/components/bundle-modules/bundle-modules.utils.js +16 -4
  153. package/src/components/bundle-modules/index.jsx +3 -0
  154. package/src/components/bundle-packages/bundle-packages.jsx +89 -39
  155. package/src/components/bundle-packages/bundle-packages.module.css +17 -21
  156. package/src/components/delta/delta.module.css +1 -0
  157. package/src/components/job-header/job-header.jsx +2 -1
  158. package/src/components/job-header/job-header.module.css +6 -8
  159. package/src/components/jobs-header/jobs-header.module.css +5 -0
  160. package/src/components/metrics-table/metrics-table.jsx +53 -44
  161. package/src/components/metrics-table/metrics-table.module.css +18 -7
  162. package/src/components/metrics-table-search/metrics-table-search.module.css +5 -4
  163. package/src/components/metrics-table-title/metrics-table-title.jsx +20 -21
  164. package/src/components/metrics-table-title/metrics-table-title.module.css +2 -0
  165. package/src/components/module-info/module-info.jsx +3 -7
  166. package/src/components/module-info/module-info.module.css +1 -0
  167. package/src/components/summary/summary.jsx +7 -8
  168. package/src/components/summary/summary.module.css +1 -1
  169. package/src/components/summary-item/summary-item.jsx +23 -40
  170. package/src/components/summary-item/summary-item.module.css +1 -34
  171. package/src/components/total-size-type-title/total-size-type-title.jsx +6 -9
  172. package/src/constants.js +11 -7
  173. package/src/css/default.css +14 -3
  174. package/src/css/variables.css +17 -17
  175. package/src/hooks/search-params.js +42 -33
  176. package/src/layout/box/box.module.css +9 -0
  177. package/src/layout/footer/footer.module.css +1 -1
  178. package/src/layout/index.js +1 -0
  179. package/src/layout/separator.jsx +25 -0
  180. package/src/layout/separator.module.css +5 -0
  181. package/src/ui/alert/alert.jsx +2 -7
  182. package/src/ui/dropdown/dropdown.jsx +16 -22
  183. package/src/ui/dropdown/dropdown.module.css +11 -12
  184. package/src/ui/empty-set/empty-set.jsx +25 -21
  185. package/src/ui/empty-set/empty-set.module.css +2 -2
  186. package/src/ui/filters/filters.jsx +64 -53
  187. package/src/ui/filters/filters.module.css +3 -3
  188. package/src/ui/hover-card/hover-card.jsx +73 -0
  189. package/src/ui/hover-card/hover-card.module.css +29 -0
  190. package/src/ui/hover-card/index.js +1 -0
  191. package/src/ui/icon/icon.jsx +11 -9
  192. package/src/ui/icon/icon.module.css +1 -0
  193. package/src/ui/index.js +1 -1
  194. package/src/ui/table/table.jsx +5 -52
  195. package/src/ui/table/table.module.css +41 -25
  196. package/src/ui/tag/index.js +1 -0
  197. package/src/ui/tag/tag.jsx +49 -0
  198. package/src/ui/tag/tag.module.css +55 -0
  199. package/src/ui/tooltip/tooltip.jsx +10 -14
  200. package/src/ui/tooltip/tooltip.module.css +2 -1
  201. package/lib/assets/icons/alert-circle.svg +0 -1
  202. package/lib/assets/icons/check-circle.svg +0 -1
  203. package/lib/components/budget-info/budget-info.js +0 -53
  204. package/lib/components/budget-info/budget-info.module.css +0 -28
  205. package/lib/components/budget-info/budget-info.stories.js +0 -42
  206. package/lib/components/budget-insights/budget-insights.js +0 -200
  207. package/lib/components/budget-insights/budget-insights.module.css +0 -53
  208. package/lib/components/budget-insights/budget-insights.stories.js +0 -104
  209. package/lib/components/budget-insights/index.js +0 -18
  210. package/lib/ui/popover/popover.js +0 -92
  211. package/lib/ui/popover/popover.module.css +0 -66
  212. package/lib/ui/popover/popover.stories.js +0 -26
  213. package/lib-esm/assets/icons/alert-circle.svg +0 -1
  214. package/lib-esm/assets/icons/check-circle.svg +0 -1
  215. package/lib-esm/components/budget-info/budget-info.js +0 -37
  216. package/lib-esm/components/budget-info/budget-info.module.css +0 -28
  217. package/lib-esm/components/budget-info/budget-info.stories.js +0 -26
  218. package/lib-esm/components/budget-info/index.js +0 -1
  219. package/lib-esm/components/budget-insights/budget-insights.js +0 -147
  220. package/lib-esm/components/budget-insights/budget-insights.module.css +0 -53
  221. package/lib-esm/components/budget-insights/budget-insights.stories.js +0 -84
  222. package/lib-esm/components/budget-insights/index.js +0 -1
  223. package/lib-esm/ui/popover/index.js +0 -1
  224. package/lib-esm/ui/popover/popover.js +0 -71
  225. package/lib-esm/ui/popover/popover.module.css +0 -66
  226. package/lib-esm/ui/popover/popover.stories.js +0 -14
  227. package/src/assets/icons/alert-circle.svg +0 -1
  228. package/src/assets/icons/check-circle.svg +0 -1
  229. package/src/components/budget-info/budget-info.jsx +0 -49
  230. package/src/components/budget-info/budget-info.module.css +0 -28
  231. package/src/components/budget-info/index.js +0 -1
  232. package/src/components/budget-insights/budget-insights.jsx +0 -152
  233. package/src/components/budget-insights/budget-insights.module.css +0 -53
  234. package/src/components/budget-insights/index.js +0 -1
  235. package/src/ui/popover/index.js +0 -1
  236. package/src/ui/popover/popover.jsx +0 -79
  237. package/src/ui/popover/popover.module.css +0 -66
@@ -0,0 +1,55 @@
1
+ .root {
2
+ display: inline-block;
3
+ font-family: var(--font-family);
4
+ font-weight: bold;
5
+ background: var(--color-text-light);
6
+ color: var(--color-light);
7
+ text-align: center;
8
+ text-transform: uppercase;
9
+ }
10
+
11
+ /** Kind variation */
12
+ .success {
13
+ background: var(--color-success);
14
+ }
15
+
16
+ .info {
17
+ background: var(--color-info);
18
+ }
19
+
20
+ .warning {
21
+ background: var(--color-warning-dark);
22
+ }
23
+
24
+ .danger {
25
+ background: var(--color-danger);
26
+ }
27
+
28
+ /** Size variation */
29
+ /** default: medium */
30
+ .root {
31
+ border-radius: var(--radius-medium);
32
+ padding: var(--space-xxxsmall);
33
+ min-width: var(--space-small);
34
+ height: var(--space-small);
35
+ font-size: 9px;
36
+ line-height: 1;
37
+ }
38
+
39
+ .small {
40
+ border-radius: var(--radius-small);
41
+ padding: calc(var(--space-xxxsmall) / 2);
42
+ height: var(--space-xsmall);
43
+ min-width: var(--space-xsmall);
44
+ font-size: 8px;
45
+ line-height: 1;
46
+ }
47
+
48
+ .large {
49
+ border-radius: var(--radius-large);
50
+ padding: var(--space-xxxsmall) var(--space-xxsmall);
51
+ min-width: var(--space-medium);
52
+ height: var(--space-medium);
53
+ font-size: 12px;
54
+ line-height: var(--space-small);
55
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = exports.OneLetter = exports.Default = void 0;
7
+
8
+ var _ = require(".");
9
+
10
+ var _default = {
11
+ title: 'UI/Tag',
12
+ component: _.Tag,
13
+ argTypes: {
14
+ kind: {
15
+ control: 'select',
16
+ options: Object.values(_.Tag.KINDS)
17
+ },
18
+ size: {
19
+ control: 'select',
20
+ options: Object.values(_.Tag.SIZES)
21
+ }
22
+ },
23
+ args: {
24
+ children: 'tag'
25
+ }
26
+ };
27
+ exports["default"] = _default;
28
+
29
+ var Default = _.Tag.bind();
30
+
31
+ exports.Default = Default;
32
+
33
+ var OneLetter = _.Tag.bind();
34
+
35
+ exports.OneLetter = OneLetter;
36
+ OneLetter.args = {
37
+ children: 'd'
38
+ };
@@ -11,7 +11,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
11
11
 
12
12
  var _classnames = _interopRequireDefault(require("classnames"));
13
13
 
14
- var _Tooltip = require("reakit/Tooltip");
14
+ var _tooltip = require("ariakit/tooltip");
15
15
 
16
16
  var _tooltipModule = _interopRequireDefault(require("./tooltip.module.css"));
17
17
 
@@ -34,22 +34,23 @@ var Tooltip = function Tooltip(props) {
34
34
  darkMode = props.darkMode,
35
35
  restProps = _objectWithoutProperties(props, _excluded);
36
36
 
37
- var rootClassName = (0, _classnames["default"])(_tooltipModule["default"].root, className);
38
- var tooltipProps = (0, _Tooltip.useTooltipState)({
39
- baseId: process.env.NODE_ENV === 'test' && 'id-test',
37
+ var tooltip = (0, _tooltip.useTooltipState)({
40
38
  placement: 'top'
41
39
  });
42
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_Tooltip.TooltipReference, _extends({
40
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_tooltip.TooltipAnchor, _extends({
43
41
  as: Component,
44
- className: rootClassName
42
+ className: (0, _classnames["default"])(_tooltipModule["default"].root, className),
43
+ state: tooltip
45
44
  }, ref ? {
46
45
  ref: ref
47
- } : {}, restProps, tooltipProps), children), title && /*#__PURE__*/_react["default"].createElement(_Tooltip.Tooltip, _extends({}, tooltipProps, {
46
+ } : {}, restProps), children), title && /*#__PURE__*/_react["default"].createElement(_tooltip.Tooltip, {
47
+ state: tooltip,
48
48
  className: (0, _classnames["default"])(_tooltipModule["default"].tooltip, darkMode && _tooltipModule["default"].tooltipDarkMode)
49
- }), /*#__PURE__*/_react["default"].createElement(_Tooltip.TooltipArrow, _extends({}, tooltipProps, {
49
+ }, /*#__PURE__*/_react["default"].createElement(_tooltip.TooltipArrow, {
50
+ state: tooltip,
50
51
  className: _tooltipModule["default"].arrow,
51
52
  size: 12
52
- })), title));
53
+ }), title));
53
54
  };
54
55
 
55
56
  exports.Tooltip = Tooltip;
@@ -12,10 +12,11 @@
12
12
 
13
13
  .tooltip {
14
14
  padding: var(--space-xxxsmall) var(--space-xxsmall);
15
- border-radius: var(--radius-small);
15
+ border-radius: var(--radius-medium);
16
16
  background: var(--color-light);
17
17
  color: var(--color-text);
18
18
  filter: drop-shadow(0 0 var(--space-xxxsmall) var(--color-shadow));
19
+ will-change: filter;
19
20
  font-size: var(--size-xsmall);
20
21
  line-height: var(--space-small);
21
22
  }
@@ -1,6 +1,6 @@
1
1
  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); }
2
2
 
3
- import React, { useEffect, useMemo } from 'react';
3
+ import React, { useContext, useEffect, useMemo } from 'react';
4
4
  import PropTypes from 'prop-types';
5
5
  import { HashRouter, NavLink, Route, Switch, useLocation } from 'react-router-dom';
6
6
  import { COMPONENT } from '@bundle-stats/utils';
@@ -8,7 +8,6 @@ import { METRICS_WEBPACK_ASSETS, METRICS_WEBPACK_GENERAL, METRICS_WEBPACK_MODULE
8
8
  import { Box } from '../layout/box';
9
9
  import { Container } from '../ui/container';
10
10
  import { DuplicatePackagesWarning } from '../components/duplicate-packages-warning';
11
- import { BudgetInsights } from '../components/budget-insights';
12
11
  import { Summary } from '../components/summary';
13
12
  import { BundleAssets } from '../components/bundle-assets';
14
13
  import { BundleAssetsTotalsChartBars } from '../components/bundle-assets-totals-chart-bars';
@@ -60,19 +59,121 @@ Layout.defaultProps = {
60
59
  jobs: null,
61
60
  version: null
62
61
  };
62
+ const JobsContext = /*#__PURE__*/React.createContext({
63
+ jobs: []
64
+ });
63
65
 
64
- const AppComponent = _ref2 => {
65
- var _insights$webpack;
66
-
66
+ const JobsProvider = _ref2 => {
67
67
  let {
68
- version,
69
- jobs
68
+ jobs,
69
+ ...restProps
70
70
  } = _ref2;
71
+ const value = useMemo(() => ({
72
+ jobs
73
+ }), [jobs]);
74
+ return /*#__PURE__*/React.createElement(JobsContext.Provider, _extends({
75
+ value: value
76
+ }, restProps));
77
+ };
78
+
79
+ JobsProvider.propTypes = {
80
+ jobs: PropTypes.arrayOf(PropTypes.object).isRequired
81
+ };
82
+
83
+ const OverviewContent = () => {
84
+ const {
85
+ jobs
86
+ } = useContext(JobsContext);
87
+ const {
88
+ duplicatePackagesCount
89
+ } = jobs[0].summary.webpack;
90
+ const duplicatePackagesInsights = Boolean(duplicatePackagesCount.current || duplicatePackagesCount.baseline);
91
+ return /*#__PURE__*/React.createElement(Stack, {
92
+ space: "medium"
93
+ }, duplicatePackagesInsights && /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement(DuplicatePackagesWarning, {
94
+ duplicatePackagesCount: duplicatePackagesCount,
95
+ showDelta: jobs.length > 1
96
+ })), /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement(Stack, {
97
+ space: "small"
98
+ }, /*#__PURE__*/React.createElement(TotalSizeTypeTitle, null), /*#__PURE__*/React.createElement(BundleAssetsTotalsChartBars, {
99
+ jobs: jobs
100
+ }), /*#__PURE__*/React.createElement(BundleAssetsTotalsTable, {
101
+ jobs: jobs,
102
+ outline: true
103
+ }))));
104
+ };
105
+
106
+ const AssetsContent = () => {
107
+ var _jobs$;
108
+
71
109
  const [bundleStatsState, bundleStatsSetState] = useComponentQueryState(COMPONENT.BUNDLE_ASSETS);
72
- const [bundlePackagesState, bundlePackagesSetState] = useComponentQueryState(COMPONENT.BUNDLE_PACKAGES);
110
+ const {
111
+ jobs
112
+ } = useContext(JobsContext);
113
+ return /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement(Stack, {
114
+ space: "medium"
115
+ }, /*#__PURE__*/React.createElement(Summary, {
116
+ keys: METRICS_WEBPACK_ASSETS,
117
+ data: jobs == null ? void 0 : (_jobs$ = jobs[0]) == null ? void 0 : _jobs$.summary,
118
+ showSummaryItemDelta: (jobs == null ? void 0 : jobs.length) !== 1
119
+ }), /*#__PURE__*/React.createElement(Box, {
120
+ outline: true
121
+ }, /*#__PURE__*/React.createElement(BundleAssets, _extends({
122
+ jobs: jobs,
123
+ setState: bundleStatsSetState
124
+ }, bundleStatsState)))));
125
+ };
126
+
127
+ const ModulesContent = () => {
128
+ var _jobs$2;
129
+
73
130
  const [bundleModulesState, bundleModulesSetState] = useComponentQueryState(COMPONENT.BUNDLE_MODULES);
131
+ const {
132
+ jobs
133
+ } = useContext(JobsContext);
134
+ return /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement(Stack, {
135
+ space: "medium"
136
+ }, /*#__PURE__*/React.createElement(Summary, {
137
+ keys: METRICS_WEBPACK_MODULES,
138
+ data: jobs == null ? void 0 : (_jobs$2 = jobs[0]) == null ? void 0 : _jobs$2.summary,
139
+ showSummaryItemDelta: (jobs == null ? void 0 : jobs.length) !== 1
140
+ }), /*#__PURE__*/React.createElement(Box, {
141
+ outline: true
142
+ }, /*#__PURE__*/React.createElement(BundleModules, _extends({
143
+ jobs: jobs,
144
+ setState: bundleModulesSetState
145
+ }, bundleModulesState)))));
146
+ };
74
147
 
75
- if (jobs.length === 0) {
148
+ const PackagesContent = () => {
149
+ var _jobs$3;
150
+
151
+ const [bundlePackagesState, bundlePackagesSetState] = useComponentQueryState(COMPONENT.BUNDLE_PACKAGES);
152
+ const {
153
+ jobs
154
+ } = useContext(JobsContext);
155
+ return /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement(Stack, {
156
+ space: "medium"
157
+ }, /*#__PURE__*/React.createElement(Summary, {
158
+ keys: METRICS_WEBPACK_PACKAGES,
159
+ data: jobs == null ? void 0 : (_jobs$3 = jobs[0]) == null ? void 0 : _jobs$3.summary,
160
+ showSummaryItemDelta: (jobs == null ? void 0 : jobs.length) !== 1
161
+ }), /*#__PURE__*/React.createElement(Box, {
162
+ outline: true
163
+ }, /*#__PURE__*/React.createElement(BundlePackages, _extends({
164
+ jobs: jobs
165
+ }, bundlePackagesState, {
166
+ setState: bundlePackagesSetState
167
+ })))));
168
+ };
169
+
170
+ const AppComponent = _ref3 => {
171
+ let {
172
+ version,
173
+ jobs
174
+ } = _ref3;
175
+
176
+ if ((jobs == null ? void 0 : jobs.length) === 0) {
76
177
  return /*#__PURE__*/React.createElement(Layout, {
77
178
  version: version
78
179
  }, /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement("div", {
@@ -80,15 +181,9 @@ const AppComponent = _ref2 => {
80
181
  }, I18N.NO_DATA)));
81
182
  }
82
183
 
83
- const {
84
- summary,
85
- insights
86
- } = useMemo(() => jobs[0], jobs);
87
- const {
88
- duplicatePackagesCount
89
- } = summary.webpack;
90
- const duplicatePackagesInsights = Boolean(duplicatePackagesCount.current || duplicatePackagesCount.baseline);
91
- return /*#__PURE__*/React.createElement(Layout, {
184
+ return /*#__PURE__*/React.createElement(JobsProvider, {
185
+ jobs: jobs
186
+ }, /*#__PURE__*/React.createElement(Layout, {
92
187
  jobs: jobs,
93
188
  version: version
94
189
  }, /*#__PURE__*/React.createElement(Container, {
@@ -96,8 +191,7 @@ const AppComponent = _ref2 => {
96
191
  }, /*#__PURE__*/React.createElement(Summary, {
97
192
  size: "large",
98
193
  keys: METRICS_WEBPACK_GENERAL,
99
- data: summary,
100
- budgets: insights == null ? void 0 : (_insights$webpack = insights.webpack) == null ? void 0 : _insights$webpack.budgets,
194
+ data: jobs[0].summary,
101
195
  showSummaryItemDelta: jobs.length !== 1
102
196
  })), /*#__PURE__*/React.createElement(Container, {
103
197
  className: css.tabsContainer
@@ -124,98 +218,20 @@ const AppComponent = _ref2 => {
124
218
  }, /*#__PURE__*/React.createElement(Switch, null, /*#__PURE__*/React.createElement(Route, {
125
219
  exact: true,
126
220
  path: URLS.ASSETS,
127
- render: _ref3 => {
128
- var _insights$webpack2;
129
-
130
- let {
131
- location
132
- } = _ref3;
133
- return /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement(Stack, {
134
- space: "medium"
135
- }, /*#__PURE__*/React.createElement(Summary, {
136
- keys: METRICS_WEBPACK_ASSETS,
137
- data: summary,
138
- budgets: insights == null ? void 0 : (_insights$webpack2 = insights.webpack) == null ? void 0 : _insights$webpack2.budgets,
139
- showSummaryItemDelta: jobs.length !== 1
140
- }), /*#__PURE__*/React.createElement(Box, {
141
- outline: true
142
- }, /*#__PURE__*/React.createElement(BundleAssets, _extends({
143
- jobs: jobs,
144
- setState: bundleStatsSetState
145
- }, bundleStatsState, {
146
- key: `${location.pathname}_${location.search}`
147
- })))));
148
- }
221
+ component: AssetsContent
149
222
  }), /*#__PURE__*/React.createElement(Route, {
150
223
  exact: true,
151
224
  path: URLS.MODULES,
152
- render: () => {
153
- var _insights$webpack3;
154
-
155
- return /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement(Stack, {
156
- space: "medium"
157
- }, /*#__PURE__*/React.createElement(Summary, {
158
- keys: METRICS_WEBPACK_MODULES,
159
- data: summary,
160
- budgets: insights == null ? void 0 : (_insights$webpack3 = insights.webpack) == null ? void 0 : _insights$webpack3.budgets,
161
- showSummaryItemDelta: jobs.length !== 1
162
- }), /*#__PURE__*/React.createElement(Box, {
163
- outline: true
164
- }, /*#__PURE__*/React.createElement(BundleModules, _extends({
165
- jobs: jobs,
166
- setState: bundleModulesSetState
167
- }, bundleModulesState)))));
168
- }
225
+ component: ModulesContent
169
226
  }), /*#__PURE__*/React.createElement(Route, {
170
227
  exact: true,
171
228
  path: URLS.PACKAGES,
172
- render: _ref4 => {
173
- var _insights$webpack4;
174
-
175
- let {
176
- location
177
- } = _ref4;
178
- return /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement(Stack, {
179
- space: "medium"
180
- }, /*#__PURE__*/React.createElement(Summary, {
181
- keys: METRICS_WEBPACK_PACKAGES,
182
- data: summary,
183
- budgets: insights == null ? void 0 : (_insights$webpack4 = insights.webpack) == null ? void 0 : _insights$webpack4.budgets,
184
- showSummaryItemDelta: jobs.length !== 1
185
- }), /*#__PURE__*/React.createElement(Box, {
186
- outline: true
187
- }, /*#__PURE__*/React.createElement(BundlePackages, _extends({
188
- jobs: jobs
189
- }, bundlePackagesState, {
190
- setState: bundlePackagesSetState,
191
- key: `${location.pathname}_${location.search}`
192
- })))));
193
- }
229
+ component: PackagesContent
194
230
  }), /*#__PURE__*/React.createElement(Route, {
195
231
  exact: true,
196
232
  path: URLS.OVERVIEW,
197
- render: () => {
198
- var _insights$webpack5;
199
-
200
- return /*#__PURE__*/React.createElement(Stack, {
201
- space: "large"
202
- }, duplicatePackagesInsights && /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement(DuplicatePackagesWarning, {
203
- duplicatePackagesCount: duplicatePackagesCount,
204
- showDelta: jobs.length > 1
205
- })), (insights == null ? void 0 : (_insights$webpack5 = insights.webpack) == null ? void 0 : _insights$webpack5.budgets) && /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement(BudgetInsights, {
206
- source: "webpack",
207
- budgets: insights.webpack.budgets
208
- })), /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement(Stack, {
209
- space: "small"
210
- }, /*#__PURE__*/React.createElement(TotalSizeTypeTitle, null), /*#__PURE__*/React.createElement(BundleAssetsTotalsChartBars, {
211
- jobs: jobs
212
- }), /*#__PURE__*/React.createElement(Box, {
213
- outline: true
214
- }, /*#__PURE__*/React.createElement(BundleAssetsTotalsTable, {
215
- jobs: jobs
216
- })))));
217
- }
218
- }))));
233
+ component: OverviewContent
234
+ })))));
219
235
  };
220
236
 
221
237
  AppComponent.defaultProps = {
@@ -13,12 +13,13 @@
13
13
  }
14
14
 
15
15
  .summaryContainer {
16
- padding-top: var(--space-large);
16
+ padding-top: var(--space-medium);
17
17
  padding-bottom: var(--space-small);
18
18
  }
19
19
 
20
20
  .tabsContainer {
21
21
  border-bottom: 1px solid var(--color-outline);
22
+ background: var(--color-light);
22
23
  }
23
24
 
24
25
  .tabs {
@@ -34,14 +35,14 @@
34
35
  }
35
36
 
36
37
  .tabsContent {
37
- padding-top: var(--space-large);
38
- padding-bottom: var(--space-large);
38
+ padding-top: var(--space-medium);
39
+ padding-bottom: var(--space-medium);
39
40
  min-height: 480px;
40
41
  }
41
42
 
42
43
  @media (min-width: 600px) {
43
44
  :root {
44
- --header-height: 80px;
45
+ --header-height: 72px;
45
46
  }
46
47
 
47
48
  .header {
@@ -54,4 +55,10 @@
54
55
  background-color: var(--color-background);
55
56
  border-bottom: 1px solid var(--color-outline);
56
57
  }
58
+
59
+ .tabsContainer {
60
+ position: sticky;
61
+ top: var(--header-height);
62
+ z-index: 100;
63
+ }
57
64
  }
@@ -28,28 +28,7 @@ const JOBS = createJobs([CURRENT_SOURCE, BASELINE_SOURCE], {
28
28
  webpack: {
29
29
  budgets: [{
30
30
  metric: 'totalSizeByTypeALL',
31
- value: 2 * 1024 * 1024
32
- }, {
33
- metric: 'totalInitialSizeJS',
34
- value: 512 * 1024
35
- }, {
36
- metric: 'totalInitialSizeCSS',
37
- value: 50 * 1024
38
- }, {
39
- metric: 'chunkCount',
40
- value: 50
41
- }, {
42
- metric: 'moduleCount',
43
- value: 2000
44
- }, {
45
- metric: 'duplicatePackagesCount',
46
- value: 5
47
- }, {
48
- metric: 'sizes.totalSizeByTypeJS',
49
- value: 2 * 1024 * 1024
50
- }, {
51
- metric: 'sizes.totalSizeByTypeCSS',
52
- value: 20 * 1024
31
+ value: 1024 * 1024
53
32
  }]
54
33
  }
55
34
  });
@@ -3,7 +3,6 @@ import PropTypes from 'prop-types';
3
3
  import cx from 'classnames';
4
4
  import { Container } from '../../ui/container';
5
5
  import { JobsHeader } from '../../components/jobs-header';
6
- import { Logo } from '../../ui/logo';
7
6
  import css from './header.module.css';
8
7
  export const Header = _ref => {
9
8
  let {
@@ -15,14 +14,7 @@ export const Header = _ref => {
15
14
  className: cx(css.root, className)
16
15
  }, /*#__PURE__*/React.createElement("div", {
17
16
  className: css.inner
18
- }, /*#__PURE__*/React.createElement("a", {
19
- className: css.branding,
20
- href: "https://github.com/relative-ci/bundle-stats",
21
- target: "_blank",
22
- rel: "noopener noreferrer nofollow"
23
- }, /*#__PURE__*/React.createElement(Logo, {
24
- className: css.brandingLogo
25
- }, "BundleStats")), /*#__PURE__*/React.createElement(JobsHeader, {
17
+ }, /*#__PURE__*/React.createElement(JobsHeader, {
26
18
  className: css.jobs,
27
19
  jobs: jobs
28
20
  })));
@@ -1,8 +1,4 @@
1
1
  <svg width="16" height="16">
2
- <symbol fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-alert-circle" viewBox="0 0 24 24" id="alert-circle" xmlns="http://www.w3.org/2000/svg">
3
- <circle cx="12" cy="12" r="10"/>
4
- <path d="M12 8v4M12 16h.01"/>
5
- </symbol>
6
2
  <symbol viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-down" id="arrow" xmlns="http://www.w3.org/2000/svg">
7
3
  <path d="M12 5v14M19 12l-7 7-7-7"/>
8
4
  </symbol>
@@ -14,10 +10,6 @@
14
10
  <circle cx="12" cy="12" r="10"/>
15
11
  <path d="M15 9l-6 6M9 9l6 6"/>
16
12
  </symbol>
17
- <symbol fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-check-circle" viewBox="0 0 24 24" id="check-circle" xmlns="http://www.w3.org/2000/svg">
18
- <path d="M22 11.08V12a10 10 0 11-5.93-9.14"/>
19
- <path d="M22 4L12 14.01l-3-3"/>
20
- </symbol>
21
13
  <symbol viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-clock" id="clock" xmlns="http://www.w3.org/2000/svg">
22
14
  <circle cx="12" cy="12" r="10"/>
23
15
  <path d="M12 6v6l4 2"/>
@@ -1,4 +1,5 @@
1
1
  .fileName {
2
+ max-width: 100%;
2
3
  padding: 2px;
3
4
  background: var(--color-highlight-warning);
4
5
  }