@oxyhq/services 5.5.9 → 5.6.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 (393) hide show
  1. package/README.md +16 -2
  2. package/lib/commonjs/core/index.js +69 -82
  3. package/lib/commonjs/core/index.js.map +1 -1
  4. package/lib/commonjs/index.js +24 -183
  5. package/lib/commonjs/index.js.map +1 -1
  6. package/lib/commonjs/node/index.js +0 -2
  7. package/lib/commonjs/node/index.js.map +1 -1
  8. package/lib/commonjs/ui/components/FollowButton.js +100 -229
  9. package/lib/commonjs/ui/components/FollowButton.js.map +1 -1
  10. package/lib/commonjs/ui/components/OxyPayButton.js +131 -0
  11. package/lib/commonjs/ui/components/OxyPayButton.js.map +1 -0
  12. package/lib/commonjs/ui/components/OxyProvider.js +41 -198
  13. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  14. package/lib/commonjs/ui/components/OxySignInButton.js +15 -2
  15. package/lib/commonjs/ui/components/OxySignInButton.js.map +1 -1
  16. package/lib/commonjs/ui/components/icon/FAIRWalletIcon.js +66 -0
  17. package/lib/commonjs/ui/components/icon/FAIRWalletIcon.js.map +1 -0
  18. package/lib/commonjs/ui/components/icon/index.js +7 -0
  19. package/lib/commonjs/ui/components/icon/index.js.map +1 -1
  20. package/lib/commonjs/ui/components/index.js +7 -0
  21. package/lib/commonjs/ui/components/index.js.map +1 -1
  22. package/lib/commonjs/ui/components/internal/GroupedPillButtons.js +14 -7
  23. package/lib/commonjs/ui/components/internal/GroupedPillButtons.js.map +1 -1
  24. package/lib/commonjs/ui/components/internal/PinInput.js +108 -0
  25. package/lib/commonjs/ui/components/internal/PinInput.js.map +1 -0
  26. package/lib/commonjs/ui/components/internal/TextField.js +20 -0
  27. package/lib/commonjs/ui/components/internal/TextField.js.map +1 -1
  28. package/lib/commonjs/ui/context/OxyContext.js +26 -36
  29. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  30. package/lib/commonjs/ui/hooks/index.js +2 -15
  31. package/lib/commonjs/ui/hooks/index.js.map +1 -1
  32. package/lib/commonjs/ui/hooks/useFollow.js +52 -136
  33. package/lib/commonjs/ui/hooks/useFollow.js.map +1 -1
  34. package/lib/commonjs/ui/hooks/useSessionSocket.js +52 -0
  35. package/lib/commonjs/ui/hooks/useSessionSocket.js.map +1 -0
  36. package/lib/commonjs/ui/index.js +8 -191
  37. package/lib/commonjs/ui/index.js.map +1 -1
  38. package/lib/commonjs/ui/navigation/OxyRouter.js +52 -60
  39. package/lib/commonjs/ui/navigation/OxyRouter.js.map +1 -1
  40. package/lib/commonjs/ui/screens/AccountCenterScreen.js +18 -30
  41. package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
  42. package/lib/commonjs/ui/screens/AccountOverviewScreen.js +4 -22
  43. package/lib/commonjs/ui/screens/AccountOverviewScreen.js.map +1 -1
  44. package/lib/commonjs/ui/screens/AccountSettingsScreen.js +6 -14
  45. package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
  46. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +37 -66
  47. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
  48. package/lib/commonjs/ui/screens/AppInfoScreen.js +21 -44
  49. package/lib/commonjs/ui/screens/AppInfoScreen.js.map +1 -1
  50. package/lib/commonjs/ui/screens/FeedbackScreen.js +44 -23
  51. package/lib/commonjs/ui/screens/FeedbackScreen.js.map +1 -1
  52. package/lib/commonjs/ui/screens/FileManagementScreen.js +59 -78
  53. package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
  54. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js +1588 -0
  55. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js.map +1 -0
  56. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js +22 -36
  57. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
  58. package/lib/commonjs/ui/screens/RecoverAccountScreen.js +269 -0
  59. package/lib/commonjs/ui/screens/RecoverAccountScreen.js.map +1 -0
  60. package/lib/commonjs/ui/screens/SessionManagementScreen.js +47 -69
  61. package/lib/commonjs/ui/screens/SessionManagementScreen.js.map +1 -1
  62. package/lib/commonjs/ui/screens/SignInScreen.js +99 -333
  63. package/lib/commonjs/ui/screens/SignInScreen.js.map +1 -1
  64. package/lib/commonjs/ui/screens/SignUpScreen.js +136 -340
  65. package/lib/commonjs/ui/screens/SignUpScreen.js.map +1 -1
  66. package/lib/commonjs/ui/screens/internal/SignInPasswordStep.js +192 -0
  67. package/lib/commonjs/ui/screens/internal/SignInPasswordStep.js.map +1 -0
  68. package/lib/commonjs/ui/screens/internal/SignInUsernameStep.js +135 -0
  69. package/lib/commonjs/ui/screens/internal/SignInUsernameStep.js.map +1 -0
  70. package/lib/commonjs/ui/screens/internal/SignUpIdentityStep.js +108 -0
  71. package/lib/commonjs/ui/screens/internal/SignUpIdentityStep.js.map +1 -0
  72. package/lib/commonjs/ui/screens/internal/SignUpSecurityStep.js +126 -0
  73. package/lib/commonjs/ui/screens/internal/SignUpSecurityStep.js.map +1 -0
  74. package/lib/commonjs/ui/screens/internal/SignUpSummaryStep.js +84 -0
  75. package/lib/commonjs/ui/screens/internal/SignUpSummaryStep.js.map +1 -0
  76. package/lib/commonjs/ui/screens/internal/SignUpWelcomeStep.js +59 -0
  77. package/lib/commonjs/ui/screens/internal/SignUpWelcomeStep.js.map +1 -0
  78. package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js +15 -2
  79. package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js.map +1 -1
  80. package/lib/commonjs/ui/stores/authStore.js +31 -0
  81. package/lib/commonjs/ui/stores/authStore.js.map +1 -0
  82. package/lib/commonjs/ui/stores/followStore.js +124 -0
  83. package/lib/commonjs/ui/stores/followStore.js.map +1 -0
  84. package/lib/commonjs/ui/styles/index.js +0 -11
  85. package/lib/commonjs/ui/styles/index.js.map +1 -1
  86. package/lib/commonjs/ui/utils/confirmAction.js +28 -0
  87. package/lib/commonjs/ui/utils/confirmAction.js.map +1 -0
  88. package/lib/module/core/index.js +69 -81
  89. package/lib/module/core/index.js.map +1 -1
  90. package/lib/module/index.js +14 -17
  91. package/lib/module/index.js.map +1 -1
  92. package/lib/module/node/index.js +0 -3
  93. package/lib/module/node/index.js.map +1 -1
  94. package/lib/module/ui/components/FollowButton.js +100 -229
  95. package/lib/module/ui/components/FollowButton.js.map +1 -1
  96. package/lib/module/ui/components/OxyPayButton.js +125 -0
  97. package/lib/module/ui/components/OxyPayButton.js.map +1 -0
  98. package/lib/module/ui/components/OxyProvider.js +42 -199
  99. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  100. package/lib/module/ui/components/OxySignInButton.js +15 -2
  101. package/lib/module/ui/components/OxySignInButton.js.map +1 -1
  102. package/lib/module/ui/components/icon/FAIRWalletIcon.js +60 -0
  103. package/lib/module/ui/components/icon/FAIRWalletIcon.js.map +1 -0
  104. package/lib/module/ui/components/icon/index.js +1 -0
  105. package/lib/module/ui/components/icon/index.js.map +1 -1
  106. package/lib/module/ui/components/index.js +1 -0
  107. package/lib/module/ui/components/index.js.map +1 -1
  108. package/lib/module/ui/components/internal/GroupedPillButtons.js +15 -8
  109. package/lib/module/ui/components/internal/GroupedPillButtons.js.map +1 -1
  110. package/lib/module/ui/components/internal/PinInput.js +103 -0
  111. package/lib/module/ui/components/internal/PinInput.js.map +1 -0
  112. package/lib/module/ui/components/internal/TextField.js +20 -0
  113. package/lib/module/ui/components/internal/TextField.js.map +1 -1
  114. package/lib/module/ui/context/OxyContext.js +26 -36
  115. package/lib/module/ui/context/OxyContext.js.map +1 -1
  116. package/lib/module/ui/hooks/index.js +1 -2
  117. package/lib/module/ui/hooks/index.js.map +1 -1
  118. package/lib/module/ui/hooks/useFollow.js +52 -137
  119. package/lib/module/ui/hooks/useFollow.js.map +1 -1
  120. package/lib/module/ui/hooks/useSessionSocket.js +47 -0
  121. package/lib/module/ui/hooks/useSessionSocket.js.map +1 -0
  122. package/lib/module/ui/index.js +2 -13
  123. package/lib/module/ui/index.js.map +1 -1
  124. package/lib/module/ui/navigation/OxyRouter.js +53 -61
  125. package/lib/module/ui/navigation/OxyRouter.js.map +1 -1
  126. package/lib/module/ui/screens/AccountCenterScreen.js +6 -18
  127. package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
  128. package/lib/module/ui/screens/AccountOverviewScreen.js +5 -23
  129. package/lib/module/ui/screens/AccountOverviewScreen.js.map +1 -1
  130. package/lib/module/ui/screens/AccountSettingsScreen.js +7 -15
  131. package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
  132. package/lib/module/ui/screens/AccountSwitcherScreen.js +38 -67
  133. package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
  134. package/lib/module/ui/screens/AppInfoScreen.js +22 -45
  135. package/lib/module/ui/screens/AppInfoScreen.js.map +1 -1
  136. package/lib/module/ui/screens/FeedbackScreen.js +44 -23
  137. package/lib/module/ui/screens/FeedbackScreen.js.map +1 -1
  138. package/lib/module/ui/screens/FileManagementScreen.js +59 -78
  139. package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
  140. package/lib/module/ui/screens/PaymentGatewayScreen.js +1583 -0
  141. package/lib/module/ui/screens/PaymentGatewayScreen.js.map +1 -0
  142. package/lib/module/ui/screens/PremiumSubscriptionScreen.js +23 -37
  143. package/lib/module/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
  144. package/lib/module/ui/screens/RecoverAccountScreen.js +263 -0
  145. package/lib/module/ui/screens/RecoverAccountScreen.js.map +1 -0
  146. package/lib/module/ui/screens/SessionManagementScreen.js +47 -69
  147. package/lib/module/ui/screens/SessionManagementScreen.js.map +1 -1
  148. package/lib/module/ui/screens/SignInScreen.js +100 -334
  149. package/lib/module/ui/screens/SignInScreen.js.map +1 -1
  150. package/lib/module/ui/screens/SignUpScreen.js +137 -341
  151. package/lib/module/ui/screens/SignUpScreen.js.map +1 -1
  152. package/lib/module/ui/screens/internal/SignInPasswordStep.js +186 -0
  153. package/lib/module/ui/screens/internal/SignInPasswordStep.js.map +1 -0
  154. package/lib/module/ui/screens/internal/SignInUsernameStep.js +129 -0
  155. package/lib/module/ui/screens/internal/SignInUsernameStep.js.map +1 -0
  156. package/lib/module/ui/screens/internal/SignUpIdentityStep.js +102 -0
  157. package/lib/module/ui/screens/internal/SignUpIdentityStep.js.map +1 -0
  158. package/lib/module/ui/screens/internal/SignUpSecurityStep.js +120 -0
  159. package/lib/module/ui/screens/internal/SignUpSecurityStep.js.map +1 -0
  160. package/lib/module/ui/screens/internal/SignUpSummaryStep.js +79 -0
  161. package/lib/module/ui/screens/internal/SignUpSummaryStep.js.map +1 -0
  162. package/lib/module/ui/screens/internal/SignUpWelcomeStep.js +54 -0
  163. package/lib/module/ui/screens/internal/SignUpWelcomeStep.js.map +1 -0
  164. package/lib/module/ui/screens/karma/KarmaRewardsScreen.js +16 -3
  165. package/lib/module/ui/screens/karma/KarmaRewardsScreen.js.map +1 -1
  166. package/lib/module/ui/stores/authStore.js +27 -0
  167. package/lib/module/ui/stores/authStore.js.map +1 -0
  168. package/lib/module/ui/stores/followStore.js +120 -0
  169. package/lib/module/ui/stores/followStore.js.map +1 -0
  170. package/lib/module/ui/styles/index.js +0 -1
  171. package/lib/module/ui/styles/index.js.map +1 -1
  172. package/lib/module/ui/utils/confirmAction.js +25 -0
  173. package/lib/module/ui/utils/confirmAction.js.map +1 -0
  174. package/lib/typescript/core/index.d.ts +28 -10
  175. package/lib/typescript/core/index.d.ts.map +1 -1
  176. package/lib/typescript/index.d.ts +5 -4
  177. package/lib/typescript/index.d.ts.map +1 -1
  178. package/lib/typescript/models/secureSession.d.ts +0 -1
  179. package/lib/typescript/models/secureSession.d.ts.map +1 -1
  180. package/lib/typescript/node/index.d.ts +0 -1
  181. package/lib/typescript/node/index.d.ts.map +1 -1
  182. package/lib/typescript/ui/components/FollowButton.d.ts +1 -77
  183. package/lib/typescript/ui/components/FollowButton.d.ts.map +1 -1
  184. package/lib/typescript/ui/components/OxyPayButton.d.ts +29 -0
  185. package/lib/typescript/ui/components/OxyPayButton.d.ts.map +1 -0
  186. package/lib/typescript/ui/components/OxyProvider.d.ts.map +1 -1
  187. package/lib/typescript/ui/components/OxySignInButton.d.ts.map +1 -1
  188. package/lib/typescript/ui/components/icon/FAIRWalletIcon.d.ts +8 -0
  189. package/lib/typescript/ui/components/icon/FAIRWalletIcon.d.ts.map +1 -0
  190. package/lib/typescript/ui/components/icon/index.d.ts +1 -0
  191. package/lib/typescript/ui/components/icon/index.d.ts.map +1 -1
  192. package/lib/typescript/ui/components/index.d.ts +1 -0
  193. package/lib/typescript/ui/components/index.d.ts.map +1 -1
  194. package/lib/typescript/ui/components/internal/GroupedPillButtons.d.ts.map +1 -1
  195. package/lib/typescript/ui/components/internal/PinInput.d.ts +12 -0
  196. package/lib/typescript/ui/components/internal/PinInput.d.ts.map +1 -0
  197. package/lib/typescript/ui/components/internal/TextField.d.ts +1 -0
  198. package/lib/typescript/ui/components/internal/TextField.d.ts.map +1 -1
  199. package/lib/typescript/ui/context/OxyContext.d.ts +0 -2
  200. package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -1
  201. package/lib/typescript/ui/hooks/index.d.ts +1 -2
  202. package/lib/typescript/ui/hooks/index.d.ts.map +1 -1
  203. package/lib/typescript/ui/hooks/useFollow.d.ts +14 -15
  204. package/lib/typescript/ui/hooks/useFollow.d.ts.map +1 -1
  205. package/lib/typescript/ui/hooks/useSessionSocket.d.ts +11 -0
  206. package/lib/typescript/ui/hooks/useSessionSocket.d.ts.map +1 -0
  207. package/lib/typescript/ui/index.d.ts +2 -5
  208. package/lib/typescript/ui/index.d.ts.map +1 -1
  209. package/lib/typescript/ui/navigation/OxyRouter.d.ts.map +1 -1
  210. package/lib/typescript/ui/navigation/types.d.ts +5 -23
  211. package/lib/typescript/ui/navigation/types.d.ts.map +1 -1
  212. package/lib/typescript/ui/screens/AccountCenterScreen.d.ts.map +1 -1
  213. package/lib/typescript/ui/screens/AccountOverviewScreen.d.ts.map +1 -1
  214. package/lib/typescript/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
  215. package/lib/typescript/ui/screens/AccountSwitcherScreen.d.ts.map +1 -1
  216. package/lib/typescript/ui/screens/AppInfoScreen.d.ts.map +1 -1
  217. package/lib/typescript/ui/screens/FeedbackScreen.d.ts.map +1 -1
  218. package/lib/typescript/ui/screens/FileManagementScreen.d.ts.map +1 -1
  219. package/lib/typescript/ui/screens/PaymentGatewayScreen.d.ts +27 -0
  220. package/lib/typescript/ui/screens/PaymentGatewayScreen.d.ts.map +1 -0
  221. package/lib/typescript/ui/screens/PremiumSubscriptionScreen.d.ts.map +1 -1
  222. package/lib/typescript/ui/screens/RecoverAccountScreen.d.ts +8 -0
  223. package/lib/typescript/ui/screens/RecoverAccountScreen.d.ts.map +1 -0
  224. package/lib/typescript/ui/screens/SessionManagementScreen.d.ts.map +1 -1
  225. package/lib/typescript/ui/screens/SignInScreen.d.ts.map +1 -1
  226. package/lib/typescript/ui/screens/SignUpScreen.d.ts.map +1 -1
  227. package/lib/typescript/ui/screens/internal/SignInPasswordStep.d.ts +27 -0
  228. package/lib/typescript/ui/screens/internal/SignInPasswordStep.d.ts.map +1 -0
  229. package/lib/typescript/ui/screens/internal/SignInUsernameStep.d.ts +26 -0
  230. package/lib/typescript/ui/screens/internal/SignInUsernameStep.d.ts.map +1 -0
  231. package/lib/typescript/ui/screens/internal/SignUpIdentityStep.d.ts +20 -0
  232. package/lib/typescript/ui/screens/internal/SignUpIdentityStep.d.ts.map +1 -0
  233. package/lib/typescript/ui/screens/internal/SignUpSecurityStep.d.ts +24 -0
  234. package/lib/typescript/ui/screens/internal/SignUpSecurityStep.d.ts.map +1 -0
  235. package/lib/typescript/ui/screens/internal/SignUpSummaryStep.d.ts +15 -0
  236. package/lib/typescript/ui/screens/internal/SignUpSummaryStep.d.ts.map +1 -0
  237. package/lib/typescript/ui/screens/internal/SignUpWelcomeStep.d.ts +13 -0
  238. package/lib/typescript/ui/screens/internal/SignUpWelcomeStep.d.ts.map +1 -0
  239. package/lib/typescript/ui/screens/karma/KarmaRewardsScreen.d.ts.map +1 -1
  240. package/lib/typescript/ui/stores/authStore.d.ts +14 -0
  241. package/lib/typescript/ui/stores/authStore.d.ts.map +1 -0
  242. package/lib/typescript/ui/stores/followStore.d.ts +15 -0
  243. package/lib/typescript/ui/stores/followStore.d.ts.map +1 -0
  244. package/lib/typescript/ui/styles/index.d.ts +0 -1
  245. package/lib/typescript/ui/styles/index.d.ts.map +1 -1
  246. package/lib/typescript/ui/utils/confirmAction.d.ts +7 -0
  247. package/lib/typescript/ui/utils/confirmAction.d.ts.map +1 -0
  248. package/package.json +12 -7
  249. package/src/core/index.ts +78 -88
  250. package/src/index.ts +8 -45
  251. package/src/models/secureSession.ts +1 -2
  252. package/src/node/index.ts +0 -3
  253. package/src/ui/components/FollowButton.tsx +100 -322
  254. package/src/ui/components/OxyPayButton.tsx +133 -0
  255. package/src/ui/components/OxyProvider.tsx +39 -201
  256. package/src/ui/components/OxySignInButton.tsx +13 -2
  257. package/src/ui/components/icon/FAIRWalletIcon.tsx +49 -0
  258. package/src/ui/components/icon/index.ts +1 -0
  259. package/src/ui/components/index.ts +1 -0
  260. package/src/ui/components/internal/GroupedPillButtons.tsx +12 -8
  261. package/src/ui/components/internal/PinInput.tsx +102 -0
  262. package/src/ui/components/internal/TextField.tsx +9 -0
  263. package/src/ui/context/OxyContext.tsx +26 -40
  264. package/src/ui/hooks/index.ts +1 -2
  265. package/src/ui/hooks/useFollow.ts +58 -129
  266. package/src/ui/hooks/useSessionSocket.ts +50 -0
  267. package/src/ui/index.ts +2 -37
  268. package/src/ui/navigation/OxyRouter.tsx +47 -63
  269. package/src/ui/navigation/types.ts +5 -26
  270. package/src/ui/screens/AccountCenterScreen.tsx +12 -21
  271. package/src/ui/screens/AccountOverviewScreen.tsx +6 -30
  272. package/src/ui/screens/AccountSettingsScreen.tsx +7 -22
  273. package/src/ui/screens/AccountSwitcherScreen.tsx +46 -88
  274. package/src/ui/screens/AppInfoScreen.tsx +27 -47
  275. package/src/ui/screens/FeedbackScreen.tsx +34 -19
  276. package/src/ui/screens/FileManagementScreen.tsx +293 -321
  277. package/src/ui/screens/PaymentGatewayScreen.tsx +1315 -0
  278. package/src/ui/screens/PremiumSubscriptionScreen.tsx +109 -124
  279. package/src/ui/screens/RecoverAccountScreen.tsx +260 -0
  280. package/src/ui/screens/SessionManagementScreen.tsx +65 -137
  281. package/src/ui/screens/SignInScreen.tsx +89 -283
  282. package/src/ui/screens/SignUpScreen.tsx +138 -291
  283. package/src/ui/screens/internal/SignInPasswordStep.tsx +179 -0
  284. package/src/ui/screens/internal/SignInUsernameStep.tsx +139 -0
  285. package/src/ui/screens/internal/SignUpIdentityStep.tsx +114 -0
  286. package/src/ui/screens/internal/SignUpSecurityStep.tsx +132 -0
  287. package/src/ui/screens/internal/SignUpSummaryStep.tsx +66 -0
  288. package/src/ui/screens/internal/SignUpWelcomeStep.tsx +52 -0
  289. package/src/ui/screens/karma/KarmaRewardsScreen.tsx +13 -3
  290. package/src/ui/stores/authStore.ts +24 -0
  291. package/src/ui/stores/followStore.ts +80 -0
  292. package/src/ui/styles/index.ts +0 -1
  293. package/src/ui/utils/confirmAction.ts +23 -0
  294. package/lib/commonjs/ui/components/bottomSheet/index.js +0 -37
  295. package/lib/commonjs/ui/components/bottomSheet/index.js.map +0 -1
  296. package/lib/commonjs/ui/hooks/useAuthFetch.js +0 -217
  297. package/lib/commonjs/ui/hooks/useAuthFetch.js.map +0 -1
  298. package/lib/commonjs/ui/hooks/useOxyFollow.js +0 -190
  299. package/lib/commonjs/ui/hooks/useOxyFollow.js.map +0 -1
  300. package/lib/commonjs/ui/screens/BillingManagementScreen.js +0 -636
  301. package/lib/commonjs/ui/screens/BillingManagementScreen.js.map +0 -1
  302. package/lib/commonjs/ui/store/index.js +0 -67
  303. package/lib/commonjs/ui/store/index.js.map +0 -1
  304. package/lib/commonjs/ui/store/setupOxyStore.js +0 -63
  305. package/lib/commonjs/ui/store/setupOxyStore.js.map +0 -1
  306. package/lib/commonjs/ui/store/slices/authSlice.js +0 -56
  307. package/lib/commonjs/ui/store/slices/authSlice.js.map +0 -1
  308. package/lib/commonjs/ui/store/slices/followSlice.js +0 -238
  309. package/lib/commonjs/ui/store/slices/followSlice.js.map +0 -1
  310. package/lib/commonjs/ui/store/slices/index.js +0 -129
  311. package/lib/commonjs/ui/store/slices/index.js.map +0 -1
  312. package/lib/commonjs/ui/store/slices/types.js +0 -19
  313. package/lib/commonjs/ui/store/slices/types.js.map +0 -1
  314. package/lib/commonjs/ui/styles/shadows.js +0 -123
  315. package/lib/commonjs/ui/styles/shadows.js.map +0 -1
  316. package/lib/commonjs/utils/polyfills.js +0 -42
  317. package/lib/commonjs/utils/polyfills.js.map +0 -1
  318. package/lib/module/ui/components/bottomSheet/index.js +0 -5
  319. package/lib/module/ui/components/bottomSheet/index.js.map +0 -1
  320. package/lib/module/ui/hooks/useAuthFetch.js +0 -212
  321. package/lib/module/ui/hooks/useAuthFetch.js.map +0 -1
  322. package/lib/module/ui/hooks/useOxyFollow.js +0 -186
  323. package/lib/module/ui/hooks/useOxyFollow.js.map +0 -1
  324. package/lib/module/ui/screens/BillingManagementScreen.js +0 -631
  325. package/lib/module/ui/screens/BillingManagementScreen.js.map +0 -1
  326. package/lib/module/ui/store/index.js +0 -33
  327. package/lib/module/ui/store/index.js.map +0 -1
  328. package/lib/module/ui/store/setupOxyStore.js +0 -59
  329. package/lib/module/ui/store/setupOxyStore.js.map +0 -1
  330. package/lib/module/ui/store/slices/authSlice.js +0 -48
  331. package/lib/module/ui/store/slices/authSlice.js.map +0 -1
  332. package/lib/module/ui/store/slices/followSlice.js +0 -232
  333. package/lib/module/ui/store/slices/followSlice.js.map +0 -1
  334. package/lib/module/ui/store/slices/index.js +0 -11
  335. package/lib/module/ui/store/slices/index.js.map +0 -1
  336. package/lib/module/ui/store/slices/types.js +0 -15
  337. package/lib/module/ui/store/slices/types.js.map +0 -1
  338. package/lib/module/ui/styles/shadows.js +0 -119
  339. package/lib/module/ui/styles/shadows.js.map +0 -1
  340. package/lib/module/utils/polyfills.js +0 -36
  341. package/lib/module/utils/polyfills.js.map +0 -1
  342. package/lib/typescript/types/react-redux.d.ts +0 -5
  343. package/lib/typescript/ui/components/bottomSheet/index.d.ts +0 -4
  344. package/lib/typescript/ui/components/bottomSheet/index.d.ts.map +0 -1
  345. package/lib/typescript/ui/hooks/useAuthFetch.d.ts +0 -34
  346. package/lib/typescript/ui/hooks/useAuthFetch.d.ts.map +0 -1
  347. package/lib/typescript/ui/hooks/useOxyFollow.d.ts +0 -81
  348. package/lib/typescript/ui/hooks/useOxyFollow.d.ts.map +0 -1
  349. package/lib/typescript/ui/screens/BillingManagementScreen.d.ts +0 -5
  350. package/lib/typescript/ui/screens/BillingManagementScreen.d.ts.map +0 -1
  351. package/lib/typescript/ui/store/index.d.ts +0 -27
  352. package/lib/typescript/ui/store/index.d.ts.map +0 -1
  353. package/lib/typescript/ui/store/setupOxyStore.d.ts +0 -29
  354. package/lib/typescript/ui/store/setupOxyStore.d.ts.map +0 -1
  355. package/lib/typescript/ui/store/slices/authSlice.d.ts +0 -32
  356. package/lib/typescript/ui/store/slices/authSlice.d.ts.map +0 -1
  357. package/lib/typescript/ui/store/slices/followSlice.d.ts +0 -120
  358. package/lib/typescript/ui/store/slices/followSlice.d.ts.map +0 -1
  359. package/lib/typescript/ui/store/slices/index.d.ts +0 -9
  360. package/lib/typescript/ui/store/slices/index.d.ts.map +0 -1
  361. package/lib/typescript/ui/store/slices/types.d.ts +0 -16
  362. package/lib/typescript/ui/store/slices/types.d.ts.map +0 -1
  363. package/lib/typescript/ui/styles/shadows.d.ts +0 -233
  364. package/lib/typescript/ui/styles/shadows.d.ts.map +0 -1
  365. package/lib/typescript/utils/polyfills.d.ts +0 -6
  366. package/lib/typescript/utils/polyfills.d.ts.map +0 -1
  367. package/src/__tests__/backend-middleware.test.ts +0 -209
  368. package/src/__tests__/polyfills.test.ts +0 -30
  369. package/src/__tests__/setup.ts +0 -43
  370. package/src/__tests__/ui/hooks/authfetch-integration.test.ts +0 -197
  371. package/src/__tests__/ui/hooks/backward-compatibility.test.ts +0 -159
  372. package/src/__tests__/ui/hooks/real-world-scenarios.test.ts +0 -224
  373. package/src/__tests__/ui/hooks/url-resolution.test.ts +0 -129
  374. package/src/__tests__/ui/hooks/useAuthFetch-separation.test.ts +0 -69
  375. package/src/__tests__/ui/hooks/useAuthFetch.test.ts +0 -70
  376. package/src/__tests__/ui/hooks/useOxyFollow.test.tsx +0 -92
  377. package/src/__tests__/ui/screens/AccountSettingsScreen.test.tsx +0 -112
  378. package/src/__tests__/ui/store/setupOxyStore.test.ts +0 -50
  379. package/src/__tests__/validate-structure.js +0 -91
  380. package/src/__tests__/validation.js +0 -42
  381. package/src/types/react-redux.d.ts +0 -5
  382. package/src/ui/components/bottomSheet/index.tsx +0 -14
  383. package/src/ui/hooks/useAuthFetch.ts +0 -238
  384. package/src/ui/hooks/useOxyFollow.ts +0 -188
  385. package/src/ui/screens/BillingManagementScreen.tsx +0 -589
  386. package/src/ui/store/index.ts +0 -36
  387. package/src/ui/store/setupOxyStore.ts +0 -58
  388. package/src/ui/store/slices/authSlice.ts +0 -43
  389. package/src/ui/store/slices/followSlice.ts +0 -207
  390. package/src/ui/store/slices/index.ts +0 -31
  391. package/src/ui/store/slices/types.ts +0 -33
  392. package/src/ui/styles/shadows.ts +0 -112
  393. package/src/utils/polyfills.ts +0 -34
@@ -20,13 +20,14 @@ import { useOxy } from '../context/OxyContext';
20
20
  import { fontFamilies, useThemeColors, createCommonStyles } from '../styles';
21
21
  import OxyLogo from '../components/OxyLogo';
22
22
  import Avatar from '../components/Avatar';
23
- import { BottomSheetScrollView } from '../components/bottomSheet';
24
23
  import { Ionicons } from '@expo/vector-icons';
25
24
  import HighFive from '../../assets/illustrations/HighFive';
26
25
  import { toast } from '../../lib/sonner';
27
26
  import Svg, { Path, Circle } from 'react-native-svg';
28
27
  import GroupedPillButtons from '../components/internal/GroupedPillButtons';
29
28
  import TextField from '../components/internal/TextField';
29
+ import SignInUsernameStep from './internal/SignInUsernameStep';
30
+ import SignInPasswordStep from './internal/SignInPasswordStep';
30
31
 
31
32
  const SignInScreen: React.FC<BaseScreenProps> = ({
32
33
  navigate,
@@ -101,22 +102,22 @@ const SignInScreen: React.FC<BaseScreenProps> = ({
101
102
  // Memoized input change handlers to prevent re-renders
102
103
  const handleUsernameChange = useCallback((text: string) => {
103
104
  setUsername(text);
104
- // Only clear error if we're changing from an invalid state
105
- if (validationStatus === 'invalid') {
106
- setErrorMessage('');
107
- setValidationStatus('idle');
108
- }
109
- }, [validationStatus]);
105
+ // Clear error as soon as user edits username
106
+ if (errorMessage) setErrorMessage('');
107
+ setValidationStatus('idle');
108
+ }, [errorMessage]);
110
109
 
111
110
  const handlePasswordChange = useCallback((text: string) => {
112
111
  setPassword(text);
113
- setErrorMessage(''); // Clear error when user types
114
- }, []);
112
+ // Clear error as soon as user edits password
113
+ if (errorMessage) setErrorMessage('');
114
+ }, [errorMessage]);
115
115
 
116
116
  // Username validation using core services with caching
117
117
  const validateUsername = useCallback(async (usernameToValidate: string) => {
118
118
  if (!usernameToValidate || usernameToValidate.length < 3) {
119
119
  setValidationStatus('invalid');
120
+ setErrorMessage('Please enter a valid username.');
120
121
  return false;
121
122
  }
122
123
 
@@ -158,14 +159,14 @@ const SignInScreen: React.FC<BaseScreenProps> = ({
158
159
  return true;
159
160
  } else {
160
161
  setValidationStatus('invalid');
161
- setErrorMessage('Username not found. Please check your username or sign up.');
162
+ setErrorMessage('Username not found.');
162
163
  return false;
163
164
  }
164
165
  } catch (error: any) {
165
166
  // If user not found (404), username doesn't exist
166
167
  if (error.status === 404 || error.code === 'USER_NOT_FOUND') {
167
168
  setValidationStatus('invalid');
168
- setErrorMessage('Username not found. Please check your username or sign up.');
169
+ setErrorMessage('Username not found.');
169
170
  return false;
170
171
  }
171
172
 
@@ -179,26 +180,20 @@ const SignInScreen: React.FC<BaseScreenProps> = ({
179
180
  }
180
181
  }, [oxyServices]);
181
182
 
182
- // Debounced username validation - increased debounce time and added better conditions
183
+ // Debounced username validation - only run on explicit continue, not on every keystroke
183
184
  useEffect(() => {
184
185
  if (!username || username.length < 3) {
185
186
  setValidationStatus('idle');
186
187
  setUserProfile(null);
187
- setErrorMessage(''); // Clear error when input is too short
188
+ setErrorMessage('');
188
189
  return;
189
190
  }
190
-
191
191
  // Only validate if we haven't already validated this exact username
192
192
  if (validationStatus === 'valid' && userProfile?.name === username) {
193
193
  return;
194
194
  }
195
-
196
- const timeoutId = setTimeout(() => {
197
- validateUsername(username);
198
- }, 800); // Increased debounce to 800ms
199
-
200
- return () => clearTimeout(timeoutId);
201
- }, [username, validateUsername, validationStatus, userProfile?.name]);
195
+ // Remove debounce, only validate on continue
196
+ }, [username, validationStatus, userProfile?.name]);
202
197
 
203
198
  // Cleanup cache on unmount and limit cache size
204
199
  useEffect(() => {
@@ -303,26 +298,29 @@ const SignInScreen: React.FC<BaseScreenProps> = ({
303
298
  }, [currentStep, progressAnim, animateTransition]);
304
299
 
305
300
  // Custom next handlers for validation
306
- const handleUsernameContinue = useCallback(() => {
301
+ const handleUsernameContinue = useCallback(async () => {
307
302
  if (!username) {
308
- toast.error('Please enter your username.');
303
+ setErrorMessage('Please enter your username.');
309
304
  return;
310
305
  }
311
- if (validationStatus !== 'valid' || !userProfile) {
312
- toast.error('Please enter a valid username.');
306
+ setErrorMessage('');
307
+ setIsValidating(true);
308
+ const valid = await validateUsername(username);
309
+ setIsValidating(false);
310
+ if (!valid) {
311
+ // Error message is set in validateUsername
313
312
  return;
314
313
  }
315
- setErrorMessage('');
316
314
  nextStep();
317
- }, [username, validationStatus, userProfile, setErrorMessage, nextStep]);
315
+ }, [username, validateUsername, nextStep]);
318
316
 
319
317
  const handleSignIn = useCallback(async () => {
320
318
  if (!password) {
321
- toast.error('Please enter your password.');
319
+ setErrorMessage('Please enter your password.');
322
320
  return;
323
321
  }
324
322
  if (!username || !userProfile) {
325
- toast.error('Please enter a valid username first.');
323
+ setErrorMessage('Please enter a valid username first.');
326
324
  return;
327
325
  }
328
326
  try {
@@ -332,169 +330,33 @@ const SignInScreen: React.FC<BaseScreenProps> = ({
332
330
  onAuthenticated(user);
333
331
  }
334
332
  } catch (error: any) {
335
- toast.error(error.message || 'Login failed');
333
+ setErrorMessage(error.message || 'Login failed');
336
334
  }
337
- }, [username, password, login, onAuthenticated, setErrorMessage, userProfile]);
335
+ }, [username, password, login, onAuthenticated, userProfile]);
338
336
 
339
337
  // Memoized step components
340
338
  const renderUsernameStep = useMemo(() => (
341
- <Animated.View style={[
342
- styles.stepContainer,
343
- {
344
- opacity: fadeAnim,
345
- transform: [
346
- { translateX: slideAnim },
347
- { scale: scaleAnim }
348
- ]
349
- }
350
- ]}>
351
- <HighFive width={100} height={100} />
352
-
353
- <View style={styles.modernHeader}>
354
- <Text style={[styles.modernTitle, { color: colors.text }]}>
355
- {isAddAccountMode ? 'Add Another Account' : 'Sign In'}
356
- </Text>
357
- <Text style={[styles.modernSubtitle, { color: colors.secondaryText }]}>
358
- {isAddAccountMode
359
- ? 'Sign in with another account'
360
- : 'Sign in to continue your journey'
361
- }
362
- </Text>
363
- </View>
364
-
365
- {isAddAccountMode && (
366
- <View style={[styles.modernInfoCard, { backgroundColor: colors.inputBackground }]}>
367
- <Ionicons name="information-circle" size={20} color={colors.primary} />
368
- <Text style={[styles.modernInfoText, { color: colors.text }]}>
369
- Currently signed in as <Text style={{ fontWeight: 'bold' }}>{user?.username}</Text>
370
- </Text>
371
- </View>
372
- )}
373
-
374
- {errorMessage ? (
375
- <Animated.View style={[styles.modernErrorCard, { backgroundColor: '#FF6B6B20' }]}>
376
- <Ionicons name="alert-circle" size={20} color="#FF6B6B" />
377
- <Text style={[styles.errorText, { color: '#FF6B6B' }]}>{errorMessage}</Text>
378
- </Animated.View>
379
- ) : null}
380
-
381
- <Animated.View style={[
382
- styles.modernInputContainer,
383
- { transform: [{ scale: inputScaleAnim }] }
384
- ]}>
385
- <TextField
386
- label="Username"
387
- icon="person-outline"
388
- value={username}
389
- onChangeText={handleUsernameChange}
390
- onFocus={handleInputFocus}
391
- onBlur={handleInputBlur}
392
- autoCapitalize="none"
393
- autoCorrect={false}
394
- testID="username-input"
395
- colors={colors}
396
- variant="filled"
397
- error={validationStatus === 'invalid' && username.length >= 3 ? 'Username not found' : undefined}
398
- loading={validationStatus === 'validating'}
399
- success={validationStatus === 'valid'}
400
- />
401
- </Animated.View>
402
-
403
- {/* Enhanced Validation feedback */}
404
- {validationStatus === 'valid' && userProfile && (
405
- <View style={[styles.validationSuccessCard, {
406
- backgroundColor: colors.success + '10',
407
- borderWidth: 1,
408
- borderColor: colors.success + '30',
409
- padding: 16,
410
- }]}>
411
- <View style={{
412
- width: 32,
413
- height: 32,
414
- borderRadius: 16,
415
- backgroundColor: colors.success + '20',
416
- justifyContent: 'center',
417
- alignItems: 'center',
418
- marginRight: 12,
419
- }}>
420
- <Ionicons name="checkmark-circle" size={16} color={colors.success} />
421
- </View>
422
- <View style={{ flex: 1 }}>
423
- <Text style={[styles.validationText, {
424
- color: colors.success,
425
- fontWeight: '600',
426
- marginBottom: 2,
427
- }]}>
428
- Welcome back, {userProfile?.displayName || userProfile?.name || username}!
429
- </Text>
430
- <Text style={[styles.validationText, {
431
- color: colors.secondaryText,
432
- fontSize: 11,
433
- opacity: 0.8,
434
- }]}>
435
- Ready to continue where you left off
436
- </Text>
437
- </View>
438
- </View>
439
- )}
440
-
441
- {validationStatus === 'invalid' && username.length >= 3 && (
442
- <View style={[styles.validationErrorCard, {
443
- backgroundColor: colors.error + '10',
444
- borderWidth: 1,
445
- borderColor: colors.error + '30',
446
- padding: 16,
447
- }]}>
448
- <View style={{
449
- width: 32,
450
- height: 32,
451
- borderRadius: 16,
452
- backgroundColor: colors.error + '20',
453
- justifyContent: 'center',
454
- alignItems: 'center',
455
- marginRight: 12,
456
- }}>
457
- <Ionicons name="alert-circle" size={16} color={colors.error} />
458
- </View>
459
- <View style={{ flex: 1 }}>
460
- <Text style={[styles.validationText, {
461
- color: colors.error,
462
- fontWeight: '600',
463
- marginBottom: 2,
464
- }]}>
465
- Username not found
466
- </Text>
467
- <Text style={[styles.validationText, {
468
- color: colors.secondaryText,
469
- fontSize: 11,
470
- opacity: 0.8,
471
- }]}>
472
- Check spelling or sign up
473
- </Text>
474
- </View>
475
- </View>
476
- )}
477
-
478
- <GroupedPillButtons
479
- buttons={[
480
- {
481
- text: 'Sign Up',
482
- onPress: () => navigate('SignUp'),
483
- icon: 'person-add',
484
- variant: 'transparent',
485
- },
486
- {
487
- text: 'Continue',
488
- onPress: handleUsernameContinue,
489
- icon: 'arrow-forward',
490
- variant: 'primary',
491
- loading: isValidating,
492
- testID: 'username-next-button',
493
- },
494
- ]}
495
- colors={colors}
496
- />
497
- </Animated.View>
339
+ <SignInUsernameStep
340
+ styles={styles}
341
+ fadeAnim={fadeAnim}
342
+ slideAnim={slideAnim}
343
+ scaleAnim={scaleAnim}
344
+ colors={colors}
345
+ isAddAccountMode={isAddAccountMode}
346
+ user={user}
347
+ errorMessage={errorMessage}
348
+ inputScaleAnim={inputScaleAnim}
349
+ isInputFocused={isInputFocused}
350
+ username={username}
351
+ validationStatus={validationStatus}
352
+ userProfile={userProfile}
353
+ isValidating={isValidating}
354
+ handleInputFocus={handleInputFocus}
355
+ handleInputBlur={handleInputBlur}
356
+ handleUsernameChange={handleUsernameChange}
357
+ handleUsernameContinue={handleUsernameContinue}
358
+ navigate={navigate}
359
+ />
498
360
  ), [
499
361
  fadeAnim, slideAnim, scaleAnim, colors, isAddAccountMode, user?.username,
500
362
  errorMessage, inputScaleAnim, isInputFocused, username, validationStatus,
@@ -503,101 +365,28 @@ const SignInScreen: React.FC<BaseScreenProps> = ({
503
365
  ]);
504
366
 
505
367
  const renderPasswordStep = useMemo(() => (
506
- <Animated.View style={[
507
- styles.stepContainer,
508
- {
509
- opacity: fadeAnim,
510
- transform: [
511
- { translateX: slideAnim },
512
- { scale: scaleAnim }
513
- ]
514
- }
515
- ]}>
516
- <View style={styles.modernUserProfileContainer}>
517
- <Animated.View style={[
518
- styles.avatarContainer,
519
- { transform: [{ scale: logoAnim }] }
520
- ]}>
521
- <Avatar
522
- uri={userProfile?.avatar}
523
- name={userProfile?.displayName || userProfile?.name || username}
524
- size={100}
525
- theme={theme}
526
- style={styles.modernUserAvatar}
527
- />
528
- <View style={[styles.statusIndicator, { backgroundColor: colors.primary }]} />
529
- </Animated.View>
530
-
531
- <Text style={[styles.modernUserDisplayName, { color: colors.text }]}>
532
- {userProfile?.displayName || userProfile?.name || username}
533
- </Text>
534
- <Text style={[styles.modernUsernameSubtext, { color: colors.secondaryText }]}>
535
- @{username}
536
- </Text>
537
-
538
- <View style={[styles.welcomeBackBadge, { backgroundColor: colors.primary + '15' }]}>
539
- <Ionicons name="checkmark-circle" size={16} color={colors.primary} />
540
- <Text style={[styles.welcomeBackText, { color: colors.primary }]}>
541
- Welcome back!
542
- </Text>
543
- </View>
544
- </View>
545
-
546
- {errorMessage ? (
547
- <Animated.View style={[styles.modernErrorCard, { backgroundColor: '#FF6B6B20' }]}>
548
- <Ionicons name="alert-circle" size={20} color="#FF6B6B" />
549
- <Text style={[styles.errorText, { color: '#FF6B6B' }]}>{errorMessage}</Text>
550
- </Animated.View>
551
- ) : null}
552
-
553
- <Animated.View style={[
554
- styles.modernInputContainer,
555
- { transform: [{ scale: inputScaleAnim }] }
556
- ]}>
557
- <TextField
558
- label="Password"
559
- icon="lock-closed-outline"
560
- value={password}
561
- onChangeText={handlePasswordChange}
562
- onFocus={handleInputFocus}
563
- onBlur={handleInputBlur}
564
- secureTextEntry={!showPassword}
565
- autoCapitalize="none"
566
- autoCorrect={false}
567
- testID="password-input"
568
- colors={colors}
569
- variant="filled"
570
- error={errorMessage}
571
- />
572
- </Animated.View>
573
-
574
- <GroupedPillButtons
575
- buttons={[
576
- {
577
- text: 'Back',
578
- onPress: prevStep,
579
- icon: 'arrow-back',
580
- variant: 'transparent',
581
- },
582
- {
583
- text: 'Sign In',
584
- onPress: handleSignIn,
585
- icon: 'log-in',
586
- variant: 'primary',
587
- loading: isLoading,
588
- testID: 'login-button',
589
- },
590
- ]}
591
- colors={colors}
592
- />
593
-
594
- <View style={styles.securityNotice}>
595
- <Ionicons name="shield-checkmark" size={14} color={colors.secondaryText} />
596
- <Text style={[styles.securityText, { color: colors.secondaryText }]}>
597
- Your data is encrypted and secure
598
- </Text>
599
- </View>
600
- </Animated.View>
368
+ <SignInPasswordStep
369
+ styles={styles}
370
+ fadeAnim={fadeAnim}
371
+ slideAnim={slideAnim}
372
+ scaleAnim={scaleAnim}
373
+ colors={colors}
374
+ userProfile={userProfile}
375
+ username={username}
376
+ theme={theme}
377
+ logoAnim={logoAnim}
378
+ errorMessage={errorMessage}
379
+ inputScaleAnim={inputScaleAnim}
380
+ isInputFocused={isInputFocused}
381
+ password={password}
382
+ showPassword={showPassword}
383
+ handleInputFocus={handleInputFocus}
384
+ handleInputBlur={handleInputBlur}
385
+ handlePasswordChange={handlePasswordChange}
386
+ handleSignIn={handleSignIn}
387
+ isLoading={isLoading}
388
+ prevStep={prevStep}
389
+ />
601
390
  ), [
602
391
  fadeAnim, slideAnim, scaleAnim, colors, userProfile, username, theme, logoAnim,
603
392
  errorMessage, inputScaleAnim, isInputFocused, password, showPassword,
@@ -631,6 +420,12 @@ const SignInScreen: React.FC<BaseScreenProps> = ({
631
420
  keyboardShouldPersistTaps="handled"
632
421
  >
633
422
  {renderCurrentStep()}
423
+ <View style={styles.footerTextContainer}>
424
+ <Text style={[styles.footerText, { color: colors.text }]}>Forgot your password? </Text>
425
+ <TouchableOpacity onPress={() => navigate('RecoverAccount')}>
426
+ <Text style={[styles.modernLinkText, { color: colors.primary }]}>Recover your account</Text>
427
+ </TouchableOpacity>
428
+ </View>
634
429
  </ScrollView>
635
430
  </KeyboardAvoidingView>
636
431
  );
@@ -734,6 +529,17 @@ const createStyles = (colors: any, theme: string) => StyleSheet.create({
734
529
  marginTop: 8,
735
530
  gap: 8,
736
531
  },
532
+ belowInputMessage: {
533
+ flexDirection: 'row',
534
+ alignItems: 'center',
535
+ marginTop: 4,
536
+ marginBottom: 0,
537
+ gap: 6,
538
+ },
539
+ belowInputText: {
540
+ fontSize: 13,
541
+ fontWeight: '500',
542
+ },
737
543
  validationErrorCard: {
738
544
  flexDirection: 'row',
739
545
  alignItems: 'center',