{% extends "management/base.html" %} {% load i18n lucide ui %} {% block heading %}{% trans "Sign-up" %}{% endblock heading %} {% block topbar_context %} {% if season %} {% blocktrans with start=season.start_date|date:"Y" end=season.end_date|date:"Y" %}Season {{ start }}-{{ end }}{% endblocktrans %} {% endif %} {% endblock topbar_context %} {% block actions %} {% if season %}
{% csrf_token %}
{% endif %} {% endblock actions %} {% block panel %} {% if not season %}
{% lucide "calendar-x" size=20 %} {% trans "No season covers today, so there is nothing to process sign-ups for." %}
{% else %}
{% for membership in memberships %} {# A plain border-left on a is unreliable under border-collapse (varies by browser, can get clipped by the card's rounded corner) -- an inset box-shadow paints the same accent bar without depending on table border behaviour at all. #} {# text-xs, not text-sm: IBM Plex Mono reads noticeably larger than Barlow at the same declared size, and "timesince" text (e.g. "2 weeks") is already the most visually busy string in the row. #} {% empty %} {% endfor %}
{% trans "Applicant" %} {% trans "Born" %} {% trans "Team" %} {% trans "Fee" %} {% trans "Checks" %} {% trans "Waiting" %}
{{ membership.member.first_name|slice:":1" }}{{ membership.member.last_name|slice:":1" }}
{{ membership.member.get_full_name }}
{% if membership.status == "pending" %}{% trans "Awaiting processing" %}{% else %}{{ membership.get_status_display }}{% endif %}
{{ membership.member.date_of_birth|date:"Y"|default:"—" }} {% if membership.teams_registered %} {% for team in membership.teams_registered %}{{ team.short_name }}{% if not forloop.last %}, {% endif %}{% endfor %} {% else %} {% trans "Not placed yet" %} {% endif %} {{ membership.get_fee_status_display }} {% if requirements_configured %} {% if membership.onboarding_open %}{% blocktrans count count=membership.onboarding_open %}{{ count }} open{% plural %}{{ count }} open{% endblocktrans %}{% else %}{% trans "Clean" %}{% endif %} {% else %} {% endif %} {% if membership.status == "pending" %}{{ membership.created|timesince }}{% else %}—{% endif %}
{% trans "No one is signed up for this season yet." %}
{% endif %} {% endblock panel %} {% block extra_body %} {% trans "Confirm" as confirm_label %} {% trans "Bypass" as bypass_label %} {% trans "Reopen" as reopen_label %} {% url 'management:signup_list' as signup_url %} {% for membership in memberships %}
{{ membership.member.first_name|slice:":1" }}{{ membership.member.last_name|slice:":1" }}
{{ membership.member.get_full_name }}
{% blocktrans with date=membership.created|date:"j M" %}Applied {{ date }}{% endblocktrans %}{% if membership.teams_registered %} · {% for team in membership.teams_registered %}{{ team.short_name }}{% if not forloop.last %}, {% endif %}{% endfor %}{% endif %}
{% if requirements_configured %}
{% trans "Checks" %}
{% for requirement, status in membership.checklist %}
{% if status.is_complete or status.is_bypassed %} {% lucide "check" size=13 %} {% else %} ! {% endif %} {{ requirement.name }} {% if status.is_bypassed %}({% trans "bypassed" %}){% endif %} {% if not status.is_complete and not status.is_bypassed %}
{% csrf_token %}
{% else %}
{% csrf_token %}
{% endif %}
{% if not status.is_complete and not status.is_bypassed %} {% endif %} {% empty %}

{% trans "This club has no onboarding requirements set up." %}

{% endfor %}
{% endif %}
{% trans "Place in" %}
{% for team in teams %}
{% csrf_token %}
{% empty %}

{% trans "This club has no teams set up yet." %}

{% endfor %}

{% trans "Rosters them immediately so the team's coach can see them -- position/number is the team's own call to set correctly later. They still won't be invited to (or selectable for) an event kind a blocking checklist item covers." %}

{% trans "Fee" %}
{{ membership.get_fee_status_display }} {% trans "Manage in Finance" %} →
{% csrf_token %}
{% endfor %} {% endblock extra_body %}