UNPKG

3.02 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
5var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
7exports.__esModule = true;
8exports.AlertIcon = exports.AlertDescription = exports.AlertTitle = exports.Alert = exports.statuses = void 0;
9
10var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
12var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
13
14var _core = require("@emotion/core");
15
16var _react = require("react");
17
18var _Box = _interopRequireDefault(require("../Box"));
19
20var _Icon = _interopRequireDefault(require("../Icon"));
21
22var _styles = _interopRequireWildcard(require("./styles"));
23
24/** @jsx jsx */
25var statuses = {
26 info: {
27 icon: "info",
28 color: "blue"
29 },
30 warning: {
31 icon: "warning-2",
32 color: "orange"
33 },
34 success: {
35 icon: "check-circle",
36 color: "green"
37 },
38 error: {
39 icon: "warning",
40 color: "red"
41 }
42};
43exports.statuses = statuses;
44var AlertContext = (0, _react.createContext)();
45
46var useAlertContext = function useAlertContext() {
47 var context = (0, _react.useContext)(AlertContext);
48
49 if (context === undefined) {
50 throw new Error("useAlertContext must be used within a AlertContextProvider");
51 }
52
53 return context;
54};
55
56var Alert = function Alert(_ref) {
57 var _ref$status = _ref.status,
58 status = _ref$status === void 0 ? "info" : _ref$status,
59 _ref$variant = _ref.variant,
60 variant = _ref$variant === void 0 ? "subtle" : _ref$variant,
61 rest = (0, _objectWithoutPropertiesLoose2["default"])(_ref, ["status", "variant"]);
62 var alertStyleProps = (0, _styles["default"])({
63 variant: variant,
64 color: statuses[status] && statuses[status]["color"]
65 });
66 var context = {
67 status: status,
68 variant: variant
69 };
70 return (0, _core.jsx)(AlertContext.Provider, {
71 value: context
72 }, (0, _core.jsx)(_Box["default"], (0, _extends2["default"])({
73 role: "alert"
74 }, alertStyleProps, rest)));
75};
76
77exports.Alert = Alert;
78
79var AlertTitle = function AlertTitle(props) {
80 return (0, _core.jsx)(_Box["default"], (0, _extends2["default"])({
81 fontWeight: "bold",
82 lineHeight: "normal"
83 }, props));
84};
85
86exports.AlertTitle = AlertTitle;
87
88var AlertDescription = function AlertDescription(props) {
89 return (0, _core.jsx)(_Box["default"], props);
90};
91
92exports.AlertDescription = AlertDescription;
93
94var AlertIcon = function AlertIcon(props) {
95 var _useAlertContext = useAlertContext(),
96 status = _useAlertContext.status,
97 variant = _useAlertContext.variant;
98
99 var iconStyleProps = (0, _styles.useAlertIconStyle)({
100 variant: variant,
101 color: statuses[status] && statuses[status]["color"]
102 });
103 return (0, _core.jsx)(_Icon["default"] // mt={1}
104 , (0, _extends2["default"])({
105 mr: 3,
106 size: 5,
107 name: statuses[status] && statuses[status]["icon"]
108 }, iconStyleProps, props));
109};
110
111exports.AlertIcon = AlertIcon;
\No newline at end of file