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)} - /> +
+ +
+ + 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',