UNPKG

@vimeo/iris

Version:
94 lines (91 loc) 4.98 kB
import { b as __rest, c as __assign } from '../../tslib.es6-7f0e734f.js'; import React__default from 'react'; import { NoticeStyled, Icon, NoticeChildren, Dismiss } from './Notice.style.esm.js'; import { Button } from '../Button/Button.esm.js'; import { withIris } from '../../utils/HOCs/withIris.esm.js'; import { CircleInfo } from '../../icons/ui/CircleInfo.esm.js'; import { Checkmark } from '../../icons/ui/Checkmark.esm.js'; import { CircleWarning } from '../../icons/ui/CircleWarning.esm.js'; import { useClose } from '../../utils/events/onClose.esm.js'; import { Header } from '../../typography/Header/Header.esm.js'; import { Paragraph } from '../../typography/Paragraph/Paragraph.esm.js'; import { DismissX } from '../../icons/ui/DismissX.esm.js'; import 'styled-components'; import 'polished'; import '../../tokens/core.esm.js'; import '../../tokens/color/index.esm.js'; import '../../tokens/color/background/background.esm.js'; import '../../tokens/util/readToken.esm.js'; import '../../color/colors.esm.js'; import '../../tokens/util/clamp.esm.js'; import '../../tokens/color/format/format.esm.js'; import '../../tokens/color/format/primary.esm.js'; import '../../tokens/color/format/secondary.esm.js'; import '../../tokens/color/format/tertiary.esm.js'; import '../../tokens/color/rainbow/rainbow.esm.js'; import '../../tokens/color/rainbow/conic/index.esm.js'; import '../../tokens/color/rainbow/conic/sm.esm.js'; import '../../tokens/color/rainbow/conic/xl.esm.js'; import '../../tokens/color/rainbow/linear/index.esm.js'; import '../../tokens/color/rainbow/linear/sm.esm.js'; import '../../tokens/color/rainbow/linear/xl.esm.js'; import '../../tokens/color/livestream/livestream.esm.js'; import '../../tokens/color/status/status.esm.js'; import '../../tokens/color/status/caution.esm.js'; import '../../tokens/color/status/negative.esm.js'; import '../../tokens/color/status/positive.esm.js'; import '../../tokens/color/stroke/stroke.esm.js'; import '../../tokens/color/surface/surface.esm.js'; import '../../tokens/color/text/text.esm.js'; import '../../tokens/util/round.esm.js'; import '../../tokens/color/upsell/upsell.esm.js'; import '../../tokens/color/upsell/sm.esm.js'; import '../../tokens/color/upsell/xl.esm.js'; import '../../tokens/color/upsell/new.esm.js'; import '../../tokens/edge/edge.esm.js'; import '../../tokens/space/space.esm.js'; import '../../tokens/typography/index.esm.js'; import '../../tokens/typography/size/size.esm.js'; import '../../typography/Text/Text.esm.js'; import '../../typography/Text/Text.style.esm.js'; import '../../typography/typography.esm.js'; import '../../typography/Text/EditableText.esm.js'; import '../../utils/hooks/useLayoutStyles.esm.js'; import '../../utils/DOM/geometry.esm.js'; import '../../utils/css.esm.js'; import '../Button/Button.style.esm.js'; import '../Button/Button.config.esm.js'; import '../Button/FeaturedIcon.esm.js'; import '../../themes/index.esm.js'; import '../LoaderCircular/LoaderCircular.esm.js'; import '../LoaderCircular/LoaderCircular.style.esm.js'; import '../../utils/hooks/useDeprecate.esm.js'; import '../../utils/general/mergeReactRefs.esm.js'; import '../../typography/Header/Header.style.esm.js'; import '../../typography/Paragraph/Paragraph.style.esm.js'; var Notice = withIris(NoticeComponent); function NoticeComponent(_a) { var children = _a.children, format = _a.format, forwardRef = _a.forwardRef, header = _a.header, _b = _a.icon, icon = _b === void 0 ? icons[format] : _b, onClose = _a.onClose, pill = _a.pill, props = __rest(_a, ["children", "format", "forwardRef", "header", "icon", "onClose", "pill"]); var _c = useClose(onClose), onCloseReject = _c.reject, onCloseComplete = _c.complete; var doClick = function (event) { event.preventDefault(); if (onCloseReject) { onCloseReject(event); } if (onCloseComplete) { onCloseComplete(event); } }; return (React__default.createElement(NoticeStyled, __assign({ format: format, icon: icon, onClose: onClose, pill: pill, ref: forwardRef }, props), icon && (React__default.createElement(Icon, { header: header, format: format, pill: pill }, icon)), header && React__default.createElement(Header, { size: "5" }, header), typeof children === 'string' ? (React__default.createElement(Paragraph, { size: "2" }, children)) : (React__default.createElement(NoticeChildren, null, children)), onClose && (React__default.createElement(Dismiss, { format: format, pill: pill }, React__default.createElement(Button, { title: "Dismiss this notification", variant: "minimal", format: "basic", size: "sm", icon: React__default.createElement(DismissX, null), onClick: doClick }))))); } var icons = { primary: React__default.createElement(CircleInfo, null), positive: React__default.createElement(Checkmark, null), negative: React__default.createElement(CircleWarning, null), }; export { Notice };