json / src /containers /Toolbar /AccountMenu.tsx
xinnni's picture
Upload 146 files
f909d7c verified
raw
history blame
2.01 kB
import React from "react";
import Link from "next/link";
import { Menu, Avatar, Text } from "@mantine/core";
import { useUser as useSupabaseUser } from "@supabase/auth-helpers-react";
import { VscSignIn, VscFeedback, VscSignOut } from "react-icons/vsc";
import useModal from "src/store/useModal";
import useUser from "src/store/useUser";
import * as Styles from "./styles";
export const AccountMenu = () => {
const user = useSupabaseUser();
const logout = useUser(state => state.logout);
const setVisible = useModal(state => state.setVisible);
return (
<Menu shadow="md" trigger="click" closeOnItemClick={false} withArrow>
<Menu.Target>
<Styles.StyledToolElement>
<Avatar color={user ? "teal" : "indigo"} variant="filled" size={20} radius="xl">
{user && "JC"}
</Avatar>
</Styles.StyledToolElement>
</Menu.Target>
<Menu.Dropdown>
{user ? (
<Menu.Item
leftSection={
<Avatar color="indigo" alt={user.user_metadata?.name} size={20} radius="xl" />
}
onClick={() => setVisible("account")(true)}
closeMenuOnClick
>
<Text size="xs">{user.user_metadata?.name ?? "Account"}</Text>
</Menu.Item>
) : (
<Link href="/sign-in">
<Menu.Item leftSection={<VscSignIn />}>
<Text size="xs">Sign in</Text>
</Menu.Item>
</Link>
)}
{user && (
<>
<Menu.Divider />
<Menu.Item
leftSection={<VscFeedback />}
onClick={() => setVisible("review")(true)}
closeMenuOnClick
>
<Text size="xs">Feedback</Text>
</Menu.Item>
<Menu.Item leftSection={<VscSignOut />} onClick={() => logout()} closeMenuOnClick>
<Text size="xs">Log out</Text>
</Menu.Item>
</>
)}
</Menu.Dropdown>
</Menu>
);
};