- Refine Publications overview & category detail pages with clean typography and spacing - Add active border line (border-2 border-cobalt-dark) on active CategoryNav card - Replace 10 highlights with 5 designated representative publications - Add Patent subtitle '(IoT Architecture & Protocols, etc ...)' - Update Footer link label from 'College of IT Engineering' to 'CITE' - Clean up Standardization & Lectures page header kickers and spacing
81 lines
3.1 KiB
TypeScript
81 lines
3.1 KiB
TypeScript
import { CategoryNav } from "./_components/CategoryNav";
|
|
import { publications } from "../../content/publications";
|
|
|
|
export const metadata = {
|
|
title: "Publications | ANL",
|
|
description: "AI Agent Networking Lab (ANL) research publications and patents overview",
|
|
};
|
|
|
|
const REPRESENTATIVE_HIGHLIGHT_TITLES = [
|
|
"Globally Integrated Trust Authority (GITA) for Resource-Constrained Edge Devices in IoT and 6G",
|
|
"Application Level Trust Authority (APPLETA) for Resource-Constrained Edge Devices in IoT and 6G",
|
|
"mQUIC: Use of QUIC for Handover Support with Connection Migration in Wireless/Mobile Networks",
|
|
"Use of QUIC for CoAP Transport in IoT Networks",
|
|
"Use of QUIC for Mobile-Oriented Future Internet (Q-MOFI)",
|
|
];
|
|
|
|
export default function PublicationsIndexPage() {
|
|
// Selected 5 representative publications
|
|
const highlights = REPRESENTATIVE_HIGHLIGHT_TITLES.map((title) =>
|
|
publications.find(
|
|
(p) => p.title.trim().toLowerCase() === title.trim().toLowerCase()
|
|
)
|
|
).filter((p): p is (typeof publications)[0] => Boolean(p));
|
|
|
|
return (
|
|
<main className="container-content py-8 sm:py-12 space-y-10 sm:space-y-14">
|
|
{/* Page Header */}
|
|
<section>
|
|
<h1 className="font-serif text-4xl sm:text-5xl font-normal text-ink tracking-tight">
|
|
PUBLICATIONS
|
|
</h1>
|
|
</section>
|
|
|
|
{/* Category Summary Cards */}
|
|
<section className="pt-6 md:pt-8 border-t border-line">
|
|
<CategoryNav />
|
|
</section>
|
|
|
|
{/* Highlights Section */}
|
|
<section className="space-y-6 pt-6 md:pt-8 border-t border-line">
|
|
<h2 className="font-serif text-2xl sm:text-3xl font-normal text-cobalt-dark">
|
|
Highlights
|
|
</h2>
|
|
|
|
<div className="divide-y divide-line border border-line bg-paper rounded-lg overflow-hidden shadow-sm">
|
|
{highlights.map((pub, idx) => (
|
|
<article key={`${pub.category}-${idx}`} className="p-5 hover:bg-ivory/60 transition-colors space-y-2">
|
|
<div className="flex flex-wrap items-center gap-2 text-xs font-mono text-ink-mute">
|
|
<span className="px-2 py-0.5 rounded bg-ivory border border-line text-ink font-bold">
|
|
{pub.publishedAt?.substring(0, 7) || "Recent"}
|
|
</span>
|
|
<span>·</span>
|
|
<span className="capitalize">{pub.category.replace(/-/g, " ")}</span>
|
|
{pub.doi && (
|
|
<>
|
|
<span>·</span>
|
|
<span className="text-vermillion-dark">DOI: {pub.doi}</span>
|
|
</>
|
|
)}
|
|
</div>
|
|
<h3 className="font-serif text-base font-normal text-ink leading-snug">
|
|
{pub.title}
|
|
</h3>
|
|
{pub.authors && (
|
|
<p className="text-xs text-ink-mute">
|
|
{pub.authors}
|
|
</p>
|
|
)}
|
|
{pub.venue && (
|
|
<p className="text-xs italic text-ink-mute">
|
|
{pub.venue}
|
|
</p>
|
|
)}
|
|
</article>
|
|
))}
|
|
</div>
|
|
</section>
|
|
</main>
|
|
);
|
|
}
|