diff --git a/src/app/pages/marking-video/page.tsx b/src/app/pages/marking-video/page.tsx
index e8bf7be..c0fcde0 100644
--- a/src/app/pages/marking-video/page.tsx
+++ b/src/app/pages/marking-video/page.tsx
@@ -1,11 +1,14 @@
import ProtectedFilesTable from '@/app/ui/marking-page/protected-files-table';
import ProtectionSummary from '@/app/ui/marking-page/protection-summary';
import TestSection from '@/app/ui/marking-page/test-section';
+import { IconVideoFile } from '@/app/ui/icons/icons';
export default function Page() {
return (
-
Защита видео
+
+
Защита видео
+
diff --git a/src/app/styles/dashboard.scss b/src/app/styles/dashboard.scss
index ebe34ca..50b0655 100644
--- a/src/app/styles/dashboard.scss
+++ b/src/app/styles/dashboard.scss
@@ -6,6 +6,12 @@
align-items: center;
color: #1f2937;
+ .icon {
+ margin-left: 5px;
+ margin-top: 5px;
+ color: #6366f1;
+ }
+
&::before {
content: '';
width: 8px;
diff --git a/src/app/styles/login.module.scss b/src/app/styles/login.module.scss
index b54f42f..66c9e5e 100644
--- a/src/app/styles/login.module.scss
+++ b/src/app/styles/login.module.scss
@@ -127,6 +127,7 @@
cursor: pointer;
transition: all 0.3s;
margin-bottom: 20px;
+ margin: 20px 0 0 0;
}
.register-link {
diff --git a/src/app/styles/marking-pages.scss b/src/app/styles/marking-pages.scss
index 3752eba..988b7f1 100644
--- a/src/app/styles/marking-pages.scss
+++ b/src/app/styles/marking-pages.scss
@@ -177,6 +177,7 @@
padding: 20px 20px 0;
color: #111827;
font-size: 18px;
+ margin-bottom: 20px;
}
table {
@@ -215,6 +216,7 @@
justify-content: center;
margin-right: 12px;
border: 2px solid #6366f1;
+ color: #6366f1;
}
&-title {
@@ -261,8 +263,13 @@
}
.btn-secondary {
- background: #6b7280;
+ background: #6366f1;
color: white;
+ padding: 5px 16px 5px 10px;
+ }
+
+ .icon {
+ height: 18px;
}
.real-protection-badge {
diff --git a/src/app/ui/icons/icons.tsx b/src/app/ui/icons/icons.tsx
new file mode 100644
index 0000000..d9b324d
--- /dev/null
+++ b/src/app/ui/icons/icons.tsx
@@ -0,0 +1,39 @@
+/* https://icon-sets.iconify.design/ic/ */
+
+export function IconImageFile() {
+ return (
+
+
+
+ )
+}
+
+export function IconVideoFile() {
+ return (
+
+
+
+ )
+}
+
+export function IconAudioFile() {
+ return (
+
+
+
+ )
+}
+
+export function IconShield() {
+ return (
+
+ )
+}
+
+export function IconDownload() {
+ return (
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/src/app/ui/inputs/vk-login.tsx b/src/app/ui/inputs/vk-login.tsx
deleted file mode 100644
index cc78bc3..0000000
--- a/src/app/ui/inputs/vk-login.tsx
+++ /dev/null
@@ -1,114 +0,0 @@
-'use client'
-
-import { Config, OneTap } from '@vkid/sdk';
-
-import { useEffect, useRef } from 'react';
-
-const VKAuthDynamic = () => {
- const containerRef = useRef(null);
- const isInitialized = useRef(false);
-
- useEffect(() => {
- // Динамическая загрузка SDK
- const loadVKIDSDK = async () => {
- try {
- // Проверяем, не загружен ли уже SDK
- if (window.VKIDSDK) return window.VKIDSDK;
-
- const { default: VKID } = await import('@vkid/sdk');
- window.VKIDSDK = VKID;
- return VKID;
- } catch (error) {
- console.error('Failed to load VKID SDK:', error);
- return null;
- }
- };
-
- const initialize = async () => {
- if (isInitialized.current) return;
-
- const VKID = await loadVKIDSDK();
- if (!VKID || !containerRef.current) return;
-
- isInitialized.current = true;
-
- try {
- // Конфигурация
- VKID.Config.init({
- app: Number(process.env.NEXT_PUBLIC_VK_APP_ID) || 1111111,
- redirectUrl: process.env.NEXT_PUBLIC_REDIRECT_URL || window.location.origin,
- responseMode: VKID.ConfigResponseMode.Callback,
- source: VKID.ConfigSource.LOWCODE,
- scope: '',
- });
-
- // Создание и рендеринг виджета
- const oneTap = new VKID.OneTap();
-
- oneTap
- .render({
- container: containerRef.current,
- showAlternativeLogin: true,
- })
- .on(VKID.WidgetEvents.ERROR, handleError)
- .on(VKID.OneTapInternalEvents.LOGIN_SUCCESS, async (payload) => {
- const { code, device_id } = payload;
-
- try {
- const authData = await VKID.Auth.exchangeCode(code, device_id);
- handleSuccess(authData);
- } catch (error) {
- handleError(error);
- }
- });
- } catch (error) {
- console.error('VKID initialization error:', error);
- }
- };
-
- initialize();
-
- return () => {
- // Очистка
- isInitialized.current = false;
- };
- }, []);
-
- const handleSuccess = async (data) => {
- try {
- // Отправка данных на ваш API endpoint
- const response = await fetch('/api/auth/vk-callback', {
- method: 'POST',
- headers: { 'Content-Type': 'application/json' },
- body: JSON.stringify(data),
- });
-
- const result = await response.json();
-
- if (response.ok) {
- // Успешная авторизация
- console.log('Authentication successful:', result);
- // Перенаправление или обновление состояния
- window.location.href = '/dashboard'; // Пример редиректа
- } else {
- handleError(result);
- }
- } catch (error) {
- console.error('Server request failed:', error);
- }
- };
-
- const handleError = (error) => {
- console.error('Authentication error:', error);
- // Можно показать уведомление пользователю
- };
-
- return (
-
- );
-};
-
-export default VKAuthDynamic;
\ No newline at end of file
diff --git a/src/app/ui/marking-page/protected-files-table.tsx b/src/app/ui/marking-page/protected-files-table.tsx
index b289232..987854f 100644
--- a/src/app/ui/marking-page/protected-files-table.tsx
+++ b/src/app/ui/marking-page/protected-files-table.tsx
@@ -1,8 +1,9 @@
+import { IconShield, IconDownload } from '@/app/ui/icons/icons';
export default function ProtectedFilesTable() {
return (
- 📋 Защищенные изображения (0)
+ Защищенные изображения (0)
@@ -21,7 +22,7 @@ export default function ProtectedFilesTable() {
- 🛡️
+
@@ -54,7 +55,7 @@ export default function ProtectedFilesTable() {
- 📥 Скачать
+ Скачать
@@ -62,7 +63,7 @@ export default function ProtectedFilesTable() {
- 🛡️
+
@@ -95,7 +96,7 @@ export default function ProtectedFilesTable() {
- 📥 Скачать
+ Скачать
@@ -103,7 +104,7 @@ export default function ProtectedFilesTable() {
- 🛡️
+
@@ -136,7 +137,7 @@ export default function ProtectedFilesTable() {
- 📥 Скачать
+ Скачать
diff --git a/src/app/ui/marking-page/protection-summary.tsx b/src/app/ui/marking-page/protection-summary.tsx
index 6564ade..30a560b 100644
--- a/src/app/ui/marking-page/protection-summary.tsx
+++ b/src/app/ui/marking-page/protection-summary.tsx
@@ -1,7 +1,7 @@
export default function ProtectionSummary() {
return (
-
📊 Статистика защиты
+
Статистика защиты
0
diff --git a/src/app/ui/marking-page/test-section.tsx b/src/app/ui/marking-page/test-section.tsx
index 4ab4662..d22ed50 100644
--- a/src/app/ui/marking-page/test-section.tsx
+++ b/src/app/ui/marking-page/test-section.tsx
@@ -2,14 +2,11 @@ export default function TestSection() {
return (
- 🔍 Проверить защиту изображения
+ Проверить защиту файла
-
- 🔍
-
- 🔍 Выбрать изображение для анализа
+ Выбрать фаил для анализа
При обнаружении защиты будет показана полная информация о владельце (WEBP НЕ поддерживается)
diff --git a/src/app/ui/marking-page/upload-section-image.tsx b/src/app/ui/marking-page/upload-section-image.tsx
index 337b5d6..af9420f 100644
--- a/src/app/ui/marking-page/upload-section-image.tsx
+++ b/src/app/ui/marking-page/upload-section-image.tsx
@@ -1,8 +1,8 @@
'use client'
import React, { useRef, useState, useCallback, ChangeEvent, DragEvent } from 'react';
+import { IconImageFile } from '@/app/ui/icons/icons';
-// Типы для выбранного файла
interface SelectedFile {
file: File;
preview: string;
@@ -101,7 +101,6 @@ export default function UploadSectionImage() {
return;
}
- // Создание превью
const objectUrl = URL.createObjectURL(file);
setSelectedFile({
@@ -174,7 +173,7 @@ export default function UploadSectionImage() {
return (
-
📷 Загрузить изображение для защиты
+
Загрузить изображение для защиты
{state?.error?.server}
)}
- Создать аккаунт
+ Создать аккаунт
)
}
\ No newline at end of file
diff --git a/src/app/ui/settings/notifications-monitoring-settings.tsx b/src/app/ui/settings/notifications-monitoring-settings.tsx
index 39a3a7a..cb11841 100644
--- a/src/app/ui/settings/notifications-monitoring-settings.tsx
+++ b/src/app/ui/settings/notifications-monitoring-settings.tsx
@@ -28,16 +28,6 @@ export default function NotificationsMonitoringSettings() {
Получать уведомления о нарушениях на email
-
-
- 📱 SMS уведомления
-
-
-
-
-
- Критически важные уведомления по SMS
-
🤖 Автоматический мониторинг
diff --git a/src/app/ui/settings/personal-data-settings.tsx b/src/app/ui/settings/personal-data-settings.tsx
index e150141..fb659c4 100644
--- a/src/app/ui/settings/personal-data-settings.tsx
+++ b/src/app/ui/settings/personal-data-settings.tsx
@@ -59,7 +59,7 @@ export default function PersonalDataSettings() {
Возраст:
- Заполняется автоматически из даты рождения
+ Заполняется автоматически исходя из даты рождения
diff --git a/src/app/ui/settings/subscription-settings.tsx b/src/app/ui/settings/subscription-settings.tsx
index 2d0689a..c40071f 100644
--- a/src/app/ui/settings/subscription-settings.tsx
+++ b/src/app/ui/settings/subscription-settings.tsx
@@ -40,9 +40,6 @@ export default function SubscriptionSettings() {
💼 ПРОФИ
-
- 🏆 МАКСИМУМ
-