import { DateTime } from "luxon"; import { useState, useEffect } from "react"; import { Button } from "~/components/ui/button"; import { ChevronLeft, ChevronRight, Star, Filter, X, Users, User, ArrowUpDown, } from "lucide-react"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "~/components/ui/select"; import { Label } from "~/components/ui/label"; import { Tabs, TabsList, TabsTrigger } from "~/components/ui/tabs"; import { Collapsible, CollapsibleContent, CollapsibleTrigger, } from "~/components/ui/collapsible"; import DatePickerWithRange from "~/components/home/date-picker"; import BottomNavigation from "~/components/home/bottom-nav"; import Error from "~/components/error"; import { useSearchParams } from "react-router"; import { useColles } from "~/lib/api"; import TabContent from "~/components/home/tab-content"; const tabsStyle = "rounded-none bg-background data-[state=active]:bg-background! h-full data-[state=active]:shadow-none border-b-2 border-transparent border-t-0 border-r-0 border-l-0 data-[state=active]:border-primary!"; export default function Home() { // Handle query parameters const [query, setQuery] = useSearchParams(); const updateQuery = (key: string, value: string) => { if (query.get(key) !== value) { setQuery((prev) => { const newQuery = new URLSearchParams(prev); newQuery.set(key, value); return newQuery; }); } }; // Tabs const activeTab = query.get("view") || "you"; const setActiveTab = (tab: string) => updateQuery("view", tab); // Date const rawStartDate = query.get("start"); const startDate = rawStartDate ? DateTime.fromISO(rawStartDate, { zone: "local" }) : DateTime.now().startOf("week"); const setStartDate = (date: DateTime) => updateQuery("start", date.startOf("week").toISODate()!); const handlePreviousWeek = () => { const previousWeek = startDate.minus({ weeks: 1 }); setStartDate(previousWeek); }; const handleNextWeek = () => { const nextWeek = startDate.plus({ weeks: 1 }); setStartDate(nextWeek); }; // Fetch colles from API const { studentColles, classColles, favoriteColles, error, isLoading } = useColles(startDate); console.log("Colles loaded:", { studentColles, classColles, favoriteColles, error, isLoading, }); // Error handling (after all hooks) if (error) return ( ); // TODO: FAVORITES const useToggleStar = (auth: any) => {}; // TODO: FILTERS const getSessionFilter = (key: string) => { const filter = sessionStorage.getItem(key); if (filter) { return filter; } return "all"; }; const [subjectFilter, setSubjectFilter] = useState( getSessionFilter("subject") ); const [examinerFilter, setExaminerFilter] = useState( getSessionFilter("examiner") ); // const [studentFilter, setStudentFilter] = useState("all") const [isFilterOpen, setIsFilterOpen] = useState( getSessionFilter("subject") !== "all" || getSessionFilter("examiner") !== "all" ); useEffect(() => { sessionStorage.setItem("subject", subjectFilter); sessionStorage.setItem("examiner", examinerFilter); // sessionStorage.setItem('student', studentFilter) }, [subjectFilter, examinerFilter]); return (
{/* Tabs */} Vous Favoris Classe {/* Week Navigation */}
{/* TODO: Filter component */}
{activeTab === "class" && ( <>
)}
{/* TODO: DEBUG */} {/* {activeTab === "all" && (getWeekStart().getTime() != startDate.getTime() ? ( ) : ( ))} */}
{/*
*/}
{/* Tab Content */}
{/* Your Colles Tab */} {activeTab === "you" && ( )} {/* Favorites Tab */} {activeTab === "favorites" && ( )}
{/* Class Colles Tab */} {activeTab === "class" && ( )} {/* Bottom Navigation for Mobile */}
); }