|
1 | 1 | import React from 'react'; |
2 | | -import { Award, BookOpen, Star, TrendingUp, Calendar, Target } from 'lucide-react'; |
| 2 | +import { BookOpen, Star, TrendingUp, Calendar, Target } from 'lucide-react'; |
| 3 | +import { BadgeIcon, type BadgeKey } from "../BadgeIcon"; |
3 | 4 |
|
4 | 5 | export const Profile: React.FC = () => { |
5 | 6 | const completedChallenges = [ |
@@ -39,13 +40,13 @@ export const Profile: React.FC = () => { |
39 | 40 | { label: 'Avg Rating', value: '4.6', icon: Star, color: 'text-yellow-600 bg-yellow-100 dark:text-yellow-400 dark:bg-yellow-900' } |
40 | 41 | ]; |
41 | 42 |
|
42 | | - const achievements = [ |
43 | | - { title: 'First Challenge', description: 'Completed your first challenge', earned: true }, |
44 | | - { title: 'Design Master', description: 'Completed 10 design challenges', earned: true }, |
45 | | - { title: 'Code Warrior', description: 'Completed 10 development challenges', earned: true }, |
46 | | - { title: 'Community Helper', description: 'Provided feedback on 25 submissions', earned: false }, |
47 | | - { title: 'Streak Master', description: 'Completed challenges for 7 days straight', earned: false }, |
48 | | - { title: 'All Rounder', description: 'Completed challenges in all domains', earned: false } |
| 43 | + const achievements: Array<{ key: BadgeKey; title: string; description: string; earned: boolean }> = [ |
| 44 | + { key: 'first-challenge', title: 'First Challenge', description: 'Completed your first challenge', earned: true }, |
| 45 | + { key: 'design-master', title: 'Design Master', description: 'Completed 10 design challenges', earned: true }, |
| 46 | + { key: 'code-warrior', title: 'Code Warrior', description: 'Completed 10 development challenges', earned: true }, |
| 47 | + { key: 'community-helper', title: 'Community Helper', description: 'Provided feedback on 25 submissions', earned: false }, |
| 48 | + { key: 'streak-master', title: 'Streak Master', description: 'Completed challenges for 7 days straight', earned: false }, |
| 49 | + { key: 'all-rounder', title: 'All Rounder', description: 'Completed challenges in all domains', earned: false }, |
49 | 50 | ]; |
50 | 51 |
|
51 | 52 | return ( |
@@ -154,14 +155,19 @@ export const Profile: React.FC = () => { |
154 | 155 | <h3 className="text-lg font-semibold text-gray-900 dark:text-white mb-4">Achievements</h3> |
155 | 156 | <div className="space-y-3"> |
156 | 157 | {achievements.map((achievement, index) => ( |
157 | | - <div key={index} className={`flex items-center space-x-3 p-3 rounded-lg ${ |
158 | | - achievement.earned ? 'bg-green-50 dark:bg-green-950 border border-green-200 dark:border-green-800' : 'bg-gray-50 dark:bg-gray-700 border border-gray-200 dark:border-gray-600' |
159 | | - }`}> |
160 | | - <div className={`w-8 h-8 rounded-full flex items-center justify-center ${ |
161 | | - achievement.earned ? 'bg-green-500 text-white' : 'bg-gray-300 dark:bg-gray-600 text-gray-500 dark:text-gray-400' |
162 | | - }`}> |
163 | | - <Award className="h-4 w-4" /> |
| 158 | + <div |
| 159 | + key={index} |
| 160 | + className={`flex items-start gap-2 p-3 rounded-lg ${ |
| 161 | + achievement.earned |
| 162 | + ? 'bg-green-50 dark:bg-green-950 border border-green-200 dark:border-green-800' |
| 163 | + : 'bg-gray-50 dark:bg-gray-700 border border-gray-200 dark:border-gray-600' |
| 164 | + }`} |
| 165 | + > |
| 166 | + {/* Icon inherits current text color for light/dark */} |
| 167 | + <div className={`${achievement.earned ? 'text-green-900 dark:text-green-300' : 'text-gray-700 dark:text-gray-300'}`}> |
| 168 | + <BadgeIcon kind={achievement.key} className="h-4 w-4 mt-0.5" /> |
164 | 169 | </div> |
| 170 | + |
165 | 171 | <div className="flex-1"> |
166 | 172 | <p className={`text-sm font-medium ${achievement.earned ? 'text-green-900 dark:text-green-300' : 'text-gray-700 dark:text-gray-300'}`}> |
167 | 173 | {achievement.title} |
@@ -192,8 +198,8 @@ export const Profile: React.FC = () => { |
192 | 198 | <span className="text-sm text-gray-500 dark:text-gray-400">{item.completed}</span> |
193 | 199 | </div> |
194 | 200 | <div className="w-full bg-gray-200 dark:bg-gray-700 rounded-full h-2"> |
195 | | - <div |
196 | | - className={`${item.color} h-2 rounded-full`} |
| 201 | + <div |
| 202 | + className={`${item.color} h-2 rounded-full`} |
197 | 203 | style={{ width: `${(item.completed / 10) * 100}%` }} |
198 | 204 | ></div> |
199 | 205 | </div> |
|
0 commit comments