@umituz/react-native-ai-generation-content 1.26.2 → 1.26.4
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/package.json +3 -2
- package/src/domains/generation/application/feature-registry.ts +101 -0
- package/src/domains/generation/application/generation-strategy.factory.ts +128 -0
- package/src/domains/generation/domain/feature-config.types.ts +61 -0
- package/src/domains/generation/domain/generation.types.ts +74 -0
- package/src/domains/generation/index.ts +37 -0
- package/src/domains/generation/presentation/useAIGeneration.hook.ts +106 -0
- package/src/domains/wizard/infrastructure/strategies/wizard-strategy.factory.ts +3 -4
- package/src/index.ts +1 -25
- package/src/infrastructure/executors/executor-factory.ts +53 -0
- package/src/infrastructure/executors/image-executor.ts +133 -0
- package/src/infrastructure/executors/video-executor.ts +130 -0
- package/src/features/ai-hug/README.md +0 -438
- package/src/features/ai-hug/domain/index.ts +0 -5
- package/src/features/ai-hug/domain/types/ai-hug.types.ts +0 -25
- package/src/features/ai-hug/domain/types/index.ts +0 -7
- package/src/features/ai-hug/index.ts +0 -19
- package/src/features/ai-hug/presentation/components/AIHugFeature.tsx +0 -77
- package/src/features/ai-hug/presentation/components/index.ts +0 -2
- package/src/features/ai-hug/presentation/hooks/index.ts +0 -9
- package/src/features/ai-hug/presentation/hooks/useAIHugFeature.ts +0 -34
- package/src/features/ai-hug/presentation/index.ts +0 -6
- package/src/features/ai-kiss/README.md +0 -445
- package/src/features/ai-kiss/domain/index.ts +0 -5
- package/src/features/ai-kiss/domain/types/ai-kiss.types.ts +0 -25
- package/src/features/ai-kiss/domain/types/index.ts +0 -7
- package/src/features/ai-kiss/index.ts +0 -19
- package/src/features/ai-kiss/presentation/components/AIKissFeature.tsx +0 -77
- package/src/features/ai-kiss/presentation/components/index.ts +0 -2
- package/src/features/ai-kiss/presentation/hooks/index.ts +0 -9
- package/src/features/ai-kiss/presentation/hooks/useAIKissFeature.ts +0 -34
- package/src/features/ai-kiss/presentation/index.ts +0 -6
- package/src/features/anime-selfie/README.md +0 -396
- package/src/features/anime-selfie/domain/index.ts +0 -5
- package/src/features/anime-selfie/domain/types/anime-selfie.types.ts +0 -52
- package/src/features/anime-selfie/domain/types/index.ts +0 -8
- package/src/features/anime-selfie/index.ts +0 -20
- package/src/features/anime-selfie/presentation/components/AnimeSelfieFeature.tsx +0 -86
- package/src/features/anime-selfie/presentation/components/index.ts +0 -2
- package/src/features/anime-selfie/presentation/hooks/index.ts +0 -9
- package/src/features/anime-selfie/presentation/hooks/useAnimeSelfieFeature.ts +0 -59
- package/src/features/anime-selfie/presentation/index.ts +0 -6
- package/src/features/couple-future/README.md +0 -445
- package/src/features/couple-future/domain/types.ts +0 -63
- package/src/features/couple-future/domain/wizard-config.adapter.ts +0 -76
- package/src/features/couple-future/domain/wizard.types.ts +0 -121
- package/src/features/couple-future/index.ts +0 -83
- package/src/features/couple-future/infrastructure/coupleFeatureRegistry.ts +0 -76
- package/src/features/couple-future/infrastructure/couplePromptEnhancer.ts +0 -100
- package/src/features/couple-future/infrastructure/executor.ts +0 -188
- package/src/features/couple-future/infrastructure/generationUtils.ts +0 -228
- package/src/features/couple-future/presentation/components/ArtStyleSelector.tsx +0 -146
- package/src/features/couple-future/presentation/components/ArtistStyleSelector.tsx +0 -122
- package/src/features/couple-future/presentation/components/CoupleFutureWizard.tsx +0 -239
- package/src/features/couple-future/presentation/components/GeneratingStepContent.tsx +0 -86
- package/src/features/couple-future/presentation/components/RomanticMoodSelector.tsx +0 -147
- package/src/features/couple-future/presentation/components/WardrobeSelector.tsx +0 -141
- package/src/features/couple-future/presentation/components/index.ts +0 -12
- package/src/features/couple-future/presentation/hooks/useCoupleFutureFlow.ts +0 -166
- package/src/features/couple-future/presentation/hooks/useCoupleFutureFlow.types.ts +0 -69
- package/src/features/couple-future/presentation/hooks/useCoupleFutureHandlers.ts +0 -117
- package/src/features/couple-future/presentation/screens/CoupleFeatureScreen.tsx +0 -113
- package/src/features/face-swap/README.md +0 -431
- package/src/features/face-swap/domain/index.ts +0 -5
- package/src/features/face-swap/domain/types/face-swap.types.ts +0 -26
- package/src/features/face-swap/domain/types/index.ts +0 -7
- package/src/features/face-swap/index.ts +0 -19
- package/src/features/face-swap/presentation/components/FaceSwapFeature.tsx +0 -87
- package/src/features/face-swap/presentation/components/index.ts +0 -2
- package/src/features/face-swap/presentation/hooks/index.ts +0 -6
- package/src/features/face-swap/presentation/hooks/useFaceSwapFeature.ts +0 -35
- package/src/features/face-swap/presentation/index.ts +0 -6
- package/src/features/hd-touch-up/README.md +0 -396
- package/src/features/hd-touch-up/domain/index.ts +0 -1
- package/src/features/hd-touch-up/domain/types/hd-touch-up.types.ts +0 -62
- package/src/features/hd-touch-up/domain/types/index.ts +0 -9
- package/src/features/hd-touch-up/index.ts +0 -21
- package/src/features/hd-touch-up/presentation/components/HDTouchUpFeature.tsx +0 -86
- package/src/features/hd-touch-up/presentation/components/index.ts +0 -2
- package/src/features/hd-touch-up/presentation/hooks/index.ts +0 -1
- package/src/features/hd-touch-up/presentation/hooks/useHDTouchUpFeature.ts +0 -23
- package/src/features/hd-touch-up/presentation/index.ts +0 -2
- package/src/features/image-to-image/README.md +0 -459
- package/src/features/image-to-image/domain/index.ts +0 -1
- package/src/features/image-to-image/domain/types/base.types.ts +0 -48
- package/src/features/image-to-image/domain/types/index.ts +0 -1
- package/src/features/image-to-image/domain/types/partials/config.types.ts +0 -37
- package/src/features/image-to-image/domain/types/partials/hook.types.ts +0 -53
- package/src/features/image-to-image/domain/types/partials/metadata.types.ts +0 -32
- package/src/features/image-to-image/domain/types/partials/result.types.ts +0 -44
- package/src/features/image-to-image/domain/types/partials/state.types.ts +0 -34
- package/src/features/image-to-image/domain/types/partials/translation.types.ts +0 -57
- package/src/features/image-to-image/index.ts +0 -2
- package/src/features/image-to-image/presentation/hooks/index.ts +0 -3
- package/src/features/image-to-image/presentation/hooks/useDualImageFeature.ts +0 -204
- package/src/features/image-to-image/presentation/hooks/useImageWithPromptFeature.ts +0 -223
- package/src/features/image-to-image/presentation/hooks/useSingleImageFeature.ts +0 -166
- package/src/features/image-to-image/presentation/index.ts +0 -1
- package/src/features/image-to-video/README.md +0 -414
- package/src/features/image-to-video/domain/constants/animation.constants.ts +0 -47
- package/src/features/image-to-video/domain/constants/duration.constants.ts +0 -13
- package/src/features/image-to-video/domain/constants/form.constants.ts +0 -22
- package/src/features/image-to-video/domain/constants/index.ts +0 -23
- package/src/features/image-to-video/domain/constants/music.constants.ts +0 -53
- package/src/features/image-to-video/domain/index.ts +0 -5
- package/src/features/image-to-video/domain/types/animation.types.ts +0 -20
- package/src/features/image-to-video/domain/types/config.types.ts +0 -56
- package/src/features/image-to-video/domain/types/duration.types.ts +0 -11
- package/src/features/image-to-video/domain/types/form.types.ts +0 -35
- package/src/features/image-to-video/domain/types/image-to-video.types.ts +0 -122
- package/src/features/image-to-video/domain/types/index.ts +0 -39
- package/src/features/image-to-video/domain/types/music.types.ts +0 -21
- package/src/features/image-to-video/index.ts +0 -116
- package/src/features/image-to-video/infrastructure/index.ts +0 -1
- package/src/features/image-to-video/infrastructure/services/image-to-video-executor.ts +0 -154
- package/src/features/image-to-video/infrastructure/services/index.ts +0 -5
- package/src/features/image-to-video/presentation/components/AddMoreCard.tsx +0 -52
- package/src/features/image-to-video/presentation/components/AnimationStyleSelector.tsx +0 -135
- package/src/features/image-to-video/presentation/components/DurationSelector.tsx +0 -110
- package/src/features/image-to-video/presentation/components/EmptyGridState.tsx +0 -69
- package/src/features/image-to-video/presentation/components/GridImageItem.tsx +0 -64
- package/src/features/image-to-video/presentation/components/ImageSelectionGrid.styles.ts +0 -84
- package/src/features/image-to-video/presentation/components/ImageSelectionGrid.tsx +0 -77
- package/src/features/image-to-video/presentation/components/ImageSelectionGrid.types.ts +0 -18
- package/src/features/image-to-video/presentation/components/MusicMoodSelector.tsx +0 -181
- package/src/features/image-to-video/presentation/components/index.ts +0 -30
- package/src/features/image-to-video/presentation/hooks/index.ts +0 -27
- package/src/features/image-to-video/presentation/hooks/useFormState.ts +0 -116
- package/src/features/image-to-video/presentation/hooks/useGeneration.ts +0 -85
- package/src/features/image-to-video/presentation/hooks/useGenerationExecution.ts +0 -143
- package/src/features/image-to-video/presentation/hooks/useImageToVideoFeature.ts +0 -107
- package/src/features/image-to-video/presentation/hooks/useImageToVideoForm.ts +0 -119
- package/src/features/image-to-video/presentation/hooks/useImageToVideoValidation.ts +0 -46
- package/src/features/image-to-video/presentation/index.ts +0 -5
- package/src/features/love-message/domain/constants.ts +0 -162
- package/src/features/love-message/domain/types.ts +0 -58
- package/src/features/love-message/index.ts +0 -37
- package/src/features/love-message/infrastructure/persistence/PartnerProfileRepository.ts +0 -52
- package/src/features/love-message/infrastructure/prompts/messagePromptBuilder.ts +0 -109
- package/src/features/love-message/infrastructure/services/LoveMessageService.ts +0 -35
- package/src/features/love-message/presentation/components/CategoryGrid.tsx +0 -88
- package/src/features/love-message/presentation/components/DetailsInput.tsx +0 -74
- package/src/features/love-message/presentation/components/ExploreHeader.tsx +0 -67
- package/src/features/love-message/presentation/components/FieldInput.tsx +0 -83
- package/src/features/love-message/presentation/components/GeneratorHeader.tsx +0 -88
- package/src/features/love-message/presentation/components/LoveMessageHeroSection.tsx +0 -114
- package/src/features/love-message/presentation/components/MessageListItem.tsx +0 -77
- package/src/features/love-message/presentation/components/MessageResult.tsx +0 -105
- package/src/features/love-message/presentation/components/PartnerInput.tsx +0 -78
- package/src/features/love-message/presentation/components/ProgressDots.tsx +0 -48
- package/src/features/love-message/presentation/components/StepDetails.tsx +0 -23
- package/src/features/love-message/presentation/components/StepPartner.tsx +0 -116
- package/src/features/love-message/presentation/components/StepVibe.tsx +0 -30
- package/src/features/love-message/presentation/components/ToneSelector.tsx +0 -100
- package/src/features/love-message/presentation/components/TrendingSection.tsx +0 -130
- package/src/features/love-message/presentation/components/TypeSelector.tsx +0 -99
- package/src/features/love-message/presentation/hooks/useLoveMessageGenerator.ts +0 -114
- package/src/features/love-message/presentation/hooks/usePartnerProfile.ts +0 -43
- package/src/features/love-message/presentation/navigation/LoveMessageStack.tsx +0 -39
- package/src/features/love-message/presentation/screens/LoveMessageExploreScreen.tsx +0 -53
- package/src/features/love-message/presentation/screens/LoveMessageGeneratorScreen.tsx +0 -169
- package/src/features/love-message/presentation/screens/MessageListScreen.tsx +0 -127
- package/src/features/love-message/presentation/screens/PartnerProfileScreen.tsx +0 -119
- package/src/features/meme-generator/README.md +0 -408
- package/src/features/meme-generator/index.ts +0 -3
- package/src/features/meme-generator/infrastructure/services/MemeGenerationService.ts +0 -87
- package/src/features/meme-generator/presentation/components/MemeGeneratorFeature.tsx +0 -180
- package/src/features/meme-generator/presentation/components/index.ts +0 -2
- package/src/features/meme-generator/presentation/screens/MemeGeneratorScreen.tsx +0 -168
- package/src/features/meme-generator/presentation/screens/index.ts +0 -1
- package/src/features/partner-upload/domain/types.ts +0 -59
- package/src/features/partner-upload/index.ts +0 -30
- package/src/features/partner-upload/presentation/components/PartnerInfoInput.tsx +0 -112
- package/src/features/partner-upload/presentation/components/PhotoTips.tsx +0 -53
- package/src/features/partner-upload/presentation/components/index.ts +0 -4
- package/src/features/partner-upload/presentation/hooks/index.ts +0 -7
- package/src/features/partner-upload/presentation/hooks/usePartnerStep.ts +0 -130
- package/src/features/partner-upload/presentation/screens/PartnerStepScreen.tsx +0 -231
- package/src/features/partner-upload/presentation/screens/index.ts +0 -6
- package/src/features/photo-restoration/README.md +0 -399
- package/src/features/photo-restoration/domain/index.ts +0 -1
- package/src/features/photo-restoration/domain/types/index.ts +0 -9
- package/src/features/photo-restoration/domain/types/photo-restore.types.ts +0 -64
- package/src/features/photo-restoration/index.ts +0 -22
- package/src/features/photo-restoration/presentation/components/PhotoRestoreFeature.tsx +0 -88
- package/src/features/photo-restoration/presentation/components/PhotoRestoreResultView.tsx +0 -86
- package/src/features/photo-restoration/presentation/components/index.ts +0 -4
- package/src/features/photo-restoration/presentation/hooks/index.ts +0 -1
- package/src/features/photo-restoration/presentation/hooks/usePhotoRestoreFeature.ts +0 -23
- package/src/features/photo-restoration/presentation/index.ts +0 -2
- package/src/features/remove-background/README.md +0 -393
- package/src/features/remove-background/domain/index.ts +0 -5
- package/src/features/remove-background/domain/types/index.ts +0 -7
- package/src/features/remove-background/domain/types/remove-background.types.ts +0 -28
- package/src/features/remove-background/index.ts +0 -19
- package/src/features/remove-background/presentation/components/RemoveBackgroundFeature.tsx +0 -86
- package/src/features/remove-background/presentation/components/index.ts +0 -2
- package/src/features/remove-background/presentation/hooks/index.ts +0 -1
- package/src/features/remove-background/presentation/hooks/useRemoveBackgroundFeature.ts +0 -28
- package/src/features/remove-background/presentation/index.ts +0 -6
- package/src/features/remove-object/README.md +0 -405
- package/src/features/remove-object/domain/index.ts +0 -5
- package/src/features/remove-object/domain/types/index.ts +0 -7
- package/src/features/remove-object/domain/types/remove-object.types.ts +0 -54
- package/src/features/remove-object/index.ts +0 -23
- package/src/features/remove-object/presentation/components/RemoveObjectFeature.tsx +0 -136
- package/src/features/remove-object/presentation/components/index.ts +0 -2
- package/src/features/remove-object/presentation/hooks/index.ts +0 -9
- package/src/features/remove-object/presentation/hooks/useRemoveObjectFeature.ts +0 -221
- package/src/features/remove-object/presentation/index.ts +0 -6
- package/src/features/replace-background/README.md +0 -405
- package/src/features/replace-background/domain/types/index.ts +0 -7
- package/src/features/replace-background/domain/types/replace-background.types.ts +0 -33
- package/src/features/replace-background/index.ts +0 -23
- package/src/features/replace-background/presentation/components/ReplaceBackgroundFeature.tsx +0 -105
- package/src/features/replace-background/presentation/components/index.ts +0 -6
- package/src/features/replace-background/presentation/hooks/index.ts +0 -9
- package/src/features/replace-background/presentation/hooks/useReplaceBackgroundFeature.ts +0 -55
- package/src/features/scenarios/domain/types.ts +0 -147
- package/src/features/scenarios/index.ts +0 -64
- package/src/features/scenarios/presentation/components/InspirationChips.tsx +0 -82
- package/src/features/scenarios/presentation/components/MagicPromptHeadline.tsx +0 -79
- package/src/features/scenarios/presentation/components/ScenarioGrid.tsx +0 -224
- package/src/features/scenarios/presentation/components/ScenarioHeader.tsx +0 -55
- package/src/features/scenarios/presentation/components/StyleSelector.tsx +0 -119
- package/src/features/scenarios/presentation/components/index.ts +0 -18
- package/src/features/scenarios/presentation/containers/CategoryNavigationContainer.tsx +0 -178
- package/src/features/scenarios/presentation/screens/HierarchicalScenarioListScreen.tsx +0 -266
- package/src/features/scenarios/presentation/screens/MagicPromptScreen.tsx +0 -242
- package/src/features/scenarios/presentation/screens/MainCategoryScreen.tsx +0 -198
- package/src/features/scenarios/presentation/screens/ScenarioPreviewScreen.tsx +0 -164
- package/src/features/scenarios/presentation/screens/ScenarioSelectorScreen.tsx +0 -66
- package/src/features/scenarios/presentation/screens/SubCategoryScreen.tsx +0 -216
- package/src/features/script-generator/README.md +0 -433
- package/src/features/script-generator/domain/constants/index.ts +0 -10
- package/src/features/script-generator/domain/types/script.types.ts +0 -30
- package/src/features/script-generator/index.ts +0 -5
- package/src/features/script-generator/infrastructure/services/ScriptGenerationService.ts +0 -62
- package/src/features/script-generator/presentation/components/ScriptDisplay.tsx +0 -158
- package/src/features/script-generator/presentation/components/VideoTypeSelector.tsx +0 -102
- package/src/features/script-generator/presentation/components/index.ts +0 -2
- package/src/features/script-generator/presentation/hooks/index.ts +0 -1
- package/src/features/script-generator/presentation/hooks/useScriptGenerator.ts +0 -77
- package/src/features/shared/README.md +0 -311
- package/src/features/shared/dual-image-video/domain/types/dual-image-video.types.ts +0 -88
- package/src/features/shared/dual-image-video/domain/types/index.ts +0 -14
- package/src/features/shared/dual-image-video/index.ts +0 -17
- package/src/features/shared/dual-image-video/presentation/hooks/index.ts +0 -5
- package/src/features/shared/dual-image-video/presentation/hooks/useDualImageVideoFeature.ts +0 -185
- package/src/features/shared/index.ts +0 -6
- package/src/features/text-to-image/README.md +0 -394
- package/src/features/text-to-image/domain/constants/index.ts +0 -8
- package/src/features/text-to-image/domain/constants/options.constants.ts +0 -39
- package/src/features/text-to-image/domain/constants/styles.constants.ts +0 -34
- package/src/features/text-to-image/domain/index.ts +0 -7
- package/src/features/text-to-image/domain/types/config.types.ts +0 -75
- package/src/features/text-to-image/domain/types/form.types.ts +0 -58
- package/src/features/text-to-image/domain/types/index.ts +0 -38
- package/src/features/text-to-image/domain/types/text-to-image.types.ts +0 -58
- package/src/features/text-to-image/index.ts +0 -116
- package/src/features/text-to-image/infrastructure/index.ts +0 -1
- package/src/features/text-to-image/infrastructure/services/index.ts +0 -5
- package/src/features/text-to-image/infrastructure/services/text-to-image-executor.ts +0 -147
- package/src/features/text-to-image/presentation/components/index.ts +0 -30
- package/src/features/text-to-image/presentation/hooks/index.ts +0 -30
- package/src/features/text-to-image/presentation/hooks/useFormState.ts +0 -103
- package/src/features/text-to-image/presentation/hooks/useGeneration.ts +0 -139
- package/src/features/text-to-image/presentation/hooks/useTextToImageFeature.ts +0 -111
- package/src/features/text-to-image/presentation/hooks/useTextToImageForm.ts +0 -58
- package/src/features/text-to-image/presentation/index.ts +0 -7
- package/src/features/text-to-video/README.md +0 -412
- package/src/features/text-to-video/domain/index.ts +0 -1
- package/src/features/text-to-video/domain/types/callback.types.ts +0 -69
- package/src/features/text-to-video/domain/types/component.types.ts +0 -106
- package/src/features/text-to-video/domain/types/config.types.ts +0 -61
- package/src/features/text-to-video/domain/types/index.ts +0 -56
- package/src/features/text-to-video/domain/types/request.types.ts +0 -36
- package/src/features/text-to-video/domain/types/state.types.ts +0 -53
- package/src/features/text-to-video/index.ts +0 -68
- package/src/features/text-to-video/infrastructure/index.ts +0 -1
- package/src/features/text-to-video/infrastructure/services/index.ts +0 -5
- package/src/features/text-to-video/infrastructure/services/text-to-video-executor.ts +0 -141
- package/src/features/text-to-video/presentation/components/FrameSelector.tsx +0 -153
- package/src/features/text-to-video/presentation/components/GenerationTabs.tsx +0 -73
- package/src/features/text-to-video/presentation/components/HeroSection.tsx +0 -61
- package/src/features/text-to-video/presentation/components/HintCarousel.tsx +0 -96
- package/src/features/text-to-video/presentation/components/OptionsPanel.tsx +0 -121
- package/src/features/text-to-video/presentation/components/index.ts +0 -10
- package/src/features/text-to-video/presentation/hooks/index.ts +0 -17
- package/src/features/text-to-video/presentation/hooks/useTextToVideoFeature.ts +0 -225
- package/src/features/text-to-video/presentation/hooks/useTextToVideoForm.ts +0 -134
- package/src/features/text-to-video/presentation/index.ts +0 -7
- package/src/features/text-to-voice/README.md +0 -445
- package/src/features/text-to-voice/domain/index.ts +0 -1
- package/src/features/text-to-voice/domain/types/component.types.ts +0 -91
- package/src/features/text-to-voice/domain/types/config.types.ts +0 -34
- package/src/features/text-to-voice/domain/types/form.types.ts +0 -39
- package/src/features/text-to-voice/domain/types/generation.types.ts +0 -43
- package/src/features/text-to-voice/domain/types/index.ts +0 -38
- package/src/features/text-to-voice/index.ts +0 -53
- package/src/features/text-to-voice/infrastructure/index.ts +0 -1
- package/src/features/text-to-voice/infrastructure/services/index.ts +0 -4
- package/src/features/text-to-voice/infrastructure/services/text-to-voice-executor.ts +0 -103
- package/src/features/text-to-voice/presentation/components/TextToVoiceAudioPlayer.tsx +0 -81
- package/src/features/text-to-voice/presentation/components/index.ts +0 -7
- package/src/features/text-to-voice/presentation/hooks/index.ts +0 -6
- package/src/features/text-to-voice/presentation/hooks/useTextToVoiceForm.ts +0 -91
- package/src/features/text-to-voice/presentation/hooks/useTextToVoiceGeneration.ts +0 -116
- package/src/features/text-to-voice/presentation/index.ts +0 -2
- package/src/features/upscaling/README.md +0 -396
- package/src/features/upscaling/domain/index.ts +0 -1
- package/src/features/upscaling/domain/types/index.ts +0 -1
- package/src/features/upscaling/domain/types/upscale.types.ts +0 -23
- package/src/features/upscaling/index.ts +0 -20
- package/src/features/upscaling/presentation/components/ComparisonSlider.tsx +0 -200
- package/src/features/upscaling/presentation/components/UpscaleFeature.tsx +0 -89
- package/src/features/upscaling/presentation/components/UpscaleResultView.tsx +0 -98
- package/src/features/upscaling/presentation/components/index.ts +0 -6
- package/src/features/upscaling/presentation/hooks/index.ts +0 -1
- package/src/features/upscaling/presentation/hooks/useUpscaleFeature.ts +0 -28
- package/src/features/upscaling/presentation/index.ts +0 -2
- package/src/features/wizard/domain/types.ts +0 -154
- package/src/features/wizard/index.ts +0 -43
- package/src/features/wizard/presentation/components/AIFeatureWizard.tsx +0 -231
- package/src/features/wizard/presentation/components/AIGenerationWizard.tsx +0 -132
- package/src/features/wizard/presentation/hooks/useWizard.ts +0 -120
- package/src/features/wizard/presentation/store/useWizardStore.ts +0 -82
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SubCategoryScreen
|
|
3
|
-
* Displays sub-categories for a selected main category
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import React, { useMemo, useCallback, useEffect } from "react";
|
|
7
|
-
import {
|
|
8
|
-
View,
|
|
9
|
-
FlatList,
|
|
10
|
-
StyleSheet,
|
|
11
|
-
TouchableOpacity,
|
|
12
|
-
type ListRenderItemInfo,
|
|
13
|
-
} from "react-native";
|
|
14
|
-
import {
|
|
15
|
-
AtomicText,
|
|
16
|
-
AtomicIcon,
|
|
17
|
-
useAppDesignTokens,
|
|
18
|
-
ScreenLayout,
|
|
19
|
-
type DesignTokens,
|
|
20
|
-
} from "@umituz/react-native-design-system";
|
|
21
|
-
import { useSafeAreaInsets } from "react-native-safe-area-context";
|
|
22
|
-
import { AIGenScreenHeader } from "../../../../presentation/components";
|
|
23
|
-
import type { ScenarioSubCategory } from "../../domain/types";
|
|
24
|
-
|
|
25
|
-
export interface SubCategoryScreenProps {
|
|
26
|
-
readonly mainCategoryId: string;
|
|
27
|
-
readonly subCategories: readonly ScenarioSubCategory[];
|
|
28
|
-
readonly onSelectSubCategory: (subCategoryId: string) => void;
|
|
29
|
-
readonly onBack: () => void;
|
|
30
|
-
readonly t: (key: string) => string;
|
|
31
|
-
readonly headerTitleKey?: string;
|
|
32
|
-
readonly headerDescriptionKey?: string;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export const SubCategoryScreen: React.FC<SubCategoryScreenProps> = ({
|
|
36
|
-
mainCategoryId,
|
|
37
|
-
subCategories,
|
|
38
|
-
onSelectSubCategory,
|
|
39
|
-
onBack,
|
|
40
|
-
t,
|
|
41
|
-
headerTitleKey,
|
|
42
|
-
headerDescriptionKey,
|
|
43
|
-
}) => {
|
|
44
|
-
const tokens = useAppDesignTokens();
|
|
45
|
-
const insets = useSafeAreaInsets();
|
|
46
|
-
|
|
47
|
-
const filteredSubCategories = useMemo(() => {
|
|
48
|
-
const filtered = subCategories.filter((sub) => sub.mainCategoryId === mainCategoryId);
|
|
49
|
-
|
|
50
|
-
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
51
|
-
console.log("[SubCategoryScreen] Filtered sub-categories", {
|
|
52
|
-
mainCategoryId,
|
|
53
|
-
totalSubCategories: subCategories.length,
|
|
54
|
-
filteredCount: filtered.length,
|
|
55
|
-
sampleMainCategoryIds: subCategories.slice(0, 5).map(s => s.mainCategoryId),
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
return filtered;
|
|
60
|
-
}, [subCategories, mainCategoryId]);
|
|
61
|
-
|
|
62
|
-
// Debug: Monitor component state
|
|
63
|
-
useEffect(() => {
|
|
64
|
-
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
65
|
-
console.log("[SubCategoryScreen] Component mounted/updated", {
|
|
66
|
-
mainCategoryId,
|
|
67
|
-
filteredSubCategoriesCount: filteredSubCategories.length,
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
}, [mainCategoryId, filteredSubCategories]);
|
|
71
|
-
|
|
72
|
-
const styles = useMemo(() => createStyles(tokens), [tokens]);
|
|
73
|
-
|
|
74
|
-
const handleSubCategoryPress = useCallback(
|
|
75
|
-
(subCategoryId: string) => {
|
|
76
|
-
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
77
|
-
console.log("[SubCategoryScreen] Sub-category pressed", { subCategoryId });
|
|
78
|
-
}
|
|
79
|
-
onSelectSubCategory(subCategoryId);
|
|
80
|
-
},
|
|
81
|
-
[onSelectSubCategory]
|
|
82
|
-
);
|
|
83
|
-
|
|
84
|
-
const renderItem = useCallback(
|
|
85
|
-
({ item }: ListRenderItemInfo<ScenarioSubCategory>) => {
|
|
86
|
-
const title = item.title;
|
|
87
|
-
const description = item.description || "";
|
|
88
|
-
|
|
89
|
-
return (
|
|
90
|
-
<TouchableOpacity
|
|
91
|
-
style={[
|
|
92
|
-
styles.card,
|
|
93
|
-
{
|
|
94
|
-
backgroundColor: tokens.colors.surface,
|
|
95
|
-
borderColor: tokens.colors.border,
|
|
96
|
-
},
|
|
97
|
-
]}
|
|
98
|
-
onPress={() => handleSubCategoryPress(item.id)}
|
|
99
|
-
activeOpacity={0.7}
|
|
100
|
-
testID={`sub-category-${item.id}`}
|
|
101
|
-
>
|
|
102
|
-
<View style={styles.cardContent}>
|
|
103
|
-
<View
|
|
104
|
-
style={[
|
|
105
|
-
styles.iconContainer,
|
|
106
|
-
{ backgroundColor: tokens.colors.surfaceVariant },
|
|
107
|
-
]}
|
|
108
|
-
>
|
|
109
|
-
{item.emoji ? (
|
|
110
|
-
<AtomicText style={styles.emoji}>{item.emoji}</AtomicText>
|
|
111
|
-
) : (
|
|
112
|
-
<AtomicIcon name={item.icon as never} size="lg" color="primary" />
|
|
113
|
-
)}
|
|
114
|
-
</View>
|
|
115
|
-
<View style={styles.textContent}>
|
|
116
|
-
<AtomicText
|
|
117
|
-
style={[styles.title, { color: tokens.colors.textPrimary }]}
|
|
118
|
-
>
|
|
119
|
-
{title}
|
|
120
|
-
</AtomicText>
|
|
121
|
-
{description ? (
|
|
122
|
-
<AtomicText
|
|
123
|
-
style={[
|
|
124
|
-
styles.description,
|
|
125
|
-
{ color: tokens.colors.textSecondary },
|
|
126
|
-
]}
|
|
127
|
-
numberOfLines={2}
|
|
128
|
-
>
|
|
129
|
-
{description}
|
|
130
|
-
</AtomicText>
|
|
131
|
-
) : null}
|
|
132
|
-
</View>
|
|
133
|
-
<AtomicIcon
|
|
134
|
-
name="chevron-forward"
|
|
135
|
-
size="md"
|
|
136
|
-
color="textSecondary"
|
|
137
|
-
/>
|
|
138
|
-
</View>
|
|
139
|
-
</TouchableOpacity>
|
|
140
|
-
);
|
|
141
|
-
},
|
|
142
|
-
[tokens, styles, handleSubCategoryPress]
|
|
143
|
-
);
|
|
144
|
-
|
|
145
|
-
return (
|
|
146
|
-
<ScreenLayout
|
|
147
|
-
scrollable={false}
|
|
148
|
-
edges={["left", "right"]}
|
|
149
|
-
backgroundColor={tokens.colors.backgroundPrimary}
|
|
150
|
-
>
|
|
151
|
-
<AIGenScreenHeader
|
|
152
|
-
title={headerTitleKey ? t(headerTitleKey) : t("scenario.sub_category.title")}
|
|
153
|
-
description={headerDescriptionKey ? t(headerDescriptionKey) : t("scenario.sub_category.subtitle")}
|
|
154
|
-
onNavigationPress={onBack}
|
|
155
|
-
/>
|
|
156
|
-
<FlatList
|
|
157
|
-
data={filteredSubCategories}
|
|
158
|
-
showsVerticalScrollIndicator={false}
|
|
159
|
-
renderItem={renderItem}
|
|
160
|
-
keyExtractor={(item) => item.id}
|
|
161
|
-
contentContainerStyle={[
|
|
162
|
-
styles.listContent,
|
|
163
|
-
{ paddingBottom: insets.bottom + 100 },
|
|
164
|
-
]}
|
|
165
|
-
removeClippedSubviews
|
|
166
|
-
maxToRenderPerBatch={10}
|
|
167
|
-
updateCellsBatchingPeriod={50}
|
|
168
|
-
initialNumToRender={10}
|
|
169
|
-
windowSize={11}
|
|
170
|
-
/>
|
|
171
|
-
</ScreenLayout>
|
|
172
|
-
);
|
|
173
|
-
};
|
|
174
|
-
|
|
175
|
-
const createStyles = (tokens: DesignTokens) =>
|
|
176
|
-
StyleSheet.create({
|
|
177
|
-
listContent: {
|
|
178
|
-
paddingHorizontal: tokens.spacing.md,
|
|
179
|
-
paddingBottom: tokens.spacing.xl,
|
|
180
|
-
gap: tokens.spacing.sm,
|
|
181
|
-
},
|
|
182
|
-
card: {
|
|
183
|
-
borderRadius: tokens.borders.radius.lg,
|
|
184
|
-
borderWidth: 1,
|
|
185
|
-
overflow: "hidden",
|
|
186
|
-
},
|
|
187
|
-
cardContent: {
|
|
188
|
-
flexDirection: "row",
|
|
189
|
-
alignItems: "center",
|
|
190
|
-
padding: tokens.spacing.md,
|
|
191
|
-
},
|
|
192
|
-
iconContainer: {
|
|
193
|
-
width: 56,
|
|
194
|
-
height: 56,
|
|
195
|
-
borderRadius: 28,
|
|
196
|
-
justifyContent: "center",
|
|
197
|
-
alignItems: "center",
|
|
198
|
-
marginRight: tokens.spacing.md,
|
|
199
|
-
},
|
|
200
|
-
emoji: {
|
|
201
|
-
fontSize: 28,
|
|
202
|
-
},
|
|
203
|
-
textContent: {
|
|
204
|
-
flex: 1,
|
|
205
|
-
marginRight: tokens.spacing.sm,
|
|
206
|
-
},
|
|
207
|
-
title: {
|
|
208
|
-
fontSize: 17,
|
|
209
|
-
fontWeight: "700",
|
|
210
|
-
marginBottom: 2,
|
|
211
|
-
},
|
|
212
|
-
description: {
|
|
213
|
-
fontSize: 14,
|
|
214
|
-
lineHeight: 18,
|
|
215
|
-
},
|
|
216
|
-
});
|
|
@@ -1,433 +0,0 @@
|
|
|
1
|
-
# Script Generator Feature
|
|
2
|
-
|
|
3
|
-
Generate scripts for videos, podcasts, and content using AI.
|
|
4
|
-
|
|
5
|
-
## 📍 Import Path
|
|
6
|
-
|
|
7
|
-
```typescript
|
|
8
|
-
import { useScriptGeneratorFeature } from '@umituz/react-native-ai-generation-content';
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
**Location**: `src/features/script-generator/`
|
|
12
|
-
|
|
13
|
-
## 🎯 Feature Purpose
|
|
14
|
-
|
|
15
|
-
Generate professional scripts for various content types including videos, podcasts, social media, and presentations. Customize tone, duration, and format for high-quality content creation with visual cues and production notes.
|
|
16
|
-
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
## 📋 Usage Strategy
|
|
20
|
-
|
|
21
|
-
### When to Use This Feature
|
|
22
|
-
|
|
23
|
-
✅ **Use Cases:**
|
|
24
|
-
- Creating YouTube video scripts
|
|
25
|
-
- Generating podcast episode scripts
|
|
26
|
-
- Writing social media content (TikTok, Reels)
|
|
27
|
-
- Preparing presentation scripts
|
|
28
|
-
- Content ideation and planning
|
|
29
|
-
|
|
30
|
-
❌ **When NOT to Use:**
|
|
31
|
-
- Converting scripts to speech (use Text to Voice)
|
|
32
|
-
- Generating visual content (use Text to Image/Video)
|
|
33
|
-
- Real-time captioning
|
|
34
|
-
- Collaborative script editing
|
|
35
|
-
|
|
36
|
-
### Implementation Strategy
|
|
37
|
-
|
|
38
|
-
1. **Enter topic/description** for the script
|
|
39
|
-
2. **Choose script type** (video, podcast, social, presentation)
|
|
40
|
-
3. **Select tone** (casual, professional, humorous, dramatic)
|
|
41
|
-
4. **Set duration** target
|
|
42
|
-
5. **Generate script** with progress tracking
|
|
43
|
-
6. **Review and edit** generated script
|
|
44
|
-
7. **Save or export** final script
|
|
45
|
-
|
|
46
|
-
---
|
|
47
|
-
|
|
48
|
-
## ⚠️ Critical Rules (MUST FOLLOW)
|
|
49
|
-
|
|
50
|
-
### 1. Input Requirements
|
|
51
|
-
- **MUST** provide clear topic or description
|
|
52
|
-
- **MUST** specify script type
|
|
53
|
-
- **MUST** set duration target
|
|
54
|
-
- **MUST** select appropriate tone
|
|
55
|
-
- **MUST NOT** use copyrighted material in prompts
|
|
56
|
-
|
|
57
|
-
### 2. Configuration
|
|
58
|
-
- **MUST** provide valid `userId` for tracking
|
|
59
|
-
- **MUST** specify `scriptType` (video, podcast, social, presentation)
|
|
60
|
-
- **MUST** specify `tone` (casual, professional, humorous, dramatic)
|
|
61
|
-
- **MUST** implement `onError` callback
|
|
62
|
-
- **MUST** handle script display and export
|
|
63
|
-
|
|
64
|
-
### 3. State Management
|
|
65
|
-
- **MUST** check `isReady` before enabling generate button
|
|
66
|
-
- **MUST** validate topic and duration before generation
|
|
67
|
-
- **MUST** handle `isProcessing` state to prevent duplicate requests
|
|
68
|
-
- **MUST** display `error` state with clear messages
|
|
69
|
-
- **MUST** implement proper cleanup on unmount
|
|
70
|
-
|
|
71
|
-
### 4. Performance
|
|
72
|
-
- **MUST** implement progress indicators during generation
|
|
73
|
-
- **MUST** cache generated scripts locally
|
|
74
|
-
- **MUST** allow users to cancel long generations
|
|
75
|
-
- **MUST** handle long scripts efficiently
|
|
76
|
-
- **MUST NOT** generate multiple scripts simultaneously
|
|
77
|
-
|
|
78
|
-
### 5. Content Quality
|
|
79
|
-
- **MUST** provide editable script output
|
|
80
|
-
- **MUST** support visual cues (for video scripts)
|
|
81
|
-
- **MUST** handle various script formats
|
|
82
|
-
- **MUST** offer regeneration with different settings
|
|
83
|
-
- **MUST** implement copy/export functionality
|
|
84
|
-
|
|
85
|
-
---
|
|
86
|
-
|
|
87
|
-
## 🚫 Prohibitions (MUST AVOID)
|
|
88
|
-
|
|
89
|
-
### Strictly Forbidden
|
|
90
|
-
|
|
91
|
-
❌ **NEVER** do the following:
|
|
92
|
-
|
|
93
|
-
1. **No Empty Topics**
|
|
94
|
-
- Always validate topic is provided
|
|
95
|
-
- Never call generate() without description
|
|
96
|
-
- Guide users with example topics
|
|
97
|
-
|
|
98
|
-
2. **No Auto-Generation**
|
|
99
|
-
- Never start generation without user action
|
|
100
|
-
- Always require explicit "Generate" button press
|
|
101
|
-
- Show preview before processing
|
|
102
|
-
|
|
103
|
-
3. **No Hardcoded Credentials**
|
|
104
|
-
- Never store API keys in component files
|
|
105
|
-
- Use environment variables or secure storage
|
|
106
|
-
|
|
107
|
-
4. **No Unhandled Errors**
|
|
108
|
-
- Never ignore generation failures
|
|
109
|
-
- Always explain what went wrong
|
|
110
|
-
- Provide retry or alternative options
|
|
111
|
-
|
|
112
|
-
5. **No Memory Leaks**
|
|
113
|
-
- Never store multiple scripts unnecessarily
|
|
114
|
-
- Clean up old scripts
|
|
115
|
-
- Implement proper cleanup
|
|
116
|
-
|
|
117
|
-
6. **No Blocked UI**
|
|
118
|
-
- Never block main thread with processing
|
|
119
|
-
- Always show progress indicator
|
|
120
|
-
- Allow cancellation
|
|
121
|
-
|
|
122
|
-
7. **No Copyright Infringement**
|
|
123
|
-
- Never generate copyrighted content
|
|
124
|
-
- Never use trademarked material without permission
|
|
125
|
-
- Implement content moderation
|
|
126
|
-
|
|
127
|
-
---
|
|
128
|
-
|
|
129
|
-
## 🤖 AI Agent Directions
|
|
130
|
-
|
|
131
|
-
### For AI Code Generation Tools
|
|
132
|
-
|
|
133
|
-
When using this feature with AI code generation tools, follow these guidelines:
|
|
134
|
-
|
|
135
|
-
#### Prompt Template for AI Agents
|
|
136
|
-
|
|
137
|
-
```
|
|
138
|
-
You are implementing a script generator feature using @umituz/react-native-ai-generation-content.
|
|
139
|
-
|
|
140
|
-
REQUIREMENTS:
|
|
141
|
-
1. Import from: @umituz/react-native-ai-generation-content
|
|
142
|
-
2. Use the useScriptGeneratorFeature hook
|
|
143
|
-
3. Select script type (video, podcast, social, presentation)
|
|
144
|
-
4. Select tone (casual, professional, humorous, dramatic)
|
|
145
|
-
5. Implement topic/description input
|
|
146
|
-
6. Set duration target
|
|
147
|
-
7. Configure options (visual cues, production notes)
|
|
148
|
-
8. Validate input before generation
|
|
149
|
-
9. Display editable script output
|
|
150
|
-
10. Handle long processing times with progress
|
|
151
|
-
11. Implement proper error handling
|
|
152
|
-
12. Implement cleanup on unmount
|
|
153
|
-
|
|
154
|
-
CRITICAL RULES:
|
|
155
|
-
- MUST validate topic and duration before calling generate()
|
|
156
|
-
- MUST display script in editable format
|
|
157
|
-
- MUST handle script type selection
|
|
158
|
-
- MUST handle tone selection
|
|
159
|
-
- MUST implement debouncing (300ms)
|
|
160
|
-
- MUST allow regeneration with different settings
|
|
161
|
-
- MUST implement copy/export functionality
|
|
162
|
-
|
|
163
|
-
CONFIGURATION:
|
|
164
|
-
- Provide valid userId (string)
|
|
165
|
-
- Set scriptType: 'video' | 'podcast' | 'social' | 'presentation'
|
|
166
|
-
- Set tone: 'casual' | 'professional' | 'humorous' | 'dramatic'
|
|
167
|
-
- Set duration: number (target duration in seconds)
|
|
168
|
-
- Set includeVisuals?: boolean (include visual cues, default: true for video)
|
|
169
|
-
- Set includeNotes?: boolean (include production notes, default: false)
|
|
170
|
-
- Configure callbacks: onProcessingStart, onProcessingComplete, onError
|
|
171
|
-
|
|
172
|
-
SCRIPT TYPES:
|
|
173
|
-
- video: Video scripts with visual cues and scene descriptions
|
|
174
|
-
- podcast: Conversational podcast scripts
|
|
175
|
-
- social: Short-form social media content (TikTok, Reels, etc.)
|
|
176
|
-
- presentation: Professional presentation scripts
|
|
177
|
-
|
|
178
|
-
TONES:
|
|
179
|
-
- casual: Conversational and friendly tone
|
|
180
|
-
- professional: Formal and business-appropriate
|
|
181
|
-
- humorous: Funny and entertaining
|
|
182
|
-
- dramatic: Emotional and engaging
|
|
183
|
-
|
|
184
|
-
OPTIONS:
|
|
185
|
-
- includeVisuals: Include visual cues for video (default: true)
|
|
186
|
-
- includeNotes: Include production notes (default: false)
|
|
187
|
-
- language: Script language (default: 'en')
|
|
188
|
-
|
|
189
|
-
STRICTLY FORBIDDEN:
|
|
190
|
-
- No empty topic validation
|
|
191
|
-
- No auto-generation without user action
|
|
192
|
-
- No hardcoded API keys
|
|
193
|
-
- No unhandled errors
|
|
194
|
-
- No memory leaks
|
|
195
|
-
- No blocking UI
|
|
196
|
-
- No copyright infringement
|
|
197
|
-
|
|
198
|
-
QUALITY CHECKLIST:
|
|
199
|
-
- [ ] Topic/description input implemented
|
|
200
|
-
- [ ] Script type selector added
|
|
201
|
-
- [ ] Tone selector added
|
|
202
|
-
- [ ] Duration input included
|
|
203
|
-
- [ ] Validation before generate()
|
|
204
|
-
- [ ] Editable script display
|
|
205
|
-
- [ ] Visual cues display (for video)
|
|
206
|
-
- [ ] Progress indicator during processing
|
|
207
|
-
- [ ] Error display with retry option
|
|
208
|
-
- [ ] Copy/export functionality
|
|
209
|
-
- [ ] Regeneration with different settings
|
|
210
|
-
```
|
|
211
|
-
|
|
212
|
-
#### AI Implementation Checklist
|
|
213
|
-
|
|
214
|
-
Use this checklist when generating code:
|
|
215
|
-
|
|
216
|
-
- [ ] Feature imported from correct path
|
|
217
|
-
- [ ] Topic input implemented
|
|
218
|
-
- [ ] Script type selector added
|
|
219
|
-
- [ ] Tone selector added
|
|
220
|
-
- [ ] Duration input implemented
|
|
221
|
-
- [ ] Options toggles (visual cues, notes)
|
|
222
|
-
- [ ] Validation before generate()
|
|
223
|
-
- [ ] Editable script display
|
|
224
|
-
- [ ] Progress indicator during processing
|
|
225
|
-
- [ ] Error display with user-friendly message
|
|
226
|
-
- [ ] Copy to clipboard button
|
|
227
|
-
- [ ] Export functionality
|
|
228
|
-
- [ ] Regeneration option
|
|
229
|
-
- [ ] Cleanup on unmount
|
|
230
|
-
|
|
231
|
-
---
|
|
232
|
-
|
|
233
|
-
## 🛠️ Configuration Strategy
|
|
234
|
-
|
|
235
|
-
### Essential Configuration
|
|
236
|
-
|
|
237
|
-
```typescript
|
|
238
|
-
// Required fields
|
|
239
|
-
{
|
|
240
|
-
userId: string
|
|
241
|
-
scriptType: 'video' | 'podcast' | 'social' | 'presentation'
|
|
242
|
-
tone: 'casual' | 'professional' | 'humorous' | 'dramatic'
|
|
243
|
-
prompt: string
|
|
244
|
-
duration: number
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
// Optional callbacks
|
|
248
|
-
{
|
|
249
|
-
includeVisuals?: boolean
|
|
250
|
-
includeNotes?: boolean
|
|
251
|
-
onProcessingStart?: () => void
|
|
252
|
-
onProcessingComplete?: (result) => void
|
|
253
|
-
onError?: (error: string) => void
|
|
254
|
-
}
|
|
255
|
-
```
|
|
256
|
-
|
|
257
|
-
### Recommended Settings
|
|
258
|
-
|
|
259
|
-
1. **Script Types**
|
|
260
|
-
- Video: YouTube, tutorials, vlogs (with visual cues)
|
|
261
|
-
- Podcast: Conversational, interviews, storytelling
|
|
262
|
-
- Social: TikTok, Reels, Shorts (short-form)
|
|
263
|
-
- Presentation: Business, educational, formal
|
|
264
|
-
|
|
265
|
-
2. **Tones**
|
|
266
|
-
- Casual: Conversational content (vlogs, lifestyle)
|
|
267
|
-
- Professional: Business and educational content
|
|
268
|
-
- Humorous: Entertainment and comedy
|
|
269
|
-
- Dramatic: Storytelling and narratives
|
|
270
|
-
|
|
271
|
-
3. **Duration Targets**
|
|
272
|
-
- Social: 15-60 seconds
|
|
273
|
-
- Short video: 60-180 seconds (1-3 minutes)
|
|
274
|
-
- Medium video: 180-600 seconds (3-10 minutes)
|
|
275
|
-
- Long video: 600-3600 seconds (10-60 minutes)
|
|
276
|
-
- Podcast: 1800-3600 seconds (30-60 minutes)
|
|
277
|
-
|
|
278
|
-
---
|
|
279
|
-
|
|
280
|
-
## 📊 State Management
|
|
281
|
-
|
|
282
|
-
### Feature States
|
|
283
|
-
|
|
284
|
-
**isReady**: boolean
|
|
285
|
-
- Topic provided and duration set
|
|
286
|
-
- Check before enabling generate button
|
|
287
|
-
|
|
288
|
-
**isProcessing**: boolean
|
|
289
|
-
- Script generation in progress
|
|
290
|
-
- Show loading/progress indicator
|
|
291
|
-
- Disable generate button
|
|
292
|
-
|
|
293
|
-
**progress**: number (0-100)
|
|
294
|
-
- Generation progress percentage
|
|
295
|
-
- Update progress bar
|
|
296
|
-
|
|
297
|
-
**error**: string | null
|
|
298
|
-
- Error message if generation failed
|
|
299
|
-
- Display to user with clear message
|
|
300
|
-
|
|
301
|
-
**result**: {
|
|
302
|
-
script: string
|
|
303
|
-
scriptType?: string
|
|
304
|
-
tone?: string
|
|
305
|
-
duration?: number
|
|
306
|
-
includeVisuals?: boolean
|
|
307
|
-
includeNotes?: boolean
|
|
308
|
-
metadata?: any
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
---
|
|
312
|
-
|
|
313
|
-
## 🎨 Best Practices
|
|
314
|
-
|
|
315
|
-
### Topic Writing
|
|
316
|
-
|
|
317
|
-
1. **Be Specific**
|
|
318
|
-
- Good: "How to cook pasta from scratch, including ingredients and step-by-step instructions"
|
|
319
|
-
- Bad: "Pasta"
|
|
320
|
-
|
|
321
|
-
2. **Include Key Points**
|
|
322
|
-
- Mention important topics to cover
|
|
323
|
-
- Specify target audience
|
|
324
|
-
- Include format preferences
|
|
325
|
-
|
|
326
|
-
3. **Set Realistic Duration**
|
|
327
|
-
- Social: 60 seconds maximum
|
|
328
|
-
- YouTube: 5-10 minutes typical
|
|
329
|
-
- Podcast: 30-60 minutes
|
|
330
|
-
|
|
331
|
-
### Script Type Selection
|
|
332
|
-
|
|
333
|
-
1. **Video**
|
|
334
|
-
- Use for: YouTube, tutorials, vlogs
|
|
335
|
-
- Features: Visual cues, scene descriptions
|
|
336
|
-
- Best: High-quality, structured content
|
|
337
|
-
|
|
338
|
-
2. **Podcast**
|
|
339
|
-
- Use for: Audio content, interviews, discussions
|
|
340
|
-
- Features: Conversational format
|
|
341
|
-
- Best: Engaging, natural dialogue
|
|
342
|
-
|
|
343
|
-
3. **Social**
|
|
344
|
-
- Use for: TikTok, Reels, Shorts
|
|
345
|
-
- Features: Short-form, punchy
|
|
346
|
-
- Best: Quick, engaging content
|
|
347
|
-
|
|
348
|
-
4. **Presentation**
|
|
349
|
-
- Use for: Business, educational, formal
|
|
350
|
-
- Features: Structured, professional
|
|
351
|
-
- Best: Clear, informative content
|
|
352
|
-
|
|
353
|
-
---
|
|
354
|
-
|
|
355
|
-
## 🐛 Common Pitfalls
|
|
356
|
-
|
|
357
|
-
### Quality Issues
|
|
358
|
-
|
|
359
|
-
❌ **Problem**: Script doesn't match expectations
|
|
360
|
-
✅ **Solution**: Be more specific in topic, try different tone
|
|
361
|
-
|
|
362
|
-
### Duration Issues
|
|
363
|
-
|
|
364
|
-
❌ **Problem**: Script too long/short
|
|
365
|
-
✅ **Solution**: Adjust duration target, be more specific about scope
|
|
366
|
-
|
|
367
|
-
### Format Issues
|
|
368
|
-
|
|
369
|
-
❌ **Problem**: Wrong format for platform
|
|
370
|
-
✅ **Solution**: Match script type to use case
|
|
371
|
-
|
|
372
|
-
### Editing Issues
|
|
373
|
-
|
|
374
|
-
❌ **Problem**: Can't edit generated script
|
|
375
|
-
✅ **Solution**: Always provide editable text area
|
|
376
|
-
|
|
377
|
-
---
|
|
378
|
-
|
|
379
|
-
## 📦 Related Components
|
|
380
|
-
|
|
381
|
-
Use these components from the library:
|
|
382
|
-
|
|
383
|
-
- **TextInput**: For topic/description
|
|
384
|
-
- **ScriptTypeSelector**: Choose script type
|
|
385
|
-
- **ToneSelector**: Choose tone
|
|
386
|
-
- **DurationInput**: Set target duration
|
|
387
|
-
- **OptionsToggles**: Enable/disable visual cues, notes
|
|
388
|
-
- **ScriptDisplay**: Editable script display
|
|
389
|
-
- **ProgressBar**: Progress display
|
|
390
|
-
|
|
391
|
-
Located at: `src/presentation/components/`
|
|
392
|
-
|
|
393
|
-
---
|
|
394
|
-
|
|
395
|
-
## 🔄 Migration Strategy
|
|
396
|
-
|
|
397
|
-
If migrating from previous implementation:
|
|
398
|
-
|
|
399
|
-
1. **Update imports** to new path
|
|
400
|
-
2. **Add script type selector**
|
|
401
|
-
3. **Add tone selector**
|
|
402
|
-
4. **Implement duration input**
|
|
403
|
-
5. **Add visual cues options**
|
|
404
|
-
6. **Update state handling** for new structure
|
|
405
|
-
7. **Implement export functionality**
|
|
406
|
-
8. **Test all script types**
|
|
407
|
-
|
|
408
|
-
---
|
|
409
|
-
|
|
410
|
-
## 📚 Additional Resources
|
|
411
|
-
|
|
412
|
-
- Main documentation: `/docs/`
|
|
413
|
-
- API reference: `/docs/api/`
|
|
414
|
-
- Examples: `/docs/examples/basic/script-generator/`
|
|
415
|
-
- Architecture: `/ARCHITECTURE.md`
|
|
416
|
-
|
|
417
|
-
---
|
|
418
|
-
|
|
419
|
-
**Last Updated**: 2025-01-08
|
|
420
|
-
**Version**: 2.0.0 (Strategy-based Documentation)
|
|
421
|
-
|
|
422
|
-
---
|
|
423
|
-
|
|
424
|
-
## 📝 Changelog
|
|
425
|
-
|
|
426
|
-
### v2.0.0 - 2025-01-08
|
|
427
|
-
- **BREAKING**: Documentation format changed to strategy-based
|
|
428
|
-
- Removed extensive code examples
|
|
429
|
-
- Added rules, prohibitions, and AI agent directions
|
|
430
|
-
- Focus on best practices and implementation guidance
|
|
431
|
-
|
|
432
|
-
### v1.0.0 - Initial Release
|
|
433
|
-
- Initial feature documentation
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { VideoTypeOption } from "../types/script.types";
|
|
2
|
-
|
|
3
|
-
export const DEFAULT_VIDEO_TYPES: readonly VideoTypeOption[] = [
|
|
4
|
-
{ id: "product", name: "Product Demo", emoji: "📦" },
|
|
5
|
-
{ id: "tutorial", name: "Tutorial", emoji: "🎓" },
|
|
6
|
-
{ id: "promo", name: "Promo/Ad", emoji: "📣" },
|
|
7
|
-
{ id: "story", name: "Storytelling", emoji: "📖" },
|
|
8
|
-
{ id: "explainer", name: "Explainer", emoji: "💡" },
|
|
9
|
-
{ id: "vlog", name: "Vlog", emoji: "🎥" },
|
|
10
|
-
];
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AI Script Generator Types
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
export interface VideoTypeOption {
|
|
6
|
-
readonly id: string;
|
|
7
|
-
readonly name: string;
|
|
8
|
-
readonly emoji: string;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export interface ScriptSection {
|
|
12
|
-
readonly id: string;
|
|
13
|
-
readonly type: "hook" | "intro" | "main" | "transition" | "cta";
|
|
14
|
-
readonly title: string;
|
|
15
|
-
readonly content: string;
|
|
16
|
-
readonly duration: number; // in seconds
|
|
17
|
-
readonly notes?: string;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export interface ScriptGenerationRequest {
|
|
21
|
-
readonly topic: string;
|
|
22
|
-
readonly videoType: string;
|
|
23
|
-
readonly duration: number;
|
|
24
|
-
readonly targetAudience?: string;
|
|
25
|
-
readonly keyPoints?: string;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export interface ScriptGenerationResponse {
|
|
29
|
-
readonly script: readonly ScriptSection[];
|
|
30
|
-
}
|