@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,162 +0,0 @@
1
- /**
2
- * Love Message Configuration
3
- */
4
-
5
- import { MessageType, MessageTone, LoveLanguage } from "./types";
6
-
7
- export interface MessageTypeConfig {
8
- type: MessageType;
9
- labelKey: string;
10
- icon: string;
11
- }
12
-
13
- export interface MessageToneConfig {
14
- tone: MessageTone;
15
- labelKey: string;
16
- icon: string;
17
- }
18
-
19
- export const MESSAGE_TYPES: MessageTypeConfig[] = [
20
- {
21
- type: MessageType.ROMANTIC,
22
- labelKey: "loveMessage.types.romantic",
23
- icon: "heart-outline",
24
- },
25
- {
26
- type: MessageType.APOLOGY,
27
- labelKey: "loveMessage.types.apology",
28
- icon: "hand-left-outline",
29
- },
30
- {
31
- type: MessageType.LOVE_LETTER,
32
- labelKey: "loveMessage.types.loveLetter",
33
- icon: "mail-outline",
34
- },
35
- {
36
- type: MessageType.GOOD_MORNING,
37
- labelKey: "loveMessage.types.goodMorning",
38
- icon: "sunny-outline",
39
- },
40
- {
41
- type: MessageType.GOOD_NIGHT,
42
- labelKey: "loveMessage.types.goodNight",
43
- icon: "moon-outline",
44
- },
45
- {
46
- type: MessageType.ANNIVERSARY,
47
- labelKey: "loveMessage.types.anniversary",
48
- icon: "gift-outline",
49
- },
50
- ];
51
-
52
- export const MESSAGE_TONES: MessageToneConfig[] = [
53
- {
54
- tone: MessageTone.ROMANTIC,
55
- labelKey: "loveMessage.tones.romantic",
56
- icon: "rose-outline",
57
- },
58
- {
59
- tone: MessageTone.POETIC,
60
- labelKey: "loveMessage.tones.poetic",
61
- icon: "feather-outline",
62
- },
63
- {
64
- tone: MessageTone.WITTY,
65
- labelKey: "loveMessage.tones.witty",
66
- icon: "happy-outline",
67
- },
68
- {
69
- tone: MessageTone.SINCERE,
70
- labelKey: "loveMessage.tones.sincere",
71
- icon: "shield-checkmark-outline",
72
- },
73
- {
74
- tone: MessageTone.CASUAL,
75
- labelKey: "loveMessage.tones.casual",
76
- icon: "cafe-outline",
77
- },
78
- {
79
- tone: MessageTone.PASSIONATE,
80
- labelKey: "loveMessage.tones.passionate",
81
- icon: "flame-outline",
82
- },
83
- ];
84
-
85
- export interface LoveLanguageConfig {
86
- language: LoveLanguage;
87
- labelKey: string;
88
- }
89
-
90
- export const LOVE_LANGUAGES: LoveLanguageConfig[] = [
91
- {
92
- language: LoveLanguage.WORDS_OF_AFFIRMATION,
93
- labelKey: "loveMessage.loveLanguages.wordsOfAffirmation",
94
- },
95
- {
96
- language: LoveLanguage.ACTS_OF_SERVICE,
97
- labelKey: "loveMessage.loveLanguages.actsOfService",
98
- },
99
- {
100
- language: LoveLanguage.RECEIVING_GIFTS,
101
- labelKey: "loveMessage.loveLanguages.receivingGifts",
102
- },
103
- {
104
- language: LoveLanguage.QUALITY_TIME,
105
- labelKey: "loveMessage.loveLanguages.qualityTime",
106
- },
107
- {
108
- language: LoveLanguage.PHYSICAL_TOUCH,
109
- labelKey: "loveMessage.loveLanguages.physicalTouch",
110
- },
111
- ];
112
-
113
- export interface TemplateMessage {
114
- id: string;
115
- text: string;
116
- type: MessageType;
117
- imageUrl?: string;
118
- }
119
-
120
- export const CATEGORY_TEMPLATES: Record<string, TemplateMessage[]> = {
121
- [MessageType.ROMANTIC]: [
122
- {
123
- id: "r1",
124
- type: MessageType.ROMANTIC,
125
- text: "Every moment with you is like a beautiful dream come true. I love you more than words can say.",
126
- imageUrl:
127
- "https://images.unsplash.com/photo-1516589174184-c68526614488?q=80&w=400",
128
- },
129
- {
130
- id: "r2",
131
- type: MessageType.ROMANTIC,
132
- text: "You are my heart's home, the peace in my soul, and the love of my life.",
133
- imageUrl:
134
- "https://images.unsplash.com/photo-1518621736915-f3b1c41bfd00?q=80&w=400",
135
- },
136
- ],
137
- [MessageType.GOOD_MORNING]: [
138
- {
139
- id: "gm1",
140
- type: MessageType.GOOD_MORNING,
141
- text: "Waking up and knowing you're mine is the only motivation I need. Have a beautiful day, my love.",
142
- imageUrl:
143
- "https://images.unsplash.com/photo-1504194081531-90af4970460c?q=80&w=400",
144
- },
145
- ],
146
- trending: [
147
- {
148
- id: "t1",
149
- type: MessageType.ROMANTIC,
150
- text: "In the quiet of this romantic night, my heart beats only for you. You are the stars in my sky and the peace in my soul.",
151
- imageUrl:
152
- "https://images.unsplash.com/photo-1529333166437-7750a6dd5a70?q=80&w=400",
153
- },
154
- {
155
- id: "t2",
156
- type: MessageType.ROMANTIC,
157
- text: "Every night with you feels like a dream I never want to wake up from. Here's to us and the magic we share.",
158
- imageUrl:
159
- "https://images.unsplash.com/photo-1516589174184-c68526614488?q=80&w=400",
160
- },
161
- ],
162
- };
@@ -1,58 +0,0 @@
1
- /**
2
- * Love Message Types
3
- */
4
-
5
- export enum MessageType {
6
- ROMANTIC = "ROMANTIC",
7
- APOLOGY = "APOLOGY",
8
- LOVE_LETTER = "LOVE_LETTER",
9
- GOOD_MORNING = "GOOD_MORNING",
10
- GOOD_NIGHT = "GOOD_NIGHT",
11
- ANNIVERSARY = "ANNIVERSARY",
12
- }
13
-
14
- export enum MessageTone {
15
- ROMANTIC = "ROMANTIC",
16
- POETIC = "POETIC",
17
- WITTY = "WITTY",
18
- SINCERE = "SINCERE",
19
- CASUAL = "CASUAL",
20
- PASSIONATE = "PASSIONATE",
21
- }
22
-
23
- export enum LoveLanguage {
24
- WORDS_OF_AFFIRMATION = "WORDS_OF_AFFIRMATION",
25
- ACTS_OF_SERVICE = "ACTS_OF_SERVICE",
26
- RECEIVING_GIFTS = "RECEIVING_GIFTS",
27
- QUALITY_TIME = "QUALITY_TIME",
28
- PHYSICAL_TOUCH = "PHYSICAL_TOUCH",
29
- }
30
-
31
- export interface PartnerProfile {
32
- name: string;
33
- nickname?: string;
34
- gender?: string;
35
- birthday?: string;
36
- anniversary?: string;
37
- loveLanguage?: LoveLanguage;
38
- hobbies?: string;
39
- traits?: string;
40
- quirks?: string;
41
- }
42
-
43
- export interface MessageGenerationParams {
44
- partnerName: string;
45
- type: MessageType;
46
- tone: MessageTone;
47
- details?: string;
48
- usePartnerProfile?: boolean;
49
- }
50
-
51
- export interface GeneratedMessage {
52
- id: string;
53
- text: string;
54
- type: MessageType;
55
- tone: MessageTone;
56
- partnerName: string;
57
- createdAt: number;
58
- }
@@ -1,37 +0,0 @@
1
- /**
2
- * Love Message Feature
3
- */
4
-
5
- export { generateLoveMessage } from "./infrastructure/services/LoveMessageService";
6
- export { buildLoveMessagePrompt } from "./infrastructure/prompts/messagePromptBuilder";
7
- export { PartnerProfileRepository } from "./infrastructure/persistence/PartnerProfileRepository";
8
-
9
- export * from "./domain/types";
10
- export * from "./domain/constants";
11
-
12
- export { useLoveMessageGenerator, GeneratorStep } from "./presentation/hooks/useLoveMessageGenerator";
13
- export { usePartnerProfile } from "./presentation/hooks/usePartnerProfile";
14
-
15
- export { LoveMessageExploreScreen } from "./presentation/screens/LoveMessageExploreScreen";
16
- export { LoveMessageGeneratorScreen } from "./presentation/screens/LoveMessageGeneratorScreen";
17
- export { MessageListScreen } from "./presentation/screens/MessageListScreen";
18
- export { PartnerProfileScreen } from "./presentation/screens/PartnerProfileScreen";
19
-
20
- export { LoveMessageStack, type LoveMessageStackParamList } from "./presentation/navigation/LoveMessageStack";
21
-
22
- export { ExploreHeader } from "./presentation/components/ExploreHeader";
23
- export { LoveMessageHeroSection } from "./presentation/components/LoveMessageHeroSection";
24
- export { CategoryGrid } from "./presentation/components/CategoryGrid";
25
- export { TrendingSection } from "./presentation/components/TrendingSection";
26
- export { GeneratorHeader } from "./presentation/components/GeneratorHeader";
27
- export { StepPartner } from "./presentation/components/StepPartner";
28
- export { StepVibe } from "./presentation/components/StepVibe";
29
- export { StepDetails } from "./presentation/components/StepDetails";
30
- export { MessageResult } from "./presentation/components/MessageResult";
31
- export { MessageListItem } from "./presentation/components/MessageListItem";
32
- export { ProgressDots } from "./presentation/components/ProgressDots";
33
- export { PartnerInput } from "./presentation/components/PartnerInput";
34
- export { DetailsInput } from "./presentation/components/DetailsInput";
35
- export { ToneSelector } from "./presentation/components/ToneSelector";
36
- export { TypeSelector } from "./presentation/components/TypeSelector";
37
- export { FieldInput } from "./presentation/components/FieldInput";
@@ -1,52 +0,0 @@
1
- /**
2
- * Partner Profile Repository
3
- * Handles persistence of partner profile data
4
- */
5
-
6
- import { storageRepository, unwrap } from "@umituz/react-native-design-system";
7
- import type { PartnerProfile } from "../../domain/types";
8
-
9
- const PARTNER_PROFILE_STORAGE_KEY = "love_message_partner_profile";
10
-
11
- export const PartnerProfileRepository = {
12
- /**
13
- * Get partner profile from storage
14
- */
15
- getProfile: async (): Promise<PartnerProfile | null> => {
16
- try {
17
- const result = await storageRepository.getString(PARTNER_PROFILE_STORAGE_KEY, "");
18
- const data = unwrap(result, null);
19
-
20
- if (data) {
21
- return JSON.parse(data) as PartnerProfile;
22
- }
23
- return null;
24
- } catch {
25
- return null;
26
- }
27
- },
28
-
29
- /**
30
- * Save partner profile to storage
31
- */
32
- saveProfile: async (profile: PartnerProfile): Promise<boolean> => {
33
- try {
34
- await storageRepository.setItem(PARTNER_PROFILE_STORAGE_KEY, JSON.stringify(profile));
35
- return true;
36
- } catch {
37
- return false;
38
- }
39
- },
40
-
41
- /**
42
- * Clear partner profile from storage
43
- */
44
- clearProfile: async (): Promise<boolean> => {
45
- try {
46
- await storageRepository.removeItem(PARTNER_PROFILE_STORAGE_KEY);
47
- return true;
48
- } catch {
49
- return false;
50
- }
51
- },
52
- };
@@ -1,109 +0,0 @@
1
- /**
2
- * Love Message Prompt Builder
3
- */
4
-
5
- import {
6
- MessageType,
7
- MessageTone,
8
- MessageGenerationParams,
9
- PartnerProfile,
10
- LoveLanguage,
11
- } from "../../domain/types";
12
-
13
- const getToneGuidance = (tone: MessageTone): string => {
14
- const guidance: Record<MessageTone, string> = {
15
- [MessageTone.ROMANTIC]:
16
- "Use romantic and emotional language that expresses deep feelings.",
17
- [MessageTone.POETIC]:
18
- "Use poetic and lyrical language with metaphors and imagery.",
19
- [MessageTone.WITTY]: "Be playful and witty with clever wordplay and humor.",
20
- [MessageTone.SINCERE]:
21
- "Be sincere and genuine with deep, heartfelt emotions.",
22
- [MessageTone.CASUAL]:
23
- "Keep it casual and sweet, like talking to a close friend.",
24
- [MessageTone.PASSIONATE]:
25
- "Use passionate and intense language that shows strong emotions.",
26
- };
27
- return guidance[tone];
28
- };
29
-
30
- const getMessageTypePrompt = (type: MessageType): string => {
31
- const types: Record<MessageType, string> = {
32
- [MessageType.ROMANTIC]: "a romantic message",
33
- [MessageType.APOLOGY]: "a sincere apology message",
34
- [MessageType.LOVE_LETTER]: "a beautiful love letter",
35
- [MessageType.GOOD_MORNING]: "a sweet good morning message",
36
- [MessageType.GOOD_NIGHT]: "a cozy good night message",
37
- [MessageType.ANNIVERSARY]: "a special anniversary message",
38
- };
39
- return types[type];
40
- };
41
-
42
- const getLoveLanguageDescription = (language: LoveLanguage): string => {
43
- const descriptions: Record<LoveLanguage, string> = {
44
- [LoveLanguage.WORDS_OF_AFFIRMATION]:
45
- "Values verbal expressions of love, compliments, and words of appreciation.",
46
- [LoveLanguage.ACTS_OF_SERVICE]:
47
- "Values helpful actions, doing things they would like you to do.",
48
- [LoveLanguage.RECEIVING_GIFTS]:
49
- "Values thoughtful presents and visual symbols of love.",
50
- [LoveLanguage.QUALITY_TIME]:
51
- "Values undivided attention and spending meaningful time together.",
52
- [LoveLanguage.PHYSICAL_TOUCH]: "Values physical affection and closeness.",
53
- };
54
- return descriptions[language];
55
- };
56
-
57
- const buildPartnerContext = (profile: PartnerProfile): string => {
58
- const parts: string[] = [];
59
-
60
- if (profile.nickname) {
61
- parts.push(`Nickname: ${profile.nickname}`);
62
- }
63
-
64
- if (profile.loveLanguage) {
65
- parts.push(
66
- `Primary Love Language: ${getLoveLanguageDescription(profile.loveLanguage)}`,
67
- );
68
- }
69
-
70
- if (profile.hobbies) {
71
- parts.push(`Hobbies and interests: ${profile.hobbies}`);
72
- }
73
-
74
- if (profile.traits) {
75
- parts.push(`Personality traits: ${profile.traits}`);
76
- }
77
-
78
- if (profile.quirks) {
79
- parts.push(`Special quirks or inside jokes: ${profile.quirks}`);
80
- }
81
-
82
- return parts.length > 0 ? `\nPartner Context:\n${parts.join("\n")}\n` : "";
83
- };
84
-
85
- export const buildLoveMessagePrompt = (
86
- params: MessageGenerationParams,
87
- profile?: PartnerProfile | null,
88
- ): string => {
89
- const typeText = getMessageTypePrompt(params.type);
90
- const toneGuidance = getToneGuidance(params.tone);
91
-
92
- let prompt = `Write ${typeText} for ${params.partnerName}.\n\n`;
93
- prompt += `Tone: ${toneGuidance}\n\n`;
94
-
95
- if (params.usePartnerProfile && profile) {
96
- prompt += buildPartnerContext(profile);
97
- prompt +=
98
- "\nMake sure the message resonates with their love language and personality.\n\n";
99
- }
100
-
101
- if (params.details) {
102
- prompt += `Context and Details: ${params.details}\n\n`;
103
- }
104
-
105
- prompt +=
106
- "Important: Write only the message itself, without any introduction, explanation, or meta-commentary. The message should be ready to send directly.";
107
-
108
- return prompt;
109
- };
@@ -1,35 +0,0 @@
1
- /**
2
- * Generate Love Message Use Case
3
- */
4
-
5
- import { buildLoveMessagePrompt } from "../prompts/messagePromptBuilder";
6
- import { MessageGenerationParams } from "../../domain/types";
7
- import { providerRegistry } from "../../../../infrastructure/services";
8
- import { PartnerProfileRepository } from "../persistence/PartnerProfileRepository";
9
-
10
- export const generateLoveMessage = async (
11
- params: MessageGenerationParams,
12
- ): Promise<string> => {
13
- try {
14
- const profile = params.usePartnerProfile
15
- ? await PartnerProfileRepository.getProfile()
16
- : null;
17
-
18
- const prompt = buildLoveMessagePrompt(params, profile);
19
- const provider = providerRegistry.getActiveProvider();
20
-
21
- if (!provider) {
22
- throw new Error("No active AI provider found");
23
- }
24
-
25
- // Use run for text generation
26
- const result = await provider.run<string>("gemini-1.5-flash", { prompt });
27
-
28
- return result || "";
29
- } catch (error) {
30
- if (__DEV__) {
31
- console.error("[LoveMessage] Generation failed:", error);
32
- }
33
- throw error;
34
- }
35
- };
@@ -1,88 +0,0 @@
1
- /**
2
- * Category Grid Component
3
- */
4
-
5
- import React from "react";
6
- import { View, Pressable, StyleSheet, Dimensions } from "react-native";
7
- import {
8
- AtomicText,
9
- AtomicIcon,
10
- useAppDesignTokens,
11
- type IconName,
12
- } from "@umituz/react-native-design-system";
13
- import { useLocalization } from "@umituz/react-native-localization";
14
- import { MESSAGE_TYPES } from "../../domain/constants";
15
-
16
- const { width } = Dimensions.get("window");
17
-
18
- interface CategoryGridProps {
19
- onCategoryPress: (type: string) => void;
20
- }
21
-
22
- export const CategoryGrid: React.FC<CategoryGridProps> = ({ onCategoryPress }) => {
23
- const tokens = useAppDesignTokens();
24
- const { t } = useLocalization();
25
-
26
- return (
27
- <View>
28
- <View style={styles.sectionHeader}>
29
- <AtomicText type="headlineSmall" color="textPrimary" style={styles.sectionTitle}>
30
- {t("loveMessage.explore.categories")}
31
- </AtomicText>
32
- </View>
33
-
34
- <View style={styles.categoriesGrid}>
35
- {MESSAGE_TYPES.map((cat) => (
36
- <Pressable
37
- key={cat.type}
38
- onPress={() => onCategoryPress(cat.type)}
39
- style={[styles.categoryCard, {
40
- backgroundColor: tokens.colors.surface,
41
- borderColor: tokens.colors.borderLight
42
- }]}
43
- >
44
- <View style={[styles.categoryIconContainer, { backgroundColor: `${tokens.colors.primary}15` }]}>
45
- <AtomicIcon name={cat.icon as IconName} color="primary" size="md" />
46
- </View>
47
- <AtomicText type="labelLarge" color="textPrimary">
48
- {t(cat.labelKey)}
49
- </AtomicText>
50
- </Pressable>
51
- ))}
52
- </View>
53
- </View>
54
- );
55
- };
56
-
57
- const styles = StyleSheet.create({
58
- sectionHeader: {
59
- paddingHorizontal: 20,
60
- marginBottom: 16,
61
- },
62
- sectionTitle: {
63
- fontWeight: 'bold',
64
- },
65
- categoriesGrid: {
66
- flexDirection: 'row',
67
- flexWrap: 'wrap',
68
- paddingHorizontal: 16,
69
- gap: 12,
70
- marginBottom: 32,
71
- },
72
- categoryCard: {
73
- width: (width - 32 - 12) / 2,
74
- padding: 20,
75
- borderRadius: 20,
76
- borderWidth: 1,
77
- alignItems: 'center',
78
- justifyContent: 'center',
79
- gap: 12,
80
- },
81
- categoryIconContainer: {
82
- width: 56,
83
- height: 56,
84
- borderRadius: 28,
85
- alignItems: 'center',
86
- justifyContent: 'center',
87
- },
88
- });
@@ -1,74 +0,0 @@
1
- /**
2
- * Message Details Input Component
3
- */
4
-
5
- import type { FC } from "react";
6
- import { View, TextInput, StyleSheet } from "react-native";
7
- import {
8
- AtomicText,
9
- useAppDesignTokens,
10
- } from "@umituz/react-native-design-system";
11
- import { useLocalization } from "@umituz/react-native-localization";
12
-
13
- interface DetailsInputProps {
14
- value: string;
15
- onChangeText: (text: string) => void;
16
- }
17
-
18
- export const DetailsInput: FC<DetailsInputProps> = ({
19
- value,
20
- onChangeText,
21
- }) => {
22
- const tokens = useAppDesignTokens();
23
- const { t } = useLocalization();
24
-
25
- return (
26
- <View style={styles.container}>
27
- <AtomicText type="labelLarge" color="textPrimary" style={styles.label}>
28
- {t("loveMessage.details")}
29
- </AtomicText>
30
- <View
31
- style={[
32
- styles.inputContainer,
33
- {
34
- backgroundColor: tokens.colors.surface,
35
- borderColor: tokens.colors.borderLight,
36
- },
37
- ]}
38
- >
39
- <TextInput
40
- value={value}
41
- onChangeText={onChangeText}
42
- placeholder={t("loveMessage.detailsPlaceholder")}
43
- placeholderTextColor={tokens.colors.textTertiary}
44
- multiline
45
- numberOfLines={4}
46
- style={[styles.input, { color: tokens.colors.textPrimary }]}
47
- selectionColor={tokens.colors.primary}
48
- textAlignVertical="top"
49
- />
50
- </View>
51
- </View>
52
- );
53
- };
54
-
55
- const styles = StyleSheet.create({
56
- container: {
57
- marginBottom: 32,
58
- },
59
- label: {
60
- marginBottom: 8,
61
- marginLeft: 4,
62
- },
63
- inputContainer: {
64
- borderRadius: 16,
65
- borderWidth: 1.5,
66
- padding: 16,
67
- minHeight: 120,
68
- },
69
- input: {
70
- fontSize: 16,
71
- padding: 0,
72
- flex: 1,
73
- },
74
- });
@@ -1,67 +0,0 @@
1
- /**
2
- * Explore Header Component
3
- */
4
-
5
- import React from "react";
6
- import { View, Pressable, StyleSheet } from "react-native";
7
- import {
8
- AtomicText,
9
- AtomicIcon,
10
- useAppDesignTokens,
11
- useSafeAreaInsets,
12
- } from "@umituz/react-native-design-system";
13
- import { useLocalization } from "@umituz/react-native-localization";
14
-
15
- interface ExploreHeaderProps {
16
- onMagicPress: () => void;
17
- }
18
-
19
- export const ExploreHeader: React.FC<ExploreHeaderProps> = ({ onMagicPress }) => {
20
- const tokens = useAppDesignTokens();
21
- const { top } = useSafeAreaInsets();
22
- const { t } = useLocalization();
23
-
24
- return (
25
- <View style={[styles.header, { paddingTop: top + tokens.spacing.md }]}>
26
- <View>
27
- <AtomicText type="labelSmall" color="textTertiary" style={styles.welcomeText}>
28
- {t("loveMessage.explore.welcomeBack")}
29
- </AtomicText>
30
- <AtomicText type="headlineSmall" color="textPrimary" style={styles.brandTitle}>
31
- {t("loveMessage.explore.title")}
32
- </AtomicText>
33
- </View>
34
- <Pressable
35
- onPress={onMagicPress}
36
- style={[styles.magicBtn, { backgroundColor: `${tokens.colors.primary}20` }]}
37
- >
38
- <AtomicIcon name="sparkles" color="primary" size="sm" />
39
- </Pressable>
40
- </View>
41
- );
42
- };
43
-
44
- const styles = StyleSheet.create({
45
- header: {
46
- flexDirection: 'row',
47
- justifyContent: 'space-between',
48
- alignItems: 'center',
49
- paddingHorizontal: 20,
50
- paddingBottom: 20,
51
- },
52
- welcomeText: {
53
- letterSpacing: 1,
54
- fontWeight: 'bold',
55
- marginBottom: 2,
56
- },
57
- brandTitle: {
58
- fontWeight: '900',
59
- },
60
- magicBtn: {
61
- width: 44,
62
- height: 44,
63
- borderRadius: 22,
64
- alignItems: 'center',
65
- justifyContent: 'center',
66
- },
67
- });