themeht commited on
Commit
7b65a9a
·
verified ·
1 Parent(s): 07afce0

make this html, css code more professional and cool. don't edit the id and class names because my javascript is using them:

Browse files

<!DOCTYPE html>
<html lang="fa" dir="rtl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>پروفایل کاربر - اپلیکیشن تلگرام</title>
<script src="https://telegram.org/js/telegram-web-app.js"></script>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}

:root {
--primary-color: #0088cc;
--primary-light: #e6f7ff;
--primary-dark: #006699;
--secondary-color: #6c757d;
--success-color: #28a745;
--warning-color: #ffc107;
--danger-color: #dc3545;
--light-color: #f8f9fa;
--dark-color: #343a40;
--border-radius: 12px;
--border-radius-sm: 8px;
--box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
--box-shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.12);
--transition: all 0.3s ease;
--gradient-primary: linear-gradient(135deg, var(--primary-color), #34b7f1);
--gradient-success: linear-gradient(135deg, var(--success-color), #20c997);
--gradient-warning: linear-gradient(135deg, var(--warning-color), #fd7e14);
--gradient-danger: linear-gradient(135deg, var(--danger-color), #e83e8c);
}

body {
font-family: 'Vazirmatn', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
background: var(--tg-theme-bg-color, #f5f5f5);
color: var(--tg-theme-text-color, #333333);
line-height: 1.6;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}

.container {
max-width: 100%;
padding: 16px;
}

.profile-card {
background: var(--tg-theme-secondary-bg-color, #ffffff);
border-radius: var(--border-radius);
padding: 24px;
margin-bottom: 20px;
box-shadow: var(--box-shadow);
border: 1px solid rgba(0, 0, 0, 0.05);
transition: var(--transition);
position: relative;
overflow: hidden;
}

.profile-card::before {
content: '';
position: absolute;
top: 0;
right: 0;
width: 100%;
height: 4px;
background: var(--gradient-primary);
}

.profile-card:hover {
transform: translateY(-4px);
box-shadow: var(--box-shadow-lg);
}

.profile-header {
display: flex;
align-items: center;
margin-bottom: 20px;
}


.profile-info {
flex: 1;
}

.profile-name {
font-size: 1.3rem;
font-weight: 700;
margin-bottom: 6px;
color: var(--tg-theme-text-color, #000000);
}

.profile-username {
color: var(--tg-theme-hint-color, #666666);
font-size: 0.95rem;
background: rgba(0, 0, 0, 0.03);
padding: 4px 10px;
border-radius: 20px;
display: inline-block;
}

.stats-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 12px;
margin: 20px 0;
}

.stat-card {
background: var(--tg-theme-bg-color, #ffffff);
border-radius: var(--border-radius-sm);
padding: 16px;
text-align: center;
border: 1px solid rgba(0, 0, 0, 0.05);
transition: var(--transition);
position: relative;
overflow: hidden;
}

.stat-card::before {
content: '';
position: absolute;
top: 0;
right: 0;
width: 4px;
height: 100%;
background: var(--primary-color);
}

.stat-card:nth-child(2)::before {
background: var(--success-color);
}

.stat-card:nth-child(3)::before {
background: var(--warning-color);
}

.stat-card:hover {
transform: translateY(-3px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

.stat-number {
font-size: 24px;
font-weight: bold;
color: var(--primary-color);
margin-bottom: 4px;
}

.stat-card:nth-child(2) .stat-number {
color: var(--success-color);
}

.stat-card:nth-child(3) .stat-number {
color: var(--warning-color);
}

.stat-label {
font-size: 12px;
color: var(--tg-theme-hint-color, #666666);
font-weight: 500;
}

.section {
margin: 28px 0;
}

.section-title {
font-size: 1.15rem;
font-weight: 600;
margin-bottom: 18px;
color: var(--tg-theme-text-color, #000000);
display: flex;
align-items: center;
gap: 10px;
padding-bottom: 8px;
border-bottom: 1px solid rgba(0, 0, 0, 0.08);
}

.section-title::before {
content: '';
display: block;
width: 4px;
height: 18px;
background: var(--primary-color);
border-radius: 2px;
}

.list-item {
background: var(--tg-theme-secondary-bg-color, #ffffff);
border-radius: var(--border-radius-sm);
padding: 16px;
margin-bottom: 12px;
border-right: 4px solid var(--primary-color);
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05);
transition: var(--transition);
cursor: pointer;
position: relative;
overflow: hidden;
}

.list-item::before {
content: '';
position: absolute;
top: 0;
right: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.4), transparent);
transition: var(--transition);
}

.list-item:hover::before {
right: 100%;
}

.list-item:hover {
transform: translateX(-4px);
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.08);
}

.list-item-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 8px;
}

.badge {
padding: 4px 10px;
border-radius: 20px;
font-size: 12px;
font-weight: 600;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

.badge-success {
background: var(--success-color);
color: white;
}

.badge-warning {
background: var(--warning-color);
color: white;
}

.badge-error {
background: var(--danger-color);
color: white;
}

.badge-info {
background: var(--primary-color);
color: white;
}

.badge-secondary {
background: var(--secondary-color);
color: white;
}

.loading {
text-align: center;
padding: 40px;
color: var(--tg-theme-hint-color, #666666);
display: flex;
flex-direction: column;
align-items: center;
gap: 16px;
}

.loading-spinner {
width: 40px;
height: 40px;
border: 4px solid rgba(0, 136, 204, 0.2);
border-radius: 50%;
border-top-color: var(--primary-color);
animation: spin 1s linear infinite;
}



@keyframes
spin {
to { transform: rotate(360deg); }
}

.error {
text-align: center;
padding: 40px 20px;
color: var(--danger-color);
background: rgba(220, 53, 69, 0.05);
border-radius: var(--border-radius);
margin: 16px 0;
border: 1px solid rgba(220, 53, 69, 0.2);
box-shadow: 0 4px 12px rgba(220, 53, 69, 0.1);
}

.tab-container {
display: flex;
border-bottom: 1px solid var(--tg-theme-hint-color, #e0e0e0);
margin-bottom: 20px;
overflow-x: auto;
scrollbar-width: none;
background: var(--tg-theme-secondary-bg-color, #ffffff);
border-radius: var(--border-radius-sm);
padding: 4px;
}

.tab-container::-webkit-scrollbar {
display: none;
}

.tab {
padding: 12px 16px;
background: none;
border: none;
color: var(--tg-theme-text-color, #000000);
cursor: pointer;
border-radius: var(--border-radius-sm);
white-space: nowrap;
transition: var(--transition);
font-family: inherit;
font-weight: 500;
flex: 1;
text-align: center;
position: relative;
overflow: hidden;
}

.tab::before {
content: '';
position: absolute;
bottom: 0;
right: 0;
width: 0;
height: 3px;
background: var(--primary-color);
transition: var(--transition);
}

.tab.active {
color: var(--primary-color);
font-weight: 600;
background: rgba(0, 136, 204, 0.05);
}

.tab.active::before {
width: 100%;
}

.tab-content {
display: none;
}

.tab-content.active {
display: block;
animation: fadeIn 0.3s ease;
}



@keyframes
fadeIn {
from { opacity: 0; transform: transla

Files changed (4) hide show
  1. README.md +8 -5
  2. index.html +173 -19
  3. script.js +87 -0
  4. style.css +131 -18
README.md CHANGED
@@ -1,10 +1,13 @@
1
  ---
2
- title: Telegram Profile Elite
3
- emoji: 📉
4
- colorFrom: green
5
- colorTo: blue
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
1
  ---
2
+ title: Telegram Profile Elite 🚀
3
+ colorFrom: yellow
4
+ colorTo: pink
5
+ emoji: 🐳
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite-v3
10
  ---
11
 
12
+ # Welcome to your new DeepSite project!
13
+ This project was created with [DeepSite](https://huggingface.co/deepsite).
index.html CHANGED
@@ -1,19 +1,173 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="fa" dir="rtl">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>پروفایل کاربر - اپلیکیشن تلگرام</title>
7
+ <script src="https://telegram.org/js/telegram-web-app.js"></script>
8
+ <script src="https://cdn.tailwindcss.com"></script>
9
+ <link rel="stylesheet" href="style.css">
10
+ <script src="https://unpkg.com/feather-icons"></script>
11
+ <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
12
+ <style>
13
+ @import url('https://cdn.jsdelivr.net/gh/rastikerdar/vazirmatn@v33.003/fonts/webfonts/Vazirmatn-Regular.woff2');
14
+ @import url('https://cdn.jsdelivr.net/gh/rastikerdar/vazirmatn@v33.003/fonts/webfonts/Vazirmatn-Bold.woff2');
15
+ </style>
16
+ </head>
17
+ <body class="bg-gray-50 dark:bg-gray-900 transition-colors duration-300">
18
+ <div class="container mx-auto px-4 py-6 max-w-3xl">
19
+ <!-- Loading State -->
20
+ <div id="loading" class="flex flex-col items-center justify-center py-20">
21
+ <div class="w-12 h-12 border-4 border-blue-200 border-t-blue-500 rounded-full animate-spin"></div>
22
+ <p class="mt-4 text-gray-500 dark:text-gray-400">در حال بارگذاری پروفایل...</p>
23
+ </div>
24
+
25
+ <!-- Error State -->
26
+ <div id="error" class="hidden bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-xl p-6 text-center">
27
+ <div class="text-red-500 dark:text-red-400 text-lg mb-4">
28
+ <i data-feather="alert-circle" class="w-10 h-10 mx-auto"></i>
29
+ </div>
30
+ <p class="text-red-600 dark:text-red-300 mb-6">خطا در بارگذاری اطلاعات پروفایل</p>
31
+ <button id="retryButton" class="bg-gradient-to-r from-blue-500 to-blue-600 hover:from-blue-600 hover:to-blue-700 text-white px-6 py-2 rounded-lg font-medium shadow-md transition-all duration-300 transform hover:-translate-y-0.5">
32
+ تلاش مجدد
33
+ </button>
34
+ </div>
35
+
36
+ <!-- Content -->
37
+ <div id="content" class="hidden">
38
+ <!-- Profile Card -->
39
+ <div class="bg-white dark:bg-gray-800 rounded-xl shadow-md overflow-hidden mb-6 transition-all duration-300 hover:shadow-lg">
40
+ <div class="bg-gradient-to-r from-blue-500 to-blue-600 h-2 w-full"></div>
41
+ <div class="p-6">
42
+ <div class="flex items-center">
43
+ <div class="flex-1">
44
+ <h1 id="userName" class="text-2xl font-bold text-gray-800 dark:text-white mb-2">در حال بارگذاری...</h1>
45
+ <div dir="ltr" class="inline-block bg-gray-100 dark:bg-gray-700 text-gray-600 dark:text-gray-300 text-sm px-3 py-1 rounded-full">
46
+ <span id="userUsername">@username</span>
47
+ </div>
48
+ </div>
49
+ </div>
50
+
51
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-4 mt-6">
52
+ <div class="bg-white dark:bg-gray-700 p-4 rounded-lg border-r-4 border-blue-500 shadow-sm transition-all duration-300 hover:shadow-md">
53
+ <div id="walletBalance" class="text-3xl font-bold text-blue-500">0</div>
54
+ <p class="text-gray-500 dark:text-gray-400 text-sm mt-1">موجودی کیف پول</p>
55
+ </div>
56
+ <div class="bg-white dark:bg-gray-700 p-4 rounded-lg border-r-4 border-green-500 shadow-sm transition-all duration-300 hover:shadow-md">
57
+ <div id="activeSubs" class="text-3xl font-bold text-green-500">0</div>
58
+ <p class="text-gray-500 dark:text-gray-400 text-sm mt-1">اشتراک‌های فعال</p>
59
+ </div>
60
+ <div class="bg-white dark:bg-gray-700 p-4 rounded-lg border-r-4 border-yellow-500 shadow-sm transition-all duration-300 hover:shadow-md">
61
+ <div id="totalOrders" class="text-3xl font-bold text-yellow-500">0</div>
62
+ <p class="text-gray-500 dark:text-gray-400 text-sm mt-1">کل سفارش‌ها</p>
63
+ </div>
64
+ </div>
65
+ </div>
66
+ </div>
67
+
68
+ <!-- Tabs -->
69
+ <div class="flex overflow-x-auto bg-white dark:bg-gray-800 rounded-lg mb-6 shadow-sm scrollbar-hide">
70
+ <button class="tab active px-6 py-3 text-sm font-medium text-blue-600 dark:text-blue-400 border-b-2 border-blue-500" onclick="switchTab('overview')">نمای کلی</button>
71
+ <button class="tab px-6 py-3 text-sm font-medium text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300" onclick="switchTab('subscriptions')">اشتراک‌ها</button>
72
+ <button class="tab px-6 py-3 text-sm font-medium text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300" onclick="switchTab('payments')">پرداخت‌ها</button>
73
+ <button class="tab px-6 py-3 text-sm font-medium text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300" onclick="switchTab('history')">سفارش‌ها</button>
74
+ </div>
75
+
76
+ <!-- Tab Contents -->
77
+ <div id="overview" class="tab-content active">
78
+ <div class="bg-white dark:bg-gray-800 rounded-xl shadow-sm p-6 mb-6">
79
+ <h3 class="text-lg font-semibold text-gray-800 dark:text-white mb-4 flex items-center">
80
+ <span class="w-1 h-6 bg-blue-500 rounded-full ml-2"></span>
81
+ اطلاعات کاربر
82
+ </h3>
83
+
84
+ <div class="space-y-3">
85
+ <div class="flex justify-between items-center py-3 border-b border-gray-100 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-700/50 px-2 rounded-lg transition-colors">
86
+ <span class="text-gray-500 dark:text-gray-400">شناسه کاربر:</span>
87
+ <span id="infoUserId" class="font-medium text-gray-700 dark:text-gray-300">-</span>
88
+ </div>
89
+ <div class="flex justify-between items-center py-3 border-b border-gray-100 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-700/50 px-2 rounded-lg transition-colors">
90
+ <span class="text-gray-500 dark:text-gray-400">شماره تلفن:</span>
91
+ <span id="infoPhone" class="font-medium text-gray-700 dark:text-gray-300">-</span>
92
+ </div>
93
+ <div class="flex justify-between items-center py-3 border-b border-gray-100 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-700/50 px-2 rounded-lg transition-colors">
94
+ <span class="text-gray-500 dark:text-gray-400">تاریخ عضویت:</span>
95
+ <span id="infoJoinDate" class="font-medium text-gray-700 dark:text-gray-300">-</span>
96
+ </div>
97
+ <div class="flex justify-between items-center py-3 border-b border-gray-100 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-700/50 px-2 rounded-lg transition-colors">
98
+ <span class="text-gray-500 dark:text-gray-400">درصد تخفیف:</span>
99
+ <span id="infoDiscount" class="font-medium text-gray-700 dark:text-gray-300">-</span>
100
+ </div>
101
+ <div class="flex justify-between items-center py-3 hover:bg-gray-50 dark:hover:bg-gray-700/50 px-2 rounded-lg transition-colors">
102
+ <span class="text-gray-500 dark:text-gray-400">اکانت تست:</span>
103
+ <div id="infoTrial" class="hidden">
104
+ <span class="bg-yellow-100 dark:bg-yellow-900 text-yellow-800 dark:text-yellow-200 text-xs px-3 py-1 rounded-full">یک تست رایگان</span>
105
+ </div>
106
+ <div id="noTrial" class="hidden">
107
+ <span class="bg-gray-100 dark:bg-gray-700 text-gray-800 dark:text-gray-300 text-xs px-3 py-1 rounded-full">تست استفاده شده</span>
108
+ </div>
109
+ </div>
110
+ </div>
111
+ </div>
112
+ </div>
113
+
114
+ <div id="subscriptions" class="tab-content hidden">
115
+ <div class="bg-white dark:bg-gray-800 rounded-xl shadow-sm p-6 mb-6">
116
+ <h3 class="text-lg font-semibold text-gray-800 dark:text-white mb-4 flex items-center">
117
+ <span class="w-1 h-6 bg-blue-500 rounded-full ml-2"></span>
118
+ اشتراک‌های فعال
119
+ </h3>
120
+ <div id="subscriptionsList" class="space-y-3">
121
+ <!-- Will be populated by JavaScript -->
122
+ </div>
123
+ </div>
124
+ </div>
125
+
126
+ <div id="payments" class="tab-content hidden">
127
+ <div class="bg-white dark:bg-gray-800 rounded-xl shadow-sm p-6 mb-6">
128
+ <h3 class="text-lg font-semibold text-gray-800 dark:text-white mb-4 flex items-center">
129
+ <span class="w-1 h-6 bg-blue-500 rounded-full ml-2"></span>
130
+ تاریخچه پرداخت‌ها
131
+ </h3>
132
+ <div id="paymentsList" class="space-y-3">
133
+ <!-- Will be populated by JavaScript -->
134
+ </div>
135
+ </div>
136
+ </div>
137
+
138
+ <div id="history" class="tab-content hidden">
139
+ <div class="bg-white dark:bg-gray-800 rounded-xl shadow-sm p-6 mb-6">
140
+ <h3 class="text-lg font-semibold text-gray-800 dark:text-white mb-4 flex items-center">
141
+ <span class="w-1 h-6 bg-blue-500 rounded-full ml-2"></span>
142
+ تاریخچه سفارش‌ها
143
+ </h3>
144
+ <div id="ordersList" class="space-y-3">
145
+ <!-- Will be populated by JavaScript -->
146
+ </div>
147
+ </div>
148
+ </div>
149
+ </div>
150
+
151
+ <!-- Order Details Modal -->
152
+ <div id="orderModal" class="fixed inset-0 z-50 hidden items-center justify-center bg-black bg-opacity-50 backdrop-blur-sm">
153
+ <div class="bg-white dark:bg-gray-800 rounded-xl shadow-2xl w-full max-w-md mx-4 max-h-[90vh] overflow-y-auto">
154
+ <div class="flex items-center justify-between p-4 border-b border-gray-200 dark:border-gray-700">
155
+ <h3 class="text-xl font-semibold text-gray-800 dark:text-white">جزئیات سفارش</h3>
156
+ <button onclick="closeModal()" class="text-gray-400 hover:text-gray-600 dark:hover:text-gray-300">
157
+ <i data-feather="x" class="w-6 h-6"></i>
158
+ </button>
159
+ </div>
160
+ <div id="orderModalContent" class="p-6">
161
+ <!-- Order details will be populated here -->
162
+ </div>
163
+ </div>
164
+ </div>
165
+ </div>
166
+
167
+ <script>
168
+ feather.replace();
169
+ </script>
170
+ <script src="script.js"></script>
171
+ <script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
172
+ </body>
173
+ </html>
script.js ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Tab switching functionality
2
+ function switchTab(tabId) {
3
+ // Hide all tab contents
4
+ document.querySelectorAll('.tab-content').forEach(tab => {
5
+ tab.classList.add('hidden');
6
+ tab.classList.remove('active');
7
+ });
8
+
9
+ // Deactivate all tabs
10
+ document.querySelectorAll('.tab').forEach(tab => {
11
+ tab.classList.remove('active', 'text-blue-600', 'dark:text-blue-400', 'border-blue-500');
12
+ tab.classList.add('text-gray-500', 'dark:text-gray-400');
13
+ });
14
+
15
+ // Show selected tab content
16
+ document.getElementById(tabId).classList.remove('hidden');
17
+ document.getElementById(tabId).classList.add('active');
18
+
19
+ // Activate selected tab
20
+ const activeTab = Array.from(document.querySelectorAll('.tab')).find(tab =>
21
+ tab.getAttribute('onclick').includes(tabId)
22
+ );
23
+
24
+ if (activeTab) {
25
+ activeTab.classList.add('active', 'text-blue-600', 'dark:text-blue-400', 'border-b-2', 'border-blue-500');
26
+ activeTab.classList.remove('text-gray-500', 'dark:text-gray-400');
27
+ }
28
+ }
29
+
30
+ // Modal functionality
31
+ function openModal(content) {
32
+ const modal = document.getElementById('orderModal');
33
+ const modalContent = document.getElementById('orderModalContent');
34
+
35
+ modalContent.innerHTML = content;
36
+ modal.classList.remove('hidden');
37
+ document.body.style.overflow = 'hidden';
38
+ }
39
+
40
+ function closeModal() {
41
+ document.getElementById('orderModal').classList.add('hidden');
42
+ document.body.style.overflow = 'auto';
43
+ }
44
+
45
+ // Close modal when clicking outside
46
+ document.getElementById('orderModal').addEventListener('click', function(e) {
47
+ if (e.target === this) {
48
+ closeModal();
49
+ }
50
+ });
51
+
52
+ // Simulate loading data
53
+ document.addEventListener('DOMContentLoaded', function() {
54
+ setTimeout(() => {
55
+ document.getElementById('loading').classList.add('hidden');
56
+ document.getElementById('content').classList.remove('hidden');
57
+
58
+ // Sample data population
59
+ document.getElementById('userName').textContent = 'علی محمدی';
60
+ document.getElementById('userUsername').textContent = '@alimohammadi';
61
+ document.getElementById('walletBalance').textContent = '1,250,000';
62
+ document.getElementById('activeSubs').textContent = '2';
63
+ document.getElementById('totalOrders').textContent = '7';
64
+
65
+ document.getElementById('infoUserId').textContent = 'USER-789456';
66
+ document.getElementById('infoPhone').textContent = '+98 912 345 6789';
67
+ document.getElementById('infoJoinDate').textContent = '1402/05/12';
68
+ document.getElementById('infoDiscount').textContent = '15%';
69
+ document.getElementById('infoTrial').classList.remove('hidden');
70
+ }, 1500);
71
+
72
+ // Retry button functionality
73
+ document.getElementById('retryButton').addEventListener('click', function() {
74
+ document.getElementById('error').classList.add('hidden');
75
+ document.getElementById('loading').classList.remove('hidden');
76
+
77
+ setTimeout(() => {
78
+ document.getElementById('loading').classList.add('hidden');
79
+ document.getElementById('content').classList.remove('hidden');
80
+ }, 1000);
81
+ });
82
+ });
83
+
84
+ // Initialize feather icons
85
+ if (typeof feather !== 'undefined') {
86
+ feather.replace();
87
+ }
style.css CHANGED
@@ -1,28 +1,141 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  body {
2
- padding: 2rem;
3
- font-family: -apple-system, BlinkMacSystemFont, "Arial", sans-serif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  }
5
 
6
- h1 {
7
- font-size: 16px;
8
- margin-top: 0;
9
  }
10
 
11
- p {
12
- color: rgb(107, 114, 128);
13
- font-size: 15px;
14
- margin-bottom: 10px;
15
- margin-top: 5px;
16
  }
17
 
18
- .card {
19
- max-width: 620px;
20
- margin: 0 auto;
21
- padding: 16px;
22
- border: 1px solid lightgray;
23
- border-radius: 16px;
24
  }
25
 
26
- .card p:last-child {
27
- margin-bottom: 0;
28
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @tailwind base;
2
+ @tailwind components;
3
+ @tailwind utilities;
4
+
5
+ /* Custom Scrollbar */
6
+ ::-webkit-scrollbar {
7
+ width: 6px;
8
+ height: 6px;
9
+ }
10
+
11
+ ::-webkit-scrollbar-track {
12
+ @apply bg-gray-100 dark:bg-gray-800;
13
+ }
14
+
15
+ ::-webkit-scrollbar-thumb {
16
+ @apply bg-blue-500 rounded-full;
17
+ }
18
+
19
+ ::-webkit-scrollbar-thumb:hover {
20
+ @apply bg-blue-600;
21
+ }
22
+
23
+ /* Animations */
24
+ @keyframes fadeIn {
25
+ from { opacity: 0; transform: translateY(10px); }
26
+ to { opacity: 1; transform: translateY(0); }
27
+ }
28
+
29
+ .tab-content {
30
+ display: none;
31
+ animation: fadeIn 0.3s ease;
32
+ }
33
+
34
+ .tab-content.active {
35
+ display: block;
36
+ }
37
+
38
+ /* Persian Font */
39
  body {
40
+ font-family: 'Vazirmatn', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
41
+ }
42
+
43
+ /* List Item Hover Effect */
44
+ .list-item {
45
+ position: relative;
46
+ overflow: hidden;
47
+ }
48
+
49
+ .list-item::before {
50
+ content: '';
51
+ position: absolute;
52
+ top: 0;
53
+ right: -100%;
54
+ width: 100%;
55
+ height: 100%;
56
+ background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.4), transparent);
57
+ transition: all 0.3s ease;
58
+ }
59
+
60
+ .list-item:hover::before {
61
+ right: 100%;
62
+ }
63
+
64
+ /* Button Hover Effect */
65
+ .action-button {
66
+ position: relative;
67
+ overflow: hidden;
68
+ }
69
+
70
+ .action-button::before {
71
+ content: '';
72
+ position: absolute;
73
+ top: 0;
74
+ right: 0;
75
+ width: 100%;
76
+ height: 100%;
77
+ background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
78
+ transform: translateX(-100%);
79
+ transition: all 0.3s ease;
80
+ }
81
+
82
+ .action-button:hover::before {
83
+ transform: translateX(100%);
84
+ }
85
+
86
+ /* Empty State */
87
+ .empty-state {
88
+ @apply flex flex-col items-center justify-center py-12 text-center;
89
+ }
90
+
91
+ .empty-state-icon {
92
+ @apply text-gray-400 dark:text-gray-500 text-5xl mb-4;
93
+ }
94
+
95
+ .empty-state-title {
96
+ @apply text-lg font-medium text-gray-700 dark:text-gray-300 mb-2;
97
+ }
98
+
99
+ .empty-state-description {
100
+ @apply text-gray-500 dark:text-gray-400 max-w-md;
101
  }
102
 
103
+ /* Badges */
104
+ .badge {
105
+ @apply inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium;
106
  }
107
 
108
+ .badge-success {
109
+ @apply bg-green-100 dark:bg-green-900 text-green-800 dark:text-green-200;
 
 
 
110
  }
111
 
112
+ .badge-warning {
113
+ @apply bg-yellow-100 dark:bg-yellow-900 text-yellow-800 dark:text-yellow-200;
 
 
 
 
114
  }
115
 
116
+ .badge-error {
117
+ @apply bg-red-100 dark:bg-red-900 text-red-800 dark:text-red-200;
118
  }
119
+
120
+ .badge-info {
121
+ @apply bg-blue-100 dark:bg-blue-900 text-blue-800 dark:text-blue-200;
122
+ }
123
+
124
+ .badge-secondary {
125
+ @apply bg-gray-100 dark:bg-gray-700 text-gray-800 dark:text-gray-300;
126
+ }
127
+
128
+ /* Responsive Adjustments */
129
+ @media (max-width: 640px) {
130
+ .stats-grid {
131
+ @apply grid-cols-1;
132
+ }
133
+
134
+ .tab-container button {
135
+ @apply px-3 py-2 text-xs;
136
+ }
137
+
138
+ .profile-card {
139
+ @apply p-4;
140
+ }
141
+ }