UNPKG

@ntragas/pouncejstest

Version:

A collection of UI components from Panther labs

98 lines (80 loc) 3.22 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose")); var _react = _interopRequireDefault(require("react")); var _autoId = require("@reach/auto-id"); var _Box = _interopRequireDefault(require("../../Box")); var _Flex = _interopRequireDefault(require("../../Flex")); var _IconButton = _interopRequireDefault(require("../../IconButton")); var _Icon = _interopRequireDefault(require("../../Icon")); var _useAlertStyles2 = _interopRequireDefault(require("./useAlertStyles")); /** An ControlledAlert component is simply a container for text that should capture the user's attention */ var ControlledAlert = /*#__PURE__*/_react.default.forwardRef(function ControlledAlert(_ref, ref) { var title = _ref.title, open = _ref.open, onClose = _ref.onClose, description = _ref.description, _ref$variant = _ref.variant, variant = _ref$variant === void 0 ? 'default' : _ref$variant, discardable = _ref.discardable, _ref$actions = _ref.actions, actions = _ref$actions === void 0 ? null : _ref$actions, rest = (0, _objectWithoutPropertiesLoose2.default)(_ref, ["title", "open", "onClose", "description", "variant", "discardable", "actions"]); var _useAlertStyles = (0, _useAlertStyles2.default)({ variant }), backgroundColor = _useAlertStyles.backgroundColor, icon = _useAlertStyles.icon; var id = (0, _autoId.useId)(); if (!open) { return null; } return /*#__PURE__*/_react.default.createElement(_Box.default, (0, _extends2.default)({ ref: ref, p: 4, borderRadius: "large", role: "dialog", "aria-labelledby": id + "-title", "aria-describedby": id + "-description", backgroundColor: backgroundColor }, rest), title && /*#__PURE__*/_react.default.createElement(_Flex.default, { as: "header", align: "center", fontSize: "large" }, /*#__PURE__*/_react.default.createElement(_Icon.default, { type: icon, mr: 2, size: "large" }), /*#__PURE__*/_react.default.createElement(_Box.default, { as: "h4", fontWeight: description ? 'bold' : 'normal', flexGrow: 1, mr: "auto", id: id + "-title" }, title), discardable && /*#__PURE__*/_react.default.createElement(_Box.default, { my: -3, mr: -3, ml: 3 }, /*#__PURE__*/_react.default.createElement(_IconButton.default, { "aria-label": "Discard", variant: "unstyled", icon: "close", onClick: onClose }))), description && /*#__PURE__*/_react.default.createElement(_Box.default, { as: "p", fontStyle: "italic", mt: title ? 3 : 0, fontSize: "medium" }, description), actions && /*#__PURE__*/_react.default.createElement(_Flex.default, { mt: 6, justify: "flex-end", as: "footer" }, typeof actions === 'function' ? actions({ close }) : actions)); }); var _default = /*#__PURE__*/_react.default.memo(ControlledAlert); exports.default = _default;