@bundle-stats/ui 3.3.0-alpha.1 → 3.4.0-alpha.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 (178) hide show
  1. package/CHANGELOG.md +94 -13
  2. package/lib/app/app.js +137 -102
  3. package/lib/app/app.module.css +11 -4
  4. package/lib/app/header/header.js +1 -10
  5. package/lib/components/asset-info/asset-info.module.css +1 -0
  6. package/lib/components/bundle-assets/bundle-assets.js +104 -52
  7. package/lib/components/bundle-assets/bundle-assets.module.css +24 -26
  8. package/lib/components/bundle-assets-totals-table/bundle-assets-totals-table.js +13 -3
  9. package/lib/components/bundle-modules/bundle-modules.js +53 -67
  10. package/lib/components/bundle-packages/bundle-packages.js +100 -44
  11. package/lib/components/bundle-packages/bundle-packages.module.css +17 -21
  12. package/lib/components/delta/delta.module.css +1 -0
  13. package/lib/components/job-header/job-header.js +3 -1
  14. package/lib/components/job-header/job-header.module.css +6 -8
  15. package/lib/components/jobs-header/jobs-header.module.css +5 -0
  16. package/lib/components/metrics-table/metrics-table.js +72 -59
  17. package/lib/components/metrics-table/metrics-table.module.css +18 -7
  18. package/lib/components/metrics-table-search/metrics-table-search.module.css +5 -4
  19. package/lib/components/metrics-table-title/metrics-table-title.js +9 -7
  20. package/lib/components/metrics-table-title/metrics-table-title.module.css +2 -0
  21. package/lib/components/module-info/module-info.js +2 -2
  22. package/lib/components/module-info/module-info.module.css +1 -0
  23. package/lib/components/summary/summary.js +1 -1
  24. package/lib/components/summary-item/summary-item.js +15 -18
  25. package/lib/components/summary-item/summary-item.module.css +1 -23
  26. package/lib/components/total-size-type-title/total-size-type-title.js +7 -3
  27. package/lib/css/default.css +14 -3
  28. package/lib/css/variables.css +17 -17
  29. package/lib/hooks/search-params.js +31 -31
  30. package/lib/layout/box/box.module.css +9 -0
  31. package/lib/layout/footer/footer.module.css +1 -1
  32. package/lib/layout/index.js +8 -0
  33. package/lib/layout/separator.js +48 -0
  34. package/lib/layout/separator.module.css +5 -0
  35. package/lib/ui/dropdown/dropdown.js +21 -26
  36. package/lib/ui/dropdown/dropdown.module.css +11 -12
  37. package/lib/ui/dropdown/dropdown.stories.js +2 -9
  38. package/lib/ui/empty-set/empty-set.js +5 -4
  39. package/lib/ui/empty-set/empty-set.module.css +2 -2
  40. package/lib/ui/filters/filters.container.js +1 -1
  41. package/lib/ui/filters/filters.js +22 -7
  42. package/lib/ui/filters/filters.module.css +3 -3
  43. package/lib/ui/horizontal-bar-chart/horizontal-bar-chart.js +1 -1
  44. package/lib/ui/hover-card/hover-card.js +102 -0
  45. package/lib/ui/hover-card/hover-card.module.css +29 -0
  46. package/lib/ui/hover-card/hover-card.stories.js +56 -0
  47. package/lib/ui/hover-card/index.js +18 -0
  48. package/lib/ui/icon/icon.js +6 -6
  49. package/lib/ui/icon/icon.module.css +1 -0
  50. package/lib/ui/index.js +8 -8
  51. package/lib/ui/table/table.js +5 -74
  52. package/lib/ui/table/table.module.css +41 -25
  53. package/lib/ui/table/table.stories.js +1 -1
  54. package/lib/ui/{popover → tag}/index.js +4 -4
  55. package/lib/ui/tag/tag.js +72 -0
  56. package/lib/ui/tag/tag.module.css +55 -0
  57. package/lib/ui/tag/tag.stories.js +38 -0
  58. package/lib/ui/tooltip/tooltip.js +10 -9
  59. package/lib/ui/tooltip/tooltip.module.css +2 -1
  60. package/lib-esm/app/app.js +132 -102
  61. package/lib-esm/app/app.module.css +11 -4
  62. package/lib-esm/app/header/header.js +1 -9
  63. package/lib-esm/components/asset-info/asset-info.module.css +1 -0
  64. package/lib-esm/components/bundle-assets/bundle-assets.js +97 -56
  65. package/lib-esm/components/bundle-assets/bundle-assets.module.css +24 -26
  66. package/lib-esm/components/bundle-assets-totals-table/bundle-assets-totals-table.js +7 -3
  67. package/lib-esm/components/bundle-modules/bundle-modules.js +35 -50
  68. package/lib-esm/components/bundle-packages/bundle-packages.js +88 -41
  69. package/lib-esm/components/bundle-packages/bundle-packages.module.css +17 -21
  70. package/lib-esm/components/delta/delta.module.css +1 -0
  71. package/lib-esm/components/job-header/job-header.js +2 -1
  72. package/lib-esm/components/job-header/job-header.module.css +6 -8
  73. package/lib-esm/components/jobs-header/jobs-header.module.css +5 -0
  74. package/lib-esm/components/metrics-table/metrics-table.js +61 -53
  75. package/lib-esm/components/metrics-table/metrics-table.module.css +18 -7
  76. package/lib-esm/components/metrics-table-search/metrics-table-search.module.css +5 -4
  77. package/lib-esm/components/metrics-table-title/metrics-table-title.js +8 -7
  78. package/lib-esm/components/metrics-table-title/metrics-table-title.module.css +2 -0
  79. package/lib-esm/components/module-info/module-info.js +2 -2
  80. package/lib-esm/components/module-info/module-info.module.css +1 -0
  81. package/lib-esm/components/summary/summary.js +1 -1
  82. package/lib-esm/components/summary-item/summary-item.js +14 -18
  83. package/lib-esm/components/summary-item/summary-item.module.css +1 -23
  84. package/lib-esm/components/total-size-type-title/total-size-type-title.js +6 -3
  85. package/lib-esm/css/default.css +14 -3
  86. package/lib-esm/css/variables.css +17 -17
  87. package/lib-esm/hooks/search-params.js +27 -28
  88. package/lib-esm/layout/box/box.module.css +9 -0
  89. package/lib-esm/layout/footer/footer.module.css +1 -1
  90. package/lib-esm/layout/index.js +1 -0
  91. package/lib-esm/layout/separator.js +28 -0
  92. package/lib-esm/layout/separator.module.css +5 -0
  93. package/lib-esm/ui/dropdown/dropdown.js +20 -25
  94. package/lib-esm/ui/dropdown/dropdown.module.css +11 -12
  95. package/lib-esm/ui/dropdown/dropdown.stories.js +2 -7
  96. package/lib-esm/ui/empty-set/empty-set.js +4 -4
  97. package/lib-esm/ui/empty-set/empty-set.module.css +2 -2
  98. package/lib-esm/ui/filters/filters.js +20 -5
  99. package/lib-esm/ui/filters/filters.module.css +3 -3
  100. package/lib-esm/ui/hover-card/hover-card.js +83 -0
  101. package/lib-esm/ui/hover-card/hover-card.module.css +29 -0
  102. package/lib-esm/ui/hover-card/hover-card.stories.js +35 -0
  103. package/lib-esm/ui/hover-card/index.js +1 -0
  104. package/lib-esm/ui/icon/icon.js +3 -3
  105. package/lib-esm/ui/icon/icon.module.css +1 -0
  106. package/lib-esm/ui/index.js +1 -1
  107. package/lib-esm/ui/table/table.js +5 -65
  108. package/lib-esm/ui/table/table.module.css +41 -25
  109. package/lib-esm/ui/table/table.stories.js +1 -1
  110. package/lib-esm/ui/tag/index.js +1 -0
  111. package/lib-esm/ui/tag/tag.js +45 -0
  112. package/lib-esm/ui/tag/tag.module.css +55 -0
  113. package/lib-esm/ui/tag/tag.stories.js +23 -0
  114. package/lib-esm/ui/tooltip/tooltip.js +10 -9
  115. package/lib-esm/ui/tooltip/tooltip.module.css +2 -1
  116. package/package.json +33 -31
  117. package/src/app/app.jsx +142 -145
  118. package/src/app/app.module.css +11 -4
  119. package/src/app/header/header.jsx +0 -10
  120. package/src/components/asset-info/asset-info.module.css +1 -0
  121. package/src/components/bundle-assets/bundle-assets.jsx +85 -31
  122. package/src/components/bundle-assets/bundle-assets.module.css +24 -26
  123. package/src/components/bundle-assets-totals-table/bundle-assets-totals-table.jsx +2 -0
  124. package/src/components/bundle-modules/bundle-modules.jsx +36 -36
  125. package/src/components/bundle-packages/bundle-packages.jsx +89 -39
  126. package/src/components/bundle-packages/bundle-packages.module.css +17 -21
  127. package/src/components/delta/delta.module.css +1 -0
  128. package/src/components/job-header/job-header.jsx +2 -1
  129. package/src/components/job-header/job-header.module.css +6 -8
  130. package/src/components/jobs-header/jobs-header.module.css +5 -0
  131. package/src/components/metrics-table/metrics-table.jsx +53 -44
  132. package/src/components/metrics-table/metrics-table.module.css +18 -7
  133. package/src/components/metrics-table-search/metrics-table-search.module.css +5 -4
  134. package/src/components/metrics-table-title/metrics-table-title.jsx +20 -21
  135. package/src/components/metrics-table-title/metrics-table-title.module.css +2 -0
  136. package/src/components/module-info/module-info.jsx +3 -7
  137. package/src/components/module-info/module-info.module.css +1 -0
  138. package/src/components/summary/summary.jsx +1 -1
  139. package/src/components/summary-item/summary-item.jsx +21 -27
  140. package/src/components/summary-item/summary-item.module.css +1 -23
  141. package/src/components/total-size-type-title/total-size-type-title.jsx +6 -9
  142. package/src/css/default.css +14 -3
  143. package/src/css/variables.css +17 -17
  144. package/src/hooks/search-params.js +42 -33
  145. package/src/layout/box/box.module.css +9 -0
  146. package/src/layout/footer/footer.module.css +1 -1
  147. package/src/layout/index.js +1 -0
  148. package/src/layout/separator.jsx +25 -0
  149. package/src/layout/separator.module.css +5 -0
  150. package/src/ui/dropdown/dropdown.jsx +16 -22
  151. package/src/ui/dropdown/dropdown.module.css +11 -12
  152. package/src/ui/empty-set/empty-set.jsx +25 -21
  153. package/src/ui/empty-set/empty-set.module.css +2 -2
  154. package/src/ui/filters/filters.jsx +64 -53
  155. package/src/ui/filters/filters.module.css +3 -3
  156. package/src/ui/hover-card/hover-card.jsx +73 -0
  157. package/src/ui/hover-card/hover-card.module.css +29 -0
  158. package/src/ui/hover-card/index.js +1 -0
  159. package/src/ui/icon/icon.jsx +11 -7
  160. package/src/ui/icon/icon.module.css +1 -0
  161. package/src/ui/index.js +1 -1
  162. package/src/ui/table/table.jsx +5 -52
  163. package/src/ui/table/table.module.css +41 -25
  164. package/src/ui/tag/index.js +1 -0
  165. package/src/ui/tag/tag.jsx +49 -0
  166. package/src/ui/tag/tag.module.css +55 -0
  167. package/src/ui/tooltip/tooltip.jsx +10 -14
  168. package/src/ui/tooltip/tooltip.module.css +2 -1
  169. package/lib/ui/popover/popover.js +0 -92
  170. package/lib/ui/popover/popover.module.css +0 -66
  171. package/lib/ui/popover/popover.stories.js +0 -26
  172. package/lib-esm/ui/popover/index.js +0 -1
  173. package/lib-esm/ui/popover/popover.js +0 -71
  174. package/lib-esm/ui/popover/popover.module.css +0 -66
  175. package/lib-esm/ui/popover/popover.stories.js +0 -14
  176. package/src/ui/popover/index.js +0 -1
  177. package/src/ui/popover/popover.jsx +0 -79
  178. package/src/ui/popover/popover.module.css +0 -66
@@ -0,0 +1,73 @@
1
+ import React, { useCallback } from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import cx from 'classnames';
4
+ import {
5
+ Hovercard,
6
+ HovercardAnchor,
7
+ HovercardArrow,
8
+ useHovercard,
9
+ useHovercardState,
10
+ } from 'ariakit/hovercard';
11
+
12
+ import css from './hover-card.module.css';
13
+
14
+ const resolveComponent = (as, href) => {
15
+ if (as) {
16
+ return as;
17
+ }
18
+
19
+ if (href) {
20
+ return 'a';
21
+ }
22
+
23
+ return 'span';
24
+ };
25
+
26
+ export const HoverCard = (props) => {
27
+ const { className, hoverCardClassName, href, as, label, children } = props;
28
+ const state = useHovercardState({ gutter: 8 });
29
+ const hoverCardProps = useHovercard({ state, portal: true });
30
+
31
+ // Fallback to span if no href
32
+ const Component = resolveComponent(as, href);
33
+
34
+ return (
35
+ <div className={cx(css.root, className)}>
36
+ <HovercardAnchor state={state} href={href} className={css.anchor} as={Component}>
37
+ {label}
38
+ </HovercardAnchor>
39
+ <Hovercard
40
+ {...hoverCardProps}
41
+ state={state}
42
+ className={cx(css.hoverCard, hoverCardClassName)}
43
+ style={{ zIndex: 10000 }}
44
+ >
45
+ <HovercardArrow size={24} />
46
+ {typeof children === 'function' ? children({ close: state.hide }) : children}
47
+ </Hovercard>
48
+ </div>
49
+ );
50
+ };
51
+
52
+ HoverCard.propTypes = {
53
+ /** Adopted child class name */
54
+ className: PropTypes.string,
55
+ /** Adopted child class name for hover card */
56
+ hoverCardClassName: PropTypes.string,
57
+ /** Anchor label */
58
+ label: PropTypes.node,
59
+ /** Anchor href */
60
+ href: PropTypes.string,
61
+ /** Anchor component */
62
+ as: PropTypes.elementType,
63
+ /** Hover card component */
64
+ children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]).isRequired,
65
+ };
66
+
67
+ HoverCard.defaultProps = {
68
+ className: '',
69
+ hoverCardClassName: '',
70
+ label: '',
71
+ as: '',
72
+ href: '',
73
+ };
@@ -0,0 +1,29 @@
1
+ .root {
2
+ display: inline-block;
3
+ }
4
+
5
+ .anchor {
6
+ display: inline-block;
7
+ color: inherit;
8
+ text-decoration: none;
9
+ }
10
+
11
+ .anchor:hover {
12
+ color: var(--color-primary);
13
+ }
14
+
15
+ .anchor:focus {
16
+ outline: 0;
17
+ }
18
+
19
+ .hoverCard {
20
+ padding: var(--space-xsmall) var(--space-small);
21
+ border-radius: var(--radius-medium);
22
+ width: calc(100vw - 2 * var(--space-small));
23
+ max-width: 360px;
24
+ outline: none;
25
+ filter: drop-shadow(0 0 var(--space-xxsmall) var(--color-shadow));
26
+ will-change: filter;
27
+ background: var(--color-light);
28
+ font-size: var(--size-small);
29
+ }
@@ -0,0 +1 @@
1
+ export * from './hover-card';
@@ -20,13 +20,17 @@ const ICONS = {
20
20
  WARNING: 'warning',
21
21
  };
22
22
 
23
- export const Icon = ({ className, glyph, as: Component, size, ...restProps }) => (
24
- <Component className={cx(css.root, className, css[size])} {...restProps}>
25
- <svg className={css.icon}>
26
- <use xlinkHref={`#${glyph}`} />
27
- </svg>
28
- </Component>
29
- );
23
+ export const Icon = (props) => {
24
+ const { className, glyph, as: Component, size, ...restProps } = props;
25
+
26
+ return (
27
+ <Component className={cx(css.root, className, css[size])} {...restProps}>
28
+ <svg className={css.icon}>
29
+ <use xlinkHref={`#${glyph}`} />
30
+ </svg>
31
+ </Component>
32
+ );
33
+ };
30
34
 
31
35
  Icon.ICONS = ICONS;
32
36
 
@@ -1,5 +1,6 @@
1
1
  .root {
2
2
  display: inline-block;
3
+ vertical-align: middle; /** center align when parent display is inline/inline-block **/
3
4
  }
4
5
 
5
6
  .icon {
package/src/ui/index.js CHANGED
@@ -10,9 +10,9 @@ export { Input } from './input';
10
10
  export { Loader } from './loader';
11
11
  export { Logo } from './logo';
12
12
  export { Panels } from './panels';
13
- export { Popover } from './popover';
14
13
  export { Skeleton } from './skeleton';
15
14
  export { SortDropdown } from './sort-dropdown';
16
15
  export { Table } from './table';
17
16
  export { Tabs } from './tabs';
17
+ export { Tag } from './tag';
18
18
  export { Tooltip } from './tooltip';
@@ -4,53 +4,6 @@ import cx from 'classnames';
4
4
 
5
5
  import css from './table.module.css';
6
6
 
7
- const THead = (props) => <thead {...props} />
8
-
9
- const TBody = (props) => <tbody {...props} />;
10
-
11
- const Tr = (props) => {
12
- const { className, ...restProps } = props;
13
- return <tr className={cx(css.row, className)} {...restProps} />;
14
- };
15
-
16
- Tr.defaultProps = {
17
- className: '',
18
- };
19
-
20
- Tr.propTypes = {
21
- /** Adopted child class name */
22
- className: PropTypes.string,
23
- };
24
-
25
- const Th = (props) => {
26
- const { className, ...restProps } = props;
27
-
28
- return <th className={cx(css.cell, className)} {...restProps} />;
29
- };
30
-
31
- Th.defaultProps = {
32
- className: '',
33
- };
34
-
35
- Th.propTypes = {
36
- /** Adopted child class name */
37
- className: PropTypes.string,
38
- };
39
-
40
- const Td = (props) => {
41
- const { className, ...restProps } = props;
42
- return <td className={cx(css.cell, className)} {...restProps} />;
43
- };
44
-
45
- Td.defaultProps = {
46
- className: '',
47
- };
48
-
49
- Td.propTypes = {
50
- /** Adopted child class name */
51
- className: PropTypes.string,
52
- };
53
-
54
7
  export const Table = ({ className, emptyMessage, compact, outline, children }) => {
55
8
  const rootClassName = cx(css.root, className, compact && css.compact, outline && css.outline);
56
9
 
@@ -61,11 +14,11 @@ export const Table = ({ className, emptyMessage, compact, outline, children }) =
61
14
  return <table className={rootClassName}>{children}</table>;
62
15
  };
63
16
 
64
- Table.THead = THead;
65
- Table.TBody = TBody;
66
- Table.Th = Th;
67
- Table.Tr = Tr;
68
- Table.Td = Td;
17
+ Table.THead = 'thead';
18
+ Table.TBody = 'tbody';
19
+ Table.Tr = 'tr';
20
+ Table.Th = 'th';
21
+ Table.Td = 'td';
69
22
 
70
23
  Table.defaultProps = {
71
24
  className: '',
@@ -1,54 +1,54 @@
1
1
  .root {
2
2
  border-width: 0;
3
3
  width: 100%;
4
- border-collapse: collapse;
4
+ border-spacing: 0;
5
5
  empty-cells: show;
6
6
  background: var(--color-background);
7
+ text-align: left;
7
8
  }
8
9
 
9
- .cell {
10
+ .root th,
11
+ .root td {
10
12
  border: 1px solid var(--color-outline);
11
13
  border-width: 1px 0 0;
12
- padding: var(--space-small) var(--space-small);
13
- text-align: left;
14
- }
15
-
16
- tr:last-child .cell {
17
- border-bottom-width: 1px;
14
+ padding: var(--space-small);
18
15
  }
19
16
 
20
- .root thead .cell {
21
- border-width: 0 0 2px;
17
+ .root thead th {
18
+ border-width: 0 0 1px;
22
19
  text-transform: uppercase;
23
20
  vertical-align: top;
21
+ background: var(--color-highlight);
24
22
  }
25
23
 
26
- .root thead .cell:empty {
24
+ .root thead th:empty {
27
25
  display: none;
28
26
  }
29
27
 
30
- .root tbody .cell {
28
+ .root tbody th {
31
29
  font-weight: normal;
32
30
  }
33
31
 
34
- .root tbody .cell a {
32
+ .root tbody tr:first-child td,
33
+ .root tbody tr:first-child th {
34
+ border-top: 0;
35
+ }
36
+
37
+ .root tbody td a {
35
38
  color: inherit;
36
39
  text-decoration: none;
37
40
  }
38
41
 
39
- .root tbody .cell a:hover,
40
- .root tbody .cell a:focus,
41
- .root tbody .cell a:active
42
+ .root tbody td a:hover,
43
+ .root tbody td a:focus,
44
+ .root tbody td a:active
42
45
  {
43
46
  color: var(--color-primary);
44
47
  text-decoration: underline;
45
48
  }
46
49
 
47
- .root tbody tr:nth-child(odd) .cell {
48
- background-color: var(--color-highlight);
49
- }
50
-
51
- .root tbody tr:hover .cell {
50
+ .root tbody tr:hover th,
51
+ .root tbody tr:hover td {
52
52
  background-color: var(--color-highlight-warning);
53
53
  }
54
54
 
@@ -62,12 +62,27 @@ tr:last-child .cell {
62
62
 
63
63
  /* outline variation */
64
64
  .outline {
65
+ --table-radius: var(--radius-medium);
65
66
  border: 1px solid var(--color-outline);
66
- border-width: 0 1px;
67
+ border-radius: var(--table-radius);
68
+ }
69
+
70
+ .outline thead:first-child tr:first-child th:first-child,
71
+ .outline tbody:first-child tr:first-child td:first-child {
72
+ border-top-left-radius: var(--table-radius);
73
+ }
74
+
75
+ .outline thead tr:first-child th:last-child,
76
+ .outline tbody:first-child tr:first-child td:last-child {
77
+ border-top-right-radius: var(--table-radius);
78
+ }
79
+
80
+ .outline tbody:last-child tr:last-child td:first-child {
81
+ border-bottom-left-radius: var(--table-radius);
67
82
  }
68
83
 
69
- .outline thead tr:first-child .cell {
70
- border-top-width: 1px;
84
+ .outline tbody:last-child tr:last-child td:last-child {
85
+ border-bottom-right-radius: var(--table-radius);
71
86
  }
72
87
 
73
88
  .outline.empty {
@@ -75,7 +90,8 @@ tr:last-child .cell {
75
90
  }
76
91
 
77
92
  /* compact variation */
78
- .compact .cell {
93
+ .compact td,
94
+ .compact th {
79
95
  padding-top: var(--space-xsmall);
80
96
  padding-bottom: var(--space-xsmall);
81
97
  }
@@ -0,0 +1 @@
1
+ export * from './tag';
@@ -0,0 +1,49 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import cx from 'classnames';
4
+
5
+ import css from './tag.module.css';
6
+
7
+ export const KINDS = {
8
+ DEFAULT: 'default',
9
+ SUCCESS: 'success',
10
+ INFO: 'info',
11
+ WARNING: 'warning',
12
+ DANGER: 'danger',
13
+ };
14
+
15
+ export const SIZES = {
16
+ SMALL: 'small',
17
+ MEDIUM: 'medium',
18
+ LARGE: 'large',
19
+ };
20
+
21
+ export const Tag = (props) => {
22
+ const {
23
+ className = '',
24
+ as: Component = 'span',
25
+ kind = KINDS.DEFAULT,
26
+ size = SIZES.MEDIUM,
27
+ ...restProps
28
+ } = props;
29
+ const rootClassName = cx(css.root, className, css[kind], css[size]);
30
+
31
+ return <Component className={rootClassName} {...restProps} />;
32
+ };
33
+
34
+ Tag.propTypes = {
35
+ className: PropTypes.string,
36
+ as: PropTypes.elementType,
37
+ kind: PropTypes.oneOf(Object.values(KINDS)),
38
+ size: PropTypes.oneOf(Object.values(SIZES)),
39
+ };
40
+
41
+ Tag.defaultProps = {
42
+ className: '',
43
+ as: 'span',
44
+ kind: KINDS.DEFAULT,
45
+ size: SIZES.MEDIUM,
46
+ };
47
+
48
+ Tag.KINDS = KINDS;
49
+ Tag.SIZES = SIZES;
@@ -0,0 +1,55 @@
1
+ .root {
2
+ display: inline-block;
3
+ font-family: var(--font-family);
4
+ font-weight: bold;
5
+ background: var(--color-text-light);
6
+ color: var(--color-light);
7
+ text-align: center;
8
+ text-transform: uppercase;
9
+ }
10
+
11
+ /** Kind variation */
12
+ .success {
13
+ background: var(--color-success);
14
+ }
15
+
16
+ .info {
17
+ background: var(--color-info);
18
+ }
19
+
20
+ .warning {
21
+ background: var(--color-warning-dark);
22
+ }
23
+
24
+ .danger {
25
+ background: var(--color-danger);
26
+ }
27
+
28
+ /** Size variation */
29
+ /** default: medium */
30
+ .root {
31
+ border-radius: var(--radius-medium);
32
+ padding: var(--space-xxxsmall);
33
+ min-width: var(--space-small);
34
+ height: var(--space-small);
35
+ font-size: 9px;
36
+ line-height: 1;
37
+ }
38
+
39
+ .small {
40
+ border-radius: var(--radius-small);
41
+ padding: calc(var(--space-xxxsmall) / 2);
42
+ height: var(--space-xsmall);
43
+ min-width: var(--space-xsmall);
44
+ font-size: 8px;
45
+ line-height: 1;
46
+ }
47
+
48
+ .large {
49
+ border-radius: var(--radius-large);
50
+ padding: var(--space-xxxsmall) var(--space-xxsmall);
51
+ min-width: var(--space-medium);
52
+ height: var(--space-medium);
53
+ font-size: 12px;
54
+ line-height: var(--space-small);
55
+ }
@@ -3,10 +3,10 @@ import PropTypes from 'prop-types';
3
3
  import cx from 'classnames';
4
4
  import {
5
5
  Tooltip as UITooltip,
6
+ TooltipAnchor as UITooltipAnchor,
6
7
  TooltipArrow as UITooltipArrow,
7
- TooltipReference as UITooltipReference,
8
8
  useTooltipState,
9
- } from 'reakit/Tooltip';
9
+ } from 'ariakit/tooltip';
10
10
 
11
11
  import css from './tooltip.module.css';
12
12
 
@@ -21,26 +21,22 @@ export const Tooltip = (props) => {
21
21
  ...restProps
22
22
  } = props;
23
23
 
24
- const rootClassName = cx(css.root, className);
25
- const tooltipProps = useTooltipState({
26
- baseId: process.env.NODE_ENV === 'test' && 'id-test',
27
- placement: 'top',
28
- });
24
+ const tooltip = useTooltipState({ placement: 'top' });
29
25
 
30
26
  return (
31
27
  <>
32
- <UITooltipReference
28
+ <UITooltipAnchor
33
29
  as={Component}
34
- className={rootClassName}
35
- {...ref ? { ref } : {}}
30
+ className={cx(css.root, className)}
31
+ state={tooltip}
32
+ {...(ref ? { ref } : {})}
36
33
  {...restProps}
37
- {...tooltipProps}
38
34
  >
39
35
  {children}
40
- </UITooltipReference>
36
+ </UITooltipAnchor>
41
37
  {title && (
42
- <UITooltip {...tooltipProps} className={cx(css.tooltip, darkMode && css.tooltipDarkMode)}>
43
- <UITooltipArrow {...tooltipProps} className={css.arrow} size={12} />
38
+ <UITooltip state={tooltip} className={cx(css.tooltip, darkMode && css.tooltipDarkMode)}>
39
+ <UITooltipArrow state={tooltip} className={css.arrow} size={12} />
44
40
  {title}
45
41
  </UITooltip>
46
42
  )}
@@ -12,10 +12,11 @@
12
12
 
13
13
  .tooltip {
14
14
  padding: var(--space-xxxsmall) var(--space-xxsmall);
15
- border-radius: var(--radius-small);
15
+ border-radius: var(--radius-medium);
16
16
  background: var(--color-light);
17
17
  color: var(--color-text);
18
18
  filter: drop-shadow(0 0 var(--space-xxxsmall) var(--color-shadow));
19
+ will-change: filter;
19
20
  font-size: var(--size-xsmall);
20
21
  line-height: var(--space-small);
21
22
  }
@@ -1,92 +0,0 @@
1
- "use strict";
2
-
3
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.Popover = void 0;
9
-
10
- var _react = _interopRequireWildcard(require("react"));
11
-
12
- var _propTypes = _interopRequireDefault(require("prop-types"));
13
-
14
- var _classnames = _interopRequireDefault(require("classnames"));
15
-
16
- var _Popover = require("reakit/Popover");
17
-
18
- var _icon = require("../icon");
19
-
20
- var _popoverModule = _interopRequireDefault(require("./popover.module.css"));
21
-
22
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
23
-
24
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
-
26
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
27
-
28
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
29
-
30
- var Popover = function Popover(_ref) {
31
- var className = _ref.className,
32
- icon = _ref.icon,
33
- label = _ref.label,
34
- ariaLabel = _ref.ariaLabel,
35
- children = _ref.children;
36
- var popover = (0, _Popover.usePopoverState)({
37
- baseId: process.env.NODE_ENV === 'test' && 'id-test',
38
- gutter: 12,
39
- modal: true,
40
- placement: 'top'
41
- });
42
- var onCloseButtonClick = (0, _react.useCallback)(function (event) {
43
- event.preventDefault();
44
- popover.toggle();
45
- }, [popover]);
46
- var onButtonClick = (0, _react.useCallback)(function (event) {
47
- event.preventDefault();
48
- popover.toggle();
49
- }, [popover]);
50
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_Popover.PopoverDisclosure, _extends({
51
- className: (0, _classnames["default"])(_popoverModule["default"].button, className)
52
- }, popover, {
53
- onClick: onButtonClick,
54
- "aria-label": ariaLabel
55
- }), icon && (typeof icon === 'string' ? /*#__PURE__*/_react["default"].createElement(_icon.Icon, {
56
- className: _popoverModule["default"].icon,
57
- glyph: icon
58
- }) : icon), label && /*#__PURE__*/_react["default"].createElement("span", {
59
- className: _popoverModule["default"].label
60
- }, label)), /*#__PURE__*/_react["default"].createElement(_Popover.Popover, _extends({
61
- className: _popoverModule["default"].popover
62
- }, popover, {
63
- tabIndex: 0
64
- }), /*#__PURE__*/_react["default"].createElement(_Popover.PopoverArrow, _extends({
65
- className: _popoverModule["default"].arrow
66
- }, popover, {
67
- size: 16
68
- })), typeof children === 'function' ? children({
69
- popoverToggle: popover.toggle
70
- }) : children, /*#__PURE__*/_react["default"].createElement(_icon.Icon, {
71
- glyph: "close",
72
- as: "button",
73
- type: "button",
74
- className: _popoverModule["default"].closeBtn,
75
- onClick: onCloseButtonClick
76
- })));
77
- };
78
-
79
- exports.Popover = Popover;
80
- Popover.propTypes = {
81
- className: _propTypes["default"].string,
82
- label: _propTypes["default"].element,
83
- icon: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].element]),
84
- children: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].element, _propTypes["default"].func]).isRequired,
85
- ariaLabel: _propTypes["default"].string
86
- };
87
- Popover.defaultProps = {
88
- className: '',
89
- icon: '',
90
- label: '',
91
- ariaLabel: 'View more info'
92
- };
@@ -1,66 +0,0 @@
1
- .button {
2
- display: inline-flex;
3
- align-items: center;
4
- justify-content: flex-start;
5
- border: none;
6
- outline: none;
7
- padding: 0;
8
- background: none;
9
- color: inherit;
10
- cursor: pointer;
11
- line-height: inherit;
12
- text-align: inherit;
13
- }
14
-
15
- .button:hover,
16
- .button:active,
17
- .button:focus {
18
- color: var(--color-primary);
19
- }
20
-
21
- .button:hover .label {
22
- text-decoration: underline;
23
- }
24
-
25
- .popover {
26
- padding: var(--space-small) var(--space-large) var(--space-small) var(--space-small);
27
- border-radius: var(--radius-small);
28
- max-width: 360px;
29
- outline: none;
30
- filter: drop-shadow(0 0 var(--space-xxxsmall) var(--color-shadow));
31
- background: var(--color-light);
32
- font-size: var(--size-small);
33
- }
34
-
35
- .arrow svg {
36
- display: block;
37
- }
38
-
39
- .arrow :global .fill {
40
- fill: var(--color-light);
41
- }
42
-
43
- .arrow :global .stroke {
44
- fill: var(--color-light);
45
- }
46
-
47
- .closeBtn {
48
- position: absolute;
49
- right: 0;
50
- top: 0;
51
- width: var(--space-large);
52
- height: var(--space-large);
53
- padding: var(--space-xxsmall);
54
- background: none;
55
- border: none;
56
- cursor: pointer;
57
- color: var(--color-text-ultra-light);
58
- transition: var(--transition-out);
59
- }
60
-
61
- .closeBtn:hover,
62
- .closeBtn:active,
63
- .closeBtn:focus {
64
- color: var(--color-text-light);
65
- transition: var(--transition-in);
66
- }