@bundle-stats/ui 3.3.1-beta.8 → 3.3.2

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 (62) hide show
  1. package/lib/app/app.js +8 -21
  2. package/lib/app/app.stories.js +1 -22
  3. package/lib/app/header/header.js +2 -1
  4. package/lib/assets/icons.svg +0 -8
  5. package/lib/components/bundle-assets/bundle-assets.js +2 -1
  6. package/lib/components/bundle-assets-totals-table/bundle-assets-totals-table.js +7 -43
  7. package/lib/components/bundle-assets-totals-table/bundle-assets-totals-table.module.css +2 -2
  8. package/lib/components/bundle-assets-totals-table/bundle-assets-totals-table.stories.js +1 -20
  9. package/lib/components/bundle-modules/bundle-modules.js +1 -1
  10. package/lib/components/index.js +0 -8
  11. package/lib/components/summary/summary.js +7 -12
  12. package/lib/components/summary/summary.module.css +1 -1
  13. package/lib/components/summary/summary.stories.js +0 -29
  14. package/lib/components/summary-item/summary-item.js +5 -22
  15. package/lib/components/summary-item/summary-item.module.css +0 -11
  16. package/lib/components/summary-item/summary-item.stories.js +53 -51
  17. package/lib/constants.js +4 -4
  18. package/lib/ui/alert/alert.js +3 -13
  19. package/lib/ui/icon/icon.js +0 -2
  20. package/lib-esm/app/app.js +8 -20
  21. package/lib-esm/app/app.stories.js +1 -22
  22. package/lib-esm/app/header/header.js +2 -1
  23. package/lib-esm/assets/icons.svg +0 -8
  24. package/lib-esm/components/bundle-assets/bundle-assets.js +2 -1
  25. package/lib-esm/components/bundle-assets-totals-table/bundle-assets-totals-table.js +7 -24
  26. package/lib-esm/components/bundle-assets-totals-table/bundle-assets-totals-table.module.css +2 -2
  27. package/lib-esm/components/bundle-assets-totals-table/bundle-assets-totals-table.stories.js +0 -18
  28. package/lib-esm/components/bundle-modules/bundle-modules.js +1 -1
  29. package/lib-esm/components/index.js +0 -1
  30. package/lib-esm/components/summary/summary.js +7 -11
  31. package/lib-esm/components/summary/summary.module.css +1 -1
  32. package/lib-esm/components/summary/summary.stories.js +0 -27
  33. package/lib-esm/components/summary-item/summary-item.js +4 -20
  34. package/lib-esm/components/summary-item/summary-item.module.css +0 -11
  35. package/lib-esm/components/summary-item/summary-item.stories.js +38 -50
  36. package/lib-esm/constants.js +4 -4
  37. package/lib-esm/ui/alert/alert.js +3 -6
  38. package/lib-esm/ui/icon/icon.js +0 -2
  39. package/package.json +3 -3
  40. package/src/components/bundle-modules/bundle-modules.jsx +1 -1
  41. package/build-storybook.log +0 -4691
  42. package/lib/assets/icons/alert-circle.svg +0 -1
  43. package/lib/assets/icons/check-circle.svg +0 -1
  44. package/lib/components/budget-info/budget-info.js +0 -80
  45. package/lib/components/budget-info/budget-info.module.css +0 -40
  46. package/lib/components/budget-info/budget-info.stories.js +0 -44
  47. package/lib/components/budget-info/index.js +0 -18
  48. package/lib/components/budget-insights/budget-insights.js +0 -200
  49. package/lib/components/budget-insights/budget-insights.module.css +0 -53
  50. package/lib/components/budget-insights/budget-insights.stories.js +0 -104
  51. package/lib/components/budget-insights/index.js +0 -18
  52. package/lib-esm/assets/icons/alert-circle.svg +0 -1
  53. package/lib-esm/assets/icons/check-circle.svg +0 -1
  54. package/lib-esm/components/budget-info/budget-info.js +0 -58
  55. package/lib-esm/components/budget-info/budget-info.module.css +0 -40
  56. package/lib-esm/components/budget-info/budget-info.stories.js +0 -30
  57. package/lib-esm/components/budget-info/index.js +0 -1
  58. package/lib-esm/components/budget-insights/budget-insights.js +0 -148
  59. package/lib-esm/components/budget-insights/budget-insights.module.css +0 -53
  60. package/lib-esm/components/budget-insights/budget-insights.stories.js +0 -84
  61. package/lib-esm/components/budget-insights/index.js +0 -1
  62. package/storybook-static/favicon.ico +0 -0
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-alert-circle"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-check-circle"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
@@ -1,80 +0,0 @@
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.BudgetInfo = void 0;
9
-
10
- var _react = _interopRequireDefault(require("react"));
11
-
12
- var _classnames = _interopRequireDefault(require("classnames"));
13
-
14
- var _propTypes = _interopRequireDefault(require("prop-types"));
15
-
16
- var _utils = require("@bundle-stats/utils");
17
-
18
- var budgetsInsightsTransformer = _interopRequireWildcard(require("@bundle-stats/utils/lib-esm/transformers/budgets-insights"));
19
-
20
- var _icon = require("../../ui/icon");
21
-
22
- var _tooltip = require("../../ui/tooltip");
23
-
24
- var _budgetInfoModule = _interopRequireDefault(require("./budget-info.module.css"));
25
-
26
- var _INSIGHT_TYPE_MAP;
27
-
28
- 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); }
29
-
30
- 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; }
31
-
32
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
33
-
34
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
35
-
36
- var INSIGHT_TYPE_MAP = (_INSIGHT_TYPE_MAP = {}, _defineProperty(_INSIGHT_TYPE_MAP, _utils.InsightType.SUCCESS, {
37
- className: _budgetInfoModule["default"].success,
38
- glyph: _icon.Icon.ICONS.CHECK_CIRCLE
39
- }), _defineProperty(_INSIGHT_TYPE_MAP, _utils.InsightType.ERROR, {
40
- className: _budgetInfoModule["default"].error,
41
- glyph: _icon.Icon.ICONS.ALERT_CIRCLE
42
- }), _defineProperty(_INSIGHT_TYPE_MAP, _utils.InsightType.WARNING, {
43
- className: _budgetInfoModule["default"].warning,
44
- glyph: _icon.Icon.ICONS.WARNING
45
- }), _INSIGHT_TYPE_MAP);
46
-
47
- var BudgetInfo = function BudgetInfo(_ref) {
48
- var _ref$className = _ref.className,
49
- className = _ref$className === void 0 ? '' : _ref$className,
50
- metricId = _ref.metricId,
51
- budgetInsight = _ref.budgetInsight;
52
- var budgetInsightInfo = budgetsInsightsTransformer.getInfo(metricId, budgetInsight);
53
- var _INSIGHT_TYPE_MAP$bud = INSIGHT_TYPE_MAP[budgetInsightInfo.type],
54
- insightTypeClassName = _INSIGHT_TYPE_MAP$bud.className,
55
- glyph = _INSIGHT_TYPE_MAP$bud.glyph;
56
- var rootClassName = (0, _classnames["default"])(_budgetInfoModule["default"].root, insightTypeClassName, className);
57
- var messageData = budgetInsightInfo.message.data;
58
- return /*#__PURE__*/_react["default"].createElement(_tooltip.Tooltip, {
59
- className: rootClassName,
60
- title: /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("strong", null, messageData.metricLabel), " value (", /*#__PURE__*/_react["default"].createElement("strong", null, messageData.currentValue), ") is ".concat(messageData.diffLabel, " "), /*#__PURE__*/_react["default"].createElement("strong", null, messageData.budgetValue), " budget ")
61
- }, /*#__PURE__*/_react["default"].createElement(_icon.Icon, {
62
- className: _budgetInfoModule["default"].icon,
63
- glyph: glyph,
64
- size: "medium"
65
- }));
66
- };
67
-
68
- exports.BudgetInfo = BudgetInfo;
69
- BudgetInfo.propTypes = {
70
- metricId: _propTypes["default"].string.isRequired,
71
- budgetInsight: _propTypes["default"].shape({
72
- currentValue: _propTypes["default"].number,
73
- budgetValue: _propTypes["default"].number,
74
- failed: _propTypes["default"].bool
75
- }).isRequired,
76
- className: _propTypes["default"].string
77
- };
78
- BudgetInfo.defaultProps = {
79
- className: ''
80
- };
@@ -1,40 +0,0 @@
1
- .root {
2
- display: inline-block;
3
- line-height: 1em;
4
- }
5
-
6
- /* Budget error */
7
- .error .icon {
8
- color: var(--color-danger);
9
- }
10
-
11
- .error .icon:hover,
12
- .error .icon:focus,
13
- .error .icon:active
14
- {
15
- color: var(--color-danger-light);
16
- }
17
-
18
- /* Budget success */
19
- .success .icon {
20
- color: var(--color-success);
21
- }
22
-
23
- .success .icon:hover,
24
- .success .icon:focus,
25
- .success .icon:active
26
- {
27
- color: var(--color-success-light);
28
- }
29
-
30
- /* Budget warning */
31
- .warning .icon {
32
- color: var(--color-warning-dark);
33
- }
34
-
35
- .warning .icon:hover,
36
- .warning .icon:focus,
37
- .warning .icon:active
38
- {
39
- color: var(--color-warning);
40
- }
@@ -1,44 +0,0 @@
1
- "use strict";
2
-
3
- var _react = _interopRequireDefault(require("react"));
4
-
5
- var _react2 = require("@storybook/react");
6
-
7
- var _stories = require("../../stories");
8
-
9
- var _ = require(".");
10
-
11
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
12
-
13
- var stories = (0, _react2.storiesOf)('Components/BudgetInfo', module);
14
- stories.addDecorator((0, _stories.getWrapperDecorator)());
15
- stories.add('default', function () {
16
- return /*#__PURE__*/_react["default"].createElement(_.BudgetInfo, {
17
- metricId: "webpack.assetCount",
18
- budgetInsight: {
19
- budgetValue: 300,
20
- currentValue: 250,
21
- failed: false
22
- }
23
- });
24
- });
25
- stories.add('error', function () {
26
- return /*#__PURE__*/_react["default"].createElement(_.BudgetInfo, {
27
- metricId: "webpack.assetCount",
28
- budgetInsight: {
29
- budgetValue: 300,
30
- currentValue: 350,
31
- failed: true
32
- }
33
- });
34
- });
35
- stories.add('warning', function () {
36
- return /*#__PURE__*/_react["default"].createElement(_.BudgetInfo, {
37
- metricId: "webpack.assetCount",
38
- budgetInsight: {
39
- budgetValue: 300,
40
- currentValue: 300,
41
- failed: false
42
- }
43
- });
44
- });
@@ -1,18 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
-
7
- var _budgetInfo = require("./budget-info");
8
-
9
- Object.keys(_budgetInfo).forEach(function (key) {
10
- if (key === "default" || key === "__esModule") return;
11
- if (key in exports && exports[key] === _budgetInfo[key]) return;
12
- Object.defineProperty(exports, key, {
13
- enumerable: true,
14
- get: function get() {
15
- return _budgetInfo[key];
16
- }
17
- });
18
- });
@@ -1,200 +0,0 @@
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.BudgetInsights = void 0;
9
-
10
- var _react = _interopRequireWildcard(require("react"));
11
-
12
- var _propTypes = _interopRequireDefault(require("prop-types"));
13
-
14
- var _classnames = _interopRequireDefault(require("classnames"));
15
-
16
- var _utils = require("@bundle-stats/utils");
17
-
18
- var budgetsInsightsTransformer = _interopRequireWildcard(require("@bundle-stats/utils/lib-esm/transformers/budgets-insights"));
19
-
20
- var _box = require("../../layout/box");
21
-
22
- var _stack = require("../../layout/stack");
23
-
24
- var _flexStack = require("../../layout/flex-stack");
25
-
26
- var _alert = require("../../ui/alert");
27
-
28
- var _icon = require("../../ui/icon");
29
-
30
- var _componentLink = require("../component-link");
31
-
32
- var _budgetInsightsModule = _interopRequireDefault(require("./budget-insights.module.css"));
33
-
34
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
35
-
36
- 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); }
37
-
38
- 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; }
39
-
40
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
41
-
42
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
43
-
44
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
45
-
46
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
47
-
48
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
49
-
50
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
51
-
52
- 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); }
53
-
54
- var Budget = function Budget(props) {
55
- var className = props.className,
56
- metricId = props.metricId,
57
- budgetInsight = props.budgetInsight,
58
- CustomLink = props.CustomLink;
59
-
60
- var componentLinkOptions = _utils.METRIC_COMPONENT_LINKS.get(metricId);
61
-
62
- var budgetInsightInfo = budgetsInsightsTransformer.getInfo(metricId, budgetInsight);
63
- var messageData = budgetInsightInfo.message.data;
64
- return /*#__PURE__*/_react["default"].createElement(CustomLink, _extends({
65
- className: (0, _classnames["default"])(_budgetInsightsModule["default"].budget, className)
66
- }, componentLinkOptions === null || componentLinkOptions === void 0 ? void 0 : componentLinkOptions.link), /*#__PURE__*/_react["default"].createElement("strong", null, messageData.metricLabel), " value (", /*#__PURE__*/_react["default"].createElement("strong", null, messageData.currentValue), ") is ".concat(messageData.diffLabel, " "), /*#__PURE__*/_react["default"].createElement("strong", null, messageData.budgetValue), " budget ");
67
- };
68
-
69
- Budget.propTypes = {
70
- className: _propTypes["default"].string,
71
- metricId: _propTypes["default"].string.isRequired,
72
- budgetInsight: _propTypes["default"].shape({
73
- currentValue: _propTypes["default"].number.isRequired,
74
- budgetValue: _propTypes["default"].number.isRequired,
75
- failed: _propTypes["default"].bool.isRequired
76
- }).isRequired,
77
- CustomLink: _propTypes["default"].elementType.isRequired
78
- };
79
- Budget.defaultProps = {
80
- className: ''
81
- };
82
-
83
- var BudgetsGroup = function BudgetsGroup(props) {
84
- var className = props.className,
85
- kind = props.kind,
86
- source = props.source,
87
- budgets = props.budgets,
88
- CustomLink = props.CustomLink;
89
-
90
- var _useState = (0, _react.useState)(false),
91
- _useState2 = _slicedToArray(_useState, 2),
92
- showBudgets = _useState2[0],
93
- setShowBudgets = _useState2[1];
94
-
95
- var isFailed = kind === 'danger';
96
- return /*#__PURE__*/_react["default"].createElement(_alert.Alert, {
97
- kind: kind,
98
- padding: "none",
99
- className: (0, _classnames["default"])(_budgetInsightsModule["default"].group, _budgetInsightsModule["default"][kind], className)
100
- }, /*#__PURE__*/_react["default"].createElement(_box.Box, {
101
- padding: ['xsmall', 'small'],
102
- className: _budgetInsightsModule["default"].groupHeader,
103
- as: "button",
104
- type: "button",
105
- onClick: function onClick() {
106
- return setShowBudgets(!showBudgets);
107
- }
108
- }, /*#__PURE__*/_react["default"].createElement(_flexStack.FlexStack, {
109
- space: "xxsmall",
110
- className: _budgetInsightsModule["default"].groupTitle
111
- }, /*#__PURE__*/_react["default"].createElement(_icon.Icon, {
112
- className: _budgetInsightsModule["default"].groupIcon,
113
- glyph: isFailed ? _icon.Icon.ICONS.ALERT_CIRCLE : _icon.Icon.ICONS.CHECK_CIRCLE
114
- }), /*#__PURE__*/_react["default"].createElement("span", null, /*#__PURE__*/_react["default"].createElement("strong", null, budgets.length), " budget ".concat(budgets.length > 1 ? 'checks' : 'check', " ").concat(isFailed ? 'failed' : 'passed')), /*#__PURE__*/_react["default"].createElement("span", {
115
- className: _budgetInsightsModule["default"].groupTitleToggle
116
- }, showBudgets ? 'hide' : 'show', " all"))), showBudgets && /*#__PURE__*/_react["default"].createElement(_box.Box, {
117
- padding: ['xsmall', 'small'],
118
- className: _budgetInsightsModule["default"].groupContent
119
- }, /*#__PURE__*/_react["default"].createElement(_stack.Stack, {
120
- space: "none"
121
- }, budgets.map(function (_ref) {
122
- var _ref2 = _slicedToArray(_ref, 2),
123
- key = _ref2[0],
124
- budget = _ref2[1];
125
-
126
- return /*#__PURE__*/_react["default"].createElement(Budget, {
127
- key: key,
128
- metricId: "".concat(source, ".").concat(key),
129
- budgetInsight: budget,
130
- CustomLink: CustomLink
131
- });
132
- }))));
133
- };
134
-
135
- BudgetsGroup.propTypes = {
136
- className: _propTypes["default"].string,
137
- kind: _propTypes["default"].oneOf(['success', 'danger']).isRequired,
138
- source: _propTypes["default"].string.isRequired,
139
- budgets: _propTypes["default"].object.isRequired,
140
- // eslint-disable-line react/forbid-prop-types
141
- CustomLink: _propTypes["default"].elementType.isRequired
142
- };
143
- BudgetsGroup.defaultProps = {
144
- className: ''
145
- };
146
-
147
- var BudgetInsights = function BudgetInsights(props) {
148
- var className = props.className,
149
- source = props.source,
150
- budgets = props.budgets,
151
- CustomLink = props.CustomLink;
152
-
153
- var _useMemo = (0, _react.useMemo)(function () {
154
- var passed = [];
155
- var failed = [];
156
- Object.entries(budgets).forEach(function (_ref3) {
157
- var _ref4 = _slicedToArray(_ref3, 2),
158
- key = _ref4[0],
159
- budget = _ref4[1];
160
-
161
- if (budget.failed) {
162
- failed.push([key, budget]);
163
- } else {
164
- passed.push([key, budget]);
165
- }
166
- });
167
- return [failed, passed];
168
- }, [budgets]),
169
- _useMemo2 = _slicedToArray(_useMemo, 2),
170
- failedBudgets = _useMemo2[0],
171
- passedBudgets = _useMemo2[1];
172
-
173
- return /*#__PURE__*/_react["default"].createElement(_stack.Stack, {
174
- className: className,
175
- space: "xsmall"
176
- }, failedBudgets.length > 0 && /*#__PURE__*/_react["default"].createElement(BudgetsGroup, {
177
- kind: "danger",
178
- source: source,
179
- budgets: failedBudgets,
180
- CustomLink: CustomLink
181
- }), passedBudgets.length > 0 && /*#__PURE__*/_react["default"].createElement(BudgetsGroup, {
182
- kind: "success",
183
- source: source,
184
- budgets: passedBudgets,
185
- CustomLink: CustomLink
186
- }));
187
- };
188
-
189
- exports.BudgetInsights = BudgetInsights;
190
- BudgetInsights.propTypes = {
191
- className: _propTypes["default"].string,
192
- source: _propTypes["default"].string.isRequired,
193
- budgets: _propTypes["default"].object.isRequired,
194
- // eslint-disable-line react/forbid-prop-types
195
- CustomLink: _propTypes["default"].elementType
196
- };
197
- BudgetInsights.defaultProps = {
198
- className: '',
199
- CustomLink: _componentLink.ComponentLink
200
- };
@@ -1,53 +0,0 @@
1
- .groupHeader {
2
- width: 100%;
3
- border: none;
4
- background: none;
5
- cursor: pointer;
6
- color: inherit;
7
- }
8
-
9
- .groupTitle {
10
- width: 100%;
11
- align-items: center;
12
- }
13
-
14
- .groupTitle:hover {
15
- color: var(--color-text-dark);
16
- text-decoration: underline;
17
- }
18
-
19
- .groupTitleToggle {
20
- margin: 0 0 0 auto !important;
21
- }
22
-
23
- .danger .groupIcon {
24
- color: var(--color-danger);
25
- }
26
-
27
- .success .groupIcon {
28
- color: var(--color-success);
29
- }
30
-
31
- .groupContent {
32
- padding-top: 0px;
33
- background: transparent;
34
- }
35
-
36
- .budget {
37
- display: block;
38
- color: var(--color-text);
39
- text-decoration: none;
40
- }
41
-
42
- .budgetLabel,
43
- .budgetValue {
44
- color: var(--color-text-dark);
45
- font-weight: 500;
46
- }
47
-
48
- .budget:hover,
49
- .budget:focus,
50
- .budget:active {
51
- color: var(--color-text);
52
- text-decoration: underline;
53
- }
@@ -1,104 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports["default"] = exports.SingleBudget = exports.FailedBudgets = exports.Default = void 0;
7
-
8
- var _react = _interopRequireDefault(require("react"));
9
-
10
- var _reactRouterDom = require("react-router-dom");
11
-
12
- var _ = require(".");
13
-
14
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
15
-
16
- var _default = {
17
- title: 'Components/BudgetInsights',
18
- component: _.BudgetInsights,
19
- decorators: [function (Story) {
20
- return /*#__PURE__*/_react["default"].createElement(_reactRouterDom.MemoryRouter, null, /*#__PURE__*/_react["default"].createElement(Story, null));
21
- }]
22
- };
23
- exports["default"] = _default;
24
-
25
- var Template = function Template(args) {
26
- return /*#__PURE__*/_react["default"].createElement(_.BudgetInsights, args);
27
- };
28
-
29
- var Default = Template.bind();
30
- exports.Default = Default;
31
- Default.args = {
32
- source: 'webpack',
33
- budgets: {
34
- totalSizeByTypeALL: {
35
- currentValue: 2097917,
36
- budgetValue: 2097152,
37
- failed: true
38
- },
39
- totalInitialSizeJS: {
40
- currentValue: 1265645,
41
- budgetValue: 524288,
42
- failed: true
43
- },
44
- totalInitialSizeCSS: {
45
- currentValue: 48866,
46
- budgetValue: 51200,
47
- failed: false
48
- },
49
- chunkCount: {
50
- currentValue: 12,
51
- budgetValue: 50,
52
- failed: false
53
- },
54
- moduleCount: {
55
- currentValue: 1059,
56
- budgetValue: 2000,
57
- failed: false
58
- },
59
- duplicatePackagesCount: {
60
- currentValue: 13,
61
- budgetValue: 5,
62
- failed: true
63
- },
64
- 'sizes.totalSizeByTypeJS': {
65
- currentValue: 1981470,
66
- budgetValue: 2097152,
67
- failed: false
68
- },
69
- 'sizes.totalSizeByTypeCSS': {
70
- currentValue: 56091,
71
- budgetValue: 20480,
72
- failed: true
73
- }
74
- }
75
- };
76
- var FailedBudgets = Template.bind();
77
- exports.FailedBudgets = FailedBudgets;
78
- FailedBudgets.args = {
79
- source: 'webpack',
80
- budgets: {
81
- totalSizeByTypeALL: {
82
- currentValue: 2097917,
83
- budgetValue: 2097152,
84
- failed: true
85
- },
86
- totalInitialSizeJS: {
87
- currentValue: 1265645,
88
- budgetValue: 524288,
89
- failed: true
90
- }
91
- }
92
- };
93
- var SingleBudget = Template.bind();
94
- exports.SingleBudget = SingleBudget;
95
- SingleBudget.args = {
96
- source: 'webpack',
97
- budgets: {
98
- totalInitialSizeJS: {
99
- currentValue: 524288,
100
- budgetValue: 1265645,
101
- failed: false
102
- }
103
- }
104
- };
@@ -1,18 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
-
7
- var _budgetInsights = require("./budget-insights");
8
-
9
- Object.keys(_budgetInsights).forEach(function (key) {
10
- if (key === "default" || key === "__esModule") return;
11
- if (key in exports && exports[key] === _budgetInsights[key]) return;
12
- Object.defineProperty(exports, key, {
13
- enumerable: true,
14
- get: function get() {
15
- return _budgetInsights[key];
16
- }
17
- });
18
- });
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-alert-circle"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-check-circle"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
@@ -1,58 +0,0 @@
1
- import React from 'react';
2
- import cx from 'classnames';
3
- import PropTypes from 'prop-types';
4
- import { InsightType } from '@bundle-stats/utils';
5
- import * as budgetsInsightsTransformer from '@bundle-stats/utils/lib-esm/transformers/budgets-insights';
6
- import { Icon } from '../../ui/icon';
7
- import { Tooltip } from '../../ui/tooltip';
8
- import css from './budget-info.module.css';
9
- const INSIGHT_TYPE_MAP = {
10
- [InsightType.SUCCESS]: {
11
- className: css.success,
12
- glyph: Icon.ICONS.CHECK_CIRCLE
13
- },
14
- [InsightType.ERROR]: {
15
- className: css.error,
16
- glyph: Icon.ICONS.ALERT_CIRCLE
17
- },
18
- [InsightType.WARNING]: {
19
- className: css.warning,
20
- glyph: Icon.ICONS.WARNING
21
- }
22
- };
23
- export const BudgetInfo = _ref => {
24
- let {
25
- className = '',
26
- metricId,
27
- budgetInsight
28
- } = _ref;
29
- const budgetInsightInfo = budgetsInsightsTransformer.getInfo(metricId, budgetInsight);
30
- const {
31
- className: insightTypeClassName,
32
- glyph
33
- } = INSIGHT_TYPE_MAP[budgetInsightInfo.type];
34
- const rootClassName = cx(css.root, insightTypeClassName, className);
35
- const {
36
- data: messageData
37
- } = budgetInsightInfo.message;
38
- return /*#__PURE__*/React.createElement(Tooltip, {
39
- className: rootClassName,
40
- title: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("strong", null, messageData.metricLabel), ` value (`, /*#__PURE__*/React.createElement("strong", null, messageData.currentValue), `) is ${messageData.diffLabel} `, /*#__PURE__*/React.createElement("strong", null, messageData.budgetValue), ` budget `)
41
- }, /*#__PURE__*/React.createElement(Icon, {
42
- className: css.icon,
43
- glyph: glyph,
44
- size: "medium"
45
- }));
46
- };
47
- BudgetInfo.propTypes = {
48
- metricId: PropTypes.string.isRequired,
49
- budgetInsight: PropTypes.shape({
50
- currentValue: PropTypes.number,
51
- budgetValue: PropTypes.number,
52
- failed: PropTypes.bool
53
- }).isRequired,
54
- className: PropTypes.string
55
- };
56
- BudgetInfo.defaultProps = {
57
- className: ''
58
- };
@@ -1,40 +0,0 @@
1
- .root {
2
- display: inline-block;
3
- line-height: 1em;
4
- }
5
-
6
- /* Budget error */
7
- .error .icon {
8
- color: var(--color-danger);
9
- }
10
-
11
- .error .icon:hover,
12
- .error .icon:focus,
13
- .error .icon:active
14
- {
15
- color: var(--color-danger-light);
16
- }
17
-
18
- /* Budget success */
19
- .success .icon {
20
- color: var(--color-success);
21
- }
22
-
23
- .success .icon:hover,
24
- .success .icon:focus,
25
- .success .icon:active
26
- {
27
- color: var(--color-success-light);
28
- }
29
-
30
- /* Budget warning */
31
- .warning .icon {
32
- color: var(--color-warning-dark);
33
- }
34
-
35
- .warning .icon:hover,
36
- .warning .icon:focus,
37
- .warning .icon:active
38
- {
39
- color: var(--color-warning);
40
- }