| 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> | |
| ); | |
| }; | |