@pareto-engineering/design-system 2.0.0-alpha.12 → 2.0.0-alpha.16

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 (58) hide show
  1. package/dist/cjs/a/BackgroundGradient/styles.scss +2 -4
  2. package/dist/cjs/a/Conversation/Conversation.js +15 -8
  3. package/dist/cjs/a/Conversation/common/Message/Message.js +33 -6
  4. package/dist/cjs/a/Conversation/styles.scss +139 -32
  5. package/dist/cjs/b/Button/styles.scss +43 -18
  6. package/dist/cjs/b/Page/common/Section/Section.js +16 -2
  7. package/dist/cjs/c/ContentSlides/common/Navigator/Navigator.js +4 -3
  8. package/dist/cjs/f/common/Debugger/Debugger.js +1 -1
  9. package/dist/cjs/f/common/Label/Label.js +1 -1
  10. package/dist/cjs/f/fields/ChoicesInput/ChoicesInput.js +1 -1
  11. package/dist/cjs/f/fields/SelectInput/SelectInput.js +25 -6
  12. package/dist/cjs/f/fields/SelectInput/styles.scss +4 -4
  13. package/dist/cjs/f/fields/TaskRecommendationInput/TaskRecommendationInput.js +1 -1
  14. package/dist/cjs/f/fields/TextInput/TextInput.js +10 -3
  15. package/dist/cjs/f/fields/TextInput/styles.scss +4 -4
  16. package/dist/cjs/f/fields/TextareaInput/TextareaInput.js +1 -1
  17. package/dist/es/a/BackgroundGradient/styles.scss +2 -4
  18. package/dist/es/a/Conversation/Conversation.js +15 -8
  19. package/dist/es/a/Conversation/common/Message/Message.js +33 -6
  20. package/dist/es/a/Conversation/styles.scss +139 -32
  21. package/dist/es/b/Button/styles.scss +43 -18
  22. package/dist/es/b/Page/common/Section/Section.js +16 -2
  23. package/dist/es/c/ContentSlides/common/Navigator/Navigator.js +4 -3
  24. package/dist/es/f/common/Debugger/Debugger.js +1 -1
  25. package/dist/es/f/common/Label/Label.js +1 -1
  26. package/dist/es/f/fields/ChoicesInput/ChoicesInput.js +1 -1
  27. package/dist/es/f/fields/SelectInput/SelectInput.js +25 -6
  28. package/dist/es/f/fields/SelectInput/styles.scss +4 -4
  29. package/dist/es/f/fields/TaskRecommendationInput/TaskRecommendationInput.js +1 -1
  30. package/dist/es/f/fields/TextInput/TextInput.js +10 -3
  31. package/dist/es/f/fields/TextInput/styles.scss +4 -4
  32. package/dist/es/f/fields/TextareaInput/TextareaInput.js +1 -1
  33. package/package.json +2 -2
  34. package/src/__snapshots__/Storyshots.test.js.snap +452 -93
  35. package/src/local.scss +1 -0
  36. package/src/stories/a/BackgroundGradient.stories.jsx +4 -6
  37. package/src/stories/a/Conversation.stories.jsx +78 -1
  38. package/src/stories/b/Button.stories.jsx +5 -4
  39. package/src/stories/b/Page.stories.jsx +25 -1
  40. package/src/stories/f/SelectInput.stories.jsx +29 -0
  41. package/src/stories/f/TextInput.stories.jsx +10 -0
  42. package/src/ui/a/BackgroundGradient/styles.scss +2 -4
  43. package/src/ui/a/Conversation/Conversation.jsx +15 -7
  44. package/src/ui/a/Conversation/common/Message/Message.jsx +40 -7
  45. package/src/ui/a/Conversation/styles.scss +139 -32
  46. package/src/ui/b/Button/Button.jsx +2 -1
  47. package/src/ui/b/Button/styles.scss +43 -18
  48. package/src/ui/b/Page/common/Section/Section.jsx +18 -1
  49. package/src/ui/c/ContentSlides/common/Navigator/Navigator.jsx +3 -2
  50. package/src/ui/f/common/Debugger/Debugger.jsx +1 -1
  51. package/src/ui/f/common/Label/Label.jsx +1 -1
  52. package/src/ui/f/fields/ChoicesInput/ChoicesInput.jsx +1 -1
  53. package/src/ui/f/fields/SelectInput/SelectInput.jsx +35 -5
  54. package/src/ui/f/fields/SelectInput/styles.scss +4 -4
  55. package/src/ui/f/fields/TaskRecommendationInput/TaskRecommendationInput.jsx +1 -1
  56. package/src/ui/f/fields/TextInput/TextInput.jsx +7 -0
  57. package/src/ui/f/fields/TextInput/styles.scss +4 -4
  58. package/src/ui/f/fields/TextareaInput/TextareaInput.jsx +1 -1
@@ -10,16 +10,16 @@ $default-padding: 0.75em 0.75em 0.55em;
10
10
  flex-direction: column;
11
11
 
12
12
  .input-label {
13
- color: var(--main1);
13
+ color: var(--main2);
14
14
  }
15
15
 
16
16
  .input {
17
- background: var(--light-background1);
18
- color: var(--on-background1);
17
+ background: var(--light-background2);
18
+ color: var(--on-background2);
19
19
  padding: $default-padding;
20
20
 
21
21
  &:focus {
22
- background: var(--dark-background1);
22
+ background: var(--dark-background2);
23
23
  }
24
24
  }
25
25
  }
@@ -142,7 +142,7 @@ TextareaInput.propTypes = {
142
142
  TextareaInput.defaultProps = {
143
143
  rows: 3,
144
144
  textAreaColor: 'background1',
145
- labelColor: 'main1',
145
+ labelColor: 'main2',
146
146
  disabled: false
147
147
  };
148
148
 
@@ -5,13 +5,11 @@
5
5
  position: absolute;
6
6
  top: 0;
7
7
  left: 0;
8
- display: flex;
9
- flex-direction: column;
10
- justify-content: var(--vertical-align);
11
8
  width: 100%;
12
9
  height: var(--gradient-height);
13
10
  background-image: linear-gradient(transparent, var(--y) 25%, var(--light-y) 75%, transparent);
14
- opacity: .8;
11
+ opacity: .4;
12
+ z-index: -1;
15
13
  }
16
14
 
17
15
 
@@ -19,17 +19,18 @@ const Conversation = ({
19
19
  backgroundColor,
20
20
  ourColor,
21
21
  theirColor,
22
- children // ...otherProps
22
+ children,
23
+ hasTriangle // ...otherProps
23
24
 
24
25
  }) => {
25
26
  useLayoutEffect(() => {
26
27
  import("./styles.scss");
27
- }, []); // const messageColors = { ours: color, theirs: 'main2' }
28
-
28
+ }, []);
29
29
  return /*#__PURE__*/React.createElement(ConversationContext.Provider, {
30
30
  value: {
31
31
  ourColor,
32
- theirColor
32
+ theirColor,
33
+ hasTriangle
33
34
  }
34
35
  }, /*#__PURE__*/React.createElement("div", {
35
36
  id: id,
@@ -72,12 +73,18 @@ Conversation.propTypes = {
72
73
  /**
73
74
  * The children JSX
74
75
  */
75
- children: PropTypes.node
76
+ children: PropTypes.node,
77
+
78
+ /**
79
+ * whether to add triangle to bubble chats
80
+ */
81
+ hasTriangle: PropTypes.bool
76
82
  };
77
83
  Conversation.defaultProps = {
78
- backgroundColor: 'background',
79
- ourColor: 'main2',
80
- theirColor: 'background2'
84
+ backgroundColor: 'background2',
85
+ ourColor: 'background1',
86
+ theirColor: 'background1',
87
+ hasTriangle: 'false'
81
88
  };
82
89
  Conversation.Message = Message;
83
90
  export default Conversation;
@@ -16,22 +16,32 @@ const Message = ({
16
16
  style,
17
17
  message,
18
18
  sender,
19
- from // ...otherProps
19
+ from,
20
+ attachment,
21
+ attachmentIcon,
22
+ attachmentColor // ...otherProps
20
23
 
21
24
  }) => {
22
25
  const {
26
+ hasTriangle,
23
27
  ourColor,
24
28
  theirColor
25
29
  } = useConversation();
26
30
  return /*#__PURE__*/React.createElement("div", {
27
31
  id: id,
28
- className: [baseClassName, componentClassName, userClassName, `x-${from === 'ours' ? ourColor : theirColor}`, from === 'ours' && 'ours'].filter(e => e).join(' '),
32
+ className: [baseClassName, componentClassName, userClassName, `x-${from === 'ours' ? ourColor : theirColor}`, from === 'ours' && 'ours', hasTriangle === true ? 'has-triangle' : '', 'v1'].filter(e => e).join(' '),
29
33
  style: style
30
34
  }, /*#__PURE__*/React.createElement("div", {
31
35
  className: styleNames.elementContent
32
36
  }, /*#__PURE__*/React.createElement("p", {
33
37
  className: "sender v25 mb-v s-1"
34
- }, sender, ":"), /*#__PURE__*/React.createElement("p", null, message)));
38
+ }, sender, ":"), /*#__PURE__*/React.createElement("p", null, message), attachment && /*#__PURE__*/React.createElement("div", {
39
+ className: `attachment y-${attachmentColor}`
40
+ }, /*#__PURE__*/React.createElement("span", {
41
+ className: "f-icons"
42
+ }, attachmentIcon), /*#__PURE__*/React.createElement("p", {
43
+ className: "ml-v"
44
+ }, attachment))));
35
45
  };
36
46
 
37
47
  Message.propTypes = {
@@ -45,6 +55,11 @@ Message.propTypes = {
45
55
  */
46
56
  className: PropTypes.string,
47
57
 
58
+ /**
59
+ * The React-written, css properties for this element.
60
+ */
61
+ style: PropTypes.objectOf(PropTypes.string),
62
+
48
63
  /**
49
64
  * The message in the conversation
50
65
  */
@@ -61,11 +76,23 @@ Message.propTypes = {
61
76
  from: PropTypes.oneOf(['ours', 'theirs']),
62
77
 
63
78
  /**
64
- * The React-written, css properties for this element.
79
+ * name of the attachment file
80
+ */
81
+ attachment: PropTypes.string,
82
+
83
+ /**
84
+ * source of the attachment icon
85
+ */
86
+ attachmentIcon: PropTypes.string,
87
+
88
+ /**
89
+ * background color of the attachment box
65
90
  */
66
- style: PropTypes.objectOf(PropTypes.string)
91
+ attachmentColor: PropTypes.string
67
92
  };
68
93
  Message.defaultProps = {
69
- from: 'theirs'
94
+ from: 'theirs',
95
+ attachmentIcon: 'A',
96
+ attachmentColor: 'main4'
70
97
  };
71
98
  export default Message;
@@ -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
+ //}
@@ -7,31 +7,47 @@ $compact-padding: .6em .6em .48em;
7
7
  $default-color:primary;
8
8
  $font-weight:bold;
9
9
  $default-margin:.5em;
10
+ $default-animation-time: .3s;
10
11
 
11
12
  .#{bem.$base}.button {
12
13
  background: var(--x, var(--#{$default-color}));
13
14
  border: transparent;
14
15
  border-radius: var(--theme-border-radius);
15
16
  color: var(--on-x, var(--on-#{$default-color}));
17
+ display: inline-flex;
18
+ font-family: var(--theme-default-paragraph);
16
19
  font-weight: 600;
20
+ justify-content: space-between;
17
21
  padding: $default-padding;
18
22
  transition: all .25s;
19
23
 
20
- &.arrow-right{
24
+ &.arrow-right {
21
25
  &::after {
22
- content: "L";
23
- font-family: "icons";
24
- vertical-align: middle;
26
+ content: "-->";
25
27
  margin-left: $default-margin;
28
+ vertical-align: middle;
29
+ }
30
+
31
+ &:hover {
32
+ &::after {
33
+ --final-position: 50%;
34
+ animation: animateArrow $default-animation-time forwards;
35
+ }
26
36
  }
27
37
  }
28
38
 
29
- &.arrow-left{
39
+ &.arrow-left {
30
40
  &::before {
31
- content: "H";
32
- font-family: "icons";
33
- vertical-align: middle;
41
+ content: "<--";
34
42
  margin-right: $default-margin;
43
+ vertical-align: middle;
44
+ }
45
+
46
+ &:hover {
47
+ &::before {
48
+ --final-position: -50%;
49
+ animation: animateArrow $default-animation-time forwards;
50
+ }
35
51
  }
36
52
  }
37
53
 
@@ -41,12 +57,12 @@ $default-margin:.5em;
41
57
  &:hover {
42
58
  background: var(--light-x, var(--light-#{$default-color}));
43
59
  }
60
+
44
61
  &:focus {
45
62
  background: var(--dark-x, var(--dark-#{$default-color}));
46
63
  }
47
64
  }
48
65
 
49
-
50
66
  &.#{bem.$modifier-compact} {
51
67
  padding: $compact-padding;
52
68
  }
@@ -58,7 +74,7 @@ $default-margin:.5em;
58
74
 
59
75
  &:hover,
60
76
  &:focus,
61
- &:disabled{
77
+ &:disabled {
62
78
  background: transparent;
63
79
  }
64
80
 
@@ -74,7 +90,7 @@ $default-margin:.5em;
74
90
  }
75
91
  }
76
92
 
77
- &:disabled{
93
+ &:disabled {
78
94
  border: 1px solid var(--x, var(--#{$default-color}));
79
95
  color: var(--x, var(--#{$default-color}));
80
96
  }
@@ -83,8 +99,8 @@ $default-margin:.5em;
83
99
  &.#{bem.$modifier-simple} {
84
100
  background: transparent;
85
101
  border: 1px solid transparent;
86
- padding: 0;
87
102
  color: var(--x, var(--#{$default-color}));
103
+ padding: 0;
88
104
 
89
105
  &:disabled,
90
106
  &:hover,
@@ -93,13 +109,13 @@ $default-margin:.5em;
93
109
  }
94
110
 
95
111
  &:not(:disabled) {
96
- &:hover {
97
- color: var(--light-x, var(--light-#{$default-color}));
98
- }
112
+ &:hover {
113
+ color: var(--light-x, var(--light-#{$default-color}));
114
+ }
99
115
 
100
- &:focus {
101
- color: var(--dark-x, var(--dark-#{$default-color}));
102
- }
116
+ &:focus {
117
+ color: var(--dark-x, var(--dark-#{$default-color}));
118
+ }
103
119
  }
104
120
 
105
121
  &:disabled {
@@ -114,3 +130,12 @@ $default-margin:.5em;
114
130
  }
115
131
 
116
132
 
133
+ @keyframes animateArrow {
134
+ from {
135
+ transform: translateX(0);
136
+ }
137
+
138
+ to {
139
+ transform: translateX(var(--final-position));
140
+ }
141
+ }
@@ -5,7 +5,7 @@ import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import styleNames from '@pareto-engineering/bem'; // Local Definitions
7
7
 
8
- import { Shapes } from "../../../../a";
8
+ import { Shapes, BackgroundGradient } from "../../../../a";
9
9
  import usePage from "../../usePage";
10
10
  const baseClassName = styleNames.base;
11
11
  const componentClassName = 'section';
@@ -16,6 +16,8 @@ const Section = ({
16
16
  style,
17
17
  children,
18
18
  backgroundShape,
19
+ backgroundGradient,
20
+ backgroundGradientHeight,
19
21
  backgroundVerticalAlign,
20
22
  backgroundHorizontalAlign,
21
23
  backgroundHeight,
@@ -36,6 +38,8 @@ const Section = ({
36
38
  overflow: backgroundOverflow,
37
39
  height: backgroundHeight,
38
40
  shape: backgroundShape
41
+ }), backgroundGradient && /*#__PURE__*/React.createElement(BackgroundGradient, {
42
+ height: backgroundGradientHeight
39
43
  }));
40
44
  };
41
45
 
@@ -83,7 +87,17 @@ Section.propTypes = {
83
87
  /**
84
88
  * The background overflow to use for if the background shape is set.
85
89
  */
86
- backgroundOverflow: PropTypes.oneOf(['visible', 'hidden', 'scroll'])
90
+ backgroundOverflow: PropTypes.oneOf(['visible', 'hidden', 'scroll']),
91
+
92
+ /**
93
+ * The background gradient to use for if the background gradient is set.
94
+ */
95
+ backgroundGradient: PropTypes.bool,
96
+
97
+ /**
98
+ * The background gradient height to use for if the background gradient is set.
99
+ */
100
+ backgroundGradientHeight: PropTypes.string
87
101
  };
88
102
  Section.defaultProps = {// someProp:false
89
103
  };
@@ -56,7 +56,8 @@ const Navigator = ({
56
56
  } else {
57
57
  setNextStepIndex(stepsForward);
58
58
  }
59
- }
59
+ },
60
+ isCompact: true
60
61
  }, "Next") : /*#__PURE__*/React.createElement("span", null));
61
62
  };
62
63
 
@@ -118,8 +119,8 @@ Navigator.propTypes = {
118
119
  };
119
120
  Navigator.defaultProps = {
120
121
  canMoveForward: true,
121
- previousColor: 'main1',
122
- nextColor: 'main1',
122
+ previousColor: 'main2',
123
+ nextColor: 'main2',
123
124
  stepsForward: 1,
124
125
  stepsBackwards: 1
125
126
  };
@@ -31,7 +31,7 @@ const Debugger = ({
31
31
  style: style
32
32
  }, /*#__PURE__*/React.createElement(Button, {
33
33
  onClick: toggleDebugger,
34
- color: "main1"
34
+ color: "main2"
35
35
  }, isOpen ? 'Close FormDebugger' : 'Open FormDebugger'), isOpen && /*#__PURE__*/React.createElement("pre", {
36
36
  className: "debuger-content"
37
37
  }, JSON.stringify(formikContext, null, 2)));
@@ -71,6 +71,6 @@ Label.propTypes = {
71
71
  Label.defaultProps = {
72
72
  // someProp:false
73
73
  as: 'label',
74
- color: 'main1'
74
+ color: 'main2'
75
75
  };
76
76
  export default Label;
@@ -129,7 +129,7 @@ ChoicesInput.defaultProps = {
129
129
  gridColumnsMobile: 2,
130
130
  gridColumnsDesktop: 3,
131
131
  color: 'background2',
132
- colorChecked: 'main1',
132
+ colorChecked: 'main2',
133
133
  disabled: false
134
134
  };
135
135
  export default /*#__PURE__*/memo(ChoicesInput);
@@ -21,13 +21,18 @@ const SelectInput = ({
21
21
  name,
22
22
  label,
23
23
  options,
24
+ validate,
25
+ description,
24
26
  disabled // ...otherProps
25
27
 
26
28
  }) => {
27
29
  useLayoutEffect(() => {
28
30
  import("./styles.scss");
29
31
  }, []);
30
- const [field, meta] = useField(name);
32
+ const [field, meta] = useField({
33
+ name,
34
+ validate
35
+ });
31
36
  return /*#__PURE__*/React.createElement("div", {
32
37
  id: id,
33
38
  className: [baseClassName, componentClassName, userClassName].filter(e => e).join(' '),
@@ -39,6 +44,7 @@ const SelectInput = ({
39
44
  }, label), /*#__PURE__*/React.createElement("select", _extends({
40
45
  className: "input v25 pv-v"
41
46
  }, field, {
47
+ value: field.value || '',
42
48
  id: name,
43
49
  disabled: disabled
44
50
  }), options.map(option => {
@@ -49,11 +55,13 @@ const SelectInput = ({
49
55
  } : option;
50
56
  return /*#__PURE__*/React.createElement("option", {
51
57
  key: newOption.value,
52
- value: newOption.value
58
+ value: newOption.value,
59
+ disabled: (newOption === null || newOption === void 0 ? void 0 : newOption.disabled) || false
53
60
  }, newOption.label);
54
- })), meta.error && meta.touched && /*#__PURE__*/React.createElement(FormDescription, {
55
- error: true
56
- }, meta.error));
61
+ })), (description || meta.touched && meta.error) && /*#__PURE__*/React.createElement(FormDescription, {
62
+ isError: !!meta.error,
63
+ className: "v50 mt-v s-1"
64
+ }, meta.error || description));
57
65
  };
58
66
 
59
67
  SelectInput.propTypes = {
@@ -82,12 +90,23 @@ SelectInput.propTypes = {
82
90
  */
83
91
  label: PropTypes.string,
84
92
 
93
+ /**
94
+ * The input field validator function
95
+ */
96
+ validate: PropTypes.func,
97
+
98
+ /**
99
+ * The select input description
100
+ */
101
+ description: PropTypes.string,
102
+
85
103
  /**
86
104
  * The options of the select input
87
105
  */
88
106
  options: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.shape({
89
107
  value: PropTypes.string,
90
- label: PropTypes.string
108
+ label: PropTypes.string,
109
+ disabled: PropTypes.bool
91
110
  })])),
92
111
 
93
112
  /**
@@ -14,16 +14,16 @@ $default-padding: 0.75em 0.75em 0.55em;
14
14
 
15
15
 
16
16
  .input-label {
17
- color: var(--main1);
17
+ color: var(--main2);
18
18
  }
19
19
 
20
20
  .input {
21
- background: var(--light-background1);
22
- color: var(--on-background1);
21
+ background: var(--light-background2);
22
+ color: var(--on-background2);
23
23
  padding: $default-padding;
24
24
 
25
25
  &:focus {
26
- background: var(--dark-background1);
26
+ background: var(--dark-background2);
27
27
  }
28
28
  }
29
29
  }
@@ -106,6 +106,6 @@ TaskRecommendationInput.propTypes = {
106
106
  image: PropTypes.string.isRequired
107
107
  };
108
108
  TaskRecommendationInput.defaultProps = {
109
- color: 'main1'
109
+ color: 'main2'
110
110
  };
111
111
  export default /*#__PURE__*/memo(TaskRecommendationInput);