import { useState, type KeyboardEvent } from 'react'; import api from '../../api/client'; import styles from '../ExpertProfileTab.module.css'; interface SkillsSectionProps { skills: string[]; onUpdate: () => Promise; } export function SkillsSection({ skills, onUpdate }: SkillsSectionProps) { const [newSkill, setNewSkill] = useState(''); const [loading, setLoading] = useState(false); const [error, setError] = useState(''); const handleAdd = async () => { const skill = newSkill.trim(); if (!skill) return; if (skills.includes(skill)) { setError('Skill bereits vorhanden'); return; } setLoading(true); setError(''); try { await api.patch('/expert-profile/me/skills', { skills: [...skills, skill] }); setNewSkill(''); await onUpdate(); } catch { setError('Fehler beim Hinzufügen'); } finally { setLoading(false); } }; const handleRemove = async (skillToRemove: string) => { setLoading(true); setError(''); try { await api.patch('/expert-profile/me/skills', { skills: skills.filter((s) => s !== skillToRemove), }); await onUpdate(); } catch { setError('Fehler beim Entfernen'); } finally { setLoading(false); } }; const handleKeyDown = (e: KeyboardEvent) => { if (e.key === 'Enter') { e.preventDefault(); handleAdd(); } }; return (

Skills

setNewSkill(e.target.value)} onKeyDown={handleKeyDown} placeholder="Neuer Skill..." maxLength={100} disabled={loading} />
{error &&
{error}
} {skills.length > 0 ? (
{skills.map((skill) => ( {skill} ))}
) : (

Noch keine Skills hinzugefügt

)}
); }