diff --git a/packages/web/src/components/AppBar/index.tsx b/packages/web/src/components/AppBar/index.tsx index 15c6fa4e..cbd69b0c 100644 --- a/packages/web/src/components/AppBar/index.tsx +++ b/packages/web/src/components/AppBar/index.tsx @@ -1,19 +1,27 @@ +import { useTheme } from '@mui/material/styles'; +import useMediaQuery from '@mui/material/useMediaQuery'; import MuiAppBar from '@mui/material/AppBar'; import Box from '@mui/material/Box'; import Toolbar from '@mui/material/Toolbar'; import IconButton from '@mui/material/IconButton'; import Typography from '@mui/material/Typography'; import MenuIcon from '@mui/icons-material/Menu'; +import MenuOpenIcon from '@mui/icons-material/MenuOpen'; import SettingsIcon from '@mui/icons-material/Settings'; import HideOnScroll from 'components/HideOnScroll'; import { FormattedMessage } from 'react-intl'; type AppBarProps = { - onMenuClick: () => void; + drawerOpen: boolean; + onDrawerOpen: () => void; + onDrawerClose: () => void; }; -export default function AppBar({ onMenuClick }: AppBarProps) { +export default function AppBar({ drawerOpen, onDrawerOpen, onDrawerClose }: AppBarProps) { + const theme = useTheme(); + const matchSmallScreens = useMediaQuery(theme.breakpoints.down('md'), { noSsr: true }); + return ( @@ -24,17 +32,17 @@ export default function AppBar({ onMenuClick }: AppBarProps) { edge="start" color="inherit" aria-label="open drawer" - onClick={onMenuClick} + onClick={drawerOpen ? onDrawerClose : onDrawerOpen} sx={{ mr: 2 }} > - + {drawerOpen && matchSmallScreens ? : } diff --git a/packages/web/src/components/AppFlowRow/index.tsx b/packages/web/src/components/AppFlowRow/index.tsx index 3ffc5a01..499507b3 100644 --- a/packages/web/src/components/AppFlowRow/index.tsx +++ b/packages/web/src/components/AppFlowRow/index.tsx @@ -6,17 +6,13 @@ import CardActionArea from '@mui/material/CardActionArea'; import MoreHorizIcon from '@mui/icons-material/MoreHoriz'; import * as URLS from 'config/urls'; -import useFormatMessage from 'hooks/useFormatMessage'; import { CardContent, Typography } from './style'; type AppFlowRowProps = { flow: any; } -const countTranslation = (value: React.ReactNode) => (<>{value}
); - function AppFlowRow(props: AppFlowRowProps) { - const formatMessage = useFormatMessage(); const { flow } = props; return ( diff --git a/packages/web/src/components/AppRow/index.tsx b/packages/web/src/components/AppRow/index.tsx index 6b79b7a9..c5141b8e 100644 --- a/packages/web/src/components/AppRow/index.tsx +++ b/packages/web/src/components/AppRow/index.tsx @@ -29,7 +29,7 @@ function AppRow(props: AppRowProps) { return ( - + @@ -43,13 +43,13 @@ function AppRow(props: AppRowProps) { - + {formatMessage('app.connectionCount', { count: countTranslation(connectionCount) })} - + {formatMessage('app.flowCount', { count: countTranslation(0) })} diff --git a/packages/web/src/components/ConditionalIconButton/index.tsx b/packages/web/src/components/ConditionalIconButton/index.tsx new file mode 100644 index 00000000..7b846f9c --- /dev/null +++ b/packages/web/src/components/ConditionalIconButton/index.tsx @@ -0,0 +1,30 @@ +import * as React from 'react'; +import { useTheme } from '@mui/material/styles'; +import useMediaQuery from '@mui/material/useMediaQuery'; +import Button from '@mui/material/Button'; + +import { IconButton } from './style'; + +export default function ConditionalIconButton(props: any) { + const { Icon, ...buttonProps } = props; + const theme = useTheme(); + const matchSmallScreens = useMediaQuery(theme.breakpoints.down('md'), { noSsr: true }); + + if (matchSmallScreens) { + return ( + + + + ) + } + + return ( + - + + } + > + {formatMessage('apps.addConnection')} + diff --git a/packages/web/src/pages/Flows/index.tsx b/packages/web/src/pages/Flows/index.tsx index 8a771241..63755bf3 100644 --- a/packages/web/src/pages/Flows/index.tsx +++ b/packages/web/src/pages/Flows/index.tsx @@ -1,5 +1,5 @@ import Box from '@mui/material/Box'; -import Container from '@mui/material/Container'; +import Container from 'components/Container'; export default function Flows() { return ( diff --git a/packages/web/src/styles/theme.ts b/packages/web/src/styles/theme.ts index 02b28d4b..e1435117 100644 --- a/packages/web/src/styles/theme.ts +++ b/packages/web/src/styles/theme.ts @@ -1,4 +1,5 @@ -import { createTheme } from '@mui/material/styles'; +import { createTheme, alpha } from '@mui/material/styles'; +import { cardActionAreaClasses } from '@mui/material/CardActionArea'; const referenceTheme = createTheme({ palette: { @@ -164,11 +165,44 @@ const extendedTheme = createTheme({ } }, components: { + MuiAppBar: { + styleOverrides: { + root: { + background: referenceTheme.palette.primary.dark, + zIndex: referenceTheme.zIndex.drawer + 1, + } + }, + defaultProps: { + elevation: 2, + }, + }, MuiButton: { styleOverrides: { root: { - padding: '12px 16px', textTransform: 'none', + }, + sizeLarge: { + padding: '14px 22px', + }, + sizeMedium: { + padding: '10px 16px', + }, + sizeSmall: { + padding: '6px 10px', + } + } + }, + MuiCardActionArea: { + styleOverrides: { + root: { + borderRadius: referenceTheme.shape.borderRadius, + [`& .${cardActionAreaClasses.focusHighlight}`]: { + background: 'unset', + border: `1px solid ${alpha(referenceTheme.palette.primary.light, 1)}`, + }, + [`&:hover .${cardActionAreaClasses.focusHighlight}`]: { + opacity: 1, + } } } }, @@ -187,17 +221,6 @@ const extendedTheme = createTheme({ }, }, }, - MuiAppBar: { - styleOverrides: { - root: { - background: referenceTheme.palette.primary.dark, - zIndex: referenceTheme.zIndex.drawer + 1, - } - }, - defaultProps: { - elevation: 2, - }, - }, MuiToolbar: { styleOverrides: { root: {