feat: replace the navigation with a dashboard and per-area boards

This commit is contained in:
fromme committed 2026-09-13 18:08:39 +02:00
1 parent d63df2cc1b
commit bce8f58be3
26 files changed
+810 -328

No files matched your search

+20 -30
View File
@@ -1,42 +1,32 @@
{% extends 'base.html.twig' %}
{#
The shell. Deliberately has no navigation: the dashboard at / is how you get anywhere, so the
only things up here are the way back to it and the way out. A booking board reached from a
tile links back with its own breadcrumb.
#}
{% block body %}
<div class="max-w-screen-2xl mx-auto px-4 lg:px-8 lg:grid lg:grid-cols-4 gap-8 py-8">
<div class="lg:col-span-4 flex items-center justify-between pb-4 lg:pb-0">
<a href="{{ path('app_dashboard') }}">
<div class="border-b border-gray-200">
<div class="max-w-screen-2xl mx-auto px-4 lg:px-8 h-16 flex items-center justify-between gap-4">
<a href="{{ path('app_dashboard') }}" class="shrink-0">
<img class="h-8 w-auto" src="{{ asset('images/logo_ep.svg') }}" alt="ephub">
</a>
<button type="button"
class="lg:hidden"
{{ stimulus_controller('mobilenav', [], [], { 'mobilenav': '#mobilenav' }) }}
{{ stimulus_action('mobilenav', 'trigger', null, { 'mode': 'open' }) }}>
{{ ux_icon('lucide:menu', { class: 'w-8 h-8 text-gray-700' }) }}
</button>
</div>
<div class="hidden lg:block sticky top-0 h-screen">
{% include '_partials/_nav.html.twig' %}
</div>
<div class="lg:col-span-3">
{% block content %}{% endblock %}
{% if app.user %}
<div class="flex items-center gap-4">
<span class="hidden sm:block text-sm text-gray-500">{{ app.user.name }}</span>
<a href="{{ path('app_logout') }}"
class="flex items-center gap-2 text-sm font-semibold text-gray-700 hover:text-gray-900">
{{ ux_icon('lucide:log-out', { class: 'h-5 w-5 shrink-0 text-gray-400' }) }}
<span class="hidden sm:inline">Abmelden</span>
</a>
</div>
{% endif %}
</div>
</div>
<div id="mobilenav"
class="fixed z-50 top-0 left-0 inset-0 pr-16 bg-black/70 -translate-x-full"
{{ stimulus_controller('mobilenav', [], { 'closed': '-translate-x-full' }, { 'mobilenav': '#mobilenav' }) }}>
<div class="h-screen w-full bg-white">
<div class="flex justify-between p-8">
<img class="h-8 w-auto" src="{{ asset('images/logo_ep.svg') }}" alt="">
<button type="button" {{ stimulus_action('mobilenav', 'trigger', null, { 'mode': 'close' }) }}>
{{ ux_icon('lucide:x', { class: 'w-8 h-8' }) }}
</button>
</div>
<div class="w-full h-full p-8 pt-0 overflow-y-scroll">
{% include '_partials/_nav.html.twig' %}
</div>
</div>
<div class="max-w-screen-2xl mx-auto px-4 lg:px-8 py-8">
{% block content %}{% endblock %}
</div>
{# Swapped out of band after a booking, hence the stable id and the conditional attribute. #}