@wecareu/input-text 0.1.1

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 (49) hide show
  1. package/README.md +36 -0
  2. package/lib/commonjs/InputText.js +350 -0
  3. package/lib/commonjs/InputText.js.map +1 -0
  4. package/lib/commonjs/InputText.types.js +6 -0
  5. package/lib/commonjs/InputText.types.js.map +1 -0
  6. package/lib/commonjs/InputTextErrorMessage.js +32 -0
  7. package/lib/commonjs/InputTextErrorMessage.js.map +1 -0
  8. package/lib/commonjs/InputTextIcon.js +65 -0
  9. package/lib/commonjs/InputTextIcon.js.map +1 -0
  10. package/lib/commonjs/animations/shake.js +45 -0
  11. package/lib/commonjs/animations/shake.js.map +1 -0
  12. package/lib/commonjs/index.js +13 -0
  13. package/lib/commonjs/index.js.map +1 -0
  14. package/lib/commonjs/index.stories.js +409 -0
  15. package/lib/commonjs/index.stories.js.map +1 -0
  16. package/lib/module/InputText.js +343 -0
  17. package/lib/module/InputText.js.map +1 -0
  18. package/lib/module/InputText.types.js +2 -0
  19. package/lib/module/InputText.types.js.map +1 -0
  20. package/lib/module/InputTextErrorMessage.js +25 -0
  21. package/lib/module/InputTextErrorMessage.js.map +1 -0
  22. package/lib/module/InputTextIcon.js +58 -0
  23. package/lib/module/InputTextIcon.js.map +1 -0
  24. package/lib/module/animations/shake.js +39 -0
  25. package/lib/module/animations/shake.js.map +1 -0
  26. package/lib/module/index.js +2 -0
  27. package/lib/module/index.js.map +1 -0
  28. package/lib/module/index.stories.js +402 -0
  29. package/lib/module/index.stories.js.map +1 -0
  30. package/lib/typescript/src/InputText.d.ts +5 -0
  31. package/lib/typescript/src/InputText.d.ts.map +1 -0
  32. package/lib/typescript/src/InputText.types.d.ts +146 -0
  33. package/lib/typescript/src/InputText.types.d.ts.map +1 -0
  34. package/lib/typescript/src/InputTextErrorMessage.d.ts +3 -0
  35. package/lib/typescript/src/InputTextErrorMessage.d.ts.map +1 -0
  36. package/lib/typescript/src/InputTextIcon.d.ts +3 -0
  37. package/lib/typescript/src/InputTextIcon.d.ts.map +1 -0
  38. package/lib/typescript/src/animations/shake.d.ts +32 -0
  39. package/lib/typescript/src/animations/shake.d.ts.map +1 -0
  40. package/lib/typescript/src/index.d.ts +3 -0
  41. package/lib/typescript/src/index.d.ts.map +1 -0
  42. package/package.json +66 -0
  43. package/src/InputText.tsx +451 -0
  44. package/src/InputText.types.ts +153 -0
  45. package/src/InputTextErrorMessage.tsx +31 -0
  46. package/src/InputTextIcon.tsx +65 -0
  47. package/src/animations/shake.ts +76 -0
  48. package/src/index.stories.tsx +387 -0
  49. package/src/index.tsx +2 -0
package/README.md ADDED
@@ -0,0 +1,36 @@
1
+ # @wecareu/input-text
2
+
3
+ Componente de campo de texto controlado do Design System WeCareU com suporte a ícones, mensagens de erro e integração completa com o tema.
4
+
5
+ ## Instalação
6
+
7
+ ```bash
8
+ yarn add @wecareu/input-text
9
+ ```
10
+
11
+ > O pacote espera que as dependências `@wecareu/theme`, `@wecareu/icons`, `@wecareu/tokens`, `react` e `react-native` estejam instaladas no projeto.
12
+
13
+ ## Uso Básico
14
+
15
+ ```tsx
16
+ import { InputText } from '@wecareu/input-text'
17
+
18
+ function LoginEmailField(): JSX.Element {
19
+ return <InputText accessibilityLabel='Email' placeholder='Digite seu email' />
20
+ }
21
+ ```
22
+
23
+ ## Documentação
24
+
25
+ - Stories com exemplos de uso: `packages/input-text/src/index.stories.tsx`
26
+ - Props documentadas em `InputText.types.ts`
27
+
28
+ ## Scripts Disponíveis
29
+
30
+ - `yarn build` – Gera bundles (CJS, ESM) e declarações TypeScript
31
+ - `yarn test` – Executa testes unitários
32
+ - `yarn lint` – Executa lint
33
+
34
+ ## Licença
35
+
36
+ UNLICENSED – uso interno WeCareU.
@@ -0,0 +1,350 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.InputText = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _theme = require("@wecareu/theme");
10
+ var _InputTextErrorMessage = require("./InputTextErrorMessage");
11
+ var _InputTextIcon = require("./InputTextIcon");
12
+ var _shake = require("./animations/shake");
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
15
+ const InputText = exports.InputText = /*#__PURE__*/_react.default.forwardRef(function InputText({
16
+ accessibilityRole,
17
+ accessibilityState,
18
+ accessibilityValue: accessibilityValueProp,
19
+ disabled = false,
20
+ errorMessage,
21
+ formatter,
22
+ inputError = false,
23
+ inputStyle,
24
+ leftIcon,
25
+ locale = 'pt',
26
+ maskNumber = false,
27
+ maxLength = 255,
28
+ minLength = 3,
29
+ nextInputRef,
30
+ onChangeText,
31
+ onSubmitEditing,
32
+ onValidation,
33
+ parser,
34
+ placeholder,
35
+ readonly = false,
36
+ rightIcon,
37
+ style,
38
+ testID,
39
+ type = 'text',
40
+ validateOnBlur = true,
41
+ validationMessage,
42
+ validator,
43
+ validatorMessage,
44
+ value,
45
+ ...rest
46
+ }, ref) {
47
+ const theme = (0, _theme.useTheme)();
48
+ const styles = _react.default.useMemo(() => createStyles(theme), [theme]);
49
+ const isEditable = !(disabled || readonly);
50
+ const placeholderColor = theme.colors.text.tertiary;
51
+ const {
52
+ animatedStyle,
53
+ triggerShake
54
+ } = (0, _shake.useShakeAnimation)({
55
+ distance: theme.spacing.sm
56
+ });
57
+ const [touched, setTouched] = _react.default.useState(false);
58
+ const autoConfig = _react.default.useMemo(() => getAutoConfig({
59
+ locale,
60
+ maskNumber,
61
+ type
62
+ }), [locale, maskNumber, type]);
63
+ const appliedFormatter = formatter ?? autoConfig.formatter;
64
+ const appliedParser = parser ?? autoConfig.parser;
65
+ const appliedValidator = validator ?? autoConfig.validator;
66
+ const {
67
+ keyboardType: propKeyboardType,
68
+ secureTextEntry: propSecureTextEntry,
69
+ textContentType: propTextContentType,
70
+ onBlur: textInputOnBlur,
71
+ onEndEditing: textInputOnEndEditing,
72
+ ...textInputProps
73
+ } = rest;
74
+ const appliedKeyboardType = propKeyboardType ?? autoConfig.keyboardType;
75
+ const appliedTextContentType = propTextContentType ?? autoConfig.textContentType;
76
+ const appliedSecureTextEntry = propSecureTextEntry ?? autoConfig.secureTextEntry ?? false;
77
+ const displayValue = _react.default.useMemo(() => appliedFormatter ? appliedFormatter(value) : value, [appliedFormatter, value]);
78
+ const lengthInvalid = value.length < minLength || value.length > maxLength;
79
+ const validatorInvalid = appliedValidator ? !appliedValidator(value) : false;
80
+ const internalHasError = touched && validateOnBlur && isEditable && (lengthInvalid || validatorInvalid);
81
+ const shouldShowError = inputError || internalHasError;
82
+ const effectiveErrorMessage = inputError ? errorMessage : internalHasError ? validatorInvalid ? validatorMessage : lengthInvalid ? validationMessage : undefined : undefined;
83
+ const previousErrorRef = _react.default.useRef(false);
84
+ _react.default.useEffect(() => {
85
+ if (!validateOnBlur || !isEditable) {
86
+ return;
87
+ }
88
+ if (!touched) {
89
+ return;
90
+ }
91
+ onValidation?.(!internalHasError);
92
+ }, [internalHasError, isEditable, onValidation, touched, validateOnBlur]);
93
+ _react.default.useEffect(() => {
94
+ if (shouldShowError && !previousErrorRef.current) {
95
+ triggerShake();
96
+ }
97
+ previousErrorRef.current = shouldShowError;
98
+ }, [shouldShowError, triggerShake]);
99
+ const handleChangeText = _react.default.useCallback(text => {
100
+ if (!isEditable) {
101
+ return;
102
+ }
103
+ const parsedValue = appliedParser ? appliedParser(text) : text;
104
+ onChangeText(parsedValue);
105
+ }, [appliedParser, isEditable, onChangeText]);
106
+ const notifyValidIfDisabled = _react.default.useCallback(() => {
107
+ if (!validateOnBlur) {
108
+ onValidation?.(true);
109
+ }
110
+ }, [onValidation, validateOnBlur]);
111
+ const handleBlur = _react.default.useCallback(event => {
112
+ setTouched(true);
113
+ notifyValidIfDisabled();
114
+ textInputOnBlur?.(event);
115
+ }, [notifyValidIfDisabled, textInputOnBlur]);
116
+ const handleEndEditing = _react.default.useCallback(event => {
117
+ setTouched(true);
118
+ notifyValidIfDisabled();
119
+ textInputOnEndEditing?.(event);
120
+ }, [notifyValidIfDisabled, textInputOnEndEditing]);
121
+ const handleSubmitEditing = _react.default.useCallback(event => {
122
+ setTouched(true);
123
+ notifyValidIfDisabled();
124
+ onSubmitEditing?.(event);
125
+ if (nextInputRef?.current) {
126
+ nextInputRef.current.focus();
127
+ }
128
+ }, [nextInputRef, notifyValidIfDisabled, onSubmitEditing]);
129
+ const mergedAccessibilityState = _react.default.useMemo(() => ({
130
+ ...accessibilityState,
131
+ disabled: !isEditable,
132
+ invalid: shouldShowError
133
+ }), [accessibilityState, isEditable, shouldShowError]);
134
+ const mergedAccessibilityValue = _react.default.useMemo(() => ({
135
+ ...accessibilityValueProp,
136
+ max: maxLength,
137
+ min: minLength,
138
+ now: value.length
139
+ }), [accessibilityValueProp, maxLength, minLength, value]);
140
+ const role = accessibilityRole ?? 'text';
141
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
142
+ style: styles.wrapper
143
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.Animated.View, {
144
+ accessible: false,
145
+ style: [styles.container, !isEditable && styles.containerDisabled, shouldShowError && styles.containerError, animatedStyle, style],
146
+ testID: testID
147
+ }, leftIcon ? /*#__PURE__*/_react.default.createElement(_reactNative.View, {
148
+ style: styles.iconLeft
149
+ }, /*#__PURE__*/_react.default.createElement(_InputTextIcon.InputTextIcon, leftIcon)) : null, /*#__PURE__*/_react.default.createElement(_reactNative.TextInput, _extends({}, textInputProps, {
150
+ accessibilityRole: role,
151
+ accessibilityState: mergedAccessibilityState,
152
+ accessibilityValue: mergedAccessibilityValue,
153
+ editable: isEditable,
154
+ keyboardType: appliedKeyboardType,
155
+ maxLength: maxLength,
156
+ onBlur: handleBlur,
157
+ onChangeText: handleChangeText,
158
+ onEndEditing: handleEndEditing,
159
+ onSubmitEditing: handleSubmitEditing,
160
+ placeholder: placeholder,
161
+ placeholderTextColor: placeholderColor,
162
+ ref: ref,
163
+ secureTextEntry: appliedSecureTextEntry,
164
+ selectionColor: theme.colors.brand.primary,
165
+ style: [styles.input, !isEditable && styles.inputDisabled, inputStyle],
166
+ textContentType: appliedTextContentType,
167
+ value: displayValue
168
+ })), rightIcon ? /*#__PURE__*/_react.default.createElement(_reactNative.View, {
169
+ style: styles.iconRight
170
+ }, /*#__PURE__*/_react.default.createElement(_InputTextIcon.InputTextIcon, rightIcon)) : null), /*#__PURE__*/_react.default.createElement(_InputTextErrorMessage.InputTextErrorMessage, {
171
+ message: shouldShowError ? effectiveErrorMessage : undefined,
172
+ testID: effectiveErrorMessage ? `${testID ?? 'input-text'}-error` : undefined
173
+ }));
174
+ });
175
+ function createStyles(theme) {
176
+ return _reactNative.StyleSheet.create({
177
+ container: {
178
+ alignItems: 'center',
179
+ backgroundColor: 'transparent',
180
+ borderColor: theme.colors.brand.primary,
181
+ borderRadius: theme.radius.xxl,
182
+ borderWidth: 1,
183
+ flexDirection: 'row',
184
+ paddingHorizontal: theme.spacing.md,
185
+ paddingVertical: theme.spacing.sm,
186
+ width: '100%'
187
+ },
188
+ containerDisabled: {
189
+ backgroundColor: theme.colors.surface.disabled,
190
+ borderColor: theme.colors.border.disabled
191
+ },
192
+ containerError: {
193
+ borderColor: theme.colors.status.error
194
+ },
195
+ iconLeft: {
196
+ marginRight: theme.spacing.xs
197
+ },
198
+ iconRight: {
199
+ marginLeft: theme.spacing.xs
200
+ },
201
+ input: {
202
+ color: theme.colors.text.primary,
203
+ flex: 1,
204
+ fontFamily: theme.typography.fontFamily.body,
205
+ fontSize: theme.typography.fontSize.md,
206
+ lineHeight: theme.typography.lineHeight.bodySmall,
207
+ textAlign: 'center'
208
+ },
209
+ inputDisabled: {
210
+ color: theme.colors.text.disabled
211
+ },
212
+ wrapper: {
213
+ width: '100%'
214
+ }
215
+ });
216
+ }
217
+ function getAutoConfig({
218
+ locale,
219
+ maskNumber,
220
+ type
221
+ }) {
222
+ switch (type) {
223
+ case 'email':
224
+ return {
225
+ keyboardType: 'email-address',
226
+ textContentType: 'emailAddress',
227
+ validator: validateEmail
228
+ };
229
+ case 'password':
230
+ return {
231
+ secureTextEntry: true,
232
+ textContentType: 'password'
233
+ };
234
+ case 'number':
235
+ return {
236
+ formatter: maskNumber ? value => formatNumber(value, locale) : undefined,
237
+ keyboardType: 'numeric',
238
+ parser: maskNumber ? input => parseNumberInput(input) : input => sanitizeDigits(input)
239
+ };
240
+ case 'url':
241
+ return {
242
+ keyboardType: 'url',
243
+ textContentType: 'URL',
244
+ validator: validateUrl
245
+ };
246
+ case 'tel':
247
+ return {
248
+ formatter: value => formatTel(value, locale),
249
+ keyboardType: 'phone-pad',
250
+ parser: input => parseTelInput(input, locale),
251
+ textContentType: 'telephoneNumber',
252
+ validator: value => validateTel(value, locale)
253
+ };
254
+ default:
255
+ return {};
256
+ }
257
+ }
258
+ function sanitizeDigits(value) {
259
+ return value.replace(/\D/g, '');
260
+ }
261
+ function formatNumber(value, locale) {
262
+ const digits = sanitizeDigits(value);
263
+ if (!digits) {
264
+ return '';
265
+ }
266
+ const reversed = digits.split('').reverse();
267
+ const groups = [];
268
+ for (let i = 0; i < reversed.length; i += 3) {
269
+ groups.push(reversed.slice(i, i + 3).reverse().join(''));
270
+ }
271
+ const separator = locale === 'pt' ? '.' : ',';
272
+ return groups.reverse().join(separator);
273
+ }
274
+ function parseNumberInput(input) {
275
+ return sanitizeDigits(input);
276
+ }
277
+ function formatTel(value, locale) {
278
+ const digits = sanitizeDigits(value);
279
+ if (!digits) {
280
+ return '';
281
+ }
282
+ if (locale === 'en') {
283
+ const cc = digits.slice(0, 1);
284
+ const area = digits.slice(1, 4);
285
+ const first = digits.slice(4, 7);
286
+ const last = digits.slice(7, 11);
287
+ let result = cc ? `+${cc}` : '+';
288
+ if (area) {
289
+ result += ` (${area}`;
290
+ if (area.length === 3) {
291
+ result += ')';
292
+ }
293
+ }
294
+ if (first) {
295
+ result += area.length < 3 ? ')' : '';
296
+ result += ` ${first}`;
297
+ }
298
+ if (last) {
299
+ result += `-${last}`;
300
+ }
301
+ return result.trim();
302
+ }
303
+ const cc = digits.slice(0, 2);
304
+ const area = digits.slice(2, 4);
305
+ const withoutArea = digits.slice(4);
306
+ let result = cc ? `+${cc}` : '+';
307
+ if (area) {
308
+ result += ` (${area}`;
309
+ if (area.length === 2) {
310
+ result += ')';
311
+ }
312
+ }
313
+ if (withoutArea.length >= 5) {
314
+ result += area.length < 2 ? ')' : '';
315
+ const firstBlock = withoutArea.slice(0, withoutArea.length - 4);
316
+ const lastBlock = withoutArea.slice(-4);
317
+ result += ` ${firstBlock}-${lastBlock}`;
318
+ } else if (withoutArea) {
319
+ result += area.length < 2 ? ')' : '';
320
+ result += ` ${withoutArea}`;
321
+ }
322
+ return result.trim();
323
+ }
324
+ function parseTelInput(input, locale) {
325
+ const digits = sanitizeDigits(input);
326
+ const limit = locale === 'en' ? 11 : 13;
327
+ return digits.slice(0, limit);
328
+ }
329
+ function validateEmail(value) {
330
+ if (!value) {
331
+ return false;
332
+ }
333
+ const regex = /.+@.+\..+/;
334
+ return regex.test(value);
335
+ }
336
+ function validateUrl(value) {
337
+ if (!value) {
338
+ return false;
339
+ }
340
+ const regex = /^(https?:\/\/).+/i;
341
+ return regex.test(value);
342
+ }
343
+ function validateTel(value, locale) {
344
+ const digits = sanitizeDigits(value);
345
+ if (locale === 'en') {
346
+ return digits.length === 11;
347
+ }
348
+ return digits.length >= 12 && digits.length <= 13;
349
+ }
350
+ //# sourceMappingURL=InputText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_theme","_InputTextErrorMessage","_InputTextIcon","_shake","e","__esModule","default","_extends","Object","assign","bind","n","arguments","length","t","r","hasOwnProperty","call","apply","InputText","exports","React","forwardRef","accessibilityRole","accessibilityState","accessibilityValue","accessibilityValueProp","disabled","errorMessage","formatter","inputError","inputStyle","leftIcon","locale","maskNumber","maxLength","minLength","nextInputRef","onChangeText","onSubmitEditing","onValidation","parser","placeholder","readonly","rightIcon","style","testID","type","validateOnBlur","validationMessage","validator","validatorMessage","value","rest","ref","theme","useTheme","styles","useMemo","createStyles","isEditable","placeholderColor","colors","text","tertiary","animatedStyle","triggerShake","useShakeAnimation","distance","spacing","sm","touched","setTouched","useState","autoConfig","getAutoConfig","appliedFormatter","appliedParser","appliedValidator","keyboardType","propKeyboardType","secureTextEntry","propSecureTextEntry","textContentType","propTextContentType","onBlur","textInputOnBlur","onEndEditing","textInputOnEndEditing","textInputProps","appliedKeyboardType","appliedTextContentType","appliedSecureTextEntry","displayValue","lengthInvalid","validatorInvalid","internalHasError","shouldShowError","effectiveErrorMessage","undefined","previousErrorRef","useRef","useEffect","current","handleChangeText","useCallback","parsedValue","notifyValidIfDisabled","handleBlur","event","handleEndEditing","handleSubmitEditing","focus","mergedAccessibilityState","invalid","mergedAccessibilityValue","max","min","now","role","createElement","View","wrapper","Animated","accessible","container","containerDisabled","containerError","iconLeft","InputTextIcon","TextInput","editable","placeholderTextColor","selectionColor","brand","primary","input","inputDisabled","iconRight","InputTextErrorMessage","message","StyleSheet","create","alignItems","backgroundColor","borderColor","borderRadius","radius","xxl","borderWidth","flexDirection","paddingHorizontal","md","paddingVertical","width","surface","border","status","error","marginRight","xs","marginLeft","color","flex","fontFamily","typography","body","fontSize","lineHeight","bodySmall","textAlign","validateEmail","formatNumber","parseNumberInput","sanitizeDigits","validateUrl","formatTel","parseTelInput","validateTel","replace","digits","reversed","split","reverse","groups","i","push","slice","join","separator","cc","area","first","last","result","trim","withoutArea","firstBlock","lastBlock","limit","regex","test"],"sourceRoot":"..\\..\\src","sources":["InputText.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=InputText.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"..\\..\\src","sources":["InputText.types.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.InputTextErrorMessage = InputTextErrorMessage;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _theme = require("@wecareu/theme");
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ function InputTextErrorMessage({
12
+ message,
13
+ testID
14
+ }) {
15
+ const theme = (0, _theme.useTheme)();
16
+ const errorTextStyle = _react.default.useMemo(() => ({
17
+ color: theme.colors.status.error,
18
+ fontFamily: theme.typography.fontFamily.caption,
19
+ fontSize: theme.typography.fontSize.sm,
20
+ lineHeight: theme.typography.lineHeight.labelMedium,
21
+ marginTop: theme.spacing.xs
22
+ }), [theme]);
23
+ if (!message) {
24
+ return null;
25
+ }
26
+ return /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
27
+ accessibilityLiveRegion: "polite",
28
+ style: errorTextStyle,
29
+ testID: testID
30
+ }, message);
31
+ }
32
+ //# sourceMappingURL=InputTextErrorMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_theme","e","__esModule","default","InputTextErrorMessage","message","testID","theme","useTheme","errorTextStyle","React","useMemo","color","colors","status","error","fontFamily","typography","caption","fontSize","sm","lineHeight","labelMedium","marginTop","spacing","xs","createElement","Text","accessibilityLiveRegion","style"],"sourceRoot":"..\\..\\src","sources":["InputTextErrorMessage.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,MAAA,GAAAF,OAAA;AAAyC,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAIlC,SAASG,qBAAqBA,CAAC;EAAEC,OAAO;EAAEC;AAAmC,CAAC,EAAsB;EACzG,MAAMC,KAAK,GAAG,IAAAC,eAAQ,EAAC,CAAC;EACxB,MAAMC,cAAc,GAAGC,cAAK,CAACC,OAAO,CAClC,OAAO;IACLC,KAAK,EAAEL,KAAK,CAACM,MAAM,CAACC,MAAM,CAACC,KAAK;IAChCC,UAAU,EAAET,KAAK,CAACU,UAAU,CAACD,UAAU,CAACE,OAAO;IAC/CC,QAAQ,EAAEZ,KAAK,CAACU,UAAU,CAACE,QAAQ,CAACC,EAAE;IACtCC,UAAU,EAAEd,KAAK,CAACU,UAAU,CAACI,UAAU,CAACC,WAAW;IACnDC,SAAS,EAAEhB,KAAK,CAACiB,OAAO,CAACC;EAC3B,CAAC,CAAC,EACF,CAAClB,KAAK,CACR,CAAC;EAED,IAAI,CAACF,OAAO,EAAE;IACZ,OAAO,IAAI;EACb;EAEA,oBACET,MAAA,CAAAO,OAAA,CAAAuB,aAAA,CAAC3B,YAAA,CAAA4B,IAAI;IAACC,uBAAuB,EAAC,QAAQ;IAACC,KAAK,EAAEpB,cAAe;IAACH,MAAM,EAAEA;EAAO,GAC1ED,OACG,CAAC;AAEX","ignoreList":[]}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.InputTextIcon = InputTextIcon;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _icons = require("@wecareu/icons");
10
+ var _theme = require("@wecareu/theme");
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ function InputTextIcon({
13
+ accessibilityLabel,
14
+ color,
15
+ name,
16
+ onPress,
17
+ size,
18
+ testID
19
+ }) {
20
+ const theme = (0, _theme.useTheme)();
21
+ const iconColor = color ?? theme.colors.text.tertiary;
22
+ const iconSize = size ?? theme.spacing.lg;
23
+ const hitSlop = _react.default.useMemo(() => ({
24
+ bottom: theme.spacing.xs,
25
+ left: theme.spacing.xs,
26
+ right: theme.spacing.xs,
27
+ top: theme.spacing.xs
28
+ }), [theme.spacing.xs]);
29
+ if (onPress) {
30
+ const InteractiveComponent = _reactNative.Pressable ?? _reactNative.TouchableOpacity;
31
+ return /*#__PURE__*/_react.default.createElement(InteractiveComponent, {
32
+ accessibilityLabel: accessibilityLabel ?? name,
33
+ accessibilityRole: "button",
34
+ hitSlop: hitSlop,
35
+ onPress: onPress,
36
+ style: styles.iconPressable,
37
+ testID: testID
38
+ }, /*#__PURE__*/_react.default.createElement(_icons.Icon, {
39
+ color: iconColor,
40
+ name: name,
41
+ size: iconSize
42
+ }));
43
+ }
44
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
45
+ accessible: false,
46
+ style: styles.iconWrapper,
47
+ testID: testID
48
+ }, /*#__PURE__*/_react.default.createElement(_icons.Icon, {
49
+ accessibilityLabel: accessibilityLabel,
50
+ color: iconColor,
51
+ name: name,
52
+ size: iconSize
53
+ }));
54
+ }
55
+ const styles = _reactNative.StyleSheet.create({
56
+ iconPressable: {
57
+ alignItems: 'center',
58
+ justifyContent: 'center'
59
+ },
60
+ iconWrapper: {
61
+ alignItems: 'center',
62
+ justifyContent: 'center'
63
+ }
64
+ });
65
+ //# sourceMappingURL=InputTextIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_icons","_theme","e","__esModule","default","InputTextIcon","accessibilityLabel","color","name","onPress","size","testID","theme","useTheme","iconColor","colors","text","tertiary","iconSize","spacing","lg","hitSlop","React","useMemo","bottom","xs","left","right","top","InteractiveComponent","Pressable","TouchableOpacity","createElement","accessibilityRole","style","styles","iconPressable","Icon","View","accessible","iconWrapper","StyleSheet","create","alignItems","justifyContent"],"sourceRoot":"..\\..\\src","sources":["InputTextIcon.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAAyC,SAAAD,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAIlC,SAASG,aAAaA,CAAC;EAC5BC,kBAAkB;EAClBC,KAAK;EACLC,IAAI;EACJC,OAAO;EACPC,IAAI;EACJC;AACkB,CAAC,EAAe;EAClC,MAAMC,KAAK,GAAG,IAAAC,eAAQ,EAAC,CAAC;EAExB,MAAMC,SAAS,GAAGP,KAAK,IAAIK,KAAK,CAACG,MAAM,CAACC,IAAI,CAACC,QAAQ;EACrD,MAAMC,QAAQ,GAAGR,IAAI,IAAIE,KAAK,CAACO,OAAO,CAACC,EAAE;EACzC,MAAMC,OAAO,GAAGC,cAAK,CAACC,OAAO,CAC3B,OAAO;IACLC,MAAM,EAAEZ,KAAK,CAACO,OAAO,CAACM,EAAE;IACxBC,IAAI,EAAEd,KAAK,CAACO,OAAO,CAACM,EAAE;IACtBE,KAAK,EAAEf,KAAK,CAACO,OAAO,CAACM,EAAE;IACvBG,GAAG,EAAEhB,KAAK,CAACO,OAAO,CAACM;EACrB,CAAC,CAAC,EACF,CAACb,KAAK,CAACO,OAAO,CAACM,EAAE,CACnB,CAAC;EAED,IAAIhB,OAAO,EAAE;IACX,MAAMoB,oBAAoB,GAAGC,sBAAS,IAAIC,6BAAgB;IAE1D,oBACEnC,MAAA,CAAAQ,OAAA,CAAA4B,aAAA,CAACH,oBAAoB;MACnBvB,kBAAkB,EAAEA,kBAAkB,IAAIE,IAAK;MAC/CyB,iBAAiB,EAAC,QAAQ;MAC1BZ,OAAO,EAAEA,OAAQ;MACjBZ,OAAO,EAAEA,OAAQ;MACjByB,KAAK,EAAEC,MAAM,CAACC,aAAc;MAC5BzB,MAAM,EAAEA;IAAO,gBAEff,MAAA,CAAAQ,OAAA,CAAA4B,aAAA,CAAChC,MAAA,CAAAqC,IAAI;MAAC9B,KAAK,EAAEO,SAAU;MAACN,IAAI,EAAEA,IAAK;MAACE,IAAI,EAAEQ;IAAS,CAAE,CACjC,CAAC;EAE3B;EAEA,oBACEtB,MAAA,CAAAQ,OAAA,CAAA4B,aAAA,CAACjC,YAAA,CAAAuC,IAAI;IAACC,UAAU,EAAE,KAAM;IAACL,KAAK,EAAEC,MAAM,CAACK,WAAY;IAAC7B,MAAM,EAAEA;EAAO,gBACjEf,MAAA,CAAAQ,OAAA,CAAA4B,aAAA,CAAChC,MAAA,CAAAqC,IAAI;IAAC/B,kBAAkB,EAAEA,kBAAmB;IAACC,KAAK,EAAEO,SAAU;IAACN,IAAI,EAAEA,IAAK;IAACE,IAAI,EAAEQ;EAAS,CAAE,CACzF,CAAC;AAEX;AAEA,MAAMiB,MAAM,GAAGM,uBAAU,CAACC,MAAM,CAAC;EAC/BN,aAAa,EAAE;IACbO,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB,CAAC;EACDJ,WAAW,EAAE;IACXG,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useShakeAnimation = useShakeAnimation;
7
+ var _react = require("react");
8
+ var _reactNative = require("react-native");
9
+ function useShakeAnimation({
10
+ distance = 6,
11
+ duration = 60,
12
+ iterations = 2
13
+ } = {}) {
14
+ const translation = (0, _react.useRef)(new _reactNative.Animated.Value(0)).current;
15
+ const animatedStyle = (0, _react.useMemo)(() => ({
16
+ transform: [{
17
+ translateX: translation.interpolate({
18
+ inputRange: [-1, -0.5, 0, 0.5, 1],
19
+ outputRange: [-distance, -distance / 2, 0, distance / 2, distance]
20
+ })
21
+ }]
22
+ }), [distance, translation]);
23
+ const triggerShake = (0, _react.useCallback)(() => {
24
+ translation.setValue(0);
25
+ const animation = _reactNative.Animated.sequence([_reactNative.Animated.timing(translation, {
26
+ duration,
27
+ toValue: 1,
28
+ useNativeDriver: true
29
+ }), _reactNative.Animated.timing(translation, {
30
+ duration,
31
+ toValue: -1,
32
+ useNativeDriver: true
33
+ })]);
34
+ _reactNative.Animated.loop(animation, {
35
+ iterations
36
+ }).start(() => {
37
+ translation.setValue(0);
38
+ });
39
+ }, [duration, iterations, translation]);
40
+ return {
41
+ animatedStyle,
42
+ triggerShake
43
+ };
44
+ }
45
+ //# sourceMappingURL=shake.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_reactNative","useShakeAnimation","distance","duration","iterations","translation","useRef","Animated","Value","current","animatedStyle","useMemo","transform","translateX","interpolate","inputRange","outputRange","triggerShake","useCallback","setValue","animation","sequence","timing","toValue","useNativeDriver","loop","start"],"sourceRoot":"..\\..\\..\\src","sources":["animations/shake.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAD,OAAA;AA8BO,SAASE,iBAAiBA,CAAC;EAChCC,QAAQ,GAAG,CAAC;EACZC,QAAQ,GAAG,EAAE;EACbC,UAAU,GAAG;AACU,CAAC,GAAG,CAAC,CAAC,EAA2B;EACxD,MAAMC,WAAW,GAAG,IAAAC,aAAM,EAAC,IAAIC,qBAAQ,CAACC,KAAK,CAAC,CAAC,CAAC,CAAC,CAACC,OAAO;EAEzD,MAAMC,aAAa,GAAG,IAAAC,cAAO,EAC3B,OAAO;IACLC,SAAS,EAAE,CACT;MACEC,UAAU,EAAER,WAAW,CAACS,WAAW,CAAC;QAClCC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QACjCC,WAAW,EAAE,CAAC,CAACd,QAAQ,EAAE,CAACA,QAAQ,GAAG,CAAC,EAAE,CAAC,EAAEA,QAAQ,GAAG,CAAC,EAAEA,QAAQ;MACnE,CAAC;IACH,CAAC;EAEL,CAAC,CAAC,EACF,CAACA,QAAQ,EAAEG,WAAW,CACxB,CAAC;EAED,MAAMY,YAAY,GAAG,IAAAC,kBAAW,EAAC,MAAM;IACrCb,WAAW,CAACc,QAAQ,CAAC,CAAC,CAAC;IAEvB,MAAMC,SAAS,GAAGb,qBAAQ,CAACc,QAAQ,CAAC,CAClCd,qBAAQ,CAACe,MAAM,CAACjB,WAAW,EAAE;MAC3BF,QAAQ;MACRoB,OAAO,EAAE,CAAC;MACVC,eAAe,EAAE;IACnB,CAAC,CAAC,EACFjB,qBAAQ,CAACe,MAAM,CAACjB,WAAW,EAAE;MAC3BF,QAAQ;MACRoB,OAAO,EAAE,CAAC,CAAC;MACXC,eAAe,EAAE;IACnB,CAAC,CAAC,CACH,CAAC;IAEFjB,qBAAQ,CAACkB,IAAI,CAACL,SAAS,EAAE;MAAEhB;IAAW,CAAC,CAAC,CAACsB,KAAK,CAAC,MAAM;MACnDrB,WAAW,CAACc,QAAQ,CAAC,CAAC,CAAC;IACzB,CAAC,CAAC;EACJ,CAAC,EAAE,CAAChB,QAAQ,EAAEC,UAAU,EAAEC,WAAW,CAAC,CAAC;EAEvC,OAAO;IAAEK,aAAa;IAAEO;EAAa,CAAC;AACxC","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "InputText", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _InputText.InputText;
10
+ }
11
+ });
12
+ var _InputText = require("./InputText");
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_InputText","require"],"sourceRoot":"..\\..\\src","sources":["index.tsx"],"mappings":";;;;;;;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA","ignoreList":[]}