import { useAdminStore } from "medusa-react" import React, { useState } from "react" import { useTranslation } from "react-i18next" import { useFeatureFlag } from "../../../providers/feature-flag-provider" import { useRoutes } from "../../../providers/route-provider" import BuildingsIcon from "../../fundamentals/icons/buildings-icon" import CartIcon from "../../fundamentals/icons/cart-icon" import CashIcon from "../../fundamentals/icons/cash-icon" import GearIcon from "../../fundamentals/icons/gear-icon" import GiftIcon from "../../fundamentals/icons/gift-icon" import SaleIcon from "../../fundamentals/icons/sale-icon" import SquaresPlus from "../../fundamentals/icons/squares-plus" import SwatchIcon from "../../fundamentals/icons/swatch-icon" import TagIcon from "../../fundamentals/icons/tag-icon" import UsersIcon from "../../fundamentals/icons/users-icon" import SidebarMenuItem from "../../molecules/sidebar-menu-item" import UserMenu from "../../molecules/user-menu" const ICON_SIZE = 20 const Sidebar: React.FC = () => { const { t } = useTranslation() const [currentlyOpen, setCurrentlyOpen] = useState(-1) const { isFeatureEnabled } = useFeatureFlag() const { store } = useAdminStore() const { getLinks } = useRoutes() const triggerHandler = () => { const id = triggerHandler.id++ return { open: currentlyOpen === id, handleTriggerClick: () => setCurrentlyOpen(id), } } // We store the `id` counter on the function object, as a state creates // infinite updates, and we do not want the variable to be free floating. triggerHandler.id = 0 const inventoryEnabled = isFeatureEnabled("inventoryService") && isFeatureEnabled("stockLocationService") return (
{t("sidebar-store", "Store")} {store?.name}
} triggerHandler={triggerHandler} text={t("sidebar-orders", "Orders")} /> } text={t("sidebar-products", "Products")} triggerHandler={triggerHandler} /> {isFeatureEnabled("product_categories") && ( } text={t("sidebar-categories", "Categories")} triggerHandler={triggerHandler} /> )} } triggerHandler={triggerHandler} text={t("sidebar-customers", "Customers")} /> {inventoryEnabled && ( } triggerHandler={triggerHandler} text={t("sidebar-inventory", "Inventory")} /> )} } triggerHandler={triggerHandler} text={t("sidebar-discounts", "Discounts")} /> } triggerHandler={triggerHandler} text={t("sidebar-gift-cards", "Gift Cards")} /> } triggerHandler={triggerHandler} text={t("sidebar-pricing", "Pricing")} /> {getLinks().map(({ path, label, icon }, index) => { const cleanLink = path.replace("/a/", "") const Icon = icon ? icon : SquaresPlus return ( : } triggerHandler={triggerHandler} text={label} /> ) })} } triggerHandler={triggerHandler} text={t("sidebar-settings", "Settings")} />
) } export default Sidebar