diff --git a/src/frontend/apps/calendars/src/features/feedback/Feedback.tsx b/src/frontend/apps/calendars/src/features/feedback/Feedback.tsx index e22fa87..a1c3a2f 100644 --- a/src/frontend/apps/calendars/src/features/feedback/Feedback.tsx +++ b/src/frontend/apps/calendars/src/features/feedback/Feedback.tsx @@ -5,7 +5,7 @@ import { Modal, ModalSize, useModal, -} from "@openfun/cunningham-react"; +} from "@gouvfr-lasuite/cunningham-react"; import React, { useMemo } from "react"; import { useTranslation } from "react-i18next"; import { useConfig } from "../config/ConfigProvider"; diff --git a/src/frontend/apps/calendars/src/features/layouts/components/header/Header.tsx b/src/frontend/apps/calendars/src/features/layouts/components/header/Header.tsx index ac1a43b..c97baab 100644 --- a/src/frontend/apps/calendars/src/features/layouts/components/header/Header.tsx +++ b/src/frontend/apps/calendars/src/features/layouts/components/header/Header.tsx @@ -17,7 +17,6 @@ export const HeaderIcon = () => { }; export const HeaderRight = () => { - const { user } = useAuth(); const { isTablet } = useResponsive(); return ( diff --git a/src/frontend/apps/calendars/src/features/ui/components/toaster/Toaster.tsx b/src/frontend/apps/calendars/src/features/ui/components/toaster/Toaster.tsx index 2d31ef5..00839ac 100644 --- a/src/frontend/apps/calendars/src/features/ui/components/toaster/Toaster.tsx +++ b/src/frontend/apps/calendars/src/features/ui/components/toaster/Toaster.tsx @@ -1,4 +1,4 @@ -import { Button } from "@openfun/cunningham-react"; +import { Button } from "@gouvfr-lasuite/cunningham-react"; import clsx from "clsx"; import { ToastContainer, ToastContentProps, toast } from "react-toastify"; diff --git a/src/frontend/apps/calendars/src/pages/401.tsx b/src/frontend/apps/calendars/src/pages/401.tsx index 5290aa7..05a2842 100644 --- a/src/frontend/apps/calendars/src/pages/401.tsx +++ b/src/frontend/apps/calendars/src/pages/401.tsx @@ -1,7 +1,7 @@ import { login } from "@/features/auth/Auth"; import { getSimpleLayout } from "@/features/layouts/components/simple/SimpleLayout"; import { GenericDisclaimer } from "@/features/ui/components/generic-disclaimer/GenericDisclaimer"; -import { Button } from "@openfun/cunningham-react"; +import { Button } from "@gouvfr-lasuite/cunningham-react"; import { useTranslation } from "react-i18next"; export default function UnauthorizedPage() { diff --git a/src/frontend/apps/calendars/src/pages/403.tsx b/src/frontend/apps/calendars/src/pages/403.tsx index 9ac1f76..3803330 100644 --- a/src/frontend/apps/calendars/src/pages/403.tsx +++ b/src/frontend/apps/calendars/src/pages/403.tsx @@ -1,7 +1,7 @@ import { getSimpleLayout } from "@/features/layouts/components/simple/SimpleLayout"; import { GenericDisclaimer } from "@/features/ui/components/generic-disclaimer/GenericDisclaimer"; import { Icon } from "@gouvfr-lasuite/ui-kit"; -import { Button } from "@openfun/cunningham-react"; +import { Button } from "@gouvfr-lasuite/cunningham-react"; import { useTranslation } from "react-i18next"; export default function UnauthorizedPage() { diff --git a/src/frontend/apps/calendars/src/pages/_app.tsx b/src/frontend/apps/calendars/src/pages/_app.tsx index 9618254..95a5508 100644 --- a/src/frontend/apps/calendars/src/pages/_app.tsx +++ b/src/frontend/apps/calendars/src/pages/_app.tsx @@ -1,15 +1,12 @@ import { createContext, - useContext, - useMemo, - useState, + useContext, useState, type ReactElement, - type ReactNode, + type ReactNode } from "react"; import type { NextPage } from "next"; import type { AppProps } from "next/app"; import { CunninghamProvider } from "@gouvfr-lasuite/ui-kit"; -import { ModalProvider } from "@openfun/cunningham-react"; import { MutationCache, Query, @@ -34,9 +31,7 @@ import { removeQuotes, useCunninghamTheme, } from "@/features/ui/cunningham/useCunninghamTheme"; -import { ResponsiveDivs } from "@/features/ui/components/responsive/ResponsiveDivs"; import { FeedbackFooterMobile } from "@/features/feedback/Feedback"; -import { useRouter } from "next/router"; export type NextPageWithLayout

= NextPage & { getLayout?: (page: ReactElement) => ReactNode; @@ -119,7 +114,6 @@ const MyAppInner = ({ Component, pageProps }: AppPropsWithLayout) => { const getLayout = Component.getLayout ?? ((page) => page); const { t, i18n } = useTranslation(); const { theme } = useAppContext(); - const router = useRouter(); const themeTokens = useCunninghamTheme(); return ( @@ -137,15 +131,14 @@ const MyAppInner = ({ Component, pageProps }: AppPropsWithLayout) => { currentLocale={capitalizeRegion(i18n.language)} theme={theme} > - + {getLayout()} - - + diff --git a/src/frontend/apps/calendars/src/pages/calendar.scss b/src/frontend/apps/calendars/src/pages/calendar.scss index dcdf908..c6a814a 100644 --- a/src/frontend/apps/calendars/src/pages/calendar.scss +++ b/src/frontend/apps/calendars/src/pages/calendar.scss @@ -19,7 +19,7 @@ flex: 1; display: flex; flex-direction: column; - overflow: hidden; + // overflow: hidden; } } diff --git a/src/frontend/apps/calendars/src/pages/calendar.tsx b/src/frontend/apps/calendars/src/pages/calendar.tsx index 2d212b7..5122b9b 100644 --- a/src/frontend/apps/calendars/src/pages/calendar.tsx +++ b/src/frontend/apps/calendars/src/pages/calendar.tsx @@ -2,53 +2,42 @@ * Calendar page - Main calendar view with sidebar. */ -import { useCallback, useState } from "react"; +import { useCallback } from "react"; import { MainLayout } from "@gouvfr-lasuite/ui-kit"; import Head from "next/head"; import { useTranslation } from "next-i18next"; import { login, useAuth } from "@/features/auth/Auth"; -import { CalendarView, LeftPanel } from "@/features/calendar/components"; -import { useCreateCalendarModal } from "@/features/calendar/components/CreateCalendarModal"; -import { useCreateEventModal } from "@/features/calendar/hooks/useCreateEventModal"; +import { LeftPanel } from "@/features/calendar/components"; import { useCalendars } from "@/features/calendar/hooks/useCalendars"; import { GlobalLayout } from "@/features/layouts/components/global/GlobalLayout"; import { HeaderRight } from "@/features/layouts/components/header/Header"; import { SpinnerPage } from "@/features/ui/components/spinner/SpinnerPage"; import { Toaster } from "@/features/ui/components/toaster/Toaster"; +import { Scheduler } from "@/features/calendar/components/scheduler/Scheduler"; +import { CalendarContextProvider, useCalendarContext } from "@/features/calendar/contexts"; export default function CalendarPage() { const { t } = useTranslation(); const { user } = useAuth(); - // Calendar state - const [selectedDate, setSelectedDate] = useState(new Date()); + // Use selectedDate from context (the specific day user has clicked/selected) + // Note: currentDate (for view sync) is used directly by MiniCalendar + const { selectedDate, setSelectedDate } = useCalendarContext(); // Fetch calendars for the sidebar - const { data: calendars = [], isLoading: isLoadingCalendars } = useCalendars(); + const { data: calendars = [] } = useCalendars(); - // Create calendar modal - const createCalendarModal = useCreateCalendarModal(); - - // Create event modal - const createEventModal = useCreateEventModal({ - calendars: calendars || [], - selectedDate - }); // Handlers const handleDateSelect = useCallback((date: Date) => { setSelectedDate(date); - }, []); + }, [setSelectedDate]); const handleCreateEvent = useCallback(() => { - createEventModal.open(); - }, [createEventModal]); - - const handleCreateCalendar = useCallback(() => { - createCalendarModal.open(); - }, [createCalendarModal]); + console.log("handleCreateEvent"); + }, []); // Redirect to login if not authenticated if (!user) { @@ -67,26 +56,24 @@ export default function CalendarPage() { -

-
- + +
+
+ +
+
+ + +
-
- -
-
+ - {createCalendarModal.Modal} - {createEventModal.Modal} + ); @@ -94,6 +81,7 @@ export default function CalendarPage() { CalendarPage.getLayout = function getLayout(page: React.ReactElement) { return ( +
+
); }; diff --git a/src/frontend/apps/calendars/src/pages/index.tsx b/src/frontend/apps/calendars/src/pages/index.tsx index b971d79..1dad086 100644 --- a/src/frontend/apps/calendars/src/pages/index.tsx +++ b/src/frontend/apps/calendars/src/pages/index.tsx @@ -11,7 +11,7 @@ import { Toaster, ToasterItem, } from "@/features/ui/components/toaster/Toaster"; -import { Button } from "@openfun/cunningham-react"; +import { Button } from "@gouvfr-lasuite/cunningham-react"; import { useConfig } from "@/features/config/ConfigProvider"; import { LeftPanelMobile } from "@/features/layouts/components/left-panel/LeftPanelMobile"; import { SESSION_STORAGE_REDIRECT_AFTER_LOGIN_URL } from "@/features/api/fetchApi"; @@ -77,7 +77,7 @@ export default function HomePage() { } - /* banner={banner.src} */ + banner={banner.src} title={t("home.title")} subtitle={t("home.subtitle")} mainButton={ diff --git a/src/frontend/apps/calendars/src/styles/cunningham-tokens.css b/src/frontend/apps/calendars/src/styles/cunningham-tokens.css index a70781f..d1e7311 100644 --- a/src/frontend/apps/calendars/src/styles/cunningham-tokens.css +++ b/src/frontend/apps/calendars/src/styles/cunningham-tokens.css @@ -663,7 +663,7 @@ --c--components--gaufre--widgetpath: 'https://static.suite.anct.gouv.fr/widgets/lagaufre.js'; --c--components--gaufre--apiurl: 'https://lasuite.numerique.gouv.fr/api/services'; --c--components--favicon--src: '/assets/favicon.png'; - --c--components--logo--src: url('/assets/logo_alpha.svg'); + --c--components--logo--src: url('/assets/logo_beta.svg'); --c--components--logo-icon--src: url('/assets/logo-icon_beta.svg'); } .cunningham-theme--dark{ diff --git a/src/frontend/apps/calendars/src/styles/globals.scss b/src/frontend/apps/calendars/src/styles/globals.scss index 22bb8b0..16d8d84 100644 --- a/src/frontend/apps/calendars/src/styles/globals.scss +++ b/src/frontend/apps/calendars/src/styles/globals.scss @@ -4,20 +4,17 @@ @use "./../features/layouts/components/global/GlobalLayout.scss"; @use "./../features/feedback/Feedback.scss"; @use "./../features/layouts/components/header/index.scss"; -@use "./../features/ui/components/breadcrumbs"; @use "./../features/ui/components/toaster"; @use "./../features/ui/components/generic-disclaimer/GenericDisclaimer.scss"; -@use "./../features/ui/components/info/InfoRow.scss"; -@use "./../features/ui/components/responsive"; @use "./../features/ui/components/spinner/SpinnerPage.scss"; -@use "./../features/ui/components/infinite-scroll/InfiniteScroll.scss"; @use "./../features/layouts/components/left-panel/LeftPanelMobile.scss"; @use "./../features/calendar/components/MiniCalendar.scss"; @use "./../features/calendar/components/CalendarList.scss"; @use "./../features/calendar/components/LeftPanel.scss"; -@use "./../features/calendar/components/CalendarView.scss"; @use "./../features/calendar/components/EventModal.scss"; @use "./../features/calendar/components/RecurrenceEditor.scss"; +@use "./../features/calendar/components/AttendeesInput.scss"; +@use "./../features/calendar/components/scheduler/Scheduler.scss"; @use "./../pages/index.scss" as *; @use "./../pages/calendar.scss" as *; html, @@ -77,7 +74,5 @@ body { .c__datagrid--empty, .c__datagrid thead { - transition: - background-color 0.3s ease, - box-shadow 0.3s ease; + transition: background-color 0.3s ease, box-shadow 0.3s ease; } diff --git a/src/frontend/apps/calendars/src/utils/useQueries.ts b/src/frontend/apps/calendars/src/utils/useQueries.ts index 1fea9a4..e0d1eb3 100644 --- a/src/frontend/apps/calendars/src/utils/useQueries.ts +++ b/src/frontend/apps/calendars/src/utils/useQueries.ts @@ -1,12 +1,4 @@ import { UseQueryOptions } from "@tanstack/react-query"; - -export type HookUseQueryOptions2 = { - enabled?: boolean; -} - - - - export type HookUseQueryOptions = Omit, "queryKey" | "queryFn">;