@umituz/react-native-ai-generation-content 1.26.2 → 1.26.5

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 (333) 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 +3 -29
  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/presentation/components/index.ts +0 -3
  14. package/src/presentation/hooks/index.ts +0 -7
  15. package/src/features/ai-hug/README.md +0 -438
  16. package/src/features/ai-hug/domain/index.ts +0 -5
  17. package/src/features/ai-hug/domain/types/ai-hug.types.ts +0 -25
  18. package/src/features/ai-hug/domain/types/index.ts +0 -7
  19. package/src/features/ai-hug/index.ts +0 -19
  20. package/src/features/ai-hug/presentation/components/AIHugFeature.tsx +0 -77
  21. package/src/features/ai-hug/presentation/components/index.ts +0 -2
  22. package/src/features/ai-hug/presentation/hooks/index.ts +0 -9
  23. package/src/features/ai-hug/presentation/hooks/useAIHugFeature.ts +0 -34
  24. package/src/features/ai-hug/presentation/index.ts +0 -6
  25. package/src/features/ai-kiss/README.md +0 -445
  26. package/src/features/ai-kiss/domain/index.ts +0 -5
  27. package/src/features/ai-kiss/domain/types/ai-kiss.types.ts +0 -25
  28. package/src/features/ai-kiss/domain/types/index.ts +0 -7
  29. package/src/features/ai-kiss/index.ts +0 -19
  30. package/src/features/ai-kiss/presentation/components/AIKissFeature.tsx +0 -77
  31. package/src/features/ai-kiss/presentation/components/index.ts +0 -2
  32. package/src/features/ai-kiss/presentation/hooks/index.ts +0 -9
  33. package/src/features/ai-kiss/presentation/hooks/useAIKissFeature.ts +0 -34
  34. package/src/features/ai-kiss/presentation/index.ts +0 -6
  35. package/src/features/anime-selfie/README.md +0 -396
  36. package/src/features/anime-selfie/domain/index.ts +0 -5
  37. package/src/features/anime-selfie/domain/types/anime-selfie.types.ts +0 -52
  38. package/src/features/anime-selfie/domain/types/index.ts +0 -8
  39. package/src/features/anime-selfie/index.ts +0 -20
  40. package/src/features/anime-selfie/presentation/components/AnimeSelfieFeature.tsx +0 -86
  41. package/src/features/anime-selfie/presentation/components/index.ts +0 -2
  42. package/src/features/anime-selfie/presentation/hooks/index.ts +0 -9
  43. package/src/features/anime-selfie/presentation/hooks/useAnimeSelfieFeature.ts +0 -59
  44. package/src/features/anime-selfie/presentation/index.ts +0 -6
  45. package/src/features/couple-future/README.md +0 -445
  46. package/src/features/couple-future/domain/types.ts +0 -63
  47. package/src/features/couple-future/domain/wizard-config.adapter.ts +0 -76
  48. package/src/features/couple-future/domain/wizard.types.ts +0 -121
  49. package/src/features/couple-future/index.ts +0 -83
  50. package/src/features/couple-future/infrastructure/coupleFeatureRegistry.ts +0 -76
  51. package/src/features/couple-future/infrastructure/couplePromptEnhancer.ts +0 -100
  52. package/src/features/couple-future/infrastructure/executor.ts +0 -188
  53. package/src/features/couple-future/infrastructure/generationUtils.ts +0 -228
  54. package/src/features/couple-future/presentation/components/ArtStyleSelector.tsx +0 -146
  55. package/src/features/couple-future/presentation/components/ArtistStyleSelector.tsx +0 -122
  56. package/src/features/couple-future/presentation/components/CoupleFutureWizard.tsx +0 -239
  57. package/src/features/couple-future/presentation/components/GeneratingStepContent.tsx +0 -86
  58. package/src/features/couple-future/presentation/components/RomanticMoodSelector.tsx +0 -147
  59. package/src/features/couple-future/presentation/components/WardrobeSelector.tsx +0 -141
  60. package/src/features/couple-future/presentation/components/index.ts +0 -12
  61. package/src/features/couple-future/presentation/hooks/useCoupleFutureFlow.ts +0 -166
  62. package/src/features/couple-future/presentation/hooks/useCoupleFutureFlow.types.ts +0 -69
  63. package/src/features/couple-future/presentation/hooks/useCoupleFutureHandlers.ts +0 -117
  64. package/src/features/couple-future/presentation/screens/CoupleFeatureScreen.tsx +0 -113
  65. package/src/features/face-swap/README.md +0 -431
  66. package/src/features/face-swap/domain/index.ts +0 -5
  67. package/src/features/face-swap/domain/types/face-swap.types.ts +0 -26
  68. package/src/features/face-swap/domain/types/index.ts +0 -7
  69. package/src/features/face-swap/index.ts +0 -19
  70. package/src/features/face-swap/presentation/components/FaceSwapFeature.tsx +0 -87
  71. package/src/features/face-swap/presentation/components/index.ts +0 -2
  72. package/src/features/face-swap/presentation/hooks/index.ts +0 -6
  73. package/src/features/face-swap/presentation/hooks/useFaceSwapFeature.ts +0 -35
  74. package/src/features/face-swap/presentation/index.ts +0 -6
  75. package/src/features/hd-touch-up/README.md +0 -396
  76. package/src/features/hd-touch-up/domain/index.ts +0 -1
  77. package/src/features/hd-touch-up/domain/types/hd-touch-up.types.ts +0 -62
  78. package/src/features/hd-touch-up/domain/types/index.ts +0 -9
  79. package/src/features/hd-touch-up/index.ts +0 -21
  80. package/src/features/hd-touch-up/presentation/components/HDTouchUpFeature.tsx +0 -86
  81. package/src/features/hd-touch-up/presentation/components/index.ts +0 -2
  82. package/src/features/hd-touch-up/presentation/hooks/index.ts +0 -1
  83. package/src/features/hd-touch-up/presentation/hooks/useHDTouchUpFeature.ts +0 -23
  84. package/src/features/hd-touch-up/presentation/index.ts +0 -2
  85. package/src/features/image-to-image/README.md +0 -459
  86. package/src/features/image-to-image/domain/index.ts +0 -1
  87. package/src/features/image-to-image/domain/types/base.types.ts +0 -48
  88. package/src/features/image-to-image/domain/types/index.ts +0 -1
  89. package/src/features/image-to-image/domain/types/partials/config.types.ts +0 -37
  90. package/src/features/image-to-image/domain/types/partials/hook.types.ts +0 -53
  91. package/src/features/image-to-image/domain/types/partials/metadata.types.ts +0 -32
  92. package/src/features/image-to-image/domain/types/partials/result.types.ts +0 -44
  93. package/src/features/image-to-image/domain/types/partials/state.types.ts +0 -34
  94. package/src/features/image-to-image/domain/types/partials/translation.types.ts +0 -57
  95. package/src/features/image-to-image/index.ts +0 -2
  96. package/src/features/image-to-image/presentation/hooks/index.ts +0 -3
  97. package/src/features/image-to-image/presentation/hooks/useDualImageFeature.ts +0 -204
  98. package/src/features/image-to-image/presentation/hooks/useImageWithPromptFeature.ts +0 -223
  99. package/src/features/image-to-image/presentation/hooks/useSingleImageFeature.ts +0 -166
  100. package/src/features/image-to-image/presentation/index.ts +0 -1
  101. package/src/features/image-to-video/README.md +0 -414
  102. package/src/features/image-to-video/domain/constants/animation.constants.ts +0 -47
  103. package/src/features/image-to-video/domain/constants/duration.constants.ts +0 -13
  104. package/src/features/image-to-video/domain/constants/form.constants.ts +0 -22
  105. package/src/features/image-to-video/domain/constants/index.ts +0 -23
  106. package/src/features/image-to-video/domain/constants/music.constants.ts +0 -53
  107. package/src/features/image-to-video/domain/index.ts +0 -5
  108. package/src/features/image-to-video/domain/types/animation.types.ts +0 -20
  109. package/src/features/image-to-video/domain/types/config.types.ts +0 -56
  110. package/src/features/image-to-video/domain/types/duration.types.ts +0 -11
  111. package/src/features/image-to-video/domain/types/form.types.ts +0 -35
  112. package/src/features/image-to-video/domain/types/image-to-video.types.ts +0 -122
  113. package/src/features/image-to-video/domain/types/index.ts +0 -39
  114. package/src/features/image-to-video/domain/types/music.types.ts +0 -21
  115. package/src/features/image-to-video/index.ts +0 -116
  116. package/src/features/image-to-video/infrastructure/index.ts +0 -1
  117. package/src/features/image-to-video/infrastructure/services/image-to-video-executor.ts +0 -154
  118. package/src/features/image-to-video/infrastructure/services/index.ts +0 -5
  119. package/src/features/image-to-video/presentation/components/AddMoreCard.tsx +0 -52
  120. package/src/features/image-to-video/presentation/components/AnimationStyleSelector.tsx +0 -135
  121. package/src/features/image-to-video/presentation/components/DurationSelector.tsx +0 -110
  122. package/src/features/image-to-video/presentation/components/EmptyGridState.tsx +0 -69
  123. package/src/features/image-to-video/presentation/components/GridImageItem.tsx +0 -64
  124. package/src/features/image-to-video/presentation/components/ImageSelectionGrid.styles.ts +0 -84
  125. package/src/features/image-to-video/presentation/components/ImageSelectionGrid.tsx +0 -77
  126. package/src/features/image-to-video/presentation/components/ImageSelectionGrid.types.ts +0 -18
  127. package/src/features/image-to-video/presentation/components/MusicMoodSelector.tsx +0 -181
  128. package/src/features/image-to-video/presentation/components/index.ts +0 -30
  129. package/src/features/image-to-video/presentation/hooks/index.ts +0 -27
  130. package/src/features/image-to-video/presentation/hooks/useFormState.ts +0 -116
  131. package/src/features/image-to-video/presentation/hooks/useGeneration.ts +0 -85
  132. package/src/features/image-to-video/presentation/hooks/useGenerationExecution.ts +0 -143
  133. package/src/features/image-to-video/presentation/hooks/useImageToVideoFeature.ts +0 -107
  134. package/src/features/image-to-video/presentation/hooks/useImageToVideoForm.ts +0 -119
  135. package/src/features/image-to-video/presentation/hooks/useImageToVideoValidation.ts +0 -46
  136. package/src/features/image-to-video/presentation/index.ts +0 -5
  137. package/src/features/love-message/domain/constants.ts +0 -162
  138. package/src/features/love-message/domain/types.ts +0 -58
  139. package/src/features/love-message/index.ts +0 -37
  140. package/src/features/love-message/infrastructure/persistence/PartnerProfileRepository.ts +0 -52
  141. package/src/features/love-message/infrastructure/prompts/messagePromptBuilder.ts +0 -109
  142. package/src/features/love-message/infrastructure/services/LoveMessageService.ts +0 -35
  143. package/src/features/love-message/presentation/components/CategoryGrid.tsx +0 -88
  144. package/src/features/love-message/presentation/components/DetailsInput.tsx +0 -74
  145. package/src/features/love-message/presentation/components/ExploreHeader.tsx +0 -67
  146. package/src/features/love-message/presentation/components/FieldInput.tsx +0 -83
  147. package/src/features/love-message/presentation/components/GeneratorHeader.tsx +0 -88
  148. package/src/features/love-message/presentation/components/LoveMessageHeroSection.tsx +0 -114
  149. package/src/features/love-message/presentation/components/MessageListItem.tsx +0 -77
  150. package/src/features/love-message/presentation/components/MessageResult.tsx +0 -105
  151. package/src/features/love-message/presentation/components/PartnerInput.tsx +0 -78
  152. package/src/features/love-message/presentation/components/ProgressDots.tsx +0 -48
  153. package/src/features/love-message/presentation/components/StepDetails.tsx +0 -23
  154. package/src/features/love-message/presentation/components/StepPartner.tsx +0 -116
  155. package/src/features/love-message/presentation/components/StepVibe.tsx +0 -30
  156. package/src/features/love-message/presentation/components/ToneSelector.tsx +0 -100
  157. package/src/features/love-message/presentation/components/TrendingSection.tsx +0 -130
  158. package/src/features/love-message/presentation/components/TypeSelector.tsx +0 -99
  159. package/src/features/love-message/presentation/hooks/useLoveMessageGenerator.ts +0 -114
  160. package/src/features/love-message/presentation/hooks/usePartnerProfile.ts +0 -43
  161. package/src/features/love-message/presentation/navigation/LoveMessageStack.tsx +0 -39
  162. package/src/features/love-message/presentation/screens/LoveMessageExploreScreen.tsx +0 -53
  163. package/src/features/love-message/presentation/screens/LoveMessageGeneratorScreen.tsx +0 -169
  164. package/src/features/love-message/presentation/screens/MessageListScreen.tsx +0 -127
  165. package/src/features/love-message/presentation/screens/PartnerProfileScreen.tsx +0 -119
  166. package/src/features/meme-generator/README.md +0 -408
  167. package/src/features/meme-generator/index.ts +0 -3
  168. package/src/features/meme-generator/infrastructure/services/MemeGenerationService.ts +0 -87
  169. package/src/features/meme-generator/presentation/components/MemeGeneratorFeature.tsx +0 -180
  170. package/src/features/meme-generator/presentation/components/index.ts +0 -2
  171. package/src/features/meme-generator/presentation/screens/MemeGeneratorScreen.tsx +0 -168
  172. package/src/features/meme-generator/presentation/screens/index.ts +0 -1
  173. package/src/features/partner-upload/domain/types.ts +0 -59
  174. package/src/features/partner-upload/index.ts +0 -30
  175. package/src/features/partner-upload/presentation/components/PartnerInfoInput.tsx +0 -112
  176. package/src/features/partner-upload/presentation/components/PhotoTips.tsx +0 -53
  177. package/src/features/partner-upload/presentation/components/index.ts +0 -4
  178. package/src/features/partner-upload/presentation/hooks/index.ts +0 -7
  179. package/src/features/partner-upload/presentation/hooks/usePartnerStep.ts +0 -130
  180. package/src/features/partner-upload/presentation/screens/PartnerStepScreen.tsx +0 -231
  181. package/src/features/partner-upload/presentation/screens/index.ts +0 -6
  182. package/src/features/photo-restoration/README.md +0 -399
  183. package/src/features/photo-restoration/domain/index.ts +0 -1
  184. package/src/features/photo-restoration/domain/types/index.ts +0 -9
  185. package/src/features/photo-restoration/domain/types/photo-restore.types.ts +0 -64
  186. package/src/features/photo-restoration/index.ts +0 -22
  187. package/src/features/photo-restoration/presentation/components/PhotoRestoreFeature.tsx +0 -88
  188. package/src/features/photo-restoration/presentation/components/PhotoRestoreResultView.tsx +0 -86
  189. package/src/features/photo-restoration/presentation/components/index.ts +0 -4
  190. package/src/features/photo-restoration/presentation/hooks/index.ts +0 -1
  191. package/src/features/photo-restoration/presentation/hooks/usePhotoRestoreFeature.ts +0 -23
  192. package/src/features/photo-restoration/presentation/index.ts +0 -2
  193. package/src/features/remove-background/README.md +0 -393
  194. package/src/features/remove-background/domain/index.ts +0 -5
  195. package/src/features/remove-background/domain/types/index.ts +0 -7
  196. package/src/features/remove-background/domain/types/remove-background.types.ts +0 -28
  197. package/src/features/remove-background/index.ts +0 -19
  198. package/src/features/remove-background/presentation/components/RemoveBackgroundFeature.tsx +0 -86
  199. package/src/features/remove-background/presentation/components/index.ts +0 -2
  200. package/src/features/remove-background/presentation/hooks/index.ts +0 -1
  201. package/src/features/remove-background/presentation/hooks/useRemoveBackgroundFeature.ts +0 -28
  202. package/src/features/remove-background/presentation/index.ts +0 -6
  203. package/src/features/remove-object/README.md +0 -405
  204. package/src/features/remove-object/domain/index.ts +0 -5
  205. package/src/features/remove-object/domain/types/index.ts +0 -7
  206. package/src/features/remove-object/domain/types/remove-object.types.ts +0 -54
  207. package/src/features/remove-object/index.ts +0 -23
  208. package/src/features/remove-object/presentation/components/RemoveObjectFeature.tsx +0 -136
  209. package/src/features/remove-object/presentation/components/index.ts +0 -2
  210. package/src/features/remove-object/presentation/hooks/index.ts +0 -9
  211. package/src/features/remove-object/presentation/hooks/useRemoveObjectFeature.ts +0 -221
  212. package/src/features/remove-object/presentation/index.ts +0 -6
  213. package/src/features/replace-background/README.md +0 -405
  214. package/src/features/replace-background/domain/types/index.ts +0 -7
  215. package/src/features/replace-background/domain/types/replace-background.types.ts +0 -33
  216. package/src/features/replace-background/index.ts +0 -23
  217. package/src/features/replace-background/presentation/components/ReplaceBackgroundFeature.tsx +0 -105
  218. package/src/features/replace-background/presentation/components/index.ts +0 -6
  219. package/src/features/replace-background/presentation/hooks/index.ts +0 -9
  220. package/src/features/replace-background/presentation/hooks/useReplaceBackgroundFeature.ts +0 -55
  221. package/src/features/scenarios/domain/types.ts +0 -147
  222. package/src/features/scenarios/index.ts +0 -64
  223. package/src/features/scenarios/presentation/components/InspirationChips.tsx +0 -82
  224. package/src/features/scenarios/presentation/components/MagicPromptHeadline.tsx +0 -79
  225. package/src/features/scenarios/presentation/components/ScenarioGrid.tsx +0 -224
  226. package/src/features/scenarios/presentation/components/ScenarioHeader.tsx +0 -55
  227. package/src/features/scenarios/presentation/components/StyleSelector.tsx +0 -119
  228. package/src/features/scenarios/presentation/components/index.ts +0 -18
  229. package/src/features/scenarios/presentation/containers/CategoryNavigationContainer.tsx +0 -178
  230. package/src/features/scenarios/presentation/screens/HierarchicalScenarioListScreen.tsx +0 -266
  231. package/src/features/scenarios/presentation/screens/MagicPromptScreen.tsx +0 -242
  232. package/src/features/scenarios/presentation/screens/MainCategoryScreen.tsx +0 -198
  233. package/src/features/scenarios/presentation/screens/ScenarioPreviewScreen.tsx +0 -164
  234. package/src/features/scenarios/presentation/screens/ScenarioSelectorScreen.tsx +0 -66
  235. package/src/features/scenarios/presentation/screens/SubCategoryScreen.tsx +0 -216
  236. package/src/features/script-generator/README.md +0 -433
  237. package/src/features/script-generator/domain/constants/index.ts +0 -10
  238. package/src/features/script-generator/domain/types/script.types.ts +0 -30
  239. package/src/features/script-generator/index.ts +0 -5
  240. package/src/features/script-generator/infrastructure/services/ScriptGenerationService.ts +0 -62
  241. package/src/features/script-generator/presentation/components/ScriptDisplay.tsx +0 -158
  242. package/src/features/script-generator/presentation/components/VideoTypeSelector.tsx +0 -102
  243. package/src/features/script-generator/presentation/components/index.ts +0 -2
  244. package/src/features/script-generator/presentation/hooks/index.ts +0 -1
  245. package/src/features/script-generator/presentation/hooks/useScriptGenerator.ts +0 -77
  246. package/src/features/shared/README.md +0 -311
  247. package/src/features/shared/dual-image-video/domain/types/dual-image-video.types.ts +0 -88
  248. package/src/features/shared/dual-image-video/domain/types/index.ts +0 -14
  249. package/src/features/shared/dual-image-video/index.ts +0 -17
  250. package/src/features/shared/dual-image-video/presentation/hooks/index.ts +0 -5
  251. package/src/features/shared/dual-image-video/presentation/hooks/useDualImageVideoFeature.ts +0 -185
  252. package/src/features/shared/index.ts +0 -6
  253. package/src/features/text-to-image/README.md +0 -394
  254. package/src/features/text-to-image/domain/constants/index.ts +0 -8
  255. package/src/features/text-to-image/domain/constants/options.constants.ts +0 -39
  256. package/src/features/text-to-image/domain/constants/styles.constants.ts +0 -34
  257. package/src/features/text-to-image/domain/index.ts +0 -7
  258. package/src/features/text-to-image/domain/types/config.types.ts +0 -75
  259. package/src/features/text-to-image/domain/types/form.types.ts +0 -58
  260. package/src/features/text-to-image/domain/types/index.ts +0 -38
  261. package/src/features/text-to-image/domain/types/text-to-image.types.ts +0 -58
  262. package/src/features/text-to-image/index.ts +0 -116
  263. package/src/features/text-to-image/infrastructure/index.ts +0 -1
  264. package/src/features/text-to-image/infrastructure/services/index.ts +0 -5
  265. package/src/features/text-to-image/infrastructure/services/text-to-image-executor.ts +0 -147
  266. package/src/features/text-to-image/presentation/components/index.ts +0 -30
  267. package/src/features/text-to-image/presentation/hooks/index.ts +0 -30
  268. package/src/features/text-to-image/presentation/hooks/useFormState.ts +0 -103
  269. package/src/features/text-to-image/presentation/hooks/useGeneration.ts +0 -139
  270. package/src/features/text-to-image/presentation/hooks/useTextToImageFeature.ts +0 -111
  271. package/src/features/text-to-image/presentation/hooks/useTextToImageForm.ts +0 -58
  272. package/src/features/text-to-image/presentation/index.ts +0 -7
  273. package/src/features/text-to-video/README.md +0 -412
  274. package/src/features/text-to-video/domain/index.ts +0 -1
  275. package/src/features/text-to-video/domain/types/callback.types.ts +0 -69
  276. package/src/features/text-to-video/domain/types/component.types.ts +0 -106
  277. package/src/features/text-to-video/domain/types/config.types.ts +0 -61
  278. package/src/features/text-to-video/domain/types/index.ts +0 -56
  279. package/src/features/text-to-video/domain/types/request.types.ts +0 -36
  280. package/src/features/text-to-video/domain/types/state.types.ts +0 -53
  281. package/src/features/text-to-video/index.ts +0 -68
  282. package/src/features/text-to-video/infrastructure/index.ts +0 -1
  283. package/src/features/text-to-video/infrastructure/services/index.ts +0 -5
  284. package/src/features/text-to-video/infrastructure/services/text-to-video-executor.ts +0 -141
  285. package/src/features/text-to-video/presentation/components/FrameSelector.tsx +0 -153
  286. package/src/features/text-to-video/presentation/components/GenerationTabs.tsx +0 -73
  287. package/src/features/text-to-video/presentation/components/HeroSection.tsx +0 -61
  288. package/src/features/text-to-video/presentation/components/HintCarousel.tsx +0 -96
  289. package/src/features/text-to-video/presentation/components/OptionsPanel.tsx +0 -121
  290. package/src/features/text-to-video/presentation/components/index.ts +0 -10
  291. package/src/features/text-to-video/presentation/hooks/index.ts +0 -17
  292. package/src/features/text-to-video/presentation/hooks/useTextToVideoFeature.ts +0 -225
  293. package/src/features/text-to-video/presentation/hooks/useTextToVideoForm.ts +0 -134
  294. package/src/features/text-to-video/presentation/index.ts +0 -7
  295. package/src/features/text-to-voice/README.md +0 -445
  296. package/src/features/text-to-voice/domain/index.ts +0 -1
  297. package/src/features/text-to-voice/domain/types/component.types.ts +0 -91
  298. package/src/features/text-to-voice/domain/types/config.types.ts +0 -34
  299. package/src/features/text-to-voice/domain/types/form.types.ts +0 -39
  300. package/src/features/text-to-voice/domain/types/generation.types.ts +0 -43
  301. package/src/features/text-to-voice/domain/types/index.ts +0 -38
  302. package/src/features/text-to-voice/index.ts +0 -53
  303. package/src/features/text-to-voice/infrastructure/index.ts +0 -1
  304. package/src/features/text-to-voice/infrastructure/services/index.ts +0 -4
  305. package/src/features/text-to-voice/infrastructure/services/text-to-voice-executor.ts +0 -103
  306. package/src/features/text-to-voice/presentation/components/TextToVoiceAudioPlayer.tsx +0 -81
  307. package/src/features/text-to-voice/presentation/components/index.ts +0 -7
  308. package/src/features/text-to-voice/presentation/hooks/index.ts +0 -6
  309. package/src/features/text-to-voice/presentation/hooks/useTextToVoiceForm.ts +0 -91
  310. package/src/features/text-to-voice/presentation/hooks/useTextToVoiceGeneration.ts +0 -116
  311. package/src/features/text-to-voice/presentation/index.ts +0 -2
  312. package/src/features/upscaling/README.md +0 -396
  313. package/src/features/upscaling/domain/index.ts +0 -1
  314. package/src/features/upscaling/domain/types/index.ts +0 -1
  315. package/src/features/upscaling/domain/types/upscale.types.ts +0 -23
  316. package/src/features/upscaling/index.ts +0 -20
  317. package/src/features/upscaling/presentation/components/ComparisonSlider.tsx +0 -200
  318. package/src/features/upscaling/presentation/components/UpscaleFeature.tsx +0 -89
  319. package/src/features/upscaling/presentation/components/UpscaleResultView.tsx +0 -98
  320. package/src/features/upscaling/presentation/components/index.ts +0 -6
  321. package/src/features/upscaling/presentation/hooks/index.ts +0 -1
  322. package/src/features/upscaling/presentation/hooks/useUpscaleFeature.ts +0 -28
  323. package/src/features/upscaling/presentation/index.ts +0 -2
  324. package/src/features/wizard/domain/types.ts +0 -154
  325. package/src/features/wizard/index.ts +0 -43
  326. package/src/features/wizard/presentation/components/AIFeatureWizard.tsx +0 -231
  327. package/src/features/wizard/presentation/components/AIGenerationWizard.tsx +0 -132
  328. package/src/features/wizard/presentation/hooks/useWizard.ts +0 -120
  329. package/src/features/wizard/presentation/store/useWizardStore.ts +0 -82
  330. package/src/presentation/components/flows/AIGenerateWizardFlow.tsx +0 -231
  331. package/src/presentation/components/flows/AIGenerateWizardFlow.types.ts +0 -66
  332. package/src/presentation/components/flows/useAIGenerateWizardFlow.ts +0 -130
  333. package/src/presentation/hooks/useAIGenerateWizard.ts +0 -164
@@ -1,88 +0,0 @@
1
- /**
2
- * Dual Image Video Feature Types
3
- * Shared types for video features that take two images (ai-hug, ai-kiss, etc.)
4
- * DRY: Consolidates common types from ai-hug and ai-kiss features
5
- */
6
-
7
- import type { VideoFeatureType } from "../../../../../domain/interfaces/ai-provider.interface";
8
-
9
- export interface DualImageVideoFeatureState {
10
- sourceImageUri: string | null;
11
- targetImageUri: string | null;
12
- processedVideoUrl: string | null;
13
- isProcessing: boolean;
14
- progress: number;
15
- error: string | null;
16
- }
17
-
18
- export interface DualImageVideoResult {
19
- success: boolean;
20
- videoUrl?: string;
21
- error?: string;
22
- requestId?: string;
23
- creationId?: string;
24
- }
25
-
26
- export interface DualImageVideoProcessingStartData {
27
- creationId: string;
28
- featureType: string;
29
- sourceImageUri: string;
30
- targetImageUri: string;
31
- }
32
-
33
- export type DualImageVideoResultExtractor = (result: unknown) => string | undefined;
34
-
35
- export interface DualImageVideoFeatureConfig {
36
- creditCost?: number;
37
- extractResult?: DualImageVideoResultExtractor;
38
- prepareImage: (imageUri: string) => Promise<string>;
39
- onSourceImageSelect?: (uri: string) => void;
40
- onTargetImageSelect?: (uri: string) => void;
41
- /** Called when processing starts - use to create Firestore doc with "processing" status */
42
- onProcessingStart?: (data: DualImageVideoProcessingStartData) => void;
43
- /** Called when processing completes - use to update Firestore doc with result */
44
- onProcessingComplete?: (result: DualImageVideoResult) => void;
45
- /** Called on error - use to update Firestore doc with "failed" status */
46
- onError?: (error: string, creationId?: string) => void;
47
- }
48
-
49
- export interface DualImageVideoTranslations {
50
- sourceUploadTitle: string;
51
- sourceUploadSubtitle: string;
52
- targetUploadTitle: string;
53
- targetUploadSubtitle: string;
54
- uploadChange: string;
55
- uploadAnalyzing: string;
56
- description: string;
57
- processingText: string;
58
- processButtonText: string;
59
- successText: string;
60
- saveButtonText: string;
61
- tryAnotherText: string;
62
- /** Modal title shown during processing */
63
- modalTitle?: string;
64
- /** Modal message shown during processing */
65
- modalMessage?: string;
66
- /** Modal hint/tip shown during processing */
67
- modalHint?: string;
68
- /** "Continue in background" text */
69
- modalBackgroundHint?: string;
70
- }
71
-
72
- export interface UseDualImageVideoFeatureProps {
73
- featureType: VideoFeatureType;
74
- config: DualImageVideoFeatureConfig;
75
- onSelectSourceImage: () => Promise<string | null>;
76
- onSelectTargetImage: () => Promise<string | null>;
77
- onSaveVideo: (videoUrl: string) => Promise<void>;
78
- /** Called before processing starts. Return false to cancel. */
79
- onBeforeProcess?: () => Promise<boolean>;
80
- }
81
-
82
- export interface UseDualImageVideoFeatureReturn extends DualImageVideoFeatureState {
83
- selectSourceImage: () => Promise<void>;
84
- selectTargetImage: () => Promise<void>;
85
- process: () => Promise<void>;
86
- save: () => Promise<void>;
87
- reset: () => void;
88
- }
@@ -1,14 +0,0 @@
1
- /**
2
- * Dual Image Video Domain Types
3
- */
4
-
5
- export type {
6
- DualImageVideoFeatureState,
7
- DualImageVideoResult,
8
- DualImageVideoProcessingStartData,
9
- DualImageVideoResultExtractor,
10
- DualImageVideoFeatureConfig,
11
- DualImageVideoTranslations,
12
- UseDualImageVideoFeatureProps,
13
- UseDualImageVideoFeatureReturn,
14
- } from "./dual-image-video.types";
@@ -1,17 +0,0 @@
1
- /**
2
- * Dual Image Video Feature (Shared)
3
- * Base infrastructure for video features using two source images
4
- */
5
-
6
- export type {
7
- DualImageVideoFeatureState,
8
- DualImageVideoResult,
9
- DualImageVideoProcessingStartData,
10
- DualImageVideoResultExtractor,
11
- DualImageVideoFeatureConfig,
12
- DualImageVideoTranslations,
13
- UseDualImageVideoFeatureProps,
14
- UseDualImageVideoFeatureReturn,
15
- } from "./domain/types";
16
-
17
- export { useDualImageVideoFeature } from "./presentation/hooks";
@@ -1,5 +0,0 @@
1
- /**
2
- * Dual Image Video Presentation Hooks
3
- */
4
-
5
- export { useDualImageVideoFeature } from "./useDualImageVideoFeature";
@@ -1,185 +0,0 @@
1
- /**
2
- * useDualImageVideoFeature Hook
3
- * Base hook for video features that take two images (ai-hug, ai-kiss, etc.)
4
- * DRY: Consolidates common logic from useAIHugFeature and useAIKissFeature
5
- * Uses centralized orchestrator for credit/error handling
6
- */
7
-
8
- import { useState, useCallback, useRef, useMemo } from "react";
9
- import { executeVideoFeature } from "../../../../../infrastructure/services";
10
- import { generateCreationId } from "../../../../../domains/creations/domain/utils";
11
- import {
12
- useGenerationOrchestrator,
13
- type GenerationStrategy,
14
- type AlertMessages,
15
- } from "../../../../../presentation/hooks/generation";
16
- import type {
17
- UseDualImageVideoFeatureProps,
18
- UseDualImageVideoFeatureReturn,
19
- } from "../../domain/types/dual-image-video.types";
20
-
21
- export interface DualImageVideoFeatureOptions {
22
- /** Alert messages for error handling */
23
- alertMessages?: AlertMessages;
24
- /** User ID for credit operations */
25
- userId?: string;
26
- /** Callback when credits are exhausted */
27
- onCreditsExhausted?: () => void;
28
- }
29
-
30
- const DEFAULT_ALERT_MESSAGES: AlertMessages = {
31
- networkError: "No internet connection. Please check your network.",
32
- policyViolation: "Content not allowed. Please try different images.",
33
- saveFailed: "Failed to save result. Please try again.",
34
- creditFailed: "Credit operation failed. Please try again.",
35
- unknown: "An error occurred. Please try again.",
36
- };
37
-
38
- interface DualImageVideoInput {
39
- sourceImageBase64: string;
40
- targetImageBase64: string;
41
- }
42
-
43
- export function useDualImageVideoFeature(
44
- props: UseDualImageVideoFeatureProps,
45
- options?: DualImageVideoFeatureOptions,
46
- ): UseDualImageVideoFeatureReturn {
47
- const { featureType, config, onSelectSourceImage, onSelectTargetImage, onSaveVideo, onBeforeProcess } = props;
48
-
49
- // Image selection state (separate from orchestrator state)
50
- const [sourceImageUri, setSourceImageUri] = useState<string | null>(null);
51
- const [targetImageUri, setTargetImageUri] = useState<string | null>(null);
52
- const [imageError, setImageError] = useState<string | null>(null);
53
- const currentCreationIdRef = useRef<string | null>(null);
54
-
55
- // Create strategy for orchestrator
56
- const strategy: GenerationStrategy<DualImageVideoInput, string> = useMemo(
57
- () => ({
58
- execute: async (input, onProgress) => {
59
- const result = await executeVideoFeature(
60
- featureType,
61
- { sourceImageBase64: input.sourceImageBase64, targetImageBase64: input.targetImageBase64 },
62
- { extractResult: config.extractResult, onProgress },
63
- );
64
-
65
- if (!result.success || !result.videoUrl) {
66
- throw new Error(result.error || "Processing failed");
67
- }
68
-
69
- // Notify completion with creationId
70
- const creationId = currentCreationIdRef.current;
71
- if (creationId) {
72
- config.onProcessingComplete?.({ success: true, videoUrl: result.videoUrl, creationId });
73
- }
74
-
75
- return result.videoUrl;
76
- },
77
- getCreditCost: () => config.creditCost || 1,
78
- }),
79
- [featureType, config],
80
- );
81
-
82
- // Use orchestrator for generation
83
- const orchestrator = useGenerationOrchestrator(strategy, {
84
- userId: options?.userId,
85
- alertMessages: options?.alertMessages || DEFAULT_ALERT_MESSAGES,
86
- onCreditsExhausted: options?.onCreditsExhausted,
87
- onError: (error) => {
88
- config.onError?.(error.message, currentCreationIdRef.current ?? undefined);
89
- },
90
- });
91
-
92
- const selectSourceImage = useCallback(async () => {
93
- try {
94
- const uri = await onSelectSourceImage();
95
- if (uri) {
96
- setSourceImageUri(uri);
97
- setImageError(null);
98
- config.onSourceImageSelect?.(uri);
99
- }
100
- } catch (error) {
101
- const message = error instanceof Error ? error.message : String(error);
102
- setImageError(message);
103
- }
104
- }, [onSelectSourceImage, config]);
105
-
106
- const selectTargetImage = useCallback(async () => {
107
- try {
108
- const uri = await onSelectTargetImage();
109
- if (uri) {
110
- setTargetImageUri(uri);
111
- setImageError(null);
112
- config.onTargetImageSelect?.(uri);
113
- }
114
- } catch (error) {
115
- const message = error instanceof Error ? error.message : String(error);
116
- setImageError(message);
117
- }
118
- }, [onSelectTargetImage, config]);
119
-
120
- const process = useCallback(async () => {
121
- if (!sourceImageUri || !targetImageUri) return;
122
-
123
- if (onBeforeProcess) {
124
- const canProceed = await onBeforeProcess();
125
- if (!canProceed) return;
126
- }
127
-
128
- // Generate creationId for this processing session
129
- const creationId = generateCreationId();
130
- currentCreationIdRef.current = creationId;
131
-
132
- // Notify start with creationId for Firestore creation
133
- config.onProcessingStart?.({
134
- creationId,
135
- featureType,
136
- sourceImageUri,
137
- targetImageUri,
138
- });
139
-
140
- try {
141
- const [sourceImageBase64, targetImageBase64] = await Promise.all([
142
- config.prepareImage(sourceImageUri),
143
- config.prepareImage(targetImageUri),
144
- ]);
145
-
146
- await orchestrator.generate({ sourceImageBase64, targetImageBase64 });
147
- } catch {
148
- // Error already handled by orchestrator
149
- }
150
- }, [sourceImageUri, targetImageUri, featureType, config, onBeforeProcess, orchestrator]);
151
-
152
- const save = useCallback(async () => {
153
- if (!orchestrator.result) return;
154
-
155
- try {
156
- await onSaveVideo(orchestrator.result);
157
- } catch (error) {
158
- const message = error instanceof Error ? error.message : String(error);
159
- setImageError(message);
160
- }
161
- }, [orchestrator.result, onSaveVideo]);
162
-
163
- const reset = useCallback(() => {
164
- setSourceImageUri(null);
165
- setTargetImageUri(null);
166
- setImageError(null);
167
- currentCreationIdRef.current = null;
168
- orchestrator.reset();
169
- }, [orchestrator]);
170
-
171
- // Combine states for backward compatibility
172
- return {
173
- sourceImageUri,
174
- targetImageUri,
175
- processedVideoUrl: orchestrator.result,
176
- isProcessing: orchestrator.isGenerating,
177
- progress: orchestrator.progress,
178
- error: orchestrator.error?.message || imageError,
179
- selectSourceImage,
180
- selectTargetImage,
181
- process,
182
- save,
183
- reset,
184
- };
185
- }
@@ -1,6 +0,0 @@
1
- /**
2
- * Shared Features
3
- * Common infrastructure for multiple feature types
4
- */
5
-
6
- export * from "./dual-image-video";
@@ -1,394 +0,0 @@
1
- # Text to Image Feature
2
-
3
- Generate images from text prompts using AI models.
4
-
5
- ## 📍 Import Path
6
-
7
- ```typescript
8
- import { useTextToImageFeature } from '@umituz/react-native-ai-generation-content';
9
- ```
10
-
11
- **Location**: `src/features/text-to-image/`
12
-
13
- ## 🎯 Feature Purpose
14
-
15
- Convert natural language text descriptions into AI-generated images. Supports various aspect ratios, styles, and quality settings.
16
-
17
- ---
18
-
19
- ## 📋 Usage Strategy
20
-
21
- ### When to Use This Feature
22
-
23
- ✅ **Use Cases:**
24
- - Generating original images from text descriptions
25
- - Creating visual content for marketing materials
26
- - Generating concept art and prototypes
27
- - Creating social media visuals
28
- - Product visualization from descriptions
29
- - Storyboarding and creative planning
30
-
31
- ❌ **When NOT to Use:**
32
- - Image manipulation of existing photos (use Image-to-Image)
33
- - Photo restoration (use Photo Restoration)
34
- - Style transfer on existing images (use Style Transfer)
35
- - Face swapping (use Face Swap)
36
-
37
- ### Implementation Strategy
38
-
39
- 1. **Use the feature hook** at component level
40
- 2. **Initialize with config** before first render
41
- 3. **Handle all states** - loading, success, error
42
- 4. **Implement progress tracking** for better UX
43
- 5. **Store generated images** for later use
44
-
45
- ---
46
-
47
- ## ⚠️ Critical Rules (MUST FOLLOW)
48
-
49
- ### 1. Prompt Engineering
50
- - **MUST** use descriptive, specific prompts
51
- - **MUST** include subject, action, and context
52
- - **MUST** specify art style if important
53
- - **MUST** use English for best results
54
- - **MUST NOT** exceed character limits (check model limits)
55
-
56
- ### 2. Configuration
57
- - **MUST** provide valid `userId` for tracking
58
- - **MUST** implement `onError` callback
59
- - **MUST** handle `isProcessing` state to prevent duplicate requests
60
- - **MUST** validate prompts before generation
61
- - **MUST NOT** call `generate()` when `isReady` is false
62
-
63
- ### 3. State Management
64
- - **MUST** check `isReady` before enabling generate button
65
- - **MUST** handle `isProcessing` state with loading indicators
66
- - **MUST** display `error` state to users
67
- - **MUST** handle `result.imageUrl` existence check
68
- - **MUST** implement proper cleanup on unmount
69
-
70
- ### 4. Performance
71
- - **MUST** implement debouncing for prompt inputs (>500ms)
72
- - **MUST** limit concurrent requests (max 1 per user)
73
- - **MUST** cache generated images locally
74
- - **MUST** implement retry logic (max 3 attempts)
75
- - **MUST NOT** generate multiple images simultaneously
76
-
77
- ### 5. Security & Privacy
78
- - **MUST** validate and sanitize user prompts
79
- - **MUST** implement content moderation
80
- - **MUST** check for inappropriate content
81
- - **MUST** store userId securely
82
- - **MUST NOT** expose API keys in client code
83
-
84
- ---
85
-
86
- ## 🚫 Prohibitions (MUST AVOID)
87
-
88
- ### Strictly Forbidden
89
-
90
- ❌ **NEVER** do the following:
91
-
92
- 1. **No Empty Prompts**
93
- - Always validate prompt has meaningful content
94
- - Minimum 10 characters recommended
95
-
96
- 2. **No Concurrent Generation**
97
- - Never call `generate()` while `isProcessing === true`
98
- - Always disable generate button during processing
99
-
100
- 3. **No Hardcoded Credentials**
101
- - Never store API keys in component files
102
- - Use environment variables or secure storage
103
-
104
- 4. **No Unhandled Errors**
105
- - Never ignore error states
106
- - Always implement error boundaries
107
-
108
- 5. **No Memory Leaks**
109
- - Never forget cleanup on unmount
110
- - Always cancel pending requests
111
-
112
- 6. **No Excessive Re-renders**
113
- - Never pass new config objects on each render
114
- - Always memoize configuration objects
115
-
116
- 7. **No Blocked Main Thread**
117
- - Never perform heavy operations in render
118
- - Use web workers or background tasks for processing
119
-
120
- ---
121
-
122
- ## 🤖 AI Agent Directions
123
-
124
- ### For AI Code Generation Tools
125
-
126
- When using this feature with AI code generation tools, follow these guidelines:
127
-
128
- #### Prompt Template for AI Agents
129
-
130
- ```
131
- You are implementing a text-to-image generation feature using @umituz/react-native-ai-generation-content.
132
-
133
- REQUIREMENTS:
134
- 1. Import from: @umituz/react-native-ai-generation-content
135
- 2. Use the useTextToImageFeature hook
136
- 3. Implement all state handlers (loading, success, error)
137
- 4. Add debouncing for prompt input
138
- 5. Validate prompts before generation
139
- 6. Handle isReady and isProcessing states correctly
140
- 7. Implement proper error handling with user feedback
141
- 8. Add loading indicators during generation
142
- 9. Display results safely with null checks
143
- 10. Implement cleanup on unmount
144
-
145
- CRITICAL RULES:
146
- - NEVER call generate() when isProcessing is true
147
- - ALWAYS validate prompt before calling generate()
148
- - MUST handle error state with user-friendly message
149
- - MUST disable generate button during processing
150
- - MUST implement debouncing (500ms minimum)
151
-
152
- CONFIGURATION:
153
- - Provide valid userId (string)
154
- - Set model (default: 'imagen-3')
155
- - Configure callbacks: onProcessingStart, onProcessingComplete, onError
156
-
157
- GENERATION OPTIONS:
158
- - aspectRatio: '1:1' | '16:9' | '9:16' | '4:3' | '3:4'
159
- - numberOfImages: 1-4
160
- - style: 'realistic' | 'artistic' | 'anime' | '3d' | 'painting'
161
- - negativePrompt: string (optional)
162
-
163
- STRICTLY FORBIDDEN:
164
- - No empty prompts
165
- - No concurrent generation calls
166
- - No hardcoded API keys
167
- - No unhandled errors
168
- - No memory leaks
169
- ```
170
-
171
- #### AI Implementation Checklist
172
-
173
- Use this checklist when generating code:
174
-
175
- - [ ] Feature imported from correct path
176
- - [ ] Hook initialized with proper config
177
- - [ ] All state handlers implemented
178
- - [ ] Debouncing added to input
179
- - [ ] Validation before generate()
180
- - [ ] Loading indicator during processing
181
- - [ ] Error display with user-friendly message
182
- - [ ] Button disabled when processing
183
- - [ ] Cleanup on unmount
184
- - [ ] Null checks on result
185
- - [ ] Retry logic implemented
186
- - [ ] Image caching configured
187
-
188
- ---
189
-
190
- ## 🛠️ Configuration Strategy
191
-
192
- ### Essential Configuration
193
-
194
- ```typescript
195
- // Required fields
196
- {
197
- userId: string // User identifier for tracking
198
- }
199
-
200
- // Optional callbacks
201
- {
202
- onProcessingStart?: () => void
203
- onProcessingComplete?: (result) => void
204
- onError?: (error: string) => void
205
- }
206
- ```
207
-
208
- ### Recommended Settings
209
-
210
- 1. **Model Selection**
211
- - Default: `imagen-3`
212
- - Fastest: `imagen-2-fast`
213
- - Highest quality: `imagen-3`
214
-
215
- 2. **Generation Options**
216
- - Aspect Ratio: Match your UI layout
217
- - Number of Images: 1-2 for speed, 3-4 for variety
218
- - Style: Choose based on use case
219
-
220
- 3. **Performance Settings**
221
- - Enable image caching
222
- - Set reasonable timeouts (30s default)
223
- - Implement retry with backoff
224
-
225
- ---
226
-
227
- ## 📊 State Management
228
-
229
- ### Feature States
230
-
231
- **isReady**: boolean
232
- - Feature initialized and ready to use
233
- - Check before enabling generate button
234
-
235
- **isProcessing**: boolean
236
- - Generation in progress
237
- - Show loading indicator
238
- - Disable generate button
239
-
240
- **progress**: number (0-100)
241
- - Generation progress percentage
242
- - Update progress bar
243
-
244
- **error**: string | null
245
- - Error message if generation failed
246
- - Display to user with clear message
247
-
248
- **result**: {
249
- imageUrl: string
250
- imageUrls?: string[]
251
- metadata?: any
252
- }
253
-
254
- ---
255
-
256
- ## 🔐 Security Considerations
257
-
258
- ### Content Moderation
259
-
260
- - **MUST** implement prompt content filtering
261
- - **MUST** check for inappropriate content
262
- - **MUST** block harmful or illegal prompts
263
- - **MUST** log moderation actions
264
-
265
- ### API Security
266
-
267
- - **MUST** use environment variables for API keys
268
- - **MUST** implement rate limiting
269
- - **MUST** validate all user inputs
270
- - **MUST** use HTTPS for all API calls
271
-
272
- ### Data Privacy
273
-
274
- - **MUST** comply with data protection regulations
275
- - **MUST** obtain user consent for generation
276
- - **MUST** provide privacy policy
277
- - **MUST** allow data deletion requests
278
-
279
- ---
280
-
281
- ## 🎨 Best Practices
282
-
283
- ### Prompt Engineering
284
-
285
- 1. **Be Specific**
286
- - Good: "A majestic lion standing on a rock at sunset, detailed fur, dramatic lighting"
287
- - Bad: "A lion"
288
-
289
- 2. **Include Style**
290
- - Specify art style, mood, atmosphere
291
- - Example: "in the style of oil painting, romantic mood"
292
-
293
- 3. **Add Technical Details**
294
- - Lighting, camera angle, composition
295
- - Example: "golden hour lighting, wide angle shot"
296
-
297
- 4. **Use Negative Prompts**
298
- - Specify what to avoid
299
- - Example: "blurry, low quality, distorted"
300
-
301
- ### Performance Optimization
302
-
303
- 1. **Debounce Input**
304
- - Wait 500ms after user stops typing
305
- - Prevents unnecessary validations
306
-
307
- 2. **Lazy Loading**
308
- - Load images on demand
309
- - Use pagination for multiple results
310
-
311
- 3. **Cache Results**
312
- - Store generated images locally
313
- - Implement cache invalidation strategy
314
-
315
- 4. **Progressive Enhancement**
316
- - Show placeholder while loading
317
- - Display low-res first, then high-res
318
-
319
- ---
320
-
321
- ## 🐛 Common Pitfalls
322
-
323
- ### Memory Issues
324
-
325
- ❌ **Problem**: Storing all generated images in state
326
- ✅ **Solution**: Implement pagination or virtualized lists
327
-
328
- ### Performance Issues
329
-
330
- ❌ **Problem**: Re-generating on every prompt change
331
- ✅ **Solution**: Require explicit user action to generate
332
-
333
- ### UX Issues
334
-
335
- ❌ **Problem**: No feedback during generation
336
- ✅ **Solution**: Always show progress indicator
337
-
338
- ### Error Handling
339
-
340
- ❌ **Problem**: Generic error messages
341
- ✅ **Solution**: Provide specific, actionable error messages
342
-
343
- ---
344
-
345
- ## 📦 Related Components
346
-
347
- Use these components from the library:
348
-
349
- - **GenerationProgressModal**: Progress display
350
- - **StyleSelector**: Style selection UI
351
- - **AspectRatioSelector**: Aspect ratio picker
352
- - **ImageGallery**: Display multiple results
353
- - **PromptInput**: Enhanced text input
354
-
355
- Located at: `src/presentation/components/`
356
-
357
- ---
358
-
359
- ## 🔄 Migration Strategy
360
-
361
- If migrating from previous implementation:
362
-
363
- 1. **Update imports** to new path
364
- 2. **Replace old config** with new structure
365
- 3. **Update state handling** to match new interface
366
- 4. **Test all error cases**
367
- 5. **Update UI components** for new state structure
368
-
369
- ---
370
-
371
- ## 📚 Additional Resources
372
-
373
- - Main documentation: `/docs/`
374
- - API reference: `/docs/api/`
375
- - Examples: `/docs/examples/basic/text-to-image/`
376
- - Architecture: `/ARCHITECTURE.md`
377
-
378
- ---
379
-
380
- **Last Updated**: 2025-01-08
381
- **Version**: 2.0.0 (Strategy-based Documentation)
382
-
383
- ---
384
-
385
- ## 📝 Changelog
386
-
387
- ### v2.0.0 - 2025-01-08
388
- - **BREAKING**: Documentation format changed to strategy-based
389
- - Removed extensive code examples
390
- - Added rules, prohibitions, and AI agent directions
391
- - Focus on best practices and implementation guidance
392
-
393
- ### v1.0.0 - Initial Release
394
- - Initial feature documentation