import { useRef } from 'react' import { ActionIcon, Drawer, SegmentedControl, Stack, Text, Tooltip, useMantineColorScheme, useMatches, } from '@mantine/core' import { GearIcon } from '@phosphor-icons/react' import { useNavigate, useSearchParams } from 'react-router' import classes from './SiteSettings.module.css' export function SiteSettings() { const { colorScheme, setColorScheme } = useMantineColorScheme() const size = useMatches({ base: '100%', sm: 'sm' }) const [searchParams, setSearchParams] = useSearchParams() const navigate = useNavigate() const openedHere = useRef(false) const opened = searchParams.get('settings') === 'appearance' function open() { if (opened) return openedHere.current = true setSearchParams((previous) => { const next = new URLSearchParams(previous) next.set('settings', 'appearance') return next }, { preventScrollReset: true }) } function close() { if (openedHere.current) { openedHere.current = false void navigate(-1) return } // 直接访问或刷新设置链接时,关闭抽屉不应离开当前页面。 setSearchParams((previous) => { const next = new URLSearchParams(previous) next.delete('settings') return next }, { replace: true, preventScrollReset: true }) } return ( <> 外观模式 { if (value === 'light' || value === 'dark' || value === 'auto') setColorScheme(value) }} /> 设置即时生效并自动保存。选择“跟随系统”时,外观随设备主题变化。 ) }