Files
react-test/docs/data/joy/getting-started/templates/email/App.tsx
how2ice 005cf56baf
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
init project
2025-12-12 14:26:25 +09:00

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>
);
}