@armoyu/ui 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/layout.d.ts.map +1 -1
- package/dist/app/layout.js +16 -13
- package/dist/app/layout.js.map +1 -1
- package/dist/components/Button.d.ts +7 -7
- package/dist/components/Button.js +15 -15
- package/dist/components/GenderStatsBar.d.ts +5 -5
- package/dist/components/GenderStatsBar.js +7 -7
- package/dist/components/RollingNumber.js +3 -3
- package/dist/components/RollingNumber.js.map +1 -1
- package/dist/components/Slider.d.ts +10 -10
- package/dist/components/Slider.js +35 -35
- package/dist/components/StatsGrid.d.ts +5 -5
- package/dist/components/StatsGrid.js +13 -13
- package/dist/components/ViewModeToggle.d.ts +7 -7
- package/dist/components/ViewModeToggle.js +9 -9
- package/dist/components/modules/auth/Dashboard.d.ts +1 -1
- package/dist/components/modules/auth/Dashboard.js +250 -250
- package/dist/components/modules/auth/MediaLightbox.d.ts +13 -13
- package/dist/components/modules/auth/MediaLightbox.js +46 -46
- package/dist/components/modules/auth/PostCard.d.ts +24 -24
- package/dist/components/modules/auth/PostCard.js +112 -112
- package/dist/components/modules/auth/PostInteractionsModal.d.ts +11 -11
- package/dist/components/modules/auth/PostInteractionsModal.js +12 -12
- package/dist/components/modules/auth/RepostModal.d.ts +21 -21
- package/dist/components/modules/auth/RepostModal.js +75 -75
- package/dist/components/modules/auth/SidebarLeft.d.ts +1 -1
- package/dist/components/modules/auth/SidebarLeft.js +40 -40
- package/dist/components/modules/auth/Stories.d.ts +1 -1
- package/dist/components/modules/auth/Stories.js +15 -15
- package/dist/components/modules/auth/StoryViewer.d.ts +9 -9
- package/dist/components/modules/auth/StoryViewer.js +47 -47
- package/dist/components/modules/chat/ChatContainer.d.ts +1 -1
- package/dist/components/modules/chat/ChatContainer.js +196 -196
- package/dist/components/modules/chat/ChatInput.d.ts +4 -4
- package/dist/components/modules/chat/ChatInput.js +30 -30
- package/dist/components/modules/chat/ChatList.d.ts +6 -6
- package/dist/components/modules/chat/ChatList.js +51 -51
- package/dist/components/modules/chat/ChatMessage.d.ts +11 -11
- package/dist/components/modules/chat/ChatMessage.js +6 -6
- package/dist/components/modules/chat/ChatNotes.d.ts +1 -1
- package/dist/components/modules/chat/ChatNotes.js +11 -11
- package/dist/components/modules/community/GroupHeader.d.ts +10 -10
- package/dist/components/modules/community/GroupHeader.js +17 -17
- package/dist/components/modules/community/GroupMenu.d.ts +9 -9
- package/dist/components/modules/community/GroupMenu.js +16 -16
- package/dist/components/modules/community/SchoolCard.d.ts +6 -6
- package/dist/components/modules/community/SchoolCard.js +7 -7
- package/dist/components/modules/community/SurveyCard.d.ts +6 -6
- package/dist/components/modules/community/SurveyCard.js +35 -35
- package/dist/components/modules/forum/ForumBoard.d.ts +16 -16
- package/dist/components/modules/forum/ForumBoard.js +6 -6
- package/dist/components/modules/forum/ForumPost.d.ts +13 -13
- package/dist/components/modules/forum/ForumPost.js +5 -5
- package/dist/components/modules/forum/NewTopicModal.d.ts +7 -7
- package/dist/components/modules/forum/NewTopicModal.js +26 -26
- package/dist/components/modules/forum/TopicItem.d.ts +15 -15
- package/dist/components/modules/forum/TopicItem.js +6 -6
- package/dist/components/modules/galleries/GalleryCard.d.ts +9 -9
- package/dist/components/modules/galleries/GalleryCard.js +5 -5
- package/dist/components/modules/giveaways/GiveawayCard.d.ts +9 -9
- package/dist/components/modules/giveaways/GiveawayCard.js +6 -6
- package/dist/components/modules/groups/ApplicationModal.d.ts +7 -7
- package/dist/components/modules/groups/ApplicationModal.js +27 -27
- package/dist/components/modules/groups/GroupCard.d.ts +12 -12
- package/dist/components/modules/groups/GroupCard.js +6 -6
- package/dist/components/modules/guest/Introduction.d.ts +1 -1
- package/dist/components/modules/guest/Introduction.js +13 -13
- package/dist/components/modules/magaza/BackToStore.d.ts +1 -1
- package/dist/components/modules/magaza/BackToStore.js +10 -10
- package/dist/components/modules/magaza/StoreHeader.d.ts +5 -5
- package/dist/components/modules/magaza/StoreHeader.js +8 -8
- package/dist/components/modules/news/NewsCard.d.ts +11 -11
- package/dist/components/modules/news/NewsCard.js +6 -6
- package/dist/components/modules/news/NewsComments.d.ts +1 -1
- package/dist/components/modules/news/NewsComments.js +52 -52
- package/dist/components/modules/profile/CloudStorageModal.d.ts +8 -8
- package/dist/components/modules/profile/CloudStorageModal.js +31 -31
- package/dist/components/modules/profile/EditProfileModal.d.ts +8 -8
- package/dist/components/modules/profile/EditProfileModal.js +27 -27
- package/dist/components/modules/profile/ProfileContent.d.ts +4 -4
- package/dist/components/modules/profile/ProfileContent.js +70 -70
- package/dist/components/modules/profile/ProfileHeader.d.ts +7 -7
- package/dist/components/modules/profile/ProfileHeader.js +19 -19
- package/dist/components/modules/profile/ProfileStats.js +1 -1
- package/dist/components/modules/profile/ProfileStats.js.map +1 -1
- package/dist/components/modules/profile/TeamSelectorModal.d.ts +10 -10
- package/dist/components/modules/profile/TeamSelectorModal.js +16 -16
- package/dist/components/modules/stations/StationCard.d.ts +2 -2
- package/dist/components/modules/stations/StationCard.js +25 -25
- package/dist/components/modules/stations/StationQRModal.d.ts +9 -9
- package/dist/components/modules/stations/StationQRModal.js +12 -12
- package/dist/components/shared/FloatingChatButton.d.ts +4 -4
- package/dist/components/shared/FloatingChatButton.js +20 -20
- package/dist/components/shared/Footer.d.ts +1 -1
- package/dist/components/shared/Footer.js +9 -9
- package/dist/components/shared/Header.d.ts +1 -1
- package/dist/components/shared/Header.js +97 -97
- package/dist/components/shared/LoginModal.d.ts +4 -4
- package/dist/components/shared/LoginModal.js +69 -69
- package/dist/components/shared/MainLayoutWrapper.d.ts +3 -3
- package/dist/components/shared/MainLayoutWrapper.js +7 -7
- package/dist/components/shared/PageWidth.d.ts +5 -5
- package/dist/components/shared/PageWidth.js +13 -13
- package/dist/context/AuthContext.d.ts +18 -18
- package/dist/context/AuthContext.js +74 -74
- package/dist/context/CartContext.d.ts +16 -16
- package/dist/context/CartContext.js +63 -63
- package/dist/context/ChatContext.d.ts +12 -12
- package/dist/context/ChatContext.js +17 -17
- package/dist/context/LayoutContext.d.ts +10 -10
- package/dist/context/LayoutContext.js +16 -16
- package/dist/context/SocketContext.d.ts +12 -12
- package/dist/context/SocketContext.js +30 -30
- package/dist/context/ThemeContext.d.ts +10 -10
- package/dist/context/ThemeContext.js +39 -39
- package/dist/index.d.ts +65 -65
- package/dist/index.js +80 -80
- package/dist/lib/constants/educationData.d.ts +7 -7
- package/dist/lib/constants/educationData.js +117 -117
- package/dist/lib/constants/punishmentData.d.ts +29 -29
- package/dist/lib/constants/punishmentData.js +183 -183
- package/dist/lib/constants/seedData.d.ts +164 -164
- package/dist/lib/constants/seedData.js +694 -694
- package/dist/lib/constants/stationData.d.ts +13 -13
- package/dist/lib/constants/stationData.js +166 -166
- package/dist/lib/constants/surveyData.d.ts +2 -2
- package/dist/lib/constants/surveyData.js +49 -49
- package/dist/lib/constants/teamData.d.ts +12 -12
- package/dist/lib/constants/teamData.js +65 -65
- package/dist/types/stats.d.ts +17 -17
- package/dist/types/stats.js +1 -1
- package/next.config.ts +13 -13
- package/package.json +45 -46
- package/postcss.config.js +6 -6
- package/src/app/layout.tsx +67 -64
- package/src/app/page.tsx +101 -101
- package/src/components/RollingNumber.tsx +3 -3
- package/src/components/modules/profile/ProfileStats.tsx +4 -4
- package/src/components/showcase/CommunityTab.tsx +22 -22
- package/src/components/showcase/CorporateTab.tsx +38 -38
- package/src/components/showcase/GeneralTab.tsx +41 -41
- package/src/components/showcase/MessagesTab.tsx +26 -26
- package/src/components/showcase/ProfileTab.tsx +20 -20
- package/src/components/showcase/ShopTab.tsx +24 -24
- package/src/components/showcase/SocialTab.tsx +28 -28
- package/src/globals.css +187 -187
- package/src/lib/utils/numberFormat.ts +16 -16
- package/src/lib/utils/odpUtils.ts +51 -51
- package/src/types/index.ts +1 -1
package/src/globals.css
CHANGED
|
@@ -1,187 +1,187 @@
|
|
|
1
|
-
@import "tailwindcss";
|
|
2
|
-
@source "./components/**/*.{js,ts,jsx,tsx}";
|
|
3
|
-
@source "./app/**/*.{js,ts,jsx,tsx}";
|
|
4
|
-
|
|
5
|
-
/*
|
|
6
|
-
* TAILWIND V4 DARK MODE STRATEGY FIX
|
|
7
|
-
* Varsayılan olarak Tailwind v4 sistem temasına (@media prefers-color-scheme) bakar.
|
|
8
|
-
* Aşağıdaki kural ile Tailwind'in sadece .dark class'ı varken çalışmasını sağlıyoruz.
|
|
9
|
-
*/
|
|
10
|
-
@custom-variant dark (&:where(.dark, .dark *));
|
|
11
|
-
|
|
12
|
-
/*
|
|
13
|
-
* GLOBAL TEMALANDIRMA DEĞİŞKENLERİ
|
|
14
|
-
* Bu yapı sayesinde gelecekte yüzlerce farklı renk/tema (Kırmızı Mod, RGB Modu vb.) tanımlanabilir.
|
|
15
|
-
*/
|
|
16
|
-
@layer base {
|
|
17
|
-
:root {
|
|
18
|
-
--armoyu-bg: #f8fafc;
|
|
19
|
-
/* Slate 50 - Daha asil bir açık gri */
|
|
20
|
-
--armoyu-fg: #0f172a;
|
|
21
|
-
|
|
22
|
-
--armoyu-header-bg: rgba(255, 255, 255, 0.85);
|
|
23
|
-
--armoyu-header-border: rgba(0, 0, 0, 0.04);
|
|
24
|
-
|
|
25
|
-
--armoyu-drawer-bg: rgba(255, 255, 255, 0.9);
|
|
26
|
-
--armoyu-drawer-border: rgba(0, 0, 0, 0.04);
|
|
27
|
-
|
|
28
|
-
--armoyu-card-bg: rgba(255, 255, 255, 0.75);
|
|
29
|
-
--armoyu-card-border: rgba(0, 0, 0, 0.04);
|
|
30
|
-
|
|
31
|
-
--armoyu-text: #1e293b;
|
|
32
|
-
/* Slate 800 */
|
|
33
|
-
--armoyu-text-muted: #64748b;
|
|
34
|
-
/* Slate 500 */
|
|
35
|
-
--armoyu-panel-width: 90%;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
.dark {
|
|
39
|
-
--armoyu-bg: #0a0a0e;
|
|
40
|
-
--armoyu-fg: #f8fafc;
|
|
41
|
-
|
|
42
|
-
--armoyu-header-bg: #0a0a0e;
|
|
43
|
-
/* Tamamen Mat Koyu Siyah */
|
|
44
|
-
--armoyu-header-border: rgba(255, 255, 255, 0.05);
|
|
45
|
-
|
|
46
|
-
--armoyu-drawer-bg: rgba(10, 10, 14, 0.65);
|
|
47
|
-
/* Menü Çekmecesi Yüksek Saydamlık */
|
|
48
|
-
--armoyu-drawer-border: rgba(255, 255, 255, 0.1);
|
|
49
|
-
|
|
50
|
-
--armoyu-card-bg: rgba(10, 10, 14, 0.4);
|
|
51
|
-
--armoyu-card-border: rgba(255, 255, 255, 0.05);
|
|
52
|
-
|
|
53
|
-
--armoyu-text: #ffffff;
|
|
54
|
-
--armoyu-text-muted: #9ca3af;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
body {
|
|
58
|
-
background-color: var(--armoyu-bg);
|
|
59
|
-
background-image:
|
|
60
|
-
radial-gradient(at 0% 0%, rgba(59, 130, 246, 0.03) 0, transparent 50%),
|
|
61
|
-
radial-gradient(at 50% 0%, rgba(139, 92, 246, 0.03) 0, transparent 50%),
|
|
62
|
-
radial-gradient(at 100% 0%, rgba(59, 130, 246, 0.03) 0, transparent 50%);
|
|
63
|
-
color: var(--armoyu-fg);
|
|
64
|
-
line-height: inherit;
|
|
65
|
-
font-family: var(--font-sans);
|
|
66
|
-
min-height: 100vh;
|
|
67
|
-
overflow-x: hidden;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
.dark body {
|
|
71
|
-
background-image: none;
|
|
72
|
-
/* Dark modda düz siyah/koyu kalsın */
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/* Kullanıcının istediği özel açık tema arka plan kuralı */
|
|
76
|
-
@media (prefers-color-scheme: light) {
|
|
77
|
-
body {
|
|
78
|
-
background-color: var(--armoyu-bg);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
@theme {
|
|
84
|
-
--color-background: #0a0a0e;
|
|
85
|
-
--color-foreground: #ededed;
|
|
86
|
-
--color-primary: #3b82f6;
|
|
87
|
-
--color-secondary: #1e1e24;
|
|
88
|
-
--font-sans: var(--font-inter), ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
89
|
-
--animate-fill-bar: fill-bar 5s linear forwards;
|
|
90
|
-
|
|
91
|
-
/* TAILWIND TANIMLAMALARI (Tüm proje genelinde class olarak kullanılabilir hale getirir) */
|
|
92
|
-
--color-armoyu-bg: var(--armoyu-bg);
|
|
93
|
-
--color-armoyu-fg: var(--armoyu-fg);
|
|
94
|
-
--color-armoyu-header-bg: var(--armoyu-header-bg);
|
|
95
|
-
--color-armoyu-header-border: var(--armoyu-header-border);
|
|
96
|
-
--color-armoyu-drawer-bg: var(--armoyu-drawer-bg);
|
|
97
|
-
--color-armoyu-drawer-border: var(--armoyu-drawer-border);
|
|
98
|
-
--color-armoyu-card-bg: var(--armoyu-card-bg);
|
|
99
|
-
--color-armoyu-card-border: var(--armoyu-card-border);
|
|
100
|
-
--color-armoyu-text: var(--armoyu-text);
|
|
101
|
-
--color-armoyu-text-muted: var(--armoyu-text-muted);
|
|
102
|
-
--spacing-armoyu-panel: var(--armoyu-panel-width);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
/* Glassmorphism Classes */
|
|
106
|
-
.glass-panel {
|
|
107
|
-
background: var(--armoyu-card-bg);
|
|
108
|
-
backdrop-filter: blur(16px);
|
|
109
|
-
-webkit-backdrop-filter: blur(16px);
|
|
110
|
-
border: 1px solid var(--armoyu-card-border);
|
|
111
|
-
box-shadow: 0 4px 24px rgba(0, 0, 0, 0.03);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
/* Koyu Tema Glassmorphism Stili */
|
|
115
|
-
.dark .glass-panel {
|
|
116
|
-
background: rgba(255, 255, 255, 0.03);
|
|
117
|
-
backdrop-filter: blur(10px);
|
|
118
|
-
-webkit-backdrop-filter: blur(10px);
|
|
119
|
-
border: 1px solid rgba(255, 255, 255, 0.05);
|
|
120
|
-
box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1);
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
.text-gradient {
|
|
124
|
-
background: linear-gradient(to right, #3b82f6, #8b5cf6);
|
|
125
|
-
-webkit-background-clip: text;
|
|
126
|
-
-webkit-text-fill-color: transparent;
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
/* Premium Scrollbar Styling */
|
|
130
|
-
::-webkit-scrollbar {
|
|
131
|
-
width: 6px;
|
|
132
|
-
height: 6px;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
::-webkit-scrollbar-track {
|
|
136
|
-
background: transparent;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
::-webkit-scrollbar-thumb {
|
|
140
|
-
background: rgba(0, 0, 0, 0.1);
|
|
141
|
-
border-radius: 10px;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
.dark ::-webkit-scrollbar-thumb {
|
|
145
|
-
background: rgba(255, 255, 255, 0.05);
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
::-webkit-scrollbar-thumb:hover {
|
|
149
|
-
background: rgba(0, 0, 0, 0.2);
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
.dark ::-webkit-scrollbar-thumb:hover {
|
|
153
|
-
background: rgba(255, 255, 255, 0.1);
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
/* Hide scrollbar utility (Renamed from hide-scrollbar for consistency) */
|
|
157
|
-
.no-scrollbar::-webkit-scrollbar {
|
|
158
|
-
display: none !important;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
.no-scrollbar {
|
|
162
|
-
-ms-overflow-style: none !important;
|
|
163
|
-
/* IE and Edge */
|
|
164
|
-
scrollbar-width: none !important;
|
|
165
|
-
/* Firefox */
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
/* Elegant Thin Scrollbar */
|
|
169
|
-
.thin-scrollbar::-webkit-scrollbar {
|
|
170
|
-
width: 4px;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
.thin-scrollbar::-webkit-scrollbar-thumb {
|
|
174
|
-
background: rgba(0, 0, 0, 0.1);
|
|
175
|
-
border-radius: 20px;
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
/* Slider Progress Bar Animation */
|
|
179
|
-
@keyframes progressBar {
|
|
180
|
-
from {
|
|
181
|
-
width: 0%;
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
to {
|
|
185
|
-
width: 100%;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
1
|
+
@import "tailwindcss";
|
|
2
|
+
@source "./components/**/*.{js,ts,jsx,tsx}";
|
|
3
|
+
@source "./app/**/*.{js,ts,jsx,tsx}";
|
|
4
|
+
|
|
5
|
+
/*
|
|
6
|
+
* TAILWIND V4 DARK MODE STRATEGY FIX
|
|
7
|
+
* Varsayılan olarak Tailwind v4 sistem temasına (@media prefers-color-scheme) bakar.
|
|
8
|
+
* Aşağıdaki kural ile Tailwind'in sadece .dark class'ı varken çalışmasını sağlıyoruz.
|
|
9
|
+
*/
|
|
10
|
+
@custom-variant dark (&:where(.dark, .dark *));
|
|
11
|
+
|
|
12
|
+
/*
|
|
13
|
+
* GLOBAL TEMALANDIRMA DEĞİŞKENLERİ
|
|
14
|
+
* Bu yapı sayesinde gelecekte yüzlerce farklı renk/tema (Kırmızı Mod, RGB Modu vb.) tanımlanabilir.
|
|
15
|
+
*/
|
|
16
|
+
@layer base {
|
|
17
|
+
:root {
|
|
18
|
+
--armoyu-bg: #f8fafc;
|
|
19
|
+
/* Slate 50 - Daha asil bir açık gri */
|
|
20
|
+
--armoyu-fg: #0f172a;
|
|
21
|
+
|
|
22
|
+
--armoyu-header-bg: rgba(255, 255, 255, 0.85);
|
|
23
|
+
--armoyu-header-border: rgba(0, 0, 0, 0.04);
|
|
24
|
+
|
|
25
|
+
--armoyu-drawer-bg: rgba(255, 255, 255, 0.9);
|
|
26
|
+
--armoyu-drawer-border: rgba(0, 0, 0, 0.04);
|
|
27
|
+
|
|
28
|
+
--armoyu-card-bg: rgba(255, 255, 255, 0.75);
|
|
29
|
+
--armoyu-card-border: rgba(0, 0, 0, 0.04);
|
|
30
|
+
|
|
31
|
+
--armoyu-text: #1e293b;
|
|
32
|
+
/* Slate 800 */
|
|
33
|
+
--armoyu-text-muted: #64748b;
|
|
34
|
+
/* Slate 500 */
|
|
35
|
+
--armoyu-panel-width: 90%;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.dark {
|
|
39
|
+
--armoyu-bg: #0a0a0e;
|
|
40
|
+
--armoyu-fg: #f8fafc;
|
|
41
|
+
|
|
42
|
+
--armoyu-header-bg: #0a0a0e;
|
|
43
|
+
/* Tamamen Mat Koyu Siyah */
|
|
44
|
+
--armoyu-header-border: rgba(255, 255, 255, 0.05);
|
|
45
|
+
|
|
46
|
+
--armoyu-drawer-bg: rgba(10, 10, 14, 0.65);
|
|
47
|
+
/* Menü Çekmecesi Yüksek Saydamlık */
|
|
48
|
+
--armoyu-drawer-border: rgba(255, 255, 255, 0.1);
|
|
49
|
+
|
|
50
|
+
--armoyu-card-bg: rgba(10, 10, 14, 0.4);
|
|
51
|
+
--armoyu-card-border: rgba(255, 255, 255, 0.05);
|
|
52
|
+
|
|
53
|
+
--armoyu-text: #ffffff;
|
|
54
|
+
--armoyu-text-muted: #9ca3af;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
body {
|
|
58
|
+
background-color: var(--armoyu-bg);
|
|
59
|
+
background-image:
|
|
60
|
+
radial-gradient(at 0% 0%, rgba(59, 130, 246, 0.03) 0, transparent 50%),
|
|
61
|
+
radial-gradient(at 50% 0%, rgba(139, 92, 246, 0.03) 0, transparent 50%),
|
|
62
|
+
radial-gradient(at 100% 0%, rgba(59, 130, 246, 0.03) 0, transparent 50%);
|
|
63
|
+
color: var(--armoyu-fg);
|
|
64
|
+
line-height: inherit;
|
|
65
|
+
font-family: var(--font-sans);
|
|
66
|
+
min-height: 100vh;
|
|
67
|
+
overflow-x: hidden;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.dark body {
|
|
71
|
+
background-image: none;
|
|
72
|
+
/* Dark modda düz siyah/koyu kalsın */
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/* Kullanıcının istediği özel açık tema arka plan kuralı */
|
|
76
|
+
@media (prefers-color-scheme: light) {
|
|
77
|
+
body {
|
|
78
|
+
background-color: var(--armoyu-bg);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
@theme {
|
|
84
|
+
--color-background: #0a0a0e;
|
|
85
|
+
--color-foreground: #ededed;
|
|
86
|
+
--color-primary: #3b82f6;
|
|
87
|
+
--color-secondary: #1e1e24;
|
|
88
|
+
--font-sans: var(--font-inter), ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
89
|
+
--animate-fill-bar: fill-bar 5s linear forwards;
|
|
90
|
+
|
|
91
|
+
/* TAILWIND TANIMLAMALARI (Tüm proje genelinde class olarak kullanılabilir hale getirir) */
|
|
92
|
+
--color-armoyu-bg: var(--armoyu-bg);
|
|
93
|
+
--color-armoyu-fg: var(--armoyu-fg);
|
|
94
|
+
--color-armoyu-header-bg: var(--armoyu-header-bg);
|
|
95
|
+
--color-armoyu-header-border: var(--armoyu-header-border);
|
|
96
|
+
--color-armoyu-drawer-bg: var(--armoyu-drawer-bg);
|
|
97
|
+
--color-armoyu-drawer-border: var(--armoyu-drawer-border);
|
|
98
|
+
--color-armoyu-card-bg: var(--armoyu-card-bg);
|
|
99
|
+
--color-armoyu-card-border: var(--armoyu-card-border);
|
|
100
|
+
--color-armoyu-text: var(--armoyu-text);
|
|
101
|
+
--color-armoyu-text-muted: var(--armoyu-text-muted);
|
|
102
|
+
--spacing-armoyu-panel: var(--armoyu-panel-width);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/* Glassmorphism Classes */
|
|
106
|
+
.glass-panel {
|
|
107
|
+
background: var(--armoyu-card-bg);
|
|
108
|
+
backdrop-filter: blur(16px);
|
|
109
|
+
-webkit-backdrop-filter: blur(16px);
|
|
110
|
+
border: 1px solid var(--armoyu-card-border);
|
|
111
|
+
box-shadow: 0 4px 24px rgba(0, 0, 0, 0.03);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/* Koyu Tema Glassmorphism Stili */
|
|
115
|
+
.dark .glass-panel {
|
|
116
|
+
background: rgba(255, 255, 255, 0.03);
|
|
117
|
+
backdrop-filter: blur(10px);
|
|
118
|
+
-webkit-backdrop-filter: blur(10px);
|
|
119
|
+
border: 1px solid rgba(255, 255, 255, 0.05);
|
|
120
|
+
box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.text-gradient {
|
|
124
|
+
background: linear-gradient(to right, #3b82f6, #8b5cf6);
|
|
125
|
+
-webkit-background-clip: text;
|
|
126
|
+
-webkit-text-fill-color: transparent;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/* Premium Scrollbar Styling */
|
|
130
|
+
::-webkit-scrollbar {
|
|
131
|
+
width: 6px;
|
|
132
|
+
height: 6px;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
::-webkit-scrollbar-track {
|
|
136
|
+
background: transparent;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
::-webkit-scrollbar-thumb {
|
|
140
|
+
background: rgba(0, 0, 0, 0.1);
|
|
141
|
+
border-radius: 10px;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.dark ::-webkit-scrollbar-thumb {
|
|
145
|
+
background: rgba(255, 255, 255, 0.05);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
::-webkit-scrollbar-thumb:hover {
|
|
149
|
+
background: rgba(0, 0, 0, 0.2);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
.dark ::-webkit-scrollbar-thumb:hover {
|
|
153
|
+
background: rgba(255, 255, 255, 0.1);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/* Hide scrollbar utility (Renamed from hide-scrollbar for consistency) */
|
|
157
|
+
.no-scrollbar::-webkit-scrollbar {
|
|
158
|
+
display: none !important;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.no-scrollbar {
|
|
162
|
+
-ms-overflow-style: none !important;
|
|
163
|
+
/* IE and Edge */
|
|
164
|
+
scrollbar-width: none !important;
|
|
165
|
+
/* Firefox */
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/* Elegant Thin Scrollbar */
|
|
169
|
+
.thin-scrollbar::-webkit-scrollbar {
|
|
170
|
+
width: 4px;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
.thin-scrollbar::-webkit-scrollbar-thumb {
|
|
174
|
+
background: rgba(0, 0, 0, 0.1);
|
|
175
|
+
border-radius: 20px;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/* Slider Progress Bar Animation */
|
|
179
|
+
@keyframes progressBar {
|
|
180
|
+
from {
|
|
181
|
+
width: 0%;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
to {
|
|
185
|
+
width: 100%;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Formats large numbers into a shorter string and its unit suffix.
|
|
3
|
-
* 14200 -> { value: "14.2", unit: "B" }
|
|
4
|
-
* 1200000 -> { value: "1.2", unit: "M" }
|
|
5
|
-
*/
|
|
6
|
-
export function formatStatValue(num: number): { value: string | number; unit: string } {
|
|
7
|
-
if (num >= 1000000) {
|
|
8
|
-
const val = (num / 1000000).toFixed(1);
|
|
9
|
-
return { value: val.endsWith('.0') ? val.slice(0, -2) : val, unit: 'M' };
|
|
10
|
-
}
|
|
11
|
-
if (num >= 1000) {
|
|
12
|
-
const val = (num / 1000).toFixed(1);
|
|
13
|
-
return { value: val.endsWith('.0') ? val.slice(0, -2) : val, unit: 'B' };
|
|
14
|
-
}
|
|
15
|
-
return { value: num, unit: '' };
|
|
16
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Formats large numbers into a shorter string and its unit suffix.
|
|
3
|
+
* 14200 -> { value: "14.2", unit: "B" }
|
|
4
|
+
* 1200000 -> { value: "1.2", unit: "M" }
|
|
5
|
+
*/
|
|
6
|
+
export function formatStatValue(num: number): { value: string | number; unit: string } {
|
|
7
|
+
if (num >= 1000000) {
|
|
8
|
+
const val = (num / 1000000).toFixed(1);
|
|
9
|
+
return { value: val.endsWith('.0') ? val.slice(0, -2) : val, unit: 'M' };
|
|
10
|
+
}
|
|
11
|
+
if (num >= 1000) {
|
|
12
|
+
const val = (num / 1000).toFixed(1);
|
|
13
|
+
return { value: val.endsWith('.0') ? val.slice(0, -2) : val, unit: 'B' };
|
|
14
|
+
}
|
|
15
|
+
return { value: num, unit: '' };
|
|
16
|
+
}
|
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
export interface ODPStatus {
|
|
2
|
-
label: 'Tehlikeli' | 'Dengesiz' | 'İyi' | 'Sadık';
|
|
3
|
-
color: string;
|
|
4
|
-
bgColor: string;
|
|
5
|
-
borderColor: string;
|
|
6
|
-
icon: string;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Normalizes and categorizes ODP scores into human-readable branding.
|
|
11
|
-
* 0-30: Tehlikeli
|
|
12
|
-
* 31-60: Dengesiz
|
|
13
|
-
* 61-90: İyi
|
|
14
|
-
* 91-100: Sadık
|
|
15
|
-
*/
|
|
16
|
-
export const getODPStatus = (score: number): ODPStatus => {
|
|
17
|
-
if (score <= 30) {
|
|
18
|
-
return {
|
|
19
|
-
label: 'Tehlikeli',
|
|
20
|
-
color: 'text-red-500',
|
|
21
|
-
bgColor: 'bg-red-500/10',
|
|
22
|
-
borderColor: 'border-red-500/20',
|
|
23
|
-
icon: 'AlertTriangle'
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
if (score <= 60) {
|
|
27
|
-
return {
|
|
28
|
-
label: 'Dengesiz',
|
|
29
|
-
color: 'text-orange-500',
|
|
30
|
-
bgColor: 'bg-orange-500/10',
|
|
31
|
-
borderColor: 'border-orange-500/20',
|
|
32
|
-
icon: 'Zap'
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
if (score <= 90) {
|
|
36
|
-
return {
|
|
37
|
-
label: 'İyi',
|
|
38
|
-
color: 'text-emerald-500',
|
|
39
|
-
bgColor: 'bg-emerald-500/10',
|
|
40
|
-
borderColor: 'border-emerald-500/20',
|
|
41
|
-
icon: 'ShieldCheck'
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
return {
|
|
45
|
-
label: 'Sadık',
|
|
46
|
-
color: 'text-purple-500',
|
|
47
|
-
bgColor: 'bg-purple-500/10',
|
|
48
|
-
borderColor: 'border-purple-500/20',
|
|
49
|
-
icon: 'Crown'
|
|
50
|
-
};
|
|
51
|
-
};
|
|
1
|
+
export interface ODPStatus {
|
|
2
|
+
label: 'Tehlikeli' | 'Dengesiz' | 'İyi' | 'Sadık';
|
|
3
|
+
color: string;
|
|
4
|
+
bgColor: string;
|
|
5
|
+
borderColor: string;
|
|
6
|
+
icon: string;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Normalizes and categorizes ODP scores into human-readable branding.
|
|
11
|
+
* 0-30: Tehlikeli
|
|
12
|
+
* 31-60: Dengesiz
|
|
13
|
+
* 61-90: İyi
|
|
14
|
+
* 91-100: Sadık
|
|
15
|
+
*/
|
|
16
|
+
export const getODPStatus = (score: number): ODPStatus => {
|
|
17
|
+
if (score <= 30) {
|
|
18
|
+
return {
|
|
19
|
+
label: 'Tehlikeli',
|
|
20
|
+
color: 'text-red-500',
|
|
21
|
+
bgColor: 'bg-red-500/10',
|
|
22
|
+
borderColor: 'border-red-500/20',
|
|
23
|
+
icon: 'AlertTriangle'
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
if (score <= 60) {
|
|
27
|
+
return {
|
|
28
|
+
label: 'Dengesiz',
|
|
29
|
+
color: 'text-orange-500',
|
|
30
|
+
bgColor: 'bg-orange-500/10',
|
|
31
|
+
borderColor: 'border-orange-500/20',
|
|
32
|
+
icon: 'Zap'
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
if (score <= 90) {
|
|
36
|
+
return {
|
|
37
|
+
label: 'İyi',
|
|
38
|
+
color: 'text-emerald-500',
|
|
39
|
+
bgColor: 'bg-emerald-500/10',
|
|
40
|
+
borderColor: 'border-emerald-500/20',
|
|
41
|
+
icon: 'ShieldCheck'
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
return {
|
|
45
|
+
label: 'Sadık',
|
|
46
|
+
color: 'text-purple-500',
|
|
47
|
+
bgColor: 'bg-purple-500/10',
|
|
48
|
+
borderColor: 'border-purple-500/20',
|
|
49
|
+
icon: 'Crown'
|
|
50
|
+
};
|
|
51
|
+
};
|
package/src/types/index.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from './stats';
|
|
1
|
+
export * from './stats';
|