@pareto-engineering/design-system 2.0.0-alpha.10 → 2.0.0-alpha.14

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/dist/cjs/a/BackgroundGradient/BackgroundGradient.js +77 -0
  2. package/dist/cjs/a/BackgroundGradient/index.js +15 -0
  3. package/dist/cjs/a/BackgroundGradient/styles.scss +16 -0
  4. package/dist/cjs/a/Conversation/Conversation.js +15 -8
  5. package/dist/cjs/a/Conversation/common/Message/Message.js +33 -6
  6. package/dist/cjs/a/Conversation/styles.scss +139 -32
  7. package/dist/cjs/a/Shapes/Shapes.js +9 -1
  8. package/dist/cjs/a/Shapes/styles.scss +35 -1
  9. package/dist/cjs/a/index.js +9 -1
  10. package/dist/cjs/b/Button/Button.js +10 -4
  11. package/dist/cjs/b/Button/styles.scss +28 -8
  12. package/dist/cjs/b/Page/common/Section/Section.js +17 -3
  13. package/dist/es/a/BackgroundGradient/BackgroundGradient.js +55 -0
  14. package/dist/es/a/BackgroundGradient/index.js +2 -0
  15. package/dist/es/a/BackgroundGradient/styles.scss +16 -0
  16. package/dist/es/a/Conversation/Conversation.js +15 -8
  17. package/dist/es/a/Conversation/common/Message/Message.js +33 -6
  18. package/dist/es/a/Conversation/styles.scss +139 -32
  19. package/dist/es/a/Shapes/Shapes.js +9 -1
  20. package/dist/es/a/Shapes/styles.scss +35 -1
  21. package/dist/es/a/index.js +2 -1
  22. package/dist/es/b/Button/Button.js +8 -2
  23. package/dist/es/b/Button/styles.scss +28 -8
  24. package/dist/es/b/Page/common/Section/Section.js +17 -3
  25. package/package.json +3 -3
  26. package/src/__snapshots__/Storyshots.test.js.snap +1632 -162
  27. package/src/local.scss +1 -0
  28. package/src/stories/a/BackgroundGradient.stories.jsx +38 -0
  29. package/src/stories/a/Conversation.stories.jsx +78 -1
  30. package/src/stories/a/Shapes.stories.jsx +18 -0
  31. package/src/stories/b/Button.stories.jsx +22 -0
  32. package/src/stories/b/Page.stories.jsx +25 -1
  33. package/src/ui/a/BackgroundGradient/BackgroundGradient.jsx +76 -0
  34. package/src/ui/a/BackgroundGradient/index.js +2 -0
  35. package/src/ui/a/BackgroundGradient/styles.scss +16 -0
  36. package/src/ui/a/Conversation/Conversation.jsx +15 -7
  37. package/src/ui/a/Conversation/common/Message/Message.jsx +40 -7
  38. package/src/ui/a/Conversation/styles.scss +139 -32
  39. package/src/ui/a/Shapes/Shapes.jsx +10 -0
  40. package/src/ui/a/Shapes/styles.scss +35 -1
  41. package/src/ui/a/index.js +1 -0
  42. package/src/ui/b/Button/Button.jsx +7 -0
  43. package/src/ui/b/Button/styles.scss +28 -8
  44. package/src/ui/b/Page/common/Section/Section.jsx +19 -2
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var React = _interopRequireWildcard(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _bem = _interopRequireDefault(require("@pareto-engineering/bem"));
13
+
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+
16
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
17
+
18
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
19
+
20
+ 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; }
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
+ // Local Definitions
27
+ var baseClassName = _bem.default.base;
28
+ var componentClassName = 'background-gradient';
29
+ /**
30
+ * This is the component description.
31
+ */
32
+
33
+ var BackgroundGradient = _ref => {
34
+ var {
35
+ id,
36
+ className: userClassName,
37
+ style,
38
+ height // ...otherProps
39
+
40
+ } = _ref;
41
+ (0, React.useLayoutEffect)(() => {
42
+ Promise.resolve().then(() => _interopRequireWildcard(require("./styles.scss")));
43
+ }, []);
44
+ return /*#__PURE__*/React.createElement("div", {
45
+ id: id,
46
+ className: [baseClassName, componentClassName, userClassName].filter(e => e).join(' '),
47
+ style: _objectSpread(_objectSpread({}, style), {}, {
48
+ '--gradient-height': height
49
+ })
50
+ });
51
+ };
52
+
53
+ BackgroundGradient.propTypes = {
54
+ /**
55
+ * The HTML id for this element
56
+ */
57
+ id: _propTypes.default.string,
58
+
59
+ /**
60
+ * The HTML class names for this element
61
+ */
62
+ className: _propTypes.default.string,
63
+
64
+ /**
65
+ * The React-written, css properties for this element.
66
+ */
67
+ style: _propTypes.default.objectOf(_propTypes.default.string),
68
+
69
+ /**
70
+ * The height of the shape.
71
+ */
72
+ height: _propTypes.default.string
73
+ };
74
+ BackgroundGradient.defaultProps = {// someProp: false,
75
+ };
76
+ var _default = BackgroundGradient;
77
+ exports.default = _default;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "BackgroundGradient", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _BackgroundGradient.default;
10
+ }
11
+ });
12
+
13
+ var _BackgroundGradient = _interopRequireDefault(require("./BackgroundGradient"));
14
+
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -0,0 +1,16 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ @use "@pareto-engineering/bem";
3
+
4
+ .#{bem.$base}.background-gradient{
5
+ position: absolute;
6
+ top: 0;
7
+ left: 0;
8
+ width: 100%;
9
+ height: var(--gradient-height);
10
+ background-image: linear-gradient(transparent, var(--y) 25%, var(--light-y) 75%, transparent);
11
+ opacity: .4;
12
+ z-index: -1;
13
+ }
14
+
15
+
16
+
@@ -35,17 +35,18 @@ var Conversation = _ref => {
35
35
  backgroundColor,
36
36
  ourColor,
37
37
  theirColor,
38
- children // ...otherProps
38
+ children,
39
+ hasTriangle // ...otherProps
39
40
 
40
41
  } = _ref;
41
42
  (0, React.useLayoutEffect)(() => {
42
43
  Promise.resolve().then(() => _interopRequireWildcard(require("./styles.scss")));
43
- }, []); // const messageColors = { ours: color, theirs: 'main2' }
44
-
44
+ }, []);
45
45
  return /*#__PURE__*/React.createElement(_Context.default.Provider, {
46
46
  value: {
47
47
  ourColor,
48
- theirColor
48
+ theirColor,
49
+ hasTriangle
49
50
  }
50
51
  }, /*#__PURE__*/React.createElement("div", {
51
52
  id: id,
@@ -88,12 +89,18 @@ Conversation.propTypes = {
88
89
  /**
89
90
  * The children JSX
90
91
  */
91
- children: _propTypes.default.node
92
+ children: _propTypes.default.node,
93
+
94
+ /**
95
+ * whether to add triangle to bubble chats
96
+ */
97
+ hasTriangle: _propTypes.default.bool
92
98
  };
93
99
  Conversation.defaultProps = {
94
- backgroundColor: 'background',
95
- ourColor: 'main2',
96
- theirColor: 'background2'
100
+ backgroundColor: 'background2',
101
+ ourColor: 'background1',
102
+ theirColor: 'background1',
103
+ hasTriangle: 'false'
97
104
  };
98
105
  Conversation.Message = _common.Message;
99
106
  var _default = Conversation;
@@ -34,22 +34,32 @@ var Message = _ref => {
34
34
  style,
35
35
  message,
36
36
  sender,
37
- from // ...otherProps
37
+ from,
38
+ attachment,
39
+ attachmentIcon,
40
+ attachmentColor // ...otherProps
38
41
 
39
42
  } = _ref;
40
43
  var {
44
+ hasTriangle,
41
45
  ourColor,
42
46
  theirColor
43
47
  } = (0, _useConversation.default)();
44
48
  return /*#__PURE__*/React.createElement("div", {
45
49
  id: id,
46
- className: [baseClassName, componentClassName, userClassName, "x-".concat(from === 'ours' ? ourColor : theirColor), from === 'ours' && 'ours'].filter(e => e).join(' '),
50
+ className: [baseClassName, componentClassName, userClassName, "x-".concat(from === 'ours' ? ourColor : theirColor), from === 'ours' && 'ours', hasTriangle === true ? 'has-triangle' : '', 'v1'].filter(e => e).join(' '),
47
51
  style: style
48
52
  }, /*#__PURE__*/React.createElement("div", {
49
53
  className: _bem.default.elementContent
50
54
  }, /*#__PURE__*/React.createElement("p", {
51
55
  className: "sender v25 mb-v s-1"
52
- }, sender, ":"), /*#__PURE__*/React.createElement("p", null, message)));
56
+ }, sender, ":"), /*#__PURE__*/React.createElement("p", null, message), attachment && /*#__PURE__*/React.createElement("div", {
57
+ className: "attachment y-".concat(attachmentColor)
58
+ }, /*#__PURE__*/React.createElement("span", {
59
+ className: "f-icons"
60
+ }, attachmentIcon), /*#__PURE__*/React.createElement("p", {
61
+ className: "ml-v"
62
+ }, attachment))));
53
63
  };
54
64
 
55
65
  Message.propTypes = {
@@ -63,6 +73,11 @@ Message.propTypes = {
63
73
  */
64
74
  className: _propTypes.default.string,
65
75
 
76
+ /**
77
+ * The React-written, css properties for this element.
78
+ */
79
+ style: _propTypes.default.objectOf(_propTypes.default.string),
80
+
66
81
  /**
67
82
  * The message in the conversation
68
83
  */
@@ -79,12 +94,24 @@ Message.propTypes = {
79
94
  from: _propTypes.default.oneOf(['ours', 'theirs']),
80
95
 
81
96
  /**
82
- * The React-written, css properties for this element.
97
+ * name of the attachment file
98
+ */
99
+ attachment: _propTypes.default.string,
100
+
101
+ /**
102
+ * source of the attachment icon
103
+ */
104
+ attachmentIcon: _propTypes.default.string,
105
+
106
+ /**
107
+ * background color of the attachment box
83
108
  */
84
- style: _propTypes.default.objectOf(_propTypes.default.string)
109
+ attachmentColor: _propTypes.default.string
85
110
  };
86
111
  Message.defaultProps = {
87
- from: 'theirs'
112
+ from: 'theirs',
113
+ attachmentIcon: 'A',
114
+ attachmentColor: 'main4'
88
115
  };
89
116
  var _default = Message;
90
117
  exports.default = _default;
@@ -1,4 +1,5 @@
1
1
  /* @pareto-engineering/generator-front 1.0.12 */
2
+
2
3
  @use "@pareto-engineering/bem";
3
4
  @use "@aztlan/stylebook/src/mixins";
4
5
  @use "@aztlan/stylebook/src/globals" as *;
@@ -8,47 +9,153 @@ $default-conversation-background: var(--y);
8
9
  $default-message-max-width: calc(100% - #{$default-padding});
9
10
  $default-message-min-width: 12em;
10
11
  $default-message-border: var(--theme-border);
12
+ $triangle-border-size: 15px;
13
+ $triangle-border-style: $triangle-border-size solid;
14
+ $triangle-border-style-subtracted: ($triangle-border-size - 1px) solid;
15
+ $triangle-border1: $triangle-border-style var(--paragraph);
16
+ $triangle-border2: $triangle-border-style transparent;
17
+ $triangle-border3: $triangle-border-style-subtracted var(--x);
18
+ $triangle-border4: $triangle-border-style-subtracted transparent;
19
+ $triangle-before-side:24px;
20
+ $triangle-before-bottom:-30px;
21
+ $triangle-after-bottom:-27px;
22
+ $triangle-after-side:25px;
11
23
 
12
24
  .#{bem.$base}.conversation {
13
- display: flex;
14
- flex-direction: column;
15
- background-color: $default-conversation-background;
16
- padding: $default-padding;
25
+ background-color: $default-conversation-background;
26
+ border-radius: var(--theme-border-radius);
27
+ display: flex;
28
+ flex-direction: column;
29
+ padding: $default-padding;
30
+
31
+ >:not(:last-child) {
32
+ margin-bottom: $default-padding;
33
+ }
34
+
35
+ // >:nth-child(1) {
36
+ // animation-delay: 1s;
37
+ // }
38
+ // >:nth-child(2) {
39
+ // animation-delay: 3s;
40
+ // }
41
+
42
+ .#{bem.$base}.message {
43
+ align-self: flex-start;
44
+ background-color: var(--x);
45
+ // animation: fadeIn 1s ease-in both;
46
+ border: $default-message-border;
17
47
  border-radius: var(--theme-border-radius);
48
+ max-width: $default-message-max-width;
49
+ min-width: $default-message-min-width;
50
+ padding: $default-padding;
51
+ position: relative;
18
52
 
19
- >:not(:last-child) {
20
- margin-bottom: $default-padding;
21
- }
53
+ .#{bem.$element-content} {
54
+ display: flex;
55
+ flex-direction: column;
56
+
57
+ >p {
58
+ color: var(--on-x);
59
+ }
60
+
61
+ .sender {
62
+ font-weight: 800;
63
+ margin-bottom: .5em;
64
+ }
22
65
 
23
- .#{bem.$base}.message {
24
- min-width: $default-message-min-width;
25
- max-width: $default-message-max-width;
26
- padding: $default-padding;
27
- border-radius: var(--theme-border-radius);
28
- background-color: var(--x);
29
- align-self: flex-start;
30
- border: $default-message-border;
31
-
32
- .#{bem.$element-content} {
33
- display: flex;
34
- flex-direction: column;
35
-
36
- >p {
37
- color: var(--on-x);
38
- }
39
-
40
- .sender {
41
- font-weight: 800;
42
- margin-bottom: .5em;
43
- }
66
+ .attachment {
67
+ align-self: baseline;
68
+ background-color: var(--y);
69
+ display: flex;
70
+ flex-direction: row;
71
+ padding: .5em 1em;
72
+
73
+ > p {
74
+ margin-bottom: 0;
44
75
  }
45
- }
46
76
 
47
- .#{bem.$base}.ours {
48
- align-self: flex-end;
77
+ > img {
78
+ width: 40px;
79
+ }
80
+ }
81
+ }
82
+ &.#{bem.$base}.ours {
83
+ align-self: flex-end;
49
84
  }
50
85
 
51
- }
86
+ &.has-triangle {
87
+ ::before {
88
+ border-bottom: $triangle-border2;
89
+ border-left: $triangle-border2;
90
+ border-right: $triangle-border1;
91
+ border-top: $triangle-border1;
92
+ bottom: $triangle-before-bottom;
93
+ content: "";
94
+ height: 0;
95
+ position: absolute;
96
+ right: $triangle-before-side;
97
+ width: 0;
98
+ }
99
+
100
+ ::after {
101
+ border-bottom: $triangle-border4;
102
+ border-left: $triangle-border4;
103
+ border-right: $triangle-border3;
104
+ border-top: $triangle-border3;
105
+ bottom: $triangle-after-bottom;
106
+ content: "";
107
+ height: 0;
108
+ position: absolute;
109
+ right: $triangle-after-side;
110
+ width: 0;
111
+ }
112
+
113
+ &:not(.ours) {
114
+ ::before {
115
+ border-bottom: $triangle-border2;
116
+ border-left: $triangle-border1;
117
+ border-right: $triangle-border2;
118
+ border-top: $triangle-border1;
119
+ bottom: $triangle-before-bottom;
120
+ content: "";
121
+ height: 0;
122
+ left: $triangle-before-side;
123
+ position: absolute;
124
+ width: 0;
125
+ }
52
126
 
127
+ ::after {
128
+ border-bottom: $triangle-border4;
129
+ border-left: $triangle-border3;
130
+ border-right: $triangle-border4;
131
+ border-top: $triangle-border3;
132
+ bottom: $triangle-after-bottom;
133
+ content: "";
134
+ height: 0;
135
+ left: $triangle-after-side;
136
+ position: absolute;
137
+ width: 0;
138
+ }
139
+ }
140
+ }
53
141
 
142
+ // mobile style
143
+ @include mixins.media($to:$sm-md) {
144
+ .message {
145
+ margin-top: 2em;
146
+ }
147
+ }
148
+ }
149
+ }
54
150
 
151
+ //@keyframes fadeIn {
152
+ // from {
153
+ // opacity: 0;
154
+ // transform: translate3d(0, 50%, 0);
155
+ // }
156
+ //
157
+ // to {
158
+ // opacity: 1;
159
+ // transform: translate3d(0, 0, 0);
160
+ // }
161
+ //}
@@ -57,6 +57,8 @@ var Shapes = _ref => {
57
57
 
58
58
  }, shape === 'triangle' && /*#__PURE__*/React.createElement("div", {
59
59
  className: "triangle"
60
+ }), shape === 'inverted-triangle' && /*#__PURE__*/React.createElement("div", {
61
+ className: "inverted-triangle"
60
62
  }), shape === 'half-ellipses' && /*#__PURE__*/React.createElement("div", {
61
63
  className: "half-ellipses"
62
64
  }, /*#__PURE__*/React.createElement("div", {
@@ -109,6 +111,12 @@ var Shapes = _ref => {
109
111
  className: "ellipse-one"
110
112
  }), /*#__PURE__*/React.createElement("div", {
111
113
  className: "ellipse-two"
114
+ })), shape === 'intersecting-circles' && /*#__PURE__*/React.createElement("div", {
115
+ className: "intersecting-circles"
116
+ }, /*#__PURE__*/React.createElement("div", {
117
+ className: "left"
118
+ }), /*#__PURE__*/React.createElement("div", {
119
+ className: "right"
112
120
  })));
113
121
  };
114
122
 
@@ -146,7 +154,7 @@ Shapes.propTypes = {
146
154
  /**
147
155
  * The options of a shape to use
148
156
  */
149
- shape: _propTypes.default.oneOf(['triangle', 'ellipse', 'half-ellipse', 'half-ellipses', 'spiral', 'diamonds', 'circle', 'half-circle', 'ellipses', 'rectangles', 'rotated-ellipses']),
157
+ shape: _propTypes.default.oneOf(['triangle', 'ellipse', 'half-ellipse', 'half-ellipses', 'spiral', 'diamonds', 'circle', 'half-circle', 'ellipses', 'rectangles', 'rotated-ellipses', 'inverted-triangle', 'intersecting-circles']),
150
158
 
151
159
  /**
152
160
  * The overflow of the shape.
@@ -29,6 +29,14 @@ $default-shapes-opacity:.8;
29
29
  width: var(--shape-height, #{$default-triangle-height});
30
30
  }
31
31
 
32
+ .inverted-triangle {
33
+ background-image: linear-gradient(var(--dark-y), transparent);
34
+ clip-path: polygon(50% 0, 0 100%, 100% 100%);
35
+ height: calc(var(--shape-height, #{$default-triangle-height}) * 0.86);
36
+ opacity: $default-shapes-opacity;
37
+ width: var(--shape-height, #{$default-triangle-height});
38
+ }
39
+
32
40
  .half-ellipses {
33
41
  height: var(--shape-height, #{$default-ellipse-height});
34
42
  opacity: $default-shapes-opacity;
@@ -218,4 +226,30 @@ $default-shapes-opacity:.8;
218
226
  clip-path: ellipse(50% 35% at 50% 50%);
219
227
  }
220
228
  }
221
- }
229
+
230
+ .intersecting-circles {
231
+ height: var(--shape-height, #{$default-circle-height});
232
+ opacity: $default-shapes-opacity;
233
+ width: calc(var(--shape-height, #{$default-circle-height}) * 2);
234
+ display: grid;
235
+ grid-template-columns: repeat(7, 1fr);
236
+ position: relative;
237
+
238
+ > * {
239
+ border-radius: 50%;
240
+ height: 100%;
241
+ width: 100%;
242
+ position: absolute;
243
+ opacity: .8;
244
+ }
245
+
246
+ .left {
247
+ background-image: linear-gradient(to right ,var(--dark-y),var(--y), transparent);
248
+ grid-column: 1 / 5;
249
+ }
250
+ .right {
251
+ background-image: linear-gradient(to left, var(--dark-y), var(--y), transparent);
252
+ grid-column: 4 / 8;
253
+ }
254
+ }
255
+ }
@@ -153,6 +153,12 @@ Object.defineProperty(exports, "OvalIllustration", {
153
153
  return _OvalIllustration.OvalIllustration;
154
154
  }
155
155
  });
156
+ Object.defineProperty(exports, "BackgroundGradient", {
157
+ enumerable: true,
158
+ get: function get() {
159
+ return _BackgroundGradient.BackgroundGradient;
160
+ }
161
+ });
156
162
 
157
163
  var _SVG = require("./SVG");
158
164
 
@@ -196,4 +202,6 @@ var _Timestamp = require("./Timestamp");
196
202
 
197
203
  var _Shapes = require("./Shapes");
198
204
 
199
- var _OvalIllustration = require("./OvalIllustration");
205
+ var _OvalIllustration = require("./OvalIllustration");
206
+
207
+ var _BackgroundGradient = require("./BackgroundGradient");
@@ -13,7 +13,7 @@ var _bem = _interopRequireDefault(require("@pareto-engineering/bem"));
13
13
 
14
14
  var _ = require("../..");
15
15
 
16
- var _excluded = ["id", "className", "style", "children", "isLoading", "color", "isCompact", "isGhost", "isSimple"];
16
+ var _excluded = ["id", "className", "style", "children", "isLoading", "color", "isCompact", "isGhost", "isSimple", "arrowDirection"];
17
17
 
18
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
19
 
@@ -43,7 +43,8 @@ var Button = _ref => {
43
43
  color,
44
44
  isCompact,
45
45
  isGhost,
46
- isSimple
46
+ isSimple,
47
+ arrowDirection
47
48
  } = _ref,
48
49
  otherProps = _objectWithoutProperties(_ref, _excluded);
49
50
 
@@ -52,7 +53,7 @@ var Button = _ref => {
52
53
  }, []);
53
54
  return /*#__PURE__*/React.createElement("button", _extends({
54
55
  id: id,
55
- className: [baseClassName, componentClassName, userClassName, "x-".concat(color), isGhost && _bem.default.modifierGhost, isCompact && _bem.default.modifierCompact, isSimple && _bem.default.modifierSimple].filter(e => e).join(' '),
56
+ className: [baseClassName, componentClassName, userClassName, "x-".concat(color), isGhost && _bem.default.modifierGhost, isCompact && _bem.default.modifierCompact, isSimple && _bem.default.modifierSimple, arrowDirection && "arrow-".concat(arrowDirection)].filter(e => e).join(' '),
56
57
  style: style,
57
58
  type: "button"
58
59
  }, otherProps), isLoading ? /*#__PURE__*/React.createElement(_.LoadingCircle, {
@@ -107,7 +108,12 @@ Button.propTypes = {
107
108
  /**
108
109
  * Button loading state
109
110
  */
110
- isLoading: _propTypes.default.bool
111
+ isLoading: _propTypes.default.bool,
112
+
113
+ /**
114
+ * The direction of the arrow if the button has one
115
+ */
116
+ arrowDirection: _propTypes.default.string
111
117
  };
112
118
  Button.defaultProps = {
113
119
  color: 'main1'
@@ -6,22 +6,41 @@ $default-padding: 1em 1em .84em;
6
6
  $compact-padding: .6em .6em .48em;
7
7
  $default-color:primary;
8
8
  $font-weight:bold;
9
+ $default-margin:.5em;
9
10
 
10
11
  .#{bem.$base}.button {
11
12
  background: var(--x, var(--#{$default-color}));
12
13
  border: transparent;
13
14
  border-radius: var(--theme-border-radius);
14
15
  color: var(--on-x, var(--on-#{$default-color}));
16
+ display: inline-flex;
15
17
  font-weight: 600;
18
+ font-family: var(--theme-default-paragraph);
19
+ justify-content: space-between;
16
20
  padding: $default-padding;
17
21
  transition: all .25s;
18
22
 
23
+ &.arrow-right {
24
+ &::after {
25
+ content: "-->";
26
+ margin-left: $default-margin;
27
+ }
28
+ }
29
+
30
+ &.arrow-left {
31
+ &::before {
32
+ content: "<--";
33
+ margin-right: $default-margin;
34
+ }
35
+ }
36
+
19
37
  &:not(:disabled) {
20
38
  cursor: pointer;
21
39
 
22
40
  &:hover {
23
41
  background: var(--light-x, var(--light-#{$default-color}));
24
42
  }
43
+
25
44
  &:focus {
26
45
  background: var(--dark-x, var(--dark-#{$default-color}));
27
46
  }
@@ -39,7 +58,7 @@ $font-weight:bold;
39
58
 
40
59
  &:hover,
41
60
  &:focus,
42
- &:disabled{
61
+ &:disabled {
43
62
  background: transparent;
44
63
  }
45
64
 
@@ -55,7 +74,7 @@ $font-weight:bold;
55
74
  }
56
75
  }
57
76
 
58
- &:disabled{
77
+ &:disabled {
59
78
  border: 1px solid var(--x, var(--#{$default-color}));
60
79
  color: var(--x, var(--#{$default-color}));
61
80
  }
@@ -65,6 +84,7 @@ $font-weight:bold;
65
84
  background: transparent;
66
85
  border: 1px solid transparent;
67
86
  color: var(--x, var(--#{$default-color}));
87
+ padding: 0;
68
88
 
69
89
  &:disabled,
70
90
  &:hover,
@@ -73,13 +93,13 @@ $font-weight:bold;
73
93
  }
74
94
 
75
95
  &:not(:disabled) {
76
- &:hover {
77
- color: var(--light-x, var(--light-#{$default-color}));
78
- }
96
+ &:hover {
97
+ color: var(--light-x, var(--light-#{$default-color}));
98
+ }
79
99
 
80
- &:focus {
81
- color: var(--dark-x, var(--dark-#{$default-color}));
82
- }
100
+ &:focus {
101
+ color: var(--dark-x, var(--dark-#{$default-color}));
102
+ }
83
103
  }
84
104
 
85
105
  &:disabled {