import { useState } from 'react'; import axios from '../services/api'; const resultBox = { marginTop: '12px', padding: '12px 14px', background: 'var(--surface-2)', border: '1px solid var(--border)', borderRadius: '12px', display: 'flex', alignItems: 'center', gap: '10px', justifyContent: 'space-between', }; function getStrength(length, charsets) { const score = (charsets >= 3 ? 2 : charsets >= 2 ? 1 : 0) + (length >= 16 ? 2 : length >= 12 ? 1 : 0); if (score >= 4) return { label: 'Stark', color: '#22c55e' }; if (score >= 2) return { label: 'Mittel', color: '#f59e0b' }; return { label: 'Schwach', color: '#ef4444' }; } function PasswordGenTool() { const [length, setLength] = useState(16); const [uppercase, setUppercase] = useState(true); const [lowercase, setLowercase] = useState(true); const [numbers, setNumbers] = useState(true); const [symbols, setSymbols] = useState(false); const [result, setResult] = useState(''); const [copied, setCopied] = useState(false); const [error, setError] = useState(''); const charsets = [uppercase, lowercase, numbers, symbols].filter(Boolean).length; const strength = getStrength(length, charsets); const generate = async () => { setError(''); try { const res = await axios.post('/api/password/generate', { length, uppercase, lowercase, numbers, symbols }); setResult(res.data.password); } catch (err) { setError(err.response?.data?.message || 'Fehler beim Generieren'); } }; const copy = () => { navigator.clipboard.writeText(result); setCopied(true); setTimeout(() => setCopied(false), 1500); }; return (
{error}
} {result && (