1
1
import React from 'react' ;
2
2
import { View , Text , StyleSheet , ScrollView , TouchableOpacity } from 'react-native' ;
3
3
import { useNavigation } from '@react-navigation/native' ;
4
+ import { RouteProp } from '@react-navigation/native' ;
4
5
5
- const EntryDetail = ( { route } ) => {
6
+ type EntryDetailParams = {
7
+ Entry : {
8
+ entry : {
9
+ title : string ;
10
+ categories : string [ ] ;
11
+ shortSummary : string ;
12
+ identifiedHardSkills : string [ ] ;
13
+ identifiedSoftSkills : string [ ] ;
14
+ reflection ?: string ;
15
+ } ;
16
+ } ;
17
+ } ;
18
+
19
+ const EntryDetail = ( { route } : { route : RouteProp < EntryDetailParams , 'Entry' > } ) => {
6
20
const { entry } = route . params ;
7
21
const navigation = useNavigation ( ) ;
8
22
@@ -16,7 +30,7 @@ const EntryDetail = ({ route }) => {
16
30
17
31
{ /* Categories */ }
18
32
< View style = { styles . categoriesContainer } >
19
- { entry . categories . map ( cat => (
33
+ { entry . categories . map ( ( cat : string ) => (
20
34
< Text key = { cat } style = { [ styles . categoryChip , { backgroundColor : getCategoryColor ( cat ) } ] } >
21
35
{ cat }
22
36
</ Text >
@@ -30,15 +44,15 @@ const EntryDetail = ({ route }) => {
30
44
{ /* Identified Hard Skills */ }
31
45
< Text style = { styles . sectionTitle } > Identified Hard Skills</ Text >
32
46
{ entry . identifiedHardSkills . length > 0 ? (
33
- entry . identifiedHardSkills . map ( skill => < Text key = { skill } style = { styles . listItem } > • { skill } </ Text > )
47
+ entry . identifiedHardSkills . map ( ( skill : string ) => < Text key = { skill } style = { styles . listItem } > • { skill } </ Text > )
34
48
) : (
35
49
< Text style = { styles . entryText } > No hard skills identified.</ Text >
36
50
) }
37
51
38
52
{ /* Identified Soft Skills */ }
39
53
< Text style = { styles . sectionTitle } > Identified Soft Skills</ Text >
40
54
{ entry . identifiedSoftSkills . length > 0 ? (
41
- entry . identifiedSoftSkills . map ( skill => < Text key = { skill } style = { styles . listItem } > • { skill } </ Text > )
55
+ entry . identifiedSoftSkills . map ( ( skill : string ) => < Text key = { skill } style = { styles . listItem } > • { skill } </ Text > )
42
56
) : (
43
57
< Text style = { styles . entryText } > No soft skills identified.</ Text >
44
58
) }
@@ -51,15 +65,17 @@ const EntryDetail = ({ route }) => {
51
65
} ;
52
66
53
67
// Helper function to match category colors
54
- export const getCategoryColor = ( category : string ) => {
68
+ const getCategoryColor = ( category : string ) => {
55
69
const CATEGORIES : Record < string , string > = {
56
70
Academic : '#FDE68A' ,
57
71
Personal : '#99E9F2' ,
58
72
Leadership : '#F8B4C0' ,
59
73
Research : '#BBF7D0' ,
60
74
Project : '#FDAF75' ,
61
75
} ;
62
- return CATEGORIES [ category ] || '#ccc' ;
76
+
77
+ // Check if the category is a valid key
78
+ return CATEGORIES [ category as keyof typeof CATEGORIES ] || '#ccc' ;
63
79
} ;
64
80
65
81
const styles = StyleSheet . create ( {
0 commit comments