@ntbjs/react-components 0.0.1-beta.46 → 0.0.1-beta.47

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.
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var defaultTheme = require('./defaultTheme-d8298500.js');
3
+ var defaultTheme = require('./defaultTheme-38b83bb5.js');
4
4
  var React = require('react');
5
5
  var styled = require('styled-components');
6
6
 
@@ -1,18 +1,19 @@
1
1
  'use strict';
2
2
 
3
- var defaultTheme = require('./defaultTheme-d8298500.js');
3
+ var defaultTheme = require('./defaultTheme-38b83bb5.js');
4
4
  var React = require('react');
5
5
  var lodash = require('lodash');
6
6
  var ResizeObserver = require('resize-observer-polyfill');
7
7
  var reactLazyLoadImageComponent = require('react-lazy-load-image-component');
8
- var ActionButton = require('./ActionButton-9e502e55.js');
9
- require('./Button-88652184.js');
10
- require('./Checkbox-25c75a7c.js');
11
- require('./Radio-1521b33c.js');
12
- require('./TextArea-a73b1729.js');
13
- require('./TextInput-143d6346.js');
14
- require('./Popover-6ca643ba.js');
15
- var Tooltip = require('./Tooltip-25b6f5fa.js');
8
+ var ActionButton = require('./ActionButton-d56265bd.js');
9
+ require('./Button-2ae8c0dc.js');
10
+ require('./Checkbox-4037e160.js');
11
+ require('./Radio-96f0bc13.js');
12
+ require('./TextArea-4be7199f.js');
13
+ require('./TextInput-4deb971c.js');
14
+ require('./Switch-7b696313.js');
15
+ require('./Popover-b16a26a5.js');
16
+ var Tooltip = require('./Tooltip-a9271ef2.js');
16
17
  var styled = require('styled-components');
17
18
  var polished = require('polished');
18
19
 
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var defaultTheme = require('./defaultTheme-d8298500.js');
3
+ var defaultTheme = require('./defaultTheme-38b83bb5.js');
4
4
  var React = require('react');
5
5
  var styled = require('styled-components');
6
6
 
@@ -0,0 +1,121 @@
1
+ 'use strict';
2
+
3
+ var defaultTheme = require('./defaultTheme-38b83bb5.js');
4
+ var React = require('react');
5
+ var nanoid = require('nanoid');
6
+ var styled = require('styled-components');
7
+ var lodash = require('lodash');
8
+
9
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
10
+
11
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
12
+ var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
13
+
14
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;
15
+ var checkboxSize = '18px';
16
+ var Checkbox$1 = styled__default["default"].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject || (_templateObject = defaultTheme._taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n"])));
17
+ var CheckIcon = styled__default["default"].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject2 || (_templateObject2 = defaultTheme._taggedTemplateLiteral(["\n opacity: 0;\n transform: scale(0.1);\n transition: all 200ms;\n position: absolute;\n width: 12px;\n top: 4px;\n left: 3px;\n color: ", ";\n\n svg {\n width: 100%;\n display: block;\n }\n"])), function (props) {
18
+ return props.theme.getColor('gray-100');
19
+ });
20
+ var IndeterminateCheckIcon = styled__default["default"].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject3 || (_templateObject3 = defaultTheme._taggedTemplateLiteral(["\n opacity: 0;\n transform: scale(0.1);\n transition: all 200ms;\n position: absolute;\n height: 2px;\n top: 8px;\n left: 4px;\n background: ", ";\n width: 10px;\n"])), function (props) {
21
+ return props.theme.getColor('gray-100');
22
+ });
23
+ var CheckboxLabel = styled__default["default"].label.attrs(defaultTheme.applyDefaultTheme)(_templateObject4 || (_templateObject4 = defaultTheme._taggedTemplateLiteral(["\n display: inline-flex;\n position: relative;\n cursor: pointer;\n user-select: none;\n min-height: ", ";\n text-align: left;\n flex-wrap: wrap;\n flex: 1;\n line-height: ", ";\n margin-right: auto;\n\n & input[type='checkbox'] {\n position: absolute;\n opacity: 0;\n pointer-events: none;\n margin: 0;\n }\n\n &::before {\n content: '';\n border: 2px solid ", ";\n border-radius: 2px;\n transition: all 200ms;\n width: ", ";\n height: ", ";\n box-sizing: border-box;\n }\n\n &:has(input[type='checkbox']:checked) {\n &::before {\n background: ", ";\n border-color: ", ";\n }\n }\n\n &:has(input[type='checkbox']:not([data-indeterminate='true']):checked) {\n ", " {\n opacity: 1;\n transform: scale(1);\n }\n }\n\n &:has(input[type='checkbox'][data-indeterminate='true']:checked) {\n ", " {\n opacity: 1;\n transform: scale(1);\n }\n }\n\n ", "\n"])), checkboxSize, checkboxSize, function (props) {
24
+ return props.theme.getColor('gray-300');
25
+ }, checkboxSize, checkboxSize, function (props) {
26
+ return props.theme.getColor('emerald-500');
27
+ }, function (props) {
28
+ return props.theme.getColor('emerald-500');
29
+ }, CheckIcon, IndeterminateCheckIcon, function (props) {
30
+ return props.disabled && styled.css(_templateObject5 || (_templateObject5 = defaultTheme._taggedTemplateLiteral(["\n opacity: 0.5;\n cursor: not-allowed;\n "])));
31
+ });
32
+ var CheckboxVisualLabel = styled__default["default"].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject6 || (_templateObject6 = defaultTheme._taggedTemplateLiteral(["\n padding-left: 10px;\n font-weight: 400;\n font-size: 0.875rem;\n flex: 1;\n\n ", ";\n"])), function (props) {
33
+ return props.theme.themeProp('color', props.theme.getColor('gray-300'), props.theme.getColor('gray-600'));
34
+ });
35
+ var Description = styled__default["default"].p.attrs(defaultTheme.applyDefaultTheme)(_templateObject7 || (_templateObject7 = defaultTheme._taggedTemplateLiteral(["\n margin: 0.375rem 0 0 0;\n font-size: 0.75rem;\n line-height: 1.333;\n\n ", ";\n\n ", "\n"])), function (props) {
36
+ return props.theme.themeProp('color', props.theme.getColor('gray-400'), props.theme.getColor('gray-500'));
37
+ }, function (props) {
38
+ return props.error && styled.css(_templateObject8 || (_templateObject8 = defaultTheme._taggedTemplateLiteral(["\n content: 'error';\n ", "\n "])), props.theme.themeProp('color', props.theme.getColor('red-200'), props.theme.getColor('red-500')));
39
+ });
40
+
41
+ var Checkbox = React__default["default"].forwardRef(function Checkbox(_ref, forwardedRef) {
42
+ var checked = _ref.checked,
43
+ defaultChecked = _ref.defaultChecked,
44
+ disabled = _ref.disabled,
45
+ name = _ref.name,
46
+ value = _ref.value,
47
+ description = _ref.description,
48
+ error = _ref.error,
49
+ indeterminate = _ref.indeterminate,
50
+ label = _ref.label,
51
+ onChange = _ref.onChange,
52
+ onBlur = _ref.onBlur,
53
+ className = _ref.className,
54
+ style = _ref.style;
55
+ var _useState = React.useState(nanoid.nanoid()),
56
+ _useState2 = defaultTheme._slicedToArray(_useState, 1),
57
+ uniqueId = _useState2[0];
58
+ var hasError = React.useMemo(function () {
59
+ if (lodash.isBoolean(error)) {
60
+ return error;
61
+ }
62
+ return !lodash.isEmpty(error);
63
+ }, [error]);
64
+ var descriptionText = React.useMemo(function () {
65
+ if (!lodash.isEmpty(error)) {
66
+ return error;
67
+ }
68
+ if (!lodash.isEmpty(description)) {
69
+ return description;
70
+ }
71
+ return null;
72
+ }, [description, error]);
73
+ return React__default["default"].createElement(Checkbox$1, {
74
+ className: className,
75
+ style: style
76
+ }, React__default["default"].createElement(CheckboxLabel, {
77
+ disabled: disabled,
78
+ htmlFor: uniqueId
79
+ }, React__default["default"].createElement("input", {
80
+ ref: forwardedRef,
81
+ id: uniqueId,
82
+ checked: checked,
83
+ defaultChecked: defaultChecked,
84
+ disabled: disabled,
85
+ value: value,
86
+ name: name,
87
+ type: "checkbox",
88
+ onChange: onChange,
89
+ onBlur: onBlur,
90
+ "data-indeterminate": indeterminate
91
+ }), React__default["default"].createElement(IndeterminateCheckIcon, null), React__default["default"].createElement(CheckIcon, null, React__default["default"].createElement("svg", {
92
+ xmlns: "http://www.w3.org/2000/svg",
93
+ viewBox: "0 0 10.9 8.45"
94
+ }, React__default["default"].createElement("path", {
95
+ d: "m3.68,8.45L0,4.75l1.21-1.21,2.47,2.45L9.7,0l1.21,1.23-7.22,7.22Z",
96
+ fill: "currentColor"
97
+ }))), typeof label === 'string' && label.length > 0 && React__default["default"].createElement(CheckboxVisualLabel, null, label)), typeof descriptionText === 'string' && descriptionText.length > 0 && React__default["default"].createElement(Description, {
98
+ error: hasError
99
+ }, descriptionText));
100
+ });
101
+ Checkbox.propTypes = process.env.NODE_ENV !== "production" ? {
102
+ checked: defaultTheme.PropTypes.bool,
103
+ defaultChecked: defaultTheme.PropTypes.bool,
104
+ label: defaultTheme.PropTypes.string,
105
+ disabled: defaultTheme.PropTypes.bool,
106
+ name: defaultTheme.PropTypes.string,
107
+ value: defaultTheme.PropTypes.string,
108
+ description: defaultTheme.PropTypes.string,
109
+ error: defaultTheme.PropTypes.oneOfType([defaultTheme.PropTypes.bool, defaultTheme.PropTypes.string]),
110
+ indeterminate: defaultTheme.PropTypes.bool,
111
+ onChange: defaultTheme.PropTypes.func,
112
+ onBlur: defaultTheme.PropTypes.func,
113
+ className: defaultTheme.PropTypes.string,
114
+ style: defaultTheme.PropTypes.object
115
+ } : {};
116
+ Checkbox.defaultProps = {
117
+ disabled: false,
118
+ indeterminate: false
119
+ };
120
+
121
+ exports.Checkbox = Checkbox;
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var defaultTheme = require('./defaultTheme-d8298500.js');
3
+ var defaultTheme = require('./defaultTheme-38b83bb5.js');
4
4
  var React = require('react');
5
5
  var lodash = require('lodash');
6
6
  var styled = require('styled-components');
@@ -0,0 +1,79 @@
1
+ 'use strict';
2
+
3
+ var defaultTheme = require('./defaultTheme-38b83bb5.js');
4
+ var React = require('react');
5
+ var nanoid = require('nanoid');
6
+ var polished = require('polished');
7
+ var styled = require('styled-components');
8
+
9
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
10
+
11
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
12
+ var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
13
+
14
+ var _templateObject, _templateObject2, _templateObject3;
15
+ var radioSize = '18px';
16
+ var RadioLabel = styled__default["default"].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject || (_templateObject = defaultTheme._taggedTemplateLiteral(["\n padding-left: ", ";\n font-weight: 400;\n font-size: 0.875rem;\n\n ", ";\n"])), polished.math("".concat(radioSize, " + 10px")), function (props) {
17
+ return props.theme.themeProp('color', props.theme.getColor('gray-300'), props.theme.getColor('gray-600'));
18
+ });
19
+ var Radio$1 = styled__default["default"].label.attrs(defaultTheme.applyDefaultTheme)(_templateObject2 || (_templateObject2 = defaultTheme._taggedTemplateLiteral(["\n display: block;\n position: relative;\n cursor: pointer;\n line-height: ", ";\n user-select: none;\n\n &::before {\n content: '';\n position: absolute;\n border: 2px solid ", ";\n width: ", ";\n height: ", ";\n top: 0;\n border-radius: 50%;\n transition: all 200ms;\n box-sizing: border-box;\n }\n\n &::after {\n content: '';\n position: absolute;\n width: 8px;\n height: 8px;\n top: 5px;\n left: 5px;\n border-radius: 50%;\n transform: scale(0);\n transition: all 200ms;\n }\n\n &:has(input:checked) {\n ::before {\n border-color: ", ";\n }\n\n ::after {\n background: ", ";\n transform: scale(1);\n }\n\n ", " {\n opacity: 1;\n }\n }\n & {\n input[type='radio'] {\n position: absolute;\n opacity: 0;\n pointer-events: none;\n }\n }\n\n ", "\n"])), radioSize, function (props) {
20
+ return props.theme.getColor('gray-300');
21
+ }, radioSize, radioSize, function (props) {
22
+ return props.theme.getColor('emerald-500');
23
+ }, function (props) {
24
+ return props.theme.getColor('emerald-500');
25
+ }, RadioLabel, function (props) {
26
+ return props.disabled && styled.css(_templateObject3 || (_templateObject3 = defaultTheme._taggedTemplateLiteral(["\n opacity: 0.5;\n cursor: not-allowed;\n "])));
27
+ });
28
+
29
+ var _excluded = ["name", "value", "checked", "defaultChecked", "disabled", "label", "className", "style", "onChange", "onBlur"];
30
+ var Radio = React__default["default"].forwardRef(function Radio(_ref, forwardedRef) {
31
+ var name = _ref.name,
32
+ value = _ref.value,
33
+ checked = _ref.checked,
34
+ defaultChecked = _ref.defaultChecked,
35
+ disabled = _ref.disabled,
36
+ label = _ref.label,
37
+ className = _ref.className,
38
+ style = _ref.style,
39
+ onChange = _ref.onChange,
40
+ onBlur = _ref.onBlur,
41
+ rest = defaultTheme._objectWithoutProperties(_ref, _excluded);
42
+ var _useState = React.useState(nanoid.nanoid()),
43
+ _useState2 = defaultTheme._slicedToArray(_useState, 1),
44
+ uniqueId = _useState2[0];
45
+ return React__default["default"].createElement(Radio$1, {
46
+ htmlFor: uniqueId,
47
+ disabled: disabled,
48
+ className: className,
49
+ style: style
50
+ }, React__default["default"].createElement("input", defaultTheme._extends({
51
+ ref: forwardedRef,
52
+ type: "radio",
53
+ name: name,
54
+ value: value,
55
+ checked: checked,
56
+ defaultChecked: defaultChecked,
57
+ disabled: disabled,
58
+ id: uniqueId,
59
+ onChange: onChange,
60
+ onBlur: onBlur
61
+ }, rest)), React__default["default"].createElement(RadioLabel, null, label));
62
+ });
63
+ Radio.propTypes = process.env.NODE_ENV !== "production" ? {
64
+ label: defaultTheme.PropTypes.any,
65
+ name: defaultTheme.PropTypes.string.isRequired,
66
+ value: defaultTheme.PropTypes.any.isRequired,
67
+ checked: defaultTheme.PropTypes.bool,
68
+ defaultChecked: defaultTheme.PropTypes.bool,
69
+ disabled: defaultTheme.PropTypes.bool,
70
+ className: defaultTheme.PropTypes.string,
71
+ style: defaultTheme.PropTypes.object,
72
+ onChange: defaultTheme.PropTypes.func,
73
+ onBlur: defaultTheme.PropTypes.func
74
+ } : {};
75
+ Radio.defaultProps = {
76
+ disabled: false
77
+ };
78
+
79
+ exports.Radio = Radio;
@@ -0,0 +1,98 @@
1
+ 'use strict';
2
+
3
+ var defaultTheme = require('./defaultTheme-38b83bb5.js');
4
+ var React = require('react');
5
+ var nanoid = require('nanoid');
6
+ var polished = require('polished');
7
+ var styled = require('styled-components');
8
+
9
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
10
+
11
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
12
+ var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
13
+
14
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
15
+ var switchButtonSize = '16px';
16
+ var Switch$1 = styled__default["default"].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject || (_templateObject = defaultTheme._taggedTemplateLiteral(["\n * {\n box-sizing: border-box;\n }\n\n display: flex;\n flex-direction: column;\n\n ", "\n"])), function (props) {
17
+ return props.disabled && styled.css(_templateObject2 || (_templateObject2 = defaultTheme._taggedTemplateLiteral(["\n opacity: 0.5;\n * {\n cursor: not-allowed;\n }\n "])));
18
+ });
19
+ var SwitchIndicator = styled__default["default"].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject3 || (_templateObject3 = defaultTheme._taggedTemplateLiteral(["\n display: inline-block;\n position: relative;\n ", "\n height: ", ";\n width: 32px;\n border-radius: 20px;\n border: 1px solid;\n ", "\n transition: background 200ms;\n"])), function (props) {
20
+ return props.theme.themeProp('background', props.theme.getColor('gray-900'), props.theme.getColor('gray-200'));
21
+ }, polished.math("".concat(switchButtonSize, " + 2px")), function (props) {
22
+ return props.theme.themeProp('border-color', props.theme.getColor('gray-500'), props.theme.getColor('gray-300'));
23
+ });
24
+ var SwitchIndicatorButton = styled__default["default"].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject4 || (_templateObject4 = defaultTheme._taggedTemplateLiteral(["\n position: absolute;\n ", "\n height: ", ";\n width: ", ";\n border-radius: 50%;\n box-shadow: ", " 0 0px 2px 0px;\n transition: left 200ms;\n"])), function (props) {
25
+ return props.theme.themeProp('background', props.theme.getColor('gray-200'), props.theme.getColor('white'));
26
+ }, switchButtonSize, switchButtonSize, function (props) {
27
+ return props.theme.getColor('gray-500');
28
+ });
29
+ var SwitchIndicatorLabelText = styled__default["default"].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject5 || (_templateObject5 = defaultTheme._taggedTemplateLiteral(["\n padding-left: 10px;\n font-weight: 400;\n font-size: 0.875rem;\n line-height: 18px;\n\n ", ";\n"])), function (props) {
30
+ return props.theme.themeProp('color', props.theme.getColor('gray-300'), props.theme.getColor('gray-600'));
31
+ });
32
+ var SwitchLabel = styled__default["default"].label.attrs(defaultTheme.applyDefaultTheme)(_templateObject6 || (_templateObject6 = defaultTheme._taggedTemplateLiteral(["\n display: inline-flex;\n margin-right: auto;\n cursor: pointer;\n\n input[type='checkbox'] {\n position: absolute;\n opacity: 0;\n }\n\n &:has(input[type='checkbox']:not(:checked)) {\n ", " {\n left: 0;\n }\n }\n\n &:has(input[type='checkbox']:checked) {\n ", " {\n left: calc(100% - ", ");\n }\n\n ", " {\n background: ", ";\n\n ", "\n }\n }\n\n &:has(input[type='checkbox']:focus-visible) {\n ", " {\n ", "\n }\n }\n"])), SwitchIndicatorButton, SwitchIndicatorButton, switchButtonSize, SwitchIndicator, function (props) {
33
+ return props.theme.getColor('emerald-500');
34
+ }, function (props) {
35
+ return props.theme.themeProp('border-color', props.theme.getColor('gray-400'), props.theme.getColor('gray-300'), 1);
36
+ }, SwitchIndicatorButton, function (props) {
37
+ return props.theme.themeProp('outline', "8px solid ".concat(polished.rgba(props.theme.getColor('emerald-500'), 0.5)), "8px solid ".concat(polished.rgba(props.theme.getColor('emerald-500'), 0.3)), 1);
38
+ });
39
+ var Description = styled__default["default"].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject7 || (_templateObject7 = defaultTheme._taggedTemplateLiteral(["\n margin: ", " 0 0 0;\n font-size: 0.75rem;\n line-height: 1.333;\n\n ", ";\n"])), function (props) {
40
+ return props.spaciousDescription ? '16px' : '6px';
41
+ }, function (props) {
42
+ return props.theme.themeProp('color', props.theme.getColor('gray-400'), props.theme.getColor('gray-500'));
43
+ });
44
+
45
+ var Switch = React__default["default"].forwardRef(function Switch(_ref, forwardedRef) {
46
+ var name = _ref.name,
47
+ checked = _ref.checked,
48
+ defaultChecked = _ref.defaultChecked,
49
+ label = _ref.label,
50
+ disabled = _ref.disabled,
51
+ description = _ref.description,
52
+ spaciousDescription = _ref.spaciousDescription,
53
+ className = _ref.className,
54
+ style = _ref.style,
55
+ onChange = _ref.onChange,
56
+ onBlur = _ref.onBlur;
57
+ var _useState = React.useState(nanoid.nanoid()),
58
+ _useState2 = defaultTheme._slicedToArray(_useState, 1),
59
+ uniqueId = _useState2[0];
60
+ return React__default["default"].createElement(Switch$1, {
61
+ disabled: disabled,
62
+ className: className,
63
+ style: style
64
+ }, React__default["default"].createElement(SwitchLabel, {
65
+ htmlFor: uniqueId
66
+ }, React__default["default"].createElement("input", {
67
+ ref: forwardedRef,
68
+ checked: checked,
69
+ defaultChecked: defaultChecked,
70
+ disabled: disabled,
71
+ id: uniqueId,
72
+ name: name,
73
+ type: "checkbox",
74
+ onBlur: onBlur,
75
+ onChange: onChange
76
+ }), React__default["default"].createElement(SwitchIndicator, null, React__default["default"].createElement(SwitchIndicatorButton, null)), typeof label === 'string' && label.length > 0 && React__default["default"].createElement(SwitchIndicatorLabelText, null, label)), typeof description === 'string' && description.length > 0 && React__default["default"].createElement(Description, {
77
+ spaciousDescription: spaciousDescription
78
+ }, description));
79
+ });
80
+ Switch.propTypes = process.env.NODE_ENV !== "production" ? {
81
+ children: defaultTheme.PropTypes.any,
82
+ name: defaultTheme.PropTypes.string.isRequired,
83
+ checked: defaultTheme.PropTypes.bool,
84
+ defaultChecked: defaultTheme.PropTypes.bool,
85
+ label: defaultTheme.PropTypes.string,
86
+ disabled: defaultTheme.PropTypes.bool,
87
+ description: defaultTheme.PropTypes.string,
88
+ spaciousDescription: defaultTheme.PropTypes.bool,
89
+ className: defaultTheme.PropTypes.string,
90
+ style: defaultTheme.PropTypes.object,
91
+ onChange: defaultTheme.PropTypes.func,
92
+ onBlur: defaultTheme.PropTypes.func
93
+ } : {};
94
+ Switch.defaultProps = {
95
+ disabled: false
96
+ };
97
+
98
+ exports.Switch = Switch;
@@ -0,0 +1,164 @@
1
+ 'use strict';
2
+
3
+ var defaultTheme = require('./defaultTheme-38b83bb5.js');
4
+ var React = require('react');
5
+ var nanoid = require('nanoid');
6
+ var styled = require('styled-components');
7
+ var lodash = require('lodash');
8
+
9
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
10
+
11
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
12
+ var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
13
+
14
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17;
15
+ var activeLabel = styled.css(_templateObject || (_templateObject = defaultTheme._taggedTemplateLiteral(["\n font-size: 0.75rem;\n padding: 0 3px;\n top: -7px;\n letter-spacing: 0.03em;\n left: 8px !important;\n opacity: 1 !important;\n"])));
16
+ var placeholderBaseStyle = styled.css(_templateObject2 || (_templateObject2 = defaultTheme._taggedTemplateLiteral(["\n ", "\n\n ", "\n"])), function (props) {
17
+ return props.theme.themeProp('color', props.theme.getColor('gray-300'), props.theme.getColor('gray-600'));
18
+ }, function (props) {
19
+ return props.theme.themeProp('opacity', 0.6, 0.5);
20
+ });
21
+ var TextInputField = styled__default["default"].textarea.attrs(defaultTheme.applyDefaultTheme)(_templateObject3 || (_templateObject3 = defaultTheme._taggedTemplateLiteral(["\n display: block;\n width: 100%;\n font-family: inherit;\n font-size: 0.875rem;\n border-radius: 2px;\n padding: 13px 10px;\n resize: vertical;\n ", "\n ", "\n border: 1px solid;\n ", "\n border-radius: 3px;\n box-sizing: border-box;\n appearance: none;\n transition: border-color 350ms;\n\n ", "\n ", "\n ", "\n\n &::placeholder {\n ", "\n\n ", "\n }\n\n :focus {\n outline: none;\n ", "\n }\n"])), function (props) {
22
+ return props.theme.themeProp('color', props.theme.getColor('gray-100'), props.theme.getColor('gray-900'));
23
+ }, function (props) {
24
+ return props.theme.themeProp('background', props.theme.getColor('gray-900'), props.theme.getColor('white'));
25
+ }, function (props) {
26
+ return props.theme.themeProp('border-color', props.theme.getColor('gray-500'), props.theme.getColor('gray-400'));
27
+ }, function (props) {
28
+ return props.warning && styled.css(_templateObject4 || (_templateObject4 = defaultTheme._taggedTemplateLiteral(["\n border-color: ", " !important;\n "])), props.theme.getColor('orange-500'));
29
+ }, function (props) {
30
+ return props.error && styled.css(_templateObject5 || (_templateObject5 = defaultTheme._taggedTemplateLiteral(["\n border-color: ", " !important;\n "])), props.theme.getColor('red-500'));
31
+ }, function (props) {
32
+ return props.hasIcon && styled.css(_templateObject6 || (_templateObject6 = defaultTheme._taggedTemplateLiteral(["\n padding-left: 35px;\n "])));
33
+ }, function (props) {
34
+ return props.theme.themeProp('color', props.theme.getColor('gray-300'), props.theme.getColor('gray-600'), 1);
35
+ }, function (props) {
36
+ return props.theme.themeProp('opacity', 0.6, 0.5, 1);
37
+ }, function (props) {
38
+ return props.theme.themeProp('border-color', props.theme.getColor('gray-500'), props.theme.getColor('gray-600'));
39
+ });
40
+ var TextInputLabel = styled__default["default"].label.attrs(defaultTheme.applyDefaultTheme)(_templateObject7 || (_templateObject7 = defaultTheme._taggedTemplateLiteral(["\n position: absolute;\n top: 13px;\n left: 11px;\n line-height: 1.2;\n font-size: 0.875rem;\n transition: all 150ms;\n\n ", ";\n\n ", "\n\n ", "\n\n content: \"\";\n\n ", "\n"])), placeholderBaseStyle, function (props) {
41
+ return props.theme.themeProp('background', "linear-gradient(0deg, ".concat(props.theme.getColor('gray-900'), " calc(50% + 1px), transparent 50%)"), "linear-gradient(0deg, ".concat(props.theme.getColor('white'), " calc(50% + 1px), transparent 50%)"));
42
+ }, function (props) {
43
+ return props.hasPlaceholder && styled.css(_templateObject8 || (_templateObject8 = defaultTheme._taggedTemplateLiteral(["\n ", ";\n ", "\n "])), activeLabel, props.error && styled.css(_templateObject9 || (_templateObject9 = defaultTheme._taggedTemplateLiteral(["\n color: ", " !important;\n "])), props.theme.getColor('red-500')));
44
+ }, function (props) {
45
+ return props.hasIcon && styled.css(_templateObject10 || (_templateObject10 = defaultTheme._taggedTemplateLiteral(["\n left: 35px;\n "])));
46
+ });
47
+ var TextInputFieldIcon = styled__default["default"].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject11 || (_templateObject11 = defaultTheme._taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n left: 0;\n height: 2.625rem;\n display: flex;\n padding: 0 10px;\n\n svg {\n width: 15px;\n opacity: 0.6;\n transition: opacity 250ms;\n }\n"])));
48
+ var TextInput = styled__default["default"].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject12 || (_templateObject12 = defaultTheme._taggedTemplateLiteral(["\n position: relative;\n\n &:focus-within {\n ", " {\n ", ";\n }\n\n ", " {\n svg {\n opacity: 1;\n }\n }\n }\n\n ", ":not(:placeholder-shown) + ", " {\n ", ";\n ", "\n // ", "\n ", "\n }\n\n ", "\n"])), TextInputLabel, activeLabel, TextInputFieldIcon, TextInputField, TextInputLabel, activeLabel, function (props) {
49
+ return props.error && props.theme.themeProp('color', props.theme.getColor('red-200'), props.theme.getColor('red-500'));
50
+ }, function (props) {
51
+ return props.error && styled.css(_templateObject13 || (_templateObject13 = defaultTheme._taggedTemplateLiteral(["\n // color: ", " !important;\n //\n "])), props.theme.getColor('red-500'));
52
+ }, function (props) {
53
+ return props.warning && styled.css(_templateObject14 || (_templateObject14 = defaultTheme._taggedTemplateLiteral(["\n color: ", " !important;\n "])), props.theme.getColor('orange-500'));
54
+ }, function (props) {
55
+ return props.disabled && styled.css(_templateObject15 || (_templateObject15 = defaultTheme._taggedTemplateLiteral(["\n opacity: 0.5;\n\n > * {\n cursor: not-allowed;\n }\n "])));
56
+ });
57
+ var Description = styled__default["default"].p.attrs(defaultTheme.applyDefaultTheme)(_templateObject16 || (_templateObject16 = defaultTheme._taggedTemplateLiteral(["\n margin: 8px 0 0 0;\n padding: 0 0.6875rem;\n font-size: 0.75rem;\n line-height: 1.333;\n\n ", ";\n\n ", "\n"])), function (props) {
58
+ return props.theme.themeProp('color', props.theme.getColor('gray-400'), props.theme.getColor('gray-500'));
59
+ }, function (props) {
60
+ return props.error && styled.css(_templateObject17 || (_templateObject17 = defaultTheme._taggedTemplateLiteral(["\n content: 'error';\n ", "\n "])), props.theme.themeProp('color', props.theme.getColor('red-200'), props.theme.getColor('red-500')));
61
+ });
62
+
63
+ var _excluded = ["value", "defaultValue", "name", "label", "placeholder", "required", "disabled", "autoComplete", "description", "error", "warning", "icon", "rows", "className", "style", "onChange", "onBlur"];
64
+ var TextArea = React__default["default"].forwardRef(function TextArea(_ref, forwardedRef) {
65
+ var value = _ref.value,
66
+ defaultValue = _ref.defaultValue,
67
+ name = _ref.name,
68
+ label = _ref.label,
69
+ placeholder = _ref.placeholder,
70
+ required = _ref.required,
71
+ disabled = _ref.disabled,
72
+ autoComplete = _ref.autoComplete,
73
+ description = _ref.description,
74
+ error = _ref.error,
75
+ warning = _ref.warning,
76
+ icon = _ref.icon,
77
+ rows = _ref.rows,
78
+ className = _ref.className,
79
+ style = _ref.style,
80
+ onChange = _ref.onChange,
81
+ onBlur = _ref.onBlur,
82
+ rest = defaultTheme._objectWithoutProperties(_ref, _excluded);
83
+ var _useState = React.useState(nanoid.nanoid()),
84
+ _useState2 = defaultTheme._slicedToArray(_useState, 1),
85
+ uniqueId = _useState2[0];
86
+ var hasError = React.useMemo(function () {
87
+ if (lodash.isBoolean(error)) {
88
+ return error;
89
+ }
90
+ return !lodash.isEmpty(error);
91
+ }, [error]);
92
+ var hasWarning = React.useMemo(function () {
93
+ if (lodash.isBoolean(warning)) {
94
+ return warning;
95
+ }
96
+ return !lodash.isEmpty(warning);
97
+ }, [warning]);
98
+ var descriptionText = React.useMemo(function () {
99
+ if (!lodash.isEmpty(error)) {
100
+ return error;
101
+ }
102
+ if (!lodash.isEmpty(warning)) {
103
+ return warning;
104
+ }
105
+ if (!lodash.isEmpty(description)) {
106
+ return description;
107
+ }
108
+ return null;
109
+ }, [description, error, warning]);
110
+ return React__default["default"].createElement(TextInput, {
111
+ disabled: disabled,
112
+ error: hasError,
113
+ warning: hasWarning,
114
+ className: className,
115
+ style: style
116
+ }, typeof icon !== 'undefined' && React__default["default"].createElement(TextInputFieldIcon, null, icon), React__default["default"].createElement(TextInputField, defaultTheme._extends({
117
+ ref: forwardedRef,
118
+ rows: rows,
119
+ value: value,
120
+ defaultValue: defaultValue,
121
+ name: name,
122
+ placeholder: placeholder || ' ',
123
+ required: required,
124
+ disabled: disabled,
125
+ autoComplete: autoComplete,
126
+ hasIcon: Boolean(icon),
127
+ error: hasError,
128
+ warning: hasWarning,
129
+ id: "text-input-".concat(uniqueId),
130
+ onChange: onChange,
131
+ onBlur: onBlur
132
+ }, rest)), label && React__default["default"].createElement(TextInputLabel, {
133
+ htmlFor: "text-input-".concat(uniqueId),
134
+ hasPlaceholder: Boolean(placeholder),
135
+ hasIcon: Boolean(icon),
136
+ error: hasError
137
+ }, label, required && ' *'), typeof descriptionText === 'string' && descriptionText.length > 0 && React__default["default"].createElement(Description, {
138
+ error: hasError
139
+ }, descriptionText));
140
+ });
141
+ TextArea.defaultProps = {
142
+ rows: 4
143
+ };
144
+ TextArea.propTypes = process.env.NODE_ENV !== "production" ? {
145
+ value: defaultTheme.PropTypes.string,
146
+ defaultValue: defaultTheme.PropTypes.string,
147
+ name: defaultTheme.PropTypes.string,
148
+ label: defaultTheme.PropTypes.string,
149
+ placeholder: defaultTheme.PropTypes.string,
150
+ required: defaultTheme.PropTypes.bool,
151
+ disabled: defaultTheme.PropTypes.bool,
152
+ autoComplete: defaultTheme.PropTypes.string,
153
+ description: defaultTheme.PropTypes.string,
154
+ error: defaultTheme.PropTypes.oneOfType([defaultTheme.PropTypes.bool, defaultTheme.PropTypes.string]),
155
+ warning: defaultTheme.PropTypes.oneOfType([defaultTheme.PropTypes.bool, defaultTheme.PropTypes.string]),
156
+ icon: defaultTheme.PropTypes.element,
157
+ rows: defaultTheme.PropTypes.oneOfType([defaultTheme.PropTypes.number, defaultTheme.PropTypes.string]),
158
+ className: defaultTheme.PropTypes.string,
159
+ style: defaultTheme.PropTypes.object,
160
+ onChange: defaultTheme.PropTypes.func,
161
+ onBlur: defaultTheme.PropTypes.func
162
+ } : {};
163
+
164
+ exports.TextArea = TextArea;