@bundle-stats/ui 4.22.3 → 4.23.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 (395) hide show
  1. package/lib/app/app.js +4 -0
  2. package/lib/app/app.js.map +1 -1
  3. package/lib/app/app.module.css +14 -5
  4. package/lib/app/header/header.module.css +1 -3
  5. package/lib/components/asset-name/asset-name.js +8 -7
  6. package/lib/components/asset-name/asset-name.js.map +1 -1
  7. package/lib/components/asset-name/asset-name.module.css +11 -10
  8. package/lib/components/bundle-assets/bundle-assets.js +4 -2
  9. package/lib/components/bundle-assets/bundle-assets.js.map +1 -1
  10. package/lib/components/bundle-assets/bundle-assets.module.css +0 -12
  11. package/lib/components/bundle-assets/index.js +2 -1
  12. package/lib/components/bundle-assets/index.js.map +1 -1
  13. package/lib/components/bundle-assets-totals/bundle-assets-totals.js +4 -2
  14. package/lib/components/bundle-assets-totals/bundle-assets-totals.js.map +1 -1
  15. package/lib/components/bundle-modules/bundle-modules.js +5 -3
  16. package/lib/components/bundle-modules/bundle-modules.js.map +1 -1
  17. package/lib/components/bundle-modules/bundle-modules.module.css +2 -16
  18. package/lib/components/bundle-modules/index.js +2 -1
  19. package/lib/components/bundle-modules/index.js.map +1 -1
  20. package/lib/components/bundle-packages/bundle-packages.js +5 -3
  21. package/lib/components/bundle-packages/bundle-packages.js.map +1 -1
  22. package/lib/components/bundle-packages/bundle-packages.module.css +18 -22
  23. package/lib/components/delta/delta.js +3 -13
  24. package/lib/components/delta/delta.js.map +1 -1
  25. package/lib/components/delta/delta.module.css +13 -12
  26. package/lib/components/delta/index.js.map +1 -1
  27. package/lib/components/entry-info/entry-info.js +4 -2
  28. package/lib/components/entry-info/entry-info.js.map +1 -1
  29. package/lib/components/entry-info/entry-info.module.css +7 -2
  30. package/lib/components/index.js +3 -1
  31. package/lib/components/index.js.map +1 -1
  32. package/lib/components/insight-icon/insight-icon.module.css +6 -6
  33. package/lib/components/job-name/job-name.js +1 -2
  34. package/lib/components/job-name/job-name.js.map +1 -1
  35. package/lib/components/jobs-header/jobs-header.js +1 -1
  36. package/lib/components/jobs-header/jobs-header.js.map +1 -1
  37. package/lib/components/jobs-header/jobs-header.module.css +0 -1
  38. package/lib/components/metric-change-legend/index.js +18 -0
  39. package/lib/components/metric-change-legend/index.js.map +1 -0
  40. package/lib/components/metric-change-legend/metric-change-legend.js +91 -0
  41. package/lib/components/metric-change-legend/metric-change-legend.js.map +1 -0
  42. package/lib/components/metric-change-legend/metric-change-legend.module.css +80 -0
  43. package/lib/components/metric-run-info/metric-run-info.js +24 -8
  44. package/lib/components/metric-run-info/metric-run-info.js.map +1 -1
  45. package/lib/components/metrics-display-selector/metrics-display-selector.js +7 -9
  46. package/lib/components/metrics-display-selector/metrics-display-selector.js.map +1 -1
  47. package/lib/components/metrics-display-selector/metrics-display-selector.module.css +0 -27
  48. package/lib/components/metrics-table/metrics-table.js +31 -20
  49. package/lib/components/metrics-table/metrics-table.js.map +1 -1
  50. package/lib/components/metrics-table/metrics-table.module.css +4 -12
  51. package/lib/components/metrics-table-header/metrics-table-header.js +6 -6
  52. package/lib/components/metrics-table-header/metrics-table-header.js.map +1 -1
  53. package/lib/components/metrics-table-header/metrics-table-header.module.css +8 -12
  54. package/lib/components/metrics-table-options/metrics-table-options.js +4 -5
  55. package/lib/components/metrics-table-options/metrics-table-options.js.map +1 -1
  56. package/lib/components/metrics-table-row-count/index.js +18 -0
  57. package/lib/components/metrics-table-row-count/index.js.map +1 -0
  58. package/lib/components/metrics-table-row-count/metrics-table-row-count.js +17 -0
  59. package/lib/components/metrics-table-row-count/metrics-table-row-count.js.map +1 -0
  60. package/lib/components/metrics-table-row-count/metrics-table-row-count.module.css +5 -0
  61. package/lib/components/metrics-table-title/metrics-table-title.js +1 -1
  62. package/lib/components/metrics-table-title/metrics-table-title.js.map +1 -1
  63. package/lib/components/metrics-treemap/metrics-treemap.constants.js +3 -1
  64. package/lib/components/metrics-treemap/metrics-treemap.constants.js.map +1 -1
  65. package/lib/components/metrics-treemap/metrics-treemap.js +46 -113
  66. package/lib/components/metrics-treemap/metrics-treemap.js.map +1 -1
  67. package/lib/components/metrics-treemap/metrics-treemap.module.css +3 -274
  68. package/lib/components/metrics-treemap/metrics-treemap.utils.js +81 -16
  69. package/lib/components/metrics-treemap/metrics-treemap.utils.js.map +1 -1
  70. package/lib/components/metrics-treemap/tile/index.js +18 -0
  71. package/lib/components/metrics-treemap/tile/index.js.map +1 -0
  72. package/lib/components/metrics-treemap/tile/tile.js +79 -0
  73. package/lib/components/metrics-treemap/tile/tile.js.map +1 -0
  74. package/lib/components/metrics-treemap/tile/tile.module.css +145 -0
  75. package/lib/components/metrics-treemap/tile-group/index.js +18 -0
  76. package/lib/components/metrics-treemap/tile-group/index.js.map +1 -0
  77. package/lib/components/metrics-treemap/tile-group/tile-group.js +75 -0
  78. package/lib/components/metrics-treemap/tile-group/tile-group.js.map +1 -0
  79. package/lib/components/metrics-treemap/tile-group/tile-group.module.css +57 -0
  80. package/lib/components/metrics-treemap/tile-group-title/index.js +18 -0
  81. package/lib/components/metrics-treemap/tile-group-title/index.js.map +1 -0
  82. package/lib/components/metrics-treemap/tile-group-title/tile-group-title.js +24 -0
  83. package/lib/components/metrics-treemap/tile-group-title/tile-group-title.js.map +1 -0
  84. package/lib/components/metrics-treemap/tile-group-title/tile-group-title.module.css +48 -0
  85. package/lib/components/run-info/run-info.js +26 -14
  86. package/lib/components/run-info/run-info.js.map +1 -1
  87. package/lib/components/run-info/run-info.module.css +35 -26
  88. package/lib/components/sort-button/sort-button.module.css +0 -2
  89. package/lib/components/summary/summary.js +10 -10
  90. package/lib/components/summary/summary.js.map +1 -1
  91. package/lib/components/summary/summary.module.css +60 -14
  92. package/lib/constants.js +13 -1
  93. package/lib/constants.js.map +1 -1
  94. package/lib/css/default.css +7 -4
  95. package/lib/css/variables.css +84 -60
  96. package/lib/layout/flex-stack/flex-stack.js +2 -2
  97. package/lib/layout/flex-stack/flex-stack.js.map +1 -1
  98. package/lib/layout/flex-stack/flex-stack.module.css +65 -10
  99. package/lib/query-state.js +6 -3
  100. package/lib/query-state.js.map +1 -1
  101. package/lib/ui/button/button.js +3 -2
  102. package/lib/ui/button/button.js.map +1 -1
  103. package/lib/ui/button/button.module.css +38 -27
  104. package/lib/ui/control-group/control-group.js +1 -1
  105. package/lib/ui/control-group/control-group.js.map +1 -1
  106. package/lib/ui/copy-to-clipboard/copy-to-clipboard.module.css +2 -2
  107. package/lib/ui/dialog/dialog.js +7 -3
  108. package/lib/ui/dialog/dialog.js.map +1 -1
  109. package/lib/ui/dialog/dialog.module.css +27 -0
  110. package/lib/ui/dropdown/dropdown.js +13 -4
  111. package/lib/ui/dropdown/dropdown.js.map +1 -1
  112. package/lib/ui/dropdown/dropdown.module.css +60 -7
  113. package/lib/ui/filters/filters.js +28 -16
  114. package/lib/ui/filters/filters.js.map +1 -1
  115. package/lib/ui/filters/filters.module.css +3 -19
  116. package/lib/ui/hover-card/hover-card.js +7 -1
  117. package/lib/ui/hover-card/hover-card.js.map +1 -1
  118. package/lib/ui/hover-card/hover-card.module.css +18 -5
  119. package/lib/ui/input/input.module.css +2 -2
  120. package/lib/ui/table/table.module.css +12 -6
  121. package/lib/ui/tabs/tabs.module.css +13 -9
  122. package/lib/ui/tag/tag.module.css +0 -2
  123. package/lib/ui/textarea/textarea.module.css +2 -2
  124. package/lib/ui/toolbar/toolbar.js +2 -1
  125. package/lib/ui/toolbar/toolbar.js.map +1 -1
  126. package/lib/ui/toolbar/toolbar.module.css +0 -6
  127. package/lib/ui/tooltip/tooltip.js +6 -1
  128. package/lib/ui/tooltip/tooltip.js.map +1 -1
  129. package/lib/ui/tooltip/tooltip.module.css +12 -1
  130. package/lib/utils/index.js +1 -0
  131. package/lib/utils/index.js.map +1 -1
  132. package/lib/utils/portal.js +10 -0
  133. package/lib/utils/portal.js.map +1 -0
  134. package/lib-esm/app/app.js +5 -1
  135. package/lib-esm/app/app.js.map +1 -1
  136. package/lib-esm/app/app.module.css +14 -5
  137. package/lib-esm/app/header/header.module.css +1 -3
  138. package/lib-esm/components/asset-name/asset-name.js +8 -7
  139. package/lib-esm/components/asset-name/asset-name.js.map +1 -1
  140. package/lib-esm/components/asset-name/asset-name.module.css +11 -10
  141. package/lib-esm/components/bundle-assets/bundle-assets.js +4 -2
  142. package/lib-esm/components/bundle-assets/bundle-assets.js.map +1 -1
  143. package/lib-esm/components/bundle-assets/bundle-assets.module.css +0 -12
  144. package/lib-esm/components/bundle-assets/index.js +2 -1
  145. package/lib-esm/components/bundle-assets/index.js.map +1 -1
  146. package/lib-esm/components/bundle-assets-totals/bundle-assets-totals.js +4 -2
  147. package/lib-esm/components/bundle-assets-totals/bundle-assets-totals.js.map +1 -1
  148. package/lib-esm/components/bundle-modules/bundle-modules.js +5 -3
  149. package/lib-esm/components/bundle-modules/bundle-modules.js.map +1 -1
  150. package/lib-esm/components/bundle-modules/bundle-modules.module.css +2 -16
  151. package/lib-esm/components/bundle-modules/index.js +2 -1
  152. package/lib-esm/components/bundle-modules/index.js.map +1 -1
  153. package/lib-esm/components/bundle-packages/bundle-packages.js +5 -3
  154. package/lib-esm/components/bundle-packages/bundle-packages.js.map +1 -1
  155. package/lib-esm/components/bundle-packages/bundle-packages.module.css +18 -22
  156. package/lib-esm/components/delta/delta.js +3 -13
  157. package/lib-esm/components/delta/delta.js.map +1 -1
  158. package/lib-esm/components/delta/delta.module.css +13 -12
  159. package/lib-esm/components/delta/index.js.map +1 -1
  160. package/lib-esm/components/entry-info/entry-info.js +4 -2
  161. package/lib-esm/components/entry-info/entry-info.js.map +1 -1
  162. package/lib-esm/components/entry-info/entry-info.module.css +7 -2
  163. package/lib-esm/components/index.js +1 -0
  164. package/lib-esm/components/index.js.map +1 -1
  165. package/lib-esm/components/insight-icon/insight-icon.module.css +6 -6
  166. package/lib-esm/components/job-name/job-name.js +1 -2
  167. package/lib-esm/components/job-name/job-name.js.map +1 -1
  168. package/lib-esm/components/jobs-header/jobs-header.js +1 -1
  169. package/lib-esm/components/jobs-header/jobs-header.js.map +1 -1
  170. package/lib-esm/components/jobs-header/jobs-header.module.css +0 -1
  171. package/lib-esm/components/metric-change-legend/index.js +2 -0
  172. package/lib-esm/components/metric-change-legend/index.js.map +1 -0
  173. package/lib-esm/components/metric-change-legend/metric-change-legend.js +84 -0
  174. package/lib-esm/components/metric-change-legend/metric-change-legend.js.map +1 -0
  175. package/lib-esm/components/metric-change-legend/metric-change-legend.module.css +80 -0
  176. package/lib-esm/components/metric-run-info/metric-run-info.js +24 -8
  177. package/lib-esm/components/metric-run-info/metric-run-info.js.map +1 -1
  178. package/lib-esm/components/metrics-display-selector/metrics-display-selector.js +7 -9
  179. package/lib-esm/components/metrics-display-selector/metrics-display-selector.js.map +1 -1
  180. package/lib-esm/components/metrics-display-selector/metrics-display-selector.module.css +0 -27
  181. package/lib-esm/components/metrics-table/metrics-table.js +32 -20
  182. package/lib-esm/components/metrics-table/metrics-table.js.map +1 -1
  183. package/lib-esm/components/metrics-table/metrics-table.module.css +4 -12
  184. package/lib-esm/components/metrics-table-header/metrics-table-header.js +6 -6
  185. package/lib-esm/components/metrics-table-header/metrics-table-header.js.map +1 -1
  186. package/lib-esm/components/metrics-table-header/metrics-table-header.module.css +8 -12
  187. package/lib-esm/components/metrics-table-options/metrics-table-options.js +5 -6
  188. package/lib-esm/components/metrics-table-options/metrics-table-options.js.map +1 -1
  189. package/lib-esm/components/metrics-table-row-count/index.js +2 -0
  190. package/lib-esm/components/metrics-table-row-count/index.js.map +1 -0
  191. package/lib-esm/components/metrics-table-row-count/metrics-table-row-count.js +10 -0
  192. package/lib-esm/components/metrics-table-row-count/metrics-table-row-count.js.map +1 -0
  193. package/lib-esm/components/metrics-table-row-count/metrics-table-row-count.module.css +5 -0
  194. package/lib-esm/components/metrics-table-title/metrics-table-title.js +1 -1
  195. package/lib-esm/components/metrics-table-title/metrics-table-title.js.map +1 -1
  196. package/lib-esm/components/metrics-treemap/metrics-treemap.constants.js +2 -0
  197. package/lib-esm/components/metrics-treemap/metrics-treemap.constants.js.map +1 -1
  198. package/lib-esm/components/metrics-treemap/metrics-treemap.js +52 -120
  199. package/lib-esm/components/metrics-treemap/metrics-treemap.js.map +1 -1
  200. package/lib-esm/components/metrics-treemap/metrics-treemap.module.css +3 -274
  201. package/lib-esm/components/metrics-treemap/metrics-treemap.utils.js +80 -18
  202. package/lib-esm/components/metrics-treemap/metrics-treemap.utils.js.map +1 -1
  203. package/lib-esm/components/metrics-treemap/tile/index.js +2 -0
  204. package/lib-esm/components/metrics-treemap/tile/index.js.map +1 -0
  205. package/lib-esm/components/metrics-treemap/tile/tile.js +40 -0
  206. package/lib-esm/components/metrics-treemap/tile/tile.js.map +1 -0
  207. package/lib-esm/components/metrics-treemap/tile/tile.module.css +145 -0
  208. package/lib-esm/components/metrics-treemap/tile-group/index.js +2 -0
  209. package/lib-esm/components/metrics-treemap/tile-group/index.js.map +1 -0
  210. package/lib-esm/components/metrics-treemap/tile-group/tile-group.js +35 -0
  211. package/lib-esm/components/metrics-treemap/tile-group/tile-group.js.map +1 -0
  212. package/lib-esm/components/metrics-treemap/tile-group/tile-group.module.css +57 -0
  213. package/lib-esm/components/metrics-treemap/tile-group-title/index.js +2 -0
  214. package/lib-esm/components/metrics-treemap/tile-group-title/index.js.map +1 -0
  215. package/lib-esm/components/metrics-treemap/tile-group-title/tile-group-title.js +17 -0
  216. package/lib-esm/components/metrics-treemap/tile-group-title/tile-group-title.js.map +1 -0
  217. package/lib-esm/components/metrics-treemap/tile-group-title/tile-group-title.module.css +48 -0
  218. package/lib-esm/components/run-info/run-info.js +26 -14
  219. package/lib-esm/components/run-info/run-info.js.map +1 -1
  220. package/lib-esm/components/run-info/run-info.module.css +35 -26
  221. package/lib-esm/components/sort-button/sort-button.module.css +0 -2
  222. package/lib-esm/components/summary/summary.js +11 -11
  223. package/lib-esm/components/summary/summary.js.map +1 -1
  224. package/lib-esm/components/summary/summary.module.css +60 -14
  225. package/lib-esm/constants.js +12 -0
  226. package/lib-esm/constants.js.map +1 -1
  227. package/lib-esm/css/default.css +7 -4
  228. package/lib-esm/css/variables.css +84 -60
  229. package/lib-esm/layout/flex-stack/flex-stack.js +3 -2
  230. package/lib-esm/layout/flex-stack/flex-stack.js.map +1 -1
  231. package/lib-esm/layout/flex-stack/flex-stack.module.css +65 -10
  232. package/lib-esm/query-state.js +7 -4
  233. package/lib-esm/query-state.js.map +1 -1
  234. package/lib-esm/ui/button/button.js +3 -2
  235. package/lib-esm/ui/button/button.js.map +1 -1
  236. package/lib-esm/ui/button/button.module.css +38 -27
  237. package/lib-esm/ui/control-group/control-group.js +1 -1
  238. package/lib-esm/ui/control-group/control-group.js.map +1 -1
  239. package/lib-esm/ui/copy-to-clipboard/copy-to-clipboard.module.css +2 -2
  240. package/lib-esm/ui/dialog/dialog.js +7 -3
  241. package/lib-esm/ui/dialog/dialog.js.map +1 -1
  242. package/lib-esm/ui/dialog/dialog.module.css +27 -0
  243. package/lib-esm/ui/dropdown/dropdown.js +11 -3
  244. package/lib-esm/ui/dropdown/dropdown.js.map +1 -1
  245. package/lib-esm/ui/dropdown/dropdown.module.css +60 -7
  246. package/lib-esm/ui/filters/filters.js +29 -17
  247. package/lib-esm/ui/filters/filters.js.map +1 -1
  248. package/lib-esm/ui/filters/filters.module.css +3 -19
  249. package/lib-esm/ui/hover-card/hover-card.js +7 -1
  250. package/lib-esm/ui/hover-card/hover-card.js.map +1 -1
  251. package/lib-esm/ui/hover-card/hover-card.module.css +18 -5
  252. package/lib-esm/ui/input/input.module.css +2 -2
  253. package/lib-esm/ui/table/table.module.css +12 -6
  254. package/lib-esm/ui/tabs/tabs.module.css +13 -9
  255. package/lib-esm/ui/tag/tag.module.css +0 -2
  256. package/lib-esm/ui/textarea/textarea.module.css +2 -2
  257. package/lib-esm/ui/toolbar/toolbar.js +2 -1
  258. package/lib-esm/ui/toolbar/toolbar.js.map +1 -1
  259. package/lib-esm/ui/toolbar/toolbar.module.css +0 -6
  260. package/lib-esm/ui/tooltip/tooltip.js +6 -1
  261. package/lib-esm/ui/tooltip/tooltip.js.map +1 -1
  262. package/lib-esm/ui/tooltip/tooltip.module.css +12 -1
  263. package/lib-esm/utils/index.js +1 -0
  264. package/lib-esm/utils/index.js.map +1 -1
  265. package/lib-esm/utils/portal.js +6 -0
  266. package/lib-esm/utils/portal.js.map +1 -0
  267. package/package.json +18 -18
  268. package/src/app/app.jsx +7 -1
  269. package/src/app/app.module.css +14 -5
  270. package/src/app/header/header.module.css +1 -3
  271. package/src/components/asset-name/asset-name.module.css +11 -10
  272. package/src/components/asset-name/asset-name.tsx +17 -14
  273. package/src/components/bundle-assets/bundle-assets.module.css +0 -12
  274. package/src/components/bundle-assets/bundle-assets.tsx +8 -1
  275. package/src/components/bundle-assets/index.tsx +3 -1
  276. package/src/components/bundle-assets-totals/bundle-assets-totals.jsx +6 -4
  277. package/src/components/bundle-modules/bundle-modules.module.css +2 -16
  278. package/src/components/bundle-modules/bundle-modules.tsx +10 -3
  279. package/src/components/bundle-modules/index.tsx +3 -1
  280. package/src/components/bundle-packages/bundle-packages.jsx +14 -3
  281. package/src/components/bundle-packages/bundle-packages.module.css +18 -22
  282. package/src/components/delta/delta.module.css +13 -12
  283. package/src/components/delta/delta.tsx +32 -0
  284. package/src/components/entry-info/entry-info.module.css +7 -2
  285. package/src/components/entry-info/entry-info.tsx +9 -3
  286. package/src/components/index.ts +3 -0
  287. package/src/components/insight-icon/insight-icon.module.css +6 -6
  288. package/src/components/job-name/job-name.jsx +2 -3
  289. package/src/components/jobs-header/jobs-header.module.css +0 -1
  290. package/src/components/jobs-header/jobs-header.tsx +2 -2
  291. package/src/components/metric-change-legend/index.ts +1 -0
  292. package/src/components/metric-change-legend/metric-change-legend.module.css +80 -0
  293. package/src/components/metric-change-legend/metric-change-legend.stories.tsx +13 -0
  294. package/src/components/metric-change-legend/metric-change-legend.tsx +148 -0
  295. package/src/components/metric-run-info/metric-run-info.stories.tsx +9 -0
  296. package/src/components/metric-run-info/metric-run-info.tsx +39 -17
  297. package/src/components/metrics-display-selector/metrics-display-selector.module.css +0 -27
  298. package/src/components/metrics-display-selector/metrics-display-selector.tsx +25 -37
  299. package/src/components/metrics-table/metrics-table.module.css +4 -12
  300. package/src/components/metrics-table/metrics-table.tsx +70 -39
  301. package/src/components/metrics-table-header/metrics-table-header.module.css +8 -12
  302. package/src/components/metrics-table-header/metrics-table-header.tsx +5 -6
  303. package/src/components/metrics-table-options/metrics-table-options.tsx +13 -14
  304. package/src/components/metrics-table-row-count/index.ts +1 -0
  305. package/src/components/metrics-table-row-count/metrics-table-row-count.module.css +5 -0
  306. package/src/components/metrics-table-row-count/metrics-table-row-count.tsx +21 -0
  307. package/src/components/metrics-table-title/metrics-table-title.jsx +1 -1
  308. package/src/components/metrics-treemap/metrics-treemap.constants.ts +9 -0
  309. package/src/components/metrics-treemap/metrics-treemap.module.css +3 -274
  310. package/src/components/metrics-treemap/metrics-treemap.stories.utils.ts +46 -0
  311. package/src/components/metrics-treemap/metrics-treemap.tsx +123 -428
  312. package/src/components/metrics-treemap/metrics-treemap.utils.ts +161 -27
  313. package/src/components/metrics-treemap/tile/index.ts +1 -0
  314. package/src/components/metrics-treemap/tile/tile.module.css +145 -0
  315. package/src/components/metrics-treemap/tile/tile.stories.tsx +139 -0
  316. package/src/components/metrics-treemap/tile/tile.tsx +121 -0
  317. package/src/components/metrics-treemap/tile-group/index.ts +1 -0
  318. package/src/components/metrics-treemap/tile-group/tile-group.module.css +57 -0
  319. package/src/components/metrics-treemap/tile-group/tile-group.stories.tsx +163 -0
  320. package/src/components/metrics-treemap/tile-group/tile-group.tsx +177 -0
  321. package/src/components/metrics-treemap/tile-group-title/index.ts +1 -0
  322. package/src/components/metrics-treemap/tile-group-title/tile-group-title.module.css +48 -0
  323. package/src/components/metrics-treemap/tile-group-title/tile-group-title.stories.tsx +88 -0
  324. package/src/components/metrics-treemap/tile-group-title/tile-group-title.tsx +51 -0
  325. package/src/components/run-info/run-info.module.css +35 -26
  326. package/src/components/run-info/run-info.stories.tsx +16 -10
  327. package/src/components/run-info/run-info.tsx +132 -73
  328. package/src/components/sort-button/sort-button.module.css +0 -2
  329. package/src/components/summary/summary.module.css +60 -14
  330. package/src/components/summary/summary.tsx +50 -52
  331. package/src/constants.ts +13 -0
  332. package/src/css/default.css +7 -4
  333. package/src/css/variables.css +84 -60
  334. package/src/layout/flex-stack/flex-stack.module.css +65 -10
  335. package/src/layout/flex-stack/flex-stack.stories.tsx +68 -9
  336. package/src/layout/flex-stack/flex-stack.tsx +24 -4
  337. package/src/query-state.tsx +9 -4
  338. package/src/ui/button/button.module.css +38 -27
  339. package/src/ui/button/button.stories.tsx +1 -1
  340. package/src/ui/button/button.tsx +3 -1
  341. package/src/ui/control-group/control-group.tsx +1 -1
  342. package/src/ui/copy-to-clipboard/copy-to-clipboard.module.css +2 -2
  343. package/src/ui/dialog/dialog.module.css +27 -0
  344. package/src/ui/dialog/dialog.stories.tsx +8 -0
  345. package/src/ui/dialog/dialog.tsx +16 -2
  346. package/src/ui/dropdown/dropdown.module.css +60 -7
  347. package/src/ui/dropdown/dropdown.stories.tsx +6 -0
  348. package/src/ui/dropdown/dropdown.tsx +17 -2
  349. package/src/ui/filters/filters.module.css +3 -19
  350. package/src/ui/filters/filters.tsx +131 -67
  351. package/src/ui/hover-card/hover-card.module.css +18 -5
  352. package/src/ui/hover-card/hover-card.tsx +7 -1
  353. package/src/ui/input/input.module.css +2 -2
  354. package/src/ui/table/table.module.css +12 -6
  355. package/src/ui/tabs/tabs.module.css +13 -9
  356. package/src/ui/tag/tag.module.css +0 -2
  357. package/src/ui/textarea/textarea.module.css +2 -2
  358. package/src/ui/toolbar/toolbar.jsx +4 -1
  359. package/src/ui/toolbar/toolbar.module.css +0 -6
  360. package/src/ui/tooltip/tooltip.module.css +12 -1
  361. package/src/ui/tooltip/tooltip.tsx +6 -1
  362. package/src/utils/index.ts +1 -0
  363. package/src/utils/portal.ts +9 -0
  364. package/types/components/delta/delta.d.ts +7 -21
  365. package/types/components/delta/index.d.ts +1 -1
  366. package/types/components/index.d.ts +3 -0
  367. package/types/components/metric-change-legend/index.d.ts +1 -0
  368. package/types/components/metric-change-legend/metric-change-legend.d.ts +4 -0
  369. package/types/components/metric-run-info/metric-run-info.d.ts +3 -6
  370. package/types/components/metrics-table/metrics-table.d.ts +2 -1
  371. package/types/components/metrics-table-row-count/index.d.ts +1 -0
  372. package/types/components/metrics-table-row-count/metrics-table-row-count.d.ts +7 -0
  373. package/types/components/metrics-treemap/metrics-treemap.constants.d.ts +2 -0
  374. package/types/components/metrics-treemap/metrics-treemap.utils.d.ts +16 -5
  375. package/types/components/metrics-treemap/tile/index.d.ts +1 -0
  376. package/types/components/metrics-treemap/tile/tile.d.ts +11 -0
  377. package/types/components/metrics-treemap/tile-group/index.d.ts +1 -0
  378. package/types/components/metrics-treemap/tile-group/tile-group.d.ts +20 -0
  379. package/types/components/metrics-treemap/tile-group-title/index.d.ts +1 -0
  380. package/types/components/metrics-treemap/tile-group-title/tile-group-title.d.ts +12 -0
  381. package/types/components/run-info/run-info.d.ts +16 -7
  382. package/types/constants.d.ts +12 -0
  383. package/types/layout/flex-stack/flex-stack.d.ts +6 -2
  384. package/types/ui/button/button.d.ts +1 -0
  385. package/types/ui/dialog/dialog.d.ts +3 -2
  386. package/types/ui/dropdown/dropdown.d.ts +4 -1
  387. package/types/ui/filters/filters.d.ts +2 -1
  388. package/types/utils/index.d.ts +1 -0
  389. package/types/utils/portal.d.ts +1 -0
  390. package/vitest.config.ts +4 -0
  391. package/lib/components/metrics-table-options/metrics-table-options.module.css +0 -15
  392. package/lib-esm/components/metrics-table-options/metrics-table-options.module.css +0 -15
  393. package/src/components/delta/delta.jsx +0 -22
  394. package/src/components/metrics-table-options/metrics-table-options.module.css +0 -15
  395. /package/src/components/delta/{index.js → index.ts} +0 -0
@@ -1,4 +1,5 @@
1
1
  export * from './colors';
2
2
  export * from './jobs';
3
3
  export * from './components';
4
+ export * from './portal';
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC"}
@@ -0,0 +1,6 @@
1
+ export const getCreatePortalElement = (className) => (element) => {
2
+ const portalElement = element.ownerDocument.createElement('div');
3
+ portalElement.className = className;
4
+ return portalElement;
5
+ };
6
+ //# sourceMappingURL=portal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portal.js","sourceRoot":"","sources":["../../src/utils/portal.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,SAAiB,EAAE,EAAE,CAAC,CAAC,OAAoB,EAAE,EAAE;IACpF,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACjE,aAAa,CAAC,SAAS,GAAG,SAAS,CAAC;IACpC,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bundle-stats/ui",
3
- "version": "4.22.3",
3
+ "version": "4.23.0-beta.10",
4
4
  "description": "UI components for BundleStats projects.",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-esm/index.js",
@@ -38,41 +38,41 @@
38
38
  },
39
39
  "homepage": "https://github.com/relative-ci/bundle-stats/blob/master/packages/ui#readme",
40
40
  "devDependencies": {
41
- "@babel/preset-env": "8.0.2",
41
+ "@babel/preset-env": "8.0.7",
42
42
  "@babel/preset-react": "8.0.1",
43
- "@babel/preset-typescript": "8.0.1",
44
- "@storybook/addon-vitest": "10.5.10",
45
- "@storybook/react": "10.5.10",
46
- "@storybook/react-vite": "10.5.10",
43
+ "@babel/preset-typescript": "8.0.7",
44
+ "@storybook/addon-vitest": "10.6.2",
45
+ "@storybook/react": "10.6.2",
46
+ "@storybook/react-vite": "10.6.2",
47
47
  "@types/d3": "7.4.3",
48
48
  "@types/react": "18.3.13",
49
49
  "@types/react-router-dom": "5.3.3",
50
- "@vitejs/plugin-react": "6.1.0",
51
- "@vitest/browser": "4.1.11",
52
- "@vitest/browser-playwright": "4.1.11",
50
+ "@vitejs/plugin-react": "6.1.2",
51
+ "@vitest/browser": "5.0.5",
52
+ "@vitest/browser-playwright": "5.0.5",
53
53
  "babel-plugin-polyfill-corejs3": "1.0.0",
54
54
  "babel-plugin-require-context-hook": "1.0.0",
55
55
  "classnames": "2.5.1",
56
56
  "colormap": "2.3.2",
57
- "core-js": "3.50.0",
57
+ "core-js": "3.51.0",
58
58
  "cross-env": "10.1.0",
59
59
  "hex-rgb": "5.0.0",
60
60
  "identity-obj-proxy": "3.0.0",
61
- "jest": "30.4.2",
61
+ "jest": "^30.5.0",
62
62
  "jest-date-mock": "1.0.10",
63
- "jest-environment-jsdom": "30.4.1",
63
+ "jest-environment-jsdom": "30.5.2",
64
64
  "lodash": "4.18.1",
65
- "playwright": "1.62.1",
65
+ "playwright": "1.64.1",
66
66
  "prop-types": "15.8.1",
67
67
  "react": "18.3.1",
68
68
  "react-dom": "18.3.1",
69
69
  "react-router-dom": "5.3.4",
70
70
  "rimraf": "6.1.3",
71
- "storybook": "10.5.10",
71
+ "storybook": "10.6.2",
72
72
  "typescript": "5.9.3",
73
- "vite": "8.2.2",
73
+ "vite": "8.3.4",
74
74
  "vite-plugin-svgr": "5.2.0",
75
- "vitest": "4.1.11"
75
+ "vitest": "5.0.5"
76
76
  },
77
77
  "peerDependencies": {
78
78
  "classnames": "^2.0.0",
@@ -83,7 +83,7 @@
83
83
  "react-router-dom": "^5.0.0"
84
84
  },
85
85
  "dependencies": {
86
- "@bundle-stats/utils": "^4.22.3",
86
+ "@bundle-stats/utils": "^4.23.0-beta.10",
87
87
  "ariakit": "2.0.0-next.44",
88
88
  "d3": "7.9.0",
89
89
  "modern-css-reset": "1.4.0",
@@ -91,5 +91,5 @@
91
91
  "snarkdown": "2.0.0",
92
92
  "use-query-params": "2.2.2"
93
93
  },
94
- "gitHead": "40d689d101ffc69421f87e29fb7449b4f1ae8bff"
94
+ "gitHead": "7c9e99fe7bf5b35dc75cf504f31c0ca035c04476"
95
95
  }
package/src/app/app.jsx CHANGED
@@ -10,9 +10,10 @@ import { BundleAssetsTotals } from '../components/bundle-assets-totals';
10
10
  import { BundleModules } from '../components/bundle-modules';
11
11
  import { BundlePackages } from '../components/bundle-packages';
12
12
  import { Insights } from '../components/insights';
13
- import { MetricsTableTitle } from '../components';
13
+ import { MetricChangeLegend, MetricsTableTitle } from '../components';
14
14
  import { Summary } from '../components/summary';
15
15
  import { Box } from '../layout/box';
16
+ import { FlexStack } from '../layout/flex-stack';
16
17
  import { Footer } from '../layout/footer';
17
18
  import { Stack } from '../layout/stack';
18
19
  import { Container } from '../ui/container';
@@ -150,6 +151,11 @@ const AppComponent = ({ version, jobs }) => {
150
151
  return (
151
152
  <JobsProvider jobs={jobs}>
152
153
  <Layout jobs={jobs} version={version}>
154
+ <Container className={css.metricChangeLegendContainer}>
155
+ <FlexStack justifyContent="flex-end">
156
+ <MetricChangeLegend />
157
+ </FlexStack>
158
+ </Container>
153
159
  <Container className={css.summaryContainer}>
154
160
  <Summary
155
161
  data={jobs[0].summary}
@@ -17,11 +17,16 @@
17
17
  border-bottom: 1px solid var(--color-outline);
18
18
  }
19
19
 
20
- .summaryContainer {
20
+ .metricChangeLegendContainer {
21
21
  padding-top: var(--space-small);
22
22
  padding-bottom: var(--space-xxsmall);
23
23
  }
24
24
 
25
+ .summaryContainer {
26
+ padding-top: var(--space-xxsmall);
27
+ padding-bottom: var(--space-xxsmall);
28
+ }
29
+
25
30
  .tabsContainer {
26
31
  border-bottom: 1px solid var(--color-outline);
27
32
  background: var(--color-light);
@@ -32,11 +37,13 @@
32
37
  }
33
38
 
34
39
  .tabActive {
35
- color: var(--color-primary);
40
+ color: var(--color-accent);
41
+ transition: var(--transition-in);
36
42
  }
37
43
 
38
44
  .tabActive::after {
39
- background: currentColor;
45
+ opacity: 1;
46
+ transition: var(--transition-in);
40
47
  }
41
48
 
42
49
  .tabsContent {
@@ -52,7 +59,8 @@
52
59
 
53
60
  .header {
54
61
  position: fixed;
55
- z-index: calc(var(--layer-xhigh) + 2);
62
+ /** above the sticky tabs, entry info and the entry info overlays */
63
+ z-index: calc(var(--layer-xhigh) + 3);
56
64
  left: 0;
57
65
  top: 0;
58
66
  right: 0;
@@ -62,6 +70,7 @@
62
70
  .tabsContainer {
63
71
  position: sticky;
64
72
  top: var(--header-height);
65
- z-index: calc(var(--layer-high));
73
+ /** above the overlays (tooltips, hovercards, dropdowns) */
74
+ z-index: var(--layer-xhigh);
66
75
  }
67
76
  }
@@ -11,14 +11,12 @@
11
11
  border-radius: 50%;
12
12
  opacity: 0.8;
13
13
  color: var(--color-text-ultra-dark);
14
- transition: var(--transition-out);
15
14
  }
16
15
 
17
- .toolsGitHub:hover,
18
16
  .toolsGitHub:focus,
17
+ .toolsGitHub:hover,
19
18
  .toolsGitHub:active {
20
19
  opacity: 1;
21
- transition: var(--transition-in);
22
20
  }
23
21
 
24
22
  .toolsGitHubIcon {
@@ -1,6 +1,5 @@
1
1
  .notPredictive {
2
- margin-right: var(--space-xxsmall);
3
- display: inline-block;
2
+ flex: 0 0 auto;
4
3
  width: var(--space-small);
5
4
  height: var(--space-small);
6
5
  }
@@ -13,20 +12,22 @@
13
12
  max-width: 480px;
14
13
  }
15
14
 
16
- .metaTags {
17
- display: inline;
18
- margin-right: var(--space-xxxsmall);
15
+ .link {
16
+ flex: 1 1 auto;
19
17
  }
20
18
 
21
- .metaTag + .metaTag {
22
- margin-left: calc(var(--space-xxxsmall) / 2);
19
+ .tags {
20
+ flex: 0 0 auto;
21
+ display: inline-flex;
22
+ gap: 1px;
23
23
  }
24
24
 
25
- .metaTags:empty {
25
+ .tags:empty {
26
26
  display: none;
27
27
  }
28
28
 
29
- .nameText {
30
- display: inline-block;
29
+ .name {
30
+ flex: 1 1 auto;
31
31
  vertical-align: middle;
32
+ text-decoration: inherit;
32
33
  }
@@ -1,5 +1,6 @@
1
1
  import React, { ElementType } from 'react';
2
2
 
3
+ import { FlexStack } from '../../layout/flex-stack';
3
4
  import { Icon } from '../../ui/icon';
4
5
  import { FileName } from '../../ui/file-name';
5
6
  import { HoverCard } from '../../ui/hover-card';
@@ -24,7 +25,7 @@ export const AssetName = (props: AssetNameProps) => {
24
25
  const { label, isNotPredictive, runs, isChunk, isEntry, isInitial } = row;
25
26
 
26
27
  return (
27
- <span className={className}>
28
+ <FlexStack as="span" inline alignItems="center" gap="xxxsmall" className={className}>
28
29
  {isNotPredictive && (
29
30
  <HoverCard
30
31
  label={<Icon className={css.notPredictiveIcon} glyph={Icon.ICONS.WARNING} />}
@@ -35,25 +36,27 @@ export const AssetName = (props: AssetNameProps) => {
35
36
  </HoverCard>
36
37
  )}
37
38
 
38
- <EntryComponentLink entryId={row.key} className={css.name}>
39
- <span className={css.metaTags}>
39
+ <FlexStack
40
+ as={EntryComponentLink}
41
+ entryId={row.key}
42
+ inline
43
+ alignItems="center"
44
+ gap="xxxsmall"
45
+ className={css.link}
46
+ >
47
+ <span className={css.tags}>
40
48
  {isEntry && (
41
- <AssetMetaTag className={css.metaTag} title="Entrypoint" tag="entry" status={isEntry} />
49
+ <AssetMetaTag className={css.tag} title="Entrypoint" tag="entry" status={isEntry} />
42
50
  )}
43
51
  {isInitial && (
44
- <AssetMetaTag
45
- className={css.metaTag}
46
- title="Initial"
47
- tag="initial"
48
- status={isInitial}
49
- />
52
+ <AssetMetaTag className={css.tag} title="Initial" tag="initial" status={isInitial} />
50
53
  )}
51
54
  {isChunk && (
52
- <AssetMetaTag className={css.metaTag} title="Chunk" tag="chunk" status={isChunk} />
55
+ <AssetMetaTag className={css.tag} title="Chunk" tag="chunk" status={isChunk} />
53
56
  )}
54
57
  </span>
55
- <FileName className={css.nameText} name={label} />
56
- </EntryComponentLink>
57
- </span>
58
+ <FileName className={css.name} name={label} />
59
+ </FlexStack>
60
+ </FlexStack>
58
61
  );
59
62
  };
@@ -3,18 +3,6 @@
3
3
  max-width: 240px;
4
4
  }
5
5
 
6
- .root .assetName:hover,
7
- .root .assetName:active,
8
- .root .assetName:focus {
9
- text-decoration: none;
10
- }
11
-
12
- .root .assetName:hover .assetNameText,
13
- .root .assetName:active .assetNameText,
14
- .root .assetName:focus .assetNameText {
15
- text-decoration: underline;
16
- }
17
-
18
6
  .search {
19
7
  margin: 0;
20
8
  width: 100%;
@@ -26,6 +26,7 @@ import { MetricsTable } from '../metrics-table';
26
26
  import { MetricsTableExport } from '../metrics-table-export';
27
27
  import { MetricsTableOptions } from '../metrics-table-options';
28
28
  import { MetricsTableTitle } from '../metrics-table-title';
29
+ import { MetricsTableRowCount } from '../metrics-table-row-count';
29
30
  import { MetricsDisplaySelector } from '../metrics-display-selector';
30
31
  import { MetricsTableHeader } from '../metrics-table-header';
31
32
  import { MetricsTreemap, getTreemapNodes, getTreemapNodesGroupedByPath } from '../metrics-treemap';
@@ -164,7 +165,7 @@ export const BundleAssets = (props: BundleAssetsProps) => {
164
165
  () => (
165
166
  <MetricsTableTitle
166
167
  title={I18N.ASSETS}
167
- info={`${items.length}/${totalRowCount}`}
168
+ info={<MetricsTableRowCount count={items.length} total={totalRowCount} />}
168
169
  popoverInfo={I18N.ASSETS_INFO}
169
170
  popoverHref={config.documentation.assets}
170
171
  />
@@ -205,6 +206,11 @@ export const BundleAssets = (props: BundleAssetsProps) => {
205
206
  [EntryComponentLink],
206
207
  );
207
208
 
209
+ const handleRowClick = useCallback(
210
+ (row: ReportMetricRow) => showEntryInfo(row.key),
211
+ [showEntryInfo],
212
+ );
213
+
208
214
  const emptyMessage = useMemo(
209
215
  () => (
210
216
  <EmptySet
@@ -276,6 +282,7 @@ export const BundleAssets = (props: BundleAssetsProps) => {
276
282
  runs={jobs}
277
283
  items={items}
278
284
  renderRowHeader={renderRowHeader}
285
+ onRowClick={handleRowClick}
279
286
  emptyMessage={emptyMessage}
280
287
  showHeaderSum
281
288
  title={metricsTableTitle}
@@ -75,12 +75,14 @@ export const BundleAssets = (props: BundleAssetsProps) => {
75
75
  return { rows: result, totalRowCount: result.length };
76
76
  }, [jobs]);
77
77
 
78
+ const getRowFilter = useMemo(() => generateGetRowFilter({ chunkIds }), [chunkIds]);
79
+
78
80
  // Filter rows
79
81
  const filteredRows = useRowsFilter({
80
82
  rows,
81
83
  searchPattern: searchProps.searchPattern,
82
84
  filters: searchProps.filters,
83
- getRowFilter: generateGetRowFilter({ chunkIds }),
85
+ getRowFilter,
84
86
  });
85
87
 
86
88
  // Sort rows
@@ -72,6 +72,10 @@ export const BundleAssetsTotals = ({
72
72
  [history],
73
73
  );
74
74
 
75
+ const handleItemClick = onTreemapItemClick || handleMetricsTreemapItemClick;
76
+
77
+ const handleRowClick = useCallback((row) => handleItemClick(row.key), [handleItemClick]);
78
+
75
79
  const exportDialog = useDialogState();
76
80
  const [exportSourceType, setExportSourceType] = useState(undefined);
77
81
 
@@ -98,6 +102,7 @@ export const BundleAssetsTotals = ({
98
102
  runs={jobs}
99
103
  items={items}
100
104
  renderRowHeader={renderRowHeader}
105
+ onRowClick={handleRowClick}
101
106
  showHeaderSum
102
107
  {...restProps}
103
108
  />
@@ -112,10 +117,7 @@ export const BundleAssetsTotals = ({
112
117
  rows={items}
113
118
  />
114
119
  </Table>
115
- <MetricsTreemap
116
- treeNodes={getTreemapNodes(items)}
117
- onItemClick={onTreemapItemClick || handleMetricsTreemapItemClick}
118
- />
120
+ <MetricsTreemap treeNodes={getTreemapNodes(items)} onItemClick={handleItemClick} />
119
121
  </>
120
122
  )}
121
123
  </Box>
@@ -12,8 +12,7 @@
12
12
  }
13
13
 
14
14
  .nameTagDuplicated {
15
- margin-right: var(--space-xxxsmall);
16
- vertical-align: baseline;
15
+ flex: 0 0 auto;
17
16
  }
18
17
 
19
18
  .nameTagDuplicated::before {
@@ -21,18 +20,5 @@
21
20
  }
22
21
 
23
22
  .nameText {
24
- display: inline-block;
25
- vertical-align: middle;
26
- }
27
-
28
- .root .name:hover,
29
- .root .name:active,
30
- .root .name:focus {
31
- text-decoration: none;
32
- }
33
-
34
- .root .name:hover .nameText,
35
- .root .name:active .nameText,
36
- .root .name:focus .nameText {
37
- text-decoration: underline;
23
+ flex: 1 1 auto;
38
24
  }
@@ -36,6 +36,7 @@ import { MetricsTreemap, getTreemapNodes, getTreemapNodesGroupedByPath } from '.
36
36
  import { MetricsTableOptions } from '../metrics-table-options';
37
37
  import { MetricsDisplaySelector } from '../metrics-display-selector';
38
38
  import { MetricsTableTitle } from '../metrics-table-title';
39
+ import { MetricsTableRowCount } from '../metrics-table-row-count';
39
40
  import { ModuleInfo } from '../module-info';
40
41
  import { generateFilterFieldsData } from './bundle-modules.utils';
41
42
  import * as I18N_MODULES from './bundle-modules.i18n';
@@ -57,12 +58,12 @@ const RowHeader = (props: RowHeaderProps) => {
57
58
  const moduleRow = row as ReportMetricModuleRow;
58
59
 
59
60
  return (
60
- <EntryComponentLink entryId={row.key} className={css.name}>
61
+ <FlexStack as={EntryComponentLink} entryId={row.key} inline alignItems="center" gap="xxxsmall">
61
62
  {moduleRow.duplicated && (
62
63
  <Tag className={css.nameTagDuplicated} size="small" kind={Tag.KINDS.DANGER} />
63
64
  )}
64
65
  <FileName className={css.nameText} name={moduleRow.label} />
65
- </EntryComponentLink>
66
+ </FlexStack>
66
67
  );
67
68
  };
68
69
 
@@ -228,7 +229,7 @@ export const BundleModules = (props: BundleModulesProps) => {
228
229
  () => (
229
230
  <MetricsTableTitle
230
231
  title={I18N.MODULES}
231
- info={`${items.length}/${totalRowCount}`}
232
+ info={<MetricsTableRowCount count={items.length} total={totalRowCount} />}
232
233
  popoverInfo={I18N.MODULES_INFO}
233
234
  popoverHref={config.documentation.modules}
234
235
  />
@@ -241,6 +242,11 @@ export const BundleModules = (props: BundleModulesProps) => {
241
242
  [EntryComponentLink],
242
243
  );
243
244
 
245
+ const handleRowClick = useCallback(
246
+ (row: ReportMetricRow) => showEntryInfo(row.key),
247
+ [showEntryInfo],
248
+ );
249
+
244
250
  const emptyMessage = useMemo(
245
251
  () => (
246
252
  <EmptySet
@@ -348,6 +354,7 @@ export const BundleModules = (props: BundleModulesProps) => {
348
354
  items={items}
349
355
  runs={jobs}
350
356
  renderRowHeader={renderRowHeader}
357
+ onRowClick={handleRowClick}
351
358
  emptyMessage={emptyMessage}
352
359
  showHeaderSum
353
360
  title={metricsTableTitle}
@@ -116,11 +116,13 @@ export const BundleModules = (props: BundleModulesProps) => {
116
116
  };
117
117
  }, [jobs, moduleMetric]);
118
118
 
119
+ const getRowFilter = useMemo(() => generateGetRowFilter({ chunkIds }), [chunkIds]);
120
+
119
121
  const filteredRows = useRowsFilter({
120
122
  rows,
121
123
  searchPattern: searchParams.searchPattern,
122
124
  filters: searchParams.filters,
123
- getRowFilter: generateGetRowFilter({ chunkIds }),
125
+ getRowFilter,
124
126
  }) as Array<ReportMetricModuleRow>;
125
127
 
126
128
  const sortParams = useRowsSort({
@@ -22,6 +22,7 @@ import { MetricsTableExport } from '../metrics-table-export';
22
22
  import { MetricsTableHeader } from '../metrics-table-header';
23
23
  import { MetricsTableOptions } from '../metrics-table-options';
24
24
  import { MetricsTableTitle } from '../metrics-table-title';
25
+ import { MetricsTableRowCount } from '../metrics-table-row-count';
25
26
  import { PackageInfo } from '../package-info';
26
27
  import { SEARCH_PLACEHOLDER } from './bundle-packages.i18n';
27
28
  import css from './bundle-packages.module.css';
@@ -48,7 +49,14 @@ const getDropdownFilters = ({ compareMode, filters }) => ({
48
49
 
49
50
  const PackageName = ({ row, packageName, showDetails, EntryComponentLink }) => {
50
51
  return (
51
- <EntryComponentLink entryId={showDetails ? row.key : packageName} className={css.packageName}>
52
+ <FlexStack
53
+ as={EntryComponentLink}
54
+ entryId={showDetails ? row.key : packageName}
55
+ inline
56
+ alignItems="center"
57
+ gap="xxxsmall"
58
+ className={css.packageName}
59
+ >
52
60
  {showDetails && row.duplicate && (
53
61
  <Tag
54
62
  className={css.packageNameTagDuplicate}
@@ -58,7 +66,7 @@ const PackageName = ({ row, packageName, showDetails, EntryComponentLink }) => {
58
66
  />
59
67
  )}
60
68
  <span className={css.packageNameLabel}>{packageName}</span>
61
- </EntryComponentLink>
69
+ </FlexStack>
62
70
  );
63
71
  };
64
72
 
@@ -217,7 +225,7 @@ export const BundlePackages = (props) => {
217
225
  () => (
218
226
  <MetricsTableTitle
219
227
  title={I18N.PACKAGES}
220
- info={`${items.length}/${totalRowCount}`}
228
+ info={<MetricsTableRowCount count={items.length} total={totalRowCount} />}
221
229
  popoverInfo={I18N.PACKAGES_INFO}
222
230
  popoverHref={config.documentation.packages}
223
231
  />
@@ -249,6 +257,8 @@ export const BundlePackages = (props) => {
249
257
  [PackageNameCustomComponentLink],
250
258
  );
251
259
 
260
+ const handleRowClick = useCallback((row) => showEntryInfo(row.key), [showEntryInfo]);
261
+
252
262
  const emptyMessage = useMemo(
253
263
  () => (
254
264
  <EmptySet
@@ -320,6 +330,7 @@ export const BundlePackages = (props) => {
320
330
  items={items}
321
331
  emptyMessage={emptyMessage}
322
332
  renderRowHeader={renderRowHeader}
333
+ onRowClick={handleRowClick}
323
334
  showHeaderSum
324
335
  title={metricsTableTitle}
325
336
  sort={sort}
@@ -12,8 +12,20 @@
12
12
  }
13
13
 
14
14
  .packageName {
15
- display: inline-block;
16
15
  color: var(--color-text-light);
16
+ text-decoration: none;
17
+ }
18
+
19
+ .packageNameTagDuplicate {
20
+ flex: 0 0 auto;
21
+ }
22
+
23
+ .packageNameTagDuplicate::before {
24
+ content: 'd';
25
+ }
26
+
27
+ .packageNameLabel {
28
+ flex: 1 1 auto;
17
29
  }
18
30
 
19
31
  .packageName:last-child {
@@ -25,29 +37,13 @@
25
37
  margin: 0 var(--space-xxxsmall);
26
38
  content: '/';
27
39
  color: var(--color-text-ultra-light);
40
+ text-decoration: none;
28
41
  }
29
42
 
30
- .packageNameTagDuplicate {
31
- margin-right: var(--space-xxxsmall);
32
- vertical-align: middle;
33
- }
34
-
35
- .packageNameLabel {
36
- vertical-align: middle;
37
- }
38
-
39
- .packageNameTagDuplicate::before {
40
- content: 'd';
41
- }
42
-
43
- .root .packageName:hover,
44
- .root .packageName:active,
45
- .root .packageName:focus {
46
- text-decoration: none;
43
+ .packageName:hover {
44
+ text-decoration: none !important;
47
45
  }
48
46
 
49
- .root .packageName:hover .packageNameLabel,
50
- .root .packageName:active .packageNameLabel,
51
- .root .packageName:focus .packageNameLabel {
52
- text-decoration: underline;
47
+ .packageName:hover .packageNameLabel {
48
+ text-decoration: underline !important;
53
49
  }
@@ -8,16 +8,16 @@
8
8
  color: var(--color-info);
9
9
  }
10
10
 
11
- .HIGH_NEGATIVE {
12
- color: var(--color-red-dark);
11
+ .LOW_NEGATIVE {
12
+ color: var(--color-red-light);
13
13
  }
14
14
 
15
15
  .NEGATIVE {
16
- color: var(--color-red-dark);
16
+ color: var(--color-red);
17
17
  }
18
18
 
19
- .LOW_NEGATIVE {
20
- color: var(--color-red-light);
19
+ .HIGH_NEGATIVE {
20
+ color: var(--color-red-dark);
21
21
  }
22
22
 
23
23
  .LOW_POSITIVE {
@@ -25,7 +25,7 @@
25
25
  }
26
26
 
27
27
  .POSITIVE {
28
- color: var(--color-green-dark);
28
+ color: var(--color-green);
29
29
  }
30
30
 
31
31
  .HIGH_POSITIVE {
@@ -43,24 +43,25 @@
43
43
  background: var(--color-info-light);
44
44
  }
45
45
 
46
- .inverted.HIGH_NEGATIVE {
47
- background: var(--color-red-dark);
46
+ .inverted.LOW_NEGATIVE {
47
+ background: var(--color-red-light);
48
48
  }
49
49
 
50
50
  .inverted.NEGATIVE {
51
- background: var(--color-red-dark);
51
+ background: var(--color-red);
52
52
  }
53
53
 
54
- .inverted.LOW_NEGATIVE {
55
- background: var(--color-red-light);
54
+ .inverted.HIGH_NEGATIVE {
55
+ background: var(--color-red-dark);
56
56
  }
57
57
 
58
+
58
59
  .inverted.LOW_POSITIVE {
59
60
  background: var(--color-green-light);
60
61
  }
61
62
 
62
63
  .inverted.POSITIVE {
63
- background: var(--color-green-dark);
64
+ background: var(--color-green);
64
65
  }
65
66
 
66
67
  .inverted.HIGH_POSITIVE {