@@ -242,23 +242,26 @@ export function TaskCard({ task, index, lessonId, courseSlug, userProgress }: Ta
242242 setShowSolution ( false )
243243 }
244244
245+ /** Match feedback banner tones: bg-green/red-50 + dark:bg-*-900/20 + readable text (not neon fills). */
245246 const getOptionClassName = ( optionText : string ) => {
246- if ( ! hasChecked ) return 'border-gray-300 hover:bg-[var(--block-bg)] cursor-pointer'
247-
247+ if ( ! hasChecked ) {
248+ return 'border-gray-300 hover:bg-[var(--block-bg)] cursor-pointer dark:border-gray-600'
249+ }
250+
248251 const isSelected = selectedAnswer === optionText
249252 const isCorrectOption = optionText === task . correctAnswer
250-
253+
251254 if ( isSelected && isCorrect ) {
252- return 'border-green-500 bg-green-50 text-green-900'
255+ return 'border-green-500 bg-green-50 text-green-900 dark:border-green-600 dark:bg-green-900/20 dark:text-green-100 '
253256 }
254257 if ( isSelected && ! isCorrect ) {
255- return 'border-red-500 bg-red-50 text-red-900'
258+ return 'border-red-500 bg-red-50 text-red-900 dark:border-red-600 dark:bg-red-900/20 dark:text-red-100 '
256259 }
257260 if ( showSolution && isCorrectOption ) {
258- return 'border-green-500 bg-green-50 text-green-900'
261+ return 'border-green-500 bg-green-50 text-green-900 dark:border-green-600 dark:bg-green-900/20 dark:text-green-100 '
259262 }
260-
261- return 'border-gray-300 opacity-60'
263+
264+ return 'border-gray-300 opacity-60 dark:border-gray-600 '
262265 }
263266
264267 return (
@@ -300,16 +303,20 @@ export function TaskCard({ task, index, lessonId, courseSlug, userProgress }: Ta
300303 'flex items-center border-2 rounded-lg transition-all' ,
301304 ui . choiceRow ,
302305 getOptionClassName ( choice . text ) ,
303- ! hasChecked && 'hover:border-blue-300'
306+ ! hasChecked && 'hover:border-blue-300 dark:hover:border-blue-500 '
304307 ) }
305308 onClick = { ( ) => ! hasChecked && setSelectedAnswer ( choice . text ) }
306309 >
307310 < div className = { cn (
308311 'rounded-full border-2 flex items-center justify-center font-semibold shrink-0' ,
309312 ui . radioCircle ,
310- selectedAnswer === choice . text && ! hasChecked && 'border-blue-500 bg-blue-50' ,
311- selectedAnswer === choice . text && isCorrect && 'border-green-600 bg-green-500 text-white' ,
312- selectedAnswer === choice . text && isCorrect === false && 'border-red-600 bg-red-500 text-white'
313+ selectedAnswer === choice . text && ! hasChecked && 'border-blue-500 bg-blue-50 dark:border-blue-500 dark:bg-blue-950/40' ,
314+ selectedAnswer === choice . text &&
315+ isCorrect &&
316+ 'border-green-600 bg-green-50 text-green-700 dark:border-green-600 dark:bg-green-900/30 dark:text-green-200' ,
317+ selectedAnswer === choice . text &&
318+ isCorrect === false &&
319+ 'border-red-600 bg-red-50 text-red-700 dark:border-red-600 dark:bg-red-900/30 dark:text-red-200'
313320 ) } >
314321 { selectedAnswer === choice . text && hasChecked ? (
315322 isCorrect ? < CheckCircle className = { ui . feedbackIcon } /> : < XCircle className = { ui . feedbackIcon } />
@@ -333,16 +340,20 @@ export function TaskCard({ task, index, lessonId, courseSlug, userProgress }: Ta
333340 'flex items-center border-2 rounded-lg transition-all' ,
334341 ui . choiceRow ,
335342 getOptionClassName ( value ) ,
336- ! hasChecked && 'hover:border-blue-300'
343+ ! hasChecked && 'hover:border-blue-300 dark:hover:border-blue-500 '
337344 ) }
338345 onClick = { ( ) => ! hasChecked && setSelectedAnswer ( value ) }
339346 >
340347 < div className = { cn (
341348 'rounded-full border-2 flex items-center justify-center shrink-0' ,
342349 ui . radioCircle ,
343- selectedAnswer === value && ! hasChecked && 'border-blue-500 bg-blue-50' ,
344- selectedAnswer === value && isCorrect && 'border-green-600 bg-green-500 text-white' ,
345- selectedAnswer === value && isCorrect === false && 'border-red-600 bg-red-500 text-white'
350+ selectedAnswer === value && ! hasChecked && 'border-blue-500 bg-blue-50 dark:border-blue-500 dark:bg-blue-950/40' ,
351+ selectedAnswer === value &&
352+ isCorrect &&
353+ 'border-green-600 bg-green-50 text-green-700 dark:border-green-600 dark:bg-green-900/30 dark:text-green-200' ,
354+ selectedAnswer === value &&
355+ isCorrect === false &&
356+ 'border-red-600 bg-red-50 text-red-700 dark:border-red-600 dark:bg-red-900/30 dark:text-red-200'
346357 ) } >
347358 { selectedAnswer === value && hasChecked ? (
348359 isCorrect ? < CheckCircle className = { ui . feedbackIcon } /> : < XCircle className = { ui . feedbackIcon } />
@@ -362,8 +373,12 @@ export function TaskCard({ task, index, lessonId, courseSlug, userProgress }: Ta
362373 'w-full border-2 rounded-lg p-3 focus:ring-2 focus:ring-blue-500 focus:border-blue-500 transition-all' ,
363374 ui . textareaMinH ,
364375 ui . sc . body ,
365- hasChecked && isCorrect === true && 'border-green-500 bg-green-50' ,
366- hasChecked && isCorrect === false && 'border-red-500 bg-red-50'
376+ hasChecked &&
377+ isCorrect === true &&
378+ 'border-green-500 bg-green-50 text-green-900 dark:border-green-600 dark:bg-green-900/20 dark:text-green-100' ,
379+ hasChecked &&
380+ isCorrect === false &&
381+ 'border-red-500 bg-red-50 text-red-900 dark:border-red-600 dark:bg-red-900/20 dark:text-red-100'
367382 ) }
368383 placeholder = "Type your answer..."
369384 value = { openAnswer }
0 commit comments