Function
The module's lessons, each with its runtime; pass
ModuleSummary.lessonRuntimes straight through
A client island by necessity: completion and playback position live in
localStorage, which the server cannot read. Dropping this into a showcase
card keeps the card server-rendered — only the meter crosses to the client.
It renders nothing for a module with no completed lesson, and that is deliberate. Meters can only appear after hydration, so the first frame necessarily shows none; a meter drawn at zero in that frame would assert the learner has watched nothing, which may be false.
A finished module states that it is finished rather than leaving two equal
numbers to be compared — "17 / 17" is a reading exercise, "Lesson
completed" is an answer. The copy says lesson, not module: the
course-vocabulary capability fixes each term to one level, and a
Module is a "Lesson" to the learner.
It counts every lesson the module holds, not the bounded set the card's gallery previews, so a lesson finished outside the preview is not lost.
How many of a module's videos the learner has finished.