Function
Whether to render the visible heading; false when the shell provides one
The heading is pinned to the top of whatever scroll region the shell puts
the outline in. Both shells bound their height and scroll the current
lesson into view, which on a long course would carry the heading out of
sight and leave the sidebar visually unlabelled. Pinning costs nothing
when there is no scroll region — sticky is inert without one.
A shell whose own control already says "Course outline" — the mobile
drawer's <summary> — passes showHeading={false} so the words do not
appear twice. The <nav> keeps its aria-label either way, so the region
never loses its accessible name.
The heading's height is published as --outline-heading-offset so the
module titles below can pin themselves just under it. Keeping the value
here means the heading that causes the offset also owns it; when the
heading is not rendered the offset is zero.
The Course outline sidebar. Renders the course's modules and lessons in
sequenceorder with the current lesson indicated. The component itself does not own the responsive shell — the page chooses where the outline sits (sidebar on desktop, drawer on mobile).