import { attributeListUrl } from "@saleor/attributes/urls"; import { channelsListUrl } from "@saleor/channels/urls"; import { WindowTitle } from "@saleor/components/WindowTitle"; import { APP_VERSION as dashboardVersion } from "@saleor/config"; import useNavigator from "@saleor/hooks/useNavigator"; import useShop from "@saleor/hooks/useShop"; import useUser from "@saleor/hooks/useUser"; import Attributes from "@saleor/icons/Attributes"; import Channels from "@saleor/icons/Channels"; import Navigation from "@saleor/icons/Navigation"; import Pages from "@saleor/icons/Pages"; 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 { pageListUrl } from "@saleor/pages/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 { taxSection } from "@saleor/taxes/urls"; import { PermissionEnum } from "@saleor/types/globalTypes"; import { warehouseSection } from "@saleor/warehouses/urls"; import React from "react"; import { IntlShape, useIntl } from "react-intl"; import ConfigurationPage, { MenuSection } from "./ConfigurationPage"; export function createConfigurationMenu(intl: IntlShape): MenuSection[] { return [ { label: intl.formatMessage({ defaultMessage: "Attributes and Product Types" }), menuItems: [ { description: intl.formatMessage({ defaultMessage: "Determine attributes used to create product types", id: "configurationMenuAttributes" }), icon: , permission: PermissionEnum.MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES, title: intl.formatMessage(sectionNames.attributes), url: attributeListUrl(), testId: "configurationMenuAttributes" }, { description: intl.formatMessage({ defaultMessage: "Define types of products you sell", id: "configurationMenuProductTypes" }), icon: , permission: PermissionEnum.MANAGE_PRODUCT_TYPES_AND_ATTRIBUTES, title: intl.formatMessage(sectionNames.productTypes), url: productTypeListUrl(), testId: "configurationMenuProductTypes" } ] }, { label: intl.formatMessage({ defaultMessage: "Product Settings" }), menuItems: [ { description: intl.formatMessage({ defaultMessage: "Manage how your store charges tax", id: "configurationMenuTaxes" }), icon: , permission: PermissionEnum.MANAGE_SETTINGS, title: intl.formatMessage(sectionNames.taxes), url: taxSection, testId: "configurationMenuTaxes" } ] }, { label: intl.formatMessage({ defaultMessage: "Staff Settings" }), menuItems: [ { description: intl.formatMessage({ defaultMessage: "Manage your employees and their permissions", id: "configurationMenuStaff" }), icon: , permission: PermissionEnum.MANAGE_STAFF, title: intl.formatMessage(sectionNames.staff), url: staffListUrl(), testId: "configurationMenuStaff" }, { description: intl.formatMessage({ defaultMessage: "Manage your permission groups and their permissions", id: "configurationMenuPermissionGroups" }), icon: , permission: PermissionEnum.MANAGE_STAFF, title: intl.formatMessage(sectionNames.permissionGroups), url: permissionGroupListUrl(), testId: "configurationMenuPermissionGroups" } ] }, { label: intl.formatMessage({ defaultMessage: "Shipping Settings" }), menuItems: [ { description: intl.formatMessage({ defaultMessage: "Manage how you ship out orders", id: "configurationMenuShipping" }), icon: , permission: PermissionEnum.MANAGE_SHIPPING, title: intl.formatMessage(sectionNames.shipping), url: shippingZonesListUrl(), testId: "configurationMenuShipping" }, { description: intl.formatMessage({ defaultMessage: "Manage and update your warehouse information", id: "configurationMenuWarehouses" }), icon: , permission: PermissionEnum.MANAGE_PRODUCTS, title: intl.formatMessage(sectionNames.warehouses), url: warehouseSection, testId: "configurationMenuWarehouses" } ] }, { label: intl.formatMessage({ defaultMessage: "Multichannel" }), menuItems: [ { description: intl.formatMessage({ defaultMessage: "Define and manage your sales channels", id: "configurationMenuChannels" }), icon: , permission: PermissionEnum.MANAGE_CHANNELS, title: intl.formatMessage(sectionNames.channels), url: channelsListUrl(), testId: "configurationMenuChannels" } ] }, { label: intl.formatMessage({ defaultMessage: "Content Management" }), menuItems: [ { description: intl.formatMessage({ defaultMessage: "Define types of content pages used in your store", id: "configurationMenuPageTypes" }), icon: , permission: PermissionEnum.MANAGE_PAGES, title: intl.formatMessage(sectionNames.pageTypes), url: pageTypeListUrl(), testId: "configurationMenuPageTypes" }, { description: intl.formatMessage({ defaultMessage: "Manage and add additional pages", id: "configurationMenuPages" }), icon: , permission: PermissionEnum.MANAGE_PAGES, title: intl.formatMessage(sectionNames.pages), url: pageListUrl(), testId: "configurationMenuPages" } ] }, { label: intl.formatMessage({ defaultMessage: "Miscellaneous" }), menuItems: [ { description: intl.formatMessage({ defaultMessage: "Define how users can navigate through your store", id: "configurationMenuNavigation" }), icon: , permission: PermissionEnum.MANAGE_MENUS, title: intl.formatMessage(sectionNames.navigation), url: menuListUrl(), testId: "configurationMenuNavigation" }, { description: intl.formatMessage({ defaultMessage: "View and update your site settings", id: "configurationMenuSiteSettings" }), icon: , permission: PermissionEnum.MANAGE_SETTINGS, title: intl.formatMessage(sectionNames.siteSettings), url: siteSettingsUrl(), testId: "configurationMenuSiteSettings" }, { description: intl.formatMessage({ defaultMessage: "View and update your plugins and their settings.", id: "configurationPluginsPages" }), icon: ( ), permission: PermissionEnum.MANAGE_PLUGINS, title: intl.formatMessage(sectionNames.plugins), url: pluginListUrl(), testId: "configurationPluginsPages" } ] } ]; } export const configurationMenuUrl = "/configuration/"; export const ConfigurationSection: React.FC = () => { const { version: coreVersion } = useShop(); const versions = { dashboardVersion, coreVersion }; const navigate = useNavigator(); const user = useUser(); const intl = useIntl(); return ( <> user.user)} onSectionClick={navigate} versionInfo={versions} /> ); }; export default ConfigurationSection;