@oxyhq/services 5.3.0 → 5.3.2

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 (37) hide show
  1. package/README.md +46 -1
  2. package/lib/commonjs/index.js +0 -98
  3. package/lib/commonjs/index.js.map +1 -1
  4. package/lib/commonjs/ui/components/OxyProvider.js +18 -6
  5. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  6. package/lib/commonjs/ui/context/OxyContext.js +24 -11
  7. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  8. package/lib/commonjs/ui/index.js +1 -113
  9. package/lib/commonjs/ui/index.js.map +1 -1
  10. package/lib/commonjs/ui/navigation/OxyRouter.js +36 -3
  11. package/lib/commonjs/ui/navigation/OxyRouter.js.map +1 -1
  12. package/lib/module/index.js +0 -8
  13. package/lib/module/index.js.map +1 -1
  14. package/lib/module/ui/components/OxyProvider.js +18 -6
  15. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  16. package/lib/module/ui/context/OxyContext.js +24 -11
  17. package/lib/module/ui/context/OxyContext.js.map +1 -1
  18. package/lib/module/ui/index.js +1 -19
  19. package/lib/module/ui/index.js.map +1 -1
  20. package/lib/module/ui/navigation/OxyRouter.js +36 -3
  21. package/lib/module/ui/navigation/OxyRouter.js.map +1 -1
  22. package/lib/typescript/index.d.ts +2 -2
  23. package/lib/typescript/index.d.ts.map +1 -1
  24. package/lib/typescript/ui/components/OxyProvider.d.ts.map +1 -1
  25. package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -1
  26. package/lib/typescript/ui/index.d.ts +0 -14
  27. package/lib/typescript/ui/index.d.ts.map +1 -1
  28. package/lib/typescript/ui/navigation/OxyRouter.d.ts.map +1 -1
  29. package/lib/typescript/ui/navigation/types.d.ts +1 -0
  30. package/lib/typescript/ui/navigation/types.d.ts.map +1 -1
  31. package/package.json +1 -1
  32. package/src/index.ts +0 -36
  33. package/src/ui/components/OxyProvider.tsx +17 -5
  34. package/src/ui/context/OxyContext.tsx +25 -11
  35. package/src/ui/index.ts +1 -19
  36. package/src/ui/navigation/OxyRouter.tsx +37 -2
  37. package/src/ui/navigation/types.ts +1 -0
@@ -11,19 +11,5 @@ export { OxyIcon } from './components/icon';
11
11
  export type { IconProps } from './components/icon';
12
12
  export { OxyContextProvider, useOxy, OxyContextState, OxyContextProviderProps } from './context/OxyContext';
13
13
  export { fontFamilies, fontStyles } from './styles/fonts';
14
- export { default as SignInScreen } from './screens/SignInScreen';
15
- export { default as SignUpScreen } from './screens/SignUpScreen';
16
- export { default as AccountCenterScreen } from './screens/AccountCenterScreen';
17
- export { default as SessionManagementScreen } from './screens/SessionManagementScreen';
18
- export { default as AccountOverviewScreen } from './screens/AccountOverviewScreen';
19
- export { default as AccountSettingsScreen } from './screens/AccountSettingsScreen';
20
- export { default as AccountSwitcherScreen } from './screens/AccountSwitcherScreen';
21
- export { default as AppInfoScreen } from './screens/AppInfoScreen';
22
- export { default as KarmaCenterScreen } from './screens/karma/KarmaCenterScreen';
23
- export { default as KarmaLeaderboardScreen } from './screens/karma/KarmaLeaderboardScreen';
24
- export { default as KarmaRewardsScreen } from './screens/karma/KarmaRewardsScreen';
25
- export { default as KarmaRulesScreen } from './screens/karma/KarmaRulesScreen';
26
- export { default as KarmaAboutScreen } from './screens/karma/KarmaAboutScreen';
27
- export { default as KarmaFAQScreen } from './screens/karma/KarmaFAQScreen';
28
14
  export * from './navigation/types';
29
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGjE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EACL,kBAAkB,EAClB,MAAM,EACN,eAAe,EACf,uBAAuB,EACxB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG1D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGnE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAG3E,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGjE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EACL,kBAAkB,EAClB,MAAM,EACN,eAAe,EACf,uBAAuB,EACxB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG1D,cAAc,oBAAoB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"OxyRouter.d.ts","sourceRoot":"","sources":["../../../../src/ui/navigation/OxyRouter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAsBnD,OAAO,EAAE,cAAc,EAAe,MAAM,SAAS,CAAC;AAkEtD,QAAA,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA0GvC,CAAC;AAiBF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"OxyRouter.d.ts","sourceRoot":"","sources":["../../../../src/ui/navigation/OxyRouter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAsBnD,OAAO,EAAE,cAAc,EAAe,MAAM,SAAS,CAAC;AAkEtD,QAAA,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA6IvC,CAAC;AAiBF,eAAe,SAAS,CAAC"}
@@ -29,6 +29,7 @@ export interface OxyRouterProps {
29
29
  onAuthenticated?: (user: User) => void;
30
30
  theme: 'light' | 'dark';
31
31
  adjustSnapPoints: (snapPoints: string[]) => void;
32
+ navigationRef?: React.MutableRefObject<((screen: string, props?: Record<string, any>) => void) | null>;
32
33
  }
33
34
  /**
34
35
  * Props for the OxyProvider component
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/ui/navigation/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGjD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAChD,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACvC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;IAC9B,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACvC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IACxB,gBAAgB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CAClD;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,WAAW,EAAE,WAAW,CAAC;IAEzB;;;OAGG;IACH,aAAa,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,eAAe,CAAC;IAEtD;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;OAEG;IACH,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAEvC;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAEzB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAEtC;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,YAAY,CAAC,EAAE;QACb;;WAEG;QACH,eAAe,CAAC,EAAE,MAAM,CAAC;QAEzB;;WAEG;QACH,WAAW,CAAC,EAAE,MAAM,CAAC;QAErB;;WAEG;QACH,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IAEF;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC;IAEhD;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/ui/navigation/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGjD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAChD,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACvC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;IAC9B,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACvC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IACxB,gBAAgB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACjD,aAAa,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;CACxG;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,WAAW,EAAE,WAAW,CAAC;IAEzB;;;OAGG;IACH,aAAa,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,eAAe,CAAC;IAEtD;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;OAEG;IACH,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAEvC;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAEzB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAEtC;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,YAAY,CAAC,EAAE;QACb;;WAEG;QACH,eAAe,CAAC,EAAE,MAAM,CAAC;QAEzB;;WAEG;QACH,WAAW,CAAC,EAAE,MAAM,CAAC;QAErB;;WAEG;QACH,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IAEF;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC;IAEhD;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oxyhq/services",
3
- "version": "5.3.0",
3
+ "version": "5.3.2",
4
4
  "description": "Reusable OxyHQ module to handle authentication, user management, karma system, device-based session management and more 🚀",
5
5
  "main": "lib/commonjs/node/index.js",
6
6
  "module": "lib/module/node/index.js",
package/src/index.ts CHANGED
@@ -16,24 +16,6 @@ import {
16
16
  OxyContextProvider,
17
17
  useOxy,
18
18
 
19
- // Screens
20
- SignInScreen,
21
- SignUpScreen,
22
- AccountCenterScreen,
23
- SessionManagementScreen,
24
- AccountOverviewScreen,
25
- AccountSettingsScreen,
26
- AppInfoScreen,
27
- AccountSwitcherScreen,
28
-
29
- // Karma Screens
30
- KarmaCenterScreen,
31
- KarmaLeaderboardScreen,
32
- KarmaRewardsScreen,
33
- KarmaRulesScreen,
34
- KarmaAboutScreen,
35
- KarmaFAQScreen,
36
-
37
19
  // Components
38
20
  OxySignInButton,
39
21
  OxyLogo,
@@ -67,24 +49,6 @@ export {
67
49
  OxyContextProvider,
68
50
  useOxy,
69
51
 
70
- // Screens
71
- SignInScreen,
72
- SignUpScreen,
73
- AccountCenterScreen,
74
- SessionManagementScreen,
75
- AccountOverviewScreen,
76
- AccountSettingsScreen,
77
- AppInfoScreen,
78
- AccountSwitcherScreen,
79
-
80
- // Karma Screens
81
- KarmaCenterScreen,
82
- KarmaLeaderboardScreen,
83
- KarmaRewardsScreen,
84
- KarmaRulesScreen,
85
- KarmaAboutScreen,
86
- KarmaFAQScreen,
87
-
88
52
  // Components
89
53
  OxySignInButton,
90
54
  OxyLogo,
@@ -95,6 +95,9 @@ const OxyBottomSheet: React.FC<OxyProviderProps> = ({
95
95
  }) => {
96
96
  // Use the internal ref (which is passed as a prop from OxyProvider)
97
97
  const modalRef = useRef<BottomSheetModal>(null);
98
+
99
+ // Create a ref to store the navigation function from OxyRouter
100
+ const navigationRef = useRef<((screen: string, props?: Record<string, any>) => void) | null>(null);
98
101
 
99
102
  // Track content height for dynamic sizing
100
103
  const [contentHeight, setContentHeight] = useState<number>(0);
@@ -122,16 +125,24 @@ const OxyBottomSheet: React.FC<OxyProviderProps> = ({
122
125
  // Add a method to navigate between screens
123
126
  // @ts-ignore - Adding custom method
124
127
  bottomSheetRef.current._navigateToScreen = (screenName: string, props?: Record<string, any>) => {
125
- // Access the navigation function exposed by OxyRouter
126
- // Use internal mechanism to notify router about navigation
127
- // We'll use a simple event-based approach
128
+ console.log(`Navigation requested: ${screenName}`, props);
129
+
130
+ // Try direct navigation function first (most reliable)
131
+ if (navigationRef.current) {
132
+ console.log('Using direct navigation function');
133
+ navigationRef.current(screenName, props);
134
+ return;
135
+ }
136
+
137
+ // Fallback to event-based navigation
128
138
  if (typeof document !== 'undefined') {
129
139
  // For web - use a custom event
140
+ console.log('Using web event navigation');
130
141
  const event = new CustomEvent('oxy:navigate', { detail: { screen: screenName, props } });
131
142
  document.dispatchEvent(event);
132
143
  } else {
133
- // For React Native - use the navigation prop directly if available
134
- // We'll implement a mechanism in OxyRouter to listen for this
144
+ // For React Native - use the global variable approach
145
+ console.log('Using React Native global navigation');
135
146
  (global as any).oxyNavigateEvent = { screen: screenName, props };
136
147
  }
137
148
  };
@@ -481,6 +492,7 @@ const OxyBottomSheet: React.FC<OxyProviderProps> = ({
481
492
  onAuthenticated={handleAuthenticated}
482
493
  theme={theme}
483
494
  adjustSnapPoints={adjustSnapPoints}
495
+ navigationRef={navigationRef}
484
496
  />
485
497
  </Animated.View>
486
498
  </BottomSheetScrollView>
@@ -502,25 +502,39 @@ export const OxyContextProvider: React.FC<OxyContextProviderProps> = ({
502
502
 
503
503
  // Bottom sheet control methods
504
504
  const showBottomSheet = useCallback((screenOrConfig?: string | { screen: string; props?: Record<string, any> }) => {
505
+ console.log('showBottomSheet called with:', screenOrConfig);
506
+
505
507
  if (bottomSheetRef?.current) {
506
- // Use expand() instead of present() to trigger animations
508
+ console.log('bottomSheetRef is available');
509
+
510
+ // First, show the bottom sheet
507
511
  if (bottomSheetRef.current.expand) {
512
+ console.log('Expanding bottom sheet');
508
513
  bottomSheetRef.current.expand();
514
+ } else if (bottomSheetRef.current.present) {
515
+ console.log('Presenting bottom sheet');
516
+ bottomSheetRef.current.present();
509
517
  } else {
510
- // Fallback to present if expand is not available
511
- bottomSheetRef.current.present?.();
518
+ console.warn('No expand or present method available on bottomSheetRef');
512
519
  }
513
520
 
514
- // Navigate to the specified screen if provided
521
+ // Then navigate to the specified screen if provided
515
522
  if (screenOrConfig) {
516
- if (typeof screenOrConfig === 'string') {
517
- // Simple screen name
518
- bottomSheetRef.current._navigateToScreen?.(screenOrConfig);
519
- } else {
520
- // Screen with props
521
- bottomSheetRef.current._navigateToScreen?.(screenOrConfig.screen, screenOrConfig.props);
522
- }
523
+ // Add a small delay to ensure the bottom sheet is opened first
524
+ setTimeout(() => {
525
+ if (typeof screenOrConfig === 'string') {
526
+ // Simple screen name
527
+ console.log('Navigating to screen:', screenOrConfig);
528
+ bottomSheetRef.current?._navigateToScreen?.(screenOrConfig);
529
+ } else {
530
+ // Screen with props
531
+ console.log('Navigating to screen with props:', screenOrConfig.screen, screenOrConfig.props);
532
+ bottomSheetRef.current?._navigateToScreen?.(screenOrConfig.screen, screenOrConfig.props);
533
+ }
534
+ }, 100);
523
535
  }
536
+ } else {
537
+ console.warn('bottomSheetRef is not available');
524
538
  }
525
539
  }, [bottomSheetRef]);
526
540
 
package/src/ui/index.ts CHANGED
@@ -24,23 +24,5 @@ export {
24
24
  // Export styles
25
25
  export { fontFamilies, fontStyles } from './styles/fonts';
26
26
 
27
- // Export screen components
28
- export { default as SignInScreen } from './screens/SignInScreen';
29
- export { default as SignUpScreen } from './screens/SignUpScreen';
30
- export { default as AccountCenterScreen } from './screens/AccountCenterScreen';
31
- export { default as SessionManagementScreen } from './screens/SessionManagementScreen';
32
- export { default as AccountOverviewScreen } from './screens/AccountOverviewScreen';
33
- export { default as AccountSettingsScreen } from './screens/AccountSettingsScreen';
34
- export { default as AccountSwitcherScreen } from './screens/AccountSwitcherScreen';
35
- export { default as AppInfoScreen } from './screens/AppInfoScreen';
36
-
37
- // Export karma screens
38
- export { default as KarmaCenterScreen } from './screens/karma/KarmaCenterScreen';
39
- export { default as KarmaLeaderboardScreen } from './screens/karma/KarmaLeaderboardScreen';
40
- export { default as KarmaRewardsScreen } from './screens/karma/KarmaRewardsScreen';
41
- export { default as KarmaRulesScreen } from './screens/karma/KarmaRulesScreen';
42
- export { default as KarmaAboutScreen } from './screens/karma/KarmaAboutScreen';
43
- export { default as KarmaFAQScreen } from './screens/karma/KarmaFAQScreen';
44
-
45
- // Export types
27
+ // Export types for navigation (internal use)
46
28
  export * from './navigation/types';
@@ -93,6 +93,7 @@ const OxyRouter: React.FC<OxyRouterProps> = ({
93
93
  onAuthenticated,
94
94
  theme,
95
95
  adjustSnapPoints,
96
+ navigationRef,
96
97
  }) => {
97
98
  const [currentScreen, setCurrentScreen] = useState<string>(initialScreen);
98
99
  const [screenHistory, setScreenHistory] = useState<string[]>([initialScreen]);
@@ -114,7 +115,22 @@ const OxyRouter: React.FC<OxyRouterProps> = ({
114
115
  } else {
115
116
  console.error(`Screen "${screen}" not found`);
116
117
  }
117
- }; // Expose the navigate method to the parent component (OxyProvider)
118
+ };
119
+
120
+ // Expose the navigate function to the parent component
121
+ useEffect(() => {
122
+ if (navigationRef) {
123
+ navigationRef.current = navigate;
124
+ }
125
+
126
+ return () => {
127
+ if (navigationRef) {
128
+ navigationRef.current = null;
129
+ }
130
+ };
131
+ }, [navigate, navigationRef]);
132
+
133
+ // Expose the navigate method to the parent component (OxyProvider)
118
134
  useEffect(() => {
119
135
  // Set up event listener for navigation events
120
136
  const handleNavigationEvent = (event: any) => {
@@ -132,9 +148,25 @@ const OxyRouter: React.FC<OxyRouterProps> = ({
132
148
  }
133
149
  };
134
150
 
135
- // Add event listener (web only)
151
+ // For React Native - check for global navigation events
152
+ let intervalId: NodeJS.Timeout | null = null;
153
+
136
154
  if (typeof document !== 'undefined') {
155
+ // Web - use custom event listener
137
156
  document.addEventListener('oxy:navigate', handleNavigationEvent);
157
+ } else {
158
+ // React Native - poll for global navigation events
159
+ intervalId = setInterval(() => {
160
+ const globalNav = (global as any).oxyNavigateEvent;
161
+ if (globalNav) {
162
+ console.log(`RN Navigation event received:`, globalNav);
163
+ if (globalNav.screen) {
164
+ navigate(globalNav.screen, globalNav.props || {});
165
+ }
166
+ // Clear the event after processing
167
+ (global as any).oxyNavigateEvent = null;
168
+ }
169
+ }, 100); // Check every 100ms
138
170
  }
139
171
 
140
172
  // Cleanup
@@ -142,6 +174,9 @@ const OxyRouter: React.FC<OxyRouterProps> = ({
142
174
  if (typeof document !== 'undefined') {
143
175
  document.removeEventListener('oxy:navigate', handleNavigationEvent);
144
176
  }
177
+ if (intervalId) {
178
+ clearInterval(intervalId);
179
+ }
145
180
  };
146
181
  }, []);
147
182
 
@@ -33,6 +33,7 @@ export interface OxyRouterProps {
33
33
  onAuthenticated?: (user: User) => void;
34
34
  theme: 'light' | 'dark';
35
35
  adjustSnapPoints: (snapPoints: string[]) => void;
36
+ navigationRef?: React.MutableRefObject<((screen: string, props?: Record<string, any>) => void) | null>;
36
37
  }
37
38
 
38
39
  /**