// progress.jsx — Progress tab + Weekly Recap + Body Evolution const { useState: useStateP } = React; function Progress({ data, go }) { const [view, setView] = useStateP('main'); if (view === 'weekly') return setView('main')}/>; if (view === 'evolution') return setView('main')}/>; return ; } function Ring({ value, label, color, size = 64 }) { const r = size / 2 - 5, c = 2 * Math.PI * r; return (
{label}
); } function ProgressMain({ data, setView, go }) { return ( {/* today */}
TODAY
어깨 리셋 30초
Quest 완료
+10 XP
{data.streak}일
{/* health level */}
{data.level}
HEALTH LEVEL
Daily Mover
다음까지 80 XP
{['5일 연속 Quest', 'Recovery Quest 2회', 'Squat Setup Skill Unlock'].map((t, i) => (
{t}
))}
{/* this week */} setView('weekly')}>
THIS WEEK Recap 보기
{['월','화','수','목','금','토','일'].map((d, i) => (
{i < 4 && }
{d}
))}
{[['4 / 7일', '완료'], ['1회', 'Recovery'], ['1개', 'Skill']].map((s, i) => (
{s[0]}
{s[1]}
))}
{/* body check entry */} go('bodycheck')} style={{ cursor: 'pointer', display: 'flex', alignItems: 'center', gap: 14, marginBottom: 14 }}>
바디 체크
주간 자세 변화 보기
{/* body evolution teaser */} setView('evolution')} style={{ background: `linear-gradient(150deg, ${T.coralTint}, ${T.bg})`, marginBottom: 12 }}>
BODY EVOLUTION
{[['꾸준함', 0.7, T.coral], ['유연성', 0.5, T.amber], ['회복', 0.6, T.calm]].map((m, i) => (
{m[0]}
))}
); } function WeeklyRecap({ back }) { return (
이번 주 Fitbody
5 / 7일
완료한 Quest
{[['총 XP', '140', 'XP', T.coral, 'bolt'], ['가장 많이', 'Stretch', 'Quest', T.amberDark, 'leaf'], ['Recovery', '2', '일', T.calm, 'wind'], ['Skill', '1', '개 unlock', T.good, 'sparkle']].map((s, i) => (
{s[1]} {s[2]}
{s[0]}
))}
이번 주는 피곤한 날에도 회복 Quest로 루틴을 지켰어요. 다음 주는 조금 더 쉽게 이어가볼게요. 확인했어요
); } function BodyEvolution({ back }) { const axes = [['꾸준함', 0.7], ['유연성', 0.5], ['회복', 0.6], ['동작 스킬', 0.3]]; const [mounted, setMounted] = useStateP(false); React.useEffect(() => { const t = setTimeout(() => setMounted(true), 80); return () => clearTimeout(t); }, []); return (
5월 · 신체 변화

지난 30일 동안
몸 사용 패턴이 바뀌었어요

{axes.map((a, i) => (
{a[0]} {Math.round(a[1] * 100)}%
))}
“이번 달의 가장 큰 변화는 ‘완벽한 운동’이 아니라 ‘끊기지 않는 건강 행동’이에요.”
이번 달 마무리
); } Object.assign(window, { Progress });