1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-10-04 11:17:02 +02:00
unleash.unleash/frontend/src/component/changeRequest/ChangeRequestOverview/ChangeRequestHeader/ChangeRequestHeader.tsx

79 lines
3.1 KiB
TypeScript

import { Box } from '@mui/material';
import { FC } from 'react';
import { Typography, Tooltip } from '@mui/material';
import TimeAgo from 'react-timeago';
import { IChangeRequest } from 'component/changeRequest/changeRequest.types';
import { ChangeRequestStatusBadge } from 'component/changeRequest/ChangeRequestStatusBadge/ChangeRequestStatusBadge';
import {
StyledPaper,
StyledContainer,
StyledHeader,
StyledInnerContainer,
StyledAvatar,
StyledCard,
} from './ChangeRequestHeader.styles';
import { Separator } from '../../ChangeRequestSidebar/ChangeRequestSidebar';
export const ChangeRequestHeader: FC<{ changeRequest: IChangeRequest }> = ({
changeRequest,
}) => {
return (
<StyledPaper elevation={0}>
<StyledContainer>
<StyledHeader variant="h1" sx={{ mr: 1.5 }}>
Change request #{changeRequest.id}
</StyledHeader>
<ChangeRequestStatusBadge state={changeRequest.state} />
</StyledContainer>
<StyledInnerContainer>
<Typography variant="body2" sx={{ margin: 'auto 0' }}>
Created{' '}
<TimeAgo
minPeriod={60}
date={new Date(changeRequest.createdAt)}
/>{' '}
by
</Typography>
<Box
sx={theme => ({
marginLeft: theme.spacing(1),
})}
>
<Tooltip title={changeRequest?.createdBy?.username}>
<StyledAvatar
src={changeRequest?.createdBy?.imageUrl}
/>
</Tooltip>
</Box>
<Box sx={theme => ({ marginLeft: theme.spacing(1.5) })}>
<StyledCard variant="outlined">
<Typography variant="body2" sx={{ lineHeight: 1 }}>
Environment:{' '}
<Typography
display="inline"
fontWeight="bold"
variant="body2"
component="span"
>
{changeRequest?.environment}
</Typography>{' '}
<Separator /> Updates:{' '}
<Typography
variant="body2"
display="inline"
fontWeight="bold"
component="span"
>
{changeRequest.features.length}{' '}
{changeRequest.features.length === 1
? 'feature toggle'
: 'feature toggles'}
</Typography>
</Typography>
</StyledCard>
</Box>
</StyledInnerContainer>
</StyledPaper>
);
};