This commit is contained in:
smanylov
2025-12-27 13:47:51 +07:00
parent f8bbf56f47
commit bd2ec273a9
17 changed files with 315 additions and 449 deletions
+3 -3
View File
@@ -4,6 +4,7 @@ import ProtectionOverview from '@/app/ui/dashboard/protection-overview';
import StatsGrid from '@/app/ui/dashboard/stats-grid'; import StatsGrid from '@/app/ui/dashboard/stats-grid';
import { useTranslations } from 'next-intl'; import { useTranslations } from 'next-intl';
import FilesTable from '@/app/ui/dashboard/files-table'; import FilesTable from '@/app/ui/dashboard/files-table';
import PageTitle from '@/app/ui/page-title';
export const metadata: Metadata = { export const metadata: Metadata = {
title: 'Dashboard', title: 'Dashboard',
@@ -15,9 +16,8 @@ export default function Page() {
return ( return (
<div> <div>
<Suspense fallback={<>...</>}> <Suspense fallback={<>...</>}>
<h1 className="page-title"> <PageTitle title="statistics">
{t("statistics")} </PageTitle>
</h1>
<div className="flex justify-between flex-wrap gap-8"> <div className="flex justify-between flex-wrap gap-8">
<ProtectionOverview /> <ProtectionOverview />
<StatsGrid /> <StatsGrid />
@@ -13,7 +13,6 @@ export default async function Page() {
<PageTitle title="audio-protection" /> <PageTitle title="audio-protection" />
<ProtectionSummary /> <ProtectionSummary />
<UploadSectionFile fileType={FILE_TYPE} allowedExtensions={file_extension} maxFileSize={max_file_size} /> <UploadSectionFile fileType={FILE_TYPE} allowedExtensions={file_extension} maxFileSize={max_file_size} />
{/* <TestSection /> */}
<FilesTable /> <FilesTable />
</div> </div>
) )
@@ -13,9 +13,7 @@ export default async function Page() {
<PageTitle title="image-protection" /> <PageTitle title="image-protection" />
<ProtectionSummary /> <ProtectionSummary />
<UploadSectionFile fileType={FILE_TYPE} allowedExtensions={file_extension} maxFileSize={max_file_size} /> <UploadSectionFile fileType={FILE_TYPE} allowedExtensions={file_extension} maxFileSize={max_file_size} />
{/* <TestSection /> */}
<FilesTable /> <FilesTable />
{/* <ProtectedFilesTable /> */}
</div> </div>
) )
} }
@@ -13,7 +13,6 @@ export default async function Page() {
<PageTitle title="video-protection" /> <PageTitle title="video-protection" />
<ProtectionSummary /> <ProtectionSummary />
<UploadSectionFile fileType={FILE_TYPE} allowedExtensions={file_extension} maxFileSize={max_file_size} /> <UploadSectionFile fileType={FILE_TYPE} allowedExtensions={file_extension} maxFileSize={max_file_size} />
{/* <TestSection /> */}
<FilesTable /> <FilesTable />
</div> </div>
) )
+3 -1
View File
@@ -4,11 +4,13 @@ import FinalSummary from '@/app/ui/reports/final-summary';
import AnalyticsCardMonth from '@/app/ui/reports/analytics-card-month'; import AnalyticsCardMonth from '@/app/ui/reports/analytics-card-month';
import AnalyticsCardGeography from '@/app/ui/reports/analytics-carв-geography'; import AnalyticsCardGeography from '@/app/ui/reports/analytics-carв-geography';
import ActivityByContentType from '@/app/ui/reports/activity-by-content-type'; import ActivityByContentType from '@/app/ui/reports/activity-by-content-type';
import PageTitle from '@/app/ui/page-title';
export default function Page() { export default function Page() {
return ( return (
<div> <div>
<h1 className="page-title">Отчёты и аналитика</h1> <PageTitle title="reports-and-analytics">
</PageTitle>
<StatsGrid /> <StatsGrid />
<ActivityByContentType /> <ActivityByContentType />
<div className="analytics-grid"> <div className="analytics-grid">
+3 -3
View File
@@ -6,15 +6,15 @@ import APISettings from '@/app/ui/settings/api-settings';
import LastActivitySettings from '@/app/ui/settings/last-activity-settings'; import LastActivitySettings from '@/app/ui/settings/last-activity-settings';
import DangerZone from '@/app/ui/settings/danger-zone'; import DangerZone from '@/app/ui/settings/danger-zone';
import { useTranslations } from 'next-intl'; import { useTranslations } from 'next-intl';
import PageTitle from '@/app/ui/page-title';
export default function Page() { export default function Page() {
const t = useTranslations('Global'); const t = useTranslations('Global');
return ( return (
<> <>
<h1 className="page-title"> <PageTitle title="account-settings">
{t('account-settings')} </PageTitle>
</h1>
<div className="settings-grid"> <div className="settings-grid">
<PersonalDataSettings /> <PersonalDataSettings />
<NotificationsMonitoringSettings /> <NotificationsMonitoringSettings />
+54 -38
View File
@@ -1,3 +1,4 @@
@use './variable.scss' as v;
@use './header.scss'; @use './header.scss';
@use './pages-styles.scss'; @use './pages-styles.scss';
@use './settings.scss'; @use './settings.scss';
@@ -6,11 +7,36 @@
@use './privacy-and-terms-pages.scss'; @use './privacy-and-terms-pages.scss';
@use './VKLogin.scss'; @use './VKLogin.scss';
.page-title {
font-size: 28px;
font-weight: 600;
margin-bottom: 30px;
display: flex;
align-items: center;
color: #1f2937;
font-family: Verdana, Geneva, Tahoma, sans-serif;
.icon {
margin-left: 5px;
margin-top: 5px;
color: v.$p-color;
}
&::before {
content: '';
width: 8px;
height: 8px;
background: v.$p-color;
border-radius: 50%;
margin-right: 15px;
}
}
.main-containter-wrapper { .main-containter-wrapper {
margin-left: 280px; margin-left: 280px;
flex: 1; flex: 1;
padding: 30px; padding: 30px;
background: #f8f9ff; background: v.$bg-light;
min-height: 100vh; min-height: 100vh;
} }
@@ -34,34 +60,34 @@
} }
.btn-primary { .btn-primary {
background: linear-gradient(135deg, #6366f1, #8b5cf6); background: linear-gradient(135deg, v.$p-color, v.$s-color);
color: white; color: v.$white;
border: 2px solid transparent; border: 2px solid transparent;
&:hover { &:hover {
transform: translateY(-2px); transform: translateY(-2px);
box-shadow: 0 8px 25px rgba(99, 102, 241, 0.3); box-shadow: 0 8px 25px v.$shadow-1;
} }
} }
.btn-secondary { .btn-secondary {
background: #f3f4f6; background: v.$bg-hover;
color: #374151; color: v.$text-p;
border: 2px solid transparent; border: 2px solid transparent;
&:hover { &:hover {
background: #e5e7eb; background: v.$bg-light;
} }
} }
.btn-outline { .btn-outline {
background: transparent; background: transparent;
border: 2px solid #6366f1; border: 2px solid v.$p-color;
color: #6366f1; color: v.$p-color;
&:hover { &:hover {
background: #6366f1; background: v.$p-color;
color: white; color: v.$white;
} }
} }
@@ -69,7 +95,7 @@
text-align: center; text-align: center;
margin: 20px 0; margin: 20px 0;
position: relative; position: relative;
color: #9ca3af; color: v.$text-m;
font-size: 14px; font-size: 14px;
&::before { &::before {
@@ -79,11 +105,11 @@
left: 0; left: 0;
right: 0; right: 0;
height: 1px; height: 1px;
background: #e5e7eb; background: v.$b-color-2;
} }
span { span {
background: white; background: v.$white;
padding: 0 15px; padding: 0 15px;
position: relative; position: relative;
} }
@@ -96,17 +122,6 @@
margin-bottom: 30px; margin-bottom: 30px;
} }
.main-content {
padding: 60px 0 100px;
background: linear-gradient(135deg, #f8fafc 0%, #ffffff 100%);
.container {
max-width: 1400px;
margin: 0 auto;
padding: 0 24px;
}
}
.show-password-button { .show-password-button {
cursor: pointer; cursor: pointer;
position: absolute; position: absolute;
@@ -122,7 +137,7 @@
&.show { &.show {
svg { svg {
color: #8b5cf6; color: v.$s-color;
} }
} }
} }
@@ -148,7 +163,7 @@
left: 0; left: 0;
width: 100vw; width: 100vw;
height: 100vh; height: 100vh;
background: #0000007a; background: v.$bg-darkening;
.modal-window { .modal-window {
position: absolute; position: absolute;
@@ -156,10 +171,10 @@
left: 50%; left: 50%;
transform: translate(-50%, -50%); transform: translate(-50%, -50%);
padding: 20px; padding: 20px;
background: #fff; background: v.$white;
color: #000; color: v.$text-p;
border-radius: 20px; border-radius: 20px;
box-shadow: rgba(0, 0, 0, 0.08) 0px 4px 20px; box-shadow: 0px 4px 20px v.$shadow-1;
} }
} }
@@ -178,7 +193,7 @@
.sidebar { .sidebar {
width: 280px; width: 280px;
background: linear-gradient(180deg, #6366f1 0%, #8b5cf6 100%); background: linear-gradient(180deg, v.$p-color 0%, v.$s-color 100%);
padding: 30px 0; padding: 30px 0;
position: fixed; position: fixed;
height: 100vh; height: 100vh;
@@ -190,7 +205,7 @@
display: flex; display: flex;
align-items: center; align-items: center;
padding: 15px 30px; padding: 15px 30px;
color: rgba(255, 255, 255, 0.8); color: v.$text-w;
text-decoration: none; text-decoration: none;
transition: all 0.3s; transition: all 0.3s;
border-radius: 0 25px 25px 0; border-radius: 0 25px 25px 0;
@@ -200,8 +215,8 @@
text-transform: uppercase; text-transform: uppercase;
&:hover { &:hover {
background: rgba(255, 255, 255, 0.15); background: #ffffff26;
color: white; color: v.$white;
} }
svg { svg {
@@ -244,8 +259,9 @@
max-height: 0; max-height: 0;
overflow: hidden; overflow: hidden;
transition: max-height 0.3s ease; transition: max-height 0.3s ease;
background: rgba(255, 255, 255, 0.1); background: #ffffff26;
margin-right: 20px; margin-right: 20px;
margin-bottom: 8px;
border-radius: 0 15px 15px 0; border-radius: 0 15px 15px 0;
} }
@@ -253,7 +269,7 @@
display: flex; display: flex;
align-items: center; align-items: center;
padding: 0 30px 40px; padding: 0 30px 40px;
color: white; color: v.$white;
font-size: 24px; font-size: 24px;
font-weight: 600; font-weight: 600;
text-transform: uppercase; text-transform: uppercase;
@@ -271,13 +287,13 @@
justify-content: center; justify-content: center;
width: 60px; width: 60px;
height: 60px; height: 60px;
background: linear-gradient(135deg, #6366f1, #8b5cf6); background: linear-gradient(135deg, v.$p-color, v.$s-color);
border-radius: 15px; border-radius: 15px;
margin-bottom: 15px; margin-bottom: 15px;
svg { svg {
width: 30px; width: 30px;
height: 30px; height: 30px;
fill: white; fill: v.$white;
} }
} }
+32 -30
View File
@@ -1,12 +1,14 @@
@use './variable.scss' as v;
.header { .header {
display: flex; display: flex;
justify-content: end; justify-content: end;
align-items: center; align-items: center;
margin-bottom: 30px; margin-bottom: 30px;
background: white; background: v.$white;
padding: 20px 30px; padding: 20px 30px;
border-radius: 20px; border-radius: 20px;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08); box-shadow: 0 4px 20px v.$shadow-1;
.header-action { .header-action {
display: flex; display: flex;
@@ -17,7 +19,7 @@
width: 40px; width: 40px;
height: 40px; height: 40px;
border-radius: 50%; border-radius: 50%;
background: #f8f9fa; background: v.$bg-light;
border: none; border: none;
cursor: pointer; cursor: pointer;
display: flex; display: flex;
@@ -27,7 +29,7 @@
position: relative; position: relative;
&:hover { &:hover {
background: #e9ecef; background: v.$bg-hover;
transform: translateY(-2px); transform: translateY(-2px);
} }
} }
@@ -47,14 +49,14 @@
display: flex; display: flex;
align-items: center; align-items: center;
gap: 6px; gap: 6px;
background: white; background: v.$white;
color: #6366f1; color: v.$p-color;
border: 2px solid #6366f1; border: 2px solid v.$p-color;
padding: 8px 12px; padding: 8px 12px;
border-radius: 20px; border-radius: 20px;
cursor: pointer; cursor: pointer;
transition: all 0.3s ease; transition: all 0.3s ease;
box-shadow: 0 4px 12px rgba(99, 102, 241, 0.15); box-shadow: 0 10px 40px v.$shadow-1;
font-size: 12px; font-size: 12px;
font-weight: 600; font-weight: 600;
min-width: 110px; min-width: 110px;
@@ -76,9 +78,9 @@
position: absolute; position: absolute;
top: calc(100% + 10px); top: calc(100% + 10px);
right: 0; right: 0;
background: white; background: v.$white;
border-radius: 12px; border-radius: 12px;
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.15); box-shadow: 10px 10px 20px 10px v.$shadow-1;
min-width: 320px; min-width: 320px;
opacity: 0; opacity: 0;
visibility: hidden; visibility: hidden;
@@ -96,7 +98,7 @@
.notification-dropdown { .notification-dropdown {
.notification-header { .notification-header {
padding: 15px 20px; padding: 15px 20px;
border-bottom: 1px solid #f3f4f6; border-bottom: 1px solid v.$b-color-1;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
@@ -105,12 +107,12 @@
margin: 0; margin: 0;
font-size: 16px; font-size: 16px;
font-weight: 600; font-weight: 600;
color: #1f2937; color: v.$text-p;
} }
.notification-count { .notification-count {
font-size: 12px; font-size: 12px;
color: #6366f1; color: v.$p-color;
font-weight: 500; font-weight: 500;
} }
} }
@@ -124,7 +126,7 @@
display: flex; display: flex;
gap: 12px; gap: 12px;
padding: 15px 20px; padding: 15px 20px;
border-bottom: 1px solid #f3f4f6; border-bottom: 1px solid v.$b-color-1;
transition: background-color 0.2s; transition: background-color 0.2s;
cursor: pointer; cursor: pointer;
} }
@@ -133,7 +135,7 @@
display: block; display: block;
font-size: 15px; font-size: 15px;
font-weight: 700; font-weight: 700;
color: #1f2937; color: v.$text-p;
margin-bottom: 6px; margin-bottom: 6px;
} }
@@ -144,23 +146,23 @@
.notification-text { .notification-text {
font-size: 13px; font-size: 13px;
color: #4b5563; color: v.$text-s;
margin-bottom: 4px; margin-bottom: 4px;
font-weight: 500; font-weight: 500;
} }
.notification-time { .notification-time {
font-size: 12px; font-size: 12px;
color: #9ca3af; color: v.$text-m;
} }
.notification-footer { .notification-footer {
padding: 12px 20px; padding: 12px 20px;
border-top: 1px solid #f3f4f6; border-top: 1px solid v.$b-color-1;
text-align: center; text-align: center;
.notification-link { .notification-link {
color: #6366f1; color: v.$p-color;
font-size: 14px; font-size: 14px;
font-weight: 500; font-weight: 500;
text-decoration: none; text-decoration: none;
@@ -173,11 +175,11 @@
width: 40px; width: 40px;
height: 40px; height: 40px;
border-radius: 50%; border-radius: 50%;
background: linear-gradient(45deg, #6366f1, #8b5cf6); background: linear-gradient(45deg, v.$p-color, v.$s-color);
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
color: white; color: v.$white;
font-weight: 600; font-weight: 600;
cursor: pointer; cursor: pointer;
transition: all 0.3s; transition: all 0.3s;
@@ -190,7 +192,7 @@
.user-info-header { .user-info-header {
padding: 20px; padding: 20px;
border-bottom: 1px solid #f3f4f6; border-bottom: 1px solid v.$b-color-1;
display: flex; display: flex;
gap: 15px; gap: 15px;
align-items: center; align-items: center;
@@ -199,8 +201,8 @@
.user-avatar-large { .user-avatar-large {
width: 50px; width: 50px;
height: 50px; height: 50px;
background: linear-gradient(135deg, #6366f1, #8b5cf6); background: linear-gradient(135deg, v.$p-color, v.$s-color);
color: white; color: v.$white;
border-radius: 50%; border-radius: 50%;
display: flex; display: flex;
align-items: center; align-items: center;
@@ -219,14 +221,14 @@
.user-name { .user-name {
font-weight: 600; font-weight: 600;
font-size: 15px; font-size: 15px;
color: #1f2937; color: v.$text-p;
margin-bottom: 4px; margin-bottom: 4px;
} }
.user-email, .user-email,
.user-subscription-expire { .user-subscription-expire {
font-size: 13px; font-size: 13px;
color: #6b7280; color: v.$text-m;
margin-bottom: 8px; margin-bottom: 8px;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
@@ -246,7 +248,7 @@
align-items: center; align-items: center;
padding: 12px 20px; padding: 12px 20px;
text-decoration: none; text-decoration: none;
color: #374151; color: v.$text-s;
transition: background-color 0.2s; transition: background-color 0.2s;
svg { svg {
@@ -263,12 +265,12 @@
font-weight: 600; font-weight: 600;
text-transform: uppercase; text-transform: uppercase;
letter-spacing: 0.5px; letter-spacing: 0.5px;
background: #e6ebf1; background: v.$bg-hover;
padding: 2px 5px; padding: 2px 5px;
} }
.user-menu-footer { .user-menu-footer {
border-top: 1px solid #f3f4f6; border-top: 1px solid v.$b-color-1;
padding: 10px 0; padding: 10px 0;
} }
@@ -277,7 +279,7 @@
align-items: center; align-items: center;
padding: 12px 20px; padding: 12px 20px;
text-decoration: none; text-decoration: none;
color: #dc2626; color: v.$red;
transition: background-color 0.2s; transition: background-color 0.2s;
svg { svg {
+25 -368
View File
@@ -1,47 +1,25 @@
.page-title { @use './variable.scss' as v;
font-size: 28px;
font-weight: 600;
margin-bottom: 30px;
display: flex;
align-items: center;
color: #1f2937;
.icon {
margin-left: 5px;
margin-top: 5px;
color: #6366f1;
}
&::before {
content: '';
width: 8px;
height: 8px;
background: #6366f1;
border-radius: 50%;
margin-right: 15px;
}
}
.chart-title { .chart-title {
font-size: 18px; font-size: 18px;
font-weight: 600; font-weight: 600;
display: flex; display: flex;
align-items: center; align-items: center;
color: #1f2937; color: v.$text-p;
&::before { &::before {
content: ''; content: '';
width: 6px; width: 6px;
height: 6px; height: 6px;
background: #6366f1; background: v.$p-color;
border-radius: 50%; border-radius: 50%;
margin-right: 10px; margin-right: 10px;
} }
} }
.protection-overview { .protection-overview {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); background: linear-gradient(135deg, v.$p-color 50%, v.$s-color 100%);
color: white; color: v.$white;
border-radius: 20px; border-radius: 20px;
padding: 25px; padding: 25px;
margin-bottom: 30px; margin-bottom: 30px;
@@ -59,7 +37,7 @@
} }
.pie-char-text { .pie-char-text {
fill: white; fill: v.$white;
font-size: 20px; font-size: 20px;
text-anchor: middle; text-anchor: middle;
dominant-baseline: middle; dominant-baseline: middle;
@@ -146,7 +124,7 @@
left: 80%; left: 80%;
top: 50%; top: 50%;
max-height: 0; max-height: 0;
color: #fff; color: v.$white;
font-size: 16px; font-size: 16px;
border-radius: 20px; border-radius: 20px;
padding: 0; padding: 0;
@@ -263,196 +241,29 @@
} }
.block-wrapper { .block-wrapper {
background: white; background: v.$white;
border-radius: 20px; border-radius: 20px;
padding: 25px; padding: 25px;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08); box-shadow: 0 4px 20px v.$shadow-1;
border: 1px solid #f1f5f9; border: 1px solid v.$b-color-1;
margin-bottom: 30px; margin-bottom: 30px;
} }
.recent-files-list {
.file-item {
display: flex;
align-items: center;
padding: 12px 0;
border-bottom: 1px solid #f8fafc;
transition: background-color 0.2s;
&:hover {
background: #f8fafc;
margin: 0 -15px;
padding-left: 15px;
padding-right: 15px;
border-radius: 10px;
}
}
.file-icon {
width: 32px;
height: 32px;
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
margin-right: 12px;
font-size: 14px;
}
.file-info {
flex: 1;
}
.file-name {
font-weight: 500;
color: #1e293b;
font-size: 14px;
margin-bottom: 2px;
}
.file-meta {
font-size: 12px;
color: #64748b;
}
}
.user-info {
.user-data {
margin-bottom: 20px;
}
.user-field {
margin-bottom: 15px;
padding: 12px;
background: #f9fafb;
border-radius: 10px;
font-size: 14px;
border-left: 4px solid #6366f1;
strong {
color: #6366f1;
}
&-limit {
&-title {
font-size: 12px;
color: #64748b;
margin-bottom: 5px;
}
&-text {
font-size: 13px;
margin-bottom: 6px;
span {
font-weight: 600;
color: #1e293b;
}
}
&-progress-bar {
background: #f1f5f9;
border-radius: 10px;
overflow: hidden;
height: 6px;
margin: 8px 0;
}
&-progress-fill {
width: 12%;
background: linear-gradient(90deg, rgb(99, 102, 241), rgb(139, 92, 246));
height: 100%;
border-radius: 10px;
transition: width 0.8s ease;
}
&-footer {
font-size: 11px;
color: #64748b;
text-align: center;
}
}
}
.stats-mini {
display: flex;
justify-content: space-between;
margin-top: 20px;
}
.stat-mini {
text-align: center;
&-value {
font-size: 24px;
font-weight: 700;
color: #6366f1;
}
&-label {
font-size: 12px;
color: #6b7280;
margin-top: 5px;
}
}
}
.protection-summary {
background: linear-gradient(135deg, #e8f5e8, #c8e6c9);
border: 2px solid #4caf50;
border-radius: 15px;
padding: 20px;
margin-bottom: 25px;
text-align: center;
h3 {
color: #2e7d32;
margin-bottom: 15px;
font-size: 18px;
}
.protection-stats {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
gap: 15px;
margin-top: 15px;
}
.stat-card {
background: rgba(255, 255, 255, 0.8);
padding: 15px;
border-radius: 10px;
text-align: center;
}
.stat-number {
font-size: 24px;
font-weight: bold;
color: #2e7d32;
}
.stat-label {
font-size: 12px;
color: #666;
margin-top: 5px;
}
}
.upload-section { .upload-section {
background: white; background: v.$white;
border-radius: 20px; border-radius: 20px;
padding: 30px; padding: 30px;
margin-bottom: 30px; margin-bottom: 30px;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08); box-shadow: 0 4px 20px v.$shadow-1;
h3 { h3 {
margin-bottom: 20px; margin-bottom: 20px;
color: #111827; color: v.$text-p;
font-size: 20px; font-size: 20px;
} }
.drag-drop-zone { .drag-drop-zone {
border: 3px dashed #6366f1; border: 3px dashed v.$p-color;
border-radius: 15px; border-radius: 15px;
padding: 40px 20px; padding: 40px 20px;
text-align: center; text-align: center;
@@ -464,30 +275,30 @@
width: 70px; width: 70px;
height: 70px; height: 70px;
margin: 0 auto; margin: 0 auto;
color: #6366f1; color: v.$p-color;
} }
h4 { h4 {
color: #6366f1; color: v.$p-color;
margin-bottom: 5px; margin-bottom: 5px;
font-size: 22px; font-size: 22px;
} }
.description { .description {
color: #6b7280; color: v.$text-s;
margin-bottom: 5px; margin-bottom: 5px;
text-align: start; text-align: start;
} }
.btn-primary { .btn-primary {
background: linear-gradient(45deg, #6566f1, #5a5ce9); background: v.$p-color;
margin-bottom: 40px; margin-bottom: 40px;
} }
} }
.selected-file { .selected-file {
border-radius: 15px; border-radius: 15px;
background: #fff; background: v.$white;
padding: 10px; padding: 10px;
border: 2px solid transparent; border: 2px solid transparent;
transition: all 0.3s ease-in; transition: all 0.3s ease-in;
@@ -511,8 +322,8 @@
} }
.btn-confirm { .btn-confirm {
background: linear-gradient(45deg, #6566f1, #01579b); background: linear-gradient(45deg, v.$p-color 50%, v.$s-color 100%);
color: white; color: v.$white;
border: none; border: none;
padding: 5px 15px; padding: 5px 15px;
border-radius: 12px; border-radius: 12px;
@@ -534,9 +345,9 @@
} }
.btn-cancel { .btn-cancel {
background: #fff; background: v.$white;
color: rgb(99, 102, 241); color: v.$p-color;
border: 2px solid rgb(99, 102, 241); border: 2px solid v.$p-color;
padding: 5px 15px; padding: 5px 15px;
border-radius: 12px; border-radius: 12px;
cursor: pointer; cursor: pointer;
@@ -548,165 +359,11 @@
.btn:hover { .btn:hover {
transform: translateY(-2px); transform: translateY(-2px);
box-shadow: 0 8px 25px #6366f14d; box-shadow: 0 8px 25px v.$shadow-1;
} }
} }
} }
.test-section {
background: linear-gradient(135deg, #fff3e0, #ffe0b2);
border-radius: 20px;
padding: 30px;
margin-bottom: 30px;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
h3 {
margin-bottom: 20px;
color: #e65100;
font-size: 20px;
}
.test-section-content {
border: 2px dashed #ff9800;
border-radius: 10px;
padding: 20px;
text-align: center;
background: #fff8e1;
h4 {
font-size: 32px;
margin-bottom: 10px;
}
.btn {
background: linear-gradient(45deg, #ff9800, #f57c00);
}
p {
margin-top: 15px;
font-size: 12px;
color: #e65100;
}
}
}
.protected-files-table {
background: white;
border-radius: 15px;
overflow: hidden;
margin-top: 30px;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
h3 {
padding: 20px 20px 0;
color: #111827;
font-size: 18px;
margin-bottom: 20px;
}
table {
width: 100%;
border-collapse: collapse;
}
th {
background: linear-gradient(180deg, #6366f1, #8b5cf6);
color: white;
padding: 15px;
text-align: left;
font-weight: 600;
font-size: 14px;
}
td {
padding: 15px;
border-bottom: 1px solid #f3f4f6;
vertical-align: middle;
}
.files-table {
&-file {
display: flex;
align-items: center;
}
&-icon {
width: 40px;
height: 40px;
background: #f0f9ff;
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
margin-right: 12px;
border: 2px solid #6366f1;
color: #6366f1;
}
&-title {
font-weight: 500;
color: #111827;
font-size: 14px;
}
&-protect {
font-size: 11px;
color: #6366f1;
font-weight: 600;
}
&-size {
color: #6b7280;
font-size: 14px;
}
&-protect {
display: flex;
align-items: center;
}
&-bar {
width: 30px;
height: 6px;
background: #e5e7eb;
border-radius: 3px;
margin-right: 8px;
}
&-fill {
width: 100%;
height: 100%;
background: #6366f1;
border-radius: 3px;
}
&-date {
color: #6b7280;
font-size: 13px;
}
}
.btn-secondary {
background: #6366f1;
color: white;
padding: 5px 16px 5px 10px;
}
.icon {
height: 18px;
}
.real-protection-badge {
background: linear-gradient(135deg, #6366f1, #8b5cf6);
color: white;
padding: 2px 6px;
border-radius: 4px;
font-size: 9px;
font-weight: bold;
margin-left: 5px;
}
}
.page-row { .page-row {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
@@ -1,3 +1,14 @@
.main-content {
padding: 60px 0 100px;
background: linear-gradient(135deg, #f8fafc 0%, #fff 100%);
.container {
max-width: 1400px;
margin: 0 auto;
padding: 0 24px;
}
}
.hero-container { .hero-container {
margin-bottom: 60px; margin-bottom: 60px;
} }
+2
View File
@@ -1,3 +1,5 @@
@use './variable.scss' as v;
.settings-form { .settings-form {
background: white; background: white;
border-radius: 20px; border-radius: 20px;
+14
View File
@@ -0,0 +1,14 @@
$p-color: #6366f1;
$s-color: #8b5cf6;
$text-p: #1f2937;
$text-s: #4b5563;
$text-m: #9ca3af;
$text-w: #ffffffcc;
$b-color-1: #f3f4f6;
$b-color-2: #e5e7eb;
$bg-hover: #e9ecef;
$bg-light: #f8f9ff;
$bg-darkening: #0000007a;
$shadow-1: #0000001a;
$white: #fff;
$red: #dc2626;
@@ -1,5 +1,50 @@
/* removed */ /* removed */
/* .recent-files-list {
.file-item {
display: flex;
align-items: center;
padding: 12px 0;
border-bottom: 1px solid #f8fafc;
transition: background-color 0.2s;
&:hover {
background: #f8fafc;
margin: 0 -15px;
padding-left: 15px;
padding-right: 15px;
border-radius: 10px;
}
}
.file-icon {
width: 32px;
height: 32px;
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
margin-right: 12px;
font-size: 14px;
}
.file-info {
flex: 1;
}
.file-name {
font-weight: 500;
color: v.$text-s;
font-size: 14px;
margin-bottom: 2px;
}
.file-meta {
font-size: 12px;
color: #64748b;
}
} */
export default function RecentFilesList() { export default function RecentFilesList() {
return ( return (
<div className="recent-files-list block-wrapper"> <div className="recent-files-list block-wrapper">
+81
View File
@@ -1,5 +1,86 @@
/* removed */ /* removed */
/* .user-info {
.user-data {
margin-bottom: 20px;
}
.user-field {
margin-bottom: 15px;
padding: 12px;
background: #f9fafb;
border-radius: 10px;
font-size: 14px;
border-left: 4px solid v.$p-color;
strong {
color: v.$p-color;
}
&-limit {
&-title {
font-size: 12px;
color: #64748b;
margin-bottom: 5px;
}
&-text {
font-size: 13px;
margin-bottom: 6px;
span {
font-weight: 600;
color: #1e293b;
}
}
&-progress-bar {
background: #f1f5f9;
border-radius: 10px;
overflow: hidden;
height: 6px;
margin: 8px 0;
}
&-progress-fill {
width: 12%;
background: linear-gradient(90deg, rgb(99, 102, 241), rgb(139, 92, 246));
height: 100%;
border-radius: 10px;
transition: width 0.8s ease;
}
&-footer {
font-size: 11px;
color: #64748b;
text-align: center;
}
}
}
.stats-mini {
display: flex;
justify-content: space-between;
margin-top: 20px;
}
.stat-mini {
text-align: center;
&-value {
font-size: 24px;
font-weight: 700;
color: v.$p-color;
}
&-label {
font-size: 12px;
color: #6b7280;
margin-top: 5px;
}
}
} */
export default function UserInfo() { export default function UserInfo() {
return ( return (
<div className="user-info block-wrapper"> <div className="user-info block-wrapper">
+38
View File
@@ -1,3 +1,41 @@
/* removed */
/* .test-section {
background: linear-gradient(135deg, #fff3e0, #ffe0b2);
border-radius: 20px;
padding: 30px;
margin-bottom: 30px;
box-shadow: 0 4px 20px v.$shadow-1;
h3 {
margin-bottom: 20px;
color: #e65100;
font-size: 20px;
}
.test-section-content {
border: 2px dashed #ff9800;
border-radius: 10px;
padding: 20px;
text-align: center;
background: #fff8e1;
h4 {
font-size: 32px;
margin-bottom: 10px;
}
.btn {
background: linear-gradient(45deg, #ff9800, #f57c00);
}
p {
margin-top: 15px;
font-size: 12px;
color: #e65100;
}
}
} */
export default function TestSection() { export default function TestSection() {
return ( return (
<div className="test-section"> <div className="test-section">
+2 -1
View File
@@ -147,7 +147,8 @@
"to": "to", "to": "to",
"yes": "yes", "yes": "yes",
"no": "no", "no": "no",
"you-sure-you-want-to-delete": "Are you sure you want to delete?" "you-sure-you-want-to-delete": "Are you sure you want to delete?",
"reports-and-analytics": "Reports and analytics"
}, },
"Login-register-form": { "Login-register-form": {
"and": "and", "and": "and",
+2 -1
View File
@@ -147,7 +147,8 @@
"to": "до", "to": "до",
"yes": "да", "yes": "да",
"no": "нет", "no": "нет",
"you-sure-you-want-to-delete": "Уверены, что хотите удалить?" "you-sure-you-want-to-delete": "Уверены, что хотите удалить?",
"reports-and-analytics": "Отчёты и аналитика"
}, },
"Login-register-form": { "Login-register-form": {
"and": "и", "and": "и",