@oxyhq/services 5.4.2 → 5.4.3

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 (359) hide show
  1. package/lib/commonjs/assets/OxyLogo.svg +1 -0
  2. package/lib/commonjs/assets/assets/OxyLogo.svg +1 -0
  3. package/lib/commonjs/assets/assets/fonts/Phudu/Phudu-Black.ttf +0 -0
  4. package/lib/commonjs/assets/assets/fonts/Phudu/Phudu-Bold.ttf +0 -0
  5. package/lib/commonjs/assets/assets/fonts/Phudu/Phudu-ExtraBold.ttf +0 -0
  6. package/lib/commonjs/assets/assets/fonts/Phudu/Phudu-Light.ttf +0 -0
  7. package/lib/commonjs/assets/assets/fonts/Phudu/Phudu-Medium.ttf +0 -0
  8. package/lib/commonjs/assets/assets/fonts/Phudu/Phudu-Regular.ttf +0 -0
  9. package/lib/commonjs/assets/assets/fonts/Phudu/Phudu-SemiBold.ttf +0 -0
  10. package/lib/commonjs/assets/assets/icons/OxyServices.tsx +67 -0
  11. package/lib/commonjs/assets/assets/icons/logo_OxyServices.svg +1 -0
  12. package/lib/commonjs/assets/fonts/Phudu/Phudu-Black.ttf +0 -0
  13. package/lib/commonjs/assets/fonts/Phudu/Phudu-Bold.ttf +0 -0
  14. package/lib/commonjs/assets/fonts/Phudu/Phudu-ExtraBold.ttf +0 -0
  15. package/lib/commonjs/assets/fonts/Phudu/Phudu-Light.ttf +0 -0
  16. package/lib/commonjs/assets/fonts/Phudu/Phudu-Medium.ttf +0 -0
  17. package/lib/commonjs/assets/fonts/Phudu/Phudu-Regular.ttf +0 -0
  18. package/lib/commonjs/assets/fonts/Phudu/Phudu-SemiBold.ttf +0 -0
  19. package/lib/commonjs/assets/icons/OxyServices.js +53 -0
  20. package/lib/commonjs/assets/icons/OxyServices.js.map +1 -0
  21. package/lib/commonjs/assets/icons/logo_OxyServices.svg +1 -0
  22. package/lib/commonjs/constants/version.js +28 -0
  23. package/lib/commonjs/constants/version.js.map +1 -0
  24. package/lib/commonjs/core/index.js +1660 -0
  25. package/lib/commonjs/core/index.js.map +1 -0
  26. package/lib/commonjs/index.js +160 -0
  27. package/lib/commonjs/index.js.map +1 -0
  28. package/lib/commonjs/lib/sonner.js +21 -0
  29. package/lib/commonjs/lib/sonner.js.map +1 -0
  30. package/lib/commonjs/models/interfaces.js +2 -0
  31. package/lib/commonjs/models/interfaces.js.map +1 -0
  32. package/lib/commonjs/models/secureSession.js +2 -0
  33. package/lib/commonjs/models/secureSession.js.map +1 -0
  34. package/lib/commonjs/node/index.js +54 -0
  35. package/lib/commonjs/node/index.js.map +1 -0
  36. package/lib/commonjs/ui/components/Avatar.js +98 -0
  37. package/lib/commonjs/ui/components/Avatar.js.map +1 -0
  38. package/lib/commonjs/ui/components/FollowButton.js +246 -0
  39. package/lib/commonjs/ui/components/FollowButton.js.map +1 -0
  40. package/lib/commonjs/ui/components/FontLoader.js +181 -0
  41. package/lib/commonjs/ui/components/FontLoader.js.map +1 -0
  42. package/lib/commonjs/ui/components/GroupedItem.js +109 -0
  43. package/lib/commonjs/ui/components/GroupedItem.js.map +1 -0
  44. package/lib/commonjs/ui/components/GroupedSection.js +33 -0
  45. package/lib/commonjs/ui/components/GroupedSection.js.map +1 -0
  46. package/lib/commonjs/ui/components/OxyLogo.js +56 -0
  47. package/lib/commonjs/ui/components/OxyLogo.js.map +1 -0
  48. package/lib/commonjs/ui/components/OxyProvider.js +517 -0
  49. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -0
  50. package/lib/commonjs/ui/components/OxySignInButton.js +178 -0
  51. package/lib/commonjs/ui/components/OxySignInButton.js.map +1 -0
  52. package/lib/commonjs/ui/components/ProfileCard.js +124 -0
  53. package/lib/commonjs/ui/components/ProfileCard.js.map +1 -0
  54. package/lib/commonjs/ui/components/QuickActions.js +87 -0
  55. package/lib/commonjs/ui/components/QuickActions.js.map +1 -0
  56. package/lib/commonjs/ui/components/Section.js +36 -0
  57. package/lib/commonjs/ui/components/Section.js.map +1 -0
  58. package/lib/commonjs/ui/components/SectionTitle.js +35 -0
  59. package/lib/commonjs/ui/components/SectionTitle.js.map +1 -0
  60. package/lib/commonjs/ui/components/bottomSheet/index.js +37 -0
  61. package/lib/commonjs/ui/components/bottomSheet/index.js.map +1 -0
  62. package/lib/commonjs/ui/components/icon/OxyIcon.js +27 -0
  63. package/lib/commonjs/ui/components/icon/OxyIcon.js.map +1 -0
  64. package/lib/commonjs/ui/components/icon/index.js +14 -0
  65. package/lib/commonjs/ui/components/icon/index.js.map +1 -0
  66. package/lib/commonjs/ui/components/index.js +97 -0
  67. package/lib/commonjs/ui/components/index.js.map +1 -0
  68. package/lib/commonjs/ui/context/OxyContext.js +584 -0
  69. package/lib/commonjs/ui/context/OxyContext.js.map +1 -0
  70. package/lib/commonjs/ui/index.js +128 -0
  71. package/lib/commonjs/ui/index.js.map +1 -0
  72. package/lib/commonjs/ui/navigation/OxyRouter.js +264 -0
  73. package/lib/commonjs/ui/navigation/OxyRouter.js.map +1 -0
  74. package/lib/commonjs/ui/navigation/types.js +6 -0
  75. package/lib/commonjs/ui/navigation/types.js.map +1 -0
  76. package/lib/commonjs/ui/screens/AccountCenterScreen.js +313 -0
  77. package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -0
  78. package/lib/commonjs/ui/screens/AccountManagementDemo.js +299 -0
  79. package/lib/commonjs/ui/screens/AccountManagementDemo.js.map +1 -0
  80. package/lib/commonjs/ui/screens/AccountOverviewScreen.js +855 -0
  81. package/lib/commonjs/ui/screens/AccountOverviewScreen.js.map +1 -0
  82. package/lib/commonjs/ui/screens/AccountSettingsScreen.js +843 -0
  83. package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -0
  84. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +788 -0
  85. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -0
  86. package/lib/commonjs/ui/screens/AppInfoScreen.js +664 -0
  87. package/lib/commonjs/ui/screens/AppInfoScreen.js.map +1 -0
  88. package/lib/commonjs/ui/screens/BillingManagementScreen.js +636 -0
  89. package/lib/commonjs/ui/screens/BillingManagementScreen.js.map +1 -0
  90. package/lib/commonjs/ui/screens/FileManagementScreen.js +2515 -0
  91. package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -0
  92. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js +1620 -0
  93. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js.map +1 -0
  94. package/lib/commonjs/ui/screens/ProfileScreen.js +450 -0
  95. package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -0
  96. package/lib/commonjs/ui/screens/SessionManagementScreen.js +449 -0
  97. package/lib/commonjs/ui/screens/SessionManagementScreen.js.map +1 -0
  98. package/lib/commonjs/ui/screens/SignInScreen.js +1004 -0
  99. package/lib/commonjs/ui/screens/SignInScreen.js.map +1 -0
  100. package/lib/commonjs/ui/screens/SignUpScreen.js +937 -0
  101. package/lib/commonjs/ui/screens/SignUpScreen.js.map +1 -0
  102. package/lib/commonjs/ui/screens/karma/KarmaAboutScreen.js +88 -0
  103. package/lib/commonjs/ui/screens/karma/KarmaAboutScreen.js.map +1 -0
  104. package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js +364 -0
  105. package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js.map +1 -0
  106. package/lib/commonjs/ui/screens/karma/KarmaFAQScreen.js +227 -0
  107. package/lib/commonjs/ui/screens/karma/KarmaFAQScreen.js.map +1 -0
  108. package/lib/commonjs/ui/screens/karma/KarmaLeaderboardScreen.js +148 -0
  109. package/lib/commonjs/ui/screens/karma/KarmaLeaderboardScreen.js.map +1 -0
  110. package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js +127 -0
  111. package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js.map +1 -0
  112. package/lib/commonjs/ui/screens/karma/KarmaRulesScreen.js +105 -0
  113. package/lib/commonjs/ui/screens/karma/KarmaRulesScreen.js.map +1 -0
  114. package/lib/commonjs/ui/styles/FONTS.md +126 -0
  115. package/lib/commonjs/ui/styles/fonts.js +84 -0
  116. package/lib/commonjs/ui/styles/fonts.js.map +1 -0
  117. package/lib/commonjs/ui/styles/index.js +28 -0
  118. package/lib/commonjs/ui/styles/index.js.map +1 -0
  119. package/lib/commonjs/ui/styles/theme.js +121 -0
  120. package/lib/commonjs/ui/styles/theme.js.map +1 -0
  121. package/lib/commonjs/utils/deviceManager.js +173 -0
  122. package/lib/commonjs/utils/deviceManager.js.map +1 -0
  123. package/lib/commonjs/utils/index.js +13 -0
  124. package/lib/commonjs/utils/index.js.map +1 -0
  125. package/lib/commonjs/utils/polyfills.js +42 -0
  126. package/lib/commonjs/utils/polyfills.js.map +1 -0
  127. package/lib/module/assets/OxyLogo.svg +1 -0
  128. package/lib/module/assets/assets/OxyLogo.svg +1 -0
  129. package/lib/module/assets/assets/fonts/Phudu/Phudu-Black.ttf +0 -0
  130. package/lib/module/assets/assets/fonts/Phudu/Phudu-Bold.ttf +0 -0
  131. package/lib/module/assets/assets/fonts/Phudu/Phudu-ExtraBold.ttf +0 -0
  132. package/lib/module/assets/assets/fonts/Phudu/Phudu-Light.ttf +0 -0
  133. package/lib/module/assets/assets/fonts/Phudu/Phudu-Medium.ttf +0 -0
  134. package/lib/module/assets/assets/fonts/Phudu/Phudu-Regular.ttf +0 -0
  135. package/lib/module/assets/assets/fonts/Phudu/Phudu-SemiBold.ttf +0 -0
  136. package/lib/module/assets/assets/icons/OxyServices.tsx +67 -0
  137. package/lib/module/assets/assets/icons/logo_OxyServices.svg +1 -0
  138. package/lib/module/assets/fonts/Phudu/Phudu-Black.ttf +0 -0
  139. package/lib/module/assets/fonts/Phudu/Phudu-Bold.ttf +0 -0
  140. package/lib/module/assets/fonts/Phudu/Phudu-ExtraBold.ttf +0 -0
  141. package/lib/module/assets/fonts/Phudu/Phudu-Light.ttf +0 -0
  142. package/lib/module/assets/fonts/Phudu/Phudu-Medium.ttf +0 -0
  143. package/lib/module/assets/fonts/Phudu/Phudu-Regular.ttf +0 -0
  144. package/lib/module/assets/fonts/Phudu/Phudu-SemiBold.ttf +0 -0
  145. package/lib/module/assets/icons/OxyServices.js +46 -0
  146. package/lib/module/assets/icons/OxyServices.js.map +1 -0
  147. package/lib/module/assets/icons/logo_OxyServices.svg +1 -0
  148. package/lib/module/constants/version.js +21 -0
  149. package/lib/module/constants/version.js.map +1 -0
  150. package/lib/module/core/index.js +1634 -0
  151. package/lib/module/core/index.js.map +1 -0
  152. package/lib/module/index.js +48 -0
  153. package/lib/module/index.js.map +1 -0
  154. package/lib/module/lib/sonner.js +16 -0
  155. package/lib/module/lib/sonner.js.map +1 -0
  156. package/lib/module/models/interfaces.js +2 -0
  157. package/lib/module/models/interfaces.js.map +1 -0
  158. package/lib/module/models/secureSession.js +2 -0
  159. package/lib/module/models/secureSession.js.map +1 -0
  160. package/lib/module/node/index.js +23 -0
  161. package/lib/module/node/index.js.map +1 -0
  162. package/lib/module/ui/components/Avatar.js +93 -0
  163. package/lib/module/ui/components/Avatar.js.map +1 -0
  164. package/lib/module/ui/components/FollowButton.js +241 -0
  165. package/lib/module/ui/components/FollowButton.js.map +1 -0
  166. package/lib/module/ui/components/FontLoader.js +176 -0
  167. package/lib/module/ui/components/FontLoader.js.map +1 -0
  168. package/lib/module/ui/components/GroupedItem.js +104 -0
  169. package/lib/module/ui/components/GroupedItem.js.map +1 -0
  170. package/lib/module/ui/components/GroupedSection.js +28 -0
  171. package/lib/module/ui/components/GroupedSection.js.map +1 -0
  172. package/lib/module/ui/components/OxyLogo.js +49 -0
  173. package/lib/module/ui/components/OxyLogo.js.map +1 -0
  174. package/lib/module/ui/components/OxyProvider.js +511 -0
  175. package/lib/module/ui/components/OxyProvider.js.map +1 -0
  176. package/lib/module/ui/components/OxySignInButton.js +172 -0
  177. package/lib/module/ui/components/OxySignInButton.js.map +1 -0
  178. package/lib/module/ui/components/ProfileCard.js +119 -0
  179. package/lib/module/ui/components/ProfileCard.js.map +1 -0
  180. package/lib/module/ui/components/QuickActions.js +82 -0
  181. package/lib/module/ui/components/QuickActions.js.map +1 -0
  182. package/lib/module/ui/components/Section.js +31 -0
  183. package/lib/module/ui/components/Section.js.map +1 -0
  184. package/lib/module/ui/components/SectionTitle.js +30 -0
  185. package/lib/module/ui/components/SectionTitle.js.map +1 -0
  186. package/lib/module/ui/components/bottomSheet/index.js +5 -0
  187. package/lib/module/ui/components/bottomSheet/index.js.map +1 -0
  188. package/lib/module/ui/components/icon/OxyIcon.js +22 -0
  189. package/lib/module/ui/components/icon/OxyIcon.js.map +1 -0
  190. package/lib/module/ui/components/icon/index.js +4 -0
  191. package/lib/module/ui/components/icon/index.js.map +1 -0
  192. package/lib/module/ui/components/index.js +18 -0
  193. package/lib/module/ui/components/index.js.map +1 -0
  194. package/lib/module/ui/context/OxyContext.js +579 -0
  195. package/lib/module/ui/context/OxyContext.js.map +1 -0
  196. package/lib/module/ui/index.js +24 -0
  197. package/lib/module/ui/index.js.map +1 -0
  198. package/lib/module/ui/navigation/OxyRouter.js +257 -0
  199. package/lib/module/ui/navigation/OxyRouter.js.map +1 -0
  200. package/lib/module/ui/navigation/types.js +4 -0
  201. package/lib/module/ui/navigation/types.js.map +1 -0
  202. package/lib/module/ui/screens/AccountCenterScreen.js +308 -0
  203. package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -0
  204. package/lib/module/ui/screens/AccountManagementDemo.js +296 -0
  205. package/lib/module/ui/screens/AccountManagementDemo.js.map +1 -0
  206. package/lib/module/ui/screens/AccountOverviewScreen.js +849 -0
  207. package/lib/module/ui/screens/AccountOverviewScreen.js.map +1 -0
  208. package/lib/module/ui/screens/AccountSettingsScreen.js +837 -0
  209. package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -0
  210. package/lib/module/ui/screens/AccountSwitcherScreen.js +782 -0
  211. package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -0
  212. package/lib/module/ui/screens/AppInfoScreen.js +658 -0
  213. package/lib/module/ui/screens/AppInfoScreen.js.map +1 -0
  214. package/lib/module/ui/screens/BillingManagementScreen.js +631 -0
  215. package/lib/module/ui/screens/BillingManagementScreen.js.map +1 -0
  216. package/lib/module/ui/screens/FileManagementScreen.js +2510 -0
  217. package/lib/module/ui/screens/FileManagementScreen.js.map +1 -0
  218. package/lib/module/ui/screens/PremiumSubscriptionScreen.js +1615 -0
  219. package/lib/module/ui/screens/PremiumSubscriptionScreen.js.map +1 -0
  220. package/lib/module/ui/screens/ProfileScreen.js +444 -0
  221. package/lib/module/ui/screens/ProfileScreen.js.map +1 -0
  222. package/lib/module/ui/screens/SessionManagementScreen.js +444 -0
  223. package/lib/module/ui/screens/SessionManagementScreen.js.map +1 -0
  224. package/lib/module/ui/screens/SignInScreen.js +998 -0
  225. package/lib/module/ui/screens/SignInScreen.js.map +1 -0
  226. package/lib/module/ui/screens/SignUpScreen.js +932 -0
  227. package/lib/module/ui/screens/SignUpScreen.js.map +1 -0
  228. package/lib/module/ui/screens/karma/KarmaAboutScreen.js +83 -0
  229. package/lib/module/ui/screens/karma/KarmaAboutScreen.js.map +1 -0
  230. package/lib/module/ui/screens/karma/KarmaCenterScreen.js +358 -0
  231. package/lib/module/ui/screens/karma/KarmaCenterScreen.js.map +1 -0
  232. package/lib/module/ui/screens/karma/KarmaFAQScreen.js +222 -0
  233. package/lib/module/ui/screens/karma/KarmaFAQScreen.js.map +1 -0
  234. package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js +142 -0
  235. package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js.map +1 -0
  236. package/lib/module/ui/screens/karma/KarmaRewardsScreen.js +122 -0
  237. package/lib/module/ui/screens/karma/KarmaRewardsScreen.js.map +1 -0
  238. package/lib/module/ui/screens/karma/KarmaRulesScreen.js +100 -0
  239. package/lib/module/ui/screens/karma/KarmaRulesScreen.js.map +1 -0
  240. package/lib/module/ui/styles/FONTS.md +126 -0
  241. package/lib/module/ui/styles/fonts.js +81 -0
  242. package/lib/module/ui/styles/fonts.js.map +1 -0
  243. package/lib/module/ui/styles/index.js +5 -0
  244. package/lib/module/ui/styles/index.js.map +1 -0
  245. package/lib/module/ui/styles/theme.js +114 -0
  246. package/lib/module/ui/styles/theme.js.map +1 -0
  247. package/lib/module/utils/deviceManager.js +167 -0
  248. package/lib/module/utils/deviceManager.js.map +1 -0
  249. package/lib/module/utils/index.js +4 -0
  250. package/lib/module/utils/index.js.map +1 -0
  251. package/lib/module/utils/polyfills.js +36 -0
  252. package/lib/module/utils/polyfills.js.map +1 -0
  253. package/lib/typescript/assets/icons/OxyServices.d.ts +29 -0
  254. package/lib/typescript/assets/icons/OxyServices.d.ts.map +1 -0
  255. package/lib/typescript/constants/version.d.ts +14 -0
  256. package/lib/typescript/constants/version.d.ts.map +1 -0
  257. package/lib/typescript/core/index.d.ts +603 -0
  258. package/lib/typescript/core/index.d.ts.map +1 -0
  259. package/lib/typescript/index.d.ts +20 -0
  260. package/lib/typescript/index.d.ts.map +1 -0
  261. package/lib/typescript/lib/sonner.d.ts +6 -0
  262. package/lib/typescript/lib/sonner.d.ts.map +1 -0
  263. package/lib/typescript/models/interfaces.d.ts +179 -0
  264. package/lib/typescript/models/interfaces.d.ts.map +1 -0
  265. package/lib/typescript/models/secureSession.d.ts +27 -0
  266. package/lib/typescript/models/secureSession.d.ts.map +1 -0
  267. package/lib/typescript/node/index.d.ts +11 -0
  268. package/lib/typescript/node/index.d.ts.map +1 -0
  269. package/lib/typescript/ui/components/Avatar.d.ts +62 -0
  270. package/lib/typescript/ui/components/Avatar.d.ts.map +1 -0
  271. package/lib/typescript/ui/components/FollowButton.d.ts +92 -0
  272. package/lib/typescript/ui/components/FollowButton.d.ts.map +1 -0
  273. package/lib/typescript/ui/components/FontLoader.d.ts +15 -0
  274. package/lib/typescript/ui/components/FontLoader.d.ts.map +1 -0
  275. package/lib/typescript/ui/components/GroupedItem.d.ts +17 -0
  276. package/lib/typescript/ui/components/GroupedItem.d.ts.map +1 -0
  277. package/lib/typescript/ui/components/GroupedSection.d.ts +19 -0
  278. package/lib/typescript/ui/components/GroupedSection.d.ts.map +1 -0
  279. package/lib/typescript/ui/components/OxyLogo.d.ts +29 -0
  280. package/lib/typescript/ui/components/OxyLogo.d.ts.map +1 -0
  281. package/lib/typescript/ui/components/OxyProvider.d.ts +12 -0
  282. package/lib/typescript/ui/components/OxyProvider.d.ts.map +1 -0
  283. package/lib/typescript/ui/components/OxySignInButton.d.ts +70 -0
  284. package/lib/typescript/ui/components/OxySignInButton.d.ts.map +1 -0
  285. package/lib/typescript/ui/components/ProfileCard.d.ts +20 -0
  286. package/lib/typescript/ui/components/ProfileCard.d.ts.map +1 -0
  287. package/lib/typescript/ui/components/QuickActions.d.ts +15 -0
  288. package/lib/typescript/ui/components/QuickActions.d.ts.map +1 -0
  289. package/lib/typescript/ui/components/Section.d.ts +11 -0
  290. package/lib/typescript/ui/components/Section.d.ts.map +1 -0
  291. package/lib/typescript/ui/components/SectionTitle.d.ts +9 -0
  292. package/lib/typescript/ui/components/SectionTitle.d.ts.map +1 -0
  293. package/lib/typescript/ui/components/bottomSheet/index.d.ts +4 -0
  294. package/lib/typescript/ui/components/bottomSheet/index.d.ts.map +1 -0
  295. package/lib/typescript/ui/components/icon/OxyIcon.d.ts +10 -0
  296. package/lib/typescript/ui/components/icon/OxyIcon.d.ts.map +1 -0
  297. package/lib/typescript/ui/components/icon/index.d.ts +3 -0
  298. package/lib/typescript/ui/components/icon/index.d.ts.map +1 -0
  299. package/lib/typescript/ui/components/index.d.ts +13 -0
  300. package/lib/typescript/ui/components/index.d.ts.map +1 -0
  301. package/lib/typescript/ui/context/OxyContext.d.ts +42 -0
  302. package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -0
  303. package/lib/typescript/ui/index.d.ts +15 -0
  304. package/lib/typescript/ui/index.d.ts.map +1 -0
  305. package/lib/typescript/ui/navigation/OxyRouter.d.ts +5 -0
  306. package/lib/typescript/ui/navigation/OxyRouter.d.ts.map +1 -0
  307. package/lib/typescript/ui/navigation/types.d.ts +116 -0
  308. package/lib/typescript/ui/navigation/types.d.ts.map +1 -0
  309. package/lib/typescript/ui/screens/AccountCenterScreen.d.ts +5 -0
  310. package/lib/typescript/ui/screens/AccountCenterScreen.d.ts.map +1 -0
  311. package/lib/typescript/ui/screens/AccountManagementDemo.d.ts +8 -0
  312. package/lib/typescript/ui/screens/AccountManagementDemo.d.ts.map +1 -0
  313. package/lib/typescript/ui/screens/AccountOverviewScreen.d.ts +5 -0
  314. package/lib/typescript/ui/screens/AccountOverviewScreen.d.ts.map +1 -0
  315. package/lib/typescript/ui/screens/AccountSettingsScreen.d.ts +5 -0
  316. package/lib/typescript/ui/screens/AccountSettingsScreen.d.ts.map +1 -0
  317. package/lib/typescript/ui/screens/AccountSwitcherScreen.d.ts +5 -0
  318. package/lib/typescript/ui/screens/AccountSwitcherScreen.d.ts.map +1 -0
  319. package/lib/typescript/ui/screens/AppInfoScreen.d.ts +5 -0
  320. package/lib/typescript/ui/screens/AppInfoScreen.d.ts.map +1 -0
  321. package/lib/typescript/ui/screens/BillingManagementScreen.d.ts +5 -0
  322. package/lib/typescript/ui/screens/BillingManagementScreen.d.ts.map +1 -0
  323. package/lib/typescript/ui/screens/FileManagementScreen.d.ts +8 -0
  324. package/lib/typescript/ui/screens/FileManagementScreen.d.ts.map +1 -0
  325. package/lib/typescript/ui/screens/PremiumSubscriptionScreen.d.ts +5 -0
  326. package/lib/typescript/ui/screens/PremiumSubscriptionScreen.d.ts.map +1 -0
  327. package/lib/typescript/ui/screens/ProfileScreen.d.ts +9 -0
  328. package/lib/typescript/ui/screens/ProfileScreen.d.ts.map +1 -0
  329. package/lib/typescript/ui/screens/SessionManagementScreen.d.ts +5 -0
  330. package/lib/typescript/ui/screens/SessionManagementScreen.d.ts.map +1 -0
  331. package/lib/typescript/ui/screens/SignInScreen.d.ts +5 -0
  332. package/lib/typescript/ui/screens/SignInScreen.d.ts.map +1 -0
  333. package/lib/typescript/ui/screens/SignUpScreen.d.ts +5 -0
  334. package/lib/typescript/ui/screens/SignUpScreen.d.ts.map +1 -0
  335. package/lib/typescript/ui/screens/karma/KarmaAboutScreen.d.ts +5 -0
  336. package/lib/typescript/ui/screens/karma/KarmaAboutScreen.d.ts.map +1 -0
  337. package/lib/typescript/ui/screens/karma/KarmaCenterScreen.d.ts +5 -0
  338. package/lib/typescript/ui/screens/karma/KarmaCenterScreen.d.ts.map +1 -0
  339. package/lib/typescript/ui/screens/karma/KarmaFAQScreen.d.ts +5 -0
  340. package/lib/typescript/ui/screens/karma/KarmaFAQScreen.d.ts.map +1 -0
  341. package/lib/typescript/ui/screens/karma/KarmaLeaderboardScreen.d.ts +5 -0
  342. package/lib/typescript/ui/screens/karma/KarmaLeaderboardScreen.d.ts.map +1 -0
  343. package/lib/typescript/ui/screens/karma/KarmaRewardsScreen.d.ts +5 -0
  344. package/lib/typescript/ui/screens/karma/KarmaRewardsScreen.d.ts.map +1 -0
  345. package/lib/typescript/ui/screens/karma/KarmaRulesScreen.d.ts +5 -0
  346. package/lib/typescript/ui/screens/karma/KarmaRulesScreen.d.ts.map +1 -0
  347. package/lib/typescript/ui/styles/fonts.d.ts +21 -0
  348. package/lib/typescript/ui/styles/fonts.d.ts.map +1 -0
  349. package/lib/typescript/ui/styles/index.d.ts +3 -0
  350. package/lib/typescript/ui/styles/index.d.ts.map +1 -0
  351. package/lib/typescript/ui/styles/theme.d.ts +68 -0
  352. package/lib/typescript/ui/styles/theme.d.ts.map +1 -0
  353. package/lib/typescript/utils/deviceManager.d.ts +66 -0
  354. package/lib/typescript/utils/deviceManager.d.ts.map +1 -0
  355. package/lib/typescript/utils/index.d.ts +3 -0
  356. package/lib/typescript/utils/index.d.ts.map +1 -0
  357. package/lib/typescript/utils/polyfills.d.ts +6 -0
  358. package/lib/typescript/utils/polyfills.d.ts.map +1 -0
  359. package/package.json +20 -4
@@ -0,0 +1,937 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _OxyContext = require("../context/OxyContext.js");
10
+ var _index = require("../styles/index.js");
11
+ var _vectorIcons = require("@expo/vector-icons");
12
+ var _reactNativeSvg = _interopRequireWildcard(require("react-native-svg"));
13
+ var _sonner = require("../../lib/sonner.js");
14
+ var _jsxRuntime = require("react/jsx-runtime");
15
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
16
+ const SignUpScreen = ({
17
+ navigate,
18
+ goBack,
19
+ theme
20
+ }) => {
21
+ // Form data states
22
+ const [username, setUsername] = (0, _react.useState)('');
23
+ const [email, setEmail] = (0, _react.useState)('');
24
+ const [password, setPassword] = (0, _react.useState)('');
25
+ const [confirmPassword, setConfirmPassword] = (0, _react.useState)('');
26
+ const [showPassword, setShowPassword] = (0, _react.useState)(false);
27
+ const [showConfirmPassword, setShowConfirmPassword] = (0, _react.useState)(false);
28
+ const [errorMessage, setErrorMessage] = (0, _react.useState)('');
29
+
30
+ // Multi-step form states
31
+ const [currentStep, setCurrentStep] = (0, _react.useState)(0);
32
+ const [isInputFocused, setIsInputFocused] = (0, _react.useState)(false);
33
+ const [isValidating, setIsValidating] = (0, _react.useState)(false);
34
+ const [validationStatus, setValidationStatus] = (0, _react.useState)('idle');
35
+
36
+ // Cache for validation results
37
+ const validationCache = (0, _react.useRef)(new Map());
38
+ const fadeAnim = (0, _react.useRef)(new _reactNative.Animated.Value(1)).current;
39
+ const slideAnim = (0, _react.useRef)(new _reactNative.Animated.Value(0)).current;
40
+ const heightAnim = (0, _react.useRef)(new _reactNative.Animated.Value(400)).current;
41
+ const [containerHeight, setContainerHeight] = (0, _react.useState)(400);
42
+ const {
43
+ signUp,
44
+ isLoading,
45
+ user,
46
+ isAuthenticated,
47
+ oxyServices
48
+ } = (0, _OxyContext.useOxy)();
49
+ const colors = (0, _index.useThemeColors)(theme);
50
+ const commonStyles = (0, _index.createCommonStyles)(theme);
51
+
52
+ // Memoized styles to prevent rerenders
53
+ const styles = (0, _react.useMemo)(() => createStyles(colors, theme), [colors, theme]);
54
+
55
+ // Input focus animations
56
+ const handleInputFocus = (0, _react.useCallback)(() => {
57
+ setIsInputFocused(true);
58
+ }, []);
59
+ const handleInputBlur = (0, _react.useCallback)(() => {
60
+ setIsInputFocused(false);
61
+ }, []);
62
+
63
+ // Memoized input change handlers
64
+ const handleUsernameChange = (0, _react.useCallback)(text => {
65
+ setUsername(text);
66
+ if (validationStatus === 'invalid') {
67
+ setErrorMessage('');
68
+ setValidationStatus('idle');
69
+ }
70
+ }, [validationStatus]);
71
+ const handleEmailChange = (0, _react.useCallback)(text => {
72
+ setEmail(text);
73
+ setErrorMessage('');
74
+ }, []);
75
+ const handlePasswordChange = (0, _react.useCallback)(text => {
76
+ setPassword(text);
77
+ setErrorMessage('');
78
+ }, []);
79
+ const handleConfirmPasswordChange = (0, _react.useCallback)(text => {
80
+ setConfirmPassword(text);
81
+ setErrorMessage('');
82
+ }, []);
83
+
84
+ // Username availability validation using core services
85
+ const validateUsername = (0, _react.useCallback)(async usernameToValidate => {
86
+ if (!usernameToValidate || usernameToValidate.length < 3) {
87
+ setValidationStatus('invalid');
88
+ return false;
89
+ }
90
+
91
+ // Check cache first (cache valid for 5 minutes)
92
+ const cached = validationCache.current.get(usernameToValidate);
93
+ const now = Date.now();
94
+ if (cached && now - cached.timestamp < 5 * 60 * 1000) {
95
+ setValidationStatus(cached.available ? 'valid' : 'invalid');
96
+ setErrorMessage(cached.available ? '' : 'Username is already taken');
97
+ return cached.available;
98
+ }
99
+ setIsValidating(true);
100
+ setValidationStatus('validating');
101
+ try {
102
+ const result = await oxyServices.checkUsernameAvailability(usernameToValidate);
103
+ if (result.available) {
104
+ setValidationStatus('valid');
105
+ setErrorMessage('');
106
+
107
+ // Cache the result
108
+ validationCache.current.set(usernameToValidate, {
109
+ available: true,
110
+ timestamp: now
111
+ });
112
+ return true;
113
+ } else {
114
+ setValidationStatus('invalid');
115
+ setErrorMessage(result.message || 'Username is already taken');
116
+
117
+ // Cache the result
118
+ validationCache.current.set(usernameToValidate, {
119
+ available: false,
120
+ timestamp: now
121
+ });
122
+ return false;
123
+ }
124
+ } catch (error) {
125
+ console.error('Username validation error:', error);
126
+ setValidationStatus('invalid');
127
+ setErrorMessage('Unable to validate username. Please try again.');
128
+ return false;
129
+ } finally {
130
+ setIsValidating(false);
131
+ }
132
+ }, [oxyServices]);
133
+
134
+ // Debounced username validation
135
+ (0, _react.useEffect)(() => {
136
+ if (!username || username.length < 3) {
137
+ setValidationStatus('idle');
138
+ setErrorMessage('');
139
+ return;
140
+ }
141
+ const timeoutId = setTimeout(() => {
142
+ validateUsername(username);
143
+ }, 800);
144
+ return () => clearTimeout(timeoutId);
145
+ }, [username, validateUsername]);
146
+
147
+ // Cleanup cache on unmount
148
+ (0, _react.useEffect)(() => {
149
+ return () => {
150
+ validationCache.current.clear();
151
+ };
152
+ }, []);
153
+
154
+ // Animation functions
155
+ const animateTransition = (0, _react.useCallback)(nextStep => {
156
+ _reactNative.Animated.timing(fadeAnim, {
157
+ toValue: 0,
158
+ duration: 250,
159
+ useNativeDriver: true
160
+ }).start(() => {
161
+ setCurrentStep(nextStep);
162
+ slideAnim.setValue(-100);
163
+ _reactNative.Animated.parallel([_reactNative.Animated.timing(fadeAnim, {
164
+ toValue: 1,
165
+ duration: 250,
166
+ useNativeDriver: true
167
+ }), _reactNative.Animated.timing(slideAnim, {
168
+ toValue: 0,
169
+ duration: 300,
170
+ useNativeDriver: true
171
+ })]).start();
172
+ });
173
+ }, [fadeAnim, slideAnim]);
174
+ const nextStep = (0, _react.useCallback)(() => {
175
+ if (currentStep < 3) {
176
+ animateTransition(currentStep + 1);
177
+ }
178
+ }, [currentStep, animateTransition]);
179
+ const prevStep = (0, _react.useCallback)(() => {
180
+ if (currentStep > 0) {
181
+ animateTransition(currentStep - 1);
182
+ }
183
+ }, [currentStep, animateTransition]);
184
+ const validateEmail = (0, _react.useCallback)(email => {
185
+ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
186
+ return emailRegex.test(email);
187
+ }, []);
188
+ const handleSignUp = (0, _react.useCallback)(async () => {
189
+ if (!username || !email || !password || !confirmPassword) {
190
+ _sonner.toast.error('Please fill in all fields');
191
+ return;
192
+ }
193
+ if (!validateEmail(email)) {
194
+ _sonner.toast.error('Please enter a valid email address');
195
+ return;
196
+ }
197
+ if (validationStatus !== 'valid') {
198
+ _sonner.toast.error('Please enter a valid username');
199
+ return;
200
+ }
201
+ if (password !== confirmPassword) {
202
+ _sonner.toast.error('Passwords do not match');
203
+ return;
204
+ }
205
+ if (password.length < 8) {
206
+ _sonner.toast.error('Password must be at least 8 characters long');
207
+ return;
208
+ }
209
+ try {
210
+ setErrorMessage('');
211
+ await signUp(username, email, password);
212
+ _sonner.toast.success('Account created successfully! Welcome to Oxy!');
213
+ } catch (error) {
214
+ _sonner.toast.error(error.message || 'Sign up failed');
215
+ }
216
+ }, [username, email, password, confirmPassword, validationStatus, validateEmail, signUp]);
217
+
218
+ // Step components
219
+ const renderWelcomeStep = (0, _react.useMemo)(() => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Animated.View, {
220
+ style: [styles.stepContainer, {
221
+ opacity: fadeAnim,
222
+ transform: [{
223
+ translateX: slideAnim
224
+ }]
225
+ }],
226
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
227
+ style: styles.welcomeImageContainer,
228
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNativeSvg.default, {
229
+ width: 220,
230
+ height: 120,
231
+ viewBox: "0 0 220 120",
232
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.Path, {
233
+ d: "M30 100 Q60 20 110 60 Q160 100 190 40",
234
+ stroke: colors.primary,
235
+ strokeWidth: "8",
236
+ fill: "none"
237
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.Circle, {
238
+ cx: "60",
239
+ cy: "60",
240
+ r: "18",
241
+ fill: colors.primary,
242
+ opacity: "0.18"
243
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.Circle, {
244
+ cx: "110",
245
+ cy: "60",
246
+ r: "24",
247
+ fill: colors.primary,
248
+ opacity: "0.25"
249
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.Circle, {
250
+ cx: "170",
251
+ cy: "50",
252
+ r: "14",
253
+ fill: colors.primary,
254
+ opacity: "0.15"
255
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.Circle, {
256
+ cx: "110",
257
+ cy: "60",
258
+ r: "32",
259
+ fill: "#fff",
260
+ opacity: "0.7"
261
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.Circle, {
262
+ cx: "100",
263
+ cy: "55",
264
+ r: "4",
265
+ fill: colors.primary
266
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.Circle, {
267
+ cx: "120",
268
+ cy: "55",
269
+ r: "4",
270
+ fill: colors.primary
271
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.Path, {
272
+ d: "M104 68 Q110 75 116 68",
273
+ stroke: colors.primary,
274
+ strokeWidth: "2",
275
+ fill: "none",
276
+ strokeLinecap: "round"
277
+ })]
278
+ })
279
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
280
+ style: [styles.welcomeText, {
281
+ color: colors.text
282
+ }],
283
+ children: "We're excited to have you join us. Let's get your account set up in just a few easy steps."
284
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
285
+ style: [styles.button, {
286
+ backgroundColor: colors.primary
287
+ }],
288
+ onPress: nextStep,
289
+ testID: "welcome-next-button",
290
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
291
+ style: styles.buttonText,
292
+ children: "Get Started"
293
+ })
294
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
295
+ style: styles.footerTextContainer,
296
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
297
+ style: [styles.footerText, {
298
+ color: colors.text
299
+ }],
300
+ children: ["Already have an account?", ' ']
301
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
302
+ onPress: () => navigate('SignIn'),
303
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
304
+ style: [styles.linkText, {
305
+ color: colors.primary
306
+ }],
307
+ children: "Sign In"
308
+ })
309
+ })]
310
+ })]
311
+ }), [fadeAnim, slideAnim, colors, nextStep, navigate, styles]);
312
+ const renderIdentityStep = (0, _react.useMemo)(() => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Animated.View, {
313
+ style: [styles.stepContainer, {
314
+ opacity: fadeAnim,
315
+ transform: [{
316
+ translateX: slideAnim
317
+ }]
318
+ }],
319
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
320
+ style: [styles.stepTitle, {
321
+ color: colors.text
322
+ }],
323
+ children: "Who are you?"
324
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
325
+ style: styles.inputContainer,
326
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
327
+ style: [styles.label, {
328
+ color: colors.text
329
+ }],
330
+ children: "Username"
331
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
332
+ style: {
333
+ position: 'relative'
334
+ },
335
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TextInput, {
336
+ style: [styles.input, {
337
+ backgroundColor: colors.inputBackground,
338
+ borderColor: colors.border,
339
+ color: colors.text
340
+ }],
341
+ placeholder: "Choose a username",
342
+ placeholderTextColor: colors.placeholder,
343
+ value: username,
344
+ onChangeText: handleUsernameChange,
345
+ autoCapitalize: "none",
346
+ testID: "username-input"
347
+ }), validationStatus === 'validating' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
348
+ size: "small",
349
+ color: colors.primary,
350
+ style: styles.validationIndicator
351
+ }), validationStatus === 'valid' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
352
+ name: "checkmark-circle",
353
+ size: 20,
354
+ color: colors.success,
355
+ style: styles.validationIndicator
356
+ }), validationStatus === 'invalid' && username.length >= 3 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
357
+ name: "close-circle",
358
+ size: 20,
359
+ color: colors.error,
360
+ style: styles.validationIndicator
361
+ })]
362
+ }), validationStatus === 'valid' && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
363
+ style: [styles.validationSuccessCard, {
364
+ backgroundColor: colors.success + '15'
365
+ }],
366
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
367
+ name: "checkmark-circle",
368
+ size: 16,
369
+ color: colors.success
370
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
371
+ style: [styles.validationText, {
372
+ color: colors.success
373
+ }],
374
+ children: "Username is available"
375
+ })]
376
+ }), validationStatus === 'invalid' && username.length >= 3 && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
377
+ style: [styles.validationErrorCard, {
378
+ backgroundColor: colors.error + '15'
379
+ }],
380
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
381
+ name: "alert-circle",
382
+ size: 16,
383
+ color: colors.error
384
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
385
+ style: [styles.validationText, {
386
+ color: colors.error
387
+ }],
388
+ children: errorMessage || 'Username is already taken'
389
+ })]
390
+ })]
391
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
392
+ style: styles.inputContainer,
393
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
394
+ style: [styles.label, {
395
+ color: colors.text
396
+ }],
397
+ children: "Email"
398
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TextInput, {
399
+ style: [styles.input, {
400
+ backgroundColor: colors.inputBackground,
401
+ borderColor: colors.border,
402
+ color: colors.text
403
+ }],
404
+ placeholder: "Enter your email",
405
+ placeholderTextColor: colors.placeholder,
406
+ value: email,
407
+ onChangeText: handleEmailChange,
408
+ autoCapitalize: "none",
409
+ keyboardType: "email-address",
410
+ testID: "email-input"
411
+ })]
412
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
413
+ style: styles.navigationButtons,
414
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
415
+ style: [styles.navButton, styles.backButton, {
416
+ borderColor: colors.border
417
+ }],
418
+ onPress: prevStep,
419
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
420
+ style: [styles.navButtonText, {
421
+ color: colors.text
422
+ }],
423
+ children: "Back"
424
+ })
425
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
426
+ style: [styles.navButton, styles.nextButton, {
427
+ backgroundColor: colors.primary
428
+ }],
429
+ onPress: nextStep,
430
+ disabled: !username || !email || !validateEmail(email) || validationStatus !== 'valid',
431
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
432
+ style: [styles.navButtonText, {
433
+ color: '#FFFFFF'
434
+ }],
435
+ children: "Next"
436
+ })
437
+ })]
438
+ })]
439
+ }), [fadeAnim, slideAnim, colors, username, email, validationStatus, errorMessage, handleUsernameChange, handleEmailChange, validateEmail, prevStep, nextStep, styles]);
440
+ const renderSecurityStep = (0, _react.useMemo)(() => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Animated.View, {
441
+ style: [styles.stepContainer, {
442
+ opacity: fadeAnim,
443
+ transform: [{
444
+ translateX: slideAnim
445
+ }]
446
+ }],
447
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
448
+ style: [styles.stepTitle, {
449
+ color: colors.text
450
+ }],
451
+ children: "Secure your account"
452
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
453
+ style: styles.inputContainer,
454
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
455
+ style: [styles.label, {
456
+ color: colors.text
457
+ }],
458
+ children: "Password"
459
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
460
+ style: {
461
+ position: 'relative'
462
+ },
463
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TextInput, {
464
+ style: [styles.input, {
465
+ backgroundColor: colors.inputBackground,
466
+ borderColor: colors.border,
467
+ color: colors.text
468
+ }],
469
+ placeholder: "Create a password",
470
+ placeholderTextColor: colors.placeholder,
471
+ value: password,
472
+ onChangeText: handlePasswordChange,
473
+ secureTextEntry: !showPassword,
474
+ testID: "password-input"
475
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
476
+ style: styles.passwordToggle,
477
+ onPress: () => setShowPassword(!showPassword),
478
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
479
+ name: showPassword ? 'eye-off' : 'eye',
480
+ size: 20,
481
+ color: colors.placeholder
482
+ })
483
+ })]
484
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
485
+ style: [styles.passwordHint, {
486
+ color: colors.secondaryText
487
+ }],
488
+ children: "Password must be at least 8 characters long"
489
+ })]
490
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
491
+ style: styles.inputContainer,
492
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
493
+ style: [styles.label, {
494
+ color: colors.text
495
+ }],
496
+ children: "Confirm Password"
497
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
498
+ style: {
499
+ position: 'relative'
500
+ },
501
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TextInput, {
502
+ style: [styles.input, {
503
+ backgroundColor: colors.inputBackground,
504
+ borderColor: colors.border,
505
+ color: colors.text
506
+ }],
507
+ placeholder: "Confirm your password",
508
+ placeholderTextColor: colors.placeholder,
509
+ value: confirmPassword,
510
+ onChangeText: handleConfirmPasswordChange,
511
+ secureTextEntry: !showConfirmPassword,
512
+ testID: "confirm-password-input"
513
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
514
+ style: styles.passwordToggle,
515
+ onPress: () => setShowConfirmPassword(!showConfirmPassword),
516
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_vectorIcons.Ionicons, {
517
+ name: showConfirmPassword ? 'eye-off' : 'eye',
518
+ size: 20,
519
+ color: colors.placeholder
520
+ })
521
+ })]
522
+ })]
523
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
524
+ style: styles.navigationButtons,
525
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
526
+ style: [styles.navButton, styles.backButton, {
527
+ borderColor: colors.border
528
+ }],
529
+ onPress: prevStep,
530
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
531
+ style: [styles.navButtonText, {
532
+ color: colors.text
533
+ }],
534
+ children: "Back"
535
+ })
536
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
537
+ style: [styles.navButton, styles.nextButton, {
538
+ backgroundColor: colors.primary
539
+ }],
540
+ onPress: nextStep,
541
+ disabled: !password || password.length < 8 || password !== confirmPassword,
542
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
543
+ style: [styles.navButtonText, {
544
+ color: '#FFFFFF'
545
+ }],
546
+ children: "Next"
547
+ })
548
+ })]
549
+ })]
550
+ }), [fadeAnim, slideAnim, colors, password, confirmPassword, showPassword, showConfirmPassword, handlePasswordChange, handleConfirmPasswordChange, prevStep, nextStep, styles]);
551
+ const renderSummaryStep = (0, _react.useMemo)(() => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Animated.View, {
552
+ style: [styles.stepContainer, {
553
+ opacity: fadeAnim,
554
+ transform: [{
555
+ translateX: slideAnim
556
+ }]
557
+ }],
558
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
559
+ style: [styles.stepTitle, {
560
+ color: colors.text
561
+ }],
562
+ children: "Ready to join"
563
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
564
+ style: styles.summaryContainer,
565
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
566
+ style: styles.summaryRow,
567
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
568
+ style: [styles.summaryLabel, {
569
+ color: colors.secondaryText
570
+ }],
571
+ children: "Username:"
572
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
573
+ style: [styles.summaryValue, {
574
+ color: colors.text
575
+ }],
576
+ children: username
577
+ })]
578
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
579
+ style: styles.summaryRow,
580
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
581
+ style: [styles.summaryLabel, {
582
+ color: colors.secondaryText
583
+ }],
584
+ children: "Email:"
585
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
586
+ style: [styles.summaryValue, {
587
+ color: colors.text
588
+ }],
589
+ children: email
590
+ })]
591
+ })]
592
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
593
+ style: [styles.button, {
594
+ backgroundColor: colors.primary
595
+ }],
596
+ onPress: handleSignUp,
597
+ disabled: isLoading,
598
+ testID: "signup-button",
599
+ children: isLoading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
600
+ color: "#FFFFFF",
601
+ size: "small"
602
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
603
+ style: styles.buttonText,
604
+ children: "Create Account"
605
+ })
606
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
607
+ style: styles.navigationButtons,
608
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
609
+ style: [styles.navButton, styles.backButton, {
610
+ borderColor: colors.border
611
+ }],
612
+ onPress: prevStep,
613
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
614
+ style: [styles.navButtonText, {
615
+ color: colors.text
616
+ }],
617
+ children: "Back"
618
+ })
619
+ })
620
+ })]
621
+ }), [fadeAnim, slideAnim, colors, username, email, isLoading, handleSignUp, prevStep, styles]);
622
+ const renderProgressIndicators = (0, _react.useMemo)(() => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
623
+ style: styles.progressContainer,
624
+ children: [0, 1, 2, 3].map(step => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
625
+ style: [styles.progressDot, currentStep === step ? {
626
+ backgroundColor: colors.primary,
627
+ width: 24
628
+ } : {
629
+ backgroundColor: colors.border
630
+ }]
631
+ }, step))
632
+ }), [currentStep, colors, styles]);
633
+ const renderCurrentStep = (0, _react.useCallback)(() => {
634
+ switch (currentStep) {
635
+ case 0:
636
+ return renderWelcomeStep;
637
+ case 1:
638
+ return renderIdentityStep;
639
+ case 2:
640
+ return renderSecurityStep;
641
+ case 3:
642
+ return renderSummaryStep;
643
+ default:
644
+ return renderWelcomeStep;
645
+ }
646
+ }, [currentStep, renderWelcomeStep, renderIdentityStep, renderSecurityStep, renderSummaryStep]);
647
+
648
+ // If user is already authenticated, show user info and account center option
649
+ if (user && isAuthenticated) {
650
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.KeyboardAvoidingView, {
651
+ style: [styles.container, {
652
+ backgroundColor: colors.background
653
+ }],
654
+ behavior: _reactNative.Platform.OS === 'ios' ? 'padding' : 'height',
655
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.StatusBar, {
656
+ barStyle: theme === 'dark' ? 'light-content' : 'dark-content',
657
+ backgroundColor: colors.background
658
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.ScrollView, {
659
+ contentContainerStyle: styles.scrollContent,
660
+ showsVerticalScrollIndicator: false,
661
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
662
+ style: [styles.welcomeTitle, {
663
+ color: colors.text
664
+ }],
665
+ children: ["Welcome, ", user.username, "!"]
666
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
667
+ style: [styles.userInfoContainer, {
668
+ backgroundColor: colors.inputBackground
669
+ }],
670
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
671
+ style: [styles.userInfoText, {
672
+ color: colors.text
673
+ }],
674
+ children: "You are already signed in."
675
+ }), user.email && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
676
+ style: [styles.userInfoText, {
677
+ color: colors.secondaryText
678
+ }],
679
+ children: ["Email: ", user.email]
680
+ })]
681
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
682
+ style: styles.actionButtonsContainer,
683
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
684
+ style: [styles.button, {
685
+ backgroundColor: colors.primary
686
+ }],
687
+ onPress: () => navigate('AccountCenter'),
688
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
689
+ style: styles.buttonText,
690
+ children: "Go to Account Center"
691
+ })
692
+ })
693
+ })]
694
+ })]
695
+ });
696
+ }
697
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.KeyboardAvoidingView, {
698
+ style: [styles.container, {
699
+ backgroundColor: colors.background
700
+ }],
701
+ behavior: _reactNative.Platform.OS === 'ios' ? 'padding' : 'height',
702
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.StatusBar, {
703
+ barStyle: theme === 'dark' ? 'light-content' : 'dark-content',
704
+ backgroundColor: colors.background
705
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.ScrollView, {
706
+ contentContainerStyle: styles.scrollContent,
707
+ showsVerticalScrollIndicator: false,
708
+ keyboardShouldPersistTaps: "handled",
709
+ children: [renderProgressIndicators, renderCurrentStep()]
710
+ })]
711
+ });
712
+ };
713
+
714
+ // Memoized styles creation
715
+ const createStyles = (colors, theme) => _reactNative.StyleSheet.create({
716
+ container: {
717
+ flex: 1
718
+ },
719
+ scrollContent: {
720
+ flexGrow: 1,
721
+ paddingHorizontal: 24,
722
+ paddingTop: 40,
723
+ paddingBottom: 40
724
+ },
725
+ stepContainer: {
726
+ flex: 1,
727
+ justifyContent: 'center',
728
+ alignItems: 'center',
729
+ minHeight: 500
730
+ },
731
+ welcomeImageContainer: {
732
+ alignItems: 'center',
733
+ justifyContent: 'center',
734
+ marginVertical: 30
735
+ },
736
+ welcomeTitle: {
737
+ fontFamily: _reactNative.Platform.OS === 'web' ? 'Phudu' : 'Phudu-Bold',
738
+ fontWeight: _reactNative.Platform.OS === 'web' ? 'bold' : undefined,
739
+ fontSize: 42,
740
+ lineHeight: 48,
741
+ marginBottom: 24,
742
+ textAlign: 'left',
743
+ letterSpacing: -1
744
+ },
745
+ welcomeText: {
746
+ fontSize: 16,
747
+ textAlign: 'left',
748
+ marginBottom: 30,
749
+ lineHeight: 24
750
+ },
751
+ stepTitle: {
752
+ fontFamily: _reactNative.Platform.OS === 'web' ? 'Phudu' : 'Phudu-Bold',
753
+ fontWeight: _reactNative.Platform.OS === 'web' ? 'bold' : undefined,
754
+ fontSize: 34,
755
+ marginBottom: 20,
756
+ color: colors.primary,
757
+ maxWidth: '90%',
758
+ textAlign: 'left'
759
+ },
760
+ inputContainer: {
761
+ marginBottom: 18,
762
+ width: '100%'
763
+ },
764
+ label: {
765
+ fontSize: 15,
766
+ marginBottom: 8,
767
+ fontWeight: '500',
768
+ letterSpacing: 0.1
769
+ },
770
+ input: {
771
+ height: 48,
772
+ borderRadius: 16,
773
+ paddingHorizontal: 16,
774
+ borderWidth: 1,
775
+ fontSize: 16,
776
+ marginBottom: 2
777
+ },
778
+ validationIndicator: {
779
+ position: 'absolute',
780
+ right: 16,
781
+ top: 14
782
+ },
783
+ validationSuccessCard: {
784
+ flexDirection: 'row',
785
+ alignItems: 'center',
786
+ padding: 12,
787
+ borderRadius: 12,
788
+ marginTop: 8,
789
+ gap: 8
790
+ },
791
+ validationErrorCard: {
792
+ flexDirection: 'row',
793
+ alignItems: 'center',
794
+ padding: 12,
795
+ borderRadius: 12,
796
+ marginTop: 8,
797
+ gap: 8
798
+ },
799
+ validationText: {
800
+ fontSize: 12,
801
+ fontWeight: '500'
802
+ },
803
+ passwordToggle: {
804
+ position: 'absolute',
805
+ right: 16,
806
+ top: 14,
807
+ padding: 4
808
+ },
809
+ passwordHint: {
810
+ fontSize: 12,
811
+ marginTop: 4
812
+ },
813
+ button: {
814
+ height: 48,
815
+ borderRadius: 24,
816
+ alignItems: 'center',
817
+ justifyContent: 'center',
818
+ marginTop: 24,
819
+ shadowColor: colors.primary,
820
+ shadowOpacity: 0.12,
821
+ shadowOffset: {
822
+ width: 0,
823
+ height: 2
824
+ },
825
+ shadowRadius: 8,
826
+ elevation: 2,
827
+ width: '100%'
828
+ },
829
+ buttonText: {
830
+ color: '#FFFFFF',
831
+ fontSize: 17,
832
+ fontWeight: '700',
833
+ letterSpacing: 0.2
834
+ },
835
+ footerTextContainer: {
836
+ flexDirection: 'row',
837
+ justifyContent: 'center',
838
+ marginTop: 28
839
+ },
840
+ footerText: {
841
+ fontSize: 15
842
+ },
843
+ linkText: {
844
+ fontSize: 15,
845
+ fontWeight: '700'
846
+ },
847
+ userInfoContainer: {
848
+ padding: 20,
849
+ marginVertical: 20,
850
+ borderRadius: 24,
851
+ alignItems: 'center',
852
+ shadowColor: '#000',
853
+ shadowOpacity: 0.04,
854
+ shadowOffset: {
855
+ width: 0,
856
+ height: 1
857
+ },
858
+ shadowRadius: 4,
859
+ elevation: 1
860
+ },
861
+ userInfoText: {
862
+ fontSize: 16,
863
+ marginBottom: 8,
864
+ textAlign: 'center'
865
+ },
866
+ actionButtonsContainer: {
867
+ marginTop: 24
868
+ },
869
+ navigationButtons: {
870
+ flexDirection: 'row',
871
+ justifyContent: 'space-between',
872
+ alignItems: 'center',
873
+ marginTop: 28,
874
+ width: '100%'
875
+ },
876
+ navButton: {
877
+ borderRadius: 24,
878
+ height: 44,
879
+ alignItems: 'center',
880
+ justifyContent: 'center',
881
+ paddingHorizontal: 28,
882
+ backgroundColor: '#F3E5F5'
883
+ },
884
+ backButton: {
885
+ backgroundColor: 'transparent',
886
+ borderWidth: 1
887
+ },
888
+ nextButton: {
889
+ minWidth: 100
890
+ },
891
+ navButtonText: {
892
+ fontSize: 16,
893
+ fontWeight: '700'
894
+ },
895
+ progressContainer: {
896
+ flexDirection: 'row',
897
+ justifyContent: 'center',
898
+ marginBottom: 20,
899
+ marginTop: 8
900
+ },
901
+ progressDot: {
902
+ height: 10,
903
+ width: 10,
904
+ borderRadius: 5,
905
+ marginHorizontal: 6,
906
+ borderWidth: 2,
907
+ borderColor: '#fff',
908
+ shadowColor: colors.primary,
909
+ shadowOpacity: 0.08,
910
+ shadowOffset: {
911
+ width: 0,
912
+ height: 1
913
+ },
914
+ shadowRadius: 2,
915
+ elevation: 1
916
+ },
917
+ summaryContainer: {
918
+ padding: 0,
919
+ marginBottom: 24,
920
+ width: '100%'
921
+ },
922
+ summaryRow: {
923
+ flexDirection: 'row',
924
+ marginBottom: 10
925
+ },
926
+ summaryLabel: {
927
+ fontSize: 15,
928
+ width: 90
929
+ },
930
+ summaryValue: {
931
+ fontSize: 15,
932
+ fontWeight: '600',
933
+ flex: 1
934
+ }
935
+ });
936
+ var _default = exports.default = SignUpScreen;
937
+ //# sourceMappingURL=SignUpScreen.js.map