feat(mobile): implement iOS Safari responsive layout, bottom tab bar, and mobile bottom sheet
This commit is contained in:
1 parent
d5e9354016
commit
c0fdcd776b
4 files changed
+707
-50
No files matched your search
+56
-3
@@ -2,10 +2,10 @@
|
||||
<html lang="ru" data-theme="dark">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover">
|
||||
<title>Notes — Персональный тренажер и словарь английского языка</title>
|
||||
<meta name="description" content="Защищённый персональный тренажёр и словарь английского языка с интервальными повторениями SRS SM-2, контекстным поиском и озвучкой">
|
||||
<link rel="stylesheet" href="/static/css/style.css?v=3.0">
|
||||
<link rel="stylesheet" href="/static/css/style.css?v=3.1">
|
||||
|
||||
<!-- PWA meta and icons -->
|
||||
<link rel="manifest" href="/manifest.json">
|
||||
@@ -82,6 +82,7 @@
|
||||
<span>📤 Экспорт</span>
|
||||
</button>
|
||||
<button id="theme-toggle" class="icon-btn" title="Переключить тему">🌓</button>
|
||||
<button id="mobile-menu-toggle-btn" class="icon-btn mobile-only-btn" title="Меню профиля и настроек">⚙️</button>
|
||||
<div class="user-profile">
|
||||
<span id="user-display-name" class="user-badge">user</span>
|
||||
<button id="change-pwd-open-btn" class="btn btn-sm btn-outline" title="Сменить пароль">🔑 Пароль</button>
|
||||
@@ -599,6 +600,57 @@
|
||||
<button id="batch-cancel-btn" class="btn btn-sm btn-ghost">✕ Отмена</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Mobile Bottom Navigation Tab Bar (iOS style) -->
|
||||
<nav class="mobile-tab-bar" id="mobile-tab-bar">
|
||||
<button class="tab-item active" data-view="dictionary-view" id="tab-nav-dict">
|
||||
<span class="tab-icon">📖</span>
|
||||
<span class="tab-label">Словарь</span>
|
||||
</button>
|
||||
<button class="tab-item" data-view="srs-view" id="tab-nav-srs">
|
||||
<span class="tab-icon">🎓</span>
|
||||
<span class="tab-label">Тренажёр</span>
|
||||
<span id="tab-srs-badge" class="tab-badge hidden">0</span>
|
||||
</button>
|
||||
<button class="tab-item" data-view="reader-view" id="tab-nav-reader">
|
||||
<span class="tab-icon">📚</span>
|
||||
<span class="tab-label">Читалка</span>
|
||||
</button>
|
||||
<button class="tab-item" id="tab-nav-stats">
|
||||
<span class="tab-icon">📊</span>
|
||||
<span class="tab-label">Прогресс</span>
|
||||
</button>
|
||||
<button class="tab-item" id="tab-nav-menu">
|
||||
<span class="tab-icon">⚙️</span>
|
||||
<span class="tab-label">Меню</span>
|
||||
</button>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<!-- Mobile Menu / Profile Sheet Modal -->
|
||||
<div id="mobile-menu-modal" class="modal-backdrop hidden">
|
||||
<div class="modal-window mobile-sheet-window">
|
||||
<div class="modal-header">
|
||||
<h3>⚙️ Профиль & Меню</h3>
|
||||
<button class="modal-close-btn" id="mobile-menu-close-btn">✕</button>
|
||||
</div>
|
||||
<div class="modal-body mobile-menu-body">
|
||||
<div class="mobile-user-card">
|
||||
<span class="mobile-user-avatar">👤</span>
|
||||
<div class="mobile-user-info">
|
||||
<strong id="mobile-user-name">user</strong>
|
||||
<p class="subtitle">Личный словарь English Lexicon</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mobile-menu-actions">
|
||||
<button id="mobile-stats-btn" class="btn btn-outline btn-block">📊 Статистика & Календарь</button>
|
||||
<button id="mobile-export-btn" class="btn btn-outline btn-block">📤 Экспорт словаря</button>
|
||||
<button id="mobile-pwd-btn" class="btn btn-outline btn-block">🔑 Сменить пароль</button>
|
||||
<button id="mobile-theme-btn" class="btn btn-outline btn-block">🌓 Переключить тему</button>
|
||||
<button id="mobile-logout-btn" class="btn btn-danger btn-block">Выйти из аккаунта</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Analytics & Activity Heatmap Modal -->
|
||||
@@ -902,6 +954,7 @@
|
||||
|
||||
<!-- Interactive Click-to-Translate Popup (Mounted at body root to prevent scroll clipping) -->
|
||||
<div id="reader-word-popup" class="reader-word-popup hidden">
|
||||
<div class="sheet-drag-handle mobile-only"></div>
|
||||
<div class="popup-header">
|
||||
<div class="popup-term-wrap">
|
||||
<strong id="popup-term" class="popup-term">word</strong>
|
||||
@@ -928,7 +981,7 @@
|
||||
<!-- Audio Element for native streaming -->
|
||||
<audio id="global-audio-player" preload="none"></audio>
|
||||
|
||||
<script src="/static/js/app.js?v=3.0"></script>
|
||||
<script src="/static/js/app.js?v=3.1"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in new issue
Block a user