import { attributeListUrl } from "@saleor/attributes/urls"; import { useUser } from "@saleor/auth"; import { channelsListUrl } from "@saleor/channels/urls"; import { WindowTitle } from "@saleor/components/WindowTitle"; import { APP_VERSION as dashboardVersion } from "@saleor/config"; import { CustomAppUrls } from "@saleor/custom-apps/urls"; import { PermissionEnum } from "@saleor/graphql"; import useShop from "@saleor/hooks/useShop"; import Attributes from "@saleor/icons/Attributes"; import Channels from "@saleor/icons/Channels"; import Miscellaneous from "@saleor/icons/Miscellaneous"; import Navigation from "@saleor/icons/Navigation"; import PageTypes from "@saleor/icons/PageTypes"; import PermissionGroups from "@saleor/icons/PermissionGroups"; import Plugins from "@saleor/icons/Plugins"; import ProductTypes from "@saleor/icons/ProductTypes"; import ShippingMethods from "@saleor/icons/ShippingMethods"; import SiteSettings from "@saleor/icons/SiteSettings"; import StaffMembers from "@saleor/icons/StaffMembers"; import Taxes from "@saleor/icons/Taxes"; import Warehouses from "@saleor/icons/Warehouses"; import { sectionNames } from "@saleor/intl"; import { maybe } from "@saleor/misc"; import { menuListUrl } from "@saleor/navigation/urls"; import { pageTypeListUrl } from "@saleor/pageTypes/urls"; import { permissionGroupListUrl } from "@saleor/permissionGroups/urls"; import { pluginListUrl } from "@saleor/plugins/urls"; import { productTypeListUrl } from "@saleor/productTypes/urls"; import { shippingZonesListUrl } from "@saleor/shipping/urls"; import { siteSettingsUrl } from "@saleor/siteSettings/urls"; import { staffListUrl } from "@saleor/staff/urls"; import { taxConfigurationListUrl } from "@saleor/taxes/urls"; import { warehouseSection } from "@saleor/warehouses/urls"; import React from "react"; import { IntlShape, useIntl } from "react-intl"; import ConfigurationPage from "./ConfigurationPage"; import { MenuSection } from "./types"; export function createConfigurationMenu(intl: IntlShape): MenuSection[] { return [ { label: intl.formatMessage({ id: "HP6m+q", defaultMessage: "Attributes and Product Types", }), menuItems: [ { description: intl.formatMessage({ id: "19/lwV", defaultMessage: "Determine attributes used to create product types", }), icon: , permissions: [ PermissionEnum.MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES, PermissionEnum.MANAGE_PAGE_TYPES_AND_ATTRIBUTES, ], title: intl.formatMessage(sectionNames.attributes), url: attributeListUrl(), testId: "configuration-menu-attributes", }, { description: intl.formatMessage({ id: "n0RwMK", defaultMessage: "Define types of products you sell", }), icon: , permissions: [PermissionEnum.MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES], title: intl.formatMessage(sectionNames.productTypes), url: productTypeListUrl(), testId: "configuration-menu-product-types", }, ], }, { label: intl.formatMessage({ id: "jFrdB5", defaultMessage: "Product Settings", }), menuItems: [ { description: intl.formatMessage({ id: "EIULpW", defaultMessage: "Manage how your store charges tax", }), icon: , title: intl.formatMessage(sectionNames.taxes), url: taxConfigurationListUrl(), testId: "configuration-menu-taxes", }, ], }, { label: intl.formatMessage({ id: "UN+yTt", defaultMessage: "Staff Settings", }), menuItems: [ { description: intl.formatMessage({ id: "RQUkVW", defaultMessage: "Manage your employees and their permissions", }), icon: , permissions: [PermissionEnum.MANAGE_STAFF], title: intl.formatMessage(sectionNames.staff), url: staffListUrl(), testId: "configuration-menu-staff", }, { description: intl.formatMessage({ id: "ivJ1qt", defaultMessage: "Manage your permission groups and their permissions", }), icon: , permissions: [PermissionEnum.MANAGE_STAFF], title: intl.formatMessage(sectionNames.permissionGroups), url: permissionGroupListUrl(), testId: "configuration-menu-permission-groups", }, ], }, { label: intl.formatMessage({ id: "gTr0qE", defaultMessage: "Shipping Settings", }), menuItems: [ { description: intl.formatMessage({ id: "zxs6G3", defaultMessage: "Manage how you ship out orders", }), icon: , permissions: [PermissionEnum.MANAGE_SHIPPING], title: intl.formatMessage(sectionNames.shipping), url: shippingZonesListUrl(), testId: "configurationMenuShipping", }, { description: intl.formatMessage({ id: "5RmuD+", defaultMessage: "Manage and update your warehouse information", }), icon: , permissions: [PermissionEnum.MANAGE_PRODUCTS], title: intl.formatMessage(sectionNames.warehouses), url: warehouseSection, testId: "configuration-menu-warehouses", }, ], }, { label: intl.formatMessage({ id: "MWSacl", defaultMessage: "Multichannel", }), menuItems: [ { description: intl.formatMessage({ id: "8vJCJ4", defaultMessage: "Define and manage your sales channels", }), icon: , permissions: [PermissionEnum.MANAGE_CHANNELS], title: intl.formatMessage(sectionNames.channels), url: channelsListUrl(), testId: "configuration-menu-channels", }, ], }, { label: intl.formatMessage({ id: "HjXnIf", defaultMessage: "Content Management", }), menuItems: [ { description: intl.formatMessage({ id: "JPH/uP", defaultMessage: "Define types of content pages used in your store", }), icon: , permissions: [ PermissionEnum.MANAGE_PAGES, PermissionEnum.MANAGE_PAGE_TYPES_AND_ATTRIBUTES, ], title: intl.formatMessage(sectionNames.pageTypes), url: pageTypeListUrl(), testId: "configuration-menu-page-types", }, ], }, { label: intl.formatMessage({ id: "YZl6cv", defaultMessage: "Miscellaneous", }), menuItems: [ { description: intl.formatMessage({ id: "hpMcW8", defaultMessage: "Define how users can navigate through your store", }), icon: , permissions: [PermissionEnum.MANAGE_MENUS], title: intl.formatMessage(sectionNames.navigation), url: menuListUrl(), testId: "configuration-menu-navigation", }, { description: intl.formatMessage({ id: "5BajZK", defaultMessage: "View and update your site settings", }), icon: , permissions: [PermissionEnum.MANAGE_SETTINGS], title: intl.formatMessage(sectionNames.siteSettings), url: siteSettingsUrl(), testId: "configuration-menu-site-settings", }, { description: intl.formatMessage({ id: "m19JfL", defaultMessage: "View and update your plugins and their settings.", }), icon: ( ), permissions: [PermissionEnum.MANAGE_PLUGINS], title: intl.formatMessage(sectionNames.plugins), url: pluginListUrl(), testId: "configuration-plugins-pages", }, { description: intl.formatMessage({ id: "Zz67wc", defaultMessage: "View and update your webhooks and events.", }), icon: , title: intl.formatMessage(sectionNames.webhooksAndEvents), url: CustomAppUrls.resolveAppListUrl(), testId: "configuration-menu-webhooks-and-events", }, ], }, ]; } export const configurationMenuUrl = "/configuration/"; export const ConfigurationSection: React.FC = () => { const shop = useShop(); const versions = { dashboardVersion, coreVersion: shop?.version ?? "", }; const user = useUser(); const intl = useIntl(); return ( <> user.user)} versionInfo={versions} /> ); }; export default ConfigurationSection;