diff --git a/src/components/Arrow.astro b/src/components/Arrow.astro index 437e7ef..6fb4d75 100644 --- a/src/components/Arrow.astro +++ b/src/components/Arrow.astro @@ -1,8 +1,21 @@ +--- +interface Props { + class?: string; + rotate?: number; +} + +const { class: className, rotate, ...rest } = Astro.props; +--- + await markdown(p)), + description.map(async (p) => await markdown(p)), ); --- -
- {activity.title} +
+ { + href ? ( + + + {title} + + + + ) : ( + + {title} + + ) + }
-
{activity.time ?? "Time TBA"}
+
{at ?? "Time TBA"}
{ - activity.location ? ( - - {activity.location.text} + location && ( + + {location.text} - ) : ( -
Location TBA
) }
-
{descriptionLines}
+ { + descriptionLines && ( +
{descriptionLines}
+ ) + }
diff --git a/src/components/ScheduledActivityBetween.astro b/src/components/ScheduledActivityBetween.astro new file mode 100644 index 0000000..77bb165 --- /dev/null +++ b/src/components/ScheduledActivityBetween.astro @@ -0,0 +1,13 @@ +--- +import { ActivityBetweenData } from "~/data/schedule"; + +import ScheduledActivity from "./ScheduledActivity.astro"; + +interface Props { + activity: ActivityBetweenData; +} + +const { activity } = Astro.props; +--- + + diff --git a/src/components/ScheduledActivitySession.astro b/src/components/ScheduledActivitySession.astro new file mode 100644 index 0000000..d766c42 --- /dev/null +++ b/src/components/ScheduledActivitySession.astro @@ -0,0 +1,22 @@ +--- +import { ActivitySessionData } from "~/data/schedule"; + +import ScheduledActivity from "./ScheduledActivity.astro"; +import { talksBySlug } from "~/data/notion-data"; + +interface Props { + activity: ActivitySessionData; +} + +const { activity } = Astro.props; +const session = talksBySlug[activity.session]; +--- + + speaker.name).join(" and ")]} + href={`/talks#${session.slug}`} + id={session.slug} + level="h4" + title={session.title} +/> diff --git a/src/components/Session.astro b/src/components/Session.astro index 3f3b6b4..8d9c6a0 100644 --- a/src/components/Session.astro +++ b/src/components/Session.astro @@ -6,6 +6,7 @@ import SessionDiscord from "./SessionDiscord.astro"; import SpeakerSmall from "./SpeakerSmall.astro"; import SubtleCard from "./SubtleCard.astro"; import SessionTags from "./SessionTags.astro"; +import { days } from "~/data/schedule"; interface Props { class?: string; @@ -17,6 +18,17 @@ const { talk: { title, people, tags, description, slug }, ...rest } = Astro.props; + +const schedule = days + .flatMap((day) => + day.activities.flatMap((activity) => + activity.within + ?.filter((inner) => inner.type === "session" && inner.session === slug) + .map((activity) => ({ activity, day })), + ), + ) + .filter((x) => !!x?.activity) + .at(0)!; ---
  • @@ -37,7 +49,13 @@ const { )) } - +
  • @@ -120,6 +138,17 @@ const { padding-left: 0; } + .talk-metadata { + color: var(--colorBlueDarkDull); + display: flex; + flex-direction: column; + gap: 0.5rem; + } + + .talk-time { + font-size: var(--fontSizeBody); + } + p { margin: 1rem !important; } @@ -135,5 +164,11 @@ const { .talk { max-width: var(--widthBodyFull); } + + .talk-metadata { + align-items: flex-end; + padding: 0.25rem; + text-align: right; + } } diff --git a/src/components/SessionDiscord.astro b/src/components/SessionDiscord.astro index 1fef726..181e772 100644 --- a/src/components/SessionDiscord.astro +++ b/src/components/SessionDiscord.astro @@ -21,15 +21,13 @@ const { discord } = Astro.props; diff --git a/src/data/schedule.ts b/src/data/schedule.ts index dc75d44..d34ae26 100644 --- a/src/data/schedule.ts +++ b/src/data/schedule.ts @@ -6,12 +6,29 @@ export interface ScheduleDay { } export interface ActivityData { + at?: string; description: string[]; location?: ActivityLocation; - time?: string; title: string; + within?: ActivityDataWithin[]; } +export interface ActivityDataWithinBase { + at: string; +} + +export interface ActivityBetweenData extends ActivityDataWithinBase { + title: string; + type: "between"; +} + +export interface ActivitySessionData extends ActivityDataWithinBase { + session: string; + type: "session"; +} + +export type ActivityDataWithin = ActivityBetweenData | ActivitySessionData; + export interface ActivityLocation { href: string; text: string; @@ -21,6 +38,7 @@ export const days: ScheduleDay[] = [ { activities: [ { + at: "3:00pm - 6:00pm", description: [ "[Artists for Humanity (AFH)](https://www.afhboston.org) is a Boston not-for-profit that employs local teens after school, giving them invaluable art, coding, and design experience.", "We'll come over there to help the teens with their coding projects and run mini-workshops on useful development topics.", @@ -30,7 +48,6 @@ export const days: ScheduleDay[] = [ href: "https://www.afhboston.org", text: "Artists for Humanity EpiCenter", }, - time: "3:00pm - 6:00pm", title: "Artists for Humanity Volunteering Event", }, ], @@ -39,6 +56,7 @@ export const days: ScheduleDay[] = [ { activities: [ { + at: "7:00am", description: [ "Join organizers, volunteers, and attendees for a free joyful jog around the Boston harbor.", "We'll meet at the New England Aquarium and run in a 5k loop at a comfortably light pace.", @@ -47,10 +65,10 @@ export const days: ScheduleDay[] = [ href: "https://www.neaq.org/visit", text: "New England Aquarium", }, - time: "7:00am", title: "Morning Fun Run", }, { + at: "8:30am", description: [ "Come over to the venue, collect your badge, and network with fellow attendees.", ], @@ -58,19 +76,56 @@ export const days: ScheduleDay[] = [ href: "https://www.neaq.org/visit/simons-theatre", text: "Simons Theater", }, - time: "8:30am", title: "Doors Open", }, { + at: "9:40am", description: ["Full-length and lightning talks from our speakers."], location: { href: "https://www.neaq.org/visit/simons-theatre", text: "Simons Theater", }, - time: "9:40am", title: "Talks", + within: [ + { + at: "9:45am", + title: "Morning Announcements", + type: "between", + }, + { + at: "9:55am", + session: "talk-robby-russell", + type: "session", + }, + { + at: "10:30am", + session: "talk-chris-griffing", + type: "session", + }, + { + at: "10:40am", + session: "talk-rizel-scarlett", + type: "session", + }, + { + at: "11:10am", + title: "Short Break", + type: "between", + }, + { + at: "11:30am", + session: "talk-don-isaac", + type: "session", + }, + { + at: "12:00pm", + session: "talk-titian-cernicova-dragomir", + type: "session", + }, + ], }, { + at: "12:30pm", description: [ "Head over to the nearby Faneuil Hall Marketplace for lunch.", "We'll have volunteers available to bring groups over to popular food establishments.", @@ -79,19 +134,56 @@ export const days: ScheduleDay[] = [ href: "https://faneuilhallmarketplace.com", text: "Faneuil Hall Marketplace", }, - time: "12:30pm", title: "Lunch", }, { + at: "2:00pm", description: ["Full-length and lightning talks from our speakers."], location: { href: "https://www.neaq.org/visit/simons-theatre", text: "Simons Theater", }, - time: "2:00pm", title: "Talks", + within: [ + { + at: "2:00pm", + session: "talk-laurynas-keturakis", + type: "session", + }, + { + at: "2:10pm", + session: "talk-aakansha-doshi", + type: "session", + }, + { + at: "2:40pm", + session: "talk-corina-murg", + type: "session", + }, + { + at: "2:50pm", + session: "talk-loris-cro", + type: "session", + }, + { + at: "3:20pm", + title: "Short Break", + type: "between", + }, + { + at: "3:45pm", + session: "talk-jess-lin", + type: "session", + }, + { + at: "4:15pm", + session: "talk-yagiz-nizipli", + type: "session", + }, + ], }, { + at: "4:30pm", description: [ "What a day! Let's take a breather to have a snack and chat.", ], @@ -99,19 +191,36 @@ export const days: ScheduleDay[] = [ href: "https://www.neaq.org/visit/simons-theatre", text: "Simons Theater", }, - time: "4:30pm", title: "Afternoon Snack", }, { + at: "5:00pm", description: ["Full-length and lightning talks from our speakers."], location: { href: "https://www.neaq.org/visit/simons-theatre", text: "Simons Theater", }, - time: "5:00pm", title: "Talks", + within: [ + { + at: "5:00pm", + session: "talk-rick-viscomi", + type: "session", + }, + { + at: "5:30pm", + session: "talk-rachel-nabors", + type: "session", + }, + { + at: "5:40pm", + session: "talk-dan-vanderkam", + type: "session", + }, + ], }, { + at: "6:15pm", description: [ "Final pieces of information on upcoming events, raffle giveaways, and appreciation notes to all of the lovely people who attended.", ], @@ -119,7 +228,6 @@ export const days: ScheduleDay[] = [ href: "https://www.neaq.org/visit/simons-theatre", text: "Simons Theater", }, - time: "6:15pm", title: "Closing Announcements", }, { @@ -135,6 +243,7 @@ export const days: ScheduleDay[] = [ { activities: [ { + at: "7:00am", description: [ "Join organizers, volunteers, and attendees for a free joyful jog around the Boston harbor.", "We'll meet at the New England Aquarium and run in a 5k loop at a comfortably light pace.", @@ -143,14 +252,26 @@ export const days: ScheduleDay[] = [ href: "https://www.neaq.org/visit", text: "New England Aquarium", }, - time: "7:00am", title: "Morning Fun Run", }, { + at: "8:30am", description: [ "Learn actionable day-to-day skills and technological takeaways from some of our partners and sponsors.", ], title: "Morning Workshops", + within: [ + { + at: "8:30am", + session: "workshop-katerina-and-max", + type: "session", + }, + { + at: "10:30am", + title: "Workshop to be announced", + type: "between", + }, + ], }, ], title: "Friday, October 4th", diff --git a/src/layouts/normalize.css b/src/layouts/normalize.css index 4e8dfe7..bc52be6 100644 --- a/src/layouts/normalize.css +++ b/src/layouts/normalize.css @@ -14,6 +14,7 @@ a { h1, h2, h3, +h4, ol, p { margin: 0; diff --git a/src/pages/schedule.astro b/src/pages/schedule.astro index f9c35c8..233b4fc 100644 --- a/src/pages/schedule.astro +++ b/src/pages/schedule.astro @@ -3,9 +3,11 @@ import HeadingFlanked from "~/components/HeadingFlanked.astro"; import HeroForPage from "~/components/HeroForPage.astro"; import PrimaryContents from "~/components/PrimaryContents.astro"; import ScheduledActivity from "~/components/ScheduledActivity.astro"; -import ContentLayout from "~/layouts/ContentLayout.astro"; -import { days } from "~/data/schedule"; import BodyText from "~/components/BodyText.astro"; +import ScheduledActivityBetween from "~/components/ScheduledActivityBetween.astro"; +import ScheduledActivitySession from "~/components/ScheduledActivitySession.astro"; +import { days } from "~/data/schedule"; +import ContentLayout from "~/layouts/ContentLayout.astro"; --- @@ -24,7 +26,22 @@ import BodyText from "~/components/BodyText.astro"; {activities.map((activity) => ( - + <> + + {activity.within && + activity.within.map((inner) => + inner.type === "between" ? ( + + ) : ( + + ), + )} + ))} )) diff --git a/src/pages/sessions.astro b/src/pages/sessions.astro index b499649..d86dd8a 100644 --- a/src/pages/sessions.astro +++ b/src/pages/sessions.astro @@ -70,7 +70,7 @@ const sections = [ } - More workshops to be announced soon. + One more workshop to be announced soon.