79 lines
4.3 KiB
HTML
79 lines
4.3 KiB
HTML
{% load tailwind_cli %}<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>{% block title %}hamprint — public 3D print dashboard{% endblock %}</title>
|
|
{% tailwind_css %}
|
|
<style>
|
|
body { font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; }
|
|
.mono { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }
|
|
</style>
|
|
{% block extra_head %}{% endblock %}
|
|
</head>
|
|
<body class="min-h-screen bg-slate-50 text-slate-900">
|
|
|
|
<nav class="border-b border-slate-200 bg-white">
|
|
<div class="mx-auto max-w-6xl px-4 py-3 flex items-center justify-between">
|
|
<a href="/" class="flex items-center gap-2">
|
|
<span class="inline-grid place-items-center w-8 h-8 rounded-md bg-amber-500 text-white font-bold">h</span>
|
|
<span class="font-bold text-lg tracking-tight">hamprint</span>
|
|
<span class="hidden sm:inline text-xs text-slate-500 ml-1">· hamlab.lt</span>
|
|
</a>
|
|
<div class="flex items-center gap-1">
|
|
<a href="/" class="px-3 py-1.5 text-sm rounded-md {% if request.path == '/' %}text-slate-900 bg-slate-100 font-medium{% else %}text-slate-700 hover:bg-slate-100{% endif %}">Dashboard</a>
|
|
{% if user.is_authenticated %}
|
|
<a href="{% url 'dashboard:my_prints' %}" class="px-3 py-1.5 text-sm rounded-md {% if request.resolver_match.view_name == 'dashboard:my_prints' %}text-slate-900 bg-slate-100 font-medium{% else %}text-slate-700 hover:bg-slate-100{% endif %}">My prints</a>
|
|
{% endif %}
|
|
<a href="/submit/" class="px-3 py-1.5 text-sm rounded-md bg-amber-500 text-white hover:bg-amber-600 font-medium">+ Submit a print</a>
|
|
{% if user.is_authenticated %}
|
|
<div class="ml-2 flex items-center gap-2 px-2 py-1">
|
|
<span class="w-7 h-7 rounded-full bg-gradient-to-br from-emerald-400 to-blue-500 grid place-items-center text-white text-xs font-bold">{{ user.username|slice:":1"|upper }}</span>
|
|
<span class="text-sm text-slate-700 hidden sm:inline">{{ user.username }}</span>
|
|
<a href="{% url 'account_logout' %}" title="Sign out" aria-label="Sign out" class="ml-1 p-1 rounded-md text-slate-400 hover:text-slate-700 hover:bg-slate-100">
|
|
<svg class="w-4 h-4" fill="none" stroke="currentColor" stroke-width="1.75" viewBox="0 0 24 24" aria-hidden="true">
|
|
<path stroke-linecap="round" stroke-linejoin="round" d="M15.75 9V5.25A2.25 2.25 0 0 0 13.5 3h-6a2.25 2.25 0 0 0-2.25 2.25v13.5A2.25 2.25 0 0 0 7.5 21h6a2.25 2.25 0 0 0 2.25-2.25V15m3 0 3-3m0 0-3-3m3 3H9"/>
|
|
</svg>
|
|
</a>
|
|
</div>
|
|
{% else %}
|
|
<a href="{% url 'account_login' %}" class="px-3 py-1.5 text-sm rounded-md text-slate-700 hover:bg-slate-100">Sign in</a>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
|
|
<main class="mx-auto max-w-6xl px-4 py-8">
|
|
{% if messages %}
|
|
{% comment %}
|
|
One styled card per Django messages.add_message() call. The text is
|
|
rendered via {{ message|safe }} so that callers that built their
|
|
string with django.utils.html.format_html() can include <a>/<strong>
|
|
markup (variables are auto-escaped by format_html).
|
|
{% endcomment %}
|
|
<div class="mb-6 space-y-2">
|
|
{% for message in messages %}
|
|
<div class="px-4 py-3 rounded-md border text-sm
|
|
{% if 'success' in message.tags %}border-emerald-200 bg-emerald-50 text-emerald-900
|
|
{% elif 'error' in message.tags %}border-red-200 bg-red-50 text-red-900
|
|
{% elif 'warning' in message.tags %}border-amber-200 bg-amber-50 text-amber-900
|
|
{% else %}border-slate-200 bg-slate-50 text-slate-700{% endif %}">
|
|
{{ message|safe }}
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% block content %}{% endblock %}
|
|
</main>
|
|
|
|
<footer class="mt-12 border-t border-slate-200 bg-white">
|
|
<div class="mx-auto max-w-6xl px-4 py-6 flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 text-sm text-slate-500">
|
|
<p>A community service of <a href="https://hamlab.lt" class="font-medium text-slate-700 hover:underline">hamlab.lt</a>.</p>
|
|
{% if user.is_staff %}<p>Operators: <a href="{% url 'admin:index' %}" class="hover:underline">admin panel</a>.</p>{% endif %}
|
|
</div>
|
|
</footer>
|
|
|
|
</body>
|
|
</html>
|