File size: 5,037 Bytes
e8a57cb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<!doctype html>
<html lang="en" data-bs-theme="dark">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>{% block title %}DocuPDF{% endblock %}</title>
    
    <!-- Bootstrap CSS -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
    <link href="https://cdn.jsdelivr.net/npm/tom-select@2.2.2/dist/css/tom-select.bootstrap5.min.css" rel="stylesheet">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
    
    <style>
        /* === UNIFIED DESIGN SYSTEM === */
        :root {
            --bg-dark: #212529;
            --bg-card: #2b3035;
            --bg-elevated: #343a40;
            --bg-hover: #3d444b;
            --border-subtle: #495057;
            --border-muted: #6c757d;
            --text-primary: #e9ecef;
            --text-muted: #adb5bd;
            --accent-primary: #0d6efd;
            --accent-info: #0dcaf0;
            --accent-success: #198754;
            --accent-warning: #ffc107;
            --accent-danger: #dc3545;
            --transition-fast: 0.15s ease;
            --transition-normal: 0.25s ease;
            --shadow-sm: 0 2px 4px rgba(0,0,0,0.3);
            --shadow-md: 0 4px 12px rgba(0,0,0,0.4);
        }

        /* Smooth Page Transitions */
        @keyframes fadeIn {
            from { opacity: 0; transform: translateY(8px); }
            to { opacity: 1; transform: translateY(0); }
        }
        .container, .container-fluid {
            animation: fadeIn 0.25s ease-out;
        }
    </style>
    
    {% block styles %}{% endblock %}
    {% block head %}{% endblock %}
</head>
<body>
    <!-- Simple Navbar -->
    <nav class="navbar navbar-expand-lg navbar-dark bg-dark sticky-top border-bottom border-secondary">
        <div class="container-fluid">
            <a class="navbar-brand" href="/dashboard">
                <i class="bi bi-file-earmark-pdf-fill me-2 text-primary"></i>DocuPDF
            </a>
            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="collapse navbar-collapse" id="navbarNav">
                <ul class="navbar-nav me-auto">
                    <li class="nav-item">
                        <a class="nav-link" href="/dashboard"><i class="bi bi-speedometer2 me-1"></i>Dashboard</a>
                    </li>
                    <li class="nav-item dropdown">
                        <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown">
                            <i class="bi bi-flask me-1"></i>Beta
                        </a>
                        <ul class="dropdown-menu">
                            <li><a class="dropdown-item" href="/beta/demo"><i class="bi bi-lightning-charge me-1"></i>Preact Demo</a></li>
                            <li><a class="dropdown-item" href="/beta/dashboard"><i class="bi bi-speedometer2 me-1"></i>Preact Dashboard</a></li>
                        </ul>
                    </li>
                </ul>
                <ul class="navbar-nav">
                    {% if current_user.is_authenticated %}
                    <li class="nav-item dropdown">
                        <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown">
                            <i class="bi bi-person-circle me-1"></i>{{ current_user.username }}
                        </a>
                        <ul class="dropdown-menu dropdown-menu-end">
                            <li><a class="dropdown-item" href="{{ url_for('auth.logout') }}">Logout</a></li>
                        </ul>
                    </li>
                    {% endif %}
                </ul>
            </div>
        </div>
    </nav>
    
    <div class="content-wrapper" style="min-height: calc(100vh - 56px);">
        {% block content %}{% endblock %}
    </div>
    
    <!-- Core Libraries -->
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/tom-select@2.2.2/dist/js/tom-select.complete.min.js"></script>
    
    <!-- Preact (No Build) -->
    <script type="module">
        import { h, render } from 'https://esm.sh/preact@10.19.3';
        import { useState, useEffect, useReducer, useCallback, useMemo, useRef } from 'https://esm.sh/preact@10.19.3/hooks';
        import htm from 'https://esm.sh/htm@3.1.1';

        // Make Preact available globally
        window.html = htm.bind(h);
        window.PreactLib = { h, render, useState, useEffect, useReducer, useCallback, useMemo, useRef };
    </script>
    
    {% block scripts %}{% endblock %}
</body>
</html>