@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.
Files changed (327) hide show
  1. package/package.json +3 -2
  2. package/src/domains/generation/application/feature-registry.ts +101 -0
  3. package/src/domains/generation/application/generation-strategy.factory.ts +128 -0
  4. package/src/domains/generation/domain/feature-config.types.ts +61 -0
  5. package/src/domains/generation/domain/generation.types.ts +74 -0
  6. package/src/domains/generation/index.ts +37 -0
  7. package/src/domains/generation/presentation/useAIGeneration.hook.ts +106 -0
  8. package/src/domains/wizard/infrastructure/strategies/wizard-strategy.factory.ts +3 -4
  9. package/src/index.ts +1 -25
  10. package/src/infrastructure/executors/executor-factory.ts +53 -0
  11. package/src/infrastructure/executors/image-executor.ts +133 -0
  12. package/src/infrastructure/executors/video-executor.ts +130 -0
  13. package/src/features/ai-hug/README.md +0 -438
  14. package/src/features/ai-hug/domain/index.ts +0 -5
  15. package/src/features/ai-hug/domain/types/ai-hug.types.ts +0 -25
  16. package/src/features/ai-hug/domain/types/index.ts +0 -7
  17. package/src/features/ai-hug/index.ts +0 -19
  18. package/src/features/ai-hug/presentation/components/AIHugFeature.tsx +0 -77
  19. package/src/features/ai-hug/presentation/components/index.ts +0 -2
  20. package/src/features/ai-hug/presentation/hooks/index.ts +0 -9
  21. package/src/features/ai-hug/presentation/hooks/useAIHugFeature.ts +0 -34
  22. package/src/features/ai-hug/presentation/index.ts +0 -6
  23. package/src/features/ai-kiss/README.md +0 -445
  24. package/src/features/ai-kiss/domain/index.ts +0 -5
  25. package/src/features/ai-kiss/domain/types/ai-kiss.types.ts +0 -25
  26. package/src/features/ai-kiss/domain/types/index.ts +0 -7
  27. package/src/features/ai-kiss/index.ts +0 -19
  28. package/src/features/ai-kiss/presentation/components/AIKissFeature.tsx +0 -77
  29. package/src/features/ai-kiss/presentation/components/index.ts +0 -2
  30. package/src/features/ai-kiss/presentation/hooks/index.ts +0 -9
  31. package/src/features/ai-kiss/presentation/hooks/useAIKissFeature.ts +0 -34
  32. package/src/features/ai-kiss/presentation/index.ts +0 -6
  33. package/src/features/anime-selfie/README.md +0 -396
  34. package/src/features/anime-selfie/domain/index.ts +0 -5
  35. package/src/features/anime-selfie/domain/types/anime-selfie.types.ts +0 -52
  36. package/src/features/anime-selfie/domain/types/index.ts +0 -8
  37. package/src/features/anime-selfie/index.ts +0 -20
  38. package/src/features/anime-selfie/presentation/components/AnimeSelfieFeature.tsx +0 -86
  39. package/src/features/anime-selfie/presentation/components/index.ts +0 -2
  40. package/src/features/anime-selfie/presentation/hooks/index.ts +0 -9
  41. package/src/features/anime-selfie/presentation/hooks/useAnimeSelfieFeature.ts +0 -59
  42. package/src/features/anime-selfie/presentation/index.ts +0 -6
  43. package/src/features/couple-future/README.md +0 -445
  44. package/src/features/couple-future/domain/types.ts +0 -63
  45. package/src/features/couple-future/domain/wizard-config.adapter.ts +0 -76
  46. package/src/features/couple-future/domain/wizard.types.ts +0 -121
  47. package/src/features/couple-future/index.ts +0 -83
  48. package/src/features/couple-future/infrastructure/coupleFeatureRegistry.ts +0 -76
  49. package/src/features/couple-future/infrastructure/couplePromptEnhancer.ts +0 -100
  50. package/src/features/couple-future/infrastructure/executor.ts +0 -188
  51. package/src/features/couple-future/infrastructure/generationUtils.ts +0 -228
  52. package/src/features/couple-future/presentation/components/ArtStyleSelector.tsx +0 -146
  53. package/src/features/couple-future/presentation/components/ArtistStyleSelector.tsx +0 -122
  54. package/src/features/couple-future/presentation/components/CoupleFutureWizard.tsx +0 -239
  55. package/src/features/couple-future/presentation/components/GeneratingStepContent.tsx +0 -86
  56. package/src/features/couple-future/presentation/components/RomanticMoodSelector.tsx +0 -147
  57. package/src/features/couple-future/presentation/components/WardrobeSelector.tsx +0 -141
  58. package/src/features/couple-future/presentation/components/index.ts +0 -12
  59. package/src/features/couple-future/presentation/hooks/useCoupleFutureFlow.ts +0 -166
  60. package/src/features/couple-future/presentation/hooks/useCoupleFutureFlow.types.ts +0 -69
  61. package/src/features/couple-future/presentation/hooks/useCoupleFutureHandlers.ts +0 -117
  62. package/src/features/couple-future/presentation/screens/CoupleFeatureScreen.tsx +0 -113
  63. package/src/features/face-swap/README.md +0 -431
  64. package/src/features/face-swap/domain/index.ts +0 -5
  65. package/src/features/face-swap/domain/types/face-swap.types.ts +0 -26
  66. package/src/features/face-swap/domain/types/index.ts +0 -7
  67. package/src/features/face-swap/index.ts +0 -19
  68. package/src/features/face-swap/presentation/components/FaceSwapFeature.tsx +0 -87
  69. package/src/features/face-swap/presentation/components/index.ts +0 -2
  70. package/src/features/face-swap/presentation/hooks/index.ts +0 -6
  71. package/src/features/face-swap/presentation/hooks/useFaceSwapFeature.ts +0 -35
  72. package/src/features/face-swap/presentation/index.ts +0 -6
  73. package/src/features/hd-touch-up/README.md +0 -396
  74. package/src/features/hd-touch-up/domain/index.ts +0 -1
  75. package/src/features/hd-touch-up/domain/types/hd-touch-up.types.ts +0 -62
  76. package/src/features/hd-touch-up/domain/types/index.ts +0 -9
  77. package/src/features/hd-touch-up/index.ts +0 -21
  78. package/src/features/hd-touch-up/presentation/components/HDTouchUpFeature.tsx +0 -86
  79. package/src/features/hd-touch-up/presentation/components/index.ts +0 -2
  80. package/src/features/hd-touch-up/presentation/hooks/index.ts +0 -1
  81. package/src/features/hd-touch-up/presentation/hooks/useHDTouchUpFeature.ts +0 -23
  82. package/src/features/hd-touch-up/presentation/index.ts +0 -2
  83. package/src/features/image-to-image/README.md +0 -459
  84. package/src/features/image-to-image/domain/index.ts +0 -1
  85. package/src/features/image-to-image/domain/types/base.types.ts +0 -48
  86. package/src/features/image-to-image/domain/types/index.ts +0 -1
  87. package/src/features/image-to-image/domain/types/partials/config.types.ts +0 -37
  88. package/src/features/image-to-image/domain/types/partials/hook.types.ts +0 -53
  89. package/src/features/image-to-image/domain/types/partials/metadata.types.ts +0 -32
  90. package/src/features/image-to-image/domain/types/partials/result.types.ts +0 -44
  91. package/src/features/image-to-image/domain/types/partials/state.types.ts +0 -34
  92. package/src/features/image-to-image/domain/types/partials/translation.types.ts +0 -57
  93. package/src/features/image-to-image/index.ts +0 -2
  94. package/src/features/image-to-image/presentation/hooks/index.ts +0 -3
  95. package/src/features/image-to-image/presentation/hooks/useDualImageFeature.ts +0 -204
  96. package/src/features/image-to-image/presentation/hooks/useImageWithPromptFeature.ts +0 -223
  97. package/src/features/image-to-image/presentation/hooks/useSingleImageFeature.ts +0 -166
  98. package/src/features/image-to-image/presentation/index.ts +0 -1
  99. package/src/features/image-to-video/README.md +0 -414
  100. package/src/features/image-to-video/domain/constants/animation.constants.ts +0 -47
  101. package/src/features/image-to-video/domain/constants/duration.constants.ts +0 -13
  102. package/src/features/image-to-video/domain/constants/form.constants.ts +0 -22
  103. package/src/features/image-to-video/domain/constants/index.ts +0 -23
  104. package/src/features/image-to-video/domain/constants/music.constants.ts +0 -53
  105. package/src/features/image-to-video/domain/index.ts +0 -5
  106. package/src/features/image-to-video/domain/types/animation.types.ts +0 -20
  107. package/src/features/image-to-video/domain/types/config.types.ts +0 -56
  108. package/src/features/image-to-video/domain/types/duration.types.ts +0 -11
  109. package/src/features/image-to-video/domain/types/form.types.ts +0 -35
  110. package/src/features/image-to-video/domain/types/image-to-video.types.ts +0 -122
  111. package/src/features/image-to-video/domain/types/index.ts +0 -39
  112. package/src/features/image-to-video/domain/types/music.types.ts +0 -21
  113. package/src/features/image-to-video/index.ts +0 -116
  114. package/src/features/image-to-video/infrastructure/index.ts +0 -1
  115. package/src/features/image-to-video/infrastructure/services/image-to-video-executor.ts +0 -154
  116. package/src/features/image-to-video/infrastructure/services/index.ts +0 -5
  117. package/src/features/image-to-video/presentation/components/AddMoreCard.tsx +0 -52
  118. package/src/features/image-to-video/presentation/components/AnimationStyleSelector.tsx +0 -135
  119. package/src/features/image-to-video/presentation/components/DurationSelector.tsx +0 -110
  120. package/src/features/image-to-video/presentation/components/EmptyGridState.tsx +0 -69
  121. package/src/features/image-to-video/presentation/components/GridImageItem.tsx +0 -64
  122. package/src/features/image-to-video/presentation/components/ImageSelectionGrid.styles.ts +0 -84
  123. package/src/features/image-to-video/presentation/components/ImageSelectionGrid.tsx +0 -77
  124. package/src/features/image-to-video/presentation/components/ImageSelectionGrid.types.ts +0 -18
  125. package/src/features/image-to-video/presentation/components/MusicMoodSelector.tsx +0 -181
  126. package/src/features/image-to-video/presentation/components/index.ts +0 -30
  127. package/src/features/image-to-video/presentation/hooks/index.ts +0 -27
  128. package/src/features/image-to-video/presentation/hooks/useFormState.ts +0 -116
  129. package/src/features/image-to-video/presentation/hooks/useGeneration.ts +0 -85
  130. package/src/features/image-to-video/presentation/hooks/useGenerationExecution.ts +0 -143
  131. package/src/features/image-to-video/presentation/hooks/useImageToVideoFeature.ts +0 -107
  132. package/src/features/image-to-video/presentation/hooks/useImageToVideoForm.ts +0 -119
  133. package/src/features/image-to-video/presentation/hooks/useImageToVideoValidation.ts +0 -46
  134. package/src/features/image-to-video/presentation/index.ts +0 -5
  135. package/src/features/love-message/domain/constants.ts +0 -162
  136. package/src/features/love-message/domain/types.ts +0 -58
  137. package/src/features/love-message/index.ts +0 -37
  138. package/src/features/love-message/infrastructure/persistence/PartnerProfileRepository.ts +0 -52
  139. package/src/features/love-message/infrastructure/prompts/messagePromptBuilder.ts +0 -109
  140. package/src/features/love-message/infrastructure/services/LoveMessageService.ts +0 -35
  141. package/src/features/love-message/presentation/components/CategoryGrid.tsx +0 -88
  142. package/src/features/love-message/presentation/components/DetailsInput.tsx +0 -74
  143. package/src/features/love-message/presentation/components/ExploreHeader.tsx +0 -67
  144. package/src/features/love-message/presentation/components/FieldInput.tsx +0 -83
  145. package/src/features/love-message/presentation/components/GeneratorHeader.tsx +0 -88
  146. package/src/features/love-message/presentation/components/LoveMessageHeroSection.tsx +0 -114
  147. package/src/features/love-message/presentation/components/MessageListItem.tsx +0 -77
  148. package/src/features/love-message/presentation/components/MessageResult.tsx +0 -105
  149. package/src/features/love-message/presentation/components/PartnerInput.tsx +0 -78
  150. package/src/features/love-message/presentation/components/ProgressDots.tsx +0 -48
  151. package/src/features/love-message/presentation/components/StepDetails.tsx +0 -23
  152. package/src/features/love-message/presentation/components/StepPartner.tsx +0 -116
  153. package/src/features/love-message/presentation/components/StepVibe.tsx +0 -30
  154. package/src/features/love-message/presentation/components/ToneSelector.tsx +0 -100
  155. package/src/features/love-message/presentation/components/TrendingSection.tsx +0 -130
  156. package/src/features/love-message/presentation/components/TypeSelector.tsx +0 -99
  157. package/src/features/love-message/presentation/hooks/useLoveMessageGenerator.ts +0 -114
  158. package/src/features/love-message/presentation/hooks/usePartnerProfile.ts +0 -43
  159. package/src/features/love-message/presentation/navigation/LoveMessageStack.tsx +0 -39
  160. package/src/features/love-message/presentation/screens/LoveMessageExploreScreen.tsx +0 -53
  161. package/src/features/love-message/presentation/screens/LoveMessageGeneratorScreen.tsx +0 -169
  162. package/src/features/love-message/presentation/screens/MessageListScreen.tsx +0 -127
  163. package/src/features/love-message/presentation/screens/PartnerProfileScreen.tsx +0 -119
  164. package/src/features/meme-generator/README.md +0 -408
  165. package/src/features/meme-generator/index.ts +0 -3
  166. package/src/features/meme-generator/infrastructure/services/MemeGenerationService.ts +0 -87
  167. package/src/features/meme-generator/presentation/components/MemeGeneratorFeature.tsx +0 -180
  168. package/src/features/meme-generator/presentation/components/index.ts +0 -2
  169. package/src/features/meme-generator/presentation/screens/MemeGeneratorScreen.tsx +0 -168
  170. package/src/features/meme-generator/presentation/screens/index.ts +0 -1
  171. package/src/features/partner-upload/domain/types.ts +0 -59
  172. package/src/features/partner-upload/index.ts +0 -30
  173. package/src/features/partner-upload/presentation/components/PartnerInfoInput.tsx +0 -112
  174. package/src/features/partner-upload/presentation/components/PhotoTips.tsx +0 -53
  175. package/src/features/partner-upload/presentation/components/index.ts +0 -4
  176. package/src/features/partner-upload/presentation/hooks/index.ts +0 -7
  177. package/src/features/partner-upload/presentation/hooks/usePartnerStep.ts +0 -130
  178. package/src/features/partner-upload/presentation/screens/PartnerStepScreen.tsx +0 -231
  179. package/src/features/partner-upload/presentation/screens/index.ts +0 -6
  180. package/src/features/photo-restoration/README.md +0 -399
  181. package/src/features/photo-restoration/domain/index.ts +0 -1
  182. package/src/features/photo-restoration/domain/types/index.ts +0 -9
  183. package/src/features/photo-restoration/domain/types/photo-restore.types.ts +0 -64
  184. package/src/features/photo-restoration/index.ts +0 -22
  185. package/src/features/photo-restoration/presentation/components/PhotoRestoreFeature.tsx +0 -88
  186. package/src/features/photo-restoration/presentation/components/PhotoRestoreResultView.tsx +0 -86
  187. package/src/features/photo-restoration/presentation/components/index.ts +0 -4
  188. package/src/features/photo-restoration/presentation/hooks/index.ts +0 -1
  189. package/src/features/photo-restoration/presentation/hooks/usePhotoRestoreFeature.ts +0 -23
  190. package/src/features/photo-restoration/presentation/index.ts +0 -2
  191. package/src/features/remove-background/README.md +0 -393
  192. package/src/features/remove-background/domain/index.ts +0 -5
  193. package/src/features/remove-background/domain/types/index.ts +0 -7
  194. package/src/features/remove-background/domain/types/remove-background.types.ts +0 -28
  195. package/src/features/remove-background/index.ts +0 -19
  196. package/src/features/remove-background/presentation/components/RemoveBackgroundFeature.tsx +0 -86
  197. package/src/features/remove-background/presentation/components/index.ts +0 -2
  198. package/src/features/remove-background/presentation/hooks/index.ts +0 -1
  199. package/src/features/remove-background/presentation/hooks/useRemoveBackgroundFeature.ts +0 -28
  200. package/src/features/remove-background/presentation/index.ts +0 -6
  201. package/src/features/remove-object/README.md +0 -405
  202. package/src/features/remove-object/domain/index.ts +0 -5
  203. package/src/features/remove-object/domain/types/index.ts +0 -7
  204. package/src/features/remove-object/domain/types/remove-object.types.ts +0 -54
  205. package/src/features/remove-object/index.ts +0 -23
  206. package/src/features/remove-object/presentation/components/RemoveObjectFeature.tsx +0 -136
  207. package/src/features/remove-object/presentation/components/index.ts +0 -2
  208. package/src/features/remove-object/presentation/hooks/index.ts +0 -9
  209. package/src/features/remove-object/presentation/hooks/useRemoveObjectFeature.ts +0 -221
  210. package/src/features/remove-object/presentation/index.ts +0 -6
  211. package/src/features/replace-background/README.md +0 -405
  212. package/src/features/replace-background/domain/types/index.ts +0 -7
  213. package/src/features/replace-background/domain/types/replace-background.types.ts +0 -33
  214. package/src/features/replace-background/index.ts +0 -23
  215. package/src/features/replace-background/presentation/components/ReplaceBackgroundFeature.tsx +0 -105
  216. package/src/features/replace-background/presentation/components/index.ts +0 -6
  217. package/src/features/replace-background/presentation/hooks/index.ts +0 -9
  218. package/src/features/replace-background/presentation/hooks/useReplaceBackgroundFeature.ts +0 -55
  219. package/src/features/scenarios/domain/types.ts +0 -147
  220. package/src/features/scenarios/index.ts +0 -64
  221. package/src/features/scenarios/presentation/components/InspirationChips.tsx +0 -82
  222. package/src/features/scenarios/presentation/components/MagicPromptHeadline.tsx +0 -79
  223. package/src/features/scenarios/presentation/components/ScenarioGrid.tsx +0 -224
  224. package/src/features/scenarios/presentation/components/ScenarioHeader.tsx +0 -55
  225. package/src/features/scenarios/presentation/components/StyleSelector.tsx +0 -119
  226. package/src/features/scenarios/presentation/components/index.ts +0 -18
  227. package/src/features/scenarios/presentation/containers/CategoryNavigationContainer.tsx +0 -178
  228. package/src/features/scenarios/presentation/screens/HierarchicalScenarioListScreen.tsx +0 -266
  229. package/src/features/scenarios/presentation/screens/MagicPromptScreen.tsx +0 -242
  230. package/src/features/scenarios/presentation/screens/MainCategoryScreen.tsx +0 -198
  231. package/src/features/scenarios/presentation/screens/ScenarioPreviewScreen.tsx +0 -164
  232. package/src/features/scenarios/presentation/screens/ScenarioSelectorScreen.tsx +0 -66
  233. package/src/features/scenarios/presentation/screens/SubCategoryScreen.tsx +0 -216
  234. package/src/features/script-generator/README.md +0 -433
  235. package/src/features/script-generator/domain/constants/index.ts +0 -10
  236. package/src/features/script-generator/domain/types/script.types.ts +0 -30
  237. package/src/features/script-generator/index.ts +0 -5
  238. package/src/features/script-generator/infrastructure/services/ScriptGenerationService.ts +0 -62
  239. package/src/features/script-generator/presentation/components/ScriptDisplay.tsx +0 -158
  240. package/src/features/script-generator/presentation/components/VideoTypeSelector.tsx +0 -102
  241. package/src/features/script-generator/presentation/components/index.ts +0 -2
  242. package/src/features/script-generator/presentation/hooks/index.ts +0 -1
  243. package/src/features/script-generator/presentation/hooks/useScriptGenerator.ts +0 -77
  244. package/src/features/shared/README.md +0 -311
  245. package/src/features/shared/dual-image-video/domain/types/dual-image-video.types.ts +0 -88
  246. package/src/features/shared/dual-image-video/domain/types/index.ts +0 -14
  247. package/src/features/shared/dual-image-video/index.ts +0 -17
  248. package/src/features/shared/dual-image-video/presentation/hooks/index.ts +0 -5
  249. package/src/features/shared/dual-image-video/presentation/hooks/useDualImageVideoFeature.ts +0 -185
  250. package/src/features/shared/index.ts +0 -6
  251. package/src/features/text-to-image/README.md +0 -394
  252. package/src/features/text-to-image/domain/constants/index.ts +0 -8
  253. package/src/features/text-to-image/domain/constants/options.constants.ts +0 -39
  254. package/src/features/text-to-image/domain/constants/styles.constants.ts +0 -34
  255. package/src/features/text-to-image/domain/index.ts +0 -7
  256. package/src/features/text-to-image/domain/types/config.types.ts +0 -75
  257. package/src/features/text-to-image/domain/types/form.types.ts +0 -58
  258. package/src/features/text-to-image/domain/types/index.ts +0 -38
  259. package/src/features/text-to-image/domain/types/text-to-image.types.ts +0 -58
  260. package/src/features/text-to-image/index.ts +0 -116
  261. package/src/features/text-to-image/infrastructure/index.ts +0 -1
  262. package/src/features/text-to-image/infrastructure/services/index.ts +0 -5
  263. package/src/features/text-to-image/infrastructure/services/text-to-image-executor.ts +0 -147
  264. package/src/features/text-to-image/presentation/components/index.ts +0 -30
  265. package/src/features/text-to-image/presentation/hooks/index.ts +0 -30
  266. package/src/features/text-to-image/presentation/hooks/useFormState.ts +0 -103
  267. package/src/features/text-to-image/presentation/hooks/useGeneration.ts +0 -139
  268. package/src/features/text-to-image/presentation/hooks/useTextToImageFeature.ts +0 -111
  269. package/src/features/text-to-image/presentation/hooks/useTextToImageForm.ts +0 -58
  270. package/src/features/text-to-image/presentation/index.ts +0 -7
  271. package/src/features/text-to-video/README.md +0 -412
  272. package/src/features/text-to-video/domain/index.ts +0 -1
  273. package/src/features/text-to-video/domain/types/callback.types.ts +0 -69
  274. package/src/features/text-to-video/domain/types/component.types.ts +0 -106
  275. package/src/features/text-to-video/domain/types/config.types.ts +0 -61
  276. package/src/features/text-to-video/domain/types/index.ts +0 -56
  277. package/src/features/text-to-video/domain/types/request.types.ts +0 -36
  278. package/src/features/text-to-video/domain/types/state.types.ts +0 -53
  279. package/src/features/text-to-video/index.ts +0 -68
  280. package/src/features/text-to-video/infrastructure/index.ts +0 -1
  281. package/src/features/text-to-video/infrastructure/services/index.ts +0 -5
  282. package/src/features/text-to-video/infrastructure/services/text-to-video-executor.ts +0 -141
  283. package/src/features/text-to-video/presentation/components/FrameSelector.tsx +0 -153
  284. package/src/features/text-to-video/presentation/components/GenerationTabs.tsx +0 -73
  285. package/src/features/text-to-video/presentation/components/HeroSection.tsx +0 -61
  286. package/src/features/text-to-video/presentation/components/HintCarousel.tsx +0 -96
  287. package/src/features/text-to-video/presentation/components/OptionsPanel.tsx +0 -121
  288. package/src/features/text-to-video/presentation/components/index.ts +0 -10
  289. package/src/features/text-to-video/presentation/hooks/index.ts +0 -17
  290. package/src/features/text-to-video/presentation/hooks/useTextToVideoFeature.ts +0 -225
  291. package/src/features/text-to-video/presentation/hooks/useTextToVideoForm.ts +0 -134
  292. package/src/features/text-to-video/presentation/index.ts +0 -7
  293. package/src/features/text-to-voice/README.md +0 -445
  294. package/src/features/text-to-voice/domain/index.ts +0 -1
  295. package/src/features/text-to-voice/domain/types/component.types.ts +0 -91
  296. package/src/features/text-to-voice/domain/types/config.types.ts +0 -34
  297. package/src/features/text-to-voice/domain/types/form.types.ts +0 -39
  298. package/src/features/text-to-voice/domain/types/generation.types.ts +0 -43
  299. package/src/features/text-to-voice/domain/types/index.ts +0 -38
  300. package/src/features/text-to-voice/index.ts +0 -53
  301. package/src/features/text-to-voice/infrastructure/index.ts +0 -1
  302. package/src/features/text-to-voice/infrastructure/services/index.ts +0 -4
  303. package/src/features/text-to-voice/infrastructure/services/text-to-voice-executor.ts +0 -103
  304. package/src/features/text-to-voice/presentation/components/TextToVoiceAudioPlayer.tsx +0 -81
  305. package/src/features/text-to-voice/presentation/components/index.ts +0 -7
  306. package/src/features/text-to-voice/presentation/hooks/index.ts +0 -6
  307. package/src/features/text-to-voice/presentation/hooks/useTextToVoiceForm.ts +0 -91
  308. package/src/features/text-to-voice/presentation/hooks/useTextToVoiceGeneration.ts +0 -116
  309. package/src/features/text-to-voice/presentation/index.ts +0 -2
  310. package/src/features/upscaling/README.md +0 -396
  311. package/src/features/upscaling/domain/index.ts +0 -1
  312. package/src/features/upscaling/domain/types/index.ts +0 -1
  313. package/src/features/upscaling/domain/types/upscale.types.ts +0 -23
  314. package/src/features/upscaling/index.ts +0 -20
  315. package/src/features/upscaling/presentation/components/ComparisonSlider.tsx +0 -200
  316. package/src/features/upscaling/presentation/components/UpscaleFeature.tsx +0 -89
  317. package/src/features/upscaling/presentation/components/UpscaleResultView.tsx +0 -98
  318. package/src/features/upscaling/presentation/components/index.ts +0 -6
  319. package/src/features/upscaling/presentation/hooks/index.ts +0 -1
  320. package/src/features/upscaling/presentation/hooks/useUpscaleFeature.ts +0 -28
  321. package/src/features/upscaling/presentation/index.ts +0 -2
  322. package/src/features/wizard/domain/types.ts +0 -154
  323. package/src/features/wizard/index.ts +0 -43
  324. package/src/features/wizard/presentation/components/AIFeatureWizard.tsx +0 -231
  325. package/src/features/wizard/presentation/components/AIGenerationWizard.tsx +0 -132
  326. package/src/features/wizard/presentation/hooks/useWizard.ts +0 -120
  327. package/src/features/wizard/presentation/store/useWizardStore.ts +0 -82
@@ -1,62 +0,0 @@
1
- import {
2
- ScriptSection,
3
- ScriptGenerationRequest,
4
- } from "../../domain/types/script.types";
5
- import { DEFAULT_VIDEO_TYPES } from "../../domain/constants";
6
-
7
- /**
8
- * ScriptGenerationService
9
- * Handles building prompts and (eventually) calling AI providers for script generation.
10
- */
11
- export class ScriptGenerationService {
12
- /**
13
- * Build prompt for script generation
14
- */
15
- buildScriptPrompt(request: ScriptGenerationRequest): string {
16
- const typeInfo = DEFAULT_VIDEO_TYPES.find((t) => t.id === request.videoType);
17
-
18
- return `Generate a video script for a ${request.duration}-second ${typeInfo?.name || "video"} about: ${request.topic}
19
-
20
- ${request.targetAudience ? `Target Audience: ${request.targetAudience}` : ""}
21
- ${request.keyPoints ? `Key Points to Cover: ${request.keyPoints}` : ""}
22
-
23
- Please create a detailed script with the following structure:
24
- 1. Hook (3-5 seconds): Attention-grabbing opening
25
- 2. Introduction (5-10 seconds): Brief intro to the topic
26
- 3. Main Content (${request.duration - 15} seconds): Core message and value
27
- 4. Call-to-Action (5 seconds): Clear next step for viewers
28
-
29
- For each section, provide:
30
- - Section title
31
- - Voiceover text
32
- - Duration in seconds
33
- - Visual/scene suggestions
34
-
35
- Format as JSON with this structure:
36
- {
37
- "sections": [
38
- {
39
- "type": "hook|intro|main|cta",
40
- "title": "Section title",
41
- "content": "Voiceover text",
42
- "duration": 5,
43
- "notes": "Visual suggestions"
44
- }
45
- ],
46
- "totalDuration": ${request.duration}
47
- }`;
48
- }
49
-
50
- /**
51
- * Generate script from request
52
- */
53
- async generateScript(
54
- _request: ScriptGenerationRequest,
55
- ): Promise<readonly ScriptSection[] | null> {
56
- // NOTE: This will be implemented by the app using a specific AI provider
57
- // The package provides the structure and prompt building.
58
- return null;
59
- }
60
- }
61
-
62
- export const scriptGenerationService = new ScriptGenerationService();
@@ -1,158 +0,0 @@
1
- /**
2
- * ScriptDisplay Component
3
- * Generic display for AI-generated scripts with sections, durations and types.
4
- */
5
-
6
- import React from "react";
7
- import { View, TouchableOpacity, StyleSheet } from "react-native";
8
- import {
9
- AtomicText,
10
- AtomicIcon,
11
- useAppDesignTokens,
12
- } from "@umituz/react-native-design-system";
13
- import type { ScriptSection } from "../../domain/types/script.types";
14
-
15
- export interface ScriptDisplayProps {
16
- readonly script: readonly ScriptSection[];
17
- readonly onUseScript: () => void;
18
- readonly title?: string;
19
- readonly useButtonText?: string;
20
- }
21
-
22
- export const ScriptDisplay: React.FC<ScriptDisplayProps> = ({
23
- script,
24
- onUseScript,
25
- title = "Generated Script",
26
- useButtonText = "Use This Script",
27
- }) => {
28
- const tokens = useAppDesignTokens();
29
-
30
- return (
31
- <View style={styles.container}>
32
- <View style={styles.header}>
33
- <AtomicText
34
- type="bodyLarge"
35
- style={[styles.headerTitle, { color: tokens.colors.textPrimary }]}
36
- >
37
- 📝 {title}
38
- </AtomicText>
39
- <TouchableOpacity onPress={onUseScript}>
40
- <AtomicIcon name="checkmark-outline" size="md" color="primary" />
41
- </TouchableOpacity>
42
- </View>
43
-
44
- {script.map((section) => (
45
- <View
46
- key={section.id}
47
- style={[
48
- styles.section,
49
- { backgroundColor: tokens.colors.surface },
50
- ]}
51
- >
52
- <View style={styles.sectionHeader}>
53
- <AtomicText
54
- type="bodyMedium"
55
- style={{ color: tokens.colors.primary, fontWeight: "600" }}
56
- >
57
- {section.title} ({section.duration}s)
58
- </AtomicText>
59
- <View
60
- style={[
61
- styles.badge,
62
- { backgroundColor: tokens.colors.surfaceVariant },
63
- ]}
64
- >
65
- <AtomicText
66
- type="labelSmall"
67
- style={{ color: tokens.colors.primary }}
68
- >
69
- {section.type.toUpperCase()}
70
- </AtomicText>
71
- </View>
72
- </View>
73
- <AtomicText
74
- type="bodySmall"
75
- style={{
76
- color: tokens.colors.textPrimary,
77
- marginTop: 8,
78
- lineHeight: 22,
79
- }}
80
- >
81
- {section.content}
82
- </AtomicText>
83
- {section.notes && ( section.notes.length > 0) && (
84
- <AtomicText
85
- type="labelSmall"
86
- style={{
87
- color: tokens.colors.textSecondary,
88
- marginTop: 8,
89
- fontStyle: "italic",
90
- }}
91
- >
92
- 💡 {section.notes}
93
- </AtomicText>
94
- )}
95
- </View>
96
- ))}
97
-
98
- <TouchableOpacity
99
- style={[
100
- styles.useButton,
101
- { backgroundColor: tokens.colors.primary },
102
- ]}
103
- onPress={onUseScript}
104
- >
105
- <AtomicIcon name="checkmark-outline" size="md" color="textInverse" />
106
- <AtomicText
107
- type="bodyLarge"
108
- style={[styles.useButtonText, { color: tokens.colors.textInverse }]}
109
- >
110
- {useButtonText}
111
- </AtomicText>
112
- </TouchableOpacity>
113
- </View>
114
- );
115
- };
116
-
117
- const styles = StyleSheet.create({
118
- container: {
119
- padding: 16,
120
- width: "100%",
121
- },
122
- header: {
123
- flexDirection: "row",
124
- alignItems: "center",
125
- justifyContent: "space-between",
126
- marginBottom: 16,
127
- },
128
- headerTitle: {
129
- fontWeight: "700",
130
- },
131
- section: {
132
- padding: 16,
133
- borderRadius: 12,
134
- marginBottom: 12,
135
- },
136
- sectionHeader: {
137
- flexDirection: "row",
138
- alignItems: "center",
139
- justifyContent: "space-between",
140
- },
141
- badge: {
142
- paddingHorizontal: 8,
143
- paddingVertical: 4,
144
- borderRadius: 6,
145
- },
146
- useButton: {
147
- flexDirection: "row",
148
- alignItems: "center",
149
- justifyContent: "center",
150
- padding: 18,
151
- borderRadius: 16,
152
- marginTop: 16,
153
- },
154
- useButtonText: {
155
- fontWeight: "700",
156
- marginLeft: 12,
157
- },
158
- });
@@ -1,102 +0,0 @@
1
- /**
2
- * VideoTypeSelector Component
3
- * Horizontal scroll selector for different video types with emojis.
4
- */
5
-
6
- import React from "react";
7
- import { View, ScrollView, TouchableOpacity, StyleSheet } from "react-native";
8
- import {
9
- AtomicText,
10
- useAppDesignTokens,
11
- } from "@umituz/react-native-design-system";
12
- import { VideoTypeOption } from "../../domain/types/script.types";
13
-
14
- export interface VideoTypeSelectorProps {
15
- readonly selectedType: string;
16
- readonly onSelectType: (typeId: string) => void;
17
- readonly types: readonly VideoTypeOption[];
18
- readonly title?: string;
19
- }
20
-
21
- export const VideoTypeSelector: React.FC<VideoTypeSelectorProps> = ({
22
- selectedType,
23
- onSelectType,
24
- types,
25
- title = "Video Type",
26
- }) => {
27
- const tokens = useAppDesignTokens();
28
-
29
- return (
30
- <View style={styles.section}>
31
- <AtomicText
32
- type="bodyMedium"
33
- style={[styles.title, { color: tokens.colors.textPrimary }]}
34
- >
35
- {title}
36
- </AtomicText>
37
- <ScrollView
38
- horizontal
39
- showsHorizontalScrollIndicator={false}
40
- contentContainerStyle={styles.scrollContent}
41
- >
42
- {types.map((type) => (
43
- <TouchableOpacity
44
- key={type.id}
45
- style={[
46
- styles.card,
47
- {
48
- backgroundColor:
49
- selectedType === type.id
50
- ? tokens.colors.primary
51
- : tokens.colors.surface,
52
- borderColor:
53
- selectedType === type.id
54
- ? tokens.colors.primary
55
- : tokens.colors.borderLight,
56
- },
57
- ]}
58
- onPress={() => onSelectType(type.id)}
59
- >
60
- <AtomicText type="headlineLarge">{type.emoji}</AtomicText>
61
- <AtomicText
62
- type="bodySmall"
63
- style={{
64
- color:
65
- selectedType === type.id
66
- ? tokens.colors.onPrimary
67
- : tokens.colors.textPrimary,
68
- fontWeight: selectedType === type.id ? "600" : "400",
69
- marginTop: 8,
70
- textAlign: "center",
71
- }}
72
- >
73
- {type.name}
74
- </AtomicText>
75
- </TouchableOpacity>
76
- ))}
77
- </ScrollView>
78
- </View>
79
- );
80
- };
81
-
82
- const styles = StyleSheet.create({
83
- section: {
84
- padding: 16,
85
- width: "100%",
86
- },
87
- title: {
88
- fontWeight: "600",
89
- marginBottom: 12,
90
- },
91
- scrollContent: {
92
- paddingRight: 16,
93
- },
94
- card: {
95
- width: 100,
96
- padding: 16,
97
- borderRadius: 16,
98
- borderWidth: 2,
99
- marginRight: 12,
100
- alignItems: "center",
101
- },
102
- });
@@ -1,2 +0,0 @@
1
- export { ScriptDisplay } from "./ScriptDisplay";
2
- export { VideoTypeSelector, type VideoTypeSelectorProps } from "./VideoTypeSelector";
@@ -1 +0,0 @@
1
- export * from "./useScriptGenerator";
@@ -1,77 +0,0 @@
1
- import { useState, useCallback } from "react";
2
- import {
3
- ScriptSection,
4
- ScriptGenerationRequest,
5
- } from "../../domain/types/script.types";
6
-
7
- export interface UseScriptGeneratorProps {
8
- readonly onGenerate: (request: ScriptGenerationRequest) => Promise<readonly ScriptSection[] | null>;
9
- readonly onUseScript?: (script: readonly ScriptSection[]) => void;
10
- readonly onAuthRequired?: () => void;
11
- }
12
-
13
- export interface UseScriptGeneratorReturn {
14
- readonly isGenerating: boolean;
15
- readonly generatedScript: readonly ScriptSection[] | null;
16
- readonly generateScript: (request: ScriptGenerationRequest) => Promise<void>;
17
- readonly handleUseScript: () => void;
18
- readonly resetState: () => void;
19
- }
20
-
21
- export function useScriptGenerator({
22
- onGenerate,
23
- onUseScript,
24
- onAuthRequired,
25
- }: UseScriptGeneratorProps): UseScriptGeneratorReturn {
26
- const [isGenerating, setIsGenerating] = useState(false);
27
- const [generatedScript, setGeneratedScript] = useState<readonly ScriptSection[] | null>(null);
28
-
29
- const generateScript = useCallback(
30
- async (request: ScriptGenerationRequest) => {
31
- if (!request.topic.trim()) {
32
- return;
33
- }
34
-
35
- if (onAuthRequired) {
36
- onAuthRequired();
37
- }
38
-
39
- setIsGenerating(true);
40
-
41
- try {
42
- const script = await onGenerate(request);
43
-
44
- if (script) {
45
- setGeneratedScript(script);
46
- }
47
- } catch (error) {
48
- if (__DEV__) {
49
-
50
- console.error("Script generation error:", error);
51
- }
52
- } finally {
53
- setIsGenerating(false);
54
- }
55
- },
56
- [onGenerate, onAuthRequired],
57
- );
58
-
59
- const handleUseScript = useCallback(() => {
60
- if (generatedScript && onUseScript) {
61
- onUseScript(generatedScript);
62
- }
63
- }, [generatedScript, onUseScript]);
64
-
65
- const resetState = useCallback(() => {
66
- setGeneratedScript(null);
67
- setIsGenerating(false);
68
- }, []);
69
-
70
- return {
71
- isGenerating,
72
- generatedScript,
73
- generateScript,
74
- handleUseScript,
75
- resetState,
76
- };
77
- }
@@ -1,311 +0,0 @@
1
- # Shared Features
2
-
3
- Common functionality and utilities shared across multiple AI features.
4
-
5
- ## 📍 Import Path
6
-
7
- ```typescript
8
- import {
9
- useDualImageVideoProcessing,
10
- DualImagePicker,
11
- DualVideoPicker
12
- } from '@umituz/react-native-ai-generation-content';
13
- ```
14
-
15
- **Location**: `src/features/shared/`
16
-
17
- ## 🎯 Shared Purpose
18
-
19
- Provide reusable components, hooks, and utilities for common AI feature patterns. Focus on dual image/video processing for features requiring two inputs, with shared state management, validation, and error handling.
20
-
21
- ---
22
-
23
- ## 📋 Usage Strategy
24
-
25
- ### When to Use Shared Features
26
-
27
- ✅ **Use Cases:**
28
- - Features requiring two images/videos
29
- - Common state management patterns
30
- - Shared validation logic
31
- - Reusable UI components
32
- - Dual input processing
33
-
34
- ❌ **When NOT to Use:**
35
- - Single input features (use feature-specific hooks)
36
- - Complex custom logic (build custom solution)
37
- - Feature-specific requirements
38
-
39
- ### Implementation Strategy
40
-
41
- 1. **Identify common patterns** across features
42
- 2. **Use shared hooks** for dual processing
43
- 3. **Implement validation** consistently
44
- 4. **Handle errors** uniformly
45
- 5. **Track progress** with shared UI
46
- 6. **Reset states** properly
47
- 7. **Customize** when needed
48
-
49
- ---
50
-
51
- ## ⚠️ Critical Rules (MUST FOLLOW)
52
-
53
- ### 1. Dual Processing
54
- - **MUST** validate both inputs before processing
55
- - **MUST** handle missing inputs gracefully
56
- - **MUST** provide clear input labels
57
- - **MUST** implement input selection
58
- - **MUST** check `isReady` before processing
59
-
60
- ### 2. State Management
61
- - **MUST** track both inputs independently
62
- - **MUST** handle processing state
63
- - **MUST** track progress percentage
64
- - **MUST** display errors clearly
65
- - **MUST** reset state properly
66
-
67
- ### 3. Validation
68
- - **MUST** validate input types
69
- - **MUST** check file sizes
70
- - **MUST** verify input quality
71
- - **MUST** provide validation feedback
72
- - **MUST** prevent invalid operations
73
-
74
- ### 4. User Experience
75
- - **MUST** provide clear UI labels
76
- - **MUST** show progress indicators
77
- - **MUST** handle long operations
78
- - **MUST** allow cancellation
79
- - **MUST** confirm before processing
80
-
81
- ### 5. Error Handling
82
- - **MUST** handle processing errors
83
- - **MUST** provide user-friendly messages
84
- - **MUST** offer retry options
85
- - **MUST** log errors appropriately
86
- - **MUST** recover gracefully
87
-
88
- ---
89
-
90
- ## 🚫 Prohibitions (MUST AVOID)
91
-
92
- ### Strictly Forbidden
93
-
94
- ❌ **NEVER** do the following:
95
-
96
- 1. **No Missing Validation**
97
- - Always validate both inputs
98
- - Never process without checking
99
- - Provide clear validation messages
100
-
101
- 2. **No Confusing UI**
102
- - Always label inputs clearly
103
- - Never mix up source/target
104
- - Show which input is which
105
-
106
- 3. **No Silent Failures**
107
- - Always explain what went wrong
108
- - Never fail silently
109
- - Provide actionable guidance
110
-
111
- 4. **No Blocking Operations**
112
- - Never block main thread
113
- - Always show progress
114
- - Allow cancellation
115
-
116
- 5. **No State Leaks**
117
- - Always cleanup properly
118
- - Reset state when done
119
- - Clear temporary data
120
-
121
- 6. **No Missing Context**
122
- - Always explain what's happening
123
- - Show current operation
124
- - Provide progress feedback
125
-
126
- 7. **No Partial Processing**
127
- - Always complete or fail cleanly
128
- - Never leave partial state
129
- - Handle cancellation properly
130
-
131
- ---
132
-
133
- ## 🤖 AI Agent Directions
134
-
135
- ### For AI Code Generation Tools
136
-
137
- #### Prompt Template for AI Agents
138
-
139
- ```
140
- You are implementing dual image/video processing using @umituz/react-native-ai-generation-content.
141
-
142
- REQUIREMENTS:
143
- 1. Import shared processing hooks
144
- 2. Implement dual input selection
145
- 3. Validate both inputs
146
- 4. Handle processing state
147
- 5. Show progress indicators
148
- 6. Handle errors gracefully
149
- 7. Implement confirmation dialog
150
- 8. Reset state properly
151
-
152
- CRITICAL RULES:
153
- - MUST validate both inputs before processing
154
- - MUST provide clear UI labels
155
- - MUST handle missing inputs
156
- - MUST show progress during processing
157
- - MUST implement error handling
158
- - MUST allow user cancellation
159
-
160
- SHARED HOOKS:
161
- - useDualImageVideoProcessing: Main dual processing hook
162
- - DualImagePicker: Image selection component
163
- - DualVideoPicker: Video selection component
164
-
165
- CONFIGURATION:
166
- - featureType: 'face-swap' | 'ai-hug' | 'ai-kiss' | etc.
167
- - inputType: 'image' | 'video'
168
- - defaultOptions: Feature-specific options
169
- - onProcessingStart: Callback when processing starts
170
- - onProcessingComplete: Callback when processing completes
171
- - onError: Error callback
172
-
173
- STATE MANAGEMENT:
174
- - sourceImageOrVideo: First input
175
- - targetImageOrVideo: Second input
176
- - isProcessing: Processing state
177
- - progress: Progress percentage (0-100)
178
- - error: Error message if failed
179
- - result: Processing result
180
- - isReady: Both inputs provided and valid
181
-
182
- VALIDATION:
183
- - Check both inputs provided
184
- - Verify input types match
185
- - Validate file sizes
186
- - Check input quality
187
- - Provide clear feedback
188
-
189
- STRICTLY FORBIDDEN:
190
- - No missing validation
191
- - No confusing UI
192
- - No silent failures
193
- - No blocking operations
194
- - No state leaks
195
- - No missing context
196
- - No partial processing
197
-
198
- QUALITY CHECKLIST:
199
- - [ ] Both inputs validated
200
- - [ ] Clear UI labels
201
- - [ ] Progress tracking
202
- - [ ] Error handling
203
- - [ ] Confirmation dialog
204
- - [ ] State reset
205
- - [ ] Cancellation support
206
- - [ ] User feedback
207
- - [ ] Clean state management
208
- - [ ] Proper cleanup
209
- ```
210
-
211
- ---
212
-
213
- ## 🛠️ Configuration Strategy
214
-
215
- ### Dual Processing Types
216
-
217
- ```typescript
218
- type DualInputType = 'image' | 'video';
219
-
220
- interface DualImageVideoProcessingStartData {
221
- sourceImageOrVideo: string; // Base64
222
- targetImageOrVideo: string; // Base64
223
- options?: Record<string, any>;
224
- }
225
-
226
- interface DualImageVideoResult {
227
- success: boolean;
228
- result?: {
229
- imageUrl?: string;
230
- videoUrl?: string;
231
- thumbnailUrl?: string;
232
- metadata?: Record<string, any>;
233
- };
234
- error?: string;
235
- }
236
- ```
237
-
238
- ### Feature Config
239
-
240
- ```typescript
241
- interface DualImageVideoFeatureConfig {
242
- featureType: string;
243
- inputType: DualInputType;
244
- defaultOptions?: Record<string, any>;
245
- onProcessingStart?: () => void;
246
- onProcessingComplete?: (result: DualImageVideoResult) => void;
247
- onError?: (error: string) => void;
248
- }
249
- ```
250
-
251
- ---
252
-
253
- ## 📊 Features Using Shared
254
-
255
- ### Dual Image Features
256
- - **Face Swap**: Swap faces between images
257
- - **AI Hug**: Generate hug images
258
- - **AI Kiss**: Generate kiss images
259
- - **Couple Future**: Future predictions
260
-
261
- ### Shared Components
262
- - `DualImagePicker` - Image selection UI
263
- - `DualVideoPicker` - Video selection UI
264
- - `DualImageVideoState` - State management
265
-
266
- ---
267
-
268
- ## 🎨 Best Practices
269
-
270
- ### Input Labeling
271
- - "First Image/Video" vs "Second Image/Video"
272
- - "Source" vs "Target" for swap features
273
- - "Person 1" vs "Person 2" for couple features
274
- - Always show which is which
275
-
276
- ### Validation
277
- - Check both inputs present
278
- - Validate file types
279
- - Check file sizes
280
- - Verify quality
281
- - Provide clear feedback
282
-
283
- ### User Experience
284
- - Show input previews
285
- - Display progress clearly
286
- - Confirm before processing
287
- - Allow cancellation
288
- - Explain errors clearly
289
-
290
- ---
291
-
292
- ## 🐛 Common Pitfalls
293
-
294
- ❌ **Mixed up inputs**: Clear labels, visual indicators
295
- ❌ **Missing validation**: Always check both inputs
296
- ❌ **No feedback**: Show progress, errors clearly
297
- ❌ **State issues**: Proper cleanup and reset
298
-
299
- ---
300
-
301
- ## 📚 Related Features
302
-
303
- - [Face Swap](../face-swap) - Uses dual image processing
304
- - [AI Hug](../ai-hug) - Uses dual image processing
305
- - [AI Kiss](../ai-kiss) - Uses dual image processing
306
- - [Couple Future](../couple-future) - Uses dual image processing
307
-
308
- ---
309
-
310
- **Last Updated**: 2025-01-08
311
- **Version**: 2.0.0 (Strategy-based Documentation)