Add Theory Day updates and recent service items

This commit is contained in:
Neeldhara Misra 2026-06-05 14:08:48 +05:30
parent 9bfda3d95a
commit d87e464ab8
7 changed files with 271 additions and 17 deletions

View file

@ -8,6 +8,15 @@ import { ArrowRight } from 'lucide-react';
import { Button } from '@/components/ui/button';
const slides = [
{
src: '/images/course-resources/theory-of-computing.png',
alt: 'Foundations of computer science visual with automata, stacks, and computation diagrams',
title: 'Theory Day 2026',
description:
'Foundations of Computer Science. 17 June 2026; registration is open.',
ctaLabel: 'View Details',
ctaHref: '/updates/theory-day-2026',
},
{
src: '/images/jee-open-house-2026-landscape.jpg',
alt: 'JEE Open House 2026 at IIT Gandhinagar',

View file

@ -30,19 +30,32 @@ export default function RecentWins() {
{homepageAwardItems.map((award, index) => (
<tr
key={award.id}
className="border-b text-left text-foreground/40"
className={`border-b text-left ${
award.featured
? 'bg-secondary/5 text-foreground'
: 'text-foreground/40'
}`}
>
<td className="py-4 pr-4 text-base font-medium tracking-tight text-foreground">
<div className="flex items-center gap-3">
<span className={`size-3 shrink-0 rounded-full ${colors[index % colors.length]}`} />
<span
className={`size-3 shrink-0 rounded-full ${colors[index % colors.length]}`}
/>
<span className="space-y-1">
{award.featured && (
<span className="inline-flex rounded-full border border-secondary/30 bg-secondary/10 px-2 py-0.5 text-[0.68rem] font-medium uppercase tracking-wide text-secondary">
Featured
</span>
)}
<a
href={award.sourceUrl}
target="_blank"
rel="noreferrer"
className="hover:text-secondary transition-colors"
className="block hover:text-secondary transition-colors"
>
{award.title}
</a>
</span>
</div>
</td>
<td className="hidden py-4 pr-4 text-sm md:table-cell">

View file

@ -39,6 +39,21 @@ export const EVENT_CATEGORY_STYLES: Record<EventCategory, string> = {
};
export const departmentEvents: DepartmentEvent[] = [
{
id: "theory-day-foundations-cs-2026",
title: "Theory Day: Foundations of Computer Science",
category: "symposium",
year: 2026,
displayDate: "17 Jun 2026",
startDate: "2026-06-17",
organizer: "Department of Computer Science & Engineering, IIT Gandhinagar",
description:
"A one-day Theory Day focused on foundations of computer science. The schedule, talk titles, and abstracts will be announced soon.",
source: "CSE archive",
sourceLabel: "Event page",
sourceUrl: "/updates/theory-day-2026",
featured: true,
},
{
id: "ai-day-2026",
title: "AI Day",

View file

@ -20,6 +20,7 @@ export interface DepartmentNewsItem {
sourceLabel: string;
sourceUrl: string;
homepage?: boolean;
featured?: boolean;
}
export const CATEGORY_LABELS: Record<NewsCategory, string> = {
@ -409,6 +410,22 @@ export const departmentNews: DepartmentNewsItem[] = [
sourceLabel: "IITGN Technical Council",
sourceUrl: "https://technical-council.iitgn.tech/achievements",
},
{
id: "anirban-stoc-test-of-time-2024",
title: "Anirban Dasgupta receives ACM STOC 10-year Test of Time Award",
summary:
"The STOC 2024 award recognizes the lasting impact of the paper “A Sparse Johnson-Lindenstrauss Transform,” co-authored with Ravi Kumar and Tamás Sarlós.",
people: "Anirban Dasgupta, Ravi Kumar, and Tamás Sarlós",
displayDate: "2024",
date: "2024-06-21",
category: "award",
status: "confirmed",
sourceLabel: "Cornell Bowers CIS",
sourceUrl:
"https://bowers.cornell.edu/news-stories/faculty-and-alumni-receive-test-time-awards-stoc-2024",
homepage: true,
featured: true,
},
{
id: "chitrabhasha-anrf",
title: "Chitrabhasha receives ANRF Advanced Research Grant support",
@ -604,4 +621,6 @@ export const homepageNewsItems = sortByDateDesc(
export const homepageAwardItems = sortByDateDesc(
departmentNews.filter((item) => item.homepage && item.category === "award"),
).slice(0, 4);
)
.sort((a, b) => Number(Boolean(b.featured)) - Number(Boolean(a.featured)))
.slice(0, 5);

View file

@ -1,6 +1,9 @@
---
import JeeOpenHousePromo from '@/components/sections/jee-open-house-promo.astro';
import DefaultLayout from '@/layouts/DefaultLayout.astro';
import { ArrowRight, CalendarDays } from 'lucide-react';
const theoryDayRegistrationLink = 'https://forms.gle/sqqoh4JftBfKYA1b8';
---
<DefaultLayout
@ -20,5 +23,59 @@ import DefaultLayout from '@/layouts/DefaultLayout.astro';
</div>
</section>
<section class="section-padding">
<div class="container">
<div class="mb-6">
<p class="text-secondary text-sm font-medium">Upcoming</p>
<h2 class="mt-3 text-2xl font-semibold md:text-3xl">
Registration deadlines
</h2>
</div>
<article class="rounded-lg border bg-background p-6 shadow-sm">
<div class="grid gap-6 md:grid-cols-[12rem_1fr_auto] md:items-center">
<div class="flex items-center gap-3">
<span class="inline-flex size-11 items-center justify-center rounded-full bg-secondary/10 text-secondary">
<CalendarDays className="size-5" aria-hidden="true" />
</span>
<div>
<p class="text-muted-foreground text-sm">Deadline</p>
<p class="text-lg font-semibold">15 Jun 2026</p>
</div>
</div>
<div>
<h3 class="text-xl font-semibold">
Theory Day: Foundations of Computer Science
</h3>
<p class="text-muted-foreground mt-2 text-sm leading-relaxed">
Register for the 17 June 2026 Theory Day. Schedule, talk titles,
and abstracts will be posted on the event page soon.
</p>
</div>
<div class="flex flex-wrap gap-3 md:justify-end">
<a
href="/updates/theory-day-2026"
class="inline-flex items-center gap-2 rounded-full border px-4 py-2 text-sm font-medium transition hover:border-secondary hover:text-secondary"
>
Event page
<ArrowRight className="size-4" aria-hidden="true" />
</a>
<a
href={theoryDayRegistrationLink}
class="inline-flex items-center gap-2 rounded-full bg-foreground px-4 py-2 text-sm font-medium text-background transition hover:bg-secondary"
target="_blank"
rel="noreferrer"
>
Register
<ArrowRight className="size-4" aria-hidden="true" />
</a>
</div>
</div>
</article>
</div>
</section>
<JeeOpenHousePromo variant="deadlines" />
</DefaultLayout>

View file

@ -33,6 +33,8 @@ const groupedPastEvents = Object.entries(
return groups;
}, {}),
).sort(([a], [b]) => Number(b) - Number(a));
const isExternalUrl = (url: string) => /^https?:\/\//.test(url);
---
<DefaultLayout
@ -171,8 +173,8 @@ const groupedPastEvents = Object.entries(
<a
href={event.sourceUrl}
class="group mt-4 inline-flex items-center gap-2 text-sm font-medium text-secondary"
target="_blank"
rel="noreferrer"
target={isExternalUrl(event.sourceUrl) ? "_blank" : undefined}
rel={isExternalUrl(event.sourceUrl) ? "noreferrer" : undefined}
>
{event.sourceLabel ?? "Event website"}
<ArrowRight
@ -256,8 +258,8 @@ const groupedPastEvents = Object.entries(
<a
href={event.sourceUrl}
class="group mt-4 inline-flex items-center gap-2 text-sm font-medium text-secondary"
target="_blank"
rel="noreferrer"
target={isExternalUrl(event.sourceUrl) ? "_blank" : undefined}
rel={isExternalUrl(event.sourceUrl) ? "noreferrer" : undefined}
>
{event.sourceLabel ?? "Event website"}
<ArrowRight
@ -330,8 +332,8 @@ const groupedPastEvents = Object.entries(
<a
href={event.sourceUrl}
class="group mt-3 inline-flex items-center gap-2 text-sm font-medium text-secondary"
target="_blank"
rel="noreferrer"
target={isExternalUrl(event.sourceUrl) ? "_blank" : undefined}
rel={isExternalUrl(event.sourceUrl) ? "noreferrer" : undefined}
>
{event.sourceLabel ?? "Event website"}
<ArrowRight

View file

@ -0,0 +1,139 @@
---
import {
ArrowRight,
CalendarDays,
ClipboardList,
FileText,
MapPin,
} from "lucide-react";
import DefaultLayout from "@/layouts/DefaultLayout.astro";
const registrationLink = "https://forms.gle/sqqoh4JftBfKYA1b8";
const eventDate = "17 June 2026";
const registrationDeadline = "15 June 2026";
---
<DefaultLayout
title="Theory Day: Foundations of Computer Science"
description="Theory Day at IIT Gandhinagar brings together talks and discussions around foundations of computer science."
>
<section class="border-b bg-gradient-to-br from-violet-50 via-background to-sky-50 py-14 md:py-18">
<div class="container">
<div class="grid gap-8 lg:grid-cols-[1fr_22rem] lg:items-end">
<div class="max-w-3xl">
<p class="text-secondary text-sm font-medium uppercase tracking-wider">
Department Event
</p>
<h1 class="mt-4 text-4xl font-semibold tracking-tight md:text-5xl">
Theory Day: Foundations of Computer Science
</h1>
<p class="text-muted-foreground mt-5 text-lg leading-relaxed">
A CSE department event focused on the foundations of computer
science, with talks and discussions for students, researchers, and
faculty interested in theoretical computer science.
</p>
<div class="mt-7 flex flex-wrap gap-3">
<a
href={registrationLink}
class="inline-flex items-center gap-2 rounded-full bg-foreground px-5 py-2.5 text-sm font-medium text-background transition hover:bg-secondary"
target="_blank"
rel="noreferrer"
>
Register now
<ArrowRight className="size-4" aria-hidden="true" />
</a>
<a
href="/updates/deadlines"
class="inline-flex items-center gap-2 rounded-full border bg-white px-5 py-2.5 text-sm font-medium transition hover:border-secondary hover:text-secondary"
>
Registration deadline: {registrationDeadline}
</a>
</div>
</div>
<aside class="rounded-lg border bg-white/85 p-5 shadow-sm backdrop-blur">
<p class="text-sm font-medium text-secondary">At a glance</p>
<dl class="mt-4 grid gap-4 text-sm">
<div class="flex gap-3">
<CalendarDays className="mt-0.5 size-4 text-secondary" aria-hidden="true" />
<div>
<dt class="text-muted-foreground">Date</dt>
<dd class="font-medium">{eventDate}</dd>
</div>
</div>
<div class="flex gap-3">
<ClipboardList className="mt-0.5 size-4 text-secondary" aria-hidden="true" />
<div>
<dt class="text-muted-foreground">Registration</dt>
<dd class="font-medium">Open until {registrationDeadline}</dd>
</div>
</div>
<div class="flex gap-3">
<MapPin className="mt-0.5 size-4 text-secondary" aria-hidden="true" />
<div>
<dt class="text-muted-foreground">Venue</dt>
<dd class="font-medium">IIT Gandhinagar; room details forthcoming</dd>
</div>
</div>
</dl>
</aside>
</div>
</div>
</section>
<section class="section-padding">
<div class="container">
<div class="grid gap-8 lg:grid-cols-[0.9fr_1.1fr]">
<div>
<p class="text-secondary text-sm font-medium">Foundations of CS</p>
<h2 class="mt-3 text-2xl font-semibold md:text-3xl">
A department day for theory
</h2>
<p class="text-muted-foreground mt-4 leading-relaxed">
Theory Day is planned as a focused gathering around the foundations
of computer science. The event will highlight ideas, methods, and
research conversations from theoretical computer science.
</p>
</div>
<div class="rounded-lg border bg-card p-6">
<div class="flex items-start gap-3">
<FileText className="mt-1 size-5 text-secondary" aria-hidden="true" />
<div>
<h3 class="text-xl font-semibold">Program details coming soon</h3>
<p class="text-muted-foreground mt-3 leading-relaxed">
We will add the schedule, talk titles, and abstracts here as
soon as they are available.
</p>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="border-y bg-muted/30">
<div class="container py-10 md:py-12">
<div class="rounded-lg border bg-background p-6 md:flex md:items-center md:justify-between md:gap-6">
<div>
<p class="text-sm font-medium text-secondary">Registration</p>
<h2 class="mt-2 text-2xl font-semibold">
Register by {registrationDeadline}
</h2>
<p class="text-muted-foreground mt-2">
Registration is open through the shared IITGN form.
</p>
</div>
<a
href={registrationLink}
class="mt-5 inline-flex items-center gap-2 rounded-full bg-foreground px-5 py-2.5 text-sm font-medium text-background transition hover:bg-secondary md:mt-0"
target="_blank"
rel="noreferrer"
>
Open registration form
<ArrowRight className="size-4" aria-hidden="true" />
</a>
</div>
</div>
</section>
</DefaultLayout>