diff --git a/web/studio/src/app/globals.css b/web/studio/src/app/globals.css
index 7a3404f..b321db4 100644
--- a/web/studio/src/app/globals.css
+++ b/web/studio/src/app/globals.css
@@ -10,8 +10,8 @@
--accent-primary: #3b82f6;
--accent-secondary: #6366f1;
- --glass-bg: rgba(255, 255, 255, 0.8);
- --glass-border: rgba(0, 0, 0, 0.15);
+ --glass-bg: rgba(255, 255, 255, 0.7);
+ --glass-border: rgba(0, 0, 0, 0.08);
--glass-blur: blur(16px);
}
@@ -54,7 +54,11 @@ body {
.btn-premium {
@apply relative px-6 py-2.5 rounded-xl font-bold transition-all duration-300;
background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary));
- box-shadow: 0 4px 15px rgba(59, 130, 246, 0.2);
+ box-shadow: 0 4px 15px rgba(59, 130, 246, 0.15);
+}
+
+.dark .btn-premium {
+ box-shadow: 0 4px 20px rgba(59, 130, 246, 0.3);
}
.btn-premium:hover {
@@ -91,7 +95,7 @@ body {
/* Custom Scrollbar */
::-webkit-scrollbar {
- width: 6px;
+ width: 8px;
}
::-webkit-scrollbar-track {
@@ -99,10 +103,21 @@ body {
}
::-webkit-scrollbar-thumb {
- background: rgba(255, 255, 255, 0.1);
+ background: rgba(0, 0, 0, 0.1);
border-radius: 10px;
+ border: 2px solid transparent;
+ background-clip: content-box;
+}
+
+.dark ::-webkit-scrollbar-thumb {
+ background: rgba(255, 255, 255, 0.1);
}
::-webkit-scrollbar-thumb:hover {
+ background: rgba(0, 0, 0, 0.2);
+ background-clip: content-box;
+}
+
+.dark ::-webkit-scrollbar-thumb:hover {
background: rgba(255, 255, 255, 0.2);
}
\ No newline at end of file
diff --git a/web/studio/src/components/Analytics/DropoutRiskDashboard.tsx b/web/studio/src/components/Analytics/DropoutRiskDashboard.tsx
index 1393db7..7a1c7d4 100644
--- a/web/studio/src/components/Analytics/DropoutRiskDashboard.tsx
+++ b/web/studio/src/components/Analytics/DropoutRiskDashboard.tsx
@@ -56,20 +56,20 @@ export default function DropoutRiskDashboard({ courseId }: DropoutRiskDashboardP
-
-
+
+
Dropout Risk Analysis
-
AI-powered detection based on grades, activity, and engagement.
+
AI-powered detection based on grades, activity, and engagement.
-
+
setSearchTerm(e.target.value)}
- className="bg-white/5 border border-white/10 rounded-xl pl-10 pr-4 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-blue-500/50 w-full md:w-64"
+ className="bg-slate-100 dark:bg-white/5 border border-slate-200 dark:border-white/10 rounded-xl pl-10 pr-4 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-blue-500/50 w-full md:w-64 text-slate-900 dark:text-white font-bold"
/>
@@ -77,17 +77,17 @@ export default function DropoutRiskDashboard({ courseId }: DropoutRiskDashboardP
{filteredRisks.length > 0 ? (
{filteredRisks.map((risk) => (
-
+
{risk.user_full_name?.[0] || }
-
{risk.user_full_name || "Unknown Student"}
-
-
{risk.user_email || "N/A"}
-
Last active: {new Date(risk.last_calculated_at).toLocaleDateString()}
+
{risk.user_full_name || "Unknown Student"}
+
+ {risk.user_email || "N/A"}
+ Last active: {new Date(risk.last_calculated_at).toLocaleDateString()}
@@ -98,8 +98,8 @@ export default function DropoutRiskDashboard({ courseId }: DropoutRiskDashboardP
-
Score: {Math.round(risk.score * 100)}%
-
+
Score: {Math.round(risk.score * 100)}%
+
0.8 ? 'bg-red-500' : risk.score > 0.5 ? 'bg-orange-500' : 'bg-green-500'}`}
style={{ width: `${risk.score * 100}%` }}
@@ -114,10 +114,10 @@ export default function DropoutRiskDashboard({ courseId }: DropoutRiskDashboardP
{risk.reasons && risk.reasons.length > 0 && (
-
+
{risk.reasons.map((reason, _idx) => (
-
-
+
))}
@@ -127,10 +127,10 @@ export default function DropoutRiskDashboard({ courseId }: DropoutRiskDashboardP
))}
) : (
-
-
-
No students at risk
-
Everyone seems to be doing great in this course!
+
+
+
No students at risk
+
Everyone seems to be doing great in this course!
)}
diff --git a/web/studio/src/components/CourseEditorLayout.tsx b/web/studio/src/components/CourseEditorLayout.tsx
index 05a8dc8..bc2912d 100644
--- a/web/studio/src/components/CourseEditorLayout.tsx
+++ b/web/studio/src/components/CourseEditorLayout.tsx
@@ -135,7 +135,7 @@ export default function CourseEditorLayout({