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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. package/lib/app/app.js +5 -13
  2. package/lib/app/app.js.map +1 -1
  3. package/lib/app/app.module.css +2 -2
  4. package/lib/assets/icons.svg +26 -20
  5. package/lib/assets/icons.svg.js +27 -23
  6. package/lib/assets/icons.svg.js.map +1 -1
  7. package/lib/components/bundle-assets/bundle-assets.js +21 -6
  8. package/lib/components/bundle-assets/bundle-assets.js.map +1 -1
  9. package/lib/components/bundle-assets/bundle-assets.module.css +0 -5
  10. package/lib/components/bundle-assets/index.js +3 -4
  11. package/lib/components/bundle-assets/index.js.map +1 -1
  12. package/lib/components/bundle-assets-totals/bundle-assets-totals.js +88 -0
  13. package/lib/components/bundle-assets-totals/bundle-assets-totals.js.map +1 -0
  14. package/lib/{ui/horizontal-bar-chart → components/bundle-assets-totals}/index.js +1 -1
  15. package/lib/components/bundle-assets-totals/index.js.map +1 -0
  16. package/lib/components/bundle-modules/bundle-modules.js +24 -9
  17. package/lib/components/bundle-modules/bundle-modules.js.map +1 -1
  18. package/lib/components/bundle-modules/bundle-modules.module.css +0 -5
  19. package/lib/components/bundle-modules/index.js +3 -4
  20. package/lib/components/bundle-modules/index.js.map +1 -1
  21. package/lib/components/bundle-packages/bundle-packages.js +19 -4
  22. package/lib/components/bundle-packages/bundle-packages.js.map +1 -1
  23. package/lib/components/bundle-packages/bundle-packages.module.css +0 -5
  24. package/lib/components/bundle-packages/index.js +3 -4
  25. package/lib/components/bundle-packages/index.js.map +1 -1
  26. package/lib/components/index.js +3 -7
  27. package/lib/components/index.js.map +1 -1
  28. package/lib/components/jobs-header/jobs-header.module.css +0 -4
  29. package/lib/components/{bundle-assets-totals-table → metrics-display-selector}/index.js +1 -1
  30. package/lib/components/metrics-display-selector/index.js.map +1 -0
  31. package/lib/components/metrics-display-selector/metrics-display-selector.js +21 -0
  32. package/lib/components/metrics-display-selector/metrics-display-selector.js.map +1 -0
  33. package/lib/components/metrics-display-selector/metrics-display-selector.module.css +10 -0
  34. package/lib/components/metrics-table/metrics-table.i18n.js +1 -6
  35. package/lib/components/metrics-table/metrics-table.i18n.js.map +1 -1
  36. package/lib/components/metrics-table/metrics-table.js +4 -37
  37. package/lib/components/metrics-table/metrics-table.js.map +1 -1
  38. package/lib/components/metrics-table/metrics-table.module.css +1 -44
  39. package/lib/components/{total-size-type-title → metrics-table-header}/index.js +1 -1
  40. package/lib/components/metrics-table-header/index.js.map +1 -0
  41. package/lib/components/metrics-table-header/metrics-table-header.i18n.js +9 -0
  42. package/lib/components/metrics-table-header/metrics-table-header.i18n.js.map +1 -0
  43. package/lib/components/metrics-table-header/metrics-table-header.js +79 -0
  44. package/lib/components/metrics-table-header/metrics-table-header.js.map +1 -0
  45. package/lib/components/metrics-table-header/metrics-table-header.module.css +51 -0
  46. package/lib/components/metrics-table-options/metrics-table-options.js +2 -2
  47. package/lib/components/metrics-table-options/metrics-table-options.js.map +1 -1
  48. package/lib/components/metrics-table-title/metrics-table-title.js +1 -1
  49. package/lib/components/metrics-table-title/metrics-table-title.js.map +1 -1
  50. package/lib/components/metrics-table-title/metrics-table-title.module.css +4 -4
  51. package/lib/components/{bundle-assets-totals-chart-bars → metrics-treemap}/index.js +1 -1
  52. package/lib/components/metrics-treemap/index.js.map +1 -0
  53. package/lib/components/metrics-treemap/metrics-treemap.js +163 -0
  54. package/lib/components/metrics-treemap/metrics-treemap.js.map +1 -0
  55. package/lib/components/metrics-treemap/metrics-treemap.module.css +201 -0
  56. package/lib/components/sort-button/sort-button.module.css +1 -0
  57. package/lib/constants.js +6 -1
  58. package/lib/constants.js.map +1 -1
  59. package/lib/css/variables.css +11 -11
  60. package/lib/hooks/entry-info.js +12 -0
  61. package/lib/hooks/entry-info.js.map +1 -0
  62. package/lib/hooks/metrics-display-type.js +40 -0
  63. package/lib/hooks/metrics-display-type.js.map +1 -0
  64. package/lib/layout/flex-stack/flex-stack.js +3 -4
  65. package/lib/layout/flex-stack/flex-stack.js.map +1 -1
  66. package/lib/layout/flex-stack/flex-stack.module.css +19 -23
  67. package/lib/query-state.js +1 -1
  68. package/lib/query-state.js.map +1 -1
  69. package/lib/ui/button/button.module.css +1 -0
  70. package/lib/ui/dropdown/dropdown.js +10 -40
  71. package/lib/ui/dropdown/dropdown.js.map +1 -1
  72. package/lib/ui/dropdown/index.js.map +1 -1
  73. package/lib/ui/filters/filters.js +33 -35
  74. package/lib/ui/filters/filters.js.map +1 -1
  75. package/lib/ui/filters/filters.module.css +55 -67
  76. package/lib/ui/hover-card/hover-card.js +1 -1
  77. package/lib/ui/hover-card/hover-card.js.map +1 -1
  78. package/lib/ui/icon/icon.js +2 -0
  79. package/lib/ui/icon/icon.js.map +1 -1
  80. package/lib/ui/index.js +1 -3
  81. package/lib/ui/index.js.map +1 -1
  82. package/lib/ui/toolbar/toolbar.module.css +1 -3
  83. package/lib-esm/app/app.js +5 -13
  84. package/lib-esm/app/app.js.map +1 -1
  85. package/lib-esm/app/app.module.css +2 -2
  86. package/lib-esm/assets/icons.svg +26 -20
  87. package/lib-esm/assets/icons.svg.js +27 -23
  88. package/lib-esm/assets/icons.svg.js.map +1 -1
  89. package/lib-esm/components/bundle-assets/bundle-assets.js +21 -6
  90. package/lib-esm/components/bundle-assets/bundle-assets.js.map +1 -1
  91. package/lib-esm/components/bundle-assets/bundle-assets.module.css +0 -5
  92. package/lib-esm/components/bundle-assets/index.js +5 -6
  93. package/lib-esm/components/bundle-assets/index.js.map +1 -1
  94. package/lib-esm/components/bundle-assets-totals/bundle-assets-totals.js +58 -0
  95. package/lib-esm/components/bundle-assets-totals/bundle-assets-totals.js.map +1 -0
  96. package/lib-esm/components/bundle-assets-totals/index.js +2 -0
  97. package/lib-esm/components/bundle-assets-totals/index.js.map +1 -0
  98. package/lib-esm/components/bundle-modules/bundle-modules.js +24 -9
  99. package/lib-esm/components/bundle-modules/bundle-modules.js.map +1 -1
  100. package/lib-esm/components/bundle-modules/bundle-modules.module.css +0 -5
  101. package/lib-esm/components/bundle-modules/index.js +3 -4
  102. package/lib-esm/components/bundle-modules/index.js.map +1 -1
  103. package/lib-esm/components/bundle-packages/bundle-packages.js +19 -4
  104. package/lib-esm/components/bundle-packages/bundle-packages.js.map +1 -1
  105. package/lib-esm/components/bundle-packages/bundle-packages.module.css +0 -5
  106. package/lib-esm/components/bundle-packages/index.js +5 -6
  107. package/lib-esm/components/bundle-packages/index.js.map +1 -1
  108. package/lib-esm/components/index.js +1 -3
  109. package/lib-esm/components/index.js.map +1 -1
  110. package/lib-esm/components/jobs-header/jobs-header.module.css +0 -4
  111. package/lib-esm/components/metrics-display-selector/index.js +2 -0
  112. package/lib-esm/components/metrics-display-selector/index.js.map +1 -0
  113. package/lib-esm/components/metrics-display-selector/metrics-display-selector.js +14 -0
  114. package/lib-esm/components/metrics-display-selector/metrics-display-selector.js.map +1 -0
  115. package/lib-esm/components/metrics-display-selector/metrics-display-selector.module.css +10 -0
  116. package/lib-esm/components/metrics-table/metrics-table.i18n.js +0 -5
  117. package/lib-esm/components/metrics-table/metrics-table.i18n.js.map +1 -1
  118. package/lib-esm/components/metrics-table/metrics-table.js +4 -37
  119. package/lib-esm/components/metrics-table/metrics-table.js.map +1 -1
  120. package/lib-esm/components/metrics-table/metrics-table.module.css +1 -44
  121. package/lib-esm/components/metrics-table-header/index.js +2 -0
  122. package/lib-esm/components/metrics-table-header/index.js.map +1 -0
  123. package/lib-esm/components/metrics-table-header/metrics-table-header.i18n.js +6 -0
  124. package/lib-esm/components/metrics-table-header/metrics-table-header.i18n.js.map +1 -0
  125. package/lib-esm/components/metrics-table-header/metrics-table-header.js +49 -0
  126. package/lib-esm/components/metrics-table-header/metrics-table-header.js.map +1 -0
  127. package/lib-esm/components/metrics-table-header/metrics-table-header.module.css +51 -0
  128. package/lib-esm/components/metrics-table-options/metrics-table-options.js +3 -3
  129. package/lib-esm/components/metrics-table-options/metrics-table-options.js.map +1 -1
  130. package/lib-esm/components/metrics-table-title/metrics-table-title.js +1 -1
  131. package/lib-esm/components/metrics-table-title/metrics-table-title.js.map +1 -1
  132. package/lib-esm/components/metrics-table-title/metrics-table-title.module.css +4 -4
  133. package/lib-esm/components/metrics-treemap/index.js +2 -0
  134. package/lib-esm/components/metrics-treemap/index.js.map +1 -0
  135. package/lib-esm/components/metrics-treemap/metrics-treemap.js +135 -0
  136. package/lib-esm/components/metrics-treemap/metrics-treemap.js.map +1 -0
  137. package/lib-esm/components/metrics-treemap/metrics-treemap.module.css +201 -0
  138. package/lib-esm/components/sort-button/sort-button.module.css +1 -0
  139. package/lib-esm/constants.js +5 -0
  140. package/lib-esm/constants.js.map +1 -1
  141. package/lib-esm/css/variables.css +11 -11
  142. package/lib-esm/hooks/entry-info.js +8 -0
  143. package/lib-esm/hooks/entry-info.js.map +1 -0
  144. package/lib-esm/hooks/metrics-display-type.js +36 -0
  145. package/lib-esm/hooks/metrics-display-type.js.map +1 -0
  146. package/lib-esm/layout/flex-stack/flex-stack.js +3 -4
  147. package/lib-esm/layout/flex-stack/flex-stack.js.map +1 -1
  148. package/lib-esm/layout/flex-stack/flex-stack.module.css +19 -23
  149. package/lib-esm/query-state.js +1 -1
  150. package/lib-esm/query-state.js.map +1 -1
  151. package/lib-esm/ui/button/button.module.css +1 -0
  152. package/lib-esm/ui/dropdown/dropdown.js +8 -39
  153. package/lib-esm/ui/dropdown/dropdown.js.map +1 -1
  154. package/lib-esm/ui/dropdown/index.js.map +1 -1
  155. package/lib-esm/ui/filters/filters.js +34 -36
  156. package/lib-esm/ui/filters/filters.js.map +1 -1
  157. package/lib-esm/ui/filters/filters.module.css +55 -67
  158. package/lib-esm/ui/hover-card/hover-card.js +1 -1
  159. package/lib-esm/ui/hover-card/hover-card.js.map +1 -1
  160. package/lib-esm/ui/icon/icon.js +2 -0
  161. package/lib-esm/ui/icon/icon.js.map +1 -1
  162. package/lib-esm/ui/index.js +0 -1
  163. package/lib-esm/ui/index.js.map +1 -1
  164. package/lib-esm/ui/toolbar/toolbar.module.css +1 -3
  165. package/package.json +10 -7
  166. package/src/app/app.jsx +5 -17
  167. package/src/app/app.module.css +2 -2
  168. package/src/assets/icons/table.svg +3 -0
  169. package/src/assets/icons/treemap.svg +4 -0
  170. package/src/assets/icons.svg +26 -20
  171. package/src/assets/icons.svg.jsx +91 -55
  172. package/src/components/bundle-assets/bundle-assets.jsx +47 -16
  173. package/src/components/bundle-assets/bundle-assets.module.css +0 -5
  174. package/src/components/bundle-assets/index.jsx +10 -5
  175. package/src/components/bundle-assets-totals/bundle-assets-totals.jsx +125 -0
  176. package/src/components/bundle-assets-totals/index.js +1 -0
  177. package/src/components/bundle-modules/bundle-modules.module.css +0 -5
  178. package/src/components/bundle-modules/bundle-modules.tsx +65 -35
  179. package/src/components/bundle-modules/index.tsx +4 -3
  180. package/src/components/bundle-packages/bundle-packages.jsx +42 -14
  181. package/src/components/bundle-packages/bundle-packages.module.css +0 -5
  182. package/src/components/bundle-packages/index.jsx +10 -5
  183. package/src/components/index.js +1 -3
  184. package/src/components/jobs-header/jobs-header.module.css +0 -4
  185. package/src/components/metrics-display-selector/index.tsx +1 -0
  186. package/src/components/metrics-display-selector/metrics-display-selector.module.css +10 -0
  187. package/src/components/metrics-display-selector/metrics-display-selector.tsx +47 -0
  188. package/src/components/metrics-table/metrics-table.i18n.ts +0 -7
  189. package/src/components/metrics-table/metrics-table.module.css +1 -44
  190. package/src/components/metrics-table/metrics-table.tsx +17 -153
  191. package/src/components/metrics-table-header/index.ts +1 -0
  192. package/src/components/metrics-table-header/metrics-table-header.i18n.ts +6 -0
  193. package/src/components/metrics-table-header/metrics-table-header.module.css +51 -0
  194. package/src/components/metrics-table-header/metrics-table-header.tsx +172 -0
  195. package/src/components/metrics-table-options/metrics-table-options.jsx +4 -10
  196. package/src/components/metrics-table-title/metrics-table-title.jsx +1 -1
  197. package/src/components/metrics-table-title/metrics-table-title.module.css +4 -4
  198. package/src/components/metrics-treemap/index.ts +1 -0
  199. package/src/components/metrics-treemap/metrics-treemap.module.css +201 -0
  200. package/src/components/metrics-treemap/metrics-treemap.stories.tsx +23 -0
  201. package/src/components/metrics-treemap/metrics-treemap.tsx +304 -0
  202. package/src/components/sort-button/sort-button.module.css +1 -0
  203. package/src/{constants.js → constants.ts} +5 -0
  204. package/src/css/variables.css +11 -11
  205. package/src/hooks/entry-info.ts +19 -0
  206. package/src/hooks/metrics-display-type.ts +56 -0
  207. package/src/layout/flex-stack/flex-stack.module.css +19 -23
  208. package/src/layout/flex-stack/flex-stack.tsx +2 -8
  209. package/src/query-state.tsx +1 -1
  210. package/src/types.d.ts +2 -0
  211. package/src/ui/button/button.module.css +1 -0
  212. package/src/ui/dropdown/dropdown.stories.tsx +25 -0
  213. package/src/ui/dropdown/dropdown.tsx +66 -0
  214. package/src/ui/filters/filters.module.css +55 -67
  215. package/src/ui/filters/filters.stories.tsx +109 -0
  216. package/src/ui/filters/filters.tsx +128 -167
  217. package/src/ui/hover-card/hover-card.tsx +1 -1
  218. package/src/ui/icon/icon.tsx +2 -0
  219. package/src/ui/index.js +0 -1
  220. package/src/ui/toolbar/toolbar.module.css +1 -3
  221. package/types/components/bundle-assets/bundle-assets.d.ts +2 -1
  222. package/types/components/{bundle-assets-totals-table/bundle-assets-totals-table.d.ts → bundle-assets-totals/bundle-assets-totals.d.ts} +6 -2
  223. package/types/components/bundle-assets-totals/index.d.ts +1 -0
  224. package/types/components/bundle-modules/bundle-modules.d.ts +2 -1
  225. package/types/components/bundle-modules/index.d.ts +1 -1
  226. package/types/components/bundle-packages/bundle-packages.d.ts +1 -0
  227. package/types/components/index.d.ts +1 -3
  228. package/types/components/metrics-display-selector/index.d.ts +1 -0
  229. package/types/components/metrics-display-selector/metrics-display-selector.d.ts +9 -0
  230. package/types/components/metrics-table/metrics-table.d.ts +4 -10
  231. package/types/components/metrics-table/metrics-table.i18n.d.ts +0 -5
  232. package/types/components/metrics-table-header/index.d.ts +1 -0
  233. package/types/components/metrics-table-header/metrics-table-header.d.ts +15 -0
  234. package/types/components/metrics-table-header/metrics-table-header.i18n.d.ts +5 -0
  235. package/types/components/metrics-treemap/index.d.ts +1 -0
  236. package/types/components/metrics-treemap/metrics-treemap.d.ts +9 -0
  237. package/types/constants.d.ts +19 -15
  238. package/types/hooks/entry-info.d.ts +8 -0
  239. package/types/hooks/metrics-display-type.d.ts +4 -0
  240. package/types/ui/dropdown/dropdown.d.ts +12 -47
  241. package/types/ui/dropdown/index.d.ts +1 -1
  242. package/types/ui/filters/filters.d.ts +2 -7
  243. package/types/ui/icon/icon.d.ts +4 -0
  244. package/types/ui/index.d.ts +0 -1
  245. package/lib/components/bundle-assets-totals-chart-bars/bundle-assets-totals-chart-bars.js +0 -95
  246. package/lib/components/bundle-assets-totals-chart-bars/bundle-assets-totals-chart-bars.js.map +0 -1
  247. package/lib/components/bundle-assets-totals-chart-bars/bundle-assets-totals-chart-bars.module.css +0 -42
  248. package/lib/components/bundle-assets-totals-chart-bars/index.js.map +0 -1
  249. package/lib/components/bundle-assets-totals-table/bundle-assets-totals-table.js +0 -57
  250. package/lib/components/bundle-assets-totals-table/bundle-assets-totals-table.js.map +0 -1
  251. package/lib/components/bundle-assets-totals-table/bundle-assets-totals-table.module.css +0 -3
  252. package/lib/components/bundle-assets-totals-table/index.js.map +0 -1
  253. package/lib/components/total-size-type-title/index.js.map +0 -1
  254. package/lib/components/total-size-type-title/total-size-type-title.js +0 -32
  255. package/lib/components/total-size-type-title/total-size-type-title.js.map +0 -1
  256. package/lib/components/total-size-type-title/total-size-type-title.module.css +0 -14
  257. package/lib/ui/horizontal-bar-chart/horizontal-bar-chart.js +0 -102
  258. package/lib/ui/horizontal-bar-chart/horizontal-bar-chart.js.map +0 -1
  259. package/lib/ui/horizontal-bar-chart/horizontal-bar-chart.module.css +0 -42
  260. package/lib/ui/horizontal-bar-chart/index.js.map +0 -1
  261. package/lib-esm/components/bundle-assets-totals-chart-bars/bundle-assets-totals-chart-bars.js +0 -66
  262. package/lib-esm/components/bundle-assets-totals-chart-bars/bundle-assets-totals-chart-bars.js.map +0 -1
  263. package/lib-esm/components/bundle-assets-totals-chart-bars/bundle-assets-totals-chart-bars.module.css +0 -42
  264. package/lib-esm/components/bundle-assets-totals-chart-bars/index.js +0 -2
  265. package/lib-esm/components/bundle-assets-totals-chart-bars/index.js.map +0 -1
  266. package/lib-esm/components/bundle-assets-totals-table/bundle-assets-totals-table.js +0 -27
  267. package/lib-esm/components/bundle-assets-totals-table/bundle-assets-totals-table.js.map +0 -1
  268. package/lib-esm/components/bundle-assets-totals-table/bundle-assets-totals-table.module.css +0 -3
  269. package/lib-esm/components/bundle-assets-totals-table/index.js +0 -2
  270. package/lib-esm/components/bundle-assets-totals-table/index.js.map +0 -1
  271. package/lib-esm/components/total-size-type-title/index.js +0 -2
  272. package/lib-esm/components/total-size-type-title/index.js.map +0 -1
  273. package/lib-esm/components/total-size-type-title/total-size-type-title.js +0 -25
  274. package/lib-esm/components/total-size-type-title/total-size-type-title.js.map +0 -1
  275. package/lib-esm/components/total-size-type-title/total-size-type-title.module.css +0 -14
  276. package/lib-esm/ui/horizontal-bar-chart/horizontal-bar-chart.js +0 -96
  277. package/lib-esm/ui/horizontal-bar-chart/horizontal-bar-chart.js.map +0 -1
  278. package/lib-esm/ui/horizontal-bar-chart/horizontal-bar-chart.module.css +0 -42
  279. package/lib-esm/ui/horizontal-bar-chart/index.js +0 -2
  280. package/lib-esm/ui/horizontal-bar-chart/index.js.map +0 -1
  281. package/src/components/bundle-assets-totals-chart-bars/bundle-assets-totals-chart-bars.jsx +0 -106
  282. package/src/components/bundle-assets-totals-chart-bars/bundle-assets-totals-chart-bars.module.css +0 -42
  283. package/src/components/bundle-assets-totals-chart-bars/index.js +0 -1
  284. package/src/components/bundle-assets-totals-table/bundle-assets-totals-table.jsx +0 -55
  285. package/src/components/bundle-assets-totals-table/bundle-assets-totals-table.module.css +0 -3
  286. package/src/components/bundle-assets-totals-table/index.js +0 -1
  287. package/src/components/total-size-type-title/index.js +0 -1
  288. package/src/components/total-size-type-title/total-size-type-title.jsx +0 -41
  289. package/src/components/total-size-type-title/total-size-type-title.module.css +0 -14
  290. package/src/ui/dropdown/dropdown.jsx +0 -88
  291. package/src/ui/horizontal-bar-chart/horizontal-bar-chart.jsx +0 -156
  292. package/src/ui/horizontal-bar-chart/horizontal-bar-chart.module.css +0 -42
  293. package/src/ui/horizontal-bar-chart/index.js +0 -1
  294. package/types/components/bundle-assets-totals-chart-bars/bundle-assets-totals-chart-bars.d.ts +0 -22
  295. package/types/components/bundle-assets-totals-chart-bars/index.d.ts +0 -1
  296. package/types/components/bundle-assets-totals-table/index.d.ts +0 -1
  297. package/types/components/total-size-type-title/index.d.ts +0 -1
  298. package/types/components/total-size-type-title/total-size-type-title.d.ts +0 -14
  299. package/types/ui/horizontal-bar-chart/horizontal-bar-chart.d.ts +0 -23
  300. package/types/ui/horizontal-bar-chart/index.d.ts +0 -1
  301. /package/src/ui/dropdown/{index.js → index.ts} +0 -0
@@ -5,90 +5,55 @@ import type { FilterFieldsData, FilterGroupFieldData } from '../../types';
5
5
  import { FlexStack } from '../../layout/flex-stack';
6
6
  import { Stack } from '../../layout/stack';
7
7
  import { Button } from '../button';
8
- import { Dropdown } from '../dropdown';
8
+ import { ControlGroup } from '../control-group';
9
+ import { Dropdown, DropdownItem } from '../dropdown';
9
10
  import { InputSearch } from '../input-search';
10
11
  import * as I18N from './filters.i18n';
11
12
  import { getGroupFiltersLabelSuffix, LABELS } from './filters.utils';
12
13
  import css from './filters.module.css';
13
14
 
14
- interface FilterProps extends React.ComponentProps<'input'> {
15
- as?: React.ElementType;
16
- buttonClassName?: string;
15
+ interface FilterBooleanProps extends React.ComponentProps<'input'> {
17
16
  label: string;
18
- name: string;
19
- getOnOnlyClick?: (name: string) => () => void;
20
17
  }
21
18
 
22
- const Filter = (props: FilterProps) => {
23
- const {
24
- className = '',
25
- as: Component = 'div',
26
- buttonClassName = '',
27
- label,
28
- name,
29
- getOnOnlyClick,
30
- ...inputProps
31
- } = props;
32
-
33
- const id = `filter-${name}`;
34
- const rootClassName = cx(css.filter, className);
19
+ const Filter = (props: FilterBooleanProps) => {
20
+ const { className = '', label, name, ...inputProps } = props;
35
21
 
36
22
  return (
37
- <Component className={rootClassName}>
38
- {/* eslint-disable */}
39
- <FlexStack
40
- space="xxxsmall"
41
- alignItems="center"
42
- as="label"
43
- className={cx(css.filterCheckbox, buttonClassName)}
44
- >
45
- {/* eslint-enabled */}
46
- <input type="checkbox" id={id} name={name} {...inputProps} className={css.filterInput} />
47
- <span title={label} className={css.filterLabel}>
48
- {label}
49
- </span>
50
- </FlexStack>
51
-
52
- {getOnOnlyClick && (
53
- <Button
54
- kind="info"
55
- solid
56
- size="small"
57
- type="button"
58
- onClick={getOnOnlyClick(name)}
59
- className={css.filterOnlyButton}
60
- >
61
- {I18N.ONLY}
62
- </Button>
63
- )}
64
- </Component>
23
+ <FlexStack
24
+ space="xxxsmall"
25
+ alignItems="center"
26
+ as="label"
27
+ className={cx(css.filter, className)}
28
+ >
29
+ <input
30
+ type="checkbox"
31
+ id={`filter-${name}`}
32
+ name={name}
33
+ {...inputProps}
34
+ className={css.filterControl}
35
+ />
36
+ <span title={label} className={css.filterLabel}>
37
+ {label}
38
+ </span>
39
+ </FlexStack>
65
40
  );
66
41
  };
67
42
 
68
43
  interface FilterGroupProps extends React.ComponentProps<'div'> {
69
- buttonClassName?: string;
70
44
  groupKey: string;
71
45
  data: FilterGroupFieldData;
72
46
  values: Record<string, boolean>;
73
- onCheckboxChange: FilterProps['onChange'];
47
+ onCheckboxChange: FilterBooleanProps['onChange'];
74
48
  toggleFilters: (newFilters: Record<string, boolean>) => void;
75
49
  }
76
50
 
77
51
  const FilterGroup = (props: FilterGroupProps) => {
78
- const {
79
- className = '',
80
- buttonClassName = '',
81
- groupKey,
82
- data,
83
- values,
84
- onCheckboxChange,
85
- toggleFilters,
86
- } = props;
52
+ const { className = '', groupKey, data, values, onCheckboxChange, toggleFilters } = props;
53
+ const { label: groupLabel, children: groupItems } = data;
87
54
 
88
55
  const [search, setSearch] = useState('');
89
56
 
90
- const { label: groupLabel, children: groupItems } = data;
91
-
92
57
  const areAllGroupItemsChecked = groupItems
93
58
  .map(({ key: itemKey }) => values?.[`${groupKey}.${itemKey}`])
94
59
  .reduce((agg, val) => agg && val, true);
@@ -99,7 +64,9 @@ const FilterGroup = (props: FilterGroupProps) => {
99
64
  <>
100
65
  {`${groupLabel}:`}
101
66
  &nbsp;
102
- <span className={cx(hasCustomFilterSuffix && css.labelSuffixCustom)}>{filterSuffix}</span>
67
+ <span className={cx(hasCustomFilterSuffix && css.filterGroupLabelSuffixCustom)}>
68
+ {filterSuffix}
69
+ </span>
103
70
  </>
104
71
  );
105
72
 
@@ -131,87 +98,78 @@ const FilterGroup = (props: FilterGroupProps) => {
131
98
  return (
132
99
  <Dropdown
133
100
  className={className}
134
- buttonClassName={buttonClassName}
135
101
  label={dropdownLabel}
136
102
  ariaLabel={`${groupLabel}: ${filterSuffix}`}
137
103
  >
138
- {({ MenuItem, menuItemClassName }) => {
139
- return (
140
- <>
141
- {groupItems.length > 10 && (
142
- <div className={css.filterGroupSearchWrapper}>
143
- <InputSearch
144
- defaultValue={search}
145
- onChange={setSearch}
146
- placeholder={I18N.GROUP_SEARCH}
147
- debounceWait={0}
148
- />
149
- </div>
150
- )}
151
- <div className={css.filterGroupItems}>
152
- {filteredGroupItems.length === 0 && (
153
- <Stack className={css.filterGroupSearchNotFound}>
154
- <p>{I18N.GROUP_NOT_FOUND}</p>
155
- <div>
156
- <Button
157
- size="small"
158
- kind="primary"
159
- type="button"
160
- onClick={() => setSearch('')}
161
- className={css.filterGroupSearchNotFoundClear}
162
- >
163
- {I18N.GROUP_SEARCH_CLEAR}
164
- </Button>
165
- </div>
166
- </Stack>
167
- )}
168
- {filteredGroupItems.map(({ key: itemKey, ...itemData }) => {
169
- const id = [groupKey, itemKey].join('.');
170
- const getOnOnlyClick = () => getOnGroupCheck(false, { [id]: true });
171
-
172
- return (
173
- <Filter
174
- key={id}
175
- className={menuItemClassName}
176
- as={MenuItem}
177
- name={id}
178
- label={itemData.label}
179
- onChange={onCheckboxChange}
180
- checked={values[id]}
181
- disabled={itemData.disabled}
182
- getOnOnlyClick={getOnOnlyClick}
183
- />
184
- );
185
- })}
104
+ {groupItems.length > 10 && (
105
+ <div className={css.filterGroupSearchWrapper}>
106
+ <InputSearch
107
+ defaultValue={search}
108
+ onChange={setSearch}
109
+ placeholder={I18N.GROUP_SEARCH}
110
+ debounceWait={0}
111
+ />
112
+ </div>
113
+ )}
114
+ <div className={css.filterGroupItems}>
115
+ {filteredGroupItems.length === 0 && (
116
+ <Stack className={css.filterGroupSearchNotFound}>
117
+ <p>{I18N.GROUP_NOT_FOUND}</p>
118
+ <div>
119
+ <Button
120
+ size="small"
121
+ kind="primary"
122
+ type="button"
123
+ onClick={() => setSearch('')}
124
+ className={css.filterGroupSearchNotFoundClear}
125
+ >
126
+ {I18N.GROUP_SEARCH_CLEAR}
127
+ </Button>
186
128
  </div>
187
- {filteredGroupItems.length !== 0 && (
188
- <div className={css.filterGroupActions}>
189
- {areAllGroupItemsChecked ? (
190
- <MenuItem
191
- id="clear-all"
192
- as="button"
193
- className={menuItemClassName}
194
- type="button"
195
- onClick={getOnGroupCheck(false)}
196
- >
197
- {I18N.CLEAR}
198
- </MenuItem>
199
- ) : (
200
- <MenuItem
201
- id="clear-all"
202
- as="button"
203
- className={menuItemClassName}
204
- type="button"
205
- onClick={getOnGroupCheck(true)}
206
- >
207
- {I18N.CHECK}
208
- </MenuItem>
209
- )}
210
- </div>
211
- )}
212
- </>
213
- );
214
- }}
129
+ </Stack>
130
+ )}
131
+ {filteredGroupItems.map(({ key: itemKey, ...itemData }) => {
132
+ const id = [groupKey, itemKey].join('.');
133
+ const getOnOnlyClick = () => getOnGroupCheck(false, { [id]: true });
134
+
135
+ return (
136
+ <DropdownItem key={id} className={css.filterGroupItem}>
137
+ <Filter
138
+ label={itemData.label}
139
+ name={id}
140
+ onChange={onCheckboxChange}
141
+ checked={values[id]}
142
+ disabled={itemData.disabled}
143
+ className={css.filterGroupItemFilter}
144
+ />
145
+ <Button
146
+ kind="info"
147
+ solid
148
+ size="small"
149
+ type="button"
150
+ onClick={getOnOnlyClick()}
151
+ disabled={itemData.disabled}
152
+ className={css.filterGroupOnlyButton}
153
+ >
154
+ {I18N.ONLY}
155
+ </Button>
156
+ </DropdownItem>
157
+ );
158
+ })}
159
+ </div>
160
+ {filteredGroupItems.length !== 0 && (
161
+ <div className={css.filterGroupActions}>
162
+ {areAllGroupItemsChecked ? (
163
+ <DropdownItem id="clear-all" onClick={getOnGroupCheck(false)} role="button">
164
+ {I18N.CLEAR}
165
+ </DropdownItem>
166
+ ) : (
167
+ <DropdownItem id="clear-all" onClick={getOnGroupCheck(true)} role="button">
168
+ {I18N.CHECK}
169
+ </DropdownItem>
170
+ )}
171
+ </div>
172
+ )}
215
173
  </Dropdown>
216
174
  );
217
175
  };
@@ -226,6 +184,9 @@ interface FiltersProps extends React.ComponentProps<'div'> {
226
184
  export const Filters = (props: FiltersProps) => {
227
185
  const { className = '', values, filters, toggleFilter, toggleFilters } = props;
228
186
 
187
+ /**
188
+ * Toggle filter value on checkbox change
189
+ */
229
190
  const onCheckboxChange = useCallback(
230
191
  (event: any) => {
231
192
  const { name } = event.target;
@@ -233,41 +194,41 @@ export const Filters = (props: FiltersProps) => {
233
194
  },
234
195
  [toggleFilter, values],
235
196
  );
236
- const rootClassName = cx(css.root, className);
197
+
198
+ const filterList = Object.entries(filters);
199
+ const filterCount = filterList.length;
237
200
 
238
201
  return (
239
- <form className={rootClassName}>
240
- <FlexStack space="xxsmall" alignItems="top" className={css.items}>
241
- {Object.entries(filters).map(([name, data]) => {
242
- if ('defaultValue' in data) {
243
- return (
244
- <Filter
245
- key={name}
246
- className={cx(css.item, css.filterStandalone)}
247
- buttonClassName={css.itemButton}
248
- name={name}
249
- label={data.label}
250
- onChange={onCheckboxChange}
251
- checked={values[name]}
252
- disabled={data.disabled as boolean}
253
- />
254
- );
255
- }
202
+ <ControlGroup className={cx(css.root, className)}>
203
+ {filterList.map(([name, data], index) => {
204
+ const lastItem = index === filterCount - 1;
256
205
 
206
+ if ('defaultValue' in data) {
257
207
  return (
258
- <FilterGroup
259
- className={css.item}
260
- buttonClassName={css.itemButton}
208
+ <Filter
209
+ name={name}
210
+ label={data.label}
211
+ onChange={onCheckboxChange}
212
+ checked={values[name]}
213
+ disabled={data.disabled as boolean}
261
214
  key={name}
262
- groupKey={name}
263
- data={data}
264
- values={values}
265
- onCheckboxChange={onCheckboxChange}
266
- toggleFilters={toggleFilters}
215
+ className={cx(css.filterSingle, lastItem && css.itemLast)}
267
216
  />
268
217
  );
269
- })}
270
- </FlexStack>
271
- </form>
218
+ }
219
+
220
+ return (
221
+ <FilterGroup
222
+ groupKey={name}
223
+ data={data}
224
+ values={values}
225
+ onCheckboxChange={onCheckboxChange}
226
+ toggleFilters={toggleFilters}
227
+ className={cx(lastItem && css.itemLast)}
228
+ key={name}
229
+ />
230
+ );
231
+ })}
232
+ </ControlGroup>
272
233
  );
273
234
  };
@@ -31,7 +31,7 @@ export const HoverCard = (props: HoverCardProps) => {
31
31
  children,
32
32
  } = props;
33
33
 
34
- const state = useHovercardState({ gutter: 8, timeout: 300 });
34
+ const state = useHovercardState({ gutter: 8, timeout: 300, placement: 'top' });
35
35
  const hovercardProps = useHovercard({ state, portal: true });
36
36
 
37
37
  // Fallback to span if no href
@@ -18,6 +18,8 @@ const ICONS = {
18
18
  GITHUB: 'github',
19
19
  INFO: 'info',
20
20
  HELP: 'help',
21
+ TABLE: 'table',
22
+ TREEMAP: 'treemap',
21
23
  MENU: 'menu',
22
24
  MORE_VERTICAL: 'more-vertical',
23
25
  SORT: 'sort',
package/src/ui/index.js CHANGED
@@ -6,7 +6,6 @@ export { Dropdown } from './dropdown';
6
6
  export { EmptySet } from './empty-set';
7
7
  export { FileName } from './file-name';
8
8
  export { Filters } from './filters';
9
- export { HorizontalBarChart } from './horizontal-bar-chart';
10
9
  export { HoverCard } from './hover-card';
11
10
  export { Icon } from './icon';
12
11
  export { Input } from './input';
@@ -1,6 +1,4 @@
1
- .root {
2
- padding: var(--space-small);
3
- }
1
+ .root { }
4
2
 
5
3
  .content {}
6
4
 
@@ -47,11 +47,12 @@ export namespace BundleAssets {
47
47
  direction: PropTypes.Requireable<string>;
48
48
  }>>>;
49
49
  export let updateSort: PropTypes.Validator<(...args: any[]) => any>;
50
- export let allItems: PropTypes.Requireable<(PropTypes.InferProps<{
50
+ export let allItems: PropTypes.Validator<(PropTypes.InferProps<{
51
51
  key: PropTypes.Requireable<string>;
52
52
  }> | null | undefined)[]>;
53
53
  export let customComponentLink: PropTypes.Requireable<PropTypes.ReactComponentLike>;
54
54
  export let hideEntryInfo: PropTypes.Validator<(...args: any[]) => any>;
55
+ export let showEntryInfo: PropTypes.Validator<(...args: any[]) => any>;
55
56
  }
56
57
  }
57
58
  import React from 'react';
@@ -1,14 +1,16 @@
1
- export function BundleAssetsTotalsTable({ className, jobs, customComponentLink: CustomComponentLink, ...restProps }: {
1
+ export function BundleAssetsTotals({ className, jobs, customComponentLink: CustomComponentLink, onTreemapItemClick, ...restProps }: {
2
2
  [x: string]: any;
3
3
  className: any;
4
4
  jobs: any;
5
5
  customComponentLink: any;
6
+ onTreemapItemClick: any;
6
7
  }): React.JSX.Element;
7
- export namespace BundleAssetsTotalsTable {
8
+ export namespace BundleAssetsTotals {
8
9
  namespace defaultProps {
9
10
  export let className: string;
10
11
  export let jobs: never[];
11
12
  export { ComponentLink as customComponentLink };
13
+ export let onTreemapItemClick: undefined;
12
14
  }
13
15
  namespace propTypes {
14
16
  let className_1: PropTypes.Requireable<string>;
@@ -16,6 +18,8 @@ export namespace BundleAssetsTotalsTable {
16
18
  let jobs_1: PropTypes.Requireable<any[]>;
17
19
  export { jobs_1 as jobs };
18
20
  export let customComponentLink: PropTypes.Requireable<PropTypes.ReactComponentLike>;
21
+ let onTreemapItemClick_1: PropTypes.Requireable<(...args: any[]) => any>;
22
+ export { onTreemapItemClick_1 as onTreemapItemClick };
19
23
  }
20
24
  }
21
25
  import React from 'react';
@@ -0,0 +1 @@
1
+ export * from "./bundle-assets-totals";
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import type { SortAction } from '../../types';
2
+ import { SortAction } from '../../types';
3
3
  import { ModuleMetric } from './bundle-modules.constants';
4
4
  import type { Chunk, Job, ReportMetricModuleRow } from './bundle-modules.types';
5
5
  interface BundleModulesProps extends React.ComponentProps<'div'> {
@@ -18,6 +18,7 @@ interface BundleModulesProps extends React.ComponentProps<'div'> {
18
18
  updateSearch: (newSerarch: string) => void;
19
19
  entryId?: string;
20
20
  hideEntryInfo: () => void;
21
+ showEntryInfo: (entryId: string) => void;
21
22
  moduleMetric: ModuleMetric;
22
23
  setModuleMetric: (newValue: ModuleMetric) => void;
23
24
  customComponentLink: React.ElementType;
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import type { SortAction } from '../../types';
3
3
  import { BundleModules as BaseComponent } from './bundle-modules';
4
4
  import * as types from './bundle-modules.types';
5
- interface BundleModulesProps extends Omit<React.ComponentProps<typeof BaseComponent>, 'jobs' | 'items' | 'chunks' | 'updateFilters' | 'resetFilters' | 'resetAllFilters' | 'filters' | 'sort' | 'updateSort' | 'search' | 'updateSearch' | 'allItems' | 'totalRowCount' | 'hideEntryInfo'> {
5
+ interface BundleModulesProps extends Omit<React.ComponentProps<typeof BaseComponent>, 'jobs' | 'items' | 'chunks' | 'updateFilters' | 'resetFilters' | 'resetAllFilters' | 'filters' | 'sort' | 'updateSort' | 'search' | 'updateSearch' | 'allItems' | 'totalRowCount' | 'hideEntryInfo' | 'showEntryInfo'> {
6
6
  jobs: Array<types.Job>;
7
7
  filters: Record<string, boolean>;
8
8
  search?: string;
@@ -45,6 +45,7 @@ export namespace BundlePackages {
45
45
  let entryId_1: PropTypes.Requireable<string>;
46
46
  export { entryId_1 as entryId };
47
47
  export let hideEntryInfo: PropTypes.Validator<(...args: any[]) => any>;
48
+ export let showEntryInfo: PropTypes.Validator<(...args: any[]) => any>;
48
49
  }
49
50
  }
50
51
  import React from 'react';
@@ -1,7 +1,6 @@
1
1
  export { BrowsertimeTable } from "./browsertime-table";
2
2
  export { BundleAssets } from "./bundle-assets";
3
- export { BundleAssetsTotalsTable } from "./bundle-assets-totals-table";
4
- export { BundleAssetsTotalsChartBars } from "./bundle-assets-totals-chart-bars";
3
+ export { BundleAssetsTotals } from "./bundle-assets-totals";
5
4
  export { BundlePackages } from "./bundle-packages";
6
5
  export { BundleModules } from "./bundle-modules";
7
6
  export { ComponentLink } from "./component-link";
@@ -17,6 +16,5 @@ export { MetricsTableOptions } from "./metrics-table-options";
17
16
  export { MetricsTableTitle } from "./metrics-table-title";
18
17
  export { ModuleInfo } from "./module-info";
19
18
  export { Summary } from "./summary";
20
- export { TotalSizeTypeTitle } from "./total-size-type-title";
21
19
  export { MetricRunInfo, MetricRunInfoProps } from "./metric-run-info";
22
20
  export { RunInfo, RunInfoProps } from "./run-info";
@@ -0,0 +1 @@
1
+ export * from './metrics-display-selector';
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import { MetricsDisplayType } from '../../constants';
3
+ import { ControlGroup } from '../../ui/control-group';
4
+ interface MetricsDisplaySelectorProps {
5
+ value: MetricsDisplayType;
6
+ onSelect: (newValue: MetricsDisplayType) => void;
7
+ }
8
+ export declare const MetricsDisplaySelector: (props: MetricsDisplaySelectorProps & Omit<React.ComponentProps<typeof ControlGroup>, 'onSelect' | 'value'>) => React.JSX.Element;
9
+ export {};
@@ -1,23 +1,17 @@
1
1
  import React from 'react';
2
- import { type MetricRunInfo } from '@bundle-stats/utils';
2
+ import type { ReportMetricRow } from '@bundle-stats/utils';
3
3
  import { Table } from '../../ui/table';
4
- interface Item {
5
- key: string;
6
- label?: string;
7
- changed: boolean;
8
- biggerIsBetter: boolean;
9
- runs: Array<MetricRunInfo | null>;
10
- }
11
4
  interface MetricsTableProps extends Omit<React.ComponentProps<typeof Table>, 'title'> {
12
5
  runs: Array<{
6
+ label: string;
13
7
  internalBuildNumber: number;
14
8
  }>;
15
- items: Array<Item>;
9
+ items: Array<ReportMetricRow>;
16
10
  title?: React.ReactNode;
17
11
  showHeaderSum?: boolean;
18
12
  sort?: any;
19
13
  updateSort?: (val: any) => void;
20
- renderRowHeader?: (item: Item) => React.ReactNode;
14
+ renderRowHeader?: (item: ReportMetricRow) => React.ReactNode;
21
15
  emptyMessage?: React.ReactNode;
22
16
  showAllItems: boolean;
23
17
  setShowAllItems: (value: boolean) => void;
@@ -1,8 +1,3 @@
1
- export declare const BASELINE_TITLE = "Baseline";
2
- export declare const CURRENT_TITLE = "Current";
3
- export declare const SORT_VALUE = "value";
4
- export declare const SORT_CHANGE = "change";
5
- export declare const SORT_PERCENTUAL_CHANGE = "percentual change";
6
1
  export declare const EMPTY_MESSAGE = "No items found.";
7
2
  export declare const SHOW_ALL = "Show all";
8
3
  export declare const SHOW_LESS = "Show less";
@@ -0,0 +1 @@
1
+ export * from './metrics-table-header';
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { type ReportMetricRow } from '@bundle-stats/utils';
3
+ interface MetricsTableHeaderProps {
4
+ metricTitle?: React.ReactNode;
5
+ showSum?: boolean;
6
+ jobs: Array<{
7
+ label: string;
8
+ internalBuildNumber: number;
9
+ }>;
10
+ rows: Array<ReportMetricRow>;
11
+ sort?: any;
12
+ updateSort?: (val: any) => void;
13
+ }
14
+ export declare const MetricsTableHeader: (props: MetricsTableHeaderProps & React.ComponentProps<'thead'>) => React.JSX.Element;
15
+ export {};
@@ -0,0 +1,5 @@
1
+ export declare const BASELINE_TITLE = "Baseline";
2
+ export declare const CURRENT_TITLE = "Current";
3
+ export declare const SORT_VALUE = "value";
4
+ export declare const SORT_CHANGE = "change";
5
+ export declare const SORT_PERCENTUAL_CHANGE = "percentual change";
@@ -0,0 +1 @@
1
+ export * from './metrics-treemap';
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import type { ReportMetricRow } from '@bundle-stats/utils';
3
+ interface MetricsTreemapProps {
4
+ items: Array<ReportMetricRow>;
5
+ emptyMessage?: React.ReactNode;
6
+ onItemClick?: (entryId: string) => void;
7
+ }
8
+ export declare const MetricsTreemap: (props: MetricsTreemapProps & React.ComponentProps<'div'>) => React.JSX.Element;
9
+ export {};
@@ -1,18 +1,22 @@
1
- export namespace URLS {
2
- let OVERVIEW: string;
3
- let ASSETS: string;
4
- let MODULES: string;
5
- let PACKAGES: string;
6
- }
7
- export const SECTION_URLS: {
1
+ export declare const URLS: {
2
+ OVERVIEW: string;
3
+ ASSETS: string;
4
+ MODULES: string;
5
+ PACKAGES: string;
6
+ };
7
+ export declare const SECTION_URLS: {
8
8
  [x: string]: string;
9
9
  };
10
- export const ASSETS_SIZES_FILE_TYPE_MAP: {};
11
- export const METRICS_WEBPACK_GENERAL: string[];
12
- export const METRICS_WEBPACK_ASSETS: string[];
13
- export const METRICS_WEBPACK_MODULES: string[];
14
- export const METRICS_WEBPACK_PACKAGES: string[];
15
- export namespace SORT {
16
- let ASC: string;
17
- let DESC: string;
10
+ export declare const ASSETS_SIZES_FILE_TYPE_MAP: {};
11
+ export declare const METRICS_WEBPACK_GENERAL: string[];
12
+ export declare const METRICS_WEBPACK_ASSETS: string[];
13
+ export declare const METRICS_WEBPACK_MODULES: string[];
14
+ export declare const METRICS_WEBPACK_PACKAGES: string[];
15
+ export declare const SORT: {
16
+ ASC: string;
17
+ DESC: string;
18
+ };
19
+ export declare enum MetricsDisplayType {
20
+ TABLE = "table",
21
+ TREEMAP = "treemap"
18
22
  }
@@ -0,0 +1,8 @@
1
+ interface UseEntryInfoParams {
2
+ setState: (data: {
3
+ entryId: string;
4
+ }) => void;
5
+ }
6
+ type UseEntryInfo = [() => void, (entryId: string) => void];
7
+ export declare function useEntryInfo(params: UseEntryInfoParams): UseEntryInfo;
8
+ export {};
@@ -0,0 +1,4 @@
1
+ import { MetricsDisplayType } from '../constants';
2
+ type UseMetricsDisplayType = [MetricsDisplayType, (value: MetricsDisplayType) => void];
3
+ export declare const useMetricsDisplayType: () => UseMetricsDisplayType;
4
+ export {};