From 396acf3bbbe00a192cb0ea0a9ccf91b1d8d2850b Mon Sep 17 00:00:00 2001 From: Fuwn <50817549+Fuwn@users.noreply.github.com> Date: Sat, 24 Jan 2026 13:09:50 +0000 Subject: Initial commit Created from https://vercel.com/new --- src/app/share/[...shareId]/Footer.tsx | 12 ++++++++++ src/app/share/[...shareId]/Header.tsx | 24 +++++++++++++++++++ src/app/share/[...shareId]/SharePage.tsx | 41 ++++++++++++++++++++++++++++++++ src/app/share/[...shareId]/page.tsx | 7 ++++++ 4 files changed, 84 insertions(+) create mode 100644 src/app/share/[...shareId]/Footer.tsx create mode 100644 src/app/share/[...shareId]/Header.tsx create mode 100644 src/app/share/[...shareId]/SharePage.tsx create mode 100644 src/app/share/[...shareId]/page.tsx (limited to 'src/app/share') diff --git a/src/app/share/[...shareId]/Footer.tsx b/src/app/share/[...shareId]/Footer.tsx new file mode 100644 index 0000000..f294862 --- /dev/null +++ b/src/app/share/[...shareId]/Footer.tsx @@ -0,0 +1,12 @@ +import { Row, Text } from '@umami/react-zen'; +import { CURRENT_VERSION, HOMEPAGE_URL } from '@/lib/constants'; + +export function Footer() { + return ( + + + umami {`v${CURRENT_VERSION}`} + + + ); +} diff --git a/src/app/share/[...shareId]/Header.tsx b/src/app/share/[...shareId]/Header.tsx new file mode 100644 index 0000000..d7b7dcb --- /dev/null +++ b/src/app/share/[...shareId]/Header.tsx @@ -0,0 +1,24 @@ +import { Icon, Row, Text, ThemeButton } from '@umami/react-zen'; +import { LanguageButton } from '@/components/input/LanguageButton'; +import { PreferencesButton } from '@/components/input/PreferencesButton'; +import { Logo } from '@/components/svg'; + +export function Header() { + return ( + + + + + + + umami + + + + + + + + + ); +} diff --git a/src/app/share/[...shareId]/SharePage.tsx b/src/app/share/[...shareId]/SharePage.tsx new file mode 100644 index 0000000..7ed0667 --- /dev/null +++ b/src/app/share/[...shareId]/SharePage.tsx @@ -0,0 +1,41 @@ +'use client'; +import { Column, useTheme } from '@umami/react-zen'; +import { useEffect } from 'react'; +import { WebsiteHeader } from '@/app/(main)/websites/[websiteId]/WebsiteHeader'; +import { WebsitePage } from '@/app/(main)/websites/[websiteId]/WebsitePage'; +import { WebsiteProvider } from '@/app/(main)/websites/WebsiteProvider'; +import { PageBody } from '@/components/common/PageBody'; +import { useShareTokenQuery } from '@/components/hooks'; +import { Footer } from './Footer'; +import { Header } from './Header'; + +export function SharePage({ shareId }) { + const { shareToken, isLoading } = useShareTokenQuery(shareId); + const { setTheme } = useTheme(); + + useEffect(() => { + const url = new URL(window?.location?.href); + const theme = url.searchParams.get('theme'); + + if (theme === 'light' || theme === 'dark') { + setTheme(theme); + } + }, []); + + if (isLoading || !shareToken) { + return null; + } + + return ( + + +
+ + + + +