saleor-dashboard/src/components/Sidebar/menu/SingleItem.tsx
Patryk Andrzejewski 3789f5bb52
New macaw ui (#3069)
Co-authored-by: Krzysztof Żuraw <9116238+krzysztofzuraw@users.noreply.github.com>
Co-authored-by: Michał Droń <dron.official@yahoo.com>
Co-authored-by: Paweł Chyła <chyla1988@gmail.com>
2023-02-20 16:21:28 +01:00

52 lines
1.3 KiB
TypeScript

import {
extensionMountPoints,
useExtensions,
} from "@dashboard/apps/useExtensions";
import { Box, List, sprinkles, Text } from "@saleor/macaw-ui/next";
import React from "react";
import { Link } from "react-router-dom";
import { SidebarMenuItem } from "./types";
import { getMenuItemExtension, isMenuActive } from "./utils";
interface Props {
menuItem: SidebarMenuItem;
}
export const SingleItem: React.FC<Props> = ({ menuItem }) => {
const extensions = useExtensions(extensionMountPoints.NAVIGATION_SIDEBAR);
const active = isMenuActive(location.pathname, menuItem);
const handleMenuItemClick = () => {
const extension = getMenuItemExtension(extensions, menuItem.id);
if (extension) {
extension.open();
return;
}
};
return (
<List.Item
borderRadius={3}
active={active}
onClick={handleMenuItemClick}
data-test-id={`menu-item-label-${menuItem.id}`}
>
<Link
to={menuItem.url}
className={sprinkles({
paddingY: 4,
paddingX: 5,
display: "block",
width: "100%",
})}
>
<Box display="flex" alignItems="center" gap={6}>
{menuItem.icon}
<Text size="small" variant="bodyEmp">
{menuItem.label}
</Text>
</Box>
</Link>
</List.Item>
);
};