diff --git a/README.md b/README.md
index d1f74b0..b0fb9d1 100644
--- a/README.md
+++ b/README.md
@@ -4,4 +4,4 @@
npm run dev
```
-Open [http://localhost:3000](http://localhost:3000)
\ No newline at end of file
+Open [http://localhost:2999](http://localhost:2999)
\ No newline at end of file
diff --git a/src/app/pages/page1/page.tsx b/src/app/pages/emptypage/page.tsx
similarity index 83%
rename from src/app/pages/page1/page.tsx
rename to src/app/pages/emptypage/page.tsx
index 49d924f..69451a5 100644
--- a/src/app/pages/page1/page.tsx
+++ b/src/app/pages/emptypage/page.tsx
@@ -1,7 +1,7 @@
import { Metadata } from 'next';
export const metadata: Metadata = {
- title: 'page 1',
+ title: 'emptypage',
};
export default function Home() {
@@ -9,7 +9,7 @@ export default function Home() {
diff --git a/src/app/pages/page2/page.tsx b/src/app/pages/page2/page.tsx
deleted file mode 100644
index 0314a45..0000000
--- a/src/app/pages/page2/page.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import { Metadata } from 'next';
-
-export const metadata: Metadata = {
- title: 'page 2',
-};
-
-export default function Home() {
- return (
-
- );
-}
diff --git a/src/app/pages/payment/page.tsx b/src/app/pages/payment/page.tsx
new file mode 100644
index 0000000..9e59a16
--- /dev/null
+++ b/src/app/pages/payment/page.tsx
@@ -0,0 +1,30 @@
+import { Metadata } from 'next';
+import UserUsage from '@/app/ui/payment/user-usage';
+import TokensSpendStats from '@/app/ui/payment/tokens-spend-stats';
+import PaymentTabs from '@/app/ui/payment/payment-tabs';
+import SecurePayments from '@/app/ui/payment/secure-payments';
+
+export const metadata: Metadata = {
+ title: 'payment',
+};
+
+export default function Home() {
+ return (
+
+
+
+
+
💳 Управление подпиской и токенами
+
+ Выберите подходящий тарифный план или пополните баланс токенов для защиты файлов
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/src/app/styles/global-styles.scss b/src/app/styles/global-styles.scss
index 726d045..0caff06 100644
--- a/src/app/styles/global-styles.scss
+++ b/src/app/styles/global-styles.scss
@@ -1,6 +1,7 @@
@use './header.scss';
@use './dashboard.scss';
@use './settings.scss';
+@use './payment-container.scss';
.btn {
padding: 12px 24px;
diff --git a/src/app/styles/payment-container.scss b/src/app/styles/payment-container.scss
new file mode 100644
index 0000000..4891da6
--- /dev/null
+++ b/src/app/styles/payment-container.scss
@@ -0,0 +1,340 @@
+.payment-container {
+ max-width: 1200px;
+ margin: 0 auto;
+ padding: 15px;
+
+ .page-title {
+ font-size: 1.8rem;
+ margin-bottom: 8px;
+ }
+
+ .usage-stats,
+ .tokens-stats {
+ background: white;
+ border-radius: 16px;
+ padding: 25px;
+ margin-bottom: 25px;
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
+
+ h3 {
+ margin-bottom: 16px;
+ color: #1e293b;
+ font-size: 1.15rem;
+ font-weight: bold;
+ }
+ }
+
+ .stats-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
+ gap: 16px;
+
+ .stat-card {
+ background: #f8fafc;
+ border-radius: 14px;
+ padding: 16px;
+ text-align: center;
+ border: 1px solid #e2e8f0;
+ }
+
+ .stat-value {
+ font-size: 1.6rem;
+ font-weight: 700;
+ color: #1e293b;
+ margin-bottom: 4px;
+ }
+
+ .stat-label {
+ color: #64748b;
+ font-size: 0.85rem;
+ }
+
+ .progress-bar {
+ width: 100%;
+ height: 6px;
+ background: #e2e8f0;
+ border-radius: 3px;
+ overflow: hidden;
+ margin-top: 8px;
+ }
+
+ .progress-fill {
+ height: 100%;
+ background: linear-gradient(90deg, #10b981, #059669);
+ transition: width 1s ease;
+ }
+ }
+
+ .tokens-stats {
+ .tokens-comparison {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ gap: 20px;
+ margin-bottom: 25px;
+ }
+
+ .month-stats {
+ background: #f8fafc;
+ border-radius: 14px;
+ padding: 16px;
+ text-align: center;
+
+ &.current {
+ background: linear-gradient(135deg, #e0e7ff, #c7d2fe);
+ border: 2px solid #6366f1;
+
+ .spent-amount {
+ background: linear-gradient(135deg, #6366f1, #8b5cf6);
+ -webkit-text-fill-color: transparent;
+ background-clip: text;
+ }
+ }
+
+ .spent-amount {
+ font-size: 2.2rem;
+ font-weight: 800;
+ margin-bottom: 6px;
+ color: #64748b;
+ }
+
+ .month-title {
+ font-size: 1rem;
+ font-weight: 600;
+ color: #1e293b;
+ margin-bottom: 12px;
+ }
+
+ .spent-label {
+ margin-bottom: 8px;
+ }
+
+ .spent-label,
+ .protected-label {
+ color: #64748b;
+ font-size: 0.85rem;
+ }
+ }
+ }
+
+ .payment-tabs {
+ display: flex;
+ gap: 8px;
+ margin-bottom: 25px;
+ background: white;
+ border-radius: 16px;
+ padding: 6px;
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
+
+ .payment-tab {
+ flex: 1;
+ text-align: center;
+ padding: 12px 16px;
+ border-radius: 12px;
+ cursor: pointer;
+ transition: all .3s;
+ font-weight: 600;
+ font-size: 0.9rem;
+ border: none;
+ background: transparent;
+ color: #64748b;
+
+ &.active {
+ background: linear-gradient(135deg, #6366f1, #8b5cf6);
+ color: white;
+ transform: translateY(-2px);
+ box-shadow: 0 8px 25px rgba(99, 102, 241, 0.3);
+
+ &:hover {
+ background: linear-gradient(135deg, #6366f1, #8b5cf6);
+ }
+ }
+
+ &:hover {
+ background: linear-gradient(135deg, #d7d8e9, #aa90e9);
+ }
+ }
+ }
+
+ .tab-content {
+ .billing-toggle {
+ text-align: center;
+ margin-bottom: 30px;
+
+ &>div {
+ display: inline-block;
+ background: white;
+ border-radius: 16px;
+ padding: 5px;
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
+ }
+
+ .billing-btn {
+ padding: 10px 25px;
+ border: none;
+ border-radius: 12px;
+ font-weight: 600;
+ cursor: pointer;
+ transition: 0.3s;
+ background: transparent;
+ color: rgb(100, 116, 139);
+ position: relative;
+ font-size: 0.9rem;
+
+ &.active {
+ background: linear-gradient(135deg, rgb(99, 102, 241), rgb(139, 92, 246));
+ color: #fff;
+ }
+
+ span {
+ position: absolute;
+ top: -6px;
+ right: -6px;
+ background: #f59e0b;
+ color: white;
+ font-size: 9px;
+ padding: 2px 5px;
+ border-radius: 6px;
+ font-weight: 700;
+ }
+ }
+ }
+
+ .subscription-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
+ gap: 20px;
+ margin-bottom: 25px;
+ }
+
+ .plan-card {
+ background: white;
+ border-radius: 20px;
+ padding: 25px;
+ position: relative;
+ border: 2px solid #e2e8f0;
+ transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
+ cursor: pointer;
+ overflow: visible;
+
+ .plan-header {
+ text-align: center;
+ margin-bottom: 20px;
+ position: relative;
+ }
+
+ .plan-icon {
+ font-size: 2.5rem;
+ margin-bottom: 8px;
+ filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.1));
+ }
+
+ .plan-name {
+ font-size: 1.2rem;
+ font-weight: 700;
+ color: #1e293b;
+ margin-bottom: 6px;
+ }
+
+ .plan-price {
+ font-size: 2rem;
+ font-weight: 800;
+ background: linear-gradient(135deg, #6366f1, #8b5cf6);
+ -webkit-text-fill-color: transparent;
+ background-clip: text;
+ margin-bottom: 4px;
+ }
+
+ .plan-period {
+ color: #64748b;
+ font-size: 0.85rem;
+ }
+
+ .plan-tokens {
+ background: linear-gradient(135deg, #e3f2fd, #bbdefb);
+ color: #1976d2;
+ padding: 6px 14px;
+ border-radius: 16px;
+ font-size: 0.85rem;
+ font-weight: 600;
+ margin: 12px auto;
+ display: inline-block;
+ }
+
+ .plan-features {
+ list-style: none;
+ margin-bottom: 20px;
+ }
+
+ .plan-feature {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ padding: 6px 0;
+ font-size: 0.9rem;
+ color: #374151;
+ }
+
+ .feature-icon {
+ width: 18px;
+ height: 18px;
+ border-radius: 50%;
+ background: #10b981;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ color: white;
+ font-size: 11px;
+ flex-shrink: 0;
+
+ &.not {
+ background: #ef4444;
+ }
+ }
+ }
+ }
+
+ .secure-payments-wrapper {
+ background: white;
+ border-radius: 16px;
+ padding: 20px;
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
+
+ h3 {
+ margin-bottom: 16px;
+ color: #1e293b;
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ font-size: 1.1rem;
+ font-weight: bold;
+ }
+
+ .secure-payments-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
+ gap: 16px;
+ text-align: center;
+ }
+
+ .secure-payments-card {
+ padding: 12px;
+
+ .secure-payments-card-header {
+ font-size: 1.8rem;
+ margin-bottom: 8px;
+ }
+
+ h4 {
+ color: #1e293b;
+ margin-bottom: 6px;
+ font-size: 0.95rem;
+ font-weight: bold;
+ }
+
+ p {
+ color: #64748b;
+ font-size: 0.85rem;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/app/ui/header/headerPanel.tsx b/src/app/ui/header/headerPanel.tsx
index a7106dc..dc586e1 100644
--- a/src/app/ui/header/headerPanel.tsx
+++ b/src/app/ui/header/headerPanel.tsx
@@ -12,7 +12,10 @@ export default function HeaderPanel() {
-
+
-
+
+ PaymentTubBuyTokens
+
+ )
+}
\ No newline at end of file
diff --git a/src/app/ui/payment/payment-tab-tariffs.tsx b/src/app/ui/payment/payment-tab-tariffs.tsx
new file mode 100644
index 0000000..2dfd7dc
--- /dev/null
+++ b/src/app/ui/payment/payment-tab-tariffs.tsx
@@ -0,0 +1,122 @@
+export default function PaymentTabTariffs() {
+ return (
+
+
+
+
+
+
+
+
+
+
+
🚀
+
СТАРТ
+
900₽
+
в месяц
+
100 токенов включено
+
+
+ -
+ ✓
+ 100 файлов в месяц
+
+ -
+ ✓
+ 1 ГБ хранилища
+
+ -
+ ✓
+ До 10 МБ на файл
+
+ -
+ ✓
+ Базовые модули защиты
+
+ -
+ ✓
+ Поддержка 24/7
+
+ -
+ ✗
+ API доступ
+
+
+
+
+
+
🚀
+
ПРЕМИУМ
+
3500₽
+
в месяц
+
100 токенов включено
+
+
+ -
+ ✓
+ 100 файлов в месяц
+
+ -
+ ✓
+ 1 ГБ хранилища
+
+ -
+ ✓
+ До 10 МБ на файл
+
+ -
+ ✓
+ Базовые модули защиты
+
+ -
+ ✓
+ Поддержка 24/7
+
+ -
+ ✗
+ API доступ
+
+
+
+
+
+
🚀
+
ПРОФИ
+
9500₽
+
в месяц
+
100 токенов включено
+
+
+ -
+ ✓
+ 100 файлов в месяц
+
+ -
+ ✓
+ 1 ГБ хранилища
+
+ -
+ ✓
+ До 10 МБ на файл
+
+ -
+ ✓
+ Базовые модули защиты
+
+ -
+ ✓
+ Поддержка 24/7
+
+ -
+ ✗
+ API доступ
+
+
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/src/app/ui/payment/payment-tab-transaction-history.tsx b/src/app/ui/payment/payment-tab-transaction-history.tsx
new file mode 100644
index 0000000..3869aa4
--- /dev/null
+++ b/src/app/ui/payment/payment-tab-transaction-history.tsx
@@ -0,0 +1,7 @@
+export default function PaymentTabTransactionHistory() {
+ return (
+
+ payment-tab-transaction-history
+
+ )
+}
\ No newline at end of file
diff --git a/src/app/ui/payment/payment-tabs.tsx b/src/app/ui/payment/payment-tabs.tsx
new file mode 100644
index 0000000..2edf12e
--- /dev/null
+++ b/src/app/ui/payment/payment-tabs.tsx
@@ -0,0 +1,53 @@
+'use client'
+
+import { useState } from 'react';
+import PaymentTabTariffs from '@/app/ui/payment/payment-tab-tariffs';
+import PaymentTubBuyTokens from './payment-tab-buy-tokens';
+import PaymentTabTransactionHistory from './payment-tab-transaction-history';
+
+
+export default function PaymentTabs() {
+ let [selectedTab, setSelectedTab] = useState('1');
+ function switchTabsHandler(tab: string) {
+ console.log('click');
+ setSelectedTab(tab);
+ }
+ return (
+ <>
+
+
+
+
+
+
+ {selectedTab === '1' && (
+
+ )}
+ {selectedTab === '2' && (
+
+ )}
+ {selectedTab === '3' && (
+
+ )}
+
+ >
+ )
+}
\ No newline at end of file
diff --git a/src/app/ui/payment/secure-payments.tsx b/src/app/ui/payment/secure-payments.tsx
new file mode 100644
index 0000000..d530eaa
--- /dev/null
+++ b/src/app/ui/payment/secure-payments.tsx
@@ -0,0 +1,32 @@
+export default function SecurePayments() {
+ return (
+
+
+ 🔒 Безопасные платежи
+
+
+
+
+ 🪪
+
+
Яндекс.Касса
+
Надёжная платёжная система с защитой данных
+
+
+
+ 💳
+
+
Все способы оплаты
+
Банковские карты, электронные кошельки, СБП
+
+
+
+ 🔐
+
+
SSL шифрование
+
Ваши платёжные данные защищены
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/src/app/ui/payment/tokens-spend-stats.tsx b/src/app/ui/payment/tokens-spend-stats.tsx
new file mode 100644
index 0000000..d90037e
--- /dev/null
+++ b/src/app/ui/payment/tokens-spend-stats.tsx
@@ -0,0 +1,40 @@
+export default function TokensSpendStats() {
+ return (
+
+
+ Статистика трат токенов
+
+
+
+
+ Текущий месяц (декабрь 2025)
+
+
+ 0
+
+
+ токенов потрачено
+
+
+ Защищено файлов: 0
+
+
+
+
+
+ Прошлый месяц (ноябрь 2025)
+
+
+ 0
+
+
+ токенов потрачено
+
+
+ Защищено файлов: 0
+
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/src/app/ui/payment/user-usage.tsx b/src/app/ui/payment/user-usage.tsx
new file mode 100644
index 0000000..0669b1c
--- /dev/null
+++ b/src/app/ui/payment/user-usage.tsx
@@ -0,0 +1,41 @@
+export default function UserUsage() {
+ return (
+
+
+ 📊 Ваше использование
+
+
+
+
0 / 2,000
+
Файлов в месяц
+
+
+
+
0 / 20 ГБ
+
Объём хранилища
+
+
+
+
0
+
Токенов на балансе
+
+
+
+
+ )
+}
\ No newline at end of file