| 
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