rn-inputforge 0.4.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 (634) hide show
  1. package/README.md +959 -39
  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/adapters/index.js +25 -0
  7. package/lib/commonjs/adapters/index.js.map +1 -0
  8. package/lib/commonjs/adapters/reactHookForm.js +107 -0
  9. package/lib/commonjs/adapters/reactHookForm.js.map +1 -0
  10. package/lib/commonjs/autofill/index.js +25 -0
  11. package/lib/commonjs/autofill/index.js.map +1 -0
  12. package/lib/commonjs/autofill/profiles.js +199 -0
  13. package/lib/commonjs/autofill/profiles.js.map +1 -0
  14. package/lib/commonjs/components/FieldFlowA11yAudit/FieldFlowA11yAudit.js +99 -0
  15. package/lib/commonjs/components/FieldFlowA11yAudit/FieldFlowA11yAudit.js.map +1 -0
  16. package/lib/commonjs/components/FieldFlowA11yAudit/index.js +13 -0
  17. package/lib/commonjs/components/FieldFlowA11yAudit/index.js.map +1 -0
  18. package/lib/commonjs/components/FieldFlowAffordance/FieldFlowAffordance.js +104 -0
  19. package/lib/commonjs/components/FieldFlowAffordance/FieldFlowAffordance.js.map +1 -0
  20. package/lib/commonjs/components/FieldFlowAffordance/index.js +13 -0
  21. package/lib/commonjs/components/FieldFlowAffordance/index.js.map +1 -0
  22. package/lib/commonjs/components/FieldFlowAuthActions/FieldFlowAuthActions.js +130 -0
  23. package/lib/commonjs/components/FieldFlowAuthActions/FieldFlowAuthActions.js.map +1 -0
  24. package/lib/commonjs/components/FieldFlowAuthActions/index.js +13 -0
  25. package/lib/commonjs/components/FieldFlowAuthActions/index.js.map +1 -0
  26. package/lib/commonjs/components/FieldFlowCompleteness/FieldFlowCompleteness.js +100 -0
  27. package/lib/commonjs/components/FieldFlowCompleteness/FieldFlowCompleteness.js.map +1 -0
  28. package/lib/commonjs/components/FieldFlowCompleteness/index.js +13 -0
  29. package/lib/commonjs/components/FieldFlowCompleteness/index.js.map +1 -0
  30. package/lib/commonjs/components/FieldFlowCreditCard/FieldFlowCreditCard.js +146 -0
  31. package/lib/commonjs/components/FieldFlowCreditCard/FieldFlowCreditCard.js.map +1 -0
  32. package/lib/commonjs/components/FieldFlowCreditCard/index.js +13 -0
  33. package/lib/commonjs/components/FieldFlowCreditCard/index.js.map +1 -0
  34. package/lib/commonjs/components/FieldFlowDraftBanner/FieldFlowDraftBanner.js +156 -0
  35. package/lib/commonjs/components/FieldFlowDraftBanner/FieldFlowDraftBanner.js.map +1 -0
  36. package/lib/commonjs/components/FieldFlowDraftBanner/index.js +13 -0
  37. package/lib/commonjs/components/FieldFlowDraftBanner/index.js.map +1 -0
  38. package/lib/commonjs/components/FieldFlowFormHeader/FieldFlowFormHeader.js +102 -0
  39. package/lib/commonjs/components/FieldFlowFormHeader/FieldFlowFormHeader.js.map +1 -0
  40. package/lib/commonjs/components/FieldFlowFormHeader/index.js +13 -0
  41. package/lib/commonjs/components/FieldFlowFormHeader/index.js.map +1 -0
  42. package/lib/commonjs/components/FieldFlowInfoTip/FieldFlowInfoTip.js +121 -0
  43. package/lib/commonjs/components/FieldFlowInfoTip/FieldFlowInfoTip.js.map +1 -0
  44. package/lib/commonjs/components/FieldFlowInfoTip/index.js +13 -0
  45. package/lib/commonjs/components/FieldFlowInfoTip/index.js.map +1 -0
  46. package/lib/commonjs/components/FieldFlowInlineAlert/FieldFlowInlineAlert.js +142 -0
  47. package/lib/commonjs/components/FieldFlowInlineAlert/FieldFlowInlineAlert.js.map +1 -0
  48. package/lib/commonjs/components/FieldFlowInlineAlert/index.js +13 -0
  49. package/lib/commonjs/components/FieldFlowInlineAlert/index.js.map +1 -0
  50. package/lib/commonjs/components/FieldFlowInput/FieldFlowInput.js +179 -53
  51. package/lib/commonjs/components/FieldFlowInput/FieldFlowInput.js.map +1 -1
  52. package/lib/commonjs/components/FieldFlowInput/styles.js +60 -8
  53. package/lib/commonjs/components/FieldFlowInput/styles.js.map +1 -1
  54. package/lib/commonjs/components/FieldFlowKeyboardToolbar/FieldFlowKeyboardToolbar.js +137 -0
  55. package/lib/commonjs/components/FieldFlowKeyboardToolbar/FieldFlowKeyboardToolbar.js.map +1 -0
  56. package/lib/commonjs/components/FieldFlowKeyboardToolbar/index.js +19 -0
  57. package/lib/commonjs/components/FieldFlowKeyboardToolbar/index.js.map +1 -0
  58. package/lib/commonjs/components/FieldFlowNumberStepper/FieldFlowNumberStepper.js +136 -0
  59. package/lib/commonjs/components/FieldFlowNumberStepper/FieldFlowNumberStepper.js.map +1 -0
  60. package/lib/commonjs/components/FieldFlowNumberStepper/index.js +13 -0
  61. package/lib/commonjs/components/FieldFlowNumberStepper/index.js.map +1 -0
  62. package/lib/commonjs/components/FieldFlowPasswordStrength/FieldFlowPasswordStrength.js +122 -0
  63. package/lib/commonjs/components/FieldFlowPasswordStrength/FieldFlowPasswordStrength.js.map +1 -0
  64. package/lib/commonjs/components/FieldFlowPasswordStrength/index.js +13 -0
  65. package/lib/commonjs/components/FieldFlowPasswordStrength/index.js.map +1 -0
  66. package/lib/commonjs/components/FieldFlowPhone/FieldFlowPhone.js +263 -0
  67. package/lib/commonjs/components/FieldFlowPhone/FieldFlowPhone.js.map +1 -0
  68. package/lib/commonjs/components/FieldFlowPhone/index.js +13 -0
  69. package/lib/commonjs/components/FieldFlowPhone/index.js.map +1 -0
  70. package/lib/commonjs/components/FieldFlowRating/FieldFlowRating.js +106 -0
  71. package/lib/commonjs/components/FieldFlowRating/FieldFlowRating.js.map +1 -0
  72. package/lib/commonjs/components/FieldFlowRating/index.js +13 -0
  73. package/lib/commonjs/components/FieldFlowRating/index.js.map +1 -0
  74. package/lib/commonjs/components/FieldFlowSection/FieldFlowSection.js +141 -0
  75. package/lib/commonjs/components/FieldFlowSection/FieldFlowSection.js.map +1 -0
  76. package/lib/commonjs/components/FieldFlowSection/index.js +13 -0
  77. package/lib/commonjs/components/FieldFlowSection/index.js.map +1 -0
  78. package/lib/commonjs/components/FieldFlowSegmented/FieldFlowSegmented.js +195 -0
  79. package/lib/commonjs/components/FieldFlowSegmented/FieldFlowSegmented.js.map +1 -0
  80. package/lib/commonjs/components/FieldFlowSegmented/index.js +13 -0
  81. package/lib/commonjs/components/FieldFlowSegmented/index.js.map +1 -0
  82. package/lib/commonjs/components/FieldFlowSignature/FieldFlowSignature.js +200 -0
  83. package/lib/commonjs/components/FieldFlowSignature/FieldFlowSignature.js.map +1 -0
  84. package/lib/commonjs/components/FieldFlowSignature/index.js +13 -0
  85. package/lib/commonjs/components/FieldFlowSignature/index.js.map +1 -0
  86. package/lib/commonjs/components/FieldFlowSkeleton/FieldFlowSkeleton.js +101 -0
  87. package/lib/commonjs/components/FieldFlowSkeleton/FieldFlowSkeleton.js.map +1 -0
  88. package/lib/commonjs/components/FieldFlowSkeleton/index.js +13 -0
  89. package/lib/commonjs/components/FieldFlowSkeleton/index.js.map +1 -0
  90. package/lib/commonjs/components/FieldFlowSlider/FieldFlowSlider.js +178 -0
  91. package/lib/commonjs/components/FieldFlowSlider/FieldFlowSlider.js.map +1 -0
  92. package/lib/commonjs/components/FieldFlowSlider/index.js +13 -0
  93. package/lib/commonjs/components/FieldFlowSlider/index.js.map +1 -0
  94. package/lib/commonjs/components/FieldFlowStepper/FieldFlowStepper.js +166 -0
  95. package/lib/commonjs/components/FieldFlowStepper/FieldFlowStepper.js.map +1 -0
  96. package/lib/commonjs/components/FieldFlowStepper/index.js +13 -0
  97. package/lib/commonjs/components/FieldFlowStepper/index.js.map +1 -0
  98. package/lib/commonjs/components/FieldFlowTags/FieldFlowTags.js +240 -0
  99. package/lib/commonjs/components/FieldFlowTags/FieldFlowTags.js.map +1 -0
  100. package/lib/commonjs/components/FieldFlowTags/index.js +13 -0
  101. package/lib/commonjs/components/FieldFlowTags/index.js.map +1 -0
  102. package/lib/commonjs/components/FieldFlowTypeahead/FieldFlowTypeahead.js +227 -0
  103. package/lib/commonjs/components/FieldFlowTypeahead/FieldFlowTypeahead.js.map +1 -0
  104. package/lib/commonjs/components/FieldFlowTypeahead/index.js +13 -0
  105. package/lib/commonjs/components/FieldFlowTypeahead/index.js.map +1 -0
  106. package/lib/commonjs/components/FieldFlowUpload/FieldFlowUpload.js +191 -0
  107. package/lib/commonjs/components/FieldFlowUpload/FieldFlowUpload.js.map +1 -0
  108. package/lib/commonjs/components/FieldFlowUpload/index.js +13 -0
  109. package/lib/commonjs/components/FieldFlowUpload/index.js.map +1 -0
  110. package/lib/commonjs/components/KeyboardAwareFormWrapper/KeyboardAwareFormWrapper.js +6 -4
  111. package/lib/commonjs/components/KeyboardAwareFormWrapper/KeyboardAwareFormWrapper.js.map +1 -1
  112. package/lib/commonjs/hooks/index.js +56 -0
  113. package/lib/commonjs/hooks/index.js.map +1 -1
  114. package/lib/commonjs/hooks/useFieldFlowArray.js +110 -0
  115. package/lib/commonjs/hooks/useFieldFlowArray.js.map +1 -0
  116. package/lib/commonjs/hooks/useFieldFlowCompleteness.js +46 -0
  117. package/lib/commonjs/hooks/useFieldFlowCompleteness.js.map +1 -0
  118. package/lib/commonjs/hooks/useFieldFlowDirtyGuard.js +53 -0
  119. package/lib/commonjs/hooks/useFieldFlowDirtyGuard.js.map +1 -0
  120. package/lib/commonjs/hooks/useFieldFlowDraft.js +168 -0
  121. package/lib/commonjs/hooks/useFieldFlowDraft.js.map +1 -0
  122. package/lib/commonjs/hooks/useFieldFlowForm.js +224 -30
  123. package/lib/commonjs/hooks/useFieldFlowForm.js.map +1 -1
  124. package/lib/commonjs/hooks/useFieldFlowSteps.js +77 -0
  125. package/lib/commonjs/hooks/useFieldFlowSteps.js.map +1 -0
  126. package/lib/commonjs/hooks/useFieldFlowSubmitQueue.js +145 -0
  127. package/lib/commonjs/hooks/useFieldFlowSubmitQueue.js.map +1 -0
  128. package/lib/commonjs/hooks/useFormIntelligence.js +130 -0
  129. package/lib/commonjs/hooks/useFormIntelligence.js.map +1 -0
  130. package/lib/commonjs/hooks/useKeyboardManager.js +15 -0
  131. package/lib/commonjs/hooks/useKeyboardManager.js.map +1 -1
  132. package/lib/commonjs/hooks/useSmartPaste.js +27 -0
  133. package/lib/commonjs/hooks/useSmartPaste.js.map +1 -0
  134. package/lib/commonjs/i18n/index.js +25 -0
  135. package/lib/commonjs/i18n/index.js.map +1 -0
  136. package/lib/commonjs/i18n/messages.js +88 -0
  137. package/lib/commonjs/i18n/messages.js.map +1 -0
  138. package/lib/commonjs/index.js +466 -0
  139. package/lib/commonjs/index.js.map +1 -1
  140. package/lib/commonjs/intelligence/formAccessibility.js +79 -0
  141. package/lib/commonjs/intelligence/formAccessibility.js.map +1 -0
  142. package/lib/commonjs/intelligence/index.js +31 -0
  143. package/lib/commonjs/intelligence/index.js.map +1 -0
  144. package/lib/commonjs/intelligence/types.js +2 -0
  145. package/lib/commonjs/intelligence/types.js.map +1 -0
  146. package/lib/commonjs/motion/index.js +20 -0
  147. package/lib/commonjs/motion/index.js.map +1 -0
  148. package/lib/commonjs/motion/useFieldMotion.js +111 -0
  149. package/lib/commonjs/motion/useFieldMotion.js.map +1 -0
  150. package/lib/commonjs/motion/useReducedMotion.js +32 -0
  151. package/lib/commonjs/motion/useReducedMotion.js.map +1 -0
  152. package/lib/commonjs/paste/index.js +19 -0
  153. package/lib/commonjs/paste/index.js.map +1 -0
  154. package/lib/commonjs/paste/smartPaste.js +113 -0
  155. package/lib/commonjs/paste/smartPaste.js.map +1 -0
  156. package/lib/commonjs/schema/FieldFlowSchemaForm.js +219 -0
  157. package/lib/commonjs/schema/FieldFlowSchemaForm.js.map +1 -0
  158. package/lib/commonjs/schema/index.js +13 -0
  159. package/lib/commonjs/schema/index.js.map +1 -0
  160. package/lib/commonjs/schema/types.js +6 -0
  161. package/lib/commonjs/schema/types.js.map +1 -0
  162. package/lib/commonjs/theme/ThemeProvider.js +65 -4
  163. package/lib/commonjs/theme/ThemeProvider.js.map +1 -1
  164. package/lib/commonjs/theme/appearance.js +93 -0
  165. package/lib/commonjs/theme/appearance.js.map +1 -0
  166. package/lib/commonjs/theme/defaultTheme.js +17 -2
  167. package/lib/commonjs/theme/defaultTheme.js.map +1 -1
  168. package/lib/commonjs/theme/index.js +32 -0
  169. package/lib/commonjs/theme/index.js.map +1 -1
  170. package/lib/commonjs/theme/presets.js +142 -0
  171. package/lib/commonjs/theme/presets.js.map +1 -0
  172. package/lib/commonjs/types/globals.d.js +2 -0
  173. package/lib/commonjs/types/globals.d.js.map +1 -0
  174. package/lib/commonjs/utils/affordance.js +151 -0
  175. package/lib/commonjs/utils/affordance.js.map +1 -0
  176. package/lib/commonjs/utils/passwordStrength.js +79 -0
  177. package/lib/commonjs/utils/passwordStrength.js.map +1 -0
  178. package/lib/commonjs/utils/phoneCountries.js +119 -0
  179. package/lib/commonjs/utils/phoneCountries.js.map +1 -0
  180. package/lib/commonjs/validation/validators.js +10 -7
  181. package/lib/commonjs/validation/validators.js.map +1 -1
  182. package/lib/module/a11y/audit.js +68 -0
  183. package/lib/module/a11y/audit.js.map +1 -0
  184. package/lib/module/a11y/index.js +4 -0
  185. package/lib/module/a11y/index.js.map +1 -0
  186. package/lib/module/adapters/index.js +4 -0
  187. package/lib/module/adapters/index.js.map +1 -0
  188. package/lib/module/adapters/reactHookForm.js +100 -0
  189. package/lib/module/adapters/reactHookForm.js.map +1 -0
  190. package/lib/module/autofill/index.js +4 -0
  191. package/lib/module/autofill/index.js.map +1 -0
  192. package/lib/module/autofill/profiles.js +193 -0
  193. package/lib/module/autofill/profiles.js.map +1 -0
  194. package/lib/module/components/FieldFlowA11yAudit/FieldFlowA11yAudit.js +94 -0
  195. package/lib/module/components/FieldFlowA11yAudit/FieldFlowA11yAudit.js.map +1 -0
  196. package/lib/module/components/FieldFlowA11yAudit/index.js +4 -0
  197. package/lib/module/components/FieldFlowA11yAudit/index.js.map +1 -0
  198. package/lib/module/components/FieldFlowAffordance/FieldFlowAffordance.js +99 -0
  199. package/lib/module/components/FieldFlowAffordance/FieldFlowAffordance.js.map +1 -0
  200. package/lib/module/components/FieldFlowAffordance/index.js +4 -0
  201. package/lib/module/components/FieldFlowAffordance/index.js.map +1 -0
  202. package/lib/module/components/FieldFlowAuthActions/FieldFlowAuthActions.js +125 -0
  203. package/lib/module/components/FieldFlowAuthActions/FieldFlowAuthActions.js.map +1 -0
  204. package/lib/module/components/FieldFlowAuthActions/index.js +4 -0
  205. package/lib/module/components/FieldFlowAuthActions/index.js.map +1 -0
  206. package/lib/module/components/FieldFlowCompleteness/FieldFlowCompleteness.js +95 -0
  207. package/lib/module/components/FieldFlowCompleteness/FieldFlowCompleteness.js.map +1 -0
  208. package/lib/module/components/FieldFlowCompleteness/index.js +4 -0
  209. package/lib/module/components/FieldFlowCompleteness/index.js.map +1 -0
  210. package/lib/module/components/FieldFlowCreditCard/FieldFlowCreditCard.js +141 -0
  211. package/lib/module/components/FieldFlowCreditCard/FieldFlowCreditCard.js.map +1 -0
  212. package/lib/module/components/FieldFlowCreditCard/index.js +4 -0
  213. package/lib/module/components/FieldFlowCreditCard/index.js.map +1 -0
  214. package/lib/module/components/FieldFlowDraftBanner/FieldFlowDraftBanner.js +151 -0
  215. package/lib/module/components/FieldFlowDraftBanner/FieldFlowDraftBanner.js.map +1 -0
  216. package/lib/module/components/FieldFlowDraftBanner/index.js +4 -0
  217. package/lib/module/components/FieldFlowDraftBanner/index.js.map +1 -0
  218. package/lib/module/components/FieldFlowFormHeader/FieldFlowFormHeader.js +97 -0
  219. package/lib/module/components/FieldFlowFormHeader/FieldFlowFormHeader.js.map +1 -0
  220. package/lib/module/components/FieldFlowFormHeader/index.js +4 -0
  221. package/lib/module/components/FieldFlowFormHeader/index.js.map +1 -0
  222. package/lib/module/components/FieldFlowInfoTip/FieldFlowInfoTip.js +116 -0
  223. package/lib/module/components/FieldFlowInfoTip/FieldFlowInfoTip.js.map +1 -0
  224. package/lib/module/components/FieldFlowInfoTip/index.js +4 -0
  225. package/lib/module/components/FieldFlowInfoTip/index.js.map +1 -0
  226. package/lib/module/components/FieldFlowInlineAlert/FieldFlowInlineAlert.js +137 -0
  227. package/lib/module/components/FieldFlowInlineAlert/FieldFlowInlineAlert.js.map +1 -0
  228. package/lib/module/components/FieldFlowInlineAlert/index.js +4 -0
  229. package/lib/module/components/FieldFlowInlineAlert/index.js.map +1 -0
  230. package/lib/module/components/FieldFlowInput/FieldFlowInput.js +180 -54
  231. package/lib/module/components/FieldFlowInput/FieldFlowInput.js.map +1 -1
  232. package/lib/module/components/FieldFlowInput/styles.js +60 -8
  233. package/lib/module/components/FieldFlowInput/styles.js.map +1 -1
  234. package/lib/module/components/FieldFlowKeyboardToolbar/FieldFlowKeyboardToolbar.js +131 -0
  235. package/lib/module/components/FieldFlowKeyboardToolbar/FieldFlowKeyboardToolbar.js.map +1 -0
  236. package/lib/module/components/FieldFlowKeyboardToolbar/index.js +4 -0
  237. package/lib/module/components/FieldFlowKeyboardToolbar/index.js.map +1 -0
  238. package/lib/module/components/FieldFlowNumberStepper/FieldFlowNumberStepper.js +131 -0
  239. package/lib/module/components/FieldFlowNumberStepper/FieldFlowNumberStepper.js.map +1 -0
  240. package/lib/module/components/FieldFlowNumberStepper/index.js +4 -0
  241. package/lib/module/components/FieldFlowNumberStepper/index.js.map +1 -0
  242. package/lib/module/components/FieldFlowPasswordStrength/FieldFlowPasswordStrength.js +117 -0
  243. package/lib/module/components/FieldFlowPasswordStrength/FieldFlowPasswordStrength.js.map +1 -0
  244. package/lib/module/components/FieldFlowPasswordStrength/index.js +4 -0
  245. package/lib/module/components/FieldFlowPasswordStrength/index.js.map +1 -0
  246. package/lib/module/components/FieldFlowPhone/FieldFlowPhone.js +258 -0
  247. package/lib/module/components/FieldFlowPhone/FieldFlowPhone.js.map +1 -0
  248. package/lib/module/components/FieldFlowPhone/index.js +4 -0
  249. package/lib/module/components/FieldFlowPhone/index.js.map +1 -0
  250. package/lib/module/components/FieldFlowRating/FieldFlowRating.js +101 -0
  251. package/lib/module/components/FieldFlowRating/FieldFlowRating.js.map +1 -0
  252. package/lib/module/components/FieldFlowRating/index.js +4 -0
  253. package/lib/module/components/FieldFlowRating/index.js.map +1 -0
  254. package/lib/module/components/FieldFlowSection/FieldFlowSection.js +136 -0
  255. package/lib/module/components/FieldFlowSection/FieldFlowSection.js.map +1 -0
  256. package/lib/module/components/FieldFlowSection/index.js +4 -0
  257. package/lib/module/components/FieldFlowSection/index.js.map +1 -0
  258. package/lib/module/components/FieldFlowSegmented/FieldFlowSegmented.js +190 -0
  259. package/lib/module/components/FieldFlowSegmented/FieldFlowSegmented.js.map +1 -0
  260. package/lib/module/components/FieldFlowSegmented/index.js +4 -0
  261. package/lib/module/components/FieldFlowSegmented/index.js.map +1 -0
  262. package/lib/module/components/FieldFlowSignature/FieldFlowSignature.js +195 -0
  263. package/lib/module/components/FieldFlowSignature/FieldFlowSignature.js.map +1 -0
  264. package/lib/module/components/FieldFlowSignature/index.js +4 -0
  265. package/lib/module/components/FieldFlowSignature/index.js.map +1 -0
  266. package/lib/module/components/FieldFlowSkeleton/FieldFlowSkeleton.js +96 -0
  267. package/lib/module/components/FieldFlowSkeleton/FieldFlowSkeleton.js.map +1 -0
  268. package/lib/module/components/FieldFlowSkeleton/index.js +4 -0
  269. package/lib/module/components/FieldFlowSkeleton/index.js.map +1 -0
  270. package/lib/module/components/FieldFlowSlider/FieldFlowSlider.js +173 -0
  271. package/lib/module/components/FieldFlowSlider/FieldFlowSlider.js.map +1 -0
  272. package/lib/module/components/FieldFlowSlider/index.js +4 -0
  273. package/lib/module/components/FieldFlowSlider/index.js.map +1 -0
  274. package/lib/module/components/FieldFlowStepper/FieldFlowStepper.js +161 -0
  275. package/lib/module/components/FieldFlowStepper/FieldFlowStepper.js.map +1 -0
  276. package/lib/module/components/FieldFlowStepper/index.js +4 -0
  277. package/lib/module/components/FieldFlowStepper/index.js.map +1 -0
  278. package/lib/module/components/FieldFlowTags/FieldFlowTags.js +235 -0
  279. package/lib/module/components/FieldFlowTags/FieldFlowTags.js.map +1 -0
  280. package/lib/module/components/FieldFlowTags/index.js +4 -0
  281. package/lib/module/components/FieldFlowTags/index.js.map +1 -0
  282. package/lib/module/components/FieldFlowTypeahead/FieldFlowTypeahead.js +222 -0
  283. package/lib/module/components/FieldFlowTypeahead/FieldFlowTypeahead.js.map +1 -0
  284. package/lib/module/components/FieldFlowTypeahead/index.js +4 -0
  285. package/lib/module/components/FieldFlowTypeahead/index.js.map +1 -0
  286. package/lib/module/components/FieldFlowUpload/FieldFlowUpload.js +186 -0
  287. package/lib/module/components/FieldFlowUpload/FieldFlowUpload.js.map +1 -0
  288. package/lib/module/components/FieldFlowUpload/index.js +4 -0
  289. package/lib/module/components/FieldFlowUpload/index.js.map +1 -0
  290. package/lib/module/components/KeyboardAwareFormWrapper/KeyboardAwareFormWrapper.js +5 -3
  291. package/lib/module/components/KeyboardAwareFormWrapper/KeyboardAwareFormWrapper.js.map +1 -1
  292. package/lib/module/hooks/index.js +8 -0
  293. package/lib/module/hooks/index.js.map +1 -1
  294. package/lib/module/hooks/useFieldFlowArray.js +106 -0
  295. package/lib/module/hooks/useFieldFlowArray.js.map +1 -0
  296. package/lib/module/hooks/useFieldFlowCompleteness.js +42 -0
  297. package/lib/module/hooks/useFieldFlowCompleteness.js.map +1 -0
  298. package/lib/module/hooks/useFieldFlowDirtyGuard.js +49 -0
  299. package/lib/module/hooks/useFieldFlowDirtyGuard.js.map +1 -0
  300. package/lib/module/hooks/useFieldFlowDraft.js +165 -0
  301. package/lib/module/hooks/useFieldFlowDraft.js.map +1 -0
  302. package/lib/module/hooks/useFieldFlowForm.js +224 -30
  303. package/lib/module/hooks/useFieldFlowForm.js.map +1 -1
  304. package/lib/module/hooks/useFieldFlowSteps.js +73 -0
  305. package/lib/module/hooks/useFieldFlowSteps.js.map +1 -0
  306. package/lib/module/hooks/useFieldFlowSubmitQueue.js +141 -0
  307. package/lib/module/hooks/useFieldFlowSubmitQueue.js.map +1 -0
  308. package/lib/module/hooks/useFormIntelligence.js +126 -0
  309. package/lib/module/hooks/useFormIntelligence.js.map +1 -0
  310. package/lib/module/hooks/useKeyboardManager.js +15 -0
  311. package/lib/module/hooks/useKeyboardManager.js.map +1 -1
  312. package/lib/module/hooks/useSmartPaste.js +23 -0
  313. package/lib/module/hooks/useSmartPaste.js.map +1 -0
  314. package/lib/module/i18n/index.js +4 -0
  315. package/lib/module/i18n/index.js.map +1 -0
  316. package/lib/module/i18n/messages.js +82 -0
  317. package/lib/module/i18n/messages.js.map +1 -0
  318. package/lib/module/index.js +46 -2
  319. package/lib/module/index.js.map +1 -1
  320. package/lib/module/intelligence/formAccessibility.js +72 -0
  321. package/lib/module/intelligence/formAccessibility.js.map +1 -0
  322. package/lib/module/intelligence/index.js +4 -0
  323. package/lib/module/intelligence/index.js.map +1 -0
  324. package/lib/module/intelligence/types.js +2 -0
  325. package/lib/module/intelligence/types.js.map +1 -0
  326. package/lib/module/motion/index.js +5 -0
  327. package/lib/module/motion/index.js.map +1 -0
  328. package/lib/module/motion/useFieldMotion.js +107 -0
  329. package/lib/module/motion/useFieldMotion.js.map +1 -0
  330. package/lib/module/motion/useReducedMotion.js +29 -0
  331. package/lib/module/motion/useReducedMotion.js.map +1 -0
  332. package/lib/module/paste/index.js +4 -0
  333. package/lib/module/paste/index.js.map +1 -0
  334. package/lib/module/paste/smartPaste.js +108 -0
  335. package/lib/module/paste/smartPaste.js.map +1 -0
  336. package/lib/module/schema/FieldFlowSchemaForm.js +214 -0
  337. package/lib/module/schema/FieldFlowSchemaForm.js.map +1 -0
  338. package/lib/module/schema/index.js +4 -0
  339. package/lib/module/schema/index.js.map +1 -0
  340. package/lib/module/schema/types.js +4 -0
  341. package/lib/module/schema/types.js.map +1 -0
  342. package/lib/module/theme/ThemeProvider.js +66 -5
  343. package/lib/module/theme/ThemeProvider.js.map +1 -1
  344. package/lib/module/theme/appearance.js +87 -0
  345. package/lib/module/theme/appearance.js.map +1 -0
  346. package/lib/module/theme/defaultTheme.js +17 -2
  347. package/lib/module/theme/defaultTheme.js.map +1 -1
  348. package/lib/module/theme/index.js +2 -0
  349. package/lib/module/theme/index.js.map +1 -1
  350. package/lib/module/theme/presets.js +138 -0
  351. package/lib/module/theme/presets.js.map +1 -0
  352. package/lib/module/types/globals.d.js +2 -0
  353. package/lib/module/types/globals.d.js.map +1 -0
  354. package/lib/module/utils/affordance.js +140 -0
  355. package/lib/module/utils/affordance.js.map +1 -0
  356. package/lib/module/utils/passwordStrength.js +74 -0
  357. package/lib/module/utils/passwordStrength.js.map +1 -0
  358. package/lib/module/utils/phoneCountries.js +113 -0
  359. package/lib/module/utils/phoneCountries.js.map +1 -0
  360. package/lib/module/validation/validators.js +10 -7
  361. package/lib/module/validation/validators.js.map +1 -1
  362. package/lib/typescript/a11y/audit.d.ts +32 -0
  363. package/lib/typescript/a11y/audit.d.ts.map +1 -0
  364. package/lib/typescript/a11y/index.d.ts +3 -0
  365. package/lib/typescript/a11y/index.d.ts.map +1 -0
  366. package/lib/typescript/adapters/index.d.ts +3 -0
  367. package/lib/typescript/adapters/index.d.ts.map +1 -0
  368. package/lib/typescript/adapters/reactHookForm.d.ts +56 -0
  369. package/lib/typescript/adapters/reactHookForm.d.ts.map +1 -0
  370. package/lib/typescript/autofill/index.d.ts +3 -0
  371. package/lib/typescript/autofill/index.d.ts.map +1 -0
  372. package/lib/typescript/autofill/profiles.d.ts +48 -0
  373. package/lib/typescript/autofill/profiles.d.ts.map +1 -0
  374. package/lib/typescript/components/FieldFlowA11yAudit/FieldFlowA11yAudit.d.ts +21 -0
  375. package/lib/typescript/components/FieldFlowA11yAudit/FieldFlowA11yAudit.d.ts.map +1 -0
  376. package/lib/typescript/components/FieldFlowA11yAudit/index.d.ts +3 -0
  377. package/lib/typescript/components/FieldFlowA11yAudit/index.d.ts.map +1 -0
  378. package/lib/typescript/components/FieldFlowAffordance/FieldFlowAffordance.d.ts +29 -0
  379. package/lib/typescript/components/FieldFlowAffordance/FieldFlowAffordance.d.ts.map +1 -0
  380. package/lib/typescript/components/FieldFlowAffordance/index.d.ts +3 -0
  381. package/lib/typescript/components/FieldFlowAffordance/index.d.ts.map +1 -0
  382. package/lib/typescript/components/FieldFlowAuthActions/FieldFlowAuthActions.d.ts +29 -0
  383. package/lib/typescript/components/FieldFlowAuthActions/FieldFlowAuthActions.d.ts.map +1 -0
  384. package/lib/typescript/components/FieldFlowAuthActions/index.d.ts +3 -0
  385. package/lib/typescript/components/FieldFlowAuthActions/index.d.ts.map +1 -0
  386. package/lib/typescript/components/FieldFlowCompleteness/FieldFlowCompleteness.d.ts +25 -0
  387. package/lib/typescript/components/FieldFlowCompleteness/FieldFlowCompleteness.d.ts.map +1 -0
  388. package/lib/typescript/components/FieldFlowCompleteness/index.d.ts +3 -0
  389. package/lib/typescript/components/FieldFlowCompleteness/index.d.ts.map +1 -0
  390. package/lib/typescript/components/FieldFlowCreditCard/FieldFlowCreditCard.d.ts +27 -0
  391. package/lib/typescript/components/FieldFlowCreditCard/FieldFlowCreditCard.d.ts.map +1 -0
  392. package/lib/typescript/components/FieldFlowCreditCard/index.d.ts +3 -0
  393. package/lib/typescript/components/FieldFlowCreditCard/index.d.ts.map +1 -0
  394. package/lib/typescript/components/FieldFlowDraftBanner/FieldFlowDraftBanner.d.ts +24 -0
  395. package/lib/typescript/components/FieldFlowDraftBanner/FieldFlowDraftBanner.d.ts.map +1 -0
  396. package/lib/typescript/components/FieldFlowDraftBanner/index.d.ts +3 -0
  397. package/lib/typescript/components/FieldFlowDraftBanner/index.d.ts.map +1 -0
  398. package/lib/typescript/components/FieldFlowFormHeader/FieldFlowFormHeader.d.ts +23 -0
  399. package/lib/typescript/components/FieldFlowFormHeader/FieldFlowFormHeader.d.ts.map +1 -0
  400. package/lib/typescript/components/FieldFlowFormHeader/index.d.ts +3 -0
  401. package/lib/typescript/components/FieldFlowFormHeader/index.d.ts.map +1 -0
  402. package/lib/typescript/components/FieldFlowInfoTip/FieldFlowInfoTip.d.ts +19 -0
  403. package/lib/typescript/components/FieldFlowInfoTip/FieldFlowInfoTip.d.ts.map +1 -0
  404. package/lib/typescript/components/FieldFlowInfoTip/index.d.ts +3 -0
  405. package/lib/typescript/components/FieldFlowInfoTip/index.d.ts.map +1 -0
  406. package/lib/typescript/components/FieldFlowInlineAlert/FieldFlowInlineAlert.d.ts +22 -0
  407. package/lib/typescript/components/FieldFlowInlineAlert/FieldFlowInlineAlert.d.ts.map +1 -0
  408. package/lib/typescript/components/FieldFlowInlineAlert/index.d.ts +3 -0
  409. package/lib/typescript/components/FieldFlowInlineAlert/index.d.ts.map +1 -0
  410. package/lib/typescript/components/FieldFlowInput/FieldFlowInput.d.ts.map +1 -1
  411. package/lib/typescript/components/FieldFlowInput/styles.d.ts +52 -1
  412. package/lib/typescript/components/FieldFlowInput/styles.d.ts.map +1 -1
  413. package/lib/typescript/components/FieldFlowInput/types.d.ts +50 -0
  414. package/lib/typescript/components/FieldFlowInput/types.d.ts.map +1 -1
  415. package/lib/typescript/components/FieldFlowKeyboardToolbar/FieldFlowKeyboardToolbar.d.ts +30 -0
  416. package/lib/typescript/components/FieldFlowKeyboardToolbar/FieldFlowKeyboardToolbar.d.ts.map +1 -0
  417. package/lib/typescript/components/FieldFlowKeyboardToolbar/index.d.ts +3 -0
  418. package/lib/typescript/components/FieldFlowKeyboardToolbar/index.d.ts.map +1 -0
  419. package/lib/typescript/components/FieldFlowNumberStepper/FieldFlowNumberStepper.d.ts +34 -0
  420. package/lib/typescript/components/FieldFlowNumberStepper/FieldFlowNumberStepper.d.ts.map +1 -0
  421. package/lib/typescript/components/FieldFlowNumberStepper/index.d.ts +3 -0
  422. package/lib/typescript/components/FieldFlowNumberStepper/index.d.ts.map +1 -0
  423. package/lib/typescript/components/FieldFlowPasswordStrength/FieldFlowPasswordStrength.d.ts +26 -0
  424. package/lib/typescript/components/FieldFlowPasswordStrength/FieldFlowPasswordStrength.d.ts.map +1 -0
  425. package/lib/typescript/components/FieldFlowPasswordStrength/index.d.ts +3 -0
  426. package/lib/typescript/components/FieldFlowPasswordStrength/index.d.ts.map +1 -0
  427. package/lib/typescript/components/FieldFlowPhone/FieldFlowPhone.d.ts +40 -0
  428. package/lib/typescript/components/FieldFlowPhone/FieldFlowPhone.d.ts.map +1 -0
  429. package/lib/typescript/components/FieldFlowPhone/index.d.ts +3 -0
  430. package/lib/typescript/components/FieldFlowPhone/index.d.ts.map +1 -0
  431. package/lib/typescript/components/FieldFlowRating/FieldFlowRating.d.ts +30 -0
  432. package/lib/typescript/components/FieldFlowRating/FieldFlowRating.d.ts.map +1 -0
  433. package/lib/typescript/components/FieldFlowRating/index.d.ts +3 -0
  434. package/lib/typescript/components/FieldFlowRating/index.d.ts.map +1 -0
  435. package/lib/typescript/components/FieldFlowSection/FieldFlowSection.d.ts +35 -0
  436. package/lib/typescript/components/FieldFlowSection/FieldFlowSection.d.ts.map +1 -0
  437. package/lib/typescript/components/FieldFlowSection/index.d.ts +3 -0
  438. package/lib/typescript/components/FieldFlowSection/index.d.ts.map +1 -0
  439. package/lib/typescript/components/FieldFlowSegmented/FieldFlowSegmented.d.ts +28 -0
  440. package/lib/typescript/components/FieldFlowSegmented/FieldFlowSegmented.d.ts.map +1 -0
  441. package/lib/typescript/components/FieldFlowSegmented/index.d.ts +3 -0
  442. package/lib/typescript/components/FieldFlowSegmented/index.d.ts.map +1 -0
  443. package/lib/typescript/components/FieldFlowSignature/FieldFlowSignature.d.ts +41 -0
  444. package/lib/typescript/components/FieldFlowSignature/FieldFlowSignature.d.ts.map +1 -0
  445. package/lib/typescript/components/FieldFlowSignature/index.d.ts +3 -0
  446. package/lib/typescript/components/FieldFlowSignature/index.d.ts.map +1 -0
  447. package/lib/typescript/components/FieldFlowSkeleton/FieldFlowSkeleton.d.ts +21 -0
  448. package/lib/typescript/components/FieldFlowSkeleton/FieldFlowSkeleton.d.ts.map +1 -0
  449. package/lib/typescript/components/FieldFlowSkeleton/index.d.ts +3 -0
  450. package/lib/typescript/components/FieldFlowSkeleton/index.d.ts.map +1 -0
  451. package/lib/typescript/components/FieldFlowSlider/FieldFlowSlider.d.ts +30 -0
  452. package/lib/typescript/components/FieldFlowSlider/FieldFlowSlider.d.ts.map +1 -0
  453. package/lib/typescript/components/FieldFlowSlider/index.d.ts +3 -0
  454. package/lib/typescript/components/FieldFlowSlider/index.d.ts.map +1 -0
  455. package/lib/typescript/components/FieldFlowStepper/FieldFlowStepper.d.ts +31 -0
  456. package/lib/typescript/components/FieldFlowStepper/FieldFlowStepper.d.ts.map +1 -0
  457. package/lib/typescript/components/FieldFlowStepper/index.d.ts +3 -0
  458. package/lib/typescript/components/FieldFlowStepper/index.d.ts.map +1 -0
  459. package/lib/typescript/components/FieldFlowTags/FieldFlowTags.d.ts +41 -0
  460. package/lib/typescript/components/FieldFlowTags/FieldFlowTags.d.ts.map +1 -0
  461. package/lib/typescript/components/FieldFlowTags/index.d.ts +3 -0
  462. package/lib/typescript/components/FieldFlowTags/index.d.ts.map +1 -0
  463. package/lib/typescript/components/FieldFlowTypeahead/FieldFlowTypeahead.d.ts +43 -0
  464. package/lib/typescript/components/FieldFlowTypeahead/FieldFlowTypeahead.d.ts.map +1 -0
  465. package/lib/typescript/components/FieldFlowTypeahead/index.d.ts +3 -0
  466. package/lib/typescript/components/FieldFlowTypeahead/index.d.ts.map +1 -0
  467. package/lib/typescript/components/FieldFlowUpload/FieldFlowUpload.d.ts +52 -0
  468. package/lib/typescript/components/FieldFlowUpload/FieldFlowUpload.d.ts.map +1 -0
  469. package/lib/typescript/components/FieldFlowUpload/index.d.ts +3 -0
  470. package/lib/typescript/components/FieldFlowUpload/index.d.ts.map +1 -0
  471. package/lib/typescript/components/KeyboardAwareFormWrapper/KeyboardAwareFormWrapper.d.ts +3 -2
  472. package/lib/typescript/components/KeyboardAwareFormWrapper/KeyboardAwareFormWrapper.d.ts.map +1 -1
  473. package/lib/typescript/hooks/index.d.ts +17 -1
  474. package/lib/typescript/hooks/index.d.ts.map +1 -1
  475. package/lib/typescript/hooks/useFieldFlowArray.d.ts +54 -0
  476. package/lib/typescript/hooks/useFieldFlowArray.d.ts.map +1 -0
  477. package/lib/typescript/hooks/useFieldFlowCompleteness.d.ts +28 -0
  478. package/lib/typescript/hooks/useFieldFlowCompleteness.d.ts.map +1 -0
  479. package/lib/typescript/hooks/useFieldFlowDirtyGuard.d.ts +26 -0
  480. package/lib/typescript/hooks/useFieldFlowDirtyGuard.d.ts.map +1 -0
  481. package/lib/typescript/hooks/useFieldFlowDraft.d.ts +64 -0
  482. package/lib/typescript/hooks/useFieldFlowDraft.d.ts.map +1 -0
  483. package/lib/typescript/hooks/useFieldFlowForm.d.ts +80 -2
  484. package/lib/typescript/hooks/useFieldFlowForm.d.ts.map +1 -1
  485. package/lib/typescript/hooks/useFieldFlowSteps.d.ts +42 -0
  486. package/lib/typescript/hooks/useFieldFlowSteps.d.ts.map +1 -0
  487. package/lib/typescript/hooks/useFieldFlowSubmitQueue.d.ts +45 -0
  488. package/lib/typescript/hooks/useFieldFlowSubmitQueue.d.ts.map +1 -0
  489. package/lib/typescript/hooks/useFormIntelligence.d.ts +23 -0
  490. package/lib/typescript/hooks/useFormIntelligence.d.ts.map +1 -0
  491. package/lib/typescript/hooks/useKeyboardManager.d.ts +6 -0
  492. package/lib/typescript/hooks/useKeyboardManager.d.ts.map +1 -1
  493. package/lib/typescript/hooks/useSmartPaste.d.ts +14 -0
  494. package/lib/typescript/hooks/useSmartPaste.d.ts.map +1 -0
  495. package/lib/typescript/i18n/index.d.ts +3 -0
  496. package/lib/typescript/i18n/index.d.ts.map +1 -0
  497. package/lib/typescript/i18n/messages.d.ts +16 -0
  498. package/lib/typescript/i18n/messages.d.ts.map +1 -0
  499. package/lib/typescript/index.d.ts +73 -5
  500. package/lib/typescript/index.d.ts.map +1 -1
  501. package/lib/typescript/intelligence/formAccessibility.d.ts +21 -0
  502. package/lib/typescript/intelligence/formAccessibility.d.ts.map +1 -0
  503. package/lib/typescript/intelligence/index.d.ts +4 -0
  504. package/lib/typescript/intelligence/index.d.ts.map +1 -0
  505. package/lib/typescript/intelligence/types.d.ts +36 -0
  506. package/lib/typescript/intelligence/types.d.ts.map +1 -0
  507. package/lib/typescript/motion/index.d.ts +4 -0
  508. package/lib/typescript/motion/index.d.ts.map +1 -0
  509. package/lib/typescript/motion/useFieldMotion.d.ts +31 -0
  510. package/lib/typescript/motion/useFieldMotion.d.ts.map +1 -0
  511. package/lib/typescript/motion/useReducedMotion.d.ts +5 -0
  512. package/lib/typescript/motion/useReducedMotion.d.ts.map +1 -0
  513. package/lib/typescript/paste/index.d.ts +3 -0
  514. package/lib/typescript/paste/index.d.ts.map +1 -0
  515. package/lib/typescript/paste/smartPaste.d.ts +32 -0
  516. package/lib/typescript/paste/smartPaste.d.ts.map +1 -0
  517. package/lib/typescript/schema/FieldFlowSchemaForm.d.ts +28 -0
  518. package/lib/typescript/schema/FieldFlowSchemaForm.d.ts.map +1 -0
  519. package/lib/typescript/schema/index.d.ts +4 -0
  520. package/lib/typescript/schema/index.d.ts.map +1 -0
  521. package/lib/typescript/schema/types.d.ts +43 -0
  522. package/lib/typescript/schema/types.d.ts.map +1 -0
  523. package/lib/typescript/theme/ThemeProvider.d.ts +18 -4
  524. package/lib/typescript/theme/ThemeProvider.d.ts.map +1 -1
  525. package/lib/typescript/theme/appearance.d.ts +19 -0
  526. package/lib/typescript/theme/appearance.d.ts.map +1 -0
  527. package/lib/typescript/theme/defaultTheme.d.ts.map +1 -1
  528. package/lib/typescript/theme/index.d.ts +3 -0
  529. package/lib/typescript/theme/index.d.ts.map +1 -1
  530. package/lib/typescript/theme/presets.d.ts +134 -0
  531. package/lib/typescript/theme/presets.d.ts.map +1 -0
  532. package/lib/typescript/types/index.d.ts +26 -0
  533. package/lib/typescript/types/index.d.ts.map +1 -1
  534. package/lib/typescript/utils/affordance.d.ts +36 -0
  535. package/lib/typescript/utils/affordance.d.ts.map +1 -0
  536. package/lib/typescript/utils/passwordStrength.d.ts +26 -0
  537. package/lib/typescript/utils/passwordStrength.d.ts.map +1 -0
  538. package/lib/typescript/utils/phoneCountries.d.ts +12 -0
  539. package/lib/typescript/utils/phoneCountries.d.ts.map +1 -0
  540. package/lib/typescript/validation/validators.d.ts +3 -1
  541. package/lib/typescript/validation/validators.d.ts.map +1 -1
  542. package/package.json +19 -2
  543. package/src/a11y/audit.ts +99 -0
  544. package/src/a11y/index.ts +7 -0
  545. package/src/adapters/index.ts +9 -0
  546. package/src/adapters/reactHookForm.tsx +152 -0
  547. package/src/autofill/index.ts +10 -0
  548. package/src/autofill/profiles.ts +224 -0
  549. package/src/components/FieldFlowA11yAudit/FieldFlowA11yAudit.tsx +112 -0
  550. package/src/components/FieldFlowA11yAudit/index.ts +2 -0
  551. package/src/components/FieldFlowAffordance/FieldFlowAffordance.tsx +143 -0
  552. package/src/components/FieldFlowAffordance/index.ts +2 -0
  553. package/src/components/FieldFlowAuthActions/FieldFlowAuthActions.tsx +146 -0
  554. package/src/components/FieldFlowAuthActions/index.ts +6 -0
  555. package/src/components/FieldFlowCompleteness/FieldFlowCompleteness.tsx +109 -0
  556. package/src/components/FieldFlowCompleteness/index.ts +2 -0
  557. package/src/components/FieldFlowCreditCard/FieldFlowCreditCard.tsx +152 -0
  558. package/src/components/FieldFlowCreditCard/index.ts +2 -0
  559. package/src/components/FieldFlowDraftBanner/FieldFlowDraftBanner.tsx +169 -0
  560. package/src/components/FieldFlowDraftBanner/index.ts +2 -0
  561. package/src/components/FieldFlowFormHeader/FieldFlowFormHeader.tsx +106 -0
  562. package/src/components/FieldFlowFormHeader/index.ts +2 -0
  563. package/src/components/FieldFlowInfoTip/FieldFlowInfoTip.tsx +120 -0
  564. package/src/components/FieldFlowInfoTip/index.ts +2 -0
  565. package/src/components/FieldFlowInlineAlert/FieldFlowInlineAlert.tsx +134 -0
  566. package/src/components/FieldFlowInlineAlert/index.ts +2 -0
  567. package/src/components/FieldFlowInput/FieldFlowInput.tsx +240 -61
  568. package/src/components/FieldFlowInput/styles.ts +69 -11
  569. package/src/components/FieldFlowInput/types.ts +54 -0
  570. package/src/components/FieldFlowKeyboardToolbar/FieldFlowKeyboardToolbar.tsx +150 -0
  571. package/src/components/FieldFlowKeyboardToolbar/index.ts +5 -0
  572. package/src/components/FieldFlowNumberStepper/FieldFlowNumberStepper.tsx +156 -0
  573. package/src/components/FieldFlowNumberStepper/index.ts +2 -0
  574. package/src/components/FieldFlowPasswordStrength/FieldFlowPasswordStrength.tsx +148 -0
  575. package/src/components/FieldFlowPasswordStrength/index.ts +2 -0
  576. package/src/components/FieldFlowPhone/FieldFlowPhone.tsx +298 -0
  577. package/src/components/FieldFlowPhone/index.ts +2 -0
  578. package/src/components/FieldFlowRating/FieldFlowRating.tsx +121 -0
  579. package/src/components/FieldFlowRating/index.ts +2 -0
  580. package/src/components/FieldFlowSection/FieldFlowSection.tsx +176 -0
  581. package/src/components/FieldFlowSection/index.ts +2 -0
  582. package/src/components/FieldFlowSegmented/FieldFlowSegmented.tsx +248 -0
  583. package/src/components/FieldFlowSegmented/index.ts +2 -0
  584. package/src/components/FieldFlowSignature/FieldFlowSignature.tsx +241 -0
  585. package/src/components/FieldFlowSignature/index.ts +7 -0
  586. package/src/components/FieldFlowSkeleton/FieldFlowSkeleton.tsx +105 -0
  587. package/src/components/FieldFlowSkeleton/index.ts +2 -0
  588. package/src/components/FieldFlowSlider/FieldFlowSlider.tsx +190 -0
  589. package/src/components/FieldFlowSlider/index.ts +2 -0
  590. package/src/components/FieldFlowStepper/FieldFlowStepper.tsx +190 -0
  591. package/src/components/FieldFlowStepper/index.ts +2 -0
  592. package/src/components/FieldFlowTags/FieldFlowTags.tsx +319 -0
  593. package/src/components/FieldFlowTags/index.ts +2 -0
  594. package/src/components/FieldFlowTypeahead/FieldFlowTypeahead.tsx +261 -0
  595. package/src/components/FieldFlowTypeahead/index.ts +2 -0
  596. package/src/components/FieldFlowUpload/FieldFlowUpload.tsx +226 -0
  597. package/src/components/FieldFlowUpload/index.ts +6 -0
  598. package/src/components/KeyboardAwareFormWrapper/KeyboardAwareFormWrapper.tsx +8 -4
  599. package/src/hooks/index.ts +48 -0
  600. package/src/hooks/useFieldFlowArray.ts +153 -0
  601. package/src/hooks/useFieldFlowCompleteness.ts +69 -0
  602. package/src/hooks/useFieldFlowDirtyGuard.ts +70 -0
  603. package/src/hooks/useFieldFlowDraft.ts +221 -0
  604. package/src/hooks/useFieldFlowForm.ts +357 -28
  605. package/src/hooks/useFieldFlowSteps.ts +130 -0
  606. package/src/hooks/useFieldFlowSubmitQueue.ts +206 -0
  607. package/src/hooks/useFormIntelligence.ts +207 -0
  608. package/src/hooks/useKeyboardManager.ts +26 -0
  609. package/src/hooks/useSmartPaste.ts +33 -0
  610. package/src/i18n/index.ts +6 -0
  611. package/src/i18n/messages.ts +101 -0
  612. package/src/index.ts +251 -3
  613. package/src/intelligence/formAccessibility.ts +87 -0
  614. package/src/intelligence/index.ts +12 -0
  615. package/src/intelligence/types.ts +34 -0
  616. package/src/motion/index.ts +3 -0
  617. package/src/motion/useFieldMotion.ts +120 -0
  618. package/src/motion/useReducedMotion.ts +31 -0
  619. package/src/paste/index.ts +7 -0
  620. package/src/paste/smartPaste.ts +132 -0
  621. package/src/schema/FieldFlowSchemaForm.tsx +274 -0
  622. package/src/schema/index.ts +8 -0
  623. package/src/schema/types.ts +63 -0
  624. package/src/theme/ThemeProvider.tsx +96 -7
  625. package/src/theme/appearance.ts +105 -0
  626. package/src/theme/defaultTheme.ts +11 -0
  627. package/src/theme/index.ts +3 -0
  628. package/src/theme/presets.ts +120 -0
  629. package/src/types/globals.d.ts +2 -0
  630. package/src/types/index.ts +28 -0
  631. package/src/utils/affordance.ts +138 -0
  632. package/src/utils/passwordStrength.ts +109 -0
  633. package/src/utils/phoneCountries.ts +44 -0
  634. package/src/validation/validators.ts +17 -7
@@ -0,0 +1,248 @@
1
+ import React, { useEffect, useMemo, useRef } from 'react';
2
+ import {
3
+ Animated,
4
+ Pressable,
5
+ StyleSheet,
6
+ Text,
7
+ View,
8
+ type LayoutChangeEvent,
9
+ type TextStyle,
10
+ type ViewStyle,
11
+ } from 'react-native';
12
+ import { useFieldFlowTheme, mergeDeep } from '../../theme/ThemeProvider';
13
+ import { defaultTheme } from '../../theme/defaultTheme';
14
+ import { renderFieldFlowIcon } from '../../icons/renderIcon';
15
+ import { useReducedMotion } from '../../motion/useReducedMotion';
16
+ import type { DeepPartial, FieldFlowOption, FieldFlowTheme } from '../../types';
17
+
18
+ export interface FieldFlowSegmentedProps {
19
+ options: FieldFlowOption[];
20
+ value?: string | null;
21
+ onChange: (value: string) => void;
22
+ label?: string;
23
+ helperText?: string;
24
+ errorText?: string;
25
+ disabled?: boolean;
26
+ required?: boolean;
27
+ /** Equal-width segments. Default: true. */
28
+ equalWidth?: boolean;
29
+ containerStyle?: ViewStyle;
30
+ trackStyle?: ViewStyle;
31
+ segmentStyle?: ViewStyle;
32
+ labelStyle?: TextStyle;
33
+ helperStyle?: TextStyle;
34
+ theme?: DeepPartial<FieldFlowTheme>;
35
+ testID?: string;
36
+ }
37
+
38
+ /**
39
+ * Animated pill segmented control — plan pickers, account type, filters.
40
+ * Matches FieldFlow theming and supports option icons.
41
+ */
42
+ export function FieldFlowSegmented({
43
+ options,
44
+ value,
45
+ onChange,
46
+ label,
47
+ helperText,
48
+ errorText,
49
+ disabled,
50
+ required,
51
+ equalWidth = true,
52
+ containerStyle,
53
+ trackStyle,
54
+ segmentStyle,
55
+ labelStyle,
56
+ helperStyle,
57
+ theme: themeOverride,
58
+ testID,
59
+ }: FieldFlowSegmentedProps) {
60
+ const contextTheme = useFieldFlowTheme();
61
+ const theme = useMemo(
62
+ () => (themeOverride ? mergeDeep(contextTheme ?? defaultTheme, themeOverride) : contextTheme ?? defaultTheme),
63
+ [contextTheme, themeOverride],
64
+ );
65
+ const styles = useMemo(() => createStyles(theme, Boolean(errorText), Boolean(disabled)), [theme, errorText, disabled]);
66
+ const reducedMotion = useReducedMotion();
67
+
68
+ const selectedIndex = Math.max(
69
+ 0,
70
+ options.findIndex(o => o.value === value),
71
+ );
72
+ const [trackWidth, setTrackWidth] = React.useState(0);
73
+ const translate = useRef(new Animated.Value(0)).current;
74
+
75
+ const segmentWidth = options.length > 0 && trackWidth > 0 ? trackWidth / options.length : 0;
76
+
77
+ useEffect(() => {
78
+ if (!equalWidth || segmentWidth <= 0) return;
79
+ const to = selectedIndex * segmentWidth + 2;
80
+ if (reducedMotion) {
81
+ translate.setValue(to);
82
+ return;
83
+ }
84
+ Animated.spring(translate, {
85
+ toValue: to,
86
+ friction: 8,
87
+ tension: 120,
88
+ useNativeDriver: true,
89
+ }).start();
90
+ }, [selectedIndex, segmentWidth, equalWidth, reducedMotion, translate]);
91
+
92
+ const onTrackLayout = (e: LayoutChangeEvent) => {
93
+ setTrackWidth(e.nativeEvent.layout.width);
94
+ };
95
+
96
+ return (
97
+ <View style={[styles.wrapper, containerStyle]} testID={testID}>
98
+ {label ? (
99
+ <Text style={[styles.label, labelStyle]}>
100
+ {label}
101
+ {required ? ' *' : ''}
102
+ </Text>
103
+ ) : null}
104
+
105
+ <View
106
+ style={[styles.track, trackStyle]}
107
+ onLayout={onTrackLayout}
108
+ accessibilityRole="tablist"
109
+ >
110
+ {equalWidth && segmentWidth > 0 ? (
111
+ <Animated.View
112
+ pointerEvents="none"
113
+ style={[
114
+ styles.thumb,
115
+ {
116
+ width: segmentWidth - 4,
117
+ transform: [{ translateX: translate }],
118
+ },
119
+ ]}
120
+ />
121
+ ) : null}
122
+
123
+ {options.map(option => {
124
+ const isSelected = option.value === value;
125
+ const itemDisabled = disabled || option.disabled;
126
+ return (
127
+ <Pressable
128
+ key={option.value}
129
+ onPress={() => !itemDisabled && onChange(option.value)}
130
+ disabled={itemDisabled}
131
+ style={[
132
+ styles.segment,
133
+ equalWidth && { flex: 1 },
134
+ !equalWidth && isSelected && styles.segmentSelectedStatic,
135
+ segmentStyle,
136
+ itemDisabled && styles.segmentDisabled,
137
+ ]}
138
+ accessibilityRole="tab"
139
+ accessibilityState={{ selected: isSelected, disabled: Boolean(itemDisabled) }}
140
+ accessibilityLabel={option.label}
141
+ >
142
+ {option.icon ? (
143
+ <View style={styles.segmentIcon}>
144
+ {renderFieldFlowIcon(
145
+ option.icon,
146
+ isSelected ? theme.colors.borderFocused : theme.colors.icon,
147
+ 14,
148
+ )}
149
+ </View>
150
+ ) : null}
151
+ <Text
152
+ style={[styles.segmentText, isSelected && styles.segmentTextSelected]}
153
+ numberOfLines={1}
154
+ >
155
+ {option.label}
156
+ </Text>
157
+ </Pressable>
158
+ );
159
+ })}
160
+ </View>
161
+
162
+ {errorText ? (
163
+ <Text style={[styles.errorText, helperStyle]}>{errorText}</Text>
164
+ ) : helperText ? (
165
+ <Text style={[styles.helperText, helperStyle]}>{helperText}</Text>
166
+ ) : null}
167
+ </View>
168
+ );
169
+ }
170
+
171
+ function createStyles(theme: FieldFlowTheme, hasError: boolean, disabled: boolean) {
172
+ return StyleSheet.create({
173
+ wrapper: {
174
+ marginBottom: theme.spacing.gap * 2,
175
+ opacity: disabled ? 0.6 : 1,
176
+ },
177
+ label: {
178
+ fontSize: theme.typography.labelFontSize,
179
+ marginBottom: theme.spacing.gap,
180
+ color: hasError ? theme.colors.error : theme.colors.label,
181
+ fontWeight: '500',
182
+ fontFamily: theme.typography.fontFamily,
183
+ },
184
+ track: {
185
+ flexDirection: 'row',
186
+ alignItems: 'center',
187
+ backgroundColor: theme.colors.backgroundDisabled,
188
+ borderRadius: theme.spacing.borderRadius + 2,
189
+ padding: 2,
190
+ borderWidth: hasError ? theme.spacing.borderWidth : 0,
191
+ borderColor: theme.colors.borderError,
192
+ position: 'relative',
193
+ overflow: 'hidden',
194
+ },
195
+ thumb: {
196
+ position: 'absolute',
197
+ top: 2,
198
+ bottom: 2,
199
+ left: 0,
200
+ borderRadius: theme.spacing.borderRadius,
201
+ backgroundColor: theme.colors.background,
202
+ shadowColor: '#000',
203
+ shadowOpacity: 0.08,
204
+ shadowRadius: 4,
205
+ shadowOffset: { width: 0, height: 1 },
206
+ elevation: 2,
207
+ },
208
+ segment: {
209
+ flexDirection: 'row',
210
+ alignItems: 'center',
211
+ justifyContent: 'center',
212
+ gap: 6,
213
+ paddingVertical: 10,
214
+ paddingHorizontal: 12,
215
+ zIndex: 1,
216
+ },
217
+ segmentSelectedStatic: {
218
+ backgroundColor: theme.colors.background,
219
+ borderRadius: theme.spacing.borderRadius,
220
+ },
221
+ segmentDisabled: {
222
+ opacity: 0.45,
223
+ },
224
+ segmentIcon: {
225
+ marginRight: 0,
226
+ },
227
+ segmentText: {
228
+ fontSize: theme.typography.helperFontSize + 1,
229
+ color: theme.colors.label,
230
+ fontWeight: '500',
231
+ fontFamily: theme.typography.fontFamily,
232
+ },
233
+ segmentTextSelected: {
234
+ color: theme.colors.text,
235
+ fontWeight: '600',
236
+ },
237
+ helperText: {
238
+ marginTop: theme.spacing.gap / 1.5,
239
+ fontSize: theme.typography.helperFontSize,
240
+ color: theme.colors.label,
241
+ },
242
+ errorText: {
243
+ marginTop: theme.spacing.gap / 1.5,
244
+ fontSize: theme.typography.helperFontSize,
245
+ color: theme.colors.error,
246
+ },
247
+ });
248
+ }
@@ -0,0 +1,2 @@
1
+ export { FieldFlowSegmented } from './FieldFlowSegmented';
2
+ export type { FieldFlowSegmentedProps } from './FieldFlowSegmented';
@@ -0,0 +1,241 @@
1
+ import React, { useMemo, useRef, useState } from 'react';
2
+ import {
3
+ PanResponder,
4
+ Pressable,
5
+ StyleSheet,
6
+ Text,
7
+ View,
8
+ type TextStyle,
9
+ type ViewStyle,
10
+ } from 'react-native';
11
+ import { useFieldFlowTheme, mergeDeep } from '../../theme/ThemeProvider';
12
+ import { defaultTheme } from '../../theme/defaultTheme';
13
+ import type { DeepPartial, FieldFlowTheme } from '../../types';
14
+
15
+ export interface FieldFlowPoint {
16
+ x: number;
17
+ y: number;
18
+ }
19
+
20
+ export type FieldFlowStroke = FieldFlowPoint[];
21
+
22
+ export interface FieldFlowSignatureValue {
23
+ strokes: FieldFlowStroke[];
24
+ /** True when at least one stroke exists. */
25
+ isEmpty: boolean;
26
+ }
27
+
28
+ export interface FieldFlowSignatureProps {
29
+ value?: FieldFlowSignatureValue | null;
30
+ onChange: (value: FieldFlowSignatureValue) => void;
31
+ label?: string;
32
+ helperText?: string;
33
+ errorText?: string;
34
+ disabled?: boolean;
35
+ required?: boolean;
36
+ height?: number;
37
+ strokeWidth?: number;
38
+ strokeColor?: string;
39
+ clearLabel?: string;
40
+ /** Empty-pad hint (default “Sign here”). */
41
+ placeholder?: string;
42
+ /** Custom clear control. Call `clear()` to wipe strokes. */
43
+ renderClear?: (ctx: { clear: () => void; isEmpty: boolean }) => React.ReactNode;
44
+ /** Custom empty overlay inside the pad. */
45
+ renderPlaceholder?: () => React.ReactNode;
46
+ containerStyle?: ViewStyle;
47
+ labelStyle?: TextStyle;
48
+ theme?: DeepPartial<FieldFlowTheme>;
49
+ testID?: string;
50
+ }
51
+
52
+ function SignatureSegment({
53
+ p1,
54
+ p2,
55
+ color,
56
+ thickness,
57
+ }: {
58
+ p1: FieldFlowPoint;
59
+ p2: FieldFlowPoint;
60
+ color: string;
61
+ thickness: number;
62
+ }) {
63
+ const dx = p2.x - p1.x;
64
+ const dy = p2.y - p1.y;
65
+ const len = Math.sqrt(dx * dx + dy * dy) || 0.01;
66
+ const angle = (Math.atan2(dy, dx) * 180) / Math.PI;
67
+ return (
68
+ <View
69
+ pointerEvents="none"
70
+ style={{
71
+ position: 'absolute',
72
+ left: p1.x,
73
+ top: p1.y,
74
+ width: len,
75
+ height: thickness,
76
+ backgroundColor: color,
77
+ borderRadius: thickness / 2,
78
+ transform: [{ translateY: -thickness / 2 }, { rotate: `${angle}deg` }],
79
+ }}
80
+ />
81
+ );
82
+ }
83
+
84
+ export function FieldFlowSignature({
85
+ value,
86
+ onChange,
87
+ label,
88
+ helperText,
89
+ errorText,
90
+ disabled,
91
+ required,
92
+ height = 160,
93
+ strokeWidth = 2.5,
94
+ strokeColor,
95
+ clearLabel = 'Clear',
96
+ placeholder = 'Sign here',
97
+ renderClear,
98
+ renderPlaceholder,
99
+ containerStyle,
100
+ labelStyle,
101
+ theme: themeOverride,
102
+ testID,
103
+ }: FieldFlowSignatureProps) {
104
+ const contextTheme = useFieldFlowTheme();
105
+ const theme = useMemo(
106
+ () => (themeOverride ? mergeDeep(contextTheme ?? defaultTheme, themeOverride) : contextTheme ?? defaultTheme),
107
+ [contextTheme, themeOverride],
108
+ );
109
+ const styles = useMemo(() => createStyles(theme, Boolean(errorText), Boolean(disabled)), [theme, errorText, disabled]);
110
+ const color = strokeColor ?? theme.colors.text;
111
+
112
+ const strokes = value?.strokes ?? [];
113
+ const strokesRef = useRef(strokes);
114
+ strokesRef.current = strokes;
115
+ const currentRef = useRef<FieldFlowPoint[]>([]);
116
+ const [, setTick] = useState(0);
117
+ const bump = () => setTick(t => t + 1);
118
+
119
+ const emit = (next: FieldFlowStroke[]) => {
120
+ onChange({ strokes: next, isEmpty: next.length === 0 });
121
+ };
122
+
123
+ const pan = useRef(
124
+ PanResponder.create({
125
+ onStartShouldSetPanResponder: () => !disabled,
126
+ onMoveShouldSetPanResponder: () => !disabled,
127
+ onPanResponderGrant: e => {
128
+ currentRef.current = [{ x: e.nativeEvent.locationX, y: e.nativeEvent.locationY }];
129
+ bump();
130
+ },
131
+ onPanResponderMove: e => {
132
+ currentRef.current = [
133
+ ...currentRef.current,
134
+ { x: e.nativeEvent.locationX, y: e.nativeEvent.locationY },
135
+ ];
136
+ bump();
137
+ },
138
+ onPanResponderRelease: () => {
139
+ if (currentRef.current.length > 1) {
140
+ emit([...strokesRef.current, currentRef.current]);
141
+ }
142
+ currentRef.current = [];
143
+ bump();
144
+ },
145
+ }),
146
+ ).current;
147
+
148
+ const allStrokes = currentRef.current.length
149
+ ? [...strokes, currentRef.current]
150
+ : strokes;
151
+
152
+ const clear = () => {
153
+ currentRef.current = [];
154
+ emit([]);
155
+ bump();
156
+ };
157
+
158
+ return (
159
+ <View style={[styles.wrap, containerStyle]} testID={testID}>
160
+ <View style={styles.header}>
161
+ {label ? (
162
+ <Text style={[styles.label, labelStyle]}>
163
+ {label}
164
+ {required ? ' *' : ''}
165
+ </Text>
166
+ ) : (
167
+ <View />
168
+ )}
169
+ {renderClear ? (
170
+ renderClear({ clear, isEmpty: allStrokes.length === 0 })
171
+ ) : (
172
+ <Pressable
173
+ onPress={clear}
174
+ disabled={disabled || allStrokes.length === 0}
175
+ hitSlop={8}
176
+ >
177
+ <Text style={styles.clear}>{clearLabel}</Text>
178
+ </Pressable>
179
+ )}
180
+ </View>
181
+
182
+ <View style={[styles.pad, { height }]} {...pan.panHandlers}>
183
+ {allStrokes.map((stroke, si) =>
184
+ stroke.slice(1).map((point, pi) => (
185
+ <SignatureSegment
186
+ key={`${si}-${pi}`}
187
+ p1={stroke[pi]}
188
+ p2={point}
189
+ color={color}
190
+ thickness={strokeWidth}
191
+ />
192
+ )),
193
+ )}
194
+ {allStrokes.length === 0
195
+ ? renderPlaceholder
196
+ ? renderPlaceholder()
197
+ : (
198
+ <Text style={styles.placeholder} pointerEvents="none">
199
+ {placeholder}
200
+ </Text>
201
+ )
202
+ : null}
203
+ </View>
204
+
205
+ {errorText ? (
206
+ <Text style={styles.error}>{errorText}</Text>
207
+ ) : helperText ? (
208
+ <Text style={styles.helper}>{helperText}</Text>
209
+ ) : null}
210
+ </View>
211
+ );
212
+ }
213
+
214
+ function createStyles(theme: FieldFlowTheme, hasError: boolean, disabled: boolean) {
215
+ return StyleSheet.create({
216
+ wrap: { marginBottom: theme.spacing.gap * 2, opacity: disabled ? 0.6 : 1 },
217
+ header: { flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center', marginBottom: 8 },
218
+ label: {
219
+ fontSize: theme.typography.labelFontSize,
220
+ color: hasError ? theme.colors.error : theme.colors.label,
221
+ fontWeight: '500',
222
+ },
223
+ clear: { color: theme.colors.borderFocused, fontWeight: '600', fontSize: theme.typography.helperFontSize },
224
+ pad: {
225
+ borderWidth: hasError ? theme.spacing.borderWidthFocused : theme.spacing.borderWidth,
226
+ borderColor: hasError ? theme.colors.borderError : theme.colors.border,
227
+ borderRadius: theme.spacing.borderRadius,
228
+ backgroundColor: theme.colors.background,
229
+ overflow: 'hidden',
230
+ },
231
+ placeholder: {
232
+ position: 'absolute',
233
+ alignSelf: 'center',
234
+ top: '42%',
235
+ color: theme.colors.placeholder,
236
+ fontSize: theme.typography.fontSize,
237
+ },
238
+ helper: { marginTop: 6, fontSize: theme.typography.helperFontSize, color: theme.colors.label },
239
+ error: { marginTop: 6, fontSize: theme.typography.helperFontSize, color: theme.colors.error },
240
+ });
241
+ }
@@ -0,0 +1,7 @@
1
+ export { FieldFlowSignature } from './FieldFlowSignature';
2
+ export type {
3
+ FieldFlowSignatureProps,
4
+ FieldFlowSignatureValue,
5
+ FieldFlowStroke,
6
+ FieldFlowPoint,
7
+ } from './FieldFlowSignature';
@@ -0,0 +1,105 @@
1
+ import React, { useEffect, useMemo, useRef } from 'react';
2
+ import { Animated, Easing, StyleSheet, View, type ViewStyle } from 'react-native';
3
+ import { useFieldFlowTheme, mergeDeep } from '../../theme/ThemeProvider';
4
+ import { defaultTheme } from '../../theme/defaultTheme';
5
+ import { useReducedMotion } from '../../motion/useReducedMotion';
6
+ import type { DeepPartial, FieldFlowTheme, FieldFlowVariant } from '../../types';
7
+
8
+ export interface FieldFlowSkeletonProps {
9
+ /** How many fake fields to show. Default: 3. */
10
+ count?: number;
11
+ /** Match your form variant for realistic height. */
12
+ variant?: FieldFlowVariant;
13
+ /** Show label bars. Default: true. */
14
+ showLabels?: boolean;
15
+ /** Multiline taller block on last item. */
16
+ lastMultiline?: boolean;
17
+ containerStyle?: ViewStyle;
18
+ theme?: DeepPartial<FieldFlowTheme>;
19
+ testID?: string;
20
+ }
21
+
22
+ /**
23
+ * Soft shimmer placeholders while a form hydrates (draft / API).
24
+ */
25
+ export function FieldFlowSkeleton({
26
+ count = 3,
27
+ variant = 'outlined',
28
+ showLabels = true,
29
+ lastMultiline = false,
30
+ containerStyle,
31
+ theme: themeOverride,
32
+ testID,
33
+ }: FieldFlowSkeletonProps) {
34
+ const contextTheme = useFieldFlowTheme();
35
+ const theme = useMemo(
36
+ () => (themeOverride ? mergeDeep(contextTheme ?? defaultTheme, themeOverride) : contextTheme ?? defaultTheme),
37
+ [contextTheme, themeOverride],
38
+ );
39
+ const styles = useMemo(() => createStyles(theme, variant), [theme, variant]);
40
+ const reducedMotion = useReducedMotion();
41
+ const pulse = useRef(new Animated.Value(0.45)).current;
42
+
43
+ useEffect(() => {
44
+ if (reducedMotion) {
45
+ pulse.setValue(0.55);
46
+ return;
47
+ }
48
+ const loop = Animated.loop(
49
+ Animated.sequence([
50
+ Animated.timing(pulse, {
51
+ toValue: 0.9,
52
+ duration: 700,
53
+ easing: Easing.inOut(Easing.quad),
54
+ useNativeDriver: true,
55
+ }),
56
+ Animated.timing(pulse, {
57
+ toValue: 0.45,
58
+ duration: 700,
59
+ easing: Easing.inOut(Easing.quad),
60
+ useNativeDriver: true,
61
+ }),
62
+ ]),
63
+ );
64
+ loop.start();
65
+ return () => loop.stop();
66
+ }, [reducedMotion, pulse]);
67
+
68
+ return (
69
+ <View style={[styles.wrap, containerStyle]} testID={testID} accessibilityLabel="Loading form">
70
+ {Array.from({ length: count }, (_, i) => {
71
+ const tall = lastMultiline && i === count - 1;
72
+ return (
73
+ <View key={i} style={styles.item}>
74
+ {showLabels ? <Animated.View style={[styles.label, { opacity: pulse }]} /> : null}
75
+ <Animated.View style={[styles.field, tall && styles.fieldTall, { opacity: pulse }]} />
76
+ </View>
77
+ );
78
+ })}
79
+ </View>
80
+ );
81
+ }
82
+
83
+ function createStyles(theme: FieldFlowTheme, variant: FieldFlowVariant) {
84
+ const height =
85
+ theme.spacing.paddingVertical * 2 + theme.typography.fontSize + 6 + (variant === 'floating' ? 6 : 0);
86
+ return StyleSheet.create({
87
+ wrap: { marginBottom: theme.spacing.gap },
88
+ item: { marginBottom: theme.spacing.gap * 2 },
89
+ label: {
90
+ width: '32%',
91
+ height: theme.typography.labelFontSize,
92
+ borderRadius: 4,
93
+ backgroundColor: theme.colors.backgroundDisabled,
94
+ marginBottom: theme.spacing.gap,
95
+ },
96
+ field: {
97
+ height,
98
+ borderRadius: theme.spacing.borderRadius,
99
+ backgroundColor: theme.colors.backgroundDisabled,
100
+ borderWidth: StyleSheet.hairlineWidth,
101
+ borderColor: theme.colors.border,
102
+ },
103
+ fieldTall: { height: 88 },
104
+ });
105
+ }
@@ -0,0 +1,2 @@
1
+ export { FieldFlowSkeleton } from './FieldFlowSkeleton';
2
+ export type { FieldFlowSkeletonProps } from './FieldFlowSkeleton';