@saleor/macaw-ui 0.3.1 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ActionBar/styles.d.ts +1 -1
- package/dist/Alert/Alert.d.ts +2 -1
- package/dist/Button/Button.d.ts +1 -3
- package/dist/Pagination/Pagination.d.ts +2 -2
- package/dist/Savebar/styles.d.ts +1 -1
- package/dist/cjs/index.js +2 -2
- package/dist/cjs/index.js.map +3 -3
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +3 -3
- package/dist/icons/Logo.d.ts +1 -1
- package/dist/icons/LogoLight.d.ts +2 -2
- package/dist/icons/index.d.ts +1 -4
- package/dist/index.d.ts +0 -3
- package/dist/index.js +1 -4
- package/dist/index.js.map +3 -3
- package/dist/mjs/index.js +5 -0
- package/dist/mjs/index.js.map +7 -0
- package/dist/theme/createSaleorTheme/overrides/buttons.d.ts +2 -2
- package/dist/theme/createSaleorTheme/overrides/index.d.ts +2 -2
- package/dist/theme/createSaleorTheme/overrides/inputs.d.ts +2 -2
- package/dist/theme/createSaleorTheme/overrides/tables.d.ts +2 -2
- package/dist/theme/createSaleorTheme/shadows.d.ts +2 -2
- package/dist/theme/createSaleorTheme/types.d.ts +4 -8
- package/dist/types/CircleIndicator/CircleIndicator.d.ts +7 -0
- package/dist/types/CircleIndicator/CircleIndicator.stories.d.ts +4 -0
- package/dist/types/CircleIndicator/index.d.ts +1 -0
- package/dist/types/CircleIndicator/styles.d.ts +2 -0
- package/dist/types/ConfirmButton/ConfirmButton.d.ts +1 -1
- package/dist/types/Pill/Pill.d.ts +1 -1
- package/dist/types/StatusChip/styles.d.ts +3 -0
- package/dist/types/icons/CircleIndicatorIcon.d.ts +1 -0
- package/dist/types/icons/SuccessCircleIndicatorIcon.d.ts +1 -0
- package/dist/types/icons/index.d.ts +2 -0
- package/dist/types/index.d.ts +1 -0
- package/package.json +3 -1
- package/src/ActionBar/styles.ts +1 -1
- package/src/Alert/Alert.tsx +2 -2
- package/src/Backlink/Backlink.stories.tsx +0 -1
- package/src/Backlink/Backlink.tsx +1 -1
- package/src/BaseList/BaseList.tsx +1 -0
- package/src/BaseList/context.ts +1 -0
- package/src/BaseList/styles.ts +1 -0
- package/src/CircleIndicator/CircleIndicator.stories.tsx +48 -0
- package/src/CircleIndicator/CircleIndicator.tsx +34 -0
- package/src/CircleIndicator/index.ts +1 -0
- package/src/CircleIndicator/styles.ts +31 -0
- package/src/ConfirmButton/ConfirmButton.tsx +1 -1
- package/src/Filter/Filter.tsx +1 -3
- package/src/Filter/FilterBar.tsx +0 -1
- package/src/LayoutButton/LayoutButton.tsx +1 -2
- package/src/List/List.stories.tsx +4 -2
- package/src/List/List.tsx +1 -0
- package/src/List/styles.ts +1 -0
- package/src/NavigationCard/NavigationCard.stories.tsx +2 -2
- package/src/NavigationCard/NavigationCard.tsx +1 -1
- package/src/Notification/Notification.tsx +3 -3
- package/src/OffsettedList/OffsettedList.stories.tsx +2 -2
- package/src/OffsettedList/OffsettedList.tsx +1 -0
- package/src/Pill/Pill.stories.tsx +3 -3
- package/src/Pill/Pill.tsx +3 -2
- package/src/PillLink/PillLink.tsx +1 -0
- package/src/Savebar/Savebar.tsx +1 -1
- package/src/Sidebar/ExpandButton.tsx +1 -1
- package/src/StatusChip/StatusChip.tsx +1 -1
- package/src/UserChipMenu/UserChipMenu.tsx +1 -1
- package/src/consts.ts +1 -0
- package/src/icons/CircleIndicatorIcon.tsx +10 -0
- package/src/icons/SuccessCircleIndicatorIcon.tsx +16 -0
- package/src/icons/index.ts +2 -0
- package/src/index.tsx +1 -0
- package/src/theme/ThemeProvider.tsx +0 -1
- package/src/theme/createSaleorTheme/createSaleorTheme.tsx +2 -2
- package/src/theme/createSaleorTheme/overrides/inputs.ts +1 -1
- package/src/theme/utils.test.ts +4 -4
- package/src/theme/utils.ts +1 -1
- package/src/tools/useLocalStorage.ts +16 -9
- package/dist/macaw-ui.cjs.development.js +0 -2626
- package/dist/macaw-ui.cjs.development.js.map +0 -1
- package/dist/macaw-ui.cjs.production.min.js +0 -2
- package/dist/macaw-ui.cjs.production.min.js.map +0 -1
- package/dist/macaw-ui.esm.js +0 -2578
- package/dist/macaw-ui.esm.js.map +0 -1
- package/dist/types/Button/Button.stories.d.ts +0 -5
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/theme/ThemeProvider.tsx", "../src/ActionBar/context.tsx", "../src/Backlink/context.tsx", "../src/extensions/sendMessage.ts", "../src/extensions/types.ts", "../src/extensions/useExtensionMessage.ts", "../src/localStorageKeys.ts", "../src/tools/useLocalStorage.ts", "../src/theme/Baseline.tsx", "../src/theme/styles.ts", "../src/theme/context.ts", "../src/theme/createSaleorTheme/createSaleorTheme.
|
|
4
|
-
"sourcesContent": ["import type { Theme } from \"@material-ui/core/styles\";\nimport { MuiThemeProvider } from \"@material-ui/core/styles\";\nimport merge from \"lodash/merge\";\nimport React, { useEffect } from \"react\";\n\nimport { ActionBarProvider } from \"../ActionBar/context\";\nimport { BacklinkProvider } from \"../Backlink/context\";\nimport {\n ExtensionMessageType,\n sendMessageToExtension,\n ThemeChangeMessage,\n} from \"../extensions\";\nimport { localStorageKeys } from \"../localStorageKeys\";\nimport useLocalStorage from \"../tools/useLocalStorage\";\nimport { Baseline } from \"./Baseline\";\nimport { ThemeContext } from \"./context\";\nimport { createTheme, Themes, ThemeType } from \"./createSaleorTheme\";\nimport { dark, light } from \"./themes\";\nimport { changeColorMeta } from \"./utils\";\n\nexport interface ThemeProviderProps {\n defaultTheme?: ThemeType;\n /**\n * Passing an object here will result in losing visual consistency with\n * Saleor's Dashboard. Use with caution.\n */\n palettes?: Partial<Themes>;\n /**\n * Passing an object here will result in losing visual consistency with\n * Saleor's Dashboard. Use with caution.\n */\n overrides?: Partial<Theme>;\n}\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\n children,\n defaultTheme = \"light\",\n palettes = {},\n overrides = {},\n}) => {\n const { value: themeTypeName, setValue: setThemeType } = useLocalStorage(\n localStorageKeys.theme,\n defaultTheme\n );\n const themeType = themeTypeName as ThemeType;\n const themes = {\n light,\n dark,\n ...palettes,\n };\n const theme = merge(createTheme(themes[themeType]), overrides);\n const sendThemeToExtension = () =>\n sendMessageToExtension<ThemeChangeMessage>(\n {\n theme: themeType,\n type: ExtensionMessageType.THEME,\n },\n \"*\"\n );\n\n useEffect(() => {\n sendThemeToExtension();\n changeColorMeta(theme.palette.background.default);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [themeType]);\n\n return (\n <ThemeContext.Provider\n value={{\n themeType,\n sendThemeToExtension,\n setTheme: setThemeType,\n }}\n >\n <MuiThemeProvider theme={theme}>\n <ActionBarProvider>\n <BacklinkProvider>\n <Baseline />\n {children}\n </BacklinkProvider>\n </ActionBarProvider>\n </MuiThemeProvider>\n </ThemeContext.Provider>\n );\n};\n", "import React from \"react\";\n\nexport interface ActionBarContextType {\n anchor: React.RefObject<HTMLDivElement>;\n docked: boolean;\n setDocked: (docked: boolean) => void;\n}\n\nexport const ActionBarContext = React.createContext<\n ActionBarContextType | undefined\n>(undefined);\nActionBarContext.displayName = \"ActionBarContext\";\n\nexport const useActionBar = () => {\n const ctx = React.useContext(ActionBarContext);\n if (ctx === undefined) {\n throw new Error(\"useActionBar must be used within a ActionBarContext\");\n }\n\n return ctx;\n};\n\nexport const ActionBarProvider: React.FC = ({ children }) => {\n const [docked, setDocked] = React.useState(true);\n const anchor = React.useRef<HTMLDivElement | null>(null);\n\n return (\n <ActionBarContext.Provider value={{ anchor, docked, setDocked }}>\n {children}\n </ActionBarContext.Provider>\n );\n};\n", "import React from \"react\";\n\nexport type BacklinkContextType = React.RefObject<HTMLDivElement>;\n\nexport const BacklinkContext = React.createContext<\n BacklinkContextType | undefined\n>(undefined);\nBacklinkContext.displayName = \"BacklinkContext\";\n\nexport const useBacklink = () => {\n const ctx = React.useContext(BacklinkContext);\n if (ctx === undefined) {\n throw new Error(\"useBacklink must be used within a BacklinkContext\");\n }\n\n return ctx;\n};\n\nexport const BacklinkProvider: React.FC = ({ children }) => {\n const anchor = React.useRef<HTMLDivElement | null>(null);\n\n return (\n <BacklinkContext.Provider value={anchor}>\n {children}\n </BacklinkContext.Provider>\n );\n};\n", "import { BaseExtensionMessageData } from \"./types\";\n\nexport function sendMessageToDashboard<T extends BaseExtensionMessageData>(\n message: T,\n targetOrigin: string\n) {\n if (!!window.parent) {\n window.parent.postMessage(message, targetOrigin);\n }\n}\n\nexport function sendMessageToExtension<T extends BaseExtensionMessageData>(\n message: T,\n targetOrigin: string\n) {\n const appFrame: HTMLIFrameElement | null =\n document.querySelector(\"#extension-app\");\n\n if (!!appFrame?.contentWindow) {\n appFrame.contentWindow.postMessage(message, targetOrigin);\n }\n}\n", "import { ThemeType } from \"../theme\";\n\nexport enum ExtensionMessageType {\n BREADCRUMB_CLICK,\n BREADCRUMB_SET,\n THEME,\n}\nexport interface BaseExtensionMessageData {\n type: ExtensionMessageType;\n}\n\nexport type Breadcrumb = Record<\"label\" | \"value\", string>;\nexport interface BreadcrumbClickMessage extends BaseExtensionMessageData {\n breadcrumb: string;\n}\nexport interface BreadcrumbChangeMessage extends BaseExtensionMessageData {\n breadcrumbs: Breadcrumb[];\n}\n\nexport interface ThemeChangeMessage extends BaseExtensionMessageData {\n theme: ThemeType;\n}\n\nexport interface ExtensionMessageEvent<T extends BaseExtensionMessageData> {\n data: T;\n}\n", "import { useEffect } from \"react\";\n\nimport { BaseExtensionMessageData, ExtensionMessageEvent } from \"./types\";\n\nexport function useExtensionMessage<T extends BaseExtensionMessageData>(\n handle: (message: ExtensionMessageEvent<T>) => void\n) {\n useEffect(() => {\n window.addEventListener(\"message\", handle);\n\n return () => window.removeEventListener(\"message\", handle);\n }, [handle]);\n}\n", "export const localStorageKeys = {\n theme: \"macaw-ui-theme\",\n menuShrink: \"macaw-ui-menu-shrink\",\n};\n", "// Copied directly from\n// https://github.com/dance2die/react-use-localstorage/blob/master/src/index.ts\n// to avoid cjs and esm confusion in jest transformators\n\nimport { useCallback, useEffect, useState } from \"react\";\n\n// FIXME: We also had to tweak return signature because tuples were bugging\n// typescript parser\n// https://stackoverflow.com/questions/62079477/line-0-parsing-error-cannot-read-property-map-of-undefined\n// tsdx issue\n// https://github.com/formium/tsdx/issues/926\nexport interface UseLocalStorage {\n value: string;\n setValue: (value: string) => void;\n}\nexport default function useLocalStorage(\n key: string,\n initialValue: string = \"\"\n): UseLocalStorage {\n const [value, setValue] = useState(\n () => window.localStorage.getItem(key) || initialValue\n );\n\n const setItem = (newValue: string) => {\n setValue(newValue);\n window.localStorage.setItem(key, newValue);\n };\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => {\n const newValue = window.localStorage.getItem(key);\n if (value !== newValue) {\n setValue(newValue || initialValue);\n }\n });\n\n const handleStorage = useCallback(\n (event: StorageEvent) => {\n if (event.key === key && event.newValue !== value) {\n setValue(event.newValue || initialValue);\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [value, key]\n );\n\n useEffect(() => {\n window.addEventListener(\"storage\", handleStorage);\n return () => window.removeEventListener(\"storage\", handleStorage);\n }, [handleStorage]);\n\n return {\n value,\n setValue: setItem,\n };\n}\n", "import CssBaseline from \"@material-ui/core/CssBaseline\";\nimport { fade } from \"@material-ui/core/styles\";\nimport React from \"react\";\n\nimport { makeStyles } from \"./styles\";\n\nconst useStyles = makeStyles(\n (theme) => ({\n \"@global\": {\n \"@import\": \"url('https://rsms.me/inter/inter.css')\",\n\n // Putting them here, because MUI doesn't let putting own keys in\n // `overrides` objects\n \"@keyframes hoverControlStart\": {\n from: {\n transform: \"scale(1)\",\n },\n to: {\n transform: \"scale(1.4)\",\n },\n },\n \"@keyframes hoverControl\": {\n from: {\n transform: \"scale(1.4)\",\n },\n to: {\n transform: \"scale(1.6)\",\n },\n },\n\n \"@keyframes hoverSwitchStart\": {\n from: {\n boxShadow: `0 0 0 0 ${theme.palette.saleor.active[5]}`,\n },\n to: {\n boxShadow: `0 0 0 3px ${theme.palette.saleor.active[5]}`,\n },\n },\n \"@keyframes hoverSwitch\": {\n from: {\n boxShadow: `0 0 0 3px ${theme.palette.saleor.active[5]}`,\n },\n to: {\n boxShadow: `0 0 0 5px ${theme.palette.saleor.active[5]}`,\n },\n },\n\n \":root\": {\n \"--background-paper\": theme.palette.background.paper,\n \"--background-default\": theme.palette.background.default,\n },\n\n // For some reason @import clause must be put on top\n // eslint-disable-next-line sort-keys\n \"::selection\": {\n background: fade(theme.palette.primary.main, 0.2),\n },\n html: {\n fontSize: \"62.5%\",\n },\n a: {\n color: theme.palette.primary.main,\n textDecoration: \"none\",\n },\n },\n }),\n { name: \"Baseline\" }\n);\n\nexport const Baseline: React.FC = () => {\n useStyles();\n\n return <CssBaseline />;\n};\nBaseline.displayName = \"Baseline\";\n", "import {\n makeStyles as muiMakeStyles,\n useTheme as useMuiTheme,\n} from \"@material-ui/core/styles\";\nimport type {\n ClassNameMap,\n Styles,\n WithStylesOptions,\n} from \"@material-ui/styles/withStyles\";\nimport { useContext } from \"react\";\n\nimport { ThemeContext } from \"./context\";\nimport { SaleorTheme } from \"./createSaleorTheme/types\";\nimport type { SaleorThemeContext } from \"./types\";\n\nexport function makeStyles<\n Props extends Record<string, any> = {},\n ClassKey extends string = string\n>(\n styles: Styles<SaleorTheme, Props, ClassKey>,\n options?: Omit<WithStylesOptions<SaleorTheme>, \"withTheme\">\n): keyof Props extends never\n ? (props?: any) => ClassNameMap<ClassKey>\n : (props: Props) => ClassNameMap<ClassKey> {\n return muiMakeStyles(styles, options);\n}\n\nexport function useTheme(): SaleorTheme & SaleorThemeContext {\n const saleorTheme = useMuiTheme<SaleorTheme>();\n const themeInfo = useContext(ThemeContext);\n\n if (themeInfo === undefined || saleorTheme === undefined) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n\n return {\n ...saleorTheme,\n ...themeInfo,\n };\n}\n", "import React from \"react\";\n\nimport { SaleorThemeContext } from \"./types\";\n\nexport const ThemeContext = React.createContext<SaleorThemeContext | undefined>(\n undefined\n);\nThemeContext.displayName = \"ThemeContext\";\n", "import { createMuiTheme } from \"@material-ui/core/styles\";\nimport { fade } from \"@material-ui/core/styles\";\nimport type { TypographyProps } from \"@material-ui/core/Typography\";\nimport React from \"react\";\n\nimport {\n CheckboxCheckedIcon,\n CheckboxIcon,\n CheckboxIndeterminateIcon,\n RadioCheckedIcon,\n RadioIcon,\n} from \"../..\";\nimport { getSecondaryButtonStyles } from \"../../IconButton/partials\";\nimport { overrides } from \"./overrides\";\nimport { createPalette } from \"./palette\";\nimport { shadows } from \"./shadows\";\nimport { SaleorTheme, SaleorThemeColors } from \"./types\";\n\nexport const ICONBUTTON_SIZE = 48;\n\nconst fontFamily = '\"Inter\", \"roboto\", \"sans-serif\"';\n\nexport const createTheme = (colors: SaleorThemeColors): SaleorTheme =>\n createMuiTheme({\n overrides: {\n ...overrides(colors, fontFamily),\n MuiCard: {\n root: {\n borderRadius: 8,\n borderWidth: 0,\n overflow: \"visible\",\n },\n },\n MuiCardActions: {\n root: {\n \".MuiCardContent-root + &\": {\n paddingTop: 0,\n },\n padding: \"3.2rem 3.2rem 3.2rem\",\n },\n },\n MuiCardContent: {\n root: {\n \".MuiCardHeader-root + &\": {\n paddingTop: 0,\n },\n padding: \"2.4rem 3.2rem\",\n },\n },\n MuiCardHeader: {\n action: {\n position: \"relative\",\n top: 4,\n },\n root: {\n padding: \"2.4rem 3.2rem\",\n },\n },\n MuiChip: {\n avatar: {\n fontSize: \"1.2rem\",\n height: 32,\n left: -5,\n position: \"relative\",\n width: 32,\n },\n root: {\n \"& $avatar\": {\n fontSize: \"1.2rem\",\n },\n fontSize: \"1.3rem\",\n },\n },\n MuiDialog: {\n paper: {\n overflowY: undefined,\n },\n },\n MuiDialogActions: {\n root: {\n borderTop: `1px solid ${colors.divider}`,\n padding: \"16px 24px\",\n },\n },\n MuiDialogContent: {\n root: {\n overflowX: undefined,\n overflowY: undefined,\n padding: `24px 0px`,\n margin: `0px 24px`,\n },\n },\n MuiDialogContentText: {\n root: {\n \"&:last-child\": {\n marginBottom: 0,\n },\n },\n },\n MuiDivider: {\n light: {\n backgroundColor: colors.background.paper,\n },\n },\n MuiExpansionPanelSummary: {\n expandIcon: {\n ...getSecondaryButtonStyles(colors),\n border: \"none\",\n },\n },\n MuiFormControlLabel: {\n label: {\n lineHeight: 1.2,\n marginLeft: 4,\n },\n root: {\n marginLeft: -14,\n },\n },\n MuiFormLabel: {\n filled: {\n \"&&:not($error)\": {\n color: colors.primary,\n },\n },\n root: {\n \"&&$focused:not($error)\": {\n color: colors.font.gray,\n },\n },\n },\n MuiSvgIcon: {\n root: {\n fontSize: \"2.4rem\",\n height: \"1em\",\n width: \"1em\",\n },\n },\n MuiListItem: {\n button: {\n \"&:focus\": {\n background: colors.active[5],\n color: colors.main[1],\n },\n },\n root: {\n \"&$selected\": {\n \"&:hover\": {\n backgroundColor: colors.main[1],\n },\n backgroundColor: colors.main[1],\n },\n },\n },\n MuiMenu: {\n paper: {\n borderRadius: 0,\n },\n },\n MuiMenuItem: {\n root: {\n \"&$selected, &$selected:focus, &$selected:hover\": {\n backgroundColor: [colors.active[5], \"!important\"] as any,\n color: colors.primary,\n fontWeight: 700,\n },\n \"&:hover\": {\n backgroundColor: [colors.active[5], \"!important\"] as any,\n },\n \"@media(min-width: 600px)\": {\n minHeight: 48,\n },\n },\n },\n MuiSelect: {\n root: {\n \"&$disabled\": {\n backgroundColor: colors.background.default,\n },\n },\n },\n MuiSnackbarContent: {\n action: {\n \"& $MuiIconButton\": {\n \"& svg\": {\n color: colors.font.default,\n },\n },\n display: \"block\",\n paddingBottom: 10,\n paddingLeft: 0,\n paddingRight: 45,\n },\n message: {\n fontSize: 16,\n },\n root: {\n backgroundColor: colors.background.paper,\n boxShadow:\n \"0 6px 10px 0px rgba(0, 0, 0, 0.15), 0 1px 18px 0px rgba(0, 0, 0, 0.12), 0 3px 5px -1px rgba(0, 0, 0, 0.10)\",\n color: colors.font.default,\n display: \"block\",\n maxWidth: 480,\n },\n },\n MuiTooltip: {\n arrow: {\n color: colors.alert.icon.info,\n },\n tooltip: {\n backgroundColor: colors.alert.icon.info,\n fontSize: \"0.8em\",\n padding: 16,\n },\n },\n MuiTouchRipple: {\n child: {\n backgroundColor: fade(colors.primary, 1),\n },\n childLeaving: {\n backgroundColor: fade(colors.primary, 1),\n },\n ripple: {\n \"&$rippleVisible\": {\n backgroundColor: fade(colors.primary, 1),\n },\n borderRadius: \"100%\",\n },\n },\n },\n palette: createPalette(colors),\n props: {\n MuiButton: {\n disableRipple: true,\n },\n MuiFormControl: {\n variant: \"filled\",\n },\n MuiTextField: {\n variant: \"outlined\",\n },\n MuiCard: {\n elevation: 0,\n },\n MuiExpansionPanelSummary: {\n IconButtonProps: {\n disableRipple: true,\n },\n },\n MuiTypography: {\n component: \"div\",\n } as TypographyProps,\n MuiCheckbox: {\n color: \"primary\",\n disableRipple: true,\n checkedIcon: <CheckboxCheckedIcon />,\n icon: <CheckboxIcon />,\n indeterminateIcon: <CheckboxIndeterminateIcon />,\n },\n MuiTableRow: {\n hover: true,\n },\n MuiTooltip: {\n placement: \"right-end\",\n },\n MuiList: {\n disablePadding: true,\n },\n MuiRadio: {\n color: \"primary\",\n disableRipple: true,\n icon: <RadioIcon />,\n checkedIcon: <RadioCheckedIcon />,\n },\n MuiSwitch: {\n color: \"primary\",\n disableRipple: true,\n },\n MuiSelect: {\n MenuProps: {\n anchorOrigin: {\n vertical: \"bottom\",\n horizontal: \"left\",\n },\n transformOrigin: {\n vertical: \"top\",\n horizontal: \"left\",\n },\n getContentAnchorEl: null,\n },\n },\n },\n shadows,\n spacing: (value: number = 1) => `${(value * 8) / 10}rem`,\n typography: {\n allVariants: {\n fontFamily,\n },\n body1: {\n color: colors.font.default,\n fontSize: \"1.6rem\",\n },\n body2: {\n fontSize: \"1.4rem\",\n },\n button: {\n fontSize: \"1.4rem\",\n },\n caption: {\n fontSize: \"1.2rem\",\n },\n fontFamily,\n h1: {\n fontSize: \"4rem\",\n fontWeight: 700,\n },\n h4: {\n fontSize: \"3.4rem\",\n color: colors.font.default,\n },\n h5: {\n fontSize: \"2.1rem\",\n fontWeight: 500,\n },\n h6: {\n fontSize: \"2rem\",\n fontWeight: 500,\n },\n subtitle1: {\n fontSize: \"1.6rem\",\n },\n subtitle2: {\n fontSize: \"1.4rem\",\n },\n },\n }) as unknown as SaleorTheme;\n", "import type { SaleorThemeColors } from \"..\";\n\n// Extracting it to separate file to avoid circular imports\nexport function getSecondaryButtonStyles(colors: SaleorThemeColors) {\n return {\n \"&:hover, &.Mui-focusVisible\": {\n color: colors.active[1],\n },\n \"&:disabled\": {\n color: colors.disabled,\n },\n background: \"transparent\",\n borderRadius: 4,\n color: colors.main[3],\n padding: 8,\n transition: \"200ms\",\n };\n}\n", "import type { Overrides } from \"@material-ui/core/styles/overrides\";\n\nimport { SaleorThemeColors } from \"../types\";\n\nexport const buttonOverrides = (colors: SaleorThemeColors): Overrides => {\n const containedPrimaryHover = {\n backgroundColor: colors.active[3],\n };\n\n return {\n MuiButton: {\n contained: {\n \"&$disabled\": {\n \"&$containedPrimary\": {\n color: colors.secondary,\n backgroundColor: colors.disabled,\n },\n \"&$containedSecondary\": {\n background: colors.background.paper,\n color: colors.disabled,\n },\n },\n \"&$focusVisible\": {\n ...containedPrimaryHover,\n boxShadow: undefined,\n },\n \"&:active\": {\n boxShadow: \"none\",\n },\n \"&:hover\": {\n \"@media(hover: none)\": {\n boxShadow: \"none\",\n },\n boxShadow: \"none\",\n },\n boxShadow: \"none\",\n },\n containedPrimary: {\n \"&&:hover\": containedPrimaryHover,\n \"&&:active\": {\n backgroundColor: colors.active[4],\n },\n },\n label: {\n fontWeight: 600,\n },\n root: {\n borderRadius: 4,\n fontSize: \"1.6rem\",\n letterSpacing: \"0.06rem\",\n lineHeight: 1.55,\n padding: \"12px 16px\",\n },\n text: {\n \"&&$disabled\": {\n color: colors.disabled,\n },\n \"&:hover, &$focusVisible\": {\n background: colors.main[5],\n },\n \"&:active\": {\n background: colors.main[4],\n },\n },\n textPrimary: {\n \"&:hover, &$focusVisible\": {\n background: colors.active[5],\n },\n \"&:active\": {\n background: colors.active[4],\n },\n },\n textSizeSmall: {\n fontSize: \"1.3rem\",\n },\n outlined: {\n \"&$disabled\": {\n border: undefined,\n borderColor: colors.disabled,\n color: colors.disabled,\n },\n \"&:hover\": {\n // Unsets border as it will require us to override borderWidth and\n // borderStyle over and over\n border: undefined,\n },\n \"&:hover, &$focusVisible\": {\n borderColor: colors.main[1],\n backgroundColor: colors.main[5],\n },\n \"&:active\": {\n backgroundColor: colors.main[4],\n },\n background: colors.background.paper,\n borderColor: colors.main[4],\n borderWidth: 2,\n borderStyle: \"solid\",\n // 2px smaller because of border\n padding: \"10px 12px\",\n },\n outlinedPrimary: {\n \"&:hover, &$focusVisible\": {\n borderColor: colors.active[1],\n backgroundColor: colors.active[5],\n },\n \"&:hover\": {\n // Unsets border as it will require us to override borderWidth and\n // borderStyle over and over\n border: undefined,\n },\n \"&:active\": {\n backgroundColor: colors.active[4],\n },\n border: undefined,\n borderColor: colors.active[4],\n },\n },\n MuiIconButton: {\n root: {\n \"&:hover, &.Mui-focusVisible\": {\n borderColor: colors.active[1],\n backgroundColor: colors.active[5],\n },\n \"&:hover\": {\n // Unsets border as it will require us to override borderWidth and\n // borderStyle over and over\n border: undefined,\n },\n \"&:active\": {\n backgroundColor: colors.active[4],\n },\n \"&$disabled\": {\n border: undefined,\n borderColor: \"transparent\",\n color: colors.disabled,\n },\n background: colors.background.paper,\n border: `2px solid ${colors.active[4]}`,\n borderRadius: 4,\n color: colors.active[1],\n padding: 10,\n transition: \"200ms\",\n },\n },\n };\n};\n", "import type { ThemeOptions } from \"@material-ui/core/styles\";\n\nimport { SaleorThemeColors } from \"../types\";\n\nexport const controlOverrides = (\n colors: SaleorThemeColors\n): ThemeOptions[\"overrides\"] => ({\n MuiCheckbox: {\n colorPrimary: {\n \"&&.Mui-checked:hover\": {\n backgroundColor: \"transparent\",\n },\n },\n root: {\n \"&:hover, &.Mui-focusVisible\": {\n \"& > span::before\": {\n animation: `200ms alternate hoverControlStart, \n 600ms infinite alternate 200ms hoverControl`,\n },\n background: \"transparent\",\n color: colors.active[1],\n },\n \"& > span\": {\n \"&::before\": {\n content: \"''\",\n width: 20,\n height: 20,\n background: colors.active[5],\n position: \"absolute\",\n top: 0,\n left: 0,\n borderRadius: 2,\n transform: \"scale(0)\",\n },\n position: \"relative\",\n },\n \"& svg\": {\n width: 20,\n height: 20,\n zIndex: 0,\n },\n \"& input\": {\n width: 48,\n height: 48,\n top: -14,\n left: -14,\n },\n background: \"transparent\",\n border: \"transparent\",\n borderRadius: 3,\n padding: 14,\n },\n indeterminate: {\n color: colors.active[1],\n },\n },\n MuiRadio: {\n colorPrimary: {\n \"&&.Mui-checked:hover\": {\n backgroundColor: \"transparent\",\n },\n },\n root: {\n \"&:hover, &.Mui-focusVisible\": {\n \"& > span::before\": {\n animation: `200ms alternate hoverControlStart, \n 600ms infinite alternate 200ms hoverControl`,\n },\n background: \"transparent\",\n color: colors.active[1],\n },\n \"& > span\": {\n \"&::before\": {\n content: \"''\",\n width: 20,\n height: 20,\n background: colors.active[5],\n position: \"absolute\",\n top: 0,\n left: 0,\n borderRadius: \"100%\",\n transform: \"scale(0)\",\n },\n position: \"relative\",\n },\n \"& svg\": {\n width: 20,\n height: 20,\n zIndex: 0,\n },\n \"& input\": {\n width: 48,\n height: 48,\n top: -14,\n left: -14,\n },\n background: \"transparent\",\n border: \"transparent\",\n borderRadius: \"100%\",\n padding: 14,\n },\n },\n MuiSwitch: {\n colorPrimary: {\n \"&$disabled\": {\n \"& + $track\": {\n backgroundColor: \"transparent\",\n border: `2px solid ${colors.disabled}`,\n },\n \"&$checked + $track\": {\n backgroundColor: colors.disabled,\n borderColor: colors.disabled,\n },\n \"&$checked\": {\n color: colors.background.paper,\n },\n color: colors.disabled,\n },\n \"&$checked\": {\n \"&:hover\": {\n backgroundColor: \"transparent\",\n },\n \"& + $track\": {\n borderColor: colors.active[1],\n },\n color: colors.background.paper,\n },\n color: colors.main[3],\n },\n root: {\n \"&:hover, &:focus-visible, &.Mui-focusVisible\": {\n \"& $switchBase:not($disabled)\": {\n \"& + $track\": {\n animation: `200ms alternate hoverSwitchStart, \n 600ms infinite alternate 200ms hoverSwitch`,\n },\n },\n },\n height: 48,\n width: 72,\n },\n switchBase: {\n \"&$checked\": {\n transform: \"translateX(23px)\",\n },\n \"&:hover, &.Mui-focusVisible\": {\n backgroundColor: \"transparent\",\n },\n boxShadow: \"none\",\n left: 4,\n marginLeft: 4,\n top: 8,\n color: colors.background.paper,\n border: \"none\",\n background: \"transparent\",\n },\n thumb: {\n boxShadow: \"none\",\n height: 14,\n width: 14,\n },\n track: {\n border: `2px solid ${colors.main[3]}`,\n backgroundColor: \"transparent\",\n borderRadius: 12,\n height: 24,\n opacity: [[\"1\"], \"!important\"] as any,\n width: 48,\n transition: \"200ms\",\n },\n },\n});\n", "import type { Overrides } from \"@material-ui/core/styles/overrides\";\n\nfunction getInputBoxShadow(color: string) {\n return `0 0 0 3px ${color}`;\n}\n\nimport { SaleorThemeColors } from \"../types\";\n\nexport const inputOverrides = (colors: SaleorThemeColors): Overrides => ({\n MuiFormHelperText: {\n root: {\n \"&$error\": {\n color: colors.fail.dark,\n },\n },\n },\n MuiInput: {\n input: {\n \"&:-webkit-autofill\": {\n WebkitTextFillColor: colors.font.default,\n boxShadow: `inset 0 0 0px 9999px ${colors.active[5]}`,\n },\n \"&::placeholder\": {\n opacity: \"1 !important\" as any,\n },\n color: colors.font.default,\n },\n underline: {\n \"&:after\": {\n borderBottomColor: colors.primary,\n },\n },\n },\n MuiInputBase: {\n root: {\n borderRadius: \"4px\",\n },\n input: {\n \"&$disabled\": {\n color: colors.disabled,\n },\n \"&::placeholder\": {\n color: colors.font.gray,\n opacity: \"1 !important\" as any,\n },\n borderRadius: \"4px\",\n },\n },\n MuiInputLabel: {\n formControl: {\n transform: \"translate(0, 1.5px) scale(0.75)\",\n transformOrigin: \"top left\",\n width: \"100%\",\n },\n outlined: {\n \"&$shrink\": {\n transform: \"translate(12px, 9px) scale(0.75)\",\n },\n transform: \"translate(14px, 18px) scale(1)\",\n },\n root: {\n \"&&$disabled\": {\n color: colors.main[4],\n },\n \"&$error\": {\n \"&$focused\": {\n color: colors.fail.dark,\n },\n color: colors.fail.dark,\n },\n \"&&$focused\": {\n \"&:not($error)\": {\n color: colors.primary,\n },\n },\n \"&:not($error):hover label\": {\n color: colors.main[4],\n },\n color: colors.main[3],\n },\n shrink: {\n // Negates x0.75 scale\n width: \"133%\",\n },\n },\n MuiOutlinedInput: {\n input: {\n \"&:-webkit-autofill\": {\n borderRadius: 4,\n boxShadow: \"0 0 0px 1000px rgba(19, 190, 187, 0.1) inset\",\n },\n \"&&$disabled\": {\n backgroundColor: colors.background.default,\n },\n color: colors.main[1],\n padding: \"23px 12px 10px 12px\",\n },\n inputMultiline: {\n left: -2,\n padding: \"10px 0\",\n position: \"relative\",\n },\n multiline: {\n \"&$disabled\": {\n background: colors.background.default,\n },\n },\n root: {\n \"& fieldset\": {\n top: 0,\n },\n \"& legend\": {\n display: \"none\",\n },\n \"&$disabled\": {\n \"& fieldset\": {\n borderColor: `${colors.disabled} !important`,\n },\n \"& input, & textarea\": {\n backgroundColor: colors.background.default,\n color: colors.main[3],\n },\n boxShadow: `0 0 0 0 transparent !important`,\n },\n \"&$error\": {\n \"&$focused\": {\n \"&:hover\": {\n boxShadow: getInputBoxShadow(colors.fail.mid),\n },\n \"& fieldset\": {\n borderColor: colors.fail.dark,\n },\n boxShadow: getInputBoxShadow(colors.fail.mid),\n },\n \"&:hover\": {\n \"&& fieldset\": {\n borderColor: colors.fail.dark,\n },\n boxShadow: getInputBoxShadow(colors.fail.light),\n },\n boxShadow: getInputBoxShadow(colors.fail.light),\n },\n \"&$focused\": {\n \"&, &:hover\": {\n boxShadow: getInputBoxShadow(colors.active[3]),\n },\n \"& input\": {\n \"& fieldset\": {\n borderColor: colors.primary,\n },\n \"&::placeholder\": {\n opacity: [[1], \"!important\"] as any,\n },\n color: colors.font.default,\n },\n },\n \"&:hover\": {\n boxShadow: getInputBoxShadow(colors.active[5]),\n \"& input\": {\n color: colors.font.default,\n },\n \"&&&\": {\n \"& fieldset\": {\n borderColor: colors.primary,\n },\n },\n },\n backgroundColor: colors.background.paper,\n transition: \"box-shadow 200ms\",\n top: 0,\n fontWeight: 500,\n },\n notchedOutline: {\n // It's so much easier to put it here with important tag rather than\n // override in multiple places using cascade composition\n borderWidth: \"1px !important\",\n },\n },\n});\n", "import type { Overrides } from \"@material-ui/core/styles/overrides\";\n\nimport { SaleorThemeColors } from \"../types\";\n\nexport const tableOverrides = (\n colors: SaleorThemeColors,\n fontFamily: string\n): Overrides => ({\n MuiTable: {\n root: {\n fontFamily,\n fontFeatureSettings: '\"tnum\"',\n },\n },\n MuiTableCell: {\n body: {\n fontSize: \"1.6rem\",\n },\n head: {\n fontSize: \"1.4rem\",\n fontWeight: 400,\n color: colors.font.gray,\n },\n paddingCheckbox: {\n \"&:first-child\": {\n padding: \"0 18px\",\n width: 72,\n },\n \"&:not(first-child)\": {\n padding: 0,\n width: 52,\n },\n \"&:last-child\": {\n paddingRight: 20,\n },\n },\n root: {\n \"&:first-child\": {\n \"&:not($paddingCheckbox)\": {\n paddingLeft: 32,\n paddingRight: 32,\n textAlign: \"left\",\n },\n },\n borderBottomColor: colors.background.default,\n padding: \"24px 32px\",\n },\n },\n MuiTablePagination: {\n input: {\n color: colors.primary,\n fontSize: \"1.4rem\",\n },\n },\n MuiTableRow: {\n footer: {\n \"$root$hover&:hover\": {\n background: \"none\",\n },\n },\n head: {\n \"$root$hover&:hover\": {\n background: \"none\",\n },\n color: colors.main[3],\n },\n hover: {\n \"$root&:hover\": {\n background: colors.active[5],\n },\n transition: \"200ms\",\n },\n root: {\n position: \"relative\",\n },\n },\n});\n", "import type { Overrides } from \"@material-ui/core/styles/overrides\";\n\nimport { SaleorThemeColors } from \"../types\";\nimport { buttonOverrides } from \"./buttons\";\nimport { controlOverrides } from \"./controls\";\nimport { inputOverrides } from \"./inputs\";\nimport { tableOverrides } from \"./tables\";\n\nexport const overrides = (\n colors: SaleorThemeColors,\n fontFamily: string\n): Overrides => ({\n ...inputOverrides(colors),\n ...tableOverrides(colors, fontFamily),\n ...buttonOverrides(colors),\n ...controlOverrides(colors),\n});\n", "import { SaleorPaletteOptions, SaleorThemeColors } from \"./types\";\n\nexport const createPalette = (\n colors: SaleorThemeColors\n): SaleorPaletteOptions => ({\n action: {\n active: colors.checkbox.default,\n },\n alert: colors.alert,\n background: colors.background,\n divider: colors.divider,\n error: {\n main: colors.error,\n },\n primary: {\n contrastText: \"#ffffff\",\n dark: colors.font.textDisabled,\n main: colors.primary,\n },\n secondary: {\n contrastText: \"#ffffff\",\n main: colors.secondary,\n },\n success: {\n main: colors.success,\n },\n text: {\n disabled: colors.font.textDisabled,\n hint: colors.font.gray,\n primary: colors.font.default,\n secondary: colors.font.gray,\n },\n textHighlighted: {\n active: colors.primary,\n inactive: colors.highlightInactive.default,\n },\n type: colors.theme,\n saleor: colors,\n});\n", "import type { Shadows } from \"@material-ui/core/styles/shadows\";\n\nconst createShadow = (pv: number, pb: number, ps: number) =>\n `0 ${pv}px ${pb}px ${ps}px rgba(0, 0, 0, 0.15)`;\n\nexport const shadows: Shadows = [\n \"none\",\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n // This one is special as it's used in dropdowns\n createShadow(6, 30, 0),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n];\n", "import { fade } from \"@material-ui/core/styles/colorManipulator\";\n\nimport { SaleorThemeColors } from \"./createSaleorTheme\";\n\nexport const dark: SaleorThemeColors = {\n alert: {\n paper: {\n error: \"#E0444E\",\n info: \"#2E2F31\",\n success: \"#5DC292\",\n warning: \"#E29A2E\",\n },\n icon: {\n error: \"#FE6E76\",\n info: \"#FAFAFA\",\n success: \"#5DC292\",\n warning: \"#FFB84E\",\n },\n },\n highlightInactive: {\n default: \"#78797A\",\n },\n autofill: \"#5D5881\",\n background: {\n default: \"#1D1E1F\",\n paper: \"#2E2F31\",\n },\n checkbox: {\n default: \"#FFFFFF\",\n },\n divider: \"#252728\",\n error: \"#C22D74\",\n font: {\n button: \"#202124\",\n default: \"#FCFCFC\",\n gray: \"#9E9D9D\",\n textButton: \"#FFFFFF\",\n textDisabled: \"#FCFCFC\",\n },\n gray: {\n default: \"#202124\",\n disabled: \"rgba(32, 33, 36, 0.6)\",\n },\n\n active: {\n 1: \"#056DFF\",\n 2: \"#378AFF\",\n 3: \"#68A7FF\",\n 4: \"#C1DBFF\",\n 5: \"#E6F0FF\",\n },\n main: {\n 1: \"#FCFCFC\",\n 2: \"rgba(252, 252, 252, 0.8)\",\n 3: \"rgba(252, 252, 252, 0.6)\",\n 4: \"rgba(252, 252, 252, 0.4)\",\n 5: \"rgba(252, 252, 252, 0.1)\",\n },\n fail: {\n dark: \"#B65757\",\n mid: \"#FEADAD\",\n light: \"#FEDEDE\",\n },\n errorAction: {\n 1: \"#B63755\",\n 2: \"#D36474\",\n 3: \"#E9878B\",\n 4: \"#F7B6B2\",\n 5: \"#FBDDD8\",\n },\n\n disabled: \"#CCDDDD\",\n paperBorder: \"#252728\",\n primary: \"#13BEBB\",\n secondary: \"#21125E\",\n success: \"#5DC292\",\n theme: \"dark\",\n};\nexport const light: SaleorThemeColors = {\n alert: {\n paper: {\n error: \"#FFD6D9\",\n info: \"#FFFFFF\",\n success: \"#DFF3E9\",\n warning: \"#FFF4E4\",\n },\n icon: {\n error: \"#FE6E76\",\n info: \"#28234A\",\n success: \"#5DC292\",\n warning: \"#FFB84E\",\n },\n },\n highlightInactive: {\n default: \"#C8C8C8\",\n },\n autofill: \"#f4f6c5\",\n background: {\n default: \"#EFF5F8\",\n paper: \"#FFFFFF\",\n },\n checkbox: {\n default: \"#616161\",\n },\n divider: \"#EAEAEA\",\n error: \"#FE6D76\",\n font: {\n button: \"#FFFFFF\",\n default: \"#28234A\",\n gray: fade(\"#28234A\", 0.6),\n textButton: \"#06847B\",\n textDisabled: fade(\"#28234A\", 0.4),\n },\n gray: {\n default: \"#C8C8C8\",\n disabled: \"#C0CFE2\",\n },\n\n active: {\n 1: \"#056DFF\",\n 2: \"#378AFF\",\n 3: \"#68A7FF\",\n 4: \"#C1DBFF\",\n 5: \"#E6F0FF\",\n },\n main: {\n 1: \"#28234A\",\n 2: \"rgba(40, 35, 74, 0.8)\",\n 3: \"rgba(40, 35, 74, 0.6)\",\n 4: \"rgba(40, 35, 74, 0.4)\",\n 5: \"rgba(40, 35, 74, 0.1)\",\n },\n fail: {\n dark: \"#B65757\",\n mid: \"#FEADAD\",\n light: \"#FEDEDE\",\n },\n errorAction: {\n 1: \"#B63755\",\n 2: \"#D36474\",\n 3: \"#E9878B\",\n 4: \"#F7B6B2\",\n 5: \"#FBDDD8\",\n },\n\n disabled: \"#CCDDDD\",\n paperBorder: \"#EAEAEA\",\n primary: \"#056DFF\",\n secondary: \"#FFFFFF\",\n success: \"#5DC292\",\n theme: \"light\",\n};\n", "export function changeColorMeta(color: string) {\n const themeColorTag = document.createElement(\"meta\");\n themeColorTag.setAttribute(\"content\", color);\n themeColorTag.setAttribute(\"name\", \"theme-color\");\n\n const existingColorTag = document.head.querySelector(\n `meta[name=\"theme-color\"]`\n );\n if (existingColorTag) {\n existingColorTag.remove();\n }\n document.head.appendChild(themeColorTag);\n}\n", "import React from \"react\";\n\nexport const CompleteIcon: React.FC<React.SVGProps<SVGSVGElement>> = (\n props\n) => (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <circle cx=\"20\" cy=\"20\" r=\"20\" fill=\"white\" />\n <circle cx=\"20\" cy=\"20\" r=\"14\" stroke=\"#5DC292\" strokeWidth=\"4\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M28.7678 13.7678C29.3536 14.3536 29.3536 15.3033 28.7678 15.8891L17.4142 27.2426L12.0607 21.8891C11.4749 21.3033 11.4749 20.3536 12.0607 19.7678L12.7678 19.0607C13.3536 18.4749 14.3033 18.4749 14.8891 19.0607L17.4142 21.5858L25.9393 13.0607C26.5251 12.4749 27.4749 12.4749 28.0607 13.0607L28.7678 13.7678Z\"\n fill=\"#5DC292\"\n />\n </svg>\n);\n\nCompleteIcon.displayName = \"CompleteIcon\";\n", "import React from \"react\";\n\nexport const InfoIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <circle cx=\"20\" cy=\"20\" r=\"20\" fill=\"white\" />\n <circle cx=\"20\" cy=\"20\" r=\"14\" stroke=\"#28234A\" strokeWidth=\"4\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M19.5 11C18.6716 11 18 11.6716 18 12.5V20.5C18 21.3284 18.6716 22 19.5 22H20.5C21.3284 22 22 21.3284 22 20.5V12.5C22 11.6716 21.3284 11 20.5 11H19.5ZM19.5 25C18.6716 25 18 25.6716 18 26.5V27.5C18 28.3284 18.6716 29 19.5 29H20.5C21.3284 29 22 28.3284 22 27.5V26.5C22 25.6716 21.3284 25 20.5 25H19.5Z\"\n fill=\"#28234A\"\n />\n </svg>\n);\n\nInfoIcon.displayName = \"InfoIcon\";\n", "import React from \"react\";\n\nexport const NotAllowedIcon: React.FC<React.SVGProps<SVGSVGElement>> = (\n props\n) => (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <circle cx=\"20\" cy=\"20\" r=\"16\" fill=\"#F5FAFB\" />\n <circle cx=\"20\" cy=\"20\" r=\"20\" fill=\"white\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M26.9531 29.7815C24.9914 31.1784 22.5917 32 20 32C13.3726 32 8 26.6274 8 20C8 17.4083 8.82158 15.0086 10.2185 13.0469L26.9531 29.7815ZM29.7815 26.9531L13.0469 10.2185C15.0086 8.82158 17.4083 8 20 8C26.6274 8 32 13.3726 32 20C32 22.5917 31.1784 24.9914 29.7815 26.9531ZM36 20C36 28.8366 28.8366 36 20 36C11.1634 36 4 28.8366 4 20C4 11.1634 11.1634 4 20 4C28.8366 4 36 11.1634 36 20Z\"\n fill=\"#FE6E76\"\n />\n </svg>\n);\n\nNotAllowedIcon.displayName = \"NotAllowedIcon\";\n", "import React from \"react\";\n\nexport const NotAllowedInvertedIcon: React.FC<React.SVGProps<SVGSVGElement>> = (\n props\n) => (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <circle cx=\"20\" cy=\"20\" r=\"16\" fill=\"#F5FAFB\" />\n <circle cx=\"20\" cy=\"20\" r=\"20\" fill=\"#FE6E76\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M26.9531 29.7815C24.9914 31.1784 22.5917 32 20 32C13.3726 32 8 26.6274 8 20C8 17.4083 8.82158 15.0086 10.2185 13.0469L26.9531 29.7815ZM29.7815 26.9531L13.0469 10.2185C15.0086 8.82158 17.4083 8 20 8C26.6274 8 32 13.3726 32 20C32 22.5917 31.1784 24.9914 29.7815 26.9531ZM36 20C36 28.8366 28.8366 36 20 36C11.1634 36 4 28.8366 4 20C4 11.1634 11.1634 4 20 4C28.8366 4 36 11.1634 36 20Z\"\n fill=\"white\"\n />\n </svg>\n);\n\nNotAllowedInvertedIcon.displayName = \"NotAllowedInvertedIcon\";\n", "import React from \"react\";\n\nexport const WarningIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <circle cx=\"20\" cy=\"20\" r=\"20\" fill=\"white\" />\n <circle cx=\"20\" cy=\"20\" r=\"14\" stroke=\"#FFB84E\" strokeWidth=\"4\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M19.5 11C18.6716 11 18 11.6716 18 12.5V20.5C18 21.3284 18.6716 22 19.5 22H20.5C21.3284 22 22 21.3284 22 20.5V12.5C22 11.6716 21.3284 11 20.5 11H19.5ZM19.5 25C18.6716 25 18 25.6716 18 26.5V27.5C18 28.3284 18.6716 29 19.5 29H20.5C21.3284 29 22 28.3284 22 27.5V26.5C22 25.6716 21.3284 25 20.5 25H19.5Z\"\n fill=\"#FFB84E\"\n />\n </svg>\n);\n\nWarningIcon.displayName = \"WarningIcon\";\n", "import { createSvgIcon } from \"@material-ui/core/utils\";\nimport React from \"react\";\n\nexport const CheckboxIcon = createSvgIcon(\n <>\n <rect\n width=\"22\"\n height=\"22\"\n rx=\"2\"\n ry=\"2\"\n x=\"1\"\n y=\"1\"\n strokeWidth=\"2\"\n stroke=\"currentColor\"\n fill=\"transparent\"\n strokeLinejoin=\"round\"\n />\n </>,\n \"CheckboxIcon\"\n);\n", "import { createSvgIcon } from \"@material-ui/core/utils\";\nimport React from \"react\";\n\nexport const CheckboxCheckedIcon = createSvgIcon(\n <>\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect\n x=\"0.5\"\n y=\"0.5\"\n width=\"23\"\n height=\"23\"\n rx=\"1.5\"\n fill=\"currentColor\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M17.5711 4.7629C17.9653 4.34801 18.6267 4.34801 19.0209 4.7629L20.3455 6.1568C20.7122 6.54279 20.7122 7.14848 20.3455 7.53447L9.45066 19L3.65454 12.9002C3.28777 12.5143 3.28777 11.9086 3.65454 11.5226L4.97906 10.1287C5.3733 9.71378 6.03466 9.71378 6.4289 10.1287L9.45066 13.3087L17.5711 4.7629Z\"\n fill=\"var(--background-paper)\"\n />\n </svg>\n </>,\n \"CheckboxCheckedIcon\"\n);\n", "import { createSvgIcon } from \"@material-ui/core/utils\";\nimport React from \"react\";\n\nexport const CheckboxIndeterminateIcon = createSvgIcon(\n <>\n <rect x=\"0.5\" y=\"0.5\" width=\"23\" height=\"23\" rx=\"1.5\" fill=\"currentColor\" />\n <rect\n x=\"4\"\n y=\"10\"\n width=\"16\"\n height=\"4\"\n rx=\"1.5\"\n fill=\"var(--background-paper)\"\n />\n </>,\n \"CheckboxIndeterminateIcon\"\n);\n", "import { createSvgIcon } from \"@material-ui/core/utils\";\nimport React from \"react\";\n\nexport const EditIcon = createSvgIcon(\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"m20.08125,2.98089c-1.2209,-1.21116 -3.1901,-1.21116 -4.4109,0l-0.9259,0.91856l-7.70221,7.641c-0.36706,0.36415 -0.58593,0.85157 -0.61423,1.36787l-0.1488,2.7151c-0.06931,1.2648 0.99458,2.2993 2.25694,2.1947l2.65699,-0.2202c0.48957,-0.0405 0.94911,-0.2524 1.29791,-0.5984l8.6196,-8.55117c1.2347,-1.22491 1.2347,-3.22129 0,-4.44619l-1.0294,-1.02127zm-11.56872,10.04163l6.96702,-6.91171l2.5116,2.4916l-6.97042,6.91501l-2.657,0.2202l0.1488,-2.7151zm8.44912,-8.38204l2.5116,2.4916l0.1671,-0.1658c0.4116,-0.4083 0.4116,-1.07376 0,-1.48206l-1.0294,-1.02126c-0.407,-0.40372 -1.0634,-0.40372 -1.4703,0l-0.179,0.17752zm-11.79343,-1.33339c-1.72946,0 -3.13147,1.40201 -3.13147,3.13147l0,12.52586c0,1.7295 1.40201,3.1315 3.13147,3.1315l12.52583,0c1.7295,0 3.1315,-1.402 3.1315,-3.1315l0,-4.5928c0,-0.5765 -0.4673,-1.0438 -1.0438,-1.0438c-0.5765,0 -1.0438,0.4673 -1.0438,1.0438l0,4.5928c0,0.5765 -0.4674,1.0438 -1.0439,1.0438l-12.52583,0c-0.57649,0 -1.04382,-0.4673 -1.04382,-1.0438l0,-12.52586c0,-0.57649 0.46733,-1.04382 1.04382,-1.04382l4.59282,0c0.57649,0 1.04382,-0.46734 1.04382,-1.04383c0,-0.57648 -0.46733,-1.04382 -1.04382,-1.04382l-4.59282,0z\"\n fill=\"currentColor\"\n />,\n \"EditIcon\"\n);\n", "import { createSvgIcon } from \"@material-ui/core/utils\";\nimport React from \"react\";\n\nexport const FilteringIcon = createSvgIcon(\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M2 4C2 2.89543 2.89543 2 4 2H20C21.1046 2 22 2.89543 22 4V6.67157C22 7.46722 21.6839 8.23029 21.1213 8.79289L15.7929 14.1213C15.6054 14.3089 15.5 14.5632 15.5 14.8284V19C15.5 19.4089 15.251 19.7766 14.8714 19.9285L9.87139 21.9285C9.5633 22.0517 9.21414 22.0141 8.93937 21.8281C8.6646 21.642 8.5 21.3318 8.5 21V14.8284C8.5 14.5632 8.39464 14.3089 8.20711 14.1213L2.87868 8.79289C2.31607 8.23028 2 7.46722 2 6.67157V4ZM20 4H4V6.67157C4 6.93679 4.10536 7.19114 4.29289 7.37868L9.62132 12.7071C10.1839 13.2697 10.5 14.0328 10.5 14.8284V19.523L13.5 18.323V14.8284C13.5 14.0328 13.8161 13.2697 14.3787 12.7071L19.7071 7.37868C19.8946 7.19114 20 6.93679 20 6.67157V4Z\"\n fill=\"currentColor\"\n />,\n \"FilteringIcon\"\n);\n", "import { createSvgIcon } from \"@material-ui/core/utils\";\nimport React from \"react\";\n\nexport const DeleteIcon = createSvgIcon(\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M10 1C8.89543 1 8 1.89543 8 3V4H4C3.44772 4 3 4.44772 3 5C3 5.55228 3.44772 6 4 6H20C20.5523 6 21 5.55228 21 5C21 4.44772 20.5523 4 20 4H16V3C16 1.89543 15.1046 1 14 1H10ZM14 4H10V3H14V4ZM7 9C7 8.44772 6.55228 8 6 8C5.44772 8 5 8.44772 5 9V20C5 21.6569 6.34315 23 8 23H16C17.6569 23 19 21.6569 19 20V9C19 8.44772 18.5523 8 18 8C17.4477 8 17 8.44772 17 9V20C17 20.5523 16.5523 21 16 21H8C7.44772 21 7 20.5523 7 20V9ZM10 11C10.5523 11 11 11.4477 11 12V17C11 17.5523 10.5523 18 10 18C9.44772 18 9 17.5523 9 17V12C9 11.4477 9.44772 11 10 11ZM15 12C15 11.4477 14.5523 11 14 11C13.4477 11 13 11.4477 13 12V17C13 17.5523 13.4477 18 14 18C14.5523 18 15 17.5523 15 17V12Z\"\n fill=\"currentColor\"\n />,\n \"DeleteIcon\"\n);\n", "import { createSvgIcon } from \"@material-ui/core/utils\";\nimport React from \"react\";\n\nexport const ImageIcon = createSvgIcon(\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M2 5C2 3.34315 3.34315 2 5 2H19C20.6569 2 22 3.34315 22 5V19C22 20.6569 20.6569 22 19 22H5C3.34315 22 2 20.6569 2 19V5ZM5 4C4.44772 4 4 4.44772 4 5V15.7962L11.0456 9.63136L12.5 11.0858L16 7.58579L20 11.5858V5C20 4.44772 19.5523 4 19 4H5ZM20 14.4142L16 10.4142L12.5 13.9142L10.9544 12.3686L4 18.4538V19C4 19.5523 4.44772 20 5 20H19C19.5523 20 20 19.5523 20 19V14.4142Z\"\n fill=\"currentColor\"\n />,\n \"ImageIcon\"\n);\n", "import { createSvgIcon } from \"@material-ui/core/utils\";\nimport React from \"react\";\n\nexport const CloseIcon = createSvgIcon(\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M18.7071 6.70711C19.0976 6.31658 19.0976 5.68342 18.7071 5.29289C18.3166 4.90237 17.6834 4.90237 17.2929 5.29289L12 10.5858L6.70711 5.29289C6.31658 4.90237 5.68342 4.90237 5.29289 5.29289C4.90237 5.68342 4.90237 6.31658 5.29289 6.7071L10.5858 12L5.29289 17.2929C4.90237 17.6834 4.90237 18.3166 5.29289 18.7071C5.68342 19.0976 6.31658 19.0976 6.70711 18.7071L12 13.4142L17.2929 18.7071C17.6834 19.0976 18.3166 19.0976 18.7071 18.7071C19.0976 18.3166 19.0976 17.6834 18.7071 17.2929L13.4142 12L18.7071 6.70711Z\"\n fill=\"currentColor\"\n />,\n \"CloseIcon\"\n);\n", "import { createSvgIcon } from \"@material-ui/core/utils\";\nimport React from \"react\";\n\nexport const PlusIcon = createSvgIcon(\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M13 4C13 3.5 12.5523 3 12 3C11.4477 3 11 3.5 11 4L11 11L4 11C3.5 11 3 11.4477 3 12C3 12.5523 3.5 13 4 13L11 13L11 20C11 20.5 11.4477 21 12 21C12.5523 21 13 20.5 13 20L13 13L20 13C20.5 13 21 12.5523 21 12C21 11.4477 20.5 11 20 11L13 11L13 4Z\"\n fill=\"currentColor\"\n />,\n \"PlusIcon\"\n);\n", "import { createSvgIcon } from \"@material-ui/core/utils\";\nimport React from \"react\";\n\nexport const ArrowRightIcon = createSvgIcon(\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M13.8446 6.2943C14.237 5.9019 14.8732 5.9019 15.2656 6.2943L20.6464 11.6752C20.8417 11.8704 20.8417 12.187 20.6464 12.3823L15.2656 17.7632C14.8732 18.1556 14.237 18.1556 13.8446 17.7632C13.4522 17.3708 13.4522 16.7346 13.8446 16.3422L17.1532 13.0335H4.00479C3.44986 13.0335 3 12.5837 3 12.0287C3 11.4738 3.44986 11.0239 4.00479 11.0239H17.1532L13.8446 7.71528C13.4522 7.32289 13.4522 6.68669 13.8446 6.2943Z\"\n fill=\"currentColor\"\n />,\n \"ArrowRightIcon\"\n);\n", "import { createSvgIcon } from \"@material-ui/core/utils\";\nimport React from \"react\";\n\nexport const MoreIcon = createSvgIcon(\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M10 18C10 16.8954 10.8954 16 12 16C13.1046 16 14 16.8954 14 18C14 19.1046 13.1046 20 12 20C10.8954 20 10 19.1046 10 18ZM10 12C10 10.8954 10.8954 10 12 10C13.1046 10 14 10.8954 14 12C14 13.1046 13.1046 14 12 14C10.8954 14 10 13.1046 10 12ZM12 4C10.8954 4 10 4.89543 10 6C10 7.10457 10.8954 8 12 8C13.1046 8 14 7.10457 14 6C14 4.89543 13.1046 4 12 4Z\"\n fill=\"currentColor\"\n />,\n \"MoreIcon\"\n);\n", "import { createSvgIcon } from \"@material-ui/core/utils\";\nimport React from \"react\";\n\nexport const RadioIcon = createSvgIcon(\n <>\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"11\"\n fill=\"white\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n />\n </>,\n \"RadioIcon\"\n);\n", "import { createSvgIcon } from \"@material-ui/core/utils\";\nimport React from \"react\";\n\nexport const RadioCheckedIcon = createSvgIcon(\n <>\n <circle cx=\"12\" cy=\"12\" r=\"12\" fill=\"currentColor\" />\n <circle cx=\"12\" cy=\"12\" r=\"5\" fill=\"var(--background-default)\" />\n </>,\n \"RadioCheckedIcon\"\n);\n", "import { createSvgIcon } from \"@material-ui/core/utils\";\nimport React from \"react\";\n\nexport const SearchIcon = createSvgIcon(\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M17 10.5C17 14.0899 14.0899 17 10.5 17C6.91015 17 4 14.0899 4 10.5C4 6.91015 6.91015 4 10.5 4C14.0899 4 17 6.91015 17 10.5ZM15.7618 17.176C14.3145 18.3183 12.4869 19 10.5 19C5.80558 19 2 15.1944 2 10.5C2 5.80558 5.80558 2 10.5 2C15.1944 2 19 5.80558 19 10.5C19 12.4869 18.3183 14.3145 17.176 15.7618L21.7071 20.2929C22.0976 20.6834 22.0976 21.3166 21.7071 21.7071C21.3166 22.0976 20.6834 22.0976 20.2929 21.7071L15.7618 17.176Z\"\n fill=\"currentColor\"\n />,\n \"SearchIcon\"\n);\n", "import { createSvgIcon } from \"@material-ui/core/utils\";\nimport React from \"react\";\n\nexport const NavigatorIcon = createSvgIcon(\n <>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.25503 12.198L11.2063 3.0483C12.2646 1.09249 15.2463 2.08503 14.9212 4.28496L14.2397 8.89774L15.7025 8.73522L15.807 9.67606L15.9115 10.6169L13.2283 10.9151C12.6114 10.9836 12.0966 10.4499 12.1873 9.83584L13.0483 4.00824C13.0638 3.90348 12.9218 3.85622 12.8714 3.94935L7.92015 13.099C7.84742 13.2334 7.95568 13.3942 8.10757 13.3773L10.8039 13.0777C11.4157 13.0097 11.9286 13.5344 11.8467 14.1445L11.0617 19.9934C11.0477 20.0981 11.1896 20.1437 11.2391 20.0504L16.0997 10.8939C16.171 10.7595 16.0627 10.6001 15.9115 10.6169L15.807 9.67606L15.7025 8.73522C17.3657 8.55042 18.5566 10.3034 17.772 11.7815L12.9114 20.9381C11.8715 22.8971 8.89023 21.9397 9.18525 19.7416L9.80911 15.0932L8.31664 15.259C6.64589 15.4446 5.455 13.6764 6.25503 12.198Z\"\n fill=\"currentColor\"\n />\n </>,\n \"NavigatorIcon\"\n);\n", "import React from \"react\";\nimport { Button } from \"..\";\n\nimport { useActionBar } from \"../ActionBar\";\nimport { ActionBar } from \"../ActionBar/ActionBar\";\nimport {\n ConfirmButton,\n ConfirmButtonLabels,\n ConfirmButtonTransitionState,\n} from \"../ConfirmButton\";\nimport { ButtonTooltipDecorator } from \"./ButtonTooltipDecorator\";\nimport useStyles from \"./styles\";\n\nexport type SavebarLabels = ConfirmButtonLabels &\n Record<\"delete\" | \"cancel\", string>;\nexport type SavebarTooltips = Partial<\n Record<\"confirm\" | \"delete\" | \"cancel\", string>\n>;\nexport interface SavebarProps {\n disabled: boolean;\n state: ConfirmButtonTransitionState;\n labels: SavebarLabels;\n tooltips?: SavebarTooltips;\n onCancel: () => void;\n onDelete?: () => void;\n onSubmit: () => void;\n}\n\nexport const Savebar: React.FC<SavebarProps> = ({\n disabled,\n labels,\n tooltips,\n state,\n onCancel,\n onDelete,\n onSubmit,\n}) => {\n const classes = useStyles();\n const { setDocked } = useActionBar();\n\n return (\n <ActionBar state={state} disabled={disabled}>\n {!!onDelete && (\n <ButtonTooltipDecorator tooltip={tooltips?.delete}>\n <Button\n error\n variant=\"primary\"\n onClick={onDelete}\n data-test=\"button-bar-delete\"\n >\n {labels.delete}\n </Button>\n </ButtonTooltipDecorator>\n )}\n <div className={classes.spacer} />\n <ButtonTooltipDecorator tooltip={tooltips?.cancel}>\n <Button\n color=\"text\"\n variant=\"secondary\"\n onClick={onCancel}\n data-test=\"button-bar-cancel\"\n >\n {labels.cancel}\n </Button>\n </ButtonTooltipDecorator>\n <ButtonTooltipDecorator tooltip={tooltips?.confirm}>\n <ConfirmButton\n disabled={disabled}\n labels={labels}\n onClick={onSubmit}\n transitionState={state}\n data-test=\"button-bar-confirm\"\n onTransitionToDefault={() => setDocked(true)}\n />\n </ButtonTooltipDecorator>\n </ActionBar>\n );\n};\nSavebar.displayName = \"Savebar\";\n", "import Card from \"@material-ui/core/Card\";\nimport CardContent from \"@material-ui/core/CardContent\";\nimport Container from \"@material-ui/core/Container\";\nimport Portal from \"@material-ui/core/Portal\";\nimport clsx from \"clsx\";\nimport React from \"react\";\n\nimport { ConfirmButtonTransitionState } from \"../ConfirmButton\";\nimport { useWindowScroll } from \"../tools\";\nimport { useActionBar } from \"./context\";\nimport useStyles from \"./styles\";\n\nexport interface ActionBarProps {\n disabled: boolean;\n state: ConfirmButtonTransitionState;\n children: React.ReactNode[] | React.ReactNode;\n}\n\nexport const ActionBar: React.FC<ActionBarProps> = ({\n disabled,\n children,\n state,\n ...rest\n}) => {\n const classes = useStyles();\n\n const { anchor, docked, setDocked } = useActionBar();\n const scrollPosition = useWindowScroll();\n\n React.useEffect(() => {\n if (!disabled && state !== \"loading\") {\n setDocked(false);\n }\n }, [disabled, state, setDocked]);\n React.useEffect(() => () => setDocked(true), [setDocked]);\n\n const scrolledToBottom =\n scrollPosition.y + window.innerHeight >= document.body.scrollHeight;\n\n if (!anchor.current) {\n return null;\n }\n\n return (\n <Portal container={anchor.current}>\n <div className={classes.root} {...rest}>\n <Container maxWidth=\"lg\">\n <Card\n className={clsx(classes.paper, {\n [classes.shadow]: !(docked || scrolledToBottom),\n })}\n >\n <CardContent className={classes.content}>{children}</CardContent>\n </Card>\n </Container>\n </div>\n </Portal>\n );\n};\nActionBar.displayName = \"ActionBar\";\n", "import throttle from \"lodash/throttle\";\nimport { useCallback, useEffect, useState } from \"react\";\n\nexport type Position = Record<\"x\" | \"y\", number>;\n\nfunction getPosition<T extends HTMLElement>(\n anchor?: T | null\n): Position | undefined {\n if (anchor) {\n return {\n x: anchor.scrollLeft,\n y: anchor.scrollTop,\n };\n }\n return undefined;\n}\n\nexport function isScrolledToBottom(\n anchor: HTMLElement,\n position: Position,\n offset: number = 0\n) {\n return !!anchor && position\n ? position.y + anchor.clientHeight + offset >= anchor.scrollHeight\n : undefined;\n}\n\nexport function isScrolledToTop(\n anchor: HTMLElement,\n position: Position,\n offset: number = 0\n) {\n return !!anchor && position ? position.y <= offset : undefined;\n}\n\nexport interface UseElementScrollOpts<T extends HTMLElement> {\n anchor: T | null;\n position: Position | undefined;\n}\n\nexport interface UseElementScroll<T extends HTMLElement>\n extends UseElementScrollOpts<T> {\n setAnchor: React.Dispatch<T | null>;\n}\n\nexport function useElementScroll<T extends HTMLElement>(): UseElementScroll<T> {\n const [anchorEl, setAnchorEl] = useState<T | null>(null);\n const [scroll, setScroll] = useState(getPosition(anchorEl));\n\n useEffect(() => {\n if (!!anchorEl) {\n const recalcScrollPos = throttle(\n () => setScroll(getPosition(anchorEl)),\n 100\n );\n anchorEl.addEventListener(\"scroll\", recalcScrollPos);\n const resizeObserver = new ResizeObserver(recalcScrollPos);\n resizeObserver.observe(anchorEl);\n\n return () => {\n anchorEl.removeEventListener(\"scroll\", recalcScrollPos);\n resizeObserver.disconnect();\n };\n }\n\n // Silence eslint's complaining about not all code returning value\n return;\n }, [anchorEl]);\n\n useEffect(() => {\n setTimeout(() => setScroll(getPosition(anchorEl)), 100);\n }, [anchorEl]);\n\n const setAnchor = useCallback((el) => {\n setAnchorEl(el);\n }, []);\n\n return {\n setAnchor,\n anchor: anchorEl,\n position: scroll,\n };\n}\n", "// It's only optimized for esm, cjs will remain fat blob\n// Ref https://github.com/formium/tsdx/issues/763\nimport throttle from \"lodash/throttle\";\nimport { useEffect, useState } from \"react\";\n\nfunction getPosition() {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset,\n };\n}\n\nexport function useWindowScroll() {\n const [scroll, setScroll] = useState(getPosition);\n\n useEffect(() => {\n const handleScroll = throttle(() => setScroll(getPosition()), 100);\n\n window.addEventListener(\"scroll\", handleScroll);\n\n return () => window.removeEventListener(\"scroll\", handleScroll);\n }, []);\n\n return scroll;\n}\n", "import { makeStyles } from \"../theme\";\n\nconst useStyles = makeStyles(\n (theme) => ({\n content: {\n \"&:last-child\": {\n paddingBottom: theme.spacing(2),\n },\n display: \"flex\",\n gap: theme.spacing(2),\n paddingBottom: theme.spacing(2),\n paddingTop: theme.spacing(2),\n [theme.breakpoints.down(\"sm\")]: {\n marginTop: theme.spacing(1),\n },\n },\n paper: {\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0,\n },\n root: {\n height: 80,\n },\n shadow: {\n boxShadow: `0 -24px 20px -20px rgba(0, 0, 0, 0.15)`,\n },\n }),\n { name: \"Savebar\" }\n);\n\nexport default useStyles;\n", "import MuiButton, {\n ButtonProps as MuiButtonProps,\n ButtonTypeMap as MuiButtonTypeMap,\n} from \"@material-ui/core/Button\";\nimport { OverridableComponent } from \"@material-ui/core/OverridableComponent\";\nimport clsx from \"clsx\";\nimport React from \"react\";\n\nimport useStyles from \"./styles\";\n\nexport type ButtonVariant = \"primary\" | \"secondary\" | \"tertiary\";\n// Aliasing \"default\" to \"text\" because \"default\" isn't actually default\nexport type ButtonColor = \"primary\" | \"secondary\" | \"text\";\n\ninterface ButtonInnerProps {\n color?: ButtonColor;\n error?: boolean;\n variant?: ButtonVariant;\n}\n\nexport interface ButtonTypeMap<P = {}, D extends React.ElementType = \"button\"> {\n props: Omit<MuiButtonTypeMap<P, D>[\"props\"], \"variant\" | \"color\"> &\n ButtonInnerProps;\n defaultComponent: D;\n classKey: never;\n}\n\nexport type ButtonProps<T extends React.ElementType = \"button\"> = Omit<\n MuiButtonProps<T>,\n \"variant\"\n> &\n ButtonInnerProps;\n\nfunction getButtonProps(\n colorProp: ButtonColor,\n variant: ButtonVariant\n): Partial<MuiButtonProps> {\n const color = colorProp === \"text\" ? \"default\" : colorProp;\n\n switch (variant) {\n case \"primary\":\n return { variant: \"contained\", color };\n case \"secondary\":\n return { variant: \"outlined\", color };\n default:\n return { variant: \"text\", color };\n }\n}\n\nconst _Button: React.FC<ButtonProps> = ({\n className,\n color = \"primary\",\n error,\n variant = \"tertiary\",\n ...props\n}) => {\n const classes = useStyles();\n\n return (\n <MuiButton\n className={clsx(className, {\n [classes.primary]: variant === \"primary\" && error,\n [classes.primaryDisabled]:\n variant === \"primary\" && error && props.disabled,\n\n [classes.secondary]: variant === \"secondary\" && error,\n [classes.secondaryDisabled]:\n variant === \"secondary\" && error && props.disabled,\n\n [classes.tertiary]: variant === \"tertiary\" && error,\n [classes.tertiaryDisabled]:\n variant === \"tertiary\" && error && props.disabled,\n })}\n {...getButtonProps(color, variant)}\n disableRipple\n {...props}\n />\n );\n};\n_Button.displayName = \"Button\";\nexport const Button = _Button as OverridableComponent<ButtonTypeMap>;\n", "import { makeStyles } from \"../theme\";\n\nconst useStyles = makeStyles(\n (theme) => ({\n primary: {\n \"&&\": {\n \"&:hover, &.Mui-focusVisible\": {\n background: theme.palette.saleor.errorAction[2],\n },\n \"&:active\": {\n background: theme.palette.saleor.errorAction[3],\n },\n },\n background: theme.palette.saleor.errorAction[1],\n },\n primaryDisabled: {\n \"&&&\": {\n background: theme.palette.saleor.errorAction[5],\n },\n },\n\n secondary: {\n \"&&\": {\n \"&:hover, &.Mui-focusVisible\": {\n background: theme.palette.saleor.errorAction[5],\n borderColor: theme.palette.saleor.errorAction[1],\n },\n \"&:active\": {\n background: theme.palette.saleor.errorAction[4],\n borderColor: theme.palette.saleor.errorAction[1],\n },\n },\n borderColor: theme.palette.saleor.errorAction[4],\n color: theme.palette.saleor.errorAction[1],\n },\n secondaryDisabled: {\n \"&&&\": {\n borderColor: theme.palette.saleor.errorAction[5],\n color: theme.palette.saleor.errorAction[5],\n },\n },\n\n tertiary: {\n \"&&\": {\n \"&:hover, &.Mui-focusVisible\": {\n background: theme.palette.saleor.errorAction[5],\n },\n \"&:active\": {\n background: theme.palette.saleor.errorAction[4],\n },\n },\n color: theme.palette.saleor.errorAction[1],\n },\n tertiaryDisabled: {\n \"&&&\": {\n color: theme.palette.saleor.errorAction[5],\n },\n },\n }),\n {\n name: \"Button\",\n }\n);\n\nexport default useStyles;\n", "import { Button, ButtonProps } from \"../Button\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport CheckIcon from \"@material-ui/icons/Check\";\nimport clsx from \"clsx\";\nimport React from \"react\";\n\nimport useStyles from \"./styles\";\n\nconst DEFAULT_NOTIFICATION_SHOW_TIME = 3000;\nexport type ConfirmButtonTransitionState =\n | \"loading\"\n | \"success\"\n | \"error\"\n | \"default\";\n\nexport type ConfirmButtonLabels = Record<\"confirm\" | \"error\", string>;\nexport interface ConfirmButtonProps extends Omit<ButtonProps, \"classes\"> {\n labels: ConfirmButtonLabels;\n noTransition?: boolean;\n transitionState: ConfirmButtonTransitionState;\n onTransitionToDefault?: () => void;\n}\n\nexport const ConfirmButton: React.FC<ConfirmButtonProps> = ({\n children,\n disabled,\n labels,\n noTransition,\n transitionState,\n variant = \"primary\",\n onClick,\n onTransitionToDefault,\n ...props\n}) => {\n const classes = useStyles();\n const [displayCompletedActionState, setDisplayCompletedActionState] =\n React.useState(false);\n const timeout = React.useRef<number>();\n\n React.useEffect(() => {\n if (!noTransition && transitionState === \"loading\") {\n setDisplayCompletedActionState(true);\n }\n }, [transitionState, noTransition]);\n\n React.useEffect(() => {\n if (\n !noTransition &&\n ([\"error\", \"success\"] as ConfirmButtonTransitionState[]).includes(\n transitionState\n )\n ) {\n timeout.current = setTimeout(() => {\n setDisplayCompletedActionState(false);\n if (onTransitionToDefault) {\n onTransitionToDefault();\n }\n }, DEFAULT_NOTIFICATION_SHOW_TIME) as unknown as number;\n } else if (transitionState === \"loading\") {\n clearTimeout(timeout.current);\n }\n\n return () => {\n if (timeout.current) {\n clearTimeout(timeout.current);\n }\n };\n }, [noTransition, transitionState, onTransitionToDefault]);\n\n const isCompleted = noTransition\n ? transitionState !== \"default\"\n : displayCompletedActionState;\n\n return (\n <Button\n variant={variant}\n error={transitionState === \"error\" && isCompleted}\n onClick={transitionState === \"loading\" ? undefined : onClick}\n disabled={!isCompleted && disabled}\n data-test-state={isCompleted ? transitionState : \"default\"}\n {...props}\n >\n <CircularProgress\n size={24}\n color=\"inherit\"\n className={clsx({\n [classes.progress]: true,\n [classes.invisible]: transitionState !== \"loading\",\n })}\n />\n <CheckIcon\n className={clsx({\n [classes.icon]: true,\n [classes.invisible]: !(transitionState === \"success\" && isCompleted),\n })}\n />\n <span\n className={clsx({\n [classes.label]: true,\n [classes.invisible]:\n (transitionState === \"loading\" || transitionState === \"success\") &&\n isCompleted,\n })}\n >\n {transitionState === \"error\" && isCompleted\n ? labels.error\n : children || labels.confirm}\n </span>\n </Button>\n );\n};\n\nConfirmButton.displayName = \"ConfirmButton\";\n", "import { makeStyles } from \"../theme\";\n\nconst useStyles = makeStyles(\n (theme) => ({\n error: {\n \"&:hover\": {\n backgroundColor: theme.palette.error.main,\n },\n backgroundColor: theme.palette.error.main,\n color: theme.palette.error.contrastText,\n },\n icon: {\n marginLeft: \"0 !important\",\n position: \"absolute\",\n transitionDuration: theme.transitions.duration.standard + \"ms\",\n },\n invisible: {\n opacity: 0,\n },\n label: {\n alignItems: \"center\",\n display: \"flex\",\n transitionDuration: theme.transitions.duration.standard + \"ms\",\n },\n progress: {\n \"& svg\": {\n margin: 0,\n },\n position: \"absolute\",\n transitionDuration: theme.transitions.duration.standard + \"ms\",\n },\n success: {\n \"&:hover\": {\n backgroundColor: theme.palette.primary.main,\n },\n backgroundColor: theme.palette.primary.main,\n color: theme.palette.primary.contrastText,\n },\n }),\n { name: \"ConfirmButton\" }\n);\n\nexport default useStyles;\n", "import Tooltip from \"@material-ui/core/Tooltip\";\nimport React from \"react\";\n\ninterface ButtonTooltipDecoratorProps {\n tooltip?: string;\n}\n\nexport const ButtonTooltipDecorator: React.FC<ButtonTooltipDecoratorProps> = ({\n tooltip,\n children,\n}) => {\n if (tooltip) {\n return (\n <Tooltip title={tooltip} placement=\"top\">\n <span>{children}</span>\n </Tooltip>\n );\n }\n\n return <>{children}</>;\n};\nButtonTooltipDecorator.displayName = \"ButtonTooltipDecorator\";\n", "import { makeStyles } from \"../theme\";\n\nconst useStyles = makeStyles(\n () => ({\n spacer: {\n flex: \"1\",\n },\n }),\n { name: \"Savebar\" }\n);\n\nexport default useStyles;\n", "import Portal from \"@material-ui/core/Portal\";\nimport Skeleton from \"@material-ui/lab/Skeleton\";\nimport React from \"react\";\n\nimport { LayoutButton, LayoutButtonProps } from \"../LayoutButton\";\nimport { useBacklink } from \"./context\";\nimport useStyles from \"./styles\";\nimport { ArrowRightIcon } from \"../icons\";\n\nexport interface AppHeaderProps extends LayoutButtonProps {\n children: React.ReactNode;\n disabled?: boolean;\n onClick: () => void;\n}\n\nexport const Backlink: React.FC<AppHeaderProps> = ({\n children,\n disabled,\n onClick,\n ...props\n}) => {\n const classes = useStyles();\n const anchor = useBacklink();\n\n if (!anchor.current) {\n return null;\n }\n\n return (\n <Portal container={anchor.current}>\n <LayoutButton\n className={classes.root}\n disabled={disabled}\n onClick={onClick}\n data-test-id=\"app-header-back-button\"\n {...props}\n >\n <ArrowRightIcon className={classes.backArrow} />\n {children ? (\n <div className={classes.title}>{children}</div>\n ) : (\n <Skeleton className={classes.skeleton} />\n )}\n </LayoutButton>\n </Portal>\n );\n};\nBacklink.displayName = \"Backlink\";\n", "import type { ButtonBaseProps } from \"@material-ui/core/ButtonBase\";\n\nimport ButtonBase from \"@material-ui/core/ButtonBase\";\nimport clsx from \"clsx\";\nimport React from \"react\";\nimport { UserInteraction } from \"../../types/utils\";\n\nimport useStyles from \"./styles\";\n\nexport type LayoutButtonProps<T extends React.ElementType = \"button\"> =\n ButtonBaseProps<T> & {\n state?: UserInteraction;\n };\n\nexport const LayoutButton: React.FC<LayoutButtonProps> = React.forwardRef(\n ({ className, children, state = \"default\", ...rest }, ref) => {\n const classes = useStyles();\n\n return (\n <ButtonBase\n className={clsx(classes.root, className, {\n [classes.hover]: state === \"hover\",\n [classes.active]: state === \"active\",\n })}\n disableRipple\n ref={ref}\n {...rest}\n >\n {children}\n </ButtonBase>\n );\n }\n);\nLayoutButton.displayName = \"LayoutButton\";\n", "import { fade } from \"@material-ui/core/styles\";\n\nimport { makeStyles } from \"../theme\";\n\nconst useStyles = makeStyles(\n (theme) => ({\n root: {\n \"&:hover, &:focus-visible, &$hover\": {\n background: theme.palette.background.paper,\n color: theme.palette.primary.main,\n },\n \"&:active, &$active\": {\n background: theme.palette.saleor.active[4],\n color: theme.palette.primary.main,\n },\n background: fade(theme.palette.background.paper, 0.4),\n borderRadius: 4,\n color: theme.palette.text.secondary,\n fontSize: theme.typography.body1.fontSize,\n fontWeight: 600,\n height: 48,\n padding: theme.spacing(0.5, 2),\n textAlign: \"center\",\n textTransform: \"uppercase\",\n transition: theme.transitions.duration.shorter + \"ms\",\n },\n hover: {},\n active: {},\n }),\n { name: \"LayoutButton\" }\n);\n\nexport default useStyles;\n", "import { makeStyles } from \"../theme\";\n\nconst useStyles = makeStyles(\n (theme) => ({\n backArrow: {\n fontSize: 30,\n transform: \"rotate(180deg)\",\n },\n menuButton: {\n flex: \"0 0 auto\",\n marginLeft: theme.spacing(-2),\n marginRight: theme.spacing(),\n marginTop: theme.spacing(-2),\n },\n root: {\n alignItems: \"center\",\n cursor: \"pointer\",\n display: \"flex\",\n marginTop: theme.spacing(0.5),\n [theme.breakpoints.down(\"sm\")]: {\n margin: theme.spacing(4, 0, 0, 0),\n },\n },\n skeleton: {\n width: \"10rem\",\n },\n title: {\n lineHeight: 1.1,\n flex: 1,\n marginLeft: theme.spacing(),\n },\n }),\n { name: \"AppHeader\" }\n);\n\nexport default useStyles;\n", "import clsx from \"clsx\";\nimport React from \"react\";\n\nimport { Logo } from \"../icons/Logo\";\nimport { localStorageKeys } from \"../localStorageKeys\";\nimport { makeStyles } from \"../theme\";\nimport useLocalStorage from \"../tools/useLocalStorage\";\nimport { ExpandButton } from \"./ExpandButton\";\nimport { MenuItem, menuWidth, shrunkMenuWidth } from \"./MenuItem\";\nimport { BaseSidebarProps } from \"./types\";\n\nconst useStyles = makeStyles(\n (theme) => ({\n expandButton: {\n marginLeft: theme.spacing(1.5),\n },\n float: {\n height: \"100vh\",\n position: \"fixed\",\n overflowY: \"auto\",\n overflowX: \"hidden\",\n paddingBottom: theme.spacing(3),\n },\n logo: {\n margin: `36px 0 ${theme.spacing(3)} ${theme.spacing(2.5)}`,\n },\n root: {\n transition: \"width 0.5s ease\",\n width: menuWidth,\n },\n rootShrink: {\n width: shrunkMenuWidth,\n },\n toolbarContainer: {\n margin: theme.spacing(1, 0, 1, 1.5),\n },\n }),\n {\n name: \"SideBar\",\n }\n);\n\nexport interface SidebarProps extends BaseSidebarProps {\n activeId: string;\n}\n\nexport const Sidebar: React.FC<SidebarProps> = ({\n activeId,\n menuItems,\n toolbar,\n onMenuItemClick,\n}) => {\n const classes = useStyles({});\n const { value: isShrunkStr, setValue: setShrink } = useLocalStorage(\n localStorageKeys.menuShrink,\n false.toString()\n );\n const isShrunk = isShrunkStr === \"true\";\n\n return (\n <div\n className={clsx(classes.root, {\n [classes.rootShrink]: isShrunk,\n })}\n >\n <div className={classes.float}>\n <div className={classes.logo}>\n <Logo />\n </div>\n {menuItems.map((menuItem) => (\n <MenuItem\n activeId={activeId}\n isMenuShrunk={isShrunk}\n menuItem={menuItem}\n onClick={onMenuItemClick}\n key={menuItem.ariaLabel}\n />\n ))}\n {toolbar && <div className={classes.toolbarContainer}>{toolbar}</div>}\n <ExpandButton\n className={classes.expandButton}\n isShrunk={isShrunk}\n onClick={() => setShrink((!isShrunk).toString())}\n />\n </div>\n </div>\n );\n};\n\nSidebar.displayName = \"SideBar\";\n", "import React from \"react\";\n\nexport const Logo: React.FC = () => (\n <svg\n width=\"36\"\n height=\"33\"\n viewBox=\"0 0 36 33\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M16.6072 33C22.4977 33 23.9789 30.6214 23.9789 27.3629C23.9789 23.3549 20.3772 22.6056 17.3814 22.1167C15.0924 21.7258 14.0489 21.5304 14.0489 20.1292C14.0489 19.0867 14.9577 18.6954 16.4389 18.6954C18.2566 18.6954 18.7614 19.2168 18.9298 20.7482L23.7097 20.0314C23.3055 16.7404 21.4542 15.0787 16.5735 15.0787C11.2216 15.0787 9.33654 17.2293 9.33654 20.6504C9.30299 25.082 13.4768 25.5382 16.5735 26.0594C18.492 26.418 19.2328 26.7437 19.2328 28.0146C19.2328 29.0573 18.5933 29.5135 16.6745 29.5135C14.5539 29.5135 13.9144 29.1551 13.6451 27.4281L9 28.1124C9.43753 31.599 11.4908 33 16.6072 33Z\"\n fill=\"#28234A\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M19.7838 0L13.4043 6.64709H29.1638L35.5433 0H19.7838Z\"\n fill=\"#8AC4EB\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.15911 2.31187C6.27552 2.1958 6.4332 2.13062 6.59759 2.13062H27.3248C27.5761 2.13062 27.8026 2.28211 27.8987 2.51437C27.9947 2.74664 27.9412 3.01388 27.7632 3.19134L21.7867 9.1508C21.6703 9.26687 21.5126 9.33205 21.3482 9.33205H0.621008C0.369679 9.33205 0.143131 9.18056 0.0471181 8.94829C-0.0488948 8.71603 0.00456112 8.44879 0.182532 8.27133L6.15911 2.31187ZM6.85429 3.37259L2.12325 8.09007H21.0915L25.8225 3.37259H6.85429Z\"\n fill=\"#28234A\"\n />\n </svg>\n);\n\nLogo.displayName = \"Logo\";\n", "import { ButtonProps } from \"@material-ui/core/Button\";\nimport clsx from \"clsx\";\nimport React from \"react\";\nimport { ArrowRightIcon } from \"../icons\";\n\nimport { SquareButton } from \"../SquareButton\";\nimport { makeStyles } from \"../theme\";\n\nconst useStyles = makeStyles(\n (theme) => ({\n arrow: {\n transition: theme.transitions.duration.shortest + \"ms\",\n },\n shrunk: {\n transform: \"scaleX(-1)\",\n },\n }),\n {\n name: \"ExpandButton\",\n }\n);\n\nexport interface ExpandButtonProps extends ButtonProps {\n isShrunk: boolean;\n}\n\nexport const ExpandButton: React.FC<ExpandButtonProps> = ({\n isShrunk,\n ...rest\n}) => {\n const classes = useStyles({});\n\n return (\n <SquareButton disableRipple {...rest}>\n <ArrowRightIcon\n className={clsx(classes.arrow, {\n [classes.shrunk]: !isShrunk,\n })}\n />\n </SquareButton>\n );\n};\n\nExpandButton.displayName = \"ExpandButton\";\n", "import ButtonBase, { ButtonBaseProps } from \"@material-ui/core/ButtonBase\";\nimport clsx from \"clsx\";\nimport React from \"react\";\n\nimport { makeStyles } from \"../theme\";\n\nconst useStyles = makeStyles(\n (theme) => ({\n disabled: {\n \"&$root\": {\n color: theme.palette.grey[500],\n },\n },\n root: {\n \"&:hover, &:focus-visible\": {\n background: theme.palette.saleor.active[5],\n },\n \"&:active\": {\n background: theme.palette.saleor.active[4],\n },\n background: theme.palette.background.paper,\n borderRadius: 4,\n color: theme.palette.primary.main,\n height: 48,\n transition: theme.transitions.duration.shortest + \"ms\",\n width: 48,\n },\n }),\n {\n name: \"ExpandButton\",\n }\n);\n\nexport const SquareButton: React.FC<ButtonBaseProps> = React.forwardRef(\n ({ className, ...rest }, ref) => {\n const classes = useStyles({});\n\n return (\n <ButtonBase\n className={clsx(classes.root, className, {\n [classes.disabled]: rest.disabled,\n })}\n disableRipple\n ref={ref}\n {...rest}\n />\n );\n }\n);\n\nSquareButton.displayName = \"SquareButton\";\n", "import ClickAwayListener from \"@material-ui/core/ClickAwayListener\";\nimport MuiMenuItem from \"@material-ui/core/MenuItem\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Popper from \"@material-ui/core/Popper\";\nimport { fade } from \"@material-ui/core/styles\";\nimport Typography from \"@material-ui/core/Typography\";\nimport clsx from \"clsx\";\nimport React from \"react\";\nimport SVG from \"react-inlinesvg\";\n\nimport { makeStyles } from \"../theme\";\nimport { SidebarMenuItem } from \"./types\";\n\nexport interface MenuItemProps {\n activeId: string;\n isMenuShrunk: boolean;\n menuItem: SidebarMenuItem;\n onClick: (url: string) => void;\n}\n\nexport const menuWidth = 210;\nexport const shrunkMenuWidth = 72;\n\nconst useStyles = makeStyles(\n (theme) => ({\n hideLabel: {\n \"&$label\": {\n opacity: 0,\n },\n },\n icon: {\n \"& svg\": {\n height: 24,\n width: 24,\n },\n marginRight: theme.spacing(1.5),\n transition: theme.transitions.duration.shortest + \"ms\",\n },\n label: {\n cursor: \"pointer\",\n display: \"block\",\n fontSize: 16,\n fontWeight: \"bold\",\n opacity: 1,\n transition: theme.transitions.duration.shortest + \"ms\",\n },\n labelRoot: {\n position: \"absolute\",\n left: 72,\n width: 200,\n textAlign: \"left\",\n pointerEvents: \"none\",\n },\n menuItemBtn: {\n \"&:focus\": {\n color: theme.palette.primary.main,\n outline: 0,\n },\n background: \"none\",\n border: \"none\",\n color: \"inherit\",\n cursor: \"pointer\",\n display: \"inline-flex\",\n margin: 0,\n padding: 0,\n },\n paper: {\n borderRadius: 4,\n boxShadow: \"0px 6px 30px rgba(0, 0, 0, 0.16)\",\n cursor: \"default\",\n textAlign: \"left\",\n },\n popper: {\n margin: theme.spacing(3.5, 0, 0, 0),\n marginLeft: -menuWidth / 2,\n zIndex: 2,\n },\n popperShrink: {\n marginLeft: -shrunkMenuWidth / 2,\n },\n root: {\n \"&:hover, &:focus-visible, &$rootOpen\": {\n color: theme.palette.primary.main,\n outline: 0,\n },\n borderBottomRightRadius: 4,\n borderTopRightRadius: 4,\n color: fade(theme.palette.text.primary, 0.6),\n cursor: \"pointer\",\n display: \"flex\",\n height: 56,\n marginBottom: theme.spacing(),\n overflow: \"hidden\",\n padding: theme.spacing(2, 3, 2, 3),\n transition: theme.transitions.duration.shortest + \"ms\",\n width: shrunkMenuWidth,\n },\n rootActive: {\n \"&$root\": {\n \"&:hover, &:focus-visible, &$rootOpen\": {\n color: theme.palette.primary.main,\n },\n background: theme.palette.background.paper,\n color: theme.palette.text.primary,\n },\n },\n rootExpanded: {\n width: menuWidth,\n },\n rootOpen: {},\n subMenuLabel: {\n \"&.Mui-selected\": {\n background: \"unset !important\",\n },\n background: \"none\",\n border: \"none\",\n color: theme.palette.text.primary,\n fontWeight: 500,\n height: 48,\n lineHeight: 36 + \"px\",\n textAlign: \"left\",\n textDecoration: \"none\",\n whiteSpace: \"nowrap\",\n width: \"100%\",\n },\n }),\n {\n name: \"MenuItem\",\n }\n);\n\nexport const MenuItem: React.FC<MenuItemProps> = ({\n activeId,\n menuItem,\n isMenuShrunk,\n onClick,\n}) => {\n const classes = useStyles({});\n const [open, setOpen] = React.useState(false);\n const anchor = React.useRef<HTMLDivElement>(null);\n\n const handleClick = (event: React.MouseEvent, menuItem: SidebarMenuItem) => {\n event.stopPropagation();\n if (menuItem.children) {\n setOpen(true);\n } else {\n onClick(menuItem.url!);\n setOpen(false);\n }\n };\n\n return (\n <div\n className={clsx(classes.root, {\n [classes.rootOpen]: open,\n [classes.rootActive]: [\n menuItem.id,\n ...(menuItem.children?.map((subMenu) => subMenu.id) || []),\n ].includes(activeId),\n [classes.rootExpanded]: !isMenuShrunk,\n })}\n ref={anchor}\n onClick={(event) => handleClick(event, menuItem)}\n >\n <button\n className={classes.menuItemBtn}\n data-test=\"menu-item-label\"\n data-test-id={menuItem.id}\n >\n {menuItem.iconSrc && (\n <SVG className={classes.icon} src={menuItem.iconSrc} />\n )}\n <Typography\n aria-label={menuItem.ariaLabel}\n className={clsx(classes.label, classes.labelRoot, {\n [classes.hideLabel]: isMenuShrunk,\n })}\n variant=\"body2\"\n >\n {menuItem.label}\n </Typography>\n </button>\n {menuItem.children && (\n <Popper\n className={clsx(classes.popper, {\n [classes.popperShrink]: isMenuShrunk,\n })}\n open={open}\n anchorEl={anchor.current}\n transition\n placement=\"right-start\"\n >\n <ClickAwayListener onClickAway={() => setOpen(false)}>\n <Paper className={classes.paper}>\n {menuItem.children.map((subMenuItem) => {\n const linkProps = subMenuItem.external\n ? { href: subMenuItem.url, target: \"_blank\" }\n : {};\n\n return (\n <MuiMenuItem\n aria-label={subMenuItem.ariaLabel}\n component={subMenuItem.external ? \"a\" : \"button\"}\n className={clsx(classes.label, classes.subMenuLabel)}\n key={subMenuItem.url}\n onClick={(event: React.MouseEvent) =>\n handleClick(event, subMenuItem)\n }\n data-test=\"submenu-item-label\"\n data-test-id={subMenuItem.id}\n selected={activeId === subMenuItem.id}\n {...linkProps}\n >\n {subMenuItem.label}\n </MuiMenuItem>\n );\n })}\n </Paper>\n </ClickAwayListener>\n </Popper>\n )}\n </div>\n );\n};\n\nMenuItem.displayName = \"MenuItem\";\n", "import Typography from \"@material-ui/core/Typography\";\nimport React from \"react\";\nimport SVG from \"react-inlinesvg\";\n\nimport { SidebarMenuItem } from \"../Sidebar/types\";\nimport useStyles from \"./styles\";\n\nexport interface MenuItemBtnProps {\n menuItem: SidebarMenuItem;\n onClick: (url: string) => void;\n}\nexport const MenuItemBtn: React.FC<MenuItemBtnProps> = ({\n menuItem,\n onClick,\n}) => {\n const classes = useStyles();\n const linkProps = menuItem.external\n ? { href: menuItem.url, target: \"_blank\" }\n : {};\n const Component = menuItem.external ? \"a\" : \"button\";\n\n return (\n <Component\n className={classes.menuItemBtn}\n data-test=\"menu-item-label\"\n data-test-id={menuItem.id}\n onClick={() => onClick(menuItem.url!)}\n {...linkProps}\n >\n {menuItem.iconSrc && (\n <SVG className={classes.icon} src={menuItem.iconSrc} />\n )}\n <Typography aria-label={menuItem.ariaLabel} className={classes.label}>\n {menuItem.label}\n </Typography>\n </Component>\n );\n};\n\nMenuItemBtn.displayName = \"MenuItemBtn\";\n", "import { makeStyles } from \"../theme\";\n\nconst useStyles = makeStyles(\n (theme) => ({\n activeMenuLabel: {\n display: \"flex\",\n },\n container: {\n overflowX: \"hidden\",\n width: \"100%\",\n },\n containerSubMenu: {\n \"&$container\": {\n overflow: \"hidden\",\n },\n },\n content: {\n width: \"50%\",\n },\n icon: {\n marginRight: theme.spacing(2),\n },\n innerContainer: {\n display: \"flex\",\n position: \"relative\",\n right: 0,\n transition: theme.transitions.duration.short + \"ms\",\n width: \"200%\",\n },\n label: {\n fontWeight: \"bold\",\n },\n logo: {\n display: \"block\",\n marginBottom: theme.spacing(4),\n },\n menuItemBtn: {\n alignItems: \"center\",\n background: \"none\",\n border: \"none\",\n color: theme.palette.text.secondary,\n display: \"flex\",\n marginBottom: theme.spacing(3),\n padding: 0,\n textDecoration: \"none\",\n },\n root: {\n background: theme.palette.background.default,\n borderBottomRightRadius: 32,\n borderTopRightRadius: 32,\n padding: theme.spacing(3),\n width: 260,\n },\n secondaryContentActive: {\n right: \"100%\",\n },\n subMenuTopBar: {\n alignItems: \"center\",\n display: \"flex\",\n justifyContent: \"space-between\",\n marginBottom: theme.spacing(3),\n },\n }),\n {\n name: \"SideBarDrawer\",\n }\n);\n\nexport default useStyles;\n", "import Drawer from \"@material-ui/core/Drawer\";\nimport Typography from \"@material-ui/core/Typography\";\nimport ArrowLeftIcon from \"@material-ui/icons/ArrowLeft\";\nimport MenuIcon from \"@material-ui/icons/Menu\";\nimport clsx from \"clsx\";\nimport React from \"react\";\nimport SVG from \"react-inlinesvg\";\n\nimport { Logo } from \"../icons/Logo\";\nimport { BaseSidebarProps, SidebarMenuItem } from \"../Sidebar/types\";\nimport { SquareButton } from \"../SquareButton\";\nimport { MenuItemBtn } from \"./MenuItemBtn\";\nimport useStyles from \"./styles\";\n\nexport type SideBarDrawerProps = BaseSidebarProps;\n\nexport const SidebarDrawer: React.FC<SideBarDrawerProps> = ({\n menuItems,\n onMenuItemClick,\n}) => {\n const [isOpened, setOpened] = React.useState(false);\n const classes = useStyles({});\n const [activeMenu, setActiveMenu] = React.useState<SidebarMenuItem | null>(\n null\n );\n const [showSubmenu, setShowSubmenu] = React.useState(false);\n const container = React.useRef<HTMLDivElement>(null);\n\n const handleMenuItemClick = (url: string) => {\n setOpened(false);\n setShowSubmenu(false);\n onMenuItemClick(url);\n };\n\n const handleMenuItemWithChildrenClick = (menuItem: SidebarMenuItem) => {\n setActiveMenu(menuItem);\n setShowSubmenu(true);\n container.current?.scrollTo({\n top: 0,\n });\n };\n\n return (\n <>\n <SquareButton onClick={() => setOpened(true)}>\n <MenuIcon />\n </SquareButton>\n <Drawer\n classes={{\n paper: classes.root,\n }}\n open={isOpened}\n onClose={() => setOpened(false)}\n >\n <div\n className={clsx(classes.container, {\n [classes.containerSubMenu]: showSubmenu,\n })}\n ref={container}\n >\n <div\n className={clsx(classes.innerContainer, {\n [classes.secondaryContentActive]: showSubmenu,\n })}\n >\n <div className={classes.content}>\n <div className={classes.logo}>\n <Logo />\n </div>\n {menuItems.map((menuItem) => (\n <MenuItemBtn\n menuItem={menuItem}\n onClick={\n menuItem.children\n ? () => handleMenuItemWithChildrenClick(menuItem)\n : handleMenuItemClick\n }\n key={menuItem.ariaLabel}\n />\n ))}\n </div>\n {activeMenu && (\n <div className={classes.content}>\n <div className={classes.subMenuTopBar}>\n <div className={classes.activeMenuLabel}>\n {activeMenu.iconSrc && (\n <SVG className={classes.icon} src={activeMenu.iconSrc} />\n )}\n <Typography className={classes.label}>\n {activeMenu.label}\n </Typography>\n </div>\n <SquareButton onClick={() => setShowSubmenu(false)}>\n <ArrowLeftIcon />\n </SquareButton>\n </div>\n {activeMenu.children?.map((subMenuItem) => (\n <MenuItemBtn\n menuItem={subMenuItem}\n onClick={handleMenuItemClick}\n key={subMenuItem.ariaLabel}\n />\n ))}\n </div>\n )}\n </div>\n </div>\n </Drawer>\n </>\n );\n};\n\nSidebarDrawer.displayName = \"SideBarDrawer\";\n", "import Typography from \"@material-ui/core/Typography\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport clsx from \"clsx\";\nimport React from \"react\";\nimport { IconButton } from \"../IconButton\";\n\nimport { CompleteIcon, InfoIcon, NotAllowedIcon, WarningIcon } from \"../icons\";\nimport { AlertBase, AlertBaseProps, AlertVariant } from \"./AlertBase\";\nimport useStyles from \"./styles\";\n\nexport interface AlertProps extends AlertBaseProps {\n close?: boolean;\n title?: string;\n}\nconst Icon: React.FC<{ variant: AlertVariant }> = ({ variant }) => {\n switch (variant) {\n case \"error\":\n return <NotAllowedIcon />;\n case \"warning\":\n return <WarningIcon />;\n case \"success\":\n return <CompleteIcon />;\n default:\n return <InfoIcon />;\n }\n};\n\nexport const Alert: React.FC<AlertProps> = ({\n close = true,\n variant = \"info\",\n title,\n children,\n ...rest\n}) => {\n const classes = useStyles();\n const [visible, setVisible] = React.useState(true);\n\n if (!visible) {\n return null;\n }\n\n return (\n <AlertBase variant={variant} {...rest}>\n <div className={classes.container}>\n <div>\n <Icon variant={variant} />\n </div>\n <div className={classes.content}>\n <div className={classes.titleBar}>\n {title && <Typography variant=\"h5\">{title}</Typography>}\n {close && (\n <IconButton\n className={clsx(classes.close, {\n [classes.closeNoContent]: !children,\n })}\n variant=\"secondary\"\n onClick={() => setVisible(false)}\n data-test=\"close\"\n >\n <CloseIcon />\n </IconButton>\n )}\n </div>\n {typeof children === \"string\" ? (\n <Typography variant=\"body1\">{children}</Typography>\n ) : (\n children\n )}\n </div>\n </div>\n </AlertBase>\n );\n};\n\nAlert.displayName = \"Alert\";\n", "import ButtonBase from \"@material-ui/core/ButtonBase\";\nimport MuiIconButton, {\n IconButtonProps as MuiIconButtonProps,\n} from \"@material-ui/core/IconButton\";\nimport clsx from \"clsx\";\nimport React from \"react\";\n\nimport useStyles from \"./styles\";\n\nexport type IconButtonProps<T extends React.ElementType = \"button\"> = Omit<\n MuiIconButtonProps<T>,\n \"variant\"\n> & {\n error?: boolean;\n hoverOutline?: boolean;\n variant?: \"primary\" | \"secondary\";\n};\n\nexport const IconButton: React.FC<IconButtonProps> = React.forwardRef(\n ({ className, error, hoverOutline, variant = \"primary\", ...props }, ref) => {\n const classes = useStyles();\n\n if (variant === \"secondary\") {\n return (\n <ButtonBase\n ref={ref}\n className={clsx(classes.secondary, className, {\n [classes.hoverOutline]: hoverOutline,\n })}\n disableRipple\n {...props}\n />\n );\n }\n\n return (\n <MuiIconButton\n ref={ref}\n className={clsx(className, {\n [classes.error]: error,\n [classes.disabledError]: error && props.disabled,\n })}\n disableRipple\n {...props}\n />\n );\n }\n);\nIconButton.displayName = \"Button\";\n", "import { makeStyles } from \"../theme\";\nimport { getSecondaryButtonStyles } from \"./partials\";\n\nconst useStyles = makeStyles(\n (theme) => ({\n error: {\n \"&&\": {\n \"&:hover, &.Mui-focusVisible\": {\n background: theme.palette.saleor.errorAction[5],\n borderColor: theme.palette.saleor.errorAction[1],\n },\n \"&:active\": {\n background: theme.palette.saleor.errorAction[4],\n borderColor: theme.palette.saleor.errorAction[1],\n },\n },\n borderColor: theme.palette.saleor.errorAction[4],\n color: theme.palette.saleor.errorAction[1],\n },\n disabledError: {\n \"&&&\": {\n borderColor: \"transparent\",\n color: theme.palette.saleor.errorAction[5],\n },\n },\n secondary: getSecondaryButtonStyles(theme.palette.saleor),\n hoverOutline: {\n \"&$secondary\": {\n \"&:hover,&:focus-visible\": {\n background: theme.palette.saleor.active[5],\n },\n \"&:active\": {\n background: theme.palette.saleor.active[4],\n },\n },\n },\n }),\n {\n name: \"IconButton\",\n }\n);\n\nexport default useStyles;\n", "import Card, { CardProps } from \"@material-ui/core/Card\";\nimport CardContent from \"@material-ui/core/CardContent\";\nimport clsx from \"clsx\";\nimport React from \"react\";\n\nimport useStyles from \"./styles\";\n\nexport type AlertVariant = \"error\" | \"warning\" | \"success\" | \"info\";\nexport interface AlertBaseProps extends Omit<CardProps, \"variant\"> {\n className?: string;\n variant: AlertVariant;\n}\n\nexport const AlertBase: React.FC<AlertBaseProps> = ({\n className,\n variant = \"info\",\n children,\n ...rest\n}) => {\n const classes = useStyles();\n\n return (\n <Card\n elevation={0}\n className={clsx(className, classes.root, {\n [classes.error]: variant === \"error\",\n [classes.warning]: variant === \"warning\",\n [classes.success]: variant === \"success\",\n })}\n data-test=\"alert\"\n {...rest}\n >\n <CardContent>{children}</CardContent>\n </Card>\n );\n};\n\nAlertBase.displayName = \"AlertBase\";\n", "import { makeStyles } from \"../theme\";\n\nconst useStyles = makeStyles(\n (theme) => ({\n close: {\n color: theme.palette.common.black,\n position: \"absolute\",\n right: theme.spacing(-2),\n top: theme.spacing(-1),\n },\n closeNoContent: {\n \"&$close\": {\n top: 2,\n },\n },\n container: {\n columnGap: theme.spacing(2),\n display: \"grid\",\n gridTemplateColumns: \"40px 1fr\",\n },\n content: {\n padding: theme.spacing(0, 1),\n },\n root: {},\n titleBar: {\n marginTop: 6,\n marginBottom: theme.spacing(1),\n position: \"relative\",\n },\n error: {\n background: theme.palette.alert.paper.error,\n },\n warning: {\n background: theme.palette.alert.paper.warning,\n },\n success: {\n background: theme.palette.alert.paper.success,\n },\n }),\n {\n name: \"Alert\",\n }\n);\n\nexport default useStyles;\n", "import Button from \"@material-ui/core/Button\";\nimport SnackbarContent from \"@material-ui/core/SnackbarContent\";\nimport Typography from \"@material-ui/core/Typography\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport clsx from \"clsx\";\nimport React from \"react\";\n\nimport { CompleteIcon, InfoIcon, NotAllowedIcon, WarningIcon } from \"../icons\";\nimport useStyles from \"./styles\";\nimport type { NotificationProps, NotificationType } from \"./types\";\nimport { IconButton } from \"../IconButton\";\n\nconst Icon: React.FC<{ type: NotificationType }> = ({ type }) => {\n switch (type) {\n case \"error\":\n return <NotAllowedIcon />;\n case \"warning\":\n return <WarningIcon />;\n case \"success\":\n return <CompleteIcon />;\n default:\n return <InfoIcon />;\n }\n};\n\nexport const Notification: React.FC<NotificationProps> = ({\n onClose,\n title,\n type,\n action,\n content,\n className,\n ...rest\n}) => {\n const classes = useStyles();\n\n return (\n <div\n className={clsx(classes.snackbarContainer, className)}\n data-test=\"notification\"\n data-test-type={type}\n {...rest}\n >\n <SnackbarContent\n aria-describedby=\"client-snackbar\"\n classes={{\n action: classes.snackbarAction,\n message: classes.messageContainer,\n }}\n className={clsx(classes.snackbar, {\n [classes.info]: type === \"info\",\n [classes.error]: type === \"error\",\n [classes.success]: type === \"success\",\n [classes.warning]: type === \"warning\",\n })}\n message={\n <div className={classes.container}>\n <div>\n <Icon type={type} />\n </div>\n <div>\n <div className={classes.title}>\n <Typography variant=\"h5\">{title}</Typography>\n </div>\n <Typography variant=\"body1\">{content}</Typography>\n </div>\n </div>\n }\n action={[\n <div key=\"actions\">\n {!!action && (\n <Button\n className={classes.actionBtn}\n key=\"action\"\n color=\"default\"\n size=\"small\"\n onClick={action.onClick}\n data-test=\"button-action\"\n >\n {action.label}\n </Button>\n )}\n </div>,\n <IconButton\n key=\"close\"\n aria-label=\"Close\"\n color=\"inherit\"\n onClick={onClose}\n variant=\"secondary\"\n className={clsx(classes.closeBtn, {\n [classes.closeBtnInfo]: type === \"info\",\n })}\n data-test=\"close\"\n >\n <CloseIcon />\n </IconButton>,\n ]}\n />\n </div>\n );\n};\nNotification.displayName = \"Notification\";\n", "import { makeStyles } from \"../theme\";\n\nconst iconWidth = 40;\n\nconst useStyles = makeStyles(\n (theme) => ({\n actionBtn: {\n left: -4,\n position: \"relative\",\n minWidth: \"unset\",\n },\n closeBtn: {\n \"& svg\": {\n maxHeight: 20,\n maxWidth: 20,\n },\n padding: 10,\n position: \"absolute\",\n right: 5,\n top: 7,\n },\n closeBtnInfo: {\n color: theme.palette.text.primary,\n },\n error: {\n backgroundColor: theme.palette.alert.paper.error,\n },\n hiddenText: {\n maxHeight: 0,\n },\n info: {},\n snackbar: {\n borderRadius: 4,\n padding: theme.spacing(0, 6, 1, 2),\n position: \"relative\",\n },\n snackbarContainer: {\n marginBottom: theme.spacing(2),\n maxWidth: 450,\n position: \"relative\",\n },\n snackbarAction: {\n paddingLeft: `calc(${iconWidth}px + ${theme.spacing(2)})`,\n },\n success: {\n backgroundColor: theme.palette.alert.paper.success,\n },\n text: {\n fontWeight: 400,\n paddingTop: 5,\n },\n warning: {\n backgroundColor: theme.palette.alert.paper.warning,\n },\n\n messageContainer: {\n paddingTop: theme.spacing(2),\n position: \"relative\",\n },\n\n container: {\n columnGap: theme.spacing(2),\n display: \"grid\",\n gridTemplateColumns: `${iconWidth}px 1fr`,\n },\n title: {\n marginTop: 6,\n marginBottom: theme.spacing(0.5),\n },\n }),\n { name: \"Notification\" }\n);\n\nexport default useStyles;\n", "import Avatar from \"@material-ui/core/Avatar\";\nimport ClickAwayListener from \"@material-ui/core/ClickAwayListener\";\nimport Grow from \"@material-ui/core/Grow\";\nimport Hidden from \"@material-ui/core/Hidden\";\nimport Menu from \"@material-ui/core/MenuList\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Popper from \"@material-ui/core/Popper\";\nimport Typography from \"@material-ui/core/Typography\";\nimport React from \"react\";\nimport { LayoutButton } from \"..\";\n\nimport { UserChipMenuContext } from \"./context\";\nimport useStyles from \"./styles\";\n\nexport interface UserChipProps {\n avatar: string | null;\n initials: string;\n name: string;\n subtext?: string;\n open?: boolean;\n}\n\nexport const UserChipMenu: React.FC<UserChipProps> = ({\n avatar,\n initials,\n name,\n subtext,\n children,\n open = false,\n ...props\n}) => {\n const classes = useStyles({});\n const [isMenuOpened, setMenuState] = React.useState(open);\n const anchor = React.useRef<HTMLButtonElement>(null);\n\n const closeMenu = () => setMenuState(false);\n\n return (\n <>\n <LayoutButton\n className={classes.userChip}\n ref={anchor}\n onClick={() => setMenuState(!isMenuOpened)}\n data-test=\"userMenu\"\n state={isMenuOpened ? \"active\" : \"default\"}\n {...props}\n >\n {avatar ? (\n <Avatar className={classes.avatar} alt=\"user\" src={avatar} />\n ) : (\n <div className={classes.avatarPlaceholder}>\n <div className={classes.avatarInitials}>{initials}</div>\n </div>\n )}\n <div className={classes.labelContainer}>\n <Hidden smDown>\n <div>\n <Typography className={classes.label} variant=\"body2\">\n {name}\n </Typography>\n {subtext && (\n <Typography\n className={classes.label}\n variant=\"body2\"\n color=\"textSecondary\"\n >\n {subtext}\n </Typography>\n )}\n </div>\n </Hidden>\n </div>\n </LayoutButton>\n <Popper\n className={classes.popover}\n open={isMenuOpened}\n anchorEl={anchor.current}\n transition\n placement=\"bottom-end\"\n >\n {({ TransitionProps, placement }) => (\n <Grow\n {...TransitionProps}\n style={{\n transformOrigin:\n placement === \"bottom\" ? \"right top\" : \"right bottom\",\n }}\n >\n <Paper>\n <ClickAwayListener onClickAway={closeMenu} mouseEvent=\"onClick\">\n <Menu disablePadding>\n <UserChipMenuContext.Provider value={closeMenu}>\n {children}\n </UserChipMenuContext.Provider>\n </Menu>\n </ClickAwayListener>\n </Paper>\n </Grow>\n )}\n </Popper>\n </>\n );\n};\nUserChipMenu.displayName = \"UserChip\";\n", "import { createContext, useContext } from \"react\";\n\nexport type UserChipMenuContextType = () => void;\n\nexport const UserChipMenuContext = createContext<\n UserChipMenuContextType | undefined\n>(undefined);\nUserChipMenuContext.displayName = \"UserChipMenuContext\";\n\nexport const useUserChipMenu = () => {\n const ctx = useContext(UserChipMenuContext);\n if (ctx === undefined) {\n throw new Error(\n \"useUserChipMenu must be used within a UserChipMenuContext\"\n );\n }\n\n return ctx;\n};\n", "import { makeStyles } from \"../theme\";\n\nconst avatarSize = 32;\nconst mobileAvatarSize = 42;\n\nconst useStyles = makeStyles(\n (theme) => ({\n avatar: {\n \"&&\": {\n [theme.breakpoints.down(\"sm\")]: {\n height: mobileAvatarSize,\n width: mobileAvatarSize,\n },\n height: avatarSize,\n width: avatarSize,\n },\n backgroundColor: theme.palette.background.paper,\n },\n avatarInitials: {\n [theme.breakpoints.down(\"sm\")]: {\n height: mobileAvatarSize,\n width: mobileAvatarSize,\n lineHeight: mobileAvatarSize + \"px\",\n },\n height: avatarSize,\n lineHeight: avatarSize + \"px\",\n width: avatarSize,\n color: theme.palette.primary.contrastText,\n textAlign: \"center\",\n },\n avatarPlaceholder: {\n alignItems: \"center\",\n background: theme.palette.primary.main,\n borderRadius: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n },\n label: {\n letterSpacing: \"0.02em\",\n lineHeight: 1.2,\n textAlign: \"left\",\n },\n labelContainer: {\n display: \"inline-flex\",\n alignItems: \"center\",\n marginLeft: theme.spacing(1),\n },\n popover: {\n marginTop: theme.spacing(0.5),\n zIndex: 10,\n },\n userChip: {\n \"&&\": {\n padding: theme.spacing(0.5, 3, 0.5, 1),\n },\n ...theme.typography.body1,\n display: \"flex\",\n textTransform: \"unset\",\n },\n userMenuContainer: {\n cursor: \"pointer\",\n display: \"inline-block\",\n position: \"relative\",\n },\n }),\n {\n name: \"UserChipMenu\",\n }\n);\n\nexport default useStyles;\n", "import MenuItem, { MenuItemProps } from \"@material-ui/core/MenuItem\";\nimport React from \"react\";\n\nimport { useUserChipMenu } from \"./context\";\n\nexport interface UserChipMenuItemProps extends Omit<MenuItemProps, \"button\"> {\n leaveOpen?: boolean;\n}\n\nexport const UserChipMenuItem: React.FC<UserChipMenuItemProps> = ({\n leaveOpen,\n onClick,\n ...props\n}) => {\n const closeMenu = useUserChipMenu();\n\n // We're not really interested in event type here\n const handleClickWithClose = (event: unknown) => {\n closeMenu();\n if (onClick) {\n onClick(event as any);\n }\n };\n\n return (\n <MenuItem\n {...props}\n onClick={leaveOpen ? onClick : handleClickWithClose}\n button\n />\n );\n};\nUserChipMenuItem.displayName = \"UserChipMenuItem\";\n", "import Table from \"@material-ui/core/Table\";\nimport React from \"react\";\n\nimport useStyles from \"./styles\";\n\ninterface ResponsiveTableProps {\n children: React.ReactNode | React.ReactNodeArray;\n className?: string;\n key?: string;\n}\n\nexport const ResponsiveTable: React.FC<ResponsiveTableProps> = (props) => {\n const { children, className } = props;\n\n const classes = useStyles(props);\n\n return (\n <div className={classes.root}>\n <Table className={className}>{children}</Table>\n </div>\n );\n};\n\nResponsiveTable.displayName = \"ResponsiveTable\";\n", "import { makeStyles } from \"../theme\";\n\nconst useStyles = makeStyles(\n (theme) => ({\n root: {\n [theme.breakpoints.up(\"md\")]: {\n \"&& table\": {\n tableLayout: \"fixed\",\n },\n },\n \"& table\": {\n tableLayout: \"auto\",\n },\n overflowX: \"auto\",\n width: \"100%\",\n },\n }),\n {\n name: \"ResponsiveTable\",\n }\n);\n\nexport default useStyles;\n", "import MUITooltip from \"@material-ui/core/Tooltip\";\nimport { TooltipProps as MUITooltipProps } from \"@material-ui/core/Tooltip\";\nimport React from \"react\";\n\nimport useStyles from \"./styles\";\n\nexport interface TooltipProps extends MUITooltipProps {\n variant?: \"info\" | \"success\" | \"warning\" | \"error\";\n}\n\nexport const Tooltip: React.FC<TooltipProps> = ({\n children,\n variant = \"info\",\n ...rest\n}) => {\n const classes = useStyles({ variant, children, ...rest });\n\n return (\n <MUITooltip classes={classes} {...rest}>\n {children}\n </MUITooltip>\n );\n};\n\nTooltip.displayName = \"Tooltip\";\n", "import { makeStyles } from \"../theme\";\nimport { TooltipProps } from \"./Tooltip\";\n\nconst useStyles = makeStyles<TooltipProps, \"tooltip\">(\n (theme) => ({\n tooltip: {\n backgroundColor: (props) => {\n switch (props.variant) {\n case \"info\":\n return theme.palette.info.main;\n case \"success\":\n return theme.palette.success.main;\n case \"warning\":\n return theme.palette.warning.main;\n case \"error\":\n return theme.palette.error.main;\n default:\n return theme.palette.info.main;\n }\n },\n },\n }),\n {\n name: \"Tooltip\",\n }\n);\n\nexport default useStyles;\n", "import Toolbar from \"@material-ui/core/Toolbar\";\nimport React from \"react\";\n\nimport { PaginationActions, PaginationActionsProps } from \"./PaginationActions\";\nimport {\n PaginationRowNumberSelect,\n PaginationRowNumberSelectProps,\n} from \"./PaginationRowNumberSelect\";\nimport useStyles from \"./styles\";\n\nexport interface PaginationProps\n extends PaginationActionsProps,\n Omit<\n PaginationRowNumberSelectProps,\n \"className\" | \"choices\" | \"onChange\" | \"rowNumber\"\n > {\n choices?: number[];\n disabled?: boolean;\n rowNumber?: number;\n onRowNumberUpdate?: (rowNumber: number) => void;\n}\n\nexport const Pagination: React.FC<PaginationProps> = ({\n choices = [10, 20, 30, 50, 100],\n disabled,\n hasNextPage,\n hasPreviousPage,\n nextIconButtonProps,\n labels,\n rowNumber,\n onNextPage,\n onPreviousPage,\n onRowNumberUpdate,\n ...other\n}) => {\n const classes = useStyles();\n\n return (\n <Toolbar className={classes.toolbar} disableGutters {...other}>\n <div className={classes.spacer}>\n {rowNumber && (\n <PaginationRowNumberSelect\n choices={choices}\n disabled={disabled}\n labels={labels}\n rowNumber={rowNumber}\n onChange={onRowNumberUpdate}\n />\n )}\n </div>\n <PaginationActions\n disabled={disabled}\n hasNextPage={hasNextPage}\n hasPreviousPage={hasPreviousPage}\n nextIconButtonProps={nextIconButtonProps}\n onNextPage={onNextPage}\n onPreviousPage={onPreviousPage}\n />\n </Toolbar>\n );\n};\n\nPagination.displayName = \"Pagination\";\n", "import ButtonBase from \"@material-ui/core/ButtonBase\";\nimport ChevronLeft from \"@material-ui/icons/ChevronLeft\";\nimport ChevronRight from \"@material-ui/icons/ChevronRight\";\nimport clsx from \"clsx\";\nimport React from \"react\";\n\nimport { useTheme } from \"../theme\";\nimport useStyles from \"./styles\";\n\nexport interface PaginationActionsProps {\n className?: string;\n disabled?: boolean;\n hasNextPage: boolean;\n hasPreviousPage: boolean;\n nextIconButtonProps?: any;\n onNextPage: () => void;\n onPreviousPage: () => void;\n}\n\nexport const PaginationActions: React.FC<PaginationActionsProps> = ({\n className,\n disabled,\n hasNextPage,\n hasPreviousPage,\n nextIconButtonProps,\n onNextPage,\n onPreviousPage,\n ...other\n}) => {\n const classes = useStyles();\n\n const { direction, themeType } = useTheme();\n\n const isDark = themeType === \"dark\";\n const previousDisabled = !hasPreviousPage || disabled;\n const nextDisabled = !hasNextPage || disabled;\n\n return (\n <div className={clsx(classes.actions, className)} {...other}>\n <ButtonBase\n className={clsx(classes.actionsButton, {\n [classes.dark]: isDark,\n [classes.actionsButtonDisabled]: previousDisabled,\n })}\n disableRipple\n onClick={onPreviousPage}\n disabled={previousDisabled}\n data-test=\"button-pagination-back\"\n aria-label=\"previous page\"\n >\n {direction === \"rtl\" ? <ChevronRight /> : <ChevronLeft />}\n </ButtonBase>\n\n <ButtonBase\n className={clsx(classes.actionsButton, {\n [classes.dark]: isDark,\n [classes.actionsButtonDisabled]: nextDisabled,\n })}\n disableRipple\n onClick={onNextPage}\n disabled={nextDisabled}\n data-test=\"button-pagination-next\"\n aria-label=\"next page\"\n {...nextIconButtonProps}\n >\n {direction === \"rtl\" ? <ChevronLeft /> : <ChevronRight />}\n </ButtonBase>\n </div>\n );\n};\n\nPaginationActions.displayName = \"PaginationActions\";\n", "import { fade } from \"@material-ui/core/styles/colorManipulator\";\n\nimport { makeStyles } from \"../theme\";\n\nconst useStyles = makeStyles(\n (theme) => ({\n actions: {},\n actionsButton: {\n \"&:hover\": {\n color: theme.palette.primary.main,\n },\n \"&:last-child\": {\n marginLeft: theme.spacing(1.5),\n },\n \"& svg\": {\n color: \"currentColor\",\n width: 16,\n },\n border: \"2px solid currentColor\",\n borderRadius: 2,\n boxSizing: \"border-box\",\n color: theme.palette.text.primary,\n height: 36,\n width: 36,\n transition: theme.transitions.create(\"color\", {\n duration: theme.transitions.duration.shorter,\n }),\n },\n actionsButtonDisabled: {\n border: `2px solid ${theme.palette.text.disabled}`,\n color: theme.palette.text.disabled,\n },\n dark: {\n \"&:focus, &:hover\": {\n \"& > span:first-of-type\": {\n backgroundColor: fade(theme.palette.primary.main, 0.2),\n },\n },\n color: theme.palette.primary.main,\n },\n root: {},\n toolbar: {\n justifyContent: \"space-between\",\n },\n spacer: {},\n\n rowNumber: {\n fontSize: theme.typography.body2.fontSize,\n },\n rowNumberLabel: {},\n rowNumberSelect: {\n \"&&:before, &&:after\": {\n content: \"none\",\n },\n marginLeft: theme.spacing(1),\n },\n rowNumberSelectLabel: {\n \"&&\": {\n color: theme.palette.primary.main,\n },\n },\n }),\n { name: \"Pagination\" }\n);\nexport default useStyles;\n", "import MenuItem from \"@material-ui/core/MenuItem\";\nimport Select from \"@material-ui/core/Select\";\nimport clsx from \"clsx\";\nimport React from \"react\";\n\nimport useStyles from \"./styles\";\n\nexport type PaginationRowNumberSelectLabels = Record<\"noOfRows\", string>;\nexport interface PaginationRowNumberSelectProps {\n choices: number[];\n className?: string;\n disabled?: boolean;\n labels: PaginationRowNumberSelectLabels;\n rowNumber: number;\n onChange?: (value: number) => void;\n}\n\nexport const PaginationRowNumberSelect: React.FC<PaginationRowNumberSelectProps> =\n ({ className, choices, disabled, labels, rowNumber, onChange }) => {\n const classes = useStyles({});\n\n return (\n <div className={clsx(classes.rowNumber, className)}>\n <span className={classes.rowNumberLabel}>{labels.noOfRows}</span>\n {onChange ? (\n <Select\n data-test-id=\"PaginationRowNumberSelect\"\n disabled={disabled}\n inputProps={{\n className: classes.rowNumberSelectLabel,\n }}\n className={classes.rowNumberSelect}\n value={rowNumber}\n onChange={(event) => onChange(event.target.value as number)}\n >\n {choices.length > 0 &&\n choices.map((choice) => (\n <MenuItem\n value={choice}\n key={choice}\n data-test-id=\"rowNumberOption\"\n >\n {choice}\n </MenuItem>\n ))}\n </Select>\n ) : (\n ` ${rowNumber}`\n )}\n </div>\n );\n };\nPaginationRowNumberSelect.displayName = \"PaginationRowNumberSelect\";\n", "import TableCell from \"@material-ui/core/TableCell\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport React from \"react\";\n\nimport { Pagination, PaginationProps } from \"./Pagination\";\n\nexport interface TablePaginationProps extends PaginationProps {\n colSpan: number;\n}\n\nexport const TablePagination: React.FC<TablePaginationProps> = ({\n colSpan,\n ...paginationProps\n}) => (\n <TableRow>\n <TableCell padding=\"none\" colSpan={colSpan}>\n <Pagination {...paginationProps} />\n </TableCell>\n </TableRow>\n);\nTablePagination.displayName = \"TablePagination\";\n", "import Chip from \"@material-ui/core/Chip\";\nimport React from \"react\";\n\nimport useStyles from \"./styles\";\nimport { StatusChipProps } from \"./types\";\n\nexport const StatusChip: React.FC<StatusChipProps> = ({\n size = \"md\",\n variant,\n ...rest\n}) => {\n const classes = useStyles({\n size,\n variant,\n ...rest,\n });\n\n return <Chip classes={classes} {...rest} />;\n};\n\nStatusChip.displayName = \"HeaderChip\";\n", "import { fade } from \"@material-ui/core/styles\";\n\nimport { makeStyles } from \"../theme\";\nimport { StatusChipProps } from \"./types\";\n\nconst useStyles = makeStyles<StatusChipProps, \"label\" | \"root\">(\n (theme) => ({\n label: {\n color: ({ variant }) => {\n switch (variant) {\n case \"success\":\n return theme.palette.success.main;\n case \"warning\":\n return theme.palette.warning.main;\n case \"neutral\":\n return theme.palette.text.hint;\n case \"error\":\n return theme.palette.error.main;\n }\n },\n fontSize: 16,\n fontWeight: 700,\n padding: theme.spacing(0, 2),\n textTransform: \"uppercase\",\n },\n root: {\n \"&:not(:first-child)\": {\n marginLeft: theme.spacing(2),\n },\n background: ({ variant }) => {\n switch (variant) {\n case \"success\":\n return fade(theme.palette.success.main, 0.2);\n case \"warning\":\n return fade(theme.palette.warning.main, 0.2);\n case \"neutral\":\n return fade(theme.palette.text.hint, 0.05);\n case \"error\":\n return fade(theme.palette.error.main, 0.15);\n }\n },\n borderRadius: 20,\n cursor: \"inherit\",\n height: ({ size }) => (size === \"lg\" ? 40 : 32),\n },\n }),\n {\n name: \"StatusChip\",\n }\n);\nexport default useStyles;\n", "import Tab, { TabProps } from \"@material-ui/core/Tab\";\nimport React from \"react\";\n\nimport useStyles from \"./styles\";\n\nexport const PageTab: React.FC<TabProps> = (props) => {\n const classes = useStyles();\n\n return (\n <Tab\n classes={{\n root: classes.tabRoot,\n }}\n disableRipple\n {...props}\n />\n );\n};\nPageTab.displayName = \"PageTab\";\n", "import { fade } from \"@material-ui/core/styles\";\n\nimport { makeStyles } from \"../theme\";\n\nconst useStyles = makeStyles(\n (theme) => ({\n tabRoot: {\n \"@media (min-width: 600px)\": {\n minWidth: \"unset\",\n },\n \"&.Mui-selected\": {\n background: theme.palette.secondary.main,\n color: theme.palette.primary.main,\n },\n \"&:hover\": {\n background: fade(theme.palette.secondary.main, 0.6),\n },\n borderRadius: 8,\n minHeight: 40,\n padding: theme.spacing(1, 2),\n textTransform: \"unset\",\n },\n containerRoot: {\n minHeight: \"unset\",\n },\n containerFlex: {\n columnGap: theme.spacing(2),\n },\n }),\n {\n name: \"PageTab\",\n }\n);\n\nexport default useStyles;\n", "import Tabs, { TabsProps } from \"@material-ui/core/Tabs\";\nimport React from \"react\";\n\nimport useStyles from \"./styles\";\n\nexport const PageTabs: React.FC<\n Omit<TabsProps, \"onChange\"> & {\n onChange: (value: string) => void;\n }\n> = (props) => {\n const classes = useStyles();\n\n return (\n <Tabs\n {...props}\n classes={{\n flexContainer: classes.containerFlex,\n root: classes.containerRoot,\n }}\n TabIndicatorProps={{\n style: { display: \"none\" },\n }}\n onChange={(_, value) => props.onChange(value)}\n />\n );\n};\nPageTabs.displayName = \"PageTabs\";\n", "import React from \"react\";\n\nexport const PageTabPanel: React.FC<{ show: boolean }> = ({\n children,\n show,\n}) => (\n <div\n style={{\n display: show ? \"block\" : \"none\",\n }}\n >\n {children}\n </div>\n);\nPageTabPanel.displayName = \"PageTabPanel\";\n", "import IconButton from \"@material-ui/core/IconButton\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport Select from \"@material-ui/core/Select\";\nimport Typography from \"@material-ui/core/Typography\";\nimport { DeleteIcon } from \"../icons\";\nimport difference from \"lodash/difference\";\nimport React from \"react\";\n\nimport { useFilters } from \"./context\";\nimport { FilterContent } from \"./FilterContent\";\nimport useStyles from \"./styles\";\nimport {\n EventTarget,\n FilterDetailedOptions,\n FilterLabels,\n FilterOptions,\n FilterType,\n} from \"./types\";\nimport * as utils from \"./utils\";\n\nexport type FilterProps = FilterOptions & FilterDetailedOptions;\nexport const Filter: React.FC<FilterProps> = ({ name, label, ...options }) => {\n const { register, set, unregister } = useFilters();\n const registered = React.useRef(false);\n React.useEffect(() => {\n register(name, label, options);\n registered.current = true;\n\n return () => unregister(name);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n React.useEffect(() => {\n if (\n registered.current &&\n options.choices !== undefined &&\n difference(options.choices, options.choices).length\n ) {\n set(name, {\n options: {\n ...options,\n choices: options.choices,\n },\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [options.choices]);\n\n return null;\n};\n\nexport interface FilterRowProps {\n first: boolean;\n name: string;\n labels: FilterLabels;\n}\nexport const FilterRow: React.FC<FilterRowProps> = ({\n first,\n name,\n labels,\n}) => {\n const classes = useStyles();\n const { filters, toggle, toggleRange } = useFilters();\n\n const filter = filters.find((filter) => filter.name === name);\n\n if (!filter?.active) {\n return null;\n }\n\n const availableFilters = utils.getAvailableFilters(filters);\n const options = [filter, ...availableFilters];\n\n const change = (event: React.ChangeEvent<EventTarget<unknown>>) => {\n toggle(name);\n toggle(event.target.value as string);\n };\n\n return (\n <div className={classes.filter}>\n <Typography className={classes.filterConjunction}>\n {first ? labels.where : labels.and}\n </Typography>\n <Select\n className={classes.filterName}\n classes={{\n selectMenu: classes.filterInputInner,\n }}\n variant=\"outlined\"\n onChange={change}\n value={filter.name}\n >\n {options.map((option) => (\n <MenuItem key={option.name} value={option.name}>\n {option.label}\n </MenuItem>\n ))}\n </Select>\n <Select\n disabled={filter.options.type !== FilterType.Range}\n className={classes.filterRange}\n classes={{\n selectMenu: classes.filterInputInner,\n }}\n variant=\"outlined\"\n value={filter.range.toString()}\n onChange={() => toggleRange(name)}\n >\n <MenuItem value=\"false\">{labels.is}</MenuItem>\n <MenuItem value=\"true\">{labels.range}</MenuItem>\n </Select>\n <FilterContent filter={filter} labels={labels} />\n <IconButton className={classes.filterDelete} onClick={() => toggle(name)}>\n <DeleteIcon />\n </IconButton>\n </div>\n );\n};\n", "import { createContext, useContext } from \"react\";\n\nimport { FilterContextType } from \"./types\";\n\nexport const FilterContext = createContext<FilterContextType | null>(null);\nexport const useFilters = (): FilterContextType => {\n const ctx = useContext(FilterContext);\n if (ctx === undefined) {\n throw new Error(\"useFilters must be used within a FilterContext\");\n }\n\n return ctx!;\n};\n", "import React from \"react\";\n\nimport { MultipleSelectFilterField } from \"./FilterField/MultipleSelectFilterField\";\nimport { RangeFilterField } from \"./FilterField/RangeFilterField\";\nimport { SelectFilterField } from \"./FilterField/SelectFilterField\";\nimport { TextFilterField } from \"./FilterField/TextFilterField\";\nimport { FilterData, FilterLabels, FilterType } from \"./types\";\n\nexport interface FilterContentProps {\n filter: FilterData;\n labels: FilterLabels;\n}\n\nexport const FilterContent: React.FC<FilterContentProps> = ({\n filter,\n labels,\n}) => {\n const { options, range } = filter;\n const { type, multiple } = options;\n\n if (type === FilterType.Choice) {\n if (multiple) {\n return <MultipleSelectFilterField filter={filter} />;\n }\n\n return <SelectFilterField filter={filter} />;\n } else if (type === FilterType.Range && range) {\n return <RangeFilterField filter={filter} labels={labels} />;\n }\n\n return <TextFilterField filter={filter} />;\n};\nFilterContent.displayName = \"FilterContent\";\n", "import Checkbox from \"@material-ui/core/Checkbox\";\nimport Chip from \"@material-ui/core/Chip\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport Select from \"@material-ui/core/Select\";\nimport clsx from \"clsx\";\nimport React from \"react\";\n\nimport { useFilters } from \"../context\";\nimport useStyles from \"../styles\";\nimport { EventTarget, FilterData } from \"../types\";\n\nexport interface FilterContentProps {\n filter: FilterData;\n}\n\nexport const MultipleSelectFilterField: React.FC<FilterContentProps> = ({\n filter,\n}) => {\n const classes = useStyles();\n const { onChange } = useFilters();\n\n const { name, options } = filter;\n const { choices } = options;\n\n const handleChoiceChange = (event: React.ChangeEvent<EventTarget>) =>\n onChange(name, event.target.value as string);\n\n return (\n <Select\n className={classes.filterValue}\n classes={{\n root: classes.filterInputInner,\n }}\n multiple\n variant=\"outlined\"\n onChange={handleChoiceChange}\n value={filter.values}\n renderValue={(values) => {\n const typedValues = values as string[];\n\n return (\n <div className={classes.filterChipContainer}>\n {typedValues.map((value) => (\n <Chip className={classes.filterChip} key={value} label={value} />\n ))}\n </div>\n );\n }}\n >\n {choices!.map((choice) => {\n const active = filter.values!.includes(choice.value);\n\n return (\n <MenuItem\n key={choice.value}\n className={clsx({\n [classes.filterValueSelected]: active,\n })}\n value={choice.value}\n >\n <Checkbox\n checked={active}\n className={classes.filterValueCheckbox}\n />\n {choice.label}\n </MenuItem>\n );\n })}\n </Select>\n );\n};\nMultipleSelectFilterField.displayName = \"MultipleSelectFilterField\";\n", "import { makeStyles } from \"../theme\";\n\nconst useStyles = makeStyles(\n (theme) => ({\n menuContent: {\n minWidth: 220,\n padding: theme.spacing(2),\n },\n menuHeader: {\n textTransform: \"uppercase\",\n },\n menuPaper: {\n borderRadius: 0,\n },\n\n filter: {\n alignItems: \"center\",\n display: \"flex\",\n columnGap: theme.spacing(2),\n marginBottom: theme.spacing(2),\n },\n filterChip: {\n borderRadius: 8,\n background: theme.palette.primary.main,\n color: theme.palette.primary.contrastText,\n },\n filterChipContainer: {\n display: \"flex\",\n columnGap: theme.spacing(1),\n },\n filterDelete: {\n marginLeft: \"auto\",\n },\n filterName: {\n width: 180,\n },\n filterValue: {\n height: 51,\n width: 400,\n },\n filterRange: {\n width: 115,\n },\n filterInputInner: {\n \"&&\": {\n padding: theme.spacing(2),\n },\n },\n filterConjunction: {\n minWidth: 80,\n },\n filterValueCheckbox: {\n paddingLeft: 0,\n },\n filterValueSelected: {\n color: theme.palette.primary.main,\n fontWeight: 500,\n },\n filterRangeLabel: {\n margin: theme.spacing(0, 1),\n },\n filterRangeValueContainer: {\n display: \"flex\",\n alignItems: \"center\",\n },\n\n bar: {\n minWidth: 600,\n },\n\n selectPaper: {\n borderRadius: 0,\n marginTop: `calc(48px + ${theme.spacing(1)})`,\n },\n }),\n {\n name: \"Filter\",\n }\n);\nexport default useStyles;\n", "import TextField, { TextFieldProps } from \"@material-ui/core/TextField\";\nimport Typography from \"@material-ui/core/Typography\";\nimport clsx from \"clsx\";\nimport React from \"react\";\n\nimport { useFilters } from \"../context\";\nimport useStyles from \"../styles\";\nimport { EventTarget, FilterData, FilterLabels } from \"../types\";\n\nexport interface FilterContentProps {\n filter: FilterData;\n labels: FilterLabels;\n}\n\nexport const RangeFilterField: React.FC<FilterContentProps> = ({\n filter,\n labels,\n}) => {\n const classes = useStyles();\n const { onChange } = useFilters();\n\n const { name } = filter;\n\n const handleChange = (event: React.ChangeEvent<EventTarget<string>>) =>\n onChange(name, event.target.value, {\n rangePart: event.target.name as \"min\" | \"max\",\n });\n\n const props: Partial<TextFieldProps> = {\n ...filter.options.InputProps,\n InputProps: {\n classes: {\n input: classes.filterInputInner,\n },\n type: \"number\",\n ...filter.options.InputProps?.InputProps,\n },\n onChange: handleChange,\n };\n\n return (\n <div\n className={clsx(classes.filterValue, classes.filterRangeValueContainer)}\n >\n <TextField {...props} name=\"min\" value={filter.values![0]} />\n <Typography className={classes.filterRangeLabel}>{labels.and}</Typography>\n <TextField {...props} name=\"max\" value={filter.values![1]} />\n </div>\n );\n};\nRangeFilterField.displayName = \"RangeFilterField\";\n", "import MenuItem from \"@material-ui/core/MenuItem\";\nimport Select from \"@material-ui/core/Select\";\nimport React from \"react\";\n\nimport { useFilters } from \"../context\";\nimport useStyles from \"../styles\";\nimport { EventTarget, FilterData } from \"../types\";\n\nexport interface FilterContentProps {\n filter: FilterData;\n}\n\nexport const SelectFilterField: React.FC<FilterContentProps> = ({ filter }) => {\n const classes = useStyles();\n const { onChange } = useFilters();\n\n const { name, options } = filter;\n const { choices } = options;\n\n const handleChoiceChange = (event: React.ChangeEvent<EventTarget>) =>\n onChange(name, event.target.value as string);\n\n return (\n <Select\n className={classes.filterValue}\n classes={{\n selectMenu: classes.filterInputInner,\n }}\n variant=\"outlined\"\n onChange={handleChoiceChange}\n value={filter.value}\n >\n {choices!.map((choice) => (\n <MenuItem key={choice.value} value={choice.value}>\n {choice.label}\n </MenuItem>\n ))}\n </Select>\n );\n};\nSelectFilterField.displayName = \"SelectFilterField\";\n", "import TextField from \"@material-ui/core/TextField\";\nimport React from \"react\";\n\nimport { useFilters } from \"../context\";\nimport useStyles from \"../styles\";\nimport { EventTarget, FilterData } from \"../types\";\n\nexport interface FilterContentProps {\n filter: FilterData;\n}\n\nexport const TextFilterField: React.FC<FilterContentProps> = ({ filter }) => {\n const classes = useStyles();\n const { onChange } = useFilters();\n\n const { name } = filter;\n\n const handleChange = (event: React.ChangeEvent<EventTarget<string>>) =>\n onChange(name, event.target.value);\n\n return (\n <TextField\n {...filter.options.InputProps}\n className={classes.filterValue}\n InputProps={{\n ...filter.options.InputProps?.InputProps,\n classes: {\n input: classes.filterInputInner,\n },\n }}\n onChange={handleChange}\n value={filter.value}\n />\n );\n};\nTextFilterField.displayName = \"TextFilterField\";\n", "import { TextFieldProps } from \"@material-ui/core/TextField\";\n\nexport enum FilterType {\n Text,\n Choice,\n Range,\n}\n\nexport interface FilterDetailedOptions {\n type: FilterType;\n choices?: Array<Record<\"label\" | \"value\", string>>;\n default?: string;\n multiple?: boolean;\n InputProps?: Partial<TextFieldProps>;\n}\nexport interface FilterOptions {\n name: string;\n label: string;\n}\n\nexport interface FilterValues {\n value: string | null;\n values: string[] | null;\n}\n\nexport interface FilterState extends FilterValues {\n active: boolean;\n range: boolean;\n sortIndex: number;\n}\n\nexport interface FilterData extends FilterOptions, FilterState {\n options: FilterDetailedOptions;\n}\n\nexport interface FilterInput extends FilterValues {\n name: string;\n}\n\nexport interface OnFilterChangeOpts {\n rangePart?: \"min\" | \"max\";\n}\n\nexport interface FilterContextType {\n filters: FilterData[];\n set: (name: string, filter: Partial<FilterData>) => void;\n register: (\n name: string,\n label: string,\n options: FilterDetailedOptions\n ) => void;\n toggle: (name: string) => void;\n toggleRange: (name: string) => void;\n unregister: (name: string) => void;\n onChange: (\n name: string,\n value: string | string[],\n opts?: OnFilterChangeOpts\n ) => void;\n}\n\nexport type FilterLabels = Record<\"where\" | \"and\" | \"is\" | \"range\", string>;\n\nexport interface EventTarget<T = unknown> {\n name?: string;\n value: T;\n}\n", "import uniqBy from \"lodash/uniqBy\";\n\nimport {\n FilterData,\n FilterDetailedOptions,\n FilterInput,\n FilterType,\n OnFilterChangeOpts,\n} from \"./types\";\n\nexport function getAvailableFilters(filterData: FilterData[]) {\n return filterData.filter((filter) => !filter.active);\n}\nexport function getActiveFilters(filterData: FilterData[]) {\n return filterData.filter((filter) => filter.active);\n}\n\nexport function validate(filterData: FilterData[]) {\n if (uniqBy(filterData, \"name\").length !== filterData.length) {\n throw new Error(\"Filter names should be unique\");\n }\n}\n\nfunction getDefaultValue(filter: FilterData) {\n const { options } = filter;\n\n return {\n value:\n options.multiple || options.type === FilterType.Range\n ? null\n : options.type === FilterType.Choice\n ? options.default ?? options.choices![0].value\n : \"\",\n values:\n filter.range && options.type === FilterType.Range\n ? [\"\", \"\"]\n : options.multiple\n ? []\n : null,\n };\n}\n\nexport function register(\n filterData: FilterData[],\n name: string,\n label: string,\n initial: FilterInput[],\n options: FilterDetailedOptions\n): FilterData[] {\n const existingFilter = initial.find((f) => f.name === name);\n const filter: FilterData = {\n active: !!existingFilter,\n label,\n name,\n range: false,\n sortIndex: filterData.length,\n options,\n value: null,\n values: null,\n };\n\n return [\n ...filterData,\n {\n ...filter,\n ...getDefaultValue(filter),\n ...existingFilter,\n },\n ];\n}\n\nexport function change(\n filterData: FilterData[],\n name: string,\n value: string | string[],\n opts: OnFilterChangeOpts = {}\n): FilterData[] {\n const filterToUpdate = filterData.find((filter) => filter.name === name)!;\n\n let update: Partial<FilterData>;\n\n if (filterToUpdate!.options.multiple) {\n update = {\n values: value as string[],\n };\n } else if (\n filterToUpdate!.options.type === FilterType.Range &&\n opts.rangePart\n ) {\n update = {\n values:\n opts.rangePart === \"min\"\n ? [value as string, filterToUpdate.values![1]]\n : [filterToUpdate.values![0], value as string],\n };\n } else {\n update = { value: value as string };\n }\n\n return filterData.map((filter) =>\n filter.name === name\n ? {\n ...filter,\n ...update,\n }\n : filter\n );\n}\n\nexport function toggle(filterData: FilterData[], name: string): FilterData[] {\n const selectedFilter = filterData.find((filter) => filter.name === name)!;\n const sortIndex = selectedFilter.active\n ? selectedFilter.sortIndex\n : getActiveFilters(filterData).length;\n const value = selectedFilter.active ? getDefaultValue(selectedFilter) : {};\n\n return filterData.map((filter) =>\n filter.name === name\n ? {\n ...filter,\n active: !filter.active,\n sortIndex,\n ...value,\n }\n : filter.active && filter.sortIndex > sortIndex\n ? {\n ...filter,\n sortIndex: filter.sortIndex - 1,\n }\n : filter\n );\n}\n\nexport function toggleRange(\n filterData: FilterData[],\n name: string\n): FilterData[] {\n return filterData.map((filter) =>\n filter.name === name\n ? {\n ...filter,\n range: !filter.range,\n ...getDefaultValue({\n ...filter,\n range: !filter.range,\n }),\n }\n : filter\n );\n}\n", "import Button from \"@material-ui/core/Button\";\nimport Card from \"@material-ui/core/Card\";\nimport CardContent from \"@material-ui/core/CardContent\";\nimport CardHeader from \"@material-ui/core/CardHeader\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport Close from \"@material-ui/icons/Close\";\nimport React from \"react\";\n\nimport { FilterContext } from \"./context\";\nimport { FilterRow } from \"./Filter\";\nimport { FilterMenu, FilterMenuLabels } from \"./FilterMenu\";\nimport useStyles from \"./styles\";\nimport {\n FilterData,\n FilterDetailedOptions,\n FilterInput,\n FilterLabels,\n OnFilterChangeOpts,\n} from \"./types\";\nimport * as utils from \"./utils\";\n\nexport interface FilterBarProps {\n initial?: FilterInput[];\n labels: Record<\"header\" | \"addButton\", string> &\n FilterMenuLabels &\n FilterLabels;\n onChange: (filterData: FilterData[]) => void;\n onClose: () => void;\n}\n\nexport const FilterBar: React.FC<FilterBarProps> = React.forwardRef(\n ({ children, initial = [], labels, onChange: changeCb, onClose }, ref) => {\n const classes = useStyles();\n const [filterData, setFilterData] = React.useState<FilterData[]>([]);\n const [menuOpen, setMenuOpen] = React.useState(false);\n const button = React.useRef(null);\n\n utils.validate(filterData);\n\n const register = (\n name: string,\n label: string,\n options: FilterDetailedOptions\n ) =>\n setFilterData((fd) => utils.register(fd, name, label, initial, options));\n const onChange = (\n name: string,\n value: string | string[],\n opts?: OnFilterChangeOpts\n ) => setFilterData((fd) => utils.change(fd, name, value, opts));\n const toggle = (name: string) =>\n setFilterData((fd) => utils.toggle(fd, name));\n const toggleRange = (name: string) =>\n setFilterData((fd) => utils.toggleRange(fd, name));\n const unregister = (name: string) =>\n setFilterData((fd) => fd.filter((filter) => filter.name !== name));\n const set = (name: string, filter: Partial<FilterData>) =>\n setFilterData((fd) =>\n fd.map((f) => (f.name === name ? { ...f, filter } : f))\n );\n\n const availableFilters = utils.getAvailableFilters(filterData);\n\n React.useEffect(\n () => changeCb(utils.getActiveFilters(filterData)),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [filterData]\n );\n\n return (\n <FilterContext.Provider\n value={{\n filters: filterData,\n register,\n set,\n toggle,\n toggleRange,\n unregister,\n onChange,\n }}\n >\n {children}\n <Card className={classes.bar} ref={ref} elevation={20}>\n <CardHeader\n title={labels.header}\n action={\n <IconButton onClick={onClose}>\n <Close />\n </IconButton>\n }\n />\n <CardContent>\n <div>\n {utils\n .getActiveFilters(filterData)\n .sort((a, b) => (a.sortIndex > b.sortIndex ? 1 : -1))\n .map((filter, filterIndex) => (\n <FilterRow\n key={filter.name}\n first={filterIndex === 0}\n labels={labels}\n name={filter.name}\n />\n ))}\n </div>\n {!!availableFilters.length && (\n <>\n <Button\n color=\"primary\"\n ref={button}\n onClick={() => setMenuOpen(true)}\n >\n + {labels.addButton}\n </Button>\n </>\n )}\n <FilterMenu\n anchorEl={button.current}\n labels={labels}\n open={menuOpen}\n onClose={() => setMenuOpen(false)}\n />\n </CardContent>\n </Card>\n </FilterContext.Provider>\n );\n }\n);\nFilterBar.displayName = \"FilterBar\";\nexport default FilterBar;\n", "import ClickAwayListener from \"@material-ui/core/ClickAwayListener\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Popper from \"@material-ui/core/Popper\";\nimport Typography from \"@material-ui/core/Typography\";\nimport React from \"react\";\n\nimport { useFilters } from \"./context\";\nimport useStyles from \"./styles\";\nimport { getAvailableFilters } from \"./utils\";\n\nexport type FilterMenuLabels = Record<\"header\", string>;\nexport interface FilterMenuProps {\n anchorEl: HTMLElement | null;\n labels: FilterMenuLabels;\n open: boolean;\n onClose: () => void;\n}\n\nexport const FilterMenu: React.FC<FilterMenuProps> = ({\n anchorEl,\n labels,\n open,\n onClose,\n}) => {\n const classes = useStyles();\n const { filters, toggle } = useFilters();\n\n const availableFilters = getAvailableFilters(filters);\n const handleFilterClick = (filterName: string) => {\n toggle(filterName);\n onClose();\n };\n\n return (\n <Popper\n anchorEl={anchorEl}\n open={open}\n disablePortal\n placement=\"bottom-start\"\n >\n <ClickAwayListener onClickAway={onClose}>\n <Paper elevation={20} className={classes.menuPaper}>\n <div className={classes.menuContent}>\n <Typography\n className={classes.menuHeader}\n color=\"textSecondary\"\n variant=\"caption\"\n >\n {labels.header}\n </Typography>\n </div>\n {availableFilters.map((filter) => (\n <MenuItem\n key={filter.name}\n onClick={() => handleFilterClick(filter.name)}\n >\n {filter.label}\n </MenuItem>\n ))}\n </Paper>\n </ClickAwayListener>\n </Popper>\n );\n};\nFilterMenu.displayName = \"FilterMenu\";\n", "import DialogTitle from \"@material-ui/core/DialogTitle\";\nimport Typography, { TypographyProps } from \"@material-ui/core/Typography\";\nimport React from \"react\";\n\nimport { CloseIcon } from \"../icons\";\nimport { useStyles } from \"./styles\";\n\nexport interface DialogHeaderProps extends TypographyProps<\"h5\"> {\n onClose: () => void;\n}\n\nexport const DialogHeader: React.FC<DialogHeaderProps> = ({\n onClose,\n children,\n ...props\n}) => {\n const classes = useStyles();\n\n return (\n <>\n <DialogTitle\n className={classes.wrapper}\n id=\"alert-dialog-title\"\n disableTypography\n >\n <Typography variant=\"h5\" component=\"h5\" {...props}>\n {children}\n </Typography>\n <button\n className={classes.button}\n onClick={onClose}\n aria-label=\"Close modal\"\n data-test=\"close\"\n >\n <CloseIcon />\n </button>\n </DialogTitle>\n </>\n );\n};\nDialogHeader.displayName = \"DialogHeader\";\n", "import { makeStyles } from \"../theme\";\n\nexport const useStyles = makeStyles(\n (theme) => ({\n button: {\n \"&:hover, &:focus\": {\n color: theme.palette.saleor.active[1],\n },\n appearance: \"none\",\n border: \"none\",\n background: \"transparent\",\n color: theme.palette.saleor.main[3],\n cursor: \"pointer\",\n padding: 0,\n outline: 0,\n },\n wrapper: {\n alignItems: \"center\",\n display: \"flex\",\n justifyContent: \"space-between\",\n },\n }),\n { name: \"DialogHeader\" }\n);\n", "import Table, { TableProps } from \"@material-ui/core/Table\";\nimport React from \"react\";\n\nimport { useStyles } from \"./styles\";\n\nexport interface DialogTableProps extends TableProps {\n innerRef?: React.Ref<HTMLTableElement>;\n}\n\nexport const DialogTable = React.forwardRef<HTMLDivElement, DialogTableProps>(\n ({ children, innerRef, ...props }, ref) => {\n const classes = useStyles();\n\n return (\n <div className={classes.wrapper} ref={ref}>\n <Table ref={innerRef} {...props}>\n {children}\n </Table>\n </div>\n );\n }\n);\nDialogTable.displayName = \"DialogTable\";\n", "import { makeStyles } from \"../theme\";\n\nexport const useStyles = makeStyles(\n () => ({\n wrapper: {\n overflowY: \"scroll\",\n maxHeight: 500,\n },\n }),\n { name: \"DialogTable\" }\n);\n", "import clsx from \"clsx\";\nimport React from \"react\";\n\nimport { useStyles } from \"./styles\";\n\nexport interface ScrollShadowProps\n extends React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLDivElement>,\n HTMLDivElement\n > {\n show: boolean;\n variant: \"bottom\" | \"top\";\n}\n\nexport const ScrollShadow: React.FC<ScrollShadowProps> = ({\n show,\n variant,\n children,\n ...props\n}) => {\n const classes = useStyles();\n\n if (variant === \"bottom\") {\n return (\n <>\n <div\n {...props}\n className={clsx(classes.root, {\n [classes.bottom]: show,\n })}\n >\n {children}\n </div>\n </>\n );\n }\n\n return (\n <div\n {...props}\n className={clsx(classes.root, {\n [classes.top]: show,\n })}\n >\n {children}\n </div>\n );\n};\nScrollShadow.displayName = \"ScrollShadow\";\n", "import { makeStyles } from \"../theme\";\n\nexport const useStyles = makeStyles(\n (theme) => ({\n root: {\n // margin: theme.spacing(0, 3),\n boxShadow: \"0px 0px 0px rgba(2, 25, 58, 0.16)\",\n transition: theme.transitions.create(\"box-shadow\"),\n },\n bottom: {\n boxShadow: \"0px -6px 30px rgba(2, 25, 58, 0.16)\",\n },\n top: {\n boxShadow: \"0px 6px 30px rgba(2, 25, 58, 0.16)\",\n },\n }),\n { name: \"ScrollShadow\" }\n);\n", "import {\n OverridableComponent,\n OverrideProps,\n} from \"@material-ui/core/OverridableComponent\";\nimport clsx from \"clsx\";\nimport React from \"react\";\nimport { UserInteraction } from \"../../types/utils\";\nimport useStyles from \"./styles\";\n\nexport interface PillLinkInnerProps {\n className?: string;\n children?: React.ReactNode;\n state?: UserInteraction;\n}\nexport interface PillLinkTypeMap<P = {}, D extends React.ElementType = \"a\"> {\n props: P & PillLinkInnerProps;\n classKey: never;\n defaultComponent: D;\n}\n\nexport type PillLinkProps<\n D extends React.ElementType = PillLinkTypeMap[\"defaultComponent\"],\n P = {}\n> = OverrideProps<PillLinkTypeMap<P, D>, D>;\n\ninterface PillLinkPropsWithComponent extends PillLinkProps {\n component?: React.ElementType;\n}\n\nconst _PillLink: React.FC<PillLinkPropsWithComponent> = ({\n children,\n component: Component = \"a\",\n className,\n state = \"default\",\n ...props\n}) => {\n const classes = useStyles();\n\n return (\n <Component\n className={clsx(classes.root, className, {\n [classes.hover]: state === \"hover\",\n [classes.active]: state === \"active\",\n })}\n {...props}\n >\n {children}\n </Component>\n );\n};\n_PillLink.displayName = \"PillLink\";\nexport const PillLink = _PillLink as OverridableComponent<PillLinkTypeMap>;\n", "import { makeStyles } from \"../theme\";\n\nconst useStyles = makeStyles(\n (theme) => ({\n root: {\n \"&:hover, &:focus-visible, &$hover\": {\n borderColor: theme.palette.saleor.active[3],\n color: theme.palette.primary.main,\n },\n \"&:active, &$active\": {\n backgroundColor: theme.palette.saleor.active[5],\n borderColor: theme.palette.saleor.active[3],\n color: theme.palette.primary.main,\n },\n backgroundColor: \"transparent\",\n border: `1px dashed ${theme.palette.saleor.main[3]}`,\n borderRadius: 20,\n cursor: \"pointer\",\n color: theme.palette.text.primary,\n outline: 0,\n userSelect: \"none\",\n padding: \"5px 8px\",\n transition: theme.transitions.create(\n [\"border-color\", \"background-color\", \"color\"],\n {\n duration: theme.transitions.duration.shorter,\n }\n ),\n ...theme.typography.body1,\n },\n hover: {},\n active: {},\n }),\n {\n name: \"PillLink\",\n }\n);\nexport default useStyles;\n", "import clsx from \"clsx\";\nimport React from \"react\";\nimport {\n ListContext,\n ListGridContext,\n useGridStyles,\n useListContext,\n} from \"./context\";\nimport { ListGridTemplate, useStyles } from \"./styles\";\n\nexport interface BaseListProps extends React.HTMLAttributes<HTMLElement> {\n gridTemplate: ListGridTemplate;\n}\nexport const BaseList: React.FC<BaseListProps> = ({\n children,\n gridTemplate,\n ...props\n}) => (\n <ListGridContext.Provider value={gridTemplate}>\n <section {...props}>{children}</section>\n </ListGridContext.Provider>\n);\n\nexport type BaseListItemClassKey =\n | \"row\"\n | \"rowBody\"\n | \"rowHead\"\n | \"rowFoot\"\n | \"rowHover\"\n | \"rowBodySelected\";\n\nexport interface BaseListItemProps\n extends React.HTMLAttributes<HTMLDivElement | HTMLLIElement> {\n classes: Record<BaseListItemClassKey, string>;\n hover?: boolean;\n selected?: boolean;\n}\n\nexport const BaseListItem: React.FC<BaseListItemProps> = ({\n classes,\n className,\n children,\n hover = true,\n selected,\n ...props\n}) => {\n const baseClasses = useStyles();\n const gridClasses = useGridStyles();\n const listSection = useListContext();\n\n const Component = listSection === \"body\" ? \"li\" : \"div\";\n\n return (\n <Component\n className={clsx(\n className,\n \"OfsettedTableRow\",\n gridClasses.root,\n classes.row,\n baseClasses.row,\n {\n [classes.rowBody]: listSection === \"body\",\n [classes.rowHead]: listSection === \"head\",\n [classes.rowFoot]: listSection === \"foot\",\n [classes.rowHover]: hover,\n [classes.rowBodySelected]: selected,\n }\n )}\n aria-selected={selected}\n {...props}\n >\n {children}\n </Component>\n );\n};\n\nexport type BaseListItemCellClassKey =\n | \"cell\"\n | \"cellBody\"\n | \"cellHeader\"\n | \"cellAction\"\n | \"cellCheckbox\";\n\nexport interface BaseListItemCellProps\n extends React.HTMLAttributes<HTMLDivElement> {\n classes: Record<BaseListItemCellClassKey, string>;\n colSpan?: number;\n padding?: \"action\" | \"checkbox\" | \"none\";\n}\nexport const BaseListItemCell: React.FC<BaseListItemCellProps> = ({\n classes,\n className,\n children,\n colSpan,\n padding,\n ...props\n}) => {\n const baseClasses = useStyles();\n const listSection = useListContext();\n const style = colSpan ? { gridColumn: `span ${colSpan}` } : {};\n\n return (\n <div\n className={clsx(className, baseClasses.cell, classes.cell, {\n [classes.cellBody]: listSection === \"body\",\n [classes.cellHeader]: listSection === \"head\",\n [classes.cellAction]: padding === \"action\",\n [classes.cellCheckbox]: padding === \"checkbox\",\n })}\n style={style}\n {...props}\n >\n {children}\n </div>\n );\n};\n\nexport type BaseListHeaderProps = React.HTMLProps<HTMLElement>;\nexport const BaseListHeader: React.FC<BaseListHeaderProps> = ({\n children,\n ...props\n}) => (\n <ListContext.Provider value=\"head\">\n <header {...props}>{children}</header>\n </ListContext.Provider>\n);\n\nexport type BaseListBodyProps = React.HTMLProps<HTMLUListElement>;\nexport const BaseListBody: React.FC<BaseListBodyProps> = ({\n children,\n className,\n ...props\n}) => {\n const classes = useStyles();\n\n return (\n <ListContext.Provider value=\"body\">\n <ul role=\"feed\" className={clsx(classes.body, className)} {...props}>\n {children}\n </ul>\n </ListContext.Provider>\n );\n};\n\nexport type BaseListFooterProps = React.HTMLProps<HTMLElement>;\nexport const BaseListFooter: React.FC<BaseListFooterProps> = ({\n children,\n ...props\n}) => (\n <ListContext.Provider value=\"foot\">\n <footer {...props}>{children}</footer>\n </ListContext.Provider>\n);\n", "import { createContext, useContext, useMemo } from \"react\";\nimport { ListGridTemplate, useGridTemplateStyles } from \"./styles\";\n\nexport const ListContext = createContext<\"body\" | \"head\" | \"foot\">(\"body\");\nexport const ListGridContext = createContext<ListGridTemplate>([\"1fr\"]);\n\nexport const useListContext = () => useContext(ListContext);\nexport const useListGridContext = () => useContext(ListGridContext);\n\nexport function useGridStyles() {\n const gridTemplate = useListGridContext();\n const props = useMemo(() => ({ width: gridTemplate }), [gridTemplate]);\n\n return useGridTemplateStyles(props);\n}\n", "import merge from \"lodash/merge\";\nimport { makeStyles } from \"..\";\n\nexport type ListGridTemplate = string[] | Record<string, string[]>;\n\nexport const useGridTemplateStyles = makeStyles<\n { width: ListGridTemplate },\n \"root\"\n>(\n () => ({\n root: ({ width }) => {\n if (width instanceof Array) {\n return {\n gridTemplateColumns: width.join(\" \"),\n };\n }\n\n const x = Object.entries(width).map(([breakpoint, value]) => ({\n [breakpoint]: {\n gridTemplateColumns: value.join(\" \"),\n },\n }));\n return {\n ...merge({}, ...x),\n };\n },\n }),\n { name: \"ListGrid\" }\n);\n\nexport const useStyles = makeStyles(\n () => ({\n row: {\n alignItems: \"center\",\n display: \"grid\",\n },\n cell: {\n boxSizing: \"content-box\",\n flex: 1,\n },\n body: {\n margin: 0,\n padding: 0,\n },\n }),\n { name: \"BaseList\" }\n);\n", "import React from \"react\";\nimport { useTheme } from \"..\";\nimport {\n BaseList,\n BaseListBody,\n BaseListBodyProps,\n BaseListFooter,\n BaseListFooterProps,\n BaseListHeader,\n BaseListHeaderProps,\n BaseListItem,\n BaseListItemCell,\n BaseListItemCellProps,\n BaseListItemProps,\n BaseListProps,\n} from \"../BaseList\";\nimport { useStyles } from \"./styles\";\n\nexport const OffsettedList: React.FC<BaseListProps> = BaseList;\nexport const OffsettedListHeader: React.FC<BaseListHeaderProps> =\n BaseListHeader;\nexport const OffsettedListFooter: React.FC<BaseListFooterProps> =\n BaseListFooter;\nexport const OffsettedListBody: React.FC<BaseListBodyProps> = (props) => {\n const classes = useStyles();\n\n return <BaseListBody className={classes.body} {...props} />;\n};\nexport const OffsettedListItem: React.FC<Omit<BaseListItemProps, \"classes\">> = (\n props\n) => {\n const classes = useStyles();\n\n return <BaseListItem classes={classes} {...props} />;\n};\nexport const OffsettedListItemCell: React.FC<\n Omit<BaseListItemCellProps, \"classes\">\n> = (props) => {\n const classes = useStyles();\n\n return <BaseListItemCell classes={classes} {...props} />;\n};\n\nexport const useOffsettedListWidths = () => {\n const theme = useTheme();\n\n return {\n // n actions - 1 + 2.5 right padding\n actions: (n: number = 1) =>\n `calc( ${theme.spacing(n - 1 + 2.5)} + ${40 * n}px)`,\n checkbox: \"64px\",\n };\n};\n", "import { makeStyles } from \"..\";\nimport { BaseListItemCellClassKey, BaseListItemClassKey } from \"../BaseList\";\n\nexport const useStyles = makeStyles<\n {},\n BaseListItemCellClassKey | BaseListItemClassKey | \"body\"\n>(\n (theme) => {\n const outerPadding = {\n \"&:first-child\": {\n paddingLeft: theme.spacing(4),\n },\n \"&:last-child\": {\n paddingRight: theme.spacing(4),\n },\n };\n\n return {\n row: {\n alignItems: \"center\",\n display: \"grid\",\n minHeight: 48,\n gap: theme.spacing(4),\n },\n rowBody: {\n \"&:first-child\": {\n marginTop: theme.spacing(1),\n },\n background: theme.palette.background.paper,\n borderRadius: 6,\n boxShadow: theme.shadows[0],\n height: 90,\n margin: theme.spacing(1.5, 0),\n transition: `${theme.transitions.create(\n \"box-shadow\"\n )},${theme.transitions.create(\"background\", {\n delay: 0,\n duration: theme.transitions.duration.shortest,\n })}`,\n ...theme.typography.body1,\n },\n rowFoot: {\n \"& $cell\": outerPadding,\n },\n rowHead: {\n \"& $cell\": outerPadding,\n },\n rowHover: {\n \"&$rowBody:hover\": {\n \"& $cell:first-child\": {\n color: theme.palette.primary.main,\n },\n boxShadow: theme.shadows[16],\n },\n },\n rowBodySelected: {},\n cell: {\n boxSizing: \"content-box\",\n flex: 1,\n transition: theme.transitions.create(\"color\", {\n duration: theme.transitions.duration.shorter,\n }),\n },\n cellAction: {\n \"&$cell:last-child\": {\n paddingRight: theme.spacing(2.5),\n },\n display: \"flex\",\n gap: theme.spacing(1),\n justifyContent: \"flex-end\",\n },\n cellCheckbox: {\n \"&$cell:first-child\": {\n paddingLeft: theme.spacing(2),\n },\n },\n cellBody: {\n ...outerPadding,\n padding: theme.spacing(1, 0),\n },\n cellHeader: {\n ...theme.typography.body2,\n color: theme.palette.text.secondary,\n },\n body: {\n margin: 0,\n padding: 0,\n },\n };\n },\n { name: \"OffsettedList\" }\n);\n", "import React, { useState } from \"react\";\nimport { useTheme } from \"..\";\nimport {\n BaseList,\n BaseListBody,\n BaseListBodyProps,\n BaseListFooter,\n BaseListFooterProps,\n BaseListHeader,\n BaseListHeaderProps,\n BaseListItem,\n BaseListItemCell,\n BaseListItemCellProps,\n BaseListItemProps,\n BaseListProps,\n} from \"../BaseList\";\nimport { ListActionContext, useListAction } from \"./context\";\nimport { useStyles } from \"./styles\";\n\nexport const List: React.FC<BaseListProps> = BaseList;\nexport const ListHeader: React.FC<BaseListHeaderProps> = BaseListHeader;\nexport const ListFooter: React.FC<BaseListFooterProps> = BaseListFooter;\nexport const ListBody: React.FC<BaseListBodyProps> = BaseListBody;\nexport const ListItem: React.FC<Omit<BaseListItemProps, \"classes\">> = ({\n hover: initialHover = true,\n ...rest\n}) => {\n const classes = useStyles();\n const [hover, setHover] = useState(true);\n\n return (\n <ListActionContext.Provider value={setHover}>\n <BaseListItem classes={classes} hover={initialHover && hover} {...rest} />\n </ListActionContext.Provider>\n );\n};\nexport const ListItemCell: React.FC<Omit<BaseListItemCellProps, \"classes\">> = (\n props\n) => {\n const classes = useStyles();\n\n return <BaseListItemCell classes={classes} {...props} />;\n};\n\nexport const ListItemCellAction: React.FC<\n React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>\n> = (props) => {\n const setHover = useListAction();\n\n return (\n <div\n onMouseEnter={() => setHover(false)}\n onMouseLeave={() => setHover(true)}\n {...props}\n />\n );\n};\n\nexport const useListWidths = () => {\n const theme = useTheme();\n\n return {\n actions: (n: number = 1) => `calc( ${theme.spacing(n + 1)} + ${48 * n}px)`,\n checkbox: \"64px\",\n };\n};\n", "import { createContext, useContext } from \"react\";\n\nexport type ListActionContextType = (hover: boolean) => void;\n\nexport const ListActionContext = createContext<\n ListActionContextType | undefined\n>(undefined);\nListActionContext.displayName = \"ListActionContext\";\n\nexport const useListAction = () => {\n const ctx = useContext(ListActionContext);\n if (ctx === undefined) {\n throw new Error(\"useListAction must be used within a ListActionContext\");\n }\n\n return ctx;\n};\n\nexport interface UseTableActionHover {\n hover: boolean;\n props: Record<\"onMouseLeave\" | \"onMouseEnter\", () => void>;\n}\n", "import { CSSProperties } from \"react\";\nimport { makeStyles } from \"..\";\n\nexport const useStyles = makeStyles(\n (theme) => {\n const dividerStyles: CSSProperties = {\n content: \"''\",\n height: 1,\n position: \"absolute\",\n top: 0,\n backgroundColor: theme.palette.background.default,\n left: 32,\n width: \"calc(100% - 64px)\",\n };\n\n return {\n row: {\n gap: theme.spacing(4),\n minHeight: 72,\n position: \"relative\",\n },\n rowBody: {\n \"&:before\": dividerStyles,\n \"&:last-child:after\": {\n ...dividerStyles,\n top: \"100%\",\n },\n transition: theme.transitions.create(\"background-color\", {\n duration: theme.transitions.duration.shorter,\n }),\n ...theme.typography.body1,\n },\n rowFoot: {\n padding: theme.spacing(0, 4),\n },\n rowHead: {\n \"& $cell\": {\n \"&:first-child\": {\n paddingLeft: theme.spacing(4),\n },\n \"&:last-child\": {\n paddingRight: theme.spacing(4),\n },\n },\n ...theme.typography.body2,\n color: theme.palette.text.secondary,\n },\n rowHover: {\n \"&$rowBody:hover\": {\n \"&:before, &:after, & + $rowBody:before\": {\n backgroundColor: \"transparent\",\n },\n backgroundColor: theme.palette.saleor.active[5],\n },\n },\n rowNoPadding: {},\n rowBodySelected: {},\n cell: {},\n cellAction: {\n \"&$cell:last-child\": {\n paddingRight: theme.spacing(3),\n },\n display: \"flex\",\n gap: theme.spacing(1),\n justifyContent: \"flex-end\",\n },\n cellBody: {\n \"&:first-child\": {\n paddingLeft: theme.spacing(4),\n },\n \"&:last-child\": {\n paddingRight: theme.spacing(4),\n },\n padding: theme.spacing(1, 0),\n },\n cellCheckbox: {\n \"&$cell:first-child\": {\n paddingLeft: `calc(${theme.spacing(2)} + 2px)`,\n },\n },\n cellHeader: {},\n };\n },\n { name: \"List\" }\n);\n"],
|
|
5
|
-
"mappings": "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",
|
|
3
|
+
"sources": ["../src/theme/ThemeProvider.tsx", "../src/ActionBar/context.tsx", "../src/Backlink/context.tsx", "../src/extensions/sendMessage.ts", "../src/extensions/types.ts", "../src/extensions/useExtensionMessage.ts", "../src/localStorageKeys.ts", "../src/tools/useLocalStorage.ts", "../src/theme/Baseline.tsx", "../src/theme/styles.ts", "../src/theme/context.ts", "../src/theme/createSaleorTheme/createSaleorTheme.ts", "../src/theme/createSaleorTheme/overrides/buttons.ts", "../src/theme/createSaleorTheme/overrides/inputs.ts", "../src/theme/createSaleorTheme/overrides/tables.ts", "../src/theme/createSaleorTheme/overrides/index.ts", "../src/theme/createSaleorTheme/palette.ts", "../src/theme/createSaleorTheme/shadows.ts", "../src/theme/themes.ts", "../src/theme/utils.ts", "../src/icons/CompleteIcon.tsx", "../src/icons/InfoIcon.tsx", "../src/icons/NotAllowedIcon.tsx", "../src/icons/NotAllowedInvertedIcon.tsx", "../src/icons/WarningIcon.tsx", "../src/icons/CheckboxIcon.tsx", "../src/icons/CheckboxCheckedIcon.tsx", "../src/icons/CheckboxIndeterminateIcon.tsx", "../src/icons/SearchIcon.tsx", "../src/icons/EditIcon.tsx", "../src/icons/FilteringIcon.tsx", "../src/icons/DeleteIcon.tsx", "../src/icons/ImageIcon.tsx", "../src/icons/CloseIcon.tsx", "../src/icons/PlusIcon.tsx", "../src/icons/ArrowRightIcon.tsx", "../src/icons/MoreIcon.tsx", "../src/Savebar/Savebar.tsx", "../src/ActionBar/ActionBar.tsx", "../src/tools/useElementScroll.ts", "../src/tools/useWindowScroll.ts", "../src/ActionBar/styles.ts", "../src/Button/Button.tsx", "../src/Button/styles.ts", "../src/ConfirmButton/ConfirmButton.tsx", "../src/ConfirmButton/styles.ts", "../src/Savebar/ButtonTooltipDecorator.tsx", "../src/Savebar/styles.ts", "../src/Backlink/Backlink.tsx", "../src/LayoutButton/LayoutButton.tsx", "../src/LayoutButton/styles.ts", "../src/Backlink/styles.ts", "../src/Sidebar/Sidebar.tsx", "../src/icons/Logo.tsx", "../src/icons/LogoLight.tsx", "../src/Sidebar/ExpandButton.tsx", "../src/SquareButton/SquareButton.tsx", "../src/Sidebar/MenuItem.tsx", "../src/SidebarDrawer/MenuItemBtn.tsx", "../src/SidebarDrawer/styles.ts", "../src/SidebarDrawer/SidebarDrawer.tsx", "../src/Alert/Alert.tsx", "../src/IconButton/IconButton.tsx", "../src/IconButton/styles.ts", "../src/Alert/AlertBase.tsx", "../src/Alert/styles.ts", "../src/Notification/Notification.tsx", "../src/Notification/styles.ts", "../src/UserChipMenu/UserChipMenu.tsx", "../src/UserChipMenu/context.ts", "../src/UserChipMenu/styles.ts", "../src/UserChipMenu/UserChipMenuItem.tsx", "../src/ResponsiveTable/ResponsiveTable.tsx", "../src/ResponsiveTable/styles.ts", "../src/Tooltip/Tooltip.tsx", "../src/Tooltip/styles.ts", "../src/Pagination/Pagination.tsx", "../src/Pagination/PaginationActions.tsx", "../src/Pagination/styles.ts", "../src/Pagination/PaginationRowNumberSelect.tsx", "../src/Pagination/TablePagination.tsx", "../src/StatusChip/StatusChip.tsx", "../src/StatusChip/styles.ts", "../src/PageTabs/PageTab.tsx", "../src/PageTabs/styles.ts", "../src/PageTabs/PageTabs.tsx", "../src/PageTabs/PageTabPanel.tsx", "../src/Filter/Filter.tsx", "../src/Filter/context.tsx", "../src/Filter/FilterContent.tsx", "../src/Filter/FilterField/MultipleSelectFilterField.tsx", "../src/Filter/styles.ts", "../src/Filter/FilterField/RangeFilterField.tsx", "../src/Filter/FilterField/SelectFilterField.tsx", "../src/Filter/FilterField/TextFilterField.tsx", "../src/Filter/types.ts", "../src/Filter/utils.ts", "../src/Filter/FilterBar.tsx", "../src/Filter/FilterMenu.tsx", "../src/DialogHeader/DialogHeader.tsx", "../src/DialogHeader/styles.ts", "../src/DialogTable/DialogTable.tsx", "../src/DialogTable/styles.ts", "../src/ScrollShadow/ScrollShadow.tsx", "../src/ScrollShadow/styles.ts", "../src/PillLink/PillLink.tsx", "../src/PillLink/styles.ts"],
|
|
4
|
+
"sourcesContent": ["import type { Theme } from \"@material-ui/core/styles\";\nimport { MuiThemeProvider } from \"@material-ui/core/styles\";\nimport merge from \"lodash/merge\";\nimport React, { useEffect } from \"react\";\n\nimport { ActionBarProvider } from \"../ActionBar/context\";\nimport { BacklinkProvider } from \"../Backlink/context\";\nimport {\n ExtensionMessageType,\n sendMessageToExtension,\n ThemeChangeMessage,\n} from \"../extensions\";\nimport { localStorageKeys } from \"../localStorageKeys\";\nimport useLocalStorage from \"../tools/useLocalStorage\";\nimport { Baseline } from \"./Baseline\";\nimport { ThemeContext } from \"./context\";\nimport { createTheme, Themes, ThemeType } from \"./createSaleorTheme\";\nimport { dark, light } from \"./themes\";\nimport { changeColorMeta } from \"./utils\";\n\nexport interface ThemeProviderProps {\n defaultTheme?: ThemeType;\n /**\n * Passing an object here will result in losing visual consistency with\n * Saleor's Dashboard. Use with caution.\n */\n palettes?: Partial<Themes>;\n /**\n * Passing an object here will result in losing visual consistency with\n * Saleor's Dashboard. Use with caution.\n */\n overrides?: Partial<Theme>;\n}\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\n children,\n defaultTheme = \"light\",\n palettes = {},\n overrides = {},\n}) => {\n const { value: themeTypeName, setValue: setThemeType } = useLocalStorage(\n localStorageKeys.theme,\n defaultTheme\n );\n const themeType = themeTypeName as ThemeType;\n const themes = {\n light,\n dark,\n ...palettes,\n };\n const theme = merge(createTheme(themes[themeType]), overrides);\n const sendThemeToExtension = () =>\n sendMessageToExtension<ThemeChangeMessage>(\n {\n theme: themeType,\n type: ExtensionMessageType.THEME,\n },\n \"*\"\n );\n\n useEffect(() => {\n sendThemeToExtension();\n changeColorMeta(theme.palette.background.default);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [themeType]);\n\n return (\n <ThemeContext.Provider\n value={{\n themeType,\n sendThemeToExtension,\n setTheme: setThemeType,\n }}\n >\n <MuiThemeProvider theme={theme}>\n <ActionBarProvider>\n <BacklinkProvider>\n <Baseline />\n {children}\n </BacklinkProvider>\n </ActionBarProvider>\n </MuiThemeProvider>\n </ThemeContext.Provider>\n );\n};\n", "import React from \"react\";\n\nexport interface ActionBarContextType {\n anchor: React.RefObject<HTMLDivElement>;\n docked: boolean;\n setDocked: (docked: boolean) => void;\n}\n\nexport const ActionBarContext = React.createContext<\n ActionBarContextType | undefined\n>(undefined);\nActionBarContext.displayName = \"ActionBarContext\";\n\nexport const useActionBar = () => {\n const ctx = React.useContext(ActionBarContext);\n if (ctx === undefined) {\n throw new Error(\"useActionBar must be used within a ActionBarContext\");\n }\n\n return ctx;\n};\n\nexport const ActionBarProvider: React.FC = ({ children }) => {\n const [docked, setDocked] = React.useState(true);\n const anchor = React.useRef<HTMLDivElement | null>(null);\n\n return (\n <ActionBarContext.Provider value={{ anchor, docked, setDocked }}>\n {children}\n </ActionBarContext.Provider>\n );\n};\n", "import React from \"react\";\n\nexport type BacklinkContextType = React.RefObject<HTMLDivElement>;\n\nexport const BacklinkContext = React.createContext<\n BacklinkContextType | undefined\n>(undefined);\nBacklinkContext.displayName = \"BacklinkContext\";\n\nexport const useBacklink = () => {\n const ctx = React.useContext(BacklinkContext);\n if (ctx === undefined) {\n throw new Error(\"useBacklink must be used within a BacklinkContext\");\n }\n\n return ctx;\n};\n\nexport const BacklinkProvider: React.FC = ({ children }) => {\n const anchor = React.useRef<HTMLDivElement | null>(null);\n\n return (\n <BacklinkContext.Provider value={anchor}>\n {children}\n </BacklinkContext.Provider>\n );\n};\n", "import { BaseExtensionMessageData } from \"./types\";\n\nexport function sendMessageToDashboard<T extends BaseExtensionMessageData>(\n message: T,\n targetOrigin: string\n) {\n if (!!window.parent) {\n window.parent.postMessage(message, targetOrigin);\n }\n}\n\nexport function sendMessageToExtension<T extends BaseExtensionMessageData>(\n message: T,\n targetOrigin: string\n) {\n const appFrame: HTMLIFrameElement | null =\n document.querySelector(\"#extension-app\");\n\n if (!!appFrame?.contentWindow) {\n appFrame.contentWindow.postMessage(message, targetOrigin);\n }\n}\n", "import { ThemeType } from \"../theme\";\n\nexport enum ExtensionMessageType {\n BREADCRUMB_CLICK,\n BREADCRUMB_SET,\n THEME,\n}\nexport interface BaseExtensionMessageData {\n type: ExtensionMessageType;\n}\n\nexport type Breadcrumb = Record<\"label\" | \"value\", string>;\nexport interface BreadcrumbClickMessage extends BaseExtensionMessageData {\n breadcrumb: string;\n}\nexport interface BreadcrumbChangeMessage extends BaseExtensionMessageData {\n breadcrumbs: Breadcrumb[];\n}\n\nexport interface ThemeChangeMessage extends BaseExtensionMessageData {\n theme: ThemeType;\n}\n\nexport interface ExtensionMessageEvent<T extends BaseExtensionMessageData> {\n data: T;\n}\n", "import { useEffect } from \"react\";\n\nimport { BaseExtensionMessageData, ExtensionMessageEvent } from \"./types\";\n\nexport function useExtensionMessage<T extends BaseExtensionMessageData>(\n handle: (message: ExtensionMessageEvent<T>) => void\n) {\n useEffect(() => {\n window.addEventListener(\"message\", handle);\n\n return () => window.removeEventListener(\"message\", handle);\n }, [handle]);\n}\n", "export const localStorageKeys = {\n theme: \"macaw-ui-theme\",\n menuShrink: \"macaw-ui-menu-shrink\",\n};\n", "// Copied directly from\n// https://github.com/dance2die/react-use-localstorage/blob/master/src/index.ts\n// to avoid cjs and esm confusion in jest transformators\n\nimport { useCallback, useEffect, useState } from \"react\";\n\n// FIXME: We also had to tweak return signature because tuples were bugging\n// typescript parser\n// https://stackoverflow.com/questions/62079477/line-0-parsing-error-cannot-read-property-map-of-undefined\n// tsdx issue\n// https://github.com/formium/tsdx/issues/926\nexport interface UseLocalStorage {\n value: string;\n setValue: (value: string) => void;\n}\nexport default function useLocalStorage(\n key: string,\n initialValue: string = \"\"\n): UseLocalStorage {\n const [value, setValue] = useState(\n () => window.localStorage.getItem(key) || initialValue\n );\n\n const setItem = (newValue: string) => {\n setValue(newValue);\n window.localStorage.setItem(key, newValue);\n };\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => {\n const newValue = window.localStorage.getItem(key);\n if (value !== newValue) {\n setValue(newValue || initialValue);\n }\n });\n\n const handleStorage = useCallback(\n (event: StorageEvent) => {\n if (event.key === key && event.newValue !== value) {\n setValue(event.newValue || initialValue);\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [value, key]\n );\n\n useEffect(() => {\n window.addEventListener(\"storage\", handleStorage);\n return () => window.removeEventListener(\"storage\", handleStorage);\n }, [handleStorage]);\n\n return {\n value,\n setValue: setItem,\n };\n}\n", "import CssBaseline from \"@material-ui/core/CssBaseline\";\nimport { fade } from \"@material-ui/core/styles\";\nimport React from \"react\";\n\nimport { makeStyles } from \"./styles\";\n\nconst useStyles = makeStyles(\n (theme) => ({\n \"@global\": {\n \"@import\": \"url('https://rsms.me/inter/inter.css')\",\n\n // For some reason @import clause must be put on top\n // eslint-disable-next-line sort-keys\n \"::selection\": {\n background: fade(theme.palette.primary.main, 0.2),\n },\n html: {\n fontSize: \"62.5%\",\n },\n a: {\n color: theme.palette.primary.main,\n textDecoration: \"none\",\n },\n },\n }),\n { name: \"Baseline\" }\n);\n\nexport const Baseline: React.FC = () => {\n useStyles();\n\n return <CssBaseline />;\n};\nBaseline.displayName = \"Baseline\";\n", "import {\n makeStyles as muiMakeStyles,\n useTheme as useMuiTheme,\n} from \"@material-ui/core/styles\";\nimport type {\n ClassNameMap,\n Styles,\n WithStylesOptions,\n} from \"@material-ui/styles/withStyles\";\nimport { useContext } from \"react\";\n\nimport { ThemeContext } from \"./context\";\nimport { SaleorTheme } from \"./createSaleorTheme/types\";\nimport type { SaleorThemeContext } from \"./types\";\n\nexport function makeStyles<\n Props extends Record<string, any> = {},\n ClassKey extends string = string\n>(\n styles: Styles<SaleorTheme, Props, ClassKey>,\n options?: Omit<WithStylesOptions<SaleorTheme>, \"withTheme\">\n): keyof Props extends never\n ? (props?: any) => ClassNameMap<ClassKey>\n : (props: Props) => ClassNameMap<ClassKey> {\n return muiMakeStyles(styles, options);\n}\n\nexport function useTheme(): SaleorTheme & SaleorThemeContext {\n const saleorTheme = useMuiTheme<SaleorTheme>();\n const themeInfo = useContext(ThemeContext);\n\n if (themeInfo === undefined || saleorTheme === undefined) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n\n return {\n ...saleorTheme,\n ...themeInfo,\n };\n}\n", "import React from \"react\";\n\nimport { SaleorThemeContext } from \"./types\";\n\nexport const ThemeContext = React.createContext<SaleorThemeContext | undefined>(\n undefined\n);\nThemeContext.displayName = \"ThemeContext\";\n", "import { createMuiTheme } from \"@material-ui/core/styles\";\nimport { fade } from \"@material-ui/core/styles\";\nimport type { TypographyProps } from \"@material-ui/core/Typography\";\n\nimport { overrides } from \"./overrides\";\nimport { createPalette } from \"./palette\";\nimport { shadows } from \"./shadows\";\nimport { SaleorTheme, SaleorThemeColors } from \"./types\";\n\nexport const ICONBUTTON_SIZE = 48;\n\nconst fontFamily = '\"Inter\", \"roboto\", \"sans-serif\"';\n\nexport const createTheme = (colors: SaleorThemeColors): SaleorTheme =>\n createMuiTheme({\n overrides: {\n ...overrides(colors, fontFamily),\n MuiCard: {\n root: {\n borderRadius: 8,\n borderWidth: 0,\n overflow: \"visible\",\n },\n },\n MuiCardActions: {\n root: {\n \".MuiCardContent-root + &\": {\n paddingTop: 0,\n },\n padding: \"3.2rem 3.2rem 3.2rem\",\n },\n },\n MuiCardContent: {\n root: {\n \".MuiCardHeader-root + &\": {\n paddingTop: 0,\n },\n padding: \"2.4rem 3.2rem\",\n },\n },\n MuiCardHeader: {\n action: {\n position: \"relative\",\n top: 4,\n },\n root: {\n padding: \"2.4rem 3.2rem\",\n },\n },\n MuiCheckbox: {\n root: {\n border: \"none\",\n background: \"none\",\n },\n },\n MuiChip: {\n avatar: {\n fontSize: \"1.2rem\",\n height: 32,\n left: -5,\n position: \"relative\",\n width: 32,\n },\n root: {\n \"& $avatar\": {\n fontSize: \"1.2rem\",\n },\n fontSize: \"1.3rem\",\n },\n },\n MuiDialog: {\n paper: {\n overflowY: undefined,\n },\n },\n MuiDialogActions: {\n root: {\n padding: \"16px 24px\",\n },\n },\n MuiDialogContent: {\n root: {\n overflowX: undefined,\n overflowY: undefined,\n padding: `24px 0px`,\n margin: `0px 24px`,\n },\n },\n MuiDialogContentText: {\n root: {\n \"&:last-child\": {\n marginBottom: 0,\n },\n },\n },\n MuiDivider: {\n light: {\n backgroundColor: colors.background.paper,\n },\n },\n MuiFormControlLabel: {\n label: {\n lineHeight: 1.2,\n marginLeft: 4,\n },\n },\n MuiFormLabel: {\n filled: {\n \"&&:not($error)\": {\n color: colors.primary,\n },\n },\n root: {\n \"&&$focused:not($error)\": {\n color: colors.font.gray,\n },\n },\n },\n MuiSvgIcon: {\n root: {\n fontSize: \"2.4rem\",\n height: \"1em\",\n width: \"1em\",\n },\n },\n MuiListItem: {\n button: {\n \"&:focus\": {\n background: colors.active[5],\n color: colors.main[1],\n },\n },\n root: {\n \"&$selected\": {\n \"&:hover\": {\n backgroundColor: colors.main[1],\n },\n backgroundColor: colors.main[1],\n },\n },\n },\n MuiMenu: {\n paper: {\n borderRadius: 0,\n },\n },\n MuiMenuItem: {\n root: {\n \"&$selected, &$selected:focus, &$selected:hover\": {\n backgroundColor: [colors.active[5], \"!important\"] as any,\n color: colors.primary,\n fontWeight: 700,\n },\n \"&:hover\": {\n backgroundColor: [colors.active[5], \"!important\"] as any,\n },\n \"@media(min-width: 600px)\": {\n minHeight: 48,\n },\n },\n },\n MuiRadio: {\n root: {\n border: \"none\",\n borderRadius: \"100%\",\n },\n },\n MuiSelect: {\n root: {\n \"&$disabled\": {\n backgroundColor: colors.background.default,\n },\n },\n },\n MuiSnackbarContent: {\n action: {\n \"& $MuiIconButton\": {\n \"& svg\": {\n color: colors.font.default,\n },\n },\n display: \"block\",\n paddingBottom: 10,\n paddingLeft: 0,\n paddingRight: 45,\n },\n message: {\n fontSize: 16,\n },\n root: {\n backgroundColor: colors.background.paper,\n boxShadow:\n \"0 6px 10px 0px rgba(0, 0, 0, 0.15), 0 1px 18px 0px rgba(0, 0, 0, 0.12), 0 3px 5px -1px rgba(0, 0, 0, 0.10)\",\n color: colors.font.default,\n display: \"block\",\n maxWidth: 480,\n },\n },\n MuiTooltip: {\n arrow: {\n color: colors.alert.icon.info,\n },\n tooltip: {\n backgroundColor: colors.alert.icon.info,\n fontSize: \"0.8em\",\n padding: 16,\n },\n },\n MuiTouchRipple: {\n child: {\n backgroundColor: fade(colors.primary, 1),\n },\n childLeaving: {\n backgroundColor: fade(colors.primary, 1),\n },\n ripple: {\n \"&$rippleVisible\": {\n backgroundColor: fade(colors.primary, 1),\n },\n borderRadius: \"100%\",\n },\n },\n },\n palette: createPalette(colors),\n props: {\n MuiButton: {\n disableRipple: true,\n },\n MuiFormControl: {\n variant: \"filled\",\n },\n MuiTextField: {\n variant: \"outlined\",\n },\n MuiCard: {\n elevation: 0,\n },\n MuiTypography: {\n component: \"div\",\n } as TypographyProps,\n MuiCheckbox: {\n color: \"primary\",\n },\n MuiTooltip: {\n placement: \"right-end\",\n },\n MuiList: {\n disablePadding: true,\n },\n MuiRadio: {\n disableRipple: true,\n },\n MuiSelect: {\n MenuProps: {\n anchorOrigin: {\n vertical: \"bottom\",\n horizontal: \"left\",\n },\n transformOrigin: {\n vertical: \"top\",\n horizontal: \"left\",\n },\n getContentAnchorEl: null,\n },\n },\n },\n shadows,\n spacing: (value: number = 1) => `${(value * 8) / 10}rem`,\n typography: {\n allVariants: {\n fontFamily,\n },\n body1: {\n color: colors.font.default,\n fontSize: \"1.6rem\",\n },\n body2: {\n fontSize: \"1.4rem\",\n },\n button: {\n fontSize: \"1.4rem\",\n },\n caption: {\n fontSize: \"1.2rem\",\n },\n fontFamily,\n h1: {\n fontSize: \"4rem\",\n fontWeight: 700,\n },\n h4: {\n fontSize: \"3.4rem\",\n color: colors.font.default,\n },\n h5: {\n fontSize: \"2.1rem\",\n fontWeight: 500,\n },\n h6: {\n fontSize: \"2rem\",\n fontWeight: 500,\n },\n subtitle1: {\n fontSize: \"1.6rem\",\n },\n subtitle2: {\n fontSize: \"1.4rem\",\n },\n },\n }) as unknown as SaleorTheme;\n", "import type { ThemeOptions } from \"@material-ui/core/styles\";\n\nimport { SaleorThemeColors } from \"../types\";\n\nexport const buttonOverrides = (\n colors: SaleorThemeColors\n): ThemeOptions[\"overrides\"] => {\n const containedPrimaryHover = {\n backgroundColor: colors.active[3],\n };\n\n return {\n MuiButton: {\n contained: {\n \"&$disabled\": {\n \"&$containedPrimary\": {\n color: colors.secondary,\n backgroundColor: colors.disabled,\n },\n \"&$containedSecondary\": {\n background: colors.background.paper,\n color: colors.disabled,\n },\n },\n \"&$focusVisible\": {\n ...containedPrimaryHover,\n boxShadow: undefined,\n },\n \"&:active\": {\n boxShadow: \"none\",\n },\n \"&:hover\": {\n \"@media(hover: none)\": {\n boxShadow: \"none\",\n },\n boxShadow: \"none\",\n },\n boxShadow: \"none\",\n },\n containedPrimary: {\n \"&&:hover\": containedPrimaryHover,\n \"&&:active\": {\n backgroundColor: colors.active[4],\n },\n },\n label: {\n fontWeight: 600,\n },\n root: {\n borderRadius: 4,\n fontSize: \"1.6rem\",\n letterSpacing: \"0.06rem\",\n lineHeight: 1.55,\n padding: \"12px 16px\",\n },\n text: {\n \"&&$disabled\": {\n color: colors.disabled,\n },\n },\n textPrimary: {\n \"&:hover, &$focusVisible\": {\n background: colors.active[5],\n },\n \"&:active\": {\n background: colors.active[4],\n },\n },\n textSizeSmall: {\n fontSize: \"1.3rem\",\n },\n outlined: {\n \"&$disabled\": {\n border: undefined,\n borderColor: colors.disabled,\n color: colors.disabled,\n },\n background: colors.background.paper,\n border: `2px solid ${colors.active[4]}`,\n // 2px smaller because of border\n padding: \"10px 12px\",\n },\n outlinedPrimary: {\n \"&:hover, &$focusVisible\": {\n borderColor: colors.active[1],\n backgroundColor: colors.active[5],\n },\n \"&:hover\": {\n // Unsets border as it will require us to override borderWidth and\n // borderStyle over and over\n border: undefined,\n },\n \"&:active\": {\n backgroundColor: colors.active[4],\n },\n border: undefined,\n },\n },\n MuiIconButton: {\n root: {\n \"&:hover, &.Mui-focusVisible\": {\n borderColor: colors.active[1],\n backgroundColor: colors.active[5],\n },\n \"&:hover\": {\n // Unsets border as it will require us to override borderWidth and\n // borderStyle over and over\n border: undefined,\n },\n \"&:active\": {\n backgroundColor: colors.active[4],\n },\n \"&$disabled\": {\n border: undefined,\n borderColor: \"transparent\",\n color: colors.disabled,\n },\n background: colors.background.paper,\n border: `2px solid ${colors.active[4]}`,\n borderRadius: 4,\n color: colors.active[1],\n padding: 10,\n transition: \"200ms\",\n },\n },\n MuiSwitch: {\n colorPrimary: {\n \"&$checked\": {\n color: colors.background.paper,\n },\n },\n root: {\n \"&$disabled\": {\n \"&$switchBase\": {\n \"& + $thumb\": {\n backgroundColor: colors.disabled,\n },\n },\n },\n height: 48,\n width: 72,\n },\n switchBase: {\n \"&$checked\": {\n transform: \"translateX(23px)\",\n },\n boxShadow: \"none\",\n left: 1,\n marginLeft: 4,\n top: 5,\n },\n thumb: {\n boxShadow: \"none\",\n },\n track: {\n \"$colorPrimary$checked + &\": {\n backgroundColor: colors.primary,\n },\n backgroundColor: colors.gray.default,\n borderRadius: 12,\n height: 24,\n opacity: [[\"1\"], \"!important\"] as any,\n width: 48,\n },\n },\n };\n};\n", "import { ThemeOptions } from \"@material-ui/core/styles\";\n\nfunction getInputBoxShadow(color: string) {\n return `0 0 0 3px ${color}`;\n}\n\nimport { SaleorThemeColors } from \"../types\";\n\nexport const inputOverrides = (\n colors: SaleorThemeColors\n): ThemeOptions[\"overrides\"] => ({\n MuiFormHelperText: {\n root: {\n \"&$error\": {\n color: colors.fail.dark,\n },\n },\n },\n MuiInput: {\n input: {\n \"&:-webkit-autofill\": {\n WebkitTextFillColor: colors.font.default,\n boxShadow: `inset 0 0 0px 9999px ${colors.active[5]}`,\n },\n \"&::placeholder\": {\n opacity: \"1 !important\" as any,\n },\n color: colors.font.default,\n },\n underline: {\n \"&:after\": {\n borderBottomColor: colors.primary,\n },\n },\n },\n MuiInputBase: {\n root: {\n borderRadius: \"4px\",\n },\n input: {\n \"&$disabled\": {\n color: colors.disabled,\n },\n \"&::placeholder\": {\n color: colors.font.gray,\n opacity: \"1 !important\" as any,\n },\n borderRadius: \"4px\",\n },\n },\n MuiInputLabel: {\n formControl: {\n transform: \"translate(0, 1.5px) scale(0.75)\",\n transformOrigin: \"top left\",\n width: \"100%\",\n },\n outlined: {\n \"&$shrink\": {\n transform: \"translate(12px, 9px) scale(0.75)\",\n },\n transform: \"translate(14px, 18px) scale(1)\",\n },\n root: {\n \"&&$disabled\": {\n color: colors.main[4],\n },\n \"&$error\": {\n \"&$focused\": {\n color: colors.fail.dark,\n },\n color: colors.fail.dark,\n },\n \"&&$focused\": {\n \"&:not($error)\": {\n color: colors.primary,\n },\n },\n \"&:not($error):hover label\": {\n color: colors.main[4],\n },\n color: colors.main[3],\n },\n shrink: {\n // Negates x0.75 scale\n width: \"133%\",\n },\n },\n MuiOutlinedInput: {\n input: {\n \"&:-webkit-autofill\": {\n borderRadius: 4,\n boxShadow: \"0 0 0px 1000px rgba(19, 190, 187, 0.1) inset\",\n },\n \"&&$disabled\": {\n backgroundColor: colors.background.default,\n },\n color: colors.main[1],\n padding: \"23px 12px 10px 12px\",\n },\n inputMultiline: {\n left: -2,\n padding: \"10px 0\",\n position: \"relative\",\n },\n root: {\n \"& fieldset\": {\n top: 0,\n },\n \"& legend\": {\n display: \"none\",\n },\n \"&$disabled\": {\n \"& fieldset\": {\n borderColor: `${colors.disabled} !important`,\n },\n \"& input\": {\n backgroundColor: colors.background.default,\n color: colors.main[3],\n },\n boxShadow: `0 0 0 0 transparent !important`,\n },\n \"&$error\": {\n \"&$focused\": {\n \"&:hover\": {\n boxShadow: getInputBoxShadow(colors.fail.mid),\n },\n \"& fieldset\": {\n borderColor: colors.fail.dark,\n },\n boxShadow: getInputBoxShadow(colors.fail.mid),\n },\n \"&:hover\": {\n \"&& fieldset\": {\n borderColor: colors.fail.dark,\n },\n boxShadow: getInputBoxShadow(colors.fail.light),\n },\n boxShadow: getInputBoxShadow(colors.fail.light),\n },\n \"&$focused\": {\n \"&, &:hover\": {\n boxShadow: getInputBoxShadow(colors.active[3]),\n },\n \"& input\": {\n \"& fieldset\": {\n borderColor: colors.primary,\n },\n \"&::placeholder\": {\n opacity: [[1], \"!important\"] as any,\n },\n color: colors.font.default,\n },\n },\n \"&:hover\": {\n boxShadow: getInputBoxShadow(colors.active[5]),\n \"& input\": {\n color: colors.font.default,\n },\n \"&&&\": {\n \"& fieldset\": {\n borderColor: colors.primary,\n },\n },\n },\n backgroundColor: colors.background.paper,\n transition: \"box-shadow 200ms\",\n top: 0,\n fontWeight: 500,\n },\n notchedOutline: {\n // It's so much easier to put it here with important tag rather than\n // override in multiple places using cascade composition\n borderWidth: \"1px !important\",\n },\n },\n});\n", "import { fade, ThemeOptions } from \"@material-ui/core/styles\";\n\nimport { SaleorThemeColors } from \"../types\";\n\nexport const tableOverrides = (\n colors: SaleorThemeColors,\n fontFamily: string\n): ThemeOptions[\"overrides\"] => ({\n MuiTable: {\n root: {\n fontFamily,\n fontFeatureSettings: '\"tnum\"',\n },\n },\n MuiTableCell: {\n body: {\n fontSize: \"1.6rem\",\n },\n head: {\n fontSize: \"1.4rem\",\n fontWeight: 400,\n color: colors.font.gray,\n },\n paddingCheckbox: {\n \"&:first-child\": {\n padding: \"0 12px\",\n width: 72,\n },\n \"&:not(first-child)\": {\n padding: 0,\n width: 52,\n },\n },\n root: {\n \"&:first-child\": {\n \"&:not($paddingCheckbox)\": {\n paddingLeft: 24 + \"px\",\n paddingRight: 24 + \"px\",\n textAlign: \"left\" as \"left\",\n },\n },\n borderBottomColor: colors.paperBorder,\n padding: \"16px 24px\",\n },\n },\n MuiTablePagination: {\n input: {\n color: colors.primary,\n fontSize: \"1.4rem\",\n },\n },\n MuiTableRow: {\n footer: {\n \"$root$hover&:hover\": {\n background: \"none\",\n },\n },\n head: {\n \"$root$hover&:hover\": {\n background: \"none\",\n },\n },\n hover: {\n \"$root&:hover\": {\n backgroundColor: fade(colors.primary, 0.3),\n },\n },\n root: {\n \"&$selected\": {\n backgroundColor: fade(colors.primary, 0.05),\n },\n },\n },\n});\n", "import type { ThemeOptions } from \"@material-ui/core/styles\";\n\nimport { SaleorThemeColors } from \"../types\";\nimport { buttonOverrides } from \"./buttons\";\nimport { inputOverrides } from \"./inputs\";\nimport { tableOverrides } from \"./tables\";\n\nexport const overrides = (\n colors: SaleorThemeColors,\n fontFamily: string\n): ThemeOptions[\"overrides\"] => ({\n ...inputOverrides(colors),\n ...tableOverrides(colors, fontFamily),\n ...buttonOverrides(colors),\n});\n", "import { SaleorPaletteOptions, SaleorThemeColors } from \"./types\";\n\nexport const createPalette = (\n colors: SaleorThemeColors\n): SaleorPaletteOptions => ({\n action: {\n active: colors.checkbox.default,\n },\n alert: colors.alert,\n background: colors.background,\n divider: colors.divider,\n error: {\n main: colors.error,\n },\n primary: {\n contrastText: \"#ffffff\",\n dark: colors.font.textDisabled,\n main: colors.primary,\n },\n secondary: {\n contrastText: \"#ffffff\",\n main: colors.secondary,\n },\n success: {\n main: colors.success,\n },\n text: {\n disabled: colors.font.textDisabled,\n hint: colors.font.gray,\n primary: colors.font.default,\n secondary: colors.font.gray,\n },\n textHighlighted: {\n active: colors.primary,\n inactive: colors.highlightInactive.default,\n },\n type: colors.theme,\n saleor: colors,\n});\n", "import type { ThemeOptions } from \"@material-ui/core/styles\";\n\nconst createShadow = (pv: number, pb: number, ps: number) =>\n `0 ${pv}px ${pb}px ${ps}px rgba(0, 0, 0, 0.15)`;\n\nexport const shadows: ThemeOptions[\"shadows\"] = [\n \"none\",\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n createShadow(24, 20, -20),\n];\n", "import { fade } from \"@material-ui/core/styles/colorManipulator\";\n\nimport { SaleorThemeColors } from \"./createSaleorTheme\";\n\nexport const dark: SaleorThemeColors = {\n alert: {\n paper: {\n error: \"#E0444E\",\n info: \"#2E2F31\",\n success: \"#5DC292\",\n warning: \"#E29A2E\",\n },\n icon: {\n error: \"#FE6E76\",\n info: \"#FAFAFA\",\n success: \"#5DC292\",\n warning: \"#FFB84E\",\n },\n },\n highlightInactive: {\n default: \"#78797A\",\n },\n autofill: \"#5D5881\",\n background: {\n default: \"#1D1E1F\",\n paper: \"#2E2F31\",\n },\n checkbox: {\n default: \"#FFFFFF\",\n },\n divider: \"#252728\",\n error: \"#C22D74\",\n font: {\n button: \"#202124\",\n default: \"#FCFCFC\",\n gray: \"#9E9D9D\",\n textButton: \"#FFFFFF\",\n textDisabled: \"#FCFCFC\",\n },\n gray: {\n default: \"#202124\",\n disabled: \"rgba(32, 33, 36, 0.6)\",\n },\n\n active: {\n 1: \"#056DFF\",\n 2: \"#378AFF\",\n 3: \"#68A7FF\",\n 4: \"#C1DBFF\",\n 5: \"#E6F0FF\",\n },\n main: {\n 1: \"#FCFCFC\",\n 2: \"rgba(252, 252, 252, 0.8)\",\n 3: \"rgba(252, 252, 252, 0.6)\",\n 4: \"rgba(252, 252, 252, 0.4)\",\n },\n fail: {\n dark: \"#B65757\",\n mid: \"#FEADAD\",\n light: \"#FEDEDE\",\n },\n errorAction: {\n 1: \"#B63755\",\n 2: \"#D36474\",\n 3: \"#E9878B\",\n 4: \"#F7B6B2\",\n 5: \"#FBDDD8\",\n },\n\n disabled: \"#CCDDDD\",\n paperBorder: \"#252728\",\n primary: \"#13BEBB\",\n secondary: \"#21125E\",\n success: \"#5DC292\",\n theme: \"dark\",\n};\nexport const light: SaleorThemeColors = {\n alert: {\n paper: {\n error: \"#FFD6D9\",\n info: \"#FFFFFF\",\n success: \"#DFF3E9\",\n warning: \"#FFF4E4\",\n },\n icon: {\n error: \"#FE6E76\",\n info: \"#28234A\",\n success: \"#5DC292\",\n warning: \"#FFB84E\",\n },\n },\n highlightInactive: {\n default: \"#C8C8C8\",\n },\n autofill: \"#f4f6c5\",\n background: {\n default: \"#EFF5F8\",\n paper: \"#FFFFFF\",\n },\n checkbox: {\n default: \"#616161\",\n },\n divider: \"#EAEAEA\",\n error: \"#FE6D76\",\n font: {\n button: \"#FFFFFF\",\n default: \"#28234A\",\n gray: fade(\"#28234A\", 0.6),\n textButton: \"#06847B\",\n textDisabled: fade(\"#28234A\", 0.4),\n },\n gray: {\n default: \"#C8C8C8\",\n disabled: \"#C0CFE2\",\n },\n\n active: {\n 1: \"#056DFF\",\n 2: \"#378AFF\",\n 3: \"#68A7FF\",\n 4: \"#C1DBFF\",\n 5: \"#E6F0FF\",\n },\n main: {\n 1: \"#28234A\",\n 2: \"rgba(40, 35, 74, 0.8)\",\n 3: \"rgba(40, 35, 74, 0.6)\",\n 4: \"rgba(40, 35, 74, 0.4)\",\n },\n fail: {\n dark: \"#B65757\",\n mid: \"#FEADAD\",\n light: \"#FEDEDE\",\n },\n errorAction: {\n 1: \"#B63755\",\n 2: \"#D36474\",\n 3: \"#E9878B\",\n 4: \"#F7B6B2\",\n 5: \"#FBDDD8\",\n },\n\n disabled: \"#CCDDDD\",\n paperBorder: \"#EAEAEA\",\n primary: \"#056DFF\",\n secondary: \"#FFFFFF\",\n success: \"#5DC292\",\n theme: \"light\",\n};\n", "export function changeColorMeta(color: string) {\n const themeColorTag = document.createElement(\"meta\");\n themeColorTag.setAttribute(\"content\", color);\n themeColorTag.setAttribute(\"name\", \"theme-color\");\n\n const existingColorTag = document.head.querySelector(\n `meta[name=\"theme-color\"]`\n );\n if (existingColorTag) {\n existingColorTag.remove();\n }\n document.head.appendChild(themeColorTag);\n}\n", "import React from \"react\";\n\nexport const CompleteIcon: React.FC<React.SVGProps<SVGSVGElement>> = (\n props\n) => (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <circle cx=\"20\" cy=\"20\" r=\"20\" fill=\"white\" />\n <circle cx=\"20\" cy=\"20\" r=\"14\" stroke=\"#5DC292\" strokeWidth=\"4\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M28.7678 13.7678C29.3536 14.3536 29.3536 15.3033 28.7678 15.8891L17.4142 27.2426L12.0607 21.8891C11.4749 21.3033 11.4749 20.3536 12.0607 19.7678L12.7678 19.0607C13.3536 18.4749 14.3033 18.4749 14.8891 19.0607L17.4142 21.5858L25.9393 13.0607C26.5251 12.4749 27.4749 12.4749 28.0607 13.0607L28.7678 13.7678Z\"\n fill=\"#5DC292\"\n />\n </svg>\n);\n\nCompleteIcon.displayName = \"CompleteIcon\";\n", "import React from \"react\";\n\nexport const InfoIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <circle cx=\"20\" cy=\"20\" r=\"20\" fill=\"white\" />\n <circle cx=\"20\" cy=\"20\" r=\"14\" stroke=\"#28234A\" strokeWidth=\"4\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M19.5 11C18.6716 11 18 11.6716 18 12.5V20.5C18 21.3284 18.6716 22 19.5 22H20.5C21.3284 22 22 21.3284 22 20.5V12.5C22 11.6716 21.3284 11 20.5 11H19.5ZM19.5 25C18.6716 25 18 25.6716 18 26.5V27.5C18 28.3284 18.6716 29 19.5 29H20.5C21.3284 29 22 28.3284 22 27.5V26.5C22 25.6716 21.3284 25 20.5 25H19.5Z\"\n fill=\"#28234A\"\n />\n </svg>\n);\n\nInfoIcon.displayName = \"InfoIcon\";\n", "import React from \"react\";\n\nexport const NotAllowedIcon: React.FC<React.SVGProps<SVGSVGElement>> = (\n props\n) => (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <circle cx=\"20\" cy=\"20\" r=\"16\" fill=\"#F5FAFB\" />\n <circle cx=\"20\" cy=\"20\" r=\"20\" fill=\"white\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M26.9531 29.7815C24.9914 31.1784 22.5917 32 20 32C13.3726 32 8 26.6274 8 20C8 17.4083 8.82158 15.0086 10.2185 13.0469L26.9531 29.7815ZM29.7815 26.9531L13.0469 10.2185C15.0086 8.82158 17.4083 8 20 8C26.6274 8 32 13.3726 32 20C32 22.5917 31.1784 24.9914 29.7815 26.9531ZM36 20C36 28.8366 28.8366 36 20 36C11.1634 36 4 28.8366 4 20C4 11.1634 11.1634 4 20 4C28.8366 4 36 11.1634 36 20Z\"\n fill=\"#FE6E76\"\n />\n </svg>\n);\n\nNotAllowedIcon.displayName = \"NotAllowedIcon\";\n", "import React from \"react\";\n\nexport const NotAllowedInvertedIcon: React.FC<React.SVGProps<SVGSVGElement>> = (\n props\n) => (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <circle cx=\"20\" cy=\"20\" r=\"16\" fill=\"#F5FAFB\" />\n <circle cx=\"20\" cy=\"20\" r=\"20\" fill=\"#FE6E76\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M26.9531 29.7815C24.9914 31.1784 22.5917 32 20 32C13.3726 32 8 26.6274 8 20C8 17.4083 8.82158 15.0086 10.2185 13.0469L26.9531 29.7815ZM29.7815 26.9531L13.0469 10.2185C15.0086 8.82158 17.4083 8 20 8C26.6274 8 32 13.3726 32 20C32 22.5917 31.1784 24.9914 29.7815 26.9531ZM36 20C36 28.8366 28.8366 36 20 36C11.1634 36 4 28.8366 4 20C4 11.1634 11.1634 4 20 4C28.8366 4 36 11.1634 36 20Z\"\n fill=\"white\"\n />\n </svg>\n);\n\nNotAllowedInvertedIcon.displayName = \"NotAllowedInvertedIcon\";\n", "import React from \"react\";\n\nexport const WarningIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <circle cx=\"20\" cy=\"20\" r=\"20\" fill=\"white\" />\n <circle cx=\"20\" cy=\"20\" r=\"14\" stroke=\"#FFB84E\" strokeWidth=\"4\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M19.5 11C18.6716 11 18 11.6716 18 12.5V20.5C18 21.3284 18.6716 22 19.5 22H20.5C21.3284 22 22 21.3284 22 20.5V12.5C22 11.6716 21.3284 11 20.5 11H19.5ZM19.5 25C18.6716 25 18 25.6716 18 26.5V27.5C18 28.3284 18.6716 29 19.5 29H20.5C21.3284 29 22 28.3284 22 27.5V26.5C22 25.6716 21.3284 25 20.5 25H19.5Z\"\n fill=\"#FFB84E\"\n />\n </svg>\n);\n\nWarningIcon.displayName = \"WarningIcon\";\n", "import { createSvgIcon } from \"@material-ui/core/utils\";\nimport React from \"react\";\n\nexport const CheckboxIcon = createSvgIcon(\n <rect x=\"5\" y=\"5\" width=\"14\" height=\"14\" stroke=\"currentColor\" fill=\"none\" />,\n \"CheckboxIcon\"\n);\n", "import { createSvgIcon } from \"@material-ui/core/utils\";\nimport React from \"react\";\n\nexport const CheckboxCheckedIcon = createSvgIcon(\n <>\n <rect x=\"5\" y=\"5\" width=\"14\" height=\"14\" fill=\"currentColor\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M 16.7527 9.33783 L 10.86618 15.7595 L 8 12.32006 L 8.76822 11.67988 L 10.90204 14.24046 L 16.0155 8.66211 L 16.7527 9.33783 Z\"\n fill=\"white\"\n />\n </>,\n \"CheckboxCheckedIcon\"\n);\n", "import { createSvgIcon } from \"@material-ui/core/utils\";\nimport React from \"react\";\n\nexport const CheckboxIndeterminateIcon = createSvgIcon(\n <>\n <rect\n x=\"5\"\n y=\"5\"\n width=\"14\"\n height=\"14\"\n stroke=\"currentColor\"\n fill=\"none\"\n />\n <rect x=\"8\" y=\"11\" width=\"8\" height=\"2\" fill=\"currentColor\" />\n </>,\n \"CheckboxIndeterminateIcon\"\n);\n", "import { createSvgIcon } from \"@material-ui/core/utils\";\nimport React from \"react\";\n\nexport const SearchIcon = createSvgIcon(\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M17 10.5C17 14.0899 14.0899 17 10.5 17C6.91015 17 4 14.0899 4 10.5C4 6.91015 6.91015 4 10.5 4C14.0899 4 17 6.91015 17 10.5ZM15.7618 17.176C14.3145 18.3183 12.4869 19 10.5 19C5.80558 19 2 15.1944 2 10.5C2 5.80558 5.80558 2 10.5 2C15.1944 2 19 5.80558 19 10.5C19 12.4869 18.3183 14.3145 17.176 15.7618L21.7071 20.2929C22.0976 20.6834 22.0976 21.3166 21.7071 21.7071C21.3166 22.0976 20.6834 22.0976 20.2929 21.7071L15.7618 17.176Z\"\n fill=\"currentColor\"\n />,\n \"SearchIcon\"\n);\n", "import { createSvgIcon } from \"@material-ui/core/utils\";\nimport React from \"react\";\n\nexport const EditIcon = createSvgIcon(\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"m20.08125,2.98089c-1.2209,-1.21116 -3.1901,-1.21116 -4.4109,0l-0.9259,0.91856l-7.70221,7.641c-0.36706,0.36415 -0.58593,0.85157 -0.61423,1.36787l-0.1488,2.7151c-0.06931,1.2648 0.99458,2.2993 2.25694,2.1947l2.65699,-0.2202c0.48957,-0.0405 0.94911,-0.2524 1.29791,-0.5984l8.6196,-8.55117c1.2347,-1.22491 1.2347,-3.22129 0,-4.44619l-1.0294,-1.02127zm-11.56872,10.04163l6.96702,-6.91171l2.5116,2.4916l-6.97042,6.91501l-2.657,0.2202l0.1488,-2.7151zm8.44912,-8.38204l2.5116,2.4916l0.1671,-0.1658c0.4116,-0.4083 0.4116,-1.07376 0,-1.48206l-1.0294,-1.02126c-0.407,-0.40372 -1.0634,-0.40372 -1.4703,0l-0.179,0.17752zm-11.79343,-1.33339c-1.72946,0 -3.13147,1.40201 -3.13147,3.13147l0,12.52586c0,1.7295 1.40201,3.1315 3.13147,3.1315l12.52583,0c1.7295,0 3.1315,-1.402 3.1315,-3.1315l0,-4.5928c0,-0.5765 -0.4673,-1.0438 -1.0438,-1.0438c-0.5765,0 -1.0438,0.4673 -1.0438,1.0438l0,4.5928c0,0.5765 -0.4674,1.0438 -1.0439,1.0438l-12.52583,0c-0.57649,0 -1.04382,-0.4673 -1.04382,-1.0438l0,-12.52586c0,-0.57649 0.46733,-1.04382 1.04382,-1.04382l4.59282,0c0.57649,0 1.04382,-0.46734 1.04382,-1.04383c0,-0.57648 -0.46733,-1.04382 -1.04382,-1.04382l-4.59282,0z\"\n fill=\"currentColor\"\n />,\n \"EditIcon\"\n);\n", "import { createSvgIcon } from \"@material-ui/core/utils\";\nimport React from \"react\";\n\nexport const FilteringIcon = createSvgIcon(\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M2 4C2 2.89543 2.89543 2 4 2H20C21.1046 2 22 2.89543 22 4V6.67157C22 7.46722 21.6839 8.23029 21.1213 8.79289L15.7929 14.1213C15.6054 14.3089 15.5 14.5632 15.5 14.8284V19C15.5 19.4089 15.251 19.7766 14.8714 19.9285L9.87139 21.9285C9.5633 22.0517 9.21414 22.0141 8.93937 21.8281C8.6646 21.642 8.5 21.3318 8.5 21V14.8284C8.5 14.5632 8.39464 14.3089 8.20711 14.1213L2.87868 8.79289C2.31607 8.23028 2 7.46722 2 6.67157V4ZM20 4H4V6.67157C4 6.93679 4.10536 7.19114 4.29289 7.37868L9.62132 12.7071C10.1839 13.2697 10.5 14.0328 10.5 14.8284V19.523L13.5 18.323V14.8284C13.5 14.0328 13.8161 13.2697 14.3787 12.7071L19.7071 7.37868C19.8946 7.19114 20 6.93679 20 6.67157V4Z\"\n fill=\"currentColor\"\n />,\n \"FilteringIcon\"\n);\n", "import { createSvgIcon } from \"@material-ui/core/utils\";\nimport React from \"react\";\n\nexport const DeleteIcon = createSvgIcon(\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M10 1C8.89543 1 8 1.89543 8 3V4H4C3.44772 4 3 4.44772 3 5C3 5.55228 3.44772 6 4 6H20C20.5523 6 21 5.55228 21 5C21 4.44772 20.5523 4 20 4H16V3C16 1.89543 15.1046 1 14 1H10ZM14 4H10V3H14V4ZM7 9C7 8.44772 6.55228 8 6 8C5.44772 8 5 8.44772 5 9V20C5 21.6569 6.34315 23 8 23H16C17.6569 23 19 21.6569 19 20V9C19 8.44772 18.5523 8 18 8C17.4477 8 17 8.44772 17 9V20C17 20.5523 16.5523 21 16 21H8C7.44772 21 7 20.5523 7 20V9ZM10 11C10.5523 11 11 11.4477 11 12V17C11 17.5523 10.5523 18 10 18C9.44772 18 9 17.5523 9 17V12C9 11.4477 9.44772 11 10 11ZM15 12C15 11.4477 14.5523 11 14 11C13.4477 11 13 11.4477 13 12V17C13 17.5523 13.4477 18 14 18C14.5523 18 15 17.5523 15 17V12Z\"\n fill=\"currentColor\"\n />,\n \"DeleteIcon\"\n);\n", "import { createSvgIcon } from \"@material-ui/core/utils\";\nimport React from \"react\";\n\nexport const ImageIcon = createSvgIcon(\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M2 5C2 3.34315 3.34315 2 5 2H19C20.6569 2 22 3.34315 22 5V19C22 20.6569 20.6569 22 19 22H5C3.34315 22 2 20.6569 2 19V5ZM5 4C4.44772 4 4 4.44772 4 5V15.7962L11.0456 9.63136L12.5 11.0858L16 7.58579L20 11.5858V5C20 4.44772 19.5523 4 19 4H5ZM20 14.4142L16 10.4142L12.5 13.9142L10.9544 12.3686L4 18.4538V19C4 19.5523 4.44772 20 5 20H19C19.5523 20 20 19.5523 20 19V14.4142Z\"\n fill=\"currentColor\"\n />,\n \"ImageIcon\"\n);\n", "import { createSvgIcon } from \"@material-ui/core/utils\";\nimport React from \"react\";\n\nexport const CloseIcon = createSvgIcon(\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M18.7071 6.70711C19.0976 6.31658 19.0976 5.68342 18.7071 5.29289C18.3166 4.90237 17.6834 4.90237 17.2929 5.29289L12 10.5858L6.70711 5.29289C6.31658 4.90237 5.68342 4.90237 5.29289 5.29289C4.90237 5.68342 4.90237 6.31658 5.29289 6.7071L10.5858 12L5.29289 17.2929C4.90237 17.6834 4.90237 18.3166 5.29289 18.7071C5.68342 19.0976 6.31658 19.0976 6.70711 18.7071L12 13.4142L17.2929 18.7071C17.6834 19.0976 18.3166 19.0976 18.7071 18.7071C19.0976 18.3166 19.0976 17.6834 18.7071 17.2929L13.4142 12L18.7071 6.70711Z\"\n fill=\"currentColor\"\n />,\n \"CloseIcon\"\n);\n", "import { createSvgIcon } from \"@material-ui/core/utils\";\nimport React from \"react\";\n\nexport const PlusIcon = createSvgIcon(\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M13 4C13 3.5 12.5523 3 12 3C11.4477 3 11 3.5 11 4L11 11L4 11C3.5 11 3 11.4477 3 12C3 12.5523 3.5 13 4 13L11 13L11 20C11 20.5 11.4477 21 12 21C12.5523 21 13 20.5 13 20L13 13L20 13C20.5 13 21 12.5523 21 12C21 11.4477 20.5 11 20 11L13 11L13 4Z\"\n fill=\"currentColor\"\n />,\n \"PlusIcon\"\n);\n", "import { createSvgIcon } from \"@material-ui/core/utils\";\nimport React from \"react\";\n\nexport const ArrowRightIcon = createSvgIcon(\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M13.8446 6.2943C14.237 5.9019 14.8732 5.9019 15.2656 6.2943L20.6464 11.6752C20.8417 11.8704 20.8417 12.187 20.6464 12.3823L15.2656 17.7632C14.8732 18.1556 14.237 18.1556 13.8446 17.7632C13.4522 17.3708 13.4522 16.7346 13.8446 16.3422L17.1532 13.0335H4.00479C3.44986 13.0335 3 12.5837 3 12.0287C3 11.4738 3.44986 11.0239 4.00479 11.0239H17.1532L13.8446 7.71528C13.4522 7.32289 13.4522 6.68669 13.8446 6.2943Z\"\n fill=\"currentColor\"\n />,\n \"ArrowRightIcon\"\n);\n", "import { createSvgIcon } from \"@material-ui/core/utils\";\nimport React from \"react\";\n\nexport const MoreIcon = createSvgIcon(\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M10 18C10 16.8954 10.8954 16 12 16C13.1046 16 14 16.8954 14 18C14 19.1046 13.1046 20 12 20C10.8954 20 10 19.1046 10 18ZM10 12C10 10.8954 10.8954 10 12 10C13.1046 10 14 10.8954 14 12C14 13.1046 13.1046 14 12 14C10.8954 14 10 13.1046 10 12ZM12 4C10.8954 4 10 4.89543 10 6C10 7.10457 10.8954 8 12 8C13.1046 8 14 7.10457 14 6C14 4.89543 13.1046 4 12 4Z\"\n fill=\"currentColor\"\n />,\n \"MoreIcon\"\n);\n", "import Button from \"@material-ui/core/Button\";\nimport React from \"react\";\n\nimport { useActionBar } from \"../ActionBar\";\nimport { ActionBar } from \"../ActionBar/ActionBar\";\nimport {\n ConfirmButton,\n ConfirmButtonLabels,\n ConfirmButtonTransitionState,\n} from \"../ConfirmButton\";\nimport { ButtonTooltipDecorator } from \"./ButtonTooltipDecorator\";\nimport useStyles from \"./styles\";\n\nexport type SavebarLabels = ConfirmButtonLabels &\n Record<\"delete\" | \"cancel\", string>;\nexport type SavebarTooltips = Partial<\n Record<\"confirm\" | \"delete\" | \"cancel\", string>\n>;\nexport interface SavebarProps {\n disabled: boolean;\n state: ConfirmButtonTransitionState;\n labels: SavebarLabels;\n tooltips?: SavebarTooltips;\n onCancel: () => void;\n onDelete?: () => void;\n onSubmit: () => void;\n}\n\nexport const Savebar: React.FC<SavebarProps> = ({\n disabled,\n labels,\n tooltips,\n state,\n onCancel,\n onDelete,\n onSubmit,\n}) => {\n const classes = useStyles();\n const { setDocked } = useActionBar();\n\n return (\n <ActionBar state={state} disabled={disabled}>\n {!!onDelete && (\n <ButtonTooltipDecorator tooltip={tooltips?.delete}>\n <Button\n variant=\"contained\"\n onClick={onDelete}\n className={classes.deleteButton}\n data-test=\"button-bar-delete\"\n >\n {labels.delete}\n </Button>\n </ButtonTooltipDecorator>\n )}\n <div className={classes.spacer} />\n <ButtonTooltipDecorator tooltip={tooltips?.cancel}>\n <Button\n className={classes.cancelButton}\n variant=\"text\"\n onClick={onCancel}\n data-test=\"button-bar-cancel\"\n >\n {labels.cancel}\n </Button>\n </ButtonTooltipDecorator>\n <ButtonTooltipDecorator tooltip={tooltips?.confirm}>\n <ConfirmButton\n disabled={disabled}\n labels={labels}\n onClick={onSubmit}\n transitionState={state}\n data-test=\"button-bar-confirm\"\n onTransitionToDefault={() => setDocked(true)}\n />\n </ButtonTooltipDecorator>\n </ActionBar>\n );\n};\nSavebar.displayName = \"Savebar\";\n", "import Card from \"@material-ui/core/Card\";\nimport CardContent from \"@material-ui/core/CardContent\";\nimport Container from \"@material-ui/core/Container\";\nimport Portal from \"@material-ui/core/Portal\";\nimport React from \"react\";\n\nimport { ConfirmButtonTransitionState } from \"../ConfirmButton\";\nimport { useWindowScroll } from \"../tools\";\nimport { useActionBar } from \"./context\";\nimport useStyles from \"./styles\";\n\nexport interface ActionBarProps {\n disabled: boolean;\n state: ConfirmButtonTransitionState;\n children: React.ReactNode[] | React.ReactNode;\n}\n\nexport const ActionBar: React.FC<ActionBarProps> = ({\n disabled,\n children,\n state,\n ...rest\n}) => {\n const classes = useStyles();\n\n const { anchor, docked, setDocked } = useActionBar();\n const scrollPosition = useWindowScroll();\n\n React.useEffect(() => {\n if (!disabled && state !== \"loading\") {\n setDocked(false);\n }\n }, [disabled, state, setDocked]);\n React.useEffect(() => () => setDocked(true), [setDocked]);\n\n const scrolledToBottom =\n scrollPosition.y + window.innerHeight >= document.body.scrollHeight;\n\n if (!anchor.current) {\n return null;\n }\n\n return (\n <Portal container={anchor.current}>\n <div className={classes.root} {...rest}>\n <Container maxWidth=\"lg\">\n <Card\n className={classes.paper}\n elevation={!(docked || scrolledToBottom) ? 16 : 0}\n >\n <CardContent className={classes.content}>{children}</CardContent>\n </Card>\n </Container>\n </div>\n </Portal>\n );\n};\nActionBar.displayName = \"ActionBar\";\n", "import throttle from \"lodash/throttle\";\nimport { useCallback, useEffect, useState } from \"react\";\n\nexport type Position = Record<\"x\" | \"y\", number>;\n\nfunction getPosition<T extends HTMLElement>(\n anchor?: T | null\n): Position | undefined {\n if (anchor) {\n return {\n x: anchor.scrollLeft,\n y: anchor.scrollTop,\n };\n }\n return undefined;\n}\n\nexport function isScrolledToBottom(\n anchor: HTMLElement,\n position: Position,\n offset: number = 0\n) {\n return !!anchor && position\n ? position.y + anchor.clientHeight + offset >= anchor.scrollHeight\n : undefined;\n}\n\nexport function isScrolledToTop(\n anchor: HTMLElement,\n position: Position,\n offset: number = 0\n) {\n return !!anchor && position ? position.y <= offset : undefined;\n}\n\nexport interface UseElementScrollOpts<T extends HTMLElement> {\n anchor: T | null;\n position: Position | undefined;\n}\n\nexport interface UseElementScroll<T extends HTMLElement>\n extends UseElementScrollOpts<T> {\n setAnchor: React.Dispatch<T | null>;\n}\n\nexport function useElementScroll<T extends HTMLElement>(): UseElementScroll<T> {\n const [anchorEl, setAnchorEl] = useState<T | null>(null);\n const [scroll, setScroll] = useState(getPosition(anchorEl));\n\n useEffect(() => {\n if (!!anchorEl) {\n const recalcScrollPos = throttle(\n () => setScroll(getPosition(anchorEl)),\n 100\n );\n anchorEl.addEventListener(\"scroll\", recalcScrollPos);\n const resizeObserver = new ResizeObserver(recalcScrollPos);\n resizeObserver.observe(anchorEl);\n\n return () => {\n anchorEl.removeEventListener(\"scroll\", recalcScrollPos);\n resizeObserver.disconnect();\n };\n }\n\n // Silence eslint's complaining about not all code returning value\n return;\n }, [anchorEl]);\n\n useEffect(() => {\n setTimeout(() => setScroll(getPosition(anchorEl)), 100);\n }, [anchorEl]);\n\n const setAnchor = useCallback((el) => {\n setAnchorEl(el);\n }, []);\n\n return {\n setAnchor,\n anchor: anchorEl,\n position: scroll,\n };\n}\n", "// It's only optimized for esm, cjs will remain fat blob\n// Ref https://github.com/formium/tsdx/issues/763\nimport throttle from \"lodash/throttle\";\nimport { useEffect, useState } from \"react\";\n\nfunction getPosition() {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset,\n };\n}\n\nexport function useWindowScroll() {\n const [scroll, setScroll] = useState(getPosition);\n\n useEffect(() => {\n const handleScroll = throttle(() => setScroll(getPosition()), 100);\n\n window.addEventListener(\"scroll\", handleScroll);\n\n return () => window.removeEventListener(\"scroll\", handleScroll);\n }, []);\n\n return scroll;\n}\n", "import { makeStyles } from \"../theme\";\n\nconst useStyles = makeStyles(\n (theme) => ({\n content: {\n \"&:last-child\": {\n paddingBottom: theme.spacing(2),\n },\n display: \"flex\",\n paddingBottom: theme.spacing(2),\n paddingTop: theme.spacing(2),\n [theme.breakpoints.down(\"sm\")]: {\n marginTop: theme.spacing(1),\n },\n },\n paper: {\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0,\n },\n root: {\n height: 80,\n },\n }),\n { name: \"Savebar\" }\n);\n\nexport default useStyles;\n", "import MuiButton, {\n ButtonProps as MuiButtonProps,\n ButtonTypeMap as MuiButtonTypeMap,\n} from \"@material-ui/core/Button\";\nimport { OverridableComponent } from \"@material-ui/core/OverridableComponent\";\nimport clsx from \"clsx\";\nimport React from \"react\";\n\nimport useStyles from \"./styles\";\n\nexport type ButtonVariant = \"primary\" | \"secondary\" | \"tertiary\";\n\ninterface ButtonInnerProps {\n error?: boolean;\n variant?: ButtonVariant;\n}\n\nexport interface ButtonTypeMap<P = {}, D extends React.ElementType = \"button\"> {\n props: Omit<MuiButtonTypeMap<P, D>[\"props\"], \"variant\"> & ButtonInnerProps;\n defaultComponent: D;\n classKey: never;\n}\n\nexport type ButtonProps<T extends React.ElementType = \"button\"> = Omit<\n MuiButtonProps<T>,\n \"variant\"\n> &\n ButtonInnerProps;\n\nfunction getButtonProps(variant: ButtonVariant): Partial<MuiButtonProps> {\n switch (variant) {\n case \"primary\":\n return { variant: \"contained\", color: \"primary\" };\n case \"secondary\":\n return { variant: \"outlined\", color: \"primary\" };\n default:\n return { variant: \"text\", color: \"primary\" };\n }\n}\n\nconst _Button: React.FC<ButtonProps> = ({\n className,\n error,\n variant = \"tertiary\",\n ...props\n}) => {\n const classes = useStyles();\n\n return (\n <MuiButton\n className={clsx(className, {\n [classes.primary]: variant === \"primary\" && error,\n [classes.primaryDisabled]:\n variant === \"primary\" && error && props.disabled,\n\n [classes.secondary]: variant === \"secondary\" && error,\n [classes.secondaryDisabled]:\n variant === \"secondary\" && error && props.disabled,\n\n [classes.tertiary]: variant === \"tertiary\" && error,\n [classes.tertiaryDisabled]:\n variant === \"tertiary\" && error && props.disabled,\n })}\n {...getButtonProps(variant)}\n disableRipple\n {...props}\n />\n );\n};\n_Button.displayName = \"Button\";\nexport const Button = _Button as OverridableComponent<ButtonTypeMap>;\n", "import { makeStyles } from \"../theme\";\n\nconst useStyles = makeStyles(\n (theme) => ({\n primary: {\n \"&&\": {\n \"&:hover, &.Mui-focusVisible\": {\n background: theme.palette.saleor.errorAction[2],\n },\n \"&:active\": {\n background: theme.palette.saleor.errorAction[3],\n },\n },\n background: theme.palette.saleor.errorAction[1],\n },\n primaryDisabled: {\n \"&&&\": {\n background: theme.palette.saleor.errorAction[5],\n },\n },\n\n secondary: {\n \"&&\": {\n \"&:hover, &.Mui-focusVisible\": {\n background: theme.palette.saleor.errorAction[5],\n borderColor: theme.palette.saleor.errorAction[1],\n },\n \"&:active\": {\n background: theme.palette.saleor.errorAction[4],\n borderColor: theme.palette.saleor.errorAction[1],\n },\n },\n borderColor: theme.palette.saleor.errorAction[4],\n color: theme.palette.saleor.errorAction[1],\n },\n secondaryDisabled: {\n \"&&&\": {\n borderColor: theme.palette.saleor.errorAction[5],\n color: theme.palette.saleor.errorAction[5],\n },\n },\n\n tertiary: {\n \"&&\": {\n \"&:hover, &.Mui-focusVisible\": {\n background: theme.palette.saleor.errorAction[5],\n },\n \"&:active\": {\n background: theme.palette.saleor.errorAction[4],\n },\n },\n color: theme.palette.saleor.errorAction[1],\n },\n tertiaryDisabled: {\n \"&&&\": {\n color: theme.palette.saleor.errorAction[5],\n },\n },\n }),\n {\n name: \"Button\",\n }\n);\n\nexport default useStyles;\n", "import { Button, ButtonProps } from \"../Button\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport CheckIcon from \"@material-ui/icons/Check\";\nimport clsx from \"clsx\";\nimport React from \"react\";\n\nimport useStyles from \"./styles\";\n\nconst DEFAULT_NOTIFICATION_SHOW_TIME = 3000;\nexport type ConfirmButtonTransitionState =\n | \"loading\"\n | \"success\"\n | \"error\"\n | \"default\";\n\nexport type ConfirmButtonLabels = Record<\"confirm\" | \"error\", string>;\nexport interface ConfirmButtonProps extends Omit<ButtonProps, \"classes\"> {\n labels: ConfirmButtonLabels;\n noTransition?: boolean;\n transitionState: ConfirmButtonTransitionState;\n onTransitionToDefault?: () => void;\n}\n\nexport const ConfirmButton: React.FC<ConfirmButtonProps> = ({\n children,\n disabled,\n labels,\n noTransition,\n transitionState,\n variant = \"primary\",\n onClick,\n onTransitionToDefault,\n ...props\n}) => {\n const classes = useStyles();\n const [displayCompletedActionState, setDisplayCompletedActionState] =\n React.useState(false);\n const timeout = React.useRef<number>();\n\n React.useEffect(() => {\n if (!noTransition && transitionState === \"loading\") {\n setDisplayCompletedActionState(true);\n }\n }, [transitionState, noTransition]);\n\n React.useEffect(() => {\n if (\n !noTransition &&\n ([\"error\", \"success\"] as ConfirmButtonTransitionState[]).includes(\n transitionState\n )\n ) {\n timeout.current = setTimeout(() => {\n setDisplayCompletedActionState(false);\n if (onTransitionToDefault) {\n onTransitionToDefault();\n }\n }, DEFAULT_NOTIFICATION_SHOW_TIME) as unknown as number;\n } else if (transitionState === \"loading\") {\n clearTimeout(timeout.current);\n }\n\n return () => {\n if (timeout.current) {\n clearTimeout(timeout.current);\n }\n };\n }, [noTransition, transitionState, onTransitionToDefault]);\n\n const isCompleted = noTransition\n ? transitionState !== \"default\"\n : displayCompletedActionState;\n\n return (\n <Button\n variant={variant}\n error={transitionState === \"error\" && isCompleted}\n onClick={transitionState === \"loading\" ? undefined : onClick}\n disabled={!isCompleted && disabled}\n data-test-state={isCompleted ? transitionState : \"default\"}\n {...props}\n >\n <CircularProgress\n size={24}\n color=\"inherit\"\n className={clsx({\n [classes.progress]: true,\n [classes.invisible]: transitionState !== \"loading\",\n })}\n />\n <CheckIcon\n className={clsx({\n [classes.icon]: true,\n [classes.invisible]: !(transitionState === \"success\" && isCompleted),\n })}\n />\n <span\n className={clsx({\n [classes.label]: true,\n [classes.invisible]:\n (transitionState === \"loading\" || transitionState === \"success\") &&\n isCompleted,\n })}\n >\n {transitionState === \"error\" && isCompleted\n ? labels.error\n : children || labels.confirm}\n </span>\n </Button>\n );\n};\n\nConfirmButton.displayName = \"ConfirmButton\";\n", "import { makeStyles } from \"../theme\";\n\nconst useStyles = makeStyles(\n (theme) => ({\n error: {\n \"&:hover\": {\n backgroundColor: theme.palette.error.main,\n },\n backgroundColor: theme.palette.error.main,\n color: theme.palette.error.contrastText,\n },\n icon: {\n marginLeft: \"0 !important\",\n position: \"absolute\",\n transitionDuration: theme.transitions.duration.standard + \"ms\",\n },\n invisible: {\n opacity: 0,\n },\n label: {\n alignItems: \"center\",\n display: \"flex\",\n transitionDuration: theme.transitions.duration.standard + \"ms\",\n },\n progress: {\n \"& svg\": {\n margin: 0,\n },\n position: \"absolute\",\n transitionDuration: theme.transitions.duration.standard + \"ms\",\n },\n success: {\n \"&:hover\": {\n backgroundColor: theme.palette.primary.main,\n },\n backgroundColor: theme.palette.primary.main,\n color: theme.palette.primary.contrastText,\n },\n }),\n { name: \"ConfirmButton\" }\n);\n\nexport default useStyles;\n", "import Tooltip from \"@material-ui/core/Tooltip\";\nimport React from \"react\";\n\ninterface ButtonTooltipDecoratorProps {\n tooltip?: string;\n}\n\nexport const ButtonTooltipDecorator: React.FC<ButtonTooltipDecoratorProps> = ({\n tooltip,\n children,\n}) => {\n if (tooltip) {\n return (\n <Tooltip title={tooltip} placement=\"top\">\n <span>{children}</span>\n </Tooltip>\n );\n }\n\n return <>{children}</>;\n};\nButtonTooltipDecorator.displayName = \"ButtonTooltipDecorator\";\n", "import { makeStyles } from \"../theme\";\n\nconst useStyles = makeStyles(\n (theme) => ({\n button: {\n marginRight: theme.spacing(1),\n },\n cancelButton: {\n marginRight: theme.spacing(2),\n },\n deleteButton: {\n \"&:hover\": {\n backgroundColor: theme.palette.error.dark,\n },\n backgroundColor: theme.palette.error.main,\n color: theme.palette.error.contrastText,\n },\n spacer: {\n flex: \"1\",\n },\n }),\n { name: \"Savebar\" }\n);\n\nexport default useStyles;\n", "import Portal from \"@material-ui/core/Portal\";\nimport Skeleton from \"@material-ui/lab/Skeleton\";\nimport React from \"react\";\n\nimport { LayoutButton, LayoutButtonProps } from \"../LayoutButton\";\nimport { useBacklink } from \"./context\";\nimport useStyles from \"./styles\";\nimport { ArrowRightIcon } from \"../icons\";\n\nexport interface AppHeaderProps extends LayoutButtonProps {\n children: React.ReactNode;\n disabled?: boolean;\n onClick: () => void;\n}\n\nexport const Backlink: React.FC<AppHeaderProps> = ({\n children,\n disabled,\n onClick,\n ...props\n}) => {\n const classes = useStyles();\n const anchor = useBacklink();\n\n if (!anchor.current) {\n return null;\n }\n\n return (\n <Portal container={anchor.current}>\n <LayoutButton\n className={classes.root}\n disabled={disabled}\n onClick={onClick}\n data-test-id=\"app-header-back-button\"\n {...props}\n >\n <ArrowRightIcon className={classes.backArrow} />\n {children ? (\n <div className={classes.title}>{children}</div>\n ) : (\n <Skeleton className={classes.skeleton} />\n )}\n </LayoutButton>\n </Portal>\n );\n};\nBacklink.displayName = \"Backlink\";\n", "import type { ButtonBaseProps } from \"@material-ui/core/ButtonBase\";\n\nimport ButtonBase from \"@material-ui/core/ButtonBase\";\nimport clsx from \"clsx\";\nimport React from \"react\";\nimport { UserInteraction } from \"../../types/utils\";\n\nimport useStyles from \"./styles\";\n\nexport type LayoutButtonProps<T extends React.ElementType = \"button\"> =\n ButtonBaseProps<T> & {\n state?: UserInteraction;\n };\n\nexport const LayoutButton: React.FC<LayoutButtonProps> = React.forwardRef(\n ({ className, children, state = \"default\", ...rest }, ref) => {\n const classes = useStyles();\n\n return (\n <ButtonBase\n className={clsx(classes.root, className, {\n [classes.hover]: state === \"hover\",\n [classes.active]: state === \"active\",\n })}\n disableRipple\n ref={ref}\n {...rest}\n >\n {children}\n </ButtonBase>\n );\n }\n);\nLayoutButton.displayName = \"LayoutButton\";\n", "import { fade } from \"@material-ui/core/styles\";\n\nimport { makeStyles } from \"../theme\";\n\nconst useStyles = makeStyles(\n (theme) => ({\n root: {\n \"&:hover, &:focus-visible, &$hover\": {\n background: theme.palette.background.paper,\n color: theme.palette.primary.main,\n },\n \"&:active, &$active\": {\n background: theme.palette.saleor.active[4],\n color: theme.palette.primary.main,\n },\n background: fade(theme.palette.background.paper, 0.4),\n borderRadius: 4,\n color: theme.palette.text.secondary,\n fontSize: theme.typography.body1.fontSize,\n fontWeight: 600,\n height: 48,\n padding: theme.spacing(0.5, 2),\n textAlign: \"center\",\n textTransform: \"uppercase\",\n transition: theme.transitions.duration.shorter + \"ms\",\n },\n hover: {},\n active: {},\n }),\n { name: \"LayoutButton\" }\n);\n\nexport default useStyles;\n", "import { makeStyles } from \"../theme\";\n\nconst useStyles = makeStyles(\n (theme) => ({\n backArrow: {\n fontSize: 30,\n transform: \"rotate(180deg)\",\n },\n menuButton: {\n flex: \"0 0 auto\",\n marginLeft: theme.spacing(-2),\n marginRight: theme.spacing(),\n marginTop: theme.spacing(-2),\n },\n root: {\n alignItems: \"center\",\n cursor: \"pointer\",\n display: \"flex\",\n marginTop: theme.spacing(0.5),\n [theme.breakpoints.down(\"sm\")]: {\n margin: theme.spacing(4, 0, 0, 0),\n },\n },\n skeleton: {\n width: \"10rem\",\n },\n title: {\n lineHeight: 1.1,\n flex: 1,\n marginLeft: theme.spacing(),\n },\n }),\n { name: \"AppHeader\" }\n);\n\nexport default useStyles;\n", "import clsx from \"clsx\";\nimport React from \"react\";\n\nimport { Logo } from \"../icons/Logo\";\nimport { LogoLight } from \"../icons/LogoLight\";\nimport { localStorageKeys } from \"../localStorageKeys\";\nimport { makeStyles, useTheme } from \"../theme\";\nimport useLocalStorage from \"../tools/useLocalStorage\";\nimport { ExpandButton } from \"./ExpandButton\";\nimport { MenuItem, menuWidth, shrunkMenuWidth } from \"./MenuItem\";\nimport { BaseSidebarProps } from \"./types\";\n\nconst useStyles = makeStyles(\n (theme) => ({\n expandButton: {\n marginLeft: theme.spacing(1.5),\n },\n float: {\n height: \"100vh\",\n position: \"fixed\",\n overflowY: \"auto\",\n overflowX: \"hidden\",\n paddingBottom: theme.spacing(3),\n },\n logo: {\n margin: `36px 0 ${theme.spacing(3)} ${theme.spacing(2.5)}`,\n },\n root: {\n transition: \"width 0.5s ease\",\n minWidth: menuWidth,\n width: menuWidth,\n zIndex: 100,\n },\n rootShrink: {\n minWidth: shrunkMenuWidth,\n width: shrunkMenuWidth,\n },\n toolbarContainer: {\n margin: theme.spacing(1, 0, 1, 1.5),\n },\n }),\n {\n name: \"SideBar\",\n }\n);\n\nexport interface SidebarProps extends BaseSidebarProps {\n activeId: string;\n}\n\nexport const Sidebar: React.FC<SidebarProps> = ({\n activeId,\n menuItems,\n toolbar,\n onMenuItemClick,\n}) => {\n const theme = useTheme();\n const classes = useStyles({});\n const { value: isShrunkStr, setValue: setShrink } = useLocalStorage(\n localStorageKeys.menuShrink,\n false.toString()\n );\n const isShrunk = isShrunkStr === \"true\";\n\n return (\n <div\n className={clsx(classes.root, {\n [classes.rootShrink]: isShrunk,\n })}\n >\n <div className={classes.float}>\n <div className={classes.logo}>\n {theme.themeType === \"light\" ? <Logo /> : <LogoLight />}\n </div>\n {menuItems.map((menuItem) => (\n <MenuItem\n activeId={activeId}\n isMenuShrunk={isShrunk}\n menuItem={menuItem}\n onClick={onMenuItemClick}\n key={menuItem.ariaLabel}\n />\n ))}\n {toolbar && <div className={classes.toolbarContainer}>{toolbar}</div>}\n <ExpandButton\n className={classes.expandButton}\n isShrunk={isShrunk}\n onClick={() => setShrink((!isShrunk).toString())}\n />\n </div>\n </div>\n );\n};\n\nSidebar.displayName = \"SideBar\";\n", "import React from \"react\";\n\nexport const Logo: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"36\"\n height=\"33\"\n viewBox=\"0 0 36 33\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M19.7838 0L13.4043 6.64709H29.1638L35.5433 0H19.7838Z\"\n fill=\"#8AC4EB\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.59759 2.13062C6.4332 2.13062 6.27552 2.1958 6.15911 2.31187L0.182532 8.27133C0.00456112 8.44879 -0.0488948 8.71603 0.0471181 8.94829C0.143131 9.18056 0.369679 9.33205 0.621008 9.33205H21.3482C21.5126 9.33205 21.6703 9.26687 21.7867 9.1508L27.7632 3.19134C27.9412 3.01388 27.9947 2.74664 27.8987 2.51437C27.8026 2.28211 27.5761 2.13062 27.3248 2.13062H6.59759ZM2.12325 8.09007L6.85429 3.37259H25.8225L21.0915 8.09007H2.12325ZM23.9789 27.3629C23.9789 30.6214 22.4977 33 16.6072 33C11.4908 33 9.43754 31.599 9 28.1124L13.6451 27.4281C13.9144 29.1551 14.5539 29.5135 16.6745 29.5135C18.5933 29.5135 19.2328 29.0573 19.2328 28.0146C19.2328 26.7437 18.492 26.418 16.5735 26.0594C16.4207 26.0337 16.2653 26.0082 16.1079 25.9823C13.0752 25.4835 9.30464 24.8634 9.33654 20.6504C9.33654 17.2293 11.2216 15.0787 16.5735 15.0787C21.4542 15.0787 23.3055 16.7404 23.7097 20.0314L18.9298 20.7482C18.7614 19.2168 18.2566 18.6954 16.4389 18.6954C14.9577 18.6954 14.0489 19.0867 14.0489 20.1292C14.0489 21.5304 15.0924 21.7258 17.3814 22.1167C20.3772 22.6056 23.9789 23.3549 23.9789 27.3629Z\"\n fill=\"#28234A\"\n />\n </svg>\n);\n\nLogo.displayName = \"Logo\";\n", "import React from \"react\";\n\nexport const LogoLight: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"36\"\n height=\"33\"\n viewBox=\"0 0 36 33\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M19.7838 0L13.4043 6.64709H29.1638L35.5433 0H19.7838Z\"\n fill=\"#8AC4EB\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.59759 2.13062C6.4332 2.13062 6.27552 2.1958 6.15911 2.31187L0.182532 8.27133C0.00456112 8.44879 -0.0488948 8.71603 0.0471181 8.94829C0.143131 9.18056 0.369679 9.33205 0.621008 9.33205H21.3482C21.5126 9.33205 21.6703 9.26687 21.7867 9.1508L27.7632 3.19134C27.9412 3.01388 27.9947 2.74664 27.8987 2.51437C27.8026 2.28211 27.5761 2.13062 27.3248 2.13062H6.59759ZM2.12325 8.09007L6.85429 3.37259H25.8225L21.0915 8.09007H2.12325ZM23.9789 27.3629C23.9789 30.6214 22.4977 33 16.6072 33C11.4908 33 9.43754 31.599 9 28.1124L13.6451 27.4281C13.9144 29.1551 14.5539 29.5135 16.6745 29.5135C18.5933 29.5135 19.2328 29.0573 19.2328 28.0146C19.2328 26.7437 18.492 26.418 16.5735 26.0594C16.4207 26.0337 16.2653 26.0082 16.1079 25.9823C13.0752 25.4835 9.30464 24.8634 9.33654 20.6504C9.33654 17.2293 11.2216 15.0787 16.5735 15.0787C21.4542 15.0787 23.3055 16.7404 23.7097 20.0314L18.9298 20.7482C18.7614 19.2168 18.2566 18.6954 16.4389 18.6954C14.9577 18.6954 14.0489 19.0867 14.0489 20.1292C14.0489 21.5304 15.0924 21.7258 17.3814 22.1167C20.3772 22.6056 23.9789 23.3549 23.9789 27.3629Z\"\n fill=\"#FAFAFA\"\n />\n </svg>\n);\n\nLogoLight.displayName = \"LogoLight\";\n", "import { ButtonProps } from \"@material-ui/core/Button\";\nimport clsx from \"clsx\";\nimport React from \"react\";\nimport { ArrowRightIcon } from \"../icons\";\n\nimport { SquareButton } from \"../SquareButton\";\nimport { makeStyles } from \"../theme\";\n\nconst useStyles = makeStyles(\n (theme) => ({\n arrow: {\n transition: theme.transitions.duration.shortest + \"ms\",\n },\n shrunk: {\n transform: \"scaleX(-1)\",\n },\n }),\n {\n name: \"ExpandButton\",\n }\n);\n\nexport interface ExpandButtonProps extends ButtonProps {\n isShrunk: boolean;\n}\n\nexport const ExpandButton: React.FC<ExpandButtonProps> = ({\n isShrunk,\n ...rest\n}) => {\n const classes = useStyles({});\n\n return (\n <SquareButton disableRipple {...rest}>\n <ArrowRightIcon\n className={clsx(classes.arrow, {\n [classes.shrunk]: !isShrunk,\n })}\n />\n </SquareButton>\n );\n};\n\nExpandButton.displayName = \"ExpandButton\";\n", "import ButtonBase, { ButtonBaseProps } from \"@material-ui/core/ButtonBase\";\nimport clsx from \"clsx\";\nimport React from \"react\";\n\nimport { makeStyles } from \"../theme\";\n\nconst useStyles = makeStyles(\n (theme) => ({\n disabled: {\n \"&$root\": {\n color: theme.palette.grey[500],\n },\n },\n root: {\n \"&:hover, &:focus-visible\": {\n background: theme.palette.saleor.active[5],\n },\n \"&:active\": {\n background: theme.palette.saleor.active[4],\n },\n background: theme.palette.background.paper,\n borderRadius: 4,\n color: theme.palette.primary.main,\n height: 48,\n transition: theme.transitions.duration.shortest + \"ms\",\n width: 48,\n },\n }),\n {\n name: \"ExpandButton\",\n }\n);\n\nexport const SquareButton: React.FC<ButtonBaseProps> = React.forwardRef(\n ({ className, ...rest }, ref) => {\n const classes = useStyles({});\n\n return (\n <ButtonBase\n className={clsx(classes.root, className, {\n [classes.disabled]: rest.disabled,\n })}\n disableRipple\n ref={ref}\n {...rest}\n />\n );\n }\n);\n\nSquareButton.displayName = \"SquareButton\";\n", "import ClickAwayListener from \"@material-ui/core/ClickAwayListener\";\nimport MuiMenuItem from \"@material-ui/core/MenuItem\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Popper from \"@material-ui/core/Popper\";\nimport { fade } from \"@material-ui/core/styles\";\nimport Typography from \"@material-ui/core/Typography\";\nimport clsx from \"clsx\";\nimport React from \"react\";\nimport SVG from \"react-inlinesvg\";\n\nimport { makeStyles } from \"../theme\";\nimport { SidebarMenuItem } from \"./types\";\n\nexport interface MenuItemProps {\n activeId: string;\n isMenuShrunk: boolean;\n menuItem: SidebarMenuItem;\n onClick: (url: string) => void;\n}\n\nexport const menuWidth = 210;\nexport const shrunkMenuWidth = 72;\n\nconst useStyles = makeStyles(\n (theme) => ({\n hideLabel: {\n \"&$label\": {\n opacity: 0,\n },\n },\n icon: {\n \"& svg\": {\n height: 24,\n width: 24,\n },\n marginRight: theme.spacing(1.5),\n transition: theme.transitions.duration.shortest + \"ms\",\n },\n label: {\n cursor: \"pointer\",\n display: \"block\",\n fontSize: 16,\n fontWeight: \"bold\",\n opacity: 1,\n transition: theme.transitions.duration.shortest + \"ms\",\n },\n labelRoot: {\n position: \"absolute\",\n left: 72,\n width: 200,\n textAlign: \"left\",\n pointerEvents: \"none\",\n },\n menuItemBtn: {\n \"&:focus\": {\n color: theme.palette.primary.main,\n outline: 0,\n },\n background: \"none\",\n border: \"none\",\n color: \"inherit\",\n cursor: \"pointer\",\n display: \"inline-flex\",\n margin: 0,\n padding: 0,\n },\n paper: {\n borderRadius: 4,\n boxShadow: \"0px 6px 30px rgba(0, 0, 0, 0.16)\",\n cursor: \"default\",\n textAlign: \"left\",\n },\n popper: {\n margin: theme.spacing(3.5, 0, 0, 0),\n marginLeft: -menuWidth / 2,\n zIndex: 2,\n },\n popperShrink: {\n marginLeft: -shrunkMenuWidth / 2,\n },\n root: {\n \"&:hover, &:focus-visible, &$rootOpen\": {\n color: theme.palette.primary.main,\n outline: 0,\n },\n borderBottomRightRadius: 4,\n borderTopRightRadius: 4,\n color: fade(theme.palette.text.primary, 0.6),\n cursor: \"pointer\",\n display: \"flex\",\n height: 56,\n marginBottom: theme.spacing(),\n overflow: \"hidden\",\n padding: theme.spacing(2, 3, 2, 3),\n transition: theme.transitions.duration.shortest + \"ms\",\n width: shrunkMenuWidth,\n },\n rootActive: {\n \"&$root\": {\n \"&:hover, &:focus-visible, &$rootOpen\": {\n color: theme.palette.primary.main,\n },\n background: theme.palette.background.paper,\n color: theme.palette.text.primary,\n },\n },\n rootExpanded: {\n width: menuWidth,\n },\n rootOpen: {},\n subMenuLabel: {\n \"&.Mui-selected\": {\n background: \"unset !important\",\n },\n background: \"none\",\n border: \"none\",\n color: theme.palette.text.primary,\n fontWeight: 500,\n height: 48,\n lineHeight: 36 + \"px\",\n textAlign: \"left\",\n textDecoration: \"none\",\n whiteSpace: \"nowrap\",\n width: \"100%\",\n },\n }),\n {\n name: \"MenuItem\",\n }\n);\n\nexport const MenuItem: React.FC<MenuItemProps> = ({\n activeId,\n menuItem,\n isMenuShrunk,\n onClick,\n}) => {\n const classes = useStyles({});\n const [open, setOpen] = React.useState(false);\n const anchor = React.useRef<HTMLDivElement>(null);\n\n const handleClick = (event: React.MouseEvent, menuItem: SidebarMenuItem) => {\n event.stopPropagation();\n if (menuItem.children) {\n setOpen(true);\n } else {\n onClick(menuItem.url!);\n setOpen(false);\n }\n };\n\n return (\n <div\n className={clsx(classes.root, {\n [classes.rootOpen]: open,\n [classes.rootActive]: [\n menuItem.id,\n ...(menuItem.children?.map((subMenu) => subMenu.id) || []),\n ].includes(activeId),\n [classes.rootExpanded]: !isMenuShrunk,\n })}\n ref={anchor}\n onClick={(event) => handleClick(event, menuItem)}\n >\n <button\n className={classes.menuItemBtn}\n data-test=\"menu-item-label\"\n data-test-id={menuItem.id}\n >\n {menuItem.iconSrc && (\n <SVG className={classes.icon} src={menuItem.iconSrc} />\n )}\n <Typography\n aria-label={menuItem.ariaLabel}\n className={clsx(classes.label, classes.labelRoot, {\n [classes.hideLabel]: isMenuShrunk,\n })}\n variant=\"body2\"\n >\n {menuItem.label}\n </Typography>\n </button>\n {menuItem.children && (\n <Popper\n className={clsx(classes.popper, {\n [classes.popperShrink]: isMenuShrunk,\n })}\n open={open}\n anchorEl={anchor.current}\n transition\n placement=\"right-start\"\n >\n <ClickAwayListener onClickAway={() => setOpen(false)}>\n <Paper className={classes.paper}>\n {menuItem.children.map((subMenuItem) => {\n const linkProps = subMenuItem.external\n ? { href: subMenuItem.url, target: \"_blank\" }\n : {};\n\n return (\n <MuiMenuItem\n aria-label={subMenuItem.ariaLabel}\n component={subMenuItem.external ? \"a\" : \"button\"}\n className={clsx(classes.label, classes.subMenuLabel)}\n key={subMenuItem.url}\n onClick={(event: React.MouseEvent) =>\n handleClick(event, subMenuItem)\n }\n data-test=\"submenu-item-label\"\n data-test-id={subMenuItem.id}\n selected={activeId === subMenuItem.id}\n {...linkProps}\n >\n {subMenuItem.label}\n </MuiMenuItem>\n );\n })}\n </Paper>\n </ClickAwayListener>\n </Popper>\n )}\n </div>\n );\n};\n\nMenuItem.displayName = \"MenuItem\";\n", "import Typography from \"@material-ui/core/Typography\";\nimport React from \"react\";\nimport SVG from \"react-inlinesvg\";\n\nimport { SidebarMenuItem } from \"../Sidebar/types\";\nimport useStyles from \"./styles\";\n\nexport interface MenuItemBtnProps {\n menuItem: SidebarMenuItem;\n onClick: (url: string) => void;\n}\nexport const MenuItemBtn: React.FC<MenuItemBtnProps> = ({\n menuItem,\n onClick,\n}) => {\n const classes = useStyles();\n const linkProps = menuItem.external\n ? { href: menuItem.url, target: \"_blank\" }\n : {};\n const Component = menuItem.external ? \"a\" : \"button\";\n\n return (\n <Component\n className={classes.menuItemBtn}\n data-test=\"menu-item-label\"\n data-test-id={menuItem.id}\n onClick={() => onClick(menuItem.url!)}\n {...linkProps}\n >\n {menuItem.iconSrc && (\n <SVG className={classes.icon} src={menuItem.iconSrc} />\n )}\n <Typography aria-label={menuItem.ariaLabel} className={classes.label}>\n {menuItem.label}\n </Typography>\n </Component>\n );\n};\n\nMenuItemBtn.displayName = \"MenuItemBtn\";\n", "import { makeStyles } from \"../theme\";\n\nconst useStyles = makeStyles(\n (theme) => ({\n activeMenuLabel: {\n display: \"flex\",\n },\n container: {\n overflowX: \"hidden\",\n width: \"100%\",\n },\n containerSubMenu: {\n \"&$container\": {\n overflow: \"hidden\",\n },\n },\n content: {\n width: \"50%\",\n },\n icon: {\n marginRight: theme.spacing(2),\n },\n innerContainer: {\n display: \"flex\",\n position: \"relative\",\n right: 0,\n transition: theme.transitions.duration.short + \"ms\",\n width: \"200%\",\n },\n label: {\n fontWeight: \"bold\",\n },\n logo: {\n display: \"block\",\n marginBottom: theme.spacing(4),\n },\n menuItemBtn: {\n alignItems: \"center\",\n background: \"none\",\n border: \"none\",\n color: theme.palette.text.secondary,\n display: \"flex\",\n marginBottom: theme.spacing(3),\n padding: 0,\n textDecoration: \"none\",\n },\n root: {\n background: theme.palette.background.default,\n borderBottomRightRadius: 32,\n borderTopRightRadius: 32,\n padding: theme.spacing(3),\n width: 260,\n },\n secondaryContentActive: {\n right: \"100%\",\n },\n subMenuTopBar: {\n alignItems: \"center\",\n display: \"flex\",\n justifyContent: \"space-between\",\n marginBottom: theme.spacing(3),\n },\n }),\n {\n name: \"SideBarDrawer\",\n }\n);\n\nexport default useStyles;\n", "import Drawer from \"@material-ui/core/Drawer\";\nimport Typography from \"@material-ui/core/Typography\";\nimport ArrowLeftIcon from \"@material-ui/icons/ArrowLeft\";\nimport MenuIcon from \"@material-ui/icons/Menu\";\nimport clsx from \"clsx\";\nimport React from \"react\";\nimport SVG from \"react-inlinesvg\";\n\nimport { Logo } from \"../icons/Logo\";\nimport { LogoLight } from \"../icons/LogoLight\";\nimport { BaseSidebarProps, SidebarMenuItem } from \"../Sidebar/types\";\nimport { SquareButton } from \"../SquareButton\";\nimport { useTheme } from \"../theme\";\nimport { MenuItemBtn } from \"./MenuItemBtn\";\nimport useStyles from \"./styles\";\n\nexport type SideBarDrawerProps = BaseSidebarProps;\n\nexport const SidebarDrawer: React.FC<SideBarDrawerProps> = ({\n menuItems,\n onMenuItemClick,\n}) => {\n const theme = useTheme();\n const [isOpened, setOpened] = React.useState(false);\n const classes = useStyles({});\n const [activeMenu, setActiveMenu] = React.useState<SidebarMenuItem | null>(\n null\n );\n const [showSubmenu, setShowSubmenu] = React.useState(false);\n const container = React.useRef<HTMLDivElement>(null);\n\n const handleMenuItemClick = (url: string) => {\n setOpened(false);\n setShowSubmenu(false);\n onMenuItemClick(url);\n };\n\n const handleMenuItemWithChildrenClick = (menuItem: SidebarMenuItem) => {\n setActiveMenu(menuItem);\n setShowSubmenu(true);\n container.current?.scrollTo({\n top: 0,\n });\n };\n\n return (\n <>\n <SquareButton onClick={() => setOpened(true)}>\n <MenuIcon />\n </SquareButton>\n <Drawer\n classes={{\n paper: classes.root,\n }}\n open={isOpened}\n onClose={() => setOpened(false)}\n >\n <div\n className={clsx(classes.container, {\n [classes.containerSubMenu]: showSubmenu,\n })}\n ref={container}\n >\n <div\n className={clsx(classes.innerContainer, {\n [classes.secondaryContentActive]: showSubmenu,\n })}\n >\n <div className={classes.content}>\n <div className={classes.logo}>\n {theme.themeType === \"light\" ? <Logo /> : <LogoLight />}\n </div>\n {menuItems.map((menuItem) => (\n <MenuItemBtn\n menuItem={menuItem}\n onClick={\n menuItem.children\n ? () => handleMenuItemWithChildrenClick(menuItem)\n : handleMenuItemClick\n }\n key={menuItem.ariaLabel}\n />\n ))}\n </div>\n {activeMenu && (\n <div className={classes.content}>\n <div className={classes.subMenuTopBar}>\n <div className={classes.activeMenuLabel}>\n {activeMenu.iconSrc && (\n <SVG className={classes.icon} src={activeMenu.iconSrc} />\n )}\n <Typography className={classes.label}>\n {activeMenu.label}\n </Typography>\n </div>\n <SquareButton onClick={() => setShowSubmenu(false)}>\n <ArrowLeftIcon />\n </SquareButton>\n </div>\n {activeMenu.children?.map((subMenuItem) => (\n <MenuItemBtn\n menuItem={subMenuItem}\n onClick={handleMenuItemClick}\n key={subMenuItem.ariaLabel}\n />\n ))}\n </div>\n )}\n </div>\n </div>\n </Drawer>\n </>\n );\n};\n\nSidebarDrawer.displayName = \"SideBarDrawer\";\n", "import Typography from \"@material-ui/core/Typography\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport clsx from \"clsx\";\nimport React from \"react\";\nimport { IconButton } from \"../IconButton\";\n\nimport { CompleteIcon, InfoIcon, NotAllowedIcon, WarningIcon } from \"../icons\";\nimport { AlertBase, AlertBaseProps, AlertVariant } from \"./AlertBase\";\nimport useStyles from \"./styles\";\n\nexport interface AlertProps extends AlertBaseProps {\n close?: boolean;\n variant: AlertVariant;\n title?: string;\n}\nconst Icon: React.FC<{ variant: AlertVariant }> = ({ variant }) => {\n switch (variant) {\n case \"error\":\n return <NotAllowedIcon />;\n case \"warning\":\n return <WarningIcon />;\n case \"success\":\n return <CompleteIcon />;\n default:\n return <InfoIcon />;\n }\n};\n\nexport const Alert: React.FC<AlertProps> = ({\n close = true,\n variant = \"info\",\n title,\n children,\n ...rest\n}) => {\n const classes = useStyles();\n const [visible, setVisible] = React.useState(true);\n\n if (!visible) {\n return null;\n }\n\n return (\n <AlertBase variant={variant} {...rest}>\n <div className={classes.container}>\n <div>\n <Icon variant={variant} />\n </div>\n <div className={classes.content}>\n <div className={classes.titleBar}>\n {title && <Typography variant=\"h5\">{title}</Typography>}\n {close && (\n <IconButton\n className={clsx(classes.close, {\n [classes.closeNoContent]: !children,\n })}\n variant=\"secondary\"\n onClick={() => setVisible(false)}\n data-test=\"close\"\n >\n <CloseIcon />\n </IconButton>\n )}\n </div>\n {typeof children === \"string\" ? (\n <Typography variant=\"body1\">{children}</Typography>\n ) : (\n children\n )}\n </div>\n </div>\n </AlertBase>\n );\n};\n\nAlert.displayName = \"Alert\";\n", "import ButtonBase from \"@material-ui/core/ButtonBase\";\nimport MuiIconButton, {\n IconButtonProps as MuiIconButtonProps,\n} from \"@material-ui/core/IconButton\";\nimport clsx from \"clsx\";\nimport React from \"react\";\n\nimport useStyles from \"./styles\";\n\nexport type IconButtonProps<T extends React.ElementType = \"button\"> = Omit<\n MuiIconButtonProps<T>,\n \"variant\"\n> & {\n error?: boolean;\n hoverOutline?: boolean;\n variant?: \"primary\" | \"secondary\";\n};\n\nexport const IconButton: React.FC<IconButtonProps> = React.forwardRef(\n ({ className, error, hoverOutline, variant = \"primary\", ...props }, ref) => {\n const classes = useStyles();\n\n if (variant === \"secondary\") {\n return (\n <ButtonBase\n ref={ref}\n className={clsx(classes.secondary, className, {\n [classes.hoverOutline]: hoverOutline,\n })}\n disableRipple\n {...props}\n />\n );\n }\n\n return (\n <MuiIconButton\n ref={ref}\n className={clsx(className, {\n [classes.error]: error,\n [classes.disabledError]: error && props.disabled,\n })}\n disableRipple\n {...props}\n />\n );\n }\n);\nIconButton.displayName = \"Button\";\n", "import { makeStyles } from \"../theme\";\n\nconst useStyles = makeStyles(\n (theme) => ({\n error: {\n \"&&\": {\n \"&:hover, &.Mui-focusVisible\": {\n background: theme.palette.saleor.errorAction[5],\n borderColor: theme.palette.saleor.errorAction[1],\n },\n \"&:active\": {\n background: theme.palette.saleor.errorAction[4],\n borderColor: theme.palette.saleor.errorAction[1],\n },\n },\n borderColor: theme.palette.saleor.errorAction[4],\n color: theme.palette.saleor.errorAction[1],\n },\n disabledError: {\n \"&&&\": {\n borderColor: \"transparent\",\n color: theme.palette.saleor.errorAction[5],\n },\n },\n secondary: {\n \"&:hover, &.Mui-focusVisible\": {\n color: theme.palette.primary.main,\n },\n \"&:disabled\": {\n color: theme.palette.saleor.disabled,\n },\n background: \"transparent\",\n borderRadius: 4,\n color: theme.palette.saleor.main[3],\n padding: theme.spacing(1),\n transition: theme.transitions.create([\"color\", \"background\"], {\n duration: theme.transitions.duration.shorter,\n }),\n },\n hoverOutline: {\n \"&$secondary\": {\n \"&:hover,&:focus-visible\": {\n background: theme.palette.saleor.active[5],\n },\n \"&:active\": {\n background: theme.palette.saleor.active[4],\n },\n },\n },\n }),\n {\n name: \"IconButton\",\n }\n);\n\nexport default useStyles;\n", "import Card, { CardProps } from \"@material-ui/core/Card\";\nimport CardContent from \"@material-ui/core/CardContent\";\nimport clsx from \"clsx\";\nimport React from \"react\";\n\nimport useStyles from \"./styles\";\n\nexport type AlertVariant = \"error\" | \"warning\" | \"success\" | \"info\";\nexport interface AlertBaseProps extends Omit<CardProps, \"variant\"> {\n className?: string;\n variant: AlertVariant;\n}\n\nexport const AlertBase: React.FC<AlertBaseProps> = ({\n className,\n variant = \"info\",\n children,\n ...rest\n}) => {\n const classes = useStyles();\n\n return (\n <Card\n elevation={0}\n className={clsx(className, classes.root, {\n [classes.error]: variant === \"error\",\n [classes.warning]: variant === \"warning\",\n [classes.success]: variant === \"success\",\n })}\n data-test=\"alert\"\n {...rest}\n >\n <CardContent>{children}</CardContent>\n </Card>\n );\n};\n\nAlertBase.displayName = \"AlertBase\";\n", "import { makeStyles } from \"../theme\";\n\nconst useStyles = makeStyles(\n (theme) => ({\n close: {\n color: theme.palette.common.black,\n position: \"absolute\",\n right: theme.spacing(-2),\n top: theme.spacing(-1),\n },\n closeNoContent: {\n \"&$close\": {\n top: 2,\n },\n },\n container: {\n columnGap: theme.spacing(2),\n display: \"grid\",\n gridTemplateColumns: \"40px 1fr\",\n },\n content: {\n padding: theme.spacing(0, 1),\n },\n root: {},\n titleBar: {\n marginTop: 6,\n marginBottom: theme.spacing(1),\n position: \"relative\",\n },\n error: {\n background: theme.palette.alert.paper.error,\n },\n warning: {\n background: theme.palette.alert.paper.warning,\n },\n success: {\n background: theme.palette.alert.paper.success,\n },\n }),\n {\n name: \"Alert\",\n }\n);\n\nexport default useStyles;\n", "import Button from \"@material-ui/core/Button\";\nimport SnackbarContent from \"@material-ui/core/SnackbarContent\";\nimport Typography from \"@material-ui/core/Typography\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport clsx from \"clsx\";\nimport React from \"react\";\n\nimport { CompleteIcon, InfoIcon, NotAllowedIcon, WarningIcon } from \"../icons\";\nimport useStyles from \"./styles\";\nimport type { NotificationProps, NotificationType } from \"./types\";\nimport { IconButton } from \"../IconButton\";\n\nconst Icon: React.FC<{ type: NotificationType }> = ({ type }) => {\n switch (type) {\n case \"error\":\n return <NotAllowedIcon />;\n case \"warning\":\n return <WarningIcon />;\n case \"success\":\n return <CompleteIcon />;\n default:\n return <InfoIcon />;\n }\n};\n\nexport const Notification: React.FC<NotificationProps> = ({\n onClose,\n title,\n type,\n action,\n content,\n className,\n ...rest\n}) => {\n const classes = useStyles();\n\n return (\n <div\n className={clsx(classes.snackbarContainer, className)}\n data-test=\"notification\"\n data-test-type={type}\n {...rest}\n >\n <SnackbarContent\n aria-describedby=\"client-snackbar\"\n classes={{\n action: classes.snackbarAction,\n message: classes.messageContainer,\n }}\n className={clsx(classes.snackbar, {\n [classes.info]: type === \"info\",\n [classes.error]: type === \"error\",\n [classes.success]: type === \"success\",\n [classes.warning]: type === \"warning\",\n })}\n message={\n <div className={classes.container}>\n <div>\n <Icon type={type} />\n </div>\n <div>\n <div className={classes.title}>\n <Typography variant=\"h5\">{title}</Typography>\n </div>\n <Typography variant=\"body1\">{content}</Typography>\n </div>\n </div>\n }\n action={[\n <div key=\"actions\">\n {!!action && (\n <Button\n className={classes.actionBtn}\n key=\"action\"\n color=\"default\"\n size=\"small\"\n onClick={action.onClick}\n data-test=\"button-action\"\n >\n {action.label}\n </Button>\n )}\n </div>,\n <IconButton\n key=\"close\"\n aria-label=\"Close\"\n color=\"inherit\"\n onClick={onClose}\n variant=\"secondary\"\n className={clsx(classes.closeBtn, {\n [classes.closeBtnInfo]: type === \"info\",\n })}\n data-test=\"close\"\n >\n <CloseIcon />\n </IconButton>,\n ]}\n />\n </div>\n );\n};\nNotification.displayName = \"Notification\";\n", "import { makeStyles } from \"../theme\";\n\nconst iconWidth = 40;\n\nconst useStyles = makeStyles(\n (theme) => ({\n actionBtn: {\n left: -4,\n position: \"relative\",\n minWidth: \"unset\",\n },\n closeBtn: {\n \"& svg\": {\n maxHeight: 20,\n maxWidth: 20,\n },\n padding: 10,\n position: \"absolute\",\n right: 5,\n top: 7,\n },\n closeBtnInfo: {\n color: theme.palette.text.primary,\n },\n error: {\n backgroundColor: theme.palette.alert.paper.error,\n },\n hiddenText: {\n maxHeight: 0,\n },\n info: {},\n snackbar: {\n borderRadius: 4,\n padding: theme.spacing(0, 6, 1, 2),\n position: \"relative\",\n },\n snackbarContainer: {\n marginBottom: theme.spacing(2),\n maxWidth: 450,\n position: \"relative\",\n },\n snackbarAction: {\n paddingLeft: `calc(${iconWidth}px + ${theme.spacing(2)})`,\n },\n success: {\n backgroundColor: theme.palette.alert.paper.success,\n },\n text: {\n fontWeight: 400,\n paddingTop: 5,\n },\n warning: {\n backgroundColor: theme.palette.alert.paper.warning,\n },\n\n messageContainer: {\n paddingTop: theme.spacing(2),\n position: \"relative\",\n },\n\n container: {\n columnGap: theme.spacing(2),\n display: \"grid\",\n gridTemplateColumns: `${iconWidth}px 1fr`,\n },\n title: {\n marginTop: 6,\n marginBottom: theme.spacing(0.5),\n },\n }),\n { name: \"Notification\" }\n);\n\nexport default useStyles;\n", "import Avatar from \"@material-ui/core/Avatar\";\nimport ClickAwayListener from \"@material-ui/core/ClickAwayListener\";\nimport Grow from \"@material-ui/core/Grow\";\nimport Hidden from \"@material-ui/core/Hidden\";\nimport Menu from \"@material-ui/core/MenuList\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Popper from \"@material-ui/core/Popper\";\nimport Typography from \"@material-ui/core/Typography\";\nimport React from \"react\";\nimport { LayoutButton } from \"..\";\n\nimport { UserChipMenuContext } from \"./context\";\nimport useStyles from \"./styles\";\n\nexport interface UserChipProps {\n avatar: string | null;\n initials: string;\n name: string;\n subtext?: string;\n open?: boolean;\n}\n\nexport const UserChipMenu: React.FC<UserChipProps> = ({\n avatar,\n initials,\n name,\n subtext,\n children,\n open = false,\n ...props\n}) => {\n const classes = useStyles({});\n const [isMenuOpened, setMenuState] = React.useState(open);\n const anchor = React.useRef<HTMLButtonElement>(null);\n\n const closeMenu = () => setMenuState(false);\n\n return (\n <>\n <LayoutButton\n className={classes.userChip}\n ref={anchor}\n onClick={() => setMenuState(!isMenuOpened)}\n data-test=\"userMenu\"\n state={isMenuOpened ? \"active\" : \"default\"}\n {...props}\n >\n {avatar ? (\n <Avatar className={classes.avatar} alt=\"user\" src={avatar} />\n ) : (\n <div className={classes.avatarPlaceholder}>\n <div className={classes.avatarInitials}>{initials}</div>\n </div>\n )}\n <div className={classes.labelContainer}>\n <Hidden smDown>\n <div>\n <Typography className={classes.label} variant=\"body2\">\n {name}\n </Typography>\n {subtext && (\n <Typography\n className={classes.label}\n variant=\"body2\"\n color=\"textSecondary\"\n >\n {subtext}\n </Typography>\n )}\n </div>\n </Hidden>\n </div>\n </LayoutButton>\n <Popper\n className={classes.popover}\n open={isMenuOpened}\n anchorEl={anchor.current}\n transition\n placement=\"bottom-end\"\n >\n {({ TransitionProps, placement }) => (\n <Grow\n {...TransitionProps}\n style={{\n transformOrigin:\n placement === \"bottom\" ? \"right top\" : \"right bottom\",\n }}\n >\n <Paper>\n <ClickAwayListener onClickAway={closeMenu} mouseEvent=\"onClick\">\n <Menu disablePadding>\n <UserChipMenuContext.Provider value={closeMenu}>\n {children}\n </UserChipMenuContext.Provider>\n </Menu>\n </ClickAwayListener>\n </Paper>\n </Grow>\n )}\n </Popper>\n </>\n );\n};\nUserChipMenu.displayName = \"UserChip\";\n", "import { createContext, useContext } from \"react\";\n\nexport type UserChipMenuContextType = () => void;\n\nexport const UserChipMenuContext = createContext<\n UserChipMenuContextType | undefined\n>(undefined);\nUserChipMenuContext.displayName = \"UserChipMenuContext\";\n\nexport const useUserChipMenu = () => {\n const ctx = useContext(UserChipMenuContext);\n if (ctx === undefined) {\n throw new Error(\n \"useUserChipMenu must be used within a UserChipMenuContext\"\n );\n }\n\n return ctx;\n};\n", "import { makeStyles } from \"../theme\";\n\nconst avatarSize = 32;\nconst mobileAvatarSize = 42;\n\nconst useStyles = makeStyles(\n (theme) => ({\n avatar: {\n \"&&\": {\n [theme.breakpoints.down(\"sm\")]: {\n height: mobileAvatarSize,\n width: mobileAvatarSize,\n },\n height: avatarSize,\n width: avatarSize,\n },\n backgroundColor: theme.palette.background.paper,\n },\n avatarInitials: {\n [theme.breakpoints.down(\"sm\")]: {\n height: mobileAvatarSize,\n width: mobileAvatarSize,\n lineHeight: mobileAvatarSize + \"px\",\n },\n height: avatarSize,\n lineHeight: avatarSize + \"px\",\n width: avatarSize,\n color: theme.palette.primary.contrastText,\n textAlign: \"center\",\n },\n avatarPlaceholder: {\n alignItems: \"center\",\n background: theme.palette.primary.main,\n borderRadius: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n },\n label: {\n letterSpacing: \"0.02em\",\n lineHeight: 1.2,\n textAlign: \"left\",\n },\n labelContainer: {\n display: \"inline-flex\",\n alignItems: \"center\",\n marginLeft: theme.spacing(1),\n },\n popover: {\n marginTop: theme.spacing(0.5),\n zIndex: 10,\n },\n userChip: {\n \"&&\": {\n padding: theme.spacing(0.5, 3, 0.5, 1),\n },\n ...theme.typography.body1,\n display: \"flex\",\n textTransform: \"unset\",\n },\n userMenuContainer: {\n cursor: \"pointer\",\n display: \"inline-block\",\n position: \"relative\",\n },\n }),\n {\n name: \"UserChipMenu\",\n }\n);\n\nexport default useStyles;\n", "import MenuItem, { MenuItemProps } from \"@material-ui/core/MenuItem\";\nimport React from \"react\";\n\nimport { useUserChipMenu } from \"./context\";\n\nexport interface UserChipMenuItemProps extends Omit<MenuItemProps, \"button\"> {\n leaveOpen?: boolean;\n}\n\nexport const UserChipMenuItem: React.FC<UserChipMenuItemProps> = ({\n leaveOpen,\n onClick,\n ...props\n}) => {\n const closeMenu = useUserChipMenu();\n\n // We're not really interested in event type here\n const handleClickWithClose = (event: unknown) => {\n closeMenu();\n if (onClick) {\n onClick(event as any);\n }\n };\n\n return (\n <MenuItem\n {...props}\n onClick={leaveOpen ? onClick : handleClickWithClose}\n button\n />\n );\n};\nUserChipMenuItem.displayName = \"UserChipMenuItem\";\n", "import Table from \"@material-ui/core/Table\";\nimport React from \"react\";\n\nimport useStyles from \"./styles\";\n\ninterface ResponsiveTableProps {\n children: React.ReactNode | React.ReactNodeArray;\n className?: string;\n key?: string;\n}\n\nexport const ResponsiveTable: React.FC<ResponsiveTableProps> = (props) => {\n const { children, className } = props;\n\n const classes = useStyles(props);\n\n return (\n <div className={classes.root}>\n <Table className={className}>{children}</Table>\n </div>\n );\n};\n\nResponsiveTable.displayName = \"ResponsiveTable\";\n", "import { makeStyles } from \"../theme\";\n\nconst useStyles = makeStyles(\n (theme) => ({\n root: {\n [theme.breakpoints.up(\"md\")]: {\n \"&& table\": {\n tableLayout: \"fixed\",\n },\n },\n \"& table\": {\n tableLayout: \"auto\",\n },\n overflowX: \"auto\",\n width: \"100%\",\n },\n }),\n {\n name: \"ResponsiveTable\",\n }\n);\n\nexport default useStyles;\n", "import MUITooltip from \"@material-ui/core/Tooltip\";\nimport { TooltipProps as MUITooltipProps } from \"@material-ui/core/Tooltip\";\nimport React from \"react\";\n\nimport useStyles from \"./styles\";\n\nexport interface TooltipProps extends MUITooltipProps {\n variant?: \"info\" | \"success\" | \"warning\" | \"error\";\n}\n\nexport const Tooltip: React.FC<TooltipProps> = ({\n children,\n variant = \"info\",\n ...rest\n}) => {\n const classes = useStyles({ variant, children, ...rest });\n\n return (\n <MUITooltip classes={classes} {...rest}>\n {children}\n </MUITooltip>\n );\n};\n\nTooltip.displayName = \"Tooltip\";\n", "import { makeStyles } from \"../theme\";\nimport { TooltipProps } from \"./Tooltip\";\n\nconst useStyles = makeStyles<TooltipProps, \"tooltip\">(\n (theme) => ({\n tooltip: {\n backgroundColor: (props) => {\n switch (props.variant) {\n case \"info\":\n return theme.palette.info.main;\n case \"success\":\n return theme.palette.success.main;\n case \"warning\":\n return theme.palette.warning.main;\n case \"error\":\n return theme.palette.error.main;\n default:\n return theme.palette.info.main;\n }\n },\n },\n }),\n {\n name: \"Tooltip\",\n }\n);\n\nexport default useStyles;\n", "import Toolbar from \"@material-ui/core/Toolbar\";\nimport React from \"react\";\n\nimport { PaginationActions, PaginationActionsProps } from \"./PaginationActions\";\nimport {\n PaginationRowNumberSelect,\n PaginationRowNumberSelectProps,\n} from \"./PaginationRowNumberSelect\";\nimport useStyles from \"./styles\";\n\nexport interface PaginationProps\n extends PaginationActionsProps,\n Omit<PaginationRowNumberSelectProps, \"className\" | \"choices\" | \"onChange\"> {\n choices?: number[];\n disabled?: boolean;\n rowNumber: number;\n onRowNumberUpdate?: (rowNumber: number) => void;\n}\n\nexport const Pagination: React.FC<PaginationProps> = ({\n choices = [10, 20, 30, 50, 100],\n disabled,\n hasNextPage,\n hasPreviousPage,\n nextIconButtonProps,\n labels,\n rowNumber,\n onNextPage,\n onPreviousPage,\n onRowNumberUpdate,\n ...other\n}) => {\n const classes = useStyles();\n\n return (\n <Toolbar className={classes.toolbar} disableGutters {...other}>\n <div className={classes.spacer}>\n <PaginationRowNumberSelect\n choices={choices}\n disabled={disabled}\n labels={labels}\n rowNumber={rowNumber}\n onChange={onRowNumberUpdate}\n />\n </div>\n <PaginationActions\n disabled={disabled}\n hasNextPage={hasNextPage}\n hasPreviousPage={hasPreviousPage}\n nextIconButtonProps={nextIconButtonProps}\n onNextPage={onNextPage}\n onPreviousPage={onPreviousPage}\n />\n </Toolbar>\n );\n};\n\nPagination.displayName = \"Pagination\";\n", "import ButtonBase from \"@material-ui/core/ButtonBase\";\nimport ChevronLeft from \"@material-ui/icons/ChevronLeft\";\nimport ChevronRight from \"@material-ui/icons/ChevronRight\";\nimport clsx from \"clsx\";\nimport React from \"react\";\n\nimport { useTheme } from \"../theme\";\nimport useStyles from \"./styles\";\n\nexport interface PaginationActionsProps {\n className?: string;\n disabled?: boolean;\n hasNextPage: boolean;\n hasPreviousPage: boolean;\n nextIconButtonProps?: any;\n onNextPage: () => void;\n onPreviousPage: () => void;\n}\n\nexport const PaginationActions: React.FC<PaginationActionsProps> = ({\n className,\n disabled,\n hasNextPage,\n hasPreviousPage,\n nextIconButtonProps,\n onNextPage,\n onPreviousPage,\n ...other\n}) => {\n const classes = useStyles();\n\n const { direction, themeType } = useTheme();\n\n const isDark = themeType === \"dark\";\n const previousDisabled = !hasPreviousPage || disabled;\n const nextDisabled = !hasNextPage || disabled;\n\n return (\n <div className={clsx(classes.actions, className)} {...other}>\n <ButtonBase\n className={clsx(classes.actionsButton, {\n [classes.dark]: isDark,\n [classes.actionsButtonDisabled]: previousDisabled,\n })}\n onClick={onPreviousPage}\n disabled={previousDisabled}\n data-test=\"button-pagination-back\"\n aria-label=\"previous page\"\n >\n {direction === \"rtl\" ? <ChevronRight /> : <ChevronLeft />}\n </ButtonBase>\n\n <ButtonBase\n className={clsx(classes.actionsButton, {\n [classes.dark]: isDark,\n [classes.actionsButtonDisabled]: nextDisabled,\n })}\n onClick={onNextPage}\n disabled={nextDisabled}\n data-test=\"button-pagination-next\"\n aria-label=\"next page\"\n {...nextIconButtonProps}\n >\n {direction === \"rtl\" ? <ChevronLeft /> : <ChevronRight />}\n </ButtonBase>\n </div>\n );\n};\n\nPaginationActions.displayName = \"PaginationActions\";\n", "import { fade } from \"@material-ui/core/styles/colorManipulator\";\n\nimport { makeStyles } from \"../theme\";\n\nconst useStyles = makeStyles(\n (theme) => ({\n actions: {},\n actionsButton: {\n \"&:last-child\": {\n marginLeft: theme.spacing(1.5),\n },\n \"& svg\": {\n color: theme.palette.text.primary,\n width: 16,\n },\n border: `2px solid ${theme.palette.text.primary}`,\n height: 36,\n width: 36,\n },\n actionsButtonDisabled: {\n \"& svg\": {\n color: theme.palette.text.disabled,\n },\n border: `2px solid ${theme.palette.text.disabled}`,\n },\n dark: {\n \"& svg\": {\n color: theme.palette.primary.main,\n },\n \"&:focus, &:hover\": {\n \"& > span:first-of-type\": {\n backgroundColor: fade(theme.palette.primary.main, 0.2),\n },\n },\n },\n root: {},\n toolbar: {\n justifyContent: \"space-between\",\n },\n spacer: {},\n\n rowNumber: {\n fontSize: theme.typography.body2.fontSize,\n },\n rowNumberLabel: {},\n rowNumberSelect: {\n \"&&:before, &&:after\": {\n content: \"none\",\n },\n marginLeft: theme.spacing(1),\n },\n rowNumberSelectLabel: {\n \"&&\": {\n color: theme.palette.primary.main,\n },\n },\n }),\n { name: \"Pagination\" }\n);\nexport default useStyles;\n", "import MenuItem from \"@material-ui/core/MenuItem\";\nimport Select from \"@material-ui/core/Select\";\nimport clsx from \"clsx\";\nimport React from \"react\";\n\nimport useStyles from \"./styles\";\n\nexport type PaginationRowNumberSelectLabels = Record<\"noOfRows\", string>;\nexport interface PaginationRowNumberSelectProps {\n choices: number[];\n className?: string;\n disabled?: boolean;\n labels: PaginationRowNumberSelectLabels;\n rowNumber: number;\n onChange?: (value: number) => void;\n}\n\nexport const PaginationRowNumberSelect: React.FC<PaginationRowNumberSelectProps> =\n ({ className, choices, disabled, labels, rowNumber, onChange }) => {\n const classes = useStyles({});\n\n return (\n <div className={clsx(classes.rowNumber, className)}>\n <span className={classes.rowNumberLabel}>{labels.noOfRows}</span>\n {onChange ? (\n <Select\n data-test-id=\"PaginationRowNumberSelect\"\n disabled={disabled}\n inputProps={{\n className: classes.rowNumberSelectLabel,\n }}\n className={classes.rowNumberSelect}\n value={rowNumber}\n onChange={(event) => onChange(event.target.value as number)}\n >\n {choices.length > 0 &&\n choices.map((choice) => (\n <MenuItem\n value={choice}\n key={choice}\n data-test-id=\"rowNumberOption\"\n >\n {choice}\n </MenuItem>\n ))}\n </Select>\n ) : (\n ` ${rowNumber}`\n )}\n </div>\n );\n };\nPaginationRowNumberSelect.displayName = \"PaginationRowNumberSelect\";\n", "import TableCell from \"@material-ui/core/TableCell\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport React from \"react\";\n\nimport { Pagination, PaginationProps } from \"./Pagination\";\n\nexport interface TablePaginationProps extends PaginationProps {\n colSpan: number;\n}\n\nexport const TablePagination: React.FC<TablePaginationProps> = ({\n colSpan,\n ...paginationProps\n}) => (\n <TableRow>\n <TableCell padding=\"none\" colSpan={colSpan}>\n <Pagination {...paginationProps} />\n </TableCell>\n </TableRow>\n);\nTablePagination.displayName = \"TablePagination\";\n", "import Chip from \"@material-ui/core/Chip\";\nimport React from \"react\";\n\nimport useStyles from \"./styles\";\nimport { StatusChipProps } from \"./types\";\n\nexport const StatusChip: React.FC<StatusChipProps> = ({\n size = \"md\",\n variant,\n ...rest\n}) => {\n const classes = useStyles({\n size,\n variant,\n ...rest,\n });\n\n return <Chip classes={classes} {...rest} />;\n};\n\nStatusChip.displayName = \"HeaderChip\";\n", "import { fade } from \"@material-ui/core/styles\";\n\nimport { makeStyles } from \"../theme\";\nimport { StatusChipProps } from \"./types\";\n\nconst useStyles = makeStyles<StatusChipProps, \"label\" | \"root\">(\n (theme) => ({\n label: {\n color: ({ variant }) => {\n switch (variant) {\n case \"success\":\n return theme.palette.success.main;\n case \"warning\":\n return theme.palette.warning.main;\n case \"neutral\":\n return theme.palette.text.hint;\n case \"error\":\n return theme.palette.error.main;\n }\n },\n fontSize: 16,\n fontWeight: 700,\n padding: theme.spacing(0, 2),\n textTransform: \"uppercase\",\n },\n root: {\n \"&:not(:first-child)\": {\n marginLeft: theme.spacing(2),\n },\n background: ({ variant }) => {\n switch (variant) {\n case \"success\":\n return fade(theme.palette.success.main, 0.2);\n case \"warning\":\n return fade(theme.palette.warning.main, 0.2);\n case \"neutral\":\n return fade(theme.palette.text.hint, 0.05);\n case \"error\":\n return fade(theme.palette.error.main, 0.15);\n }\n },\n borderRadius: 20,\n cursor: \"inherit\",\n height: ({ size }) => (size === \"lg\" ? 40 : 32),\n },\n }),\n {\n name: \"StatusChip\",\n }\n);\nexport default useStyles;\n", "import Tab, { TabProps } from \"@material-ui/core/Tab\";\nimport React from \"react\";\n\nimport useStyles from \"./styles\";\n\nexport const PageTab: React.FC<TabProps> = (props) => {\n const classes = useStyles();\n\n return (\n <Tab\n classes={{\n root: classes.tabRoot,\n }}\n disableRipple\n {...props}\n />\n );\n};\nPageTab.displayName = \"PageTab\";\n", "import { fade } from \"@material-ui/core/styles\";\n\nimport { makeStyles } from \"../theme\";\n\nconst useStyles = makeStyles(\n (theme) => ({\n tabRoot: {\n \"@media (min-width: 600px)\": {\n minWidth: \"unset\",\n },\n \"&.Mui-selected\": {\n background: theme.palette.secondary.main,\n color: theme.palette.primary.main,\n },\n \"&:hover\": {\n background: fade(theme.palette.secondary.main, 0.6),\n },\n borderRadius: 8,\n minHeight: 40,\n padding: theme.spacing(1, 2),\n textTransform: \"unset\",\n },\n containerRoot: {\n minHeight: \"unset\",\n },\n containerFlex: {\n columnGap: theme.spacing(2),\n },\n }),\n {\n name: \"PageTab\",\n }\n);\n\nexport default useStyles;\n", "import Tabs, { TabsProps } from \"@material-ui/core/Tabs\";\nimport React from \"react\";\n\nimport useStyles from \"./styles\";\n\nexport const PageTabs: React.FC<\n Omit<TabsProps, \"onChange\"> & {\n onChange: (value: string) => void;\n }\n> = (props) => {\n const classes = useStyles();\n\n return (\n <Tabs\n {...props}\n classes={{\n flexContainer: classes.containerFlex,\n root: classes.containerRoot,\n }}\n TabIndicatorProps={{\n style: { display: \"none\" },\n }}\n onChange={(_, value) => props.onChange(value)}\n />\n );\n};\nPageTabs.displayName = \"PageTabs\";\n", "import React from \"react\";\n\nexport const PageTabPanel: React.FC<{ show: boolean }> = ({\n children,\n show,\n}) => (\n <div\n style={{\n display: show ? \"block\" : \"none\",\n }}\n >\n {children}\n </div>\n);\nPageTabPanel.displayName = \"PageTabPanel\";\n", "import IconButton from \"@material-ui/core/IconButton\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport Select from \"@material-ui/core/Select\";\nimport Typography from \"@material-ui/core/Typography\";\nimport { DeleteIcon } from \"../icons\";\nimport difference from \"lodash/difference\";\nimport React from \"react\";\n\nimport { useFilters } from \"./context\";\nimport { FilterContent } from \"./FilterContent\";\nimport useStyles from \"./styles\";\nimport {\n EventTarget,\n FilterDetailedOptions,\n FilterLabels,\n FilterOptions,\n FilterType,\n} from \"./types\";\nimport * as utils from \"./utils\";\n\nexport type FilterProps = FilterOptions & FilterDetailedOptions;\nexport const Filter: React.FC<FilterProps> = ({ name, label, ...options }) => {\n const { register, set, unregister } = useFilters();\n const registered = React.useRef(false);\n React.useEffect(() => {\n register(name, label, options);\n registered.current = true;\n\n return () => unregister(name);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n React.useEffect(() => {\n if (\n registered.current &&\n options.choices !== undefined &&\n difference(options.choices, options.choices).length\n ) {\n set(name, {\n options: {\n ...options,\n choices: options.choices,\n },\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [options.choices]);\n\n return null;\n};\n\nexport interface FilterRowProps {\n first: boolean;\n name: string;\n labels: FilterLabels;\n}\nexport const FilterRow: React.FC<FilterRowProps> = ({\n first,\n name,\n labels,\n}) => {\n const classes = useStyles();\n const { filters, toggle, toggleRange } = useFilters();\n\n const filter = filters.find((filter) => filter.name === name);\n\n if (!filter?.active) {\n return null;\n }\n\n const availableFilters = utils.getAvailableFilters(filters);\n const options = [filter, ...availableFilters];\n\n const change = (event: React.ChangeEvent<EventTarget<unknown>>) => {\n toggle(name);\n toggle(event.target.value as string);\n };\n\n return (\n <div className={classes.filter}>\n <Typography className={classes.filterConjunction}>\n {first ? labels.where : labels.and}\n </Typography>\n <Select\n className={classes.filterName}\n classes={{\n selectMenu: classes.filterInputInner,\n }}\n variant=\"outlined\"\n onChange={change}\n value={filter.name}\n >\n {options.map((option) => (\n <MenuItem key={option.name} value={option.name}>\n {option.label}\n </MenuItem>\n ))}\n </Select>\n <Select\n disabled={filter.options.type !== FilterType.Range}\n className={classes.filterRange}\n classes={{\n selectMenu: classes.filterInputInner,\n }}\n variant=\"outlined\"\n value={filter.range.toString()}\n onChange={() => toggleRange(name)}\n >\n <MenuItem value=\"false\">{labels.is}</MenuItem>\n <MenuItem value=\"true\">{labels.range}</MenuItem>\n </Select>\n <FilterContent filter={filter} labels={labels} />\n <IconButton className={classes.filterDelete} onClick={() => toggle(name)}>\n <DeleteIcon />\n </IconButton>\n </div>\n );\n};\n", "import { createContext, useContext } from \"react\";\n\nimport { FilterContextType } from \"./types\";\n\nexport const FilterContext = createContext<FilterContextType | null>(null);\nexport const useFilters = (): FilterContextType => {\n const ctx = useContext(FilterContext);\n if (ctx === undefined) {\n throw new Error(\"useFilters must be used within a FilterContext\");\n }\n\n return ctx!;\n};\n", "import React from \"react\";\n\nimport { MultipleSelectFilterField } from \"./FilterField/MultipleSelectFilterField\";\nimport { RangeFilterField } from \"./FilterField/RangeFilterField\";\nimport { SelectFilterField } from \"./FilterField/SelectFilterField\";\nimport { TextFilterField } from \"./FilterField/TextFilterField\";\nimport { FilterData, FilterLabels, FilterType } from \"./types\";\n\nexport interface FilterContentProps {\n filter: FilterData;\n labels: FilterLabels;\n}\n\nexport const FilterContent: React.FC<FilterContentProps> = ({\n filter,\n labels,\n}) => {\n const { options, range } = filter;\n const { type, multiple } = options;\n\n if (type === FilterType.Choice) {\n if (multiple) {\n return <MultipleSelectFilterField filter={filter} />;\n }\n\n return <SelectFilterField filter={filter} />;\n } else if (type === FilterType.Range && range) {\n return <RangeFilterField filter={filter} labels={labels} />;\n }\n\n return <TextFilterField filter={filter} />;\n};\nFilterContent.displayName = \"FilterContent\";\n", "import Checkbox from \"@material-ui/core/Checkbox\";\nimport Chip from \"@material-ui/core/Chip\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport Select from \"@material-ui/core/Select\";\nimport clsx from \"clsx\";\nimport React from \"react\";\n\nimport { useFilters } from \"../context\";\nimport useStyles from \"../styles\";\nimport { EventTarget, FilterData } from \"../types\";\n\nexport interface FilterContentProps {\n filter: FilterData;\n}\n\nexport const MultipleSelectFilterField: React.FC<FilterContentProps> = ({\n filter,\n}) => {\n const classes = useStyles();\n const { onChange } = useFilters();\n\n const { name, options } = filter;\n const { choices } = options;\n\n const handleChoiceChange = (event: React.ChangeEvent<EventTarget>) =>\n onChange(name, event.target.value as string);\n\n return (\n <Select\n className={classes.filterValue}\n classes={{\n root: classes.filterInputInner,\n }}\n multiple\n variant=\"outlined\"\n onChange={handleChoiceChange}\n value={filter.values}\n renderValue={(values) => {\n const typedValues = values as string[];\n\n return (\n <div className={classes.filterChipContainer}>\n {typedValues.map((value) => (\n <Chip className={classes.filterChip} key={value} label={value} />\n ))}\n </div>\n );\n }}\n >\n {choices!.map((choice) => {\n const active = filter.values!.includes(choice.value);\n\n return (\n <MenuItem\n key={choice.value}\n className={clsx({\n [classes.filterValueSelected]: active,\n })}\n value={choice.value}\n >\n <Checkbox\n checked={active}\n className={classes.filterValueCheckbox}\n />\n {choice.label}\n </MenuItem>\n );\n })}\n </Select>\n );\n};\nMultipleSelectFilterField.displayName = \"MultipleSelectFilterField\";\n", "import { makeStyles } from \"../theme\";\n\nconst useStyles = makeStyles(\n (theme) => ({\n menuContent: {\n minWidth: 220,\n padding: theme.spacing(2),\n },\n menuHeader: {\n textTransform: \"uppercase\",\n },\n menuPaper: {\n borderRadius: 0,\n },\n\n filter: {\n alignItems: \"center\",\n display: \"flex\",\n columnGap: theme.spacing(2),\n marginBottom: theme.spacing(2),\n },\n filterChip: {\n borderRadius: 8,\n background: theme.palette.primary.main,\n color: theme.palette.primary.contrastText,\n },\n filterChipContainer: {\n display: \"flex\",\n columnGap: theme.spacing(1),\n },\n filterDelete: {\n marginLeft: \"auto\",\n },\n filterName: {\n width: 180,\n },\n filterValue: {\n height: 51,\n width: 400,\n },\n filterRange: {\n width: 115,\n },\n filterInputInner: {\n \"&&\": {\n padding: theme.spacing(2),\n },\n },\n filterConjunction: {\n minWidth: 80,\n },\n filterValueCheckbox: {\n paddingLeft: 0,\n },\n filterValueSelected: {\n color: theme.palette.primary.main,\n fontWeight: 500,\n },\n filterRangeLabel: {\n margin: theme.spacing(0, 1),\n },\n filterRangeValueContainer: {\n display: \"flex\",\n alignItems: \"center\",\n },\n\n bar: {\n minWidth: 600,\n },\n\n selectPaper: {\n borderRadius: 0,\n marginTop: `calc(48px + ${theme.spacing(1)})`,\n },\n }),\n {\n name: \"Filter\",\n }\n);\nexport default useStyles;\n", "import TextField, { TextFieldProps } from \"@material-ui/core/TextField\";\nimport Typography from \"@material-ui/core/Typography\";\nimport clsx from \"clsx\";\nimport React from \"react\";\n\nimport { useFilters } from \"../context\";\nimport useStyles from \"../styles\";\nimport { EventTarget, FilterData, FilterLabels } from \"../types\";\n\nexport interface FilterContentProps {\n filter: FilterData;\n labels: FilterLabels;\n}\n\nexport const RangeFilterField: React.FC<FilterContentProps> = ({\n filter,\n labels,\n}) => {\n const classes = useStyles();\n const { onChange } = useFilters();\n\n const { name } = filter;\n\n const handleChange = (event: React.ChangeEvent<EventTarget<string>>) =>\n onChange(name, event.target.value, {\n rangePart: event.target.name as \"min\" | \"max\",\n });\n\n const props: Partial<TextFieldProps> = {\n ...filter.options.InputProps,\n InputProps: {\n classes: {\n input: classes.filterInputInner,\n },\n type: \"number\",\n ...filter.options.InputProps?.InputProps,\n },\n onChange: handleChange,\n };\n\n return (\n <div\n className={clsx(classes.filterValue, classes.filterRangeValueContainer)}\n >\n <TextField {...props} name=\"min\" value={filter.values![0]} />\n <Typography className={classes.filterRangeLabel}>{labels.and}</Typography>\n <TextField {...props} name=\"max\" value={filter.values![1]} />\n </div>\n );\n};\nRangeFilterField.displayName = \"RangeFilterField\";\n", "import MenuItem from \"@material-ui/core/MenuItem\";\nimport Select from \"@material-ui/core/Select\";\nimport React from \"react\";\n\nimport { useFilters } from \"../context\";\nimport useStyles from \"../styles\";\nimport { EventTarget, FilterData } from \"../types\";\n\nexport interface FilterContentProps {\n filter: FilterData;\n}\n\nexport const SelectFilterField: React.FC<FilterContentProps> = ({ filter }) => {\n const classes = useStyles();\n const { onChange } = useFilters();\n\n const { name, options } = filter;\n const { choices } = options;\n\n const handleChoiceChange = (event: React.ChangeEvent<EventTarget>) =>\n onChange(name, event.target.value as string);\n\n return (\n <Select\n className={classes.filterValue}\n classes={{\n selectMenu: classes.filterInputInner,\n }}\n variant=\"outlined\"\n onChange={handleChoiceChange}\n value={filter.value}\n >\n {choices!.map((choice) => (\n <MenuItem key={choice.value} value={choice.value}>\n {choice.label}\n </MenuItem>\n ))}\n </Select>\n );\n};\nSelectFilterField.displayName = \"SelectFilterField\";\n", "import TextField from \"@material-ui/core/TextField\";\nimport React from \"react\";\n\nimport { useFilters } from \"../context\";\nimport useStyles from \"../styles\";\nimport { EventTarget, FilterData } from \"../types\";\n\nexport interface FilterContentProps {\n filter: FilterData;\n}\n\nexport const TextFilterField: React.FC<FilterContentProps> = ({ filter }) => {\n const classes = useStyles();\n const { onChange } = useFilters();\n\n const { name } = filter;\n\n const handleChange = (event: React.ChangeEvent<EventTarget<string>>) =>\n onChange(name, event.target.value);\n\n return (\n <TextField\n {...filter.options.InputProps}\n className={classes.filterValue}\n InputProps={{\n ...filter.options.InputProps?.InputProps,\n classes: {\n input: classes.filterInputInner,\n },\n }}\n onChange={handleChange}\n value={filter.value}\n />\n );\n};\nTextFilterField.displayName = \"TextFilterField\";\n", "import { TextFieldProps } from \"@material-ui/core/TextField\";\n\nexport enum FilterType {\n Text,\n Choice,\n Range,\n}\n\nexport interface FilterDetailedOptions {\n type: FilterType;\n choices?: Array<Record<\"label\" | \"value\", string>>;\n default?: string;\n multiple?: boolean;\n InputProps?: Partial<TextFieldProps>;\n}\nexport interface FilterOptions {\n name: string;\n label: string;\n}\n\nexport interface FilterValues {\n value: string | null;\n values: string[] | null;\n}\n\nexport interface FilterState extends FilterValues {\n active: boolean;\n range: boolean;\n sortIndex: number;\n}\n\nexport interface FilterData extends FilterOptions, FilterState {\n options: FilterDetailedOptions;\n}\n\nexport interface FilterInput extends FilterValues {\n name: string;\n}\n\nexport interface OnFilterChangeOpts {\n rangePart?: \"min\" | \"max\";\n}\n\nexport interface FilterContextType {\n filters: FilterData[];\n set: (name: string, filter: Partial<FilterData>) => void;\n register: (\n name: string,\n label: string,\n options: FilterDetailedOptions\n ) => void;\n toggle: (name: string) => void;\n toggleRange: (name: string) => void;\n unregister: (name: string) => void;\n onChange: (\n name: string,\n value: string | string[],\n opts?: OnFilterChangeOpts\n ) => void;\n}\n\nexport type FilterLabels = Record<\"where\" | \"and\" | \"is\" | \"range\", string>;\n\nexport interface EventTarget<T = unknown> {\n name?: string;\n value: T;\n}\n", "import uniqBy from \"lodash/uniqBy\";\n\nimport {\n FilterData,\n FilterDetailedOptions,\n FilterInput,\n FilterType,\n OnFilterChangeOpts,\n} from \"./types\";\n\nexport function getAvailableFilters(filterData: FilterData[]) {\n return filterData.filter((filter) => !filter.active);\n}\nexport function getActiveFilters(filterData: FilterData[]) {\n return filterData.filter((filter) => filter.active);\n}\n\nexport function validate(filterData: FilterData[]) {\n if (uniqBy(filterData, \"name\").length !== filterData.length) {\n throw new Error(\"Filter names should be unique\");\n }\n}\n\nfunction getDefaultValue(filter: FilterData) {\n const { options } = filter;\n\n return {\n value:\n options.multiple || options.type === FilterType.Range\n ? null\n : options.type === FilterType.Choice\n ? options.default ?? options.choices![0].value\n : \"\",\n values:\n filter.range && options.type === FilterType.Range\n ? [\"\", \"\"]\n : options.multiple\n ? []\n : null,\n };\n}\n\nexport function register(\n filterData: FilterData[],\n name: string,\n label: string,\n initial: FilterInput[],\n options: FilterDetailedOptions\n): FilterData[] {\n const existingFilter = initial.find((f) => f.name === name);\n const filter: FilterData = {\n active: !!existingFilter,\n label,\n name,\n range: false,\n sortIndex: filterData.length,\n options,\n value: null,\n values: null,\n };\n\n return [\n ...filterData,\n {\n ...filter,\n ...getDefaultValue(filter),\n ...existingFilter,\n },\n ];\n}\n\nexport function change(\n filterData: FilterData[],\n name: string,\n value: string | string[],\n opts: OnFilterChangeOpts = {}\n): FilterData[] {\n const filterToUpdate = filterData.find((filter) => filter.name === name)!;\n\n let update: Partial<FilterData>;\n\n if (filterToUpdate!.options.multiple) {\n update = {\n values: value as string[],\n };\n } else if (\n filterToUpdate!.options.type === FilterType.Range &&\n opts.rangePart\n ) {\n update = {\n values:\n opts.rangePart === \"min\"\n ? [value as string, filterToUpdate.values![1]]\n : [filterToUpdate.values![0], value as string],\n };\n } else {\n update = { value: value as string };\n }\n\n return filterData.map((filter) =>\n filter.name === name\n ? {\n ...filter,\n ...update,\n }\n : filter\n );\n}\n\nexport function toggle(filterData: FilterData[], name: string): FilterData[] {\n const selectedFilter = filterData.find((filter) => filter.name === name)!;\n const sortIndex = selectedFilter.active\n ? selectedFilter.sortIndex\n : getActiveFilters(filterData).length;\n const value = selectedFilter.active ? getDefaultValue(selectedFilter) : {};\n\n return filterData.map((filter) =>\n filter.name === name\n ? {\n ...filter,\n active: !filter.active,\n sortIndex,\n ...value,\n }\n : filter.active && filter.sortIndex > sortIndex\n ? {\n ...filter,\n sortIndex: filter.sortIndex - 1,\n }\n : filter\n );\n}\n\nexport function toggleRange(\n filterData: FilterData[],\n name: string\n): FilterData[] {\n return filterData.map((filter) =>\n filter.name === name\n ? {\n ...filter,\n range: !filter.range,\n ...getDefaultValue({\n ...filter,\n range: !filter.range,\n }),\n }\n : filter\n );\n}\n", "import Button from \"@material-ui/core/Button\";\nimport Card from \"@material-ui/core/Card\";\nimport CardContent from \"@material-ui/core/CardContent\";\nimport CardHeader from \"@material-ui/core/CardHeader\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport Close from \"@material-ui/icons/Close\";\nimport React from \"react\";\n\nimport { FilterContext } from \"./context\";\nimport { FilterRow } from \"./Filter\";\nimport { FilterMenu, FilterMenuLabels } from \"./FilterMenu\";\nimport useStyles from \"./styles\";\nimport {\n FilterData,\n FilterDetailedOptions,\n FilterInput,\n FilterLabels,\n OnFilterChangeOpts,\n} from \"./types\";\nimport * as utils from \"./utils\";\n\nexport interface FilterBarProps {\n initial?: FilterInput[];\n labels: Record<\"header\" | \"addButton\", string> &\n FilterMenuLabels &\n FilterLabels;\n onChange: (filterData: FilterData[]) => void;\n onClose: () => void;\n}\n\nexport const FilterBar: React.FC<FilterBarProps> = React.forwardRef(\n ({ children, initial = [], labels, onChange: changeCb, onClose }, ref) => {\n const classes = useStyles();\n const [filterData, setFilterData] = React.useState<FilterData[]>([]);\n const [menuOpen, setMenuOpen] = React.useState(false);\n const button = React.useRef(null);\n\n utils.validate(filterData);\n\n const register = (\n name: string,\n label: string,\n options: FilterDetailedOptions\n ) =>\n setFilterData((fd) => utils.register(fd, name, label, initial, options));\n const onChange = (\n name: string,\n value: string | string[],\n opts?: OnFilterChangeOpts\n ) => setFilterData((fd) => utils.change(fd, name, value, opts));\n const toggle = (name: string) =>\n setFilterData((fd) => utils.toggle(fd, name));\n const toggleRange = (name: string) =>\n setFilterData((fd) => utils.toggleRange(fd, name));\n const unregister = (name: string) =>\n setFilterData((fd) => fd.filter((filter) => filter.name !== name));\n const set = (name: string, filter: Partial<FilterData>) =>\n setFilterData((fd) =>\n fd.map((f) => (f.name === name ? { ...f, filter } : f))\n );\n\n const availableFilters = utils.getAvailableFilters(filterData);\n\n React.useEffect(\n () => changeCb(utils.getActiveFilters(filterData)),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [filterData]\n );\n\n return (\n <FilterContext.Provider\n value={{\n filters: filterData,\n register,\n set,\n toggle,\n toggleRange,\n unregister,\n onChange,\n }}\n >\n {children}\n <Card className={classes.bar} ref={ref} elevation={20}>\n <CardHeader\n title={labels.header}\n action={\n <IconButton onClick={onClose}>\n <Close />\n </IconButton>\n }\n />\n <CardContent>\n <div>\n {utils\n .getActiveFilters(filterData)\n .sort((a, b) => (a.sortIndex > b.sortIndex ? 1 : -1))\n .map((filter, filterIndex) => (\n <FilterRow\n key={filter.name}\n first={filterIndex === 0}\n labels={labels}\n name={filter.name}\n />\n ))}\n </div>\n {!!availableFilters.length && (\n <>\n <Button\n color=\"primary\"\n ref={button}\n onClick={() => setMenuOpen(true)}\n >\n + {labels.addButton}\n </Button>\n </>\n )}\n <FilterMenu\n anchorEl={button.current}\n labels={labels}\n open={menuOpen}\n onClose={() => setMenuOpen(false)}\n />\n </CardContent>\n </Card>\n </FilterContext.Provider>\n );\n }\n);\nFilterBar.displayName = \"FilterBar\";\nexport default FilterBar;\n", "import ClickAwayListener from \"@material-ui/core/ClickAwayListener\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Popper from \"@material-ui/core/Popper\";\nimport Typography from \"@material-ui/core/Typography\";\nimport React from \"react\";\n\nimport { useFilters } from \"./context\";\nimport useStyles from \"./styles\";\nimport { getAvailableFilters } from \"./utils\";\n\nexport type FilterMenuLabels = Record<\"header\", string>;\nexport interface FilterMenuProps {\n anchorEl: HTMLElement | null;\n labels: FilterMenuLabels;\n open: boolean;\n onClose: () => void;\n}\n\nexport const FilterMenu: React.FC<FilterMenuProps> = ({\n anchorEl,\n labels,\n open,\n onClose,\n}) => {\n const classes = useStyles();\n const { filters, toggle } = useFilters();\n\n const availableFilters = getAvailableFilters(filters);\n const handleFilterClick = (filterName: string) => {\n toggle(filterName);\n onClose();\n };\n\n return (\n <Popper\n anchorEl={anchorEl}\n open={open}\n disablePortal\n placement=\"bottom-start\"\n >\n <ClickAwayListener onClickAway={onClose}>\n <Paper elevation={20} className={classes.menuPaper}>\n <div className={classes.menuContent}>\n <Typography\n className={classes.menuHeader}\n color=\"textSecondary\"\n variant=\"caption\"\n >\n {labels.header}\n </Typography>\n </div>\n {availableFilters.map((filter) => (\n <MenuItem\n key={filter.name}\n onClick={() => handleFilterClick(filter.name)}\n >\n {filter.label}\n </MenuItem>\n ))}\n </Paper>\n </ClickAwayListener>\n </Popper>\n );\n};\nFilterMenu.displayName = \"FilterMenu\";\n", "import DialogTitle from \"@material-ui/core/DialogTitle\";\nimport Typography, { TypographyProps } from \"@material-ui/core/Typography\";\nimport React from \"react\";\n\nimport { CloseIcon } from \"../icons\";\nimport { useStyles } from \"./styles\";\n\nexport interface DialogHeaderProps extends TypographyProps<\"h5\"> {\n onClose: () => void;\n}\n\nexport const DialogHeader: React.FC<DialogHeaderProps> = ({\n onClose,\n children,\n ...props\n}) => {\n const classes = useStyles();\n\n return (\n <>\n <DialogTitle\n className={classes.wrapper}\n id=\"alert-dialog-title\"\n disableTypography\n >\n <Typography variant=\"h5\" component=\"h5\" {...props}>\n {children}\n </Typography>\n <button\n className={classes.button}\n onClick={onClose}\n aria-label=\"Close modal\"\n data-test=\"close\"\n >\n <CloseIcon />\n </button>\n </DialogTitle>\n </>\n );\n};\nDialogHeader.displayName = \"DialogHeader\";\n", "import { makeStyles } from \"../theme\";\n\nexport const useStyles = makeStyles(\n (theme) => ({\n button: {\n \"&:hover, &:focus\": {\n color: theme.palette.saleor.active[1],\n },\n appearance: \"none\",\n border: \"none\",\n background: \"transparent\",\n color: theme.palette.saleor.main[3],\n cursor: \"pointer\",\n padding: 0,\n outline: 0,\n },\n wrapper: {\n alignItems: \"center\",\n display: \"flex\",\n justifyContent: \"space-between\",\n },\n }),\n { name: \"DialogHeader\" }\n);\n", "import Table, { TableProps } from \"@material-ui/core/Table\";\nimport React from \"react\";\n\nimport { useStyles } from \"./styles\";\n\nexport interface DialogTableProps extends TableProps {\n innerRef?: React.Ref<HTMLTableElement>;\n}\n\nexport const DialogTable = React.forwardRef<HTMLDivElement, DialogTableProps>(\n ({ children, innerRef, ...props }, ref) => {\n const classes = useStyles();\n\n return (\n <div className={classes.wrapper} ref={ref}>\n <Table ref={innerRef} {...props}>\n {children}\n </Table>\n </div>\n );\n }\n);\nDialogTable.displayName = \"DialogTable\";\n", "import { makeStyles } from \"../theme\";\n\nexport const useStyles = makeStyles(\n () => ({\n wrapper: {\n overflowY: \"scroll\",\n maxHeight: 500,\n },\n }),\n { name: \"DialogTable\" }\n);\n", "import clsx from \"clsx\";\nimport React from \"react\";\n\nimport { useStyles } from \"./styles\";\n\nexport interface ScrollShadowProps\n extends React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLDivElement>,\n HTMLDivElement\n > {\n show: boolean;\n variant: \"bottom\" | \"top\";\n}\n\nexport const ScrollShadow: React.FC<ScrollShadowProps> = ({\n show,\n variant,\n children,\n ...props\n}) => {\n const classes = useStyles();\n\n if (variant === \"bottom\") {\n return (\n <>\n <div\n {...props}\n className={clsx(classes.root, {\n [classes.bottom]: show,\n })}\n >\n {children}\n </div>\n </>\n );\n }\n\n return (\n <div\n {...props}\n className={clsx(classes.root, {\n [classes.top]: show,\n })}\n >\n {children}\n </div>\n );\n};\nScrollShadow.displayName = \"ScrollShadow\";\n", "import { makeStyles } from \"../theme\";\n\nexport const useStyles = makeStyles(\n (theme) => ({\n root: {\n // margin: theme.spacing(0, 3),\n boxShadow: \"0px 0px 0px rgba(2, 25, 58, 0.16)\",\n transition: theme.transitions.create(\"box-shadow\"),\n },\n bottom: {\n boxShadow: \"0px -6px 30px rgba(2, 25, 58, 0.16)\",\n },\n top: {\n boxShadow: \"0px 6px 30px rgba(2, 25, 58, 0.16)\",\n },\n }),\n { name: \"ScrollShadow\" }\n);\n", "import {\n OverridableComponent,\n OverrideProps,\n} from \"@material-ui/core/OverridableComponent\";\nimport clsx from \"clsx\";\nimport React from \"react\";\nimport { UserInteraction } from \"../../types/utils\";\nimport useStyles from \"./styles\";\n\nexport interface PillLinkInnerProps {\n className?: string;\n children?: React.ReactNode;\n state?: UserInteraction;\n}\nexport interface PillLinkTypeMap<P = {}, D extends React.ElementType = \"a\"> {\n props: P & PillLinkInnerProps;\n classKey: never;\n defaultComponent: D;\n}\n\nexport type PillLinkProps<\n D extends React.ElementType = PillLinkTypeMap[\"defaultComponent\"],\n P = {}\n> = OverrideProps<PillLinkTypeMap<P, D>, D>;\n\ninterface PillLinkPropsWithComponent extends PillLinkProps {\n component?: React.ElementType;\n}\n\nconst _PillLink: React.FC<PillLinkPropsWithComponent> = ({\n children,\n component: Component = \"a\",\n className,\n state = \"default\",\n ...props\n}) => {\n const classes = useStyles();\n\n return (\n <Component\n className={clsx(classes.root, className, {\n [classes.hover]: state === \"hover\",\n [classes.active]: state === \"active\",\n })}\n {...props}\n >\n {children}\n </Component>\n );\n};\n_PillLink.displayName = \"PillLink\";\nexport const PillLink = _PillLink as OverridableComponent<PillLinkTypeMap>;\n", "import { makeStyles } from \"../theme\";\n\nconst useStyles = makeStyles(\n (theme) => ({\n root: {\n \"&:hover, &:focus-visible, &$hover\": {\n borderColor: theme.palette.saleor.active[3],\n color: theme.palette.primary.main,\n },\n \"&:active, &$active\": {\n backgroundColor: theme.palette.saleor.active[5],\n borderColor: theme.palette.saleor.active[3],\n color: theme.palette.primary.main,\n },\n backgroundColor: \"transparent\",\n border: `1px dashed ${theme.palette.saleor.main[3]}`,\n borderRadius: 20,\n cursor: \"pointer\",\n color: theme.palette.text.primary,\n outline: 0,\n userSelect: \"none\",\n padding: \"5px 8px\",\n transition: theme.transitions.create(\n [\"border-color\", \"background-color\", \"color\"],\n {\n duration: theme.transitions.duration.shorter,\n }\n ),\n ...theme.typography.body1,\n },\n hover: {},\n active: {},\n }),\n {\n name: \"PillLink\",\n }\n);\nexport default useStyles;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|