diff --git a/components/ResearchTrackCard.tsx b/components/ResearchTrackCard.tsx
index 98d5dc3..370edb6 100644
--- a/components/ResearchTrackCard.tsx
+++ b/components/ResearchTrackCard.tsx
@@ -88,10 +88,14 @@ export function ResearchTrackCard({ track, isExpanded, onToggle }: ResearchTrack
onToggle(newState);
};
+ const isInactive = track.status === 'inactive';
+
return (
@@ -107,21 +111,38 @@ export function ResearchTrackCard({ track, isExpanded, onToggle }: ResearchTrack
{track.icon}
-
{track.title}
+
+
+ {track.title}
+
+ {isInactive && (
+
+ Inactive
+
+ )}
+
- Progress
- {track.progress}%
+
+ Progress
+
+
+ {track.progress}%
+
- {track.description}
+
+ {track.description}
+
@@ -138,14 +159,28 @@ export function ResearchTrackCard({ track, isExpanded, onToggle }: ResearchTrack
{track.milestones.map((milestone, index) => (
-
+
{milestone.title}
{milestone.date && (
-
{milestone.date}
+
+ {milestone.date}
+
)}
@@ -160,24 +195,32 @@ export function ResearchTrackCard({ track, isExpanded, onToggle }: ResearchTrack
{resource.title}
- {resource.type}
+
+ {resource.type}
+
))}
-
+
Lead:{' '}
{track.lead}
@@ -187,7 +230,11 @@ export function ResearchTrackCard({ track, isExpanded, onToggle }: ResearchTrack
{track.tags.map((tag, i) => (
-
+
{tag}
))}
diff --git a/components/ResearchTracks.tsx b/components/ResearchTracks.tsx
index 6877430..b4cd542 100644
--- a/components/ResearchTracks.tsx
+++ b/components/ResearchTracks.tsx
@@ -10,6 +10,7 @@ export function ResearchTracks() {
const [searchTerm, setSearchTerm] = useState('');
const [selectedTags, setSelectedTags] = useState([]);
const [allExpanded, setAllExpanded] = useState(true); // Start with all expanded
+ const [showInactive, setShowInactive] = useState(false); // Hide inactive by default
// Get unique tags from all research tracks
const allTags = Array.from(new Set(researchTracksData.flatMap((track) => track.tags))).sort();
@@ -19,8 +20,15 @@ export function ResearchTracks() {
(searchTerm === '' ||
track.title.toLowerCase().includes(searchTerm.toLowerCase()) ||
track.description.toLowerCase().includes(searchTerm.toLowerCase())) &&
- (selectedTags.length === 0 || selectedTags.some((tag) => track.tags.includes(tag))),
- );
+ (selectedTags.length === 0 || selectedTags.some((tag) => track.tags.includes(tag))) &&
+ (showInactive || track.status === 'active'),
+ ).sort((a, b) => {
+ // Sort by status: active first, inactive last
+ if (a.status === 'active' && b.status === 'inactive') return -1;
+ if (a.status === 'inactive' && b.status === 'active') return 1;
+ // If both have same status, maintain original order
+ return 0;
+ });
const toggleTag = (tag: string) => {
setSelectedTags((prev) =>
@@ -57,15 +65,26 @@ export function ResearchTracks() {
)}
-
-
-
setSearchTerm(e.target.value)}
- />
+
diff --git a/data/research-tracks.tsx b/data/research-tracks.tsx
index c517fee..25675c8 100644
--- a/data/research-tracks.tsx
+++ b/data/research-tracks.tsx
@@ -7,6 +7,7 @@ export interface ResearchTrack {
description: string;
icon: ReactNode;
colorClass: string;
+ status: 'active' | 'inactive';
progress: number;
lead: string;
leadLink: string;
@@ -37,6 +38,7 @@ export const researchTracksData: ResearchTrack[] = [
and advanced hardware testing.',
icon: ,
colorClass: 'blue',
+ status: 'active',
progress: 10,
lead: 'Dmitry Khovratovich',
leadLink: 'https://x.com/Khovr',
@@ -94,6 +96,7 @@ export const researchTracksData: ResearchTrack[] = [
replacement for BLS signatures.',
icon: ,
colorClass: 'green',
+ status: 'active',
progress: 70,
lead: 'Benedikt Wagner',
leadLink: 'https://benedikt-wagner.dev/',
@@ -153,6 +156,7 @@ export const researchTracksData: ResearchTrack[] = [
signature aggregation, including various options like Binus M3, SP1, KRU, STU, Jolt, and OpenVM.',
icon: ,
colorClass: 'amber',
+ status: 'active',
progress: 10,
lead: 'Thomas Coratger',
leadLink: 'https://x.com/tcoratger',
@@ -197,6 +201,7 @@ export const researchTracksData: ResearchTrack[] = [
more validators.',
icon: ,
colorClass: 'red',
+ status: 'inactive',
progress: 10,
lead: 'Josh Beal',
leadLink: 'https://x.com/TheBealDeal',
@@ -228,6 +233,7 @@ export const researchTracksData: ResearchTrack[] = [
that the zkEVM implementations are correct.',
icon: ,
colorClass: 'indigo',
+ status: 'active',
progress: 10,
lead: 'Alex Hicks',
leadLink: 'https://x.com/alexanderlhicks',
@@ -272,6 +278,7 @@ export const researchTracksData: ResearchTrack[] = [
and while uncompromising on decentralization.",
icon: ,
colorClass: 'teal',
+ status: 'active',
progress: 10,
lead: 'Pop',
leadLink: 'https://github.com/ppopth',