Hide desktop refresh control

This commit is contained in:
Server 2026-08-10 18:44:03 +00:00
parent 9ca8d8312a
commit df68cae94b
6 changed files with 7 additions and 6 deletions

View file

@ -15,7 +15,7 @@ SharedDocsLib — небольшой Python-фреймворк для докум
UI не содержит языко-зависимых служебных подписей. Базовый шрифт — `system-ui 16px`; служебные UTF-8-пиктограммы используют Arial, а навигационные стрелки остаются в `system-ui`. AMOLED-тема включена по умолчанию и сохраняется локально после переключения.
На десктопе компактный header содержит полное название документации и search/theme/refresh, а слева постоянно видны header-кнопки и дерево страниц. Поисковый placeholder медленно печатает первые слова случайного названия, добавляет троеточие только в конце и сохраняет готовый текст 5 секунд; при вводе поле раскрывает ранжированные результаты вниз. Кнопка `⟳` вращается во время проверки manifest; при наведении она заменяет поиск и тему, показывая ISO-дату и короткий `revision`, а при нажатии запускает повторную фоновую проверку обновления.
На десктопе компактный header содержит полное название документации, поиск и переключатель темы, а слева постоянно видны header-кнопки и дерево страниц. Поисковый placeholder медленно печатает первые слова случайного названия, добавляет троеточие только в конце и сохраняет готовый текст 5 секунд; при вводе поле раскрывает ранжированные результаты вниз. Проверка manifest выполняется автоматически в фоне без отдельной кнопки обновления.
На мобильных устройствах используется viewport `100dvh` и нижний dock. Кнопка `☰` заменяет содержимое страницы копией desktop-sidebar. Ввод в нижний поиск заменяет содержимое результатами, расположенными снизу вверх по релевантности. Тема и обновление на мобильном скрыты.

View file

@ -5,4 +5,4 @@ from .server import build, create_app, run
from .ui import HeaderButton
__all__ = ["Component", "HeaderButton", "Page", "build", "create_app", "run"]
__version__ = "0.3.2"
__version__ = "0.3.3"

View file

@ -88,7 +88,7 @@ button { color: inherit; }
.theme-button { width: 44px; height: 44px; max-width: 44px; flex: 0 0 44px; border-radius: 50%; color: var(--text); background: var(--control); font-size: 1.3rem; transition: max-width .24s ease, opacity .16s ease, transform .24s ease; }
.theme-button:hover { background: var(--active); }
.refresh-button { display: flex; width: 44px; max-width: min(320px, 38vw); height: 44px; flex: 0 0 auto; align-items: center; justify-content: flex-start; gap: 8px; overflow: hidden; padding: 0; border: 0; border-radius: 24px; color: var(--text); background: var(--control); cursor: pointer; transition: width .26s ease, background .16s ease; }
.refresh-button { display: none; width: 44px; max-width: min(320px, 38vw); height: 44px; flex: 0 0 auto; align-items: center; justify-content: flex-start; gap: 8px; overflow: hidden; padding: 0; border: 0; border-radius: 24px; color: var(--text); background: var(--control); cursor: pointer; transition: width .26s ease, background .16s ease; }
.refresh-button:hover { background: var(--active); }
.refresh-glyph { display: grid; width: 44px; height: 44px; flex: 0 0 44px; place-items: center; font-size: 1.45rem; }
.refresh-button.loading .refresh-glyph { animation: refresh-spin .8s linear infinite; }

View file

@ -4,7 +4,7 @@ build-backend = "hatchling.build"
[project]
name = "shared-docs-lib"
version = "0.3.2"
version = "0.3.3"
description = "Build self-contained, Obsidian-like documentation sites from Python functions."
readme = "README.md"
requires-python = ">=3.10"

View file

@ -142,6 +142,7 @@ def test_all_endpoints_and_self_contained_build(tmp_path):
assert ".sidebar-header-buttons .header-link.active { color: #050505; background: #f0f0f0; }" not in html
assert "--tree-line: #2c2c2c" in html
assert "height: 44px" in html
assert ".refresh-button { display: none;" in html
assert "refresh-expanded" in html
assert "mobile-search-open" in html
assert "flex-direction: column-reverse" in html
@ -164,7 +165,7 @@ def test_all_endpoints_and_self_contained_build(tmp_path):
def test_build_writes_static_bundle(tmp_path):
assert __version__ == "0.3.2"
assert __version__ == "0.3.3"
@Page("1", "Static page")
def static_page():

2
uv.lock generated
View file

@ -452,7 +452,7 @@ wheels = [
[[package]]
name = "shared-docs-lib"
version = "0.3.2"
version = "0.3.3"
source = { editable = "." }
dependencies = [
{ name = "fastapi" },