feat: dynamic site name

This commit is contained in:
shinya
2025-07-01 01:11:19 +08:00
parent 7d6c7e5dd0
commit a7b431823e
7 changed files with 63 additions and 23 deletions

View File

@@ -4,12 +4,13 @@ import { Inter } from 'next/font/google';
import './globals.css';
import AuthProvider from '../components/AuthProvider';
import { SiteProvider } from '../components/SiteProvider';
import { ThemeProvider } from '../components/ThemeProvider';
const inter = Inter({ subsets: ['latin'] });
export const metadata: Metadata = {
title: 'MoonTV',
title: process.env.SITE_NAME || 'MoonTV',
description: '影视聚合',
manifest: '/manifest.json',
};
@@ -27,6 +28,8 @@ export default function RootLayout({
}: {
children: React.ReactNode;
}) {
const siteName = process.env.SITE_NAME || 'MoonTV';
return (
<html lang='zh-CN' suppressHydrationWarning>
<body
@@ -38,7 +41,9 @@ export default function RootLayout({
enableSystem
disableTransitionOnChange
>
<AuthProvider>{children}</AuthProvider>
<AuthProvider>
<SiteProvider siteName={siteName}>{children}</SiteProvider>
</AuthProvider>
</ThemeProvider>
</body>
</html>

View File

@@ -3,6 +3,7 @@
import { useRouter, useSearchParams } from 'next/navigation';
import { Suspense, useState } from 'react';
import { useSite } from '@/components/SiteProvider';
import { ThemeToggle } from '@/components/ThemeToggle';
function LoginPageClient() {
@@ -11,6 +12,7 @@ function LoginPageClient() {
const [password, setPassword] = useState('');
const [error, setError] = useState<string | null>(null);
const [loading, setLoading] = useState(false);
const { siteName } = useSite();
const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {
e.preventDefault();
@@ -52,7 +54,7 @@ function LoginPageClient() {
</div>
<div className='relative z-10 w-full max-w-md rounded-3xl bg-gradient-to-b from-white/90 via-white/70 to-white/40 dark:from-zinc-900/90 dark:via-zinc-900/70 dark:to-zinc-900/40 backdrop-blur-xl shadow-2xl p-10 dark:border dark:border-zinc-800'>
<h1 className='text-green-600 tracking-tight text-center text-3xl font-extrabold mb-8 bg-clip-text drop-shadow-sm'>
MoonTV
{siteName}
</h1>
<form onSubmit={handleSubmit} className='space-y-8'>
<div>