@oxyhq/services 5.1.11 → 5.1.13

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 (102) hide show
  1. package/lib/commonjs/ui/components/OxyProvider.js +50 -30
  2. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  3. package/lib/commonjs/ui/components/OxySignInButton.js +4 -4
  4. package/lib/commonjs/ui/components/OxySignInButton.js.map +1 -1
  5. package/lib/commonjs/ui/context/OxyContext.js +15 -7
  6. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  7. package/lib/commonjs/ui/navigation/OxyRouter.js +47 -7
  8. package/lib/commonjs/ui/navigation/OxyRouter.js.map +1 -1
  9. package/lib/commonjs/ui/screens/ProfileScreen.js +346 -0
  10. package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -0
  11. package/lib/commonjs/ui/screens/SignInScreen.js +82 -86
  12. package/lib/commonjs/ui/screens/SignInScreen.js.map +1 -1
  13. package/lib/commonjs/ui/screens/SignUpScreen.js +190 -108
  14. package/lib/commonjs/ui/screens/SignUpScreen.js.map +1 -1
  15. package/lib/commonjs/ui/screens/karma/KarmaAboutScreen.js +88 -0
  16. package/lib/commonjs/ui/screens/karma/KarmaAboutScreen.js.map +1 -0
  17. package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js +364 -0
  18. package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js.map +1 -0
  19. package/lib/commonjs/ui/screens/karma/KarmaFAQScreen.js +202 -0
  20. package/lib/commonjs/ui/screens/karma/KarmaFAQScreen.js.map +1 -0
  21. package/lib/commonjs/ui/screens/karma/KarmaLeaderboardScreen.js +148 -0
  22. package/lib/commonjs/ui/screens/karma/KarmaLeaderboardScreen.js.map +1 -0
  23. package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js +127 -0
  24. package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js.map +1 -0
  25. package/lib/commonjs/ui/screens/karma/KarmaRulesScreen.js +105 -0
  26. package/lib/commonjs/ui/screens/karma/KarmaRulesScreen.js.map +1 -0
  27. package/lib/commonjs/ui/styles/theme.js +1 -2
  28. package/lib/commonjs/ui/styles/theme.js.map +1 -1
  29. package/lib/module/ui/components/OxyProvider.js +51 -31
  30. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  31. package/lib/module/ui/components/OxySignInButton.js +4 -4
  32. package/lib/module/ui/components/OxySignInButton.js.map +1 -1
  33. package/lib/module/ui/context/OxyContext.js +15 -7
  34. package/lib/module/ui/context/OxyContext.js.map +1 -1
  35. package/lib/module/ui/navigation/OxyRouter.js +47 -7
  36. package/lib/module/ui/navigation/OxyRouter.js.map +1 -1
  37. package/lib/module/ui/screens/ProfileScreen.js +340 -0
  38. package/lib/module/ui/screens/ProfileScreen.js.map +1 -0
  39. package/lib/module/ui/screens/SignInScreen.js +83 -87
  40. package/lib/module/ui/screens/SignInScreen.js.map +1 -1
  41. package/lib/module/ui/screens/SignUpScreen.js +189 -109
  42. package/lib/module/ui/screens/SignUpScreen.js.map +1 -1
  43. package/lib/module/ui/screens/karma/KarmaAboutScreen.js +83 -0
  44. package/lib/module/ui/screens/karma/KarmaAboutScreen.js.map +1 -0
  45. package/lib/module/ui/screens/karma/KarmaCenterScreen.js +358 -0
  46. package/lib/module/ui/screens/karma/KarmaCenterScreen.js.map +1 -0
  47. package/lib/module/ui/screens/karma/KarmaFAQScreen.js +197 -0
  48. package/lib/module/ui/screens/karma/KarmaFAQScreen.js.map +1 -0
  49. package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js +142 -0
  50. package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js.map +1 -0
  51. package/lib/module/ui/screens/karma/KarmaRewardsScreen.js +122 -0
  52. package/lib/module/ui/screens/karma/KarmaRewardsScreen.js.map +1 -0
  53. package/lib/module/ui/screens/karma/KarmaRulesScreen.js +100 -0
  54. package/lib/module/ui/screens/karma/KarmaRulesScreen.js.map +1 -0
  55. package/lib/module/ui/styles/theme.js +1 -2
  56. package/lib/module/ui/styles/theme.js.map +1 -1
  57. package/lib/typescript/ui/components/OxyProvider.d.ts.map +1 -1
  58. package/lib/typescript/ui/components/OxySignInButton.d.ts +5 -0
  59. package/lib/typescript/ui/components/OxySignInButton.d.ts.map +1 -1
  60. package/lib/typescript/ui/context/OxyContext.d.ts +4 -1
  61. package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -1
  62. package/lib/typescript/ui/navigation/OxyRouter.d.ts.map +1 -1
  63. package/lib/typescript/ui/screens/ProfileScreen.d.ts +9 -0
  64. package/lib/typescript/ui/screens/ProfileScreen.d.ts.map +1 -0
  65. package/lib/typescript/ui/screens/SignInScreen.d.ts.map +1 -1
  66. package/lib/typescript/ui/screens/SignUpScreen.d.ts.map +1 -1
  67. package/lib/typescript/ui/screens/karma/KarmaAboutScreen.d.ts +5 -0
  68. package/lib/typescript/ui/screens/karma/KarmaAboutScreen.d.ts.map +1 -0
  69. package/lib/typescript/ui/screens/karma/KarmaCenterScreen.d.ts +5 -0
  70. package/lib/typescript/ui/screens/karma/KarmaCenterScreen.d.ts.map +1 -0
  71. package/lib/typescript/ui/screens/karma/KarmaFAQScreen.d.ts +5 -0
  72. package/lib/typescript/ui/screens/karma/KarmaFAQScreen.d.ts.map +1 -0
  73. package/lib/typescript/ui/screens/karma/KarmaLeaderboardScreen.d.ts +5 -0
  74. package/lib/typescript/ui/screens/karma/KarmaLeaderboardScreen.d.ts.map +1 -0
  75. package/lib/typescript/ui/screens/karma/KarmaRewardsScreen.d.ts +5 -0
  76. package/lib/typescript/ui/screens/karma/KarmaRewardsScreen.d.ts.map +1 -0
  77. package/lib/typescript/ui/screens/karma/KarmaRulesScreen.d.ts +5 -0
  78. package/lib/typescript/ui/screens/karma/KarmaRulesScreen.d.ts.map +1 -0
  79. package/lib/typescript/ui/styles/theme.d.ts +0 -1
  80. package/lib/typescript/ui/styles/theme.d.ts.map +1 -1
  81. package/package.json +4 -3
  82. package/src/ui/components/OxyProvider.tsx +42 -29
  83. package/src/ui/components/OxySignInButton.tsx +9 -3
  84. package/src/ui/context/OxyContext.tsx +16 -8
  85. package/src/ui/navigation/OxyRouter.tsx +44 -7
  86. package/src/ui/screens/ProfileScreen.tsx +155 -0
  87. package/src/ui/screens/SignInScreen.tsx +68 -73
  88. package/src/ui/screens/SignUpScreen.tsx +136 -87
  89. package/src/ui/screens/karma/KarmaAboutScreen.tsx +45 -0
  90. package/src/ui/screens/karma/KarmaCenterScreen.tsx +271 -0
  91. package/src/ui/screens/karma/KarmaFAQScreen.tsx +164 -0
  92. package/src/ui/screens/karma/KarmaLeaderboardScreen.tsx +79 -0
  93. package/src/ui/screens/karma/KarmaRewardsScreen.tsx +55 -0
  94. package/src/ui/screens/karma/KarmaRulesScreen.tsx +65 -0
  95. package/src/ui/styles/theme.ts +1 -2
  96. package/lib/commonjs/ui/screens/AboutKarmaScreen.js +0 -50
  97. package/lib/commonjs/ui/screens/AboutKarmaScreen.js.map +0 -1
  98. package/lib/module/ui/screens/AboutKarmaScreen.js +0 -45
  99. package/lib/module/ui/screens/AboutKarmaScreen.js.map +0 -1
  100. package/lib/typescript/ui/screens/AboutKarmaScreen.d.ts +0 -5
  101. package/lib/typescript/ui/screens/AboutKarmaScreen.d.ts.map +0 -1
  102. package/src/ui/screens/AboutKarmaScreen.tsx +0 -58
@@ -16,6 +16,10 @@ import {
16
16
  import { BaseScreenProps } from '../navigation/types';
17
17
  import { useOxy } from '../context/OxyContext';
18
18
  import { fontFamilies } from '../styles/fonts';
19
+ import OxyLogo from '../components/OxyLogo';
20
+ import { BottomSheetScrollView, BottomSheetView } from '@gorhom/bottom-sheet';
21
+ import { Ionicons } from '@expo/vector-icons'; // Add icon import
22
+ import Svg, { Path, Circle } from 'react-native-svg';
19
23
 
20
24
  const SignUpScreen: React.FC<BaseScreenProps> = ({
21
25
  navigate,
@@ -90,9 +94,9 @@ const SignUpScreen: React.FC<BaseScreenProps> = ({
90
94
 
91
95
  if (user && isAuthenticated) {
92
96
  return (
93
- <View style={[styles.container, { backgroundColor, padding: 20 }]}>
97
+ <BottomSheetScrollView style={[styles.scrollContainer, { backgroundColor, padding: 20 }]}>
94
98
  <Text style={[
95
- styles.title,
99
+ styles.welcomeTitle,
96
100
  {
97
101
  color: textColor,
98
102
  textAlign: 'center'
@@ -118,7 +122,7 @@ const SignUpScreen: React.FC<BaseScreenProps> = ({
118
122
  <Text style={styles.buttonText}>Go to Account Center</Text>
119
123
  </TouchableOpacity>
120
124
  </View>
121
- </View>
125
+ </BottomSheetScrollView>
122
126
  );
123
127
  }
124
128
 
@@ -164,15 +168,38 @@ const SignUpScreen: React.FC<BaseScreenProps> = ({
164
168
  styles.stepContainer,
165
169
  { opacity: fadeAnim, transform: [{ translateX: slideAnim }] }
166
170
  ]}>
167
-
168
171
  <View style={styles.welcomeImageContainer}>
169
- {/* Placeholder for any welcome image or icon */}
170
- <View style={[styles.welcomeImagePlaceholder, { backgroundColor: isDarkTheme ? '#333' : '#f0f0f0' }]} />
172
+ {/* Large illustration, not inside a circle */}
173
+ <Svg width={220} height={120} viewBox="0 0 220 120">
174
+ {/* Example: Abstract friendly illustration */}
175
+ <Path
176
+ d="M30 100 Q60 20 110 60 Q160 100 190 40"
177
+ stroke="#d169e5"
178
+ strokeWidth="8"
179
+ fill="none"
180
+ />
181
+ <Circle cx="60" cy="60" r="18" fill="#d169e5" opacity="0.18" />
182
+ <Circle cx="110" cy="60" r="24" fill="#d169e5" opacity="0.25" />
183
+ <Circle cx="170" cy="50" r="14" fill="#d169e5" opacity="0.15" />
184
+ {/* Smiling face */}
185
+ <Circle cx="110" cy="60" r="32" fill="#fff" opacity="0.7" />
186
+ <Circle cx="100" cy="55" r="4" fill="#d169e5" />
187
+ <Circle cx="120" cy="55" r="4" fill="#d169e5" />
188
+ <Path
189
+ d="M104 68 Q110 75 116 68"
190
+ stroke="#d169e5"
191
+ strokeWidth="2"
192
+ fill="none"
193
+ strokeLinecap="round"
194
+ />
195
+ </Svg>
171
196
  </View>
172
197
 
173
- <Text style={[styles.welcomeTitle, { color: textColor }]}>
174
- Welcome to Oxy
175
- </Text>
198
+ <View style={styles.header}>
199
+ {/* Add a close/back icon for better navigation */}
200
+ <Text style={[styles.welcomeTitle]}>Create a Oxy Account</Text>
201
+ <View style={styles.placeholder} />
202
+ </View>
176
203
 
177
204
  <Text style={[styles.welcomeText, { color: textColor }]}>
178
205
  We're excited to have you join us. Let's get your account set up in just a few easy steps.
@@ -400,114 +427,123 @@ const SignUpScreen: React.FC<BaseScreenProps> = ({
400
427
  };
401
428
 
402
429
  return (
403
- <KeyboardAvoidingView
404
- behavior={Platform.OS === 'ios' ? 'padding' : 'height'}
405
- style={[styles.container, { backgroundColor }]}
430
+ <BottomSheetScrollView
431
+ contentContainerStyle={styles.scrollContainer}
432
+ keyboardShouldPersistTaps="handled"
406
433
  >
407
- <ScrollView
408
- contentContainerStyle={styles.scrollContainer}
409
- keyboardShouldPersistTaps="handled"
410
- >
411
- <View style={styles.header}>
412
- <Text style={[styles.title]}>Create Account</Text>
413
- <View style={styles.placeholder} />
414
- </View>
415
-
416
- <View style={styles.formContainer}>
417
- {renderCurrentStep()}
418
- </View>
434
+ <OxyLogo
435
+ style={{ marginBottom: 24 }}
436
+ width={50}
437
+ height={50}
438
+ />
439
+
440
+ <View style={styles.formContainer}>
441
+ {renderCurrentStep()}
442
+ </View>
419
443
 
420
- {currentStep > 0 && renderProgressIndicators()}
421
- </ScrollView>
422
- </KeyboardAvoidingView>
444
+ {currentStep > 0 && renderProgressIndicators()}
445
+ </BottomSheetScrollView>
423
446
  );
424
447
  };
425
448
 
426
449
  const styles = StyleSheet.create({
427
- container: {
428
- flex: 1,
429
- },
430
450
  scrollContainer: {
431
- flexGrow: 1,
432
- padding: 10,
451
+ padding: 20,
433
452
  },
434
453
  header: {
435
454
  flexDirection: 'row',
455
+ alignItems: 'center',
436
456
  justifyContent: 'space-between',
437
- marginBottom: 24,
438
- },
439
- title: {
440
- fontFamily: Platform.OS === 'web'
441
- ? 'Phudu' // Use CSS font name directly for web
442
- : 'Phudu-Bold', // Use exact font name as registered with Font.loadAsync
443
- fontWeight: Platform.OS === 'web' ? 'bold' : undefined, // Only apply fontWeight on web
444
- fontSize: 54,
445
457
  },
446
458
  placeholder: {
447
- width: 50, // To balance the header
459
+ width: 40,
448
460
  },
449
461
  formContainer: {
450
462
  width: '100%',
463
+ marginTop: 8,
451
464
  },
452
465
  stepContainer: {
453
466
  width: '100%',
454
- paddingVertical: 20,
467
+ paddingVertical: 8,
468
+ paddingHorizontal: 0,
469
+ marginBottom: 8,
455
470
  },
456
471
  inputContainer: {
457
- marginBottom: 16,
472
+ marginBottom: 18,
458
473
  },
459
474
  label: {
460
- fontSize: 14,
475
+ fontSize: 15,
461
476
  marginBottom: 8,
477
+ fontWeight: '500',
478
+ letterSpacing: 0.1,
462
479
  },
463
480
  input: {
464
481
  height: 48,
465
- borderRadius: 35,
482
+ borderRadius: 16,
466
483
  paddingHorizontal: 16,
467
484
  borderWidth: 1,
468
485
  fontSize: 16,
486
+ backgroundColor: '#F5F5F5',
487
+ borderColor: '#E0E0E0',
488
+ marginBottom: 2,
469
489
  },
470
490
  button: {
471
491
  backgroundColor: '#d169e5',
472
492
  height: 48,
473
- borderRadius: 35,
493
+ borderRadius: 24,
474
494
  alignItems: 'center',
475
495
  justifyContent: 'center',
476
496
  marginTop: 24,
497
+ shadowColor: '#d169e5',
498
+ shadowOpacity: 0.12,
499
+ shadowOffset: { width: 0, height: 2 },
500
+ shadowRadius: 8,
501
+ elevation: 2,
477
502
  },
478
503
  buttonText: {
479
504
  color: '#FFFFFF',
480
- fontSize: 16,
481
- fontWeight: '600',
505
+ fontSize: 17,
506
+ fontWeight: '700',
507
+ letterSpacing: 0.2,
482
508
  },
483
509
  footerTextContainer: {
484
510
  flexDirection: 'row',
485
511
  justifyContent: 'center',
486
- marginTop: 24,
512
+ marginTop: 28,
487
513
  },
488
514
  footerText: {
489
- fontSize: 14,
515
+ fontSize: 15,
516
+ color: '#888',
490
517
  },
491
518
  linkText: {
492
- fontSize: 14,
493
- fontWeight: '600',
519
+ fontSize: 15,
520
+ fontWeight: '700',
521
+ color: '#d169e5',
494
522
  },
495
523
  errorContainer: {
496
- backgroundColor: '#FFEBEE',
497
- padding: 12,
498
- borderRadius: 35,
524
+ backgroundColor: '#FFE4EC',
525
+ padding: 14,
526
+ borderRadius: 18,
499
527
  marginBottom: 16,
528
+ borderWidth: 1,
529
+ borderColor: '#F8BBD0',
500
530
  },
501
531
  errorText: {
502
532
  color: '#D32F2F',
503
- fontSize: 14,
533
+ fontSize: 15,
534
+ fontWeight: '500',
504
535
  },
505
536
  userInfoContainer: {
506
537
  padding: 20,
507
538
  marginVertical: 20,
508
539
  backgroundColor: '#F5F5F5',
509
- borderRadius: 35,
540
+ borderRadius: 24,
510
541
  alignItems: 'center',
542
+ shadowColor: '#000',
543
+ shadowOpacity: 0.04,
544
+ shadowOffset: { width: 0, height: 1 },
545
+ shadowRadius: 4,
546
+ elevation: 1,
511
547
  },
512
548
  userInfoText: {
513
549
  fontSize: 16,
@@ -523,75 +559,86 @@ const styles = StyleSheet.create({
523
559
  ? 'Phudu' // Use CSS font name directly for web
524
560
  : 'Phudu-Bold', // Use exact font name as registered with Font.loadAsync
525
561
  fontWeight: Platform.OS === 'web' ? 'bold' : undefined, // Only apply fontWeight on web
526
- fontSize: 32,
527
- textAlign: 'left',
528
- marginBottom: 20,
562
+ fontSize: 54,
563
+ marginBottom: 24,
529
564
  },
530
565
  welcomeText: {
531
566
  fontSize: 16,
532
567
  textAlign: 'left',
533
568
  marginBottom: 30,
534
569
  lineHeight: 24,
570
+ color: '#444',
535
571
  },
536
572
  welcomeImageContainer: {
537
- alignItems: 'flex-start',
538
- justifyContent: 'flex-start',
573
+ alignItems: 'center',
574
+ justifyContent: 'center',
539
575
  marginVertical: 30,
540
576
  },
541
- welcomeImagePlaceholder: {
542
- width: 120,
543
- height: 120,
544
- borderRadius: 60,
545
- },
546
577
  stepTitle: {
547
- fontSize: 24,
548
- fontWeight: '600',
578
+ fontFamily: Platform.OS === 'web'
579
+ ? 'Phudu' // Use CSS font name directly for web
580
+ : 'Phudu-Bold', // Use exact font name as registered with Font.loadAsync
581
+ fontWeight: Platform.OS === 'web' ? 'bold' : undefined, // Only apply fontWeight on web
582
+ fontSize: 34,
549
583
  marginBottom: 20,
584
+ color: '#d169e5',
585
+ maxWidth: '90%',
550
586
  },
551
587
  navigationButtons: {
552
588
  flexDirection: 'row',
553
589
  justifyContent: 'space-between',
554
590
  alignItems: 'center',
555
- marginTop: 24,
591
+ marginTop: 28,
556
592
  },
557
593
  navButton: {
558
- borderRadius: 35,
559
- height: 48,
594
+ borderRadius: 24,
595
+ height: 44,
560
596
  alignItems: 'center',
561
597
  justifyContent: 'center',
562
- paddingHorizontal: 24,
563
- marginRight: 'auto',
598
+ paddingHorizontal: 28,
599
+ backgroundColor: '#F3E5F5',
564
600
  },
565
601
  backButton: {
566
602
  backgroundColor: 'transparent',
603
+ borderWidth: 1,
604
+ borderColor: '#E0E0E0',
567
605
  },
568
606
  nextButton: {
569
607
  minWidth: 100,
608
+ backgroundColor: '#d169e5',
570
609
  },
571
610
  navButtonText: {
572
611
  fontSize: 16,
573
- fontWeight: '600',
574
- color: '#FFFFFF',
612
+ fontWeight: '700',
613
+ color: '#d169e5',
575
614
  },
576
615
  passwordHint: {
577
616
  fontSize: 12,
578
617
  marginTop: 4,
618
+ color: '#888',
579
619
  },
580
620
  progressContainer: {
581
621
  flexDirection: 'row',
582
622
  justifyContent: 'center',
583
623
  marginBottom: 20,
624
+ marginTop: 8,
584
625
  },
585
626
  progressDot: {
586
- height: 8,
587
- width: 8,
588
- borderRadius: 4,
589
- marginHorizontal: 4,
627
+ height: 10,
628
+ width: 10,
629
+ borderRadius: 5,
630
+ marginHorizontal: 6,
631
+ backgroundColor: '#E0E0E0',
632
+ borderWidth: 2,
633
+ borderColor: '#fff',
634
+ shadowColor: '#d169e5',
635
+ shadowOpacity: 0.08,
636
+ shadowOffset: { width: 0, height: 1 },
637
+ shadowRadius: 2,
638
+ elevation: 1,
590
639
  },
591
640
  summaryContainer: {
592
- backgroundColor: '#F5F5F5',
593
- borderRadius: 15,
594
- padding: 16,
641
+ padding: 0,
595
642
  marginBottom: 24,
596
643
  },
597
644
  summaryRow: {
@@ -599,13 +646,15 @@ const styles = StyleSheet.create({
599
646
  marginBottom: 10,
600
647
  },
601
648
  summaryLabel: {
602
- fontSize: 14,
603
- width: 80,
649
+ fontSize: 15,
650
+ width: 90,
651
+ color: '#888',
604
652
  },
605
653
  summaryValue: {
606
- fontSize: 14,
607
- fontWeight: '500',
654
+ fontSize: 15,
655
+ fontWeight: '600',
608
656
  flex: 1,
657
+ color: '#222',
609
658
  },
610
659
  });
611
660
 
@@ -0,0 +1,45 @@
1
+ import React from 'react';
2
+ import { View, Text, StyleSheet, ScrollView, Platform } from 'react-native';
3
+ import { BaseScreenProps } from '../../navigation/types';
4
+
5
+ const KarmaAboutScreen: React.FC<BaseScreenProps> = ({ goBack, theme }) => {
6
+ const isDarkTheme = theme === 'dark';
7
+ const backgroundColor = isDarkTheme ? '#121212' : '#FFFFFF';
8
+ const textColor = isDarkTheme ? '#FFFFFF' : '#000000';
9
+ const primaryColor = '#d169e5';
10
+
11
+ return (
12
+ <View style={[styles.container, { backgroundColor }]}>
13
+ <Text style={[styles.title, { color: textColor }]}>About Karma</Text>
14
+ <ScrollView contentContainerStyle={styles.contentContainer}>
15
+ <Text style={[styles.paragraph, { color: textColor }]}>Karma is a recognition of your positive actions in the Oxy Ecosystem. It cannot be sent or received directly, only earned by contributing to the community.</Text>
16
+ <Text style={[styles.section, { color: primaryColor }]}>How to Earn Karma</Text>
17
+ <Text style={[styles.paragraph, { color: textColor }]}>• Helping other users{'\n'}
18
+ • Reporting bugs{'\n'}
19
+ • Contributing content{'\n'}
20
+ • Participating in events{'\n'}
21
+ • Other positive actions</Text>
22
+ <Text style={[styles.section, { color: primaryColor }]}>Why Karma?</Text>
23
+ <Text style={[styles.paragraph, { color: textColor }]}>Karma unlocks special features and recognition in the Oxy Ecosystem. The more you contribute, the more you earn!</Text>
24
+ </ScrollView>
25
+ </View>
26
+ );
27
+ };
28
+
29
+ const styles = StyleSheet.create({
30
+ container: { flex: 1 },
31
+ title: {
32
+ fontFamily: Platform.OS === 'web'
33
+ ? 'Phudu' // Use CSS font name directly for web
34
+ : 'Phudu-Bold', // Use exact font name as registered with Font.loadAsync
35
+ fontWeight: Platform.OS === 'web' ? 'bold' : undefined, // Only apply fontWeight on web
36
+ fontSize: 54,
37
+ margin: 24,
38
+ marginBottom: 24,
39
+ },
40
+ contentContainer: { padding: 24 },
41
+ section: { fontSize: 18, fontWeight: 'bold', marginTop: 24, marginBottom: 8 },
42
+ paragraph: { fontSize: 16, marginBottom: 12 },
43
+ });
44
+
45
+ export default KarmaAboutScreen;