diff --git a/src/components/schedule/break.astro b/src/components/schedule/break.astro index 33fa3920b..b5ec0d0a6 100644 --- a/src/components/schedule/break.astro +++ b/src/components/schedule/break.astro @@ -7,12 +7,12 @@ export interface Props { } const { time, title, style, className }: Props = Astro.props; +const label = [time, title].filter(Boolean).join(" "); --- -
- {time}{" "} +
+ {time && `${time} `} {title} - {time} {title}
@@ -442,8 +498,17 @@ const dateText = format(date, "eeee - do MMMM"); .schedule-wrapper { width: 100%; + margin-top: 0.75rem; } + .day { + margin-block: 2rem 3rem; + } + + .day:first-child { + margin-top: 0; + } + :global(.day-end) { display: flex; @@ -496,7 +561,6 @@ const dateText = format(date, "eeee - do MMMM"); :global(.session), .time, :global(.break), - .room-change, header, header > div > div { /*outline: 2px solid var(--color-primary);*/ @@ -506,6 +570,29 @@ const dateText = format(date, "eeee - do MMMM"); padding:2px 0; } + :global(.room-change) { + align-items: center; + background-color: #FCFBFA; + border-radius: 10px; + box-sizing: border-box; + color: var(--color-text); + display: flex; + font-weight: 400; + justify-content: center; + line-height: 1.2; + margin: 2px; + min-height: 0; + overflow: hidden; + padding: 0 8px; + white-space: nowrap; + } + + :global(.break:not(.room-change)) { + background-color: #FFFCF7; + font-weight: 600; + letter-spacing: 0; + } + .posters { text-align: center; display: none; @@ -542,6 +629,11 @@ const dateText = format(date, "eeee - do MMMM"); .schedule-container.header { padding-bottom: 0; + margin-top: 0.5rem; + } + + .schedule-container:not(.header) { + margin-top: 0.75rem; } .time, @@ -553,7 +645,7 @@ const dateText = format(date, "eeee - do MMMM"); position: sticky; top: 0; background: var(--color-body-background); - z-index: 20;inherit + z-index: 20; > div > div { padding: 8px; @@ -562,25 +654,23 @@ const dateText = format(date, "eeee - do MMMM"); } .schedule { - --room-change: calc(var(--minute) * 8); - --5min: calc(var(--minute) * 5); + --break: 14px; + --room-change: 52px; display: grid; gap: 2px; padding: 0; - padding-top:100px; } :global(.session), .time, .posters, - .room-change, + :global(.room-change), :global(.break) { grid-row: var(--start) / var(--end); grid-column: var(--col-start) / var(--col-end); } - :global(.day-end){ font-size: 1.2rem; margin: 2px; diff --git a/src/content/config.ts b/src/content/config.ts index 6f2e46a9f..5bba56bde 100644 --- a/src/content/config.ts +++ b/src/content/config.ts @@ -166,11 +166,9 @@ interface ScheduleData { const days = defineCollection({ loader: async (): Promise => { - // TODO: Re-enable when the API is available - // const schedule = (await loadData( - // import.meta.env.EP_SCHEDULE_API - // )) as ScheduleData; - const schedule = null as ScheduleData | null; + const schedule = (await loadData( + import.meta.env.EP_SCHEDULE_API + )) as ScheduleData; if (!schedule || Object.keys(schedule).length === 0) { return []; diff --git a/src/data/links.json b/src/data/links.json index c33f28ddb..fdff993e2 100644 --- a/src/data/links.json +++ b/src/data/links.json @@ -3,6 +3,10 @@ { "name": "Programme", "items": [ + { + "name": "Schedule", + "path": "/schedule" + }, { "name": "List of Sessions", "path": "/sessions" @@ -132,10 +136,26 @@ { "name": "Programme", "items": [ + { + "name": "Schedule", + "path": "/schedule" + }, + { + "name": "List of Sessions", + "path": "/sessions" + }, + { + "name": "List of Speakers", + "path": "/speakers" + }, { "name": "Tracks", "path": "/tracks" }, + { + "name": "Speaker Guidelines", + "path": "/guidelines" + }, { "name": "Speaker Mentorship", "path": "/mentorship" diff --git a/src/pages/schedule/talks.astro b/src/pages/schedule/talks.astro index 78d725874..48d29be07 100644 --- a/src/pages/schedule/talks.astro +++ b/src/pages/schedule/talks.astro @@ -20,16 +20,14 @@ export const getStaticPaths = async () => { }; const days = await getCollection("days"); +const talkDays = new Set(["2026-07-15", "2026-07-16", "2026-07-17"]); --- { days - .filter((day) => { - const dayOfWeek = new Date(day.id).getDay(); - return dayOfWeek !== 1 && dayOfWeek !== 2; - }) + .filter((day) => talkDays.has(day.id)) .map((day) => ( )) diff --git a/src/pages/schedule/tutorials.astro b/src/pages/schedule/tutorials.astro index 0be5d947d..3fbaaef40 100644 --- a/src/pages/schedule/tutorials.astro +++ b/src/pages/schedule/tutorials.astro @@ -20,16 +20,14 @@ export const getStaticPaths = async () => { }; const days = await getCollection("days"); +const tutorialDays = new Set(["2026-07-13", "2026-07-14"]); --- { days - .filter((day) => { - const dayOfWeek = new Date(day.id).getDay(); - return dayOfWeek == 1 || dayOfWeek == 2; - }) + .filter((day) => tutorialDays.has(day.id)) .map((day) => ( ))