diff --git a/apps/ui/public/apple-touch-icon.png b/apps/ui/public/apple-touch-icon.png index ca9f0c05d..1adf380a8 100644 Binary files a/apps/ui/public/apple-touch-icon.png and b/apps/ui/public/apple-touch-icon.png differ diff --git a/apps/ui/public/favicon.ico b/apps/ui/public/favicon.ico index 1802a1e76..1ec871126 100644 Binary files a/apps/ui/public/favicon.ico and b/apps/ui/public/favicon.ico differ diff --git a/apps/ui/public/icon-192-maskable.png b/apps/ui/public/icon-192-maskable.png index 77f8b4e16..dee3d8ee8 100644 Binary files a/apps/ui/public/icon-192-maskable.png and b/apps/ui/public/icon-192-maskable.png differ diff --git a/apps/ui/public/icon-192.png b/apps/ui/public/icon-192.png index d93cce677..4348003a5 100644 Binary files a/apps/ui/public/icon-192.png and b/apps/ui/public/icon-192.png differ diff --git a/apps/ui/public/icon-512-maskable.png b/apps/ui/public/icon-512-maskable.png index 6ebd1afa6..e4a984849 100644 Binary files a/apps/ui/public/icon-512-maskable.png and b/apps/ui/public/icon-512-maskable.png differ diff --git a/apps/ui/public/icon-512.png b/apps/ui/public/icon-512.png index c92cd0d4e..68e0da972 100644 Binary files a/apps/ui/public/icon-512.png and b/apps/ui/public/icon-512.png differ diff --git a/apps/ui/public/manifest.json b/apps/ui/public/manifest.json index b1a10000e..714189383 100644 --- a/apps/ui/public/manifest.json +++ b/apps/ui/public/manifest.json @@ -32,6 +32,6 @@ ], "start_url": "/", "display": "standalone", - "background_color": "#ffffff", - "theme_color": "#000000" + "background_color": "#f3f3f7", + "theme_color": "#5b5bf5" } diff --git a/apps/ui/src/App.tsx b/apps/ui/src/App.tsx index 0f888b117..17709c9d8 100644 --- a/apps/ui/src/App.tsx +++ b/apps/ui/src/App.tsx @@ -26,7 +26,7 @@ import { usePlatform } from "./hooks/use-platform"; import { setupHttp } from "./utils/http"; import { getConfig } from "./api/config"; import { initGoEvents, onConfigChanged } from "./api/events"; -import { DownloadFilter } from "@mediago/shared-common"; +import { AppTheme, DownloadFilter } from "@mediago/shared-common"; import { useAuth } from "./hooks/use-auth"; import type { Locale } from "antd/es/locale"; @@ -37,6 +37,7 @@ const SettingPage = lazy(() => import("./pages/setting-page")); const ConverterPage = lazy(() => import("./pages/converter-page")); const SigninPage = lazy(() => import("./pages/signin-page")); const OverlayDialog = lazy(() => import("./pages/overlay-dialog")); +const ShareRoute = lazy(() => import("./pages/share")); function getAlgorithm(appTheme: "dark" | "light") { return appTheme === "dark" @@ -65,7 +66,9 @@ const App: FC = () => { useShallow(updateSelector), ); const { setAppStore } = useAppStore(useShallow(setAppStoreSelector)); - const { language } = useAppStore(useShallow(appStoreSelector)); + const { language, theme: appTheme } = useAppStore( + useShallow(appStoreSelector), + ); const { setBrowserStore } = useBrowserStore(useShallow(setBrowserSelector)); const { theme, setTheme } = useSessionStore(useShallow(themeSelector)); const [appLocale, setAppLocale] = useState(); @@ -75,14 +78,6 @@ const App: FC = () => { setAppLocale(getAntdLocale(resolveAppLanguage(language))); }, [language]); - const themeChange = useMemoizedFn((event: MediaQueryListEvent) => { - if (event.matches) { - setTheme("dark"); - } else { - setTheme("light"); - } - }); - // 监听config变化 const handleConfigChanged = useMemoizedFn( (_event: unknown, data: { key: string; value: unknown }) => { @@ -179,20 +174,25 @@ const App: FC = () => { } }, []); + // Resolve theme (system/light/dark) -> Tailwind `.dark` class + AntD algorithm. useEffect(() => { - const isDarkTheme = matchMedia("(prefers-color-scheme: dark)"); - isDarkTheme.addEventListener("change", themeChange); - - if (isDarkTheme.matches) { - setTheme("dark"); - } else { - setTheme("light"); - } - - return () => { - isDarkTheme.removeEventListener("change", themeChange); + const mq = matchMedia("(prefers-color-scheme: dark)"); + const apply = () => { + const resolved = + appTheme === AppTheme.System + ? mq.matches + ? "dark" + : "light" + : appTheme === AppTheme.Dark + ? "dark" + : "light"; + setTheme(resolved); + document.documentElement.classList.toggle("dark", resolved === "dark"); }; - }, []); + apply(); + mq.addEventListener("change", apply); + return () => mq.removeEventListener("change", apply); + }, [appTheme, setTheme]); if (!adapterReady) { return ; @@ -202,7 +202,15 @@ const App: FC = () => { @@ -254,6 +262,14 @@ const App: FC = () => { } /> + }> + + + } + /> 404} /> diff --git a/apps/ui/src/components/download-form.tsx b/apps/ui/src/components/download-form.tsx index c5a559581..14a948166 100644 --- a/apps/ui/src/components/download-form.tsx +++ b/apps/ui/src/components/download-form.tsx @@ -251,7 +251,8 @@ export default forwardRef( open={modalOpen} key={isEdit ? "edit" : "new"} title={isEdit ? t("editDownload") : t("newDownload")} - width={500} + width="min(500px, calc(100vw - 24px))" + className="mediago-download-modal" onCancel={() => setModalOpen(false)} afterOpenChange={afterOpenChange} destroyOnHidden={destroyOnClose} @@ -288,9 +289,11 @@ export default forwardRef(