File size: 4,214 Bytes
50dca14
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
<!DOCTYPE html>
<html lang="en" data-theme="dark">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="WebScraper Platform — Professional web scraping with visual configuration, exports, and scheduling.">
    <title>{% block title %}WebScraper Platform{% endblock %}</title>
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
    <link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
    {% block extra_head %}{% endblock %}
</head>
<body>
    <!-- Navigation -->
    <nav class="navbar" id="main-nav">
        <div class="nav-container">
            <a href="{{ url_for('main.index') }}" class="nav-brand">
                <span class="brand-icon">🕷️</span>
                <span class="brand-text">WebScraper<span class="brand-accent">.pro</span></span>
            </a>
            <div class="nav-links" id="nav-links">
                <a href="{{ url_for('main.index') }}" class="nav-link {% if request.endpoint == 'main.index' %}active{% endif %}">
                    <svg class="nav-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/><polyline points="9 22 9 12 15 12 15 22"/></svg>
                    Dashboard
                </a>
                <a href="{{ url_for('jobs.list_view') }}" class="nav-link {% if request.endpoint and request.endpoint.startswith('jobs.') and request.endpoint != 'jobs.new_job' %}active{% endif %}">
                    <svg class="nav-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="7" width="20" height="14" rx="2" ry="2"/><path d="M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"/></svg>
                    Jobs
                </a>
                <a href="{{ url_for('jobs.new_job') }}" class="nav-link btn-nav-primary {% if request.endpoint == 'jobs.new_job' %}active{% endif %}">
                    <svg class="nav-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><line x1="12" y1="8" x2="12" y2="16"/><line x1="8" y1="12" x2="16" y2="12"/></svg>
                    New Scrape
                </a>
            </div>
            <button class="nav-toggle" id="nav-toggle" aria-label="Toggle navigation">
                <span></span><span></span><span></span>
            </button>
        </div>
    </nav>

    <!-- Flash Messages -->
    {% with messages = get_flashed_messages(with_categories=true) %}
    {% if messages %}
    <div class="toast-container" id="toast-container">
        {% for category, message in messages %}
        <div class="toast toast-{{ category }}" data-auto-dismiss="5000">
            <div class="toast-icon">
                {% if category == 'success' %}✓{% elif category == 'danger' or category == 'error' %}✕{% elif category == 'warning' %}⚠{% else %}ℹ{% endif %}
            </div>
            <div class="toast-body">{{ message }}</div>
            <button class="toast-close" onclick="this.parentElement.remove()">×</button>
        </div>
        {% endfor %}
    </div>
    {% endif %}
    {% endwith %}

    <!-- Main Content -->
    <main class="main-content">
        <div class="container">
            {% block content %}{% endblock %}
        </div>
    </main>

    <!-- Footer -->
    <footer class="footer">
        <div class="container footer-inner">
            <p class="footer-text">© 2026 WebScraper<span class="brand-accent">.pro</span> — Built with Flask & BeautifulSoup</p>
            <div class="footer-links">
                <a href="{{ url_for('main.health') }}" class="footer-link">Health</a>
                <a href="{{ url_for('main.metrics') }}" class="footer-link">Metrics</a>
            </div>
        </div>
    </footer>

    <script src="{{ url_for('static', filename='js/app.js') }}"></script>
    {% block extra_scripts %}{% endblock %}
</body>
</html>