@audius/harmony 0.0.33 → 0.1.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 (658) hide show
  1. package/dist/assets/icons/Album.svg.js +21 -7
  2. package/dist/assets/icons/Album.svg.js.map +1 -1
  3. package/dist/assets/icons/AllTime.svg.js +21 -7
  4. package/dist/assets/icons/AllTime.svg.js.map +1 -1
  5. package/dist/assets/icons/Appearance.svg.js +21 -7
  6. package/dist/assets/icons/Appearance.svg.js.map +1 -1
  7. package/dist/assets/icons/ArrowLeft.svg.js +21 -7
  8. package/dist/assets/icons/ArrowLeft.svg.js.map +1 -1
  9. package/dist/assets/icons/ArrowRight.svg.js +21 -7
  10. package/dist/assets/icons/ArrowRight.svg.js.map +1 -1
  11. package/dist/assets/icons/ArtistBadge.svg.js +21 -7
  12. package/dist/assets/icons/ArtistBadge.svg.js.map +1 -1
  13. package/dist/assets/icons/AudiusLogo.svg.js +21 -7
  14. package/dist/assets/icons/AudiusLogo.svg.js.map +1 -1
  15. package/dist/assets/icons/AudiusLogoColor.svg.js +21 -7
  16. package/dist/assets/icons/AudiusLogoColor.svg.js.map +1 -1
  17. package/dist/assets/icons/AudiusLogoHorizontal.svg.js +24 -8
  18. package/dist/assets/icons/AudiusLogoHorizontal.svg.js.map +1 -1
  19. package/dist/assets/icons/AudiusLogoHorizontalColor.svg.js +24 -8
  20. package/dist/assets/icons/AudiusLogoHorizontalColor.svg.js.map +1 -1
  21. package/dist/assets/icons/AudiusLogoVertical.svg.js +21 -7
  22. package/dist/assets/icons/AudiusLogoVertical.svg.js.map +1 -1
  23. package/dist/assets/icons/Blog.svg.js +21 -7
  24. package/dist/assets/icons/Blog.svg.js.map +1 -1
  25. package/dist/assets/icons/BoxHeart.svg.js +21 -7
  26. package/dist/assets/icons/BoxHeart.svg.js.map +1 -1
  27. package/dist/assets/icons/CalendarDay.svg.js +21 -7
  28. package/dist/assets/icons/CalendarDay.svg.js.map +1 -1
  29. package/dist/assets/icons/CalendarMonth.svg.js +21 -7
  30. package/dist/assets/icons/CalendarMonth.svg.js.map +1 -1
  31. package/dist/assets/icons/CalendarWeek.svg.js +21 -7
  32. package/dist/assets/icons/CalendarWeek.svg.js.map +1 -1
  33. package/dist/assets/icons/Camera.svg.js +21 -7
  34. package/dist/assets/icons/Camera.svg.js.map +1 -1
  35. package/dist/assets/icons/Campfire.svg.js +21 -7
  36. package/dist/assets/icons/Campfire.svg.js.map +1 -1
  37. package/dist/assets/icons/CaretDown.svg.js +21 -7
  38. package/dist/assets/icons/CaretDown.svg.js.map +1 -1
  39. package/dist/assets/icons/CaretLeft.svg.js +21 -7
  40. package/dist/assets/icons/CaretLeft.svg.js.map +1 -1
  41. package/dist/assets/icons/CaretRight.svg.js +21 -7
  42. package/dist/assets/icons/CaretRight.svg.js.map +1 -1
  43. package/dist/assets/icons/CaretUp.svg.js +21 -7
  44. package/dist/assets/icons/CaretUp.svg.js.map +1 -1
  45. package/dist/assets/icons/Cart.svg.js +21 -7
  46. package/dist/assets/icons/Cart.svg.js.map +1 -1
  47. package/dist/assets/icons/CastAirplay.svg.js +21 -7
  48. package/dist/assets/icons/CastAirplay.svg.js.map +1 -1
  49. package/dist/assets/icons/CastChromecast.svg.js +21 -7
  50. package/dist/assets/icons/CastChromecast.svg.js.map +1 -1
  51. package/dist/assets/icons/Check.svg.js +21 -7
  52. package/dist/assets/icons/Check.svg.js.map +1 -1
  53. package/dist/assets/icons/Close.svg.js +21 -7
  54. package/dist/assets/icons/Close.svg.js.map +1 -1
  55. package/dist/assets/icons/CloseAlt.svg.js +21 -7
  56. package/dist/assets/icons/CloseAlt.svg.js.map +1 -1
  57. package/dist/assets/icons/CloudDownload.svg.js +21 -7
  58. package/dist/assets/icons/CloudDownload.svg.js.map +1 -1
  59. package/dist/assets/icons/CloudDownloadError.svg.js +21 -7
  60. package/dist/assets/icons/CloudDownloadError.svg.js.map +1 -1
  61. package/dist/assets/icons/CloudDownloadInactive.svg.js +21 -7
  62. package/dist/assets/icons/CloudDownloadInactive.svg.js.map +1 -1
  63. package/dist/assets/icons/CloudDownloadPaused.svg.js +21 -7
  64. package/dist/assets/icons/CloudDownloadPaused.svg.js.map +1 -1
  65. package/dist/assets/icons/CloudDownloadQueued.svg.js +21 -7
  66. package/dist/assets/icons/CloudDownloadQueued.svg.js.map +1 -1
  67. package/dist/assets/icons/CloudUpload.svg.js +21 -7
  68. package/dist/assets/icons/CloudUpload.svg.js.map +1 -1
  69. package/dist/assets/icons/Coinbase.svg.js +21 -7
  70. package/dist/assets/icons/Coinbase.svg.js.map +1 -1
  71. package/dist/assets/icons/CoinbasePay.svg.js +21 -7
  72. package/dist/assets/icons/CoinbasePay.svg.js.map +1 -1
  73. package/dist/assets/icons/Collectible.svg.js +21 -7
  74. package/dist/assets/icons/Collectible.svg.js.map +1 -1
  75. package/dist/assets/icons/Compose.svg.js +21 -7
  76. package/dist/assets/icons/Compose.svg.js.map +1 -1
  77. package/dist/assets/icons/Copy.svg.js +21 -7
  78. package/dist/assets/icons/Copy.svg.js.map +1 -1
  79. package/dist/assets/icons/Cosign.svg.js +21 -7
  80. package/dist/assets/icons/Cosign.svg.js.map +1 -1
  81. package/dist/assets/icons/CreatePlaylist.svg.js +21 -7
  82. package/dist/assets/icons/CreatePlaylist.svg.js.map +1 -1
  83. package/dist/assets/icons/CreditCard.svg.js +21 -7
  84. package/dist/assets/icons/CreditCard.svg.js.map +1 -1
  85. package/dist/assets/icons/Crown.svg.js +21 -7
  86. package/dist/assets/icons/Crown.svg.js.map +1 -1
  87. package/dist/assets/icons/Dashboard.svg.js +21 -7
  88. package/dist/assets/icons/Dashboard.svg.js.map +1 -1
  89. package/dist/assets/icons/Desktop.svg.js +21 -7
  90. package/dist/assets/icons/Desktop.svg.js.map +1 -1
  91. package/dist/assets/icons/Discord.svg.js +21 -7
  92. package/dist/assets/icons/Discord.svg.js.map +1 -1
  93. package/dist/assets/icons/Donate.svg.js +21 -7
  94. package/dist/assets/icons/Donate.svg.js.map +1 -1
  95. package/dist/assets/icons/Drag.svg.js +21 -7
  96. package/dist/assets/icons/Drag.svg.js.map +1 -1
  97. package/dist/assets/icons/Earnings.svg.js +21 -7
  98. package/dist/assets/icons/Earnings.svg.js.map +1 -1
  99. package/dist/assets/icons/EmailAddress.svg.js +21 -7
  100. package/dist/assets/icons/EmailAddress.svg.js.map +1 -1
  101. package/dist/assets/icons/Embed.svg.js +21 -7
  102. package/dist/assets/icons/Embed.svg.js.map +1 -1
  103. package/dist/assets/icons/Error.svg.js +21 -7
  104. package/dist/assets/icons/Error.svg.js.map +1 -1
  105. package/dist/assets/icons/Explore.svg.js +21 -7
  106. package/dist/assets/icons/Explore.svg.js.map +1 -1
  107. package/dist/assets/icons/ExternalLink.svg.js +21 -7
  108. package/dist/assets/icons/ExternalLink.svg.js.map +1 -1
  109. package/dist/assets/icons/Facebook.svg.js +21 -7
  110. package/dist/assets/icons/Facebook.svg.js.map +1 -1
  111. package/dist/assets/icons/Feed.svg.js +21 -7
  112. package/dist/assets/icons/Feed.svg.js.map +1 -1
  113. package/dist/assets/icons/Filter.svg.js +21 -7
  114. package/dist/assets/icons/Filter.svg.js.map +1 -1
  115. package/dist/assets/icons/Folder.svg.js +21 -7
  116. package/dist/assets/icons/Folder.svg.js.map +1 -1
  117. package/dist/assets/icons/Foundation.svg.js +21 -7
  118. package/dist/assets/icons/Foundation.svg.js.map +1 -1
  119. package/dist/assets/icons/Gift.svg.js +21 -7
  120. package/dist/assets/icons/Gift.svg.js.map +1 -1
  121. package/dist/assets/icons/Headphones.svg.js +21 -7
  122. package/dist/assets/icons/Headphones.svg.js.map +1 -1
  123. package/dist/assets/icons/Heart.svg.js +21 -7
  124. package/dist/assets/icons/Heart.svg.js.map +1 -1
  125. package/dist/assets/icons/Image.svg.js +21 -7
  126. package/dist/assets/icons/Image.svg.js.map +1 -1
  127. package/dist/assets/icons/Indent.svg.js +21 -7
  128. package/dist/assets/icons/Indent.svg.js.map +1 -1
  129. package/dist/assets/icons/Info.svg.js +21 -7
  130. package/dist/assets/icons/Info.svg.js.map +1 -1
  131. package/dist/assets/icons/Instagram.svg.js +21 -7
  132. package/dist/assets/icons/Instagram.svg.js.map +1 -1
  133. package/dist/assets/icons/KebabHorizontal.svg.js +21 -7
  134. package/dist/assets/icons/KebabHorizontal.svg.js.map +1 -1
  135. package/dist/assets/icons/Key.svg.js +21 -7
  136. package/dist/assets/icons/Key.svg.js.map +1 -1
  137. package/dist/assets/icons/Library.svg.js +21 -7
  138. package/dist/assets/icons/Library.svg.js.map +1 -1
  139. package/dist/assets/icons/LifeRing.svg.js +21 -7
  140. package/dist/assets/icons/LifeRing.svg.js.map +1 -1
  141. package/dist/assets/icons/Link.svg.js +21 -7
  142. package/dist/assets/icons/Link.svg.js.map +1 -1
  143. package/dist/assets/icons/LinkByStripe.svg.js +21 -7
  144. package/dist/assets/icons/LinkByStripe.svg.js.map +1 -1
  145. package/dist/assets/icons/ListeningHistory.svg.js +21 -7
  146. package/dist/assets/icons/ListeningHistory.svg.js.map +1 -1
  147. package/dist/assets/icons/Listens.svg.js +21 -7
  148. package/dist/assets/icons/Listens.svg.js.map +1 -1
  149. package/dist/assets/icons/Lock.svg.js +21 -7
  150. package/dist/assets/icons/Lock.svg.js.map +1 -1
  151. package/dist/assets/icons/LockUnlocked.svg.js +21 -7
  152. package/dist/assets/icons/LockUnlocked.svg.js.map +1 -1
  153. package/dist/assets/icons/LogoCircle.svg.js +21 -7
  154. package/dist/assets/icons/LogoCircle.svg.js.map +1 -1
  155. package/dist/assets/icons/LogoCircleCoinbase.svg.js +21 -7
  156. package/dist/assets/icons/LogoCircleCoinbase.svg.js.map +1 -1
  157. package/dist/assets/icons/LogoCircleETH.svg.js +21 -7
  158. package/dist/assets/icons/LogoCircleETH.svg.js.map +1 -1
  159. package/dist/assets/icons/LogoCircleSOL.svg.js +21 -7
  160. package/dist/assets/icons/LogoCircleSOL.svg.js.map +1 -1
  161. package/dist/assets/icons/LogoCircleSTR.svg.js +21 -7
  162. package/dist/assets/icons/LogoCircleSTR.svg.js.map +1 -1
  163. package/dist/assets/icons/LogoCircleUSD.svg.js +21 -7
  164. package/dist/assets/icons/LogoCircleUSD.svg.js.map +1 -1
  165. package/dist/assets/icons/LogoCircleUSDC.svg.js +21 -7
  166. package/dist/assets/icons/LogoCircleUSDC.svg.js.map +1 -1
  167. package/dist/assets/icons/LogoPhantom.svg.js +21 -7
  168. package/dist/assets/icons/LogoPhantom.svg.js.map +1 -1
  169. package/dist/assets/icons/LogoSolana.svg.js +21 -7
  170. package/dist/assets/icons/LogoSolana.svg.js.map +1 -1
  171. package/dist/assets/icons/Merch.svg.js +21 -7
  172. package/dist/assets/icons/Merch.svg.js.map +1 -1
  173. package/dist/assets/icons/Message.svg.js +21 -7
  174. package/dist/assets/icons/Message.svg.js.map +1 -1
  175. package/dist/assets/icons/MessageBlock.svg.js +21 -7
  176. package/dist/assets/icons/MessageBlock.svg.js.map +1 -1
  177. package/dist/assets/icons/MessageLocked.svg.js +21 -7
  178. package/dist/assets/icons/MessageLocked.svg.js.map +1 -1
  179. package/dist/assets/icons/MessageUnblock.svg.js +21 -7
  180. package/dist/assets/icons/MessageUnblock.svg.js.map +1 -1
  181. package/dist/assets/icons/Metamask.svg.js +21 -7
  182. package/dist/assets/icons/Metamask.svg.js.map +1 -1
  183. package/dist/assets/icons/Minus.svg.js +21 -7
  184. package/dist/assets/icons/Minus.svg.js.map +1 -1
  185. package/dist/assets/icons/MoneyBracket.svg.js +78 -0
  186. package/dist/assets/icons/MoneyBracket.svg.js.map +1 -0
  187. package/dist/assets/icons/Mood.svg.js +21 -7
  188. package/dist/assets/icons/Mood.svg.js.map +1 -1
  189. package/dist/assets/icons/MultiselectAdd.svg.js +21 -7
  190. package/dist/assets/icons/MultiselectAdd.svg.js.map +1 -1
  191. package/dist/assets/icons/MultiselectRemove.svg.js +21 -7
  192. package/dist/assets/icons/MultiselectRemove.svg.js.map +1 -1
  193. package/dist/assets/icons/NoWifi.svg.js +21 -7
  194. package/dist/assets/icons/NoWifi.svg.js.map +1 -1
  195. package/dist/assets/icons/Note.svg.js +21 -7
  196. package/dist/assets/icons/Note.svg.js.map +1 -1
  197. package/dist/assets/icons/NotificationOff.svg.js +21 -7
  198. package/dist/assets/icons/NotificationOff.svg.js.map +1 -1
  199. package/dist/assets/icons/NotificationOn.svg.js +21 -7
  200. package/dist/assets/icons/NotificationOn.svg.js.map +1 -1
  201. package/dist/assets/icons/Pause.svg.js +21 -7
  202. package/dist/assets/icons/Pause.svg.js.map +1 -1
  203. package/dist/assets/icons/Pencil.svg.js +21 -7
  204. package/dist/assets/icons/Pencil.svg.js.map +1 -1
  205. package/dist/assets/icons/Play.svg.js +21 -7
  206. package/dist/assets/icons/Play.svg.js.map +1 -1
  207. package/dist/assets/icons/PlaybackPause.svg.js +24 -8
  208. package/dist/assets/icons/PlaybackPause.svg.js.map +1 -1
  209. package/dist/assets/icons/PlaybackPlay.svg.js +24 -8
  210. package/dist/assets/icons/PlaybackPlay.svg.js.map +1 -1
  211. package/dist/assets/icons/Playlists.svg.js +21 -7
  212. package/dist/assets/icons/Playlists.svg.js.map +1 -1
  213. package/dist/assets/icons/Plus.svg.js +21 -7
  214. package/dist/assets/icons/Plus.svg.js.map +1 -1
  215. package/dist/assets/icons/PodcastBack.svg.js +21 -7
  216. package/dist/assets/icons/PodcastBack.svg.js.map +1 -1
  217. package/dist/assets/icons/PodcastForward.svg.js +21 -7
  218. package/dist/assets/icons/PodcastForward.svg.js.map +1 -1
  219. package/dist/assets/icons/QuestionCircle.svg.js +21 -7
  220. package/dist/assets/icons/QuestionCircle.svg.js.map +1 -1
  221. package/dist/assets/icons/Radar.svg.js +21 -7
  222. package/dist/assets/icons/Radar.svg.js.map +1 -1
  223. package/dist/assets/icons/Receive.svg.js +21 -7
  224. package/dist/assets/icons/Receive.svg.js.map +1 -1
  225. package/dist/assets/icons/RecoveryEmail.svg.js +21 -7
  226. package/dist/assets/icons/RecoveryEmail.svg.js.map +1 -1
  227. package/dist/assets/icons/Refresh.svg.js +21 -7
  228. package/dist/assets/icons/Refresh.svg.js.map +1 -1
  229. package/dist/assets/icons/Remix.svg.js +21 -7
  230. package/dist/assets/icons/Remix.svg.js.map +1 -1
  231. package/dist/assets/icons/Remove.svg.js +21 -7
  232. package/dist/assets/icons/Remove.svg.js.map +1 -1
  233. package/dist/assets/icons/RepeatOff.svg.js +21 -7
  234. package/dist/assets/icons/RepeatOff.svg.js.map +1 -1
  235. package/dist/assets/icons/Repost.svg.js +21 -7
  236. package/dist/assets/icons/Repost.svg.js.map +1 -1
  237. package/dist/assets/icons/Robot.svg.js +21 -7
  238. package/dist/assets/icons/Robot.svg.js.map +1 -1
  239. package/dist/assets/icons/Rocket.svg.js +21 -7
  240. package/dist/assets/icons/Rocket.svg.js.map +1 -1
  241. package/dist/assets/icons/Save.svg.js +21 -7
  242. package/dist/assets/icons/Save.svg.js.map +1 -1
  243. package/dist/assets/icons/Search.svg.js +21 -7
  244. package/dist/assets/icons/Search.svg.js.map +1 -1
  245. package/dist/assets/icons/Send.svg.js +21 -7
  246. package/dist/assets/icons/Send.svg.js.map +1 -1
  247. package/dist/assets/icons/Settings.svg.js +21 -7
  248. package/dist/assets/icons/Settings.svg.js.map +1 -1
  249. package/dist/assets/icons/Share.svg.js +21 -7
  250. package/dist/assets/icons/Share.svg.js.map +1 -1
  251. package/dist/assets/icons/ShieldCheck.svg.js +21 -7
  252. package/dist/assets/icons/ShieldCheck.svg.js.map +1 -1
  253. package/dist/assets/icons/ShieldUser.svg.js +81 -0
  254. package/dist/assets/icons/ShieldUser.svg.js.map +1 -0
  255. package/dist/assets/icons/Shuffle.svg.js +21 -7
  256. package/dist/assets/icons/Shuffle.svg.js.map +1 -1
  257. package/dist/assets/icons/SignOut.svg.js +21 -7
  258. package/dist/assets/icons/SignOut.svg.js.map +1 -1
  259. package/dist/assets/icons/SkipNext.svg.js +21 -7
  260. package/dist/assets/icons/SkipNext.svg.js.map +1 -1
  261. package/dist/assets/icons/SkipPrevious.svg.js +21 -7
  262. package/dist/assets/icons/SkipPrevious.svg.js.map +1 -1
  263. package/dist/assets/icons/Skull.svg.js +21 -7
  264. package/dist/assets/icons/Skull.svg.js.map +1 -1
  265. package/dist/assets/icons/SnapChat.svg.js +21 -7
  266. package/dist/assets/icons/SnapChat.svg.js.map +1 -1
  267. package/dist/assets/icons/Sort.svg.js +21 -7
  268. package/dist/assets/icons/Sort.svg.js.map +1 -1
  269. package/dist/assets/icons/SortDown.svg.js +21 -7
  270. package/dist/assets/icons/SortDown.svg.js.map +1 -1
  271. package/dist/assets/icons/SortUp.svg.js +21 -7
  272. package/dist/assets/icons/SortUp.svg.js.map +1 -1
  273. package/dist/assets/icons/Soundwave.svg.js +21 -7
  274. package/dist/assets/icons/Soundwave.svg.js.map +1 -1
  275. package/dist/assets/icons/Speaker.svg.js +21 -7
  276. package/dist/assets/icons/Speaker.svg.js.map +1 -1
  277. package/dist/assets/icons/SpecialAccess.svg.js +21 -7
  278. package/dist/assets/icons/SpecialAccess.svg.js.map +1 -1
  279. package/dist/assets/icons/Star.svg.js +21 -7
  280. package/dist/assets/icons/Star.svg.js.map +1 -1
  281. package/dist/assets/icons/Stars.svg.js +21 -7
  282. package/dist/assets/icons/Stars.svg.js.map +1 -1
  283. package/dist/assets/icons/Support.svg.js +21 -7
  284. package/dist/assets/icons/Support.svg.js.map +1 -1
  285. package/dist/assets/icons/Tastemaker.svg.js +21 -7
  286. package/dist/assets/icons/Tastemaker.svg.js.map +1 -1
  287. package/dist/assets/icons/Telegram.svg.js +21 -7
  288. package/dist/assets/icons/Telegram.svg.js.map +1 -1
  289. package/dist/assets/icons/ThumbsDown.svg.js +21 -7
  290. package/dist/assets/icons/ThumbsDown.svg.js.map +1 -1
  291. package/dist/assets/icons/ThumbsUp.svg.js +21 -7
  292. package/dist/assets/icons/ThumbsUp.svg.js.map +1 -1
  293. package/dist/assets/icons/TikTok.svg.js +21 -7
  294. package/dist/assets/icons/TikTok.svg.js.map +1 -1
  295. package/dist/assets/icons/Tipping.svg.js +21 -7
  296. package/dist/assets/icons/Tipping.svg.js.map +1 -1
  297. package/dist/assets/icons/TokenBronze.svg.js +21 -7
  298. package/dist/assets/icons/TokenBronze.svg.js.map +1 -1
  299. package/dist/assets/icons/TokenGold.svg.js +21 -7
  300. package/dist/assets/icons/TokenGold.svg.js.map +1 -1
  301. package/dist/assets/icons/TokenNoTier.svg.js +21 -7
  302. package/dist/assets/icons/TokenNoTier.svg.js.map +1 -1
  303. package/dist/assets/icons/TokenPlatinum.svg.js +21 -7
  304. package/dist/assets/icons/TokenPlatinum.svg.js.map +1 -1
  305. package/dist/assets/icons/TokenSilver.svg.js +21 -7
  306. package/dist/assets/icons/TokenSilver.svg.js.map +1 -1
  307. package/dist/assets/icons/Transaction.svg.js +21 -7
  308. package/dist/assets/icons/Transaction.svg.js.map +1 -1
  309. package/dist/assets/icons/Trash.svg.js +21 -7
  310. package/dist/assets/icons/Trash.svg.js.map +1 -1
  311. package/dist/assets/icons/Trending.svg.js +21 -7
  312. package/dist/assets/icons/Trending.svg.js.map +1 -1
  313. package/dist/assets/icons/TriangleExclamation.svg.js +21 -7
  314. package/dist/assets/icons/TriangleExclamation.svg.js.map +1 -1
  315. package/dist/assets/icons/Trophy.svg.js +21 -7
  316. package/dist/assets/icons/Trophy.svg.js.map +1 -1
  317. package/dist/assets/icons/Turntable.svg.js +21 -7
  318. package/dist/assets/icons/Turntable.svg.js.map +1 -1
  319. package/dist/assets/icons/Twitter.svg.js +21 -7
  320. package/dist/assets/icons/Twitter.svg.js.map +1 -1
  321. package/dist/assets/icons/User.svg.js +21 -7
  322. package/dist/assets/icons/User.svg.js.map +1 -1
  323. package/dist/assets/icons/UserArrowRotate.svg.js +81 -0
  324. package/dist/assets/icons/UserArrowRotate.svg.js.map +1 -0
  325. package/dist/assets/icons/UserFollow.svg.js +21 -7
  326. package/dist/assets/icons/UserFollow.svg.js.map +1 -1
  327. package/dist/assets/icons/UserFollowers.svg.js +21 -7
  328. package/dist/assets/icons/UserFollowers.svg.js.map +1 -1
  329. package/dist/assets/icons/UserFollowing.svg.js +21 -7
  330. package/dist/assets/icons/UserFollowing.svg.js.map +1 -1
  331. package/dist/assets/icons/UserGroup.svg.js +21 -7
  332. package/dist/assets/icons/UserGroup.svg.js.map +1 -1
  333. package/dist/assets/icons/UserList.svg.js +21 -7
  334. package/dist/assets/icons/UserList.svg.js.map +1 -1
  335. package/dist/assets/icons/UserUnfollow.svg.js +21 -7
  336. package/dist/assets/icons/UserUnfollow.svg.js.map +1 -1
  337. package/dist/assets/icons/ValidationCheck.svg.js +21 -7
  338. package/dist/assets/icons/ValidationCheck.svg.js.map +1 -1
  339. package/dist/assets/icons/ValidationX.svg.js +21 -7
  340. package/dist/assets/icons/ValidationX.svg.js.map +1 -1
  341. package/dist/assets/icons/Verified.svg.js +31 -22
  342. package/dist/assets/icons/Verified.svg.js.map +1 -1
  343. package/dist/assets/icons/VisibilityHidden.svg.js +21 -7
  344. package/dist/assets/icons/VisibilityHidden.svg.js.map +1 -1
  345. package/dist/assets/icons/VisibilityPublic.svg.js +21 -7
  346. package/dist/assets/icons/VisibilityPublic.svg.js.map +1 -1
  347. package/dist/assets/icons/VolumeLevel0.svg.js +21 -7
  348. package/dist/assets/icons/VolumeLevel0.svg.js.map +1 -1
  349. package/dist/assets/icons/VolumeLevel1.svg.js +21 -7
  350. package/dist/assets/icons/VolumeLevel1.svg.js.map +1 -1
  351. package/dist/assets/icons/VolumeLevel2.svg.js +21 -7
  352. package/dist/assets/icons/VolumeLevel2.svg.js.map +1 -1
  353. package/dist/assets/icons/VolumeLevel3.svg.js +21 -7
  354. package/dist/assets/icons/VolumeLevel3.svg.js.map +1 -1
  355. package/dist/assets/icons/Wallet.svg.js +21 -7
  356. package/dist/assets/icons/Wallet.svg.js.map +1 -1
  357. package/dist/assets/icons/Wand.svg.js +21 -7
  358. package/dist/assets/icons/Wand.svg.js.map +1 -1
  359. package/dist/assets/icons/Waveform.svg.js +21 -7
  360. package/dist/assets/icons/Waveform.svg.js.map +1 -1
  361. package/dist/assets/icons/Withdraw.svg.js +21 -7
  362. package/dist/assets/icons/Withdraw.svg.js.map +1 -1
  363. package/dist/assets/icons/ccBy.svg.js +21 -7
  364. package/dist/assets/icons/ccBy.svg.js.map +1 -1
  365. package/dist/assets/icons/ccCC.svg.js +21 -7
  366. package/dist/assets/icons/ccCC.svg.js.map +1 -1
  367. package/dist/assets/icons/ccNC-EU.svg.js +21 -7
  368. package/dist/assets/icons/ccNC-EU.svg.js.map +1 -1
  369. package/dist/assets/icons/ccNC-JP.svg.js +21 -7
  370. package/dist/assets/icons/ccNC-JP.svg.js.map +1 -1
  371. package/dist/assets/icons/ccNC.svg.js +21 -7
  372. package/dist/assets/icons/ccNC.svg.js.map +1 -1
  373. package/dist/assets/icons/ccND.svg.js +21 -7
  374. package/dist/assets/icons/ccND.svg.js.map +1 -1
  375. package/dist/assets/icons/ccPD.svg.js +21 -7
  376. package/dist/assets/icons/ccPD.svg.js.map +1 -1
  377. package/dist/assets/icons/ccRemix.svg.js +21 -7
  378. package/dist/assets/icons/ccRemix.svg.js.map +1 -1
  379. package/dist/assets/icons/ccSA.svg.js +21 -7
  380. package/dist/assets/icons/ccSA.svg.js.map +1 -1
  381. package/dist/assets/icons/ccSampling.svg.js +21 -7
  382. package/dist/assets/icons/ccSampling.svg.js.map +1 -1
  383. package/dist/assets/icons/ccSamplingPlus.svg.js +21 -7
  384. package/dist/assets/icons/ccSamplingPlus.svg.js.map +1 -1
  385. package/dist/assets/icons/ccShare.svg.js +21 -7
  386. package/dist/assets/icons/ccShare.svg.js.map +1 -1
  387. package/dist/assets/icons/ccZero.svg.js +21 -7
  388. package/dist/assets/icons/ccZero.svg.js.map +1 -1
  389. package/dist/assets/icons/file3GA.svg.js +21 -7
  390. package/dist/assets/icons/file3GA.svg.js.map +1 -1
  391. package/dist/assets/icons/file3GP.svg.js +21 -7
  392. package/dist/assets/icons/file3GP.svg.js.map +1 -1
  393. package/dist/assets/icons/fileAAC.svg.js +21 -7
  394. package/dist/assets/icons/fileAAC.svg.js.map +1 -1
  395. package/dist/assets/icons/fileAIF.svg.js +21 -7
  396. package/dist/assets/icons/fileAIF.svg.js.map +1 -1
  397. package/dist/assets/icons/fileAIFC.svg.js +21 -7
  398. package/dist/assets/icons/fileAIFC.svg.js.map +1 -1
  399. package/dist/assets/icons/fileAIFF.svg.js +21 -7
  400. package/dist/assets/icons/fileAIFF.svg.js.map +1 -1
  401. package/dist/assets/icons/fileAMR.svg.js +21 -7
  402. package/dist/assets/icons/fileAMR.svg.js.map +1 -1
  403. package/dist/assets/icons/fileAWB.svg.js +21 -7
  404. package/dist/assets/icons/fileAWB.svg.js.map +1 -1
  405. package/dist/assets/icons/fileFLAC.svg.js +21 -7
  406. package/dist/assets/icons/fileFLAC.svg.js.map +1 -1
  407. package/dist/assets/icons/fileM4A.svg.js +21 -7
  408. package/dist/assets/icons/fileM4A.svg.js.map +1 -1
  409. package/dist/assets/icons/fileM4B.svg.js +21 -7
  410. package/dist/assets/icons/fileM4B.svg.js.map +1 -1
  411. package/dist/assets/icons/fileM4P.svg.js +21 -7
  412. package/dist/assets/icons/fileM4P.svg.js.map +1 -1
  413. package/dist/assets/icons/fileM4R.svg.js +21 -7
  414. package/dist/assets/icons/fileM4R.svg.js.map +1 -1
  415. package/dist/assets/icons/fileM4V.svg.js +21 -7
  416. package/dist/assets/icons/fileM4V.svg.js.map +1 -1
  417. package/dist/assets/icons/fileMP2.svg.js +21 -7
  418. package/dist/assets/icons/fileMP2.svg.js.map +1 -1
  419. package/dist/assets/icons/fileMP3.svg.js +21 -7
  420. package/dist/assets/icons/fileMP3.svg.js.map +1 -1
  421. package/dist/assets/icons/fileMP4.svg.js +21 -7
  422. package/dist/assets/icons/fileMP4.svg.js.map +1 -1
  423. package/dist/assets/icons/fileMPGA.svg.js +21 -7
  424. package/dist/assets/icons/fileMPGA.svg.js.map +1 -1
  425. package/dist/assets/icons/fileOGA.svg.js +21 -7
  426. package/dist/assets/icons/fileOGA.svg.js.map +1 -1
  427. package/dist/assets/icons/fileOGG.svg.js +21 -7
  428. package/dist/assets/icons/fileOGG.svg.js.map +1 -1
  429. package/dist/assets/icons/fileOGM.svg.js +21 -7
  430. package/dist/assets/icons/fileOGM.svg.js.map +1 -1
  431. package/dist/assets/icons/fileOGV.svg.js +21 -7
  432. package/dist/assets/icons/fileOGV.svg.js.map +1 -1
  433. package/dist/assets/icons/fileOGX.svg.js +21 -7
  434. package/dist/assets/icons/fileOGX.svg.js.map +1 -1
  435. package/dist/assets/icons/fileOPUS.svg.js +21 -7
  436. package/dist/assets/icons/fileOPUS.svg.js.map +1 -1
  437. package/dist/assets/icons/fileSPX.svg.js +21 -7
  438. package/dist/assets/icons/fileSPX.svg.js.map +1 -1
  439. package/dist/assets/icons/fileTS.svg.js +21 -7
  440. package/dist/assets/icons/fileTS.svg.js.map +1 -1
  441. package/dist/assets/icons/fileTSA.svg.js +21 -7
  442. package/dist/assets/icons/fileTSA.svg.js.map +1 -1
  443. package/dist/assets/icons/fileTSV.svg.js +21 -7
  444. package/dist/assets/icons/fileTSV.svg.js.map +1 -1
  445. package/dist/assets/icons/fileUnknown.svg.js +24 -8
  446. package/dist/assets/icons/fileUnknown.svg.js.map +1 -1
  447. package/dist/assets/icons/fileWAV.svg.js +21 -7
  448. package/dist/assets/icons/fileWAV.svg.js.map +1 -1
  449. package/dist/assets/icons/fileWAVE.svg.js +21 -7
  450. package/dist/assets/icons/fileWAVE.svg.js.map +1 -1
  451. package/dist/assets/icons/fileWEBM.svg.js +21 -7
  452. package/dist/assets/icons/fileWEBM.svg.js.map +1 -1
  453. package/dist/assets/icons/fileXWMA.svg.js +21 -7
  454. package/dist/assets/icons/fileXWMA.svg.js.map +1 -1
  455. package/dist/components/artwork/Artwork.d.ts +17 -0
  456. package/dist/components/artwork/Artwork.d.ts.map +1 -0
  457. package/dist/components/artwork/Artwork.js +47 -0
  458. package/dist/components/artwork/Artwork.js.map +1 -0
  459. package/dist/components/artwork/Artwork.stories.d.ts +8 -0
  460. package/dist/components/artwork/Artwork.stories.d.ts.map +1 -0
  461. package/dist/components/artwork/index.d.ts +2 -0
  462. package/dist/components/artwork/index.d.ts.map +1 -0
  463. package/dist/components/avatar/Avatar.d.ts +8 -1
  464. package/dist/components/avatar/Avatar.d.ts.map +1 -1
  465. package/dist/components/avatar/Avatar.js +16 -45
  466. package/dist/components/avatar/Avatar.js.map +1 -1
  467. package/dist/components/avatar/Avatar.stories.d.ts.map +1 -1
  468. package/dist/components/avatar/index.d.ts +1 -1
  469. package/dist/components/avatar/index.d.ts.map +1 -1
  470. package/dist/components/button/BaseButton/BaseButton.d.ts +2 -2
  471. package/dist/components/button/BaseButton/types.d.ts +2 -2
  472. package/dist/components/button/BaseButton/types.d.ts.map +1 -1
  473. package/dist/components/button/Button/Button.d.ts +1 -1
  474. package/dist/components/button/Button/Button.js +7 -8
  475. package/dist/components/button/Button/Button.js.map +1 -1
  476. package/dist/components/button/Button/types.d.ts +2 -2
  477. package/dist/components/button/Button/types.d.ts.map +1 -1
  478. package/dist/components/button/FilterButton/FilterButton.d.ts.map +1 -1
  479. package/dist/components/button/FilterButton/FilterButton.js +63 -69
  480. package/dist/components/button/FilterButton/FilterButton.js.map +1 -1
  481. package/dist/components/button/FilterButton/types.d.ts +38 -23
  482. package/dist/components/button/FilterButton/types.d.ts.map +1 -1
  483. package/dist/components/button/FollowButton/FollowButton.js +1 -1
  484. package/dist/components/button/FollowButton/FollowButton.js.map +1 -1
  485. package/dist/components/button/IconButton/IconButton.d.ts +3 -3
  486. package/dist/components/button/IconButton/IconButton.d.ts.map +1 -1
  487. package/dist/components/button/IconButton/IconButton.js +4 -3
  488. package/dist/components/button/IconButton/IconButton.js.map +1 -1
  489. package/dist/components/button/OptionsFilterButton/OptionsFilterButton.d.ts +18 -0
  490. package/dist/components/button/OptionsFilterButton/OptionsFilterButton.d.ts.map +1 -0
  491. package/dist/components/button/OptionsFilterButton/OptionsFilterButton.js +123 -0
  492. package/dist/components/button/OptionsFilterButton/OptionsFilterButton.js.map +1 -0
  493. package/dist/components/button/{FilterButton/FilterButton.stories.d.ts → OptionsFilterButton/OptionsFilterButton.stories.d.ts} +4 -4
  494. package/dist/components/button/OptionsFilterButton/OptionsFilterButton.stories.d.ts.map +1 -0
  495. package/dist/components/button/OptionsFilterButton/SelectPopupKeyHandler.d.ts +18 -0
  496. package/dist/components/button/OptionsFilterButton/SelectPopupKeyHandler.d.ts.map +1 -0
  497. package/dist/components/button/OptionsFilterButton/SelectPopupKeyHandler.js +82 -0
  498. package/dist/components/button/OptionsFilterButton/SelectPopupKeyHandler.js.map +1 -0
  499. package/dist/components/button/OptionsFilterButton/types.d.ts +62 -0
  500. package/dist/components/button/OptionsFilterButton/types.d.ts.map +1 -0
  501. package/dist/components/button/UnstyledButton.d.ts +11 -0
  502. package/dist/components/button/UnstyledButton.d.ts.map +1 -0
  503. package/dist/components/button/UnstyledButton.js +13 -0
  504. package/dist/components/button/UnstyledButton.js.map +1 -0
  505. package/dist/components/button/index.d.ts +3 -0
  506. package/dist/components/button/index.d.ts.map +1 -1
  507. package/dist/components/completion-check/CompletionCheck.js +0 -1
  508. package/dist/components/completion-check/CompletionCheck.js.map +1 -1
  509. package/dist/components/hint/Hint.d.ts +1 -1
  510. package/dist/components/hint/Hint.d.ts.map +1 -1
  511. package/dist/components/hint/Hint.js +5 -3
  512. package/dist/components/hint/Hint.js.map +1 -1
  513. package/dist/components/icon.d.ts +1 -0
  514. package/dist/components/icon.d.ts.map +1 -1
  515. package/dist/components/index.d.ts +7 -0
  516. package/dist/components/index.d.ts.map +1 -1
  517. package/dist/components/input/PasswordInput/PasswordInput.js +2 -0
  518. package/dist/components/input/PasswordInput/PasswordInput.js.map +1 -1
  519. package/dist/components/input/SelectablePill/SelectablePill.js +2 -2
  520. package/dist/components/input/SelectablePill/SelectablePill.js.map +1 -1
  521. package/dist/components/input/TextInput/TextInput.d.ts.map +1 -1
  522. package/dist/components/input/TextInput/TextInput.js +3 -4
  523. package/dist/components/input/TextInput/TextInput.js.map +1 -1
  524. package/dist/components/layout/Box/Box.js +6 -6
  525. package/dist/components/layout/Box/Box.js.map +1 -1
  526. package/dist/components/layout/Box/types.d.ts +8 -8
  527. package/dist/components/layout/Box/types.d.ts.map +1 -1
  528. package/dist/components/layout/Divider/Divider.d.ts.map +1 -1
  529. package/dist/components/layout/Divider/Divider.js +4 -4
  530. package/dist/components/layout/Divider/Divider.js.map +1 -1
  531. package/dist/components/layout/Divider/types.d.ts +2 -0
  532. package/dist/components/layout/Divider/types.d.ts.map +1 -1
  533. package/dist/components/layout/Paper/Paper.d.ts.map +1 -1
  534. package/dist/components/layout/Paper/Paper.js +2 -1
  535. package/dist/components/layout/Paper/Paper.js.map +1 -1
  536. package/dist/components/layout/index.d.ts +0 -1
  537. package/dist/components/layout/index.d.ts.map +1 -1
  538. package/dist/components/modal/Modal.js +1 -1
  539. package/dist/components/modal/Modal.js.map +1 -1
  540. package/dist/components/modal/ModalHeader.js +2 -0
  541. package/dist/components/modal/ModalHeader.js.map +1 -1
  542. package/dist/components/music-badge/MusicBadge.d.ts +25 -0
  543. package/dist/components/music-badge/MusicBadge.d.ts.map +1 -0
  544. package/dist/components/music-badge/MusicBadge.js +40 -0
  545. package/dist/components/music-badge/MusicBadge.js.map +1 -0
  546. package/dist/components/music-badge/MusicBadge.stories.d.ts +7 -0
  547. package/dist/components/music-badge/MusicBadge.stories.d.ts.map +1 -0
  548. package/dist/components/music-badge/index.d.ts +3 -0
  549. package/dist/components/music-badge/index.d.ts.map +1 -0
  550. package/dist/components/pill/Pill.d.ts +31 -0
  551. package/dist/components/pill/Pill.d.ts.map +1 -0
  552. package/dist/components/pill/Pill.js +59 -0
  553. package/dist/components/pill/Pill.js.map +1 -0
  554. package/dist/components/pill/Pill.stories.d.ts +10 -0
  555. package/dist/components/pill/Pill.stories.d.ts.map +1 -0
  556. package/dist/components/pill/index.d.ts +3 -0
  557. package/dist/components/pill/index.d.ts.map +1 -0
  558. package/dist/components/popup/Popup.d.ts.map +1 -0
  559. package/dist/components/{layout/Popup → popup}/Popup.js +13 -9
  560. package/dist/components/popup/Popup.js.map +1 -0
  561. package/dist/components/popup/Popup.module.css.js +4 -0
  562. package/dist/components/popup/Popup.stories.d.ts.map +1 -0
  563. package/dist/components/popup/index.d.ts.map +1 -0
  564. package/dist/components/{layout/Popup → popup}/types.d.ts +3 -3
  565. package/dist/components/popup/types.d.ts.map +1 -0
  566. package/dist/components/popup-menu/PopupMenu.d.ts +2 -2
  567. package/dist/components/popup-menu/PopupMenu.js +1 -1
  568. package/dist/components/popup-menu/PopupMenu.js.map +1 -1
  569. package/dist/components/popup-menu/types.d.ts +1 -1
  570. package/dist/components/popup-menu/types.d.ts.map +1 -1
  571. package/dist/components/radio-group/RadioGroup.js +0 -1
  572. package/dist/components/radio-group/RadioGroup.js.map +1 -1
  573. package/dist/components/segmented-control/SegmentedControl.js +1 -1
  574. package/dist/components/segmented-control/SegmentedControl.js.map +1 -1
  575. package/dist/components/skeleton/Skeleton.d.ts +5 -0
  576. package/dist/components/skeleton/Skeleton.d.ts.map +1 -0
  577. package/dist/components/skeleton/Skeleton.js +27 -0
  578. package/dist/components/skeleton/Skeleton.js.map +1 -0
  579. package/dist/components/skeleton/Skeleton.stories.d.ts +7 -0
  580. package/dist/components/skeleton/Skeleton.stories.d.ts.map +1 -0
  581. package/dist/components/skeleton/index.d.ts +2 -0
  582. package/dist/components/skeleton/index.d.ts.map +1 -0
  583. package/dist/components/tag/Tag.js +5 -10
  584. package/dist/components/tag/Tag.js.map +1 -1
  585. package/dist/components/text/Text.d.ts.map +1 -0
  586. package/dist/components/text/Text.js +52 -0
  587. package/dist/components/text/Text.js.map +1 -0
  588. package/dist/components/text/Text.stories.d.ts.map +1 -0
  589. package/dist/components/text/constants.d.ts.map +1 -0
  590. package/dist/components/text/{Text/constants.js → constants.js} +4 -4
  591. package/dist/components/text/constants.js.map +1 -0
  592. package/dist/components/text/index.d.ts +3 -1
  593. package/dist/components/text/index.d.ts.map +1 -1
  594. package/dist/components/text/textContext.d.ts +7 -0
  595. package/dist/components/text/textContext.d.ts.map +1 -0
  596. package/dist/components/text/textContext.js +6 -0
  597. package/dist/components/text/textContext.js.map +1 -0
  598. package/dist/components/text/{Text/types.d.ts → types.d.ts} +1 -1
  599. package/dist/components/text/types.d.ts.map +1 -0
  600. package/dist/components/text-link/TextLink.d.ts +3 -7
  601. package/dist/components/text-link/TextLink.d.ts.map +1 -1
  602. package/dist/components/text-link/TextLink.js +8 -6
  603. package/dist/components/text-link/TextLink.js.map +1 -1
  604. package/dist/components/text-link/types.d.ts +4 -7
  605. package/dist/components/text-link/types.d.ts.map +1 -1
  606. package/dist/foundations/color/color.d.ts +12 -0
  607. package/dist/foundations/color/color.d.ts.map +1 -1
  608. package/dist/foundations/color/primitive.d.ts +9 -0
  609. package/dist/foundations/color/primitive.d.ts.map +1 -1
  610. package/dist/foundations/color/primitive.js +9 -0
  611. package/dist/foundations/color/primitive.js.map +1 -1
  612. package/dist/foundations/color/semantic.d.ts +3 -0
  613. package/dist/foundations/color/semantic.d.ts.map +1 -1
  614. package/dist/foundations/color/semantic.js +2 -1
  615. package/dist/foundations/color/semantic.js.map +1 -1
  616. package/dist/foundations/corner-radius/cornerRadius.d.ts +1 -0
  617. package/dist/foundations/corner-radius/cornerRadius.d.ts.map +1 -1
  618. package/dist/foundations/corner-radius/cornerRadius.js +2 -1
  619. package/dist/foundations/corner-radius/cornerRadius.js.map +1 -1
  620. package/dist/foundations/spacing/spacing.d.ts +1 -0
  621. package/dist/foundations/spacing/spacing.d.ts.map +1 -1
  622. package/dist/foundations/spacing/spacing.js +1 -0
  623. package/dist/foundations/spacing/spacing.js.map +1 -1
  624. package/dist/foundations/typography/typography.d.ts +1 -0
  625. package/dist/foundations/typography/typography.d.ts.map +1 -1
  626. package/dist/foundations/typography/typography.js +5 -3
  627. package/dist/foundations/typography/typography.js.map +1 -1
  628. package/dist/harmony.css +1 -1
  629. package/dist/icons/utilityIcons.d.ts +3 -0
  630. package/dist/icons/utilityIcons.d.ts.map +1 -1
  631. package/dist/icons/utilityIcons.js +7 -1
  632. package/dist/icons/utilityIcons.js.map +1 -1
  633. package/dist/index.js +12 -4
  634. package/dist/index.js.map +1 -1
  635. package/package.json +4 -2
  636. package/dist/components/button/FilterButton/FilterButton.stories.d.ts.map +0 -1
  637. package/dist/components/layout/Popup/Popup.d.ts.map +0 -1
  638. package/dist/components/layout/Popup/Popup.js.map +0 -1
  639. package/dist/components/layout/Popup/Popup.module.css.js +0 -4
  640. package/dist/components/layout/Popup/Popup.stories.d.ts.map +0 -1
  641. package/dist/components/layout/Popup/index.d.ts.map +0 -1
  642. package/dist/components/layout/Popup/types.d.ts.map +0 -1
  643. package/dist/components/text/Text/Text.d.ts.map +0 -1
  644. package/dist/components/text/Text/Text.js +0 -42
  645. package/dist/components/text/Text/Text.js.map +0 -1
  646. package/dist/components/text/Text/Text.stories.d.ts.map +0 -1
  647. package/dist/components/text/Text/constants.d.ts.map +0 -1
  648. package/dist/components/text/Text/constants.js.map +0 -1
  649. package/dist/components/text/Text/index.d.ts +0 -4
  650. package/dist/components/text/Text/index.d.ts.map +0 -1
  651. package/dist/components/text/Text/types.d.ts.map +0 -1
  652. /package/dist/components/{layout/Popup → popup}/Popup.d.ts +0 -0
  653. /package/dist/components/{layout/Popup → popup}/Popup.module.css.js.map +0 -0
  654. /package/dist/components/{layout/Popup → popup}/Popup.stories.d.ts +0 -0
  655. /package/dist/components/{layout/Popup → popup}/index.d.ts +0 -0
  656. /package/dist/components/text/{Text/Text.d.ts → Text.d.ts} +0 -0
  657. /package/dist/components/text/{Text/Text.stories.d.ts → Text.stories.d.ts} +0 -0
  658. /package/dist/components/text/{Text/constants.d.ts → constants.d.ts} +0 -0
@@ -1,29 +1,28 @@
1
1
  import { __assign } from '../../../_virtual/_tslib.js';
2
- import { jsxs, jsx } from '@emotion/react/jsx-runtime';
3
- import { forwardRef, useState, useCallback, useRef } from 'react';
2
+ import { jsxs } from '@emotion/react/jsx-runtime';
3
+ import { forwardRef, useState, useCallback, useEffect, useRef } from 'react';
4
4
  import { useTheme } from '@emotion/react';
5
5
  import { BaseButton } from '../BaseButton/BaseButton.js';
6
- import { Box } from '../../layout/Box/Box.js';
7
- import { Flex } from '../../layout/Flex/Flex.js';
8
- import { Paper } from '../../layout/Paper/Paper.js';
9
- import { Popup } from '../../layout/Popup/Popup.js';
10
6
  import { useControlled } from '../../../hooks/useControlled.js';
11
- import { IconCloseAlt, IconCaretDown } from '../../../icons/utilityIcons.js';
7
+ import { IconCloseAlt } from '../../../icons/utilityIcons.js';
12
8
  import '@emotion/css';
13
9
 
14
10
  var FilterButton = forwardRef(function FilterButton(props, ref) {
15
- var _a, _b;
16
- var selectionProp = props.selection, label = props.label, options = props.options, onSelect = props.onSelect, isDisabled = props.isDisabled, _c = props.variant, variant = _c === void 0 ? 'fillContainer' : _c, _d = props.size, size = _d === void 0 ? 'default' : _d, _e = props.iconRight, iconRight = _e === void 0 ? IconCaretDown : _e, popupAnchorOrigin = props.popupAnchorOrigin, popupTransformOrigin = props.popupTransformOrigin, popupPortalLocation = props.popupPortalLocation, popupZIndex = props.popupZIndex;
17
- var _f = useTheme(), color = _f.color, cornerRadius = _f.cornerRadius, spacing = _f.spacing, typography = _f.typography;
18
- var _g = useControlled({
19
- controlledProp: selectionProp,
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({
14
+ controlledProp: valueProp,
20
15
  defaultValue: null,
21
- stateName: 'selection',
16
+ stateName: 'value',
22
17
  componentName: 'FilterButton'
23
- }), selection = _g[0], setSelection = _g[1];
24
- var selectedOption = options.find(function (option) { return option.value === selection; });
25
- 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;
26
- var _h = useState(false), isOpen = _h[0], setIsOpen = _h[1];
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];
27
26
  // Size Styles
28
27
  var defaultStyles = {
29
28
  paddingLeft: spacing.m,
@@ -53,76 +52,71 @@ var FilterButton = forwardRef(function FilterButton(props, ref) {
53
52
  transform: 'none'
54
53
  }
55
54
  };
56
- var activeStyle = variant !== 'fillContainer' || selection === null
55
+ var activeStyle = variant !== 'fillContainer' || value === null
57
56
  ? {
58
57
  border: "1px solid ".concat(color.border.strong),
59
58
  background: color.background.surface2
60
59
  }
61
60
  : {};
61
+ var hoverStyle = {
62
+ border: "1px solid ".concat(color.neutral.n800),
63
+ transform: 'none'
64
+ };
62
65
  // Button Styles
63
- var buttonCss = __assign(__assign(__assign({ background: 'transparent', border: "1px solid ".concat(color.border.strong), borderRadius: cornerRadius.s, color: variant === 'fillContainer' && selection !== null
64
- ? color.special.white
65
- : color.text.default, gap: spacing.xs, fontSize: typography.size.s, fontWeight: typography.weight.demiBold, lineHeight: typography.lineHeight.s, '&:hover': {
66
- border: "1px solid ".concat(color.neutral.n800),
67
- transform: 'none'
68
- }, '&:active': __assign(__assign({}, activeStyle), { transform: 'none' }) }, (size === 'small' ? smallStyles : defaultStyles)), (isOpen ? activeStyle : {})), (variant === 'fillContainer' && selection !== null
66
+ var buttonCss = __assign(__assign(__assign({ background: 'transparent', border: "1px solid ".concat(color.border.strong), borderRadius: cornerRadius.s, color: variant === 'fillContainer' && value !== null
67
+ ? 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
69
69
  ? fillContainerStyles
70
70
  : {}));
71
71
  var iconCss = size === 'small' ? smallIconStyles : defaultIconStyles;
72
- // Popup Styles
73
- var optionCss = {
74
- background: 'transparent',
75
- border: 'none',
76
- color: color.text.default,
77
- fontWeight: typography.weight.medium,
78
- gap: spacing.s,
79
- paddingLeft: spacing.m,
80
- paddingRight: spacing.m,
81
- paddingTop: spacing.s,
82
- paddingBottom: spacing.s,
83
- width: '100%',
84
- borderRadius: cornerRadius.s,
85
- justifyContent: 'flex-start',
86
- '&:hover': {
87
- transform: 'none',
88
- backgroundColor: color.secondary.s300,
89
- color: color.special.white
90
- },
91
- '&:active': {
92
- transform: 'none'
93
- }
94
- };
95
- var optionIconCss = {
96
- width: spacing.unit4,
97
- height: spacing.unit4
98
- };
99
72
  var handleButtonClick = useCallback(function () {
100
- if (variant === 'fillContainer' && selection !== null) {
101
- setSelection(null);
102
- // @ts-ignore
103
- onSelect === null || onSelect === void 0 ? void 0 : onSelect(null);
73
+ if (onClick) {
74
+ onClick();
104
75
  }
105
76
  else {
106
- setIsOpen(function (isOpen) { return !isOpen; });
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
+ }
87
+ }
88
+ }, [
89
+ value,
90
+ variant,
91
+ setIsOpen,
92
+ setValue,
93
+ setLabel,
94
+ onChange,
95
+ onClick,
96
+ onReset
97
+ ]);
98
+ useEffect(function () {
99
+ if (isOpen) {
100
+ onOpen === null || onOpen === void 0 ? void 0 : onOpen();
107
101
  }
108
- }, [selection, variant, setIsOpen, setSelection, onSelect]);
109
- var handleOptionSelect = useCallback(function (option) {
110
- setSelection(option.value);
111
- onSelect === null || onSelect === void 0 ? void 0 : onSelect(option.value);
112
- }, [onSelect, setSelection]);
102
+ }, [isOpen, onOpen]);
103
+ var handleChange = useCallback(function (value, label) {
104
+ setValue(value);
105
+ setLabel(label);
106
+ onChange === null || onChange === void 0 ? void 0 : onChange(value);
107
+ }, [onChange, setValue, setLabel]);
113
108
  var anchorRef = useRef(null);
114
109
  return (jsxs(BaseButton, __assign({ ref: ref || anchorRef, styles: {
115
110
  button: buttonCss,
116
111
  icon: iconCss
117
- }, onClick: handleButtonClick, iconRight: variant === 'fillContainer' && selection !== null
112
+ }, onClick: handleButtonClick, iconRight: variant === 'fillContainer' && value !== null
118
113
  ? IconCloseAlt
119
- : iconRight, disabled: isDisabled, "aria-haspopup": 'listbox', "aria-expanded": isOpen }, { children: [selectedLabel !== null && selectedLabel !== void 0 ? selectedLabel : label, jsx(Popup, __assign({ anchorRef: ref || anchorRef, isVisible: isOpen, onClose: function () { return setIsOpen(false); }, anchorOrigin: popupAnchorOrigin, transformOrigin: popupTransformOrigin, portalLocation: popupPortalLocation, zIndex: popupZIndex }, { children: jsx(Paper, __assign({ mt: 's', border: 'strong', shadow: 'far' }, { children: jsx(Box, __assign({ p: 's' }, { children: jsx(Flex, __assign({ direction: 'column', alignItems: 'flex-start', justifyContent: 'center', role: 'listbox', "aria-label": (_b = selectedLabel !== null && selectedLabel !== void 0 ? selectedLabel : label) !== null && _b !== void 0 ? _b : props['aria-label'], "aria-activedescendant": selectedLabel }, { children: options.map(function (option) {
120
- var _a, _b;
121
- return (jsx(BaseButton, __assign({ iconLeft: option.icon, styles: {
122
- button: optionCss,
123
- icon: optionIconCss
124
- }, onClick: function () { return handleOptionSelect(option); }, "aria-label": (_a = option.label) !== null && _a !== void 0 ? _a : option.value, role: 'option' }, { children: (_b = option.label) !== null && _b !== void 0 ? _b : option.value }), option.value));
125
- }) })) })) })) }))] })));
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
+ })] })));
126
120
  });
127
121
 
128
122
  export { FilterButton };
@@ -1 +1 @@
1
- {"version":3,"file":"FilterButton.js","sources":["../../../../src/components/button/FilterButton/FilterButton.tsx"],"sourcesContent":["import { forwardRef, RefObject, useRef, useState, useCallback } from 'react'\n\nimport { CSSObject, useTheme } from '@emotion/react'\n\nimport { BaseButton } from 'components/button/BaseButton/BaseButton'\nimport { Box, Flex, Paper, Popup } from 'components/layout'\nimport { useControlled } from 'hooks/useControlled'\nimport { IconCaretDown, IconCloseAlt } from 'icons'\n\nimport { FilterButtonOption, FilterButtonProps } from './types'\n\nexport const FilterButton = forwardRef<HTMLButtonElement, FilterButtonProps>(\n function FilterButton(props, ref) {\n const {\n selection: selectionProp,\n label,\n options,\n onSelect,\n isDisabled,\n variant = 'fillContainer',\n size = 'default',\n iconRight = IconCaretDown,\n popupAnchorOrigin,\n popupTransformOrigin,\n popupPortalLocation,\n popupZIndex\n } = props\n const { color, cornerRadius, spacing, typography } = useTheme()\n const [selection, setSelection] = useControlled({\n controlledProp: selectionProp,\n defaultValue: null,\n stateName: 'selection',\n componentName: 'FilterButton'\n })\n const selectedOption = options.find((option) => option.value === selection)\n const selectedLabel = selectedOption?.label ?? selectedOption?.value\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' || selection === null\n ? {\n border: `1px solid ${color.border.strong}`,\n background: color.background.surface2\n }\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' && selection !== null\n ? color.special.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\n '&:hover': {\n border: `1px solid ${color.neutral.n800}`,\n transform: 'none'\n },\n\n '&:active': {\n ...activeStyle,\n transform: 'none'\n },\n\n ...(size === 'small' ? smallStyles : defaultStyles),\n ...(isOpen ? activeStyle : {}),\n ...(variant === 'fillContainer' && selection !== null\n ? fillContainerStyles\n : {})\n }\n\n const iconCss = size === 'small' ? smallIconStyles : defaultIconStyles\n\n // Popup Styles\n const optionCss: CSSObject = {\n background: 'transparent',\n border: 'none',\n color: color.text.default,\n fontWeight: typography.weight.medium,\n gap: spacing.s,\n paddingLeft: spacing.m,\n paddingRight: spacing.m,\n paddingTop: spacing.s,\n paddingBottom: spacing.s,\n width: '100%',\n borderRadius: cornerRadius.s,\n justifyContent: 'flex-start',\n\n '&:hover': {\n transform: 'none',\n backgroundColor: color.secondary.s300,\n color: color.special.white\n },\n\n '&:active': {\n transform: 'none'\n }\n }\n const optionIconCss: CSSObject = {\n width: spacing.unit4,\n height: spacing.unit4\n }\n\n const handleButtonClick = useCallback(() => {\n if (variant === 'fillContainer' && selection !== null) {\n setSelection(null)\n // @ts-ignore\n onSelect?.(null)\n } else {\n setIsOpen((isOpen: boolean) => !isOpen)\n }\n }, [selection, variant, setIsOpen, setSelection, onSelect])\n\n const handleOptionSelect = useCallback(\n (option: FilterButtonOption) => {\n setSelection(option.value)\n onSelect?.(option.value)\n },\n [onSelect, setSelection]\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' && selection !== null\n ? IconCloseAlt\n : iconRight\n }\n disabled={isDisabled}\n aria-haspopup='listbox'\n aria-expanded={isOpen}\n >\n {selectedLabel ?? label}\n <Popup\n anchorRef={(ref as RefObject<HTMLElement>) || anchorRef}\n isVisible={isOpen}\n onClose={() => setIsOpen(false)}\n anchorOrigin={popupAnchorOrigin}\n transformOrigin={popupTransformOrigin}\n portalLocation={popupPortalLocation}\n zIndex={popupZIndex}\n >\n <Paper mt='s' border='strong' shadow='far'>\n <Box p='s'>\n <Flex\n direction='column'\n alignItems='flex-start'\n justifyContent='center'\n role='listbox'\n aria-label={selectedLabel ?? label ?? props['aria-label']}\n aria-activedescendant={selectedLabel}\n >\n {options.map((option) => (\n <BaseButton\n key={option.value}\n iconLeft={option.icon}\n styles={{\n button: optionCss,\n icon: optionIconCss\n }}\n onClick={() => handleOptionSelect(option)}\n aria-label={option.label ?? option.value}\n role='option'\n >\n {option.label ?? option.value}\n </BaseButton>\n ))}\n </Flex>\n </Box>\n </Paper>\n </Popup>\n </BaseButton>\n )\n }\n)\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;;;;;;;AAWa,IAAA,YAAY,GAAG,UAAU,CACpC,SAAS,YAAY,CAAC,KAAK,EAAE,GAAG,EAAA;;AAE5B,IAAA,IAAW,aAAa,GAYtB,KAAK,CAAA,SAZiB,EACxB,KAAK,GAWH,KAAK,CAAA,KAXF,EACL,OAAO,GAUL,KAAK,QAVA,EACP,QAAQ,GASN,KAAK,CATC,QAAA,EACR,UAAU,GAQR,KAAK,CARG,UAAA,EACV,EAOE,GAAA,KAAK,QAPkB,EAAzB,OAAO,GAAG,EAAA,KAAA,KAAA,CAAA,GAAA,eAAe,KAAA,EACzB,EAAA,GAME,KAAK,CAAA,IANS,EAAhB,IAAI,GAAG,EAAA,KAAA,KAAA,CAAA,GAAA,SAAS,KAAA,EAChB,EAAA,GAKE,KAAK,CAAA,SALkB,EAAzB,SAAS,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,aAAa,GAAA,EAAA,EACzB,iBAAiB,GAIf,KAAK,CAAA,iBAJU,EACjB,oBAAoB,GAGlB,KAAK,qBAHa,EACpB,mBAAmB,GAEjB,KAAK,oBAFY,EACnB,WAAW,GACT,KAAK,YADI,CACJ;AACH,IAAA,IAAA,EAA+C,GAAA,QAAQ,EAAE,EAAvD,KAAK,GAAA,EAAA,CAAA,KAAA,EAAE,YAAY,GAAA,EAAA,CAAA,YAAA,EAAE,OAAO,GAAA,EAAA,CAAA,OAAA,EAAE,UAAU,gBAAe,CAAA;IACzD,IAAA,EAAA,GAA4B,aAAa,CAAC;AAC9C,QAAA,cAAc,EAAE,aAAa;AAC7B,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,SAAS,EAAE,WAAW;AACtB,QAAA,aAAa,EAAE,cAAc;AAC9B,KAAA,CAAC,EALK,SAAS,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,YAAY,QAK5B,CAAA;AACF,IAAA,IAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,UAAC,MAAM,EAAA,EAAK,OAAA,MAAM,CAAC,KAAK,KAAK,SAAS,CAA1B,EAA0B,CAAC,CAAA;AAC3E,IAAA,IAAM,aAAa,GAAG,CAAA,EAAA,GAAA,cAAc,KAAd,IAAA,IAAA,cAAc,uBAAd,cAAc,CAAE,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,cAAc,KAAd,IAAA,IAAA,cAAc,uBAAd,cAAc,CAAE,KAAK,CAAA;IAE9D,IAAA,EAAA,GAAsB,QAAQ,CAAC,KAAK,CAAC,EAApC,MAAM,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,SAAS,GAAA,EAAA,CAAA,CAAA,CAAmB,CAAA;;AAG3C,IAAA,IAAM,aAAa,GAAc;QAC/B,WAAW,EAAE,OAAO,CAAC,CAAC;QACtB,YAAY,EAAE,OAAO,CAAC,CAAC;QACvB,UAAU,EAAE,OAAO,CAAC,CAAC;QACrB,aAAa,EAAE,OAAO,CAAC,CAAC;KACzB,CAAA;AACD,IAAA,IAAM,iBAAiB,GAAc;QACnC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,KAAK;KACtB,CAAA;AAED,IAAA,IAAM,WAAW,GAAc;QAC7B,WAAW,EAAE,OAAO,CAAC,CAAC;QACtB,YAAY,EAAE,OAAO,CAAC,CAAC;QACvB,UAAU,EAAE,OAAO,CAAC,EAAE;QACtB,aAAa,EAAE,OAAO,CAAC,EAAE;KAC1B,CAAA;AACD,IAAA,IAAM,eAAe,GAAc;QACjC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,KAAK;KACtB,CAAA;AAED,IAAA,IAAM,mBAAmB,GAAc;AACrC,QAAA,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI;AAChC,QAAA,MAAM,EAAE,YAAa,CAAA,MAAA,CAAA,KAAK,CAAC,SAAS,CAAC,IAAI,CAAE;AAC3C,QAAA,SAAS,EAAE;AACT,YAAA,MAAM,EAAE,YAAa,CAAA,MAAA,CAAA,KAAK,CAAC,SAAS,CAAC,IAAI,CAAE;AAC3C,YAAA,SAAS,EAAE,MAAM;AAClB,SAAA;KACF,CAAA;IAED,IAAM,WAAW,GACf,OAAO,KAAK,eAAe,IAAI,SAAS,KAAK,IAAI;AAC/C,UAAE;AACE,YAAA,MAAM,EAAE,YAAa,CAAA,MAAA,CAAA,KAAK,CAAC,MAAM,CAAC,MAAM,CAAE;AAC1C,YAAA,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ;AACtC,SAAA;UACD,EAAE,CAAA;;AAGR,IAAA,IAAM,SAAS,GAAA,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,EACb,UAAU,EAAE,aAAa,EACzB,MAAM,EAAE,YAAa,CAAA,MAAA,CAAA,KAAK,CAAC,MAAM,CAAC,MAAM,CAAE,EAC1C,YAAY,EAAE,YAAY,CAAC,CAAC,EAC5B,KAAK,EACH,OAAO,KAAK,eAAe,IAAI,SAAS,KAAK,IAAI;AAC/C,cAAE,KAAK,CAAC,OAAO,CAAC,KAAK;AACrB,cAAE,KAAK,CAAC,IAAI,CAAC,OAAO,EACxB,GAAG,EAAE,OAAO,CAAC,EAAE,EACf,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,EAC3B,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,QAAQ,EACtC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,EAEnC,SAAS,EAAE;AACT,YAAA,MAAM,EAAE,YAAa,CAAA,MAAA,CAAA,KAAK,CAAC,OAAO,CAAC,IAAI,CAAE;AACzC,YAAA,SAAS,EAAE,MAAM;AAClB,SAAA,EAED,UAAU,EACL,QAAA,CAAA,QAAA,CAAA,EAAA,EAAA,WAAW,KACd,SAAS,EAAE,MAAM,EAGhB,CAAA,EAAA,GAAC,IAAI,KAAK,OAAO,GAAG,WAAW,GAAG,aAAa,EAAC,GAC/C,MAAM,GAAG,WAAW,GAAG,EAAE,EAAC,GAC1B,OAAO,KAAK,eAAe,IAAI,SAAS,KAAK,IAAI;AACnD,UAAE,mBAAmB;AACrB,UAAE,EAAE,EACP,CAAA;AAED,IAAA,IAAM,OAAO,GAAG,IAAI,KAAK,OAAO,GAAG,eAAe,GAAG,iBAAiB,CAAA;;AAGtE,IAAA,IAAM,SAAS,GAAc;AAC3B,QAAA,UAAU,EAAE,aAAa;AACzB,QAAA,MAAM,EAAE,MAAM;AACd,QAAA,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO;AACzB,QAAA,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM;QACpC,GAAG,EAAE,OAAO,CAAC,CAAC;QACd,WAAW,EAAE,OAAO,CAAC,CAAC;QACtB,YAAY,EAAE,OAAO,CAAC,CAAC;QACvB,UAAU,EAAE,OAAO,CAAC,CAAC;QACrB,aAAa,EAAE,OAAO,CAAC,CAAC;AACxB,QAAA,KAAK,EAAE,MAAM;QACb,YAAY,EAAE,YAAY,CAAC,CAAC;AAC5B,QAAA,cAAc,EAAE,YAAY;AAE5B,QAAA,SAAS,EAAE;AACT,YAAA,SAAS,EAAE,MAAM;AACjB,YAAA,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI;AACrC,YAAA,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK;AAC3B,SAAA;AAED,QAAA,UAAU,EAAE;AACV,YAAA,SAAS,EAAE,MAAM;AAClB,SAAA;KACF,CAAA;AACD,IAAA,IAAM,aAAa,GAAc;QAC/B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,KAAK;KACtB,CAAA;IAED,IAAM,iBAAiB,GAAG,WAAW,CAAC,YAAA;AACpC,QAAA,IAAI,OAAO,KAAK,eAAe,IAAI,SAAS,KAAK,IAAI,EAAE;YACrD,YAAY,CAAC,IAAI,CAAC,CAAA;;AAElB,YAAA,QAAQ,aAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAG,IAAI,CAAC,CAAA;AACjB,SAAA;AAAM,aAAA;YACL,SAAS,CAAC,UAAC,MAAe,EAAK,EAAA,OAAA,CAAC,MAAM,CAAA,EAAA,CAAC,CAAA;AACxC,SAAA;AACH,KAAC,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAA;AAE3D,IAAA,IAAM,kBAAkB,GAAG,WAAW,CACpC,UAAC,MAA0B,EAAA;AACzB,QAAA,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC1B,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAG,MAAM,CAAC,KAAK,CAAC,CAAA;AAC1B,KAAC,EACD,CAAC,QAAQ,EAAE,YAAY,CAAC,CACzB,CAAA;AAED,IAAA,IAAM,SAAS,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAA;IAEjD,QACEA,IAAC,CAAA,UAAU,EACT,QAAA,CAAA,EAAA,GAAG,EAAE,GAAG,IAAI,SAAS,EACrB,MAAM,EAAE;AACN,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,IAAI,EAAE,OAAO;AACd,SAAA,EACD,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EACP,OAAO,KAAK,eAAe,IAAI,SAAS,KAAK,IAAI;AAC/C,cAAE,YAAY;cACZ,SAAS,EAEf,QAAQ,EAAE,UAAU,EAAA,eAAA,EACN,SAAS,EAAA,eAAA,EACR,MAAM,EAAA,EAAA,EAAA,QAAA,EAAA,CAEpB,aAAa,KAAA,IAAA,IAAb,aAAa,KAAA,KAAA,CAAA,GAAb,aAAa,GAAI,KAAK,EACvBC,GAAC,CAAA,KAAK,EACJ,QAAA,CAAA,EAAA,SAAS,EAAG,GAA8B,IAAI,SAAS,EACvD,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,YAAM,EAAA,OAAA,SAAS,CAAC,KAAK,CAAC,CAAhB,EAAgB,EAC/B,YAAY,EAAE,iBAAiB,EAC/B,eAAe,EAAE,oBAAoB,EACrC,cAAc,EAAE,mBAAmB,EACnC,MAAM,EAAE,WAAW,EAEnB,EAAA,EAAA,QAAA,EAAAA,GAAA,CAAC,KAAK,EAAC,QAAA,CAAA,EAAA,EAAE,EAAC,GAAG,EAAC,MAAM,EAAC,QAAQ,EAAC,MAAM,EAAC,KAAK,EACxC,EAAA,EAAA,QAAA,EAAAA,GAAA,CAAC,GAAG,EAAA,QAAA,CAAA,EAAC,CAAC,EAAC,GAAG,EAAA,EAAA,EAAA,QAAA,EACRA,GAAC,CAAA,IAAI,EACH,QAAA,CAAA,EAAA,SAAS,EAAC,QAAQ,EAClB,UAAU,EAAC,YAAY,EACvB,cAAc,EAAC,QAAQ,EACvB,IAAI,EAAC,SAAS,EACF,YAAA,EAAA,CAAA,EAAA,GAAA,aAAa,KAAA,IAAA,IAAb,aAAa,KAAA,KAAA,CAAA,GAAb,aAAa,GAAI,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,KAAK,CAAC,YAAY,CAAC,EAClC,uBAAA,EAAA,aAAa,EAEnC,EAAA,EAAA,QAAA,EAAA,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM,EAAA;;gCAAK,QACvBA,GAAC,CAAA,UAAU,EAET,QAAA,CAAA,EAAA,QAAQ,EAAE,MAAM,CAAC,IAAI,EACrB,MAAM,EAAE;AACN,wCAAA,MAAM,EAAE,SAAS;AACjB,wCAAA,IAAI,EAAE,aAAa;AACpB,qCAAA,EACD,OAAO,EAAE,YAAA,EAAM,OAAA,kBAAkB,CAAC,MAAM,CAAC,CAA1B,EAA0B,gBAC7B,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,MAAM,CAAC,KAAK,EACxC,IAAI,EAAC,QAAQ,EAAA,EAAA,EAAA,QAAA,EAEZ,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,MAAM,CAAC,KAAK,EAVxB,CAAA,EAAA,MAAM,CAAC,KAAK,CAWN,EACd;AAAA,6BAAA,CAAC,IACG,EACH,CAAA,CAAA,EAAA,CAAA,CACA,EACF,CAAA,CAAA,CAAA,EAAA,CAAA,CACG,EACd;AACH,CAAC;;;;"}
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,5 +1,5 @@
1
+ import { ReactNode } from 'react';
1
2
  import { IconComponent } from "../../icon";
2
- import { Origin } from "../../layout/Popup/types";
3
3
  export type FilterButtonSize = 'default' | 'small';
4
4
  export type FilterButtonVariant = 'fillContainer' | 'replaceLabel';
5
5
  export type FilterButtonOption = {
@@ -10,12 +10,31 @@ export type FilterButtonOption = {
10
10
  label?: string;
11
11
  icon?: IconComponent;
12
12
  };
13
+ type ChildrenProps = {
14
+ /**
15
+ * State representing whether the FilterButton is open.
16
+ * This can be used to implement a popup via `children`
17
+ */
18
+ isOpen: boolean;
19
+ /**
20
+ * Set open state
21
+ */
22
+ setIsOpen: (isOpen: boolean) => void;
23
+ /**
24
+ * A function to handle when the value is changed
25
+ */
26
+ handleChange: (value: string, label: string) => void;
27
+ /**
28
+ * A ref to the anchor element (button)
29
+ */
30
+ anchorRef: React.RefObject<HTMLButtonElement>;
31
+ };
13
32
  export type FilterButtonProps = {
14
33
  /**
15
- * Selection options
16
- * e.g. { label: 'Option A', icon: IconRadar }
34
+ * Children render prop. This can be used to render a dropdown component
35
+ * for example
17
36
  */
18
- options: FilterButtonOption[];
37
+ children?: (props: ChildrenProps) => ReactNode;
19
38
  /**
20
39
  * The text that appears on the button component.
21
40
  * If no label is provided, a different Icon can be specified
@@ -27,9 +46,9 @@ export type FilterButtonProps = {
27
46
  */
28
47
  'aria-label'?: string;
29
48
  /**
30
- * The selected value
49
+ * The value
31
50
  */
32
- selection?: string | null;
51
+ value?: string | null;
33
52
  /**
34
53
  * The button size
35
54
  * @default FilterButtonSize.DEFAULT
@@ -47,32 +66,28 @@ export type FilterButtonProps = {
47
66
  /**
48
67
  * Optional icon element to include on the right side of the button
49
68
  */
50
- iconRight?: IconComponent;
51
- /**
52
- * What to do when an option is selected
53
- */
54
- onSelect?: (label: string) => void;
69
+ iconRight?: IconComponent | null;
55
70
  /**
56
- * Whether interaction is disabled
71
+ * What to do when the value is changed
57
72
  */
58
- isDisabled?: boolean;
73
+ onChange?: (value: string) => void;
59
74
  /**
60
- * Popup anchor origin
61
- * @default { horizontal: 'center', vertical: 'bottom' }
75
+ * What to do when the filter button is opened
62
76
  */
63
- popupAnchorOrigin?: Origin;
77
+ onOpen?: () => void;
64
78
  /**
65
- * Popup transform origin
66
- * @default { horizontal: 'center', vertical: 'top' }
79
+ * If provided, will be called when the selected value is reset
67
80
  */
68
- popupTransformOrigin?: Origin;
81
+ onReset?: () => void;
69
82
  /**
70
- * Popup portal location passed to the inner popup
83
+ * What to do when the button is clicked
84
+ * This will override the default behavior of toggling isOpen
71
85
  */
72
- popupPortalLocation?: HTMLElement;
86
+ onClick?: () => void;
73
87
  /**
74
- * zIndex applied to the inner Popup component
88
+ * Whether interaction is disabled
75
89
  */
76
- popupZIndex?: number;
90
+ disabled?: boolean;
77
91
  };
92
+ export {};
78
93
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/button/FilterButton/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,mBAAuB;AAC/C,OAAO,EAAE,MAAM,EAAE,iCAAqC;AAEtD,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,OAAO,CAAA;AAElD,MAAM,MAAM,mBAAmB,GAAG,eAAe,GAAG,cAAc,CAAA;AAElE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,aAAa,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;OAGG;IACH,OAAO,EAAE,kBAAkB,EAAE,CAAA;IAE7B;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAEzB;;;OAGG;IACH,IAAI,CAAC,EAAE,gBAAgB,CAAA;IAEvB;;;OAGG;IACH,OAAO,CAAC,EAAE,mBAAmB,CAAA;IAE7B;;OAEG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAA;IAExB;;OAEG;IACH,SAAS,CAAC,EAAE,aAAa,CAAA;IAEzB;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAElC;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IAEpB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAE1B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAE7B;;OAEG;IACH,mBAAmB,CAAC,EAAE,WAAW,CAAA;IAEjC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/button/FilterButton/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,OAAO,EAAE,aAAa,EAAE,mBAAuB;AAE/C,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,OAAO,CAAA;AAGlD,MAAM,MAAM,mBAAmB,GAAG,eAAe,GAAG,cAAc,CAAA;AAElE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,aAAa,CAAA;CACrB,CAAA;AAED,KAAK,aAAa,GAAG;IACnB;;;OAGG;IACH,MAAM,EAAE,OAAO,CAAA;IACf;;OAEG;IACH,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;IACpC;;OAEG;IACH,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACpD;;OAEG;IACH,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAA;CAC9C,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,SAAS,CAAA;IAE9C;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAErB;;;OAGG;IACH,IAAI,CAAC,EAAE,gBAAgB,CAAA;IAEvB;;;OAGG;IACH,OAAO,CAAC,EAAE,mBAAmB,CAAA;IAE7B;;OAEG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAA;IAExB;;OAEG;IACH,SAAS,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;IAEhC;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAElC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IAEnB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IAEpB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IAEpB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA"}
@@ -4,7 +4,7 @@ import { forwardRef, useState, useCallback, useEffect } from 'react';
4
4
  import { useTheme } from '@emotion/react';
5
5
  import styled from '@emotion/styled';
6
6
  import { Flex } from '../../layout/Flex/Flex.js';
7
- import { Text } from '../../text/Text/Text.js';
7
+ import { Text } from '../../text/Text.js';
8
8
  import { useControlled } from '../../../hooks/useControlled.js';
9
9
  import { IconUserFollow, IconUserFollowing, IconUserUnfollow } from '../../../icons/utilityIcons.js';
10
10
  import '@emotion/css';
@@ -1 +1 @@
1
- {"version":3,"file":"FollowButton.js","sources":["../../../../src/components/button/FollowButton/FollowButton.tsx"],"sourcesContent":["import { useState, useCallback, useEffect, forwardRef, Ref } from 'react'\n\nimport { useTheme, type CSSObject } from '@emotion/react'\nimport styled from '@emotion/styled'\n\nimport type { IconComponent } from 'components/icon'\nimport { Flex } from 'components/layout/Flex'\nimport { Text } from 'components/text/Text'\nimport { useControlled } from 'hooks/useControlled'\nimport { IconUserFollowing, IconUserFollow, IconUserUnfollow } from 'icons'\n\nimport type { FollowButtonProps } from './types'\n\nconst defaultMessages = {\n follow: 'Follow',\n following: 'Following',\n unfollow: 'Unfollow'\n}\n\nconst InputRoot = styled.input({\n cursor: 'inherit',\n position: 'absolute',\n opacity: 0,\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n margin: 0,\n padding: 0,\n zIndex: 1\n})\n\n/**\n * Special button for following or unfollowing a user.\n */\nexport const FollowButton = forwardRef(\n (props: FollowButtonProps, ref: Ref<HTMLButtonElement>) => {\n const {\n variant = 'default',\n isFollowing = false,\n onUnfollow,\n onFollow,\n size = 'default',\n fullWidth = true,\n messages: messagesProp,\n ...other\n } = props\n const messages = { ...defaultMessages, ...messagesProp }\n const { type } = other\n const [value, setValueState] = useControlled({\n componentName: 'FollowButton',\n controlledProp: isFollowing,\n defaultValue: undefined,\n stateName: 'following'\n })\n\n // Track hover manually to swap text and icon\n const [isHovering, setIsHovering] = useState(false)\n const [isPressing, setIsPressing] = useState(false)\n\n const handleMouseEnter = useCallback(() => {\n setIsHovering(true)\n }, [])\n\n const handleMouseDown = useCallback(() => {\n setIsPressing(true)\n }, [])\n\n const handleMouseLeave = useCallback(() => {\n setIsHovering(false)\n }, [])\n\n const handleMouseUp = useCallback(() => {\n setIsPressing(false)\n }, [])\n\n const handlePressIn = useCallback(() => {\n setIsHovering(true)\n setIsPressing(true)\n }, [])\n\n const handlePressOut = useCallback(() => {\n setIsHovering(false)\n setIsPressing(false)\n }, [])\n\n useEffect(() => {}, [value])\n\n const handleClick = useCallback(() => {\n if (value) {\n onUnfollow?.()\n } else {\n onFollow?.()\n }\n setValueState(!value)\n }, [value, setValueState, onUnfollow, onFollow])\n\n const checkedValue = value\n let Icon: IconComponent | null = IconUserFollow\n let text = messages.follow\n if (checkedValue && !isHovering) {\n Icon = IconUserFollowing\n text = messages.following\n } else if (checkedValue && isHovering && !isPressing) {\n Icon = IconUserUnfollow\n text = messages.unfollow\n }\n\n const { color, cornerRadius, motion, shadows } = useTheme()\n\n const textColor =\n checkedValue || isHovering || isPressing\n ? color.static.white\n : color.primary.primary\n\n const borderRadius =\n variant === 'pill' ? cornerRadius['2xl'] : cornerRadius.s\n\n const rootCss: CSSObject = {\n cursor: 'pointer',\n minWidth: size === 'small' ? 128 : 152,\n width: fullWidth ? '100%' : undefined,\n userSelect: 'none',\n borderRadius,\n backgroundColor: checkedValue\n ? color.primary.primary\n : color.special.white,\n boxShadow: shadows.near,\n border: `1px solid ${color.primary.primary}`,\n transition: `\n transform ${motion.hover},\n border-color ${motion.hover},\n background-color ${motion.hover},\n color ${motion.hover}\n `,\n '::before': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0)',\n borderRadius\n },\n '&:hover': {\n backgroundColor: color.primary.primary,\n borderWidth: 0,\n boxShadow: shadows.mid,\n '&::before': {\n backgroundColor: 'rgba(255, 255, 255, 0.2)'\n }\n },\n '&:active': {\n backgroundColor: color.primary.primary,\n borderWidth: 0,\n boxShadow: 'none',\n '&::before': {\n backgroundColor: 'rgba(0, 0, 0, 0.2)'\n }\n }\n }\n\n // Handles case where user mouses down, moves cursor, and mouses up\n useEffect(() => {\n if (isPressing) {\n document.addEventListener('mouseup', handleMouseUp)\n return () => {\n document.removeEventListener('mouseup', handleMouseUp)\n }\n }\n return undefined\n }, [isPressing, handleMouseUp])\n\n const rootProps = {\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n onMouseDown: handleMouseDown,\n onMouseUp: handleMouseUp,\n onTouchStart: handlePressIn,\n onTouchEnd: handlePressOut\n }\n\n const buttonProps = type === 'checkbox' ? undefined : other\n const inputProps = type === 'checkbox' ? other : undefined\n\n return (\n <Flex\n // @ts-ignore flex not smart enough\n ref={ref}\n as={type === 'checkbox' ? 'label' : 'button'}\n h={size === 'small' ? 28 : 32}\n direction='row'\n alignItems='center'\n justifyContent='center'\n gap='xs'\n pv='s'\n css={rootCss}\n // @ts-ignore flex not smart enough\n onClick={handleClick}\n {...buttonProps}\n {...rootProps}\n >\n {/* TODO: use theme icon colors (confirm w/design) */}\n <Icon height={18} width={18} css={{ path: { fill: textColor } }} />\n <Text\n variant='label'\n tag='span'\n size={size === 'small' ? 's' : 'l'}\n strength='default'\n css={{ color: textColor }}\n >\n {text}\n </Text>\n {type === 'checkbox' ? (\n <InputRoot {...inputProps} checked={isFollowing} />\n ) : null}\n </Flex>\n )\n }\n)\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"FollowButton.js","sources":["../../../../src/components/button/FollowButton/FollowButton.tsx"],"sourcesContent":["import { useState, useCallback, useEffect, forwardRef, Ref } from 'react'\n\nimport { useTheme, type CSSObject } from '@emotion/react'\nimport styled from '@emotion/styled'\n\nimport type { IconComponent } from 'components/icon'\nimport { Flex } from 'components/layout/Flex'\nimport { Text } from 'components/text'\nimport { useControlled } from 'hooks/useControlled'\nimport { IconUserFollowing, IconUserFollow, IconUserUnfollow } from 'icons'\n\nimport type { FollowButtonProps } from './types'\n\nconst defaultMessages = {\n follow: 'Follow',\n following: 'Following',\n unfollow: 'Unfollow'\n}\n\nconst InputRoot = styled.input({\n cursor: 'inherit',\n position: 'absolute',\n opacity: 0,\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n margin: 0,\n padding: 0,\n zIndex: 1\n})\n\n/**\n * Special button for following or unfollowing a user.\n */\nexport const FollowButton = forwardRef(\n (props: FollowButtonProps, ref: Ref<HTMLButtonElement>) => {\n const {\n variant = 'default',\n isFollowing = false,\n onUnfollow,\n onFollow,\n size = 'default',\n fullWidth = true,\n messages: messagesProp,\n ...other\n } = props\n const messages = { ...defaultMessages, ...messagesProp }\n const { type } = other\n const [value, setValueState] = useControlled({\n componentName: 'FollowButton',\n controlledProp: isFollowing,\n defaultValue: undefined,\n stateName: 'following'\n })\n\n // Track hover manually to swap text and icon\n const [isHovering, setIsHovering] = useState(false)\n const [isPressing, setIsPressing] = useState(false)\n\n const handleMouseEnter = useCallback(() => {\n setIsHovering(true)\n }, [])\n\n const handleMouseDown = useCallback(() => {\n setIsPressing(true)\n }, [])\n\n const handleMouseLeave = useCallback(() => {\n setIsHovering(false)\n }, [])\n\n const handleMouseUp = useCallback(() => {\n setIsPressing(false)\n }, [])\n\n const handlePressIn = useCallback(() => {\n setIsHovering(true)\n setIsPressing(true)\n }, [])\n\n const handlePressOut = useCallback(() => {\n setIsHovering(false)\n setIsPressing(false)\n }, [])\n\n useEffect(() => {}, [value])\n\n const handleClick = useCallback(() => {\n if (value) {\n onUnfollow?.()\n } else {\n onFollow?.()\n }\n setValueState(!value)\n }, [value, setValueState, onUnfollow, onFollow])\n\n const checkedValue = value\n let Icon: IconComponent | null = IconUserFollow\n let text = messages.follow\n if (checkedValue && !isHovering) {\n Icon = IconUserFollowing\n text = messages.following\n } else if (checkedValue && isHovering && !isPressing) {\n Icon = IconUserUnfollow\n text = messages.unfollow\n }\n\n const { color, cornerRadius, motion, shadows } = useTheme()\n\n const textColor =\n checkedValue || isHovering || isPressing\n ? color.static.white\n : color.primary.primary\n\n const borderRadius =\n variant === 'pill' ? cornerRadius['2xl'] : cornerRadius.s\n\n const rootCss: CSSObject = {\n cursor: 'pointer',\n minWidth: size === 'small' ? 128 : 152,\n width: fullWidth ? '100%' : undefined,\n userSelect: 'none',\n borderRadius,\n backgroundColor: checkedValue\n ? color.primary.primary\n : color.special.white,\n boxShadow: shadows.near,\n border: `1px solid ${color.primary.primary}`,\n transition: `\n transform ${motion.hover},\n border-color ${motion.hover},\n background-color ${motion.hover},\n color ${motion.hover}\n `,\n '::before': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0)',\n borderRadius\n },\n '&:hover': {\n backgroundColor: color.primary.primary,\n borderWidth: 0,\n boxShadow: shadows.mid,\n '&::before': {\n backgroundColor: 'rgba(255, 255, 255, 0.2)'\n }\n },\n '&:active': {\n backgroundColor: color.primary.primary,\n borderWidth: 0,\n boxShadow: 'none',\n '&::before': {\n backgroundColor: 'rgba(0, 0, 0, 0.2)'\n }\n }\n }\n\n // Handles case where user mouses down, moves cursor, and mouses up\n useEffect(() => {\n if (isPressing) {\n document.addEventListener('mouseup', handleMouseUp)\n return () => {\n document.removeEventListener('mouseup', handleMouseUp)\n }\n }\n return undefined\n }, [isPressing, handleMouseUp])\n\n const rootProps = {\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n onMouseDown: handleMouseDown,\n onMouseUp: handleMouseUp,\n onTouchStart: handlePressIn,\n onTouchEnd: handlePressOut\n }\n\n const buttonProps = type === 'checkbox' ? undefined : other\n const inputProps = type === 'checkbox' ? other : undefined\n\n return (\n <Flex\n // @ts-ignore flex not smart enough\n ref={ref}\n as={type === 'checkbox' ? 'label' : 'button'}\n h={size === 'small' ? 28 : 32}\n direction='row'\n alignItems='center'\n justifyContent='center'\n gap='xs'\n pv='s'\n css={rootCss}\n // @ts-ignore flex not smart enough\n onClick={handleClick}\n {...buttonProps}\n {...rootProps}\n >\n {/* TODO: use theme icon colors (confirm w/design) */}\n <Icon height={18} width={18} css={{ path: { fill: textColor } }} />\n <Text\n variant='label'\n tag='span'\n size={size === 'small' ? 's' : 'l'}\n strength='default'\n css={{ color: textColor }}\n >\n {text}\n </Text>\n {type === 'checkbox' ? (\n <InputRoot {...inputProps} checked={isFollowing} />\n ) : null}\n </Flex>\n )\n }\n)\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
@@ -1,13 +1,13 @@
1
1
  /// <reference types="react" />
2
2
  import { type CSSObject } from '@emotion/react';
3
- import type { IconComponent, IconProps } from "../../icon";
3
+ import type { IconComponent, IconProps } from '../../icon';
4
4
  import type { BaseButtonProps } from '../BaseButton/types';
5
5
  export type IconButtonProps = {
6
6
  icon: IconComponent;
7
7
  ripple?: boolean;
8
8
  'aria-label': string;
9
9
  iconCss?: CSSObject;
10
- } & Pick<IconProps, 'color' | 'size' | 'shadow' | 'height' | 'width'> & Pick<BaseButtonProps, 'onClick' | 'disabled' | 'className' | 'type' | 'children'>;
10
+ } & Pick<IconProps, 'color' | 'size' | 'shadow' | 'height' | 'width'> & Pick<BaseButtonProps, 'onClick' | 'disabled' | 'className' | 'type' | 'children' | 'isLoading'>;
11
11
  /**
12
12
  * The icon component allows you to pass in an icon and
13
13
  * apply color and sizing properties.
@@ -17,5 +17,5 @@ export declare const IconButton: (props: {
17
17
  ripple?: boolean | undefined;
18
18
  'aria-label': string;
19
19
  iconCss?: CSSObject | undefined;
20
- } & Pick<IconProps, "color" | "size" | "shadow" | "height" | "width"> & Pick<BaseButtonProps, "disabled" | "type" | "className" | "children" | "onClick"> & import("react").RefAttributes<HTMLButtonElement>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | null;
20
+ } & Pick<IconProps, "color" | "size" | "shadow" | "height" | "width"> & Pick<BaseButtonProps, "disabled" | "type" | "className" | "children" | "onClick" | "isLoading"> & import("react").RefAttributes<HTMLButtonElement>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | null;
21
21
  //# sourceMappingURL=IconButton.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IconButton.d.ts","sourceRoot":"","sources":["../../../../src/components/button/IconButton/IconButton.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,mBAAuB;AAG/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAE1D,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,aAAa,CAAA;IACnB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,SAAS,CAAA;CACpB,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC,GACnE,IAAI,CACF,eAAe,EACf,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,MAAM,GAAG,UAAU,CAC3D,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,UAAU;UAdf,aAAa;;kBAEL,MAAM;;8SAwFrB,CAAA"}
1
+ {"version":3,"file":"IconButton.d.ts","sourceRoot":"","sources":["../../../../src/components/button/IconButton/IconButton.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAE1D,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,aAAa,CAAA;IACnB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,SAAS,CAAA;CACpB,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC,GACnE,IAAI,CACF,eAAe,EACf,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,CACzE,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,UAAU;UAdf,aAAa;;kBAEL,MAAM;;4TAkGrB,CAAA"}
@@ -10,8 +10,8 @@ import { BaseButton } from '../BaseButton/BaseButton.js';
10
10
  */
11
11
  var IconButton = forwardRef(function (props, ref) {
12
12
  var Icon = props.icon, iconColor = props.color, _a = props.size, size = _a === void 0 ? 'l' : _a, shadow = props.shadow, ripple = props.ripple, height = props.height, width = props.width, iconCss = props.iconCss, children = props.children, other = __rest(props, ["icon", "color", "size", "shadow", "ripple", "height", "width", "iconCss", "children"]);
13
- var disabled = other.disabled;
14
- var _b = useTheme(), color = _b.color, cornerRadius = _b.cornerRadius, spacing = _b.spacing, motion = _b.motion;
13
+ var disabled = other.disabled, isLoading = other.isLoading;
14
+ var _b = useTheme(), color = _b.color, cornerRadius = _b.cornerRadius, spacing = _b.spacing, motion = _b.motion, iconSizes = _b.iconSizes;
15
15
  var buttonCss = {
16
16
  background: 'transparent',
17
17
  border: 'none',
@@ -46,7 +46,8 @@ var IconButton = forwardRef(function (props, ref) {
46
46
  borderRadius: cornerRadius.s
47
47
  }
48
48
  };
49
- return (jsxs(BaseButton, __assign({ ref: ref, type: 'button' }, other, { css: [buttonCss, ripple && rippleCss] }, { children: [jsx(Icon, { "aria-hidden": true, color: disabled ? 'disabled' : iconColor, size: size, shadow: shadow, height: height, width: width, css: iconCss }), children] })));
49
+ var loadingIconCss = __assign(__assign({}, iconCss), { height: iconSizes[size], width: iconSizes[size], color: color.icon[iconColor !== null && iconColor !== void 0 ? iconColor : 'default'] });
50
+ return (jsxs(BaseButton, __assign({ ref: ref, type: 'button' }, other, { css: [buttonCss, ripple && rippleCss], styles: { icon: loadingIconCss } }, { children: [isLoading ? null : (jsx(Icon, { "aria-hidden": true, color: disabled ? 'disabled' : iconColor, size: size, shadow: shadow, height: height, width: width, css: iconCss })), children] })));
50
51
  });
51
52
 
52
53
  export { IconButton };
@@ -1 +1 @@
1
- {"version":3,"file":"IconButton.js","sources":["../../../../src/components/button/IconButton/IconButton.tsx"],"sourcesContent":["import { forwardRef } from 'react'\n\nimport { useTheme, type CSSObject } from '@emotion/react'\n\nimport type { IconComponent, IconProps } from 'components/icon'\n\nimport { BaseButton } from '../BaseButton/BaseButton'\nimport type { BaseButtonProps } from '../BaseButton/types'\n\nexport type IconButtonProps = {\n icon: IconComponent\n ripple?: boolean\n 'aria-label': string\n iconCss?: CSSObject\n} & Pick<IconProps, 'color' | 'size' | 'shadow' | 'height' | 'width'> &\n Pick<\n BaseButtonProps,\n 'onClick' | 'disabled' | 'className' | 'type' | 'children'\n >\n\n/**\n * The icon component allows you to pass in an icon and\n * apply color and sizing properties.\n */\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(\n (props: IconButtonProps, ref) => {\n const {\n icon: Icon,\n color: iconColor,\n size = 'l',\n shadow,\n ripple,\n height,\n width,\n iconCss,\n children,\n ...other\n } = props\n const { disabled } = other\n const { color, cornerRadius, spacing, motion } = useTheme()\n\n const buttonCss: CSSObject = {\n background: 'transparent',\n border: 'none',\n borderRadius: '50%',\n padding: spacing.xs,\n overflow: 'unset',\n svg: {\n transition: `\n transform ${motion.hover},\n color ${motion.hover}\n `\n },\n '&:hover': {\n transform: 'scale(1.0)',\n svg: {\n transform: 'scale(1.1)'\n }\n },\n '&:active': {\n transform: 'scale(1.0)',\n svg: {\n transform: 'scale(0.98)'\n }\n }\n }\n\n const rippleCss: CSSObject = {\n '&:hover': {\n backgroundColor: color.neutral.n100\n },\n '&:active': {\n backgroundColor: color.neutral.n150\n },\n '&:focus-visible': {\n border: `1px solid ${color.secondary.secondary}`,\n borderRadius: cornerRadius.s\n }\n }\n\n return (\n <BaseButton\n ref={ref}\n type='button'\n {...other}\n css={[buttonCss, ripple && rippleCss]}\n >\n <Icon\n aria-hidden\n color={disabled ? 'disabled' : iconColor}\n size={size}\n shadow={shadow}\n height={height}\n width={width}\n css={iconCss}\n />\n {children}\n </BaseButton>\n )\n }\n)\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;AAoBA;;;AAGG;IACU,UAAU,GAAG,UAAU,CAClC,UAAC,KAAsB,EAAE,GAAG,EAAA;IAExB,IAAM,IAAI,GAUR,KAAK,CAVG,IAAA,EACH,SAAS,GASd,KAAK,CATS,KAAA,EAChB,EAQE,GAAA,KAAK,KARG,EAAV,IAAI,GAAG,EAAA,KAAA,KAAA,CAAA,GAAA,GAAG,GAAA,EAAA,EACV,MAAM,GAOJ,KAAK,CAAA,MAPD,EACN,MAAM,GAMJ,KAAK,OAND,EACN,MAAM,GAKJ,KAAK,CALD,MAAA,EACN,KAAK,GAIH,KAAK,CAAA,KAJF,EACL,OAAO,GAGL,KAAK,QAHA,EACP,QAAQ,GAEN,KAAK,CAFC,QAAA,EACL,KAAK,GAAA,MAAA,CACN,KAAK,EAXH,CAWL,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,CAAA,CADS,CACD;AACD,IAAA,IAAA,QAAQ,GAAK,KAAK,CAAA,QAAV,CAAU;AACpB,IAAA,IAAA,EAA2C,GAAA,QAAQ,EAAE,EAAnD,KAAK,GAAA,EAAA,CAAA,KAAA,EAAE,YAAY,GAAA,EAAA,CAAA,YAAA,EAAE,OAAO,GAAA,EAAA,CAAA,OAAA,EAAE,MAAM,YAAe,CAAA;AAE3D,IAAA,IAAM,SAAS,GAAc;AAC3B,QAAA,UAAU,EAAE,aAAa;AACzB,QAAA,MAAM,EAAE,MAAM;AACd,QAAA,YAAY,EAAE,KAAK;QACnB,OAAO,EAAE,OAAO,CAAC,EAAE;AACnB,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,GAAG,EAAE;YACH,UAAU,EAAE,8BACA,MAAM,CAAC,KAAK,EAChB,mBAAA,CAAA,CAAA,MAAA,CAAA,MAAM,CAAC,KAAK,EACnB,YAAA,CAAA;AACF,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,SAAS,EAAE,YAAY;AACvB,YAAA,GAAG,EAAE;AACH,gBAAA,SAAS,EAAE,YAAY;AACxB,aAAA;AACF,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,SAAS,EAAE,YAAY;AACvB,YAAA,GAAG,EAAE;AACH,gBAAA,SAAS,EAAE,aAAa;AACzB,aAAA;AACF,SAAA;KACF,CAAA;AAED,IAAA,IAAM,SAAS,GAAc;AAC3B,QAAA,SAAS,EAAE;AACT,YAAA,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI;AACpC,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI;AACpC,SAAA;AACD,QAAA,iBAAiB,EAAE;AACjB,YAAA,MAAM,EAAE,YAAa,CAAA,MAAA,CAAA,KAAK,CAAC,SAAS,CAAC,SAAS,CAAE;YAChD,YAAY,EAAE,YAAY,CAAC,CAAC;AAC7B,SAAA;KACF,CAAA;AAED,IAAA,QACEA,IAAA,CAAC,UAAU,EAAA,QAAA,CAAA,EACT,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,QAAQ,EAAA,EACT,KAAK,EAAA,EACT,GAAG,EAAE,CAAC,SAAS,EAAE,MAAM,IAAI,SAAS,CAAC,EAAA,EAAA,EAAA,QAAA,EAAA,CAErCC,GAAC,CAAA,IAAI,EAEH,EAAA,aAAA,EAAA,IAAA,EAAA,KAAK,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,EACxC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,OAAO,EACZ,CAAA,EACD,QAAQ,CAAA,EAAA,CAAA,CACE,EACd;AACH,CAAC;;;;"}
1
+ {"version":3,"file":"IconButton.js","sources":["../../../../src/components/button/IconButton/IconButton.tsx"],"sourcesContent":["import { forwardRef } from 'react'\n\nimport { useTheme, type CSSObject } from '@emotion/react'\n\nimport type { IconComponent, IconProps } from '../../icon'\nimport { BaseButton } from '../BaseButton/BaseButton'\nimport type { BaseButtonProps } from '../BaseButton/types'\n\nexport type IconButtonProps = {\n icon: IconComponent\n ripple?: boolean\n 'aria-label': string\n iconCss?: CSSObject\n} & Pick<IconProps, 'color' | 'size' | 'shadow' | 'height' | 'width'> &\n Pick<\n BaseButtonProps,\n 'onClick' | 'disabled' | 'className' | 'type' | 'children' | 'isLoading'\n >\n\n/**\n * The icon component allows you to pass in an icon and\n * apply color and sizing properties.\n */\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(\n (props: IconButtonProps, ref) => {\n const {\n icon: Icon,\n color: iconColor,\n size = 'l',\n shadow,\n ripple,\n height,\n width,\n iconCss,\n children,\n ...other\n } = props\n const { disabled, isLoading } = other\n const { color, cornerRadius, spacing, motion, iconSizes } = useTheme()\n\n const buttonCss: CSSObject = {\n background: 'transparent',\n border: 'none',\n borderRadius: '50%',\n padding: spacing.xs,\n overflow: 'unset',\n svg: {\n transition: `\n transform ${motion.hover},\n color ${motion.hover}\n `\n },\n '&:hover': {\n transform: 'scale(1.0)',\n svg: {\n transform: 'scale(1.1)'\n }\n },\n '&:active': {\n transform: 'scale(1.0)',\n svg: {\n transform: 'scale(0.98)'\n }\n }\n }\n\n const rippleCss: CSSObject = {\n '&:hover': {\n backgroundColor: color.neutral.n100\n },\n '&:active': {\n backgroundColor: color.neutral.n150\n },\n '&:focus-visible': {\n border: `1px solid ${color.secondary.secondary}`,\n borderRadius: cornerRadius.s\n }\n }\n\n const loadingIconCss: CSSObject = {\n ...iconCss,\n height: iconSizes[size],\n width: iconSizes[size],\n color: color.icon[iconColor ?? 'default']\n }\n\n return (\n <BaseButton\n ref={ref}\n type='button'\n {...other}\n css={[buttonCss, ripple && rippleCss]}\n styles={{ icon: loadingIconCss }}\n >\n {isLoading ? null : (\n <Icon\n aria-hidden\n color={disabled ? 'disabled' : iconColor}\n size={size}\n shadow={shadow}\n height={height}\n width={width}\n css={iconCss}\n />\n )}\n {children}\n </BaseButton>\n )\n }\n)\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { RefObject } from 'react';
2
+ import { OptionsFilterButtonOption } from './types';
3
+ type FilterButtonOptionsProps = {
4
+ activeValue?: string | null;
5
+ options: OptionsFilterButtonOption[];
6
+ optionRefs?: RefObject<HTMLButtonElement[]>;
7
+ onChange: (option: OptionsFilterButtonOption) => void;
8
+ };
9
+ export declare const FilterButtonOptions: (props: FilterButtonOptionsProps) => import("@emotion/react/jsx-runtime").JSX.Element;
10
+ export declare const OptionsFilterButton: (props: {
11
+ options: OptionsFilterButtonOption[];
12
+ optionsLabel?: string | undefined;
13
+ selection?: string | null | undefined;
14
+ showFilterInput?: boolean | undefined;
15
+ filterInputPlaceholder?: string | undefined;
16
+ } & import("./types").FilterButtonPopupProps & Omit<import("..").FilterButtonProps, "children" | "value"> & import("react").RefAttributes<HTMLButtonElement>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | null;
17
+ export {};
18
+ //# sourceMappingURL=OptionsFilterButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OptionsFilterButton.d.ts","sourceRoot":"","sources":["../../../../src/components/button/OptionsFilterButton/OptionsFilterButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EAKV,MAAM,OAAO,CAAA;AAed,OAAO,EAA4B,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAM7E,KAAK,wBAAwB,GAAG;IAC9B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,OAAO,EAAE,yBAAyB,EAAE,CAAA;IACpC,UAAU,CAAC,EAAE,SAAS,CAAC,iBAAiB,EAAE,CAAC,CAAA;IAC3C,QAAQ,EAAE,CAAC,MAAM,EAAE,yBAAyB,KAAK,IAAI,CAAA;CACtD,CAAA;AAED,eAAO,MAAM,mBAAmB,UAAW,wBAAwB,qDAkFlE,CAAA;AAED,eAAO,MAAM,mBAAmB;;;;;;8PAsJ9B,CAAA"}