@herca/rn-kit 0.1.26 → 0.1.27

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 (54) hide show
  1. package/lib/module/BottomSheet/BottomSheet.js +4 -1
  2. package/lib/module/BottomSheet/BottomSheet.js.map +1 -1
  3. package/lib/module/Button/tests/Button.test.js +70 -0
  4. package/lib/module/Button/tests/Button.test.js.map +1 -0
  5. package/lib/module/Button/type.js +1 -1
  6. package/lib/module/DatePicker/TimePicker.js +84 -39
  7. package/lib/module/DatePicker/TimePicker.js.map +1 -1
  8. package/lib/module/Icon/Icon.js +7 -1
  9. package/lib/module/Icon/Icon.js.map +1 -1
  10. package/lib/module/Icon/README.md +6 -0
  11. package/lib/module/Icon/icons/Bold.js +25 -0
  12. package/lib/module/Icon/icons/Bold.js.map +1 -0
  13. package/lib/module/Icon/icons/Italic.js +25 -0
  14. package/lib/module/Icon/icons/Italic.js.map +1 -0
  15. package/lib/module/Icon/icons/UnderLine.js +25 -0
  16. package/lib/module/Icon/icons/UnderLine.js.map +1 -0
  17. package/lib/module/Input/InputOtp.js +7 -5
  18. package/lib/module/Input/InputOtp.js.map +1 -1
  19. package/lib/module/Input/README_INPUT_OTP.md +8 -7
  20. package/lib/module/TextEditor/TextEditor.js +206 -4
  21. package/lib/module/TextEditor/TextEditor.js.map +1 -1
  22. package/lib/typescript/src/Button/tests/Button.test.d.ts +2 -0
  23. package/lib/typescript/src/Button/tests/Button.test.d.ts.map +1 -0
  24. package/lib/typescript/src/DatePicker/TimePicker.d.ts.map +1 -1
  25. package/lib/typescript/src/Icon/Icon.d.ts.map +1 -1
  26. package/lib/typescript/src/Icon/icons/Bold.d.ts +9 -0
  27. package/lib/typescript/src/Icon/icons/Bold.d.ts.map +1 -0
  28. package/lib/typescript/src/Icon/icons/Italic.d.ts +9 -0
  29. package/lib/typescript/src/Icon/icons/Italic.d.ts.map +1 -0
  30. package/lib/typescript/src/Icon/icons/UnderLine.d.ts +9 -0
  31. package/lib/typescript/src/Icon/icons/UnderLine.d.ts.map +1 -0
  32. package/lib/typescript/src/Icon/type.d.ts +1 -1
  33. package/lib/typescript/src/Icon/type.d.ts.map +1 -1
  34. package/lib/typescript/src/Input/InputOtp.d.ts +1 -0
  35. package/lib/typescript/src/Input/InputOtp.d.ts.map +1 -1
  36. package/lib/typescript/src/TextEditor/TextEditor.d.ts +2 -1
  37. package/lib/typescript/src/TextEditor/TextEditor.d.ts.map +1 -1
  38. package/lib/typescript/src/TextEditor/types.d.ts +7 -0
  39. package/lib/typescript/src/TextEditor/types.d.ts.map +1 -1
  40. package/package.json +2 -2
  41. package/src/BottomSheet/BottomSheet.tsx +4 -1
  42. package/src/Button/tests/Button.test.tsx +49 -0
  43. package/src/Button/type.tsx +1 -1
  44. package/src/DatePicker/TimePicker.tsx +116 -52
  45. package/src/Icon/Icon.tsx +6 -0
  46. package/src/Icon/README.md +6 -0
  47. package/src/Icon/icons/Bold.tsx +22 -0
  48. package/src/Icon/icons/Italic.tsx +22 -0
  49. package/src/Icon/icons/UnderLine.tsx +26 -0
  50. package/src/Icon/type.tsx +3 -0
  51. package/src/Input/InputOtp.tsx +7 -3
  52. package/src/Input/README_INPUT_OTP.md +8 -7
  53. package/src/TextEditor/TextEditor.tsx +222 -3
  54. package/src/TextEditor/types.tsx +7 -0
@@ -1 +1 @@
1
- {"version":3,"names":["React","useRef","useState","View","TextInput","StyleSheet","Color","LabelForm","Typography","jsx","_jsx","jsxs","_jsxs","InputOtp","length","onChange","label","hint","hasError","inputs","values","Array","fill","useFlexGrow","setUseFlexGrow","containerWidth","itemWidth","itemGap","handleChange","text","index","current","join","focus","handleKeyPress","e","nativeEvent","key","style","styles","gap4","children","title","container","onLayout","layout","width","totalNeededWidth","map","_","i","input","borderColor","danger","gray","undefined","flexGrow","keyboardType","maxLength","onChangeText","onKeyPress","ref","color","variant","create","gap","flexDirection","justifyContent","height","borderWidth","borderRadius","textAlign","base","black100","fontSize","fontWeight"],"sourceRoot":"../../../src","sources":["Input/InputOtp.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useRef","useState","StyleSheet","TextInput","View","Color","LabelForm","Typography","jsx","_jsx","jsxs","_jsxs","InputOtp","length","onChange","label","hint","hasError","inputCenter","inputs","values","Array","fill","useFlexGrow","setUseFlexGrow","containerWidth","itemWidth","itemGap","handleChange","text","index","current","join","focus","handleKeyPress","e","nativeEvent","key","style","styles","gap4","children","title","container","justifyContent","onLayout","layout","width","totalNeededWidth","map","_","i","input","borderColor","danger","gray","undefined","flexGrow","keyboardType","maxLength","onChangeText","onKeyPress","ref","color","variant","create","gap","flexDirection","height","borderWidth","borderRadius","textAlign","base","black100","fontSize","fontWeight"],"sourceRoot":"../../../src","sources":["Input/InputOtp.tsx"],"mappings":"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","ignoreList":[]}
@@ -24,13 +24,14 @@ Salin file `InputOtp.tsx` ke proyek React Native Anda dan import sesuai kebutuha
24
24
 
25
25
  ## Props
26
26
 
27
- | Nama | Tipe | Default | Deskripsi |
28
- |------------|-----------------------------|---------|----------------------------------------------------------------|
29
- | `length` | `number` | 6 | Jumlah kotak input OTP yang ingin ditampilkan |
30
- | `onChange` | `(otp: string) => void` | - | Callback saat isi OTP berubah, menerima OTP lengkap sebagai string |
31
- | `label` | `string` | - | Label yang tampil di atas kotak input |
32
- | `hint` | `string` | - | Pesan kecil di bawah input (misal instruksi atau error) |
33
- | `hasError` | `boolean` | false | Jika `true`, border input berubah warna merah (indikasi error) |
27
+ | Nama | Tipe | Default | Deskripsi |
28
+ | ------------- | ----------------------- | ------- | ---------------------------------------------------------------------------------------- |
29
+ | `length` | `number` | 6 | Jumlah kotak input OTP yang ingin ditampilkan |
30
+ | `onChange` | `(otp: string) => void` | - | Callback saat isi OTP berubah, menerima OTP lengkap sebagai string |
31
+ | `label` | `string` | - | Label yang tampil di atas kotak input |
32
+ | `hint` | `string` | - | Pesan kecil di bawah input (misal instruksi atau error) |
33
+ | `hasError` | `boolean` | false | Jika `true`, border input berubah warna merah (indikasi error) |
34
+ | `inputCenter` | `boolean` | false | Jika `true`, maka seluruh input field akan memposisikan diri ke tengah secara horizontal |
34
35
 
35
36
  ---
36
37
 
@@ -1,8 +1,210 @@
1
1
  "use strict";
2
2
 
3
- import { View } from 'react-native';
4
- import { jsx as _jsx } from "react/jsx-runtime";
5
- export default function TextEditor() {
6
- return /*#__PURE__*/_jsx(View, {});
3
+ import { useRef, useState, useEffect } from 'react';
4
+ import { View, StyleSheet, Platform, KeyboardAvoidingView, TouchableOpacity, Keyboard } from 'react-native';
5
+ import { WebView } from 'react-native-webview';
6
+ import Color from "../Color/Color.js";
7
+ import LabelForm from "../LabelForm/LabelForm.js";
8
+ import Typography from "../Typography/Typography.js";
9
+ import Icon from "../Icon/index.js";
10
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
+ export default function TextEditor({
12
+ label,
13
+ hasError,
14
+ hint,
15
+ onChange,
16
+ height = 300
17
+ }) {
18
+ const [keyboardHeight, setKeyboardHeight] = useState(0);
19
+ const [showToolbar, setShowToolbar] = useState(false);
20
+ const webviewRef = useRef(null);
21
+ const handleOnChange = data => {
22
+ onChange?.(data);
23
+ };
24
+ const htmlEditor = `
25
+ <html>
26
+ <head>
27
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
28
+ <style>
29
+ *,
30
+ *::before,
31
+ *::after {
32
+ box-sizing: border-box;
33
+ }
34
+ html, body {
35
+ margin: 0;
36
+ padding: 0;
37
+ width: 99.9%;
38
+ height: 100%;
39
+ overflow-x: hidden;
40
+ }
41
+ #editor {
42
+ min-height: ${height};
43
+ width: 100%;
44
+ max-width: 100%;
45
+ padding: 12px;
46
+ font-size: 12px;
47
+ border: 1px solid ${Color.gray[200]};
48
+ border-radius: 6px;
49
+ outline: none;
50
+ transition: border 0.2s;
51
+ overflow-wrap: break-word;
52
+ font-weight: 500;
53
+ word-wrap: break-word;
54
+ word-break: break-word;
55
+ }
56
+ #editor.focused {
57
+ border-color: ${Color.gray[200]}
58
+ }
59
+ </style>
60
+ </head>
61
+ <body>
62
+ <div id="editor" contenteditable="true">Tulis sesuatu di sini...</div>
63
+ <script>
64
+ const editor = document.getElementById("editor");
65
+
66
+ editor.addEventListener("focus", () => {
67
+ editor.classList.add("focused");
68
+ });
69
+
70
+ editor.addEventListener("blur", () => {
71
+ editor.classList.remove("focused");
72
+ });
73
+ const handleMessage = (command) => {
74
+ if (command === 'getContent') {
75
+ window.ReactNativeWebView.postMessage(editor.innerHTML);
76
+ } else {
77
+ editor.focus();
78
+ document.execCommand(command, false, '');
79
+ }
80
+ };
81
+
82
+ // ini untuk Android
83
+ document.addEventListener("message", (event) => {
84
+ handleMessage(event.data);
85
+ });
86
+
87
+ // ini untuk iOS
88
+ window.addEventListener("message", (event) => {
89
+ handleMessage(event.data);
90
+ });
91
+ </script>
92
+ </body>
93
+ </html>
94
+ `;
95
+ const formatText = command => {
96
+ if (webviewRef.current) {
97
+ if (Platform.OS === 'ios') {
98
+ webviewRef.current.injectJavaScript(`
99
+ document.execCommand('${command}', false, '');
100
+ true; //di ios harus biar berfunsi boldnya
101
+ `);
102
+ } else {
103
+ webviewRef.current.postMessage(command);
104
+ }
105
+ }
106
+ };
107
+ useEffect(() => {
108
+ const showSub = Keyboard.addListener('keyboardDidShow', e => {
109
+ if (Platform.OS === 'ios') setKeyboardHeight(e.endCoordinates.height - 35);
110
+ setShowToolbar(true);
111
+ });
112
+ const hideSub = Keyboard.addListener('keyboardDidHide', () => {
113
+ if (Platform.OS === 'ios') setKeyboardHeight(0);
114
+ setShowToolbar(false);
115
+ });
116
+ return () => {
117
+ showSub.remove();
118
+ hideSub.remove();
119
+ };
120
+ }, []);
121
+ return /*#__PURE__*/_jsxs(View, {
122
+ style: styles.container,
123
+ children: [label ? /*#__PURE__*/_jsx(LabelForm, {
124
+ title: label
125
+ }) : null, /*#__PURE__*/_jsx(KeyboardAvoidingView, {
126
+ style: (styles.editorWrapper, [{
127
+ minHeight: height
128
+ }]),
129
+ behavior: Platform.OS === 'ios' ? 'padding' : undefined,
130
+ children: /*#__PURE__*/_jsx(WebView, {
131
+ ref: webviewRef,
132
+ originWhitelist: ['*'],
133
+ source: {
134
+ html: htmlEditor
135
+ },
136
+ onMessage: event => {
137
+ handleOnChange(event.nativeEvent.data);
138
+ },
139
+ style: styles.webview,
140
+ javaScriptEnabled: true,
141
+ domStorageEnabled: true,
142
+ mixedContentMode: "always",
143
+ allowUniversalAccessFromFileURLs: true,
144
+ allowFileAccess: true
145
+ })
146
+ }), hint ? /*#__PURE__*/_jsx(Typography, {
147
+ color: hasError ? Color.danger[500] : Color.gray[700],
148
+ variant: "t3",
149
+ weight: "medium",
150
+ children: hint
151
+ }) : null, showToolbar ? /*#__PURE__*/_jsxs(View, {
152
+ style: [styles.toolbar, {
153
+ bottom: keyboardHeight
154
+ }],
155
+ children: [/*#__PURE__*/_jsx(TouchableOpacity, {
156
+ onPress: () => formatText('bold'),
157
+ style: styles.toolButton,
158
+ children: /*#__PURE__*/_jsx(Icon, {
159
+ name: "Bold"
160
+ })
161
+ }), /*#__PURE__*/_jsx(TouchableOpacity, {
162
+ onPress: () => formatText('italic'),
163
+ style: styles.toolButton,
164
+ children: /*#__PURE__*/_jsx(Icon, {
165
+ name: "Italic"
166
+ })
167
+ }), /*#__PURE__*/_jsx(TouchableOpacity, {
168
+ onPress: () => formatText('underline'),
169
+ style: styles.toolButton,
170
+ children: /*#__PURE__*/_jsx(Icon, {
171
+ name: "UnderLine"
172
+ })
173
+ })]
174
+ }) : null]
175
+ });
7
176
  }
177
+ const styles = StyleSheet.create({
178
+ container: {
179
+ backgroundColor: '#fff',
180
+ gap: 4,
181
+ position: 'relative'
182
+ },
183
+ editorWrapper: {
184
+ flex: 1
185
+ },
186
+ toolbar: {
187
+ flexDirection: 'row',
188
+ borderTopWidth: 1,
189
+ borderColor: Color.gray[200],
190
+ paddingVertical: 8,
191
+ paddingHorizontal: 10,
192
+ position: 'absolute',
193
+ bottom: 0,
194
+ left: 0,
195
+ width: '100%',
196
+ alignItems: 'center'
197
+ },
198
+ toolButton: {
199
+ padding: 8,
200
+ marginHorizontal: 4,
201
+ borderRadius: 6
202
+ },
203
+ toolText: {
204
+ fontWeight: 'bold'
205
+ },
206
+ webview: {
207
+ flex: 1
208
+ }
209
+ });
8
210
  //# sourceMappingURL=TextEditor.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["View","jsx","_jsx","TextEditor"],"sourceRoot":"../../../src","sources":["TextEditor/TextEditor.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEpC,eAAe,SAASC,UAAUA,CAAA,EAAG;EACnC,oBAAOD,IAAA,CAACF,IAAI,IAAO,CAAC;AACtB","ignoreList":[]}
1
+ {"version":3,"names":["useRef","useState","useEffect","View","StyleSheet","Platform","KeyboardAvoidingView","TouchableOpacity","Keyboard","WebView","Color","LabelForm","Typography","Icon","jsx","_jsx","jsxs","_jsxs","TextEditor","label","hasError","hint","onChange","height","keyboardHeight","setKeyboardHeight","showToolbar","setShowToolbar","webviewRef","handleOnChange","data","htmlEditor","gray","formatText","command","current","OS","injectJavaScript","postMessage","showSub","addListener","e","endCoordinates","hideSub","remove","style","styles","container","children","title","editorWrapper","minHeight","behavior","undefined","ref","originWhitelist","source","html","onMessage","event","nativeEvent","webview","javaScriptEnabled","domStorageEnabled","mixedContentMode","allowUniversalAccessFromFileURLs","allowFileAccess","color","danger","variant","weight","toolbar","bottom","onPress","toolButton","name","create","backgroundColor","gap","position","flex","flexDirection","borderTopWidth","borderColor","paddingVertical","paddingHorizontal","left","width","alignItems","padding","marginHorizontal","borderRadius","toolText","fontWeight"],"sourceRoot":"../../../src","sources":["TextEditor/TextEditor.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Button.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.test.d.ts","sourceRoot":"","sources":["../../../../../src/Button/tests/Button.test.tsx"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"TimePicker.d.ts","sourceRoot":"","sources":["../../../../src/DatePicker/TimePicker.tsx"],"names":[],"mappings":"AAoBA,UAAU,eAAe;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC9D;AAID,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EACtC,MAAM,EACN,OAAO,EACP,QAAQ,GACT,EAAE,eAAe,2CAkJjB"}
1
+ {"version":3,"file":"TimePicker.d.ts","sourceRoot":"","sources":["../../../../src/DatePicker/TimePicker.tsx"],"names":[],"mappings":"AAsBA,UAAU,eAAe;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC9D;AAOD,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EACtC,MAAM,EACN,OAAO,EACP,QAAQ,GACT,EAAE,eAAe,2CAgNjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Icon.d.ts","sourceRoot":"","sources":["../../../../src/Icon/Icon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAmB1B,OAAO,KAAK,EAAiB,SAAS,EAAE,MAAM,QAAQ,CAAC;AAqGvD,QAAA,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAa7B,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"Icon.d.ts","sourceRoot":"","sources":["../../../../src/Icon/Icon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAmB1B,OAAO,KAAK,EAAiB,SAAS,EAAE,MAAM,QAAQ,CAAC;AA2GvD,QAAA,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAa7B,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ interface Props {
3
+ size?: number;
4
+ color?: string;
5
+ style?: object;
6
+ }
7
+ declare const Bold: React.FC<Props>;
8
+ export default Bold;
9
+ //# sourceMappingURL=Bold.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Bold.d.ts","sourceRoot":"","sources":["../../../../../src/Icon/icons/Bold.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,KAAK;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,QAAA,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAUzB,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ interface Props {
3
+ size?: number;
4
+ color?: string;
5
+ style?: object;
6
+ }
7
+ declare const Italic: React.FC<Props>;
8
+ export default Italic;
9
+ //# sourceMappingURL=Italic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Italic.d.ts","sourceRoot":"","sources":["../../../../../src/Icon/icons/Italic.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,KAAK;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,QAAA,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAU3B,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ interface Props {
3
+ size?: number;
4
+ color?: string;
5
+ style?: object;
6
+ }
7
+ declare const UnderLine: React.FC<Props>;
8
+ export default UnderLine;
9
+ //# sourceMappingURL=UnderLine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnderLine.d.ts","sourceRoot":"","sources":["../../../../../src/Icon/icons/UnderLine.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,KAAK;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,QAAA,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAc9B,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { type ViewStyle } from 'react-native';
2
- export type IconNameProps = 'Search' | 'User' | 'Eye' | 'EyeOpen' | 'ArrowRight' | 'ArrowLeft' | 'Document' | 'Calendar' | 'ExclamationMark' | 'Download' | 'x-circle' | 'StickyNote' | 'RadioButton' | 'Pdf' | 'ArrowBackAlt' | 'ArrowForwardAlt' | 'ArrowDown' | 'ArrowUp' | 'Check' | 'Filter' | 'AirPlane' | 'Camera' | 'Image' | 'Times' | 'Plus' | 'Minus' | 'Bell' | 'file-list-check' | 'file-text' | 'bookmark-user' | 'folder-clock' | 'home-fill' | 'home-outline' | 'user-circle-outline' | 'user-circle-fill' | 'clipboard-list-check' | 'clipboard-list' | 'Megaphone' | 'Scanner' | 'Clock' | 'clock-outline' | 'clipboard-list-check-outline' | 'box-outline' | 'Box' | 'plus-square' | 'at-sign' | 'briefcase-outline' | 'edit-square-outline' | 'globe-earth' | 'lock-fill' | 'logo-herca-hris' | 'question-circle-outline' | 'shield-fill' | 'Users' | 'whatsapp-fill';
2
+ export type IconNameProps = 'Search' | 'User' | 'Eye' | 'EyeOpen' | 'ArrowRight' | 'ArrowLeft' | 'Document' | 'Calendar' | 'ExclamationMark' | 'Download' | 'x-circle' | 'StickyNote' | 'RadioButton' | 'Pdf' | 'ArrowBackAlt' | 'ArrowForwardAlt' | 'ArrowDown' | 'ArrowUp' | 'Check' | 'Filter' | 'AirPlane' | 'Camera' | 'Image' | 'Times' | 'Plus' | 'Minus' | 'Bell' | 'file-list-check' | 'file-text' | 'bookmark-user' | 'folder-clock' | 'home-fill' | 'home-outline' | 'user-circle-outline' | 'user-circle-fill' | 'clipboard-list-check' | 'clipboard-list' | 'Megaphone' | 'Scanner' | 'Clock' | 'clock-outline' | 'clipboard-list-check-outline' | 'box-outline' | 'Box' | 'plus-square' | 'at-sign' | 'briefcase-outline' | 'edit-square-outline' | 'globe-earth' | 'lock-fill' | 'logo-herca-hris' | 'question-circle-outline' | 'shield-fill' | 'Users' | 'Bold' | 'Italic' | 'UnderLine' | 'whatsapp-fill';
3
3
  export interface IconProps {
4
4
  name: IconNameProps;
5
5
  size?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../../src/Icon/type.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,MAAM,aAAa,GACrB,QAAQ,GACR,MAAM,GACN,KAAK,GACL,SAAS,GACT,YAAY,GACZ,WAAW,GACX,UAAU,GACV,UAAU,GACV,iBAAiB,GACjB,UAAU,GACV,UAAU,GACV,YAAY,GACZ,aAAa,GACb,KAAK,GACL,cAAc,GACd,iBAAiB,GACjB,WAAW,GACX,SAAS,GACT,OAAO,GACP,QAAQ,GACR,UAAU,GACV,QAAQ,GACR,OAAO,GACP,OAAO,GACP,MAAM,GACN,OAAO,GACP,MAAM,GACN,iBAAiB,GACjB,WAAW,GACX,eAAe,GACf,cAAc,GACd,WAAW,GACX,cAAc,GACd,qBAAqB,GACrB,kBAAkB,GAClB,sBAAsB,GACtB,gBAAgB,GAChB,WAAW,GACX,SAAS,GACT,OAAO,GACP,eAAe,GACf,8BAA8B,GAC9B,aAAa,GACb,KAAK,GACL,aAAa,GACb,SAAS,GACT,mBAAmB,GACnB,qBAAqB,GACrB,aAAa,GACb,WAAW,GACX,iBAAiB,GACjB,yBAAyB,GACzB,aAAa,GACb,OAAO,GACP,eAAe,CAAC;AAEpB,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB"}
1
+ {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../../src/Icon/type.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,MAAM,aAAa,GACrB,QAAQ,GACR,MAAM,GACN,KAAK,GACL,SAAS,GACT,YAAY,GACZ,WAAW,GACX,UAAU,GACV,UAAU,GACV,iBAAiB,GACjB,UAAU,GACV,UAAU,GACV,YAAY,GACZ,aAAa,GACb,KAAK,GACL,cAAc,GACd,iBAAiB,GACjB,WAAW,GACX,SAAS,GACT,OAAO,GACP,QAAQ,GACR,UAAU,GACV,QAAQ,GACR,OAAO,GACP,OAAO,GACP,MAAM,GACN,OAAO,GACP,MAAM,GACN,iBAAiB,GACjB,WAAW,GACX,eAAe,GACf,cAAc,GACd,WAAW,GACX,cAAc,GACd,qBAAqB,GACrB,kBAAkB,GAClB,sBAAsB,GACtB,gBAAgB,GAChB,WAAW,GACX,SAAS,GACT,OAAO,GACP,eAAe,GACf,8BAA8B,GAC9B,aAAa,GACb,KAAK,GACL,aAAa,GACb,SAAS,GACT,mBAAmB,GACnB,qBAAqB,GACrB,aAAa,GACb,WAAW,GACX,iBAAiB,GACjB,yBAAyB,GACzB,aAAa,GACb,OAAO,GACP,MAAM,GACN,QAAQ,GACR,WAAW,GACX,eAAe,CAAC;AAEpB,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB"}
@@ -5,6 +5,7 @@ type InputOtpProps = {
5
5
  label?: string;
6
6
  hint?: string;
7
7
  hasError?: boolean;
8
+ inputCenter?: boolean;
8
9
  };
9
10
  declare const InputOtp: React.FC<InputOtpProps>;
10
11
  export default InputOtp;
@@ -1 +1 @@
1
- {"version":3,"file":"InputOtp.d.ts","sourceRoot":"","sources":["../../../../src/Input/InputOtp.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAMhD,KAAK,aAAa,GAAG;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,QAAA,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA8ErC,CAAC;AAEF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"InputOtp.d.ts","sourceRoot":"","sources":["../../../../src/Input/InputOtp.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAMhD,KAAK,aAAa,GAAG;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,QAAA,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAkFrC,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -1,2 +1,3 @@
1
- export default function TextEditor(): import("react/jsx-runtime").JSX.Element;
1
+ import type { TextEditorType } from './types';
2
+ export default function TextEditor({ label, hasError, hint, onChange, height, }: TextEditorType): import("react/jsx-runtime").JSX.Element;
2
3
  //# sourceMappingURL=TextEditor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TextEditor.d.ts","sourceRoot":"","sources":["../../../../src/TextEditor/TextEditor.tsx"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,UAAU,4CAEjC"}
1
+ {"version":3,"file":"TextEditor.d.ts","sourceRoot":"","sources":["../../../../src/TextEditor/TextEditor.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAK9C,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,MAAY,GACb,EAAE,cAAc,2CA0KhB"}
@@ -1 +1,8 @@
1
+ export interface TextEditorType {
2
+ label?: string;
3
+ hint?: string;
4
+ hasError?: boolean;
5
+ onChange?: (data: string) => void;
6
+ height?: number;
7
+ }
1
8
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/TextEditor/types.tsx"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/TextEditor/types.tsx"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
package/package.json CHANGED
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "name": "@herca/rn-kit",
3
- "private": false,
4
- "version": "0.1.26",
3
+ "version": "0.1.27",
5
4
  "description": "React Native UI Kit",
6
5
  "main": "./lib/module/index.js",
7
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -94,6 +93,7 @@
94
93
  "@react-native-documents/picker": "^10.1.3",
95
94
  "@react-native-documents/viewer": "^1.0.1",
96
95
  "@react-navigation/native": "^7.1.14",
96
+ "@testing-library/react-native": "^13.2.0",
97
97
  "react-native-blob-util": "^0.22.2",
98
98
  "react-native-image-picker": "^8.2.1",
99
99
  "react-native-pager-view": "^6.8.1",
@@ -249,9 +249,12 @@ const styles = StyleSheet.create({
249
249
  },
250
250
  contentWithFooter: {},
251
251
  footer: {
252
+ borderTopWidth: 1,
253
+ borderTopColor: Color.gray[100],
252
254
  backgroundColor: Color.base.white100,
253
255
  position: 'absolute',
254
- marginBottom: 20,
256
+ paddingTop: 10,
257
+ marginBottom: 32,
255
258
  bottom: 0,
256
259
  left: 0,
257
260
  right: 0,
@@ -0,0 +1,49 @@
1
+ import React from 'react';
2
+ import { render, fireEvent } from '@testing-library/react-native';
3
+ import { Text } from 'react-native';
4
+ import Button from '../Button';
5
+
6
+ describe('Button Component', () => {
7
+ it('renders with title', () => {
8
+ const { getByText } = render(<Button title="Submit" onPress={() => {}} />);
9
+ expect(getByText('Submit')).toBeTruthy();
10
+ });
11
+
12
+ it('calls onPress when pressed', () => {
13
+ const mockFn = jest.fn();
14
+ const { getByText } = render(<Button title="Click me" onPress={mockFn} />);
15
+ fireEvent.press(getByText('Click me'));
16
+ expect(mockFn).toHaveBeenCalledTimes(1);
17
+ });
18
+
19
+ it('does not call onPress when disabled', () => {
20
+ const mockFn = jest.fn();
21
+ const { getByText } = render(
22
+ <Button title="Disabled" onPress={mockFn} disabled />
23
+ );
24
+ fireEvent.press(getByText('Disabled'));
25
+ expect(mockFn).not.toHaveBeenCalled();
26
+ });
27
+
28
+ it('renders loading indicator when loading', () => {
29
+ const { getByTestId } = render(
30
+ <Button title="Load" onPress={() => {}} loading />
31
+ );
32
+ // You might want to set `testID="loading-indicator"` in <ActivityIndicator /> in the component
33
+ // For now, we check for presence of ActivityIndicator via accessibilityRole
34
+ const indicator = getByTestId('ActivityIndicator');
35
+ expect(indicator).toBeTruthy();
36
+ });
37
+
38
+ it('renders custom child instead of title', () => {
39
+ const { queryByText, getByText } = render(
40
+ <Button onPress={() => {}}>
41
+ <React.Fragment>
42
+ <Text>Custom Child</Text>
43
+ </React.Fragment>
44
+ </Button>
45
+ );
46
+ expect(getByText('Custom Child')).toBeTruthy();
47
+ expect(queryByText('title')).toBeNull();
48
+ });
49
+ });
@@ -255,7 +255,7 @@ export const COLOR_MAP: Record<
255
255
  tertiaryFocusBorderColor: Color.info[200],
256
256
  tertiaryPressTextColor: Color.info[700],
257
257
  tertiaryPressBorderColor: 'transparent',
258
- tertiaryDisabledTextColor: Color.info[100],
258
+ tertiaryDisabledTextColor: Color.info[200],
259
259
  tertiaryDisabledBorderColor: Color.base.white100,
260
260
  },
261
261
  orange: {