import React, { useEffect, useState } from 'react'; import { blogWriterApi } from '../../services/blogWriterApi'; interface Props { sectionId: string; refreshToken?: number } export const ContinuityBadge: React.FC = ({ sectionId, refreshToken }) => { const [metrics, setMetrics] = useState | null>(null); const [hover, setHover] = useState(false); useEffect(() => { let mounted = true; blogWriterApi.getContinuity(sectionId) .then(res => { if (mounted) setMetrics(res.continuity_metrics || null); }) .catch(() => { /* ignore */ }); return () => { mounted = false; }; }, [sectionId, refreshToken]); if (!metrics) return null; const flow = Math.round(((metrics.flow || 0) * 100)); const color = flow >= 80 ? '#2e7d32' : flow >= 60 ? '#f9a825' : '#c62828'; const consistency = Math.round(((metrics.consistency || 0) * 100)); const progression = Math.round(((metrics.progression || 0) * 100)); return ( setHover(true)} onMouseLeave={() => setHover(false)} style={{ position: 'relative', display: 'inline-block' }} > Flow {flow}% {hover && (
Continuity
Flow{flow}%
Consistency{consistency}%
Progression{progression}%
)}
); }; export default ContinuityBadge;