From 470743e942b0acb75406b27e92dd89f3fa04198e Mon Sep 17 00:00:00 2001
From: Izan Gil <66965250+SrIzan10@users.noreply.github.com>
Date: Fri, 29 Nov 2024 18:18:13 +0100
Subject: [PATCH] feat: course card redesign
---
app/(app)/(tabs)/index.tsx | 22 ++++++++++------
lib/ui/components/CourseCard.tsx | 43 ++++++++++++++++++++++++++++++++
2 files changed, 57 insertions(+), 8 deletions(-)
create mode 100644 lib/ui/components/CourseCard.tsx
diff --git a/app/(app)/(tabs)/index.tsx b/app/(app)/(tabs)/index.tsx
index 5f39c75..b353dfe 100644
--- a/app/(app)/(tabs)/index.tsx
+++ b/app/(app)/(tabs)/index.tsx
@@ -1,13 +1,15 @@
-import { List, Surface, Text } from 'react-native-paper'
+import { useRouter } from 'expo-router'
+import React from 'react'
+import { Pressable } from 'react-native'
+import { Surface } from 'react-native-paper'
import { useCourses } from '@/lib/clients/classroom'
-import { View } from 'react-native'
-import React from 'react'
-import { Link } from 'expo-router'
+import CourseCard from '@/lib/ui/components/CourseCard'
import Loading from '@/lib/ui/components/Loading'
function TabsHome() {
const { data, isLoading } = useCourses()
+ const router = useRouter()
if (isLoading) {
return
@@ -15,11 +17,15 @@ function TabsHome() {
return (
- My Courses
{data?.courses.map((course) => (
-
- {course.name}
-
+ {
+ router.push(`/drawer/courses/${course.id}`)
+ }}
+ >
+
+
))}
)
diff --git a/lib/ui/components/CourseCard.tsx b/lib/ui/components/CourseCard.tsx
new file mode 100644
index 0000000..f2d4815
--- /dev/null
+++ b/lib/ui/components/CourseCard.tsx
@@ -0,0 +1,43 @@
+import type { classroom_v1 } from '@googleapis/classroom'
+import { View } from 'react-native'
+import { Card, Text } from 'react-native-paper'
+
+const COURSE_COLORS = [
+ 'bg-green-600',
+ 'bg-blue-600',
+ 'bg-yellow-500',
+ 'bg-red-600',
+ 'bg-pink-400',
+ 'bg-gray-500',
+]
+
+export default function CourseCard(course: classroom_v1.Schema$Course) {
+ const { name, section, courseState, id } = course
+ const colorIndex = parseInt(id || '0', 16) % COURSE_COLORS.length
+ const bannerColor = COURSE_COLORS[colorIndex]
+
+ return (
+
+
+
+ {name || 'Untitled Course'}
+
+
+
+
+ {section && (
+
+ {section}
+
+ )}
+ {courseState && courseState !== 'ACTIVE' && (
+
+
+ {courseState}
+
+
+ )}
+
+
+ )
+}