@oxyhq/services 5.10.16 → 5.11.1

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 (457) hide show
  1. package/README.md +78 -14
  2. package/lib/commonjs/assets/assets/icons/OxyServices.tsx +2 -2
  3. package/lib/commonjs/assets/assets/illustrations/HighFive.tsx +1 -1
  4. package/lib/commonjs/assets/icons/OxyServices.js +0 -2
  5. package/lib/commonjs/assets/icons/OxyServices.js.map +1 -1
  6. package/lib/commonjs/assets/illustrations/HighFive.js +0 -2
  7. package/lib/commonjs/assets/illustrations/HighFive.js.map +1 -1
  8. package/lib/commonjs/core/OxyServices.js +238 -25
  9. package/lib/commonjs/core/OxyServices.js.map +1 -1
  10. package/lib/commonjs/index.js +86 -0
  11. package/lib/commonjs/index.js.map +1 -1
  12. package/lib/commonjs/lib/sonner-safe.js +2 -0
  13. package/lib/commonjs/lib/sonner-safe.js.map +1 -1
  14. package/lib/commonjs/lib/sonner.js +2 -0
  15. package/lib/commonjs/lib/sonner.js.map +1 -1
  16. package/lib/commonjs/ui/components/Avatar.js +0 -2
  17. package/lib/commonjs/ui/components/Avatar.js.map +1 -1
  18. package/lib/commonjs/ui/components/FollowButton.js +4 -4
  19. package/lib/commonjs/ui/components/FollowButton.js.map +1 -1
  20. package/lib/commonjs/ui/components/FontLoader.js +3 -2
  21. package/lib/commonjs/ui/components/FontLoader.js.map +1 -1
  22. package/lib/commonjs/ui/components/GroupedItem.js +7 -4
  23. package/lib/commonjs/ui/components/GroupedItem.js.map +1 -1
  24. package/lib/commonjs/ui/components/GroupedSection.js +1 -1
  25. package/lib/commonjs/ui/components/GroupedSection.js.map +1 -1
  26. package/lib/commonjs/ui/components/Header.js +0 -1
  27. package/lib/commonjs/ui/components/Header.js.map +1 -1
  28. package/lib/commonjs/ui/components/OxyLogo.js +0 -2
  29. package/lib/commonjs/ui/components/OxyLogo.js.map +1 -1
  30. package/lib/commonjs/ui/components/OxyPayButton.js +4 -5
  31. package/lib/commonjs/ui/components/OxyPayButton.js.map +1 -1
  32. package/lib/commonjs/ui/components/OxyProvider.js +4 -3
  33. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  34. package/lib/commonjs/ui/components/OxySignInButton.js +0 -1
  35. package/lib/commonjs/ui/components/OxySignInButton.js.map +1 -1
  36. package/lib/commonjs/ui/components/ProfileCard.js +0 -1
  37. package/lib/commonjs/ui/components/ProfileCard.js.map +1 -1
  38. package/lib/commonjs/ui/components/QuickActions.js +0 -2
  39. package/lib/commonjs/ui/components/QuickActions.js.map +1 -1
  40. package/lib/commonjs/ui/components/Section.js +0 -1
  41. package/lib/commonjs/ui/components/Section.js.map +1 -1
  42. package/lib/commonjs/ui/components/SectionTitle.js +0 -2
  43. package/lib/commonjs/ui/components/SectionTitle.js.map +1 -1
  44. package/lib/commonjs/ui/components/icon/FAIRWalletIcon.js +0 -2
  45. package/lib/commonjs/ui/components/icon/FAIRWalletIcon.js.map +1 -1
  46. package/lib/commonjs/ui/components/icon/OxyIcon.js +0 -2
  47. package/lib/commonjs/ui/components/icon/OxyIcon.js.map +1 -1
  48. package/lib/commonjs/ui/components/internal/GroupedPillButtons.js +0 -2
  49. package/lib/commonjs/ui/components/internal/GroupedPillButtons.js.map +1 -1
  50. package/lib/commonjs/ui/components/internal/PinInput.js +4 -3
  51. package/lib/commonjs/ui/components/internal/PinInput.js.map +1 -1
  52. package/lib/commonjs/ui/components/internal/TextField.js +3 -3
  53. package/lib/commonjs/ui/components/internal/TextField.js.map +1 -1
  54. package/lib/commonjs/ui/hooks/useAssets.js +263 -0
  55. package/lib/commonjs/ui/hooks/useAssets.js.map +1 -0
  56. package/lib/commonjs/ui/navigation/OxyRouter.js +1 -2
  57. package/lib/commonjs/ui/navigation/OxyRouter.js.map +1 -1
  58. package/lib/commonjs/ui/screens/AccountCenterScreen.js +0 -2
  59. package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
  60. package/lib/commonjs/ui/screens/AccountManagementDemo.js +0 -1
  61. package/lib/commonjs/ui/screens/AccountManagementDemo.js.map +1 -1
  62. package/lib/commonjs/ui/screens/AccountSettingsScreen.js +2 -2
  63. package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
  64. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +5 -6
  65. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
  66. package/lib/commonjs/ui/screens/AppInfoScreen.js +1 -2
  67. package/lib/commonjs/ui/screens/AppInfoScreen.js.map +1 -1
  68. package/lib/commonjs/ui/screens/FileManagementScreen.js +631 -430
  69. package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
  70. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js +2 -2
  71. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js.map +1 -1
  72. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js +1 -2
  73. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
  74. package/lib/commonjs/ui/screens/ProfileScreen.js +1 -2
  75. package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
  76. package/lib/commonjs/ui/screens/RecoverAccountScreen.js +1 -2
  77. package/lib/commonjs/ui/screens/RecoverAccountScreen.js.map +1 -1
  78. package/lib/commonjs/ui/screens/SessionManagementScreen.js +1 -2
  79. package/lib/commonjs/ui/screens/SessionManagementScreen.js.map +1 -1
  80. package/lib/commonjs/ui/screens/SignInScreen.js +1 -2
  81. package/lib/commonjs/ui/screens/SignInScreen.js.map +1 -1
  82. package/lib/commonjs/ui/screens/UserLinksScreen.js +0 -2
  83. package/lib/commonjs/ui/screens/UserLinksScreen.js.map +1 -1
  84. package/lib/commonjs/ui/screens/internal/SignInPasswordStep.js +1 -2
  85. package/lib/commonjs/ui/screens/internal/SignInPasswordStep.js.map +1 -1
  86. package/lib/commonjs/ui/screens/internal/SignInUsernameStep.js +1 -2
  87. package/lib/commonjs/ui/screens/internal/SignInUsernameStep.js.map +1 -1
  88. package/lib/commonjs/ui/screens/internal/SignUpIdentityStep.js +1 -2
  89. package/lib/commonjs/ui/screens/internal/SignUpIdentityStep.js.map +1 -1
  90. package/lib/commonjs/ui/screens/internal/SignUpSecurityStep.js +1 -2
  91. package/lib/commonjs/ui/screens/internal/SignUpSecurityStep.js.map +1 -1
  92. package/lib/commonjs/ui/screens/internal/SignUpSummaryStep.js +0 -1
  93. package/lib/commonjs/ui/screens/internal/SignUpSummaryStep.js.map +1 -1
  94. package/lib/commonjs/ui/screens/internal/SignUpWelcomeStep.js +0 -1
  95. package/lib/commonjs/ui/screens/internal/SignUpWelcomeStep.js.map +1 -1
  96. package/lib/commonjs/ui/screens/karma/KarmaAboutScreen.js +0 -2
  97. package/lib/commonjs/ui/screens/karma/KarmaAboutScreen.js.map +1 -1
  98. package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js +1 -2
  99. package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js.map +1 -1
  100. package/lib/commonjs/ui/screens/karma/KarmaLeaderboardScreen.js +1 -2
  101. package/lib/commonjs/ui/screens/karma/KarmaLeaderboardScreen.js.map +1 -1
  102. package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js +0 -2
  103. package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js.map +1 -1
  104. package/lib/commonjs/ui/screens/karma/KarmaRulesScreen.js +1 -2
  105. package/lib/commonjs/ui/screens/karma/KarmaRulesScreen.js.map +1 -1
  106. package/lib/commonjs/ui/stores/assetStore.js +225 -0
  107. package/lib/commonjs/ui/stores/assetStore.js.map +1 -0
  108. package/lib/commonjs/ui/stores/authStore.js +1 -1
  109. package/lib/commonjs/ui/stores/authStore.js.map +1 -1
  110. package/lib/commonjs/ui/stores/fileStore.js +153 -0
  111. package/lib/commonjs/ui/stores/fileStore.js.map +1 -0
  112. package/lib/commonjs/ui/stores/followStore.js +2 -2
  113. package/lib/commonjs/ui/stores/followStore.js.map +1 -1
  114. package/lib/commonjs/utils/asyncUtils.js +1 -1
  115. package/lib/commonjs/utils/asyncUtils.js.map +1 -1
  116. package/lib/commonjs/utils/errorUtils.js +19 -11
  117. package/lib/commonjs/utils/errorUtils.js.map +1 -1
  118. package/lib/commonjs/utils/hookUtils.js +1 -1
  119. package/lib/commonjs/utils/hookUtils.js.map +1 -1
  120. package/lib/commonjs/utils/loggerUtils.js.map +1 -1
  121. package/lib/commonjs/utils/validationUtils.js +2 -2
  122. package/lib/commonjs/utils/validationUtils.js.map +1 -1
  123. package/lib/module/assets/assets/icons/OxyServices.tsx +2 -2
  124. package/lib/module/assets/assets/illustrations/HighFive.tsx +1 -1
  125. package/lib/module/assets/icons/OxyServices.js +0 -1
  126. package/lib/module/assets/icons/OxyServices.js.map +1 -1
  127. package/lib/module/assets/illustrations/HighFive.js +0 -1
  128. package/lib/module/assets/illustrations/HighFive.js.map +1 -1
  129. package/lib/module/core/OxyServices.js +238 -25
  130. package/lib/module/core/OxyServices.js.map +1 -1
  131. package/lib/module/index.js +2 -0
  132. package/lib/module/index.js.map +1 -1
  133. package/lib/module/lib/sonner-safe.js +2 -0
  134. package/lib/module/lib/sonner-safe.js.map +1 -1
  135. package/lib/module/lib/sonner.js +3 -0
  136. package/lib/module/lib/sonner.js.map +1 -1
  137. package/lib/module/ui/components/Avatar.js +0 -1
  138. package/lib/module/ui/components/Avatar.js.map +1 -1
  139. package/lib/module/ui/components/FollowButton.js +4 -3
  140. package/lib/module/ui/components/FollowButton.js.map +1 -1
  141. package/lib/module/ui/components/FontLoader.js +3 -2
  142. package/lib/module/ui/components/FontLoader.js.map +1 -1
  143. package/lib/module/ui/components/GroupedItem.js +7 -3
  144. package/lib/module/ui/components/GroupedItem.js.map +1 -1
  145. package/lib/module/ui/components/GroupedSection.js +1 -1
  146. package/lib/module/ui/components/GroupedSection.js.map +1 -1
  147. package/lib/module/ui/components/Header.js +0 -1
  148. package/lib/module/ui/components/Header.js.map +1 -1
  149. package/lib/module/ui/components/OxyLogo.js +0 -1
  150. package/lib/module/ui/components/OxyLogo.js.map +1 -1
  151. package/lib/module/ui/components/OxyPayButton.js +4 -4
  152. package/lib/module/ui/components/OxyPayButton.js.map +1 -1
  153. package/lib/module/ui/components/OxyProvider.js +4 -2
  154. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  155. package/lib/module/ui/components/OxySignInButton.js +0 -1
  156. package/lib/module/ui/components/OxySignInButton.js.map +1 -1
  157. package/lib/module/ui/components/ProfileCard.js +0 -1
  158. package/lib/module/ui/components/ProfileCard.js.map +1 -1
  159. package/lib/module/ui/components/QuickActions.js +0 -1
  160. package/lib/module/ui/components/QuickActions.js.map +1 -1
  161. package/lib/module/ui/components/Section.js +0 -1
  162. package/lib/module/ui/components/Section.js.map +1 -1
  163. package/lib/module/ui/components/SectionTitle.js +0 -1
  164. package/lib/module/ui/components/SectionTitle.js.map +1 -1
  165. package/lib/module/ui/components/icon/FAIRWalletIcon.js +0 -1
  166. package/lib/module/ui/components/icon/FAIRWalletIcon.js.map +1 -1
  167. package/lib/module/ui/components/icon/OxyIcon.js +0 -1
  168. package/lib/module/ui/components/icon/OxyIcon.js.map +1 -1
  169. package/lib/module/ui/components/internal/GroupedPillButtons.js +0 -1
  170. package/lib/module/ui/components/internal/GroupedPillButtons.js.map +1 -1
  171. package/lib/module/ui/components/internal/PinInput.js +4 -2
  172. package/lib/module/ui/components/internal/PinInput.js.map +1 -1
  173. package/lib/module/ui/components/internal/TextField.js +3 -3
  174. package/lib/module/ui/components/internal/TextField.js.map +1 -1
  175. package/lib/module/ui/context/OxyContext.js.map +1 -1
  176. package/lib/module/ui/hooks/useAssets.js +257 -0
  177. package/lib/module/ui/hooks/useAssets.js.map +1 -0
  178. package/lib/module/ui/navigation/OxyRouter.js +1 -1
  179. package/lib/module/ui/navigation/OxyRouter.js.map +1 -1
  180. package/lib/module/ui/screens/AccountCenterScreen.js +0 -1
  181. package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
  182. package/lib/module/ui/screens/AccountManagementDemo.js +0 -1
  183. package/lib/module/ui/screens/AccountManagementDemo.js.map +1 -1
  184. package/lib/module/ui/screens/AccountSettingsScreen.js +2 -2
  185. package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
  186. package/lib/module/ui/screens/AccountSwitcherScreen.js +5 -5
  187. package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
  188. package/lib/module/ui/screens/AppInfoScreen.js +1 -1
  189. package/lib/module/ui/screens/AppInfoScreen.js.map +1 -1
  190. package/lib/module/ui/screens/FileManagementScreen.js +633 -432
  191. package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
  192. package/lib/module/ui/screens/PaymentGatewayScreen.js +1 -1
  193. package/lib/module/ui/screens/PaymentGatewayScreen.js.map +1 -1
  194. package/lib/module/ui/screens/PremiumSubscriptionScreen.js +1 -1
  195. package/lib/module/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
  196. package/lib/module/ui/screens/ProfileScreen.js +1 -1
  197. package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
  198. package/lib/module/ui/screens/RecoverAccountScreen.js +1 -1
  199. package/lib/module/ui/screens/RecoverAccountScreen.js.map +1 -1
  200. package/lib/module/ui/screens/SessionManagementScreen.js +1 -1
  201. package/lib/module/ui/screens/SessionManagementScreen.js.map +1 -1
  202. package/lib/module/ui/screens/SignInScreen.js +1 -1
  203. package/lib/module/ui/screens/SignInScreen.js.map +1 -1
  204. package/lib/module/ui/screens/UserLinksScreen.js +0 -1
  205. package/lib/module/ui/screens/UserLinksScreen.js.map +1 -1
  206. package/lib/module/ui/screens/internal/SignInPasswordStep.js +1 -1
  207. package/lib/module/ui/screens/internal/SignInPasswordStep.js.map +1 -1
  208. package/lib/module/ui/screens/internal/SignInUsernameStep.js +1 -1
  209. package/lib/module/ui/screens/internal/SignInUsernameStep.js.map +1 -1
  210. package/lib/module/ui/screens/internal/SignUpIdentityStep.js +1 -1
  211. package/lib/module/ui/screens/internal/SignUpIdentityStep.js.map +1 -1
  212. package/lib/module/ui/screens/internal/SignUpSecurityStep.js +1 -1
  213. package/lib/module/ui/screens/internal/SignUpSecurityStep.js.map +1 -1
  214. package/lib/module/ui/screens/internal/SignUpSummaryStep.js +0 -1
  215. package/lib/module/ui/screens/internal/SignUpSummaryStep.js.map +1 -1
  216. package/lib/module/ui/screens/internal/SignUpWelcomeStep.js +0 -1
  217. package/lib/module/ui/screens/internal/SignUpWelcomeStep.js.map +1 -1
  218. package/lib/module/ui/screens/karma/KarmaAboutScreen.js +0 -1
  219. package/lib/module/ui/screens/karma/KarmaAboutScreen.js.map +1 -1
  220. package/lib/module/ui/screens/karma/KarmaCenterScreen.js +1 -1
  221. package/lib/module/ui/screens/karma/KarmaCenterScreen.js.map +1 -1
  222. package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js +1 -1
  223. package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js.map +1 -1
  224. package/lib/module/ui/screens/karma/KarmaRewardsScreen.js +0 -1
  225. package/lib/module/ui/screens/karma/KarmaRewardsScreen.js.map +1 -1
  226. package/lib/module/ui/screens/karma/KarmaRulesScreen.js +1 -1
  227. package/lib/module/ui/screens/karma/KarmaRulesScreen.js.map +1 -1
  228. package/lib/module/ui/stores/assetStore.js +212 -0
  229. package/lib/module/ui/stores/assetStore.js.map +1 -0
  230. package/lib/module/ui/stores/authStore.js +1 -1
  231. package/lib/module/ui/stores/authStore.js.map +1 -1
  232. package/lib/module/ui/stores/fileStore.js +145 -0
  233. package/lib/module/ui/stores/fileStore.js.map +1 -0
  234. package/lib/module/ui/stores/followStore.js +2 -2
  235. package/lib/module/ui/stores/followStore.js.map +1 -1
  236. package/lib/module/ui/styles/fonts.js.map +1 -1
  237. package/lib/module/ui/styles/theme.js.map +1 -1
  238. package/lib/module/utils/asyncUtils.js +1 -1
  239. package/lib/module/utils/asyncUtils.js.map +1 -1
  240. package/lib/module/utils/errorUtils.js +19 -11
  241. package/lib/module/utils/errorUtils.js.map +1 -1
  242. package/lib/module/utils/hookUtils.js +1 -1
  243. package/lib/module/utils/hookUtils.js.map +1 -1
  244. package/lib/module/utils/loggerUtils.js.map +1 -1
  245. package/lib/module/utils/validationUtils.js +2 -2
  246. package/lib/module/utils/validationUtils.js.map +1 -1
  247. package/lib/typescript/assets/icons/OxyServices.d.ts +2 -2
  248. package/lib/typescript/assets/icons/OxyServices.d.ts.map +1 -1
  249. package/lib/typescript/assets/illustrations/HighFive.d.ts +1 -1
  250. package/lib/typescript/assets/illustrations/HighFive.d.ts.map +1 -1
  251. package/lib/typescript/core/OxyServices.d.ts +68 -12
  252. package/lib/typescript/core/OxyServices.d.ts.map +1 -1
  253. package/lib/typescript/index.d.ts +3 -1
  254. package/lib/typescript/index.d.ts.map +1 -1
  255. package/lib/typescript/lib/sonner-safe.d.ts +2 -1
  256. package/lib/typescript/lib/sonner-safe.d.ts.map +1 -1
  257. package/lib/typescript/lib/sonner.d.ts +11 -3
  258. package/lib/typescript/lib/sonner.d.ts.map +1 -1
  259. package/lib/typescript/models/interfaces.d.ts +105 -6
  260. package/lib/typescript/models/interfaces.d.ts.map +1 -1
  261. package/lib/typescript/types/expo-vector-icons.d.ts +8 -1
  262. package/lib/typescript/types/express.d.ts +22 -3
  263. package/lib/typescript/ui/components/Avatar.d.ts +2 -2
  264. package/lib/typescript/ui/components/Avatar.d.ts.map +1 -1
  265. package/lib/typescript/ui/components/FollowButton.d.ts +2 -2
  266. package/lib/typescript/ui/components/FollowButton.d.ts.map +1 -1
  267. package/lib/typescript/ui/components/FontLoader.d.ts +1 -1
  268. package/lib/typescript/ui/components/FontLoader.d.ts.map +1 -1
  269. package/lib/typescript/ui/components/GroupedItem.d.ts +2 -1
  270. package/lib/typescript/ui/components/GroupedItem.d.ts.map +1 -1
  271. package/lib/typescript/ui/components/GroupedSection.d.ts +2 -1
  272. package/lib/typescript/ui/components/GroupedSection.d.ts.map +1 -1
  273. package/lib/typescript/ui/components/Header.d.ts +1 -1
  274. package/lib/typescript/ui/components/Header.d.ts.map +1 -1
  275. package/lib/typescript/ui/components/OxyLogo.d.ts +2 -2
  276. package/lib/typescript/ui/components/OxyLogo.d.ts.map +1 -1
  277. package/lib/typescript/ui/components/OxyPayButton.d.ts +2 -2
  278. package/lib/typescript/ui/components/OxyPayButton.d.ts.map +1 -1
  279. package/lib/typescript/ui/components/OxyProvider.d.ts +2 -2
  280. package/lib/typescript/ui/components/OxyProvider.d.ts.map +1 -1
  281. package/lib/typescript/ui/components/OxySignInButton.d.ts +2 -2
  282. package/lib/typescript/ui/components/OxySignInButton.d.ts.map +1 -1
  283. package/lib/typescript/ui/components/ProfileCard.d.ts +1 -1
  284. package/lib/typescript/ui/components/ProfileCard.d.ts.map +1 -1
  285. package/lib/typescript/ui/components/QuickActions.d.ts +1 -1
  286. package/lib/typescript/ui/components/QuickActions.d.ts.map +1 -1
  287. package/lib/typescript/ui/components/Section.d.ts +1 -1
  288. package/lib/typescript/ui/components/Section.d.ts.map +1 -1
  289. package/lib/typescript/ui/components/SectionTitle.d.ts +1 -1
  290. package/lib/typescript/ui/components/SectionTitle.d.ts.map +1 -1
  291. package/lib/typescript/ui/components/icon/FAIRWalletIcon.d.ts +1 -1
  292. package/lib/typescript/ui/components/icon/FAIRWalletIcon.d.ts.map +1 -1
  293. package/lib/typescript/ui/components/icon/OxyIcon.d.ts +1 -1
  294. package/lib/typescript/ui/components/icon/OxyIcon.d.ts.map +1 -1
  295. package/lib/typescript/ui/components/internal/GroupedPillButtons.d.ts +1 -1
  296. package/lib/typescript/ui/components/internal/GroupedPillButtons.d.ts.map +1 -1
  297. package/lib/typescript/ui/components/internal/PinInput.d.ts +1 -1
  298. package/lib/typescript/ui/components/internal/PinInput.d.ts.map +1 -1
  299. package/lib/typescript/ui/components/internal/TextField.d.ts +1 -1
  300. package/lib/typescript/ui/components/internal/TextField.d.ts.map +1 -1
  301. package/lib/typescript/ui/context/OxyContext.d.ts +3 -3
  302. package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -1
  303. package/lib/typescript/ui/hooks/useAssets.d.ts +35 -0
  304. package/lib/typescript/ui/hooks/useAssets.d.ts.map +1 -0
  305. package/lib/typescript/ui/navigation/OxyRouter.d.ts +2 -2
  306. package/lib/typescript/ui/navigation/OxyRouter.d.ts.map +1 -1
  307. package/lib/typescript/ui/navigation/types.d.ts +7 -7
  308. package/lib/typescript/ui/navigation/types.d.ts.map +1 -1
  309. package/lib/typescript/ui/screens/AccountCenterScreen.d.ts +2 -2
  310. package/lib/typescript/ui/screens/AccountCenterScreen.d.ts.map +1 -1
  311. package/lib/typescript/ui/screens/AccountManagementDemo.d.ts +1 -1
  312. package/lib/typescript/ui/screens/AccountManagementDemo.d.ts.map +1 -1
  313. package/lib/typescript/ui/screens/AccountOverviewScreen.d.ts +1 -1
  314. package/lib/typescript/ui/screens/AccountOverviewScreen.d.ts.map +1 -1
  315. package/lib/typescript/ui/screens/AccountSettingsScreen.d.ts +1 -1
  316. package/lib/typescript/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
  317. package/lib/typescript/ui/screens/AccountSwitcherScreen.d.ts +2 -2
  318. package/lib/typescript/ui/screens/AccountSwitcherScreen.d.ts.map +1 -1
  319. package/lib/typescript/ui/screens/AppInfoScreen.d.ts +2 -2
  320. package/lib/typescript/ui/screens/AppInfoScreen.d.ts.map +1 -1
  321. package/lib/typescript/ui/screens/FeedbackScreen.d.ts +1 -1
  322. package/lib/typescript/ui/screens/FeedbackScreen.d.ts.map +1 -1
  323. package/lib/typescript/ui/screens/FileManagementScreen.d.ts +1 -1
  324. package/lib/typescript/ui/screens/FileManagementScreen.d.ts.map +1 -1
  325. package/lib/typescript/ui/screens/PaymentGatewayScreen.d.ts +2 -2
  326. package/lib/typescript/ui/screens/PaymentGatewayScreen.d.ts.map +1 -1
  327. package/lib/typescript/ui/screens/PremiumSubscriptionScreen.d.ts +2 -2
  328. package/lib/typescript/ui/screens/PremiumSubscriptionScreen.d.ts.map +1 -1
  329. package/lib/typescript/ui/screens/ProfileScreen.d.ts +2 -2
  330. package/lib/typescript/ui/screens/ProfileScreen.d.ts.map +1 -1
  331. package/lib/typescript/ui/screens/RecoverAccountScreen.d.ts +1 -1
  332. package/lib/typescript/ui/screens/RecoverAccountScreen.d.ts.map +1 -1
  333. package/lib/typescript/ui/screens/SessionManagementScreen.d.ts +2 -2
  334. package/lib/typescript/ui/screens/SessionManagementScreen.d.ts.map +1 -1
  335. package/lib/typescript/ui/screens/SignInScreen.d.ts +2 -2
  336. package/lib/typescript/ui/screens/SignInScreen.d.ts.map +1 -1
  337. package/lib/typescript/ui/screens/SignUpScreen.d.ts +1 -1
  338. package/lib/typescript/ui/screens/SignUpScreen.d.ts.map +1 -1
  339. package/lib/typescript/ui/screens/UserLinksScreen.d.ts +2 -2
  340. package/lib/typescript/ui/screens/UserLinksScreen.d.ts.map +1 -1
  341. package/lib/typescript/ui/screens/internal/SignInPasswordStep.d.ts +1 -1
  342. package/lib/typescript/ui/screens/internal/SignInPasswordStep.d.ts.map +1 -1
  343. package/lib/typescript/ui/screens/internal/SignInUsernameStep.d.ts +1 -1
  344. package/lib/typescript/ui/screens/internal/SignInUsernameStep.d.ts.map +1 -1
  345. package/lib/typescript/ui/screens/internal/SignUpIdentityStep.d.ts +1 -1
  346. package/lib/typescript/ui/screens/internal/SignUpIdentityStep.d.ts.map +1 -1
  347. package/lib/typescript/ui/screens/internal/SignUpSecurityStep.d.ts +1 -1
  348. package/lib/typescript/ui/screens/internal/SignUpSecurityStep.d.ts.map +1 -1
  349. package/lib/typescript/ui/screens/internal/SignUpSummaryStep.d.ts +1 -1
  350. package/lib/typescript/ui/screens/internal/SignUpSummaryStep.d.ts.map +1 -1
  351. package/lib/typescript/ui/screens/internal/SignUpWelcomeStep.d.ts +1 -1
  352. package/lib/typescript/ui/screens/internal/SignUpWelcomeStep.d.ts.map +1 -1
  353. package/lib/typescript/ui/screens/karma/KarmaAboutScreen.d.ts +2 -2
  354. package/lib/typescript/ui/screens/karma/KarmaAboutScreen.d.ts.map +1 -1
  355. package/lib/typescript/ui/screens/karma/KarmaCenterScreen.d.ts +2 -2
  356. package/lib/typescript/ui/screens/karma/KarmaCenterScreen.d.ts.map +1 -1
  357. package/lib/typescript/ui/screens/karma/KarmaFAQScreen.d.ts +1 -1
  358. package/lib/typescript/ui/screens/karma/KarmaFAQScreen.d.ts.map +1 -1
  359. package/lib/typescript/ui/screens/karma/KarmaLeaderboardScreen.d.ts +2 -2
  360. package/lib/typescript/ui/screens/karma/KarmaLeaderboardScreen.d.ts.map +1 -1
  361. package/lib/typescript/ui/screens/karma/KarmaRewardsScreen.d.ts +2 -2
  362. package/lib/typescript/ui/screens/karma/KarmaRewardsScreen.d.ts.map +1 -1
  363. package/lib/typescript/ui/screens/karma/KarmaRulesScreen.d.ts +2 -2
  364. package/lib/typescript/ui/screens/karma/KarmaRulesScreen.d.ts.map +1 -1
  365. package/lib/typescript/ui/stores/assetStore.d.ts +54 -0
  366. package/lib/typescript/ui/stores/assetStore.d.ts.map +1 -0
  367. package/lib/typescript/ui/stores/fileStore.d.ts +31 -0
  368. package/lib/typescript/ui/stores/fileStore.d.ts.map +1 -0
  369. package/lib/typescript/ui/stores/followStore.d.ts +1 -1
  370. package/lib/typescript/ui/stores/followStore.d.ts.map +1 -1
  371. package/lib/typescript/ui/styles/fonts.d.ts +1 -1
  372. package/lib/typescript/ui/styles/fonts.d.ts.map +1 -1
  373. package/lib/typescript/ui/styles/theme.d.ts +1 -1
  374. package/lib/typescript/ui/styles/theme.d.ts.map +1 -1
  375. package/lib/typescript/utils/asyncUtils.d.ts.map +1 -1
  376. package/lib/typescript/utils/errorUtils.d.ts +5 -5
  377. package/lib/typescript/utils/errorUtils.d.ts.map +1 -1
  378. package/lib/typescript/utils/hookUtils.d.ts +4 -4
  379. package/lib/typescript/utils/hookUtils.d.ts.map +1 -1
  380. package/lib/typescript/utils/loggerUtils.d.ts +18 -18
  381. package/lib/typescript/utils/loggerUtils.d.ts.map +1 -1
  382. package/lib/typescript/utils/validationUtils.d.ts +6 -6
  383. package/lib/typescript/utils/validationUtils.d.ts.map +1 -1
  384. package/package.json +149 -143
  385. package/src/assets/icons/OxyServices.tsx +2 -2
  386. package/src/assets/illustrations/HighFive.tsx +1 -1
  387. package/src/core/OxyServices.ts +264 -40
  388. package/src/core/__tests__/OxyServices.test.ts +180 -0
  389. package/src/index.ts +15 -1
  390. package/src/lib/sonner-safe.ts +4 -1
  391. package/src/lib/sonner.ts +19 -2
  392. package/src/models/interfaces.ts +117 -6
  393. package/src/types/expo-vector-icons.d.ts +8 -1
  394. package/src/types/express.d.ts +22 -3
  395. package/src/ui/components/Avatar.tsx +2 -2
  396. package/src/ui/components/FollowButton.tsx +10 -8
  397. package/src/ui/components/FontLoader.tsx +5 -3
  398. package/src/ui/components/GroupedItem.tsx +12 -2
  399. package/src/ui/components/GroupedSection.tsx +3 -1
  400. package/src/ui/components/Header.tsx +1 -1
  401. package/src/ui/components/OxyLogo.tsx +2 -2
  402. package/src/ui/components/OxyPayButton.tsx +6 -5
  403. package/src/ui/components/OxyProvider.tsx +7 -4
  404. package/src/ui/components/OxySignInButton.tsx +2 -2
  405. package/src/ui/components/ProfileCard.tsx +1 -1
  406. package/src/ui/components/QuickActions.tsx +1 -1
  407. package/src/ui/components/Section.tsx +1 -1
  408. package/src/ui/components/SectionTitle.tsx +1 -1
  409. package/src/ui/components/icon/FAIRWalletIcon.tsx +1 -1
  410. package/src/ui/components/icon/OxyIcon.tsx +1 -1
  411. package/src/ui/components/internal/GroupedPillButtons.tsx +1 -1
  412. package/src/ui/components/internal/PinInput.tsx +3 -2
  413. package/src/ui/components/internal/TextField.tsx +9 -11
  414. package/src/ui/context/OxyContext.tsx +3 -3
  415. package/src/ui/hooks/useAssets.ts +306 -0
  416. package/src/ui/navigation/OxyRouter.tsx +3 -2
  417. package/src/ui/navigation/types.ts +8 -8
  418. package/src/ui/screens/AccountCenterScreen.tsx +2 -2
  419. package/src/ui/screens/AccountManagementDemo.tsx +1 -1
  420. package/src/ui/screens/AccountOverviewScreen.tsx +1 -1
  421. package/src/ui/screens/AccountSettingsScreen.tsx +3 -3
  422. package/src/ui/screens/AccountSwitcherScreen.tsx +9 -8
  423. package/src/ui/screens/AppInfoScreen.tsx +3 -2
  424. package/src/ui/screens/FeedbackScreen.tsx +1 -1
  425. package/src/ui/screens/FileManagementScreen.tsx +619 -494
  426. package/src/ui/screens/PaymentGatewayScreen.tsx +3 -2
  427. package/src/ui/screens/PremiumSubscriptionScreen.tsx +3 -2
  428. package/src/ui/screens/ProfileScreen.tsx +3 -2
  429. package/src/ui/screens/RecoverAccountScreen.tsx +3 -2
  430. package/src/ui/screens/SessionManagementScreen.tsx +4 -3
  431. package/src/ui/screens/SignInScreen.tsx +3 -2
  432. package/src/ui/screens/SignUpScreen.tsx +1 -1
  433. package/src/ui/screens/UserLinksScreen.tsx +2 -2
  434. package/src/ui/screens/internal/SignInPasswordStep.tsx +3 -2
  435. package/src/ui/screens/internal/SignInUsernameStep.tsx +3 -2
  436. package/src/ui/screens/internal/SignUpIdentityStep.tsx +3 -2
  437. package/src/ui/screens/internal/SignUpSecurityStep.tsx +3 -2
  438. package/src/ui/screens/internal/SignUpSummaryStep.tsx +1 -1
  439. package/src/ui/screens/internal/SignUpWelcomeStep.tsx +1 -1
  440. package/src/ui/screens/karma/KarmaAboutScreen.tsx +2 -2
  441. package/src/ui/screens/karma/KarmaCenterScreen.tsx +3 -2
  442. package/src/ui/screens/karma/KarmaFAQScreen.tsx +1 -1
  443. package/src/ui/screens/karma/KarmaLeaderboardScreen.tsx +3 -2
  444. package/src/ui/screens/karma/KarmaRewardsScreen.tsx +2 -2
  445. package/src/ui/screens/karma/KarmaRulesScreen.tsx +3 -2
  446. package/src/ui/stores/assetStore.ts +281 -0
  447. package/src/ui/stores/authStore.ts +1 -1
  448. package/src/ui/stores/fileStore.ts +118 -0
  449. package/src/ui/stores/followStore.ts +4 -4
  450. package/src/ui/styles/fonts.ts +1 -1
  451. package/src/ui/styles/theme.ts +1 -1
  452. package/src/utils/__tests__/validationUtils.test.ts +236 -0
  453. package/src/utils/asyncUtils.ts +4 -4
  454. package/src/utils/errorUtils.ts +35 -23
  455. package/src/utils/hookUtils.ts +7 -7
  456. package/src/utils/loggerUtils.ts +18 -18
  457. package/src/utils/validationUtils.ts +8 -8
@@ -9,13 +9,13 @@ export interface User {
9
9
  avatar?: {
10
10
  id?: string;
11
11
  url?: string;
12
- [key: string]: any;
12
+ [key: string]: unknown;
13
13
  };
14
14
  name?: {
15
15
  first?: string;
16
16
  last?: string;
17
17
  full?: string; // virtual, not stored in DB, returned by API
18
- [key: string]: any;
18
+ [key: string]: unknown;
19
19
  };
20
20
  bio?: string;
21
21
  karma?: number;
@@ -29,7 +29,16 @@ export interface User {
29
29
  image?: string;
30
30
  link: string;
31
31
  }>;
32
- [key: string]: any;
32
+ // Social counts - can be returned by API in different formats
33
+ _count?: {
34
+ followers?: number;
35
+ following?: number;
36
+ };
37
+ stats?: {
38
+ followers?: number;
39
+ following?: number;
40
+ };
41
+ [key: string]: unknown;
33
42
  }
34
43
 
35
44
  export interface LoginResponse {
@@ -111,7 +120,7 @@ export interface ApiError {
111
120
  message: string;
112
121
  code: string;
113
122
  status: number;
114
- details?: any;
123
+ details?: Record<string, unknown>;
115
124
  }
116
125
 
117
126
  export interface PaymentMethod {
@@ -163,8 +172,16 @@ export interface FileMetadata {
163
172
  description?: string;
164
173
  title?: string;
165
174
  tags?: string[];
166
- [key: string]: any;
175
+ [key: string]: unknown;
167
176
  };
177
+ variants?: Array<{
178
+ type: string; // e.g. 'thumb', 'poster'
179
+ key: string; // storage key/path
180
+ width?: number;
181
+ height?: number;
182
+ readyAt?: string;
183
+ metadata?: Record<string, unknown>;
184
+ }>;
168
185
  }
169
186
 
170
187
  export interface FileUploadResponse {
@@ -183,7 +200,7 @@ export interface FileUpdateRequest {
183
200
  description?: string;
184
201
  title?: string;
185
202
  tags?: string[];
186
- [key: string]: any;
203
+ [key: string]: unknown;
187
204
  };
188
205
  }
189
206
 
@@ -193,6 +210,100 @@ export interface FileDeleteResponse {
193
210
  fileId: string;
194
211
  }
195
212
 
213
+ /**
214
+ * Central Asset Service interfaces
215
+ */
216
+ export interface AssetLink {
217
+ app: string;
218
+ entityType: string;
219
+ entityId: string;
220
+ createdBy: string;
221
+ createdAt: string;
222
+ }
223
+
224
+ export interface AssetVariant {
225
+ type: string;
226
+ key: string;
227
+ width?: number;
228
+ height?: number;
229
+ readyAt?: string;
230
+ size?: number;
231
+ metadata?: Record<string, any>;
232
+ }
233
+
234
+ export interface Asset {
235
+ id: string;
236
+ sha256: string;
237
+ size: number;
238
+ mime: string;
239
+ ext: string;
240
+ originalName?: string;
241
+ ownerUserId: string;
242
+ status: 'active' | 'trash' | 'deleted';
243
+ usageCount: number;
244
+ createdAt: string;
245
+ updatedAt: string;
246
+ links: AssetLink[];
247
+ variants: AssetVariant[];
248
+ metadata?: Record<string, any>;
249
+ }
250
+
251
+ export interface AssetInitRequest {
252
+ sha256: string;
253
+ size: number;
254
+ mime: string;
255
+ }
256
+
257
+ export interface AssetInitResponse {
258
+ uploadUrl: string;
259
+ fileId: string;
260
+ sha256: string;
261
+ }
262
+
263
+ export interface AssetCompleteRequest {
264
+ fileId: string;
265
+ originalName: string;
266
+ size: number;
267
+ mime: string;
268
+ metadata?: Record<string, any>;
269
+ }
270
+
271
+ export interface AssetLinkRequest {
272
+ app: string;
273
+ entityType: string;
274
+ entityId: string;
275
+ }
276
+
277
+ export interface AssetUnlinkRequest {
278
+ app: string;
279
+ entityType: string;
280
+ entityId: string;
281
+ }
282
+
283
+ export interface AssetUrlResponse {
284
+ success: boolean;
285
+ url: string;
286
+ variant?: string;
287
+ expiresIn: number;
288
+ }
289
+
290
+ export interface AssetDeleteSummary {
291
+ fileId: string;
292
+ wouldDelete: boolean;
293
+ affectedApps: string[];
294
+ remainingLinks: number;
295
+ variants: string[];
296
+ }
297
+
298
+ export interface AssetUploadProgress {
299
+ fileId: string;
300
+ uploaded: number;
301
+ total: number;
302
+ percentage: number;
303
+ status: 'uploading' | 'processing' | 'complete' | 'error';
304
+ error?: string;
305
+ }
306
+
196
307
  // Device Session interfaces
197
308
  export interface DeviceSession {
198
309
  sessionId: string;
@@ -1,3 +1,10 @@
1
1
  declare module '@expo/vector-icons' {
2
- export const Ionicons: any;
2
+ import type React from 'react';
3
+
4
+ export const Ionicons: React.ComponentType<{
5
+ name: string;
6
+ size?: number;
7
+ color?: string;
8
+ style?: Record<string, unknown>;
9
+ }>;
3
10
  }
@@ -1,5 +1,24 @@
1
1
  declare module 'express' {
2
- export function Router(): any;
3
- export interface Request { [key: string]: any }
4
- export interface Response { [key: string]: any }
2
+ export function Router(): {
3
+ get: (path: string, ...handlers: Array<(req: Request, res: Response, next: () => void) => void>) => void;
4
+ post: (path: string, ...handlers: Array<(req: Request, res: Response, next: () => void) => void>) => void;
5
+ put: (path: string, ...handlers: Array<(req: Request, res: Response, next: () => void) => void>) => void;
6
+ delete: (path: string, ...handlers: Array<(req: Request, res: Response, next: () => void) => void>) => void;
7
+ use: (path: string | (() => void), ...handlers: Array<(req: Request, res: Response, next: () => void) => void>) => void;
8
+ };
9
+ export interface Request {
10
+ body?: Record<string, unknown>;
11
+ params: Record<string, string>;
12
+ query: Record<string, string | string[]>;
13
+ headers: Record<string, string>;
14
+ user?: Record<string, unknown>;
15
+ [key: string]: unknown;
16
+ }
17
+ export interface Response {
18
+ status: (code: number) => Response;
19
+ json: (data: unknown) => Response;
20
+ send: (data: unknown) => Response;
21
+ redirect: (url: string) => Response;
22
+ [key: string]: unknown;
23
+ }
5
24
  }
@@ -1,5 +1,5 @@
1
- import React from 'react';
2
- import { View, Text, Image, StyleSheet, StyleProp, ViewStyle, ImageStyle, TextStyle, ActivityIndicator, Platform } from 'react-native';
1
+ import type React from 'react';
2
+ import { View, Text, Image, StyleSheet, type StyleProp, type ViewStyle, type ImageStyle, type TextStyle, ActivityIndicator, Platform } from 'react-native';
3
3
  import { useThemeColors } from '../styles';
4
4
  import { fontFamilies } from '../styles/fonts';
5
5
 
@@ -1,11 +1,12 @@
1
- import React, { useEffect, useCallback } from 'react';
1
+ import type React from 'react';
2
+ import { useEffect, useCallback } from 'react';
2
3
  import {
3
4
  TouchableOpacity,
4
5
  Text,
5
6
  StyleSheet,
6
- ViewStyle,
7
- TextStyle,
8
- StyleProp,
7
+ type ViewStyle,
8
+ type TextStyle,
9
+ type StyleProp,
9
10
  Platform,
10
11
  ActivityIndicator
11
12
  } from 'react-native';
@@ -86,17 +87,18 @@ const FollowButton: React.FC<FollowButtonProps> = ({
86
87
  }, [isFollowing, animationProgress]);
87
88
 
88
89
  // Button press handler
89
- const handlePress = useCallback(async (event: any) => {
90
+ const handlePress = useCallback(async (event?: { preventDefault?: () => void; stopPropagation?: () => void }) => {
90
91
  if (preventParentActions && event && event.preventDefault) {
91
92
  event.preventDefault();
92
- event.stopPropagation();
93
+ event.stopPropagation?.();
93
94
  }
94
95
  if (disabled || isLoading) return;
95
96
  try {
96
97
  await toggleFollow?.();
97
98
  if (onFollowChange) onFollowChange(!isFollowing);
98
- } catch (err: any) {
99
- toast.error(err?.message || 'Failed to update follow status');
99
+ } catch (err: unknown) {
100
+ const error = err instanceof Error ? err : new Error(String(err));
101
+ toast.error(error.message || 'Failed to update follow status');
100
102
  }
101
103
  }, [disabled, isLoading, toggleFollow, onFollowChange, isFollowing, preventParentActions]);
102
104
 
@@ -1,4 +1,5 @@
1
- import React, { useState, useEffect } from 'react';
1
+ import type React from 'react';
2
+ import { useState, useEffect } from 'react';
2
3
  import { Text, View, ActivityIndicator, StyleSheet, Platform } from 'react-native';
3
4
  import * as Font from 'expo-font';
4
5
 
@@ -160,8 +161,9 @@ export const setupFonts = async () => {
160
161
  }
161
162
 
162
163
  return true;
163
- } catch (error: any) {
164
- console.warn('Error setting up fonts:', error?.message || error);
164
+ } catch (error: unknown) {
165
+ const errorMessage = error instanceof Error ? error.message : String(error);
166
+ console.warn('Error setting up fonts:', errorMessage);
165
167
  return false;
166
168
  }
167
169
  };
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import type React from 'react';
2
2
  import { View, Text, TouchableOpacity, StyleSheet, Image } from 'react-native';
3
3
  import { Ionicons } from '@expo/vector-icons';
4
4
 
@@ -20,6 +20,7 @@ interface GroupedItemProps {
20
20
  customIcon?: React.ReactNode;
21
21
  multiRow?: boolean;
22
22
  customContentBelow?: React.ReactNode;
23
+ dense?: boolean; // reduces internal padding
23
24
  }
24
25
 
25
26
  const GroupedItem: React.FC<GroupedItemProps> = ({
@@ -40,6 +41,7 @@ const GroupedItem: React.FC<GroupedItemProps> = ({
40
41
  customIcon,
41
42
  multiRow = false,
42
43
  customContentBelow,
44
+ dense = false,
43
45
  }) => {
44
46
  const isDarkTheme = theme === 'dark';
45
47
  const textColor = isDarkTheme ? '#FFFFFF' : '#000000';
@@ -56,7 +58,11 @@ const GroupedItem: React.FC<GroupedItemProps> = ({
56
58
  ];
57
59
 
58
60
  const content = (
59
- <View style={[styles.groupedItemContent, multiRow && styles.groupedItemContentMultiRow]}>
61
+ <View style={[
62
+ styles.groupedItemContent,
63
+ multiRow && styles.groupedItemContentMultiRow,
64
+ dense && styles.groupedItemContentDense,
65
+ ]}>
60
66
  {customIcon ? (
61
67
  <View style={styles.actionIcon}>
62
68
  {customIcon}
@@ -127,6 +133,10 @@ const styles = StyleSheet.create({
127
133
  padding: 16,
128
134
  width: '100%',
129
135
  },
136
+ groupedItemContentDense: {
137
+ paddingVertical: 10,
138
+ paddingHorizontal: 12,
139
+ },
130
140
  actionIcon: {
131
141
  marginRight: 12,
132
142
  },
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import type React from 'react';
2
2
  import { View } from 'react-native';
3
3
  import GroupedItem from './GroupedItem';
4
4
 
@@ -18,6 +18,7 @@ interface GroupedSectionItem {
18
18
  customIcon?: React.ReactNode;
19
19
  multiRow?: boolean;
20
20
  customContentBelow?: React.ReactNode;
21
+ dense?: boolean;
21
22
  }
22
23
 
23
24
  interface GroupedSectionProps {
@@ -47,6 +48,7 @@ const GroupedSection: React.FC<GroupedSectionProps> = ({ items, theme }) => {
47
48
  customContent={item.customContent}
48
49
  customIcon={item.customIcon}
49
50
  multiRow={item.multiRow}
51
+ dense={item.dense}
50
52
  customContentBelow={item.customContentBelow}
51
53
  />
52
54
  ))}
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import type React from 'react';
2
2
  import {
3
3
  View,
4
4
  Text,
@@ -1,6 +1,6 @@
1
- import React from 'react';
1
+ import type React from 'react';
2
2
  import Svg, { Circle, Path } from 'react-native-svg';
3
- import { ViewStyle } from 'react-native';
3
+ import type { ViewStyle } from 'react-native';
4
4
  import { useThemeColors } from '../styles/theme';
5
5
 
6
6
  interface OxyLogoProps {
@@ -1,5 +1,6 @@
1
- import React, { useState } from 'react';
2
- import { TouchableOpacity, Text, View, StyleSheet, ViewStyle, TextStyle, StyleProp, LayoutChangeEvent } from 'react-native';
1
+ import type React from 'react';
2
+ import { useState } from 'react';
3
+ import { TouchableOpacity, Text, View, StyleSheet, type ViewStyle, type TextStyle, type StyleProp, type LayoutChangeEvent } from 'react-native';
3
4
  import { fontFamilies } from '../styles/fonts';
4
5
  import { useOxy } from '../context/OxyContext';
5
6
  import type { PaymentItem } from '../screens/PaymentGatewayScreen';
@@ -93,9 +94,9 @@ function isColorDark(hex: string) {
93
94
  let c = hex.replace('#', '');
94
95
  if (c.length === 3) c = c.split('').map(x => x + x).join('');
95
96
  if (c.length !== 6) return false;
96
- const r = parseInt(c.substr(0, 2), 16);
97
- const g = parseInt(c.substr(2, 2), 16);
98
- const b = parseInt(c.substr(4, 2), 16);
97
+ const r = Number.parseInt(c.substr(0, 2), 16);
98
+ const g = Number.parseInt(c.substr(2, 2), 16);
99
+ const b = Number.parseInt(c.substr(4, 2), 16);
99
100
  // Perceived luminance
100
101
  return (0.299 * r + 0.587 * g + 0.114 * b) < 150;
101
102
  }
@@ -1,15 +1,16 @@
1
- import React, { useCallback, useRef, useState, useEffect, useMemo } from 'react';
1
+ import type React from 'react';
2
+ import { useCallback, useRef, useState, useEffect, useMemo } from 'react';
2
3
  import { View, Text, StyleSheet, Dimensions, Platform, Animated, StatusBar, Keyboard, KeyboardEvent } from 'react-native';
3
4
  import { SafeAreaProvider, useSafeAreaInsets } from 'react-native-safe-area-context';
4
5
  import { GestureHandlerRootView } from 'react-native-gesture-handler';
5
- import { OxyProviderProps } from '../navigation/types';
6
+ import type { OxyProviderProps } from '../navigation/types';
6
7
  import { OxyContextProvider, useOxy } from '../context/OxyContext';
7
8
  import OxyRouter from '../navigation/OxyRouter';
8
9
  import { FontLoader, setupFonts } from './FontLoader';
9
10
  import { Toaster } from '../../lib/sonner';
10
11
 
11
12
  // Import bottom sheet components directly - no longer a peer dependency
12
- import { BottomSheetModal, BottomSheetBackdrop, BottomSheetBackdropProps, BottomSheetModalProvider, BottomSheetView, BottomSheetScrollView } from '@gorhom/bottom-sheet';
13
+ import { BottomSheetModal, BottomSheetBackdrop, type BottomSheetBackdropProps, BottomSheetModalProvider, BottomSheetView, BottomSheetScrollView } from '@gorhom/bottom-sheet';
13
14
  import type { BottomSheetModalMethods as BottomSheetModalRef } from '@gorhom/bottom-sheet/lib/typescript/types';
14
15
 
15
16
  // Initialize fonts automatically
@@ -145,7 +146,9 @@ const OxyBottomSheet: React.FC<OxyProviderProps> = ({
145
146
  }
146
147
  };
147
148
 
148
- console.log('Bottom sheet ref methods exposed:', Object.keys(bottomSheetRef.current));
149
+ if (bottomSheetRef.current && typeof bottomSheetRef.current === 'object') {
150
+ console.log('Bottom sheet ref methods exposed:', Object.keys(bottomSheetRef.current));
151
+ }
149
152
  }
150
153
  }, [bottomSheetRef, modalRef]);
151
154
  // Keyboard handling (unchanged)
@@ -1,5 +1,5 @@
1
- import React from 'react';
2
- import { TouchableOpacity, Text, View, StyleSheet, ViewStyle, TextStyle, StyleProp, Platform } from 'react-native';
1
+ import type React from 'react';
2
+ import { TouchableOpacity, Text, View, StyleSheet, type ViewStyle, type TextStyle, type StyleProp, Platform } from 'react-native';
3
3
  import { useOxy } from '../context/OxyContext';
4
4
  import OxyLogo from './OxyLogo';
5
5
  import { fontFamilies } from '../styles/fonts';
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import type React from 'react';
2
2
  import { View, Text, TouchableOpacity, StyleSheet } from 'react-native';
3
3
  import { Ionicons } from '@expo/vector-icons';
4
4
  import Avatar from './Avatar';
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import type React from 'react';
2
2
  import { View, Text, TouchableOpacity, StyleSheet } from 'react-native';
3
3
  import { Ionicons } from '@expo/vector-icons';
4
4
 
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import type React from 'react';
2
2
  import { View, StyleSheet } from 'react-native';
3
3
  import SectionTitle from './SectionTitle';
4
4
 
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import type React from 'react';
2
2
  import { Text, StyleSheet } from 'react-native';
3
3
  import { fontFamilies } from '../styles/fonts';
4
4
 
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import type React from 'react';
2
2
  import { View, StyleSheet } from 'react-native';
3
3
  import Svg, { G, Path } from 'react-native-svg';
4
4
 
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import type React from 'react';
2
2
  import { Platform } from 'react-native';
3
3
  import { Ionicons } from '@expo/vector-icons';
4
4
 
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import type React from 'react';
2
2
  import { View, TouchableOpacity, Text, ActivityIndicator, StyleSheet, Platform } from 'react-native';
3
3
  import { Ionicons } from '@expo/vector-icons';
4
4
 
@@ -1,4 +1,5 @@
1
- import React, { useRef } from 'react';
1
+ import type React from 'react';
2
+ import { useRef } from 'react';
2
3
  import { View, TextInput, StyleSheet, Platform } from 'react-native';
3
4
 
4
5
  interface PinInputProps {
@@ -44,7 +45,7 @@ const PinInput: React.FC<PinInputProps> = ({ value, onChange, length = 6, disabl
44
45
  {Array.from({ length }).map((_, idx) => (
45
46
  <TextInput
46
47
  key={idx}
47
- ref={ref => (inputs.current[idx] = ref)}
48
+ ref={(ref) => { inputs.current[idx] = ref; }}
48
49
  style={[
49
50
  styles.pinInput,
50
51
  { borderColor: colors.primary, color: colors.text, backgroundColor: colors.inputBackground },
@@ -7,15 +7,15 @@ import {
7
7
  ActivityIndicator,
8
8
  StyleSheet,
9
9
  Platform,
10
- TextInputProps,
10
+ type TextInputProps,
11
11
  Animated,
12
12
  LayoutChangeEvent,
13
13
  AccessibilityInfo,
14
- StyleProp,
15
- ViewStyle,
16
- NativeSyntheticEvent,
17
- TargetedEvent,
18
- TextInputFocusEventData,
14
+ type StyleProp,
15
+ type ViewStyle,
16
+ type NativeSyntheticEvent,
17
+ type TargetedEvent,
18
+ type TextInputFocusEventData,
19
19
  } from 'react-native';
20
20
  import { Ionicons } from '@expo/vector-icons';
21
21
  import Svg, { Path } from 'react-native-svg';
@@ -162,7 +162,7 @@ const formatters = {
162
162
  },
163
163
  currency: (value: string) => {
164
164
  const cleaned = value.replace(/[^\d.]/g, '');
165
- const num = parseFloat(cleaned);
165
+ const num = Number.parseFloat(cleaned);
166
166
  return isNaN(num) ? value : `$${num.toFixed(2)}`;
167
167
  }
168
168
  };
@@ -267,10 +267,8 @@ const TextField = forwardRef<TextInput, TextFieldProps>(({
267
267
  // Helper function to clone React elements with updated color
268
268
  const cloneWithColor = (element: React.ReactNode, color: string): React.ReactNode => {
269
269
  if (React.isValidElement(element) && element.type) {
270
- return React.cloneElement(element, {
271
- ...element.props,
272
- color: color,
273
- });
270
+ // Avoid spreading props directly to satisfy TS complaining about non-object spread sources
271
+ return React.cloneElement(element as any, { color });
274
272
  }
275
273
  return element;
276
274
  };
@@ -1,8 +1,8 @@
1
- import React, { createContext, useContext, useEffect, useCallback, ReactNode, useMemo, useRef, useState } from 'react';
1
+ import React, { createContext, useContext, useEffect, useCallback, type ReactNode, useMemo, useRef, useState } from 'react';
2
2
  import { View, Text } from 'react-native';
3
3
  import { OxyServices } from '../../core';
4
- import { User, ApiError } from '../../models/interfaces';
5
- import { SessionLoginResponse, ClientSession, MinimalUserData } from '../../models/session';
4
+ import type { User, ApiError } from '../../models/interfaces';
5
+ import type { SessionLoginResponse, ClientSession, MinimalUserData } from '../../models/session';
6
6
  import { DeviceManager } from '../../utils/deviceManager';
7
7
  import { useSessionSocket } from '../hooks/useSessionSocket';
8
8
  import { toast } from '../../lib/sonner';