create-gufran-expo-app 2.0.0 → 2.0.1
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/createApp.js +7 -2
- package/package.json +1 -1
- package/template/App.tsx +118 -0
- package/template/ReactotronConfig.js +5 -0
- package/template/android/app/build.gradle +184 -0
- package/template/android/app/debug.keystore +0 -0
- package/template/android/app/google-services.json +29 -0
- package/template/android/app/proguard-rules.pro +14 -0
- package/template/android/app/src/debug/AndroidManifest.xml +7 -0
- package/template/android/app/src/debugOptimized/AndroidManifest.xml +7 -0
- package/template/android/app/src/main/AndroidManifest.xml +28 -0
- package/template/android/app/src/main/assets/fonts/Outfit-Bold.ttf +0 -0
- package/template/android/app/src/main/assets/fonts/Outfit-Light.ttf +0 -0
- package/template/android/app/src/main/assets/fonts/Outfit-Medium.ttf +0 -0
- package/template/android/app/src/main/assets/fonts/Outfit-Regular.ttf +0 -0
- package/template/android/app/src/main/assets/fonts/Outfit-SemiBold.ttf +0 -0
- package/template/android/app/src/main/java/com/club/yakka/MainActivity.kt +61 -0
- package/template/android/app/src/main/java/com/club/yakka/MainApplication.kt +60 -0
- package/template/android/app/src/main/res/drawable/ic_launcher_background.xml +6 -0
- package/template/android/app/src/main/res/drawable/rn_edit_text_material.xml +37 -0
- package/template/android/app/src/main/res/drawable-hdpi/splashscreen_logo.png +0 -0
- package/template/android/app/src/main/res/drawable-mdpi/splashscreen_logo.png +0 -0
- package/template/android/app/src/main/res/drawable-xhdpi/splashscreen_logo.png +0 -0
- package/template/android/app/src/main/res/drawable-xxhdpi/splashscreen_logo.png +0 -0
- package/template/android/app/src/main/res/drawable-xxxhdpi/splashscreen_logo.png +0 -0
- package/template/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +5 -0
- package/template/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +5 -0
- package/template/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp +0 -0
- package/template/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp +0 -0
- package/template/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp +0 -0
- package/template/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp +0 -0
- package/template/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp +0 -0
- package/template/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp +0 -0
- package/template/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp +0 -0
- package/template/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp +0 -0
- package/template/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp +0 -0
- package/template/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp +0 -0
- package/template/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp +0 -0
- package/template/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp +0 -0
- package/template/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp +0 -0
- package/template/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp +0 -0
- package/template/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp +0 -0
- package/template/android/app/src/main/res/values/colors.xml +6 -0
- package/template/android/app/src/main/res/values/strings.xml +5 -0
- package/template/android/app/src/main/res/values/styles.xml +14 -0
- package/template/android/app/src/main/res/values-night/colors.xml +1 -0
- package/template/android/build.gradle +33 -0
- package/template/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/template/android/gradle/wrapper/gradle-wrapper.properties +7 -0
- package/template/android/gradle.properties +65 -0
- package/template/android/gradlew +251 -0
- package/template/android/gradlew.bat +94 -0
- package/template/android/settings.gradle +39 -0
- package/template/app.json +69 -0
- package/template/assets/adaptive-icon.png +0 -0
- package/template/assets/adaptive-icon1.png +0 -0
- package/template/assets/app_icon.png +0 -0
- package/template/assets/favicon.png +0 -0
- package/template/assets/icon.png +0 -0
- package/template/assets/splash-icon.png +0 -0
- package/template/babel-plugin-disable-font-scaling.js +41 -0
- package/template/babel.config.js +28 -0
- package/template/firebase.json +5 -0
- package/template/index.ts +24 -0
- package/template/ios/.xcode.env +11 -0
- package/template/ios/ClubYakka/AppDelegate.swift +74 -0
- package/template/ios/ClubYakka/ClubYakka-Bridging-Header.h +3 -0
- package/template/ios/ClubYakka/ClubYakka.entitlements +8 -0
- package/template/ios/ClubYakka/GoogleService-Info.plist +30 -0
- package/template/ios/ClubYakka/Images.xcassets/AppIcon.appiconset/App-Icon-1024x1024@1x.png +0 -0
- package/template/ios/ClubYakka/Images.xcassets/AppIcon.appiconset/Contents.json +14 -0
- package/template/ios/ClubYakka/Images.xcassets/Contents.json +6 -0
- package/template/ios/ClubYakka/Images.xcassets/SplashScreenBackground.colorset/Contents.json +20 -0
- package/template/ios/ClubYakka/Images.xcassets/SplashScreenLegacy.imageset/Contents.json +23 -0
- package/template/ios/ClubYakka/Images.xcassets/SplashScreenLegacy.imageset/image.png +0 -0
- package/template/ios/ClubYakka/Images.xcassets/SplashScreenLegacy.imageset/image@2x.png +0 -0
- package/template/ios/ClubYakka/Images.xcassets/SplashScreenLegacy.imageset/image@3x.png +0 -0
- package/template/ios/ClubYakka/Info.plist +101 -0
- package/template/ios/ClubYakka/PrivacyInfo.xcprivacy +50 -0
- package/template/ios/ClubYakka/SplashScreen.storyboard +48 -0
- package/template/ios/ClubYakka/Supporting/Expo.plist +12 -0
- package/template/ios/ClubYakka.xcodeproj/project.pbxproj +669 -0
- package/template/ios/ClubYakka.xcodeproj/xcshareddata/xcschemes/ClubYakka.xcscheme +88 -0
- package/template/ios/ClubYakka.xcworkspace/contents.xcworkspacedata +10 -0
- package/template/ios/ClubYakka.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +5 -0
- package/template/ios/Podfile +84 -0
- package/template/ios/Podfile.lock +2698 -0
- package/template/ios/Podfile.properties.json +8 -0
- package/template/metro.config.js +17 -0
- package/template/package.json +70 -0
- package/template/patches/react-native-background-upload+6.6.0.patch +704 -0
- package/template/react-native.config.js +7 -0
- package/template/src/assets/fonts/Outfit-Bold.ttf +0 -0
- package/template/src/assets/fonts/Outfit-Light.ttf +0 -0
- package/template/src/assets/fonts/Outfit-Medium.ttf +0 -0
- package/template/src/assets/fonts/Outfit-Regular.ttf +0 -0
- package/template/src/assets/fonts/Outfit-SemiBold.ttf +0 -0
- package/template/src/assets/icons/BG.svg +33 -0
- package/template/src/assets/icons/Ic_Users.svg +6 -0
- package/template/src/assets/icons/arrow-left-white.svg +4 -0
- package/template/src/assets/icons/arrow-left.svg +4 -0
- package/template/src/assets/icons/bell.svg +4 -0
- package/template/src/assets/icons/bottomSheetIcone.svg +3 -0
- package/template/src/assets/icons/call.svg +4 -0
- package/template/src/assets/icons/camera.svg +0 -0
- package/template/src/assets/icons/chatAppleGreenBG.svg +22 -0
- package/template/src/assets/icons/check.svg +4 -0
- package/template/src/assets/icons/check_Radio.svg +4 -0
- package/template/src/assets/icons/chevron-right.svg +3 -0
- package/template/src/assets/icons/clubDefauldImage.png +0 -0
- package/template/src/assets/icons/curvBackgroundView.svg +3 -0
- package/template/src/assets/icons/defaultClub.png +0 -0
- package/template/src/assets/icons/email.svg +3 -0
- package/template/src/assets/icons/emptyUser.svg +5 -0
- package/template/src/assets/icons/eye-Hide.svg +8 -0
- package/template/src/assets/icons/eye.svg +4 -0
- package/template/src/assets/icons/gallery.svg +4 -0
- package/template/src/assets/icons/home.svg +4 -0
- package/template/src/assets/icons/ic_Calendar.svg +14 -0
- package/template/src/assets/icons/ic_Calendar_blue.svg +12 -0
- package/template/src/assets/icons/ic_Calendar_white.svg +12 -0
- package/template/src/assets/icons/ic_Chat.svg +14 -0
- package/template/src/assets/icons/ic_ChatAppleGreen.svg +21 -0
- package/template/src/assets/icons/ic_ChatAppleWhite.svg +21 -0
- package/template/src/assets/icons/ic_Download.svg +6 -0
- package/template/src/assets/icons/ic_Events.svg +6 -0
- package/template/src/assets/icons/ic_HeadCoachIcon.svg +3 -0
- package/template/src/assets/icons/ic_Membership.svg +10 -0
- package/template/src/assets/icons/ic_Notification.svg +6 -0
- package/template/src/assets/icons/ic_Raffles.svg +14 -0
- package/template/src/assets/icons/ic_Referral_Members.svg +12 -0
- package/template/src/assets/icons/ic_Shop.svg +13 -0
- package/template/src/assets/icons/ic_Teams.svg +8 -0
- package/template/src/assets/icons/ic_Volunteer.svg +9 -0
- package/template/src/assets/icons/ic_add.svg +3 -0
- package/template/src/assets/icons/ic_addCircle.svg +5 -0
- package/template/src/assets/icons/ic_chatSend.svg +4 -0
- package/template/src/assets/icons/ic_chat_blue_bg.svg +22 -0
- package/template/src/assets/icons/ic_clock_blue.svg +4 -0
- package/template/src/assets/icons/ic_delete.svg +8 -0
- package/template/src/assets/icons/ic_more.svg +5 -0
- package/template/src/assets/icons/ic_mute.svg +10 -0
- package/template/src/assets/icons/ic_pdf.svg +3 -0
- package/template/src/assets/icons/ic_pending_AppleGreen.svg +11 -0
- package/template/src/assets/icons/ic_right_appleGreen.svg +11 -0
- package/template/src/assets/icons/ic_unread_chat_blue_bg.svg +23 -0
- package/template/src/assets/icons/ic_volunteer_Member.svg +8 -0
- package/template/src/assets/icons/index.ts +144 -0
- package/template/src/assets/icons/location-blue.svg +4 -0
- package/template/src/assets/icons/location-white.svg +4 -0
- package/template/src/assets/icons/location.svg +4 -0
- package/template/src/assets/icons/lock.svg +5 -0
- package/template/src/assets/icons/log-out.svg +5 -0
- package/template/src/assets/icons/login_logo.svg +9 -0
- package/template/src/assets/icons/mail.svg +4 -0
- package/template/src/assets/icons/or_saprater.svg +5 -0
- package/template/src/assets/icons/password.svg +4 -0
- package/template/src/assets/icons/profile-appleGreen.svg +6 -0
- package/template/src/assets/icons/search.svg +3 -0
- package/template/src/assets/icons/settings.svg +4 -0
- package/template/src/assets/icons/success.svg +4 -0
- package/template/src/assets/icons/unCheck_Radio.svg +3 -0
- package/template/src/assets/icons/uncheck.svg +3 -0
- package/template/src/assets/icons/upload_Image.svg +6 -0
- package/template/src/assets/icons/upload_Image_Member.svg +6 -0
- package/template/src/assets/icons/user.svg +4 -0
- package/template/src/assets/icons/wifi.svg +1 -0
- package/template/src/assets/images/Splash.png +0 -0
- package/template/src/assets/images/SplashLogo.png +0 -0
- package/template/src/assets/images/background.png +0 -0
- package/template/src/assets/images/clubDefauldImage.png +0 -0
- package/template/src/assets/images/index.tsx +9 -0
- package/template/src/assets/index.ts +1 -0
- package/template/src/components/common/AddMemberModal.tsx +543 -0
- package/template/src/components/common/AppLoader.tsx +91 -0
- package/template/src/components/common/Button.tsx +173 -0
- package/template/src/components/common/ClubCard.tsx +248 -0
- package/template/src/components/common/Icon.tsx +93 -0
- package/template/src/components/common/IconAlt.tsx +65 -0
- package/template/src/components/common/IconButton.tsx +92 -0
- package/template/src/components/common/ImagePicker.tsx +451 -0
- package/template/src/components/common/LoadingSpinner.tsx +30 -0
- package/template/src/components/common/OTPInput.tsx +128 -0
- package/template/src/components/common/ReminderCalendar.tsx +129 -0
- package/template/src/components/common/ReminderCardItem.tsx +91 -0
- package/template/src/components/common/SafeAreaWrapper.tsx +27 -0
- package/template/src/components/common/SetReminderModal.tsx +308 -0
- package/template/src/components/common/SlowInternet.js +57 -0
- package/template/src/components/common/TeamCard.tsx +297 -0
- package/template/src/components/common/TextInput.tsx +227 -0
- package/template/src/components/common/ToastConfig.tsx +103 -0
- package/template/src/components/common/ToastManager.ts +86 -0
- package/template/src/components/common/UploadProgressModal.tsx +284 -0
- package/template/src/components/common/WrapperContainer.tsx +39 -0
- package/template/src/components/common/index.ts +19 -0
- package/template/src/constants/Constants.tsx +7 -0
- package/template/src/constants/Fonts.tsx +30 -0
- package/template/src/constants/index.ts +45 -0
- package/template/src/constants/strings.ts +211 -0
- package/template/src/constants/theme.ts +72 -0
- package/template/src/contexts/AuthContext.tsx +268 -0
- package/template/src/contexts/index.ts +2 -0
- package/template/src/hooks/index.ts +3 -0
- package/template/src/hooks/useImageUpload.ts +199 -0
- package/template/src/index.ts +8 -0
- package/template/src/navigation/AuthStack.tsx +67 -0
- package/template/src/navigation/MainStack.tsx +183 -0
- package/template/src/navigation/MiddleStack.tsx +35 -0
- package/template/src/navigation/RootNavigator.tsx +101 -0
- package/template/src/navigation/index.ts +5 -0
- package/template/src/navigation/navigationRef.ts +5 -0
- package/template/src/providers/QueryProvider.tsx +30 -0
- package/template/src/screens/DetailsScreen.tsx +271 -0
- package/template/src/screens/HomeScreen.tsx +736 -0
- package/template/src/screens/ProfileScreen.tsx +202 -0
- package/template/src/screens/SettingsScreen.tsx +253 -0
- package/template/src/screens/SportHubScreen.tsx +280 -0
- package/template/src/screens/auth/AddMamber.tsx +428 -0
- package/template/src/screens/auth/ForgotPasswordScreen.tsx +176 -0
- package/template/src/screens/auth/LoginScreen.tsx +286 -0
- package/template/src/screens/auth/OTPVerifyScreen.tsx +359 -0
- package/template/src/screens/auth/RegisterScreen.tsx +430 -0
- package/template/src/screens/auth/SuccessScreen.tsx +201 -0
- package/template/src/screens/auth/WalcomeScreen.tsx +274 -0
- package/template/src/screens/auth/index.ts +8 -0
- package/template/src/screens/chat/ChatScreen.tsx +1819 -0
- package/template/src/screens/chat/ChatThreadsScreen.tsx +360 -0
- package/template/src/screens/chat/ReportMessageScreen.tsx +238 -0
- package/template/src/screens/clubs/Announcements.tsx +426 -0
- package/template/src/screens/clubs/BuyRaffleTicketsScreen.tsx +568 -0
- package/template/src/screens/clubs/ClubDeteils.tsx +497 -0
- package/template/src/screens/clubs/JoinClub.tsx +841 -0
- package/template/src/screens/events/EventScreen.tsx +460 -0
- package/template/src/screens/index.ts +42 -0
- package/template/src/screens/raffles/MyReferralMembersScreen.tsx +758 -0
- package/template/src/screens/raffles/RaffleDetailsScreen.tsx +762 -0
- package/template/src/screens/raffles/RafflesScreen.tsx +495 -0
- package/template/src/screens/raffles/SetRaffleReminderScreen.tsx +390 -0
- package/template/src/screens/teams/JoinTeamScreen.tsx +464 -0
- package/template/src/screens/teams/MyTeamDetailsScreen.tsx +979 -0
- package/template/src/screens/teams/MyTeamScreen.tsx +568 -0
- package/template/src/screens/teams/PendingRequestsScreen.tsx +426 -0
- package/template/src/screens/volunteerOpportunities/SetReminderScreen.tsx +631 -0
- package/template/src/screens/volunteerOpportunities/VolunteerOpportunitiesDetailsScreen.tsx +1049 -0
- package/template/src/screens/volunteerOpportunities/VolunteerOpportunitiesScreen.tsx +608 -0
- package/template/src/services/api.ts +167 -0
- package/template/src/services/authService.ts +422 -0
- package/template/src/services/index.ts +5 -0
- package/template/src/services/mainServices.ts +1963 -0
- package/template/src/stores/authStore.ts +159 -0
- package/template/src/stores/index.ts +2 -0
- package/template/src/types/index.ts +85 -0
- package/template/src/types/navigation.ts +206 -0
- package/template/src/utils/AzureUploaderService.ts +371 -0
- package/template/src/utils/ClubSearchManager.ts +222 -0
- package/template/src/utils/NotificationManager.ts +503 -0
- package/template/src/utils/UploadDebugUtil.ts +107 -0
- package/template/src/utils/imagePicker.ts +321 -0
- package/template/src/utils/index.ts +111 -0
- package/template/src/utils/permissions.ts +277 -0
- package/template/src/utils/scaling.ts +14 -0
- package/template/src/utils/storage.ts +247 -0
- package/template/src/utils/usePermissions.ts +275 -0
- package/template/src/utils/validation.ts +340 -0
- package/template/tsconfig.json +50 -0
- package/template/types/svg.d.ts +6 -0
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import {
|
|
3
|
+
View,
|
|
4
|
+
Text,
|
|
5
|
+
StyleSheet,
|
|
6
|
+
Modal,
|
|
7
|
+
TouchableOpacity,
|
|
8
|
+
ActivityIndicator,
|
|
9
|
+
} from 'react-native';
|
|
10
|
+
import { moderateScale, verticalScale } from '../../utils/scaling';
|
|
11
|
+
import { theme } from '../../constants';
|
|
12
|
+
import { Fonts } from '../../constants/Fonts';
|
|
13
|
+
|
|
14
|
+
interface UploadProgressModalProps {
|
|
15
|
+
visible: boolean;
|
|
16
|
+
progress: number;
|
|
17
|
+
isUploading: boolean;
|
|
18
|
+
isRetrying: boolean;
|
|
19
|
+
retryCount: number;
|
|
20
|
+
error: string | null;
|
|
21
|
+
onRetry?: () => void;
|
|
22
|
+
onCancel?: () => void;
|
|
23
|
+
onDismiss?: () => void;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export const UploadProgressModal: React.FC<UploadProgressModalProps> = ({
|
|
27
|
+
visible,
|
|
28
|
+
progress,
|
|
29
|
+
isUploading,
|
|
30
|
+
isRetrying,
|
|
31
|
+
retryCount,
|
|
32
|
+
error,
|
|
33
|
+
onRetry,
|
|
34
|
+
onCancel,
|
|
35
|
+
onDismiss,
|
|
36
|
+
}) => {
|
|
37
|
+
const getStatusText = () => {
|
|
38
|
+
if (error) {
|
|
39
|
+
return 'Upload Failed';
|
|
40
|
+
}
|
|
41
|
+
if (isRetrying) {
|
|
42
|
+
return `Retrying... (${retryCount})`;
|
|
43
|
+
}
|
|
44
|
+
if (isUploading) {
|
|
45
|
+
return 'Uploading...';
|
|
46
|
+
}
|
|
47
|
+
return 'Upload Complete';
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
const getStatusColor = () => {
|
|
51
|
+
if (error) {
|
|
52
|
+
return theme.colors.error;
|
|
53
|
+
}
|
|
54
|
+
if (isRetrying) {
|
|
55
|
+
return theme.colors.warning;
|
|
56
|
+
}
|
|
57
|
+
if (isUploading) {
|
|
58
|
+
return theme.colors.primary;
|
|
59
|
+
}
|
|
60
|
+
return theme.colors.success;
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
return (
|
|
64
|
+
<Modal
|
|
65
|
+
visible={visible}
|
|
66
|
+
transparent
|
|
67
|
+
animationType="fade"
|
|
68
|
+
onRequestClose={onDismiss}
|
|
69
|
+
>
|
|
70
|
+
<View style={styles.overlay}>
|
|
71
|
+
<View style={styles.container}>
|
|
72
|
+
<View style={styles.header}>
|
|
73
|
+
<Text style={styles.title}>Image Upload</Text>
|
|
74
|
+
<TouchableOpacity onPress={onDismiss} style={styles.closeButton}>
|
|
75
|
+
<Text style={styles.closeButtonText}>×</Text>
|
|
76
|
+
</TouchableOpacity>
|
|
77
|
+
</View>
|
|
78
|
+
|
|
79
|
+
<View style={styles.content}>
|
|
80
|
+
{/* Status Icon */}
|
|
81
|
+
<View style={styles.statusContainer}>
|
|
82
|
+
{isUploading || isRetrying ? (
|
|
83
|
+
<ActivityIndicator
|
|
84
|
+
size="large"
|
|
85
|
+
color={getStatusColor()}
|
|
86
|
+
/>
|
|
87
|
+
) : error ? (
|
|
88
|
+
<Text style={styles.errorIcon}>⚠️</Text>
|
|
89
|
+
) : (
|
|
90
|
+
<Text style={styles.successIcon}>✓</Text>
|
|
91
|
+
)}
|
|
92
|
+
</View>
|
|
93
|
+
|
|
94
|
+
{/* Status Text */}
|
|
95
|
+
<Text style={[styles.statusText, { color: getStatusColor() }]}>
|
|
96
|
+
{getStatusText()}
|
|
97
|
+
</Text>
|
|
98
|
+
|
|
99
|
+
{/* Progress Bar */}
|
|
100
|
+
{(isUploading || isRetrying) && (
|
|
101
|
+
<View style={styles.progressContainer}>
|
|
102
|
+
<View style={styles.progressBar}>
|
|
103
|
+
<View
|
|
104
|
+
style={[
|
|
105
|
+
styles.progressFill,
|
|
106
|
+
{ width: `${progress}%` }
|
|
107
|
+
]}
|
|
108
|
+
/>
|
|
109
|
+
</View>
|
|
110
|
+
<Text style={styles.progressText}>{Math.round(progress)}%</Text>
|
|
111
|
+
</View>
|
|
112
|
+
)}
|
|
113
|
+
|
|
114
|
+
{/* Error Message */}
|
|
115
|
+
{error && (
|
|
116
|
+
<View style={styles.errorContainer}>
|
|
117
|
+
<Text style={styles.errorText}>{error}</Text>
|
|
118
|
+
</View>
|
|
119
|
+
)}
|
|
120
|
+
|
|
121
|
+
{/* Action Buttons */}
|
|
122
|
+
<View style={styles.buttonContainer}>
|
|
123
|
+
{error && onRetry && (
|
|
124
|
+
<TouchableOpacity
|
|
125
|
+
style={[styles.button, styles.retryButton]}
|
|
126
|
+
onPress={onRetry}
|
|
127
|
+
>
|
|
128
|
+
<Text style={styles.retryButtonText}>Retry</Text>
|
|
129
|
+
</TouchableOpacity>
|
|
130
|
+
)}
|
|
131
|
+
|
|
132
|
+
{(isUploading || isRetrying) && onCancel && (
|
|
133
|
+
<TouchableOpacity
|
|
134
|
+
style={[styles.button, styles.cancelButton]}
|
|
135
|
+
onPress={onCancel}
|
|
136
|
+
>
|
|
137
|
+
<Text style={styles.cancelButtonText}>Cancel</Text>
|
|
138
|
+
</TouchableOpacity>
|
|
139
|
+
)}
|
|
140
|
+
|
|
141
|
+
{!isUploading && !isRetrying && (
|
|
142
|
+
<TouchableOpacity
|
|
143
|
+
style={[styles.button, styles.doneButton]}
|
|
144
|
+
onPress={onDismiss}
|
|
145
|
+
>
|
|
146
|
+
<Text style={styles.doneButtonText}>Done</Text>
|
|
147
|
+
</TouchableOpacity>
|
|
148
|
+
)}
|
|
149
|
+
</View>
|
|
150
|
+
</View>
|
|
151
|
+
</View>
|
|
152
|
+
</View>
|
|
153
|
+
</Modal>
|
|
154
|
+
);
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
const styles = StyleSheet.create({
|
|
158
|
+
overlay: {
|
|
159
|
+
flex: 1,
|
|
160
|
+
backgroundColor: 'rgba(0, 0, 0, 0.5)',
|
|
161
|
+
justifyContent: 'center',
|
|
162
|
+
alignItems: 'center',
|
|
163
|
+
padding: theme.spacing.lg,
|
|
164
|
+
},
|
|
165
|
+
container: {
|
|
166
|
+
backgroundColor: theme.colors.background,
|
|
167
|
+
borderRadius: moderateScale(16),
|
|
168
|
+
width: '100%',
|
|
169
|
+
maxWidth: moderateScale(400),
|
|
170
|
+
maxHeight: '80%',
|
|
171
|
+
},
|
|
172
|
+
header: {
|
|
173
|
+
flexDirection: 'row',
|
|
174
|
+
justifyContent: 'space-between',
|
|
175
|
+
alignItems: 'center',
|
|
176
|
+
padding: theme.spacing.lg,
|
|
177
|
+
borderBottomWidth: 1,
|
|
178
|
+
borderBottomColor: theme.colors.border,
|
|
179
|
+
},
|
|
180
|
+
title: {
|
|
181
|
+
fontFamily: Fonts.outfitSemiBold,
|
|
182
|
+
fontSize: moderateScale(18),
|
|
183
|
+
color: theme.colors.text,
|
|
184
|
+
},
|
|
185
|
+
closeButton: {
|
|
186
|
+
padding: theme.spacing.xs,
|
|
187
|
+
},
|
|
188
|
+
closeButtonText: {
|
|
189
|
+
fontSize: moderateScale(24),
|
|
190
|
+
color: theme.colors.text,
|
|
191
|
+
fontWeight: 'bold',
|
|
192
|
+
},
|
|
193
|
+
content: {
|
|
194
|
+
padding: theme.spacing.lg,
|
|
195
|
+
alignItems: 'center',
|
|
196
|
+
},
|
|
197
|
+
statusContainer: {
|
|
198
|
+
marginBottom: theme.spacing.lg,
|
|
199
|
+
},
|
|
200
|
+
errorIcon: {
|
|
201
|
+
fontSize: moderateScale(48),
|
|
202
|
+
color: theme.colors.error,
|
|
203
|
+
},
|
|
204
|
+
successIcon: {
|
|
205
|
+
fontSize: moderateScale(48),
|
|
206
|
+
color: theme.colors.success,
|
|
207
|
+
},
|
|
208
|
+
statusText: {
|
|
209
|
+
fontFamily: Fonts.outfitMedium,
|
|
210
|
+
fontSize: moderateScale(16),
|
|
211
|
+
marginBottom: theme.spacing.lg,
|
|
212
|
+
textAlign: 'center',
|
|
213
|
+
},
|
|
214
|
+
progressContainer: {
|
|
215
|
+
width: '100%',
|
|
216
|
+
marginBottom: theme.spacing.lg,
|
|
217
|
+
},
|
|
218
|
+
progressBar: {
|
|
219
|
+
height: moderateScale(8),
|
|
220
|
+
backgroundColor: theme.colors.border,
|
|
221
|
+
borderRadius: moderateScale(4),
|
|
222
|
+
overflow: 'hidden',
|
|
223
|
+
marginBottom: theme.spacing.sm,
|
|
224
|
+
},
|
|
225
|
+
progressFill: {
|
|
226
|
+
height: '100%',
|
|
227
|
+
backgroundColor: theme.colors.white,
|
|
228
|
+
borderRadius: moderateScale(4),
|
|
229
|
+
},
|
|
230
|
+
progressText: {
|
|
231
|
+
fontFamily: Fonts.outfitRegular,
|
|
232
|
+
fontSize: moderateScale(14),
|
|
233
|
+
color: theme.colors.textSecondary,
|
|
234
|
+
textAlign: 'center',
|
|
235
|
+
},
|
|
236
|
+
errorContainer: {
|
|
237
|
+
backgroundColor: "red",
|
|
238
|
+
padding: theme.spacing.md,
|
|
239
|
+
borderRadius: moderateScale(8),
|
|
240
|
+
marginBottom: theme.spacing.lg,
|
|
241
|
+
width: '100%',
|
|
242
|
+
},
|
|
243
|
+
errorText: {
|
|
244
|
+
fontFamily: Fonts.outfitRegular,
|
|
245
|
+
fontSize: moderateScale(14),
|
|
246
|
+
color: theme.colors.error,
|
|
247
|
+
textAlign: 'center',
|
|
248
|
+
},
|
|
249
|
+
buttonContainer: {
|
|
250
|
+
flexDirection: 'row',
|
|
251
|
+
gap: theme.spacing.md,
|
|
252
|
+
width: '100%',
|
|
253
|
+
},
|
|
254
|
+
button: {
|
|
255
|
+
flex: 1,
|
|
256
|
+
paddingVertical: theme.spacing.md,
|
|
257
|
+
borderRadius: moderateScale(8),
|
|
258
|
+
alignItems: 'center',
|
|
259
|
+
},
|
|
260
|
+
retryButton: {
|
|
261
|
+
backgroundColor: theme.colors.primary,
|
|
262
|
+
},
|
|
263
|
+
retryButtonText: {
|
|
264
|
+
fontFamily: Fonts.outfitMedium,
|
|
265
|
+
fontSize: moderateScale(16),
|
|
266
|
+
color: theme.colors.background,
|
|
267
|
+
},
|
|
268
|
+
cancelButton: {
|
|
269
|
+
backgroundColor: theme.colors.border,
|
|
270
|
+
},
|
|
271
|
+
cancelButtonText: {
|
|
272
|
+
fontFamily: Fonts.outfitMedium,
|
|
273
|
+
fontSize: moderateScale(16),
|
|
274
|
+
color: theme.colors.text,
|
|
275
|
+
},
|
|
276
|
+
doneButton: {
|
|
277
|
+
backgroundColor: theme.colors.success,
|
|
278
|
+
},
|
|
279
|
+
doneButtonText: {
|
|
280
|
+
fontFamily: Fonts.outfitMedium,
|
|
281
|
+
fontSize: moderateScale(16),
|
|
282
|
+
color: theme.colors.background,
|
|
283
|
+
},
|
|
284
|
+
});
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { StatusBar, StyleSheet, ViewStyle} from 'react-native';
|
|
3
|
+
import { SafeAreaView, SafeAreaViewProps } from 'react-native-safe-area-context';
|
|
4
|
+
|
|
5
|
+
interface WrapperContainerProps extends SafeAreaViewProps {
|
|
6
|
+
children: React.ReactNode;
|
|
7
|
+
style?: ViewStyle;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const WrapperContainer: React.FC<WrapperContainerProps> = ({
|
|
11
|
+
children,
|
|
12
|
+
style,
|
|
13
|
+
...safeAreaProps
|
|
14
|
+
}) => {
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
return (
|
|
18
|
+
<SafeAreaView
|
|
19
|
+
style={[
|
|
20
|
+
styles.container,
|
|
21
|
+
|
|
22
|
+
]}
|
|
23
|
+
{...safeAreaProps}
|
|
24
|
+
>
|
|
25
|
+
<StatusBar
|
|
26
|
+
barStyle={'light-content'}
|
|
27
|
+
/>
|
|
28
|
+
{children}
|
|
29
|
+
</SafeAreaView>
|
|
30
|
+
);
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
const styles = StyleSheet.create({
|
|
34
|
+
container: {
|
|
35
|
+
flex: 1,
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
export default React.memo(WrapperContainer);
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export * from './Button';
|
|
2
|
+
export * from './LoadingSpinner';
|
|
3
|
+
export * from './SafeAreaWrapper';
|
|
4
|
+
export * from './Icon';
|
|
5
|
+
export * from './IconButton';
|
|
6
|
+
export * from './TextInput';
|
|
7
|
+
export * from './WrapperContainer';
|
|
8
|
+
export * from './AppLoader';
|
|
9
|
+
export * from './ToastManager';
|
|
10
|
+
export * from './ImagePicker';
|
|
11
|
+
export * from './UploadProgressModal';
|
|
12
|
+
export * from './OTPInput';
|
|
13
|
+
export * from './ClubCard';
|
|
14
|
+
export * from './TeamCard';
|
|
15
|
+
export * from './SlowInternet';
|
|
16
|
+
export * from './SetReminderModal';
|
|
17
|
+
export * from './AddMemberModal';
|
|
18
|
+
export * from './ReminderCalendar';
|
|
19
|
+
export * from './ReminderCardItem';
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Dimensions, PixelRatio } from "react-native";
|
|
2
|
+
const { width: SCREEN_WIDTH, height: SCREEN_HEIGHT } = Dimensions.get("window");
|
|
3
|
+
const scale = Math.min(SCREEN_WIDTH, SCREEN_HEIGHT) / 420;
|
|
4
|
+
|
|
5
|
+
export const Fonts = {
|
|
6
|
+
outfitBold: "Outfit-Bold",
|
|
7
|
+
outfitRegular: "Outfit-Regular",
|
|
8
|
+
outfitMedium: "Outfit-Medium",
|
|
9
|
+
outfitSemiBold: "Outfit-SemiBold",
|
|
10
|
+
outfitLight: "Outfit-Light",
|
|
11
|
+
} as const;
|
|
12
|
+
|
|
13
|
+
export type FontFamily = (typeof Fonts)[keyof typeof Fonts];
|
|
14
|
+
|
|
15
|
+
export const normalize = (size: number) => {
|
|
16
|
+
const newSize = size * scale;
|
|
17
|
+
return Math.round(PixelRatio.roundToNearestPixel(newSize));
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export const applyTypography = (
|
|
21
|
+
fontFamily: FontFamily,
|
|
22
|
+
fontSize: number,
|
|
23
|
+
color: string
|
|
24
|
+
) => {
|
|
25
|
+
return {
|
|
26
|
+
fontFamily: fontFamily,
|
|
27
|
+
fontSize: normalize(fontSize),
|
|
28
|
+
color: color,
|
|
29
|
+
};
|
|
30
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// Theme constants
|
|
2
|
+
export * from './theme';
|
|
3
|
+
|
|
4
|
+
// String constants
|
|
5
|
+
export { Strings } from './strings';
|
|
6
|
+
|
|
7
|
+
// App constants
|
|
8
|
+
export const APP_CONFIG = {
|
|
9
|
+
name: 'RN Club Yakka',
|
|
10
|
+
version: '1.0.0',
|
|
11
|
+
environment: __DEV__ ? 'development' : 'production',
|
|
12
|
+
} as const;
|
|
13
|
+
|
|
14
|
+
// API constants
|
|
15
|
+
export const API_CONFIG = {
|
|
16
|
+
baseUrl: __DEV__
|
|
17
|
+
? 'https://api-dev.example.com'
|
|
18
|
+
: 'https://api.example.com',
|
|
19
|
+
timeout: 10000,
|
|
20
|
+
retryAttempts: 3,
|
|
21
|
+
} as const;
|
|
22
|
+
|
|
23
|
+
// Screen names
|
|
24
|
+
export const SCREEN_NAMES = {
|
|
25
|
+
HOME: 'Home',
|
|
26
|
+
PROFILE: 'Profile',
|
|
27
|
+
SETTINGS: 'Settings',
|
|
28
|
+
DETAILS: 'Details',
|
|
29
|
+
} as const;
|
|
30
|
+
|
|
31
|
+
// Storage keys
|
|
32
|
+
export const STORAGE_KEYS = {
|
|
33
|
+
USER_TOKEN: '@user_token',
|
|
34
|
+
USER_DATA: '@user_data',
|
|
35
|
+
THEME_PREFERENCE: '@theme_preference',
|
|
36
|
+
LANGUAGE_PREFERENCE: '@language_preference',
|
|
37
|
+
} as const;
|
|
38
|
+
|
|
39
|
+
// Validation constants
|
|
40
|
+
export const VALIDATION = {
|
|
41
|
+
MIN_PASSWORD_LENGTH: 8,
|
|
42
|
+
MAX_EMAIL_LENGTH: 254,
|
|
43
|
+
MIN_NAME_LENGTH: 2,
|
|
44
|
+
MAX_NAME_LENGTH: 50,
|
|
45
|
+
} as const;
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized String Management Class
|
|
3
|
+
* All app strings are organized here for easy maintenance and localization
|
|
4
|
+
*/
|
|
5
|
+
export class Strings {
|
|
6
|
+
// MARK: - Common Strings
|
|
7
|
+
static readonly COMMON = {
|
|
8
|
+
// Buttons
|
|
9
|
+
LOGIN: 'Login',
|
|
10
|
+
SIGN_UP: 'Sign Up',
|
|
11
|
+
SIGN_IN: 'Sign In',
|
|
12
|
+
CREATE_ACCOUNT: 'Create Account',
|
|
13
|
+
FORGOT_PASSWORD: 'Forgot Password?',
|
|
14
|
+
SEND_RESET_LINK: 'Send Reset Link',
|
|
15
|
+
SUBMIT: 'Submit',
|
|
16
|
+
VERIFY: 'Verify',
|
|
17
|
+
BACK_TO_LOGIN: 'Back to Login',
|
|
18
|
+
TRY_DIFFERENT_EMAIL: 'Try Different Email',
|
|
19
|
+
VIEW_PROFILE: 'View Profile',
|
|
20
|
+
SETTINGS: 'Settings',
|
|
21
|
+
VIEW_DETAILS: 'View Details',
|
|
22
|
+
OTP: 'OTP',
|
|
23
|
+
// Form Labels
|
|
24
|
+
EMAIL: 'Email',
|
|
25
|
+
PASSWORD: 'Password',
|
|
26
|
+
NAME: 'Name',
|
|
27
|
+
CONFIRM_PASSWORD: 'Confirm Password',
|
|
28
|
+
EMAIL_ADDRESS: 'Email Address',
|
|
29
|
+
PHONE: 'Phone',
|
|
30
|
+
// Placeholders
|
|
31
|
+
EMAIL_PLACEHOLDER: 'Email',
|
|
32
|
+
PASSWORD_PLACEHOLDER: '••••••••',
|
|
33
|
+
NAME_PLACEHOLDER: 'Name',
|
|
34
|
+
PHONE_PLACEHOLDER: 'Phone',
|
|
35
|
+
EMAIL_INPUT_PLACEHOLDER: 'Enter your email',
|
|
36
|
+
PASSWORD_CREATE_PLACEHOLDER: 'Create a password',
|
|
37
|
+
PASSWORD_CONFIRM_PLACEHOLDER: 'Confirm your password',
|
|
38
|
+
PHONE_INPUT_PLACEHOLDER: 'Enter your phone',
|
|
39
|
+
// Navigation
|
|
40
|
+
HOME: 'Home',
|
|
41
|
+
PROFILE: 'Profile',
|
|
42
|
+
DETAILS: 'Details',
|
|
43
|
+
|
|
44
|
+
// Status
|
|
45
|
+
LOADING: 'Loading...',
|
|
46
|
+
SUCCESS: 'Success',
|
|
47
|
+
ERROR: 'Error',
|
|
48
|
+
FAILED: 'Failed',
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
// MARK: - Authentication Strings
|
|
52
|
+
static readonly AUTH = {
|
|
53
|
+
// Titles
|
|
54
|
+
LOGIN_TITLE: 'Log In',
|
|
55
|
+
REGISTER_TITLE: 'Create Account',
|
|
56
|
+
SIGN_UP_TITLE: 'Sign Up',
|
|
57
|
+
FORGOT_PASSWORD_TITLE: 'Forgot Password',
|
|
58
|
+
TERMS_AND_CONDITIONS: 'Terms & Conditions',
|
|
59
|
+
FORGOT_PASSWORD_SUBTITLE: 'Please enter your email address, you will receive a link to create a new password via email.',
|
|
60
|
+
|
|
61
|
+
PRIVACY_POLICY: 'Privacy Policy',
|
|
62
|
+
EMAIL_VERIFY_TITLE: 'Verify Email',
|
|
63
|
+
EMAIL_VERIFY_SUBTITLE: "4 digit code has been sent to your email id.",
|
|
64
|
+
// Subtitles
|
|
65
|
+
REGISTER_SUBTITLE: 'Join our community today',
|
|
66
|
+
OTP_VERIFY_SUBTITLE: 'Enter the OTP sent to your email',
|
|
67
|
+
// Success Messages
|
|
68
|
+
ACCOUNT_CREATED_SUCCESS: 'Account created successfully!',
|
|
69
|
+
CHECK_EMAIL_TITLE: 'Check your email',
|
|
70
|
+
CHECK_EMAIL_MESSAGE: "We've sent a password reset link to",
|
|
71
|
+
|
|
72
|
+
// Error Messages
|
|
73
|
+
LOGIN_FAILED: 'Login Failed',
|
|
74
|
+
REGISTRATION_FAILED: 'Registration Failed',
|
|
75
|
+
INVALID_CREDENTIALS: 'Invalid email or password',
|
|
76
|
+
UNABLE_TO_CREATE_ACCOUNT: 'Unable to create account',
|
|
77
|
+
LOGIN_ERROR: 'An error occurred during login',
|
|
78
|
+
REGISTRATION_ERROR: 'An error occurred during registration',
|
|
79
|
+
RESET_EMAIL_ERROR: 'Failed to send reset email. Please try again.',
|
|
80
|
+
OTP_VERIFY_ERROR: 'Failed to verify OTP. Please try again.',
|
|
81
|
+
OTP_VERIFIED_SUCCESS: 'OTP verified successfully!',
|
|
82
|
+
OTP_SEND_SUCCESS: 'OTP sent successfully!',
|
|
83
|
+
OTP_VERIFIED_FAILED: 'Failed to verify OTP. Please try again.',
|
|
84
|
+
// Add Member
|
|
85
|
+
ADD_MEMBER_TITLE: 'Add Member',
|
|
86
|
+
ADD_MEMBER_SUBTITLE: 'Add Member',
|
|
87
|
+
JOIN_CLUB: 'Join Club',
|
|
88
|
+
ADD_MEMBER_SECTION_TITLE: 'ADD MEMBER',
|
|
89
|
+
MY_CLUBS_SECTION_TITLE: 'My CLUBS',
|
|
90
|
+
SKIP: 'Skip',
|
|
91
|
+
NEXT: 'Next',
|
|
92
|
+
SAVE: 'Save',
|
|
93
|
+
UPLOAD_MEMBER_PHOTO: 'Upload Member Photo',
|
|
94
|
+
MEMBER_NAME: 'Member Name',
|
|
95
|
+
MEMBER_NAME_PLACEHOLDER: 'Member Name',
|
|
96
|
+
DATE_OF_BIRTH: 'Date of Birth',
|
|
97
|
+
DATE_OF_BIRTH_PLACEHOLDER: 'DD/MM/YYYY',
|
|
98
|
+
TYPE_OF_RELATIONSHIP: 'Type of Relationship',
|
|
99
|
+
TYPE_OF_RELATIONSHIP_PLACEHOLDER: 'Enter',
|
|
100
|
+
// Validation Messages
|
|
101
|
+
EMAIL_REQUIRED: 'Email is required',
|
|
102
|
+
PASSWORD_REQUIRED: 'Password is required',
|
|
103
|
+
NAME_REQUIRED: 'Name is required',
|
|
104
|
+
CONFIRM_PASSWORD_REQUIRED: 'Please confirm your password',
|
|
105
|
+
VALID_EMAIL_REQUIRED: 'Please enter a valid email',
|
|
106
|
+
VALID_EMAIL_ADDRESS_REQUIRED: 'Please enter a valid email address',
|
|
107
|
+
PASSWORD_MIN_LENGTH: 'Password must be at least 8 characters',
|
|
108
|
+
PASSWORDS_DO_NOT_MATCH: 'Passwords do not match',
|
|
109
|
+
VALID_PHONE_NUMBER_REQUIRED: 'Please enter a valid phone number',
|
|
110
|
+
PHONE_NUMBER_REQUIRED: 'Phone number is required',
|
|
111
|
+
I_AGREE_TO_THE_TERMS_AND_CONDITIONS: 'I agree to the Terms and Conditions',
|
|
112
|
+
// Footer Messages
|
|
113
|
+
ALREADY_HAVE_ACCOUNT: 'Already have an account?',
|
|
114
|
+
REMEMBER_PASSWORD: 'Remember your password?',
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
// MARK: - Home Screen Strings
|
|
118
|
+
static readonly HOME = {
|
|
119
|
+
WELCOME_TITLE: 'Welcome to Club Yakka',
|
|
120
|
+
WELCOME_SUBTITLE: 'Your React Native Navigation App',
|
|
121
|
+
QUICK_ACTIONS_TITLE: 'Quick Actions',
|
|
122
|
+
FEATURES_TITLE: 'Features',
|
|
123
|
+
|
|
124
|
+
// Features List
|
|
125
|
+
FEATURE_TYPESCRIPT: '✅ TypeScript Support',
|
|
126
|
+
FEATURE_NAVIGATION: '✅ React Navigation',
|
|
127
|
+
FEATURE_COMPONENTS: '✅ Common Components',
|
|
128
|
+
FEATURE_THEME: '✅ Theme System',
|
|
129
|
+
FEATURE_UTILITIES: '✅ Utility Functions',
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
// MARK: - Profile Screen Strings
|
|
133
|
+
static readonly PROFILE = {
|
|
134
|
+
TITLE: 'Profile',
|
|
135
|
+
EDIT_PROFILE: 'Edit Profile',
|
|
136
|
+
LOGOUT: 'Logout',
|
|
137
|
+
ACCOUNT_SETTINGS: 'Account Settings',
|
|
138
|
+
PERSONAL_INFO: 'Personal Information',
|
|
139
|
+
SECURITY: 'Security',
|
|
140
|
+
NOTIFICATIONS: 'Notifications',
|
|
141
|
+
PRIVACY: 'Privacy',
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
// MARK: - Settings Screen Strings
|
|
145
|
+
static readonly SETTINGS = {
|
|
146
|
+
TITLE: 'Settings',
|
|
147
|
+
GENERAL: 'General',
|
|
148
|
+
APPEARANCE: 'Appearance',
|
|
149
|
+
LANGUAGE: 'Language',
|
|
150
|
+
ABOUT: 'About',
|
|
151
|
+
VERSION: 'Version',
|
|
152
|
+
TERMS_OF_SERVICE: 'Terms of Service',
|
|
153
|
+
PRIVACY_POLICY: 'Privacy Policy',
|
|
154
|
+
CONTACT_SUPPORT: 'Contact Support',
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
// MARK: - Details Screen Strings
|
|
158
|
+
static readonly DETAILS = {
|
|
159
|
+
TITLE: 'Details',
|
|
160
|
+
DESCRIPTION: 'Description',
|
|
161
|
+
MORE_INFO: 'More Information',
|
|
162
|
+
RELATED_ITEMS: 'Related Items',
|
|
163
|
+
SHARE: 'Share',
|
|
164
|
+
BOOKMARK: 'Bookmark',
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
// MARK: - Alert Messages
|
|
168
|
+
static readonly ALERTS = {
|
|
169
|
+
CONFIRM_LOGOUT: 'Are you sure you want to logout?',
|
|
170
|
+
CONFIRM_DELETE: 'Are you sure you want to delete this item?',
|
|
171
|
+
NETWORK_ERROR: 'Network error. Please check your connection.',
|
|
172
|
+
SERVER_ERROR: 'Server error. Please try again later.',
|
|
173
|
+
UNKNOWN_ERROR: 'An unknown error occurred.',
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
// MARK: - Accessibility Strings
|
|
177
|
+
static readonly ACCESSIBILITY = {
|
|
178
|
+
LOGIN_BUTTON: 'Login button',
|
|
179
|
+
SIGNUP_BUTTON: 'Sign up button',
|
|
180
|
+
EMAIL_INPUT: 'Email input field',
|
|
181
|
+
PASSWORD_INPUT: 'Password input field',
|
|
182
|
+
FORGOT_PASSWORD_LINK: 'Forgot password link',
|
|
183
|
+
MENU_BUTTON: 'Menu button',
|
|
184
|
+
BACK_BUTTON: 'Back button',
|
|
185
|
+
CLOSE_BUTTON: 'Close button',
|
|
186
|
+
};
|
|
187
|
+
static readonly Teams = {
|
|
188
|
+
TEAMS: 'Teams',
|
|
189
|
+
JOIN_TEAM_SUBTITLE: 'Join Team',
|
|
190
|
+
PENDING_REQUEST: 'Pending Request',
|
|
191
|
+
MY_TEAMS_SECTION_TITLE: 'MY TEAMS',
|
|
192
|
+
SEARCH_AND_JOIN_TEAM:'Search and join team to explore the events, matches, and activities and more.',
|
|
193
|
+
UNIQUE_CODE_AND_CLUB_NAME:'Unique code and club name',
|
|
194
|
+
SEARCH_BY_TEAM_NAME:'Search by team name'
|
|
195
|
+
};
|
|
196
|
+
static readonly Announcements = {
|
|
197
|
+
ANNOUNCEMENTS: 'Announcements'
|
|
198
|
+
};
|
|
199
|
+
static readonly VolunteerOpportunities = {
|
|
200
|
+
VOLUNTEER_OPPORTUNITIES: 'Volunteer Opportunities',
|
|
201
|
+
TOTAL_HOURS: "Total Hours",
|
|
202
|
+
HOURS: " Hours",
|
|
203
|
+
NEXT_SHIFT: "Next Shift",
|
|
204
|
+
THIS_MONTH: "This Month",
|
|
205
|
+
VIEW_MORE_DETAILS: "View Details",
|
|
206
|
+
};
|
|
207
|
+
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
// Default export
|
|
211
|
+
export default Strings;
|