Files
Homarr/src/components/layout/header/SettingsMenu.tsx

56 lines
1.8 KiB
TypeScript
Raw Normal View History

2023-01-03 19:49:25 +09:00
import { ActionIcon, Badge, Menu } from '@mantine/core';
2022-12-04 18:20:25 +01:00
import { useDisclosure } from '@mantine/hooks';
import { IconInfoCircle, IconMenu2, IconSettings } from '@tabler/icons';
2022-12-20 11:34:07 +09:00
import { useTranslation } from 'next-i18next';
2022-12-04 18:45:14 +01:00
import { AboutModal } from '../../About/AboutModal';
2022-12-04 18:20:25 +01:00
import { SettingsDrawer } from '../../Settings/SettingsDrawer';
import { ColorSchemeSwitch } from './SettingsMenu/ColorSchemeSwitch';
export function SettingsMenu({ newVersionAvailable }: { newVersionAvailable: string }) {
2022-12-04 18:20:25 +01:00
const [drawerOpened, drawer] = useDisclosure(false);
2022-12-20 11:34:07 +09:00
const { t } = useTranslation('common');
2022-12-04 18:45:14 +01:00
const [aboutModalOpened, aboutModal] = useDisclosure(false);
2022-12-04 18:20:25 +01:00
return (
<>
<Menu width={250}>
<Menu.Target>
<ActionIcon variant="default" radius="md" size="xl" color="blue">
<IconMenu2 />
</ActionIcon>
</Menu.Target>
<Menu.Dropdown>
<ColorSchemeSwitch />
<Menu.Divider />
<Menu.Item icon={<IconSettings strokeWidth={1.2} size={18} />} onClick={drawer.open}>
{t('sections.settings')}
</Menu.Item>
<Menu.Item
icon={<IconInfoCircle strokeWidth={1.2} size={18} />}
rightSection={
newVersionAvailable && (
<Badge variant="light" color="blue">
New
</Badge>
)
}
onClick={() => aboutModal.open()}
>
{t('about')}
</Menu.Item>
</Menu.Dropdown>
</Menu>
<SettingsDrawer
opened={drawerOpened}
closeDrawer={drawer.close}
newVersionAvailable={newVersionAvailable}
/>
<AboutModal
opened={aboutModalOpened}
closeModal={aboutModal.close}
newVersionAvailable={newVersionAvailable}
/>
2022-12-04 18:20:25 +01:00
</>
);
}