Files
Mangarr/templates/base.html.twig
ext.jeremy.guillot@maxicoffee.domains c085c3453a
All checks were successful
Deploy / deploy (push) Successful in 3m32s
feat: Vue SPA as default interface at root URL
- Route `/` now serves the Vue SPA directly (catch-all `/{req}`)
- Legacy Twig interface moved to `/legacy`
- Vue Router base changed from `/vue/` to `/`

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-11 20:06:02 +01:00

87 lines
5.1 KiB
Twig

<!DOCTYPE html>
<html lang="" class="h-full">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<title>{% block title %}Mangarr{% endblock %}</title>
<link rel="icon"
href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 128 128%22><text y=%221.2em%22 font-size=%2296%22>⚫️</text></svg>">
{% block stylesheets %}
{{ encore_entry_link_tags('app') }}
{% endblock %}
{% block javascripts %}
{{ encore_entry_script_tags('app') }}
{# {{ encore_entry_script_tags('turbo') }} #}
{% endblock %}
<meta name="turbo-refresh-scroll" content="preserve">
</head>
<body class="bg-gray-50 h-full overflow-hidden" data-controller="menu">
<div data-controller="mercure" data-mercure-topic="notification"></div>
<div data-controller="alert" class="fixed right-0 z-[60] flex justify-center w-full">
<div data-alert-target="alert" style="display: none;"
class="mt-8 max-w-fit p-4 rounded-lg shadow-lg text-white border-2 border-gray-200 transition-opacity duration-1000 ease-out">
<i data-alert-target="icon" class="fa text-xl mr-2"></i>
<span data-alert-target="message"></span>
</div>
</div>
<!-- Header -->
<header class="bg-green-600 h-16 flex items-center fixed w-full z-50">
<div class="flex justify-center ml-4">
<a class="flex flex-row justify-start" href="{{ path('app_legacy') }}">
{# <div class="flex items-center"> #}
{# <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" #}
{# x="0px" y="0px" width="50" height="50" viewBox="-40 -90 500 500"> #}
{# <path cx="100" cy="100" r="150" fill="white" stroke="green" stroke-width="15" #}
{# d="M448 160A240 240 0 0 1 208 400A240 240 0 0 1 -32 160A240 240 0 0 1 448 160z"/> #}
{# <g transform="translate(28, -15) scale(0.9)"> #}
{# <g> #}
{# <path style="fill:#16A34A; stroke:black; stroke-width:3;" #}
{# d="M68.955 285.752c45.294 0.882 84.544 7.654 113.51 19.587a4.037 4.037 0 0 0 5.571 -3.73l0.016 -216.52a4.032 4.032 0 0 0 -2.544 -3.749L70.525 35.586a4.032 4.032 0 0 0 -5.525 3.749v242.384a4.032 4.032 0 0 0 3.955 4.034"/> #}
{# <path style="fill:green; stroke:black; stroke-width:3;" #}
{# d="M398.374 74.04a4.048 4.048 0 0 0 -3.565 -0.63l-40.667 12.158a4.032 4.032 0 0 0 -2.88 3.864v209.165s0.181 3.299 -3.293 3.299h-6.592c-32.806 0 -93.773 3.405 -133.496 26.213l-7.883 4.514 -7.883 -4.514c-39.723 -22.806 -100.688 -26.213 -133.496 -26.213H50.208c-1.568 0 -1.472 -1.885 -1.472 -1.883V89.434a4.032 4.032 0 0 0 -2.878 -3.864L5.189 73.411A4.032 4.032 0 0 0 0 77.274V330.336c0 1.138 0.482 2.224 1.325 2.99a4.032 4.032 0 0 0 3.104 1.026c12.086 -1.186 30.984 -2.597 52.363 -2.597 46.957 0 84.691 6.858 109.146 19.837 3.592 1.885 24.422 13.109 34.064 13.109s30.47 -11.224 34.062 -13.109c24.454 -12.979 62.19 -19.837 109.146 -19.837 21.378 0 40.275 1.411 52.362 2.597a4.032 4.032 0 0 0 4.429 -4.014V77.274a4.048 4.048 0 0 0 -1.626 -3.234"/> #}
{# <path style="fill:#16A34A; stroke:black; stroke-width:3;" #}
{# d="M213.75 304.962a4.048 4.048 0 0 0 3.782 0.378c28.965 -11.933 68.216 -18.707 113.51 -19.587a4.032 4.032 0 0 0 3.957 -4.032V39.334a4.032 4.032 0 0 0 -5.525 -3.749l-114.986 45.755a4.032 4.032 0 0 0 -2.542 3.749l0.016 216.52a4.032 4.032 0 0 0 1.789 3.352"/> #}
{# </g> #}
{# </g> #}
{# </svg> #}
{# </div> #}
<img src="{{ asset('img/mangarr_logo.png') }}" alt="Mangarr" class="w-32 shadow-xl">
</a>
</div>
<button data-action="click->menu#toggleMenu" class="ml-4 text-white p-2 md:hidden">
<i class="fas fa-bars"></i>
</button>
<div class="ml-4 w-60 relative">
<twig:Search/>
</div>
</header>
<!-- Main content area -->
<div class="flex h-full pt-16">
<!-- Sidebar -->
<nav data-menu-target="sidebar"
class="w-60 bg-white h-full overflow-y-auto fixed left-0 transform -translate-x-full transition-transform duration-200 ease-in-out md:translate-x-0 z-40">
{% include 'menu/menu.html.twig' %}
</nav>
<!-- Main content -->
<main class="flex-1 flex flex-col overflow-hidden md:ml-60 w-full">
<!-- Toolbar -->
<div class="bg-white shadow z-20 w-full">
{% block toolbar %}
{% endblock %}
</div>
<!-- Scrollable content -->
<div class="flex-1 overflow-y-auto bg-gray-50 w-full">
{% block body %}
{% endblock %}
</div>
</main>
</div>
</body>
</html>