@umituz/react-native-ai-generation-content 1.26.1 → 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 (328) 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/infrastructure/providers/generation-config.provider.tsx +20 -9
  14. package/src/features/ai-hug/README.md +0 -438
  15. package/src/features/ai-hug/domain/index.ts +0 -5
  16. package/src/features/ai-hug/domain/types/ai-hug.types.ts +0 -25
  17. package/src/features/ai-hug/domain/types/index.ts +0 -7
  18. package/src/features/ai-hug/index.ts +0 -19
  19. package/src/features/ai-hug/presentation/components/AIHugFeature.tsx +0 -77
  20. package/src/features/ai-hug/presentation/components/index.ts +0 -2
  21. package/src/features/ai-hug/presentation/hooks/index.ts +0 -9
  22. package/src/features/ai-hug/presentation/hooks/useAIHugFeature.ts +0 -34
  23. package/src/features/ai-hug/presentation/index.ts +0 -6
  24. package/src/features/ai-kiss/README.md +0 -445
  25. package/src/features/ai-kiss/domain/index.ts +0 -5
  26. package/src/features/ai-kiss/domain/types/ai-kiss.types.ts +0 -25
  27. package/src/features/ai-kiss/domain/types/index.ts +0 -7
  28. package/src/features/ai-kiss/index.ts +0 -19
  29. package/src/features/ai-kiss/presentation/components/AIKissFeature.tsx +0 -77
  30. package/src/features/ai-kiss/presentation/components/index.ts +0 -2
  31. package/src/features/ai-kiss/presentation/hooks/index.ts +0 -9
  32. package/src/features/ai-kiss/presentation/hooks/useAIKissFeature.ts +0 -34
  33. package/src/features/ai-kiss/presentation/index.ts +0 -6
  34. package/src/features/anime-selfie/README.md +0 -396
  35. package/src/features/anime-selfie/domain/index.ts +0 -5
  36. package/src/features/anime-selfie/domain/types/anime-selfie.types.ts +0 -52
  37. package/src/features/anime-selfie/domain/types/index.ts +0 -8
  38. package/src/features/anime-selfie/index.ts +0 -20
  39. package/src/features/anime-selfie/presentation/components/AnimeSelfieFeature.tsx +0 -86
  40. package/src/features/anime-selfie/presentation/components/index.ts +0 -2
  41. package/src/features/anime-selfie/presentation/hooks/index.ts +0 -9
  42. package/src/features/anime-selfie/presentation/hooks/useAnimeSelfieFeature.ts +0 -59
  43. package/src/features/anime-selfie/presentation/index.ts +0 -6
  44. package/src/features/couple-future/README.md +0 -445
  45. package/src/features/couple-future/domain/types.ts +0 -63
  46. package/src/features/couple-future/domain/wizard-config.adapter.ts +0 -76
  47. package/src/features/couple-future/domain/wizard.types.ts +0 -121
  48. package/src/features/couple-future/index.ts +0 -83
  49. package/src/features/couple-future/infrastructure/coupleFeatureRegistry.ts +0 -76
  50. package/src/features/couple-future/infrastructure/couplePromptEnhancer.ts +0 -100
  51. package/src/features/couple-future/infrastructure/executor.ts +0 -188
  52. package/src/features/couple-future/infrastructure/generationUtils.ts +0 -228
  53. package/src/features/couple-future/presentation/components/ArtStyleSelector.tsx +0 -146
  54. package/src/features/couple-future/presentation/components/ArtistStyleSelector.tsx +0 -122
  55. package/src/features/couple-future/presentation/components/CoupleFutureWizard.tsx +0 -239
  56. package/src/features/couple-future/presentation/components/GeneratingStepContent.tsx +0 -86
  57. package/src/features/couple-future/presentation/components/RomanticMoodSelector.tsx +0 -147
  58. package/src/features/couple-future/presentation/components/WardrobeSelector.tsx +0 -141
  59. package/src/features/couple-future/presentation/components/index.ts +0 -12
  60. package/src/features/couple-future/presentation/hooks/useCoupleFutureFlow.ts +0 -166
  61. package/src/features/couple-future/presentation/hooks/useCoupleFutureFlow.types.ts +0 -69
  62. package/src/features/couple-future/presentation/hooks/useCoupleFutureHandlers.ts +0 -117
  63. package/src/features/couple-future/presentation/screens/CoupleFeatureScreen.tsx +0 -113
  64. package/src/features/face-swap/README.md +0 -431
  65. package/src/features/face-swap/domain/index.ts +0 -5
  66. package/src/features/face-swap/domain/types/face-swap.types.ts +0 -26
  67. package/src/features/face-swap/domain/types/index.ts +0 -7
  68. package/src/features/face-swap/index.ts +0 -19
  69. package/src/features/face-swap/presentation/components/FaceSwapFeature.tsx +0 -87
  70. package/src/features/face-swap/presentation/components/index.ts +0 -2
  71. package/src/features/face-swap/presentation/hooks/index.ts +0 -6
  72. package/src/features/face-swap/presentation/hooks/useFaceSwapFeature.ts +0 -35
  73. package/src/features/face-swap/presentation/index.ts +0 -6
  74. package/src/features/hd-touch-up/README.md +0 -396
  75. package/src/features/hd-touch-up/domain/index.ts +0 -1
  76. package/src/features/hd-touch-up/domain/types/hd-touch-up.types.ts +0 -62
  77. package/src/features/hd-touch-up/domain/types/index.ts +0 -9
  78. package/src/features/hd-touch-up/index.ts +0 -21
  79. package/src/features/hd-touch-up/presentation/components/HDTouchUpFeature.tsx +0 -86
  80. package/src/features/hd-touch-up/presentation/components/index.ts +0 -2
  81. package/src/features/hd-touch-up/presentation/hooks/index.ts +0 -1
  82. package/src/features/hd-touch-up/presentation/hooks/useHDTouchUpFeature.ts +0 -23
  83. package/src/features/hd-touch-up/presentation/index.ts +0 -2
  84. package/src/features/image-to-image/README.md +0 -459
  85. package/src/features/image-to-image/domain/index.ts +0 -1
  86. package/src/features/image-to-image/domain/types/base.types.ts +0 -48
  87. package/src/features/image-to-image/domain/types/index.ts +0 -1
  88. package/src/features/image-to-image/domain/types/partials/config.types.ts +0 -37
  89. package/src/features/image-to-image/domain/types/partials/hook.types.ts +0 -53
  90. package/src/features/image-to-image/domain/types/partials/metadata.types.ts +0 -32
  91. package/src/features/image-to-image/domain/types/partials/result.types.ts +0 -44
  92. package/src/features/image-to-image/domain/types/partials/state.types.ts +0 -34
  93. package/src/features/image-to-image/domain/types/partials/translation.types.ts +0 -57
  94. package/src/features/image-to-image/index.ts +0 -2
  95. package/src/features/image-to-image/presentation/hooks/index.ts +0 -3
  96. package/src/features/image-to-image/presentation/hooks/useDualImageFeature.ts +0 -204
  97. package/src/features/image-to-image/presentation/hooks/useImageWithPromptFeature.ts +0 -223
  98. package/src/features/image-to-image/presentation/hooks/useSingleImageFeature.ts +0 -166
  99. package/src/features/image-to-image/presentation/index.ts +0 -1
  100. package/src/features/image-to-video/README.md +0 -414
  101. package/src/features/image-to-video/domain/constants/animation.constants.ts +0 -47
  102. package/src/features/image-to-video/domain/constants/duration.constants.ts +0 -13
  103. package/src/features/image-to-video/domain/constants/form.constants.ts +0 -22
  104. package/src/features/image-to-video/domain/constants/index.ts +0 -23
  105. package/src/features/image-to-video/domain/constants/music.constants.ts +0 -53
  106. package/src/features/image-to-video/domain/index.ts +0 -5
  107. package/src/features/image-to-video/domain/types/animation.types.ts +0 -20
  108. package/src/features/image-to-video/domain/types/config.types.ts +0 -56
  109. package/src/features/image-to-video/domain/types/duration.types.ts +0 -11
  110. package/src/features/image-to-video/domain/types/form.types.ts +0 -35
  111. package/src/features/image-to-video/domain/types/image-to-video.types.ts +0 -122
  112. package/src/features/image-to-video/domain/types/index.ts +0 -39
  113. package/src/features/image-to-video/domain/types/music.types.ts +0 -21
  114. package/src/features/image-to-video/index.ts +0 -116
  115. package/src/features/image-to-video/infrastructure/index.ts +0 -1
  116. package/src/features/image-to-video/infrastructure/services/image-to-video-executor.ts +0 -154
  117. package/src/features/image-to-video/infrastructure/services/index.ts +0 -5
  118. package/src/features/image-to-video/presentation/components/AddMoreCard.tsx +0 -52
  119. package/src/features/image-to-video/presentation/components/AnimationStyleSelector.tsx +0 -135
  120. package/src/features/image-to-video/presentation/components/DurationSelector.tsx +0 -110
  121. package/src/features/image-to-video/presentation/components/EmptyGridState.tsx +0 -69
  122. package/src/features/image-to-video/presentation/components/GridImageItem.tsx +0 -64
  123. package/src/features/image-to-video/presentation/components/ImageSelectionGrid.styles.ts +0 -84
  124. package/src/features/image-to-video/presentation/components/ImageSelectionGrid.tsx +0 -77
  125. package/src/features/image-to-video/presentation/components/ImageSelectionGrid.types.ts +0 -18
  126. package/src/features/image-to-video/presentation/components/MusicMoodSelector.tsx +0 -181
  127. package/src/features/image-to-video/presentation/components/index.ts +0 -30
  128. package/src/features/image-to-video/presentation/hooks/index.ts +0 -27
  129. package/src/features/image-to-video/presentation/hooks/useFormState.ts +0 -116
  130. package/src/features/image-to-video/presentation/hooks/useGeneration.ts +0 -85
  131. package/src/features/image-to-video/presentation/hooks/useGenerationExecution.ts +0 -143
  132. package/src/features/image-to-video/presentation/hooks/useImageToVideoFeature.ts +0 -107
  133. package/src/features/image-to-video/presentation/hooks/useImageToVideoForm.ts +0 -119
  134. package/src/features/image-to-video/presentation/hooks/useImageToVideoValidation.ts +0 -46
  135. package/src/features/image-to-video/presentation/index.ts +0 -5
  136. package/src/features/love-message/domain/constants.ts +0 -162
  137. package/src/features/love-message/domain/types.ts +0 -58
  138. package/src/features/love-message/index.ts +0 -37
  139. package/src/features/love-message/infrastructure/persistence/PartnerProfileRepository.ts +0 -52
  140. package/src/features/love-message/infrastructure/prompts/messagePromptBuilder.ts +0 -109
  141. package/src/features/love-message/infrastructure/services/LoveMessageService.ts +0 -35
  142. package/src/features/love-message/presentation/components/CategoryGrid.tsx +0 -88
  143. package/src/features/love-message/presentation/components/DetailsInput.tsx +0 -74
  144. package/src/features/love-message/presentation/components/ExploreHeader.tsx +0 -67
  145. package/src/features/love-message/presentation/components/FieldInput.tsx +0 -83
  146. package/src/features/love-message/presentation/components/GeneratorHeader.tsx +0 -88
  147. package/src/features/love-message/presentation/components/LoveMessageHeroSection.tsx +0 -114
  148. package/src/features/love-message/presentation/components/MessageListItem.tsx +0 -77
  149. package/src/features/love-message/presentation/components/MessageResult.tsx +0 -105
  150. package/src/features/love-message/presentation/components/PartnerInput.tsx +0 -78
  151. package/src/features/love-message/presentation/components/ProgressDots.tsx +0 -48
  152. package/src/features/love-message/presentation/components/StepDetails.tsx +0 -23
  153. package/src/features/love-message/presentation/components/StepPartner.tsx +0 -116
  154. package/src/features/love-message/presentation/components/StepVibe.tsx +0 -30
  155. package/src/features/love-message/presentation/components/ToneSelector.tsx +0 -100
  156. package/src/features/love-message/presentation/components/TrendingSection.tsx +0 -130
  157. package/src/features/love-message/presentation/components/TypeSelector.tsx +0 -99
  158. package/src/features/love-message/presentation/hooks/useLoveMessageGenerator.ts +0 -114
  159. package/src/features/love-message/presentation/hooks/usePartnerProfile.ts +0 -43
  160. package/src/features/love-message/presentation/navigation/LoveMessageStack.tsx +0 -39
  161. package/src/features/love-message/presentation/screens/LoveMessageExploreScreen.tsx +0 -53
  162. package/src/features/love-message/presentation/screens/LoveMessageGeneratorScreen.tsx +0 -169
  163. package/src/features/love-message/presentation/screens/MessageListScreen.tsx +0 -127
  164. package/src/features/love-message/presentation/screens/PartnerProfileScreen.tsx +0 -119
  165. package/src/features/meme-generator/README.md +0 -408
  166. package/src/features/meme-generator/index.ts +0 -3
  167. package/src/features/meme-generator/infrastructure/services/MemeGenerationService.ts +0 -87
  168. package/src/features/meme-generator/presentation/components/MemeGeneratorFeature.tsx +0 -180
  169. package/src/features/meme-generator/presentation/components/index.ts +0 -2
  170. package/src/features/meme-generator/presentation/screens/MemeGeneratorScreen.tsx +0 -168
  171. package/src/features/meme-generator/presentation/screens/index.ts +0 -1
  172. package/src/features/partner-upload/domain/types.ts +0 -59
  173. package/src/features/partner-upload/index.ts +0 -30
  174. package/src/features/partner-upload/presentation/components/PartnerInfoInput.tsx +0 -112
  175. package/src/features/partner-upload/presentation/components/PhotoTips.tsx +0 -53
  176. package/src/features/partner-upload/presentation/components/index.ts +0 -4
  177. package/src/features/partner-upload/presentation/hooks/index.ts +0 -7
  178. package/src/features/partner-upload/presentation/hooks/usePartnerStep.ts +0 -130
  179. package/src/features/partner-upload/presentation/screens/PartnerStepScreen.tsx +0 -231
  180. package/src/features/partner-upload/presentation/screens/index.ts +0 -6
  181. package/src/features/photo-restoration/README.md +0 -399
  182. package/src/features/photo-restoration/domain/index.ts +0 -1
  183. package/src/features/photo-restoration/domain/types/index.ts +0 -9
  184. package/src/features/photo-restoration/domain/types/photo-restore.types.ts +0 -64
  185. package/src/features/photo-restoration/index.ts +0 -22
  186. package/src/features/photo-restoration/presentation/components/PhotoRestoreFeature.tsx +0 -88
  187. package/src/features/photo-restoration/presentation/components/PhotoRestoreResultView.tsx +0 -86
  188. package/src/features/photo-restoration/presentation/components/index.ts +0 -4
  189. package/src/features/photo-restoration/presentation/hooks/index.ts +0 -1
  190. package/src/features/photo-restoration/presentation/hooks/usePhotoRestoreFeature.ts +0 -23
  191. package/src/features/photo-restoration/presentation/index.ts +0 -2
  192. package/src/features/remove-background/README.md +0 -393
  193. package/src/features/remove-background/domain/index.ts +0 -5
  194. package/src/features/remove-background/domain/types/index.ts +0 -7
  195. package/src/features/remove-background/domain/types/remove-background.types.ts +0 -28
  196. package/src/features/remove-background/index.ts +0 -19
  197. package/src/features/remove-background/presentation/components/RemoveBackgroundFeature.tsx +0 -86
  198. package/src/features/remove-background/presentation/components/index.ts +0 -2
  199. package/src/features/remove-background/presentation/hooks/index.ts +0 -1
  200. package/src/features/remove-background/presentation/hooks/useRemoveBackgroundFeature.ts +0 -28
  201. package/src/features/remove-background/presentation/index.ts +0 -6
  202. package/src/features/remove-object/README.md +0 -405
  203. package/src/features/remove-object/domain/index.ts +0 -5
  204. package/src/features/remove-object/domain/types/index.ts +0 -7
  205. package/src/features/remove-object/domain/types/remove-object.types.ts +0 -54
  206. package/src/features/remove-object/index.ts +0 -23
  207. package/src/features/remove-object/presentation/components/RemoveObjectFeature.tsx +0 -136
  208. package/src/features/remove-object/presentation/components/index.ts +0 -2
  209. package/src/features/remove-object/presentation/hooks/index.ts +0 -9
  210. package/src/features/remove-object/presentation/hooks/useRemoveObjectFeature.ts +0 -221
  211. package/src/features/remove-object/presentation/index.ts +0 -6
  212. package/src/features/replace-background/README.md +0 -405
  213. package/src/features/replace-background/domain/types/index.ts +0 -7
  214. package/src/features/replace-background/domain/types/replace-background.types.ts +0 -33
  215. package/src/features/replace-background/index.ts +0 -23
  216. package/src/features/replace-background/presentation/components/ReplaceBackgroundFeature.tsx +0 -105
  217. package/src/features/replace-background/presentation/components/index.ts +0 -6
  218. package/src/features/replace-background/presentation/hooks/index.ts +0 -9
  219. package/src/features/replace-background/presentation/hooks/useReplaceBackgroundFeature.ts +0 -55
  220. package/src/features/scenarios/domain/types.ts +0 -147
  221. package/src/features/scenarios/index.ts +0 -64
  222. package/src/features/scenarios/presentation/components/InspirationChips.tsx +0 -82
  223. package/src/features/scenarios/presentation/components/MagicPromptHeadline.tsx +0 -79
  224. package/src/features/scenarios/presentation/components/ScenarioGrid.tsx +0 -224
  225. package/src/features/scenarios/presentation/components/ScenarioHeader.tsx +0 -55
  226. package/src/features/scenarios/presentation/components/StyleSelector.tsx +0 -119
  227. package/src/features/scenarios/presentation/components/index.ts +0 -18
  228. package/src/features/scenarios/presentation/containers/CategoryNavigationContainer.tsx +0 -178
  229. package/src/features/scenarios/presentation/screens/HierarchicalScenarioListScreen.tsx +0 -266
  230. package/src/features/scenarios/presentation/screens/MagicPromptScreen.tsx +0 -242
  231. package/src/features/scenarios/presentation/screens/MainCategoryScreen.tsx +0 -198
  232. package/src/features/scenarios/presentation/screens/ScenarioPreviewScreen.tsx +0 -164
  233. package/src/features/scenarios/presentation/screens/ScenarioSelectorScreen.tsx +0 -66
  234. package/src/features/scenarios/presentation/screens/SubCategoryScreen.tsx +0 -216
  235. package/src/features/script-generator/README.md +0 -433
  236. package/src/features/script-generator/domain/constants/index.ts +0 -10
  237. package/src/features/script-generator/domain/types/script.types.ts +0 -30
  238. package/src/features/script-generator/index.ts +0 -5
  239. package/src/features/script-generator/infrastructure/services/ScriptGenerationService.ts +0 -62
  240. package/src/features/script-generator/presentation/components/ScriptDisplay.tsx +0 -158
  241. package/src/features/script-generator/presentation/components/VideoTypeSelector.tsx +0 -102
  242. package/src/features/script-generator/presentation/components/index.ts +0 -2
  243. package/src/features/script-generator/presentation/hooks/index.ts +0 -1
  244. package/src/features/script-generator/presentation/hooks/useScriptGenerator.ts +0 -77
  245. package/src/features/shared/README.md +0 -311
  246. package/src/features/shared/dual-image-video/domain/types/dual-image-video.types.ts +0 -88
  247. package/src/features/shared/dual-image-video/domain/types/index.ts +0 -14
  248. package/src/features/shared/dual-image-video/index.ts +0 -17
  249. package/src/features/shared/dual-image-video/presentation/hooks/index.ts +0 -5
  250. package/src/features/shared/dual-image-video/presentation/hooks/useDualImageVideoFeature.ts +0 -185
  251. package/src/features/shared/index.ts +0 -6
  252. package/src/features/text-to-image/README.md +0 -394
  253. package/src/features/text-to-image/domain/constants/index.ts +0 -8
  254. package/src/features/text-to-image/domain/constants/options.constants.ts +0 -39
  255. package/src/features/text-to-image/domain/constants/styles.constants.ts +0 -34
  256. package/src/features/text-to-image/domain/index.ts +0 -7
  257. package/src/features/text-to-image/domain/types/config.types.ts +0 -75
  258. package/src/features/text-to-image/domain/types/form.types.ts +0 -58
  259. package/src/features/text-to-image/domain/types/index.ts +0 -38
  260. package/src/features/text-to-image/domain/types/text-to-image.types.ts +0 -58
  261. package/src/features/text-to-image/index.ts +0 -116
  262. package/src/features/text-to-image/infrastructure/index.ts +0 -1
  263. package/src/features/text-to-image/infrastructure/services/index.ts +0 -5
  264. package/src/features/text-to-image/infrastructure/services/text-to-image-executor.ts +0 -147
  265. package/src/features/text-to-image/presentation/components/index.ts +0 -30
  266. package/src/features/text-to-image/presentation/hooks/index.ts +0 -30
  267. package/src/features/text-to-image/presentation/hooks/useFormState.ts +0 -103
  268. package/src/features/text-to-image/presentation/hooks/useGeneration.ts +0 -139
  269. package/src/features/text-to-image/presentation/hooks/useTextToImageFeature.ts +0 -111
  270. package/src/features/text-to-image/presentation/hooks/useTextToImageForm.ts +0 -58
  271. package/src/features/text-to-image/presentation/index.ts +0 -7
  272. package/src/features/text-to-video/README.md +0 -412
  273. package/src/features/text-to-video/domain/index.ts +0 -1
  274. package/src/features/text-to-video/domain/types/callback.types.ts +0 -69
  275. package/src/features/text-to-video/domain/types/component.types.ts +0 -106
  276. package/src/features/text-to-video/domain/types/config.types.ts +0 -61
  277. package/src/features/text-to-video/domain/types/index.ts +0 -56
  278. package/src/features/text-to-video/domain/types/request.types.ts +0 -36
  279. package/src/features/text-to-video/domain/types/state.types.ts +0 -53
  280. package/src/features/text-to-video/index.ts +0 -68
  281. package/src/features/text-to-video/infrastructure/index.ts +0 -1
  282. package/src/features/text-to-video/infrastructure/services/index.ts +0 -5
  283. package/src/features/text-to-video/infrastructure/services/text-to-video-executor.ts +0 -141
  284. package/src/features/text-to-video/presentation/components/FrameSelector.tsx +0 -153
  285. package/src/features/text-to-video/presentation/components/GenerationTabs.tsx +0 -73
  286. package/src/features/text-to-video/presentation/components/HeroSection.tsx +0 -61
  287. package/src/features/text-to-video/presentation/components/HintCarousel.tsx +0 -96
  288. package/src/features/text-to-video/presentation/components/OptionsPanel.tsx +0 -121
  289. package/src/features/text-to-video/presentation/components/index.ts +0 -10
  290. package/src/features/text-to-video/presentation/hooks/index.ts +0 -17
  291. package/src/features/text-to-video/presentation/hooks/useTextToVideoFeature.ts +0 -225
  292. package/src/features/text-to-video/presentation/hooks/useTextToVideoForm.ts +0 -134
  293. package/src/features/text-to-video/presentation/index.ts +0 -7
  294. package/src/features/text-to-voice/README.md +0 -445
  295. package/src/features/text-to-voice/domain/index.ts +0 -1
  296. package/src/features/text-to-voice/domain/types/component.types.ts +0 -91
  297. package/src/features/text-to-voice/domain/types/config.types.ts +0 -34
  298. package/src/features/text-to-voice/domain/types/form.types.ts +0 -39
  299. package/src/features/text-to-voice/domain/types/generation.types.ts +0 -43
  300. package/src/features/text-to-voice/domain/types/index.ts +0 -38
  301. package/src/features/text-to-voice/index.ts +0 -53
  302. package/src/features/text-to-voice/infrastructure/index.ts +0 -1
  303. package/src/features/text-to-voice/infrastructure/services/index.ts +0 -4
  304. package/src/features/text-to-voice/infrastructure/services/text-to-voice-executor.ts +0 -103
  305. package/src/features/text-to-voice/presentation/components/TextToVoiceAudioPlayer.tsx +0 -81
  306. package/src/features/text-to-voice/presentation/components/index.ts +0 -7
  307. package/src/features/text-to-voice/presentation/hooks/index.ts +0 -6
  308. package/src/features/text-to-voice/presentation/hooks/useTextToVoiceForm.ts +0 -91
  309. package/src/features/text-to-voice/presentation/hooks/useTextToVoiceGeneration.ts +0 -116
  310. package/src/features/text-to-voice/presentation/index.ts +0 -2
  311. package/src/features/upscaling/README.md +0 -396
  312. package/src/features/upscaling/domain/index.ts +0 -1
  313. package/src/features/upscaling/domain/types/index.ts +0 -1
  314. package/src/features/upscaling/domain/types/upscale.types.ts +0 -23
  315. package/src/features/upscaling/index.ts +0 -20
  316. package/src/features/upscaling/presentation/components/ComparisonSlider.tsx +0 -200
  317. package/src/features/upscaling/presentation/components/UpscaleFeature.tsx +0 -89
  318. package/src/features/upscaling/presentation/components/UpscaleResultView.tsx +0 -98
  319. package/src/features/upscaling/presentation/components/index.ts +0 -6
  320. package/src/features/upscaling/presentation/hooks/index.ts +0 -1
  321. package/src/features/upscaling/presentation/hooks/useUpscaleFeature.ts +0 -28
  322. package/src/features/upscaling/presentation/index.ts +0 -2
  323. package/src/features/wizard/domain/types.ts +0 -154
  324. package/src/features/wizard/index.ts +0 -43
  325. package/src/features/wizard/presentation/components/AIFeatureWizard.tsx +0 -231
  326. package/src/features/wizard/presentation/components/AIGenerationWizard.tsx +0 -132
  327. package/src/features/wizard/presentation/hooks/useWizard.ts +0 -120
  328. 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
- });