@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.
- package/lib/commonjs/ui/components/OxyProvider.js +50 -30
- package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
- package/lib/commonjs/ui/components/OxySignInButton.js +4 -4
- package/lib/commonjs/ui/components/OxySignInButton.js.map +1 -1
- package/lib/commonjs/ui/context/OxyContext.js +15 -7
- package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
- package/lib/commonjs/ui/navigation/OxyRouter.js +47 -7
- package/lib/commonjs/ui/navigation/OxyRouter.js.map +1 -1
- package/lib/commonjs/ui/screens/ProfileScreen.js +346 -0
- package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -0
- package/lib/commonjs/ui/screens/SignInScreen.js +82 -86
- package/lib/commonjs/ui/screens/SignInScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/SignUpScreen.js +190 -108
- package/lib/commonjs/ui/screens/SignUpScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaAboutScreen.js +88 -0
- package/lib/commonjs/ui/screens/karma/KarmaAboutScreen.js.map +1 -0
- package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js +364 -0
- package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js.map +1 -0
- package/lib/commonjs/ui/screens/karma/KarmaFAQScreen.js +202 -0
- package/lib/commonjs/ui/screens/karma/KarmaFAQScreen.js.map +1 -0
- package/lib/commonjs/ui/screens/karma/KarmaLeaderboardScreen.js +148 -0
- package/lib/commonjs/ui/screens/karma/KarmaLeaderboardScreen.js.map +1 -0
- package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js +127 -0
- package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js.map +1 -0
- package/lib/commonjs/ui/screens/karma/KarmaRulesScreen.js +105 -0
- package/lib/commonjs/ui/screens/karma/KarmaRulesScreen.js.map +1 -0
- package/lib/commonjs/ui/styles/theme.js +1 -2
- package/lib/commonjs/ui/styles/theme.js.map +1 -1
- package/lib/module/ui/components/OxyProvider.js +51 -31
- package/lib/module/ui/components/OxyProvider.js.map +1 -1
- package/lib/module/ui/components/OxySignInButton.js +4 -4
- package/lib/module/ui/components/OxySignInButton.js.map +1 -1
- package/lib/module/ui/context/OxyContext.js +15 -7
- package/lib/module/ui/context/OxyContext.js.map +1 -1
- package/lib/module/ui/navigation/OxyRouter.js +47 -7
- package/lib/module/ui/navigation/OxyRouter.js.map +1 -1
- package/lib/module/ui/screens/ProfileScreen.js +340 -0
- package/lib/module/ui/screens/ProfileScreen.js.map +1 -0
- package/lib/module/ui/screens/SignInScreen.js +83 -87
- package/lib/module/ui/screens/SignInScreen.js.map +1 -1
- package/lib/module/ui/screens/SignUpScreen.js +189 -109
- package/lib/module/ui/screens/SignUpScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaAboutScreen.js +83 -0
- package/lib/module/ui/screens/karma/KarmaAboutScreen.js.map +1 -0
- package/lib/module/ui/screens/karma/KarmaCenterScreen.js +358 -0
- package/lib/module/ui/screens/karma/KarmaCenterScreen.js.map +1 -0
- package/lib/module/ui/screens/karma/KarmaFAQScreen.js +197 -0
- package/lib/module/ui/screens/karma/KarmaFAQScreen.js.map +1 -0
- package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js +142 -0
- package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js.map +1 -0
- package/lib/module/ui/screens/karma/KarmaRewardsScreen.js +122 -0
- package/lib/module/ui/screens/karma/KarmaRewardsScreen.js.map +1 -0
- package/lib/module/ui/screens/karma/KarmaRulesScreen.js +100 -0
- package/lib/module/ui/screens/karma/KarmaRulesScreen.js.map +1 -0
- package/lib/module/ui/styles/theme.js +1 -2
- package/lib/module/ui/styles/theme.js.map +1 -1
- package/lib/typescript/ui/components/OxyProvider.d.ts.map +1 -1
- package/lib/typescript/ui/components/OxySignInButton.d.ts +5 -0
- package/lib/typescript/ui/components/OxySignInButton.d.ts.map +1 -1
- package/lib/typescript/ui/context/OxyContext.d.ts +4 -1
- package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/ui/navigation/OxyRouter.d.ts.map +1 -1
- package/lib/typescript/ui/screens/ProfileScreen.d.ts +9 -0
- package/lib/typescript/ui/screens/ProfileScreen.d.ts.map +1 -0
- package/lib/typescript/ui/screens/SignInScreen.d.ts.map +1 -1
- package/lib/typescript/ui/screens/SignUpScreen.d.ts.map +1 -1
- package/lib/typescript/ui/screens/karma/KarmaAboutScreen.d.ts +5 -0
- package/lib/typescript/ui/screens/karma/KarmaAboutScreen.d.ts.map +1 -0
- package/lib/typescript/ui/screens/karma/KarmaCenterScreen.d.ts +5 -0
- package/lib/typescript/ui/screens/karma/KarmaCenterScreen.d.ts.map +1 -0
- package/lib/typescript/ui/screens/karma/KarmaFAQScreen.d.ts +5 -0
- package/lib/typescript/ui/screens/karma/KarmaFAQScreen.d.ts.map +1 -0
- package/lib/typescript/ui/screens/karma/KarmaLeaderboardScreen.d.ts +5 -0
- package/lib/typescript/ui/screens/karma/KarmaLeaderboardScreen.d.ts.map +1 -0
- package/lib/typescript/ui/screens/karma/KarmaRewardsScreen.d.ts +5 -0
- package/lib/typescript/ui/screens/karma/KarmaRewardsScreen.d.ts.map +1 -0
- package/lib/typescript/ui/screens/karma/KarmaRulesScreen.d.ts +5 -0
- package/lib/typescript/ui/screens/karma/KarmaRulesScreen.d.ts.map +1 -0
- package/lib/typescript/ui/styles/theme.d.ts +0 -1
- package/lib/typescript/ui/styles/theme.d.ts.map +1 -1
- package/package.json +4 -3
- package/src/ui/components/OxyProvider.tsx +42 -29
- package/src/ui/components/OxySignInButton.tsx +9 -3
- package/src/ui/context/OxyContext.tsx +16 -8
- package/src/ui/navigation/OxyRouter.tsx +44 -7
- package/src/ui/screens/ProfileScreen.tsx +155 -0
- package/src/ui/screens/SignInScreen.tsx +68 -73
- package/src/ui/screens/SignUpScreen.tsx +136 -87
- package/src/ui/screens/karma/KarmaAboutScreen.tsx +45 -0
- package/src/ui/screens/karma/KarmaCenterScreen.tsx +271 -0
- package/src/ui/screens/karma/KarmaFAQScreen.tsx +164 -0
- package/src/ui/screens/karma/KarmaLeaderboardScreen.tsx +79 -0
- package/src/ui/screens/karma/KarmaRewardsScreen.tsx +55 -0
- package/src/ui/screens/karma/KarmaRulesScreen.tsx +65 -0
- package/src/ui/styles/theme.ts +1 -2
- package/lib/commonjs/ui/screens/AboutKarmaScreen.js +0 -50
- package/lib/commonjs/ui/screens/AboutKarmaScreen.js.map +0 -1
- package/lib/module/ui/screens/AboutKarmaScreen.js +0 -45
- package/lib/module/ui/screens/AboutKarmaScreen.js.map +0 -1
- package/lib/typescript/ui/screens/AboutKarmaScreen.d.ts +0 -5
- package/lib/typescript/ui/screens/AboutKarmaScreen.d.ts.map +0 -1
- 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
|
-
<
|
|
97
|
+
<BottomSheetScrollView style={[styles.scrollContainer, { backgroundColor, padding: 20 }]}>
|
|
94
98
|
<Text style={[
|
|
95
|
-
styles.
|
|
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
|
-
</
|
|
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
|
-
{/*
|
|
170
|
-
<
|
|
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
|
-
<
|
|
174
|
-
|
|
175
|
-
|
|
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
|
-
<
|
|
404
|
-
|
|
405
|
-
|
|
430
|
+
<BottomSheetScrollView
|
|
431
|
+
contentContainerStyle={styles.scrollContainer}
|
|
432
|
+
keyboardShouldPersistTaps="handled"
|
|
406
433
|
>
|
|
407
|
-
<
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
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
|
-
|
|
421
|
-
|
|
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
|
-
|
|
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:
|
|
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:
|
|
467
|
+
paddingVertical: 8,
|
|
468
|
+
paddingHorizontal: 0,
|
|
469
|
+
marginBottom: 8,
|
|
455
470
|
},
|
|
456
471
|
inputContainer: {
|
|
457
|
-
marginBottom:
|
|
472
|
+
marginBottom: 18,
|
|
458
473
|
},
|
|
459
474
|
label: {
|
|
460
|
-
fontSize:
|
|
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:
|
|
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:
|
|
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:
|
|
481
|
-
fontWeight: '
|
|
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:
|
|
512
|
+
marginTop: 28,
|
|
487
513
|
},
|
|
488
514
|
footerText: {
|
|
489
|
-
fontSize:
|
|
515
|
+
fontSize: 15,
|
|
516
|
+
color: '#888',
|
|
490
517
|
},
|
|
491
518
|
linkText: {
|
|
492
|
-
fontSize:
|
|
493
|
-
fontWeight: '
|
|
519
|
+
fontSize: 15,
|
|
520
|
+
fontWeight: '700',
|
|
521
|
+
color: '#d169e5',
|
|
494
522
|
},
|
|
495
523
|
errorContainer: {
|
|
496
|
-
backgroundColor: '#
|
|
497
|
-
padding:
|
|
498
|
-
borderRadius:
|
|
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:
|
|
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:
|
|
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:
|
|
527
|
-
|
|
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: '
|
|
538
|
-
justifyContent: '
|
|
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
|
-
|
|
548
|
-
|
|
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:
|
|
591
|
+
marginTop: 28,
|
|
556
592
|
},
|
|
557
593
|
navButton: {
|
|
558
|
-
borderRadius:
|
|
559
|
-
height:
|
|
594
|
+
borderRadius: 24,
|
|
595
|
+
height: 44,
|
|
560
596
|
alignItems: 'center',
|
|
561
597
|
justifyContent: 'center',
|
|
562
|
-
paddingHorizontal:
|
|
563
|
-
|
|
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: '
|
|
574
|
-
color: '#
|
|
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:
|
|
587
|
-
width:
|
|
588
|
-
borderRadius:
|
|
589
|
-
marginHorizontal:
|
|
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
|
-
|
|
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:
|
|
603
|
-
width:
|
|
649
|
+
fontSize: 15,
|
|
650
|
+
width: 90,
|
|
651
|
+
color: '#888',
|
|
604
652
|
},
|
|
605
653
|
summaryValue: {
|
|
606
|
-
fontSize:
|
|
607
|
-
fontWeight: '
|
|
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;
|