home page initial ui implemented

This commit is contained in:
Sanidhya Kumar Verma
2024-08-30 12:18:27 +00:00
committed by GitHub
parent 7f0d38eb3c
commit b313417609
11 changed files with 379 additions and 13 deletions
+2 -2
View File
@@ -10,7 +10,7 @@ export async function POST(req: Request) {
error: "Missing required fields!",
},
{
status: 400,
status: 404,
},
);
}
@@ -33,6 +33,6 @@ export async function POST(req: Request) {
} catch (error) {
console.log(error);
return Response.json({ error });
return Response.json({ error }, { status: 500 });
}
}
+1 -1
View File
@@ -99,7 +99,7 @@ const SignIn = () => {
<Link
href="/sign-up"
className="text-lg text-center text-general-200 mt-10"
className="text-base text-center text-general-200 mt-10"
>
<Text>Don&apos;t have an account? </Text>
<Text className="text-primary-500">Sign up</Text>
+5 -3
View File
@@ -30,6 +30,8 @@ const SignUp = () => {
try {
await signUp.create({
firstName: form.name,
lastName: "",
emailAddress: form.email,
password: form.password,
});
@@ -121,7 +123,7 @@ const SignUp = () => {
name: value,
}))
}
autoCapitalize="sentences"
autoCapitalize="words"
/>
<InputField
@@ -162,7 +164,7 @@ const SignUp = () => {
<Link
href="/sign-in"
className="text-lg text-center text-general-200 mt-10"
className="text-base text-center text-general-200 mt-10"
>
<Text>Already have an account? </Text>
<Text className="text-primary-500">Sign in</Text>
@@ -228,7 +230,7 @@ const SignUp = () => {
</Text>
<Text className="text-base text-gray-400 font-Jakarta text-center mt-2">
You&apos;ve succesfully verified your accound.
You&apos;ve succesfully verified your account.
</Text>
<CustomButton
+194 -6
View File
@@ -1,15 +1,203 @@
import { SignedIn, useUser } from "@clerk/clerk-expo";
import { Text } from "react-native";
import { useUser } from "@clerk/clerk-expo";
import {
ActivityIndicator,
FlatList,
Image,
Text,
TouchableOpacity,
View,
} from "react-native";
import { SafeAreaView } from "react-native-safe-area-context";
import { GoogleTextInput } from "@/components/google-text-input";
import { Map } from "@/components/map";
import { RideCard } from "@/components/ride-card";
import { icons, images } from "@/constants";
const recentRides = [
{
ride_id: "1",
origin_address: "Kathmandu, Nepal",
destination_address: "Pokhara, Nepal",
origin_latitude: 27.717245,
origin_longitude: 85.323961,
destination_latitude: 28.209583,
destination_longitude: 83.985567,
ride_time: 391,
fare_price: 19500.0,
payment_status: "paid",
driver_id: 2,
user_id: "1",
user_email: "betatesteruserr@gmail.com",
created_at: "2024-08-12 05:19:20.620007",
driver: {
driver_id: "2",
first_name: "David",
last_name: "Brown",
profile_image_url:
"https://ucarecdn.com/6ea6d83d-ef1a-483f-9106-837a3a5b3f67/-/preview/1000x666/",
car_image_url:
"https://ucarecdn.com/a3872f80-c094-409c-82f8-c9ff38429327/-/preview/930x932/",
car_seats: 5,
rating: "4.60",
},
},
{
ride_id: "2",
origin_address: "Jalkot, MH",
destination_address: "Pune, Maharashtra, India",
origin_latitude: 18.609116,
origin_longitude: 77.165873,
destination_latitude: 18.52043,
destination_longitude: 73.856744,
ride_time: 491,
fare_price: 24500.0,
payment_status: "paid",
driver_id: 1,
user_id: "1",
user_email: "betatesteruserr@gmail.com",
created_at: "2024-08-12 06:12:17.683046",
driver: {
driver_id: "1",
first_name: "James",
last_name: "Wilson",
profile_image_url:
"https://ucarecdn.com/dae59f69-2c1f-48c3-a883-017bcf0f9950/-/preview/1000x666/",
car_image_url:
"https://ucarecdn.com/a2dc52b2-8bf7-4e49-9a36-3ffb5229ed02/-/preview/465x466/",
car_seats: 4,
rating: "4.80",
},
},
{
ride_id: "3",
origin_address: "Zagreb, Croatia",
destination_address: "Rijeka, Croatia",
origin_latitude: 45.815011,
origin_longitude: 15.981919,
destination_latitude: 45.327063,
destination_longitude: 14.442176,
ride_time: 124,
fare_price: 6200.0,
payment_status: "paid",
driver_id: 1,
user_id: "1",
user_email: "betatesteruserr@gmail.com",
created_at: "2024-08-12 08:49:01.809053",
driver: {
driver_id: "1",
first_name: "James",
last_name: "Wilson",
profile_image_url:
"https://ucarecdn.com/dae59f69-2c1f-48c3-a883-017bcf0f9950/-/preview/1000x666/",
car_image_url:
"https://ucarecdn.com/a2dc52b2-8bf7-4e49-9a36-3ffb5229ed02/-/preview/465x466/",
car_seats: 4,
rating: "4.80",
},
},
{
ride_id: "4",
origin_address: "Okayama, Japan",
destination_address: "Osaka, Japan",
origin_latitude: 34.655531,
origin_longitude: 133.919795,
destination_latitude: 34.693725,
destination_longitude: 135.502254,
ride_time: 159,
fare_price: 7900.0,
payment_status: "paid",
driver_id: 3,
user_id: "1",
user_email: "betatesteruserr@gmail.com",
created_at: "2024-08-12 18:43:54.297838",
driver: {
driver_id: "3",
first_name: "Michael",
last_name: "Johnson",
profile_image_url:
"https://ucarecdn.com/0330d85c-232e-4c30-bd04-e5e4d0e3d688/-/preview/826x822/",
car_image_url:
"https://ucarecdn.com/289764fb-55b6-4427-b1d1-f655987b4a14/-/preview/930x932/",
car_seats: 4,
rating: "4.70",
},
},
];
const Home = () => {
const { user } = useUser();
const isLoading = false;
const handleSignOut = () => {};
const handleDestinationPress = () => {};
return (
<SafeAreaView>
<SignedIn>
<Text>Hello {user?.emailAddresses[0].emailAddress}</Text>
</SignedIn>
<SafeAreaView className="bg-general-500">
<FlatList
data={recentRides?.slice(0, 5)}
renderItem={({ item }) => <RideCard ride={item} />}
className="px-5"
keyboardShouldPersistTaps="handled"
contentContainerStyle={{
paddingBottom: 100,
}}
ListEmptyComponent={() => (
<View className="flex flex-col items-center justify-center">
{!isLoading ? (
<>
<Image
source={images.noResult}
alt="No recent rides found"
className="w-40 h-40"
resizeMode="contain"
/>
<Text className="text-sm">No recent rides found.</Text>
</>
) : (
<ActivityIndicator size="small" color="#000" />
)}
</View>
)}
ListHeaderComponent={() => (
<>
<View className="flex flex-row items-center justify-between my-5">
<Text
className="text-base font-JakartaExtraBold"
numberOfLines={1}
>
Welcome{" "}
{user?.firstName || user?.emailAddresses[0].emailAddress} 👋
</Text>
<TouchableOpacity
onPress={handleSignOut}
className="justify-center items-center w-10 h-10 rounded-full bg-white"
>
<Image source={icons.out} className="w-4 h-4" alt="Logout" />
</TouchableOpacity>
</View>
<GoogleTextInput
icon={icons.search}
containerStyles="bg-white shadow-md shadow-neutral-300"
handlePress={handleDestinationPress}
/>
<Text className="text-xl font-JakartaBold mt-5 mb-3">
Your current location
</Text>
<View className="flex flex-row items-center bg-transparent h-[300px]">
<Map />
</View>
<Text className="text-xl font-JakartaBold mt-5 mb-3">
Recent Rides
</Text>
</>
)}
/>
</SafeAreaView>
);
};
+3
View File
@@ -2,6 +2,7 @@ import { ClerkProvider, ClerkLoaded } from "@clerk/clerk-expo";
import { useFonts } from "expo-font";
import { Stack } from "expo-router";
import * as SplashScreen from "expo-splash-screen";
import { StatusBar } from "expo-status-bar";
import { useEffect } from "react";
import "react-native-reanimated";
@@ -43,6 +44,8 @@ const RootLayout = () => {
<Stack.Screen name="(root)" options={{ headerShown: false }} />
<Stack.Screen name="(auth)" options={{ headerShown: false }} />
</Stack>
<StatusBar style="dark" />
</ClerkLoaded>
</ClerkProvider>
);