diff --git a/apps/web/src/App.tsx b/apps/web/src/App.tsx index 67eb447..53bbafb 100644 --- a/apps/web/src/App.tsx +++ b/apps/web/src/App.tsx @@ -1,42 +1,7 @@ -import { useEffect, useState } from "react"; -import { getEvents } from "./lib/api"; +import CalendarPage from "./CalendarPage"; -type Event = { - id: string; - title: string; - starts_at: string; -}; +function App() { + return ; +} -export default function CalendarPage() { - const [events, setEvents] = useState([]); - const [error, setError] = useState(""); - - useEffect(() => { - getEvents() - .then((data) => { - console.log("Fetched events:", data); - setEvents(data); - }) - .catch((err) => { - console.error("Fetch failed:", err); - setError(String(err)); - }); - }, []); - - return ( -
-

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 (