-
Events
-
- {error &&
Error: {error}
}
-
-
Event count: {events.length}
-
- {events.map((event) => (
-
-
{event.title}
-
{new Date(event.starts_at).toLocaleString()}
-
- ))}
-
- );
-}
\ No newline at end of file
+export default App;
\ No newline at end of file
diff --git a/apps/web/src/CalendarPage.tsx b/apps/web/src/CalendarPage.tsx
index 883a805..09a704f 100644
--- a/apps/web/src/CalendarPage.tsx
+++ b/apps/web/src/CalendarPage.tsx
@@ -2,7 +2,7 @@ import { useEffect, useMemo, useRef, useState } from 'react'
import MonthGrid from './components/MonthGrid'
import { buildMonthGrid } from './utils/calendarMath'
import type { CalendarEvent, GridLayout } from './types/calendar'
-import { fetchPublicEvents } from './lib/api'
+import { getEvents } from './lib/api'
export default function CalendarPage() {
const [visibleMonth, setVisibleMonth] = useState(new Date())
@@ -14,20 +14,15 @@ export default function CalendarPage() {
const days = useMemo(() => buildMonthGrid(visibleMonth), [visibleMonth])
- useEffect(() => {
- const from = new Date(visibleMonth.getFullYear(), visibleMonth.getMonth(), 1)
- const to = new Date(visibleMonth.getFullYear(), visibleMonth.getMonth() + 1, 0)
+ useEffect(() => {
+ getEvents()
+ .then(setEvents)
+ .catch((err) => {
+ console.error('Failed to load events:', err)
+ setEvents([])
+ })
+ }, [])
- fetchPublicEvents({
- from: from.toISOString(),
- to: to.toISOString(),
- })
- .then(setEvents)
- .catch((err) => {
- console.error('Failed to load events:', err)
- setEvents([])
- })
- }, [visibleMonth])
useEffect(() => {
if (!gridWrapperRef.current) return
diff --git a/apps/web/src/components/CalendarHeader.tsx b/apps/web/src/components/CalendarHeader.tsx
deleted file mode 100644
index e69de29..0000000
diff --git a/apps/web/src/components/CreateEventPanel.tsx b/apps/web/src/components/CreateEventPanel.tsx
deleted file mode 100644
index e69de29..0000000
diff --git a/apps/web/src/components/DayCell.tsx b/apps/web/src/components/DayCell.tsx
index 7f2f435..860345b 100644
--- a/apps/web/src/components/DayCell.tsx
+++ b/apps/web/src/components/DayCell.tsx
@@ -23,14 +23,17 @@ export default function DayCell({
const isSelected = selectedDate ? isSameDay(date, selectedDate) : false
const isCurrentMonth = isSameMonth(date, visibleMonth)
- const eventsForThisDay = events.filter((event) => {
- const eventDate = new Date(event.start)
- return isSameDay(eventDate, date)
- })
+ const eventsForThisDay = events
+ .filter((event) => {
+ const eventDate = new Date(event.starts_at)
+ return isSameDay(eventDate, date)
+ })
+ .sort((a, b) => new Date(a.starts_at).getTime() - new Date(b.starts_at).getTime())
const visibleEvents = eventsForThisDay.slice(0, layout.maxVisibleEvents)
const hiddenCount = eventsForThisDay.length - visibleEvents.length
const showCountOnly = layout.maxVisibleEvents === 0
+
return (