"use client" import { useState, useEffect } from "react" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { Label } from "@/components/ui/label" import { Input } from "@/components/ui/input" import { Button } from "@/components/ui/button" import { Switch } from "@/components/ui/switch" import { useStore } from "@/lib/store" import { Save, Globe, Menu, FileText, Palette } from "lucide-react" const defaultSiteConfig = { siteName: "卡若日记", siteTitle: "一场SOUL的创业实验场", siteDescription: "来自Soul派对房的真实商业故事", logo: "/logo.png", favicon: "/favicon.ico", primaryColor: "#00CED1", } const defaultMenuConfig = { home: { enabled: true, label: "首页" }, chapters: { enabled: true, label: "目录" }, match: { enabled: true, label: "匹配" }, my: { enabled: true, label: "我的" }, } const defaultPageConfig = { homeTitle: "一场SOUL的创业实验场", homeSubtitle: "来自Soul派对房的真实商业故事", chaptersTitle: "我要看", matchTitle: "语音匹配", myTitle: "我的", aboutTitle: "关于作者", } export default function SiteConfigPage() { const { settings, updateSettings } = useStore() const [localSettings, setLocalSettings] = useState({ siteConfig: { ...defaultSiteConfig }, menuConfig: { ...defaultMenuConfig }, pageConfig: { ...defaultPageConfig }, }) const [saved, setSaved] = useState(false) const [mounted, setMounted] = useState(false) useEffect(() => { setMounted(true) setLocalSettings({ siteConfig: { ...defaultSiteConfig, ...settings.siteConfig }, menuConfig: { ...defaultMenuConfig, ...settings.menuConfig }, pageConfig: { ...defaultPageConfig, ...settings.pageConfig }, }) }, [settings.siteConfig, settings.menuConfig, settings.pageConfig]) const handleSave = () => { updateSettings(localSettings) setSaved(true) setTimeout(() => setSaved(false), 2000) } if (!mounted) { return (
) } return (

网站配置

配置网站名称、图标、菜单和页面标题

{/* 网站基础信息 */} 网站基础信息 配置网站名称、标题和描述
setLocalSettings((prev) => ({ ...prev, siteConfig: { ...prev.siteConfig, siteName: e.target.value }, })) } />
setLocalSettings((prev) => ({ ...prev, siteConfig: { ...prev.siteConfig, siteTitle: e.target.value }, })) } />
setLocalSettings((prev) => ({ ...prev, siteConfig: { ...prev.siteConfig, siteDescription: e.target.value }, })) } />
setLocalSettings((prev) => ({ ...prev, siteConfig: { ...prev.siteConfig, logo: e.target.value }, })) } />
setLocalSettings((prev) => ({ ...prev, siteConfig: { ...prev.siteConfig, favicon: e.target.value }, })) } />
{/* 主题颜色 */} 主题颜色 配置网站主题色
setLocalSettings((prev) => ({ ...prev, siteConfig: { ...prev.siteConfig, primaryColor: e.target.value }, })) } /> setLocalSettings((prev) => ({ ...prev, siteConfig: { ...prev.siteConfig, primaryColor: e.target.value }, })) } />
预览
{/* 菜单配置 */} 底部菜单配置 控制底部导航栏菜单的显示和名称 {Object.entries(localSettings.menuConfig).map(([key, config]) => (
setLocalSettings((prev) => ({ ...prev, menuConfig: { ...prev.menuConfig, [key]: { ...config, enabled: checked }, }, })) } /> {key} setLocalSettings((prev) => ({ ...prev, menuConfig: { ...prev.menuConfig, [key]: { ...config, label: e.target.value }, }, })) } />
{config?.enabled ? "显示" : "隐藏"}
))}
{/* 页面标题配置 */} 页面标题配置 配置各个页面的标题和副标题
setLocalSettings((prev) => ({ ...prev, pageConfig: { ...prev.pageConfig, homeTitle: e.target.value }, })) } />
setLocalSettings((prev) => ({ ...prev, pageConfig: { ...prev.pageConfig, homeSubtitle: e.target.value }, })) } />
setLocalSettings((prev) => ({ ...prev, pageConfig: { ...prev.pageConfig, chaptersTitle: e.target.value }, })) } />
setLocalSettings((prev) => ({ ...prev, pageConfig: { ...prev.pageConfig, matchTitle: e.target.value }, })) } />
setLocalSettings((prev) => ({ ...prev, pageConfig: { ...prev.pageConfig, myTitle: e.target.value }, })) } />
setLocalSettings((prev) => ({ ...prev, pageConfig: { ...prev.pageConfig, aboutTitle: e.target.value }, })) } />
) }