@audius/harmony 0.1.0 → 0.2.0

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 (279) hide show
  1. package/dist/_virtual/_tslib.js +11 -1
  2. package/dist/_virtual/_tslib.js.map +1 -1
  3. package/dist/assets/icons/LogoPhantomPlain.svg.js +78 -0
  4. package/dist/assets/icons/LogoPhantomPlain.svg.js.map +1 -0
  5. package/dist/assets/icons/PaperAirplane.svg.js +76 -0
  6. package/dist/assets/icons/PaperAirplane.svg.js.map +1 -0
  7. package/dist/assets/icons/Pin.svg.js +76 -0
  8. package/dist/assets/icons/Pin.svg.js.map +1 -0
  9. package/dist/assets/icons/QrCode.svg.js +78 -0
  10. package/dist/assets/icons/QrCode.svg.js.map +1 -0
  11. package/dist/assets/icons/Send.svg.js +6 -3
  12. package/dist/assets/icons/Send.svg.js.map +1 -1
  13. package/dist/assets/icons/TowerBroadcast.svg.js +75 -0
  14. package/dist/assets/icons/TowerBroadcast.svg.js.map +1 -0
  15. package/dist/components/artwork/Artwork.d.ts.map +1 -1
  16. package/dist/components/artwork/Artwork.js +5 -4
  17. package/dist/components/artwork/Artwork.js.map +1 -1
  18. package/dist/components/avatar/Avatar.d.ts.map +1 -1
  19. package/dist/components/avatar/Avatar.js +1 -1
  20. package/dist/components/avatar/Avatar.js.map +1 -1
  21. package/dist/components/button/BaseButton/BaseButton.d.ts +1 -0
  22. package/dist/components/button/BaseButton/BaseButton.d.ts.map +1 -1
  23. package/dist/components/button/BaseButton/BaseButton.js +2 -2
  24. package/dist/components/button/BaseButton/BaseButton.js.map +1 -1
  25. package/dist/components/button/BaseButton/types.d.ts +1 -0
  26. package/dist/components/button/BaseButton/types.d.ts.map +1 -1
  27. package/dist/components/button/FilterButton/FilterButton.d.ts +1 -1
  28. package/dist/components/button/FilterButton/FilterButton.d.ts.map +1 -1
  29. package/dist/components/button/FilterButton/FilterButton.js +85 -61
  30. package/dist/components/button/FilterButton/FilterButton.js.map +1 -1
  31. package/dist/components/button/{OptionsFilterButton/OptionsFilterButton.stories.d.ts → FilterButton/FilterButton.stories.d.ts} +5 -4
  32. package/dist/components/button/FilterButton/FilterButton.stories.d.ts.map +1 -0
  33. package/dist/components/button/FilterButton/FilterButtonKeyHandler.d.ts +18 -0
  34. package/dist/components/button/FilterButton/FilterButtonKeyHandler.d.ts.map +1 -0
  35. package/dist/components/button/FilterButton/FilterButtonOption.d.ts +11 -0
  36. package/dist/components/button/FilterButton/FilterButtonOption.d.ts.map +1 -0
  37. package/dist/components/button/FilterButton/FilterButtonOption.js +57 -0
  38. package/dist/components/button/FilterButton/FilterButtonOption.js.map +1 -0
  39. package/dist/components/button/FilterButton/FilterButtonOptionsList.d.ts +21 -0
  40. package/dist/components/button/FilterButton/FilterButtonOptionsList.d.ts.map +1 -0
  41. package/dist/components/button/FilterButton/FilterButtonOptionsList.js +40 -0
  42. package/dist/components/button/FilterButton/FilterButtonOptionsList.js.map +1 -0
  43. package/dist/components/button/FilterButton/types.d.ts +51 -24
  44. package/dist/components/button/FilterButton/types.d.ts.map +1 -1
  45. package/dist/components/button/IconButton/IconButton.d.ts +19 -2
  46. package/dist/components/button/IconButton/IconButton.d.ts.map +1 -1
  47. package/dist/components/button/IconButton/IconButton.js +3 -2
  48. package/dist/components/button/IconButton/IconButton.js.map +1 -1
  49. package/dist/components/button/index.d.ts +3 -4
  50. package/dist/components/button/index.d.ts.map +1 -1
  51. package/dist/components/checkbox/Checkbox.d.ts +7 -0
  52. package/dist/components/checkbox/Checkbox.d.ts.map +1 -0
  53. package/dist/components/checkbox/Checkbox.js +64 -0
  54. package/dist/components/checkbox/Checkbox.js.map +1 -0
  55. package/dist/components/checkbox/Checkbox.stories.d.ts +9 -0
  56. package/dist/components/checkbox/Checkbox.stories.d.ts.map +1 -0
  57. package/dist/components/checkbox/Indeterminate.svg.js +114 -0
  58. package/dist/components/checkbox/Indeterminate.svg.js.map +1 -0
  59. package/dist/components/checkbox/Select.svg.js +118 -0
  60. package/dist/components/checkbox/Select.svg.js.map +1 -0
  61. package/dist/components/checkbox/index.d.ts +3 -0
  62. package/dist/components/checkbox/index.d.ts.map +1 -0
  63. package/dist/components/checkbox/types.d.ts +7 -0
  64. package/dist/components/checkbox/types.d.ts.map +1 -0
  65. package/dist/components/comments/ArtistPick/ArtistPick.d.ts +3 -0
  66. package/dist/components/comments/ArtistPick/ArtistPick.d.ts.map +1 -0
  67. package/dist/components/comments/ArtistPick/ArtistPick.js +20 -0
  68. package/dist/components/comments/ArtistPick/ArtistPick.js.map +1 -0
  69. package/dist/components/comments/ArtistPick/ArtistPick.stories.d.ts +7 -0
  70. package/dist/components/comments/ArtistPick/ArtistPick.stories.d.ts.map +1 -0
  71. package/dist/components/comments/ArtistPick/index.d.ts +3 -0
  72. package/dist/components/comments/ArtistPick/index.d.ts.map +1 -0
  73. package/dist/components/comments/ArtistPick/types.d.ts +5 -0
  74. package/dist/components/comments/ArtistPick/types.d.ts.map +1 -0
  75. package/dist/components/comments/CommentText/CommentText.d.ts +3 -0
  76. package/dist/components/comments/CommentText/CommentText.d.ts.map +1 -0
  77. package/dist/components/comments/CommentText/CommentText.js +36 -0
  78. package/dist/components/comments/CommentText/CommentText.js.map +1 -0
  79. package/dist/components/comments/CommentText/CommentText.stories.d.ts +10 -0
  80. package/dist/components/comments/CommentText/CommentText.stories.d.ts.map +1 -0
  81. package/dist/components/comments/CommentText/index.d.ts +3 -0
  82. package/dist/components/comments/CommentText/index.d.ts.map +1 -0
  83. package/dist/components/comments/CommentText/types.d.ts +5 -0
  84. package/dist/components/comments/CommentText/types.d.ts.map +1 -0
  85. package/dist/components/comments/IconText/IconText.d.ts +3 -0
  86. package/dist/components/comments/IconText/IconText.d.ts.map +1 -0
  87. package/dist/components/comments/IconText/IconText.js +19 -0
  88. package/dist/components/comments/IconText/IconText.js.map +1 -0
  89. package/dist/components/comments/IconText/IconText.stories.d.ts +7 -0
  90. package/dist/components/comments/IconText/IconText.stories.d.ts.map +1 -0
  91. package/dist/components/comments/IconText/index.d.ts +3 -0
  92. package/dist/components/comments/IconText/index.d.ts.map +1 -0
  93. package/dist/components/comments/IconText/types.d.ts +14 -0
  94. package/dist/components/comments/IconText/types.d.ts.map +1 -0
  95. package/dist/components/comments/Identifier/Identifier.d.ts +3 -0
  96. package/dist/components/comments/Identifier/Identifier.d.ts.map +1 -0
  97. package/dist/components/comments/Identifier/Identifier.js +30 -0
  98. package/dist/components/comments/Identifier/Identifier.js.map +1 -0
  99. package/dist/components/comments/Identifier/Identifier.stories.d.ts +7 -0
  100. package/dist/components/comments/Identifier/Identifier.stories.d.ts.map +1 -0
  101. package/dist/components/comments/Identifier/index.d.ts +3 -0
  102. package/dist/components/comments/Identifier/index.d.ts.map +1 -0
  103. package/dist/components/comments/Identifier/types.d.ts +5 -0
  104. package/dist/components/comments/Identifier/types.d.ts.map +1 -0
  105. package/dist/components/comments/SendIcon/SendIcon.d.ts +3 -0
  106. package/dist/components/comments/SendIcon/SendIcon.d.ts.map +1 -0
  107. package/dist/components/comments/SendIcon/SendIcon.js +36 -0
  108. package/dist/components/comments/SendIcon/SendIcon.js.map +1 -0
  109. package/dist/components/comments/SendIcon/SendIcon.stories.d.ts +7 -0
  110. package/dist/components/comments/SendIcon/SendIcon.stories.d.ts.map +1 -0
  111. package/dist/components/comments/SendIcon/index.d.ts +3 -0
  112. package/dist/components/comments/SendIcon/index.d.ts.map +1 -0
  113. package/dist/components/comments/SendIcon/types.d.ts +5 -0
  114. package/dist/components/comments/SendIcon/types.d.ts.map +1 -0
  115. package/dist/components/comments/Timestamp/Timestamp.d.ts +3 -0
  116. package/dist/components/comments/Timestamp/Timestamp.d.ts.map +1 -0
  117. package/dist/components/comments/Timestamp/Timestamp.js +13 -0
  118. package/dist/components/comments/Timestamp/Timestamp.js.map +1 -0
  119. package/dist/components/comments/Timestamp/Timestamp.stories.d.ts +7 -0
  120. package/dist/components/comments/Timestamp/Timestamp.stories.d.ts.map +1 -0
  121. package/dist/components/comments/Timestamp/index.d.ts +4 -0
  122. package/dist/components/comments/Timestamp/index.d.ts.map +1 -0
  123. package/dist/components/comments/Timestamp/types.d.ts +11 -0
  124. package/dist/components/comments/Timestamp/types.d.ts.map +1 -0
  125. package/dist/components/comments/Timestamp/types.js +10 -0
  126. package/dist/components/comments/Timestamp/types.js.map +1 -0
  127. package/dist/components/comments/Timestamp/util.d.ts +2 -0
  128. package/dist/components/comments/Timestamp/util.d.ts.map +1 -0
  129. package/dist/components/comments/Timestamp/util.js +26 -0
  130. package/dist/components/comments/Timestamp/util.js.map +1 -0
  131. package/dist/components/icon.d.ts +2 -1
  132. package/dist/components/icon.d.ts.map +1 -1
  133. package/dist/components/index.d.ts +8 -0
  134. package/dist/components/index.d.ts.map +1 -1
  135. package/dist/components/input/PasswordInput/PasswordInput.js +2 -2
  136. package/dist/components/input/SelectablePill/SelectablePill.d.ts.map +1 -1
  137. package/dist/components/input/SelectablePill/SelectablePill.js +1 -3
  138. package/dist/components/input/SelectablePill/SelectablePill.js.map +1 -1
  139. package/dist/components/input/TextInput/TextInput.d.ts +2 -0
  140. package/dist/components/input/TextInput/TextInput.d.ts.map +1 -1
  141. package/dist/components/input/TextInput/TextInput.js +10 -6
  142. package/dist/components/input/TextInput/TextInput.js.map +1 -1
  143. package/dist/components/input/TextInput/types.d.ts +8 -1
  144. package/dist/components/input/TextInput/types.d.ts.map +1 -1
  145. package/dist/components/input/TextInput/types.js.map +1 -1
  146. package/dist/components/internal/Menu.d.ts +22 -0
  147. package/dist/components/internal/Menu.d.ts.map +1 -0
  148. package/dist/components/internal/Menu.js +17 -0
  149. package/dist/components/internal/Menu.js.map +1 -0
  150. package/dist/components/internal/MenuItem.d.ts +19 -0
  151. package/dist/components/internal/MenuItem.d.ts.map +1 -0
  152. package/dist/components/internal/MenuItem.js +57 -0
  153. package/dist/components/internal/MenuItem.js.map +1 -0
  154. package/dist/components/internal/OptionKeyHandler.d.ts +30 -0
  155. package/dist/components/internal/OptionKeyHandler.d.ts.map +1 -0
  156. package/dist/components/{button/OptionsFilterButton/SelectPopupKeyHandler.js → internal/OptionKeyHandler.js} +6 -11
  157. package/dist/components/internal/OptionKeyHandler.js.map +1 -0
  158. package/dist/components/layout/Box/Box.js +4 -4
  159. package/dist/components/layout/Box/Box.js.map +1 -1
  160. package/dist/components/layout/Box/types.d.ts +6 -6
  161. package/dist/components/layout/Box/types.d.ts.map +1 -1
  162. package/dist/components/layout/Flex/Flex.d.ts.map +1 -1
  163. package/dist/components/layout/Flex/Flex.js +2 -2
  164. package/dist/components/layout/Flex/Flex.js.map +1 -1
  165. package/dist/components/layout/Flex/types.d.ts +2 -0
  166. package/dist/components/layout/Flex/types.d.ts.map +1 -1
  167. package/dist/components/modal/Modal.js +3 -3
  168. package/dist/components/modal/Modal.js.map +1 -1
  169. package/dist/components/modal/ModalContentPages.d.ts +10 -10
  170. package/dist/components/modal/ModalContentPages.d.ts.map +1 -1
  171. package/dist/components/modal/ModalContentPages.js +2 -2
  172. package/dist/components/modal/ModalContentPages.js.map +1 -1
  173. package/dist/components/modal/ModalHeader.js +2 -2
  174. package/dist/components/music-badge/MusicBadge.d.ts.map +1 -1
  175. package/dist/components/music-badge/MusicBadge.js +1 -1
  176. package/dist/components/music-badge/MusicBadge.js.map +1 -1
  177. package/dist/components/pill/Pill.d.ts +1 -0
  178. package/dist/components/pill/Pill.d.ts.map +1 -1
  179. package/dist/components/popup/Popup.d.ts +6 -1
  180. package/dist/components/popup/Popup.d.ts.map +1 -1
  181. package/dist/components/popup/Popup.js +47 -37
  182. package/dist/components/popup/Popup.js.map +1 -1
  183. package/dist/components/popup/types.d.ts +4 -0
  184. package/dist/components/popup/types.d.ts.map +1 -1
  185. package/dist/components/scrubber/Scrubber.d.ts.map +1 -1
  186. package/dist/components/scrubber/Scrubber.js +3 -13
  187. package/dist/components/scrubber/Scrubber.js.map +1 -1
  188. package/dist/components/scrubber/Slider.js +1 -1
  189. package/dist/components/scrubber/Slider.js.map +1 -1
  190. package/dist/components/segmented-control/SegmentedControl.js +1 -3
  191. package/dist/components/segmented-control/SegmentedControl.js.map +1 -1
  192. package/dist/components/select/Select/Select.d.ts +21 -0
  193. package/dist/components/select/Select/Select.d.ts.map +1 -0
  194. package/dist/components/select/Select/Select.js +115 -0
  195. package/dist/components/select/Select/Select.js.map +1 -0
  196. package/dist/components/select/Select/Select.stories.d.ts +8 -0
  197. package/dist/components/select/Select/Select.stories.d.ts.map +1 -0
  198. package/dist/components/select/Select/index.d.ts +3 -0
  199. package/dist/components/select/Select/index.d.ts.map +1 -0
  200. package/dist/components/select/Select/types.d.ts +46 -0
  201. package/dist/components/select/Select/types.d.ts.map +1 -0
  202. package/dist/components/select/index.d.ts +2 -0
  203. package/dist/components/select/index.d.ts.map +1 -0
  204. package/dist/components/tag/Tag.d.ts.map +1 -1
  205. package/dist/components/tag/Tag.js +1 -1
  206. package/dist/components/tag/Tag.js.map +1 -1
  207. package/dist/components/text/Text.d.ts.map +1 -1
  208. package/dist/components/text/Text.js +15 -5
  209. package/dist/components/text/Text.js.map +1 -1
  210. package/dist/components/text/constants.d.ts +18 -0
  211. package/dist/components/text/constants.d.ts.map +1 -1
  212. package/dist/components/text/constants.js +7 -1
  213. package/dist/components/text/constants.js.map +1 -1
  214. package/dist/components/text/types.d.ts +2 -0
  215. package/dist/components/text/types.d.ts.map +1 -1
  216. package/dist/components/text-link/TextLink.d.ts.map +1 -1
  217. package/dist/components/text-link/TextLink.js +1 -1
  218. package/dist/components/text-link/TextLink.js.map +1 -1
  219. package/dist/foundations/color/color.d.ts +116 -0
  220. package/dist/foundations/color/color.d.ts.map +1 -1
  221. package/dist/foundations/color/color.js +2 -1
  222. package/dist/foundations/color/color.js.map +1 -1
  223. package/dist/foundations/color/primitive.d.ts +52 -0
  224. package/dist/foundations/color/primitive.d.ts.map +1 -1
  225. package/dist/foundations/color/primitive.js +52 -0
  226. package/dist/foundations/color/primitive.js.map +1 -1
  227. package/dist/foundations/color/semantic.d.ts +66 -0
  228. package/dist/foundations/color/semantic.d.ts.map +1 -1
  229. package/dist/foundations/color/semantic.js +8 -3
  230. package/dist/foundations/color/semantic.js.map +1 -1
  231. package/dist/foundations/theme/theme.d.ts +2 -0
  232. package/dist/foundations/theme/theme.d.ts.map +1 -1
  233. package/dist/foundations/theme/theme.js +4 -2
  234. package/dist/foundations/theme/theme.js.map +1 -1
  235. package/dist/foundations/theme/types.d.ts +6 -1
  236. package/dist/foundations/theme/types.d.ts.map +1 -1
  237. package/dist/foundations/typography/typography.d.ts +1 -0
  238. package/dist/foundations/typography/typography.d.ts.map +1 -1
  239. package/dist/foundations/typography/typography.js +2 -0
  240. package/dist/foundations/typography/typography.js.map +1 -1
  241. package/dist/harmony.css +1 -1
  242. package/dist/hooks/useClickOutside.d.ts +1 -1
  243. package/dist/hooks/useClickOutside.d.ts.map +1 -1
  244. package/dist/hooks/useClickOutside.js +11 -8
  245. package/dist/hooks/useClickOutside.js.map +1 -1
  246. package/dist/hooks/useControlled.d.ts +1 -1
  247. package/dist/hooks/useControlled.js.map +1 -1
  248. package/dist/hooks/useHotKeys.d.ts.map +1 -1
  249. package/dist/hooks/useHotKeys.js +2 -1
  250. package/dist/hooks/useHotKeys.js.map +1 -1
  251. package/dist/icons/logos.d.ts +1 -0
  252. package/dist/icons/logos.d.ts.map +1 -1
  253. package/dist/icons/logos.js +3 -1
  254. package/dist/icons/logos.js.map +1 -1
  255. package/dist/icons/utilityIcons.d.ts +4 -0
  256. package/dist/icons/utilityIcons.d.ts.map +1 -1
  257. package/dist/icons/utilityIcons.js +9 -1
  258. package/dist/icons/utilityIcons.js.map +1 -1
  259. package/dist/index.d.ts +1 -0
  260. package/dist/index.d.ts.map +1 -1
  261. package/dist/index.js +19 -6
  262. package/dist/index.js.map +1 -1
  263. package/dist/utils/formatTrackTimestamp.d.ts +6 -0
  264. package/dist/utils/formatTrackTimestamp.d.ts.map +1 -0
  265. package/dist/utils/formatTrackTimestamp.js +18 -0
  266. package/dist/utils/formatTrackTimestamp.js.map +1 -0
  267. package/dist/utils/index.d.ts +5 -0
  268. package/dist/utils/index.d.ts.map +1 -0
  269. package/package.json +4 -2
  270. package/dist/components/button/OptionsFilterButton/OptionsFilterButton.d.ts +0 -18
  271. package/dist/components/button/OptionsFilterButton/OptionsFilterButton.d.ts.map +0 -1
  272. package/dist/components/button/OptionsFilterButton/OptionsFilterButton.js +0 -123
  273. package/dist/components/button/OptionsFilterButton/OptionsFilterButton.js.map +0 -1
  274. package/dist/components/button/OptionsFilterButton/OptionsFilterButton.stories.d.ts.map +0 -1
  275. package/dist/components/button/OptionsFilterButton/SelectPopupKeyHandler.d.ts +0 -18
  276. package/dist/components/button/OptionsFilterButton/SelectPopupKeyHandler.d.ts.map +0 -1
  277. package/dist/components/button/OptionsFilterButton/SelectPopupKeyHandler.js.map +0 -1
  278. package/dist/components/button/OptionsFilterButton/types.d.ts +0 -62
  279. package/dist/components/button/OptionsFilterButton/types.d.ts.map +0 -1
@@ -15,13 +15,13 @@ import { Skeleton } from '../skeleton/Skeleton.js';
15
15
  */
16
16
  var Artwork = function (props) {
17
17
  var isLoadingProp = props.isLoading, src = props.src, _a = props.borderRadius, borderRadius = _a === void 0 ? 's' : _a, borderWidth = props.borderWidth, shadow = props.shadow, children = props.children, testId = props["data-testid"], other = __rest(props, ["isLoading", "src", "borderRadius", "borderWidth", "shadow", "children", 'data-testid']);
18
- var _b = useState(!!src), isLoadingState = _b[0], setIsLoadingState = _b[1];
18
+ var _b = useState(true), isLoadingState = _b[0], setIsLoadingState = _b[1];
19
19
  var isLoading = isLoadingProp !== null && isLoadingProp !== void 0 ? isLoadingProp : isLoadingState;
20
20
  var _c = useTheme(), color = _c.color, motion = _c.motion;
21
21
  useEffect(function () {
22
- setIsLoadingState(!!src);
22
+ setIsLoadingState(true);
23
23
  }, [src]);
24
- return (jsx(Box, __assign({}, other, { children: jsxs(Box, __assign({ borderRadius: borderRadius, border: 'default', shadow: shadow, css: { borderWidth: borderWidth } }, { children: [isLoading ? (jsx(Skeleton, { borderRadius: borderRadius, h: '100%', w: '100%', css: { zIndex: 1, position: 'absolute' } })) : null, jsx(Box, { w: '100%', pt: '100%', borderRadius: borderRadius, css: {
24
+ return (jsx(Box, __assign({}, other, { children: jsxs(Box, __assign({ borderRadius: borderRadius, border: 'default', shadow: shadow, css: { borderWidth: borderWidth } }, { children: [isLoading ? (jsx(Skeleton, { borderRadius: borderRadius, h: '100%', w: '100%', css: { zIndex: 2, position: 'absolute' } })) : null, jsx(Box, { w: '100%', pt: '100%', borderRadius: borderRadius, css: {
25
25
  backgroundColor: !src && children ? color.neutral.n400 : color.background.surface2
26
26
  } }), src ? (jsx(Box, { as: 'img', borderRadius: borderRadius, h: '100%', w: '100%', onLoad: function () {
27
27
  setIsLoadingState(false);
@@ -39,7 +39,8 @@ var Artwork = function (props) {
39
39
  top: 0,
40
40
  left: 0,
41
41
  backgroundColor: src ? color.static.black : undefined,
42
- opacity: src ? 0.4 : undefined
42
+ opacity: src ? 0.4 : undefined,
43
+ zIndex: 1
43
44
  } }, { children: children }))) : null] })) })));
44
45
  };
45
46
 
@@ -1 +1 @@
1
- {"version":3,"file":"Artwork.js","sources":["../../../src/components/artwork/Artwork.tsx"],"sourcesContent":["import { ComponentProps, useEffect, useState } from 'react'\n\nimport { useTheme } from '@emotion/react'\n\nimport { Box, BoxProps } from '../layout/Box'\nimport { Flex } from '../layout/Flex'\nimport { Skeleton } from '../skeleton'\n\nexport type ArtworkProps = {\n isLoading?: boolean\n borderWidth?: number\n 'data-testid'?: string\n noLoading?: boolean\n} & Pick<ComponentProps<'img'>, 'src'> &\n BoxProps\n\n/**\n * The artwork component displays the track cover art and appears in several\n * locations such as track tiles, track and playlist, pages,\n * and the sidebar. It can have interactive elements on hover.\n * This component enhances the listening experience and helps users quickly\n * identify their favorite tracks.\n */\nexport const Artwork = (props: ArtworkProps) => {\n const {\n isLoading: isLoadingProp,\n src,\n borderRadius = 's',\n borderWidth,\n shadow,\n children,\n 'data-testid': testId,\n ...other\n } = props\n const [isLoadingState, setIsLoadingState] = useState(!!src)\n const isLoading = isLoadingProp ?? isLoadingState\n const { color, motion } = useTheme()\n\n useEffect(() => {\n setIsLoadingState(!!src)\n }, [src])\n\n return (\n <Box {...other}>\n <Box\n borderRadius={borderRadius}\n border='default'\n shadow={shadow}\n css={{ borderWidth }}\n >\n {isLoading ? (\n <Skeleton\n borderRadius={borderRadius}\n h='100%'\n w='100%'\n css={{ zIndex: 1, position: 'absolute' }}\n />\n ) : null}\n <Box\n w='100%'\n pt='100%'\n borderRadius={borderRadius}\n css={{\n backgroundColor:\n !src && children ? color.neutral.n400 : color.background.surface2\n }}\n />\n {src ? (\n <Box\n as='img'\n borderRadius={borderRadius}\n h='100%'\n w='100%'\n onLoad={() => {\n setIsLoadingState(false)\n }}\n // @ts-ignore\n src={src}\n data-testid={testId}\n css={{\n position: 'absolute',\n top: 0,\n left: 0,\n objectFit: 'cover',\n opacity: isLoading ? 0 : 1,\n transition: `opacity ${motion.calm}`\n }}\n />\n ) : null}\n {children ? (\n <Flex\n alignItems='center'\n justifyContent='center'\n h='100%'\n w='100%'\n borderRadius={borderRadius}\n css={{\n position: 'absolute',\n top: 0,\n left: 0,\n backgroundColor: src ? color.static.black : undefined,\n opacity: src ? 0.4 : undefined\n }}\n >\n {children}\n </Flex>\n ) : null}\n </Box>\n </Box>\n )\n}\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"Artwork.js","sources":["../../../src/components/artwork/Artwork.tsx"],"sourcesContent":["import { ComponentProps, useEffect, useState } from 'react'\n\nimport { useTheme } from '@emotion/react'\n\nimport { Box, BoxProps } from '../layout/Box'\nimport { Flex } from '../layout/Flex'\nimport { Skeleton } from '../skeleton'\n\nexport type ArtworkProps = {\n isLoading?: boolean\n borderWidth?: number\n 'data-testid'?: string\n noLoading?: boolean\n} & Pick<ComponentProps<'img'>, 'src'> &\n BoxProps\n\n/**\n * The artwork component displays the track cover art and appears in several\n * locations such as track tiles, track and playlist, pages,\n * and the sidebar. It can have interactive elements on hover.\n * This component enhances the listening experience and helps users quickly\n * identify their favorite tracks.\n */\nexport const Artwork = (props: ArtworkProps) => {\n const {\n isLoading: isLoadingProp,\n src,\n borderRadius = 's',\n borderWidth,\n shadow,\n children,\n 'data-testid': testId,\n ...other\n } = props\n const [isLoadingState, setIsLoadingState] = useState(true)\n const isLoading = isLoadingProp ?? isLoadingState\n const { color, motion } = useTheme()\n\n useEffect(() => {\n setIsLoadingState(true)\n }, [src])\n\n return (\n <Box {...other}>\n <Box\n borderRadius={borderRadius}\n border='default'\n shadow={shadow}\n css={{ borderWidth }}\n >\n {isLoading ? (\n <Skeleton\n borderRadius={borderRadius}\n h='100%'\n w='100%'\n css={{ zIndex: 2, position: 'absolute' }}\n />\n ) : null}\n <Box\n w='100%'\n pt='100%'\n borderRadius={borderRadius}\n css={{\n backgroundColor:\n !src && children ? color.neutral.n400 : color.background.surface2\n }}\n />\n {src ? (\n <Box\n as='img'\n borderRadius={borderRadius}\n h='100%'\n w='100%'\n onLoad={() => {\n setIsLoadingState(false)\n }}\n // @ts-ignore\n src={src}\n data-testid={testId}\n css={{\n position: 'absolute',\n top: 0,\n left: 0,\n objectFit: 'cover',\n opacity: isLoading ? 0 : 1,\n transition: `opacity ${motion.calm}`\n }}\n />\n ) : null}\n {children ? (\n <Flex\n alignItems='center'\n justifyContent='center'\n h='100%'\n w='100%'\n borderRadius={borderRadius}\n css={{\n position: 'absolute',\n top: 0,\n left: 0,\n backgroundColor: src ? color.static.black : undefined,\n opacity: src ? 0.4 : undefined,\n zIndex: 1\n }}\n >\n {children}\n </Flex>\n ) : null}\n </Box>\n </Box>\n )\n}\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../src/components/avatar/Avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAW,YAAY,EAAE,MAAM,YAAY,CAAA;AAElD,KAAK,iBAAiB,GAAG,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,CAAA;AAE1D,MAAM,MAAM,WAAW,GAAG,iBAAiB,GAAG;IAC5C,OAAO,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAA;IAC9B,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,KAAK,CAAA;IAC3D,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACjC,CAAA;AAgBD,eAAO,MAAM,MAAM,UAAW,WAAW,qDAcxC,CAAA"}
1
+ {"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../src/components/avatar/Avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAW,YAAY,EAAE,MAAM,YAAY,CAAA;AAElD,KAAK,iBAAiB,GAAG,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,CAAA;AAE1D,MAAM,MAAM,WAAW,GAAG,iBAAiB,GAAG;IAC5C,OAAO,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAA;IAC9B,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,KAAK,CAAA;IAC3D,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACjC,CAAA;AAgBD,eAAO,MAAM,MAAM,UAAW,WAAW,qDAmBxC,CAAA"}
@@ -15,7 +15,7 @@ var borderWidthMap = {
15
15
  default: 2
16
16
  };
17
17
  var Avatar = function (props) {
18
- var variant = props.variant, _a = props.size, size = _a === void 0 ? 'auto' : _a, _b = props.borderWidth, borderWidth = _b === void 0 ? 'default' : _b, other = __rest(props, ["variant", "size", "borderWidth"]);
18
+ var variant = props.variant, _a = props.size, size = _a === void 0 ? 'auto' : _a, _b = props.borderWidth, borderWidth = _b === void 0 ? size === 'small' ? 'thin' : 'default' : _b, other = __rest(props, ["variant", "size", "borderWidth"]);
19
19
  return (jsx(Artwork, __assign({ borderRadius: 'circle', h: sizeMap[size], w: sizeMap[size], shadow: variant === 'strong' ? 'emphasis' : 'flat', borderWidth: borderWidthMap[borderWidth], css: variant === 'strong' ? { zIndex: 1 } : undefined }, other)));
20
20
  };
21
21
 
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar.js","sources":["../../../src/components/avatar/Avatar.tsx"],"sourcesContent":["import { Artwork, ArtworkProps } from '../artwork'\n\ntype ArtworkInnerProps = Omit<ArtworkProps, 'borderWidth'>\n\nexport type AvatarProps = ArtworkInnerProps & {\n variant?: 'default' | 'strong'\n size?: 'auto' | 'small' | 'medium' | 'large' | 'xl' | 'xxl'\n borderWidth?: 'thin' | 'default'\n}\n\nconst sizeMap = {\n auto: undefined,\n small: 24,\n medium: 40,\n large: 72,\n xl: 80,\n xxl: 120\n}\n\nconst borderWidthMap = {\n thin: 1.2,\n default: 2\n}\n\nexport const Avatar = (props: AvatarProps) => {\n const { variant, size = 'auto', borderWidth = 'default', ...other } = props\n\n return (\n <Artwork\n borderRadius='circle'\n h={sizeMap[size]}\n w={sizeMap[size]}\n shadow={variant === 'strong' ? 'emphasis' : 'flat'}\n borderWidth={borderWidthMap[borderWidth]}\n css={variant === 'strong' ? { zIndex: 1 } : undefined}\n {...other}\n />\n )\n}\n"],"names":["_jsx"],"mappings":";;;;AAUA,IAAM,OAAO,GAAG;AACd,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,MAAM,EAAE,EAAE;AACV,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,EAAE,EAAE,EAAE;AACN,IAAA,GAAG,EAAE,GAAG;CACT,CAAA;AAED,IAAM,cAAc,GAAG;AACrB,IAAA,IAAI,EAAE,GAAG;AACT,IAAA,OAAO,EAAE,CAAC;CACX,CAAA;AAEM,IAAM,MAAM,GAAG,UAAC,KAAkB,EAAA;AAC/B,IAAA,IAAA,OAAO,GAAuD,KAAK,CAAA,OAA5D,EAAE,EAAA,GAAqD,KAAK,CAAA,IAA7C,EAAb,IAAI,GAAG,EAAA,KAAA,KAAA,CAAA,GAAA,MAAM,GAAA,EAAA,EAAE,EAAsC,GAAA,KAAK,CAApB,WAAA,EAAvB,WAAW,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,SAAS,GAAA,EAAA,EAAK,KAAK,GAAK,MAAA,CAAA,KAAK,EAArE,CAAA,SAAA,EAAA,MAAA,EAAA,aAAA,CAA6D,CAAF,CAAU;AAE3E,IAAA,QACEA,GAAA,CAAC,OAAO,EAAA,QAAA,CAAA,EACN,YAAY,EAAC,QAAQ,EACrB,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,EAChB,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,EAChB,MAAM,EAAE,OAAO,KAAK,QAAQ,GAAG,UAAU,GAAG,MAAM,EAClD,WAAW,EAAE,cAAc,CAAC,WAAW,CAAC,EACxC,GAAG,EAAE,OAAO,KAAK,QAAQ,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,SAAS,EAAA,EACjD,KAAK,CAAA,CACT,EACH;AACH;;;;"}
1
+ {"version":3,"file":"Avatar.js","sources":["../../../src/components/avatar/Avatar.tsx"],"sourcesContent":["import { Artwork, ArtworkProps } from '../artwork'\n\ntype ArtworkInnerProps = Omit<ArtworkProps, 'borderWidth'>\n\nexport type AvatarProps = ArtworkInnerProps & {\n variant?: 'default' | 'strong'\n size?: 'auto' | 'small' | 'medium' | 'large' | 'xl' | 'xxl'\n borderWidth?: 'thin' | 'default'\n}\n\nconst sizeMap = {\n auto: undefined,\n small: 24,\n medium: 40,\n large: 72,\n xl: 80,\n xxl: 120\n}\n\nconst borderWidthMap = {\n thin: 1.2,\n default: 2\n}\n\nexport const Avatar = (props: AvatarProps) => {\n const {\n variant,\n size = 'auto',\n borderWidth = size === 'small' ? 'thin' : 'default',\n ...other\n } = props\n\n return (\n <Artwork\n borderRadius='circle'\n h={sizeMap[size]}\n w={sizeMap[size]}\n shadow={variant === 'strong' ? 'emphasis' : 'flat'}\n borderWidth={borderWidthMap[borderWidth]}\n css={variant === 'strong' ? { zIndex: 1 } : undefined}\n {...other}\n />\n )\n}\n"],"names":["_jsx"],"mappings":";;;;AAUA,IAAM,OAAO,GAAG;AACd,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,MAAM,EAAE,EAAE;AACV,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,EAAE,EAAE,EAAE;AACN,IAAA,GAAG,EAAE,GAAG;CACT,CAAA;AAED,IAAM,cAAc,GAAG;AACrB,IAAA,IAAI,EAAE,GAAG;AACT,IAAA,OAAO,EAAE,CAAC;CACX,CAAA;AAEM,IAAM,MAAM,GAAG,UAAC,KAAkB,EAAA;AAErC,IAAA,IAAA,OAAO,GAIL,KAAK,CAJA,OAAA,EACP,KAGE,KAAK,CAAA,IAHM,EAAb,IAAI,mBAAG,MAAM,GAAA,EAAA,EACb,EAEE,GAAA,KAAK,YAF4C,EAAnD,WAAW,GAAG,EAAA,KAAA,KAAA,CAAA,GAAA,IAAI,KAAK,OAAO,GAAG,MAAM,GAAG,SAAS,GAAA,EAAA,EAChD,KAAK,GAAA,MAAA,CACN,KAAK,EALH,CAAA,SAAA,EAAA,MAAA,EAAA,aAAA,CAKL,CADS,CACD;AAET,IAAA,QACEA,GAAA,CAAC,OAAO,EAAA,QAAA,CAAA,EACN,YAAY,EAAC,QAAQ,EACrB,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,EAChB,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,EAChB,MAAM,EAAE,OAAO,KAAK,QAAQ,GAAG,UAAU,GAAG,MAAM,EAClD,WAAW,EAAE,cAAc,CAAC,WAAW,CAAC,EACxC,GAAG,EAAE,OAAO,KAAK,QAAQ,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,SAAS,EAAA,EACjD,KAAK,CAAA,CACT,EACH;AACH;;;;"}
@@ -17,6 +17,7 @@ export declare const BaseButton: (props: {
17
17
  icon?: CSSObject | undefined;
18
18
  } | undefined;
19
19
  asChild?: boolean | undefined;
20
+ slotted?: boolean | undefined;
20
21
  } & Omit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & {
21
22
  _isHovered?: boolean | undefined;
22
23
  _isPressed?: boolean | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"BaseButton.d.ts","sourceRoot":"","sources":["../../../../src/components/button/BaseButton/BaseButton.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAY,MAAM,gBAAgB,CAAA;AASpD;;;GAGG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;sJA6GtB,CAAA"}
1
+ {"version":3,"file":"BaseButton.d.ts","sourceRoot":"","sources":["../../../../src/components/button/BaseButton/BaseButton.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAY,MAAM,gBAAgB,CAAA;AASpD;;;GAGG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;sJAoHtB,CAAA"}
@@ -11,7 +11,7 @@ import { useMediaQueryListener } from '../../../hooks/useMediaQueryListener.js';
11
11
  * `Button` or `PlainButton`.
12
12
  */
13
13
  var BaseButton = forwardRef(function BaseButton(props, ref) {
14
- var LeftIconComponent = props.iconLeft, RightIconComponent = props.iconRight, isStaticIcon = props.isStaticIcon, disabled = props.disabled, isLoading = props.isLoading, widthToHideText = props.widthToHideText, minWidth = props.minWidth, fullWidth = props.fullWidth, styles = props.styles, children = props.children, ariaLabelProp = props["aria-label"], asChild = props.asChild, _isHovered = props._isHovered, _isPressed = props._isPressed, other = __rest(props, ["iconLeft", "iconRight", "isStaticIcon", "disabled", "isLoading", "widthToHideText", "minWidth", "fullWidth", "styles", "children", 'aria-label', "asChild", "_isHovered", "_isPressed"]);
14
+ var LeftIconComponent = props.iconLeft, RightIconComponent = props.iconRight, isStaticIcon = props.isStaticIcon, disabled = props.disabled, isLoading = props.isLoading, widthToHideText = props.widthToHideText, minWidth = props.minWidth, fullWidth = props.fullWidth, styles = props.styles, children = props.children, slotted = props.slotted, ariaLabelProp = props["aria-label"], asChild = props.asChild, _isHovered = props._isHovered, _isPressed = props._isPressed, other = __rest(props, ["iconLeft", "iconRight", "isStaticIcon", "disabled", "isLoading", "widthToHideText", "minWidth", "fullWidth", "styles", "children", "slotted", 'aria-label', "asChild", "_isHovered", "_isPressed"]);
15
15
  var _a = useTheme(), motion = _a.motion, typography = _a.typography;
16
16
  var isTextHidden = useMediaQueryListener("(max-width: ".concat(widthToHideText, "px)")).isMatch;
17
17
  var getAriaLabel = function () {
@@ -46,7 +46,7 @@ var BaseButton = forwardRef(function BaseButton(props, ref) {
46
46
  fill: 'currentcolor'
47
47
  }
48
48
  };
49
- return (jsxs(ButtonComponent, __assign({ css: [buttonComponentCss, styles === null || styles === void 0 ? void 0 : styles.button], disabled: disabled || isLoading, ref: ref, type: asChild ? undefined : 'button', "aria-label": getAriaLabel() }, other, { children: [isLoading ? (jsx(LoadingSpinner, { css: styles === null || styles === void 0 ? void 0 : styles.icon })) : LeftIconComponent ? (jsx(LeftIconComponent, { css: [iconCss, styles === null || styles === void 0 ? void 0 : styles.icon] })) : null, !isTextHidden ? jsx(Slottable, { children: children }) : null, RightIconComponent ? (jsx(RightIconComponent, { css: [iconCss, styles === null || styles === void 0 ? void 0 : styles.icon] })) : null] })));
49
+ return (jsxs(ButtonComponent, __assign({ css: [buttonComponentCss, styles === null || styles === void 0 ? void 0 : styles.button], disabled: disabled || isLoading, ref: ref, type: asChild ? undefined : 'button', "aria-label": getAriaLabel() }, other, { children: [isLoading ? (jsx(LoadingSpinner, { css: styles === null || styles === void 0 ? void 0 : styles.icon })) : LeftIconComponent ? (jsx(LeftIconComponent, { css: [iconCss, styles === null || styles === void 0 ? void 0 : styles.icon] })) : null, !isTextHidden ? (slotted ? (children) : (jsx(Slottable, { children: children }))) : null, RightIconComponent ? (jsx(RightIconComponent, { css: [iconCss, styles === null || styles === void 0 ? void 0 : styles.icon] })) : null] })));
50
50
  });
51
51
 
52
52
  export { BaseButton };
@@ -1 +1 @@
1
- {"version":3,"file":"BaseButton.js","sources":["../../../../src/components/button/BaseButton/BaseButton.tsx"],"sourcesContent":["import { forwardRef } from 'react'\n\nimport { CSSObject, useTheme } from '@emotion/react'\nimport { Slot, Slottable } from '@radix-ui/react-slot'\n\nimport LoadingSpinner from 'components/loading-spinner/LoadingSpinner'\n\nimport { useMediaQueryListener } from '../../../hooks/useMediaQueryListener'\n\nimport type { BaseButtonProps } from './types'\n\n/**\n * Base component for Harmony buttons. Not intended to be used directly. Use\n * `Button` or `PlainButton`.\n */\nexport const BaseButton = forwardRef<HTMLButtonElement, BaseButtonProps>(\n function BaseButton(props, ref) {\n const {\n iconLeft: LeftIconComponent,\n iconRight: RightIconComponent,\n isStaticIcon,\n disabled,\n isLoading,\n widthToHideText,\n minWidth,\n fullWidth,\n styles,\n children,\n 'aria-label': ariaLabelProp,\n asChild,\n _isHovered,\n _isPressed,\n ...other\n } = props\n const { motion, typography } = useTheme()\n const { isMatch: isTextHidden } = useMediaQueryListener(\n `(max-width: ${widthToHideText}px)`\n )\n\n const getAriaLabel = () => {\n // always default to manual aria-label prop if provided\n if (ariaLabelProp) return ariaLabelProp\n // We use the children prop as the aria-label if the text becomes hidden\n // and no aria-label was provided to keep the button accessible.\n if (isTextHidden && typeof children === 'string') return children\n return undefined\n }\n\n const ButtonComponent = asChild ? Slot : 'button'\n\n const buttonComponentCss: CSSObject = {\n fontFamily: typography.font,\n alignItems: 'center',\n boxSizing: 'border-box',\n cursor: 'pointer',\n display: 'inline-flex',\n flexShrink: 0,\n justifyContent: 'center',\n overflow: 'hidden',\n position: 'relative',\n textAlign: 'center',\n userSelect: 'none',\n whiteSpace: 'nowrap',\n transition: `\n transform ${motion.hover},\n border-color ${motion.hover},\n background-color ${motion.hover},\n color ${motion.hover}\n `,\n\n ...(fullWidth && {\n width: '100%',\n flexShrink: 1\n }),\n\n ':focus': {\n outline: 'none !important'\n },\n ':hover': {\n transform: fullWidth ? 'scale(1.00)' : 'scale(1.04)'\n },\n ':active': {\n transform: fullWidth ? 'scale(1.00)' : 'scale(0.98)'\n },\n\n ...((disabled || isLoading || _isHovered || _isPressed) && {\n pointerEvents: 'none'\n }),\n ...(_isHovered && {\n transform: fullWidth ? 'scale(1.00)' : 'scale(1.04)'\n }),\n ...(_isPressed && {\n transform: fullWidth ? 'scale(1.00)' : 'scale(0.98)'\n }),\n minWidth: minWidth && !isTextHidden ? `${minWidth}px` : 'unset'\n }\n\n const iconCss = !isStaticIcon && {\n '& path': {\n fill: 'currentcolor'\n }\n }\n\n return (\n <ButtonComponent\n css={[buttonComponentCss, styles?.button]}\n disabled={disabled || isLoading}\n ref={ref}\n type={asChild ? undefined : 'button'}\n aria-label={getAriaLabel()}\n {...other}\n >\n {isLoading ? (\n <LoadingSpinner css={styles?.icon} />\n ) : LeftIconComponent ? (\n <LeftIconComponent css={[iconCss, styles?.icon]} />\n ) : null}\n {!isTextHidden ? <Slottable>{children}</Slottable> : null}\n {RightIconComponent ? (\n <RightIconComponent css={[iconCss, styles?.icon]} />\n ) : null}\n </ButtonComponent>\n )\n }\n)\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"BaseButton.js","sources":["../../../../src/components/button/BaseButton/BaseButton.tsx"],"sourcesContent":["import { forwardRef } from 'react'\n\nimport { CSSObject, useTheme } from '@emotion/react'\nimport { Slot, Slottable } from '@radix-ui/react-slot'\n\nimport LoadingSpinner from 'components/loading-spinner/LoadingSpinner'\n\nimport { useMediaQueryListener } from '../../../hooks/useMediaQueryListener'\n\nimport type { BaseButtonProps } from './types'\n\n/**\n * Base component for Harmony buttons. Not intended to be used directly. Use\n * `Button` or `PlainButton`.\n */\nexport const BaseButton = forwardRef<HTMLButtonElement, BaseButtonProps>(\n function BaseButton(props, ref) {\n const {\n iconLeft: LeftIconComponent,\n iconRight: RightIconComponent,\n isStaticIcon,\n disabled,\n isLoading,\n widthToHideText,\n minWidth,\n fullWidth,\n styles,\n children,\n slotted,\n 'aria-label': ariaLabelProp,\n asChild,\n _isHovered,\n _isPressed,\n ...other\n } = props\n const { motion, typography } = useTheme()\n const { isMatch: isTextHidden } = useMediaQueryListener(\n `(max-width: ${widthToHideText}px)`\n )\n\n const getAriaLabel = () => {\n // always default to manual aria-label prop if provided\n if (ariaLabelProp) return ariaLabelProp\n // We use the children prop as the aria-label if the text becomes hidden\n // and no aria-label was provided to keep the button accessible.\n if (isTextHidden && typeof children === 'string') return children\n return undefined\n }\n\n const ButtonComponent = asChild ? Slot : 'button'\n\n const buttonComponentCss: CSSObject = {\n fontFamily: typography.font,\n alignItems: 'center',\n boxSizing: 'border-box',\n cursor: 'pointer',\n display: 'inline-flex',\n flexShrink: 0,\n justifyContent: 'center',\n overflow: 'hidden',\n position: 'relative',\n textAlign: 'center',\n userSelect: 'none',\n whiteSpace: 'nowrap',\n transition: `\n transform ${motion.hover},\n border-color ${motion.hover},\n background-color ${motion.hover},\n color ${motion.hover}\n `,\n\n ...(fullWidth && {\n width: '100%',\n flexShrink: 1\n }),\n\n ':focus': {\n outline: 'none !important'\n },\n ':hover': {\n transform: fullWidth ? 'scale(1.00)' : 'scale(1.04)'\n },\n ':active': {\n transform: fullWidth ? 'scale(1.00)' : 'scale(0.98)'\n },\n\n ...((disabled || isLoading || _isHovered || _isPressed) && {\n pointerEvents: 'none'\n }),\n ...(_isHovered && {\n transform: fullWidth ? 'scale(1.00)' : 'scale(1.04)'\n }),\n ...(_isPressed && {\n transform: fullWidth ? 'scale(1.00)' : 'scale(0.98)'\n }),\n minWidth: minWidth && !isTextHidden ? `${minWidth}px` : 'unset'\n }\n\n const iconCss = !isStaticIcon && {\n '& path': {\n fill: 'currentcolor'\n }\n }\n\n return (\n <ButtonComponent\n css={[buttonComponentCss, styles?.button]}\n disabled={disabled || isLoading}\n ref={ref}\n type={asChild ? undefined : 'button'}\n aria-label={getAriaLabel()}\n {...other}\n >\n {isLoading ? (\n <LoadingSpinner css={styles?.icon} />\n ) : LeftIconComponent ? (\n <LeftIconComponent css={[iconCss, styles?.icon]} />\n ) : null}\n {!isTextHidden ? (\n slotted ? (\n children\n ) : (\n <Slottable>{children}</Slottable>\n )\n ) : null}\n {RightIconComponent ? (\n <RightIconComponent css={[iconCss, styles?.icon]} />\n ) : null}\n </ButtonComponent>\n )\n }\n)\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
@@ -62,6 +62,7 @@ export type BaseButtonProps = {
62
62
  * merging their props and behavior.
63
63
  */
64
64
  asChild?: boolean;
65
+ slotted?: boolean;
65
66
  } & HTMLButtonProps & InternalProps;
66
67
  export {};
67
68
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/button/BaseButton/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,OAAO,CAAA;AAErD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,aAAa,CAAA;AAEhF,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAA;AAEtD,KAAK,gBAAgB,GAAG;IACtB,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAA;AAEhE;;;KAGK;AACL,KAAK,aAAa,GAAG;IACnB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B;;OAEG;IACH,QAAQ,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;IAE/B;;OAEG;IACH,SAAS,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;IAEhC;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB;;OAEG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAA;IAEzB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,GAAG,eAAe,GACjB,aAAa,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/button/BaseButton/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,OAAO,CAAA;AAErD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,aAAa,CAAA;AAEhF,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAA;AAEtD,KAAK,gBAAgB,GAAG;IACtB,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAA;AAEhE;;;KAGK;AACL,KAAK,aAAa,GAAG;IACnB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B;;OAEG;IACH,QAAQ,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;IAE/B;;OAEG;IACH,SAAS,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;IAEhC;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB;;OAEG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAA;IAEzB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,GAAG,eAAe,GACjB,aAAa,CAAA"}
@@ -1,4 +1,4 @@
1
1
  /// <reference types="react" />
2
2
  import { FilterButtonProps } from './types';
3
- export declare const FilterButton: (props: FilterButtonProps & import("react").RefAttributes<HTMLButtonElement>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | null;
3
+ export declare const FilterButton: <Value extends string>(props: FilterButtonProps<Value> & import("react").RefAttributes<HTMLButtonElement>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | null;
4
4
  //# sourceMappingURL=FilterButton.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilterButton.d.ts","sourceRoot":"","sources":["../../../../src/components/button/FilterButton/FilterButton.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAE3C,eAAO,MAAM,YAAY,gLAkLxB,CAAA"}
1
+ {"version":3,"file":"FilterButton.d.ts","sourceRoot":"","sources":["../../../../src/components/button/FilterButton/FilterButton.tsx"],"names":[],"mappings":";AAuBA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAM3C,eAAO,MAAM,YAAY,6MA0RvB,CAAA"}
@@ -1,28 +1,43 @@
1
1
  import { __assign } from '../../../_virtual/_tslib.js';
2
- import { jsxs } from '@emotion/react/jsx-runtime';
3
- import { forwardRef, useState, useCallback, useEffect, useRef } from 'react';
2
+ import { jsx, jsxs } from '@emotion/react/jsx-runtime';
3
+ import { forwardRef, useState, useRef, useCallback, useMemo, useEffect } from 'react';
4
4
  import { useTheme } from '@emotion/react';
5
+ import { mergeRefs } from 'react-merge-refs';
5
6
  import { BaseButton } from '../BaseButton/BaseButton.js';
7
+ import { TextInput } from '../../input/TextInput/TextInput.js';
8
+ import { TextInputSize } from '../../input/TextInput/types.js';
9
+ import { Menu, MenuContent } from '../../internal/Menu.js';
10
+ import { Box } from '../../layout/Box/Box.js';
11
+ import { Flex } from '../../layout/Flex/Flex.js';
12
+ import '../../layout/Paper/Paper.js';
13
+ import { Text } from '../../text/Text.js';
6
14
  import { useControlled } from '../../../hooks/useControlled.js';
7
- import { IconCloseAlt } from '../../../icons/utilityIcons.js';
15
+ import { IconCloseAlt, IconCaretDown, IconSearch } from '../../../icons/utilityIcons.js';
8
16
  import '@emotion/css';
17
+ import { VirtualizedOptionsList, OptionsList } from './FilterButtonOptionsList.js';
9
18
 
19
+ var messages = {
20
+ noMatches: 'No matches'
21
+ };
10
22
  var FilterButton = forwardRef(function FilterButton(props, ref) {
11
- var valueProp = props.value, children = props.children, labelProp = props.label, onChange = props.onChange, onClick = props.onClick, onOpen = props.onOpen, onReset = props.onReset, disabled = props.disabled, _a = props.variant, variant = _a === void 0 ? 'fillContainer' : _a, _b = props.size, size = _b === void 0 ? 'default' : _b, iconRight = props.iconRight;
12
- var _c = useTheme(), color = _c.color, cornerRadius = _c.cornerRadius, spacing = _c.spacing, typography = _c.typography;
13
- var _d = useControlled({
23
+ var _a, _b;
24
+ var valueProp = props.value, children = props.children, label = props.label, onChange = props.onChange, onClick = props.onClick, onOpen = props.onOpen, onReset = props.onReset, disabled = props.disabled, _c = props.variant, variant = _c === void 0 ? 'fillContainer' : _c, _d = props.size, size = _d === void 0 ? 'default' : _d, iconRight = props.iconRight, leadingElementProp = props.leadingElement, menuProps = props.menuProps, options = props.options, showFilterInput = props.showFilterInput, filterInputProps = props.filterInputProps, optionsLabel = props.optionsLabel, _e = props.renderLabel, renderLabel = _e === void 0 ? function (label) { return label; } : _e, virtualized = props.virtualized;
25
+ var _f = useTheme(), color = _f.color, cornerRadius = _f.cornerRadius, spacing = _f.spacing, typography = _f.typography;
26
+ var _g = useControlled({
14
27
  controlledProp: valueProp,
15
28
  defaultValue: null,
16
29
  stateName: 'value',
17
30
  componentName: 'FilterButton'
18
- }), value = _d[0], setValue = _d[1];
19
- var _e = useControlled({
20
- controlledProp: labelProp,
21
- defaultValue: null,
22
- stateName: 'label',
23
- componentName: 'FilterButton'
24
- }), label = _e[0], setLabel = _e[1];
25
- var _f = useState(false), isOpen = _f[0], setIsOpen = _f[1];
31
+ }), value = _g[0], setValue = _g[1];
32
+ var _h = useState(false), isOpen = _h[0], setIsOpen = _h[1];
33
+ var _j = useState(''), filterInputValue = _j[0], setFilterInputValue = _j[1];
34
+ var selectedOption = options === null || options === void 0 ? void 0 : options.find(function (option) { return option.value === value; });
35
+ var selectedLabel = (_a = selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.label) !== null && _a !== void 0 ? _a : selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.value;
36
+ var leadingElement = leadingElementProp !== null && leadingElementProp !== void 0 ? leadingElementProp : selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.leadingElement;
37
+ var anchorRef = useRef(null);
38
+ var inputRef = useRef(null);
39
+ var optionRefs = useRef([]);
40
+ var scrollRef = useRef(null);
26
41
  // Size Styles
27
42
  var defaultStyles = {
28
43
  paddingLeft: spacing.m,
@@ -48,75 +63,84 @@ var FilterButton = forwardRef(function FilterButton(props, ref) {
48
63
  background: color.secondary.s400,
49
64
  border: "1px solid ".concat(color.secondary.s400),
50
65
  '&:hover': {
51
- border: "1px solid ".concat(color.secondary.s400),
52
- transform: 'none'
66
+ border: "1px solid ".concat(color.secondary.s400)
53
67
  }
54
68
  };
55
- var activeStyle = variant !== 'fillContainer' || value === null
56
- ? {
57
- border: "1px solid ".concat(color.border.strong),
58
- background: color.background.surface2
59
- }
60
- : {};
61
69
  var hoverStyle = {
62
- border: "1px solid ".concat(color.neutral.n800),
70
+ background: color.background.surface1
71
+ };
72
+ var activeStyle = {
73
+ background: color.background.surface2
74
+ };
75
+ var disabledTransform = {
63
76
  transform: 'none'
64
77
  };
65
78
  // Button Styles
66
- var buttonCss = __assign(__assign(__assign({ background: 'transparent', border: "1px solid ".concat(color.border.strong), borderRadius: cornerRadius.s, color: variant === 'fillContainer' && value !== null
79
+ var buttonCss = __assign(__assign(__assign({ background: color.background.white, border: "1px solid ".concat(color.border.strong), borderRadius: cornerRadius.s, color: variant === 'fillContainer' && value !== null
67
80
  ? color.static.white
68
- : color.text.default, gap: spacing.xs, fontSize: typography.size.s, fontWeight: typography.weight.demiBold, lineHeight: typography.lineHeight.s, opacity: disabled ? 0.6 : 1, '&:hover': hoverStyle, '&:focus': hoverStyle, '&:active': __assign(__assign({}, activeStyle), { transform: 'none' }) }, (size === 'small' ? smallStyles : defaultStyles)), (isOpen ? activeStyle : {})), (variant === 'fillContainer' && value !== null
81
+ : color.text.default, gap: spacing.xs, fontSize: typography.size.s, fontWeight: typography.weight.demiBold, lineHeight: typography.lineHeight.s, opacity: disabled ? 0.6 : 1, '&:hover': __assign(__assign({}, disabledTransform), (value === null && !isOpen ? hoverStyle : {})), '&:focus': __assign(__assign({}, disabledTransform), (value === null ? activeStyle : {})), '&:active': __assign(__assign({}, disabledTransform), (value === null ? activeStyle : {})) }, (isOpen ? activeStyle : {})), (size === 'small' ? smallStyles : defaultStyles)), (variant === 'fillContainer' && value !== null
69
82
  ? fillContainerStyles
70
83
  : {}));
71
84
  var iconCss = size === 'small' ? smallIconStyles : defaultIconStyles;
72
- var handleButtonClick = useCallback(function () {
85
+ var handleClick = useCallback(function () {
73
86
  if (onClick) {
74
87
  onClick();
75
88
  }
76
89
  else {
77
- if (variant === 'fillContainer' && value !== null) {
78
- setValue(null);
79
- setLabel(null);
80
- // @ts-ignore
81
- onChange === null || onChange === void 0 ? void 0 : onChange(null);
82
- onReset === null || onReset === void 0 ? void 0 : onReset();
83
- }
84
- else {
85
- setIsOpen(function (isOpen) { return !isOpen; });
86
- }
90
+ setIsOpen(function (isOpen) { return !isOpen; });
87
91
  }
88
- }, [
89
- value,
90
- variant,
91
- setIsOpen,
92
- setValue,
93
- setLabel,
94
- onChange,
95
- onClick,
96
- onReset
97
- ]);
92
+ }, [onClick]);
93
+ var hasOptions = options && options.length > 0;
94
+ var Icon = useMemo(function () {
95
+ return variant === 'fillContainer' && value !== null
96
+ ? (function (props) { return (jsx(IconCloseAlt, __assign({ "aria-label": 'cancel', onClick: function (e) {
97
+ e.stopPropagation();
98
+ if (onClick) {
99
+ onClick();
100
+ }
101
+ else {
102
+ // @ts-ignore
103
+ onChange === null || onChange === void 0 ? void 0 : onChange(null);
104
+ onReset === null || onReset === void 0 ? void 0 : onReset();
105
+ }
106
+ } }, props))); })
107
+ : iconRight !== null && iconRight !== void 0 ? iconRight : (hasOptions ? IconCaretDown : null);
108
+ }, [variant, value, iconRight, hasOptions, onClick, onChange, onReset]);
98
109
  useEffect(function () {
99
110
  if (isOpen) {
111
+ // Focus the input after the popup is open
112
+ setTimeout(function () {
113
+ var _a;
114
+ (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus({ preventScroll: true });
115
+ }, 0);
100
116
  onOpen === null || onOpen === void 0 ? void 0 : onOpen();
101
117
  }
102
118
  }, [isOpen, onOpen]);
103
- var handleChange = useCallback(function (value, label) {
119
+ var handleChange = useCallback(function (value) {
104
120
  setValue(value);
105
- setLabel(label);
106
121
  onChange === null || onChange === void 0 ? void 0 : onChange(value);
107
- }, [onChange, setValue, setLabel]);
108
- var anchorRef = useRef(null);
109
- return (jsxs(BaseButton, __assign({ ref: ref || anchorRef, styles: {
110
- button: buttonCss,
111
- icon: iconCss
112
- }, onClick: handleButtonClick, iconRight: variant === 'fillContainer' && value !== null
113
- ? IconCloseAlt
114
- : iconRight, disabled: disabled, "aria-haspopup": 'listbox', "aria-expanded": isOpen }, { children: [label, children === null || children === void 0 ? void 0 : children({
115
- isOpen: isOpen,
116
- setIsOpen: setIsOpen,
117
- handleChange: handleChange,
118
- anchorRef: anchorRef
119
- })] })));
122
+ }, [onChange, setValue]);
123
+ var handleOptionSelected = useCallback(function (value) {
124
+ handleChange(value);
125
+ setIsOpen(false);
126
+ }, [handleChange]);
127
+ var filteredOptions = useMemo(function () {
128
+ return options === null || options === void 0 ? void 0 : options.filter(function (_a) {
129
+ var label = _a.label;
130
+ return !filterInputValue ||
131
+ (label === null || label === void 0 ? void 0 : label.toLowerCase().includes(filterInputValue.toLowerCase()));
132
+ });
133
+ }, [options, filterInputValue]);
134
+ var optionElements = filteredOptions ? (virtualized ? (jsx(VirtualizedOptionsList, { options: filteredOptions, optionRefs: optionRefs, onChange: handleOptionSelected, height: menuProps === null || menuProps === void 0 ? void 0 : menuProps.maxHeight, width: menuProps === null || menuProps === void 0 ? void 0 : menuProps.width })) : (jsx(OptionsList, { options: filteredOptions, isOpen: isOpen, optionRefs: optionRefs, scrollRef: scrollRef, onChange: handleOptionSelected }))) : null;
135
+ return (jsxs(BaseButton, __assign({ ref: mergeRefs([ref, anchorRef]), styles: { button: buttonCss, icon: iconCss }, onClick: handleClick, iconRight: Icon, disabled: disabled, "aria-haspopup": 'listbox', "aria-expanded": isOpen }, { children: [leadingElement, selectedLabel ? renderLabel(selectedLabel) : label, jsx(Menu, __assign({ anchorRef: anchorRef, isVisible: isOpen, onClose: function () { return setIsOpen(false); }, PaperProps: menuProps === null || menuProps === void 0 ? void 0 : menuProps.PaperProps }, { children: children ? (jsx(Flex, __assign({ onClick: function (e) { return e.stopPropagation(); } }, { children: children({
136
+ onChange: handleChange,
137
+ options: optionElements,
138
+ setIsOpen: setIsOpen
139
+ }) }))) : (jsxs(MenuContent, __assign({ maxHeight: menuProps === null || menuProps === void 0 ? void 0 : menuProps.maxHeight, width: menuProps === null || menuProps === void 0 ? void 0 : menuProps.width, scrollRef: scrollRef, MenuListProps: menuProps === null || menuProps === void 0 ? void 0 : menuProps.MenuListProps, "aria-label": (_b = selectedLabel !== null && selectedLabel !== void 0 ? selectedLabel : label) !== null && _b !== void 0 ? _b : props['aria-label'], "aria-activedescendant": selectedLabel }, { children: [showFilterInput && filterInputProps ? (jsx(TextInput, __assign({ ref: inputRef, size: TextInputSize.SMALL, startIcon: IconSearch, onClick: function (e) {
140
+ e.stopPropagation();
141
+ }, onChange: function (e) {
142
+ setFilterInputValue(e.target.value);
143
+ }, autoComplete: 'off' }, filterInputProps))) : null, optionsLabel ? (jsx(Box, __assign({ pt: 's', ph: 'm' }, { children: jsx(Text, __assign({ variant: 'label', size: 'xs' }, { children: optionsLabel })) }))) : null, filteredOptions && filteredOptions.length === 0 ? (jsx(Flex, __assign({ justifyContent: 'center' }, { children: jsx(Text, __assign({ variant: 'body', color: 'subdued', size: 's' }, { children: messages.noMatches })) }))) : (jsx(Flex, __assign({ direction: 'column', w: '100%' }, { children: optionElements })))] }))) }))] })));
120
144
  });
121
145
 
122
146
  export { FilterButton };
@@ -1 +1 @@
1
- {"version":3,"file":"FilterButton.js","sources":["../../../../src/components/button/FilterButton/FilterButton.tsx"],"sourcesContent":["import { forwardRef, useRef, useState, useCallback, useEffect } from 'react'\n\nimport { CSSObject, useTheme } from '@emotion/react'\n\nimport { BaseButton } from 'components/button/BaseButton/BaseButton'\nimport { useControlled } from 'hooks/useControlled'\nimport { IconCloseAlt } from 'icons'\n\nimport { FilterButtonProps } from './types'\n\nexport const FilterButton = forwardRef<HTMLButtonElement, FilterButtonProps>(\n function FilterButton(props, ref) {\n const {\n value: valueProp,\n children,\n label: labelProp,\n onChange,\n onClick,\n onOpen,\n onReset,\n disabled,\n variant = 'fillContainer',\n size = 'default',\n iconRight\n } = props\n const { color, cornerRadius, spacing, typography } = useTheme()\n const [value, setValue] = useControlled({\n controlledProp: valueProp,\n defaultValue: null,\n stateName: 'value',\n componentName: 'FilterButton'\n })\n\n const [label, setLabel] = useControlled({\n controlledProp: labelProp,\n defaultValue: null,\n stateName: 'label',\n componentName: 'FilterButton'\n })\n\n const [isOpen, setIsOpen] = useState(false)\n\n // Size Styles\n const defaultStyles: CSSObject = {\n paddingLeft: spacing.m,\n paddingRight: spacing.m,\n paddingTop: spacing.s,\n paddingBottom: spacing.s\n }\n const defaultIconStyles: CSSObject = {\n width: spacing.unit4,\n height: spacing.unit4\n }\n\n const smallStyles: CSSObject = {\n paddingLeft: spacing.m,\n paddingRight: spacing.m,\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs\n }\n const smallIconStyles: CSSObject = {\n width: spacing.unit3,\n height: spacing.unit3\n }\n\n const fillContainerStyles: CSSObject = {\n background: color.secondary.s400,\n border: `1px solid ${color.secondary.s400}`,\n '&:hover': {\n border: `1px solid ${color.secondary.s400}`,\n transform: 'none'\n }\n }\n\n const activeStyle =\n variant !== 'fillContainer' || value === null\n ? {\n border: `1px solid ${color.border.strong}`,\n background: color.background.surface2\n }\n : {}\n\n const hoverStyle = {\n border: `1px solid ${color.neutral.n800}`,\n transform: 'none'\n }\n\n // Button Styles\n const buttonCss: CSSObject = {\n background: 'transparent',\n border: `1px solid ${color.border.strong}`,\n borderRadius: cornerRadius.s,\n color:\n variant === 'fillContainer' && value !== null\n ? color.static.white\n : color.text.default,\n gap: spacing.xs,\n fontSize: typography.size.s,\n fontWeight: typography.weight.demiBold,\n lineHeight: typography.lineHeight.s,\n opacity: disabled ? 0.6 : 1,\n\n '&:hover': hoverStyle,\n '&:focus': hoverStyle,\n\n '&:active': {\n ...activeStyle,\n transform: 'none'\n },\n\n ...(size === 'small' ? smallStyles : defaultStyles),\n ...(isOpen ? activeStyle : {}),\n ...(variant === 'fillContainer' && value !== null\n ? fillContainerStyles\n : {})\n }\n\n const iconCss = size === 'small' ? smallIconStyles : defaultIconStyles\n\n const handleButtonClick = useCallback(() => {\n if (onClick) {\n onClick()\n } else {\n if (variant === 'fillContainer' && value !== null) {\n setValue(null)\n setLabel(null)\n // @ts-ignore\n onChange?.(null)\n onReset?.()\n } else {\n setIsOpen((isOpen: boolean) => !isOpen)\n }\n }\n }, [\n value,\n variant,\n setIsOpen,\n setValue,\n setLabel,\n onChange,\n onClick,\n onReset\n ])\n\n useEffect(() => {\n if (isOpen) {\n onOpen?.()\n }\n }, [isOpen, onOpen])\n\n const handleChange = useCallback(\n (value: string, label: string) => {\n setValue(value)\n setLabel(label)\n onChange?.(value)\n },\n [onChange, setValue, setLabel]\n )\n\n const anchorRef = useRef<HTMLButtonElement>(null)\n\n return (\n <BaseButton\n ref={ref || anchorRef}\n styles={{\n button: buttonCss,\n icon: iconCss\n }}\n onClick={handleButtonClick}\n iconRight={\n variant === 'fillContainer' && value !== null\n ? IconCloseAlt\n : iconRight\n }\n disabled={disabled}\n aria-haspopup='listbox'\n aria-expanded={isOpen}\n >\n {label}\n {children?.({\n isOpen,\n setIsOpen,\n handleChange,\n anchorRef\n })}\n </BaseButton>\n )\n }\n)\n"],"names":["_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"FilterButton.js","sources":["../../../../src/components/button/FilterButton/FilterButton.tsx"],"sourcesContent":["import {\n forwardRef,\n useRef,\n useState,\n useCallback,\n useEffect,\n useMemo,\n Ref\n} from 'react'\n\nimport { CSSObject, useTheme } from '@emotion/react'\nimport { mergeRefs } from 'react-merge-refs'\n\nimport { BaseButton } from 'components/button/BaseButton/BaseButton'\nimport { IconComponent, IconProps } from 'components/icon'\nimport { TextInput, TextInputSize } from 'components/input/TextInput'\nimport { Menu, MenuContent } from 'components/internal/Menu'\nimport { Flex, Box } from 'components/layout'\nimport { Text } from 'components/text/Text'\nimport { useControlled } from 'hooks/useControlled'\nimport { IconCaretDown, IconCloseAlt, IconSearch } from 'icons'\n\nimport { OptionsList, VirtualizedOptionsList } from './FilterButtonOptionsList'\nimport { FilterButtonProps } from './types'\n\nconst messages = {\n noMatches: 'No matches'\n}\n\nexport const FilterButton = forwardRef(function FilterButton<\n Value extends string\n>(props: FilterButtonProps<Value>, ref: Ref<HTMLButtonElement>) {\n const {\n value: valueProp,\n children,\n label,\n onChange,\n onClick,\n onOpen,\n onReset,\n disabled,\n variant = 'fillContainer',\n size = 'default',\n iconRight,\n leadingElement: leadingElementProp,\n menuProps,\n options,\n showFilterInput,\n filterInputProps,\n optionsLabel,\n renderLabel = (label) => label,\n virtualized\n } = props\n const { color, cornerRadius, spacing, typography } = useTheme()\n const [value, setValue] = useControlled({\n controlledProp: valueProp,\n defaultValue: null,\n stateName: 'value',\n componentName: 'FilterButton'\n })\n\n const [isOpen, setIsOpen] = useState(false)\n const [filterInputValue, setFilterInputValue] = useState('')\n const selectedOption = options?.find((option) => option.value === value)\n const selectedLabel = selectedOption?.label ?? selectedOption?.value\n const leadingElement = leadingElementProp ?? selectedOption?.leadingElement\n const anchorRef = useRef<HTMLButtonElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n const optionRefs = useRef<HTMLButtonElement[]>([])\n const scrollRef = useRef<HTMLDivElement>(null)\n\n // Size Styles\n const defaultStyles: CSSObject = {\n paddingLeft: spacing.m,\n paddingRight: spacing.m,\n paddingTop: spacing.s,\n paddingBottom: spacing.s\n }\n const defaultIconStyles: CSSObject = {\n width: spacing.unit4,\n height: spacing.unit4\n }\n\n const smallStyles: CSSObject = {\n paddingLeft: spacing.m,\n paddingRight: spacing.m,\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs\n }\n const smallIconStyles: CSSObject = {\n width: spacing.unit3,\n height: spacing.unit3\n }\n\n const fillContainerStyles: CSSObject = {\n background: color.secondary.s400,\n border: `1px solid ${color.secondary.s400}`,\n '&:hover': {\n border: `1px solid ${color.secondary.s400}`\n }\n }\n\n const hoverStyle = {\n background: color.background.surface1\n }\n\n const activeStyle = {\n background: color.background.surface2\n }\n const disabledTransform = {\n transform: 'none'\n }\n\n // Button Styles\n const buttonCss: CSSObject = {\n background: color.background.white,\n border: `1px solid ${color.border.strong}`,\n borderRadius: cornerRadius.s,\n color:\n variant === 'fillContainer' && value !== null\n ? color.static.white\n : color.text.default,\n gap: spacing.xs,\n fontSize: typography.size.s,\n fontWeight: typography.weight.demiBold,\n lineHeight: typography.lineHeight.s,\n opacity: disabled ? 0.6 : 1,\n\n '&:hover': {\n ...disabledTransform,\n ...(value === null && !isOpen ? hoverStyle : {})\n },\n '&:focus': {\n ...disabledTransform,\n ...(value === null ? activeStyle : {})\n },\n '&:active': {\n ...disabledTransform,\n ...(value === null ? activeStyle : {})\n },\n ...(isOpen ? activeStyle : {}),\n\n ...(size === 'small' ? smallStyles : defaultStyles),\n ...(variant === 'fillContainer' && value !== null\n ? fillContainerStyles\n : {})\n }\n\n const iconCss = size === 'small' ? smallIconStyles : defaultIconStyles\n\n const handleClick = useCallback(() => {\n if (onClick) {\n onClick()\n } else {\n setIsOpen((isOpen: boolean) => !isOpen)\n }\n }, [onClick])\n\n const hasOptions = options && options.length > 0\n\n const Icon = useMemo(() => {\n return variant === 'fillContainer' && value !== null\n ? (((props: IconProps) => (\n <IconCloseAlt\n aria-label='cancel'\n onClick={(e) => {\n e.stopPropagation()\n if (onClick) {\n onClick()\n } else {\n // @ts-ignore\n onChange?.(null)\n onReset?.()\n }\n }}\n {...props}\n />\n )) as IconComponent)\n : iconRight ?? (hasOptions ? IconCaretDown : null)\n }, [variant, value, iconRight, hasOptions, onClick, onChange, onReset])\n\n useEffect(() => {\n if (isOpen) {\n // Focus the input after the popup is open\n setTimeout(() => {\n inputRef.current?.focus({ preventScroll: true })\n }, 0)\n onOpen?.()\n }\n }, [isOpen, onOpen])\n\n const handleChange = useCallback(\n (value: Value) => {\n setValue(value)\n onChange?.(value)\n },\n [onChange, setValue]\n )\n\n const handleOptionSelected = useCallback(\n (value: Value) => {\n handleChange(value)\n setIsOpen(false)\n },\n [handleChange]\n )\n\n const filteredOptions = useMemo(\n () =>\n options?.filter(\n ({ label }) =>\n !filterInputValue ||\n label?.toLowerCase().includes(filterInputValue.toLowerCase())\n ),\n [options, filterInputValue]\n )\n\n const optionElements = filteredOptions ? (\n virtualized ? (\n <VirtualizedOptionsList\n options={filteredOptions}\n optionRefs={optionRefs}\n onChange={handleOptionSelected}\n height={menuProps?.maxHeight}\n width={menuProps?.width}\n />\n ) : (\n <OptionsList\n options={filteredOptions}\n isOpen={isOpen}\n optionRefs={optionRefs}\n scrollRef={scrollRef}\n onChange={handleOptionSelected}\n />\n )\n ) : null\n\n return (\n <BaseButton\n ref={mergeRefs([ref, anchorRef])}\n styles={{ button: buttonCss, icon: iconCss }}\n onClick={handleClick}\n iconRight={Icon}\n disabled={disabled}\n aria-haspopup='listbox'\n aria-expanded={isOpen}\n >\n {leadingElement}\n {selectedLabel ? renderLabel(selectedLabel) : label}\n\n <Menu\n anchorRef={anchorRef}\n isVisible={isOpen}\n onClose={() => setIsOpen(false)}\n PaperProps={menuProps?.PaperProps}\n >\n {children ? (\n <Flex onClick={(e) => e.stopPropagation()}>\n {children({\n onChange: handleChange,\n options: optionElements,\n setIsOpen\n })}\n </Flex>\n ) : (\n <MenuContent\n maxHeight={menuProps?.maxHeight}\n width={menuProps?.width}\n scrollRef={scrollRef}\n MenuListProps={menuProps?.MenuListProps}\n aria-label={selectedLabel ?? label ?? props['aria-label']}\n aria-activedescendant={selectedLabel}\n >\n {showFilterInput && filterInputProps ? (\n <TextInput\n ref={inputRef}\n size={TextInputSize.SMALL}\n startIcon={IconSearch}\n onClick={(e) => {\n e.stopPropagation()\n }}\n onChange={(e) => {\n setFilterInputValue(e.target.value)\n }}\n autoComplete='off'\n {...filterInputProps}\n />\n ) : null}\n {optionsLabel ? (\n <Box pt='s' ph='m'>\n <Text variant='label' size='xs'>\n {optionsLabel}\n </Text>\n </Box>\n ) : null}\n {filteredOptions && filteredOptions.length === 0 ? (\n <Flex justifyContent='center'>\n <Text variant='body' color='subdued' size='s'>\n {messages.noMatches}\n </Text>\n </Flex>\n ) : (\n <Flex direction='column' w='100%'>\n {optionElements}\n </Flex>\n )}\n </MenuContent>\n )}\n </Menu>\n </BaseButton>\n )\n})\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  import type { Meta, StoryObj } from '@storybook/react';
2
- import { OptionsFilterButton } from './OptionsFilterButton';
3
- declare const meta: Meta<typeof OptionsFilterButton>;
2
+ import { FilterButton } from './FilterButton';
3
+ declare const meta: Meta<typeof FilterButton>;
4
4
  export default meta;
5
- type Story = StoryObj<typeof OptionsFilterButton>;
5
+ type Story = StoryObj<typeof FilterButton>;
6
6
  export declare const Primary: Story;
7
7
  export declare const FillContainer: Story;
8
8
  export declare const ReplaceLabel: Story;
9
9
  export declare const CustomIcon: Story;
10
10
  export declare const Accessibility: Story;
11
- //# sourceMappingURL=OptionsFilterButton.stories.d.ts.map
11
+ export declare const Virtualized: Story;
12
+ //# sourceMappingURL=FilterButton.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterButton.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/button/FilterButton/FilterButton.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAMtD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAG7C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,YAAY,CA0BnC,CAAA;AAED,eAAe,IAAI,CAAA;AAEnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,YAAY,CAAC,CAAA;AAG1C,eAAO,MAAM,OAAO,EAAE,KAerB,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,KAe3B,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,KAgB1B,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,KAexB,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,KAqB3B,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,KAiBzB,CAAA"}
@@ -0,0 +1,18 @@
1
+ import { RefObject, ReactNode } from 'react';
2
+ import { FilterButtonOptionType } from './types';
3
+ type FilterButtonKeyHandlerProps<Value extends string> = {
4
+ children: (activeValue: Value | null) => ReactNode;
5
+ disabled?: boolean;
6
+ onChange: (value: Value) => void;
7
+ optionRefs: RefObject<HTMLButtonElement[]>;
8
+ options: FilterButtonOptionType<Value>[];
9
+ scrollRef: RefObject<HTMLDivElement>;
10
+ };
11
+ /**
12
+ * Handles key events for the popup inside the FilterButton component
13
+ *
14
+ * Calls the `children` function with the currently active value
15
+ */
16
+ export declare const FilterButtonKeyHandler: <Value extends string>(props: FilterButtonKeyHandlerProps<Value>) => import("@emotion/react/jsx-runtime").JSX.Element;
17
+ export {};
18
+ //# sourceMappingURL=FilterButtonKeyHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterButtonKeyHandler.d.ts","sourceRoot":"","sources":["../../../../src/components/button/FilterButton/FilterButtonKeyHandler.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAY,SAAS,EAAa,MAAM,OAAO,CAAA;AAEjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAEhD,KAAK,2BAA2B,CAAC,KAAK,SAAS,MAAM,IAAI;IACvD,QAAQ,EAAE,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,KAAK,SAAS,CAAA;IAClD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAChC,UAAU,EAAE,SAAS,CAAC,iBAAiB,EAAE,CAAC,CAAA;IAC1C,OAAO,EAAE,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAA;IACxC,SAAS,EAAE,SAAS,CAAC,cAAc,CAAC,CAAA;CACrC,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,uHAmFlC,CAAA"}
@@ -0,0 +1,11 @@
1
+ /// <reference types="react" />
2
+ import { FilterButtonOptionType } from './types';
3
+ type FilterButtonOptionProps<Value extends string> = {
4
+ activeValue?: Value | null;
5
+ isActive?: boolean;
6
+ option: FilterButtonOptionType<Value>;
7
+ onChange: (option: Value) => void;
8
+ };
9
+ export declare const FilterButtonOption: <Value extends string>(props: FilterButtonOptionProps<Value> & import("react").RefAttributes<HTMLButtonElement>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | null;
10
+ export {};
11
+ //# sourceMappingURL=FilterButtonOption.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterButtonOption.d.ts","sourceRoot":"","sources":["../../../../src/components/button/FilterButton/FilterButtonOption.tsx"],"names":[],"mappings":";AASA,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAEhD,KAAK,uBAAuB,CAAC,KAAK,SAAS,MAAM,IAAI;IACnD,WAAW,CAAC,EAAE,KAAK,GAAG,IAAI,CAAA;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,EAAE,sBAAsB,CAAC,KAAK,CAAC,CAAA;IACrC,QAAQ,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK,IAAI,CAAA;CAClC,CAAA;AAED,eAAO,MAAM,kBAAkB,mNAmF7B,CAAA"}
@@ -0,0 +1,57 @@
1
+ import { __assign } from '../../../_virtual/_tslib.js';
2
+ import { jsxs, jsx } from '@emotion/react/jsx-runtime';
3
+ import { forwardRef, useCallback } from 'react';
4
+ import { Text } from '../../text/Text.js';
5
+ import '../../../foundations/color/semantic.js';
6
+ import '../../../foundations/color/color.js';
7
+ import { useTheme } from '@emotion/react';
8
+ import '../../../foundations/theme/theme.js';
9
+ import { BaseButton } from '../BaseButton/BaseButton.js';
10
+
11
+ var FilterButtonOption = forwardRef(function (props, ref) {
12
+ var _a, _b, _c;
13
+ var activeValue = props.activeValue, option = props.option, onChange = props.onChange, isActive = props.isActive;
14
+ var _d = useTheme(), color = _d.color, cornerRadius = _d.cornerRadius, spacing = _d.spacing, typography = _d.typography;
15
+ // Popup Styles
16
+ var optionIconCss = {
17
+ width: spacing.unit4,
18
+ height: spacing.unit4
19
+ };
20
+ var activeOptionCss = {
21
+ transform: 'none',
22
+ backgroundColor: color.secondary.s300,
23
+ color: color.static.white
24
+ };
25
+ var optionCss = {
26
+ background: 'transparent',
27
+ border: 'none',
28
+ color: color.text.default,
29
+ fontWeight: typography.weight.medium,
30
+ gap: spacing.s,
31
+ paddingLeft: spacing.m,
32
+ paddingRight: spacing.m,
33
+ paddingTop: spacing.s,
34
+ paddingBottom: spacing.s,
35
+ width: '100%',
36
+ borderRadius: cornerRadius.s,
37
+ justifyContent: 'flex-start',
38
+ '&:hover': activeOptionCss,
39
+ '&:hover .helperText': {
40
+ color: color.static.white
41
+ },
42
+ '&:active': {
43
+ transform: 'none'
44
+ }
45
+ };
46
+ var handleChange = useCallback(function (e) {
47
+ e.stopPropagation();
48
+ onChange(option.value);
49
+ }, [option.value, onChange]);
50
+ return (jsxs(BaseButton, __assign({ ref: ref, iconLeft: option.icon, styles: {
51
+ button: __assign(__assign({}, optionCss), (option.value === activeValue || isActive ? activeOptionCss : {})),
52
+ icon: optionIconCss
53
+ }, "aria-label": (_a = option.label) !== null && _a !== void 0 ? _a : option.value, role: 'option', onClick: handleChange }, { children: [(_b = option.leadingElement) !== null && _b !== void 0 ? _b : null, jsx(Text, __assign({ variant: 'body', strength: 'strong' }, { children: (_c = option.label) !== null && _c !== void 0 ? _c : option.value })), option.helperText ? (jsx(Text, __assign({ variant: 'body', strength: 'strong', color: option.value === activeValue ? 'staticWhite' : 'subdued', className: 'helperText' }, { children: option.helperText }))) : null] }), option.value));
54
+ });
55
+
56
+ export { FilterButtonOption };
57
+ //# sourceMappingURL=FilterButtonOption.js.map