@react-native-ohos/react-native-credit-card-input 1.0.1-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/LICENSE +20 -0
  2. package/README.OpenSource +11 -0
  3. package/README.md +9 -0
  4. package/lib/commonjs/CreditCardInput.js +138 -0
  5. package/lib/commonjs/CreditCardInput.js.map +1 -0
  6. package/lib/commonjs/CreditCardView.js +175 -0
  7. package/lib/commonjs/CreditCardView.js.map +1 -0
  8. package/lib/commonjs/Icons.js +17 -0
  9. package/lib/commonjs/Icons.js.map +1 -0
  10. package/lib/commonjs/LiteCreditCardInput.js +189 -0
  11. package/lib/commonjs/LiteCreditCardInput.js.map +1 -0
  12. package/lib/commonjs/index.js +35 -0
  13. package/lib/commonjs/index.js.map +1 -0
  14. package/lib/commonjs/package.json +1 -0
  15. package/lib/commonjs/useCreditCardForm.js +95 -0
  16. package/lib/commonjs/useCreditCardForm.js.map +1 -0
  17. package/lib/module/CreditCardInput.js +134 -0
  18. package/lib/module/CreditCardInput.js.map +1 -0
  19. package/lib/module/CreditCardView.js +170 -0
  20. package/lib/module/CreditCardView.js.map +1 -0
  21. package/lib/module/Icons.js +13 -0
  22. package/lib/module/Icons.js.map +1 -0
  23. package/lib/module/LiteCreditCardInput.js +184 -0
  24. package/lib/module/LiteCreditCardInput.js.map +1 -0
  25. package/lib/module/index.js +7 -0
  26. package/lib/module/index.js.map +1 -0
  27. package/lib/module/package.json +1 -0
  28. package/lib/module/useCreditCardForm.js +89 -0
  29. package/lib/module/useCreditCardForm.js.map +1 -0
  30. package/lib/typescript/commonjs/jest.setup.d.ts +2 -0
  31. package/lib/typescript/commonjs/jest.setup.d.ts.map +1 -0
  32. package/lib/typescript/commonjs/package.json +1 -0
  33. package/lib/typescript/commonjs/src/CreditCardInput.d.ts +25 -0
  34. package/lib/typescript/commonjs/src/CreditCardInput.d.ts.map +1 -0
  35. package/lib/typescript/commonjs/src/CreditCardView.d.ts +23 -0
  36. package/lib/typescript/commonjs/src/CreditCardView.d.ts.map +1 -0
  37. package/lib/typescript/commonjs/src/Icons.d.ts +11 -0
  38. package/lib/typescript/commonjs/src/Icons.d.ts.map +1 -0
  39. package/lib/typescript/commonjs/src/LiteCreditCardInput.d.ts +19 -0
  40. package/lib/typescript/commonjs/src/LiteCreditCardInput.d.ts.map +1 -0
  41. package/lib/typescript/commonjs/src/index.d.ts +5 -0
  42. package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
  43. package/lib/typescript/commonjs/src/useCreditCardForm.d.ts +25 -0
  44. package/lib/typescript/commonjs/src/useCreditCardForm.d.ts.map +1 -0
  45. package/lib/typescript/module/jest.setup.d.ts +2 -0
  46. package/lib/typescript/module/jest.setup.d.ts.map +1 -0
  47. package/lib/typescript/module/package.json +1 -0
  48. package/lib/typescript/module/src/CreditCardInput.d.ts +25 -0
  49. package/lib/typescript/module/src/CreditCardInput.d.ts.map +1 -0
  50. package/lib/typescript/module/src/CreditCardView.d.ts +23 -0
  51. package/lib/typescript/module/src/CreditCardView.d.ts.map +1 -0
  52. package/lib/typescript/module/src/Icons.d.ts +11 -0
  53. package/lib/typescript/module/src/Icons.d.ts.map +1 -0
  54. package/lib/typescript/module/src/LiteCreditCardInput.d.ts +19 -0
  55. package/lib/typescript/module/src/LiteCreditCardInput.d.ts.map +1 -0
  56. package/lib/typescript/module/src/index.d.ts +5 -0
  57. package/lib/typescript/module/src/index.d.ts.map +1 -0
  58. package/lib/typescript/module/src/useCreditCardForm.d.ts +25 -0
  59. package/lib/typescript/module/src/useCreditCardForm.d.ts.map +1 -0
  60. package/package.json +145 -0
  61. package/src/CreditCardInput.tsx +163 -0
  62. package/src/CreditCardView.tsx +248 -0
  63. package/src/Icons.ts +18 -0
  64. package/src/LiteCreditCardInput.tsx +226 -0
  65. package/src/index.tsx +12 -0
  66. package/src/useCreditCardForm.tsx +161 -0
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+
3
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
4
+ import { Image, LayoutAnimation, StyleSheet, TextInput, TouchableOpacity, View } from 'react-native';
5
+ import Icons from "./Icons.js";
6
+ import { useCreditCardForm } from "./useCreditCardForm.js";
7
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
+ const s = StyleSheet.create({
9
+ container: {
10
+ paddingVertical: 10,
11
+ paddingHorizontal: 15,
12
+ flexDirection: 'row',
13
+ alignItems: 'center',
14
+ overflow: 'hidden'
15
+ },
16
+ icon: {
17
+ width: 48,
18
+ height: 40,
19
+ resizeMode: 'contain'
20
+ },
21
+ expanded: {
22
+ flex: 1
23
+ },
24
+ hidden: {
25
+ width: 0
26
+ },
27
+ leftPart: {
28
+ overflow: 'hidden'
29
+ },
30
+ rightPart: {
31
+ overflow: 'hidden',
32
+ flexDirection: 'row'
33
+ },
34
+ last4: {
35
+ flex: 1,
36
+ justifyContent: 'center'
37
+ },
38
+ numberInput: {
39
+ width: 1000
40
+ },
41
+ expiryInput: {
42
+ width: 80
43
+ },
44
+ cvcInput: {
45
+ width: 80
46
+ },
47
+ last4Input: {
48
+ width: 60,
49
+ marginLeft: 20
50
+ },
51
+ input: {
52
+ height: 40,
53
+ fontSize: 16,
54
+ // // @ts-expect-error outlineWidth is used to hide the text-input outline on react-native-web
55
+ outlineWidth: 0
56
+ }
57
+ });
58
+ const LiteCreditCardInput = props => {
59
+ const {
60
+ autoFocus = false,
61
+ style,
62
+ inputStyle,
63
+ placeholderColor = 'darkgray',
64
+ placeholders = {
65
+ number: '1234 5678 1234 5678',
66
+ expiry: 'MM/YY',
67
+ cvc: 'CVC'
68
+ },
69
+ onChange = () => {},
70
+ onFocusField = () => {},
71
+ testID
72
+ } = props;
73
+ const _onChange = formData => {
74
+ // Focus next field when number/expiry field become valid
75
+ if (status.number !== 'valid' && formData.status.number === 'valid') {
76
+ toggleFormState();
77
+ expiryInput.current?.focus();
78
+ }
79
+ if (status.expiry !== 'valid' && formData.status.expiry === 'valid') {
80
+ cvcInput.current?.focus();
81
+ }
82
+ onChange(formData);
83
+ };
84
+ const {
85
+ values,
86
+ status,
87
+ onChangeValue
88
+ } = useCreditCardForm(_onChange);
89
+ const [showRightPart, setShowRightPart] = useState(false);
90
+ const toggleFormState = useCallback(() => {
91
+ LayoutAnimation.easeInEaseOut();
92
+ setShowRightPart(v => !v);
93
+ }, []);
94
+ const numberInput = useRef(null);
95
+ const expiryInput = useRef(null);
96
+ const cvcInput = useRef(null);
97
+ useEffect(() => {
98
+ if (autoFocus) numberInput.current?.focus();
99
+ }, [autoFocus]);
100
+ const cardIcon = useMemo(() => {
101
+ if (values.type && Icons[values.type]) return Icons[values.type];
102
+ return Icons.placeholder;
103
+ }, [values.type]);
104
+ return /*#__PURE__*/_jsxs(View, {
105
+ style: [s.container, style],
106
+ testID: testID,
107
+ children: [/*#__PURE__*/_jsx(View, {
108
+ style: [s.leftPart, showRightPart ? s.hidden : s.expanded],
109
+ children: /*#__PURE__*/_jsx(View, {
110
+ style: [s.numberInput],
111
+ children: /*#__PURE__*/_jsx(TextInput, {
112
+ ref: numberInput,
113
+ keyboardType: "default",
114
+ style: [s.input, inputStyle],
115
+ placeholderTextColor: placeholderColor,
116
+ placeholder: placeholders.number,
117
+ value: values.number,
118
+ onChangeText: v => onChangeValue('number', v),
119
+ onFocus: () => onFocusField('number'),
120
+ autoCorrect: false,
121
+ underlineColorAndroid: 'transparent',
122
+ testID: "CC_NUMBER"
123
+ })
124
+ })
125
+ }), /*#__PURE__*/_jsx(TouchableOpacity, {
126
+ activeOpacity: 0.8,
127
+ onPress: toggleFormState,
128
+ children: /*#__PURE__*/_jsx(Image, {
129
+ style: s.icon,
130
+ source: {
131
+ uri: cardIcon
132
+ }
133
+ })
134
+ }), /*#__PURE__*/_jsxs(View, {
135
+ style: [s.rightPart, showRightPart ? s.expanded : s.hidden],
136
+ children: [/*#__PURE__*/_jsx(TouchableOpacity, {
137
+ activeOpacity: 0.8,
138
+ onPress: toggleFormState,
139
+ style: s.last4,
140
+ children: /*#__PURE__*/_jsx(View, {
141
+ pointerEvents: 'none',
142
+ children: /*#__PURE__*/_jsx(TextInput, {
143
+ keyboardType: "default",
144
+ value: status.number === 'valid' ? values.number.slice(values.number.length - 4) : '',
145
+ style: [s.input, s.last4Input],
146
+ readOnly: true
147
+ })
148
+ })
149
+ }), /*#__PURE__*/_jsx(View, {
150
+ style: s.expiryInput,
151
+ children: /*#__PURE__*/_jsx(TextInput, {
152
+ ref: expiryInput,
153
+ keyboardType: "default",
154
+ style: [s.input, inputStyle],
155
+ placeholderTextColor: placeholderColor,
156
+ placeholder: placeholders.expiry,
157
+ value: values.expiry,
158
+ onChangeText: v => onChangeValue('expiry', v),
159
+ onFocus: () => onFocusField('expiry'),
160
+ autoCorrect: false,
161
+ underlineColorAndroid: 'transparent',
162
+ testID: "CC_EXPIRY"
163
+ })
164
+ }), /*#__PURE__*/_jsx(View, {
165
+ style: s.cvcInput,
166
+ children: /*#__PURE__*/_jsx(TextInput, {
167
+ ref: cvcInput,
168
+ keyboardType: "default",
169
+ style: [s.input, inputStyle],
170
+ placeholderTextColor: placeholderColor,
171
+ placeholder: placeholders.cvc,
172
+ value: values.cvc,
173
+ onChangeText: v => onChangeValue('cvc', v),
174
+ onFocus: () => onFocusField('cvc'),
175
+ autoCorrect: false,
176
+ underlineColorAndroid: 'transparent',
177
+ testID: "CC_CVC"
178
+ })
179
+ })]
180
+ })]
181
+ });
182
+ };
183
+ export default LiteCreditCardInput;
184
+ //# sourceMappingURL=LiteCreditCardInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","Image","LayoutAnimation","StyleSheet","TextInput","TouchableOpacity","View","Icons","useCreditCardForm","jsx","_jsx","jsxs","_jsxs","s","create","container","paddingVertical","paddingHorizontal","flexDirection","alignItems","overflow","icon","width","height","resizeMode","expanded","flex","hidden","leftPart","rightPart","last4","justifyContent","numberInput","expiryInput","cvcInput","last4Input","marginLeft","input","fontSize","outlineWidth","LiteCreditCardInput","props","autoFocus","style","inputStyle","placeholderColor","placeholders","number","expiry","cvc","onChange","onFocusField","testID","_onChange","formData","status","toggleFormState","current","focus","values","onChangeValue","showRightPart","setShowRightPart","easeInEaseOut","v","cardIcon","type","placeholder","children","ref","keyboardType","placeholderTextColor","value","onChangeText","onFocus","autoCorrect","underlineColorAndroid","activeOpacity","onPress","source","uri","pointerEvents","slice","length","readOnly"],"sourceRoot":"..\\..\\src","sources":["LiteCreditCardInput.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ export { default as CreditCardView } from "./CreditCardView.js";
4
+ export { default as CreditCardInput } from "./CreditCardInput.js";
5
+ export { default as LiteCreditCardInput } from "./LiteCreditCardInput.js";
6
+ export { useCreditCardForm } from "./useCreditCardForm.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["default","CreditCardView","CreditCardInput","LiteCreditCardInput","useCreditCardForm"],"sourceRoot":"..\\..\\src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,OAAO,IAAIC,cAAc,QAAQ,qBAAkB;AAC5D,SAASD,OAAO,IAAIE,eAAe,QAAQ,sBAAmB;AAC9D,SAASF,OAAO,IAAIG,mBAAmB,QAAQ,0BAAuB;AAEtE,SAMEC,iBAAiB,QACZ,wBAAqB","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+
3
+ import { useCallback, useState } from 'react';
4
+ import cardValidator from 'card-validator';
5
+ // --- Utilities
6
+
7
+ const toStatus = validation => {
8
+ return validation.isValid ? 'valid' : validation.isPotentiallyValid ? 'incomplete' : 'invalid';
9
+ };
10
+ const removeNonNumber = (string = '') => string.replace(/[^\d]/g, '');
11
+ const limitLength = (string = '', maxLength) => string.slice(0, maxLength);
12
+ const addGaps = (string = '', gaps) => {
13
+ const offsets = [0].concat(gaps).concat([string.length]);
14
+ return offsets.map((end, index) => {
15
+ if (index === 0) return '';
16
+ const start = offsets[index - 1] || 0;
17
+ return string.slice(start, end);
18
+ }).filter(part => part !== '').join(' ');
19
+ };
20
+ const formatCardNumber = (number, maxLength, gaps) => {
21
+ const numberSanitized = removeNonNumber(number);
22
+ const lengthSanitized = limitLength(numberSanitized, maxLength);
23
+ const formatted = addGaps(lengthSanitized, gaps);
24
+ return formatted;
25
+ };
26
+ const formatCardExpiry = expiry => {
27
+ const sanitized = limitLength(removeNonNumber(expiry), 4);
28
+ if (sanitized.match(/^[2-9]$/)) {
29
+ return `0${sanitized}`;
30
+ }
31
+ if (sanitized.length > 2) {
32
+ return `${sanitized.substr(0, 2)}/${sanitized.substr(2, sanitized.length)}`;
33
+ }
34
+ return sanitized;
35
+ };
36
+ const formatCardCVC = (cvc, cvcMaxLength) => {
37
+ return limitLength(removeNonNumber(cvc), cvcMaxLength);
38
+ };
39
+ export const useCreditCardForm = onChange => {
40
+ const [formState, setFormState] = useState({
41
+ number: 'incomplete',
42
+ expiry: 'incomplete',
43
+ cvc: 'incomplete'
44
+ });
45
+ const [values, setValues] = useState({
46
+ number: '',
47
+ expiry: '',
48
+ cvc: '',
49
+ type: undefined
50
+ });
51
+ const onChangeValue = useCallback((field, value) => {
52
+ const newValues = {
53
+ ...values,
54
+ [field]: value
55
+ };
56
+ const numberValidation = cardValidator.number(newValues.number);
57
+
58
+ // When card issuer cant be detected, use these default (3 digit CVC, 16 digit card number with spaces every 4 digit)
59
+ const cvcMaxLength = numberValidation.card?.code.size || 3;
60
+ const cardNumberGaps = numberValidation.card?.gaps || [4, 8, 12];
61
+ const cardNumberMaxLength =
62
+ // Credit card number can vary. Use the longest possible as maximum (otherwise fallback to 16)
63
+ Math.max(...(numberValidation.card?.lengths || [16]));
64
+ const newFormattedValues = {
65
+ number: formatCardNumber(newValues.number, cardNumberMaxLength, cardNumberGaps),
66
+ expiry: formatCardExpiry(newValues.expiry),
67
+ cvc: formatCardCVC(newValues.cvc, cvcMaxLength),
68
+ type: numberValidation.card?.type
69
+ };
70
+ const newFormState = {
71
+ number: toStatus(cardValidator.number(newFormattedValues.number)),
72
+ expiry: toStatus(cardValidator.expirationDate(newFormattedValues.expiry)),
73
+ cvc: toStatus(cardValidator.cvv(newFormattedValues.cvc, cvcMaxLength))
74
+ };
75
+ setValues(newFormattedValues);
76
+ setFormState(newFormState);
77
+ onChange({
78
+ valid: newFormState.number === 'valid' && newFormState.expiry === 'valid' && newFormState.cvc === 'valid',
79
+ values: newFormattedValues,
80
+ status: newFormState
81
+ });
82
+ }, [values, onChange]);
83
+ return {
84
+ values,
85
+ status: formState,
86
+ onChangeValue
87
+ };
88
+ };
89
+ //# sourceMappingURL=useCreditCardForm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useState","cardValidator","toStatus","validation","isValid","isPotentiallyValid","removeNonNumber","string","replace","limitLength","maxLength","slice","addGaps","gaps","offsets","concat","length","map","end","index","start","filter","part","join","formatCardNumber","number","numberSanitized","lengthSanitized","formatted","formatCardExpiry","expiry","sanitized","match","substr","formatCardCVC","cvc","cvcMaxLength","useCreditCardForm","onChange","formState","setFormState","values","setValues","type","undefined","onChangeValue","field","value","newValues","numberValidation","card","code","size","cardNumberGaps","cardNumberMaxLength","Math","max","lengths","newFormattedValues","newFormState","expirationDate","cvv","valid","status"],"sourceRoot":"..\\..\\src","sources":["useCreditCardForm.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import '@testing-library/react-native/extend-expect';
2
+ //# sourceMappingURL=jest.setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest.setup.d.ts","sourceRoot":"","sources":["../../../jest.setup.ts"],"names":[],"mappings":"AAAA,OAAO,6CAA6C,CAAC"}
@@ -0,0 +1 @@
1
+ {"type":"commonjs"}
@@ -0,0 +1,25 @@
1
+ import { type TextStyle, type ViewStyle } from 'react-native';
2
+ import { type CreditCardFormData, type CreditCardFormField } from './useCreditCardForm';
3
+ interface Props {
4
+ autoFocus?: boolean;
5
+ style?: ViewStyle;
6
+ labelStyle?: TextStyle;
7
+ inputStyle?: TextStyle;
8
+ placeholderColor?: string;
9
+ labels?: {
10
+ number: string;
11
+ expiry: string;
12
+ cvc: string;
13
+ };
14
+ placeholders?: {
15
+ number: string;
16
+ expiry: string;
17
+ cvc: string;
18
+ };
19
+ onChange: (formData: CreditCardFormData) => void;
20
+ onFocusField?: (field: CreditCardFormField) => void;
21
+ testID?: string;
22
+ }
23
+ declare const CreditCardInput: (props: Props) => import("react/jsx-runtime").JSX.Element;
24
+ export default CreditCardInput;
25
+ //# sourceMappingURL=CreditCardInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreditCardInput.d.ts","sourceRoot":"","sources":["../../../../src/CreditCardInput.tsx"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACzB,MAAM,qBAAqB,CAAC;AAE7B,UAAU,KAAK;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,YAAY,CAAC,EAAE;QACb,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,QAAQ,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACjD,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAuCD,QAAA,MAAM,eAAe,GAAI,OAAO,KAAK,4CAuFpC,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { type ImageSourcePropType, type ViewStyle } from 'react-native';
2
+ import type { CreditCardIssuer } from './useCreditCardForm';
3
+ interface Props {
4
+ focusedField?: 'name' | 'number' | 'expiry' | 'cvc';
5
+ type?: CreditCardIssuer;
6
+ name?: string;
7
+ number?: string;
8
+ expiry?: string;
9
+ cvc?: string;
10
+ placeholders?: {
11
+ number: string;
12
+ expiry: string;
13
+ cvc: string;
14
+ name: string;
15
+ };
16
+ style?: ViewStyle;
17
+ fontFamily?: string;
18
+ imageFront?: ImageSourcePropType;
19
+ imageBack?: ImageSourcePropType;
20
+ }
21
+ declare const CreditCardView: (props: Props) => import("react/jsx-runtime").JSX.Element;
22
+ export default CreditCardView;
23
+ //# sourceMappingURL=CreditCardView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreditCardView.d.ts","sourceRoot":"","sources":["../../../../src/CreditCardView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,mBAAmB,EACxB,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAItB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AA4E5D,UAAU,KAAK;IACb,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;IACpD,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,YAAY,CAAC,EAAE;QACb,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,SAAS,CAAC,EAAE,mBAAmB,CAAC;CACjC;AAED,QAAA,MAAM,cAAc,GAAI,OAAO,KAAK,4CAuInC,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -0,0 +1,11 @@
1
+ declare const Icons: {
2
+ 'american-express': string;
3
+ mastercard: string;
4
+ 'diners-club': string;
5
+ discover: string;
6
+ jcb: string;
7
+ placeholder: string;
8
+ visa: string;
9
+ };
10
+ export default Icons;
11
+ //# sourceMappingURL=Icons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Icons.d.ts","sourceRoot":"","sources":["../../../../src/Icons.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,KAAK;;;;;;;;CAeV,CAAC;AAEF,eAAe,KAAK,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { type TextStyle, type ViewStyle } from 'react-native';
2
+ import { type CreditCardFormData, type CreditCardFormField } from './useCreditCardForm';
3
+ interface Props {
4
+ autoFocus?: boolean;
5
+ style?: ViewStyle;
6
+ inputStyle?: TextStyle;
7
+ placeholderColor?: string;
8
+ placeholders?: {
9
+ number: string;
10
+ expiry: string;
11
+ cvc: string;
12
+ };
13
+ onChange?: (formData: CreditCardFormData) => void;
14
+ onFocusField?: (field: CreditCardFormField) => void;
15
+ testID?: string;
16
+ }
17
+ declare const LiteCreditCardInput: (props: Props) => import("react/jsx-runtime").JSX.Element;
18
+ export default LiteCreditCardInput;
19
+ //# sourceMappingURL=LiteCreditCardInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiteCreditCardInput.d.ts","sourceRoot":"","sources":["../../../../src/LiteCreditCardInput.tsx"],"names":[],"mappings":"AACA,OAAO,EAOL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACzB,MAAM,qBAAqB,CAAC;AAE7B,UAAU,KAAK;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE;QACb,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAClD,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAqDD,QAAA,MAAM,mBAAmB,GAAI,OAAO,KAAK,4CA2IxC,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { default as CreditCardView } from './CreditCardView';
2
+ export { default as CreditCardInput } from './CreditCardInput';
3
+ export { default as LiteCreditCardInput } from './LiteCreditCardInput';
4
+ export { type CreditCardFormField, type CreditCardFormValues, type ValidationState, type CreditCardFormState, type CreditCardFormData, useCreditCardForm, } from './useCreditCardForm';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEvE,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,25 @@
1
+ export type CreditCardIssuer = 'visa' | 'mastercard' | 'american-express' | 'diners-club' | 'discover' | 'jcb';
2
+ export type CreditCardFormField = 'number' | 'expiry' | 'cvc';
3
+ export type CreditCardFormValues = {
4
+ number: string;
5
+ expiry: string;
6
+ cvc: string;
7
+ type?: CreditCardIssuer;
8
+ };
9
+ export type ValidationState = 'incomplete' | 'invalid' | 'valid';
10
+ export type CreditCardFormState = {
11
+ number: ValidationState;
12
+ expiry: ValidationState;
13
+ cvc: ValidationState;
14
+ };
15
+ export type CreditCardFormData = {
16
+ valid: boolean;
17
+ values: CreditCardFormValues;
18
+ status: CreditCardFormState;
19
+ };
20
+ export declare const useCreditCardForm: (onChange: (formData: CreditCardFormData) => void) => {
21
+ values: CreditCardFormValues;
22
+ status: CreditCardFormState;
23
+ onChangeValue: (field: CreditCardFormField, value: string) => void;
24
+ };
25
+ //# sourceMappingURL=useCreditCardForm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCreditCardForm.d.ts","sourceRoot":"","sources":["../../../../src/useCreditCardForm.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN,YAAY,GACZ,kBAAkB,GAClB,aAAa,GACb,UAAU,GACV,KAAK,CAAC;AAEV,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE9D,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,gBAAgB,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC;AAEjE,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,eAAe,CAAC;IACxB,MAAM,EAAE,eAAe,CAAC;IACxB,GAAG,EAAE,eAAe,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,oBAAoB,CAAC;IAC7B,MAAM,EAAE,mBAAmB,CAAC;CAC7B,CAAC;AA2DF,eAAO,MAAM,iBAAiB,GAC5B,UAAU,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI;;;2BAgBtC,mBAAmB,SAAS,MAAM;CAoD7C,CAAC"}
@@ -0,0 +1,2 @@
1
+ import '@testing-library/react-native/extend-expect';
2
+ //# sourceMappingURL=jest.setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest.setup.d.ts","sourceRoot":"","sources":["../../../jest.setup.ts"],"names":[],"mappings":"AAAA,OAAO,6CAA6C,CAAC"}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,25 @@
1
+ import { type TextStyle, type ViewStyle } from 'react-native';
2
+ import { type CreditCardFormData, type CreditCardFormField } from './useCreditCardForm';
3
+ interface Props {
4
+ autoFocus?: boolean;
5
+ style?: ViewStyle;
6
+ labelStyle?: TextStyle;
7
+ inputStyle?: TextStyle;
8
+ placeholderColor?: string;
9
+ labels?: {
10
+ number: string;
11
+ expiry: string;
12
+ cvc: string;
13
+ };
14
+ placeholders?: {
15
+ number: string;
16
+ expiry: string;
17
+ cvc: string;
18
+ };
19
+ onChange: (formData: CreditCardFormData) => void;
20
+ onFocusField?: (field: CreditCardFormField) => void;
21
+ testID?: string;
22
+ }
23
+ declare const CreditCardInput: (props: Props) => import("react/jsx-runtime").JSX.Element;
24
+ export default CreditCardInput;
25
+ //# sourceMappingURL=CreditCardInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreditCardInput.d.ts","sourceRoot":"","sources":["../../../../src/CreditCardInput.tsx"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACzB,MAAM,qBAAqB,CAAC;AAE7B,UAAU,KAAK;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,YAAY,CAAC,EAAE;QACb,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,QAAQ,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACjD,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAuCD,QAAA,MAAM,eAAe,GAAI,OAAO,KAAK,4CAuFpC,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { type ImageSourcePropType, type ViewStyle } from 'react-native';
2
+ import type { CreditCardIssuer } from './useCreditCardForm';
3
+ interface Props {
4
+ focusedField?: 'name' | 'number' | 'expiry' | 'cvc';
5
+ type?: CreditCardIssuer;
6
+ name?: string;
7
+ number?: string;
8
+ expiry?: string;
9
+ cvc?: string;
10
+ placeholders?: {
11
+ number: string;
12
+ expiry: string;
13
+ cvc: string;
14
+ name: string;
15
+ };
16
+ style?: ViewStyle;
17
+ fontFamily?: string;
18
+ imageFront?: ImageSourcePropType;
19
+ imageBack?: ImageSourcePropType;
20
+ }
21
+ declare const CreditCardView: (props: Props) => import("react/jsx-runtime").JSX.Element;
22
+ export default CreditCardView;
23
+ //# sourceMappingURL=CreditCardView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreditCardView.d.ts","sourceRoot":"","sources":["../../../../src/CreditCardView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,mBAAmB,EACxB,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAItB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AA4E5D,UAAU,KAAK;IACb,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;IACpD,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,YAAY,CAAC,EAAE;QACb,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,SAAS,CAAC,EAAE,mBAAmB,CAAC;CACjC;AAED,QAAA,MAAM,cAAc,GAAI,OAAO,KAAK,4CAuInC,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -0,0 +1,11 @@
1
+ declare const Icons: {
2
+ 'american-express': string;
3
+ mastercard: string;
4
+ 'diners-club': string;
5
+ discover: string;
6
+ jcb: string;
7
+ placeholder: string;
8
+ visa: string;
9
+ };
10
+ export default Icons;
11
+ //# sourceMappingURL=Icons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Icons.d.ts","sourceRoot":"","sources":["../../../../src/Icons.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,KAAK;;;;;;;;CAeV,CAAC;AAEF,eAAe,KAAK,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { type TextStyle, type ViewStyle } from 'react-native';
2
+ import { type CreditCardFormData, type CreditCardFormField } from './useCreditCardForm';
3
+ interface Props {
4
+ autoFocus?: boolean;
5
+ style?: ViewStyle;
6
+ inputStyle?: TextStyle;
7
+ placeholderColor?: string;
8
+ placeholders?: {
9
+ number: string;
10
+ expiry: string;
11
+ cvc: string;
12
+ };
13
+ onChange?: (formData: CreditCardFormData) => void;
14
+ onFocusField?: (field: CreditCardFormField) => void;
15
+ testID?: string;
16
+ }
17
+ declare const LiteCreditCardInput: (props: Props) => import("react/jsx-runtime").JSX.Element;
18
+ export default LiteCreditCardInput;
19
+ //# sourceMappingURL=LiteCreditCardInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiteCreditCardInput.d.ts","sourceRoot":"","sources":["../../../../src/LiteCreditCardInput.tsx"],"names":[],"mappings":"AACA,OAAO,EAOL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACzB,MAAM,qBAAqB,CAAC;AAE7B,UAAU,KAAK;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE;QACb,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAClD,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAqDD,QAAA,MAAM,mBAAmB,GAAI,OAAO,KAAK,4CA2IxC,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { default as CreditCardView } from './CreditCardView';
2
+ export { default as CreditCardInput } from './CreditCardInput';
3
+ export { default as LiteCreditCardInput } from './LiteCreditCardInput';
4
+ export { type CreditCardFormField, type CreditCardFormValues, type ValidationState, type CreditCardFormState, type CreditCardFormData, useCreditCardForm, } from './useCreditCardForm';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEvE,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,25 @@
1
+ export type CreditCardIssuer = 'visa' | 'mastercard' | 'american-express' | 'diners-club' | 'discover' | 'jcb';
2
+ export type CreditCardFormField = 'number' | 'expiry' | 'cvc';
3
+ export type CreditCardFormValues = {
4
+ number: string;
5
+ expiry: string;
6
+ cvc: string;
7
+ type?: CreditCardIssuer;
8
+ };
9
+ export type ValidationState = 'incomplete' | 'invalid' | 'valid';
10
+ export type CreditCardFormState = {
11
+ number: ValidationState;
12
+ expiry: ValidationState;
13
+ cvc: ValidationState;
14
+ };
15
+ export type CreditCardFormData = {
16
+ valid: boolean;
17
+ values: CreditCardFormValues;
18
+ status: CreditCardFormState;
19
+ };
20
+ export declare const useCreditCardForm: (onChange: (formData: CreditCardFormData) => void) => {
21
+ values: CreditCardFormValues;
22
+ status: CreditCardFormState;
23
+ onChangeValue: (field: CreditCardFormField, value: string) => void;
24
+ };
25
+ //# sourceMappingURL=useCreditCardForm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCreditCardForm.d.ts","sourceRoot":"","sources":["../../../../src/useCreditCardForm.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN,YAAY,GACZ,kBAAkB,GAClB,aAAa,GACb,UAAU,GACV,KAAK,CAAC;AAEV,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE9D,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,gBAAgB,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC;AAEjE,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,eAAe,CAAC;IACxB,MAAM,EAAE,eAAe,CAAC;IACxB,GAAG,EAAE,eAAe,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,oBAAoB,CAAC;IAC7B,MAAM,EAAE,mBAAmB,CAAC;CAC7B,CAAC;AA2DF,eAAO,MAAM,iBAAiB,GAC5B,UAAU,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI;;;2BAgBtC,mBAAmB,SAAS,MAAM;CAoD7C,CAAC"}