{% extends "management/base.html" %} {% load i18n lucide ui %} {% comment %} A club's own self-service identity/branding editor -- see management/forms.py's ClubSettingsForm for exactly which fields are editable here versus platform-staff-only (slug, seasons). D9 "Club identity & branding" in the design handoff is the reference, followed closely for the Colours card (merged swatch+hex row, side-by-side contrast-check boxes) and the Logo card (dashed drop zone) -- markup pulled straight from the design canvas (RosterChief Platform.dc.html), not the prose summary. The live preview has two tabs rather than D9's three: App and Website are merged into one (they were always shown together anyway, and the mobile app isn't built yet -- the phone mock is the same colours applied ahead of it existing); Email is real and functional, a generic sample shaped like the actual branded emails this app sends (club/templates/club/email/*.html, members/.../claim_approved.html), not a preview of any one specific message. The colour math (content colour, contrast ratio) mirrors Club._content_color_for exactly, so what's shown is the real number the server computes on save, not an approximation. {% endcomment %} {% block panel_title %}{% trans "Club identity" %}{% endblock panel_title %} {% block heading %}{% trans "Club identity" %}{% endblock heading %} {% block actions %} {% endblock actions %} {% block panel %}
{% csrf_token %} {% for error in form.non_field_errors %}
{% lucide "circle-x" size=18 %} {{ error }}
{% endfor %}
{% lucide "building-2" size=16 %} {% trans "Club" %}
{% form_field form.name %} {% form_field form.legal_name %} {% form_field form.contact_email %} {% form_field form.website %}
{% lucide "palette" size=16 %} {% trans "Colours" %}
{% trans "Accents only" %}
{{ form.primary_color.label|capfirst }}
{% if form.primary_color.errors %}

{{ form.primary_color.errors|join:" " }}

{% endif %}
{{ form.secondary_color.label|capfirst }}
{% if form.secondary_color.errors %}

{{ form.secondary_color.errors|join:" " }}

{% endif %}
{% trans "Contrast check" %}
{% lucide "image" size=16 %} {% trans "Logo" %}
{% trans "Crest" %}
{% if club.logo %} {% else %} {{ club.initials }} {% endif %}
{% form_field form.logo %}
{% lucide "eye" size=16 %} {% trans "Live preview" %}
{{ club.initials|default:"CL" }} {{ club.name|default:_("Your club") }}
{% trans "Member" %} {% trans "Coach" %}
{# A notice, not a call to action -- primary (chrome), not secondary (accent), so it doesn't visually compete with an actual button. #}
{% trans "Next up" %}
{% trans "U16 vs Leuven" %}
{{ club.initials|default:"CL" }} {{ club.name|default:_("Your club") }} {% trans "Teams · Club" %} {% trans "Join" %}
{% trans "#Fear the Sharks" %}
{% trans "Where the brand shows up" %}
  • {% trans "Sidebar, active nav item, primary buttons" %}
  • {% trans "Public site header and join button" %}
  • {% trans "Mobile app header and highlights" %}
  • {% trans "Transactional email crest and buttons" %}
  • {% trans "Never: status colours, tables, form fields" %}
{% endblock panel %} {% block extra_body %} {% endblock extra_body %}