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
169 lines
5.5 KiB
JavaScript
169 lines
5.5 KiB
JavaScript
import * as React from 'react';
|
|
import Box from '@mui/joy/Box';
|
|
import List from '@mui/joy/List';
|
|
import ListItem from '@mui/joy/ListItem';
|
|
import ListItemButton, { listItemButtonClasses } from '@mui/joy/ListItemButton';
|
|
import IconButton from '@mui/joy/IconButton';
|
|
import Typography from '@mui/joy/Typography';
|
|
import ReceiptLong from '@mui/icons-material/ReceiptLong';
|
|
import KeyboardArrowDown from '@mui/icons-material/KeyboardArrowDown';
|
|
|
|
export default function ExampleCollapsibleList() {
|
|
const [open, setOpen] = React.useState(false);
|
|
const [open2, setOpen2] = React.useState(false);
|
|
return (
|
|
<Box sx={{ width: 320, pl: '24px' }}>
|
|
<List
|
|
size="sm"
|
|
sx={(theme) => ({
|
|
// Gatsby colors
|
|
'--joy-palette-primary-plainColor': '#8a4baf',
|
|
'--joy-palette-neutral-plainHoverBg': 'transparent',
|
|
'--joy-palette-neutral-plainActiveBg': 'transparent',
|
|
'--joy-palette-primary-plainHoverBg': 'transparent',
|
|
'--joy-palette-primary-plainActiveBg': 'transparent',
|
|
[theme.getColorSchemeSelector('dark')]: {
|
|
'--joy-palette-text-secondary': '#635e69',
|
|
'--joy-palette-primary-plainColor': '#d48cff',
|
|
},
|
|
'--List-insetStart': '32px',
|
|
'--ListItem-paddingY': '0px',
|
|
'--ListItem-paddingRight': '16px',
|
|
'--ListItem-paddingLeft': '21px',
|
|
'--ListItem-startActionWidth': '0px',
|
|
'--ListItem-startActionTranslateX': '-50%',
|
|
[`& .${listItemButtonClasses.root}`]: {
|
|
borderLeftColor: 'divider',
|
|
},
|
|
[`& .${listItemButtonClasses.root}.${listItemButtonClasses.selected}`]: {
|
|
borderLeftColor: 'currentColor',
|
|
},
|
|
'& [class*="startAction"]': {
|
|
color: 'var(--joy-palette-text-tertiary)',
|
|
},
|
|
})}
|
|
>
|
|
<ListItem nested>
|
|
<ListItem component="div" startAction={<ReceiptLong />}>
|
|
<Typography level="body-xs" sx={{ textTransform: 'uppercase' }}>
|
|
Documentation
|
|
</Typography>
|
|
</ListItem>
|
|
<List sx={{ '--List-gap': '0px' }}>
|
|
<ListItem>
|
|
<ListItemButton selected>Overview</ListItemButton>
|
|
</ListItem>
|
|
</List>
|
|
</ListItem>
|
|
<ListItem sx={{ '--List-gap': '0px' }}>
|
|
<ListItemButton>Quick Start</ListItemButton>
|
|
</ListItem>
|
|
<ListItem
|
|
nested
|
|
sx={{ my: 1 }}
|
|
startAction={
|
|
<IconButton
|
|
variant="plain"
|
|
size="sm"
|
|
color="neutral"
|
|
onClick={() => setOpen(!open)}
|
|
>
|
|
<KeyboardArrowDown
|
|
sx={[
|
|
open ? { transform: 'initial' } : { transform: 'rotate(-90deg)' },
|
|
]}
|
|
/>
|
|
</IconButton>
|
|
}
|
|
>
|
|
<ListItem>
|
|
<Typography
|
|
level="inherit"
|
|
sx={[
|
|
open
|
|
? { fontWeight: 'bold', color: 'text.primary' }
|
|
: { fontWeight: null, color: 'inherit' },
|
|
]}
|
|
>
|
|
Tutorial
|
|
</Typography>
|
|
<Typography component="span" level="body-xs">
|
|
9
|
|
</Typography>
|
|
</ListItem>
|
|
{open && (
|
|
<List sx={{ '--ListItem-paddingY': '8px' }}>
|
|
<ListItem>
|
|
<ListItemButton>Overview</ListItemButton>
|
|
</ListItem>
|
|
<ListItem>
|
|
<ListItemButton>
|
|
0. Set Up Your Development Environment
|
|
</ListItemButton>
|
|
</ListItem>
|
|
<ListItem>
|
|
<ListItemButton>
|
|
1. Create and Deploy Your First Gatsby Site
|
|
</ListItemButton>
|
|
</ListItem>
|
|
<ListItem>
|
|
<ListItemButton>2. Use and Style React components</ListItemButton>
|
|
</ListItem>
|
|
</List>
|
|
)}
|
|
</ListItem>
|
|
<ListItem
|
|
nested
|
|
sx={{ my: 1 }}
|
|
startAction={
|
|
<IconButton
|
|
variant="plain"
|
|
size="sm"
|
|
color="neutral"
|
|
onClick={() => setOpen2((bool) => !bool)}
|
|
>
|
|
<KeyboardArrowDown
|
|
sx={[
|
|
open2 ? { transform: 'initial' } : { transform: 'rotate(-90deg)' },
|
|
]}
|
|
/>
|
|
</IconButton>
|
|
}
|
|
>
|
|
<ListItem>
|
|
<Typography
|
|
level="inherit"
|
|
sx={[
|
|
open2
|
|
? { fontWeight: 'bold', color: 'text.primary' }
|
|
: { fontWeight: null, color: 'inherit' },
|
|
]}
|
|
>
|
|
How-to Guides
|
|
</Typography>
|
|
<Typography component="span" level="body-xs">
|
|
39
|
|
</Typography>
|
|
</ListItem>
|
|
{open2 && (
|
|
<List sx={{ '--ListItem-paddingY': '8px' }}>
|
|
<ListItem>
|
|
<ListItemButton>Overview</ListItemButton>
|
|
</ListItem>
|
|
<ListItem>
|
|
<ListItemButton>Local Development</ListItemButton>
|
|
</ListItem>
|
|
<ListItem>
|
|
<ListItemButton>Routing</ListItemButton>
|
|
</ListItem>
|
|
<ListItem>
|
|
<ListItemButton>Styling</ListItemButton>
|
|
</ListItem>
|
|
</List>
|
|
)}
|
|
</ListItem>
|
|
</List>
|
|
</Box>
|
|
);
|
|
}
|