@@ -19,7 +19,7 @@ interface Challenges {
1919const CheckMark = ( { isCompleted } : { isCompleted : boolean } ) =>
2020 isCompleted ? < GreenPass /> : < GreenNotCompleted /> ;
2121
22- const Challenge = ( { challenge } : { challenge : ExtendedChallenge } ) => (
22+ const ListChallenge = ( { challenge } : { challenge : ExtendedChallenge } ) => (
2323 < Link to = { challenge . fields . slug } >
2424 < span className = 'map-badge' >
2525 < CheckMark isCompleted = { challenge . isCompleted } />
@@ -28,7 +28,7 @@ const Challenge = ({ challenge }: { challenge: ExtendedChallenge }) => (
2828 </ Link >
2929) ;
3030
31- const Project = ( { challenge } : { challenge : ExtendedChallenge } ) => (
31+ const CertChallenge = ( { challenge } : { challenge : ExtendedChallenge } ) => (
3232 < Link to = { challenge . fields . slug } >
3333 { challenge . title }
3434 < span className = 'map-badge map-project-checkmark' >
@@ -37,6 +37,30 @@ const Project = ({ challenge }: { challenge: ExtendedChallenge }) => (
3737 </ Link >
3838) ;
3939
40+ // Step or Task challenge
41+ const GridChallenge = ( { challenge } : { challenge : ExtendedChallenge } ) => {
42+ const { t } = useTranslation ( ) ;
43+
44+ return (
45+ < Link
46+ to = { challenge . fields . slug }
47+ className = { `map-grid-item ${
48+ + challenge . isCompleted ? 'challenge-completed' : ''
49+ } `}
50+ >
51+ < span className = 'sr-only' >
52+ { challenge . superBlock === SuperBlocks . A2English
53+ ? t ( 'aria.task' )
54+ : t ( 'aria.step' ) }
55+ </ span >
56+ < span > { challenge . stepNumber } </ span >
57+ < span className = 'sr-only' >
58+ { challenge . isCompleted ? t ( 'icons.passed' ) : t ( 'icons.not-passed' ) }
59+ </ span >
60+ </ Link >
61+ ) ;
62+ } ;
63+
4064function Challenges ( {
4165 challenges,
4266 isProjectBlock,
@@ -89,29 +113,11 @@ function Challenges({
89113 >
90114 { ! isProjectBlock &&
91115 challenge . challengeType !== challengeTypes . dialogue ? (
92- // Step or Task challenge
93- < Link
94- to = { challenge . fields . slug }
95- className = { `map-grid-item ${
96- + challenge . isCompleted ? 'challenge-completed' : ''
97- } `}
98- >
99- < span className = 'sr-only' >
100- { challenge . superBlock === SuperBlocks . A2English
101- ? t ( 'aria.task' )
102- : t ( 'aria.step' ) }
103- </ span >
104- < span > { challenge . stepNumber } </ span >
105- < span className = 'sr-only' >
106- { challenge . isCompleted
107- ? t ( 'icons.passed' )
108- : t ( 'icons.not-passed' ) }
109- </ span >
110- </ Link >
116+ < GridChallenge challenge = { challenge } />
111117 ) : challenge . challengeType === challengeTypes . dialogue ? (
112- < Challenge challenge = { challenge } />
118+ < ListChallenge challenge = { challenge } />
113119 ) : (
114- < Project challenge = { challenge } />
120+ < CertChallenge challenge = { challenge } />
115121 ) }
116122 </ li >
117123 ) ) }
@@ -129,9 +135,9 @@ function Challenges({
129135 key = { 'map-challenge' + challenge . fields . slug }
130136 >
131137 { ! isProjectBlock ? (
132- < Challenge challenge = { challenge } />
138+ < ListChallenge challenge = { challenge } />
133139 ) : (
134- < Project challenge = { challenge } />
140+ < CertChallenge challenge = { challenge } />
135141 ) }
136142 </ li >
137143 ) ) }
0 commit comments