refactor ciagl dalszy
This commit is contained in:
@@ -1,87 +1,87 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<html lang="en" data-theme="dark">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Error {{ error.code }}</title>
|
||||
<style>
|
||||
:root {
|
||||
--bg-color: #1a1a1a;
|
||||
--card-bg: #2d2d2d;
|
||||
--text-color: #e0e0e0;
|
||||
--accent: #007bff;
|
||||
--border-color: #404040;
|
||||
--error-color: #ff4444;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'Segoe UI', system-ui, sans-serif;
|
||||
background-color: var(--bg-color);
|
||||
color: var(--text-color);
|
||||
margin: 0;
|
||||
min-height: 100vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.error-container {
|
||||
max-width: 600px;
|
||||
padding: 40px;
|
||||
background: var(--card-bg);
|
||||
border-radius: 12px;
|
||||
border: 1px solid var(--border-color);
|
||||
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
h1 {
|
||||
color: var(--error-color);
|
||||
font-size: 3.5em;
|
||||
margin: 0 0 20px 0;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 1.2em;
|
||||
margin: 10px 0;
|
||||
color: #aaa;
|
||||
}
|
||||
|
||||
a {
|
||||
color: var(--accent);
|
||||
text-decoration: none;
|
||||
margin-top: 20px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.error-container {
|
||||
padding: 25px;
|
||||
margin: 15px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 2.5em;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 1em;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Error {{ error.code or 500 }}</title>
|
||||
<meta name="theme-color" content="#0f1115" />
|
||||
<link rel="preload" href="{{ url_for('static', filename='css/main.css') }}" as="style">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/main.css') }}">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="error-container">
|
||||
<h1>Error {{ error.code }}</h1>
|
||||
<p>{{ error.description }}</p>
|
||||
<a href="/">← Return to Home Page</a>
|
||||
</div>
|
||||
<header class="site-header">
|
||||
<div class="brand">
|
||||
<svg aria-hidden="true" width="24" height="24" viewBox="0 0 24 24">
|
||||
<path d="M4 4h16v4H4zM4 10h10v4H4zM4 16h16v4H4z" fill="currentColor" />
|
||||
</svg>
|
||||
<span>Hosts Converter</span>
|
||||
</div>
|
||||
<nav class="actions">
|
||||
<button class="btn ghost" type="button" data-action="toggle-theme" aria-label="Toggle theme">🌓</button>
|
||||
<a class="btn primary" href="/" rel="nofollow">Home</a>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main class="container">
|
||||
<section class="card error-card">
|
||||
<div class="error-hero">
|
||||
<div class="error-illustration" aria-hidden="true">⚠️</div>
|
||||
|
||||
<div class="error-main">
|
||||
<div class="status-badge">Error {{ error.code or 500 }}</div>
|
||||
<h1 class="error-title">
|
||||
{% if (error.code or 500) == 400 %}Bad request
|
||||
{% elif (error.code or 500) == 403 %}Forbidden
|
||||
{% elif (error.code or 500) == 404 %}Not found
|
||||
{% elif (error.code or 500) == 413 %}Payload too large
|
||||
{% elif (error.code or 500) == 415 %}Unsupported media type
|
||||
{% elif (error.code or 500) == 500 %}Internal server error
|
||||
{% else %}Something went wrong
|
||||
{% endif %}
|
||||
</h1>
|
||||
<p class="muted">{{ (error.description|string)|e }}</p>
|
||||
|
||||
<div class="error-actions">
|
||||
<button class="btn" type="button" data-action="try-again">Try again</button>
|
||||
<a class="btn outline" href="/" rel="nofollow">Go home</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<details class="error-details">
|
||||
<summary>
|
||||
<span class="summary-title">Error details</span>
|
||||
<span class="summary-hint">click to expand</span>
|
||||
</summary>
|
||||
<div class="details-body">
|
||||
<pre id="error-dump" class="mono">
|
||||
code: {{ error.code or 500 }}
|
||||
message: {{ (error.description|string) }}
|
||||
path: {{ request.path if request else '/' }}
|
||||
method: {{ request.method if request else 'GET' }}
|
||||
user_ip: {{ request.remote_addr if request else '' }}
|
||||
user_agent: {{ request.headers.get('User-Agent') if request else '' }}
|
||||
</pre>
|
||||
<div class="details-actions">
|
||||
<button class="btn tiny" type="button" data-action="copy-text"
|
||||
data-target="#error-dump">Copy</button>
|
||||
</div>
|
||||
</div>
|
||||
</details>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div>© 2025 <a href="https://www.linuxiarz.pl" target="_blank" rel="noopener">linuxiarz.pl</a></div>
|
||||
<div class="meta">Your IP: <strong>{{ request.remote_addr if request else '' }}</strong></div>
|
||||
</footer>
|
||||
|
||||
<div id="toast" role="status" aria-live="polite" aria-atomic="true"></div>
|
||||
|
||||
<script defer src="{{ url_for('static', filename='js/main.js') }}"></script>
|
||||
<script defer src="{{ url_for('static', filename='js/error.js') }}"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
</html>
|
Reference in New Issue
Block a user