beem-component 2.1.5 → 2.1.7

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,83 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ const hexToRgba = function (hex) {
11
+ let opacity = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.6;
12
+ try {
13
+ const normalizedHex = hex === null || hex === void 0 ? void 0 : hex.replace('#', '');
14
+ if (!normalizedHex || normalizedHex.length !== 6 || !/^[0-9a-fA-F]{6}$/.test(normalizedHex)) {
15
+ throw new Error('Invalid hex');
16
+ }
17
+ const r = parseInt(normalizedHex.slice(0, 2), 16);
18
+ const g = parseInt(normalizedHex.slice(2, 4), 16);
19
+ const b = parseInt(normalizedHex.slice(4, 6), 16);
20
+ return "rgba(".concat(r, ", ").concat(g, ", ").concat(b, ", ").concat(opacity, ")");
21
+ } catch (e) {
22
+ return "rgba(0, 0, 0, ".concat(opacity, ")");
23
+ }
24
+ };
25
+ const AlertWrapper = _styledComponents.default.div.withConfig({
26
+ displayName: "Alert__AlertWrapper"
27
+ })(["border:1px solid ", ";background-color:", ";border-radius:0.5rem;padding:0.75rem;@media (min-width:640px){padding:1rem;}"], _ref => {
28
+ let {
29
+ themeColor
30
+ } = _ref;
31
+ return hexToRgba(themeColor, 0.2);
32
+ }, _ref2 => {
33
+ let {
34
+ themeColor
35
+ } = _ref2;
36
+ return hexToRgba(themeColor, 0.05);
37
+ });
38
+ const Content = _styledComponents.default.div.withConfig({
39
+ displayName: "Alert__Content"
40
+ })(["display:flex;align-items:flex-start;gap:0.75rem;"]);
41
+ const IconContainer = _styledComponents.default.div.withConfig({
42
+ displayName: "Alert__IconContainer"
43
+ })(["background-color:", ";border-radius:9999px;display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;margin-top:0.125rem;@media (min-width:640px){width:2.1rem;height:2.1rem;}svg{width:1rem;height:1rem;color:", ";@media (min-width:640px){width:1.25rem;height:1.25rem;}}"], _ref3 => {
44
+ let {
45
+ themeColor
46
+ } = _ref3;
47
+ return hexToRgba(themeColor, 0.1);
48
+ }, _ref4 => {
49
+ let {
50
+ themeColor
51
+ } = _ref4;
52
+ return themeColor;
53
+ });
54
+ const TextContent = _styledComponents.default.div.withConfig({
55
+ displayName: "Alert__TextContent"
56
+ })(["flex:1;"]);
57
+ const Title = _styledComponents.default.h3.withConfig({
58
+ displayName: "Alert__Title"
59
+ })(["font-weight:500;color:", ";font-size:0.875rem;margin-bottom:0.25rem;"], _ref5 => {
60
+ let {
61
+ themeColor
62
+ } = _ref5;
63
+ return themeColor;
64
+ });
65
+ const Description = _styledComponents.default.p.withConfig({
66
+ displayName: "Alert__Description"
67
+ })(["color:#6b7280;font-size:0.75rem;@media (min-width:640px){font-size:0.875rem;}"]);
68
+ const BmAlertBox = _ref6 => {
69
+ let {
70
+ icon: Icon,
71
+ themeColor = '#EF4444',
72
+ title,
73
+ description
74
+ } = _ref6;
75
+ return /*#__PURE__*/_react.default.createElement(AlertWrapper, {
76
+ themeColor: themeColor
77
+ }, /*#__PURE__*/_react.default.createElement(Content, null, Icon && /*#__PURE__*/_react.default.createElement(IconContainer, {
78
+ themeColor: themeColor
79
+ }, /*#__PURE__*/_react.default.createElement(Icon, null)), /*#__PURE__*/_react.default.createElement(TextContent, null, /*#__PURE__*/_react.default.createElement(Title, {
80
+ themeColor: themeColor
81
+ }, title), /*#__PURE__*/_react.default.createElement(Description, null, description))));
82
+ };
83
+ var _default = exports.default = BmAlertBox;
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.Example = exports.Default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _AccessTime = _interopRequireDefault(require("@mui/icons-material/AccessTime"));
9
+ var _Person = _interopRequireDefault(require("@mui/icons-material/Person"));
10
+ var _CalendarTodayOutlined = _interopRequireDefault(require("@mui/icons-material/CalendarTodayOutlined"));
11
+ var _Alert = _interopRequireDefault(require("./Alert"));
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ const iconOptions = {
14
+ AccessTimeIcon: _AccessTime.default,
15
+ PersonIcon: _Person.default,
16
+ CalendarTodayOutlinedIcon: _CalendarTodayOutlined.default,
17
+ None: null
18
+ };
19
+ const Template = args => {
20
+ return /*#__PURE__*/_react.default.createElement("div", {
21
+ style: {
22
+ maxWidth: 500,
23
+ margin: '2rem auto'
24
+ }
25
+ }, /*#__PURE__*/_react.default.createElement(_Alert.default, args));
26
+ };
27
+ const Default = exports.Default = Template.bind({});
28
+ Default.args = {
29
+ icon: _AccessTime.default,
30
+ themeColor: '#EF4444',
31
+ title: 'Submission Failed',
32
+ description: 'There was an issue processing your request. Please try again later.'
33
+ };
34
+ Default.argTypes = {
35
+ icon: {
36
+ control: {
37
+ type: 'select',
38
+ labels: Object.keys(iconOptions)
39
+ },
40
+ options: Object.keys(iconOptions),
41
+ mapping: iconOptions
42
+ },
43
+ themeColor: {
44
+ control: 'color'
45
+ },
46
+ title: {
47
+ control: 'text'
48
+ },
49
+ description: {
50
+ control: 'text'
51
+ }
52
+ };
53
+ var _default = exports.default = {
54
+ title: 'Components/BmAlertBox',
55
+ component: _Alert.default,
56
+ argTypes: Default.argTypes
57
+ };
58
+ const Example = () => {
59
+ return /*#__PURE__*/_react.default.createElement(_Alert.default, {
60
+ icon: _AccessTime.default,
61
+ themeColor: "#DC2626",
62
+ title: "Payment Error",
63
+ description: "We couldn't process your payment. Please try again later or contact support."
64
+ });
65
+ };
66
+ exports.Example = Example;
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = exports.Default = void 0;
6
+ exports.default = exports.Example = exports.Default = void 0;
7
7
  var _react = _interopRequireDefault(require("react"));
8
8
  var _CalendarTodayOutlined = _interopRequireDefault(require("@mui/icons-material/CalendarTodayOutlined"));
9
9
  var _Check = _interopRequireDefault(require("@mui/icons-material/Check"));
@@ -21,29 +21,12 @@ const iconOptions = {
21
21
  Heart: _Favorite.default
22
22
  };
23
23
  const Template = args => {
24
- var _Object$entries$find;
25
- const iconName = (_Object$entries$find = Object.entries(iconOptions).find(_ref => {
26
- let [, comp] = _ref;
27
- return comp === args.icon;
28
- })) === null || _Object$entries$find === void 0 ? void 0 : _Object$entries$find[0];
29
24
  return /*#__PURE__*/_react.default.createElement("div", {
30
25
  style: {
31
26
  maxWidth: 500,
32
27
  margin: '2rem auto'
33
28
  }
34
- }, /*#__PURE__*/_react.default.createElement(_CustomCardTitle.default, args), /*#__PURE__*/_react.default.createElement("div", {
35
- style: {
36
- marginTop: '2rem',
37
- fontSize: '0.875rem'
38
- }
39
- }, /*#__PURE__*/_react.default.createElement("strong", null, "Example usage:"), /*#__PURE__*/_react.default.createElement("pre", {
40
- style: {
41
- background: '#f5f5f5',
42
- padding: '1rem',
43
- borderRadius: 8,
44
- overflowX: 'auto'
45
- }
46
- }, "<BmCustomCardTitle\n icon={".concat(iconName, "}\n themeColor=\"").concat(args.themeColor, "\"\n title=\"").concat(args.title, "\"\n description=\"").concat(args.description, "\"\n variant=\"").concat(args.variant, "\"\n withStripe={").concat(args.withStripe, "}\n/>"))));
29
+ }, /*#__PURE__*/_react.default.createElement(_CustomCardTitle.default, args));
47
30
  };
48
31
  const Default = exports.Default = Template.bind({});
49
32
  Default.args = {
@@ -88,4 +71,15 @@ var _default = exports.default = {
88
71
  title: 'Components/BmCustomCardTitle',
89
72
  component: _CustomCardTitle.default,
90
73
  argTypes: Default.argTypes
91
- };
74
+ };
75
+ const Example = () => {
76
+ /*#__PURE__*/_react.default.createElement(_CustomCardTitle.default, {
77
+ icon: _CalendarTodayOutlined.default,
78
+ themeColor: "#33B1BA",
79
+ title: "Book Your Medical Appointment",
80
+ description: "Schedule a 30-minute consultation with our healthcare specialists",
81
+ variant: "booking",
82
+ withStripe: true
83
+ });
84
+ };
85
+ exports.Example = Example;
@@ -30,7 +30,7 @@ const SectionSummaryContainer = _styledComponents.default.div.withConfig({
30
30
  })(["display:flex;align-items:center;margin-bottom:1rem;@media (min-width:45.7143rem){margin-bottom:1.25rem;}"]);
31
31
  const IconBox = _styledComponents.default.div.withConfig({
32
32
  displayName: "InfoPanel__IconBox"
33
- })(["display:flex;align-items:center;justify-content:center;text-align:center;margin-right:0.5rem;padding:0.5rem;border-radius:714.2143rem;background-color:", ";svg{height:1.2rem;width:1.2rem;color:", ";@media (min-width:45.7143rem){height:1.5rem;width:1.5rem;}}"], _ref => {
33
+ })(["display:flex;align-items:center;justify-content:center;text-align:center;margin-right:0.5rem;padding:0.5rem;border-radius:714.2143rem;background-color:", ";svg{height:1.2rem;width:1.2rem;color:", ";@media (min-width:45.7143rem){height:1.4rem;width:1.4rem;}}"], _ref => {
34
34
  let {
35
35
  iconBackgroundColor,
36
36
  iconColor
@@ -9,6 +9,12 @@ Object.defineProperty(exports, "BmAccordion", {
9
9
  return _Accordion.default;
10
10
  }
11
11
  });
12
+ Object.defineProperty(exports, "BmAlertBox", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _Alert.default;
16
+ }
17
+ });
12
18
  Object.defineProperty(exports, "BmAlertIcon", {
13
19
  enumerable: true,
14
20
  get: function () {
@@ -472,5 +478,6 @@ var _Card = require("./Card_v2/Card");
472
478
  var _InfoPanel = _interopRequireDefault(require("./InfoPanel/InfoPanel"));
473
479
  var _BmSelector = _interopRequireDefault(require("./BmSelector/BmSelector"));
474
480
  var _CustomCardTitle = _interopRequireDefault(require("./BmCustomCardTitle/CustomCardTitle"));
481
+ var _Alert = _interopRequireDefault(require("./Alert/Alert"));
475
482
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
476
483
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "beem-component",
3
- "version": "2.1.5",
3
+ "version": "2.1.7",
4
4
  "private": false,
5
5
  "main": "dist/components/index.js",
6
6
  "scripts": {
package/src/App.js CHANGED
@@ -37,6 +37,7 @@ import {
37
37
  BmSelector,
38
38
  BmCustomCardTitle,
39
39
  } from './lib/components';
40
+ import AlertBox from './lib/components/Alert/Alert';
40
41
  // import ProgressIndicator from './lib/components/newProgress';
41
42
 
42
43
  // const datsa = JSON.stringify({
@@ -1011,6 +1012,20 @@ const Chat = () => {
1011
1012
  <GlobalStyle />
1012
1013
  <div style={{ display: 'flex', flexDirection: 'column', gap: '2rem' }}>
1013
1014
  <div>
1015
+ <BmInfoPanel.SectionSummary
1016
+ iconColor="#33B1BA"
1017
+ textColor="#fcba03"
1018
+ icon={CalendarTodayOutlinedIcon}
1019
+ title={formData.departmentName}
1020
+ subtitle="Department"
1021
+ // iconBackgroundColor
1022
+ />
1023
+ <AlertBox
1024
+ icon={AccessTimeIcon}
1025
+ themeColor="#DC2626"
1026
+ title="Payment Error"
1027
+ description="We couldn't process your payment. Please try again later or contact support."
1028
+ />
1014
1029
  <BmCustomCardTitle
1015
1030
  icon={CalendarTodayOutlinedIcon}
1016
1031
  themeColor="#33B1BA"
@@ -0,0 +1,111 @@
1
+ import React from 'react';
2
+ import styled from 'styled-components';
3
+
4
+ const hexToRgba = (hex, opacity = 0.6) => {
5
+ try {
6
+ const normalizedHex = hex?.replace('#', '');
7
+ if (
8
+ !normalizedHex ||
9
+ normalizedHex.length !== 6 ||
10
+ !/^[0-9a-fA-F]{6}$/.test(normalizedHex)
11
+ ) {
12
+ throw new Error('Invalid hex');
13
+ }
14
+
15
+ const r = parseInt(normalizedHex.slice(0, 2), 16);
16
+ const g = parseInt(normalizedHex.slice(2, 4), 16);
17
+ const b = parseInt(normalizedHex.slice(4, 6), 16);
18
+ return `rgba(${r}, ${g}, ${b}, ${opacity})`;
19
+ } catch (e) {
20
+ return `rgba(0, 0, 0, ${opacity})`;
21
+ }
22
+ };
23
+
24
+ const AlertWrapper = styled.div`
25
+ border: 1px solid ${({ themeColor }) => hexToRgba(themeColor, 0.2)};
26
+ background-color: ${({ themeColor }) => hexToRgba(themeColor, 0.05)};
27
+ border-radius: 0.5rem;
28
+ padding: 0.75rem;
29
+
30
+ @media (min-width: 640px) {
31
+ padding: 1rem;
32
+ }
33
+ `;
34
+
35
+ const Content = styled.div`
36
+ display: flex;
37
+ align-items: flex-start;
38
+ gap: 0.75rem;
39
+ `;
40
+
41
+ const IconContainer = styled.div`
42
+ background-color: ${({ themeColor }) => hexToRgba(themeColor, 0.1)};
43
+ border-radius: 9999px;
44
+ display: flex;
45
+ align-items: center;
46
+ justify-content: center;
47
+ width: 2rem;
48
+ height: 2rem;
49
+ margin-top: 0.125rem;
50
+
51
+ @media (min-width: 640px) {
52
+ width: 2.1rem;
53
+ height: 2.1rem;
54
+ }
55
+
56
+ svg {
57
+ width: 1rem;
58
+ height: 1rem;
59
+ color: ${({ themeColor }) => themeColor};
60
+
61
+ @media (min-width: 640px) {
62
+ width: 1.25rem;
63
+ height: 1.25rem;
64
+ }
65
+ }
66
+ `;
67
+
68
+ const TextContent = styled.div`
69
+ flex: 1;
70
+ `;
71
+
72
+ const Title = styled.h3`
73
+ font-weight: 500;
74
+ color: ${({ themeColor }) => themeColor};
75
+ font-size: 0.875rem;
76
+ margin-bottom: 0.25rem;
77
+ `;
78
+
79
+ const Description = styled.p`
80
+ color: #6b7280;
81
+ font-size: 0.75rem;
82
+
83
+ @media (min-width: 640px) {
84
+ font-size: 0.875rem;
85
+ }
86
+ `;
87
+
88
+ const BmAlertBox = ({
89
+ icon: Icon,
90
+ themeColor = '#EF4444',
91
+ title,
92
+ description,
93
+ }) => {
94
+ return (
95
+ <AlertWrapper themeColor={themeColor}>
96
+ <Content>
97
+ {Icon && (
98
+ <IconContainer themeColor={themeColor}>
99
+ <Icon />
100
+ </IconContainer>
101
+ )}
102
+ <TextContent>
103
+ <Title themeColor={themeColor}>{title}</Title>
104
+ <Description>{description}</Description>
105
+ </TextContent>
106
+ </Content>
107
+ </AlertWrapper>
108
+ );
109
+ };
110
+
111
+ export default BmAlertBox;
@@ -0,0 +1,66 @@
1
+ import React from 'react';
2
+ import AccessTimeIcon from '@mui/icons-material/AccessTime';
3
+ import PersonIcon from '@mui/icons-material/Person';
4
+ import CalendarTodayOutlinedIcon from '@mui/icons-material/CalendarTodayOutlined';
5
+ import BmAlertBox from './Alert';
6
+
7
+ const iconOptions = {
8
+ AccessTimeIcon,
9
+ PersonIcon,
10
+ CalendarTodayOutlinedIcon,
11
+ None: null,
12
+ };
13
+
14
+ const Template = (args) => {
15
+ return (
16
+ <div style={{ maxWidth: 500, margin: '2rem auto' }}>
17
+ <BmAlertBox {...args} />
18
+ </div>
19
+ );
20
+ };
21
+
22
+ export const Default = Template.bind({});
23
+ Default.args = {
24
+ icon: AccessTimeIcon,
25
+ themeColor: '#EF4444',
26
+ title: 'Submission Failed',
27
+ description:
28
+ 'There was an issue processing your request. Please try again later.',
29
+ };
30
+
31
+ Default.argTypes = {
32
+ icon: {
33
+ control: {
34
+ type: 'select',
35
+ labels: Object.keys(iconOptions),
36
+ },
37
+ options: Object.keys(iconOptions),
38
+ mapping: iconOptions,
39
+ },
40
+ themeColor: {
41
+ control: 'color',
42
+ },
43
+ title: {
44
+ control: 'text',
45
+ },
46
+ description: {
47
+ control: 'text',
48
+ },
49
+ };
50
+
51
+ export default {
52
+ title: 'Components/BmAlertBox',
53
+ component: BmAlertBox,
54
+ argTypes: Default.argTypes,
55
+ };
56
+
57
+ export const Example = () => {
58
+ return (
59
+ <BmAlertBox
60
+ icon={AccessTimeIcon}
61
+ themeColor="#DC2626"
62
+ title="Payment Error"
63
+ description="We couldn't process your payment. Please try again later or contact support."
64
+ />
65
+ );
66
+ };
@@ -16,33 +16,9 @@ const iconOptions = {
16
16
  };
17
17
 
18
18
  const Template = (args) => {
19
- const iconName = Object.entries(iconOptions).find(
20
- ([, comp]) => comp === args.icon
21
- )?.[0];
22
-
23
19
  return (
24
20
  <div style={{ maxWidth: 500, margin: '2rem auto' }}>
25
21
  <BmCustomCardTitle {...args} />
26
- <div style={{ marginTop: '2rem', fontSize: '0.875rem' }}>
27
- <strong>Example usage:</strong>
28
- <pre
29
- style={{
30
- background: '#f5f5f5',
31
- padding: '1rem',
32
- borderRadius: 8,
33
- overflowX: 'auto',
34
- }}
35
- >
36
- {`<BmCustomCardTitle
37
- icon={${iconName}}
38
- themeColor="${args.themeColor}"
39
- title="${args.title}"
40
- description="${args.description}"
41
- variant="${args.variant}"
42
- withStripe={${args.withStripe}}
43
- />`}
44
- </pre>
45
- </div>
46
22
  </div>
47
23
  );
48
24
  };
@@ -94,3 +70,14 @@ export default {
94
70
  component: BmCustomCardTitle,
95
71
  argTypes: Default.argTypes,
96
72
  };
73
+
74
+ export const Example = () => {
75
+ <BmCustomCardTitle
76
+ icon={CalendarTodayOutlinedIcon}
77
+ themeColor="#33B1BA"
78
+ title="Book Your Medical Appointment"
79
+ description="Schedule a 30-minute consultation with our healthcare specialists"
80
+ variant="booking"
81
+ withStripe
82
+ />;
83
+ };
@@ -53,8 +53,8 @@ const IconBox = styled.div`
53
53
  color: ${({ iconColor }) => iconColor || '#00000'};
54
54
 
55
55
  @media (min-width: 45.7143rem) {
56
- height: 1.5rem;
57
- width: 1.5rem;
56
+ height: 1.4rem;
57
+ width: 1.4rem;
58
58
  }
59
59
  }
60
60
  `;
@@ -82,6 +82,7 @@ import { BmCardv2 } from './Card_v2/Card';
82
82
  import BmInfoPanel from './InfoPanel/InfoPanel';
83
83
  import BmSelector from './BmSelector/BmSelector';
84
84
  import BmCustomCardTitle from './BmCustomCardTitle/CustomCardTitle';
85
+ import BmAlertBox from './Alert/Alert';
85
86
 
86
87
  export {
87
88
  BmAccordion,
@@ -161,4 +162,5 @@ export {
161
162
  BmProgressIndicator,
162
163
  BmSelector,
163
164
  BmCustomCardTitle,
165
+ BmAlertBox,
164
166
  };