beem-component 1.2.8 → 1.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.SampleBanner = exports.GenericBanner = exports.FeatureBanner = exports.AnnouncementBanner = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _bannerCards = _interopRequireDefault(require("./bannerCards"));
11
+
12
+ var _ = require("..");
13
+
14
+ var _colors = require("../colors");
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ /* eslint-disable import/no-anonymous-default-export */
19
+ var _default = {
20
+ component: _bannerCards.default,
21
+ title: "components/Banner",
22
+ argTypes: {
23
+ border: {
24
+ options: ["dashed", "solid"],
25
+ control: {
26
+ type: "select"
27
+ },
28
+ description: "Banner border",
29
+ defaultValue: {
30
+ summary: "none"
31
+ }
32
+ },
33
+ bannerBg: {
34
+ description: "Banner Background Color, Can be set as 'default', or custom color"
35
+ },
36
+ content: {
37
+ options: ["left", "center", "right"],
38
+ control: {
39
+ type: "select"
40
+ },
41
+ description: "Aligning content of banner, will not work if closeButton is present"
42
+ }
43
+ }
44
+ };
45
+ exports.default = _default;
46
+
47
+ var SampleBanner = function SampleBanner() {
48
+ return /*#__PURE__*/_react.default.createElement(_bannerCards.default, {
49
+ border: "dashed",
50
+ content: "center",
51
+ bannerBg: "default"
52
+ }, /*#__PURE__*/_react.default.createElement("h3", null, "Message Title"), /*#__PURE__*/_react.default.createElement("p", null, "Message Text"), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_.BmButton, {
53
+ size: "small"
54
+ }, "Label")));
55
+ };
56
+
57
+ exports.SampleBanner = SampleBanner;
58
+
59
+ var AnnouncementBanner = function AnnouncementBanner() {
60
+ return /*#__PURE__*/_react.default.createElement(_bannerCards.default, {
61
+ bannerBg: "".concat(_colors.BmPrimaryBlue),
62
+ closeButton: true
63
+ }, /*#__PURE__*/_react.default.createElement("h3", {
64
+ style: {
65
+ color: "white"
66
+ }
67
+ }, "Special Announcement Title"), /*#__PURE__*/_react.default.createElement("p", {
68
+ style: {
69
+ color: "white"
70
+ }
71
+ }, "Message Text"), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_.BmButton, {
72
+ variant: "neutral",
73
+ size: "small"
74
+ }, "Label")));
75
+ };
76
+
77
+ exports.AnnouncementBanner = AnnouncementBanner;
78
+
79
+ var FeatureBanner = function FeatureBanner() {
80
+ return /*#__PURE__*/_react.default.createElement(_bannerCards.default, {
81
+ bannerBg: "".concat(_colors.BmSecondaryYellow),
82
+ closeButton: true
83
+ }, /*#__PURE__*/_react.default.createElement(_.BmTag, {
84
+ variant: "light"
85
+ }, /*#__PURE__*/_react.default.createElement("p", null, "New")), /*#__PURE__*/_react.default.createElement("h3", {
86
+ style: {
87
+ color: "white"
88
+ }
89
+ }, "New Feature Title"), /*#__PURE__*/_react.default.createElement("p", {
90
+ style: {
91
+ color: "white"
92
+ }
93
+ }, "Message Text"), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_.BmButton, {
94
+ size: "small"
95
+ }, "Label")));
96
+ };
97
+
98
+ exports.FeatureBanner = FeatureBanner;
99
+
100
+ var GenericBanner = function GenericBanner() {
101
+ return /*#__PURE__*/_react.default.createElement(_bannerCards.default, {
102
+ border: "solid",
103
+ bannerBg: "default",
104
+ closeButton: true
105
+ }, /*#__PURE__*/_react.default.createElement("h3", null, "New Feature Title"), /*#__PURE__*/_react.default.createElement("p", null, "Message Text"), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_.BmButton, {
106
+ size: "small"
107
+ }, "Label")));
108
+ };
109
+
110
+ exports.GenericBanner = GenericBanner;
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _react = _interopRequireWildcard(require("react"));
11
+
12
+ var _icons = require("@material-ui/icons");
13
+
14
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
15
+
16
+ var _ = require("..");
17
+
18
+ var _colors = require("../colors");
19
+
20
+ var _excluded = ["closeButton", "children"];
21
+
22
+ var _templateObject, _templateObject2;
23
+
24
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
+
26
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
27
+
28
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
29
+
30
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
31
+
32
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
33
+
34
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
35
+
36
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
37
+
38
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
39
+
40
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
41
+
42
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
43
+
44
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
45
+
46
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
47
+
48
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
49
+
50
+ var BannerCardWrapper = _styledComponents.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: ", ";\n flex-direction: column;\n padding: 0.5rem;\n border: 0.071rem\n ", "\n ", ";\n border-radius: 0.25rem;\n align-items: ", ";\n background: ", "};\n > *:not(:last-child) {\n margin-bottom: 0.5rem;\n }\n"])), function (_ref) {
51
+ var closeButton = _ref.closeButton,
52
+ show = _ref.show;
53
+
54
+ if (!closeButton) {
55
+ return "flex";
56
+ }
57
+
58
+ return show ? "flex" : "none";
59
+ }, function (_ref2) {
60
+ var border = _ref2.border;
61
+ if (border === "dashed") return "dashed";
62
+ if (border === "solid") return "solid";
63
+ return "none";
64
+ }, _colors.BmPrimaryBlue, function (_ref3) {
65
+ var content = _ref3.content,
66
+ closeButton = _ref3.closeButton;
67
+
68
+ if (!closeButton) {
69
+ if (content === "center") return "center";
70
+ if (content === "left") return "flex-start";
71
+ if (content === "right") return "flex-end";
72
+ return "center";
73
+ }
74
+ }, function (_ref4) {
75
+ var bannerBg = _ref4.bannerBg;
76
+ if (bannerBg === "default") return "".concat(_colors.BmGrey50);
77
+ if (!bannerBg) return "none";
78
+ return bannerBg;
79
+ });
80
+
81
+ var BannerComponent = _styledComponents.default.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n"])));
82
+
83
+ var BmBanner = function BmBanner(_ref5) {
84
+ var closeButton = _ref5.closeButton,
85
+ children = _ref5.children,
86
+ rest = _objectWithoutProperties(_ref5, _excluded);
87
+
88
+ var _useState = (0, _react.useState)(true),
89
+ _useState2 = _slicedToArray(_useState, 2),
90
+ show = _useState2[0],
91
+ setShow = _useState2[1];
92
+
93
+ return /*#__PURE__*/_react.default.createElement(BannerCardWrapper, _extends({
94
+ closeButton: closeButton
95
+ }, rest, {
96
+ show: show
97
+ }), closeButton && /*#__PURE__*/_react.default.createElement(BannerComponent, null, children[0], " ", /*#__PURE__*/_react.default.createElement(_.BmIcons, {
98
+ icon: /*#__PURE__*/_react.default.createElement(_icons.Clear, null),
99
+ size: "small",
100
+ onClick: function onClick() {
101
+ return setShow(!show);
102
+ }
103
+ })), closeButton ? children.slice(1) : children);
104
+ };
105
+
106
+ var _default = BmBanner;
107
+ exports.default = _default;
@@ -35,22 +35,18 @@ var _default = {
35
35
  component: _modal.default,
36
36
  title: "components/Modals",
37
37
  argType: {
38
- size: {
39
- options: ["small", "default", "large", "xlarge"],
40
- control: {
41
- type: "select"
42
- },
43
- description: "Size of the Modal (Optional)",
44
- defaultValue: {
45
- summary: "default"
46
- }
47
- },
38
+ // size: {
39
+ // options: ["small", "default", "large", "xlarge"],
40
+ // control: { type: "select" },
41
+ // description: "Size of the Modal (Optional)",
42
+ // defaultValue: { summary: "default" },
43
+ // },
48
44
  closeButton: {
49
45
  description: "Placed on BmModal.Header component. Displays the close button (X)"
50
46
  },
51
- centered: {
52
- description: "Centers the modal"
53
- },
47
+ // centered: {
48
+ // description: "Centers the modal",
49
+ // },
54
50
  show: {
55
51
  control: {
56
52
  type: "boolean"
@@ -78,8 +74,7 @@ var SampleModal = function SampleModal() {
78
74
  show: showModal,
79
75
  onHide: function onHide() {
80
76
  return setShowModal(false);
81
- },
82
- centered: true
77
+ }
83
78
  }, /*#__PURE__*/_react.default.createElement(_modal.default.Header, {
84
79
  closeButton: true
85
80
  }, /*#__PURE__*/_react.default.createElement("h2", null, "Header")), /*#__PURE__*/_react.default.createElement(_modal.default.Body, null, /*#__PURE__*/_react.default.createElement("p", null, "This is a body")), /*#__PURE__*/_react.default.createElement(_modal.default.Footer, null, /*#__PURE__*/_react.default.createElement("p", null, "This is a footer"))));
@@ -0,0 +1,186 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _react = _interopRequireWildcard(require("react"));
11
+
12
+ var _propTypes = _interopRequireDefault(require("prop-types"));
13
+
14
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
15
+
16
+ var _colors = require("../colors");
17
+
18
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4;
19
+
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+
22
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
23
+
24
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
+
26
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
27
+
28
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
29
+
30
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
31
+
32
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
33
+
34
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
35
+
36
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
37
+
38
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
39
+
40
+ var xsmall = 1.143;
41
+ var small = 1.429;
42
+ var medium = 1.714;
43
+ var large = 1.714;
44
+ var xlarge = 2.286;
45
+ var center;
46
+ var radius;
47
+ var circumference;
48
+ var strokeWidth = 5;
49
+ var initialSize;
50
+
51
+ var measurement = function measurement(size) {
52
+ var initialSize = size || large * 14;
53
+
54
+ if (size === "xsmall") {
55
+ initialSize = xsmall * 14;
56
+ }
57
+
58
+ if (size === "small") {
59
+ initialSize = small * 14;
60
+ }
61
+
62
+ if (size === "medium") {
63
+ initialSize = medium * 14;
64
+ }
65
+
66
+ if (size === "large") {
67
+ initialSize = large * 14;
68
+ }
69
+
70
+ if (size === "xlarge") {
71
+ initialSize = xlarge * 14;
72
+ }
73
+
74
+ center = initialSize / 2;
75
+ radius = initialSize / 2 - strokeWidth / 2;
76
+ circumference = 2 * Math.PI * radius;
77
+ return {
78
+ center: center,
79
+ radius: radius,
80
+ circumference: circumference,
81
+ initialSize: initialSize
82
+ };
83
+ };
84
+
85
+ var ProgressRingWrapper = _styledComponents.default.svg(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: flex;\n width: ", ";\n height: ", ";\n"])), function (_ref) {
86
+ var size = _ref.size;
87
+ if (size === "xsmall") return "1.143rem";
88
+ if (size === "small") return "1.429rem";
89
+ if (size === "medium") return "1.714rem";
90
+ if (size === "large") return "1.714rem";
91
+ if (size === "xlarge") return "2.286rem";
92
+ if (!size) return "1.714rem";
93
+ return size;
94
+ }, function (_ref2) {
95
+ var size = _ref2.size;
96
+ if (size === "xsmall") return "1.143rem";
97
+ if (size === "small") return "1.429rem";
98
+ if (size === "medium") return "1.714rem";
99
+ if (size === "large") return "1.714rem";
100
+ if (size === "xlarge") return "2.286rem";
101
+ if (!size) return "1.714rem";
102
+ return size;
103
+ });
104
+
105
+ var ProgressRingCircle1 = _styledComponents.default.circle(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n fill: none;\n"])));
106
+
107
+ var ProgressRingCircle2 = _styledComponents.default.circle(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n fill: none;\n stroke: ", ";\n"])), function (_ref3) {
108
+ var variant = _ref3.variant,
109
+ progress = _ref3.progress;
110
+
111
+ if (progress) {
112
+ if (variant === "primary") return "".concat(_colors.BmPrimaryBlue);
113
+ if (variant === "success") return "".concat(_colors.BmSecondaryDarkGreen);
114
+ if (variant === "warning") return "".concat(_colors.BmPrimaryGold);
115
+ if (variant === "danger") return "".concat(_colors.BmSecondaryRed);
116
+ if (!variant) return "".concat(_colors.BmPrimaryBlue);
117
+ }
118
+
119
+ if (!progress) return "".concat(_colors.BmGrey100);
120
+ });
121
+
122
+ var Text = _styledComponents.default.text(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n font-size: ", ";\n text-anchor: middle;\n fill: black;\n position: absolute;\n"])), function () {
123
+ if (initialSize >= 50 && initialSize < 100) {
124
+ return "1rem";
125
+ }
126
+
127
+ if (initialSize >= 100) {
128
+ return "2rem";
129
+ }
130
+
131
+ return "0.5rem";
132
+ });
133
+
134
+ var BmProgressRing = function BmProgressRing(props) {
135
+ var _useState = (0, _react.useState)(0),
136
+ _useState2 = _slicedToArray(_useState, 2),
137
+ offset = _useState2[0],
138
+ setOffset = _useState2[1];
139
+
140
+ var circleRef = (0, _react.useRef)(null);
141
+ var size = props.size,
142
+ progress = props.progress,
143
+ variant = props.variant;
144
+ var initialMeasure = measurement(size);
145
+ circumference = initialMeasure.circumference;
146
+ radius = initialMeasure.radius;
147
+ center = initialMeasure.center;
148
+ initialSize = initialMeasure.initialSize;
149
+ (0, _react.useEffect)(function () {
150
+ var progressOffset = (100 - progress) / 100 * circumference;
151
+ setOffset(progressOffset);
152
+ circleRef.current.style = "transition: stroke-dashoffset 850ms ease-in-out";
153
+ }, [setOffset, progress, offset]);
154
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(ProgressRingWrapper, {
155
+ size: size
156
+ }, /*#__PURE__*/_react.default.createElement(ProgressRingCircle1, {
157
+ stroke: "".concat(_colors.BmGrey100),
158
+ cx: center,
159
+ cy: center,
160
+ r: radius,
161
+ strokeWidth: strokeWidth
162
+ }), /*#__PURE__*/_react.default.createElement(ProgressRingCircle2, {
163
+ progress: progress,
164
+ ref: circleRef,
165
+ variant: variant,
166
+ cx: center,
167
+ cy: center,
168
+ r: radius,
169
+ strokeWidth: strokeWidth,
170
+ strokeDasharray: circumference,
171
+ strokeDashoffset: offset,
172
+ "data-testid": "progress-bar-bar"
173
+ }), /*#__PURE__*/_react.default.createElement(Text, {
174
+ x: "".concat(center),
175
+ y: "".concat(center),
176
+ size: size
177
+ }, progress, "%")));
178
+ };
179
+
180
+ BmProgressRing.propTypes = {
181
+ size: _propTypes.default.number.isRequired,
182
+ progress: _propTypes.default.number.isRequired,
183
+ variant: _propTypes.default.string
184
+ };
185
+ var _default = BmProgressRing;
186
+ exports.default = _default;
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.CustomProgressRing = exports.BasicProgressRing = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _progressRing = _interopRequireDefault(require("./progressRing"));
11
+
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+
14
+ /* eslint-disable import/no-anonymous-default-export */
15
+ var _default = {
16
+ component: _progressRing.default,
17
+ title: "components/ProgressRing",
18
+ argTypes: {
19
+ size: {
20
+ options: ["xsmall", "small", "medium", "large", "xlarge"],
21
+ control: {
22
+ type: "select"
23
+ },
24
+ description: "Size of the Progress Ring (Can also be predefined e.g. 50)",
25
+ defaultValue: {
26
+ summary: "large"
27
+ }
28
+ },
29
+ progress: {
30
+ description: "Progress Indicator"
31
+ },
32
+ variant: {
33
+ options: ["primary", "success", "warning", "danger"],
34
+ control: {
35
+ type: "select"
36
+ },
37
+ description: "Color of the Progress Ring",
38
+ defaultValue: {
39
+ summary: "xsmall"
40
+ }
41
+ }
42
+ }
43
+ };
44
+ exports.default = _default;
45
+
46
+ var MainProgressRing = function MainProgressRing(args) {
47
+ return /*#__PURE__*/_react.default.createElement(_progressRing.default, args);
48
+ };
49
+
50
+ var BasicProgressRing = MainProgressRing.bind({});
51
+ exports.BasicProgressRing = BasicProgressRing;
52
+ BasicProgressRing.args = {
53
+ progress: 30,
54
+ variant: "success",
55
+ size: "xlarge"
56
+ };
57
+ var CustomProgressRing = MainProgressRing.bind({});
58
+ exports.CustomProgressRing = CustomProgressRing;
59
+ CustomProgressRing.args = {
60
+ progress: 50,
61
+ variant: "primary",
62
+ size: "40"
63
+ };
@@ -29,6 +29,12 @@ Object.defineProperty(exports, "BmAvatarIcon", {
29
29
  return _iconStyles.BmAvatarIcon;
30
30
  }
31
31
  });
32
+ Object.defineProperty(exports, "BmBanner", {
33
+ enumerable: true,
34
+ get: function get() {
35
+ return _bannerCards.default;
36
+ }
37
+ });
32
38
  Object.defineProperty(exports, "BmBtnIcon", {
33
39
  enumerable: true,
34
40
  get: function get() {
@@ -204,6 +210,12 @@ Object.defineProperty(exports, "BmProgressBar", {
204
210
  return _progressbar.BmProgressBar;
205
211
  }
206
212
  });
213
+ Object.defineProperty(exports, "BmProgressRing", {
214
+ enumerable: true,
215
+ get: function get() {
216
+ return _progressRing.default;
217
+ }
218
+ });
207
219
  Object.defineProperty(exports, "BmQuickReplyIcon", {
208
220
  enumerable: true,
209
221
  get: function get() {
@@ -349,6 +361,10 @@ var _checkbox = require("./checkbox");
349
361
 
350
362
  var _tags = require("../components/Tags/tags");
351
363
 
364
+ var _bannerCards = _interopRequireDefault(require("../components/BannerCard/bannerCards"));
365
+
366
+ var _progressRing = _interopRequireDefault(require("./ProgressRing/progressRing"));
367
+
352
368
  var _iconStyles = require("./iconStyles");
353
369
 
354
370
  var _noteBar = require("./NoteBar/noteBar");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "beem-component",
3
- "version": "1.2.8",
3
+ "version": "1.2.9",
4
4
  "private": false,
5
5
  "main": "dist/components/index.js",
6
6
  "scripts": {
package/src/App.js CHANGED
@@ -1,56 +1,36 @@
1
- import React, { useState } from "react";
1
+ import React from "react";
2
2
  import "../src/main.scss";
3
- import { BmButton, MainWrapper, BmModal } from "./lib/components";
3
+ import { BmButton, BmCard, BmIcons, MainWrapper } from "./lib/components";
4
4
  import { GlobalStyle } from "./lib/components/globalStyles";
5
5
  import "./lib/assets/css/sidebar.scss";
6
- import SideBar from "./SideBar";
7
- import ChatHeader from "./ChatHeader";
8
- import Chat from "./Chat";
9
- import CustomerInfo from "./CustomerInfo";
10
- import InfoAccordion from "./InfoAccordion";
6
+ import BmBanner from "./lib/components/BannerCard/bannerCards";
7
+ import { FileCopyOutlined } from "@material-ui/icons";
8
+ import ProgressBar from "./lib/components/ProgressRing/progressRing";
11
9
 
12
10
  export const App = () => {
13
- const [showModal, setShowModal] = useState(false);
14
11
  return (
15
12
  <>
16
13
  <GlobalStyle />
17
- <MainWrapper>
14
+ {/* <MainWrapper> */}
15
+ <BmBanner border="dashed" content="center" bannerBg="default" closeButton>
16
+ <BmIcons icon={<FileCopyOutlined />} />
17
+ <h3>Message Title</h3>
18
+ <p>Message Text</p>
18
19
  <div>
19
- <BmButton onClick={() => setShowModal(!showModal)}>
20
- Click Me!
20
+ <BmButton variant="neutral" size="small">
21
+ Label
21
22
  </BmButton>
22
23
  </div>
23
- <BmModal show={showModal} onHide={() => setShowModal(false)}>
24
- <BmModal.Header closeButton>
25
- <h2>Header</h2>
26
- </BmModal.Header>
27
- <BmModal.Body>
28
- <p>This is a bodymdlkdmvlfdmvlkmvlkvmflkvmd;lkvmv;lkdmv;lmv;lfvm;lmre;mv;lkremvc;lkremvclfdmvlkfdmv;lkfdmv;lkfdmv;lfdmv;lfdmv;lfdmv;lfdmvlfd;mvlfd;vmfd;lvfdmlv</p>
29
- </BmModal.Body>
30
- <BmModal.Footer>
31
- <p>This is a footer</p>
32
- </BmModal.Footer>
33
- </BmModal>
34
- <div className="main-chat-container">
35
- <div className="chat-container">
36
- <div className="sidebar">
37
- <SideBar />
38
- </div>
39
- <div className="chat">
40
- <ChatHeader />
41
- <div className="chat-menu">
42
- <div className="chat-messages">
43
- <Chat />
44
- </div>
45
- <div className="chat-contact-info">
46
- <CustomerInfo />
47
- <InfoAccordion />
48
- </div>
49
- </div>
50
- </div>
51
- </div>
52
- </div>
53
- </MainWrapper>
24
+ </BmBanner>
25
+ <BmCard>
26
+ <BmCard.Header>
27
+ <h3>Card Header</h3>
28
+ </BmCard.Header>
29
+ <BmCard.Body></BmCard.Body>
30
+ <BmCard.Footer>Card Footer</BmCard.Footer>
31
+ </BmCard>
32
+ <ProgressBar progress="70" size="40" />
33
+ {/* </MainWrapper> */}
54
34
  </>
55
35
  );
56
36
  };
@@ -0,0 +1,41 @@
1
+ import React from "react";
2
+ import "../src/main.scss";
3
+ import { MainWrapper } from "./lib/components";
4
+ import { GlobalStyle } from "./lib/components/globalStyles";
5
+ import "./lib/assets/css/sidebar.scss";
6
+ import SideBar from "./SideBar";
7
+ import ChatHeader from "./ChatHeader";
8
+ import Chat from "./Chat";
9
+ import CustomerInfo from "./CustomerInfo";
10
+ import InfoAccordion from "./InfoAccordion";
11
+
12
+ export const App = () => {
13
+ return (
14
+ <>
15
+ <GlobalStyle />
16
+ <MainWrapper>
17
+ <div className="main-chat-container">
18
+ <div className="chat-container">
19
+ <div className="sidebar">
20
+ <SideBar />
21
+ </div>
22
+ <div className="chat">
23
+ <ChatHeader />
24
+ <div className="chat-menu">
25
+ <div className="chat-messages">
26
+ <Chat />
27
+ </div>
28
+ <div className="chat-contact-info">
29
+ <CustomerInfo />
30
+ <InfoAccordion />
31
+ </div>
32
+ </div>
33
+ </div>
34
+ </div>
35
+ </div>
36
+ </MainWrapper>
37
+ </>
38
+ );
39
+ };
40
+
41
+ export default App;
@@ -0,0 +1,82 @@
1
+ /* eslint-disable import/no-anonymous-default-export */
2
+ import React from "react";
3
+ import BmBanner from "./bannerCards";
4
+ import { BmButton, BmTag } from "..";
5
+ import { BmPrimaryBlue, BmSecondaryYellow } from "../colors";
6
+
7
+ export default {
8
+ component: BmBanner,
9
+ title: "components/Banner",
10
+ argTypes: {
11
+ border: {
12
+ options: ["dashed", "solid"],
13
+ control: { type: "select" },
14
+ description: "Banner border",
15
+ defaultValue: { summary: "none" },
16
+ },
17
+ bannerBg: {
18
+ description:
19
+ "Banner Background Color, Can be set as 'default', or custom color",
20
+ },
21
+ content: {
22
+ options: ["left", "center", "right"],
23
+ control: { type: "select" },
24
+ description:
25
+ "Aligning content of banner, will not work if closeButton is present",
26
+ },
27
+ },
28
+ };
29
+
30
+ export const SampleBanner = () => {
31
+ return (
32
+ <BmBanner border="dashed" content="center" bannerBg="default">
33
+ <h3>Message Title</h3>
34
+ <p>Message Text</p>
35
+ <div>
36
+ <BmButton size="small">Label</BmButton>
37
+ </div>
38
+ </BmBanner>
39
+ );
40
+ };
41
+
42
+ export const AnnouncementBanner = () => {
43
+ return (
44
+ <BmBanner bannerBg={`${BmPrimaryBlue}`} closeButton>
45
+ <h3 style={{ color: "white" }}>Special Announcement Title</h3>
46
+ <p style={{ color: "white" }}>Message Text</p>
47
+ <div>
48
+ <BmButton variant="neutral" size="small">
49
+ Label
50
+ </BmButton>
51
+ </div>
52
+ </BmBanner>
53
+ );
54
+ };
55
+
56
+ export const FeatureBanner = () => {
57
+ return (
58
+ <BmBanner bannerBg={`${BmSecondaryYellow}`} closeButton>
59
+ <BmTag variant="light">
60
+ <p>New</p>
61
+ </BmTag>
62
+ <h3 style={{ color: "white" }}>New Feature Title</h3>
63
+ <p style={{ color: "white" }}>Message Text</p>
64
+ <div>
65
+ <BmButton size="small">Label</BmButton>
66
+ </div>
67
+ </BmBanner>
68
+ );
69
+ };
70
+
71
+ export const GenericBanner = () => {
72
+ return (
73
+ <BmBanner border="solid" bannerBg="default" closeButton>
74
+ <h3>New Feature Title</h3>
75
+ <p>Message Text</p>
76
+ <div>
77
+ <BmButton size="small">Label</BmButton>
78
+ </div>
79
+ </BmBanner>
80
+
81
+ );
82
+ };
@@ -0,0 +1,67 @@
1
+ import React, { useState } from "react";
2
+ import { Clear } from "@material-ui/icons";
3
+ import styled from "styled-components";
4
+ import { BmIcons } from "..";
5
+ import { BmGrey50, BmPrimaryBlue } from "../colors";
6
+
7
+ const BannerCardWrapper = styled.div`
8
+ display: ${({ closeButton, show }) => {
9
+ if (!closeButton) {
10
+ return "flex";
11
+ }
12
+ return show ? "flex" : "none";
13
+ }};
14
+ flex-direction: column;
15
+ padding: 0.5rem;
16
+ border: 0.071rem
17
+ ${({ border }) => {
18
+ if (border === "dashed") return "dashed";
19
+ if (border === "solid") return "solid";
20
+ return "none";
21
+ }}
22
+ ${BmPrimaryBlue};
23
+ border-radius: 0.25rem;
24
+ align-items: ${({ content, closeButton }) => {
25
+ if (!closeButton) {
26
+ if (content === "center") return "center";
27
+ if (content === "left") return "flex-start";
28
+ if (content === "right") return "flex-end";
29
+ return "center";
30
+ }
31
+ }};
32
+ background: ${({ bannerBg }) => {
33
+ if (bannerBg === "default") return `${BmGrey50}`;
34
+ if (!bannerBg) return "none";
35
+ return bannerBg;
36
+ }}};
37
+ > *:not(:last-child) {
38
+ margin-bottom: 0.5rem;
39
+ }
40
+ `;
41
+
42
+ const BannerComponent = styled.div`
43
+ display: flex;
44
+ flex-direction: row;
45
+ justify-content: space-between;
46
+ `;
47
+
48
+ const BmBanner = ({ closeButton, children, ...rest }) => {
49
+ const [show, setShow] = useState(true);
50
+ return (
51
+ <BannerCardWrapper closeButton={closeButton} {...rest} show={show}>
52
+ {closeButton && (
53
+ <BannerComponent>
54
+ {children[0]}{" "}
55
+ <BmIcons
56
+ icon={<Clear />}
57
+ size="small"
58
+ onClick={() => setShow(!show)}
59
+ />
60
+ </BannerComponent>
61
+ )}
62
+ {closeButton ? children.slice(1) : children}
63
+ </BannerCardWrapper>
64
+ );
65
+ };
66
+
67
+ export default BmBanner;
@@ -0,0 +1,156 @@
1
+ import React, { useEffect, useState, useRef } from "react";
2
+ import PropTypes from "prop-types";
3
+ import styled from "styled-components";
4
+ import {
5
+ BmGrey100,
6
+ BmPrimaryBlue,
7
+ BmSecondaryDarkGreen,
8
+ BmPrimaryGold,
9
+ BmSecondaryRed,
10
+ } from "../colors";
11
+
12
+ const xsmall = 1.143;
13
+ const small = 1.429;
14
+ const medium = 1.714;
15
+ const large = 1.714;
16
+ const xlarge = 2.286;
17
+
18
+ let center;
19
+ let radius;
20
+ let circumference;
21
+ let strokeWidth = 5;
22
+ let initialSize;
23
+
24
+ const measurement = (size) => {
25
+ let initialSize = size || large * 14;
26
+ if (size === "xsmall") {
27
+ initialSize = xsmall * 14;
28
+ }
29
+ if (size === "small") {
30
+ initialSize = small * 14;
31
+ }
32
+ if (size === "medium") {
33
+ initialSize = medium * 14;
34
+ }
35
+ if (size === "large") {
36
+ initialSize = large * 14;
37
+ }
38
+ if (size === "xlarge") {
39
+ initialSize = xlarge * 14;
40
+ }
41
+ center = initialSize / 2;
42
+ radius = initialSize / 2 - strokeWidth / 2;
43
+ circumference = 2 * Math.PI * radius;
44
+ return { center, radius, circumference, initialSize };
45
+ };
46
+ const ProgressRingWrapper = styled.svg`
47
+ display: flex;
48
+ width: ${({ size }) => {
49
+ if (size === "xsmall") return "1.143rem";
50
+ if (size === "small") return "1.429rem";
51
+ if (size === "medium") return "1.714rem";
52
+ if (size === "large") return "1.714rem";
53
+ if (size === "xlarge") return "2.286rem";
54
+ if (!size) return "1.714rem";
55
+ return size;
56
+ }};
57
+ height: ${({ size }) => {
58
+ if (size === "xsmall") return "1.143rem";
59
+ if (size === "small") return "1.429rem";
60
+ if (size === "medium") return "1.714rem";
61
+ if (size === "large") return "1.714rem";
62
+ if (size === "xlarge") return "2.286rem";
63
+ if (!size) return "1.714rem";
64
+ return size;
65
+ }};
66
+ `;
67
+
68
+ const ProgressRingCircle1 = styled.circle`
69
+ fill: none;
70
+ `;
71
+
72
+ const ProgressRingCircle2 = styled.circle`
73
+ fill: none;
74
+ stroke: ${({ variant, progress }) => {
75
+ if (progress) {
76
+ if (variant === "primary") return `${BmPrimaryBlue}`;
77
+ if (variant === "success") return `${BmSecondaryDarkGreen}`;
78
+ if (variant === "warning") return `${BmPrimaryGold}`;
79
+ if (variant === "danger") return `${BmSecondaryRed}`;
80
+ if (!variant) return `${BmPrimaryBlue}`;
81
+ }
82
+ if (!progress) return `${BmGrey100}`;
83
+ }};
84
+ `;
85
+
86
+ const Text = styled.text`
87
+ font-size: ${() => {
88
+ if (initialSize >= 50 && initialSize < 100) {
89
+ return "1rem";
90
+ }
91
+ if (initialSize >= 100) {
92
+ return "2rem";
93
+ }
94
+ return "0.5rem";
95
+ }};
96
+ text-anchor: middle;
97
+ fill: black;
98
+ position: absolute;
99
+ `;
100
+
101
+ const BmProgressRing = (props) => {
102
+ const [offset, setOffset] = useState(0);
103
+ const circleRef = useRef(null);
104
+ const { size, progress, variant } = props;
105
+
106
+ const initialMeasure = measurement(size);
107
+
108
+ circumference = initialMeasure.circumference;
109
+ radius = initialMeasure.radius;
110
+ center = initialMeasure.center;
111
+ initialSize = initialMeasure.initialSize;
112
+
113
+ useEffect(() => {
114
+ const progressOffset = ((100 - progress) / 100) * circumference;
115
+ setOffset(progressOffset);
116
+
117
+ circleRef.current.style = "transition: stroke-dashoffset 850ms ease-in-out";
118
+ }, [setOffset, progress, offset]);
119
+
120
+ return (
121
+ <>
122
+ <ProgressRingWrapper size={size}>
123
+ <ProgressRingCircle1
124
+ stroke={`${BmGrey100}`}
125
+ cx={center}
126
+ cy={center}
127
+ r={radius}
128
+ strokeWidth={strokeWidth}
129
+ />
130
+ <ProgressRingCircle2
131
+ progress={progress}
132
+ ref={circleRef}
133
+ variant={variant}
134
+ cx={center}
135
+ cy={center}
136
+ r={radius}
137
+ strokeWidth={strokeWidth}
138
+ strokeDasharray={circumference}
139
+ strokeDashoffset={offset}
140
+ data-testid="progress-bar-bar"
141
+ />
142
+ <Text x={`${center}`} y={`${center}`} size={size}>
143
+ {progress}%
144
+ </Text>
145
+ </ProgressRingWrapper>
146
+ </>
147
+ );
148
+ };
149
+
150
+ BmProgressRing.propTypes = {
151
+ size: PropTypes.number.isRequired,
152
+ progress: PropTypes.number.isRequired,
153
+ variant: PropTypes.string,
154
+ };
155
+
156
+ export default BmProgressRing;
@@ -0,0 +1,41 @@
1
+ /* eslint-disable import/no-anonymous-default-export */
2
+ import React from "react";
3
+ import BmProgressRing from "./progressRing";
4
+
5
+ export default {
6
+ component: BmProgressRing,
7
+ title: "components/ProgressRing",
8
+ argTypes: {
9
+ size: {
10
+ options: ["xsmall", "small", "medium", "large", "xlarge"],
11
+ control: { type: "select" },
12
+ description: "Size of the Progress Ring (Can also be predefined e.g. 50)",
13
+ defaultValue: { summary: "large" },
14
+ },
15
+ progress: {
16
+ description: "Progress Indicator",
17
+ },
18
+ variant: {
19
+ options: ["primary", "success", "warning", "danger"],
20
+ control: { type: "select" },
21
+ description: "Color of the Progress Ring",
22
+ defaultValue: { summary: "xsmall" },
23
+ },
24
+ },
25
+ };
26
+
27
+ const MainProgressRing = (args) => <BmProgressRing {...args} />;
28
+
29
+ export const BasicProgressRing = MainProgressRing.bind({});
30
+ BasicProgressRing.args = {
31
+ progress: 30,
32
+ variant: "success",
33
+ size: "xlarge"
34
+ };
35
+
36
+ export const CustomProgressRing = MainProgressRing.bind({});
37
+ CustomProgressRing.args = {
38
+ progress: 50,
39
+ variant: "primary",
40
+ size: "40"
41
+ };
@@ -18,6 +18,9 @@ import * as BmColors from "./colors";
18
18
  import { BmLoader } from "./Loader/loader";
19
19
  import { BmCheckbox } from "./checkbox";
20
20
  import { BmTag } from "../components/Tags/tags";
21
+ import BmBanner from "../components/BannerCard/bannerCards";
22
+ import BmProgressRing from "./ProgressRing/progressRing";
23
+
21
24
  import {
22
25
  BmTagIcon,
23
26
  BmAvatarIcon,
@@ -72,6 +75,8 @@ export {
72
75
  BmListBox,
73
76
  BmListHeader,
74
77
  BmRowLabel,
78
+ BmBanner,
79
+ BmProgressRing,
75
80
  // Fix height and if there is dropdown option inside the modal body
76
81
  BmModal,
77
82
  BmNoteBar,