Some checks failed
Deploy to Cloudflare Workers (OpenNext) / deploy (push) Has been cancelled
Add a bottom cut-out panel with larger winner cards (four visible), move summit dates to Feb 21–22 2027, and limit demo Antebas to letters so symbols render via DM Sans. Co-authored-by: Cursor <cursoragent@cursor.com>
58 lines
1.7 KiB
TypeScript
58 lines
1.7 KiB
TypeScript
import { site } from "@/content/site";
|
|
|
|
/** Event times in Addis Ababa (EAT, UTC+3) */
|
|
const EVENT_START = "20270221T080000";
|
|
const EVENT_END = "20270222T180000";
|
|
|
|
function formatIcsDate(iso: string) {
|
|
return iso.replace(/[-:]/g, "").split(".")[0] + "Z";
|
|
}
|
|
|
|
export function buildGoogleCalendarUrl() {
|
|
const params = new URLSearchParams({
|
|
action: "TEMPLATE",
|
|
text: site.name,
|
|
dates: `${EVENT_START}/${EVENT_END}`,
|
|
details: `${site.tagline}\n\nPresented by ${site.presentedBy}.\n${site.links.legacySite}`,
|
|
location: `${site.venue.name}, ${site.venue.address}`,
|
|
ctz: "Africa/Addis_Ababa",
|
|
});
|
|
return `https://calendar.google.com/calendar/render?${params.toString()}`;
|
|
}
|
|
|
|
export function buildOutlookCalendarUrl() {
|
|
const params = new URLSearchParams({
|
|
path: "/calendar/action/compose",
|
|
rru: "addevent",
|
|
subject: site.name,
|
|
startdt: "2027-02-21T08:00:00",
|
|
enddt: "2027-02-22T18:00:00",
|
|
body: site.tagline,
|
|
location: `${site.venue.name}, ${site.venue.address}`,
|
|
});
|
|
return `https://outlook.live.com/calendar/0/deeplink/compose?${params.toString()}`;
|
|
}
|
|
|
|
export function buildIcsFileContent() {
|
|
const uid = `grv-summit-${site.dates.start}@grvsummit.com`;
|
|
const now = formatIcsDate(new Date().toISOString());
|
|
|
|
return [
|
|
"BEGIN:VCALENDAR",
|
|
"VERSION:2.0",
|
|
"PRODID:-//GRV Summit//EN",
|
|
"CALSCALE:GREGORIAN",
|
|
"METHOD:PUBLISH",
|
|
"BEGIN:VEVENT",
|
|
`UID:${uid}`,
|
|
`DTSTAMP:${now}`,
|
|
`DTSTART;TZID=Africa/Addis_Ababa:20270221T080000`,
|
|
`DTEND;TZID=Africa/Addis_Ababa:20270222T180000`,
|
|
`SUMMARY:${site.name}`,
|
|
`DESCRIPTION:${site.tagline.replace(/\n/g, "\\n")}`,
|
|
`LOCATION:${site.venue.name}, ${site.venue.address}`,
|
|
"END:VEVENT",
|
|
"END:VCALENDAR",
|
|
].join("\r\n");
|
|
}
|