=== Vagizov Scroll Top ===
Contributors: screenek
Tags: scroll to top, back to top, кнопка наверх, svg, progress, pagespeed
Requires at least: 6.0
Tested up to: 6.8
Requires PHP: 7.4
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

100% SEO Friendly кнопка «Наверх» для WordPress: SVG-иконка, индикатор прокрутки, цвет, градиент, позиция, отступы, плавные hover-эффекты и пресеты без render-blocking CSS/JS на фронте.

== Description ==

Vagizov Scroll Top добавляет на сайт плавающую кнопку «Наверх» через wp_footer. Плагин не требует правки темы и позволяет настроить внешний вид кнопки из админки WordPress.

Кнопка сделана так, чтобы не влиять на CLS и LCP параметры в Google PageSpeed: она выводится фиксированным элементом, не резервирует место в макете, не сдвигает контент, а фронтовые CSS/JS выводятся inline в `wp_footer` рядом с кнопкой. Поэтому плагин не создаёт отдельные render-blocking запросы `frontend.css` и `frontend.js` на публичной части сайта. Плагин 100% SEO Friendly и подходит для длинных SEO-страниц, блогов, лендингов и интернет-магазинов.

Возможности:

* включение/выключение кнопки;
* символ, inline SVG или SVG-файл в качестве иконки;
* рекомендация использовать SVG с currentColor;
* цвет иконки и цвет при наведении;
* индикатор прокрутки вокруг кнопки: кольцо для круга, скруглённая рамка для rounded-формы и квадратная рамка для квадратной формы;
* режим фона «Один цвет» или «Градиент» с показом только актуальных полей в админке;
* hover-эффекты: подъём, масштаб, подъём + масштаб, мягкое всплытие и нажатие;
* тень кнопки;
* позиции снизу справа, снизу слева и снизу по центру;
* отдельные отступы для десктопа и мобильных;
* отдельная настройка показа на десктопе и мобильных, при этом мобильный вывод по умолчанию отключён;
* настройка, где показывать кнопку: главная, записи, страницы, архивы, поиск, 404;
* live preview кнопки в цельном sticky-сайдбаре с демонстрацией hover и плавной прокрутки;
* логические AJAX-like табы настроек без перезагрузки страницы при переключении разделов;
* коллекция из 120 готовых пресетов;
* создание своих пресетов, импорт и экспорт через JSON-поле и JSON-файлы;
* дополнительный CSS;
* фронтовой CSS без отдельного сетевого запроса; минимальный фронтовой JS инициализируется после загрузки страницы, показывает кнопку после прокрутки, обрабатывает плавный переход наверх и обновляет индикатор при его включении.

Плагин бесплатный. Поддержать автора можно по ссылке:
https://pay.cloudtips.ru/p/76f8e9fb

Страница плагина:
https://vagizov.com/plugins/vagizov-scroll-top/

== Installation ==

1. Загрузите папку `vagizov-scroll-top` в `/wp-content/plugins/` или установите ZIP через админку WordPress.
2. Активируйте плагин в разделе «Плагины».
3. Перейдите в отдельный пункт меню «Scroll Top → Настройки».
4. Настройте внешний вид и сохраните изменения.

== Frequently Asked Questions ==

= Можно ли использовать свою SVG-иконку? =

Да. Можно вставить inline SVG или указать URL SVG-файла. Для inline SVG рекомендуется использовать `fill="currentColor"` или `stroke="currentColor"`, чтобы цвет иконки менялся через настройки плагина. Важно: по умолчанию WordPress блокирует загрузку SVG в медиабиблиотеку, поэтому загрузку SVG нужно разрешить отдельно.

= Почему SVG-файл лучше делать простым и одноцветным? =

SVG-файл отображается через CSS mask, чтобы цвет иконки можно было менять из настроек плагина. Лучше использовать чистую одноцветную SVG-иконку без сложных заливок.

= Плагин влияет на CLS? =

Кнопка выводится как fixed-элемент и не занимает место в потоке документа, поэтому она не должна создавать сдвиги макета и влиять на CLS.

= Плагин влияет на LCP? =

Фронтовый CSS и небольшой JS выводятся inline в футере рядом с кнопкой, без отдельных запросов `assets/css/frontend.css` и `assets/js/frontend.js` на публичной части сайта. Это убирает render-blocking CSS-запрос плагина и сокращает критическую цепочку загрузки.

= Плагин добавляет кнопку в тему? =

Нет. Кнопка выводится через хук `wp_footer`, поэтому код темы менять не нужно.

= Можно ли отключить индикатор прокрутки? =

Да. В настройках есть опция отключения индикатора прокрутки вокруг кнопки.

== Changelog ==

= 1.0.0 =
* Исправлена плавность hover на фронте: transform больше не зависит от промежуточных CSS-переменных, hover-состояния прописаны прямыми правилами.
* Добавлено закрытие wpColorPicker по клику вне активной палитры и по Escape.

= 0.2.6 =
* Индикатор прокрутки снова обновляется на фронте и инициализируется после загрузки страницы.
* Убраны настройки свечения, backdrop blur, выбора анимации появления и длительности прокрутки.
* Иконка перенесена во вкладку «Внешний вид», настройки отображения перенесены в «Основное».
* Исправлена вёрстка color picker: label, описание и текущий HEX выводятся перед выбором цвета.
* Палитра color picker выводится поверх блока через z-index и не должна раздвигать страницу.
* Обновлена премиальная шапка админки.

= 0.2.5 =
* Мобильный вывод по умолчанию выключен.
* Кнопка снова появляется только после прокрутки, без чтения геометрии страницы.
* Исправлена верстка color picker: подпись, описание и выбранный HEX видны до открытия палитры.
* Восстановлена плавность hover на фронте.

= 0.2.4 =
* Подписи color picker выводятся перед полем выбора цвета и видны сразу без открытия палитры.
* Если мобильный показ выключен, кнопка, CSS и JS не выводятся на мобильном запросе.
* Фронтовый JS при загрузке и скролле отключён: кнопка использует только inline onclick для возврата наверх.
* Восстановлены frontend/admin assets в ZIP.
* Исправлены дефолтные цвета: стрелка, hover-стрелка, индикатор и hover-индикатор #058fc0, фон и hover-фон #ffffff.
* Восстановлен hover-эффект свечения.


= 0.2.3 =
* Color picker labels are now printed before picker initialization and stay visible immediately.
* Added server-side mobile output guard: if mobile display is disabled and WordPress detects a mobile request, the button CSS/JS/HTML are not rendered.
* Removed frontend scroll/IntersectionObserver progress logic from JavaScript; baseline frontend JS is click-only to avoid forced layout attribution.
* Added UX notes for mobile output and scroll indicator.
* Added reset-to-defaults action.

= 0.2.2 =
* Возвращены admin assets в ZIP: стили, табы, preview и color picker снова работают штатно.
* Переписан фронтовый JS без layout-read пути при выключенном индикаторе прокрутки.
* Улучшены постоянные подписи color picker: назначение цвета и выбранное значение видны сразу.

= 0.2.1 =
* Переписан фронтовый JS в no-layout режиме: при выключенном индикаторе нет чтений scrollHeight/clientHeight/offsetWidth/getComputedStyle/getBoundingClientRect.
* Во время плавной прокрутки scroll-обработчик не читает позицию после JS-записи, чтобы не провоцировать forced layout.
* Фронтовый код остаётся inline в футере без render-blocking CSS/JS запросов.

= 0.2.0 =
* Убрана галка «Плавная прокрутка наверх»: плавная прокрутка теперь базовое поведение и не требует настройки.
* Переписан фронтовый JS: убраны ResizeObserver/MutationObserver и лишние чтения геометрии, чтобы снизить риск forced reflow.
* Цветовые настройки оформлены как подписанные карточки: видно название, назначение и выбранный цвет без открытия color picker.
* Переработан внешний вид dropdown/select в админке.

= 0.1.9 =
* Исправлена плавная прокрутка наверх: добавлена собственная requestAnimationFrame-анимация с временным отключением конфликтующего scroll-behavior.
* Улучшены подписи цветовых полей: название и выбранное значение отображаются сразу, без открытия color picker.
* Убран italic у вспомогательных подписей.
* Добавлена отдельная категория пресетов с индикатором прокрутки.
* Улучшен preview индикатора после ручного включения.
* Нативные dropdown заменены на премиальные кастомные селекты в админке.

= 0.1.8 =
* Пересобрана коллекция пресетов: 120 вариантов без индикатора прокрутки, чтобы иконка не сливалась с фоном или hover-состоянием.
* Добавлены основные однотонные цвета и основные градиентные сочетания.
* Для пресетов автоматически подобраны контрастные цвета иконки в обычном и hover-состоянии.
* Плавная прокрутка на фронте возвращена к native `window.scrollTo({ behavior: "smooth" })`, как в исходной реализации в футере.
* Усилены CSS-переходы на фронте, чтобы hover-плавность не терялась из-за стилей темы.

= 0.1.7 =
* Исправлена причина отсутствия плавности на фронте: inline JS теперь выводится после HTML кнопки, а не до неё.
* Переработан фронтовый scroll script: убраны лишние чтения/записи scrollTop в одном кадре, снижены риски forced reflow / принудительной компоновки.
* Обновлена плавная прокрутка наверх: анимация идёт через requestAnimationFrame и cached start-позицию без чтения layout после каждого write.
* Настройки разнесены по логическим табам внутри одной страницы: переключение табов без перезагрузки страницы.
* Добавлена коллекция из 120 готовых пресетов с поиском и фильтром по категориям.
* Добавлен экспорт текущего пресета в JSON-файл и импорт пресета из JSON-файла.
* Для своих пресетов добавлен экспорт отдельного пресета файлом.
* Обновлены CSS/JS админки для коллекции пресетов, табов и улучшенной работы preview.

= 0.1.6 =
* Улучшена плавность hover-анимаций на фронте и в preview.
* Переработана плавная прокрутка наверх: собственная requestAnimationFrame-анимация, защита от конфликтов с CSS scroll-behavior.
* Цветовые поля получили явные подписи и видимое текущее значение цвета.
* Блок свечения показывается только при выборе hover-эффекта «Свечение».
* Добавлены свои пресеты: создание, применение, удаление, импорт и экспорт JSON.
* Sticky-сайдбар усилен и preview получил демонстрацию плавной прокрутки.

= 0.1.5 =
* Фронт больше не подключает отдельные `assets/css/frontend.css` и `assets/js/frontend.js`, чтобы не создавать render-blocking запросы в PageSpeed.
* CSS и небольшой JS кнопки выводятся inline через `wp_footer` рядом с кнопкой, как при ручном размещении в футере темы.
* Файлы frontend.css/frontend.js оставлены для админского preview и разработки, но не грузятся на публичной части сайта.
* Обновлено описание SEO/PageSpeed: добавлено пояснение про отсутствие сетевых запросов фронтовых ассетов.

= 0.1.4 =
* Исправлена фронтовая плавная прокрутка: добавлена собственная анимация через scrollingElement без конфликта с CSS scroll-behavior.
* Усилена плавность hover-состояний на фронте: фон, цвет иконки, тень, движение и индикатор теперь переходят через общий transition.
* Сайдбар настроек закреплён как единый sticky-блок.
* Формулировка «прогресс страницы» заменена на более понятный «индикатор прокрутки вокруг кнопки».
* Для скруглённой формы индикатор теперь тоже скруглённый и идёт по периметру.
* В режиме «Один цвет» показываются только поля одного цвета, в режиме «Градиент» — только поля градиента.
* Добавлены настройки цвета индикатора при наведении, чтобы он не сливался с hover-фоном.
* Добавлены настройки свечения: один цвет или градиент, мягкость и насыщенность.
* Полностью обновлены пресеты: Classic Blue, Mint Center, Square Carbon, Rounded Neon, Warm Promo.

= 0.1.3 =
* Статус сохранения перенесён в аккуратный внутренний блок плагина.
* Добавлена настройка плавности hover-анимации.
* Позиции сверху убраны, добавлена позиция «Снизу по центру».
* Позиция, поведение прокрутки, наведение и дополнительные эффекты разнесены по отдельным блокам.
* Плавная прокрутка заменена на встроенную requestAnimationFrame-анимацию с настройкой длительности.
* Для квадратной кнопки прогресс теперь идёт квадратом по периметру.
* Добавлено пояснение, что WordPress по умолчанию блокирует загрузку SVG в медиабиблиотеку.
* Сайдбар настроек сделан цельным sticky-блоком, чтобы preview и статьи не перекрывались.
* Обновлены пресеты: добавлены Square Progress и Center Glass.

= 0.1.2 =
* Добавлена ссылка «Настройки» на странице плагинов WordPress.
* Плагин вынесен из стандартного меню «Настройки» в отдельный пункт «Scroll Top».
* Раздел «О плагине» вынесен в отдельную страницу.
* Блок рекомендуемых статей сделан липким в сайдбаре настроек.
* Переработаны названия цветовых полей: явно разделены обычный фон, hover-фон, обычный градиент, hover-градиент, цвета иконки и кольца прогресса.
* Полностью обновлены 5 пресетов, чтобы они отличались по стилю, форме, эффектам и цветовой схеме.

= 0.1.1 =
* Убрана карточка «Поддержать автора» из сайдбара.
* Добавлен режим SVG-файла для иконки.
* Настройки показа на десктопе и мобильных вынесены в отдельный блок.
* Добавлен live preview кнопки в админке.
* Добавлено описание про CLS, LCP, Google PageSpeed и SEO Friendly.
* Добавлены 5 готовых пресетов.

= 0.1.0 =
* Первая рабочая версия для локального тестирования.
* Добавлены настройки SVG, цветов, градиента, позиции, отступов, индикатора прокрутки и эффектов.
