(() => { const { Card, Button, Badge, ProgressBar, StatusPill, StatCard, Icon, Avatar, DonutProgress } = window.TaskFlowDesignSystem_dd53c2; function UserDashboard({ meId = 1, tasks, onStart, onComplete, onResubmit, onComment, onProjectComment, commentCount, onRevisionDone, onViewEvidence, onToggleCheck, avatarSrc, range, variant = "full" , onTimeline }) { const bp = useBreakpoint(); const [doneNotes, setDoneNotes] = React.useState({}); const summary = variant === "summary"; const me = userById(meId); const scopedAll = range ? tasks.filter((t) => inRange(t.assigned, range.from, range.to)) : tasks; const mine = scopedAll.filter((t) => t.user === meId); const tints = ["teal", "coral", "mint", "gold"]; const avg = mine.length ? Math.round(mine.reduce((a, b) => a + (b.status === "done" ? 100 : b.progress), 0) / mine.length) : 0; const soon = mine.filter((t) => t.status !== "done").sort((a, b) => parseId(a.target) - parseId(b.target)).slice(0, 4); const lanes = [ ["To Do", "todo", "var(--neutral-400)"], ["In Progress", "in_progress", "var(--mint-500)"], ["On Verification", "on_verification", "var(--gold-500)"], ["Need Revision", "revision", "var(--coral-500)"], ["Accepted", "done", "var(--leaf-500)"], ]; return (
t.status === "in_progress").length} icon="loader" tone="mint" /> t.status === "on_verification").length} icon="shield-question" tone="gold" /> t.status === "revision").length} icon="rotate-ccw" tone="coral" /> t.status === "done").length} icon="shield-check" tone="leaf" />
{summary && (

Progress Saya

{mine.filter((t) => t.status === "done").length} dari {mine.length} task sudah diterima Direktur
{mine.filter((t) => t.status === "done").length} Accepted {mine.filter((t) => t.status === "in_progress").length} Berjalan {mine.filter((t) => t.status === "revision").length} Revisi

Rangkuman Status

{lanes.map(([label, key, color]) => { const n = mine.filter((t) => t.status === key).length; const pct = mine.length ? Math.round((n / mine.length) * 100) : 0; return (
{label} {n}
); })}

Deadline Terdekat

{soon.length === 0 && Semua task sudah selesai.} {soon.map((t) => (
{t.type} {t.target}
))}
)}

Active Task

{mine.slice(0, 3).map((t, i) => (
{t.type}
Progress{t.progress}%
))}
{tasks.filter((t) => t.delegate === meId && t.delegateStatus !== "done").length > 0 && (

Diminta Bantu Revisi

{tasks.filter((t) => t.delegate === meId && t.delegateStatus !== "done").length}
{tasks.filter((t) => t.delegate === meId && t.delegateStatus !== "done").map((t) => (
{t.type} Dikerjakan {userById(t.user).name}