{# Inline track navigation for doc pages following a learning-track path. Progress is persisted via enhancements/track-nav.js (localStorage). #} {% let current_slug = (page?.source_path ?? page?._path ?? '') | string | replace('.md', '') | replace('.html', '') %} {% if site?.data?.tracks %} {% for track_id, track in site.data.tracks | items %} {% if current_slug in track.items %} {% let track_items = track.items ?? [] %} {% let current_index = 0 %} {% for item_slug in track_items %} {% if item_slug == current_slug %} {% let current_index = loop.index0 %} {% end %} {% endfor %} {% let prev_slug = track_items[current_index - 1] if current_index > 0 else none %} {% let next_slug = track_items[current_index + 1] if current_index < (track_items | length - 1) else none %} {% let progress_pct = ((current_index + 1) / (track_items | length)) * 100 if track_items | length > 0 else 0 %}
{{ t('track.label', default='Track') }} {{ track.title }}
{{ current_index + 1 }} / {{ track_items | length }}
{% if prev_slug %} {% let prev_page = get_page(prev_slug) %} {% if prev_page %} ← {{ prev_page.title }} {% else %} ← {{ t('track.previous_missing', default='Previous (missing)') }} {% end %} {% else %} {{ t('track.start', default='Start of track') }} {% end %} {% if next_slug %} {% let next_page = get_page(next_slug) %} {% if next_page %} {{ next_page.title }} → {% else %} {{ t('track.next_missing', default='Next (missing)') }} → {% end %} {% else %} {{ t('track.finish', default='Finish track') }} ✓ {% end %}
{% end %} {% end %} {% end %}