@@ -21,11 +21,11 @@ const papers = [
2121 type : 'paper' ,
2222 title : 'Semantic Inference Routing Protocol (SIRP)' ,
2323 authors : 'Huamin Chen, Luay Jalil' ,
24- venue : 'IETF Draft ' ,
24+ venue : 'IETF' ,
2525 year : '2025' ,
2626 abstract : 'A protocol specification for semantic inference routing that enables intelligent request routing based on semantic understanding and inference requirements.' ,
2727 links : [
28- { type : 'paper' , url : 'https://datatracker.ietf.org/doc/html/draft-chen-nmrg-semantic-inference-routing' , label : '📄 IETF Draft ' } ,
28+ { type : 'paper' , url : 'https://datatracker.ietf.org/doc/html/draft-chen-nmrg-semantic-inference-routing' , label : '📄 Paper ' } ,
2929 ] ,
3030 featured : true ,
3131 } ,
@@ -131,14 +131,23 @@ function PublicationCard({ item }) {
131131export default function Publications ( ) {
132132 const [ activeFilter , setActiveFilter ] = useState ( 'all' )
133133
134- const allItems = [ ... papers , ... talks ] . sort ( ( a , b ) => {
134+ const sortedPapers = papers . sort ( ( a , b ) => {
135135 // Sort by featured first, then by year (descending), then by id
136136 if ( a . featured && ! b . featured ) return - 1
137137 if ( ! a . featured && b . featured ) return 1
138138 if ( a . year !== b . year ) return parseInt ( b . year ) - parseInt ( a . year )
139139 return a . id - b . id
140140 } )
141141
142+ const sortedTalks = talks . sort ( ( a , b ) => {
143+ // Sort by featured first, then by year (descending), then by id
144+ if ( a . featured && ! b . featured ) return - 1
145+ if ( ! a . featured && b . featured ) return 1
146+ if ( a . year !== b . year ) return parseInt ( b . year ) - parseInt ( a . year )
147+ return a . id - b . id
148+ } )
149+
150+ const allItems = [ ...sortedPapers , ...sortedTalks ]
142151 const filteredItems = activeFilter === 'all'
143152 ? allItems
144153 : allItems . filter ( item => item . type === activeFilter )
@@ -197,11 +206,35 @@ export default function Publications() {
197206 </ div >
198207
199208 < main >
200- < div className = { styles . publicationsList } >
201- { filteredItems . map ( item => (
202- < PublicationCard key = { item . id } item = { item } />
203- ) ) }
204- </ div >
209+ { activeFilter === 'all' ? (
210+ < div className = { styles . twoRowLayout } >
211+ { /* Papers Row */ }
212+ < section className = { styles . sectionRow } >
213+ < h2 className = { styles . sectionTitle } > 📄 Papers</ h2 >
214+ < div className = { styles . publicationsRow } >
215+ { sortedPapers . map ( item => (
216+ < PublicationCard key = { item . id } item = { item } />
217+ ) ) }
218+ </ div >
219+ </ section >
220+
221+ { /* Talks Row */ }
222+ < section className = { styles . sectionRow } >
223+ < h2 className = { styles . sectionTitle } > 🎤 Talks</ h2 >
224+ < div className = { styles . publicationsRow } >
225+ { sortedTalks . map ( item => (
226+ < PublicationCard key = { item . id } item = { item } />
227+ ) ) }
228+ </ div >
229+ </ section >
230+ </ div >
231+ ) : (
232+ < div className = { styles . publicationsList } >
233+ { filteredItems . map ( item => (
234+ < PublicationCard key = { item . id } item = { item } />
235+ ) ) }
236+ </ div >
237+ ) }
205238
206239 { filteredItems . length === 0 && (
207240 < div className = { styles . emptyState } >
0 commit comments