+
+
+ {path.weeks.length} weeks · {allIds.length} lessons ·{' '}
+ {Math.round(path.totalMinutes / 60)}h
+
+
+ {completedCount}/{allIds.length} done
+
+
+
+ {path.weeks.map((week) => (
+
+
+
+ Week {week.index}
+
+ {week.title}
+
+
+ {week.lessons.map((lesson) => (
+
+ ))}
+
+
+ ))}
+
+ );
+}
diff --git a/packages/react/src/__tests__/ProgressTracker.test.tsx b/packages/react/src/__tests__/ProgressTracker.test.tsx
new file mode 100644
index 0000000..47b9e06
--- /dev/null
+++ b/packages/react/src/__tests__/ProgressTracker.test.tsx
@@ -0,0 +1,67 @@
+import { render, screen, fireEvent } from '@testing-library/react';
+import { describe, expect, it, beforeEach } from 'vitest';
+import type { LearningPathInput } from '@learnkit-ai/schemas';
+import { ProgressTracker } from '../ProgressTracker';
+
+const INPUT: LearningPathInput = {
+ role: 'Software Engineer',
+ tools: ['Claude'],
+ goal: 'Ship an AI code review tool',
+ level: 'beginner',
+};
+
+beforeEach(() => {
+ localStorage.clear();
+});
+
+describe('ProgressTracker', () => {
+ it('renders 4 week headings', () => {
+ render(