From bd869798be175c1958755ffcb4729df5240a91b9 Mon Sep 17 00:00:00 2001
From: smanylov
Date: Sat, 24 Jan 2026 13:19:48 +0700
Subject: [PATCH 001/119] edit small screen layout
---
src/app/actions/auth.ts | 1 +
src/app/styles/global-styles.scss | 16 ++++
src/app/styles/header.scss | 26 ++++++
src/app/styles/pages-styles.scss | 79 +++++++++++++++++++
src/app/styles/settings.scss | 1 -
.../setting-referral-program.tsx | 4 +-
6 files changed, 124 insertions(+), 3 deletions(-)
diff --git a/src/app/actions/auth.ts b/src/app/actions/auth.ts
index bd6a870..15b4213 100644
--- a/src/app/actions/auth.ts
+++ b/src/app/actions/auth.ts
@@ -222,6 +222,7 @@ export async function registration(
message_body: { token: string },
message_code: string
};
+ console.log(parsed);
if (parsed.message_desc === 'Operation successful') {
await createSession(parsed.message_body.token, email as string);
} else {
diff --git a/src/app/styles/global-styles.scss b/src/app/styles/global-styles.scss
index c2f5c4b..b80125b 100644
--- a/src/app/styles/global-styles.scss
+++ b/src/app/styles/global-styles.scss
@@ -41,6 +41,10 @@
color: v.$white;
max-width: calc(100vw - var(--side-bar-width) - 60px);
+ @media (max-width: 440px) {
+ max-width: calc(100vw - var(--side-bar-width) - 30px);
+ }
+
h1 {
font-size: 2rem;
font-weight: 700;
@@ -73,6 +77,10 @@
display: flex;
gap: 28px;
align-items: center;
+
+ @media (max-width: 440px) {
+ flex-direction: column;
+ }
}
.header-stat-item {
@@ -101,6 +109,10 @@
padding: 30px;
background: v.$bg-light;
min-height: 100vh;
+
+ @media (max-width: 440px) {
+ padding: 15px;
+ }
}
.main-containter {
@@ -121,6 +133,10 @@
&.auto {
width: auto;
}
+
+ @media (max-width: 440px) {
+ max-width: calc(100vw - var(--side-bar-width) - 30px);
+ }
}
.btn {
diff --git a/src/app/styles/header.scss b/src/app/styles/header.scss
index e534826..e978741 100644
--- a/src/app/styles/header.scss
+++ b/src/app/styles/header.scss
@@ -14,11 +14,19 @@
padding: 20px 20px;
}
+ @media (max-width: 440px) {
+ padding: 10px 10px;
+ }
+
.header-action {
display: flex;
align-items: center;
gap: 15px;
+ @media (max-width: 440px) {
+ gap: 10px;
+ }
+
.icon-btn {
width: 40px;
height: 40px;
@@ -36,6 +44,11 @@
background: v.$bg-hover;
transform: translateY(-2px);
}
+
+ @media (max-width: 440px) {
+ width: 30px;
+ height: 30px;
+ }
}
}
@@ -68,12 +81,20 @@
@media (max-width: 490px) {
padding: 8px;
}
+
+ @media (max-width: 440px) {
+ padding: 8px;
+ }
}
.tokens-count {
font-weight: 700;
font-size: 14px;
letter-spacing: 0.5px;
+
+ @media (max-width: 440px) {
+ font-size: 12px;
+ }
}
.tokens-label {
@@ -192,6 +213,11 @@
cursor: pointer;
transition: all 0.3s;
text-transform: uppercase;
+
+ @media (max-width: 440px) {
+ width: 30px;
+ height: 30px;
+ }
}
.user-dropdown {
diff --git a/src/app/styles/pages-styles.scss b/src/app/styles/pages-styles.scss
index 8adc088..0f9b21e 100644
--- a/src/app/styles/pages-styles.scss
+++ b/src/app/styles/pages-styles.scss
@@ -941,6 +941,10 @@
grid-template-columns: auto;
}
+ @media (max-width: 440px) {
+ max-width: calc(100vw - var(--side-bar-width) - 30px);
+ }
+
.stat-card {
background: white;
padding: 18px;
@@ -1008,6 +1012,10 @@
text-align: center;
max-width: calc(100vw - var(--side-bar-width) - 60px);
+ @media (max-width: 440px) {
+ max-width: calc(100vw - var(--side-bar-width) - 30px);
+ }
+
.referral-link-input {
display: flex;
gap: 15px;
@@ -1032,6 +1040,10 @@
align-items: center;
justify-content: center;
white-space: nowrap;
+
+ @media (max-width: 490px) {
+ font-size: 10px;
+ }
}
.copy-btn {
@@ -1276,6 +1288,16 @@
margin-bottom: 30px;
border: none;
+
+ @media (max-width: 440px) {
+ padding: 0;
+ box-shadow: none;
+ }
+
+ .settings-form-wrapper {
+ width: 100%;
+ }
+
.form-group {
margin-bottom: 20px;
@@ -1284,6 +1306,10 @@
margin-bottom: 8px;
font-weight: 600;
color: v.$text-s;
+
+ @media (max-width: 440px) {
+ font-size: 12px;
+ }
}
input,
@@ -1294,6 +1320,11 @@
border-radius: 10px;
font-size: 14px;
transition: border-color 0.3s;
+
+ @media (max-width: 440px) {
+ font-size: 12px;
+ padding: 10px;
+ }
}
}
@@ -1302,6 +1333,10 @@
align-items: center;
gap: 10px;
margin-bottom: 15px;
+
+ @media (max-width: 440px) {
+ font-size: 14px;
+ }
}
.btn-primary {
@@ -1322,6 +1357,7 @@
grid-template-columns: repeat(5, 1fr);
gap: 20px;
margin-bottom: 40px;
+ max-width: calc(100vw - var(--side-bar-width) - 60px);
.stat-card.matches {
--card-color-1: #3b82f6;
@@ -1420,6 +1456,11 @@
@media (max-width: 860px) {
grid-template-columns: repeat(2, 1fr);
}
+
+ @media (max-width: 440px) {
+ grid-template-columns: auto;
+ max-width: calc(100vw - var(--side-bar-width) - 30px);
+ }
}
.dashboard-main-grid {
@@ -1453,6 +1494,14 @@
max-width: calc(100vw - var(--side-bar-width) - 60px);
}
}
+
+ @media (max-width: 440px) {
+
+ .left-column,
+ .right-column {
+ max-width: calc(100vw - var(--side-bar-width) - 30px);
+ }
+ }
}
.content-section {
@@ -1591,6 +1640,8 @@
grid-template-columns: repeat(4, 1fr);
gap: 20px;
margin-bottom: 40px;
+ width: 100%;
+ max-width: calc(100vw - var(--side-bar-width) - 60px);
.type-card.images {
--card-color-1: #ff6b8a;
@@ -1705,6 +1756,11 @@
@media (max-width: 1360px) {
grid-template-columns: repeat(2, 1fr);
}
+
+ @media (max-width: 440px) {
+ grid-template-columns: auto;
+ max-width: calc(100vw - var(--side-bar-width) - 30px);
+ }
}
.dashboard-limits-section {
@@ -1891,6 +1947,12 @@
display: flex;
justify-content: space-between;
align-items: center;
+ max-width: calc(100vw - var(--side-bar-width) - 60px);
+
+ @media (max-width: 440px) {
+ flex-direction: column;
+ max-width: calc(100vw - var(--side-bar-width) - 30px);
+ }
.last-check-title {
font-size: 14px;
@@ -2143,6 +2205,10 @@
margin-bottom: 2rem;
max-width: calc(100vw - var(--side-bar-width) - 60px);
+ @media (max-width: 440px) {
+ max-width: calc(100vw - var(--side-bar-width) - 30px);
+ }
+
&-stat-card {
background: white;
padding: 1.5rem;
@@ -2262,6 +2328,10 @@
box-shadow: 0 10px 40px rgba(99, 102, 241, 0.1);
max-width: calc(100vw - var(--side-bar-width) - 60px);
+ @media (max-width: 440px) {
+ max-width: calc(100vw - var(--side-bar-width) - 30px);
+ }
+
.my-cases-header {
display: flex;
align-items: center;
@@ -2419,6 +2489,11 @@
gap: 24px;
max-width: calc(100vw - var(--side-bar-width) - 60px);
+ @media (max-width: 440px) {
+ max-width: calc(100vw - var(--side-bar-width) - 30px);
+ flex-direction: column;
+ }
+
.check-all-left {
flex: 1;
position: relative;
@@ -2474,6 +2549,10 @@
margin-bottom: 24px;
max-width: calc(100vw - var(--side-bar-width) - 60px);
+ @media (max-width: 440px) {
+ max-width: calc(100vw - var(--side-bar-width) - 30px);
+ }
+
.section-header {
display: flex;
align-items: center;
diff --git a/src/app/styles/settings.scss b/src/app/styles/settings.scss
index 4d655ed..e4b4086 100644
--- a/src/app/styles/settings.scss
+++ b/src/app/styles/settings.scss
@@ -7,7 +7,6 @@
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
border: 1px solid #e2e8f0;
transition: all 0.3s ease;
- overflow: hidden;
}
.form-section {
diff --git a/src/app/ui/referral-page/setting-referral-program.tsx b/src/app/ui/referral-page/setting-referral-program.tsx
index 6c4e1fe..f4fdfb1 100644
--- a/src/app/ui/referral-page/setting-referral-program.tsx
+++ b/src/app/ui/referral-page/setting-referral-program.tsx
@@ -8,7 +8,7 @@ export default function SettingReferralProgram() {
>
diff --git a/src/app/actions/fileEntity.ts b/src/app/actions/fileEntity.ts
index a42edc2..e9607f9 100644
--- a/src/app/actions/fileEntity.ts
+++ b/src/app/actions/fileEntity.ts
@@ -42,7 +42,7 @@ export async function getUserFilesData(page: number, pageSize: number) {
}
}
-export async function removeUserFile(fileId: string) {
+export async function removeUserFile(fileId: string, fullDelete: number) {
const token = await getSessionData('token');
try {
@@ -54,6 +54,7 @@ export async function removeUserFile(fileId: string) {
message_body: {
action: 'delete_file',
file_id: fileId,
+ full_delete: fullDelete,
token: token
}
}),
@@ -75,6 +76,67 @@ export async function removeUserFile(fileId: string) {
throw (`${response.status}`);
}
+ } catch (error) {
+ return error
+ }
+}
+
+export async function searchUserFiles(fileId: string) {
+ const token = await getSessionData('token');
+
+ try {
+ const response = await fetch(`${API_BASE_URL}/api/v1/files/${fileId}/similar?auth_token=${token}`, {
+ method: 'GET'
+ });
+
+ if (response.ok) {
+ let parsed = await response.json();
+
+ if (parsed.message_code === 0) {
+ return parsed.message_body;
+ } else {
+ throw parsed;
+ }
+ } else {
+ throw (`${response.status}`);
+ }
+
+ } catch (error) {
+ return error
+ }
+}
+
+export async function searchGlobalFiles(fileId: string) {
+ const token = await getSessionData('token');
+
+ try {
+ const response = await fetch(`${API_BASE_URL}/api/v1/data`, {
+ method: 'POST',
+ body: JSON.stringify({
+ version: 1,
+ msg_id: 20007,
+ message_body: {
+ file_id: fileId,
+ }
+ }),
+ headers: {
+ "Content-Type": "application/json",
+ "Accept": "application/json"
+ }
+ });
+
+ if (response.ok) {
+ let parsed = await response.json();
+
+ if (parsed.message_code === 0) {
+ return parsed.message_body;
+ } else {
+ throw parsed;
+ }
+ } else {
+ throw (`${response.status}`);
+ }
+
} catch (error) {
return error
}
diff --git a/src/app/components/ActivityTracker.tsx b/src/app/components/ActivityTracker.tsx
index b5ebad5..039bcff 100644
--- a/src/app/components/ActivityTracker.tsx
+++ b/src/app/components/ActivityTracker.tsx
@@ -3,12 +3,36 @@
import { useEffect, useRef, useCallback } from 'react';
import { tokenLifeExtension } from '@/app/actions/auth';
+import { usePathname, useSearchParams } from 'next/navigation';
+import { removeUserFile } from '@/app/actions/fileEntity';
export default function ActivityTracker() {
const lastRefreshTime = useRef(Date.now());
const activityTimeoutRef = useRef(null);
const isRefreshing = useRef(false);
+
+ const pathname = usePathname();
+ const searchParams = useSearchParams();
+
+ useEffect(() => {
+ const selectedId = document.cookie
+ .split('; ')
+ .find(row => row.startsWith('searchedFileId='))
+ ?.split('=')[1];
+
+ const handleCookie = async () => {
+ if (selectedId) {
+ await removeUserFile(selectedId, 1);
+ document.cookie = 'searchedFileId=; path=/; max-age=0';
+ }
+ };
+
+ if (selectedId) {
+ handleCookie();
+ }
+ }, [pathname, searchParams]);
+
// Debounce ΡΡΠ½ΠΊΡΠΈΡ
const debounce = useCallback((func: () => void, delay: number) => {
if (activityTimeoutRef.current) {
diff --git a/src/app/components/section-search-file.tsx b/src/app/components/section-search-file.tsx
index bff82db..c0c533b 100644
--- a/src/app/components/section-search-file.tsx
+++ b/src/app/components/section-search-file.tsx
@@ -1,20 +1,20 @@
'use client'
import { useRef, useState, useCallback, ChangeEvent, DragEvent, useEffect, useMemo } from 'react';
-import { IconShieldAdd } from '@/app/ui/icons/icons';
+import { IconSearch } from '@/app/ui/icons/icons';
import { fileUpload, cancelUpload, chunkUpload, checkChunkStatus } from '@/app/actions/fileUpload';
import { useTranslations } from 'next-intl';
import { useNavigationBlocker } from '@/app/hooks/useNavigationBlocker';
import { useQueryClient } from '@tanstack/react-query';
+import { searchUserFiles, removeUserFile, searchGlobalFiles } from '@/app/actions/fileEntity';
+import { SearchedUserFilesList } from '@/app/ui/search/searched-user-files-list';
+import { SearchedGlobalFilesList } from '@/app/ui/search/searched-global-files-list';
+import { useRouter } from 'next/navigation';
interface SelectedFile {
file: File;
preview: string | undefined;
name: string;
size: string;
- dimensions?: {
- width: number;
- height: number;
- };
}
interface FileUploadInitResponse {
@@ -39,6 +39,10 @@ export default function SectionSearchFile({ fileType, allowedExtensions, maxFile
const [uploadId, setUploadId] = useState(null);
const [isFileUploaded, setIsFileUploaded] = useState(false);
const [uploadProgress, setUploadProgress] = useState(0);
+ const [fileId, setFileId] = useState(null);
+
+ const [searchedUserFiles, setSearchedUserFiles] = useState([]);
+ const [searchedGlobalFiles, setSearchedGlobalFiles] = useState([]);
const queryClient = useQueryClient();
const isCancelledRef = useRef(false);
@@ -74,37 +78,22 @@ export default function SectionSearchFile({ fileType, allowedExtensions, maxFile
return { isValid: true };
};
- const getImageDimensions = (file: File): Promise<{ width: number; height: number }> => {
- return new Promise((resolve, reject) => {
- const img = new Image();
- const objectUrl = URL.createObjectURL(file);
-
- img.onload = () => {
- const dimensions = {
- width: img.width,
- height: img.height
- };
- URL.revokeObjectURL(objectUrl);
- resolve(dimensions);
- };
-
- img.onerror = () => {
- URL.revokeObjectURL(objectUrl);
- reject(new Error(t('error-uploading-file')));
- };
-
- img.src = objectUrl;
- });
- };
-
const handleFileSelect = useCallback(async (file: File | null): Promise => {
if (!file) {
setError(null);
return;
}
+ if (fileId) {
+ await removeUserFile(fileId, 1);
+ setFileId(null);
+ }
+
setError(null);
setIsFileUploaded(false);
+ setSearchedUserFiles([]);
+ setSearchedGlobalFiles([]);
+
setUploadProgress(0);
const validation = validateFile(file);
@@ -114,30 +103,20 @@ export default function SectionSearchFile({ fileType, allowedExtensions, maxFile
return;
}
- let dimensions = undefined;
- if (fileType === "image") {
- try {
- dimensions = await getImageDimensions(file) as { width: number, height: number };
- if (dimensions.width < 100 || dimensions.height < 100 ||
- dimensions.width > 10000 || dimensions.height > 10000) {
- setError(`${t('image-size')}: ${dimensions.width}x${dimensions.height}. ${t('acceptable-range')}: 100x100 - 10000x10000 ${t('pixels')}.`);
- return;
- }
- } catch (err) {
- setError(t('error-reading-image'));
- return;
- }
- }
-
setSelectedFile({
file,
name: file.name,
size: `${(file.size / 1024 / 1024).toFixed(2)} MB`,
- dimensions,
preview: file.size < 10 * 1024 * 1024 ? URL.createObjectURL(file) : undefined
});
- console.log('Π€Π°ΠΉΠ» Π²ΡΠ±ΡΠ°Π½:', file.name, file.size);
+ handlerFileUpload({
+ file,
+ name: file.name,
+ size: `${(file.size / 1024 / 1024).toFixed(2)} MB`,
+ preview: file.size < 10 * 1024 * 1024 ? URL.createObjectURL(file) : undefined
+ });
+
}, [fileType, t]);
const handleFileInputChange = (event: ChangeEvent): void => {
@@ -221,6 +200,7 @@ export default function SectionSearchFile({ fileType, allowedExtensions, maxFile
return;
}
+ const isLastChunk = chunkIndex === totalChunks - 1;
const start = chunkIndex * CHUNK_SIZE;
const end = Math.min(start + CHUNK_SIZE, file.size);
const chunk = file.slice(start, end);
@@ -229,7 +209,7 @@ export default function SectionSearchFile({ fileType, allowedExtensions, maxFile
formData.append('upload_id', response.upload_id);
formData.append('chunk_number', chunkIndex.toString());
formData.append('chunk', chunk);
- /* formData.append('findSimilar', '0'); */
+ formData.append('findSimilar', '1');
const chunkResponse = await chunkUpload(formData);
@@ -238,6 +218,11 @@ export default function SectionSearchFile({ fileType, allowedExtensions, maxFile
}
setUploadProgress(Math.floor((chunkIndex + 1) / totalChunks * 100));
+
+ if (isLastChunk) {
+ setFileId(chunkResponse.message_body.file_id);
+ document.cookie = `searchedFileId=${chunkResponse.message_body.file_id}`
+ }
}
const chunkStatus = await checkChunkStatus(response.upload_id);
@@ -257,7 +242,7 @@ export default function SectionSearchFile({ fileType, allowedExtensions, maxFile
} finally {
setUploadId(null);
}
- }, [uploadId, fileType, t]);
+ }, [uploadId, fileType]);
useEffect(() => {
// ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π·Π°ΠΊΡΡΡΠΈΡ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ
@@ -295,11 +280,42 @@ export default function SectionSearchFile({ fileType, allowedExtensions, maxFile
}
});
+ const handlerSearchUserFile = useCallback(async (fileId: string): Promise => {
+
+ try {
+ let result = await searchUserFiles(fileId);
+
+ if (result.content.length) {
+ setSearchedUserFiles(result.content);
+ }
+ } catch (error) {
+
+ }
+
+ }, [fileId])
+
+ const handlerSearchGlobalFile = useCallback(async (fileId: string): Promise => {
+
+ try {
+ let result = await searchGlobalFiles(fileId);
+ if (result.images.length) {
+ setSearchedGlobalFiles(result.images);
+ }
+ } catch (error) {
+
+ }
+
+ }, [fileId])
+
return (
-
- {t('upload-for-protection', { fileType: t(fileType.toLocaleLowerCase()) })}
-
+
+
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠΎΠΈΡΠΊ?
+
+ ΠΠ°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» ΠΈ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ Π΅Π³ΠΎ Ρ Π²Π°ΡΠΈΠΌΠΈ Π·Π°ΡΠΈΡΠ΅Π½Π½ΡΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ,
+ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·ΡΠ΅Π½ΠΈΡ ΠΈ ΡΠΈΡΡΠΎΠ²ΡΡ
ΠΎΡΠΏΠ΅ΡΠ°ΡΠΊΠΎΠ².
+
+
-
+
- {t('drag-the-file-here')}
+ ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΡΠ°ΠΉΠ» Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ°
- {/*
- {t('or')}
-
*/}
-
- {fileType === "image" && (
-
- {t('image-resolution')}: 100x100 - 10000x10000 {t('pixels')}
-
- )}
-
- {t('file-format')}: {acceptString}
-
-
- {t('file-size')}: {t('to')} {(maxFileSize / 1024 / 1024)} {t('mb')}
-
- {t('select-files-to-protect')}
+ ΠΡΠ±ΡΠ°ΡΡ ΡΠ°ΠΉΠ»
{error && (
@@ -352,9 +353,9 @@ export default function SectionSearchFile({ fileType, allowedExtensions, maxFile
{selectedFile && (
-
+
@@ -366,52 +367,10 @@ export default function SectionSearchFile({ fileType, allowedExtensions, maxFile
{t('size')}:
{selectedFile.size}
-
- {t('cost-of-protection')}: 0
-
-
- {t('current-balance')}: 0
-
-
- {isFileUploaded && (
-
- {t('file-successfully-uploaded')}
-
- )}
-
-
-
- {(fileType === 'image' && selectedFile.preview) && (
-

setError('ΠΠ΅ ΡΠ΄Π°Π»ΠΎΡΡ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΏΡΠ΅Π²ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ')}
- />
- )}
-
-
-
-
{uploadProgress !== 0 && (
{uploadProgress}%
@@ -420,6 +379,120 @@ export default function SectionSearchFile({ fileType, allowedExtensions, maxFile
)}
+
+ {isFileUploaded && (
+ <>
+
+
+
+
+ {(searchedUserFiles.length !== 0) && (
+
+
+ )}
+
+
+
+
+ ΠΠ»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ ΠΏΠΎΠΈΡΠΊ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ
+
+
+ ΠΠ°ΠΉΡΠΈ Π³Π΄Π΅ Π΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²Π°ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅
+
+
+ ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΏΠΎΠΈΡΠΊ
+
+
+
+
+
+
+
+ ΠΠΎΠΈΡΠΊ ΠΏΠΎ Π²ΡΠ΅ΠΌΡ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΡ
+
+
+ ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠ΅ ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΊΠΎΠΏΠΈΠΉ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°
+ Π½Π° ΡΠ°ΠΉΡΠ°Ρ
, Π² ΡΠΎΡΠΈΠ°Π»ΡΠ½ΡΡ
ΡΠ΅ΡΡΡ
ΠΈ Π΄ΡΡΠ³ΠΈΡ
ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°Ρ
. ΠΠΎΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ Π½Π΅ΡΠ°Π½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅.
+
+
+
+
+
+
+
+
ΠΠ»ΠΎΠ±Π°Π»ΡΠ½ΡΡ
ΠΏΠΎΠΈΡΠΊΠΎΠ² ΡΠ΅Π³ΠΎΠ΄Π½Ρ
+
0 ΠΈΠ· 10
+
+
+
+
+
+
+
+
+
+
+ ΠΠΎΠΈΡΠΊ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅...
+
+
+
+
+
+
+ ΠΠ°ΠΉΠ΄Π΅Π½ΠΎ Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅
+
+
+
+
+
+
+
+
+
+
ΠΠΎΡ
ΠΎΠΆΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Ρ
+
ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ·Π½Π°ΡΠ°ΡΡ, ΡΡΠΎ Π²Π°ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎ ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π° Π΄ΡΡΠ³ΠΈΡ
ΡΠ°ΠΉΡΠ°Ρ
.
+
+
+
+ ΠΡΠΈΠ±ΠΊΠ° Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ°:
+
+
+
+
+ >
+ )}
);
}
\ No newline at end of file
diff --git a/src/app/components/tanstakTable.tsx b/src/app/components/tanstakTable.tsx
index cc0ac74..8045053 100644
--- a/src/app/components/tanstakTable.tsx
+++ b/src/app/components/tanstakTable.tsx
@@ -11,7 +11,7 @@ import {
SortingState,
ColumnFiltersState,
} from '@tanstack/react-table';
-import { IconImageFile, IconVideoFile, IconAudioFile, IconEye, IconDoubleArrowRight, IconArrowRight, IconDoubleArrowLeft, IconArrowLeft, IconArrowUp, IconArrowDown, IconFilter, IconFileDownload, IconShieldExclamation, IconDelete } from '@/app/ui/icons/icons';
+import { IconImageFile, IconVideoFile, IconAudioFile, IconEye, IconDoubleArrowRight, IconArrowRight, IconDoubleArrowLeft, IconArrowLeft, IconArrowUp, IconArrowDown, IconFilter, IconFileDownload, IconShieldExclamation } from '@/app/ui/icons/icons';
import { useTranslations, useLocale } from 'next-intl';
import DropDownList from '@/app/components/dropDownList';
import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
@@ -207,7 +207,7 @@ export default function TanstakFilesTable({ fileType }: { fileType: string }) {
cell: ({ row }) => {
return (
- {row.original.supportId ? row.original.supportId: '-'}
+ {row.original.supportId ? row.original.supportId : '-'}
)
},
@@ -447,7 +447,7 @@ export default function TanstakFilesTable({ fileType }: { fileType: string }) {
{t('download')}
-
+ */}
@@ -515,7 +515,10 @@ export default function TanstakFilesTable({ fileType }: { fileType: string }) {