mirror of
https://github.com/Unleash/unleash.git
synced 2025-04-10 01:16:39 +02:00
142 lines
3.7 KiB
TypeScript
142 lines
3.7 KiB
TypeScript
import { Box, List, styled } from '@mui/material';
|
|
import type { Theme } from '@mui/material/styles/createTheme';
|
|
|
|
export const ContentGridContainer = styled('div')({
|
|
containerType: 'inline-size',
|
|
});
|
|
|
|
const ContentGrid = styled('article')(({ theme }) => {
|
|
return {
|
|
backgroundColor: theme.palette.divider,
|
|
borderRadius: `${theme.shape.borderRadiusLarge}px`,
|
|
gap: `1px`,
|
|
display: 'flex',
|
|
flexFlow: 'column nowrap',
|
|
|
|
'&>*': {
|
|
backgroundColor: theme.palette.background.paper,
|
|
},
|
|
};
|
|
});
|
|
|
|
const onWideContainer =
|
|
(css: object) =>
|
|
({ theme }: { theme: Theme }) => {
|
|
const containerBreakpoint = '1000px';
|
|
const screenBreakpoint = theme.breakpoints.up('lg');
|
|
|
|
return {
|
|
[`@container (min-width: ${containerBreakpoint})`]: css,
|
|
|
|
'@supports not (container-type: inline-size)': {
|
|
[screenBreakpoint]: css,
|
|
},
|
|
};
|
|
};
|
|
|
|
export const ProjectGrid = styled(ContentGrid)(
|
|
onWideContainer({
|
|
gridTemplateColumns: '1fr 1fr 1fr',
|
|
gridTemplateRows: '410px auto',
|
|
display: 'grid',
|
|
gridTemplateAreas: `
|
|
"projects box1 box2"
|
|
". owners owners"
|
|
`,
|
|
}),
|
|
);
|
|
|
|
export const FlagGrid = styled(ContentGrid)(
|
|
onWideContainer({
|
|
gridTemplateColumns: '1fr 1fr 1fr',
|
|
gridTemplateRows: '410px',
|
|
display: 'grid',
|
|
gridTemplateAreas: `
|
|
"flags chart chart"
|
|
`,
|
|
}),
|
|
);
|
|
|
|
export const GridItem = styled('div', {
|
|
shouldForwardProp: (prop) => !['gridArea'].includes(prop.toString()),
|
|
})<{ gridArea: string }>(({ theme, gridArea }) => ({
|
|
padding: theme.spacing(2, 4),
|
|
maxHeight: '100%',
|
|
overflowY: 'auto',
|
|
gridArea,
|
|
}));
|
|
|
|
export const SpacedGridItem = styled('div', {
|
|
shouldForwardProp: (prop) => prop !== 'gridArea',
|
|
})<{ gridArea: string }>(({ theme, gridArea }) => ({
|
|
padding: theme.spacing(3, 4),
|
|
maxHeight: '100%',
|
|
overflowY: 'auto',
|
|
gridArea,
|
|
}));
|
|
|
|
export const EmptyGridItem = styled('div', {
|
|
shouldForwardProp: (prop) => prop !== 'gridArea',
|
|
})<{ gridArea?: string }>(({ theme, gridArea }) => ({
|
|
display: 'none',
|
|
gridArea,
|
|
|
|
...onWideContainer({
|
|
display: 'block',
|
|
})({ theme }),
|
|
}));
|
|
|
|
export const ListItemBox = styled(Box)(({ theme }) => ({
|
|
display: 'flex',
|
|
gap: theme.spacing(2),
|
|
alignItems: 'center',
|
|
width: '100%',
|
|
}));
|
|
|
|
export const listItemStyle = (theme: Theme) => ({
|
|
borderRadius: theme.spacing(0.5),
|
|
borderLeft: `${theme.spacing(0.5)} solid transparent`,
|
|
'&.Mui-selected': {
|
|
borderLeft: `${theme.spacing(0.5)} solid ${theme.palette.primary.main}`,
|
|
},
|
|
display: 'flex',
|
|
flexDirection: 'column',
|
|
alignItems: 'flex-start',
|
|
gap: theme.spacing(1),
|
|
});
|
|
|
|
export const StyledList = styled(List)(({ theme }) => ({
|
|
maxHeight: '400px',
|
|
|
|
...onWideContainer({
|
|
maxHeight: '100%',
|
|
})({ theme }),
|
|
}));
|
|
|
|
export const StyledCardTitle = styled('div')<{ lines?: number }>(
|
|
({ theme, lines = 2 }) => ({
|
|
fontWeight: theme.typography.fontWeightRegular,
|
|
fontSize: theme.typography.body1.fontSize,
|
|
lineClamp: `${lines}`,
|
|
WebkitLineClamp: lines,
|
|
lineHeight: '1.2',
|
|
display: '-webkit-box',
|
|
boxOrient: 'vertical',
|
|
textOverflow: 'ellipsis',
|
|
overflow: 'hidden',
|
|
alignItems: 'flex-start',
|
|
WebkitBoxOrient: 'vertical',
|
|
wordBreak: 'break-word',
|
|
}),
|
|
);
|
|
|
|
export const NeutralCircleContainer = styled('span')(({ theme }) => ({
|
|
width: '28px',
|
|
height: '28px',
|
|
display: 'flex',
|
|
alignItems: 'center',
|
|
justifyContent: 'center',
|
|
backgroundColor: theme.palette.neutral.border,
|
|
borderRadius: '50%',
|
|
}));
|