@mertcankocak/core-project 1.0.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +88 -7
  2. package/dist/components/FormikTextField/FormikTextField.d.ts +46 -0
  3. package/dist/components/FormikTextField/FormikTextField.d.ts.map +1 -0
  4. package/dist/components/FormikTextField/constants.d.ts +14 -0
  5. package/dist/components/FormikTextField/constants.d.ts.map +1 -0
  6. package/dist/components/FormikTextField/helpers.d.ts +9 -0
  7. package/dist/components/FormikTextField/helpers.d.ts.map +1 -0
  8. package/dist/components/FormikTextField/index.d.ts +5 -0
  9. package/dist/components/FormikTextField/index.d.ts.map +1 -0
  10. package/dist/components/index.d.ts +3 -0
  11. package/dist/components/index.d.ts.map +1 -0
  12. package/dist/core-project.es.js +1288 -0
  13. package/dist/core-project.umd.js +30 -1
  14. package/dist/index.d.ts +3 -0
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/utils/index.d.ts +2 -0
  17. package/dist/utils/index.d.ts.map +1 -0
  18. package/dist/utils/stringUtils.d.ts +5 -0
  19. package/dist/utils/stringUtils.d.ts.map +1 -0
  20. package/dist/validators/creditCard.d.ts +15 -0
  21. package/dist/validators/creditCard.d.ts.map +1 -0
  22. package/dist/validators/date.d.ts +22 -0
  23. package/dist/validators/date.d.ts.map +1 -0
  24. package/dist/validators/email.d.ts +15 -0
  25. package/dist/validators/email.d.ts.map +1 -0
  26. package/dist/validators/file.d.ts +46 -0
  27. package/dist/validators/file.d.ts.map +1 -0
  28. package/dist/validators/iban.d.ts +15 -0
  29. package/dist/validators/iban.d.ts.map +1 -0
  30. package/dist/validators/index.d.ts +13 -0
  31. package/dist/validators/index.d.ts.map +1 -0
  32. package/dist/validators/name.d.ts +15 -0
  33. package/dist/validators/name.d.ts.map +1 -0
  34. package/dist/validators/password.d.ts +18 -0
  35. package/dist/validators/password.d.ts.map +1 -0
  36. package/dist/validators/phone.d.ts +16 -0
  37. package/dist/validators/phone.d.ts.map +1 -0
  38. package/dist/validators/plate.d.ts +16 -0
  39. package/dist/validators/plate.d.ts.map +1 -0
  40. package/dist/validators/tcKimlikNo.d.ts +57 -0
  41. package/dist/validators/tcKimlikNo.d.ts.map +1 -0
  42. package/dist/validators/types.d.ts +149 -0
  43. package/dist/validators/types.d.ts.map +1 -0
  44. package/dist/validators/vkn.d.ts +16 -0
  45. package/dist/validators/vkn.d.ts.map +1 -0
  46. package/package.json +26 -3
package/README.md CHANGED
@@ -5,21 +5,102 @@ React TypeScript component library built with Vite.
5
5
  ## Installation
6
6
 
7
7
  ```bash
8
- npm install core-project
8
+ npm install @mertcankocak/core-project
9
+ ```
10
+
11
+ ## Peer Dependencies
12
+
13
+ Bu paket aşağıdaki paketleri peer dependency olarak gerektirir:
14
+
15
+ ```bash
16
+ npm install react react-dom yup
9
17
  ```
10
18
 
11
19
  ## Usage
12
20
 
13
- ```tsx
14
- import { YourComponent } from 'core-project'
21
+ ### Yup Validators
22
+
23
+ #### T.C. Kimlik Numarası
24
+
25
+ Zorunluluk dışarıdan belirlenir. `required` belirtilmezse optional olur (varsayılan).
26
+
27
+ ```typescript
28
+ import * as yup from 'yup'
29
+ import { tcKimlikNoSchema } from '@mertcankocak/core-project'
30
+
31
+ // Optional (varsayılan)
32
+ const optionalSchema = yup.object({
33
+ tcKimlikNo: tcKimlikNoSchema()
34
+ })
35
+
36
+ // Required
37
+ const requiredSchema = yup.object({
38
+ tcKimlikNo: tcKimlikNoSchema({ required: true })
39
+ })
40
+
41
+ // Özel mesajlarla
42
+ const customSchema = yup.object({
43
+ tcKimlikNo: tcKimlikNoSchema({
44
+ required: true,
45
+ message: 'Geçersiz T.C. kimlik numarası',
46
+ requiredMessage: 'T.C. kimlik numarası boş bırakılamaz'
47
+ })
48
+ })
49
+ ```
50
+
51
+ #### Regex ve Manuel Validasyon
15
52
 
16
- function App() {
17
- return (
18
- <YourComponent />
19
- )
53
+ ```typescript
54
+ import {
55
+ TC_KIMLIK_NO_REGEX,
56
+ validateTCKimlikNo
57
+ } from '@mertcankocak/core-project'
58
+
59
+ // Regex kontrolü
60
+ const isValid = TC_KIMLIK_NO_REGEX.test('12345678901')
61
+
62
+ // Algoritma kontrolü
63
+ const isValid = validateTCKimlikNo('12345678901')
64
+ ```
65
+
66
+ ## Kullanım Örnekleri
67
+
68
+ Detaylı kullanım örnekleri için [USAGE_EXAMPLES.md](./USAGE_EXAMPLES.md) dosyasına bakın.
69
+
70
+ ### React Hook Form ile
71
+
72
+ ```typescript
73
+ import { useForm } from 'react-hook-form'
74
+ import { yupResolver } from '@hookform/resolvers/yup'
75
+ import * as yup from 'yup'
76
+ import { tcKimlikNoSchema } from '@mertcankocak/core-project'
77
+
78
+ const schema = yup.object({
79
+ name: yup.string().required(),
80
+ tcKimlikNo: tcKimlikNoSchema(), // Optional (varsayılan)
81
+ })
82
+
83
+ function MyForm() {
84
+ const { register, handleSubmit } = useForm({
85
+ resolver: yupResolver(schema),
86
+ })
87
+
88
+ // ...
20
89
  }
21
90
  ```
22
91
 
92
+ ### Formik ile
93
+
94
+ ```typescript
95
+ import { Formik } from 'formik'
96
+ import * as yup from 'yup'
97
+ import { tcKimlikNoSchema } from '@mertcankocak/core-project'
98
+
99
+ const schema = yup.object({
100
+ tcKimlikNo: tcKimlikNoSchema({ required: true }), // Required
101
+ })
102
+ ```
103
+
23
104
  ## Development
24
105
 
25
106
  ```bash
@@ -0,0 +1,46 @@
1
+ import { default as React } from 'react';
2
+ import { TextFieldProps as MuiTextFieldProps, SxProps, Theme } from '@mui/material';
3
+
4
+ export interface FormikTextFieldProps extends Omit<MuiTextFieldProps, "name" | "value" | "onChange" | "onBlur" | "sx"> {
5
+ name: string;
6
+ label?: string;
7
+ type?: string;
8
+ placeholder?: string;
9
+ className?: string;
10
+ fieldToSearch?: string;
11
+ onSuggestionSearch?: (fieldName: string, searchTerm: string) => Promise<string[]>;
12
+ disabled?: boolean;
13
+ step?: string | number;
14
+ min?: string | number;
15
+ max?: string | number;
16
+ startAdornment?: React.ReactNode;
17
+ endAdornment?: React.ReactNode;
18
+ disableUppercase?: boolean;
19
+ required?: boolean;
20
+ fullWidth?: boolean;
21
+ debounceDelay?: number;
22
+ minSearchLength?: number;
23
+ helperText?: string;
24
+ autoFocus?: boolean;
25
+ multiline?: boolean;
26
+ rows?: number;
27
+ maxLength?: number;
28
+ errorMessageFormatter?: (error: string) => string;
29
+ "aria-label"?: string;
30
+ "aria-describedby"?: string;
31
+ /**
32
+ * MUI sx prop - TextField için özelleştirme
33
+ * @example sx={{ backgroundColor: 'red', '& .MuiInputBase-root': { borderRadius: 2 } }}
34
+ */
35
+ sx?: SxProps<Theme>;
36
+ /**
37
+ * InputProps içindeki sx - Input root elementi için özelleştirme
38
+ */
39
+ inputSx?: SxProps<Theme>;
40
+ /**
41
+ * InputProps içindeki input sx - Input elementi için özelleştirme
42
+ */
43
+ inputElementSx?: SxProps<Theme>;
44
+ }
45
+ export declare const FormikTextField: React.FC<FormikTextFieldProps>;
46
+ //# sourceMappingURL=FormikTextField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormikTextField.d.ts","sourceRoot":"","sources":["../../../src/components/FormikTextField/FormikTextField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAEf,OAAO,EAKL,cAAc,IAAI,iBAAiB,EACnC,OAAO,EACP,KAAK,EACN,MAAM,eAAe,CAAC;AAKvB,MAAM,WAAW,oBACf,SAAQ,IAAI,CACV,iBAAiB,EACjB,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,IAAI,CAChD;IACD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,CACnB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACjC,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACzB;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;CACjC;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA4O1D,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * FormikTextField constants
3
+ */
4
+ export declare const DEFAULT_DEBOUNCE_DELAY = 300;
5
+ export declare const DEFAULT_MIN_SEARCH_LENGTH = 1;
6
+ /**
7
+ * Input types that should not be converted to uppercase
8
+ */
9
+ export declare const NON_UPPERCASE_TYPES: readonly ["password", "email", "number", "tel", "url"];
10
+ /**
11
+ * Allowed keyboard keys for number input
12
+ */
13
+ export declare const ALLOWED_NUMBER_KEYS: readonly ["Backspace", "Delete", "ArrowLeft", "ArrowRight", "Tab", "Enter", "Escape"];
14
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/components/FormikTextField/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAC1C,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C;;GAEG;AACH,eAAO,MAAM,mBAAmB,wDAMtB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,mBAAmB,uFAQtB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Değeri büyük harfe çevirir (gerekirse)
3
+ */
4
+ export declare function transformValue(value: string, type: string, disableUppercase: boolean): string;
5
+ /**
6
+ * Number input için geçerli tuş kontrolü
7
+ */
8
+ export declare function isValidNumberKey(key: string): boolean;
9
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/components/FormikTextField/helpers.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,OAAO,GACxB,MAAM,CAKR;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAErD"}
@@ -0,0 +1,5 @@
1
+ export { FormikTextField } from './FormikTextField';
2
+ export type { FormikTextFieldProps } from './FormikTextField';
3
+ export { transformValue, isValidNumberKey } from './helpers';
4
+ export { DEFAULT_DEBOUNCE_DELAY, DEFAULT_MIN_SEARCH_LENGTH, NON_UPPERCASE_TYPES, ALLOWED_NUMBER_KEYS, } from './constants';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/FormikTextField/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,aAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { FormikTextField } from './FormikTextField';
2
+ export type { FormikTextFieldProps } from './FormikTextField';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC"}