@bundle-stats/ui 4.3.0-beta.1 → 4.3.0-beta.3

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 (65) hide show
  1. package/lib/app/app.js +10 -5
  2. package/lib/app/app.js.map +1 -1
  3. package/lib/assets/icons.svg +9 -1
  4. package/lib/assets/icons.svg.js +6 -0
  5. package/lib/assets/icons.svg.js.map +1 -1
  6. package/lib/components/index.js +3 -3
  7. package/lib/components/index.js.map +1 -1
  8. package/lib/components/{duplicate-packages-warning → insights}/index.js +1 -1
  9. package/lib/components/insights/index.js.map +1 -0
  10. package/lib/components/insights/insights.js +58 -0
  11. package/lib/components/insights/insights.js.map +1 -0
  12. package/lib/components/insights/insights.module.css +32 -0
  13. package/lib/components/job-header/job-header.js +1 -1
  14. package/lib/components/job-header/job-header.js.map +1 -1
  15. package/lib/ui/icon/icon.js +2 -0
  16. package/lib/ui/icon/icon.js.map +1 -1
  17. package/lib-esm/app/app.js +11 -5
  18. package/lib-esm/app/app.js.map +1 -1
  19. package/lib-esm/assets/icons.svg +9 -1
  20. package/lib-esm/assets/icons.svg.js +6 -0
  21. package/lib-esm/assets/icons.svg.js.map +1 -1
  22. package/lib-esm/components/index.js +1 -1
  23. package/lib-esm/components/index.js.map +1 -1
  24. package/lib-esm/components/insights/index.js +2 -0
  25. package/lib-esm/components/insights/index.js.map +1 -0
  26. package/lib-esm/components/insights/insights.js +51 -0
  27. package/lib-esm/components/insights/insights.js.map +1 -0
  28. package/lib-esm/components/insights/insights.module.css +32 -0
  29. package/lib-esm/components/job-header/job-header.js +2 -2
  30. package/lib-esm/components/job-header/job-header.js.map +1 -1
  31. package/lib-esm/ui/icon/icon.js +2 -0
  32. package/lib-esm/ui/icon/icon.js.map +1 -1
  33. package/package.json +15 -17
  34. package/src/app/app.jsx +19 -10
  35. package/src/assets/icons/error.svg +6 -0
  36. package/src/assets/icons/info.svg +6 -0
  37. package/src/assets/icons.svg +9 -1
  38. package/src/assets/icons.svg.jsx +26 -0
  39. package/src/components/index.js +1 -1
  40. package/src/components/insights/index.ts +1 -0
  41. package/src/components/insights/insights.module.css +32 -0
  42. package/src/components/insights/insights.stories.tsx +50 -0
  43. package/src/components/insights/insights.tsx +101 -0
  44. package/src/components/job-header/job-header.jsx +2 -2
  45. package/src/ui/icon/icon.jsx +2 -0
  46. package/tsconfig.esm.json +1 -1
  47. package/tsconfig.lib.json +1 -1
  48. package/types/components/index.d.ts +1 -1
  49. package/types/components/insights/index.d.ts +1 -0
  50. package/types/components/insights/insights.d.ts +8 -0
  51. package/types/ui/icon/icon.d.ts +2 -0
  52. package/lib/components/duplicate-packages-warning/duplicate-packages-warning.js +0 -41
  53. package/lib/components/duplicate-packages-warning/duplicate-packages-warning.js.map +0 -1
  54. package/lib/components/duplicate-packages-warning/duplicate-packages-warning.module.css +0 -22
  55. package/lib/components/duplicate-packages-warning/index.js.map +0 -1
  56. package/lib-esm/components/duplicate-packages-warning/duplicate-packages-warning.js +0 -34
  57. package/lib-esm/components/duplicate-packages-warning/duplicate-packages-warning.js.map +0 -1
  58. package/lib-esm/components/duplicate-packages-warning/duplicate-packages-warning.module.css +0 -22
  59. package/lib-esm/components/duplicate-packages-warning/index.js +0 -2
  60. package/lib-esm/components/duplicate-packages-warning/index.js.map +0 -1
  61. package/src/components/duplicate-packages-warning/duplicate-packages-warning.jsx +0 -60
  62. package/src/components/duplicate-packages-warning/duplicate-packages-warning.module.css +0 -22
  63. package/src/components/duplicate-packages-warning/index.js +0 -1
  64. package/types/components/duplicate-packages-warning/duplicate-packages-warning.d.ts +0 -21
  65. package/types/components/duplicate-packages-warning/index.d.ts +0 -1
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import cx from 'classnames';
4
4
  import get from 'lodash/get';
5
- import { SOURCE_PATH_WEBPACK_STATS, formatDateTime } from '@bundle-stats/utils';
5
+ import { Source, formatDateTime } from '@bundle-stats/utils';
6
6
  import { FlexStack } from '../../layout/flex-stack';
7
7
  import { Stack } from '../../layout/stack';
8
8
  import { Icon } from '../../ui/icon';
@@ -10,7 +10,7 @@ import { Tag } from '../../ui/tag';
10
10
  import css from './job-header.module.css';
11
11
  export const JobHeader = (props) => {
12
12
  const { className, tag, job, children } = props;
13
- const { builtAt, hash } = get(job, `meta.${SOURCE_PATH_WEBPACK_STATS}`, {});
13
+ const { builtAt, hash } = get(job, `meta.${Source.webpack}`, {});
14
14
  const rootClassName = cx(css.root, className);
15
15
  return (React.createElement(Stack, { className: rootClassName, space: "xxsmall" },
16
16
  React.createElement("h1", { className: css.title },
@@ -1 +1 @@
1
- {"version":3,"file":"job-header.js","sourceRoot":"","sources":["../../../src/components/job-header/job-header.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,GAAG,MAAM,YAAY,CAAC;AAC7B,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEhF,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,GAAG,MAAM,yBAAyB,CAAC;AAE1C,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,EAAE;IACjC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAEhD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,QAAQ,yBAAyB,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5E,MAAM,aAAa,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAE9C,OAAO,CACL,oBAAC,KAAK,IAAC,SAAS,EAAE,aAAa,EAAE,KAAK,EAAC,SAAS;QAC9C,4BAAI,SAAS,EAAE,GAAG,CAAC,KAAK;YACtB,kCAAO,IAAI,GAAG,CAAC,mBAAmB,EAAE,CAAQ;YAC3C,GAAG,IAAI,oBAAC,GAAG,IAAC,SAAS,EAAE,GAAG,CAAC,GAAG,IAAG,GAAG,CAAO,CACzC;QACL,oBAAC,SAAS,IAAC,KAAK,EAAC,SAAS,EAAC,SAAS,EAAE,GAAG,CAAC,IAAI;YAC3C,OAAO,IAAI,CACV,oBAAC,SAAS,IAAC,KAAK,EAAC,UAAU,EAAC,UAAU,EAAC,QAAQ,EAAC,MAAM,QAAC,EAAE,EAAC,MAAM,EAAC,KAAK,EAAE,OAAO;gBAC7E,oBAAC,IAAI,IAAC,KAAK,EAAC,OAAO,GAAG;gBACtB,kCACG,cAAc,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,OAAO,CAAC,CACjE,CACG,CACb;YAEA,IAAI,IAAI,CACP,oBAAC,SAAS,IAAC,KAAK,EAAC,UAAU,EAAC,UAAU,EAAC,QAAQ,EAAC,MAAM,QAAC,KAAK,EAAC,qBAAqB;gBAChF,oBAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,GAAG;gBACvB,kCAAO,IAAI,CAAQ,CACT,CACb;YAED,6BAAK,SAAS,EAAE,GAAG,CAAC,OAAO,IAAG,QAAQ,CAAO,CACnC,CACN,CACT,CAAC;AACJ,CAAC,CAAC;AAEF,SAAS,CAAC,SAAS,GAAG;IACpB,SAAS,EAAE,SAAS,CAAC,MAAM;IAC3B,GAAG,EAAE,SAAS,CAAC,MAAM;IACrB,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC;QACnB,mBAAmB,EAAE,SAAS,CAAC,MAAM;QACrC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC;YACpB,OAAO,EAAE,SAAS,CAAC,MAAM;SAC1B,CAAC;QACF,OAAO,EAAE,SAAS,CAAC,MAAM;KAC1B,CAAC;IACF,QAAQ,EAAE,SAAS,CAAC,OAAO;CAC5B,CAAC;AAEF,SAAS,CAAC,YAAY,GAAG;IACvB,SAAS,EAAE,EAAE;IACb,GAAG,EAAE,EAAE;IACP,GAAG,EAAE,IAAI;IACT,QAAQ,EAAE,IAAI;CACf,CAAC"}
1
+ {"version":3,"file":"job-header.js","sourceRoot":"","sources":["../../../src/components/job-header/job-header.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,GAAG,MAAM,YAAY,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,GAAG,MAAM,yBAAyB,CAAC;AAE1C,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,EAAE;IACjC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAEhD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,QAAQ,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;IACjE,MAAM,aAAa,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAE9C,OAAO,CACL,oBAAC,KAAK,IAAC,SAAS,EAAE,aAAa,EAAE,KAAK,EAAC,SAAS;QAC9C,4BAAI,SAAS,EAAE,GAAG,CAAC,KAAK;YACtB,kCAAO,IAAI,GAAG,CAAC,mBAAmB,EAAE,CAAQ;YAC3C,GAAG,IAAI,oBAAC,GAAG,IAAC,SAAS,EAAE,GAAG,CAAC,GAAG,IAAG,GAAG,CAAO,CACzC;QACL,oBAAC,SAAS,IAAC,KAAK,EAAC,SAAS,EAAC,SAAS,EAAE,GAAG,CAAC,IAAI;YAC3C,OAAO,IAAI,CACV,oBAAC,SAAS,IAAC,KAAK,EAAC,UAAU,EAAC,UAAU,EAAC,QAAQ,EAAC,MAAM,QAAC,EAAE,EAAC,MAAM,EAAC,KAAK,EAAE,OAAO;gBAC7E,oBAAC,IAAI,IAAC,KAAK,EAAC,OAAO,GAAG;gBACtB,kCACG,cAAc,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,OAAO,CAAC,CACjE,CACG,CACb;YAEA,IAAI,IAAI,CACP,oBAAC,SAAS,IAAC,KAAK,EAAC,UAAU,EAAC,UAAU,EAAC,QAAQ,EAAC,MAAM,QAAC,KAAK,EAAC,qBAAqB;gBAChF,oBAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,GAAG;gBACvB,kCAAO,IAAI,CAAQ,CACT,CACb;YAED,6BAAK,SAAS,EAAE,GAAG,CAAC,OAAO,IAAG,QAAQ,CAAO,CACnC,CACN,CACT,CAAC;AACJ,CAAC,CAAC;AAEF,SAAS,CAAC,SAAS,GAAG;IACpB,SAAS,EAAE,SAAS,CAAC,MAAM;IAC3B,GAAG,EAAE,SAAS,CAAC,MAAM;IACrB,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC;QACnB,mBAAmB,EAAE,SAAS,CAAC,MAAM;QACrC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC;YACpB,OAAO,EAAE,SAAS,CAAC,MAAM;SAC1B,CAAC;QACF,OAAO,EAAE,SAAS,CAAC,MAAM;KAC1B,CAAC;IACF,QAAQ,EAAE,SAAS,CAAC,OAAO;CAC5B,CAAC;AAEF,SAAS,CAAC,YAAY,GAAG;IACvB,SAAS,EAAE,EAAE;IACb,GAAG,EAAE,EAAE;IACP,GAAG,EAAE,IAAI;IACT,QAAQ,EAAE,IAAI;CACf,CAAC"}
@@ -9,7 +9,9 @@ const ICONS = {
9
9
  CLOSE: 'close',
10
10
  CLOCK: 'clock',
11
11
  COMMIT: 'commit',
12
+ ERROR: 'error',
12
13
  FILTER: 'filter',
14
+ INFO: 'info',
13
15
  HELP: 'help',
14
16
  MENU: 'menu',
15
17
  SORT: 'sort',
@@ -1 +1 @@
1
- {"version":3,"file":"icon.js","sourceRoot":"","sources":["../../../src/ui/icon/icon.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,GAAG,MAAM,mBAAmB,CAAC;AAEpC,MAAM,KAAK,GAAG;IACZ,KAAK,EAAE,OAAO;IACd,kBAAkB,EAAE,oBAAoB;IACxC,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;CACnB,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,EAAE;IAC5B,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK,CAAC;IAEtE,OAAO,CACL,oBAAC,SAAS,IAAC,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,KAAM,SAAS;QACrE,6BAAK,SAAS,EAAE,GAAG,CAAC,IAAI;YACtB,6BAAK,SAAS,EAAE,IAAI,KAAK,EAAE,GAAI,CAC3B,CACI,CACb,CAAC;AACJ,CAAC,CAAC;AAEF,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAEnB,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;AAC1B,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;AAC5B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;AAC1B,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAElE,IAAI,CAAC,YAAY,GAAG;IAClB,SAAS,EAAE,EAAE;IACb,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,IAAI,CAAC,WAAW;CACvB,CAAC;AAEF,IAAI,CAAC,SAAS,GAAG;IACf,SAAS,EAAE,SAAS,CAAC,MAAM;IAC3B,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU;IAC9F,EAAE,EAAE,SAAS,CAAC,IAAI;IAClB,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;CAClC,CAAC"}
1
+ {"version":3,"file":"icon.js","sourceRoot":"","sources":["../../../src/ui/icon/icon.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,GAAG,MAAM,mBAAmB,CAAC;AAEpC,MAAM,KAAK,GAAG;IACZ,KAAK,EAAE,OAAO;IACd,kBAAkB,EAAE,oBAAoB;IACxC,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;CACnB,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,EAAE;IAC5B,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK,CAAC;IAEtE,OAAO,CACL,oBAAC,SAAS,IAAC,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,KAAM,SAAS;QACrE,6BAAK,SAAS,EAAE,GAAG,CAAC,IAAI;YACtB,6BAAK,SAAS,EAAE,IAAI,KAAK,EAAE,GAAI,CAC3B,CACI,CACb,CAAC;AACJ,CAAC,CAAC;AAEF,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAEnB,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;AAC1B,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;AAC5B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;AAC1B,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAElE,IAAI,CAAC,YAAY,GAAG;IAClB,SAAS,EAAE,EAAE;IACb,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,IAAI,CAAC,WAAW;CACvB,CAAC;AAEF,IAAI,CAAC,SAAS,GAAG;IACf,SAAS,EAAE,SAAS,CAAC,MAAM;IAC3B,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU;IAC9F,EAAE,EAAE,SAAS,CAAC,IAAI;IAClB,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;CAClC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bundle-stats/ui",
3
- "version": "4.3.0-beta.1",
3
+ "version": "4.3.0-beta.3",
4
4
  "description": "UI components for BundleStats projects.",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-esm/index.js",
@@ -20,8 +20,7 @@
20
20
  "start": "cross-env NODE_ENV=development start-storybook -c ./build/storybook -p 8080",
21
21
  "test": "npm run test:unit",
22
22
  "test:unit": "jest src --passWithNoTests",
23
- "test:storyshots": "jest build/storybook ",
24
- "chromatic": "chromatic --exit-zero-on-changes"
23
+ "test:storyshots": "jest build/storybook "
25
24
  },
26
25
  "repository": {
27
26
  "type": "git",
@@ -41,17 +40,16 @@
41
40
  "devDependencies": {
42
41
  "@babel/preset-env": "7.20.2",
43
42
  "@babel/preset-react": "7.18.6",
44
- "@storybook/addon-essentials": "6.5.15",
43
+ "@storybook/addon-essentials": "6.5.16",
45
44
  "@storybook/addon-knobs": "6.4.0",
46
45
  "@storybook/addon-postcss": "2.0.0",
47
- "@storybook/addon-storyshots": "6.5.15",
48
- "@storybook/addons": "6.5.15",
49
- "@storybook/builder-webpack5": "6.5.15",
50
- "@storybook/manager-webpack5": "6.5.15",
51
- "@storybook/react": "6.5.15",
46
+ "@storybook/addon-storyshots": "6.5.16",
47
+ "@storybook/addons": "6.5.16",
48
+ "@storybook/builder-webpack5": "6.5.16",
49
+ "@storybook/manager-webpack5": "6.5.16",
50
+ "@storybook/react": "6.5.16",
52
51
  "@types/react": "18.0.26",
53
52
  "babel-plugin-require-context-hook": "1.0.0",
54
- "chromatic": "6.14.0",
55
53
  "classnames": "2.3.2",
56
54
  "colormap": "2.3.2",
57
55
  "cross-env": "7.0.3",
@@ -60,9 +58,9 @@
60
58
  "enzyme-to-json": "3.6.2",
61
59
  "hex-rgb": "5.0.0",
62
60
  "identity-obj-proxy": "3.0.0",
63
- "jest": "29.3.1",
61
+ "jest": "29.4.2",
64
62
  "jest-date-mock": "1.0.8",
65
- "jest-environment-jsdom": "29.3.1",
63
+ "jest-environment-jsdom": "29.4.2",
66
64
  "lodash": "4.17.21",
67
65
  "postcss": "8.4.21",
68
66
  "prop-types": "15.8.1",
@@ -70,8 +68,8 @@
70
68
  "react-dom": "17.0.2",
71
69
  "react-router-dom": "5.3.4",
72
70
  "react-test-renderer": "18.2.0",
73
- "rimraf": "4.1.1",
74
- "typescript": "4.9.4"
71
+ "rimraf": "4.1.2",
72
+ "typescript": "4.9.5"
75
73
  },
76
74
  "peerDependencies": {
77
75
  "classnames": "^2.0.0",
@@ -82,11 +80,11 @@
82
80
  "react-router-dom": "^5.0.0"
83
81
  },
84
82
  "dependencies": {
85
- "@bundle-stats/utils": "^4.3.0-beta.1",
83
+ "@bundle-stats/utils": "^4.3.0-beta.3",
86
84
  "ariakit": "2.0.0-next.43",
87
85
  "modern-css-reset": "1.4.0",
88
86
  "query-string": "7.1.3",
89
- "use-query-params": "2.1.2"
87
+ "use-query-params": "2.2.0"
90
88
  },
91
- "gitHead": "3f34b96d46d38d7324d9460fd19bc060786eb320"
89
+ "gitHead": "b9dff5b3797a3a8bb5bc5afce1900a56080c9ba4"
92
90
  }
package/src/app/app.jsx CHANGED
@@ -12,7 +12,6 @@ import {
12
12
  } from '../constants';
13
13
  import { Box } from '../layout/box';
14
14
  import { Container } from '../ui/container';
15
- import { DuplicatePackagesWarning } from '../components/duplicate-packages-warning';
16
15
  import { Summary } from '../components/summary';
17
16
  import { BundleAssets } from '../components/bundle-assets';
18
17
  import { BundleAssetsTotalsChartBars } from '../components/bundle-assets-totals-chart-bars';
@@ -22,11 +21,13 @@ import { Stack } from '../layout/stack';
22
21
  import { BundleAssetsTotalsTable } from '../components/bundle-assets-totals-table';
23
22
  import { BundleModules } from '../components/bundle-modules';
24
23
  import { BundlePackages } from '../components/bundle-packages';
24
+ import { Insights } from '../components/insights';
25
25
  import { TotalSizeTypeTitle } from '../components/total-size-type-title';
26
26
  import { QueryStateProvider, useComponentQueryState } from '../query-state';
27
27
  import I18N from '../i18n';
28
28
  import { Header } from './header';
29
29
  import css from './app.module.css';
30
+ import { MetricsTableTitle } from '../components';
30
31
 
31
32
  const ScrollToTop = () => {
32
33
  const { pathname } = useLocation();
@@ -68,19 +69,27 @@ JobsProvider.propTypes = {
68
69
 
69
70
  const OverviewContent = () => {
70
71
  const { jobs } = useContext(JobsContext);
71
- const { duplicatePackagesCount } = jobs[0].summary.webpack;
72
- const duplicatePackagesInsights = Boolean(
73
- duplicatePackagesCount.current || duplicatePackagesCount.baseline,
74
- );
72
+
73
+ const duplicatePackagesInsight = jobs[0].insights?.webpack?.duplicatePackagesV3;
74
+ const newPackagesInsight = jobs[0].insights?.webpack?.newPackages;
75
+
76
+ console.info(duplicatePackagesInsight, newPackagesInsight);
75
77
 
76
78
  return (
77
79
  <Stack space="medium">
78
- {duplicatePackagesInsights && (
80
+ {(duplicatePackagesInsight || newPackagesInsight) && (
79
81
  <Container>
80
- <DuplicatePackagesWarning
81
- duplicatePackagesCount={duplicatePackagesCount}
82
- showDelta={jobs.length > 1}
83
- />
82
+ <Stack space="xsmall">
83
+ <MetricsTableTitle title="Insights" />
84
+ <Box padding="small" outline>
85
+ <Insights
86
+ duplicatePackages={duplicatePackagesInsight}
87
+ newPackages={newPackagesInsight}
88
+ summary={jobs[0].summary?.webpack}
89
+ showDelta={jobs.length > 1}
90
+ />
91
+ </Box>
92
+ </Stack>
84
93
  </Container>
85
94
  )}
86
95
  <Container>
@@ -0,0 +1,6 @@
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">
2
+ <circle cx="12" cy="12" r="10"></circle>
3
+ <line x1="12" y1="8" x2="12" y2="12"></line>
4
+ <line x1="12" y1="16" x2="12.01" y2="16"></line>
5
+
6
+ </svg>
@@ -0,0 +1,6 @@
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">
2
+ <circle cx="12" cy="12" r="10"></circle>
3
+ <line x1="12" y1="16" x2="12" y2="12"></line>
4
+ <line x1="12" y1="8" x2="12.01" y2="8"></line>
5
+
6
+ </svg>
@@ -1,4 +1,4 @@
1
- <svg width="16" height="16">
1
+ <svg width="0" height="0" style="position:absolute">
2
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">
3
3
  <path d="M12 5v14M19 12l-7 7-7-7"/>
4
4
  </symbol>
@@ -22,6 +22,10 @@
22
22
  <circle cx="12" cy="12" r="4"/>
23
23
  <path d="M1.05 12H7M17.01 12h5.95"/>
24
24
  </symbol>
25
+ <symbol fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" viewBox="0 0 24 24" id="error" xmlns="http://www.w3.org/2000/svg">
26
+ <circle cx="12" cy="12" r="10"/>
27
+ <path d="M12 8v4M12 16h.01"/>
28
+ </symbol>
25
29
  <symbol viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-bar-chart" id="filter" xmlns="http://www.w3.org/2000/svg">
26
30
  <path d="M12 20V10M18 20V4M6 20v-4"/>
27
31
  </symbol>
@@ -29,6 +33,10 @@
29
33
  <circle cx="12" cy="12" r="10"/>
30
34
  <path d="M9.09 9a3 3 0 015.83 1c0 2-3 3-3 3M12 17h.01"/>
31
35
  </symbol>
36
+ <symbol fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" viewBox="0 0 24 24" id="info" xmlns="http://www.w3.org/2000/svg">
37
+ <circle cx="12" cy="12" r="10"/>
38
+ <path d="M12 16v-4M12 8h.01"/>
39
+ </symbol>
32
40
  <symbol viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-menu" id="menu" xmlns="http://www.w3.org/2000/svg">
33
41
  <path d="M3 12h18M3 6h18M3 18h18"/>
34
42
  </symbol>
@@ -85,6 +85,19 @@ export const SvgIcons = (props) => (
85
85
  <circle cx="12" cy="12" r="4" />
86
86
  <path d="M1.05 12H7M17.01 12h5.95" />
87
87
  </symbol>
88
+ <symbol
89
+ fill="none"
90
+ stroke="currentColor"
91
+ stroke-width="2"
92
+ stroke-linecap="round"
93
+ stroke-linejoin="round"
94
+ viewBox="0 0 24 24"
95
+ id="error"
96
+ xmlns="http://www.w3.org/2000/svg"
97
+ >
98
+ <circle cx="12" cy="12" r="10" />
99
+ <path d="M12 8v4M12 16h.01" />
100
+ </symbol>
88
101
  <symbol
89
102
  viewBox="0 0 24 24"
90
103
  fill="none"
@@ -112,6 +125,19 @@ export const SvgIcons = (props) => (
112
125
  <circle cx="12" cy="12" r="10" />
113
126
  <path d="M9.09 9a3 3 0 015.83 1c0 2-3 3-3 3M12 17h.01" />
114
127
  </symbol>
128
+ <symbol
129
+ fill="none"
130
+ stroke="currentColor"
131
+ stroke-width="2"
132
+ stroke-linecap="round"
133
+ stroke-linejoin="round"
134
+ viewBox="0 0 24 24"
135
+ id="info"
136
+ xmlns="http://www.w3.org/2000/svg"
137
+ >
138
+ <circle cx="12" cy="12" r="10" />
139
+ <path d="M12 16v-4M12 8h.01" />
140
+ </symbol>
115
141
  <symbol
116
142
  viewBox="0 0 24 24"
117
143
  fill="none"
@@ -5,8 +5,8 @@ export { BundleAssetsTotalsChartBars } from './bundle-assets-totals-chart-bars';
5
5
  export { BundlePackages } from './bundle-packages';
6
6
  export { BundleModules } from './bundle-modules';
7
7
  export { ComponentLink } from './component-link';
8
- export { DuplicatePackagesWarning } from './duplicate-packages-warning';
9
8
  export { Delta } from './delta';
9
+ export { Insights } from './insights';
10
10
  export { JobName } from './job-name';
11
11
  export { JobHeader } from './job-header';
12
12
  export { JobsHeader } from './jobs-header';
@@ -0,0 +1 @@
1
+ export * from './insights';
@@ -0,0 +1,32 @@
1
+ .icon {
2
+ padding: 3px;
3
+ box-sizing: content-box;
4
+ border-radius: 50%;
5
+ background: var(--color-highlight);
6
+ }
7
+
8
+ .error .icon {
9
+ background: var(--color-red-50);
10
+ color: var(--color-danger);
11
+ }
12
+
13
+ .warning .icon {
14
+ background: var(--color-yellow-100);
15
+ color: var(--color-warning-dark);
16
+ }
17
+
18
+ .info .icon {
19
+ background: var(--color-highlight-info);
20
+ color: var(--color-info);
21
+ }
22
+
23
+ .entry {
24
+ color: inherit;
25
+ text-decoration: none;
26
+ }
27
+
28
+ .entry:hover,
29
+ .entry:active,
30
+ .entry:focus {
31
+ text-decoration: underline;
32
+ }
@@ -0,0 +1,50 @@
1
+ import React from 'react';
2
+
3
+ import { getWrapperDecorator } from '../../stories';
4
+ import { Insights } from '.';
5
+
6
+ export default {
7
+ title: 'Components/Insights',
8
+ component: Insights,
9
+ decorators: [getWrapperDecorator()],
10
+ };
11
+
12
+ const Template = (props: any) => <Insights {...props} />;
13
+
14
+ export const Default = Template.bind({});
15
+
16
+ Default.args = {
17
+ duplicatePackages: {
18
+ type: 'error',
19
+ data: {
20
+ packages: { 'package-a': ['package-a', 'package-a~1'] },
21
+ text: 'Bundle introduced 1 and removed 2 duplicate packages',
22
+ },
23
+ },
24
+ newPackages: {
25
+ type: 'warning',
26
+ data: {
27
+ text: 'Bundle introduced 2 new packages: package-c, package-d',
28
+ packages: ['package-c', 'package-d'],
29
+ },
30
+ },
31
+ };
32
+
33
+ export const Info = Template.bind({});
34
+
35
+ Info.args = {
36
+ duplicatePackages: {
37
+ type: 'info',
38
+ data: {
39
+ packages: { 'package-a': ['package-a', 'package-a~1'] },
40
+ text: 'Bundle removed 1 duplicate packages',
41
+ },
42
+ },
43
+ newPackages: {
44
+ type: 'warning',
45
+ data: {
46
+ text: 'Bundle introduced 2 new packages: package-c, package-d',
47
+ packages: ['package-c', 'package-d'],
48
+ },
49
+ },
50
+ };
@@ -0,0 +1,101 @@
1
+ import React from 'react';
2
+ import cx from 'classnames';
3
+ import {
4
+ BUNDLE_PACKAGES_DUPLICATE,
5
+ BUNDLE_PACKAGES_COUNT,
6
+ InsightType,
7
+ JobInsight,
8
+ JobInsights as JobInsightsType,
9
+ } from '@bundle-stats/utils';
10
+
11
+ import { FlexStack } from '../../layout/flex-stack';
12
+ import { Stack } from '../../layout/stack';
13
+ import { Icon } from '../../ui/icon';
14
+ import { ComponentLink } from '../component-link';
15
+ // @ts-ignore
16
+ import css from './insights.module.css';
17
+
18
+ interface InsightEntry {
19
+ name: string;
20
+ insight: JobInsight;
21
+ link: any;
22
+ }
23
+
24
+ const normalizedInsights = ({
25
+ duplicatePackages,
26
+ newPackages,
27
+ }: Partial<JobInsightsType['webpack']>): Array<InsightEntry> => {
28
+ const insightsByLevel: Record<InsightType, Array<InsightEntry>> = {
29
+ [InsightType.ERROR]: [],
30
+ [InsightType.WARNING]: [],
31
+ [InsightType.INFO]: [],
32
+ };
33
+
34
+ if (duplicatePackages) {
35
+ insightsByLevel[duplicatePackages.type].push({
36
+ name: 'duplicatePackages',
37
+ insight: duplicatePackages,
38
+ link: BUNDLE_PACKAGES_DUPLICATE,
39
+ });
40
+ }
41
+
42
+ if (newPackages) {
43
+ insightsByLevel[newPackages.type].push({
44
+ name: 'newPackages',
45
+ insight: newPackages,
46
+ link: BUNDLE_PACKAGES_COUNT,
47
+ });
48
+ }
49
+
50
+ return [
51
+ ...(insightsByLevel[InsightType.ERROR] || []),
52
+ ...(insightsByLevel[InsightType.WARNING] || []),
53
+ ...(insightsByLevel[InsightType.INFO] || []),
54
+ ];
55
+ };
56
+
57
+ const InsightTypeIconMap = new Map([
58
+ [InsightType.ERROR, Icon.ICONS.ERROR],
59
+ [InsightType.WARNING, Icon.ICONS.WARNING],
60
+ [InsightType.INFO, Icon.ICONS.INFO],
61
+ ]);
62
+
63
+ interface InsightsProps extends React.HTMLAttributes<HTMLDivElement> {
64
+ duplicatePackages: any;
65
+ newPackages: any;
66
+ customComponentLink?: React.ElementType;
67
+ }
68
+
69
+ export const Insights = (props: InsightsProps) => {
70
+ const {
71
+ duplicatePackages,
72
+ newPackages,
73
+ customComponentLink: CustomComponentLink = ComponentLink,
74
+ ...restProps
75
+ } = props;
76
+
77
+ const insights = normalizedInsights({ duplicatePackages, newPackages });
78
+
79
+ return (
80
+ <Stack space="xxsmall" {...restProps}>
81
+ {insights.map(({ name, insight, link }) => {
82
+ const glyph = InsightTypeIconMap.get(insight.type);
83
+ const { text } = insight.data as { text: string };
84
+
85
+ return (
86
+ <FlexStack
87
+ key={name}
88
+ space="xxsmall"
89
+ alignItems="center"
90
+ as={CustomComponentLink}
91
+ {...link}
92
+ className={cx(css.entry, css[insight.type])}
93
+ >
94
+ {glyph && <Icon glyph={glyph} className={css.icon} />}
95
+ <span>{text}</span>
96
+ </FlexStack>
97
+ );
98
+ })}
99
+ </Stack>
100
+ );
101
+ };
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import cx from 'classnames';
4
4
  import get from 'lodash/get';
5
- import { SOURCE_PATH_WEBPACK_STATS, formatDateTime } from '@bundle-stats/utils';
5
+ import { Source, formatDateTime } from '@bundle-stats/utils';
6
6
 
7
7
  import { FlexStack } from '../../layout/flex-stack';
8
8
  import { Stack } from '../../layout/stack';
@@ -13,7 +13,7 @@ import css from './job-header.module.css';
13
13
  export const JobHeader = (props) => {
14
14
  const { className, tag, job, children } = props;
15
15
 
16
- const { builtAt, hash } = get(job, `meta.${SOURCE_PATH_WEBPACK_STATS}`, {});
16
+ const { builtAt, hash } = get(job, `meta.${Source.webpack}`, {});
17
17
  const rootClassName = cx(css.root, className);
18
18
 
19
19
  return (
@@ -11,7 +11,9 @@ const ICONS = {
11
11
  CLOSE: 'close',
12
12
  CLOCK: 'clock',
13
13
  COMMIT: 'commit',
14
+ ERROR: 'error',
14
15
  FILTER: 'filter',
16
+ INFO: 'info',
15
17
  HELP: 'help',
16
18
  MENU: 'menu',
17
19
  SORT: 'sort',
package/tsconfig.esm.json CHANGED
@@ -9,5 +9,5 @@
9
9
  "declarationDir": "./types",
10
10
  "noEmit": false
11
11
  },
12
- "exclude": ["**/__tests__/*", "**/*.stories.jsx"]
12
+ "exclude": ["**/__tests__/*", "**/*.stories.*"]
13
13
  }
package/tsconfig.lib.json CHANGED
@@ -5,5 +5,5 @@
5
5
  "resolveJsonModule": true,
6
6
  "noEmit": false
7
7
  },
8
- "exclude": ["**/__tests__/*", "**/*.stories.jsx"]
8
+ "exclude": ["**/__tests__/*", "**/*.stories.*"]
9
9
  }
@@ -5,8 +5,8 @@ export { BundleAssetsTotalsChartBars } from "./bundle-assets-totals-chart-bars";
5
5
  export { BundlePackages } from "./bundle-packages";
6
6
  export { BundleModules } from "./bundle-modules";
7
7
  export { ComponentLink } from "./component-link";
8
- export { DuplicatePackagesWarning } from "./duplicate-packages-warning";
9
8
  export { Delta } from "./delta";
9
+ export { Insights } from "./insights";
10
10
  export { JobName } from "./job-name";
11
11
  export { JobHeader } from "./job-header";
12
12
  export { JobsHeader } from "./jobs-header";
@@ -0,0 +1 @@
1
+ export * from './insights';
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ interface InsightsProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ duplicatePackages: any;
4
+ newPackages: any;
5
+ customComponentLink?: React.ElementType;
6
+ }
7
+ export declare const Insights: (props: InsightsProps) => JSX.Element;
8
+ export {};
@@ -28,7 +28,9 @@ declare namespace ICONS {
28
28
  const CLOSE: string;
29
29
  const CLOCK: string;
30
30
  const COMMIT: string;
31
+ const ERROR: string;
31
32
  const FILTER: string;
33
+ const INFO: string;
32
34
  const HELP: string;
33
35
  const MENU: string;
34
36
  const SORT: string;
@@ -1,41 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.DuplicatePackagesWarning = void 0;
7
- const react_1 = __importDefault(require("react"));
8
- const prop_types_1 = __importDefault(require("prop-types"));
9
- const classnames_1 = __importDefault(require("classnames"));
10
- const utils_1 = require("@bundle-stats/utils");
11
- const alert_1 = require("../../ui/alert");
12
- const component_link_1 = require("../component-link");
13
- const delta_1 = require("../delta");
14
- const duplicate_packages_warning_module_css_1 = __importDefault(require("./duplicate-packages-warning.module.css"));
15
- const numberMetric = utils_1.METRIC_TYPES[utils_1.METRIC_TYPE_NUMERIC];
16
- const DuplicatePackagesWarning = (props) => {
17
- const { className, duplicatePackagesCount, customComponentLink: CustomComponentLink, showDelta, } = props;
18
- const metricRunInfo = (0, utils_1.getMetricRunInfo)(numberMetric, duplicatePackagesCount.current, duplicatePackagesCount.baseline);
19
- return (react_1.default.createElement(alert_1.Alert, { kind: "warning", className: (0, classnames_1.default)(duplicate_packages_warning_module_css_1.default.root, className) },
20
- `Bundle contains `,
21
- react_1.default.createElement(CustomComponentLink, { ...utils_1.BUNDLE_PACKAGES_DUPLICATE },
22
- metricRunInfo.value,
23
- showDelta && metricRunInfo.delta !== 0 && (react_1.default.createElement(delta_1.Delta, { className: duplicate_packages_warning_module_css_1.default.titleDelta, inverted: true, displayValue: metricRunInfo.displayDelta, deltaType: metricRunInfo.deltaType })),
24
- ` duplicate ${metricRunInfo.value === 1 ? 'package' : 'packages'}.`)));
25
- };
26
- exports.DuplicatePackagesWarning = DuplicatePackagesWarning;
27
- exports.DuplicatePackagesWarning.propTypes = {
28
- className: prop_types_1.default.string,
29
- customComponentLink: prop_types_1.default.elementType,
30
- duplicatePackagesCount: prop_types_1.default.shape({
31
- current: prop_types_1.default.number,
32
- baseline: prop_types_1.default.number,
33
- }).isRequired,
34
- showDelta: prop_types_1.default.bool,
35
- };
36
- exports.DuplicatePackagesWarning.defaultProps = {
37
- className: '',
38
- customComponentLink: component_link_1.ComponentLink,
39
- showDelta: true,
40
- };
41
- //# sourceMappingURL=duplicate-packages-warning.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"duplicate-packages-warning.js","sourceRoot":"","sources":["../../../src/components/duplicate-packages-warning/duplicate-packages-warning.jsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,4DAAmC;AACnC,4DAA4B;AAC5B,+CAAqH;AAErH,0CAAuC;AACvC,sDAAkD;AAClD,oCAAiC;AACjC,oHAA0D;AAE1D,MAAM,YAAY,GAAG,oBAAY,CAAC,2BAAmB,CAAC,CAAC;AAEhD,MAAM,wBAAwB,GAAG,CAAC,KAAK,EAAE,EAAE;IAChD,MAAM,EACJ,SAAS,EACT,sBAAsB,EACtB,mBAAmB,EAAE,mBAAmB,EACxC,SAAS,GACV,GAAG,KAAK,CAAC;IAEV,MAAM,aAAa,GAAG,IAAA,wBAAgB,EACpC,YAAY,EACZ,sBAAsB,CAAC,OAAO,EAC9B,sBAAsB,CAAC,QAAQ,CAChC,CAAC;IAEF,OAAO,CACL,8BAAC,aAAK,IAAC,IAAI,EAAC,SAAS,EAAC,SAAS,EAAE,IAAA,oBAAE,EAAC,+CAAG,CAAC,IAAI,EAAE,SAAS,CAAC;QACrD,kBAAkB;QACnB,8BAAC,mBAAmB,OAAK,iCAAyB;YAC/C,aAAa,CAAC,KAAK;YACnB,SAAS,IAAI,aAAa,CAAC,KAAK,KAAK,CAAC,IAAI,CACzC,8BAAC,aAAK,IACJ,SAAS,EAAE,+CAAG,CAAC,UAAU,EACzB,QAAQ,QACR,YAAY,EAAE,aAAa,CAAC,YAAY,EACxC,SAAS,EAAE,aAAa,CAAC,SAAS,GAClC,CACH;YACA,cAAc,aAAa,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,GAAG,CAChD,CAChB,CACT,CAAC;AACJ,CAAC,CAAC;AA/BW,QAAA,wBAAwB,4BA+BnC;AAEF,gCAAwB,CAAC,SAAS,GAAG;IACnC,SAAS,EAAE,oBAAS,CAAC,MAAM;IAC3B,mBAAmB,EAAE,oBAAS,CAAC,WAAW;IAC1C,sBAAsB,EAAE,oBAAS,CAAC,KAAK,CAAC;QACtC,OAAO,EAAE,oBAAS,CAAC,MAAM;QACzB,QAAQ,EAAE,oBAAS,CAAC,MAAM;KAC3B,CAAC,CAAC,UAAU;IACb,SAAS,EAAE,oBAAS,CAAC,IAAI;CAC1B,CAAC;AAEF,gCAAwB,CAAC,YAAY,GAAG;IACtC,SAAS,EAAE,EAAE;IACb,mBAAmB,EAAE,8BAAa;IAClC,SAAS,EAAE,IAAI;CAChB,CAAC"}
@@ -1,22 +0,0 @@
1
- .root a {
2
- text-decoration: none;
3
- }
4
-
5
- .root a:hover,
6
- .root a:active,
7
- .root a:focus {
8
- text-decoration: none;
9
- }
10
-
11
- .title {
12
- margin-bottom: var(--space-xxsmall);
13
- font-size: var(--size-medium);
14
- }
15
-
16
- .titleDelta {
17
- margin-left: var(--space-xxxsmall);
18
- padding: 1px 2px;
19
- vertical-align: super;
20
- font-size: 9px;
21
- line-height: 1;
22
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/duplicate-packages-warning/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+DAA6C"}