60 lines
2.2 KiB
HTML
60 lines
2.2 KiB
HTML
{# app/templates/admin/base.html #}
|
|
<!DOCTYPE html>
|
|
<html :class="{ 'theme-dark': dark }" x-data="{% block alpine_data %}data(){% endblock %}" lang="en">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>{% block title %}Admin Panel{% endblock %} - Multi-Tenant Platform</title>
|
|
|
|
<!-- Fonts -->
|
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet" />
|
|
|
|
<!-- Tailwind CSS -->
|
|
<link rel="stylesheet" href="{{ url_for('static', path='admin/css/tailwind.output.css') }}" />
|
|
|
|
<!-- Alpine Cloak -->
|
|
<style>
|
|
[x-cloak] { display: none !important; }
|
|
</style>
|
|
|
|
{% block extra_head %}{% endblock %}
|
|
</head>
|
|
<body x-cloak>
|
|
<div class="flex h-screen bg-gray-50 dark:bg-gray-900" :class="{ 'overflow-hidden': isSideMenuOpen }">
|
|
<!-- Sidebar (server-side included) -->
|
|
{% include 'partials/sidebar.html' %}
|
|
|
|
<div class="flex flex-col flex-1 w-full">
|
|
<!-- Header (server-side included) -->
|
|
{% include 'partials/header.html' %}
|
|
|
|
<!-- Main Content -->
|
|
<main class="h-full overflow-y-auto">
|
|
<div class="container px-6 mx-auto grid">
|
|
{% block content %}{% endblock %}
|
|
</div>
|
|
</main>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Core Scripts - Loaded in STRICT ORDER -->
|
|
|
|
<!-- 1. Icons FIRST (defines $icon magic) -->
|
|
<script src="{{ url_for('static', path='shared/js/icons.js') }}"></script>
|
|
|
|
<!-- 2. Base Alpine Data (defines sidebar/header state) -->
|
|
<script src="{{ url_for('static', path='admin/js/init-alpine.js') }}"></script>
|
|
|
|
<!-- 3. API Client -->
|
|
<script src="{{ url_for('static', path='shared/js/api-client.js') }}"></script>
|
|
|
|
<!-- 4. Utils -->
|
|
<script src="{{ url_for('static', path='shared/js/utils.js') }}"></script>
|
|
|
|
<!-- 5. Alpine.js v3 (deferred to allow DOM to load) -->
|
|
<script defer src="https://cdn.jsdelivr.net/npm/alpinejs@3.14.0/dist/cdn.min.js"></script>
|
|
|
|
<!-- 6. Page-specific scripts -->
|
|
{% block extra_scripts %}{% endblock %}
|
|
</body>
|
|
</html> |