import { useTranslation } from "react-i18next"; import "./index.css"; import { useCallback, useRef, useState } from "react"; import SettingsGroup from "components/settings/SettingsGroup.tsx"; import MenuItem from "components/settings/MenuItem.tsx"; import IconWithText from "components/settings/IconWithText.tsx"; import Title from "components/settings/Title.tsx"; import OpenSourceNote from "components/settings/OpenSourceNote.tsx"; import EnvironmentDetails from "components/settings/EnvironmentDetails.tsx"; function showFrame() { return navigator.userAgent.includes("Mac"); } interface SettingsGroupRefs { [key: string]: HTMLDivElement; } function TitleBar() { const { t } = useTranslation(); if (showFrame()) { return (
{t("settings.title")}
); } else { return (
{t("settings.title")}
{ console.log(window.settingsWindow); window.settingsWindow.close(); }} >
); } } export default function SettingsPage() { const { t } = useTranslation(); const [groupRefs, setGroupRefs] = useState({}); const containerRef = useRef(null); const titleBarRef = useRef(null); const addGroupRef = useCallback((groupName: string, ref: HTMLDivElement) => { setGroupRefs((prevRefs) => { prevRefs[groupName] = ref; return prevRefs; }); }, []); function scrollToGroup(groupName: string) { const key = groupName as keyof typeof groupRefs; console.log(groupRefs[key]); if (!groupRefs[key]) return; containerRef.current!.scrollTop = groupRefs[key].getBoundingClientRect().top - titleBarRef.current!.getBoundingClientRect().height; } return ( <> {t("settings.title")}
scrollToGroup("screen")} /> scrollToGroup("about")} />
<div className="flex"> <p>Nothing yet.</p> </div> </SettingsGroup> <SettingsGroup groupName="about" addGroupRef={addGroupRef}> <Title i18nKey={"settings.about"} /> <IconWithText /> <OpenSourceNote /> <EnvironmentDetails /> </SettingsGroup> </div> </> ); }