@oxyhq/services 5.11.9 → 5.11.10

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 (192) hide show
  1. package/lib/commonjs/ui/components/AnimationExample.js +213 -0
  2. package/lib/commonjs/ui/components/AnimationExample.js.map +1 -0
  3. package/lib/commonjs/ui/components/FollowButton.js +58 -47
  4. package/lib/commonjs/ui/components/FollowButton.js.map +1 -1
  5. package/lib/commonjs/ui/components/GroupedItem.js +2 -1
  6. package/lib/commonjs/ui/components/GroupedItem.js.map +1 -1
  7. package/lib/commonjs/ui/components/GroupedSection.js +3 -0
  8. package/lib/commonjs/ui/components/GroupedSection.js.map +1 -1
  9. package/lib/commonjs/ui/components/Header.js +25 -11
  10. package/lib/commonjs/ui/components/Header.js.map +1 -1
  11. package/lib/commonjs/ui/components/OxyProvider.js +69 -33
  12. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  13. package/lib/commonjs/ui/components/ProfileCard.js +5 -1
  14. package/lib/commonjs/ui/components/ProfileCard.js.map +1 -1
  15. package/lib/commonjs/ui/components/index.js +0 -7
  16. package/lib/commonjs/ui/components/index.js.map +1 -1
  17. package/lib/commonjs/ui/components/internal/TextField.js +8 -4
  18. package/lib/commonjs/ui/components/internal/TextField.js.map +1 -1
  19. package/lib/commonjs/ui/components/photogrid/JustifiedPhotoGrid.js +161 -0
  20. package/lib/commonjs/ui/components/photogrid/JustifiedPhotoGrid.js.map +1 -0
  21. package/lib/commonjs/ui/context/OxyContext.js +97 -38
  22. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  23. package/lib/commonjs/ui/hooks/useFollow.types.js +2 -0
  24. package/lib/commonjs/ui/hooks/useFollow.types.js.map +1 -0
  25. package/lib/commonjs/ui/navigation/OxyRouter.js +10 -0
  26. package/lib/commonjs/ui/navigation/OxyRouter.js.map +1 -1
  27. package/lib/commonjs/ui/screens/AccountCenterScreen.js +26 -14
  28. package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
  29. package/lib/commonjs/ui/screens/AccountOverviewScreen.js +3 -3
  30. package/lib/commonjs/ui/screens/AccountOverviewScreen.js.map +1 -1
  31. package/lib/commonjs/ui/screens/AccountSettingsScreen.js +64 -15
  32. package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
  33. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +4 -4
  34. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
  35. package/lib/commonjs/ui/screens/FeedbackScreen.js +72 -75
  36. package/lib/commonjs/ui/screens/FeedbackScreen.js.map +1 -1
  37. package/lib/commonjs/ui/screens/FileManagementScreen.js +286 -126
  38. package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
  39. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js +322 -0
  40. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js.map +1 -0
  41. package/lib/commonjs/ui/screens/ProfileScreen.js +1 -1
  42. package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
  43. package/lib/commonjs/ui/screens/SessionManagementScreen.js +176 -174
  44. package/lib/commonjs/ui/screens/SessionManagementScreen.js.map +1 -1
  45. package/lib/commonjs/ui/screens/SignInScreen.js +43 -52
  46. package/lib/commonjs/ui/screens/SignInScreen.js.map +1 -1
  47. package/lib/commonjs/ui/screens/SignUpScreen.js +6 -4
  48. package/lib/commonjs/ui/screens/SignUpScreen.js.map +1 -1
  49. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js +386 -0
  50. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js.map +1 -0
  51. package/lib/commonjs/ui/screens/internal/SignInPasswordStep.js +25 -15
  52. package/lib/commonjs/ui/screens/internal/SignInPasswordStep.js.map +1 -1
  53. package/lib/commonjs/ui/screens/internal/SignInUsernameStep.js +16 -9
  54. package/lib/commonjs/ui/screens/internal/SignInUsernameStep.js.map +1 -1
  55. package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js +1 -1
  56. package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js.map +1 -1
  57. package/lib/commonjs/ui/styles/authStyles.js +1 -1
  58. package/lib/commonjs/ui/styles/authStyles.js.map +1 -1
  59. package/lib/module/ui/components/AnimationExample.js +209 -0
  60. package/lib/module/ui/components/AnimationExample.js.map +1 -0
  61. package/lib/module/ui/components/FollowButton.js +58 -47
  62. package/lib/module/ui/components/FollowButton.js.map +1 -1
  63. package/lib/module/ui/components/GroupedItem.js +2 -1
  64. package/lib/module/ui/components/GroupedItem.js.map +1 -1
  65. package/lib/module/ui/components/GroupedSection.js +3 -0
  66. package/lib/module/ui/components/GroupedSection.js.map +1 -1
  67. package/lib/module/ui/components/Header.js +25 -11
  68. package/lib/module/ui/components/Header.js.map +1 -1
  69. package/lib/module/ui/components/OxyProvider.js +70 -34
  70. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  71. package/lib/module/ui/components/ProfileCard.js +5 -1
  72. package/lib/module/ui/components/ProfileCard.js.map +1 -1
  73. package/lib/module/ui/components/index.js +0 -1
  74. package/lib/module/ui/components/index.js.map +1 -1
  75. package/lib/module/ui/components/internal/TextField.js +8 -4
  76. package/lib/module/ui/components/internal/TextField.js.map +1 -1
  77. package/lib/module/ui/components/photogrid/JustifiedPhotoGrid.js +156 -0
  78. package/lib/module/ui/components/photogrid/JustifiedPhotoGrid.js.map +1 -0
  79. package/lib/module/ui/context/OxyContext.js +97 -39
  80. package/lib/module/ui/context/OxyContext.js.map +1 -1
  81. package/lib/module/ui/hooks/useFollow.types.js +2 -0
  82. package/lib/module/ui/hooks/useFollow.types.js.map +1 -0
  83. package/lib/module/ui/navigation/OxyRouter.js +10 -0
  84. package/lib/module/ui/navigation/OxyRouter.js.map +1 -1
  85. package/lib/module/ui/screens/AccountCenterScreen.js +12 -1
  86. package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
  87. package/lib/module/ui/screens/AccountOverviewScreen.js +3 -3
  88. package/lib/module/ui/screens/AccountOverviewScreen.js.map +1 -1
  89. package/lib/module/ui/screens/AccountSettingsScreen.js +64 -15
  90. package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
  91. package/lib/module/ui/screens/AccountSwitcherScreen.js +4 -4
  92. package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
  93. package/lib/module/ui/screens/FeedbackScreen.js +72 -75
  94. package/lib/module/ui/screens/FeedbackScreen.js.map +1 -1
  95. package/lib/module/ui/screens/FileManagementScreen.js +285 -125
  96. package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
  97. package/lib/module/ui/screens/LanguageSelectorScreen.js +319 -0
  98. package/lib/module/ui/screens/LanguageSelectorScreen.js.map +1 -0
  99. package/lib/module/ui/screens/ProfileScreen.js +1 -1
  100. package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
  101. package/lib/module/ui/screens/SessionManagementScreen.js +177 -175
  102. package/lib/module/ui/screens/SessionManagementScreen.js.map +1 -1
  103. package/lib/module/ui/screens/SignInScreen.js +44 -53
  104. package/lib/module/ui/screens/SignInScreen.js.map +1 -1
  105. package/lib/module/ui/screens/SignUpScreen.js +6 -4
  106. package/lib/module/ui/screens/SignUpScreen.js.map +1 -1
  107. package/lib/module/ui/screens/WelcomeNewUserScreen.js +382 -0
  108. package/lib/module/ui/screens/WelcomeNewUserScreen.js.map +1 -0
  109. package/lib/module/ui/screens/internal/SignInPasswordStep.js +23 -14
  110. package/lib/module/ui/screens/internal/SignInPasswordStep.js.map +1 -1
  111. package/lib/module/ui/screens/internal/SignInUsernameStep.js +15 -9
  112. package/lib/module/ui/screens/internal/SignInUsernameStep.js.map +1 -1
  113. package/lib/module/ui/screens/karma/KarmaCenterScreen.js +1 -1
  114. package/lib/module/ui/screens/karma/KarmaCenterScreen.js.map +1 -1
  115. package/lib/module/ui/styles/authStyles.js +1 -1
  116. package/lib/module/ui/styles/authStyles.js.map +1 -1
  117. package/lib/typescript/models/interfaces.d.ts +1 -5
  118. package/lib/typescript/models/interfaces.d.ts.map +1 -1
  119. package/lib/typescript/models/session.d.ts +1 -4
  120. package/lib/typescript/models/session.d.ts.map +1 -1
  121. package/lib/typescript/ui/components/AnimationExample.d.ts +4 -0
  122. package/lib/typescript/ui/components/AnimationExample.d.ts.map +1 -0
  123. package/lib/typescript/ui/components/FollowButton.d.ts.map +1 -1
  124. package/lib/typescript/ui/components/GroupedItem.d.ts.map +1 -1
  125. package/lib/typescript/ui/components/Header.d.ts +9 -0
  126. package/lib/typescript/ui/components/Header.d.ts.map +1 -1
  127. package/lib/typescript/ui/components/OxyProvider.d.ts.map +1 -1
  128. package/lib/typescript/ui/components/ProfileCard.d.ts +1 -3
  129. package/lib/typescript/ui/components/ProfileCard.d.ts.map +1 -1
  130. package/lib/typescript/ui/components/index.d.ts +0 -1
  131. package/lib/typescript/ui/components/index.d.ts.map +1 -1
  132. package/lib/typescript/ui/components/internal/TextField.d.ts.map +1 -1
  133. package/lib/typescript/ui/components/photogrid/JustifiedPhotoGrid.d.ts +27 -0
  134. package/lib/typescript/ui/components/photogrid/JustifiedPhotoGrid.d.ts.map +1 -0
  135. package/lib/typescript/ui/context/OxyContext.d.ts +6 -2
  136. package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -1
  137. package/lib/typescript/ui/hooks/useFollow.types.d.ts +33 -0
  138. package/lib/typescript/ui/hooks/useFollow.types.d.ts.map +1 -0
  139. package/lib/typescript/ui/navigation/OxyRouter.d.ts.map +1 -1
  140. package/lib/typescript/ui/navigation/types.d.ts +5 -0
  141. package/lib/typescript/ui/navigation/types.d.ts.map +1 -1
  142. package/lib/typescript/ui/screens/AccountCenterScreen.d.ts.map +1 -1
  143. package/lib/typescript/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
  144. package/lib/typescript/ui/screens/FeedbackScreen.d.ts.map +1 -1
  145. package/lib/typescript/ui/screens/FileManagementScreen.d.ts +18 -1
  146. package/lib/typescript/ui/screens/FileManagementScreen.d.ts.map +1 -1
  147. package/lib/typescript/ui/screens/LanguageSelectorScreen.d.ts +7 -0
  148. package/lib/typescript/ui/screens/LanguageSelectorScreen.d.ts.map +1 -0
  149. package/lib/typescript/ui/screens/ProfileScreen.d.ts.map +1 -1
  150. package/lib/typescript/ui/screens/SessionManagementScreen.d.ts.map +1 -1
  151. package/lib/typescript/ui/screens/SignInScreen.d.ts.map +1 -1
  152. package/lib/typescript/ui/screens/SignUpScreen.d.ts.map +1 -1
  153. package/lib/typescript/ui/screens/WelcomeNewUserScreen.d.ts +13 -0
  154. package/lib/typescript/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -0
  155. package/lib/typescript/ui/screens/internal/SignInPasswordStep.d.ts +5 -5
  156. package/lib/typescript/ui/screens/internal/SignInPasswordStep.d.ts.map +1 -1
  157. package/lib/typescript/ui/screens/internal/SignInUsernameStep.d.ts +4 -4
  158. package/lib/typescript/ui/screens/internal/SignInUsernameStep.d.ts.map +1 -1
  159. package/lib/typescript/ui/styles/authStyles.d.ts +1 -1
  160. package/package.json +10 -2
  161. package/src/models/interfaces.ts +2 -5
  162. package/src/models/session.ts +1 -4
  163. package/src/ui/components/AnimationExample.tsx +194 -0
  164. package/src/ui/components/FollowButton.tsx +65 -45
  165. package/src/ui/components/GroupedItem.tsx +1 -0
  166. package/src/ui/components/GroupedSection.tsx +1 -1
  167. package/src/ui/components/Header.tsx +36 -12
  168. package/src/ui/components/OxyProvider.tsx +66 -32
  169. package/src/ui/components/ProfileCard.tsx +6 -8
  170. package/src/ui/components/index.ts +0 -1
  171. package/src/ui/components/internal/TextField.tsx +12 -6
  172. package/src/ui/components/photogrid/JustifiedPhotoGrid.tsx +158 -0
  173. package/src/ui/context/OxyContext.tsx +84 -54
  174. package/src/ui/hooks/useFollow.types.ts +33 -0
  175. package/src/ui/navigation/OxyRouter.tsx +10 -0
  176. package/src/ui/navigation/types.ts +6 -0
  177. package/src/ui/screens/AccountCenterScreen.tsx +13 -7
  178. package/src/ui/screens/AccountOverviewScreen.tsx +3 -3
  179. package/src/ui/screens/AccountSettingsScreen.tsx +65 -13
  180. package/src/ui/screens/AccountSwitcherScreen.tsx +4 -4
  181. package/src/ui/screens/FeedbackScreen.tsx +57 -80
  182. package/src/ui/screens/FileManagementScreen.tsx +278 -175
  183. package/src/ui/screens/LanguageSelectorScreen.tsx +322 -0
  184. package/src/ui/screens/ProfileScreen.tsx +6 -1
  185. package/src/ui/screens/SessionManagementScreen.tsx +148 -151
  186. package/src/ui/screens/SignInScreen.tsx +43 -62
  187. package/src/ui/screens/SignUpScreen.tsx +3 -5
  188. package/src/ui/screens/WelcomeNewUserScreen.tsx +272 -0
  189. package/src/ui/screens/internal/SignInPasswordStep.tsx +28 -13
  190. package/src/ui/screens/internal/SignInUsernameStep.tsx +21 -11
  191. package/src/ui/screens/karma/KarmaCenterScreen.tsx +1 -1
  192. package/src/ui/styles/authStyles.ts +1 -1
@@ -1,6 +1,7 @@
1
1
  import type { OxyServices } from '../../core';
2
2
  import type { User } from '../../models/interfaces';
3
3
  import type { ComponentType, ReactNode } from 'react';
4
+ import type { QueryClient } from '@tanstack/react-query';
4
5
  /**
5
6
  * Base props for all screens in the Oxy UI system
6
7
  */
@@ -119,5 +120,9 @@ export interface OxyProviderProps {
119
120
  * @default true
120
121
  */
121
122
  showInternalToaster?: boolean;
123
+ /**
124
+ * Optional QueryClient instance for React Query. If not provided, a sensible default is created.
125
+ */
126
+ queryClient?: QueryClient;
122
127
  }
123
128
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/ui/navigation/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/ui/navigation/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AccountCenterScreen.d.ts","sourceRoot":"","sources":["../../../../src/ui/screens/AccountCenterScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAe3D,QAAA,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAiPlD,CAAC;AA6BF,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"AccountCenterScreen.d.ts","sourceRoot":"","sources":["../../../../src/ui/screens/AccountCenterScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAa3D,QAAA,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAyPlD,CAAC;AA6BF,eAAe,mBAAmB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"AccountSettingsScreen.d.ts","sourceRoot":"","sources":["../../../../src/ui/screens/AccountSettingsScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAcjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;;AAwjD3D,wBAAiD"}
1
+ {"version":3,"file":"AccountSettingsScreen.d.ts","sourceRoot":"","sources":["../../../../src/ui/screens/AccountSettingsScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAcjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;;AA4mD3D,wBAAiD"}
@@ -1 +1 @@
1
- {"version":3,"file":"FeedbackScreen.d.ts","sourceRoot":"","sources":["../../../../src/ui/screens/FeedbackScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAgBjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAse3D,QAAA,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAwiB7C,CAAC;AAEF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"FeedbackScreen.d.ts","sourceRoot":"","sources":["../../../../src/ui/screens/FeedbackScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAgBjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AA2e3D,QAAA,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA4gB7C,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -1,7 +1,24 @@
1
1
  import React from 'react';
2
2
  import type { BaseScreenProps } from '../navigation/types';
3
- interface FileManagementScreenProps extends BaseScreenProps {
3
+ import type { FileMetadata } from '../../models/interfaces';
4
+ export type OnConfirmFileSelection = (files: FileMetadata[]) => void;
5
+ export interface FileManagementScreenProps extends BaseScreenProps {
4
6
  userId?: string;
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;
5
22
  }
6
23
  declare const FileManagementScreen: React.FC<FileManagementScreenProps>;
7
24
  export default FileManagementScreen;
@@ -1 +1 @@
1
- {"version":3,"file":"FileManagementScreen.d.ts","sourceRoot":"","sources":["../../../../src/ui/screens/FileManagementScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAgBjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAU3D,UAAU,yBAA0B,SAAQ,eAAe;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAOD,QAAA,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAsyD7D,CAAC;AA2wBF,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"FileManagementScreen.d.ts","sourceRoot":"","sources":["../../../../src/ui/screens/FileManagementScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAgBjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAK3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAO5D,MAAM,MAAM,sBAAsB,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;AAErE,MAAM,WAAW,yBAA0B,SAAQ,eAAe;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IAExC,kBAAkB,CAAC,EAAE,sBAAsB,CAAC;IAE5C,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACxC,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACrC;AAOD,QAAA,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CA00D7D,CAAC;AAszBF,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type React from 'react';
2
+ import type { BaseScreenProps } from '../navigation/types';
3
+ interface LanguageSelectorScreenProps extends BaseScreenProps {
4
+ }
5
+ declare const LanguageSelectorScreen: React.FC<LanguageSelectorScreenProps>;
6
+ export default LanguageSelectorScreen;
7
+ //# sourceMappingURL=LanguageSelectorScreen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LanguageSelectorScreen.d.ts","sourceRoot":"","sources":["../../../../src/ui/screens/LanguageSelectorScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AA2F3D,UAAU,2BAA4B,SAAQ,eAAe;CAAI;AAEjE,QAAA,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CAkIjE,CAAC;AAwFF,eAAe,sBAAsB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProfileScreen.d.ts","sourceRoot":"","sources":["../../../../src/ui/screens/ProfileScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAO3D,UAAU,kBAAmB,SAAQ,eAAe;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA6S/C,CAAC;AAgGF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"ProfileScreen.d.ts","sourceRoot":"","sources":["../../../../src/ui/screens/ProfileScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAO3D,UAAU,kBAAmB,SAAQ,eAAe;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAkT/C,CAAC;AAgGF,eAAe,aAAa,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SessionManagementScreen.d.ts","sourceRoot":"","sources":["../../../../src/ui/screens/SessionManagementScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAa/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAU3D,QAAA,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA0PtD,CAAC;AAmHF,eAAe,uBAAuB,CAAC"}
1
+ {"version":3,"file":"SessionManagementScreen.d.ts","sourceRoot":"","sources":["../../../../src/ui/screens/SessionManagementScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAa/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAO3D,QAAA,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAsRtD,CAAC;AAuFF,eAAe,uBAAuB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SignInScreen.d.ts","sourceRoot":"","sources":["../../../../src/ui/screens/SignInScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAkB/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAc3D,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAyY3C,CAAC;AAIF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"SignInScreen.d.ts","sourceRoot":"","sources":["../../../../src/ui/screens/SignInScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA0B/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAc3D,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA8W3C,CAAC;AAIF,eAAe,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SignUpScreen.d.ts","sourceRoot":"","sources":["../../../../src/ui/screens/SignUpScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAejF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAwlB3D,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAkO3C,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"SignUpScreen.d.ts","sourceRoot":"","sources":["../../../../src/ui/screens/SignUpScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAejF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAwlB3D,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAgO3C,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import type { BaseScreenProps } from '../navigation/types';
3
+ /**
4
+ * Post-signup welcome & onboarding screen.
5
+ * - Greets the newly registered user
6
+ * - Lets them immediately set / change their avatar using existing FileManagement picker
7
+ * - Only when the user presses "Continue" do we invoke onAuthenticated to finish flow & close sheet
8
+ */
9
+ declare const WelcomeNewUserScreen: React.FC<BaseScreenProps & {
10
+ newUser?: any;
11
+ }>;
12
+ export default WelcomeNewUserScreen;
13
+ //# sourceMappingURL=WelcomeNewUserScreen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WelcomeNewUserScreen.d.ts","sourceRoot":"","sources":["../../../../src/ui/screens/WelcomeNewUserScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiD,MAAM,OAAO,CAAC;AAEtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAS3D;;;;;GAKG;AACH,QAAA,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,GAAG;IAAE,OAAO,CAAC,EAAE,GAAG,CAAA;CAAE,CAyHvE,CAAC;AAqIF,eAAe,oBAAoB,CAAC"}
@@ -1,15 +1,15 @@
1
1
  import type React from 'react';
2
- import { Animated } from 'react-native';
2
+ import { SharedValue } from 'react-native-reanimated';
3
3
  interface SignInPasswordStepProps {
4
4
  styles: any;
5
- fadeAnim: Animated.Value;
6
- slideAnim: Animated.Value;
7
- scaleAnim: Animated.Value;
5
+ fadeAnim: SharedValue<number>;
6
+ slideAnim: SharedValue<number>;
7
+ scaleAnim: SharedValue<number>;
8
8
  colors: any;
9
9
  userProfile: any;
10
10
  username: string;
11
11
  theme: string;
12
- logoAnim: Animated.Value;
12
+ logoAnim: SharedValue<number>;
13
13
  errorMessage: string;
14
14
  isInputFocused: boolean;
15
15
  password: string;
@@ -1 +1 @@
1
- {"version":3,"file":"SignInPasswordStep.d.ts","sourceRoot":"","sources":["../../../../../src/ui/screens/internal/SignInPasswordStep.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAc,QAAQ,EAA+C,MAAM,cAAc,CAAC;AAMjG,UAAU,uBAAuB;IAC7B,MAAM,EAAE,GAAG,CAAC;IACZ,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC;IACzB,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC;IAC1B,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC;IAC1B,MAAM,EAAE,GAAG,CAAC;IACZ,WAAW,EAAE,GAAG,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,oBAAoB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;CACnE;AAED,QAAA,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAsIzD,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"SignInPasswordStep.d.ts","sourceRoot":"","sources":["../../../../../src/ui/screens/internal/SignInPasswordStep.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAiB,EAEb,WAAW,EACd,MAAM,yBAAyB,CAAC;AAMjC,UAAU,uBAAuB;IAC7B,MAAM,EAAE,GAAG,CAAC;IACZ,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9B,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/B,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,EAAE,GAAG,CAAC;IACZ,WAAW,EAAE,GAAG,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,oBAAoB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;CACnE;AAED,QAAA,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAiJzD,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -1,10 +1,10 @@
1
1
  import type React from 'react';
2
- import { Animated } from 'react-native';
2
+ import { SharedValue } from 'react-native-reanimated';
3
3
  interface SignInUsernameStepProps {
4
4
  styles: any;
5
- fadeAnim: Animated.Value;
6
- slideAnim: Animated.Value;
7
- scaleAnim: Animated.Value;
5
+ fadeAnim: SharedValue<number>;
6
+ slideAnim: SharedValue<number>;
7
+ scaleAnim: SharedValue<number>;
8
8
  colors: any;
9
9
  isAddAccountMode: boolean;
10
10
  user: any;
@@ -1 +1 @@
1
- {"version":3,"file":"SignInUsernameStep.d.ts","sourceRoot":"","sources":["../../../../../src/ui/screens/internal/SignInUsernameStep.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAA8B,QAAQ,EAAE,MAAM,cAAc,CAAC;AAMpE,UAAU,uBAAuB;IAC7B,MAAM,EAAE,GAAG,CAAC;IACZ,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC;IACzB,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC;IAC1B,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC;IAC1B,MAAM,EAAE,GAAG,CAAC;IACZ,gBAAgB,EAAE,OAAO,CAAC;IAC1B,IAAI,EAAE,GAAG,CAAC;IACV,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,GAAG,YAAY,GAAG,OAAO,GAAG,SAAS,CAAC;IAC9D,WAAW,EAAE,GAAG,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,oBAAoB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,sBAAsB,EAAE,MAAM,IAAI,CAAC;IACnC,QAAQ,EAAE,GAAG,CAAC;CACjB;AAED,QAAA,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAqGzD,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"SignInUsernameStep.d.ts","sourceRoot":"","sources":["../../../../../src/ui/screens/internal/SignInUsernameStep.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAiB,EAEb,WAAW,EACd,MAAM,yBAAyB,CAAC;AAMjC,UAAU,uBAAuB;IAC7B,MAAM,EAAE,GAAG,CAAC;IACZ,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9B,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/B,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,EAAE,GAAG,CAAC;IACZ,gBAAgB,EAAE,OAAO,CAAC;IAC1B,IAAI,EAAE,GAAG,CAAC;IACV,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,GAAG,YAAY,GAAG,OAAO,GAAG,SAAS,CAAC;IAC9D,WAAW,EAAE,GAAG,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,oBAAoB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,sBAAsB,EAAE,MAAM,IAAI,CAAC;IACnC,QAAQ,EAAE,GAAG,CAAC;CACjB;AAED,QAAA,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA2GzD,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -241,7 +241,7 @@ export declare const createAuthStyles: (colors: AuthThemeColors, theme: string)
241
241
  fontWeight: "bold" | undefined;
242
242
  fontSize: number;
243
243
  marginBottom: number;
244
- textAlign: "center";
244
+ textAlign: "left";
245
245
  letterSpacing: number;
246
246
  };
247
247
  modernUsernameSubtext: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oxyhq/services",
3
- "version": "5.11.9",
3
+ "version": "5.11.10",
4
4
  "description": "Reusable OxyHQ module to handle authentication, user management, karma system, device-based session management and more 🚀",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -47,6 +47,10 @@
47
47
  "repository": "https://github.com/oxyhq/oxyhqservices",
48
48
  "author": "OxyHQ",
49
49
  "license": "MIT",
50
+ "engines": {
51
+ "node": ">=18.0.0",
52
+ "npm": ">=9.0.0"
53
+ },
50
54
  "bugs": {
51
55
  "url": "https://github.com/oxyhq/oxyhqservices/issues"
52
56
  },
@@ -84,7 +88,11 @@
84
88
  "sonner-native": "^0.20.0",
85
89
  "tailwindcss": "^4.1.11",
86
90
  "zod": "^3.25.64",
87
- "zustand": "^5.0.6"
91
+ "zustand": "^5.0.6",
92
+ "@tanstack/react-query": "^5.59.0",
93
+ "react": "^18.3.1",
94
+ "@amir-hossein-karimi/bottom-sheet": "^9.1.2",
95
+ "@gorhom/bottom-sheet": "^5.1.6"
88
96
  },
89
97
  "devDependencies": {
90
98
  "@biomejs/biome": "^1.9.4",
@@ -6,11 +6,8 @@ export interface User {
6
6
  id: string;
7
7
  username: string;
8
8
  email?: string;
9
- avatar?: {
10
- id?: string;
11
- url?: string;
12
- [key: string]: unknown;
13
- };
9
+ // Avatar file id (asset id)
10
+ avatar?: string;
14
11
  name?: {
15
12
  first?: string;
16
13
  last?: string;
@@ -15,10 +15,7 @@ export interface StorageKeys {
15
15
  export interface MinimalUserData {
16
16
  id: string;
17
17
  username: string;
18
- avatar?: {
19
- id?: string;
20
- url?: string;
21
- };
18
+ avatar?: string; // file id
22
19
  }
23
20
 
24
21
  export interface SessionLoginResponse {
@@ -0,0 +1,194 @@
1
+ import React, { useState } from 'react';
2
+ import { View, Text, StyleSheet, TouchableOpacity } from 'react-native';
3
+ import Animated, {
4
+ useSharedValue,
5
+ useAnimatedStyle,
6
+ withTiming,
7
+ withSpring,
8
+ withSequence,
9
+ withDelay,
10
+ interpolateColor,
11
+ runOnJS,
12
+ Easing,
13
+ } from 'react-native-reanimated';
14
+
15
+ // Example component showcasing improved Reanimated usage
16
+ const AnimationExample: React.FC = () => {
17
+ const [currentStep, setCurrentStep] = useState(0);
18
+
19
+ // Shared values for better performance
20
+ const opacity = useSharedValue(1);
21
+ const scale = useSharedValue(1);
22
+ const translateX = useSharedValue(0);
23
+ const rotation = useSharedValue(0);
24
+ const progress = useSharedValue(0);
25
+ const colorProgress = useSharedValue(0);
26
+
27
+ // Animated styles with proper interpolation
28
+ const animatedStyle = useAnimatedStyle(() => {
29
+ return {
30
+ opacity: opacity.value,
31
+ transform: [
32
+ { scale: scale.value },
33
+ { translateX: translateX.value },
34
+ { rotate: `${rotation.value}deg` },
35
+ ],
36
+ };
37
+ });
38
+
39
+ const progressStyle = useAnimatedStyle(() => {
40
+ return {
41
+ width: `${progress.value * 100}%`,
42
+ backgroundColor: interpolateColor(
43
+ colorProgress.value,
44
+ [0, 1],
45
+ ['#3498db', '#e74c3c']
46
+ ),
47
+ };
48
+ });
49
+
50
+ const backgroundStyle = useAnimatedStyle(() => {
51
+ return {
52
+ backgroundColor: interpolateColor(
53
+ colorProgress.value,
54
+ [0, 1],
55
+ ['#ecf0f1', '#f39c12']
56
+ ),
57
+ };
58
+ });
59
+
60
+ // Complex animation sequence
61
+ const animateSequence = () => {
62
+ 'worklet';
63
+
64
+ // Staggered animations for smooth transitions
65
+ opacity.value = withTiming(0.5, { duration: 200 });
66
+ scale.value = withSpring(0.8, { damping: 15, stiffness: 150 });
67
+
68
+ // Delayed follow-up animations
69
+ translateX.value = withDelay(
70
+ 100,
71
+ withSpring(50, { damping: 20, stiffness: 100 }, (finished) => {
72
+ if (finished) {
73
+ translateX.value = withSpring(0, { damping: 15, stiffness: 150 });
74
+ }
75
+ })
76
+ );
77
+
78
+ // Sequential animations
79
+ rotation.value = withSequence(
80
+ withTiming(10, { duration: 150 }),
81
+ withTiming(-10, { duration: 150 }),
82
+ withTiming(0, { duration: 150 })
83
+ );
84
+
85
+ // Progress animation with easing
86
+ progress.value = withTiming(1, {
87
+ duration: 1000,
88
+ easing: Easing.out(Easing.exp)
89
+ }, (finished) => {
90
+ if (finished) {
91
+ runOnJS(setCurrentStep)(currentStep + 1);
92
+ }
93
+ });
94
+
95
+ // Color transition
96
+ colorProgress.value = withTiming(1, { duration: 800 });
97
+
98
+ // Reset animations
99
+ setTimeout(() => {
100
+ opacity.value = withSpring(1);
101
+ scale.value = withSpring(1);
102
+ progress.value = withTiming(0, { duration: 500 });
103
+ colorProgress.value = withTiming(0, { duration: 500 });
104
+ }, 1500);
105
+ };
106
+
107
+ return (
108
+ <Animated.View style={[styles.container, backgroundStyle]}>
109
+ <Text style={styles.title}>Advanced Reanimated Example</Text>
110
+ <Text style={styles.subtitle}>Step: {currentStep}</Text>
111
+
112
+ <Animated.View style={[styles.box, animatedStyle]}>
113
+ <Text style={styles.boxText}>Animated Box</Text>
114
+ </Animated.View>
115
+
116
+ <View style={styles.progressContainer}>
117
+ <Animated.View style={[styles.progressBar, progressStyle]} />
118
+ </View>
119
+
120
+ <TouchableOpacity style={styles.button} onPress={animateSequence}>
121
+ <Text style={styles.buttonText}>Animate Sequence</Text>
122
+ </TouchableOpacity>
123
+ </Animated.View>
124
+ );
125
+ };
126
+
127
+ const styles = StyleSheet.create({
128
+ container: {
129
+ flex: 1,
130
+ justifyContent: 'center',
131
+ alignItems: 'center',
132
+ padding: 20,
133
+ },
134
+ title: {
135
+ fontSize: 24,
136
+ fontWeight: 'bold',
137
+ marginBottom: 10,
138
+ color: '#2c3e50',
139
+ },
140
+ subtitle: {
141
+ fontSize: 16,
142
+ marginBottom: 30,
143
+ color: '#7f8c8d',
144
+ },
145
+ box: {
146
+ width: 150,
147
+ height: 150,
148
+ backgroundColor: '#3498db',
149
+ borderRadius: 20,
150
+ justifyContent: 'center',
151
+ alignItems: 'center',
152
+ marginBottom: 30,
153
+ shadowColor: '#000',
154
+ shadowOffset: { width: 0, height: 4 },
155
+ shadowOpacity: 0.3,
156
+ shadowRadius: 8,
157
+ elevation: 8,
158
+ },
159
+ boxText: {
160
+ color: 'white',
161
+ fontSize: 16,
162
+ fontWeight: 'bold',
163
+ },
164
+ progressContainer: {
165
+ width: '100%',
166
+ height: 10,
167
+ backgroundColor: '#ecf0f1',
168
+ borderRadius: 5,
169
+ marginBottom: 30,
170
+ overflow: 'hidden',
171
+ },
172
+ progressBar: {
173
+ height: '100%',
174
+ borderRadius: 5,
175
+ },
176
+ button: {
177
+ backgroundColor: '#e74c3c',
178
+ paddingHorizontal: 30,
179
+ paddingVertical: 15,
180
+ borderRadius: 25,
181
+ shadowColor: '#000',
182
+ shadowOffset: { width: 0, height: 2 },
183
+ shadowOpacity: 0.2,
184
+ shadowRadius: 4,
185
+ elevation: 4,
186
+ },
187
+ buttonText: {
188
+ color: 'white',
189
+ fontSize: 16,
190
+ fontWeight: 'bold',
191
+ },
192
+ });
193
+
194
+ export default AnimationExample;
@@ -24,6 +24,10 @@ import { toast } from '../../lib/sonner';
24
24
  import { useFollow } from '../hooks/useFollow';
25
25
  import { useThemeColors } from '../styles/theme';
26
26
 
27
+ // Create animated TouchableOpacity
28
+ const AnimatedTouchableOpacity = Animated.createAnimatedComponent(TouchableOpacity);
29
+ const AnimatedText = Animated.createAnimatedComponent(Text);
30
+
27
31
  export interface FollowButtonProps {
28
32
  userId: string;
29
33
  initiallyFollowing?: boolean;
@@ -65,6 +69,30 @@ const FollowButton: React.FC<FollowButtonProps> = ({
65
69
  const animationProgress = useSharedValue(isFollowing ? 1 : 0);
66
70
  const scale = useSharedValue(1);
67
71
 
72
+ // Button press handler with animation
73
+ const handlePress = useCallback(async (event?: { preventDefault?: () => void; stopPropagation?: () => void }) => {
74
+ if (preventParentActions && event && event.preventDefault) {
75
+ event.preventDefault();
76
+ event.stopPropagation?.();
77
+ }
78
+ if (disabled || isLoading) return;
79
+
80
+ // Press animation
81
+ scale.value = withTiming(0.95, { duration: 100 }, (finished) => {
82
+ if (finished) {
83
+ scale.value = withSpring(1, { damping: 15, stiffness: 200 });
84
+ }
85
+ });
86
+
87
+ try {
88
+ await toggleFollow?.();
89
+ if (onFollowChange) onFollowChange(!isFollowing);
90
+ } catch (err: unknown) {
91
+ const error = err instanceof Error ? err : new Error(String(err));
92
+ toast.error(error.message || 'Failed to update follow status');
93
+ }
94
+ }, [disabled, isLoading, toggleFollow, onFollowChange, isFollowing, preventParentActions, scale]);
95
+
68
96
  // Initialize Zustand state with initial value if not already set
69
97
  useEffect(() => {
70
98
  if (userId && !isFollowing && initiallyFollowing) {
@@ -86,24 +114,35 @@ const FollowButton: React.FC<FollowButtonProps> = ({
86
114
  animationProgress.value = withTiming(isFollowing ? 1 : 0, { duration: 300, easing: Easing.inOut(Easing.ease) });
87
115
  }, [isFollowing, animationProgress]);
88
116
 
89
- // Button press handler
90
- const handlePress = useCallback(async (event?: { preventDefault?: () => void; stopPropagation?: () => void }) => {
91
- if (preventParentActions && event && event.preventDefault) {
92
- event.preventDefault();
93
- event.stopPropagation?.();
94
- }
95
- if (disabled || isLoading) return;
96
- try {
97
- await toggleFollow?.();
98
- if (onFollowChange) onFollowChange(!isFollowing);
99
- } catch (err: unknown) {
100
- const error = err instanceof Error ? err : new Error(String(err));
101
- toast.error(error.message || 'Failed to update follow status');
102
- }
103
- }, [disabled, isLoading, toggleFollow, onFollowChange, isFollowing, preventParentActions]);
117
+ // Animated styles for better performance
118
+ const animatedButtonStyle = useAnimatedStyle(() => {
119
+ return {
120
+ transform: [{ scale: scale.value }],
121
+ backgroundColor: interpolateColor(
122
+ animationProgress.value,
123
+ [0, 1],
124
+ [colors.background, colors.primary]
125
+ ),
126
+ borderColor: interpolateColor(
127
+ animationProgress.value,
128
+ [0, 1],
129
+ [colors.border, colors.primary]
130
+ ),
131
+ };
132
+ }, [colors]);
133
+
134
+ const animatedTextStyle = useAnimatedStyle(() => {
135
+ return {
136
+ color: interpolateColor(
137
+ animationProgress.value,
138
+ [0, 1],
139
+ [colors.text, '#FFFFFF']
140
+ ),
141
+ };
142
+ }, [colors]);
104
143
 
105
- // Get button style based on size and follow state
106
- const getButtonStyle = (): StyleProp<ViewStyle> => {
144
+ // Get base button style (without state-specific colors since they're animated)
145
+ const getBaseButtonStyle = (): StyleProp<ViewStyle> => {
107
146
  const baseStyle = {
108
147
  flexDirection: 'row' as const,
109
148
  alignItems: 'center' as const,
@@ -148,27 +187,11 @@ const FollowButton: React.FC<FollowButtonProps> = ({
148
187
  };
149
188
  }
150
189
 
151
- // State-specific colors
152
- let stateStyle = {};
153
- if (isFollowing) {
154
- stateStyle = {
155
- backgroundColor: colors.primary,
156
- borderColor: colors.primary,
157
- shadowColor: colors.primary,
158
- };
159
- } else {
160
- stateStyle = {
161
- backgroundColor: colors.background,
162
- borderColor: colors.border,
163
- shadowColor: colors.border,
164
- };
165
- }
166
-
167
- return [baseStyle, sizeStyle, stateStyle, style];
190
+ return [baseStyle, sizeStyle, style];
168
191
  };
169
192
 
170
- // Get text style based on size and follow state
171
- const getTextStyle = (): StyleProp<TextStyle> => {
193
+ // Get base text style (without state-specific colors since they're animated)
194
+ const getBaseTextStyle = (): StyleProp<TextStyle> => {
172
195
  const baseTextStyle = {
173
196
  fontFamily: fontFamilies.phuduSemiBold,
174
197
  fontWeight: '600' as const,
@@ -185,15 +208,12 @@ const FollowButton: React.FC<FollowButtonProps> = ({
185
208
  sizeTextStyle = { fontSize: 15 };
186
209
  }
187
210
 
188
- // State-specific text color
189
- const textColor = isFollowing ? '#FFFFFF' : colors.text;
190
-
191
- return [baseTextStyle, sizeTextStyle, { color: textColor }, textStyle];
211
+ return [baseTextStyle, sizeTextStyle, textStyle];
192
212
  };
193
213
 
194
214
  return (
195
- <TouchableOpacity
196
- style={getButtonStyle()}
215
+ <AnimatedTouchableOpacity
216
+ style={[getBaseButtonStyle(), animatedButtonStyle]}
197
217
  onPress={handlePress}
198
218
  disabled={disabled || isLoading}
199
219
  activeOpacity={0.8}
@@ -204,11 +224,11 @@ const FollowButton: React.FC<FollowButtonProps> = ({
204
224
  color={isFollowing ? '#FFFFFF' : colors.primary}
205
225
  />
206
226
  ) : (
207
- <Text style={getTextStyle()}>
227
+ <AnimatedText style={[getBaseTextStyle(), animatedTextStyle]}>
208
228
  {isFollowing ? 'Following' : 'Follow'}
209
- </Text>
229
+ </AnimatedText>
210
230
  )}
211
- </TouchableOpacity>
231
+ </AnimatedTouchableOpacity>
212
232
  );
213
233
  };
214
234
 
@@ -117,6 +117,7 @@ const styles = StyleSheet.create({
117
117
  justifyContent: 'space-between',
118
118
  marginBottom: 2,
119
119
  overflow: 'hidden',
120
+ width: '100%',
120
121
  },
121
122
  firstGroupedItem: {
122
123
  borderTopLeftRadius: 24,
@@ -28,7 +28,7 @@ interface GroupedSectionProps {
28
28
 
29
29
  const GroupedSection: React.FC<GroupedSectionProps> = ({ items, theme }) => {
30
30
  return (
31
- <View>
31
+ <View style={{ width: '100%' }}>
32
32
  {items.map((item, index) => (
33
33
  <GroupedItem
34
34
  key={item.id}