Files
Homarr/components/Settings/SettingsMenu.tsx
Thomas "ajnart" Camlong 65b4d35350 Move types
2022-05-01 14:46:45 +02:00

102 lines
2.6 KiB
TypeScript

import { ActionIcon, Group, Modal, Switch, Title, Text, Tooltip, TextInput } from '@mantine/core';
import { showNotification } from '@mantine/notifications';
import { motion } from 'framer-motion';
import { CSSProperties, useEffect, useState } from 'react';
import { Mail, Settings as SettingsIcon, X } from 'tabler-icons-react';
import { loadSettings } from '../../tools/settings';
import { Settings } from '../../tools/types';
import SaveConfigComponent from '../Config/SaveConfig';
function SettingsMenu(props: any) {
const [config, setConfig] = useState<Settings>({
searchUrl: 'https://www.google.com/search?q=',
searchBar: true,
});
useEffect(() => {
const config = loadSettings('settings');
if (config) {
setConfig(config);
}
}, []);
return (
<Group direction="column" grow>
<TextInput
label="Search bar querry url"
defaultValue={config.searchUrl}
onChange={(e) => {
setConfig({
...config,
searchUrl: e.target.value,
});
localStorage.setItem(
'settings',
JSON.stringify({
...config,
searchUrl: e.target.value,
})
);
}}
/>
<Group direction="column">
<Switch
onChange={(e) => {
setConfig({
...config,
searchBar: e.target.checked,
});
localStorage.setItem(
'settings',
JSON.stringify({
...config,
searchBar: e.target.checked,
})
);
}}
checked={config.searchBar}
label="Enable search bar"
/>
</Group>
<SaveConfigComponent />
<Text
style={{
alignSelf: 'center',
fontSize: '0.75rem',
textAlign: 'center',
color: '#a0aec0',
}}
>
tip: You can upload your config file by dragging and dropping it into the page
</Text>
</Group>
);
}
export function SettingsMenuButton(props: any) {
const [opened, setOpened] = useState(false);
return (
<>
<Modal
size="md"
title={<Title order={3}>Settings</Title>}
opened={props.opened || opened}
onClose={() => setOpened(false)}
>
<SettingsMenu />
</Modal>
<ActionIcon
variant="default"
radius="xl"
size="xl"
color="blue"
style={props.style}
onClick={() => setOpened(true)}
>
<Tooltip label="Settings">
<SettingsIcon />
</Tooltip>
</ActionIcon>
</>
);
}