Spaces:
Running
Running
Upload 2 files
Browse files
frontend/src/pages/MissionHubs.jsx
CHANGED
|
@@ -91,21 +91,21 @@ const MissionHubs = () => {
|
|
| 91 |
return (
|
| 92 |
<div className="max-w-7xl mx-auto">
|
| 93 |
<div className="text-center mb-12">
|
| 94 |
-
<h1 className="text-4xl font-bold text-gray-800 mb-4">Mission Hubs</h1>
|
| 95 |
-
<p className="text-xl text-gray-600 max-w-3xl mx-auto">
|
| 96 |
Explore our 6 Systems-Based Missions designed to transform the Sustainable Development Goals
|
| 97 |
into integrated, actionable roadmaps for policy, projects, finance, and metrics.
|
| 98 |
</p>
|
| 99 |
<div className="mt-6">
|
| 100 |
{backendStatus === 'OK' ? (
|
| 101 |
-
<span className="inline-flex items-center px-4 py-2 rounded-full text-sm font-medium bg-green-100 text-green-800">
|
| 102 |
<svg className="mr-2 h-3 w-3 text-green-400" fill="currentColor" viewBox="0 0 8 8">
|
| 103 |
<circle cx="4" cy="4" r="3" />
|
| 104 |
</svg>
|
| 105 |
Connected to backend
|
| 106 |
</span>
|
| 107 |
) : (
|
| 108 |
-
<span className="inline-flex items-center px-4 py-2 rounded-full text-sm font-medium bg-yellow-100 text-yellow-800">
|
| 109 |
<svg className="mr-2 h-3 w-3 text-yellow-400" fill="currentColor" viewBox="0 0 8 8">
|
| 110 |
<circle cx="4" cy="4" r="3" />
|
| 111 |
</svg>
|
|
@@ -131,11 +131,11 @@ const MissionHubs = () => {
|
|
| 131 |
<div className={`${mission.color} mission-icon text-white shadow-lg`}>
|
| 132 |
{mission.name.charAt(0)}
|
| 133 |
</div>
|
| 134 |
-
<h3 className="text-2xl font-bold text-gray-800 mb-3">{mission.name}</h3>
|
| 135 |
-
<p className="text-gray-600 mb-6">{mission.description}</p>
|
| 136 |
<div className="flex justify-between items-center">
|
| 137 |
-
<span className="text-sm text-gray-500">Click for details</span>
|
| 138 |
-
<svg className="w-6 h-6 text-gray-400" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
| 139 |
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M9 5l7 7-7 7"></path>
|
| 140 |
</svg>
|
| 141 |
</div>
|
|
@@ -148,19 +148,19 @@ const MissionHubs = () => {
|
|
| 148 |
{/* Mission Details Modal */}
|
| 149 |
{selectedMission && (
|
| 150 |
<div className="fixed inset-0 bg-black bg-opacity-70 flex items-center justify-center p-4 z-50">
|
| 151 |
-
<div className="bg-white rounded-3xl max-w-3xl w-full max-h-[90vh] overflow-y-auto">
|
| 152 |
<div className="p-8">
|
| 153 |
<div className="flex justify-between items-start mb-6">
|
| 154 |
<div>
|
| 155 |
<div className={`${selectedMission.color} mission-icon w-24 h-24 text-4xl`}>
|
| 156 |
{selectedMission.name.charAt(0)}
|
| 157 |
</div>
|
| 158 |
-
<h2 className="text-3xl font-bold text-gray-800 mt-4">{selectedMission.name}</h2>
|
| 159 |
-
<p className="text-xl text-gray-600">{selectedMission.description}</p>
|
| 160 |
</div>
|
| 161 |
<button
|
| 162 |
onClick={closeMissionDetails}
|
| 163 |
-
className="text-gray-500 hover:text-gray-700 bg-gray-100 rounded-full p-2"
|
| 164 |
>
|
| 165 |
<svg className="w-8 h-8" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
| 166 |
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M6 18L18 6M6 6l12 12"></path>
|
|
@@ -169,13 +169,13 @@ const MissionHubs = () => {
|
|
| 169 |
</div>
|
| 170 |
|
| 171 |
<div className="mt-8">
|
| 172 |
-
<h3 className="text-2xl font-semibold text-gray-800 mb-4">Objectives</h3>
|
| 173 |
-
<p className="text-gray-700 text-lg bg-gray-50 p-6 rounded-2xl">{selectedMission.objectives}</p>
|
| 174 |
</div>
|
| 175 |
|
| 176 |
<div className="mt-8">
|
| 177 |
-
<h3 className="text-2xl font-semibold text-gray-800 mb-4">Target Actors</h3>
|
| 178 |
-
<p className="text-gray-700 text-lg bg-gray-50 p-6 rounded-2xl">{selectedMission.target_actors}</p>
|
| 179 |
</div>
|
| 180 |
|
| 181 |
<div className="mt-10 flex justify-end">
|
|
|
|
| 91 |
return (
|
| 92 |
<div className="max-w-7xl mx-auto">
|
| 93 |
<div className="text-center mb-12">
|
| 94 |
+
<h1 className="text-4xl font-bold text-gray-800 dark:text-white mb-4">Mission Hubs</h1>
|
| 95 |
+
<p className="text-xl text-gray-600 dark:text-gray-300 max-w-3xl mx-auto">
|
| 96 |
Explore our 6 Systems-Based Missions designed to transform the Sustainable Development Goals
|
| 97 |
into integrated, actionable roadmaps for policy, projects, finance, and metrics.
|
| 98 |
</p>
|
| 99 |
<div className="mt-6">
|
| 100 |
{backendStatus === 'OK' ? (
|
| 101 |
+
<span className="inline-flex items-center px-4 py-2 rounded-full text-sm font-medium bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200">
|
| 102 |
<svg className="mr-2 h-3 w-3 text-green-400" fill="currentColor" viewBox="0 0 8 8">
|
| 103 |
<circle cx="4" cy="4" r="3" />
|
| 104 |
</svg>
|
| 105 |
Connected to backend
|
| 106 |
</span>
|
| 107 |
) : (
|
| 108 |
+
<span className="inline-flex items-center px-4 py-2 rounded-full text-sm font-medium bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200">
|
| 109 |
<svg className="mr-2 h-3 w-3 text-yellow-400" fill="currentColor" viewBox="0 0 8 8">
|
| 110 |
<circle cx="4" cy="4" r="3" />
|
| 111 |
</svg>
|
|
|
|
| 131 |
<div className={`${mission.color} mission-icon text-white shadow-lg`}>
|
| 132 |
{mission.name.charAt(0)}
|
| 133 |
</div>
|
| 134 |
+
<h3 className="text-2xl font-bold text-gray-800 dark:text-white mb-3">{mission.name}</h3>
|
| 135 |
+
<p className="text-gray-600 dark:text-gray-300 mb-6">{mission.description}</p>
|
| 136 |
<div className="flex justify-between items-center">
|
| 137 |
+
<span className="text-sm text-gray-500 dark:text-gray-400">Click for details</span>
|
| 138 |
+
<svg className="w-6 h-6 text-gray-400 dark:text-gray-500" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
| 139 |
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M9 5l7 7-7 7"></path>
|
| 140 |
</svg>
|
| 141 |
</div>
|
|
|
|
| 148 |
{/* Mission Details Modal */}
|
| 149 |
{selectedMission && (
|
| 150 |
<div className="fixed inset-0 bg-black bg-opacity-70 flex items-center justify-center p-4 z-50">
|
| 151 |
+
<div className="bg-white dark:bg-slate-800 rounded-3xl max-w-3xl w-full max-h-[90vh] overflow-y-auto">
|
| 152 |
<div className="p-8">
|
| 153 |
<div className="flex justify-between items-start mb-6">
|
| 154 |
<div>
|
| 155 |
<div className={`${selectedMission.color} mission-icon w-24 h-24 text-4xl`}>
|
| 156 |
{selectedMission.name.charAt(0)}
|
| 157 |
</div>
|
| 158 |
+
<h2 className="text-3xl font-bold text-gray-800 dark:text-white mt-4">{selectedMission.name}</h2>
|
| 159 |
+
<p className="text-xl text-gray-600 dark:text-gray-300">{selectedMission.description}</p>
|
| 160 |
</div>
|
| 161 |
<button
|
| 162 |
onClick={closeMissionDetails}
|
| 163 |
+
className="text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-200 bg-gray-100 dark:bg-slate-700 rounded-full p-2"
|
| 164 |
>
|
| 165 |
<svg className="w-8 h-8" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
| 166 |
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M6 18L18 6M6 6l12 12"></path>
|
|
|
|
| 169 |
</div>
|
| 170 |
|
| 171 |
<div className="mt-8">
|
| 172 |
+
<h3 className="text-2xl font-semibold text-gray-800 dark:text-white mb-4">Objectives</h3>
|
| 173 |
+
<p className="text-gray-700 dark:text-gray-300 text-lg bg-gray-50 dark:bg-slate-700 p-6 rounded-2xl">{selectedMission.objectives}</p>
|
| 174 |
</div>
|
| 175 |
|
| 176 |
<div className="mt-8">
|
| 177 |
+
<h3 className="text-2xl font-semibold text-gray-800 dark:text-white mb-4">Target Actors</h3>
|
| 178 |
+
<p className="text-gray-700 dark:text-gray-300 text-lg bg-gray-50 dark:bg-slate-700 p-6 rounded-2xl">{selectedMission.target_actors}</p>
|
| 179 |
</div>
|
| 180 |
|
| 181 |
<div className="mt-10 flex justify-end">
|