{% load allauth %} {% comment %} Three branches because a Cotton attribute is always written out: `form=""` on a plain submit button would detach it from its form. `link` and `ghost` are attributes of the button, not variants, so their classes are written in `class`, where a tag can decide them. {% endcomment %} {% with tags=attrs.tags|default:"" %} {% if attrs.href %} {% slot %} {% endslot %} {% elif attrs.form %} {% slot %} {% endslot %} {% else %} {% slot %} {% endslot %} {% endif %} {% endwith %}