Some checks failed
No response / noResponse (push) Has been cancelled
CI / Continuous releases (push) Has been cancelled
CI / test-dev (macos-latest) (push) Has been cancelled
CI / test-dev (ubuntu-latest) (push) Has been cancelled
CI / test-dev (windows-latest) (push) Has been cancelled
Maintenance / main (push) Has been cancelled
Scorecards supply-chain security / Scorecards analysis (push) Has been cancelled
CodeQL / Analyze (push) Has been cancelled
138 lines
4.1 KiB
TypeScript
138 lines
4.1 KiB
TypeScript
import * as React from 'react';
|
|
import { CssVarsProvider } from '@mui/joy/styles';
|
|
import { FocusTrap } from '@mui/base/FocusTrap';
|
|
import CssBaseline from '@mui/joy/CssBaseline';
|
|
import Box from '@mui/joy/Box';
|
|
import Typography from '@mui/joy/Typography';
|
|
import Button from '@mui/joy/Button';
|
|
import Stack from '@mui/joy/Stack';
|
|
|
|
import CreateRoundedIcon from '@mui/icons-material/CreateRounded';
|
|
import EmailRoundedIcon from '@mui/icons-material/EmailRounded';
|
|
import PeopleAltRoundedIcon from '@mui/icons-material/PeopleAltRounded';
|
|
import FolderRoundedIcon from '@mui/icons-material/FolderRounded';
|
|
|
|
import Layout from './components/Layout';
|
|
import Navigation from './components/Navigation';
|
|
import Mails from './components/Mails';
|
|
import EmailContent from './components/EmailContent';
|
|
import WriteEmail from './components/WriteEmail';
|
|
import Header from './components/Header';
|
|
|
|
export default function EmailExample() {
|
|
const [drawerOpen, setDrawerOpen] = React.useState(false);
|
|
const [open, setOpen] = React.useState(false);
|
|
|
|
return (
|
|
<CssVarsProvider disableTransitionOnChange>
|
|
<CssBaseline />
|
|
{drawerOpen && (
|
|
<Layout.SideDrawer onClose={() => setDrawerOpen(false)}>
|
|
<Navigation />
|
|
</Layout.SideDrawer>
|
|
)}
|
|
<Stack
|
|
id="tab-bar"
|
|
direction="row"
|
|
spacing={1}
|
|
sx={{
|
|
justifyContent: 'space-around',
|
|
display: { xs: 'flex', sm: 'none' },
|
|
zIndex: '999',
|
|
bottom: 0,
|
|
position: 'fixed',
|
|
width: '100dvw',
|
|
py: 2,
|
|
backgroundColor: 'background.body',
|
|
borderTop: '1px solid',
|
|
borderColor: 'divider',
|
|
}}
|
|
>
|
|
<Button
|
|
variant="plain"
|
|
color="neutral"
|
|
aria-pressed="true"
|
|
component="a"
|
|
href="/joy-ui/getting-started/templates/email/"
|
|
size="sm"
|
|
startDecorator={<EmailRoundedIcon />}
|
|
sx={{ flexDirection: 'column', '--Button-gap': 0 }}
|
|
>
|
|
Email
|
|
</Button>
|
|
<Button
|
|
variant="plain"
|
|
color="neutral"
|
|
component="a"
|
|
href="/joy-ui/getting-started/templates/team/"
|
|
size="sm"
|
|
startDecorator={<PeopleAltRoundedIcon />}
|
|
sx={{ flexDirection: 'column', '--Button-gap': 0 }}
|
|
>
|
|
Team
|
|
</Button>
|
|
<Button
|
|
variant="plain"
|
|
color="neutral"
|
|
component="a"
|
|
href="/joy-ui/getting-started/templates/files/"
|
|
size="sm"
|
|
startDecorator={<FolderRoundedIcon />}
|
|
sx={{ flexDirection: 'column', '--Button-gap': 0 }}
|
|
>
|
|
Files
|
|
</Button>
|
|
</Stack>
|
|
<Layout.Root
|
|
sx={[
|
|
drawerOpen && {
|
|
height: '100vh',
|
|
overflow: 'hidden',
|
|
},
|
|
]}
|
|
>
|
|
<Layout.Header>
|
|
<Header />
|
|
</Layout.Header>
|
|
<Layout.SideNav>
|
|
<Navigation />
|
|
</Layout.SideNav>
|
|
<Layout.SidePane>
|
|
<Box
|
|
sx={{
|
|
p: 2,
|
|
display: 'flex',
|
|
alignItems: 'center',
|
|
justifyContent: 'space-between',
|
|
}}
|
|
>
|
|
<Box sx={{ alignItems: 'center', gap: 1 }}>
|
|
<Typography level="title-lg" textColor="text.secondary" component="h1">
|
|
My inbox
|
|
</Typography>
|
|
<Typography level="title-sm" textColor="text.tertiary">
|
|
5 emails
|
|
</Typography>
|
|
</Box>
|
|
<Button
|
|
size="sm"
|
|
startDecorator={<CreateRoundedIcon />}
|
|
onClick={() => setOpen(true)}
|
|
sx={{ ml: 'auto' }}
|
|
>
|
|
Compose email
|
|
</Button>
|
|
<FocusTrap open={open} disableAutoFocus disableEnforceFocus>
|
|
<WriteEmail open={open} onClose={() => setOpen(false)} />
|
|
</FocusTrap>
|
|
</Box>
|
|
<Mails />
|
|
</Layout.SidePane>
|
|
<Layout.Main>
|
|
<EmailContent />
|
|
</Layout.Main>
|
|
</Layout.Root>
|
|
</CssVarsProvider>
|
|
);
|
|
}
|