@vimeo/iris
Version:
Vimeo Design System
94 lines (91 loc) • 4.98 kB
JavaScript
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 };