StickerAI-Front/Редактор_стикеров_план_реализации.md
kazachilo 971d76e3d5 рупное обновление: добавлен редактор стикеров, offerwall, обновлены UI компоненты
-  обавлен редактор стикеров (StickerEditorScreen.tsx)
- 💰 обавлена offerwall функциональность
- 🎨 обавлены Figma дизайн-файлы
- 🔧 обавлены конфигурации редактора (editorFonts.ts, editorStickers.ts)
- 🎯 бновлены компоненты: Gallery, Profile, Header, TokenPacks
- 📱 бновлены onboarding экраны и стили
- 📦 бновлены зависимости проекта
- ��️ обавлены новые изображения для onboarding
- 📋 обавлен план реализации редактора стикеров
2025-06-30 16:22:55 +03:00

92 lines
6.5 KiB
Markdown
Raw Permalink 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.

# План внедрения редактора стикеров для Telegram Mini App
## 1. Кнопка "Редактировать" и роутинг
- Добавить кнопку/иконку "Редактировать" на каждый стикер в галерее.
- При нажатии — переход на экран `/edit/:stickerId`, где stickerId — идентификатор стикера (или file_id).
- На экран редактора передаётся webp-стикер 512x512 с прозрачным фоном.
---
## 2. Экран редактора (MVP)
- **Технология:** React + [react-konva](https://konvajs.org/docs/react/index.html) (canvas-редактирование, поддержка мобильных жестов, drag-n-drop, масштабирование, поворот).
- **Холст:** фиксированный размер 512x512, webp-стикер как прозрачный фон.
- **Инструменты:**
- Масштабирование и перемещение самого стикера (фонового слоя).
- Добавление текста (выбор шрифта из выпадающего списка, цвета из палитры, размер, позиция, поворот, обводка).
- Добавление PNG/эмодзи (drag-n-drop, resize, rotate, перемещение).
- Удаление объектов.
- **История изменений:** стек undo/redo (реализуется через массив состояний редактора, можно использовать useReducer или отдельную библиотеку типа [use-undo](https://github.com/aaronpowell/react-use-undo)).
- **UI:** крупные кнопки, панель инструментов снизу/сбоку, адаптация под мобильные (touch-жесты).
---
## 3. Сохранение результата
- Экспорт canvas в webp 512x512 (react-konva поддерживает toDataURL с нужным форматом и размером).
- Модальное окно подтверждения сохранения (в стиле NotificationModal, как в проекте).
- Отправка изображения на сервер через ваш эндпоинт (с телеграм id).
- После успешного сохранения — возврат в галерею (или показ уведомления).
---
## 4. Расширяемость и удобство
- **Шрифты:**
- Список шрифтов хранить в конфиге (например, src/config/editorFonts.ts).
- Добавлять новые шрифты — просто дописывать в конфиг и подключать через Google Fonts.
- **Палитра цветов:**
- Использовать готовый компонент color picker (например, [react-colorful](https://omgovich.github.io/react-colorful/)), палитру можно расширять.
- **Набор эмодзи/картинок:**
- Хранить в src/assets/editor-stickers/ (SVG/PNG/WebP).
- Добавлять новые — просто копировать в папку и прописывать в конфиге.
- **Предупреждение о несохранённых изменениях:**
- При попытке выхода из редактора без сохранения — показывать модальное окно с подтверждением.
---
## UX-детали
- Пользователь всегда видит результат редактирования в реальном времени.
- Все действия (масштабирование, перемещение, поворот) доступны для любого объекта, включая сам стикер.
- История изменений (undo/redo) работает в рамках одной сессии редактирования.
- Сохранение всегда в формате webp 512x512 с прозрачным фоном.
- Мобильная адаптация — приоритет (крупные кнопки, поддержка touch-жестов).
---
## Сложность и сроки
- MVP (редактирование, undo/redo, сохранение, мобильная адаптация): 2-3 недели.
- Добавление новых шрифтов/эмодзи — не требует изменений в коде, только в конфиге/папке.
- UI/UX — минимальные риски для остального приложения, редактор полностью изолирован.
---
## Вопросы и ответы
- **Ограничение на количество объектов:** не требуется.
- **Шрифты:** список в конфиге, легко расширять.
- **Цвета:** палитра, легко расширять.
- **Предпросмотр:** не нужен, пользователь видит результат сразу.
- **Модальное окно подтверждения:** обязательно, в стиле NotificationModal.
- **Набор эмодзи/картинок:** система через папку и конфиг, легко расширять.
- **Предупреждение о несохранённых изменениях:** обязательно.
---
## Примерная структура компонентов
- GallerySticker (с кнопкой "Редактировать")
- StickerEditorScreen (отдельный экран)
- EditorCanvas (react-konva)
- Toolbar (инструменты: текст, эмодзи, undo/redo, сохранить)
- ColorPicker, FontPicker, EmojiPicker (модальные/панельные компоненты)
- ConfirmModal (подтверждение сохранения/выхода)
---
**Резюме:**
Редактор внедряется как отдельный экран, не затрагивает остальной функционал. Использование react-konva обеспечивает мобильную совместимость и нужный функционал. Все ресурсы (шрифты, эмодзи) легко расширяемы через конфиг/папку. UX — максимально близок к мобильным привычкам.