{# The project list. Every value reaches the macros as a plain string and is escaped once; no `| safe` appears anywhere in this package on content a user or a model produced. #} {% extends "base.html" %} {% from "mirrorwall/components.html" import table, empty_state, button, input, badge %} {% block content %}

Projects

{% if projects %}
{% for project in projects %} {% endfor %}
Projects, most recently updated first
TitleTypeStatusUpdated
{{ project.title }} {{ project.content_type }} {{ badge(project.status, tone="neutral") }} {{ project.updated_at | timestamp }}
{% else %} {{ empty_state("No projects yet. Create one below to begin.") }} {% endif %}

{% if show_archived %}Hide archived{% else %}Show archived{% endif %}

New project

{{ input("title", "Title", required=True, hint="The slug is derived from this; it is never taken from your input directly.") }} {{ input("brief", "Brief", hint="One page. The requirement compiler reads this and nothing else.") }} {{ button("Create project", variant="primary", type="submit") }}
{% endblock %}