Files
react-test/docs/data/joy/components/list/ExampleCollapsibleList.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

169 lines
5.5 KiB
TypeScript

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