Untitled
const getAchievementIcon = (achievement) => { // First check for tier-specific trophies if (achievement.tier) { const baseSize = "w-8 h-8"; switch (achievement.tier) { case 'bronze': return <Trophy className={`${baseSize} text-amber-600`} />; case 'silver': return <Trophy className={`${baseSize} text-gray-400`} />; case 'gold': return <Trophy className={`${baseSize} text-yellow-400`} />; } } const name = achievement.name.toLowerCase(); const description = achievement.description.toLowerCase(); const baseSize = "w-8 h-8 text-primary"; // Specific achievement mappings (including translations) const iconMappings = { // English mappings 'seasonal master': <SunDim className={baseSize} />, 'saisonmeister': <SunDim className={baseSize} />, // German 'winter sorter': <Snowflake className={baseSize} />, 'wintersortierung': <Snowflake className={baseSize} />, // German 'monthly master': <Calendar className={baseSize} />, 'monatsmeister': <Calendar className={baseSize} />, // German 'paper specialist': <StickyNote className={baseSize} />, 'papierspezialist': <StickyNote className={baseSize} />, // German 'early bird': <Bird className={baseSize} />, 'frühaufsteher': <Bird className={baseSize} />, // German 'night owl': <Moon className={baseSize} />, 'nachteule': <Moon className={baseSize} />, // German 'weekend warrior': <CalendarRange className={baseSize} />, 'wochenendkrieger': <CalendarRange className={baseSize} />, // German 'summer sorter': <Sun className={baseSize} />, 'sommersortierung': <Sun className={baseSize} />, // German 'recycling specialist': <Recycle className={baseSize} />, 'recyclingspezialist': <Recycle className={baseSize} />, // German }; // Check for exact matches first for (const [key, icon] of Object.entries(iconMappings)) { if (name.includes(key)) { return icon; } } // Then check for general keyword matches if (name.includes('recycle') || description.includes('recycle') || name.includes('recycling') || description.includes('recycling')) { return <Recycle className={baseSize} />; } else if (name.includes('tree') || description.includes('tree') || name.includes('baum') || description.includes('baum')) { return <Trees className={baseSize} />; } else if (name.includes('streak') || description.includes('streak') || name.includes('serie') || description.includes('serie')) { return <Flame className={baseSize} />; } else if (name.includes('speed') || name.includes('fast') || name.includes('schnell') || name.includes('geschwindigkeit')) { return <Zap className={baseSize} />; } else if (name.includes('accurate') || name.includes('precision') || name.includes('genau') || name.includes('präzision')) { return <Target className={baseSize} />; } else if (name.includes('share') || description.includes('share') || name.includes('teilen') || description.includes('teilen')) { return <Share2 className={baseSize} />; } else if (name.includes('time') || description.includes('time') || name.includes('zeit') || description.includes('zeit')) { return <Timer className={baseSize} />; } else if ((name + description).includes('ai') || (name + description).includes('ki')) { return <Binary className={baseSize} />; } else if (name.includes('waste') || description.includes('waste') || name.includes('müll') || description.includes('müll')) { return <Trash2 className={baseSize} />; } else if (name.includes('balance') || description.includes('balance') || name.includes('ausgleich') || description.includes('ausgleich')) { return <Scale className={baseSize} />; } else if (name.includes('network') || description.includes('network') || name.includes('netzwerk') || description.includes('netzwerk')) { return <Network className={baseSize} />; } else if (name.includes('stats') || description.includes('statistics') || name.includes('statistik') || description.includes('statistiken')) { return <BarChart className={baseSize} />; } else if (name.includes('activity') || description.includes('activity') || name.includes('aktivität') || description.includes('aktivität')) { return <Activity className={baseSize} />; } else if (name.includes('eco') || description.includes('environment') || name.includes('öko') || description.includes('umwelt')) { return <Leaf className={baseSize} />; } // Default icon if no matches found return <Star className={baseSize} />; };
Leave a Comment