commit 6f48c3b5fc10e71003ebbd8357efa9b8ba498757 Author: kazachilo Date: Thu Mar 13 15:51:19 2025 +0300 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/API_DOCUMENTATION.md b/API_DOCUMENTATION.md new file mode 100644 index 0000000..e0ee309 --- /dev/null +++ b/API_DOCUMENTATION.md @@ -0,0 +1,622 @@ +# API Документация + +## Обзор + +API предоставляет функциональность для работы со стикерами в Telegram, включая генерацию изображений, создание стикерпаков и управление ими. Также API поддерживает отслеживание позиций задач в очереди. + +Базовый URL: `http://localhost:8001` + +## Эндпоинты + +### Проверка работоспособности + +#### GET /health + +Проверяет работоспособность API. + +**Ответ:** +```json +{ + "status": "ok" +} +``` + +### Управление пользователями + +#### POST /register + +Регистрирует нового пользователя в системе. + +**Тело запроса:** +```json +{ + "user_id": 123456789, + "username": "example_user", + "chat_id": 123456789, + "balance": 0 +} +``` + +**Параметры:** +- `user_id` (integer, обязательный): Уникальный ID пользователя (например, из Telegram) +- `username` (string, обязательный): Имя пользователя +- `chat_id` (integer, обязательный): ID чата +- `balance` (integer, опциональный, по умолчанию 0): Начальный баланс пользователя + +**Ответ (201 Created):** +```json +{ + "user_id": 123456789, + "username": "example_user", + "chat_id": 123456789, + "balance": 0 +} +``` + +**Ошибки:** +- 400 Bad Request: Пользователь с таким chat_id уже существует + +#### GET /users/{user_id} + +Получает информацию о пользователе по его ID. + +**Параметры пути:** +- `user_id` (integer, обязательный): ID пользователя + +**Ответ (200 OK):** +```json +{ + "user_id": 123456789, + "username": "example_user", + "chat_id": 123456789, + "balance": 0 +} +``` + +**Ошибки:** +- 404 Not Found: Пользователь не найден + +### Генерация изображений и управление очередью + +#### POST /generate_image + +Создает задачу на генерацию изображения с использованием ComfyUI. + +**Тело запроса:** +```json +{ + "user_id": 123456789, + "workflow": { + // Объект workflow для ComfyUI + }, + "tag": "image_generation" +} +``` + +**Параметры:** +- `user_id` (integer, обязательный): ID пользователя +- `workflow` (object, обязательный): Объект workflow для ComfyUI +- `tag` (string, обязательный): Тег для типа задачи (допустимое значение: "image_generation") + +**Ответ (200 OK):** +```json +{ + "message": "Ваше изображение генерируется, пожалуйста подождите, готовое изображение будет у вас в галереи", + "Task_ID": "123", + "queue_position": 5 +} +``` + +**Ошибки:** +- 400 Bad Request: Недопустимый тег +- 404 Not Found: Пользователь не найден +- 500 Internal Server Error: Ошибка при создании задачи или отправке сообщения + +#### GET /user_pending_tasks/{user_id} + +Получает список задач пользователя в статусе PENDING с их позициями в очереди. + +**Параметры пути:** +- `user_id` (integer, обязательный): ID пользователя + +**Ответ (200 OK):** +```json +[ + { + "task_id": 123, + "prompt_id": "prompt_id_from_comfyui", + "status": "PENDING", + "created_at": "2025-03-13T11:15:00", + "queue_position": 3, + "updated_at": "2025-03-13T11:20:00" + }, + { + "task_id": 124, + "prompt_id": "prompt_id_from_comfyui_2", + "status": "STARTED", + "created_at": "2025-03-13T11:10:00", + "queue_position": null, + "updated_at": "2025-03-13T11:20:00" + } +] +``` + +**Ошибки:** +- 404 Not Found: Пользователь не найден +- 500 Internal Server Error: Внутренняя ошибка сервера + +#### GET /task_position/{task_id} + +Получает текущую позицию задачи в очереди. + +**Параметры пути:** +- `task_id` (integer, обязательный): ID задачи + +**Ответ (200 OK):** +```json +{ + "task_id": 123, + "status": "PENDING", + "queue_position": 3 +} +``` + +**Ошибки:** +- 404 Not Found: Задача не найдена +- 500 Internal Server Error: Внутренняя ошибка сервера + +#### GET /images_links/{user_id} + +Получает список ссылок на изображения пользователя. + +**Параметры пути:** +- `user_id` (integer, обязательный): ID пользователя + +**Ответ (200 OK):** +```json +[ + { + "id": 1, + "link": "file_id_from_telegram", + "prompt_id": "prompt_id_from_comfyui", + "status": "COMPLETED", + "created_at": "2025-03-12T12:00:00", + "sticker_set_id": null + } +] +``` + +**Ошибки:** +- 404 Not Found: Пользователь не найден + +### Управление стикерами + +#### POST /upload_sticker + +Загружает файл стикера на сервер Telegram. + +**Тело запроса:** +```json +{ + "user_id": 123456789, + "link": "https://example.com/image.png" +} +``` + +**Параметры:** +- `user_id` (integer, обязательный): ID пользователя +- `link` (string, обязательный): URL или путь к файлу стикера + +**Ответ (200 OK):** +```json +{ + "file_id": "file_id_from_telegram" +} +``` + +**Ошибки:** +- 500 Internal Server Error: Ошибка при загрузке файла на сервер Telegram + +#### POST /create_sticker_set + +Создает новый набор стикеров. + +**Тело запроса:** +```json +{ + "user_id": 123456789, + "sticker_set_name": "example_set", + "title": "Example Sticker Set", + "file_id": "file_id_from_telegram", + "emojis": "😀", + "is_animated": false, + "is_video": false +} +``` + +**Параметры:** +- `user_id` (integer, обязательный): ID пользователя +- `sticker_set_name` (string, обязательный): Название набора стикеров (без суффикса _by_bot) +- `title` (string, обязательный): Заголовок набора стикеров +- `file_id` (string, обязательный): File_id загруженного стикера +- `emojis` (string, обязательный): Список эмодзи для стикера +- `is_animated` (boolean, опциональный, по умолчанию false): Флаг анимированного стикера +- `is_video` (boolean, опциональный, по умолчанию false): Флаг видео-стикера + +**Ответ (200 OK):** +```json +{ + "message": "Новый набор стикеров успешно создан!", + "name": "example_set_by_bot_name" +} +``` + +**Ошибки:** +- 500 Internal Server Error: Ошибка при создании набора стикеров + +#### POST /add_sticker_to_set + +Добавляет стикер в существующий набор. + +**Тело запроса:** +```json +{ + "user_id": 123456789, + "sticker_set_name": "example_set", + "file_id": "file_id_from_telegram", + "emojis": "😀", + "is_animated": false, + "is_video": false +} +``` + +**Параметры:** +- `user_id` (integer, обязательный): ID пользователя +- `sticker_set_name` (string, обязательный): Название набора стикеров (без суффикса _by_bot) +- `file_id` (string, обязательный): File_id загруженного стикера +- `emojis` (string, обязательный): Список эмодзи для стикера +- `is_animated` (boolean, опциональный, по умолчанию false): Флаг анимированного стикера +- `is_video` (boolean, опциональный, по умолчанию false): Флаг видео-стикера + +**Ответ (200 OK):** +```json +{ + "message": "Стикер успешно добавлен в набор!" +} +``` + +**Ошибки:** +- 500 Internal Server Error: Ошибка при добавлении стикера в набор + +#### GET /check_sticker_set_name/{sticker_set_name} + +Проверяет, существует ли набор стикеров с указанным именем. + +**Параметры пути:** +- `sticker_set_name` (string, обязательный): Название набора стикеров + +**Ответ (200 OK):** +```json +{ + "exists": true +} +``` + +**Ошибки:** +- 500 Internal Server Error: Ошибка при проверке существования набора стикеров + +#### POST /delete_sticker_from_set + +Удаляет стикер из набора. + +**Тело запроса:** +```json +{ + "file_id": "file_id_from_telegram" +} +``` + +**Параметры:** +- `file_id` (string, обязательный): File_id стикера + +**Ответ (200 OK):** +```json +{ + "message": "Стикер успешно удален из набора!" +} +``` + +**Ошибки:** +- 500 Internal Server Error: Ошибка при удалении стикера из набора + +#### POST /set_sticker_position_in_set + +Изменяет позицию стикера в наборе. + +**Тело запроса:** +```json +{ + "sticker_file_id": "file_id_from_telegram", + "position": 0 +} +``` + +**Параметры:** +- `sticker_file_id` (string, обязательный): File_id стикера +- `position` (integer, обязательный): Новая позиция стикера (0 - первая позиция) + +**Ответ (200 OK):** +```json +{ + "message": "Позиция стикера успешно изменена!" +} +``` + +**Ошибки:** +- 500 Internal Server Error: Ошибка при изменении позиции стикера + +#### POST /delete_sticker_set + +Удаляет набор стикеров. + +**Тело запроса:** +```json +{ + "sticker_set_name": "example_set_by_bot_name" +} +``` + +**Параметры:** +- `sticker_set_name` (string, обязательный): Полное название набора стикеров (включая суффикс _by_bot) + +**Ответ (200 OK):** +```json +{ + "message": "Набор стикеров успешно удален!" +} +``` + +**Ошибки:** +- 500 Internal Server Error: Ошибка при удалении набора стикеров + +#### POST /create_sticker_set_db + +Создает запись о стикерпаке в базе данных. + +**Тело запроса:** +```json +{ + "user_id": 123456789, + "sticker_set_name": "example_set_by_bot_name" +} +``` + +**Параметры:** +- `user_id` (integer, обязательный): ID пользователя +- `sticker_set_name` (string, обязательный): Полное название набора стикеров (включая суффикс _by_bot) + +**Ответ (201 Created):** +```json +{ + "id": 1, + "set_name": "example_set_by_bot_name", + "user_id": 123456789 +} +``` + +**Ошибки:** +- 404 Not Found: Пользователь не найден +- 400 Bad Request: Ошибка валидации +- 500 Internal Server Error: Внутренняя ошибка сервера + +#### GET /user_sticker_sets/{user_id} + +Возвращает список названий всех стикерпаков пользователя. + +**Параметры пути:** +- `user_id` (integer, обязательный): ID пользователя + +**Ответ (200 OK):** +```json +[ + { + "id": 1, + "set_name": "example_set_by_bot_name", + "user_id": 123456789 + } +] +``` + +**Ошибки:** +- 404 Not Found: Пользователь не найден +- 500 Internal Server Error: Внутренняя ошибка сервера + +### Прокси для Telegram API + +#### GET /stickers/packs/{pack_name} + +Получает информацию о стикерпаке из Telegram. + +**Параметры пути:** +- `pack_name` (string, обязательный): Название стикерпака + +**Ответ (200 OK):** +```json +{ + "name": "example_set_by_bot_name", + "title": "Example Sticker Set", + "sticker_type": "regular", + "thumbnail_url": "http://localhost:8001/stickers/proxy/sticker/file_id_from_telegram", + "share_url": "https://t.me/addstickers/example_set_by_bot_name", + "stickers": [ + { + "file_id": "file_id_from_telegram", + "emoji": "😀", + "position": 0, + "file_url": "http://localhost:8001/stickers/proxy/sticker/file_id_from_telegram" + } + ] +} +``` + +#### GET /stickers/proxy/sticker/{file_id} + +Прокси для получения изображения стикера без раскрытия токена бота. + +**Параметры пути:** +- `file_id` (string, обязательный): File ID стикера + +**Ответ (200 OK):** +Изображение стикера в формате WebP с заголовками: +- Content-Type: image/webp +- Content-Disposition: inline +- Cache-Control: public, max-age=86400 + +**Ошибки:** +- 404 Not Found: Стикер не найден +- 500 Internal Server Error: Ошибка при получении стикера + +#### POST /stickers/test/upload + +Тестовый эндпоинт для загрузки изображения в Telegram. + +**Форма запроса:** +- `user_id` (integer, обязательный): Telegram ID пользователя +- `image_url` (string, обязательный): URL изображения для загрузки + +**Ответ (200 OK):** +```json +{ + "success": true, + "file_id": "file_id_from_telegram", + "file_url": "http://localhost:8001/stickers/proxy/sticker/file_id_from_telegram" +} +``` + +**Ошибки:** +- 500 Internal Server Error: Ошибка при загрузке изображения + +## Модели данных + +### UserBase +```json +{ + "user_id": 123456789, + "username": "example_user", + "chat_id": 123456789, + "balance": 0 +} +``` + +### UserCreate +```json +{ + "user_id": 123456789, + "username": "example_user", + "chat_id": 123456789, + "balance": 0 +} +``` + +### ImageBase +```json +{ + "id": 1, + "link": "file_id_from_telegram", + "prompt_id": "prompt_id_from_comfyui", + "status": "COMPLETED", + "created_at": "2025-03-12T12:00:00", + "sticker_set_id": null +} +``` + +### StickerUploadRequest +```json +{ + "user_id": 123456789, + "link": "https://example.com/image.png" +} +``` + +### StickerSetRequest +```json +{ + "user_id": 123456789, + "sticker_set_name": "example_set", + "title": "Example Sticker Set", + "file_id": "file_id_from_telegram", + "emojis": "😀", + "is_animated": false, + "is_video": false +} +``` + +### StickerFileID +```json +{ + "file_id": "file_id_from_telegram" +} +``` + +### StickerSetPosition +```json +{ + "sticker_file_id": "file_id_from_telegram", + "position": 0 +} +``` + +### StickerSetName +```json +{ + "sticker_set_name": "example_set_by_bot_name" +} +``` + +### GenerateImageRequest +```json +{ + "tag": "image_generation", + "user_id": 123456789, + "workflow": { + // Объект workflow для ComfyUI + } +} +``` + +### CreateStickerSetDBRequest +```json +{ + "user_id": 123456789, + "sticker_set_name": "example_set_by_bot_name" +} +``` + +### StickerSetResponse +```json +{ + "id": 1, + "set_name": "example_set_by_bot_name", + "user_id": 123456789 +} +``` + +### TaskPosition +```json +{ + "task_id": 123, + "status": "PENDING", + "queue_position": 3 +} +``` + +### PendingTask +```json +{ + "task_id": 123, + "prompt_id": "prompt_id_from_comfyui", + "status": "PENDING", + "created_at": "2025-03-13T11:15:00", + "queue_position": 3, + "updated_at": "2025-03-13T11:20:00" +} diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md new file mode 100644 index 0000000..535363f --- /dev/null +++ b/ARCHITECTURE.md @@ -0,0 +1,218 @@ +# Архитектура Telegram MiniApp для генерации стикеров + +## Общее описание + +Приложение представляет собой Telegram MiniApp для генерации стикеров из пользовательских изображений. Архитектура построена на принципе разделения клиентской и серверной логики, где все API запросы выполняются через сервер. + +## Компоненты системы + +```mermaid +graph TD + A[Клиент/MiniApp] --> B[Telegram WebApp API] + A --> C[Ваш сервер] + C --> D[API генерации] + + B -- "user_id, username" --> C + C -- "статус, результаты" --> A +``` + +## API Эндпоинты + +### 1. Регистрация пользователя +```http +POST /users +Content-Type: application/json + +{ + "user_id": 12345, + "username": "john_doe", + "chat_id": 123456789, + "balance": 0 +} + +Response (201): +{ + "user_id": 1, + "username": "john_doe", + "chat_id": 123456789, + "balance": 100 +} +``` + +### 2. Получение информации о пользователе +```http +GET /users +Content-Type: application/json + +{ + "user_id": "12345" +} + +Response (200): +{ + "user_id": 12345, + "username": "john_doe", + "chat_id": 123456789, + "balance": 0 +} +``` + +### 3. Генерация изображения +```http +POST /generate_image/{user_id} +Content-Type: multipart/form-data + +file: binary + +Response (200): +"string" (prompt_id) +``` + +### 4. Получение списка изображений +```http +GET /images_links/{user_id} + +Response (200): +[ + { + "id": 0, + "link": "string", + "path": "string", + "prompt_id": "string", + "status": "string", + "created_at": "2025-02-24T13:22:11.690Z" + } +] +``` + +## Процесс генерации стикера + +```mermaid +graph TD + A[Клиент] -->|1. Выбор фото| B[Локальная обработка] + B -->|2. Кроп фото| C[Подготовка данных] + C -->|3. WebApp.sendData| D[Ваш сервер] + D -->|4. Запрос к API| E[API генерации] + E -->|5. Результат| D + D -->|6. Ответ боту| F[Telegram бот] + F -->|7. Уведомление| G[Пользователь] +``` + +## Структуры данных + +### Клиентская часть + +```typescript +// Интерфейс для работы с Telegram WebApp +interface WebAppUser { + id: number; + username: string; + // другие поля из WebApp +} + +// Запрос на генерацию +interface GenerationRequest { + photo: Blob; + style: string; + userId: number; + username: string; +} + +// Результат генерации +interface GenerationResult { + status: 'success' | 'error'; + stickerUrl?: string; + error?: string; +} + +// Информация об изображении +interface GeneratedImage { + id: number; + link: string; + path: string; + prompt_id: string; + status: string; + created_at: string; +} +``` + +## Взаимодействие с Telegram WebApp + +```typescript +// src/services/webApp.ts +const webAppService = { + // Получение информации о пользователе + getUserInfo(): WebAppUser { + return window.Telegram.WebApp.initDataUnsafe.user; + }, + + // Показ уведомления + showAlert(message: string): void { + window.Telegram.WebApp.showAlert(message); + }, + + // Показ подтверждения + showConfirm(message: string): Promise { + return window.Telegram.WebApp.showConfirm(message); + }, + + // Отправка данных на сервер + sendData(data: GenerationRequest): void { + window.Telegram.WebApp.sendData(JSON.stringify(data)); + } +}; +``` + +## Процесс обработки изображения + +1. **Клиентская часть:** + - Загрузка изображения + - Локальная обработка (кроп, ресайз) + - Подготовка данных для отправки + - Отправка через WebApp.sendData() + +2. **Серверная часть:** + - Получение данных от WebApp + - Валидация пользователя + - Проверка баланса + - Отправка запроса на генерацию + - Сохранение результата + - Отправка уведомления через бота + +## Обработка ошибок + +```typescript +enum ApiErrorType { + USER_NOT_FOUND = 'USER_NOT_FOUND', + VALIDATION_ERROR = 'VALIDATION_ERROR', + NETWORK_ERROR = 'NETWORK_ERROR', + GENERATION_FAILED = 'GENERATION_FAILED' +} + +interface ApiError { + type: ApiErrorType; + message: string; + details?: any; +} +``` + +## Безопасность + +1. Все API запросы выполняются только через сервер +2. Клиент не имеет прямого доступа к API генерации +3. Валидация пользователя происходит на сервере +4. Проверка баланса выполняется на сервере перед генерацией + +## Оптимизации + +1. Локальная обработка изображений перед отправкой +2. Кэширование результатов в галерее +3. Отложенная загрузка изображений +4. Обработка состояний загрузки и ошибок + +## Дальнейшее развитие + +1. Добавление новых стилей генерации +2. Система рейтинга стикеров +3. Социальные функции (шаринг, коллекции) +4. Интеграция с другими сервисами Telegram diff --git a/PROJECT_OVERVIEW.md b/PROJECT_OVERVIEW.md new file mode 100644 index 0000000..2c960ef --- /dev/null +++ b/PROJECT_OVERVIEW.md @@ -0,0 +1,244 @@ +# Обзор проекта StickerBot + +## Общее описание + +StickerBot - это Telegram MiniApp для генерации стикеров из пользовательских изображений. Приложение позволяет пользователям загружать свои фотографии, обрезать их, выбирать стиль и образ для генерации стикеров, а затем получать готовые стикеры. + +## Архитектура проекта + +Проект построен на принципе разделения клиентской и серверной логики: + +```mermaid +graph TD + A[Клиент/MiniApp] --> B[Telegram WebApp API] + A --> C[Сервер] + C --> D[API генерации] + + B -- "user_id, username" --> C + C -- "статус, результаты" --> A +``` + +### Технологический стек + +- **Фронтенд**: React + TypeScript + Vite +- **Маршрутизация**: React Router +- **Стили**: CSS Modules +- **API**: REST API + +## Структура проекта + +### Основные директории + +- **src/components/** - компоненты пользовательского интерфейса + - **blocks/** - переиспользуемые блоки UI (кнопки, поля ввода, загрузка фото) + - **layout/** - компоненты макета (заголовок, навигация) + - **shared/** - общие компоненты (просмотр изображений, обработка ошибок) +- **src/screens/** - экраны приложения +- **src/config/** - конфигурации (стили, экраны) +- **src/constants/** - константы (базовый воркфлоу) +- **src/services/** - сервисы для работы с API +- **src/types/** - типы TypeScript +- **src/assets/** - статические ресурсы (изображения, промпты) + +### Ключевые файлы + +- **src/App.tsx** - основной компонент приложения с маршрутизацией +- **src/main.tsx** - точка входа в приложение +- **src/screens/Home.tsx** - домашний экран +- **src/screens/CropPhoto.tsx** - экран обрезки фото +- **src/services/api.ts** - сервис для работы с API +- **src/config/homeScreen.ts** - конфигурация домашнего экрана +- **src/config/stylePresets.ts** - предустановленные стили для стикеров +- **src/constants/baseWorkflow.ts** - базовый воркфлоу для генерации стикеров +- **src/assets/prompts.ts** - промпты для генерации стикеров + +## Маршрутизация + +Приложение использует React Router для навигации между экранами: + +- **Онбординг**: + - `/onboarding/welcome` - приветственный экран + - `/onboarding/how-to` - инструкции по использованию + - `/onboarding/sticker-packs` - информация о наборах стикеров +- **Основные экраны**: + - `/` - домашний экран + - `/create` - создание стикера + - `/gallery` - галерея сгенерированных стикеров + - `/packs` - наборы стикеров + - `/profile` - профиль пользователя + - `/history` - история генераций + - `/crop-photo` - обрезка фото + +## Компонентная структура + +### Блоки UI + +Приложение использует компонентный подход с блоками UI, которые рендерятся через компонент BlockRenderer: + +- **ScrollableButtonsBlock** - блок с прокручиваемыми кнопками +- **GridButtonsBlock** - блок с сеткой кнопок +- **UploadPhotoBlock** - блок для загрузки фото +- **DividerBlock** - разделитель +- **TextInputBlock** - блок для ввода текста +- **GenerateButton** - кнопка для генерации стикеров +- **StepTitle** - заголовок шага + +### Макет + +Компонент Layout обеспечивает общую структуру интерфейса: + +- **Header** - заголовок +- **Navigation** - навигация +- **ErrorBoundary** - обработка ошибок +- **Suspense** - обработка состояния загрузки + +## Процесс генерации стикера + +```mermaid +graph TD + A[Загрузка фото] -->|Перенаправление на экран обрезки| B[Обрезка фото] + B -->|Возврат на главный экран| C[Выбор стиля] + C --> D[Выбор образа] + D --> E[Генерация стикера] + E -->|API запрос| F[Получение результата] +``` + +1. **Загрузка изображения**: + - Пользователь загружает фото через компонент UploadPhotoBlock + - Поддерживается перетаскивание и выбор файла + +2. **Обрезка изображения**: + - Пользователь перенаправляется на экран CropPhoto + - Возможность масштабирования и перемещения изображения + - Выбор области для стикера + - Преобразование в base64 и передача на главный экран + +3. **Выбор стиля**: + - Доступные стили: чиби, реализм, эмоции + - Каждый стиль имеет свои предустановленные образы + +4. **Выбор образа**: + - Для стиля "чиби": спорткар, скейтборд, кофе, цветы и т.д. + - Для стиля "реализм": деловой, повседневный, спортивный и т.д. + - Для стиля "эмоции": радость, грусть, злость и т.д. + +5. **Генерация стикера**: + - Отправка запроса на сервер через API + - Использование базового воркфлоу с заменой изображения и промпта + +## Взаимодействие с API + +### API Эндпоинты + +- **POST /generate_image** - генерация изображения +- **GET /images_links/{user_id}** - получение списка изображений + +### Сервис API + +Сервис apiService предоставляет методы: + +- **getGeneratedImages** - получение списка сгенерированных изображений +- **generateImage** - генерация нового изображения + +### Процесс генерации + +1. Создание копии базового воркфлоу +2. Вставка изображения в формате base64 +3. Замена промпта в зависимости от выбранного образа +4. Отправка запроса на сервер +5. Получение результата + +## Стили и образы + +### Стили + +- **chibi** - стиль чиби (мультяшный, милый) +- **realism** - реалистичный стиль +- **emotions** - стиль эмоций + +### Образы для стиля "чиби" + +- спорткар +- скейтборд +- кофе +- цветы +- шарик +- книга +- мороженое +- зонт +- коктейль +- подарок +- собака +- газета +- велосипед +- серфер +- детектив +- байкер +- фея +- ученый +- ковбой +- рыцарь +- балерина +- пожарный +- шеф-повар + +### Образы для стиля "реализм" + +- деловой +- повседневный +- спортивный +- вечерний +- пляжный +- зимний +- ретро +- киберпанк +- военный +- стимпанк + +### Образы для стиля "эмоции" + +- радость +- грусть +- злость +- любовь +- удивление +- страх +- сонный +- крутой +- глупый +- думающий + +## Технические особенности + +### Конфигурационный подход + +Интерфейс строится на основе конфигурации (homeScreenConfig), что позволяет легко изменять структуру экранов без изменения кода. + +### Компонент BlockRenderer + +Рендерит различные блоки в зависимости от их типа, что обеспечивает гибкость и переиспользуемость компонентов. + +### Воркфлоу генерации + +Сложная конфигурация для нейросети (baseWorkflow), которая включает в себя различные модели и операции для генерации стикеров. + +### Обработка изображений + +- Локальная обработка изображений перед отправкой +- Кэширование результатов в галерее +- Отложенная загрузка изображений +- Обработка состояний загрузки и ошибок + +## Безопасность + +1. Все API запросы выполняются только через сервер +2. Клиент не имеет прямого доступа к API генерации +3. Валидация пользователя происходит на сервере +4. Проверка баланса выполняется на сервере перед генерацией + +## Дальнейшее развитие + +1. Добавление новых стилей генерации +2. Система рейтинга стикеров +3. Социальные функции (шаринг, коллекции) +4. Интеграция с другими сервисами Telegram diff --git a/README.md b/README.md new file mode 100644 index 0000000..c6ea06b --- /dev/null +++ b/README.md @@ -0,0 +1,112 @@ +# StickerAI Front + +Фронтенд для приложения генерации стикеров для Telegram. Это Telegram MiniApp, которое позволяет пользователям загружать свои фотографии, обрезать их, выбирать стиль и образ для генерации стикеров, а затем получать готовые стикеры. + +## Технологический стек + +- **Фронтенд**: React + TypeScript + Vite +- **Маршрутизация**: React Router +- **Стили**: CSS Modules +- **API**: REST API + +## Установка и запуск + +### Требования +- Node.js 16+ и npm + +### Локальная разработка +```bash +# Установка зависимостей +npm install + +# Запуск в режиме разработки +npm run dev +``` + +### Сборка для продакшена +```bash +# Сборка проекта +npm run build + +# Предпросмотр собранного проекта +npm run preview +``` + +## Деплой на сервер Ubuntu + +### Подготовка сервера +```bash +# Обновление пакетов +sudo apt update +sudo apt upgrade -y + +# Установка Git +sudo apt install -y git + +# Установка Node.js и npm +sudo apt install -y curl +curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - +sudo apt install -y nodejs + +# Проверка установки +node -v +npm -v + +# Установка PM2 +npm install -g pm2 +``` + +### Клонирование и настройка проекта +```bash +# Клонирование репозитория +git clone https://git.gymnasticstuff.uk/kazachilo/StickerAI-Front.git +cd StickerAI-Front + +# Установка зависимостей +npm install + +# Сборка проекта +npm run build +``` + +### Запуск приложения с PM2 +```bash +# Запуск приложения через PM2 +cd /path/to/StickerAI-Front +pm2 serve --spa dist 3000 --name sticker-app + +# Настройка автозапуска PM2 при перезагрузке сервера +pm2 startup +# Выполните команду, которую выдаст предыдущая инструкция +pm2 save +``` + +### Обновление проекта в будущем +```bash +# Переход в директорию проекта +cd /path/to/StickerAI-Front + +# Получение последних изменений +git pull + +# Установка новых зависимостей (если были добавлены) +npm install + +# Сборка проекта +npm run build + +# Перезапуск PM2 +pm2 restart sticker-app +``` + +## API Эндпоинты + +Приложение взаимодействует с API по адресу: +- https://stickerserver.gymnasticstuff.uk - для основных операций +- https://translate.maxdev.keenetic.pro/translate - для перевода текста + +## Дополнительная документация + +Для более подробной информации о проекте смотрите: +- [PROJECT_OVERVIEW.md](PROJECT_OVERVIEW.md) - обзор проекта +- [ARCHITECTURE.md](ARCHITECTURE.md) - архитектура проекта diff --git a/TG miniapps API official.md b/TG miniapps API official.md new file mode 100644 index 0000000..e692ab8 --- /dev/null +++ b/TG miniapps API official.md @@ -0,0 +1,414 @@ +Telegram Mini Apps Documentation +Introduction +Telegram Mini Apps позволяют разработчикам создавать высокофункциональные интерфейсы с использованием JavaScript, которые могут быть запущены непосредственно внутри Telegram и потенциально заменить традиционные веб-сайты. Mini Apps поддерживают seamless authorization, платежи через сторонних провайдеров (включая Google Pay и Apple Pay), а также персонализированные push-уведомления и многое другое. + +Recent Updates +November 17, 2024 - Bot API 8.0 +Full-Screen Mode: Mini Apps теперь могут переходить в полноэкранный режим в портретной и ландшафтной ориентации. + +Методы: +requestFullscreen() +exitFullscreen() +Поля: +safeAreaInset: Объект, представляющий отступы безопасной области устройства, учитывающие системные элементы интерфейса, такие как вырезы или панели навигации. +top: Целое число, представляющее отступ сверху в пикселях. +bottom: Целое число, представляющее отступ снизу в пикселях. +left: Целое число, представляющее отступ слева в пикселях. +right: Целое число, представляющее отступ справа в пикселях. +contentSafeAreaInset: Объект, представляющий безопасную область для отображения контента внутри приложения, свободную от перекрывающихся элементов интерфейса Telegram. +top: Целое число, представляющее отступ сверху в пикселях. +bottom: Целое число, представляющее отступ снизу в пикселях. +left: Целое число, представляющее отступ слева в пикселях. +right: Целое число, представляющее отступ справа в пикселях. +isActive: Логическое значение, указывающее, активно ли приложение в данный момент. +isFullscreen: Логическое значение, указывающее, находится ли Mini App в настоящее время в полноэкранном режиме. +События: +activated +deactivated +safeAreaChanged +contentSafeAreaChanged +fullscreenChanged +fullscreenFailed +Homescreen Shortcuts: Mini Apps теперь могут быть добавлены в качестве ярлыков на главный экран мобильных устройств. + +Методы: +addToHomeScreen() +checkHomeScreenStatus([callback]) +События: +homeScreenAdded +homeScreenChecked +Emoji Status: Mini Apps теперь могут предлагать пользователям установить статус в виде emoji или запросить доступ для автоматического обновления статуса. + +Методы: +setEmojiStatus(custom_emoji_id[, params, callback]) +requestEmojiStatusAccess([callback]) +События: +emojiStatusSet +emojiStatusFailed +emojiStatusAccessRequested +Media Sharing and File Downloads: Пользователи теперь могут делиться медиа напрямую из Mini Apps. + +Методы: +shareMessage(msg_id[, callback]) +downloadFile(params[, callback]) +События: +shareMessageSent +shareMessageFailed +fileDownloadRequested +Geolocation Access: Mini Apps теперь могут запрашивать доступ к геолокации пользователя. + +Поле: +LocationManager +События: +locationManagerUpdated +locationRequested +Device Motion Tracking: Mini Apps теперь могут отслеживать подробные данные о движении устройства. + +Поля: +isOrientationLocked +Accelerometer +DeviceOrientation +Gyroscope +Методы: +lockOrientation() +unlockOrientation() +События: +accelerometerStarted +accelerometerStopped +accelerometerChanged +accelerometerFailed +deviceOrientationStarted +deviceOrientationStopped +deviceOrientationChanged +deviceOrientationFailed +gyroscopeStarted +gyroscopeStopped +gyroscopeChanged +gyroscopeFailed +Subscription Plans and Gifts for Telegram Stars: Mini Apps теперь поддерживают платные подписки, работающие на базе Telegram Stars. + +Детали: Смотрите документацию Bot API для реализации платных подписок и подарков. +Loading Screen Customization: Mini Apps могут настраивать экран загрузки, добавляя свой собственный значок и специфические цвета для светлой и темной темы. + +Доступ: Настройки доступны в @BotFather. +Hardware-specific Optimizations: Mini Apps, работающие на Android, теперь могут получать базовую информацию о аппаратном обеспечении устройства. + +Информация: OS, версии App и SDK, модель устройства и класс производительности. +General: + +Поле photo_url в классе WebAppUser теперь доступно для всех Mini Apps. +Третьи стороны (например, строители Mini App, внешние SDK и т.д.) могут проверять данные, не зная токена бота приложения. +Отладка расширена для полной поддержки устройств iOS. +Safe Area Inset +Описание +Поля safeAreaInset и contentSafeAreaInset предоставляют информацию о безопасных областях экрана, чтобы избежать перекрытия с системными элементами интерфейса, такими как вырезы или панели навигации. + +Поля +top: Целое число, представляющее отступ сверху в пикселях. +bottom: Целое число, представляющее отступ снизу в пикселях. +left: Целое число, представляющее отступ слева в пикселях. +right: Целое число, представляющее отступ справа в пикселях. +CSS Variables +--tg-safe-area-inset-top +--tg-safe-area-inset-bottom +--tg-safe-area-inset-left +--tg-safe-area-inset-right +Additional Information +ThemeParams +Mini Apps могут адаптировать внешний вид интерфейса в реальном времени в соответствии с настройками темы пользователя. + +bg_color: Цвет фона. +text_color: Основной цвет текста. +hint_color: Цвет подсказок. +link_color: Цвет ссылок. +button_color: Цвет кнопок. +button_text_color: Цвет текста кнопок. +secondary_bg_color: Дополнительный цвет фона. +header_bg_color: Цвет фона заголовка. +bottom_bar_bg_color: Цвет фона нижней панели. +accent_text_color: Цвет акцентного текста. +section_bg_color: Цвет фона секции. +section_header_text_color: Цвет текста заголовка секции. +section_separator_color: Цвет разделителя секции. +subtitle_text_color: Цвет текста подзаголовка. +destructive_text_color: Цвет текста для деструктивных действий. +WebAppUser +id: Уникальный идентификатор пользователя. +is_bot: Логическое значение, указывающее, является ли пользователь ботом. +first_name: Имя пользователя. +last_name: Фамилия пользователя. +username: Имя пользователя в Telegram. +language_code: Код языка пользователя. +is_premium: Логическое значение, указывающее, является ли пользователь пользователем Telegram Premium. +added_to_attachment_menu: Логическое значение, указывающее, добавлен ли бот в меню вложений. +allows_write_to_pm: Логическое значение, указывающее, разрешено ли боту отправлять сообщения пользователю. +photo_url: URL-адрес профильной фотографии пользователя. +Conclusion +Обновленная документация предоставляет более полное и детализированное описание функциональности Telegram Mini Apps, включая важные аспекты, такие как safe area inset, ThemeParams и другие. Это должно помочь ИИ-агенту программирования лучше понимать и использовать возможности Telegram Mini Apps. + +References +Telegram Bot API Documentation +Telegram Mini Apps Overview +ты исключил все остальное, мне нужна вся информация в одном тексте +Понял вас. Давайте объединим всю информацию в одном тексте, чтобы создать полную и структурированную документацию для Telegram Mini Apps. + +Telegram Mini Apps: Полная Документация +Введение +Telegram Mini Apps предоставляют разработчикам возможность создавать гибкие и интерактивные интерфейсы с использованием JavaScript, которые могут быть запущены непосредственно внутри приложения Telegram. Эти приложения могут заменить традиционные веб-сайты, предлагая пользователям возможность взаимодействовать с сервисами без необходимости выхода из мессенджера. Mini Apps поддерживают: + +Seamless Authorization: Авторизация без необходимости ввода данных вручную. +Payments: Платежи через сторонних провайдеров, включая Google Pay и Apple Pay. +Push Notifications: Персонализированные push-уведомления. +Custom Interfaces: Пользовательские интерфейсы, которые могут быть адаптированы под нужды пользователя. +Основные Возможности +1. Full-Screen Mode (Полноэкранный Режим) +Mini Apps теперь могут работать в полноэкранном режиме, поддерживая как портретную, так и ландшафтную ориентацию. Это позволяет размещать больше контента, включая игры и медиа в широкоэкранном формате. + +Методы: +requestFullscreen(): Запрашивает открытие Mini App в полноэкранном режиме. +exitFullscreen(): Запрашивает выход из полноэкранного режима. +Поля: +safeAreaInset: Объект, представляющий отступы безопасной области устройства. +top: Целое число, представляющее отступ сверху в пикселях. +bottom: Целое число, представляющее отступ снизу в пикселях. +left: Целое число, представляющее отступ слева в пикселях. +right: Целое число, представляющее отступ справа в пикселях. +contentSafeAreaInset: Объект, представляющий безопасную область для отображения контента. +top: Целое число, представляющее отступ сверху в пикселях. +bottom: Целое число, представляющее отступ снизу в пикселях. +left: Целое число, представляющее отступ слева в пикселях. +right: Целое число, представляющее отступ справа в пикселях. +isActive: Логическое значение, указывающее, активно ли приложение. +isFullscreen: Логическое значение, указывающее, находится ли Mini App в полноэкранном режиме. +События: +activated: Срабатывает, когда Mini App становится активным. +deactivated: Срабатывает, когда Mini App становится неактивным. +safeAreaChanged: Срабатывает при изменении безопасной области. +contentSafeAreaChanged: Срабатывает при изменении безопасной области для контента. +fullscreenChanged: Срабатывает при изменении состояния полноэкранного режима. +fullscreenFailed: Срабатывает, если запрос на переход в полноэкранный режим не удался. +2. Homescreen Shortcuts (Ярлыки на Главный Экран) +Пользователи могут добавлять Mini Apps в качестве ярлыков на главный экран своих устройств для быстрого доступа. + +Методы: +addToHomeScreen(): Предлагает пользователю добавить Mini App на главный экран. +checkHomeScreenStatus([callback]): Проверяет, поддерживается ли функция добавления на главный экран и добавлен ли уже ярлык. +События: +homeScreenAdded: Срабатывает, когда ярлык успешно добавлен на главный экран. +homeScreenChecked: Срабатывает после проверки статуса ярлыка на главном экране. +3. Emoji Status (Статус в Виде Emoji) +Mini Apps могут предлагать пользователям установить статус в виде emoji или запросить доступ для автоматического обновления статуса. + +Методы: +setEmojiStatus(custom_emoji_id[, params, callback]): Открывает диалоговое окно для установки пользователем указанного emoji в качестве статуса. +requestEmojiStatusAccess([callback]): Запрашивает разрешение на управление статусом пользователя в виде emoji. +События: +emojiStatusSet: Срабатывает, когда статус в виде emoji успешно установлен. +emojiStatusFailed: Срабатывает, если установка статуса в виде emoji не удалась. +emojiStatusAccessRequested: Срабатывает при запросе разрешения на управление статусом в виде emoji. +4. Media Sharing and File Downloads (Обмен Медиа и Загрузка Файлов) +Пользователи могут делиться медиа и загружать файлы напрямую из Mini Apps. + +Методы: +shareMessage(msg_id[, callback]): Открывает диалоговое окно для отправки сообщения, предоставленного ботом. +downloadFile(params[, callback]): Открывает нативное всплывающее окно, предлагающее пользователю загрузить файл. +События: +shareMessageSent: Срабатывает, когда сообщение успешно отправлено. +shareMessageFailed: Срабатывает, если отправка сообщения не удалась. +fileDownloadRequested: Срабатывает, когда пользователь отвечает на запрос загрузки файла. +5. Geolocation Access (Доступ к Геолокации) +Mini Apps могут запрашивать доступ к геолокации пользователя, что позволяет создавать различные сервисы, основанные на местоположении. + +Поле: +LocationManager: Объект для управления доступом к местоположению. +События: +locationManagerUpdated: Срабатывает при изменении объекта LocationManager. +locationRequested: Срабатывает при запросе данных о местоположении. +6. Device Motion Tracking (Отслеживание Движения Устройства) +Mini Apps могут отслеживать данные о движении устройства, что позволяет реализовать более продвинутые инструменты и возможности. + +Поля: +isOrientationLocked: Логическое значение, указывающее, заблокирована ли ориентация. +Accelerometer: Объект для доступа к данным акселерометра. +DeviceOrientation: Объект для доступа к данным об ориентации устройства. +Gyroscope: Объект для доступа к данным гироскопа. +Методы: +lockOrientation(): Блокирует ориентацию Mini App в текущем режиме. +unlockOrientation(): Разблокирует ориентацию Mini App, позволяя ей изменяться в зависимости от вращения устройства. +События: +accelerometerStarted: Срабатывает, когда отслеживание акселерометра успешно начато. +accelerometerStopped: Срабатывает, когда отслеживание акселерометра остановлено. +accelerometerChanged: Срабатывает с заданной частотой после вызова метода start, отправляя текущие данные акселерометра. +accelerometerFailed: Срабатывает, если запрос на начало отслеживания акселерометра не удался. +deviceOrientationStarted: Срабатывает, когда отслеживание ориентации устройства успешно начато. +deviceOrientationStopped: Срабатывает, когда отслеживание ориентации устройства остановлено. +deviceOrientationChanged: Срабатывает с заданной частотой после вызова метода start, отправляя текущие данные об ориентации устройства. +deviceOrientationFailed: Срабатывает, если запрос на начало отслеживания ориентации устройства не удался. +gyroscopeStarted: Срабатывает, когда отслеживание гироскопа успешно начато. +gyroscopeStopped: Срабатывает, когда отслеживание гироскопа остановлено. +gyroscopeChanged: Срабатывает с заданной частотой после вызова метода start, отправляя текущие данные гироскопа. +gyroscopeFailed: Срабатывает, если запрос на начало отслеживания гироскопа не удался. +7. Subscription Plans and Gifts for Telegram Stars (Платные Подписки и Подарки) +Mini Apps теперь поддерживают платные подписки, работающие на базе Telegram Stars, что позволяет разработчикам монетизировать свои приложения с помощью различных уровней контента и функций. + +Детали: Смотрите документацию Bot API для реализации платных подписок и подарков. +8. Loading Screen Customization (Настройка Экрана Загрузки) +Mini Apps могут настраивать свой экран загрузки, добавляя свой собственный значок и специфические цвета для светлой и темной темы. + +Доступ: Настройки доступны в @BotFather. +9. Hardware-specific Optimizations (Оптимизация для Аппаратного Обеспечения) +Mini Apps, работающие на Android, могут получать базовую информацию о аппаратном обеспечении устройства, что позволяет оптимизировать пользовательский опыт в зависимости от возможностей устройства. + +Информация: OS, версии App и SDK, модель устройства и класс производительности. +Дополнительные Возможности +Color Schemes (Цветовые Схемы) +Mini Apps получают данные о текущей цветовой теме пользователя в реальном времени, что позволяет адаптировать внешний вид интерфейса. + +Design Guidelines (Рекомендации по Дизайну) +Responsiveness: Все элементы должны быть отзывчивыми и разработанными с учетом мобильного-first подхода. +UI Consistency: Интерактивные элементы должны соответствовать стилю, поведению и намерениям существующих компонентов UI. +Performance: Все анимации должны быть плавными, желательно 60fps. +Accessibility: Все вводы и изображения должны содержать метки для обеспечения доступности. +Theme Awareness: Приложение должно обеспечивать бесшовный опыт, отслеживая динамические тематические цвета, предоставляемые API, и используя их соответствующим образом. +Safe Area: Убедитесь, что интерфейс приложения учитывает безопасную область и безопасную область контента, чтобы избежать перекрытия с элементами управления, особенно при использовании полноэкранного режима. +Device Optimization: Для устройств Android, учитывайте дополнительную информацию в User-Agent и адаптируйтесь к классу производительности устройства, отключая анимации и визуальные эффекты на устройствах с низкой производительностью для обеспечения плавной работы. +Реализация Mini Apps +Telegram поддерживает семь различных способов запуска Mini Apps: + +1. +Main Mini App from Profile Button (Основное Mini App из кнопки профиля) +2. +Keyboard Button Mini Apps (Mini Apps из кнопки клавиатуры) +Описание: Mini Apps, запускаемые из кнопки клавиатуры типа web_app, могут отправлять данные обратно боту в служебном сообщении с помощью Telegram.WebApp.sendData. +Использование: Пользовательские интерфейсы для ввода данных, многоразовые компоненты. +3. +Inline Button Mini Apps (Mini Apps из кнопки инлайн) +Описание: Для более интерактивных Mini Apps используйте кнопку инлайн типа web_app. +Использование: Полноценные веб-сервисы и интеграции. +4. +Launching Mini Apps from the Menu Button (Запуск Mini Apps из кнопки меню) +Описание: Mini Apps могут быть запущены из настраиваемой кнопки меню. +Использование: Быстрый доступ к приложению. +5. +Inline Mode Mini Apps (Mini Apps в режиме инлайн) +Описание: Mini Apps, запускаемые через кнопку web_app в ответе на инлайн-запрос, могут использоваться в любом месте в режиме инлайн. +Использование: Полноценные веб-сервисы и интеграции в режиме инлайн. +6. +Direct Link Mini Apps (Mini Apps по прямой ссылке) +Описание: Mini App Bots могут быть запущены по прямой ссылке в любом чате. +Использование: Полноценные веб-сервисы и интеграции, которые любой пользователь может открыть в один клик. +7. +Launching Mini Apps from the Attachment Menu (Запуск Mini Apps из меню вложений) +Описание: Mini App Bots могут быть добавлены прямо в меню вложений пользователя, что позволяет быстро запускать их из любого чата. +Использование: Быстрый доступ к приложению. +Инициализация Mini Apps +Для подключения вашего Mini App к клиенту Telegram, поместите скрипт telegram-web-app.js в тег перед любыми другими скриптами: + +html + +Доступные Поля +initData: Строка с необработанными данными, переданными в Mini App. +initDataUnsafe: Объект с входными данными, переданными в Mini App. +version: Версия Bot API, доступная в Telegram-приложении пользователя. +platform: Название платформы Telegram-приложения пользователя. +colorScheme: Текущая цветовая схема, используемая в Telegram-приложении. +themeParams: Объект, содержащий текущие настройки темы, используемые в Telegram-приложении. +isActive: Логическое значение, указывающее, активно ли Mini App в данный момент. +isExpanded: Логическое значение, указывающее, развернуто ли Mini App до максимально доступной высоты. +viewportHeight: Текущая высота видимой области Mini App. +viewportStableHeight: Высота видимой области Mini App в последнем стабильном состоянии. +headerColor: Текущий цвет заголовка. +backgroundColor: Текущий цвет фона. +bottomBarColor: Текущий цвет нижней панели. +isClosingConfirmationEnabled: Логическое значение, указывающее, включен ли диалог подтверждения при закрытии Mini App. +isVerticalSwipesEnabled: Логическое значение, указывающее, включены ли вертикальные смахивания для закрытия или минимизации Mini App. +isFullscreen: Логическое значение, указывающее, находится ли Mini App в настоящее время в полноэкранном режиме. +isOrientationLocked: Логическое значение, указывающее, заблокирована ли ориентация Mini App. +safeAreaInset: Объект, представляющий отступы безопасной области устройства. +contentSafeAreaInset: Объект, представляющий безопасную область для отображения контента. +Доступные Методы +isVersionAtLeast(version): Возвращает true, если версия приложения пользователя поддерживает Bot API, равную или выше указанной. +setHeaderColor(color): Устанавливает цвет заголовка приложения. +setBackgroundColor(color): Устанавливает цвет фона приложения. +setBottomBarColor(color): Устанавливает цвет нижней панели приложения. +enableClosingConfirmation(): Включает диалог подтверждения при закрытии Mini App. +disableClosingConfirmation(): Отключает диалог подтверждения при закрытии Mini App. +enableVerticalSwipes(): Включает вертикальные смахивания для закрытия или минимизации Mini App. +disableVerticalSwipes(): Отключает вертикальные смахивания для закрытия или минимизации Mini App. +requestFullscreen(): Запрашивает открытие Mini App в полноэкранном режиме. +exitFullscreen(): Запрашивает выход из полноэкранного режима. +lockOrientation(): Блокирует ориентацию Mini App в текущем режиме. +unlockOrientation(): Разблокирует ориентацию Mini App. +addToHomeScreen(): Предлагает пользователю добавить Mini App на главный экран. +checkHomeScreenStatus([callback]): Проверяет, поддерживается ли функция добавления на главный экран и добавлен ли уже ярлык. +sendData(data): Отправляет данные боту. +switchInlineQuery(query[, choose_chat_types]): Вставляет имя бота и указанный инлайн-запрос в поле ввода текущего чата. +openLink(url[, options]): Открывает ссылку во внешнем браузере. +openTelegramLink(url): Открывает ссылку в приложении Telegram. +openInvoice(url[, callback]): Открывает счет с использованием указанной ссылки. +shareToStory(media_url[, params]): Открывает нативный редактор историй с указанной медиа. +shareMessage(msg_id[, callback]): Открывает диалоговое окно, позволяющее пользователю поделиться сообщением. +setEmojiStatus(custom_emoji_id[, params, callback]): Открывает диалоговое окно для установки указанного emoji в качестве статуса. +requestEmojiStatusAccess([callback]): Запрашивает разрешение для бота на управление статусом пользователя. +downloadFile(params[, callback]): Отображает нативное всплывающее окно, предлагающее пользователю загрузить файл. +showPopup(params[, callback]): Отображает нативное всплывающее окно. +showAlert(message[, callback]): Отображает сообщение в простом всплывающем окне с кнопкой 'Закрыть'. +showConfirm(message[, callback]): Отображает сообщение в простом окне подтверждения с кнопками 'OK' и 'Cancel'. +showScanQrPopup(params[, callback]): Отображает нативное всплывающее окно для сканирования QR-кода. +closeScanQrPopup(): Закрывает нативное всплывающее окно для сканирования QR-кода. +readTextFromClipboard([callback]): Запрашивает текст из буфера обмена. +requestWriteAccess([callback]): Запрашивает разрешение для бота на отправку сообщений пользователю. +requestContact([callback]): Запрашивает у пользователя его номер телефона. +События +Mini Apps могут получать события от Telegram-приложения, к которым можно прикрепить обработчик с помощью метода Telegram.WebApp.onEvent(eventType, eventHandler). Внутри eventHandler объект this ссылается на Telegram.WebApp, а набор параметров, передаваемых в обработчик, зависит от типа события. + +Список Событий +activated: Срабатывает, когда Mini App становится активным. +deactivated: Срабатывает, когда Mini App становится неактивным. +themeChanged: Срабатывает при изменении настроек темы в Telegram-приложении. +viewportChanged: Срабатывает при изменении видимой части Mini App. +safeAreaChanged: Срабатывает при изменении отступов безопасной области устройства. +contentSafeAreaChanged: Срабатывает при изменении отступов безопасной области для контента. +mainButtonClicked: Срабатывает при нажатии на главную кнопку. +secondaryButtonClicked: Срабатывает при нажатии на дополнительную кнопку. +backButtonClicked: Срабатывает при нажатии на кнопку "Назад". +settingsButtonClicked: Срабатывает при нажатии на элемент "Настройки" в контекстном меню. +invoiceClosed: Срабатывает при закрытии открытого счета. +popupClosed: Срабатывает при закрытии открытого всплывающего окна. +qrTextReceived: Срабатывает, когда сканер QR-кода захватывает код с текстовыми данными. +scanQrPopupClosed: Срабатывает, когда пользователь закрывает всплывающее окно сканера QR-кода. +clipboardTextReceived: Срабатывает при вызове метода readTextFromClipboard. +writeAccessRequested: Срабатывает при запросе разрешения на запись. +contactRequested: Срабатывает при запросе номера телефона пользователя. +biometricManagerUpdated: Срабатывает при изменении объекта BiometricManager. +biometricAuthRequested: Срабатывает при запросе биометрической аутентификации. +biometricTokenUpdated: Срабатывает при обновлении биометрического токена. +fullscreenChanged: Срабатывает при входе или выходе из полноэкранного режима. +fullscreenFailed: Срабатывает, если запрос на вход в полноэкранный режим не удался. +homeScreenAdded: Срабатывает, когда Mini App успешно добавлен на главный экран. +homeScreenChecked: Срабатывает после проверки статуса главного экрана. +accelerometerStarted: Срабатывает, когда отслеживание акселерометра успешно начато. +accelerometerStopped: Срабатывает, когда отслеживание акселерометра остановлено. +accelerometerChanged: Срабатывает с заданной частотой после вызова метода start. +accelerometerFailed: Срабатывает, если запрос на начало отслеживания акселерометра не удался. +deviceOrientationStarted: Срабатывает, когда отслеживание ориентации устройства успешно начато. +deviceOrientationStopped: Срабатывает, когда отслеживание ориентации устройства остановлено. +deviceOrientationChanged: Срабатывает с заданной частотой после вызова метода start. +gyroscopeStarted: Срабатывает, когда отслеживание гироскопа успешно начато. +gyroscopeStopped: Срабатывает, когда отслеживание гироскопа остановлено. +gyroscopeChanged: Срабатывает с заданной частотой после вызова метода start. +gyroscopeFailed: Срабатывает, если запрос на начало отслеживания гироскопа не удался. +locationManagerUpdated: Срабатывает при изменении объекта LocationManager. +locationRequested: Срабатывает при запросе данных о местоположении. +shareMessageSent: Срабатывает, когда сообщение успешно отправлено. +shareMessageFailed: Срабатывает, если отправка сообщения не удалась. +emojiStatusSet: Срабатывает, когда статус в виде emoji успешно установлен. +emojiStatusFailed: Срабатывает, если установка статуса в виде emoji не удалась. +emojiStatusAccessRequested: Срабатывает при запросе разрешения на управление статусом в виде emoji. +fileDownloadRequested: Срабатывает, когда пользователь отвечает на запрос загрузки файла. +Заключение +Telegram Mini Apps предоставляют мощную платформу для разработчиков для создания интерактивных и функциональных приложений внутри экосистемы Telegram. Благодаря обширному API и предоставленным рекомендациям, разработчики могут создавать инновационные решения, которые улучшают пользовательский опыт и вовлеченность. + +Ссылки +Telegram Bot API Documentation +Telegram Mini Apps Overview diff --git a/TG_bot_API_official_stickers.md b/TG_bot_API_official_stickers.md new file mode 100644 index 0000000..9840268 --- /dev/null +++ b/TG_bot_API_official_stickers.md @@ -0,0 +1,210 @@ +Stickers +The following methods and objects allow your bot to handle stickers and sticker sets. + +Sticker +This object represents a sticker. + +Field Type Description +file_id String Identifier for this file, which can be used to download or reuse the file +file_unique_id String Unique identifier for this file, which is supposed to be the same over time and for different bots. Can't be used to download or reuse the file. +type String Type of the sticker, currently one of “regular”, “mask”, “custom_emoji”. The type of the sticker is independent from its format, which is determined by the fields is_animated and is_video. +width Integer Sticker width +height Integer Sticker height +is_animated Boolean True, if the sticker is animated +is_video Boolean True, if the sticker is a video sticker +thumbnail PhotoSize Optional. Sticker thumbnail in the .WEBP or .JPG format +emoji String Optional. Emoji associated with the sticker +set_name String Optional. Name of the sticker set to which the sticker belongs +premium_animation File Optional. For premium regular stickers, premium animation for the sticker +mask_position MaskPosition Optional. For mask stickers, the position where the mask should be placed +custom_emoji_id String Optional. For custom emoji stickers, unique identifier of the custom emoji +needs_repainting True Optional. True, if the sticker must be repainted to a text color in messages, the color of the Telegram Premium badge in emoji status, white color on chat photos, or another appropriate color in other places +file_size Integer Optional. File size in bytes +StickerSet +This object represents a sticker set. + +Field Type Description +name String Sticker set name +title String Sticker set title +sticker_type String Type of stickers in the set, currently one of “regular”, “mask”, “custom_emoji” +stickers Array of Sticker List of all set stickers +thumbnail PhotoSize Optional. Sticker set thumbnail in the .WEBP, .TGS, or .WEBM format +MaskPosition +This object describes the position on faces where a mask should be placed by default. + +Field Type Description +point String The part of the face relative to which the mask should be placed. One of “forehead”, “eyes”, “mouth”, or “chin”. +x_shift Float Shift by X-axis measured in widths of the mask scaled to the face size, from left to right. For example, choosing -1.0 will place mask just to the left of the default mask position. +y_shift Float Shift by Y-axis measured in heights of the mask scaled to the face size, from top to bottom. For example, 1.0 will place the mask just below the default mask position. +scale Float Mask scaling coefficient. For example, 2.0 means double size. +InputSticker +This object describes a sticker to be added to a sticker set. + +Field Type Description +sticker InputFile or String The added sticker. Pass a file_id as a String to send a file that already exists on the Telegram servers, pass an HTTP URL as a String for Telegram to get a file from the Internet, upload a new one using multipart/form-data, or pass “attach://” to upload a new one using multipart/form-data under name. Animated and video stickers can't be uploaded via HTTP URL. More information on Sending Files » +format String Format of the added sticker, must be one of “static” for a .WEBP or .PNG image, “animated” for a .TGS animation, “video” for a .WEBM video +emoji_list Array of String List of 1-20 emoji associated with the sticker +mask_position MaskPosition Optional. Position where the mask should be placed on faces. For “mask” stickers only. +keywords Array of String Optional. List of 0-20 search keywords for the sticker with total length of up to 64 characters. For “regular” and “custom_emoji” stickers only. +sendSticker +Use this method to send static .WEBP, animated .TGS, or video .WEBM stickers. On success, the sent Message is returned. + +Parameter Type Required Description +business_connection_id String Optional Unique identifier of the business connection on behalf of which the message will be sent +chat_id Integer or String Yes Unique identifier for the target chat or username of the target channel (in the format @channelusername) +message_thread_id Integer Optional Unique identifier for the target message thread (topic) of the forum; for forum supergroups only +sticker InputFile or String Yes Sticker to send. Pass a file_id as String to send a file that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a .WEBP sticker from the Internet, or upload a new .WEBP, .TGS, or .WEBM sticker using multipart/form-data. More information on Sending Files ». Video and animated stickers can't be sent via an HTTP URL. +emoji String Optional Emoji associated with the sticker; only for just uploaded stickers +disable_notification Boolean Optional Sends the message silently. Users will receive a notification with no sound. +protect_content Boolean Optional Protects the contents of the sent message from forwarding and saving +allow_paid_broadcast Boolean Optional Pass True to allow up to 1000 messages per second, ignoring broadcasting limits for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's balance +message_effect_id String Optional Unique identifier of the message effect to be added to the message; for private chats only +reply_parameters ReplyParameters Optional Description of the message to reply to +reply_markup InlineKeyboardMarkup or ReplyKeyboardMarkup or ReplyKeyboardRemove or ForceReply Optional Additional interface options. A JSON-serialized object for an inline keyboard, custom reply keyboard, instructions to remove a reply keyboard or to force a reply from the user +getStickerSet +Use this method to get a sticker set. On success, a StickerSet object is returned. + +Parameter Type Required Description +name String Yes Name of the sticker set +getCustomEmojiStickers +Use this method to get information about custom emoji stickers by their identifiers. Returns an Array of Sticker objects. + +Parameter Type Required Description +custom_emoji_ids Array of String Yes A JSON-serialized list of custom emoji identifiers. At most 200 custom emoji identifiers can be specified. +uploadStickerFile +Use this method to upload a file with a sticker for later use in the createNewStickerSet, addStickerToSet, or replaceStickerInSet methods (the file can be used multiple times). Returns the uploaded File on success. + +Parameter Type Required Description +user_id Integer Yes User identifier of sticker file owner +sticker InputFile Yes A file with the sticker in .WEBP, .PNG, .TGS, or .WEBM format. See https://core.telegram.org/stickers for technical requirements. More information on Sending Files » +sticker_format String Yes Format of the sticker, must be one of “static”, “animated”, “video” +createNewStickerSet +Use this method to create a new sticker set owned by a user. The bot will be able to edit the sticker set thus created. Returns True on success. + +Parameter Type Required Description +user_id Integer Yes User identifier of created sticker set owner +name String Yes Short name of sticker set, to be used in t.me/addstickers/ URLs (e.g., animals). Can contain only English letters, digits and underscores. Must begin with a letter, can't contain consecutive underscores and must end in "_by_". is case insensitive. 1-64 characters. +title String Yes Sticker set title, 1-64 characters +stickers Array of InputSticker Yes A JSON-serialized list of 1-50 initial stickers to be added to the sticker set +sticker_type String Optional Type of stickers in the set, pass “regular”, “mask”, or “custom_emoji”. By default, a regular sticker set is created. +needs_repainting Boolean Optional Pass True if stickers in the sticker set must be repainted to the color of text when used in messages, the accent color if used as emoji status, white on chat photos, or another appropriate color based on context; for custom emoji sticker sets only +addStickerToSet +Use this method to add a new sticker to a set created by the bot. Emoji sticker sets can have up to 200 stickers. Other sticker sets can have up to 120 stickers. Returns True on success. + +Parameter Type Required Description +user_id Integer Yes User identifier of sticker set owner +name String Yes Sticker set name +sticker InputSticker Yes A JSON-serialized object with information about the added sticker. If exactly the same sticker had already been added to the set, then the set isn't changed. +setStickerPositionInSet +Use this method to move a sticker in a set created by the bot to a specific position. Returns True on success. + +Parameter Type Required Description +sticker String Yes File identifier of the sticker +position Integer Yes New sticker position in the set, zero-based +deleteStickerFromSet +Use this method to delete a sticker from a set created by the bot. Returns True on success. + +Parameter Type Required Description +sticker String Yes File identifier of the sticker +replaceStickerInSet +Use this method to replace an existing sticker in a sticker set with a new one. The method is equivalent to calling deleteStickerFromSet, then addStickerToSet, then setStickerPositionInSet. Returns True on success. + +Parameter Type Required Description +user_id Integer Yes User identifier of the sticker set owner +name String Yes Sticker set name +old_sticker String Yes File identifier of the replaced sticker +sticker InputSticker Yes A JSON-serialized object with information about the added sticker. If exactly the same sticker had already been added to the set, then the set remains unchanged. +setStickerEmojiList +Use this method to change the list of emoji assigned to a regular or custom emoji sticker. The sticker must belong to a sticker set created by the bot. Returns True on success. + +Parameter Type Required Description +sticker String Yes File identifier of the sticker +emoji_list Array of String Yes A JSON-serialized list of 1-20 emoji associated with the sticker +setStickerKeywords +Use this method to change search keywords assigned to a regular or custom emoji sticker. The sticker must belong to a sticker set created by the bot. Returns True on success. + +Parameter Type Required Description +sticker String Yes File identifier of the sticker +keywords Array of String Optional A JSON-serialized list of 0-20 search keywords for the sticker with total length of up to 64 characters +setStickerMaskPosition +Use this method to change the mask position of a mask sticker. The sticker must belong to a sticker set that was created by the bot. Returns True on success. + +Parameter Type Required Description +sticker String Yes File identifier of the sticker +mask_position MaskPosition Optional A JSON-serialized object with the position where the mask should be placed on faces. Omit the parameter to remove the mask position. +setStickerSetTitle +Use this method to set the title of a created sticker set. Returns True on success. + +Parameter Type Required Description +name String Yes Sticker set name +title String Yes Sticker set title, 1-64 characters +setStickerSetThumbnail +Use this method to set the thumbnail of a regular or mask sticker set. The format of the thumbnail file must match the format of the stickers in the set. Returns True on success. + +Parameter Type Required Description +name String Yes Sticker set name +user_id Integer Yes User identifier of the sticker set owner +thumbnail InputFile or String Optional A .WEBP or .PNG image with the thumbnail, must be up to 128 kilobytes in size and have a width and height of exactly 100px, or a .TGS animation with a thumbnail up to 32 kilobytes in size (see https://core.telegram.org/stickers#animation-requirements for animated sticker technical requirements), or a .WEBM video with the thumbnail up to 32 kilobytes in size; see https://core.telegram.org/stickers#video-requirements for video sticker technical requirements. Pass a file_id as a String to send a file that already exists on the Telegram servers, pass an HTTP URL as a String for Telegram to get a file from the Internet, or upload a new one using multipart/form-data. More information on Sending Files ». Animated and video sticker set thumbnails can't be uploaded via HTTP URL. If omitted, then the thumbnail is dropped and the first sticker is used as the thumbnail. +format String Yes Format of the thumbnail, must be one of “static” for a .WEBP or .PNG image, “animated” for a .TGS animation, or “video” for a .WEBM video +setCustomEmojiStickerSetThumbnail +Use this method to set the thumbnail of a custom emoji sticker set. Returns True on success. + +Parameter Type Required Description +name String Yes Sticker set name +custom_emoji_id String Optional Custom emoji identifier of a sticker from the sticker set; pass an empty string to drop the thumbnail and use the first sticker as the thumbnail. +deleteStickerSet +Use this method to delete a sticker set that was created by the bot. Returns True on success. + +Parameter Type Required Description +name String Yes Sticker set name +Gift +This object represents a gift that can be sent by the bot. + +Field Type Description +id String Unique identifier of the gift +sticker Sticker The sticker that represents the gift +star_count Integer The number of Telegram Stars that must be paid to send the sticker +upgrade_star_count Integer Optional. The number of Telegram Stars that must be paid to upgrade the gift to a unique one +total_count Integer Optional. The total number of the gifts of this type that can be sent; for limited gifts only +remaining_count Integer Optional. The number of remaining gifts of this type that can be sent; for limited gifts only +Gifts +This object represent a list of gifts. + +Field Type Description +gifts Array of Gift The list of gifts +getAvailableGifts +Returns the list of gifts that can be sent by the bot to users and channel chats. Requires no parameters. Returns a Gifts object. + +sendGift +Sends a gift to the given user or channel chat. The gift can't be converted to Telegram Stars by the receiver. Returns True on success. + +Parameter Type Required Description +user_id Integer Optional Required if chat_id is not specified. Unique identifier of the target user who will receive the gift. +chat_id Integer or String Optional Required if user_id is not specified. Unique identifier for the chat or username of the channel (in the format @channelusername) that will receive the gift. +gift_id String Yes Identifier of the gift +pay_for_upgrade Boolean Optional Pass True to pay for the gift upgrade from the bot's balance, thereby making the upgrade free for the receiver +text String Optional Text that will be shown along with the gift; 0-128 characters +text_parse_mode String Optional Mode for parsing entities in the text. See formatting options for more details. Entities other than “bold”, “italic”, “underline”, “strikethrough”, “spoiler”, and “custom_emoji” are ignored. +text_entities Array of MessageEntity Optional A JSON-serialized list of special entities that appear in the gift text. It can be specified instead of text_parse_mode. Entities other than “bold”, “italic”, “underline”, “strikethrough”, “spoiler”, and “custom_emoji” are ignored. +verifyUser +Verifies a user on behalf of the organization which is represented by the bot. Returns True on success. + +Parameter Type Required Description +user_id Integer Yes Unique identifier of the target user +custom_description String Optional Custom description for the verification; 0-70 characters. Must be empty if the organization isn't allowed to provide a custom verification description. +verifyChat +Verifies a chat on behalf of the organization which is represented by the bot. Returns True on success. + +Parameter Type Required Description +chat_id Integer or String Yes Unique identifier for the target chat or username of the target channel (in the format @channelusername) +custom_description String Optional Custom description for the verification; 0-70 characters. Must be empty if the organization isn't allowed to provide a custom verification description. +removeUserVerification +Removes verification from a user who is currently verified on behalf of the organization represented by the bot. Returns True on success. + +Parameter Type Required Description +user_id Integer Yes Unique identifier of the target user +removeChatVerification +Removes verification from a chat that is currently verified on behalf of the organization represented by the bot. Returns True on success. + +Parameter Type Required Description +chat_id Integer or String Yes Unique identifier for the target chat or username of the target channel (in the format @channelusername) \ No newline at end of file diff --git a/ava.jpg b/ava.jpg new file mode 100644 index 0000000..23e01fd Binary files /dev/null and b/ava.jpg differ diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..092408a --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,28 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import tseslint from 'typescript-eslint' + +export default tseslint.config( + { ignores: ['dist'] }, + { + extends: [js.configs.recommended, ...tseslint.configs.recommended], + files: ['**/*.{ts,tsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + plugins: { + 'react-hooks': reactHooks, + 'react-refresh': reactRefresh, + }, + rules: { + ...reactHooks.configs.recommended.rules, + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, + }, +) diff --git a/generation_request (7) — копия.json b/generation_request (7) — копия.json new file mode 100644 index 0000000..aee1ad5 --- /dev/null +++ b/generation_request (7) — копия.json @@ -0,0 +1 @@ +{"user_id":12345,"workflow":{"305":{"inputs":{"ckpt_name":"SDXL\\dreamshaperXL_lightningDPMSDE.safetensors"},"class_type":"CheckpointLoaderSimple","_meta":{"title":"Загрузить контрольную точку"}},"307":{"inputs":{"share_norm":"both","share_attn":"q+k","scale":0.7000000000000001,"model":["309",0]},"class_type":"StyleAlignedBatchAlign","_meta":{"title":"StyleAligned Batch Align"}},"308":{"inputs":{"text_positive":"Sticker,chibi:2,Flat:1.5,(full body:2),Simple details,(Empty Background:2)","text_negative":"Realism, photo-realism, real materials,(full body:2)","style":"sai-cinematic","log_prompt":false,"style_positive":true,"style_negative":true},"class_type":"SDXLPromptStyler","_meta":{"title":"SDXL Prompt Styler"}},"309":{"inputs":{"b1":1.3,"b2":1.4000000000000001,"s1":0.9,"s2":0.2,"model":["406",0]},"class_type":"FreeU_V2","_meta":{"title":"FreeU_V2"}},"312":{"inputs":{"text":["308",1],"clip":["406",1]},"class_type":"CLIPTextEncode","_meta":{"title":"Кодирование текста CLIP (Запрос)"}},"313":{"inputs":{"prompt_1":"Boxers, with red boxing gloves, swinging their fists","prompt_2":"Dressed in a Superman costume","prompt_3":"Dress up as Santa Claus with a rattle in your hand","prompt_4":"Holding a bouquet of roses in his hand and wearing a gown","prompt_5":"Dressed in a wide hip hop suit,Playing the guitar,tattooing,denim,street dance,dancing","simple_prompt_list":["316",0]},"class_type":"CR Simple Prompt List","_meta":{"title":"CR Simple Prompt List (Legacy)"}},"314":{"inputs":{"keyframe_interval":1,"loops":1,"transition_type":"Default","transition_speed":"Default","transition_profile":"Default","keyframe_format":"Deforum","simple_prompt_list":["313",0]},"class_type":"CR Simple Prompt List Keyframes","_meta":{"title":"CR Simple Prompt List Keyframes (Legacy)"}},"316":{"inputs":{"prompt_1":"Riding a skateboard with the wind in the hair","prompt_2":"Pirate captain with a sword","prompt_3":"Drinking coffee from a coffee cup and smiling","prompt_4":"Dressed in a spacesuit and wearing a glass helmet","prompt_5":"Wearing luxurious clothes, holding a red heart-shaped balloon and smiling"},"class_type":"CR Simple Prompt List","_meta":{"title":"CR Simple Prompt List (Legacy)"}},"318":{"inputs":{},"class_type":"Anything Everywhere3","_meta":{"title":"Anything Everywhere3"}},"326":{"inputs":{"image":"photo_2025-02-03_14-06-19.jpg","upload":"image"},"class_type":"LoadImage","_meta":{"title":"Загрузить изображение"}},"328":{"inputs":{"seed":["404",0],"steps":7,"cfg":2,"sampler_name":"dpmpp_2m","scheduler":"karras","denoise":1,"preview_method":"auto","vae_decode":"true","model":["347",0],"positive":["339",0],"negative":["312",0],"latent_image":["348",0],"optional_vae":["305",2]},"class_type":"KSampler (Efficient)","_meta":{"title":"KSampler (Efficient)"}},"339":{"inputs":{"text":["314",0],"max_frames":10,"print_output":false,"pre_text":["308",0],"app_text":["523",0],"start_frame":0,"end_frame":0,"clip":["406",1]},"class_type":"BatchPromptSchedule","_meta":{"title":"Batch Prompt Schedule 📅🅕🅝"}},"344":{"inputs":{"pulid_file":"ip-adapter_pulid_sdxl_fp16.safetensors"},"class_type":"PulidModelLoader","_meta":{"title":"Load PuLID Model"}},"345":{"inputs":{"provider":"CUDA"},"class_type":"PulidInsightFaceLoader","_meta":{"title":"Load InsightFace (PuLID)"}},"346":{"inputs":{},"class_type":"PulidEvaClipLoader","_meta":{"title":"Load Eva Clip (PuLID)"}},"347":{"inputs":{"method":"fidelity","weight":1,"start_at":0,"end_at":1,"model":["307",0],"pulid":["344",0],"eva_clip":["346",0],"face_analysis":["345",0],"image":["384",0]},"class_type":"ApplyPulid","_meta":{"title":"Apply PuLID"}},"348":{"inputs":{"width":768,"height":768,"batch_size":1},"class_type":"EmptyLatentImage","_meta":{"title":"Пустое латентное изображение"}},"376":{"inputs":{"rmbgmodel":["377",0],"image":["378",5]},"class_type":"BRIA_RMBG_Zho","_meta":{"title":"🧹BRIA RMBG"}},"377":{"inputs":{},"class_type":"BRIA_RMBG_ModelLoader_Zho","_meta":{"title":"🧹BRIA_RMBG Model Loader"}},"378":{"inputs":{"seed":["404",0],"steps":6,"cfg":2,"sampler_name":"dpmpp_2m","scheduler":"karras","denoise":0.6,"preview_method":"auto","vae_decode":"true","model":["382",0],"positive":["382",1],"negative":["382",2],"latent_image":["417",0],"optional_vae":["305",2]},"class_type":"KSampler (Efficient)","_meta":{"title":"KSampler (Efficient)"}},"379":{"inputs":{"instantid_file":"ip-adapter.bin"},"class_type":"InstantIDModelLoader","_meta":{"title":"Load InstantID Model"}},"380":{"inputs":{"control_net_name":"diffusion_pytorch_model.safetensors"},"class_type":"ControlNetLoader","_meta":{"title":"Загрузить модель ControlNet"}},"381":{"inputs":{"provider":"CUDA"},"class_type":"InstantIDFaceAnalysis","_meta":{"title":"InstantID Face Analysis"}},"382":{"inputs":{"weight":1,"start_at":0,"end_at":1,"instantid":["379",0],"insightface":["381",0],"control_net":["380",0],"image":["384",0],"model":["307",0],"positive":["328",1],"negative":["328",2],"image_kps":["328",5]},"class_type":"ApplyInstantID","_meta":{"title":"Apply InstantID"}},"384":{"inputs":{"side_length":512,"side":"Longest","upscale_method":"nearest-exact","crop":"disabled","image":["563",0]},"class_type":"DF_Image_scale_to_side","_meta":{"title":"Image scale to side"}},"404":{"inputs":{"seed":0},"class_type":"Seed Everywhere","_meta":{"title":"Seed Everywhere"}},"405":{"inputs":{"toggle":true,"mode":"simple","num_loras":3,"lora_1_name":"StickersRedmond.safetensors","lora_1_strength":1,"lora_1_model_strength":2,"lora_1_clip_strength":2,"lora_2_name":"cartoon_style.pt","lora_2_strength":2,"lora_2_model_strength":1,"lora_2_clip_strength":1,"lora_3_name":"smiling.pt","lora_3_strength":2,"lora_3_model_strength":2,"lora_3_clip_strength":1,"lora_4_name":"None","lora_4_strength":1,"lora_4_model_strength":1,"lora_4_clip_strength":1,"lora_5_name":"None","lora_5_strength":1,"lora_5_model_strength":1,"lora_5_clip_strength":1,"lora_6_name":"None","lora_6_strength":1,"lora_6_model_strength":1,"lora_6_clip_strength":1,"lora_7_name":"None","lora_7_strength":1,"lora_7_model_strength":1,"lora_7_clip_strength":1,"lora_8_name":"None","lora_8_strength":1,"lora_8_model_strength":1,"lora_8_clip_strength":1,"lora_9_name":"None","lora_9_strength":1,"lora_9_model_strength":1,"lora_9_clip_strength":1,"lora_10_name":"None","lora_10_strength":1,"lora_10_model_strength":1,"lora_10_clip_strength":1},"class_type":"easy loraStack","_meta":{"title":"EasyLoraStack"}},"406":{"inputs":{"model":["305",0],"clip":["305",1],"lora_stack":["405",0]},"class_type":"CR Apply LoRA Stack","_meta":{"title":"💊 CR Apply LoRA Stack"}},"417":{"inputs":{"upscale_method":"nearest-exact","width":1024,"height":1024,"crop":"disabled","samples":["328",3]},"class_type":"LatentUpscale","_meta":{"title":"Увеличить латент"}},"523":{"inputs":{"text":["536",0]},"class_type":"ShowText|pysssss","_meta":{"title":"✴️ U-NAI Get Text"}},"536":{"inputs":{"text_input":"Identify if the person in the image is a man, woman, boy or girl. Answer with just one word.","model_name":"Qwen2-VL-2B","memory_mode":"Balanced (8-bit)","max_new_tokens":512,"temperature":0.7000000000000001,"top_p":0.8,"fps":1,"image":["555",0]},"class_type":"Qwen2VLNode","_meta":{"title":"Qwen2-VL Model"}},"539":{"inputs":{"aggressive":false,"image":["376",0]},"class_type":"FreeMemoryImage","_meta":{"title":"Free Memory (Image)"}},"555":{"inputs":{"width":762,"height":762,"method":"lanczos","images":["563",0]},"class_type":"ImageTransformResizeAbsolute","_meta":{"title":"ImageTransformResizeAbsolute"}},"556":{"inputs":{"images":["555",0]},"class_type":"PreviewImage","_meta":{"title":"Предварительный просмотр изображения"}},"562":{"inputs":{"Actions":"Send to websocket","images":["539",0]},"class_type":"ImageOutput","_meta":{"title":"Image(s) To Websocket (Base64)"}},"563":{"inputs":{"image":"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"},"class_type":"Load Image (Base64)","_meta":{"title":"Load Image (Base64)"}}}} \ No newline at end of file diff --git a/generation_request (7).json b/generation_request (7).json new file mode 100644 index 0000000..856f6ca --- /dev/null +++ b/generation_request (7).json @@ -0,0 +1 @@ +{"user_id":12345,"workflow":{"305":{"inputs":{"ckpt_name":"SDXL\\dreamshaperXL_lightningDPMSDE.safetensors"},"class_type":"CheckpointLoaderSimple","_meta":{"title":"Загрузить контрольную точку"}},"307":{"inputs":{"share_norm":"both","share_attn":"q+k","scale":0.7000000000000001,"model":["309",0]},"class_type":"StyleAlignedBatchAlign","_meta":{"title":"StyleAligned Batch Align"}},"308":{"inputs":{"text_positive":"Sticker,chibi:2,Flat:1.5,(full body:2),Simple details,(Empty Background:2)","text_negative":"Realism, photo-realism, real materials,(full body:2)","style":"sai-cinematic","log_prompt":false,"style_positive":true,"style_negative":true},"class_type":"SDXLPromptStyler","_meta":{"title":"SDXL Prompt Styler"}},"309":{"inputs":{"b1":1.3,"b2":1.4000000000000001,"s1":0.9,"s2":0.2,"model":["406",0]},"class_type":"FreeU_V2","_meta":{"title":"FreeU_V2"}},"312":{"inputs":{"text":["308",1],"clip":["406",1]},"class_type":"CLIPTextEncode","_meta":{"title":"Кодирование текста CLIP (Запрос)"}},"313":{"inputs":{"prompt_1":"Boxers, with red boxing gloves, swinging their fists","prompt_2":"Dressed in a Superman costume","prompt_3":"Dress up as Santa Claus with a rattle in your hand","prompt_4":"Holding a bouquet of roses in his hand and wearing a gown","prompt_5":"Dressed in a wide hip hop suit,Playing the guitar,tattooing,denim,street dance,dancing","simple_prompt_list":["316",0]},"class_type":"CR Simple Prompt List","_meta":{"title":"CR Simple Prompt List (Legacy)"}},"314":{"inputs":{"keyframe_interval":1,"loops":1,"transition_type":"Default","transition_speed":"Default","transition_profile":"Default","keyframe_format":"Deforum","simple_prompt_list":["313",0]},"class_type":"CR Simple Prompt List Keyframes","_meta":{"title":"CR Simple Prompt List Keyframes (Legacy)"}},"316":{"inputs":{"prompt_1":"Riding a skateboard with the wind in the hair","prompt_2":"Pirate captain with a sword","prompt_3":"Drinking coffee from a coffee cup and smiling","prompt_4":"Dressed in a spacesuit and wearing a glass helmet","prompt_5":"Wearing luxurious clothes, holding a red heart-shaped balloon and smiling"},"class_type":"CR Simple Prompt List","_meta":{"title":"CR Simple Prompt List (Legacy)"}},"318":{"inputs":{},"class_type":"Anything Everywhere3","_meta":{"title":"Anything Everywhere3"}},"326":{"inputs":{"image":"photo_2025-02-03_14-06-19.jpg","upload":"image"},"class_type":"LoadImage","_meta":{"title":"Загрузить изображение"}},"328":{"inputs":{"seed":["404",0],"steps":7,"cfg":2,"sampler_name":"dpmpp_2m","scheduler":"karras","denoise":1,"preview_method":"auto","vae_decode":"true","model":["347",0],"positive":["339",0],"negative":["312",0],"latent_image":["348",0],"optional_vae":["305",2]},"class_type":"KSampler (Efficient)","_meta":{"title":"KSampler (Efficient)"}},"339":{"inputs":{"text":["314",0],"max_frames":10,"print_output":false,"pre_text":["308",0],"app_text":["523",0],"start_frame":0,"end_frame":0,"clip":["406",1]},"class_type":"BatchPromptSchedule","_meta":{"title":"Batch Prompt Schedule 📅🅕🅝"}},"344":{"inputs":{"pulid_file":"ip-adapter_pulid_sdxl_fp16.safetensors"},"class_type":"PulidModelLoader","_meta":{"title":"Load PuLID Model"}},"345":{"inputs":{"provider":"CUDA"},"class_type":"PulidInsightFaceLoader","_meta":{"title":"Load InsightFace (PuLID)"}},"346":{"inputs":{},"class_type":"PulidEvaClipLoader","_meta":{"title":"Load Eva Clip (PuLID)"}},"347":{"inputs":{"method":"fidelity","weight":1,"start_at":0,"end_at":1,"model":["307",0],"pulid":["344",0],"eva_clip":["346",0],"face_analysis":["345",0],"image":["384",0]},"class_type":"ApplyPulid","_meta":{"title":"Apply PuLID"}},"348":{"inputs":{"width":768,"height":768,"batch_size":1},"class_type":"EmptyLatentImage","_meta":{"title":"Пустое латентное изображение"}},"376":{"inputs":{"rmbgmodel":["377",0],"image":["378",5]},"class_type":"BRIA_RMBG_Zho","_meta":{"title":"🧹BRIA RMBG"}},"377":{"inputs":{},"class_type":"BRIA_RMBG_ModelLoader_Zho","_meta":{"title":"🧹BRIA_RMBG Model Loader"}},"378":{"inputs":{"seed":["404",0],"steps":6,"cfg":2,"sampler_name":"dpmpp_2m","scheduler":"karras","denoise":0.6,"preview_method":"auto","vae_decode":"true","model":["382",0],"positive":["382",1],"negative":["382",2],"latent_image":["417",0],"optional_vae":["305",2]},"class_type":"KSampler (Efficient)","_meta":{"title":"KSampler (Efficient)"}},"379":{"inputs":{"instantid_file":"ip-adapter.bin"},"class_type":"InstantIDModelLoader","_meta":{"title":"Load InstantID Model"}},"380":{"inputs":{"control_net_name":"diffusion_pytorch_model.safetensors"},"class_type":"ControlNetLoader","_meta":{"title":"Загрузить модель ControlNet"}},"381":{"inputs":{"provider":"CUDA"},"class_type":"InstantIDFaceAnalysis","_meta":{"title":"InstantID Face Analysis"}},"382":{"inputs":{"weight":1,"start_at":0,"end_at":1,"instantid":["379",0],"insightface":["381",0],"control_net":["380",0],"image":["384",0],"model":["307",0],"positive":["328",1],"negative":["328",2],"image_kps":["328",5]},"class_type":"ApplyInstantID","_meta":{"title":"Apply InstantID"}},"384":{"inputs":{"side_length":512,"side":"Longest","upscale_method":"nearest-exact","crop":"disabled","image":["563",0]},"class_type":"DF_Image_scale_to_side","_meta":{"title":"Image scale to side"}},"404":{"inputs":{"seed":0},"class_type":"Seed Everywhere","_meta":{"title":"Seed Everywhere"}},"405":{"inputs":{"toggle":true,"mode":"simple","num_loras":3,"lora_1_name":"StickersRedmond.safetensors","lora_1_strength":1,"lora_1_model_strength":2,"lora_1_clip_strength":2,"lora_2_name":"cartoon_style.pt","lora_2_strength":2,"lora_2_model_strength":1,"lora_2_clip_strength":1,"lora_3_name":"smiling.pt","lora_3_strength":2,"lora_3_model_strength":2,"lora_3_clip_strength":1,"lora_4_name":"None","lora_4_strength":1,"lora_4_model_strength":1,"lora_4_clip_strength":1,"lora_5_name":"None","lora_5_strength":1,"lora_5_model_strength":1,"lora_5_clip_strength":1,"lora_6_name":"None","lora_6_strength":1,"lora_6_model_strength":1,"lora_6_clip_strength":1,"lora_7_name":"None","lora_7_strength":1,"lora_7_model_strength":1,"lora_7_clip_strength":1,"lora_8_name":"None","lora_8_strength":1,"lora_8_model_strength":1,"lora_8_clip_strength":1,"lora_9_name":"None","lora_9_strength":1,"lora_9_model_strength":1,"lora_9_clip_strength":1,"lora_10_name":"None","lora_10_strength":1,"lora_10_model_strength":1,"lora_10_clip_strength":1},"class_type":"easy loraStack","_meta":{"title":"EasyLoraStack"}},"406":{"inputs":{"model":["305",0],"clip":["305",1],"lora_stack":["405",0]},"class_type":"CR Apply LoRA Stack","_meta":{"title":"💊 CR Apply LoRA Stack"}},"417":{"inputs":{"upscale_method":"nearest-exact","width":1024,"height":1024,"crop":"disabled","samples":["328",3]},"class_type":"LatentUpscale","_meta":{"title":"Увеличить латент"}},"523":{"inputs":{"text":["536",0]},"class_type":"ShowText|pysssss","_meta":{"title":"✴️ U-NAI Get Text"}},"536":{"inputs":{"text_input":"Identify if the person in the image is a man, woman, boy or girl. Answer with just one word.","model_name":"Qwen2-VL-2B","memory_mode":"Balanced (8-bit)","max_new_tokens":512,"temperature":0.7000000000000001,"top_p":0.8,"fps":1,"image":["555",0]},"class_type":"Qwen2VLNode","_meta":{"title":"Qwen2-VL Model"}},"539":{"inputs":{"aggressive":false,"image":["376",0]},"class_type":"FreeMemoryImage","_meta":{"title":"Free Memory (Image)"}},"555":{"inputs":{"width":762,"height":762,"method":"lanczos","images":["563",0]},"class_type":"ImageTransformResizeAbsolute","_meta":{"title":"ImageTransformResizeAbsolute"}},"556":{"inputs":{"images":["555",0]},"class_type":"PreviewImage","_meta":{"title":"Предварительный просмотр изображения"}},"562":{"inputs":{"Actions":"Send to websocket","images":["539",0]},"class_type":"ImageOutput","_meta":{"title":"Image(s) To Websocket (Base64)"}},"563":{"inputs":{"image":"/9j/4AAQSkZJRgABAQAAAQABAAD/4gHYSUNDX1BST0ZJTEUAAQEAAAHIAAAAAAQwAABtbnRyUkdCIFhZWiAH4AABAAEAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAACRyWFlaAAABFAAAABRnWFlaAAABKAAAABRiWFlaAAABPAAAABR3dHB0AAABUAAAABRyVFJDAAABZAAAAChnVFJDAAABZAAAAChiVFJDAAABZAAAAChjcHJ0AAABjAAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAgAAAAcAHMAUgBHAEJYWVogAAAAAAAAb6IAADj1AAADkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9YWVogAAAAAAAA9tYAAQAAAADTLXBhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAACAAAAAcAEcAbwBvAGcAbABlACAASQBuAGMALgAgADIAMAAxADb/2wBDAAIBAQEBAQIBAQECAgICOK7P8AH9fbVcfB3qF2TMjpcNudLG9Q+Y4TwKSYnHtVmlQPZ6m35fnaeQxTkKego3/PqeBj0KQ264JBIUXDmtfwEaI4ZAVlRGCCaKXQKl3x5pa0Z80429u9Bb2+q3qWXu4OE49a6pU6tUij9T865gP2tv8AZM0SUKWorSO1aWEKW5uVnivsKctxgreSAD61tYkRlPBponChkmjP/duB2BSep+Kg2M18+MPYHH61uMJTiCrPHvWkQAMulRwPrUG2fUo00+hxSz8xr464lCCc1mhlCu241+MWGt0JeWoDPPNersTw7kQSN3KlV9DgPBJxWyXGgNL2xnFEfU1r8kBsq54Fe+Jnk//Z"},"class_type":"Load Image (Base64)","_meta":{"title":"Load Image (Base64)"}}}} \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..cb404c7 --- /dev/null +++ b/index.html @@ -0,0 +1,17 @@ + + + + + + + + + + Sticker Generator + + + +
+ + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..efa8389 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,3358 @@ +{ + "name": "stikerbotfront", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "stikerbotfront", + "version": "0.0.0", + "dependencies": { + "@tanstack/react-query": "^5.66.3", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "react-router-dom": "^7.1.5", + "zustand": "^5.0.3" + }, + "devDependencies": { + "@eslint/js": "^9.19.0", + "@types/react": "^19.0.8", + "@types/react-dom": "^19.0.3", + "@vitejs/plugin-react": "^4.3.4", + "eslint": "^9.19.0", + "eslint-plugin-react-hooks": "^5.0.0", + "eslint-plugin-react-refresh": "^0.4.18", + "globals": "^15.14.0", + "typescript": "~5.7.2", + "typescript-eslint": "^8.22.0", + "vite": "^6.1.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", + "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.9.tgz", + "integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.9", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.9", + "@babel/parser": "^7.26.9", + "@babel/template": "^7.26.9", + "@babel/traverse": "^7.26.9", + "@babel/types": "^7.26.9", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.9.tgz", + "integrity": "sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", + "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.26.5", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", + "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.9.tgz", + "integrity": "sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.9.tgz", + "integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.26.9" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz", + "integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz", + "integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz", + "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.9.tgz", + "integrity": "sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.9", + "@babel/parser": "^7.26.9", + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.9", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.9.tgz", + "integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", + "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz", + "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz", + "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz", + "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", + "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz", + "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz", + "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz", + "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz", + "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz", + "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz", + "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz", + "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz", + "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz", + "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz", + "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz", + "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz", + "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz", + "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz", + "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz", + "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz", + "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz", + "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz", + "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz", + "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", + "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", + "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.11.0.tgz", + "integrity": "sha512-DWUB2pksgNEb6Bz2fggIy1wh6fGgZP4Xyy/Mt0QZPiloKKXerbqq9D3SBQTlCRYOrcRPu4vuz+CGjwdfqxnoWA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", + "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.20.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.20.0.tgz", + "integrity": "sha512-iZA07H9io9Wn836aVTytRaNqh00Sad+EamwOVJT12GTLw1VGMFV/4JaME+JjLtr9fiGaoWgYnS54wrfWsSs4oQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz", + "integrity": "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.10.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz", + "integrity": "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", + "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.8.tgz", + "integrity": "sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.8.tgz", + "integrity": "sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.8.tgz", + "integrity": "sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.8.tgz", + "integrity": "sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.8.tgz", + "integrity": "sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.8.tgz", + "integrity": "sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.8.tgz", + "integrity": "sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.8.tgz", + "integrity": "sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.8.tgz", + "integrity": "sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.8.tgz", + "integrity": "sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.8.tgz", + "integrity": "sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.8.tgz", + "integrity": "sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.8.tgz", + "integrity": "sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.8.tgz", + "integrity": "sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.8.tgz", + "integrity": "sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.8.tgz", + "integrity": "sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.8.tgz", + "integrity": "sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.8.tgz", + "integrity": "sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.8.tgz", + "integrity": "sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@tanstack/query-core": { + "version": "5.66.3", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.66.3.tgz", + "integrity": "sha512-+2iDxH7UFdtwcry766aJszGmbByQDIzTltJ3oQAZF9bhCxHCIN3yDwHa6qDCZxcpMGvUphCRx/RYJvLbM8mucQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/react-query": { + "version": "5.66.3", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.66.3.tgz", + "integrity": "sha512-sWMvxZ5VugPDgD1CzP7f0s9yFvjcXP3FXO5IVV2ndXlYqUCwykU8U69Kk05Qn5UvGRqB/gtj4J7vcTC6vtLHtQ==", + "license": "MIT", + "dependencies": { + "@tanstack/query-core": "5.66.3" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^18 || ^19" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.0.10", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.10.tgz", + "integrity": "sha512-JuRQ9KXLEjaUNjTWpzuR231Z2WpIwczOkBEIvbHNCzQefFIT0L8IqE6NV6ULLyC1SI/i234JnDoMkfg+RjQj2g==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.0.4", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.0.4.tgz", + "integrity": "sha512-4fSQ8vWFkg+TGhePfUzVmat3eC14TXYSsiiDSLI0dVLsrm9gZFABjPy/Qu6TKgl1tq1Bu1yDsuQgY3A3DOjCcg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.24.0.tgz", + "integrity": "sha512-aFcXEJJCI4gUdXgoo/j9udUYIHgF23MFkg09LFz2dzEmU0+1Plk4rQWv/IYKvPHAtlkkGoB3m5e6oUp+JPsNaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.24.0", + "@typescript-eslint/type-utils": "8.24.0", + "@typescript-eslint/utils": "8.24.0", + "@typescript-eslint/visitor-keys": "8.24.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.24.0.tgz", + "integrity": "sha512-MFDaO9CYiard9j9VepMNa9MTcqVvSny2N4hkY6roquzj8pdCBRENhErrteaQuu7Yjn1ppk0v1/ZF9CG3KIlrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.24.0", + "@typescript-eslint/types": "8.24.0", + "@typescript-eslint/typescript-estree": "8.24.0", + "@typescript-eslint/visitor-keys": "8.24.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.24.0.tgz", + "integrity": "sha512-HZIX0UByphEtdVBKaQBgTDdn9z16l4aTUz8e8zPQnyxwHBtf5vtl1L+OhH+m1FGV9DrRmoDuYKqzVrvWDcDozw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.24.0", + "@typescript-eslint/visitor-keys": "8.24.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.24.0.tgz", + "integrity": "sha512-8fitJudrnY8aq0F1wMiPM1UUgiXQRJ5i8tFjq9kGfRajU+dbPyOuHbl0qRopLEidy0MwqgTHDt6CnSeXanNIwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.24.0", + "@typescript-eslint/utils": "8.24.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.24.0.tgz", + "integrity": "sha512-VacJCBTyje7HGAw7xp11q439A+zeGG0p0/p2zsZwpnMzjPB5WteaWqt4g2iysgGFafrqvyLWqq6ZPZAOCoefCw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.0.tgz", + "integrity": "sha512-ITjYcP0+8kbsvT9bysygfIfb+hBj6koDsu37JZG7xrCiy3fPJyNmfVtaGsgTUSEuTzcvME5YI5uyL5LD1EV5ZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.24.0", + "@typescript-eslint/visitor-keys": "8.24.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.24.0.tgz", + "integrity": "sha512-07rLuUBElvvEb1ICnafYWr4hk8/U7X9RDCOqd9JcAMtjh/9oRmcfN4yGzbPVirgMR0+HLVHehmu19CWeh7fsmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.24.0", + "@typescript-eslint/types": "8.24.0", + "@typescript-eslint/typescript-estree": "8.24.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.0.tgz", + "integrity": "sha512-kArLq83QxGLbuHrTMoOEWO+l2MwsNS2TGISEdx8xgqpkbytB07XmlQyQdNDrCc1ecSqx0cnmhGvpX+VBwqqSkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.24.0", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz", + "integrity": "sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.26.0", + "@babel/plugin-transform-react-jsx-self": "^7.25.9", + "@babel/plugin-transform-react-jsx-source": "^7.25.9", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.14.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0" + } + }, + "node_modules/acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001700", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001700.tgz", + "integrity": "sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", + "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.101", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.101.tgz", + "integrity": "sha512-L0ISiQrP/56Acgu4/i/kfPwWSgrzYZUnQrC0+QPFuhqlLP1Ir7qzPPDVS9BcKIyWTRU8+o6CC8dKw38tSWhYIA==", + "dev": true, + "license": "ISC" + }, + "node_modules/esbuild": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", + "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.24.2", + "@esbuild/android-arm": "0.24.2", + "@esbuild/android-arm64": "0.24.2", + "@esbuild/android-x64": "0.24.2", + "@esbuild/darwin-arm64": "0.24.2", + "@esbuild/darwin-x64": "0.24.2", + "@esbuild/freebsd-arm64": "0.24.2", + "@esbuild/freebsd-x64": "0.24.2", + "@esbuild/linux-arm": "0.24.2", + "@esbuild/linux-arm64": "0.24.2", + "@esbuild/linux-ia32": "0.24.2", + "@esbuild/linux-loong64": "0.24.2", + "@esbuild/linux-mips64el": "0.24.2", + "@esbuild/linux-ppc64": "0.24.2", + "@esbuild/linux-riscv64": "0.24.2", + "@esbuild/linux-s390x": "0.24.2", + "@esbuild/linux-x64": "0.24.2", + "@esbuild/netbsd-arm64": "0.24.2", + "@esbuild/netbsd-x64": "0.24.2", + "@esbuild/openbsd-arm64": "0.24.2", + "@esbuild/openbsd-x64": "0.24.2", + "@esbuild/sunos-x64": "0.24.2", + "@esbuild/win32-arm64": "0.24.2", + "@esbuild/win32-ia32": "0.24.2", + "@esbuild/win32-x64": "0.24.2" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.20.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.20.1.tgz", + "integrity": "sha512-m1mM33o6dBUjxl2qb6wv6nGNwCAsns1eKtaQ4l/NPHeTvhiUPbtdfMyktxN4B3fgHIgsYh1VT3V9txblpQHq+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.0", + "@eslint/core": "^0.11.0", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "9.20.0", + "@eslint/plugin-kit": "^0.2.5", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.1", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0.tgz", + "integrity": "sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.19.tgz", + "integrity": "sha512-eyy8pcr/YxSYjBoqIFSrlbn9i/xvxUFa8CjzAYo9cFjgGXqq1hyjihcpZvxRLalpaWmueWR81xn7vuKmAFijDQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": ">=8.40" + } + }, + "node_modules/eslint-scope": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", + "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.0.tgz", + "integrity": "sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true, + "license": "MIT" + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.2.tgz", + "integrity": "sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/react": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.0.0.tgz", + "integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.0.0.tgz", + "integrity": "sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.25.0" + }, + "peerDependencies": { + "react": "^19.0.0" + } + }, + "node_modules/react-refresh": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-router": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.1.5.tgz", + "integrity": "sha512-8BUF+hZEU4/z/JD201yK6S+UYhsf58bzYIDq2NS1iGpwxSXDu7F+DeGSkIXMFBuHZB21FSiCzEcUb18cQNdRkA==", + "license": "MIT", + "dependencies": { + "@types/cookie": "^0.6.0", + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0", + "turbo-stream": "2.4.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-router-dom": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.1.5.tgz", + "integrity": "sha512-/4f9+up0Qv92D3bB8iN5P1s3oHAepSGa9h5k6tpTFlixTTskJZwKGhJ6vRJ277tLD1zuaZTt95hyGWV1Z37csQ==", + "license": "MIT", + "dependencies": { + "react-router": "7.1.5" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.8.tgz", + "integrity": "sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.34.8", + "@rollup/rollup-android-arm64": "4.34.8", + "@rollup/rollup-darwin-arm64": "4.34.8", + "@rollup/rollup-darwin-x64": "4.34.8", + "@rollup/rollup-freebsd-arm64": "4.34.8", + "@rollup/rollup-freebsd-x64": "4.34.8", + "@rollup/rollup-linux-arm-gnueabihf": "4.34.8", + "@rollup/rollup-linux-arm-musleabihf": "4.34.8", + "@rollup/rollup-linux-arm64-gnu": "4.34.8", + "@rollup/rollup-linux-arm64-musl": "4.34.8", + "@rollup/rollup-linux-loongarch64-gnu": "4.34.8", + "@rollup/rollup-linux-powerpc64le-gnu": "4.34.8", + "@rollup/rollup-linux-riscv64-gnu": "4.34.8", + "@rollup/rollup-linux-s390x-gnu": "4.34.8", + "@rollup/rollup-linux-x64-gnu": "4.34.8", + "@rollup/rollup-linux-x64-musl": "4.34.8", + "@rollup/rollup-win32-arm64-msvc": "4.34.8", + "@rollup/rollup-win32-ia32-msvc": "4.34.8", + "@rollup/rollup-win32-x64-msvc": "4.34.8", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/scheduler": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz", + "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", + "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", + "license": "MIT" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz", + "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/turbo-stream": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/turbo-stream/-/turbo-stream-2.4.0.tgz", + "integrity": "sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==", + "license": "ISC" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typescript": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.24.0.tgz", + "integrity": "sha512-/lmv4366en/qbB32Vz5+kCNZEMf6xYHwh1z48suBwZvAtnXKbP+YhGe8OLE2BqC67LMqKkCNLtjejdwsdW6uOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.24.0", + "@typescript-eslint/parser": "8.24.0", + "@typescript-eslint/utils": "8.24.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", + "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/vite": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.1.0.tgz", + "integrity": "sha512-RjjMipCKVoR4hVfPY6GQTgveinjNuyLw+qruksLDvA5ktI1150VmcMBKmQaEWJhg/j6Uaf6dNCNA0AfdzUb/hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.24.2", + "postcss": "^8.5.1", + "rollup": "^4.30.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", + "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", + "dev": true, + "license": "ISC", + "optional": true, + "peer": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zustand": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.3.tgz", + "integrity": "sha512-14fwWQtU3pH4dE0dOpdMiWjddcH+QzKIgk1cl8epwSE7yag43k/AD/m4L6+K7DytAOr9gGBe3/EXj9g7cdostg==", + "license": "MIT", + "engines": { + "node": ">=12.20.0" + }, + "peerDependencies": { + "@types/react": ">=18.0.0", + "immer": ">=9.0.6", + "react": ">=18.0.0", + "use-sync-external-store": ">=1.2.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + }, + "use-sync-external-store": { + "optional": true + } + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..716df8d --- /dev/null +++ b/package.json @@ -0,0 +1,32 @@ +{ + "name": "stikerbotfront", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "@tanstack/react-query": "^5.66.3", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "react-router-dom": "^7.1.5", + "zustand": "^5.0.3" + }, + "devDependencies": { + "@eslint/js": "^9.19.0", + "@types/react": "^19.0.8", + "@types/react-dom": "^19.0.3", + "@vitejs/plugin-react": "^4.3.4", + "eslint": "^9.19.0", + "eslint-plugin-react-hooks": "^5.0.0", + "eslint-plugin-react-refresh": "^0.4.18", + "globals": "^15.14.0", + "typescript": "~5.7.2", + "typescript-eslint": "^8.22.0", + "vite": "^6.1.0" + } +} diff --git a/public/vite.svg b/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/App.css b/src/App.css new file mode 100644 index 0000000..b9d355d --- /dev/null +++ b/src/App.css @@ -0,0 +1,42 @@ +#root { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +.logo { + height: 6em; + padding: 1.5em; + will-change: filter; + transition: filter 300ms; +} +.logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); +} +.logo.react:hover { + filter: drop-shadow(0 0 2em #61dafbaa); +} + +@keyframes logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +@media (prefers-reduced-motion: no-preference) { + a:nth-of-type(2) .logo { + animation: logo-spin infinite 20s linear; + } +} + +.card { + padding: 2em; +} + +.read-the-docs { + color: #888; +} diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 0000000..cd50c32 --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,107 @@ +import React, { lazy, Suspense, useEffect } from 'react'; +import { BrowserRouter, Routes, Route, Navigate, Outlet, useNavigate, useLocation } from 'react-router-dom'; +import Layout from './components/layout/Layout'; +import Home from './screens/Home'; + +// Ленивая загрузка компонентов +const OnboardingWelcome = lazy(() => import('./screens/onboarding/OnboardingWelcome')); +const OnboardingHowTo = lazy(() => import('./screens/onboarding/OnboardingHowTo')); +const OnboardingStickerPacks = lazy(() => import('./screens/onboarding/OnboardingStickerPacks')); +const TermsAndConditions = lazy(() => import('./screens/onboarding/TermsAndConditions')); +const CreateSticker = lazy(() => import('./screens/CreateSticker')); +const Gallery = lazy(() => import('./screens/Gallery')); +const Profile = lazy(() => import('./screens/Profile')); +const StickerPacks = lazy(() => import('./screens/StickerPacks')); +const CreateStickerPack = lazy(() => import('./screens/CreateStickerPack')); +const AddStickerToPackScreen = lazy(() => import('./screens/AddStickerToPackScreen')); +const History = lazy(() => import('./screens/History')); +const CropPhoto = lazy(() => import('./screens/CropPhoto')); + +// Компонент для отображения состояния загрузки +const LoadingScreen = () => ( +
+ Загрузка... +
+); + +// Компонент для проверки онбординга +const AppContent: React.FC = () => { + const navigate = useNavigate(); + const location = useLocation(); + + useEffect(() => { + // Проверяем, видел ли пользователь онбординг и принял ли условия + const hasSeenOnboarding = localStorage.getItem('hasSeenOnboarding') === 'true'; + const hasAcceptedTerms = localStorage.getItem('hasAcceptedTerms') === 'true'; + + // Если не видел онбординг и не на странице онбординга или условий + if (!hasSeenOnboarding && !location.pathname.includes('/onboarding')) { + navigate('/onboarding/welcome'); + } + // Если видел онбординг, но не принял условия и не на странице условий + else if (hasSeenOnboarding && !hasAcceptedTerms && !location.pathname.includes('/onboarding/terms')) { + navigate('/onboarding/terms'); + } + }, [navigate, location.pathname]); + + return ( + + {/* Онбординг */} + + } /> + }> + + + } /> + }> + + + } /> + }> + + + } /> + }> + + + } /> + + + {/* Основные экраны */} + + }> + + + }> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + + + ); +}; + +const App: React.FC = () => { + return ( + + + + ); +}; + +export default App; diff --git a/src/assets/250x_santa — копия.png b/src/assets/250x_santa — копия.png new file mode 100644 index 0000000..2e5a82f Binary files /dev/null and b/src/assets/250x_santa — копия.png differ diff --git a/src/assets/250x_santa.png b/src/assets/250x_santa.png new file mode 100644 index 0000000..803b260 Binary files /dev/null and b/src/assets/250x_santa.png differ diff --git a/src/assets/ahare_bot250.png b/src/assets/ahare_bot250.png new file mode 100644 index 0000000..cea733e Binary files /dev/null and b/src/assets/ahare_bot250.png differ diff --git a/src/assets/balerina250x.png b/src/assets/balerina250x.png new file mode 100644 index 0000000..8e1bb76 Binary files /dev/null and b/src/assets/balerina250x.png differ diff --git a/src/assets/balloon250x.png b/src/assets/balloon250x.png new file mode 100644 index 0000000..55269da Binary files /dev/null and b/src/assets/balloon250x.png differ diff --git a/src/assets/bicecle250x.png b/src/assets/bicecle250x.png new file mode 100644 index 0000000..f36689c Binary files /dev/null and b/src/assets/bicecle250x.png differ diff --git a/src/assets/book250x.png b/src/assets/book250x.png new file mode 100644 index 0000000..eb00720 Binary files /dev/null and b/src/assets/book250x.png differ diff --git a/src/assets/coctail250x.png b/src/assets/coctail250x.png new file mode 100644 index 0000000..918d991 Binary files /dev/null and b/src/assets/coctail250x.png differ diff --git a/src/assets/coffee250x.png b/src/assets/coffee250x.png new file mode 100644 index 0000000..778d9d6 Binary files /dev/null and b/src/assets/coffee250x.png differ diff --git a/src/assets/cook250x.png b/src/assets/cook250x.png new file mode 100644 index 0000000..f709090 Binary files /dev/null and b/src/assets/cook250x.png differ diff --git a/src/assets/cowboy250x.png b/src/assets/cowboy250x.png new file mode 100644 index 0000000..fbe175d Binary files /dev/null and b/src/assets/cowboy250x.png differ diff --git a/src/assets/default-avatar.svg b/src/assets/default-avatar.svg new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/detektiv250x.png b/src/assets/detektiv250x.png new file mode 100644 index 0000000..a8a236a Binary files /dev/null and b/src/assets/detektiv250x.png differ diff --git a/src/assets/dog250x.png b/src/assets/dog250x.png new file mode 100644 index 0000000..ae4da6e Binary files /dev/null and b/src/assets/dog250x.png differ diff --git a/src/assets/emotions_promo250x.png b/src/assets/emotions_promo250x.png new file mode 100644 index 0000000..f9adf3e Binary files /dev/null and b/src/assets/emotions_promo250x.png differ diff --git a/src/assets/fairy250x.png b/src/assets/fairy250x.png new file mode 100644 index 0000000..4673190 Binary files /dev/null and b/src/assets/fairy250x.png differ diff --git a/src/assets/faq250.png b/src/assets/faq250.png new file mode 100644 index 0000000..f087954 Binary files /dev/null and b/src/assets/faq250.png differ diff --git a/src/assets/fire250x.png b/src/assets/fire250x.png new file mode 100644 index 0000000..b74249c Binary files /dev/null and b/src/assets/fire250x.png differ diff --git a/src/assets/flowers250x.png b/src/assets/flowers250x.png new file mode 100644 index 0000000..5f3a67b Binary files /dev/null and b/src/assets/flowers250x.png differ diff --git a/src/assets/gift250x.png b/src/assets/gift250x.png new file mode 100644 index 0000000..e37c7ae Binary files /dev/null and b/src/assets/gift250x.png differ diff --git a/src/assets/icecream250x.png b/src/assets/icecream250x.png new file mode 100644 index 0000000..f5c2376 Binary files /dev/null and b/src/assets/icecream250x.png differ diff --git a/src/assets/knight250x.png b/src/assets/knight250x.png new file mode 100644 index 0000000..592fd79 Binary files /dev/null and b/src/assets/knight250x.png differ diff --git a/src/assets/moto250x.png b/src/assets/moto250x.png new file mode 100644 index 0000000..20e749f Binary files /dev/null and b/src/assets/moto250x.png differ diff --git a/src/assets/newspaper250x.png b/src/assets/newspaper250x.png new file mode 100644 index 0000000..2725871 Binary files /dev/null and b/src/assets/newspaper250x.png differ diff --git a/src/assets/onboard1.png b/src/assets/onboard1.png new file mode 100644 index 0000000..191d73b Binary files /dev/null and b/src/assets/onboard1.png differ diff --git a/src/assets/prompt.png b/src/assets/prompt.png new file mode 100644 index 0000000..e5860e2 Binary files /dev/null and b/src/assets/prompt.png differ diff --git a/src/assets/prompts.md b/src/assets/prompts.md new file mode 100644 index 0000000..870b8a9 --- /dev/null +++ b/src/assets/prompts.md @@ -0,0 +1,25 @@ +riding in a sports car +Riding a skateboard with the wind in the hair +Drinking coffee from a cup and smiling +Holding a bouquet of flowers and dancing +Holding a balloon and waving +Reading a book +Holding an ice cream cone +Holding an umbrella in the rain +with a cocktail in hand +Holding a gift +Playing with a dog +reading a newspaper +Riding a bicycle +Dressed as a surfer, holding a surfboard +Dressed as a detective, holding a magnifying glass +Dressed as a biker, holding a motorcycle helmet +Dressed as a fairy, holding a magic wand !! +Dressed as a scientist, holding a test tube +Dressed as a cowboy +Dressed as a knight +Dressed as a ballerina +Dressed as a firefighter +Dressed as a chef + + diff --git a/src/assets/prompts.ts b/src/assets/prompts.ts new file mode 100644 index 0000000..c8c8fac --- /dev/null +++ b/src/assets/prompts.ts @@ -0,0 +1,25 @@ +export const prompts: Record = { + 'chibi-sportscar': 'riding in a sports car', + 'chibi-skateboard': 'Riding a skateboard with the wind in the hair', + 'chibi-coffee': 'Drinking coffee from a cup and smiling', + 'chibi-flowers': 'Holding a bouquet of flowers and dancing', + 'chibi-balloon': 'Holding a balloon and waving', + 'chibi-book': 'Reading a book', + 'chibi-icecream': 'Holding an ice cream cone', + 'chibi-umbrella': 'Holding an umbrella in the rain', + 'chibi-cocktail': 'with a cocktail in hand', + 'chibi-gift': 'Holding a gift', + 'chibi-dog': 'Playing with a dog', + 'chibi-newspaper': 'reading a newspaper', + 'chibi-bicycle': 'Riding a bicycle', + 'chibi-surfer': 'Dressed as a surfer, holding a surfboard', + 'chibi-detective': 'Dressed as a detective, holding a magnifying glass', + 'chibi-biker': 'Dressed as a biker, holding a motorcycle helmet', + 'chibi-fairy': 'Dressed as a fairy, holding a magic wand', + 'chibi-scientist': 'Dressed as a scientist, holding a test tube', + 'chibi-cowboy': 'Dressed as a cowboy', + 'chibi-knight': 'Dressed as a knight', + 'chibi-ballerina': 'Dressed as a ballerina', + 'chibi-firefighter': 'Dressed as a firefighter', + 'chibi-chef': 'Dressed as a chef' +}; diff --git a/src/assets/react.svg b/src/assets/react.svg new file mode 100644 index 0000000..6c87de9 --- /dev/null +++ b/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/realism_promo250x.png b/src/assets/realism_promo250x.png new file mode 100644 index 0000000..eb7d6de Binary files /dev/null and b/src/assets/realism_promo250x.png differ diff --git a/src/assets/scateboard250x.png b/src/assets/scateboard250x.png new file mode 100644 index 0000000..596f061 Binary files /dev/null and b/src/assets/scateboard250x.png differ diff --git a/src/assets/shield-icon.png b/src/assets/shield-icon.png new file mode 100644 index 0000000..51b4ae3 Binary files /dev/null and b/src/assets/shield-icon.png differ diff --git a/src/assets/shorts250.png b/src/assets/shorts250.png new file mode 100644 index 0000000..418602b Binary files /dev/null and b/src/assets/shorts250.png differ diff --git a/src/assets/sience250x.png b/src/assets/sience250x.png new file mode 100644 index 0000000..b2cba0b Binary files /dev/null and b/src/assets/sience250x.png differ diff --git a/src/assets/sportcar250x.png b/src/assets/sportcar250x.png new file mode 100644 index 0000000..0c85dee Binary files /dev/null and b/src/assets/sportcar250x.png differ diff --git a/src/assets/surfing250x.png b/src/assets/surfing250x.png new file mode 100644 index 0000000..b034101 Binary files /dev/null and b/src/assets/surfing250x.png differ diff --git a/src/assets/umbrella250x.png b/src/assets/umbrella250x.png new file mode 100644 index 0000000..a656e9e Binary files /dev/null and b/src/assets/umbrella250x.png differ diff --git a/src/components/blocks/BlockRenderer.tsx b/src/components/blocks/BlockRenderer.tsx new file mode 100644 index 0000000..fde5344 --- /dev/null +++ b/src/components/blocks/BlockRenderer.tsx @@ -0,0 +1,62 @@ +import React from 'react'; +import { Block, ButtonBlock, DividerBlock as DividerBlockType, TextInputBlock as TextInputBlockType, GenerateButtonBlock, StepTitleBlock } from '../../types/blocks'; +import ScrollableButtonsBlock from './ScrollableButtonsBlock'; +import GridButtonsBlock from './GridButtonsBlock'; +import UploadPhotoBlock from './UploadPhotoBlock'; +import DividerBlock from './DividerBlock'; +import TextInputBlock from './TextInputBlock'; +import GenerateButton from './GenerateButton'; +import StepTitle from './StepTitle'; + +interface BlockRendererProps { + block: Block; + onAction?: (actionType: string, actionValue: string, blockId?: string) => void; + extraProps?: Record; +} + +const BlockRenderer: React.FC = ({ block, onAction, extraProps }) => { + switch (block.type) { + case 'scrollableButtons': + case 'gridButtons': + const buttonBlock = block as ButtonBlock; + if (block.type === 'scrollableButtons') { + return ; + } + return ; + case 'uploadPhoto': + return { + const tempUrl = URL.createObjectURL(file); + window.history.replaceState( + { usr: { previewUrl: tempUrl } }, + '', + window.location.pathname + ); + return () => URL.revokeObjectURL(tempUrl); + }} + />; + case 'divider': + return ; + case 'textInput': + return ; + case 'generateButton': + const generateBlock = block as GenerateButtonBlock; + return onAction?.('function', 'startGeneration', generateBlock.id)} + />; + case 'stepTitle': + const stepBlock = block as StepTitleBlock; + return ; + default: + console.warn(`Unknown block type: ${block.type}`); + return null; + } +}; + +export default BlockRenderer; diff --git a/src/components/blocks/DividerBlock.module.css b/src/components/blocks/DividerBlock.module.css new file mode 100644 index 0000000..73ab41b --- /dev/null +++ b/src/components/blocks/DividerBlock.module.css @@ -0,0 +1,5 @@ +.divider { + width: 100%; + height: 1px; + background-color: rgba(0, 0, 0, 0.1); +} diff --git a/src/components/blocks/DividerBlock.tsx b/src/components/blocks/DividerBlock.tsx new file mode 100644 index 0000000..52929bb --- /dev/null +++ b/src/components/blocks/DividerBlock.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +import styles from './DividerBlock.module.css'; +import { DividerBlock as DividerBlockType } from '../../types/blocks'; + +interface DividerBlockProps { + block: DividerBlockType; +} + +const DividerBlock: React.FC = ({ block }) => { + const { style } = block; + const { margin = 16 } = style || {}; + + return ( +
+ ); +}; + +export default DividerBlock; diff --git a/src/components/blocks/GenerateButton.module.css b/src/components/blocks/GenerateButton.module.css new file mode 100644 index 0000000..b1fc4f8 --- /dev/null +++ b/src/components/blocks/GenerateButton.module.css @@ -0,0 +1,37 @@ +.generateButton { + width: 100%; + max-width: 28rem; + margin: 24px auto; + padding: 16px; + border: none; + border-radius: 12px; + background: linear-gradient(135deg, #4CAF50, #45A049); + color: white; + cursor: pointer; + transition: transform 0.2s ease, box-shadow 0.2s ease; + display: block; +} + +.generateButton:hover { + transform: translateY(-2px); + box-shadow: 0 4px 12px rgba(76, 175, 80, 0.2); +} + +.generateButton:active { + transform: translateY(0); +} + +.generateButtonText { + display: flex; + flex-direction: column; + align-items: center; + gap: 4px; + font-size: 18px; + font-weight: 600; +} + +.tokenCount { + font-size: 14px; + font-weight: 500; + opacity: 0.9; +} diff --git a/src/components/blocks/GenerateButton.tsx b/src/components/blocks/GenerateButton.tsx new file mode 100644 index 0000000..a72a1b3 --- /dev/null +++ b/src/components/blocks/GenerateButton.tsx @@ -0,0 +1,23 @@ +import React from 'react'; +import styles from './GenerateButton.module.css'; + +interface GenerateButtonProps { + onGenerate: () => void; + tokenCount: number; +} + +const GenerateButton: React.FC = ({ onGenerate, tokenCount }) => { + return ( + + ); +}; + +export default GenerateButton; diff --git a/src/components/blocks/GridButtonsBlock.module.css b/src/components/blocks/GridButtonsBlock.module.css new file mode 100644 index 0000000..3246b31 --- /dev/null +++ b/src/components/blocks/GridButtonsBlock.module.css @@ -0,0 +1,122 @@ +.container { + width: 100%; + box-sizing: border-box; +} + +.gridContainer { + width: 100%; + display: flex; + flex-direction: column; + position: relative; + padding-bottom: 48px; /* Место для кнопки */ +} + +.grid { + height: auto; + transition: height 0.2s ease-in-out; + display: grid; + width: 100%; + gap: 8px; + grid-template-columns: repeat(3, 1fr); + padding: 0; + margin: 0 auto; + box-sizing: border-box; +} + +.buttonWrapper { + width: 100%; + aspect-ratio: 1; + display: flex; + align-items: center; + justify-content: center; + position: relative; + padding: 0; + margin: 0; + height: 0; + padding-bottom: 100%; /* Это обеспечит квадратную форму */ + --delay: calc((var(--n) - 1) * 0.05s); +} + +.buttonWrapper > * { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +/* Анимации */ +@keyframes fadeIn { + from { + opacity: 0; + transform: translateY(10px) scale(0.95); + } + to { + opacity: 1; + transform: translateY(0) scale(1); + } +} + +.buttonWrapper { + animation: fadeIn 0.25s cubic-bezier(0.4, 0, 0.2, 1); + animation-fill-mode: both; +} + +/* Задержка анимации для первых 6 кнопок */ +.grid:not(.expanded) .buttonWrapper { + animation-delay: var(--delay); +} + +/* Задержка анимации для дополнительных кнопок */ +.grid.expanded .buttonWrapper:nth-child(n+7) { + animation-delay: calc((var(--n) - 7) * 0.05s); +} + +/* Кнопка "Показать больше" */ +.showMoreButton { + position: absolute; + bottom: 8px; + right: 0; + padding: 8px 16px; + border: none; + border-radius: 8px; + background: linear-gradient(135deg, #2196F3, #1976D2); + color: white; + font-size: 14px; + font-weight: 500; + cursor: pointer; + transition: transform 0.2s ease, box-shadow 0.2s ease; + animation: fadeIn 0.25s cubic-bezier(0.4, 0, 0.2, 1); + z-index: 2; +} + +.showMoreButton:hover { + transform: translateY(-1px); + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); +} + +.showMoreButton:active { + transform: translateY(0); +} + +/* Анимация разворачивания */ +.grid { + transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1); + overflow: hidden; + max-height: 240px; /* Высота для 2 рядов */ +} + +.grid.expanded { + max-height: 1200px; /* Увеличенная высота для всех кнопок */ +} + +/* Добавляем тень при наведении на весь блок */ +.container:hover .buttonWrapper { + filter: brightness(0.95); + transition: filter 0.2s ease; +} + +.container:hover .buttonWrapper:hover { + filter: brightness(1.05); + z-index: 1; +} diff --git a/src/components/blocks/GridButtonsBlock.tsx b/src/components/blocks/GridButtonsBlock.tsx new file mode 100644 index 0000000..5466653 --- /dev/null +++ b/src/components/blocks/GridButtonsBlock.tsx @@ -0,0 +1,69 @@ +import React, { useState } from 'react'; +import { ButtonBlock } from '../../types/blocks'; +import SquareButton from './SquareButton'; +import styles from './GridButtonsBlock.module.css'; + +interface GridButtonsBlockProps { + block: ButtonBlock; + onAction?: (actionType: string, actionValue: string, blockId?: string, buttonId?: string) => void; + isInputVisible?: boolean; +} + +const GridButtonsBlock: React.FC = ({ block, onAction, isInputVisible }) => { + const [expanded, setExpanded] = useState(false); + const { buttons, style } = block; + const { + gap = 12, + padding = 16, + buttonSize = 100, + columns = 3 + } = style; + + const visibleButtons = expanded ? buttons : buttons.slice(0, 6); + const hasMoreButtons = buttons.length > 6; + + return ( +
+
+
+ {visibleButtons.map((button, index) => ( +
+ { + if (button.action && onAction) { + onAction(button.action.type, button.action.value, block.id, button.id); + } + }} + /> +
+ ))} +
+ {hasMoreButtons && ( + + )} +
+
+ ); +}; + +export default GridButtonsBlock; diff --git a/src/components/blocks/ScrollableButtonsBlock.module.css b/src/components/blocks/ScrollableButtonsBlock.module.css new file mode 100644 index 0000000..c815067 --- /dev/null +++ b/src/components/blocks/ScrollableButtonsBlock.module.css @@ -0,0 +1,52 @@ +.container { + width: 100%; + overflow: hidden; + position: relative; + margin: 0 calc(-1 * var(--spacing-medium)); + padding: var(--spacing-medium); + box-sizing: border-box; +} + +.scrollArea { + display: flex; + overflow-x: auto; + overflow-y: hidden; + -webkit-overflow-scrolling: touch; + scrollbar-width: none; /* Firefox */ + -ms-overflow-style: none; /* IE and Edge */ + scroll-snap-type: x mandatory; + gap: calc(var(--spacing-medium) * 0.75); + padding-bottom: var(--spacing-small); /* Для градиента */ + padding-right: var(--spacing-medium); /* Отступ для последнего элемента */ + margin-right: calc(-1 * var(--spacing-medium)); /* Компенсация отступа контейнера */ +} + +/* Скрываем скроллбар для Chrome, Safari и Opera */ +.scrollArea::-webkit-scrollbar { + display: none; +} + +.buttonWrapper { + flex: 0 0 auto; + scroll-snap-align: start; + display: flex; + align-items: center; + justify-content: center; + width: 120px; /* Фиксированная ширина для кнопок */ +} + +/* Добавляем градиент-индикатор скролла справа */ +.container::after { + content: ''; + position: absolute; + top: 0; + right: 0; + bottom: var(--spacing-small); + width: 48px; + background: linear-gradient(to right, + rgba(var(--color-background-rgb), 0) 0%, + rgba(var(--color-background-rgb), 0.95) 100% + ); + pointer-events: none; + opacity: 1; +} diff --git a/src/components/blocks/ScrollableButtonsBlock.tsx b/src/components/blocks/ScrollableButtonsBlock.tsx new file mode 100644 index 0000000..c28876f --- /dev/null +++ b/src/components/blocks/ScrollableButtonsBlock.tsx @@ -0,0 +1,45 @@ +import React from 'react'; +import { ButtonBlock } from '../../types/blocks'; +import SquareButton from './SquareButton'; +import styles from './ScrollableButtonsBlock.module.css'; + +interface ScrollableButtonsBlockProps { + block: ButtonBlock; + onAction?: (actionType: string, actionValue: string, blockId?: string, buttonId?: string) => void; +} + +const ScrollableButtonsBlock: React.FC = ({ block, onAction }) => { + const { buttons, style } = block; + const { gap = 16, padding = 16, buttonSize = 150 } = style; + + return ( +
+
+ {buttons.map(button => ( +
+ { + if (button.action && onAction) { + onAction(button.action.type, button.action.value, block.id, button.id); + } + }} + /> +
+ ))} +
+
+ ); +}; + +export default ScrollableButtonsBlock; diff --git a/src/components/blocks/SquareButton.module.css b/src/components/blocks/SquareButton.module.css new file mode 100644 index 0000000..204c4f9 --- /dev/null +++ b/src/components/blocks/SquareButton.module.css @@ -0,0 +1,177 @@ +.buttonWrapper { + position: relative; +} + +.button { + position: relative; + border: none; + border-radius: var(--border-radius); + padding: var(--spacing-small); + cursor: pointer; + overflow: hidden; + display: flex; + flex-direction: column; + justify-content: flex-end; + transition: all 0.2s ease-in-out; + text-align: left; + background-size: 100% 100%; + background-position: center; + will-change: transform, background-position; + width: 100%; + height: 100%; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + transform: translate3d(0, 0, 0); + perspective: 1000px; + -webkit-perspective: 1000px; + backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -webkit-transform-style: preserve-3d; + transform-style: preserve-3d; + -webkit-tap-highlight-color: transparent; +} + +.button:hover { + transform: translateY(-2px); + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); + background-position: center; +} + +.button:active { + transform: translateY(1px); + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1); +} + +.button[disabled] { + cursor: not-allowed; + transform: none !important; + box-shadow: none !important; +} + +.button[disabled] .content, +.button[disabled] .icon, +.button[disabled] .iconImage { + opacity: 0.5; + filter: grayscale(60%); + transform: none !important; +} + +.button[disabled]::after { + display: block; + opacity: 1; + background: linear-gradient(180deg, + rgba(0,0,0,0.2) 0%, + rgba(0,0,0,0.3) 50%, + rgba(0,0,0,0.4) 100% + ); +} + +.button[disabled]::before { + content: "Скоро"; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + display: flex; + align-items: center; + justify-content: center; + color: white; + font-weight: 600; + font-size: 1.2rem; + text-shadow: 0 2px 4px rgba(0,0,0,0.4); + z-index: 2; + opacity: 1; + filter: none; +} + +.icon { + font-size: 1.75rem; + margin-bottom: var(--spacing-small); + transition: transform 0.2s ease; + transform: translate3d(0, 0, 0); + perspective: 1000px; + -webkit-perspective: 1000px; + text-rendering: optimizeLegibility; + -webkit-text-size-adjust: 100%; +} + +.iconImage { + position: absolute; + top: 1%; + left: 0%; + width: 100%; + height: 100%; + object-fit: contain; + transition: transform 0.2s ease; + transform: scale(1) translate3d(0, 0, 0); + transform-origin: center; + perspective: 1000px; + -webkit-perspective: 1000px; +} + +.button:hover .icon, +.button:hover .iconImage { + transform: scale(1.1); +} + +.content { + display: flex; + flex-direction: column; + align-items: center; + text-align: center; + gap: var(--spacing-small); + z-index: 1; /* Поверх оверлея */ +} + +.title { + font-weight: 600; + font-size: 1rem; + line-height: 1.2; + margin: 0; + text-align: center; + width: 100%; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + padding: 0 2px; + transform: translate3d(0, 0, 0); + perspective: 1000px; + -webkit-perspective: 1000px; + text-rendering: geometricPrecision; + -webkit-font-smoothing: subpixel-antialiased; +} + +.subtitle { + font-size: 0.875rem; + opacity: 0.9; + margin: 0; + transform: translate3d(0, 0, 0); + perspective: 1000px; + -webkit-perspective: 1000px; + text-rendering: geometricPrecision; + -webkit-font-smoothing: subpixel-antialiased; +} + +/* Оверлей для изображений */ +.button::after { + content: ""; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: linear-gradient(180deg, + rgba(0,0,0,0) 0%, + rgba(0,0,0,0.1) 50%, + rgba(0,0,0,0.2) 100% + ); + pointer-events: none; + border-radius: var(--border-radius); + opacity: 0; + transition: opacity 0.2s ease; +} + +.button:hover::after { + opacity: 1; +} diff --git a/src/components/blocks/SquareButton.tsx b/src/components/blocks/SquareButton.tsx new file mode 100644 index 0000000..542fa1b --- /dev/null +++ b/src/components/blocks/SquareButton.tsx @@ -0,0 +1,100 @@ +import React from 'react'; +import { useNavigate } from 'react-router-dom'; +import { BlockButton } from '../../types/blocks'; +import styles from './SquareButton.module.css'; + +interface SquareButtonProps extends BlockButton { + size?: number; + onClick?: () => void; + disabled?: boolean; +} + +const SquareButton: React.FC = ({ + background, + title, + subtitle, + icon, + imageUrl, + color, + action, + size = 100, + onClick, + disabled +}) => { + const navigate = useNavigate(); + + const handleClick = () => { + if (onClick) { + onClick(); + } else if (action) { + if (action.type === 'route') { + navigate(action.value); + } else if (action.type === 'function') { + // В будущем здесь будет обработка функций + console.log('Function action:', action.value); + } + } + }; + + const getBackground = () => { + switch (background.type) { + case 'image': + return { + backgroundImage: `url(${background.url})`, + backgroundSize: 'cover', + backgroundPosition: 'center', + ...(background.overlay && { + '&::after': { + content: '""', + position: 'absolute', + top: 0, + left: 0, + right: 0, + bottom: 0, + backgroundColor: background.overlay + } + }) + }; + case 'gradient': + return { + background: background.colors?.length + ? `linear-gradient(135deg, ${background.colors.join(', ')})` + : undefined + }; + case 'color': + return { + backgroundColor: background.colors?.[0] + }; + default: + return {}; + } + }; + + return ( +
+ +
+ ); +}; + +export default SquareButton; diff --git a/src/components/blocks/StepTitle.module.css b/src/components/blocks/StepTitle.module.css new file mode 100644 index 0000000..c110ce9 --- /dev/null +++ b/src/components/blocks/StepTitle.module.css @@ -0,0 +1,26 @@ +.stepTitle { + display: flex; + align-items: center; + gap: var(--spacing-small); + padding: 8px var(--spacing-medium) 2px; + color: var(--color-text); + opacity: 0.7; + font-size: 14px; +} + +.stepNumber { + display: flex; + align-items: center; + justify-content: center; + width: 20px; + height: 20px; + background: var(--color-primary); + color: white; + border-radius: 50%; + font-size: 12px; + font-weight: 600; +} + +.stepText { + font-weight: 500; +} diff --git a/src/components/blocks/StepTitle.tsx b/src/components/blocks/StepTitle.tsx new file mode 100644 index 0000000..c473f4c --- /dev/null +++ b/src/components/blocks/StepTitle.tsx @@ -0,0 +1,18 @@ +import React from 'react'; +import styles from './StepTitle.module.css'; + +interface StepTitleProps { + number: number; + text: string; +} + +const StepTitle: React.FC = ({ number, text }) => { + return ( +
+ {number} + {text} +
+ ); +}; + +export default StepTitle; diff --git a/src/components/blocks/TextInputBlock.module.css b/src/components/blocks/TextInputBlock.module.css new file mode 100644 index 0000000..d7e69de --- /dev/null +++ b/src/components/blocks/TextInputBlock.module.css @@ -0,0 +1,47 @@ +.container { + max-height: 0; + opacity: 0; + overflow: hidden; + transform: translateY(-10px) scale(0.98); + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + background-color: rgba(var(--color-surface-rgb), 0.8); + border-radius: var(--border-radius); + backdrop-filter: blur(5px); + -webkit-backdrop-filter: blur(5px); + will-change: transform, max-height, opacity, margin, padding; + margin: 0; + padding: 0 var(--spacing-medium); +} + +.visible { + max-height: 200px; + opacity: 1; + transform: translateY(0) scale(1); + margin: var(--spacing-medium) 0; + padding: var(--spacing-small) var(--spacing-medium); +} + +.input { + width: calc(100% - var(--spacing-small) * 2); + min-height: 80px; + margin: var(--spacing-small); + padding: var(--spacing-small); + border: 1px solid rgba(var(--color-text-rgb), 0.1); + border-radius: var(--border-radius); + background: transparent; + color: var(--color-text); + font-size: 1rem; + line-height: 1.5; + resize: none; + transition: border-color 0.2s ease; + box-sizing: border-box; +} + +.input:focus { + outline: none; + border-color: var(--color-primary); +} + +.input::placeholder { + color: var(--color-text-secondary); +} diff --git a/src/components/blocks/TextInputBlock.tsx b/src/components/blocks/TextInputBlock.tsx new file mode 100644 index 0000000..faa7093 --- /dev/null +++ b/src/components/blocks/TextInputBlock.tsx @@ -0,0 +1,33 @@ +import React, { useState } from 'react'; +import styles from './TextInputBlock.module.css'; +import { TextInputBlock as TextInputBlockType } from '../../types/blocks'; + +interface TextInputBlockProps { + block: TextInputBlockType; + visible: boolean; + onTextChange?: (text: string) => void; +} + +const TextInputBlock: React.FC = ({ block, visible, onTextChange }) => { + const [text, setText] = useState(''); + + const handleChange = (e: React.ChangeEvent) => { + const newText = e.target.value; + setText(newText); + onTextChange?.(newText); + }; + + return ( +
+