@oxyhq/services 5.21.7 → 5.22.0

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 (392) hide show
  1. package/README.md +201 -2
  2. package/lib/commonjs/assets/assets/fonts/Inter/Inter_18pt-Black.ttf +0 -0
  3. package/lib/commonjs/assets/assets/fonts/Inter/Inter_18pt-Bold.ttf +0 -0
  4. package/lib/commonjs/assets/assets/fonts/Inter/Inter_18pt-ExtraBold.ttf +0 -0
  5. package/lib/commonjs/assets/assets/fonts/Inter/Inter_18pt-Light.ttf +0 -0
  6. package/lib/commonjs/assets/assets/fonts/Inter/Inter_18pt-Medium.ttf +0 -0
  7. package/lib/commonjs/assets/assets/fonts/Inter/Inter_18pt-Regular.ttf +0 -0
  8. package/lib/commonjs/assets/assets/fonts/Inter/Inter_18pt-SemiBold.ttf +0 -0
  9. package/lib/commonjs/assets/fonts/Inter/Inter_18pt-Black.ttf +0 -0
  10. package/lib/commonjs/assets/fonts/Inter/Inter_18pt-Bold.ttf +0 -0
  11. package/lib/commonjs/assets/fonts/Inter/Inter_18pt-ExtraBold.ttf +0 -0
  12. package/lib/commonjs/assets/fonts/Inter/Inter_18pt-Light.ttf +0 -0
  13. package/lib/commonjs/assets/fonts/Inter/Inter_18pt-Medium.ttf +0 -0
  14. package/lib/commonjs/assets/fonts/Inter/Inter_18pt-Regular.ttf +0 -0
  15. package/lib/commonjs/assets/fonts/Inter/Inter_18pt-SemiBold.ttf +0 -0
  16. package/lib/commonjs/core/HttpService.js +87 -2
  17. package/lib/commonjs/core/HttpService.js.map +1 -1
  18. package/lib/commonjs/core/mixins/OxyServices.assets.js +3 -1
  19. package/lib/commonjs/core/mixins/OxyServices.assets.js.map +1 -1
  20. package/lib/commonjs/i18n/locales/en-US.json +3 -3
  21. package/lib/commonjs/i18n/locales/es-ES.json +240 -19
  22. package/lib/commonjs/ui/components/Avatar.js +1 -1
  23. package/lib/commonjs/ui/components/Avatar.js.map +1 -1
  24. package/lib/commonjs/ui/components/FollowButton.js +1 -1
  25. package/lib/commonjs/ui/components/FollowButton.js.map +1 -1
  26. package/lib/commonjs/ui/components/FontLoader.js +34 -34
  27. package/lib/commonjs/ui/components/FontLoader.js.map +1 -1
  28. package/lib/commonjs/ui/components/Header.js +4 -4
  29. package/lib/commonjs/ui/components/Header.js.map +1 -1
  30. package/lib/commonjs/ui/components/OxyPayButton.js +1 -1
  31. package/lib/commonjs/ui/components/OxyPayButton.js.map +1 -1
  32. package/lib/commonjs/ui/components/OxySignInButton.js +2 -1
  33. package/lib/commonjs/ui/components/OxySignInButton.js.map +1 -1
  34. package/lib/commonjs/ui/components/ProfileCard.js +1 -1
  35. package/lib/commonjs/ui/components/ProfileCard.js.map +1 -1
  36. package/lib/commonjs/ui/components/SectionTitle.js +1 -1
  37. package/lib/commonjs/ui/components/SectionTitle.js.map +1 -1
  38. package/lib/commonjs/ui/components/StepBasedScreen.js +2 -1
  39. package/lib/commonjs/ui/components/StepBasedScreen.js.map +1 -1
  40. package/lib/commonjs/ui/components/feedback/feedbackStyles.js +2 -1
  41. package/lib/commonjs/ui/components/feedback/feedbackStyles.js.map +1 -1
  42. package/lib/commonjs/ui/components/fileManagement/styles.js +17 -17
  43. package/lib/commonjs/ui/components/fileManagement/styles.js.map +1 -1
  44. package/lib/commonjs/ui/components/payment/paymentStyles.js +7 -7
  45. package/lib/commonjs/ui/components/payment/paymentStyles.js.map +1 -1
  46. package/lib/commonjs/ui/navigation/routes.js +2 -0
  47. package/lib/commonjs/ui/navigation/routes.js.map +1 -1
  48. package/lib/commonjs/ui/screens/AccountCenterScreen.js +4 -2
  49. package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
  50. package/lib/commonjs/ui/screens/AccountOverviewScreen.js +13 -5
  51. package/lib/commonjs/ui/screens/AccountOverviewScreen.js.map +1 -1
  52. package/lib/commonjs/ui/screens/AccountSettingsScreen.js +273 -1820
  53. package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
  54. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +1 -1
  55. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
  56. package/lib/commonjs/ui/screens/AccountVerificationScreen.js +3 -1
  57. package/lib/commonjs/ui/screens/AccountVerificationScreen.js.map +1 -1
  58. package/lib/commonjs/ui/screens/AppInfoScreen.js +2 -2
  59. package/lib/commonjs/ui/screens/AppInfoScreen.js.map +1 -1
  60. package/lib/commonjs/ui/screens/EditProfileFieldScreen.js +640 -0
  61. package/lib/commonjs/ui/screens/EditProfileFieldScreen.js.map +1 -0
  62. package/lib/commonjs/ui/screens/FileManagementScreen.js +39 -21
  63. package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
  64. package/lib/commonjs/ui/screens/HistoryViewScreen.js +9 -3
  65. package/lib/commonjs/ui/screens/HistoryViewScreen.js.map +1 -1
  66. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js +4 -2
  67. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js.map +1 -1
  68. package/lib/commonjs/ui/screens/LegalDocumentsScreen.js +3 -1
  69. package/lib/commonjs/ui/screens/LegalDocumentsScreen.js.map +1 -1
  70. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js +11 -12
  71. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
  72. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js +12 -4
  73. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js.map +1 -1
  74. package/lib/commonjs/ui/screens/SearchSettingsScreen.js +3 -1
  75. package/lib/commonjs/ui/screens/SearchSettingsScreen.js.map +1 -1
  76. package/lib/commonjs/ui/screens/SessionManagementScreen.js +15 -5
  77. package/lib/commonjs/ui/screens/SessionManagementScreen.js.map +1 -1
  78. package/lib/commonjs/ui/screens/UserLinksScreen.js +3 -1
  79. package/lib/commonjs/ui/screens/UserLinksScreen.js.map +1 -1
  80. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js +2 -1
  81. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  82. package/lib/commonjs/ui/screens/karma/KarmaAboutScreen.js +2 -4
  83. package/lib/commonjs/ui/screens/karma/KarmaAboutScreen.js.map +1 -1
  84. package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js +3 -3
  85. package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js.map +1 -1
  86. package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js +3 -3
  87. package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js.map +1 -1
  88. package/lib/commonjs/ui/styles/authStyles.js +5 -4
  89. package/lib/commonjs/ui/styles/authStyles.js.map +1 -1
  90. package/lib/commonjs/ui/styles/fonts.js +27 -27
  91. package/lib/commonjs/ui/styles/fonts.js.map +1 -1
  92. package/lib/commonjs/ui/styles/theme.js +3 -3
  93. package/lib/commonjs/ui/styles/theme.js.map +1 -1
  94. package/lib/commonjs/web.js +682 -0
  95. package/lib/commonjs/web.js.map +1 -0
  96. package/lib/module/assets/assets/fonts/Inter/Inter_18pt-Black.ttf +0 -0
  97. package/lib/module/assets/assets/fonts/Inter/Inter_18pt-Bold.ttf +0 -0
  98. package/lib/module/assets/assets/fonts/Inter/Inter_18pt-ExtraBold.ttf +0 -0
  99. package/lib/module/assets/assets/fonts/Inter/Inter_18pt-Light.ttf +0 -0
  100. package/lib/module/assets/assets/fonts/Inter/Inter_18pt-Medium.ttf +0 -0
  101. package/lib/module/assets/assets/fonts/Inter/Inter_18pt-Regular.ttf +0 -0
  102. package/lib/module/assets/assets/fonts/Inter/Inter_18pt-SemiBold.ttf +0 -0
  103. package/lib/module/assets/fonts/Inter/Inter_18pt-Black.ttf +0 -0
  104. package/lib/module/assets/fonts/Inter/Inter_18pt-Bold.ttf +0 -0
  105. package/lib/module/assets/fonts/Inter/Inter_18pt-ExtraBold.ttf +0 -0
  106. package/lib/module/assets/fonts/Inter/Inter_18pt-Light.ttf +0 -0
  107. package/lib/module/assets/fonts/Inter/Inter_18pt-Medium.ttf +0 -0
  108. package/lib/module/assets/fonts/Inter/Inter_18pt-Regular.ttf +0 -0
  109. package/lib/module/assets/fonts/Inter/Inter_18pt-SemiBold.ttf +0 -0
  110. package/lib/module/core/HttpService.js +87 -2
  111. package/lib/module/core/HttpService.js.map +1 -1
  112. package/lib/module/core/mixins/OxyServices.assets.js +3 -1
  113. package/lib/module/core/mixins/OxyServices.assets.js.map +1 -1
  114. package/lib/module/i18n/locales/en-US.json +3 -3
  115. package/lib/module/i18n/locales/es-ES.json +240 -19
  116. package/lib/module/ui/components/Avatar.js +1 -1
  117. package/lib/module/ui/components/Avatar.js.map +1 -1
  118. package/lib/module/ui/components/FollowButton.js +1 -1
  119. package/lib/module/ui/components/FollowButton.js.map +1 -1
  120. package/lib/module/ui/components/FontLoader.js +34 -34
  121. package/lib/module/ui/components/FontLoader.js.map +1 -1
  122. package/lib/module/ui/components/Header.js +4 -4
  123. package/lib/module/ui/components/Header.js.map +1 -1
  124. package/lib/module/ui/components/OxyPayButton.js +1 -1
  125. package/lib/module/ui/components/OxyPayButton.js.map +1 -1
  126. package/lib/module/ui/components/OxySignInButton.js +2 -1
  127. package/lib/module/ui/components/OxySignInButton.js.map +1 -1
  128. package/lib/module/ui/components/ProfileCard.js +1 -1
  129. package/lib/module/ui/components/ProfileCard.js.map +1 -1
  130. package/lib/module/ui/components/SectionTitle.js +1 -1
  131. package/lib/module/ui/components/SectionTitle.js.map +1 -1
  132. package/lib/module/ui/components/StepBasedScreen.js +2 -1
  133. package/lib/module/ui/components/StepBasedScreen.js.map +1 -1
  134. package/lib/module/ui/components/feedback/feedbackStyles.js +2 -1
  135. package/lib/module/ui/components/feedback/feedbackStyles.js.map +1 -1
  136. package/lib/module/ui/components/fileManagement/styles.js +17 -17
  137. package/lib/module/ui/components/fileManagement/styles.js.map +1 -1
  138. package/lib/module/ui/components/payment/paymentStyles.js +7 -7
  139. package/lib/module/ui/components/payment/paymentStyles.js.map +1 -1
  140. package/lib/module/ui/navigation/routes.js +2 -0
  141. package/lib/module/ui/navigation/routes.js.map +1 -1
  142. package/lib/module/ui/screens/AccountCenterScreen.js +4 -2
  143. package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
  144. package/lib/module/ui/screens/AccountOverviewScreen.js +13 -5
  145. package/lib/module/ui/screens/AccountOverviewScreen.js.map +1 -1
  146. package/lib/module/ui/screens/AccountSettingsScreen.js +277 -1824
  147. package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
  148. package/lib/module/ui/screens/AccountSwitcherScreen.js +1 -1
  149. package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
  150. package/lib/module/ui/screens/AccountVerificationScreen.js +3 -1
  151. package/lib/module/ui/screens/AccountVerificationScreen.js.map +1 -1
  152. package/lib/module/ui/screens/AppInfoScreen.js +2 -2
  153. package/lib/module/ui/screens/AppInfoScreen.js.map +1 -1
  154. package/lib/module/ui/screens/EditProfileFieldScreen.js +635 -0
  155. package/lib/module/ui/screens/EditProfileFieldScreen.js.map +1 -0
  156. package/lib/module/ui/screens/FileManagementScreen.js +39 -21
  157. package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
  158. package/lib/module/ui/screens/HistoryViewScreen.js +9 -3
  159. package/lib/module/ui/screens/HistoryViewScreen.js.map +1 -1
  160. package/lib/module/ui/screens/LanguageSelectorScreen.js +4 -2
  161. package/lib/module/ui/screens/LanguageSelectorScreen.js.map +1 -1
  162. package/lib/module/ui/screens/LegalDocumentsScreen.js +3 -1
  163. package/lib/module/ui/screens/LegalDocumentsScreen.js.map +1 -1
  164. package/lib/module/ui/screens/PremiumSubscriptionScreen.js +11 -12
  165. package/lib/module/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
  166. package/lib/module/ui/screens/PrivacySettingsScreen.js +12 -4
  167. package/lib/module/ui/screens/PrivacySettingsScreen.js.map +1 -1
  168. package/lib/module/ui/screens/SearchSettingsScreen.js +3 -1
  169. package/lib/module/ui/screens/SearchSettingsScreen.js.map +1 -1
  170. package/lib/module/ui/screens/SessionManagementScreen.js +15 -5
  171. package/lib/module/ui/screens/SessionManagementScreen.js.map +1 -1
  172. package/lib/module/ui/screens/UserLinksScreen.js +3 -1
  173. package/lib/module/ui/screens/UserLinksScreen.js.map +1 -1
  174. package/lib/module/ui/screens/WelcomeNewUserScreen.js +2 -1
  175. package/lib/module/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  176. package/lib/module/ui/screens/karma/KarmaAboutScreen.js +2 -4
  177. package/lib/module/ui/screens/karma/KarmaAboutScreen.js.map +1 -1
  178. package/lib/module/ui/screens/karma/KarmaCenterScreen.js +3 -3
  179. package/lib/module/ui/screens/karma/KarmaCenterScreen.js.map +1 -1
  180. package/lib/module/ui/screens/karma/KarmaRewardsScreen.js +3 -3
  181. package/lib/module/ui/screens/karma/KarmaRewardsScreen.js.map +1 -1
  182. package/lib/module/ui/styles/authStyles.js +5 -4
  183. package/lib/module/ui/styles/authStyles.js.map +1 -1
  184. package/lib/module/ui/styles/fonts.js +27 -27
  185. package/lib/module/ui/styles/fonts.js.map +1 -1
  186. package/lib/module/ui/styles/theme.js +3 -3
  187. package/lib/module/ui/styles/theme.js.map +1 -1
  188. package/lib/module/web.js +75 -0
  189. package/lib/module/web.js.map +1 -0
  190. package/lib/typescript/commonjs/core/HttpService.d.ts +5 -0
  191. package/lib/typescript/commonjs/core/HttpService.d.ts.map +1 -1
  192. package/lib/typescript/commonjs/ui/components/OxySignInButton.d.ts.map +1 -1
  193. package/lib/typescript/commonjs/ui/components/StepBasedScreen.d.ts.map +1 -1
  194. package/lib/typescript/commonjs/ui/components/feedback/feedbackStyles.d.ts.map +1 -1
  195. package/lib/typescript/commonjs/ui/navigation/routes.d.ts +1 -1
  196. package/lib/typescript/commonjs/ui/navigation/routes.d.ts.map +1 -1
  197. package/lib/typescript/commonjs/ui/screens/AccountCenterScreen.d.ts.map +1 -1
  198. package/lib/typescript/commonjs/ui/screens/AccountOverviewScreen.d.ts.map +1 -1
  199. package/lib/typescript/commonjs/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
  200. package/lib/typescript/commonjs/ui/screens/AccountVerificationScreen.d.ts.map +1 -1
  201. package/lib/typescript/commonjs/ui/screens/EditProfileFieldScreen.d.ts +13 -0
  202. package/lib/typescript/commonjs/ui/screens/EditProfileFieldScreen.d.ts.map +1 -0
  203. package/lib/typescript/commonjs/ui/screens/FileManagementScreen.d.ts.map +1 -1
  204. package/lib/typescript/commonjs/ui/screens/HistoryViewScreen.d.ts.map +1 -1
  205. package/lib/typescript/commonjs/ui/screens/LanguageSelectorScreen.d.ts.map +1 -1
  206. package/lib/typescript/commonjs/ui/screens/LegalDocumentsScreen.d.ts.map +1 -1
  207. package/lib/typescript/commonjs/ui/screens/PremiumSubscriptionScreen.d.ts.map +1 -1
  208. package/lib/typescript/commonjs/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
  209. package/lib/typescript/commonjs/ui/screens/SearchSettingsScreen.d.ts.map +1 -1
  210. package/lib/typescript/commonjs/ui/screens/SessionManagementScreen.d.ts.map +1 -1
  211. package/lib/typescript/commonjs/ui/screens/UserLinksScreen.d.ts.map +1 -1
  212. package/lib/typescript/commonjs/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
  213. package/lib/typescript/commonjs/ui/screens/karma/KarmaAboutScreen.d.ts.map +1 -1
  214. package/lib/typescript/commonjs/ui/styles/fonts.d.ts +7 -7
  215. package/lib/typescript/commonjs/ui/styles/theme.d.ts.map +1 -1
  216. package/lib/typescript/commonjs/web.d.ts +54 -0
  217. package/lib/typescript/commonjs/web.d.ts.map +1 -0
  218. package/lib/typescript/module/core/HttpService.d.ts +5 -0
  219. package/lib/typescript/module/core/HttpService.d.ts.map +1 -1
  220. package/lib/typescript/module/ui/components/OxySignInButton.d.ts.map +1 -1
  221. package/lib/typescript/module/ui/components/StepBasedScreen.d.ts.map +1 -1
  222. package/lib/typescript/module/ui/components/feedback/feedbackStyles.d.ts.map +1 -1
  223. package/lib/typescript/module/ui/navigation/routes.d.ts +1 -1
  224. package/lib/typescript/module/ui/navigation/routes.d.ts.map +1 -1
  225. package/lib/typescript/module/ui/screens/AccountCenterScreen.d.ts.map +1 -1
  226. package/lib/typescript/module/ui/screens/AccountOverviewScreen.d.ts.map +1 -1
  227. package/lib/typescript/module/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
  228. package/lib/typescript/module/ui/screens/AccountVerificationScreen.d.ts.map +1 -1
  229. package/lib/typescript/module/ui/screens/EditProfileFieldScreen.d.ts +13 -0
  230. package/lib/typescript/module/ui/screens/EditProfileFieldScreen.d.ts.map +1 -0
  231. package/lib/typescript/module/ui/screens/FileManagementScreen.d.ts.map +1 -1
  232. package/lib/typescript/module/ui/screens/HistoryViewScreen.d.ts.map +1 -1
  233. package/lib/typescript/module/ui/screens/LanguageSelectorScreen.d.ts.map +1 -1
  234. package/lib/typescript/module/ui/screens/LegalDocumentsScreen.d.ts.map +1 -1
  235. package/lib/typescript/module/ui/screens/PremiumSubscriptionScreen.d.ts.map +1 -1
  236. package/lib/typescript/module/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
  237. package/lib/typescript/module/ui/screens/SearchSettingsScreen.d.ts.map +1 -1
  238. package/lib/typescript/module/ui/screens/SessionManagementScreen.d.ts.map +1 -1
  239. package/lib/typescript/module/ui/screens/UserLinksScreen.d.ts.map +1 -1
  240. package/lib/typescript/module/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
  241. package/lib/typescript/module/ui/screens/karma/KarmaAboutScreen.d.ts.map +1 -1
  242. package/lib/typescript/module/ui/styles/fonts.d.ts +7 -7
  243. package/lib/typescript/module/ui/styles/theme.d.ts.map +1 -1
  244. package/lib/typescript/module/web.d.ts +54 -0
  245. package/lib/typescript/module/web.d.ts.map +1 -0
  246. package/package.json +27 -41
  247. package/src/assets/fonts/Inter/Inter_18pt-Black.ttf +0 -0
  248. package/src/assets/fonts/Inter/Inter_18pt-Bold.ttf +0 -0
  249. package/src/assets/fonts/Inter/Inter_18pt-ExtraBold.ttf +0 -0
  250. package/src/assets/fonts/Inter/Inter_18pt-Light.ttf +0 -0
  251. package/src/assets/fonts/Inter/Inter_18pt-Medium.ttf +0 -0
  252. package/src/assets/fonts/Inter/Inter_18pt-Regular.ttf +0 -0
  253. package/src/assets/fonts/Inter/Inter_18pt-SemiBold.ttf +0 -0
  254. package/src/core/HttpService.ts +91 -0
  255. package/src/core/mixins/OxyServices.assets.ts +1 -1
  256. package/src/i18n/locales/en-US.json +3 -3
  257. package/src/i18n/locales/es-ES.json +240 -19
  258. package/src/ui/components/Avatar.tsx +1 -1
  259. package/src/ui/components/FollowButton.tsx +1 -1
  260. package/src/ui/components/FontLoader.tsx +34 -34
  261. package/src/ui/components/Header.tsx +4 -4
  262. package/src/ui/components/OxyPayButton.tsx +1 -1
  263. package/src/ui/components/OxySignInButton.tsx +2 -1
  264. package/src/ui/components/ProfileCard.tsx +1 -1
  265. package/src/ui/components/SectionTitle.tsx +1 -1
  266. package/src/ui/components/StepBasedScreen.tsx +2 -1
  267. package/src/ui/components/feedback/feedbackStyles.ts +2 -1
  268. package/src/ui/components/fileManagement/styles.ts +17 -17
  269. package/src/ui/components/payment/paymentStyles.ts +7 -7
  270. package/src/ui/navigation/routes.ts +3 -0
  271. package/src/ui/screens/AccountCenterScreen.tsx +4 -2
  272. package/src/ui/screens/AccountOverviewScreen.tsx +13 -5
  273. package/src/ui/screens/AccountSettingsScreen.tsx +35 -1511
  274. package/src/ui/screens/AccountSwitcherScreen.tsx +1 -1
  275. package/src/ui/screens/AccountVerificationScreen.tsx +3 -1
  276. package/src/ui/screens/AppInfoScreen.tsx +2 -2
  277. package/src/ui/screens/EditProfileFieldScreen.tsx +685 -0
  278. package/src/ui/screens/FileManagementScreen.tsx +33 -15
  279. package/src/ui/screens/HistoryViewScreen.tsx +9 -3
  280. package/src/ui/screens/LanguageSelectorScreen.tsx +4 -2
  281. package/src/ui/screens/LegalDocumentsScreen.tsx +3 -1
  282. package/src/ui/screens/PremiumSubscriptionScreen.tsx +11 -13
  283. package/src/ui/screens/PrivacySettingsScreen.tsx +12 -4
  284. package/src/ui/screens/SearchSettingsScreen.tsx +3 -1
  285. package/src/ui/screens/SessionManagementScreen.tsx +15 -5
  286. package/src/ui/screens/UserLinksScreen.tsx +3 -1
  287. package/src/ui/screens/WelcomeNewUserScreen.tsx +2 -1
  288. package/src/ui/screens/karma/KarmaAboutScreen.tsx +6 -8
  289. package/src/ui/screens/karma/KarmaCenterScreen.tsx +3 -3
  290. package/src/ui/screens/karma/KarmaRewardsScreen.tsx +3 -3
  291. package/src/ui/styles/authStyles.ts +4 -4
  292. package/src/ui/styles/fonts.ts +26 -26
  293. package/src/ui/styles/theme.ts +3 -5
  294. package/src/web.ts +230 -0
  295. package/lib/commonjs/assets/assets/fonts/Phudu/Phudu-Black.ttf +0 -0
  296. package/lib/commonjs/assets/assets/fonts/Phudu/Phudu-Bold.ttf +0 -0
  297. package/lib/commonjs/assets/assets/fonts/Phudu/Phudu-ExtraBold.ttf +0 -0
  298. package/lib/commonjs/assets/assets/fonts/Phudu/Phudu-Light.ttf +0 -0
  299. package/lib/commonjs/assets/assets/fonts/Phudu/Phudu-Medium.ttf +0 -0
  300. package/lib/commonjs/assets/assets/fonts/Phudu/Phudu-Regular.ttf +0 -0
  301. package/lib/commonjs/assets/assets/fonts/Phudu/Phudu-SemiBold.ttf +0 -0
  302. package/lib/commonjs/assets/fonts/Phudu/Phudu-Black.ttf +0 -0
  303. package/lib/commonjs/assets/fonts/Phudu/Phudu-Bold.ttf +0 -0
  304. package/lib/commonjs/assets/fonts/Phudu/Phudu-ExtraBold.ttf +0 -0
  305. package/lib/commonjs/assets/fonts/Phudu/Phudu-Light.ttf +0 -0
  306. package/lib/commonjs/assets/fonts/Phudu/Phudu-Medium.ttf +0 -0
  307. package/lib/commonjs/assets/fonts/Phudu/Phudu-Regular.ttf +0 -0
  308. package/lib/commonjs/assets/fonts/Phudu/Phudu-SemiBold.ttf +0 -0
  309. package/lib/commonjs/ui/components/profile/EditBioModal.js +0 -49
  310. package/lib/commonjs/ui/components/profile/EditBioModal.js.map +0 -1
  311. package/lib/commonjs/ui/components/profile/EditDisplayNameModal.js +0 -54
  312. package/lib/commonjs/ui/components/profile/EditDisplayNameModal.js.map +0 -1
  313. package/lib/commonjs/ui/components/profile/EditEmailModal.js +0 -57
  314. package/lib/commonjs/ui/components/profile/EditEmailModal.js.map +0 -1
  315. package/lib/commonjs/ui/components/profile/EditFieldModal.js +0 -412
  316. package/lib/commonjs/ui/components/profile/EditFieldModal.js.map +0 -1
  317. package/lib/commonjs/ui/components/profile/EditLinksModal.js +0 -315
  318. package/lib/commonjs/ui/components/profile/EditLinksModal.js.map +0 -1
  319. package/lib/commonjs/ui/components/profile/EditLocationModal.js +0 -91
  320. package/lib/commonjs/ui/components/profile/EditLocationModal.js.map +0 -1
  321. package/lib/commonjs/ui/components/profile/EditUsernameModal.js +0 -55
  322. package/lib/commonjs/ui/components/profile/EditUsernameModal.js.map +0 -1
  323. package/lib/module/assets/assets/fonts/Phudu/Phudu-Black.ttf +0 -0
  324. package/lib/module/assets/assets/fonts/Phudu/Phudu-Bold.ttf +0 -0
  325. package/lib/module/assets/assets/fonts/Phudu/Phudu-ExtraBold.ttf +0 -0
  326. package/lib/module/assets/assets/fonts/Phudu/Phudu-Light.ttf +0 -0
  327. package/lib/module/assets/assets/fonts/Phudu/Phudu-Medium.ttf +0 -0
  328. package/lib/module/assets/assets/fonts/Phudu/Phudu-Regular.ttf +0 -0
  329. package/lib/module/assets/assets/fonts/Phudu/Phudu-SemiBold.ttf +0 -0
  330. package/lib/module/assets/fonts/Phudu/Phudu-Black.ttf +0 -0
  331. package/lib/module/assets/fonts/Phudu/Phudu-Bold.ttf +0 -0
  332. package/lib/module/assets/fonts/Phudu/Phudu-ExtraBold.ttf +0 -0
  333. package/lib/module/assets/fonts/Phudu/Phudu-Light.ttf +0 -0
  334. package/lib/module/assets/fonts/Phudu/Phudu-Medium.ttf +0 -0
  335. package/lib/module/assets/fonts/Phudu/Phudu-Regular.ttf +0 -0
  336. package/lib/module/assets/fonts/Phudu/Phudu-SemiBold.ttf +0 -0
  337. package/lib/module/ui/components/profile/EditBioModal.js +0 -43
  338. package/lib/module/ui/components/profile/EditBioModal.js.map +0 -1
  339. package/lib/module/ui/components/profile/EditDisplayNameModal.js +0 -48
  340. package/lib/module/ui/components/profile/EditDisplayNameModal.js.map +0 -1
  341. package/lib/module/ui/components/profile/EditEmailModal.js +0 -51
  342. package/lib/module/ui/components/profile/EditEmailModal.js.map +0 -1
  343. package/lib/module/ui/components/profile/EditFieldModal.js +0 -406
  344. package/lib/module/ui/components/profile/EditFieldModal.js.map +0 -1
  345. package/lib/module/ui/components/profile/EditLinksModal.js +0 -309
  346. package/lib/module/ui/components/profile/EditLinksModal.js.map +0 -1
  347. package/lib/module/ui/components/profile/EditLocationModal.js +0 -85
  348. package/lib/module/ui/components/profile/EditLocationModal.js.map +0 -1
  349. package/lib/module/ui/components/profile/EditUsernameModal.js +0 -49
  350. package/lib/module/ui/components/profile/EditUsernameModal.js.map +0 -1
  351. package/lib/typescript/commonjs/ui/components/profile/EditBioModal.d.ts +0 -11
  352. package/lib/typescript/commonjs/ui/components/profile/EditBioModal.d.ts.map +0 -1
  353. package/lib/typescript/commonjs/ui/components/profile/EditDisplayNameModal.d.ts +0 -12
  354. package/lib/typescript/commonjs/ui/components/profile/EditDisplayNameModal.d.ts.map +0 -1
  355. package/lib/typescript/commonjs/ui/components/profile/EditEmailModal.d.ts +0 -11
  356. package/lib/typescript/commonjs/ui/components/profile/EditEmailModal.d.ts.map +0 -1
  357. package/lib/typescript/commonjs/ui/components/profile/EditFieldModal.d.ts +0 -110
  358. package/lib/typescript/commonjs/ui/components/profile/EditFieldModal.d.ts.map +0 -1
  359. package/lib/typescript/commonjs/ui/components/profile/EditLinksModal.d.ts +0 -18
  360. package/lib/typescript/commonjs/ui/components/profile/EditLinksModal.d.ts.map +0 -1
  361. package/lib/typescript/commonjs/ui/components/profile/EditLocationModal.d.ts +0 -21
  362. package/lib/typescript/commonjs/ui/components/profile/EditLocationModal.d.ts.map +0 -1
  363. package/lib/typescript/commonjs/ui/components/profile/EditUsernameModal.d.ts +0 -11
  364. package/lib/typescript/commonjs/ui/components/profile/EditUsernameModal.d.ts.map +0 -1
  365. package/lib/typescript/module/ui/components/profile/EditBioModal.d.ts +0 -11
  366. package/lib/typescript/module/ui/components/profile/EditBioModal.d.ts.map +0 -1
  367. package/lib/typescript/module/ui/components/profile/EditDisplayNameModal.d.ts +0 -12
  368. package/lib/typescript/module/ui/components/profile/EditDisplayNameModal.d.ts.map +0 -1
  369. package/lib/typescript/module/ui/components/profile/EditEmailModal.d.ts +0 -11
  370. package/lib/typescript/module/ui/components/profile/EditEmailModal.d.ts.map +0 -1
  371. package/lib/typescript/module/ui/components/profile/EditFieldModal.d.ts +0 -110
  372. package/lib/typescript/module/ui/components/profile/EditFieldModal.d.ts.map +0 -1
  373. package/lib/typescript/module/ui/components/profile/EditLinksModal.d.ts +0 -18
  374. package/lib/typescript/module/ui/components/profile/EditLinksModal.d.ts.map +0 -1
  375. package/lib/typescript/module/ui/components/profile/EditLocationModal.d.ts +0 -21
  376. package/lib/typescript/module/ui/components/profile/EditLocationModal.d.ts.map +0 -1
  377. package/lib/typescript/module/ui/components/profile/EditUsernameModal.d.ts +0 -11
  378. package/lib/typescript/module/ui/components/profile/EditUsernameModal.d.ts.map +0 -1
  379. package/src/assets/fonts/Phudu/Phudu-Black.ttf +0 -0
  380. package/src/assets/fonts/Phudu/Phudu-Bold.ttf +0 -0
  381. package/src/assets/fonts/Phudu/Phudu-ExtraBold.ttf +0 -0
  382. package/src/assets/fonts/Phudu/Phudu-Light.ttf +0 -0
  383. package/src/assets/fonts/Phudu/Phudu-Medium.ttf +0 -0
  384. package/src/assets/fonts/Phudu/Phudu-Regular.ttf +0 -0
  385. package/src/assets/fonts/Phudu/Phudu-SemiBold.ttf +0 -0
  386. package/src/ui/components/profile/EditBioModal.tsx +0 -46
  387. package/src/ui/components/profile/EditDisplayNameModal.tsx +0 -56
  388. package/src/ui/components/profile/EditEmailModal.tsx +0 -57
  389. package/src/ui/components/profile/EditFieldModal.tsx +0 -465
  390. package/src/ui/components/profile/EditLinksModal.tsx +0 -316
  391. package/src/ui/components/profile/EditLocationModal.tsx +0 -91
  392. package/src/ui/components/profile/EditUsernameModal.tsx +0 -55
@@ -53,6 +53,8 @@ class TokenStore {
53
53
  private static instance: TokenStore;
54
54
  private accessToken: string | null = null;
55
55
  private refreshToken: string | null = null;
56
+ private csrfToken: string | null = null;
57
+ private csrfTokenFetchPromise: Promise<string | null> | null = null;
56
58
 
57
59
  private constructor() {}
58
60
 
@@ -84,6 +86,27 @@ class TokenStore {
84
86
  hasAccessToken(): boolean {
85
87
  return !!this.accessToken;
86
88
  }
89
+
90
+ setCsrfToken(token: string | null): void {
91
+ this.csrfToken = token;
92
+ }
93
+
94
+ getCsrfToken(): string | null {
95
+ return this.csrfToken;
96
+ }
97
+
98
+ setCsrfTokenFetchPromise(promise: Promise<string | null> | null): void {
99
+ this.csrfTokenFetchPromise = promise;
100
+ }
101
+
102
+ getCsrfTokenFetchPromise(): Promise<string | null> | null {
103
+ return this.csrfTokenFetchPromise;
104
+ }
105
+
106
+ clearCsrfToken(): void {
107
+ this.csrfToken = null;
108
+ this.csrfTokenFetchPromise = null;
109
+ }
87
110
  }
88
111
 
89
112
  /**
@@ -206,6 +229,10 @@ export class HttpService {
206
229
  // Get auth token (with auto-refresh)
207
230
  const authHeader = await this.getAuthHeader();
208
231
 
232
+ // Get CSRF token for state-changing requests
233
+ const isStateChangingMethod = ['POST', 'PUT', 'PATCH', 'DELETE'].includes(method);
234
+ const csrfToken = isStateChangingMethod ? await this.fetchCsrfToken() : null;
235
+
209
236
  // Determine if data is FormData using robust detection
210
237
  const isFormData = this.isFormData(data);
211
238
 
@@ -232,6 +259,11 @@ export class HttpService {
232
259
  headers['Authorization'] = authHeader;
233
260
  }
234
261
 
262
+ // Add CSRF token header for state-changing requests
263
+ if (csrfToken) {
264
+ headers['X-CSRF-Token'] = csrfToken;
265
+ }
266
+
235
267
  // Merge custom headers if provided
236
268
  if (config.headers) {
237
269
  Object.entries(config.headers).forEach(([key, value]) => {
@@ -254,6 +286,7 @@ export class HttpService {
254
286
  headers,
255
287
  body: bodyValue as BodyInit | null | undefined,
256
288
  signal: controller.signal,
289
+ credentials: 'include', // Include cookies for cross-origin requests (CSRF, session)
257
290
  });
258
291
 
259
292
  if (timeoutId) clearTimeout(timeoutId);
@@ -416,6 +449,62 @@ export class HttpService {
416
449
  return queryString ? `${base}${base.includes('?') ? '&' : '?'}${queryString}` : base;
417
450
  }
418
451
 
452
+ /**
453
+ * Fetch CSRF token from server (with deduplication)
454
+ * Required for state-changing requests (POST, PUT, PATCH, DELETE)
455
+ */
456
+ private async fetchCsrfToken(): Promise<string | null> {
457
+ // Return cached token if available
458
+ const cachedToken = this.tokenStore.getCsrfToken();
459
+ if (cachedToken) {
460
+ return cachedToken;
461
+ }
462
+
463
+ // Deduplicate concurrent CSRF token fetches
464
+ const existingPromise = this.tokenStore.getCsrfTokenFetchPromise();
465
+ if (existingPromise) {
466
+ return existingPromise;
467
+ }
468
+
469
+ const fetchPromise = (async () => {
470
+ try {
471
+ const response = await fetch(`${this.baseURL}/api/csrf-token`, {
472
+ method: 'GET',
473
+ headers: { 'Accept': 'application/json' },
474
+ credentials: 'include', // Required to receive and send cookies
475
+ signal: AbortSignal.timeout(5000),
476
+ });
477
+
478
+ if (response.ok) {
479
+ const data = await response.json() as { csrfToken?: string };
480
+ const token = data.csrfToken || null;
481
+ this.tokenStore.setCsrfToken(token);
482
+ this.logger.debug('CSRF token fetched');
483
+ return token;
484
+ }
485
+
486
+ // Also check response header for CSRF token
487
+ const headerToken = response.headers.get('X-CSRF-Token');
488
+ if (headerToken) {
489
+ this.tokenStore.setCsrfToken(headerToken);
490
+ this.logger.debug('CSRF token from header');
491
+ return headerToken;
492
+ }
493
+
494
+ this.logger.warn('Failed to fetch CSRF token:', response.status);
495
+ return null;
496
+ } catch (error) {
497
+ this.logger.warn('CSRF token fetch error:', error);
498
+ return null;
499
+ } finally {
500
+ this.tokenStore.setCsrfTokenFetchPromise(null);
501
+ }
502
+ })();
503
+
504
+ this.tokenStore.setCsrfTokenFetchPromise(fetchPromise);
505
+ return fetchPromise;
506
+ }
507
+
419
508
  /**
420
509
  * Get auth header with automatic token refresh
421
510
  */
@@ -439,6 +528,7 @@ export class HttpService {
439
528
  method: 'GET',
440
529
  headers: { 'Accept': 'application/json' },
441
530
  signal: AbortSignal.timeout(5000),
531
+ credentials: 'include', // Include cookies for cross-origin requests
442
532
  });
443
533
 
444
534
  if (response.ok) {
@@ -568,6 +658,7 @@ export class HttpService {
568
658
 
569
659
  clearTokens(): void {
570
660
  this.tokenStore.clearTokens();
661
+ this.tokenStore.clearCsrfToken();
571
662
  }
572
663
 
573
664
  getAccessToken(): string | null {
@@ -402,7 +402,7 @@ export function OxyServicesAssetsMixin<T extends typeof OxyServicesBase>(Base: T
402
402
  public async fetchAssetContent(url: string, type: 'text'): Promise<string>;
403
403
  public async fetchAssetContent(url: string, type: 'blob'): Promise<Blob>;
404
404
  public async fetchAssetContent(url: string, type: 'text' | 'blob') {
405
- const response = await fetch(url);
405
+ const response = await fetch(url, { credentials: 'include' });
406
406
  if (!response?.ok) {
407
407
  throw new Error(`Failed to fetch asset content (status ${response?.status})`);
408
408
  }
@@ -45,7 +45,7 @@
45
45
  "viewAllAccounts": "View {{count}} more",
46
46
  "status": {
47
47
  "accountSwitched": "Now using {{name}}"
48
- },
48
+ }
49
49
  },
50
50
  "signup": {
51
51
  "welcome": {
@@ -580,7 +580,7 @@
580
580
  "verifyAccount": {
581
581
  "title": "Verify Account",
582
582
  "subtitle": "Get a verified badge"
583
- },
583
+ }
584
584
  },
585
585
  "confirms": {
586
586
  "removeAvatar": "Remove your profile picture?"
@@ -594,7 +594,7 @@
594
594
  "avatarSelected": "Avatar selected",
595
595
  "avatarUpdated": "Avatar updated",
596
596
  "updateAvatarFailed": "Failed to update avatar",
597
- "noActiveSession": "No active session",
597
+ "noActiveSession": "No active session"
598
598
  }
599
599
  },
600
600
  "accountOverview": {
@@ -45,7 +45,7 @@
45
45
  "viewAllAccounts": "Ver {{count}} más",
46
46
  "status": {
47
47
  "accountSwitched": "Ahora usando {{name}}"
48
- },
48
+ }
49
49
  },
50
50
  "signup": {
51
51
  "welcome": {
@@ -91,7 +91,15 @@
91
91
  },
92
92
  "notSet": "Sin definir",
93
93
  "securityTip": "Para mayor seguridad, habilita la autenticación biométrica en Configuración de la cuenta después de crear tu cuenta.",
94
- "legalReminder": "Al crear una cuenta, aceptas nuestros Términos de servicio y Política de privacidad."
94
+ "legalReminder": "Al crear una cuenta, aceptas nuestros Términos de servicio y Política de privacidad.",
95
+ "sections": {
96
+ "account": "Información de la cuenta",
97
+ "next": "Próximos pasos"
98
+ },
99
+ "next": {
100
+ "securityTitle": "Mantén tu cuenta segura",
101
+ "legalTitle": "Todo listo"
102
+ }
95
103
  }
96
104
  },
97
105
  "profile": {
@@ -116,7 +124,8 @@
116
124
  "username": {
117
125
  "label": "Usuario",
118
126
  "placeholder": "Introduce tu usuario",
119
- "errorRequired": "Por favor, introduce tu usuario."
127
+ "errorRequired": "Por favor, introduce tu usuario.",
128
+ "helper": "Introduce tu usuario o correo electrónico"
120
129
  },
121
130
  "verify": {
122
131
  "title": "Verificar código",
@@ -180,14 +189,12 @@
180
189
  },
181
190
  "privacySettings": {
182
191
  "title": "Ajustes de privacidad",
183
- "subtitle": "Controla quién puede ver tu perfil",
184
- "coming": "¡Los ajustes de privacidad estarán disponibles pronto!"
192
+ "subtitle": "Controla quién puede ver tu perfil"
185
193
  },
186
194
  "verifyAccount": {
187
195
  "title": "Verificar cuenta",
188
- "subtitle": "Obtén una insignia verificada",
189
- "coming": "¡La verificación de cuenta estará disponible pronto!"
190
- },
196
+ "subtitle": "Obtén una insignia verificada"
197
+ }
191
198
  },
192
199
  "confirms": {
193
200
  "removeAvatar": "¿Eliminar tu foto de perfil?"
@@ -201,7 +208,7 @@
201
208
  "avatarSelected": "Avatar seleccionado",
202
209
  "avatarUpdated": "Avatar actualizado",
203
210
  "updateAvatarFailed": "Error al actualizar el avatar",
204
- "noActiveSession": "No hay sesión activa",
211
+ "noActiveSession": "No hay sesión activa"
205
212
  }
206
213
  },
207
214
  "common": {
@@ -289,23 +296,27 @@
289
296
  "subtitle": "Métodos de pago y facturas",
290
297
  "coming": "¡La gestión de facturación estará disponible pronto!"
291
298
  },
292
- "accountSwitcher": {
293
- "titleShow": "Mostrar conmutador de cuentas",
294
- "titleHide": "Ocultar conmutador de cuentas",
295
- "subtitleHide": "Ocultar el conmutador de cuentas",
296
- "subtitleSwitchBetween": "Cambiar entre {{count}} cuentas",
297
- "subtitleLoading": "Cargando cuentas adicionales...",
298
- "subtitleManageMultiple": "Gestionar varias cuentas"
299
- },
300
299
  "downloadData": {
301
300
  "title": "Descargar mis datos",
302
301
  "subtitle": "Exporta la información de tu cuenta",
303
- "coming": "¡La descarga de datos estará disponible pronto!"
302
+ "confirmTitle": "Descargar datos de la cuenta",
303
+ "confirmMessage": "Elige el formato para exportar los datos de tu cuenta:",
304
+ "downloading": "Preparando descarga...",
305
+ "success": "Datos descargados correctamente",
306
+ "error": "Error al descargar los datos"
304
307
  },
305
308
  "deleteAccount": {
306
309
  "title": "Eliminar cuenta",
307
310
  "subtitle": "Elimina tu cuenta permanentemente",
308
- "coming": "¡La eliminación de cuenta estará disponible pronto!"
311
+ "confirmTitle": "Eliminar cuenta",
312
+ "confirmMessage": "Esta acción no se puede deshacer. Esto eliminará permanentemente tu cuenta y todos los datos asociados.\n\n¿Seguro que quieres eliminar tu cuenta?",
313
+ "finalConfirm": "Esta es tu advertencia final. Tu cuenta será eliminada permanentemente y no se podrá recuperar. Escribe \"{{username}}\" para confirmar.",
314
+ "confirm": "Eliminar para siempre",
315
+ "passwordRequired": "Se requiere confirmación de contraseña. Por favor, usa un modal con entrada de contraseña para completar la eliminación de la cuenta.",
316
+ "missingFields": "Se requiere contraseña y confirmación",
317
+ "confirmMismatch": "El texto de confirmación no coincide con el usuario",
318
+ "success": "Cuenta eliminada correctamente",
319
+ "error": "Error al eliminar la cuenta"
309
320
  },
310
321
  "preferences": {
311
322
  "title": "Preferencias de la cuenta",
@@ -329,6 +340,30 @@
329
340
  "signOut": {
330
341
  "title": "Cerrar sesión",
331
342
  "subtitle": "Cierra sesión en tu cuenta actual"
343
+ },
344
+ "history": {
345
+ "title": "Historial",
346
+ "subtitle": "Ver y gestionar tu historial de búsqueda"
347
+ },
348
+ "saves": {
349
+ "title": "Guardados y colecciones",
350
+ "subtitle": "Ver tus elementos guardados y colecciones"
351
+ },
352
+ "searchSettings": {
353
+ "title": "Configuración de búsqueda",
354
+ "subtitle": "SafeSearch y personalización"
355
+ },
356
+ "language": {
357
+ "title": "Idioma",
358
+ "subtitle": "Elige tu idioma preferido"
359
+ },
360
+ "privacyPolicy": {
361
+ "title": "Política de privacidad",
362
+ "subtitle": "Cómo manejamos tus datos"
363
+ },
364
+ "termsOfService": {
365
+ "title": "Términos de servicio",
366
+ "subtitle": "Términos y condiciones de uso"
332
367
  }
333
368
  },
334
369
  "manageComing": "¡La gestión de tu cuenta Oxy estará disponible pronto!",
@@ -719,5 +754,191 @@
719
754
  "enter": "Entrar",
720
755
  "continue": "Continuar"
721
756
  }
757
+ },
758
+ "history": {
759
+ "title": "Historial",
760
+ "actions": "Acciones",
761
+ "recent": "Historial reciente",
762
+ "loading": "Cargando historial...",
763
+ "empty": "Aún no hay historial",
764
+ "justNow": "Justo ahora",
765
+ "minutesAgo": "minutos atrás",
766
+ "hoursAgo": "horas atrás",
767
+ "daysAgo": "días atrás",
768
+ "deleteLast15Minutes": {
769
+ "title": "Eliminar últimos 15 minutos",
770
+ "subtitle": "Eliminar entradas recientes del historial",
771
+ "confirm": "¿Eliminar los últimos 15 minutos del historial?",
772
+ "success": "Últimos 15 minutos eliminados",
773
+ "error": "Error al eliminar el historial"
774
+ },
775
+ "clearAll": {
776
+ "title": "Borrar todo el historial",
777
+ "subtitle": "Eliminar todas las entradas del historial",
778
+ "confirm": "¿Borrar todo el historial? Esto no se puede deshacer.",
779
+ "success": "Historial borrado",
780
+ "error": "Error al borrar el historial"
781
+ }
782
+ },
783
+ "saves": {
784
+ "title": "Guardados y colecciones",
785
+ "tabs": {
786
+ "saves": "Guardados",
787
+ "collections": "Colecciones"
788
+ },
789
+ "loading": "Cargando...",
790
+ "empty": "Aún no hay elementos guardados",
791
+ "noCollections": "Aún no hay colecciones",
792
+ "savedItems": "Elementos guardados",
793
+ "collections": "Colecciones",
794
+ "loadError": "Error al cargar elementos guardados"
795
+ },
796
+ "searchSettings": {
797
+ "title": "Configuración de búsqueda",
798
+ "safeSearch": {
799
+ "title": "SafeSearch",
800
+ "label": "Activar SafeSearch",
801
+ "description": "Filtrar contenido explícito de los resultados de búsqueda",
802
+ "updated": "Configuración de SafeSearch actualizada",
803
+ "error": "Error al actualizar SafeSearch"
804
+ },
805
+ "personalization": {
806
+ "title": "Personalización de búsqueda",
807
+ "label": "Búsqueda personalizada",
808
+ "description": "Usa tu actividad para mejorar los resultados de búsqueda",
809
+ "updated": "Personalización de búsqueda actualizada",
810
+ "error": "Error al actualizar la personalización"
811
+ }
812
+ },
813
+ "privacySettings": {
814
+ "title": "Configuración de privacidad",
815
+ "loadError": "Error al cargar la configuración de privacidad",
816
+ "updated": "Configuración de privacidad actualizada",
817
+ "updateError": "Error al actualizar la configuración de privacidad",
818
+ "sections": {
819
+ "account": "PRIVACIDAD DE LA CUENTA",
820
+ "interactions": "INTERACCIONES",
821
+ "activity": "ACTIVIDAD Y DATOS",
822
+ "content": "CONTENIDO Y SEGURIDAD"
823
+ },
824
+ "isPrivateAccount": "Cuenta privada",
825
+ "isPrivateAccountDesc": "Solo los seguidores aprobados pueden ver tus publicaciones",
826
+ "profileVisibility": "Visibilidad del perfil",
827
+ "profileVisibilityDesc": "Controla quién puede ver tu perfil",
828
+ "hideOnlineStatus": "Ocultar estado en línea",
829
+ "hideOnlineStatusDesc": "No mostrar cuando estás en línea",
830
+ "hideLastSeen": "Ocultar última vez visto",
831
+ "hideLastSeenDesc": "No mostrar cuándo estuviste activo por última vez",
832
+ "allowTagging": "Permitir etiquetado",
833
+ "allowTaggingDesc": "Permite que otros te etiqueten en publicaciones",
834
+ "allowMentions": "Permitir menciones",
835
+ "allowMentionsDesc": "Permite que otros te mencionen",
836
+ "allowDirectMessages": "Permitir mensajes directos",
837
+ "allowDirectMessagesDesc": "Permite que otros te envíen mensajes directos",
838
+ "hideReadReceipts": "Ocultar confirmaciones de lectura",
839
+ "hideReadReceiptsDesc": "No mostrar confirmaciones de lectura en mensajes",
840
+ "showActivity": "Mostrar estado de actividad",
841
+ "showActivityDesc": "Mostrar tu actividad en tu perfil",
842
+ "dataSharing": "Compartir datos",
843
+ "dataSharingDesc": "Permitir compartir datos para personalización",
844
+ "locationSharing": "Compartir ubicación",
845
+ "locationSharingDesc": "Compartir tu ubicación",
846
+ "analyticsSharing": "Compartir análisis",
847
+ "analyticsSharingDesc": "Permitir recopilación de datos de análisis",
848
+ "sensitiveContent": "Mostrar contenido sensible",
849
+ "sensitiveContentDesc": "Permitir contenido sensible o explícito",
850
+ "autoFilter": "Filtro automático",
851
+ "autoFilterDesc": "Filtrar automáticamente contenido inapropiado",
852
+ "muteKeywords": "Silenciar palabras clave",
853
+ "muteKeywordsDesc": "Ocultar publicaciones que contengan palabras clave silenciadas",
854
+ "blockScreenshots": "Bloquear capturas de pantalla",
855
+ "blockScreenshotsDesc": "Evitar capturas de pantalla de tu contenido"
856
+ },
857
+ "accountVerification": {
858
+ "title": "Verificación de cuenta",
859
+ "description": "Solicita una insignia verificada para tu cuenta. Las cuentas verificadas ayudan a establecer autenticidad y credibilidad.",
860
+ "sections": {
861
+ "request": "SOLICITUD DE VERIFICACIÓN"
862
+ },
863
+ "reasonLabel": "Motivo de la verificación *",
864
+ "reasonPlaceholder": "Explica por qué necesitas una insignia verificada (p. ej., figura pública, marca, organización)",
865
+ "reasonRequired": "Por favor, proporciona un motivo para la verificación",
866
+ "evidenceLabel": "Evidencia (Opcional)",
867
+ "evidencePlaceholder": "Proporciona documentación de respaldo o enlaces (p. ej., sitio web oficial, perfiles de redes sociales)",
868
+ "submit": "Enviar solicitud",
869
+ "submitError": "Error al enviar la solicitud de verificación",
870
+ "successTitle": "Solicitud enviada",
871
+ "successMessage": "Tu solicitud de verificación ha sido enviada. ID de solicitud: {{requestId}}",
872
+ "ok": "OK",
873
+ "error": "Servicio no disponible",
874
+ "note": "Nota: Las solicitudes de verificación se revisan manualmente y pueden tardar varios días. Te notificaremos cuando tu solicitud haya sido revisada."
875
+ },
876
+ "help": {
877
+ "title": "Ayuda y soporte",
878
+ "options": "Obtener ayuda",
879
+ "resources": "Recursos",
880
+ "contactError": "Error al abrir el cliente de correo",
881
+ "reportError": "Error al abrir el cliente de correo",
882
+ "linkError": "Error al abrir el enlace",
883
+ "faqComing": "FAQ próximamente",
884
+ "faq": {
885
+ "title": "Preguntas frecuentes",
886
+ "subtitle": "Encuentra respuestas a preguntas comunes"
887
+ },
888
+ "contact": {
889
+ "title": "Contactar con soporte",
890
+ "subtitle": "Obtén ayuda de nuestro equipo de soporte"
891
+ },
892
+ "reportBug": {
893
+ "title": "Reportar un error",
894
+ "subtitle": "Ayúdanos a mejorar reportando problemas"
895
+ },
896
+ "documentation": {
897
+ "title": "Documentación",
898
+ "subtitle": "Guías de usuario y tutoriales"
899
+ },
900
+ "community": {
901
+ "title": "Comunidad",
902
+ "subtitle": "Únete a nuestra comunidad"
903
+ },
904
+ "developersPortal": {
905
+ "title": "Portal de desarrolladores",
906
+ "subtitle": "Documentación de API y recursos para desarrolladores"
907
+ }
908
+ },
909
+ "legal": {
910
+ "title": "Documentos legales",
911
+ "documents": "Documentos",
912
+ "policies": "Políticas y directrices",
913
+ "opening": "Abriendo documento...",
914
+ "openError": "Error al abrir el documento",
915
+ "privacyPolicy": {
916
+ "title": "Política de privacidad",
917
+ "subtitle": "Cómo manejamos tus datos"
918
+ },
919
+ "termsOfService": {
920
+ "title": "Términos de servicio",
921
+ "subtitle": "Términos y condiciones de uso"
922
+ },
923
+ "communityGuidelines": {
924
+ "title": "Directrices de la comunidad",
925
+ "subtitle": "Reglas y expectativas para nuestra comunidad"
926
+ },
927
+ "dataRetention": {
928
+ "title": "Política de retención de datos",
929
+ "subtitle": "Cuánto tiempo conservamos tus datos"
930
+ },
931
+ "contentModeration": {
932
+ "title": "Política de moderación de contenido",
933
+ "subtitle": "Cómo moderamos el contenido"
934
+ },
935
+ "childSafety": {
936
+ "title": "Política de seguridad infantil",
937
+ "subtitle": "Protegiendo a los menores en nuestra plataforma"
938
+ },
939
+ "cookiePolicy": {
940
+ "title": "Política de cookies",
941
+ "subtitle": "Cómo usamos cookies y tecnologías similares"
942
+ }
722
943
  }
723
944
  }
@@ -191,7 +191,7 @@ const Avatar: React.FC<AvatarProps> = ({
191
191
  styles.text,
192
192
  {
193
193
  fontSize,
194
- fontFamily: fontFamilies.phuduBold,
194
+ fontFamily: fontFamilies.interBold,
195
195
  color: textColor,
196
196
  textAlign: 'center' as const,
197
197
  lineHeight: size, // Match line height to size for perfect vertical centering
@@ -212,7 +212,7 @@ const FollowButton: React.FC<FollowButtonProps> = ({
212
212
  // Get base text style (without state-specific colors since they're animated)
213
213
  const getBaseTextStyle = (): StyleProp<TextStyle> => {
214
214
  const baseTextStyle = {
215
- fontFamily: fontFamilies.phuduSemiBold,
215
+ fontFamily: fontFamilies.interSemiBold,
216
216
  fontWeight: '600' as const,
217
217
  };
218
218
 
@@ -4,25 +4,25 @@ import { Platform } from 'react-native';
4
4
  import * as Font from 'expo-font';
5
5
 
6
6
  /**
7
- * Get the Phudu font sources for both native and web environments
7
+ * Get the Inter font sources for both native and web environments
8
8
  * This is specifically designed to work when distributed as an npm package
9
9
  */
10
- const getPhuduFonts = () => {
10
+ const getInterFonts = () => {
11
11
  try {
12
12
  // For both development and when used as a package
13
13
  // Load all static font weights
14
14
  return {
15
- 'Phudu-Light': require('../../assets/fonts/Phudu/Phudu-Light.ttf'),
16
- 'Phudu-Regular': require('../../assets/fonts/Phudu/Phudu-Regular.ttf'),
17
- 'Phudu-Medium': require('../../assets/fonts/Phudu/Phudu-Medium.ttf'),
18
- 'Phudu-SemiBold': require('../../assets/fonts/Phudu/Phudu-SemiBold.ttf'),
19
- 'Phudu-Bold': require('../../assets/fonts/Phudu/Phudu-Bold.ttf'),
20
- 'Phudu-ExtraBold': require('../../assets/fonts/Phudu/Phudu-ExtraBold.ttf'),
21
- 'Phudu-Black': require('../../assets/fonts/Phudu/Phudu-Black.ttf'),
15
+ 'Inter-Light': require('../../assets/fonts/Inter/Inter_18pt-Light.ttf'),
16
+ 'Inter-Regular': require('../../assets/fonts/Inter/Inter_18pt-Regular.ttf'),
17
+ 'Inter-Medium': require('../../assets/fonts/Inter/Inter_18pt-Medium.ttf'),
18
+ 'Inter-SemiBold': require('../../assets/fonts/Inter/Inter_18pt-SemiBold.ttf'),
19
+ 'Inter-Bold': require('../../assets/fonts/Inter/Inter_18pt-Bold.ttf'),
20
+ 'Inter-ExtraBold': require('../../assets/fonts/Inter/Inter_18pt-ExtraBold.ttf'),
21
+ 'Inter-Black': require('../../assets/fonts/Inter/Inter_18pt-Black.ttf'),
22
22
  };
23
23
  } catch (error) {
24
24
  if (__DEV__) {
25
- console.warn('Failed to load Phudu fonts:', error);
25
+ console.warn('Failed to load Inter fonts:', error);
26
26
  }
27
27
  return null;
28
28
  }
@@ -44,14 +44,14 @@ export const FontLoader = ({
44
44
  const loadFonts = async () => {
45
45
  try {
46
46
  // Get all the font weights
47
- const phuduFonts = getPhuduFonts();
47
+ const interFonts = getInterFonts();
48
48
 
49
- if (!phuduFonts) {
50
- throw new Error('Phudu font files not found');
49
+ if (!interFonts) {
50
+ throw new Error('Inter font files not found');
51
51
  }
52
52
 
53
- // Load all the static Phudu fonts with their respective weights
54
- await Font.loadAsync(phuduFonts);
53
+ // Load all the static Inter fonts with their respective weights
54
+ await Font.loadAsync(interFonts);
55
55
 
56
56
  setFontState('loaded');
57
57
  } catch (error) {
@@ -82,10 +82,10 @@ export const FontLoader = ({
82
82
  */
83
83
  export const setupFonts = async () => {
84
84
  try {
85
- const phuduFonts = getPhuduFonts();
85
+ const interFonts = getInterFonts();
86
86
 
87
- if (!phuduFonts) {
88
- throw new Error('Phudu font files not found');
87
+ if (!interFonts) {
88
+ throw new Error('Inter font files not found');
89
89
  }
90
90
 
91
91
  if (Platform.OS === 'web') {
@@ -97,44 +97,44 @@ export const setupFonts = async () => {
97
97
  // Define @font-face rules for each font weight
98
98
  const fontFaceRules = `
99
99
  @font-face {
100
- font-family: 'Phudu';
101
- src: url(${phuduFonts['Phudu-Light']}) format('truetype');
100
+ font-family: 'Inter';
101
+ src: url(${interFonts['Inter-Light']}) format('truetype');
102
102
  font-weight: 300;
103
103
  font-style: normal;
104
104
  }
105
105
  @font-face {
106
- font-family: 'Phudu';
107
- src: url(${phuduFonts['Phudu-Regular']}) format('truetype');
106
+ font-family: 'Inter';
107
+ src: url(${interFonts['Inter-Regular']}) format('truetype');
108
108
  font-weight: 400;
109
109
  font-style: normal;
110
110
  }
111
111
  @font-face {
112
- font-family: 'Phudu';
113
- src: url(${phuduFonts['Phudu-Medium']}) format('truetype');
112
+ font-family: 'Inter';
113
+ src: url(${interFonts['Inter-Medium']}) format('truetype');
114
114
  font-weight: 500;
115
115
  font-style: normal;
116
116
  }
117
117
  @font-face {
118
- font-family: 'Phudu';
119
- src: url(${phuduFonts['Phudu-SemiBold']}) format('truetype');
118
+ font-family: 'Inter';
119
+ src: url(${interFonts['Inter-SemiBold']}) format('truetype');
120
120
  font-weight: 600;
121
121
  font-style: normal;
122
122
  }
123
123
  @font-face {
124
- font-family: 'Phudu';
125
- src: url(${phuduFonts['Phudu-Bold']}) format('truetype');
124
+ font-family: 'Inter';
125
+ src: url(${interFonts['Inter-Bold']}) format('truetype');
126
126
  font-weight: 700;
127
127
  font-style: normal;
128
128
  }
129
129
  @font-face {
130
- font-family: 'Phudu';
131
- src: url(${phuduFonts['Phudu-ExtraBold']}) format('truetype');
130
+ font-family: 'Inter';
131
+ src: url(${interFonts['Inter-ExtraBold']}) format('truetype');
132
132
  font-weight: 800;
133
133
  font-style: normal;
134
134
  }
135
135
  @font-face {
136
- font-family: 'Phudu';
137
- src: url(${phuduFonts['Phudu-Black']}) format('truetype');
136
+ font-family: 'Inter';
137
+ src: url(${interFonts['Inter-Black']}) format('truetype');
138
138
  font-weight: 900;
139
139
  font-style: normal;
140
140
  }
@@ -143,12 +143,12 @@ export const setupFonts = async () => {
143
143
  style.textContent = fontFaceRules;
144
144
  document.head.appendChild(style);
145
145
  if (__DEV__) {
146
- console.info('All Phudu web fonts have been dynamically loaded');
146
+ console.info('All Inter web fonts have been dynamically loaded');
147
147
  }
148
148
  }
149
149
  } else {
150
150
  // Attempt to load the fonts anyway (this works if the consumer has linked the assets)
151
- await Font.loadAsync(phuduFonts);
151
+ await Font.loadAsync(interFonts);
152
152
  }
153
153
 
154
154
  return true;