react-native-mantine 0.6.0 → 0.8.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 (225) hide show
  1. package/README.md +38 -6
  2. package/lib/commonjs/components/Anchor/index.js +6 -1
  3. package/lib/commonjs/components/Anchor/index.js.map +1 -1
  4. package/lib/commonjs/components/Badge/index.js +12 -13
  5. package/lib/commonjs/components/Badge/index.js.map +1 -1
  6. package/lib/commonjs/components/Blockquote/index.js +8 -12
  7. package/lib/commonjs/components/Blockquote/index.js.map +1 -1
  8. package/lib/commonjs/components/Button/index.js +5 -6
  9. package/lib/commonjs/components/Button/index.js.map +1 -1
  10. package/lib/commonjs/components/Chip/index.js +8 -9
  11. package/lib/commonjs/components/Chip/index.js.map +1 -1
  12. package/lib/commonjs/components/Code/index.js +13 -8
  13. package/lib/commonjs/components/Code/index.js.map +1 -1
  14. package/lib/commonjs/components/Group/index.js.map +1 -1
  15. package/lib/commonjs/components/Kbd/index.js +7 -8
  16. package/lib/commonjs/components/Kbd/index.js.map +1 -1
  17. package/lib/commonjs/components/List/index.js +6 -5
  18. package/lib/commonjs/components/List/index.js.map +1 -1
  19. package/lib/commonjs/components/Mark/index.js +4 -0
  20. package/lib/commonjs/components/Mark/index.js.map +1 -1
  21. package/lib/commonjs/components/Menu/index.js +12 -15
  22. package/lib/commonjs/components/Menu/index.js.map +1 -1
  23. package/lib/commonjs/components/NavLink/index.js +7 -11
  24. package/lib/commonjs/components/NavLink/index.js.map +1 -1
  25. package/lib/commonjs/components/Notification/index.js +5 -15
  26. package/lib/commonjs/components/Notification/index.js.map +1 -1
  27. package/lib/commonjs/components/Radio/index.js +62 -6
  28. package/lib/commonjs/components/Radio/index.js.map +1 -1
  29. package/lib/commonjs/components/Table/Table.example.js +131 -0
  30. package/lib/commonjs/components/Table/Table.example.js.map +1 -0
  31. package/lib/commonjs/components/Table/index.js +69 -15
  32. package/lib/commonjs/components/Table/index.js.map +1 -1
  33. package/lib/commonjs/components/Title/index.js +4 -0
  34. package/lib/commonjs/components/Title/index.js.map +1 -1
  35. package/lib/commonjs/hooks/index.js +28 -0
  36. package/lib/commonjs/hooks/index.js.map +1 -0
  37. package/lib/commonjs/hooks/use-form/index.js +40 -0
  38. package/lib/commonjs/hooks/use-form/index.js.map +1 -0
  39. package/lib/commonjs/hooks/use-form/types.js +2 -0
  40. package/lib/commonjs/hooks/use-form/types.js.map +1 -0
  41. package/lib/commonjs/hooks/use-form/useForm.js +418 -0
  42. package/lib/commonjs/hooks/use-form/useForm.js.map +1 -0
  43. package/lib/commonjs/hooks/use-form/validators.js +135 -0
  44. package/lib/commonjs/hooks/use-form/validators.js.map +1 -0
  45. package/lib/commonjs/index.js +11 -0
  46. package/lib/commonjs/index.js.map +1 -1
  47. package/lib/commonjs/theme/utils/index.js +26 -0
  48. package/lib/commonjs/theme/utils/index.js.map +1 -0
  49. package/lib/commonjs/theme/utils/withTextWrapper.js +49 -0
  50. package/lib/commonjs/theme/utils/withTextWrapper.js.map +1 -0
  51. package/lib/module/components/Anchor/index.js +6 -1
  52. package/lib/module/components/Anchor/index.js.map +1 -1
  53. package/lib/module/components/Badge/index.js +5 -6
  54. package/lib/module/components/Badge/index.js.map +1 -1
  55. package/lib/module/components/Blockquote/index.js +6 -10
  56. package/lib/module/components/Blockquote/index.js.map +1 -1
  57. package/lib/module/components/Button/index.js +5 -6
  58. package/lib/module/components/Button/index.js.map +1 -1
  59. package/lib/module/components/Chip/index.js +5 -6
  60. package/lib/module/components/Chip/index.js.map +1 -1
  61. package/lib/module/components/Code/index.js +13 -8
  62. package/lib/module/components/Code/index.js.map +1 -1
  63. package/lib/module/components/Group/index.js.map +1 -1
  64. package/lib/module/components/Kbd/index.js +5 -6
  65. package/lib/module/components/Kbd/index.js.map +1 -1
  66. package/lib/module/components/List/index.js +6 -5
  67. package/lib/module/components/List/index.js.map +1 -1
  68. package/lib/module/components/Mark/index.js +4 -0
  69. package/lib/module/components/Mark/index.js.map +1 -1
  70. package/lib/module/components/Menu/index.js +7 -10
  71. package/lib/module/components/Menu/index.js.map +1 -1
  72. package/lib/module/components/NavLink/index.js +5 -9
  73. package/lib/module/components/NavLink/index.js.map +1 -1
  74. package/lib/module/components/Notification/index.js +5 -15
  75. package/lib/module/components/Notification/index.js.map +1 -1
  76. package/lib/module/components/Radio/index.js +64 -8
  77. package/lib/module/components/Radio/index.js.map +1 -1
  78. package/lib/module/components/Table/Table.example.js +128 -0
  79. package/lib/module/components/Table/Table.example.js.map +1 -0
  80. package/lib/module/components/Table/index.js +70 -16
  81. package/lib/module/components/Table/index.js.map +1 -1
  82. package/lib/module/components/Title/index.js +4 -0
  83. package/lib/module/components/Title/index.js.map +1 -1
  84. package/lib/module/hooks/index.js +5 -0
  85. package/lib/module/hooks/index.js.map +1 -0
  86. package/lib/module/hooks/use-form/index.js +6 -0
  87. package/lib/module/hooks/use-form/index.js.map +1 -0
  88. package/lib/module/hooks/use-form/types.js +2 -0
  89. package/lib/module/hooks/use-form/types.js.map +1 -0
  90. package/lib/module/hooks/use-form/useForm.js +414 -0
  91. package/lib/module/hooks/use-form/useForm.js.map +1 -0
  92. package/lib/module/hooks/use-form/validators.js +122 -0
  93. package/lib/module/hooks/use-form/validators.js.map +1 -0
  94. package/lib/module/index.js +1 -0
  95. package/lib/module/index.js.map +1 -1
  96. package/lib/module/theme/utils/index.js +5 -0
  97. package/lib/module/theme/utils/index.js.map +1 -0
  98. package/lib/module/theme/utils/withTextWrapper.js +45 -0
  99. package/lib/module/theme/utils/withTextWrapper.js.map +1 -0
  100. package/lib/typescript/commonjs/src/components/Anchor/index.d.ts +2 -1
  101. package/lib/typescript/commonjs/src/components/Anchor/index.d.ts.map +1 -1
  102. package/lib/typescript/commonjs/src/components/Badge/index.d.ts +2 -1
  103. package/lib/typescript/commonjs/src/components/Badge/index.d.ts.map +1 -1
  104. package/lib/typescript/commonjs/src/components/Blockquote/index.d.ts +2 -1
  105. package/lib/typescript/commonjs/src/components/Blockquote/index.d.ts.map +1 -1
  106. package/lib/typescript/commonjs/src/components/Button/index.d.ts +2 -2
  107. package/lib/typescript/commonjs/src/components/Button/index.d.ts.map +1 -1
  108. package/lib/typescript/commonjs/src/components/Chip/index.d.ts +2 -1
  109. package/lib/typescript/commonjs/src/components/Chip/index.d.ts.map +1 -1
  110. package/lib/typescript/commonjs/src/components/Code/index.d.ts +2 -1
  111. package/lib/typescript/commonjs/src/components/Code/index.d.ts.map +1 -1
  112. package/lib/typescript/commonjs/src/components/Group/index.d.ts +1 -0
  113. package/lib/typescript/commonjs/src/components/Group/index.d.ts.map +1 -1
  114. package/lib/typescript/commonjs/src/components/Kbd/index.d.ts +2 -1
  115. package/lib/typescript/commonjs/src/components/Kbd/index.d.ts.map +1 -1
  116. package/lib/typescript/commonjs/src/components/List/index.d.ts +2 -1
  117. package/lib/typescript/commonjs/src/components/List/index.d.ts.map +1 -1
  118. package/lib/typescript/commonjs/src/components/Mark/index.d.ts +2 -1
  119. package/lib/typescript/commonjs/src/components/Mark/index.d.ts.map +1 -1
  120. package/lib/typescript/commonjs/src/components/Menu/index.d.ts +3 -2
  121. package/lib/typescript/commonjs/src/components/Menu/index.d.ts.map +1 -1
  122. package/lib/typescript/commonjs/src/components/NavLink/index.d.ts +2 -1
  123. package/lib/typescript/commonjs/src/components/NavLink/index.d.ts.map +1 -1
  124. package/lib/typescript/commonjs/src/components/Notification/index.d.ts +2 -1
  125. package/lib/typescript/commonjs/src/components/Notification/index.d.ts.map +1 -1
  126. package/lib/typescript/commonjs/src/components/Radio/index.d.ts +22 -1
  127. package/lib/typescript/commonjs/src/components/Radio/index.d.ts.map +1 -1
  128. package/lib/typescript/commonjs/src/components/Table/Table.example.d.ts +3 -0
  129. package/lib/typescript/commonjs/src/components/Table/Table.example.d.ts.map +1 -0
  130. package/lib/typescript/commonjs/src/components/Table/index.d.ts +7 -2
  131. package/lib/typescript/commonjs/src/components/Table/index.d.ts.map +1 -1
  132. package/lib/typescript/commonjs/src/components/Title/index.d.ts +2 -1
  133. package/lib/typescript/commonjs/src/components/Title/index.d.ts.map +1 -1
  134. package/lib/typescript/commonjs/src/hooks/index.d.ts +3 -0
  135. package/lib/typescript/commonjs/src/hooks/index.d.ts.map +1 -0
  136. package/lib/typescript/commonjs/src/hooks/use-form/index.d.ts +4 -0
  137. package/lib/typescript/commonjs/src/hooks/use-form/index.d.ts.map +1 -0
  138. package/lib/typescript/commonjs/src/hooks/use-form/types.d.ts +119 -0
  139. package/lib/typescript/commonjs/src/hooks/use-form/types.d.ts.map +1 -0
  140. package/lib/typescript/commonjs/src/hooks/use-form/useForm.d.ts +30 -0
  141. package/lib/typescript/commonjs/src/hooks/use-form/useForm.d.ts.map +1 -0
  142. package/lib/typescript/commonjs/src/hooks/use-form/validators.d.ts +41 -0
  143. package/lib/typescript/commonjs/src/hooks/use-form/validators.d.ts.map +1 -0
  144. package/lib/typescript/commonjs/src/index.d.ts +1 -0
  145. package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
  146. package/lib/typescript/commonjs/src/theme/utils/index.d.ts +3 -0
  147. package/lib/typescript/commonjs/src/theme/utils/index.d.ts.map +1 -0
  148. package/lib/typescript/commonjs/src/theme/utils/withTextWrapper.d.ts +41 -0
  149. package/lib/typescript/commonjs/src/theme/utils/withTextWrapper.d.ts.map +1 -0
  150. package/lib/typescript/module/src/components/Anchor/index.d.ts +2 -1
  151. package/lib/typescript/module/src/components/Anchor/index.d.ts.map +1 -1
  152. package/lib/typescript/module/src/components/Badge/index.d.ts +2 -1
  153. package/lib/typescript/module/src/components/Badge/index.d.ts.map +1 -1
  154. package/lib/typescript/module/src/components/Blockquote/index.d.ts +2 -1
  155. package/lib/typescript/module/src/components/Blockquote/index.d.ts.map +1 -1
  156. package/lib/typescript/module/src/components/Button/index.d.ts +2 -2
  157. package/lib/typescript/module/src/components/Button/index.d.ts.map +1 -1
  158. package/lib/typescript/module/src/components/Chip/index.d.ts +2 -1
  159. package/lib/typescript/module/src/components/Chip/index.d.ts.map +1 -1
  160. package/lib/typescript/module/src/components/Code/index.d.ts +2 -1
  161. package/lib/typescript/module/src/components/Code/index.d.ts.map +1 -1
  162. package/lib/typescript/module/src/components/Group/index.d.ts +1 -0
  163. package/lib/typescript/module/src/components/Group/index.d.ts.map +1 -1
  164. package/lib/typescript/module/src/components/Kbd/index.d.ts +2 -1
  165. package/lib/typescript/module/src/components/Kbd/index.d.ts.map +1 -1
  166. package/lib/typescript/module/src/components/List/index.d.ts +2 -1
  167. package/lib/typescript/module/src/components/List/index.d.ts.map +1 -1
  168. package/lib/typescript/module/src/components/Mark/index.d.ts +2 -1
  169. package/lib/typescript/module/src/components/Mark/index.d.ts.map +1 -1
  170. package/lib/typescript/module/src/components/Menu/index.d.ts +3 -2
  171. package/lib/typescript/module/src/components/Menu/index.d.ts.map +1 -1
  172. package/lib/typescript/module/src/components/NavLink/index.d.ts +2 -1
  173. package/lib/typescript/module/src/components/NavLink/index.d.ts.map +1 -1
  174. package/lib/typescript/module/src/components/Notification/index.d.ts +2 -1
  175. package/lib/typescript/module/src/components/Notification/index.d.ts.map +1 -1
  176. package/lib/typescript/module/src/components/Radio/index.d.ts +22 -1
  177. package/lib/typescript/module/src/components/Radio/index.d.ts.map +1 -1
  178. package/lib/typescript/module/src/components/Table/Table.example.d.ts +3 -0
  179. package/lib/typescript/module/src/components/Table/Table.example.d.ts.map +1 -0
  180. package/lib/typescript/module/src/components/Table/index.d.ts +7 -2
  181. package/lib/typescript/module/src/components/Table/index.d.ts.map +1 -1
  182. package/lib/typescript/module/src/components/Title/index.d.ts +2 -1
  183. package/lib/typescript/module/src/components/Title/index.d.ts.map +1 -1
  184. package/lib/typescript/module/src/hooks/index.d.ts +3 -0
  185. package/lib/typescript/module/src/hooks/index.d.ts.map +1 -0
  186. package/lib/typescript/module/src/hooks/use-form/index.d.ts +4 -0
  187. package/lib/typescript/module/src/hooks/use-form/index.d.ts.map +1 -0
  188. package/lib/typescript/module/src/hooks/use-form/types.d.ts +119 -0
  189. package/lib/typescript/module/src/hooks/use-form/types.d.ts.map +1 -0
  190. package/lib/typescript/module/src/hooks/use-form/useForm.d.ts +30 -0
  191. package/lib/typescript/module/src/hooks/use-form/useForm.d.ts.map +1 -0
  192. package/lib/typescript/module/src/hooks/use-form/validators.d.ts +41 -0
  193. package/lib/typescript/module/src/hooks/use-form/validators.d.ts.map +1 -0
  194. package/lib/typescript/module/src/index.d.ts +1 -0
  195. package/lib/typescript/module/src/index.d.ts.map +1 -1
  196. package/lib/typescript/module/src/theme/utils/index.d.ts +3 -0
  197. package/lib/typescript/module/src/theme/utils/index.d.ts.map +1 -0
  198. package/lib/typescript/module/src/theme/utils/withTextWrapper.d.ts +41 -0
  199. package/lib/typescript/module/src/theme/utils/withTextWrapper.d.ts.map +1 -0
  200. package/package.json +1 -1
  201. package/src/components/Anchor/index.tsx +8 -2
  202. package/src/components/Badge/index.tsx +5 -3
  203. package/src/components/Blockquote/index.tsx +6 -5
  204. package/src/components/Button/index.tsx +5 -6
  205. package/src/components/Chip/index.tsx +5 -3
  206. package/src/components/Code/index.tsx +19 -14
  207. package/src/components/Group/index.tsx +1 -0
  208. package/src/components/Kbd/index.tsx +5 -4
  209. package/src/components/List/index.tsx +7 -8
  210. package/src/components/Mark/index.tsx +7 -2
  211. package/src/components/Menu/index.tsx +8 -7
  212. package/src/components/NavLink/index.tsx +6 -4
  213. package/src/components/Notification/index.tsx +6 -15
  214. package/src/components/Radio/index.tsx +99 -8
  215. package/src/components/Table/Table.example.tsx +85 -0
  216. package/src/components/Table/index.tsx +93 -11
  217. package/src/components/Title/index.tsx +7 -2
  218. package/src/hooks/index.ts +2 -0
  219. package/src/hooks/use-form/index.ts +3 -0
  220. package/src/hooks/use-form/types.ts +169 -0
  221. package/src/hooks/use-form/useForm.ts +436 -0
  222. package/src/hooks/use-form/validators.ts +143 -0
  223. package/src/index.tsx +1 -0
  224. package/src/theme/utils/index.ts +2 -0
  225. package/src/theme/utils/withTextWrapper.tsx +58 -0
@@ -0,0 +1,143 @@
1
+ import type { FormValidator } from './types';
2
+
3
+ /**
4
+ * Built-in validators
5
+ */
6
+
7
+ /**
8
+ * Validates that a value is not empty
9
+ */
10
+ export const isNotEmpty = (message = 'This field is required'): FormValidator<any> => {
11
+ return (value: any) => {
12
+ if (value === null || value === undefined || value === '') {
13
+ return message;
14
+ }
15
+ if (Array.isArray(value) && value.length === 0) {
16
+ return message;
17
+ }
18
+ if (typeof value === 'string' && value.trim().length === 0) {
19
+ return message;
20
+ }
21
+ return null;
22
+ };
23
+ };
24
+
25
+ /**
26
+ * Validates minimum length
27
+ */
28
+ export const minLength = (
29
+ min: number,
30
+ message?: string
31
+ ): FormValidator<string> => {
32
+ return (value: string) => {
33
+ if (!value) return null;
34
+ if (value.length < min) {
35
+ return message || `Must be at least ${min} characters`;
36
+ }
37
+ return null;
38
+ };
39
+ };
40
+
41
+ /**
42
+ * Validates maximum length
43
+ */
44
+ export const maxLength = (
45
+ max: number,
46
+ message?: string
47
+ ): FormValidator<string> => {
48
+ return (value: string) => {
49
+ if (!value) return null;
50
+ if (value.length > max) {
51
+ return message || `Must be at most ${max} characters`;
52
+ }
53
+ return null;
54
+ };
55
+ };
56
+
57
+ /**
58
+ * Validates that value matches a pattern
59
+ */
60
+ export const matches = (
61
+ pattern: RegExp,
62
+ message = 'Invalid format'
63
+ ): FormValidator<string> => {
64
+ return (value: string) => {
65
+ if (!value) return null;
66
+ if (!pattern.test(value)) {
67
+ return message;
68
+ }
69
+ return null;
70
+ };
71
+ };
72
+
73
+ /**
74
+ * Validates email format
75
+ */
76
+ export const isEmail = (message = 'Invalid email'): FormValidator<string> => {
77
+ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
78
+ return matches(emailRegex, message);
79
+ };
80
+
81
+ /**
82
+ * Validates minimum value
83
+ */
84
+ export const min = (
85
+ minValue: number,
86
+ message?: string
87
+ ): FormValidator<number> => {
88
+ return (value: number) => {
89
+ if (value === null || value === undefined) return null;
90
+ if (value < minValue) {
91
+ return message || `Must be at least ${minValue}`;
92
+ }
93
+ return null;
94
+ };
95
+ };
96
+
97
+ /**
98
+ * Validates maximum value
99
+ */
100
+ export const max = (
101
+ maxValue: number,
102
+ message?: string
103
+ ): FormValidator<number> => {
104
+ return (value: number) => {
105
+ if (value === null || value === undefined) return null;
106
+ if (value > maxValue) {
107
+ return message || `Must be at most ${maxValue}`;
108
+ }
109
+ return null;
110
+ };
111
+ };
112
+
113
+ /**
114
+ * Validates that value is in a range
115
+ */
116
+ export const inRange = (
117
+ minValue: number,
118
+ maxValue: number,
119
+ message?: string
120
+ ): FormValidator<number> => {
121
+ return (value: number) => {
122
+ if (value === null || value === undefined) return null;
123
+ if (value < minValue || value > maxValue) {
124
+ return message || `Must be between ${minValue} and ${maxValue}`;
125
+ }
126
+ return null;
127
+ };
128
+ };
129
+
130
+ /**
131
+ * Validates that value is in a list
132
+ */
133
+ export const isInArray = <T>(
134
+ array: T[],
135
+ message = 'Invalid value'
136
+ ): FormValidator<T> => {
137
+ return (value: T) => {
138
+ if (!array.includes(value)) {
139
+ return message;
140
+ }
141
+ return null;
142
+ };
143
+ };
package/src/index.tsx CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './theme';
2
2
  export * from './components';
3
+ export * from './hooks';
3
4
  export type * from './theme/theme';
4
5
  export type * from './theme/types';
@@ -0,0 +1,2 @@
1
+ export { rem, em } from './rem';
2
+ export { withTextWrapper, type WithTextWrapperProps } from './withTextWrapper';
@@ -0,0 +1,58 @@
1
+ import type { ReactNode } from 'react';
2
+ import { Text } from '../../components/Text';
3
+ import type { TextProps } from '../../components/Text';
4
+
5
+ /**
6
+ * Conditionally wraps content in a Text component based on the withTextWrapper prop.
7
+ *
8
+ * In React Native, all text must be wrapped in a Text component. However, some
9
+ * components may need flexibility to render with or without this wrapper depending
10
+ * on whether their content is text or other components (like icons, views, etc.).
11
+ *
12
+ * @param children - The content to potentially wrap
13
+ * @param shouldWrap - Whether to wrap the content in a Text component
14
+ * @param textStyle - Optional style to apply to the Text wrapper
15
+ * @param textProps - Optional additional props to pass to the Text component
16
+ * @returns The children wrapped in Text if shouldWrap is true, otherwise just the children
17
+ *
18
+ * @example
19
+ * // Wrap text content
20
+ * withTextWrapper('Hello', true, styles.text)
21
+ *
22
+ * @example
23
+ * // Don't wrap components
24
+ * withTextWrapper(<Icon />, false)
25
+ *
26
+ * @example
27
+ * // Default behavior (wrap)
28
+ * withTextWrapper('Text', true, styles.text, { numberOfLines: 1 })
29
+ */
30
+ export function withTextWrapper(
31
+ children: ReactNode,
32
+ shouldWrap: boolean = true,
33
+ textStyle?: any,
34
+ textProps?: Omit<TextProps, 'children' | 'style'>
35
+ ): ReactNode {
36
+ if (!shouldWrap) {
37
+ return children;
38
+ }
39
+
40
+ return (
41
+ <Text style={textStyle} {...textProps}>
42
+ {children}
43
+ </Text>
44
+ );
45
+ }
46
+
47
+ /**
48
+ * Type helper for components that support the withTextWrapper pattern.
49
+ * Add this to your component props interface.
50
+ */
51
+ export interface WithTextWrapperProps {
52
+ /**
53
+ * If false, children will not be wrapped in a Text component.
54
+ * This is useful when the children contain non-text elements like icons or custom components.
55
+ * @default true
56
+ */
57
+ withTextWrapper?: boolean;
58
+ }