Spaces:
Running
Running
import styled from "@emotion/styled" | |
import Warning from "mdi-react/AlertIcon" | |
import Info from "mdi-react/InformationIcon" | |
import { CSSProperties, FC } from "react" | |
const Wrapper = styled.div` | |
background: ${({ theme }) => theme.secondaryBackgroundColor}; | |
display: flex; | |
padding: 1rem; | |
border-radius: 0.5rem; | |
` | |
export type Severity = "info" | "warning" | |
const SeverityIcon: FC<{ severity: Severity; style: CSSProperties }> = ({ | |
severity, | |
...props | |
}) => { | |
switch (severity) { | |
case "info": | |
return <Info {...props} /> | |
case "warning": | |
return <Warning {...props} /> | |
} | |
} | |
const Content = styled.div` | |
flex-grow: 1; | |
display: flex; | |
align-items: center; | |
` | |
export const Alert: FC< | |
React.DetailedHTMLProps< | |
React.HTMLAttributes<HTMLDivElement>, | |
HTMLDivElement | |
> & { severity: Severity } | |
> = ({ children, severity, ...props }) => { | |
return ( | |
<Wrapper {...props}> | |
<SeverityIcon severity={severity} style={{ marginRight: "1rem" }} /> | |
<Content>{children}</Content> | |
</Wrapper> | |
) | |
} | |