@meowster404/verifio-react 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +63 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -3
package/README.md
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# @meowster404/verifio-react
|
|
2
|
+
|
|
3
|
+
React hooks and input components built on top of `@meowster404/verifio`.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install react react-dom @meowster404/verifio @meowster404/verifio-react
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Features
|
|
12
|
+
|
|
13
|
+
- Validation hooks for PAN, GST, Aadhaar, email, student email, phone, PIN code, URL, and IFSC
|
|
14
|
+
- Prebuilt input components
|
|
15
|
+
- TypeScript support
|
|
16
|
+
- Public npm package
|
|
17
|
+
|
|
18
|
+
## Usage
|
|
19
|
+
|
|
20
|
+
```tsx
|
|
21
|
+
import { usePANValidation, PANInput } from '@meowster404/verifio-react';
|
|
22
|
+
|
|
23
|
+
export function App() {
|
|
24
|
+
const pan = usePANValidation();
|
|
25
|
+
|
|
26
|
+
return (
|
|
27
|
+
<form>
|
|
28
|
+
<PANInput {...pan} />
|
|
29
|
+
{pan.error && <p>{pan.error}</p>}
|
|
30
|
+
</form>
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Hooks
|
|
36
|
+
|
|
37
|
+
- `usePANValidation`
|
|
38
|
+
- `useGSTValidation`
|
|
39
|
+
- `useAadhaarValidation`
|
|
40
|
+
- `useEmailValidation`
|
|
41
|
+
- `useStudentEmailValidation`
|
|
42
|
+
- `usePhoneValidation`
|
|
43
|
+
- `usePincodeValidation`
|
|
44
|
+
- `useURLValidation`
|
|
45
|
+
- `useIFSCValidation`
|
|
46
|
+
|
|
47
|
+
## Components
|
|
48
|
+
|
|
49
|
+
- `BaseInput`
|
|
50
|
+
- `PANInput`
|
|
51
|
+
- `AadhaarInput`
|
|
52
|
+
- `EmailInput`
|
|
53
|
+
- `GSTInput`
|
|
54
|
+
- `IFSCInput`
|
|
55
|
+
- `PasswordInput`
|
|
56
|
+
- `PhoneInput`
|
|
57
|
+
- `PincodeInput`
|
|
58
|
+
- `StudentEmailInput`
|
|
59
|
+
- `URLInput`
|
|
60
|
+
|
|
61
|
+
## License
|
|
62
|
+
|
|
63
|
+
MIT
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/hooks/useVerifio.ts","../src/hooks/index.ts","../src/components/BaseInput.tsx","../src/components/PANInput.tsx","../src/components/AadhaarInput.tsx","../src/components/EmailInput.tsx","../src/components/GSTInput.tsx","../src/components/IFSCInput.tsx","../src/components/PasswordInput.tsx","../src/components/PhoneInput.tsx","../src/components/PincodeInput.tsx","../src/components/StudentEmailInput.tsx","../src/components/URLInput.tsx"],"names":["useState","useCallback","validatePAN","validateGST","validateAadhaar","validateEmail","validateStudentEmail","validatePhone","validatePincode","validateURL","validateIFSC","forwardRef","jsx"],"mappings":"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","file":"index.js","sourcesContent":["import { useState, useCallback, useEffect } from 'react';\r\nimport { ValidationResult } from 'verifio';\r\n\r\nexport interface UseVerifioProps {\r\n initialValue?: string;\r\n validator: (value: string) => ValidationResult;\r\n onChange?: (value: string, isValid: boolean) => void;\r\n format?: (value: string) => string;\r\n}\r\n\r\nexport interface UseVerifioReturn {\r\n value: string;\r\n setValue: (value: string) => void;\r\n valid: boolean;\r\n error: string | null;\r\n validate: () => boolean;\r\n reset: () => void;\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n}\r\n\r\nexport function useVerifio({ \r\n initialValue = '', \r\n validator, \r\n onChange,\r\n format \r\n}: UseVerifioProps): UseVerifioReturn {\r\n const [value, setInternalValue] = useState(initialValue);\r\n const [error, setError] = useState<string | null>(null);\r\n const [valid, setValid] = useState<boolean>(true); // start true unless validated\r\n\r\n const validate = useCallback((currentValue: string = value) => {\r\n if (!currentValue) {\r\n setValid(true);\r\n setError(null);\r\n return true;\r\n }\r\n const result = validator(currentValue);\r\n setValid(result.valid);\r\n setError(result.valid ? null : result.errors[0] || 'Invalid input');\r\n return result.valid;\r\n }, [value, validator]);\r\n\r\n const setValue = useCallback((newValue: string) => {\r\n const formattedValue = format ? format(newValue) : newValue;\r\n setInternalValue(formattedValue);\r\n }, [format]);\r\n\r\n const handleChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\r\n const newValue = e.target.value;\r\n const formattedValue = format ? format(newValue) : newValue;\r\n setInternalValue(formattedValue);\r\n \r\n // Auto-validate on change if there's already an error, or we could wait for blur\r\n if (error) {\r\n const result = validator(formattedValue);\r\n setValid(result.valid);\r\n setError(result.valid ? null : result.errors[0] || 'Invalid input');\r\n onChange?.(formattedValue, result.valid);\r\n } else {\r\n onChange?.(formattedValue, true); // Assuming optimistic valid until blur/submit\r\n }\r\n }, [error, validator, onChange, format]);\r\n\r\n const reset = useCallback(() => {\r\n setInternalValue('');\r\n setError(null);\r\n setValid(true);\r\n }, []);\r\n\r\n return {\r\n value,\r\n setValue,\r\n valid,\r\n error,\r\n validate: () => validate(value),\r\n reset,\r\n onChange: handleChange\r\n };\r\n}\r\n","import { useVerifio } from './useVerifio';\nimport {\n validatePAN,\n validateGST,\n validateAadhaar,\n validateEmail,\n validateStudentEmail,\n validatePhone,\n validatePincode,\n validateURL,\n validateIFSC,\n} from 'verifio';\n\r\nexport { useVerifio };\n\nexport function usePANValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\n return useVerifio({\r\n initialValue,\r\n validator: validatePAN,\r\n onChange,\r\n format: (val) => val.toUpperCase()\r\n });\r\n}\r\n\r\nexport function useGSTValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\r\n return useVerifio({\r\n initialValue,\r\n validator: validateGST,\r\n onChange,\r\n format: (val) => val.toUpperCase()\r\n });\r\n}\r\n\r\nexport function useAadhaarValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\r\n return useVerifio({\r\n initialValue,\r\n validator: validateAadhaar,\r\n onChange,\r\n // Add spaces every 4 digits for aadhaar display if desired, \r\n // but better to handle strictly on input\r\n format: (val) => {\r\n const digits = val.replace(/\\D/g, '');\r\n return digits.replace(/(.{4})/g, '$1 ').trim().substring(0, 14);\r\n }\r\n });\r\n}\r\n\r\nexport function useEmailValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\n return useVerifio({\n initialValue,\n validator: validateEmail,\n onChange\n });\n}\n\nexport function useStudentEmailValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\n return useVerifio({\n initialValue,\n validator: validateStudentEmail,\n onChange\n });\n}\n\nexport function usePhoneValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\n return useVerifio({\n initialValue,\n validator: validatePhone,\n onChange\n });\n}\n\nexport function usePincodeValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\n return useVerifio({\n initialValue,\n validator: validatePincode,\n onChange\n });\n}\n\nexport function useURLValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\n return useVerifio({\n initialValue,\n validator: validateURL,\n onChange\n });\n}\n\nexport function useIFSCValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\n return useVerifio({\n initialValue,\n validator: validateIFSC,\n onChange\n });\n}\n","import React, { InputHTMLAttributes, forwardRef } from 'react';\n\nexport interface BaseInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'onChange'> {\n value: string;\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n error?: string | null;\r\n onBlurValidate?: () => void;\r\n containerClassName?: string;\r\n errorClassName?: string;\r\n}\r\n\r\nconst BaseInput = forwardRef<HTMLInputElement, BaseInputProps>(({\r\n value,\r\n onChange,\r\n error,\r\n onBlurValidate,\r\n className,\r\n containerClassName,\r\n errorClassName,\n ...props\n}, ref) => {\n const wrapperStyle: React.CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n gap: '0.5rem',\n fontFamily: \"system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif\",\n };\n\n const inputStyle: React.CSSProperties = {\n padding: '0.5rem 0.75rem',\n border: `1px solid ${error ? '#ef4444' : '#d1d5db'}`,\n borderRadius: '0.375rem',\n fontSize: '1rem',\n outline: 'none',\n transition: 'border-color 0.2s, box-shadow 0.2s',\n boxSizing: 'border-box',\n };\n\n const errorTextStyle: React.CSSProperties = {\n color: '#ef4444',\n fontSize: '0.875rem',\n };\n\n return (\n <div className={containerClassName || ''} style={wrapperStyle}>\n <input\n ref={ref}\n type=\"text\"\n className={className || ''}\n style={inputStyle}\n value={value}\n onChange={onChange}\n onBlur={onBlurValidate}\n {...props}\n />\n {error && <span className={errorClassName || ''} style={errorTextStyle}>{error}</span>}\n </div>\n );\n});\n\r\nBaseInput.displayName = 'BaseInput';\r\nexport default BaseInput;\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface PANInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const PANInput = forwardRef<HTMLInputElement, PANInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n maxLength={10}\r\n placeholder=\"ABCDE1234F\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nPANInput.displayName = 'PANInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface AadhaarInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const AadhaarInput = forwardRef<HTMLInputElement, AadhaarInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n maxLength={14} // 12 digits + 2 spaces\r\n placeholder=\"1234 5678 9012\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nAadhaarInput.displayName = 'AadhaarInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface EmailInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const EmailInput = forwardRef<HTMLInputElement, EmailInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n type=\"email\"\r\n placeholder=\"example@domain.com\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nEmailInput.displayName = 'EmailInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface GSTInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const GSTInput = forwardRef<HTMLInputElement, GSTInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n maxLength={15}\r\n placeholder=\"22AAAAA0000A1Z5\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nGSTInput.displayName = 'GSTInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface IFSCInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const IFSCInput = forwardRef<HTMLInputElement, IFSCInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n maxLength={11}\r\n placeholder=\"SBIN0001234\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nIFSCInput.displayName = 'IFSCInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface PasswordInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const PasswordInput = forwardRef<HTMLInputElement, PasswordInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n type=\"password\"\r\n placeholder=\"Enter your password\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nPasswordInput.displayName = 'PasswordInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface PhoneInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const PhoneInput = forwardRef<HTMLInputElement, PhoneInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n type=\"tel\"\r\n placeholder=\"+91 9876543210\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nPhoneInput.displayName = 'PhoneInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface PincodeInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const PincodeInput = forwardRef<HTMLInputElement, PincodeInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n maxLength={6}\r\n placeholder=\"110001\"\r\n type=\"text\"\r\n inputMode=\"numeric\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nPincodeInput.displayName = 'PincodeInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface StudentEmailInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const StudentEmailInput = forwardRef<HTMLInputElement, StudentEmailInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n type=\"email\"\r\n placeholder=\"student@university.edu\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nStudentEmailInput.displayName = 'StudentEmailInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface URLInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const URLInput = forwardRef<HTMLInputElement, URLInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n type=\"url\"\r\n placeholder=\"https://example.com\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nURLInput.displayName = 'URLInput';\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/hooks/useVerifio.ts","../src/hooks/index.ts","../src/components/BaseInput.tsx","../src/components/PANInput.tsx","../src/components/AadhaarInput.tsx","../src/components/EmailInput.tsx","../src/components/GSTInput.tsx","../src/components/IFSCInput.tsx","../src/components/PasswordInput.tsx","../src/components/PhoneInput.tsx","../src/components/PincodeInput.tsx","../src/components/StudentEmailInput.tsx","../src/components/URLInput.tsx"],"names":["useState","useCallback","validatePAN","validateGST","validateAadhaar","validateEmail","validateStudentEmail","validatePhone","validatePincode","validateURL","validateIFSC","forwardRef","jsx"],"mappings":"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","file":"index.js","sourcesContent":["import { useState, useCallback } from 'react';\nimport { ValidationResult } from 'verifio';\r\n\r\nexport interface UseVerifioProps {\r\n initialValue?: string;\r\n validator: (value: string) => ValidationResult;\r\n onChange?: (value: string, isValid: boolean) => void;\r\n format?: (value: string) => string;\r\n}\r\n\r\nexport interface UseVerifioReturn {\r\n value: string;\r\n setValue: (value: string) => void;\r\n valid: boolean;\r\n error: string | null;\r\n validate: () => boolean;\r\n reset: () => void;\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n}\r\n\r\nexport function useVerifio({ \r\n initialValue = '', \r\n validator, \r\n onChange,\r\n format \r\n}: UseVerifioProps): UseVerifioReturn {\r\n const [value, setInternalValue] = useState(initialValue);\r\n const [error, setError] = useState<string | null>(null);\r\n const [valid, setValid] = useState<boolean>(true); // start true unless validated\r\n\r\n const validate = useCallback((currentValue: string = value) => {\r\n if (!currentValue) {\r\n setValid(true);\r\n setError(null);\r\n return true;\r\n }\r\n const result = validator(currentValue);\r\n setValid(result.valid);\r\n setError(result.valid ? null : result.errors[0] || 'Invalid input');\r\n return result.valid;\r\n }, [value, validator]);\r\n\r\n const setValue = useCallback((newValue: string) => {\r\n const formattedValue = format ? format(newValue) : newValue;\r\n setInternalValue(formattedValue);\r\n }, [format]);\r\n\r\n const handleChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\r\n const newValue = e.target.value;\r\n const formattedValue = format ? format(newValue) : newValue;\r\n setInternalValue(formattedValue);\r\n \r\n // Auto-validate on change if there's already an error, or we could wait for blur\r\n if (error) {\r\n const result = validator(formattedValue);\r\n setValid(result.valid);\r\n setError(result.valid ? null : result.errors[0] || 'Invalid input');\r\n onChange?.(formattedValue, result.valid);\r\n } else {\r\n onChange?.(formattedValue, true); // Assuming optimistic valid until blur/submit\r\n }\r\n }, [error, validator, onChange, format]);\r\n\r\n const reset = useCallback(() => {\r\n setInternalValue('');\r\n setError(null);\r\n setValid(true);\r\n }, []);\r\n\r\n return {\r\n value,\r\n setValue,\r\n valid,\r\n error,\r\n validate: () => validate(value),\r\n reset,\r\n onChange: handleChange\r\n };\r\n}\r\n","import { useVerifio } from './useVerifio';\nimport {\n validatePAN,\n validateGST,\n validateAadhaar,\n validateEmail,\n validateStudentEmail,\n validatePhone,\n validatePincode,\n validateURL,\n validateIFSC,\n} from '@meowster404/verifio';\n\r\nexport { useVerifio };\n\nexport function usePANValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\n return useVerifio({\r\n initialValue,\r\n validator: validatePAN,\r\n onChange,\r\n format: (val) => val.toUpperCase()\r\n });\r\n}\r\n\r\nexport function useGSTValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\r\n return useVerifio({\r\n initialValue,\r\n validator: validateGST,\r\n onChange,\r\n format: (val) => val.toUpperCase()\r\n });\r\n}\r\n\r\nexport function useAadhaarValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\r\n return useVerifio({\r\n initialValue,\r\n validator: validateAadhaar,\r\n onChange,\r\n // Add spaces every 4 digits for aadhaar display if desired, \r\n // but better to handle strictly on input\r\n format: (val) => {\r\n const digits = val.replace(/\\D/g, '');\r\n return digits.replace(/(.{4})/g, '$1 ').trim().substring(0, 14);\r\n }\r\n });\r\n}\r\n\r\nexport function useEmailValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\n return useVerifio({\n initialValue,\n validator: validateEmail,\n onChange\n });\n}\n\nexport function useStudentEmailValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\n return useVerifio({\n initialValue,\n validator: validateStudentEmail,\n onChange\n });\n}\n\nexport function usePhoneValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\n return useVerifio({\n initialValue,\n validator: validatePhone,\n onChange\n });\n}\n\nexport function usePincodeValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\n return useVerifio({\n initialValue,\n validator: validatePincode,\n onChange\n });\n}\n\nexport function useURLValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\n return useVerifio({\n initialValue,\n validator: validateURL,\n onChange\n });\n}\n\nexport function useIFSCValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\n return useVerifio({\n initialValue,\n validator: validateIFSC,\n onChange\n });\n}\n","import React, { InputHTMLAttributes, forwardRef } from 'react';\n\nexport interface BaseInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'onChange'> {\n value: string;\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n error?: string | null;\r\n onBlurValidate?: () => void;\r\n containerClassName?: string;\r\n errorClassName?: string;\r\n}\r\n\r\nconst BaseInput = forwardRef<HTMLInputElement, BaseInputProps>(({\r\n value,\r\n onChange,\r\n error,\r\n onBlurValidate,\r\n className,\r\n containerClassName,\r\n errorClassName,\n ...props\n}, ref) => {\n const wrapperStyle: React.CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n gap: '0.5rem',\n fontFamily: \"system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif\",\n };\n\n const inputStyle: React.CSSProperties = {\n padding: '0.5rem 0.75rem',\n border: `1px solid ${error ? '#ef4444' : '#d1d5db'}`,\n borderRadius: '0.375rem',\n fontSize: '1rem',\n outline: 'none',\n transition: 'border-color 0.2s, box-shadow 0.2s',\n boxSizing: 'border-box',\n };\n\n const errorTextStyle: React.CSSProperties = {\n color: '#ef4444',\n fontSize: '0.875rem',\n };\n\n return (\n <div className={containerClassName || ''} style={wrapperStyle}>\n <input\n ref={ref}\n type=\"text\"\n className={className || ''}\n style={inputStyle}\n value={value}\n onChange={onChange}\n onBlur={onBlurValidate}\n {...props}\n />\n {error && <span className={errorClassName || ''} style={errorTextStyle}>{error}</span>}\n </div>\n );\n});\n\r\nBaseInput.displayName = 'BaseInput';\r\nexport default BaseInput;\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface PANInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const PANInput = forwardRef<HTMLInputElement, PANInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n maxLength={10}\r\n placeholder=\"ABCDE1234F\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nPANInput.displayName = 'PANInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface AadhaarInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const AadhaarInput = forwardRef<HTMLInputElement, AadhaarInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n maxLength={14} // 12 digits + 2 spaces\r\n placeholder=\"1234 5678 9012\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nAadhaarInput.displayName = 'AadhaarInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface EmailInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const EmailInput = forwardRef<HTMLInputElement, EmailInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n type=\"email\"\r\n placeholder=\"example@domain.com\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nEmailInput.displayName = 'EmailInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface GSTInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const GSTInput = forwardRef<HTMLInputElement, GSTInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n maxLength={15}\r\n placeholder=\"22AAAAA0000A1Z5\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nGSTInput.displayName = 'GSTInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface IFSCInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const IFSCInput = forwardRef<HTMLInputElement, IFSCInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n maxLength={11}\r\n placeholder=\"SBIN0001234\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nIFSCInput.displayName = 'IFSCInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface PasswordInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const PasswordInput = forwardRef<HTMLInputElement, PasswordInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n type=\"password\"\r\n placeholder=\"Enter your password\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nPasswordInput.displayName = 'PasswordInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface PhoneInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const PhoneInput = forwardRef<HTMLInputElement, PhoneInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n type=\"tel\"\r\n placeholder=\"+91 9876543210\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nPhoneInput.displayName = 'PhoneInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface PincodeInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const PincodeInput = forwardRef<HTMLInputElement, PincodeInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n maxLength={6}\r\n placeholder=\"110001\"\r\n type=\"text\"\r\n inputMode=\"numeric\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nPincodeInput.displayName = 'PincodeInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface StudentEmailInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const StudentEmailInput = forwardRef<HTMLInputElement, StudentEmailInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n type=\"email\"\r\n placeholder=\"student@university.edu\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nStudentEmailInput.displayName = 'StudentEmailInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface URLInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const URLInput = forwardRef<HTMLInputElement, URLInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n type=\"url\"\r\n placeholder=\"https://example.com\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nURLInput.displayName = 'URLInput';\r\n"]}
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { forwardRef, useState, useCallback } from 'react';
|
|
2
|
-
import { validatePAN, validateGST, validateAadhaar, validateEmail, validateStudentEmail, validatePhone, validatePincode, validateURL, validateIFSC } from 'verifio';
|
|
2
|
+
import { validatePAN, validateGST, validateAadhaar, validateEmail, validateStudentEmail, validatePhone, validatePincode, validateURL, validateIFSC } from '@meowster404/verifio';
|
|
3
3
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
4
4
|
|
|
5
5
|
// src/hooks/useVerifio.ts
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/hooks/useVerifio.ts","../src/hooks/index.ts","../src/components/BaseInput.tsx","../src/components/PANInput.tsx","../src/components/AadhaarInput.tsx","../src/components/EmailInput.tsx","../src/components/GSTInput.tsx","../src/components/IFSCInput.tsx","../src/components/PasswordInput.tsx","../src/components/PhoneInput.tsx","../src/components/PincodeInput.tsx","../src/components/StudentEmailInput.tsx","../src/components/URLInput.tsx"],"names":["forwardRef","jsx"],"mappings":"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","file":"index.mjs","sourcesContent":["import { useState, useCallback, useEffect } from 'react';\r\nimport { ValidationResult } from 'verifio';\r\n\r\nexport interface UseVerifioProps {\r\n initialValue?: string;\r\n validator: (value: string) => ValidationResult;\r\n onChange?: (value: string, isValid: boolean) => void;\r\n format?: (value: string) => string;\r\n}\r\n\r\nexport interface UseVerifioReturn {\r\n value: string;\r\n setValue: (value: string) => void;\r\n valid: boolean;\r\n error: string | null;\r\n validate: () => boolean;\r\n reset: () => void;\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n}\r\n\r\nexport function useVerifio({ \r\n initialValue = '', \r\n validator, \r\n onChange,\r\n format \r\n}: UseVerifioProps): UseVerifioReturn {\r\n const [value, setInternalValue] = useState(initialValue);\r\n const [error, setError] = useState<string | null>(null);\r\n const [valid, setValid] = useState<boolean>(true); // start true unless validated\r\n\r\n const validate = useCallback((currentValue: string = value) => {\r\n if (!currentValue) {\r\n setValid(true);\r\n setError(null);\r\n return true;\r\n }\r\n const result = validator(currentValue);\r\n setValid(result.valid);\r\n setError(result.valid ? null : result.errors[0] || 'Invalid input');\r\n return result.valid;\r\n }, [value, validator]);\r\n\r\n const setValue = useCallback((newValue: string) => {\r\n const formattedValue = format ? format(newValue) : newValue;\r\n setInternalValue(formattedValue);\r\n }, [format]);\r\n\r\n const handleChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\r\n const newValue = e.target.value;\r\n const formattedValue = format ? format(newValue) : newValue;\r\n setInternalValue(formattedValue);\r\n \r\n // Auto-validate on change if there's already an error, or we could wait for blur\r\n if (error) {\r\n const result = validator(formattedValue);\r\n setValid(result.valid);\r\n setError(result.valid ? null : result.errors[0] || 'Invalid input');\r\n onChange?.(formattedValue, result.valid);\r\n } else {\r\n onChange?.(formattedValue, true); // Assuming optimistic valid until blur/submit\r\n }\r\n }, [error, validator, onChange, format]);\r\n\r\n const reset = useCallback(() => {\r\n setInternalValue('');\r\n setError(null);\r\n setValid(true);\r\n }, []);\r\n\r\n return {\r\n value,\r\n setValue,\r\n valid,\r\n error,\r\n validate: () => validate(value),\r\n reset,\r\n onChange: handleChange\r\n };\r\n}\r\n","import { useVerifio } from './useVerifio';\nimport {\n validatePAN,\n validateGST,\n validateAadhaar,\n validateEmail,\n validateStudentEmail,\n validatePhone,\n validatePincode,\n validateURL,\n validateIFSC,\n} from 'verifio';\n\r\nexport { useVerifio };\n\nexport function usePANValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\n return useVerifio({\r\n initialValue,\r\n validator: validatePAN,\r\n onChange,\r\n format: (val) => val.toUpperCase()\r\n });\r\n}\r\n\r\nexport function useGSTValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\r\n return useVerifio({\r\n initialValue,\r\n validator: validateGST,\r\n onChange,\r\n format: (val) => val.toUpperCase()\r\n });\r\n}\r\n\r\nexport function useAadhaarValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\r\n return useVerifio({\r\n initialValue,\r\n validator: validateAadhaar,\r\n onChange,\r\n // Add spaces every 4 digits for aadhaar display if desired, \r\n // but better to handle strictly on input\r\n format: (val) => {\r\n const digits = val.replace(/\\D/g, '');\r\n return digits.replace(/(.{4})/g, '$1 ').trim().substring(0, 14);\r\n }\r\n });\r\n}\r\n\r\nexport function useEmailValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\n return useVerifio({\n initialValue,\n validator: validateEmail,\n onChange\n });\n}\n\nexport function useStudentEmailValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\n return useVerifio({\n initialValue,\n validator: validateStudentEmail,\n onChange\n });\n}\n\nexport function usePhoneValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\n return useVerifio({\n initialValue,\n validator: validatePhone,\n onChange\n });\n}\n\nexport function usePincodeValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\n return useVerifio({\n initialValue,\n validator: validatePincode,\n onChange\n });\n}\n\nexport function useURLValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\n return useVerifio({\n initialValue,\n validator: validateURL,\n onChange\n });\n}\n\nexport function useIFSCValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\n return useVerifio({\n initialValue,\n validator: validateIFSC,\n onChange\n });\n}\n","import React, { InputHTMLAttributes, forwardRef } from 'react';\n\nexport interface BaseInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'onChange'> {\n value: string;\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n error?: string | null;\r\n onBlurValidate?: () => void;\r\n containerClassName?: string;\r\n errorClassName?: string;\r\n}\r\n\r\nconst BaseInput = forwardRef<HTMLInputElement, BaseInputProps>(({\r\n value,\r\n onChange,\r\n error,\r\n onBlurValidate,\r\n className,\r\n containerClassName,\r\n errorClassName,\n ...props\n}, ref) => {\n const wrapperStyle: React.CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n gap: '0.5rem',\n fontFamily: \"system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif\",\n };\n\n const inputStyle: React.CSSProperties = {\n padding: '0.5rem 0.75rem',\n border: `1px solid ${error ? '#ef4444' : '#d1d5db'}`,\n borderRadius: '0.375rem',\n fontSize: '1rem',\n outline: 'none',\n transition: 'border-color 0.2s, box-shadow 0.2s',\n boxSizing: 'border-box',\n };\n\n const errorTextStyle: React.CSSProperties = {\n color: '#ef4444',\n fontSize: '0.875rem',\n };\n\n return (\n <div className={containerClassName || ''} style={wrapperStyle}>\n <input\n ref={ref}\n type=\"text\"\n className={className || ''}\n style={inputStyle}\n value={value}\n onChange={onChange}\n onBlur={onBlurValidate}\n {...props}\n />\n {error && <span className={errorClassName || ''} style={errorTextStyle}>{error}</span>}\n </div>\n );\n});\n\r\nBaseInput.displayName = 'BaseInput';\r\nexport default BaseInput;\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface PANInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const PANInput = forwardRef<HTMLInputElement, PANInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n maxLength={10}\r\n placeholder=\"ABCDE1234F\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nPANInput.displayName = 'PANInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface AadhaarInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const AadhaarInput = forwardRef<HTMLInputElement, AadhaarInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n maxLength={14} // 12 digits + 2 spaces\r\n placeholder=\"1234 5678 9012\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nAadhaarInput.displayName = 'AadhaarInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface EmailInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const EmailInput = forwardRef<HTMLInputElement, EmailInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n type=\"email\"\r\n placeholder=\"example@domain.com\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nEmailInput.displayName = 'EmailInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface GSTInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const GSTInput = forwardRef<HTMLInputElement, GSTInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n maxLength={15}\r\n placeholder=\"22AAAAA0000A1Z5\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nGSTInput.displayName = 'GSTInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface IFSCInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const IFSCInput = forwardRef<HTMLInputElement, IFSCInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n maxLength={11}\r\n placeholder=\"SBIN0001234\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nIFSCInput.displayName = 'IFSCInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface PasswordInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const PasswordInput = forwardRef<HTMLInputElement, PasswordInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n type=\"password\"\r\n placeholder=\"Enter your password\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nPasswordInput.displayName = 'PasswordInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface PhoneInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const PhoneInput = forwardRef<HTMLInputElement, PhoneInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n type=\"tel\"\r\n placeholder=\"+91 9876543210\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nPhoneInput.displayName = 'PhoneInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface PincodeInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const PincodeInput = forwardRef<HTMLInputElement, PincodeInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n maxLength={6}\r\n placeholder=\"110001\"\r\n type=\"text\"\r\n inputMode=\"numeric\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nPincodeInput.displayName = 'PincodeInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface StudentEmailInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const StudentEmailInput = forwardRef<HTMLInputElement, StudentEmailInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n type=\"email\"\r\n placeholder=\"student@university.edu\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nStudentEmailInput.displayName = 'StudentEmailInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface URLInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const URLInput = forwardRef<HTMLInputElement, URLInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n type=\"url\"\r\n placeholder=\"https://example.com\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nURLInput.displayName = 'URLInput';\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/hooks/useVerifio.ts","../src/hooks/index.ts","../src/components/BaseInput.tsx","../src/components/PANInput.tsx","../src/components/AadhaarInput.tsx","../src/components/EmailInput.tsx","../src/components/GSTInput.tsx","../src/components/IFSCInput.tsx","../src/components/PasswordInput.tsx","../src/components/PhoneInput.tsx","../src/components/PincodeInput.tsx","../src/components/StudentEmailInput.tsx","../src/components/URLInput.tsx"],"names":["forwardRef","jsx"],"mappings":"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","file":"index.mjs","sourcesContent":["import { useState, useCallback } from 'react';\nimport { ValidationResult } from 'verifio';\r\n\r\nexport interface UseVerifioProps {\r\n initialValue?: string;\r\n validator: (value: string) => ValidationResult;\r\n onChange?: (value: string, isValid: boolean) => void;\r\n format?: (value: string) => string;\r\n}\r\n\r\nexport interface UseVerifioReturn {\r\n value: string;\r\n setValue: (value: string) => void;\r\n valid: boolean;\r\n error: string | null;\r\n validate: () => boolean;\r\n reset: () => void;\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n}\r\n\r\nexport function useVerifio({ \r\n initialValue = '', \r\n validator, \r\n onChange,\r\n format \r\n}: UseVerifioProps): UseVerifioReturn {\r\n const [value, setInternalValue] = useState(initialValue);\r\n const [error, setError] = useState<string | null>(null);\r\n const [valid, setValid] = useState<boolean>(true); // start true unless validated\r\n\r\n const validate = useCallback((currentValue: string = value) => {\r\n if (!currentValue) {\r\n setValid(true);\r\n setError(null);\r\n return true;\r\n }\r\n const result = validator(currentValue);\r\n setValid(result.valid);\r\n setError(result.valid ? null : result.errors[0] || 'Invalid input');\r\n return result.valid;\r\n }, [value, validator]);\r\n\r\n const setValue = useCallback((newValue: string) => {\r\n const formattedValue = format ? format(newValue) : newValue;\r\n setInternalValue(formattedValue);\r\n }, [format]);\r\n\r\n const handleChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\r\n const newValue = e.target.value;\r\n const formattedValue = format ? format(newValue) : newValue;\r\n setInternalValue(formattedValue);\r\n \r\n // Auto-validate on change if there's already an error, or we could wait for blur\r\n if (error) {\r\n const result = validator(formattedValue);\r\n setValid(result.valid);\r\n setError(result.valid ? null : result.errors[0] || 'Invalid input');\r\n onChange?.(formattedValue, result.valid);\r\n } else {\r\n onChange?.(formattedValue, true); // Assuming optimistic valid until blur/submit\r\n }\r\n }, [error, validator, onChange, format]);\r\n\r\n const reset = useCallback(() => {\r\n setInternalValue('');\r\n setError(null);\r\n setValid(true);\r\n }, []);\r\n\r\n return {\r\n value,\r\n setValue,\r\n valid,\r\n error,\r\n validate: () => validate(value),\r\n reset,\r\n onChange: handleChange\r\n };\r\n}\r\n","import { useVerifio } from './useVerifio';\nimport {\n validatePAN,\n validateGST,\n validateAadhaar,\n validateEmail,\n validateStudentEmail,\n validatePhone,\n validatePincode,\n validateURL,\n validateIFSC,\n} from '@meowster404/verifio';\n\r\nexport { useVerifio };\n\nexport function usePANValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\n return useVerifio({\r\n initialValue,\r\n validator: validatePAN,\r\n onChange,\r\n format: (val) => val.toUpperCase()\r\n });\r\n}\r\n\r\nexport function useGSTValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\r\n return useVerifio({\r\n initialValue,\r\n validator: validateGST,\r\n onChange,\r\n format: (val) => val.toUpperCase()\r\n });\r\n}\r\n\r\nexport function useAadhaarValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\r\n return useVerifio({\r\n initialValue,\r\n validator: validateAadhaar,\r\n onChange,\r\n // Add spaces every 4 digits for aadhaar display if desired, \r\n // but better to handle strictly on input\r\n format: (val) => {\r\n const digits = val.replace(/\\D/g, '');\r\n return digits.replace(/(.{4})/g, '$1 ').trim().substring(0, 14);\r\n }\r\n });\r\n}\r\n\r\nexport function useEmailValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\n return useVerifio({\n initialValue,\n validator: validateEmail,\n onChange\n });\n}\n\nexport function useStudentEmailValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\n return useVerifio({\n initialValue,\n validator: validateStudentEmail,\n onChange\n });\n}\n\nexport function usePhoneValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\n return useVerifio({\n initialValue,\n validator: validatePhone,\n onChange\n });\n}\n\nexport function usePincodeValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\n return useVerifio({\n initialValue,\n validator: validatePincode,\n onChange\n });\n}\n\nexport function useURLValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\n return useVerifio({\n initialValue,\n validator: validateURL,\n onChange\n });\n}\n\nexport function useIFSCValidation(initialValue?: string, onChange?: (val: string, valid: boolean) => void) {\n return useVerifio({\n initialValue,\n validator: validateIFSC,\n onChange\n });\n}\n","import React, { InputHTMLAttributes, forwardRef } from 'react';\n\nexport interface BaseInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'onChange'> {\n value: string;\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n error?: string | null;\r\n onBlurValidate?: () => void;\r\n containerClassName?: string;\r\n errorClassName?: string;\r\n}\r\n\r\nconst BaseInput = forwardRef<HTMLInputElement, BaseInputProps>(({\r\n value,\r\n onChange,\r\n error,\r\n onBlurValidate,\r\n className,\r\n containerClassName,\r\n errorClassName,\n ...props\n}, ref) => {\n const wrapperStyle: React.CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n gap: '0.5rem',\n fontFamily: \"system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif\",\n };\n\n const inputStyle: React.CSSProperties = {\n padding: '0.5rem 0.75rem',\n border: `1px solid ${error ? '#ef4444' : '#d1d5db'}`,\n borderRadius: '0.375rem',\n fontSize: '1rem',\n outline: 'none',\n transition: 'border-color 0.2s, box-shadow 0.2s',\n boxSizing: 'border-box',\n };\n\n const errorTextStyle: React.CSSProperties = {\n color: '#ef4444',\n fontSize: '0.875rem',\n };\n\n return (\n <div className={containerClassName || ''} style={wrapperStyle}>\n <input\n ref={ref}\n type=\"text\"\n className={className || ''}\n style={inputStyle}\n value={value}\n onChange={onChange}\n onBlur={onBlurValidate}\n {...props}\n />\n {error && <span className={errorClassName || ''} style={errorTextStyle}>{error}</span>}\n </div>\n );\n});\n\r\nBaseInput.displayName = 'BaseInput';\r\nexport default BaseInput;\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface PANInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const PANInput = forwardRef<HTMLInputElement, PANInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n maxLength={10}\r\n placeholder=\"ABCDE1234F\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nPANInput.displayName = 'PANInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface AadhaarInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const AadhaarInput = forwardRef<HTMLInputElement, AadhaarInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n maxLength={14} // 12 digits + 2 spaces\r\n placeholder=\"1234 5678 9012\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nAadhaarInput.displayName = 'AadhaarInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface EmailInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const EmailInput = forwardRef<HTMLInputElement, EmailInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n type=\"email\"\r\n placeholder=\"example@domain.com\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nEmailInput.displayName = 'EmailInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface GSTInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const GSTInput = forwardRef<HTMLInputElement, GSTInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n maxLength={15}\r\n placeholder=\"22AAAAA0000A1Z5\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nGSTInput.displayName = 'GSTInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface IFSCInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const IFSCInput = forwardRef<HTMLInputElement, IFSCInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n maxLength={11}\r\n placeholder=\"SBIN0001234\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nIFSCInput.displayName = 'IFSCInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface PasswordInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const PasswordInput = forwardRef<HTMLInputElement, PasswordInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n type=\"password\"\r\n placeholder=\"Enter your password\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nPasswordInput.displayName = 'PasswordInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface PhoneInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const PhoneInput = forwardRef<HTMLInputElement, PhoneInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n type=\"tel\"\r\n placeholder=\"+91 9876543210\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nPhoneInput.displayName = 'PhoneInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface PincodeInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const PincodeInput = forwardRef<HTMLInputElement, PincodeInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n maxLength={6}\r\n placeholder=\"110001\"\r\n type=\"text\"\r\n inputMode=\"numeric\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nPincodeInput.displayName = 'PincodeInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface StudentEmailInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const StudentEmailInput = forwardRef<HTMLInputElement, StudentEmailInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n type=\"email\"\r\n placeholder=\"student@university.edu\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nStudentEmailInput.displayName = 'StudentEmailInput';\r\n","import React, { forwardRef } from 'react';\r\nimport BaseInput, { BaseInputProps } from './BaseInput';\r\n\r\nexport interface URLInputProps extends Omit<BaseInputProps, 'onChange'> {\r\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n validate?: () => void;\r\n}\r\n\r\nexport const URLInput = forwardRef<HTMLInputElement, URLInputProps>(({ validate, ...props }, ref) => {\r\n return (\r\n <BaseInput\r\n ref={ref}\r\n type=\"url\"\r\n placeholder=\"https://example.com\"\r\n onBlurValidate={validate}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nURLInput.displayName = 'URLInput';\r\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@meowster404/verifio-react",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "React hooks and components for Verifio",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -32,8 +32,7 @@
|
|
|
32
32
|
"react-dom": "^18.0.0 || ^19.0.0"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@meowster404/verifio": "
|
|
36
|
-
"@verifio/react": "^0.1.1"
|
|
35
|
+
"@meowster404/verifio": "^0.3.0"
|
|
37
36
|
},
|
|
38
37
|
"devDependencies": {
|
|
39
38
|
"@storybook/addon-essentials": "^8.0.0",
|