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")}
>
);
}