@oxyhq/services 5.17.17 → 5.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (618) hide show
  1. package/README.md +32 -38
  2. package/lib/commonjs/core/CrossDomainAuth.js +277 -0
  3. package/lib/commonjs/core/CrossDomainAuth.js.map +1 -0
  4. package/lib/commonjs/core/HttpService.js +82 -15
  5. package/lib/commonjs/core/HttpService.js.map +1 -1
  6. package/lib/commonjs/core/OxyServices.base.js +11 -3
  7. package/lib/commonjs/core/OxyServices.base.js.map +1 -1
  8. package/lib/commonjs/core/OxyServices.js +4 -1
  9. package/lib/commonjs/core/OxyServices.js.map +1 -1
  10. package/lib/commonjs/core/index.js +30 -0
  11. package/lib/commonjs/core/index.js.map +1 -1
  12. package/lib/commonjs/core/mixins/OxyServices.assets.js +16 -3
  13. package/lib/commonjs/core/mixins/OxyServices.assets.js.map +1 -1
  14. package/lib/commonjs/core/mixins/OxyServices.auth.js +73 -32
  15. package/lib/commonjs/core/mixins/OxyServices.auth.js.map +1 -1
  16. package/lib/commonjs/core/mixins/OxyServices.features.js +372 -0
  17. package/lib/commonjs/core/mixins/OxyServices.features.js.map +1 -0
  18. package/lib/commonjs/core/mixins/OxyServices.fedcm.js +289 -0
  19. package/lib/commonjs/core/mixins/OxyServices.fedcm.js.map +1 -0
  20. package/lib/commonjs/core/mixins/OxyServices.popup.js +352 -0
  21. package/lib/commonjs/core/mixins/OxyServices.popup.js.map +1 -0
  22. package/lib/commonjs/core/mixins/OxyServices.redirect.js +378 -0
  23. package/lib/commonjs/core/mixins/OxyServices.redirect.js.map +1 -0
  24. package/lib/commonjs/core/mixins/OxyServices.user.js +35 -24
  25. package/lib/commonjs/core/mixins/OxyServices.user.js.map +1 -1
  26. package/lib/commonjs/core/mixins/index.js +28 -15
  27. package/lib/commonjs/core/mixins/index.js.map +1 -1
  28. package/lib/commonjs/crypto/index.js +30 -0
  29. package/lib/commonjs/crypto/index.js.map +1 -1
  30. package/lib/commonjs/crypto/keyManager.js +902 -0
  31. package/lib/commonjs/crypto/keyManager.js.map +1 -0
  32. package/lib/commonjs/crypto/polyfill.js +14 -5
  33. package/lib/commonjs/crypto/polyfill.js.map +1 -1
  34. package/lib/commonjs/crypto/recoveryPhrase.js +152 -0
  35. package/lib/commonjs/crypto/recoveryPhrase.js.map +1 -0
  36. package/lib/commonjs/crypto/signatureService.js +289 -0
  37. package/lib/commonjs/crypto/signatureService.js.map +1 -0
  38. package/lib/commonjs/i18n/locales/en-US.json +1 -1
  39. package/lib/commonjs/index.js +40 -26
  40. package/lib/commonjs/index.js.map +1 -1
  41. package/lib/commonjs/models/interfaces.js +0 -15
  42. package/lib/commonjs/models/interfaces.js.map +1 -1
  43. package/lib/commonjs/ui/components/BottomSheetRouter.js +9 -1
  44. package/lib/commonjs/ui/components/BottomSheetRouter.js.map +1 -1
  45. package/lib/commonjs/ui/components/GroupedItem.js +11 -1
  46. package/lib/commonjs/ui/components/GroupedItem.js.map +1 -1
  47. package/lib/commonjs/ui/components/Icon.js.map +1 -1
  48. package/lib/commonjs/ui/components/IconButton/utils.js.map +1 -1
  49. package/lib/commonjs/ui/components/OxyProvider.js +41 -11
  50. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  51. package/lib/commonjs/ui/components/SettingRow.js +17 -4
  52. package/lib/commonjs/ui/components/SettingRow.js.map +1 -1
  53. package/lib/commonjs/ui/components/TextField/Adornment/utils.js.map +1 -1
  54. package/lib/commonjs/ui/components/TextField/helpers.js.map +1 -1
  55. package/lib/commonjs/ui/components/TouchableRipple/utils.js.map +1 -1
  56. package/lib/commonjs/ui/components/Typography/AnimatedText.js.map +1 -1
  57. package/lib/commonjs/ui/components/feedback/FormInput.js +72 -0
  58. package/lib/commonjs/ui/components/feedback/FormInput.js.map +1 -0
  59. package/lib/commonjs/ui/components/feedback/ProgressIndicator.js +33 -0
  60. package/lib/commonjs/ui/components/feedback/ProgressIndicator.js.map +1 -0
  61. package/lib/commonjs/ui/components/feedback/constants.js +59 -0
  62. package/lib/commonjs/ui/components/feedback/constants.js.map +1 -0
  63. package/lib/commonjs/ui/components/feedback/feedbackStyles.js +262 -0
  64. package/lib/commonjs/ui/components/feedback/feedbackStyles.js.map +1 -0
  65. package/lib/commonjs/ui/components/feedback/index.js +54 -0
  66. package/lib/commonjs/ui/components/feedback/index.js.map +1 -0
  67. package/lib/commonjs/ui/components/feedback/types.js +6 -0
  68. package/lib/commonjs/ui/components/feedback/types.js.map +1 -0
  69. package/lib/commonjs/ui/components/feedback/useFeedbackForm.js +52 -0
  70. package/lib/commonjs/ui/components/feedback/useFeedbackForm.js.map +1 -0
  71. package/lib/commonjs/ui/components/modals/DeleteAccountModal.js +282 -0
  72. package/lib/commonjs/ui/components/modals/DeleteAccountModal.js.map +1 -0
  73. package/lib/commonjs/ui/components/modals/index.js +14 -0
  74. package/lib/commonjs/ui/components/modals/index.js.map +1 -0
  75. package/lib/commonjs/ui/components/payment/PaymentDetailsStep.js +309 -0
  76. package/lib/commonjs/ui/components/payment/PaymentDetailsStep.js.map +1 -0
  77. package/lib/commonjs/ui/components/payment/PaymentMethodStep.js +79 -0
  78. package/lib/commonjs/ui/components/payment/PaymentMethodStep.js.map +1 -0
  79. package/lib/commonjs/ui/components/payment/PaymentReviewStep.js +108 -0
  80. package/lib/commonjs/ui/components/payment/PaymentReviewStep.js.map +1 -0
  81. package/lib/commonjs/ui/components/payment/PaymentSuccessStep.js +79 -0
  82. package/lib/commonjs/ui/components/payment/PaymentSuccessStep.js.map +1 -0
  83. package/lib/commonjs/ui/components/payment/PaymentSummaryStep.js +176 -0
  84. package/lib/commonjs/ui/components/payment/PaymentSummaryStep.js.map +1 -0
  85. package/lib/commonjs/ui/components/payment/constants.js +53 -0
  86. package/lib/commonjs/ui/components/payment/constants.js.map +1 -0
  87. package/lib/commonjs/ui/components/payment/index.js +80 -0
  88. package/lib/commonjs/ui/components/payment/index.js.map +1 -0
  89. package/lib/commonjs/ui/components/payment/paymentStyles.js +409 -0
  90. package/lib/commonjs/ui/components/payment/paymentStyles.js.map +1 -0
  91. package/lib/commonjs/ui/components/payment/types.js +6 -0
  92. package/lib/commonjs/ui/components/payment/types.js.map +1 -0
  93. package/lib/commonjs/ui/context/OxyContext.js +110 -199
  94. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  95. package/lib/commonjs/ui/context/hooks/useAuthOperations.js +150 -19
  96. package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
  97. package/lib/commonjs/ui/context/hooks/useSessionManagement.js +279 -0
  98. package/lib/commonjs/ui/context/hooks/useSessionManagement.js.map +1 -0
  99. package/lib/commonjs/ui/hooks/index.js +26 -0
  100. package/lib/commonjs/ui/hooks/index.js.map +1 -1
  101. package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js +79 -72
  102. package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js.map +1 -1
  103. package/lib/commonjs/ui/hooks/queries/useAccountQueries.js +38 -51
  104. package/lib/commonjs/ui/hooks/queries/useAccountQueries.js.map +1 -1
  105. package/lib/commonjs/ui/hooks/queries/useSecurityQueries.js +3 -3
  106. package/lib/commonjs/ui/hooks/queries/useSecurityQueries.js.map +1 -1
  107. package/lib/commonjs/ui/hooks/queries/useServicesQueries.js +18 -12
  108. package/lib/commonjs/ui/hooks/queries/useServicesQueries.js.map +1 -1
  109. package/lib/commonjs/ui/hooks/useAsyncAction.js +95 -0
  110. package/lib/commonjs/ui/hooks/useAsyncAction.js.map +1 -0
  111. package/lib/commonjs/ui/hooks/useProfileEditing.js +3 -5
  112. package/lib/commonjs/ui/hooks/useProfileEditing.js.map +1 -1
  113. package/lib/commonjs/ui/hooks/useSessionManagement.js +4 -8
  114. package/lib/commonjs/ui/hooks/useSessionManagement.js.map +1 -1
  115. package/lib/commonjs/ui/hooks/useSessionSocket.js +162 -315
  116. package/lib/commonjs/ui/hooks/useSessionSocket.js.map +1 -1
  117. package/lib/commonjs/ui/hooks/useSettingToggle.js +126 -0
  118. package/lib/commonjs/ui/hooks/useSettingToggle.js.map +1 -0
  119. package/lib/commonjs/ui/hooks/useStorage.js +24 -58
  120. package/lib/commonjs/ui/hooks/useStorage.js.map +1 -1
  121. package/lib/commonjs/ui/index.js +50 -21
  122. package/lib/commonjs/ui/index.js.map +1 -1
  123. package/lib/commonjs/ui/navigation/routes.js +6 -1
  124. package/lib/commonjs/ui/navigation/routes.js.map +1 -1
  125. package/lib/commonjs/ui/screens/AccountCenterScreen.js +6 -4
  126. package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
  127. package/lib/commonjs/ui/screens/AccountOverviewScreen.js +33 -30
  128. package/lib/commonjs/ui/screens/AccountOverviewScreen.js.map +1 -1
  129. package/lib/commonjs/ui/screens/AccountSettingsScreen.js +29 -24
  130. package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
  131. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +3 -3
  132. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
  133. package/lib/commonjs/ui/screens/FAQScreen.js +315 -0
  134. package/lib/commonjs/ui/screens/FAQScreen.js.map +1 -0
  135. package/lib/commonjs/ui/screens/FeedbackScreen.js +73 -590
  136. package/lib/commonjs/ui/screens/FeedbackScreen.js.map +1 -1
  137. package/lib/commonjs/ui/screens/HelpSupportScreen.js +8 -7
  138. package/lib/commonjs/ui/screens/HelpSupportScreen.js.map +1 -1
  139. package/lib/commonjs/ui/screens/OxyAuthScreen.js +134 -66
  140. package/lib/commonjs/ui/screens/OxyAuthScreen.js.map +1 -1
  141. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js +67 -1395
  142. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js.map +1 -1
  143. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js +6 -13
  144. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js.map +1 -1
  145. package/lib/commonjs/ui/screens/ProfileScreen.js +13 -5
  146. package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
  147. package/lib/commonjs/ui/screens/SavesCollectionsScreen.js +16 -10
  148. package/lib/commonjs/ui/screens/SavesCollectionsScreen.js.map +1 -1
  149. package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js +23 -11
  150. package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js.map +1 -1
  151. package/lib/commonjs/ui/stores/accountStore.js +2 -4
  152. package/lib/commonjs/ui/stores/accountStore.js.map +1 -1
  153. package/lib/commonjs/ui/stores/authStore.js +45 -32
  154. package/lib/commonjs/ui/stores/authStore.js.map +1 -1
  155. package/lib/commonjs/ui/styles/spacing.js +54 -2
  156. package/lib/commonjs/ui/styles/spacing.js.map +1 -1
  157. package/lib/commonjs/ui/utils/avatarUtils.js +37 -41
  158. package/lib/commonjs/ui/utils/avatarUtils.js.map +1 -1
  159. package/lib/commonjs/ui/utils/storageHelpers.js.map +1 -1
  160. package/lib/commonjs/utils/errorUtils.js +13 -0
  161. package/lib/commonjs/utils/errorUtils.js.map +1 -1
  162. package/lib/commonjs/utils/validationUtils.js +15 -1
  163. package/lib/commonjs/utils/validationUtils.js.map +1 -1
  164. package/lib/module/core/CrossDomainAuth.js +271 -0
  165. package/lib/module/core/CrossDomainAuth.js.map +1 -0
  166. package/lib/module/core/HttpService.js +82 -15
  167. package/lib/module/core/HttpService.js.map +1 -1
  168. package/lib/module/core/OxyServices.base.js +11 -4
  169. package/lib/module/core/OxyServices.base.js.map +1 -1
  170. package/lib/module/core/OxyServices.js +4 -1
  171. package/lib/module/core/OxyServices.js.map +1 -1
  172. package/lib/module/core/index.js +6 -1
  173. package/lib/module/core/index.js.map +1 -1
  174. package/lib/module/core/mixins/OxyServices.assets.js +16 -3
  175. package/lib/module/core/mixins/OxyServices.assets.js.map +1 -1
  176. package/lib/module/core/mixins/OxyServices.auth.js +73 -32
  177. package/lib/module/core/mixins/OxyServices.auth.js.map +1 -1
  178. package/lib/module/core/mixins/OxyServices.features.js +369 -0
  179. package/lib/module/core/mixins/OxyServices.features.js.map +1 -0
  180. package/lib/module/core/mixins/OxyServices.fedcm.js +286 -0
  181. package/lib/module/core/mixins/OxyServices.fedcm.js.map +1 -0
  182. package/lib/module/core/mixins/OxyServices.popup.js +349 -0
  183. package/lib/module/core/mixins/OxyServices.popup.js.map +1 -0
  184. package/lib/module/core/mixins/OxyServices.redirect.js +375 -0
  185. package/lib/module/core/mixins/OxyServices.redirect.js.map +1 -0
  186. package/lib/module/core/mixins/OxyServices.user.js +35 -24
  187. package/lib/module/core/mixins/OxyServices.user.js.map +1 -1
  188. package/lib/module/core/mixins/index.js +16 -3
  189. package/lib/module/core/mixins/index.js.map +1 -1
  190. package/lib/module/crypto/index.js +8 -4
  191. package/lib/module/crypto/index.js.map +1 -1
  192. package/lib/module/crypto/keyManager.js +899 -0
  193. package/lib/module/crypto/keyManager.js.map +1 -0
  194. package/lib/module/crypto/polyfill.js +6 -5
  195. package/lib/module/crypto/polyfill.js.map +1 -1
  196. package/lib/module/crypto/recoveryPhrase.js +147 -0
  197. package/lib/module/crypto/recoveryPhrase.js.map +1 -0
  198. package/lib/module/crypto/signatureService.js +286 -0
  199. package/lib/module/crypto/signatureService.js.map +1 -0
  200. package/lib/module/i18n/locales/en-US.json +1 -1
  201. package/lib/module/index.js +6 -9
  202. package/lib/module/index.js.map +1 -1
  203. package/lib/module/models/interfaces.js +0 -15
  204. package/lib/module/models/interfaces.js.map +1 -1
  205. package/lib/module/ui/components/BottomSheetRouter.js +6 -2
  206. package/lib/module/ui/components/BottomSheetRouter.js.map +1 -1
  207. package/lib/module/ui/components/GroupedItem.js +11 -1
  208. package/lib/module/ui/components/GroupedItem.js.map +1 -1
  209. package/lib/module/ui/components/Icon.js.map +1 -1
  210. package/lib/module/ui/components/IconButton/utils.js.map +1 -1
  211. package/lib/module/ui/components/OxyProvider.js +41 -11
  212. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  213. package/lib/module/ui/components/SettingRow.js +17 -4
  214. package/lib/module/ui/components/SettingRow.js.map +1 -1
  215. package/lib/module/ui/components/TextField/Adornment/utils.js.map +1 -1
  216. package/lib/module/ui/components/TextField/helpers.js.map +1 -1
  217. package/lib/module/ui/components/TouchableRipple/utils.js.map +1 -1
  218. package/lib/module/ui/components/Typography/AnimatedText.js.map +1 -1
  219. package/lib/module/ui/components/feedback/FormInput.js +67 -0
  220. package/lib/module/ui/components/feedback/FormInput.js.map +1 -0
  221. package/lib/module/ui/components/feedback/ProgressIndicator.js +28 -0
  222. package/lib/module/ui/components/feedback/ProgressIndicator.js.map +1 -0
  223. package/lib/module/ui/components/feedback/constants.js +55 -0
  224. package/lib/module/ui/components/feedback/constants.js.map +1 -0
  225. package/lib/module/ui/components/feedback/feedbackStyles.js +257 -0
  226. package/lib/module/ui/components/feedback/feedbackStyles.js.map +1 -0
  227. package/lib/module/ui/components/feedback/index.js +8 -0
  228. package/lib/module/ui/components/feedback/index.js.map +1 -0
  229. package/lib/module/ui/components/feedback/types.js +4 -0
  230. package/lib/module/ui/components/feedback/types.js.map +1 -0
  231. package/lib/module/ui/components/feedback/useFeedbackForm.js +47 -0
  232. package/lib/module/ui/components/feedback/useFeedbackForm.js.map +1 -0
  233. package/lib/module/ui/components/modals/DeleteAccountModal.js +276 -0
  234. package/lib/module/ui/components/modals/DeleteAccountModal.js.map +1 -0
  235. package/lib/module/ui/components/modals/index.js +4 -0
  236. package/lib/module/ui/components/modals/index.js.map +1 -0
  237. package/lib/module/ui/components/payment/PaymentDetailsStep.js +303 -0
  238. package/lib/module/ui/components/payment/PaymentDetailsStep.js.map +1 -0
  239. package/lib/module/ui/components/payment/PaymentMethodStep.js +73 -0
  240. package/lib/module/ui/components/payment/PaymentMethodStep.js.map +1 -0
  241. package/lib/module/ui/components/payment/PaymentReviewStep.js +102 -0
  242. package/lib/module/ui/components/payment/PaymentReviewStep.js.map +1 -0
  243. package/lib/module/ui/components/payment/PaymentSuccessStep.js +73 -0
  244. package/lib/module/ui/components/payment/PaymentSuccessStep.js.map +1 -0
  245. package/lib/module/ui/components/payment/PaymentSummaryStep.js +170 -0
  246. package/lib/module/ui/components/payment/PaymentSummaryStep.js.map +1 -0
  247. package/lib/module/ui/components/payment/constants.js +47 -0
  248. package/lib/module/ui/components/payment/constants.js.map +1 -0
  249. package/lib/module/ui/components/payment/index.js +10 -0
  250. package/lib/module/ui/components/payment/index.js.map +1 -0
  251. package/lib/module/ui/components/payment/paymentStyles.js +404 -0
  252. package/lib/module/ui/components/payment/paymentStyles.js.map +1 -0
  253. package/lib/module/ui/components/payment/types.js +4 -0
  254. package/lib/module/ui/components/payment/types.js.map +1 -0
  255. package/lib/module/ui/context/OxyContext.js +112 -191
  256. package/lib/module/ui/context/OxyContext.js.map +1 -1
  257. package/lib/module/ui/context/hooks/useAuthOperations.js +150 -19
  258. package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
  259. package/lib/module/ui/context/hooks/useSessionManagement.js +274 -0
  260. package/lib/module/ui/context/hooks/useSessionManagement.js.map +1 -0
  261. package/lib/module/ui/hooks/index.js +2 -0
  262. package/lib/module/ui/hooks/index.js.map +1 -1
  263. package/lib/module/ui/hooks/mutations/useAccountMutations.js +80 -72
  264. package/lib/module/ui/hooks/mutations/useAccountMutations.js.map +1 -1
  265. package/lib/module/ui/hooks/queries/useAccountQueries.js +31 -44
  266. package/lib/module/ui/hooks/queries/useAccountQueries.js.map +1 -1
  267. package/lib/module/ui/hooks/queries/useSecurityQueries.js +1 -1
  268. package/lib/module/ui/hooks/queries/useSecurityQueries.js.map +1 -1
  269. package/lib/module/ui/hooks/queries/useServicesQueries.js +13 -7
  270. package/lib/module/ui/hooks/queries/useServicesQueries.js.map +1 -1
  271. package/lib/module/ui/hooks/useAsyncAction.js +89 -0
  272. package/lib/module/ui/hooks/useAsyncAction.js.map +1 -0
  273. package/lib/module/ui/hooks/useProfileEditing.js +3 -5
  274. package/lib/module/ui/hooks/useProfileEditing.js.map +1 -1
  275. package/lib/module/ui/hooks/useSessionManagement.js +4 -8
  276. package/lib/module/ui/hooks/useSessionManagement.js.map +1 -1
  277. package/lib/module/ui/hooks/useSessionSocket.js +162 -315
  278. package/lib/module/ui/hooks/useSessionSocket.js.map +1 -1
  279. package/lib/module/ui/hooks/useSettingToggle.js +120 -0
  280. package/lib/module/ui/hooks/useSettingToggle.js.map +1 -0
  281. package/lib/module/ui/hooks/useStorage.js +25 -59
  282. package/lib/module/ui/hooks/useStorage.js.map +1 -1
  283. package/lib/module/ui/index.js +15 -10
  284. package/lib/module/ui/index.js.map +1 -1
  285. package/lib/module/ui/navigation/routes.js +6 -1
  286. package/lib/module/ui/navigation/routes.js.map +1 -1
  287. package/lib/module/ui/screens/AccountCenterScreen.js +6 -4
  288. package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
  289. package/lib/module/ui/screens/AccountOverviewScreen.js +33 -30
  290. package/lib/module/ui/screens/AccountOverviewScreen.js.map +1 -1
  291. package/lib/module/ui/screens/AccountSettingsScreen.js +29 -24
  292. package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
  293. package/lib/module/ui/screens/AccountSwitcherScreen.js +3 -3
  294. package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
  295. package/lib/module/ui/screens/FAQScreen.js +310 -0
  296. package/lib/module/ui/screens/FAQScreen.js.map +1 -0
  297. package/lib/module/ui/screens/FeedbackScreen.js +64 -581
  298. package/lib/module/ui/screens/FeedbackScreen.js.map +1 -1
  299. package/lib/module/ui/screens/HelpSupportScreen.js +8 -7
  300. package/lib/module/ui/screens/HelpSupportScreen.js.map +1 -1
  301. package/lib/module/ui/screens/OxyAuthScreen.js +135 -68
  302. package/lib/module/ui/screens/OxyAuthScreen.js.map +1 -1
  303. package/lib/module/ui/screens/PaymentGatewayScreen.js +67 -1397
  304. package/lib/module/ui/screens/PaymentGatewayScreen.js.map +1 -1
  305. package/lib/module/ui/screens/PrivacySettingsScreen.js +6 -13
  306. package/lib/module/ui/screens/PrivacySettingsScreen.js.map +1 -1
  307. package/lib/module/ui/screens/ProfileScreen.js +13 -5
  308. package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
  309. package/lib/module/ui/screens/SavesCollectionsScreen.js +16 -10
  310. package/lib/module/ui/screens/SavesCollectionsScreen.js.map +1 -1
  311. package/lib/module/ui/screens/karma/KarmaCenterScreen.js +23 -11
  312. package/lib/module/ui/screens/karma/KarmaCenterScreen.js.map +1 -1
  313. package/lib/module/ui/stores/accountStore.js +2 -4
  314. package/lib/module/ui/stores/accountStore.js.map +1 -1
  315. package/lib/module/ui/stores/authStore.js +45 -32
  316. package/lib/module/ui/stores/authStore.js.map +1 -1
  317. package/lib/module/ui/styles/spacing.js +6 -2
  318. package/lib/module/ui/styles/spacing.js.map +1 -1
  319. package/lib/module/ui/utils/avatarUtils.js +37 -40
  320. package/lib/module/ui/utils/avatarUtils.js.map +1 -1
  321. package/lib/module/ui/utils/storageHelpers.js.map +1 -1
  322. package/lib/module/utils/errorUtils.js +7 -0
  323. package/lib/module/utils/errorUtils.js.map +1 -1
  324. package/lib/module/utils/validationUtils.js +13 -0
  325. package/lib/module/utils/validationUtils.js.map +1 -1
  326. package/lib/typescript/core/CrossDomainAuth.d.ts +161 -0
  327. package/lib/typescript/core/CrossDomainAuth.d.ts.map +1 -0
  328. package/lib/typescript/core/HttpService.d.ts +1 -1
  329. package/lib/typescript/core/HttpService.d.ts.map +1 -1
  330. package/lib/typescript/core/OxyServices.base.d.ts +0 -6
  331. package/lib/typescript/core/OxyServices.base.d.ts.map +1 -1
  332. package/lib/typescript/core/OxyServices.d.ts +5 -36
  333. package/lib/typescript/core/OxyServices.d.ts.map +1 -1
  334. package/lib/typescript/core/index.d.ts +4 -0
  335. package/lib/typescript/core/index.d.ts.map +1 -1
  336. package/lib/typescript/core/mixins/OxyServices.analytics.d.ts.map +1 -1
  337. package/lib/typescript/core/mixins/OxyServices.assets.d.ts.map +1 -1
  338. package/lib/typescript/core/mixins/OxyServices.auth.d.ts +40 -20
  339. package/lib/typescript/core/mixins/OxyServices.auth.d.ts.map +1 -1
  340. package/lib/typescript/core/mixins/OxyServices.developer.d.ts.map +1 -1
  341. package/lib/typescript/core/mixins/OxyServices.devices.d.ts.map +1 -1
  342. package/lib/typescript/core/mixins/OxyServices.features.d.ts +229 -0
  343. package/lib/typescript/core/mixins/OxyServices.features.d.ts.map +1 -0
  344. package/lib/typescript/core/mixins/OxyServices.fedcm.d.ts +195 -0
  345. package/lib/typescript/core/mixins/OxyServices.fedcm.d.ts.map +1 -0
  346. package/lib/typescript/core/mixins/OxyServices.karma.d.ts.map +1 -1
  347. package/lib/typescript/core/mixins/OxyServices.language.d.ts.map +1 -1
  348. package/lib/typescript/core/mixins/OxyServices.location.d.ts.map +1 -1
  349. package/lib/typescript/core/mixins/OxyServices.payment.d.ts.map +1 -1
  350. package/lib/typescript/core/mixins/OxyServices.popup.d.ts +206 -0
  351. package/lib/typescript/core/mixins/OxyServices.popup.d.ts.map +1 -0
  352. package/lib/typescript/core/mixins/OxyServices.privacy.d.ts.map +1 -1
  353. package/lib/typescript/core/mixins/OxyServices.redirect.d.ts +246 -0
  354. package/lib/typescript/core/mixins/OxyServices.redirect.d.ts.map +1 -0
  355. package/lib/typescript/core/mixins/OxyServices.security.d.ts.map +1 -1
  356. package/lib/typescript/core/mixins/OxyServices.user.d.ts +6 -4
  357. package/lib/typescript/core/mixins/OxyServices.user.d.ts.map +1 -1
  358. package/lib/typescript/core/mixins/OxyServices.utility.d.ts.map +1 -1
  359. package/lib/typescript/core/mixins/index.d.ts +291 -9
  360. package/lib/typescript/core/mixins/index.d.ts.map +1 -1
  361. package/lib/typescript/crypto/index.d.ts +6 -3
  362. package/lib/typescript/crypto/index.d.ts.map +1 -1
  363. package/lib/typescript/crypto/keyManager.d.ts +190 -0
  364. package/lib/typescript/crypto/keyManager.d.ts.map +1 -0
  365. package/lib/typescript/crypto/polyfill.d.ts +4 -3
  366. package/lib/typescript/crypto/polyfill.d.ts.map +1 -1
  367. package/lib/typescript/crypto/recoveryPhrase.d.ts +59 -0
  368. package/lib/typescript/crypto/recoveryPhrase.d.ts.map +1 -0
  369. package/lib/typescript/crypto/signatureService.d.ts +87 -0
  370. package/lib/typescript/crypto/signatureService.d.ts.map +1 -0
  371. package/lib/typescript/index.d.ts +5 -6
  372. package/lib/typescript/index.d.ts.map +1 -1
  373. package/lib/typescript/models/interfaces.d.ts +2 -14
  374. package/lib/typescript/models/interfaces.d.ts.map +1 -1
  375. package/lib/typescript/models/session.d.ts +0 -9
  376. package/lib/typescript/models/session.d.ts.map +1 -1
  377. package/lib/typescript/types/bip39.d.ts +32 -0
  378. package/lib/typescript/ui/components/BottomSheetRouter.d.ts +5 -0
  379. package/lib/typescript/ui/components/BottomSheetRouter.d.ts.map +1 -1
  380. package/lib/typescript/ui/components/GroupedItem.d.ts +5 -1
  381. package/lib/typescript/ui/components/GroupedItem.d.ts.map +1 -1
  382. package/lib/typescript/ui/components/IconButton/utils.d.ts +1 -1
  383. package/lib/typescript/ui/components/OxyProvider.d.ts.map +1 -1
  384. package/lib/typescript/ui/components/SettingRow.d.ts +6 -0
  385. package/lib/typescript/ui/components/SettingRow.d.ts.map +1 -1
  386. package/lib/typescript/ui/components/TextField/Addons/Outline.d.ts +2 -2
  387. package/lib/typescript/ui/components/TextField/Adornment/utils.d.ts +1 -1
  388. package/lib/typescript/ui/components/TextField/Adornment/utils.d.ts.map +1 -1
  389. package/lib/typescript/ui/components/TextField/helpers.d.ts +8 -8
  390. package/lib/typescript/ui/components/TextField/types.d.ts +1 -0
  391. package/lib/typescript/ui/components/TextField/types.d.ts.map +1 -1
  392. package/lib/typescript/ui/components/feedback/FormInput.d.ts +20 -0
  393. package/lib/typescript/ui/components/feedback/FormInput.d.ts.map +1 -0
  394. package/lib/typescript/ui/components/feedback/ProgressIndicator.d.ts +11 -0
  395. package/lib/typescript/ui/components/feedback/ProgressIndicator.d.ts.map +1 -0
  396. package/lib/typescript/ui/components/feedback/constants.d.ts +5 -0
  397. package/lib/typescript/ui/components/feedback/constants.d.ts.map +1 -0
  398. package/lib/typescript/ui/components/feedback/feedbackStyles.d.ts +280 -0
  399. package/lib/typescript/ui/components/feedback/feedbackStyles.d.ts.map +1 -0
  400. package/lib/typescript/ui/components/feedback/index.d.ts +7 -0
  401. package/lib/typescript/ui/components/feedback/index.d.ts.map +1 -0
  402. package/lib/typescript/ui/components/feedback/types.d.ts +46 -0
  403. package/lib/typescript/ui/components/feedback/types.d.ts.map +1 -0
  404. package/lib/typescript/ui/components/feedback/useFeedbackForm.d.ts +9 -0
  405. package/lib/typescript/ui/components/feedback/useFeedbackForm.d.ts.map +1 -0
  406. package/lib/typescript/ui/components/modals/DeleteAccountModal.d.ts +19 -0
  407. package/lib/typescript/ui/components/modals/DeleteAccountModal.d.ts.map +1 -0
  408. package/lib/typescript/ui/components/modals/index.d.ts +2 -0
  409. package/lib/typescript/ui/components/modals/index.d.ts.map +1 -0
  410. package/lib/typescript/ui/components/payment/PaymentDetailsStep.d.ts +21 -0
  411. package/lib/typescript/ui/components/payment/PaymentDetailsStep.d.ts.map +1 -0
  412. package/lib/typescript/ui/components/payment/PaymentMethodStep.d.ts +14 -0
  413. package/lib/typescript/ui/components/payment/PaymentMethodStep.d.ts.map +1 -0
  414. package/lib/typescript/ui/components/payment/PaymentReviewStep.d.ts +16 -0
  415. package/lib/typescript/ui/components/payment/PaymentReviewStep.d.ts.map +1 -0
  416. package/lib/typescript/ui/components/payment/PaymentSuccessStep.d.ts +10 -0
  417. package/lib/typescript/ui/components/payment/PaymentSuccessStep.d.ts.map +1 -0
  418. package/lib/typescript/ui/components/payment/PaymentSummaryStep.d.ts +15 -0
  419. package/lib/typescript/ui/components/payment/PaymentSummaryStep.d.ts.map +1 -0
  420. package/lib/typescript/ui/components/payment/constants.d.ts +7 -0
  421. package/lib/typescript/ui/components/payment/constants.d.ts.map +1 -0
  422. package/lib/typescript/ui/components/payment/index.d.ts +9 -0
  423. package/lib/typescript/ui/components/payment/index.d.ts.map +1 -0
  424. package/lib/typescript/ui/components/payment/paymentStyles.d.ts +396 -0
  425. package/lib/typescript/ui/components/payment/paymentStyles.d.ts.map +1 -0
  426. package/lib/typescript/ui/components/payment/types.d.ts +40 -0
  427. package/lib/typescript/ui/components/payment/types.d.ts.map +1 -0
  428. package/lib/typescript/ui/components/types.d.ts +4 -0
  429. package/lib/typescript/ui/components/types.d.ts.map +1 -1
  430. package/lib/typescript/ui/context/OxyContext.d.ts +57 -3
  431. package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -1
  432. package/lib/typescript/ui/context/hooks/useAuthOperations.d.ts +10 -3
  433. package/lib/typescript/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
  434. package/lib/typescript/ui/context/hooks/useSessionManagement.d.ts +41 -0
  435. package/lib/typescript/ui/context/hooks/useSessionManagement.d.ts.map +1 -0
  436. package/lib/typescript/ui/hooks/index.d.ts +2 -0
  437. package/lib/typescript/ui/hooks/index.d.ts.map +1 -1
  438. package/lib/typescript/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  439. package/lib/typescript/ui/hooks/queries/useAccountQueries.d.ts.map +1 -1
  440. package/lib/typescript/ui/hooks/queries/useServicesQueries.d.ts.map +1 -1
  441. package/lib/typescript/ui/hooks/useAsyncAction.d.ts +51 -0
  442. package/lib/typescript/ui/hooks/useAsyncAction.d.ts.map +1 -0
  443. package/lib/typescript/ui/hooks/useProfileEditing.d.ts.map +1 -1
  444. package/lib/typescript/ui/hooks/useSessionManagement.d.ts.map +1 -1
  445. package/lib/typescript/ui/hooks/useSessionSocket.d.ts +1 -2
  446. package/lib/typescript/ui/hooks/useSessionSocket.d.ts.map +1 -1
  447. package/lib/typescript/ui/hooks/useSettingToggle.d.ts +55 -0
  448. package/lib/typescript/ui/hooks/useSettingToggle.d.ts.map +1 -0
  449. package/lib/typescript/ui/hooks/useStorage.d.ts +3 -9
  450. package/lib/typescript/ui/hooks/useStorage.d.ts.map +1 -1
  451. package/lib/typescript/ui/index.d.ts +6 -2
  452. package/lib/typescript/ui/index.d.ts.map +1 -1
  453. package/lib/typescript/ui/navigation/routes.d.ts +1 -1
  454. package/lib/typescript/ui/navigation/routes.d.ts.map +1 -1
  455. package/lib/typescript/ui/screens/AccountOverviewScreen.d.ts.map +1 -1
  456. package/lib/typescript/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
  457. package/lib/typescript/ui/screens/FAQScreen.d.ts +5 -0
  458. package/lib/typescript/ui/screens/FAQScreen.d.ts.map +1 -0
  459. package/lib/typescript/ui/screens/FeedbackScreen.d.ts.map +1 -1
  460. package/lib/typescript/ui/screens/HelpSupportScreen.d.ts.map +1 -1
  461. package/lib/typescript/ui/screens/OxyAuthScreen.d.ts +1 -1
  462. package/lib/typescript/ui/screens/OxyAuthScreen.d.ts.map +1 -1
  463. package/lib/typescript/ui/screens/PaymentGatewayScreen.d.ts +3 -15
  464. package/lib/typescript/ui/screens/PaymentGatewayScreen.d.ts.map +1 -1
  465. package/lib/typescript/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
  466. package/lib/typescript/ui/screens/ProfileScreen.d.ts.map +1 -1
  467. package/lib/typescript/ui/screens/SavesCollectionsScreen.d.ts.map +1 -1
  468. package/lib/typescript/ui/screens/karma/KarmaCenterScreen.d.ts.map +1 -1
  469. package/lib/typescript/ui/stores/accountStore.d.ts.map +1 -1
  470. package/lib/typescript/ui/stores/authStore.d.ts +8 -7
  471. package/lib/typescript/ui/stores/authStore.d.ts.map +1 -1
  472. package/lib/typescript/ui/styles/spacing.d.ts +5 -0
  473. package/lib/typescript/ui/styles/spacing.d.ts.map +1 -1
  474. package/lib/typescript/ui/types/navigation.d.ts +2 -1
  475. package/lib/typescript/ui/types/navigation.d.ts.map +1 -1
  476. package/lib/typescript/ui/utils/avatarUtils.d.ts +2 -13
  477. package/lib/typescript/ui/utils/avatarUtils.d.ts.map +1 -1
  478. package/lib/typescript/ui/utils/storageHelpers.d.ts +0 -3
  479. package/lib/typescript/ui/utils/storageHelpers.d.ts.map +1 -1
  480. package/lib/typescript/utils/errorUtils.d.ts +6 -0
  481. package/lib/typescript/utils/errorUtils.d.ts.map +1 -1
  482. package/lib/typescript/utils/validationUtils.d.ts +8 -0
  483. package/lib/typescript/utils/validationUtils.d.ts.map +1 -1
  484. package/package.json +8 -7
  485. package/src/core/CrossDomainAuth.ts +307 -0
  486. package/src/core/HttpService.ts +99 -16
  487. package/src/core/OxyServices.base.ts +20 -3
  488. package/src/core/OxyServices.ts +7 -3
  489. package/src/core/index.ts +9 -1
  490. package/src/core/mixins/OxyServices.assets.ts +14 -3
  491. package/src/core/mixins/OxyServices.auth.ts +105 -36
  492. package/src/core/mixins/OxyServices.features.ts +428 -0
  493. package/src/core/mixins/OxyServices.fedcm.ts +315 -0
  494. package/src/core/mixins/OxyServices.popup.ts +402 -0
  495. package/src/core/mixins/OxyServices.redirect.ts +397 -0
  496. package/src/core/mixins/OxyServices.user.ts +39 -24
  497. package/src/core/mixins/index.ts +33 -14
  498. package/src/crypto/index.ts +16 -5
  499. package/src/crypto/keyManager.ts +966 -0
  500. package/src/crypto/polyfill.ts +6 -5
  501. package/src/crypto/recoveryPhrase.ts +166 -0
  502. package/src/crypto/signatureService.ts +323 -0
  503. package/src/i18n/locales/en-US.json +1 -1
  504. package/src/index.ts +19 -15
  505. package/src/models/interfaces.ts +4 -16
  506. package/src/models/session.ts +2 -11
  507. package/src/types/bip39.d.ts +32 -0
  508. package/src/ui/components/BottomSheetRouter.tsx +6 -1
  509. package/src/ui/components/GroupedItem.tsx +19 -1
  510. package/src/ui/components/Icon.tsx +1 -1
  511. package/src/ui/components/IconButton/utils.ts +1 -1
  512. package/src/ui/components/OxyProvider.tsx +44 -12
  513. package/src/ui/components/SettingRow.tsx +26 -4
  514. package/src/ui/components/TextField/Addons/Outline.tsx +2 -2
  515. package/src/ui/components/TextField/Adornment/utils.ts +2 -2
  516. package/src/ui/components/TextField/helpers.tsx +10 -10
  517. package/src/ui/components/TextField/types.tsx +1 -1
  518. package/src/ui/components/TouchableRipple/utils.ts +2 -2
  519. package/src/ui/components/Typography/AnimatedText.tsx +2 -2
  520. package/src/ui/components/feedback/FormInput.tsx +84 -0
  521. package/src/ui/components/feedback/ProgressIndicator.tsx +35 -0
  522. package/src/ui/components/feedback/constants.ts +22 -0
  523. package/src/ui/components/feedback/feedbackStyles.ts +247 -0
  524. package/src/ui/components/feedback/index.ts +6 -0
  525. package/src/ui/components/feedback/types.ts +52 -0
  526. package/src/ui/components/feedback/useFeedbackForm.ts +44 -0
  527. package/src/ui/components/modals/DeleteAccountModal.tsx +294 -0
  528. package/src/ui/components/modals/index.ts +1 -0
  529. package/src/ui/components/payment/PaymentDetailsStep.tsx +222 -0
  530. package/src/ui/components/payment/PaymentMethodStep.tsx +89 -0
  531. package/src/ui/components/payment/PaymentReviewStep.tsx +126 -0
  532. package/src/ui/components/payment/PaymentSuccessStep.tsx +71 -0
  533. package/src/ui/components/payment/PaymentSummaryStep.tsx +159 -0
  534. package/src/ui/components/payment/constants.ts +39 -0
  535. package/src/ui/components/payment/index.ts +9 -0
  536. package/src/ui/components/payment/paymentStyles.ts +397 -0
  537. package/src/ui/components/payment/types.ts +45 -0
  538. package/src/ui/components/types.tsx +6 -0
  539. package/src/ui/context/OxyContext.tsx +173 -195
  540. package/src/ui/context/hooks/useAuthOperations.ts +177 -36
  541. package/src/ui/context/hooks/useSessionManagement.ts +399 -0
  542. package/src/ui/hooks/index.ts +3 -1
  543. package/src/ui/hooks/mutations/useAccountMutations.ts +83 -76
  544. package/src/ui/hooks/queries/useAccountQueries.ts +29 -35
  545. package/src/ui/hooks/queries/useSecurityQueries.ts +1 -1
  546. package/src/ui/hooks/queries/useServicesQueries.ts +14 -6
  547. package/src/ui/hooks/useAsyncAction.ts +129 -0
  548. package/src/ui/hooks/useProfileEditing.ts +3 -3
  549. package/src/ui/hooks/useSessionManagement.ts +5 -10
  550. package/src/ui/hooks/useSessionSocket.ts +46 -175
  551. package/src/ui/hooks/useSettingToggle.ts +147 -0
  552. package/src/ui/hooks/useStorage.ts +24 -76
  553. package/src/ui/index.ts +22 -13
  554. package/src/ui/navigation/routes.ts +8 -2
  555. package/src/ui/screens/AccountCenterScreen.tsx +4 -4
  556. package/src/ui/screens/AccountOverviewScreen.tsx +36 -38
  557. package/src/ui/screens/AccountSettingsScreen.tsx +34 -37
  558. package/src/ui/screens/AccountSwitcherScreen.tsx +4 -4
  559. package/src/ui/screens/FAQScreen.tsx +332 -0
  560. package/src/ui/screens/FeedbackScreen.tsx +91 -626
  561. package/src/ui/screens/HelpSupportScreen.tsx +7 -5
  562. package/src/ui/screens/OxyAuthScreen.tsx +138 -64
  563. package/src/ui/screens/PaymentGatewayScreen.tsx +96 -1275
  564. package/src/ui/screens/PrivacySettingsScreen.tsx +6 -12
  565. package/src/ui/screens/ProfileScreen.tsx +11 -6
  566. package/src/ui/screens/SavesCollectionsScreen.tsx +19 -10
  567. package/src/ui/screens/karma/KarmaCenterScreen.tsx +10 -10
  568. package/src/ui/stores/accountStore.ts +1 -11
  569. package/src/ui/stores/authStore.ts +43 -44
  570. package/src/ui/styles/spacing.ts +15 -2
  571. package/src/ui/types/navigation.ts +2 -2
  572. package/src/ui/utils/avatarUtils.ts +39 -46
  573. package/src/ui/utils/storageHelpers.ts +0 -4
  574. package/src/utils/__tests__/validationUtils.test.ts +16 -1
  575. package/src/utils/errorUtils.ts +8 -1
  576. package/src/utils/validationUtils.ts +12 -0
  577. package/lib/commonjs/core/services/SessionService.js +0 -163
  578. package/lib/commonjs/core/services/SessionService.js.map +0 -1
  579. package/lib/commonjs/core/services/TokenService.js +0 -220
  580. package/lib/commonjs/core/services/TokenService.js.map +0 -1
  581. package/lib/commonjs/crypto/types.js +0 -2
  582. package/lib/commonjs/crypto/types.js.map +0 -1
  583. package/lib/commonjs/ui/context/OxyContextBase.js +0 -21
  584. package/lib/commonjs/ui/context/OxyContextBase.js.map +0 -1
  585. package/lib/commonjs/ui/context/hooks/useStorage.js +0 -79
  586. package/lib/commonjs/ui/context/hooks/useStorage.js.map +0 -1
  587. package/lib/commonjs/ui/hooks/useAvatarPicker.js +0 -56
  588. package/lib/commonjs/ui/hooks/useAvatarPicker.js.map +0 -1
  589. package/lib/module/core/services/SessionService.js +0 -159
  590. package/lib/module/core/services/SessionService.js.map +0 -1
  591. package/lib/module/core/services/TokenService.js +0 -217
  592. package/lib/module/core/services/TokenService.js.map +0 -1
  593. package/lib/module/crypto/types.js +0 -2
  594. package/lib/module/crypto/types.js.map +0 -1
  595. package/lib/module/ui/context/OxyContextBase.js +0 -16
  596. package/lib/module/ui/context/OxyContextBase.js.map +0 -1
  597. package/lib/module/ui/context/hooks/useStorage.js +0 -74
  598. package/lib/module/ui/context/hooks/useStorage.js.map +0 -1
  599. package/lib/module/ui/hooks/useAvatarPicker.js +0 -50
  600. package/lib/module/ui/hooks/useAvatarPicker.js.map +0 -1
  601. package/lib/typescript/core/services/SessionService.d.ts +0 -78
  602. package/lib/typescript/core/services/SessionService.d.ts.map +0 -1
  603. package/lib/typescript/core/services/TokenService.d.ts +0 -72
  604. package/lib/typescript/core/services/TokenService.d.ts.map +0 -1
  605. package/lib/typescript/crypto/types.d.ts +0 -22
  606. package/lib/typescript/crypto/types.d.ts.map +0 -1
  607. package/lib/typescript/ui/context/OxyContextBase.d.ts +0 -63
  608. package/lib/typescript/ui/context/OxyContextBase.d.ts.map +0 -1
  609. package/lib/typescript/ui/context/hooks/useStorage.d.ts +0 -22
  610. package/lib/typescript/ui/context/hooks/useStorage.d.ts.map +0 -1
  611. package/lib/typescript/ui/hooks/useAvatarPicker.d.ts +0 -19
  612. package/lib/typescript/ui/hooks/useAvatarPicker.d.ts.map +0 -1
  613. package/src/core/services/SessionService.ts +0 -173
  614. package/src/core/services/TokenService.ts +0 -237
  615. package/src/crypto/types.ts +0 -23
  616. package/src/ui/context/OxyContextBase.tsx +0 -78
  617. package/src/ui/context/hooks/useStorage.ts +0 -104
  618. package/src/ui/hooks/useAvatarPicker.ts +0 -61
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import React, { useState, useRef, useCallback, useMemo } from 'react';
4
- import { View, Text, TextInput, TouchableOpacity, StyleSheet, ActivityIndicator, Platform, KeyboardAvoidingView, ScrollView, Animated, StatusBar, Dimensions } from 'react-native';
4
+ import { View, Text, TouchableOpacity, ActivityIndicator, Platform, KeyboardAvoidingView, ScrollView, Animated, StatusBar } from 'react-native';
5
5
  import { useThemeColors } from '../styles';
6
6
  import { normalizeTheme } from '../utils/themeUtils';
7
7
  import { Ionicons } from '@expo/vector-icons';
@@ -10,514 +10,14 @@ import { packageInfo } from '../../constants/version';
10
10
  import { GroupedSection } from '../components';
11
11
  import { useI18n } from '../hooks/useI18n';
12
12
  import { useOxy } from '../context/OxyContext';
13
- import { screenContentStyle } from '../constants/spacing';
14
-
15
- // Types for better type safety
13
+ import { FormInput, ProgressIndicator, useFeedbackForm, createFeedbackStyles, FEEDBACK_TYPES, PRIORITY_LEVELS, CATEGORIES } from '../components/feedback';
16
14
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
17
- // Constants
18
- const FEEDBACK_TYPES = [{
19
- id: 'bug',
20
- label: 'Bug Report',
21
- icon: 'bug',
22
- color: '#FF3B30',
23
- description: 'Report a problem or issue'
24
- }, {
25
- id: 'feature',
26
- label: 'Feature Request',
27
- icon: 'bulb',
28
- color: '#007AFF',
29
- description: 'Suggest a new feature'
30
- }, {
31
- id: 'general',
32
- label: 'General Feedback',
33
- icon: 'chatbubble',
34
- color: '#34C759',
35
- description: 'Share your thoughts'
36
- }, {
37
- id: 'support',
38
- label: 'Support Request',
39
- icon: 'help-circle',
40
- color: '#FF9500',
41
- description: 'Get help with something'
42
- }];
43
- const PRIORITY_LEVELS = [{
44
- id: 'low',
45
- label: 'Low',
46
- icon: 'arrow-down',
47
- color: '#34C759'
48
- }, {
49
- id: 'medium',
50
- label: 'Medium',
51
- icon: 'remove',
52
- color: '#FF9500'
53
- }, {
54
- id: 'high',
55
- label: 'High',
56
- icon: 'arrow-up',
57
- color: '#FF3B30'
58
- }, {
59
- id: 'critical',
60
- label: 'Critical',
61
- icon: 'warning',
62
- color: '#FF0000'
63
- }];
64
- const CATEGORIES = {
65
- bug: ['UI/UX', 'Performance', 'Authentication', 'File Management', 'Billing', 'Other'],
66
- feature: ['User Interface', 'File Management', 'Security', 'Performance', 'Integration', 'Other'],
67
- general: ['User Experience', 'Design', 'Performance', 'Documentation', 'Other'],
68
- support: ['Account Issues', 'Billing', 'Technical Problems', 'Feature Questions', 'Other']
69
- };
70
-
71
- // Styles factory function
72
- const createStyles = (colors, theme) => StyleSheet.create({
73
- container: {
74
- flex: 1
75
- },
76
- fullBleed: {
77
- width: '100%',
78
- alignSelf: 'stretch'
79
- },
80
- scrollContent: {
81
- flexGrow: 1,
82
- ...screenContentStyle
83
- },
84
- stepContainer: {
85
- flex: 1,
86
- justifyContent: 'flex-start',
87
- alignItems: 'flex-start'
88
- },
89
- modernHeader: {
90
- alignItems: 'flex-start',
91
- width: '100%',
92
- marginBottom: 24
93
- },
94
- modernTitle: {
95
- fontFamily: Platform.OS === 'web' ? 'Phudu' : 'Phudu-Bold',
96
- fontWeight: Platform.OS === 'web' ? 'bold' : undefined,
97
- fontSize: 42,
98
- lineHeight: 48,
99
- marginBottom: 12,
100
- textAlign: 'left',
101
- letterSpacing: -1
102
- },
103
- modernSubtitle: {
104
- fontSize: 18,
105
- lineHeight: 24,
106
- textAlign: 'left',
107
- opacity: 0.8,
108
- marginBottom: 24
109
- },
110
- stepTitle: {
111
- fontFamily: Platform.OS === 'web' ? 'Phudu' : 'Phudu-Bold',
112
- fontWeight: Platform.OS === 'web' ? 'bold' : undefined,
113
- fontSize: 42,
114
- lineHeight: 48,
115
- marginBottom: 12,
116
- textAlign: 'left',
117
- letterSpacing: -1
118
- },
119
- inputContainer: {
120
- width: '100%',
121
- marginBottom: 24
122
- },
123
- premiumInputWrapper: {
124
- flexDirection: 'row',
125
- alignItems: 'center',
126
- height: 56,
127
- borderRadius: 16,
128
- paddingHorizontal: 20,
129
- borderWidth: 2,
130
- backgroundColor: colors.inputBackground
131
- },
132
- textAreaWrapper: {
133
- flexDirection: 'column',
134
- alignItems: 'flex-start',
135
- minHeight: 120,
136
- borderRadius: 16,
137
- paddingHorizontal: 20,
138
- paddingVertical: 16,
139
- borderWidth: 2,
140
- backgroundColor: colors.inputBackground
141
- },
142
- inputIcon: {
143
- marginRight: 12
144
- },
145
- inputContent: {
146
- flex: 1
147
- },
148
- modernLabel: {
149
- fontSize: 12,
150
- fontWeight: '500',
151
- marginBottom: 2
152
- },
153
- modernInput: {
154
- flex: 1,
155
- fontSize: 16,
156
- height: '100%'
157
- },
158
- textArea: {
159
- flex: 1,
160
- fontSize: 16,
161
- textAlignVertical: 'top',
162
- minHeight: 80
163
- },
164
- typeGrid: {
165
- flexDirection: 'row',
166
- flexWrap: 'wrap',
167
- gap: 12,
168
- marginBottom: 24
169
- },
170
- typeCard: {
171
- width: (Dimensions.get('window').width - 72) / 2,
172
- padding: 20,
173
- borderRadius: 16,
174
- borderWidth: 2,
175
- alignItems: 'center',
176
- justifyContent: 'center',
177
- minHeight: 120
178
- },
179
- typeIcon: {
180
- marginBottom: 12
181
- },
182
- typeLabel: {
183
- fontSize: 16,
184
- fontWeight: '600',
185
- textAlign: 'center',
186
- marginBottom: 4
187
- },
188
- typeDescription: {
189
- fontSize: 12,
190
- textAlign: 'center',
191
- opacity: 0.8
192
- },
193
- priorityContainer: {
194
- flexDirection: 'row',
195
- justifyContent: 'space-between',
196
- marginBottom: 24
197
- },
198
- priorityButton: {
199
- flex: 1,
200
- padding: 16,
201
- borderRadius: 12,
202
- borderWidth: 2,
203
- alignItems: 'center',
204
- marginHorizontal: 4
205
- },
206
- priorityLabel: {
207
- fontSize: 12,
208
- fontWeight: '600',
209
- marginTop: 4
210
- },
211
- categoryContainer: {
212
- marginBottom: 24
213
- },
214
- categoryButton: {
215
- flexDirection: 'row',
216
- alignItems: 'center',
217
- paddingVertical: 12,
218
- paddingHorizontal: 16,
219
- borderRadius: 12,
220
- borderWidth: 1,
221
- marginBottom: 8
222
- },
223
- categoryText: {
224
- fontSize: 16,
225
- marginLeft: 12
226
- },
227
- checkboxContainer: {
228
- flexDirection: 'row',
229
- alignItems: 'center',
230
- marginBottom: 24
231
- },
232
- checkbox: {
233
- width: 24,
234
- height: 24,
235
- borderRadius: 6,
236
- borderWidth: 2,
237
- marginRight: 12,
238
- alignItems: 'center',
239
- justifyContent: 'center'
240
- },
241
- checkboxText: {
242
- fontSize: 16,
243
- flex: 1
244
- },
245
- button: {
246
- flexDirection: 'row',
247
- alignItems: 'center',
248
- justifyContent: 'center',
249
- paddingVertical: 18,
250
- paddingHorizontal: 32,
251
- borderRadius: 16,
252
- marginVertical: 8,
253
- gap: 8,
254
- width: '100%',
255
- ...Platform.select({
256
- web: {
257
- boxShadow: '0 4px 8px rgba(0,0,0,0.3)'
258
- },
259
- default: {
260
- shadowOffset: {
261
- width: 0,
262
- height: 4
263
- },
264
- shadowOpacity: 0.3,
265
- shadowRadius: 8,
266
- elevation: 6
267
- }
268
- })
269
- },
270
- buttonText: {
271
- color: '#FFFFFF',
272
- fontSize: 16,
273
- fontWeight: '600',
274
- letterSpacing: 0.5
275
- },
276
- navigationButtons: {
277
- flexDirection: 'row',
278
- justifyContent: 'center',
279
- marginTop: 16,
280
- marginBottom: 8,
281
- width: '100%',
282
- gap: 8
283
- },
284
- navButton: {
285
- flexDirection: 'row',
286
- alignItems: 'center',
287
- paddingVertical: 6,
288
- paddingHorizontal: 12,
289
- gap: 6,
290
- minWidth: 70,
291
- borderWidth: 1,
292
- ...Platform.select({
293
- web: {
294
- boxShadow: '0 2px 4px rgba(0,0,0,0.1)'
295
- },
296
- default: {
297
- shadowOffset: {
298
- width: 0,
299
- height: 2
300
- },
301
- shadowOpacity: 0.1,
302
- shadowRadius: 4,
303
- elevation: 2
304
- }
305
- })
306
- },
307
- backButton: {
308
- backgroundColor: 'transparent',
309
- borderTopLeftRadius: 35,
310
- borderBottomLeftRadius: 35,
311
- borderTopRightRadius: 12,
312
- borderBottomRightRadius: 12
313
- },
314
- nextButton: {
315
- backgroundColor: 'transparent',
316
- borderTopRightRadius: 35,
317
- borderBottomRightRadius: 35,
318
- borderTopLeftRadius: 12,
319
- borderBottomLeftRadius: 12
320
- },
321
- navButtonText: {
322
- fontSize: 13,
323
- fontWeight: '500'
324
- },
325
- progressContainer: {
326
- flexDirection: 'row',
327
- justifyContent: 'center',
328
- marginBottom: 20,
329
- marginTop: 8
330
- },
331
- progressDot: {
332
- height: 10,
333
- width: 10,
334
- borderRadius: 5,
335
- marginHorizontal: 6,
336
- borderWidth: 2,
337
- borderColor: '#fff',
338
- ...Platform.select({
339
- web: {
340
- boxShadow: '0 1px 2px rgba(0,0,0,0.08)'
341
- },
342
- default: {
343
- shadowColor: colors.primary,
344
- shadowOpacity: 0.08,
345
- shadowOffset: {
346
- width: 0,
347
- height: 1
348
- },
349
- shadowRadius: 2,
350
- elevation: 1
351
- }
352
- })
353
- },
354
- summaryContainer: {
355
- padding: 0,
356
- marginBottom: 24,
357
- width: '100%'
358
- },
359
- summaryRow: {
360
- flexDirection: 'row',
361
- marginBottom: 10
362
- },
363
- summaryLabel: {
364
- fontSize: 15,
365
- width: 90
366
- },
367
- summaryValue: {
368
- fontSize: 15,
369
- fontWeight: '600',
370
- flex: 1
371
- },
372
- successContainer: {
373
- alignItems: 'center',
374
- justifyContent: 'center',
375
- padding: 40
376
- },
377
- successIcon: {
378
- marginBottom: 24
379
- },
380
- successTitle: {
381
- fontSize: 24,
382
- fontWeight: 'bold',
383
- marginBottom: 12,
384
- textAlign: 'center'
385
- },
386
- successMessage: {
387
- fontSize: 16,
388
- textAlign: 'center',
389
- opacity: 0.8,
390
- marginBottom: 24
391
- }
392
- });
393
-
394
- // Custom hooks for better separation of concerns
395
- const useFeedbackForm = () => {
396
- const [feedbackData, setFeedbackData] = useState({
397
- type: 'general',
398
- title: '',
399
- description: '',
400
- priority: 'medium',
401
- category: '',
402
- contactEmail: '',
403
- systemInfo: true
404
- });
405
- const [feedbackState, setFeedbackState] = useState({
406
- status: 'idle',
407
- message: ''
408
- });
409
- const updateField = useCallback((field, value) => {
410
- setFeedbackData(prev => ({
411
- ...prev,
412
- [field]: value
413
- }));
414
- }, []);
415
- const resetForm = useCallback(() => {
416
- setFeedbackData({
417
- type: 'general',
418
- title: '',
419
- description: '',
420
- priority: 'medium',
421
- category: '',
422
- contactEmail: '',
423
- systemInfo: true
424
- });
425
- setFeedbackState({
426
- status: 'idle',
427
- message: ''
428
- });
429
- }, []);
430
- return {
431
- feedbackData,
432
- feedbackState,
433
- setFeedbackState,
434
- updateField,
435
- resetForm
436
- };
437
- };
438
-
439
- // Reusable components
440
- const FormInput = /*#__PURE__*/React.memo(({
441
- icon,
442
- label,
443
- value,
444
- onChangeText,
445
- placeholder,
446
- multiline = false,
447
- numberOfLines = 1,
448
- testID,
449
- colors,
450
- styles,
451
- borderColor
452
- }) => /*#__PURE__*/_jsx(View, {
453
- style: styles.inputContainer,
454
- children: /*#__PURE__*/_jsxs(View, {
455
- style: [multiline ? styles.textAreaWrapper : styles.premiumInputWrapper, {
456
- borderColor: borderColor || colors.border,
457
- backgroundColor: colors.inputBackground,
458
- shadowColor: colors.primary,
459
- shadowOffset: {
460
- width: 0,
461
- height: 4
462
- },
463
- shadowOpacity: 0.1,
464
- shadowRadius: 12,
465
- elevation: 3
466
- }],
467
- children: [!multiline && /*#__PURE__*/_jsx(Ionicons, {
468
- name: icon,
469
- size: 22,
470
- color: colors.secondaryText,
471
- style: styles.inputIcon
472
- }), /*#__PURE__*/_jsxs(View, {
473
- style: styles.inputContent,
474
- children: [/*#__PURE__*/_jsx(Text, {
475
- style: [styles.modernLabel, {
476
- color: colors.secondaryText
477
- }],
478
- children: label
479
- }), /*#__PURE__*/_jsx(TextInput, {
480
- style: [multiline ? styles.textArea : styles.modernInput, {
481
- color: colors.text
482
- }],
483
- value: value,
484
- onChangeText: onChangeText,
485
- placeholder: placeholder,
486
- placeholderTextColor: colors.secondaryText + '60',
487
- multiline: multiline,
488
- numberOfLines: multiline ? numberOfLines : undefined,
489
- testID: testID
490
- })]
491
- })]
492
- })
493
- }));
494
- const ProgressIndicator = /*#__PURE__*/React.memo(({
495
- currentStep,
496
- totalSteps,
497
- colors,
498
- styles
499
- }) => /*#__PURE__*/_jsx(View, {
500
- style: styles.progressContainer,
501
- children: Array.from({
502
- length: totalSteps
503
- }, (_, index) => /*#__PURE__*/_jsx(View, {
504
- style: [styles.progressDot, currentStep === index ? {
505
- backgroundColor: colors.primary,
506
- width: 24
507
- } : {
508
- backgroundColor: colors.border
509
- }]
510
- }, index))
511
- }));
512
-
513
- // Main component
514
15
  const FeedbackScreen = ({
515
16
  navigate,
516
17
  goBack,
517
18
  onClose,
518
19
  theme
519
20
  }) => {
520
- // Use useOxy() hook for OxyContext values
521
21
  const {
522
22
  user,
523
23
  oxyServices
@@ -527,8 +27,6 @@ const FeedbackScreen = ({
527
27
  const {
528
28
  t
529
29
  } = useI18n();
530
-
531
- // Form state
532
30
  const {
533
31
  feedbackData,
534
32
  feedbackState,
@@ -536,19 +34,11 @@ const FeedbackScreen = ({
536
34
  updateField,
537
35
  resetForm
538
36
  } = useFeedbackForm();
539
-
540
- // UI state
541
37
  const [currentStep, setCurrentStep] = useState(0);
542
38
  const [errorMessage, setErrorMessage] = useState('');
543
-
544
- // Animation refs
545
39
  const fadeAnim = useRef(new Animated.Value(1)).current;
546
40
  const slideAnim = useRef(new Animated.Value(0)).current;
547
-
548
- // Memoized styles
549
- const styles = useMemo(() => createStyles(colors, normalizedTheme), [colors, normalizedTheme]);
550
-
551
- // Animation functions
41
+ const styles = useMemo(() => createFeedbackStyles(colors), [colors]);
552
42
  const animateTransition = useCallback(nextStep => {
553
43
  Animated.timing(fadeAnim, {
554
44
  toValue: 0,
@@ -578,8 +68,6 @@ const FeedbackScreen = ({
578
68
  animateTransition(currentStep - 1);
579
69
  }
580
70
  }, [currentStep, animateTransition]);
581
-
582
- // Form validation helpers
583
71
  const isTypeStepValid = useCallback(() => {
584
72
  return feedbackData.type && feedbackData.category;
585
73
  }, [feedbackData.type, feedbackData.category]);
@@ -589,8 +77,6 @@ const FeedbackScreen = ({
589
77
  const isContactStepValid = useCallback(() => {
590
78
  return feedbackData.contactEmail.trim() || user?.email;
591
79
  }, [feedbackData.contactEmail, user?.email]);
592
-
593
- // Submit feedback handler
594
80
  const handleSubmitFeedback = useCallback(async () => {
595
81
  if (!isTypeStepValid() || !isDetailsStepValid() || !isContactStepValid()) {
596
82
  toast.error(t('feedback.toasts.fillRequired') || 'Please fill in all required fields');
@@ -602,8 +88,6 @@ const FeedbackScreen = ({
602
88
  message: ''
603
89
  });
604
90
  setErrorMessage('');
605
-
606
- // Prepare feedback data
607
91
  const feedbackPayload = {
608
92
  type: feedbackData.type,
609
93
  title: feedbackData.title,
@@ -620,19 +104,12 @@ const FeedbackScreen = ({
620
104
  timestamp: new Date().toISOString()
621
105
  } : undefined
622
106
  };
623
-
624
- // TODO: Implement actual API integration
625
- // Replace setTimeout simulation with actual API call: await oxyServices.submitFeedback(feedbackPayload)
626
- // Currently simulates API call with setTimeout for development/testing purposes
627
- await new Promise(resolve => setTimeout(resolve, 2000)); // Simulate API call
628
-
107
+ await oxyServices.submitFeedback(feedbackPayload);
629
108
  setFeedbackState({
630
109
  status: 'success',
631
110
  message: t('feedback.toasts.submitSuccess') || 'Feedback submitted successfully!'
632
111
  });
633
112
  toast.success(t('feedback.toasts.thanks') || 'Thank you for your feedback!');
634
-
635
- // Reset form after success
636
113
  setTimeout(() => {
637
114
  resetForm();
638
115
  setCurrentStep(0);
@@ -644,10 +121,7 @@ const FeedbackScreen = ({
644
121
  });
645
122
  toast.error(error.message || t('feedback.toasts.submitFailed') || 'Failed to submit feedback');
646
123
  }
647
- }, [feedbackData, user, isTypeStepValid, isDetailsStepValid, isContactStepValid, resetForm]);
648
-
649
- // Step components
650
- // Memoized grouped section items
124
+ }, [feedbackData, user, isTypeStepValid, isDetailsStepValid, isContactStepValid, resetForm, setFeedbackState, t]);
651
125
  const feedbackTypeItems = useMemo(() => FEEDBACK_TYPES.map(type => ({
652
126
  id: type.id,
653
127
  icon: type.icon,
@@ -683,7 +157,7 @@ const FeedbackScreen = ({
683
157
  showChevron: false,
684
158
  dense: true
685
159
  })), [feedbackData.priority, updateField]);
686
- const renderTypeStep = useCallback(() => /*#__PURE__*/_jsxs(Animated.View, {
160
+ const renderTypeStep = () => /*#__PURE__*/_jsxs(Animated.View, {
687
161
  style: [styles.stepContainer, {
688
162
  opacity: fadeAnim,
689
163
  transform: [{
@@ -728,13 +202,11 @@ const FeedbackScreen = ({
728
202
  style: [styles.navButton, {
729
203
  backgroundColor: 'transparent',
730
204
  borderColor: colors.border,
731
- shadowColor: colors.border,
732
- borderTopLeftRadius: 35,
733
- borderBottomLeftRadius: 35,
734
- borderTopRightRadius: 35,
735
- borderBottomRightRadius: 35
205
+ borderRadius: 35
736
206
  }],
737
207
  onPress: goBack,
208
+ accessibilityRole: "button",
209
+ accessibilityLabel: "Go back",
738
210
  children: [/*#__PURE__*/_jsx(Ionicons, {
739
211
  name: "arrow-back",
740
212
  size: 16,
@@ -749,14 +221,12 @@ const FeedbackScreen = ({
749
221
  style: [styles.navButton, {
750
222
  backgroundColor: colors.primary,
751
223
  borderColor: colors.primary,
752
- shadowColor: colors.primary,
753
- borderTopLeftRadius: 35,
754
- borderBottomLeftRadius: 35,
755
- borderTopRightRadius: 35,
756
- borderBottomRightRadius: 35
224
+ borderRadius: 35
757
225
  }],
758
226
  onPress: nextStep,
759
227
  disabled: !isTypeStepValid(),
228
+ accessibilityRole: "button",
229
+ accessibilityLabel: "Continue to next step",
760
230
  children: [/*#__PURE__*/_jsx(Text, {
761
231
  style: [styles.navButtonText, {
762
232
  color: '#FFFFFF'
@@ -769,8 +239,8 @@ const FeedbackScreen = ({
769
239
  })]
770
240
  })]
771
241
  })]
772
- }), [fadeAnim, slideAnim, colors, feedbackData, feedbackTypeItems, categoryItems, updateField, goBack, nextStep, isTypeStepValid, styles, theme]);
773
- const renderDetailsStep = useCallback(() => /*#__PURE__*/_jsxs(Animated.View, {
242
+ });
243
+ const renderDetailsStep = () => /*#__PURE__*/_jsxs(Animated.View, {
774
244
  style: [styles.stepContainer, {
775
245
  opacity: fadeAnim,
776
246
  transform: [{
@@ -801,7 +271,9 @@ const FeedbackScreen = ({
801
271
  placeholder: t('feedback.fields.title.placeholder') || 'Brief summary of your feedback',
802
272
  testID: "feedback-title-input",
803
273
  colors: colors,
804
- styles: styles
274
+ styles: styles,
275
+ accessibilityLabel: "Feedback title",
276
+ accessibilityHint: "Enter a brief summary of your feedback"
805
277
  }), /*#__PURE__*/_jsx(FormInput, {
806
278
  icon: "document-text-outline",
807
279
  label: t('feedback.fields.description.label') || 'Description',
@@ -815,7 +287,9 @@ const FeedbackScreen = ({
815
287
  numberOfLines: 6,
816
288
  testID: "feedback-description-input",
817
289
  colors: colors,
818
- styles: styles
290
+ styles: styles,
291
+ accessibilityLabel: "Feedback description",
292
+ accessibilityHint: "Provide detailed information about your feedback"
819
293
  }), /*#__PURE__*/_jsxs(View, {
820
294
  style: {
821
295
  marginBottom: 24
@@ -836,10 +310,11 @@ const FeedbackScreen = ({
836
310
  style: styles.navigationButtons,
837
311
  children: [/*#__PURE__*/_jsxs(TouchableOpacity, {
838
312
  style: [styles.navButton, styles.backButton, {
839
- borderColor: colors.border,
840
- shadowColor: colors.border
313
+ borderColor: colors.border
841
314
  }],
842
315
  onPress: prevStep,
316
+ accessibilityRole: "button",
317
+ accessibilityLabel: "Go back",
843
318
  children: [/*#__PURE__*/_jsx(Ionicons, {
844
319
  name: "arrow-back",
845
320
  size: 16,
@@ -853,11 +328,12 @@ const FeedbackScreen = ({
853
328
  }), /*#__PURE__*/_jsxs(TouchableOpacity, {
854
329
  style: [styles.navButton, styles.nextButton, {
855
330
  backgroundColor: colors.primary,
856
- borderColor: colors.primary,
857
- shadowColor: colors.primary
331
+ borderColor: colors.primary
858
332
  }],
859
333
  onPress: nextStep,
860
334
  disabled: !isDetailsStepValid(),
335
+ accessibilityRole: "button",
336
+ accessibilityLabel: "Continue to next step",
861
337
  children: [/*#__PURE__*/_jsx(Text, {
862
338
  style: [styles.navButtonText, {
863
339
  color: '#FFFFFF'
@@ -870,8 +346,8 @@ const FeedbackScreen = ({
870
346
  })]
871
347
  })]
872
348
  })]
873
- }), [fadeAnim, slideAnim, colors, feedbackData, updateField, setErrorMessage, prevStep, nextStep, isDetailsStepValid, styles, priorityItems, theme]);
874
- const renderContactStep = useCallback(() => /*#__PURE__*/_jsxs(Animated.View, {
349
+ });
350
+ const renderContactStep = () => /*#__PURE__*/_jsxs(Animated.View, {
875
351
  style: [styles.stepContainer, {
876
352
  opacity: fadeAnim,
877
353
  transform: [{
@@ -902,7 +378,9 @@ const FeedbackScreen = ({
902
378
  placeholder: user?.email || t('feedback.fields.email.placeholder') || 'Enter your email address',
903
379
  testID: "feedback-email-input",
904
380
  colors: colors,
905
- styles: styles
381
+ styles: styles,
382
+ accessibilityLabel: "Email address",
383
+ accessibilityHint: "Enter your email so we can respond"
906
384
  }), /*#__PURE__*/_jsxs(View, {
907
385
  style: styles.checkboxContainer,
908
386
  children: [/*#__PURE__*/_jsx(TouchableOpacity, {
@@ -911,6 +389,11 @@ const FeedbackScreen = ({
911
389
  backgroundColor: feedbackData.systemInfo ? colors.primary : 'transparent'
912
390
  }],
913
391
  onPress: () => updateField('systemInfo', !feedbackData.systemInfo),
392
+ accessibilityRole: "checkbox",
393
+ accessibilityState: {
394
+ checked: feedbackData.systemInfo
395
+ },
396
+ accessibilityLabel: "Include system information",
914
397
  children: feedbackData.systemInfo && /*#__PURE__*/_jsx(Ionicons, {
915
398
  name: "checkmark",
916
399
  size: 16,
@@ -926,10 +409,11 @@ const FeedbackScreen = ({
926
409
  style: styles.navigationButtons,
927
410
  children: [/*#__PURE__*/_jsxs(TouchableOpacity, {
928
411
  style: [styles.navButton, styles.backButton, {
929
- borderColor: colors.border,
930
- shadowColor: colors.border
412
+ borderColor: colors.border
931
413
  }],
932
414
  onPress: prevStep,
415
+ accessibilityRole: "button",
416
+ accessibilityLabel: "Go back",
933
417
  children: [/*#__PURE__*/_jsx(Ionicons, {
934
418
  name: "arrow-back",
935
419
  size: 16,
@@ -943,11 +427,12 @@ const FeedbackScreen = ({
943
427
  }), /*#__PURE__*/_jsxs(TouchableOpacity, {
944
428
  style: [styles.navButton, styles.nextButton, {
945
429
  backgroundColor: colors.primary,
946
- borderColor: colors.primary,
947
- shadowColor: colors.primary
430
+ borderColor: colors.primary
948
431
  }],
949
432
  onPress: nextStep,
950
433
  disabled: !isContactStepValid(),
434
+ accessibilityRole: "button",
435
+ accessibilityLabel: "Continue to summary",
951
436
  children: [/*#__PURE__*/_jsx(Text, {
952
437
  style: [styles.navButtonText, {
953
438
  color: '#FFFFFF'
@@ -960,8 +445,8 @@ const FeedbackScreen = ({
960
445
  })]
961
446
  })]
962
447
  })]
963
- }), [fadeAnim, slideAnim, colors, feedbackData, user, updateField, setErrorMessage, prevStep, nextStep, isContactStepValid, styles]);
964
- const renderSummaryStep = useCallback(() => /*#__PURE__*/_jsxs(Animated.View, {
448
+ });
449
+ const renderSummaryStep = () => /*#__PURE__*/_jsxs(Animated.View, {
965
450
  style: [styles.stepContainer, {
966
451
  opacity: fadeAnim,
967
452
  transform: [{
@@ -989,7 +474,7 @@ const FeedbackScreen = ({
989
474
  style: [styles.summaryLabel, {
990
475
  color: colors.secondaryText
991
476
  }],
992
- children: t('feedback.summary.type') || 'Type:'
477
+ children: "Type:"
993
478
  }), /*#__PURE__*/_jsx(Text, {
994
479
  style: [styles.summaryValue, {
995
480
  color: colors.text
@@ -1002,7 +487,7 @@ const FeedbackScreen = ({
1002
487
  style: [styles.summaryLabel, {
1003
488
  color: colors.secondaryText
1004
489
  }],
1005
- children: t('feedback.summary.category') || 'Category:'
490
+ children: "Category:"
1006
491
  }), /*#__PURE__*/_jsx(Text, {
1007
492
  style: [styles.summaryValue, {
1008
493
  color: colors.text
@@ -1015,7 +500,7 @@ const FeedbackScreen = ({
1015
500
  style: [styles.summaryLabel, {
1016
501
  color: colors.secondaryText
1017
502
  }],
1018
- children: t('feedback.summary.priority') || 'Priority:'
503
+ children: "Priority:"
1019
504
  }), /*#__PURE__*/_jsx(Text, {
1020
505
  style: [styles.summaryValue, {
1021
506
  color: colors.text
@@ -1028,7 +513,7 @@ const FeedbackScreen = ({
1028
513
  style: [styles.summaryLabel, {
1029
514
  color: colors.secondaryText
1030
515
  }],
1031
- children: t('feedback.summary.titleLabel') || 'Title:'
516
+ children: "Title:"
1032
517
  }), /*#__PURE__*/_jsx(Text, {
1033
518
  style: [styles.summaryValue, {
1034
519
  color: colors.text
@@ -1041,7 +526,7 @@ const FeedbackScreen = ({
1041
526
  style: [styles.summaryLabel, {
1042
527
  color: colors.secondaryText
1043
528
  }],
1044
- children: t('feedback.summary.contact') || 'Contact:'
529
+ children: "Contact:"
1045
530
  }), /*#__PURE__*/_jsx(Text, {
1046
531
  style: [styles.summaryValue, {
1047
532
  color: colors.text
@@ -1056,6 +541,8 @@ const FeedbackScreen = ({
1056
541
  onPress: handleSubmitFeedback,
1057
542
  disabled: feedbackState.status === 'submitting',
1058
543
  testID: "submit-feedback-button",
544
+ accessibilityRole: "button",
545
+ accessibilityLabel: "Submit feedback",
1059
546
  children: feedbackState.status === 'submitting' ? /*#__PURE__*/_jsx(ActivityIndicator, {
1060
547
  color: "#FFFFFF",
1061
548
  size: "small"
@@ -1075,13 +562,11 @@ const FeedbackScreen = ({
1075
562
  style: [styles.navButton, {
1076
563
  backgroundColor: 'transparent',
1077
564
  borderColor: colors.border,
1078
- shadowColor: colors.border,
1079
- borderTopLeftRadius: 35,
1080
- borderBottomLeftRadius: 35,
1081
- borderTopRightRadius: 35,
1082
- borderBottomRightRadius: 35
565
+ borderRadius: 35
1083
566
  }],
1084
567
  onPress: prevStep,
568
+ accessibilityRole: "button",
569
+ accessibilityLabel: "Go back",
1085
570
  children: [/*#__PURE__*/_jsx(Ionicons, {
1086
571
  name: "arrow-back",
1087
572
  size: 16,
@@ -1094,8 +579,8 @@ const FeedbackScreen = ({
1094
579
  })]
1095
580
  })
1096
581
  })]
1097
- }), [fadeAnim, slideAnim, colors, feedbackData, user, feedbackState.status, handleSubmitFeedback, prevStep, styles]);
1098
- const renderSuccessStep = useCallback(() => /*#__PURE__*/_jsx(Animated.View, {
582
+ });
583
+ const renderSuccessStep = () => /*#__PURE__*/_jsx(Animated.View, {
1099
584
  style: [styles.stepContainer, {
1100
585
  opacity: fadeAnim,
1101
586
  transform: [{
@@ -1106,14 +591,14 @@ const FeedbackScreen = ({
1106
591
  style: styles.successContainer,
1107
592
  children: [/*#__PURE__*/_jsx(View, {
1108
593
  style: [styles.successIcon, {
1109
- backgroundColor: colors.success + '20',
594
+ backgroundColor: (colors.success || '#34C759') + '20',
1110
595
  padding: 24,
1111
596
  borderRadius: 50
1112
597
  }],
1113
598
  children: /*#__PURE__*/_jsx(Ionicons, {
1114
599
  name: "checkmark-circle",
1115
600
  size: 48,
1116
- color: colors.success
601
+ color: colors.success || '#34C759'
1117
602
  })
1118
603
  }), /*#__PURE__*/_jsx(Text, {
1119
604
  style: [styles.successTitle, {
@@ -1133,19 +618,17 @@ const FeedbackScreen = ({
1133
618
  resetForm();
1134
619
  setCurrentStep(0);
1135
620
  },
621
+ accessibilityRole: "button",
622
+ accessibilityLabel: "Submit another feedback",
1136
623
  children: /*#__PURE__*/_jsx(Text, {
1137
624
  style: styles.buttonText,
1138
625
  children: t('feedback.actions.submitAnother') || 'Submit Another'
1139
626
  })
1140
627
  })]
1141
628
  })
1142
- }), [fadeAnim, slideAnim, colors, resetForm, styles]);
1143
-
1144
- // Render current step
1145
- const renderCurrentStep = useCallback(() => {
1146
- if (feedbackState.status === 'success') {
1147
- return renderSuccessStep();
1148
- }
629
+ });
630
+ const renderCurrentStep = () => {
631
+ if (feedbackState.status === 'success') return renderSuccessStep();
1149
632
  switch (currentStep) {
1150
633
  case 0:
1151
634
  return renderTypeStep();
@@ -1158,7 +641,7 @@ const FeedbackScreen = ({
1158
641
  default:
1159
642
  return renderTypeStep();
1160
643
  }
1161
- }, [currentStep, feedbackState.status, renderTypeStep, renderDetailsStep, renderContactStep, renderSummaryStep, renderSuccessStep]);
644
+ };
1162
645
  return /*#__PURE__*/_jsxs(KeyboardAvoidingView, {
1163
646
  style: [styles.container, {
1164
647
  backgroundColor: theme === 'dark' ? colors.background : '#F7F9FC'