@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.
- package/dist/index.js +2490 -2339
- package/package.json +3 -2
- package/src/Introduction.mdx +56 -0
- package/src/colors/custom-styles.css +293 -0
- package/src/components/AdditionalItems/AdditionalItems.jsx +43 -0
- package/src/components/AdditionalItems/AdditionalItems.module.css +76 -0
- package/src/components/AdditionalItems/AdditionalItems.stories.jsx +32 -0
- package/src/components/BannerAnnouncement/BannerAnnouncement.jsx +77 -0
- package/src/components/BannerAnnouncement/BannerAnnouncement.module.css +58 -0
- package/src/components/BannerAnnouncement/BannerAnnouncement.stories.jsx +120 -0
- package/src/components/Button/Button.jsx +45 -0
- package/src/components/Button/Button.module.css +288 -0
- package/src/components/Button/Button.stories.jsx +269 -0
- package/src/components/Callout/Callout.jsx +47 -0
- package/src/components/Callout/Callout.module.css +56 -0
- package/src/components/Callout/Callout.stories.jsx +296 -0
- package/src/components/Card/Card.jsx +46 -0
- package/src/components/Card/Card.module.css +89 -0
- package/src/components/Card/Card.stories.jsx +116 -0
- package/src/components/Checkbox/Checkbox.jsx +36 -0
- package/src/components/Checkbox/Checkbox.module.css +136 -0
- package/src/components/Checkbox/Checkbox.stories.jsx +64 -0
- package/src/components/CigarBar/CigarBar.jsx +73 -0
- package/src/components/CigarBar/CigarBar.module.css +57 -0
- package/src/components/CigarBar/CigarBar.stories.jsx +66 -0
- package/src/components/ContextMenu/ContextMenu.jsx +56 -0
- package/src/components/ContextMenu/ContextMenu.stories.jsx +657 -0
- package/src/components/Countdown/Countdown.jsx +97 -0
- package/src/components/Countdown/Countdown.module.css +206 -0
- package/src/components/Countdown/Countdown.stories.jsx +108 -0
- package/src/components/DataTable/DataTable.jsx +300 -0
- package/src/components/DataTable/DataTable.module.css +372 -0
- package/src/components/DataTable/DataTable.stories.jsx +365 -0
- package/src/components/DropdownButton/DropdownButton.jsx +124 -0
- package/src/components/DropdownButton/DropdownButton.module.css +102 -0
- package/src/components/DropdownButton/DropdownButton.stories.jsx +267 -0
- package/src/components/DropdownMenu/DropdownMenu.jsx +102 -0
- package/src/components/DropdownMenu/DropdownMenu.stories.jsx +645 -0
- package/src/components/FloatingBanner/FloatingBanner.jsx +87 -0
- package/src/components/FloatingBanner/FloatingBanner.module.css +92 -0
- package/src/components/FloatingBanner/FloatingBanner.stories.jsx +115 -0
- package/src/components/FooterPanel/FooterPanel.jsx +56 -0
- package/src/components/FooterPanel/FooterPanel.stories.jsx +289 -0
- package/src/components/GenerationSourceCallout/GenerationSourceCallout.jsx +53 -0
- package/src/components/GenerationSourceCallout/GenerationSourceCallout.module.css +98 -0
- package/src/components/GroupButtons/GroupButtons.jsx +97 -0
- package/src/components/GroupButtons/GroupButtons.module.css +8 -0
- package/src/components/GroupButtons/GroupButtons.stories.jsx +301 -0
- package/src/components/HeaderPanel/HeaderPanel.jsx +115 -0
- package/src/components/HeaderPanel/HeaderPanel.stories.jsx +389 -0
- package/src/components/HorizontalVolume/HorizontalVolume.jsx +157 -0
- package/src/components/HorizontalVolume/HorizontalVolume.module.css +123 -0
- package/src/components/HorizontalVolume/HorizontalVolume.stories.jsx +109 -0
- package/src/components/IconButton/IconButton.jsx +47 -0
- package/src/components/IconButton/IconButton.module.css +302 -0
- package/src/components/IconButton/IconButton.stories.jsx +532 -0
- package/src/components/InstrumentSelector/InstrumentSelector.jsx +61 -0
- package/src/components/InstrumentSelector/InstrumentSelector.module.css +80 -0
- package/src/components/InstrumentSelector/InstrumentSelector.stories.jsx +33 -0
- package/src/components/Knob/Knob.jsx +173 -0
- package/src/components/Knob/Knob.module.css +70 -0
- package/src/components/Knob/Knob.stories.jsx +289 -0
- package/src/components/Knob/constants.js +38 -0
- package/src/components/Knob/useKnob.js +117 -0
- package/src/components/Knob/utils.js +117 -0
- package/src/components/ListCards/CardDetails.stories.jsx +484 -0
- package/src/components/ListCards/ListCards.jsx +297 -0
- package/src/components/ListCards/ListCards.module.css +234 -0
- package/src/components/ListCards/ListCards.stories.jsx +386 -0
- package/src/components/LokalisePoc/LokalisePoc.jsx +7 -0
- package/src/components/LokalisePoc/LokalisePoc.stories.jsx +63 -0
- package/src/components/MessageWithAction/MessageWithAction.jsx +54 -0
- package/src/components/MessageWithAction/MessageWithAction.module.css +16 -0
- package/src/components/MessageWithAction/MessageWithAction.stories.jsx +280 -0
- package/src/components/MetronomeForm/MetronomeForm.jsx +74 -0
- package/src/components/MetronomeForm/MetronomeForm.stories.jsx +137 -0
- package/src/components/MultiSelect/MultiSelect.jsx +129 -0
- package/src/components/MultiSelect/MultiSelect.module.css +105 -0
- package/src/components/MultiSelect/MultiSelect.stories.jsx +296 -0
- package/src/components/MultiSelectCards/MultiSelectCards.jsx +96 -0
- package/src/components/MultiSelectCards/MultiSelectCards.module.css +60 -0
- package/src/components/MultiSelectCards/MultiSelectCards.stories.jsx +439 -0
- package/src/components/PanControl/PanControl.jsx +227 -0
- package/src/components/PanControl/PanControl.module.css +71 -0
- package/src/components/PanControl/PanControl.stories.jsx +100 -0
- package/src/components/ProductsBrandPattern/Patterns/aiStudio.png +0 -0
- package/src/components/ProductsBrandPattern/Patterns/mastering.png +0 -0
- package/src/components/ProductsBrandPattern/Patterns/product.png +0 -0
- package/src/components/ProductsBrandPattern/Patterns/stemSeparation.png +0 -0
- package/src/components/ProductsBrandPattern/Patterns/voiceStudio.png +0 -0
- package/src/components/ProductsBrandPattern/ProductsBrandPattern.jsx +36 -0
- package/src/components/ProductsBrandPattern/ProductsBrandPattern.stories.jsx +47 -0
- package/src/components/ProductsList/ProductsList.jsx +54 -0
- package/src/components/ProductsList/ProductsList.module.css +81 -0
- package/src/components/ProductsList/ProductsList.stories.jsx +69 -0
- package/src/components/ProfileMenu/MenuTrigger.jsx +45 -0
- package/src/components/ProfileMenu/ProfileMenu.jsx +66 -0
- package/src/components/ProfileMenu/ProfileMenu.module.css +101 -0
- package/src/components/ProfileMenu/ProfileMenu.stories.jsx +44 -0
- package/src/components/ProjectsList/ProjectsList.jsx +132 -0
- package/src/components/ProjectsList/ProjectsList.module.css +71 -0
- package/src/components/ProjectsList/ProjectsList.stories.jsx +25 -0
- package/src/components/ProjectsList/utils-stories.js +186 -0
- package/src/components/ProjectsList/utils.jsx +70 -0
- package/src/components/RadioCardsGroup/RadioCardsGroup.jsx +35 -0
- package/src/components/RadioCardsGroup/RadioCardsGroup.module.css +66 -0
- package/src/components/RadioCardsGroup/RadioCardsGroup.stories.jsx +89 -0
- package/src/components/Rating/Rating.jsx +154 -0
- package/src/components/Rating/Rating.module.css +70 -0
- package/src/components/Rating/Rating.stories.jsx +215 -0
- package/src/components/RecordingForm/RecordingForm.jsx +142 -0
- package/src/components/RecordingForm/RecordingForm.module.css +49 -0
- package/src/components/RecordingForm/RecordingForm.stories.jsx +319 -0
- package/src/components/SectionExpander/SectionExpander.jsx +53 -0
- package/src/components/SectionExpander/SectionExpander.module.css +46 -0
- package/src/components/SectionExpander/SectionExpander.stories.jsx +48 -0
- package/src/components/SegmentedControl/SegmentedControl.jsx +48 -0
- package/src/components/SegmentedControl/SegmentedControl.stories.jsx +133 -0
- package/src/components/SegmentedControl/SegmentedControl.styles.css +55 -0
- package/src/components/Select/Select.jsx +132 -0
- package/src/components/Select/Select.module.css +76 -0
- package/src/components/Select/Select.stories.jsx +294 -0
- package/src/components/SetlistList/SetlistList.jsx +338 -0
- package/src/components/SetlistList/SetlistList.module.css +246 -0
- package/src/components/SetlistList/SetlistList.stories.jsx +121 -0
- package/src/components/Shell/Shell.jsx +75 -0
- package/src/components/Shell/Shell.module.css +3 -0
- package/src/components/Shell/Shell.stories.jsx +354 -0
- package/src/components/Sidebar/Sidebar.jsx +173 -0
- package/src/components/Sidebar/Sidebar.module.css +267 -0
- package/src/components/Sidebar/Sidebar.stories.jsx +247 -0
- package/src/components/Sidebar/SidebarSection/SidebarSection.jsx +20 -0
- package/src/components/Sidebar/SidebarSection/SidebarSection.module.css +20 -0
- package/src/components/Slider/Slider.jsx +114 -0
- package/src/components/Slider/Slider.module.css +159 -0
- package/src/components/Slider/Slider.stories.jsx +199 -0
- package/src/components/StemGenerationForm/BesideFooter/BesideFooter.jsx +107 -0
- package/src/components/StemGenerationForm/BesideFooter/BesideFooter.module.css +4 -0
- package/src/components/StemGenerationForm/Concurrency/Concurrency.jsx +54 -0
- package/src/components/StemGenerationForm/Concurrency/Concurrency.module.css +26 -0
- package/src/components/StemGenerationForm/CreateFromPreset/CreateFromPreset.jsx +44 -0
- package/src/components/StemGenerationForm/CreateNew/CreateNew.jsx +107 -0
- package/src/components/StemGenerationForm/CreativeFreedomSection/CreativeFreedomSection.jsx +185 -0
- package/src/components/StemGenerationForm/CreativeFreedomSection/CreativeFreedomSection.module.css +8 -0
- package/src/components/StemGenerationForm/GenerationStatus/GenerationStatus.jsx +91 -0
- package/src/components/StemGenerationForm/StemGenerationForm.jsx +342 -0
- package/src/components/StemGenerationForm/StemGenerationForm.stories.jsx +703 -0
- package/src/components/StemGenerationForm/utils/constants.js +26 -0
- package/src/components/StemGenerationForm/utils/formatFileInfo.js +20 -0
- package/src/components/StemGenerationForm/utils/getInstrumentDescription.js +27 -0
- package/src/components/StemGenerationForm/utils/getLocalizedGenerationInstruments.js +31 -0
- package/src/components/StemGenerationForm/utils/index.js +13 -0
- package/src/components/StemGenerationForm/utils/secondsToTime.js +15 -0
- package/src/components/StemSeparationForm/GenerationStatus/GenerationStatus.jsx +70 -0
- package/src/components/StemSeparationForm/StemSeparationForm.jsx +354 -0
- package/src/components/StemSeparationForm/StemSeparationForm.module.css +0 -0
- package/src/components/StemSeparationForm/StemSeparationForm.stories.jsx +221 -0
- package/src/components/TempoControlsForm/AutoDetect/AutoDetect.jsx +114 -0
- package/src/components/TempoControlsForm/TempoControlsForm.jsx +59 -0
- package/src/components/TempoControlsForm/TempoControlsForm.stories.jsx +228 -0
- package/src/components/TempoControlsForm/TempoForm/TempoForm.jsx +94 -0
- package/src/components/TempoControlsForm/TempoFormInput/TempoFormInput.jsx +136 -0
- package/src/components/TempoControlsForm/TempoFormInput/TempoFormInput.module.css +19 -0
- package/src/components/TempoControlsForm/constants.js +77 -0
- package/src/components/TempoControlsForm/utils/formatDateTime.js +50 -0
- package/src/components/TempoControlsForm/utils/getTempoMarking.js +6 -0
- package/src/components/Text/Text.jsx +19 -0
- package/src/components/Text/Text.module.css +5 -0
- package/src/components/Text/Text.stories.jsx +117 -0
- package/src/components/TextArea/TextArea.jsx +53 -0
- package/src/components/TextArea/TextArea.module.css +35 -0
- package/src/components/TextArea/TextArea.stories.jsx +140 -0
- package/src/components/TextField/TextField.jsx +61 -0
- package/src/components/TextField/TextField.module.css +41 -0
- package/src/components/TextField/TextField.stories.jsx +243 -0
- package/src/components/ThumbnailPicker/ThumbColors/ThumbColors.js +101 -0
- package/src/components/ThumbnailPicker/ThumbGraphics/ThumbGraphics.js +90 -0
- package/src/components/ThumbnailPicker/ThumbGraphics/circles01.png +0 -0
- package/src/components/ThumbnailPicker/ThumbGraphics/circles02.png +0 -0
- package/src/components/ThumbnailPicker/ThumbGraphics/circles03.png +0 -0
- package/src/components/ThumbnailPicker/ThumbGraphics/circles04.png +0 -0
- package/src/components/ThumbnailPicker/ThumbGraphics/circles05.png +0 -0
- package/src/components/ThumbnailPicker/ThumbGraphics/circles06.png +0 -0
- package/src/components/ThumbnailPicker/ThumbGraphics/lines01.png +0 -0
- package/src/components/ThumbnailPicker/ThumbGraphics/lines02.png +0 -0
- package/src/components/ThumbnailPicker/ThumbGraphics/lines03.png +0 -0
- package/src/components/ThumbnailPicker/ThumbGraphics/lines04.png +0 -0
- package/src/components/ThumbnailPicker/ThumbGraphics/lines05.png +0 -0
- package/src/components/ThumbnailPicker/ThumbGraphics/lines06.png +0 -0
- package/src/components/ThumbnailPicker/ThumbGraphics/patterns01.png +0 -0
- package/src/components/ThumbnailPicker/ThumbGraphics/patterns02.png +0 -0
- package/src/components/ThumbnailPicker/ThumbGraphics/patterns03.png +0 -0
- package/src/components/ThumbnailPicker/ThumbGraphics/patterns04.png +0 -0
- package/src/components/ThumbnailPicker/ThumbGraphics/shapes01.png +0 -0
- package/src/components/ThumbnailPicker/ThumbGraphics/shapes02.png +0 -0
- package/src/components/ThumbnailPicker/ThumbGraphics/shapes03.png +0 -0
- package/src/components/ThumbnailPicker/ThumbGraphics/shapes04.png +0 -0
- package/src/components/ThumbnailPicker/ThumbGraphics/shapes05.png +0 -0
- package/src/components/ThumbnailPicker/ThumbGraphics/shapes06.png +0 -0
- package/src/components/ThumbnailPicker/ThumbGraphics/shapes07.png +0 -0
- package/src/components/ThumbnailPicker/ThumbGraphics/shapes08.png +0 -0
- package/src/components/ThumbnailPicker/ThumbGraphics/shapes09.png +0 -0
- package/src/components/ThumbnailPicker/ThumbGraphics/synth01.png +0 -0
- package/src/components/ThumbnailPicker/ThumbGraphics/synth02.png +0 -0
- package/src/components/ThumbnailPicker/ThumbGraphics/synth03.png +0 -0
- package/src/components/ThumbnailPicker/ThumbGraphics/synth04.png +0 -0
- package/src/components/ThumbnailPicker/ThumbGraphics/synth05.png +0 -0
- package/src/components/ThumbnailPicker/ThumbGraphics/waves01.png +0 -0
- package/src/components/ThumbnailPicker/ThumbGraphics/waves02.png +0 -0
- package/src/components/ThumbnailPicker/ThumbGraphics/waves03.png +0 -0
- package/src/components/ThumbnailPicker/ThumbGraphics/waves04.png +0 -0
- package/src/components/ThumbnailPicker/ThumbnailPicker.jsx +67 -0
- package/src/components/ThumbnailPicker/ThumbnailPicker.module.css +0 -0
- package/src/components/ThumbnailPicker/ThumbnailPicker.stories.jsx +406 -0
- package/src/components/ThumbnailPicker/getStyleFromID.js +31 -0
- package/src/components/TooltipWithInfoIcon/TooltipWithInfoIcon.jsx +18 -0
- package/src/components/TooltipWithInfoIcon/TooltipWithInfoIcon.module.css +6 -0
- package/src/components/TooltipWithInfoIcon/TooltipWithInfoIcon.stories.jsx +28 -0
- package/src/components/TrackControlButton/TrackControlButton.jsx +28 -0
- package/src/components/TrackControlButton/TrackControlButton.module.css +32 -0
- package/src/components/TrackControlButton/TrackControlButton.stories.jsx +47 -0
- package/src/components/TrackControlButton/index.js +1 -0
- package/src/components/TrackHeader/TrackHeader.jsx +143 -0
- package/src/components/TrackHeader/TrackHeader.module.css +194 -0
- package/src/components/TrackHeader/TrackHeader.stories.jsx +212 -0
- package/src/components/TrackHeader/TrackHeaderOptions/TrackHeaderOptions.jsx +18 -0
- package/src/components/TrackHeader/TrackHeaderOptions/TrackHeaderOptions.module.css +8 -0
- package/src/components/TrackHeader/TrackHeaderOptions/index.js +1 -0
- package/src/components/VoiceConversionForm/BesideFooter/BesideFooter.jsx +74 -0
- package/src/components/VoiceConversionForm/ClickableAvatar/ClickableAvatar.jsx +40 -0
- package/src/components/VoiceConversionForm/ClickableAvatar/ClickableAvatar.module.css +21 -0
- package/src/components/VoiceConversionForm/Concurrency/Concurrency.jsx +53 -0
- package/src/components/VoiceConversionForm/Concurrency/Concurrency.module.css +26 -0
- package/src/components/VoiceConversionForm/GenerationStatus/GenerationStatus.jsx +49 -0
- package/src/components/VoiceConversionForm/VoiceConversionForm.jsx +231 -0
- package/src/components/VoiceConversionForm/VoiceConversionForm.module.css +9 -0
- package/src/components/VoiceConversionForm/VoiceConversionForm.stories.jsx +582 -0
- package/src/components/VoiceConversionForm/VoiceDetails/VoiceDetails.jsx +93 -0
- package/src/components/VoiceConversionForm/VoiceDetails/VoiceDetails.module.css +44 -0
- package/src/components/VoiceConversionForm/VoiceList/VoiceList.jsx +84 -0
- package/src/components/VoiceConversionForm/VoiceList/VoiceList.module.css +11 -0
- package/src/components/VoiceConversionForm/Waveform/Waveform.jsx +262 -0
- package/src/components/VoiceConversionForm/Waveform/Waveform.module.css +36 -0
- package/src/components/theme/Theme.jsx +16 -0
- package/src/components/theme/Theme.stories.jsx +59 -0
- package/src/icons/AbbeyRoadIcon.jsx +117 -0
- package/src/icons/AccessibilityIcon.jsx +33 -0
- package/src/icons/AcousticGuitarIcon.jsx +16 -0
- package/src/icons/AddIcon.jsx +18 -0
- package/src/icons/AddLyricsIcon.jsx +25 -0
- package/src/icons/AddRoundIcon.jsx +26 -0
- package/src/icons/AirplayIcon.jsx +26 -0
- package/src/icons/AlertIcon.jsx +28 -0
- package/src/icons/AppIcon.jsx +18 -0
- package/src/icons/ArVrIcon.jsx +21 -0
- package/src/icons/ArrowDownIcon.jsx +26 -0
- package/src/icons/ArrowDownloadIcon.jsx +26 -0
- package/src/icons/ArrowLeftIcon.jsx +26 -0
- package/src/icons/ArrowRightIcon.jsx +26 -0
- package/src/icons/ArrowUpIcon.jsx +26 -0
- package/src/icons/ArrowsHorizontalIcon.jsx +26 -0
- package/src/icons/ArrowsVerticalIcon.jsx +26 -0
- package/src/icons/AtomIcon.jsx +32 -0
- package/src/icons/AttachmentIcon.jsx +26 -0
- package/src/icons/AudioAdjustmentsIcon.jsx +26 -0
- package/src/icons/AudioFileIcon.jsx +26 -0
- package/src/icons/AudioFilesIcon.jsx +26 -0
- package/src/icons/AutoplayIcon.jsx +26 -0
- package/src/icons/BackwardIcon.jsx +18 -0
- package/src/icons/BarsIcon.jsx +27 -0
- package/src/icons/BassIcon.jsx +39 -0
- package/src/icons/BoldIcon.jsx +21 -0
- package/src/icons/BookIcon.jsx +21 -0
- package/src/icons/BookmarkIcon.jsx +24 -0
- package/src/icons/BoxIcon.jsx +20 -0
- package/src/icons/BriefcaseIcon.jsx +26 -0
- package/src/icons/CalendarIcon.jsx +26 -0
- package/src/icons/CameraFlip2Icon.jsx +26 -0
- package/src/icons/CameraFlip3Icon.jsx +26 -0
- package/src/icons/CameraFlipIcon.jsx +26 -0
- package/src/icons/CameraIcon.jsx +33 -0
- package/src/icons/CameraRollIcon.jsx +31 -0
- package/src/icons/CarIcon.jsx +18 -0
- package/src/icons/CartIcon.jsx +28 -0
- package/src/icons/CassetteIcon.jsx +26 -0
- package/src/icons/CastIcon.jsx +20 -0
- package/src/icons/CdIcon.jsx +19 -0
- package/src/icons/CheckboxCicleIcon.jsx +26 -0
- package/src/icons/CheckboxFillIcon.jsx +25 -0
- package/src/icons/CheckboxOffIcon.jsx +25 -0
- package/src/icons/CheckboxOnIcon.jsx +25 -0
- package/src/icons/ChevronDownIcon.jsx +26 -0
- package/src/icons/ChevronLeftIcon.jsx +26 -0
- package/src/icons/ChevronRightIcon.jsx +26 -0
- package/src/icons/ChevronUpIcon.jsx +26 -0
- package/src/icons/ChordGrid2Icon.jsx +26 -0
- package/src/icons/ChordGridIcon.jsx +26 -0
- package/src/icons/ChordSequenceIcon.jsx +26 -0
- package/src/icons/Chords2Icon.jsx +25 -0
- package/src/icons/Chords3Icon.jsx +24 -0
- package/src/icons/ChordsDetection2Icon.jsx +31 -0
- package/src/icons/ChordsDetectionIcon.jsx +31 -0
- package/src/icons/ChordsIcon.jsx +25 -0
- package/src/icons/ClipIcon.jsx +27 -0
- package/src/icons/ClipboardIcon.jsx +23 -0
- package/src/icons/CloseIcon.jsx +27 -0
- package/src/icons/Cloud2Icon.jsx +24 -0
- package/src/icons/Cloud3Icon.jsx +24 -0
- package/src/icons/CloudDownload2Icon.jsx +26 -0
- package/src/icons/CloudDownloadErrorIcon.jsx +26 -0
- package/src/icons/CloudDownloadGradientIcon.jsx +44 -0
- package/src/icons/CloudDownloadIcon.jsx +26 -0
- package/src/icons/CloudIcon.jsx +20 -0
- package/src/icons/CloudUploadIcon.jsx +26 -0
- package/src/icons/CodeIcon.jsx +28 -0
- package/src/icons/CollectionsIcon.jsx +26 -0
- package/src/icons/CompressorIcon.jsx +25 -0
- package/src/icons/ComputerIcon.jsx +26 -0
- package/src/icons/CopilotIcon.jsx +26 -0
- package/src/icons/CountInIcon.jsx +23 -0
- package/src/icons/CountdownIcon.jsx +33 -0
- package/src/icons/CowbellIcon.jsx +25 -0
- package/src/icons/CropIcon.jsx +27 -0
- package/src/icons/CrownIcon.jsx +21 -0
- package/src/icons/CueBackIcon.jsx +25 -0
- package/src/icons/CueIcon.jsx +20 -0
- package/src/icons/CymbalsIcon.jsx +26 -0
- package/src/icons/DatabaseIcon.jsx +26 -0
- package/src/icons/DelayIcon.jsx +20 -0
- package/src/icons/DenoiserIcon.jsx +23 -0
- package/src/icons/DevicesIcon.jsx +26 -0
- package/src/icons/DialogueIcon.jsx +33 -0
- package/src/icons/DojoIcon.jsx +21 -0
- package/src/icons/DotsVertical2Icon.jsx +43 -0
- package/src/icons/DotsVerticalIcon.jsx +47 -0
- package/src/icons/DownloadApp2Icon.jsx +26 -0
- package/src/icons/DownloadAppIcon.jsx +23 -0
- package/src/icons/Drums2Icon.jsx +25 -0
- package/src/icons/DrumsIcon.jsx +18 -0
- package/src/icons/EditIcon.jsx +20 -0
- package/src/icons/EffectsIcon.jsx +25 -0
- package/src/icons/ElectricGuitarIcon.jsx +54 -0
- package/src/icons/EqIcon.jsx +20 -0
- package/src/icons/FeaturesIcon.jsx +24 -0
- package/src/icons/FileIcon.jsx +21 -0
- package/src/icons/FileNewIcon.jsx +26 -0
- package/src/icons/Filter2Icon.jsx +26 -0
- package/src/icons/FilterIcon.jsx +26 -0
- package/src/icons/FireIcon.jsx +21 -0
- package/src/icons/FlagIcon.jsx +21 -0
- package/src/icons/FlashGradientIcon.jsx +39 -0
- package/src/icons/FlashIcon.jsx +21 -0
- package/src/icons/FlatAndSharpIcon.jsx +25 -0
- package/src/icons/FlatIcon.jsx +20 -0
- package/src/icons/FolderIcon.jsx +32 -0
- package/src/icons/FolderPlusIcon.jsx +26 -0
- package/src/icons/ForwardIcon.jsx +18 -0
- package/src/icons/GiftIcon.jsx +21 -0
- package/src/icons/GlobeIcon.jsx +22 -0
- package/src/icons/GoalsIcon.jsx +25 -0
- package/src/icons/GraphIcon.jsx +21 -0
- package/src/icons/GuitarAmpIcon.jsx +41 -0
- package/src/icons/HamburgerMenu2Icon.jsx +26 -0
- package/src/icons/HamburgerMenu3Icon.jsx +26 -0
- package/src/icons/HandbagIcon.jsx +26 -0
- package/src/icons/HeadphonesIcon.jsx +26 -0
- package/src/icons/HeadphonesLeftIcon.jsx +30 -0
- package/src/icons/HeadphonesRightIcon.jsx +30 -0
- package/src/icons/HiFiGradientIcon.jsx +36 -0
- package/src/icons/HiFiIcon.jsx +112 -0
- package/src/icons/HiHatIcon.jsx +21 -0
- package/src/icons/HomeIcon.jsx +18 -0
- package/src/icons/Icons.stories.jsx +154 -0
- package/src/icons/ImageGalleryIcon.jsx +25 -0
- package/src/icons/ImageIcon.jsx +21 -0
- package/src/icons/Info2Icon.jsx +18 -0
- package/src/icons/InfoIcon.jsx +20 -0
- package/src/icons/InternetSignalIcon.jsx +26 -0
- package/src/icons/IpadIcon.jsx +20 -0
- package/src/icons/IsolateDrumsGradientIcon.jsx +41 -0
- package/src/icons/IsolateDrumsIcon.jsx +23 -0
- package/src/icons/KaraokeIcon.jsx +23 -0
- package/src/icons/KaraokeMicIcon.jsx +23 -0
- package/src/icons/KeyDetectionIcon.jsx +25 -0
- package/src/icons/KeyboardIcon.jsx +25 -0
- package/src/icons/KeysIcon.jsx +21 -0
- package/src/icons/KickdrumIcon.jsx +30 -0
- package/src/icons/Knob2Icon.jsx +27 -0
- package/src/icons/Knob3Icon.jsx +27 -0
- package/src/icons/KnobIcon.jsx +28 -0
- package/src/icons/LabIcon.jsx +21 -0
- package/src/icons/LaptopIcon.jsx +25 -0
- package/src/icons/LibraryIcon.jsx +31 -0
- package/src/icons/LinkIcon.jsx +21 -0
- package/src/icons/ListCheckIcon.jsx +26 -0
- package/src/icons/ListIcon.jsx +21 -0
- package/src/icons/LivePerformanceIcon.jsx +23 -0
- package/src/icons/LockIcon.jsx +28 -0
- package/src/icons/LogInIcon.jsx +21 -0
- package/src/icons/LogOutIcon.jsx +26 -0
- package/src/icons/LoopIcon.jsx +29 -0
- package/src/icons/LoopSection2Icon.jsx +26 -0
- package/src/icons/LoopSection3Icon.jsx +26 -0
- package/src/icons/LoopSectionIcon.jsx +26 -0
- package/src/icons/LyricsIcon.jsx +33 -0
- package/src/icons/MaracasIcon.jsx +24 -0
- package/src/icons/MasteringIcon.jsx +37 -0
- package/src/icons/Maximize2Icon.jsx +26 -0
- package/src/icons/MaximizeIcon.jsx +26 -0
- package/src/icons/MetronomeIcon.jsx +23 -0
- package/src/icons/Minimize2Icon.jsx +26 -0
- package/src/icons/MinimizeIcon.jsx +26 -0
- package/src/icons/Mixer2Icon.jsx +25 -0
- package/src/icons/MixerIcon.jsx +20 -0
- package/src/icons/MoisesIcon.jsx +47 -0
- package/src/icons/MoisesLogoIcon.jsx +43 -0
- package/src/icons/MoneyIcon.jsx +20 -0
- package/src/icons/MonoIcon.jsx +18 -0
- package/src/icons/MoonIcon.jsx +21 -0
- package/src/icons/More2Icon.jsx +44 -0
- package/src/icons/MoreIcon.jsx +51 -0
- package/src/icons/MultipleUsersIcon.jsx +26 -0
- package/src/icons/MusicAddIcon.jsx +26 -0
- package/src/icons/MusicControlIcon.jsx +23 -0
- package/src/icons/MusicDevice2Icon.jsx +23 -0
- package/src/icons/MusicDeviceIcon.jsx +25 -0
- package/src/icons/MusicIcon.jsx +26 -0
- package/src/icons/MusicListIcon.jsx +26 -0
- package/src/icons/MusicLoverIcon.jsx +23 -0
- package/src/icons/MusicNoteIcon.jsx +21 -0
- package/src/icons/MusicNotesIcon.jsx +26 -0
- package/src/icons/MusicRemoveIcon.jsx +26 -0
- package/src/icons/NewCollectionsIcon.jsx +25 -0
- package/src/icons/NextIcon.jsx +20 -0
- package/src/icons/NoAcousticGuitarIcon.jsx +23 -0
- package/src/icons/NoBassIcon.jsx +23 -0
- package/src/icons/NoChords2Icon.jsx +25 -0
- package/src/icons/NoChordsDetectionIcon.jsx +31 -0
- package/src/icons/NoCloud3Icon.jsx +23 -0
- package/src/icons/NoComputerIcon.jsx +26 -0
- package/src/icons/NoCymbalsIcon.jsx +26 -0
- package/src/icons/NoDialogueIcon.jsx +26 -0
- package/src/icons/NoDrums2Icon.jsx +23 -0
- package/src/icons/NoDrumsIcon.jsx +23 -0
- package/src/icons/NoElectricGuitarIcon.jsx +23 -0
- package/src/icons/NoFileIcon.jsx +26 -0
- package/src/icons/NoHeadphonesIcon.jsx +26 -0
- package/src/icons/NoHiHatIcon.jsx +26 -0
- package/src/icons/NoInternetSignalIcon.jsx +33 -0
- package/src/icons/NoKeysIcon.jsx +38 -0
- package/src/icons/NoKickdrumIcon.jsx +23 -0
- package/src/icons/NoLoopSection2Icon.jsx +23 -0
- package/src/icons/NoLoopSectionIcon.jsx +26 -0
- package/src/icons/NoLyricsIcon.jsx +25 -0
- package/src/icons/NoMaracasIcon.jsx +23 -0
- package/src/icons/NoMetronomeIcon.jsx +23 -0
- package/src/icons/NoMoneyIcon.jsx +26 -0
- package/src/icons/NoMusicIcon.jsx +32 -0
- package/src/icons/NoMusicNoteIcon.jsx +25 -0
- package/src/icons/NoPianoIcon.jsx +33 -0
- package/src/icons/NoSearchIcon.jsx +26 -0
- package/src/icons/NoSectionsIcon.jsx +25 -0
- package/src/icons/NoSnareIcon.jsx +26 -0
- package/src/icons/NoSoundEffectsIcon.jsx +23 -0
- package/src/icons/NoSoundIcon.jsx +23 -0
- package/src/icons/NoSoundtrackIcon.jsx +30 -0
- package/src/icons/NoSpliterIcon.jsx +23 -0
- package/src/icons/NoStringsIcon.jsx +23 -0
- package/src/icons/NoTomsIcon.jsx +23 -0
- package/src/icons/NoUkuleleIcon.jsx +26 -0
- package/src/icons/NoVideoIcon.jsx +26 -0
- package/src/icons/NoVocalsIcon.jsx +23 -0
- package/src/icons/NoVolume2Icon.jsx +26 -0
- package/src/icons/NoVolumeIcon.jsx +26 -0
- package/src/icons/NoWoodwindBrassIcon.jsx +23 -0
- package/src/icons/NotificationsIcon.jsx +26 -0
- package/src/icons/OffloadDeviceIcon.jsx +23 -0
- package/src/icons/PauseFilledIcon.jsx +27 -0
- package/src/icons/PauseIcon.jsx +22 -0
- package/src/icons/PianoIcon.jsx +25 -0
- package/src/icons/PinIcon.jsx +20 -0
- package/src/icons/Pip2Icon.jsx +18 -0
- package/src/icons/PipIcon.jsx +21 -0
- package/src/icons/PitchCorrectionIcon.jsx +25 -0
- package/src/icons/PitchIcon.jsx +21 -0
- package/src/icons/PlayAllIcon.jsx +25 -0
- package/src/icons/PlayBackSpeedIcon.jsx +37 -0
- package/src/icons/PlayCircleIcon.jsx +44 -0
- package/src/icons/PlayIcon.jsx +20 -0
- package/src/icons/PlayOnRepeatIcon.jsx +26 -0
- package/src/icons/PlusIcon.jsx +21 -0
- package/src/icons/PreferencesIcon.jsx +25 -0
- package/src/icons/PreviousIcon.jsx +25 -0
- package/src/icons/PriceTagIcon.jsx +26 -0
- package/src/icons/ProducerIcon.jsx +69 -0
- package/src/icons/PuzzlePiece2Icon.jsx +26 -0
- package/src/icons/PuzzlePieceIcon.jsx +26 -0
- package/src/icons/QuantizationIcon.jsx +25 -0
- package/src/icons/RadioIcon.jsx +36 -0
- package/src/icons/RadioOffIcon.jsx +26 -0
- package/src/icons/RecordIcon.jsx +15 -0
- package/src/icons/RecordingIcon.jsx +22 -0
- package/src/icons/RedoIcon.jsx +26 -0
- package/src/icons/RefreshBackIcon.jsx +32 -0
- package/src/icons/RefreshIcon.jsx +26 -0
- package/src/icons/RemoveFromDeviceIcon.jsx +23 -0
- package/src/icons/RemoveIcon.jsx +25 -0
- package/src/icons/ReorderIcon.jsx +26 -0
- package/src/icons/RepostIcon.jsx +26 -0
- package/src/icons/ReverbIcon.jsx +25 -0
- package/src/icons/RocketIcon.jsx +30 -0
- package/src/icons/SaveTimeIcon.jsx +26 -0
- package/src/icons/SearchIcon.jsx +32 -0
- package/src/icons/SectionsIcon.jsx +25 -0
- package/src/icons/Setlist2Icon.jsx +26 -0
- package/src/icons/SetlistIcon.jsx +26 -0
- package/src/icons/SettingsIcon.jsx +27 -0
- package/src/icons/SharpIcon.jsx +20 -0
- package/src/icons/ShiftIcon.jsx +20 -0
- package/src/icons/ShuffleIcon.jsx +26 -0
- package/src/icons/SidebarIslandIcon.jsx +26 -0
- package/src/icons/SidebarLeftIcon.jsx +25 -0
- package/src/icons/SidebarRightIcon.jsx +26 -0
- package/src/icons/SlidersIcon.jsx +26 -0
- package/src/icons/SnareIcon.jsx +18 -0
- package/src/icons/SongBarIcon.jsx +26 -0
- package/src/icons/SongDetailIcon.jsx +26 -0
- package/src/icons/Songkey2Icon.jsx +25 -0
- package/src/icons/SongwritingIcon.jsx +26 -0
- package/src/icons/SoundEffectsGradientIcon.jsx +39 -0
- package/src/icons/SoundEffectsIcon.jsx +26 -0
- package/src/icons/SoundbarIcon.jsx +26 -0
- package/src/icons/SoundtrackGradientIcon.jsx +44 -0
- package/src/icons/SoundtrackIcon.jsx +26 -0
- package/src/icons/SparkBarsIcon.jsx +25 -0
- package/src/icons/SparkleIcon.jsx +35 -0
- package/src/icons/SparklesGradientIcon.jsx +62 -0
- package/src/icons/SpatialAudioIcon.jsx +55 -0
- package/src/icons/SpeakerIcon.jsx +23 -0
- package/src/icons/SpeakerLoudIcon.jsx +34 -0
- package/src/icons/SpeedChangerIcon.jsx +30 -0
- package/src/icons/SpeedIcon.jsx +18 -0
- package/src/icons/SplitIcon.jsx +21 -0
- package/src/icons/SpliterGradientIcon.jsx +44 -0
- package/src/icons/SpliterIcon.jsx +26 -0
- package/src/icons/StarFilledIcon.jsx +23 -0
- package/src/icons/StarIcon.jsx +20 -0
- package/src/icons/Stop2Icon.jsx +15 -0
- package/src/icons/StringsIcon.jsx +36 -0
- package/src/icons/TargetIcon.jsx +33 -0
- package/src/icons/ThumbDownIcon.jsx +26 -0
- package/src/icons/ThumbUpIcon.jsx +26 -0
- package/src/icons/ThumbsIcon.jsx +26 -0
- package/src/icons/TomsIcon.jsx +21 -0
- package/src/icons/TransposeIcon.jsx +26 -0
- package/src/icons/TrashIcon.jsx +21 -0
- package/src/icons/TrimIcon.jsx +27 -0
- package/src/icons/Tuner2Icon.jsx +23 -0
- package/src/icons/TunerIcon.jsx +18 -0
- package/src/icons/TvIcon.jsx +20 -0
- package/src/icons/UkuleleIcon.jsx +49 -0
- package/src/icons/UndoIcon.jsx +26 -0
- package/src/icons/UploadIcon.jsx +29 -0
- package/src/icons/UserGroup3Icon.jsx +26 -0
- package/src/icons/UserGroupIcon.jsx +26 -0
- package/src/icons/UserIcon.jsx +27 -0
- package/src/icons/Video2Icon.jsx +31 -0
- package/src/icons/Video3Icon.jsx +24 -0
- package/src/icons/VideoFileIcon.jsx +30 -0
- package/src/icons/VideoFilesIcon.jsx +30 -0
- package/src/icons/VideoIcon.jsx +21 -0
- package/src/icons/VocalIcon.jsx +18 -0
- package/src/icons/VocalIsolationIcon.jsx +29 -0
- package/src/icons/VocalsBackgroundIcon.jsx +32 -0
- package/src/icons/VocalsIcon.jsx +26 -0
- package/src/icons/Volume0Icon.jsx +26 -0
- package/src/icons/Volume1Icon.jsx +26 -0
- package/src/icons/Volume2Icon.jsx +26 -0
- package/src/icons/VolumeBarIcon.jsx +25 -0
- package/src/icons/WaveIcon.jsx +21 -0
- package/src/icons/WaveformIcon.jsx +25 -0
- package/src/icons/WidgetIcon.jsx +35 -0
- package/src/icons/WindIcon.jsx +18 -0
- package/src/icons/WoodwindBrassIcon.jsx +23 -0
- package/src/icons/ZoomCloseIcon.jsx +38 -0
- package/src/icons/ZoomInIcon.jsx +32 -0
- package/src/icons.jsx +343 -0
- package/src/index.jsx +152 -0
- package/src/lib/menu/Menu.module.css +356 -0
- package/src/lib/menu/index.js +2 -0
- package/src/lib/menu/renderItem.jsx +190 -0
- package/src/primitives.jsx +71 -0
- package/src/styles.css +10 -0
- package/src/utils/avatarUtils.js +18 -0
- package/src/utils/constants.js +16 -0
- package/src/utils/use-isomorphic-layout-effect.js +6 -0
- package/src/utils/useEventListener.js +34 -0
- package/src/utils/useIsMobileViewport.js +32 -0
- package/src/utils/useMobileDrawer.js +41 -0
- 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
|
+
}
|