{% extends "management/base.html" %} {% load i18n static lucide %} {% block heading %}{{ club.name }}{% endblock heading %} {% block subheading %}{% trans "Management" %}{% endblock subheading %} {% block panel %} {# Every level here; base.html repeats it on other pages only once it turns urgent. #} {% include "management/_billing_notice.html" %} {% if attention.no_season %}
{% lucide "calendar-x" size=20 %} {% trans "No season covers today, so this club cannot take a signup or schedule a match. Nothing errors — it is simply inert." %}
{% endif %} {% if is_club_admin and billing_ends_at %}
{% lucide "calendar-clock" size=20 %} {% if billing_auto_renews %} {% blocktrans with date=billing_ends_at|date:"j M Y" %}Your current billing period ends {{ date }} and will renew automatically.{% endblocktrans %} {% else %} {% blocktrans with date=billing_ends_at|date:"j M Y" %}Your current billing period ends {{ date }} and is not set to renew automatically — billing is about to stop. Contact us to keep access.{% endblocktrans %} {% endif %}
{% endif %} {% comment %} The club's own numbers that should be zero -- same attention/chart/stat-group data controlpanel/club_detail.html shows a platform admin drilling into this club from outside; club_attention/club_charts/club_statistics are already club-scoped, so this is that same data for the club's own staff. Nothing money-shaped renders below for non-admins, same line the nav already draws around the Shop section. {% endcomment %}
{% lucide "user-x" size=16 %} {% trans "Teams without coach" %}
{{ attention.teams_without_manager }}
{% trans "Teams nobody can pick a squad for" %}
{% lucide "user-minus" size=16 %} {% trans "Unrostered members" %}
{{ attention.unrostered }}
{% trans "Active members on no team" %}
{% lucide "clock" size=16 %} {% trans "Pending" %}
{{ attention.pending_approvals }}
{% trans "Memberships awaiting approval" %}
{% lucide "sparkles" size=16 %} {% trans "New members" %}
{{ attention.new_members }}
{% trans "First season at this club" %}
{% lucide "user-check" size=16 %} {% trans "Attendance rate" %}
{% if attention.attendance.turnout is None %} {% trans "N/A" %} {% else %} {{ attention.attendance.turnout }}% {% endif %}
{% if attention.attendance.turnout is None %} {% trans "No events this season" %} {% else %} {% endif %}

{% lucide "calendar" size=18 %} {% trans "Upcoming events" %}

{% lucide "arrow-right" size=14 %} {% trans "View all" %}
{% for event in upcoming_events %} {% empty %} {% endfor %}
{{ event.start|date:"D j M, H:i" }} {{ event.title }} {{ event.get_kind_display }} {% for team in event.teams.all %}{{ team.short_name }}{% if not forloop.last %}, {% endif %}{% empty %}—{% endfor %}
{% trans "Nothing scheduled." %}

{% lucide "newspaper" size=18 %} {% trans "News" %}

{% lucide "arrow-right" size=14 %} {% trans "View all" %}
{% for news_item in published_news %} {% empty %} {% endfor %}
{{ news_item.published_at|date:"D j M" }} {{ news_item.title }}
{% trans "Nothing published yet." %}
{% if is_club_admin %}

{% lucide "user-plus" size=18 %} {% trans "Signups per month" %}

{% trans "New members against returning ones." %}

{% lucide "wallet" size=18 %} {% trans "Club fee status this season" %}

{% lucide "repeat" size=18 %} {% trans "Renewal rate" %}

{% if attention.renewal_rate is None %}

{% trans "No previous season to compare." %}

{% else %}
{% endif %}
{% endif %}
{% for group in groups %} {% if group.title != "Shop" or is_club_admin %}

{% lucide group.icon size=18 %} {{ group.title }}

{% for label, value in group.stats %}
{{ label }}
{% if group.title == "Shop" and label == "Outstanding" or label == "Revenue" %}€{% endif %}{{ value }}
{% endfor %}
{% endif %} {% endfor %}
{% endblock panel %} {% block extra_body %} {% trans "New" as new_label %} {% trans "Returning" as returning_label %} {% trans "Renewed" as renewed_label %} {% trans "Not renewed" as not_renewed_label %} {{ charts|json_script:"chart-data" }} {{ attention.renewal_rate|json_script:"renewal-rate-data" }} {% endblock extra_body %}