Add latest content refinements

This commit is contained in:
Neeldhara Misra 2026-06-01 17:59:39 +05:30
parent dfe66b9002
commit 5de4cadeb7
7 changed files with 517 additions and 104 deletions

View file

@ -2,7 +2,7 @@
import { useState } from 'react';
import { ExternalLink, Filter } from 'lucide-react';
import { Filter, Globe } from 'lucide-react';
import { Button } from '@/components/ui/button';
import { Card } from '@/components/ui/card';
@ -21,6 +21,12 @@ function FacultyCard({ member }: { member: FacultyMember }) {
.join('')
.slice(0, 2)
.toUpperCase();
const affiliationLine =
member.category === 'affiliated'
? `Primary Affiliation: ${member.primaryDepartment}`
: member.secondaryDepartment
? `Also affiliated with ${member.secondaryDepartment}`
: undefined;
return (
<Card className="group flex gap-4 p-4">
@ -40,15 +46,17 @@ function FacultyCard({ member }: { member: FacultyMember }) {
href={member.homepage}
target="_blank"
rel="noopener noreferrer"
aria-label={`Open IITGN faculty profile for ${member.name}`}
title="IITGN faculty profile"
className="text-muted-foreground hover:text-secondary shrink-0 transition-colors"
>
<ExternalLink className="size-3.5" />
<Globe className="size-3.5" />
</a>
)}
</div>
{member.secondaryDepartment && (
{affiliationLine && (
<p className="text-muted-foreground mt-1 text-xs">
Also affiliated with {member.secondaryDepartment}
{affiliationLine}
</p>
)}
{member.affiliations && member.affiliations.length > 0 && (
@ -61,6 +69,9 @@ function FacultyCard({ member }: { member: FacultyMember }) {
);
}
const sortByFirstName = (members: FacultyMember[]) =>
[...members].sort((a, b) => a.name.localeCompare(b.name));
export default function FacultyDirectory() {
const [activeFilter, setActiveFilter] = useState<FacultyCategory | 'all'>(
'all',
@ -118,7 +129,9 @@ export default function FacultyDirectory() {
<section className="section-padding">
<div className="container">
{filteredCategories.map((category) => {
const members = FACULTY.filter((f) => f.category === category);
const members = sortByFirstName(
FACULTY.filter((f) => f.category === category),
);
if (members.length === 0) return null;
return (

View file

@ -27,6 +27,7 @@ export const FACULTY: FacultyMember[] = [
primaryDepartment: 'Computer Science and Engineering',
researchAreas: [],
dateOfJoining: '2022-10-03',
homepage: 'https://iitgn.ac.in/faculty/cse/fac-rajat-moona',
},
{
name: 'Anirban Dasgupta',
@ -35,6 +36,7 @@ export const FACULTY: FacultyMember[] = [
primaryDepartment: 'Computer Science and Engineering',
researchAreas: ['Computer Science and Engineering', 'Artificial Intelligence'],
dateOfJoining: '2013-12-30',
homepage: 'https://iitgn.ac.in/faculty/cse/fac-anirban',
},
{
name: 'Bireswar Das',
@ -43,6 +45,7 @@ export const FACULTY: FacultyMember[] = [
primaryDepartment: 'Computer Science and Engineering',
researchAreas: ['Computer Science and Engineering'],
dateOfJoining: '2010-06-28',
homepage: 'https://iitgn.ac.in/faculty/cse/fac-bireswar',
},
{
name: 'Neeldhara Misra',
@ -51,15 +54,17 @@ export const FACULTY: FacultyMember[] = [
primaryDepartment: 'Computer Science and Engineering',
researchAreas: ['Computer Science and Engineering', 'Artificial Intelligence'],
dateOfJoining: '2015-09-23',
homepage: 'https://iitgn.ac.in/faculty/cse/fac-neeldhara',
},
{
name: 'Nipun Batra',
designation: 'Associate Professor',
category: 'core',
primaryDepartment: 'Computer Science and Engineering',
affiliations: ['Sustainability Lab'],
affiliations: ['Center for Sustainability'],
researchAreas: ['Computer Science and Engineering', 'Artificial Intelligence'],
dateOfJoining: '2018-07-09',
homepage: 'https://iitgn.ac.in/faculty/cse/fac-nipun',
},
{
name: 'Manoj D Gupta',
@ -68,6 +73,7 @@ export const FACULTY: FacultyMember[] = [
primaryDepartment: 'Computer Science and Engineering',
researchAreas: ['Computer Science and Engineering'],
dateOfJoining: '2016-01-18',
homepage: 'https://iitgn.ac.in/faculty/cse/fac-manoj',
},
{
name: 'Mayank Singh',
@ -76,6 +82,7 @@ export const FACULTY: FacultyMember[] = [
primaryDepartment: 'Computer Science and Engineering',
researchAreas: ['Computer Science and Engineering', 'Artificial Intelligence'],
dateOfJoining: '2019-02-06',
homepage: 'https://iitgn.ac.in/faculty/cse/fac-mayank',
},
{
name: 'Sameer G Kulkarni',
@ -85,6 +92,7 @@ export const FACULTY: FacultyMember[] = [
secondaryDepartment: 'Electrical Engineering',
researchAreas: ['Computer Science and Engineering', 'Electrical Engineering'],
dateOfJoining: '2020-04-03',
homepage: 'https://iitgn.ac.in/faculty/cse/fac-sameer',
},
{
name: 'Balagopal Komarath',
@ -93,6 +101,7 @@ export const FACULTY: FacultyMember[] = [
primaryDepartment: 'Computer Science and Engineering',
researchAreas: ['Computer Science and Engineering'],
dateOfJoining: '2020-12-21',
homepage: 'https://iitgn.ac.in/faculty/cse/fac-balagopal',
},
{
name: 'Abhishek Bichhawat',
@ -101,6 +110,7 @@ export const FACULTY: FacultyMember[] = [
primaryDepartment: 'Computer Science and Engineering',
researchAreas: ['Computer Science and Engineering'],
dateOfJoining: '2021-03-30',
homepage: 'https://iitgn.ac.in/faculty/cse/fac-abhishek',
},
{
name: 'Yogesh Kumar Meena',
@ -113,6 +123,7 @@ export const FACULTY: FacultyMember[] = [
'Cognitive Science',
],
dateOfJoining: '2023-02-14',
homepage: 'https://iitgn.ac.in/faculty/cse/fac-yogesh',
},
{
name: 'Shouvick Mondal',
@ -121,14 +132,16 @@ export const FACULTY: FacultyMember[] = [
primaryDepartment: 'Computer Science and Engineering',
researchAreas: ['Computer Science and Engineering'],
dateOfJoining: '2023-02-01',
homepage: 'https://iitgn.ac.in/faculty/cse/fac-shouvick',
},
{
name: 'Manisha Padala',
designation: 'Assistant Professor (Contract)',
designation: 'Assistant Professor',
category: 'core',
primaryDepartment: 'Computer Science and Engineering',
researchAreas: [],
dateOfJoining: '2024-03-26',
homepage: 'https://iitgn.ac.in/faculty/cse/fac-manisha',
},
// --- Affiliated Faculty ---
@ -144,6 +157,7 @@ export const FACULTY: FacultyMember[] = [
'Artificial Intelligence',
],
dateOfJoining: '2013-05-20',
homepage: 'https://iitgn.ac.in/faculty/ee/fac-shanmuganathan',
},
{
name: 'Udit Bhatia',
@ -153,24 +167,18 @@ export const FACULTY: FacultyMember[] = [
secondaryDepartment: 'Computer Science and Engineering',
researchAreas: ['Civil Engineering', 'Artificial Intelligence', 'Earth Sciences'],
dateOfJoining: '2019-01-17',
homepage: 'https://iitgn.ac.in/faculty/civil/fac-udit',
},
{
name: 'Krishna Prasad Miyapuram',
designation: 'Associate Professor',
category: 'affiliated',
primaryDepartment: 'Cognitive and Brain Sciences',
researchAreas: ['Cognitive Science', 'Artificial Intelligence'],
dateOfJoining: '2012-10-03',
},
// --- Teaching Faculty ---
{
name: 'Jyoti Krishnan',
designation: 'Assistant Teaching Professor',
category: 'teaching',
primaryDepartment: 'Computer Science and Engineering',
affiliations: ['Center for Creative Learning'],
researchAreas: ['Computer Science and Engineering'],
dateOfJoining: '2024-03-11',
homepage: 'https://iitgn.ac.in/faculty/cse/fac-jyothi',
},
// --- Practice Faculty ---
@ -182,6 +190,7 @@ export const FACULTY: FacultyMember[] = [
affiliations: ['Center for Creative Learning'],
researchAreas: [],
dateOfJoining: '2025-12-12',
homepage: 'https://iitgn.ac.in/faculty/cse/fac-manu',
},
{
name: 'Anup Kalbalia',
@ -190,6 +199,7 @@ export const FACULTY: FacultyMember[] = [
primaryDepartment: 'Computer Science and Engineering',
researchAreas: [],
dateOfJoining: '2026-02-02',
homepage: 'https://iitgn.ac.in/faculty/cse/fac-anup',
},
// --- Visiting / Guest Faculty ---
@ -200,6 +210,7 @@ export const FACULTY: FacultyMember[] = [
primaryDepartment: 'Computer Science and Engineering',
researchAreas: [],
dateOfJoining: '2025-08-04',
homepage: 'https://iitgn.ac.in/faculty/cse/fac-nirmal',
},
{
name: 'Samit Bhattacharya',
@ -216,6 +227,7 @@ export const FACULTY: FacultyMember[] = [
primaryDepartment: 'Computer Science and Engineering',
researchAreas: [],
dateOfJoining: '2025-10-17',
homepage: 'https://iitgn.ac.in/faculty/guestprof/fac-venkatesh_raman',
},
{
name: 'Viraj Shah',
@ -240,6 +252,7 @@ export const FACULTY: FacultyMember[] = [
primaryDepartment: 'Computer Science and Engineering',
researchAreas: [],
dateOfJoining: '2025-01-01',
homepage: 'https://iitgn.ac.in/faculty/guestprof/yuvraj_patel',
},
{
name: 'Subir Verma',
@ -248,6 +261,7 @@ export const FACULTY: FacultyMember[] = [
primaryDepartment: 'Computer Science and Engineering',
researchAreas: [],
dateOfJoining: '2025-10-17',
homepage: 'https://iitgn.ac.in/faculty/guestprof/subir_varma',
},
{
name: 'Ambarish Ojha',
@ -271,7 +285,7 @@ export const CATEGORY_LABELS: Record<FacultyCategory, string> = {
core: 'Core Faculty',
affiliated: 'Affiliated Faculty',
visiting: 'Visiting Faculty',
practice: 'Faculty of Practice',
practice: 'Professors of Practice',
teaching: 'Teaching Faculty',
guest: 'Guest Faculty',
};

View file

@ -288,6 +288,7 @@ export const departmentNews: DepartmentNewsItem[] = [
status: "confirmed",
sourceLabel: "ACM SIGEnergy",
sourceUrl: "https://energy.acm.org/",
homepage: true,
},
{
id: "inter-iit-2024-adobe-research",
@ -400,4 +401,4 @@ export const homepageNewsItems = sortByDateDesc(
export const homepageAwardItems = sortByDateDesc(
departmentNews.filter((item) => item.homepage && item.category === "award"),
).slice(0, 3);
).slice(0, 4);

View file

@ -1,11 +1,127 @@
---
import PlaceholderPage from '@/components/sections/placeholder-page';
import DefaultLayout from '@/layouts/DefaultLayout.astro';
type Patent = {
title: string;
faculty: string;
status: string;
jurisdiction: string;
source: string;
};
const patents: Patent[] = [
{
title: 'System for augmentative and alternative communication for people with severe speech and motor disabilities',
faculty: 'Yogesh Kumar Meena',
status: 'Indian Patent No. 340756, February 27, 2020',
jurisdiction: 'India',
source: 'https://iitgn.ac.in/faculty/cogs/fac-yogesh',
},
{
title: 'Electronic Voting Machine (EVM)',
faculty: 'Rajat Moona',
status: 'Granted, application no. 201841002146, January 2022',
jurisdiction: 'India',
source: 'https://iitgn.ac.in/faculty/cse/fac-rajat-moona',
},
{
title: 'Portable computer printer',
faculty: 'Rajat Moona',
status: 'Indian Patent No. 212999, December 2007',
jurisdiction: 'India',
source: 'https://iitgn.ac.in/faculty/cse/fac-rajat-moona',
},
{
title: 'Compiling memory dereferencing instructions from software to hardware in an electronic design',
faculty: 'Rajat Moona',
status: 'US Patent No. 7203912, April 2007; Indian Patent No. 242517, August 2010',
jurisdiction: 'US / India',
source: 'https://iitgn.ac.in/faculty/cse/fac-rajat-moona',
},
{
title: 'Methods and systems for secured access to devices and systems',
faculty: 'Rajat Moona',
status: 'US Patent No. 7864987, January 2011',
jurisdiction: 'US',
source: 'https://iitgn.ac.in/faculty/cse/fac-rajat-moona',
},
{
title: 'Method and system for using personal devices for authentication and service access at service outlets',
faculty: 'Rajat Moona',
status: 'US Patent No. 8713655, April 2014',
jurisdiction: 'US',
source: 'https://iitgn.ac.in/faculty/cse/fac-rajat-moona',
},
{
title: 'Using personal devices for authentication and service access at offline service outlets',
faculty: 'Rajat Moona',
status: 'Applied for Indian Patent, application no. 1018/DEL/2008, April 2008',
jurisdiction: 'India',
source: 'https://iitgn.ac.in/faculty/cse/fac-rajat-moona',
},
{
title: 'Voter Verified Paper Audit Trail (VVPAT) System',
faculty: 'Rajat Moona',
status: 'Applied, application no. 201841010850, March 2018',
jurisdiction: 'India',
source: 'https://iitgn.ac.in/faculty/cse/fac-rajat-moona',
},
];
---
<DefaultLayout title="Patents" description="Intellectual property and technology transfer.">
<PlaceholderPage
title="Patents"
description="Intellectual property and technology transfer."
/>
<section class="border-b bg-muted/40">
<div class="container py-14 md:py-18">
<p class="text-sm font-medium text-secondary">
Department of Computer Science &amp; Engineering, IIT Gandhinagar
</p>
<div class="mt-5 max-w-3xl">
<h1 class="text-3xl font-semibold leading-tight md:text-5xl">
Patents
</h1>
<p class="mt-5 text-lg leading-relaxed text-muted-foreground">
Selected publicly listed patents and patent applications involving CSE
faculty. Entries link back to the faculty profile pages where the
patent information is listed.
</p>
</div>
</div>
</section>
<section class="section-padding">
<div class="container">
<div class="grid gap-4 md:grid-cols-2">
{
patents.map((patent) => (
<article class="rounded-lg border border-border bg-card p-5 shadow-sm">
<div class="flex flex-wrap items-center gap-2">
<span class="rounded-full bg-secondary/10 px-3 py-1 text-xs font-medium text-secondary">
{patent.jurisdiction}
</span>
</div>
<h2 class="mt-4 text-xl font-semibold">{patent.title}</h2>
<dl class="mt-4 space-y-3 text-sm">
<div>
<dt class="font-medium">Faculty</dt>
<dd class="mt-1 text-muted-foreground">{patent.faculty}</dd>
</div>
<div>
<dt class="font-medium">Status</dt>
<dd class="mt-1 text-muted-foreground">{patent.status}</dd>
</div>
</dl>
<a
href={patent.source}
class="mt-5 inline-flex text-sm font-medium text-primary underline-offset-4 hover:underline"
target="_blank"
rel="noreferrer"
>
Source profile -&gt;
</a>
</article>
))
}
</div>
</div>
</section>
</DefaultLayout>

View file

@ -1,11 +1,197 @@
---
import PlaceholderPage from '@/components/sections/placeholder-page';
import DefaultLayout from '@/layouts/DefaultLayout.astro';
type Project = {
title: string;
faculty: string;
sponsor: string;
category: string;
period: string;
source: string;
};
const projects: Project[] = [
{
title: 'Approximate Shortest Paths in Graphs',
faculty: 'Manoj D Gupta',
sponsor: 'Anusandhan National Research Foundation',
category: 'ANRF/SERB',
period: 'July-September 2026',
source: 'https://iitgn.ac.in/newsletter/projects/q3_2026',
},
{
title: 'Chitrabhasha: Developing India\'s Largest Dataset and Foundation Models for Multimodal AI',
faculty: 'Mayank Singh',
sponsor: 'Anusandhan National Research Foundation',
category: 'ANRF/SERB',
period: 'July-September 2026',
source: 'https://iitgn.ac.in/newsletter/projects/q3_2026',
},
{
title: 'Fair Federated Learning Framework in the Presence of Heterogeneous, Strategic, and Malicious Clients',
faculty: 'Manisha Padala',
sponsor: 'Anusandhan National Research Foundation (ECRG)',
category: 'ANRF/SERB',
period: 'April-June 2026',
source: 'https://iitgn.ac.in/newsletter/projects/q2_2026',
},
{
title: 'Understanding and Ensuring the Privacy of User Data',
faculty: 'Abhishek Bichhawat',
sponsor: 'Science & Engineering Research Board',
category: 'ANRF/SERB',
period: 'October-December 2023',
source: 'https://iitgn.ac.in/newsletter/projects/q4_2023',
},
{
title: 'Curating and constructing benchmarks and development of ML models for low-level NLP tasks in Hindi-English code-mixing',
faculty: 'Mayank Singh',
sponsor: 'Science & Engineering Research Board (Core Research Grant)',
category: 'ANRF/SERB',
period: 'January-March 2023',
source: 'https://iitgn.ac.in/newsletter/projects/q1_2023',
},
{
title: 'Verifying Security Properties of Group Messaging Protocols',
faculty: 'Abhishek Bichhawat',
sponsor: 'Centre Franco-Indien pour la Promotion de la Recherche Avancee',
category: 'International',
period: 'October-December 2023',
source: 'https://iitgn.ac.in/newsletter/projects/q4_2023',
},
{
title: 'A Brain-Computer Interface Driven Mental Fatigue Monitoring System to Improve Stroke Rehabilitation Therapy',
faculty: 'Yogesh Kumar Meena',
sponsor: 'Department for the Economy, Northern Ireland',
category: 'International',
period: 'October-December 2024',
source: 'https://iitgn.ac.in/newsletter/projects/q4_2024',
},
{
title: 'Microsoft Research PhD Fellowship for Zeel B Patel',
faculty: 'Nipun Batra',
sponsor: 'Microsoft Research Lab India Private Ltd',
category: 'Industry/Research Lab',
period: 'July-September 2024',
source: 'https://iitgn.ac.in/newsletter/projects/q3_2024',
},
{
title: 'Automated Crop mapping using time-series satellite and ancillary data',
faculty: 'Nipun Batra',
sponsor: 'Indian Space Research Organisation',
category: 'Sponsored',
period: 'April-June 2026',
source: 'https://iitgn.ac.in/newsletter/projects/q2_2026',
},
{
title: 'Specialized language models deployable on end points with low compute resources',
faculty: 'Anirban Dasgupta',
sponsor: 'Indian Space Research Organisation',
category: 'Sponsored',
period: 'July-September 2026',
source: 'https://iitgn.ac.in/newsletter/projects/q3_2026',
},
{
title: 'Development of Quantum Machine Learning Use Cases and Applications',
faculty: 'Sameer G Kulkarni',
sponsor: 'Ministry of Electronics and Information Technology (MeitY)',
category: 'Sponsored',
period: 'October-December 2024',
source: 'https://iitgn.ac.in/newsletter/projects/q4_2024',
},
{
title: 'exploreCSR: Bridging Digital Divides Through Computing',
faculty: 'Nipun Batra',
sponsor: 'Google',
category: 'Sponsored',
period: 'October-December 2024',
source: 'https://iitgn.ac.in/newsletter/projects/q4_2024',
},
{
title: 'How smart roads are different from conventional city roads and have brought ease of mobility to Indian cities?',
faculty: 'Mayank Singh',
sponsor: 'Ministry of Housing and Urban Affairs',
category: 'Consultancy',
period: 'January-March 2026',
source: 'https://iitgn.ac.in/newsletter/projects/q1_2026',
},
{
title: 'Development of Large Language Models based Chat plugin for Answering Website-specific Queries',
faculty: 'Mayank Singh',
sponsor: 'Silver Touch Technologies Limited',
category: 'Consultancy',
period: 'July-September 2023',
source: 'https://iitgn.ac.in/newsletter/projects/q3_2023',
},
];
const categories = ['ANRF/SERB', 'International', 'Sponsored', 'Industry/Research Lab', 'Consultancy'];
---
<DefaultLayout title="Projects" description="Funded research projects and collaborations.">
<PlaceholderPage
title="Projects"
description="Funded research projects and collaborations."
/>
<DefaultLayout title="Projects" description="Funded research projects, collaborations, and consultancies.">
<section class="border-b bg-muted/40">
<div class="container py-14 md:py-18">
<p class="text-sm font-medium text-secondary">
Department of Computer Science &amp; Engineering, IIT Gandhinagar
</p>
<div class="mt-5 max-w-3xl">
<h1 class="text-3xl font-semibold leading-tight md:text-5xl">
Projects and consultancies
</h1>
<p class="mt-5 text-lg leading-relaxed text-muted-foreground">
Selected publicly listed sponsored projects, international
collaborations, industry engagements, and consultancies involving CSE
faculty and affiliated faculty.
</p>
</div>
</div>
</section>
<section class="section-padding">
<div class="container">
<div class="flex flex-wrap gap-2">
{
categories.map((category) => (
<span class="rounded-full border bg-background px-3 py-1 text-sm text-muted-foreground">
{category}
</span>
))
}
</div>
<div class="mt-8 grid gap-4 md:grid-cols-2">
{
projects.map((project) => (
<article class="rounded-lg border border-border bg-card p-5 shadow-sm">
<div class="flex flex-wrap items-center gap-2">
<span class="rounded-full bg-secondary/10 px-3 py-1 text-xs font-medium text-secondary">
{project.category}
</span>
<span class="text-xs text-muted-foreground">{project.period}</span>
</div>
<h2 class="mt-4 text-xl font-semibold">{project.title}</h2>
<dl class="mt-4 space-y-3 text-sm">
<div>
<dt class="font-medium">Faculty</dt>
<dd class="mt-1 text-muted-foreground">{project.faculty}</dd>
</div>
<div>
<dt class="font-medium">Agency / partner</dt>
<dd class="mt-1 text-muted-foreground">{project.sponsor}</dd>
</div>
</dl>
<a
href={project.source}
class="mt-5 inline-flex text-sm font-medium text-primary underline-offset-4 hover:underline"
target="_blank"
rel="noreferrer"
>
Source listing -&gt;
</a>
</article>
))
}
</div>
</div>
</section>
</DefaultLayout>

View file

@ -37,14 +37,26 @@ const researchOutcomes = [
},
];
const featuredPublicTalk = {
title: "Alan M. Turing: Ushering the Age of Computational Thinking",
speaker: "Anirban Dasgupta",
date: "15 May 2020",
summary:
"A public IIT Gandhinagar talk on Alan Turing and the ideas that shaped modern computational thinking.",
sourceLabel: "Watch on YouTube",
sourceUrl:
"https://www.youtube.com/watch?v=jvvPQbGUQf8&list=PLRfu94TCePTsl4ubkOe4igPL67BhJ-nOV&index=9",
embedUrl: "https://www.youtube.com/embed/jvvPQbGUQf8",
};
const outreachHighlights = [
{
title: "Creative Mathematical Sciences Communication",
label: "Keynote / plenary",
title: "Google exploreCSR Award",
label: "Broadening participation",
summary:
"Neeldhara Misra is listed among the plenary speakers for CMSC 2026, a conference centered on communicating mathematical ideas fundamental to computer science.",
sourceLabel: "CMSC 2026",
sourceUrl: "https://cmsc2026.github.io/",
"Nipun Batra, Neeldhara Misra, and Abhishek Bichhawat received the Google exploreCSR Award 2024.",
sourceLabel: "CSE news",
sourceUrl: "https://cs.iitgn.ac.in/news",
},
{
title: "INYAS membership",
@ -54,14 +66,6 @@ const outreachHighlights = [
sourceLabel: "IITGN Connections",
sourceUrl: "https://iitgn.ac.in/assets/pdfs/connections/v15i3_4.pdf",
},
{
title: "Google exploreCSR Award",
label: "Broadening participation",
summary:
"Nipun Batra, Neeldhara Misra, and Abhishek Bichhawat received the Google exploreCSR Award 2024.",
sourceLabel: "CSE news",
sourceUrl: "https://cs.iitgn.ac.in/news",
},
{
title: "NCERT CSE textbook committee",
label: "School curriculum",
@ -78,6 +82,14 @@ const outreachHighlights = [
sourceLabel: "NPTEL School Connect",
sourceUrl: "https://code.iitm.ac.in/schoolconnect/course-details?course=mc",
},
{
title: "Creative Mathematical Sciences Communication",
label: "Keynote / plenary",
summary:
"Neeldhara Misra is listed among the plenary speakers for CMSC 2026, a conference centered on communicating mathematical ideas fundamental to computer science.",
sourceLabel: "CMSC 2026",
sourceUrl: "https://cmsc2026.github.io/",
},
];
const publicPrograms = [
@ -141,13 +153,14 @@ const mediaItems = [
"https://www.indiatoday.in/education-today/featurephilia/story/iit-gandhinagars-self-reliant-india-story-begins-in-classrooms-2869886-2026-02-18",
},
{
title: "Computational sustainability and energy analytics",
title: "TEDxConversations with Nipun Batra",
person: "Nipun Batra",
type: "Public profile",
type: "Interview",
summary:
"Public profiles describe Sustainability Lab work on AI for energy, buildings, air quality, and health sensing.",
sourceLabel: "Faculty profile",
sourceUrl: "https://nipunbatra.github.io/",
"A TEDxIITGandhinagar conversation on research in AI, sensing, air quality, health, IoT, smart homes, and sustainability.",
sourceLabel: "TEDxIITGandhinagar",
sourceUrl:
"https://www.linkedin.com/posts/nipunbatra0_prof-nipun-batra-tedxconversations-s2-activity-7259027715217874944-CV-R",
},
{
title: "AI Resilience and Command Centre",
@ -159,15 +172,6 @@ const mediaItems = [
sourceUrl:
"https://news.iitgn.ac.in/iit-gandhinagar-launches-ai-resilience-and-command-centre-for-data-driven-climate-risk-management/",
},
{
title: "5G and network-security capacity building",
person: "Sameer G. Kulkarni",
type: "Public workshop",
summary:
"External workshop listings show public-facing engagement around 5G, programmable networks, and security practice.",
sourceLabel: "IIT Bombay workshop",
sourceUrl: "https://www.ieor.iitb.ac.in/mlions/5Gworkshop2024/",
},
];
const educationEventIds = new Set([
@ -216,6 +220,47 @@ const educationCategoryCounts = ["school", "course", "workshop", "conference"]
</div>
</section>
<section class="border-y bg-background py-8 md:py-10">
<div class="container">
<div class="grid overflow-hidden rounded-lg border bg-muted/20 md:grid-cols-[1.15fr_0.85fr]">
<div class="aspect-video bg-black md:aspect-auto md:min-h-80">
<iframe
class="size-full"
src={featuredPublicTalk.embedUrl}
title={featuredPublicTalk.title}
loading="lazy"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen
></iframe>
</div>
<div class="p-6 md:p-8">
<span class="rounded-full border border-secondary/20 bg-secondary/10 px-2 py-0.5 text-xs font-medium uppercase tracking-wider text-secondary">
Featured public talk
</span>
<h2 class="mt-4 text-2xl leading-tight md:text-3xl">
{featuredPublicTalk.title}
</h2>
<p class="text-muted-foreground mt-3">
{featuredPublicTalk.summary}
</p>
<p class="text-muted-foreground mt-4 text-sm">
{featuredPublicTalk.speaker} · {featuredPublicTalk.date}
</p>
<a
href={featuredPublicTalk.sourceUrl}
class="group mt-5 inline-flex items-center gap-2 text-sm font-medium text-secondary"
>
{featuredPublicTalk.sourceLabel}
<ArrowRight
className="size-4 transition group-hover:translate-x-1"
aria-hidden="true"
/>
</a>
</div>
</div>
</div>
</section>
<section class="border-y bg-background py-8 md:py-10">
<div class="container">
<a

View file

@ -234,55 +234,93 @@ const seminarTypeStyles: Record<SeminarType, string> = {
</dl>
{(item.abstract || item.summary || item.bio) && (
<div class="mt-auto flex justify-end gap-2 pt-4">
{(item.abstract || item.summary) && (
<>
<button
type="button"
class="inline-flex size-8 items-center justify-center rounded-full border bg-background text-muted-foreground transition hover:border-secondary hover:text-foreground"
data-modal-trigger
data-modal-kind={
item.abstract ? "Abstract" : "Overview"
}
data-modal-title={item.title}
data-modal-subtitle={`${item.speaker}${item.affiliation ? ` (${item.affiliation})` : ""}`}
data-modal-target={`${item.id}-abstract`}
aria-label={`${item.abstract ? "Read abstract" : "Read overview"} for ${item.title}`}
title={item.abstract ? "Abstract" : "Overview"}
>
<FileText className="size-4" aria-hidden="true" />
</button>
<div id={`${item.id}-abstract`} hidden>
{(item.abstract ?? item.summary)
?.split("\n\n")
.map((paragraph) => (
<p>{paragraph}</p>
))}
</div>
</>
)}
<>
<div class="mt-auto flex justify-end gap-2 pt-4 group-data-[layout=list]:hidden">
{(item.abstract || item.summary) && (
<>
<button
type="button"
class="inline-flex size-8 items-center justify-center rounded-full border bg-background text-muted-foreground transition hover:border-secondary hover:text-foreground"
data-modal-trigger
data-modal-kind={
item.abstract ? "Abstract" : "Overview"
}
data-modal-title={item.title}
data-modal-subtitle={`${item.speaker}${item.affiliation ? ` (${item.affiliation})` : ""}`}
data-modal-target={`${item.id}-abstract`}
aria-label={`${item.abstract ? "Read abstract" : "Read overview"} for ${item.title}`}
title={item.abstract ? "Abstract" : "Overview"}
>
<FileText className="size-4" aria-hidden="true" />
</button>
<div id={`${item.id}-abstract`} hidden>
{(item.abstract ?? item.summary)
?.split("\n\n")
.map((paragraph) => (
<p>{paragraph}</p>
))}
</div>
</>
)}
{item.bio && (
<>
<button
type="button"
class="inline-flex size-8 items-center justify-center rounded-full border bg-background text-muted-foreground transition hover:border-secondary hover:text-foreground"
data-modal-trigger
data-modal-kind="Speaker Bio"
data-modal-title={item.title}
data-modal-subtitle={`${item.speaker}${item.affiliation ? ` (${item.affiliation})` : ""}`}
data-modal-target={`${item.id}-bio`}
aria-label={`Read speaker bio for ${item.title}`}
title="Speaker Bio"
>
<UserRound className="size-4" aria-hidden="true" />
</button>
<div id={`${item.id}-bio`} hidden>
<p>{item.bio}</p>
</div>
</>
)}
</div>
{item.bio && (
<>
<button
type="button"
class="inline-flex size-8 items-center justify-center rounded-full border bg-background text-muted-foreground transition hover:border-secondary hover:text-foreground"
data-modal-trigger
data-modal-kind="Speaker Bio"
data-modal-title={item.title}
data-modal-subtitle={`${item.speaker}${item.affiliation ? ` (${item.affiliation})` : ""}`}
data-modal-target={`${item.id}-bio`}
aria-label={`Read speaker bio for ${item.title}`}
title="Speaker Bio"
>
<UserRound className="size-4" aria-hidden="true" />
</button>
<div id={`${item.id}-bio`} hidden>
<p>{item.bio}</p>
</div>
</>
)}
</div>
<div class="mt-4 hidden gap-3 border-t pt-4 group-data-[layout=list]:grid md:group-data-[layout=list]:grid-cols-2">
{(item.abstract || item.summary) && (
<details class="rounded-md border bg-muted/20">
<summary class="flex cursor-pointer list-none items-center gap-2 px-3 py-2 text-sm font-medium [&::-webkit-details-marker]:hidden">
<FileText
className="text-muted-foreground size-4"
aria-hidden="true"
/>
{item.abstract ? "Abstract" : "Overview"}
</summary>
<div class="text-muted-foreground space-y-3 px-3 pb-3 text-sm leading-relaxed">
{(item.abstract ?? item.summary)
?.split("\n\n")
.map((paragraph) => (
<p>{paragraph}</p>
))}
</div>
</details>
)}
{item.bio && (
<details class="rounded-md border bg-muted/20">
<summary class="flex cursor-pointer list-none items-center gap-2 px-3 py-2 text-sm font-medium [&::-webkit-details-marker]:hidden">
<UserRound
className="text-muted-foreground size-4"
aria-hidden="true"
/>
Speaker Bio
</summary>
<div class="text-muted-foreground px-3 pb-3 text-sm leading-relaxed">
<p>{item.bio}</p>
</div>
</details>
)}
</div>
</>
)}
</article>
))