{#-
    A headed carousel/grid of cards.
    Expects: items, style, opts (card options), layout, cols, cols_md, cols_sm, head {title, icon, tone, sub, url}
    Optional: ranked (numbers items), badge ('episode' | 'chapter' | 'embed' adds a per-item badge), eager (first N load eagerly)
-#}
{%- import '@theme/partials/macros.twig' as bk -%}
{%- set carousel = layout == 'carousel' -%}
{%- set sid = uid('row') -%}
<section class="bk-container"{% if head.title|default('') %} aria-labelledby="{{ sid }}"{% endif %}{% if carousel %} x-data="mkRow"{% endif %}>
    {{ bk.section_head(head|merge({ id: sid, nav: carousel and items|length > cols })) }}
    <ul role="list" {{ bk.track(layout, cols, cols_md, cols_sm) }}>
        {%- for entry in items -%}
            {%- set extra = {} -%}
            {%- if ranked|default(false) %}{% set extra = extra|merge({ rank: loop.index }) %}{% endif -%}
            {%- if badge|default('') == 'episode' and entry.number is defined %}{% set extra = extra|merge({ badge: t('EP') ~ ' ' ~ entry.number }) %}{% endif -%}
            {%- if badge|default('') == 'chapter' and entry.chapters[0] is defined %}{% set extra = extra|merge({ badge: t('Ch.') ~ ' ' ~ entry.chapters[0].number }) %}{% endif -%}
            {%- if badge|default('') == 'embed' and entry.embed_id|default(null) %}{% set extra = extra|merge({ badge: entry.embed_id }) %}{% endif -%}
            {%- if loop.index <= eager|default(0) %}{% set extra = extra|merge({ eager: true }) %}{% endif -%}
            <li>{{ card(style, entry, opts|default({})|merge(extra)) }}</li>
        {%- endfor -%}
    </ul>
</section>
