@space-uy/pulsar-ui 0.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.
- package/LICENSE +20 -0
- package/README.md +148 -0
- package/lib/module/components/Accordion.js +242 -0
- package/lib/module/components/Accordion.js.map +1 -0
- package/lib/module/components/BottomSheet.js +183 -0
- package/lib/module/components/BottomSheet.js.map +1 -0
- package/lib/module/components/Button.js +64 -0
- package/lib/module/components/Button.js.map +1 -0
- package/lib/module/components/ButtonContainer.js +118 -0
- package/lib/module/components/ButtonContainer.js.map +1 -0
- package/lib/module/components/CalendarPicker.js +374 -0
- package/lib/module/components/CalendarPicker.js.map +1 -0
- package/lib/module/components/Card.js +43 -0
- package/lib/module/components/Card.js.map +1 -0
- package/lib/module/components/Checkbox.js +122 -0
- package/lib/module/components/Checkbox.js.map +1 -0
- package/lib/module/components/Chip.js +50 -0
- package/lib/module/components/Chip.js.map +1 -0
- package/lib/module/components/CopyToClipboard.js +98 -0
- package/lib/module/components/CopyToClipboard.js.map +1 -0
- package/lib/module/components/Dialog.js +232 -0
- package/lib/module/components/Dialog.js.map +1 -0
- package/lib/module/components/Header.js +94 -0
- package/lib/module/components/Header.js.map +1 -0
- package/lib/module/components/Icon.js +22 -0
- package/lib/module/components/Icon.js.map +1 -0
- package/lib/module/components/IconButton.js +57 -0
- package/lib/module/components/IconButton.js.map +1 -0
- package/lib/module/components/Input.js +111 -0
- package/lib/module/components/Input.js.map +1 -0
- package/lib/module/components/InputContainer.js +104 -0
- package/lib/module/components/InputContainer.js.map +1 -0
- package/lib/module/components/LoadingIndicator.js +62 -0
- package/lib/module/components/LoadingIndicator.js.map +1 -0
- package/lib/module/components/OtpInput.js +85 -0
- package/lib/module/components/OtpInput.js.map +1 -0
- package/lib/module/components/OtpInputContainer.js +148 -0
- package/lib/module/components/OtpInputContainer.js.map +1 -0
- package/lib/module/components/Select.js +189 -0
- package/lib/module/components/Select.js.map +1 -0
- package/lib/module/components/Switch.js +74 -0
- package/lib/module/components/Switch.js.map +1 -0
- package/lib/module/components/Tabs.js +99 -0
- package/lib/module/components/Tabs.js.map +1 -0
- package/lib/module/components/Text.js +66 -0
- package/lib/module/components/Text.js.map +1 -0
- package/lib/module/components/TextArea.js +106 -0
- package/lib/module/components/TextArea.js.map +1 -0
- package/lib/module/hooks/useTheme.js +20 -0
- package/lib/module/hooks/useTheme.js.map +1 -0
- package/lib/module/index.js +27 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/store/themeStore.js +50 -0
- package/lib/module/store/themeStore.js.map +1 -0
- package/lib/module/theme/colors.js +25 -0
- package/lib/module/theme/colors.js.map +1 -0
- package/lib/module/theme/meassures.js +10 -0
- package/lib/module/theme/meassures.js.map +1 -0
- package/lib/module/utils/stringUtils.js +12 -0
- package/lib/module/utils/stringUtils.js.map +1 -0
- package/lib/module/utils/uiUtils.js +63 -0
- package/lib/module/utils/uiUtils.js.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/components/Accordion.d.ts +22 -0
- package/lib/typescript/src/components/Accordion.d.ts.map +1 -0
- package/lib/typescript/src/components/BottomSheet.d.ts +13 -0
- package/lib/typescript/src/components/BottomSheet.d.ts.map +1 -0
- package/lib/typescript/src/components/Button.d.ts +16 -0
- package/lib/typescript/src/components/Button.d.ts.map +1 -0
- package/lib/typescript/src/components/ButtonContainer.d.ts +30 -0
- package/lib/typescript/src/components/ButtonContainer.d.ts.map +1 -0
- package/lib/typescript/src/components/CalendarPicker.d.ts +19 -0
- package/lib/typescript/src/components/CalendarPicker.d.ts.map +1 -0
- package/lib/typescript/src/components/Card.d.ts +7 -0
- package/lib/typescript/src/components/Card.d.ts.map +1 -0
- package/lib/typescript/src/components/Checkbox.d.ts +11 -0
- package/lib/typescript/src/components/Checkbox.d.ts.map +1 -0
- package/lib/typescript/src/components/Chip.d.ts +9 -0
- package/lib/typescript/src/components/Chip.d.ts.map +1 -0
- package/lib/typescript/src/components/CopyToClipboard.d.ts +12 -0
- package/lib/typescript/src/components/CopyToClipboard.d.ts.map +1 -0
- package/lib/typescript/src/components/Dialog.d.ts +40 -0
- package/lib/typescript/src/components/Dialog.d.ts.map +1 -0
- package/lib/typescript/src/components/Header.d.ts +18 -0
- package/lib/typescript/src/components/Header.d.ts.map +1 -0
- package/lib/typescript/src/components/Icon.d.ts +12 -0
- package/lib/typescript/src/components/Icon.d.ts.map +1 -0
- package/lib/typescript/src/components/IconButton.d.ts +13 -0
- package/lib/typescript/src/components/IconButton.d.ts.map +1 -0
- package/lib/typescript/src/components/Input.d.ts +17 -0
- package/lib/typescript/src/components/Input.d.ts.map +1 -0
- package/lib/typescript/src/components/InputContainer.d.ts +22 -0
- package/lib/typescript/src/components/InputContainer.d.ts.map +1 -0
- package/lib/typescript/src/components/LoadingIndicator.d.ts +9 -0
- package/lib/typescript/src/components/LoadingIndicator.d.ts.map +1 -0
- package/lib/typescript/src/components/OtpInput.d.ts +3 -0
- package/lib/typescript/src/components/OtpInput.d.ts.map +1 -0
- package/lib/typescript/src/components/OtpInputContainer.d.ts +17 -0
- package/lib/typescript/src/components/OtpInputContainer.d.ts.map +1 -0
- package/lib/typescript/src/components/Select.d.ts +20 -0
- package/lib/typescript/src/components/Select.d.ts.map +1 -0
- package/lib/typescript/src/components/Switch.d.ts +10 -0
- package/lib/typescript/src/components/Switch.d.ts.map +1 -0
- package/lib/typescript/src/components/Tabs.d.ts +14 -0
- package/lib/typescript/src/components/Tabs.d.ts.map +1 -0
- package/lib/typescript/src/components/Text.d.ts +7 -0
- package/lib/typescript/src/components/Text.d.ts.map +1 -0
- package/lib/typescript/src/components/TextArea.d.ts +16 -0
- package/lib/typescript/src/components/TextArea.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useTheme.d.ts +9 -0
- package/lib/typescript/src/hooks/useTheme.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +27 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/store/themeStore.d.ts +32 -0
- package/lib/typescript/src/store/themeStore.d.ts.map +1 -0
- package/lib/typescript/src/theme/colors.d.ts +14 -0
- package/lib/typescript/src/theme/colors.d.ts.map +1 -0
- package/lib/typescript/src/theme/meassures.d.ts +9 -0
- package/lib/typescript/src/theme/meassures.d.ts.map +1 -0
- package/lib/typescript/src/utils/stringUtils.d.ts +7 -0
- package/lib/typescript/src/utils/stringUtils.d.ts.map +1 -0
- package/lib/typescript/src/utils/uiUtils.d.ts +21 -0
- package/lib/typescript/src/utils/uiUtils.d.ts.map +1 -0
- package/package.json +173 -0
- package/src/components/Accordion.tsx +284 -0
- package/src/components/BottomSheet.tsx +259 -0
- package/src/components/Button.tsx +85 -0
- package/src/components/ButtonContainer.tsx +161 -0
- package/src/components/CalendarPicker.tsx +428 -0
- package/src/components/Card.tsx +55 -0
- package/src/components/Checkbox.tsx +160 -0
- package/src/components/Chip.tsx +58 -0
- package/src/components/CopyToClipboard.tsx +108 -0
- package/src/components/Dialog.tsx +263 -0
- package/src/components/Header.tsx +100 -0
- package/src/components/Icon.tsx +27 -0
- package/src/components/IconButton.tsx +71 -0
- package/src/components/Input.tsx +144 -0
- package/src/components/InputContainer.tsx +134 -0
- package/src/components/LoadingIndicator.tsx +78 -0
- package/src/components/OtpInput.tsx +109 -0
- package/src/components/OtpInputContainer.tsx +196 -0
- package/src/components/Select.tsx +219 -0
- package/src/components/Switch.tsx +104 -0
- package/src/components/Tabs.tsx +117 -0
- package/src/components/Text.tsx +64 -0
- package/src/components/TextArea.tsx +141 -0
- package/src/hooks/useTheme.tsx +23 -0
- package/src/index.tsx +38 -0
- package/src/store/themeStore.ts +57 -0
- package/src/theme/colors.ts +35 -0
- package/src/theme/meassures.ts +7 -0
- package/src/utils/stringUtils.ts +16 -0
- package/src/utils/uiUtils.ts +70 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useMemo } from 'react';
|
|
4
|
+
import { StyleSheet } from 'react-native';
|
|
5
|
+
import ButtonContainer from "./ButtonContainer.js";
|
|
6
|
+
import Icon from "./Icon.js";
|
|
7
|
+
import LoadingIndicator from "./LoadingIndicator.js";
|
|
8
|
+
import meassures from "../theme/meassures.js";
|
|
9
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
|
+
const PADDING = 8;
|
|
11
|
+
export default function IconButton({
|
|
12
|
+
iconName,
|
|
13
|
+
onPress,
|
|
14
|
+
size = 'medium',
|
|
15
|
+
disabled = false,
|
|
16
|
+
variant = 'flat',
|
|
17
|
+
loading = false,
|
|
18
|
+
style,
|
|
19
|
+
...rest
|
|
20
|
+
}) {
|
|
21
|
+
const iconSize = useMemo(() => meassures.button[size] - (size === 'small' ? PADDING : PADDING * 2), [size]);
|
|
22
|
+
return /*#__PURE__*/_jsx(ButtonContainer, {
|
|
23
|
+
...rest,
|
|
24
|
+
variant: variant,
|
|
25
|
+
size: size,
|
|
26
|
+
loading: loading,
|
|
27
|
+
disabled: disabled,
|
|
28
|
+
onPress: onPress,
|
|
29
|
+
hitSlop: {
|
|
30
|
+
top: PADDING,
|
|
31
|
+
left: PADDING,
|
|
32
|
+
right: PADDING,
|
|
33
|
+
bottom: PADDING
|
|
34
|
+
},
|
|
35
|
+
style: [style, {
|
|
36
|
+
width: meassures.button[size]
|
|
37
|
+
}],
|
|
38
|
+
contentContainerStyle: [styles.container, {
|
|
39
|
+
padding: size === 'small' ? PADDING / 2 : PADDING
|
|
40
|
+
}],
|
|
41
|
+
renderContent: colors => loading ? /*#__PURE__*/_jsx(LoadingIndicator, {
|
|
42
|
+
size: iconSize,
|
|
43
|
+
color: colors.textColor
|
|
44
|
+
}) : /*#__PURE__*/_jsx(Icon, {
|
|
45
|
+
name: iconName,
|
|
46
|
+
size: iconSize,
|
|
47
|
+
color: colors.textColor
|
|
48
|
+
})
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
const styles = StyleSheet.create({
|
|
52
|
+
container: {
|
|
53
|
+
alignItems: 'center',
|
|
54
|
+
justifyContent: 'center'
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
//# sourceMappingURL=IconButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useMemo","StyleSheet","ButtonContainer","Icon","LoadingIndicator","meassures","jsx","_jsx","PADDING","IconButton","iconName","onPress","size","disabled","variant","loading","style","rest","iconSize","button","hitSlop","top","left","right","bottom","width","contentContainerStyle","styles","container","padding","renderContent","colors","color","textColor","name","create","alignItems","justifyContent"],"sourceRoot":"../../../src","sources":["components/IconButton.tsx"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,OAAO;AAC/B,SACEC,UAAU,QAIL,cAAc;AAErB,OAAOC,eAAe,MAIf,sBAAmB;AAC1B,OAAOC,IAAI,MAAyB,WAAQ;AAC5C,OAAOC,gBAAgB,MAAM,uBAAoB;AAEjD,OAAOC,SAAS,MAAM,uBAAoB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAU3C,MAAMC,OAAO,GAAG,CAAC;AAEjB,eAAe,SAASC,UAAUA,CAAC;EACjCC,QAAQ;EACRC,OAAO;EACPC,IAAI,GAAG,QAAQ;EACfC,QAAQ,GAAG,KAAK;EAChBC,OAAO,GAAG,MAAM;EAChBC,OAAO,GAAG,KAAK;EACfC,KAAK;EACL,GAAGC;AACE,CAAC,EAAE;EACR,MAAMC,QAAQ,GAAGlB,OAAO,CACtB,MAAMK,SAAS,CAACc,MAAM,CAACP,IAAI,CAAC,IAAIA,IAAI,KAAK,OAAO,GAAGJ,OAAO,GAAGA,OAAO,GAAG,CAAC,CAAC,EACzE,CAACI,IAAI,CACP,CAAC;EAED,oBACEL,IAAA,CAACL,eAAe;IAAA,GACVe,IAAI;IACRH,OAAO,EAAEA,OAAQ;IACjBF,IAAI,EAAEA,IAAK;IACXG,OAAO,EAAEA,OAAQ;IACjBF,QAAQ,EAAEA,QAAS;IACnBF,OAAO,EAAEA,OAAQ;IACjBS,OAAO,EAAE;MAAEC,GAAG,EAAEb,OAAO;MAAEc,IAAI,EAAEd,OAAO;MAAEe,KAAK,EAAEf,OAAO;MAAEgB,MAAM,EAAEhB;IAAQ,CAAE;IAC1EQ,KAAK,EAAE,CAACA,KAAK,EAAE;MAAES,KAAK,EAAEpB,SAAS,CAACc,MAAM,CAACP,IAAI;IAAE,CAAC,CAAE;IAClDc,qBAAqB,EAAE,CACrBC,MAAM,CAACC,SAAS,EAChB;MAAEC,OAAO,EAAEjB,IAAI,KAAK,OAAO,GAAGJ,OAAO,GAAG,CAAC,GAAGA;IAAQ,CAAC,CACrD;IACFsB,aAAa,EAAGC,MAAoB,IAClChB,OAAO,gBACLR,IAAA,CAACH,gBAAgB;MAACQ,IAAI,EAAEM,QAAS;MAACc,KAAK,EAAED,MAAM,CAACE;IAAU,CAAE,CAAC,gBAE7D1B,IAAA,CAACJ,IAAI;MAAC+B,IAAI,EAAExB,QAAS;MAACE,IAAI,EAAEM,QAAS;MAACc,KAAK,EAAED,MAAM,CAACE;IAAU,CAAE;EAEnE,CACF,CAAC;AAEN;AAEA,MAAMN,MAAM,GAAG1B,UAAU,CAACkC,MAAM,CAAC;EAC/BP,SAAS,EAAE;IAAEQ,UAAU,EAAE,QAAQ;IAAEC,cAAc,EAAE;EAAS;AAC9D,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { forwardRef, useImperativeHandle, useRef, useState } from 'react';
|
|
4
|
+
import { TextInput, StyleSheet, Platform } from 'react-native';
|
|
5
|
+
import InputContainer from "./InputContainer.js";
|
|
6
|
+
import IconButton from "./IconButton.js";
|
|
7
|
+
import useTheme from "../hooks/useTheme.js";
|
|
8
|
+
import { convertHexToRgba } from "../utils/uiUtils.js";
|
|
9
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
|
+
export const Input = /*#__PURE__*/forwardRef(({
|
|
11
|
+
style,
|
|
12
|
+
onChangeText,
|
|
13
|
+
value,
|
|
14
|
+
editable = true,
|
|
15
|
+
error,
|
|
16
|
+
label,
|
|
17
|
+
hint,
|
|
18
|
+
variant = 'text',
|
|
19
|
+
onBlur,
|
|
20
|
+
onFocus,
|
|
21
|
+
iconName,
|
|
22
|
+
clearable = false,
|
|
23
|
+
...rest
|
|
24
|
+
}, ref) => {
|
|
25
|
+
const [focused, setFocused] = useState(false);
|
|
26
|
+
const [showPassword, setShowPassword] = useState(false);
|
|
27
|
+
const {
|
|
28
|
+
colors,
|
|
29
|
+
theme
|
|
30
|
+
} = useTheme();
|
|
31
|
+
const inputRef = useRef(null);
|
|
32
|
+
useImperativeHandle(ref, () => ({
|
|
33
|
+
focus: () => inputRef.current?.focus(),
|
|
34
|
+
blur: () => inputRef.current?.blur()
|
|
35
|
+
}));
|
|
36
|
+
const handleFocus = e => {
|
|
37
|
+
setFocused(true);
|
|
38
|
+
onFocus?.(e);
|
|
39
|
+
};
|
|
40
|
+
const handleBlur = e => {
|
|
41
|
+
setFocused(false);
|
|
42
|
+
onBlur?.(e);
|
|
43
|
+
};
|
|
44
|
+
const renderRightButton = (name, onPress) => /*#__PURE__*/_jsx(IconButton, {
|
|
45
|
+
style: styles.button,
|
|
46
|
+
iconName: name,
|
|
47
|
+
size: "small",
|
|
48
|
+
variant: "transparent",
|
|
49
|
+
onPress: onPress,
|
|
50
|
+
disabled: !editable,
|
|
51
|
+
hitSlop: {
|
|
52
|
+
top: 8,
|
|
53
|
+
bottom: 8,
|
|
54
|
+
left: 8,
|
|
55
|
+
right: 8
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
return /*#__PURE__*/_jsxs(InputContainer, {
|
|
59
|
+
style: style,
|
|
60
|
+
label: label,
|
|
61
|
+
hint: hint,
|
|
62
|
+
error: error,
|
|
63
|
+
onPress: () => inputRef.current?.focus(),
|
|
64
|
+
contentContainerStyle: styles.container,
|
|
65
|
+
focused: focused,
|
|
66
|
+
disabled: !editable,
|
|
67
|
+
iconName: iconName,
|
|
68
|
+
children: [/*#__PURE__*/_jsx(TextInput, {
|
|
69
|
+
...rest,
|
|
70
|
+
value: value,
|
|
71
|
+
onChangeText: onChangeText,
|
|
72
|
+
ref: inputRef,
|
|
73
|
+
style: [styles.input, {
|
|
74
|
+
fontFamily: theme.fonts.regular,
|
|
75
|
+
color: colors.foreground,
|
|
76
|
+
// @ts-ignore
|
|
77
|
+
caretColor: colors.primary // This to make the cursor color match the primary color on web
|
|
78
|
+
}, Platform.OS === 'web' && styles.webInput],
|
|
79
|
+
onFocus: handleFocus,
|
|
80
|
+
onBlur: handleBlur,
|
|
81
|
+
placeholderTextColor: convertHexToRgba(colors.foreground, 0.5),
|
|
82
|
+
editable: editable,
|
|
83
|
+
secureTextEntry: variant === 'password' && !showPassword,
|
|
84
|
+
cursorColor: colors.primary,
|
|
85
|
+
selectionColor: convertHexToRgba(colors.primary, Platform.OS === 'android' ? 0.15 : 1),
|
|
86
|
+
selectionHandleColor: colors.primary
|
|
87
|
+
}), clearable && value && variant !== 'password' && renderRightButton('CircleX', () => onChangeText?.('')), variant === 'password' && renderRightButton(showPassword ? 'EyeClosed' : 'Eye', () => setShowPassword(!showPassword))]
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
const styles = StyleSheet.create({
|
|
91
|
+
container: {
|
|
92
|
+
flexDirection: 'row',
|
|
93
|
+
alignItems: 'center'
|
|
94
|
+
},
|
|
95
|
+
input: {
|
|
96
|
+
flex: 1,
|
|
97
|
+
fontSize: 14
|
|
98
|
+
},
|
|
99
|
+
button: {
|
|
100
|
+
marginStart: 8,
|
|
101
|
+
opacity: 0.8
|
|
102
|
+
},
|
|
103
|
+
icon: {
|
|
104
|
+
marginEnd: 8
|
|
105
|
+
},
|
|
106
|
+
webInput: {
|
|
107
|
+
outlineWidth: 0
|
|
108
|
+
} // To remove native focus outline on web
|
|
109
|
+
});
|
|
110
|
+
export default Input;
|
|
111
|
+
//# sourceMappingURL=Input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["forwardRef","useImperativeHandle","useRef","useState","TextInput","StyleSheet","Platform","InputContainer","IconButton","useTheme","convertHexToRgba","jsx","_jsx","jsxs","_jsxs","Input","style","onChangeText","value","editable","error","label","hint","variant","onBlur","onFocus","iconName","clearable","rest","ref","focused","setFocused","showPassword","setShowPassword","colors","theme","inputRef","focus","current","blur","handleFocus","e","handleBlur","renderRightButton","name","onPress","styles","button","size","disabled","hitSlop","top","bottom","left","right","contentContainerStyle","container","children","input","fontFamily","fonts","regular","color","foreground","caretColor","primary","OS","webInput","placeholderTextColor","secureTextEntry","cursorColor","selectionColor","selectionHandleColor","create","flexDirection","alignItems","flex","fontSize","marginStart","opacity","icon","marginEnd","outlineWidth"],"sourceRoot":"../../../src","sources":["components/Input.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useEffect, useMemo } from 'react';
|
|
4
|
+
import { Pressable, StyleSheet, View } from 'react-native';
|
|
5
|
+
import Animated, { interpolate, interpolateColor, useAnimatedStyle, useSharedValue, withTiming } from 'react-native-reanimated';
|
|
6
|
+
import Text from "./Text.js";
|
|
7
|
+
import Icon from "./Icon.js";
|
|
8
|
+
import useTheme from "../hooks/useTheme.js";
|
|
9
|
+
import { convertHexToRgba } from "../utils/uiUtils.js";
|
|
10
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
|
+
const INACTIVE = -1;
|
|
12
|
+
const ACTIVE = 0;
|
|
13
|
+
const ERROR = 1;
|
|
14
|
+
export default function InputContainer({
|
|
15
|
+
style,
|
|
16
|
+
contentContainerStyle,
|
|
17
|
+
error,
|
|
18
|
+
hint,
|
|
19
|
+
label,
|
|
20
|
+
onPress,
|
|
21
|
+
focused,
|
|
22
|
+
children,
|
|
23
|
+
size = 'default',
|
|
24
|
+
disabled,
|
|
25
|
+
height,
|
|
26
|
+
iconName
|
|
27
|
+
}) {
|
|
28
|
+
const status = useSharedValue(INACTIVE);
|
|
29
|
+
const isFocused = useSharedValue(0);
|
|
30
|
+
const {
|
|
31
|
+
colors,
|
|
32
|
+
theme
|
|
33
|
+
} = useTheme();
|
|
34
|
+
const animStyle = useAnimatedStyle(() => ({
|
|
35
|
+
borderColor: interpolateColor(status.value, [INACTIVE, ACTIVE, ERROR], [colors.border, colors.primary, colors.destructive])
|
|
36
|
+
}));
|
|
37
|
+
const iconAnimStyle = useAnimatedStyle(() => {
|
|
38
|
+
return {
|
|
39
|
+
opacity: interpolate(isFocused.value, [0, 1], [1, 0]),
|
|
40
|
+
width: interpolate(isFocused.value, [0, 1], [24, 0])
|
|
41
|
+
};
|
|
42
|
+
});
|
|
43
|
+
useEffect(() => {
|
|
44
|
+
const _status = focused ? ACTIVE : INACTIVE;
|
|
45
|
+
status.value = withTiming(error ? ERROR : _status, {
|
|
46
|
+
duration: 300
|
|
47
|
+
});
|
|
48
|
+
isFocused.value = withTiming(focused ? 1 : 0, {
|
|
49
|
+
duration: 300
|
|
50
|
+
});
|
|
51
|
+
}, [error, status, focused, isFocused]);
|
|
52
|
+
const containerHeight = useMemo(() => height ?? (size === 'small' ? 32 : 40), [size, height]);
|
|
53
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
54
|
+
style: [style, disabled && styles.disabled],
|
|
55
|
+
children: [!!label && /*#__PURE__*/_jsx(Text, {
|
|
56
|
+
style: [{
|
|
57
|
+
color: colors.foreground
|
|
58
|
+
}, styles.label],
|
|
59
|
+
variant: "h5",
|
|
60
|
+
children: label
|
|
61
|
+
}), /*#__PURE__*/_jsx(Pressable, {
|
|
62
|
+
onPress: onPress,
|
|
63
|
+
disabled: disabled,
|
|
64
|
+
children: /*#__PURE__*/_jsxs(Animated.View, {
|
|
65
|
+
style: [animStyle, styles.container, {
|
|
66
|
+
height: containerHeight,
|
|
67
|
+
borderRadius: theme.roundness
|
|
68
|
+
}, contentContainerStyle],
|
|
69
|
+
children: [iconName && /*#__PURE__*/_jsx(Animated.View, {
|
|
70
|
+
style: iconAnimStyle,
|
|
71
|
+
children: /*#__PURE__*/_jsx(Icon, {
|
|
72
|
+
name: iconName,
|
|
73
|
+
size: 16,
|
|
74
|
+
color: convertHexToRgba(colors.foreground, 0.5)
|
|
75
|
+
})
|
|
76
|
+
}), children]
|
|
77
|
+
})
|
|
78
|
+
}), (hint && !error || error && hint) && /*#__PURE__*/_jsx(Text, {
|
|
79
|
+
style: styles.hint,
|
|
80
|
+
variant: "caption",
|
|
81
|
+
children: hint
|
|
82
|
+
})]
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
const styles = StyleSheet.create({
|
|
86
|
+
hint: {
|
|
87
|
+
marginHorizontal: 8,
|
|
88
|
+
marginTop: 4
|
|
89
|
+
},
|
|
90
|
+
container: {
|
|
91
|
+
flexDirection: 'row',
|
|
92
|
+
alignItems: 'center',
|
|
93
|
+
overflow: 'hidden',
|
|
94
|
+
paddingHorizontal: 12,
|
|
95
|
+
borderWidth: 1
|
|
96
|
+
},
|
|
97
|
+
disabled: {
|
|
98
|
+
opacity: 0.5
|
|
99
|
+
},
|
|
100
|
+
label: {
|
|
101
|
+
marginBottom: 4
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
//# sourceMappingURL=InputContainer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useEffect","useMemo","Pressable","StyleSheet","View","Animated","interpolate","interpolateColor","useAnimatedStyle","useSharedValue","withTiming","Text","Icon","useTheme","convertHexToRgba","jsx","_jsx","jsxs","_jsxs","INACTIVE","ACTIVE","ERROR","InputContainer","style","contentContainerStyle","error","hint","label","onPress","focused","children","size","disabled","height","iconName","status","isFocused","colors","theme","animStyle","borderColor","value","border","primary","destructive","iconAnimStyle","opacity","width","_status","duration","containerHeight","styles","color","foreground","variant","container","borderRadius","roundness","name","create","marginHorizontal","marginTop","flexDirection","alignItems","overflow","paddingHorizontal","borderWidth","marginBottom"],"sourceRoot":"../../../src","sources":["components/InputContainer.tsx"],"mappings":";;AAAA,SAAiCA,SAAS,EAAEC,OAAO,QAAQ,OAAO;AAClE,SACEC,SAAS,EACTC,UAAU,EACVC,IAAI,QAGC,cAAc;AACrB,OAAOC,QAAQ,IACbC,WAAW,EACXC,gBAAgB,EAChBC,gBAAgB,EAChBC,cAAc,EACdC,UAAU,QACL,yBAAyB;AAEhC,OAAOC,IAAI,MAAM,WAAQ;AACzB,OAAOC,IAAI,MAAyB,WAAQ;AAC5C,OAAOC,QAAQ,MAAM,sBAAmB;AACxC,SAASC,gBAAgB,QAAQ,qBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAkBpD,MAAMC,QAAQ,GAAG,CAAC,CAAC;AACnB,MAAMC,MAAM,GAAG,CAAC;AAChB,MAAMC,KAAK,GAAG,CAAC;AAEf,eAAe,SAASC,cAAcA,CAAC;EACrCC,KAAK;EACLC,qBAAqB;EACrBC,KAAK;EACLC,IAAI;EACJC,KAAK;EACLC,OAAO;EACPC,OAAO;EACPC,QAAQ;EACRC,IAAI,GAAG,SAAS;EAChBC,QAAQ;EACRC,MAAM;EACNC;AACK,CAAC,EAAE;EACR,MAAMC,MAAM,GAAG1B,cAAc,CAACU,QAAQ,CAAC;EACvC,MAAMiB,SAAS,GAAG3B,cAAc,CAAC,CAAC,CAAC;EACnC,MAAM;IAAE4B,MAAM;IAAEC;EAAM,CAAC,GAAGzB,QAAQ,CAAC,CAAC;EAEpC,MAAM0B,SAAS,GAAG/B,gBAAgB,CAAC,OAAO;IACxCgC,WAAW,EAAEjC,gBAAgB,CAC3B4B,MAAM,CAACM,KAAK,EACZ,CAACtB,QAAQ,EAAEC,MAAM,EAAEC,KAAK,CAAC,EACzB,CAACgB,MAAM,CAACK,MAAM,EAAEL,MAAM,CAACM,OAAO,EAAEN,MAAM,CAACO,WAAW,CACpD;EACF,CAAC,CAAC,CAAC;EAEH,MAAMC,aAAa,GAAGrC,gBAAgB,CAAC,MAAM;IAC3C,OAAO;MACLsC,OAAO,EAAExC,WAAW,CAAC8B,SAAS,CAACK,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;MACrDM,KAAK,EAAEzC,WAAW,CAAC8B,SAAS,CAACK,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACrD,CAAC;EACH,CAAC,CAAC;EAEFzC,SAAS,CAAC,MAAM;IACd,MAAMgD,OAAO,GAAGnB,OAAO,GAAGT,MAAM,GAAGD,QAAQ;IAC3CgB,MAAM,CAACM,KAAK,GAAG/B,UAAU,CAACe,KAAK,GAAGJ,KAAK,GAAG2B,OAAO,EAAE;MAAEC,QAAQ,EAAE;IAAI,CAAC,CAAC;IACrEb,SAAS,CAACK,KAAK,GAAG/B,UAAU,CAACmB,OAAO,GAAG,CAAC,GAAG,CAAC,EAAE;MAAEoB,QAAQ,EAAE;IAAI,CAAC,CAAC;EAClE,CAAC,EAAE,CAACxB,KAAK,EAAEU,MAAM,EAAEN,OAAO,EAAEO,SAAS,CAAC,CAAC;EAEvC,MAAMc,eAAe,GAAGjD,OAAO,CAC7B,MAAMgC,MAAM,KAAKF,IAAI,KAAK,OAAO,GAAG,EAAE,GAAG,EAAE,CAAC,EAC5C,CAACA,IAAI,EAAEE,MAAM,CACf,CAAC;EAED,oBACEf,KAAA,CAACd,IAAI;IAACmB,KAAK,EAAE,CAACA,KAAK,EAAES,QAAQ,IAAImB,MAAM,CAACnB,QAAQ,CAAE;IAAAF,QAAA,GAC/C,CAAC,CAACH,KAAK,iBACNX,IAAA,CAACL,IAAI;MAACY,KAAK,EAAE,CAAC;QAAE6B,KAAK,EAAEf,MAAM,CAACgB;MAAW,CAAC,EAAEF,MAAM,CAACxB,KAAK,CAAE;MAAC2B,OAAO,EAAC,IAAI;MAAAxB,QAAA,EACpEH;IAAK,CACF,CACP,eACDX,IAAA,CAACd,SAAS;MAAC0B,OAAO,EAAEA,OAAQ;MAACI,QAAQ,EAAEA,QAAS;MAAAF,QAAA,eAC9CZ,KAAA,CAACb,QAAQ,CAACD,IAAI;QACZmB,KAAK,EAAE,CACLgB,SAAS,EACTY,MAAM,CAACI,SAAS,EAChB;UAAEtB,MAAM,EAAEiB,eAAe;UAAEM,YAAY,EAAElB,KAAK,CAACmB;QAAU,CAAC,EAC1DjC,qBAAqB,CACrB;QAAAM,QAAA,GAEDI,QAAQ,iBACPlB,IAAA,CAACX,QAAQ,CAACD,IAAI;UAACmB,KAAK,EAAEsB,aAAc;UAAAf,QAAA,eAClCd,IAAA,CAACJ,IAAI;YACH8C,IAAI,EAAExB,QAAS;YACfH,IAAI,EAAE,EAAG;YACTqB,KAAK,EAAEtC,gBAAgB,CAACuB,MAAM,CAACgB,UAAU,EAAE,GAAG;UAAE,CACjD;QAAC,CACW,CAChB,EACAvB,QAAQ;MAAA,CACI;IAAC,CACP,CAAC,EACX,CAAEJ,IAAI,IAAI,CAACD,KAAK,IAAMA,KAAK,IAAIC,IAAK,kBACnCV,IAAA,CAACL,IAAI;MAACY,KAAK,EAAE4B,MAAM,CAACzB,IAAK;MAAC4B,OAAO,EAAC,SAAS;MAAAxB,QAAA,EACxCJ;IAAI,CACD,CACP;EAAA,CACG,CAAC;AAEX;AAEA,MAAMyB,MAAM,GAAGhD,UAAU,CAACwD,MAAM,CAAC;EAC/BjC,IAAI,EAAE;IAAEkC,gBAAgB,EAAE,CAAC;IAAEC,SAAS,EAAE;EAAE,CAAC;EAC3CN,SAAS,EAAE;IACTO,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,QAAQ,EAAE,QAAQ;IAClBC,iBAAiB,EAAE,EAAE;IACrBC,WAAW,EAAE;EACf,CAAC;EACDlC,QAAQ,EAAE;IAAEc,OAAO,EAAE;EAAI,CAAC;EAC1BnB,KAAK,EAAE;IAAEwC,YAAY,EAAE;EAAE;AAC3B,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useEffect } from 'react';
|
|
4
|
+
import { ActivityIndicator, Platform, StyleSheet, View } from 'react-native';
|
|
5
|
+
import Animated, { useAnimatedStyle, withRepeat, withTiming, useSharedValue, Easing } from 'react-native-reanimated';
|
|
6
|
+
import useTheme from "../hooks/useTheme.js";
|
|
7
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
export default function LoadingIndicator({
|
|
9
|
+
style,
|
|
10
|
+
color,
|
|
11
|
+
size = 24
|
|
12
|
+
}) {
|
|
13
|
+
const rotation = useSharedValue(0);
|
|
14
|
+
const {
|
|
15
|
+
colors
|
|
16
|
+
} = useTheme();
|
|
17
|
+
const borderColor = color ?? colors.foreground;
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
rotation.value = withRepeat(withTiming(360, {
|
|
20
|
+
duration: 1000,
|
|
21
|
+
easing: Easing.linear
|
|
22
|
+
}), -1, false);
|
|
23
|
+
}, [rotation]);
|
|
24
|
+
const animatedStyle = useAnimatedStyle(() => {
|
|
25
|
+
return {
|
|
26
|
+
transform: [{
|
|
27
|
+
rotate: `${rotation.value}deg`
|
|
28
|
+
}]
|
|
29
|
+
};
|
|
30
|
+
});
|
|
31
|
+
return /*#__PURE__*/_jsx(View, {
|
|
32
|
+
style: [styles.container, {
|
|
33
|
+
width: size,
|
|
34
|
+
height: size
|
|
35
|
+
}, style],
|
|
36
|
+
children: Platform.OS === 'android' ? /*#__PURE__*/_jsx(ActivityIndicator, {
|
|
37
|
+
size: size,
|
|
38
|
+
color: borderColor
|
|
39
|
+
}) : /*#__PURE__*/_jsx(Animated.View, {
|
|
40
|
+
style: [styles.circle, {
|
|
41
|
+
borderTopColor: borderColor,
|
|
42
|
+
borderLeftColor: borderColor,
|
|
43
|
+
borderBottomColor: borderColor
|
|
44
|
+
}, animatedStyle]
|
|
45
|
+
})
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
const styles = StyleSheet.create({
|
|
49
|
+
container: {
|
|
50
|
+
justifyContent: 'center',
|
|
51
|
+
alignItems: 'center'
|
|
52
|
+
},
|
|
53
|
+
circle: {
|
|
54
|
+
width: '100%',
|
|
55
|
+
height: '100%',
|
|
56
|
+
borderRadius: 999,
|
|
57
|
+
borderWidth: 2,
|
|
58
|
+
borderStyle: 'solid',
|
|
59
|
+
borderRightColor: 'transparent'
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
//# sourceMappingURL=LoadingIndicator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useEffect","ActivityIndicator","Platform","StyleSheet","View","Animated","useAnimatedStyle","withRepeat","withTiming","useSharedValue","Easing","useTheme","jsx","_jsx","LoadingIndicator","style","color","size","rotation","colors","borderColor","foreground","value","duration","easing","linear","animatedStyle","transform","rotate","styles","container","width","height","children","OS","circle","borderTopColor","borderLeftColor","borderBottomColor","create","justifyContent","alignItems","borderRadius","borderWidth","borderStyle","borderRightColor"],"sourceRoot":"../../../src","sources":["components/LoadingIndicator.tsx"],"mappings":";;AAAA,SAASA,SAAS,QAAQ,OAAO;AACjC,SACEC,iBAAiB,EACjBC,QAAQ,EACRC,UAAU,EACVC,IAAI,QAGC,cAAc;AACrB,OAAOC,QAAQ,IACbC,gBAAgB,EAChBC,UAAU,EACVC,UAAU,EACVC,cAAc,EACdC,MAAM,QACD,yBAAyB;AAEhC,OAAOC,QAAQ,MAAM,sBAAmB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAQzC,eAAe,SAASC,gBAAgBA,CAAC;EAAEC,KAAK;EAAEC,KAAK;EAAEC,IAAI,GAAG;AAAU,CAAC,EAAE;EAC3E,MAAMC,QAAQ,GAAGT,cAAc,CAAC,CAAC,CAAC;EAClC,MAAM;IAAEU;EAAO,CAAC,GAAGR,QAAQ,CAAC,CAAC;EAC7B,MAAMS,WAAW,GAAGJ,KAAK,IAAIG,MAAM,CAACE,UAAU;EAE9CrB,SAAS,CAAC,MAAM;IACdkB,QAAQ,CAACI,KAAK,GAAGf,UAAU,CACzBC,UAAU,CAAC,GAAG,EAAE;MAAEe,QAAQ,EAAE,IAAI;MAAEC,MAAM,EAAEd,MAAM,CAACe;IAAO,CAAC,CAAC,EAC1D,CAAC,CAAC,EACF,KACF,CAAC;EACH,CAAC,EAAE,CAACP,QAAQ,CAAC,CAAC;EAEd,MAAMQ,aAAa,GAAGpB,gBAAgB,CAAC,MAAM;IAC3C,OAAO;MAAEqB,SAAS,EAAE,CAAC;QAAEC,MAAM,EAAE,GAAGV,QAAQ,CAACI,KAAK;MAAM,CAAC;IAAE,CAAC;EAC5D,CAAC,CAAC;EAEF,oBACET,IAAA,CAACT,IAAI;IAACW,KAAK,EAAE,CAACc,MAAM,CAACC,SAAS,EAAE;MAAEC,KAAK,EAAEd,IAAI;MAAEe,MAAM,EAAEf;IAAK,CAAC,EAAEF,KAAK,CAAE;IAAAkB,QAAA,EAEnE/B,QAAQ,CAACgC,EAAE,KAAK,SAAS,gBACxBrB,IAAA,CAACZ,iBAAiB;MAACgB,IAAI,EAAEA,IAAK;MAACD,KAAK,EAAEI;IAAY,CAAE,CAAC,gBAErDP,IAAA,CAACR,QAAQ,CAACD,IAAI;MACZW,KAAK,EAAE,CACLc,MAAM,CAACM,MAAM,EACb;QACEC,cAAc,EAAEhB,WAAW;QAC3BiB,eAAe,EAAEjB,WAAW;QAC5BkB,iBAAiB,EAAElB;MACrB,CAAC,EACDM,aAAa;IACb,CACH;EACF,CACG,CAAC;AAEX;AAEA,MAAMG,MAAM,GAAG1B,UAAU,CAACoC,MAAM,CAAC;EAC/BT,SAAS,EAAE;IACTU,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE;EACd,CAAC;EACDN,MAAM,EAAE;IACNJ,KAAK,EAAE,MAAM;IACbC,MAAM,EAAE,MAAM;IACdU,YAAY,EAAE,GAAG;IACjBC,WAAW,EAAE,CAAC;IACdC,WAAW,EAAE,OAAO;IACpBC,gBAAgB,EAAE;EACpB;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { forwardRef, useCallback, useImperativeHandle, useRef, useState } from 'react';
|
|
4
|
+
import { StyleSheet, TextInput } from 'react-native';
|
|
5
|
+
import { convertHexToRgba } from "../utils/uiUtils.js";
|
|
6
|
+
import useTheme from "../hooks/useTheme.js";
|
|
7
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
export const OtpInput = /*#__PURE__*/forwardRef(({
|
|
9
|
+
placeholder = '*',
|
|
10
|
+
style,
|
|
11
|
+
onChangeText,
|
|
12
|
+
onKeyPress,
|
|
13
|
+
editable = true,
|
|
14
|
+
...rest
|
|
15
|
+
}, ref) => {
|
|
16
|
+
const innerRef = useRef(null);
|
|
17
|
+
const [value, setValue] = useState('');
|
|
18
|
+
const [innerPlaceholder, setInnerPlaceholder] = useState(placeholder);
|
|
19
|
+
const {
|
|
20
|
+
colors
|
|
21
|
+
} = useTheme();
|
|
22
|
+
useImperativeHandle(ref, () => innerRef.current);
|
|
23
|
+
const onFocus = useCallback(() => setInnerPlaceholder(''), []);
|
|
24
|
+
const onBlur = useCallback(() => {
|
|
25
|
+
if (!value?.length) {
|
|
26
|
+
setInnerPlaceholder(placeholder);
|
|
27
|
+
}
|
|
28
|
+
}, [placeholder, value?.length]);
|
|
29
|
+
const handleChangeText = useCallback(text => {
|
|
30
|
+
const regex = /^\d+$/;
|
|
31
|
+
if (regex.test(text)) {
|
|
32
|
+
setValue(text);
|
|
33
|
+
onChangeText?.(text);
|
|
34
|
+
} else {
|
|
35
|
+
innerRef.current?.setNativeProps({
|
|
36
|
+
text: ''
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}, [onChangeText]);
|
|
40
|
+
const handleKeyPress = useCallback(event => {
|
|
41
|
+
if (event.nativeEvent.key === 'Backspace') {
|
|
42
|
+
setValue('');
|
|
43
|
+
innerRef.current?.setNativeProps({
|
|
44
|
+
text: ''
|
|
45
|
+
});
|
|
46
|
+
if (!innerRef?.current?.isFocused()) {
|
|
47
|
+
innerRef.current?.setNativeProps({
|
|
48
|
+
placeholder: innerPlaceholder
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
onKeyPress?.(event);
|
|
53
|
+
}, [innerPlaceholder, onKeyPress]);
|
|
54
|
+
return /*#__PURE__*/_jsx(TextInput, {
|
|
55
|
+
ref: innerRef,
|
|
56
|
+
...rest,
|
|
57
|
+
placeholderTextColor: convertHexToRgba(colors.foreground, 0.5),
|
|
58
|
+
style: [styles.container, style, {
|
|
59
|
+
backgroundColor: colors.background
|
|
60
|
+
}],
|
|
61
|
+
placeholder: innerPlaceholder,
|
|
62
|
+
onFocus: onFocus,
|
|
63
|
+
onBlur: onBlur,
|
|
64
|
+
onChangeText: handleChangeText,
|
|
65
|
+
maxLength: 1,
|
|
66
|
+
onKeyPress: handleKeyPress,
|
|
67
|
+
keyboardType: "number-pad",
|
|
68
|
+
editable: editable,
|
|
69
|
+
textAlignVertical: "center",
|
|
70
|
+
textAlign: "center"
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
const styles = StyleSheet.create({
|
|
74
|
+
container: {
|
|
75
|
+
alignItems: 'center',
|
|
76
|
+
justifyContent: 'center',
|
|
77
|
+
fontSize: 10,
|
|
78
|
+
fontWeight: 'normal',
|
|
79
|
+
borderWidth: 1,
|
|
80
|
+
borderRadius: 8,
|
|
81
|
+
height: 71,
|
|
82
|
+
width: 80
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
//# sourceMappingURL=OtpInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["forwardRef","useCallback","useImperativeHandle","useRef","useState","StyleSheet","TextInput","convertHexToRgba","useTheme","jsx","_jsx","OtpInput","placeholder","style","onChangeText","onKeyPress","editable","rest","ref","innerRef","value","setValue","innerPlaceholder","setInnerPlaceholder","colors","current","onFocus","onBlur","length","handleChangeText","text","regex","test","setNativeProps","handleKeyPress","event","nativeEvent","key","isFocused","placeholderTextColor","foreground","styles","container","backgroundColor","background","maxLength","keyboardType","textAlignVertical","textAlign","create","alignItems","justifyContent","fontSize","fontWeight","borderWidth","borderRadius","height","width"],"sourceRoot":"../../../src","sources":["components/OtpInput.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { forwardRef, useCallback, useRef, useState, createElement as _createElement } from 'react';
|
|
4
|
+
import { Platform, StyleSheet } from 'react-native';
|
|
5
|
+
import { View, Keyboard } from 'react-native';
|
|
6
|
+
import { OtpInput } from "./OtpInput.js";
|
|
7
|
+
import useTheme from "../hooks/useTheme.js";
|
|
8
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
+
export const OtpInputContainer = /*#__PURE__*/forwardRef(({
|
|
10
|
+
length = 4,
|
|
11
|
+
inputProps,
|
|
12
|
+
inputStyle,
|
|
13
|
+
containerProps,
|
|
14
|
+
containerStyle,
|
|
15
|
+
onFillEnded,
|
|
16
|
+
autoFocus = true,
|
|
17
|
+
editable = true
|
|
18
|
+
}, _) => {
|
|
19
|
+
const isIOS = Platform.OS === 'ios';
|
|
20
|
+
const pins = Array.from({
|
|
21
|
+
length
|
|
22
|
+
}).map((__, i) => i);
|
|
23
|
+
const inputRefs = useRef([]);
|
|
24
|
+
const pinsValues = useRef([]);
|
|
25
|
+
const iosOTP = useRef({
|
|
26
|
+
key: '',
|
|
27
|
+
index: null
|
|
28
|
+
});
|
|
29
|
+
const timeoutRefs = useRef([]);
|
|
30
|
+
const [maskedPins, setMaskedPins] = useState(new Array(length).fill(false));
|
|
31
|
+
const {
|
|
32
|
+
colors
|
|
33
|
+
} = useTheme();
|
|
34
|
+
const maskPin = useCallback(index => {
|
|
35
|
+
setMaskedPins(prev => {
|
|
36
|
+
const newMasked = [...prev];
|
|
37
|
+
newMasked[index] = true;
|
|
38
|
+
return newMasked;
|
|
39
|
+
});
|
|
40
|
+
}, []);
|
|
41
|
+
const handleOTP = useCallback(otp => {
|
|
42
|
+
const regexp = new RegExp(`[0-9]{${length}}`);
|
|
43
|
+
const otps = otp.match(regexp);
|
|
44
|
+
if (otps?.length) {
|
|
45
|
+
const otpSplits = otp.split('');
|
|
46
|
+
otpSplits.forEach((otpSplit, i) => inputRefs?.current[i]?.setNativeProps({
|
|
47
|
+
text: otpSplit
|
|
48
|
+
}));
|
|
49
|
+
onFillEnded?.(otp);
|
|
50
|
+
iosOTP.current = {
|
|
51
|
+
key: '',
|
|
52
|
+
index: null
|
|
53
|
+
};
|
|
54
|
+
Keyboard.dismiss();
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
return false;
|
|
58
|
+
}, [length, onFillEnded]);
|
|
59
|
+
const handleChangeText = useCallback(async (text, index) => {
|
|
60
|
+
pinsValues.current[index] = text;
|
|
61
|
+
if (timeoutRefs.current[index]) {
|
|
62
|
+
clearTimeout(timeoutRefs.current[index]);
|
|
63
|
+
}
|
|
64
|
+
setMaskedPins(prev => {
|
|
65
|
+
const newMasked = [...prev];
|
|
66
|
+
newMasked[index] = false;
|
|
67
|
+
return newMasked;
|
|
68
|
+
});
|
|
69
|
+
timeoutRefs.current[index] = setTimeout(() => {
|
|
70
|
+
maskPin(index);
|
|
71
|
+
}, 500);
|
|
72
|
+
if (index + 1 <= pins.length - 1) {
|
|
73
|
+
inputRefs?.current[index + 1]?.focus();
|
|
74
|
+
} else {
|
|
75
|
+
onFillEnded?.(pinsValues.current.join(''));
|
|
76
|
+
Keyboard.dismiss();
|
|
77
|
+
}
|
|
78
|
+
}, [maskPin, pins.length, onFillEnded]);
|
|
79
|
+
const onKeyPress = useCallback((event, index) => {
|
|
80
|
+
event.persist();
|
|
81
|
+
if (isIOS && Number.isInteger(Number(event.nativeEvent.key))) {
|
|
82
|
+
if (iosOTP.current.index === null) {
|
|
83
|
+
iosOTP.current = {
|
|
84
|
+
key: event.nativeEvent.key,
|
|
85
|
+
index
|
|
86
|
+
};
|
|
87
|
+
} else {
|
|
88
|
+
if (iosOTP.current.index === index) {
|
|
89
|
+
iosOTP.current = {
|
|
90
|
+
key: `${iosOTP.current.key}${event.nativeEvent.key}`,
|
|
91
|
+
index
|
|
92
|
+
};
|
|
93
|
+
} else {
|
|
94
|
+
iosOTP.current = {
|
|
95
|
+
key: '',
|
|
96
|
+
index: null
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
if (iosOTP.current.key.length === length) {
|
|
101
|
+
handleOTP(iosOTP.current.key);
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
if (event.nativeEvent.key === 'Backspace') {
|
|
106
|
+
onFillEnded?.('');
|
|
107
|
+
iosOTP.current = {
|
|
108
|
+
key: '',
|
|
109
|
+
index: null
|
|
110
|
+
};
|
|
111
|
+
if (index - 1 >= 0) {
|
|
112
|
+
inputRefs?.current[index - 1]?.focus();
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}, [handleOTP, length, onFillEnded, isIOS]);
|
|
116
|
+
return /*#__PURE__*/_jsx(View, {
|
|
117
|
+
style: [styles.container, containerStyle],
|
|
118
|
+
...containerProps,
|
|
119
|
+
children: pins.map(pin => {
|
|
120
|
+
return /*#__PURE__*/_createElement(OtpInput, {
|
|
121
|
+
...inputProps,
|
|
122
|
+
autoFocus: autoFocus && pin === 0,
|
|
123
|
+
ref: input => inputRefs?.current.push(input),
|
|
124
|
+
key: pin,
|
|
125
|
+
style: [inputStyle, {
|
|
126
|
+
borderColor: colors.border,
|
|
127
|
+
color: colors.foreground
|
|
128
|
+
}],
|
|
129
|
+
onChangeText: text => handleChangeText(text, pin),
|
|
130
|
+
onKeyPress: event => onKeyPress(event, pin),
|
|
131
|
+
autoComplete: "sms-otp",
|
|
132
|
+
textContentType: "oneTimeCode",
|
|
133
|
+
keyboardType: "numeric",
|
|
134
|
+
secureTextEntry: maskedPins[pin],
|
|
135
|
+
editable: editable
|
|
136
|
+
});
|
|
137
|
+
})
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
const styles = StyleSheet.create({
|
|
141
|
+
container: {
|
|
142
|
+
display: 'flex',
|
|
143
|
+
flexDirection: 'row',
|
|
144
|
+
alignItems: 'center',
|
|
145
|
+
justifyContent: 'center'
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
//# sourceMappingURL=OtpInputContainer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["forwardRef","useCallback","useRef","useState","createElement","_createElement","Platform","StyleSheet","View","Keyboard","OtpInput","useTheme","jsx","_jsx","OtpInputContainer","length","inputProps","inputStyle","containerProps","containerStyle","onFillEnded","autoFocus","editable","_","isIOS","OS","pins","Array","from","map","__","i","inputRefs","pinsValues","iosOTP","key","index","timeoutRefs","maskedPins","setMaskedPins","fill","colors","maskPin","prev","newMasked","handleOTP","otp","regexp","RegExp","otps","match","otpSplits","split","forEach","otpSplit","current","setNativeProps","text","dismiss","handleChangeText","clearTimeout","setTimeout","focus","join","onKeyPress","event","persist","Number","isInteger","nativeEvent","style","styles","container","children","pin","ref","input","push","borderColor","border","color","foreground","onChangeText","autoComplete","textContentType","keyboardType","secureTextEntry","create","display","flexDirection","alignItems","justifyContent"],"sourceRoot":"../../../src","sources":["components/OtpInputContainer.tsx"],"mappings":"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","ignoreList":[]}
|