@bundle-stats/ui 4.13.0-beta.0 → 4.13.0-beta.10

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 (207) hide show
  1. package/lib/app/app.js +4 -8
  2. package/lib/app/app.js.map +1 -1
  3. package/lib/app/app.module.css +2 -2
  4. package/lib/components/bundle-assets/bundle-assets.js +12 -5
  5. package/lib/components/bundle-assets/bundle-assets.js.map +1 -1
  6. package/lib/components/bundle-assets/bundle-assets.module.css +0 -5
  7. package/lib/components/bundle-assets/index.js +2 -2
  8. package/lib/components/bundle-assets/index.js.map +1 -1
  9. package/lib/components/bundle-assets-totals/bundle-assets-totals.js +22 -11
  10. package/lib/components/bundle-assets-totals/bundle-assets-totals.js.map +1 -1
  11. package/lib/components/bundle-modules/bundle-modules.js +22 -12
  12. package/lib/components/bundle-modules/bundle-modules.js.map +1 -1
  13. package/lib/components/bundle-modules/bundle-modules.module.css +0 -5
  14. package/lib/components/bundle-modules/index.js +2 -2
  15. package/lib/components/bundle-modules/index.js.map +1 -1
  16. package/lib/components/bundle-packages/bundle-packages.js +10 -3
  17. package/lib/components/bundle-packages/bundle-packages.js.map +1 -1
  18. package/lib/components/bundle-packages/bundle-packages.module.css +0 -5
  19. package/lib/components/bundle-packages/index.js +2 -2
  20. package/lib/components/bundle-packages/index.js.map +1 -1
  21. package/lib/components/index.js +1 -3
  22. package/lib/components/index.js.map +1 -1
  23. package/lib/components/jobs-header/jobs-header.module.css +0 -4
  24. package/lib/components/metrics-display-selector/metrics-display-selector.js +4 -10
  25. package/lib/components/metrics-display-selector/metrics-display-selector.js.map +1 -1
  26. package/lib/components/metrics-table/metrics-table.i18n.js +1 -6
  27. package/lib/components/metrics-table/metrics-table.i18n.js.map +1 -1
  28. package/lib/components/metrics-table/metrics-table.js +4 -37
  29. package/lib/components/metrics-table/metrics-table.js.map +1 -1
  30. package/lib/components/metrics-table/metrics-table.module.css +1 -44
  31. package/lib/components/{total-size-type-title → metrics-table-header}/index.js +1 -1
  32. package/lib/components/metrics-table-header/index.js.map +1 -0
  33. package/lib/components/metrics-table-header/metrics-table-header.i18n.js +9 -0
  34. package/lib/components/metrics-table-header/metrics-table-header.i18n.js.map +1 -0
  35. package/lib/components/metrics-table-header/metrics-table-header.js +79 -0
  36. package/lib/components/metrics-table-header/metrics-table-header.js.map +1 -0
  37. package/lib/components/metrics-table-header/metrics-table-header.module.css +51 -0
  38. package/lib/components/metrics-table-options/metrics-table-options.js +2 -2
  39. package/lib/components/metrics-table-options/metrics-table-options.js.map +1 -1
  40. package/lib/components/metrics-table-title/metrics-table-title.js +1 -1
  41. package/lib/components/metrics-table-title/metrics-table-title.js.map +1 -1
  42. package/lib/components/metrics-table-title/metrics-table-title.module.css +4 -4
  43. package/lib/components/metrics-treemap/metrics-treemap.js +66 -51
  44. package/lib/components/metrics-treemap/metrics-treemap.js.map +1 -1
  45. package/lib/components/metrics-treemap/metrics-treemap.module.css +89 -56
  46. package/lib/components/sort-button/sort-button.module.css +1 -0
  47. package/lib/css/variables.css +11 -11
  48. package/lib/hooks/entry-info.js +12 -0
  49. package/lib/hooks/entry-info.js.map +1 -0
  50. package/lib/layout/flex-stack/flex-stack.js +3 -4
  51. package/lib/layout/flex-stack/flex-stack.js.map +1 -1
  52. package/lib/layout/flex-stack/flex-stack.module.css +19 -23
  53. package/lib/query-state.js +1 -1
  54. package/lib/query-state.js.map +1 -1
  55. package/lib/ui/button/button.module.css +1 -0
  56. package/lib/ui/dropdown/dropdown.js +10 -40
  57. package/lib/ui/dropdown/dropdown.js.map +1 -1
  58. package/lib/ui/dropdown/index.js.map +1 -1
  59. package/lib/ui/filters/filters.js +33 -35
  60. package/lib/ui/filters/filters.js.map +1 -1
  61. package/lib/ui/filters/filters.module.css +55 -67
  62. package/lib/ui/hover-card/hover-card.js +1 -1
  63. package/lib/ui/hover-card/hover-card.js.map +1 -1
  64. package/lib/ui/toolbar/toolbar.module.css +1 -3
  65. package/lib-esm/app/app.js +4 -8
  66. package/lib-esm/app/app.js.map +1 -1
  67. package/lib-esm/app/app.module.css +2 -2
  68. package/lib-esm/components/bundle-assets/bundle-assets.js +12 -5
  69. package/lib-esm/components/bundle-assets/bundle-assets.js.map +1 -1
  70. package/lib-esm/components/bundle-assets/bundle-assets.module.css +0 -5
  71. package/lib-esm/components/bundle-assets/index.js +3 -3
  72. package/lib-esm/components/bundle-assets/index.js.map +1 -1
  73. package/lib-esm/components/bundle-assets-totals/bundle-assets-totals.js +23 -12
  74. package/lib-esm/components/bundle-assets-totals/bundle-assets-totals.js.map +1 -1
  75. package/lib-esm/components/bundle-modules/bundle-modules.js +22 -12
  76. package/lib-esm/components/bundle-modules/bundle-modules.js.map +1 -1
  77. package/lib-esm/components/bundle-modules/bundle-modules.module.css +0 -5
  78. package/lib-esm/components/bundle-modules/index.js +2 -2
  79. package/lib-esm/components/bundle-modules/index.js.map +1 -1
  80. package/lib-esm/components/bundle-packages/bundle-packages.js +10 -3
  81. package/lib-esm/components/bundle-packages/bundle-packages.js.map +1 -1
  82. package/lib-esm/components/bundle-packages/bundle-packages.module.css +0 -5
  83. package/lib-esm/components/bundle-packages/index.js +3 -3
  84. package/lib-esm/components/bundle-packages/index.js.map +1 -1
  85. package/lib-esm/components/index.js +0 -1
  86. package/lib-esm/components/index.js.map +1 -1
  87. package/lib-esm/components/jobs-header/jobs-header.module.css +0 -4
  88. package/lib-esm/components/metrics-display-selector/metrics-display-selector.js +4 -10
  89. package/lib-esm/components/metrics-display-selector/metrics-display-selector.js.map +1 -1
  90. package/lib-esm/components/metrics-table/metrics-table.i18n.js +0 -5
  91. package/lib-esm/components/metrics-table/metrics-table.i18n.js.map +1 -1
  92. package/lib-esm/components/metrics-table/metrics-table.js +4 -37
  93. package/lib-esm/components/metrics-table/metrics-table.js.map +1 -1
  94. package/lib-esm/components/metrics-table/metrics-table.module.css +1 -44
  95. package/lib-esm/components/metrics-table-header/index.js +2 -0
  96. package/lib-esm/components/metrics-table-header/index.js.map +1 -0
  97. package/lib-esm/components/metrics-table-header/metrics-table-header.i18n.js +6 -0
  98. package/lib-esm/components/metrics-table-header/metrics-table-header.i18n.js.map +1 -0
  99. package/lib-esm/components/metrics-table-header/metrics-table-header.js +49 -0
  100. package/lib-esm/components/metrics-table-header/metrics-table-header.js.map +1 -0
  101. package/lib-esm/components/metrics-table-header/metrics-table-header.module.css +51 -0
  102. package/lib-esm/components/metrics-table-options/metrics-table-options.js +3 -3
  103. package/lib-esm/components/metrics-table-options/metrics-table-options.js.map +1 -1
  104. package/lib-esm/components/metrics-table-title/metrics-table-title.js +1 -1
  105. package/lib-esm/components/metrics-table-title/metrics-table-title.js.map +1 -1
  106. package/lib-esm/components/metrics-table-title/metrics-table-title.module.css +4 -4
  107. package/lib-esm/components/metrics-treemap/metrics-treemap.js +69 -53
  108. package/lib-esm/components/metrics-treemap/metrics-treemap.js.map +1 -1
  109. package/lib-esm/components/metrics-treemap/metrics-treemap.module.css +89 -56
  110. package/lib-esm/components/sort-button/sort-button.module.css +1 -0
  111. package/lib-esm/css/variables.css +11 -11
  112. package/lib-esm/hooks/entry-info.js +8 -0
  113. package/lib-esm/hooks/entry-info.js.map +1 -0
  114. package/lib-esm/layout/flex-stack/flex-stack.js +3 -4
  115. package/lib-esm/layout/flex-stack/flex-stack.js.map +1 -1
  116. package/lib-esm/layout/flex-stack/flex-stack.module.css +19 -23
  117. package/lib-esm/query-state.js +1 -1
  118. package/lib-esm/query-state.js.map +1 -1
  119. package/lib-esm/ui/button/button.module.css +1 -0
  120. package/lib-esm/ui/dropdown/dropdown.js +8 -39
  121. package/lib-esm/ui/dropdown/dropdown.js.map +1 -1
  122. package/lib-esm/ui/dropdown/index.js.map +1 -1
  123. package/lib-esm/ui/filters/filters.js +34 -36
  124. package/lib-esm/ui/filters/filters.js.map +1 -1
  125. package/lib-esm/ui/filters/filters.module.css +55 -67
  126. package/lib-esm/ui/hover-card/hover-card.js +1 -1
  127. package/lib-esm/ui/hover-card/hover-card.js.map +1 -1
  128. package/lib-esm/ui/toolbar/toolbar.module.css +1 -3
  129. package/package.json +8 -10
  130. package/src/app/app.jsx +4 -12
  131. package/src/app/app.module.css +2 -2
  132. package/src/components/bundle-assets/bundle-assets.jsx +24 -7
  133. package/src/components/bundle-assets/bundle-assets.module.css +0 -5
  134. package/src/components/bundle-assets/index.jsx +8 -3
  135. package/src/components/bundle-assets-totals/bundle-assets-totals.jsx +55 -24
  136. package/src/components/bundle-modules/bundle-modules.module.css +0 -5
  137. package/src/components/bundle-modules/bundle-modules.tsx +60 -42
  138. package/src/components/bundle-modules/index.tsx +2 -2
  139. package/src/components/bundle-packages/bundle-packages.jsx +19 -5
  140. package/src/components/bundle-packages/bundle-packages.module.css +0 -5
  141. package/src/components/bundle-packages/index.jsx +8 -3
  142. package/src/components/index.js +0 -1
  143. package/src/components/jobs-header/jobs-header.module.css +0 -4
  144. package/src/components/metrics-display-selector/metrics-display-selector.tsx +8 -12
  145. package/src/components/metrics-table/metrics-table.i18n.ts +0 -7
  146. package/src/components/metrics-table/metrics-table.module.css +1 -44
  147. package/src/components/metrics-table/metrics-table.tsx +17 -153
  148. package/src/components/metrics-table-header/index.ts +1 -0
  149. package/src/components/metrics-table-header/metrics-table-header.i18n.ts +6 -0
  150. package/src/components/metrics-table-header/metrics-table-header.module.css +51 -0
  151. package/src/components/metrics-table-header/metrics-table-header.tsx +172 -0
  152. package/src/components/metrics-table-options/metrics-table-options.jsx +4 -10
  153. package/src/components/metrics-table-title/metrics-table-title.jsx +1 -1
  154. package/src/components/metrics-table-title/metrics-table-title.module.css +4 -4
  155. package/src/components/metrics-treemap/metrics-treemap.module.css +89 -56
  156. package/src/components/metrics-treemap/metrics-treemap.tsx +151 -118
  157. package/src/components/sort-button/sort-button.module.css +1 -0
  158. package/src/css/variables.css +11 -11
  159. package/src/hooks/entry-info.ts +19 -0
  160. package/src/layout/flex-stack/flex-stack.module.css +19 -23
  161. package/src/layout/flex-stack/flex-stack.tsx +2 -8
  162. package/src/query-state.tsx +1 -1
  163. package/src/ui/button/button.module.css +1 -0
  164. package/src/ui/dropdown/dropdown.stories.tsx +25 -0
  165. package/src/ui/dropdown/dropdown.tsx +66 -0
  166. package/src/ui/filters/filters.module.css +55 -67
  167. package/src/ui/filters/filters.stories.tsx +109 -0
  168. package/src/ui/filters/filters.tsx +128 -167
  169. package/src/ui/hover-card/hover-card.tsx +1 -1
  170. package/src/ui/toolbar/toolbar.module.css +1 -3
  171. package/types/components/bundle-assets-totals/bundle-assets-totals.d.ts +5 -1
  172. package/types/components/index.d.ts +0 -1
  173. package/types/components/metrics-display-selector/metrics-display-selector.d.ts +2 -2
  174. package/types/components/metrics-table/metrics-table.d.ts +4 -10
  175. package/types/components/metrics-table/metrics-table.i18n.d.ts +0 -5
  176. package/types/components/metrics-table-header/index.d.ts +1 -0
  177. package/types/components/metrics-table-header/metrics-table-header.d.ts +15 -0
  178. package/types/components/metrics-table-header/metrics-table-header.i18n.d.ts +5 -0
  179. package/types/hooks/entry-info.d.ts +8 -0
  180. package/types/ui/dropdown/dropdown.d.ts +12 -47
  181. package/types/ui/dropdown/index.d.ts +1 -1
  182. package/types/ui/filters/filters.d.ts +2 -7
  183. package/lib/components/bundle-assets-totals/bundle-assets-totals.module.css +0 -7
  184. package/lib/components/total-size-type-title/index.js.map +0 -1
  185. package/lib/components/total-size-type-title/total-size-type-title.js +0 -32
  186. package/lib/components/total-size-type-title/total-size-type-title.js.map +0 -1
  187. package/lib/components/total-size-type-title/total-size-type-title.module.css +0 -14
  188. package/lib/hooks/show-entry.js +0 -13
  189. package/lib/hooks/show-entry.js.map +0 -1
  190. package/lib-esm/components/bundle-assets-totals/bundle-assets-totals.module.css +0 -7
  191. package/lib-esm/components/total-size-type-title/index.js +0 -2
  192. package/lib-esm/components/total-size-type-title/index.js.map +0 -1
  193. package/lib-esm/components/total-size-type-title/total-size-type-title.js +0 -25
  194. package/lib-esm/components/total-size-type-title/total-size-type-title.js.map +0 -1
  195. package/lib-esm/components/total-size-type-title/total-size-type-title.module.css +0 -14
  196. package/lib-esm/hooks/show-entry.js +0 -9
  197. package/lib-esm/hooks/show-entry.js.map +0 -1
  198. package/src/components/bundle-assets-totals/bundle-assets-totals.module.css +0 -7
  199. package/src/components/total-size-type-title/index.js +0 -1
  200. package/src/components/total-size-type-title/total-size-type-title.jsx +0 -41
  201. package/src/components/total-size-type-title/total-size-type-title.module.css +0 -14
  202. package/src/hooks/show-entry.ts +0 -17
  203. package/src/ui/dropdown/dropdown.jsx +0 -88
  204. package/types/components/total-size-type-title/index.d.ts +0 -1
  205. package/types/components/total-size-type-title/total-size-type-title.d.ts +0 -14
  206. package/types/hooks/show-entry.d.ts +0 -10
  207. /package/src/ui/dropdown/{index.js → index.ts} +0 -0
@@ -1,18 +1,19 @@
1
- /* Checkbox + label + button */
2
- .filter {
3
- /* Update MenuItem padding */
4
- padding-top: calc(var(--space-xxxsmall) / 2);
5
- padding-bottom: calc(var(--space-xxxsmall) / 2);
1
+ /* explicit ControlGroup last item styles to override ariakit injected sibling nodes */
2
+ .itemLast {
3
+ border-top-right-radius: var(--radius-small) !important;
4
+ border-bottom-right-radius: var(--radius-small) !important;
5
+ }
6
6
 
7
+ /* Filter (label with input + text) */
8
+ .filter {
7
9
  position: relative;
8
10
  width: 100%;
9
11
  max-width: 240px;
12
+ color: var(--color-text);
10
13
  }
11
14
 
12
- .filterCheckbox {
13
- }
14
-
15
- .filterInput {
15
+ .filterControl {
16
+ margin: 0;
16
17
  flex: 0 0 auto;
17
18
  height: 1em;
18
19
  }
@@ -25,7 +26,47 @@
25
26
  text-overflow: ellipsis;
26
27
  }
27
28
 
28
- .filterOnlyButton {
29
+ .filterControl[disabled] + .filterLabel {
30
+ color: var(--color-text-light);
31
+ }
32
+
33
+ .filter:hover {
34
+ color: var(--color-dark);
35
+ }
36
+
37
+ /** Filter single */
38
+ .filterSingle {
39
+ padding: calc(var(--space-xxsmall) - 1px);
40
+ border: 1px solid var(--color-outline);
41
+ border-radius: var(--radius-small);
42
+ font-size: var(--size-small);
43
+ line-height: var(--space-small);
44
+ color: var(--color-text-ultra-light);
45
+ transition: var(--transition-out);
46
+ }
47
+
48
+ .filterSingle:hover,
49
+ .filterSingle:active,
50
+ .filterSingle:focus {
51
+ border-color: var(--color-outline-dark);
52
+ transition: var(--transition-in);
53
+ }
54
+
55
+ /** Filter group */
56
+ .filterGroupItems {
57
+ max-height: calc(10 * (var(--space-small) + 2 * var(--space-xxxsmall)));
58
+ overflow: auto;
59
+ }
60
+
61
+ .filterGroupItem {
62
+ position: relative;
63
+ }
64
+
65
+ .filterGroupItemFilter {
66
+ padding-right: 24px; /* space for only button */
67
+ }
68
+
69
+ .filterGroupOnlyButton {
29
70
  display: none;
30
71
  position: absolute;
31
72
  right: 2px;
@@ -37,10 +78,11 @@
37
78
  }
38
79
 
39
80
  /** cover item text */
40
- .filterOnlyButton::before {
81
+ .filterGroupOnlyButton::before {
41
82
  content: ' ';
42
83
  display: block;
43
84
  position: absolute;
85
+ pointer-events: none;
44
86
  top: 0;
45
87
  right: 100%;
46
88
  bottom: 0;
@@ -48,53 +90,13 @@
48
90
  background: linear-gradient(90deg, rgba(255, 255, 255, 0), var(--color-highlight) 75%);
49
91
  }
50
92
 
51
- /** filter disabled state */
52
- .filterInput[disabled] + .filterLabel {
53
- color: var(--color-text-light);
54
- }
55
-
56
- .filterInput[disabled] + .filterOnlyButton {
57
- display: none;
58
- }
59
-
60
93
  /** filter hover state */
61
- .filter {
62
- color: var(--color-text);
63
- }
64
-
65
- .filter:hover {
66
- color: var(--color-dark);
67
- }
68
-
69
- .filter:hover .filterOnlyButton {
94
+ .filterGroupItem:hover .filterGroupOnlyButton {
70
95
  display: block;
71
96
  }
72
97
 
73
- /** Filter standard variation */
74
- .filterStandalone {
75
- padding: 0;
76
- width: auto;
77
- color: var(--color-text-light);
78
- z-index: var(--layout-xlow); /* show collapsed border */
79
- font-size: var(--size-small);
80
- line-height: var(--space-small);
81
- }
82
-
83
- .filterStandalone .filterCheckbox {
84
- padding: calc(var(--space-xxsmall) - 1px) calc(var(--space-xxsmall) - 1px);
85
- border: 1px solid var(--color-outline);
86
- }
87
-
88
- .filterStandalone:hover .filterCheckbox,
89
- .filterStandalone:active .filterCheckbox,
90
- .filterStandalone:focus .filterCheckbox {
91
- z-index: var(--layout-xlow); /* show collapsed border */
92
- box-shadow: var(--outline-hover);
93
- color: var(--color-text);
94
- }
95
-
96
98
  /** Filter group variation */
97
- .labelSuffixCustom {
99
+ .filterGroupLabelSuffixCustom {
98
100
  color: var(--color-text);
99
101
  text-transform: lowercase;
100
102
  }
@@ -112,11 +114,6 @@
112
114
  color: var(--color-text-light);
113
115
  }
114
116
 
115
- .filterGroupItems {
116
- max-height: calc(10 * (var(--space-small) + 2 * var(--space-xxxsmall)));
117
- overflow: auto;
118
- }
119
-
120
117
  .filterGroupActions {
121
118
  margin-top: var(--space-xxxsmall);
122
119
  padding-top: var(--space-xxxsmall);
@@ -124,12 +121,3 @@
124
121
  margin-bottom: calc(0px - var(--space-xxxsmall));
125
122
  border-top: 1px solid var(--color-outline);
126
123
  }
127
-
128
- .item {
129
- position: relative;
130
- flex: 0 0 auto;
131
- }
132
-
133
- .itemButton {
134
- border-radius: var(--radius-small);
135
- }
@@ -4,7 +4,7 @@ import { Hovercard, HovercardAnchor, HovercardArrow, useHovercard, useHovercardS
4
4
  import css from './hover-card.module.css';
5
5
  export const HoverCard = (props) => {
6
6
  const { className = '', anchorClassName = '', hoverCardClassName = '', href = '', as = null, label, children, } = props;
7
- const state = useHovercardState({ gutter: 8, timeout: 300 });
7
+ const state = useHovercardState({ gutter: 8, timeout: 300, placement: 'top' });
8
8
  const hovercardProps = useHovercard({ state, portal: true });
9
9
  const Component = useMemo(() => {
10
10
  if (as) {
@@ -1 +1 @@
1
- {"version":3,"file":"hover-card.js","sourceRoot":"","sources":["../../../src/ui/hover-card/hover-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EACL,SAAS,EACT,eAAe,EACf,cAAc,EACd,YAAY,EACZ,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,GAAG,MAAM,yBAAyB,CAAC;AAY1C,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAqB,EAAE,EAAE;IACjD,MAAM,EACJ,SAAS,GAAG,EAAE,EACd,eAAe,GAAG,EAAE,EACpB,kBAAkB,GAAG,EAAE,EACvB,IAAI,GAAG,EAAE,EACT,EAAE,GAAG,IAAI,EACT,KAAK,EACL,QAAQ,GACT,GAAG,KAAK,CAAC;IAEV,MAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7D,MAAM,cAAc,GAAG,YAAY,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAG7D,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE;QAC7B,IAAI,EAAE,EAAE;YACN,OAAO,EAAE,CAAC;SACX;QAED,IAAI,IAAI,EAAE;YACR,OAAO,GAAG,CAAC;SACZ;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;IAEf,OAAO,CACL,6BAAK,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC;QACrC,oBAAC,eAAe,IACd,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,EAC1C,EAAE,EAAE,SAAS,mBACE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAEjD,KAAK,CACU;QAClB,oBAAC,SAAS,OACJ,cAAc,EAClB,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,kBAAkB,CAAC;YAEhD,oBAAC,cAAc,IAAC,IAAI,EAAE,EAAE,GAAI;YAC3B,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAClE,CACR,CACP,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"hover-card.js","sourceRoot":"","sources":["../../../src/ui/hover-card/hover-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EACL,SAAS,EACT,eAAe,EACf,cAAc,EACd,YAAY,EACZ,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,GAAG,MAAM,yBAAyB,CAAC;AAY1C,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAqB,EAAE,EAAE;IACjD,MAAM,EACJ,SAAS,GAAG,EAAE,EACd,eAAe,GAAG,EAAE,EACpB,kBAAkB,GAAG,EAAE,EACvB,IAAI,GAAG,EAAE,EACT,EAAE,GAAG,IAAI,EACT,KAAK,EACL,QAAQ,GACT,GAAG,KAAK,CAAC;IAEV,MAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/E,MAAM,cAAc,GAAG,YAAY,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAG7D,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE;QAC7B,IAAI,EAAE,EAAE;YACN,OAAO,EAAE,CAAC;SACX;QAED,IAAI,IAAI,EAAE;YACR,OAAO,GAAG,CAAC;SACZ;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;IAEf,OAAO,CACL,6BAAK,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC;QACrC,oBAAC,eAAe,IACd,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,EAC1C,EAAE,EAAE,SAAS,mBACE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAEjD,KAAK,CACU;QAClB,oBAAC,SAAS,OACJ,cAAc,EAClB,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,kBAAkB,CAAC;YAEhD,oBAAC,cAAc,IAAC,IAAI,EAAE,EAAE,GAAI;YAC3B,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAClE,CACR,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -1,6 +1,4 @@
1
- .root {
2
- padding: var(--space-small);
3
- }
1
+ .root { }
4
2
 
5
3
  .content {}
6
4
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bundle-stats/ui",
3
- "version": "4.13.0-beta.0",
3
+ "version": "4.13.0-beta.10",
4
4
  "description": "UI components for BundleStats projects.",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-esm/index.js",
@@ -36,14 +36,14 @@
36
36
  },
37
37
  "homepage": "https://github.com/relative-ci/bundle-stats/blob/master/packages/ui#readme",
38
38
  "devDependencies": {
39
- "@babel/preset-env": "7.24.0",
40
- "@babel/preset-react": "7.23.3",
41
- "@babel/preset-typescript": "7.23.3",
39
+ "@babel/preset-env": "7.24.4",
40
+ "@babel/preset-react": "7.24.1",
41
+ "@babel/preset-typescript": "7.24.1",
42
42
  "@storybook/addon-essentials": "7.6.17",
43
43
  "@storybook/react": "7.6.17",
44
44
  "@storybook/react-webpack5": "7.6.17",
45
45
  "@types/d3": "7.4.3",
46
- "@types/react": "18.2.64",
46
+ "@types/react": "18.2.75",
47
47
  "@types/react-router-dom": "5.3.3",
48
48
  "babel-plugin-require-context-hook": "1.0.0",
49
49
  "classnames": "2.5.1",
@@ -52,7 +52,7 @@
52
52
  "hex-rgb": "5.0.0",
53
53
  "identity-obj-proxy": "3.0.0",
54
54
  "jest": "29.7.0",
55
- "jest-date-mock": "1.0.8",
55
+ "jest-date-mock": "1.0.9",
56
56
  "jest-environment-jsdom": "29.7.0",
57
57
  "lodash": "4.17.21",
58
58
  "prop-types": "15.8.1",
@@ -73,14 +73,12 @@
73
73
  "react-router-dom": "^5.0.0"
74
74
  },
75
75
  "dependencies": {
76
- "@bundle-stats/utils": "4.13.0-beta.0",
77
- "@floating-ui/react": "0.26.9",
78
- "@floating-ui/react-dom": "2.0.8",
76
+ "@bundle-stats/utils": "4.13.0-beta.10",
79
77
  "ariakit": "2.0.0-next.44",
80
78
  "d3": "^7.8.5",
81
79
  "modern-css-reset": "1.4.0",
82
80
  "react-use": "^17.5.0",
83
81
  "use-query-params": "2.2.1"
84
82
  },
85
- "gitHead": "f8197677d480f9b0b2112456526c821f49ed5a7d"
83
+ "gitHead": "448a7ea669d52d990e6ef2a64bbed63a9b1b3301"
86
84
  }
package/src/app/app.jsx CHANGED
@@ -97,9 +97,7 @@ const OverviewContent = () => {
97
97
  </Container>
98
98
  )}
99
99
  <Container>
100
- <Box outline>
101
- <BundleAssetsTotals jobs={jobs} />
102
- </Box>
100
+ <BundleAssetsTotals jobs={jobs} />
103
101
  </Container>
104
102
  </Stack>
105
103
  );
@@ -111,9 +109,7 @@ const AssetsContent = () => {
111
109
 
112
110
  return (
113
111
  <Container>
114
- <Box outline>
115
- <BundleAssets jobs={jobs} setState={bundleStatsSetState} {...bundleStatsState} />
116
- </Box>
112
+ <BundleAssets jobs={jobs} setState={bundleStatsSetState} {...bundleStatsState} />
117
113
  </Container>
118
114
  );
119
115
  };
@@ -126,9 +122,7 @@ const ModulesContent = () => {
126
122
 
127
123
  return (
128
124
  <Container>
129
- <Box outline>
130
- <BundleModules jobs={jobs} setState={bundleModulesSetState} {...bundleModulesState} />
131
- </Box>
125
+ <BundleModules jobs={jobs} setState={bundleModulesSetState} {...bundleModulesState} />
132
126
  </Container>
133
127
  );
134
128
  };
@@ -141,9 +135,7 @@ const PackagesContent = () => {
141
135
 
142
136
  return (
143
137
  <Container>
144
- <Box outline>
145
- <BundlePackages jobs={jobs} {...bundlePackagesState} setState={bundlePackagesSetState} />
146
- </Box>
138
+ <BundlePackages jobs={jobs} {...bundlePackagesState} setState={bundlePackagesSetState} />
147
139
  </Container>
148
140
  );
149
141
  };
@@ -18,8 +18,8 @@
18
18
  }
19
19
 
20
20
  .summaryContainer {
21
- padding-top: var(--space-medium);
22
- padding-bottom: var(--space-xsmall);
21
+ padding-top: var(--space-small);
22
+ padding-bottom: var(--space-xxsmall);
23
23
  }
24
24
 
25
25
  .tabsContainer {
@@ -15,12 +15,15 @@ import config from '../../config.json';
15
15
  import I18N from '../../i18n';
16
16
  import { MetricsDisplayType } from '../../constants';
17
17
  import { useMetricsDisplayType } from '../../hooks/metrics-display-type';
18
+ import { Box } from '../../layout/box';
18
19
  import { FlexStack } from '../../layout/flex-stack';
20
+ import { Stack } from '../../layout/stack';
19
21
  import { Icon } from '../../ui/icon';
20
22
  import { InputSearch } from '../../ui/input-search';
21
23
  import { FileName } from '../../ui/file-name';
22
24
  import { HoverCard } from '../../ui/hover-card';
23
25
  import { Tag } from '../../ui/tag';
26
+ import { Table } from '../../ui/table';
24
27
  import { Filters } from '../../ui/filters';
25
28
  import { EmptySet } from '../../ui/empty-set';
26
29
  import { Toolbar } from '../../ui/toolbar';
@@ -30,9 +33,10 @@ import { ComponentLink } from '../component-link';
30
33
  import { MetricsTable } from '../metrics-table';
31
34
  import { MetricsTableOptions } from '../metrics-table-options';
32
35
  import { MetricsTableTitle } from '../metrics-table-title';
33
- import { SEARCH_PLACEHOLDER } from './bundle-assets.i18n';
34
36
  import { MetricsDisplaySelector } from '../metrics-display-selector';
37
+ import { MetricsTableHeader } from '../metrics-table-header';
35
38
  import { MetricsTreemap } from '../metrics-treemap';
39
+ import { SEARCH_PLACEHOLDER } from './bundle-assets.i18n';
36
40
  import css from './bundle-assets.module.css';
37
41
 
38
42
  const RUN_TITLE_CURRENT = 'Current';
@@ -230,9 +234,8 @@ export const BundleAssets = (props) => {
230
234
 
231
235
  return (
232
236
  <>
233
- <section className={cx(css.root, className)}>
237
+ <Stack space="xsmall" as="section" className={cx(css.root, className)}>
234
238
  <Toolbar
235
- className={css.toolbar}
236
239
  renderActions={({ actionClassName }) => (
237
240
  <FlexStack space="xxsmall" className={cx(css.dropdown, actionClassName)}>
238
241
  <MetricsDisplaySelector onSelect={setDisplayType} value={displayType} />
@@ -258,7 +261,7 @@ export const BundleAssets = (props) => {
258
261
  />
259
262
  </FlexStack>
260
263
  </Toolbar>
261
- <main>
264
+ <Box outline as="main">
262
265
  {displayType === MetricsDisplayType.TABLE && (
263
266
  <MetricsTable
264
267
  runs={jobs}
@@ -272,10 +275,24 @@ export const BundleAssets = (props) => {
272
275
  />
273
276
  )}
274
277
  {displayType === MetricsDisplayType.TREEMAP && (
275
- <MetricsTreemap emptyMessage={emptyMessage} items={items} onItemClick={showEntryInfo} />
278
+ <>
279
+ <Table compact>
280
+ <MetricsTableHeader
281
+ metricTitle={metricsTableTitle}
282
+ showSum
283
+ jobs={jobs}
284
+ rows={items}
285
+ />
286
+ </Table>
287
+ <MetricsTreemap
288
+ emptyMessage={emptyMessage}
289
+ items={items}
290
+ onItemClick={showEntryInfo}
291
+ />
292
+ </>
276
293
  )}
277
- </main>
278
- </section>
294
+ </Box>
295
+ </Stack>
279
296
 
280
297
  {entryItem && (
281
298
  <AssetInfo
@@ -1,11 +1,6 @@
1
- .toolbar {
2
- border-bottom: 1px solid var(--color-outline);
3
- }
4
-
5
1
  .toolbarSearch {
6
2
  width: 100%;
7
3
  max-width: 240px;
8
- margin-right: -1px; /** collapse border */
9
4
  }
10
5
 
11
6
  .assetNameWrapper {
@@ -10,9 +10,14 @@ import {
10
10
  import { useRowsFilter } from '../../hooks/rows-filter';
11
11
  import { useRowsSort } from '../../hooks/rows-sort';
12
12
  import { useSearchParams } from '../../hooks/search-params';
13
- import { useShowEntry } from '../../hooks/show-entry';
13
+ import { useEntryInfo } from '../../hooks/entry-info';
14
14
  import { BundleAssets as BundleAssetsComponent } from './bundle-assets';
15
- import { addRowAssetFlags, addRowIsNotPredictive, getRowFilter, getCustomSort } from './bundle-assets.utils';
15
+ import {
16
+ addRowAssetFlags,
17
+ addRowIsNotPredictive,
18
+ getRowFilter,
19
+ getCustomSort,
20
+ } from './bundle-assets.utils';
16
21
 
17
22
  export const BundleAssets = (props) => {
18
23
  const { jobs, filters, search, setState, sortBy, direction, ...restProps } = props;
@@ -60,7 +65,7 @@ export const BundleAssets = (props) => {
60
65
  getCustomSort,
61
66
  });
62
67
 
63
- const { hideEntryInfo, showEntryInfo } = useShowEntry({ setState });
68
+ const [hideEntryInfo, showEntryInfo] = useEntryInfo({ setState });
64
69
 
65
70
  return (
66
71
  <BundleAssetsComponent
@@ -1,4 +1,4 @@
1
- import React, { useCallback } from 'react';
1
+ import React, { useCallback, useMemo } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { useHistory } from 'react-router-dom';
4
4
  import {
@@ -7,20 +7,26 @@ import {
7
7
  } from '@bundle-stats/utils';
8
8
  import * as webpack from '@bundle-stats/utils/lib-esm/webpack';
9
9
 
10
+ import config from '../../config.json';
10
11
  import { ASSETS_SIZES_FILE_TYPE_MAP, SECTION_URLS, MetricsDisplayType } from '../../constants';
11
12
  import { useMetricsDisplayType } from '../../hooks/metrics-display-type';
13
+ import I18N from '../../i18n';
12
14
  import { Toolbar } from '../../ui/toolbar';
13
- import { MetricsTreemap } from '../metrics-treemap';
15
+ import { Table } from '../../ui/table';
16
+ import { Box } from '../../layout/box';
17
+ import { Stack } from '../../layout/stack';
14
18
  import { MetricsDisplaySelector } from '../metrics-display-selector';
15
- import { TotalSizeTypeTitle } from '../total-size-type-title';
16
19
  import { MetricsTable } from '../metrics-table';
20
+ import { MetricsTableTitle } from '../metrics-table-title';
21
+ import { MetricsTableHeader } from '../metrics-table-header';
22
+ import { MetricsTreemap } from '../metrics-treemap';
17
23
  import { ComponentLink } from '../component-link';
18
- import css from './bundle-assets-totals.module.css';
19
24
 
20
25
  export const BundleAssetsTotals = ({
21
26
  className,
22
27
  jobs,
23
28
  customComponentLink: CustomComponentLink,
29
+ onTreemapItemClick,
24
30
  ...restProps
25
31
  }) => {
26
32
  const [displayType, setDisplayType] = useMetricsDisplayType();
@@ -43,37 +49,56 @@ export const BundleAssetsTotals = ({
43
49
  (entryId) => {
44
50
  const fileType = ASSETS_SIZES_FILE_TYPE_MAP[entryId];
45
51
  const { section, params } = getBundleAssetsFileTypeComponentLink(fileType, '');
46
- const search = getComponentStateQueryString(params);
47
- const nextUrl = `${SECTION_URLS[section]}?${search}`;
52
+ const queryParams = getComponentStateQueryString(params);
48
53
 
54
+ const nextUrl = `${SECTION_URLS[section]}?${queryParams}`;
49
55
  history.push(nextUrl);
50
56
  },
51
57
  [history],
52
58
  );
53
59
 
60
+ const metricsTableTitle = useMemo(
61
+ () => (
62
+ <MetricsTableTitle
63
+ title={I18N.ASSET_TOTALS}
64
+ popoverInfo={I18N.ASSET_TOTALS_INFO}
65
+ popoverHref={config.documentation.assets}
66
+ />
67
+ ),
68
+ [],
69
+ );
70
+
54
71
  return (
55
- <div className={className}>
72
+ <Stack space="xsmall" as="section" className={className}>
56
73
  <Toolbar
57
- className={css.toolbar}
58
74
  renderActions={() => (
59
75
  <MetricsDisplaySelector onSelect={setDisplayType} value={displayType} />
60
76
  )}
61
- >
62
- <TotalSizeTypeTitle />
63
- </Toolbar>
64
- {displayType === MetricsDisplayType.TABLE && (
65
- <MetricsTable
66
- runs={jobs}
67
- items={items}
68
- renderRowHeader={renderRowHeader}
69
- showHeaderSum
70
- {...restProps}
71
- />
72
- )}
73
- {displayType === MetricsDisplayType.TREEMAP && (
74
- <MetricsTreemap items={items} onItemClick={handleMetricsTreemapItemClick} />
75
- )}
76
- </div>
77
+ />
78
+ <Box outline as="main">
79
+ {displayType === MetricsDisplayType.TABLE && (
80
+ <MetricsTable
81
+ title={metricsTableTitle}
82
+ runs={jobs}
83
+ items={items}
84
+ renderRowHeader={renderRowHeader}
85
+ showHeaderSum
86
+ {...restProps}
87
+ />
88
+ )}
89
+ {displayType === MetricsDisplayType.TREEMAP && (
90
+ <>
91
+ <Table compact>
92
+ <MetricsTableHeader metricTitle={metricsTableTitle} showSum jobs={jobs} rows={items} />
93
+ </Table>
94
+ <MetricsTreemap
95
+ items={items}
96
+ onItemClick={onTreemapItemClick || handleMetricsTreemapItemClick}
97
+ />
98
+ </>
99
+ )}
100
+ </Box>
101
+ </Stack>
77
102
  );
78
103
  };
79
104
 
@@ -81,6 +106,7 @@ BundleAssetsTotals.defaultProps = {
81
106
  className: '',
82
107
  jobs: [],
83
108
  customComponentLink: ComponentLink,
109
+ onTreemapItemClick: undefined,
84
110
  };
85
111
 
86
112
  BundleAssetsTotals.propTypes = {
@@ -91,4 +117,9 @@ BundleAssetsTotals.propTypes = {
91
117
  jobs: PropTypes.array, // eslint-disable-line react/forbid-prop-types
92
118
 
93
119
  customComponentLink: PropTypes.elementType,
120
+
121
+ /**
122
+ * Treemap item onClick
123
+ */
124
+ onTreemapItemClick: PropTypes.func,
94
125
  };
@@ -2,14 +2,9 @@
2
2
  color: var(--color-text-light);
3
3
  }
4
4
 
5
- .toolbar {
6
- border-bottom: 1px solid var(--color-outline);
7
- }
8
-
9
5
  .toolbarSearch {
10
6
  width: 100%;
11
7
  max-width: 240px;
12
- margin-right: -1px; /** collapse border */
13
8
  }
14
9
 
15
10
  .metricSelector {