(null);
+
+ useEffect(() => {
+ const day = new Date().getDate();
+ generateFaviconDataUrl(day).then(setFaviconUrl);
+ }, []);
+
+ return faviconUrl;
+}
diff --git a/src/frontend/apps/calendars/src/pages/_app.tsx b/src/frontend/apps/calendars/src/pages/_app.tsx
index 95a5508..451bbc9 100644
--- a/src/frontend/apps/calendars/src/pages/_app.tsx
+++ b/src/frontend/apps/calendars/src/pages/_app.tsx
@@ -32,6 +32,7 @@ import {
useCunninghamTheme,
} from "@/features/ui/cunningham/useCunninghamTheme";
import { FeedbackFooterMobile } from "@/features/feedback/Feedback";
+import { useDynamicFavicon } from "@/features/ui/hooks/useDynamicFavicon";
export type NextPageWithLayout = NextPage
& {
getLayout?: (page: ReactElement) => ReactNode;
@@ -115,16 +116,15 @@ const MyAppInner = ({ Component, pageProps }: AppPropsWithLayout) => {
const { t, i18n } = useTranslation();
const { theme } = useAppContext();
const themeTokens = useCunninghamTheme();
+ const dynamicFavicon = useDynamicFavicon();
+ const faviconHref =
+ dynamicFavicon || removeQuotes(themeTokens.components.favicon.src);
return (
<>
{t("app_title")}
-
+