mirror of
https://github.com/farcasclaudiu/Flowise.git
synced 2026-06-27 03:00:28 +03:00
19bb23440a
* Update styles for dashboard page * Fix grid in chatflows and marketplaces pages * Update styles for main routes * Create ViewHeader component and use it in chatflows and marketplace * Use viewheader in all main routes views and make the styles consistent * Update table styles for chatflow and marketplace views * Update table and grid styles in all main routes views * Make backgrounds, borders, and colors everywhere * Apply text ellipsis for titles in cards and tables * Update credentials list dialog styles * Update tools dialog styles * Update styles for inputs and dialogs * Show skeleton loaders for main routes * Apply text ellipsis to chatflow title in canvas page * Update icons for load and export buttons in tools and assistants * Fix issue where table header is shown when number of elements is zero * Add error boundary component to main routes * Capture errors from all requests in main routes * Fix id for add api key and add variable buttons * Fix missing th tag in variables table body
106 lines
3.5 KiB
React
106 lines
3.5 KiB
React
import { useEffect } from 'react'
|
|
import { useDispatch, useSelector } from 'react-redux'
|
|
import { Outlet } from 'react-router-dom'
|
|
|
|
// material-ui
|
|
import { styled, useTheme } from '@mui/material/styles'
|
|
import { AppBar, Box, CssBaseline, Toolbar, useMediaQuery } from '@mui/material'
|
|
|
|
// project imports
|
|
import Header from './Header'
|
|
import Sidebar from './Sidebar'
|
|
import { drawerWidth, headerHeight } from '@/store/constant'
|
|
import { SET_MENU } from '@/store/actions'
|
|
|
|
// styles
|
|
const Main = styled('main', { shouldForwardProp: (prop) => prop !== 'open' })(({ theme, open }) => ({
|
|
...theme.typography.mainContent,
|
|
...(!open && {
|
|
backgroundColor: 'transparent',
|
|
borderBottomLeftRadius: 0,
|
|
borderBottomRightRadius: 0,
|
|
transition: theme.transitions.create('all', {
|
|
easing: theme.transitions.easing.sharp,
|
|
duration: theme.transitions.duration.leavingScreen
|
|
}),
|
|
marginRight: 0,
|
|
[theme.breakpoints.up('md')]: {
|
|
marginLeft: -drawerWidth,
|
|
width: `calc(100% - ${drawerWidth}px)`
|
|
},
|
|
[theme.breakpoints.down('md')]: {
|
|
marginLeft: '20px',
|
|
width: `calc(100% - ${drawerWidth}px)`,
|
|
padding: '16px'
|
|
},
|
|
[theme.breakpoints.down('sm')]: {
|
|
marginLeft: '10px',
|
|
width: `calc(100% - ${drawerWidth}px)`,
|
|
padding: '16px',
|
|
marginRight: '10px'
|
|
}
|
|
}),
|
|
...(open && {
|
|
backgroundColor: 'transparent',
|
|
transition: theme.transitions.create('all', {
|
|
easing: theme.transitions.easing.easeOut,
|
|
duration: theme.transitions.duration.enteringScreen
|
|
}),
|
|
marginLeft: 0,
|
|
marginRight: 0,
|
|
borderBottomLeftRadius: 0,
|
|
borderBottomRightRadius: 0,
|
|
width: `calc(100% - ${drawerWidth}px)`
|
|
})
|
|
}))
|
|
|
|
// ==============================|| MAIN LAYOUT ||============================== //
|
|
|
|
const MainLayout = () => {
|
|
const theme = useTheme()
|
|
const matchDownMd = useMediaQuery(theme.breakpoints.down('lg'))
|
|
|
|
// Handle left drawer
|
|
const leftDrawerOpened = useSelector((state) => state.customization.opened)
|
|
const dispatch = useDispatch()
|
|
const handleLeftDrawerToggle = () => {
|
|
dispatch({ type: SET_MENU, opened: !leftDrawerOpened })
|
|
}
|
|
|
|
useEffect(() => {
|
|
setTimeout(() => dispatch({ type: SET_MENU, opened: !matchDownMd }), 0)
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
}, [matchDownMd])
|
|
|
|
return (
|
|
<Box sx={{ display: 'flex' }}>
|
|
<CssBaseline />
|
|
{/* header */}
|
|
<AppBar
|
|
enableColorOnDark
|
|
position='fixed'
|
|
color='inherit'
|
|
elevation={0}
|
|
sx={{
|
|
bgcolor: theme.palette.background.default,
|
|
transition: leftDrawerOpened ? theme.transitions.create('width') : 'none'
|
|
}}
|
|
>
|
|
<Toolbar sx={{ height: `${headerHeight}px`, borderBottom: '1px solid', borderColor: theme.palette.primary[200] + 75 }}>
|
|
<Header handleLeftDrawerToggle={handleLeftDrawerToggle} />
|
|
</Toolbar>
|
|
</AppBar>
|
|
|
|
{/* drawer */}
|
|
<Sidebar drawerOpen={leftDrawerOpened} drawerToggle={handleLeftDrawerToggle} />
|
|
|
|
{/* main content */}
|
|
<Main theme={theme} open={leftDrawerOpened}>
|
|
<Outlet />
|
|
</Main>
|
|
</Box>
|
|
)
|
|
}
|
|
|
|
export default MainLayout
|