@oxyhq/services 5.26.4 → 5.27.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 (263) hide show
  1. package/dist/web/oxy-services.esm.js +2 -0
  2. package/dist/web/oxy-services.esm.js.map +1 -0
  3. package/dist/web/types/assets/icons/OxyServices.d.ts +28 -0
  4. package/dist/web/types/assets/illustrations/HighFive.d.ts +8 -0
  5. package/dist/web/types/constants/version.d.ts +13 -0
  6. package/dist/web/types/core/AuthManager.d.ts +143 -0
  7. package/dist/web/types/core/CrossDomainAuth.d.ts +160 -0
  8. package/dist/web/types/core/HttpService.d.ts +163 -0
  9. package/dist/web/types/core/OxyServices.base.d.ts +126 -0
  10. package/dist/web/types/core/OxyServices.d.ts +81 -0
  11. package/dist/web/types/core/OxyServices.errors.d.ts +11 -0
  12. package/dist/web/types/core/index.d.ts +20 -0
  13. package/dist/web/types/core/mixins/OxyServices.analytics.d.ts +66 -0
  14. package/dist/web/types/core/mixins/OxyServices.assets.d.ts +135 -0
  15. package/dist/web/types/core/mixins/OxyServices.auth.d.ts +186 -0
  16. package/dist/web/types/core/mixins/OxyServices.developer.d.ts +99 -0
  17. package/dist/web/types/core/mixins/OxyServices.devices.d.ts +96 -0
  18. package/dist/web/types/core/mixins/OxyServices.features.d.ts +228 -0
  19. package/dist/web/types/core/mixins/OxyServices.fedcm.d.ts +200 -0
  20. package/dist/web/types/core/mixins/OxyServices.karma.d.ts +85 -0
  21. package/dist/web/types/core/mixins/OxyServices.language.d.ts +81 -0
  22. package/dist/web/types/core/mixins/OxyServices.location.d.ts +64 -0
  23. package/dist/web/types/core/mixins/OxyServices.payment.d.ts +111 -0
  24. package/dist/web/types/core/mixins/OxyServices.popup.d.ts +205 -0
  25. package/dist/web/types/core/mixins/OxyServices.privacy.d.ts +122 -0
  26. package/dist/web/types/core/mixins/OxyServices.redirect.d.ts +245 -0
  27. package/dist/web/types/core/mixins/OxyServices.security.d.ts +78 -0
  28. package/dist/web/types/core/mixins/OxyServices.user.d.ts +184 -0
  29. package/dist/web/types/core/mixins/OxyServices.utility.d.ts +93 -0
  30. package/dist/web/types/core/mixins/index.d.ts +30 -0
  31. package/dist/web/types/core/mixins/mixinHelpers.d.ts +31 -0
  32. package/dist/web/types/crypto/index.d.ts +11 -0
  33. package/dist/web/types/crypto/keyManager.d.ts +189 -0
  34. package/dist/web/types/crypto/polyfill.d.ts +12 -0
  35. package/dist/web/types/crypto/recoveryPhrase.d.ts +58 -0
  36. package/dist/web/types/crypto/signatureService.d.ts +86 -0
  37. package/dist/web/types/i18n/index.d.ts +3 -0
  38. package/dist/web/types/index.d.ts +62 -0
  39. package/dist/web/types/lib/sonner-safe.d.ts +8 -0
  40. package/dist/web/types/lib/sonner.d.ts +11 -0
  41. package/dist/web/types/lib/sonner.web.d.ts +14 -0
  42. package/dist/web/types/models/interfaces.d.ts +415 -0
  43. package/dist/web/types/models/session.d.ts +27 -0
  44. package/dist/web/types/node/index.d.ts +9 -0
  45. package/dist/web/types/shared/index.d.ts +28 -0
  46. package/dist/web/types/shared/utils/colorUtils.d.ts +104 -0
  47. package/dist/web/types/shared/utils/debugUtils.d.ts +48 -0
  48. package/dist/web/types/shared/utils/errorUtils.d.ts +97 -0
  49. package/dist/web/types/shared/utils/index.d.ts +13 -0
  50. package/dist/web/types/shared/utils/networkUtils.d.ts +139 -0
  51. package/dist/web/types/shared/utils/themeUtils.d.ts +90 -0
  52. package/dist/web/types/ui/client.d.ts +33 -0
  53. package/dist/web/types/ui/components/ActivityIndicator.d.ts +44 -0
  54. package/dist/web/types/ui/components/AnimationExample.d.ts +3 -0
  55. package/dist/web/types/ui/components/AutoHeightScrollView.d.ts +22 -0
  56. package/dist/web/types/ui/components/Avatar.d.ts +60 -0
  57. package/dist/web/types/ui/components/BottomSheet.d.ts +28 -0
  58. package/dist/web/types/ui/components/BottomSheetRouter.d.ts +8 -0
  59. package/dist/web/types/ui/components/CrossFadeIcon.d.ts +26 -0
  60. package/dist/web/types/ui/components/EmptyState.d.ts +7 -0
  61. package/dist/web/types/ui/components/ErrorBoundary.d.ts +30 -0
  62. package/dist/web/types/ui/components/FollowButton.d.ts +17 -0
  63. package/dist/web/types/ui/components/FontLoader.d.ts +14 -0
  64. package/dist/web/types/ui/components/GroupedItem.d.ts +23 -0
  65. package/dist/web/types/ui/components/GroupedSection.d.ts +24 -0
  66. package/dist/web/types/ui/components/Header.d.ts +37 -0
  67. package/dist/web/types/ui/components/HelperText.d.ts +46 -0
  68. package/dist/web/types/ui/components/Icon.d.ts +59 -0
  69. package/dist/web/types/ui/components/IconButton/IconButton.d.ts +98 -0
  70. package/dist/web/types/ui/components/IconButton/utils.d.ts +18 -0
  71. package/dist/web/types/ui/components/LoadingState.d.ts +8 -0
  72. package/dist/web/types/ui/components/OxyLogo.d.ts +28 -0
  73. package/dist/web/types/ui/components/OxyPayButton.d.ts +28 -0
  74. package/dist/web/types/ui/components/OxyProvider.d.ts +33 -0
  75. package/dist/web/types/ui/components/OxySignInButton.d.ts +64 -0
  76. package/dist/web/types/ui/components/ProfileCard.d.ts +17 -0
  77. package/dist/web/types/ui/components/QuickActions.d.ts +14 -0
  78. package/dist/web/types/ui/components/Section.d.ts +11 -0
  79. package/dist/web/types/ui/components/SectionTitle.d.ts +9 -0
  80. package/dist/web/types/ui/components/SettingRow.d.ts +19 -0
  81. package/dist/web/types/ui/components/SignInModal.d.ts +17 -0
  82. package/dist/web/types/ui/components/StepBasedScreen.d.ts +25 -0
  83. package/dist/web/types/ui/components/Surface.d.ts +75 -0
  84. package/dist/web/types/ui/components/TextField/Addons/Outline.d.ts +15 -0
  85. package/dist/web/types/ui/components/TextField/Addons/Underline.d.ts +18 -0
  86. package/dist/web/types/ui/components/TextField/Adornment/TextFieldAdornment.d.ts +44 -0
  87. package/dist/web/types/ui/components/TextField/Adornment/TextFieldAffix.d.ts +72 -0
  88. package/dist/web/types/ui/components/TextField/Adornment/TextFieldIcon.d.ts +77 -0
  89. package/dist/web/types/ui/components/TextField/Adornment/enums.d.ts +12 -0
  90. package/dist/web/types/ui/components/TextField/Adornment/types.d.ts +11 -0
  91. package/dist/web/types/ui/components/TextField/Adornment/utils.d.ts +11 -0
  92. package/dist/web/types/ui/components/TextField/Label/InputLabel.d.ts +4 -0
  93. package/dist/web/types/ui/components/TextField/Label/LabelBackground.d.ts +3 -0
  94. package/dist/web/types/ui/components/TextField/TextFieldFlat.d.ts +3 -0
  95. package/dist/web/types/ui/components/TextField/TextFieldOutlined.d.ts +3 -0
  96. package/dist/web/types/ui/components/TextField/constants.d.ts +31 -0
  97. package/dist/web/types/ui/components/TextField/helpers.d.ts +96 -0
  98. package/dist/web/types/ui/components/TextField/types.d.ts +155 -0
  99. package/dist/web/types/ui/components/TextField.d.ts +191 -0
  100. package/dist/web/types/ui/components/TouchableRipple/Pressable.d.ts +12 -0
  101. package/dist/web/types/ui/components/TouchableRipple/TouchableRipple.d.ts +61 -0
  102. package/dist/web/types/ui/components/TouchableRipple/utils.d.ts +10 -0
  103. package/dist/web/types/ui/components/Typography/AnimatedText.d.ts +34 -0
  104. package/dist/web/types/ui/components/Typography/types.d.ts +18 -0
  105. package/dist/web/types/ui/components/WebOxyProvider.d.ts +51 -0
  106. package/dist/web/types/ui/components/feedback/FormInput.d.ts +19 -0
  107. package/dist/web/types/ui/components/feedback/ProgressIndicator.d.ts +10 -0
  108. package/dist/web/types/ui/components/feedback/constants.d.ts +4 -0
  109. package/dist/web/types/ui/components/feedback/feedbackStyles.d.ts +279 -0
  110. package/dist/web/types/ui/components/feedback/index.d.ts +6 -0
  111. package/dist/web/types/ui/components/feedback/types.d.ts +45 -0
  112. package/dist/web/types/ui/components/feedback/useFeedbackForm.d.ts +8 -0
  113. package/dist/web/types/ui/components/fileManagement/AnimatedButton.d.ts +15 -0
  114. package/dist/web/types/ui/components/fileManagement/FileDetailsModal.d.ts +14 -0
  115. package/dist/web/types/ui/components/fileManagement/FileViewer.d.ts +17 -0
  116. package/dist/web/types/ui/components/fileManagement/UploadPreview.d.ts +20 -0
  117. package/dist/web/types/ui/components/fileManagement/styles.d.ts +859 -0
  118. package/dist/web/types/ui/components/icon/FAIRWalletIcon.d.ts +8 -0
  119. package/dist/web/types/ui/components/icon/OxyIcon.d.ts +9 -0
  120. package/dist/web/types/ui/components/icon/index.d.ts +3 -0
  121. package/dist/web/types/ui/components/index.d.ts +16 -0
  122. package/dist/web/types/ui/components/internal/GroupedPillButtons.d.ts +17 -0
  123. package/dist/web/types/ui/components/internal/PinInput.d.ts +22 -0
  124. package/dist/web/types/ui/components/modals/DeleteAccountModal.d.ts +18 -0
  125. package/dist/web/types/ui/components/modals/index.d.ts +1 -0
  126. package/dist/web/types/ui/components/payment/PaymentDetailsStep.d.ts +20 -0
  127. package/dist/web/types/ui/components/payment/PaymentMethodStep.d.ts +13 -0
  128. package/dist/web/types/ui/components/payment/PaymentReviewStep.d.ts +15 -0
  129. package/dist/web/types/ui/components/payment/PaymentSuccessStep.d.ts +9 -0
  130. package/dist/web/types/ui/components/payment/PaymentSummaryStep.d.ts +14 -0
  131. package/dist/web/types/ui/components/payment/constants.d.ts +6 -0
  132. package/dist/web/types/ui/components/payment/index.d.ts +8 -0
  133. package/dist/web/types/ui/components/payment/paymentStyles.d.ts +395 -0
  134. package/dist/web/types/ui/components/payment/types.d.ts +39 -0
  135. package/dist/web/types/ui/components/photogrid/JustifiedPhotoGrid.d.ts +26 -0
  136. package/dist/web/types/ui/components/styles/overlay.d.ts +3 -0
  137. package/dist/web/types/ui/components/styles/shadow.d.ts +2 -0
  138. package/dist/web/types/ui/components/theming.d.ts +7 -0
  139. package/dist/web/types/ui/components/types.d.ts +79 -0
  140. package/dist/web/types/ui/components/utils/forwardRef.d.ts +11 -0
  141. package/dist/web/types/ui/components/utils/hasTouchHandler.d.ts +5 -0
  142. package/dist/web/types/ui/components/utils/roundLayoutSize.d.ts +1 -0
  143. package/dist/web/types/ui/components/utils/splitStyles.d.ts +19 -0
  144. package/dist/web/types/ui/constants/iconColors.d.ts +129 -0
  145. package/dist/web/types/ui/constants/spacing.d.ts +32 -0
  146. package/dist/web/types/ui/constants/theme.d.ts +96 -0
  147. package/dist/web/types/ui/context/OxyContext.d.ts +74 -0
  148. package/dist/web/types/ui/context/ThemeContext.d.ts +18 -0
  149. package/dist/web/types/ui/context/hooks/useAuthOperations.d.ts +39 -0
  150. package/dist/web/types/ui/context/hooks/useDeviceManagement.d.ts +26 -0
  151. package/dist/web/types/ui/context/hooks/useLanguageManagement.d.ts +24 -0
  152. package/dist/web/types/ui/context/hooks/useSessionManagement.d.ts +40 -0
  153. package/dist/web/types/ui/hooks/index.d.ts +6 -0
  154. package/dist/web/types/ui/hooks/mutations/index.d.ts +8 -0
  155. package/dist/web/types/ui/hooks/mutations/mutationFactory.d.ts +75 -0
  156. package/dist/web/types/ui/hooks/mutations/useAccountMutations.d.ts +68 -0
  157. package/dist/web/types/ui/hooks/mutations/useServicesMutations.d.ts +22 -0
  158. package/dist/web/types/ui/hooks/queries/index.d.ts +10 -0
  159. package/dist/web/types/ui/hooks/queries/queryKeys.d.ts +64 -0
  160. package/dist/web/types/ui/hooks/queries/useAccountQueries.d.ts +42 -0
  161. package/dist/web/types/ui/hooks/queries/useSecurityQueries.d.ts +14 -0
  162. package/dist/web/types/ui/hooks/queries/useServicesQueries.d.ts +31 -0
  163. package/dist/web/types/ui/hooks/queryClient.d.ts +18 -0
  164. package/dist/web/types/ui/hooks/useAssets.d.ts +34 -0
  165. package/dist/web/types/ui/hooks/useAsyncAction.d.ts +50 -0
  166. package/dist/web/types/ui/hooks/useAuth.d.ts +73 -0
  167. package/dist/web/types/ui/hooks/useColorScheme.d.ts +7 -0
  168. package/dist/web/types/ui/hooks/useDeviceManagement.d.ts +26 -0
  169. package/dist/web/types/ui/hooks/useFileDownloadUrl.d.ts +18 -0
  170. package/dist/web/types/ui/hooks/useFileFiltering.d.ts +28 -0
  171. package/dist/web/types/ui/hooks/useFollow.d.ts +61 -0
  172. package/dist/web/types/ui/hooks/useFollow.types.d.ts +32 -0
  173. package/dist/web/types/ui/hooks/useI18n.d.ts +4 -0
  174. package/dist/web/types/ui/hooks/useLanguageManagement.d.ts +24 -0
  175. package/dist/web/types/ui/hooks/useProfileEditing.d.ts +35 -0
  176. package/dist/web/types/ui/hooks/useQueryClient.d.ts +6 -0
  177. package/dist/web/types/ui/hooks/useSessionManagement.d.ts +40 -0
  178. package/dist/web/types/ui/hooks/useSessionSocket.d.ts +13 -0
  179. package/dist/web/types/ui/hooks/useSettingToggle.d.ts +56 -0
  180. package/dist/web/types/ui/hooks/useStorage.d.ts +15 -0
  181. package/dist/web/types/ui/hooks/useThemeColors.d.ts +93 -0
  182. package/dist/web/types/ui/hooks/useThemeStyles.d.ts +44 -0
  183. package/dist/web/types/ui/hooks/useWebSSO.d.ts +57 -0
  184. package/dist/web/types/ui/index.d.ts +7 -0
  185. package/dist/web/types/ui/isFrontend.d.ts +2 -0
  186. package/dist/web/types/ui/navigation/bottomSheetManager.d.ts +26 -0
  187. package/dist/web/types/ui/navigation/routes.d.ts +5 -0
  188. package/dist/web/types/ui/screens/AccountCenterScreen.d.ts +4 -0
  189. package/dist/web/types/ui/screens/AccountOverviewScreen.d.ts +4 -0
  190. package/dist/web/types/ui/screens/AccountSettingsScreen.d.ts +7 -0
  191. package/dist/web/types/ui/screens/AccountSwitcherScreen.d.ts +4 -0
  192. package/dist/web/types/ui/screens/AccountVerificationScreen.d.ts +4 -0
  193. package/dist/web/types/ui/screens/AppInfoScreen.d.ts +4 -0
  194. package/dist/web/types/ui/screens/EditProfileFieldScreen.d.ts +12 -0
  195. package/dist/web/types/ui/screens/FAQScreen.d.ts +4 -0
  196. package/dist/web/types/ui/screens/FeedbackScreen.d.ts +4 -0
  197. package/dist/web/types/ui/screens/FileManagementScreen.d.ts +4 -0
  198. package/dist/web/types/ui/screens/FollowersListScreen.d.ts +8 -0
  199. package/dist/web/types/ui/screens/FollowingListScreen.d.ts +8 -0
  200. package/dist/web/types/ui/screens/HelpSupportScreen.d.ts +4 -0
  201. package/dist/web/types/ui/screens/HistoryViewScreen.d.ts +4 -0
  202. package/dist/web/types/ui/screens/LanguageSelectorScreen.d.ts +6 -0
  203. package/dist/web/types/ui/screens/LearnMoreUsernamesScreen.d.ts +4 -0
  204. package/dist/web/types/ui/screens/LegalDocumentsScreen.d.ts +4 -0
  205. package/dist/web/types/ui/screens/OxyAuthScreen.d.ts +16 -0
  206. package/dist/web/types/ui/screens/PaymentGatewayScreen.d.ts +14 -0
  207. package/dist/web/types/ui/screens/PremiumSubscriptionScreen.d.ts +4 -0
  208. package/dist/web/types/ui/screens/PrivacySettingsScreen.d.ts +4 -0
  209. package/dist/web/types/ui/screens/ProfileScreen.d.ts +8 -0
  210. package/dist/web/types/ui/screens/SavesCollectionsScreen.d.ts +4 -0
  211. package/dist/web/types/ui/screens/SearchSettingsScreen.d.ts +4 -0
  212. package/dist/web/types/ui/screens/SessionManagementScreen.d.ts +4 -0
  213. package/dist/web/types/ui/screens/UserLinksScreen.d.ts +14 -0
  214. package/dist/web/types/ui/screens/UserListScreen.d.ts +10 -0
  215. package/dist/web/types/ui/screens/WelcomeNewUserScreen.d.ts +12 -0
  216. package/dist/web/types/ui/screens/karma/KarmaAboutScreen.d.ts +4 -0
  217. package/dist/web/types/ui/screens/karma/KarmaCenterScreen.d.ts +4 -0
  218. package/dist/web/types/ui/screens/karma/KarmaFAQScreen.d.ts +4 -0
  219. package/dist/web/types/ui/screens/karma/KarmaLeaderboardScreen.d.ts +4 -0
  220. package/dist/web/types/ui/screens/karma/KarmaRewardsScreen.d.ts +4 -0
  221. package/dist/web/types/ui/screens/karma/KarmaRulesScreen.d.ts +4 -0
  222. package/dist/web/types/ui/server.d.ts +42 -0
  223. package/dist/web/types/ui/stores/accountStore.d.ts +33 -0
  224. package/dist/web/types/ui/stores/assetStore.d.ts +53 -0
  225. package/dist/web/types/ui/stores/authStore.d.ts +16 -0
  226. package/dist/web/types/ui/stores/fileStore.d.ts +30 -0
  227. package/dist/web/types/ui/stores/followStore.d.ts +24 -0
  228. package/dist/web/types/ui/styles/authStyles.d.ts +331 -0
  229. package/dist/web/types/ui/styles/fonts.d.ts +20 -0
  230. package/dist/web/types/ui/styles/index.d.ts +4 -0
  231. package/dist/web/types/ui/styles/spacing.d.ts +48 -0
  232. package/dist/web/types/ui/styles/theme.d.ts +67 -0
  233. package/dist/web/types/ui/types/fileManagement.d.ts +40 -0
  234. package/dist/web/types/ui/types/navigation.d.ts +36 -0
  235. package/dist/web/types/ui/utils/authHelpers.d.ts +98 -0
  236. package/dist/web/types/ui/utils/avatarUtils.d.ts +33 -0
  237. package/dist/web/types/ui/utils/colorUtils.d.ts +9 -0
  238. package/dist/web/types/ui/utils/confirmAction.d.ts +6 -0
  239. package/dist/web/types/ui/utils/errorHandlers.d.ts +34 -0
  240. package/dist/web/types/ui/utils/fileManagement.d.ts +86 -0
  241. package/dist/web/types/ui/utils/iconNames.d.ts +111 -0
  242. package/dist/web/types/ui/utils/sessionHelpers.d.ts +63 -0
  243. package/dist/web/types/ui/utils/storageHelpers.d.ts +27 -0
  244. package/dist/web/types/ui/utils/themeUtils.d.ts +10 -0
  245. package/dist/web/types/ui/utils/userUtils.d.ts +28 -0
  246. package/dist/web/types/utils/apiUtils.d.ts +53 -0
  247. package/dist/web/types/utils/asyncUtils.d.ts +58 -0
  248. package/dist/web/types/utils/cache.d.ts +127 -0
  249. package/dist/web/types/utils/deviceManager.d.ts +65 -0
  250. package/dist/web/types/utils/errorUtils.d.ts +46 -0
  251. package/dist/web/types/utils/hookUtils.d.ts +101 -0
  252. package/dist/web/types/utils/index.d.ts +6 -0
  253. package/dist/web/types/utils/languageUtils.d.ts +37 -0
  254. package/dist/web/types/utils/loggerUtils.d.ts +48 -0
  255. package/dist/web/types/utils/platform.d.ts +40 -0
  256. package/dist/web/types/utils/platformInit.d.ts +8 -0
  257. package/dist/web/types/utils/requestUtils.d.ts +123 -0
  258. package/dist/web/types/utils/sessionUtils.d.ts +54 -0
  259. package/dist/web/types/utils/validationUtils.d.ts +85 -0
  260. package/dist/web/types/web/WebOxyContext.d.ts +151 -0
  261. package/dist/web/types/web/index.d.ts +52 -0
  262. package/dist/web/types/web.d.ts +53 -0
  263. package/package.json +20 -6
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Shared spacing constants for authentication screens
3
+ * These values ensure consistent vertical spacing across all step components
4
+ * All gaps between elements (illustration, title, description, textfield, buttons, etc.) use this value
5
+ */
6
+ export declare const STEP_GAP = 12;
7
+ export declare const STEP_INNER_GAP = 12;
8
+ /**
9
+ * Re-export screen spacing constants from constants/spacing.ts
10
+ * This allows importing all spacing constants from a single location
11
+ */
12
+ export { SCREEN_PADDING_HORIZONTAL, SCREEN_PADDING_VERTICAL, SECTION_GAP, SECTION_GAP_LARGE, COMPONENT_GAP, COMPONENT_GAP_SMALL, HEADER_PADDING_TOP_OVERVIEW, HEADER_PADDING_TOP_SETTINGS, } from '../constants/spacing';
13
+ /**
14
+ * Reusable stylesheet for step components
15
+ * NOTE: Layout styles (container, sectionSpacing) removed - all layout is handled by BottomSheetRouter
16
+ * Step components should NOT use these for layout, only for content-specific styling
17
+ */
18
+ export declare const stepStyles: {
19
+ container: {
20
+ width: "100%";
21
+ maxWidth: number;
22
+ alignSelf: "center";
23
+ };
24
+ sectionSpacing: {
25
+ marginBottom: number;
26
+ };
27
+ header: {
28
+ alignItems: "flex-start";
29
+ width: "100%";
30
+ gap: number;
31
+ };
32
+ title: {
33
+ textAlign: "left";
34
+ marginBottom: number;
35
+ marginTop: number;
36
+ };
37
+ subtitle: {
38
+ textAlign: "left";
39
+ maxWidth: number;
40
+ alignSelf: "flex-start";
41
+ marginBottom: number;
42
+ marginTop: number;
43
+ };
44
+ buttonContainer: {
45
+ marginTop: number;
46
+ marginBottom: number;
47
+ };
48
+ };
@@ -0,0 +1,67 @@
1
+ import { type TextStyle } from 'react-native';
2
+ export interface ThemeColors {
3
+ text: string;
4
+ background: string;
5
+ inputBackground: string;
6
+ placeholder: string;
7
+ primary: string;
8
+ border: string;
9
+ error: string;
10
+ success: string;
11
+ warning: string;
12
+ secondaryText: string;
13
+ }
14
+ export interface Theme {
15
+ colors: ThemeColors;
16
+ fonts: {
17
+ title: TextStyle;
18
+ body: TextStyle;
19
+ button: TextStyle;
20
+ label: TextStyle;
21
+ };
22
+ }
23
+ export declare const getTheme: (theme: "light" | "dark") => Theme;
24
+ export declare const useThemeColors: (theme: "light" | "dark") => ThemeColors;
25
+ export declare const createCommonStyles: (theme: "light" | "dark") => {
26
+ container: {
27
+ backgroundColor: string;
28
+ };
29
+ scrollContainer: {
30
+ padding: number;
31
+ };
32
+ input: {
33
+ height: number;
34
+ borderRadius: number;
35
+ paddingHorizontal: number;
36
+ borderWidth: number;
37
+ fontSize: number;
38
+ backgroundColor: string;
39
+ borderColor: string;
40
+ color: string;
41
+ };
42
+ button: {
43
+ backgroundColor: string;
44
+ height: number;
45
+ borderRadius: number;
46
+ alignItems: "center";
47
+ justifyContent: "center";
48
+ marginTop: number;
49
+ };
50
+ buttonText: {
51
+ fontFamily: string;
52
+ fontSize: number;
53
+ fontWeight: "600";
54
+ color: string;
55
+ };
56
+ errorContainer: {
57
+ backgroundColor: string;
58
+ padding: number;
59
+ borderRadius: number;
60
+ marginBottom: number;
61
+ };
62
+ errorText: {
63
+ fontSize: number;
64
+ fontWeight: "500";
65
+ color: string;
66
+ };
67
+ };
@@ -0,0 +1,40 @@
1
+ import type { BaseScreenProps } from './navigation';
2
+ import type { FileMetadata } from '../../models/interfaces';
3
+ export type OnConfirmFileSelection = (files: FileMetadata[]) => void;
4
+ export interface FileManagementScreenProps extends BaseScreenProps {
5
+ userId?: string;
6
+ containerWidth?: number;
7
+ selectMode?: boolean;
8
+ multiSelect?: boolean;
9
+ onSelect?: (file: FileMetadata) => void;
10
+ onConfirmSelection?: OnConfirmFileSelection;
11
+ initialSelectedIds?: string[];
12
+ maxSelection?: number;
13
+ disabledMimeTypes?: string[];
14
+ /**
15
+ * What to do after a single selection (non-multiSelect) is made.
16
+ * 'close' (default) will dismiss the bottom sheet via onClose.
17
+ * 'back' will navigate back to the previous screen (e.g., return to AccountSettings without closing sheet).
18
+ * 'none' will keep the picker open (caller can manually close or navigate).
19
+ */
20
+ afterSelect?: 'close' | 'back' | 'none';
21
+ allowUploadInSelectMode?: boolean;
22
+ /**
23
+ * Default visibility for uploaded files in this screen
24
+ * Useful for third-party apps that want files to be public (e.g., GIF selector)
25
+ */
26
+ defaultVisibility?: 'private' | 'public' | 'unlisted';
27
+ /**
28
+ * Link context for tracking file usage by third-party apps
29
+ * When provided, selected files will be linked to this entity
30
+ */
31
+ linkContext?: {
32
+ app: string;
33
+ entityType: string;
34
+ entityId: string;
35
+ webhookUrl?: string;
36
+ };
37
+ }
38
+ export type ViewMode = 'all' | 'photos' | 'videos' | 'documents' | 'audio';
39
+ export type SortBy = 'date' | 'size' | 'name' | 'type';
40
+ export type SortOrder = 'asc' | 'desc';
@@ -0,0 +1,36 @@
1
+ import type { ReactNode, RefObject } from 'react';
2
+ import type { QueryClient } from '@tanstack/react-query';
3
+ import type { RouteName } from '../navigation/routes';
4
+ export type { RouteName };
5
+ export interface StepController {
6
+ canGoBack: () => boolean;
7
+ goBack: () => void;
8
+ }
9
+ export interface BaseScreenProps {
10
+ navigate?: (screen: RouteName, props?: Record<string, unknown>) => void;
11
+ goBack?: () => void;
12
+ onClose?: () => void;
13
+ onAuthenticated?: (payload?: unknown) => void;
14
+ theme?: 'light' | 'dark' | string;
15
+ initialStep?: number;
16
+ stepControllerRef?: RefObject<StepController | null>;
17
+ onStepChange?: (currentStep: number, totalSteps: number) => void;
18
+ currentScreen?: RouteName;
19
+ scrollTo?: (y: number, animated?: boolean) => void;
20
+ username?: string;
21
+ email?: string;
22
+ password?: string;
23
+ confirmPassword?: string;
24
+ userProfile?: unknown;
25
+ [key: string]: unknown;
26
+ }
27
+ export interface OxyProviderProps {
28
+ oxyServices?: unknown;
29
+ children?: ReactNode;
30
+ onAuthStateChange?: (user: unknown) => void;
31
+ storageKeyPrefix?: string;
32
+ baseURL?: string;
33
+ authWebUrl?: string;
34
+ authRedirectUri?: string;
35
+ queryClient?: QueryClient;
36
+ }
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Authentication helper utilities to reduce code duplication across hooks and utilities.
3
+ * These functions handle common token validation and authentication error patterns.
4
+ */
5
+ import type { OxyServices } from '../../core';
6
+ /**
7
+ * Error thrown when session sync is required
8
+ */
9
+ export declare class SessionSyncRequiredError extends Error {
10
+ constructor(message?: string);
11
+ }
12
+ /**
13
+ * Error thrown when authentication fails
14
+ */
15
+ export declare class AuthenticationFailedError extends Error {
16
+ constructor(message?: string);
17
+ }
18
+ /**
19
+ * Ensures a valid token exists before making authenticated API calls.
20
+ * If no valid token exists and an active session ID is available,
21
+ * attempts to refresh the token using the session.
22
+ *
23
+ * @param oxyServices - The OxyServices instance
24
+ * @param activeSessionId - The active session ID (if available)
25
+ * @throws {SessionSyncRequiredError} If the session needs to be synced (offline session)
26
+ * @throws {Error} If token refresh fails for other reasons
27
+ *
28
+ * @example
29
+ * ```ts
30
+ * // In a mutation or query function:
31
+ * await ensureValidToken(oxyServices, activeSessionId);
32
+ * return await oxyServices.updateProfile(updates);
33
+ * ```
34
+ */
35
+ export declare function ensureValidToken(oxyServices: OxyServices, activeSessionId: string | null | undefined): Promise<void>;
36
+ /**
37
+ * Options for handling API authentication errors
38
+ */
39
+ export interface HandleApiErrorOptions {
40
+ /** Optional callback to attempt session sync and retry */
41
+ syncSession?: () => Promise<unknown>;
42
+ /** The active session ID for retry attempts */
43
+ activeSessionId?: string | null;
44
+ /** The OxyServices instance for retry attempts */
45
+ oxyServices?: OxyServices;
46
+ }
47
+ /**
48
+ * Checks if an error is an authentication error (401 or auth-related message)
49
+ *
50
+ * @param error - The error to check
51
+ * @returns True if the error is an authentication error
52
+ */
53
+ export declare function isAuthenticationError(error: unknown): boolean;
54
+ /**
55
+ * Wraps an API call with authentication error handling.
56
+ * If an authentication error occurs, it can optionally attempt to sync the session and retry.
57
+ *
58
+ * @param apiCall - The API call function to execute
59
+ * @param options - Optional error handling configuration
60
+ * @returns The result of the API call
61
+ * @throws {AuthenticationFailedError} If authentication fails and cannot be recovered
62
+ * @throws {Error} If the API call fails for non-auth reasons
63
+ *
64
+ * @example
65
+ * ```ts
66
+ * // Simple usage:
67
+ * const result = await withAuthErrorHandling(
68
+ * () => oxyServices.updateProfile(updates)
69
+ * );
70
+ *
71
+ * // With retry on auth failure:
72
+ * const result = await withAuthErrorHandling(
73
+ * () => oxyServices.updateProfile(updates),
74
+ * { syncSession, activeSessionId, oxyServices }
75
+ * );
76
+ * ```
77
+ */
78
+ export declare function withAuthErrorHandling<T>(apiCall: () => Promise<T>, options?: HandleApiErrorOptions): Promise<T>;
79
+ /**
80
+ * Combines token validation and auth error handling for a complete authenticated API call.
81
+ * This is the recommended helper for most authenticated API operations.
82
+ *
83
+ * @param oxyServices - The OxyServices instance
84
+ * @param activeSessionId - The active session ID
85
+ * @param apiCall - The API call function to execute
86
+ * @param syncSession - Optional callback to sync session on auth failure
87
+ * @returns The result of the API call
88
+ *
89
+ * @example
90
+ * ```ts
91
+ * return await authenticatedApiCall(
92
+ * oxyServices,
93
+ * activeSessionId,
94
+ * () => oxyServices.updateProfile(updates)
95
+ * );
96
+ * ```
97
+ */
98
+ export declare function authenticatedApiCall<T>(oxyServices: OxyServices, activeSessionId: string | null | undefined, apiCall: () => Promise<T>, syncSession?: () => Promise<unknown>): Promise<T>;
@@ -0,0 +1,33 @@
1
+ import type { OxyServices } from '../../core';
2
+ import type { User } from '../../models/interfaces';
3
+ import { QueryClient } from '@tanstack/react-query';
4
+ /**
5
+ * Updates file visibility to public for avatar use.
6
+ * Handles errors gracefully, only logging non-404 errors.
7
+ *
8
+ * @param fileId - The file ID to update visibility for
9
+ * @param oxyServices - OxyServices instance
10
+ * @param contextName - Optional context name for logging
11
+ * @returns Promise that resolves when visibility is updated (or skipped)
12
+ */
13
+ export declare function updateAvatarVisibility(fileId: string | undefined, oxyServices: OxyServices, contextName?: string): Promise<void>;
14
+ /**
15
+ * Refreshes avatar in accountStore with cache-busted URL to force image reload.
16
+ *
17
+ * @param sessionId - The session ID for the account to update
18
+ * @param avatarFileId - The new avatar file ID
19
+ * @param oxyServices - OxyServices instance to generate download URL
20
+ */
21
+ export declare function refreshAvatarInStore(sessionId: string, avatarFileId: string, oxyServices: OxyServices): void;
22
+ /**
23
+ * Updates user profile with avatar and handles all side effects (query invalidation, accountStore update).
24
+ * This function can be used from within OxyContext provider without requiring useOxy hook.
25
+ *
26
+ * @param updates - Profile updates including avatar
27
+ * @param oxyServices - OxyServices instance
28
+ * @param activeSessionId - Active session ID
29
+ * @param queryClient - TanStack Query client
30
+ * @param syncSession - Optional function to sync session/refresh token when auth errors occur
31
+ * @returns Promise that resolves with updated user data
32
+ */
33
+ export declare function updateProfileWithAvatar(updates: Partial<User>, oxyServices: OxyServices, activeSessionId: string | null, queryClient: QueryClient, syncSession?: () => Promise<User>): Promise<User>;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Color Utility Functions
3
+ *
4
+ * Re-exports from shared module for cleaner internal imports.
5
+ * External consumers should use '@oxyhq/services/shared' directly.
6
+ *
7
+ * @module ui/utils/colorUtils
8
+ */
9
+ export { darkenColor, lightenColor, hexToRgb, rgbToHex, withOpacity, isLightColor, getContrastTextColor, } from '../../shared/utils/colorUtils';
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Cross-platform confirm dialog. Uses window.confirm on web, Alert.alert on native.
3
+ * @param message The message to display
4
+ * @param onConfirm Callback if user confirms
5
+ */
6
+ export declare function confirmAction(message: string, onConfirm: () => void): void;
@@ -0,0 +1,34 @@
1
+ import type { ApiError } from '../../models/interfaces';
2
+ export interface HandleAuthErrorOptions {
3
+ defaultMessage: string;
4
+ code: string;
5
+ status?: number;
6
+ onError?: (error: ApiError) => void;
7
+ setAuthError?: (message: string) => void;
8
+ logger?: (message: string, error?: unknown) => void;
9
+ }
10
+ /**
11
+ * Determine whether the error represents an invalid session condition.
12
+ * This centralizes 401 detection across different fetch clients.
13
+ */
14
+ export declare const isInvalidSessionError: (error: unknown) => boolean;
15
+ /**
16
+ * Determine whether the error represents a timeout or network error.
17
+ * These are expected when the device is offline or has poor connectivity.
18
+ */
19
+ export declare const isTimeoutOrNetworkError: (error: unknown) => boolean;
20
+ /**
21
+ * Extract a consistent error message from unknown error shapes.
22
+ *
23
+ * @param error - The unknown error payload
24
+ * @param fallbackMessage - Message to return when no concrete message is available
25
+ */
26
+ export declare const extractErrorMessage: (error: unknown, fallbackMessage?: string) => string;
27
+ /**
28
+ * Centralized error handler for auth-related operations.
29
+ *
30
+ * @param error - Unknown error object
31
+ * @param options - Error handling configuration
32
+ * @returns Resolved error message
33
+ */
34
+ export declare const handleAuthError: (error: unknown, { defaultMessage, code, status, onError, setAuthError, logger, }: HandleAuthErrorOptions) => string;
@@ -0,0 +1,86 @@
1
+ import type { FileMetadata } from '../../models/interfaces';
2
+ import type { RouteName } from '../navigation/routes';
3
+ /**
4
+ * Format file size in bytes to human-readable string
5
+ */
6
+ export declare function formatFileSize(bytes: number): string;
7
+ /**
8
+ * Get icon name for file based on content type
9
+ */
10
+ export declare function getFileIcon(contentType: string): string;
11
+ /**
12
+ * Unified confirmation dialog - uses Alert.alert for all platforms
13
+ */
14
+ export declare function confirmAction(message: string, title?: string, confirmText?: string, cancelText?: string): Promise<boolean>;
15
+ /**
16
+ * Convert DocumentPicker asset to File object
17
+ * Handles both web (native File API) and mobile (URI-based) file sources
18
+ * Expo 54 compatible - works across all platforms
19
+ */
20
+ export declare function convertDocumentPickerAssetToFile(doc: {
21
+ file?: File | Blob;
22
+ uri?: string;
23
+ name?: string | null;
24
+ mimeType?: string | null;
25
+ size?: number | null;
26
+ }, index: number): Promise<File | null>;
27
+ /**
28
+ * Helper to safely request a thumbnail variant only for image mime types.
29
+ * Prevents backend warnings: "Variant thumb not supported for mime application/pdf".
30
+ *
31
+ * @param file - File metadata
32
+ * @param variant - Variant type (default: 'thumb')
33
+ * @param getFileDownloadUrl - Function to get download URL from oxyServices
34
+ */
35
+ export declare function getSafeDownloadUrl(file: FileMetadata, variant: string | undefined, getFileDownloadUrl: (fileId: string, variant?: string) => string): string;
36
+ /**
37
+ * Upload file raw - helper function for file uploads
38
+ */
39
+ export declare function uploadFileRaw(file: File | Blob, userId: string, oxyServices: any, visibility?: 'private' | 'public' | 'unlisted'): Promise<any>;
40
+ /**
41
+ * Configuration for creating an avatar picker handler
42
+ */
43
+ export interface AvatarPickerConfig {
44
+ /** Navigation function from BaseScreenProps */
45
+ navigate?: (screen: RouteName, props?: Record<string, unknown>) => void;
46
+ /** OxyServices instance */
47
+ oxyServices: any;
48
+ /** TanStack Query mutation for updating profile */
49
+ updateProfileMutation: {
50
+ mutateAsync: (updates: {
51
+ avatar: string;
52
+ }) => Promise<any>;
53
+ };
54
+ /** Callback to update local avatar state */
55
+ onAvatarSelected?: (fileId: string) => void;
56
+ /** i18n translation function */
57
+ t: (key: string) => string | undefined;
58
+ /** Optional context name for logging (e.g., 'AccountSettings', 'WelcomeNewUser') */
59
+ contextName?: string;
60
+ }
61
+ /**
62
+ * Creates a reusable avatar picker handler function.
63
+ *
64
+ * This function navigates to the FileManagement screen and handles:
65
+ * - Image file validation
66
+ * - File visibility update to public
67
+ * - Profile avatar update via mutation
68
+ * - Success/error toast notifications
69
+ *
70
+ * @example
71
+ * ```tsx
72
+ * const openAvatarPicker = createAvatarPickerHandler({
73
+ * navigate,
74
+ * oxyServices,
75
+ * updateProfileMutation,
76
+ * onAvatarSelected: setAvatarFileId,
77
+ * t,
78
+ * contextName: 'AccountSettings'
79
+ * });
80
+ *
81
+ * <TouchableOpacity onPress={openAvatarPicker}>
82
+ * <Text>Change Avatar</Text>
83
+ * </TouchableOpacity>
84
+ * ```
85
+ */
86
+ export declare function createAvatarPickerHandler(config: AvatarPickerConfig): () => void;
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Type-safe icon name utilities
3
+ *
4
+ * Provides centralized, typed icon name mappings to eliminate `as any` casts
5
+ * when using dynamic icon names with @expo/vector-icons.
6
+ */
7
+ /**
8
+ * Profile field icons (MaterialCommunityIcons)
9
+ */
10
+ export declare const PROFILE_FIELD_ICONS: {
11
+ readonly displayName: "account-outline";
12
+ readonly username: "at";
13
+ readonly email: "email-outline";
14
+ readonly bio: "text-box-outline";
15
+ readonly location: "map-marker-outline";
16
+ readonly links: "link-variant";
17
+ readonly website: "web";
18
+ readonly phone: "phone-outline";
19
+ readonly birthday: "cake-variant-outline";
20
+ };
21
+ export type ProfileFieldIconKey = keyof typeof PROFILE_FIELD_ICONS;
22
+ /**
23
+ * Get icon name for a profile field
24
+ */
25
+ export declare function getProfileFieldIcon(field: string): string;
26
+ /**
27
+ * Settings section icons (MaterialCommunityIcons)
28
+ */
29
+ export declare const SETTINGS_ICONS: {
30
+ readonly account: "account-cog-outline";
31
+ readonly privacy: "shield-account-outline";
32
+ readonly security: "lock-outline";
33
+ readonly notifications: "bell-outline";
34
+ readonly language: "translate";
35
+ readonly appearance: "palette-outline";
36
+ readonly storage: "folder-outline";
37
+ readonly help: "help-circle-outline";
38
+ readonly about: "information-outline";
39
+ readonly logout: "logout";
40
+ };
41
+ export type SettingsIconKey = keyof typeof SETTINGS_ICONS;
42
+ /**
43
+ * Get icon name for a settings section
44
+ */
45
+ export declare function getSettingsIcon(section: string): string;
46
+ /**
47
+ * File type icons (MaterialCommunityIcons)
48
+ */
49
+ export declare const FILE_TYPE_ICONS: {
50
+ readonly image: "image-outline";
51
+ readonly video: "video-outline";
52
+ readonly audio: "music-note-outline";
53
+ readonly document: "file-document-outline";
54
+ readonly pdf: "file-pdf-box";
55
+ readonly archive: "folder-zip-outline";
56
+ readonly code: "code-tags";
57
+ readonly spreadsheet: "file-excel-outline";
58
+ readonly presentation: "file-presentation-outline";
59
+ readonly text: "file-document-edit-outline";
60
+ readonly unknown: "file-outline";
61
+ };
62
+ export type FileTypeIconKey = keyof typeof FILE_TYPE_ICONS;
63
+ /**
64
+ * Get icon name for a file type
65
+ */
66
+ export declare function getFileTypeIcon(type: string): string;
67
+ /**
68
+ * Action icons (Ionicons)
69
+ */
70
+ export declare const ACTION_ICONS: {
71
+ readonly close: "close";
72
+ readonly back: "chevron-back";
73
+ readonly forward: "chevron-forward";
74
+ readonly add: "add";
75
+ readonly remove: "remove";
76
+ readonly delete: "trash-outline";
77
+ readonly edit: "pencil-outline";
78
+ readonly save: "checkmark";
79
+ readonly cancel: "close";
80
+ readonly search: "search-outline";
81
+ readonly filter: "filter-outline";
82
+ readonly sort: "swap-vertical-outline";
83
+ readonly refresh: "refresh-outline";
84
+ readonly share: "share-outline";
85
+ readonly copy: "copy-outline";
86
+ readonly download: "download-outline";
87
+ readonly upload: "cloud-upload-outline";
88
+ };
89
+ export type ActionIconKey = keyof typeof ACTION_ICONS;
90
+ /**
91
+ * Get icon name for an action
92
+ */
93
+ export declare function getActionIcon(action: string): string;
94
+ /**
95
+ * Status icons (Ionicons)
96
+ */
97
+ export declare const STATUS_ICONS: {
98
+ readonly success: "checkmark-circle";
99
+ readonly error: "alert-circle";
100
+ readonly warning: "warning";
101
+ readonly info: "information-circle";
102
+ readonly loading: "hourglass-outline";
103
+ readonly pending: "time-outline";
104
+ readonly online: "ellipse";
105
+ readonly offline: "ellipse-outline";
106
+ };
107
+ export type StatusIconKey = keyof typeof STATUS_ICONS;
108
+ /**
109
+ * Get icon name for a status
110
+ */
111
+ export declare function getStatusIcon(status: string): string;
@@ -0,0 +1,63 @@
1
+ import type { ClientSession } from '../../models/session';
2
+ interface DeviceSession {
3
+ sessionId: string;
4
+ deviceId?: string;
5
+ deviceName?: string;
6
+ expiresAt?: string;
7
+ lastActive?: string;
8
+ user?: {
9
+ id?: string;
10
+ _id?: {
11
+ toString(): string;
12
+ };
13
+ };
14
+ userId?: string;
15
+ isCurrent?: boolean;
16
+ }
17
+ /**
18
+ * Service type for session helpers.
19
+ * Uses 'any' to work around TypeScript mixin composition type inference issues.
20
+ * The OxyServices class has these methods but TypeScript can't see them due to the mixin pattern.
21
+ */
22
+ type OxyServicesAny = any;
23
+ export interface FetchSessionsWithFallbackOptions {
24
+ fallbackDeviceId?: string;
25
+ fallbackUserId?: string;
26
+ logger?: (message: string, error?: unknown) => void;
27
+ }
28
+ export interface ValidateSessionBatchOptions {
29
+ useHeaderValidation?: boolean;
30
+ maxConcurrency?: number;
31
+ }
32
+ export interface SessionValidationResult {
33
+ sessionId: string;
34
+ valid: boolean;
35
+ user?: unknown;
36
+ raw?: unknown;
37
+ error?: unknown;
38
+ }
39
+ /**
40
+ * Normalize backend session payloads into `ClientSession` objects.
41
+ *
42
+ * @param sessions - Raw session array returned from the API
43
+ * @param fallbackDeviceId - Device identifier to use when missing from payload
44
+ * @param fallbackUserId - User identifier to use when missing from payload
45
+ */
46
+ export declare const mapSessionsToClient: (sessions: DeviceSession[], fallbackDeviceId?: string, fallbackUserId?: string) => ClientSession[];
47
+ /**
48
+ * Fetch device sessions with fallback to the legacy session endpoint when needed.
49
+ *
50
+ * @param oxyServices - Oxy service instance
51
+ * @param sessionId - Session identifier to fetch
52
+ * @param options - Optional fallback options
53
+ */
54
+ export declare const fetchSessionsWithFallback: (oxyServices: OxyServicesAny, sessionId: string, { fallbackDeviceId, fallbackUserId, logger, }?: FetchSessionsWithFallbackOptions) => Promise<ClientSession[]>;
55
+ /**
56
+ * Validate multiple sessions concurrently with configurable concurrency.
57
+ *
58
+ * @param oxyServices - Oxy service instance
59
+ * @param sessionIds - Session identifiers to validate
60
+ * @param options - Validation options
61
+ */
62
+ export declare const validateSessionBatch: (oxyServices: OxyServicesAny, sessionIds: string[], { useHeaderValidation, maxConcurrency }?: ValidateSessionBatchOptions) => Promise<SessionValidationResult[]>;
63
+ export {};
@@ -0,0 +1,27 @@
1
+ export interface StorageInterface {
2
+ getItem: (key: string) => Promise<string | null>;
3
+ setItem: (key: string, value: string) => Promise<void>;
4
+ removeItem: (key: string) => Promise<void>;
5
+ clear: () => Promise<void>;
6
+ }
7
+ export interface SessionStorageKeys {
8
+ activeSessionId: string;
9
+ sessionIds: string;
10
+ language: string;
11
+ }
12
+ /**
13
+ * Detect whether the current runtime is React Native.
14
+ */
15
+ export declare const isReactNative: () => boolean;
16
+ /**
17
+ * Create a platform-appropriate storage implementation.
18
+ * Defaults to in-memory storage when no platform storage is available.
19
+ */
20
+ export declare const createPlatformStorage: () => Promise<StorageInterface>;
21
+ export declare const STORAGE_KEY_PREFIX = "oxy_session";
22
+ /**
23
+ * Produce strongly typed storage key names for the supplied prefix.
24
+ *
25
+ * @param prefix - Storage key prefix
26
+ */
27
+ export declare const getStorageKeys: (prefix?: string) => SessionStorageKeys;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Theme Utility Functions
3
+ *
4
+ * Re-exports from shared module for cleaner internal imports.
5
+ * External consumers should use '@oxyhq/services/shared' directly.
6
+ *
7
+ * @module ui/utils/themeUtils
8
+ */
9
+ export { normalizeTheme, normalizeColorScheme, getOppositeTheme, systemPrefersDarkMode, getSystemColorScheme, } from '../../shared/utils/themeUtils';
10
+ export type { ThemeValue } from '../../shared/utils/themeUtils';