beem-component 2.1.5 → 2.1.6
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.
- package/dist/components/Alert/Alert.js +83 -0
- package/dist/components/Alert/Alert.stories.js +66 -0
- package/dist/components/BmCustomCardTitle/CustomCardTitle.stories.js +14 -20
- package/dist/components/InfoPanel/InfoPanel.js +1 -1
- package/package.json +1 -1
- package/src/App.js +15 -0
- package/src/lib/components/Alert/Alert.js +111 -0
- package/src/lib/components/Alert/Alert.stories.jsx +66 -0
- package/src/lib/components/BmCustomCardTitle/CustomCardTitle.stories.jsx +11 -24
- package/src/lib/components/InfoPanel/InfoPanel.js +2 -2
|
@@ -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 AlertBox = _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 = AlertBox;
|
|
@@ -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/AlertBox',
|
|
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)
|
|
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.
|
|
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
|
package/package.json
CHANGED
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 AlertBox = ({
|
|
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 AlertBox;
|
|
@@ -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 AlertBox 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
|
+
<AlertBox {...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/AlertBox',
|
|
53
|
+
component: AlertBox,
|
|
54
|
+
argTypes: Default.argTypes,
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
export const Example = () => {
|
|
58
|
+
return (
|
|
59
|
+
<AlertBox
|
|
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
|
+
};
|