{% macro render_pkgtile(package, show_author) -%}
	{% set meta = package.get_translated(load_desc=False) %}
	<li class="packagetile flex-fill"><a href="{{ package.get_url('packages.view') }}">
		<img src="{{ package.get_thumb_or_placeholder() }}" loading="lazy">
		<div class="packagegridscrub"></div>
		<div class="packagegridinfo">
			<h3>
				{{ meta.title }}

				{% if show_author %}<br />
					<small>{{ package.author.display_name }}</small>
				{% endif %}
				{% if not package.approved %}
					<span class="badge ms-1 {% if package.state == package.state.CHANGES_NEEDED %}bg-danger{% else %}bg-warning{% endif %}">
						{{ package.state.value }}
					</span>
				{% endif %}
			</h3>

			<p>
				{{ meta.short_desc }}
			</p>

			{% if not package.license.is_foss and not package.media_license.is_foss and package.type != package.type.TXP  %}
				<p style="color:#f33;">
					{{ _("<b>Warning:</b> Non-free code and media.") }}
				</p>
			{% elif not package.license.is_foss and package.type != package.type.TXP %}
				<p style="color:#f33;">
					{{ _("<b>Warning:</b> Non-free code.") }}
				</p>
			{% elif not package.media_license.is_foss %}
				<p style="color:#f33;">
					{{ _("<b>Warning:</b> Non-free media.") }}
				</p>
			{% endif %}
		</div>
	</a></li>
{% endmacro %}

{% macro render_pkggrid(packages, show_author=True) -%}
	<ul class="grid-300px gap-2 p-0">
		{% for p in packages %}
			{{ render_pkgtile(p, show_author) }}
		{% else %}
			<li class="packagetile"><i>{{ _("No packages available") }}</i></li>
		{% endfor %}
		{% if packages %}
			{% for i in range(4) %}
				<li class="packagetile flex-fill"></li>
			{% endfor %}
		{% endif %}
	</ul>
{% endmacro %}
