@moises.ai/design-system 3.4.5 → 3.5.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 (600) hide show
  1. package/dist/index.js +2490 -2339
  2. package/package.json +3 -2
  3. package/src/Introduction.mdx +56 -0
  4. package/src/colors/custom-styles.css +293 -0
  5. package/src/components/AdditionalItems/AdditionalItems.jsx +43 -0
  6. package/src/components/AdditionalItems/AdditionalItems.module.css +76 -0
  7. package/src/components/AdditionalItems/AdditionalItems.stories.jsx +32 -0
  8. package/src/components/BannerAnnouncement/BannerAnnouncement.jsx +77 -0
  9. package/src/components/BannerAnnouncement/BannerAnnouncement.module.css +58 -0
  10. package/src/components/BannerAnnouncement/BannerAnnouncement.stories.jsx +120 -0
  11. package/src/components/Button/Button.jsx +45 -0
  12. package/src/components/Button/Button.module.css +288 -0
  13. package/src/components/Button/Button.stories.jsx +269 -0
  14. package/src/components/Callout/Callout.jsx +47 -0
  15. package/src/components/Callout/Callout.module.css +56 -0
  16. package/src/components/Callout/Callout.stories.jsx +296 -0
  17. package/src/components/Card/Card.jsx +46 -0
  18. package/src/components/Card/Card.module.css +89 -0
  19. package/src/components/Card/Card.stories.jsx +116 -0
  20. package/src/components/Checkbox/Checkbox.jsx +36 -0
  21. package/src/components/Checkbox/Checkbox.module.css +136 -0
  22. package/src/components/Checkbox/Checkbox.stories.jsx +64 -0
  23. package/src/components/CigarBar/CigarBar.jsx +73 -0
  24. package/src/components/CigarBar/CigarBar.module.css +57 -0
  25. package/src/components/CigarBar/CigarBar.stories.jsx +66 -0
  26. package/src/components/ContextMenu/ContextMenu.jsx +56 -0
  27. package/src/components/ContextMenu/ContextMenu.stories.jsx +657 -0
  28. package/src/components/Countdown/Countdown.jsx +97 -0
  29. package/src/components/Countdown/Countdown.module.css +206 -0
  30. package/src/components/Countdown/Countdown.stories.jsx +108 -0
  31. package/src/components/DataTable/DataTable.jsx +300 -0
  32. package/src/components/DataTable/DataTable.module.css +372 -0
  33. package/src/components/DataTable/DataTable.stories.jsx +365 -0
  34. package/src/components/DropdownButton/DropdownButton.jsx +124 -0
  35. package/src/components/DropdownButton/DropdownButton.module.css +102 -0
  36. package/src/components/DropdownButton/DropdownButton.stories.jsx +267 -0
  37. package/src/components/DropdownMenu/DropdownMenu.jsx +102 -0
  38. package/src/components/DropdownMenu/DropdownMenu.stories.jsx +645 -0
  39. package/src/components/FloatingBanner/FloatingBanner.jsx +87 -0
  40. package/src/components/FloatingBanner/FloatingBanner.module.css +92 -0
  41. package/src/components/FloatingBanner/FloatingBanner.stories.jsx +115 -0
  42. package/src/components/FooterPanel/FooterPanel.jsx +56 -0
  43. package/src/components/FooterPanel/FooterPanel.stories.jsx +289 -0
  44. package/src/components/GenerationSourceCallout/GenerationSourceCallout.jsx +53 -0
  45. package/src/components/GenerationSourceCallout/GenerationSourceCallout.module.css +98 -0
  46. package/src/components/GroupButtons/GroupButtons.jsx +97 -0
  47. package/src/components/GroupButtons/GroupButtons.module.css +8 -0
  48. package/src/components/GroupButtons/GroupButtons.stories.jsx +301 -0
  49. package/src/components/HeaderPanel/HeaderPanel.jsx +115 -0
  50. package/src/components/HeaderPanel/HeaderPanel.stories.jsx +389 -0
  51. package/src/components/HorizontalVolume/HorizontalVolume.jsx +157 -0
  52. package/src/components/HorizontalVolume/HorizontalVolume.module.css +123 -0
  53. package/src/components/HorizontalVolume/HorizontalVolume.stories.jsx +109 -0
  54. package/src/components/IconButton/IconButton.jsx +47 -0
  55. package/src/components/IconButton/IconButton.module.css +302 -0
  56. package/src/components/IconButton/IconButton.stories.jsx +532 -0
  57. package/src/components/InstrumentSelector/InstrumentSelector.jsx +61 -0
  58. package/src/components/InstrumentSelector/InstrumentSelector.module.css +80 -0
  59. package/src/components/InstrumentSelector/InstrumentSelector.stories.jsx +33 -0
  60. package/src/components/Knob/Knob.jsx +173 -0
  61. package/src/components/Knob/Knob.module.css +70 -0
  62. package/src/components/Knob/Knob.stories.jsx +289 -0
  63. package/src/components/Knob/constants.js +38 -0
  64. package/src/components/Knob/useKnob.js +117 -0
  65. package/src/components/Knob/utils.js +117 -0
  66. package/src/components/ListCards/CardDetails.stories.jsx +484 -0
  67. package/src/components/ListCards/ListCards.jsx +297 -0
  68. package/src/components/ListCards/ListCards.module.css +234 -0
  69. package/src/components/ListCards/ListCards.stories.jsx +386 -0
  70. package/src/components/LokalisePoc/LokalisePoc.jsx +7 -0
  71. package/src/components/LokalisePoc/LokalisePoc.stories.jsx +63 -0
  72. package/src/components/MessageWithAction/MessageWithAction.jsx +54 -0
  73. package/src/components/MessageWithAction/MessageWithAction.module.css +16 -0
  74. package/src/components/MessageWithAction/MessageWithAction.stories.jsx +280 -0
  75. package/src/components/MetronomeForm/MetronomeForm.jsx +74 -0
  76. package/src/components/MetronomeForm/MetronomeForm.stories.jsx +137 -0
  77. package/src/components/MultiSelect/MultiSelect.jsx +129 -0
  78. package/src/components/MultiSelect/MultiSelect.module.css +105 -0
  79. package/src/components/MultiSelect/MultiSelect.stories.jsx +296 -0
  80. package/src/components/MultiSelectCards/MultiSelectCards.jsx +96 -0
  81. package/src/components/MultiSelectCards/MultiSelectCards.module.css +60 -0
  82. package/src/components/MultiSelectCards/MultiSelectCards.stories.jsx +439 -0
  83. package/src/components/PanControl/PanControl.jsx +227 -0
  84. package/src/components/PanControl/PanControl.module.css +71 -0
  85. package/src/components/PanControl/PanControl.stories.jsx +100 -0
  86. package/src/components/ProductsBrandPattern/Patterns/aiStudio.png +0 -0
  87. package/src/components/ProductsBrandPattern/Patterns/mastering.png +0 -0
  88. package/src/components/ProductsBrandPattern/Patterns/product.png +0 -0
  89. package/src/components/ProductsBrandPattern/Patterns/stemSeparation.png +0 -0
  90. package/src/components/ProductsBrandPattern/Patterns/voiceStudio.png +0 -0
  91. package/src/components/ProductsBrandPattern/ProductsBrandPattern.jsx +36 -0
  92. package/src/components/ProductsBrandPattern/ProductsBrandPattern.stories.jsx +47 -0
  93. package/src/components/ProductsList/ProductsList.jsx +54 -0
  94. package/src/components/ProductsList/ProductsList.module.css +81 -0
  95. package/src/components/ProductsList/ProductsList.stories.jsx +69 -0
  96. package/src/components/ProfileMenu/MenuTrigger.jsx +45 -0
  97. package/src/components/ProfileMenu/ProfileMenu.jsx +66 -0
  98. package/src/components/ProfileMenu/ProfileMenu.module.css +101 -0
  99. package/src/components/ProfileMenu/ProfileMenu.stories.jsx +44 -0
  100. package/src/components/ProjectsList/ProjectsList.jsx +132 -0
  101. package/src/components/ProjectsList/ProjectsList.module.css +71 -0
  102. package/src/components/ProjectsList/ProjectsList.stories.jsx +25 -0
  103. package/src/components/ProjectsList/utils-stories.js +186 -0
  104. package/src/components/ProjectsList/utils.jsx +70 -0
  105. package/src/components/RadioCardsGroup/RadioCardsGroup.jsx +35 -0
  106. package/src/components/RadioCardsGroup/RadioCardsGroup.module.css +66 -0
  107. package/src/components/RadioCardsGroup/RadioCardsGroup.stories.jsx +89 -0
  108. package/src/components/Rating/Rating.jsx +154 -0
  109. package/src/components/Rating/Rating.module.css +70 -0
  110. package/src/components/Rating/Rating.stories.jsx +215 -0
  111. package/src/components/RecordingForm/RecordingForm.jsx +142 -0
  112. package/src/components/RecordingForm/RecordingForm.module.css +49 -0
  113. package/src/components/RecordingForm/RecordingForm.stories.jsx +319 -0
  114. package/src/components/SectionExpander/SectionExpander.jsx +53 -0
  115. package/src/components/SectionExpander/SectionExpander.module.css +46 -0
  116. package/src/components/SectionExpander/SectionExpander.stories.jsx +48 -0
  117. package/src/components/SegmentedControl/SegmentedControl.jsx +48 -0
  118. package/src/components/SegmentedControl/SegmentedControl.stories.jsx +133 -0
  119. package/src/components/SegmentedControl/SegmentedControl.styles.css +55 -0
  120. package/src/components/Select/Select.jsx +132 -0
  121. package/src/components/Select/Select.module.css +76 -0
  122. package/src/components/Select/Select.stories.jsx +294 -0
  123. package/src/components/SetlistList/SetlistList.jsx +338 -0
  124. package/src/components/SetlistList/SetlistList.module.css +246 -0
  125. package/src/components/SetlistList/SetlistList.stories.jsx +121 -0
  126. package/src/components/Shell/Shell.jsx +75 -0
  127. package/src/components/Shell/Shell.module.css +3 -0
  128. package/src/components/Shell/Shell.stories.jsx +354 -0
  129. package/src/components/Sidebar/Sidebar.jsx +173 -0
  130. package/src/components/Sidebar/Sidebar.module.css +267 -0
  131. package/src/components/Sidebar/Sidebar.stories.jsx +247 -0
  132. package/src/components/Sidebar/SidebarSection/SidebarSection.jsx +20 -0
  133. package/src/components/Sidebar/SidebarSection/SidebarSection.module.css +20 -0
  134. package/src/components/Slider/Slider.jsx +114 -0
  135. package/src/components/Slider/Slider.module.css +159 -0
  136. package/src/components/Slider/Slider.stories.jsx +199 -0
  137. package/src/components/StemGenerationForm/BesideFooter/BesideFooter.jsx +107 -0
  138. package/src/components/StemGenerationForm/BesideFooter/BesideFooter.module.css +4 -0
  139. package/src/components/StemGenerationForm/Concurrency/Concurrency.jsx +54 -0
  140. package/src/components/StemGenerationForm/Concurrency/Concurrency.module.css +26 -0
  141. package/src/components/StemGenerationForm/CreateFromPreset/CreateFromPreset.jsx +44 -0
  142. package/src/components/StemGenerationForm/CreateNew/CreateNew.jsx +107 -0
  143. package/src/components/StemGenerationForm/CreativeFreedomSection/CreativeFreedomSection.jsx +185 -0
  144. package/src/components/StemGenerationForm/CreativeFreedomSection/CreativeFreedomSection.module.css +8 -0
  145. package/src/components/StemGenerationForm/GenerationStatus/GenerationStatus.jsx +91 -0
  146. package/src/components/StemGenerationForm/StemGenerationForm.jsx +342 -0
  147. package/src/components/StemGenerationForm/StemGenerationForm.stories.jsx +703 -0
  148. package/src/components/StemGenerationForm/utils/constants.js +26 -0
  149. package/src/components/StemGenerationForm/utils/formatFileInfo.js +20 -0
  150. package/src/components/StemGenerationForm/utils/getInstrumentDescription.js +27 -0
  151. package/src/components/StemGenerationForm/utils/getLocalizedGenerationInstruments.js +31 -0
  152. package/src/components/StemGenerationForm/utils/index.js +13 -0
  153. package/src/components/StemGenerationForm/utils/secondsToTime.js +15 -0
  154. package/src/components/StemSeparationForm/GenerationStatus/GenerationStatus.jsx +70 -0
  155. package/src/components/StemSeparationForm/StemSeparationForm.jsx +354 -0
  156. package/src/components/StemSeparationForm/StemSeparationForm.module.css +0 -0
  157. package/src/components/StemSeparationForm/StemSeparationForm.stories.jsx +221 -0
  158. package/src/components/TempoControlsForm/AutoDetect/AutoDetect.jsx +114 -0
  159. package/src/components/TempoControlsForm/TempoControlsForm.jsx +59 -0
  160. package/src/components/TempoControlsForm/TempoControlsForm.stories.jsx +228 -0
  161. package/src/components/TempoControlsForm/TempoForm/TempoForm.jsx +94 -0
  162. package/src/components/TempoControlsForm/TempoFormInput/TempoFormInput.jsx +136 -0
  163. package/src/components/TempoControlsForm/TempoFormInput/TempoFormInput.module.css +19 -0
  164. package/src/components/TempoControlsForm/constants.js +77 -0
  165. package/src/components/TempoControlsForm/utils/formatDateTime.js +50 -0
  166. package/src/components/TempoControlsForm/utils/getTempoMarking.js +6 -0
  167. package/src/components/Text/Text.jsx +19 -0
  168. package/src/components/Text/Text.module.css +5 -0
  169. package/src/components/Text/Text.stories.jsx +117 -0
  170. package/src/components/TextArea/TextArea.jsx +53 -0
  171. package/src/components/TextArea/TextArea.module.css +35 -0
  172. package/src/components/TextArea/TextArea.stories.jsx +140 -0
  173. package/src/components/TextField/TextField.jsx +61 -0
  174. package/src/components/TextField/TextField.module.css +41 -0
  175. package/src/components/TextField/TextField.stories.jsx +243 -0
  176. package/src/components/ThumbnailPicker/ThumbColors/ThumbColors.js +101 -0
  177. package/src/components/ThumbnailPicker/ThumbGraphics/ThumbGraphics.js +90 -0
  178. package/src/components/ThumbnailPicker/ThumbGraphics/circles01.png +0 -0
  179. package/src/components/ThumbnailPicker/ThumbGraphics/circles02.png +0 -0
  180. package/src/components/ThumbnailPicker/ThumbGraphics/circles03.png +0 -0
  181. package/src/components/ThumbnailPicker/ThumbGraphics/circles04.png +0 -0
  182. package/src/components/ThumbnailPicker/ThumbGraphics/circles05.png +0 -0
  183. package/src/components/ThumbnailPicker/ThumbGraphics/circles06.png +0 -0
  184. package/src/components/ThumbnailPicker/ThumbGraphics/lines01.png +0 -0
  185. package/src/components/ThumbnailPicker/ThumbGraphics/lines02.png +0 -0
  186. package/src/components/ThumbnailPicker/ThumbGraphics/lines03.png +0 -0
  187. package/src/components/ThumbnailPicker/ThumbGraphics/lines04.png +0 -0
  188. package/src/components/ThumbnailPicker/ThumbGraphics/lines05.png +0 -0
  189. package/src/components/ThumbnailPicker/ThumbGraphics/lines06.png +0 -0
  190. package/src/components/ThumbnailPicker/ThumbGraphics/patterns01.png +0 -0
  191. package/src/components/ThumbnailPicker/ThumbGraphics/patterns02.png +0 -0
  192. package/src/components/ThumbnailPicker/ThumbGraphics/patterns03.png +0 -0
  193. package/src/components/ThumbnailPicker/ThumbGraphics/patterns04.png +0 -0
  194. package/src/components/ThumbnailPicker/ThumbGraphics/shapes01.png +0 -0
  195. package/src/components/ThumbnailPicker/ThumbGraphics/shapes02.png +0 -0
  196. package/src/components/ThumbnailPicker/ThumbGraphics/shapes03.png +0 -0
  197. package/src/components/ThumbnailPicker/ThumbGraphics/shapes04.png +0 -0
  198. package/src/components/ThumbnailPicker/ThumbGraphics/shapes05.png +0 -0
  199. package/src/components/ThumbnailPicker/ThumbGraphics/shapes06.png +0 -0
  200. package/src/components/ThumbnailPicker/ThumbGraphics/shapes07.png +0 -0
  201. package/src/components/ThumbnailPicker/ThumbGraphics/shapes08.png +0 -0
  202. package/src/components/ThumbnailPicker/ThumbGraphics/shapes09.png +0 -0
  203. package/src/components/ThumbnailPicker/ThumbGraphics/synth01.png +0 -0
  204. package/src/components/ThumbnailPicker/ThumbGraphics/synth02.png +0 -0
  205. package/src/components/ThumbnailPicker/ThumbGraphics/synth03.png +0 -0
  206. package/src/components/ThumbnailPicker/ThumbGraphics/synth04.png +0 -0
  207. package/src/components/ThumbnailPicker/ThumbGraphics/synth05.png +0 -0
  208. package/src/components/ThumbnailPicker/ThumbGraphics/waves01.png +0 -0
  209. package/src/components/ThumbnailPicker/ThumbGraphics/waves02.png +0 -0
  210. package/src/components/ThumbnailPicker/ThumbGraphics/waves03.png +0 -0
  211. package/src/components/ThumbnailPicker/ThumbGraphics/waves04.png +0 -0
  212. package/src/components/ThumbnailPicker/ThumbnailPicker.jsx +67 -0
  213. package/src/components/ThumbnailPicker/ThumbnailPicker.module.css +0 -0
  214. package/src/components/ThumbnailPicker/ThumbnailPicker.stories.jsx +406 -0
  215. package/src/components/ThumbnailPicker/getStyleFromID.js +31 -0
  216. package/src/components/TooltipWithInfoIcon/TooltipWithInfoIcon.jsx +18 -0
  217. package/src/components/TooltipWithInfoIcon/TooltipWithInfoIcon.module.css +6 -0
  218. package/src/components/TooltipWithInfoIcon/TooltipWithInfoIcon.stories.jsx +28 -0
  219. package/src/components/TrackControlButton/TrackControlButton.jsx +28 -0
  220. package/src/components/TrackControlButton/TrackControlButton.module.css +32 -0
  221. package/src/components/TrackControlButton/TrackControlButton.stories.jsx +47 -0
  222. package/src/components/TrackControlButton/index.js +1 -0
  223. package/src/components/TrackHeader/TrackHeader.jsx +143 -0
  224. package/src/components/TrackHeader/TrackHeader.module.css +194 -0
  225. package/src/components/TrackHeader/TrackHeader.stories.jsx +212 -0
  226. package/src/components/TrackHeader/TrackHeaderOptions/TrackHeaderOptions.jsx +18 -0
  227. package/src/components/TrackHeader/TrackHeaderOptions/TrackHeaderOptions.module.css +8 -0
  228. package/src/components/TrackHeader/TrackHeaderOptions/index.js +1 -0
  229. package/src/components/VoiceConversionForm/BesideFooter/BesideFooter.jsx +74 -0
  230. package/src/components/VoiceConversionForm/ClickableAvatar/ClickableAvatar.jsx +40 -0
  231. package/src/components/VoiceConversionForm/ClickableAvatar/ClickableAvatar.module.css +21 -0
  232. package/src/components/VoiceConversionForm/Concurrency/Concurrency.jsx +53 -0
  233. package/src/components/VoiceConversionForm/Concurrency/Concurrency.module.css +26 -0
  234. package/src/components/VoiceConversionForm/GenerationStatus/GenerationStatus.jsx +49 -0
  235. package/src/components/VoiceConversionForm/VoiceConversionForm.jsx +231 -0
  236. package/src/components/VoiceConversionForm/VoiceConversionForm.module.css +9 -0
  237. package/src/components/VoiceConversionForm/VoiceConversionForm.stories.jsx +582 -0
  238. package/src/components/VoiceConversionForm/VoiceDetails/VoiceDetails.jsx +93 -0
  239. package/src/components/VoiceConversionForm/VoiceDetails/VoiceDetails.module.css +44 -0
  240. package/src/components/VoiceConversionForm/VoiceList/VoiceList.jsx +84 -0
  241. package/src/components/VoiceConversionForm/VoiceList/VoiceList.module.css +11 -0
  242. package/src/components/VoiceConversionForm/Waveform/Waveform.jsx +262 -0
  243. package/src/components/VoiceConversionForm/Waveform/Waveform.module.css +36 -0
  244. package/src/components/theme/Theme.jsx +16 -0
  245. package/src/components/theme/Theme.stories.jsx +59 -0
  246. package/src/icons/AbbeyRoadIcon.jsx +117 -0
  247. package/src/icons/AccessibilityIcon.jsx +33 -0
  248. package/src/icons/AcousticGuitarIcon.jsx +16 -0
  249. package/src/icons/AddIcon.jsx +18 -0
  250. package/src/icons/AddLyricsIcon.jsx +25 -0
  251. package/src/icons/AddRoundIcon.jsx +26 -0
  252. package/src/icons/AirplayIcon.jsx +26 -0
  253. package/src/icons/AlertIcon.jsx +28 -0
  254. package/src/icons/AppIcon.jsx +18 -0
  255. package/src/icons/ArVrIcon.jsx +21 -0
  256. package/src/icons/ArrowDownIcon.jsx +26 -0
  257. package/src/icons/ArrowDownloadIcon.jsx +26 -0
  258. package/src/icons/ArrowLeftIcon.jsx +26 -0
  259. package/src/icons/ArrowRightIcon.jsx +26 -0
  260. package/src/icons/ArrowUpIcon.jsx +26 -0
  261. package/src/icons/ArrowsHorizontalIcon.jsx +26 -0
  262. package/src/icons/ArrowsVerticalIcon.jsx +26 -0
  263. package/src/icons/AtomIcon.jsx +32 -0
  264. package/src/icons/AttachmentIcon.jsx +26 -0
  265. package/src/icons/AudioAdjustmentsIcon.jsx +26 -0
  266. package/src/icons/AudioFileIcon.jsx +26 -0
  267. package/src/icons/AudioFilesIcon.jsx +26 -0
  268. package/src/icons/AutoplayIcon.jsx +26 -0
  269. package/src/icons/BackwardIcon.jsx +18 -0
  270. package/src/icons/BarsIcon.jsx +27 -0
  271. package/src/icons/BassIcon.jsx +39 -0
  272. package/src/icons/BoldIcon.jsx +21 -0
  273. package/src/icons/BookIcon.jsx +21 -0
  274. package/src/icons/BookmarkIcon.jsx +24 -0
  275. package/src/icons/BoxIcon.jsx +20 -0
  276. package/src/icons/BriefcaseIcon.jsx +26 -0
  277. package/src/icons/CalendarIcon.jsx +26 -0
  278. package/src/icons/CameraFlip2Icon.jsx +26 -0
  279. package/src/icons/CameraFlip3Icon.jsx +26 -0
  280. package/src/icons/CameraFlipIcon.jsx +26 -0
  281. package/src/icons/CameraIcon.jsx +33 -0
  282. package/src/icons/CameraRollIcon.jsx +31 -0
  283. package/src/icons/CarIcon.jsx +18 -0
  284. package/src/icons/CartIcon.jsx +28 -0
  285. package/src/icons/CassetteIcon.jsx +26 -0
  286. package/src/icons/CastIcon.jsx +20 -0
  287. package/src/icons/CdIcon.jsx +19 -0
  288. package/src/icons/CheckboxCicleIcon.jsx +26 -0
  289. package/src/icons/CheckboxFillIcon.jsx +25 -0
  290. package/src/icons/CheckboxOffIcon.jsx +25 -0
  291. package/src/icons/CheckboxOnIcon.jsx +25 -0
  292. package/src/icons/ChevronDownIcon.jsx +26 -0
  293. package/src/icons/ChevronLeftIcon.jsx +26 -0
  294. package/src/icons/ChevronRightIcon.jsx +26 -0
  295. package/src/icons/ChevronUpIcon.jsx +26 -0
  296. package/src/icons/ChordGrid2Icon.jsx +26 -0
  297. package/src/icons/ChordGridIcon.jsx +26 -0
  298. package/src/icons/ChordSequenceIcon.jsx +26 -0
  299. package/src/icons/Chords2Icon.jsx +25 -0
  300. package/src/icons/Chords3Icon.jsx +24 -0
  301. package/src/icons/ChordsDetection2Icon.jsx +31 -0
  302. package/src/icons/ChordsDetectionIcon.jsx +31 -0
  303. package/src/icons/ChordsIcon.jsx +25 -0
  304. package/src/icons/ClipIcon.jsx +27 -0
  305. package/src/icons/ClipboardIcon.jsx +23 -0
  306. package/src/icons/CloseIcon.jsx +27 -0
  307. package/src/icons/Cloud2Icon.jsx +24 -0
  308. package/src/icons/Cloud3Icon.jsx +24 -0
  309. package/src/icons/CloudDownload2Icon.jsx +26 -0
  310. package/src/icons/CloudDownloadErrorIcon.jsx +26 -0
  311. package/src/icons/CloudDownloadGradientIcon.jsx +44 -0
  312. package/src/icons/CloudDownloadIcon.jsx +26 -0
  313. package/src/icons/CloudIcon.jsx +20 -0
  314. package/src/icons/CloudUploadIcon.jsx +26 -0
  315. package/src/icons/CodeIcon.jsx +28 -0
  316. package/src/icons/CollectionsIcon.jsx +26 -0
  317. package/src/icons/CompressorIcon.jsx +25 -0
  318. package/src/icons/ComputerIcon.jsx +26 -0
  319. package/src/icons/CopilotIcon.jsx +26 -0
  320. package/src/icons/CountInIcon.jsx +23 -0
  321. package/src/icons/CountdownIcon.jsx +33 -0
  322. package/src/icons/CowbellIcon.jsx +25 -0
  323. package/src/icons/CropIcon.jsx +27 -0
  324. package/src/icons/CrownIcon.jsx +21 -0
  325. package/src/icons/CueBackIcon.jsx +25 -0
  326. package/src/icons/CueIcon.jsx +20 -0
  327. package/src/icons/CymbalsIcon.jsx +26 -0
  328. package/src/icons/DatabaseIcon.jsx +26 -0
  329. package/src/icons/DelayIcon.jsx +20 -0
  330. package/src/icons/DenoiserIcon.jsx +23 -0
  331. package/src/icons/DevicesIcon.jsx +26 -0
  332. package/src/icons/DialogueIcon.jsx +33 -0
  333. package/src/icons/DojoIcon.jsx +21 -0
  334. package/src/icons/DotsVertical2Icon.jsx +43 -0
  335. package/src/icons/DotsVerticalIcon.jsx +47 -0
  336. package/src/icons/DownloadApp2Icon.jsx +26 -0
  337. package/src/icons/DownloadAppIcon.jsx +23 -0
  338. package/src/icons/Drums2Icon.jsx +25 -0
  339. package/src/icons/DrumsIcon.jsx +18 -0
  340. package/src/icons/EditIcon.jsx +20 -0
  341. package/src/icons/EffectsIcon.jsx +25 -0
  342. package/src/icons/ElectricGuitarIcon.jsx +54 -0
  343. package/src/icons/EqIcon.jsx +20 -0
  344. package/src/icons/FeaturesIcon.jsx +24 -0
  345. package/src/icons/FileIcon.jsx +21 -0
  346. package/src/icons/FileNewIcon.jsx +26 -0
  347. package/src/icons/Filter2Icon.jsx +26 -0
  348. package/src/icons/FilterIcon.jsx +26 -0
  349. package/src/icons/FireIcon.jsx +21 -0
  350. package/src/icons/FlagIcon.jsx +21 -0
  351. package/src/icons/FlashGradientIcon.jsx +39 -0
  352. package/src/icons/FlashIcon.jsx +21 -0
  353. package/src/icons/FlatAndSharpIcon.jsx +25 -0
  354. package/src/icons/FlatIcon.jsx +20 -0
  355. package/src/icons/FolderIcon.jsx +32 -0
  356. package/src/icons/FolderPlusIcon.jsx +26 -0
  357. package/src/icons/ForwardIcon.jsx +18 -0
  358. package/src/icons/GiftIcon.jsx +21 -0
  359. package/src/icons/GlobeIcon.jsx +22 -0
  360. package/src/icons/GoalsIcon.jsx +25 -0
  361. package/src/icons/GraphIcon.jsx +21 -0
  362. package/src/icons/GuitarAmpIcon.jsx +41 -0
  363. package/src/icons/HamburgerMenu2Icon.jsx +26 -0
  364. package/src/icons/HamburgerMenu3Icon.jsx +26 -0
  365. package/src/icons/HandbagIcon.jsx +26 -0
  366. package/src/icons/HeadphonesIcon.jsx +26 -0
  367. package/src/icons/HeadphonesLeftIcon.jsx +30 -0
  368. package/src/icons/HeadphonesRightIcon.jsx +30 -0
  369. package/src/icons/HiFiGradientIcon.jsx +36 -0
  370. package/src/icons/HiFiIcon.jsx +112 -0
  371. package/src/icons/HiHatIcon.jsx +21 -0
  372. package/src/icons/HomeIcon.jsx +18 -0
  373. package/src/icons/Icons.stories.jsx +154 -0
  374. package/src/icons/ImageGalleryIcon.jsx +25 -0
  375. package/src/icons/ImageIcon.jsx +21 -0
  376. package/src/icons/Info2Icon.jsx +18 -0
  377. package/src/icons/InfoIcon.jsx +20 -0
  378. package/src/icons/InternetSignalIcon.jsx +26 -0
  379. package/src/icons/IpadIcon.jsx +20 -0
  380. package/src/icons/IsolateDrumsGradientIcon.jsx +41 -0
  381. package/src/icons/IsolateDrumsIcon.jsx +23 -0
  382. package/src/icons/KaraokeIcon.jsx +23 -0
  383. package/src/icons/KaraokeMicIcon.jsx +23 -0
  384. package/src/icons/KeyDetectionIcon.jsx +25 -0
  385. package/src/icons/KeyboardIcon.jsx +25 -0
  386. package/src/icons/KeysIcon.jsx +21 -0
  387. package/src/icons/KickdrumIcon.jsx +30 -0
  388. package/src/icons/Knob2Icon.jsx +27 -0
  389. package/src/icons/Knob3Icon.jsx +27 -0
  390. package/src/icons/KnobIcon.jsx +28 -0
  391. package/src/icons/LabIcon.jsx +21 -0
  392. package/src/icons/LaptopIcon.jsx +25 -0
  393. package/src/icons/LibraryIcon.jsx +31 -0
  394. package/src/icons/LinkIcon.jsx +21 -0
  395. package/src/icons/ListCheckIcon.jsx +26 -0
  396. package/src/icons/ListIcon.jsx +21 -0
  397. package/src/icons/LivePerformanceIcon.jsx +23 -0
  398. package/src/icons/LockIcon.jsx +28 -0
  399. package/src/icons/LogInIcon.jsx +21 -0
  400. package/src/icons/LogOutIcon.jsx +26 -0
  401. package/src/icons/LoopIcon.jsx +29 -0
  402. package/src/icons/LoopSection2Icon.jsx +26 -0
  403. package/src/icons/LoopSection3Icon.jsx +26 -0
  404. package/src/icons/LoopSectionIcon.jsx +26 -0
  405. package/src/icons/LyricsIcon.jsx +33 -0
  406. package/src/icons/MaracasIcon.jsx +24 -0
  407. package/src/icons/MasteringIcon.jsx +37 -0
  408. package/src/icons/Maximize2Icon.jsx +26 -0
  409. package/src/icons/MaximizeIcon.jsx +26 -0
  410. package/src/icons/MetronomeIcon.jsx +23 -0
  411. package/src/icons/Minimize2Icon.jsx +26 -0
  412. package/src/icons/MinimizeIcon.jsx +26 -0
  413. package/src/icons/Mixer2Icon.jsx +25 -0
  414. package/src/icons/MixerIcon.jsx +20 -0
  415. package/src/icons/MoisesIcon.jsx +47 -0
  416. package/src/icons/MoisesLogoIcon.jsx +43 -0
  417. package/src/icons/MoneyIcon.jsx +20 -0
  418. package/src/icons/MonoIcon.jsx +18 -0
  419. package/src/icons/MoonIcon.jsx +21 -0
  420. package/src/icons/More2Icon.jsx +44 -0
  421. package/src/icons/MoreIcon.jsx +51 -0
  422. package/src/icons/MultipleUsersIcon.jsx +26 -0
  423. package/src/icons/MusicAddIcon.jsx +26 -0
  424. package/src/icons/MusicControlIcon.jsx +23 -0
  425. package/src/icons/MusicDevice2Icon.jsx +23 -0
  426. package/src/icons/MusicDeviceIcon.jsx +25 -0
  427. package/src/icons/MusicIcon.jsx +26 -0
  428. package/src/icons/MusicListIcon.jsx +26 -0
  429. package/src/icons/MusicLoverIcon.jsx +23 -0
  430. package/src/icons/MusicNoteIcon.jsx +21 -0
  431. package/src/icons/MusicNotesIcon.jsx +26 -0
  432. package/src/icons/MusicRemoveIcon.jsx +26 -0
  433. package/src/icons/NewCollectionsIcon.jsx +25 -0
  434. package/src/icons/NextIcon.jsx +20 -0
  435. package/src/icons/NoAcousticGuitarIcon.jsx +23 -0
  436. package/src/icons/NoBassIcon.jsx +23 -0
  437. package/src/icons/NoChords2Icon.jsx +25 -0
  438. package/src/icons/NoChordsDetectionIcon.jsx +31 -0
  439. package/src/icons/NoCloud3Icon.jsx +23 -0
  440. package/src/icons/NoComputerIcon.jsx +26 -0
  441. package/src/icons/NoCymbalsIcon.jsx +26 -0
  442. package/src/icons/NoDialogueIcon.jsx +26 -0
  443. package/src/icons/NoDrums2Icon.jsx +23 -0
  444. package/src/icons/NoDrumsIcon.jsx +23 -0
  445. package/src/icons/NoElectricGuitarIcon.jsx +23 -0
  446. package/src/icons/NoFileIcon.jsx +26 -0
  447. package/src/icons/NoHeadphonesIcon.jsx +26 -0
  448. package/src/icons/NoHiHatIcon.jsx +26 -0
  449. package/src/icons/NoInternetSignalIcon.jsx +33 -0
  450. package/src/icons/NoKeysIcon.jsx +38 -0
  451. package/src/icons/NoKickdrumIcon.jsx +23 -0
  452. package/src/icons/NoLoopSection2Icon.jsx +23 -0
  453. package/src/icons/NoLoopSectionIcon.jsx +26 -0
  454. package/src/icons/NoLyricsIcon.jsx +25 -0
  455. package/src/icons/NoMaracasIcon.jsx +23 -0
  456. package/src/icons/NoMetronomeIcon.jsx +23 -0
  457. package/src/icons/NoMoneyIcon.jsx +26 -0
  458. package/src/icons/NoMusicIcon.jsx +32 -0
  459. package/src/icons/NoMusicNoteIcon.jsx +25 -0
  460. package/src/icons/NoPianoIcon.jsx +33 -0
  461. package/src/icons/NoSearchIcon.jsx +26 -0
  462. package/src/icons/NoSectionsIcon.jsx +25 -0
  463. package/src/icons/NoSnareIcon.jsx +26 -0
  464. package/src/icons/NoSoundEffectsIcon.jsx +23 -0
  465. package/src/icons/NoSoundIcon.jsx +23 -0
  466. package/src/icons/NoSoundtrackIcon.jsx +30 -0
  467. package/src/icons/NoSpliterIcon.jsx +23 -0
  468. package/src/icons/NoStringsIcon.jsx +23 -0
  469. package/src/icons/NoTomsIcon.jsx +23 -0
  470. package/src/icons/NoUkuleleIcon.jsx +26 -0
  471. package/src/icons/NoVideoIcon.jsx +26 -0
  472. package/src/icons/NoVocalsIcon.jsx +23 -0
  473. package/src/icons/NoVolume2Icon.jsx +26 -0
  474. package/src/icons/NoVolumeIcon.jsx +26 -0
  475. package/src/icons/NoWoodwindBrassIcon.jsx +23 -0
  476. package/src/icons/NotificationsIcon.jsx +26 -0
  477. package/src/icons/OffloadDeviceIcon.jsx +23 -0
  478. package/src/icons/PauseFilledIcon.jsx +27 -0
  479. package/src/icons/PauseIcon.jsx +22 -0
  480. package/src/icons/PianoIcon.jsx +25 -0
  481. package/src/icons/PinIcon.jsx +20 -0
  482. package/src/icons/Pip2Icon.jsx +18 -0
  483. package/src/icons/PipIcon.jsx +21 -0
  484. package/src/icons/PitchCorrectionIcon.jsx +25 -0
  485. package/src/icons/PitchIcon.jsx +21 -0
  486. package/src/icons/PlayAllIcon.jsx +25 -0
  487. package/src/icons/PlayBackSpeedIcon.jsx +37 -0
  488. package/src/icons/PlayCircleIcon.jsx +44 -0
  489. package/src/icons/PlayIcon.jsx +20 -0
  490. package/src/icons/PlayOnRepeatIcon.jsx +26 -0
  491. package/src/icons/PlusIcon.jsx +21 -0
  492. package/src/icons/PreferencesIcon.jsx +25 -0
  493. package/src/icons/PreviousIcon.jsx +25 -0
  494. package/src/icons/PriceTagIcon.jsx +26 -0
  495. package/src/icons/ProducerIcon.jsx +69 -0
  496. package/src/icons/PuzzlePiece2Icon.jsx +26 -0
  497. package/src/icons/PuzzlePieceIcon.jsx +26 -0
  498. package/src/icons/QuantizationIcon.jsx +25 -0
  499. package/src/icons/RadioIcon.jsx +36 -0
  500. package/src/icons/RadioOffIcon.jsx +26 -0
  501. package/src/icons/RecordIcon.jsx +15 -0
  502. package/src/icons/RecordingIcon.jsx +22 -0
  503. package/src/icons/RedoIcon.jsx +26 -0
  504. package/src/icons/RefreshBackIcon.jsx +32 -0
  505. package/src/icons/RefreshIcon.jsx +26 -0
  506. package/src/icons/RemoveFromDeviceIcon.jsx +23 -0
  507. package/src/icons/RemoveIcon.jsx +25 -0
  508. package/src/icons/ReorderIcon.jsx +26 -0
  509. package/src/icons/RepostIcon.jsx +26 -0
  510. package/src/icons/ReverbIcon.jsx +25 -0
  511. package/src/icons/RocketIcon.jsx +30 -0
  512. package/src/icons/SaveTimeIcon.jsx +26 -0
  513. package/src/icons/SearchIcon.jsx +32 -0
  514. package/src/icons/SectionsIcon.jsx +25 -0
  515. package/src/icons/Setlist2Icon.jsx +26 -0
  516. package/src/icons/SetlistIcon.jsx +26 -0
  517. package/src/icons/SettingsIcon.jsx +27 -0
  518. package/src/icons/SharpIcon.jsx +20 -0
  519. package/src/icons/ShiftIcon.jsx +20 -0
  520. package/src/icons/ShuffleIcon.jsx +26 -0
  521. package/src/icons/SidebarIslandIcon.jsx +26 -0
  522. package/src/icons/SidebarLeftIcon.jsx +25 -0
  523. package/src/icons/SidebarRightIcon.jsx +26 -0
  524. package/src/icons/SlidersIcon.jsx +26 -0
  525. package/src/icons/SnareIcon.jsx +18 -0
  526. package/src/icons/SongBarIcon.jsx +26 -0
  527. package/src/icons/SongDetailIcon.jsx +26 -0
  528. package/src/icons/Songkey2Icon.jsx +25 -0
  529. package/src/icons/SongwritingIcon.jsx +26 -0
  530. package/src/icons/SoundEffectsGradientIcon.jsx +39 -0
  531. package/src/icons/SoundEffectsIcon.jsx +26 -0
  532. package/src/icons/SoundbarIcon.jsx +26 -0
  533. package/src/icons/SoundtrackGradientIcon.jsx +44 -0
  534. package/src/icons/SoundtrackIcon.jsx +26 -0
  535. package/src/icons/SparkBarsIcon.jsx +25 -0
  536. package/src/icons/SparkleIcon.jsx +35 -0
  537. package/src/icons/SparklesGradientIcon.jsx +62 -0
  538. package/src/icons/SpatialAudioIcon.jsx +55 -0
  539. package/src/icons/SpeakerIcon.jsx +23 -0
  540. package/src/icons/SpeakerLoudIcon.jsx +34 -0
  541. package/src/icons/SpeedChangerIcon.jsx +30 -0
  542. package/src/icons/SpeedIcon.jsx +18 -0
  543. package/src/icons/SplitIcon.jsx +21 -0
  544. package/src/icons/SpliterGradientIcon.jsx +44 -0
  545. package/src/icons/SpliterIcon.jsx +26 -0
  546. package/src/icons/StarFilledIcon.jsx +23 -0
  547. package/src/icons/StarIcon.jsx +20 -0
  548. package/src/icons/Stop2Icon.jsx +15 -0
  549. package/src/icons/StringsIcon.jsx +36 -0
  550. package/src/icons/TargetIcon.jsx +33 -0
  551. package/src/icons/ThumbDownIcon.jsx +26 -0
  552. package/src/icons/ThumbUpIcon.jsx +26 -0
  553. package/src/icons/ThumbsIcon.jsx +26 -0
  554. package/src/icons/TomsIcon.jsx +21 -0
  555. package/src/icons/TransposeIcon.jsx +26 -0
  556. package/src/icons/TrashIcon.jsx +21 -0
  557. package/src/icons/TrimIcon.jsx +27 -0
  558. package/src/icons/Tuner2Icon.jsx +23 -0
  559. package/src/icons/TunerIcon.jsx +18 -0
  560. package/src/icons/TvIcon.jsx +20 -0
  561. package/src/icons/UkuleleIcon.jsx +49 -0
  562. package/src/icons/UndoIcon.jsx +26 -0
  563. package/src/icons/UploadIcon.jsx +29 -0
  564. package/src/icons/UserGroup3Icon.jsx +26 -0
  565. package/src/icons/UserGroupIcon.jsx +26 -0
  566. package/src/icons/UserIcon.jsx +27 -0
  567. package/src/icons/Video2Icon.jsx +31 -0
  568. package/src/icons/Video3Icon.jsx +24 -0
  569. package/src/icons/VideoFileIcon.jsx +30 -0
  570. package/src/icons/VideoFilesIcon.jsx +30 -0
  571. package/src/icons/VideoIcon.jsx +21 -0
  572. package/src/icons/VocalIcon.jsx +18 -0
  573. package/src/icons/VocalIsolationIcon.jsx +29 -0
  574. package/src/icons/VocalsBackgroundIcon.jsx +32 -0
  575. package/src/icons/VocalsIcon.jsx +26 -0
  576. package/src/icons/Volume0Icon.jsx +26 -0
  577. package/src/icons/Volume1Icon.jsx +26 -0
  578. package/src/icons/Volume2Icon.jsx +26 -0
  579. package/src/icons/VolumeBarIcon.jsx +25 -0
  580. package/src/icons/WaveIcon.jsx +21 -0
  581. package/src/icons/WaveformIcon.jsx +25 -0
  582. package/src/icons/WidgetIcon.jsx +35 -0
  583. package/src/icons/WindIcon.jsx +18 -0
  584. package/src/icons/WoodwindBrassIcon.jsx +23 -0
  585. package/src/icons/ZoomCloseIcon.jsx +38 -0
  586. package/src/icons/ZoomInIcon.jsx +32 -0
  587. package/src/icons.jsx +343 -0
  588. package/src/index.jsx +152 -0
  589. package/src/lib/menu/Menu.module.css +356 -0
  590. package/src/lib/menu/index.js +2 -0
  591. package/src/lib/menu/renderItem.jsx +190 -0
  592. package/src/primitives.jsx +71 -0
  593. package/src/styles.css +10 -0
  594. package/src/utils/avatarUtils.js +18 -0
  595. package/src/utils/constants.js +16 -0
  596. package/src/utils/use-isomorphic-layout-effect.js +6 -0
  597. package/src/utils/useEventListener.js +34 -0
  598. package/src/utils/useIsMobileViewport.js +32 -0
  599. package/src/utils/useMobileDrawer.js +41 -0
  600. package/src/utils/useSubmitWithFeedback.js +32 -0
@@ -0,0 +1,703 @@
1
+ import { StemGenerationForm } from './StemGenerationForm'
2
+ import { FORM_DEFAULTS } from './utils'
3
+
4
+ export default {
5
+ title: 'Extensions/StemGenerationForm',
6
+ component: StemGenerationForm,
7
+ decorators: [
8
+ (Story) => (
9
+ <div style={{ width: '400px', height: '600px' }}>
10
+ <Story />
11
+ </div>
12
+ ),
13
+ ],
14
+ parameters: {
15
+ layout: 'centered',
16
+ docs: {
17
+ description: {
18
+ component: `
19
+
20
+ A comprehensive form component for AI stem generation with support for both preset-based and custom generation modes.
21
+
22
+ ---
23
+
24
+ ## Basic Usage
25
+
26
+ \`\`\`jsx
27
+ import { StemGenerationForm } from '@moises.ai/design-system'
28
+
29
+ <StemGenerationForm
30
+ formState={formState}
31
+ onFormStateChange={setFormState}
32
+ presets={presets}
33
+ i18n={i18n}
34
+ onSubmit={handleSubmit}
35
+ unmutedTracksCount={3}
36
+ />
37
+ \`\`\`
38
+
39
+
40
+ ---
41
+
42
+ ## Component API
43
+
44
+ ### Props
45
+
46
+ | Prop | Description |
47
+ |------|-------------|
48
+ | \`formState\` | Current form state containing all generation parameters. |
49
+ | \`onFormStateChange\` | Callback to update form state. Can accept a new state object or updater function. |
50
+ | \`presets\` | Array of preset configurations for quick generation. |
51
+ | \`onAddConditioningAudio\` | Callback to open file picker for reference audio. |
52
+ | \`showConditioningTextPaywall\` | Function to show paywall when accessing text conditioning (pro feature). |
53
+ | \`showAdvancedControlsPaywall\` | Function to show paywall for advanced creative controls (pro feature). |
54
+ | \`i18n\` | Internationalization object with _ method for translations. |
55
+ | \`onSubmit\` | Callback fired when the "Generate Stem" button is clicked. |
56
+ | \`limitReached\` | Whether generation concurrency limit has been reached. |
57
+ | \`showUpgradeConcurrency\` | Shows upgrade button when limit is reached. |
58
+ | \`onClickUpgradeConcurrency\` | Callback for upgrade button click on concurrency component. |
59
+ | \`error\` | Error message to display with clear button. |
60
+ | \`generateFromTrack\` | Track to use as context for generation. |
61
+ | \`inpaintingTrack\` | Track being used for inpainting. |
62
+ | \`generateFromSelectionTrack\` | Track with selection for generation. |
63
+ | \`unmutedTracksCount\` | Number of unmuted tracks. Button disabled if 0. |
64
+ | \`onMountConcurrency\` | Callback fired when concurrency component mounts. |
65
+ | \`onClear\` | Callback to clear generation state. |
66
+
67
+ ### Definitions
68
+
69
+ \`\`\`jsx
70
+
71
+ preset = {
72
+ description: string;
73
+ id: string;
74
+ instrument: string;
75
+ instrumentType: string;
76
+ name: string;
77
+ presetName: string;
78
+ }
79
+
80
+ formState = {
81
+ steps: number;
82
+ guidanceScale: number | null;
83
+ autoGuidanceScale: boolean;
84
+ instrument: string;
85
+ chroma: number | null;
86
+ clapNn: boolean;
87
+ conditioningText: string;
88
+ conditioningAudio: ArrayBuffer | null;
89
+ presetId: string | null;
90
+ guidanceClap: number | null;
91
+ guidanceContextAudio: number | null;
92
+ guidanceContextChroma: number | null;
93
+ useProjectChords: boolean;
94
+ contextAudio: ArrayBuffer | null;
95
+ weightSchedule: number | null;
96
+ presetName: string;
97
+ presetNameLocalized: string;
98
+ trackName: string | null;
99
+ }
100
+
101
+
102
+ inpaintingTrack = {
103
+ trackId: string;
104
+ from: number;
105
+ to: number;
106
+ name: string;
107
+ position: number;
108
+ arrayBuffer: ArrayBuffer;
109
+ groupId: string;
110
+ }
111
+
112
+ generateFromSelectionTrack = {
113
+ trackId: string;
114
+ from: number;
115
+ to: number;
116
+ name: string;
117
+ position: number;
118
+ arrayBuffer: ArrayBuffer;
119
+ groupId: string;
120
+ }
121
+
122
+
123
+ generateFromTrack = {
124
+ id: string;
125
+ groupId: string;
126
+ name: string;
127
+ position: number;
128
+ pan: number;
129
+ volume: number;
130
+ isSolo: boolean;
131
+ isMuted: boolean;
132
+ duration: number;
133
+ loading: boolean;
134
+ isStitched: boolean;
135
+ startPositionMs: number;
136
+ infos: {
137
+ source: string;
138
+ };
139
+ }
140
+ \`\`\`
141
+
142
+ ---
143
+
144
+ ## Notes
145
+
146
+ - The form automatically switches between "Preset" and "Custom" modes
147
+ - Generate button is disabled when: no unmuted tracks, no preset selected (preset mode), or no text/audio (custom mode)
148
+ - When there are no presets for the selected instrument, the custom form is shown
149
+ - Drums instrument does not support harmonic guidance (chroma)
150
+ - Error and Success messages auto-dismiss after 3 seconds
151
+ `,
152
+ },
153
+ },
154
+ },
155
+ tags: ['autodocs'],
156
+ argTypes: {
157
+ formState: {
158
+ description: 'Current form state containing all generation parameters',
159
+ control: false,
160
+ },
161
+ onFormStateChange: {
162
+ description: 'Callback fired when form state changes',
163
+ control: false,
164
+ },
165
+ presets: {
166
+ description: 'Array of preset configurations for quick generation',
167
+ control: false,
168
+ },
169
+ onAddConditioningAudio: {
170
+ description: 'Callback to open file picker for reference audio',
171
+ control: false,
172
+ },
173
+ showConditioningTextPaywall: {
174
+ description:
175
+ 'Function to show paywall when accessing text conditioning (premium feature)',
176
+ control: false,
177
+ },
178
+ showAdvancedControlsPaywall: {
179
+ description: 'Function to show paywall for advanced creative controls',
180
+ control: false,
181
+ },
182
+ i18n: {
183
+ description: 'Internationalization object with _ method for translations',
184
+ control: false,
185
+ },
186
+ loading: {
187
+ description: 'Loading state during generation',
188
+ control: false,
189
+ },
190
+ onSubmit: {
191
+ description: 'Callback fired when generate button is clicked',
192
+ control: false,
193
+ },
194
+ limitReached: {
195
+ description: 'Whether generation concurrency limit has been reached',
196
+ control: false,
197
+ },
198
+ showUpgradeConcurrency: {
199
+ description: 'Whether to show upgrade button when limit is reached',
200
+ control: false,
201
+ },
202
+ onClickUpgradeConcurrency: {
203
+ description: 'Callback for upgrade button click',
204
+ control: false,
205
+ },
206
+ error: {
207
+ description: 'Error message to display',
208
+ control: false,
209
+ },
210
+ generateFromTrack: {
211
+ description: 'Track object to generate from (context generation)',
212
+ control: false,
213
+ },
214
+ inpaintingTrack: {
215
+ description: 'Track being used for inpainting',
216
+ control: false,
217
+ },
218
+ generateFromSelectionTrack: {
219
+ description: 'Track with selection for generation',
220
+ control: false,
221
+ },
222
+ unmutedTracksCount: {
223
+ description: 'Number of unmuted tracks in the project',
224
+ control: false,
225
+ },
226
+ onMountConcurrency: {
227
+ description: 'Callback fired when concurrency component mounts',
228
+ control: false,
229
+ },
230
+ onClear: {
231
+ description: 'Callback to clear generation state',
232
+ control: false,
233
+ },
234
+ },
235
+ }
236
+
237
+ // Mock presets data - matching real-world usage
238
+ const mockPresets = [
239
+ {
240
+ id: 'feeling-lucky-drums-01',
241
+ instrument: 'drums',
242
+ instrumentType: 'DRUMS',
243
+ name: 'AI Suggestion',
244
+ presetName: 'AI Match',
245
+ description: 'Generate a drum track from audio context.',
246
+ thumbnail: 'https://via.placeholder.com/80',
247
+ },
248
+ {
249
+ id: 'drums-rock-1',
250
+ instrument: 'drums',
251
+ instrumentType: 'DRUMS',
252
+ name: 'Rock Drums',
253
+ presetName: 'rock_drums',
254
+ description: 'Powerful rock drum patterns',
255
+ thumbnail: 'https://via.placeholder.com/80',
256
+ },
257
+ {
258
+ id: 'feeling-lucky-bass-01',
259
+ instrument: 'bass',
260
+ instrumentType: 'BASS',
261
+ name: 'AI Suggestion',
262
+ presetName: 'AI Match',
263
+ description: 'Generate a bass track from audio context.',
264
+ thumbnail: 'https://via.placeholder.com/80',
265
+ },
266
+ {
267
+ id: 'bass-funky-1',
268
+ instrument: 'bass',
269
+ instrumentType: 'BASS',
270
+ name: 'Funky Bass',
271
+ presetName: 'funky_bass',
272
+ description: 'Groovy funk bass lines',
273
+ thumbnail: 'https://via.placeholder.com/80',
274
+ },
275
+ {
276
+ id: 'feeling-lucky-guitar-01',
277
+ instrument: 'guitar',
278
+ instrumentType: 'GUITAR',
279
+ name: 'AI Suggestion',
280
+ presetName: 'AI Match',
281
+ description: 'Generate a guitar track from audio context.',
282
+ thumbnail: 'https://via.placeholder.com/80',
283
+ },
284
+ {
285
+ id: 'guitar-acoustic-1',
286
+ instrument: 'guitar',
287
+ instrumentType: 'GUITAR',
288
+ name: 'Acoustic Guitar',
289
+ presetName: 'acoustic_guitar',
290
+ description: 'Natural acoustic guitar tones',
291
+ thumbnail: 'https://via.placeholder.com/80',
292
+ },
293
+ ]
294
+
295
+ // Mock i18n object (English)
296
+ const mockI18n = {
297
+ _: (text) => text,
298
+ }
299
+
300
+ // Mock i18n object (Portuguese) - for localized examples
301
+ const mockI18nPt = {
302
+ _: (text) => {
303
+ const translations = {
304
+ Presets: 'Predefinições',
305
+ Custom: 'Personalizado',
306
+ 'Generate Stem': 'Gerar Stem',
307
+ 'AI Suggestion': 'Sugestão da IA',
308
+ 'Select Reference Audio': 'Selecionar Áudio de Referência',
309
+ 'A new track has been added to your project!':
310
+ 'Uma nova faixa foi adicionada ao seu projeto!',
311
+ 'An error occurred while generating the track. Please try again.':
312
+ 'Ocorreu um erro ao gerar a faixa. Por favor, tente novamente.',
313
+ Clear: 'Limpar',
314
+ }
315
+ return translations[text] || text
316
+ },
317
+ }
318
+
319
+ /**
320
+ * ## Default State
321
+ *
322
+ * The form in its initial state with no track selected and default settings.
323
+ * Ready for user to start configuring generation parameters.
324
+ */
325
+ export const Default = {
326
+ args: {
327
+ formState: FORM_DEFAULTS,
328
+ presets: mockPresets,
329
+ i18n: mockI18n,
330
+ loading: false,
331
+ limitReached: false,
332
+ showUpgradeConcurrency: false,
333
+ error: null,
334
+ unmutedTracksCount: 3,
335
+ },
336
+ }
337
+
338
+ /**
339
+ * ## With Preset Selected
340
+ *
341
+ * Form with a preset already selected, showing how the UI updates
342
+ * when user chooses a quick-start template.
343
+ */
344
+ export const WithPresetSelected = {
345
+ args: {
346
+ formState: {
347
+ ...FORM_DEFAULTS,
348
+ presetId: 'drums-rock-1',
349
+ presetName: 'rock_drums',
350
+ presetNameLocalized: 'Rock Drums',
351
+ },
352
+ presets: mockPresets,
353
+ i18n: mockI18n,
354
+ loading: false,
355
+ limitReached: false,
356
+ showUpgradeConcurrency: false,
357
+ error: null,
358
+ unmutedTracksCount: 3,
359
+ },
360
+ }
361
+
362
+ /**
363
+ * ## Loading State
364
+ *
365
+ * Shows the form while a stem is being generated.
366
+ * The generate button displays a loading spinner and is disabled.
367
+ */
368
+ export const Loading = {
369
+ args: {
370
+ formState: {
371
+ ...FORM_DEFAULTS,
372
+ presetId: 'drums-rock-1',
373
+ conditioningText: 'Energetic rock drums with heavy kick',
374
+ },
375
+ presets: mockPresets,
376
+ i18n: mockI18n,
377
+ loading: true,
378
+ limitReached: false,
379
+ showUpgradeConcurrency: false,
380
+ error: null,
381
+ unmutedTracksCount: 3,
382
+ },
383
+ }
384
+
385
+ /**
386
+ * ## Error State
387
+ *
388
+ * Displays an error message when generation fails.
389
+ * User can clear the error and try again.
390
+ */
391
+ export const WithError = {
392
+ args: {
393
+ formState: {
394
+ ...FORM_DEFAULTS,
395
+ presetId: 'drums-rock-1',
396
+ },
397
+ presets: mockPresets,
398
+ i18n: mockI18n,
399
+ loading: false,
400
+ limitReached: false,
401
+ showUpgradeConcurrency: false,
402
+ error: 'Generation failed. Please try again.',
403
+ unmutedTracksCount: 3,
404
+ },
405
+ }
406
+
407
+ /**
408
+ * ## Limit Reached
409
+ *
410
+ * Shows the concurrency limit warning when user has reached
411
+ * their maximum concurrent generations. Free users see an upgrade prompt.
412
+ */
413
+ export const LimitReached = {
414
+ args: {
415
+ formState: FORM_DEFAULTS,
416
+ presets: mockPresets,
417
+ i18n: mockI18n,
418
+ loading: false,
419
+ limitReached: true,
420
+ showUpgradeConcurrency: true,
421
+ error: null,
422
+ unmutedTracksCount: 3,
423
+ },
424
+ }
425
+
426
+ /**
427
+ * ## Generate from Track
428
+ *
429
+ * Context-aware generation where a track is selected as context.
430
+ * The form displays information about the source track.
431
+ */
432
+ export const GenerateFromTrack = {
433
+ args: {
434
+ formState: {
435
+ ...FORM_DEFAULTS,
436
+ presetId: 'bass-funky-1',
437
+ },
438
+ presets: mockPresets,
439
+ i18n: mockI18n,
440
+ loading: false,
441
+ limitReached: false,
442
+ showUpgradeConcurrency: false,
443
+ error: null,
444
+ generateFromTrack: {
445
+ id: 'track-1',
446
+ name: 'Main Melody',
447
+ duration: 180,
448
+ },
449
+ unmutedTracksCount: 3,
450
+ },
451
+ }
452
+
453
+ /**
454
+ * ## Inpainting Mode
455
+ *
456
+ * Shows the form when user is replacing or modifying part of an existing track.
457
+ */
458
+ export const InpaintingMode = {
459
+ args: {
460
+ formState: {
461
+ ...FORM_DEFAULTS,
462
+ instrument: 'guitar',
463
+ conditioningText: 'Smooth jazz guitar solo',
464
+ },
465
+ presets: mockPresets,
466
+ i18n: mockI18n,
467
+ loading: false,
468
+ limitReached: false,
469
+ showUpgradeConcurrency: false,
470
+ error: null,
471
+ inpaintingTrack: {
472
+ trackId: 'track-2',
473
+ from: 3.278797370617696,
474
+ to: 11.241590984974959,
475
+ name: 'Guitar Track',
476
+ position: 2,
477
+ arrayBuffer: new ArrayBuffer(1024),
478
+ groupId: 'default',
479
+ },
480
+ unmutedTracksCount: 3,
481
+ },
482
+ }
483
+
484
+ /**
485
+ * ## Custom Generation Mode
486
+ *
487
+ * Form showing custom generation with text prompt and reference audio.
488
+ * Advanced creative controls can be enabled for fine-tuning.
489
+ */
490
+ export const CustomGenerationWithAudio = {
491
+ args: {
492
+ formState: {
493
+ ...FORM_DEFAULTS,
494
+ instrument: 'bass',
495
+ conditioningText: 'Deep funky bass with slap technique',
496
+ conditioningAudio: new ArrayBuffer(1024),
497
+ conditioningAudioName: 'reference-bass.wav',
498
+ conditioningAudioSize: 2048000,
499
+ conditioningAudioDuration: 120,
500
+ },
501
+ presets: mockPresets,
502
+ i18n: mockI18n,
503
+ loading: false,
504
+ limitReached: false,
505
+ showUpgradeConcurrency: false,
506
+ error: null,
507
+ unmutedTracksCount: 3,
508
+ },
509
+ }
510
+
511
+ /**
512
+ * ## No Unmuted Tracks
513
+ *
514
+ * Shows disabled state when no tracks are unmuted in the project.
515
+ * Generation button is disabled until at least one track is unmuted.
516
+ */
517
+ export const NoUnmutedTracks = {
518
+ args: {
519
+ formState: {
520
+ ...FORM_DEFAULTS,
521
+ presetId: 'drums-rock-1',
522
+ },
523
+ presets: mockPresets,
524
+ i18n: mockI18n,
525
+ loading: false,
526
+ limitReached: false,
527
+ showUpgradeConcurrency: false,
528
+ error: null,
529
+ unmutedTracksCount: 0,
530
+ },
531
+ }
532
+
533
+ /**
534
+ * ## Different Instruments
535
+ *
536
+ * Examples of the form configured for different instrument types.
537
+ * Each instrument may have different presets and options.
538
+ */
539
+ export const GuitarInstrument = {
540
+ args: {
541
+ formState: {
542
+ ...FORM_DEFAULTS,
543
+ instrument: 'guitar',
544
+ presetId: 'guitar-acoustic-1',
545
+ },
546
+ presets: mockPresets,
547
+ i18n: mockI18n,
548
+ loading: false,
549
+ limitReached: false,
550
+ showUpgradeConcurrency: false,
551
+ error: null,
552
+ unmutedTracksCount: 3,
553
+ },
554
+ }
555
+
556
+ export const BassInstrument = {
557
+ args: {
558
+ formState: {
559
+ ...FORM_DEFAULTS,
560
+ instrument: 'bass',
561
+ presetId: 'bass-funky-1',
562
+ },
563
+ presets: mockPresets,
564
+ i18n: mockI18n,
565
+ loading: false,
566
+ limitReached: false,
567
+ showUpgradeConcurrency: false,
568
+ error: null,
569
+ unmutedTracksCount: 3,
570
+ },
571
+ }
572
+
573
+ /**
574
+ * ## AI Match Preset
575
+ *
576
+ * The special "AI Match" preset that generates stems based on audio context.
577
+ * This is the "feeling lucky" option that uses AI to determine the best generation parameters.
578
+ */
579
+ export const AIMatchPreset = {
580
+ args: {
581
+ formState: {
582
+ ...FORM_DEFAULTS,
583
+ instrument: 'drums',
584
+ presetId: 'feeling-lucky-drums-01',
585
+ presetName: 'AI Match',
586
+ presetNameLocalized: 'AI Suggestion',
587
+ },
588
+ presets: mockPresets,
589
+ i18n: mockI18n,
590
+ loading: false,
591
+ limitReached: false,
592
+ showUpgradeConcurrency: false,
593
+ error: null,
594
+ unmutedTracksCount: 3,
595
+ },
596
+ }
597
+
598
+ /**
599
+ * ## Portuguese Localization
600
+ *
601
+ * Example showing the component with Portuguese translations.
602
+ * Demonstrates how i18n integration works with the component.
603
+ */
604
+ export const PortugueseLocale = {
605
+ args: {
606
+ formState: {
607
+ ...FORM_DEFAULTS,
608
+ instrument: 'drums',
609
+ presetId: 'feeling-lucky-drums-01',
610
+ presetName: 'AI Match',
611
+ presetNameLocalized: 'Sugestão da IA',
612
+ },
613
+ presets: [
614
+ {
615
+ id: 'feeling-lucky-drums-01',
616
+ instrument: 'drums',
617
+ instrumentType: 'DRUMS',
618
+ name: 'Sugestão da IA',
619
+ presetName: 'AI Match',
620
+ description: 'Gere uma faixa de bateria a partir do contexto sonoro.',
621
+ thumbnail: 'https://via.placeholder.com/80',
622
+ },
623
+ ],
624
+ i18n: mockI18nPt,
625
+ loading: false,
626
+ limitReached: false,
627
+ showUpgradeConcurrency: false,
628
+ error: null,
629
+ unmutedTracksCount: 3,
630
+ },
631
+ }
632
+
633
+ /**
634
+ * ## Empty Presets (Fallback to Custom)
635
+ *
636
+ * Shows the custom form when there are no presets for the selected instrument.
637
+ * This is a common scenario during initial app load when presets are fetched asynchronously.
638
+ */
639
+ export const EmptyPresets = {
640
+ args: {
641
+ formState: FORM_DEFAULTS,
642
+ presets: [],
643
+ i18n: mockI18n,
644
+ loading: false,
645
+ limitReached: false,
646
+ showUpgradeConcurrency: false,
647
+ error: null,
648
+ unmutedTracksCount: 3,
649
+ },
650
+ }
651
+
652
+ /**
653
+ * ## Custom Mode Active
654
+ *
655
+ * Shows the form in custom mode with a text prompt.
656
+ * This demonstrates the flexibility of creating custom stems without presets.
657
+ */
658
+ export const CustomModeWithText = {
659
+ args: {
660
+ formState: {
661
+ ...FORM_DEFAULTS,
662
+ instrument: 'drums',
663
+ conditioningText:
664
+ 'Heavy rock drums with double bass pedal and strong snare hits',
665
+ presetId: null,
666
+ },
667
+ presets: mockPresets,
668
+ i18n: mockI18n,
669
+ loading: false,
670
+ limitReached: false,
671
+ showUpgradeConcurrency: false,
672
+ error: null,
673
+ unmutedTracksCount: 3,
674
+ },
675
+ }
676
+
677
+ /**
678
+ * ## Advanced Creative Controls
679
+ *
680
+ * Shows the form with advanced creative freedom controls enabled.
681
+ * These controls allow fine-tuning of guidance scales for more precise generation.
682
+ */
683
+ export const WithCreativeControls = {
684
+ args: {
685
+ formState: {
686
+ ...FORM_DEFAULTS,
687
+ instrument: 'guitar',
688
+ conditioningText: 'Smooth jazz guitar with warm tone',
689
+ customizeCreativeFreedom: true,
690
+ guidanceClap: 6,
691
+ guidanceContextAudio: 6,
692
+ guidanceContextChroma: 6,
693
+ useProjectChords: true,
694
+ },
695
+ presets: mockPresets,
696
+ i18n: mockI18n,
697
+ loading: false,
698
+ limitReached: false,
699
+ showUpgradeConcurrency: false,
700
+ error: null,
701
+ unmutedTracksCount: 3,
702
+ },
703
+ }
@@ -0,0 +1,26 @@
1
+ export const FORM_DEFAULTS = {
2
+ steps: 30,
3
+ guidanceScale: null,
4
+ autoGuidanceScale: true,
5
+ instrument: 'generic',
6
+ chroma: null,
7
+ clapNn: true,
8
+ conditioningText: '',
9
+ conditioningAudio: null,
10
+ presetId: null,
11
+ // Creative Control sliders (when enabled)
12
+ guidanceClap: null, // Conditioning strictness (clap)
13
+ guidanceContextAudio: null, // Context strictness (context_audio)
14
+ guidanceContextChroma: null, // Harmonic strictness (context_chroma)
15
+ useProjectChords: false, // Use project chords for generation
16
+ }
17
+
18
+ export const GUIDANCE_SCALE_DEFAULTS = {
19
+ generic: { clap: 4, context: 4, chroma: 4 },
20
+ bass: { clap: 2, context: 2, chroma: 2 },
21
+ guitar: { clap: 2, context: 2, chroma: 2 },
22
+ strings: { clap: 2, context: 2, chroma: 2 },
23
+ keys: { clap: 2, context: 2, chroma: 2 },
24
+ // Drums does not support chroma/harmonic guidance
25
+ drums: { clap: 2, context: 2, chroma: 0 },
26
+ }