rn-inputforge 0.5.0 → 0.5.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 (277) hide show
  1. package/README.md +236 -0
  2. package/lib/commonjs/a11y/audit.js +72 -0
  3. package/lib/commonjs/a11y/audit.js.map +1 -0
  4. package/lib/commonjs/a11y/index.js +13 -0
  5. package/lib/commonjs/a11y/index.js.map +1 -0
  6. package/lib/commonjs/autofill/index.js +25 -0
  7. package/lib/commonjs/autofill/index.js.map +1 -0
  8. package/lib/commonjs/autofill/profiles.js +199 -0
  9. package/lib/commonjs/autofill/profiles.js.map +1 -0
  10. package/lib/commonjs/components/FieldFlowA11yAudit/FieldFlowA11yAudit.js +99 -0
  11. package/lib/commonjs/components/FieldFlowA11yAudit/FieldFlowA11yAudit.js.map +1 -0
  12. package/lib/commonjs/components/FieldFlowA11yAudit/index.js +13 -0
  13. package/lib/commonjs/components/FieldFlowA11yAudit/index.js.map +1 -0
  14. package/lib/commonjs/components/FieldFlowAuthActions/FieldFlowAuthActions.js +130 -0
  15. package/lib/commonjs/components/FieldFlowAuthActions/FieldFlowAuthActions.js.map +1 -0
  16. package/lib/commonjs/components/FieldFlowAuthActions/index.js +13 -0
  17. package/lib/commonjs/components/FieldFlowAuthActions/index.js.map +1 -0
  18. package/lib/commonjs/components/FieldFlowCompleteness/FieldFlowCompleteness.js +100 -0
  19. package/lib/commonjs/components/FieldFlowCompleteness/FieldFlowCompleteness.js.map +1 -0
  20. package/lib/commonjs/components/FieldFlowCompleteness/index.js +13 -0
  21. package/lib/commonjs/components/FieldFlowCompleteness/index.js.map +1 -0
  22. package/lib/commonjs/components/FieldFlowFormHeader/FieldFlowFormHeader.js +102 -0
  23. package/lib/commonjs/components/FieldFlowFormHeader/FieldFlowFormHeader.js.map +1 -0
  24. package/lib/commonjs/components/FieldFlowFormHeader/index.js +13 -0
  25. package/lib/commonjs/components/FieldFlowFormHeader/index.js.map +1 -0
  26. package/lib/commonjs/components/FieldFlowInfoTip/FieldFlowInfoTip.js +121 -0
  27. package/lib/commonjs/components/FieldFlowInfoTip/FieldFlowInfoTip.js.map +1 -0
  28. package/lib/commonjs/components/FieldFlowInfoTip/index.js +13 -0
  29. package/lib/commonjs/components/FieldFlowInfoTip/index.js.map +1 -0
  30. package/lib/commonjs/components/FieldFlowInlineAlert/FieldFlowInlineAlert.js +142 -0
  31. package/lib/commonjs/components/FieldFlowInlineAlert/FieldFlowInlineAlert.js.map +1 -0
  32. package/lib/commonjs/components/FieldFlowInlineAlert/index.js +13 -0
  33. package/lib/commonjs/components/FieldFlowInlineAlert/index.js.map +1 -0
  34. package/lib/commonjs/components/FieldFlowInput/FieldFlowInput.js +44 -18
  35. package/lib/commonjs/components/FieldFlowInput/FieldFlowInput.js.map +1 -1
  36. package/lib/commonjs/components/FieldFlowInput/styles.js +49 -13
  37. package/lib/commonjs/components/FieldFlowInput/styles.js.map +1 -1
  38. package/lib/commonjs/components/FieldFlowKeyboardToolbar/FieldFlowKeyboardToolbar.js +137 -0
  39. package/lib/commonjs/components/FieldFlowKeyboardToolbar/FieldFlowKeyboardToolbar.js.map +1 -0
  40. package/lib/commonjs/components/FieldFlowKeyboardToolbar/index.js +19 -0
  41. package/lib/commonjs/components/FieldFlowKeyboardToolbar/index.js.map +1 -0
  42. package/lib/commonjs/components/FieldFlowSkeleton/FieldFlowSkeleton.js +101 -0
  43. package/lib/commonjs/components/FieldFlowSkeleton/FieldFlowSkeleton.js.map +1 -0
  44. package/lib/commonjs/components/FieldFlowSkeleton/index.js +13 -0
  45. package/lib/commonjs/components/FieldFlowSkeleton/index.js.map +1 -0
  46. package/lib/commonjs/components/KeyboardAwareFormWrapper/KeyboardAwareFormWrapper.js +6 -4
  47. package/lib/commonjs/components/KeyboardAwareFormWrapper/KeyboardAwareFormWrapper.js.map +1 -1
  48. package/lib/commonjs/hooks/index.js +21 -0
  49. package/lib/commonjs/hooks/index.js.map +1 -1
  50. package/lib/commonjs/hooks/useFieldFlowCompleteness.js +46 -0
  51. package/lib/commonjs/hooks/useFieldFlowCompleteness.js.map +1 -0
  52. package/lib/commonjs/hooks/useFieldFlowSubmitQueue.js +145 -0
  53. package/lib/commonjs/hooks/useFieldFlowSubmitQueue.js.map +1 -0
  54. package/lib/commonjs/hooks/useKeyboardManager.js +15 -0
  55. package/lib/commonjs/hooks/useKeyboardManager.js.map +1 -1
  56. package/lib/commonjs/hooks/useSmartPaste.js +27 -0
  57. package/lib/commonjs/hooks/useSmartPaste.js.map +1 -0
  58. package/lib/commonjs/index.js +144 -0
  59. package/lib/commonjs/index.js.map +1 -1
  60. package/lib/commonjs/paste/index.js +19 -0
  61. package/lib/commonjs/paste/index.js.map +1 -0
  62. package/lib/commonjs/paste/smartPaste.js +113 -0
  63. package/lib/commonjs/paste/smartPaste.js.map +1 -0
  64. package/lib/commonjs/schema/FieldFlowSchemaForm.js +219 -0
  65. package/lib/commonjs/schema/FieldFlowSchemaForm.js.map +1 -0
  66. package/lib/commonjs/schema/index.js +13 -0
  67. package/lib/commonjs/schema/index.js.map +1 -0
  68. package/lib/commonjs/schema/types.js +6 -0
  69. package/lib/commonjs/schema/types.js.map +1 -0
  70. package/lib/commonjs/theme/ThemeProvider.js +65 -4
  71. package/lib/commonjs/theme/ThemeProvider.js.map +1 -1
  72. package/lib/commonjs/theme/appearance.js +93 -0
  73. package/lib/commonjs/theme/appearance.js.map +1 -0
  74. package/lib/commonjs/theme/defaultTheme.js +17 -2
  75. package/lib/commonjs/theme/defaultTheme.js.map +1 -1
  76. package/lib/commonjs/theme/index.js +19 -0
  77. package/lib/commonjs/theme/index.js.map +1 -1
  78. package/lib/commonjs/types/globals.d.js +2 -0
  79. package/lib/commonjs/types/globals.d.js.map +1 -0
  80. package/lib/module/a11y/audit.js +68 -0
  81. package/lib/module/a11y/audit.js.map +1 -0
  82. package/lib/module/a11y/index.js +4 -0
  83. package/lib/module/a11y/index.js.map +1 -0
  84. package/lib/module/autofill/index.js +4 -0
  85. package/lib/module/autofill/index.js.map +1 -0
  86. package/lib/module/autofill/profiles.js +193 -0
  87. package/lib/module/autofill/profiles.js.map +1 -0
  88. package/lib/module/components/FieldFlowA11yAudit/FieldFlowA11yAudit.js +94 -0
  89. package/lib/module/components/FieldFlowA11yAudit/FieldFlowA11yAudit.js.map +1 -0
  90. package/lib/module/components/FieldFlowA11yAudit/index.js +4 -0
  91. package/lib/module/components/FieldFlowA11yAudit/index.js.map +1 -0
  92. package/lib/module/components/FieldFlowAuthActions/FieldFlowAuthActions.js +125 -0
  93. package/lib/module/components/FieldFlowAuthActions/FieldFlowAuthActions.js.map +1 -0
  94. package/lib/module/components/FieldFlowAuthActions/index.js +4 -0
  95. package/lib/module/components/FieldFlowAuthActions/index.js.map +1 -0
  96. package/lib/module/components/FieldFlowCompleteness/FieldFlowCompleteness.js +95 -0
  97. package/lib/module/components/FieldFlowCompleteness/FieldFlowCompleteness.js.map +1 -0
  98. package/lib/module/components/FieldFlowCompleteness/index.js +4 -0
  99. package/lib/module/components/FieldFlowCompleteness/index.js.map +1 -0
  100. package/lib/module/components/FieldFlowFormHeader/FieldFlowFormHeader.js +97 -0
  101. package/lib/module/components/FieldFlowFormHeader/FieldFlowFormHeader.js.map +1 -0
  102. package/lib/module/components/FieldFlowFormHeader/index.js +4 -0
  103. package/lib/module/components/FieldFlowFormHeader/index.js.map +1 -0
  104. package/lib/module/components/FieldFlowInfoTip/FieldFlowInfoTip.js +116 -0
  105. package/lib/module/components/FieldFlowInfoTip/FieldFlowInfoTip.js.map +1 -0
  106. package/lib/module/components/FieldFlowInfoTip/index.js +4 -0
  107. package/lib/module/components/FieldFlowInfoTip/index.js.map +1 -0
  108. package/lib/module/components/FieldFlowInlineAlert/FieldFlowInlineAlert.js +137 -0
  109. package/lib/module/components/FieldFlowInlineAlert/FieldFlowInlineAlert.js.map +1 -0
  110. package/lib/module/components/FieldFlowInlineAlert/index.js +4 -0
  111. package/lib/module/components/FieldFlowInlineAlert/index.js.map +1 -0
  112. package/lib/module/components/FieldFlowInput/FieldFlowInput.js +44 -18
  113. package/lib/module/components/FieldFlowInput/FieldFlowInput.js.map +1 -1
  114. package/lib/module/components/FieldFlowInput/styles.js +49 -13
  115. package/lib/module/components/FieldFlowInput/styles.js.map +1 -1
  116. package/lib/module/components/FieldFlowKeyboardToolbar/FieldFlowKeyboardToolbar.js +131 -0
  117. package/lib/module/components/FieldFlowKeyboardToolbar/FieldFlowKeyboardToolbar.js.map +1 -0
  118. package/lib/module/components/FieldFlowKeyboardToolbar/index.js +4 -0
  119. package/lib/module/components/FieldFlowKeyboardToolbar/index.js.map +1 -0
  120. package/lib/module/components/FieldFlowSkeleton/FieldFlowSkeleton.js +96 -0
  121. package/lib/module/components/FieldFlowSkeleton/FieldFlowSkeleton.js.map +1 -0
  122. package/lib/module/components/FieldFlowSkeleton/index.js +4 -0
  123. package/lib/module/components/FieldFlowSkeleton/index.js.map +1 -0
  124. package/lib/module/components/KeyboardAwareFormWrapper/KeyboardAwareFormWrapper.js +5 -3
  125. package/lib/module/components/KeyboardAwareFormWrapper/KeyboardAwareFormWrapper.js.map +1 -1
  126. package/lib/module/hooks/index.js +3 -0
  127. package/lib/module/hooks/index.js.map +1 -1
  128. package/lib/module/hooks/useFieldFlowCompleteness.js +42 -0
  129. package/lib/module/hooks/useFieldFlowCompleteness.js.map +1 -0
  130. package/lib/module/hooks/useFieldFlowSubmitQueue.js +141 -0
  131. package/lib/module/hooks/useFieldFlowSubmitQueue.js.map +1 -0
  132. package/lib/module/hooks/useKeyboardManager.js +15 -0
  133. package/lib/module/hooks/useKeyboardManager.js.map +1 -1
  134. package/lib/module/hooks/useSmartPaste.js +23 -0
  135. package/lib/module/hooks/useSmartPaste.js.map +1 -0
  136. package/lib/module/index.js +17 -2
  137. package/lib/module/index.js.map +1 -1
  138. package/lib/module/paste/index.js +4 -0
  139. package/lib/module/paste/index.js.map +1 -0
  140. package/lib/module/paste/smartPaste.js +108 -0
  141. package/lib/module/paste/smartPaste.js.map +1 -0
  142. package/lib/module/schema/FieldFlowSchemaForm.js +214 -0
  143. package/lib/module/schema/FieldFlowSchemaForm.js.map +1 -0
  144. package/lib/module/schema/index.js +4 -0
  145. package/lib/module/schema/index.js.map +1 -0
  146. package/lib/module/schema/types.js +4 -0
  147. package/lib/module/schema/types.js.map +1 -0
  148. package/lib/module/theme/ThemeProvider.js +66 -5
  149. package/lib/module/theme/ThemeProvider.js.map +1 -1
  150. package/lib/module/theme/appearance.js +87 -0
  151. package/lib/module/theme/appearance.js.map +1 -0
  152. package/lib/module/theme/defaultTheme.js +17 -2
  153. package/lib/module/theme/defaultTheme.js.map +1 -1
  154. package/lib/module/theme/index.js +1 -0
  155. package/lib/module/theme/index.js.map +1 -1
  156. package/lib/module/types/globals.d.js +2 -0
  157. package/lib/module/types/globals.d.js.map +1 -0
  158. package/lib/typescript/a11y/audit.d.ts +32 -0
  159. package/lib/typescript/a11y/audit.d.ts.map +1 -0
  160. package/lib/typescript/a11y/index.d.ts +3 -0
  161. package/lib/typescript/a11y/index.d.ts.map +1 -0
  162. package/lib/typescript/autofill/index.d.ts +3 -0
  163. package/lib/typescript/autofill/index.d.ts.map +1 -0
  164. package/lib/typescript/autofill/profiles.d.ts +48 -0
  165. package/lib/typescript/autofill/profiles.d.ts.map +1 -0
  166. package/lib/typescript/components/FieldFlowA11yAudit/FieldFlowA11yAudit.d.ts +21 -0
  167. package/lib/typescript/components/FieldFlowA11yAudit/FieldFlowA11yAudit.d.ts.map +1 -0
  168. package/lib/typescript/components/FieldFlowA11yAudit/index.d.ts +3 -0
  169. package/lib/typescript/components/FieldFlowA11yAudit/index.d.ts.map +1 -0
  170. package/lib/typescript/components/FieldFlowAuthActions/FieldFlowAuthActions.d.ts +29 -0
  171. package/lib/typescript/components/FieldFlowAuthActions/FieldFlowAuthActions.d.ts.map +1 -0
  172. package/lib/typescript/components/FieldFlowAuthActions/index.d.ts +3 -0
  173. package/lib/typescript/components/FieldFlowAuthActions/index.d.ts.map +1 -0
  174. package/lib/typescript/components/FieldFlowCompleteness/FieldFlowCompleteness.d.ts +25 -0
  175. package/lib/typescript/components/FieldFlowCompleteness/FieldFlowCompleteness.d.ts.map +1 -0
  176. package/lib/typescript/components/FieldFlowCompleteness/index.d.ts +3 -0
  177. package/lib/typescript/components/FieldFlowCompleteness/index.d.ts.map +1 -0
  178. package/lib/typescript/components/FieldFlowFormHeader/FieldFlowFormHeader.d.ts +23 -0
  179. package/lib/typescript/components/FieldFlowFormHeader/FieldFlowFormHeader.d.ts.map +1 -0
  180. package/lib/typescript/components/FieldFlowFormHeader/index.d.ts +3 -0
  181. package/lib/typescript/components/FieldFlowFormHeader/index.d.ts.map +1 -0
  182. package/lib/typescript/components/FieldFlowInfoTip/FieldFlowInfoTip.d.ts +19 -0
  183. package/lib/typescript/components/FieldFlowInfoTip/FieldFlowInfoTip.d.ts.map +1 -0
  184. package/lib/typescript/components/FieldFlowInfoTip/index.d.ts +3 -0
  185. package/lib/typescript/components/FieldFlowInfoTip/index.d.ts.map +1 -0
  186. package/lib/typescript/components/FieldFlowInlineAlert/FieldFlowInlineAlert.d.ts +22 -0
  187. package/lib/typescript/components/FieldFlowInlineAlert/FieldFlowInlineAlert.d.ts.map +1 -0
  188. package/lib/typescript/components/FieldFlowInlineAlert/index.d.ts +3 -0
  189. package/lib/typescript/components/FieldFlowInlineAlert/index.d.ts.map +1 -0
  190. package/lib/typescript/components/FieldFlowInput/FieldFlowInput.d.ts.map +1 -1
  191. package/lib/typescript/components/FieldFlowInput/styles.d.ts +36 -1
  192. package/lib/typescript/components/FieldFlowInput/styles.d.ts.map +1 -1
  193. package/lib/typescript/components/FieldFlowInput/types.d.ts +18 -0
  194. package/lib/typescript/components/FieldFlowInput/types.d.ts.map +1 -1
  195. package/lib/typescript/components/FieldFlowKeyboardToolbar/FieldFlowKeyboardToolbar.d.ts +30 -0
  196. package/lib/typescript/components/FieldFlowKeyboardToolbar/FieldFlowKeyboardToolbar.d.ts.map +1 -0
  197. package/lib/typescript/components/FieldFlowKeyboardToolbar/index.d.ts +3 -0
  198. package/lib/typescript/components/FieldFlowKeyboardToolbar/index.d.ts.map +1 -0
  199. package/lib/typescript/components/FieldFlowSkeleton/FieldFlowSkeleton.d.ts +21 -0
  200. package/lib/typescript/components/FieldFlowSkeleton/FieldFlowSkeleton.d.ts.map +1 -0
  201. package/lib/typescript/components/FieldFlowSkeleton/index.d.ts +3 -0
  202. package/lib/typescript/components/FieldFlowSkeleton/index.d.ts.map +1 -0
  203. package/lib/typescript/components/KeyboardAwareFormWrapper/KeyboardAwareFormWrapper.d.ts +3 -2
  204. package/lib/typescript/components/KeyboardAwareFormWrapper/KeyboardAwareFormWrapper.d.ts.map +1 -1
  205. package/lib/typescript/hooks/index.d.ts +6 -0
  206. package/lib/typescript/hooks/index.d.ts.map +1 -1
  207. package/lib/typescript/hooks/useFieldFlowCompleteness.d.ts +28 -0
  208. package/lib/typescript/hooks/useFieldFlowCompleteness.d.ts.map +1 -0
  209. package/lib/typescript/hooks/useFieldFlowSubmitQueue.d.ts +45 -0
  210. package/lib/typescript/hooks/useFieldFlowSubmitQueue.d.ts.map +1 -0
  211. package/lib/typescript/hooks/useKeyboardManager.d.ts +6 -0
  212. package/lib/typescript/hooks/useKeyboardManager.d.ts.map +1 -1
  213. package/lib/typescript/hooks/useSmartPaste.d.ts +14 -0
  214. package/lib/typescript/hooks/useSmartPaste.d.ts.map +1 -0
  215. package/lib/typescript/index.d.ts +28 -4
  216. package/lib/typescript/index.d.ts.map +1 -1
  217. package/lib/typescript/paste/index.d.ts +3 -0
  218. package/lib/typescript/paste/index.d.ts.map +1 -0
  219. package/lib/typescript/paste/smartPaste.d.ts +32 -0
  220. package/lib/typescript/paste/smartPaste.d.ts.map +1 -0
  221. package/lib/typescript/schema/FieldFlowSchemaForm.d.ts +28 -0
  222. package/lib/typescript/schema/FieldFlowSchemaForm.d.ts.map +1 -0
  223. package/lib/typescript/schema/index.d.ts +4 -0
  224. package/lib/typescript/schema/index.d.ts.map +1 -0
  225. package/lib/typescript/schema/types.d.ts +43 -0
  226. package/lib/typescript/schema/types.d.ts.map +1 -0
  227. package/lib/typescript/theme/ThemeProvider.d.ts +18 -4
  228. package/lib/typescript/theme/ThemeProvider.d.ts.map +1 -1
  229. package/lib/typescript/theme/appearance.d.ts +19 -0
  230. package/lib/typescript/theme/appearance.d.ts.map +1 -0
  231. package/lib/typescript/theme/defaultTheme.d.ts.map +1 -1
  232. package/lib/typescript/theme/index.d.ts +1 -0
  233. package/lib/typescript/theme/index.d.ts.map +1 -1
  234. package/lib/typescript/types/index.d.ts +26 -0
  235. package/lib/typescript/types/index.d.ts.map +1 -1
  236. package/package.json +2 -2
  237. package/src/a11y/audit.ts +99 -0
  238. package/src/a11y/index.ts +7 -0
  239. package/src/autofill/index.ts +10 -0
  240. package/src/autofill/profiles.ts +224 -0
  241. package/src/components/FieldFlowA11yAudit/FieldFlowA11yAudit.tsx +112 -0
  242. package/src/components/FieldFlowA11yAudit/index.ts +2 -0
  243. package/src/components/FieldFlowAuthActions/FieldFlowAuthActions.tsx +146 -0
  244. package/src/components/FieldFlowAuthActions/index.ts +6 -0
  245. package/src/components/FieldFlowCompleteness/FieldFlowCompleteness.tsx +109 -0
  246. package/src/components/FieldFlowCompleteness/index.ts +2 -0
  247. package/src/components/FieldFlowFormHeader/FieldFlowFormHeader.tsx +106 -0
  248. package/src/components/FieldFlowFormHeader/index.ts +2 -0
  249. package/src/components/FieldFlowInfoTip/FieldFlowInfoTip.tsx +120 -0
  250. package/src/components/FieldFlowInfoTip/index.ts +2 -0
  251. package/src/components/FieldFlowInlineAlert/FieldFlowInlineAlert.tsx +134 -0
  252. package/src/components/FieldFlowInlineAlert/index.ts +2 -0
  253. package/src/components/FieldFlowInput/FieldFlowInput.tsx +71 -13
  254. package/src/components/FieldFlowInput/styles.ts +58 -16
  255. package/src/components/FieldFlowInput/types.ts +21 -0
  256. package/src/components/FieldFlowKeyboardToolbar/FieldFlowKeyboardToolbar.tsx +150 -0
  257. package/src/components/FieldFlowKeyboardToolbar/index.ts +5 -0
  258. package/src/components/FieldFlowSkeleton/FieldFlowSkeleton.tsx +105 -0
  259. package/src/components/FieldFlowSkeleton/index.ts +2 -0
  260. package/src/components/KeyboardAwareFormWrapper/KeyboardAwareFormWrapper.tsx +8 -4
  261. package/src/hooks/index.ts +17 -0
  262. package/src/hooks/useFieldFlowCompleteness.ts +69 -0
  263. package/src/hooks/useFieldFlowSubmitQueue.ts +206 -0
  264. package/src/hooks/useKeyboardManager.ts +26 -0
  265. package/src/hooks/useSmartPaste.ts +33 -0
  266. package/src/index.ts +90 -0
  267. package/src/paste/index.ts +7 -0
  268. package/src/paste/smartPaste.ts +132 -0
  269. package/src/schema/FieldFlowSchemaForm.tsx +274 -0
  270. package/src/schema/index.ts +8 -0
  271. package/src/schema/types.ts +63 -0
  272. package/src/theme/ThemeProvider.tsx +96 -7
  273. package/src/theme/appearance.ts +105 -0
  274. package/src/theme/defaultTheme.ts +11 -0
  275. package/src/theme/index.ts +1 -0
  276. package/src/types/globals.d.ts +2 -0
  277. package/src/types/index.ts +28 -0
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+
3
+ import { useCallback, useEffect, useRef, useState } from 'react';
4
+ function createId() {
5
+ return `ffq_${Date.now()}_${Math.random().toString(36).slice(2, 9)}`;
6
+ }
7
+
8
+ /**
9
+ * Offline-friendly submit queue — persist failed / offline form posts and retry.
10
+ */
11
+ export function useFieldFlowSubmitQueue({
12
+ key,
13
+ storage,
14
+ submit,
15
+ maxAttempts = 5,
16
+ flushOnOnline = true,
17
+ onSuccess,
18
+ onGiveUp
19
+ }) {
20
+ const [queue, setQueue] = useState([]);
21
+ const [isFlushing, setIsFlushing] = useState(false);
22
+ const [isOnline, setIsOnline] = useState(true);
23
+ const queueRef = useRef(queue);
24
+ queueRef.current = queue;
25
+ const hydrated = useRef(false);
26
+ const persist = useCallback(async next => {
27
+ setQueue(next);
28
+ queueRef.current = next;
29
+ if (!storage) return;
30
+ if (next.length === 0) await storage.removeItem(key);else await storage.setItem(key, JSON.stringify(next));
31
+ }, [storage, key]);
32
+ useEffect(() => {
33
+ let cancelled = false;
34
+ (async () => {
35
+ if (!storage) {
36
+ hydrated.current = true;
37
+ return;
38
+ }
39
+ try {
40
+ const raw = await storage.getItem(key);
41
+ if (cancelled || !raw) {
42
+ hydrated.current = true;
43
+ return;
44
+ }
45
+ const parsed = JSON.parse(raw);
46
+ if (!cancelled && Array.isArray(parsed)) {
47
+ setQueue(parsed);
48
+ queueRef.current = parsed;
49
+ }
50
+ } catch {
51
+ /* ignore corrupt */
52
+ } finally {
53
+ hydrated.current = true;
54
+ }
55
+ })();
56
+ return () => {
57
+ cancelled = true;
58
+ };
59
+ }, [storage, key]);
60
+ useEffect(() => {
61
+ // NetInfo-free: use RN global if present, else assume online
62
+
63
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
64
+ const NetInfo = globalThis.NetInfo;
65
+ if (!NetInfo?.addEventListener) return;
66
+ const sub = NetInfo.addEventListener(state => {
67
+ const online = state.isConnected !== false;
68
+ setIsOnline(online);
69
+ });
70
+ NetInfo.fetch?.().then(s => setIsOnline(s.isConnected !== false)).catch(() => undefined);
71
+ return () => sub?.remove();
72
+ }, []);
73
+ const flush = useCallback(async () => {
74
+ if (isFlushing) return;
75
+ setIsFlushing(true);
76
+ try {
77
+ let next = [...queueRef.current];
78
+ while (next.length > 0) {
79
+ const job = next[0];
80
+ try {
81
+ const result = await submit(job.payload);
82
+ if (result === false) throw new Error('Submit returned false');
83
+ onSuccess?.(job);
84
+ next = next.slice(1);
85
+ await persist(next);
86
+ } catch (err) {
87
+ const message = err instanceof Error ? err.message : 'Submit failed';
88
+ const updated = {
89
+ ...job,
90
+ attempts: job.attempts + 1,
91
+ lastError: message
92
+ };
93
+ if (updated.attempts >= maxAttempts) {
94
+ onGiveUp?.(updated);
95
+ next = next.slice(1);
96
+ } else {
97
+ next = [updated, ...next.slice(1)];
98
+ }
99
+ await persist(next);
100
+ break;
101
+ }
102
+ }
103
+ } finally {
104
+ setIsFlushing(false);
105
+ }
106
+ }, [isFlushing, submit, persist, maxAttempts, onSuccess, onGiveUp]);
107
+ useEffect(() => {
108
+ if (!flushOnOnline || !isOnline || !hydrated.current) return;
109
+ if (queueRef.current.length === 0) return;
110
+ void flush();
111
+ }, [isOnline, flushOnOnline, flush]);
112
+ const enqueue = useCallback(async payload => {
113
+ const id = createId();
114
+ const job = {
115
+ id,
116
+ payload,
117
+ createdAt: Date.now(),
118
+ attempts: 0
119
+ };
120
+ await persist([...queueRef.current, job]);
121
+ if (isOnline) void flush();
122
+ return id;
123
+ }, [persist, isOnline, flush]);
124
+ const clear = useCallback(async () => {
125
+ await persist([]);
126
+ }, [persist]);
127
+ const remove = useCallback(async id => {
128
+ await persist(queueRef.current.filter(j => j.id !== id));
129
+ }, [persist]);
130
+ return {
131
+ queue,
132
+ pendingCount: queue.length,
133
+ isFlushing,
134
+ isOnline,
135
+ enqueue,
136
+ flush,
137
+ clear,
138
+ remove
139
+ };
140
+ }
141
+ //# sourceMappingURL=useFieldFlowSubmitQueue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useEffect","useRef","useState","createId","Date","now","Math","random","toString","slice","useFieldFlowSubmitQueue","key","storage","submit","maxAttempts","flushOnOnline","onSuccess","onGiveUp","queue","setQueue","isFlushing","setIsFlushing","isOnline","setIsOnline","queueRef","current","hydrated","persist","next","length","removeItem","setItem","JSON","stringify","cancelled","raw","getItem","parsed","parse","Array","isArray","NetInfo","globalThis","addEventListener","sub","state","online","isConnected","fetch","then","s","catch","undefined","remove","flush","job","result","payload","Error","err","message","updated","attempts","lastError","enqueue","id","createdAt","clear","filter","j","pendingCount"],"sourceRoot":"../../../src","sources":["hooks/useFieldFlowSubmitQueue.ts"],"mappings":"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","ignoreList":[]}
@@ -47,6 +47,17 @@ export function useKeyboardManager({
47
47
  onSubmit?.();
48
48
  }
49
49
  }, [order, focusField, onSubmit]);
50
+ const focusPrevious = useCallback(id => {
51
+ const currentIndex = order.indexOf(id);
52
+ const prevId = order[currentIndex - 1];
53
+ if (prevId) focusField(prevId);
54
+ }, [order, focusField]);
55
+ const getFieldIndex = useCallback(id => order.indexOf(id), [order]);
56
+ const canGoPrevious = useCallback(id => order.indexOf(id) > 0, [order]);
57
+ const canGoNext = useCallback(id => {
58
+ const i = order.indexOf(id);
59
+ return i >= 0 && i < order.length - 1;
60
+ }, [order]);
50
61
  const getReturnKeyType = useCallback(id => {
51
62
  const isLast = order.indexOf(id) === order.length - 1;
52
63
  return isLast ? 'done' : 'next';
@@ -55,7 +66,11 @@ export function useKeyboardManager({
55
66
  registerField,
56
67
  unregisterField,
57
68
  focusNext,
69
+ focusPrevious,
58
70
  focusField,
71
+ getFieldIndex,
72
+ canGoPrevious,
73
+ canGoNext,
59
74
  scrollViewRef,
60
75
  getReturnKeyType,
61
76
  onSubmit: () => onSubmit?.()
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useRef","useKeyboardManager","order","onSubmit","scrollOffset","fields","Map","scrollViewRef","registerField","id","ref","offsetY","current","set","unregisterField","delete","scrollToField","field","get","undefined","scrollTo","y","Math","max","animated","focusField","focus","focusNext","currentIndex","indexOf","nextId","blur","getReturnKeyType","isLast","length"],"sourceRoot":"../../../src","sources":["hooks/useKeyboardManager.ts"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,MAAM,QAAQ,OAAO;AAgC3C;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAAC;EACjCC,KAAK;EACLC,QAAQ;EACRC,YAAY,GAAG;AACU,CAAC,EAA4B;EACtD,MAAMC,MAAM,GAAGL,MAAM,CAAoC,IAAIM,GAAG,CAAC,CAAC,CAAC;EACnE,MAAMC,aAAa,GAAGP,MAAM,CAAa,IAAI,CAAC;EAE9C,MAAMQ,aAAa,GAAGT,WAAW,CAAC,CAACU,EAAU,EAAEC,GAAsC,EAAEC,OAAgB,KAAK;IAC1GN,MAAM,CAACO,OAAO,CAACC,GAAG,CAACJ,EAAE,EAAE;MAAEC,GAAG;MAAEC;IAAQ,CAAC,CAAC;EAC1C,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMG,eAAe,GAAGf,WAAW,CAAEU,EAAU,IAAK;IAClDJ,MAAM,CAACO,OAAO,CAACG,MAAM,CAACN,EAAE,CAAC;EAC3B,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMO,aAAa,GAAGjB,WAAW,CAC9BU,EAAU,IAAK;IACd,MAAMQ,KAAK,GAAGZ,MAAM,CAACO,OAAO,CAACM,GAAG,CAACT,EAAE,CAAC;IACpC,IAAIQ,KAAK,EAAEN,OAAO,KAAKQ,SAAS,IAAIZ,aAAa,CAACK,OAAO,EAAE;MACzDL,aAAa,CAACK,OAAO,CAACQ,QAAQ,CAAC;QAAEC,CAAC,EAAEC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEN,KAAK,CAACN,OAAO,GAAGP,YAAY,CAAC;QAAEoB,QAAQ,EAAE;MAAK,CAAC,CAAC;IAClG;EACF,CAAC,EACD,CAACpB,YAAY,CACf,CAAC;EAED,MAAMqB,UAAU,GAAG1B,WAAW,CAC3BU,EAAU,IAAK;IACd,MAAMQ,KAAK,GAAGZ,MAAM,CAACO,OAAO,CAACM,GAAG,CAACT,EAAE,CAAC;IACpCQ,KAAK,EAAEP,GAAG,CAACE,OAAO,EAAEc,KAAK,CAAC,CAAC;IAC3BV,aAAa,CAACP,EAAE,CAAC;EACnB,CAAC,EACD,CAACO,aAAa,CAChB,CAAC;EAED,MAAMW,SAAS,GAAG5B,WAAW,CAC1BU,EAAU,IAAK;IACd,MAAMmB,YAAY,GAAG1B,KAAK,CAAC2B,OAAO,CAACpB,EAAE,CAAC;IACtC,MAAMqB,MAAM,GAAG5B,KAAK,CAAC0B,YAAY,GAAG,CAAC,CAAC;IACtC,IAAIE,MAAM,EAAE;MACVL,UAAU,CAACK,MAAM,CAAC;IACpB,CAAC,MAAM;MACLzB,MAAM,CAACO,OAAO,CAACM,GAAG,CAACT,EAAE,CAAC,EAAEC,GAAG,CAACE,OAAO,EAAEmB,IAAI,CAAC,CAAC;MAC3C5B,QAAQ,GAAG,CAAC;IACd;EACF,CAAC,EACD,CAACD,KAAK,EAAEuB,UAAU,EAAEtB,QAAQ,CAC9B,CAAC;EAED,MAAM6B,gBAAgB,GAAGjC,WAAW,CACjCU,EAAU,IAAsB;IAC/B,MAAMwB,MAAM,GAAG/B,KAAK,CAAC2B,OAAO,CAACpB,EAAE,CAAC,KAAKP,KAAK,CAACgC,MAAM,GAAG,CAAC;IACrD,OAAOD,MAAM,GAAG,MAAM,GAAG,MAAM;EACjC,CAAC,EACD,CAAC/B,KAAK,CACR,CAAC;EAED,OAAO;IACLM,aAAa;IACbM,eAAe;IACfa,SAAS;IACTF,UAAU;IACVlB,aAAa;IACbyB,gBAAgB;IAChB7B,QAAQ,EAAEA,CAAA,KAAMA,QAAQ,GAAG;EAC7B,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useRef","useKeyboardManager","order","onSubmit","scrollOffset","fields","Map","scrollViewRef","registerField","id","ref","offsetY","current","set","unregisterField","delete","scrollToField","field","get","undefined","scrollTo","y","Math","max","animated","focusField","focus","focusNext","currentIndex","indexOf","nextId","blur","focusPrevious","prevId","getFieldIndex","canGoPrevious","canGoNext","i","length","getReturnKeyType","isLast"],"sourceRoot":"../../../src","sources":["hooks/useKeyboardManager.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ import { useCallback } from 'react';
4
+ import { applySmartPaste, routeSmartPaste } from '../paste/smartPaste';
5
+ /**
6
+ * Hook helper for smart paste — call `handlePaste(text)` from Clipboard or a paste event.
7
+ */
8
+ export function useSmartPaste({
9
+ targets,
10
+ minConfidence = 0.7,
11
+ onRouted
12
+ }) {
13
+ const handlePaste = useCallback(text => {
14
+ const result = applySmartPaste(text, targets, minConfidence);
15
+ onRouted?.(result);
16
+ return result;
17
+ }, [targets, minConfidence, onRouted]);
18
+ return {
19
+ handlePaste,
20
+ routeSmartPaste
21
+ };
22
+ }
23
+ //# sourceMappingURL=useSmartPaste.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","applySmartPaste","routeSmartPaste","useSmartPaste","targets","minConfidence","onRouted","handlePaste","text","result"],"sourceRoot":"../../../src","sources":["hooks/useSmartPaste.ts"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,OAAO;AACnC,SACEC,eAAe,EACfC,eAAe,QAGV,qBAAqB;AAQ5B;AACA;AACA;AACA,OAAO,SAASC,aAAaA,CAAC;EAC5BC,OAAO;EACPC,aAAa,GAAG,GAAG;EACnBC;AACoB,CAAC,EAAE;EACvB,MAAMC,WAAW,GAAGP,WAAW,CAC5BQ,IAAY,IAAK;IAChB,MAAMC,MAAM,GAAGR,eAAe,CAACO,IAAI,EAAEJ,OAAO,EAAEC,aAAa,CAAC;IAC5DC,QAAQ,GAAGG,MAAM,CAAC;IAClB,OAAOA,MAAM;EACf,CAAC,EACD,CAACL,OAAO,EAAEC,aAAa,EAAEC,QAAQ,CACnC,CAAC;EAED,OAAO;IAAEC,WAAW;IAAEL;EAAgB,CAAC;AACzC","ignoreList":[]}
@@ -27,14 +27,29 @@ export { FieldFlowSlider } from './components/FieldFlowSlider';
27
27
  export { FieldFlowNumberStepper } from './components/FieldFlowNumberStepper';
28
28
  export { FieldFlowCreditCard } from './components/FieldFlowCreditCard';
29
29
  export { FieldFlowSignature } from './components/FieldFlowSignature';
30
+ export { FieldFlowCompleteness } from './components/FieldFlowCompleteness';
31
+ export { FieldFlowAuthActions } from './components/FieldFlowAuthActions';
32
+ export { FieldFlowKeyboardToolbar, FIELD_FLOW_KEYBOARD_TOOLBAR_ID } from './components/FieldFlowKeyboardToolbar';
33
+ export { FieldFlowA11yAudit } from './components/FieldFlowA11yAudit';
34
+ export { FieldFlowInlineAlert } from './components/FieldFlowInlineAlert';
35
+ export { FieldFlowSkeleton } from './components/FieldFlowSkeleton';
36
+ export { FieldFlowFormHeader } from './components/FieldFlowFormHeader';
37
+ export { FieldFlowInfoTip } from './components/FieldFlowInfoTip';
38
+ export { FieldFlowSchemaForm } from './schema';
30
39
  // Adapters (optional peers: react-hook-form)
31
40
  export { FieldFlowController, FieldFlowTagsController, mapRhfToFieldFlowProps } from './adapters';
32
41
  // Theming
33
- export { FieldFlowThemeProvider, useFieldFlowTheme, defaultTheme, darkTheme, themePresets, getThemePreset } from './theme';
42
+ export { FieldFlowThemeProvider, useFieldFlowTheme, defaultTheme, darkTheme, themePresets, getThemePreset, applyAppearance, defaultAppearance, surfaceShadow } from './theme';
34
43
  // Motion
35
44
  export { useFieldMotion, useReducedMotion } from './motion';
36
45
  // Hooks
37
- export { useFieldFlowForm, useKeyboardManager, useFieldState, useFormIntelligence, useFieldFlowArray, useFieldFlowDraft, useFieldFlowSteps, useFieldFlowDirtyGuard } from './hooks';
46
+ export { useFieldFlowForm, useKeyboardManager, useFieldState, useFormIntelligence, useFieldFlowArray, useFieldFlowDraft, useFieldFlowSteps, useFieldFlowDirtyGuard, useFieldFlowCompleteness, useFieldFlowSubmitQueue, useSmartPaste } from './hooks';
47
+ // Autofill
48
+ export { getAutofillProps, autofillRoleFromFieldType, autofillProfiles } from './autofill';
49
+ // Smart paste
50
+ export { routeSmartPaste, applySmartPaste } from './paste';
51
+ // A11y audit
52
+ export { runA11yAudit } from './a11y';
38
53
  // i18n
39
54
  export { validationMessageCatalogs, getValidationMessages, createValidationMessages } from './i18n';
40
55
  // Phone helpers
@@ -1 +1 @@
1
- {"version":3,"names":["FieldFlowInput","DescriptionField","ChatInput","KeyboardAwareFormWrapper","FieldFlowDropdown","FieldFlowOTP","FieldFlowMaskedInput","FieldFlowCheckbox","FieldFlowRadio","FieldFlowSwitch","FieldFlowDateTimePicker","FieldFlowAffordance","FieldFlowDraftBanner","FieldFlowTags","FieldFlowPasswordStrength","FieldFlowSection","FieldFlowSegmented","FieldFlowStepper","FieldFlowPhone","FieldFlowUpload","FieldFlowTypeahead","FieldFlowRating","FieldFlowSlider","FieldFlowNumberStepper","FieldFlowCreditCard","FieldFlowSignature","FieldFlowController","FieldFlowTagsController","mapRhfToFieldFlowProps","FieldFlowThemeProvider","useFieldFlowTheme","defaultTheme","darkTheme","themePresets","getThemePreset","useFieldMotion","useReducedMotion","useFieldFlowForm","useKeyboardManager","useFieldState","useFormIntelligence","useFieldFlowArray","useFieldFlowDraft","useFieldFlowSteps","useFieldFlowDirtyGuard","validationMessageCatalogs","getValidationMessages","createValidationMessages","DEFAULT_COUNTRY_DIALS","findCountryByCode","composeE164","useValidation","runRules","isValidEmail","isValidNumber","isValidPhone","requiredValidator","emailValidator","numberValidator","phoneValidator","minLengthValidator","maxLengthValidator","patternValidator","zodToFormErrors","zodFormValidate","createZodSubmitGuard","fieldRulesFromZodString","applyMask","applyPattern","formatMasked","unmask","digitsOnly","applyPhoneMask","applyCardMask","applyDateMask","applyCurrencyMask","applyEmailDomainSuggestion","applyPhoneDialSuggestion","applyCurrencySymbolSuggestion","applyAffordanceSuggestion","resolveAffordanceChips","emailDomainsToChips","affordanceKindFromFieldType","DEFAULT_EMAIL_DOMAINS","DEFAULT_PHONE_DIAL_CODES","DEFAULT_CURRENCY_SYMBOLS","evaluatePasswordStrength","DEFAULT_PASSWORD_RULES","PASSWORD_STRENGTH_COLORS","focusFirstError","announceForAccessibility","buildValidationAnnouncement","setAccessibilityFocus","FieldFlowIcon","renderFieldFlowIcon"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA;AACA,SAASA,cAAc,QAAQ,6BAA6B;AAG5D,SAASC,gBAAgB,QAAQ,+BAA+B;AAGhE,SAASC,SAAS,QAAQ,wBAAwB;AAGlD,SAASC,wBAAwB,QAAQ,uCAAuC;AAGhF,SAASC,iBAAiB,QAAQ,gCAAgC;AAQlE,SAASC,YAAY,QAAQ,2BAA2B;AAGxD,SAASC,oBAAoB,QAAQ,mCAAmC;AAGxE,SAASC,iBAAiB,QAAQ,gCAAgC;AAGlE,SAASC,cAAc,QAAQ,6BAA6B;AAG5D,SAASC,eAAe,QAAQ,8BAA8B;AAG9D,SAASC,uBAAuB,QAAQ,sCAAsC;AAM9E,SAASC,mBAAmB,QAAQ,kCAAkC;AAGtE,SAASC,oBAAoB,QAAQ,mCAAmC;AAGxE,SAASC,aAAa,QAAQ,4BAA4B;AAG1D,SAASC,yBAAyB,QAAQ,wCAAwC;AAGlF,SAASC,gBAAgB,QAAQ,+BAA+B;AAGhE,SAASC,kBAAkB,QAAQ,iCAAiC;AAGpE,SAASC,gBAAgB,QAAQ,+BAA+B;AAGhE,SAASC,cAAc,QAAQ,6BAA6B;AAG5D,SAASC,eAAe,QAAQ,8BAA8B;AAO9D,SAASC,kBAAkB,QAAQ,iCAAiC;AAGpE,SAASC,eAAe,QAAQ,8BAA8B;AAG9D,SAASC,eAAe,QAAQ,8BAA8B;AAG9D,SAASC,sBAAsB,QAAQ,qCAAqC;AAG5E,SAASC,mBAAmB,QAAQ,kCAAkC;AAGtE,SAASC,kBAAkB,QAAQ,iCAAiC;AAQpE;AACA,SACEC,mBAAmB,EACnBC,uBAAuB,EACvBC,sBAAsB,QACjB,YAAY;AAMnB;AACA,SACEC,sBAAsB,EACtBC,iBAAiB,EACjBC,YAAY,EACZC,SAAS,EACTC,YAAY,EACZC,cAAc,QACT,SAAS;AAGhB;AACA,SAASC,cAAc,EAAEC,gBAAgB,QAAQ,UAAU;AAG3D;AACA,SACEC,gBAAgB,EAChBC,kBAAkB,EAClBC,aAAa,EACbC,mBAAmB,EACnBC,iBAAiB,EACjBC,iBAAiB,EACjBC,iBAAiB,EACjBC,sBAAsB,QACjB,SAAS;AA6BhB;AACA,SACEC,yBAAyB,EACzBC,qBAAqB,EACrBC,wBAAwB,QACnB,QAAQ;AAGf;AACA,SACEC,qBAAqB,EACrBC,iBAAiB,EACjBC,WAAW,QACN,wBAAwB;AAG/B;AACA,SACEC,aAAa,EACbC,QAAQ,EACRC,YAAY,EACZC,aAAa,EACbC,YAAY,EACZC,iBAAiB,EACjBC,cAAc,EACdC,eAAe,EACfC,cAAc,EACdC,kBAAkB,EAClBC,kBAAkB,EAClBC,gBAAgB,EAChBC,eAAe,EACfC,eAAe,EACfC,oBAAoB,EACpBC,uBAAuB,QAClB,cAAc;AAGrB;AACA,SACEC,SAAS,EACTC,YAAY,EACZC,YAAY,EACZC,MAAM,EACNC,UAAU,EACVC,cAAc,EACdC,aAAa,EACbC,aAAa,EACbC,iBAAiB,QACZ,eAAe;AAGtB;AACA,SACEC,0BAA0B,EAC1BC,wBAAwB,EACxBC,6BAA6B,EAC7BC,yBAAyB,EACzBC,sBAAsB,EACtBC,mBAAmB,EACnBC,2BAA2B,EAC3BC,qBAAqB,EACrBC,wBAAwB,EACxBC,wBAAwB,QACnB,oBAAoB;AAG3B;AACA,SACEC,wBAAwB,EACxBC,sBAAsB,EACtBC,wBAAwB,QACnB,0BAA0B;AAOjC;AACA,SACEC,eAAe,EACfC,wBAAwB,EACxBC,2BAA2B,EAC3BC,qBAAqB,QAChB,gBAAgB;AAQvB;AACA,SAASC,aAAa,EAAEC,mBAAmB,QAAQ,SAAS;;AAG5D","ignoreList":[]}
1
+ {"version":3,"names":["FieldFlowInput","DescriptionField","ChatInput","KeyboardAwareFormWrapper","FieldFlowDropdown","FieldFlowOTP","FieldFlowMaskedInput","FieldFlowCheckbox","FieldFlowRadio","FieldFlowSwitch","FieldFlowDateTimePicker","FieldFlowAffordance","FieldFlowDraftBanner","FieldFlowTags","FieldFlowPasswordStrength","FieldFlowSection","FieldFlowSegmented","FieldFlowStepper","FieldFlowPhone","FieldFlowUpload","FieldFlowTypeahead","FieldFlowRating","FieldFlowSlider","FieldFlowNumberStepper","FieldFlowCreditCard","FieldFlowSignature","FieldFlowCompleteness","FieldFlowAuthActions","FieldFlowKeyboardToolbar","FIELD_FLOW_KEYBOARD_TOOLBAR_ID","FieldFlowA11yAudit","FieldFlowInlineAlert","FieldFlowSkeleton","FieldFlowFormHeader","FieldFlowInfoTip","FieldFlowSchemaForm","FieldFlowController","FieldFlowTagsController","mapRhfToFieldFlowProps","FieldFlowThemeProvider","useFieldFlowTheme","defaultTheme","darkTheme","themePresets","getThemePreset","applyAppearance","defaultAppearance","surfaceShadow","useFieldMotion","useReducedMotion","useFieldFlowForm","useKeyboardManager","useFieldState","useFormIntelligence","useFieldFlowArray","useFieldFlowDraft","useFieldFlowSteps","useFieldFlowDirtyGuard","useFieldFlowCompleteness","useFieldFlowSubmitQueue","useSmartPaste","getAutofillProps","autofillRoleFromFieldType","autofillProfiles","routeSmartPaste","applySmartPaste","runA11yAudit","validationMessageCatalogs","getValidationMessages","createValidationMessages","DEFAULT_COUNTRY_DIALS","findCountryByCode","composeE164","useValidation","runRules","isValidEmail","isValidNumber","isValidPhone","requiredValidator","emailValidator","numberValidator","phoneValidator","minLengthValidator","maxLengthValidator","patternValidator","zodToFormErrors","zodFormValidate","createZodSubmitGuard","fieldRulesFromZodString","applyMask","applyPattern","formatMasked","unmask","digitsOnly","applyPhoneMask","applyCardMask","applyDateMask","applyCurrencyMask","applyEmailDomainSuggestion","applyPhoneDialSuggestion","applyCurrencySymbolSuggestion","applyAffordanceSuggestion","resolveAffordanceChips","emailDomainsToChips","affordanceKindFromFieldType","DEFAULT_EMAIL_DOMAINS","DEFAULT_PHONE_DIAL_CODES","DEFAULT_CURRENCY_SYMBOLS","evaluatePasswordStrength","DEFAULT_PASSWORD_RULES","PASSWORD_STRENGTH_COLORS","focusFirstError","announceForAccessibility","buildValidationAnnouncement","setAccessibilityFocus","FieldFlowIcon","renderFieldFlowIcon"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export { routeSmartPaste, applySmartPaste } from './smartPaste';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["routeSmartPaste","applySmartPaste"],"sourceRoot":"../../../src","sources":["paste/index.ts"],"mappings":";;AAAA,SAASA,eAAe,EAAEC,eAAe,QAAQ,cAAc","ignoreList":[]}
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+
3
+ function digitsOnly(s) {
4
+ return s.replace(/\D/g, '');
5
+ }
6
+
7
+ /**
8
+ * Classify clipboard / pasted text and extract a structured value.
9
+ * Pure — no Clipboard permission required; call from `onPaste` or after reading clipboard.
10
+ */
11
+ export function routeSmartPaste(text) {
12
+ const trimmed = text.trim();
13
+ if (!trimmed) {
14
+ return {
15
+ kind: 'unknown',
16
+ value: '',
17
+ confidence: 0
18
+ };
19
+ }
20
+ const digits = digitsOnly(trimmed);
21
+
22
+ // OTP: 4–8 digits, little else
23
+ if (/^\d{4,8}$/.test(digits) && digits.length === trimmed.replace(/\s/g, '').length) {
24
+ return {
25
+ kind: 'otp',
26
+ value: digits,
27
+ raw: digits,
28
+ confidence: 0.95
29
+ };
30
+ }
31
+
32
+ // Card: 13–19 digits (spaces/dashes ok)
33
+ if (digits.length >= 13 && digits.length <= 19 && /^[\d\s-]+$/.test(trimmed)) {
34
+ return {
35
+ kind: 'card',
36
+ value: digits,
37
+ raw: digits,
38
+ confidence: 0.9
39
+ };
40
+ }
41
+
42
+ // Email
43
+ if (/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(trimmed)) {
44
+ return {
45
+ kind: 'email',
46
+ value: trimmed.toLowerCase(),
47
+ confidence: 0.98
48
+ };
49
+ }
50
+
51
+ // URL
52
+ if (/^https?:\/\//i.test(trimmed) || /^www\./i.test(trimmed)) {
53
+ return {
54
+ kind: 'url',
55
+ value: trimmed.startsWith('http') ? trimmed : `https://${trimmed}`,
56
+ confidence: 0.9
57
+ };
58
+ }
59
+
60
+ // Phone: 7–15 digits with optional + and punctuation
61
+ if (digits.length >= 7 && digits.length <= 15 && /^[+]?[\d\s().-]{7,22}$/.test(trimmed) && !/[a-zA-Z]{3,}/.test(trimmed)) {
62
+ return {
63
+ kind: 'phone',
64
+ value: trimmed,
65
+ raw: digits,
66
+ confidence: 0.85
67
+ };
68
+ }
69
+
70
+ // Multi-line address-ish
71
+ const lines = trimmed.split(/\r?\n/).map(l => l.trim()).filter(Boolean);
72
+ if (lines.length >= 2) {
73
+ const postalMatch = trimmed.match(/\b([A-Z]{1,2}\d[A-Z\d]?\s*\d[A-Z]{2}|\d{5}(?:-\d{4})?)\b/i);
74
+ const address = {
75
+ street: lines[0],
76
+ city: lines[1]?.replace(/,.*$/, '').trim(),
77
+ state: lines[1]?.includes(',') ? lines[1].split(',')[1]?.trim().split(/\s+/)[0] : undefined,
78
+ postalCode: postalMatch?.[1],
79
+ raw: trimmed
80
+ };
81
+ return {
82
+ kind: 'address',
83
+ value: lines[0],
84
+ address,
85
+ confidence: 0.7
86
+ };
87
+ }
88
+ return {
89
+ kind: 'unknown',
90
+ value: trimmed,
91
+ confidence: 0.2
92
+ };
93
+ }
94
+ /**
95
+ * Route paste into field setters. Returns true if a handler ran with confidence ≥ minConfidence.
96
+ */
97
+ export function applySmartPaste(text, targets, minConfidence = 0.7) {
98
+ const result = routeSmartPaste(text);
99
+ if (result.confidence < minConfidence) return result;
100
+ if (result.kind === 'address' && result.address && targets.addressFields) {
101
+ targets.addressFields(result.address);
102
+ return result;
103
+ }
104
+ const handler = targets[result.kind];
105
+ if (handler) handler(result);
106
+ return result;
107
+ }
108
+ //# sourceMappingURL=smartPaste.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["digitsOnly","s","replace","routeSmartPaste","text","trimmed","trim","kind","value","confidence","digits","test","length","raw","toLowerCase","startsWith","lines","split","map","l","filter","Boolean","postalMatch","match","address","street","city","state","includes","undefined","postalCode","applySmartPaste","targets","minConfidence","result","addressFields","handler"],"sourceRoot":"../../../src","sources":["paste/smartPaste.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,214 @@
1
+ "use strict";
2
+
3
+ import React, { useMemo, useState } from 'react';
4
+ import { View } from 'react-native';
5
+ import { FieldFlowInput } from '../components/FieldFlowInput';
6
+ import { FieldFlowCheckbox } from '../components/FieldFlowCheckbox';
7
+ import { FieldFlowSwitch } from '../components/FieldFlowSwitch';
8
+ import { FieldFlowRadio } from '../components/FieldFlowRadio';
9
+ import { FieldFlowSegmented } from '../components/FieldFlowSegmented';
10
+ import { FieldFlowDropdown } from '../components/FieldFlowDropdown';
11
+ import { FieldFlowTags } from '../components/FieldFlowTags';
12
+ import { FieldFlowRating } from '../components/FieldFlowRating';
13
+ import { FieldFlowSlider } from '../components/FieldFlowSlider';
14
+ import { FieldFlowNumberStepper } from '../components/FieldFlowNumberStepper';
15
+ import { FieldFlowSection } from '../components/FieldFlowSection';
16
+ import { useFieldFlowForm } from '../hooks/useFieldFlowForm';
17
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
18
+ function buildInitial(schema) {
19
+ const base = {
20
+ ...(schema.initialValues ?? {})
21
+ };
22
+ for (const field of schema.fields) {
23
+ if (base[field.name] === undefined) {
24
+ if (field.type === 'checkbox' || field.type === 'switch') base[field.name] = 'false';else if (field.type === 'rating' || field.type === 'slider' || field.type === 'stepper') {
25
+ base[field.name] = String(field.min ?? 0);
26
+ } else base[field.name] = '';
27
+ }
28
+ }
29
+ return base;
30
+ }
31
+ function buildRules(schema) {
32
+ const rules = {};
33
+ for (const field of schema.fields) {
34
+ const r = {
35
+ ...(field.rules ?? {})
36
+ };
37
+ if (field.required && !r.required) r.required = true;
38
+ if (field.type === 'email' && r.email === undefined) r.email = true;
39
+ if (Object.keys(r).length) rules[field.name] = r;
40
+ }
41
+ return rules;
42
+ }
43
+
44
+ /**
45
+ * Declarative form renderer — JSON / object schema → FieldFlow controls.
46
+ */
47
+ export function FieldFlowSchemaForm({
48
+ schema,
49
+ showWhenFns,
50
+ locale,
51
+ onSubmit,
52
+ onMetaChange,
53
+ renderFooter,
54
+ containerStyle,
55
+ testID
56
+ }) {
57
+ const initialValues = useMemo(() => buildInitial(schema), [schema]);
58
+ const rules = useMemo(() => buildRules(schema), [schema]);
59
+ const form = useFieldFlowForm({
60
+ initialValues,
61
+ rules,
62
+ locale,
63
+ onSubmit
64
+ });
65
+ const [meta, setMeta] = useState({});
66
+ const patchMeta = (key, value) => {
67
+ setMeta(prev => {
68
+ const next = {
69
+ ...prev,
70
+ [key]: value
71
+ };
72
+ onMetaChange?.(next);
73
+ return next;
74
+ });
75
+ };
76
+ const isVisible = field => {
77
+ if (!field.showWhen) return true;
78
+ const fn = showWhenFns?.[field.showWhen];
79
+ if (!fn) return true;
80
+ return fn(form.values);
81
+ };
82
+ const sections = schema.sections ?? [];
83
+ const bySection = useMemo(() => {
84
+ const map = new Map();
85
+ for (const field of schema.fields) {
86
+ const key = field.section ?? null;
87
+ const list = map.get(key) ?? [];
88
+ list.push(field);
89
+ map.set(key, list);
90
+ }
91
+ return map;
92
+ }, [schema.fields]);
93
+ const renderField = field => {
94
+ if (!isVisible(field)) return null;
95
+ const props = form.getInputProps(field.name);
96
+ if (!props && field.type !== 'checkbox' && field.type !== 'switch' && field.type !== 'rating' && field.type !== 'slider' && field.type !== 'stepper' && field.type !== 'tags' && field.type !== 'dropdown' && field.type !== 'radio' && field.type !== 'segmented') {
97
+ return null;
98
+ }
99
+ switch (field.type) {
100
+ case 'checkbox':
101
+ return /*#__PURE__*/_jsx(FieldFlowCheckbox, {
102
+ label: field.label,
103
+ value: form.values[field.name] === 'true',
104
+ onChange: v => form.handleChange(field.name)(v ? 'true' : 'false'),
105
+ required: field.required,
106
+ helperText: field.helperText
107
+ }, field.name);
108
+ case 'switch':
109
+ return /*#__PURE__*/_jsx(FieldFlowSwitch, {
110
+ label: field.label,
111
+ value: form.values[field.name] === 'true',
112
+ onChange: v => form.handleChange(field.name)(v ? 'true' : 'false'),
113
+ helperText: field.helperText
114
+ }, field.name);
115
+ case 'radio':
116
+ return /*#__PURE__*/_jsx(FieldFlowRadio, {
117
+ label: field.label,
118
+ value: form.values[field.name] || null,
119
+ onChange: v => form.handleChange(field.name)(v),
120
+ options: field.options ?? [],
121
+ required: field.required
122
+ }, field.name);
123
+ case 'segmented':
124
+ return /*#__PURE__*/_jsx(FieldFlowSegmented, {
125
+ label: field.label,
126
+ value: form.values[field.name] || null,
127
+ onChange: v => form.handleChange(field.name)(v),
128
+ options: field.options ?? [],
129
+ required: field.required
130
+ }, field.name);
131
+ case 'dropdown':
132
+ return /*#__PURE__*/_jsx(FieldFlowDropdown, {
133
+ label: field.label,
134
+ placeholder: field.placeholder,
135
+ options: field.options ?? [],
136
+ value: form.values[field.name] || null,
137
+ onChange: v => form.handleChange(field.name)(v ?? ''),
138
+ required: field.required,
139
+ helperText: field.helperText
140
+ }, field.name);
141
+ case 'tags':
142
+ return /*#__PURE__*/_jsx(FieldFlowTags, {
143
+ label: field.label,
144
+ value: meta[field.name] ?? [],
145
+ onChange: tags => patchMeta(field.name, tags),
146
+ placeholder: field.placeholder,
147
+ helperText: field.helperText
148
+ }, field.name);
149
+ case 'rating':
150
+ return /*#__PURE__*/_jsx(FieldFlowRating, {
151
+ label: field.label,
152
+ value: Number(form.values[field.name] || 0),
153
+ onChange: v => form.handleChange(field.name)(String(v)),
154
+ max: field.max ?? 5,
155
+ required: field.required
156
+ }, field.name);
157
+ case 'slider':
158
+ return /*#__PURE__*/_jsx(FieldFlowSlider, {
159
+ label: field.label,
160
+ value: Number(form.values[field.name] || field.min || 0),
161
+ onChange: v => form.handleChange(field.name)(String(v)),
162
+ min: field.min ?? 0,
163
+ max: field.max ?? 100,
164
+ step: field.step ?? 1
165
+ }, field.name);
166
+ case 'stepper':
167
+ return /*#__PURE__*/_jsx(FieldFlowNumberStepper, {
168
+ label: field.label,
169
+ value: Number(form.values[field.name] || field.min || 0),
170
+ onChange: v => form.handleChange(field.name)(String(v)),
171
+ min: field.min ?? 0,
172
+ max: field.max ?? 99,
173
+ step: field.step ?? 1
174
+ }, field.name);
175
+ default:
176
+ return /*#__PURE__*/_jsx(FieldFlowInput, {
177
+ type: field.type,
178
+ label: field.label,
179
+ placeholder: field.placeholder,
180
+ helperText: field.helperText,
181
+ variant: field.variant,
182
+ leftIcon: field.leftIcon,
183
+ autofill: field.autofill,
184
+ suggestions: field.suggestions,
185
+ showStrength: field.showStrength,
186
+ prefix: field.prefix,
187
+ suffix: field.suffix,
188
+ ...props
189
+ }, field.name);
190
+ }
191
+ };
192
+ const unsectioned = bySection.get(null) ?? [];
193
+ return /*#__PURE__*/_jsxs(View, {
194
+ style: containerStyle,
195
+ testID: testID,
196
+ children: [unsectioned.map(renderField), sections.map(section => {
197
+ const fields = bySection.get(section.id) ?? [];
198
+ if (!fields.length) return null;
199
+ return /*#__PURE__*/_jsx(FieldFlowSection, {
200
+ title: section.title,
201
+ description: section.description,
202
+ icon: section.icon,
203
+ collapsible: section.collapsible,
204
+ children: fields.map(renderField)
205
+ }, section.id);
206
+ }), renderFooter?.({
207
+ submit: form.submit,
208
+ values: form.values,
209
+ meta,
210
+ isSubmitting: form.isSubmitting
211
+ })]
212
+ });
213
+ }
214
+ //# sourceMappingURL=FieldFlowSchemaForm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useMemo","useState","View","FieldFlowInput","FieldFlowCheckbox","FieldFlowSwitch","FieldFlowRadio","FieldFlowSegmented","FieldFlowDropdown","FieldFlowTags","FieldFlowRating","FieldFlowSlider","FieldFlowNumberStepper","FieldFlowSection","useFieldFlowForm","jsx","_jsx","jsxs","_jsxs","buildInitial","schema","base","initialValues","field","fields","name","undefined","type","String","min","buildRules","rules","r","required","email","Object","keys","length","FieldFlowSchemaForm","showWhenFns","locale","onSubmit","onMetaChange","renderFooter","containerStyle","testID","form","meta","setMeta","patchMeta","key","value","prev","next","isVisible","showWhen","fn","values","sections","bySection","map","Map","section","list","get","push","set","renderField","props","getInputProps","label","onChange","v","handleChange","helperText","options","placeholder","tags","Number","max","step","variant","leftIcon","autofill","suggestions","showStrength","prefix","suffix","unsectioned","style","children","id","title","description","icon","collapsible","submit","isSubmitting"],"sourceRoot":"../../../src","sources":["schema/FieldFlowSchemaForm.tsx"],"mappings":"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","ignoreList":[]}