@moises.ai/design-system 3.4.5 → 3.4.6

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 (594) hide show
  1. package/package.json +3 -2
  2. package/src/Introduction.mdx +56 -0
  3. package/src/colors/custom-styles.css +293 -0
  4. package/src/components/AdditionalItems/AdditionalItems.jsx +43 -0
  5. package/src/components/AdditionalItems/AdditionalItems.module.css +76 -0
  6. package/src/components/AdditionalItems/AdditionalItems.stories.jsx +32 -0
  7. package/src/components/BannerAnnouncement/BannerAnnouncement.jsx +77 -0
  8. package/src/components/BannerAnnouncement/BannerAnnouncement.module.css +58 -0
  9. package/src/components/BannerAnnouncement/BannerAnnouncement.stories.jsx +120 -0
  10. package/src/components/Button/Button.jsx +45 -0
  11. package/src/components/Button/Button.module.css +288 -0
  12. package/src/components/Button/Button.stories.jsx +269 -0
  13. package/src/components/Callout/Callout.jsx +47 -0
  14. package/src/components/Callout/Callout.module.css +56 -0
  15. package/src/components/Callout/Callout.stories.jsx +296 -0
  16. package/src/components/Card/Card.jsx +46 -0
  17. package/src/components/Card/Card.module.css +89 -0
  18. package/src/components/Card/Card.stories.jsx +116 -0
  19. package/src/components/Checkbox/Checkbox.jsx +36 -0
  20. package/src/components/Checkbox/Checkbox.module.css +136 -0
  21. package/src/components/Checkbox/Checkbox.stories.jsx +64 -0
  22. package/src/components/CigarBar/CigarBar.jsx +73 -0
  23. package/src/components/CigarBar/CigarBar.module.css +57 -0
  24. package/src/components/CigarBar/CigarBar.stories.jsx +66 -0
  25. package/src/components/ContextMenu/ContextMenu.jsx +56 -0
  26. package/src/components/ContextMenu/ContextMenu.stories.jsx +657 -0
  27. package/src/components/Countdown/Countdown.jsx +97 -0
  28. package/src/components/Countdown/Countdown.module.css +206 -0
  29. package/src/components/Countdown/Countdown.stories.jsx +108 -0
  30. package/src/components/DataTable/DataTable.jsx +300 -0
  31. package/src/components/DataTable/DataTable.module.css +372 -0
  32. package/src/components/DataTable/DataTable.stories.jsx +365 -0
  33. package/src/components/DropdownButton/DropdownButton.jsx +124 -0
  34. package/src/components/DropdownButton/DropdownButton.module.css +102 -0
  35. package/src/components/DropdownButton/DropdownButton.stories.jsx +267 -0
  36. package/src/components/DropdownMenu/DropdownMenu.jsx +102 -0
  37. package/src/components/DropdownMenu/DropdownMenu.stories.jsx +645 -0
  38. package/src/components/FloatingBanner/FloatingBanner.jsx +87 -0
  39. package/src/components/FloatingBanner/FloatingBanner.module.css +92 -0
  40. package/src/components/FloatingBanner/FloatingBanner.stories.jsx +115 -0
  41. package/src/components/FooterPanel/FooterPanel.jsx +56 -0
  42. package/src/components/FooterPanel/FooterPanel.stories.jsx +289 -0
  43. package/src/components/GenerationSourceCallout/GenerationSourceCallout.jsx +53 -0
  44. package/src/components/GenerationSourceCallout/GenerationSourceCallout.module.css +98 -0
  45. package/src/components/GroupButtons/GroupButtons.jsx +97 -0
  46. package/src/components/GroupButtons/GroupButtons.module.css +8 -0
  47. package/src/components/GroupButtons/GroupButtons.stories.jsx +301 -0
  48. package/src/components/HeaderPanel/HeaderPanel.jsx +115 -0
  49. package/src/components/HeaderPanel/HeaderPanel.stories.jsx +389 -0
  50. package/src/components/HorizontalVolume/HorizontalVolume.jsx +157 -0
  51. package/src/components/HorizontalVolume/HorizontalVolume.module.css +123 -0
  52. package/src/components/HorizontalVolume/HorizontalVolume.stories.jsx +109 -0
  53. package/src/components/IconButton/IconButton.jsx +47 -0
  54. package/src/components/IconButton/IconButton.module.css +302 -0
  55. package/src/components/IconButton/IconButton.stories.jsx +532 -0
  56. package/src/components/InstrumentSelector/InstrumentSelector.jsx +61 -0
  57. package/src/components/InstrumentSelector/InstrumentSelector.module.css +80 -0
  58. package/src/components/InstrumentSelector/InstrumentSelector.stories.jsx +33 -0
  59. package/src/components/Knob/Knob.jsx +173 -0
  60. package/src/components/Knob/Knob.module.css +70 -0
  61. package/src/components/Knob/Knob.stories.jsx +289 -0
  62. package/src/components/Knob/constants.js +38 -0
  63. package/src/components/Knob/useKnob.js +117 -0
  64. package/src/components/Knob/utils.js +117 -0
  65. package/src/components/ListCards/CardDetails.stories.jsx +484 -0
  66. package/src/components/ListCards/ListCards.jsx +297 -0
  67. package/src/components/ListCards/ListCards.module.css +234 -0
  68. package/src/components/ListCards/ListCards.stories.jsx +386 -0
  69. package/src/components/LokalisePoc/LokalisePoc.jsx +7 -0
  70. package/src/components/LokalisePoc/LokalisePoc.stories.jsx +63 -0
  71. package/src/components/MessageWithAction/MessageWithAction.jsx +54 -0
  72. package/src/components/MessageWithAction/MessageWithAction.module.css +16 -0
  73. package/src/components/MessageWithAction/MessageWithAction.stories.jsx +280 -0
  74. package/src/components/MetronomeForm/MetronomeForm.jsx +74 -0
  75. package/src/components/MetronomeForm/MetronomeForm.stories.jsx +137 -0
  76. package/src/components/MultiSelect/MultiSelect.jsx +129 -0
  77. package/src/components/MultiSelect/MultiSelect.module.css +105 -0
  78. package/src/components/MultiSelect/MultiSelect.stories.jsx +296 -0
  79. package/src/components/MultiSelectCards/MultiSelectCards.jsx +96 -0
  80. package/src/components/MultiSelectCards/MultiSelectCards.module.css +60 -0
  81. package/src/components/MultiSelectCards/MultiSelectCards.stories.jsx +439 -0
  82. package/src/components/PanControl/PanControl.jsx +227 -0
  83. package/src/components/PanControl/PanControl.module.css +71 -0
  84. package/src/components/PanControl/PanControl.stories.jsx +100 -0
  85. package/src/components/ProductsBrandPattern/Patterns/aiStudio.png +0 -0
  86. package/src/components/ProductsBrandPattern/Patterns/mastering.png +0 -0
  87. package/src/components/ProductsBrandPattern/Patterns/product.png +0 -0
  88. package/src/components/ProductsBrandPattern/Patterns/stemSeparation.png +0 -0
  89. package/src/components/ProductsBrandPattern/Patterns/voiceStudio.png +0 -0
  90. package/src/components/ProductsBrandPattern/ProductsBrandPattern.jsx +36 -0
  91. package/src/components/ProductsBrandPattern/ProductsBrandPattern.stories.jsx +47 -0
  92. package/src/components/ProductsList/ProductsList.jsx +54 -0
  93. package/src/components/ProductsList/ProductsList.module.css +81 -0
  94. package/src/components/ProductsList/ProductsList.stories.jsx +69 -0
  95. package/src/components/ProfileMenu/MenuTrigger.jsx +45 -0
  96. package/src/components/ProfileMenu/ProfileMenu.jsx +66 -0
  97. package/src/components/ProfileMenu/ProfileMenu.module.css +101 -0
  98. package/src/components/ProfileMenu/ProfileMenu.stories.jsx +44 -0
  99. package/src/components/RadioCardsGroup/RadioCardsGroup.jsx +35 -0
  100. package/src/components/RadioCardsGroup/RadioCardsGroup.module.css +66 -0
  101. package/src/components/RadioCardsGroup/RadioCardsGroup.stories.jsx +89 -0
  102. package/src/components/Rating/Rating.jsx +154 -0
  103. package/src/components/Rating/Rating.module.css +70 -0
  104. package/src/components/Rating/Rating.stories.jsx +215 -0
  105. package/src/components/RecordingForm/RecordingForm.jsx +142 -0
  106. package/src/components/RecordingForm/RecordingForm.module.css +49 -0
  107. package/src/components/RecordingForm/RecordingForm.stories.jsx +319 -0
  108. package/src/components/SectionExpander/SectionExpander.jsx +53 -0
  109. package/src/components/SectionExpander/SectionExpander.module.css +46 -0
  110. package/src/components/SectionExpander/SectionExpander.stories.jsx +48 -0
  111. package/src/components/SegmentedControl/SegmentedControl.jsx +48 -0
  112. package/src/components/SegmentedControl/SegmentedControl.stories.jsx +133 -0
  113. package/src/components/SegmentedControl/SegmentedControl.styles.css +55 -0
  114. package/src/components/Select/Select.jsx +132 -0
  115. package/src/components/Select/Select.module.css +76 -0
  116. package/src/components/Select/Select.stories.jsx +294 -0
  117. package/src/components/SetlistList/SetlistList.jsx +338 -0
  118. package/src/components/SetlistList/SetlistList.module.css +246 -0
  119. package/src/components/SetlistList/SetlistList.stories.jsx +121 -0
  120. package/src/components/Shell/Shell.jsx +75 -0
  121. package/src/components/Shell/Shell.module.css +3 -0
  122. package/src/components/Shell/Shell.stories.jsx +354 -0
  123. package/src/components/Sidebar/Sidebar.jsx +173 -0
  124. package/src/components/Sidebar/Sidebar.module.css +267 -0
  125. package/src/components/Sidebar/Sidebar.stories.jsx +247 -0
  126. package/src/components/Sidebar/SidebarSection/SidebarSection.jsx +20 -0
  127. package/src/components/Sidebar/SidebarSection/SidebarSection.module.css +20 -0
  128. package/src/components/Slider/Slider.jsx +114 -0
  129. package/src/components/Slider/Slider.module.css +159 -0
  130. package/src/components/Slider/Slider.stories.jsx +199 -0
  131. package/src/components/StemGenerationForm/BesideFooter/BesideFooter.jsx +107 -0
  132. package/src/components/StemGenerationForm/BesideFooter/BesideFooter.module.css +4 -0
  133. package/src/components/StemGenerationForm/Concurrency/Concurrency.jsx +54 -0
  134. package/src/components/StemGenerationForm/Concurrency/Concurrency.module.css +26 -0
  135. package/src/components/StemGenerationForm/CreateFromPreset/CreateFromPreset.jsx +44 -0
  136. package/src/components/StemGenerationForm/CreateNew/CreateNew.jsx +107 -0
  137. package/src/components/StemGenerationForm/CreativeFreedomSection/CreativeFreedomSection.jsx +185 -0
  138. package/src/components/StemGenerationForm/CreativeFreedomSection/CreativeFreedomSection.module.css +8 -0
  139. package/src/components/StemGenerationForm/GenerationStatus/GenerationStatus.jsx +91 -0
  140. package/src/components/StemGenerationForm/StemGenerationForm.jsx +342 -0
  141. package/src/components/StemGenerationForm/StemGenerationForm.stories.jsx +703 -0
  142. package/src/components/StemGenerationForm/utils/constants.js +24 -0
  143. package/src/components/StemGenerationForm/utils/formatFileInfo.js +20 -0
  144. package/src/components/StemGenerationForm/utils/getInstrumentDescription.js +27 -0
  145. package/src/components/StemGenerationForm/utils/getLocalizedGenerationInstruments.js +31 -0
  146. package/src/components/StemGenerationForm/utils/index.js +13 -0
  147. package/src/components/StemGenerationForm/utils/secondsToTime.js +15 -0
  148. package/src/components/StemSeparationForm/GenerationStatus/GenerationStatus.jsx +70 -0
  149. package/src/components/StemSeparationForm/StemSeparationForm.jsx +354 -0
  150. package/src/components/StemSeparationForm/StemSeparationForm.module.css +0 -0
  151. package/src/components/StemSeparationForm/StemSeparationForm.stories.jsx +221 -0
  152. package/src/components/TempoControlsForm/AutoDetect/AutoDetect.jsx +114 -0
  153. package/src/components/TempoControlsForm/TempoControlsForm.jsx +59 -0
  154. package/src/components/TempoControlsForm/TempoControlsForm.stories.jsx +228 -0
  155. package/src/components/TempoControlsForm/TempoForm/TempoForm.jsx +94 -0
  156. package/src/components/TempoControlsForm/TempoFormInput/TempoFormInput.jsx +136 -0
  157. package/src/components/TempoControlsForm/TempoFormInput/TempoFormInput.module.css +19 -0
  158. package/src/components/TempoControlsForm/constants.js +77 -0
  159. package/src/components/TempoControlsForm/utils/formatDateTime.js +50 -0
  160. package/src/components/TempoControlsForm/utils/getTempoMarking.js +6 -0
  161. package/src/components/Text/Text.jsx +19 -0
  162. package/src/components/Text/Text.module.css +5 -0
  163. package/src/components/Text/Text.stories.jsx +117 -0
  164. package/src/components/TextArea/TextArea.jsx +53 -0
  165. package/src/components/TextArea/TextArea.module.css +35 -0
  166. package/src/components/TextArea/TextArea.stories.jsx +140 -0
  167. package/src/components/TextField/TextField.jsx +61 -0
  168. package/src/components/TextField/TextField.module.css +41 -0
  169. package/src/components/TextField/TextField.stories.jsx +243 -0
  170. package/src/components/ThumbnailPicker/ThumbColors/ThumbColors.js +101 -0
  171. package/src/components/ThumbnailPicker/ThumbGraphics/ThumbGraphics.js +90 -0
  172. package/src/components/ThumbnailPicker/ThumbGraphics/circles01.png +0 -0
  173. package/src/components/ThumbnailPicker/ThumbGraphics/circles02.png +0 -0
  174. package/src/components/ThumbnailPicker/ThumbGraphics/circles03.png +0 -0
  175. package/src/components/ThumbnailPicker/ThumbGraphics/circles04.png +0 -0
  176. package/src/components/ThumbnailPicker/ThumbGraphics/circles05.png +0 -0
  177. package/src/components/ThumbnailPicker/ThumbGraphics/circles06.png +0 -0
  178. package/src/components/ThumbnailPicker/ThumbGraphics/lines01.png +0 -0
  179. package/src/components/ThumbnailPicker/ThumbGraphics/lines02.png +0 -0
  180. package/src/components/ThumbnailPicker/ThumbGraphics/lines03.png +0 -0
  181. package/src/components/ThumbnailPicker/ThumbGraphics/lines04.png +0 -0
  182. package/src/components/ThumbnailPicker/ThumbGraphics/lines05.png +0 -0
  183. package/src/components/ThumbnailPicker/ThumbGraphics/lines06.png +0 -0
  184. package/src/components/ThumbnailPicker/ThumbGraphics/patterns01.png +0 -0
  185. package/src/components/ThumbnailPicker/ThumbGraphics/patterns02.png +0 -0
  186. package/src/components/ThumbnailPicker/ThumbGraphics/patterns03.png +0 -0
  187. package/src/components/ThumbnailPicker/ThumbGraphics/patterns04.png +0 -0
  188. package/src/components/ThumbnailPicker/ThumbGraphics/shapes01.png +0 -0
  189. package/src/components/ThumbnailPicker/ThumbGraphics/shapes02.png +0 -0
  190. package/src/components/ThumbnailPicker/ThumbGraphics/shapes03.png +0 -0
  191. package/src/components/ThumbnailPicker/ThumbGraphics/shapes04.png +0 -0
  192. package/src/components/ThumbnailPicker/ThumbGraphics/shapes05.png +0 -0
  193. package/src/components/ThumbnailPicker/ThumbGraphics/shapes06.png +0 -0
  194. package/src/components/ThumbnailPicker/ThumbGraphics/shapes07.png +0 -0
  195. package/src/components/ThumbnailPicker/ThumbGraphics/shapes08.png +0 -0
  196. package/src/components/ThumbnailPicker/ThumbGraphics/shapes09.png +0 -0
  197. package/src/components/ThumbnailPicker/ThumbGraphics/synth01.png +0 -0
  198. package/src/components/ThumbnailPicker/ThumbGraphics/synth02.png +0 -0
  199. package/src/components/ThumbnailPicker/ThumbGraphics/synth03.png +0 -0
  200. package/src/components/ThumbnailPicker/ThumbGraphics/synth04.png +0 -0
  201. package/src/components/ThumbnailPicker/ThumbGraphics/synth05.png +0 -0
  202. package/src/components/ThumbnailPicker/ThumbGraphics/waves01.png +0 -0
  203. package/src/components/ThumbnailPicker/ThumbGraphics/waves02.png +0 -0
  204. package/src/components/ThumbnailPicker/ThumbGraphics/waves03.png +0 -0
  205. package/src/components/ThumbnailPicker/ThumbGraphics/waves04.png +0 -0
  206. package/src/components/ThumbnailPicker/ThumbnailPicker.jsx +67 -0
  207. package/src/components/ThumbnailPicker/ThumbnailPicker.module.css +0 -0
  208. package/src/components/ThumbnailPicker/ThumbnailPicker.stories.jsx +406 -0
  209. package/src/components/ThumbnailPicker/getStyleFromID.js +31 -0
  210. package/src/components/TooltipWithInfoIcon/TooltipWithInfoIcon.jsx +18 -0
  211. package/src/components/TooltipWithInfoIcon/TooltipWithInfoIcon.module.css +6 -0
  212. package/src/components/TooltipWithInfoIcon/TooltipWithInfoIcon.stories.jsx +28 -0
  213. package/src/components/TrackControlButton/TrackControlButton.jsx +28 -0
  214. package/src/components/TrackControlButton/TrackControlButton.module.css +32 -0
  215. package/src/components/TrackControlButton/TrackControlButton.stories.jsx +47 -0
  216. package/src/components/TrackControlButton/index.js +1 -0
  217. package/src/components/TrackHeader/TrackHeader.jsx +143 -0
  218. package/src/components/TrackHeader/TrackHeader.module.css +194 -0
  219. package/src/components/TrackHeader/TrackHeader.stories.jsx +212 -0
  220. package/src/components/TrackHeader/TrackHeaderOptions/TrackHeaderOptions.jsx +18 -0
  221. package/src/components/TrackHeader/TrackHeaderOptions/TrackHeaderOptions.module.css +8 -0
  222. package/src/components/TrackHeader/TrackHeaderOptions/index.js +1 -0
  223. package/src/components/VoiceConversionForm/BesideFooter/BesideFooter.jsx +74 -0
  224. package/src/components/VoiceConversionForm/ClickableAvatar/ClickableAvatar.jsx +40 -0
  225. package/src/components/VoiceConversionForm/ClickableAvatar/ClickableAvatar.module.css +21 -0
  226. package/src/components/VoiceConversionForm/Concurrency/Concurrency.jsx +53 -0
  227. package/src/components/VoiceConversionForm/Concurrency/Concurrency.module.css +26 -0
  228. package/src/components/VoiceConversionForm/GenerationStatus/GenerationStatus.jsx +49 -0
  229. package/src/components/VoiceConversionForm/VoiceConversionForm.jsx +231 -0
  230. package/src/components/VoiceConversionForm/VoiceConversionForm.module.css +9 -0
  231. package/src/components/VoiceConversionForm/VoiceConversionForm.stories.jsx +582 -0
  232. package/src/components/VoiceConversionForm/VoiceDetails/VoiceDetails.jsx +93 -0
  233. package/src/components/VoiceConversionForm/VoiceDetails/VoiceDetails.module.css +44 -0
  234. package/src/components/VoiceConversionForm/VoiceList/VoiceList.jsx +84 -0
  235. package/src/components/VoiceConversionForm/VoiceList/VoiceList.module.css +11 -0
  236. package/src/components/VoiceConversionForm/Waveform/Waveform.jsx +262 -0
  237. package/src/components/VoiceConversionForm/Waveform/Waveform.module.css +36 -0
  238. package/src/components/theme/Theme.jsx +16 -0
  239. package/src/components/theme/Theme.stories.jsx +59 -0
  240. package/src/icons/AbbeyRoadIcon.jsx +117 -0
  241. package/src/icons/AccessibilityIcon.jsx +33 -0
  242. package/src/icons/AcousticGuitarIcon.jsx +16 -0
  243. package/src/icons/AddIcon.jsx +18 -0
  244. package/src/icons/AddLyricsIcon.jsx +25 -0
  245. package/src/icons/AddRoundIcon.jsx +26 -0
  246. package/src/icons/AirplayIcon.jsx +26 -0
  247. package/src/icons/AlertIcon.jsx +28 -0
  248. package/src/icons/AppIcon.jsx +18 -0
  249. package/src/icons/ArVrIcon.jsx +21 -0
  250. package/src/icons/ArrowDownIcon.jsx +26 -0
  251. package/src/icons/ArrowDownloadIcon.jsx +26 -0
  252. package/src/icons/ArrowLeftIcon.jsx +26 -0
  253. package/src/icons/ArrowRightIcon.jsx +26 -0
  254. package/src/icons/ArrowUpIcon.jsx +26 -0
  255. package/src/icons/ArrowsHorizontalIcon.jsx +26 -0
  256. package/src/icons/ArrowsVerticalIcon.jsx +26 -0
  257. package/src/icons/AtomIcon.jsx +32 -0
  258. package/src/icons/AttachmentIcon.jsx +26 -0
  259. package/src/icons/AudioAdjustmentsIcon.jsx +26 -0
  260. package/src/icons/AudioFileIcon.jsx +26 -0
  261. package/src/icons/AudioFilesIcon.jsx +26 -0
  262. package/src/icons/AutoplayIcon.jsx +26 -0
  263. package/src/icons/BackwardIcon.jsx +18 -0
  264. package/src/icons/BarsIcon.jsx +27 -0
  265. package/src/icons/BassIcon.jsx +39 -0
  266. package/src/icons/BoldIcon.jsx +21 -0
  267. package/src/icons/BookIcon.jsx +21 -0
  268. package/src/icons/BookmarkIcon.jsx +24 -0
  269. package/src/icons/BoxIcon.jsx +20 -0
  270. package/src/icons/BriefcaseIcon.jsx +26 -0
  271. package/src/icons/CalendarIcon.jsx +26 -0
  272. package/src/icons/CameraFlip2Icon.jsx +26 -0
  273. package/src/icons/CameraFlip3Icon.jsx +26 -0
  274. package/src/icons/CameraFlipIcon.jsx +26 -0
  275. package/src/icons/CameraIcon.jsx +33 -0
  276. package/src/icons/CameraRollIcon.jsx +31 -0
  277. package/src/icons/CarIcon.jsx +18 -0
  278. package/src/icons/CartIcon.jsx +28 -0
  279. package/src/icons/CassetteIcon.jsx +26 -0
  280. package/src/icons/CastIcon.jsx +20 -0
  281. package/src/icons/CdIcon.jsx +19 -0
  282. package/src/icons/CheckboxCicleIcon.jsx +26 -0
  283. package/src/icons/CheckboxFillIcon.jsx +25 -0
  284. package/src/icons/CheckboxOffIcon.jsx +25 -0
  285. package/src/icons/CheckboxOnIcon.jsx +25 -0
  286. package/src/icons/ChevronDownIcon.jsx +26 -0
  287. package/src/icons/ChevronLeftIcon.jsx +26 -0
  288. package/src/icons/ChevronRightIcon.jsx +26 -0
  289. package/src/icons/ChevronUpIcon.jsx +26 -0
  290. package/src/icons/ChordGrid2Icon.jsx +26 -0
  291. package/src/icons/ChordGridIcon.jsx +26 -0
  292. package/src/icons/ChordSequenceIcon.jsx +26 -0
  293. package/src/icons/Chords2Icon.jsx +25 -0
  294. package/src/icons/Chords3Icon.jsx +24 -0
  295. package/src/icons/ChordsDetection2Icon.jsx +31 -0
  296. package/src/icons/ChordsDetectionIcon.jsx +31 -0
  297. package/src/icons/ChordsIcon.jsx +25 -0
  298. package/src/icons/ClipIcon.jsx +27 -0
  299. package/src/icons/ClipboardIcon.jsx +23 -0
  300. package/src/icons/CloseIcon.jsx +27 -0
  301. package/src/icons/Cloud2Icon.jsx +24 -0
  302. package/src/icons/Cloud3Icon.jsx +24 -0
  303. package/src/icons/CloudDownload2Icon.jsx +26 -0
  304. package/src/icons/CloudDownloadErrorIcon.jsx +26 -0
  305. package/src/icons/CloudDownloadGradientIcon.jsx +44 -0
  306. package/src/icons/CloudDownloadIcon.jsx +26 -0
  307. package/src/icons/CloudIcon.jsx +20 -0
  308. package/src/icons/CloudUploadIcon.jsx +26 -0
  309. package/src/icons/CodeIcon.jsx +28 -0
  310. package/src/icons/CollectionsIcon.jsx +26 -0
  311. package/src/icons/CompressorIcon.jsx +25 -0
  312. package/src/icons/ComputerIcon.jsx +26 -0
  313. package/src/icons/CopilotIcon.jsx +26 -0
  314. package/src/icons/CountInIcon.jsx +23 -0
  315. package/src/icons/CountdownIcon.jsx +33 -0
  316. package/src/icons/CowbellIcon.jsx +25 -0
  317. package/src/icons/CropIcon.jsx +27 -0
  318. package/src/icons/CrownIcon.jsx +21 -0
  319. package/src/icons/CueBackIcon.jsx +25 -0
  320. package/src/icons/CueIcon.jsx +20 -0
  321. package/src/icons/CymbalsIcon.jsx +26 -0
  322. package/src/icons/DatabaseIcon.jsx +26 -0
  323. package/src/icons/DelayIcon.jsx +20 -0
  324. package/src/icons/DenoiserIcon.jsx +23 -0
  325. package/src/icons/DevicesIcon.jsx +26 -0
  326. package/src/icons/DialogueIcon.jsx +33 -0
  327. package/src/icons/DojoIcon.jsx +21 -0
  328. package/src/icons/DotsVertical2Icon.jsx +43 -0
  329. package/src/icons/DotsVerticalIcon.jsx +47 -0
  330. package/src/icons/DownloadApp2Icon.jsx +26 -0
  331. package/src/icons/DownloadAppIcon.jsx +23 -0
  332. package/src/icons/Drums2Icon.jsx +25 -0
  333. package/src/icons/DrumsIcon.jsx +18 -0
  334. package/src/icons/EditIcon.jsx +20 -0
  335. package/src/icons/EffectsIcon.jsx +25 -0
  336. package/src/icons/ElectricGuitarIcon.jsx +54 -0
  337. package/src/icons/EqIcon.jsx +20 -0
  338. package/src/icons/FeaturesIcon.jsx +24 -0
  339. package/src/icons/FileIcon.jsx +21 -0
  340. package/src/icons/FileNewIcon.jsx +26 -0
  341. package/src/icons/Filter2Icon.jsx +26 -0
  342. package/src/icons/FilterIcon.jsx +26 -0
  343. package/src/icons/FireIcon.jsx +21 -0
  344. package/src/icons/FlagIcon.jsx +21 -0
  345. package/src/icons/FlashGradientIcon.jsx +39 -0
  346. package/src/icons/FlashIcon.jsx +21 -0
  347. package/src/icons/FlatAndSharpIcon.jsx +25 -0
  348. package/src/icons/FlatIcon.jsx +20 -0
  349. package/src/icons/FolderIcon.jsx +32 -0
  350. package/src/icons/FolderPlusIcon.jsx +26 -0
  351. package/src/icons/ForwardIcon.jsx +18 -0
  352. package/src/icons/GiftIcon.jsx +21 -0
  353. package/src/icons/GlobeIcon.jsx +22 -0
  354. package/src/icons/GoalsIcon.jsx +25 -0
  355. package/src/icons/GraphIcon.jsx +21 -0
  356. package/src/icons/GuitarAmpIcon.jsx +41 -0
  357. package/src/icons/HamburgerMenu2Icon.jsx +26 -0
  358. package/src/icons/HamburgerMenu3Icon.jsx +26 -0
  359. package/src/icons/HandbagIcon.jsx +26 -0
  360. package/src/icons/HeadphonesIcon.jsx +26 -0
  361. package/src/icons/HeadphonesLeftIcon.jsx +30 -0
  362. package/src/icons/HeadphonesRightIcon.jsx +30 -0
  363. package/src/icons/HiFiGradientIcon.jsx +36 -0
  364. package/src/icons/HiFiIcon.jsx +112 -0
  365. package/src/icons/HiHatIcon.jsx +21 -0
  366. package/src/icons/HomeIcon.jsx +18 -0
  367. package/src/icons/Icons.stories.jsx +154 -0
  368. package/src/icons/ImageGalleryIcon.jsx +25 -0
  369. package/src/icons/ImageIcon.jsx +21 -0
  370. package/src/icons/Info2Icon.jsx +18 -0
  371. package/src/icons/InfoIcon.jsx +20 -0
  372. package/src/icons/InternetSignalIcon.jsx +26 -0
  373. package/src/icons/IpadIcon.jsx +20 -0
  374. package/src/icons/IsolateDrumsGradientIcon.jsx +41 -0
  375. package/src/icons/IsolateDrumsIcon.jsx +23 -0
  376. package/src/icons/KaraokeIcon.jsx +23 -0
  377. package/src/icons/KaraokeMicIcon.jsx +23 -0
  378. package/src/icons/KeyDetectionIcon.jsx +25 -0
  379. package/src/icons/KeyboardIcon.jsx +25 -0
  380. package/src/icons/KeysIcon.jsx +21 -0
  381. package/src/icons/KickdrumIcon.jsx +30 -0
  382. package/src/icons/Knob2Icon.jsx +27 -0
  383. package/src/icons/Knob3Icon.jsx +27 -0
  384. package/src/icons/KnobIcon.jsx +28 -0
  385. package/src/icons/LabIcon.jsx +21 -0
  386. package/src/icons/LaptopIcon.jsx +25 -0
  387. package/src/icons/LibraryIcon.jsx +31 -0
  388. package/src/icons/LinkIcon.jsx +21 -0
  389. package/src/icons/ListCheckIcon.jsx +26 -0
  390. package/src/icons/ListIcon.jsx +21 -0
  391. package/src/icons/LivePerformanceIcon.jsx +23 -0
  392. package/src/icons/LockIcon.jsx +28 -0
  393. package/src/icons/LogInIcon.jsx +21 -0
  394. package/src/icons/LogOutIcon.jsx +26 -0
  395. package/src/icons/LoopIcon.jsx +29 -0
  396. package/src/icons/LoopSection2Icon.jsx +26 -0
  397. package/src/icons/LoopSection3Icon.jsx +26 -0
  398. package/src/icons/LoopSectionIcon.jsx +26 -0
  399. package/src/icons/LyricsIcon.jsx +33 -0
  400. package/src/icons/MaracasIcon.jsx +24 -0
  401. package/src/icons/MasteringIcon.jsx +37 -0
  402. package/src/icons/Maximize2Icon.jsx +26 -0
  403. package/src/icons/MaximizeIcon.jsx +26 -0
  404. package/src/icons/MetronomeIcon.jsx +23 -0
  405. package/src/icons/Minimize2Icon.jsx +26 -0
  406. package/src/icons/MinimizeIcon.jsx +26 -0
  407. package/src/icons/Mixer2Icon.jsx +25 -0
  408. package/src/icons/MixerIcon.jsx +20 -0
  409. package/src/icons/MoisesIcon.jsx +47 -0
  410. package/src/icons/MoisesLogoIcon.jsx +43 -0
  411. package/src/icons/MoneyIcon.jsx +20 -0
  412. package/src/icons/MonoIcon.jsx +18 -0
  413. package/src/icons/MoonIcon.jsx +21 -0
  414. package/src/icons/More2Icon.jsx +44 -0
  415. package/src/icons/MoreIcon.jsx +51 -0
  416. package/src/icons/MultipleUsersIcon.jsx +26 -0
  417. package/src/icons/MusicAddIcon.jsx +26 -0
  418. package/src/icons/MusicControlIcon.jsx +23 -0
  419. package/src/icons/MusicDevice2Icon.jsx +23 -0
  420. package/src/icons/MusicDeviceIcon.jsx +25 -0
  421. package/src/icons/MusicIcon.jsx +26 -0
  422. package/src/icons/MusicListIcon.jsx +26 -0
  423. package/src/icons/MusicLoverIcon.jsx +23 -0
  424. package/src/icons/MusicNoteIcon.jsx +21 -0
  425. package/src/icons/MusicNotesIcon.jsx +26 -0
  426. package/src/icons/MusicRemoveIcon.jsx +26 -0
  427. package/src/icons/NewCollectionsIcon.jsx +25 -0
  428. package/src/icons/NextIcon.jsx +20 -0
  429. package/src/icons/NoAcousticGuitarIcon.jsx +23 -0
  430. package/src/icons/NoBassIcon.jsx +23 -0
  431. package/src/icons/NoChords2Icon.jsx +25 -0
  432. package/src/icons/NoChordsDetectionIcon.jsx +31 -0
  433. package/src/icons/NoCloud3Icon.jsx +23 -0
  434. package/src/icons/NoComputerIcon.jsx +26 -0
  435. package/src/icons/NoCymbalsIcon.jsx +26 -0
  436. package/src/icons/NoDialogueIcon.jsx +26 -0
  437. package/src/icons/NoDrums2Icon.jsx +23 -0
  438. package/src/icons/NoDrumsIcon.jsx +23 -0
  439. package/src/icons/NoElectricGuitarIcon.jsx +23 -0
  440. package/src/icons/NoFileIcon.jsx +26 -0
  441. package/src/icons/NoHeadphonesIcon.jsx +26 -0
  442. package/src/icons/NoHiHatIcon.jsx +26 -0
  443. package/src/icons/NoInternetSignalIcon.jsx +33 -0
  444. package/src/icons/NoKeysIcon.jsx +38 -0
  445. package/src/icons/NoKickdrumIcon.jsx +23 -0
  446. package/src/icons/NoLoopSection2Icon.jsx +23 -0
  447. package/src/icons/NoLoopSectionIcon.jsx +26 -0
  448. package/src/icons/NoLyricsIcon.jsx +25 -0
  449. package/src/icons/NoMaracasIcon.jsx +23 -0
  450. package/src/icons/NoMetronomeIcon.jsx +23 -0
  451. package/src/icons/NoMoneyIcon.jsx +26 -0
  452. package/src/icons/NoMusicIcon.jsx +32 -0
  453. package/src/icons/NoMusicNoteIcon.jsx +25 -0
  454. package/src/icons/NoPianoIcon.jsx +33 -0
  455. package/src/icons/NoSearchIcon.jsx +26 -0
  456. package/src/icons/NoSectionsIcon.jsx +25 -0
  457. package/src/icons/NoSnareIcon.jsx +26 -0
  458. package/src/icons/NoSoundEffectsIcon.jsx +23 -0
  459. package/src/icons/NoSoundIcon.jsx +23 -0
  460. package/src/icons/NoSoundtrackIcon.jsx +30 -0
  461. package/src/icons/NoSpliterIcon.jsx +23 -0
  462. package/src/icons/NoStringsIcon.jsx +23 -0
  463. package/src/icons/NoTomsIcon.jsx +23 -0
  464. package/src/icons/NoUkuleleIcon.jsx +26 -0
  465. package/src/icons/NoVideoIcon.jsx +26 -0
  466. package/src/icons/NoVocalsIcon.jsx +23 -0
  467. package/src/icons/NoVolume2Icon.jsx +26 -0
  468. package/src/icons/NoVolumeIcon.jsx +26 -0
  469. package/src/icons/NoWoodwindBrassIcon.jsx +23 -0
  470. package/src/icons/NotificationsIcon.jsx +26 -0
  471. package/src/icons/OffloadDeviceIcon.jsx +23 -0
  472. package/src/icons/PauseFilledIcon.jsx +27 -0
  473. package/src/icons/PauseIcon.jsx +22 -0
  474. package/src/icons/PianoIcon.jsx +25 -0
  475. package/src/icons/PinIcon.jsx +20 -0
  476. package/src/icons/Pip2Icon.jsx +18 -0
  477. package/src/icons/PipIcon.jsx +21 -0
  478. package/src/icons/PitchCorrectionIcon.jsx +25 -0
  479. package/src/icons/PitchIcon.jsx +21 -0
  480. package/src/icons/PlayAllIcon.jsx +25 -0
  481. package/src/icons/PlayBackSpeedIcon.jsx +37 -0
  482. package/src/icons/PlayCircleIcon.jsx +44 -0
  483. package/src/icons/PlayIcon.jsx +20 -0
  484. package/src/icons/PlayOnRepeatIcon.jsx +26 -0
  485. package/src/icons/PlusIcon.jsx +21 -0
  486. package/src/icons/PreferencesIcon.jsx +25 -0
  487. package/src/icons/PreviousIcon.jsx +25 -0
  488. package/src/icons/PriceTagIcon.jsx +26 -0
  489. package/src/icons/ProducerIcon.jsx +69 -0
  490. package/src/icons/PuzzlePiece2Icon.jsx +26 -0
  491. package/src/icons/PuzzlePieceIcon.jsx +26 -0
  492. package/src/icons/QuantizationIcon.jsx +25 -0
  493. package/src/icons/RadioIcon.jsx +36 -0
  494. package/src/icons/RadioOffIcon.jsx +26 -0
  495. package/src/icons/RecordIcon.jsx +15 -0
  496. package/src/icons/RecordingIcon.jsx +22 -0
  497. package/src/icons/RedoIcon.jsx +26 -0
  498. package/src/icons/RefreshBackIcon.jsx +32 -0
  499. package/src/icons/RefreshIcon.jsx +26 -0
  500. package/src/icons/RemoveFromDeviceIcon.jsx +23 -0
  501. package/src/icons/RemoveIcon.jsx +25 -0
  502. package/src/icons/ReorderIcon.jsx +26 -0
  503. package/src/icons/RepostIcon.jsx +26 -0
  504. package/src/icons/ReverbIcon.jsx +25 -0
  505. package/src/icons/RocketIcon.jsx +30 -0
  506. package/src/icons/SaveTimeIcon.jsx +26 -0
  507. package/src/icons/SearchIcon.jsx +32 -0
  508. package/src/icons/SectionsIcon.jsx +25 -0
  509. package/src/icons/Setlist2Icon.jsx +26 -0
  510. package/src/icons/SetlistIcon.jsx +26 -0
  511. package/src/icons/SettingsIcon.jsx +27 -0
  512. package/src/icons/SharpIcon.jsx +20 -0
  513. package/src/icons/ShiftIcon.jsx +20 -0
  514. package/src/icons/ShuffleIcon.jsx +26 -0
  515. package/src/icons/SidebarIslandIcon.jsx +26 -0
  516. package/src/icons/SidebarLeftIcon.jsx +25 -0
  517. package/src/icons/SidebarRightIcon.jsx +26 -0
  518. package/src/icons/SlidersIcon.jsx +26 -0
  519. package/src/icons/SnareIcon.jsx +18 -0
  520. package/src/icons/SongBarIcon.jsx +26 -0
  521. package/src/icons/SongDetailIcon.jsx +26 -0
  522. package/src/icons/Songkey2Icon.jsx +25 -0
  523. package/src/icons/SongwritingIcon.jsx +26 -0
  524. package/src/icons/SoundEffectsGradientIcon.jsx +39 -0
  525. package/src/icons/SoundEffectsIcon.jsx +26 -0
  526. package/src/icons/SoundbarIcon.jsx +26 -0
  527. package/src/icons/SoundtrackGradientIcon.jsx +44 -0
  528. package/src/icons/SoundtrackIcon.jsx +26 -0
  529. package/src/icons/SparkBarsIcon.jsx +25 -0
  530. package/src/icons/SparkleIcon.jsx +35 -0
  531. package/src/icons/SparklesGradientIcon.jsx +62 -0
  532. package/src/icons/SpatialAudioIcon.jsx +55 -0
  533. package/src/icons/SpeakerIcon.jsx +23 -0
  534. package/src/icons/SpeakerLoudIcon.jsx +34 -0
  535. package/src/icons/SpeedChangerIcon.jsx +30 -0
  536. package/src/icons/SpeedIcon.jsx +18 -0
  537. package/src/icons/SplitIcon.jsx +21 -0
  538. package/src/icons/SpliterGradientIcon.jsx +44 -0
  539. package/src/icons/SpliterIcon.jsx +26 -0
  540. package/src/icons/StarFilledIcon.jsx +23 -0
  541. package/src/icons/StarIcon.jsx +20 -0
  542. package/src/icons/Stop2Icon.jsx +15 -0
  543. package/src/icons/StringsIcon.jsx +36 -0
  544. package/src/icons/TargetIcon.jsx +33 -0
  545. package/src/icons/ThumbDownIcon.jsx +26 -0
  546. package/src/icons/ThumbUpIcon.jsx +26 -0
  547. package/src/icons/ThumbsIcon.jsx +26 -0
  548. package/src/icons/TomsIcon.jsx +21 -0
  549. package/src/icons/TransposeIcon.jsx +26 -0
  550. package/src/icons/TrashIcon.jsx +21 -0
  551. package/src/icons/TrimIcon.jsx +27 -0
  552. package/src/icons/Tuner2Icon.jsx +23 -0
  553. package/src/icons/TunerIcon.jsx +18 -0
  554. package/src/icons/TvIcon.jsx +20 -0
  555. package/src/icons/UkuleleIcon.jsx +49 -0
  556. package/src/icons/UndoIcon.jsx +26 -0
  557. package/src/icons/UploadIcon.jsx +29 -0
  558. package/src/icons/UserGroup3Icon.jsx +26 -0
  559. package/src/icons/UserGroupIcon.jsx +26 -0
  560. package/src/icons/UserIcon.jsx +27 -0
  561. package/src/icons/Video2Icon.jsx +31 -0
  562. package/src/icons/Video3Icon.jsx +24 -0
  563. package/src/icons/VideoFileIcon.jsx +30 -0
  564. package/src/icons/VideoFilesIcon.jsx +30 -0
  565. package/src/icons/VideoIcon.jsx +21 -0
  566. package/src/icons/VocalIcon.jsx +18 -0
  567. package/src/icons/VocalIsolationIcon.jsx +29 -0
  568. package/src/icons/VocalsBackgroundIcon.jsx +32 -0
  569. package/src/icons/VocalsIcon.jsx +26 -0
  570. package/src/icons/Volume0Icon.jsx +26 -0
  571. package/src/icons/Volume1Icon.jsx +26 -0
  572. package/src/icons/Volume2Icon.jsx +26 -0
  573. package/src/icons/VolumeBarIcon.jsx +25 -0
  574. package/src/icons/WaveIcon.jsx +21 -0
  575. package/src/icons/WaveformIcon.jsx +25 -0
  576. package/src/icons/WidgetIcon.jsx +35 -0
  577. package/src/icons/WindIcon.jsx +18 -0
  578. package/src/icons/WoodwindBrassIcon.jsx +23 -0
  579. package/src/icons/ZoomCloseIcon.jsx +38 -0
  580. package/src/icons/ZoomInIcon.jsx +32 -0
  581. package/src/icons.jsx +343 -0
  582. package/src/index.jsx +151 -0
  583. package/src/lib/menu/Menu.module.css +356 -0
  584. package/src/lib/menu/index.js +2 -0
  585. package/src/lib/menu/renderItem.jsx +190 -0
  586. package/src/primitives.jsx +71 -0
  587. package/src/styles.css +10 -0
  588. package/src/utils/avatarUtils.js +18 -0
  589. package/src/utils/constants.js +16 -0
  590. package/src/utils/use-isomorphic-layout-effect.js +6 -0
  591. package/src/utils/useEventListener.js +34 -0
  592. package/src/utils/useIsMobileViewport.js +32 -0
  593. package/src/utils/useMobileDrawer.js +41 -0
  594. package/src/utils/useSubmitWithFeedback.js +32 -0
@@ -0,0 +1,532 @@
1
+ import { IconButton } from './IconButton'
2
+ import { Flex, Box, Heading, Text, Grid } from '@radix-ui/themes'
3
+ import {
4
+ HomeIcon,
5
+ MagnifyingGlassIcon,
6
+ Cross1Icon,
7
+ PlusIcon,
8
+ ChevronRightIcon,
9
+ DownloadIcon,
10
+ TrashIcon,
11
+ HeartIcon,
12
+ } from '@radix-ui/react-icons'
13
+
14
+ import { AlertIcon } from '../../icons/AlertIcon'
15
+
16
+ export default {
17
+ title: 'Components/IconButton',
18
+ component: IconButton,
19
+ parameters: {
20
+ layout: 'centered',
21
+ docs: {
22
+ description: {
23
+ component: `
24
+ IconButton is a button that displays only an icon. It's built on top of Radix UI's IconButton component and
25
+ supports various states such as default, hover, and disabled.
26
+
27
+ ## Usage
28
+
29
+ \`\`\`jsx
30
+ import { IconButton } from '@moises.ai/design-system'
31
+ import { HomeIcon } from '@moises.ai/design-system/icons'
32
+
33
+ const MyComponent = () => (
34
+ <IconButton onClick={() => console.log('clicked!')}>
35
+ <HomeIcon width={20} height={20} />
36
+ </IconButton>
37
+ )
38
+ \`\`\`
39
+ `,
40
+ },
41
+ },
42
+ },
43
+ tags: ['autodocs'],
44
+ argTypes: {
45
+ variant: {
46
+ control: { type: 'select' },
47
+ options: ['ghost', 'solid', 'soft', 'surface'],
48
+ description:
49
+ 'The visual style of the button. **Note:** solid variant is not available when color is mint. **Note:** surface and soft variants only support gray color.',
50
+ table: {
51
+ type: { summary: 'string' },
52
+ defaultValue: { summary: 'ghost' },
53
+ },
54
+ },
55
+ color: {
56
+ control: { type: 'select' },
57
+ options: ['gray', 'red', 'mint', 'cyan'],
58
+ description:
59
+ 'The color scheme of the button **Note:** mint color is not available when variant is solid.',
60
+ table: {
61
+ type: { summary: 'string' },
62
+ defaultValue: { summary: 'gray' },
63
+ },
64
+ },
65
+ disabled: {
66
+ control: { type: 'boolean' },
67
+ description: 'Disables the button',
68
+ table: {
69
+ type: { summary: 'boolean' },
70
+ defaultValue: { summary: 'false' },
71
+ },
72
+ },
73
+ onClick: {
74
+ action: 'clicked',
75
+ description: 'Function called when the button is clicked',
76
+ table: {
77
+ type: { summary: 'function' },
78
+ defaultValue: { summary: 'undefined' },
79
+ },
80
+ },
81
+ className: {
82
+ control: false,
83
+ description: 'Additional CSS class names to apply to the button',
84
+ table: {
85
+ type: { summary: 'string' },
86
+ defaultValue: { summary: 'undefined' },
87
+ },
88
+ },
89
+ children: {
90
+ control: false,
91
+ description: 'Icon component to be rendered as children **(REQUIRED)**',
92
+ table: {
93
+ type: { summary: 'React.ReactNode' },
94
+ defaultValue: { summary: 'undefined' },
95
+ },
96
+ },
97
+ size: {
98
+ control: { type: 'select' },
99
+ options: ['1', '2', '3', '4'],
100
+ description: 'The size of the button.',
101
+ table: {
102
+ type: { summary: 'string' },
103
+ defaultValue: { summary: '1' },
104
+ },
105
+ },
106
+ highContrast: {
107
+ control: { type: 'boolean' },
108
+ description: 'Whether to use high contrast styling',
109
+ table: {
110
+ type: { summary: 'boolean' },
111
+ defaultValue: { summary: 'false' },
112
+ },
113
+ },
114
+ loading: {
115
+ control: { type: 'boolean' },
116
+ description: 'Shows a loading indicator',
117
+ table: {
118
+ type: { summary: 'boolean' },
119
+ defaultValue: { summary: 'false' },
120
+ },
121
+ },
122
+ iconComponent: {
123
+ control: false,
124
+ description: 'Internal use only for story examples',
125
+ table: {
126
+ disable: true,
127
+ },
128
+ },
129
+ },
130
+ args: {
131
+ // Default values for all stories
132
+ variant: 'ghost',
133
+ color: 'gray',
134
+ },
135
+ }
136
+
137
+ const Template = (args) => (
138
+ <IconButton {...args}>
139
+ {args.iconComponent ? (
140
+ args.iconComponent
141
+ ) : (
142
+ <HomeIcon width={20} height={20} />
143
+ )}
144
+ </IconButton>
145
+ )
146
+
147
+ const ButtonWithLabel = ({ label, ...props }) => (
148
+ <Flex direction="column" gap="2" align="center">
149
+ <Text size="1">{label}</Text>
150
+ <IconButton {...props}>
151
+ <HomeIcon width={20} height={20} />
152
+ </IconButton>
153
+ </Flex>
154
+ )
155
+
156
+ export const Default = {
157
+ render: Template,
158
+ }
159
+
160
+ export const Variants = {
161
+ name: 'Button Variants',
162
+ render: () => (
163
+ <Flex direction="column" gap="8">
164
+ <Box>
165
+ <Heading size="4">Available Variants</Heading>
166
+ <Grid columns="4" gap="6" mt="4" align="center">
167
+ <ButtonWithLabel label="Ghost" variant="ghost" />
168
+ <ButtonWithLabel label="Solid" variant="solid" />
169
+ <ButtonWithLabel label="Soft" variant="soft" />
170
+ <ButtonWithLabel label="Surface" variant="surface" />
171
+ </Grid>
172
+ </Box>
173
+
174
+ <Box>
175
+ <Heading size="4">Available Colors</Heading>
176
+ <Grid columns="4" gap="6" mt="4" align="center">
177
+ <ButtonWithLabel label="Gray" color="gray" />
178
+ <ButtonWithLabel label="Red" color="red" />
179
+ <ButtonWithLabel label="Mint" color="mint" />
180
+ <ButtonWithLabel label="Cyan" color="cyan" />
181
+ </Grid>
182
+ </Box>
183
+
184
+ <Box>
185
+ <Heading size="4">High Contrast Options</Heading>
186
+ <Grid columns="2" gap="6" mt="4" align="center">
187
+ <ButtonWithLabel label="Normal Contrast" />
188
+ <ButtonWithLabel label="High Contrast" highContrast />
189
+ </Grid>
190
+ </Box>
191
+
192
+ <Box>
193
+ <Heading size="4">State Variations</Heading>
194
+ <Grid columns="3" gap="6" mt="4" align="center">
195
+ <ButtonWithLabel label="Default" />
196
+ <ButtonWithLabel label="Disabled" disabled />
197
+ <ButtonWithLabel label="Loading" loading />
198
+ </Grid>
199
+ </Box>
200
+ </Flex>
201
+ ),
202
+ }
203
+
204
+ export const ColorVariants = {
205
+ name: 'Complete Color Examples',
206
+ render: () => (
207
+ <Flex direction="column" gap="8">
208
+ <Box>
209
+ <Heading size="4">Mint Color (only ghost variant)</Heading>
210
+ <Flex align="center" justify="center" gap="4" wrap="wrap" mt="4">
211
+ <Flex direction="column" gap="2" align="center">
212
+ <Text size="1">Ghost default</Text>
213
+ <IconButton variant="ghost" color="mint">
214
+ <AlertIcon width={20} height={20} />
215
+ </IconButton>
216
+ </Flex>
217
+ <Flex direction="column" gap="2" align="center">
218
+ <Text size="1">Ghost highContrast</Text>
219
+ <IconButton variant="ghost" color="mint" highContrast>
220
+ <AlertIcon width={20} height={20} />
221
+ </IconButton>
222
+ </Flex>
223
+ </Flex>
224
+ <Flex align="center" justify="center" gap="4" wrap="wrap" mt="4">
225
+ <Flex direction="column" gap="2" align="center">
226
+ <Text size="1">Ghost default disabled</Text>
227
+ <IconButton variant="ghost" color="mint" disabled>
228
+ <AlertIcon width={20} height={20} />
229
+ </IconButton>
230
+ </Flex>
231
+ <Flex direction="column" gap="2" align="center">
232
+ <Text size="1">Ghost highContrast disabled</Text>
233
+ <IconButton
234
+ variant="ghost"
235
+ color="mint"
236
+ disabled
237
+ highContrast={true}
238
+ >
239
+ <AlertIcon width={20} height={20} />
240
+ </IconButton>
241
+ </Flex>
242
+ </Flex>
243
+ <Flex align="center" justify="center" gap="4" wrap="wrap" mt="4">
244
+ <Flex direction="column" gap="2" align="center">
245
+ <Text size="1">Ghost loading</Text>
246
+ <IconButton variant="ghost" color="mint" loading>
247
+ <AlertIcon width={20} height={20} />
248
+ </IconButton>
249
+ </Flex>
250
+ <Flex direction="column" gap="2" align="center">
251
+ <Text size="1">Ghost loading highContrast</Text>
252
+ <IconButton variant="ghost" color="mint" loading highContrast>
253
+ <AlertIcon width={20} height={20} />
254
+ </IconButton>
255
+ </Flex>
256
+ </Flex>
257
+ </Box>
258
+
259
+ <Box>
260
+ <Heading size="4">Gray Color (all variants)</Heading>
261
+ <Flex align="center" justify="center" gap="4" wrap="wrap" mt="4">
262
+ <Flex direction="column" gap="2" align="center">
263
+ <Text size="1">Ghost default</Text>
264
+ <IconButton variant="ghost" color="gray">
265
+ <AlertIcon width={20} height={20} />
266
+ </IconButton>
267
+ </Flex>
268
+ <Flex direction="column" gap="2" align="center">
269
+ <Text size="1">Ghost highContrast</Text>
270
+ <IconButton variant="ghost" color="gray" highContrast>
271
+ <AlertIcon width={20} height={20} />
272
+ </IconButton>
273
+ </Flex>
274
+ <Flex direction="column" gap="2" align="center">
275
+ <Text size="1">Solid default</Text>
276
+ <IconButton variant="solid" color="gray">
277
+ <AlertIcon width={20} height={20} />
278
+ </IconButton>
279
+ </Flex>
280
+ <Flex direction="column" gap="2" align="center">
281
+ <Text size="1">Solid highContrast</Text>
282
+ <IconButton variant="solid" color="gray" highContrast>
283
+ <AlertIcon width={20} height={20} />
284
+ </IconButton>
285
+ </Flex>
286
+ </Flex>
287
+ <Flex align="center" justify="center" gap="4" wrap="wrap" mt="4">
288
+ <Flex direction="column" gap="2" align="center">
289
+ <Text size="1">Soft default</Text>
290
+ <IconButton variant="soft" color="gray">
291
+ <AlertIcon width={20} height={20} />
292
+ </IconButton>
293
+ </Flex>
294
+ <Flex direction="column" gap="2" align="center">
295
+ <Text size="1">Soft highContrast</Text>
296
+ <IconButton variant="soft" color="gray" highContrast>
297
+ <AlertIcon width={20} height={20} />
298
+ </IconButton>
299
+ </Flex>
300
+ <Flex direction="column" gap="2" align="center">
301
+ <Text size="1">Surface default</Text>
302
+ <IconButton variant="surface" color="gray">
303
+ <AlertIcon width={20} height={20} />
304
+ </IconButton>
305
+ </Flex>
306
+ <Flex direction="column" gap="2" align="center">
307
+ <Text size="1">Surface highContrast</Text>
308
+ <IconButton variant="surface" color="gray" highContrast>
309
+ <AlertIcon width={20} height={20} />
310
+ </IconButton>
311
+ </Flex>
312
+ </Flex>
313
+ <Flex align="center" justify="center" gap="4" wrap="wrap" mt="4">
314
+ <Flex direction="column" gap="2" align="center">
315
+ <Text size="1">Ghost disabled</Text>
316
+ <IconButton variant="ghost" color="gray" disabled>
317
+ <HomeIcon width={20} height={20} />
318
+ </IconButton>
319
+ </Flex>
320
+ <Flex direction="column" gap="2" align="center">
321
+ <Text size="1">Solid disabled</Text>
322
+ <IconButton variant="solid" color="gray" disabled>
323
+ <HomeIcon width={20} height={20} />
324
+ </IconButton>
325
+ </Flex>
326
+ <Flex direction="column" gap="2" align="center">
327
+ <Text size="1">Soft disabled</Text>
328
+ <IconButton variant="soft" color="gray" disabled>
329
+ <HomeIcon width={20} height={20} />
330
+ </IconButton>
331
+ </Flex>
332
+ <Flex direction="column" gap="2" align="center">
333
+ <Text size="1">Surface disabled</Text>
334
+ <IconButton variant="surface" color="gray" disabled>
335
+ <HomeIcon width={20} height={20} />
336
+ </IconButton>
337
+ </Flex>
338
+ </Flex>
339
+ <Flex align="center" justify="center" gap="4" wrap="wrap" mt="4">
340
+ <Flex direction="column" gap="2" align="center">
341
+ <Text size="1">Ghost loading</Text>
342
+ <IconButton variant="ghost" color="gray" loading>
343
+ <HomeIcon width={20} height={20} />
344
+ </IconButton>
345
+ </Flex>
346
+ <Flex direction="column" gap="2" align="center">
347
+ <Text size="1">Solid loading</Text>
348
+ <IconButton variant="solid" color="gray" loading>
349
+ <HomeIcon width={20} height={20} />
350
+ </IconButton>
351
+ </Flex>
352
+ <Flex direction="column" gap="2" align="center">
353
+ <Text size="1">Soft loading</Text>
354
+ <IconButton variant="soft" color="gray" loading>
355
+ <HomeIcon width={20} height={20} />
356
+ </IconButton>
357
+ </Flex>
358
+ <Flex direction="column" gap="2" align="center">
359
+ <Text size="1">Surface loading</Text>
360
+ <IconButton variant="surface" color="gray" loading>
361
+ <HomeIcon width={20} height={20} />
362
+ </IconButton>
363
+ </Flex>
364
+ </Flex>
365
+ </Box>
366
+
367
+ <Box>
368
+ <Heading size="4">Red Color (ghost and solid variants)</Heading>
369
+ <Flex align="center" justify="center" gap="4" wrap="wrap" mt="4">
370
+ <Flex direction="column" gap="2" align="center">
371
+ <Text size="1">Ghost default</Text>
372
+ <IconButton variant="ghost" color="red">
373
+ <HomeIcon width={20} height={20} />
374
+ </IconButton>
375
+ </Flex>
376
+ <Flex direction="column" gap="2" align="center">
377
+ <Text size="1">Ghost highContrast</Text>
378
+ <IconButton variant="ghost" color="red" highContrast>
379
+ <HomeIcon width={20} height={20} />
380
+ </IconButton>
381
+ </Flex>
382
+ <Flex direction="column" gap="2" align="center">
383
+ <Text size="1">Solid default</Text>
384
+ <IconButton variant="solid" color="red">
385
+ <HomeIcon width={20} height={20} />
386
+ </IconButton>
387
+ </Flex>
388
+ <Flex direction="column" gap="2" align="center">
389
+ <Text size="1">Solid highContrast</Text>
390
+ <IconButton variant="solid" color="red" highContrast>
391
+ <HomeIcon width={20} height={20} />
392
+ </IconButton>
393
+ </Flex>
394
+ </Flex>
395
+ <Flex align="center" justify="center" gap="4" wrap="wrap" mt="4">
396
+ <Flex direction="column" gap="2" align="center">
397
+ <Text size="1">Ghost disabled</Text>
398
+ <IconButton variant="ghost" color="red" disabled>
399
+ <HomeIcon width={20} height={20} />
400
+ </IconButton>
401
+ </Flex>
402
+ <Flex direction="column" gap="2" align="center">
403
+ <Text size="1">Ghost highContrast disabled</Text>
404
+ <IconButton variant="ghost" color="red" disabled highContrast>
405
+ <HomeIcon width={20} height={20} />
406
+ </IconButton>
407
+ </Flex>
408
+ <Flex direction="column" gap="2" align="center">
409
+ <Text size="1">Solid disabled</Text>
410
+ <IconButton variant="solid" color="red" disabled>
411
+ <HomeIcon width={20} height={20} />
412
+ </IconButton>
413
+ </Flex>
414
+ <Flex direction="column" gap="2" align="center">
415
+ <Text size="1">Solid highContrast disabled</Text>
416
+ <IconButton variant="solid" color="red" disabled highContrast>
417
+ <HomeIcon width={20} height={20} />
418
+ </IconButton>
419
+ </Flex>
420
+ </Flex>
421
+ <Flex align="center" justify="center" gap="4" wrap="wrap" mt="4">
422
+ <Flex direction="column" gap="2" align="center">
423
+ <Text size="1">Ghost loading</Text>
424
+ <IconButton variant="ghost" color="red" loading>
425
+ <HomeIcon width={20} height={20} />
426
+ </IconButton>
427
+ </Flex>
428
+ <Flex direction="column" gap="2" align="center">
429
+ <Text size="1">Ghost highContrast loading</Text>
430
+ <IconButton variant="ghost" color="red" loading highContrast>
431
+ <HomeIcon width={20} height={20} />
432
+ </IconButton>
433
+ </Flex>
434
+ <Flex direction="column" gap="2" align="center">
435
+ <Text size="1">Solid loading</Text>
436
+ <IconButton variant="solid" color="red" loading>
437
+ <HomeIcon width={20} height={20} />
438
+ </IconButton>
439
+ </Flex>
440
+ <Flex direction="column" gap="2" align="center">
441
+ <Text size="1">Solid highContrast loading</Text>
442
+ <IconButton variant="solid" color="red" loading highContrast>
443
+ <HomeIcon width={20} height={20} />
444
+ </IconButton>
445
+ </Flex>
446
+ </Flex>
447
+ </Box>
448
+
449
+ <Box>
450
+ <Heading size="4">Cyan Color (ghost and solid variants)</Heading>
451
+ <Flex align="center" justify="center" gap="4" wrap="wrap" mt="4">
452
+ <Flex direction="column" gap="2" align="center">
453
+ <Text size="1">Ghost default</Text>
454
+ <IconButton variant="ghost" color="cyan">
455
+ <HomeIcon width={20} height={20} />
456
+ </IconButton>
457
+ </Flex>
458
+ <Flex direction="column" gap="2" align="center">
459
+ <Text size="1">Ghost highContrast</Text>
460
+ <IconButton variant="ghost" color="cyan" highContrast>
461
+ <HomeIcon width={20} height={20} />
462
+ </IconButton>
463
+ </Flex>
464
+ <Flex direction="column" gap="2" align="center">
465
+ <Text size="1">Solid default</Text>
466
+ <IconButton variant="solid" color="cyan">
467
+ <HomeIcon width={20} height={20} />
468
+ </IconButton>
469
+ </Flex>
470
+ <Flex direction="column" gap="2" align="center">
471
+ <Text size="1">Solid highContrast</Text>
472
+ <IconButton variant="solid" color="cyan" highContrast>
473
+ <HomeIcon width={20} height={20} />
474
+ </IconButton>
475
+ </Flex>
476
+ </Flex>
477
+ <Flex align="center" justify="center" gap="4" wrap="wrap" mt="4">
478
+ <Flex direction="column" gap="2" align="center">
479
+ <Text size="1">Ghost disabled</Text>
480
+ <IconButton variant="ghost" color="cyan" disabled>
481
+ <HomeIcon width={20} height={20} />
482
+ </IconButton>
483
+ </Flex>
484
+ <Flex direction="column" gap="2" align="center">
485
+ <Text size="1">Ghost highContrast disabled</Text>
486
+ <IconButton variant="ghost" color="cyan" disabled highContrast>
487
+ <HomeIcon width={20} height={20} />
488
+ </IconButton>
489
+ </Flex>
490
+ <Flex direction="column" gap="2" align="center">
491
+ <Text size="1">Solid disabled</Text>
492
+ <IconButton variant="solid" color="cyan" disabled>
493
+ <HomeIcon width={20} height={20} />
494
+ </IconButton>
495
+ </Flex>
496
+ <Flex direction="column" gap="2" align="center">
497
+ <Text size="1">Solid highContrast disabled</Text>
498
+ <IconButton variant="solid" color="cyan" disabled highContrast>
499
+ <HomeIcon width={20} height={20} />
500
+ </IconButton>
501
+ </Flex>
502
+ </Flex>
503
+ <Flex align="center" justify="center" gap="4" wrap="wrap" mt="4">
504
+ <Flex direction="column" gap="2" align="center">
505
+ <Text size="1">Ghost loading</Text>
506
+ <IconButton variant="ghost" color="cyan" loading>
507
+ <HomeIcon width={20} height={20} />
508
+ </IconButton>
509
+ </Flex>
510
+ <Flex direction="column" gap="2" align="center">
511
+ <Text size="1">Ghost highContrast loading</Text>
512
+ <IconButton variant="ghost" color="cyan" loading highContrast>
513
+ <HomeIcon width={20} height={20} />
514
+ </IconButton>
515
+ </Flex>
516
+ <Flex direction="column" gap="2" align="center">
517
+ <Text size="1">Solid loading</Text>
518
+ <IconButton variant="solid" color="cyan" loading>
519
+ <HomeIcon width={20} height={20} />
520
+ </IconButton>
521
+ </Flex>
522
+ <Flex direction="column" gap="2" align="center">
523
+ <Text size="1">Solid highContrast loading</Text>
524
+ <IconButton variant="solid" color="cyan" loading highContrast>
525
+ <HomeIcon width={20} height={20} />
526
+ </IconButton>
527
+ </Flex>
528
+ </Flex>
529
+ </Box>
530
+ </Flex>
531
+ ),
532
+ }
@@ -0,0 +1,61 @@
1
+ import { RadioCards as RadioCardsRadix, Flex, Text } from '@radix-ui/themes'
2
+ import styles from './InstrumentSelector.module.css'
3
+ import classNames from 'classnames'
4
+
5
+ export const InstrumentSelector = ({
6
+ items = [],
7
+ defaultValue,
8
+ value,
9
+ selectedValue,
10
+ columns = { initial: '2' },
11
+ onValueChange,
12
+ handleValueChange,
13
+ children,
14
+ className,
15
+ ...props
16
+ }) => {
17
+ const resolvedValue = value ?? selectedValue
18
+ const resolvedOnValueChange = onValueChange ?? handleValueChange
19
+
20
+ return (
21
+ <RadioCardsRadix.Root
22
+ className={classNames(styles.RadioCardsRoot, className)}
23
+ columns={columns}
24
+ defaultValue={defaultValue}
25
+ value={resolvedValue}
26
+ onValueChange={resolvedOnValueChange}
27
+ {...props}
28
+ >
29
+ {items.map((item, idx) => {
30
+ const Icon = item.Icon ?? item.icon
31
+ const itemText = item.text ?? item.label ?? item.children
32
+
33
+ return (
34
+ <RadioCardsRadix.Item
35
+ key={item.value ?? idx}
36
+ value={item.value}
37
+ disabled={item.disabled || false}
38
+ className={styles.RadioCardsItem}
39
+ >
40
+ <Flex align="center" gap="3" className={styles.RadioCardsContent}>
41
+ {Icon && (
42
+ <span className={styles.icon}>
43
+ {typeof Icon === 'function' ? <Icon /> : Icon}
44
+ </span>
45
+ )}
46
+ {itemText && (
47
+ <Text as="span" size="2" weight="regular" className={styles.text}>
48
+ {itemText}
49
+ </Text>
50
+ )}
51
+ {item.children}
52
+ </Flex>
53
+ </RadioCardsRadix.Item>
54
+ )
55
+ })}
56
+ {children}
57
+ </RadioCardsRadix.Root>
58
+ )
59
+ }
60
+
61
+ InstrumentSelector.displayName = 'InstrumentSelector'
@@ -0,0 +1,80 @@
1
+ .RadioCardsRoot {
2
+ width: 100%;
3
+ gap: 4px;
4
+ }
5
+
6
+ .RadioCardsItem {
7
+ display: flex;
8
+ min-height: 52px !important;
9
+ min-width: 140px;
10
+ align-items: center;
11
+ width: 100%;
12
+ padding: 14px 20px;
13
+ border: none;
14
+ border-radius: var(--Radius-3, 6px);
15
+ background: var(--neutral-alpha-2, rgba(216, 244, 246, 0.04));
16
+ cursor: pointer;
17
+ box-sizing: border-box;
18
+ box-shadow: none;
19
+ outline: none;
20
+ transition: background-color 0.18s ease, color 0.18s ease;
21
+ justify-content: flex-start;
22
+
23
+ &::before,
24
+ &::after {
25
+ box-shadow: none;
26
+ outline: none;
27
+ border: none;
28
+ background: none;
29
+ }
30
+
31
+ &:hover {
32
+ background: var(--neutral-alpha-3, rgba(221, 234, 248, 0.08));
33
+ }
34
+
35
+ &:focus-visible {
36
+ outline: 2px solid var(--neutral-alpha-6);
37
+ outline-offset: 2px;
38
+ }
39
+
40
+ &:where([data-state='checked']) {
41
+ border-radius: var(--Radius-3-max, 6px);
42
+ background: var(--neutral-alpha-4, rgba(211, 237, 248, 0.11));
43
+
44
+ .icon {
45
+ color: var(--neutral-alpha-12);
46
+ }
47
+
48
+ &::after {
49
+ outline: none;
50
+ }
51
+ }
52
+
53
+ &:where([data-state='checked']):hover {
54
+ border-radius: var(--Radius-3-max, 6px);
55
+ background: var(--neutral-alpha-5, rgba(217, 237, 254, 0.15));
56
+ }
57
+ }
58
+
59
+ .RadioCardsContent {
60
+ display: flex;
61
+ align-items: center;
62
+ gap: 12px;
63
+ }
64
+
65
+ .icon {
66
+ color: var(--neutral-alpha-10);
67
+ display: inline-flex;
68
+ align-items: center;
69
+ justify-content: center;
70
+ flex-shrink: 0;
71
+
72
+ svg {
73
+ width: 16px;
74
+ height: 16px;
75
+ }
76
+ }
77
+
78
+ .text {
79
+ color: var(--neutral-alpha-12);
80
+ }