@occmundial/occ-atomic 3.0.0-beta.2 → 3.0.0-beta.21

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.
Files changed (44) hide show
  1. package/CHANGELOG.md +185 -0
  2. package/build/Banner/Banner.js +30 -40
  3. package/build/Banner/Banner.test.js +64 -17
  4. package/build/Banner/__snapshots__/Banner.test.js.snap +0 -28
  5. package/build/Banner/index.js +1 -6
  6. package/build/Button/__snapshots__/Button.test.js.snap +18 -20
  7. package/build/Button/styles.js +6 -8
  8. package/build/Checkbox/Checkbox.js +48 -3
  9. package/build/Checkbox/__snapshots__/Checkbox.test.js.snap +81 -49
  10. package/build/Checkbox/styles.js +91 -48
  11. package/build/Pill/Choice/Choice.js +73 -81
  12. package/build/Pill/Choice/styles.js +64 -20
  13. package/build/Pill/Group/Group.js +5 -2
  14. package/build/Pill/Group/styles.js +31 -31
  15. package/build/Pill/Pill.js +4 -3
  16. package/build/Pill/Stack/Stack.js +7 -12
  17. package/build/Pill/Stack/styles.js +43 -33
  18. package/build/Pill/__snapshots__/Pill.test.js.snap +14 -24
  19. package/build/Pill/styles.js +22 -27
  20. package/build/Radio/Radio.js +42 -6
  21. package/build/Radio/__snapshots__/Radio.test.js.snap +81 -80
  22. package/build/Radio/styles.js +93 -85
  23. package/build/SlideToggle/SlideToggle.js +38 -6
  24. package/build/SlideToggle/SlideToggle.test.js +2 -2
  25. package/build/SlideToggle/__snapshots__/SlideToggle.test.js.snap +53 -37
  26. package/build/SlideToggle/styles.js +65 -45
  27. package/build/Text/Text.js +4 -2
  28. package/build/TextField/TextField.js +7 -6
  29. package/build/TextField/__snapshots__/TextField.test.js.snap +3 -0
  30. package/build/TextField/styles.js +3 -0
  31. package/build/Tip/Tip.js +52 -95
  32. package/build/Tip/Tip.test.js +29 -6
  33. package/build/Tip/TipText/index.js +32 -0
  34. package/build/Tip/__snapshots__/Tip.test.js.snap +85 -15
  35. package/build/Tip/styles.js +80 -31
  36. package/build/Toaster/Toast/Toast.js +69 -64
  37. package/build/Toaster/Toast/styles.js +72 -46
  38. package/build/Toaster/Toaster.js +3 -2
  39. package/build/Toaster/Toaster.test.js +5 -2
  40. package/build/Toaster/__snapshots__/Toaster.test.js.snap +1 -1
  41. package/build/Toaster/styles.js +3 -3
  42. package/build/tokens/colors.json +3 -3
  43. package/package.json +4 -1
  44. package/build/Banner/styles.js +0 -41
@@ -5,75 +5,91 @@ exports[`SlideToggle matches the snapshot 1`] = `ShallowWrapper {}`;
5
5
  exports[`SlideToggle styles matches the snapshot 1`] = `
6
6
  Object {
7
7
  "checked": Object {
8
- "& $icon": Object {
9
- "background": "url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJCQkgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgoJCTxwYXRoIGZpbGw9IiMwMDZFRkYiIGQ9Ik0xOC4zLDcuM2wxLjQsMS40bC04LjcsOWMtMC40LDAuNC0xLDAuNC0xLjQsMC4xbC00LjMtMy42bDEuMy0xLjVsMy42LDNDMTAuMiwxNS42LDE4LjMsNy4zLDE4LjMsNy4zeiIvPgoJCTwvc3ZnPg==)",
10
- },
11
8
  "& $slider": Object {
12
- "left": 16,
9
+ "left": "calc(100% - 28px)",
10
+ },
11
+ "& $switchBg": Object {
12
+ "background": "#0059CD",
13
13
  },
14
- "background": "#0059CD",
15
14
  },
16
15
  "cont": Object {
17
- "&:focus $switch$checked": Object {
18
- "background": "#0059CD",
19
- "boxShadow": "0 0 0 8px rgba(0,110,255,0.3)",
16
+ "&:active $switch $switchBg": Object {
17
+ "boxShadow": "inset 0 0 0 2px rgba(255,255,255,0.2)",
20
18
  },
21
- "&:focus $switch:not($checked)": Object {
22
- "background": "#E9EEF8",
19
+ "&:focus-visible $switch": Object {
23
20
  "boxShadow": "0 0 0 8px hsl(221 91.2% 35.7% / 0.3)",
24
21
  },
25
- "&:hover $switch$checked, &:active $switch$checked": Object {
26
- "background": "#083CAE",
22
+ "&:focus-visible $switch$checked": Object {
23
+ "boxShadow": "0 0 0 8px rgba(0,110,255,0.3)",
27
24
  },
28
- "&:hover $switch:not($checked), &:active $switch:not($checked)": Object {
25
+ "&:hover $switch $switchBg, &:active $switch $switchBg": Object {
29
26
  "background": "#CAD5EE",
30
27
  },
31
- "alignItems": "start",
28
+ "&:hover $switch$checked $switchBg, &:active $switch$checked $switchBg": Object {
29
+ "background": "#083CAE",
30
+ },
31
+ "alignItems": "flex-start",
32
32
  "boxSizing": "border-box",
33
33
  "cursor": "pointer",
34
34
  "display": "flex",
35
35
  "outline": 0,
36
- "paddingBottom": "8px",
37
- "paddingTop": "8px",
38
36
  },
39
37
  "disabled": Object {
40
- "& $icon": Object {
41
- "background": "url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgogICAgICAgIAkgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgIDxwYXRoIGZpbGw9IiNEM0Q0REMiIGQ9Ik0xMi4xLDEwLjhsNC42LTQuNkwxOCw3LjRMMTMuNCwxMmw0LjYsNC42TDE2LjcsMThsLTQuNi00LjZMNy40LDE4bC0xLjMtMS4zbDQuNi00LjZMNi4yLDcuNGwxLjMtMS4zTDEyLjEsMTAuOHoiLz4KICAgICAgICA8L3N2Zz4=)",
42
- },
43
- "& $switch": Object {
38
+ "& $switch $switchBg": Object {
44
39
  "background": "#EDEDF1",
40
+ "boxShadow": "inset 0 0 0 1px #D3D4DC",
45
41
  },
46
42
  "pointerEvents": "none",
47
43
  },
48
44
  "icon": Object {
49
- "background": "url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgogICAgICAgIAkgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgogICAgICAgIDxwYXRoIGZpbGw9IiM4REE1REEiIGQ9Ik0xMi4xLDEwLjhsNC42LTQuNkwxOCw3LjRMMTMuNCwxMmw0LjYsNC42TDE2LjcsMThsLTQuNi00LjZMNy40LDE4bC0xLjMtMS4zbDQuNi00LjZMNi4yLDcuNGwxLjMtMS4zTDEyLjEsMTAuOHoiLz4KICAgICAgICA8L3N2Zz4=)",
50
- "display": "block",
51
- "height": "100%",
52
- "transition": "0.3s all",
53
- "width": "100%",
45
+ "margin": 4,
54
46
  },
55
47
  "label": Object {
56
- "marginLeft": "8px",
48
+ "cursor": "pointer",
49
+ "marginLeft": "12px",
50
+ },
51
+ "labelWrap": Object {
52
+ "alignItems": "center",
53
+ "display": "flex",
54
+ "minHeight": 48,
55
+ "overflow": "hidden",
56
+ "paddingBottom": "4px",
57
+ "paddingTop": "4px",
57
58
  },
58
59
  "slider": Object {
59
60
  "background": "#fff",
60
61
  "borderRadius": "50%",
61
- "cursor": "pointer",
62
- "height": 20,
63
- "left": 2,
62
+ "height": 24,
63
+ "left": 4,
64
64
  "position": "absolute",
65
- "top": 2,
66
- "transition": "0.3s all",
67
- "width": 20,
65
+ "top": "50%",
66
+ "transform": "translateY(-50%)",
67
+ "transition": "all cubic-bezier(0.25,0.46,0.45,0.94) 0.2s",
68
+ "width": 24,
68
69
  },
69
70
  "switch": Object {
70
- "background": "#E9EEF8",
71
- "borderRadius": 34,
71
+ "borderRadius": "9999px",
72
72
  "display": "inline-block",
73
- "height": "24px",
73
+ "flexShrink": 0,
74
+ "height": 32,
74
75
  "position": "relative",
75
- "transition": "0.3s all",
76
- "width": 38,
76
+ "transition": "all cubic-bezier(0.25,0.46,0.45,0.94) 0.2s",
77
+ "width": 52,
78
+ },
79
+ "switchBg": Object {
80
+ "background": "#E9EEF8",
81
+ "borderRadius": "9999px",
82
+ "boxShadow": "inset 0 0 0 1px rgba(255,255,255,0.2)",
83
+ "height": 32,
84
+ "transition": "all cubic-bezier(0.25,0.46,0.45,0.94) 0.2s",
85
+ "width": 52,
86
+ },
87
+ "switchWrap": Object {
88
+ "alignItems": "center",
89
+ "display": "flex",
90
+ "flexShrink": 0,
91
+ "height": 48,
92
+ "width": 52,
77
93
  },
78
94
  }
79
95
  `;
@@ -5,89 +5,109 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports["default"] = void 0;
7
7
 
8
- var _icons = _interopRequireDefault(require("../subatomic/icons"));
9
-
10
8
  var _spacing = _interopRequireDefault(require("../tokens/spacing.json"));
11
9
 
12
10
  var _colors = _interopRequireDefault(require("../tokens/colors.json"));
13
11
 
14
12
  var _shadows = _interopRequireDefault(require("../tokens/shadows.json"));
15
13
 
14
+ var _borderRadius = _interopRequireDefault(require("../tokens/borderRadius.json"));
15
+
16
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
17
17
 
18
- var toggle = _colors["default"]["switch"],
19
- icon = _colors["default"].icon;
18
+ var toggle = _colors["default"]["switch"];
19
+ var transition = 'all cubic-bezier(0.25,0.46,0.45,0.94) 0.2s';
20
+ var contentHeight = 48;
21
+ var toggleWidth = 52;
22
+ var toggleHeight = 32;
23
+ var sliderSize = 24;
20
24
  var _default = {
21
25
  cont: {
22
- paddingTop: _spacing["default"]['size-2'],
23
- paddingBottom: _spacing["default"]['size-2'],
24
26
  boxSizing: 'border-box',
25
27
  display: 'flex',
26
- alignItems: 'start',
28
+ alignItems: 'flex-start',
27
29
  cursor: 'pointer',
28
30
  outline: 0,
29
- '&:hover $switch$checked, &:active $switch$checked': {
30
- background: toggle['selected']['bg']['hover']
31
+ '&:hover $switch $switchBg, &:active $switch $switchBg': {
32
+ background: toggle.unselected.bg.hover
31
33
  },
32
- '&:focus $switch$checked': {
33
- boxShadow: _shadows["default"]['focus-bright-blue'],
34
- background: toggle['selected']['bg']['default']
34
+ '&:focus-visible $switch': {
35
+ boxShadow: _shadows["default"]['focus-indigo']
35
36
  },
36
- '&:hover $switch:not($checked), &:active $switch:not($checked)': {
37
- background: toggle['unselected']['bg']['hover']
37
+ '&:hover $switch$checked $switchBg, &:active $switch$checked $switchBg': {
38
+ background: toggle.selected.bg.hover
38
39
  },
39
- '&:focus $switch:not($checked)': {
40
- background: toggle['unselected']['bg']['default'],
41
- boxShadow: _shadows["default"]['focus-indigo']
40
+ '&:active $switch $switchBg': {
41
+ boxShadow: "inset 0 0 0 2px ".concat(_colors["default"]["switch"].border["default"])
42
+ },
43
+ '&:focus-visible $switch$checked': {
44
+ boxShadow: _shadows["default"]['focus-bright-blue']
42
45
  }
43
46
  },
47
+ switchWrap: {
48
+ width: toggleWidth,
49
+ height: contentHeight,
50
+ display: 'flex',
51
+ alignItems: 'center',
52
+ flexShrink: 0
53
+ },
44
54
  "switch": {
45
55
  position: 'relative',
46
56
  display: 'inline-block',
47
- width: 38,
48
- height: _spacing["default"]['size-5'],
49
- background: toggle['unselected']['bg']['default'],
50
- borderRadius: 34,
51
- transition: '0.3s all'
57
+ width: toggleWidth,
58
+ height: toggleHeight,
59
+ flexShrink: 0,
60
+ borderRadius: _borderRadius["default"]['br-full'],
61
+ transition: transition
62
+ },
63
+ switchBg: {
64
+ width: toggleWidth,
65
+ height: toggleHeight,
66
+ background: toggle.unselected.bg["default"],
67
+ boxShadow: "inset 0 0 0 1px ".concat(_colors["default"]["switch"].border["default"]),
68
+ borderRadius: _borderRadius["default"]['br-full'],
69
+ transition: transition
52
70
  },
53
71
  checked: {
54
- background: toggle['selected']['bg']['default'],
55
- '& $slider': {
56
- left: 16
72
+ '& $switchBg': {
73
+ background: toggle.selected.bg["default"]
57
74
  },
58
- '& $icon': {
59
- background: _icons["default"].base(_icons["default"].check.icon([icon.brand.bold]))
75
+ '& $slider': {
76
+ left: "calc(100% - 28px)"
60
77
  }
61
78
  },
62
79
  slider: {
63
80
  position: 'absolute',
64
- cursor: 'pointer',
65
- top: 2,
66
- left: 2,
67
- width: 20,
68
- height: 20,
81
+ top: '50%',
82
+ transform: 'translateY(-50%)',
83
+ left: 4,
84
+ width: sliderSize,
85
+ height: sliderSize,
69
86
  borderRadius: '50%',
70
- background: toggle['bg']['default'],
71
- transition: '0.3s all'
87
+ background: toggle.bg["default"],
88
+ transition: transition
72
89
  },
73
90
  icon: {
74
- width: '100%',
75
- height: '100%',
76
- display: 'block',
77
- background: _icons["default"].base(_icons["default"].cross.icon([icon.brand.disabled])),
78
- transition: '0.3s all'
91
+ margin: 4
79
92
  },
80
93
  disabled: {
81
- '& $switch': {
82
- background: toggle['bg']['disabled']
83
- },
84
- '& $icon': {
85
- background: _icons["default"].base(_icons["default"].cross.icon([icon["default"].disabled]))
94
+ '& $switch $switchBg': {
95
+ boxShadow: "inset 0 0 0 1px ".concat(_colors["default"]["switch"].border.disabled),
96
+ background: toggle.bg.disabled
86
97
  },
87
98
  pointerEvents: 'none'
88
99
  },
100
+ labelWrap: {
101
+ minHeight: contentHeight,
102
+ display: 'flex',
103
+ alignItems: 'center',
104
+ paddingTop: _spacing["default"]['size-1'],
105
+ paddingBottom: _spacing["default"]['size-1'],
106
+ overflow: 'hidden'
107
+ },
89
108
  label: {
90
- marginLeft: _spacing["default"]['size-2']
109
+ marginLeft: _spacing["default"]['size-3'],
110
+ cursor: 'pointer'
91
111
  }
92
112
  };
93
113
  exports["default"] = _default;
@@ -194,8 +194,10 @@ var Text = /*#__PURE__*/function (_Component) {
194
194
  var _this$props2 = this.props,
195
195
  classes = _this$props2.classes,
196
196
  mid = _this$props2.mid,
197
- low = _this$props2.low;
198
- if (low) return classes.corpDisabled;else if (mid) return classes.corpSecondary;else return classes.corpPrimary;
197
+ low = _this$props2.low,
198
+ corpDisabled = _this$props2.corpDisabled,
199
+ corpSecondary = _this$props2.corpSecondary;
200
+ if (low || corpDisabled) return classes.corpDisabled;else if (mid | corpSecondary) return classes.corpSecondary;else return classes.corpPrimary;
199
201
  }
200
202
  }, {
201
203
  key: "getColor",
@@ -338,7 +338,9 @@ var TextField = /*#__PURE__*/function (_React$Component) {
338
338
  className: classes.rightButton
339
339
  });
340
340
  } else if (type == 'select') {
341
- element = /*#__PURE__*/_react["default"].createElement(InputType, commonProps, /*#__PURE__*/_react["default"].createElement("option", {
341
+ element = /*#__PURE__*/_react["default"].createElement(InputType, _extends({}, commonProps, {
342
+ className: "".concat(commonProps.className, " ").concat(classes.pointer)
343
+ }), /*#__PURE__*/_react["default"].createElement("option", {
342
344
  value: "",
343
345
  disabled: true,
344
346
  hidden: true
@@ -410,14 +412,13 @@ var TextField = /*#__PURE__*/function (_React$Component) {
410
412
  height: 24,
411
413
  className: classes.icon,
412
414
  colors: [this.setIconColor()]
413
- }), type == 'select' && /*#__PURE__*/_react["default"].createElement("div", {
414
- className: classes.selectIcon
415
- }, /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
415
+ }), type == 'select' && /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
416
416
  iconName: "chevron-down",
417
417
  width: 24,
418
418
  height: 24,
419
- colors: disabled ? [_colors["default"].icon["default"].disabled] : [_colors["default"].icon["default"]["default"]]
420
- })), element, type == 'password' && passIcon, value && clear && /*#__PURE__*/_react["default"].createElement(_Button["default"], _extends({
419
+ colors: disabled ? [_colors["default"].icon["default"].disabled] : [_colors["default"].icon["default"]["default"]],
420
+ className: classes.selectIcon
421
+ }), element, type == 'password' && passIcon, value && clear && /*#__PURE__*/_react["default"].createElement(_Button["default"], _extends({
421
422
  icon: "x",
422
423
  theme: "ghostGrey",
423
424
  size: "md",
@@ -115,6 +115,9 @@ Object {
115
115
  "color": "#080D39",
116
116
  "font": "400 14px/1.5 'OccText', sans-serif",
117
117
  },
118
+ "pointer": Object {
119
+ "cursor": "pointer",
120
+ },
118
121
  "rightButton": Object {
119
122
  "position": "absolute",
120
123
  "right": "4px",
@@ -191,6 +191,9 @@ var _default = {
191
191
  display: 'flex',
192
192
  justifyContent: 'space-between',
193
193
  marginTop: _spacing["default"]['size-2']
194
+ },
195
+ pointer: {
196
+ cursor: 'pointer'
194
197
  }
195
198
  };
196
199
  exports["default"] = _default;
package/build/Tip/Tip.js CHANGED
@@ -1,39 +1,28 @@
1
1
  "use strict";
2
2
 
3
- function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
8
6
  exports["default"] = void 0;
9
7
 
10
- var _react = _interopRequireWildcard(require("react"));
8
+ var _react = _interopRequireDefault(require("react"));
11
9
 
12
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
13
11
 
14
- var _isString = _interopRequireDefault(require("lodash/isString"));
15
-
16
- var _flatten = _interopRequireDefault(require("lodash/flatten"));
17
-
18
12
  var _Flexbox = _interopRequireDefault(require("../Flexbox"));
19
13
 
20
- var _Text = _interopRequireDefault(require("../Text"));
21
-
22
14
  var _Icon = _interopRequireDefault(require("../Icon"));
23
15
 
24
- var _colors = _interopRequireDefault(require("../subatomic/colors"));
16
+ var _Button = _interopRequireDefault(require("../Button"));
25
17
 
26
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
18
+ var _TipText = _interopRequireDefault(require("./TipText"));
27
19
 
28
- 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); }
20
+ var _colors = _interopRequireDefault(require("../tokens/colors.json"));
29
21
 
30
- 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; }
22
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
31
23
 
32
24
  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); }
33
25
 
34
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
35
-
36
- var boldRegex = /\*(.*?)\*/g;
37
26
  var icons = {
38
27
  info: 'info-circle',
39
28
  warning: 'alert',
@@ -42,6 +31,13 @@ var icons = {
42
31
  promote: null
43
32
  };
44
33
  var PROMOTE = 'promote';
34
+ var colorTextClasses = {
35
+ info: 'textInfo',
36
+ promote: 'textPromote',
37
+ warning: 'textWarning',
38
+ success: 'textSuccess',
39
+ error: 'textError'
40
+ };
45
41
  /** Tip component with different themes (info, warning, success & error). You can pass a string or a react element as the children prop, but the bold regex will only work with strings. */
46
42
 
47
43
  var Tip = function Tip(_ref) {
@@ -51,65 +47,13 @@ var Tip = function Tip(_ref) {
51
47
  classes = _ref.classes,
52
48
  icon = _ref.icon,
53
49
  theme = _ref.theme,
54
- noBorderRadius = _ref.noBorderRadius,
55
- center = _ref.center,
50
+ banner = _ref.banner,
56
51
  onClose = _ref.onClose,
57
- spacedClose = _ref.spacedClose,
58
52
  children = _ref.children,
59
- cta = _ref.cta;
60
-
61
- var replaceStringToBold = function replaceStringToBold() {
62
- if (children === '') return children;
63
- var result = children.split(boldRegex);
64
- if (result.length === 1) return children;
65
-
66
- for (var i = 1, length = result.length; i < length; i += 2) {
67
- result[i] = boldMatch(result[i], i, theme);
68
- }
69
-
70
- return result;
71
- };
72
-
73
- var getTheme = function getTheme() {
74
- if (theme === PROMOTE) return {
75
- white: true
76
- };
77
- return _defineProperty({}, theme, true);
78
- };
79
-
80
- var boldMatch = function boldMatch(match, i) {
81
- return /*#__PURE__*/_react["default"].createElement(_Text["default"], _extends({
82
- key: i,
83
- strong: true,
84
- tag: "b"
85
- }, getTheme()), match);
86
- };
87
-
88
- var getIconName = function getIconName() {
89
- return icons[theme];
90
- };
91
-
92
- var renderText = function renderText() {
93
- var textArray;
94
- if (!Array.isArray(children)) textArray = [children];
95
- var text = (0, _flatten["default"])(textArray.map(function (x) {
96
- return (0, _isString["default"])(x) ? replaceStringToBold(x, theme) : x;
97
- }));
98
-
99
- if (cta) {
100
- text.push( /*#__PURE__*/_react["default"].createElement(_react.Fragment, null, ' ', /*#__PURE__*/_react["default"].createElement("a", {
101
- className: classes.cta,
102
- href: cta.href,
103
- target: cta.target,
104
- onClick: cta.onClick
105
- }, /*#__PURE__*/_react["default"].createElement(_Text["default"], _extends({
106
- tag: "span"
107
- }, getTheme()), cta.text))));
108
- }
109
-
110
- return text;
111
- };
112
-
53
+ cta = _ref.cta,
54
+ _ref$size = _ref.size,
55
+ size = _ref$size === void 0 ? 'large' : _ref$size,
56
+ testId = _ref.testId;
113
57
  return /*#__PURE__*/_react["default"].createElement("div", {
114
58
  id: id,
115
59
  className: className,
@@ -117,27 +61,39 @@ var Tip = function Tip(_ref) {
117
61
  }, /*#__PURE__*/_react["default"].createElement(_Flexbox["default"], {
118
62
  justifyContent: "start",
119
63
  display: "flex",
120
- className: "".concat(classes.container, " ").concat(classes[theme]).concat(noBorderRadius ? " ".concat(classes.noBorderRadius) : '')
64
+ className: "".concat(classes.container, " ").concat(classes[theme]).concat(banner ? " ".concat(classes.noBorderRadius) : '')
121
65
  }, /*#__PURE__*/_react["default"].createElement(_Flexbox["default"], {
122
66
  display: "flex",
123
67
  flex: "1",
124
- justifyContent: center ? 'center' : null,
125
- alignItems: "center"
126
- }, icon && /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
127
- iconName: getIconName(),
68
+ alignItems: "stretch"
69
+ }, icon && theme !== PROMOTE && /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
70
+ iconName: icons[theme],
128
71
  className: classes.icon,
129
- colors: [_colors["default"]["".concat(theme, "Text")]]
130
- }), /*#__PURE__*/_react["default"].createElement("div", {
131
- className: icon ? classes.textWithIcon : classes.text
132
- }, /*#__PURE__*/_react["default"].createElement(_Text["default"], _extends({
133
- standard: true,
134
- tag: "div"
135
- }, getTheme()), renderText()))), onClose && /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
136
- iconName: "cross",
72
+ colors: [theme === 'info' ? _colors["default"].icon.brand["default"] : _colors["default"].icon[theme]]
73
+ }), /*#__PURE__*/_react["default"].createElement(_Flexbox["default"], {
74
+ display: "flex",
75
+ direction: size === 'small' ? 'col' : 'row',
76
+ justifyContent: banner ? 'center' : 'start',
77
+ className: "".concat(classes.textContainer).concat(banner ? " ".concat(classes.maxWidth) : '')
78
+ }, /*#__PURE__*/_react["default"].createElement(_TipText["default"], {
79
+ classes: "".concat(classes.normalText, " ").concat(classes[colorTextClasses[theme]]).concat(!banner ? " ".concat(classes.growText) : ''),
80
+ text: children
81
+ }), cta && /*#__PURE__*/_react["default"].createElement("a", _extends({
82
+ className: "".concat(classes.cta, " ").concat(classes[colorTextClasses[theme]]).concat(size === 'large' && banner ? " ".concat(classes.ctaBanner) : size === 'large' ? " ".concat(classes.ctaAlert) : ''),
83
+ href: cta.href,
84
+ target: cta.target,
85
+ onClick: cta.onClick
86
+ }, testId && {
87
+ 'data-testid': "".concat(testId, "__link")
88
+ }), cta.text))), onClose && /*#__PURE__*/_react["default"].createElement(_Button["default"], _extends({
137
89
  onClick: onClose,
138
- colors: [theme === PROMOTE ? _colors["default"].bgWhite : _colors["default"]["".concat(theme, "Text")]],
139
- className: spacedClose ? classes.spacedClose : null
140
- })));
90
+ size: "md",
91
+ className: size === 'small' ? classes.closeIconSmallMargin : classes.closeIconMargin,
92
+ icon: "x",
93
+ theme: theme === PROMOTE ? 'ghostWhite' : 'ghostGrey'
94
+ }, testId && {
95
+ testId: "".concat(testId, "__close-icon")
96
+ }))));
141
97
  };
142
98
 
143
99
  Tip.defaultProps = {
@@ -151,6 +107,7 @@ Tip.propTypes = {
151
107
 
152
108
  /** Text of the tip. If you put text between two * characters that text will be displayed as bold. */
153
109
  children: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].node]).isRequired,
110
+ size: _propTypes["default"].oneOf(['large', 'small']),
154
111
 
155
112
  /** Call to action. Appended after the children's text. */
156
113
  cta: _propTypes["default"].shape({
@@ -163,11 +120,8 @@ Tip.propTypes = {
163
120
  /** Boolean to show an icon. */
164
121
  icon: _propTypes["default"].bool,
165
122
 
166
- /** Cancel the default border radius. */
167
- noBorderRadius: _propTypes["default"].bool,
168
-
169
- /** Center Tip content. */
170
- center: _propTypes["default"].bool,
123
+ /** Sets content centered and remove border radius. */
124
+ banner: _propTypes["default"].bool,
171
125
 
172
126
  /** Function to call on click of the x icon. */
173
127
  onClose: _propTypes["default"].func,
@@ -176,7 +130,10 @@ Tip.propTypes = {
176
130
  spacedClose: _propTypes["default"].bool,
177
131
  id: _propTypes["default"].string,
178
132
  className: _propTypes["default"].string,
179
- style: _propTypes["default"].object
133
+ style: _propTypes["default"].object,
134
+
135
+ /** The testId property adds the data attribute data-testid to the main element and should be used for testing only. */
136
+ testId: _propTypes["default"].string
180
137
  };
181
138
  var _default = Tip;
182
139
  exports["default"] = _default;
@@ -43,19 +43,42 @@ describe("Tip", function () {
43
43
  var wrapper = (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_Tip["default"], {
44
44
  classes: classes,
45
45
  icon: true
46
- }));
46
+ }, "Alert text"));
47
47
  expect(wrapper.find('.icon').length).toBe(1);
48
48
  });
49
- it('has bold text', function () {
49
+ it('has a close icon button', function () {
50
50
  var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_Tip["default"], {
51
- classes: classes
52
- }, "Text with *bold* text"));
53
- expect(wrapper.find('b').length).toBe(1);
51
+ classes: classes,
52
+ icon: true,
53
+ onClose: function onClose() {
54
+ return console.log('Close');
55
+ },
56
+ testId: "alert-test"
57
+ }, "Tip text "));
58
+ expect(wrapper.find({
59
+ "data-testid": 'alert-test__close-icon'
60
+ }).length).toBe(1);
61
+ });
62
+ it('has a link', function () {
63
+ var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_Tip["default"], {
64
+ classes: classes,
65
+ icon: true,
66
+ cta: {
67
+ text: 'Click here.',
68
+ onClick: function onClick() {
69
+ return alert('CTA clicked!');
70
+ }
71
+ },
72
+ testId: "alert-test"
73
+ }, "Tip text "));
74
+ expect(wrapper.find({
75
+ "data-testid": 'alert-test__link'
76
+ }).length).toBe(1);
54
77
  });
55
78
  });
56
79
  describe("TipJSS", function () {
57
80
  it('matches the snapshot', function () {
58
- var wrapper = (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_index["default"], null));
81
+ var wrapper = (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_index["default"], null, "Tip text "));
59
82
  expect(wrapper).toMatchSnapshot();
60
83
  });
61
84
  });
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
13
+
14
+ var boldRegex = /\*(.*?)\*/g;
15
+
16
+ var TipText = function TipText(_ref) {
17
+ var classes = _ref.classes,
18
+ text = _ref.text;
19
+ if (text === '' || typeof text !== 'string') return text;
20
+ return /*#__PURE__*/_react["default"].createElement("p", {
21
+ className: classes
22
+ }, text.replace(boldRegex, function (_, txt) {
23
+ return txt;
24
+ }));
25
+ };
26
+
27
+ TipText.propTypes = {
28
+ classes: _propTypes["default"].string.isRequired,
29
+ text: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].node]).isRequired
30
+ };
31
+ var _default = TipText;
32
+ exports["default"] = _default;