@bundle-stats/ui 4.23.0-beta.3 → 4.23.0-beta.5

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 (153) hide show
  1. package/lib/app/app.module.css +4 -2
  2. package/lib/app/header/header.module.css +1 -3
  3. package/lib/chart-colors.json +56 -56
  4. package/lib/components/asset-name/asset-name.js +8 -7
  5. package/lib/components/asset-name/asset-name.js.map +1 -1
  6. package/lib/components/asset-name/asset-name.module.css +20 -10
  7. package/lib/components/bundle-assets/bundle-assets.js +4 -2
  8. package/lib/components/bundle-assets/bundle-assets.js.map +1 -1
  9. package/lib/components/bundle-assets/bundle-assets.module.css +0 -12
  10. package/lib/components/bundle-assets-totals/bundle-assets-totals.js +4 -2
  11. package/lib/components/bundle-assets-totals/bundle-assets-totals.js.map +1 -1
  12. package/lib/components/bundle-modules/bundle-modules.js +4 -2
  13. package/lib/components/bundle-modules/bundle-modules.js.map +1 -1
  14. package/lib/components/bundle-modules/bundle-modules.module.css +8 -16
  15. package/lib/components/bundle-packages/bundle-packages.js +4 -2
  16. package/lib/components/bundle-packages/bundle-packages.js.map +1 -1
  17. package/lib/components/bundle-packages/bundle-packages.module.css +21 -22
  18. package/lib/components/entry-info/entry-info.module.css +0 -1
  19. package/lib/components/metric-run-info/metric-run-info.js +3 -2
  20. package/lib/components/metric-run-info/metric-run-info.js.map +1 -1
  21. package/lib/components/metrics-display-selector/metrics-display-selector.module.css +0 -2
  22. package/lib/components/metrics-table/metrics-table.js +31 -20
  23. package/lib/components/metrics-table/metrics-table.js.map +1 -1
  24. package/lib/components/metrics-table/metrics-table.module.css +4 -12
  25. package/lib/components/metrics-table-options/metrics-table-options.js +4 -4
  26. package/lib/components/metrics-table-options/metrics-table-options.js.map +1 -1
  27. package/lib/components/metrics-table-row-count/index.js +18 -0
  28. package/lib/components/metrics-table-row-count/index.js.map +1 -0
  29. package/lib/components/metrics-table-row-count/metrics-table-row-count.js +17 -0
  30. package/lib/components/metrics-table-row-count/metrics-table-row-count.js.map +1 -0
  31. package/lib/components/metrics-table-row-count/metrics-table-row-count.module.css +5 -0
  32. package/lib/components/sort-button/sort-button.module.css +0 -2
  33. package/lib/components/summary/summary.module.css +10 -3
  34. package/lib/css/default.css +7 -4
  35. package/lib/css/variables.css +21 -17
  36. package/lib/layout/flex-stack/flex-stack.js +2 -2
  37. package/lib/layout/flex-stack/flex-stack.js.map +1 -1
  38. package/lib/layout/flex-stack/flex-stack.module.css +65 -10
  39. package/lib/ui/button/button.js +1 -0
  40. package/lib/ui/button/button.js.map +1 -1
  41. package/lib/ui/button/button.module.css +28 -28
  42. package/lib/ui/copy-to-clipboard/copy-to-clipboard.module.css +2 -2
  43. package/lib/ui/dropdown/dropdown.module.css +4 -2
  44. package/lib/ui/filters/filters.js +6 -5
  45. package/lib/ui/filters/filters.js.map +1 -1
  46. package/lib/ui/filters/filters.module.css +3 -5
  47. package/lib/ui/hover-card/hover-card.module.css +4 -5
  48. package/lib/ui/input/input.module.css +2 -2
  49. package/lib/ui/table/table.module.css +12 -5
  50. package/lib/ui/tabs/tabs.module.css +13 -9
  51. package/lib/ui/tag/tag.module.css +0 -2
  52. package/lib/ui/textarea/textarea.module.css +2 -2
  53. package/lib-esm/app/app.module.css +4 -2
  54. package/lib-esm/app/header/header.module.css +1 -3
  55. package/lib-esm/chart-colors.json +56 -56
  56. package/lib-esm/components/asset-name/asset-name.js +8 -7
  57. package/lib-esm/components/asset-name/asset-name.js.map +1 -1
  58. package/lib-esm/components/asset-name/asset-name.module.css +20 -10
  59. package/lib-esm/components/bundle-assets/bundle-assets.js +4 -2
  60. package/lib-esm/components/bundle-assets/bundle-assets.js.map +1 -1
  61. package/lib-esm/components/bundle-assets/bundle-assets.module.css +0 -12
  62. package/lib-esm/components/bundle-assets-totals/bundle-assets-totals.js +4 -2
  63. package/lib-esm/components/bundle-assets-totals/bundle-assets-totals.js.map +1 -1
  64. package/lib-esm/components/bundle-modules/bundle-modules.js +4 -2
  65. package/lib-esm/components/bundle-modules/bundle-modules.js.map +1 -1
  66. package/lib-esm/components/bundle-modules/bundle-modules.module.css +8 -16
  67. package/lib-esm/components/bundle-packages/bundle-packages.js +4 -2
  68. package/lib-esm/components/bundle-packages/bundle-packages.js.map +1 -1
  69. package/lib-esm/components/bundle-packages/bundle-packages.module.css +21 -22
  70. package/lib-esm/components/entry-info/entry-info.module.css +0 -1
  71. package/lib-esm/components/metric-run-info/metric-run-info.js +3 -2
  72. package/lib-esm/components/metric-run-info/metric-run-info.js.map +1 -1
  73. package/lib-esm/components/metrics-display-selector/metrics-display-selector.module.css +0 -2
  74. package/lib-esm/components/metrics-table/metrics-table.js +32 -20
  75. package/lib-esm/components/metrics-table/metrics-table.js.map +1 -1
  76. package/lib-esm/components/metrics-table/metrics-table.module.css +4 -12
  77. package/lib-esm/components/metrics-table-options/metrics-table-options.js +4 -4
  78. package/lib-esm/components/metrics-table-options/metrics-table-options.js.map +1 -1
  79. package/lib-esm/components/metrics-table-row-count/index.js +2 -0
  80. package/lib-esm/components/metrics-table-row-count/index.js.map +1 -0
  81. package/lib-esm/components/metrics-table-row-count/metrics-table-row-count.js +10 -0
  82. package/lib-esm/components/metrics-table-row-count/metrics-table-row-count.js.map +1 -0
  83. package/lib-esm/components/metrics-table-row-count/metrics-table-row-count.module.css +5 -0
  84. package/lib-esm/components/sort-button/sort-button.module.css +0 -2
  85. package/lib-esm/components/summary/summary.module.css +10 -3
  86. package/lib-esm/css/default.css +7 -4
  87. package/lib-esm/css/variables.css +21 -17
  88. package/lib-esm/layout/flex-stack/flex-stack.js +3 -2
  89. package/lib-esm/layout/flex-stack/flex-stack.js.map +1 -1
  90. package/lib-esm/layout/flex-stack/flex-stack.module.css +65 -10
  91. package/lib-esm/ui/button/button.js +1 -0
  92. package/lib-esm/ui/button/button.js.map +1 -1
  93. package/lib-esm/ui/button/button.module.css +28 -28
  94. package/lib-esm/ui/copy-to-clipboard/copy-to-clipboard.module.css +2 -2
  95. package/lib-esm/ui/dropdown/dropdown.module.css +4 -2
  96. package/lib-esm/ui/filters/filters.js +6 -5
  97. package/lib-esm/ui/filters/filters.js.map +1 -1
  98. package/lib-esm/ui/filters/filters.module.css +3 -5
  99. package/lib-esm/ui/hover-card/hover-card.module.css +4 -5
  100. package/lib-esm/ui/input/input.module.css +2 -2
  101. package/lib-esm/ui/table/table.module.css +12 -5
  102. package/lib-esm/ui/tabs/tabs.module.css +13 -9
  103. package/lib-esm/ui/tag/tag.module.css +0 -2
  104. package/lib-esm/ui/textarea/textarea.module.css +2 -2
  105. package/package.json +3 -3
  106. package/src/app/app.module.css +4 -2
  107. package/src/app/header/header.module.css +1 -3
  108. package/src/chart-colors.json +56 -56
  109. package/src/components/asset-name/asset-name.module.css +20 -10
  110. package/src/components/asset-name/asset-name.tsx +8 -12
  111. package/src/components/bundle-assets/bundle-assets.module.css +0 -12
  112. package/src/components/bundle-assets/bundle-assets.tsx +8 -1
  113. package/src/components/bundle-assets-totals/bundle-assets-totals.jsx +6 -4
  114. package/src/components/bundle-modules/bundle-modules.module.css +8 -16
  115. package/src/components/bundle-modules/bundle-modules.tsx +8 -1
  116. package/src/components/bundle-packages/bundle-packages.jsx +5 -1
  117. package/src/components/bundle-packages/bundle-packages.module.css +21 -22
  118. package/src/components/entry-info/entry-info.module.css +0 -1
  119. package/src/components/metric-run-info/metric-run-info.stories.tsx +9 -0
  120. package/src/components/metric-run-info/metric-run-info.tsx +9 -2
  121. package/src/components/metrics-display-selector/metrics-display-selector.module.css +0 -2
  122. package/src/components/metrics-table/metrics-table.module.css +4 -12
  123. package/src/components/metrics-table/metrics-table.tsx +70 -39
  124. package/src/components/metrics-table-options/metrics-table-options.tsx +12 -12
  125. package/src/components/metrics-table-row-count/index.ts +1 -0
  126. package/src/components/metrics-table-row-count/metrics-table-row-count.module.css +5 -0
  127. package/src/components/metrics-table-row-count/metrics-table-row-count.tsx +21 -0
  128. package/src/components/sort-button/sort-button.module.css +0 -2
  129. package/src/components/summary/summary.module.css +10 -3
  130. package/src/css/default.css +7 -4
  131. package/src/css/variables.css +21 -17
  132. package/src/layout/flex-stack/flex-stack.module.css +65 -10
  133. package/src/layout/flex-stack/flex-stack.stories.tsx +68 -9
  134. package/src/layout/flex-stack/flex-stack.tsx +24 -4
  135. package/src/ui/button/button.module.css +28 -28
  136. package/src/ui/button/button.tsx +1 -0
  137. package/src/ui/copy-to-clipboard/copy-to-clipboard.module.css +2 -2
  138. package/src/ui/dropdown/dropdown.module.css +4 -2
  139. package/src/ui/dropdown/dropdown.stories.tsx +6 -0
  140. package/src/ui/filters/filters.module.css +3 -5
  141. package/src/ui/filters/filters.tsx +21 -16
  142. package/src/ui/hover-card/hover-card.module.css +4 -5
  143. package/src/ui/input/input.module.css +2 -2
  144. package/src/ui/table/table.module.css +12 -5
  145. package/src/ui/tabs/tabs.module.css +13 -9
  146. package/src/ui/tag/tag.module.css +0 -2
  147. package/src/ui/textarea/textarea.module.css +2 -2
  148. package/types/components/metric-run-info/metric-run-info.d.ts +1 -1
  149. package/types/components/metrics-table/metrics-table.d.ts +2 -1
  150. package/types/components/metrics-table-row-count/index.d.ts +1 -0
  151. package/types/components/metrics-table-row-count/metrics-table-row-count.d.ts +7 -0
  152. package/types/layout/flex-stack/flex-stack.d.ts +6 -2
  153. package/types/ui/button/button.d.ts +1 -0
@@ -28,7 +28,7 @@ export const Default: Story = {
28
28
  },
29
29
  };
30
30
 
31
- export const withCustomWrapper: Story = {
31
+ export const WithCustomWrapper: Story = {
32
32
  args: {
33
33
  as: 'main',
34
34
  className: 'wrapper',
@@ -41,9 +41,9 @@ export const withCustomWrapper: Story = {
41
41
  },
42
42
  };
43
43
 
44
- export const withLargeSpace: Story = {
44
+ export const WithLargeGap: Story = {
45
45
  args: {
46
- space: 'large',
46
+ gap: 'large',
47
47
  children: (
48
48
  <>
49
49
  <Box outline>Lorem ipsum 1</Box>
@@ -54,14 +54,14 @@ export const withLargeSpace: Story = {
54
54
  },
55
55
  };
56
56
 
57
- export const withNestedStack: Story = {
57
+ export const WithNestedStack: Story = {
58
58
  args: {
59
- space: 'large',
59
+ gap: 'large',
60
60
  children: (
61
61
  <>
62
62
  <Box outline>Lorem ipsum 1</Box>
63
63
  <Box outline>Lorem ipsum 2</Box>
64
- <FlexStack space="small">
64
+ <FlexStack gap="small">
65
65
  <Box outline>Lorem ipsum 3.1</Box>
66
66
  <Box outline>Lorem ipsum 3.2</Box>
67
67
  </FlexStack>
@@ -70,16 +70,61 @@ export const withNestedStack: Story = {
70
70
  },
71
71
  };
72
72
 
73
- export const singleItem: Story = {
73
+ export const SingleItem: Story = {
74
74
  args: {
75
75
  children: <Box outline>Lorem ipsum</Box>,
76
76
  },
77
77
  };
78
78
 
79
- export const withAlignItems: Story = {
79
+ export const WithDirectionColumn: Story = {
80
+ args: {
81
+ direction: 'column',
82
+ gap: 'medium',
83
+ children: (
84
+ <>
85
+ <Box outline>Lorem ipsum 1</Box>
86
+ <Box outline>Lorem ipsum 2</Box>
87
+ <Box outline>Lorem ipsum 3</Box>
88
+ </>
89
+ ),
90
+ },
91
+ };
92
+
93
+ export const WithDirectionRowReverse: Story = {
94
+ args: {
95
+ direction: 'row-reverse',
96
+ gap: 'medium',
97
+ children: (
98
+ <>
99
+ <Box outline>Lorem ipsum 1</Box>
100
+ <Box outline>Lorem ipsum 2</Box>
101
+ <Box outline>Lorem ipsum 3</Box>
102
+ </>
103
+ ),
104
+ },
105
+ };
106
+
107
+ export const WithWrap: Story = {
108
+ args: {
109
+ wrap: 'wrap',
110
+ gap: 'medium',
111
+ style: { maxWidth: '320px' },
112
+ children: (
113
+ <>
114
+ <Box outline>Lorem ipsum 1</Box>
115
+ <Box outline>Lorem ipsum 2</Box>
116
+ <Box outline>Lorem ipsum 3</Box>
117
+ <Box outline>Lorem ipsum 4</Box>
118
+ <Box outline>Lorem ipsum 5</Box>
119
+ </>
120
+ ),
121
+ },
122
+ };
123
+
124
+ export const WithAlignItems: Story = {
80
125
  args: {
81
126
  alignItems: 'center',
82
- space: 'medium',
127
+ gap: 'medium',
83
128
  children: (
84
129
  <>
85
130
  <h1>Title</h1>
@@ -88,3 +133,17 @@ export const withAlignItems: Story = {
88
133
  ),
89
134
  },
90
135
  };
136
+
137
+ export const WithJustifyContent: Story = {
138
+ args: {
139
+ justifyContent: 'space-between',
140
+ gap: 'medium',
141
+ children: (
142
+ <>
143
+ <Box outline>Lorem ipsum 1</Box>
144
+ <Box outline>Lorem ipsum 2</Box>
145
+ <Box outline>Lorem ipsum 3</Box>
146
+ </>
147
+ ),
148
+ },
149
+ };
@@ -6,12 +6,25 @@ import css from './flex-stack.module.css';
6
6
 
7
7
  type SpaceValue = (typeof SPACES)[number];
8
8
 
9
- interface FlexStackProps<T extends React.ElementType> {
9
+ export type FlexStackProps<T extends React.ElementType> = {
10
10
  as?: T;
11
+ gap?: SpaceValue;
12
+ /**
13
+ * @deprecated Use `gap` instead.
14
+ */
11
15
  space?: SpaceValue;
12
16
  inline?: boolean;
17
+ direction?: 'row' | 'row-reverse' | 'column' | 'column-reverse';
18
+ wrap?: 'nowrap' | 'wrap' | 'wrap-reverse';
13
19
  alignItems?: 'top' | 'center' | 'bottom';
14
- }
20
+ justifyContent?:
21
+ | 'flex-start'
22
+ | 'flex-end'
23
+ | 'center'
24
+ | 'space-between'
25
+ | 'space-around'
26
+ | 'space-evenly';
27
+ };
15
28
 
16
29
  export const FlexStack = <T extends React.ElementType = 'div'>(
17
30
  props: FlexStackProps<T> & Omit<React.ComponentProps<T>, keyof FlexStackProps<T>>,
@@ -19,16 +32,23 @@ export const FlexStack = <T extends React.ElementType = 'div'>(
19
32
  const {
20
33
  as: Component = 'div',
21
34
  className = '',
22
- space = NO_SPACE,
35
+ gap,
36
+ space,
23
37
  inline = false,
38
+ direction = '',
39
+ wrap = '',
24
40
  alignItems = '',
41
+ justifyContent = '',
25
42
  ...restProps
26
43
  } = props;
27
44
 
28
45
  const rootClassName = cx(
29
46
  css.root,
30
- css[`space--${space}`],
47
+ css[`gap--${gap ?? space ?? NO_SPACE}`],
48
+ css[`direction--${direction}`],
49
+ css[`wrap--${wrap}`],
31
50
  css[`align-items--${alignItems}`],
51
+ css[`justify-content--${justifyContent}`],
32
52
  inline && css.inline,
33
53
  className,
34
54
  );
@@ -3,28 +3,32 @@
3
3
  --button-space: 0px;
4
4
  /* button border width */
5
5
  --border-width: 0px;
6
+ /* line height in pixels to prevent layout shift when rendering a glyph */
7
+ --line-height: var(--space-small);
6
8
 
7
9
  display: inline-flex;
8
10
  align-items: center;
9
11
  justify-content: center;
10
- gap: calc(max(var(--button-space), var(--space-xxsmall)) * 0.66);
12
+ gap: calc(var(--button-space) * 0.66);
11
13
  appearance: none;
12
14
  padding: 0;
13
15
  border: var(--border-width) solid transparent;
14
16
  background: none;
15
- transition: var(--transition-out);
16
17
  color: var(--color-text-ultra-light);
18
+ font-size: var(--size-medium);
17
19
  font-family: var(--font-family);
20
+ line-height: var(--line-height);
18
21
  white-space: nowrap;
22
+ transition: var(--transition-out);
19
23
  }
20
24
 
21
25
  a.root {
22
26
  text-decoration: none;
23
27
  }
24
28
 
29
+ .root:focus,
25
30
  .root:hover,
26
- .root:active,
27
- .root:focus {
31
+ .root:active {
28
32
  outline: none;
29
33
  color: var(--color-text-light);
30
34
  transition: var(--transition-in);
@@ -32,6 +36,8 @@ a.root {
32
36
 
33
37
  .glyph {
34
38
  flex: 0 0 auto;
39
+ width: var(--line-height);
40
+ height: var(--line-height);
35
41
  }
36
42
 
37
43
  .text {
@@ -43,13 +49,13 @@ a.root {
43
49
  * Kind variation
44
50
  */
45
51
  .primary {
46
- color: var(--color-primary);
52
+ color: var(--color-accent);
47
53
  }
48
54
 
49
55
  .primary:hover,
50
56
  .primary:active,
51
57
  .primary:focus {
52
- color: var(--color-primary-dark);
58
+ color: var(--color-accent-dark);
53
59
  }
54
60
 
55
61
  .secondary {
@@ -106,14 +112,14 @@ a.root {
106
112
  * Solid Kind variation
107
113
  */
108
114
  .solid {
109
- background: var(--color-text-ultra-light);
115
+ background: var(--color-accent);
110
116
  color: var(--color-background);
111
117
  }
112
118
 
113
119
  .solid:hover,
114
120
  .solid:active,
115
121
  .solid:focus {
116
- background: var(--color-text-light);
122
+ background: var(--color-accent-dark);
117
123
  color: var(--color-background);
118
124
  }
119
125
 
@@ -180,40 +186,30 @@ a.root {
180
186
  /**
181
187
  * Size variation
182
188
  */
189
+ .xsmall {
190
+ --button-space: var(--space-xxxsmall);
191
+ --line-height: var(--space-xsmall);
192
+
193
+ font-size: var(--size-xsmall);
194
+ }
195
+
183
196
  .small {
184
197
  --button-space: var(--space-xxsmall);
198
+ --line-height: var(--space-small);
185
199
 
186
200
  font-size: var(--size-small);
187
- line-height: var(--space-small);
188
- }
189
-
190
- .small .glyph {
191
- width: var(--space-small);
192
- height: var(--space-small);
193
201
  }
194
202
 
195
203
  .medium {
196
204
  --button-space: var(--space-xsmall);
197
-
198
- font-size: var(--size-medium);
199
- line-height: calc(var(--space-small) + var(--space-xxxsmall));
200
- }
201
-
202
- .medium .glyph {
203
- width: calc(var(--space-small) + var(--space-xxxsmall));
204
- height: calc(var(--space-small) + var(--space-xxxsmall));
205
+ --line-height: calc(var(--space-small) + var(--space-xxxsmall));
205
206
  }
206
207
 
207
208
  .large {
208
209
  --button-space: var(--space-small);
210
+ --line-height: var(--space-medium);
209
211
 
210
212
  font-size: var(--size-large);
211
- line-height: var(--space-medium);
212
- }
213
-
214
- .large .glyph {
215
- width: var(--space-medium);
216
- height: var(--space-medium);
217
213
  }
218
214
 
219
215
  /**
@@ -300,6 +296,10 @@ a.root {
300
296
  /**
301
297
  * Radius variation
302
298
  */
299
+ .radius--xsmall {
300
+ border-radius: var(--radius-xsmall);
301
+ }
302
+
303
303
  .radius--small {
304
304
  border-radius: var(--radius-small);
305
305
  }
@@ -6,6 +6,7 @@ import { Icon as BaseIcon } from '../icon';
6
6
  import css from './button.module.css';
7
7
 
8
8
  export const BUTTON_SIZE = {
9
+ XSMALL: 'xsmall',
9
10
  SMALL: 'small',
10
11
  MEDIUM: 'medium',
11
12
  LARGE: 'large',
@@ -6,10 +6,10 @@
6
6
 
7
7
  /** done state */
8
8
  .root svg {
9
- transition: var(--ui-transition-out);
9
+ transition: var(--transition-out);
10
10
  }
11
11
 
12
12
  .done svg {
13
13
  color: var(--color-success);
14
- transition: var(--ui-transition-in);
14
+ transition: var(--transition-in);
15
15
  }
@@ -45,6 +45,9 @@
45
45
  border-radius: var(--radius-small);
46
46
  padding: var(--space-xxxsmall);
47
47
  background: none;
48
+ color: inherit;
49
+ font-size: inherit;
50
+ line-height: inherit;
48
51
  text-align: left;
49
52
  text-decoration: none;
50
53
  cursor: default;
@@ -70,14 +73,13 @@
70
73
  color: var(--color-primary-dark);
71
74
  }
72
75
 
73
-
74
76
  .group {
75
77
  position: relative;
76
78
  padding: calc(var(--space-xxxsmall) / 2 + 1px) 0 calc(var(--space-xxxsmall) / 2);
77
79
  }
78
80
 
79
81
  .group::before {
80
- content: " ";
82
+ content: ' ';
81
83
  display: block;
82
84
  position: absolute;
83
85
  left: var(--space-xxxsmall);
@@ -15,6 +15,12 @@ const meta = {
15
15
  <>
16
16
  <DropdownItem>Option 1</DropdownItem>
17
17
  <DropdownItem>Option 2</DropdownItem>
18
+ <DropdownItem as="a" href="#">
19
+ Option 3
20
+ </DropdownItem>
21
+ <DropdownItem as="button" onClick={() => alert('Select option')}>
22
+ Option 4
23
+ </DropdownItem>
18
24
  </>
19
25
  ),
20
26
  },
@@ -45,9 +45,9 @@
45
45
  transition: var(--transition-out);
46
46
  }
47
47
 
48
- .filterSingle:hover,
48
+ .filterSingle:focus,
49
49
  .filterSingle:active,
50
- .filterSingle:focus {
50
+ .filterSingle:hover {
51
51
  border-color: var(--color-outline-dark);
52
52
  transition: var(--transition-in);
53
53
  }
@@ -72,8 +72,6 @@
72
72
  right: 2px;
73
73
  top: 50%;
74
74
  transform: translateY(-50%);
75
- padding: var(--space-xxxsmall);
76
- font-size: var(--size-xsmall);
77
75
  line-height: 1.1;
78
76
  }
79
77
 
@@ -102,8 +100,8 @@
102
100
  }
103
101
 
104
102
  .filterGroupSearchNotFound {
105
- padding: var(--space-xxsmall) 0;
106
103
  text-align: center;
104
+ min-height: calc(10 * (var(--space-small) + 2 * var(--space-xxxsmall)));
107
105
  font-size: var(--size-small);
108
106
  color: var(--color-text-light);
109
107
  }
@@ -100,9 +100,8 @@ const FilterDropdownItem = (props: FilterDropdownItemProps) => {
100
100
  className={css.filterGroupItemFilter}
101
101
  />
102
102
  <Button
103
- kind="info"
104
103
  solid
105
- size="small"
104
+ size="xsmall"
106
105
  type="button"
107
106
  onClick={onOnlyClick}
108
107
  disabled={disabled}
@@ -189,20 +188,26 @@ const FilterGroup = (props: FilterGroupProps) => {
189
188
  )}
190
189
  <DropdownGroup className={css.filterGroupItems}>
191
190
  {filteredGroupItems.length === 0 && (
192
- <Stack className={css.filterGroupSearchNotFound}>
193
- <p>{I18N.GROUP_NOT_FOUND}</p>
194
- <div>
195
- <Button
196
- size="small"
197
- kind="primary"
198
- type="button"
199
- onClick={() => setSearch('')}
200
- className={css.filterGroupSearchNotFoundClear}
201
- >
202
- {I18N.GROUP_SEARCH_CLEAR}
203
- </Button>
204
- </div>
205
- </Stack>
191
+ <FlexStack
192
+ alignItems="center"
193
+ justifyContent="center"
194
+ className={css.filterGroupSearchNotFound}
195
+ >
196
+ <Stack space="xxxsmall">
197
+ <p>{I18N.GROUP_NOT_FOUND}</p>
198
+ <div>
199
+ <Button
200
+ solid
201
+ size="xsmall"
202
+ type="button"
203
+ onClick={() => setSearch('')}
204
+ className={css.filterGroupSearchNotFoundClear}
205
+ >
206
+ {I18N.GROUP_SEARCH_CLEAR}
207
+ </Button>
208
+ </div>
209
+ </Stack>
210
+ </FlexStack>
206
211
  )}
207
212
  {filteredGroupItems.map(({ key: itemKey, ...itemData }) => {
208
213
  const id = getGroupItemKey(groupKey, itemKey);
@@ -10,13 +10,12 @@
10
10
  transition: var(--transition-out);
11
11
  }
12
12
 
13
+ .anchor:focus,
14
+ .anchor:active,
13
15
  .anchor:hover {
14
- color: var(--color-primary);
15
- transition: var(--transition-in);
16
- }
17
-
18
- .anchor:focus {
16
+ color: var(--color-accent-dark);
19
17
  outline: 0;
18
+ transition: var(--transition-in);
20
19
  }
21
20
 
22
21
  .hoverCard {
@@ -3,7 +3,7 @@
3
3
  border-radius: var(--radius-small);
4
4
  color: var(--color-text-light);
5
5
  width: 100%;
6
- transition: var(--transition-in);
6
+ transition: var(--transition-out);
7
7
  appearance: none;
8
8
  outline: none;
9
9
  }
@@ -27,7 +27,7 @@
27
27
  .root:focus {
28
28
  border-color: var(--color-outline-dark);
29
29
  color: inherit;
30
- transition: var(--transition-out);
30
+ transition: var(--transition-in);
31
31
  }
32
32
 
33
33
  /** Size modifier */
@@ -33,21 +33,28 @@
33
33
  border-top: 0;
34
34
  }
35
35
 
36
- .root tbody td a {
36
+ .root tbody a {
37
37
  color: inherit;
38
38
  text-decoration: none;
39
39
  }
40
40
 
41
- .root tbody td a:hover,
42
- .root tbody td a:focus,
43
- .root tbody td a:active {
44
- color: var(--color-primary);
41
+ .root tbody a:focus,
42
+ .root tbody a:active,
43
+ .root tbody a:hover {
44
+ color: var(--color-accent);
45
45
  text-decoration: underline;
46
46
  }
47
47
 
48
+ /* hover current row */
49
+ .root tbody tr th,
50
+ .root tbody tr td {
51
+ transition: var(--transition-out);
52
+ }
53
+
48
54
  .root tbody tr:hover th,
49
55
  .root tbody tr:hover td {
50
56
  background-color: var(--color-highlight-warning);
57
+ transition: var(--transition-in);
51
58
  }
52
59
 
53
60
  .empty {
@@ -13,7 +13,7 @@
13
13
  color: var(--color-text-ultra-light);
14
14
  font-weight: bold;
15
15
  text-decoration: none;
16
- transition: var(--ui-transition-out);
16
+ transition: var(--transition-out);
17
17
  }
18
18
 
19
19
  .item::after {
@@ -24,27 +24,31 @@
24
24
  right: 0;
25
25
  bottom: -1px;
26
26
  height: 2px;
27
- background: transparent;
27
+ background: currentColor;
28
+ opacity: 0;
29
+ transition: var(--transition-out);
28
30
  }
29
31
 
30
- .item:hover,
32
+ .item:focus,
31
33
  .item:active,
32
- .item:focus {
33
- color: var(--color-primary);
34
+ .item:hover {
35
+ color: var(--color-accent);
34
36
  outline: none;
35
- transition: var(--ui-transition-out);
36
37
  }
37
38
 
38
39
  .item:hover::after,
39
40
  .item:active::after,
40
41
  .item:focus::after {
41
- background: currentColor;
42
+ opacity: 1;
43
+ transition: var(--transition-in);
42
44
  }
43
45
 
44
46
  .itemActive {
45
- color: var(--color-primary);
47
+ color: var(--color-accent);
48
+ transition: var(--transition-in);
46
49
  }
47
50
 
48
51
  .itemActive::after {
49
- background: currentColor;
52
+ opacity: 1;
53
+ transition: var(--transition-in);
50
54
  }
@@ -10,7 +10,6 @@
10
10
 
11
11
  a.root {
12
12
  text-decoration: none;
13
- transition: var(--transition-out);
14
13
  }
15
14
 
16
15
  a.root:hover,
@@ -19,7 +18,6 @@ a.root:active {
19
18
  opacity: 0.8;
20
19
  color: var(--color-light);
21
20
  text-decoration: none;
22
- transition: var(--transition-in);
23
21
  }
24
22
 
25
23
  /** Kind variation */
@@ -4,7 +4,7 @@
4
4
  color: var(--color-text-light);
5
5
  width: 100%;
6
6
  resize: vertical;
7
- transition: var(--transition-in);
7
+ transition: var(--transition-out);
8
8
  appearance: none;
9
9
  outline: none;
10
10
  }
@@ -28,7 +28,7 @@
28
28
  .root:focus {
29
29
  border-color: var(--color-outline-dark);
30
30
  color: inherit;
31
- transition: var(--transition-out);
31
+ transition: var(--transition-in);
32
32
  }
33
33
 
34
34
  .root[readonly=''] {
@@ -6,6 +6,6 @@ export type MetricRunInfoProps = {
6
6
  baseline?: number;
7
7
  showMetricDescription?: boolean;
8
8
  titleWrapper?: ElementType;
9
- showDeltaValue?: boolean;
9
+ showDeltaAbsoluteValue?: boolean;
10
10
  } & Pick<RunInfoProps, 'showDelta' | 'showBaseline' | 'size' | 'loading'>;
11
11
  export declare const MetricRunInfo: (props: MetricRunInfoProps & React.ComponentProps<"div">) => React.JSX.Element;
@@ -13,9 +13,10 @@ interface MetricsTableProps extends Omit<React.ComponentProps<typeof Table>, 'ti
13
13
  sort?: MetricsTableHeaderProps['sort'];
14
14
  updateSort?: MetricsTableHeaderProps['updateSort'];
15
15
  renderRowHeader?: (item: ReportMetricRow) => React.ReactNode;
16
+ onRowClick?: (item: ReportMetricRow) => void;
16
17
  emptyMessage?: React.ReactNode;
17
18
  showAllItems: boolean;
18
19
  setShowAllItems: (value: boolean) => void;
19
20
  }
20
- export declare const MetricsTable: ({ className, runs, items, showHeaderSum, title, sort, updateSort, renderRowHeader, emptyMessage, showAllItems, setShowAllItems, ...restProps }: MetricsTableProps) => React.JSX.Element;
21
+ export declare const MetricsTable: ({ className, runs, items, showHeaderSum, title, sort, updateSort, renderRowHeader, onRowClick, emptyMessage, showAllItems, setShowAllItems, ...restProps }: MetricsTableProps) => React.JSX.Element;
21
22
  export {};
@@ -0,0 +1 @@
1
+ export * from './metrics-table-row-count';
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { FlexStackProps } from '../../layout/flex-stack';
3
+ export type MetricsTableRowCountProps = {
4
+ count: number;
5
+ total: number;
6
+ } & FlexStackProps<'span'>;
7
+ export declare const MetricsTableRowCount: (props: MetricsTableRowCountProps) => React.JSX.Element;
@@ -1,11 +1,15 @@
1
1
  import React from 'react';
2
2
  import { SPACES } from '../../tokens';
3
3
  type SpaceValue = (typeof SPACES)[number];
4
- interface FlexStackProps<T extends React.ElementType> {
4
+ export type FlexStackProps<T extends React.ElementType> = {
5
5
  as?: T;
6
+ gap?: SpaceValue;
6
7
  space?: SpaceValue;
7
8
  inline?: boolean;
9
+ direction?: 'row' | 'row-reverse' | 'column' | 'column-reverse';
10
+ wrap?: 'nowrap' | 'wrap' | 'wrap-reverse';
8
11
  alignItems?: 'top' | 'center' | 'bottom';
9
- }
12
+ justifyContent?: 'flex-start' | 'flex-end' | 'center' | 'space-between' | 'space-around' | 'space-evenly';
13
+ };
10
14
  export declare const FlexStack: <T extends React.ElementType = "div">(props: FlexStackProps<T> & Omit<React.ComponentProps<T>, keyof FlexStackProps<T>>) => React.JSX.Element;
11
15
  export {};
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { Icon as BaseIcon } from '../icon';
3
3
  export declare const BUTTON_SIZE: {
4
+ readonly XSMALL: "xsmall";
4
5
  readonly SMALL: "small";
5
6
  readonly MEDIUM: "medium";
6
7
  readonly LARGE: "large";