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

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 (451) hide show
  1. package/globals.d.ts +4 -0
  2. package/lib/app/app.js +21 -9
  3. package/lib/app/app.js.map +1 -1
  4. package/lib/assets/icons.svg +5 -0
  5. package/lib/assets/icons.svg.js +4 -0
  6. package/lib/assets/icons.svg.js.map +1 -1
  7. package/lib/components/asset-info/asset-info.js +43 -44
  8. package/lib/components/asset-info/asset-info.js.map +1 -1
  9. package/lib/components/asset-info/asset-info.module.css +18 -6
  10. package/lib/components/asset-info/index.js.map +1 -1
  11. package/lib/components/asset-not-predictive/asset-not-predictive.js +28 -0
  12. package/lib/components/asset-not-predictive/asset-not-predictive.js.map +1 -0
  13. package/lib/components/asset-not-predictive/asset-not-predictive.module.css +3 -0
  14. package/lib/components/asset-not-predictive/index.js +18 -0
  15. package/lib/components/asset-not-predictive/index.js.map +1 -0
  16. package/lib/components/bundle-assets/bundle-assets.js +17 -25
  17. package/lib/components/bundle-assets/bundle-assets.js.map +1 -1
  18. package/lib/components/bundle-assets/bundle-assets.module.css +13 -20
  19. package/lib/components/bundle-assets-totals-chart-bars/bundle-assets-totals-chart-bars.js +7 -5
  20. package/lib/components/bundle-assets-totals-chart-bars/bundle-assets-totals-chart-bars.js.map +1 -1
  21. package/lib/components/bundle-modules/bundle-modules.js +1 -2
  22. package/lib/components/bundle-modules/bundle-modules.js.map +1 -1
  23. package/lib/components/bundle-modules/bundle-modules.module.css +5 -0
  24. package/lib/components/bundle-packages/bundle-packages.js +14 -45
  25. package/lib/components/bundle-packages/bundle-packages.js.map +1 -1
  26. package/lib/components/bundle-packages/bundle-packages.module.css +4 -0
  27. package/lib/components/delta/delta.module.css +2 -1
  28. package/lib/components/entry-info/entry-info.js +46 -0
  29. package/lib/components/entry-info/entry-info.js.map +1 -0
  30. package/lib/components/entry-info/entry-info.module.css +33 -0
  31. package/lib/components/{summary-item → entry-info}/index.js +1 -1
  32. package/lib/components/entry-info/index.js.map +1 -0
  33. package/lib/components/index.js +7 -3
  34. package/lib/components/index.js.map +1 -1
  35. package/lib/components/insight-icon/index.js +18 -0
  36. package/lib/components/insight-icon/index.js.map +1 -0
  37. package/lib/components/insight-icon/insight-icon.js +25 -0
  38. package/lib/components/insight-icon/insight-icon.js.map +1 -0
  39. package/lib/components/insight-icon/insight-icon.module.css +24 -0
  40. package/lib/components/insights/insights.js +6 -39
  41. package/lib/components/insights/insights.js.map +1 -1
  42. package/lib/components/insights/insights.module.css +1 -19
  43. package/lib/components/metric/index.js.map +1 -1
  44. package/lib/components/metric/metric.js +7 -64
  45. package/lib/components/metric/metric.js.map +1 -1
  46. package/lib/components/metric/metric.module.css +3 -3
  47. package/lib/components/metric-run-info/index.js +18 -0
  48. package/lib/components/metric-run-info/index.js.map +1 -0
  49. package/lib/components/metric-run-info/metric-run-info.js +64 -0
  50. package/lib/components/metric-run-info/metric-run-info.js.map +1 -0
  51. package/lib/components/metric-run-info/metric-run-info.module.css +18 -0
  52. package/lib/components/metrics-table-options/metrics-table-options.js +1 -1
  53. package/lib/components/metrics-table-options/metrics-table-options.js.map +1 -1
  54. package/lib/components/metrics-table-search/metrics-table-search.module.css +0 -6
  55. package/lib/components/metrics-table-title/metrics-table-title.module.css +1 -0
  56. package/lib/components/module-info/index.js.map +1 -1
  57. package/lib/components/module-info/module-info.js +46 -47
  58. package/lib/components/module-info/module-info.js.map +1 -1
  59. package/lib/components/module-info/module-info.module.css +4 -6
  60. package/lib/components/package-info/index.js +18 -0
  61. package/lib/components/package-info/index.js.map +1 -0
  62. package/lib/components/package-info/package-info.js +71 -0
  63. package/lib/components/package-info/package-info.js.map +1 -0
  64. package/lib/components/package-info/package-info.module.css +13 -0
  65. package/lib/components/run-info/index.js +18 -0
  66. package/lib/components/run-info/index.js.map +1 -0
  67. package/lib/components/run-info/run-info.js +70 -0
  68. package/lib/components/run-info/run-info.js.map +1 -0
  69. package/{src/components/summary-item/summary-item.module.css → lib/components/run-info/run-info.module.css} +14 -19
  70. package/lib/components/summary/index.js.map +1 -1
  71. package/lib/components/summary/summary.js +10 -30
  72. package/lib/components/summary/summary.js.map +1 -1
  73. package/lib/components/summary/summary.module.css +17 -6
  74. package/lib/constants.js +1 -23
  75. package/lib/constants.js.map +1 -1
  76. package/lib/css/variables.css +17 -13
  77. package/lib/layout/box/box.js +3 -23
  78. package/lib/layout/box/box.js.map +1 -1
  79. package/lib/layout/box/box.module.css +11 -0
  80. package/lib/layout/box/index.js +15 -3
  81. package/lib/layout/box/index.js.map +1 -1
  82. package/lib/layout/flex-stack/flex-stack.js +3 -19
  83. package/lib/layout/flex-stack/flex-stack.js.map +1 -1
  84. package/lib/layout/flex-stack/index.js.map +1 -1
  85. package/lib/layout/stack/index.js.map +1 -1
  86. package/lib/layout/stack/stack.js +3 -16
  87. package/lib/layout/stack/stack.js.map +1 -1
  88. package/lib/tokens.js +38 -0
  89. package/lib/tokens.js.map +1 -0
  90. package/lib/ui/alert/alert.js +2 -12
  91. package/lib/ui/alert/alert.js.map +1 -1
  92. package/lib/ui/alert/index.js.map +1 -1
  93. package/lib/ui/container/container.js +1 -10
  94. package/lib/ui/container/container.js.map +1 -1
  95. package/lib/ui/container/index.js +15 -3
  96. package/lib/ui/container/index.js.map +1 -1
  97. package/lib/ui/dropdown/dropdown.module.css +1 -2
  98. package/lib/ui/file-name/file-name.js +1 -1
  99. package/lib/ui/file-name/file-name.js.map +1 -1
  100. package/lib/ui/filters/filters.module.css +1 -5
  101. package/lib/ui/hover-card/hover-card.js +1 -1
  102. package/lib/ui/icon/icon.js +1 -0
  103. package/lib/ui/icon/icon.js.map +1 -1
  104. package/lib/ui/index.js +1 -3
  105. package/lib/ui/index.js.map +1 -1
  106. package/lib/ui/input/input.module.css +3 -4
  107. package/lib/ui/table/index.js.map +1 -1
  108. package/lib/ui/table/table.js +3 -17
  109. package/lib/ui/table/table.js.map +1 -1
  110. package/lib/ui/tag/index.js.map +1 -1
  111. package/lib/ui/tag/tag.js +5 -29
  112. package/lib/ui/tag/tag.js.map +1 -1
  113. package/lib/ui/tag/tag.module.css +15 -1
  114. package/lib/ui/tooltip/index.js.map +1 -1
  115. package/lib/ui/tooltip/tooltip.js +3 -23
  116. package/lib/ui/tooltip/tooltip.js.map +1 -1
  117. package/lib/ui/tooltip/tooltip.module.css +4 -4
  118. package/lib-esm/app/app.js +22 -10
  119. package/lib-esm/app/app.js.map +1 -1
  120. package/lib-esm/assets/icons.svg +5 -0
  121. package/lib-esm/assets/icons.svg.js +4 -0
  122. package/lib-esm/assets/icons.svg.js.map +1 -1
  123. package/lib-esm/components/asset-info/asset-info.js +22 -45
  124. package/lib-esm/components/asset-info/asset-info.js.map +1 -1
  125. package/lib-esm/components/asset-info/asset-info.module.css +18 -6
  126. package/lib-esm/components/asset-info/index.js.map +1 -1
  127. package/lib-esm/components/asset-not-predictive/asset-not-predictive.js +21 -0
  128. package/lib-esm/components/asset-not-predictive/asset-not-predictive.js.map +1 -0
  129. package/lib-esm/components/asset-not-predictive/asset-not-predictive.module.css +3 -0
  130. package/lib-esm/components/asset-not-predictive/index.js +2 -0
  131. package/lib-esm/components/asset-not-predictive/index.js.map +1 -0
  132. package/lib-esm/components/bundle-assets/bundle-assets.js +17 -25
  133. package/lib-esm/components/bundle-assets/bundle-assets.js.map +1 -1
  134. package/lib-esm/components/bundle-assets/bundle-assets.module.css +13 -20
  135. package/lib-esm/components/bundle-assets-totals-chart-bars/bundle-assets-totals-chart-bars.js +6 -6
  136. package/lib-esm/components/bundle-assets-totals-chart-bars/bundle-assets-totals-chart-bars.js.map +1 -1
  137. package/lib-esm/components/bundle-modules/bundle-modules.js +1 -2
  138. package/lib-esm/components/bundle-modules/bundle-modules.js.map +1 -1
  139. package/lib-esm/components/bundle-modules/bundle-modules.module.css +5 -0
  140. package/lib-esm/components/bundle-packages/bundle-packages.js +15 -46
  141. package/lib-esm/components/bundle-packages/bundle-packages.js.map +1 -1
  142. package/lib-esm/components/bundle-packages/bundle-packages.module.css +4 -0
  143. package/lib-esm/components/delta/delta.module.css +2 -1
  144. package/lib-esm/components/entry-info/entry-info.js +40 -0
  145. package/lib-esm/components/entry-info/entry-info.js.map +1 -0
  146. package/lib-esm/components/entry-info/entry-info.module.css +33 -0
  147. package/lib-esm/components/entry-info/index.js +2 -0
  148. package/lib-esm/components/entry-info/index.js.map +1 -0
  149. package/lib-esm/components/index.js +3 -1
  150. package/lib-esm/components/index.js.map +1 -1
  151. package/lib-esm/components/insight-icon/index.js +2 -0
  152. package/lib-esm/components/insight-icon/index.js.map +1 -0
  153. package/lib-esm/components/insight-icon/insight-icon.js +18 -0
  154. package/lib-esm/components/insight-icon/insight-icon.js.map +1 -0
  155. package/lib-esm/components/insight-icon/insight-icon.module.css +24 -0
  156. package/lib-esm/components/insights/insights.js +7 -40
  157. package/lib-esm/components/insights/insights.js.map +1 -1
  158. package/lib-esm/components/insights/insights.module.css +1 -19
  159. package/lib-esm/components/metric/index.js.map +1 -1
  160. package/lib-esm/components/metric/metric.js +7 -41
  161. package/lib-esm/components/metric/metric.js.map +1 -1
  162. package/lib-esm/components/metric/metric.module.css +3 -3
  163. package/lib-esm/components/metric-run-info/index.js +2 -0
  164. package/lib-esm/components/metric-run-info/index.js.map +1 -0
  165. package/lib-esm/components/metric-run-info/metric-run-info.js +34 -0
  166. package/lib-esm/components/metric-run-info/metric-run-info.js.map +1 -0
  167. package/lib-esm/components/metric-run-info/metric-run-info.module.css +18 -0
  168. package/lib-esm/components/metrics-table-options/metrics-table-options.js +1 -1
  169. package/lib-esm/components/metrics-table-options/metrics-table-options.js.map +1 -1
  170. package/lib-esm/components/metrics-table-search/metrics-table-search.module.css +0 -6
  171. package/lib-esm/components/metrics-table-title/metrics-table-title.module.css +1 -0
  172. package/lib-esm/components/module-info/index.js.map +1 -1
  173. package/lib-esm/components/module-info/module-info.js +25 -48
  174. package/lib-esm/components/module-info/module-info.js.map +1 -1
  175. package/lib-esm/components/module-info/module-info.module.css +4 -6
  176. package/lib-esm/components/package-info/index.js +2 -0
  177. package/lib-esm/components/package-info/index.js.map +1 -0
  178. package/lib-esm/components/package-info/package-info.js +42 -0
  179. package/lib-esm/components/package-info/package-info.js.map +1 -0
  180. package/lib-esm/components/package-info/package-info.module.css +13 -0
  181. package/lib-esm/components/run-info/index.js +2 -0
  182. package/lib-esm/components/run-info/index.js.map +1 -0
  183. package/lib-esm/components/run-info/run-info.js +40 -0
  184. package/lib-esm/components/run-info/run-info.js.map +1 -0
  185. package/lib-esm/components/{summary-item/summary-item.module.css → run-info/run-info.module.css} +14 -19
  186. package/lib-esm/components/summary/index.js.map +1 -1
  187. package/lib-esm/components/summary/summary.js +9 -29
  188. package/lib-esm/components/summary/summary.js.map +1 -1
  189. package/lib-esm/components/summary/summary.module.css +17 -6
  190. package/lib-esm/constants.js +0 -22
  191. package/lib-esm/constants.js.map +1 -1
  192. package/lib-esm/css/variables.css +17 -13
  193. package/lib-esm/layout/box/box.js +3 -23
  194. package/lib-esm/layout/box/box.js.map +1 -1
  195. package/lib-esm/layout/box/box.module.css +11 -0
  196. package/lib-esm/layout/box/index.js +1 -1
  197. package/lib-esm/layout/box/index.js.map +1 -1
  198. package/lib-esm/layout/flex-stack/flex-stack.js +3 -19
  199. package/lib-esm/layout/flex-stack/flex-stack.js.map +1 -1
  200. package/lib-esm/layout/flex-stack/index.js.map +1 -1
  201. package/lib-esm/layout/stack/index.js.map +1 -1
  202. package/lib-esm/layout/stack/stack.js +3 -16
  203. package/lib-esm/layout/stack/stack.js.map +1 -1
  204. package/lib-esm/tokens.js +35 -0
  205. package/lib-esm/tokens.js.map +1 -0
  206. package/lib-esm/ui/alert/alert.js +2 -12
  207. package/lib-esm/ui/alert/alert.js.map +1 -1
  208. package/lib-esm/ui/alert/index.js.map +1 -1
  209. package/lib-esm/ui/container/container.js +1 -10
  210. package/lib-esm/ui/container/container.js.map +1 -1
  211. package/lib-esm/ui/container/index.js +1 -1
  212. package/lib-esm/ui/container/index.js.map +1 -1
  213. package/lib-esm/ui/dropdown/dropdown.module.css +1 -2
  214. package/lib-esm/ui/file-name/file-name.js +1 -1
  215. package/lib-esm/ui/file-name/file-name.js.map +1 -1
  216. package/lib-esm/ui/filters/filters.module.css +1 -5
  217. package/lib-esm/ui/hover-card/hover-card.js +1 -1
  218. package/lib-esm/ui/icon/icon.js +1 -0
  219. package/lib-esm/ui/icon/icon.js.map +1 -1
  220. package/lib-esm/ui/index.js +0 -1
  221. package/lib-esm/ui/index.js.map +1 -1
  222. package/lib-esm/ui/input/input.module.css +3 -4
  223. package/lib-esm/ui/table/index.js.map +1 -1
  224. package/lib-esm/ui/table/table.js +3 -17
  225. package/lib-esm/ui/table/table.js.map +1 -1
  226. package/lib-esm/ui/tag/index.js.map +1 -1
  227. package/lib-esm/ui/tag/tag.js +4 -28
  228. package/lib-esm/ui/tag/tag.js.map +1 -1
  229. package/lib-esm/ui/tag/tag.module.css +15 -1
  230. package/lib-esm/ui/tooltip/index.js.map +1 -1
  231. package/lib-esm/ui/tooltip/tooltip.js +3 -23
  232. package/lib-esm/ui/tooltip/tooltip.js.map +1 -1
  233. package/lib-esm/ui/tooltip/tooltip.module.css +4 -4
  234. package/package.json +14 -18
  235. package/src/app/app.jsx +25 -10
  236. package/src/assets/icons/more-vertical.svg +5 -0
  237. package/src/assets/icons.svg +5 -0
  238. package/src/assets/icons.svg.jsx +14 -0
  239. package/src/components/asset-info/asset-info.module.css +18 -6
  240. package/src/components/asset-info/asset-info.stories.tsx +64 -0
  241. package/src/components/asset-info/asset-info.tsx +133 -0
  242. package/src/components/asset-not-predictive/asset-not-predictive.module.css +3 -0
  243. package/src/components/asset-not-predictive/asset-not-predictive.stories.tsx +23 -0
  244. package/src/components/asset-not-predictive/asset-not-predictive.tsx +44 -0
  245. package/src/components/asset-not-predictive/index.ts +1 -0
  246. package/src/components/bundle-assets/bundle-assets.jsx +43 -53
  247. package/src/components/bundle-assets/bundle-assets.module.css +13 -20
  248. package/src/components/bundle-assets-totals-chart-bars/bundle-assets-totals-chart-bars.jsx +18 -15
  249. package/src/components/bundle-modules/bundle-modules.jsx +11 -9
  250. package/src/components/bundle-modules/bundle-modules.module.css +5 -0
  251. package/src/components/bundle-packages/bundle-packages.jsx +55 -118
  252. package/src/components/bundle-packages/bundle-packages.module.css +4 -0
  253. package/src/components/delta/delta.module.css +2 -1
  254. package/src/components/entry-info/entry-info.module.css +33 -0
  255. package/src/components/entry-info/entry-info.stories.tsx +67 -0
  256. package/src/components/entry-info/entry-info.tsx +107 -0
  257. package/src/components/entry-info/index.ts +1 -0
  258. package/src/components/index.js +3 -1
  259. package/src/components/insight-icon/index.ts +1 -0
  260. package/src/components/insight-icon/insight-icon.module.css +24 -0
  261. package/src/components/insight-icon/insight-icon.tsx +25 -0
  262. package/src/components/insights/insights.module.css +1 -19
  263. package/src/components/insights/insights.stories.tsx +26 -22
  264. package/src/components/insights/insights.tsx +8 -65
  265. package/src/components/metric/metric.module.css +3 -3
  266. package/src/components/metric/metric.stories.tsx +41 -0
  267. package/src/components/metric/metric.tsx +42 -0
  268. package/src/components/metric-run-info/index.ts +1 -0
  269. package/src/components/metric-run-info/metric-run-info.module.css +18 -0
  270. package/src/components/metric-run-info/metric-run-info.stories.tsx +34 -0
  271. package/src/components/metric-run-info/metric-run-info.tsx +85 -0
  272. package/src/components/metrics-table-options/metrics-table-options.jsx +1 -1
  273. package/src/components/metrics-table-search/metrics-table-search.module.css +0 -6
  274. package/src/components/metrics-table-title/metrics-table-title.module.css +1 -0
  275. package/src/components/module-info/module-info.module.css +4 -6
  276. package/src/components/module-info/module-info.stories.tsx +44 -0
  277. package/src/components/module-info/module-info.tsx +79 -0
  278. package/src/components/package-info/index.ts +1 -0
  279. package/src/components/package-info/package-info.module.css +13 -0
  280. package/src/components/package-info/package-info.stories.tsx +36 -0
  281. package/src/components/package-info/package-info.tsx +112 -0
  282. package/src/components/run-info/index.ts +1 -0
  283. package/{lib/components/summary-item/summary-item.module.css → src/components/run-info/run-info.module.css} +14 -19
  284. package/src/components/run-info/run-info.stories.tsx +49 -0
  285. package/src/components/run-info/run-info.tsx +108 -0
  286. package/src/components/summary/summary.module.css +17 -6
  287. package/src/components/summary/summary.stories.tsx +57 -0
  288. package/src/components/summary/summary.tsx +103 -0
  289. package/src/constants.js +0 -24
  290. package/src/css/variables.css +17 -13
  291. package/src/layout/box/box.module.css +11 -0
  292. package/src/layout/box/box.stories.tsx +49 -0
  293. package/src/layout/box/box.tsx +49 -0
  294. package/src/layout/box/index.ts +1 -0
  295. package/src/layout/flex-stack/flex-stack.stories.tsx +59 -0
  296. package/src/layout/flex-stack/flex-stack.tsx +43 -0
  297. package/src/layout/stack/stack.stories.tsx +53 -0
  298. package/src/layout/stack/stack.tsx +22 -0
  299. package/src/tokens.ts +37 -0
  300. package/src/ui/alert/alert.stories.tsx +39 -0
  301. package/src/ui/alert/alert.tsx +23 -0
  302. package/src/ui/container/container.stories.tsx +29 -0
  303. package/src/ui/container/container.tsx +18 -0
  304. package/src/ui/container/index.ts +1 -0
  305. package/src/ui/dropdown/dropdown.module.css +1 -2
  306. package/src/ui/file-name/file-name.jsx +1 -1
  307. package/src/ui/filters/filters.module.css +1 -5
  308. package/src/ui/hover-card/hover-card.jsx +1 -1
  309. package/src/ui/icon/icon.jsx +1 -0
  310. package/src/ui/index.js +0 -1
  311. package/src/ui/input/input.module.css +3 -4
  312. package/src/ui/table/table.stories.tsx +238 -0
  313. package/src/ui/table/table.tsx +38 -0
  314. package/src/ui/tag/tag.module.css +15 -1
  315. package/src/ui/tag/tag.stories.tsx +32 -0
  316. package/src/ui/tag/tag.tsx +28 -0
  317. package/src/ui/tooltip/tooltip.module.css +4 -4
  318. package/src/ui/tooltip/tooltip.stories.tsx +30 -0
  319. package/src/ui/tooltip/tooltip.tsx +56 -0
  320. package/types/app/header/header.d.ts +1 -1
  321. package/types/components/asset-info/asset-info.d.ts +18 -23
  322. package/types/components/asset-info/index.d.ts +1 -1
  323. package/types/components/asset-not-predictive/asset-not-predictive.d.ts +8 -0
  324. package/types/components/asset-not-predictive/index.d.ts +1 -0
  325. package/types/components/browsertime-table/browsertime-table.d.ts +1 -1
  326. package/types/components/bundle-assets/bundle-assets.d.ts +2 -2
  327. package/types/components/bundle-assets/index.d.ts +1 -1
  328. package/types/components/bundle-assets-totals-chart-bars/bundle-assets-totals-chart-bars.d.ts +2 -2
  329. package/types/components/bundle-assets-totals-table/bundle-assets-totals-table.d.ts +2 -2
  330. package/types/components/bundle-modules/bundle-modules.d.ts +2 -2
  331. package/types/components/bundle-modules/index.d.ts +1 -1
  332. package/types/components/bundle-packages/bundle-packages.d.ts +2 -2
  333. package/types/components/bundle-packages/index.d.ts +1 -1
  334. package/types/components/component-link.d.ts +1 -1
  335. package/types/components/delta/delta.d.ts +1 -1
  336. package/types/components/entry-info/entry-info.d.ts +18 -0
  337. package/types/components/entry-info/index.d.ts +1 -0
  338. package/types/components/index.d.ts +3 -1
  339. package/types/components/insight-icon/index.d.ts +1 -0
  340. package/types/components/insight-icon/insight-icon.d.ts +7 -0
  341. package/types/components/insights/insights.d.ts +2 -2
  342. package/types/components/job-header/job-header.d.ts +1 -1
  343. package/types/components/job-meta/job-meta.d.ts +1 -1
  344. package/types/components/job-name/job-name.d.ts +1 -1
  345. package/types/components/jobs-header/jobs-header.d.ts +1 -1
  346. package/types/components/lighthouse-table/lighthouse-table.d.ts +1 -1
  347. package/types/components/metric/index.d.ts +1 -1
  348. package/types/components/metric/metric.d.ts +6 -32
  349. package/types/components/metric-run-info/index.d.ts +1 -0
  350. package/types/components/metric-run-info/metric-run-info.d.ts +13 -0
  351. package/types/components/metrics-table/metrics-table.d.ts +1 -1
  352. package/types/components/metrics-table-options/metrics-table-options.d.ts +1 -1
  353. package/types/components/metrics-table-search/metrics-table-search.d.ts +1 -1
  354. package/types/components/metrics-table-title/metrics-table-title.d.ts +1 -1
  355. package/types/components/module-info/index.d.ts +1 -1
  356. package/types/components/module-info/module-info.d.ts +16 -34
  357. package/types/components/package-info/index.d.ts +1 -0
  358. package/types/components/package-info/package-info.d.ts +15 -0
  359. package/types/components/run-info/index.d.ts +1 -0
  360. package/types/components/run-info/run-info.d.ts +16 -0
  361. package/types/components/summary/index.d.ts +1 -1
  362. package/types/components/summary/summary.d.ts +25 -36
  363. package/types/components/total-size-type-title/total-size-type-title.d.ts +1 -1
  364. package/types/constants.d.ts +0 -11
  365. package/types/layout/box/box.d.ts +12 -25
  366. package/types/layout/box/index.d.ts +1 -1
  367. package/types/layout/flex-stack/flex-stack.d.ts +10 -33
  368. package/types/layout/flex-stack/index.d.ts +1 -1
  369. package/types/layout/footer/footer.d.ts +1 -1
  370. package/types/layout/separator.d.ts +2 -2
  371. package/types/layout/stack/index.d.ts +1 -1
  372. package/types/layout/stack/stack.d.ts +7 -20
  373. package/types/tokens.d.ts +23 -0
  374. package/types/ui/alert/alert.d.ts +7 -14
  375. package/types/ui/alert/index.d.ts +1 -1
  376. package/types/ui/container/container.d.ts +5 -17
  377. package/types/ui/container/index.d.ts +1 -1
  378. package/types/ui/dropdown/dropdown.d.ts +1 -1
  379. package/types/ui/empty-set/empty-set.d.ts +1 -1
  380. package/types/ui/file-name/file-name.d.ts +2 -2
  381. package/types/ui/filters/filters.d.ts +1 -1
  382. package/types/ui/filters/index.d.ts +1 -1
  383. package/types/ui/horizontal-bar-chart/horizontal-bar-chart.d.ts +1 -1
  384. package/types/ui/hover-card/hover-card.d.ts +1 -1
  385. package/types/ui/icon/icon.d.ts +2 -1
  386. package/types/ui/index.d.ts +0 -1
  387. package/types/ui/input/input.d.ts +1 -1
  388. package/types/ui/loader/loader.d.ts +1 -1
  389. package/types/ui/skeleton/skeleton.d.ts +1 -1
  390. package/types/ui/sort-dropdown/sort-dropdown.d.ts +1 -1
  391. package/types/ui/table/index.d.ts +1 -1
  392. package/types/ui/table/table.d.ts +14 -33
  393. package/types/ui/tabs/tabs.d.ts +1 -1
  394. package/types/ui/tag/index.d.ts +1 -1
  395. package/types/ui/tag/tag.d.ts +22 -33
  396. package/types/ui/toolbar/toolbar.d.ts +1 -1
  397. package/types/ui/tooltip/index.d.ts +1 -1
  398. package/types/ui/tooltip/tooltip.d.ts +10 -28
  399. package/lib/components/summary-item/index.js.map +0 -1
  400. package/lib/components/summary-item/summary-item.js +0 -97
  401. package/lib/components/summary-item/summary-item.js.map +0 -1
  402. package/lib/ui/panels/index.js +0 -6
  403. package/lib/ui/panels/index.js.map +0 -1
  404. package/lib/ui/panels/panels.js +0 -28
  405. package/lib/ui/panels/panels.js.map +0 -1
  406. package/lib/ui/panels/panels.module.css +0 -23
  407. package/lib-esm/components/summary-item/index.js +0 -2
  408. package/lib-esm/components/summary-item/index.js.map +0 -1
  409. package/lib-esm/components/summary-item/summary-item.js +0 -67
  410. package/lib-esm/components/summary-item/summary-item.js.map +0 -1
  411. package/lib-esm/ui/panels/index.js +0 -2
  412. package/lib-esm/ui/panels/index.js.map +0 -1
  413. package/lib-esm/ui/panels/panels.js +0 -21
  414. package/lib-esm/ui/panels/panels.js.map +0 -1
  415. package/lib-esm/ui/panels/panels.module.css +0 -23
  416. package/src/components/asset-info/asset-info.jsx +0 -96
  417. package/src/components/metric/metric.jsx +0 -63
  418. package/src/components/module-info/module-info.jsx +0 -93
  419. package/src/components/summary/summary.jsx +0 -73
  420. package/src/components/summary-item/index.js +0 -1
  421. package/src/components/summary-item/summary-item.jsx +0 -142
  422. package/src/layout/box/box.jsx +0 -67
  423. package/src/layout/box/index.js +0 -1
  424. package/src/layout/flex-stack/flex-stack.jsx +0 -49
  425. package/src/layout/stack/stack.jsx +0 -32
  426. package/src/ui/alert/alert.jsx +0 -27
  427. package/src/ui/container/container.jsx +0 -24
  428. package/src/ui/container/index.js +0 -1
  429. package/src/ui/panels/index.js +0 -1
  430. package/src/ui/panels/panels.jsx +0 -39
  431. package/src/ui/panels/panels.module.css +0 -23
  432. package/src/ui/table/table.jsx +0 -37
  433. package/src/ui/tag/tag.jsx +0 -49
  434. package/src/ui/tooltip/tooltip.jsx +0 -67
  435. package/tsconfig.esm.json +0 -13
  436. package/tsconfig.json +0 -7
  437. package/tsconfig.lib.json +0 -9
  438. package/types/components/summary-item/index.d.ts +0 -1
  439. package/types/components/summary-item/summary-item.d.ts +0 -40
  440. package/types/ui/panels/index.d.ts +0 -1
  441. package/types/ui/panels/panels.d.ts +0 -18
  442. /package/src/components/asset-info/{index.js → index.ts} +0 -0
  443. /package/src/components/metric/{index.js → index.ts} +0 -0
  444. /package/src/components/module-info/{index.js → index.ts} +0 -0
  445. /package/src/components/summary/{index.js → index.ts} +0 -0
  446. /package/src/layout/flex-stack/{index.js → index.ts} +0 -0
  447. /package/src/layout/stack/{index.js → index.ts} +0 -0
  448. /package/src/ui/alert/{index.js → index.ts} +0 -0
  449. /package/src/ui/table/{index.js → index.ts} +0 -0
  450. /package/src/ui/tag/{index.js → index.ts} +0 -0
  451. /package/src/ui/tooltip/{index.js → index.ts} +0 -0
package/src/app/app.jsx CHANGED
@@ -1,5 +1,6 @@
1
1
  import React, { useContext, useEffect, useMemo } from 'react';
2
2
  import PropTypes from 'prop-types';
3
+ import isEmpty from 'lodash/isEmpty';
3
4
  import { HashRouter, NavLink, Route, Switch, useLocation } from 'react-router-dom';
4
5
  import { COMPONENT } from '@bundle-stats/utils';
5
6
 
@@ -70,24 +71,34 @@ JobsProvider.propTypes = {
70
71
  const OverviewContent = () => {
71
72
  const { jobs } = useContext(JobsContext);
72
73
 
73
- const duplicatePackagesInsight = jobs[0].insights?.webpack?.duplicatePackagesV3;
74
- const newPackagesInsight = jobs[0].insights?.webpack?.newPackages;
74
+ const insightsByName = useMemo(() => {
75
+ const webpackInsights = jobs?.[0]?.insights?.webpack;
76
+
77
+ if (!webpackInsights) {
78
+ return null
79
+ }
80
+
81
+ const res = {
82
+ ...(webpackInsights.duplicatePackagesV3 && { duplicatePackages: webpackInsights.duplicatePackagesV3 }),
83
+ ...(webpackInsights.newPackages && { newPackages: webpackInsights.newPackages }),
84
+ };
85
+
86
+ if (isEmpty(res)) {
87
+ return null;
88
+ }
89
+
90
+ return res;
91
+ }, [jobs]);
75
92
 
76
- console.info(duplicatePackagesInsight, newPackagesInsight);
77
93
 
78
94
  return (
79
95
  <Stack space="medium">
80
- {(duplicatePackagesInsight || newPackagesInsight) && (
96
+ {insightsByName && (
81
97
  <Container>
82
98
  <Stack space="xsmall">
83
99
  <MetricsTableTitle title="Insights" />
84
100
  <Box padding="small" outline>
85
- <Insights
86
- duplicatePackages={duplicatePackagesInsight}
87
- newPackages={newPackagesInsight}
88
- summary={jobs[0].summary?.webpack}
89
- showDelta={jobs.length > 1}
90
- />
101
+ <Insights insights={insightsByName} />
91
102
  </Box>
92
103
  </Stack>
93
104
  </Container>
@@ -114,6 +125,7 @@ const AssetsContent = () => {
114
125
  keys={METRICS_WEBPACK_ASSETS}
115
126
  data={jobs?.[0]?.summary}
116
127
  showSummaryItemDelta={jobs?.length !== 1}
128
+ showSummaryItemBaseline={jobs?.length !== 1}
117
129
  />
118
130
  <Box outline>
119
131
  <BundleAssets jobs={jobs} setState={bundleStatsSetState} {...bundleStatsState} />
@@ -136,6 +148,7 @@ const ModulesContent = () => {
136
148
  keys={METRICS_WEBPACK_MODULES}
137
149
  data={jobs?.[0]?.summary}
138
150
  showSummaryItemDelta={jobs?.length !== 1}
151
+ showSummaryItemBaseline={jobs?.length !== 1}
139
152
  />
140
153
  <Box outline>
141
154
  <BundleModules jobs={jobs} setState={bundleModulesSetState} {...bundleModulesState} />
@@ -158,6 +171,7 @@ const PackagesContent = () => {
158
171
  keys={METRICS_WEBPACK_PACKAGES}
159
172
  data={jobs?.[0]?.summary}
160
173
  showSummaryItemDelta={jobs?.length !== 1}
174
+ showSummaryItemBaseline={jobs?.length !== 1}
161
175
  />
162
176
  <Box outline>
163
177
  <BundlePackages jobs={jobs} {...bundlePackagesState} setState={bundlePackagesSetState} />
@@ -187,6 +201,7 @@ const AppComponent = ({ version, jobs }) => {
187
201
  keys={METRICS_WEBPACK_GENERAL}
188
202
  data={jobs[0].summary}
189
203
  showSummaryItemDelta={jobs.length !== 1}
204
+ showSummaryItemBaseline={jobs?.length !== 1}
190
205
  />
191
206
  </Container>
192
207
 
@@ -0,0 +1,5 @@
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="1"></circle>
3
+ <circle cx="12" cy="5" r="1"></circle>
4
+ <circle cx="12" cy="19" r="1"></circle>
5
+ </svg>
@@ -40,6 +40,11 @@
40
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">
41
41
  <path d="M3 12h18M3 6h18M3 18h18"/>
42
42
  </symbol>
43
+ <symbol fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" viewBox="0 0 24 24" id="more-vertical" xmlns="http://www.w3.org/2000/svg">
44
+ <circle cx="12" cy="12" r="1"/>
45
+ <circle cx="12" cy="5" r="1"/>
46
+ <circle cx="12" cy="19" r="1"/>
47
+ </symbol>
43
48
  <symbol viewBox="0 0 24 24" fill="currentColor" id="sort" xmlns="http://www.w3.org/2000/svg">
44
49
  <path d="M3 18h6v-2H3v2zM3 6v2h18V6H3zm0 7h12v-2H3v2z"/>
45
50
  <path d="M0 0h24v24H0z" fill="none"/>
@@ -151,6 +151,20 @@ export const SvgIcons = (props) => (
151
151
  >
152
152
  <path d="M3 12h18M3 6h18M3 18h18" />
153
153
  </symbol>
154
+ <symbol
155
+ fill="none"
156
+ stroke="currentColor"
157
+ stroke-width="2"
158
+ stroke-linecap="round"
159
+ stroke-linejoin="round"
160
+ viewBox="0 0 24 24"
161
+ id="more-vertical"
162
+ xmlns="http://www.w3.org/2000/svg"
163
+ >
164
+ <circle cx="12" cy="12" r="1" />
165
+ <circle cx="12" cy="5" r="1" />
166
+ <circle cx="12" cy="19" r="1" />
167
+ </symbol>
154
168
  <symbol viewBox="0 0 24 24" fill="currentColor" id="sort" xmlns="http://www.w3.org/2000/svg">
155
169
  <path d="M3 18h6v-2H3v2zM3 6v2h18V6H3zm0 7h12v-2H3v2z" />
156
170
  <path d="M0 0h24v24H0z" fill="none" />
@@ -1,9 +1,21 @@
1
- .fileName {
2
- max-width: 100%;
3
- padding: 2px;
4
- background: var(--color-highlight-warning);
1
+ .assetNameTag {
2
+ color: var(--color-background);
5
3
  }
6
4
 
7
- .viewModules {
8
- display: block;
5
+ .assetNameTag:hover,
6
+ .assetNameTag:active,
7
+ .assetNameTag:focus {
8
+ color: var(--color-background);
9
+ }
10
+
11
+ .assetNameTagEntry {
12
+ background: var(--color-info-dark);
13
+ }
14
+
15
+ .assetNameTagInitial {
16
+ background: var(--color-info);
17
+ }
18
+
19
+ .assetNameTagChunk {
20
+ background: var(--color-info-light);
9
21
  }
@@ -0,0 +1,64 @@
1
+ import React from 'react';
2
+
3
+ import { getWrapperDecorator } from '../../stories';
4
+ import { AssetInfo } from '.';
5
+
6
+ export default {
7
+ title: 'Components/AssetInfo',
8
+ component: AssetInfo,
9
+ decorators: [getWrapperDecorator()],
10
+ };
11
+
12
+ const RUNS = [
13
+ {
14
+ name: 'static/vendor.abcd1234.js',
15
+ value: 982690,
16
+ chunkId: '1',
17
+ },
18
+ {
19
+ name: 'static/vendor.defg5678.js',
20
+ value: 1022530,
21
+ displayValue: '998.56KiB',
22
+ chunkId: '2',
23
+ },
24
+ ];
25
+
26
+ export const Default = () => (
27
+ <AssetInfo
28
+ item={{
29
+ label: 'static/vendor.js',
30
+ changed: true,
31
+ isChunk: true,
32
+ isEntry: true,
33
+ isInitial: true,
34
+ isNotPredicative: false,
35
+ runs: RUNS,
36
+ }}
37
+ labels={['Job #2', 'Job #1']}
38
+ />
39
+ );
40
+
41
+ export const WithChunks = () => (
42
+ <AssetInfo
43
+ item={{
44
+ label: 'static/vendor.js',
45
+ changed: true,
46
+ isChunk: true,
47
+ isEntry: true,
48
+ isInitial: true,
49
+ isNotPredicative: false,
50
+ runs: RUNS,
51
+ }}
52
+ chunks={[
53
+ {
54
+ id: '1',
55
+ name: 'vendor',
56
+ },
57
+ {
58
+ id: '2',
59
+ name: 'app~common~utils~shared',
60
+ },
61
+ ]}
62
+ labels={['Job #2', 'Job #1']}
63
+ />
64
+ );
@@ -0,0 +1,133 @@
1
+ import React, { useMemo } from 'react';
2
+ import cx from 'classnames';
3
+ import noop from 'lodash/noop';
4
+ import {
5
+ MetricRunInfo,
6
+ getBundleModulesByChunk,
7
+ getBundleAssetsByEntryType,
8
+ getModuleFileType,
9
+ } from '@bundle-stats/utils';
10
+ import { Asset, MetaChunk } from '@bundle-stats/utils/types/webpack';
11
+
12
+ import { FlexStack } from '../../layout/flex-stack';
13
+ import { Tag } from '../../ui/tag';
14
+ import { ComponentLink } from '../component-link';
15
+ import { EntryInfo } from '../entry-info';
16
+ import css from './asset-info.module.css';
17
+
18
+ interface ChunkModulesLinkProps {
19
+ as: React.ElementType;
20
+ chunks: Array<MetaChunk>;
21
+ chunkId: string;
22
+ name: string;
23
+ }
24
+
25
+ const ChunkModulesLink = ({
26
+ as: Component,
27
+ chunks,
28
+ chunkId,
29
+ name,
30
+ onClick,
31
+ }: ChunkModulesLinkProps & React.ComponentProps<'a'>) => {
32
+ const chunk = chunks?.find(({ id }) => id === chunkId);
33
+
34
+ if (!chunk) {
35
+ return null;
36
+ }
37
+
38
+ const chunkIds = chunks.map(({ id }) => id);
39
+ const fileType = getModuleFileType(name);
40
+
41
+ return (
42
+ <Component
43
+ className={css.viewModules}
44
+ {...getBundleModulesByChunk(chunkIds, chunkId, fileType)}
45
+ onClick={onClick}
46
+ >
47
+ View chunk modules
48
+ </Component>
49
+ );
50
+ };
51
+
52
+ interface AssetInfoProps {
53
+ item: {
54
+ label: string;
55
+ changed?: boolean;
56
+ isChunk?: boolean;
57
+ isEntry?: boolean;
58
+ isInitial?: boolean;
59
+ isNotPredicative?: boolean;
60
+ runs: Array<Asset & MetricRunInfo>;
61
+ };
62
+ chunks?: Array<MetaChunk>;
63
+ labels: Array<string>;
64
+ customComponentLink?: React.ElementType;
65
+ }
66
+
67
+ export const AssetInfo = (props: AssetInfoProps & React.ComponentProps<'div'>) => {
68
+ const {
69
+ className = '',
70
+ chunks = null,
71
+ customComponentLink: CustomComponentLink = ComponentLink,
72
+ item,
73
+ labels,
74
+ onClick = noop,
75
+ } = props;
76
+
77
+ const currentRun = item.runs?.[0];
78
+
79
+ const tags = useMemo(() => {
80
+ if (!item.isEntry && !item.isInitial && !item.isChunk) {
81
+ return null;
82
+ }
83
+
84
+ return (
85
+ <FlexStack space="xxxsmall" alignItems="center" className={css.tags}>
86
+ {item.isEntry && (
87
+ <Tag
88
+ as={CustomComponentLink}
89
+ {...getBundleAssetsByEntryType('entry')}
90
+ onClick={onClick}
91
+ className={cx(css.assetNameTag, css.assetNameTagEntry)}
92
+ >
93
+ Entrypoint
94
+ </Tag>
95
+ )}
96
+ {item.isInitial && (
97
+ <Tag
98
+ as={CustomComponentLink}
99
+ {...getBundleAssetsByEntryType('initial')}
100
+ onClick={onClick}
101
+ className={cx(css.assetNameTag, css.assetNameTagInitial)}
102
+ >
103
+ Initial
104
+ </Tag>
105
+ )}
106
+ {item.isChunk && (
107
+ <Tag
108
+ as={CustomComponentLink}
109
+ {...getBundleAssetsByEntryType('chunk')}
110
+ onClick={onClick}
111
+ className={cx(css.assetNameTag, css.assetNameTagChunk)}
112
+ >
113
+ Chunk
114
+ </Tag>
115
+ )}
116
+ </FlexStack>
117
+ );
118
+ }, [item]);
119
+
120
+ return (
121
+ <EntryInfo item={item} labels={labels} tags={tags} className={cx(css.root, className)}>
122
+ {currentRun?.chunkId && chunks && (
123
+ <ChunkModulesLink
124
+ as={CustomComponentLink}
125
+ chunks={chunks}
126
+ chunkId={currentRun?.chunkId}
127
+ name={currentRun?.name}
128
+ onClick={onClick}
129
+ />
130
+ )}
131
+ </EntryInfo>
132
+ );
133
+ };
@@ -0,0 +1,3 @@
1
+ .tableValue {
2
+ text-align: right;
3
+ }
@@ -0,0 +1,23 @@
1
+ import React from 'react';
2
+
3
+ import { AssetNotPredictive } from '.';
4
+
5
+ export default {
6
+ title: 'Components/AssetNotPredictive',
7
+ component: AssetNotPredictive,
8
+ };
9
+
10
+ export const Default = () => <AssetNotPredictive />;
11
+
12
+ const RUNS = [
13
+ {
14
+ name: 'static/vendor.abcd1234.js',
15
+ value: 1024 * 1024 - 1,
16
+ },
17
+ {
18
+ name: 'static/vendor.abcd1234.js',
19
+ value: 1024 * 1024,
20
+ },
21
+ ] as any;
22
+
23
+ export const WithRuns = () => <AssetNotPredictive runs={RUNS} labels={['Job 2', 'Job 1']} />;
@@ -0,0 +1,44 @@
1
+ import React from 'react';
2
+ import cx from 'classnames';
3
+ import type { Asset } from '@bundle-stats/utils/types/webpack';
4
+
5
+ import { Stack } from '../../layout/stack';
6
+ import { Table } from '../../ui/table';
7
+ import css from './asset-not-predictive.module.css';
8
+
9
+ interface AssetNotPredictiveProps {
10
+ runs?: Array<Asset>;
11
+ labels?: Array<string>
12
+ }
13
+
14
+ export const AssetNotPredictive = (props: AssetNotPredictiveProps & React.ComponentProps<'div'>) => {
15
+ const { className = '', runs = null, labels = null, ...restProps } = props;
16
+
17
+ return (
18
+ <Stack space="xsmall" {...restProps} className={cx(css.root, className)}>
19
+ <p className={css.text}>
20
+ Asset file name is the same, but the size has changed.
21
+ </p>
22
+ {runs && (
23
+ <Table outline compact>
24
+ <Table.THead>
25
+ <Table.Tr>
26
+ <Table.Th>&nbsp;</Table.Th>
27
+ <Table.Th>File name</Table.Th>
28
+ <Table.Th className={css.tableValue}>Size</Table.Th>
29
+ </Table.Tr>
30
+ </Table.THead>
31
+ <Table.TBody>
32
+ {runs.map(({ name, value }, index) => (
33
+ <Table.Tr key={name}>
34
+ <Table.Th>{labels?.[index]}</Table.Th>
35
+ <Table.Td>{name}</Table.Td>
36
+ <Table.Td className={css.tableValue}>{value}</Table.Td>
37
+ </Table.Tr>
38
+ ))}
39
+ </Table.TBody>
40
+ </Table>
41
+ )}
42
+ </Stack>
43
+ );
44
+ };
@@ -0,0 +1 @@
1
+ export * from './asset-not-predictive';
@@ -15,13 +15,13 @@ import { FlexStack } from '../../layout/flex-stack';
15
15
  import { Icon } from '../../ui/icon';
16
16
  import { FileName } from '../../ui/file-name';
17
17
  import { HoverCard } from '../../ui/hover-card';
18
- import { Tooltip } from '../../ui/tooltip';
19
18
  import { Tag } from '../../ui/tag';
20
19
  import { Filters } from '../../ui/filters';
21
20
  import { SortDropdown } from '../../ui/sort-dropdown';
22
21
  import { EmptySet } from '../../ui/empty-set';
23
22
  import { Toolbar } from '../../ui/toolbar';
24
23
  import { AssetInfo } from '../asset-info';
24
+ import { AssetNotPredictive } from '../asset-not-predictive';
25
25
  import { ComponentLink } from '../component-link';
26
26
  import { MetricsTable } from '../metrics-table';
27
27
  import { MetricsTableSearch } from '../metrics-table-search';
@@ -80,56 +80,27 @@ const getFilters = ({ compareMode, filters }) => ({
80
80
  },
81
81
  });
82
82
 
83
- const TooltipNotPredictive = ({ runs }) => (
84
- <div className={css.tooltipNotPredictive}>
85
- <p className={css.tooltipNotPredictiveText}>File name is the same, but the size has changed:</p>
86
- <table className={css.tooltipTable}>
87
- <tr>
88
- {runs.map(({ name, value }, index) => {
89
- const key = index;
90
- return (
91
- <tr key={key}>
92
- <th>{RUNS_LABELS[index]}</th>
93
- <td>{name}</td>
94
- <td>{value}</td>
95
- </tr>
96
- );
97
- })}
98
- </tr>
99
- </table>
100
- </div>
101
- );
102
-
103
- TooltipNotPredictive.defaultProps = {
104
- runs: [],
105
- };
106
-
107
- TooltipNotPredictive.propTypes = {
108
- runs: PropTypes.array, // eslint-disable-line react/forbid-prop-types
109
- };
110
-
111
83
  const RowHeader = ({ row, labels, chunks, CustomComponentLink }) => {
112
84
  const { label, isNotPredictive, runs, isChunk, isEntry, isInitial } = row;
113
85
  const [showHoverCard, setHoverCard] = useState(false);
114
86
  const handleOnMouseEnter = useCallback(() => setHoverCard(true), [showHoverCard]);
115
87
 
88
+ const contentIsNotPredictive = useMemo(() => {
89
+ if (!isNotPredictive) {
90
+ return null;
91
+ }
92
+
93
+ return (
94
+ <HoverCard label={<Icon className={css.notPredictiveIcon} glyph="warning" />} className={css.notPredictive} anchorClassName={css.notPredictiveAnchor}>
95
+ <AssetNotPredictive runs={runs} labels={RUNS_LABELS} />
96
+ </HoverCard>
97
+ );
98
+ }, [isNotPredictive, runs]);
99
+
116
100
  const content = useMemo(
117
101
  () => (
118
102
  <span className={css.assetName}>
119
103
  <span className={css.assetNameTags}>
120
- {isNotPredictive && (
121
- <Tooltip className={css.notPredictive} title={<TooltipNotPredictive runs={runs} />}>
122
- <Icon className={css.notPredictiveIcon} glyph="warning" />
123
- </Tooltip>
124
- )}
125
- {isChunk && (
126
- <Tag
127
- className={cx(css.assetNameTag, css.assetNameTagChunk)}
128
- title="Chunk"
129
- size={Tag.SIZES.SMALL}
130
- kind={Tag.KINDS.INFO}
131
- />
132
- )}
133
104
  {isEntry && (
134
105
  <Tag
135
106
  className={cx(css.assetNameTag, css.assetNameTagEntry)}
@@ -146,27 +117,46 @@ const RowHeader = ({ row, labels, chunks, CustomComponentLink }) => {
146
117
  kind={Tag.KINDS.INFO}
147
118
  />
148
119
  )}
120
+ {isChunk && (
121
+ <Tag
122
+ className={cx(css.assetNameTag, css.assetNameTagChunk)}
123
+ title="Chunk"
124
+ size={Tag.SIZES.SMALL}
125
+ kind={Tag.KINDS.INFO}
126
+ />
127
+ )}
149
128
  </span>
150
129
  <FileName className={css.assetNameText} name={label} />
151
130
  </span>
152
131
  ),
153
- [isChunk, isEntry, isInitial, isNotPredictive, runs],
132
+ [isChunk, isEntry, isInitial, runs],
154
133
  );
155
134
 
156
135
  if (!showHoverCard) {
157
- return <span onMouseEnter={handleOnMouseEnter}>{content}</span>;
136
+ return (
137
+ <span className={css.assetNameWrapper}>
138
+ {contentIsNotPredictive}
139
+ <span onMouseEnter={handleOnMouseEnter}>{content}</span>
140
+ </span>
141
+ );
158
142
  }
159
143
 
160
144
  return (
161
- <HoverCard label={content}>
162
- <AssetInfo
163
- className={css.assetInfo}
164
- item={row}
165
- labels={labels}
166
- chunks={chunks}
167
- CustomComponentLink={CustomComponentLink}
168
- />
169
- </HoverCard>
145
+ <span className={css.assetNameWrapper}>
146
+ {contentIsNotPredictive}
147
+ <HoverCard label={content} hoverCardClassName={css.hoverCard}>
148
+ {({ close }) => (
149
+ <AssetInfo
150
+ className={css.assetInfo}
151
+ item={row}
152
+ labels={labels}
153
+ chunks={chunks}
154
+ CustomComponentLink={CustomComponentLink}
155
+ onClick={close}
156
+ />
157
+ )}
158
+ </HoverCard>
159
+ </span>
170
160
  );
171
161
  };
172
162
 
@@ -8,6 +8,9 @@
8
8
  margin-right: -1px; /** collapse border */
9
9
  }
10
10
 
11
+ .assetNameWrapper {
12
+ }
13
+
11
14
  .assetName {}
12
15
 
13
16
  .notPredictive {
@@ -15,12 +18,12 @@
15
18
  display: inline-block;
16
19
  width: var(--space-small);
17
20
  height: var(--space-small);
18
- vertical-align: middle;
19
21
  }
20
22
 
23
+ .notPredictiveAnchor {}
24
+
21
25
  .notPredictiveIcon {
22
26
  color: var(--color-warning-dark);
23
- vertical-align: top;
24
27
  }
25
28
 
26
29
  .assetNameTags {
@@ -41,7 +44,7 @@
41
44
  }
42
45
 
43
46
  .assetNameTagEntry {
44
- background: var(--color-info-light);
47
+ background: var(--color-info-dark);
45
48
  }
46
49
 
47
50
  .assetNameTagEntry::before {
@@ -49,13 +52,17 @@
49
52
  }
50
53
 
51
54
  .assetNameTagInitial {
52
- background: var(--color-info-light);
55
+ background: var(--color-info);
53
56
  }
54
57
 
55
58
  .assetNameTagInitial::before {
56
59
  content: 'i';
57
60
  }
58
61
 
62
+ .assetNameTagChunk {
63
+ background: var(--color-info-light);
64
+ }
65
+
59
66
  .assetNameTagChunk::before {
60
67
  content: 'c';
61
68
  }
@@ -65,25 +72,11 @@
65
72
  vertical-align: middle;
66
73
  }
67
74
 
68
- /* Tooltip not predictive */
69
- .tooltipNotPredictive {
70
- text-align: left;
71
- }
72
-
73
- .tooltipNotPredictiveText {
74
- margin-bottom: var(--space-xxxsmall);
75
- }
76
-
77
- .tooltipNotPredictiveName {
78
- display: block;
79
- line-height: var(--line-height-heading);
75
+ .hoverCard {
76
+ max-width: var(--entry-info-hovercard-width);
80
77
  }
81
78
 
82
79
  .search {
83
80
  margin: 0;
84
81
  width: 100%;
85
82
  }
86
-
87
- .assetInfo {
88
- min-width: 280px;
89
- }