"use client"; import { useCallback, useState } from "react"; import ConfirmDialog from "@/components/ConfirmDialog"; import useUnsavedGuard from "@/hooks/useUnsavedGuard"; import BasicIdentityPanel from "./BasicIdentityPanel"; import BrandSeoPanel from "./BrandSeoPanel"; import FooterLinksPanel from "./FooterLinksPanel"; import HeaderNavPanel from "./HeaderNavPanel"; import MobileTabBarPanel from "./MobileTabBarPanel"; import UrlStylePanel from "./UrlStylePanel"; import type { PublicSettings } from "@/lib/api"; export default function BasicSettings({ initial }: { initial: PublicSettings }) { const [live, setLive] = useState(initial); const [basicDirty, setBasicDirty] = useState(false); const [brandDirty, setBrandDirty] = useState(false); const [seoDirty, setSeoDirty] = useState(false); const [urlStyleDirty, setUrlStyleDirty] = useState(false); const [mobileTabsDirty, setMobileTabsDirty] = useState(false); const [headerNavDirty, setHeaderNavDirty] = useState(false); const dirty = basicDirty || brandDirty || seoDirty || urlStyleDirty || mobileTabsDirty || headerNavDirty; const leave = useUnsavedGuard(dirty); const onBasicDirty = useCallback((d: boolean) => setBasicDirty(d), []); const onBrandDirty = useCallback((d: boolean) => setBrandDirty(d), []); const onSeoDirty = useCallback((d: boolean) => setSeoDirty(d), []); const onUrlStyleDirty = useCallback((d: boolean) => setUrlStyleDirty(d), []); const onMobileTabsDirty = useCallback((d: boolean) => setMobileTabsDirty(d), []); const onHeaderNavDirty = useCallback((d: boolean) => setHeaderNavDirty(d), []); return (