UNPKG

@grafana/ui

Version:
77 lines (72 loc) 2.25 kB
import { jsxs, jsx } from 'react/jsx-runtime'; import { cx, css } from '@emotion/css'; import { useStyles2 } from '../../themes/ThemeContext.mjs'; import { Icon } from '../Icon/Icon.mjs'; "use strict"; const FieldValidationMessage = ({ children, horizontal, className }) => { const styles = useStyles2(getFieldValidationMessageStyles); const cssName = cx(horizontal ? styles.horizontal : styles.vertical, className); return /* @__PURE__ */ jsxs("div", { role: "alert", className: cssName, children: [ /* @__PURE__ */ jsx(Icon, { className: styles.fieldValidationMessageIcon, name: "exclamation-triangle" }), children ] }); }; const getFieldValidationMessageStyles = (theme) => { const baseStyle = ` font-size: ${theme.typography.size.sm}; font-weight: ${theme.typography.fontWeightMedium}; padding: ${theme.spacing(0.5, 1)}; color: ${theme.colors.error.contrastText}; background: ${theme.colors.error.main}; border-radius: ${theme.shape.radius.default}; position: relative; display: inline-block; align-self: flex-start; a { color: ${theme.colors.error.contrastText}; text-decoration: underline; } a:hover { text-decoration: none; } `; return { vertical: css(baseStyle, { margin: theme.spacing(0.5, 0, 0, 0), "&:before": { content: '""', position: "absolute", left: "9px", top: "-5px", width: 0, height: 0, borderWidth: "0 4px 5px 4px", borderColor: `transparent transparent ${theme.colors.error.main} transparent`, borderStyle: "solid" } }), horizontal: css(baseStyle, { marginLeft: "10px", "&:before": { content: '""', position: "absolute", left: "-5px", top: "9px", width: 0, height: 0, borderWidth: "4px 5px 4px 0", borderColor: "transparent #e02f44 transparent transparent", borderStyle: "solid" } }), fieldValidationMessageIcon: css({ marginRight: theme.spacing() }) }; }; export { FieldValidationMessage, getFieldValidationMessageStyles }; //# sourceMappingURL=FieldValidationMessage.mjs.map