From 7e64fbbaa33f59b83d98d4c28457a39467429d46 Mon Sep 17 00:00:00 2001 From: Arthur Belleville Date: Sat, 21 Feb 2026 21:09:54 +0100 Subject: [PATCH] Polish events view: upcoming filter, purple button, tablo icon MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Only show upcoming events (today and future) by default - Change "Créer un événement" button to #804EEC purple - Replace MapPin icon with the tablo's colored initial avatar to show which project the event belongs to Co-Authored-By: Claude Sonnet 4.6 (1M context) --- apps/main/src/pages/planning.tsx | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/apps/main/src/pages/planning.tsx b/apps/main/src/pages/planning.tsx index 438e919..aafec5f 100644 --- a/apps/main/src/pages/planning.tsx +++ b/apps/main/src/pages/planning.tsx @@ -11,7 +11,7 @@ import { SelectValue, } from "@xtablo/ui/components/select"; import { TypographyH3, TypographyH4 } from "@xtablo/ui/components/typography"; -import { ClockIcon, Download, EllipsisVerticalIcon, FolderInputIcon, MapPinIcon, PlusIcon, RefreshCcw, SlidersHorizontalIcon } from "lucide-react"; +import { ClockIcon, Download, EllipsisVerticalIcon, FolderInputIcon, PlusIcon, RefreshCcw, SlidersHorizontalIcon } from "lucide-react"; import { useCallback, useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import { Outlet, useNavigate, useParams, useSearchParams } from "react-router-dom"; @@ -793,13 +793,16 @@ export const PlanningPage = () => { // ── Events card view ────────────────────────────────────────────────────── const renderEventsView = () => { + const today = new Date(); + today.setHours(0, 0, 0, 0); const q = eventsSearchQuery.toLowerCase(); - const filtered = tabloEvents.filter( - (e) => - !q || - e.title?.toLowerCase().includes(q) || - e.description?.toLowerCase().includes(q) - ); + const filtered = tabloEvents.filter((e) => { + const eventDate = e.start_date ? new Date(e.start_date + "T00:00:00") : null; + const isUpcoming = !eventDate || eventDate >= today; + const matchesSearch = + !q || e.title?.toLowerCase().includes(q) || e.description?.toLowerCase().includes(q); + return isUpcoming && matchesSearch; + }); const months = ["JAN", "FÉV", "MAR", "AVR", "MAI", "JUN", "JUL", "AOÛ", "SEP", "OCT", "NOV", "DÉC"]; @@ -817,7 +820,7 @@ export const PlanningPage = () => { navigate(`/planning/create?date=${currentDate.toISOString()}${selectedTabloId !== "all" ? `&tablo_id=${selectedTabloId}` : ""}`); }} disabled={isReadOnly} - className="flex items-center gap-2 px-5 py-3 bg-primary text-white rounded-xl hover:bg-primary/90 transition-colors font-medium shadow-sm disabled:opacity-50" + className="flex items-center gap-2 px-5 py-3 bg-[#804EEC] hover:bg-[#6f3fd4] text-white rounded-xl transition-colors font-medium shadow-sm disabled:opacity-50" > {t("planning:createEvent")} @@ -919,7 +922,11 @@ export const PlanningPage = () => { )} {event.tablo_name && (
- +
+ {event.tablo_name.charAt(0).toUpperCase()} +
{event.tablo_name}
)}