1{% extends "base.html" %}
2
3{% block title %}Projects — td{% endblock %}
4
5{% block content %}
6<h1>Projects</h1>
7
8{% if projects.is_empty() %}
9<article class="card align-center">
10 <h2>No projects yet</h2>
11 <p class="text-light">Run <code>td project init <name></code> to create one.</p>
12</article>
13{% else %}
14<div class="container">
15 <div class="row">
16 {% for p in projects %}
17 <article class="card col-4">
18 {% match p %}
19 {% when ProjectCard::Ok { name, open, in_progress, closed, total } %}
20 <header>
21 <h2><a href="/projects/{{ name }}">{{ name }}</a></h2>
22 </header>
23 <div class="hstack gap-2">
24 <span class="badge">{{ open }} open</span>
25 <span class="badge secondary">{{ in_progress }} in progress</span>
26 <span class="badge success">{{ closed }} closed</span>
27 </div>
28 {% if *total > 0 %}
29 <progress value="{{ total - open - in_progress }}" max="{{ total }}" class="mt-2" aria-label="{{ closed }} of {{ total }} tasks closed in {{ name }}"></progress>
30 {% endif %}
31 {% when ProjectCard::Err { name, error } %}
32 <header class="hstack justify-between items-center">
33 <h2>{{ name }}</h2>
34 <span class="badge danger">error</span>
35 </header>
36 <p class="text-light">{{ error }}</p>
37 {% endmatch %}
38 </article>
39 {% endfor %}
40 </div>
41</div>
42{% endif %}
43{% endblock %}