@spark-web/text-input 1.0.3 → 1.2.0

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.
@@ -0,0 +1,12 @@
1
+ import type { ReactElement } from 'react';
2
+ import type { InputAdornmentProps } from './InputAdornment';
3
+ export declare type AdornmentChild = ReactElement<InputAdornmentProps> | null | undefined;
4
+ export declare type AdornmentsAsChildren = AdornmentChild | [AdornmentChild, AdornmentChild];
5
+ /**
6
+ * Map children for placement within the `TextInput` flex container. Ensures that
7
+ * placeholders are provided for unused placements.
8
+ */
9
+ export declare const childrenToAdornments: (children?: AdornmentsAsChildren) => {
10
+ startAdornment: ReactElement<InputAdornmentProps> | null;
11
+ endAdornment: ReactElement<InputAdornmentProps> | null;
12
+ };
@@ -1,2 +1,6 @@
1
+ export { InputAdornment } from './InputAdornment';
2
+ export { InputContainer } from './InputContainer';
1
3
  export { TextInput, useInput } from './TextInput';
4
+ export type { AdornmentChild } from './childrenToAdornments';
5
+ export type { InputContainerProps } from './InputContainer';
2
6
  export type { TextInputProps, UseInputProps } from './TextInput';
@@ -2,53 +2,238 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
6
5
  var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
7
- var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
8
- var css = require('@emotion/css');
9
- var a11y = require('@spark-web/a11y');
10
6
  var box = require('@spark-web/box');
11
7
  var field = require('@spark-web/field');
12
- var text = require('@spark-web/text');
13
8
  var theme = require('@spark-web/theme');
14
- var internal = require('@spark-web/utils/internal');
15
9
  var react = require('react');
16
10
  var jsxRuntime = require('react/jsx-runtime');
11
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
12
+ var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
13
+ var css = require('@emotion/css');
14
+ var a11y = require('@spark-web/a11y');
15
+ var text = require('@spark-web/text');
16
+
17
+ /**
18
+ * Components like the `SelectInput` may subscribe to the adornment context and
19
+ * change their appearance or behaviour.
20
+ */
21
+ var InputAdornmentContext = /*#__PURE__*/react.createContext(null);
22
+ var placementToPadding = {
23
+ start: {
24
+ paddingLeft: 'medium',
25
+ paddingRight: 'xsmall'
26
+ },
27
+ end: {
28
+ paddingLeft: 'xsmall',
29
+ paddingRight: 'medium'
30
+ }
31
+ };
32
+
33
+ /**
34
+ * Places an element at the "start" or "end" of the input, only one adornment
35
+ * may be provided for each placement. By default, the adornment element will be
36
+ * wrapped to provide alignment and spacing, use the "raw" property to opt-out
37
+ * of this behaviour.
38
+ *
39
+ * @example
40
+ * <TextInput>
41
+ * <InputAdornment placement="start">
42
+ * <Text tone="placeholder">$</Text>
43
+ * </InputAdornment>
44
+ * </TextInput>
45
+ */
46
+ var InputAdornment = function InputAdornment(_ref) {
47
+ var children = _ref.children,
48
+ fieldLabel = _ref.fieldLabel,
49
+ placement = _ref.placement,
50
+ raw = _ref.raw;
51
+
52
+ var _useTheme = theme.useTheme(),
53
+ sizing = _useTheme.sizing;
54
+
55
+ var adornmentContext = react.useMemo(function () {
56
+ return {
57
+ placement: placement
58
+ };
59
+ }, [placement]);
60
+ var _placementToPadding$p = placementToPadding[placement],
61
+ paddingLeft = _placementToPadding$p.paddingLeft,
62
+ paddingRight = _placementToPadding$p.paddingRight;
63
+ var content = children;
64
+
65
+ if (!raw) {
66
+ content = /*#__PURE__*/jsxRuntime.jsx(box.Box, {
67
+ paddingLeft: paddingLeft,
68
+ paddingRight: paddingRight,
69
+ children: /*#__PURE__*/jsxRuntime.jsx(box.Box, {
70
+ display: "flex",
71
+ alignItems: "center",
72
+ justifyContent: "center",
73
+ style: {
74
+ minWidth: sizing.xxsmall
75
+ },
76
+ children: children
77
+ })
78
+ });
79
+ }
80
+
81
+ var wrappedContent = /*#__PURE__*/jsxRuntime.jsx(InputAdornmentContext.Provider, {
82
+ value: adornmentContext,
83
+ children: content
84
+ });
85
+
86
+ if (fieldLabel) {
87
+ return /*#__PURE__*/jsxRuntime.jsx(FieldAdornment, {
88
+ fieldLabel: fieldLabel,
89
+ children: wrappedContent
90
+ });
91
+ }
92
+
93
+ return wrappedContent;
94
+ };
95
+ /**
96
+ * Wrap the element with a field provider to override the parent field label.
97
+ * Only split-out from `InputAdornment` to avoid the conditional hook rule.
98
+ */
99
+
100
+ var FieldAdornment = function FieldAdornment(_ref2) {
101
+ var children = _ref2.children,
102
+ fieldLabel = _ref2.fieldLabel;
103
+ var parentFieldContext = field.useFieldContext();
104
+ var fieldContext = react.useMemo(function () {
105
+ return _objectSpread(_objectSpread({}, parentFieldContext), {}, {
106
+ accessibilityLabel: fieldLabel
107
+ });
108
+ }, [fieldLabel, parentFieldContext]);
109
+ return /*#__PURE__*/jsxRuntime.jsx(field.FieldContextProvider, {
110
+ value: fieldContext,
111
+ children: children
112
+ });
113
+ };
17
114
 
18
- var _excluded = ["data"],
19
- _excluded2 = ["disabled", "invalid"];
115
+ var _excluded$1 = ["children", "startAdornment", "endAdornment"];
116
+ var InputContainer = function InputContainer(_ref) {
117
+ var children = _ref.children,
118
+ startAdornment = _ref.startAdornment,
119
+ endAdornment = _ref.endAdornment,
120
+ boxProps = _objectWithoutProperties(_ref, _excluded$1);
121
+
122
+ var _useFieldContext = field.useFieldContext(),
123
+ _useFieldContext2 = _slicedToArray(_useFieldContext, 1),
124
+ _useFieldContext2$ = _useFieldContext2[0],
125
+ disabled = _useFieldContext2$.disabled,
126
+ invalid = _useFieldContext2$.invalid;
127
+
128
+ return /*#__PURE__*/jsxRuntime.jsxs(box.Box, _objectSpread(_objectSpread({
129
+ position: "relative",
130
+ background: disabled ? 'inputDisabled' : 'input'
131
+ }, boxProps), {}, {
132
+ children: [startAdornment, children, /*#__PURE__*/jsxRuntime.jsx(FocusIndicator, {
133
+ invalid: invalid
134
+ }), endAdornment]
135
+ }));
136
+ };
137
+
138
+ var FocusIndicator = function FocusIndicator(_ref2) {
139
+ var invalid = _ref2.invalid;
140
+ return /*#__PURE__*/jsxRuntime.jsx(box.Box, {
141
+ "aria-hidden": "true",
142
+ as: "span",
143
+ data: {
144
+ 'focus-indicator': 'true'
145
+ } // Styles
146
+ ,
147
+ border: invalid ? 'critical' : 'field',
148
+ borderRadius: "small",
149
+ position: "absolute",
150
+ bottom: 0,
151
+ left: 0,
152
+ right: 0,
153
+ top: 0,
154
+ className: css.css({
155
+ pointerEvents: 'none'
156
+ })
157
+ });
158
+ };
159
+
160
+ /**
161
+ * Map children for placement within the `TextInput` flex container. Ensures that
162
+ * placeholders are provided for unused placements.
163
+ */
164
+ var childrenToAdornments = function childrenToAdornments(children) {
165
+ var startAdornment = null;
166
+ var endAdornment = null;
167
+
168
+ if (!children) {
169
+ return {
170
+ startAdornment: startAdornment,
171
+ endAdornment: endAdornment
172
+ };
173
+ }
174
+
175
+ react.Children.forEach(children, function (child) {
176
+ if ( /*#__PURE__*/react.isValidElement(child)) {
177
+ if (child.props.placement === 'end') {
178
+ endAdornment = child;
179
+ }
180
+
181
+ if (child.props.placement === 'start') {
182
+ startAdornment = child;
183
+ }
184
+ }
185
+ });
186
+ return {
187
+ startAdornment: startAdornment,
188
+ endAdornment: endAdornment
189
+ };
190
+ };
191
+
192
+ var _excluded = ["children", "data"];
20
193
 
21
194
  /** Organize and emphasize information quickly and effectively in a list of text elements. */
22
195
  var TextInput = /*#__PURE__*/react.forwardRef(function (_ref, forwardedRef) {
23
- var data = _ref.data,
196
+ var children = _ref.children,
197
+ data = _ref.data,
24
198
  consumerProps = _objectWithoutProperties(_ref, _excluded);
25
199
 
26
200
  var _useFieldContext = field.useFieldContext(),
27
- disabled = _useFieldContext.disabled,
28
- invalid = _useFieldContext.invalid,
29
- a11yProps = _objectWithoutProperties(_useFieldContext, _excluded2);
201
+ _useFieldContext2 = _slicedToArray(_useFieldContext, 2),
202
+ _useFieldContext2$ = _useFieldContext2[0],
203
+ disabled = _useFieldContext2$.disabled,
204
+ invalid = _useFieldContext2$.invalid,
205
+ a11yProps = _useFieldContext2[1];
206
+
207
+ var _childrenToAdornments = childrenToAdornments(children),
208
+ startAdornment = _childrenToAdornments.startAdornment,
209
+ endAdornment = _childrenToAdornments.endAdornment;
30
210
 
31
- var inputStyles = useInput({
32
- disabled: disabled,
33
- invalid: invalid
211
+ return /*#__PURE__*/jsxRuntime.jsx(InputContainer, {
212
+ display: "inline-flex",
213
+ alignItems: "center",
214
+ startAdornment: startAdornment,
215
+ endAdornment: endAdornment,
216
+ children: /*#__PURE__*/jsxRuntime.jsx(box.Box, _objectSpread(_objectSpread(_objectSpread({}, consumerProps), a11yProps), {}, {
217
+ as: "input",
218
+ ref: forwardedRef,
219
+ data: data,
220
+ disabled: disabled,
221
+ position: "relative" // Styles
222
+ ,
223
+ flex: 1,
224
+ height: "medium",
225
+ paddingX: "medium",
226
+ paddingLeft: startAdornment ? 'none' : 'medium',
227
+ paddingRight: endAdornment ? 'none' : 'medium',
228
+ className: css.css(useInput({
229
+ disabled: disabled,
230
+ invalid: invalid
231
+ }))
232
+ }))
34
233
  });
35
- return /*#__PURE__*/jsxRuntime.jsx(box.Box, _objectSpread(_objectSpread(_objectSpread({
36
- as: "input",
37
- disabled: disabled,
38
- ref: forwardedRef // styles
39
- ,
40
- background: disabled ? 'inputDisabled' : 'input',
41
- border: invalid ? 'critical' : 'field',
42
- borderRadius: "small",
43
- height: "medium",
44
- paddingX: "medium",
45
- className: css.css(inputStyles)
46
- }, data ? internal.buildDataAttributes(data) : null), a11yProps), consumerProps));
47
234
  });
48
- TextInput.displayName = 'TextInput'; // Styled components
49
- // ------------------------------
50
-
51
- function useInput(_ref2) {
235
+ TextInput.displayName = 'TextInput';
236
+ var useInput = function useInput(_ref2) {
52
237
  var disabled = _ref2.disabled;
53
238
  var theme$1 = theme.useTheme();
54
239
  var focusRingStyles = a11y.useFocusRing({
@@ -66,16 +251,18 @@ function useInput(_ref2) {
66
251
  responsiveStyles = _textStyles[1];
67
252
 
68
253
  return _objectSpread(_objectSpread(_objectSpread({}, typographyStyles), responsiveStyles), {}, {
254
+ ':focus': {
255
+ outline: 'none'
256
+ },
69
257
  ':enabled': {
70
- '&:hover': {
71
- borderColor: theme$1.border.color.fieldHover
72
- },
73
- '&:focus': _objectSpread(_objectSpread({}, focusRingStyles), {}, {
258
+ ':focus + [data-focus-indicator]': _objectSpread({
74
259
  borderColor: theme$1.border.color.fieldAccent
75
- })
260
+ }, focusRingStyles)
76
261
  }
77
262
  });
78
- }
263
+ };
79
264
 
265
+ exports.InputAdornment = InputAdornment;
266
+ exports.InputContainer = InputContainer;
80
267
  exports.TextInput = TextInput;
81
268
  exports.useInput = useInput;
@@ -2,53 +2,238 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
6
5
  var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
7
- var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
8
- var css = require('@emotion/css');
9
- var a11y = require('@spark-web/a11y');
10
6
  var box = require('@spark-web/box');
11
7
  var field = require('@spark-web/field');
12
- var text = require('@spark-web/text');
13
8
  var theme = require('@spark-web/theme');
14
- var internal = require('@spark-web/utils/internal');
15
9
  var react = require('react');
16
10
  var jsxRuntime = require('react/jsx-runtime');
11
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
12
+ var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
13
+ var css = require('@emotion/css');
14
+ var a11y = require('@spark-web/a11y');
15
+ var text = require('@spark-web/text');
16
+
17
+ /**
18
+ * Components like the `SelectInput` may subscribe to the adornment context and
19
+ * change their appearance or behaviour.
20
+ */
21
+ var InputAdornmentContext = /*#__PURE__*/react.createContext(null);
22
+ var placementToPadding = {
23
+ start: {
24
+ paddingLeft: 'medium',
25
+ paddingRight: 'xsmall'
26
+ },
27
+ end: {
28
+ paddingLeft: 'xsmall',
29
+ paddingRight: 'medium'
30
+ }
31
+ };
32
+
33
+ /**
34
+ * Places an element at the "start" or "end" of the input, only one adornment
35
+ * may be provided for each placement. By default, the adornment element will be
36
+ * wrapped to provide alignment and spacing, use the "raw" property to opt-out
37
+ * of this behaviour.
38
+ *
39
+ * @example
40
+ * <TextInput>
41
+ * <InputAdornment placement="start">
42
+ * <Text tone="placeholder">$</Text>
43
+ * </InputAdornment>
44
+ * </TextInput>
45
+ */
46
+ var InputAdornment = function InputAdornment(_ref) {
47
+ var children = _ref.children,
48
+ fieldLabel = _ref.fieldLabel,
49
+ placement = _ref.placement,
50
+ raw = _ref.raw;
51
+
52
+ var _useTheme = theme.useTheme(),
53
+ sizing = _useTheme.sizing;
54
+
55
+ var adornmentContext = react.useMemo(function () {
56
+ return {
57
+ placement: placement
58
+ };
59
+ }, [placement]);
60
+ var _placementToPadding$p = placementToPadding[placement],
61
+ paddingLeft = _placementToPadding$p.paddingLeft,
62
+ paddingRight = _placementToPadding$p.paddingRight;
63
+ var content = children;
64
+
65
+ if (!raw) {
66
+ content = /*#__PURE__*/jsxRuntime.jsx(box.Box, {
67
+ paddingLeft: paddingLeft,
68
+ paddingRight: paddingRight,
69
+ children: /*#__PURE__*/jsxRuntime.jsx(box.Box, {
70
+ display: "flex",
71
+ alignItems: "center",
72
+ justifyContent: "center",
73
+ style: {
74
+ minWidth: sizing.xxsmall
75
+ },
76
+ children: children
77
+ })
78
+ });
79
+ }
80
+
81
+ var wrappedContent = /*#__PURE__*/jsxRuntime.jsx(InputAdornmentContext.Provider, {
82
+ value: adornmentContext,
83
+ children: content
84
+ });
85
+
86
+ if (fieldLabel) {
87
+ return /*#__PURE__*/jsxRuntime.jsx(FieldAdornment, {
88
+ fieldLabel: fieldLabel,
89
+ children: wrappedContent
90
+ });
91
+ }
92
+
93
+ return wrappedContent;
94
+ };
95
+ /**
96
+ * Wrap the element with a field provider to override the parent field label.
97
+ * Only split-out from `InputAdornment` to avoid the conditional hook rule.
98
+ */
99
+
100
+ var FieldAdornment = function FieldAdornment(_ref2) {
101
+ var children = _ref2.children,
102
+ fieldLabel = _ref2.fieldLabel;
103
+ var parentFieldContext = field.useFieldContext();
104
+ var fieldContext = react.useMemo(function () {
105
+ return _objectSpread(_objectSpread({}, parentFieldContext), {}, {
106
+ accessibilityLabel: fieldLabel
107
+ });
108
+ }, [fieldLabel, parentFieldContext]);
109
+ return /*#__PURE__*/jsxRuntime.jsx(field.FieldContextProvider, {
110
+ value: fieldContext,
111
+ children: children
112
+ });
113
+ };
17
114
 
18
- var _excluded = ["data"],
19
- _excluded2 = ["disabled", "invalid"];
115
+ var _excluded$1 = ["children", "startAdornment", "endAdornment"];
116
+ var InputContainer = function InputContainer(_ref) {
117
+ var children = _ref.children,
118
+ startAdornment = _ref.startAdornment,
119
+ endAdornment = _ref.endAdornment,
120
+ boxProps = _objectWithoutProperties(_ref, _excluded$1);
121
+
122
+ var _useFieldContext = field.useFieldContext(),
123
+ _useFieldContext2 = _slicedToArray(_useFieldContext, 1),
124
+ _useFieldContext2$ = _useFieldContext2[0],
125
+ disabled = _useFieldContext2$.disabled,
126
+ invalid = _useFieldContext2$.invalid;
127
+
128
+ return /*#__PURE__*/jsxRuntime.jsxs(box.Box, _objectSpread(_objectSpread({
129
+ position: "relative",
130
+ background: disabled ? 'inputDisabled' : 'input'
131
+ }, boxProps), {}, {
132
+ children: [startAdornment, children, /*#__PURE__*/jsxRuntime.jsx(FocusIndicator, {
133
+ invalid: invalid
134
+ }), endAdornment]
135
+ }));
136
+ };
137
+
138
+ var FocusIndicator = function FocusIndicator(_ref2) {
139
+ var invalid = _ref2.invalid;
140
+ return /*#__PURE__*/jsxRuntime.jsx(box.Box, {
141
+ "aria-hidden": "true",
142
+ as: "span",
143
+ data: {
144
+ 'focus-indicator': 'true'
145
+ } // Styles
146
+ ,
147
+ border: invalid ? 'critical' : 'field',
148
+ borderRadius: "small",
149
+ position: "absolute",
150
+ bottom: 0,
151
+ left: 0,
152
+ right: 0,
153
+ top: 0,
154
+ className: css.css({
155
+ pointerEvents: 'none'
156
+ })
157
+ });
158
+ };
159
+
160
+ /**
161
+ * Map children for placement within the `TextInput` flex container. Ensures that
162
+ * placeholders are provided for unused placements.
163
+ */
164
+ var childrenToAdornments = function childrenToAdornments(children) {
165
+ var startAdornment = null;
166
+ var endAdornment = null;
167
+
168
+ if (!children) {
169
+ return {
170
+ startAdornment: startAdornment,
171
+ endAdornment: endAdornment
172
+ };
173
+ }
174
+
175
+ react.Children.forEach(children, function (child) {
176
+ if ( /*#__PURE__*/react.isValidElement(child)) {
177
+ if (child.props.placement === 'end') {
178
+ endAdornment = child;
179
+ }
180
+
181
+ if (child.props.placement === 'start') {
182
+ startAdornment = child;
183
+ }
184
+ }
185
+ });
186
+ return {
187
+ startAdornment: startAdornment,
188
+ endAdornment: endAdornment
189
+ };
190
+ };
191
+
192
+ var _excluded = ["children", "data"];
20
193
 
21
194
  /** Organize and emphasize information quickly and effectively in a list of text elements. */
22
195
  var TextInput = /*#__PURE__*/react.forwardRef(function (_ref, forwardedRef) {
23
- var data = _ref.data,
196
+ var children = _ref.children,
197
+ data = _ref.data,
24
198
  consumerProps = _objectWithoutProperties(_ref, _excluded);
25
199
 
26
200
  var _useFieldContext = field.useFieldContext(),
27
- disabled = _useFieldContext.disabled,
28
- invalid = _useFieldContext.invalid,
29
- a11yProps = _objectWithoutProperties(_useFieldContext, _excluded2);
201
+ _useFieldContext2 = _slicedToArray(_useFieldContext, 2),
202
+ _useFieldContext2$ = _useFieldContext2[0],
203
+ disabled = _useFieldContext2$.disabled,
204
+ invalid = _useFieldContext2$.invalid,
205
+ a11yProps = _useFieldContext2[1];
206
+
207
+ var _childrenToAdornments = childrenToAdornments(children),
208
+ startAdornment = _childrenToAdornments.startAdornment,
209
+ endAdornment = _childrenToAdornments.endAdornment;
30
210
 
31
- var inputStyles = useInput({
32
- disabled: disabled,
33
- invalid: invalid
211
+ return /*#__PURE__*/jsxRuntime.jsx(InputContainer, {
212
+ display: "inline-flex",
213
+ alignItems: "center",
214
+ startAdornment: startAdornment,
215
+ endAdornment: endAdornment,
216
+ children: /*#__PURE__*/jsxRuntime.jsx(box.Box, _objectSpread(_objectSpread(_objectSpread({}, consumerProps), a11yProps), {}, {
217
+ as: "input",
218
+ ref: forwardedRef,
219
+ data: data,
220
+ disabled: disabled,
221
+ position: "relative" // Styles
222
+ ,
223
+ flex: 1,
224
+ height: "medium",
225
+ paddingX: "medium",
226
+ paddingLeft: startAdornment ? 'none' : 'medium',
227
+ paddingRight: endAdornment ? 'none' : 'medium',
228
+ className: css.css(useInput({
229
+ disabled: disabled,
230
+ invalid: invalid
231
+ }))
232
+ }))
34
233
  });
35
- return /*#__PURE__*/jsxRuntime.jsx(box.Box, _objectSpread(_objectSpread(_objectSpread({
36
- as: "input",
37
- disabled: disabled,
38
- ref: forwardedRef // styles
39
- ,
40
- background: disabled ? 'inputDisabled' : 'input',
41
- border: invalid ? 'critical' : 'field',
42
- borderRadius: "small",
43
- height: "medium",
44
- paddingX: "medium",
45
- className: css.css(inputStyles)
46
- }, data ? internal.buildDataAttributes(data) : null), a11yProps), consumerProps));
47
234
  });
48
- TextInput.displayName = 'TextInput'; // Styled components
49
- // ------------------------------
50
-
51
- function useInput(_ref2) {
235
+ TextInput.displayName = 'TextInput';
236
+ var useInput = function useInput(_ref2) {
52
237
  var disabled = _ref2.disabled;
53
238
  var theme$1 = theme.useTheme();
54
239
  var focusRingStyles = a11y.useFocusRing({
@@ -66,16 +251,18 @@ function useInput(_ref2) {
66
251
  responsiveStyles = _textStyles[1];
67
252
 
68
253
  return _objectSpread(_objectSpread(_objectSpread({}, typographyStyles), responsiveStyles), {}, {
254
+ ':focus': {
255
+ outline: 'none'
256
+ },
69
257
  ':enabled': {
70
- '&:hover': {
71
- borderColor: theme$1.border.color.fieldHover
72
- },
73
- '&:focus': _objectSpread(_objectSpread({}, focusRingStyles), {}, {
258
+ ':focus + [data-focus-indicator]': _objectSpread({
74
259
  borderColor: theme$1.border.color.fieldAccent
75
- })
260
+ }, focusRingStyles)
76
261
  }
77
262
  });
78
- }
263
+ };
79
264
 
265
+ exports.InputAdornment = InputAdornment;
266
+ exports.InputContainer = InputContainer;
80
267
  exports.TextInput = TextInput;
81
268
  exports.useInput = useInput;