From 84534b2f58e536552ec1e49e0ff0f97a35b8836e Mon Sep 17 00:00:00 2001 From: Ku6epXBOCTuK Date: Wed, 26 Aug 2026 18:12:03 +0500 Subject: [PATCH] docs: add new design references --- docs/plan-redesign.md | 191 + refs-html/README.md | 37 + refs-html/background-remover.html | 2218 ++++++++++ refs-html/demo.html | 2576 +++++++++++ refs-html/gradient.html | 2209 +++++++++ refs-html/index.html | 2576 +++++++++++ refs-html/list-tools.html | 2912 ++++++++++++ refs/.gitignore | 15 + .../background-remover/page.tsx | 29 + refs/app/easy-png-tools/demo/page.tsx | 1 + refs/app/easy-png-tools/gradient/page.tsx | 33 + refs/app/easy-png-tools/list-tools/page.tsx | 27 + refs/app/globals.css | 15 + refs/app/layout.tsx | 18 + refs/app/page.tsx | 40 + refs/components.json | 21 + refs/components/ui/button.tsx | 58 + refs/extract-static.mjs | 118 + refs/lib/utils.ts | 6 + refs/next-env.d.ts | 7 + refs/next.config.mjs | 11 + refs/package.json | 38 + refs/pnpm-lock.yaml | 3931 +++++++++++++++++ refs/pnpm-workspace.yaml | 2 + refs/postcss.config.mjs | 8 + refs/public/placeholder-user.jpg | Bin 0 -> 1635 bytes refs/public/placeholder.svg | 1 + refs/tsconfig.json | 33 + 28 files changed, 17131 insertions(+) create mode 100644 docs/plan-redesign.md create mode 100644 refs-html/README.md create mode 100644 refs-html/background-remover.html create mode 100644 refs-html/demo.html create mode 100644 refs-html/gradient.html create mode 100644 refs-html/index.html create mode 100644 refs-html/list-tools.html create mode 100644 refs/.gitignore create mode 100644 refs/app/easy-png-tools/background-remover/page.tsx create mode 100644 refs/app/easy-png-tools/demo/page.tsx create mode 100644 refs/app/easy-png-tools/gradient/page.tsx create mode 100644 refs/app/easy-png-tools/list-tools/page.tsx create mode 100644 refs/app/globals.css create mode 100644 refs/app/layout.tsx create mode 100644 refs/app/page.tsx create mode 100644 refs/components.json create mode 100644 refs/components/ui/button.tsx create mode 100644 refs/extract-static.mjs create mode 100644 refs/lib/utils.ts create mode 100644 refs/next-env.d.ts create mode 100644 refs/next.config.mjs create mode 100644 refs/package.json create mode 100644 refs/pnpm-lock.yaml create mode 100644 refs/pnpm-workspace.yaml create mode 100644 refs/postcss.config.mjs create mode 100644 refs/public/placeholder-user.jpg create mode 100644 refs/public/placeholder.svg create mode 100644 refs/tsconfig.json diff --git a/docs/plan-redesign.md b/docs/plan-redesign.md new file mode 100644 index 0000000..f361d96 --- /dev/null +++ b/docs/plan-redesign.md @@ -0,0 +1,191 @@ +# План: переезд на новый дизайн (refs) + +> Статус: план к выполнению. +> +> Источники: `refs/` — Next/React-референс (правда по пикселям), `refs-html/` — +> статические HTML-снимки для быстрого просмотра в браузере. + +## 1. Что происходит + +В `refs/` лежит новый визуальный язык проекта: «чертёжный» техно-стиль — +сетка на фоне, IBM Plex Sans/Mono, моно-микролейблы в верхнем регистре, +острые углы 4px, панели с 1px-бордером, акценты синий/циан/амбер, зелёные +статус-точки. Референс написан на Next 16 + Tailwind v4, но **переезд +дизайновый, а не фреймворковый**: SvelteKit в `web/` остаётся, переносится +только дизайн-слой (токены → примитивы → UI-kit → страницы). + +Чего не делаем: не тащим Tailwind и React в проект. Токены из +`refs/app/globals.css` переносятся в наш vanilla-CSS слой почти один в один, +классы референса (`step-card`, `setting-group`, …) воспроизводятся как наши +глобальные утилиты и стили компонентов. + +## 2. Токены (фундамент) + +Маппинг старых токенов `web/src/app.css` → новые из референса: + +| Старый | Новый | Light | Dark | +| -------------- | -------------- | --------- | ------------------------ | +| `--bg` | `--background` | `#eef1f4` | `#11171d` | +| `--surface` | `--panel` | `#f8fafb` | `#182129` | +| `--text` | `--foreground` | `#17212b` | `#e8eef2` | +| `--text-muted` | `--muted` | `#6d7883` | `#91a0ac` | +| `--border` | `--line` | `#cbd3da` | `#33414c` | +| `--accent` | `--blue` | `#1769d2` | `#54a2ff` | +| — | `--cyan` | `#00a8c7` | `#00a8c7` | +| — | `--amber` | `#bd7411` | `#bd7411` | +| — | `--success` | `#25a96a` | `#25a96a` (статус-точки) | +| `--danger` | без изменений | `#e5484d` | `#ff7479` | + +Прочее: + +- Радиусы: вместо `--radius-s/m` один `--radius: 4px`. Скруглённая мягкость + старой темы уходит. +- Шрифты: `IBM Plex Sans` + `IBM Plex Mono`, self-host через `@fontsource` + (проект offline-first, CDN нельзя). Mono — рабочий шрифт для лейблов, + метаданных, цифр; Sans — для заголовков и текста. +- Фон-сетка приложения (32px blueprint-grid) и шахматка канвасов — + отдельные утилиты `.app-shell`, `.checker-canvas`, не токены. +- Тёмная тема остаётся на `[data-theme='dark']` (инлайн-скрипт в `app.html` + уже есть); класс `.dark-mode` из референса не переносим. +- На переходный период старые имена живут как алиасы + (`--bg: var(--background)` …), чтобы существующие компоненты не ломались + до этапа D. В конце алиасы удаляются. + +## 3. Базовые примитивы дизайн-системы + +Повторяющиеся паттерны референса выносим в глобальные классы `app.css` +(по одному определению, без копипасты между компонентами): + +- `.mono-label` — микро-лейбл: mono 10px, uppercase, letter-spacing .1em, + цвет muted; модификаторы `.mono-label--accent` (синие eyebrow/version). +- `.status-dot` / `.status-line` — точка `--success` + подпись + («AUTO PIPELINE», «LIVE PREVIEW»). +- `.panel` — панель: фон `--panel`, бордер `--line`; композиция + `.panel-heading` (label + strong + правый слот) / `.setting-group` / + `.settings-footer` с разделителями. +- `.checker-canvas` — рабочая поверхность превью: тёмная подложка + + шахматка; размеры через контейнер. +- `.meta-row` — пары «CAPTION значение» (dimensions/format/size, + result-meta). +- `.segmented` — сегмент-переключатель (общий для языка, типа градиента, + пресетов). + +## 4. Минимальный UI-kit (`src/lib/components/ui/`) + +API компонентов сохраняем, меняем внутренности. Новые компоненты — только +те, для которых нет аналога: + +| Компонент | Статус | Что меняется | +| --------------------------------------------- | --------- | ------------------------------------------------------------------------------------------------------- | +| `Button.svelte` | рестайл | варианты `primary` (синий solid) / `secondary` (outline) / `ghost` + `icon`-режим; busy-логика остаётся | +| `Field.svelte` | рестайл | обёртка в стиле `.setting-group`: mono-label + output справа | +| `SliderField` | рестайл | range + `` значения, опциональная строка подсказок («strict edges … more removal») | +| `ColorField` | рестайл | swatch + hex-input + нативный color-picker в одном поле | +| `TextField` / `SelectField` / `CheckboxField` | рестайл | чекбокс → switch-toggle 32×18 как в рефе | +| `SegmentedControl.svelte` | **новый** | RU/EN, Linear/Radial, пресеты прозрачности | +| `Badge.svelte` | **новый** | тег типа шага (BACKGROUND/TRANSFORM/STYLE), чип «✓ AUTO» | +| `MetaList.svelte` | **новый** | `.meta-row` для DIMENSIONS/FORMAT/SIZE | +| `EmptyState.svelte` | рестайл | под новый стиль панелей | + +Иконки: в рефе lucide-react; берём `lucide-svelte` (те же пути, MIT) — +16–17px, stroke, приглушённый цвет. + +## 5. Шелл и страницы + +### 5.1 Layout (`+layout.svelte`) + +- Topbar: brand-mark «EP» (синий квадрат 30px) + `easy-png-tools` + версия + суффиксом `/ v0.x`; справа — статус «LOCAL-ONLY», icon-btn темы + (Moon/Sun), сегмент RU|EN. +- Footer: `easy-png-tools vX` · `pipeline is local-only` · © год. +- Фон-сетка на корневом контейнере `.app-shell`. + +### 5.2 `/` — воркспейс + +Текущий hero + ToolSearch переезжает в рампу референса: eyebrow +«PNG PROCESSING / WORKSPACE», крупный h1 (clamp 36–64px, tracking −0.06em), +lede; поиск — строка в стиле file-chip/pipeline-head. «Открыть последний» — +кнопка secondary. Каталог `/list-tools` — сетка карточек в стиле +`image-card` (label сверху, canvas-превью). + +### 5.3 `/tools/[id]` — страница инструмента + +Главная перестройка. Целевая раскладка из рефа — двухпанельная: + +```txt +eyebrow + tool-title (+ LIVE PREVIEW) +┌─ settings-panel ────────┐ ┌─ preview-panel ─────────┐ +│ panel-heading │ │ preview-toolbar │ +│ setting-group ×N │ │ checker-canvas / source │ +│ (Slider/Color/Toggle…) │ │ + result comparison │ +│ settings-footer (reset) │ │ meta-row │ +└─────────────────────────┘ └─────────────────────────┘ +``` + +- `ParamsCard`/`ParamForm` → секция настроек: поля становятся + `.setting-group` через обновлённый `ui/*`. +- `SourceCard`/`ResultCard`/`Preview` → превью-панель: toolbar с именем + файла и download-btn, canvas на шахматке, result-meta снизу. +- Chain-блоки (`ChainToolBlock`) — нумерованные step-cards из главной + рефа: индекс `01`, drag-handle, Badge типа, заголовок, кнопка удаления; + параметры этапа — те же setting-groups внутри карточки. +- Существующий `ToolStageClassic`/inline-вариант заменяются целевой + раскладкой; stage-абстракция из plan-inline-params закрывается этим + переездом. + +### 5.4 `/demo` + +Зеркало `refs-html/index.html` — витрина пайплайна, используется как +приёмочный стенд нового стиля (делается первым среди страниц). + +## 6. Этапы и проверки + +Каждый этап заканчивается зелёными `test`/`check`/`build` и ревью в браузере +(обе темы) против соответствующего HTML из `refs-html/`. + +- **A. Фундамент** — новые токены + алиасы старых, @fontsource IBM Plex, + утилиты §3, тёмная тема на `[data-theme]`. Критерий: приложение выглядит + по-старому (алиасы дают прежние цвета близко к новым), тесты зелёные, + FOUC-скрипт темы работает. +- **B. UI-kit** — компоненты §4: сначала рестайл существующих, потом новые + (`SegmentedControl`, `Badge`, `MetaList`). Критерий: демо-страница kit'а + или `/demo` показывает все состояния; unit-тесты форм не падают. +- **C. Шелл** — topbar/footer по §5.1, переключение темы и языка в новом + виде. Критерий: i18n/theme тесты зелёные, разметка шапки соответствует + рефу. +- **D. Страница инструмента** — раскладка §5.3 на `/demo`, затем на всех + инструментах; chain-карточки. Критерий: смоук §7, скриншоты против + `refs-html/gradient.html` и `background-remover.html`. +- **E. Главная и каталог** — §5.2. Критерий: поиск/фильтры работают, + покрытие search-coverage/i18n тестов зелёное. +- **F. Чистка** — удаление алиасов старых токенов, неиспользуемых классов + `app.css` (`.tool-stage`, `.pane*`…), финальный проход по брейкпоинтам + 1200/1100/800/480 из рефа. Критерий: grep по старым токенам пуст, + build без предупреждений. + +Оценка объёма: A+B — фундамент (~полдня), C+D — основная работа (~1–2 дня), +E+F — добивка (~полдня). + +## 7. Смоук (после этапа D) + +1. Светлая и тёмная тема: сетка фона, панели, шахматка канвасов читаются, + контраст mono-лейблов достаточный. +2. Инструмент с параметрами (градиент): slider/color/toggle в стиле + setting-groups, автозапуск не регрессировал. +3. Удаление фона: сравнение source/result, маска, пипетка работают на новой + шахматке. +4. Chain из 3+ инструментов: step-cards рендерятся, удаление/сброс работают. +5. Узкий экран 800px: настройки над превью, sticky выключается как в рефе. +6. RU/EN: новые лейблы локализованы; mono-лейблы рефа либо ключи i18n, + либо осознанно английские брендовые элементы (см. §8). + +## 8. Открытые вопросы + +- Mono-лейблы рефа на английском (`PROCESSING PIPELINE`). Предложение: + завести i18n-ключи, но для техно-эстетики допустимо оставить часть + английскими как «приборную панель». Решить на этапе A. +- Версия в топбаре/футере: брать из package.json при сборке (define) или + захардкодить? Мелочь, решить на этапе C. +- `refs/` оставляем в репо как источник правды; при изменении дизайна — + правки там, затем синхронизация вручную. Регенерация refs-html описана в + его README. diff --git a/refs-html/README.md b/refs-html/README.md new file mode 100644 index 0000000..7c67ffd --- /dev/null +++ b/refs-html/README.md @@ -0,0 +1,37 @@ +# refs-html — статические снимки нового дизайна + +Отформатированный HTML, вытащенный из Next-референса `refs/`, чтобы смотреть +макеты как референс по разметке и классам: открыл файл в браузере — увидел +дизайн. + +## Файлы + +| Файл | Маршрут в refs | Что показывает | +| ------------------------- | ------------------------------------ | --------------------------------------------------- | +| `index.html` | `/` | Главная: пайплайн-воркспейс + панель превью | +| `demo.html` | `/easy-png-tools/demo` | То же, что главная (зеркало) | +| `gradient.html` | `/easy-png-tools/gradient` | Инструмент «Градиент»: настройки + превью + CSS | +| `background-remover.html` | `/easy-png-tools/background-remover` | Инструмент «Удаление фона»: сравнение source/result | + +## Особенности + +- **Это статика без JS**: все `