Files
wrapped/app/templates/base.html
T
Sergey Antropoff 54749e5e12
devops-tools/wrapped/wrapped-build/pipeline/head This commit looks good
devops-tools/wrapped/wrapped-deploy/pipeline/head This commit looks good
Выпущен 0.1.4: N открытий, «доступно с», шаблоны, /verify и A2HS.
2026-07-29 20:27:51 +03:00

92 lines
6.2 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="ru" data-theme="dark">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>{% block title %}{{ title or "Wrapped" }}{% 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=IBM+Plex+Mono:wght@400;500;600&family=Outfit:wght@400;500;600;700&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="{{ static_url('css/app.css') }}" />
<link rel="icon" href="{{ static_url('favicon.svg') }}" type="image/svg+xml" />
<link rel="icon" href="{{ static_url('favicon.ico') }}" sizes="any" />
<link rel="apple-touch-icon" href="{{ static_url('apple-touch-icon.png') }}" />
<link rel="manifest" href="{{ static_url('manifest.webmanifest') }}" />
<meta name="theme-color" content="#0b1020" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.2/css/all.min.css" crossorigin="anonymous" referrerpolicy="no-referrer" />
<link id="hljs-theme-dark" rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.11.1/styles/github-dark.min.css" />
<link id="hljs-theme-light" rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.11.1/styles/github.min.css" disabled />
{% block head %}{% endblock %}
</head>
<body>
<div class="bg-grid" aria-hidden="true"></div>
<header class="topbar">
<a class="brand" href="/">
<span class="brand-mark" aria-hidden="true">
<i class="fa-solid fa-shield-halved"></i>
</span>
<span class="brand-text">
<span class="brand-name">Wrapped</span>
<span class="brand-tagline" data-i18n="brand.tagline">Упакуй. Отправь. Исчезни.</span>
</span>
</a>
<div class="top-actions">
<button type="button" class="icon-btn hidden" id="install-app" aria-describedby="install-app-tip">
<i class="fa-solid fa-mobile-screen-button" aria-hidden="true"></i>
<span class="sr-only" data-i18n="install.aria">Add to Home Screen</span>
<span class="ui-tooltip" id="install-app-tip" role="tooltip" data-i18n="install.tip">Add to Home Screen</span>
</button>
<button type="button" class="icon-btn" id="lang-toggle" title="Language" aria-label="Language">
<span id="lang-label">RU</span>
</button>
<button type="button" class="icon-btn" id="theme-toggle" title="Theme" aria-label="Theme">
<svg id="theme-icon-sun" class="icon hidden" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4"/></svg>
<svg id="theme-icon-moon" class="icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M21 14.5A8.5 8.5 0 1 1 9.5 3a7 7 0 0 0 11.5 11.5z"/></svg>
</button>
<button type="button" class="icon-btn" id="about-toggle" title="О проекте Wrapped" aria-label="О проекте Wrapped">
<i class="fa-solid fa-circle-question" aria-hidden="true"></i>
</button>
</div>
</header>
<main class="shell">
{% block content %}{% endblock %}
</main>
<footer class="site-footer">
<p class="footer-copy">
© <span data-i18n="footer.copy.author">Сергей Антропов</span>
· <a href="https://devops.org.ru" target="_blank" rel="noopener noreferrer">devops.org.ru</a>
· <a href="/verify" data-i18n="footer.verify">How to verify</a>
</p>
</footer>
<div id="about-modal" class="modal-root hidden" role="dialog" aria-modal="true" aria-labelledby="about-modal-title">
<div class="modal-backdrop" data-about-close></div>
<div class="modal-panel about-modal-panel" role="document">
<header class="about-modal-head">
<h2 class="modal-title" id="about-modal-title" data-i18n="about.title">О проекте Wrapped</h2>
<span class="about-version" title="Version">{{ app_version_label() }}</span>
</header>
<div class="about-modal-body">
<p data-i18n="about.p1">Wrapped — сервис одноразовой безопасной передачи текста, изображений и файлов.</p>
<p data-i18n="about.p2">Можно отправить заметку или код, а также вложения: документы, архивы, скриншоты (drag-and-drop, выбор с диска или вставка из буфера). И текст, и файлы шифруются в браузере до загрузки — на сервер уходит только ciphertext.</p>
<p data-i18n="about.p3">Сервер никогда не видит plaintext: зашифрованные данные лежат на сервере до тех пор, пока получатель не откроет ссылку с ключом и не расшифрует пакет.</p>
<p data-i18n="about.p4">После успешной расшифровки копия на сервере уничтожается. Ключ шифрования живёт во фрагменте URL (#…) и не уходит на сервер вместе с запросом страницы. При желании wrap можно дополнительно защитить паролем.</p>
<p><a href="/verify" data-i18n="about.verifyLink">How to verify →</a></p>
</div>
<div class="modal-actions">
<button type="button" class="btn primary" data-about-close data-i18n="about.close">Понятно</button>
</div>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.11.1/highlight.min.js" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="{{ static_url('js/i18n.js') }}"></script>
<script src="{{ static_url('js/theme.js') }}"></script>
<script src="{{ static_url('js/ui.js') }}"></script>
<script src="{{ static_url('js/about.js') }}"></script>
<script src="{{ static_url('js/install.js') }}"></script>
<script src="{{ static_url('js/highlight-ui.js') }}"></script>
{% block scripts %}{% endblock %}
</body>
</html>