@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.
Files changed (155) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +148 -0
  3. package/lib/module/components/Accordion.js +242 -0
  4. package/lib/module/components/Accordion.js.map +1 -0
  5. package/lib/module/components/BottomSheet.js +183 -0
  6. package/lib/module/components/BottomSheet.js.map +1 -0
  7. package/lib/module/components/Button.js +64 -0
  8. package/lib/module/components/Button.js.map +1 -0
  9. package/lib/module/components/ButtonContainer.js +118 -0
  10. package/lib/module/components/ButtonContainer.js.map +1 -0
  11. package/lib/module/components/CalendarPicker.js +374 -0
  12. package/lib/module/components/CalendarPicker.js.map +1 -0
  13. package/lib/module/components/Card.js +43 -0
  14. package/lib/module/components/Card.js.map +1 -0
  15. package/lib/module/components/Checkbox.js +122 -0
  16. package/lib/module/components/Checkbox.js.map +1 -0
  17. package/lib/module/components/Chip.js +50 -0
  18. package/lib/module/components/Chip.js.map +1 -0
  19. package/lib/module/components/CopyToClipboard.js +98 -0
  20. package/lib/module/components/CopyToClipboard.js.map +1 -0
  21. package/lib/module/components/Dialog.js +232 -0
  22. package/lib/module/components/Dialog.js.map +1 -0
  23. package/lib/module/components/Header.js +94 -0
  24. package/lib/module/components/Header.js.map +1 -0
  25. package/lib/module/components/Icon.js +22 -0
  26. package/lib/module/components/Icon.js.map +1 -0
  27. package/lib/module/components/IconButton.js +57 -0
  28. package/lib/module/components/IconButton.js.map +1 -0
  29. package/lib/module/components/Input.js +111 -0
  30. package/lib/module/components/Input.js.map +1 -0
  31. package/lib/module/components/InputContainer.js +104 -0
  32. package/lib/module/components/InputContainer.js.map +1 -0
  33. package/lib/module/components/LoadingIndicator.js +62 -0
  34. package/lib/module/components/LoadingIndicator.js.map +1 -0
  35. package/lib/module/components/OtpInput.js +85 -0
  36. package/lib/module/components/OtpInput.js.map +1 -0
  37. package/lib/module/components/OtpInputContainer.js +148 -0
  38. package/lib/module/components/OtpInputContainer.js.map +1 -0
  39. package/lib/module/components/Select.js +189 -0
  40. package/lib/module/components/Select.js.map +1 -0
  41. package/lib/module/components/Switch.js +74 -0
  42. package/lib/module/components/Switch.js.map +1 -0
  43. package/lib/module/components/Tabs.js +99 -0
  44. package/lib/module/components/Tabs.js.map +1 -0
  45. package/lib/module/components/Text.js +66 -0
  46. package/lib/module/components/Text.js.map +1 -0
  47. package/lib/module/components/TextArea.js +106 -0
  48. package/lib/module/components/TextArea.js.map +1 -0
  49. package/lib/module/hooks/useTheme.js +20 -0
  50. package/lib/module/hooks/useTheme.js.map +1 -0
  51. package/lib/module/index.js +27 -0
  52. package/lib/module/index.js.map +1 -0
  53. package/lib/module/package.json +1 -0
  54. package/lib/module/store/themeStore.js +50 -0
  55. package/lib/module/store/themeStore.js.map +1 -0
  56. package/lib/module/theme/colors.js +25 -0
  57. package/lib/module/theme/colors.js.map +1 -0
  58. package/lib/module/theme/meassures.js +10 -0
  59. package/lib/module/theme/meassures.js.map +1 -0
  60. package/lib/module/utils/stringUtils.js +12 -0
  61. package/lib/module/utils/stringUtils.js.map +1 -0
  62. package/lib/module/utils/uiUtils.js +63 -0
  63. package/lib/module/utils/uiUtils.js.map +1 -0
  64. package/lib/typescript/package.json +1 -0
  65. package/lib/typescript/src/components/Accordion.d.ts +22 -0
  66. package/lib/typescript/src/components/Accordion.d.ts.map +1 -0
  67. package/lib/typescript/src/components/BottomSheet.d.ts +13 -0
  68. package/lib/typescript/src/components/BottomSheet.d.ts.map +1 -0
  69. package/lib/typescript/src/components/Button.d.ts +16 -0
  70. package/lib/typescript/src/components/Button.d.ts.map +1 -0
  71. package/lib/typescript/src/components/ButtonContainer.d.ts +30 -0
  72. package/lib/typescript/src/components/ButtonContainer.d.ts.map +1 -0
  73. package/lib/typescript/src/components/CalendarPicker.d.ts +19 -0
  74. package/lib/typescript/src/components/CalendarPicker.d.ts.map +1 -0
  75. package/lib/typescript/src/components/Card.d.ts +7 -0
  76. package/lib/typescript/src/components/Card.d.ts.map +1 -0
  77. package/lib/typescript/src/components/Checkbox.d.ts +11 -0
  78. package/lib/typescript/src/components/Checkbox.d.ts.map +1 -0
  79. package/lib/typescript/src/components/Chip.d.ts +9 -0
  80. package/lib/typescript/src/components/Chip.d.ts.map +1 -0
  81. package/lib/typescript/src/components/CopyToClipboard.d.ts +12 -0
  82. package/lib/typescript/src/components/CopyToClipboard.d.ts.map +1 -0
  83. package/lib/typescript/src/components/Dialog.d.ts +40 -0
  84. package/lib/typescript/src/components/Dialog.d.ts.map +1 -0
  85. package/lib/typescript/src/components/Header.d.ts +18 -0
  86. package/lib/typescript/src/components/Header.d.ts.map +1 -0
  87. package/lib/typescript/src/components/Icon.d.ts +12 -0
  88. package/lib/typescript/src/components/Icon.d.ts.map +1 -0
  89. package/lib/typescript/src/components/IconButton.d.ts +13 -0
  90. package/lib/typescript/src/components/IconButton.d.ts.map +1 -0
  91. package/lib/typescript/src/components/Input.d.ts +17 -0
  92. package/lib/typescript/src/components/Input.d.ts.map +1 -0
  93. package/lib/typescript/src/components/InputContainer.d.ts +22 -0
  94. package/lib/typescript/src/components/InputContainer.d.ts.map +1 -0
  95. package/lib/typescript/src/components/LoadingIndicator.d.ts +9 -0
  96. package/lib/typescript/src/components/LoadingIndicator.d.ts.map +1 -0
  97. package/lib/typescript/src/components/OtpInput.d.ts +3 -0
  98. package/lib/typescript/src/components/OtpInput.d.ts.map +1 -0
  99. package/lib/typescript/src/components/OtpInputContainer.d.ts +17 -0
  100. package/lib/typescript/src/components/OtpInputContainer.d.ts.map +1 -0
  101. package/lib/typescript/src/components/Select.d.ts +20 -0
  102. package/lib/typescript/src/components/Select.d.ts.map +1 -0
  103. package/lib/typescript/src/components/Switch.d.ts +10 -0
  104. package/lib/typescript/src/components/Switch.d.ts.map +1 -0
  105. package/lib/typescript/src/components/Tabs.d.ts +14 -0
  106. package/lib/typescript/src/components/Tabs.d.ts.map +1 -0
  107. package/lib/typescript/src/components/Text.d.ts +7 -0
  108. package/lib/typescript/src/components/Text.d.ts.map +1 -0
  109. package/lib/typescript/src/components/TextArea.d.ts +16 -0
  110. package/lib/typescript/src/components/TextArea.d.ts.map +1 -0
  111. package/lib/typescript/src/hooks/useTheme.d.ts +9 -0
  112. package/lib/typescript/src/hooks/useTheme.d.ts.map +1 -0
  113. package/lib/typescript/src/index.d.ts +27 -0
  114. package/lib/typescript/src/index.d.ts.map +1 -0
  115. package/lib/typescript/src/store/themeStore.d.ts +32 -0
  116. package/lib/typescript/src/store/themeStore.d.ts.map +1 -0
  117. package/lib/typescript/src/theme/colors.d.ts +14 -0
  118. package/lib/typescript/src/theme/colors.d.ts.map +1 -0
  119. package/lib/typescript/src/theme/meassures.d.ts +9 -0
  120. package/lib/typescript/src/theme/meassures.d.ts.map +1 -0
  121. package/lib/typescript/src/utils/stringUtils.d.ts +7 -0
  122. package/lib/typescript/src/utils/stringUtils.d.ts.map +1 -0
  123. package/lib/typescript/src/utils/uiUtils.d.ts +21 -0
  124. package/lib/typescript/src/utils/uiUtils.d.ts.map +1 -0
  125. package/package.json +173 -0
  126. package/src/components/Accordion.tsx +284 -0
  127. package/src/components/BottomSheet.tsx +259 -0
  128. package/src/components/Button.tsx +85 -0
  129. package/src/components/ButtonContainer.tsx +161 -0
  130. package/src/components/CalendarPicker.tsx +428 -0
  131. package/src/components/Card.tsx +55 -0
  132. package/src/components/Checkbox.tsx +160 -0
  133. package/src/components/Chip.tsx +58 -0
  134. package/src/components/CopyToClipboard.tsx +108 -0
  135. package/src/components/Dialog.tsx +263 -0
  136. package/src/components/Header.tsx +100 -0
  137. package/src/components/Icon.tsx +27 -0
  138. package/src/components/IconButton.tsx +71 -0
  139. package/src/components/Input.tsx +144 -0
  140. package/src/components/InputContainer.tsx +134 -0
  141. package/src/components/LoadingIndicator.tsx +78 -0
  142. package/src/components/OtpInput.tsx +109 -0
  143. package/src/components/OtpInputContainer.tsx +196 -0
  144. package/src/components/Select.tsx +219 -0
  145. package/src/components/Switch.tsx +104 -0
  146. package/src/components/Tabs.tsx +117 -0
  147. package/src/components/Text.tsx +64 -0
  148. package/src/components/TextArea.tsx +141 -0
  149. package/src/hooks/useTheme.tsx +23 -0
  150. package/src/index.tsx +38 -0
  151. package/src/store/themeStore.ts +57 -0
  152. package/src/theme/colors.ts +35 -0
  153. package/src/theme/meassures.ts +7 -0
  154. package/src/utils/stringUtils.ts +16 -0
  155. 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":"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","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":[]}