// Copyright (c) 2020-2021 Drew Lemmy // This file is part of KristWeb 2 under AGPL-3.0. // Full details: https://github.com/tmpim/KristWeb2/blob/master/LICENSE.txt import { FC } from "react"; import { Menu } from "antd"; import { BugOutlined, GlobalOutlined, ReloadOutlined, SettingOutlined } from "@ant-design/icons"; import { useTranslation } from "react-i18next"; import { Link } from "react-router-dom"; import { PageLayout, PageLayoutProps } from "@layout/PageLayout"; import { SettingsGroup, booleanSetting, integerSetting } from "./SettingsGroup"; import { SettingBoolean } from "./SettingBoolean"; import { getLanguageItems } from "./translations/LanguageItem"; import "./SettingsPage.less"; interface SettingsPageLayoutProps extends PageLayoutProps { pageName?: string; } export const SettingsPageLayout: FC<SettingsPageLayoutProps> = ({ pageName, children, ...rest }) => { return <PageLayout className="settings-page" siteTitleKey="settings.siteTitle" titleKey="settings.title" subTitleKey={pageName ? "settings.subTitle" + pageName : undefined} {...rest} > {children} </PageLayout>; }; export function SettingsPage(): JSX.Element { const { t } = useTranslation(); return <SettingsPageLayout> <Menu mode="inline" className="big-menu" selectable={false}> {/* Language selector */} <Menu.SubMenu key="sub-language" icon={<GlobalOutlined />} title={t("settings.menuLanguage")}> {getLanguageItems()} </Menu.SubMenu> {/* Auto-refresh settings */} <SettingsGroup subKey="AutoRefresh" icon={<ReloadOutlined />} settings={[ booleanSetting("autoRefreshTables"), booleanSetting("autoRefreshAddressPage"), booleanSetting("autoRefreshNamePage") ]} /> {/* Advanced settings */} <SettingsGroup subKey="Advanced" icon={<SettingOutlined />} settings={[ booleanSetting("alwaysIncludeMined"), booleanSetting("copyNameSuffixes"), booleanSetting("addressCopyButtons"), booleanSetting("nameCopyButtons"), booleanSetting("blockHashCopyButtons"), booleanSetting("showRelativeDates"), booleanSetting("showNativeDates"), booleanSetting("transactionDefaultRaw"), integerSetting("defaultPageSize"), booleanSetting("tableHotkeys"), ]} /> {/* Debug settings */} <Menu.SubMenu key="sub-debug" icon={<BugOutlined />} title={t("settings.subMenuDebug")}> {/* Advanced wallet formats */} <Menu.Item key="debug/advancedWalletFormats"> <SettingBoolean setting="walletFormats" titleKey="settings.advancedWalletFormats" /> </Menu.Item> {/* Translations management */} <Menu.Item key="debug/translations"> <Link to="/settings/debug/translations">{t("settings.menuTranslations")}</Link> </Menu.Item> </Menu.SubMenu> </Menu> </SettingsPageLayout>; }