feat(admin,admin-ui,medusa): Add Medusa Admin plugin (#3334)

This commit is contained in:
Kasper Fabricius Kristensen
2023-03-03 10:09:16 +01:00
committed by GitHub
parent d6b1ad1ccd
commit 40de54b010
928 changed files with 85441 additions and 384 deletions

View File

@@ -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