mirror of
https://github.com/ajnart/homarr.git
synced 2025-11-07 14:05:49 +01:00
♻️ Improve avatar menu, add avatar menu to manage pages, add default dashboard to user settings schema
This commit is contained in:
@@ -74,6 +74,7 @@ model UserSettings {
|
|||||||
userId String
|
userId String
|
||||||
colorScheme String @default("environment") // environment, light, dark
|
colorScheme String @default("environment") // environment, light, dark
|
||||||
language String @default("en")
|
language String @default("en")
|
||||||
|
defaultDashboard String @default("default")
|
||||||
searchTemplate String @default("https://google.com/search?q=%s")
|
searchTemplate String @default("https://google.com/search?q=%s")
|
||||||
openSearchInNewTab Boolean @default(true)
|
openSearchInNewTab Boolean @default(true)
|
||||||
disablePingPulse Boolean @default(false)
|
disablePingPulse Boolean @default(false)
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ import { useScreenLargerThan } from '~/hooks/useScreenLargerThan';
|
|||||||
import { usePackageAttributesStore } from '~/tools/client/zustands/usePackageAttributesStore';
|
import { usePackageAttributesStore } from '~/tools/client/zustands/usePackageAttributesStore';
|
||||||
|
|
||||||
import { Logo } from '../Logo';
|
import { Logo } from '../Logo';
|
||||||
|
import { MainHeader } from '../new-header/Header';
|
||||||
|
|
||||||
interface MainLayoutProps {
|
interface MainLayoutProps {
|
||||||
children: ReactNode;
|
children: ReactNode;
|
||||||
@@ -56,7 +57,8 @@ export const MainLayout = ({ children }: MainLayoutProps) => {
|
|||||||
|
|
||||||
const screenLargerThanMd = useScreenLargerThan('md');
|
const screenLargerThanMd = useScreenLargerThan('md');
|
||||||
|
|
||||||
const [burgerMenuOpen, { toggle: toggleBurgerMenu, close: closeBurgerMenu }] = useDisclosure(false);
|
const [burgerMenuOpen, { toggle: toggleBurgerMenu, close: closeBurgerMenu }] =
|
||||||
|
useDisclosure(false);
|
||||||
|
|
||||||
const navigationLinks = (
|
const navigationLinks = (
|
||||||
<>
|
<>
|
||||||
@@ -141,53 +143,7 @@ export const MainLayout = ({ children }: MainLayoutProps) => {
|
|||||||
</Navbar.Section>
|
</Navbar.Section>
|
||||||
</Navbar>
|
</Navbar>
|
||||||
}
|
}
|
||||||
header={
|
header={<MainHeader showExperimental logoHref="/manage" />}
|
||||||
<Header height={60 + 30} pb="sm" pt={0}>
|
|
||||||
<Box bg="red" h={30} p={3} px={6}>
|
|
||||||
<Flex h="100%" align="center" columnGap={7}>
|
|
||||||
<IconAlertTriangle color="white" size="1rem" />
|
|
||||||
<Text color="white" lineClamp={1}>
|
|
||||||
This is an experimental feature of Homarr. Please report any issues to the
|
|
||||||
official Homarr team.
|
|
||||||
</Text>
|
|
||||||
</Flex>
|
|
||||||
</Box>
|
|
||||||
<Group spacing="xl" mt="xs" px="md" position="apart" noWrap>
|
|
||||||
<Group noWrap>
|
|
||||||
{!screenLargerThanMd && (
|
|
||||||
<Burger opened={burgerMenuOpen} onClick={toggleBurgerMenu} />
|
|
||||||
)}
|
|
||||||
<UnstyledButton component={Link} href="/manage">
|
|
||||||
<Logo />
|
|
||||||
</UnstyledButton>
|
|
||||||
</Group>
|
|
||||||
<TextInput radius="xl" w={400} placeholder="Search..." variant="filled" />
|
|
||||||
|
|
||||||
<Group noWrap>
|
|
||||||
<UnstyledButton>
|
|
||||||
<Menu>
|
|
||||||
<Menu.Target>
|
|
||||||
<Avatar />
|
|
||||||
</Menu.Target>
|
|
||||||
<Menu.Dropdown>
|
|
||||||
<Menu.Item icon={<IconSun size="1rem" />}>Switch theme</Menu.Item>
|
|
||||||
<Menu.Item icon={<IconUserSearch size="1rem" />}>View Profile</Menu.Item>
|
|
||||||
<Menu.Item icon={<IconDashboard size="1rem" />}>Default Dashboard</Menu.Item>
|
|
||||||
<Menu.Divider />
|
|
||||||
<Menu.Item
|
|
||||||
icon={<IconLogout size="1rem" />}
|
|
||||||
color="red"
|
|
||||||
onClick={() => signOut()}
|
|
||||||
>
|
|
||||||
Logout
|
|
||||||
</Menu.Item>
|
|
||||||
</Menu.Dropdown>
|
|
||||||
</Menu>
|
|
||||||
</UnstyledButton>
|
|
||||||
</Group>
|
|
||||||
</Group>
|
|
||||||
</Header>
|
|
||||||
}
|
|
||||||
footer={
|
footer={
|
||||||
<Footer height={25}>
|
<Footer height={25}>
|
||||||
<Group position="apart" px="md">
|
<Group position="apart" px="md">
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import {
|
|||||||
IconLogout,
|
IconLogout,
|
||||||
IconMoonStars,
|
IconMoonStars,
|
||||||
IconSun,
|
IconSun,
|
||||||
IconUserSearch,
|
IconUserCog,
|
||||||
} from '@tabler/icons-react';
|
} from '@tabler/icons-react';
|
||||||
import { User } from 'next-auth';
|
import { User } from 'next-auth';
|
||||||
import { signOut, useSession } from 'next-auth/react';
|
import { signOut, useSession } from 'next-auth/react';
|
||||||
@@ -37,8 +37,16 @@ export const AvatarMenu = () => {
|
|||||||
</Menu.Item>
|
</Menu.Item>
|
||||||
{sessionData?.user && (
|
{sessionData?.user && (
|
||||||
<>
|
<>
|
||||||
<Menu.Item icon={<IconUserSearch size="1rem" />}>View Profile</Menu.Item>
|
<Menu.Item
|
||||||
<Menu.Item icon={<IconDashboard size="1rem" />}>Default Dashboard</Menu.Item>
|
component={Link}
|
||||||
|
href="/manage/preferences"
|
||||||
|
icon={<IconUserCog size="1rem" />}
|
||||||
|
>
|
||||||
|
Settings
|
||||||
|
</Menu.Item>
|
||||||
|
<Menu.Item component={Link} href="/board" icon={<IconDashboard size="1rem" />}>
|
||||||
|
Default Dashboard
|
||||||
|
</Menu.Item>
|
||||||
<Menu.Divider />
|
<Menu.Divider />
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
|||||||
Reference in New Issue
Block a user