"use client"; import { TZDate } from "@date-fns/tz"; import { cn } from "@midday/ui/cn"; import { TabsList, TabsTrigger } from "@midday/ui/tabs"; import { useEffect, useState } from "react"; import { MetricsFilter } from "@/components/metrics/components/metrics-filter"; import { Customize } from "@/components/widgets/customize"; import { useForesightMetricsPrefetch } from "@/hooks/use-foresight-prefetch"; import { useUserQuery } from "@/hooks/use-user"; import { useIsCustomizing } from "./widget-provider"; function getTimeBasedGreeting(timezone?: string): string { const userTimezone = timezone || Intl.DateTimeFormat().resolvedOptions().timeZone; const now = new TZDate(new Date(), userTimezone); const hour = now.getHours(); if (hour >= 5 && hour < 12) { return "Morning"; } if (hour >= 12 && hour < 17) { return "Afternoon"; } return "Evening"; } export function WidgetsHeader() { const { data: user } = useUserQuery(); const isCustomizing = useIsCustomizing(); const [greeting, setGreeting] = useState(() => getTimeBasedGreeting(user?.timezone ?? undefined), ); const { elementRef: metricsTabRef } = useForesightMetricsPrefetch(); useEffect(() => { // Update greeting immediately when user timezone changes setGreeting(getTimeBasedGreeting(user?.timezone ?? undefined)); // Set up interval to update greeting every 5 minutes // This ensures the greeting changes naturally as time passes const interval = setInterval( () => { const newGreeting = getTimeBasedGreeting(user?.timezone ?? undefined); setGreeting(newGreeting); }, 5 * 60 * 1000, ); // 5 minutes return () => clearInterval(interval); }, [user?.timezone]); return (

{greeting} {user?.fullName?.split(" ")[0]},

{isCustomizing ? "drag and drop to arrange your perfect dashboard." : "here's a quick look at how things are going."}

Overview Metrics
); }