1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-09-28 17:55:15 +02:00
unleash.unleash/frontend/src/component/common/Proclamation/Proclamation.tsx
Nuno Góis 4167a60588
feat: biome lint frontend (#4903)
Follows up on https://github.com/Unleash/unleash/pull/4853 to add Biome
to the frontend as well.


![image](https://github.com/Unleash/unleash/assets/14320932/1906faf1-fc29-4172-a4d4-b2716d72cd65)

Added a few `biome-ignore` to speed up the process but we may want to
check and fix them in the future.
2023-10-02 13:25:46 +01:00

74 lines
1.9 KiB
TypeScript

import { useState, useEffect } from 'react';
import { Alert, styled } from '@mui/material';
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
import { Typography } from '@mui/material';
import { IProclamationToast } from 'interfaces/uiConfig';
interface IProclamationProps {
toast?: IProclamationToast;
}
const StyledProclamation = styled(Alert)(({ theme }) => ({
marginBottom: theme.spacing(2),
}));
const StyledContent = styled(Typography)(({ theme }) => ({
maxWidth: '800px',
}));
const StyledLink = styled('a')(({ theme }) => ({
display: 'block',
marginTop: theme.spacing(1),
width: '100px',
}));
const renderProclamation = (id: string) => {
if (!id) return false;
if (localStorage) {
const value = localStorage.getItem(id);
if (value) {
return false;
}
}
return true;
};
const Proclamation = ({ toast }: IProclamationProps) => {
const [show, setShow] = useState(false);
useEffect(() => {
setShow(renderProclamation(toast?.id || ''));
}, [toast?.id]);
const onClose = () => {
if (localStorage) {
localStorage.setItem(toast?.id || '', 'seen');
}
setShow(false);
};
if (!toast) return null;
return (
<ConditionallyRender
condition={show}
show={
<StyledProclamation severity={toast.severity} onClose={onClose}>
<StyledContent variant='body2'>
{toast.message}
</StyledContent>
<StyledLink
href={toast.link}
target='_blank'
rel='noopener noreferrer'
>
View more
</StyledLink>
</StyledProclamation>
}
/>
);
};
export default Proclamation;