1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-04-24 01:18:01 +02:00
unleash.unleash/frontend/src/component/common/Proclamation/Proclamation.tsx
Christopher Kolstad 53354224fc
chore: Bump biome and configure husky (#6589)
Upgrades biome to 1.6.1, and updates husky pre-commit hook.

Most changes here are making type imports explicit.
2024-03-18 13:58:05 +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 type { 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;