Function
The lesson whose progress is being shown
A client island by necessity: the playback position lives in
localStorage, which the server cannot read. Dropping this into a Server
Component's row keeps that row server-rendered — only the bar itself
crosses to the client.
It renders nothing for a lesson with no progress, and that is deliberate. Bars can only appear after hydration, so the first frame necessarily shows none; a bar drawn at zero in that frame would assert the learner has watched nothing, which may be false. Absence is the neutral state, so hydration only ever adds a bar.
A reading lesson has no runtime and therefore no bar — its completion is carried by the mark alone.
The percentage is formatted through next-intl, so a locale that writes
40 % gets it.
How much of one video the learner has watched.