diff --git a/public/sitemap.xml b/public/sitemap.xml index 0cbd5b6..4e2aee2 100644 --- a/public/sitemap.xml +++ b/public/sitemap.xml @@ -1,36 +1,36 @@ - - - - https://ieeemsit-ochre.vercel.app/ - 2026-08-22T14:45:34.344Z - daily - 1.0 - - - https://ieeemsit-ochre.vercel.app/about - 2026-08-22T14:45:34.344Z - weekly - 0.8 - - - https://ieeemsit-ochre.vercel.app/events - 2026-08-22T14:45:34.344Z - weekly - 0.8 - - - https://ieeemsit-ochre.vercel.app/contact - 2026-08-22T14:45:34.344Z - monthly - 0.6 - - - https://ieeemsit-ochre.vercel.app/projects - 2026-08-22T14:45:34.344Z - weekly - 0.8 - + + + + https://ieeemsit-ochre.vercel.app/ + 2026-08-22T14:45:34.344Z + daily + 1.0 + + + https://ieeemsit-ochre.vercel.app/about + 2026-08-22T14:45:34.344Z + weekly + 0.8 + + + https://ieeemsit-ochre.vercel.app/events + 2026-08-22T14:45:34.344Z + weekly + 0.8 + + + https://ieeemsit-ochre.vercel.app/contact + 2026-08-22T14:45:34.344Z + monthly + 0.6 + + + https://ieeemsit-ochre.vercel.app/projects + 2026-08-22T14:45:34.344Z + weekly + 0.8 + \ No newline at end of file diff --git a/src/components/ui/EventDetailsModal.tsx b/src/components/ui/EventDetailsModal.tsx index a7cea3a..dd892b8 100644 --- a/src/components/ui/EventDetailsModal.tsx +++ b/src/components/ui/EventDetailsModal.tsx @@ -1,179 +1,179 @@ -import React, { useEffect } from 'react'; -import { createPortal } from 'react-dom'; -import { Clock, MapPin, Tag, Users, X, ExternalLink } from 'lucide-react'; -import type { Event } from '../../types'; -import { getVtoolHref } from '../../utils/vtool'; - -interface EventDetailsModalProps { - event: Event; - onClose: () => void; -} - -const EventDetailsModal: React.FC = ({ event, onClose }) => { - const vtoolHref = getVtoolHref(event.vtool); - - useEffect(() => { - const previousOverflow = document.body.style.overflow; - document.body.style.overflow = 'hidden'; - - const onKeyDown = (e: KeyboardEvent) => { - if (e.key === 'Escape') onClose(); - }; - window.addEventListener('keydown', onKeyDown); - - return () => { - document.body.style.overflow = previousOverflow; - window.removeEventListener('keydown', onKeyDown); - }; - }, [onClose]); - - const contacts = - event.actionLinks?.filter((link) => link.toLowerCase().startsWith('contact:')) ?? []; - const otherLinks = - event.actionLinks?.filter((link) => !link.toLowerCase().startsWith('contact:')) ?? []; - - return createPortal( -
- -
-

- {event.type} - {event.status ? ` · ${event.status}` : ''} -

-

- {event.title} -

-
-
- -
-

{event.description}

- -
-
- - - {event.startDate && event.endDate && event.startDate !== event.endDate - ? `${event.startDate} – ${event.endDate}` - : event.endDate || event.startDate || 'Date TBA'} - -
-
- - {event.venue || 'Venue TBA'} -
-
- - {event.category || 'General'} -
-
- - - {Array.isArray(event.organisedBy) - ? event.organisedBy.join(', ') - : event.organisedBy || 'IEEE MSIT'} - -
-
- - {event.prizes && event.prizes.length > 0 && ( -
-

Prizes

-
    - {event.prizes.map((prize) => ( -
  • {prize}
  • - ))} -
-
- )} - - {contacts.length > 0 && ( -
-

Contacts

-
    - {contacts.map((contact) => ( -
  • {contact.replace(/^contact:\s*/i, '')}
  • - ))} -
-
- )} - - {otherLinks.length > 0 && ( -
- {otherLinks.map((link) => { - const registerUrl = link.startsWith('register:') - ? link.split('register:')[1]?.trim() - : null; - const livestreamUrl = link.startsWith('livestream:') - ? link.split('livestream:')[1]?.trim() - : null; - const href = - registerUrl || livestreamUrl || (/^https?:\/\//i.test(link) ? link : null); - if (!href) return null; - return ( - - {registerUrl ? 'Register' : livestreamUrl ? 'Livestream' : 'Open link'} - - - ); - })} -
- )} - - {vtoolHref ? ( - - Open in vTools - - - ) : ( -

vTools link not available yet.

- )} -
- - , - document.body - ); -}; - -export default EventDetailsModal; +import React, { useEffect } from 'react'; +import { createPortal } from 'react-dom'; +import { Clock, MapPin, Tag, Users, X, ExternalLink } from 'lucide-react'; +import type { Event } from '../../types'; +import { getVtoolHref } from '../../utils/vtool'; + +interface EventDetailsModalProps { + event: Event; + onClose: () => void; +} + +const EventDetailsModal: React.FC = ({ event, onClose }) => { + const vtoolHref = getVtoolHref(event.vtool); + + useEffect(() => { + const previousOverflow = document.body.style.overflow; + document.body.style.overflow = 'hidden'; + + const onKeyDown = (e: KeyboardEvent) => { + if (e.key === 'Escape') onClose(); + }; + window.addEventListener('keydown', onKeyDown); + + return () => { + document.body.style.overflow = previousOverflow; + window.removeEventListener('keydown', onKeyDown); + }; + }, [onClose]); + + const contacts = + event.actionLinks?.filter((link) => link.toLowerCase().startsWith('contact:')) ?? []; + const otherLinks = + event.actionLinks?.filter((link) => !link.toLowerCase().startsWith('contact:')) ?? []; + + return createPortal( +
+ +
+

+ {event.type} + {event.status ? ` · ${event.status}` : ''} +

+

+ {event.title} +

+
+
+ +
+

{event.description}

+ +
+
+ + + {event.startDate && event.endDate && event.startDate !== event.endDate + ? `${event.startDate} – ${event.endDate}` + : event.endDate || event.startDate || 'Date TBA'} + +
+
+ + {event.venue || 'Venue TBA'} +
+
+ + {event.category || 'General'} +
+
+ + + {Array.isArray(event.organisedBy) + ? event.organisedBy.join(', ') + : event.organisedBy || 'IEEE MSIT'} + +
+
+ + {event.prizes && event.prizes.length > 0 && ( +
+

Prizes

+
    + {event.prizes.map((prize) => ( +
  • {prize}
  • + ))} +
+
+ )} + + {contacts.length > 0 && ( +
+

Contacts

+
    + {contacts.map((contact) => ( +
  • {contact.replace(/^contact:\s*/i, '')}
  • + ))} +
+
+ )} + + {otherLinks.length > 0 && ( +
+ {otherLinks.map((link) => { + const registerUrl = link.startsWith('register:') + ? link.split('register:')[1]?.trim() + : null; + const livestreamUrl = link.startsWith('livestream:') + ? link.split('livestream:')[1]?.trim() + : null; + const href = + registerUrl || livestreamUrl || (/^https?:\/\//i.test(link) ? link : null); + if (!href) return null; + return ( + + {registerUrl ? 'Register' : livestreamUrl ? 'Livestream' : 'Open link'} + + + ); + })} +
+ )} + + {vtoolHref ? ( + + Open in vTools + + + ) : ( +

vTools link not available yet.

+ )} +
+ + , + document.body + ); +}; + +export default EventDetailsModal; diff --git a/src/data/events.ts b/src/data/events.ts index 0df041e..b1940a6 100644 --- a/src/data/events.ts +++ b/src/data/events.ts @@ -49,7 +49,7 @@ export const events = [ status: 'completed', startDate: '13th May 2026', endDate: '13th May 2026', - vtool: '', + vtool: 'https://events.vtools.ieee.org/m/565215', venue: 'Google Meet', registrationType: 'free', actionLinks: [ @@ -147,7 +147,7 @@ export const events = [ status: 'completed', startDate: '18th April, 2026', endDate: '18th April, 2026', - vtool: '', + vtool: 'https://events.vtools.ieee.org/m/565171', venue: 'Online', registrationType: 'free', actionLinks: [ @@ -237,7 +237,7 @@ export const events = [ status: 'completed', startDate: '18 July 2026', endDate: '18 July 2026', - vtool: '', + vtool: 'https://events.vtools.ieee.org/m/568527', venue: 'Google Meet', registrationType: 'free', actionLinks: [ @@ -318,7 +318,7 @@ export const events = [ status: 'completed', startDate: '27 June 2026', endDate: '27 June 2026', - vtool: '', + vtool: 'https://events.vtools.ieee.org/m/567460', venue: 'Online', registrationType: 'free', actionLinks: [ @@ -384,7 +384,7 @@ export const events = [ description: "IEEE Women in Engineering (WIE) organizes 'The STAR Program' to inspire young minds in STEM by introducing them to scientific concepts, career opportunities, and engaging hands-on activities, including building simple circuits and interactive project evaluations.", isRelevant: true, - cloudinary_url: 'WIE.png', + cloudinary_url: '/WIE.png', organisedBy: 'IEEE WIE MSIT', }, { @@ -406,4 +406,27 @@ export const events = [ 'https://events.vtools.ieee.org/vtools_ui/media/display/97055157-ede0-4f0e-b035-4b61ee556834', organisedBy: 'IEEE WiE MSIT', }, + { + title: 'Salesforce Agentforce Developer Workshop', + type: 'workshop', + category: 'AI & Careers', + status: 'completed', + startDate: '24 August 2026', + endDate: '24 August 2026', + vtool: 'https://events.vtools.ieee.org/m/574264', + venue: '406 Seminar hall, MSIT building', + registrationType: 'free', + actionLinks: [ + 'https://chat.whatsapp.com/join_group', + 'contact: Poonam (CS Chair person) : +91 9773856422', + 'contact: Shankul (CS Vice Chair person) : +91 7840808449', + ], + prizes: null, + description: + 'The IEEE Computer Society Chapter organized an expert talk featuring Mr. Diggaj Sharma from Salesforce for the Salesforce Agentforce Developer Workshop (Building AI-Powered Autonomous Agents for Next-Gen Applications). Topics covered include AI + CRM Integration, Intelligent Agent Building, Workflow Execution, Real-World AI Workflows, AI Agents, Large Language Models (LLMs), types of agents, and MCP Servers. Chapter Advisor: Dr. Pooja Kherva.', + isRelevant: true, + cloudinary_url: + 'https://events.vtools.ieee.org/vtools_ui/media/display/59d79ef4-3c05-4faf-a5cf-a4544e0b0ae8', + organisedBy: 'IEEE MSIT Computer Society', + }, ]; diff --git a/src/utils/vtool.ts b/src/utils/vtool.ts index 7344ddd..4397c35 100644 --- a/src/utils/vtool.ts +++ b/src/utils/vtool.ts @@ -1,6 +1,6 @@ -export const getVtoolHref = (vtool?: string | null): string | null => { - const value = vtool?.trim(); - if (!value) return null; - if (/^https?:\/\//i.test(value)) return value; - return `https://${value}`; -}; +export const getVtoolHref = (vtool?: string | null): string | null => { + const value = vtool?.trim(); + if (!value) return null; + if (/^https?:\/\//i.test(value)) return value; + return `https://${value}`; +};