From a30a547ac5596c787252ce23a845093c426dc2ef Mon Sep 17 00:00:00 2001 From: Sebastian Date: Tue, 5 Apr 2022 12:16:09 -0300 Subject: mui alert and not enough blanance ported to material --- .../taler-wallet-webextension/src/mui/Alert.tsx | 160 +++++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 packages/taler-wallet-webextension/src/mui/Alert.tsx (limited to 'packages/taler-wallet-webextension/src/mui/Alert.tsx') diff --git a/packages/taler-wallet-webextension/src/mui/Alert.tsx b/packages/taler-wallet-webextension/src/mui/Alert.tsx new file mode 100644 index 000000000..7d0ce55d0 --- /dev/null +++ b/packages/taler-wallet-webextension/src/mui/Alert.tsx @@ -0,0 +1,160 @@ +import { css } from "@linaria/core"; +import { ComponentChildren, h, VNode } from "preact"; +// eslint-disable-next-line import/extensions +import CloseIcon from "../svg/close_24px.svg"; +import ErrorOutlineIcon from "../svg/error_outline_outlined_24px.svg"; +import InfoOutlinedIcon from "../svg/info_outlined_24px.svg"; +import ReportProblemOutlinedIcon from "../svg/report_problem_outlined_24px.svg"; +import SuccessOutlinedIcon from "../svg/success_outlined_24px.svg"; +import { IconButton } from "./Button.js"; +// eslint-disable-next-line import/extensions +import { darken, lighten } from "./colors/manipulation"; +import { Paper } from "./Paper.js"; +// eslint-disable-next-line import/extensions +import { theme } from "./style"; +import { Typography } from "./Typography.js"; + +const defaultIconMapping = { + success: SuccessOutlinedIcon, + warning: ReportProblemOutlinedIcon, + error: ErrorOutlineIcon, + info: InfoOutlinedIcon, +}; + +const baseStyle = css` + background-color: transparent; + display: flex; + padding: 6px 16px; +`; + +const colorVariant = { + standard: css` + color: var(--color-light-06); + background-color: var(--color-background-light-09); + `, + outlined: css` + color: var(--color-light-06); + border-width: 1px; + border-style: solid; + border-color: var(--color-light); + `, + filled: css` + color: "#fff"; + font-weight: ${theme.typography.fontWeightMedium}; + background-color: var(--color-main); + `, +}; + +interface Props { + title?: string; + variant?: "filled" | "outlined" | "standard"; + role?: string; + onClose?: () => void; + // icon: VNode; + severity?: "info" | "warning" | "success" | "error"; + children: ComponentChildren; + icon?: boolean; +} + +const getColor = theme.palette.mode === "light" ? darken : lighten; +const getBackgroundColor = theme.palette.mode === "light" ? lighten : darken; + +function Icon({ svg }: { svg: VNode }): VNode { + return ( +
+ ); +} + +function Action({ children }: { children: ComponentChildren }): VNode { + return ( +
+ {children} +
+ ); +} + +function Message({ + title, + children, +}: { + title?: string; + children: ComponentChildren; +}): VNode { + return ( +
+ {title && ( + + {title} + + )} + {children} +
+ ); +} + +export function Alert({ + variant = "standard", + severity = "success", + title, + children, + icon, + onClose, + ...rest +}: Props): VNode { + return ( + + {icon != false ? : null} + {children} + {onClose && ( + + + + )} + + ); +} -- cgit v1.2.3