From 3fa4e3f4eca40e11254b7224d0db6789c0e2366b Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Tue, 22 Apr 2025 15:54:55 -0500 Subject: [PATCH] refactor calendar to use new hook --- web/src/components/ui/calendar.tsx | 55 ++---------------------------- 1 file changed, 2 insertions(+), 53 deletions(-) diff --git a/web/src/components/ui/calendar.tsx b/web/src/components/ui/calendar.tsx index bddde6711e..e22f1b3b50 100644 --- a/web/src/components/ui/calendar.tsx +++ b/web/src/components/ui/calendar.tsx @@ -1,69 +1,18 @@ -import { useState, useEffect } from "react"; import { ChevronLeft, ChevronRight } from "lucide-react"; import { DayPicker } from "react-day-picker"; -import { Locale, enUS } from "date-fns/locale"; import { cn } from "@/lib/utils"; import { buttonVariants } from "@/components/ui/button"; -import i18n from "@/utils/i18n"; +import { useDateLocale } from "@/hooks/use-date-locale"; export type CalendarProps = React.ComponentProps; -// Map of locale codes to dynamic import functions -const localeMap: Record Promise> = { - "zh-CN": () => import("date-fns/locale/zh-CN").then((module) => module.zhCN), - es: () => import("date-fns/locale/es").then((module) => module.es), - hi: () => import("date-fns/locale/hi").then((module) => module.hi), - fr: () => import("date-fns/locale/fr").then((module) => module.fr), - ar: () => import("date-fns/locale/ar").then((module) => module.ar), - pt: () => import("date-fns/locale/pt").then((module) => module.pt), - ru: () => import("date-fns/locale/ru").then((module) => module.ru), - de: () => import("date-fns/locale/de").then((module) => module.de), - ja: () => import("date-fns/locale/ja").then((module) => module.ja), - tr: () => import("date-fns/locale/tr").then((module) => module.tr), - it: () => import("date-fns/locale/it").then((module) => module.it), - nl: () => import("date-fns/locale/nl").then((module) => module.nl), - sv: () => import("date-fns/locale/sv").then((module) => module.sv), - cs: () => import("date-fns/locale/cs").then((module) => module.cs), - nb: () => import("date-fns/locale/nb").then((module) => module.nb), - ko: () => import("date-fns/locale/ko").then((module) => module.ko), - vi: () => import("date-fns/locale/vi").then((module) => module.vi), - fa: () => import("date-fns/locale/fa-IR").then((module) => module.faIR), - pl: () => import("date-fns/locale/pl").then((module) => module.pl), - uk: () => import("date-fns/locale/uk").then((module) => module.uk), - he: () => import("date-fns/locale/he").then((module) => module.he), - el: () => import("date-fns/locale/el").then((module) => module.el), - ro: () => import("date-fns/locale/ro").then((module) => module.ro), - hu: () => import("date-fns/locale/hu").then((module) => module.hu), - fi: () => import("date-fns/locale/fi").then((module) => module.fi), - da: () => import("date-fns/locale/da").then((module) => module.da), - sk: () => import("date-fns/locale/sk").then((module) => module.sk), -}; - function Calendar({ className, classNames, showOutsideDays = true, ...props }: CalendarProps) { - const [locale, setLocale] = useState(enUS); - - useEffect(() => { - const loadLocale = async () => { - if (i18n.language === "en") { - setLocale(enUS); - return; - } - - const localeLoader = localeMap[i18n.language]; - if (localeLoader) { - const loadedLocale = await localeLoader(); - setLocale(loadedLocale); - } else { - setLocale(enUS); - } - }; - loadLocale(); - }, [i18n.language]); + const locale = useDateLocale(); return (