feat(admin,admin-ui,medusa): Add Medusa Admin plugin (#3334)
This commit is contained in:
committed by
GitHub
parent
d6b1ad1ccd
commit
40de54b010
@@ -0,0 +1,75 @@
|
||||
import * as DropdownMenu from "@radix-ui/react-dropdown-menu"
|
||||
import { useAdminDeleteSession, useAdminGetSession } from "medusa-react"
|
||||
import React from "react"
|
||||
import { useNavigate } from "react-router-dom"
|
||||
import useNotification from "../../../hooks/use-notification"
|
||||
import { getErrorMessage } from "../../../utils/error-messages"
|
||||
import Avatar from "../../atoms/avatar"
|
||||
import Button from "../../fundamentals/button"
|
||||
import GearIcon from "../../fundamentals/icons/gear-icon"
|
||||
import SignOutIcon from "../../fundamentals/icons/log-out-icon"
|
||||
|
||||
const UserMenu: React.FC = () => {
|
||||
const navigate = useNavigate()
|
||||
|
||||
const { user, isLoading } = useAdminGetSession()
|
||||
const { mutate } = useAdminDeleteSession()
|
||||
|
||||
const notification = useNotification()
|
||||
|
||||
const logOut = () => {
|
||||
mutate(undefined, {
|
||||
onSuccess: () => {
|
||||
navigate("/login")
|
||||
},
|
||||
onError: (err) => {
|
||||
notification("Failed to log out", getErrorMessage(err), "error")
|
||||
},
|
||||
})
|
||||
}
|
||||
return (
|
||||
<div className="h-large w-large">
|
||||
<DropdownMenu.Root>
|
||||
<DropdownMenu.Trigger asChild disabled={isLoading}>
|
||||
<div className="h-full w-full cursor-pointer">
|
||||
<Avatar
|
||||
user={{ ...user }}
|
||||
isLoading={isLoading}
|
||||
color="bg-fuschia-40"
|
||||
/>
|
||||
</div>
|
||||
</DropdownMenu.Trigger>
|
||||
<DropdownMenu.Content
|
||||
sideOffset={12}
|
||||
side="bottom"
|
||||
className="z-30 ml-large min-w-[200px] rounded-rounded border border-grey-20 bg-grey-0 p-xsmall shadow-dropdown"
|
||||
>
|
||||
<DropdownMenu.Item className="mb-1 outline-none">
|
||||
<Button
|
||||
variant="ghost"
|
||||
size="small"
|
||||
className={"w-full justify-start"}
|
||||
onClick={() => navigate("/a/settings")}
|
||||
>
|
||||
<GearIcon />
|
||||
Settings
|
||||
</Button>
|
||||
</DropdownMenu.Item>
|
||||
<DropdownMenu.Item className="outline-none">
|
||||
<Button
|
||||
variant="ghost"
|
||||
size="small"
|
||||
className={"w-full justify-start text-rose-50"}
|
||||
onClick={() => logOut()}
|
||||
>
|
||||
<SignOutIcon size={20} />
|
||||
Sign out
|
||||
</Button>
|
||||
</DropdownMenu.Item>
|
||||
</DropdownMenu.Content>
|
||||
</DropdownMenu.Root>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
export default UserMenu
|
||||
Reference in New Issue
Block a user